Multiprocessing
Multiprocessing is the execution of several programs or program
segments concurrently with a processor per program. Execution and
I/O may occur in parallel using shared resources such as memory
and I/O devices.
The 80386+ supports multiprocessing on the system bus. Processors
on this bus can have different bus widths.
──────────────────────────────────────────────────────────────────
Locked bus cycles
While the system architechture of multiprocessor systems varies
greatly, they generally have a need for reliable communication
with memory. A processor that is updating the Accessed bit of a
system descriptor, for example, should reject other attempts to
change the descriptor until the operation is finished.
It is also necessary to have reliable communication with other
processors that can serve as bus masters. A problem can arise if a
bus master reads a semaphor (a byte in memory) between the time
another bus master reads the byte and the time the state of the
byte is changed. The processor prevents this problem by supporting
locked bus cycles, during which requests for control of the bus
are ignored (see LOCK).
On an 80386+ system, a LOCKed instruction will always lock the
area of memory (starting address and length) defined by the
destination operand. In typical 8086 and 80286 configurations,
LOCK locks the entire physical address space.
Automatic locking
For the following critical memory operations, the processor
asserts the LOCK# signal automatically:
■ Acknowledging interrupts
■ Executing an XCHG instruction that references memory
■ Setting the busy bit of a TSS descriptor
■ Updating segment descriptors
■ Updating Page Directory and Page Table entries