13 ms·
A look at the die of the 8086 processor
- mobilio 6y agoAnd what about 8088? Because it become more popular due 8 bit I/O data channel.
- kens 6y agoI've ordered an 8088 so I can compare the internal circuitry of the chips. They should be mostly the same, except that the 8088 has an 8-bit data bus externally and has 4 bytes of prefetch buffer instead of 6.
- mobilio 6y agoYes, i know. Will wait for this article!
- Taniwha 6y agoremember that the address and data pins are multiplexed - the 8088 and 8086 have the same number of pins My guess is that the prefetch buffer is always 6 bytes but the 8088 fetches instructions more slowly and never fills it past 4 instructions I think they're probably the same die, the thing to look for is whether there's a bonding difference
- robocat 6y ago> I think they're probably the same die Very unlikely. The 8088 was developed after the 8086, and there are more pin differences including m/io inverting to io/m.
- mrlonglong 6y agoNow I really want to get a 8086 on a bread board and see if I can do things with it! What else do I need to put on the breadboard to build a minimum computer?
- mlaux 6y agoProbably just a voltage regulator, a clock source, reset pin logic, a couple ROM chips (2 8-bit wide chips or 1 16-bit wide), some static RAM, a PAL/GAL/74xx logic for address decoding and chip select pins, stuff to deal with the multiplexing, and whatever input/output you want (bus buffers for parallel I/O, off the shelf UART chips, etc) I’ve only done it with the 6502 and Z80, but the 8086 shouldn’t be too much harder. There are plenty of resources available online for those two chips that you could adapt!
- rasz 6y agohttp://www.malinov.com/Home/sergeys-projects/xi-8088 http://www.malinov.com/Home/sergeys-projects/xi-8088 http://tech.mattmillman.com/projects/8od/ http://tech.mattmillman.com/projects/8od/ http://www.s100computers.com/My http://www.s100computers.com/My System Pages/8086 Board/8086 CPU Board.htm
- kevin_thibedeau 6y agoIn minimum mode you don't need more than a ROM, SRAM, and clock source.
- kiwidrew 6y agoThat's fantastic news! I'm interested to see whether the 8086 and 8088 use the same microcode or whether the only difference between the chips is in the BIU itself. I've always wanted a "visual 6502" style emulation of the original IBM PC, and a high-resolution die photo is the first step. Cycle-accurate emulation of the 8088 is fiendishly difficult thanks to the complex interactions between the EU and BIU.
- alex_young 6y agoThe 8088 was an 8086 with half the bus. https://en.wikipedia.org/wiki/Intel_8088 https://en.wikipedia.org/wiki/Intel_8088
- Koshkin 6y ago> the 6502... didn't use microcode Hmm, the top part of the die shot looks like microcode to me: http://visual6502.org/images/6502/6502_top_op10x_BF_4677.png http://visual6502.org/images/6502/6502_top_op10x_BF_4677.png
- kens 6y agoThe 6502 has a PLA, as do many other early microprocessors such as the 6800, 8080, and Z-80. The PLA is a structured arrangement of logic gates, rather than a microcode ROM. But they both have a similar grid-like appearance.
- ajross 6y agoI've always wondered why that is, given the space-constraints that affected the other areas of those parts' architecture. I assume it was just for development speed, given that the array was easier to lay out (and maybe even had some kind of primitive EDA tooling)?
- kens 6y agoA PLA is reasonably space-efficient if you need gates with a fixed set of inputs and outputs. Even the 8008 used one for instruction decoding. In addition to the microcode ROM, the 8086 has several PLAs of various sizes. For instance, one PLA converts the ALU operation into the necessary ALU control lines.
- NortySpock 6y agoIt would also be fast, right? You would only need to worry about transistor switching speed, not decoding microcode... Disclaimer: just a software engineer, I've only ever heard of microcode, never seen it or written it.
- Koshkin 6y agoHere's what I think is an excellent introduction to the subject (although it leaves unclear the distinction, if any, between microcode and PLA): https://people.cs.clemson.edu/~mark/uprog.html https://people.cs.clemson.edu/~mark/uprog.html
- mmastrac 6y agoI'm excited for someone to actually reverse engineer that 8086 microcode. Curious what might come out of that.
- kens 6y agoYes, it will be interesting to look at the microcode. Intel's 8086 patent discusses the microcode in some detail and gives examples of the microcode for a few instructions. So I'm not expecting any huge surprises. https://patents.google.com/patent/US4449184 https://patents.google.com/patent/US4449184
- saagarjha 6y agoDo you have any sort of automated technique to extract microcode from a picture, or do you do it all by hand?
- rasz 6y agohttp://caps0ff.blogspot.com/ http://caps0ff.blogspot.com/ guys have a collaboration tool and they often ask people to help with filling/validating mask image to bits conversion
- the_af 6y agoThis is a fascinating article! I remember back in my early CS courses where the teacher explained "microcode is this or that" and it sounded so dry. He could have explained microcode was magical goblins for all I cared. It didn't help that I knew nothing (and still don't) about circuitry. But actually seeing registers and microcode there in the photo is amazing. All this stuff I was taught about actually has a physical form that can be seen! The lowly 8086 really went a long way from its humble origins.
- mrlonglong 6y agoYou gotta love that weird segmented memory model though, to allow it to address up to 1MB of RAM using 20 lines, combining a pair of 16 bit registers to generate the 20 bit address. The Motorola 680x0 was a bit saner.
- chihuahua 6y agoI wish Intel had just added some address lines and increased the price by $10 or whatever. I remember writing 68k assembly code and it was very pleasant to work with. 8 address registers, 8 data registers, if you want to access memory, you just put a 32-bit address into an address register. Then I read a book about 80286 assembly and though "ugh this is horrible" and never wrote a single line of x86 assembly code. Worrying about segments and memory models (tiny, small, medium, compact, large, huge) seemed like such a drag on programmer productivity.
- microcolonel 6y ago> I wish Intel had just added some address lines and increased the price by $10 or whatever. It was at a magic price point though, ten dollars literally could have broken the whole product.
- kabdib 6y agoIt probably would have tipped IBM over to using the 68K. IIRC it was a near thing anyway.
- AnimalMuppet 6y agoI have heard that IBM chose the 8088 because Intel sowed some FUD about Motorola's ability to supply the 68000 in sufficient quantity for IBM. The decades of insanity we could have saved if IBM had chosen differently...
- pwg 6y agoThe Wikipedia page on AMD has a slightly different take (https://en.wikipedia.org/wiki/Amd#Technology_exchange_agreement_with_Intel https://en.wikipedia.org/wiki/Amd#Technology_exchange_agreem...): -quote- Technology exchange agreement with Intel Intel had introduced the first x86 microprocessors in 1978. In 1981, IBM created its PC, and wanted Intel's x86 processors, but only under the condition that Intel also provide a second-source manufacturer for its patented x86 microprocessors. Intel and AMD entered into a 10-year technology exchange agreement, first signed in October 1981 and formally executed in February 1982. The terms of the agreement were that each company could acquire the right to become a second-source manufacturer of semiconductor products developed by the other; that is, each party could "earn" the right to manufacture and sell a product developed by the other, if agreed to, by exchanging the manufacturing rights to a product of equivalent technical complexity. The technical information and licenses needed to make and sell a part would be exchanged for a royalty to the developing company. The 1982 agreement also extended the 1976 AMD–Intel cross-licensing agreement through 1995. The agreement included the right to invoke arbitration of disagreements, and after five years the right of either party to end the agreement with one year's notice. The main result of the 1982 agreement was that AMD became a second-source manufacturer of Intel's x86 microprocessors and related chips, and Intel provided AMD with database tapes for its 8086, 80186, and 80286 chips. -end quote- How much really was Intel sowing FUD vs. IBM demanding a second source be available is probably lost to time.
- samstave 6y agoYou can get exposed chip dies on keychains from the intel merch store, which when i worked there i believe was in SC5 building. We had hige prints of the designs of many chips on the wall in our lab. They were super cool looking. I always regretted not taking some home. Before multi-cores existed, i recall asking some colleagues there, “why cant we just stack multiple cpus on top of eachother?”
- rwmj 6y ago> Before multi-cores existed, i recall asking some colleagues there, “why cant we just stack multiple cpus on top of eachother?” I guess you know this already, but the answer is you were right. You can, but heat dissipation is a real problem. The technique is called 3D ICs. https://semiengineering.com/stacked-die-changes/ https://semiengineering.com/stacked-die-changes/ https://en.wikipedia.org/wiki/Three-dimensional_integrated_circuit https://en.wikipedia.org/wiki/Three-dimensional_integrated_c...
- samstave 6y agoYeah - basically, a (like a couple years, that first comment was made in ~1998) while after that comment I went on a hike with a guy in research and we were talking about then secret research that was happening - and he stated they had a 64 core version (yes, 64 cores - but I do not know how functional this test chip was - just that the number of cores was 64) on a test chip that could function. This was in ~2002 or so? I cant recall. But the compute power was low - it was more about the interconnects, IIRC? Anyway -- I ran the gaming lab and was responsible for testing games with SIMD instruction optimizations against games on the first celeron and pentium based CPUS to determine if they passed a subjective muster, as intel would give a company $1MM in marketing funding if they advertised their games as being opt for intel procs... My greatest claims from intel was: I never once sat in my cube. I had the same pee schedule as Andy Grove and for some reason, like every single time I went pee... he was there also and we peed "together" The most I ever said to the Titan was "Hi How Are You" GOTO 10 "Oh Shit, He Is Here Again"
- drmpeg 6y agoI used the CONV-86 8080 to 8086 converter tool mentioned in the article on a project back in 1983. It really worked quite well, with hardly any fixup required on a fairly large (at that time) code base. I remember thinking that the 8088 (in the IBM PC) was a speed demon compared to the 8080 (in the CP/M system I was converting from).
- billforsternz 6y agoI tried to track down that converter for a retro computing project about 10 years ago and failed; https://stackoverflow.com/questions/2038929/where-can-i-find-a-8080-to-x86-assembler-conversion-tool https://stackoverflow.com/questions/2038929/where-can-i-find... A few months ago I returned to the project and completed it this time; https://github.com/billforsternz/retro-sargon https://github.com/billforsternz/retro-sargon As I should have realised the first time, you can write your own converter in an afternoon or two :-)
- drmpeg 6y agoCONV-86 came on 8" floppy disk for the ISIS-II operating system on Intel MDS development boxes. Even if you found a copy, you'd need an MDS-80 to run it on. After the IBM PC came out, everyone tossed their MDS-80 systems when Intel started to provide their tools on MS-DOS. With the current interest in retro computing, I wish I had saved more stuff from back then. I kick myself for not saving an Intel i960CA evaluation board that I used in 1992. I loved the i960 architecture and developed quite a few products with it. However, I still have the processor from that board because I replaced it with an i960CF. http://www.w6rz.net/IMG_0035.JPG http://www.w6rz.net/IMG_0035.JPG
- billforsternz 6y agoThe funny thing is, back in the day I wrote a 8080 emulator that could run CP/M programs on MS-DOS, and then I went the extra mile and adapted it to run ISIS-II programs for the Intel blue boxes we had. There were some 8051 Dev tools I thought were worth bringing over. But that would have been in the 80s, and the 8 inch drives went to the landfill decades ago. So yeah.
- bogomipz 6y agoWow another great post! I had a question about the following passage: >"The photo above shows part of the microcode ROM. Under a microscope, the contents of the microcode ROM are visible, and the bits can be read out, based on the presence or absence of transistors in each position. The ROM consists of 512 micro-instructions, each 21 bits wide." I was curious why 21 bits? I would have expected this would have been a multiple or instruction size or perhaps also 16 bits. Or is there really no correlation between size of an instruction and it's underlying micro-ops? One other question I had was in regards to the "Closeup of some transistors in the 8086" photo where the author states: >"The circles are connections (called vias) between the silicon layer and the metal wiring, while the small squares are connections between the silicon layer and the polysilicon." Vias are alway vertical correct? So are we looking at the chip from the top looking downward then? Why don't we see the metal layers then? Or do the metal wires themselves constitute the metal layer?
- marcosdumay 6y agoYou create the microcode exactly as wide as necessary to control all the hardware. Any extra bit would double the size of that storage area, and it's already one of the largest things on the chip.
- Taniwha 6y agoyou're thinking of address bits - going from 21-bits to 22-bits of microcode increases the area by 1/21th
- deleted 6y ago[deleted]
- marcosdumay 6y agoOh, that's right. It increases linearly with the size of the CPU instruction words in a dimension and the size of the microcode instruction words on the other dimension. The entire exponential addressing space is not used, since there is an overall structure to both instruction sets.
- miohtama 6y agoDo we have any hope for garbage collecting CPUs 40 years later or are they a doomed venture? > In 1975, Intel's next big plan was the 8800 processor designed to be Intel's chief architecture for the 1980s. This processor was called a "micromainframe" because of its planned high performance. It had an entirely new instruction set designed for high-level languages such as Ada, and supported object-oriented programming and garbage collection at the hardware level.
- nullc 6y agoI'd much rather have a security-oriented processor with tagged bounds checked pointers... such a facility could also make garbage collecting more efficient, but what it could do for security would be wonderful.
- josephcsible 6y agoIsn't that basically what the stillborn Intel MPX was?
- nullc 6y agoMPX was pretty limited, but yes-- it moved in that direction. https://www.cl.cam.ac.uk/research/security/ctsrd/cheri/ https://www.cl.cam.ac.uk/research/security/ctsrd/cheri/ is more what I was thinking
- kens 6y agoThe 8800 (iAPX 432) provided bounds checking too. Every object reference wasn't a pointer but an "Access Descriptor" that included permissions. So you couldn't access anything out of bounds. I should emphasize that this isn't like a JVM, but was implemented at the machine instruction level. It's hard to understand how strange and radical this processor was. https://en.wikipedia.org/wiki/Intel_iAPX_432#Object-oriented_memory_and_capabilities https://en.wikipedia.org/wiki/Intel_iAPX_432#Object-oriented...
- Icathian 6y ago
- haecceity 6y agoHow can you tell what section is the adder by the shape of wirings?
- kens 6y agoThe registers are made of small repeated blocks, one per bit, so they form a grid. The adder (and ALU) is also repeated for each bit, but each unit is much larger and more complex. It also helps that the block diagrams and patent diagrams roughly match the die layout.
- anonymousiam 6y agoI was current on every other processor of this era, but I avoided 8086 because of the crappy addressing scheme. They (apparently) wanted to keep some sort of connection to 16-bit addressing, so they came up with the "segment registers", which were a real kludge. I guess I was wrong, and once they graduated from "real mode", it got better.