Анатомия микропроцессора Intel 8086

В июне 1978 года был представлен один из самых влиятельных чипов в полупроводниковой индустрии – Intel 8086.

 

Он положил начало архитектуре х86, которая до сих пор доминирует сегодня в настольных и серверных вычислениях.

 

Давайте заглянем вглубь чипа и разберём внутреннее строение и архитектурные особенности этого микропроцессора.

The Intel 8086 microprocessor is one of the most influential chips ever created;

 

 

it started the x86 architecture that still dominates desktop and server computing today.

 

By looking at the chip’s silicon, we can see the internal features of this chip.

На фото ниже изображён кристалл процессора Intel 8086.

 

На фото виден металлический слой чипа, скрывающий кремний под ним.

 

По краям матрицы расположены тонкие провода, обеспечивающие соединение между площадками на чипе и внешними контактами.

 

Силовые и заземляющие площадки имеют по два соединительных провода для поддержания более высокого тока.

 

Микросхема была очень сложной для своего времени и содержала 29 тысяч транзисторов.

 

Обратите внимание на маркировку кристалла в самом низу – на ней указан логотип Intel, модель процессора и год изготовления микросхемы.

The photo below shows the die of the 8086.

 

In this photo, the chip’s metal layer is visible, mostly obscuring the silicon underneath.

 

 

Around the edges of the die, thin bond wires provide connections between pads on the chip and the external pins.

 

 

(The power and ground pads each have two bond wires to support the higher current.)

 

 

The chip was complex for its time, containing 29,000 transistors.

Кристалл процессора Intel 8086

Die photo of the 8086

 

Для исследования кристалла необходимо аккуратно препарировать процессор.

 

Большинство интегральных схем упакованы в эпоксидную смолу, поэтому для растворения корпуса необходимы опасные кислоты.

 

Чтобы избежать повреждения кристалла был использован 8086 с керамическим корпусом, крышка которого легко открывается, обнажая бесстыдную красоту всех его внутренностей.

To examine the die, I started with the 8086 integrated circuit below.

 

Most integrated circuits are packaged in epoxy, so dangerous acids are necessary to dissolve the package.

 

 

To avoid that, I obtained the 8086 in a ceramic package instead. Opening a ceramic package is a simple matter of tapping it along the seam with a chisel, popping the ceramic top off.

На фотографии видна кремниевая матрица, расположенная в центре.

 

Матрица подключена к металлическим контактами микросхемы с помощью крошечных соединительных проводов.

 

Это 40-контактный DIP-корпус, стандартный форм-фактор для микропроцессоров того времени.

 

Обратите внимание, что сама кремниевая матрица занимает небольшую часть размера корпуса.

With the top removed, the silicon die is visible in the center.

 

The die is connected to the chip’s metal pins via tiny bond wires.

 

 

 

This is a 40-pin DIP package, the standard packaging for microprocessors at the time.

 

 

Note that the silicon die itself occupies a small fraction of the chip’s size.

С помощью металлургического микроскопа были сделаны десятки фотографий матрицы чипа, сшитые в одно изображение высокого разрешения с помощью программы Hugin.

Using a metallurgical microscope, I took dozens of photos of the die and stitched them into a high-resolution image using a program called Hugin (details).

Ниже показана фотография кристалла, на которой были удалены слои металла и поликремния, обнажая лежащий под ними кремний с его 29 000 транзисторов.

 

На чипе обозначены основные функциональные блоки, основанные на реверс-инжиниринге Кена Ширриффа.

 

Левая сторона чипа содержит 16-битный канал передачи данных: регистры чипа и арифметические схемы.

 

Сумматор и верхние регистры образуют модуль интерфейса шины, который взаимодействует с внешней памятью, в то время как нижние регистры и АЛУ образуют исполнительный блок, который обрабатывает данные.

 

Правая сторона чипа имеет схему управления и декодирования команд, а также микрокод ROM, который управляет каждой инструкцией.

For the die photo below, the metal and polysilicon layers were removed, showing the underlying silicon with its 29,000 transistors.

 

 

The labels show the main functional blocks, based on my reverse engineering.

 

 

 

The left side of the chip contains the 16-bit datapath: the chip’s registers and arithmetic circuitry.

 

The adder and upper registers form the Bus Interface Unit that communicates with external memory, while the lower registers and the ALU form the Execution Unit that processes data.

 

 

The right side of the chip has control circuitry and instruction decoding, along with the microcode ROM that controls each instruction.

Основные функциональные блоки 8086

Die of the 8086 microprocessor showing main functional blocks

Одной из особенностей 8086 была предварительная выборка инструкций, которая улучшает производительность, извлекая инструкции из памяти до того, как они будут использованы.

 

Это было реализовано блоком интерфейса шины в левом верхнем углу, который обращался к внешней памяти.

 

Верхние регистры включают в себя сегментные регистры 8086, которые обеспечивают доступ к бОльшему адресному пространству, чем 64 килобайта, разрешенные 16-битным адресом.

 

Для каждого доступа к памяти были добавлены сегментный регистр и смещение памяти, чтобы сформировать конечный адрес памяти.

 

8086 вместо АЛУ использовал отдельный сумматор для вычисления адресов памяти, что повышало его производительность.

 

Верхние регистры также включают шесть байт буфера предварительной выборки команд и счётчик команд.

One feature of the 8086 was instruction prefetching, which improved performance by fetching instructions from memory before they were needed.

 

 

 

This was implemented by the Bus Interface Unit in the upper left, which accessed external memory.

 

The upper registers include the 8086’s infamous segment registers, which provided access to a larger address space than the 64 kilobytes allowed by a 16-bit address.

 

 

 

For each memory access, a segment register and a memory offset were added to form the final memory address.

 

For performance, the 8086 had a separate adder for these memory address computations, rather than using the ALU.

 

 

The upper registers also include six bytes of instruction prefetch buffer and the program counter.

В левом нижнем углу микросхемы находится исполнительный блок, который выполняет операции с данными.

 

Нижние регистры включают в себя регистры общего назначения и индексные регистры, такие как указатель стека.

 

16-разрядный АЛУ выполняет арифметические операции (сложение и вычитание), булевы логические операции и сдвиги.

 

АЛУ не осуществляет умножение или деление;

эти операции выполняются через последовательность сдвигов и сложения/вычитания, поэтому они относительно медленны.

The lower-left corner of the chip holds the Execution Unit, which performs data operations.

 

 

The lower registers include the general-purpose registers and index registers such as the stack pointer.

 

 

The 16-bit ALU performs arithmetic operations (addition and subtraction), Boolean logical operations, and shifts.

 

The ALU does not implement multiplication or division;

these operations are performed through a sequence of shifts and adds/subtracts, so they are relatively slow.

Микрокод

Одной из самых сложных частей компьютерного проектирования является создание управляющей логики, которая диктует каждой части процессора что делать, чтобы выполнить определенную команду.

 

В 1951 году Морису Уилксу пришла в голову идея микрокода: вместо построения управляющей логики из сложных схем логических элементов, управляющая логика может быть заменена специальным кодом – микрокодом.

 

Чтобы выполнить инструкцию, компьютер выполняет несколько простых микроинструкций, которые задаются микрокодом.

 

С помощью микрокода построение управляющей логики процессора становится задачей программирования, а не задачей логического проектирования.

Microcode

One of the hardest parts of computer design is creating the control logic that tells each part of the processor what to do to carry out each instruction.

 

 

In 1951, Maurice Wilkes came up with the idea of microcode: instead of building the control logic from complex logic gate circuitry, the control logic could be replaced with special code called microcode.

 

 

 

To execute an instruction, the computer internally executes several simpler micro-instructions, which are specified by the microcode.

 

 

With microcode, building the processor’s control logic becomes a programming task instead of a logic design task.

Микрокод был обычным явлением в мэйнфреймах 60-х годов, но ранние микропроцессоры, такие как 6502 и Z-80, не использовали микрокод, поскольку не имели места для его хранения.

 

Однако в более поздних процессорах, таких как 8086 и 68000, применяли микрокод, используя преимущество увеличения плотности чипов.

 

Это позволило 8086 реализовать сложные инструкции (такие как умножение и копирование строк), без усложнения схемы.

 

 

Недостатком было то, что микрокод занимал бОльшую часть площади кристалла:

схема микрокода показана в правом нижнем углу фотографии матрицы.

Microcode was common in mainframe computers of the 1960s, but early microprocessors such as the 6502 and Z-80 didn’t use microcode because early chips didn’t have room to store microcode.

 

However, later chips such as the 8086 and 68000, used microcode, taking advantage of increasing chip densities.

 

 

This allowed the 8086 to implement complex instructions (such as multiplication and string copying) without making the circuitry more complex.

 

 

The downside was the microcode took a large fraction of the 8086’s die;

the microcode is visible in the lower-right corner of the die photos.

На фотографии выше показана часть микрокода ПЗУ.

 

Под микроскопом видно содержимое микрокода; биты могут быть считаны в зависимости от наличия или отсутствия транзисторов в каждой позиции.

 

ПЗУ состоит из 512 микроинструкций, каждая шириной в 21 бит.

 

Каждая микроинструкция определяет перемещение данных между источником и получателем.

 

Она также определяет микрооперацию, которая может быть командой перехода, операцией АЛУ, операцией с памятью, вызовом подпрограммы микрокода или его учётом.

 

Микрокод довольно эффективен; простые инструкции, такие как инкремЕнт или декремЕнт (увеличивающие или уменьшающие переменные соответственно), состоят из двух микроинструкций, в то время как более сложная команда копирования строки реализована при помощи восьми микроинструкций.

The photo above shows part of the microcode ROM.

 

Under a microscope, the contents of the microcode ROM are visible, and the bits can be read out, based on the presence or absence of transistors in each position. 

 

 

The ROM consists of 512 micro-instructions, each 21 bits wide.

 

Each micro-instruction specifies movement of data between a source and destination.

 

It also specifies a micro-operation which can be a jump, ALU operation, memory operation, microcode subroutine call, or microcode bookkeeping.

 

 

The microcode is fairly efficient; a simple instruction such as increment or decrement consists of two micro-instructions, while a more complex string copy instruction is implemented in eight micro-instructions.

История

Путь к 8086-му был не таким прямым и спланированным как можно было ожидать.

 

Его самым ранним предком был Datapoint 2200, настольный компьютер/терминал, выпущенный в июне 1970 года.

 

Он появился до того, как термин «микропроцессор» вошёл в обиход и в его основе лежала 8-битная плата, полная отдельных интегральных ТТЛ-схем.

 

Параллельно Datapoint вёл переговоры с компаниями Intel и Texas Instruments о замене платы единым чипом, включающим в себя все компоненты.

 

Копируя архитектуру Datapoint 2200, Texas Instruments создала процессор TMX 1795 (в 1971-м), а Intel – процессор 8008 (в 1972-м).

 

Однако Datapoint отклонила эти процессоры, что стало роковым решением.

 

Хотя TI не смогла найти покупателя на TMX 1795 и отказалась от него, Intel решила вывести 8008 на массовый рынок и следом за 8008 последовали 8080 и 8085.

History of the 8086

The path to the 8086 was not as direct and planned as you might expect.

 

Its earliest ancestor was the Datapoint 2200, a desktop computer/terminal from 1970.

 

 

 

The Datapoint 2200 was before the creation of the microprocessor, so it used an 8-bit processor built from a board full of individual TTL integrated circuits.

 

Datapoint asked Intel and Texas Instruments if it would be possible to replace that board of chips with a single chip.

 

Copying the Datapoint 2200’s architecture, Texas Instruments created the TMX 1795 processor (1971) and Intel created the 8008 processor (1972).

 

 

However, Datapoint rejected these processors, a fateful decision.

 

Although Texas Instruments couldn’t find a customer for the TMX 1795 processor and abandoned it, Intel decided to sell the 8008 as a product, creating the microprocessor market. Intel followed the 8008 with the improved 8080 (1974) and 8085 (1976) processors.

Datapoint 2200 computer. Photo courtesy of Austin Roche.

В 1975 году следующим крупным планом Intel стал процессор 8800, который должен был стать главной архитектурой компании в 80-х годах.

 

Этот процессор был назван «микромейнфреймом» из-за его планируемой высокой производительности.

 

Он должен был иметь совершенно новый набор инструкций, предназначенный для языков программирования высокого уровня, таких как Ада и поддерживать объектно-ориентированное программирование и «сборку мусора» на аппаратном уровне.

 

К сожалению, а может и к счастью, этот чип был слишком амбициозным для того времени и сильно отставал от графика.

 

В конечно итоге он был выпущен в 1981 году как iAPX 432 с разочаровывающими показателями и коммерчески провалился.

In 1975, Intel’s next big plan was the 8800 processor designed to be Intel’s chief architecture for the 1980s.

 

 

 

This processor was called a «micromainframe» because of its planned high performance.

 

It had an entirely new instruction set designed for high-level languages such as Ada, and supported object-oriented programming and garbage collection at the hardware level.

 

 

 

 

Unfortunately, this chip was too ambitious for the time and fell drastically behind schedule.

 

It eventually launched in 1981 (as the iAPX 432) with disappointing performance, and was a commercial failure.

Поскольку iAPX 432 отставал от графика, Intel решила в 1975 году, что им нужен простой процессор-затычка для продажи, пока iAPX 432 не будет готов.

 

Intel быстро разработала 16-разрядный 8086-ой, совместимый с 8080-м, выпустив его в 1978 году.

 

У 8086 был большой успех из-за появления IBM PC в 1981-м.

 

К 1983-му году IBM PC был самым продаваемым компьютером и стал стандартом для персональных компьютеров.

 

В IBM PC использовался удешевленный вариант 8086 – 8088 с 8-битной шиной данных.

 

Успех IBM PC сделал архитектуру 8086 стандартом в отрасли, который всё ещё сохраняется 42 года спустя.

Because the iAPX 432 was behind schedule, Intel decided in 1976 that they needed a simple, stop-gap processor to sell until the iAPX 432 was ready.

 

Intel rapidly designed the 8086 as a 16-bit processor somewhat compatible with the 8-bit 8080, released in 1978.

 

The 8086 had its big break with the introduction of the IBM Personal Computer (PC) in 1981.

 

By 1983, the IBM PC was the best-selling computer and became the standard for personal computers.

 

The processor in the IBM PC was the 8088, a variant of the 8086 with an 8-bit bus.

 

The success of the IBM PC made the 8086 architecture a standard that still persists, 42 years later.

IBM PC AT 1984-го года обновился до совместимого, но более мощного процессора 80286.

 

В 1985 году с выходом 80386 линейка х86 перешла на 32-битные вычисления, а затем на 64-битные в 2003 году с выходом AMD64 и первых процессоров Athlon 64.

 

Архитектура х86 до сих пор расширяется множеством дополнительных инструкций, таких как AVX-512, но даже несмотря на все эти изменения, х86 сохраняет совместимость с оригинальным 8086.

The decision to use the 8088 processor cemented the success of the x86 family.

 

 

The IBM PC AT (1984) upgraded to the compatible but more powerful 80286 processor.

 

In 1985, the x86 line moved to 32 bits with the 80386, and then 64 bits in 2003 with AMD’s Opteron architecture. The x86 architecture is still being extended with features such as AVX-512 vector operations (2016). But even though all these changes, the x86 architecture retains compatibility with the original 8086.

Транзисторы

Чип 8086 был построен с использованием транзисторов типа N-МОП.

 

Транзистор можно рассматривать в качестве переключателя, управляющим током между двумя областями, называемыми стоком и истоком.

 

Эти транзисторы построены путём легирования областей кремниевой подложки примесями для создания «диффузионных» областей, обладающих различными электрическими свойствами.

 

Транзистор активируется затвором, изготовленным из особого типа кремния, называемого поликремнием, расположенным над кремниевой подложкой.

 

Транзисторы соединены между собой металлическим слоем сверху, образуя цельную интегральную схему.

 

Современные процессоры могут иметь более десятка металлических слоёв, в то время как 8086 имел всего один.

Transistors

The 8086 chip was built with a type of transistor called NMOS.

 

 

The transistor can be considered a switch, controlling the flow of current between two regions called the source and drain.

 

 

These transistors are built by doping areas of the silicon substrate with impurities to create «diffusion» regions that have different electrical properties.

 

 

The transistor is activated by the gate, made of a special type of silicon called polysilicon, layered above the substrate silicon.

 

 

The transistors are wired together by a metal layer on top, building the complete integrated circuit.

 

 

While modern processors may have over a dozen metal layers, the 8086 had a single metal layer.

Структура МОП-транзистора

Structure of a MOSFET in the integrated circuit.

На фотографии кремния ниже крупным планом показаны некоторые транзисторы из АЛУ.

 

Легированный проводящий кремний имеет тёмно-фиолетовый цвет.

 

Белые полосы – это те места, где поликремниевые линии пересекают кремний, образуя затвор транзистора.

 

Можно насчитать 23 транзистора, образующих 7 вентилей.

 

Транзисторы имеют сложную форму для более эффективного использования.

 

Кроме того, транзисторы имеют разные размеры для обеспечения высокой мощности там, где это необходимо.

 

Обратите внимание, что транзисторы, расположенные рядом друг с другом, могут совместно использовать сток или исток.

 

Круги – это соединения между слоем кремния и металлом, в то время как маленькие квадраты – это соединения между слоем кремния и поликремнием.

The closeup photo of the silicon below shows some of the transistors from the arithmetic-logic unit (ALU).

 

The doped, conductive silicon has a dark purple color.

 

 

The white stripes are where a polysilicon wire crossed the silicon, forming the gate of a transistor.

 

(I count 23 transistors forming 7 gates.)

 

 

The transistors have complex shapes to make the layout as efficient as possible.

 

In addition, the transistors have different sizes to provide higher power where needed.

 

 

 

Note that neighboring transistors can share the source or drain, causing them to be connected together.

 

The circles are connections (called vias) between the silicon layer and the metal wiring, while the small squares are connections between the silicon layer and the polysilicon.

Фото некоторых транзисторов 8086. На снимке были удалены слои металла и поликремния

Closeup of some transistors in the 8086. The metal and polysilicon layers have been removed in this photo.

Заключение

8086 был изначально задуман как процессор-затычка во время, пока Intel не выпустит свой флагманский чип iAPX 432, и был потомком процессора, построенного из платы, полной ТТЛ-микросхем.

 

Но с этого скромного начала архитектура х86 неожиданно оказалась доминирующей в настольных и серверных вычислениях до настоящего времени.

Conclusions

The 8086 was intended as a temporary stop-gap processor until Intel released their flagship iAPX 432 chip, and was the descendant of a processor built from a board full of TTL chips.

 

But from these humble beginnings, the 8086’s architecture (x86) unexpectedly ended up dominating desktop and server computing until the present.

Оригинал (автор Ken Shirriff)

Перевод (переводчик RiddleRider)

Терминологическая обработка и подготовка параллельного текста: Нина Кравченко, Евгений Бартов.