
Appendix D. L2 Considerations for the PowerPC 604 Processor
D-5
D.3.1 Requirements for Saving State Information
The only state additional to that for the simple copy of tags structure required is a single
state bit. The tag entry for the data cache now looks like 4 by 128 entries of a valid bit,
shared/exclusive bit, and 20 tag bits, which requires only an extra 1/2 Kbits. However, it is
likely that the increase would be 1 Kbits since probably the same macrocell would be used
in the instruction and data halves of the L1 copy.
D.3.2 Operations Required for Processor Bus Operations
Logic must detect not only whether a tag matches in the L1 directory copy for a system bus
operation, but also the type of intervention required and whether it must be passed to the
processor before it can complete. This logic is on the critical path for the snoop access,
because it must be determined whether
SYS-ARTRY or SYS-SHD needs to be asserted in
response to the system bus operation.
Along with operations monitored for L1 tag maintenance, the cases in Table D-1 need to be
distinguished.
Table D-1. Operations Required for Processor Bus Operations
Bus Operation
Allocate/Deallocate
Action
Read, read
atomic
Allocate as per
discussion above
State loaded as S if SYS-SHD was asserted or EX if SYS-SHD was
negated. It is assumed that the value of SHD
reflects the value of
SYS-SHD sampled, which is practical in a single-processor system. In a
multiprocessor system, it may be desirable to always assert SHD on a
read regardless of the state of SYS-SHD.
RWITM, RWITM
atomic
Allocate as per
discussion above
State loaded as EX.
Write with kill
Allocate
State goes to EX (or S, see below).
Write with kill
Deallocate
State goes to INV. It may not match in L1 tag, and the address may already
be transferred into the copy-back address register.
Kill block
Store into S cache
block or allocate
Allocate tag if necessary and state goes to EX.
Kill block
Deallocate
State goes to I.
ICBI
—
State goes to I.
Flush block
—
State goes to I.
Write with kill
—
Distinguished as with kill block. If TC0 is asserted, the address is
deallocated from the cache; if TC0 is negated, then it is retained in the
cache (there are no actual allocations associated with a write with kill). As
a further optimization, TC1 can be used to determine the final L1 cache
state for a write with kil (allocate). If TC1 is asserted, the cache state is S
and if it is negated, the cache state is E; the L1 state should be set to S or
EX, respectively.