The Lighting processors of the HP A600 and A600+ were good performing for 1982. They filled the entry and mid range slots of the HP 1000 A Series quite well. The additional floating point support of the A600+ in 1984 helped considerably as well, but what was needed for truly better performance on the high end was hardware math support. While the HP A600 took only 9 months to design and release, the A700, released at the same time, took somewhat longer. The A600 was based on the AMD 2901, which had been released way back in 1975. The A700 Phoenix was based on its successor, the AM2903. The 2903 added a few important features to the bit-slicer. Hardware multiply and divide support,support for more registers, and easier ways to access them, and parity generation. This is why the A700 took longer to design, the A600 design was begun half way through the A700 to fill the lower end, where the features of the 2903 wouldn’t be as missed.
The A700 performs at the same 1 MIPS as the A600 but supports 205 standard instructions (compared to 182 for the A600 and 239 for the A600+). It adds more register reference instructions, dynamic mapping, I/O and more math based instructions. Cycle time is actually slightly slower, 250ns compared to 227ns for the A600 but the 2903 allows more efficiency making up for the difference. A typical FMP instruction take 13.75-25.25 microseconds compared to 16.6-26.6 on the 2901 powered A600. This is a direct result of the hardware multiply hardware included in the 2903. The A600+, with its faster 2901C’s completes the same instruction in 17-21.1 microseconds, FASTER then the A700. But the A700 has a trick up its sleeve….
If you want fast math, especially floating point, you do it in hardware, not firmware, and that is an option the A700 had. HP had an optional FPA (Floating Point Accelerator) board for the A700 that executed FP instructions in hardware, on custom designed, Silicon-On-Sapphire VLSI IC’s. The A700 FPA added support for 65 new instructions (270 total). These included 10 additional FP instructions, 14 scientific instructions, 38 Vector math instructions and some language specific instructions. A FMP (single precision FP Multiply) took only 4.25 seconds, and being done in hardware it ALWAYS took 4.25microseconds, no longer was there a range based on the firmwares ability to break it into adding loops. This allowed the A700 with the FPA option to average 234KFLOPS, nearly 5 times faster then the 53KFLOPS of the A600 (or A700 without FPA).
The FPA was based on three custom chips HP designed. They are made on HP’s 4 micron SoS CMOS process and combined contain over 130,000 transistors. The 1AE7 FP ALU (30,000 transistors), the 1AH7 FP Divider (35,000 Transistors) and the 1AH4 FP Multiplier (60,000 Transistors). These chips together could handle 32-bit single precision and 64-bit double precision math, Hardware Floating point was not common in 1982. Intel had just released the 8087 for the MCS-86 but it was not widely available, nor was it particularly fast. At 5MHz it took 19 microseconds to do a FMUL, about the same speed as the A700 could do it in firmware (the 8086 without the 8087 took 1600 microseconds, no competition at all). By comparison the 8087 had only 45,000 transistors, while the A700 FPU had over 130,000. The A700 FPA also allowed for 112-bit intermediate productions, while the 8087 limited these to 80-bits.
A note on HP part numbers. The board above has a 1AH4-6200 FPMUL. 1AH4 denotes the technology and the part. 1A denotes it is Silicon-On-Sapphire device, 1T or 1S would be a standard NMOS or CMOS device. The second half of the part number denotes the package and revision. In this case 6200 is the original design (00) in a PGA package (62). A later revision FPMUL would be 1AH4-6201 6202 or 6203. If another package was available it would be marked 1AH4-6000 (for a CLCC for example) or 6100 for a DIP.
It was the FPA, and the ECC support provided by the 2903’s that made the A700 a success. Like its little brother the A600 Lightning, it continues to be used today in many applications.