35

The decision to use the 8088, a version of the 8086 with the data bus restricted to 8 bits, in the original IBM PC, seems strange on the face of it, certainly hurt performance and intuitively shouldn't save all that much money.

How much exactly did it save on the manufacturing cost per machine, all told, taking into account the CPU itself, the mainboard and anything else thereby affected?

1
  • 3
    Really the only thing it would have been worth implementing at 16 bits would have been the main system memory - I/O peripherals and at that point disk interfaces would have remained 8 bit. But the PC was designed around low density DRAM, such that large amounts of memory would have to include some on expansion cards, and those would be largely the same users who would benefit from a 16 bit memory path that the expansion cards would then need to support. Apr 28, 2017 at 15:37

4 Answers 4

33

According to Wikipedia, a number of reasons contributed to IBM’s using the 8088 instead of the 8086:

  • Intel offered them a better price for the 8088 and was able to supply more of the chips;
  • the 8-bit data-bus meant that IBM could use a modified 8085 design (the System/23) instead of coming up with a new 16-bit design;
  • it also meant that IBM could use more mature and cheaper 8-bit components.

The knock-on effects on design and cost are extensive: using an 8-bit data-bus meant shorter XT-bus connectors, simpler extension cards, fewer traces to handle on the motherboard...

Attaching an actual figure to those cost savings is another story, I doubt anyone could determine that accurately nowadays.

9
  • 1
    That makes sense, but if it's impossible to get an exact figure, what would be an order of magnitude estimate? Like would you be talking closer to $30 or $300?
    – rwallace
    Apr 27, 2017 at 13:59
  • 5
    If part of it was that IBM could easily modify an existing motherboard rather than designing a new one then the cost is both (i) the cost of a designer doing that work; and (ii) almost certainly, the costs of being later to market. Given that the PC was built to be an Apple killer — to take marketshare from an already successful product — I'll bet we're talking huge amounts under head (ii).
    – Tommy
    Apr 27, 2017 at 14:46
  • 7
    Don't underestimate the "number of traces": PCB design is difficult work. And the cost of having a PCB made that needs finer tolerances because of thinner tracks, or needs more layers, is surprisingly high. Apr 27, 2017 at 19:38
  • 1
    That System/23 is interesting: Inside pictures show the same oddity the later IBM PC has - a lack of typical IBM silver-square SLT-style ICs (none in the PC, very few in the System/23). Not likely they were transitioning away from it generally, since later Microchannel (PS/2 and RS/6000) systems are CHOCK FULL of silver squares. Apr 27, 2017 at 19:50
  • 2
    At the time 8-bit was the market standard, and 16-bit was new and expensive. Apr 28, 2017 at 9:54
26

This is not a complete answer because it doesn't answer what the exact cost savings were, but I think it's worthwhile to have an informed primary source for the claim that there were cost-savings and commodity-components motivations behind IBM's choice to use the 8088 instead of the 8086.

Peter Norton, PC guru and DOS programmer extraordinaire, writes in his book, Inside the IBM PC:
(© 1986; p. 9)

“There was an inherent practical problem . . . in using the 8086 as the base of a computer design. While the 8086 had 16-bit capabilities internally—which is very good—it also had to work exclusively with other computer components that handle 16 bits at a time as well. When the PC was being designed, 8-bit parts were plentiful and cheap; 16-bit parts were more expensive and in shorter supply. This presented an obstacle to anyone designing a computer around the 8086.

Intel found a simple, practical solution to this problem with the 8088 chip. The 8088 internally has all the 16-bit skills of the 8086, but when it communicates with other circuitry around it, it talks only 8 bits at a time; this slightly reduces the speed of the 8088, but it makes it possible for the 8088 to work with other components that are cheap and plentiful.

For practical reasons, IBM designed the original model of PC around the 8088—a microprocessor with 16-bit power, but 8-bit economy. […]”

Furthermore, while the question makes it sound like IBM's choice to use a hobbled 16-bit processor was a rather curious one, it really wasn't. It's important to realize that when the IBM PC was designed (and even at the time of its release to the public), virtually all home computers were 8-bit systems.

In fact, IBM's original plan apparently was to use an 8-bit processor, and Microsoft is who persuaded them to go with the 16-bit 8086 instead. In an interview with PC Magazine on March 25, 1997, Bill Gates had this to say (emphasis added):

…for IBM it was extremely different because this was a project where they let a supplier—a partner, whatever you call us—shape the definition of the machine and provide fundamental elements of the machine. When they first came to us, their concept was to do an 8-bit computer. And the project was more notable because they were going to do it so quickly and use an outside company. It wouldn't be a high-volume product.

Their charge was to do a home and a very low-end business machine. They had the Data Master, which was 8085-based at the time, that they felt was covering part of the business market. Then they had the 5100, the machine that had both an APL and a BASIC interpreter, which was covering another part of the business market. So it was sort of a home-down business machine. And it was a very small team in Boca that wanted to prove that IBM could do a product, any kind of product, in about an 18-month cycle. And that was the most novel-that was going to be the novel thing was: could you work with outsiders, which in this case was mostly ourselves but also Intel, and do it quickly?

And the key engineer on the project, Lou Eggebrecht, was fast-moving. Once we convinced IBM to go 16-bit (and we looked at 68000 which unfortunately wasn't debugged at the time so decided to go 8086), he cranked out that motherboard in about 40 days. It's one of the most phenomenal projects because there were very small resources involved and we had to ROM the BASIC which meant that it was essentially cast in concrete, so you couldn't make much in the way of mistakes.

Microsoft co-founder Paul Allen remembers things the same way as Gates, writing in his autobiography:
(© 2011; p. 133)

That August [of 1980], a three-piece-suited contingent led by Jack same approached us about Project Chess, the code name for what would become IBM's PC. After we talked them out of an 8-ibt machine and won them over to the Intel 8086 (or as it turned out, the cheaper but virtually identical 8088), they wanted everything in our 16-bit cupboard, including FORTRAN, COBOL, and Pascal. Aside from BASIC, none of these products were even close to being ready for the 8086 platform. It would take a wild scramble to get them all done on IBM's tight timetable.

That's not to say, of course, that 16-bit computer systems didn't exist at this time—they did—but they were not found in personal computers. The most popular computers at that time, from Apple and Atari, were powered by the MOS Technology 6502, and a number of others by the Zilog Z80. You might object and say that IBM wasn't really designing the PC to compete with the likes of Apple IIs and Commodores, since it wasn't a home gaming machine, but remember that IBM was still making powerful mainframes and minicomputers and certainly did not expect or want their PC to compete with these.

In fact, the 8088's pseudo-16-bit architecture was considerably more powerful than any of its competitors. It has a lot of neat tricks up its sleeve that its contemporaries just couldn't match:

  • Chief among those was its relatively large complement of general-purpose registers. The 6502 only had a single GP register, while the 8088 had between 4 and 6 (depending on how you count). Sure, there were some instructions that were hardcoded to use only certain registers, but this was still a lot more headroom. Plus, these instructions required fewer bytes to encode, which turned the register specialization into an advantage.
  • Another unique feature of the 8088 compared to other personal computers were its hardware multiplication and division operations. Being a 16-bit processor internally, these could do a full 16-bit multiply or divide internally on two values that were known only at run-time. Granted, these instructions were extremely slow, but they were still faster than emulating them on processors that didn't support them.
  • An even more important advantage of the 8088 was Intel's CISC architecture, which offered a wide variety of extremely powerful "meta-instructions" that could be encoded in fewer bytes and executed more quickly than equivalent sequences of instructions on other microprocessors. The string instructions are the best known, and were truly one of the defining features of the 8088 from a performance-oriented programmer's perspective. With a single opcode (MOVSB), you could copy a byte from one memory location to another and advance both pointers—all in an order of magnitude less time than it would have taken to execute these three logical operations. There were instructions to copy memory around (MOVSB), scan a buffer for a value (SCASB), compare two buffers (CMPSB), and fill a buffer with a certain value (STOSB). When coupled with the REP prefix (which caused the instruction to be repeated a certain number of times, or according to a particular condition), you had a loop that could do these operations repeatedly at extremely high speeds. The XLAT instruction is another honorable mention, weighing in at only 1 byte yet allowing efficient, effective use of translation tables.

It's important not to overstate the drawbacks of an 8-bit external bus. This only slowed down memory operations, which were—relatively speaking—extremely slow anyway and therefore avoided as much as possible by programmers targeting this architecture. Where you really saw a penalty from the 8-bit bus was in fetching instructions to be executed (as opposed to data).

It turned out that the 8088 spent a lot of its time idling, waiting for instructions to be read, since it could execute many of them so quickly that its 4-byte prefetch queue was usually empty. (It took ~4 cycles to read a single byte.) The way around this was to take advantage of those nice, short CISC instructions that were fetched quickly and packed readily into a small queue. If you had a series of 1-byte instructions, the queue would stay full and the chip would stay busy—and thus run quickly, as fast as an 8086. When optimizing for 8088, using more instructions was usually a win if they were smaller, and x86 has a lot of special-case short-form encodings of various instructions.

(The 8086, in addition to having a 16-bit external bus, also had a 6-byte prefetch queue; it was these things together that made the 8086 a superior performer, since it was easier to keep the queue full and thus the processor busy. The 8088 limited its prefetch queue to only 4 bytes, probably because prefetch contends with data load/store, and some of that prefetch will turn out to be useless: discarded on jumps. With less memory bandwidth available, it's less worthwhile to aggressively prefetch. See discussion in comments. Michael Abrash's extended treatment of the prefetch queue in his Zen of Assembly is also worth a read.)


Another thing about the 8088 (and 8086, of course) that was huge was the 8087 math coprocessor. It was an expensive add-on for sure, and therefore wasn't found in many systems, but boy was it powerful. Not only did it make it possible to do complex IEEE floating-point operations, which was already unprecedented in a home computer, it also did it with high accuracy and precision. Even more significantly, it was a true coprocessor, that could execute floating-point operations independently, meaning that the main 8088/8086 processor could stay busy executing integer instructions. Background multiprocessing in 1981—what is this insanity?!

From this perspective, it is, in some ways, surprising that the IBM PC was as powerful as it was. In the hands of the right programmer, it could blow the ceiling off of contemporary personal computers, and would even pose a real threat to some of the mini-computers on the market. Unfortunately, there were relatively few programmers who really took advantage of these neat features, and by the time such tricks were widely known, they were already obsolete. I also can't speak as to the extent to which IBM's engineers realized the power of Intel's processor—they may have thought they were humbling the machine more than they actually were, and it may be Andy Grove's team that were the real wizards here.

12
  • 4
    Memory operations weren't always avoided like the plague — at the time of the 6502's design it was believed that RAM would remain faster than processing for that chip's lifetime, hence its heavy reliance on the zero page [approximately] in lieu of registers. Definitely the Intel/z80 school of thought is to do everything in registers though, so I think you're correct as to 8088 v 8086.
    – Tommy
    May 7, 2017 at 15:08
  • 5
    The IBM PC with 8088 did a great job of carving out the "middle ground", between the aging 6502 popular for inexpensive home computers, and its contemporary Motorola 68000 competitor, which owned the expensive workstation market of the early 80s.
    – Brian H
    May 7, 2017 at 22:23
  • 4
    @Tommy: Expanding the prefetch buffer of the 8088 to six bytes would probably, on average, have degraded performance since anything that's in the prefetch buffer when a branch is taken gets discarded. If the prefetch buffer isn't full and the 8088 would have one idle bus cycle before a read or write, that read or write will get delayed by three cycles to accommodate a code fetch. That may effectively reduce the cost of the code fetch from four cycles to three, but if the fetched byte ends up being useless and would otherwise not have been fetched, that will simply waste three cycles.
    – supercat
    Dec 8, 2017 at 16:58
  • 3
    @Jules: The 6-byte queue is most likely motivated not only by the fact that being larger than four is helpful, but also by the fact that a four-byte instruction that starts on an odd address will be spread throughout three words.
    – supercat
    Jul 10, 2018 at 17:54
  • 4
    The Peter Norton quote is complete marketing waffle. 8086 never required 16 bit peripheral chips. Check out Intel's original documentation of the 8086 and chips and you will see that the schemas show how to interface it with the legacy 8 bit chips (8259 PIC, 8237 DMA, 8253 PIT, 8255 PIO etc.). It was a selling point of the 8086 that it had a flexible bus that could operate with 8 bit chips (btw it was the same with 68000). No 16 bit CPU could be sold without the capacity to interface 8 bit chips. Jan 13, 2020 at 8:57
12

8-bit data bus designs were generally dramatically cheaper than 16-bit designs because they required half as many RAM chips: DRAMs of the time conventionally stored a single bit per address. So an 8-bit machine needed eight of them to populate a memory region. A 16-bit machine needed sixteen. The 8088 has an 8-bit data bus whereas the 8086 has a 16-bit data bus, so the 8088 is a 16-bit chip for these purposes.

The IBM 5150 uses 64kx1 DRAM chips per its technical reference manual section 1-13. So when accessing anything in its 64kb of motherboard RAM, eight chips respond at once, each providing or receiving a single bit.

11
  • 2
    But surely that would only apply if you are willing to have just half as much RAM? If you want the same amount as the 16-bit design would have had, surely you still need the same number of chips?
    – rwallace
    Apr 27, 2017 at 13:58
  • 2
    @rwallace you could use higher-density chips instead. Apr 27, 2017 at 14:02
  • 6
    I think the original IBM PC used 16Kbx1 RAM in 4 banks, such that it could have been wired to a 16-bit data bus. minuszerodegrees.net/5150/ram/5150_ram_16_64.htm
    – Brian H
    Apr 27, 2017 at 15:54
  • 8
    You could say that they were DRAMatically cheaper
    – anna328p
    Apr 27, 2017 at 18:57
  • 2
    A 16kB memory configuration would have been essentially useless. In terms of anything that actually got built, it would have been about reorganizing the same DRAMs already used, but it would have meant more traces. And since you couldn't get a large amount of memory on any of the original IBM boards, it would have had to extend to the expansion connectors, which would have required drastic reworking to support 16 bits. So it wasn't a DRAM cost issue, but rather an interconnect one. Apr 28, 2017 at 15:49
5

One should not ignore the cost of DRAM chips at the time when the IBM PC was originally designed. Circa 1980, the marked-up retail price of a board with 64 kilobytes of DRAM was around $400 (that's over $1200 in 2017 dollars). The high volume low cost DRAM memory chips were 1-bit wide. Doubling the cost of that DRAM (from 8 to 16 1-bit memory chips) would be required in the minimal entry-level (cassette-tape with BASIC in ROM!) PC to support a 16-bit processor.

3
  • 2
    But how many systems did IBM really sell with cassette tape and minimal memory? That lowest configuration made the PC more competitive with the Apple II and other home computers, but I would argue that the target markets were businesses & power users, both of which would jump straight to floppy drives + maximum RAM they could afford. Jun 23, 2017 at 20:01
  • 2
    @manassehkatz - the question isn't how many did they sell (which, from all I understand, is very few), but how many did they expect to sell. From my understanding, IBM's idea was to have a machine that was positioned against the other home computers of the era, particularly the TRS-80 and Apple II. Both of those sold large numbers of 16K machines. But IBM of course misjudged the market -- hence they very quickly had to redesign the machine. AFAICT, production of the 16K model stopped some time around October 1981, only 2-3 months after launch.
    – Jules
    Feb 1, 2018 at 9:42
  • 1
    ... I don't have a firm date for when production stopped, but the last machines issued with the 16KB-64KB motherboard have a BIOS dated 19 October 1981; later BIOS versions, including one released 27 October 1981, are apparently incompatible with machines that have less than 64KB, which suggests to me that any 16KB machines sold after that date must have been from old inventory, and that production had probably entirely switched to the new design motherboard, which supported 64KB minimum and 256KB maximum configurations.
    – Jules
    Feb 1, 2018 at 9:48

You must log in to answer this question.

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