1

От http://en.wikipedia.org/wiki/Instruction_set

Процессоры CISC включают "сложные" инструкции в свой набор команд. Одна "сложная" инструкция выполняет то, что может потребовать много инструкций на других компьютерах. Такие инструкции типизируются инструкциями, которые выполняют несколько шагов, управляют несколькими функциональными блоками или иным образом появляются в большем масштабе, чем основная масса простых инструкций, реализованных данным процессором.

...

В архитектурах очень длинных командных слов (VLIW), которые включают в себя множество архитектур микрокодов, одна команда включает в себя несколько одновременных кодов операций и их операндов.

CISC и VLIW кажутся мне одним и тем же понятием, поскольку инструкция включает в себя несколько операций (т. Е. Код операции). Так это одна и та же концепция?

Как вы определяете одну операцию (т. Е. Код операции), когда указываете, что инструкция имеет несколько операций (т. Е. Коды операции)?

3 ответа3

4

Современные процессоры CISC имеют несколько исполнительных блоков. У них также есть много дополнительных схем и логики, чтобы попытаться распределить поток команд среди этих исполнительных блоков.

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

Примером может служить Itanium, в котором командные слова имеют размер 128 бит и содержат три инструкции. Это позволяет компилятору выполнять часть работы по сопряжению инструкций для совместного выполнения.

2

Инструкция - это отдельный заказ, который должен быть выполнен логически до следующего. Если инструкция содержит более одной операции, например, в инструкции VLIW, они должны выполняться одновременно. И в инструкции VLIW каждый слот операции соответствует блоку аппаратной обработки (комбинации FPU и ALU), которые статически назначаются инструкцией. Где, как в CISC или RISC, процессор может выбрать любой свободный процессор. Но так как единицы назначаются в инструкции с VLIW, вы не можете запустить код для одного VLIW на другой модели с большим или меньшим количеством блоков обработки, поскольку инструкции для этого будут иметь больше или меньше слотов в своих инструкциях, хотя некоторые большие могут разрешить запуск кода, который использует формат с меньшим количеством временных интервалов, в отличие от CISC или RISC, где код может автоматически использовать дополнительные блоки обработки, код VLIW не может использовать дополнительные блоки обработки, не перекомпилировавшись специально для процессора.

Это ограничение с VLIW является то, что побудило явное выполнение графа данных (EDGE).

0

Как вы определяете одну операцию (т. Е. Код операции), когда указываете, что инструкция имеет несколько операций (т. Е. Коды операции)?

Определения и ваши ожидания не совсем верны. "Код операции" используется для обозначения видимых инструкций, а не скрытых операций, таких как микрооперации, а "инструкция" должна относиться только к операциям, доступным для пользователя. Операция может быть простой или сложной, в зависимости от того, как вы к ней обращаетесь, например, хотите ли вы обратиться к самой операции в целом или к каждой операции более низкого уровня, используемой для достижения этой большой цели. Это похоже на деление, которое можно назвать отдельной операцией. Но деление также можно подразделить на ряд вычитаний / умножений, то есть несколько операций.

В архитектурах VLIW одна инструкция по-прежнему является одной инструкцией. Тем не менее, инструкции будут сгруппированы в виде пакета. Например, пакет в архитектуре Itanium содержит 3 инструкции, которые будут выполняться одновременно. Конечно, каждая инструкция должна иметь свой собственный код операции, и эти коды операции доступны для использования программистом. Более того, эти инструкции не зависят от других, в отличие от микроопераций, которые совместно представляют собой операцию некоторой инструкции более высокого уровня. Например, в некоторых архитектурах у вас может быть 2 сложения наряду с умножением и побитовым xor разных вещей в пакете, который не связан друг с другом.

Напротив, инструкция CISC является только одной инструкцией, которая выполняет одну операцию и имеет один код операции. Предыдущие поколения процессоров CISC выполняют каждую инструкцию напрямую, так что это действительно одна неразрывная инструкция. Однако в современных процессорах сложные "операции" будут разделены на несколько более простых операций, которые можно выполнять за более короткие тактовые циклы. Эти микрооперации не видны посторонним, поэтому вы не можете называть их множественными кодами операций. Для пользователей это все еще одна инструкция. Вы, вероятно, никогда не узнаете, какие микрооперации Intel или AMD используют под капотом.

CISC и VLIW, у каждого есть одна инструкция с одним операционным кодом, выполняющимся за один раз (исключая суперскалярное и неупорядоченное выполнение), одна выполняет несколько команд за один раз, так как же они представляют собой одинаковую концепцию? Вы должны смотреть сверху набора инструкций или по крайней мере того же уровня. Сравнивать вещи, используемые внутренне в ЦП, с вещами в инструкциях, установленных над ЦП, не имеет смысла.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .