Intel 80286 [4] (также продаваемый как iAPX 286 [5] и часто называемый Intel 286 ) — 16-разрядный микропроцессор , представленный 1 февраля 1982 года. Это был первый процессор на базе 8086 с отдельными, не мультиплексированными шинами адреса и данных , а также первый с управлением памятью и широкими возможностями защиты. 80286 использовал приблизительно 134 000 транзисторов в своем первоначальном воплощении nMOS ( HMOS ) и, как и современный 80186 , [6] он может правильно выполнять большинство программ, написанных для более ранних процессоров Intel 8086 и 8088. [7]
80286 использовался для IBM PC/AT , представленного в 1984 году, а затем широко использовался в большинстве совместимых с PC/AT компьютеров до начала 1990-х годов. В 1987 году Intel поставила свой пятимиллионный микропроцессор 80286. [8]
Первые чипы Intel 80286 были рассчитаны на максимальную тактовую частоту 5, 6 или 8 МГц , а более поздние версии — на 12,5 МГц. Позже AMD и Harris выпустили детали на 16 МГц, 20 МГц и 25 МГц соответственно. Intel, Intersil и Fujitsu также разработали полностью статические версии CMOS оригинальной реализации Intel nMOS с истощением и нагрузкой , в основном нацеленные на устройства с питанием от батареи. Версия CMOS 80286 от Intel называлась 80C286.
В среднем, как сообщается, 80286 имеет скорость около 0,21 инструкции за такт на «типичных» программах, [9] хотя он может быть значительно быстрее на оптимизированном коде и в плотных циклах, так как многие инструкции могут выполняться за 2 такта каждая. Сообщается, что модели 6 МГц, 10 МГц и 12 МГц работали со скоростью 0,9 MIPS, 1,5 MIPS и 2,66 MIPS соответственно. [10]
Более поздний уровень E-stepping 80286 был свободен от нескольких существенных ошибок , которые вызывали проблемы у программистов и разработчиков операционных систем в ранних процессорах B-step и C-step (распространенных в клонах AT и AT). Эта часть E-2 stepping могла быть доступна в конце 1986 года. [11]
Примерно в 1985 году Intel передала этот микропроцессор компании Fujitsu Limited. [12]
Intel ожидала, что 286 будет использоваться в первую очередь в промышленной автоматизации, обработке транзакций и телекоммуникациях, а не в персональных компьютерах. [16]
Процессор был разработан для многопользовательских систем с многозадачными приложениями, включая коммуникации (например, автоматизированные АТС ) и управление процессами в реальном времени . Он имел 134 000 транзисторов и состоял из четырех независимых блоков: адресного блока, блока шины, блока инструкций и блока исполнения, организованных в слабосвязанный (буферизованный) конвейер , как и в 8086. Он выпускался в 68-контактном корпусе, включая корпуса PLCC ( пластиковый выводной кристаллоноситель ), LCC ( безвыводной кристаллоноситель ) и PGA ( матрица выводов ). [17]
Увеличение производительности 80286 по сравнению с 8086 (или 8088) могло составлять более 100% за такт во многих программах (т. е. удвоение производительности при той же тактовой частоте). Это было большое увеличение, полностью сопоставимое с улучшениями скорости семь лет спустя, когда были представлены i486 (1989) или оригинальный Pentium (1993). Это было отчасти из-за не мультиплексированных шин адреса и данных, но в основном из-за того, что вычисления адреса (такие как база+индекс ) были менее затратными. Они выполнялись специальным блоком в 80286, в то время как старый 8086 должен был выполнять эффективное вычисление адреса с использованием своего общего АЛУ , потребляя несколько дополнительных циклов тактов во многих случаях. Кроме того, 80286 был более эффективен в предварительной выборке инструкций, буферизации, выполнении переходов и в сложных микрокодированных числовых операциях, таких как MUL / DIV , чем его предшественник. [18]
80286 включал, в дополнение ко всем инструкциям 8086, все новые инструкции 80186: ENTER, LEAVE, BOUND, INS, OUTS, PUSHA, POPA, PUSH immediately, IMUL immediately и immediately shifts and rotates. 80286 также добавил новые инструкции для защищенного режима: ARPL, CLTS, LAR, LGDT, LIDT, LLDT, LMSW, LSL, LTR, SGDT, SIDT, SLDT, SMSW, STR, VERR и VERW. Некоторые инструкции для защищенного режима могут (или должны) использоваться в реальном режиме для настройки и переключения в защищенный режим, а некоторые (например, SMSW и LMSW) полезны для самого реального режима.
Intel 80286 имел 24-битную адресную шину и, как таковой, имел физическое адресное пространство 16 МБ по сравнению с 1 МБ адресного пространства предыдущих процессоров x86. Это был первый процессор x86, поддерживающий виртуальную память, поддерживающую до 1 ГБ посредством сегментации. [19] Однако стоимость памяти и изначальная редкость программного обеспечения, использующего память выше 1 МБ, означали, что до позднего этапа производства компьютеры 80286 редко поставлялись с более чем 1 МБ ОЗУ. [18] Кроме того, имелось снижение производительности, связанное с доступом к расширенной памяти из реального режима, как отмечено ниже.
286 был первым из семейства процессоров x86, поддерживающим защищенный режим виртуальной адресации , обычно называемый « защищенным режимом ». Кроме того, это был первый коммерчески доступный микропроцессор с возможностями блока управления памятью на кристалле (MMU) (системы, использующие современные Motorola 68010 и NS320xx, могли быть оснащены дополнительным контроллером MMU). Это позволило бы IBM-совместимым компьютерам впервые получить продвинутые многозадачные ОС и конкурировать на рынке серверов / рабочих станций , где доминирует Unix [ нужна цитата ] .
В защищенном режиме 80286 было введено несколько дополнительных инструкций, полезных для многозадачных операционных систем.
Еще одной важной особенностью 80286 является предотвращение несанкционированного доступа. Это достигается за счет:
В 80286 (и в его сопроцессоре Intel 80287 ) арифметические операции могут выполняться над следующими различными типами чисел:
По замыслу 286 не мог вернуться из защищенного режима в базовый режим реального адреса , совместимый с 8086 (« реальный режим »), без аппаратно инициированного сброса. В PC/AT, представленном в 1984 году, IBM добавила внешнюю схему, а также специализированный код в ROM BIOS и микроконтроллер клавиатуры 8042 , чтобы программное обеспечение могло вызывать сброс, позволяя повторный вход в реальный режим, сохраняя активную память и возвращая управление программе, инициировавшей сброс. (BIOS обязательно задействован, поскольку он получает управление напрямую при каждом сбросе ЦП.) Хотя он работал правильно, этот метод приводил к огромному снижению производительности.
Теоретически приложения реального режима могли бы напрямую выполняться в 16-битном защищенном режиме , если бы соблюдались определенные правила (вновь предложенные с появлением 80286); однако, поскольку многие программы DOS не соответствовали этим правилам, защищенный режим не получил широкого распространения до появления его преемника, 32-битного Intel 80386 , который был разработан для легкого переключения между режимами и для обеспечения эмуляции реального режима в защищенном режиме. Когда Intel проектировала 286, он не был разработан для многозадачности приложений реального режима; реальный режим был задуман как простой способ для загрузчика начальной загрузки подготовить систему и затем переключиться в защищенный режим; По сути, в защищенном режиме 80286 был разработан как новый процессор, во многом схожий со своими предшественниками, в то время как реальный режим 80286 был предложен для систем меньшего масштаба, которые могли бы извлечь выгоду из более продвинутой версии ядра ЦП 80186 с такими преимуществами, как более высокие тактовые частоты, более быстрое выполнение инструкций (измеряемое в тактовых циклах) и не мультиплексированные шины, но не 24-битное (16 МБ) пространство памяти.
Для поддержки защищенного режима добавлены новые инструкции: ARPL, VERR, VERW, LAR, LSL, SMSW, SGDT, SIDT, SLDT, STR, LMSW, LGDT, LIDT, LLDT, LTR, CLTS. Также есть новые исключения (внутренние прерывания): недопустимый код операции, сопроцессор недоступен, двойная ошибка , переполнение сегмента сопроцессора, ошибка стека, переполнение сегмента/общая ошибка защиты и другие только для защищенного режима.
Защищенный режим 80286 не использовался в ПК-приложениях регулярно в течение многих лет после его выпуска, отчасти из-за высокой стоимости добавления расширенной памяти к ПК, но также из-за необходимости в программном обеспечении для поддержки большой пользовательской базы ПК 8086. Например, в 1986 году единственной программой, которая его использовала, была VDISK, драйвер RAM-диска, включенный в PC DOS 3.0 и 3.1. DOS могла использовать дополнительную RAM, доступную в защищенном режиме ( расширенную память ), либо через вызов BIOS (INT 15h, AH=87h), как RAM-диск , либо как эмуляцию расширенной памяти . [18] Трудность заключалась в несовместимости старых программ DOS реального режима с защищенным режимом. Они просто не могли изначально работать в этом новом режиме без значительных изменений. В защищенном режиме управление памятью и обработка прерываний выполнялись иначе, чем в реальном режиме. Кроме того, программы DOS обычно напрямую обращались к данным и сегментам кода, которые им не принадлежали, поскольку реальный режим позволял им делать это без ограничений; напротив, замысел защищенного режима состоял в том, чтобы не допустить доступа программ к любым сегментам, кроме их собственных, если только не был явно разрешен специальный доступ. Хотя можно было настроить среду защищенного режима, которая позволяла бы всем программам получать доступ ко всем сегментам (поместив все дескрипторы сегментов в глобальную таблицу дескрипторов (GDT) и назначив им всем одинаковый уровень привилегий), это подрывало почти все преимущества защищенного режима, за исключением расширенного (24-битного) адресного пространства. Выбор, с которым столкнулись разработчики ОС, заключался в том, чтобы либо начать с нуля и создать ОС, которая не будет запускать подавляющее большинство старых программ, либо придумать версию DOS, которая была бы медленной и уродливой (т. е. уродливой с внутренней технической точки зрения), но все равно бы запускала большинство старых программ. Защищенный режим также не обеспечивал достаточно значительного преимущества в производительности по сравнению с реальным режимом, совместимым с 8086, чтобы оправдать поддержку его возможностей; на самом деле, за исключением переключения задач при многозадачности, это привело только к снижению производительности, замедляя множество инструкций из-за целой кучи дополнительных проверок привилегий. В защищенном режиме регистры по-прежнему были 16-битными, и программисту по-прежнему приходилось использовать карту памяти, состоящую из сегментов по 64 КБ, как и в реальном режиме. [20]
В январе 1985 года Digital Research анонсировала операционную систему Concurrent DOS 286 1.0, разработанную совместно с Intel . Продукт должен был функционировать строго как операционная система 80286 в собственном режиме (т. е. в защищенном режиме), позволяя пользователям в полной мере использовать защищенный режим для выполнения многопользовательских многозадачных операций при запуске эмуляции 8086. [21] [22] [23] Это работало на этапе прототипа B-1 чипа, но Digital Research обнаружила проблемы с эмуляцией на этапе производства C-1 в мае, что не позволяло Concurrent DOS 286 запускать программное обеспечение 8086 в защищенном режиме. Выпуск Concurrent DOS 286 был отложен до тех пор, пока Intel не разработает новую версию чипа. [21] В августе, после обширного тестирования образцов шага E-1 80286, Digital Research признала, что Intel исправила все задокументированные ошибки 286, но заявила, что все еще существуют недокументированные проблемы с производительностью чипа с предварительной версией Concurrent DOS 286, работающей на шаге E-1. Intel заявила, что подход, который Digital Research хотела использовать при эмуляции программного обеспечения 8086 в защищенном режиме, отличался от исходных спецификаций. Тем не менее, на шаге E-2 они внесли незначительные изменения в микрокод , которые позволили бы Digital Research запускать режим эмуляции намного быстрее. [11] Первоначально IBM выбрала DR Concurrent DOS 286 в качестве основы для своего компьютера IBM 4680 для продуктов IBM Plant System и POS- терминалов в 1986 году. [24] FlexOS 286 версии 1.3 от Digital Research , производная от Concurrent DOS 286, была разработана в 1986 году, представлена в январе 1987 года и позже принята IBM для своей IBM 4690 OS , но те же ограничения повлияли и на нее.
Из-за этих проблем Билл Гейтс назвал 80286 чипом с «поврежденным мозгом» [25], поскольку было ясно, что новая среда Microsoft Windows не сможет запускать несколько приложений MS-DOS с 286. Возможно, это стало причиной раскола между Microsoft и IBM, поскольку IBM настаивала на том, что OS/2 , изначально являвшаяся совместным предприятием IBM и Microsoft, будет работать на 286 (и в текстовом режиме).
Другие операционные системы, которые использовали защищенный режим 286, были Microsoft Xenix (около 1984 г.), [26] Coherent , [27] и Minix . [28] Они были менее ограничены ограничениями защищенного режима 80286, поскольку они не были нацелены на запуск приложений MS-DOS или других программ реального режима. В своем преемнике 80386 чип, Intel улучшил защищенный режим, чтобы адресовать больше памяти, а также добавил отдельный виртуальный режим 8086 , режим в защищенном режиме с гораздо лучшей совместимостью с MS-DOS, чтобы удовлетворить расходящиеся потребности рынка. [29]
Это список компонентов интерфейса шины, подключаемых к микропроцессору Intel 80286.