Skip to main content
← All posts

Part 10: Multiprocessor Configurations, 8087 Numeric Coprocessor, and Memory/IO Interfacing

Md. Harun-Or-RoshidMar 1, 20264 min readArticle
Part 10: Multiprocessor Configurations, 8087 Numeric Coprocessor, and Memory/IO Interfacing

Scaling Beyond a Single CPU

Single-core microprocessors face physical processing limits when managing high-speed scientific floating-point math, massive peripheral data streams, or concurrent control loops. To address these demands, Intel engineered the 8086 with native multiprocessor capabilities in Maximum Mode. In Part 10, we contrast closely coupled and loosely coupled multiprocessor architectures, detail the coprocessor handshaking protocol of the Intel 8087 Numeric Data Processor (NDP), examine hardware bus arbitration mechanisms, and compare memory-mapped versus isolated I/O interfacing.

1. Closely Coupled vs. Loosely Coupled Systems

Closely Coupled Configuration

Shared Memory & Clock

Processors share a common system bus, system clock generator, and physical memory address space. Typically configured as a Host CPU (8086) paired with a specialized hardware coprocessor (e.g. Intel 8087 math coprocessor or Intel 8089 I/O processor).

  • Zero communication latency across internal buses.
  • Tightly synchronized instruction decoding via the ESC (Escape) instruction.
  • Handshaking mediated via hardware pins: TEST#, BUSY, RQ#/GT#.

Loosely Coupled Configuration

Distributed Systems

Each processor operates as an independent autonomous computational node with its own local memory, clock generator, and local I/O peripherals. Nodes interact over a shared common system bus or high-speed serial/parallel communication channels.

  • Independent operating systems and clock domains.
  • Communication achieved via shared multiport RAM or message passing.
  • High fault tolerance: failure of one node does not crash the entire cluster.

2. The Intel 8087 Numeric Data Processor (NDP)

The Intel 8087 is an 80-bit numeric coprocessor capable of executing 32-bit/64-bit/80-bit IEEE 754 floating-point arithmetic (multiplication, division, square roots, logarithms, trigonometric functions) up to 100 times faster than software emulation routines running on the 8086.

The Coprocessor Execution Handshake Protocol

  1. Parallel Instruction Monitoring: In Maximum Mode, the 8087 monitors the status pins ($S_0-S_2$, $QS_0-QS_1$) and bus lines in lockstep with the 8086.
  2. The Escape (ESC) Opcode: When the 8086 fetches an instruction with an opcode between D8H and DFH (the ESC prefix), both processors recognize it as a floating-point instruction.
  3. Memory Operand Coordination: If the instruction requires a memory operand, the 8086 calculates the 20-bit physical address and initiates the memory read. The 8087 latches the incoming data operand directly off the bus into its internal 80-bit register stack ($ST(0) - ST(7)$).
  4. Concurrent Computation & BUSY Pin: The 8087 begins floating-point computation, immediately pulling its BUSY output pin HIGH. The 8086 continues executing subsequent integer instructions concurrently.
  5. Synchronization via WAIT and TEST#: If the 8086 encounters a subsequent instruction requiring the floating-point result, the compiler inserts a WAIT (FWAIT) instruction. The 8086 samples its TEST# pin (connected to 8087's BUSY) and idles in wait states until the 8087 completes computation and drops BUSY LOW.

3. Hardware Bus Arbitration Schemes

When multiple bus masters (multiple CPUs, DMA controllers) share a single common system bus, hardware arbitration is required to prevent electrical contention:

  • Daisy Chaining (Serial Arbitration): Masters assert a common Bus Request line. The bus controller passes a Bus Grant signal serially down a chain of processors. The first processor in the chain requesting the bus intercepts the grant; lower-priority downstream devices must wait. Simple wiring, but priority is fixed by physical board geometry.
  • Polling Scheme: The bus controller sequences through binary addresses of processors over polling lines. When a processor sees its address on the polling bus, it asserts its response and seizes the bus. Allows programmable priority rotations.
  • Independent Request Scheme: Each master possesses dedicated Bus Request and Bus Grant lines routed to a central hardware arbiter (e.g., Intel 8289 Bus Arbiter). Yields the fastest arbitration and supports sophisticated dynamic priority algorithms.

4. Memory-Mapped I/O vs. I/O-Mapped (Isolated) I/O

FeatureMemory-Mapped I/OI/O-Mapped (Isolated) I/O
Address SpaceShared: I/O devices occupy portions of the memory address space (reduces available RAM).Isolated: Dedicated 64 KB I/O address space separate from 1 MB memory space.
Control SignalsStandard memory strobes: $\overline{\text{MEMR}}$, $\overline{\text{MEMW}}$Dedicated I/O strobes: $\overline{\text{IOR}}$, $\overline{\text{IOW}}$ (governed by $\text{M}/\overline{\text{IO}}$)
Instructions AvailableAll memory instructions (MOV, ADD, CMP, AND) can operate directly on peripheral ports.Restricted strictly to dedicated transfer instructions: IN and OUT.
Address Bus WidthFull 16-bit or 20-bit address bus8-bit ($256$ ports) or 16-bit ($65,536$ ports) using DX register
Hardware DecodingMore complex decoding logic (decodes 16 to 20 bits)Simpler decoding logic (often only decodes lower 8 bits)

Summary & Next Step

In Part 11, we shift from general-purpose microprocessors to dedicated embedded silicon: the Intel 8051 Microcontroller Architecture, detailing its Harvard memory structure, Special Function Registers (SFRs), and internal I/O port circuits.

Share:
Share on X
Share on LinkedIn
Share on Facebook
Share on Reddit
Share on WhatsApp
Share on Telegram
Copy link

Related reading

8086 Multiprocessor & 8087 Coprocessor | Draftsbook · Draftsbook