16

The IBM PC included a coprocessor socket for the 8087 floating-point unit. Logical enough; some customers wanted to use the 8087 to make numeric calculations run faster.

But why was the 8087 designed such that it needed a special socket? Why could it not be simply placed on an expansion card? As I understand it, the ISA bus basically just runs the address and data lines from the CPU, such that RAM could be placed on expansion cards (and indeed this was the only way to go past 64K), and if that can be done with RAM, I would expect it to be doable with a coprocessor.

Was it because its designers were not sure in advance that 8088 computers would have expansion slots?

Was it because expansion slots were scarce, and it was considered worth saving one?

Or was there some reason a floating-point coprocessor needed a special socket?

1
  • 1
    Many of the reasons given below also cover why the 80286 motherboards had a special socket for the 80287. – Kaz Nov 29 '20 at 16:12
33

But why was the 8087 designed such that it needed a special socket?

Because the 8087 is a processor EXTENSION, not another CPU.

The 8087 has, except for a few lines, exactly the same signals and pinout as the 8086/88. The socket is, except for 4(?) lines, a one-on-one duplicate of the CPU socket. This includes signals that need to be connected between both like TEST/BUSY.

Why could it not be simply placed on an expansion card?

Because it would not only be considerably slower, but the ISA connector is also missing necessary signals. ISA is, unlike Multibus, a strict I/O and memory bus. It does not have features to use the multi master control, which the 8087 uses to take over from the 8088.

Background

As mentioned, the 8087 is an extension to the 8086/88. It is not operated as an I/O device (using address space) but snoops the CPU execution to intercept FPU instructions and takes over bus control to access memory.

5
  • 2
    Was "it misses no features" meant to say "it misses some features" or perhaps "it misses a number of features"? – IMSoP Nov 28 '20 at 13:39
  • 3
    Not only that, the ISA card did not exist yet at the moment when the 8087 was designed. I used to have the big Intel component book around that time, 1980 or 1981. – chthon Nov 28 '20 at 16:26
  • 2
    I seem to recall that the early 8086/88 databooks implied that there would be other closely-coupled coprocessors. – Mark Morgan Lloyd Nov 29 '20 at 13:28
  • 1
    "Because the 8087 is a processor EXTENSION, not another CPU" In later generations, there was a case where the coprocessor was actually full CPU with the extension and disabled the main CPU. cpu-world.com/CPUs/80487/index.html – Anton Krug Nov 30 '20 at 6:17
  • 1
    8089 was another co-processor in that vein. In this case an I/O controller similar to mainframe I/O processors. It was not used much though/ I know only the Apricot PC and successors as using it. – Patrick Schlüter Nov 30 '20 at 10:08
6

The socket was 'special' only in the sense that its only purpose was to accept an 8087; it wasn't an unusual component. Adding this socket would be significantly cheaper than adding what would come to be known as an ISA connector. It's also good practice to keep the PCB tracks short, so placing the 8087 close to the CPU would be preferable to having it on a card, although technically either would be possible. I've seen 'passive backplane' industrial PCs where the CPU and ancillaries are all on an ISA card and there are only connectors on the motherboard, no silicon at all.

1
  • 1
    I wonder whether it would have made economic sense to socket the 8088 and have an 8087 daughterboard which includes an 8088 socket? – supercat Nov 30 '20 at 5:59

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.