cpu/o3: clean up rename map and free list
Review Request #1987 - Created Aug. 21, 2013 and submitted
| Information | |
|---|---|
| Steve Reinhardt | |
| gem5 | |
| default | |
| Reviewers | |
| Default | |
Changeset 9852:d1f17f13ef26 --------------------------- cpu/o3: clean up rename map and free list Restructured rename map and free list to clean up some extraneous code and separate out common code that can be reused across different register classes (int and fp at this point). Both components now consist of a set of Simple* objects that are stand-alone rename map & free list for each class, plus a Unified* object that presents a unified interface across all register classes and then redirects accesses to the appropriate Simple* object as needed. Moved free list initialization to PhysRegFile to better isolate knowledge of physical register index mappings to that class (and remove the need to pass a number of parameters to the free list constructor). Causes a small change to these stats: cpu.rename.int_rename_lookups cpu.rename.fp_rename_lookups because they are now categorized on a per-operand basis rather than a per-instruction basis. That is, an instruction with mixed fp/int/misc operand types will have each operand categorized independently, where previously the lookup was categorized based on the instruction type.
Posted (Aug. 24, 2013, 2:01 p.m.)
-
src/cpu/o3/free_list.hh (Diff revision 1) -
queue is certainly nice for readability here, but i'm wondering (and not saynig to go do this), but if a vector would actually be faster if you treated it like a stack. It's just a bit funny that we typedef the size so we can have a 16 byte index and two 64 byte pointers.
-
src/cpu/o3/free_list.hh (Diff revision 1) -
const
-
src/cpu/o3/free_list.hh (Diff revision 1) -
cost
Posted (Aug. 25, 2013, 5:28 a.m.)
-
src/cpu/o3/cpu.cc (Diff revision 1) -
Spacing around -, also extraneous parentheses around RegIndex
-
src/cpu/o3/free_list.hh (Diff revision 1) -
bool?
-
src/cpu/o3/free_list.hh (Diff revision 1) -
Somehow the parameters do not seem matched with the signature here.
-
src/cpu/o3/free_list.hh (Diff revision 1) -
const
-
src/cpu/o3/free_list.hh (Diff revision 1) -
const
-
src/cpu/o3/free_list.hh (Diff revision 1) -
const
-
src/cpu/o3/free_list.hh (Diff revision 1) -
const
-
src/cpu/o3/free_list.hh (Diff revision 1) -
const
-
src/cpu/o3/free_list.hh (Diff revision 1) -
const
-
src/cpu/o3/free_list.cc (Diff revision 1) -
Should not the cpu bit be the parent name, and should it not also contain the system bit etc?
-
src/cpu/o3/regfile.cc (Diff revision 1) -
I assume there is a good reason to not make these std::vectors.
-
src/cpu/o3/rename_map.hh (Diff revision 1) -
freeList(NULL)?
-
src/cpu/o3/rename_map.hh (Diff revision 1) -
const
-
src/cpu/o3/rename_map.hh (Diff revision 1) -
const?
-
src/cpu/o3/rename_map.hh (Diff revision 1) -
const
-
src/cpu/o3/rename_map.hh (Diff revision 1) -
const
-
src/cpu/o3/rename_map.hh (Diff revision 1) -
const
-
src/cpu/o3/rename_map.hh (Diff revision 1) -
const unsigned here and for numFreeEntries in the maps?
-
src/cpu/o3/rename_map.cc (Diff revision 1) -
Assert(freeList == NULL && map.empty());
Some minor bits and pieces
Review request changed
Updated (Aug. 27, 2013, 5:10 p.m.)
Description: |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Diff: |
Revision 2 (+592 -532) |
Review request changed
Updated (Aug. 27, 2013, 5:12 p.m.)
Description: |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Diff: |
Revision 3 (+597 -538) |
Ship It!
