Intel x86 Architecture

From AMC-OS Developers
Revision as of 16:53, 22 August 2012 by Kindman (talk | contribs) (Added titles)
Jump to navigation Jump to search

Intel 8086

Capabilities and memory model

The Intel x86 architecture began in 1978 with the i8086, a 16-bits processor. Typically clocked at a 4.77MHz frequency, it was able to natively handle 1MB of memory using a 20-bit address bus, with a 16-bit data bus (eventually an 8-bit data bus with the "low-cost" 8088). Memory was divided in 10 segments of RAM (640KB) whilst the 6 remaining segments were reserved for BIOS and ROMs (video, controllers, bundled BASIC...).

ISA bus and basic I/O components

In the IBM PC, the processor was associated to an 8-bit external bus to manage I/O devices (later called ISA bus by competitors), and especially :

  • an i8259 programmable interrupt controller, which allowed up to 8 peripherals to interrupt the execution of the CPU to run a specific routine (called IRQ (Interrupt Request)), like echoing a letter when a key is pressed on a keyboard.
  • an i8253 programmable timer, clocked at 14.31818 MHz, which provided timing functions, and audio speaker output.
  • an i8042 keyboard controller, which also supported several specific system I/O functions.
  • one or two i8250 serial port controller (generally for mice, modem...)
  • an i8255 parallel port controller (generally for printers)
  • a BIOS containing system bootup check and basic programming API.

You could also find a floppy disk controller, a hard disk controller on later XT models, a video card and ISA expansion slots to add new functionalities.

Widely introduced with the IBM PC in 1981 then PC/XT in 1983, clones were built on the same model leading to the IBM PC Compatible standard, based on the same architecture and components.

Intel 80286

Capabilities and memory model

The next major step was with the introduction of the Intel 80286 in 1982, leading to the IBM PC/AT and subsequent PC/AT compatible computers. Generally clocked at 12MHz, the 80286 had a 24-bit memory address bus allowing it to address up to 16MB of memory. However, as the memory model introduced in the 8086 allowed only use of 16 segments of 64KB (1MB limit), a new operating mode called protected mode (opposed to real mode) was introduced.

Protected mode

The protected mode allows memory segments to be dynamically defined by the system by using segment selectors pointing to a table of descriptors. It also included the possibility to define levels of execution, differenciation between code and data, and between user-level and system-level.

I/O extensions

Intel 80386

Introducing 32-bit protected mode