Набор команд архитектуры ( ISA ) является абстрактной моделью компьютера , называемый также компьютерной архитектуры . Реализация ISA называется реализацией . ISA допускает несколько реализаций, которые могут различаться по производительности , физическому размеру и денежной стоимости (среди прочего); потому что ISA служит интерфейсом между программным обеспечением и оборудованием . Программное обеспечение, написанное для ISA, может работать на разных реализациях одного и того же ISA. Это позволило двоичную совместимостьмежду компьютерами разных поколений, которые должны быть легко достигнуты, и развитием компьютерных семейств. Обе эти разработки помогли снизить стоимость компьютеров и повысить их применимость. По этим причинам ISA - одна из самых важных абстракций в современных вычислениях .
ISA определяет все, что программист на машинном языке должен знать, чтобы программировать компьютер. То, что определяет ISA, различается между ISA; в общем, ISA определяют поддерживаемые типы данных , какое состояние (например, основная память и регистры ) и их семантика (например, согласованность памяти и режимы адресации ), набор инструкций (набор машинных инструкций, которые включают компьютерные машинный язык) и модель ввода / вывода .
База [ править ]
В первые десятилетия развития вычислительной техники были компьютеры, которые использовали двоичную , десятичную [1] и даже троичную систему . [2] [3] Современные компьютеры почти всегда бинарны.
Биты [ править ]
Компьютерные архитектуры часто описываются как п - битные архитектуры. Сегодня 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 , имеют меньшие внутренние пути к данным, в то время как другие, такие как 360/195 , имеют большие внутренние пути к данным. Ширина внешней шины данных не используется для определения ширины архитектуры; NS32008, NS32016 и NS32032 были в основном те же 32-битный чип с различными внешними шинами данных; NS32764 имел 64-битную шину и использовал 32-битный регистр. Ранние 32-битные микропроцессоры часто имели 24-битный адрес, как и процессоры System / 360.
Операнды [ править ]
Количество операндов - это один из факторов, который может дать представление о производительности набора команд. Трехоперандная архитектура позволит
А: = В + С
вычисляться в одной инструкции.
Двухоперандная архитектура позволит
А: = А + В
должны быть вычислены в одной инструкции, поэтому для имитации одной инструкции с тремя операндами необходимо выполнить две инструкции.
А: = ВА: = А + С
Порядок байтов [ править ]
Архитектура может использовать "большой" или "маленький" порядок байтов, или и то, и другое, или быть настраиваемой для использования того и другого. Процессоры с прямым порядком байтов упорядочивают байты в памяти, причем младший байт многобайтового значения находится в ячейке памяти с наименьшим номером. Архитектуры с прямым порядком байтов вместо этого упорядочивают байты с самым значимым байтом по адресу с наименьшим номером. Архитектура x86, а также несколько 8-битных архитектур имеют прямой порядок байтов. Большинство архитектур RISC (SPARC, Power, PowerPC, MIPS) изначально были с прямым порядком байтов (ARM - с прямым порядком байтов), но многие (включая ARM) теперь настраиваются как с прямым порядком байтов, так и с обратным порядком байтов.
Порядок байтов применяется только к процессорам, которые позволяют индивидуальную адресацию единиц данных (например, байтов ), которые меньше, чем базовое адресуемое машинное слово.
Наборы инструкций [ править ]
Обычно количество регистров представляет собой степень двойки , например 8, 16, 32. В некоторых случаях псевдорегистр с аппаратным обнулением включается как «часть» регистровых файлов архитектур, в основном для упрощения режимов индексации. В этой таблице подсчитываются только целые «регистры», которые могут использоваться общими инструкциями в любой момент. Архитектуры всегда включают в себя специализированные регистры, такие как указатель программы (ПК). Они не учитываются, если не указано иное. Обратите внимание, что некоторые архитектуры, такие как SPARC, имеют окно регистров ; для этих архитектур счетчик ниже показывает, сколько регистров доступно в окне регистров. Также не учитываются регистры без архитектуры для переименования регистров .
Обратите внимание, что общий тип архитектуры, « загрузка-сохранение », является синонимом «Регистр-Регистр» ниже, что означает, что никакие инструкции не обращаются к памяти, кроме специального - загрузки в регистр (-ы) - и сохранения из регистров (-ов) - с помощью возможные исключения операций с атомарной памятью для блокировки.
В таблице ниже сравнивается основная информация о наборах инструкций, которые должны быть реализованы в архитектурах ЦП:
архи- tecture | Биты | Версия | привносится наведенной | Макс. # Операндов | Тип | Дизайн | Регистры (исключая FP / вектор) | Кодировка инструкций | Оценка отделения | Endian- Несс | Расширения | Открыть | Без лицензионных отчислений |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
6502 | 8 | 1975 г. | 1 | Регистр-Память | CISC | 3 | Переменная (от 8 до 32 бит) | Регистр условий | Маленький | ||||
6809 | 8 | 1978 г. | 1 | Регистр-Память | CISC | 9 | Переменная (от 8 до 32 бит) | Регистр условий | Большой | ||||
680x0 | 32 | 1979 г. | 2 | Регистр-Память | CISC | 8 данных и 8 адресов | Переменная | Регистр условий | Большой | ||||
8080 | 8 | 1974 г. | 2 | Регистр-Память | CISC | 8 | Переменная (от 8 до 24 бит) | Регистр условий | Маленький | ||||
8051 | 32 (8 → 32) | 1977? | 1 | Зарегистрироваться – Зарегистрироваться | CISC |
| Переменная (от 8 бит до 128 байт) | Сравните и разветвите | Маленький | ||||
x86 | 16, 32, 64 (16 → 32 → 64) | 1978 г. | 2 (целое число) 3 ( AVX ) [a] 4 (FMA4) [4] | Регистр-Память | 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 байт / префикс) | Код состояния | Маленький | x87 , IA-32 , MMX , 3DNow! , SSE , SSE2 , PAE , x86-64 , SSE3 , SSSE3 , SSE4 , BMI , AVX , AES , FMA , XOP , F16C | Нет | Нет | |
Альфа | 64 | 1992 г. | 3 | Зарегистрироваться Зарегистрироваться | RISC | 32 (включая «ноль») | Фиксированный (32-битный) | Регистр условий | Би | MVI , BWX , FIX , CIX | Нет | ||
ARC | 16/32 | ARCv2 [5] | 1996 г. | 3 | Зарегистрироваться-Зарегистрироваться | RISC | 16 или 32, включая пользователя SP, можно увеличить до 60 | Переменная (16- и 32-битная) | Сравните и разветвите | Би | Пользовательские инструкции APEX | ||
ARM / A32 | 32 | ARMv1-v8 | 1983 г. | 3 | Зарегистрироваться-Зарегистрироваться | RISC |
| Фиксированный (32-битный) | Код состояния | Би | НЕОН, Джазель , VFP , TrustZone , LPAE | Нет | |
Большой палец / T32 | 32 | ARMv4T-ARMv8 | 1994 г. | 3 | Зарегистрироваться-Зарегистрироваться | RISC |
| Thumb: фиксированный (16-битный) , Thumb-2: переменный (16- и 32-битный) | Код состояния | Би | НЕОН, Джазель , VFP , TrustZone , LPAE | Нет | |
Arm64 / A64 | 64 | ARMv8-A [6] | 2011 [7] | 3 | Зарегистрироваться-Зарегистрироваться | RISC | 32 (включая указатель стека / "нулевой" регистр) | Фиксированный (32-битный) | Код состояния | Би | SVE и SVE2 | Нет | |
AVR | 8 | 1997 г. | 2 | Зарегистрироваться-Зарегистрироваться | RISC | 32 16 об «уменьшенной архитектуре» | Переменная (в основном 16-битная, четыре инструкции 32-битные) | Регистр условий, пропуск, обусловленный битом регистра ввода-вывода или общего назначения , сравнение и пропуск | Маленький | ||||
AVR32 | 32 | Ред. 2 | 2006 г. | 2–3 | RISC | 15 | Переменная [8] | Большой | Виртуальная машина Java | ||||
Blackfin | 32 | 2000 г. | 3 [9] | Зарегистрироваться-Зарегистрироваться | RISC [10] | 2 аккумулятора 8 регистров данных 8 регистров указателя 4 индексных регистра 4 буферных регистра | Переменная ( 16- или 32-битная ) | Код состояния | Литтл [11] | ||||
CDC Upper серии 3000 | 48 | 1963 г. | 3 | Регистр-Память | CISC | 48-битный регистр A, 48-битный регистр Q, 6 15-битных регистров B, прочее | Переменная (24 и 48 бит) | Несколько типов прыжков и прыжков | Большой | ||||
CDC 6000 Центральный процессор (CP) | 60 | 1964 г. | 3 | Зарегистрироваться-Зарегистрироваться | N / A [b] | 24 (8 18-битных регистров адреса, 8 18-битных индексных регистров, 8 60-битных регистраций операндов) | Переменная (15, 30 и 60 бит) | Сравните и разветвите | н / д [c] | Сравнить / переместить блок | Нет | Нет | |
CDC 6000 Периферийный процессор (PP) | 12 | 1964 г. | 1 или 2 | Регистр-Память | CISC | 1 18-битный регистр A, ячейки 1-63 служат индексными регистрами для некоторых инструкций | Переменная (12 и 24 бит) | Тестовый регистр, тестовый канал | н / д [д] | дополнительные периферийные блоки обработки | Нет | Нет | |
Крузо (родной VLIW) | 32 [12] | 2000 г. | 1 | Регистр-Регистр [12] | VLIW [12] [13] |
| Переменная (64- или 128-битная в основном режиме, 15 байт в эмуляции x86) [13] | Код состояния [12] | Маленький | ||||
Эльбрус (родной VLIW) | 64 | Эльбрус-4С | 2014 г. | 1 | Регистр-Регистр [12] | VLIW | 8–64 | 64 | Код состояния | Маленький | Своевременный динамический перевод: 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-битная) | Сравнение и регистр ветвей и условий | Би | Пользовательские инструкции | Нет | Нет | |
Itanium (IA-64) | 64 | 2001 г. | Зарегистрироваться-Зарегистрироваться | ЭПИЧЕСКИЙ | 128 | Фиксированный (128-битные пакеты с 5-битным тегом шаблона и 3 инструкциями по 41 бит каждая) | Регистр условий | Би (по выбору) | Технология виртуализации Intel | Нет | Нет | ||
M32R | 32 | 1997 г. | 3 | Зарегистрироваться-Зарегистрироваться | RISC | 16 | Переменная (16- или 32-битная) | Регистр условий | Би | ||||
Mico32 | 32 | ? | 2006 г. | 3 | Зарегистрироваться-Зарегистрироваться | RISC | 32 [14] | Фиксированный (32-битный) | Сравните и разветвите | Большой | Пользовательские инструкции | Да [15] | да |
MIPS | 64 (32 → 64) | 6 [16] [17] | 1981 г. | 1–3 | Зарегистрироваться-Зарегистрироваться | RISC | 4–32 (включая «ноль») | Фиксированный (32-битный) | Регистр условий | Би | MDMX , MIPS-3D | Нет | Нет [18] [19] |
MMIX | 64 | ? | 1999 г. | 3 | Зарегистрироваться-Зарегистрироваться | RISC | 256 | Фиксированный (32-битный) | ? | Большой | ? | да | да |
NS320xx | 32 | 1982 г. | 5 | Память-Память | CISC | 8 | Переменная кодировка Хаффмана длиной до 23 байтов | Код состояния | Маленький | BitBlt инструкции | |||
OpenRISC | 32, 64 | 1,3 [20] | 2010 г. | 3 | Зарегистрироваться-Зарегистрироваться | RISC | 16 или 32 | Фиксированный | ? | ? | ? | да | да |
PA-RISC (HP / PA) | 64 (32 → 64) | 2.0 | 1986 г. | 3 | Зарегистрироваться-Зарегистрироваться | RISC | 32 | Фиксированный (32-битный) | Сравните и разветвите | Большой → Би | МАКСИМУМ | Нет | |
PDP-8 [21] | 12 | 1966 г. | Регистр-Память | CISC | 1 аккумулятор 1 регистр частных множителей | Фиксированный (12 бит) | Регистр условий Тест и ветка | EAE (расширенный арифметический элемент) | |||||
PDP-11 | 16 | 1970 г. | 3 | Память-Память | CISC | 8 (включает указатель стека, хотя любой регистр может действовать как указатель стека) | Фиксированный (16 бит) | Код состояния | Маленький | Плавающая точка, набор коммерческих инструкций | Нет | Нет | |
ПИТАНИЕ , PowerPC , Power ISA | 32/64 (32 → 64) | 3,0B [22] | 1990 г. | 3 | Зарегистрироваться-Зарегистрироваться | RISC | 32 | Фиксированный (32-битный) , переменный | Код состояния | Большой / Би | AltiVec , APU, VSX , сотовый | да | да |
RISC-V | 32, 64, 128 | 2.2 [23] | 2010 г. | 3 | Зарегистрироваться-Зарегистрироваться | RISC | 32 (включая «ноль») | Переменная | Сравните и разветвите | Маленький | ? | да | да |
RX | 64/32/16 | 2000 г. | 3 | Память-Память | CISC | 4 целых + 4 адреса | Переменная | Сравните и разветвите | Маленький | Нет | |||
S + ядро | 16/32 | 2005 г. | RISC | Маленький | |||||||||
SPARC | 64 (32 → 64) | OSA2017 [24] | 1985 г. | 3 | Зарегистрироваться-Зарегистрироваться | RISC | 32 (включая «ноль») | Фиксированный (32-битный) | Код состояния | Большой → Би | ВИС | да | Да [25] |
SuperH (SH) | 32 | 1994 г. | 2 | Регистр-Регистр Регистр-Память | RISC | 16 | Фиксированный (16- или 32-битный) , переменный | Код состояния (один бит) | Би | да | да | ||
Система / Система 360/370 z / Архитектура | 64 (32 → 64) | 1964 г. | 2 (большая часть) 3 (FMA, отдельный операнд) 4 (некоторый векторный экземпляр) | Регистр-Память -Память- Регистр-Регистр-Регистр | CISC | 16 общих 16 управления (S / 370 и новее) 16 доступа (ESA / 370 и новее) | Переменная (16, 32 или 48 бит) | Код условия, сравнение и ветвление | Большой | да | да | ||
Транспьютер | 32 (4 → 64) | 1987 г. | 1 | Штабелеукладчик | РАЗНОЕ | 3 (в виде стопки) | Переменная (8 ~ 120 байт) | Сравните и разветвите | Маленький | ||||
VAX | 32 | 1977 г. | 6 | Память-Память | CISC | 16 | Переменная | Сравните и разветвите | Маленький | Нет | |||
Z80 | 8 | 1976 г. | 2 | Регистр-Память | CISC | 17 | Переменная (от 8 до 32 бит) | Регистр условий | Маленький | ||||
архи- tecture | Биты | Версия | привносится наведенной | Макс. # Операндов | Тип | Дизайн | Регистры (исключая FP / вектор) | Кодировка инструкций | Оценка отделения | Endian- Несс | Расширения | Открыть | Без лицензионных отчислений |
См. Также [ править ]
- Центральный процессор (ЦП)
- Конструкция процессора
- Сравнение микроархитектур ЦП
- Набор инструкций
- Микропроцессор
- Тест (вычисления)
Заметки [ править ]
- ^ Инструкции LEA (8086 и более поздние) и IMUL-немедленное (80186 и более поздние) принимают три операнда; большинство других инструкций базового целого числа ISA принимают не более двух операндов.
- ^ частично RISC: архитектура загрузки / сохранения и простые режимы адресации, частично CISC: три длины инструкции и отсутствие единой синхронизации инструкции
- ^ Поскольку память представляет собой массив 60-битных слов без возможности доступа к подъединицам, обратный порядок байтов и обратный порядок байтов не имеют смысла. Дополнительный модуль CMU использует семантику big endian.
- ^ Поскольку память представляет собой массив из 12-битных слов, не имеющий средств доступа к подъединицам, обратный порядок байтов и обратный порядок байтов не имеют смысла.
Ссылки [ править ]
- ^ да Круз, Франк (18 октября 2004 г.). "Калькулятор исследования морской артиллерии IBM" . История вычислительной техники Колумбийского университета . Проверено 28 января 2019 года .
- ^ "Российский виртуальный компьютерный музей - Зал славы - Николай Петрович Брусенцов" .
- ^ Трогеманн, Георг; Нитусов Александр Юрьевич .; Эрнст, Вольфганг (2001). Вычислительная техника в России: раскрыта история компьютерных устройств и информационных технологий . Vieweg + Teubner Verlag. С. 19, 55, 57, 91, 104–107. ISBN 978-3-528-05757-2..
- ^ https://www.amd.com/system/files/TechDocs/43479.pdf
- ^ https://www.synopsys.com/designware-ip/processor-solutions/arc-processors.html
- ^ «Предварительный просмотр технологии ARMv8» (PDF) . Архивировано из оригинального (PDF) 10.06.2018 . Проверено 28 октября 2011 .
- ^ "ARM становится 64-битной с новой архитектурой чипа ARMv8" . Проверено 26 мая 2012 года .
- ^ "Документ архитектуры AVR32" (PDF) . Атмель . Проверено 15 июня 2008 .
- ^ "Руководство Blackfin" (PDF) . analog.com .
- ^ «Обзор архитектуры процессора Blackfin» . Аналоговые устройства . Проверено 10 мая 2009 .
- ^ "Архитектура памяти Blackfin" . Аналоговые устройства . Архивировано из оригинала на 2011-06-16 . Проверено 18 декабря 2009 .
- ^ a b c d e f "Разоблаченный Крузо: Transmeta TM5xxx Архитектура 2" . Технологии реального мира.
- ^ a b c Александр Клайбер (январь 2000 г.). «Технологии, лежащие в основе процессоров Crusoe» (PDF) . Transmeta Corporation . Проверено 6 декабря 2013 года .
- ^ "Архитектура LatticeMico32" . Решетчатый полупроводник . Архивировано из оригинального 23 июня 2010 года.
- ^ «Лицензирование открытого исходного кода LatticeMico32» . Решетчатый полупроводник . Архивировано из оригинального 20 июня 2010 года.
- ^ Архитектура MIPS64 для программистов: выпуск 6
- ^ Архитектура MIPS32 для программистов: выпуск 6
- ^ MIPS Открыть
- ^ [1]
- ^ Версии архитектуры OpenRISC
- ^ "Руководство пользователя PDP-8" (PDF) . bitsavers.org . 2019-02-16.
- ^ "Power ISA Version 3.0" . openpowerfoundation.org. 2016-11-30 . Проверено 6 января 2017 .
- ^ «Спецификации RISC-V ISA» . Проверено 17 июня 2019 .
- ^ Документация по процессору Oracle SPARC
- ^ Лицензия на архитектуру SPARC