Intel 80286
An 8MHz Intel 80286 Microprocessor
|
|
Produced | From 1982 to early 1990s |
---|---|
Common manufacturer(s) | |
Max. CPU clock rate | 6 MHz (4 MHz for a short time) to 25 MHz |
Instruction set | x86-16 (with MMU) |
Model | 80286 Series |
Predecessor | 8086, 8088 (while 80186 was contemporary) |
Successor | Intel 80386 |
Co-processor | Intel 80287 |
Package(s) |
The Intel 80286[1] (also marketed as the iAPX 286[2] and often called Intel 286) is a 16-bit microprocessor that was introduced on 1 February 1982. It was the first 8086 based CPU with separate, non-multiplexed, address and data buses and also the first with memory management and wide protection abilities. The 80286 used approximately 134,000 transistors in its original nMOS (HMOS) incarnation and, just like the contemporary 80186,[3] it could correctly execute most software written for the earlier Intel 8086 and 8088 processors.[4]
The 80286 was employed for the IBM PC/AT, introduced in 1984, and then widely used in most PC/AT compatible computers until the early 1990s.
Contents
History and performance
After the 6 and 8 MHz initial releases, Intel subsequently scaled it up to 12.5 MHz. AMD and Harris later pushed the architecture to 20 MHz and 25 MHz, respectively. Intersil and Fujitsu also designed fully static CMOS versions of Intel's original depletion-load nMOS implementation, largely aimed at battery powered devices.
On average, the 80286 was reportedly measured to have a speed of about 0.21 instructions per clock on "typical" programs,[5] although it could be significantly faster on optimized code and in tight loops as many instructions could execute in 2 clock cycles. The 6 MHz, 10 MHz and 12 MHz models were reportedly measured to operate at 0.9 MIPS, 1.5 MIPS and 2.66 MIPS respectively.[6]
The later E-stepping level of the 80286 was free of the several significant errata that caused problems for programmers and operating system writers in the earlier B-step and C-step CPUs (common in the AT and AT clones).[7]
Architecture
The 80286 was designed for multi-user systems with multitasking applications, including communications (such as automated PBXs) and real-time process control. It had 134,000 transistors and consisted of four independent units: address unit, bus unit, instruction unit and execution unit organized into a loosely coupled (buffered) pipeline just as in the 8086. The significantly increased performance over the 8086 was primarily due to the non-multiplexed address and data buses, more address calculation hardware (most importantly a dedicated adder) and a faster (more hardware based) multiplier.[8] It was produced in a 68-pin package including PLCC (Plastic Leaded Chip Carrier), LCC (Leadless chip carrier) and PGA (Pin Grid Array) packages.[9]
The performance increase of the 80286 over the 8086 (or 8088) could be more than 100% per clock cycle in many programs (i.e. a doubled performance at the same clock speed). This was a large increase, fully comparable to the speed improvements around a decade later when the i486 (1989) or the original Pentium (1993) were introduced. This was partly due to the non-multiplexed address and data buses but mainly to the fact that address calculations (such as base+index) were less expensive. They were performed by a dedicated unit in the 80286 while the older 8086 had to do effective address computation using its general ALU, consuming several extra clock cycles in many cases. Also, the 80286 was more efficient in the prefetch of instructions, buffering, execution of jumps, and in complex microcoded numerical operations such as MUL/DIV than its predecessor.[8]
The intel 80286 had a 24-bit address bus and was able to address up to 16 MB of RAM, compared to 1 MB for its predecessor. However cost and initial rarity of software using the memory above 1 MB meant that 80286 computers were rarely shipped with more than one megabyte of RAM.[8] Additionally, there was a performance penalty involved in accessing extended memory from real mode, as noted below.
Features
Protected mode
The 286 was the first of the x86 CPU family to support protected mode. In addition, it was the first commercially available microprocessor with on-chip MMU capabilities. (Systems using the contemporaneous Motorola 68010 and NS320xx could be equipped with an optional MMU controller.) This would allow IBM compatibles to have advanced multitasking OSes for the first time and compete in the Unix-dominated server/workstation market.
Several additional instructions were introduced in protected mode of 80286, which are helpful for multitasking operating systems.
Another important feature of 80286 is Prevention of Unauthorized Access. This is achieved by:
- Forming different segments for data, code, and stack, and preventing their overlapping
- Assigning Privilege levels to each segment. Segment with lower privilege level cannot access the segment with higher privilege level.
In 80286 (and in its co-processor Intel 80287), arithmetic operations can be performed on the following different types of numbers:
- unsigned packed decimal,
- unsigned binary,
- unsigned unpacked decimal,
- signed binary, and
- floating point numbers.
By design, the 286 could not revert from protected mode to the basic 8086-compatible "real mode" without a hardware-initiated reset. In the PC/AT introduced in 1984, IBM added external circuitry as well as specialized code in the ROM BIOS to enable special series of program instructions to cause the reset, allowing real-mode reentry (while retaining active memory and control). Though it worked correctly, the method imposed a huge performance penalty.
In theory, real-mode applications could be directly executed in 16-bit protected mode if certain rules were followed; however, as many DOS programs broke those rules, protected mode was not widely used until the appearance of its successor, the 32-bit Intel 80386, which was designed to go back and forth between modes easily. When Intel designed the 286, it was not designed to be able to multitask real-mode applications; real mode was intended to be a simple way for a bootstrap loader to prepare the system and then switch to protected mode.
OS support
The protected mode of the 80286 was not utilized until many years after its release, in part because of the high cost of adding extended memory to a PC, but also because of the need for software to support the large user base of 8086 PCs. For example, in 1986 the only program that made use of it was VDISK, a RAM disk driver included with PC DOS 3.0 and 3.1. A DOS could utilize the additional RAM available in protected mode (extended memory) either via a BIOS call (INT 15h, AH=87h), as a RAM disk, or as emulation of expanded memory.[8] The difficulty lay in the incompatibility of older real mode DOS programs with protected mode. They simply could not natively run in this new mode without significant modification. In protected mode, memory management and interrupt handling were done differently than in real mode. In addition, DOS programs were not allowed to access or modify data and code segments that did not belong to them, as they could in real mode. The choice that OS developers faced was either to start from scratch and create an OS that would not run the vast majority of the old programs, or to come up with a version of DOS that was slow and ugly but would still run a majority of the old programs. Protected mode also did not provide a significant enough performance advantage over the 8086-compatible real mode to justify supporting its capabilities. Registers were still 16-bit and when put into protected mode, the programmer was forced to use a memory map composed of 64k segments just like in real mode.[10]
In January 1985, Digital Research previewed the Concurrent DOS 286 operating system made in cooperation with Intel. The product would function strictly as an 80286 native mode operating system, allowing users to take full advantage of the protected mode to perform multi-user, multitasking operations while running 8086 emulation.[11] This worked on the B-1 prototype step of the chip, but Digital Research discovered problems with the emulation on the production level C-1 step in May, which would not allow Concurrent DOS 286 to run 8086 software in protected mode. The release of Concurrent DOS 286 was delayed until Intel would develop a new version of the chip.[11] In August, after extensive testing E-1 step samples of the 80286, Digital Research acknowledged that Intel corrected all documented 286 errata, but said there were still undocumented chip performance problems with the prerelease version of Concurrent DOS 286 running on the E-1 step. Intel said the approach Digital Research wished to take in emulating 8086 software in protected mode differed from the original specifications. Nevertheless, they implemented minor changes in the microcode that would allow Digital Research to run emulation mode much faster, incorporated into the E-2 step.[7] Named IBM 4680 OS, IBM originally chose DR Concurrent DOS 286 as the basis of their IBM 4680 computer for IBM Plant System products and Point-of-Sale terminals in 1986.[12] The same limitations affected Digital Research's FlexOS 286 version 1.0, a derivation of Concurrent DOS 286, developed in 1986, introduced in January 1987, and later adopted by IBM for their IBM 4690 OS.
The problems led to Bill Gates famously referring to the 80286 as a "brain dead chip",[13] since it was clear that the new Microsoft Windows environment would not be able to run multiple MS-DOS applications with the 286. It was arguably responsible for the split between Microsoft and IBM, since IBM insisted that OS/2, originally a joint venture between IBM and Microsoft, would run on a 286 (and in text mode).
Other operating systems that used the protected mode of the 286 were Microsoft Xenix (around 1984),[14] Coherent,[15] and Minix.[16] These were less hindered by the limitations of the 80286 protected mode because they did not aim to run MS-DOS programs. In its successor 80386 chip, Intel enhanced the protected mode to address more memory, but also added the separate virtual 8086 mode, which had much better MS-DOS compatibility, in order to satisfy the diverging needs of the market.[17]
See also
- U80601 – Almost identical copy of the 80286 manufactured 1989/90 in the German Democratic Republic.
- LOADALL – Undocumented 80286/80386 instruction that could be used to gain access to all available memory in real mode.
- Windows/286
- iAPX, for the iAPX name
References
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Official Intel iAPX 286 programmers' manual (page 1-1)
- ↑ A simpler cousin in the 8086-line with integrated peripherals, intended for embedded systems.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ 7.0 7.1 Lua error in package.lua at line 80: module 'strict' not found.
- ↑ 8.0 8.1 8.2 8.3 Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ 11.0 11.1 Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ http://www.tenox.net/docs/microsoft_xenix_30_286_press_release.pdf
- ↑ http://textfiles.com/internet/FAQ/coherent.faq
- ↑ http://minix.net/minix/minix.html
- ↑ Charles Petzold, Intel's 32-bit Wonder: The 80386 Microprocessor, PC Magazine, November 25, 1986, pp. 150-152
External links
Wikimedia Commons has media related to [[commons:Lua error in Module:WikidataIB at line 506: attempt to index field 'wikibase' (a nil value).|Lua error in Module:WikidataIB at line 506: attempt to index field 'wikibase' (a nil value).]]. |
- Intel Datasheets
- Intel 80286 and 80287 Programmer's Reference Manual at bitsavers.org
- Intel 80286 Programmer's Reference Manual 1987(txt). Hint: use e.g. Hebrew (IBM-862) encoding.
- Linux on 286 laptops and notebooks
- Intel 80286 images and descriptions at cpu-collection.de
- CPU-INFO: 80286, in-depth processor history
- Overview of all 286 compatible chips
Lua error in package.lua at line 80: module 'strict' not found.