x86

x86 (англ. Intel 80x86) — архитектура процессора и одноимённый набор команд, впервые реализованные в процессорах компании Intel.

x86
Разработчик Intel, AMD
Разрядность 16 бит, 32 бита и/или 64 бита
Представлена 1978 (16-бит), 1985 (32-бит), 2003 (64-бит)
Архитектура CISC
Тип Регистр-Память
Кодирование СК Переменной длины (1..15 байт)
Реализация переходов флаги условий
Порядок байтов Little-endian
Размер страницы 8086i286: Нет MMU
i386, i486: 4 KiB страницы
Pentium: добавлены 4 MiB страницы
x86-64: добавлены 1 GiB страницы.
Расширения x87, IA-32, MMX, SSE, SSE2, x86-64, SSE3, SSSE3, SSE4, SSE5, AVX, AVX2, SGX
Открытая? Отчасти. Для некоторых дополнительных функций x86 архитектуры может потребоваться лицензия от Intel, по x86-64 может потребоваться дополнительная лицензия от AMD. Процессор 80486 был на рынке уже более 20 лет[1] и поэтому не может быть предметом патентных претензий. Это подмножество архитектуры x86, следовательно, полностью открыто.
Регистры
Общего назначения 16-битные: 6 регистров, частично специализированных + BP и SP;
32-битные: 6 РОН + EBP и ESP;
64-битные: 14 РОН + RBP и RSP.
Вещественные 8 x 80 бит (стековая организация)
SIMD SSE: 8 x 128 бит,
x86-64: 16 x 128 бит,
AVX: 16 x 256 бит,
AVX-512: 32 x 512 бит
 Медиафайлы на Викискладе
80486 DX2

Название образовано от двух цифр, которыми заканчивались названия процессоров Intel ранних моделей — 8086, 80186, 80286 (i286), 80386 (i386), 80486 (i486). За время своего существования набор команд постоянно расширялся, сохраняя совместимость с предыдущими поколениями.

Помимо Intel, набор команд x86 также реализован в процессорах других производителей: AMD, VIA, Transmeta, IDT, Zhaoxin[2], МЦСТ (в процессорах Эльбрус) и др. В настоящее время для 32-разрядной версии архитектуры существует ещё одно название — IA-32 (Intel Architecture — 32).

Основные особенности архитектуры

x86 — это CISC-архитектура. Доступ к памяти происходит по «словам». «Слова» размещаются по принципу little-endian, известному также как Intel-формат. Современные процессоры включают в себя декодеры команд x86 для преобразования их в упрощённый внутренний формат с последующим их выполнением.

Таблица x86-регистров.

Сегментная организация памяти

Реальный режим (real mode)

Реальный режим — классический режим адресации, использованный в первых моделях семейства. Адрес ячейки памяти (для работы с данными или для загрузки исполняемой команды процессора) формируется из сегмента (содержимого сегментного регистра) и оффсета-смещения (константа, регистр, сумма регистра с константой или сумма двух регистров с константой); это записывается в виде SSSS:OOOO (Segment:Offset), где S и O — шестнадцатеричные цифры. Сам адрес вычисляется по формуле «Segment*16 + Offset».

Предельный адрес, к которому можно обратиться — это FFFF:FFFF, то есть FFFF0+FFFF=10FFEF или словами: «один мегабайт + 64 килобайта - 16 байт». Однако, у процессоров 8086, 8088 и 80186 адресная шина была всего 20 бит, и поэтому всё, что выходило за пределы одного мегабайта, оказывалось в начале памяти (в нулевом сегменте). Начиная с процессора 80286, можно было выбирать — работать в этом же режиме для совместимости или же при помощи драйвера HiMem задействовать дополнительный сегмент памяти, в котором можно было разместить DOS и резидентные программы. (Помимо DOS, на компьютере могли работать другие операционные системы. Информация о том, как они использовали верхнюю память, вряд ли сохранилась.)

Оперативная память при этом оказывалась как бы неоднородной — небольшие блоки данных можно было обрабатывать, манипулируя только регистрами оффсета, а для больших блоков данных приходилось манипулировать сегментными регистрами. Для описания этого были введены следующие термины:

  • «параграф» — блок памяти размером 16 байт;
  • «страница» — блок памяти размером 256 байт;
  • «сегмент» — блок памяти размером 65536 байт;

(все блоки начинались с адреса, кратного их размеру).

Начиная с процессора 80386, при помощи драйвера DOS4GW появилась возможность использовать реальный режим с 32-битными регистрами и адресовать до четырёх гигабайт памяти. Сами сегменты тут фактически оказались не нужны.

Микропроцессоры 8086/8088, 80186/80188 и 80286 имели четыре сегментных регистра, т.е могли работать одновременно с четырьмя сегментами памяти, имеющими определённое назначение:

  • CS — сегмент кода, используется для выборки команд программы;
  • DS — сегмент данных, используется по умолчанию для доступа к данным;
  • ES — дополнительный сегмент, является получателем данных в командах обработки строк;
  • SS — сегмент стека, используется для размещения программного стека.

В 80386 добавили ещё два, не имеющих специального назначения:

  • FS — Дополнительный сегментный регистр, специального назначения не имеет;
  • GS — Аналогично предыдущему, но в новых процессорах с 64-битной архитектурой имеет особый статус: может использоваться для быстрого переключения контекстов.

Несмотря на то, что сегментные регистры имеют специальные назначения, архитектура допускает при некоторых обращениях к данным заменить один сегмент на любой другой. Сегменты кода, стека и получателя строк всегда используют регистры CS, SS и ES и не могут быть изменены.

Сегментный подход позволяет разделить всю память на 16 сегментов, начинающихся с адресов, кратных 64 Кбайт. Эти 16 сегментов называют страницами памяти. Обычно деление на страницы используется для совместного функционирования устройств, интерфейсы которых отображены на адресное пространство памяти; тогда каждое такое устройство использует одну страницу памяти, и адрес ячейки в адресном пространстве устройства будет совпадать со смещением в сегменте памяти компьютера. Так в компьютерах IBM PC адресное пространство распределялось таким образом:

  • Первые десять сегментов (640 Кбайт) адресного пространства содержат оперативную память, в которой размещаются:
    • векторы прерываний;
    • область данных BIOS;
    • DOS (если его не заставили разместиться в HiMem);
    • код и данные выполняющихся программ.
  • Два сегмента отдавались под видеоадаптер — VideoBIOS и «окно» для отображения видеопамяти в адресное пространство процессора (для видеоадаптеров CGA, EGA, VGA и остальных способ отображения очень сильно различался).
  • Три сегмента использовались для размещения там разных вещей, например:
    • программы, зашитые в ПЗУ, например, интерпретатор BASIC;
    • BIOS различных плат расширения, например, SCSI-контроллеров (SCSI-BIOS был необходим в случае, если компьютер должен загружаться с диска, подключённого к данному контроллеру);
    • «окна» для отображения туда Expanded-памяти.
  • Последний сегмент первого мегабайта предназначался для размещения ПЗУ со стартовым BIOS. В частности, адрес FFFF:0000 — тот, на который передаётся управление при старте компьютера (то есть после аппаратной инициализации процессор начинает выполнение программы с этого адреса).
  • Первый сегмент за пределами первого мегабайта — HiMem, о котором говорилось выше.

В реальном режиме отсутствует защита памяти и разграничение прав доступа, поэтому он уже практически вышел из употребления. Однако, реальный режим является режимом по умолчанию для всех моделей процессоров семейства x86 — процессор начинает свою работу именно в реальном режиме, в котором выполняется BIOS, MBR, BR и начальная часть OS-Loader. Поэтому все операционные системы, работающие на процессорах x86, имеют в своём составе некоторое количество стартового кода для этого режима процессора.

Защищённый режим (protected mode)

Более совершенный режим, впервые появившийся в процессоре 80286 и в дальнейшем многократно улучшавшийся. Имеет большое количество подрежимов, по которым можно проследить эволюцию семейства ЦП. В этом режиме поддерживается защита памяти, контексты задач и средства для организации виртуальной памяти. Аналогично реальному режиму, тут также используется сегментированная модель памяти, однако уже организованная по другому принципу: деление на параграфы отсутствует, а расположение сегментов описывается специальными структурами (таблицами дескрипторов), расположенными в оперативной памяти. Помимо базового адреса сегмента дескрипторы содержат размер сегмента (точнее, максимально доступное смещение) и различные атрибуты сегментов, использующиеся для защиты памяти и определения прав доступа к сегменту для различных программных модулей. Существует два типа дескрипторных таблиц: глобальная и локальная. Глобальная таблица описывает сегменты операционной системы и разделяемых структур данных. Локальная таблица может быть определена для каждой конкретной задачи (процесса). Сегменты памяти также выбираются все теми же сегментными регистрами; однако вместо номера параграфа сегментный регистр содержит специальную структуру (селектор), содержащую индекс дескриптора в таблице. Сам же дескриптор загружается из памяти во внутренний программно недоступный регистр (кеш), привязанный к каждому сегментному регистру и автоматически загружаемый в момент его модификации.

Каждый программный модуль, выполняемый в защищённом режиме, определяется его сегментом кода, описываемым регистром CS, который и определяет его привилегии по доступу к данным и другим модулям. Существует 4 уровня привилегий (0, 1, 2 и 3), называемых кольцами защиты. Кольцо 0 наиболее привилегированное. Оно предназначено для модулей ядра операционной системы. Кольцо 3 — наименее привилегированное, и предназначено для пользовательских программ. Кольца 1 и 2 используются лишь некоторыми операционными системами. Сегменты данных также имеют атрибуты прав доступа, дающие доступ только коду, имеющему такие же или более высокие привилегии. Система колец позволяет гибко распределять доступ к коду и данным.

Процессор 80386, появившийся в 1985 году, в отличие от своих предшественников стал 32-битным. В нём появилась возможность адресовать до 4 гигабайт памяти, что позволило создавать сегменты памяти размером во всё адресное пространство. Поэтому новые операционные системы использовали вырождённую модель организации памяти, когда все сегменты начинаются с нулевого адреса. Такая модель получила название плоской (flat memory model), и адрес задаётся одним целым 32-разрядным числом (хотя по сути он является смещением внутри вырожденного сегмента), а сами сегменты используются исключительно для организации защиты по кольцам привилегий.

Режим виртуального 8086 (virtual 8086 mode, V86)

Является подрежимом защищенного, но использует адресную модель, аналогичную реальному режиму. Применяется для запуска старых программ 8086 в среде современных операционных систем. В отличие от реального режима, где все программы имеют доступ ко всей памяти (кольцо 0), в режиме V86 программа выполняется в кольце 3 (наименее привилегированном), а особые ситуации и прерывания обрабатываются обычными процедурами защищенного режима.

Смешанные режимы

Сегментное MMU современных процессоров, несмотря на кардинальные различия двух его основных режимов, в обоих работает схожим образом. Это позволяет организовывать нестандартные режимы не описанные в официальной документации, но иногда очень полезные при написании программ. Поскольку известно, что внутренние кэши дескрипторов используются во всех режимах, и именно они используются для адресации памяти, при понимании логики их работы возможна загрузка в них нестандартных значений для текущего режима. В частности, можно создать дескрипторную таблицу в реальном режиме, установить флаг PE, загрузить сегментные регистры уже в защищенном режиме, а потом тут же сбросить флаг PE. До следующей перезагрузки сегментного регистра его кеш дескриптора будет содержать значение, соответствующее защищенному режиму, и если он был загружен должным образом, появится возможность адресации до 4 GiB памяти. Подобные нестандартные режимы получили общее название Unreal mode и активно используются BIOS'ами персональных компьютеров. В процессоре 80286 также была возможность загрузки нестандартных значений дескрипторного кеша при помощи недокументированной команды LOADALL; что было особенно актуально, поскольку процессор 80286 не позволял сбрасывать флаг PE (из защищённого режима выходили с помощью сброса процессора, что сказывалось на производительности).

Страничная организация памяти

В процессорах, начиная с 80386, появилось мощное MMU, позволяющее организовать отображение страниц памяти, что было ещё одним поводом перехода на плоскую модель с приходом 32-разрядных вычислений. Используя трансляцию страниц, операционная система может создать собственное линейное адресное пространство для каждого процесса; также каждая страница имеет атрибуты прав доступа. В отличие от сегментов, таких уровней существует только 2: пользователь и супервизор. Но для большинства современных операционных систем этого вполне достаточно. Страничное MMU доступно только в защищенном режиме.

Расширения

PAE

В более поздних 32-разрядных процессорах (начиная с Pentium Pro) появилось PAE (Physical Address Extension) — расширение адресов физической памяти до 36 бит (возможность адресации 64 Гбайт ОЗУ). Это изменение не затронуло разрядности задач — они остались 32-битными.

MMX

Дополнительный «мультимедийный» (англ. Multi-Media eXtensions) набор инструкций, выполняющих по несколько характерных для процессов кодирования/декодирования потоковых аудио/видеоданных действий за одну машинную инструкцию. Впервые появился в процессорах Pentium MMX. Обеспечивает только целочисленные вычисления.

SSE

SSE (англ. Streaming SIMD Extensions — потоковое SIMD-расширение) — SIMD (англ. Single Instruction, Multiple Data — «одна инструкция — множество данных») набор инструкций, разработанный Intel и впервые представленный в процессорах серии Pentium III. Поддерживает вычисления с плавающей точкой. SSE состоит из восьми 128-битных регистров (с xmm0 до xmm7). Каждый регистр определяет 4 последовательных значения с плавающей точкой одинарной точности. SSE включает в себя инструкции, которые производят операции со скалярными и упакованными типами данных.

SSE2

Улучшенное расширение SSE. Появилось в процессорах Pentium 4. Производит потоковые вычисления с вещественными числами двойной точности (2 числа по 64 бита в одном регистре SSE). Кроме того, добавлены инструкции, аналогичные расширению MMX, работающие с регистрами SSE (16 байт, 8 слов, 4 двойных слова или 2 учётверённых слова в одном регистре). SSE2 включает в себя ряд команд управления кэшем, предназначенных для минимизации загрязнения кэша при обработке неопределенных потоков информации.

SSE3

Продолжение SSE и SSE2, появилось в процессорах Prescott. Набор SSE3 содержит 13 инструкций: FISTTP (x87), MOVSLDUP (SSE), MOVSHDUP (SSE), MOVDDUP (SSE2), LDDQU (SSE/SSE2), ADDSUBPD (SSE), ADDSUBPD (SSE2), HADDPS (SSE), HSUBPS (SSE), HADDPD (SSE2), HSUBPD (SSE2), MONITOR (нет аналога в SSE3 для AMD), MWAIT (нет аналога в SSE3 для AMD). Наиболее заметное изменение — возможность горизонтальной работы с регистрами. Если говорить более конкретно, добавлены команды сложения и вычитания нескольких значений, хранящихся в одном регистре. Эти команды упростили ряд DSP и 3D-операций. Существует также новая команда для преобразования значений с плавающей точкой в целые без необходимости вносить изменения в глобальном режиме округления.

SSSE3

Дополнение к SSE3 для работы с упакованными целыми. Новыми в SSSE3, по сравнению с SSE3, являются 16 уникальных команд, работающих с упакованными целыми. Каждая из них может работать как с 64-битными (MMX), так и с 128-битными (XMM) регистрами, поэтому Intel в своих материалах ссылается на 32 новые команды.

Категории новых инструкций: работа со знаком, сдвиги, перемешивание байт, умножения, горизонтальные сложения и вычитания целых.

SSE4

Новый набор команд Intel, впервые реализованный в процессорах серии Penryn.

SSE4 состоит из 54 инструкций, 47 из них относят к SSE4.1 (они есть только в процессорах Penryn). Полный набор команд (SSE4.1 и SSE4.2, то есть 47 + оставшиеся 7 команд) доступен в процессорах Nehalem. Ни одна из SSE4 инструкций не работает с 64-битными mmx регистрами, только со 128-битными xmm0-15. 32-битных процессоров с SSE4 не было выпущено.

Добавлены инструкции, ускоряющие компенсацию движения в видеокодеках, быстрое чтение из USWC памяти, множество инструкций для упрощения векторизации программ компиляторами. Кроме того, в SSE4.2 добавлены инструкции обработки строк 8/16 битных символов, вычисления CRC32, popcnt. Впервые в SSE4 регистр xmm0 стал использоваться как неявный аргумент для некоторых инструкций.

Новые инструкции SSE4.1 включают ускорение видео, работу с векторными примитивами, вставки/извлечения, скалярное умножение векторов, смешивания, проверки бит, округления, чтение WC-памяти.

Новые инструкции SSE4.2 включают обработку строк, подсчёт CRC32, подсчёт популяции единичных бит, работу с векторными примитивами.

SSE5

Новое расширение x86 инструкций от AMD, названное SSE5. Было анонсировано в 2007 году, но так и не было реализовано как изначально предполагалось. Позднее было заменено XOP, FMA, F16C.

AVX

Следующий набор расширений от Intel. Поддерживается обработка чисел с плавающей запятой упакованных в 256-битные «слова». Для них вводится поддержка тех же команд, что и в семействе SSE. 128-битные регистры SSE XMM0 — XMM15 расширяются до 256-битных YMM0-YMM15

Intel Post 32 nm processor extensions — новый набор инструкций Intel, позволяющий конвертировать числа с половинной точностью в числа с одинарной и двойной, аппаратно получать истинно случайные числа и обращаться к регистрам FS/GS.

AVX2

Дальнейшее развитие AVX. Целочисленные команды SSE начинают работать с 256-битными AVX регистрами.

AES

Расширение системы команд AES — реализация в микропроцессоре шифрования AES.

3DNow!

Набор инструкций для потоковой обработки вещественных чисел одинарной точности. Поддерживается процессорами AMD начиная с K6-2. Процессорами Intel не поддерживается.

Инструкции 3DNow! используют регистры MMX в качестве операндов (в один регистр помещается два числа одинарной точности), поэтому, в отличие от SSE, при переключении задач не требуется отдельно сохранять контекст 3DNow!.

64-битный режим

К началу 2000-х годов стало очевидно, что 32-битное адресное пространство архитектуры x86 ограничивает производительность приложений, работающих с большими объёмами данных. 32-разрядное адресное пространство позволяет процессору осуществлять непосредственную адресацию лишь 4 ГБ данных. Этого может оказаться недостаточным для некоторых приложений, связанных, например, с обработкой видео или обслуживанием баз данных.

Для решения этой проблемы Intel разработала новую архитектуру IA-64 — основу семейства процессоров Itanium. Для обеспечения обратной совместимости со старыми приложениями, использующими 32-разрядный код, в IA-64 был предусмотрен режим эмуляции. Однако на практике данный режим работы оказался чрезвычайно медленным.

Компания AMD предложила альтернативное решение проблемы увеличения разрядности процессора. Вместо того, чтобы изобретать совершенно новую систему команд, было предложено ввести 64-разрядное расширение к уже существующей 32-разрядной архитектуре x86. Первоначально новая архитектура называлась x86-64, позже она была переименована в AMD64. Первоначально новый набор инструкций поддерживался процессорами семейств Opteron, Athlon 64 и Turion 64 компании AMD. Успех процессоров, использующих технологию AMD64, наряду с вялым интересом к архитектуре IA-64, побудили Intel приобрести лицензию на набор инструкций AMD64. При этом был добавлен ряд специфических инструкций, не присутствовавших в изначальном наборе AMD64. Новая версия архитектуры получила название EM64T.

В литературе и названиях версий своих программных продуктов компании Microsoft и Sun используют объединённое именование AMD64/EM64T, когда речь заходит о 64-разрядных версиях их операционных систем Windows и Solaris соответственно. В то же время, поставщики программ для операционных систем семейства Linux, BSD используют метки «x86-64» или «amd64», а в Mac OS X используется метка «x86_64», если необходимо подчеркнуть, что данное ПО использует 64-разрядные инструкции.

Процессоры

Процессоры Intel

8086

16-разрядный процессор Intel 8086, был создан в июне 1978 года. Сначала работал на частотах 4,77 МГц, затем на 8 и 10 МГц. Изготавливался по технологии 3 мкм и имел 29 000 транзисторов.

8088

Чуть позже, в 1979 году, был разработан Intel 8088, который работал на тех же частотах, что и Intel 8086, но использовал 8-разрядную шину данных (внутренняя шина процессора осталась 16-разрядной) для обеспечения большей совместимости с имевшейся в то время в ходу периферией. Благодаря более низкой цене, широко использовался в ранних системах IBM PC вместо 8086.

80186/80188

В 1982 году были выпущены 80186 и 80188, которые первоначально не получили широкого распространения. В то же время, эти процессоры оказались чрезвычайно удачными для использования во встроенных системах и в различных модификациях выпускаются до настоящего времени.[3] В эти процессоры были первоначально добавлено несколько новых команд, повышена тактовая частота. Впоследствии появились модификации, содержащие дополнительные аппаратные средства, такие, как интегрированные контроллеры последовательного порта.

80286

Объявлен в 1982 году. Работал на частотах 6, а затем 8, 10, 12, 16, 20 МГц. Производился по техпроцессу 1,5 мкм и содержал около 134 тыс. транзисторов. С его появлением появилось такое понятие, как защищённый режим (protected mode) и виртуальная память. Производительность процессора по сравнению с 8086 увеличилась в несколько раз (0,99-2,6 млн операций в секунду).

80386 (i386)

Первый 32-разрядный процессор, работал на частотах 16-40 МГц. Появился в 1985 году. Знаменовал собой революцию в мире процессоров x86. Основные принципы, заложенные в этом чипе, без кардинальных изменений дожили и до наших дней (за всё это время изменения касались, в основном, повышения производительности, расширения набора команд, увеличения разрядности). Первые 386 процессоры содержали серьёзную ошибку, приводящую к невозможности функционирования в защищенном режиме. Исправленная версия называлась 386DX.

Также выпускались более дешевые процессоры i386SX с урезанной до 16 бит внешней шиной данных и 24-битной шиной адреса.

Для встроенного применения выпускался и выпускается процессор i386EX. Он имеет на кристалле последовательные порты, программируемые таймеры (совместимые с Intel 8254), контроллеры приоритетных прерываний (совместимые с Intel 8259A) и контроллеры прямого доступа к памяти (совместимые с Intel 8237A).

i386 — первый процессор, который мог использовать кэш-память (расположенную на внешнем чипе).

80486 (i486)

Процессор i486 (1989 год) является усовершенствованным 386 процессором и первым скалярным процессором Intel (ряд операций выполнялись за один такт). Имел встроенный FPU (Floating Point Unit — блок вычислений с плавающей запятой) и впервые — встроенную кэш-память (8 Кбайт). 80486 — первый процессор Intel, для которого была применена технология умножения частоты шины FSB (в моделях DX2-50, DX2-66, DX4-75 и DX4-100).

Для ноутбуков и встраиваемых систем в начале 1990-х годов была выпущена «облегчённая» модификация i486SX без встроенного блока FPU.

Существовала также модификация для встроенных применений — i486GX. Она представляла собой низковольтный 486SX с шиной данных, урезанной до 16 бит. Корпусировка i486GX — TQFP-176, частоты — от 16 МГц при Vcore = 2,0 В до 33 МГц при 2,7 В.

Intel RapidCad

Intel RapidCad — модификация 486, набор из двух микросхем. Основная устанавливалась в разъём 386DX и представляла собой 486DX без кэша L1, но с сопроцессором. Дополнительная микросхема была заглушкой для гнезда 387DX и служила для обработки сигнала FERR.

Intel486 OverDrive

Intel486 OverDrive (P23T) — микропроцессор, предназначенный для модернизации систем на базе микропроцессоры Intel 486.

Pentium (i586)

Pentium (1993 год. Intel отказалась от номерных названий типа 8086, 80286 и др., потому что не могла запатентовать числа) — первый суперскалярный и суперконвейерный процессор Intel.

Суперскалярность — означает, что процессор позволяет выполнять более одной операции за один такт. Суперконвейерность означает, что процессор имеет несколько вычислительных конвейеров. У Pentium их два, что позволяет ему при одинаковых частотах в идеале быть вдвое производительней 486, выполняя сразу 2 инструкции за такт.

Кроме того, особенностью процессора Pentium являлся полностью переработанный и очень мощный на то время блок FPU, производительность которого оставалась недостижимой для конкурентов вплоть до конца 1990-х годов.

Pentium OverDrive

Pentium OverDrive — микропроцессор, предназначенный для модернизации систем на базе микропроцессоров Intel 486. Устанавливался в Socket 3, имел удвоенный объём кэша L1 с организацией Write-Thru, встроенный стабилизатор питания, умножение ×2.5 и частоты 63 и 83 МГц.

Pentium Pro (i686)

Pentium Pro (1995 год) — первый процессор шестого поколения. Идеи и технологии, заложенные в данный чип, определили архитектуры всех современных x86-процессоров: блоки предсказания ветвлений, переименование регистров, RISC-ядро, интегрированная в один корпус с ядром кэш-память второго уровня. Однако технологическая сложность ядра данного процессора привела к сравнительно невысокому выходу годных чипов при технологиях того времени, что сказалось на высокой цене Pentium Pro. При этом процессор обладал достаточно низкой производительностью при исполнении 16-разрядного кода. Поэтому данный процессор применялся только в High-End системах и серверах.

Pentium MMX (i586)

Pentium MMX (январь 1997 года) — процессор пятого поколения, и, по сути, просто модификация ядра Pentium. Был добавлен новый блок целочисленных матричных вычислений MMX и увеличен до 32 Кбайт объём кэш-памяти первого уровня. Напряжение питания ядра было понижено до 2,8 В, в то время как периферия процессора питалась по прежнему напряжением 3,3 В. Это потребовало изменения материнских плат путём добавления дополнительного источника 2,8 В (MMX-compatible).

Pentium II (i686)

Pentium II (май 1997 года) — модификация ядра Pentium Pro с целью сделать его более доступным. Интегрированный кэш и тег кэша были вынесены на отдельные микросхемы с пониженной в два раза частотой. Это упростило и удешевило процессор, хотя и сделало его более медленным, чем Pentium Pro.

Первые процессоры Pentium II выпускались с кэш-памятью второго уровня ёмкостью 256 Кбайт, затем её объём был увеличен до 512 Кбайт.

Новая конструкция процессора потребовала размещения элементов на печатной плате, что, в свою очередь, привело к изменению конструктива процессора. Данные ЦПУ выпускались в виде картриджей SECC, устанавливающихся в специальный разъём на плате (Slot 1).

Кроме того, в ядро Pentium II был добавлен блок MMX.

Celeron

Celeron — упрощённая модификация процессоров Pentium II / III / IV / Core / Core 2 для построения недорогих компьютеров. Первый Celeron (ядро Covington, частоты 266/300 МГц) представлял собой Pentium II, лишенный кеша второго уровня и пластикового картриджа. Печатная плата также была упрощена. Такая упаковка получила название SEPP (Single Edge Processor Package). В результате эти процессоры демонстрировали удручающе низкую производительность, хотя стоили очень недорого и легко прибавляли до 50 % частоты при разгоне. Все последующие варианты этого процессора имели интегрированный полночастотный кеш второго уровня. Основные отличия процессоров Celeron в объёме этого кэша и частоте шины, а также часто в увеличенной латентности доступа к кэш-памяти по отношению к оригинальному процессору.

Вторая модификация Celeron (ядро Mendocino, частоты 300…533 МГц) на многих задачах демонстрировала более высокую производительность, чем равночастотный Pentium II. Это объяснялось тем, что маленький (128 Кбайт) кеш Mendocino располагался на одном кристалле с ядром и работал на частоте ядра, в то время как большой (512 Кбайт) кеш Pentium II находился достаточно далеко от ядра и работал на половинной частоте. Больше таких промашек фирма Intel не допускала, и все последующие Celeron гарантированно медленнее полноценных процессоров того же поколения.

Pentium III (i686)

Pentium III, изготовленный изначально по технологическому процессу 0,18 мкм, отличается от P2 главным образом добавлением инструкций SSE. Поздние процессоры этой серии изготавливались по технологическому процессу 0,13 мкм, получили интегрированную в кристалл ядра полночастотную кэш-память (сначала 256 Кбайт, затем — 512 Кбайт) и послужили прообразом процессоров архитектуры Pentium M. Выпускались в конструктивах как SECC/SECC2 (Slot 1), так и FCPGA-370 (PGA-370).

Pentium M

Pentium M — очень сильно доработанная версия процессора Pentium III на ядре Tualatin, разработанная для использования в мобильных компьютерах.

Pentium 4 (i786)

Pentium 4 — принципиально новый процессор с гиперконвейеризацией (hyperpipelining) — с конвейером, состоящим из 20 ступеней. Согласно заявлениям Intel, процессоры, основанные на данной технологии, позволяют добиться увеличения частоты примерно на 40 % относительно семейства P6 при одинаковом технологическом процессе (при «правильной» загрузке процессора). На практике же, первое поколение процессоров работало даже медленнее, чем Pentium III.

Позже были дополнены поддержкой Hyper-threading и 64-битного кода.

Core/Core 2

После провала последнего поколения процессоров Pentium 4 на ядре Tejas, было решено обратиться к другой ветви микроархитектуры. В основе процессоров лежит переработанное ядро Pentium M. Таким образом, ядро P6, использованное ещё в процессорах Pentium Pro, продолжило свою эволюцию, нарастив частоту со 150 МГц до 3,2 ГГц и обзаведясь новой системной шиной, поддержкой многоядерности, мультимедийных инструкций.

Процессоры Core — решение для ноутбуков, одно- и двухъядерное, исполняющее 32-битный код.

Процессоры Core 2 — выпускаются как в настольном, так и мобильном исполнении, включают ряд микроархитектурных улучшений и способны исполнять 32/64-битный код. Количество ядер варьируется от одного до четырёх.

Core i7/Core i5/Core i3

Дальнейшее развитие идей, заложенных в процессорах Core 2. Сохранив основную конструкцию процессорных ядер, появившийся первым Core i7 получил модульную структуру, позволяющую легко варьировать их количество, встроенный контроллер памяти (трёхканальной DDR3 в высшем сегменте и двухканальной DDR3 в массовом) и новую шину, соединяющую процессор с чипсетом. Микроархитектурные улучшения позволяют Core i7 показывать повышенную производительность в сравнении с Core 2 на равных частотах. Большое внимание было уделено вопросу энергоэффективности нового процессора.

Позже появились более дешевые Core i5/i7 с двухканальным контроллером памяти и четырьмя ядрами, затем — Core i3/i5 с двумя ядрами и встроенным видеоядром.

В секторе наиболее производительных решений выпускаются также процессоры Core i7 с трехканальным контроллером памяти и шестью ядрами. Благодаря использованию технологии Hyper-threading эти процессоры способны одновременно исполнять до 12 потоков команд.

Также в ассортименте компании Intel есть особо производительные процессоры для домашних ПК: Core i7 с трехканальным контроллером памяти и восемью ядрами. Количество потоков возросло до 16.

Atom

Intel Atom — недорогие сверхэкономичные одно- и двухъядерные процессоры, предназначенные для использования в так называемых интернет-компьютерах — нетбуках и неттопах (компьютерах, в которых вычислительная мощность пожертвована в пользу экономичности, бесшумности и малогабаритности).

В основе — модифицированное ядро от первых Pentium, которое адаптировали под новый техпроцесс, добавили возможность исполнения 64-битного кода и мультимедийных инструкций, а также кэш-память второго уровня и поддержку многопоточного исполнения (SMT, аналог Hyper-threading). Для упрощения конструкции было решено отказаться от внеочередного исполнения команд, что не лучшим образом сказалось на производительности.

Стараниями корпорации Intel новые процессоры серии Atom были оснащены 4 полноценными ядрами и усовершенствованным предсказанием ветвлений, что позволило новым планшетным ПК на их основе стать конкурентоспособными в производительности с ноутбуками среднего класса, выпущенными в конце 2000-х годов.

Xeon

Семейство процессоров, ориентированных на серверы и многопоточные вычисления.

Первый представитель этого семейства базировался на архитектуре Pentium II, представлял собой картдридж с печатной платой, на которой монтировались ядро, кэш-память второго уровня и тег кэша. Монтировался в гнездо Slot 2.

Современные Xeon базируются на архитектуре Core 2/Core i7.

Процессоры AMD

Am8086 / Am8088 / Am186 / Am286 / Am386 / Am486

Клоны соответствующих процессоров от Intel. Обычно выпускались с максимальной частотой на ступеньку выше, чем у оригинала. Вплоть до 486DX2-66 других различий между процессорами не было. Программно отличить эти процессоры было почти невозможно, но с помощью модификации кода программы на ассемблере можно было счётчиком измерить размер буфера команд микропроцессора, который существовал в intel-процессорах вплоть до pentium и имел различный размер в байтах, и отличить один тип процессора от другого. Также анализируя возможность выполнять различные дополнительные команды, которые добавлялись в различных моделях микропроцессоров, можно было различить все эти микросхемы.

5x86

Клон i486. В то время, как Intel для i486 остановился на частоте 100 МГц, AMD выпускала процессоры с частотами до 133 МГц. Также они отличались увеличенным объёмом кэша первого уровня (16 Кбайт) и множителем (×4).

K5 / SSA5

Аналоги Pentium. Первые процессоры, разработанные фирмой AMD самостоятельно. Несмотря на превосходство в целочисленных операциях над аналогами от Intel (в ядре данного процессора применялся ряд технологий шестого поколения), производительность блока вычислений с плавающей запятой значительно уступала по производительности процессорам Pentium с аналогичной тактовой частотой. Кроме того, наблюдалась плохая совместимость с ПО некоторых производителей. Недостатки K5 были чрезвычайно преувеличены в различных сетевых и других неформальных обсуждениях и на долгое время способствовали (в целом — несправедливому) ухудшению репутации продукции AMD у пользователей.[4]

K6

Принципиально новый процессор AMD (апрель 1997 года), основанный на ядре, приобретённом у NexGen. Данный процессор имел конструктив пятого поколения, однако относился к шестому поколению и позиционировался как конкурент Pentium II. Включал в себя блок MMX и несколько переработанный блок FPU. Однако данные блоки всё равно работали на 15-20 % медленнее, чем у аналогичных по частоте процессоров Intel. Процессор имел 64 Кбайт кэша первого уровня.

В целом, сравнимая с Pentium II производительность, совместимость со старыми материнскими платами и более ранний старт (AMD представила К6 на месяц раньше, чем Intel представила P-II) и более низкая цена сделали его достаточно популярным, однако проблемы с производством у AMD значительно испортили репутацию данного процессора.

K6-2

Дальнейшее развитие ядра К6. В этих процессорах была добавлена поддержка специализированного набора команд 3DNow!. Реальная производительность, однако, оказалась существенно ниже, чем у аналогичных по частоте Pentium II (это было вызвано тем, что прирост производительности с ростом частоты у P-II был выше благодаря внутреннему кэшу) и конкурировать К6-2 смогли лишь с Celeron. Процессор имел 64 Кбайт кэша первого уровня.

K6-III

Более успешная в технологическом плане, чем K6-2, попытка создания аналога Pentium III. Однако маркетингового успеха не имела. Отличается наличием 64 Кбайт кэша первого уровня и 256 Кбайт кэша второго уровня в ядре, что позволяло ему на равной тактовой частоте обгонять по производительности Intel Celeron и не очень существенно уступать ранним Pentium III.

K6-III+

Аналог K6-III с технологией энергосбережения PowerNow! и более высокой частотой и расширенным набором инструкций. Изначально предназначался для ноутбуков. Устанавливался и в настольные системы с процессорным разъёмом Super 7. Применялся для апгрейда настольных систем с процессорным разъёмом Socket 7 (Только на материнских платах которые подают на процессор два напряжения питания, первое для блоков ввода/вывода процессора и второе для ядра процессора. Не все изготовители обеспечивали двойное питание на первых моделях своих материнских плат с разъемом Socket 7).

K6-2+

Аналог К6-III+ с урезанным до 128 Кбайт кэшем второго уровня.

Athlon

Очень успешный процессор, благодаря которому фирма AMD сумела восстановить почти утраченные позиции на рынке микропроцессоров. Кэш первого уровня — 128 Кбайт. Первоначально процессор выпускался в картридже с размещением кэша второго уровня (512 Кбайт) на плате и устанавливался в разъём Slot A (который механически, но не электрически совместим со Slot 1 от Intel). Затем перешёл на разъём Socket A и имел 256 Кбайт кэша второго уровня в ядре. По быстродействию — примерный аналог Pentium III.

Duron

Урезанная версия Athlon, отличается от родителя объёмом кэша второго уровня (всего 64 Кбайт, зато интегрированным в кристалл и работавшем на частоте ядра).

Конкурент Celeron поколений Pentium III / Pentium 4. Производительность заметно выше, чем у аналогичных Celeron, и при выполнении многих задач соответствует Pentium III.

Athlon XP

Продолжение развития архитектуры Athlon. По быстродействию — аналог Pentium 4. По сравнению с обычным Athlon, добавлена поддержка инструкций SSE.

Sempron

Более дешёвый (за счёт уменьшенного кэша второго уровня) вариант процессоров Athlon XP и Athlon 64.

Первые модели Sempron являлись перемаркированными чипами Athlon XP на ядре Thoroughbred и Thorton, имевшими 256 Кбайт кэша второго уровня, и работавшими на 166 (333 DDR) шине. Позднее под маркой Sempron выпускались (и выпускаются) урезанные версии Athlon 64/Athlon II, позиционируемые как конкуренты Intel Celeron. Все Sempron имеют урезанный кеш 2-го уровня; младшие модели Socket 754 имели заблокированные Cool&quiet и x86-64; Socket 939 модели имели заблокированный двухканальный режим работы памяти.

Opteron

Первый процессор, поддерживающий архитектуру x86-64.

Athlon 64

Первый не серверный процессор, поддерживающий архитектуру x86-64.

Athlon 64 X2

Продолжение архитектуры Athlon 64, имеет 2 вычислительных ядра.

Athlon FX

Имел репутацию «самого быстрого процессора для игрушек». Является, по сути, серверным процессором Opteron 1xx на десктопных сокетах без поддержки registered-memory. Выпускается малыми партиями. Стоит значительно дороже своих «массовых» собратьев.

Phenom

Дальнейшее развитие архитектуры Athlon 64, выпускается в вариантах с двумя (Athlon 64 X2 Kuma), тремя (Phenom X3 Toliman) и четырьмя (Phenom X4 Agena) ядрами.

Phenom II

Модификация Phenom. Небольшие архитектурные изменения, переход на более тонкий технологический процесс и добавление кэша L3 объёмом от 4 до 6 Мбайт позволили нарастить производительность этих процессоров на 10-20 % по сравнению с предшественниками. Выпускаются в конструктивах Socket AM2+ и Socket AM3. При этом первые могут работать только с памятью DDR2, а вторые — как с DDR2, так и с DDR3. Максимальное число ядер выросло до шести.

Athlon II

Phenom II без кеша L3 и количеством ядер не более четырёх.

Turion

Мобильная версия Athlon 64 с пониженным энергопотреблением и расширенными средствами управления питанием. Выпускается в вариантах с одним и двумя ядрами.

Athlon Neo

Максимально оптимизированные по энергопотреблению одно- и двухъядерные процессоры, близкие родственники мобильных Sempron и Turion 64 X2. Выпускаются в исполнении BGA, предназначены для использования в легких и тонких ноутбуках. Позиционируются, как конкуренты Intel Atom.

Geode

Интегрированное решение (SoC), включающее в себя функции северного моста чипсетов. Модели с наименованием SCxxxx объединяют в одном корпусе ядро процессора, контроллер памяти, графический адаптер и устройство ввода-вывода. Процессоры предназначены для построения тонких клиентов, пользовательских приставок и встроенных контроллеров. Вся серия обладает небольшой потребляемой мощностью и стоимостью.

Первые модели выпускались фирмой Cyrix под названием MediaGX и имели ядро Cyrix 6x86. После поглощения Cyrix компанией National Semiconductor и перепродажи торговой марки компании VIA, процессор был переименован в Geode, разработка процессора была продолжена инженерами National Semiconductor. Впоследствии чип и все наработки были проданы компании AMD. Сейчас Geode выпускается фирмой AMD в трёх вариантах. Geode LX и Geode GX основаны на старом ядре Cyrix 6x86. Geode NX имеет ядро Athlon XP. Развитие этого семейства прекратилось ещё в 2006 году, однако чипы будут продолжать выпускаться до тех пор, пока на них есть спрос.

Процессоры Harris Semiconductor

Harris 8086/88

Harris Semiconductor производила клоны Intel 8086/8088[5] — Harris HS80C86/883 и HS80C88/883.

Harris 286

Harris Semiconductor выпускала самые быстрые по частоте клоны процессора 80286 — максимальная частота HS80C286 составляла 25 МГц (вся линейка — 12, 16, 20 и 25 МГц). Ядро процессоров было точной копией Intel 80286, как и у большинства других клонов.

Процессоры Cyrix

Cx486-SLC

Процессоры, предназначенные для установки в гнездо 386SX. Обладали кэш-памятью первого уровня размером 1 Кбайт и набором команд 486 процессоров. Встроенного сопроцессора не имели. В дальнейшем также выпускались модели с удвоением частоты (Cx486SRx²). Предназначались в основном для дешевого апгрейда компьютеров с процессором 386SX.

Cx486-DLC

Процессоры, предназначенные для установки в гнездо 386DX. Обладали кэш-памятью первого уровня размером 1 Кбайт и набором команд 486 процессоров. Встроенного сопроцессора не имели. В дальнейшем также выпускались модели с удвоением частоты (Cx486DRx²). Предназначались в основном для дешевого апгрейда компьютеров с процессором 386DX.

Cx486-S

Аналог i486SX собственной разработки Cyrix. Уступал по производительности аналогам от Intel и AMD.

Cx486-DX

Аналог i486DX собственной разработки Cyrix. Слегка уступал по целочисленной производительности аналогам от Intel и Amd, однако превосходил их в вычислениях с плавающей точкой (сказалось то, что разработанные Cyrix математические сопроцессоры для 386 были одними из лучших).

Cx5x86 (M1sc)

Побочный продукт разработки M1 — M1 scalar, его упрощённая версия для гнезда 486. Был выпущен, чтобы противостоять Intel в борьбе с его Pentium. В Cx5x86 использовались особенности архитектуры, присущие пятому поколению процессоров — конвейеризованный АЛУ, блок предсказания переходов, декодирование и исполнение инструкций за один такт. Общий для инструкций и данных кэш с обратной записью имел объём 16 Кбайт. Процессор оказался достаточно удачным, но особого распространения получить не успел. Выпускался с частотами 100 и 120 МГц.

Cx6x86 (M1)

Несмотря на намёк на 6-е поколение процессоров в названии, Cx6x86 был процессором 5-го поколения. Ядро процессора суперскалярное. Кеш первого уровня — общий, 16 Кбайт. В маркировке этих процессоров использовался так называемый Pentium Rating. Например, процессор с PR-200 должен был соответствовать по производительности процессору Intel Pentium с частотой 200 МГц. При этом реальная частота процессора могла быть значительно ниже. Выпускались эти процессоры с частотой от 80 до 150 МГц и PR от 90+ до 200+. Позже также выпускалась модификация с пониженным энергопотреблением и двойным питанием — Cx6x86L.

Cx6x86MX (MII)

Усовершенствованная версия Cx6x86 называлась Cx6x86MX. Основные отличия — увеличенный до 64 Кбайт кеш первого уровня, поддержка инструкций MMX. Частоты — 133…233 МГц, PR — 166…266. В дальнейшем процессор получил поддержку частоты системной шины 100 МГц, и стал называться Cyrix MII (это было сделано для того, чтобы позиционировать процессор как конкурент Intel Pentium II). Частоты — 225…300 МГц, PR — 300…433.

MediaGX

Практически, SoC. В одном корпусе размещались ядро процессора (сначала — Cx5x86, потом — Cx6x86MX), контроллеры ОЗУ и шины PCI, а также UMA-видеоядро. Процессор использовал своё собственное гнездо, не был поддержан производителями материнских плат и распространения не получил. Частоты — 120…180 МГц, PR — 180…233.

Клоны процессоров Cyrix выпускались также IBM, Texas Instruments, SGS Thompson.

На базе ядер Cyrix производятся или производились процессоры VIA, AMD, National Semiconductor.

Процессоры IDT

IDT-C6 Centaur WinChip

Процессор разработан Centaur Technology — подразделением IDT. Являясь процессором под Socket 7, по архитектуре он был гораздо ближе к процессорам 80486. Один 4-стадийный целочисленный конвейер, операции сопроцессора не конвейеризовались. Также отсутствовали внеочередное исполнение, предсказание ветвлений и переименование регистров. При этом процессор имел блок исполнения инструкций MMX, хотя и вдвое более медленный, чем у Pentium MMX. За счёт этого ядро процессора было очень простым, небольшим по количеству транзисторов, габаритам и энергопотреблению. Процессоры выпускались с частотами 180, 200, 225 и 240 МГц и не требовали двойного питания.

WinChip-2

Улучшенный вариант предыдущего процессора. Сопроцессор стал конвейеризуемым, удвоена производительность блока MMX, появилась поддержка инструкций 3DNow!. Частоты — 200—250 МГц.

WinChip-2A

Всё то же, но по более тонкой технологии. Как следствие — потребность в двойном питании (2,8 / 3,3 В).

WinChip-3

Планировался как улучшенная версия предыдущей модели. Основное улучшение — удвоенный размер кэш-памяти. Однако выпущен он так и не был. Centaur Technology в полном составе была продана VIA и на базе этой разработки был сделан VIA C3 с ядром Samuel.

Процессоры OKI

OKI M80C86

Клон 8086. Выпускался в корпусах типа DIP и QFP.

OKI M80C88

Клон 8088. Выпускался в корпусах типа DIP и QFP.

Процессоры Rise Technology

Rise mP6

Процессор для Socket 7 с поддержкой инструкций MMX. Отличался низким энергопотреблением и невысокой производительностью. Выпускался с частотами 150, 166, 190, 200, 250 МГц. Особого распространения не получил и ядро mP6 было продано компании SiS.

Процессоры VIA

Cyrix III / VIA C3

Первый процессор, выпущенный под маркой VIA. Выпускался с разными ядрами от разных команд разработчиков. Разъём Socket 370.

Первый выпуск — на базе ядра Joshua, доставшегося VIA вместе с командой разработчиков Cyrix.

Второй выпуск — с ядром Samuel, разработанным на базе так и не вышедшего IDT WinChip-3. Отличался отсутствием кэш-памяти второго уровня и, соответственно, крайне низким уровнем производительности.

Третий выпуск — с ядром Samuel-2, улучшенной версией предыдущего ядра, оснащённой кэш-памятью второго уровня. Процессор выпускался по более тонкой технологии и имел сниженное энергопотребление. После выпуска этого ядра бренд «VIA Cyrix III» окончательно уступил место «VIA С3».

Четвёртый выпуск — с ядром Ezra. Был также вариант Ezra-T, адаптированный для работы с шиной, предназначенной для процессоров Intel с ядром Tualatin. Дальнейшее развитие в направлении энергосбережения.

Пятый выпуск — с ядром Nehemiah (C5P). Это ядро наконец получило полноскоростной сопроцессор, поддержку инструкций SSE, а также поддержку шифрования AES и аппаратный генератор случайных чисел. При этом процессор потерял поддержку инструкций 3DNow!.

VIA C7

Дальнейшее развитие VIA C3. Ядро Esther (C5J), корпусировка — nanoBGA2 (21×21 мм), впаивается прямо на плату. Добавлены аппаратная поддержка Secure Hash SHA-1 и SHA-256 и шифрования RSA, поддержка NX-bit, поддерживаются MMX, SSE, SSE2 и SSE3. Дальнейшее снижение энергопотребления при рабочих частотах до 2 ГГц. Собственная системная шина (VIA V4 800 МГц) для связи с чипсетом. Выпускается также в мобильном (VIA C7-M) и десктопном (VIA C7-D) исполнении.

VIA Eden ESP

Интегрированное решение, включающее в себя процессор VIA C3 c ядром Nehemiah C5P и северный мост со встроенной UMA-графикой. Отличается крайне низким энергопотреблением (до 7 Вт при частоте 1 ГГц). Выпускается с частотами от 300 МГц (VIA Eden ESP 3000) до 1 ГГц (VIA Eden ESP 10000). Совместимые южные мосты — VT8235M, VT8237R+ (с поддержкой SATA), VT8251 (2×1 PCI-E) и VIA 686B.

VIA CoreFusion

Дальнейшее развитие идей VIA Eden ESP. Выпускается в двух вариантах — VIA Mark и VIA Luke, отличающихся интегрированным видеоядром, поддерживаемым типом памяти и рабочими частотами. Для VIA Mark — это S3 Graphics ProSavage4 / SDR PC133 / 533/800 МГц, а для VIA Luke — VIA UniChrome Pro / DDR PC3200 / 533/800/1000 МГц. Совместимые южные мосты: VT8235M, VT8237R+ (с поддержкой SATA), VT8251 (2×1 PCI-E) и VIA 686B.

VIA Nano

Первый x86-64 процессор VIA, на ядре Isaiah. Совместим по выводам с VIA C7. Выпускается с частотами от 1 ГГц до 1,8 ГГц. Энергопотребление модели 1,6 ГГц — до 17 Вт при полной загрузке. Среди нововведений — внеочередное исполнение инструкций. Позиционируется как конкурент Intel Atom.

Процессоры NEC

Выпускала серию процессоров, часть из которых (ядро V20/V30) была программно совместима как с 80186, так и с 8080. Переключение между режимами работы осуществлялось при помощи трёх дополнительных инструкций. Аппаратно они выглядели как сильно ускоренная версия 8088 или 8086.

Процессоры на основе ядра V33 не имели режима эмуляции 8080, зато поддерживали, при помощи двух дополнительных инструкций, расширенный режим адресации.

Процессоры NexGen

Nx586

В марте 1994 был представлен процессор NexGen Nx586. Он позиционировался как конкурент Pentium, однако изначально не имел встроенного сопроцессора. Использование собственной шины повлекло за собой необходимость применения собственных чипсетов, NxVL (VESA Local Bus) и NxPCI 820C500 (PCI), и ни с чем несовместимого процессорного гнезда. Чипсеты разрабатывались совместно с VLSI и Fujitsu. Nx586 был суперскалярным процессором и мог исполнять по две инструкции за такт. Кэш L1 был раздельным (16 Кбайт под инструкции + 16 Кбайт под данные). Контроллер кэша L2 был интегрирован в процессор, сам же кэш находился на материнской плате. Так же, как и Pentium Pro, Nx586 внутри был RISC-процессором. Отсутствие поддержки инструкций CPUID в ранних модификациях этого процессора приводило к тому, что программно он определялся как быстрый 386 процессор. С этим же было связано то, что Windows 95 отказывался устанавливаться на компьютеры с такими процессорами. Для решения этой проблемы применялась специальная утилита (IDON.COM), представлявшая Nx586 для Windows как 586 class CPU. Nx586 выпускался на мощностях IBM.

Был также разработан сопроцессор Nx587 FPU, который монтировался на заводе поверх кристалла процессора. Такие «сборки» получили маркировку Nx586Pf. При обозначении производительности Nx586 использовался P-rating — c PR75 (70 МГц) до PR120 (111 МГц).

Nx686

Следующее поколение процессоров NexGen, которое так и не было выпущено, однако послужило основой для AMD K6.

Процессоры SiS

SiS550[6]

Семейство SoC SiS550 базируется на лицензированном ядре Rise mP6 и выпускается с частотами от 166 до 266 МГц. При этом самые скоростные решения потребляют всего 1,8 Вт. У ядра три целочисленных 8-ступенчатых конвейера. Кэш L1 раздельный, 8+8 Кбайт. Встроенный сопроцессор конвейеризован. В состав SiS550, кроме стандартного набора портов, входят 128-битное UMA-видеоядро AGP 4x, 5.1-канальный звук, поддержка 2 DIMM (до 1 Гбайт ОЗУ), поддержка софт-модема и UDMA100 IDE-контроллер.

В SiS551 также добавлен встроенный контроллер Smart Card и Memory Stick, а в SiS552 — декодер MPEG2, акселерация проигрывания DVD и VCD.

Также клон SiS551 выпускается Jan Yin Chan Electronics Co., LTD (DM&P) под торговой маркой Vortex86 (чип маркируется как M6127D) и Xcore Corporation Ltd. под торговой маркой Xcore86.

Процессоры Transmeta

Crusoe

Строго говоря, Crusoe не является x86-процессором. Для исполнения x86-кода используется программный транслятор во внутренние 128-битные VLIW-инструкции под названием Code Morphing Software. Это позволяет адаптировать процессор к любому набору команд и улучшает энергоэффективность, но производительность такого решения заведомо меньше, чем у процессоров с нативной системой команд x86.

Efficeon

Развитие идеи сочетания VLIW-процессора и Code Morphing Software. Основное отличие от предыдущего решения — VLIW-инструкции стали 256-битными.

Процессоры UMC

UMC Green CPU (U5)

U5 — семейство микропроцессоров класса 80486. Имели несколько вариантов маркировки: U5SB-40, U5S-Super33 и т. п. Основной изюминкой был значительно оптимизированный микрокод и полностью статический дизайн, в результате чего эти процессоры имели повышенную производительность (некоторые недобросовестные продавцы даже продавали их как процессоры с удвоением частоты — U5S-33 как SX2-66 и U5S-40 как SX2-80). Модели U5S не имели математического сопроцессора, а варианты с сопроцессором должны были называться U5D, но так и не были выпущены.

Intel добилась судебного запрета на продажу Green CPU в США, обосновав это тем, что UMC использовала в своих процессорах микрокод Intel, не имея лицензии.

Существовали и некоторые проблемы с ПО. Например, игра Doom отказывалась запускаться на этом процессоре без правки конфигурации, а Windows 95 время от времени зависала. Это было связано с тем, что программы находили в U5S отсутствующий сопроцессор и попытки обращения к нему заканчивались крахом.

Процессоры, выпускавшиеся в СССР и России[7]

КР1810ВМ86 (К1810ВМ86)

Аналог 8086.

  • КР1834ВМ86/ЭКР1834ВМ86 — аналог 8086 (точнее 80C86, так как выпущен по КМОП-технологии).
  • КР1810ВМ86М/КМ1810ВМ86М — фактически аналог 8086, но с изменениями — добавлены некоторые команды из 80286. Устанавливался в ЭВМ ЕС1842.
  • К1810ВМ88 — аналог 8088.
  • КФ1847ВМ286 (экспортный вариант ЭКФ1847ВМ2) — аналог 80286. Опытные образцы выпускались заводом имени Дзержинского (разработчик НТЦ «Белмикросистемы») НПО «Интеграл».
Процессоры МЦСТ

Компанией ЗАО МЦСТ выпущена серия микропроцессоров «Эльбрус», позволяющих работать в режиме двоичной совместимости с архитектурой x86. Совместимость обеспечивается за счёт программной динамической трансляции x86-кодов с использованием аппаратной поддержки, заложенной в архитектуру микропроцессора «Эльбрус».

Процессоры BLX IC Design/ICT

BLX IC Design и Институт компьютерных технологий Китая с 2001 разрабатывает MIPS-based процессоры с аппаратной трансляцией x86-команд. Выпускаются эти процессоры STMicroelectronics. Рассматривается партнерство с TSMC.

Godson (Longxin, Loongson, Dragon)

Godson — 32-разрядный RISC-процессор на базе MIPS. Технология — 180 нм. Представлен в 2002 году. Частота — 266 МГц, через год — версия с частотой 500 МГц.

Godson 2
  • Godson 2 — 64-разрядный RISC-процессор на базе MIPS III. Технология 90 нм. На равной частоте превосходит своего предшественника по быстродействию в 10 раз. Представлен 19 апреля 2005 года.
  • Godson-2E — 500 МГц, 750 МГц, позже — 1 ГГц. Технология — 90 нм. 47 млн транзисторов, энергопотребление — 5…7,5 Вт. Первый Godson с аппаратной трансляцией команд x86, причем на неё тратится до 60 % производительности процессора. Представлен в ноябре 2006 года.
  • Godson 2F — 1,2 ГГц, выпускается с марта 2007 года. Декларируется повышение производительности по сравнению с предшественником на 20-30 %.
  • Godson 2H — планировался к выпуску в 2011 году. Будет оснащен встроенными видеоядром и контроллером памяти и предназначается для потребительских систем.
Godson 3[8]
  • Godson 3 — 4 ядра, технология 65 нм. Энергопотребление — около 20 Вт.
  • Godson 3B — 8 ядер, технология 65 нм (планируется переход на 28 нм), тактовая частота в пределах 1 ГГц. Площадь кристалла — 300 мм². Производительность на операциях с плавающей точкой составляет 128 GigaFLOPS. Энергопотребление 8-ядерного Godson 3—40 Вт. Трансляция в код x86 выполняется с помощью набора из 200 инструкций, на трансляцию тратится порядка 20 % производительности процессора. В процессоре присутствует 256-разрядный векторный SIMD-блок обработки. Процессор предназначен для использования в серверах и встраиваемых системах.
  • Godson 3C — планировался к выпуску в 2012 году и должен был быть 16-ядерным.

Кодирование инструкций

В данном разделе буква «h» после числа обозначает значение в 16-ричной системе счисления. Если ничего подобного рядом с числом нет, то это - десятичное значение.

В x86 применяется относительно простой формат записи инструкций, но из-за некоторых исключений он может показаться сложным. На всякий случай — за головную документацию можно взять «Intel® 64 IA-32 Architectures Software Developer’s Manual» (доступно на официальном сайте корпорации Intel в формате PDF). Там есть детальная информация по всем инструкциям.

Структура же произвольной инструкции следующая:

  1. Префиксы (каждый из них опционален):
    1. Однобайтовый префикс смены режима адресации AddressSize (значение 67h).
    2. Однобайтовый префикс изменения сегмента Segment (значения 26h, 2Eh, 36h, 3Eh, 64h и 65h).
    3. Однобайтовый префикс BranchHint для указания предпочтительной ветки перехода (значения 2Eh и 3Eh).
    4. Двухбайтовый или трёхбайтовый сложноструктурированный префикс Vex (первый байт всегда имеет значение C4h для двухбайтового варианта или C5h для трёхбайтового).
    5. Однобайтовый префикс Lock для запрета модификации памяти другими процессорами или ядрами (значение F0h).
    6. Однобайтовый префикс OperandsSize для изменения размера операнда (значение 66h).
    7. Однобайтовый префикс Mandatory для уточнения инструкции (значения F2h и F3h).
    8. Однобайтовый префикс Repeat означает повторение (значения F2h и F3h).
    9. Однобайтовый структурированный префикс Rex нужен для указания 64-битных или расширенных регистров (имеет значения 40h..4Fh).
    10. Префикс Escape. Всегда состоит как минимум из одного байта 0Fh. За этим байтом опционально идёт байт 38h или 3Ah. Предназначен для уточнения инструкции.
  2. Точно определяющие инструкцию байты:
    1. Байт Opcode (произвольное константное значение).
    2. Байт Opcode2 (произвольное константное значение).
    3. Байт Params (имеет сложную структуру).
    4. Байт ModRm используется для операндов в памяти (имеет сложную структуру).
    5. Байт SIB так же используется для операндов в памяти и имеет сложную структуру.
  3. Встроенные в инструкцию данные (опциональны):
    1. Смещение или адрес в памяти (Displacement). Целое число со знаком размером 8, 16, 32 или 64 бита.
    2. Первый или единственный непосредственный операнд (Immediate). Может быть размером 8, 16, 32 или 64 бита.
    3. Второй непосредственный операнд (Immediate2). Если присутствует, то обычно имеет размер в 8 бит.

В списке выше и далее для технических имён принято наименование «только латиница, арабские цифры» и знак минуса «-» со знаком подчёкивания «_», а регистр — CamelCase (любое слово начинается с прописной, а далее - только строчные, даже если это аббревиатура: «UTF-8» → «Utf8» — все слова вместе). Префиксы AddressSize, Segment, BranchHint, Lock, OperandsSize и Repeat могут перемешаны между собой. Остальные элементы должны идти именно в указанном порядке. И видно, что байтовые значения некоторых префиксов совпадают. Их назначение и наличие определяет уже сама инструкция. Префиксы переопределения сегмента могут применяться с большинством инструкций, а префиксы BranchHint применяются только с инструкциями условного перехода. Аналогичная ситуация с префиксами Mandatory и Repeat — где-то они уточняют инструкцию, а где-то - указывают на повторение. Префикс OperandSize вместе в префиксами Mandatory ещё относят к префиксам SIMD-инструкции. Отдельно следует сказать про префикс Vex. Он заменяет префиксы Rex, Mandatory, Escape и OperandsSize, компактизируя их в себе. С ним недопустимо использование префикса Lock. Сам же префикс Lock может добавляться, когда приёмником является операнд в памяти.

Обзорный список всех интересующих режимов с точки зрения кодирования инструкций:

  • 16-битный («Real Mode», реальный режим с сегментной адресацией).
  • 32-битный («Protected Mode», защищённый режим с плоской моделью памяти).
  • 64-битный («Long Mode», как 32-битный защищённый с плоской моделью памяти, но адреса уже 64-битные).

В скобках английские названия режимов соответствуют официальным. Ещё есть синтетические режимы навроде нереального (Unreal x86 Mode), но они все вытекают из этих трёх (по сути это гибриды, которые отличаются лишь размером адреса, операндов и прочим). В каждом из них используется «родной» режим адресации, но его можно сменить на альтернативный префиксом OperandsSize. В 16-битном режиме включится 32-битный режим адресации, в 32-битном режиме — 16-битный, а в 64-битном — 32-битный. Но если это делать, то адрес расширяется с дополнением нулями (если он меньше) или же его старшие биты сбрасываются (если он больше).

См. также

Примечания

Ссылки

  • X86 в каталоге ссылок Curlie (dmoz)
Документация от производителей
Статьи
This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.