M5 Bugs

Login!
Register as a new userLost password?

for Project:

FS#207 — Add ability for O3CPU to be used without caches

Attached to Project— M5 Bugs
Opened by Kevin Lim (ktlim) - Thursday, 30 November 2006, 01:48PM
Last edited by Ali Saidi (saidi) - Friday, 11 April 2008, 02:26PM
Bug
CPU
New
Kevin Lim
All
Low
Normal
1.1
2.1
Undecided
70%
Currently the O3CPU has to be used with caches. The issue is that the O3CPU, like the 21264, will squash and refetch a load and all younger instructions if the cache responds that it is currently busy. This naturally limits the rate of access of the Dcache. However, when hooked up directly to a bus, both the fetch and LSQ share the bus, and because fetch is tick()'d before the IEW stage, fetch gets priority to access the bus. This can result in an infinite loop where a load needs to access the bus, but can't because fetch has already used the bus, and is squashed and refetched.

The solution is to allow the O3CPU to have a replay list that will replay all loads that tried to access the bus but couldn't. Because the CPU doesn't issue the dependents of the loads until after the load completes, there won't be an issue with dependents having to be replayed.

I have this code written but not integrated well. I'd like to update the O3CPU to have a parameter that selects which behavior occurs on a load access failing.
This task depends upon

View Dependency Graph
 
This task blocks these from closing
FS#258 - Make o3 cpu handle Nacked Packets