stringtranslate.com

Сравнение архитектур наборов инструкций

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

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

Представление данных

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

Символы кодируются в виде строк битов или цифр с использованием самых разных наборов символов; даже в пределах одного производителя существуют различия в наборах символов.

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

Аналогично, числа с плавающей точкой кодируются с помощью различных представлений для знака, экспоненты и мантиссы . В современных машинах шестнадцатеричные числа с плавающей точкой IBM и числа с плавающей точкой IEEE 754 в значительной степени вытеснили старые форматы.

Адреса обычно представляют собой беззнаковые целые числа, генерируемые из комбинации полей в инструкции, данных из регистров и данных из хранилища; детали различаются в зависимости от архитектуры.

Биты

Архитектуры компьютеров часто описываются как архитектуры n - бит . В первые 3⁄4 20-го века n часто равно 12 , 18 , 24 , 30, 36 , 48 или 60. В последние 1⁄3 20-го века n часто равно 8, 16 или 32, а в 21-м веке n часто равно 16, 32 или 64, но использовались и другие размеры (включая 6, 39 , 128 ) . На самом деле это упрощение, поскольку архитектура компьютера часто имеет несколько более или менее «естественных» размеров данных в наборе инструкций , но их аппаратная реализация может сильно отличаться. Многие архитектуры наборов инструкций имеют инструкции, которые в некоторых реализациях архитектуры наборов инструкций работают на половине и/или в два раза меньшем размере основных внутренних каналов данных процессора. Примерами этого являются Z80 , MC68000 и IBM System/360 . В этих типах реализаций вдвое более широкая операция обычно также занимает примерно вдвое больше тактов (чего нет в высокопроизводительных реализациях). Например, в 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.

Цифры

В первые 34 20-го века десятичные компьютеры, ориентированные на работу с текстом, обычно имели 10-значные [4] [5] [6] слова с отдельным знаком, используя все десять цифр в целых числах и две цифры для показателей степеней [7] [5] в числах с плавающей точкой.

Порядковый номер байтов

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

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

Форматы инструкций

Коды операций

В некоторых архитектурах инструкция имеет один код операции. В других некоторые инструкции имеют код операции и один или несколько модификаторов. Например, в IBM System/370 байт 0 является кодом операции, но когда байт 0 является B2 16 , то байт 1 выбирает определенную инструкцию, например, B205 16 является тактовым импульсом хранилища (STCK).

Операнды

Режимы адресации

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

Прямой
В инструкции указан полный (виртуальный) адрес.
Немедленный
Инструкция указывает значение, а не адрес.
Индексированный
Инструкция указывает регистр для использования в качестве индекса. В некоторых архитектурах индекс масштабируется по длине операнда.
Косвенный
Инструкция определяет местоположение слова, описывающего операнд, возможно, с использованием нескольких уровней индексации и косвенности.
Усеченный
База-смещение
Инструкция определяет смещение из адреса в регистре.
автоинкремент/ауродекремент
Регистр, используемый для индексации, увеличивается или уменьшается на 1, размер операнда или явную дельту.

Количество операндов

Число операндов является одним из факторов, которые могут дать представление о производительности набора инструкций. Архитектура с тремя операндами (2-вход, 1-выход) позволит

А := В + С

быть вычисленным в одной инструкции

ДОБАВИТЬ Б, С, А

Архитектура с двумя операндами (1-вход, 1-вход и выход) позволит

А := А + Б

быть вычисленным в одной инструкции

ДОБАВИТЬ Б, А

но требует, чтобы

А := В + С

быть сделано в двух инструкциях

ХОД B, AДОБАВИТЬ С, А

Длина кодировки

Как можно увидеть в таблице ниже, некоторые наборы инструкций придерживаются очень простой фиксированной длины кодирования, а другие имеют переменную длину. Обычно это архитектуры RISC , которые имеют фиксированную длину кодирования, а архитектуры CISC , которые имеют переменную длину, но не всегда.

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

В таблице ниже сравнивается основная информация об архитектурах наборов инструкций.

Примечания:

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

Примечания

  1. ^ Инструкции LEA (все процессоры) и IMUL-immediate (80186 и более поздние) принимают три операнда; большинство других инструкций базового целочисленного ISA принимают не более двух операндов.
  2. ^ частично RISC: архитектура загрузки/хранения и простые режимы адресации, частично CISC: три длины инструкций и отсутствие единой синхронизации инструкций
  3. ^ Поскольку память представляет собой массив 60-битных слов без возможности доступа к подблокам, big endian против little endian не имеет смысла. Необязательный блок CMU использует семантику big-endian.
  4. ^ Поскольку память представляет собой массив 12-битных слов без возможности доступа к подблокам, сравнение «от старшего к младшему» и «от младшего к старшему» не имеет смысла.

Ссылки

  1. ^ da Cruz, Frank (18 октября 2004 г.). «Исследовательский калькулятор военно-морских вооружений IBM». История вычислений Колумбийского университета . Получено 8 мая 2024 г.
  2. ^ "Российский виртуальный компьютерный музей _ Зал славы _ Николай Петрович Брусенцов".
  3. ^ Трогеманн, Георг; Нитусов Александр Юрьевич; Эрнст, Вольфганг (2001). Вычислительная техника в России: раскрыта история компьютерных устройств и информационных технологий . Vieweg+Teubner Verlag. стр. 19, 55, 57, 91, 104–107. ISBN 978-3-528-05757-2..
  4. ^ 650 Машина обработки данных с магнитным барабаном (PDF) . IBM . Июнь 1955 г. 22-6060-2 . Получено 8 мая 2024 г.
  5. ^ ab IBM 7070-7074 Principles of Operation (PDF) . Системная справочная библиотека. IBM . 1962. GA22-7003-6 . Получено 8 мая 2024 г. .
  6. ^ UNIVAC® Solid-state 80 Computer (PDF) . Sperry Rand Corporation . 1959. U1742.1r3 . Получено 8 мая 2024 г. .
  7. ^ IBM 650 MDDPM Дополнительные функции - Индексные аккумуляторы - Плавающая десятичная арифметика - Расширенное описание (PDF) . IBM . 1955. 22-6258-0 . Получено 8 мая 2024 г. .
  8. ^ "Руководство программиста по архитектуре AMD64, том 6: 128-битные и 256-битные инструкции XOP и FMA4" (PDF) . AMD . Ноябрь 2009 г.
  9. ^ «Synopsys представляет новый 64-разрядный процессор ARC IP, обеспечивающий до 3-кратного увеличения производительности для высокопроизводительных встраиваемых приложений».
  10. ^ "Разработки архитектуры Arm A-Profile 2022 - Блог об архитектурах и процессорах - Блоги сообщества Arm - Сообщество Arm". community.arm.com . 29 сентября 2022 г. Получено 09.12.2022 .
  11. ^ Фрумусану, Андрей (3 сентября 2020 г.). «ARM анонсировала Cortex-R82: первый 64-битный процессор реального времени». AnandTech .
  12. ^ "ARM переходит на 64-битную архитектуру с новой архитектурой чипа ARMv8". Computerworld . 27 октября 2011 г. Получено 8 мая 2024 г.
  13. ^ Тосио Ёсида. "Hot Chips 30 conference; Fujitsu briefing" (PDF) . Fujitsu. Архивировано из оригинала (PDF) 2020-12-05.
  14. ^ "Документ по архитектуре AVR32" (PDF) . Atmel . Получено 2024-05-08 .
  15. ^ "Руководство по Blackfin" (PDF) . analog.com .
  16. ^ "Обзор архитектуры процессора Blackfin". Analog Devices . Получено 2024-05-08 .
  17. ^ "Архитектура памяти Blackfin". Analog Devices . Архивировано из оригинала 2011-06-16 . Получено 2009-12-18 .
  18. ^ abcde "Crusoe Exposed: Transmeta TM5xxx Architecture 2". Технологии реального мира.
  19. ^ abc Alexander Klaiber (январь 2000 г.). "Технология процессоров Crusoe" (PDF) . Transmeta Corporation . Получено 6 декабря 2013 г.
  20. ^ Корпорация Intel (1981). Введение в архитектуру iAPX 432 (PDF) . стр. iii.
  21. ^ "Архитектура LatticeMico32". Lattice Semiconductor . Архивировано из оригинала 23 июня 2010 г.
  22. ^ "LatticeMico32 Open Source Licensing". Lattice Semiconductor . Архивировано из оригинала 20 июня 2010 г.
  23. ^ Архитектура MIPS64 для программистов: Выпуск 6
  24. ^ Архитектура MIPS32 для программистов: Выпуск 6
  25. ^ MIPS Открытый
  26. ^ «Wave Computing закрывает свою открытую инициативу MIPS с немедленным эффектом, без предупреждения».
  27. ^ Изменения архитектуры OpenRISC
  28. ^ Справочник PDP-5 (PDF) . Digital Equipment Corporation . Февраль 1964 г.
  29. ^ PDP-8 User Handbook (PDF) . Digital Equipment Corporation . Май 1966.
  30. ^ ab "Power ISA Version 3.1". openpowerfoundation.org. 2020-05-01 . Получено 2021-10-20 .
  31. ^ "RISC-V ISA Specifications" . Получено 17 июня 2019 г. .
  32. ^ Документация по процессору Oracle SPARC
  33. ^ Лицензия на архитектуру SPARC