Hello,
I'm using the stable gem5 (jun 2012).
Taking a look at the DefaultFetch<Impl>::fetch method
(src/cpu/o3/fetch_impl.hh), I found that the branch predictor can be
accessed more than once per cycle (function lookupAndUpdateNextPC(.)):
// Loop through instruction memory from the cache.
// Keep issuing while fetchWidth is available and branch is not
// predicted taken
while (numInst < fetchWidth && !predictedBranch) {
...
// Extract as many instructions and/or microops as we can from
// the memory we've processed so far.
do {
...
predictedBranch |= lookupAndUpdateNextPC(instruction, nextPC);
...
} while ((curMacroop || decoder[tid]->instReady()) && numInst <
fetchWidth);
...
}
So, it seems for me that the max number of accesses per fetch tick is equal
the fetchWidth = 3. Is it or I'm missing something?
Considering fetchToDecodeDelay=3, the number of branch predictor acesses
per cycle is exactly 1.
Thanks for your help,
--
Fernando A. Endo, PhD student and researcher
Université de Grenoble, UJF
France
_______________________________________________
gem5-users mailing list
[email protected]
http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users