3-46
MPC7400 RISC Microprocessor Users Manual
Cache Operations
the data cache castout hits in the L2 cache, the castout data is written to the L2 cache
regardless of the state of the C bit.
If the L2 cache is disabled, then the block replaced from the data cache is cast out to the
system interface if the block is marked modiTed.
3.6.4 Load Miss Folding
The MPC7400s memory subsystem contains an eight entry reload buffer for L1 data cache
reloads. The reload buffer consists of two main parts: an eight entry reload table (dRLT)
which contains addresses and attributes, and an eight entry reload data buffer (dRLDB)
which can store 32 bytes (a data cache block) per entry.
When a caching-allowed load or store misses in the data cache, an entry is allocated in the
dRLT. If a subsequent load hits on a dRLT entry, it is placed in a four entry load fold queue
(LFQ) with a tag pointing to the dRLT entry upon which it hit. When the proper bytes of
data in the dRLDB become valid, then the load in the LFQ reads the data from the dRLDB
and forwards it to the appropriate result bus. This is known as load miss folding.
Load miss folding effectively puts aside subsequent load misses to the same 32-byte data
cache block to allow subsequent load and store access to the data cache.
Caching-inhibited loads are also allocated in the dRLT; however, subsequent loads are not
allowed to fold into a dRLT entry allocated for a caching-inhibited load.
3.6.5 Store Miss Merging
When a caching-allowed store misses in the data cache, an entry is allocated in the dRLT
and the store data is written into dRLDB. The remainder of the bytes not written by the store
data are Tlled in when the cache block is eventually fetched from the L2 cache or the BIU.
When all 32 bytes are valid, the cache block in the dRLDB is reloaded into the data cache.
If a subsequent store miss hits on a dRLT entry for a previous store miss, the subsequent
store miss also writes its data into the dRLDB for that entry. The store can then drain from
the completed store queue as it writes data to the dRLDB. The MPC7400 uses the
coherency action performed by the Trst store miss for any subsequent stores to the same
cache block in the reload buffer. When the coherency action for the original store miss that
allocated the dRLT entry is complete and all 32 bytes of data are valid in the dRLDB, the
cache block in the dRLDB is reloaded into the data cache. This behavior is known as store
miss merging.
If a sufTcient number of stores merge to the same dRLT entry such that all 32 bytes are
written by store data, then the reload buffer no longer needs to Tll from the L2 cache or BIU.
If the original store that allocated the entry was marked memory-coherency-not-required,
the cache block is immediately reloaded into the data cache without waiting for coherency
action or data from the L2 cache or BIU.