Stories
Slash Boxes
Comments

SoylentNews is people

posted by janrinok on Thursday May 04, @08:54PM   Printer-friendly

https://www.righto.com/2022/11/a-bug-fix-in-8086-microprocessor.html

While reverse-engineering the 8086 from die photos, a particular circuit caught my eye because its physical layout on the die didn't match the surrounding circuitry. This circuit turns out to implement special functionality for a couple of instructions, subtlely changing the way they interacted with interrupts. Some web searching revealed that this behavior was changed by Intel in 1978 to fix a problem with early versions of the 8086 chip. By studying the die, we can get an idea of how Intel dealt with bugs in the 8086 microprocessor.

In modern CPUs, bugs can often be fixed through a microcode patch that updates the CPU during boot.1 However, prior to the Pentium Pro (1995), microprocessors could only be fixed through a change to the design that fixed the silicon.


Original Submission

This discussion was created by janrinok (52) for logged-in users only. Log in and try again!
Display Options Threshold/Breakthrough Mark All as Read Mark All as Unread
The Fine Print: The following comments are owned by whoever posted them. We are not responsible for them in any way.
(1)
  • (Score: 4, Insightful) by bzipitidoo on Friday May 05, @06:46AM (6 children)

    by bzipitidoo (4388) Subscriber Badge on Friday May 05, @06:46AM (#1304856) Journal

    I don't know why Intel didn't ballyhoo more about the massive changes introduced in the Pentium Pro. The Pro, not the Pentium II, is the start of the 686, the first x86 CPU with speculative execution and the accompanying Spectre vulnerability. The Pro is the one that should have been called the Pentium II. Marketing departments are far too eager to puff up the tiniest things as if they were revolutions, quantum leaps, paradigm shifts, movements of the earth, etc. But this? They missed.

    Perhaps it was the laser focus on megahertz as the measuring stick of progress. They never did all that great a job conveying just why the 386 was superior to the 286, likewise why the 286 was superior to the 8086. Only vague assurances that because it was newer, it of course had to be better. The 286 in any case fell short of its promise to bring mainframe style multitasking to the personal computer. The 386 was a lot better in that department, but still had a few bad shortcomings. The 486 remedied the worst of those. Yet even today, from what I hear the x86 architecture still can't do full virtualization. The Pentium II began a few years of huge jumps in raw speed. Pentiums started out at 60 MHz, which was not much of a jump from a 50 MHz 486, and IIRC the Pro wasn't much faster. The Pentium II pushed into the 400 MHz range, then the Pentium III surged past 1GHz.

    • (Score: 2) by turgid on Friday May 05, @10:18AM (1 child)

      by turgid (4318) Subscriber Badge on Friday May 05, @10:18AM (#1304871) Journal

      Then the Pentium IV came along and made it all the way to 2.8GHz but with very poor real world performance and a lot of noise and heat. When the first generation Opterons came out at something like 1.4-1.6GHz, they were 64-bit and faster that the 2.8HGz Pentium IVs for many things, and ran a lot cooler. I had a laptop with an Opteron CPU (Acer Ferrari). It ran Solaris 10 (64-bit) and Slackware (32-bit).

      • (Score: 3, Informative) by owl on Friday May 05, @03:26PM

        by owl (15206) Subscriber Badge on Friday May 05, @03:26PM (#1304897)

        The Opterons and their outrunning the P4's were what led to Intel back licensing the 64 bit extensions from AMD. During this time frame Intel's "64bit" path was the Itanium chip, so they ignored extending x86 to 64bits. AMD grabbed that opportunity for themselves, and the performance of their chips (and the growing realization that Itanium was headed for a similar shipwreck as the iAPX432 chip set) pretty much forced Intel to license the 64-bit extensions from AMD.

    • (Score: 2) by owl on Friday May 05, @03:20PM (3 children)

      by owl (15206) Subscriber Badge on Friday May 05, @03:20PM (#1304896)

      I don't know why Intel didn't ballyhoo more about the massive changes introduced in the Pentium Pro.

      There was a lot of ballyhoo about the Pentium Pro at the time it debuted. But, as well, it debuted close on the heels of the Pentium, at a time when most 'grey-box' PC's were barely starting to offer 486's at reasonable cost, and Pentium's at "give us your first born" costs, and the Pro's pricing was even higher yet. So possibly Intel marketing was thinking the PPro would be a "professional" chip (therefore the naming) that would be built into what, at the time, would have been "workstations" that corporations would purchase in bulk, rather than a chip that would fuel the "grey-box" dos-windows market. This, of course, is speculation (and 30 year old speculation at that).

      The Pro is the one that should have been called the Pentium II.

      Yes, indeed, the PPro is the real "Pentium II" (as in 'second Pentium) chip. But this was also right on the heels of Intel's decision to change from numbers (286, 386, 486) to names (press at the time indicated the ability to trademark the name, but not the number, was why) and it is very possible that marketing just had not gotten their brains straight on how best to handle the newish 'names'.

      The 286 in any case fell short of its promise to bring mainframe style multitasking to the personal computer.

      In large part because no OS writing company actually produced an OS that would take advantage of its "multitasking features". Of course, during this same timeframe was when MS was hard at work at solidifying their stronghold on the low end grey-box OS market, and the high end Unix workstation vendors were each targeting their own silicon (MIPS/SPARC/Alpha/etc.) so there really wasn't anyone to write that OS to use the 286's new features to the fullest. With that said, there were some aspects that would have meant it would have been a big PIA to do so as well.

      • (Score: 2) by turgid on Friday May 05, @05:36PM (1 child)

        by turgid (4318) Subscriber Badge on Friday May 05, @05:36PM (#1304906) Journal

        As far as multi-tasking features for the 286, IBM and Microsoft produced a specific version of OS/2 for the 286 to use those features. The 386 version was different again.

        For general PC use, the problem with the Pentium Pro was that it didn't run some 16-bit code either at all or at full speed (I can't quite remember). It was firmly aimed at running Windows NT on servers. That seriously limited its market. However, then the Pentium II came along, which was based on the Pentium Pro architecture, which added full support for the old 16-bit stuff. I'll need to remind myself what the missing features were. It might have been to do with caching segment registers.

        • (Score: 3, Informative) by owl on Saturday May 06, @04:11PM

          by owl (15206) Subscriber Badge on Saturday May 06, @04:11PM (#1305019)

          For general PC use, the problem with the Pentium Pro was that it didn't run some 16-bit code either at all or at full speed (I can't quite remember).

          Wikipedia [wikipedia.org] cites this as the issue you are likely remembering:

          Despite being advanced for the time, the Pentium Pro's out-of-order register renaming architecture had trouble running 16-bit code and mixed code (8-bit with 16-bit (8/16), or 16-bit with 32-bit (16/32), as using partial registers cause frequent pipeline flushing. Specific use of partial registers was then a common performance optimization, as it incurred no performance penalty on pre-P6 Intel processors; also, the dominant operating systems at the time of the Pentium Pro's release were 16-bit DOS, and mixed 16/32-bit Windows 3.1x and Windows 95 (although the latter requires a 32-bit 80386 CPU, much of its code is still 16-bit for performance reasons, such as USER.exe). This, with the high cost of Pentium Pro systems, led to tepid sales among PC buyers at the time. To fully use the Pentium Pro's P6 microarchitecture, a fully 32-bit operating system is needed, such as Windows NT, Linux, Unix, or OS/2. The performance issues on legacy code were later partly mitigated by Intel with the Pentium II.

          So the issue was quite awful performance on 8/16-bit code, due to all the pipeline flushes that code caused in the new architecture. And, yes, given that the most likely OS most would use on it at the time (Dos/Win 3.1/Win 95) was littered with lots of 16-bit code would have meant few would have seen the potential performance boost over the Pentium.

          And the irony with that issue on the Pro is it was also a foreshadowing of the performance issues that the future Pentium 4 arch. would have with all code. In the Pentium 4's case, it was too many miss-predicted branches in typical code resulting in too many pipeline flushes. And the P4's extremely long pipeline meant a pipe flush was extremely detrimental to performance.

      • (Score: 2) by turgid on Friday May 05, @05:38PM

        by turgid (4318) Subscriber Badge on Friday May 05, @05:38PM (#1304907) Journal

        There was also an SMP bug on the Pentium Pro, IIRC to do with bus locking, which rendered it unreliable in multi-processor systems. There was software mitigation, but it couldn't solve the problem completely.

(1)