Counting the transistors in the 8086 processor: it's harder than you might think

How many transistors are in Intel's 8086 processor? This seems like a straightforward question, but it doesn't have a straightforward answer. Most sources say that this processor has 29,000 transistors.1 However, I have traced out every transistor from die photos and my count is 19,618. What accounts for the 9382 missing transistors?

The explanation is that when manufacturers report the transistor count of chips, typically often report "potential" transistors. Chips that include a ROM will have different numbers of transistors depending on the values stored in the ROM. Since marketing doesn't want to publish varying numbers depending on the number of 1 bits and 0 bits, they often count ROM sites: places that could have transistors, but might not. A PLA (Programmable Logic Array) has similar issues; the transistor count depends on the desired logic functions.

What are these potential transistor sites? ROMs are typically constructed as a grid of cells, with a transistor at a cell for a 1 bit, and no transistor for a 0 bit.2 In the 8086, transistors are created or not through the pattern of silicon doping. The photo below shows a closeup of the silicon layer for part of the 8086's microcode ROM. The empty regions are undoped silicon, while the other regions are doped silicon. Transistor gates are formed where vertical polysilicon lines (removed for the photo) passed over the doped silicon. Thus, depending on the data encoded into the ROM during manufacturing, the number of transistors varies.

A closeup of part of the microcode ROM. The dark circles indicate vias between the silicon and the metal on top.

A closeup of part of the microcode ROM. The dark circles indicate vias between the silicon and the metal on top.

The diagram below provides more detail, showing the microcode ROM up close. Green T's indicate transistors, while red X's indicate positions with no transistor. As you can see, the potential transistor positions form a grid, but only some of the positions are occupied by transistors. The common method for counting transistors counts all the potential positions (18 below) rather than the actual transistors that are implemented (12 below).

An extreme closeup of the microcode ROM. Green T's indicate transistors, while red X's indicate positions with no transistor.

An extreme closeup of the microcode ROM. Green T's indicate transistors, while red X's indicate positions with no transistor.

I found an Intel history that confirmed that the 8086 transistor count includes potential sites, saying "This is 29,000 transistors if all ROM and PLA available placement sites are counted." That paper gives the approximate number of (physical) transistors in the 8086 as 20,000. This number is close to my count of 19,618.

To get a transistor count that includes empty sites, I counted the number of transistor sites in the various ROMs and PLAs in the 8086 chip. This is harder than you might expect because the smaller ROMs, such as the constant ROM, have some layout optimization. The photo below shows a closeup of the constant ROM. It is essentially a grid, but has been "squeezed" slightly to optimize its layout, making it slightly irregular. I'm counting its "potential" transistors, but one could argue that it shouldn't be counted because filling in these transistors might run into problems.

Closeup of the constant ROM showing the silicon and polysilicon.

Closeup of the constant ROM showing the silicon and polysilicon.

The following table breaks down the ROM and PLA counts by subcomponent. I found a total of approximately 9659 unfilled transistor vacancies. If you add those to my transistor count, it works out to 29,277 transistors.

ComponentTransistor sitesTransistorsVacancies
Microcode1390462107694
Group Decode ROM1254603651
Translation ROM1050431619
Register PLAs465182283
ALU PLA354170184
Constant ROM20310994
Condition PLA1607486
Segment PLA904248

The image below shows these ROMs and PLAs on the die and how much the vacancies increase the transistor count. Not surprisingly, the large microcode ROM and its decoding PLA are responsible for most of the vacancies.

The 8086 die with transistor vacancy counts and how much they contribute to the final transistor count. (Click this image or any other for a larger version.)

The 8086 die with transistor vacancy counts and how much they contribute to the final transistor count. (Click this image or any other for a larger version.)

Potential exclusions

So are my counts of 19,618 transistors and 29,277 transistor sites correct? There are some subtleties that could lower this count slightly. First, the output pins use large, high-current transistors. Each output transistor is constructed from more than a dozen transistors wired in parallel. Should this be counted as a dozen transistors or a single transistor? I'm counting the component transistors.

An output pad with a bond wire attached. Driver transistors next to the pad are constructed from multiple transistors in parallel.

An output pad with a bond wire attached. Driver transistors next to the pad are constructed from multiple transistors in parallel.

The 8086 has about 43 transistors wired as diodes for various purposes. Some are input protection diodes, while others are used in the charge pump for the substrate bias generator. Should these be excluded from the transistor count? Physically they are transistors but functionally they aren't.

The 8086 is built with NMOS logic which builds gates out of active "enhancement" transistors as well as "depletion" transistors which basically act as pull-up resistors. I count 2689 depletion-mode transistors, but you could exclude them from the count as not "real" transistors.

Conclusions

The number of transistors in a chip is harder to define than you might expect. The 8086 is commonly described as having 29,000 transistors when including empty sites in ROMs and PLAs that potentially could have a transistor. The published number of physical transistors in the 8086 is "approximately 20,000". From my counts, the 8086 has 19,618 physical transistors and 29,277 transistors when including empty sites. Given the potential uncertainties in counting, it's not surprising that Intel rounded the numbers to the nearest thousand.

The practice of counting empty transistor sites may seem like an exaggeration of the real transistor count, but there are some good reasons to count this way. Including empty sites gives a better measure of the size and complexity of the chip, since these sites take up area whether or not they are used. This number also lets one count the number of transistors before the microcode is written, and it is also stable as the microcode changes. But when looking at transistor counts, it's good to know exactly what is getting counted.

I plan to continue reverse-engineering the 8086 die so follow me on Twitter @kenshirriff or RSS for updates. I've also started experimenting with Mastodon recently as @oldbytes.space@kenshirriff. I discussed the transistor count in the 6502 processor here.

Notes and references

  1. For example, The 8086 Family Users Manual says on page A-210: "The central processor for the iSBC 86/12 board is Intel's 8086, a powerful 16-bit H-MOS device. The 225 sq. mil chip contains 29,000 transistors and has a clock rate of 5MHz." 

  2. ROMs can also be constructed the other way around, with a transistor indicating a 0. It's essentially an arbitrary decision, depending on whether the output buffer inverts the bit or not. Other ROM technologies may have transistors at all the sites but only connect the desired ones. 

11 comments:

The Editor said...

We (Inmos) tool pretty much the same approach when we counted the transistors in the transputers (T414, T800, …). When I saw the article went through potential v. actual sites, high drive transistors implemented as multiple transistors, logical ROM bits v. actual ROM bits (the microcode ROM used rows split into two. If all the bits in one half of the row were identical then a decider truck allowed the half row to be omitted, saving space. I think this saved about 30% of ROM area. I can’t remember what we used when quoting transistor count.

Dogzilla said...

Did you ever work in Colorado Springs?

Randy Lea

The Editor said...

No. Bristol based.

Miceal Tyre said...

Thank you, Ken, for another excellent article. This particular one neatly sums up why I am a grateful subscriber to your work. The 8086 processor and the x86 architecture have run in parallel with the greater part of my life and I'm sure that has been for the better. Like most things, once they became commonplace, both the processor and the architecture, they became forgotten by most people but they deserve to be researched, remembered and recorded for posterity.

Alan said...

Hi Ken,
thank you for this detailed explanation about transistor counting. I'm looking forward for a browser simulator showing the enabled transistors like you did before. Do you think it is feasible or should be a daunting effort?

Michele said...

You counted all those transistors? Impressive! I'm reminded of the transistor count scandal involving portable transistor radios back in the 60's. At the time, small transistor radios pretty much all had similar performance. To distinguish them from their rivals, manufacturers would place their transistor count prominently on the front panel. "5 transistor", "8 transistor" etc.

The transistor wars eventually heated up to the point that some manufacturers got the brilliant idea to bump their transistor count by placing transistors (typically QC rejects) on their PCB's that weren't actually connected to anything. This allowed them to advertise their sets as a "10 transistor" radio, even though the actual circuit was no different than a 6 transistor radio. Fun stuff.

Ref.: https://www.antiqueradios.com/forums/viewtopic.php?f=4&t=338675

Carl said...

Great post as usual.

It looks like the area taken up by the microcode transistors / vacancies is quite small given the number of transistors in those parts of the die. Is it fair to say that there is much greater transistor density achieved there relative to the logic elsewhere on the die?

Old Guy said...

> This allowed them to advertise their sets as a "10 transistor" radio, even though the actual circuit was no different than a 6 transistor radio. Fun stuff.

To get halfway back to a "computer topic" I know of a similar cheat in the mid 80ies homecomputer market in Spain:
Amstrad installed an additional 8K RAM chip and some fake logic into their famous 464 model to bring it above 64K RAM (it became a "472" model). The reason wasn't marketing or competition but avoiding import taxes!

See this video for details:
https://www.youtube.com/watch?v=_ErfWfjN9iU

The chips were probably also rejects but who knows.

Anonymous said...

Ken,
I love your work !
Just sharing a similar perspective from someone on the chip design/production side..

Anyway :-
We used the term 'physical transistors' for the actual transistors on the die.
Two counts were reported... connected (with contacts) and not connected (think gate array and ECO cells[for later changes by modifying metal only]) .... yield analysis stuff..

Early roms/pla were diffusion, later many Roms had all the transistors present but used contact or metal to program. They were a bit bigger in area but this saved the cost of an increasingly expensive Gate mask when making rom code changes. It also saved a lot of processing time if wafers were 'banked' pre-contact, waiting for the inevitable rom changes..
on die Pla/Pal use almost disappeared by 130/90nm.. it made sense in some cases but synthesized logic was way quicker to implement , easier to floorplan and sometimes smaller area depending on function. Replacement of some ROMs with synthesized gates was also a growing trend. I found it made reversing quite a bit harder.

The phrase "Logical transistors" (with apologies to analog designers) was the Equivalent reduced transistor count. Parallel reduction being used as you mention. Series reduction used for gate shorted stacked transistors. This was done in the old mainframe days for faster LVS, with suitable adjustments to L and W parameters. It seemed to have stuck around.

Diodes were extracted and counted separately by type. Various diffusion diodes transistor diodes and gated diodes. Gated diodes sometimes used for interconnect antenna protection were actually transistors, only one connection to the signal wire.

Marketing liked the big numbers for transistor counts.

Then for logic alone there is the NAND gate or gate equivalent count, lots of ways to do that one.. transistors/4 is simplest. but physical or logical transistors.. And of course there are other ways to count logic gates..

I am sure you are aware of similar chaos on reporting gate length Lgate, LDrawn, Lphysical, Leffective(electical),LMask, Lequivalent..and so on...
When someone quotes gate length, always good to know which one they mean.


Snial said...

Re: the comments from TheEditor: https://www.blogger.com/profile/00750939859695685490

It'd be really amazing to see the equivalent reverse engineering of a T414 or T424 Transputer, largely because it was such a ground-breaking mass parallel-processing CPU from such an early point in the history of microprocessors. Analysing the quasi RISC / Bytecode / RPN execution engine, alongside the built-in hardware scheduler and multi-Megabit/s communications channels would reveal a lot (I guess) about the design choices they made.

Disclosure: my 1989 undergraduate 3rd year project was done on the University of East Anglia Transputer Rack (9 x T424s I believe) in Occam 2 (the equivalent of a 9-core system). I thought we were on the verge of massive parallelism for the general public, but sadly, sequential, uniprocessor computing was already too dominant.

Richard said...

Amazing article. for me, the number of 29000 transistor has a lot to do with advertising issues. you managed to really demystify the amount of transistors in the processor, effectively classifying their use. I've never seen this review before. Congratulations!!!