Intel 80286
Intel 80286 | |
---|---|
Центральный процессор | |
![]() Микропроцессор Intel 80286 (8 МГц) | |
Производство | с 1 февраля 1982 по начало 1990-x |
Разработчик | Intel |
Производители | |
Частота ЦП | 6—20 МГц |
Технология производства | 1.5 мкм |
Наборы инструкций | x86-16 (с MMU) |
Разъёмы | |
Ядра | |
Intel 80286 (также встречаются обозначения i80286, i286, жарг. двойка) — 16-битный x86-совместимый микропроцессор второго поколения компании Intel, выпущенный 1 февраля 1982 года. Представляет собой усовершенствованный вариант процессора Intel 8086 и обладает в 3—6 раз большей производительностью. Процессор применялся в основном в IBM PC-совместимых персональных компьютерах.
Описание[править | править код]
Процессор Intel 80286 разрабатывался параллельно с процессорами Intel 80186/80188, однако в нём отсутствовали некоторые модули, имевшиеся в процессоре Intel 80186. Процессор Intel 80286 выпускался в точно таком же корпусе, как и Intel 80186 — LCC, а также в корпусах типа PGA с 68 выводами. В новом процессоре было увеличено количество регистров, добавлены новые инструкции, добавлен новый режим работы процессора — защищённый режим. Процессор имел 6-байтовую очередь (как и Intel 8086). Шины адреса и данных в нём не мультиплексируются (то есть адреса и данные передаются по разным выводам). Шина адреса увеличена до 24 бит, таким образом объём ОЗУ может составлять 16 Мбайт. Для более быстрого выполнения операций над числами с плавающей запятой необходим математический сопроцессор Intel 80287.
Регистры[править | править код]
К 14 регистрам процессора Intel 8086 были добавлены 11 новых регистров, необходимых для реализации защищённого режима и других функций: регистр слова состояния машины, 16 бит (MSW); регистр задачи, 16 бит (TR); регистры дескрипторной таблицы, один 64-битный и два 40-битных (GDTR, IDTR, LDTR) и 6 регистров расширения сегментных регистров, 48 бит.
Инструкции[править | править код]
Процессор имел тот же набор инструкций, что и процессор Intel 80186, к которому добавили 16 новых команд (LGDT, LIDT, LLDT, LMSW, LTR, SGDT, SIDT, SLDT, SMSW, STR, ARPL, CLTS, LAR, LSL, VERR, VERW), необходимых для работы со средствами управления памятью. Команда PUSH теперь могла сохранять в стеке константы. Инструкции в Intel 80286 выполняются в среднем за 4,5 такта.
Организация памяти[править | править код]
Шина адреса разрядностью 24 бита позволяет адресовать 16 Мбайт физической памяти, но в реальном режиме доступен только 1 Мбайт (640 КБайт обычной памяти и 384 КБайт расширенной), начинающийся со младших адресов. С программной точки зрения память так же, как и в 8086, организуется в виде сегментов, но управление сегментацией имеет существенные различия для реального и защищённого режимов.
В реальном режиме по адресации памяти декларируется полная совместимость с процессором 8086, который своей 20-битной адресной шиной охватывает пространство физической памяти в 1 Мбайт. На самом деле, на радость разработчикам программного обеспечения PC, 80286 имеет ошибку, «узаконенную» и в следующих поколениях процессоров. При вычислении физического адреса возможно возникновение переполнения, которое с 20-битной шиной адреса просто игнорируется. Если, например, Seg=FFFFh и EA=FFFFh, физический адрес, вычисленный по формуле РА=16 х Seg + EA=10FFEF, процессором 8086 трактуется как 0FFEF — адрес, принадлежащий первому мегабайту. Однако на выходе А20 процессора 80286 в этом случае установится единичное значение, что соответствует адресу ячейки из второго мегабайта физической памяти. Для обеспечения полной программной совместимости с 8086 в схему PC был введён специальный вентиль Gate A20, принудительно обнуляющий бит А20 системной шины адреса. Не оценив потенциальной выгоды от этой ошибки, управление вентилем узаконили через программно-управляемый бит контроллера клавиатуры 8042. Когда оперативная память подешевела, а «аппетит» программного обеспечения вырос, в эту небольшую область (64 К-16 байт) стали помещать некоторые резидентные программы или даже часть операционной системы, а для ускорения управления вентилем появились более быстрые способы (Gate A20 Fast Control).
В отличие от 8086 процессор 80286 имеет средства контроля за переходом через границу сегмента, работающие и в реальном режиме. При попытке адресации к слову, имеющему смещение FFFFh (его старший байт выходит за границу сегмента) или выполнения инструкции, все байты которой не умещаются в данном сегменте, процессор вырабатывает прерывание — исключение типа 13 (0Dh) — Segment Overrun Exception. При попытке выполнения инструкции ESCAPE с операндом памяти, не умещающимся в сегменте, вырабатывается исключение типа 9 — Processor Extension Segment Overrrun Interrupt.
В защищённом режиме работают все режимы адресации, допустимые для 8086 и реального режима 80286. Отличия касаются определения сегментов:
- сегментные регистры CS, DS, SS и ES хранят не сами базовые адреса сегментов, а селекторы, по которым из таблицы, хранящейся в ОЗУ, извлекаются дескрипторы сегментов;
- дескриптор описывает базовый адрес, размер сегмента (1 — 64 Кбайт) и его атрибуты;
- базовый адрес сегмента имеет разрядность 24 бита, что и обеспечивает адресацию 16 Мбайт физической памяти.
Режимы работы процессора Intel 80286[править | править код]
В процессоре Intel 80286 было реализовано два режима работы — защищённый режим и реальный режим. В реальном режиме работы процессор был полностью совместим с процессорами x86, выпускавшимися до этого, то есть процессор мог выполнять программы, предназначенные для Intel 8086/8088/8018x, без повторного ассемблирования или с переассемблированием с минимальными модификациями. В формировании адреса участвовали только 20 линий шины адреса, поэтому максимальный объём адресуемой памяти в этом режиме остался прежним — 1 Мбайт. В защищённом режиме процессор мог адресовать до 1 Гбайт виртуальной памяти (при этом объём реальной памяти составлял не более 16 Мбайт) за счёт изменения механизма адресации памяти. Переключение из реального режима в защищённый происходит программно и относительно просто, однако для обратного перехода необходим аппаратный сброс процессора, который в IBM PC-совместимых машинах осуществлялся обычно с помощью контроллера клавиатуры. Для отслеживания текущего режима работы процессора используется регистр слово состояния машины (MSW). Программы реального режима без модификаций в защищённом режиме исполняться не могут, так же, как и программы BIOS машины.
Суть защищённого режима заключается в следующем. Программист и разрабатываемые им программы используют логическое адресное пространство (виртуальное адресное пространство), размер которого может составлять 1024 Мбайт (для Intel 80286). Логический адрес преобразуется в физический адрес автоматически с помощью схемы управления памятью (MMU). В защищённом режиме в памяти можно хранить только ту часть программы, которая необходима в данный момент, а остальная часть могла храниться во внешней памяти (например, на жёстком диске). В случае обращения к той части программы, которой нет в памяти в данный момент, операционная система может приостановить программу, загрузить требуемую секцию кода из внешней памяти и возобновить выполнение программы. Следовательно, становятся допустимыми программы, размер которых больше объёма имеющейся памяти. Другими словами, пользователю кажется, что он работает с большей памятью, чем на самом деле. Однако реализация системы виртуальной памяти была ещё далека от совершенства. Для использования защищённого режима необходима многозадачная операционная система, например Microsoft Windows 2.0, IBM OS/2 или UNIX.
Физический адрес формируется следующим образом. В сегментных регистрах хранится селектор, содержащий индекс дескриптора в таблице дескрипторов (13 бит), один бит, определяющий, к какой таблице дескрипторов будет производиться обращение (к локальной или к глобальной) и два бита запрашиваемого уровня привилегий. Далее происходит обращение к соответствующей таблице дескрипторов и соответствующему дескриптору, который содержал начальный, 24-битный, адрес сегмента, размер сегмента и права доступа. После этого вычислялся необходимый физический адрес путём сложения адреса сегмента со смещением, хранящемся в 16-разрядном указательном регистре.
Однако защищённый режим в процессоре Intel 80286 обладал и некоторыми недостатками. Он был несовместим с программами, написанными для реального режима MS-DOS. Для перехода из защищённого режима в реальный требовался аппаратный сброс процессора.
Кольца защиты[править | править код]
Для защиты от выполнения привилегированных команд, которые могут кардинально изменить состояние всей системы, для защиты доступа к данным и для защиты сегментов кода в процессоре Intel 80286 была введена защита по привилегиям [1]. Было выделено 4 уровня привилегий, так называемые кольца (Ring) защиты — от самого привилегированного 0 уровня (Ring 0), предназначенного для ядра системы, до наименее привилегированного 3 уровня (Ring 3), предназначенного для прикладных программ.
Поддержка операционными системами[править | править код]
Несмотря на анонс в 1982 году, защищённый режим 80286 в персональных компьютерах долгое время использовался ограниченно. Главной причиной этого стала несовместимость с защищённым режимом программ, написанных для процессора 8086. Одна из проблем была связана с тем, что используемая 8086 сегментная адресация памяти позволяла сформировать один и тот же адрес множеством комбинаций «сегмент+смещение», и формированием такой комбинации занимались программы, а не операционная система. Например, если программе для 8086 требовался блок памяти, она должна была взять сегмент и смещение первого свободного байта памяти, разделить смещение на 16 и прибавить его к значению сегмента, формируя таким образом новый, не использованный сегмент. Однако в 80286 значение сегмента используется как индекс в таблице дескрипторов. Если сегмент выбран произвольно, соответствующего дескриптора в таблице может не оказаться либо дескриптор будет иметь неподходящие параметры. Модифицировать же таблицу дескрипторов из-за наличия защиты может только операционная система.
Другой проблемой являлось разделение сегментов кода и данных. В защищённом режиме программа не может модифицировать сегменты кода или выполнять код, помещённый в сегмент данных, хотя в программах для 8086 такие приёмы использовались.
Ещё одной проблемой стало игнорирование разработчиками BIOS IBM PC рекомендаций Intel и использование зарезервированных номеров прерываний. Например, арифметический сопроцессор 80287 при возникновении ошибки генерирует прерывание 1016. Однако в IBM PC прерывание 1016 используется для управления дисплеем.
Все эти проблемы требовали значительной модификации существующих программ. Разработчики операционных систем были поставлены перед выбором — создавать относительно простую систему, работающую только в защищённом режиме, но несовместимую с большинством ранее написанных программ, либо создавать систему, содержащую компоненты для работы и в реальном и в защищённом режимах и переключающуюся между ними по мере необходимости (что возможно только через сброс процессора и значительно снижает производительность), обеспечивая таким образом совместимость с ранее написанными программами[2].
В январе 1985 компания Digital Research анонсировала Concurrent DOS 286 — операционную систему, созданную совместно с Intel. Продукт должен был использовать только защищённый режим 80286, обеспечивая пользователям все преимущества этого режима по обеспечению многопользовательского, многозадачного выполнения программ, при одновременной поддержке эмуляции 8086[3]. Заявленные возможности были работоспособны на использовавшемся в начале разработки прототипе процессора степпинга B-1, но в мае Digital Research обнаружила проблемы с эмуляцией на серийном процессоре степпинга C-1, которые не позволяли Concurrent DOS 286 запускать программы для 8086 в защищённом режиме. Выпуск Concurrent DOS 286 был задержан, а Intel начала разработку новой версии чипа[3]. В августе, после интенсивного тестирования образцов 80286 степпинга E-1, Digital Research подтвердила, что Intel исправила все документированные ошибки, но заявила, что остаются недокументированные проблемы с производительностью на пререлизной версии Concurrent DOS 286. Intel заявила, что выбранный Digital Research подход к эмуляции программ для 8086 в защищённом режиме отличается от начальных спецификаций. Тем не менее Intel внесла незначительные изменения в микрокод процессоров степпинга E-2, которые позволили Digital Research выполнять эмуляцию значительно быстрее[4]. Компания IBM в 1986 году выбрала Concurrent DOS 286 (переименовав её в IBM 4680 OS) операционной системой для компьютера IBM 4680, использованного в системе розничной торговли в качестве POS-терминала[5]. Те же ограничения затронули версию 1.0 FlexOS 286, операционной системы наследницы Concurrent DOS 286, разработанной Digital Research в 1986 и представленной в январе 1987 (эта система позже была использована IBM как основа IBM 4690 OS).
Из-за указанных проблем Билл Гейтс окрестил 80286 «чипом с мёртвым мозгом»[6], так как было очевидно, что новая операционная система Microsoft Windows не сможет выполнять несколько приложений MS-DOS одновременно на 80286. Возможно, это стало причиной раскола между Microsoft и IBM, так как IBM настаивала, чтобы OS/2, изначально — совместная разработка IBM и Microsoft, поддерживала защищённый режим 80286.
Поддержка защищённого режима также была реализована в операционных системах Coherent, Xenix, NetWare 286, iRMX, OS/2, Windows 3.0.
Компьютеры на базе процессора Intel 80286[править | править код]
В 1984 году компания IBM представила свой ПК, основанный на процессоре Intel 80286 с частотой 6 МГц — IBM PC AT, который вызвал большой интерес к архитектуре x86 вообще и к ПК IBM PC в частности. В 1987 году IBM выпускает новые модели ПК — IBM PS/2-50 и IBM PS/2-60. К моменту выпуска ПК IBM PS/2 IBM уже не была монополистом рынка персональных компьютеров, многие фирмы выпускали аналогичные модели, зачастую более дешёвые.
Конкурентные решения[править | править код]
![](http://webcf.waybackmachine.org/web/20220606170621im_/https://upload.wikimedia.org/wikipedia/commons/thumb/d/d7/QFN64_Siemens_80286.jpg/240px-QFN64_Siemens_80286.jpg)
Так как Intel продавала лицензии на производство микропроцессоров 80286, многие фирмы выпускали фактически клоны данного микропроцессора — AMD, Siemens AG и HARRIS. С помощью обратной разработки были созданы клоны 80286:
- U80601 — в ГДР
- КФ1847ВМ286 (позднее ЭКФ1847ВМ2) — в СССР (опытные образцы выпускались заводом имени Дзержинского (разработчик НТЦ «Белмикросистемы») НПО «Интеграл»)
Также выпускались и процессоры, разработанные независимо от Intel, таковые выпускали Zilog, Motorola и другие.
Технические характеристики[править | править код]
- Дата анонса: 1 февраля 1982 года
- Тактовая частота (МГц): зависит от маркировки: 80286-6 — 6 МГц, 80286-8 — 8 МГц, 80286-10 — 10 МГц, 80286-12 — 12,5 МГц
- Разрядность регистров: 16 бит
- Разрядность шины данных: 16 бит
- Разрядность шины адреса: 24 бит
- Объём адресуемой памяти: 16 Мбайт
- Объём виртуальной памяти: 1 Гбайт (в защищённом режиме)
- Количество транзисторов: 134 000
- Техпроцесс (нм): 1500 (1,5 мкм)
- Площадь кристалла: 49 мм²
- Напряжение питания: +5 В
- Разъём: 68-pin
- Корпус: 68-контактный керамический LCC (R80286), пластиковый LCC (N80286), керамический PGA (CG80286 или A80286)
Примечания[править | править код]
- ↑ Морс С.П., Алберт Д.Д. Архитектура микропроцессора 80286 = The 80286 architecture. — М.: Радио и связь, 1990. — С. 185. — 304 с. — ISBN 5-256-00466-2.
- ↑ Petzol, Charles. Obstacles to a grown up operating system // PC Magazine. — 1986. — Т. 5, № 11. — С. 170–74.
- ↑ 1 2 Edward Foster. Super DOS awaits new 80286 – Concurrent DOS 286 – delayed until Intel upgrades chip – offers Xenix's power and IBM PC compatibility // InfoWorld. — InfoWorld Media Group, 1985. — Т. 7, № 19. — С. 17–18. — ISSN 0199-6649.
- ↑ Edward Foster. Intel shows new 80286 chip – Future of DRI's Concurrent DOS 286 still unclear after processor fixed // InfoWorld. — InfoWorld Media Group, 1985. — Т. 7, № 34. — С. 21. — ISSN 0199-6649.
- ↑ Melissa Calvo and Jim Forbes. IBM to use a DRI operating system // InfoWorld. — InfoWorld Media Group, 1986. — Т. 8, № 6. — С. 12. — ISSN 0199-6649.
- ↑ Microprocessors: A Programmer's View. — New York: McGraw-Hill, 1990. — ISBN 0-07-016638-2.
Ссылки[править | править код]
- Инструкция по эксплуатации 80286 (англ.)
- Описание и фотографии процессоров семейства Intel 80286 (англ.)
- Краткое описание микропроцессора Intel 80286 (рус.)
- Краткое описание микропроцессора Intel 80286 с фотографиями (англ.)
- Документация на процессор на сайте bitsavers.org (англ.)