2006-06-10 05:01:31 +02:00
|
|
|
from m5 import build_env
|
|
|
|
from m5.config import *
|
2005-05-03 16:56:47 +02:00
|
|
|
from BaseCPU import BaseCPU
|
|
|
|
|
2006-07-01 01:52:08 +02:00
|
|
|
class DerivO3CPU(BaseCPU):
|
|
|
|
type = 'DerivO3CPU'
|
2006-05-19 21:37:52 +02:00
|
|
|
activity = Param.Unsigned("Initial count")
|
2005-05-03 16:56:47 +02:00
|
|
|
numThreads = Param.Unsigned("number of HW thread contexts")
|
|
|
|
|
2006-05-16 20:47:09 +02:00
|
|
|
checker = Param.BaseCPU(NULL, "checker")
|
|
|
|
|
2006-04-23 00:47:07 +02:00
|
|
|
cachePorts = Param.Unsigned("Cache Ports")
|
2006-07-07 23:33:24 +02:00
|
|
|
icache_port = Port("Instruction Port")
|
|
|
|
dcache_port = Port("Data Port")
|
2006-04-23 00:47:07 +02:00
|
|
|
|
2005-05-03 16:56:47 +02:00
|
|
|
decodeToFetchDelay = Param.Unsigned("Decode to fetch delay")
|
|
|
|
renameToFetchDelay = Param.Unsigned("Rename to fetch delay")
|
|
|
|
iewToFetchDelay = Param.Unsigned("Issue/Execute/Writeback to fetch "
|
|
|
|
"delay")
|
|
|
|
commitToFetchDelay = Param.Unsigned("Commit to fetch delay")
|
|
|
|
fetchWidth = Param.Unsigned("Fetch width")
|
|
|
|
|
|
|
|
renameToDecodeDelay = Param.Unsigned("Rename to decode delay")
|
|
|
|
iewToDecodeDelay = Param.Unsigned("Issue/Execute/Writeback to decode "
|
|
|
|
"delay")
|
|
|
|
commitToDecodeDelay = Param.Unsigned("Commit to decode delay")
|
|
|
|
fetchToDecodeDelay = Param.Unsigned("Fetch to decode delay")
|
|
|
|
decodeWidth = Param.Unsigned("Decode width")
|
|
|
|
|
|
|
|
iewToRenameDelay = Param.Unsigned("Issue/Execute/Writeback to rename "
|
|
|
|
"delay")
|
|
|
|
commitToRenameDelay = Param.Unsigned("Commit to rename delay")
|
|
|
|
decodeToRenameDelay = Param.Unsigned("Decode to rename delay")
|
|
|
|
renameWidth = Param.Unsigned("Rename width")
|
|
|
|
|
|
|
|
commitToIEWDelay = Param.Unsigned("Commit to "
|
|
|
|
"Issue/Execute/Writeback delay")
|
|
|
|
renameToIEWDelay = Param.Unsigned("Rename to "
|
|
|
|
"Issue/Execute/Writeback delay")
|
|
|
|
issueToExecuteDelay = Param.Unsigned("Issue to execute delay (internal "
|
|
|
|
"to the IEW stage)")
|
2006-07-05 21:51:36 +02:00
|
|
|
dispatchWidth = Param.Unsigned("Dispatch width")
|
2005-05-03 16:56:47 +02:00
|
|
|
issueWidth = Param.Unsigned("Issue width")
|
2006-07-05 21:51:36 +02:00
|
|
|
wbWidth = Param.Unsigned("Writeback width")
|
|
|
|
wbDepth = Param.Unsigned("Writeback depth")
|
2006-04-23 00:47:07 +02:00
|
|
|
fuPool = Param.FUPool(NULL, "Functional Unit pool")
|
2005-05-03 16:56:47 +02:00
|
|
|
|
|
|
|
iewToCommitDelay = Param.Unsigned("Issue/Execute/Writeback to commit "
|
|
|
|
"delay")
|
|
|
|
renameToROBDelay = Param.Unsigned("Rename to reorder buffer delay")
|
|
|
|
commitWidth = Param.Unsigned("Commit width")
|
|
|
|
squashWidth = Param.Unsigned("Squash width")
|
2006-05-16 20:47:09 +02:00
|
|
|
trapLatency = Param.Tick("Trap latency")
|
|
|
|
fetchTrapLatency = Param.Tick("Fetch trap latency")
|
2005-05-03 16:56:47 +02:00
|
|
|
|
2006-07-10 21:40:28 +02:00
|
|
|
backComSize = Param.Unsigned("Time buffer size for backwards communication")
|
|
|
|
forwardComSize = Param.Unsigned("Time buffer size for forward communication")
|
|
|
|
|
2006-05-25 23:01:48 +02:00
|
|
|
predType = Param.String("Branch predictor type ('local', 'tournament')")
|
2006-04-23 00:47:07 +02:00
|
|
|
localPredictorSize = Param.Unsigned("Size of local predictor")
|
|
|
|
localCtrBits = Param.Unsigned("Bits per counter")
|
|
|
|
localHistoryTableSize = Param.Unsigned("Size of local history table")
|
|
|
|
localHistoryBits = Param.Unsigned("Bits for the local history")
|
|
|
|
globalPredictorSize = Param.Unsigned("Size of global predictor")
|
|
|
|
globalCtrBits = Param.Unsigned("Bits per counter")
|
|
|
|
globalHistoryBits = Param.Unsigned("Bits of history")
|
|
|
|
choicePredictorSize = Param.Unsigned("Size of choice predictor")
|
|
|
|
choiceCtrBits = Param.Unsigned("Bits of choice counters")
|
2005-05-03 16:56:47 +02:00
|
|
|
|
|
|
|
BTBEntries = Param.Unsigned("Number of BTB entries")
|
|
|
|
BTBTagSize = Param.Unsigned("Size of the BTB tags, in bits")
|
|
|
|
|
|
|
|
RASSize = Param.Unsigned("RAS size")
|
|
|
|
|
|
|
|
LQEntries = Param.Unsigned("Number of load queue entries")
|
|
|
|
SQEntries = Param.Unsigned("Number of store queue entries")
|
|
|
|
LFSTSize = Param.Unsigned("Last fetched store table size")
|
|
|
|
SSITSize = Param.Unsigned("Store set ID table size")
|
|
|
|
|
2006-04-23 00:47:07 +02:00
|
|
|
numRobs = Param.Unsigned("Number of Reorder Buffers");
|
|
|
|
|
2005-05-03 16:56:47 +02:00
|
|
|
numPhysIntRegs = Param.Unsigned("Number of physical integer registers")
|
|
|
|
numPhysFloatRegs = Param.Unsigned("Number of physical floating point "
|
|
|
|
"registers")
|
|
|
|
numIQEntries = Param.Unsigned("Number of instruction queue entries")
|
|
|
|
numROBEntries = Param.Unsigned("Number of reorder buffer entries")
|
|
|
|
|
|
|
|
instShiftAmt = Param.Unsigned("Number of bits to shift instructions by")
|
|
|
|
|
|
|
|
function_trace = Param.Bool(False, "Enable function trace")
|
|
|
|
function_trace_start = Param.Tick(0, "Cycle to start function trace")
|
2006-04-23 00:47:07 +02:00
|
|
|
|
|
|
|
smtNumFetchingThreads = Param.Unsigned("SMT Number of Fetching Threads")
|
|
|
|
smtFetchPolicy = Param.String("SMT Fetch policy")
|
|
|
|
smtLSQPolicy = Param.String("SMT LSQ Sharing Policy")
|
|
|
|
smtLSQThreshold = Param.String("SMT LSQ Threshold Sharing Parameter")
|
|
|
|
smtIQPolicy = Param.String("SMT IQ Sharing Policy")
|
|
|
|
smtIQThreshold = Param.String("SMT IQ Threshold Sharing Parameter")
|
|
|
|
smtROBPolicy = Param.String("SMT ROB Sharing Policy")
|
|
|
|
smtROBThreshold = Param.String("SMT ROB Threshold Sharing Parameter")
|
|
|
|
smtCommitPolicy = Param.String("SMT Commit Policy")
|