CISC и VLIW, а также инструкции и коды операций

CISC и VLIW, а также инструкции и коды операций

Отhttp://en.wikipedia.org/wiki/Набор_инструкций

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

...

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

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

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

решение1

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

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

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

решение2

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

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

решение3

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

Определения и ваши ожидания не совсем верны."Опкод"используется для указаниявидимыйинструкции, а не скрытые операции, такие как микрооперации, и"инструкция"следует ссылаться только наоперации, доступные пользователю. «Операция» не соответствует коду операции и может быть простой (один код операции) или сложной (несколько кодов операции) в зависимости от того, как вы к ней обращаетесь, например, если вы хотите обратиться ко всей операции или обратиться к каждой операции более низкого уровня, используемой для достижения этой большой цели. Это так же, как когда вы делаете деление, это можно назвать одной операцией. Но деление также может быть подразделено на серию вычитаний/умножений, т. е. несколько операций (этапов в аппаратном термине). Многие старые архитектуры RISC имеют отдельные инструкции для различных этапов деления, чтобы сохранить инструкции простыми и сделать конвейеризацию простой. Но современные архитектуры RISC обычно этого не делают и могут иметь очень сложные инструкции, такие как CISC, например, rlwinmв PowerPC или ldm/stmв ARM.

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

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

На самом деле современные архитектуры RISC также разбивают инструкции на микрооперации, как и CISC, и очень простые операции также объединяются в макрооперацию, которая также не видна пользователю, например CMP/Jcc в x86 или DIV/REM в RISC-V, и вы не скажете, что RISC прост. Инструкция RISC все еще может выполнять несколько операций.

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

Связанный контент