Сравнение архитектур наборов инструкций - Comparison of instruction set architectures

An архитектура набора команд (ЭТО) является абстрактной моделью компьютер, также называемый компьютерная архитектура. Реализация ISA называется реализация. ISA допускает несколько реализаций, которые могут отличаться спектакль, физический размер и денежная стоимость (среди прочего); потому что ISA служит интерфейс между программного обеспечения и аппаратное обеспечение. Программное обеспечение, написанное для ISA, может работать на разных реализациях одного и того же ISA. Это позволило двоичная совместимость между разными поколениями компьютеров, чтобы легко достичь и развития компьютерных семейств. Обе эти разработки помогли снизить стоимость компьютеров и повысить их применимость. По этим причинам ISA - одна из самых важных абстракций в вычисление сегодня.

ISA определяет все машинный язык программист нужно знать, чтобы программировать компьютер. Определения ISA различаются между ISA; в общем, ISA определяют поддерживаемые типы данных, какое там состояние (например, основная память и регистры ) и их семантика (например, согласованность памяти и режимы адресации ), Набор инструкций (набор машинные инструкции который включает машинный язык компьютера), а ввод, вывод модель.

База

В первые десятилетия развития вычислительной техники были компьютеры, которые использовали двоичный, десятичная дробь[1] и даже тройной.[2][3] Современные компьютеры почти всегда бинарны.

Биты

Компьютерные архитектуры часто описываются как п-немного архитектуры. Сегодня п часто составляет 8, 16, 32 или 64, но использовались и другие размеры (включая 6, 12, 18, 24, 30, 36, 39, 48, 60 ). На самом деле это упрощение, поскольку компьютерная архитектура часто имеет несколько более или менее "естественных" данных в Набор инструкций, но их аппаратная реализация может сильно отличаться. Многие архитектуры наборов инструкций имеют инструкции, которые в некоторых реализациях этой архитектуры набора инструкций работают с половиной и / или вдвое большим размером основных внутренних каналов данных процессора. Примеры этого: 8080, Z80, MC68000 а также многие другие. В этих типах реализаций операция с вдвое большей шириной обычно также занимает примерно вдвое больше тактовых циклов (что не относится к высокопроизводительным реализациям). На 68000, например, это означает 8 вместо 4 тактов, и этот конкретный чип можно описать как 32-битный архитектура с 16 бит реализация. В IBM System / 360 архитектура набора команд 32-битная, но несколько моделей серии System / 360, такие как IBM System / 360 Модель 30, имеют 8-битные внутренние пути к данным. Ширина внешней шины данных не используется для определения ширины архитектуры; то NS32008, NS32016 и NS32032 были в основном тот же 32-битный чип с разными внешними шинами данных; NS32764 имел 64-битный шина, и использовал 32-битный регистр. Ранние 32-битные микропроцессоры часто имели 24-битный адрес, как и процессоры System / 360.

Операнды

Количество операндов - один из факторов, который может дать представление о производительности набора команд. Архитектура с тремя операндами позволит

А: = В + С

вычисляться в одной инструкции.

Двухоперандная архитектура позволит

А: = А + В

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

А: = BA: = А + С

Порядок байтов

Архитектура может использовать "большой" или "маленький" порядок байтов, или и то, и другое, или быть настраиваемой для использования того и другого. Порядок процессоров с прямым порядком байтов байты в памяти, причем младший байт многобайтового значения находится в ячейке памяти с наименьшим номером. Вместо этого в архитектурах с прямым порядком байтов байты располагаются так, что старший байт располагается по адресу с наименьшим номером. Архитектура x86, а также несколько 8 бит архитектуры с прямым порядком байтов. Наиболее RISC архитектуры (SPARC, Power, PowerPC, MIPS) изначально были с прямым порядком байтов (ARM - с прямым порядком байтов), но многие (включая ARM) теперь можно настраивать как обе.

Порядок байтов Только применяется к процессорам, которые позволяют индивидуальную адресацию единиц данных (например, байты ) которые меньше чем основное адресуемое машинное слово.

Наборы инструкций

Обычно количество регистров составляет сила двух, например 8, 16, 32. В некоторых случаях псевдорегистр с аппаратным обнулением включается как «часть» зарегистрировать файлы архитектур, в основном для упрощения режимов индексации. В этой таблице подсчитываются только целые «регистры», которые могут использоваться общими инструкциями в любой момент. Архитектуры всегда включают специальные регистры, такие как указатель программы (ПК). Они не учитываются, если не указано иное. Обратите внимание, что некоторые архитектуры, такие как SPARC, имеют окно регистрации; для этих архитектур счетчик ниже показывает, сколько регистров доступно в окне регистров. Кроме того, неархитектурные регистры для зарегистрировать переименование не учитываются.

Обратите внимание, что общий тип архитектуры, «загрузка-хранилище», является синонимом «Регистрового регистра» ниже, что означает, что никакие инструкции не обращаются к памяти, кроме специальной - загрузка в регистры (-ы) - и сохранение из регистров (-ов) - с возможным исключения операций с атомарной памятью для блокировки.

В таблице ниже сравнивается основная информация о наборах команд, которые должны быть реализованы в архитектурах ЦП:

Archi-
Tecture
БитыВерсияВступление-
дуцированный
Максимум #
операнды
ТипДизайнРегистры
(исключая FP / вектор)
Кодировка инструкцииОтветвляться оценкаEndian-
несса
РасширенияОткрытьРоялти
свободный
6502819751Регистровая памятьCISC3Переменная (От 8 до 32 бит)Регистр условийМаленький
6809819781Регистровая памятьCISC9Переменная (От 8 до 32 бит)Регистр условийБольшой
680x03219792Регистровая памятьCISC8 данных и 8 адресовПеременнаяРегистр условийБольшой
8080819742Регистровая памятьCISC8Переменная (От 8 до 24 бит)Регистр условийМаленький
805132 (8→32)1977?1Зарегистрироваться ЗарегистрироватьсяCISC
  • 32 в 4-битном
  • 16 в 8-бит
  • 8 в 16 бит
  • 4 в 32-бит
Переменная (От 8 бит до 128 байт)Сравните и разделитеМаленький
x8616, 32, 64
(16→32→64)
19782 (целое число)
3 (AVX )[а]
4 (FMA4)[4]
Регистровая памятьCISC
  • 8 (+ 4 или 6 сегментная регистр.) (16/32-бит)
  • 16 (+ 2 сегментных регистра GS / CS) (64-битный)
  • 32 с AVX-512
Переменная (8086 ~ 80386: переменная от 1 до 6 байтов / w MMU + Intel SDK, 80486: от 2 до 5 байтов с префиксом, Pentium и далее: от 2 до 4 байтов с префиксом, x64: префикс 4 байта, сторонняя эмуляция x86: 1 до 15 байт без префикса и MMU. SSE / MMX: 4 байта / префикс AVX: 8 байт / префикс)Код состоянияМаленькийx87, IA-32, MMX, 3DNow!, SSE,
SSE2, PAE, x86-64, SSE3, SSSE3, SSE4,
ИМТ, AVX, AES, FMA, XOP, F16C
НетНет
Альфа6419923Зарегистрироваться ЗарегистрироватьсяRISC32 (включая «ноль»)Исправлена (32-битный)Регистр условийБиМВИ, BWX, ИСПРАВИТЬ, CIXНет
ARC16/32ARCv2[5]19963Зарегистрироваться ЗарегистрироватьсяRISC16 или 32, включая SP
пользователь может увеличить до 60
Переменная (16- и 32-битный)Сравните и разделитеБиПользовательские инструкции APEX
ARM / A3232ARMv1-v819833Зарегистрироваться ЗарегистрироватьсяRISC
  • 15
Исправлена (32-битный)Код состоянияБиНЕОН, Джазель, VFP,
TrustZone, LPAE
Нет
Большой палец / T3232ARMv4T-ARMv819943Зарегистрироваться ЗарегистрироватьсяRISC
  • 7 с 16-битными инструкциями Thumb
  • 15 с 32-битными инструкциями Thumb-2
Большой палец: фиксированный (16 бит), Большой палец-2:
Переменная (16- и 32-битный)
Код состоянияБиНЕОН, Джазель, VFP,
TrustZone, LPAE
Нет
Arm64 / A6464ARMv8-A[6]2011[7]3Зарегистрироваться ЗарегистрироватьсяRISC32 (включая указатель стека / "нулевой" регистр)Исправлена (32-битный)Код состоянияБиSVE и SVE2Нет
AVR819972Зарегистрироваться ЗарегистрироватьсяRISC32
16 по «уменьшенной архитектуре»
Переменная (в основном 16-битные, четыре инструкции 32-битные)Регистр состояния,
пропустить при условии
на вводе / выводе или
общее назначение
регистровый бит,
сравнить и пропустить
Маленький
AVR3232Ред. 220062–3RISC15Переменная[8]БольшойВиртуальная машина Java
Blackfin3220003[9]Зарегистрироваться ЗарегистрироватьсяRISC[10]2 аккумулятора

8 регистров данных

8 регистров указателя

4 индексных регистра

4 буферных регистра

Переменная(16- или 32-битный)Код состоянияМаленький[11]
CDC Upper серии 30004819633Регистровая памятьCISC48-битный регистр A, 48-битный регистр Q, 6 15-битных регистров B, прочееПеременная (24 и 48 бит)Несколько типов прыжков и прыжковБольшой
CDC 6000
Центральный процессор (CP)
6019643Зарегистрироваться ЗарегистрироватьсяНет данных[b]24 (8 18-битная адресная рег.,
8 18-битная индексная рег.,
8 60-битная рег. Операнда)
Переменная (15, 30 и 60 бит)Сравните и разделитен / д[c]Сравнить / переместить блокНетНет
CDC 6000
Периферийный процессор (PP)
1219641 или 2Регистровая памятьCISC1 18-битный регистр A, ячейки 1-63 служат индексными регистрами для некоторых инструкцийПеременная (12 и 24 бит)Тестовый регистр, тестовый каналн / д[d]дополнительные периферийные блоки обработкиНетНет
Крузо
(родной VLIW)
32[12]20001Зарегистрироваться Зарегистрироваться[12]VLIW[12][13]
  • 1 в собственном режиме push-стека
  • 6 в эмуляции x86 +
    8 в режиме x87 / MMX +
    50 в статусе переименования
  • 12 целое число + 48 тень +
    4 отладка в родном VLIW
  • Режим[12][13]
Переменная (64- или 128-битный в основном режиме, 15 байт в эмуляции x86)[13]Код состояния[12]Маленький
Эльбрус
(родной VLIW)
64Эльбрус-4С20141Зарегистрироваться Зарегистрироваться[12]VLIW8–6464Код состоянияМаленькийСвоевременная динамическая транс-
lation: x87, IA-32, MMX, SSE,
SSE2, x86-64, SSE3, AVX
НетНет
DLX3219903RISC32Исправлена (32-битный)Большой
eSi-RISC16/3220093Зарегистрироваться ЗарегистрироватьсяRISC8–72Переменная (16- или 32-битный)Сравните и разделите
и регистр условий
БиПользовательские инструкцииНетНет
Itanium
(IA-64)
642001Зарегистрироваться ЗарегистрироватьсяЭПИЧЕСКИЙ128Исправлено (128-битные пакеты с 5-битным тегом шаблона
и 3 инструкции по 41 бит каждая)
Регистр условийБи
(по выбору)
Технология виртуализации IntelНетНет
M32R3219973Зарегистрироваться ЗарегистрироватьсяRISC16Переменная (16- или 32-битный)Регистр условийБи
Mico3232?20063Зарегистрироваться ЗарегистрироватьсяRISC32[14]Исправлена (32-битный)Сравните и разделитеБольшойПользовательские инструкциида[15]да
MIPS64 (32→64)6[16][17]19811–3Зарегистрироваться ЗарегистрироватьсяRISC4–32 (включая «ноль»)Исправлена (32-битный)Регистр условийБиMDMX, MIPS-3DНетНет[18][19]
MMIX64?19993Зарегистрироваться ЗарегистрироватьсяRISC256Исправлена (32-битный)?Большой?дада
NS320xx3219825Память ПамятьCISC8Переменная кодировка Хаффмана длиной до 23 байтовКод состоянияМаленькийИнструкции BitBlt
OpenRISC32, 641.3[20]20103Зарегистрироваться ЗарегистрироватьсяRISC16 или 32Исправлена???дада
PA-RISC
(HP / PA)
64 (32→64)2.019863Зарегистрироваться ЗарегистрироватьсяRISC32Исправлена (32-битный)Сравните и разделитеБольшой → БиМАКСИМУМНет
PDP-8[21]121966Регистровая памятьCISC1 аккумулятор

1 регистр частных множителей

Исправлена (12 бит)Регистр условий

Тест и ветка

EAE (расширенный арифметический элемент)
PDP-111619703Память ПамятьCISC]8 (включает указатель стека,
хотя любой регистр может
действовать как указатель стека)
Исправлена (16 бит)Код состоянияМаленькийПлавающая точка,
Набор коммерческих инструкций
НетНет
МОЩНОСТЬ, PowerPC, Питание ISA32/64 (32→64)3,0 млрд[22]19903Зарегистрироваться ЗарегистрироватьсяRISC32Исправлена (32-битный), ПеременнаяКод состоянияБольшой / БиAltiVec, ВСУ, VSX, Клеткадада
RISC-V32, 64, 1282.2[23]20103Зарегистрироваться ЗарегистрироватьсяRISC32 (включая «ноль»)ПеременнаяСравните и разделитеМаленький?дада
RX64/32/1620003Память ПамятьCISC4 целое число + 4 адресаПеременнаяСравните и разделитеМаленькийНет
S + ядро16/322005RISCМаленький
SPARC64 (32→64)OSA2017[24]19853Зарегистрироваться ЗарегистрироватьсяRISC32 (включая «ноль»)Исправлена (32-битный)Код состоянияБольшой → БиВИСдада[25]
SuperH (SH)3219942Зарегистрироваться Зарегистрироваться
Регистровая память
RISC16Исправлена (16- или 32-битный), ПеременнаяКод состояния
(один бит)
Би
Система / 360
Система / 370
z / Архитектура
64 (32→64)19642 (самый)
3 (FMA, отличное
операнд)

4 (какой-то векторный инст.)
Регистровая память
Память Память
Зарегистрироваться Зарегистрироваться
CISC16Переменная (16-, 32- или 48-битный)Код условия, сравнение и ветвлениеБольшойНетНет
Транспьютер32 (4→64)19871ШтабелеукладчикРАЗНОЕ3 (в виде стопки)Переменная (8 ~ 120 байт)Сравните и разделитеМаленький
VAX3219776Память ПамятьCISC16ПеременнаяСравните и разделитеМаленький
Z80819762Регистровая памятьCISC17Переменная (От 8 до 32 бит)Регистр условийМаленький
Archi-
Tecture
БитыВерсияВступление-
дуцированный
Максимум #
операнды
ТипДизайнРегистры
(исключая FP / вектор)
Кодировка инструкцииОтветвляться оценкаEndian-
несса
РасширенияОткрытьРоялти
свободный

Смотрите также

Примечания

  1. ^ Команды LEA (8086 и более поздние) и IMUL-немедленного (80186 и более поздние) принимают три операнда; большинство других инструкций базового целочисленного ISA принимают не более двух операндов.
  2. ^ частично RISC: архитектура загрузки / сохранения и простые режимы адресации, частично CISC: три длины инструкции и отсутствие единого времени выполнения инструкции
  3. ^ Поскольку память представляет собой массив 60-битных слов, не имеющий средств для доступа к подъединицам, сравнение с прямым порядком байтов и прямым порядком байтов не имеет смысла. Дополнительный модуль CMU использует семантику прямого байта.
  4. ^ Поскольку память представляет собой массив из 12-битных слов, не имеющий средств для доступа к подъединицам, сравнение прямого и обратного порядка байтов не имеет смысла.

Рекомендации

  1. ^ да Круз, Франк (18 октября 2004 г.). "Калькулятор исследования морской артиллерии IBM". История вычислительной техники Колумбийского университета. Получено 28 января, 2019.
  2. ^ «Российский виртуальный компьютерный музей - Зал славы - Николай Петрович Брусенцов».
  3. ^ Трогеманн, Георг; Нитусов, Александр Юрьевич .; Эрнст, Вольфганг (2001). Вычислительная техника в России: раскрыта история компьютерных устройств и информационных технологий. Vieweg + Teubner Verlag. С. 19, 55, 57, 91, 104–107. ISBN  978-3-528-05757-2..
  4. ^ https://www.amd.com/system/files/TechDocs/43479.pdf
  5. ^ https://www.synopsys.com/designware-ip/processor-solutions/arc-processors.html
  6. ^ «Предварительный просмотр технологии ARMv8» (PDF). Архивировано из оригинал (PDF) на 2018-06-10. Получено 2011-10-28.
  7. ^ «ARM становится 64-битной с новой архитектурой чипа ARMv8». Получено 26 мая 2012.
  8. ^ «Архитектурный документ AVR32» (PDF). Атмель. Получено 2008-06-15.
  9. ^ "Руководство Blackfin" (PDF). analog.com.
  10. ^ «Обзор архитектуры процессора Blackfin». Аналоговые устройства. Получено 2009-05-10.
  11. ^ «Архитектура памяти Blackfin». Аналоговые устройства. Архивировано из оригинал на 2011-06-16. Получено 2009-12-18.
  12. ^ а б c d е ж «Разоблачение Crusoe: Transmeta TM5xxx Architecture 2». Технологии реального мира.
  13. ^ а б c Александр Клайбер (январь 2000 г.). «Технология, лежащая в основе процессоров Crusoe» (PDF). Transmeta Corporation. Получено 6 декабря, 2013.
  14. ^ "Архитектура LatticeMico32". Решетчатый полупроводник. Архивировано из оригинал 23 июня 2010 г.
  15. ^ «Лицензирование открытого исходного кода LatticeMico32». Решетчатый полупроводник. Архивировано из оригинал 20 июня 2010 г.
  16. ^ Архитектура MIPS64 для программистов: выпуск 6
  17. ^ Архитектура MIPS32 для программистов: выпуск 6
  18. ^ MIPS Открыть
  19. ^ [1]
  20. ^ Изменения архитектуры OpenRISC
  21. ^ «Руководство пользователя PDP-8» (PDF). bitsavers.org. 2019-02-16.
  22. ^ "Power ISA версии 3.0". openpowerfoundation.org. 2016-11-30. Получено 2017-01-06.
  23. ^ «Спецификации RISC-V ISA». Получено 17 июн 2019.
  24. ^ Документация по процессору Oracle SPARC
  25. ^ Лицензия на архитектуру SPARC