Архитектура набора команд
Машинный код |
---|
Общие понятия |
Инструкции |
В информатике ( архитектура набора команд ISA ) — это абстрактная модель , которая обычно определяет, как программное обеспечение управляет процессором в компьютере или семействе компьютеров. [1] Устройство или программа , выполняющая инструкции, описанные этим ISA, например центральный процессор (ЦП), называется реализацией этого ISA.
В общем, ISA определяет поддерживаемые инструкции , типы данных , регистры , аппаратную поддержку управления основной памятью . [ нужны разъяснения ] фундаментальные особенности (такие как согласованность памяти , режимы адресации , виртуальная память ) и модель ввода/вывода реализаций ISA.
ISA определяет поведение машинного кода, выполняемого в реализациях этой ISA, таким образом, чтобы это не зависело от характеристик этой реализации, обеспечивая двоичную совместимость между реализациями. Это позволяет использовать несколько реализаций ISA, которые различаются по таким характеристикам, как производительность , физический размер и денежная стоимость (среди прочего), но способны выполнять один и тот же машинный код, так что менее производительная и дешевая машина может быть заменена более дорогой и производительной машиной без необходимости замены программного обеспечения. Это также позволяет развивать микроархитектуру реализаций этой ISA, так что более новая, более производительная реализация ISA может запускать программное обеспечение, работающее на реализациях предыдущих поколений.
Если операционная система поддерживает стандартный и совместимый двоичный интерфейс приложений (ABI) для конкретной ISA, машинный код будет выполняться в будущих реализациях этой ISA и операционной системы. Однако если ISA поддерживает работу нескольких операционных систем, это не гарантирует, что машинный код для одной операционной системы будет работать в другой операционной системе, если только первая операционная система не поддерживает выполнение машинного кода, созданного для другой операционной системы.
ISA можно расширить, добавив инструкции или другие возможности или добавив поддержку больших адресов и значений данных; реализация расширенного ISA по-прежнему сможет выполнять машинный код для версий ISA без этих расширений. Машинный код, использующий эти расширения, будет работать только в реализациях, поддерживающих эти расширения.
Обеспечиваемая ими двоичная совместимость делает ISA одной из самых фундаментальных абстракций в вычислениях .
Обзор
[ редактировать ]Архитектура набора команд отличается от микроархитектуры , которая представляет собой набор методов проектирования процессора , используемых в конкретном процессоре для реализации набора команд. Процессоры с разными микроархитектурами могут использовать общий набор команд. Например, Intel Pentium и AMD Athlon реализуют почти идентичные версии набора команд x86 , но имеют совершенно разную внутреннюю структуру.
Концепция архитектуры , отличающаяся от проектирования конкретной машины, была разработана Фредом Бруксом из IBM на этапе проектирования System/360 .
До NPL [System/360] проектировщики компьютеров компании могли свободно учитывать цели по затратам не только путем выбора технологий, но и путем внесения функциональных и архитектурных усовершенствований. Задача совместимости SPREAD, напротив, постулировала единую архитектуру для серии из пяти процессоров, охватывающую широкий диапазон стоимости и производительности. Ни одна из пяти групп инженеров-проектировщиков не могла рассчитывать на то, что сможет внести коррективы в архитектурные спецификации как способ облегчить трудности в достижении целей по стоимости и производительности. [2] : стр.137
Некоторые виртуальные машины , которые поддерживают байт-код в качестве ISA, такие как Smalltalk , виртуальная машина Java и Microsoft от Common Language Runtime , реализуют это путем перевода байт-кода для часто используемых путей кода в собственный машинный код. Кроме того, эти виртуальные машины путем интерпретации выполняют менее часто используемые пути кода (см.: Компиляция «точно в срок» ). компания Transmeta реализовала набор инструкций x86 на процессорах VLIW Таким образом .
Классификация МСА
[ редактировать ]ISA можно классифицировать по-разному. Распространенной классификацией является архитектурная сложность . Компьютер со сложным набором команд (CISC) имеет множество специализированных инструкций, некоторые из которых редко используются в практических программах. Компьютер с сокращенным набором команд (RISC) упрощает процессор за счет эффективной реализации только тех инструкций, которые часто используются в программах, в то время как менее распространенные операции реализуются как подпрограммы, в результате чего дополнительное время выполнения процессора компенсируется нечастым использованием. [3]
Другие типы включают в себя архитектуры очень длинных командных слов (VLIW) и тесно связанные с ними длинные командные слова (LIW). [ нужна ссылка ] и архитектуры вычислений с явно параллельными командами (EPIC). Эти архитектуры стремятся использовать параллелизм на уровне инструкций с меньшим количеством аппаратного обеспечения, чем RISC и CISC, возлагая ответственность за выдачу инструкций и планирование на компилятор . [4]
Были изучены архитектуры еще меньшей сложности, такие как компьютер с минимальным набором команд (MISC) и компьютер с одним набором команд (OISC). Это теоретически важные типы, но они не были коммерциализированы. [5] [6]
Инструкции
[ редактировать ]Машинный язык состоит из дискретных операторов или инструкций . В архитектуре обработки данная инструкция может указывать:
- код операции (инструкция, которую необходимо выполнить), например, добавить, скопировать, проверить
- любые явные операнды:
- регистрирует
- буквальные/постоянные значения
- режимы адресации, используемые для доступа к памяти
Более сложные операции создаются путем объединения этих простых инструкций, которые выполняются последовательно или в соответствии с инструкциями потока управления .
Типы инструкций
[ редактировать ]Примеры операций, общих для многих наборов команд, включают:
Обработка данных и операции с памятью
[ редактировать ]- Установите фиксированное для регистра постоянное значение.
- Копирование данных из ячейки памяти или регистра в ячейку памяти или регистр (машинную команду часто называют перемещением ; однако этот термин вводит в заблуждение). Они используются для хранения содержимого регистра, содержимого другой ячейки памяти или результата вычисления, а также для извлечения сохраненных данных для последующего выполнения над ними вычислений. Их часто называют операциями загрузки и сохранения .
- Чтение и запись данных с аппаратных устройств.
Арифметические и логические операции
[ редактировать ]- Складывайте , вычитайте , умножайте или делите значения двух регистров, помещая результат в регистр, возможно, устанавливая один или несколько кодов условий в регистр состояния . [7]
- приращение , декремент в некоторых ISA, сохраняя выборку операнда в тривиальных случаях.
- Выполнение побитовых операций , например, соединение и дизъюнкция соответствующих битов в паре регистров, взятие отрицания каждого бита в регистре.
- Сравните два значения в регистрах (например, чтобы увидеть, меньше ли одно из них или они равны).
- с плавающей запятой Инструкции для арифметических операций с числами с плавающей запятой. [7]
Операции потока управления
[ редактировать ]- Перейдите в другое место программы и выполните там инструкции.
- Условно перейти в другое место, если выполняется определенное условие.
- Косвенно перейти в другое место.
- Вызовите другой блок кода, сохранив при этом местоположение следующей инструкции как точку для возврата.
Инструкции сопроцессора
[ редактировать ]- Загружайте/сохраняйте данные в сопроцессор и обратно или обменивайтесь ими с регистрами ЦП.
- Выполнение операций сопроцессора.
Сложные инструкции
[ редактировать ]Процессоры могут включать в свой набор команд «сложные» инструкции. Одна «сложная» инструкция делает то, что может потребовать выполнения множества инструкций на других компьютерах. Такие инструкции типичны для инструкций, которые выполняют несколько шагов, управляют несколькими функциональными блоками или иным образом появляются в большем масштабе, чем основная часть простых инструкций, реализуемых данным процессором. Некоторые примеры «сложных» инструкций включают в себя:
- передача нескольких регистров в память или из памяти (особенно стека ) одновременная
- перемещение больших блоков памяти (например, копирование строк или передача DMA )
- сложная целочисленная арифметика и арифметика с плавающей запятой (например, квадратный корень или трансцендентные функции, такие как логарифм , синус , косинус и т. д.)
- SIMD- , инструкции одна инструкция, выполняющая операцию над многими однородными значениями параллельно, возможно, в выделенных SIMD-регистрах.
- выполнение атомарной инструкции тестирования и установки или другой чтения-изменения-записи атомарной инструкции
- инструкции, которые выполняют операции ALU с операндом из памяти, а не с регистром
Сложные инструкции чаще встречаются в наборах инструкций CISC, чем в наборах инструкций RISC, но наборы инструкций RISC также могут включать их. Наборы инструкций RISC обычно не включают в себя операции ALU с операндами памяти или инструкции по перемещению больших блоков памяти, но большинство наборов инструкций RISC включают SIMD или векторные инструкции, которые выполняют одну и ту же арифметическую операцию над несколькими частями данных одновременно. Инструкции SIMD позволяют манипулировать большими векторами и матрицами за минимальное время. Инструкции SIMD позволяют легко распараллеливать алгоритмы, обычно используемые при обработке звука, изображения и видео. Различные реализации SIMD были выведены на рынок под торговыми марками, такими как MMX , 3DNow! и АлтиВек .
Кодирование инструкций
[ редактировать ]В традиционных архитектурах инструкция включает в себя код операции , определяющий выполняемую операцию, например добавление содержимого памяти в регистр , а также ноль или более спецификаторов операндов , которые могут указывать регистры , ячейки памяти или литеральные данные. Спецификаторы операндов могут иметь режимы адресации, определяющие их значение, или могут находиться в фиксированных полях. В архитектурах с очень длинным командным словом (VLIW), которые включают в себя множество архитектур микрокода , в одной инструкции указывается несколько одновременных кодов операций и операндов.
Некоторые экзотические наборы команд не имеют поля кода операции, например архитектуры, запускаемые транспортом (TTA), только операнды.
Большинство стековых машин имеют наборы инструкций с « 0 операндами », в которых для арифметических и логических операций отсутствуют поля спецификатора операнда; только инструкции, которые помещают операнды в стек вычислений или извлекают операнды из стека в переменные, имеют спецификаторы операндов. Набор команд выполняет большинство действий ALU с помощью постфиксных операций ( обратной польской записи выражений ), которые работают только со стеком , а не с регистрами данных или произвольными ячейками основной памяти. Это может быть очень удобно для компиляции языков высокого уровня, поскольку большинство арифметических выражений можно легко перевести в постфиксную нотацию. [8]
Условные инструкции часто имеют поле предиката — несколько битов, которые кодируют конкретное условие, вызывающее выполнение операции, а не ее невыполнение. Например, инструкция условного перехода передает управление, если условие истинно, так что выполнение переходит к другой части программы, и не передает управление, если условие ложно, так что выполнение продолжается последовательно. Некоторые наборы команд также имеют условные перемещения, поэтому перемещение будет выполнено, а данные будут сохранены в целевой позиции, если условие истинно, и не будут выполнены, а целевая позиция не будет изменена, если условие ложно. Аналогично, IBM z/Architecture имеет инструкцию условного сохранения. Некоторые наборы команд включают в себя поле предиката в каждой инструкции; это называется предикацией ветвления .
Количество операндов
[ редактировать ]Наборы инструкций можно классифицировать по максимальному количеству операндов, явно указанному в инструкциях.
(В следующих примерах a , b и c — это (прямые или вычисляемые) адреса, относящиеся к ячейкам памяти, а reg1 и т. д. относятся к машинным регистрам.)
C = A+B
- 0-операнды ( машины с нулевым адресом ), так называемые стековые машины : все арифметические операции выполняются с использованием одной или двух верхних позиций стека: [9]
push a
,push b
,add
,pop c
.C = A+B
нужно четыре инструкции . [10] Для стековых машин термины «0-операнд» и «нулевой адрес» применяются к арифметическим инструкциям, но не ко всем инструкциям, поскольку для доступа к памяти используются инструкции push и pop с 1 операндом.
- 1-операндные ( одноадресные машины ), так называемые аккумуляторные машины , включают ранние компьютеры и множество небольших микроконтроллеров : большинство инструкций определяют один правильный операнд (то есть константу, регистр или ячейку памяти), с неявным аккумулятором как левый операнд (и пункт назначения, если он есть):
load a
,add b
,store c
.C = A+B
нужны три инструкции . [10]
- 2-операнда — многие машины CISC и RISC подпадают под эту категорию:
- ЦИСК —
move A
до С ; затемadd B
до С. C = A+B
нужны две инструкции . Это эффективно «сохраняет» результат без явной инструкции сохранения .
- CISC — Часто машины ограничены одним операндом памяти на инструкцию:
load a,reg1
;add b,reg1
;store reg1,c
; Для этого требуется пара загрузки/сохранения для любого перемещения памяти, независимо от того,add
Результатом является увеличение, сохраненное в другом месте, как вC = A+B
или ту же ячейку памяти:A = A+B
.C = A+B
нужны три инструкции .
- RISC — если требуется явная загрузка памяти, инструкции будут такими:
load a,reg1
;load b,reg2
;add reg1,reg2
;store reg2,c
.C = A+B
нужно четыре инструкции .
- ЦИСК —
- 3-операнда, позволяющие лучше повторно использовать данные: [11]
- CISC — становится либо одной инструкцией:
add a,b,c
C = A+B
нужна одна инструкция .
- CISC — Или, на машинах, ограниченных двумя операндами памяти на инструкцию,
move a,reg1
;add reg1,b,c
;C = A+B
нужны две инструкции .
- RISC — арифметические инструкции используют только регистры, поэтому необходимы явные инструкции загрузки/сохранения с двумя операндами:
load a,reg1
;load b,reg2
;add reg1+reg2->reg3
;store reg3,c
;C = A+B
нужно четыре инструкции .- В отличие от 2-х и 1-х операндов, при этом все три значения a, b и c в регистрах остаются доступными для дальнейшего повторного использования. [11]
- CISC — становится либо одной инструкцией:
- больше операндов - некоторые машины CISC допускают различные режимы адресации, которые допускают более трех операндов (регистров или доступа к памяти), например, инструкция полиномиальной оценки VAX «POLY».
Из-за большого количества битов, необходимых для кодирования трех регистров инструкции с 3 операндами, RISC-архитектуры с 16-битными инструкциями неизменно представляют собой конструкции с 2 операндами, такие как Atmel AVR, TI MSP430 и некоторые версии ARM Thumb. . RISC-архитектуры с 32-битными инструкциями обычно представляют собой конструкции с 3 операндами, такие как архитектуры ARM , AVR32 , MIPS , Power ISA и SPARC .
определяет некоторое количество операндов (регистров, ячеек памяти или непосредственных значений) Каждая инструкция явно . Некоторые инструкции задают один или оба операнда неявно, например, сохраняя их на вершине стека или в неявном регистре. Если некоторые операнды заданы неявно, в инструкции необходимо указать меньше операндов. Когда «операнд назначения» явно указывает пункт назначения, необходимо указать дополнительный операнд. Следовательно, количество операндов, закодированных в инструкции, может отличаться от математически необходимого количества аргументов для логической или арифметической операции ( арности ). Операнды либо кодируются в виде «кода операции» инструкции, либо задаются в виде значений или адресов, следующих за кодом операции.
Регистрация давления
[ редактировать ]Давление регистров измеряет доступность свободных регистров в любой момент времени выполнения программы. Нагрузка на регистры высока, когда используется большое количество доступных регистров; таким образом, чем выше давление регистра, тем чаще содержимое регистра должно быть перенесено в память. Увеличение количества регистров в архитектуре снижает нагрузку на регистры, но увеличивает стоимость. [12]
В то время как встроенные наборы команд, такие как Thumb, страдают от чрезвычайно высокой нагрузки на регистры из-за небольших наборов регистров, RISC ISA общего назначения, такие как MIPS и Alpha, имеют низкую нагрузку на регистры. CISC ISA, такие как x86-64, обеспечивают низкую нагрузку на регистры, несмотря на меньшие наборы регистров. Это связано с множеством режимов адресации и оптимизаций (таких как адресация подрегистров, операнды памяти в инструкциях ALU, абсолютная адресация, адресация относительно ПК и разливы между регистрами), которые предлагают CISC ISA. [13]
Длина инструкции
[ редактировать ]Размер или длина инструкции широко варьируются: от четырех бит в некоторых микроконтроллерах до многих сотен бит в некоторых системах VLIW . Процессоры, используемые в персональных компьютерах , мейнфреймах и суперкомпьютерах , имеют минимальные размеры команд от 8 до 64 бит. Самая длинная инструкция на x86 — 15 байт (120 бит). [14] В наборе команд разные инструкции могут иметь разную длину. В некоторых архитектурах, особенно в большинстве компьютеров с сокращенным набором команд (RISC), Инструкции имеют фиксированную длину данной архитектуры , обычно соответствующую размеру слова . В других архитектурах инструкции имеют переменную длину , обычно кратную байту или полуслову . Некоторые из них, такие как ARM с расширением Thumb , имеют смешанную кодировку переменных, то есть две фиксированные, обычно 32-битную и 16-битную кодировку, где инструкции не могут свободно смешиваться, а должны переключаться между ними на ветке (или границе исключения в ARMv8). ).
Инструкции фиксированной длины легче обрабатывать, чем инструкции переменной длины, по нескольким причинам (нет необходимости проверять, пересекает ли инструкция строку кэша или границу страницы виртуальной памяти, [11] например), и поэтому их несколько легче оптимизировать по скорости.
Плотность кода
[ редактировать ]В компьютерах начала 1960-х годов основная память была дорогой и очень ограниченной, даже на мэйнфреймах. Минимизация размера программы, чтобы убедиться, что она уместится в ограниченной памяти, часто была центральной задачей. Таким образом, размер инструкций, необходимых для выполнения конкретной задачи, — плотность кода — был важной характеристикой любого набора команд. Это оставалось важным в первоначально крошечных воспоминаниях миникомпьютеров, а затем и микропроцессоров. Плотность остается важной и сегодня для приложений для смартфонов, приложений, загружаемых в браузеры через медленное подключение к Интернету, а также в ПЗУ для встроенных приложений. Более общим преимуществом повышенной плотности является повышение эффективности кэшей и предварительной выборки инструкций.
Компьютеры с высокой плотностью кода часто имеют сложные инструкции для ввода процедур, параметризованных возвратов, циклов и т. д. (поэтому задним числом они называются компьютерами с комплексным набором инструкций , CISC ). Однако более типичные или частые инструкции «CISC» просто сочетают базовую операцию ALU, такую как «добавление», с доступом к одному или нескольким операндам в памяти (с использованием таких режимов адресации , как прямая, косвенная, индексированная и т. д.). . Некоторые архитектуры могут допускать размещение двух или трех операндов (включая результат) непосредственно в памяти или могут выполнять такие функции, как автоматическое приращение указателя и т. д. Наборы программно-реализованных команд могут содержать еще более сложные и мощные инструкции.
Компьютеры с сокращенным набором команд , RISC , были впервые широко внедрены в период быстрого роста подсистем памяти. Они жертвуют плотностью кода ради упрощения схемы реализации и пытаются повысить производительность за счет более высоких тактовых частот и большего количества регистров. Одна инструкция RISC обычно выполняет только одну операцию, например «добавление» регистров или «загрузку» из ячейки памяти в регистр. Набор инструкций RISC обычно имеет фиксированную длину , тогда как типичный набор инструкций CISC имеет инструкции различной длины. Однако, поскольку RISC-компьютерам обычно требуется больше и зачастую более длинные инструкции для реализации конкретной задачи, они по своей сути менее оптимально используют полосу пропускания шины и кэш-память.
Некоторые встроенные RISC ISA, такие как Thumb и AVR32, обычно демонстрируют очень высокую плотность благодаря технологии, называемой сжатием кода. Этот метод упаковывает две 16-битные инструкции в одно 32-битное слово, которое затем на этапе декодирования распаковывается и выполняется как две инструкции. [15]
Компьютеры с минимальным набором команд (MISC) обычно представляют собой разновидность стековой машины , в которой имеется несколько отдельных инструкций (8–32), так что несколько инструкций можно уместить в одно машинное слово. Для реализации этих типов ядер часто требуется мало кремния, поэтому их можно легко реализовать в FPGA или в многоядерной форме. Плотность кода MISC аналогична плотности кода RISC; Увеличение плотности команд компенсируется тем, что для выполнения задачи требуется больше примитивных инструкций. [16] [ не удалось пройти проверку ]
Было проведено исследование сжатия исполняемых файлов как механизма повышения плотности кода. Математика колмогоровской сложности описывает проблемы и ограничения этого процесса.
На практике плотность кода также зависит от компилятора . Большинство оптимизирующих компиляторов имеют параметры, которые определяют, следует ли оптимизировать генерацию кода по скорости выполнения или по плотности кода. Например, у GCC есть опция -Os для оптимизации небольшого размера машинного кода и -O3 для оптимизации скорости выполнения за счет увеличения машинного кода.
Представительство
[ редактировать ]Инструкции, составляющие программу, редко указываются с использованием их внутренней числовой формы ( машинного кода ); они могут быть заданы программистами, использующими язык ассемблера , или, что чаще, могут быть сгенерированы языков программирования высокого уровня из компиляторами . [17]
Дизайн
[ редактировать ]Проектирование наборов команд является сложной проблемой. В истории микропроцессора было два этапа. Первым был CISC (компьютер со сложным набором инструкций), который содержал множество различных инструкций. Однако в 1970-х годах такие компании, как IBM, провели исследование и обнаружили, что многие инструкции из набора можно исключить. Результатом стал RISC (компьютер с сокращенным набором инструкций) — архитектура, использующая меньший набор инструкций. Более простой набор команд может обеспечить более высокую скорость, уменьшить размер процессора и снизить энергопотребление. Однако более сложный набор может оптимизировать общие операции, повысить эффективность памяти и кэша или упростить программирование.
Некоторые разработчики набора команд резервируют один или несколько кодов операций для какого-либо системного вызова или программного прерывания . Например, MOS Technology 6502 использует 00 H , Zilog Z80 использует восемь кодов C7,CF,D7,DF,E7,EF,F7,FF H. [18] в то время как Motorola 68000 использует коды в диапазоне H. A000..AFFF
Быстрые виртуальные машины гораздо проще реализовать, если набор инструкций соответствует требованиям виртуализации Попека и Голдберга . [ нужны разъяснения ]
Слайд NOP , используемый в программировании с учетом иммунитета, гораздо проще реализовать, если «незапрограммированное» состояние памяти интерпретируется как NOP . [ сомнительно – обсудить ]
В системах с несколькими процессорами неблокирующие алгоритмы синхронизации. гораздо проще реализовать [ нужна ссылка ] если набор инструкций включает поддержку чего-то вроде « выборки и добавления », « условной загрузки/сохранения » (LL/SC) или «атомарного сравнения и замены ».
Реализация набора инструкций
[ редактировать ]Данный набор команд может быть реализован различными способами. Все способы реализации определенного набора инструкций предоставляют одну и ту же модель программирования , и все реализации этого набора инструкций могут запускать одни и те же исполняемые файлы. Различные способы реализации набора команд дают разные компромиссы между стоимостью, производительностью, энергопотреблением, размером и т. д.
При проектировании микроархитектуры процессора инженеры используют блоки «жесткой» электронной схемы (часто спроектированные отдельно), такие как сумматоры, мультиплексоры, счетчики, регистры, АЛУ и т. д. какой-то язык передачи регистров. Затем для описания часто используется декодирование и упорядочивание каждой инструкции ISA с использованием этой физической микроархитектуры. Существует два основных способа построения блока управления для реализации этого описания (хотя во многих конструкциях используются промежуточные пути или компромиссы):
- В некоторых компьютерных конструкциях «жестко запрограммировано» полное декодирование и упорядочение набора команд (как и остальная часть микроархитектуры).
- используются процедуры или таблицы микрокода В других проектах для этого (или и то, и другое), используя ПЗУ или перезаписываемое ОЗУ ( перезаписываемое хранилище управления ), PLA или и то, и другое.
Некоторые конструкции ЦП с микрокодированием и записываемым хранилищем управления используют его для изменения набора инструкций (например, процессор Rekursiv и Imsys Cjip ). [19]
ЦП, предназначенные для реконфигурируемых вычислений , могут использовать программируемые пользователем вентильные матрицы (FPGA).
ISA также может быть эмулирована программно с помощью интерпретатора . Естественно, из-за накладных расходов на интерпретацию, это медленнее, чем прямой запуск программ на эмулируемом оборудовании, если только оборудование, на котором работает эмулятор, не на порядок быстрее. Сегодня поставщики новых ISA или микроархитектур обычно предоставляют программные эмуляторы разработчикам программного обеспечения до того, как будет готова аппаратная реализация.
Часто детали реализации оказывают сильное влияние на конкретные инструкции, выбранные для набора команд. Например, многие реализации конвейера команд допускают только одну загрузку или сохранение памяти для каждой инструкции, что приводит к архитектуре загрузки-сохранения (RISC). Другой пример: некоторые ранние способы реализации конвейера команд приводили к использованию слота задержки .
Требования высокоскоростной цифровой обработки сигналов толкнули в противоположном направлении — вынудили выполнять инструкции определенным образом. Например, чтобы выполнять цифровые фильтры достаточно быстро, команда MAC в типичном процессоре цифровых сигналов (DSP) должна использовать своего рода гарвардскую архитектуру , которая может извлекать команду и два слова данных одновременно, и для этого требуется одноцикловое умножение-накопление. множитель .
См. также
[ редактировать ]- Сравнение архитектур наборов команд
- Сжатый набор команд
- Компьютерная архитектура
- Эмулятор
- Симулятор набора команд
- Микрооперация
- Никаких вычислений с набором команд
- Полный системный симулятор OVPsim, обеспечивающий возможность создавать/моделировать/эмулировать любой набор инструкций с использованием C и стандартных API.
- Дизайн процессора
- Моделирование
- Зарегистрировать язык перевода (RTL)
Ссылки
[ редактировать ]- ^ «ГЛОССАРИЙ: Архитектура набора команд (ISA)» . Arm.com . Архивировано из оригинала 11 ноября 2023 г. Проверено 3 февраля 2024 г.
- ^ Пью, Эмерсон В.; Джонсон, Лайл Р.; Палмер, Джон Х. (1991). Системы IBM 360 и Early 370 . МТИ Пресс. ISBN 0-262-16123-0 .
- ^ Кристал Чен; Грег Новик; Кирк Шимано (16 декабря 2006 г.). «Архитектура RISC: RISC против CISC» . cs.stanford.edu . Проверено 21 февраля 2015 г.
- ^ Шланскер, Майкл С.; Рау, Б. Рамакришна (февраль 2000 г.). «EPIC: Вычисление явно параллельных инструкций». Компьютер . 33 (2): 37–45. дои : 10.1109/2.820037 .
- ^ Шаут, Аднан; Элдос, Тайсир (лето 2003 г.). «Классификация компьютерной архитектуры» . Международный журнал науки и технологий . 14 :3 . Проверено 2 марта 2023 г.
- ^ Гилрит, Уильям Ф.; Лапланте, Филип А. (6 декабря 2012 г.). Компьютерная архитектура: минималистский взгляд . Springer Science+Business Media . ISBN 978-1-4615-0237-1 .
- ^ Jump up to: а б Хеннесси и Паттерсон 2003 , с. 108.
- ^ Дюран, Поль. «Архитектура набора команд (ISA)» . Введение в информатику CS 0 .
- ^ Хеннесси и Паттерсон 2003 , с. 92.
- ^ Jump up to: а б Хеннесси и Паттерсон 2003 , с. 93.
- ^ Jump up to: а б с Кок, Джон; Маркштейн, Виктория (январь 1990 г.). «Эволюция технологии RISC в IBM» (PDF) . Журнал исследований и разработок IBM . 34 (1): 4–11. дои : 10.1147/rd.341.0004 . Проверено 5 октября 2022 г.
- ^ Пейдж, Дэниел (2009). «11. Составители». Практическое введение в архитектуру компьютера . Спрингер. п. 464. Бибкод : 2009pica.book.....P . ISBN 978-1-84882-255-9 .
- ^ Венкат, Ашиш; Таллсен, Дин М. (2014). Использование разнообразия ISA: проектирование мультипроцессора с гетерогенной ISA . 41-й ежегодный международный симпозиум по компьютерной архитектуре.
- ^ «Руководство разработчика программного обеспечения для архитектур Intel® 64 и IA-32» . Корпорация Интел . Проверено 5 октября 2022 г.
- ^ Уивер, Винсент М.; Макки, Салли А. (2009). Проблемы плотности кода для новых архитектур . Международная конференция IEEE по компьютерному дизайну. CiteSeerX 10.1.1.398.1967 . дои : 10.1109/ICCD.2009.5413117 .
- ^ «RISC против CISC» . cs.stanford.edu . Проверено 18 декабря 2021 г.
- ^ Хеннесси и Паттерсон 2003 , с. 120.
- ^ Ганссл, Джек (26 февраля 2001 г.). «Проактивная отладка» . Embedded.com .
- ^ «Великие микропроцессоры прошлого и настоящего (V 13.4.0)» . cpushack.net . Проверено 25 июля 2014 г.
Дальнейшее чтение
[ редактировать ]- Боуэн, Джонатан П. (июль – август 1985 г.). «Стандартные карты программирования микропроцессора». Микропроцессоры и микросистемы . 9 (6): 274–290. дои : 10.1016/0141-9331(85)90116-4 .
- Хеннесси, Джон Л .; Паттерсон, Дэвид А. (2003). Компьютерная архитектура: количественный подход (Третье изд.). Издательство Морган Кауфманн . ISBN 1-55860-724-2 . Проверено 4 марта 2023 г.