4–32
Clocks, Cache, and External Interface
29 September 1997 – Subject To Change
21164PC-Initiated System Transactions
4.7.2 FILL
The 21164PC provides an st_clkx_h pulse a certain number of cycles after the rising
edge of the system clock, determined by the sum of the BC_CLK_DELAY<1:0> and
the FILL_OFFSET<2:0> values in the CBOX_CONFIG register (see Section 5.3.1).
The value must be from 1 to 7 and cannot be greater than the sysclk ratio. This
allows the SSRAM write operation to take place later in the sysclk cycle, allowing
more time for the data to get to the 21164PC.
Signals fill_h, fill_id_h, and fill_error_h are used to control the return of fill data to
the 21164PC and the Bcache. Signal idle_bc_h must be used to stop CPU requests in
the Bcache in such a way that the Bcache will be idle when the fill data arrives (but
not the FILL command). Signal fill_h must be asserted so that it is sampled by the
CPU at least one sysclk period before the fill data is driven by the system. Signal
fill_id_h should be asserted at the same time to indicate whether the fill operation is
for a READ MISS0 or READ MISS1 operation. The 21164PC uses this information
to select the correct fill address. Figure 4–14 shows the timing of a FILL command.
Refer also to Section 4.9.3 for more information on using signals idle_bc_h and
fill_h.
If fill_h is asserted at the rising edge of sysclk N, the 21164PC samples fill_id_h,
then ensures that data_h<127:0> are tristated at the rising edge of sysclk N+1. Also
at sysclk N+1, the 21164PC asserts the Bcache index, and begins a Bcache write
operation. The system should drive the data onto the data bus and assert dack_h
before the end of the sysclk cycle. If dack_h has not been asserted, the Bcache write
operation starts again at the same index. If dack_h is asserted, the Bcache data-write
operation starts again at the same index. If dack_h is asserted, the advance pin,
data_ram_adv_l, is asserted, which advances the index to the next part of the fill,
and the data-write operation begins again.
For all cacheable memory fill operations, the 21164PC updates the tag store in the
same cycle that the Bcache index is driven, to reflect the new tag and control. Fill
operations for READ commands update the tag store to the clean (V*/D) state, and
fill operations for WRITE commands update the tag store to the dirty (V*D) state.
For system logic that returns fill data directly from its victim buffer without updating
memory (Victim Buffer Fill Hit), the fill_dirty_h signal is used to remark the tag
store to the dirty (V*D) state. This maintains data coherency. In systems that do not
support Victim Buffer Fill Hits, it is recommended to tie the fill_dirty_h signal deas-
serted.