Merge ktlim@zizzer.eecs.umich.edu:/bk/m5
[gem5.git] / cpu / beta_cpu / alpha_params.hh
1 #ifndef __ALPHA_SIMPLE_PARAMS_HH__
2 #define __ALPHA_SIMPLE_PARAMS_HH__
3
4 #include "cpu/beta_cpu/full_cpu.hh"
5
6 //Forward declarations
7 class System;
8 class AlphaITB;
9 class AlphaDTB;
10 class FunctionalMemory;
11 class Process;
12 class MemInterface;
13
14 /**
15 * This file defines the parameters that will be used for the AlphaFullCPU.
16 * This must be defined externally so that the Impl can have a params class
17 * defined that it can pass to all of the individual stages.
18 */
19
20 class AlphaSimpleParams : public BaseFullCPU::Params
21 {
22 public:
23 #ifdef FULL_SYSTEM
24 AlphaITB *itb; AlphaDTB *dtb;
25 #else
26 std::vector<Process *> workload;
27 Process *process;
28 short asid;
29 #endif // FULL_SYSTEM
30
31 FunctionalMemory *mem;
32
33 //
34 // Caches
35 //
36 MemInterface *icacheInterface;
37 MemInterface *dcacheInterface;
38
39 //
40 // Fetch
41 //
42 unsigned decodeToFetchDelay;
43 unsigned renameToFetchDelay;
44 unsigned iewToFetchDelay;
45 unsigned commitToFetchDelay;
46 unsigned fetchWidth;
47
48 //
49 // Decode
50 //
51 unsigned renameToDecodeDelay;
52 unsigned iewToDecodeDelay;
53 unsigned commitToDecodeDelay;
54 unsigned fetchToDecodeDelay;
55 unsigned decodeWidth;
56
57 //
58 // Rename
59 //
60 unsigned iewToRenameDelay;
61 unsigned commitToRenameDelay;
62 unsigned decodeToRenameDelay;
63 unsigned renameWidth;
64
65 //
66 // IEW
67 //
68 unsigned commitToIEWDelay;
69 unsigned renameToIEWDelay;
70 unsigned issueToExecuteDelay;
71 unsigned issueWidth;
72 unsigned executeWidth;
73 unsigned executeIntWidth;
74 unsigned executeFloatWidth;
75 unsigned executeBranchWidth;
76 unsigned executeMemoryWidth;
77
78 //
79 // Commit
80 //
81 unsigned iewToCommitDelay;
82 unsigned renameToROBDelay;
83 unsigned commitWidth;
84 unsigned squashWidth;
85
86 //
87 // Branch predictor (BP & BTB)
88 //
89 /*
90 unsigned localPredictorSize;
91 unsigned localPredictorCtrBits;
92 */
93
94 unsigned local_predictor_size;
95 unsigned local_ctr_bits;
96 unsigned local_history_table_size;
97 unsigned local_history_bits;
98 unsigned global_predictor_size;
99 unsigned global_ctr_bits;
100 unsigned global_history_bits;
101 unsigned choice_predictor_size;
102 unsigned choice_ctr_bits;
103
104 unsigned BTBEntries;
105 unsigned BTBTagSize;
106
107 unsigned RASSize;
108
109 //
110 // Load store queue
111 //
112 unsigned LQEntries;
113 unsigned SQEntries;
114
115 //
116 // Memory dependence
117 //
118 unsigned SSITSize;
119 unsigned LFSTSize;
120
121 //
122 // Miscellaneous
123 //
124 unsigned numPhysIntRegs;
125 unsigned numPhysFloatRegs;
126 unsigned numIQEntries;
127 unsigned numROBEntries;
128
129 // Probably can get this from somewhere.
130 unsigned instShiftAmt;
131
132 bool defReg;
133 };
134
135 #endif