Intel 386 , первоначально выпущенный как 80386 и позже переименованный в i386 , является 32-разрядным микропроцессором , разработанным Intel . Первые предсерийные образцы 386 были выпущены для избранных разработчиков в 1985 году, а массовое производство началось в 1986 году. Процессор был значительным развитием архитектуры x86 , расширяя длинную линейку процессоров, которая простиралась до Intel 8008. 386 был центральным процессором (ЦП) многих рабочих станций и высокопроизводительных персональных компьютеров того времени. 386 начал выходить из общественного использования, начиная с выпуска процессора i486 в 1989 году, в то время как во встраиваемых системах 386 оставался широко распространенным, пока Intel окончательно не прекратила его выпуск в 2007 году.
По сравнению со своим предшественником Intel 80286 , 80386 добавил трехступенчатый конвейер инструкций, который он довел до общего числа 6-ступенчатых конвейеров инструкций, расширил архитектуру с 16 до 32 бит и добавил блок управления памятью на кристалле . Этот блок страничной трансляции значительно упростил реализацию операционных систем, использующих виртуальную память . Он также предлагал поддержку отладки регистров .
80386 имел три режима работы: реальный режим, защищенный режим и виртуальный режим. Защищенный режим , который дебютировал в 80286, был расширен, чтобы позволить 386 адресовать до 4 ГБ памяти. С добавлением сегментированной системы адресации он может расширяться до 64 терабайт виртуальной памяти. Абсолютно новый виртуальный режим 8086 (или VM86 ) позволял запускать одну или несколько программ реального режима в защищенной среде, хотя некоторые программы были несовместимы.
32-битный i386 может правильно выполнять большую часть кода, предназначенного для более ранних 16-битных процессоров, таких как 8086 и 80286, которые были повсеместно распространены в ранних ПК . Как исходная реализация 32-битного расширения архитектуры 80286, [a] набор инструкций i386, модель программирования и двоичные кодировки по-прежнему являются общим знаменателем для всех 32-битных процессоров x86, которые называются архитектурой i386 , x86 или IA-32 , в зависимости от контекста. За эти годы последовательно более новые реализации той же архитектуры стали в несколько сотен раз быстрее, чем исходный 80386 (и в тысячи раз быстрее, чем 8086). [b]
Разработка технологии i386 началась в 1982 году под внутренним названием P3. [4] Разработка 80386 была завершена в июле 1985 года. [4] 80386 был представлен в качестве предсерийных образцов для рабочих станций разработки программного обеспечения в октябре 1985 года. [5] Производство чипов в значительных количествах началось в июне 1986 года, [6] [7] вместе с первым подключаемым устройством, которое позволило обновить существующие компьютеры на базе 80286 до 386, Translator 386 от American Computer and Peripheral . [8] [9] Поскольку 80386 был единственным поставщиком, этот ЦП был очень дорогим. [10] Материнские платы для компьютерных систем на базе 80386 поначалу были громоздкими и дорогими, но производство оправдало себя после массового принятия 80386. Первым персональным компьютером , использовавшим 80386, был Deskpro 386 , разработанный и произведенный компанией Compaq ; [11] это был первый случай, когда фундаментальный компонент в стандарте IBM PC, совместимом де-факто, был обновлен компанией, отличной от IBM .
Первые версии 386 имели 275 000 транзисторов. [2] Версия 20 МГц работает на скорости 4–5 MIPS . Она также выполняет от 8 000 до 9 000 Dhrystones в секунду. [12] Версия 25 МГц 386 была способна на 7 MIPS. [13] Сообщается, что 33 МГц 80386 работал на скорости около 11,4 и 11,5 MIPS. [14] [15] На той же скорости он имеет производительность 8 VAX MIPS . [16] Эти процессоры работали примерно 4,4 такта на инструкцию. [17]
В мае 2006 года Intel объявила, что производство i386 прекратится в конце сентября 2007 года. [18] Хотя он давно устарел как ЦП для персональных компьютеров , Intel и другие продолжали выпускать чип для встраиваемых систем . Такие системы, использующие i386 или одну из многих производных, распространены в аэрокосмической технике и электронных музыкальных инструментах, среди прочего. Некоторые мобильные телефоны также использовали (позже полностью статические варианты CMOS ) процессор i386, такие как BlackBerry 950 [19] и Nokia 9000 Communicator . Linux продолжал поддерживать процессоры i386 до 11 декабря 2012 года, когда ядро вырезало специфичные для 386 инструкции в версии 3.8. [20]
Процессор был значительным развитием архитектуры x86 и продолжил длинную линейку процессоров, которая тянулась до Intel 8008. Предшественником 80386 был Intel 80286 , 16-разрядный процессор с сегментной системой управления и защиты памяти. 80386 добавил трехступенчатый конвейер инструкций, который он довел до общего числа 6-ступенчатых конвейеров инструкций, расширил архитектуру с 16 бит до 32 бит и добавил блок управления памятью на кристалле . [21] Этот блок страничной трансляции значительно упростил реализацию операционных систем, использующих виртуальную память . Он также предлагал поддержку отладки регистров .
80386 имел три режима работы: реальный режим, защищенный режим и виртуальный режим. Защищенный режим , который дебютировал в 286, был расширен, чтобы позволить 386 адресовать до 4 ГБ памяти. С добавлением сегментированной системы адресации он может расширяться до 64 терабайт виртуальной памяти. [22] Абсолютно новый виртуальный режим 8086 (или VM86 ) позволял запускать одну или несколько программ реального режима в защищенной среде, хотя некоторые программы были несовместимы. Он имеет масштабируемую индексацию и 64-битный баррель-сдвиг. [23]
Возможность настроить процессор 386 так, чтобы он действовал так, как будто у него плоская модель памяти в защищенном режиме, несмотря на то, что во всех режимах он использует сегментированную модель памяти, была, пожалуй, самым важным изменением функций для семейства процессоров x86 до выпуска AMD x86-64 в 2003 году.
В 386 добавлено несколько новых инструкций: BSF, BSR, BT, BTS, BTR, BTC, CDQ, CWDE, LFS, LGS, LSS, MOVSX, MOVZX, SETcc, SHLD, SHRD.
Добавлены два новых сегментных регистра (FS и GS) для программ общего назначения. Единое слово состояния машины 286 выросло в восемь регистров управления CR0–CR7. Отладочные регистры DR0–DR7 были добавлены для аппаратных точек останова. Для доступа к ним используются новые формы инструкции MOV.
Главным архитектором разработки 80386 был Джон Х. Кроуфорд . [24] Он отвечал за расширение архитектуры и набора инструкций 80286 до 32 бит, а затем руководил разработкой микропрограмм для чипа 80386.
Линейки процессоров Pentium i486 и P5 являются потомками архитектуры i386.
Следующие типы данных напрямую поддерживаются и, таким образом, реализуются одной или несколькими машинными инструкциями i386 ; эти типы данных кратко описаны здесь. [25] :
Следующий исходный код сборки i386 предназначен для подпрограммы с именем , которая копирует строку символов ASCIIZ_strtolower
с нулевым окончанием из одного места в другое, преобразуя все алфавитные символы в нижний регистр. Строка копируется по одному байту (8-битный символ) за раз.
В примере кода регистр EBP (базовый указатель) используется для установки кадра вызова , области в стеке, которая содержит все параметры и локальные переменные для выполнения подпрограммы. Этот тип соглашения о вызовах поддерживает реентерабельный и рекурсивный код и используется языками типа Algol с конца 1950-х годов. Предполагается плоская модель памяти, в частности, что сегменты DS и ES адресуют одну и ту же область памяти.
Первым ПК на базе Intel 80386 был Compaq Deskpro 386. Расширив 16/24-битный стандарт IBM PC/AT в изначально 32-битную вычислительную среду, Compaq стала первой компанией, которая спроектировала и произвела такое крупное техническое аппаратное усовершенствование на платформе ПК. IBM предложили использовать 80386, но у нее были права на производство более раннего 80286. Поэтому IBM решила полагаться на этот процессор еще пару лет. Ранний успех Compaq Deskpro 386 сыграл важную роль в легитимации индустрии «клонов» ПК и в снижении роли IBM в ней. Первой компьютерной системой, проданной с 386SX, была Compaq Deskpro 386S , выпущенная в июле 1988 года. [27]
До появления 386 сложность производства микрочипов и неопределенность надежных поставок делали желательным, чтобы любой массовый полупроводник производился из нескольких источников, то есть производился двумя или более производителями, вторая и последующие компании производили по лицензии исходной компании. 386 некоторое время (4,7 года) был доступен только от Intel, поскольку Энди Гроув , генеральный директор Intel в то время, принял решение не поощрять других производителей производить процессор в качестве вторых поставщиков . Это решение в конечном итоге имело решающее значение для успеха Intel на рынке. [ необходима цитата ] 386 был первым значительным микропроцессором, который производился из одного источника . Единый источник 386 позволил Intel лучше контролировать его разработку и существенно увеличить прибыль в последующие годы.
AMD представила свой совместимый процессор Am386 в марте 1991 года, преодолев юридические препятствия, тем самым положив конец 4,7-летней монополии Intel на процессоры, совместимые с 386. С 1991 года IBM также производила чипы 386 по лицензии для использования только в ПК и платах IBM.
Первоначально Intel планировала, что 80386 дебютирует на частоте 16 МГц. Однако из-за низкого выхода годных он был представлен на частоте 12,5 МГц. [30]
На ранних этапах производства Intel обнаружила пограничную схему, которая могла заставить систему возвращать неверные результаты 32-битных операций умножения. Не все уже произведенные процессоры были затронуты, поэтому Intel проверила свой инвентарь. Процессоры, которые были признаны безошибочными, были помечены двойной сигмой ( ΣΣ), а затронутые процессоры были помечены как «ТОЛЬКО 16 BIT S/W». [31] Эти последние процессоры продавались как хорошие детали, поскольку в то время 32-битные возможности не были актуальны для большинства пользователей. [32]
Математический сопроцессор i387 не был готов к моменту появления 80386, и поэтому многие из ранних материнских плат 80386 вместо этого предоставляли сокет и аппаратную логику для использования 80287. В этой конфигурации FPU работал асинхронно с ЦП, обычно с тактовой частотой 10 МГц. Оригинальный Compaq Deskpro 386 является примером такой конструкции. Однако это было досадно для тех, кто зависел от производительности с плавающей точкой, поскольку преимущества производительности 80387 по сравнению с 80287 были значительными. [ необходима цитата ]
Intel позже предложила модифицированную версию своего 486DX в корпусе i386, названную Intel RapidCAD . Это предоставило возможность обновления для пользователей с совместимым с i386 оборудованием. Обновление представляло собой пару чипов, которые заменили как i386, так и i387. Поскольку конструкция 486DX содержала FPU , чип, который заменил i386, содержал функциональность с плавающей точкой, а чип, который заменил i387, служил очень малой цели. Однако последний чип был необходим для того, чтобы подавать сигнал FERR на материнскую плату и, по-видимому, функционировать как обычный блок с плавающей точкой.
Сторонние производители предлагали широкий спектр обновлений для систем SX и DX. Самые популярные из них были основаны на ядре Cyrix 486DLC/SLC, которое обычно обеспечивало существенное улучшение скорости за счет более эффективного конвейера инструкций и внутреннего кэша L1 SRAM. Кэш обычно составлял 1 КБ, а иногда и 8 КБ в варианте TI. Некоторые из этих чипов обновления (например, 486DRx2/SRx2) продавались самой Cyrix, но чаще их можно было найти в наборах, предлагаемых специалистами по обновлению, такими как Kingston, Evergreen Technologies и Improve-It Technologies. Некоторые из самых быстрых модулей обновления ЦП включали семейство IBM SLC/DLC (отличающееся своим кэшем L1 объемом 16 КБ) или даже сам Intel 486. Многие комплекты обновления 386 рекламировались как простые замены, но часто требовали сложного программного обеспечения для управления кэшем или удвоением тактовой частоты. Частично проблема заключалась в том, что на большинстве материнских плат 386 линия A20 полностью контролировалась материнской платой, а центральный процессор об этом не знал, что вызывало проблемы на процессорах с внутренним кэшем.
В целом, было очень сложно настроить обновления так, чтобы они давали результаты, заявленные на упаковке, и обновления часто оказывались не очень стабильными или не полностью совместимыми.
Оригинальная версия, выпущенная в октябре 1985 года. Версия 16 МГц была доступна за 299 долларов США в количестве 100 штук. [33] Версия 20 МГц была доступна за 599 долларов США в количестве 100 штук. [12] Версия 33 МГц была доступна 10 апреля 1989 года. [16]
Военная версия была сделана с использованием технологии процесса CHMOS III. Она была сделана, чтобы выдерживать 105 рад (Si) или больше. Она была доступна по цене 945 долларов США за штуку в количестве 100 штук. [35]
В 1988 году Intel представила 80386SX , чаще всего называемый 386SX , урезанную версию 80386 с 16-битной шиной данных, в основном предназначенную для недорогих ПК, нацеленных на домашний, образовательный и малый бизнес-рынки, в то время как 386DX оставался высокопроизводительным вариантом, используемым в рабочих станциях, серверах и других требовательных задачах. Процессор оставался полностью 32-битным внутри, но 16-битная шина была предназначена для упрощения компоновки печатной платы и снижения общей стоимости. [c] 16-битная шина упрощала конструкцию, но снижала производительность. К адресной шине было подключено только 24 контакта, поэтому адресация ограничивалась 16 МБ , [d] но это не было критическим ограничением в то время. Различия в производительности были обусловлены не только разной шириной шины данных, но и кэш-памятью , повышающей производительность , часто используемой на платах с использованием оригинального чипа. Эта версия может запускать 32-битное прикладное программное обеспечение на 70–90 процентов по сравнению с обычным процессором Intel386 DX. [36]
Оригинальный 80386 впоследствии был переименован в i386DX, чтобы избежать путаницы. Однако Intel впоследствии использовала суффикс "DX" для обозначения возможности работы с плавающей точкой i486DX. 387SX был частью 80387, которая была совместима с 386SX (т. е. с 16-битной шиной данных). 386SX был упакован в корпус QFP для поверхностного монтажа и иногда предлагался в сокетах для возможности модернизации.
16 МГц 386SX содержит 100-выводной BQFP. Он был доступен по цене 165 долларов США в количестве 1000. Он также имеет производительность от 2,5 до 3 MIPS. [13] Версия с низким энергопотреблением была доступна 10 апреля 1989 года. Эта версия потребляет на 20–30 процентов меньше энергии и имеет более высокую рабочую температуру до 100 °C, чем обычная версия. [16]
80386SL был представлен как энергоэффективная версия для ноутбуков . Процессор предлагал несколько вариантов управления питанием (например, SMM ), а также различные режимы «сна» для экономии заряда батареи . [37] Он также поддерживал внешний кэш объемом от 16 до 64 КБ . Дополнительные функции и методы реализации схем привели к тому, что этот вариант имел в 3 раза больше транзисторов , чем i386DX. i386SL был впервые доступен с тактовой частотой 20 МГц, [38] а позже была добавлена модель с частотой 25 МГц. [39] Благодаря этой системе он сократил занимаемое пространство на 40% по сравнению с системой Intel386 SX. Это означает более легкую и более портативную и экономичную систему. [40]
Дэйв Ванниер, главный архитектор, разработал этот микропроцессор. Им потребовалось два года, чтобы завершить этот проект, поскольку он использует существующую архитектуру 386 для реализации. Это помогает с передовыми инструментами автоматизированного проектирования, которые включают в себя полное моделирование системной платы. Этот кристалл содержит ядро ЦП 386, контроллер шины AT, контроллер памяти, контроллер внутренней шины, логику управления кэшем вместе с кэш-тегами SRAM и часами. Этот ЦП содержит 855 000 транзисторов, использующих одномикронную технологию CHMOS IV. Он был доступен по цене 176 долларов США в партиях по 1000 штук. [3] Версия 25 МГц была доступна в образцах по цене 189 долларов США в партиях по 1000 штук, но эта версия будет доступна в производстве к концу 1991 года. [41] Он поддерживает до 32 мегабайт физического адресного пространства. [42] [43] Существовала версия микропроцессора Intel386 SL без кэша на 20 МГц, на момент публикации образцы этой версии были доступны по цене 101 доллар США в партиях по 1000 штук. [44]
В мае 1991 года Intel представила обновление для систем IBM PS/2 Model 50 и 60 , содержащих микропроцессоры 80286, преобразуя их в полноценные 32-битные системы. Модуль SnapIn 386 представляет собой дочернюю плату с 20-МГц 386SX и 16-Кбайт кэш-памятью SRAM с прямым отображением. Он напрямую подключается к существующему разъему 286 без кабелей, перемычек или переключателей. Зимой 1992 года дополнение к этому модулю теперь поддерживается системами IBM PS/2 Model 50 Z , 30 286 и 25 286. Оба модуля были доступны по цене 495 долларов США. [45] [46]
Специально упакованный процессор Intel 486 DX и фиктивный блок с плавающей запятой (FPU), разработанные как совместимые по выводам замены для процессора i386 и i387 FPU.
Это была встроенная версия 80386SX, которая не поддерживала реальный режим и страничную передачу в MMU.
Управление системой и питанием, встроенные периферийные и вспомогательные функции: два контроллера прерываний 82C59A; таймер, счетчик (3 канала); асинхронный SIO (2 канала); синхронный SIO (1 канал); сторожевой таймер (аппаратный/программный); PIO. Можно использовать с FPU 80387SX или i387SL.
Прозрачный режим управления питанием, интегрированный MMU и TTL-совместимые входы (только 386SXSA). Подходит для использования с FPU i387SX или i387SL.
Прозрачный режим управления питанием и интегрированный MMU . Используется с FPU i387SX или i387SL.
Windows 95 была единственной версией в серии Windows 9x , официально поддерживающей 386, для чего требовался как минимум 386DX, хотя рекомендовалось 486 или лучше; [47] Windows 98 требует 486DX или выше. [48] В семействе Windows NT Windows NT 3.51 была последней версией с поддержкой 386. [49] [50]
Debian GNU/Linux прекратил поддержку 386 с выпуском 3.1 ( Sarge ) в 2005 году и полностью прекратил поддержку в 2007 году с выпуском 4.0 ( Etch ). [51] [52] Ссылаясь на бремя обслуживания примитивов SMP , разработчики ядра Linux прекратили поддержку из кодовой базы разработки в декабре 2012 года, позже выпущенной как версия ядра 3.8. [20]
Среди BSD , релизы FreeBSD 5.x были последними, которые поддерживали 386; поддержка 386SX была прекращена с выпуском 5.2, [53] в то время как оставшаяся поддержка 386 была прекращена с выпуском 6.0 в 2005 году. [54] OpenBSD прекратила поддержку 386 с версии 4.2 (2007), [55] DragonFly BSD с выпуском 1.12 (2008), [56] и NetBSD с выпуском 5.0 (2009). [57]