From 86158de22090160547ef6de0c54357d4a003a340 Mon Sep 17 00:00:00 2001 From: Giacomo Travaglini Date: Wed, 17 Jan 2024 11:41:48 +0000 Subject: [PATCH] cpu-o3: Stop using RenameMap::numFreeEntries The method is extracting the minimum number of [1] non-zero free registers/entries across all register classes. This means that if we have saturated all register storage for a particular class, renaming will stop as a whole. I believe it does make sense to keep renaming and only block renaming in case an instruction requiring the particular register type is encountered. This would happen with the Rename::renameInsts method [1]: https://github.com/gem5/gem5/blob/stable/src/cpu/o3/rename_map.hh#L269 [2]: https://github.com/gem5/gem5/blob/stable/src/cpu/o3/rename.cc#L662 Change-Id: I932826a77a5c0b2e05d8fdcab0e6ca13cf0e3d23 Signed-off-by: Giacomo Travaglini --- src/cpu/o3/rename.cc | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/cpu/o3/rename.cc b/src/cpu/o3/rename.cc index c20edc2e46..9a5be35f38 100644 --- a/src/cpu/o3/rename.cc +++ b/src/cpu/o3/rename.cc @@ -1225,9 +1225,6 @@ Rename::checkStall(ThreadID tid) } else if (calcFreeLQEntries(tid) <= 0 && calcFreeSQEntries(tid) <= 0) { DPRINTF(Rename,"[tid:%i] Stall: LSQ has 0 free entries.\n", tid); ret_val = true; - } else if (renameMap[tid]->numFreeEntries() <= 0) { - DPRINTF(Rename,"[tid:%i] Stall: RenameMap has 0 free entries.\n", tid); - ret_val = true; } else if (renameStatus[tid] == SerializeStall && (!emptyROB[tid] || instsInProgress[tid])) { DPRINTF(Rename,"[tid:%i] Stall: Serialize stall and ROB is not "