IBM powerpc 750gx 사용자 설명서

다운로드
페이지 377
 
User’s Manual
IBM PowerPC 750GX and 750GL RISC Microprocessor
L2 Cache
Page 330 of 377
gx_09.fm.(1.2)
March 27, 2006
9.6 L2 Cache Used as On-Chip Memory
The L2 cache can be configured to be unlocked, partially locked, or completely locked. When configured to 
be unlocked, the L2 cache is 4-way set-associative, with 32 bytes per sector, two sectors per block. When 
configured to be completely locked, the L2 cache is a 1-MB on-chip memory (OCM) that is explicitly managed 
by software. With one, two, or three ways locked, the locked partition is a software managed OCM, while the 
unlocked partition is a 3-, 2-, or 1-way (direct mapped) cache that is managed by hardware. The locked cache 
is considered to be local memory, and so is not kept coherent with main memory.
9.6.1 Locking the L2 Cache
Locking of the L2 cache is controlled by the L2CR[LOCK] bits (bits 24:27) as follows:
• 0000 No cache locking
• 1xxx Lock way 0
• x1xx Lock way 1
• xx1x Lock way 2
• xxx1 Lock way 3
Note: L2CR[LOCKLO] and L2CR[LOCKHI] can also be used to lock ways 0 and 1, and ways 2 and 3, respec-
tively. These bits are defined in this way to provide a form of backward compatibility with the 750FX design. 
However, new software should use the L2CR[LOCK] bits to control L2-cache locking.
Any cache line in a locked part of the L2-cache array can be read or written by the processor, but cannot be 
deallocated for line replacement. The locked L2 cache is intended to be a local memory for the processor, 
and so should not contain addresses that are accessed outside the processor. However, the L2 controller 
does snoop the locked ways, and a snoop hit can cause a deallocation. In addition, for the specific case of an 
stwcx. marked write through that hits in a locked line, the line will be invalidated in the L2 cache. In this case, 
the store will be forwarded to the bus, as is the case for the unlocked L2. Finally, invalid lines in the locked 
part cannot be allocated by any mechanism.
To lock instructions or data in way 0 of the L2 cache requires the following sequence:
1. Execute a sync instruction to allow all load/store activity to complete.
2. Set the data-only bit (L2CR[DO] = 1) to prevent the current instruction stream from being cached in 
the L2.
3. Flush the L2 to save any modified data.
4. Disable the L2 as usual for invalidation.
5. Invalidate the L2 to prevent collisions with lines to be locked.
6. Lock ways 1 through 3 (L2CR[LOCK] = 0111) so all allocations are in way 0.
7. Enable the L2.
8. Load the contents to be locked (see Section 9.6.1.1).
9. Execute a sync instruction
10. Lock way 0 and unlock ways 1 through 3 (L2CR[LOCK] = 1000).
11. Reset the data-only bit (L2CR[DO] = 0).
At this point, all data and instructions to be locked are in way 0 of the L2 cache. To lock multiple ways, first 
unlock the ways that are to be locked, and lock all others as described in step 6. Then, lock the selected ways 
and unlock all others as described in step 10.