79

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)

  • 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 '17 at 23:45
  • 1
    @LeoB. Why? TPM modules that you can now find in computers are specialized crypto engines, and their interface are fully documented. – dim Mar 7 '17 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. – Euro Micelli Mar 7 '17 at 13:28
  • @dim I was thinking of cryptanalytical applications. – Leo B. Mar 7 '17 at 16:27
71

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 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. Hauppage 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.)

  • 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 '17 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 '17 at 14:53
  • 1
    @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 '17 at 8:18
  • beside co-processors there were also accelerator cards – phuclv Apr 5 '18 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 at 14:36
19

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.

16

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.

  • 4
    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. – Euro Micelli Mar 7 '17 at 12:22
  • 1
    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 '17 at 14:00
  • @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 '17 at 19:18
  • 3
    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 '17 at 19:53
  • 2
    @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 '17 at 21:59
5

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.

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.