Loading AI tools
Из Википедии, свободной энциклопедии
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 Overrun Interrupt.
В защищённом режиме работают все режимы адресации, допустимые для 8086 и реального режима 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.
В 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 уже не была монополистом рынка персональных компьютеров, многие фирмы выпускали аналогичные модели, зачастую более дешёвые.
Так как Intel продавала лицензии на производство микропроцессоров 80286, многие фирмы выпускали фактически клоны данного микропроцессора — AMD, Siemens AG и HARRIS. С помощью обратной разработки были созданы клоны 80286:
Также выпускались и процессоры, разработанные независимо от Intel, таковые выпускали Zilog, Motorola и другие.
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.