Intel 386 , первоначально выпущенный как 80386 , а затем переименованный в i386 , представляет собой 32-разрядный микропроцессор , представленный в 1985 году. [a] Первые версии имели 275 000 транзисторов [2] и были центральным процессором (ЦП) многих рабочих станций и высокопроизводительных компьютеров. конец персональных компьютеров того времени.
Версия с частотой 20 МГц работает со скоростью 4–5 MIPS . Он также производит от 8000 до 9000 Dhrystones в секунду. [4] Версия 386 с частотой 25 МГц имела скорость 7 MIPS. [5] Сообщается, что процессор 80386 с частотой 33 МГц работает со скоростью около 11,4 MIPS. [6] При той же скорости он имеет производительность 8 VAX MIPS . [7] Эти процессоры работали примерно по 4,4 такта на инструкцию. [8]
Разработка технологии i386 началась в 1982 году под внутренним названием P3. [9] Запуск разработки 80386 был завершен в июле 1985 года. [9] 80386 был представлен в качестве предсерийных образцов для рабочих станций разработки программного обеспечения в октябре 1985 года. [10] Производство чипов в значительных количествах началось в июне. 1986, [11] [12] вместе с первым подключаемым устройством, которое позволило модернизировать существующие компьютеры на базе 80286 до 386, Translator 386 от American Computer and Peripheral . [13] [14] Поначалу материнские платы для компьютерных систем на базе 80386 были громоздкими и дорогими, но производство стало оправданным после массового внедрения 80386. Первым персональным компьютером , в котором использовалась модель 80386, был Deskpro 386 , разработанный и изготовленный компанией Compaq ; [15] это был первый случай, когда фундаментальный компонент стандарта де-факто , совместимого с IBM PC, был обновлен другой компанией, а не IBM .
В мае 2006 года Intel объявила, что производство i386 прекратится в конце сентября 2007 года. [16] Хотя он уже давно устарел в качестве процессора для персональных компьютеров , Intel и другие компании продолжали производить чипы для встраиваемых систем . Такие системы, использующие i386 или одну из многих его производных, широко распространены, среди прочего, в аэрокосмической технике и электронных музыкальных инструментах. Некоторые мобильные телефоны также использовали (позже полностью статические варианты CMOS ) процессор i386, например BlackBerry 950 [17] и Nokia 9000 Communicator . Linux продолжал поддерживать процессоры i386 до 11 декабря 2012 года, когда ядро сократило инструкции, специфичные для 386, в версии 3.8. [18]
32-битный процессор i386 может правильно выполнять большую часть кода, предназначенного для более ранних 16-битных процессоров, таких как 8086 и 80286, которые повсеместно использовались в ранних ПК . Будучи исходной реализацией 32-битного расширения архитектуры 80286 , [b] набор команд i386, модель программирования и двоичные кодировки по-прежнему являются общим знаменателем для всех 32-битных процессоров x86 , которые называются архитектурой i386 , x86. или IA-32 , в зависимости от контекста. С годами новые реализации одной и той же архитектуры стали в несколько сотен раз быстрее исходного 80386 (и в тысячи раз быстрее, чем 8086). [с]
Этот процессор стал значительным развитием архитектуры x86 и расширил длинную линейку процессоров, восходящую к Intel 8008 . Предшественником 80386 был Intel 80286 , 16-битный процессор с сегментной системой управления и защиты памяти. В 80386 добавлен трехэтапный конвейер инструкций, который в общей сложности доводит до 6-ступенчатого конвейера команд, расширена архитектура с 16-битной до 32-битной и добавлен встроенный блок управления памятью . [19] Этот блок трансляции подкачки значительно упростил реализацию операционных систем, использующих виртуальную память . Он также предлагал поддержку отладки регистров .
80386 имел три режима работы: реальный, защищенный и виртуальный. Защищенный режим , который дебютировал в 286, был расширен, чтобы позволить 386 адресовать до 4 ГБ памяти. С добавлением системы сегментированной адресации он может расширить виртуальную память до 64 терабайт. [20] Совершенно новый виртуальный режим 8086 (или VM86 ) позволял запускать одну или несколько программ реального режима в защищенной среде, хотя некоторые программы были несовместимы. Он имеет масштабируемую индексацию и 64-битный сдвиг ствола. [21]
Возможность настроить процессор 386 так, чтобы он действовал так, как будто он имеет плоскую модель памяти в защищенном режиме, несмотря на тот факт, что он использует модель сегментированной памяти во всех режимах, была, пожалуй, самым важным изменением функции в семействе процессоров x86 до тех пор, пока AMD не выпустила х86-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 был Джон Х. Кроуфорд . [22] Он отвечал за расширение архитектуры и набора команд 80286 до 32-битных, а затем руководил разработкой микропрограммы для чипа 80386.
Линейки процессоров Pentium i486 и P5 были потомками конструкции i386 .
Следующие типы данных поддерживаются напрямую и, таким образом, реализуются одной или несколькими машинными инструкциями i386 ; эти типы данных кратко описаны здесь. [23] :
Следующий исходный код сборки i386 предназначен для подпрограммы с именем , которая копирует строку символов ASCIIZ_strtolower
с нулевым завершением из одного места в другое, преобразуя все буквенные символы в нижний регистр. Строка копируется по одному байту (8-битному символу) за раз.
В примере кода используется регистр EBP (базовый указатель) для создания кадра вызова — области в стеке, которая содержит все параметры и локальные переменные для выполнения подпрограммы. Этот вид соглашения о вызовах поддерживает реентерабельный и рекурсивный код и используется в языках, подобных Алголу, с конца 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 года .
До 386-го года сложность производства микрочипов и неуверенность в надежных поставках делали желательным, чтобы любые полупроводники массового рынка производились из нескольких источников, то есть производились двумя или более производителями, причем вторая и последующие компании производили по лицензии исходная компания. Некоторое время (4,7 года) 386 был доступен только у Intel, поскольку Энди Гроув , тогдашний генеральный директор Intel, принял решение не поощрять других производителей производить процессор в качестве вторичного источника . Это решение в конечном итоге имело решающее значение для успеха Intel на рынке. [ нужна цитация ] 386 был первым значительным микропроцессором, произведенным из одного источника . Использование 386 из одного источника позволило Intel лучше контролировать его разработку и значительно увеличить прибыль в последующие годы.
AMD представила свой совместимый процессор Am386 в марте 1991 года после преодоления юридических препятствий, положив тем самым конец 4,7-летней монополии Intel на 386-совместимые процессоры. С 1991 года IBM также произвела 386 микросхем по лицензии для использования только в ПК и платах IBM.
Изначально Intel планировала, что 80386 дебютирует на частоте 16 МГц. Однако из-за низкой производительности вместо этого была введена частота 12,5 МГц. [26]
На ранних этапах производства Intel обнаружила недопустимую схему, которая могла привести к тому, что система возвращала неправильные результаты в результате 32-битных операций умножения. Не все уже выпущенные процессоры были затронуты, поэтому Intel проверила свои запасы. Процессоры, в которых было обнаружено отсутствие ошибок, были отмечены двойной сигмой (ΣΣ), а затронутые процессоры были помечены как «ТОЛЬКО 16-битное программное обеспечение». [27] Эти последние процессоры продавались как хорошие запчасти, поскольку в то время 32-битные возможности не были актуальны для большинства пользователей. [28]
Математический сопроцессор 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, которое обычно предлагало существенное улучшение скорости благодаря более эффективному конвейеру команд и внутреннему кэшу SRAM L1 . Кэш обычно составлял 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 штук. [29] Версия 20 МГц была доступна за 599 долларов США в количестве 100 штук. [4] Версия 33 МГц была доступна в апреле. 10, 1989. [7]
Военный вариант был изготовлен по техпроцессу CHMOS III. Он был рассчитан на сопротивление 105 рад (Si) или выше. Он был доступен по цене 945 долларов США за штуку в количестве 100 штук .
В 1988 году Intel представила 80386SX , чаще всего называемый 386SX , урезанную версию 80386 с 16-битной шиной данных, в основном предназначенную для недорогих ПК, предназначенных для дома, образования и малого бизнеса. рынках, в то время как 386DX оставался высококлассным вариантом, используемым на рабочих станциях, серверах и других ресурсоемких задачах. ЦП остался полностью 32-битным внутри, но 16-битная шина была предназначена для упрощения компоновки печатной платы и снижения общей стоимости. [d] 16-битная шина упрощала конструкцию, но снижала производительность. К адресной шине было подключено только 24 контакта, поэтому адресация ограничивалась 16 МБ , [e] но в то время это не было критическим ограничением. Различия в производительности были связаны не только с разной шириной шины данных, но и с кэш-памятью, повышающей производительность , часто используемой на платах с использованием оригинального чипа.
Оригинальный 80386 впоследствии был переименован в i386DX, чтобы избежать путаницы. Однако впоследствии Intel использовала суффикс «DX» для обозначения возможности i486DX работать с плавающей запятой . 387SX представлял собой деталь 80387, совместимую с 386SX (т.е. с 16-битной шиной данных). 386SX был упакован в QFP для поверхностного монтажа и иногда предлагался в розетке для возможности обновления.
386SX с частотой 16 МГц содержит 100-выводной BQFP. Он был доступен по цене 165 долларов США в количестве 1000 штук. Он также имел производительность от 2,5 до 3 MIPS. [5] Версия с низким энергопотреблением была доступна 10 апреля 1989 года. Эта версия потребляет на 20–30 процентов меньше энергии и имеет более высокую рабочую температуру до 100 ° C, чем обычная версия. [7]
Модель 80386SL была представлена как энергоэффективная версия для портативных компьютеров . Процессор предлагал несколько вариантов управления питанием (например, SMM ), а также различные «спящие» режимы для экономии заряда батареи . [32] Он также содержал поддержку внешнего кэша размером от 16 до 64 КБ . Дополнительные функции и методы реализации схемы привели к тому, что этот вариант имел более чем в 3 раза больше транзисторов , чем i386DX. Впервые i386SL был доступен с тактовой частотой 20 МГц, [33] позже была добавлена модель с тактовой частотой 25 МГц. [34]
Дэйв Ваннье, главный архитектор, разработал этот микропроцессор. На разработку этого проекта у них ушло два года, поскольку для реализации используется существующая архитектура 386. В этом помогают передовые инструменты компьютерного проектирования, которые включают полное моделирование системной платы. Этот кристалл содержит ядро ЦП 386, контроллер шины AT, контроллер памяти, контроллер внутренней шины, логику управления кэшем, а также SRAM и тактовую частоту кэш-тегов. Этот процессор содержит 855 000 транзисторов, использующих одномикронную технологию CHMOS IV. Он был доступен по цене 176 долларов США в количестве 1000 штук. [3]
Специально упакованный процессор Intel 486 DX и макет модуля с плавающей запятой (FPU), разработанный в качестве совместимой по выводам замены процессора i386 и i387 FPU.
Это была встроенная версия 80386SX, которая не поддерживала реальный режим и подкачку в MMU.
Управление системой и питанием, а также встроенные периферийные и вспомогательные функции: Два контроллера прерываний 82C59A; Таймер, Счетчик (3 канала); Асинхронный SIO (2 канала); Синхронный SIO (1 канал); Сторожевой таймер (аппаратное/программное обеспечение); ПИО. Можно использовать с FPU 80387SX или i387SL.
Прозрачный режим управления питанием, встроенные входы, совместимые с MMU и TTL (только 386SXSA). Можно использовать с FPU i387SX или i387SL.
Прозрачный режим управления питанием и встроенный MMU . Можно использовать с FPU i387SX или i387SL.
Windows 95 была единственной записью в серии Windows 9x, официально поддерживавшей 386, для чего требовалась как минимум 386DX, хотя рекомендовалась версия 486 или выше; [35] Для Windows 98 требуется версия 486DX или выше. [36] В семействе Windows NT Windows NT 3.51 была последней версией с поддержкой 386. [37] [38]
В Debian GNU/Linux поддержка 386 прекращена с выпуском 3.1 ( Sarge ) в 2005 году и полностью прекращена поддержка в 2007 году с выпуском 4.0 ( Etch ). [39] [40] Ссылаясь на трудности сопровождения примитивов SMP , разработчики ядра Linux в декабре 2012 года прекратили поддержку кодовой базы разработки, которая позже была выпущена как версия ядра 3.8. [18]
Среди BSD выпуски FreeBSD 5.x были последними, поддерживавшими 386 ; поддержка 386SX была прекращена в версии 5.2, [41] а оставшаяся поддержка 386 была удалена в версии 6.0 в 2005 году. [42] OpenBSD удалила поддержку 386 в версии 4.2 (2007), [43] DragonFly BSD в версии 1.12 ( 2008), [44] и NetBSD с версией 5.0 (2009 г.). [45]