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

Reply via email to