В чем разница между CISC и RISC?


Ответ 1:

RISC, как правило, является «хранилищем загрузки» для / из регистров. Обычно используются три регистра, такие как ADD R1 = R2 + R3, загрузка и сохранение могут быть или не быть исключением только с двумя регистрами, используемыми в инструкции.

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

CISC, как правило, имеет два операнда, например, ADD, имеющий тот же регистр (или адрес памяти), который используется для пункта назначения, но также и тот же, который используется для одного из источников.

Раньше это было большим делом, и RISC проводным и CISC, используя микрокод.

Теперь микроархитектура для CISC, по крайней мере, x86 (если не все используемые CISC, то есть мэйнфреймы IBM - единственные другие выжившие CISC; микроконтроллеры могут быть исключением) разбивает инструкции на микроопы (операции типа micro / RISC), которые могут планировать выход из -заказ в отличие от оригинального микрокода.

RISC может даже сделать это, например, более новый ARM (не поначалу), поэтому различия меньше, чем раньше.

В оригинальном ARM не было инструкции по целочисленному делению, поскольку она была слишком сложной, не говоря уж о какой-либо для плавающей запятой. Теперь уменьшенная [сложность] для R в RISC применяется меньше, поскольку с плавающей запятой присуща сложность, и все основные процессоры RISC поддерживают даже инструкции вплоть до квадратного корня и тригонометрии.


Ответ 2:

CISC оптимизирован для выполнения как можно большего объема работы с заданным размером инструкции. Это связано с тем, что тогда у процессоров не было кеша, а чтение инструкций из памяти занимало бы несколько циклов, поэтому сложная инструкция со многими изменениями состояния не была проблемой, пока она была компактной.

RISC оптимизирован для процессоров, которые * имеют * кеш инструкций, и это меняет узкое место: кэши могут легко выдавать вам 64 и 128 бит данных за каждый цикл - до тех пор, пока он выровнен. Внезапно вы можете выполнить 1 или даже 2 инструкции за цикл, если нет зависимости, поэтому чистые инструкции, которые вызывают только одно изменение состояния, становятся намного быстрее.


Ответ 3:

CISC оптимизирован для выполнения как можно большего объема работы с заданным размером инструкции. Это связано с тем, что тогда у процессоров не было кеша, а чтение инструкций из памяти занимало бы несколько циклов, поэтому сложная инструкция со многими изменениями состояния не была проблемой, пока она была компактной.

RISC оптимизирован для процессоров, которые * имеют * кеш инструкций, и это меняет узкое место: кэши могут легко выдавать вам 64 и 128 бит данных за каждый цикл - до тех пор, пока он выровнен. Внезапно вы можете выполнить 1 или даже 2 инструкции за цикл, если нет зависимости, поэтому чистые инструкции, которые вызывают только одно изменение состояния, становятся намного быстрее.