Архитектура набора команд (ISA ) является абстрактной моделью компьютер, также называемый компьютерной архитектурой . Реализация ISA называется реализацией. ISA допускает несколько реализаций, которые могут отличаться производительностью, физическим размером и денежной стоимостью (среди прочего); поскольку ISA служит интерфейсом между программным и аппаратным. Программное обеспечение, написанное для ISA, может работать на разных реализациях одного и того же ISA. Это позволило легко достичь двоичной совместимости между компьютерами разных поколений и разработать семейства компьютеров. Обе эти разработки помогли снизить стоимость компьютеров и повысить их применимость. По этим причинам ISA является одной из самых важных абстракций в вычислениях сегодня.
ISA определяет все, что машинный язык программист должен знать, чтобы программировать компьютер. Определения ISA различаются между ISA; Как правило, ISA определяют поддерживаемые типы данных , какое состояние (например, основная память и регистры ) и их семантику (например, согласованность памяти и режимы адресации ), набор команд (набор машинных инструкций, которые составляют машинный язык компьютера) и ввод / вывод модель.
В первые десятилетия развития вычислительной техники были компьютеры, которые использовали двоичный, десятичный и даже троичный. Современные компьютеры почти всегда бинарны.
Компьютерные архитектуры часто описываются как n- битные архитектуры. Сегодня n часто составляет 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 Model 30, имеют 8-битную внутреннюю пути к данным. Ширина внешней шины данных не используется для определения ширины архитектуры; NS32008, NS32016 и NS32032 были в основном одним и тем же 32-битным чипом с разными внешними шинами данных; NS32764 имел 64-битную шину и использовал 32-битный регистр. Ранние 32-битные микропроцессоры часто имели 24-битный адрес, как и процессоры System / 360.
Количество операндов - это один из факторов, который может дать представление о производительности набора команд. Архитектура с тремя операндами позволяет вычислять
A: = B + C
за одну инструкцию.
Архитектура с двумя операндами позволит вычислить
A: = A + B
в одной инструкции, поэтому для имитации одной инструкции потребуется выполнить две инструкции. инструкция с тремя операндами.
A: = BA: = A + C
В архитектуре может использоваться «большой» или «маленький» порядок байтов, или и то, и другое, либо может быть настроена либо. Процессоры с прямым порядком байтов упорядочивают байтов в памяти, причем младший байт многобайтового значения находится в ячейке памяти с наименьшим номером. Вместо этого в архитектурах с прямым порядком байтов байты располагаются так, что старший байт располагается по адресу с наименьшим номером. Архитектура x86, а также несколько 8-битных архитектур с прямым порядком байтов. Большинство архитектур RISC (SPARC, Power, PowerPC, MIPS) изначально были с прямым порядком байтов (ARM - с прямым порядком байтов), но многие (включая ARM) теперь конфигурируются как обе.
Порядок байтов применяется только к процессорам, которые позволяют индивидуальную адресацию единиц данных (например, байтов ), которые меньше, чем базовое адресуемое машинное слово.
Обычно количество регистров представляет собой степень двойки, например 8, 16, 32. В некоторых случаях псевдорегистр с аппаратным обнулением включается как «часть» файлов регистров архитектур, в основном для упрощения режимов индексации. В этой таблице подсчитываются только целые «регистры», которые могут использоваться общими инструкциями в любой момент. Архитектуры всегда включают специальные регистры, такие как указатель программы (ПК). Они не учитываются, если не указано иное. Обратите внимание, что некоторые архитектуры, такие как SPARC, имеют окно регистров ; для этих архитектур счетчик ниже показывает, сколько регистров доступно в окне регистров. Также не учитываются регистры без архитектуры для переименования регистров.
Обратите внимание: общий тип архитектуры, «загрузка-хранилище», является синонимом «Регистрового регистра» ниже, что означает, что никакие инструкции не обращаются к памяти, кроме специальной - загрузка в регистр (-ы) - и сохранение из регистра ( s) - с возможными исключениями операций атомарной памяти для блокировки.
В таблице ниже сравнивается базовая информация о наборах команд, которые должны быть реализованы в архитектурах ЦП:
Archi-. tecture | Биты | Версия | Intro-. duced | Максимальное количество. операндов | Тип | Design | Регистры. (исключая FP / вектор) | Кодировка инструкций | Ветвь оценка | Endian-. ness | Extensions | Open | Royalty. бесплатно |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
6502 | 8 | 1975 | 1 | Регистровая память | CISC | 3 | Переменная (от 8 до 32 бит) | Регистр условий | Little | ||||
6809 | 8 | 1978 | 1 | Регистровая память | CISC | 9 | Переменная (от 8 до 32 бит) | Регистр условий | Большой | ||||
680x0 | 32 | 1979 | 2 | Регистровая память | CISC | 8 данных и 8 адресов | Переменная | Регистр условий | Большой | ||||
8080 | 8 | 1974 | 2 | Регистровая память | CISC | 8 | Переменная (от 8 до 24 бит) | Регистр условий | Little | ||||
8051 | 32 (8 → 32) | 1977? | 1 | Регистр Регистр | CISC |
| Переменная (от 8 бит до 128 байт) | Сравнение и переход | Little | ||||
x86 | 16, 32, 64. (16 → 32 → 64) | 1978 | 2 (целое число). 3 (AVX ). 4 (FMA4). | Регистровая память | CISC |
| Переменная (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 байтов / ширина префикса) | Код условия | Little | x87, IA-32, MMX, 3DNow!, SSE,. SSE2, PAE, x86-64, SSE3, SSSE3, SSE4,. BMI, AVX, AES, FMA, XO P, F16C | Нет | Нет | |
Alpha | 64 | 1992 | 3 | Регистр Регистр | RISC | 32 (включая «ноль») | Фиксированный (32-битный) | Регистр условий | Bi | MVI, BWX, FIX, CIX | Нет | ||
ARC | 16/32 | ARCv2 | 1996 | 3 | Register Register | RISC | 16 или 32, включая SP., пользователь может увеличьте до 60 | Переменная (16- и 32-битная) | Сравнение и переход | Bi | Пользовательские инструкции APEX | ||
ARM / A32 | 32 | ARMv1-v8 | 1983 | 3 | Register Register | RISC |
| Fixed (32-bit) | Код условия | Bi | NEON, Jazelle, VFP,. TrustZone, LPAE | Нет | |
Thumb / T32 | 32 | ARMv4T-ARMv8 | 1994 | 3 | Register Register | RISC |
| Thumb: фиксированные (16-битные), Thumb-2:. переменные (16- и 32-битные) | Условие code | Bi | NEON, Jazelle, VFP,. TrustZone, LPAE | Нет | |
Arm64 / A64 | 64 | ARMv8-A | 2011 | 3 | Регистр Регистр | RISC | 32 (включая указатель стека / нулевой регистр) | Фиксированный (32-битный) | Код условия | Bi | SVE и SVE2 | Нет | |
AVR | 8 | 1997 | 2 | Регистр Регистр | RISC | 32. 16 на «сокращенной архитектуре» | Переменная (в основном 16-битные, четыре инструкции 32-битные) | Регистр условий,. пропустить условный. на вводе-выводе или. регистровый бит общего назначения.,. сравнить и пропустить | Little | ||||
AVR32 | 32 | Ред. 2 | 2006 | 2–3 | RISC | 15 | Переменная | Большая | виртуальная машина Java | ||||
Blackfin | 32 | 2000 | 3 | Регистр Регистр | RISC | 2 аккумулятора 8 регистров данных 8 регистров-указателей 4 индексных регистра 4 буферных регистра | Переменная (16- или 32- бит) | Код условия | Little | ||||
CDC 6000 | 60 | 1964 | 3 | Регистровая память | RISC | 24 (8 18-битных адресных регистров,. 8 18-битная индексная рег.,. 8 60-битная регистр операнда) | Переменная (15, 30 и 60-битная) | Сравнение и переход | н / д | Сравнить / переместить блок, дополнительные. периферийные блоки обработки | Нет | Нет | |
Crusoe. (родной VLIW) | 32 | 2000 | 1 | Регистр Регистр | VLIW |
| Переменная (64- или 128-битная в основном режиме, 15 байт в эмуляции x86) | Код условия | Литтл | ||||
Эльбрус. (родной VLIW) | 64 | Эльбрус-4С | 2014 | 1 | Регистр Регистр | VLIW | 8–64 | 64 | Код условия | Little | Своевременное динамическое преобразование. : x87, IA-32, MMX, SSE,. SSE2, x86-64, SSE3, AVX | Нет | Нет |
DLX | 32 | 1990 | 3 | RISC | 32 | Фиксированный (32-битный) | Большой | ||||||
eSi -RISC | 16/32 | 2009 | 3 | Регистр Регистр | RISC | 8–72 | Переменная (16- или 32-битная) | Сравнение и переход. и регистр условий | Bi | Пользовательские инструкции | Нет | Нет | |
Itanium. (IA-64) | 64 | 2001 | Регистр Регистр | EPIC | 128 | Фиксированный (128-битные пакеты с 5-битным тегом шаблона. и 3 инструкции, каждая длиной 41 бит) | Регистр условий | Bi. (выбирается) | Intel Virtualization Technology | Нет | Нет | ||
M32R | 32 | 1997 | 3 | Регистр Регистр | RISC | 16 | Переменная (16- или 32-битная) | Регистр условий | Bi | ||||
Mico32 | 32 | ? | 2006 | 3 | Register Register | RISC | 32 | Fixed (32-bit) | Сравнить и ветвь | Большой | Пользовательские инструкции | Да | Да |
MIPS | 64 (32 → 64) | 6 | 1981 | 1–3 | Регистр Регистр | RISC | 4–32 (включая «ноль») | Фиксированный (32-бит) | Регистр условий | Bi | MDMX, MIPS-3D | Нет | No |
MMIX | 64 | ? | 1999 | 3 | Регистр Регистр | RISC | 256 | Фиксированный (32-битный) | ? | Большой | ? | Да | Да |
NS320xx | 32 | 1982 | 5 | Память Память | CISC | 8 | Переменная кодировка Хаффмана, до 23 байтов длиной | Код условия | Little | Инструкции BitBlt | |||
OpenRISC | 32, 64 | 1.3 | 2010 | 3 | Register Register | RISC | 16 или 32 | Фиксированный | ? | ? | ? | Да | Да |
PA-RISC. (HP / PA) | 64 (32 → 64) | 2.0 | 1986 | 3 | Регистр Регистр | RISC | 32 | Фиксированный (32-битный) | Сравнить и ветвь | Big → Bi | MAX | Нет | |
PDP-8 | 12 | 1966 | Регистровая память | CISC | 1 аккумулятор 1 регистр множителя | Фиксированный (12 бит) | Регистр условий Тест и переход | EAE (расширенный арифметический элемент) | |||||
PDP-11 | 16 | 1970 | 3 | Память Память | CISC | 8 (включает указатель стека,., хотя любой регистр может. действовать как указатель стека) | Фиксированный (16-битный) | Код условия | Little | Floating Point,. Набор коммерческих команд | Нет | Нет | |
POWER, PowerPC, Power ISA | 32/64 (32 sizes64) | 3.0B | 1990 | 3 | Регистр Регистр | RISC | 32 | Фиксированный (32-битный), переменная | Код условия | Big / Bi | AltiVec, APU, VSX, Ячейка | Да | Да |
RISC-V | 32, 64, 128 | 2.2 | 2010 | 3 | Регистр Регистр | RISC | 32 (включая «ноль») | Переменная | Сравнить и перейти | Маленький | ? | Да | Да |
RX | 64/32/16 | 2000 | 3 | Память Память | CISC | 4 целое число + 4 адрес | Переменная | Сравнить и перейти | Little | Нет | |||
S + core | 16/32 | 2005 | RISC | Little | |||||||||
SPARC | 64 (32 sizes64) | OSA2017 | 1985 | 3 | Регистр Регистр | RISC | 32 (включая «ноль») | Фиксированный (32-битный) | Код условия | Big → Bi | VIS | Да | Да |
SuperH (SH) | 32 | 1994 | 2 | Регистр Регистр. Регистр памяти | RISC | 16 | Фиксированный (16- или 32-битный), переменный | Код условия. (один бит) | Bi | ||||
System / 360. System / 370. z / Архитектура | 64 (32 → 64) | 1964 | 2 (большая часть). 3 (FMA, отдельный операнд.). 4 (некоторый вектор inst.) | Память регистров. Память памяти. Регистр Регистр | CISC | 16 | Переменная (16-, 32- или 48 -bit) | Условие код, сравнение и ветвление | Большой | Нет | Нет | ||
Транспьютер | 32 (4 → 64) | 1987 | 1 | Укладчик | MISC | 3 (в виде стека) | Переменная (8 ~ 120 байтов) | Сравнение и переход | Little | ||||
VAX | 32 | 1977 | 6 | Память Память | CISC | 16 | Переменная | Сравнение и переход | Little | ||||
Z80 | 8 | 1976 | 2 | Регистровая память | CISC | 17 | Переменная (от 8 до 32 бит) | Регистр условий | Little | ||||
Archi-. tecture | Биты | Версия | Intro-. duced | Максимальное количество. операндов | Тип | Дизайн | Регистры. (исключая FP / вектор) | Кодировка инструкций | Branch оценка | Endian-. ness | Расширения | Открыть | Роялти. бесплатно |