O3CPU.py revision 2362
1from m5 import *
2from BaseCPU import BaseCPU
3
4class DerivAlphaFullCPU(BaseCPU):
5    type = 'DerivAlphaFullCPU'
6    activity = Param.Unsigned("Initial count")
7    numThreads = Param.Unsigned("number of HW thread contexts")
8
9    if not build_env['FULL_SYSTEM']:
10        mem = Param.FunctionalMemory(NULL, "memory")
11
12    checker = Param.BaseCPU(NULL, "checker")
13    if build_env['FULL_SYSTEM']:
14        profile = Param.Latency('0ns', "trace the kernel stack")
15
16    cachePorts = Param.Unsigned("Cache Ports")
17
18    decodeToFetchDelay = Param.Unsigned("Decode to fetch delay")
19    renameToFetchDelay = Param.Unsigned("Rename to fetch delay")
20    iewToFetchDelay = Param.Unsigned("Issue/Execute/Writeback to fetch "
21               "delay")
22    commitToFetchDelay = Param.Unsigned("Commit to fetch delay")
23    fetchWidth = Param.Unsigned("Fetch width")
24
25    renameToDecodeDelay = Param.Unsigned("Rename to decode delay")
26    iewToDecodeDelay = Param.Unsigned("Issue/Execute/Writeback to decode "
27               "delay")
28    commitToDecodeDelay = Param.Unsigned("Commit to decode delay")
29    fetchToDecodeDelay = Param.Unsigned("Fetch to decode delay")
30    decodeWidth = Param.Unsigned("Decode width")
31
32    iewToRenameDelay = Param.Unsigned("Issue/Execute/Writeback to rename "
33               "delay")
34    commitToRenameDelay = Param.Unsigned("Commit to rename delay")
35    decodeToRenameDelay = Param.Unsigned("Decode to rename delay")
36    renameWidth = Param.Unsigned("Rename width")
37
38    commitToIEWDelay = Param.Unsigned("Commit to "
39               "Issue/Execute/Writeback delay")
40    renameToIEWDelay = Param.Unsigned("Rename to "
41               "Issue/Execute/Writeback delay")
42    issueToExecuteDelay = Param.Unsigned("Issue to execute delay (internal "
43              "to the IEW stage)")
44    dispatchWidth = Param.Unsigned(8, "Dispatch width")
45    issueWidth = Param.Unsigned(8, "Issue width")
46    wbWidth = Param.Unsigned(8, "Writeback width")
47    wbDepth = Param.Unsigned(1, "Writeback depth")
48    fuPool = Param.FUPool(NULL, "Functional Unit pool")
49
50    iewToCommitDelay = Param.Unsigned("Issue/Execute/Writeback to commit "
51               "delay")
52    renameToROBDelay = Param.Unsigned("Rename to reorder buffer delay")
53    commitWidth = Param.Unsigned("Commit width")
54    squashWidth = Param.Unsigned("Squash width")
55    trapLatency = Param.Tick("Trap latency")
56    fetchTrapLatency = Param.Tick("Fetch trap latency")
57
58    backComSize = Param.Unsigned(5, "Time buffer size for backwards communication")
59    forwardComSize = Param.Unsigned(5, "Time buffer size for forward communication")
60
61    predType = Param.String("Branch predictor type ('local', 'tournament')")
62    localPredictorSize = Param.Unsigned("Size of local predictor")
63    localCtrBits = Param.Unsigned("Bits per counter")
64    localHistoryTableSize = Param.Unsigned("Size of local history table")
65    localHistoryBits = Param.Unsigned("Bits for the local history")
66    globalPredictorSize = Param.Unsigned("Size of global predictor")
67    globalCtrBits = Param.Unsigned("Bits per counter")
68    globalHistoryBits = Param.Unsigned("Bits of history")
69    choicePredictorSize = Param.Unsigned("Size of choice predictor")
70    choiceCtrBits = Param.Unsigned("Bits of choice counters")
71
72    BTBEntries = Param.Unsigned("Number of BTB entries")
73    BTBTagSize = Param.Unsigned("Size of the BTB tags, in bits")
74
75    RASSize = Param.Unsigned("RAS size")
76
77    LQEntries = Param.Unsigned("Number of load queue entries")
78    SQEntries = Param.Unsigned("Number of store queue entries")
79    LFSTSize = Param.Unsigned("Last fetched store table size")
80    SSITSize = Param.Unsigned("Store set ID table size")
81
82    numRobs = Param.Unsigned("Number of Reorder Buffers");
83
84    numPhysIntRegs = Param.Unsigned("Number of physical integer registers")
85    numPhysFloatRegs = Param.Unsigned("Number of physical floating point "
86               "registers")
87    numIQEntries = Param.Unsigned("Number of instruction queue entries")
88    numROBEntries = Param.Unsigned("Number of reorder buffer entries")
89
90    instShiftAmt = Param.Unsigned("Number of bits to shift instructions by")
91
92    function_trace = Param.Bool(False, "Enable function trace")
93    function_trace_start = Param.Tick(0, "Cycle to start function trace")
94
95    smtNumFetchingThreads = Param.Unsigned("SMT Number of Fetching Threads")
96    smtFetchPolicy = Param.String("SMT Fetch policy")
97    smtLSQPolicy    = Param.String("SMT LSQ Sharing Policy")
98    smtLSQThreshold = Param.String("SMT LSQ Threshold Sharing Parameter")
99    smtIQPolicy    = Param.String("SMT IQ Sharing Policy")
100    smtIQThreshold = Param.String("SMT IQ Threshold Sharing Parameter")
101    smtROBPolicy   = Param.String("SMT ROB Sharing Policy")
102    smtROBThreshold = Param.String("SMT ROB Threshold Sharing Parameter")
103    smtCommitPolicy = Param.String("SMT Commit Policy")
104