5-30
MPC7400 RISC Microprocessor Users Manual
Memory Segment Model
Figure 5-9. tlbsync Instruction Execution and Bus Snooping Flow
When an MPC7400 processor detects a TLBSYNC broadcast transaction, it causes a retry
of that transaction until all pending TLB invalidate operations have completed. In this
snoop process, the MPC7400 checks its TLBIQ and any pending marks for previously
translated addresses. If the queue is valid or if any marks exist, the TLBSYNC transaction
is retried, until the queue is invalid (idle) and no marks exist.
5.4.3.2.3 Synchronization Requirements for tlbie and tlbsync
In order to guarantee that a particular MPC7400 processor executing a
tlbie
instruction has
completed the operation, a
sync
instruction must be placed after the
tlbie
instruction. A
tlbsync
instruction can also be used instead of the
sync
instruction for this purpose, but a
sync
will sufTce for that processor. However, in order to guarantee that all MPC7400
processors in a system have coherently invalidated their respective TLB entries due to a
tlbie
instruction executing on any one of those processors, a
tlbsync
instruction is required.
The PowerPC architecture requires that when a
tlbsync
instruction has been executed by a
processor, a
sync
instruction must be executed by that processor before a
tlbie
or
tlbsync
instruction is executed by another processor. If this requirement is not met, a livelock
situation may occur in a system with multiple MPC7400 processors. SpeciTcally, if more
than one processor executes
tlbie
or
tlbsync
instructions simultaneously, it is likely that
these processors will cause a system livelock.
TLBSYNC transaction
TT[0:4]
01001
Initiate TLBSYNC transaction on bus
TT[0:4]
01001
Retry the transaction
MPC7400
Bus Snooping Logic
Otherwise
tlbsync
end of
tlbsync
ow
Continue with bus
snooping and
instruction execution
Otherwise
TLBIQ[V] = 1 or
marks exist
Allow transaction
to complete
tlbsync
is the oldest instruction
presented to the memory subsystem
Otherwise
Retry
No retry
Other processors
snoop
Otherwise
TLBIQ[V] = 1 or
marks exist
Retry the transaction