summaryrefslogtreecommitdiff
path: root/src/cpu/inorder/resources/use_def.hh
diff options
context:
space:
mode:
authorKorey Sewell <ksewell@umich.edu>2011-02-18 14:27:52 -0500
committerKorey Sewell <ksewell@umich.edu>2011-02-18 14:27:52 -0500
commit991d0185c68b53a04ae5d1f1a05749bbfddced89 (patch)
tree70a97d5b52ff695810b00513a9b3e0907e2a5d4b /src/cpu/inorder/resources/use_def.hh
parent2971b8401a4a76a774962900d9aed6e9eb4b2950 (diff)
downloadgem5-991d0185c68b53a04ae5d1f1a05749bbfddced89.tar.xz
inorder: initialize res. req. vectors based on resource bandwidth
first change in an optimization that will stop InOrder from allocating new memory for every instruction's request to a resource. This gets expensive since every instruction needs to access ~10 requests before graduation. Instead, the plan is to allocate just enough resource request objects to satisfy each resource's bandwidth (e.g. the execution unit would need to allocate 3 resource request objects for a 1-issue pipeline since on any given cycle it could have 2 read requests and 1 write request) and then let the instructions contend and reuse those allocated requests. The end result is a smaller memory footprint for the InOrder model and increased simulation performance
Diffstat (limited to 'src/cpu/inorder/resources/use_def.hh')
-rw-r--r--src/cpu/inorder/resources/use_def.hh2
1 files changed, 2 insertions, 0 deletions
diff --git a/src/cpu/inorder/resources/use_def.hh b/src/cpu/inorder/resources/use_def.hh
index d2cc55315..6db8ed987 100644
--- a/src/cpu/inorder/resources/use_def.hh
+++ b/src/cpu/inorder/resources/use_def.hh
@@ -56,6 +56,8 @@ class UseDefUnit : public Resource {
UseDefUnit(std::string res_name, int res_id, int res_width,
int res_latency, InOrderCPU *_cpu, ThePipeline::Params *params);
+ void init();
+
ResourceRequest* getRequest(DynInstPtr _inst, int stage_num,
int res_idx, int slot_num,
unsigned cmd);