IBM 750GL Computer Accessories User Manual


 
User’s Manual
IBM PowerPC 750GX and 750GL RISC Microprocessor
Instruction-Cache and Data-Cache Operation
Page 134 of 377
gx_03.fm.(1.2)
March 27, 2006
are not broadcast, unless broadcast is enabled through the HID0[ABE] configuration bit. Note that dcbi, dcbf,
dcbst, and dcbz do broadcast to the 750GX’s L2 cache, regardless of HID0[ABE]. The icbi instruction is
never broadcast.
3.4.2.1 Data Cache Block Touch (dcbt) and Data Cache Block Touch for Store (dcbtst)
The dcbt and dcbtst instructions provide potential system performance improvement through the use of soft-
ware-initiated prefetch hints. The 750GX treats these instructions identically (that is, a dcbtst instruction
behaves exactly the same as a dcbt instruction on the 750GX). Note that PowerPC implementations are not
required to take any action based on the execution of these instructions, but they might choose to prefetch
the cache block corresponding to the effective address into their cache.
The 750GX loads the data into the cache when the address hits in the translation lookaside buffer (TLB) or
the BAT, is permitted load access from the addressed page, is not directed to a direct-store segment, and is
directed at a cacheable page. Otherwise, the 750GX treats these instructions as no-ops. The data brought
into the cache as a result of this instruction is validated in the same manner that a load instruction would be
(that is, it is marked as exclusive). The memory reference of a dcbt (or dcbtst) instruction causes the refer-
ence bit to be set. Note also that the successful execution of the dcbt (or dcbtst) instruction affects the state
of the TLB and cache LRU bits as defined by the PLRU algorithm.
3.4.2.2 Data Cache Block Zero (dcbz)
The effective address is computed, translated, and checked for protection violations as defined in the
PowerPC Architecture. The dcbz instruction is treated as a store to the addressed byte with respect to
address translation and protection.
If the block containing the byte addressed by the EA is in the data cache, all bytes are cleared, and the tag is
marked as modified (M). If the block containing the byte addressed by the EA is not in the data cache and the
corresponding page is caching-enabled, the block is established in the data cache without fetching the block
from main memory, and all bytes of the block are cleared, and the tag is marked as modified (M).
If the contents of the cache block are from a page marked memory coherence required (M=1), an address-
only bus transaction is run prior to clearing the cache block. The dcbz instruction is the only cache-control
instruction that causes a broadcast on the 60x bus (when M = 1) to maintain coherency. The other cache-
control instructions are not broadcast unless broadcasting is specifically enabled through the HID0[ABE]
configuration bit. The dcbz instruction executes regardless of whether the cache is locked, but if the cache is
disabled, an alignment exception is generated. If the page containing the byte addressed by the EA is
caching-inhibited or write-through, then the system alignment exception handler is invoked. BAT and TLB
protection violations generate DSI exceptions.
Note: If the target address of a dcbz instruction hits in the L1 cache, the 750GX requires four internal clock
cycles to rewrite the cache block to zeros. On the first clock, the block is remarked as valid-unmodified, and
on the last clock the block is marked as valid-modified. If a snoop request to that address is received during
the middle two clocks of the dcbz operation, the 750GX does not properly react to the snoop operation or
generate an address retry (by an ARTRY
assertion) to the other master. The other bus master continues
reading the data from system memory, and both the 750GX and the other bus master end up with different
copies of the data. In addition, if the other bus master has a cache, the cache block is marked valid in both
caches, which is not allowed in the 750GX’s 3-state cache environment.