15 ms·
Intel 80386, a Revolutionary CPU
- TMWNN 3y agoHow different are the instruction sets of the 80486 and Pentium from the 386? Put another way, had the instruction set been frozen as of the 386 (barring any required changes for 64-bit), would we notice any difference in performance today?
- jstanley 3y agoIn specialised applications, you'd definitely miss AVX and SSE. Beyond that, I'm not sure.
- api 3y agoVector instructions are the obvious thing and being massive gains to media, cryptography, math, AI, graphics, and signal processing. Beyond that there have been a few additions like CMOV (conditional move) that would be missed, though instruction fusion in pipelines can sometimes achieve the same speed up. Lastly you would have to add some atomic instructions to support SMP.
- clausecker 3y agoCMOV is very important for high-performance programming as it greatly simplifies the design of branchless code. There are workarounds, but they either involve conditional branches (you don't want these) or increase the critical path latency significantly (the simplest workaround is to materialise the carry flag using SBB, then use that as a mask).
- pkaye 3y agoI think the early Pentiums are pretty close to the instruction set of the 80386. However there were many iterations to the Pentium that added new instruction like the MMX.
- duskwuff 3y ago80486 and Pentium added relatively few instructions to the core instruction set, but there are a couple of pretty important tools which got added. The ones you'd miss the most would probably be: * CMPXCHG (486). Central to multiprocessor synchronization and locking. * CPUID (P6). Admittedly, if the instruction set were frozen you wouldn't need this... but if not, it's how you detect what CPU you're running on and what it supports. * RDMSR/WRMSR (P6, kernel only). A general-purpose mechanism for adding extra special-purpose registers to the CPU without having to allocate an instruction to each one. * INVD/WBINVD/INVLPG (486, kernel only). This was the first Intel CPU to support cache; these instructions were used to manage it.
- userbinator 3y agoCPUID was available on late-model 486s too.
- deleted 3y ago[deleted]
- deleted 3y ago[deleted]
- tssva 3y agoThe 486 added XADD, BSWAP, CMPXCHG, INVD, WBINVD, INVLPG to the instruction set. The original Pentiums added CPUID, CMPXCHG8B, RDTSC, RDMSR, WRMSR, RSM to the instruction set. Later Pentiums added the MMX instruction set.
- giantrobot 3y agoEven besides new instructions the 486 and then Pentium ran existing x86 code faster than the 386 clock for clock. Various new instructions did add capability but just running existing code faster was a huge win on subsequent chips.
- TacticalCoder 3y agoYeah. Not many new instructions but many instructions required less cycles per instruction and the 486 also got way bigger caches. And the integrated FPU (IIRC the FPU was an add-on for the 386). Switching from a 386 to a 486 was bringing a huge speedup back then.
- epcoa 3y agoYes. For one no one has mentioned that the 386 itself had no on die hardware floating point. That seems like a huge one. Even if only a few instructions were added to the “core” some are huge like CMPXCHG, CMOV and although not an instruction itself the LOCK prefix. But the extensions are huge. We don’t even still use the floating point instructions of the 386/387 era. MMX was pretty lame but SSE and AVX are critical. AES-NI is now necessary for most people with FDE commonplace.
- toast0 3y ago> although not an instruction itself the LOCK prefix. From what I can tell, the 386 had the LOCK prefix. Pin 26 (bottom left) is LOCK# driven by the LOCK prefix [1]. But CMPXCHG is very useful and wasn't available until 486, and Pentium added some other stuff that's important. [1] https://www.eeeguide.com/intel-80386-pin-diagram-description/ https://www.eeeguide.com/intel-80386-pin-diagram-description...
- epcoa 3y agoMy mistake.
- userbinator 3y agoThe 8086 had the LOCK prefix. Intel was thinking of multiprocessing from the beginning.
- kristopolous 3y agoThey were in big trouble then. The entire company was riding on it being great. It could have easily gone awry as it did for Data General, Honeywell, CDC, AST, Tandy, Olivetti, Xerox, DEC Rainbow, AT&T Hobbit, Wang 2200 and Unisys. Strong survivorship bias on this one. Most of the once Titans are in or near the dustbin now, such as SDS, SDC and Fairchild. Intel's history was primarily as a memory manufacturer. They're arguably near a similar fucked position now - effectively 0% of the mobile and home appliance market and getting slaughtered in their only remaining stronghold by NVIDIA, AMD and ARM pillaging their castle. Hopefully they'll squeeze out of this one.
- xattt 3y agoWhat’s their hope right now? Some sort of Quark-derived desktop CPU à la Dothan?
- scrlk 3y agoDoubling down on becoming a competitive foundry and becoming the western equivalent to TSMC. If their 18A process ships on time (2025), there's a chance that they could regain process leadership.
- baq 3y agoFingers crossed but they don’t have a good track record in the last 10 years. The world needs at least two good processes.
- sweetjuly 3y agoI can't imagine the US government letting Intel Foundry Services fail. Not so much in the banking "too big to fail" sense but a "national security interest" sense: not only are semiconductors critical to the domestic economy but having the latest nodes available for military application gives a major leg up. We see this elsewhere too; SkyWater is a kinda terrible fab (their yield for even very old processes is incredibly bad lol) but the DoD is still throwing gobs of money at them to developed their radhard process because they need some domestic, trusted vendor to turn to. IFS might not be competitive but they probably aren't going anywhere, even if they fail to deliver anywhere near on time.
- outside1234 3y agoI forgot how powerful the i960 was - and how this demonstrated that despite that - that compatibility was king.
- kjs3 3y agoSee also: Itanium. Volume customers care about software, not hardware.
- nine_k 3y agoThe i960 apparently had enough embedded use, e.g. in printers, switches, terminals. That is, where binary compatibility did not matter much. We under-appreciate how little binary compatibility matters now, so that you can even develop something on an ARM-based machine and then rebuild and safely deploy to an x64-based machine (usually because it's Node, JVM, Python, etc).
- shrubble 3y agoThe problem with the i960 was that (according to the last comment on https://www.righto.com/2023/07/the-complex-history-of-intel-i960-risc.html https://www.righto.com/2023/07/the-complex-history-of-intel-... ) the 386 team got more resources and a better process node than the i960, which was produced on a 1.0-micron process, which was already old at that time.
- kjs3 3y agoMaybe just me, but this sounds pretty revisionist wrt 'most important'. If the 8086/8088 hadn't stumbled into ubiquity via the IBM PC, there probably never would have been an 80286 much less an 80386. YMMV. That said...the 386 was a world-changing engineering achievement, and as much as I think in a just and fair timeline the 68030 would have taken over the world ( :-) ), you can't discount what Intel did.
- Narishma 3y agoThe 386 maybe, but the 286 was already completed by the time the IBM PC launched if not before.
- kjs3 3y agoThe IBM PC launched in mid 1981, which means the 8088 was fixed in the design at least, what, a year before if not more? The 286 shipped in 1984. Are you saying the 286 was a completed design in, say, 82-83, or that Intel was saying "this is what we think the 286 will look like" in that timeframe?
- Narishma 3y agoThe 286 launched in early 1982, just a few months after the IBM PC. 1984 is when IBM put it in the PC AT.
- exstential 3y agocrazy stuff
- phendrenad2 3y agoThe 386 (and actually, the 286) were great designs because they kept backward compatibility. 386 assembly isn't fun to write, and memory management with segment registers is gross. But backward compat is worth it.
- nu11ptr 3y agoThe 386 was released shortly before I bought my first computer as a teen. At the time, I saw both 286 and 386 PC's on the market, but the latter with a large price premium. I wasn't sure what the difference was at the time, so I bought the 286 system. Within a couple of years I had learned the difference and had large regret I didn't save my money and buy a 386. Shortly after that, I started writing low level assembler including the system bootstrap for a toy OS, which now could not use 32-bit protected mode. In addition, 386-only games started to be released at some point, and so I very much felt left out until I bought my first 486, but that wasn't until years later.
- weinzierl 3y agoThe 80386 DX was a revolutionary CPU. It certainly foreshadowed the 486 and ultimately the Pentium. Most people I know only had a 80386 SX which was still revolutionary but it hid it well by being essentially a glorified (but slower) 80286 on the outside.
- nu11ptr 3y agoThe SX may have been slower, but it could still run all 386 software which was a huge advantage over the 286. I had a 16MHz 286 and I so badly wanted a 386SX 16Mhz so I could run 32-bit software.
- MichaelRo 3y agoSuperseding a ZX-Spectrum, luckily my first PC was a Siemens-Nixdorf 386-SX @ 16 Mhz, no FPU, with 2 Mb of RAM and a 40 Mb hard drive: https://www.ebay.com/itm/172038842293 https://www.ebay.com/itm/172038842293 I did install Windows on it briefly from what I recall but wasn't impressed, there wasn't much to do with it. Games would be pure DOS and for programming I'd use Borland Pascal so again DOS. But as a gaming machine it ran anything I could throw at it at the time, which was 286-games actually. Without realizing I had the absolute best "286" machine I could have, for DOS gaming it is apparently much better to play them on a 386: (Why you don't want a vintage 286 PC -- but I like mine anyway): https://www.youtube.com/watch?v=Htbvm5_NZHc https://www.youtube.com/watch?v=Htbvm5_NZHc
- icedchai 3y agoThe 386SX could do everything the 386DX did, just slower. My first Linux box was a 386SX machine. Before Linux, I ran Coherent on it: https://en.wikipedia.org/wiki/Coherent_(operating_system) https://en.wikipedia.org/wiki/Coherent_(operating_system)
- ianmcgowan 3y agoThere are dozens of us! Dozens! I paid $99 for Coherent because Linux didn't support the fancy RLL hard drive in my work computer. Eventually Linux caught up (or I got a new computer) and Slackware replaced Coherent (for little things like X11, better networking etc.). Those were the days :)
- HankB99 3y agoThe '386 was the first in that line to support demand paged virtual memory which opened up a lot of things an OS could do. IMO that's the most important thing the '386 provided. My second PC was a '386 that ran SCO UNIX. (First was an 8080 based Heathkit H-8 that ran CP/M.)
- blakespot 3y agoInterestingly, I've never owned a 386. I was not much of a DOS/Win PC person until 1994, when I got a 486 to run NEXTSTEP. I've had an i8088, NEC V20, i80286, i80486, AMD 5x86, P4, and then on with the Mac starting in 2006 with (well, just before) Intel Core microarch. In those early days I was more Amiga, ST, etc. ( https://bytecellar.com/the-list/ https://bytecellar.com/the-list/ ) I felt more spiritually connected to the MC68K line back when, for lack of a better term. Amusingly the i386 system I spent the most time with was in college in 1993/4 on a Sun 386 tower running SunOS or Solaris in the APCS lab.
- TristanBall 3y agoWhile I got the 80386 programmers manual as one of my teen birthday presents.. I only ever actually did a little ASM programming but I loved that book anyway and read it a lot. Really annoyed at myself that I got rid of in some fit of "well, I'll never use that again" cleaning some time.. especially given somehow still have "Sendmail, edition 2". I might read the 386 book for nostalgia.. the Sendmail one..well, PTSD isn't something you get nostalgic about!
- steve1977 3y agoI’ll dream in M4 tonight, thank you…
- avidphantasm 3y agoNice write-up. Re-reading about the evolution and complexity of x86 makes me wonder about attempts to modernize x86. Does anyone know how Intel’s x86-S proposal to do a cleaned-up 64-bit architecture has been received? I looked for updates in the media but haven’t been able to find anything.
- lloydatkinson 3y agoI seem to remember I didn’t think it was radical enough but a good start.
- johnklos 3y agoI think the 80386's final design benefitted tremendously from the Motorola 68000, then the m68020. Had Motorola not released a proper 32 bit CPU without compromises, it could be argued that Intel would've had yet another stop-gap after the 80286, which itself wasn't intended to be a proper successor to the 8086/8088. As it is, the 80386 came with a number of compromises. For instance, there was no cache at all beyond a 16 byte instruction prefetch queue, whereas the m68020 had 256 bytes of instruction cache. There were no atomic instructions (LOCK wasn't useful for this), which is why many modern OSes support the 80486 but not the 80386. The fact that compatibility with the 8086 required real mode or VM86 meant that it took quite a long time before software started taking advantage of the 80386's new features. It was an important chip, but it showed us early signs of what we've come to expect from Intel: attempts to create other markets at the expense of, or with the express desire to not compete with, the x86 (the iAPX 432 then, the Itanic twenty years later), the slapdash addition of "features", such as the additions to the 80286, which then were required to be included forevermore as legacy support, the rushing-to-catch-up when other vendors had features that everyone wanted (real, flat 32 bit support then, 64 bit support twenty years later). Still, it's interesting history!
- flashback2199 3y agoIt was a 386 that Linus Torvalds wrote the first Linux kernel on, and support for the new features of the 386 from the start was one of the reasons Linux took off instantly.
- sertsa 3y agoIndeed! My first taste of Linux was Slackware on a 386
- flashback2199 3y agoMore info: "It uses every conceivable feature of the 386 I could find, as it was also a project to teach me about the 386" https://www.cs.cmu.edu/~awb/linux.history.html https://www.cs.cmu.edu/~awb/linux.history.html
- sombragris 3y agoI want to stress how important the 386SX was. My dad wanted a PC for me and asked a friend to build a 286 clone. My friend gave us instead a 386SX. "It's about the same price as an 286 but what you're getting now is a 32-bit CPU, make no mistake about it", he said, and he was right. I was able to run Win 3.11 with it. A 32-bit CPU for the price of a 286 and thus quite affordable? That was genius.
- StillBored 3y agoI really wish people would stop applying the "flat 32-bit" revisionist history to the 386. That wasn't its obvious target, but rather picking up the important "capability" arch features which were seen as the future before unix/c/risc/single supervisor/ideas destroyed the previous 30 years of mainframe/minicomputer OS research in things like security. So, what this article fails to really clarify is that the segment registers were now basically "selector" indexes into tables with base+length (in either pages or bytes) fields, execution permission controls. And these selectors and the GDT/LDT/IDT/TSS/call gates/task gates/etc were all designed to support OSs with a 4 level permissions hierarchy, user/library/driver/kernel (or similar), passing around access selectors which could do things like enforce the size of data structures, etc. And to support this, they added FS/GS so that all the general purpose registers could have their own permissions masks. Pause for a moment and consider that again, Pointers (capabilities, aka selectors) can have not only a base address, but a hardware enforced limit, along with a permissions model that means a function like strcpy() would be incapable of writing to any memory that wasn't the target buffer or part of its own scratch space. Languages/os's could have enforced that called functions were unable to write to the callers stack, or even possibly run in their own completely separate stack. And that is just the beginning. So, here nearly 40 years later the industry is still trying to recover from the mistakes of designing OS's and programming languages around flat memory models and simplistic user/supervisor permissions models. The 386 provided hardware assistance for writing OS's features that to this day aren't common. ex: see CHERI.
- bonzini 3y ago> Pointers (capabilities, aka selectors) can have not only a base address, but a hardware enforced limit There are only 8k possible pointers in the LDT, plus 8k in the GDT. The x86 segmented model isn't really suitable for implementing capabilities.
- StillBored 3y agoSure, 40 years later, but for comparison my computer in 1990 had 1MB ram. Its replacement had 8M iirc a year or two later. I remember in the later 1990's having a problem with my socket7 computer because the caches couldn't physically tag more than 64M of ram, so everything above that was uncached. Linux of the mid 1990's would print a half dozen lines when one typed 'ps'. A limitation of 8 thousand different protection ranges would have been a lot for a program utilizing a few hundred KB of actual data and coming from a system were it was a PITA to access a data structure > 64K. It might not have been enough to do a super fine grained implementation, but it was more than enough for the time period, and had any significant OS's used it in a meaningful way I'm sure it would have been extended when limitations here hit, as was everything else in the following products. Oh, and also one could have reloaded the GDT, or swapped some number of LDTs at some boundary if needed. It wouldn't have really been much more disruptive in the 1980s than switching the page tables on task switch, like every modern OS.
- StillBored 3y agoIts nice that the 286 gets some love here too, that chip was really underrated considering how much better its IPC was vs its predecessors, which is largely the main ding against the 386. Running existing 16 bit code its IPC was basically the same as the 286, and given its initial 12Mhz clock rate, was pretty underwhelming. It wasn't until the clock really started to scale and people started using the 32-bit capabilities that it was anything more than an expensive dos/286 competitor.
- doubloon 3y agoSo many times it is some small team working on a unknown disregarded project, from fallout to the mac intel transition, that a company is saved by. The best companies surely must know this and knowing it, allow these tiny disregarded projects to exist on purpose.
- atan2 3y agoI just found some other great articles on this website as well.
- drooopy 3y agoI came here to say that. Lots of good articles in there on retro systems.
- hulitu 3y agoI'm shocked nobody mentions it: 386 added the turbo button.
- M95D 3y agoI saw a 8088 that had a frequency switch, but it was on the back and not labeled as "Turbo".
- mkl 3y agoBecause it's not true. I had a 286 with a turbo button. https://en.wikipedia.org/wiki/Turbo_button https://en.wikipedia.org/wiki/Turbo_button
- Narishma 3y agoThat was already present in 286 and even higher clocked 8088 and 8086 machines.
- cturner 3y agoIntel evolved the x86 line beyond 386, into Pentium Pro and then to amd64. Why did Motorolla not do the same with the 68k? I have seen discussion that treats it as assumed knowledge that 68k was obsolete and needed to be replaced by powerpc. But it seems like conjecture - I have not seem technical arguments, and 68k seems like a cleaner architecture to ride forward than post-286 x86.
- ndsipa_pomu 3y agoNot enough computers were sold using 68k to provide enough demand for the chips and so it couldn't compete with Intel on price and couldn't justify spending lots on research and development. Intel had the PC-compatible market and thus a huge demand for its chips.
- xtracto 3y agoHere's my 3rd world country perspective, from someone growing in the 80s: We never had intel chips. They were expensive. I had a Texas Instruments 286 and a cyrix 486 years later. The computer in my Dad's office were all "pc compatible" . This was a university (biology department in a God forsaken poor small city in Mexico). Someone got it bought because it was going to "change the world" (oh boy). We played TDCGA.EXE and PRINCE.EXE from its 2 51/4 floppy drives. No HDD. We heard about apple's, commodore's and other crazy computers, but they were for "gringos" or rich people. At the same time, we shared (pirated) software as if there was no tomorrow. Spread like wildfire. As and played the heck out of ID shareware. Then you had the Mexican middle upper class: whose dad bought Macintosh one of those others. They NOW had to spend all this money to get it to do something (buy software). Nobody was pirating/sharing programs, and the PC ones just didn't work. So a virtuous cycle continued and we kept buying x86. Great memories! I'm glad I was part of that dawn of PC.
- tyingq 3y ago>Were there any commercial efforts to build IDE, VESA or PCI systems around a 68k processor? Sort of. There was the VME bus. An attempt to have a standards based bus that would work across vendors, and also for the the 88k cpu. It wasn't wildly successful, but was mildly successful.
- mrnage 3y agoWebsite is down, got a 502; see mirror: https://web.archive.org/web/20231106023033/https://www.xtof.info/intel80386.html https://web.archive.org/web/20231106023033/https://www.xtof....
- aap_ 3y agoI always found it interesting how the 286 and 386 seem to have been designed with Multics in mind. The hardware is not a perfect match, but it's weirdly close.
- commandlinefan 3y ago> Bob Childs, one of the architects of the 286, worked underground to lay out some ideas of what could be a 32-bit extension to the 286. After about six months How the hell does _that_ happen? I've never had a job in 30 years where I didn't have somebody breathing down my neck to produce something tangible every couple of _days_.