ИМХО основное отличие лагерей CISC и RISC в идеологии.
RISC. Мы делаем минимум команд, все команды примерно одной длины, работают с одинаковыми регистрами, выполняют простейшие действия. Что бы процессор получился проще, что бы потреблял меньше энергии, что бы проще было жить программистам.
Но на выходе получаем не самую большую производительность и разряженный машинный код.
С этим борются, добавляя чуть чуть микрокода, еще одну (более компактную) систему команд.
CISC. Машинный код - надо максимально сжать. Для этого часто используемые последовательности команд объединить в одну команду. Ага, нужно считать CRC32, пожалуйста, вот вам команда crc32. Сочетания регистров, которые не используются (или есть альтернатива), выкинуть. Надо оставить минимальное кол-во способов сделать что-то. Например lodsb, losw, mul. Команды условного перехода в 99% случаев ограничиваются 128 байтами, значит ограничить смещение. Часто используемые команды должны иметь более короткие опкоды.
В общем CISC - это заархивирвоанный RISC.

Часто встречающиеся команды в словарь. (Тем более, что внутри современных X86 сидит RISC)
И в итоге мы получаем тысячи команд разной длины, очень толстый микрокод, очень сложную железную оптимизацию.
Всё это работает быстро, но ждет кучу энергии.
В советском процессоре 1801ВМ1 микрокод (этот самый разархиватор) занимал почти половину площади кристалла. Но там перед инженерами стояла лишь одна цель, выполнять программы PDP11. Или расстрел

) Их можно понять.