Intel 80286

Материал из Национальной библиотеки им. Н. Э. Баумана
Последнее изменение этой страницы: 17:54, 23 июня 2016.
Open book.svg Авторство
Иванюшенко В.О.
Согласовано: 15.04.2016
Intel 80286
Файл:KL Intel i286.jpg
Intel 80286 (8 МГц)
Производство: С 1 февраля 1982 по начало 1990-х
Производители:
  • Intel Corp.
  • AMD
  • Siemens AG
  • Harris Corporation
  • Fujitsu
Частота CPU: 6 MHz — 20 MHz
Технология производства: 1.5 мкм
ISA: x86-16 (с MMU)
Предшественник Intel 8086
Преемник Intel 80386
Варианты корпуса:

Intel 80286 - 16-битный микропроцессор второго поколения архитектуры x86, выпущенный компанией Intel 1 февраля 1982 года. Является развитием процессоров 8086/88, а не 80186/188, которые вышли только через полгода после 80286. Процессор 80286 стал серьезным шагом вперед. Всего через год на его базе был создан персональный компьютер IBM PC/AT, предоставивший в распоряжение пользователя вычислительные мощности средней ЭВМ. С появлением виртуального режима стало возможным создавать на базе 80286 системы с разделением ресурсов, что раньше было прерогативой больших машин. В микропроцессоре было также реализовано управление памятью. .

Изменения

Регистры дескрипторной таблицы
Регистры дескрипторной таблицы

От предшественников отличают следующие возможности:

  1. Для обеспечения новых способов адресации (адресуемый больший объем памяти) сделали "защищенный" режим работы. "Реальный" режим работы - обеспечивал обработку совместно с 8080.
  2. Прием медленных данных, следовательно простой CPU.
  3. 24-битная шина адреса, позволявшая адресовать до 16 Мб физической памяти в защищенном режиме.
  4. Расширенная система команд (16 новых инструкций).
  5. К 14 регистрам процессора Intel 8086 были добавлены 11 новых регистров, необходимых для реализации защищённого режима и других функций. А именно:
    1. регистр слова состояния машины, 16 бит (MSW);
    2. регистр задачи, 16 бит (TR);
    3. регистры дескрипторной таблицы, один 64-битный и два 40-битных (GDTR, IDTR, LDTR);
    4. 6 регистров расширения сегментных регистров, 48 бит.

Технические характеристики процессора

  • Разрядность регистров: 16 бит
  • Разрядность шины данных: 16 бит
  • Разрядность шины адреса: 24 бит
  • Объём адресуемой памяти: 16 Мбайт
  • Объём виртуальной памяти: 1 Гбайт
  • Количество транзисторов: 134 000
  • Техпроцесс (нм): 1500 (1,5 мкм)
  • Площадь кристалла: 49 мм²
  • Напряжение питания: +5 В
  • Разъём: 68-pin
  • Корпус: 68-контактный керамический LCC (R80286), пластиковый LCC (N80286), керамический PGA (CG80286 или A80286)
  • Процессор выпускался с частотами от 6 до 20 МГц и тактовая частота (МГц) зависела от маркировки:
    • 80286-6 — 6 МГц,
    • 80286-8 — 8 МГц,
    • 80286-10 — 10 МГц,
    • 80286-12 — 12,5 МГц

Режимы работы процессора Intel 80286

Реальный режим

Реальный режим обеспечивал совместимость с процессорами x86, выпускавшимися до этого, то есть процессор мог выполнять программы, предназначенные для Intel 8086/8088/8018x без повторного ассемблирования или с переассемблированием с минимальными модификациями. Использовался режим реального адреса. В формировании адреса участвовали только 20 линий шины адреса, поэтому максимальный объём адресуемой памяти, в этом режиме, остался прежним — 1 Мбайт. Переключение из реального режима в защищённый происходит программно и относительно просто, однако для обратного перехода необходим аппаратный сброс процессора, который в IBM PC-совместимых машинах осуществлялся обычно с помощью контроллера клавиатуры. Для использования защищённого режима необходима многозадачная операционная система, например Microsoft Windows 2.0, IBM OS/2 или UNIX.

Защищенный режим

Упрощённая схема адресации в защищённом режиме

Суть защищённого режима заключается в следующем. Программист и разрабатываемые им программы используют логическое адресное пространство (виртуальное адресное пространство). В защищённом режиме процессор мог адресовать до 1 Гбайт виртуальной памяти (при этом объём реальной памяти составлял не более 16 Мбайт), за счёт изменения механизма адресации памяти (режим виртуального адреса). Логический адрес преобразуется в физический адрес автоматически с помощью схемы управления памятью (MMU). Благодаря защищённому режиму, в памяти можно хранить только ту часть программы, которая необходима в данный момент, а остальная часть могла храниться во внешней памяти (например, на жёстком диске).

Режимы адресации

Режим реального адреса

Адресная шина процессора 80286 имеет ширину 16 бит, к тому же известно, что максимальное двоичное число длиной в два байта равно 216 или 64 Кбайт и, если адрес задается таким числом, то, вроде бы, пространство ОЗУ, с которым может работать процессор, не должно превышать 64 Кбайт. С другой стороны, 1 Мбайт памяти можно адресовать с помощью двоичного числа длиной 20 бит (220). Как быть?

Формирование адресов байта или слова

Разработчики 80286 решили проблему следующим образом: полный адрес ячейки памяти состоит из комбинации двух 16-разрядных чисел, причем одно из них предназначили для адресации внутри некоторой области ОЗУ размером 64 К байта, а второе — для локализации этой области во всем пространстве ОЗУ. Область, внутри которой происходит адресация, называется сегментом, а адрес внутри сегмента — внутрисегментным смещением. Адрес, локализующий положение сегмента в оперативной памяти, содержится в одном из специальных сегментных регистров процессора, но он тоже 16-разрядный. Для того, чтобы при помощи этого адреса можно было перекрыть все пространство ОЗУ, со стороны младшего байта его дополняют четырьмя нулями. Например, если содержимое сегментного регистра: 0001.1101.1000.1111 (или 1D8F16) то адрес начала соответствующего сегмента будет равен: 0001.1101.1000.1111.0000 (или 1D8F016). Таким образом можно искусственно разделить всю память на сегменты, начинающиеся по адресам, кратным 1610. Предположим, что внутрисегментное смещение нашей ячейки задано числом 1001.1011.0010.0101 или 9В2516, в этом случае ее реальный адрес будет равен сумме адреса сегмента и внутрисегментного смещения: 1D8F016+9B2516 = 2701516 (см. рис.). Выполняемая программа может обращаться к любому из четырех сегментов, именуемых: текущий сегмент кода (то есть программы), текущий сегмент данных, текущий сегмент стека и текущий дополнительный сегмент.

Режим виртуального адреса

Мы рассмотрели режим реального адреса, позволяющий обращаться к ОЗУ объемом до одного мегабайта при ширине адресной шины процессора 80286 всего 16 разрядов. Что же касается адресации оперативной памяти "за границей" одного мегабайта, то здесь разработчикам i286 помог принцип виртуальной организации памяти.

Преобразование адреса в виртуальном режиме

Как и в случае реального адреса, результирующий физический адрес памяти является суммой некоторой базы и смещения. Со смещением нам, в общем, уже все ясно, а вот базовый адрес определяется сложнее. Сегментный регистр содержит не само число, из которого путем добавления четырех нулей справа получается адрес сегмента, а некоторый идентификатор, называемый селектором. Он состоит из трех полей (см. рисунок), два из которых - индикатор TI и индекс - определяют адрес искомого сегмента по специальным таблицам, находящимся в ОЗУ. Каждый элемент любой из этих таблиц, называемый дескриптором, имеет длину 64 разряда, 24 из них отведены под базовый адрес, а остальные для нас пока интереса не представляют. Если при вычислении адреса индикатор селектора TI равен нулю, то процессор обращается к так называемой глобальной дескрипторной таблице, которая может использоваться всеми запущенными задачами. В противном случае (при TI = 1) используется одна из локальных дескрипторных таблиц. Дело в том, что если глобальная дескрипторная таблица (GDT) в системе всего одна, то локальная (LDT) - для каждой из задач своя. Сумма смещения и базового адреса, взятого из дескрипторной таблицы, дает в результате искомый физический адрес в ОЗУ (см. рисунок). Длина адреса в таком случае составляет целых 24 бита, а это позволяет обращаться уже к 16 Мбайтам оперативной памяти.

Итак, аппаратно-реализуемое адресное пространство i286 составляет 16 Мбайт, но стоит заметить, что длина индекса в селекторе равна 13 разрядам, а размер сегмента равен 216 байтам. Таким образом, каждая задача, используя свою LDT, получает адресное пространство 229 байт, а в сумме с областью, определяемой GDT, эта величина составляет 230 байт или 1 Гбайт.

Кольца защиты

Кольца защиты

Защита от выполнения привилегированных команд, защита доступа к данным и защита сегментов кода в процессоре Intel 80286 была реализована путём введения защиты по привилегиям. Было выделено 4 уровня привилегий, так называемые кольца (Ring) защиты — от самого привилегированного 0 уровня (Ring 0), предназначенного для ядра системы, до наименее привилегированного 3 уровня (Ring 3), предназначенного для прикладных программ.

Прерывания

В случае i286 система прерываний построена следующим образом. Соответствующие сигналы от устройств, входящих в вычислительную систему, могут поступать на один из двух входов процессора: NMI или INTR, причем вход NMI обладает безусловным приоритетом, так как сюда поступают сигналы только о катастрофических событиях, например, в случае неожиданного отключения питания. На вход INTR поступают прерывания не столь значительные, и процессор может их проигнорировать, если он в это время занят чем-то более важным. О состоянии большой занятости сигнализирует флажок разрешения прерываний IF: если он равен нулю, то Процессор на "звонки" не отвечает.

Посмотрим, что же происходит, когда IF = 1 и на вход INTR поступил сигнал прерывания. Сначала процессор приостанавливает выполнение текущей программы и запоминает промежуточные результаты в стеке, необходимые для восстановления статус кво. Затем он посылает устройству-возмутителю спокойствия запрос о причинах прерывания, В ответ может быть получено некоторое число в диапазоне от 0 до 255 - такое количество вариантов сообщения внешнего устройства разработчики предусмотрели для указания процессору, какие шаги следует предпринять в каждом конкретном случае. Число от 0 до 255 определяет тип прерывания, а инструкции о том, как процессору реагировать на тот или иной тип, содержатся в специальных программах, называемых процедурами прерываний. Адреса процедур находятся в специальной таблице, состоящей, как вы уже догадались, из 256 элементов, причем каждый элемент содержит соответствующие значения регистров IP и CS, Начальный адрес таблицы в ОЗУ - 0. По окончании процедуры прерывания процессор возвращает из стека промежуточные данные и продолжает выполнять прерванную программу с точки прерывания.

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

Номер Реальный режим Виртуальный режим
0 Особый случай ошибки деления Особый случай ошибки деления
1 Прерывание пошаговой работы Прерывание пошаговой работы
2 Немаскируемое прерывание Немаскируемое прерывание
3 Контрольный останов Контрольный останов
4 Особый случай переполнения Особый случай переполнения
5 Особый случай превышения диапазона Особый случай превышения диапазона
6 Особый случай недействительного кода операции Особый случай недействительного кода операции
7 Особый случай отсутствия сопроцессора Особый случай отсутствия сопроцессора
8 Особый случай слишком малой IDT Особый случай слишком малой IDT
9 Особый случай превышения сегмента сопроцессором Превышение сегмента сопроцессором
10 Зарезервировано Недействительный TSS
11 Зарезервировано Отсутствие сегмента
12 Зарезервировано Особый случай стека
13 Особый случай превышения сегмента Особый случай защиты
14 Зарезервировано Зарезервировано
15 Зарезервировано Зарезервировано
16 Особый случай сопроцессора Особый случай сопроцессора
.
. Зарезервированы Зарезервированы
.
31

Приоритеты

77.png

Безусловным авторитетом для процессора является сигнал о неминуемой катастрофе, попадающий на вход NMI. А вот как быть с прерываниями, если у входа INTR «стучатся» сразу два–три устройства, и флажок IF равен единице, то есть процессор обязан как-то на это реагировать? Одновременная обработка нескольких прерываний – задача непосильная для i286, да и бессмысленная, значит процессору придется каким-то образом отвечать на поступившие сигналы по очереди. В самом простом случае каждому устройству, входящему в систему, присваивается свой уникальный уровень приоритета, а все шины прерываний подключаются к контроллеру (рис.). Теперь, если, к примеру, два прерывания возникнут одновременно, контроллер отдаст предпочтение сигналу от устройства с наивысшим приоритетом, а второе прерывание запомнит и выдаст его на вход INTR только после окончания процедуры обработки первого прерывания.

Но вот происходит ситуация, которая требует специального механизма для своего разрешения: имеется ввиду возникновение сигнала прерывания более высокого приоритета в то время, когда процессор занят обработкой менее «значимого» прерывания. Здесь всё будет зависеть от состояния флажка разрешения прерываний. Если IF = 1‚ текущая процедура обработки останавливается, и запускается процедура обработки прерывания с более высоким приоритетом. В том же случае, когда IF = 0, процессор, как ему и положено, на «звонки» не откликается, сколь бы высок не был приоритет у просителя. Уровень приоритета назначается, в основном, из соображений, имеющих отношение к конструктивным особенностям, а также к быстродействию соответствующих устройств. Особенно наглядно это можно пояснить на примере сравнения работы стримера (накопителя на магнитной ленте) и жесткого диска. Если стример устройство само по себе достаточно медленное – функционирует в старт/стопном режиме, и «вклинивание» чужого прерывания в момент записи или считывания информации практически не влияет на его производительность, то жесткий диск не имеет возможности мгновенно «замереть» в случае прерывания и потом «отмереть», когда процедура обработки прерывания завершится. Он продолжает вращаться с постоянной скоростью, и в момент возврата из процедуры прерывания под его головками совсем не обязательно будет нужный сектор. Отсюда очевидно, что дисковый накопитель необходимо наградить более высоким приоритетом, чем стример или клавиатуру. Кстати, о клавиатуре: пользователь вообще не заметит, если символ на экране монитора задержится на пару миллисекунд.

Системная синхронизация

Intel8.png

Как Вы знаете, внутренняя адресная шина i286 – 16–разрядная, а виртуальный адрес выражается 24-битным числом. Налицо явное противоречие. Так ли это? Если посмотреть на процессор снаружи (с точки зрения периферийных устройств), то можно заметить, что он соединен с внешним миром посредством шины, состоящей из трех групп проводников (рис.). Одну из групп составляет адресная шина, состоящая из 24 линий (A0-A23). Таким образом, физический адрес, будь то в реальном или в виртуальном режиме, не превышает ширины внешней шины адреса. Во вторую группу входят 16 линий шины данных (D0-D15), все остальное приходится на шину управления. Сюда входят линии состояния процессора, линия запроса прерывания и т.д.

Intel9.png

Все устройства управления внешними устройствами – контроллеры – также подключены к шине, причем если контроллеру дисков или видеоадаптеру отводятся фиксированные адреса, то оперативная память, являющаяся внешним по отношению к процессору устройством, имеет целый диапазон адресов. По линиям данных от периферии к процессору и обратно передаются коды команд и данные. Для того чтобы вся эта система заработала, необходимо, чтобы внешние устройства и процессор точно знали, в какие моменты времени будет происходить передача данных по шине, а когда ожидать получения или выдачи адреса. Контроллеры, ОЗУ и процессор могут работать с различной скоростью, а в таком случае невозможно заставить входящие в систему устройства «понимать» друг друга. Избежать подобной неразберихи помогает системная синхронизация. Специальная микросхема, называемая генератором синхронизации, вырабатывает импульсы определенной для каждого компьютера частоты, называемые тактами. Несколько тактов составляют так называемый цикл процессора. В истории развития вычислительной техники известны различные сочетания между тактами и циклами, например, у средних ЭВМ недалекого прошлого один цикл процессора состоял из четырех тактов. В нашем случае это число вдвое меньше, то есть равно двум. Первый такт цикла называется фазой 1, а второй – фазой 2. В свою очередь, полный цикл шины в два раза длиннее цикла процессора и равен четырем тактам (рис.). Что же происходит в системе в течение двух циклов процессора?

Intel10.png

В течение первых двух тактов процессор выдает на линии состояния информацию о том, какие действия он будет производить в течение последующих двух тактов: будет ли он считывать из ОЗУ команду или данные или производить запись в оперативную память, произойдет ли прерывание или останов. В это же время на адресной шине появляется физический адрес одного из устройств или области памяти. Еще раз подчеркну, что в третьем и в четвертом тактах по линиям данных производится передача информации. Названия половинок цикла шины совпадают с их назначением: первые два такта называются циклом состояния, а вторые – командным циклом. Все вроде бы получается хорошо: процессор командует парадом, а все устройства дружно топают в ногу, согласно указаниям капельмейстера–генератора синхронизации, но не тут-то было! Быстродействия некоторых устройств не хватает для того, чтобы завершить выполнение текущей команды перед началом нового цикла шины. Что делать? Неужели придется распрощаться с высокой тактовой частотой (для i286 это может быть 20 МГЦ) и подстраиваться к темпу работы наиболее медленного устройства? Но в этом случае теряют смысл такие быстрые операции, как пересылка данных из регистра в регистр, а ведь системные программисты знают, что использование команд типа регистр–регистр, минуя шину, ведет к очень существенному ускорению выполнения программ. Для сохранения высокой тактовой частоты было решено к общему циклу шины добавлять дополнительные командные циклы до тех пор, пока «зазевавшееся» устройство не сообщит процессору о своей готовности выполнить следующую операцию. Такие дополнительные командные циклы носят название состояния ожидания (рис.): Для приема сигналов готовности в процессоре предусмотрен вход READY.

Поддержка операционными системами

Защищённый режим 80286 в персональных компьютерах долгое время использовался ограниченно. Главной причиной этого стала несовместимость с защищённым режимом программ, написанных для процессора 8086. В январе 1985 компания Digital Research анонсировала Concurrent DOS 286 — операционную систему, созданную совместно с Intel. Продукт должен был использовать только защищённый режим 80286, обеспечивая пользователям все преимущества этого режима по обеспечению многопользовательского, многозадачного выполнения программ, при одновременной поддержке эмуляции 8086. Заявленные возможности были работоспособны на использовавшемся в начале разработки прототипе процессора степпинга B-1, но в мае Digital Research обнаружила проблемы с эмуляцией на серийном процессоре степпинга C-1, которые не позволяли Concurrent DOS 286 запускать программы для 8086 в защищённом режиме. Выпуск Concurrent DOS 286 был задержан, а Intel начала разработку новой версии чипа. В августе, после интенсивного тестирования образцов 80286 степпинга E-1, Digital Research подтвердила, что Intel исправила все документированные ошибки, но заявила, что остаются недокументированные проблемы с производительностью на пре-релизной версии Concurrent DOS 286. Intel заявила, что выбранный Digital Research подход к эмуляции программ для 8086 в защищённом режиме отличается от начальных спецификаций. Тем не менее Intel внесла незначительные изменения в микрокод процессоров степпинга E-2, которые позволили Digital Research выполнять эмуляцию значительно быстрее. Компания IBM в 1986 году выбрала Concurrent DOS 286 (переименовав её в IBM 4680 OS) операционной системой для компьютера IBM 4680, использованного в системе розничной торговли в качестве POS-терминала. Те же ограничения затронули версию 1.0 FlexOS 286, операционной системы наследницы Concurrent DOS 286, разработанной Digital Research в 1986 и представленной в январе 1987. (Эта система позже была использована IBM как основа IBM 4690 OS). Из-за указанных проблем Билл Гейтс окрестил 80286 «чипом с мёртвым мозгом», так как было очевидно, что новая операционная система Microsoft Windows не сможет выполнять несколько приложений MS-DOS одновременно на 80286. Возможно, это стало причиной раскола между Microsoft и IBM, так как IBM настаивала, чтобы OS/2, изначально — совместная разработка IBM и Microsoft, поддерживала защищённый режим 80286. Поддержка защищённого режима также была реализована в операционных системах Coherent, Xenix, NetWare 286, iRMX, OS/2, Windows 3.0.

Первой коммерческой реализацией на базе 80286 стал компьютер IBM PC/AT («Advanced Technology»), выпущенный в 1984. Недостатком процессора была несовместимость защищенного режима с программами MS-DOS для реального режима и необходимость перезагружать компьютер для смены режимов. Следующим процессором от Intel стал 80386.

Архитектура

Архитектура286.png

См. также

  1. "i80286" материал из Википедии — свободной энциклопедии.
  2. Микропроцессоры 1970-х – 1990-х годов: архитектура и эволюция
  3. Intel 80826 Datasheet
  4. Архитектура процессоров 80x86