Как вы определяете одну операцию (т. Е. Код операции), когда указываете, что инструкция имеет несколько операций (т. Е. Коды операции)?
Определения и ваши ожидания не совсем верны. "Код операции" используется для обозначения видимых инструкций, а не скрытых операций, таких как микрооперации, а "инструкция" должна относиться только к операциям, доступным для пользователя. Операция может быть простой или сложной, в зависимости от того, как вы к ней обращаетесь, например, хотите ли вы обратиться к самой операции в целом или к каждой операции более низкого уровня, используемой для достижения этой большой цели. Это похоже на деление, которое можно назвать отдельной операцией. Но деление также можно подразделить на ряд вычитаний / умножений, то есть несколько операций.
В архитектурах VLIW одна инструкция по-прежнему является одной инструкцией. Тем не менее, инструкции будут сгруппированы в виде пакета. Например, пакет в архитектуре Itanium содержит 3 инструкции, которые будут выполняться одновременно. Конечно, каждая инструкция должна иметь свой собственный код операции, и эти коды операции доступны для использования программистом. Более того, эти инструкции не зависят от других, в отличие от микроопераций, которые совместно представляют собой операцию некоторой инструкции более высокого уровня. Например, в некоторых архитектурах у вас может быть 2 сложения наряду с умножением и побитовым xor разных вещей в пакете, который не связан друг с другом.
Напротив, инструкция CISC является только одной инструкцией, которая выполняет одну операцию и имеет один код операции. Предыдущие поколения процессоров CISC выполняют каждую инструкцию напрямую, так что это действительно одна неразрывная инструкция. Однако в современных процессорах сложные "операции" будут разделены на несколько более простых операций, которые можно выполнять за более короткие тактовые циклы. Эти микрооперации не видны посторонним, поэтому вы не можете называть их множественными кодами операций. Для пользователей это все еще одна инструкция. Вы, вероятно, никогда не узнаете, какие микрооперации Intel или AMD используют под капотом.
CISC и VLIW, у каждого есть одна инструкция с одним операционным кодом, выполняющимся за один раз (исключая суперскалярное и неупорядоченное выполнение), одна выполняет несколько команд за один раз, так как же они представляют собой одинаковую концепцию? Вы должны смотреть сверху набора инструкций или по крайней мере того же уровня. Сравнивать вещи, используемые внутренне в ЦП, с вещами в инструкциях, установленных над ЦП, не имеет смысла.