100

The 8087 math coprocessor for the 8086 (and descendants) nominally added floating point and transcendental (trigonometric and logarithmic) instructions to the 8086. Contrary to naive expectations, the 8087 didn't "augment" the main CPU. It was a separate and independent chip, and the coupling with the main CPU was minimal: the 8086 literally knew nothing about what the 8087 was.

All the floating point instructions were really (as far as the main CPU is concerned) an ESC (ESCAPE) instruction followed by standard x86 parameter encoding. In an ESC, the main CPU did little more than act on the memory access operands (if any) and discard any fetched data. The 8087 could peek over the 8086's memory fetch stream, recognize the ESC instruction and execute the floating point instructions when it recognized them. Additional instructions on the main CPU were often needed to stall it, until the 8087 finished doing whatever it was doing.

That leaves an intriguing door open. The coprocessor architecture was not committed to the 8087 math coprocessor. It would be possible to plug something other than a 8087 into the coprocessor interface. You could theoretically make a coprocessor that did anything you wanted.

Were there ever (from Intel or third-party providers) coprocessor chips different from the 8087 math coprocessors?

I'm not talking about cheaper clones; I'm 99% there were some of those in the market. I'm talking about either a math coprocessor using a completely different instruction set (not merely an enhanced version of the x87 instruction set); or even better, another chip with a different purpose (not merely a floating point and transcendental operations chip): maybe some sort of physics engine, a vector computation engine, a crypto engine, interface gateway to another CPU/device, or something more clever than what I can think of?

If there were no actual products, were there any known plans for such a chip even if they didn't come to fruition?

I don't expect there were any mass market applications, but I can imagine something in a narrow field (Industrial? Scientific?)

(Starting with the 486DX, the floating point circuitry was embedded in the 486 die. It started as a mere physical integration of the two chips, but I imagine by now the integration is very deep. The original meaning of the ESC instruction has probably been lost and I don't expect that such a replacement coprocessor is possible on a modern CPU)

5
  • 1
    If there ever was a specialized crypto engine for x86, we wouldn't know about it for the next 50-75 years.
    – Leo B.
    Mar 6, 2017 at 23:45
  • 2
    @LeoB. Why? TPM modules that you can now find in computers are specialized crypto engines, and their interface are fully documented.
    – dim
    Mar 7, 2017 at 11:00
  • I agree with @dim, although with the vagarities of crypto law at the time I wouldn't be surprised if there was still somewhere a ridiculously outdated chip that is still classified. But I was thinking more of a stream encoder implementing a non-classified algorithm for specialized hardware (for example, a radio device); I can see someone going that route for performance reasons. Mar 7, 2017 at 13:28
  • @dim I was thinking of cryptanalytical applications.
    – Leo B.
    Mar 7, 2017 at 16:27
  • "The 8087 ... nominally added floating point and transcendental (trigonometric and logarithmic) instructions to the 8086." And all this time, I thought it added more instructions for programs to execute.
    – RonJohn
    Oct 27, 2019 at 1:33

6 Answers 6

85

Not all of the original co-processors were for floating point math. Intel itself offered an I/O coprocessor for the 8088 and 8086 called the 8089. Part of the reason it didn't do as well as the 8087 is that the PC included an empty socket for an 8087, but no support for the 8089.

If you broaden the conversation out beyond just the 8086 generation of chips, there were a number of alternative floating point coprocessors that were available over the years. One of the more interesting was a Weitek chipset composed of three chips - Weitek's 1167, 1164, and 1165. Together, these three chips composed a memory mapped floating point processor. What this means is that they appeared to the CPU as if they were a memory device mapped into a specific region of the address space. The operation the chipset executed then depended on the specific address. This design effectively used the address bus as the way to communicate opcodes, which gave it higher total bandwidth than if it had accepted instructions over the data bus. (I'm also pretty sure it was faster at the floating point operations themselves than a 387.)

The Weitek also could co-exist with an 80387, so you could have both installed in the same machine. After the 1167, they also did a single chip version called the 3167, and a 486-version referred to as the 4167.

There were also a number of designs over the years that added an entirely different CPU complex to the existing x86 design. Hauppauge made a line of 486 mother boards they referred to as 4860. These had a separate i860 (the 'Cray 1 on a chip') that ran in parallel to the 486.

http://www.geekdot.com/hauppauge-4860/

Earlier to that, companies like Definicon made ISA-bus plug in cards (DSI-780) that would let you install a single board 68020 computer into your PC AT for higher performance numerics.

In addition to all of this, there were also the expected x87 clones with enhanced features. The IIT 2C87 and 3C87 and the Cyrix Fasmath products all come to mind. These would run at higher IPC than the Intel originals and some of them offered additional instructions. (I don't remember the details, but I think the IIT chips had specific instructions targeted at 4x4 matrices.)

On original Intel chips, there were a few other interesting combinations. In response to the lag between the 386 and the 387's availability, early 80386 machines could be equipped with an 80287. The flip side of that was the 80287XL, which was an 80387 chip that could be installed into an 80286 machine. For a while, there were also ways to take advantage of the split bus and computational units of the 80287. I remember devices that would use this to let you run the core of your 80287 faster than the bus speed of the 80286. (Not to mention all the rigamarole people would go to to overclock the main CPU itself. The original PC AT shipped at 6MHz, although enterprising owners would install alternative crystals to run the machine at faster clocks. IBM later released an 8MHz AT, but with a timing loop in the BIOS that would fail if the system detected a clock rate faster than 8MHz. The third party response was to build replacement CPU clocks that would hold the clock rate at 8MHZ just long enough to pass the BIOS check and then adjust it upwards to a user-adjustable setting.)

6
  • 2
    Interestingly enough, the 287 is run at 1/3rd the crystal rate instead of 1/2 like the 286. So on a 16Mhz 286 (32Mhz crystal), the 287 would run at 10.6MHz. I'm not sure why this asynchronous rate was chosen though, perhaps because 287s were only ever available in 8Mhz - 12Mhz rated parts?
    – mnem
    Mar 7, 2017 at 19:10
  • On the single-sentence ISA boards tangent: Acorn also sold an early version of the ARM as an ISA-mounted coprocessor as the Springboard: chrisacorns.computinghistory.org.uk/docs/Mags/PCW/… and that article also mentions a Transputer card being available.
    – Tommy
    Mar 8, 2017 at 14:53
  • 2
    @Tommy, the 80287 ran at 2/3 the clock speed of the 80286. Several companies sold interposers with their own clock circuit to make an 80287 run at the same speed as the CPU, or faster. So you could get an interposer for a 12 Mhz 80287 and plug it into an 8 Mhz 286 computer. The 80287XL had an internal +1/3 clock multiplier so it would run at CPU speed. I remember the JDR Microdevices catalogs with the interposers and 80287XL chips and wishing I had the $ for one, or even just for a regular 80287.
    – Galane
    Apr 15, 2017 at 8:18
  • beside co-processors there were also accelerator cards
    – phuclv
    Apr 5, 2018 at 16:36
  • 1
    @Tommy the transputer boards from INMOS where usually a card with daughter cards (TRAMs; see en.wikipedia.org/wiki/Transputer). I also worked for a company in the Provo area which made Transputer boards. We had one which provided an interface to the ISA bus, then a bunch which just used power and ground and networked with each other and said interface. We could stuff an interface into a 286-based machine, stuff 80 CPUs into an external 20-board case and put together one incredibly fast system. In each case, though, you essentially had a network port to an external system.
    – Meower68
    Feb 13, 2019 at 14:36
27

Alan Cox mentions in this post having seen a hard drive interface that plugged into the 8087 socket (for computers with no expansion slots).

I've checked various issues of Amstrad PC magazine. PPC hard drive upgrades are advertised by ABSI Consultants, Alfa Electronics Ltd, Dovetail DST, International Hard Discs, and Stratum Technology Limited. I have a PPC with a Stratum Sprint drive and it doesn't use the coprocessor socket. The IHD and Dovetail advertisements also refer to their drives as "Sprint" so may well be the same device. That leaves the ABSI and Alfa as the most likely candidates.

The uploader of this YouTube video says "I buy this computer with a IDE controller installed in the coprocessor slot." but gives no more detail than that.

One issue of Amstrad PC Magazine also mentions a 286 accelerator card (the Hypertec Hyperace II) which requires a small PCB to be added to one row of the 8087 socket on the mainboard. In that case it's clearly doing it to get at the data bus.

6
  • 6
    Fascinating if true. A design built out of desperation rather than technical advantage. However, it sounds from the post's comments that the adaptor was using the x87 slot to get to the data bus, not necessarily to use the full coprocessor interface. I'd love to hear more about it, but it's hard to track down without even a manufacturer name. Mar 7, 2017 at 12:22
  • 3
    That's remarkable. What I wonder about, though, is how many machines shipped without enough ISA slots for a disk controller, but did have both the internal space and 8087 slot for a hard disk. A product like that at least intuitively seems like it would be addressing a tiny slice of the market.
    – mschaef
    Mar 7, 2017 at 14:00
  • 1
    @mschaef The only thing that comes to mind for me would be early laptops/portables with floppies and no option for a hard disk. A floppy drive could be removed (from a 2 floppy unit, or a single floppy unit with an external floppy connector) and replaced with a hard drive. I'm not sure how many of those had x87 sockets on board though. I'm sure there are a few other form factors that would fit the bill too, like the Vtech Laser PC in a keyboard units, etc. That does seem like a small market though.
    – mnem
    Mar 7, 2017 at 19:18
  • 5
    The original post related to the Amstrad PPC512/640, a fairly common portable in the UK in the late 1980s. It meets the criteria listed: an 8087 socket, two 3.5" drive bays, and no ISA slots.
    – john_e
    Mar 7, 2017 at 19:53
  • 3
    @mschaef I remember a couple of industrial single-board computers without ISA (some did have MCA) and a 8087 socket. I think I vaguely recall having seen one of these hard-drive interfaces too, but I can't remember for sure.
    – Tonny
    Mar 7, 2017 at 21:59
25

I don't think there ever were any incompatible co-processors which used the same sockets and I/O mechanisms as the Intel co-processors.

There were other incompatible co-processors, at least for the 386 and 486: the Weitek 3167 and 4167 (Wikipedia also mentions the 1067 for 286s, and 1167 and 2167 for 386s, but I don't know anything about them). These required specific sockets on motherboards, and were memory-mapped, which helped their performance. They required specific support in software, and were only really "popular" for Autodesk products (AutoCAD and 3D Studio in particular) and other CAD packages; some scientific software could also use them.

There isn't much information about these co-processors on the Internet; I do have some documentation on paper which I can dig out if you're interested.

The advent of the PCI bus meant that such co-processors could simply be made available there: one very common co-processor which doesn't use ESC is the GPU available in most modern PCs. x87-style FPUs are considered obsolete nowadays, and Intel recommends using SSE instead.

17

In addition to the i8087 & i8089, intel had the i80130 and i80150 "Operating System Coprocessors". These were single-chip bundled timers and irq controllers that had a subset of the iRMX-86 ('130) or CP/M-86 ('150) in ROM.

2
  • 1
    Fascinating. The 80150 datasheet doesn't seem to have made it into the usual online archives, but there's one at archive.org: archive.org/details/…
    – john_e
    Oct 25, 2019 at 10:17
  • @john_e: The datasheet out there but light. How to really use it is in one of the Intel databooks of the time, probably one that covers the Multibus-1 iAPX86 family boards. Bitsavers should be able to help you there. That said, I don't think many were ever made and I've never seen one, or personally know anyone who has one. The iRMX version seems to be way more common. Be aware, though, that the iRMX version is an "80130-2". Turns out there is an even more common chip labeled "80130-6" that is an ROM-less version so you can use directly use all the on-chip peripherals. May 18, 2020 at 23:12
5

Yes it is possible to have an IDE controller on a 8087 NPU (FPU) coprocessor socket. Most of these adapters had a circuit to switch in a BIOS and RAM cache Overlay when the IDE controller logic required it. .. Another example of this would be any expansion card that used the Dec. Rainbow 100 computers memory expansion card slot for peripherals. The card would switch in the ROM BIOS code and the cache RAM overlay when its Int (NMI) signal line is tripe. The overlay RAM and BIOS will be disabled at the end of (Int.) EONMI. AKA Return form Interrupt/NMI Instruction was called. ... EONMI End of None Masked Interrupt or any EOIR type of instruction calls.

1
  • 4
    These are not coprocessors, but interface cards using the 8087 socket to gain bus signals.
    – Raffzahn
    Oct 24, 2019 at 20:51
5

Yes, there were other co-processors for the IBM PC computer other then Intel 8087 NPU/FPU Units. Many of them had additional circuity with some RAM and a ROM chips. The ROM chips on some of them contained an FPU emulation program if it was using a standard microprocessor other than a Intel model. Others had a BIOS extension for the system.

Some older issues of Byte magazine have some co-processor cards that work with the IBM PC's ISA bus slots but can be adapted to use the 8087's FPU Socket.

  • Z8000 based microprocessor (out of production by Zilog) see
    • Byte May 1984 Ciarcia's Circuit Cellar (Build the) Trump card part 1
    • Byte June 1984 Ciarcia's Circuit Cellar (Build the) Trump card part 2
    • Byte some time after June 1984, Schematic bug fix for above. One chip pin out was missed labeled.
  • Definicon DSI-32 co-processor used the NS32032 processor.
    • See Byte magazine August 1985 and Sept. 1985

Most of these cards were more expensive than the 8087 NPU chip and came with some custom software. Additional hardware circuits may have to be added to remap the systems IORQ's, NMI's.

Other cards were based on:

  • Motorola 88000 ISA coprocessor board from Opus system.
  • ARM board, MC68K series, SPARC card, 65816 and other microprocessors and DSP's.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .