5 ms·
Unusual circuits in the Intel 386's standard cell logic
- skissane 11mo ago> Regenerating the cell layout was very costly, taking many hours on an IBM mainframe computer. I would love to know more about this – how much info is publicly available on how Intel used mainframes to design the 386? Did they develop their own software, or use something off-the-shelf? And I'm somewhat surprised they used IBM mainframes, instead of something like a VAX.
- themafia 11mo agoThere's not a lot of "off the shelf" in terms of mainframes. You're usually buying some type of contract. In that case I would expect a lot of direct support for customer created modules that took an existing software library and turned into the specific application they required.
- skissane 11mo ago> There's not a lot of "off the shelf" in terms of mainframes Not true-there’s still a huge amount of off-the-shelf software for IBM mainframes, and in the 1980s there was a lot more than there is now - see e.g. https://lookupmainframesoftware.com/ https://lookupmainframesoftware.com/ - in particular, the early-to-mid 1980s and earlier were really the heyday of scientific and engineering software on IBM mainframes (e.g. the original mainframe-based versions of CATIA and CADAM), before it migrated to Unix workstations. From Ken’s comment above, I know Intel was actually using Amdahl UTS, a mainframe Unix port, which is a bit of a midpoint in that transition. And of course, someone like Intel (both then and now) is going to use a lot of custom software in CPU development, whatever off-the-shelf bits they might be able to leverage.
- kens 11mo agoVarious papers describe the software, although they are hard to find. My earlier blog post goes into some detail: https://www.righto.com/2024/01/intel-386-standard-cells.html https://www.righto.com/2024/01/intel-386-standard-cells.html The 386 used a placement program called Timberwolf, developed by a Berkeley grad student and a proprietary routing tool. Also see "Intel 386 Microprocessor Design and Development Oral History Panel" page 13. https://archive.computerhistory.org/resources/text/Oral_History/Intel_386_Design_and_Dev/102702019.05.01.acc.pdf https://archive.computerhistory.org/resources/text/Oral_Hist... "80386 Tapeout: Giving Birth to an Elephant" by Pat Gelsinger, Intel Technology Journal, Fall 1985, discusses how they used an Applicon system for layout and an IBM 3081 running UTS unix for chip assembly, faster than the VAX they used earlier. Timberwolf also ran on the 3081. "Design And Test of the 80386" (https://doi.org/10.1109/MDT.1987.295165 https://doi.org/10.1109/MDT.1987.295165) describes some of the custom software they used, including a proprietary RTL simulator called Microsim, the Mossim switch-level simulator, and the Espresso PLA minimizer.
- dcassett 11mo ago> Espresso PLA minimizer You can still find the software for Espresso (I ran it a few years ago): https://en.wikipedia.org/wiki/Espresso_heuristic_logic_minimizer https://en.wikipedia.org/wiki/Espresso_heuristic_logic_minim...
- f1shy 11mo ago> Did they develop their own software Knowing intel SW and based on it was succesful, I really doubt it
- retrac 11mo agoVAX were relatively small computers for the time. They grew upward in the late 80s eventually rivalling the mainframes for speed (and cost). But in the early 80s IBM's high end machines were an entire order of magnitude larger. Top of the line VAX in 1984 was the 8600 with a 12.5 MHz internal clock, doing about 2 million instructions per second. IBM 3084 from 1984 - quad SMP (four processors) at 38 MHz internal clock, about 7 million instructions per second, per processor. Though the VAX was about $50K and the mainframe about $3 million.
- z3ratul163071 11mo agoamazing and very informative work. thank you!
- userbinator 11mo agoBut in the end, the 386 finished ahead of schedule, an almost unheard-of accomplishment. Does that schedule include all the revisions they did too? The first few were almost uselessly buggy: https://www.pcjs.org/documents/manuals/intel/80386/ https://www.pcjs.org/documents/manuals/intel/80386/
- kens 11mo agoAccording to "Design and Test of the 80386", the processor was completed ahead of its 50-man-year schedule from architecture to first production units, and set an Intel record for tapeout to mask fabricator.
- adrian_b 11mo agoExcept for the first stepping A0, whose list of bugs is unknown, and it also implemented a few extra instructions that were dropped in the next revisions, instead of having their bugs fixed, the other steppings have errata lists that are not significantly worse than those of most recent Intel or AMD CPUs, which also have long lists of bugs, for which there are workarounds in most cases, at the hardware level or operating system level.
- EvanAnderson 11mo agoThat's a rabbit hole I didn't know about re: removed instructions. Thanks for that bit of trivia. https://www.pcjs.org/documents/manuals/intel/80386/ibts_xbts/ https://www.pcjs.org/documents/manuals/intel/80386/ibts_xbts...
- wolfi1 11mo agoif I remember correctly the 386 didn't have branch prediction so as a thought experiment how would a 386 with design sizes from today (~9nm) fare with the other chips?
- Earw0rm 11mo agoIt would lose by a country mile, a 386 can handle about one instruction every three or four clocks, a modern desktop core can do as many as four or five ops PER clock. It's not just the lack of branch prediction, but the primitive pipeline, no register renaming, and of course it's integer only. A Pentium Pro with modern design size would at least be on the same playing field as today's cores. Slower by far, but recognisably doing the same job - you could see traces of the P6 design in modern Intel CPUs until quite recently, in the same way as the Super Hornet has traces of predecessors going back to the 1950s F-5. The CPUs in most battery chargers and earbuds would run rings around a 386.
- anthk 11mo agoA 386 was a beast against a 286, a 16 bit CPU. It was the minimum to run Linux with 4MB of RAM, but a 486 with and FPU destroyed it and not just in FP performance. Bear in mind that with an 386 you can barely decode an MP2 file, while with a 486 DX you can play most MP3 files at least in mono audio and maybe run Quake at the lowest settings if you own a 100 MHZ one. A 166MHZ Pentium can at least multitask a little while playing your favourite songs. Also, under Linux, a 386 would manage itself relativelly well with just terminal and SVGAlib tools (now framebuffer) and 8MB of RAM. With a 486 and 16MB of RAM, you can run X at sane speeds, even FVWM in wireframe mode to avoid window repaintings upon moving/resizing them. Next, TLS/SSL. WIth a 486 DX you can use dropbear/bearssl and even Dillo happily with just a light lag upong handhaking, good enough for TLS 1.2. Under a 486, a 30-35? year old CPU. IRC over TLS, SSH with RSA256 and the like methods, web browsing/Gemini under Dillo with TLS. Doable, I did it under VM, it worked, even email and NNTP over TLS with a LibreSSL fork against BearSSL. With a 386 in order to keep your sanity you can have plain HTTP, IRC and Gopher and plain email/Usenet. No MP3 audio, where with a 486 you could at least read news over Gopher (even today) will multitasking if you forced yourself to a terminal environment (not as hard as it sounds). If you emulate some old i440FX based PC under Qemu, switching between the 386 and 486 with -cpu flag gives the user clear results. Just set one with the Cirrus VGA and 16MB and you'll understand upong firing X. This is a great old distro to test how well 386's and 486's behaved: https://delicate-linux.net/ https://delicate-linux.net/
- burnt-resistor 11mo agoI'm curious to know which model, speed, voltage, stepping, and package writing sample(s) were evaluated because there isn't just one 386. i386DX I assume but it doesn't specify whether it was a buggy 32-bit multiply or "ΣΣ" or newer. "Showing one's work" would need details that are verifiable and reproducible.
- kens 11mo agoI've looked at a bunch of 386 dies, see: https://www.righto.com/2023/10/intel-386-die-versions.html https://www.righto.com/2023/10/intel-386-die-versions.html I typically use an earlier 1.5µm chip since it's easier to study under the microscope than a 1µm chip and I use "ΣΣ" because they are more obtainable. Typical steppings are S40362 or S40344, whatever is cheapest on eBay.
- hyperman1 11mo agoThere are 2 interesting articles here. Not only does Ken treat us with a great text, but hidden in footnote 1 is a second gem. Thanks for the early christmas gift!
- tremon 11mo ago> we found that the engineers were automating things by writing their own scripts where in earlier days you might have to go to ask a CAD person to come and do something for you -- and that’s difficult to do. Much easier if the engineers can do it themselves and I think that all came about because we instituted Unix for the 386 design. Again if management knew what we were doing they wouldn’t have let us do it. > He walked across the street from Santa Clara 4 to Amdahl and they had a Unix that ran on 370 computers. So he went over there and got a tape and brought it back, sent it over to Phoenix where the mainframes were and told 'em to load it. They did, not knowing what was on that tape because they never would have done it if they had known It's wild to read that Intel's flagship product, the part that basically defined the next 40 years of computing, might have turned out very differently if management and/or IT knew what the engineers were doing. Everything old is new again, I guess.
- kens 11mo agoAnother interesting thing is that the Unix guru on the 386 project was Pat Gelsinger, who later became Intel's CEO. Gelsinger also converted at least one member of the 386 team to Christianity.
- ermaa 11mo agoGreat work and pleasant reading!
- dcassett 11mo ago> However, the 386 uses a different approach—CMOS switches—that avoids a large AND/OR gate. Standard cell libraries often implement multiplexers using transmission gates (CMOS switches) with inverters to buffer the input and restore the signal drive. This implementation has the advantage of eliminating static hazards (glitches) in the output that can occur with conventional gates.
- zozbot234 11mo agoStatic hazards are most often dealt with by just adding some redundant logic (consensus terms) to the circuit. This can even be done automatically.
- dcassett 11mo ago> (Note 4) But to write a value into the latch, the switch is enabled and its output overpowers the weak inverter. This implementation is sometimes called a "jam latch" (the new value is "jammed" into the inverter loop).
- junto 11mo agoThis reminds me of Adrian Thompson’s (University of Sussex) 1996 paper, “An evolved circuit, intrinsic in silicon, entwined with physics,” ICES 1996 / LNCS 1259 (published 1997), which was extended in his later thesis, “Hardware Evolution: Automatic Design of Electronic Circuits in Reconfigurable Hardware by Artificial Evolution, Springer, 1998”. Before Thompson’s experiment, many researchers tried to evolve circuit behaviors on simulators. The problem was that simulated components are idealized, i.e. they ignore noise, parasitics, temperature drift, leakage paths, cross-talk, etc. Evolved circuits would therefore fail in the real world because the simulation behaved too cleanly. Thompson instead let evolution operate on a real FPGA device itself, so evolution could take advantage of real-world physics. This was called “intrinsic evolution” (i.e., evolution in the real substrate). The task was to evolve a circuit that can distinguish between a 1 kHz and 10 kHz square-wave input and output high for one, low for the other. The final evolved solution: - Used fewer than 40 logic cells - Had no recognisable structure, no pattern resembling filters or counters - Worked only on that exact FPGA and that exact silicon patch. Most astonishingly: The circuit depended critically on five logic elements that were not logically connected to the main path. Removing them should not affect a digital design - they were not wired to the output - but in practice the circuit stopped functioning when they were removed. Thompson determined via experiments that evolution had exploited: - Parasitic capacitive coupling - Propagation delay differences - Analogue behaviours of the silicon substrate - Electromagnetic interference from neighbouring cells In short: the evolved solution used the FPGA as an analog medium, even though engineers normally treat it as a clean digital one. Evolution had tuned the circuit to the physical quirks of the specific chip. It demonstrated that hardware evolution could produce solutions that humans would never invent.
- deleted 11mo ago[deleted]
- rcxdude 11mo agoThough the unreplicable nature of it certainly limited its usefulness. I'd also suspect it would be quite sensitive to temperature.
- 11mo ago
- typeofhuman 11mo agoAh the 386. I still remember our home PC getting an upgrade from the 286. It was a big deal in our home. I watched intently and as close as was permitted. Amazed by all the internals of the cabinet. I was so young. So curious. A seed was planted.