diff options
author | Korey Sewell <ksewell@umich.edu> | 2011-02-18 14:28:37 -0500 |
---|---|---|
committer | Korey Sewell <ksewell@umich.edu> | 2011-02-18 14:28:37 -0500 |
commit | d5961b2b20b498db28c0598f4344f5cb31be850f (patch) | |
tree | b0c329d1cd398beb51f3098978b88d0f18e17b18 /src/cpu/inorder/resource.hh | |
parent | d64226750ef9b2ac85c116f90cdfdb2a755b32d4 (diff) | |
download | gem5-d5961b2b20b498db28c0598f4344f5cb31be850f.tar.xz |
inorder: update pipeline interface for handling finished resource reqs
formerly, to free up bandwidth in a resource, we could just change the pointer in that resource
but at the same time the pipeline stages had visibility to see what happened to a resource request.
Now that we are recycling these requests (to avoid too much dynamic allocation), we can't throw
away the request too early or the pipeline stage gets bad information. Instead, mark when a request
is done with the resource all together and then let the pipeline stage call back to the resource
that it's time to free up the bandwidth for more instructions
*** inteface notes ***
- When an instruction completes and is done in a resource for that cycle, call done()
- When an instruction fails and is done with a resource for that cycle, call done(false)
- When an instruction completes, but isnt finished with a resource, call completed()
- When an instruction fails, but isnt finished with a resource, call completed(false)
* * *
inorder: tlbmiss wakeup bug fix
Diffstat (limited to 'src/cpu/inorder/resource.hh')
-rw-r--r-- | src/cpu/inorder/resource.hh | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/src/cpu/inorder/resource.hh b/src/cpu/inorder/resource.hh index c40314c94..fc16df099 100644 --- a/src/cpu/inorder/resource.hh +++ b/src/cpu/inorder/resource.hh @@ -318,6 +318,8 @@ class ResourceRequest */ void done(bool completed = true); + void freeSlot(); + ///////////////////////////////////////////// // // GET RESOURCE REQUEST IDENTIFICATION / INFO @@ -362,6 +364,8 @@ class ResourceRequest bool valid; + bool doneInResource; + //////////////////////////////////////// // // GET RESOURCE REQUEST STATUS FROM VARIABLES |