Jump to content

Сжатый набор команд

(Перенаправлено из сжатых инструкций )

Сжатый набор команд или просто сжатые инструкции — это разновидность ( микропроцессора архитектуры набора команд ISA), которая позволяет представлять инструкции в более компактном формате. В большинстве реальных примеров длина сжатых инструкций составляет 16 бит в процессоре, который в противном случае использовал бы 32-битные инструкции. 16-битная ISA является подмножеством полной 32-битной ISA, а не отдельным набором команд. Меньший формат требует некоторых компромиссов: обычно доступно меньше инструкций и меньше регистров процессора можно использовать .

Эта концепция была первоначально представлена ​​компанией Hitachi как способ улучшить плотность кода конструкции их процессора SuperH RISC при переходе от 16-битных к 32-битным инструкциям в версии SH-5. Новый дизайн имел два набора инструкций: один давал доступ ко всей ISA нового дизайна, а меньший 16-битный набор, известный как SHcompact, позволял программам запускаться в меньших объемах основной памяти . Поскольку память даже самых маленьких систем теперь на порядки больше, чем у систем, породивших эту концепцию, размер больше не является главной проблемой. Сегодня преимущество состоит в том, что это уменьшает количество обращений к основной памяти и тем самым снижает потребление энергии в мобильных устройствах .

Патенты Hitachi были лицензированы компанией Arm Ltd. на их процессоры, где они были известны как «Thumb». Подобные системы встречаются в MIPS16e и PowerPC VLE. Срок действия оригинальных патентов истек, и эту концепцию можно найти в ряде современных проектов, включая RISC-V , который с самого начала разрабатывался для ее использования. Внедрение 64-битных вычислений привело к тому, что этот термин перестал использоваться так широко; эти процессоры обычно используют 32-битные инструкции и технически представляют собой разновидность сжатой ISA, но поскольку они в основном представляют собой модифицированные версии более старой ISA из 32-битной версии того же семейства процессоров; реального сжатия нет.

Концепция

[ редактировать ]

Микропроцессоры кодируют свои инструкции как последовательность битов , обычно разделенную на несколько 8-битных байтов . Например, в 6502 MOS ADC Инструкция выполняет двоичное сложение между значением операнда и значением, уже сохраненным в аккумуляторе . Существует множество мест, где процессор может найти операнд; он может располагаться в основной памяти или на специальной нулевой странице , или быть явной константой, например «10». В каждом из этих вариантов использовалась другая 8-битная инструкция или код операции ; если бы кто-то захотел добавить в аккумулятор константу 10, инструкция была бы закодирована в памяти как $69 $0A, где $0A является шестнадцатеричным для десятичного значения 10. Если бы вместо этого добавлялось значение, хранящееся в основной памяти по адресу $4400, это было бы $6D $00 $44, с адресом с прямым порядком байтов . [1]

Обратите внимание, что для второй инструкции требуется три байта, поскольку длина адреса памяти составляет 16 бит. В зависимости от инструкции он может использовать один, два или три байта. [1] Сейчас это известно как набор команд переменной длины , хотя в то время этот термин не был распространен, поскольку большинство процессоров, включая мэйнфреймы и миникомпьютеры , обычно использовали некоторые варианты этой концепции. Даже в конце 1970-х годов, когда микропроцессоры начали переходить от 8-битных форматов к 16-битным, эта концепция оставалась распространенной; Intel 8088 продолжал использовать 8-битные коды операций, за которыми могли следовать от нуля до шести дополнительных байтов в зависимости от режима адресации . [2]

Именно во время перехода к 32-битным системам, особенно когда концепция RISC начала распространяться на разработку процессоров, инструкции переменной длины начали уходить. в архитектуре MIPS Например, все инструкции представляют собой одно 32-битное значение с 6-битным кодом операции в старших битах , а остальные 26 битов используются различными способами, представляя ограниченный набор режимов адресации. Большинство проектов RISC схожи. Переход к формату инструкций фиксированной длины был одной из ключевых концепций проектирования, лежащих в основе производительности ранних проектов RISC; в более ранних системах для чтения инструкции могло потребоваться от одного до шести циклов памяти, что требовало подключения между различными частями логики, чтобы гарантировать, что процессор не попытается выполнить инструкцию до того, как данные будут готовы. В конструкциях RISC операции обычно занимают один цикл, что значительно упрощает декодирование. Экономия в этих схемах блокировки вместо этого применяется к дополнительной логике или добавлению регистров процессора , которые оказывают непосредственное влияние на производительность. [3]

Плотность кода

[ редактировать ]

Недостатком подхода RISC является то, что многим инструкциям просто не требуются четыре байта. Например, команда логического сдвига влево сдвигает биты регистра влево. В 6502, который имеет только один арифметический регистр A, эта инструкция может быть полностью представлена ​​ее 8-битным кодом операции. $06. [1] На процессорах с большим количеством регистров достаточно лишь кода операции и номера регистра, еще 4 или 5 бит. Например, в MIPS инструкции требуется только 6-битный код операции и 5-битный номер регистра. Но, как и в большинстве RISC-проектов, инструкция по-прежнему занимает полные 32 бита. Поскольку такого рода инструкции относительно распространены, программы RISC обычно занимают больше памяти, чем та же программа на процессоре переменной длины. [4]

В 1980-х годах, когда впервые появилась концепция RISC, это было обычным предметом жалоб. Поскольку инструкции занимали больше места, системе приходилось тратить больше времени на чтение инструкций из памяти. Было высказано предположение, что эти дополнительные доступы могут фактически замедлить работу программы. Обширный сравнительный анализ в конечном итоге показал, что RISC работает быстрее почти во всех случаях, и этот аргумент исчез. Однако бывают случаи, когда использование памяти остается проблемой независимо от производительности, и это касается небольших систем и встроенных приложений. Даже в начале 2000-х годов цена DRAM была достаточной, чтобы чувствительные к стоимости устройства имели ограниченный объем памяти. Именно для этого рынка Hitachi разработала дизайн SuperH . [5]

В более ранних версиях SuperH, от SH-1 до SH-4, инструкции всегда занимали 16 бит. Полученный набор команд имеет реальные ограничения; например, он может выполнять только математические операции с двумя операндами в форме A = A + B, тогда как большинство процессоров той эпохи использовали формат с тремя операндами, A = B + C. При удалении одного операнда из инструкции удаляются четыре бита (всего 16 регистров, требующих 4 бита), хотя это происходит за счет усложнения написания математического кода. Для рынков, на которые нацелен SuperH, это был простой компромисс. Значительным преимуществом 16-битного формата является то, что кэш инструкций теперь содержит в два раза больше инструкций для любого заданного объема SRAM . Это позволяет системе работать на более высоких скоростях, хотя некоторые из них могут быть смягчены использованием дополнительных инструкций, необходимых для выполнения операций, которые могут выполняться одной инструкцией с тремя операндами. [6]

Для SH-5 Hitachi перешла на 32-битный формат инструкций. Чтобы обеспечить обратную совместимость со своими более ранними разработками, они включили второй набор команд — SHcompact. SHcompact односторонне сопоставил исходные 16-битные инструкции с внутренними 32-битными инструкциями; он не выполнял несколько инструкций, как это было в более ранних процессорах с микрокодированием , это был просто меньший формат для одной и той же инструкции. Это позволило легко переносить оригинальные программы малого формата на новый SH-5, практически не усложняя декодер команд . [7]

ARM лицензировала ряд патентов Hitachi по аспектам разработки инструкций и использовала их для реализации своих инструкций Thumb. Процессоры ARM с буквой «T» в названии включали этот набор команд в дополнение к своим исходным 32-битным версиям и могли переключаться из 32-битного в 16-битный режим «на лету» с помощью команды BX команда. В режиме Thumb видны только восемь верхних регистров из обычных шестнадцати регистров ARM, но это те же регистры, что и в 32-битном режиме, и поэтому данные могут передаваться между Thumb и обычным кодом с использованием этих регистров. Каждая инструкция Thumb была аналогом 32-битной версии, поэтому Thumb был строгим подмножеством исходной ISA. [8] Одно из ключевых отличий между моделью ARM и SuperH заключается в том, что Thumb сохраняет некоторые инструкции с тремя операндами в 16-битном формате, что достигается за счет уменьшения видимого файла регистров до восьми, поэтому для выбора регистра требуется всего 3 бита. [9]

Архитектура MIPS также добавила аналогичный набор сжатых данных в свой MIPS16e, который очень похож на Thumb. Он также позволяет использовать только восемь регистров, хотя это не просто первые восемь; В конструкции MIPS регистр 0 используется в качестве нулевого регистра , поэтому регистры 0 и 1 в 16-битном режиме вместо этого отображаются на регистры 16 и 17 MIPS32. Большинство других деталей системы аналогичны Thumb. [10] Аналогично, последняя версия Power ISA , ранее называвшаяся PowerPC , включает инструкции «VLE», которые по сути идентичны. Они были добавлены по просьбе компании Freescale Semiconductor , чей интерес к Power в основном направлен на рынок встраиваемых систем. [11]

Современное использование

[ редактировать ]

Примерно с 2015 года многие процессоры перешли на 64-битный формат. Обычно они сохраняли 32-битный формат инструкций, расширяя при этом внутренние регистры до 64-битного формата. По первоначальному определению это сжатые инструкции, поскольку они меньше размера основного слова данных. Однако этот термин не используется в данном контексте; ссылки на сжатые инструкции всегда относятся к 16-битным версиям. [12]

  1. ^ Перейти обратно: а б с Зелень 2004 .
  2. ^ «Понимание архитектуры ARM» . ИнформИТ . 23 августа 2010 г.
  3. ^ Бэкон, Джейсон. «Форматы кода инструкций MIPS» . Информатика 315 Конспект лекций . Архивировано из оригинала 17 июля 2019 г. Проверено 9 апреля 2021 г.
  4. ^ Уивер и Макки 2009 .
  5. ^ «Эффекты 16-битных инструкций» . Ренесас .
  6. ^ СуперХ 1996 .
  7. ^ Ядро ЦП SH-5, Том 1: Архитектура (PDF) . п. 8.
  8. ^ Лемье 2004 .
  9. ^ «Сводка инструкций для большого пальца» . Техническое справочное руководство ARM7TDMI .
  10. ^ Техническое справочное руководство по расширению для конкретных приложений MIPS16e2 . МИПС. 26 апреля 2016 г.
  11. ^ Питание ISA V2.07 . ИБМ.
  12. ^ Справочник по альфа-архитектуре (PDF) . ДЕКАБРЬ. Октябрь 1996 г. с. 1.4.

Библиография

[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 10e83a5e8413b21d8029df95258b0584__1721625300
URL1:https://arc.ask3.ru/arc/aa/10/84/10e83a5e8413b21d8029df95258b0584.html
Заголовок, (Title) документа по адресу, URL1:
Compressed instruction set - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)