Merge ktlim@zizzer:/bk/newmem
[gem5.git] / src / cpu / ozone / simple_params.hh
1
2
3 #ifndef __CPU_OZONE_SIMPLE_PARAMS_HH__
4 #define __CPU_OZONE_SIMPLE_PARAMS_HH__
5
6 #include "cpu/ozone/cpu.hh"
7
8 //Forward declarations
9 class AlphaDTB;
10 class AlphaITB;
11 class FUPool;
12 class FunctionalMemory;
13 class MemInterface;
14 class PageTable;
15 class Process;
16 class System;
17
18 /**
19 * This file defines the parameters that will be used for the OzoneCPU.
20 * This must be defined externally so that the Impl can have a params class
21 * defined that it can pass to all of the individual stages.
22 */
23
24 class SimpleParams : public BaseCPU::Params
25 {
26 public:
27
28 #if FULL_SYSTEM
29 AlphaITB *itb; AlphaDTB *dtb;
30 #else
31 std::vector<Process *> workload;
32 // Process *process;
33 #endif // FULL_SYSTEM
34
35 //Page Table
36 PageTable *pTable;
37
38 FunctionalMemory *mem;
39
40 //
41 // Caches
42 //
43 MemInterface *icacheInterface;
44 MemInterface *dcacheInterface;
45
46 unsigned cachePorts;
47 unsigned width;
48 unsigned frontEndWidth;
49 unsigned backEndWidth;
50 unsigned backEndSquashLatency;
51 unsigned backEndLatency;
52 unsigned maxInstBufferSize;
53 unsigned numPhysicalRegs;
54 unsigned maxOutstandingMemOps;
55 //
56 // Fetch
57 //
58 unsigned decodeToFetchDelay;
59 unsigned renameToFetchDelay;
60 unsigned iewToFetchDelay;
61 unsigned commitToFetchDelay;
62 unsigned fetchWidth;
63
64 //
65 // Decode
66 //
67 unsigned renameToDecodeDelay;
68 unsigned iewToDecodeDelay;
69 unsigned commitToDecodeDelay;
70 unsigned fetchToDecodeDelay;
71 unsigned decodeWidth;
72
73 //
74 // Rename
75 //
76 unsigned iewToRenameDelay;
77 unsigned commitToRenameDelay;
78 unsigned decodeToRenameDelay;
79 unsigned renameWidth;
80
81 //
82 // IEW
83 //
84 unsigned commitToIEWDelay;
85 unsigned renameToIEWDelay;
86 unsigned issueToExecuteDelay;
87 unsigned issueWidth;
88 unsigned executeWidth;
89 unsigned executeIntWidth;
90 unsigned executeFloatWidth;
91 unsigned executeBranchWidth;
92 unsigned executeMemoryWidth;
93 FUPool *fuPool;
94
95 //
96 // Commit
97 //
98 unsigned iewToCommitDelay;
99 unsigned renameToROBDelay;
100 unsigned commitWidth;
101 unsigned squashWidth;
102
103 //
104 // Branch predictor (BP & BTB)
105 //
106 unsigned localPredictorSize;
107 unsigned localCtrBits;
108 unsigned localHistoryTableSize;
109 unsigned localHistoryBits;
110 unsigned globalPredictorSize;
111 unsigned globalCtrBits;
112 unsigned globalHistoryBits;
113 unsigned choicePredictorSize;
114 unsigned choiceCtrBits;
115
116 unsigned BTBEntries;
117 unsigned BTBTagSize;
118
119 unsigned RASSize;
120
121 //
122 // Load store queue
123 //
124 unsigned LQEntries;
125 unsigned SQEntries;
126
127 //
128 // Memory dependence
129 //
130 unsigned SSITSize;
131 unsigned LFSTSize;
132
133 //
134 // Miscellaneous
135 //
136 unsigned numPhysIntRegs;
137 unsigned numPhysFloatRegs;
138 unsigned numIQEntries;
139 unsigned numROBEntries;
140
141 bool decoupledFrontEnd;
142 int dispatchWidth;
143 int wbWidth;
144
145 //SMT Parameters
146 unsigned smtNumFetchingThreads;
147
148 std::string smtFetchPolicy;
149
150 std::string smtIQPolicy;
151 unsigned smtIQThreshold;
152
153 std::string smtLSQPolicy;
154 unsigned smtLSQThreshold;
155
156 std::string smtCommitPolicy;
157
158 std::string smtROBPolicy;
159 unsigned smtROBThreshold;
160
161 // Probably can get this from somewhere.
162 unsigned instShiftAmt;
163 };
164
165 #endif // __CPU_OZONE_SIMPLE_PARAMS_HH__