CISC, RISC и другие типы микропроцессоров

CISC, RISC и другие типы микропроцессоров Полезное

Тип процессора по системе команд — это классификация архитектур по тому, какой набор машинных команд понимает ядро и как эти команды устроены. Именно систему команд (ISA, Instruction Set Architecture) имеют в виду, когда говорят про CISC, RISC, VLIW и другие типы микропроцессоров.

Дальше разберем, чем отличаются CISC и RISC на принципиальном уровне, на примерах x86, ARM и RISC-V; что такое VLIW и EPIC; и почему сегодня граница между CISC и RISC во многом стерлась. Это классификация именно по системе команд, а не общий рассказ об устройстве процессора. В конце — сводная таблица для выбора.

Система команд: что это и почему по ней делят процессоры

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

Важно различать два уровня. ISA (система команд) — это внешний интерфейс: какие команды видит компилятор. Микроархитектура — это внутреннее устройство конкретного чипа: конвейер, кэши, блоки исполнения. Один и тот же ISA (например x86-64) реализуют десятки разных микроархитектур.

CISC, RISC и VLIW — это подходы к проектированию именно ISA. Они отвечают на вопрос: делать команды сложными и разнообразными или простыми и единообразными, и кто отвечает за параллелизм — железо или компилятор.

CISC и RISC: два подхода к набору команд

CISC (Complex Instruction Set Computer) — архитектура со сложным набором команд. Идея: дать одну команду на целую типовую операцию, чтобы программа была короче.

Признаки CISC:

  • много команд, часто сотни, плюс расширения;
  • команды переменной длины (у x86 — от 1 до 15 байт);
  • одна команда может обращаться к памяти напрямую и выполнять несколько действий сразу;
  • сложный декодер, потому что форматов команд много.

Живой пример CISC — x86 и x86-64 (процессоры Intel и AMD в ПК и серверах). Исторические примеры — VAX, IBM System/360, Motorola 68000.

RISC (Reduced Instruction Set Computer) — архитектура с сокращенным набором команд. Идея обратная: сделать команды простыми и единообразными, чтобы железо было проще и быстрее, а сложные операции собирал компилятор из простых.

Признаки RISC:

  • сравнительно небольшой набор простых команд;
  • фиксированная длина команды в базовом наборе (обычно 32 бита), что упрощает декодирование;
  • модель load/store: с памятью работают только команды загрузки и записи, а арифметика идет между регистрами;
  • много регистров общего назначения.

Оговорка про длину: фиксированные 32 бита — это про базовый набор. У ARM есть режим Thumb с 16-битными командами, у RISC-V — расширение C со сжатыми 16-битными командами. Так что абсолютного правила тут нет.

Оговорка про такт: классический тезис RISC — одна команда за такт. Это упрощенная учебная модель. Современные RISC-ядра конвейерные и суперскалярные, за такт завершается несколько команд, а отдельная команда проходит через несколько стадий конвейера.

Примеры RISC: ARM и RISC-V

ARM — самая массовая RISC-архитектура. Она стоит практически во всех смартфонах и планшетах, в ноутбуках Apple на чипах Apple Silicon и во все большей доле серверов (например AWS Graviton, Ampere). Современная 64-битная версия — AArch64, появилась с ARMv8 (2011), развивается в линейке ARMv9.

Сильная сторона ARM — энергоэффективность и масштабируемость от микроконтроллеров до серверов. Тезис из старых статей про низкую популярность и проблемы совместимости ARM устарел: сегодня это одна из двух доминирующих архитектур наряду с x86.

RISC-V — открытый стандарт системы команд, который развивает организация RISC-V International. Его не нужно лицензировать, что и объясняет быстрый рост.

Устроен он модульно: есть базовый набор (RV32I для 32 бит или RV64I для 64 бит) и стандартные расширения, которые подключают по потребности:

  • M — умножение и деление;
  • A — атомарные операции;
  • F и D — вычисления с плавающей точкой одинарной и двойной точности;
  • C — сжатые 16-битные команды.

Набор RV64I плюс расширения IMAFD и служебные обозначают буквой G — это ходовая конфигурация общего назначения. RISC-V применяют и в микроконтроллерах, и в производительных системах; экосистема и поддержка год от года растут.

VLIW и EPIC: параллелизм закладывает компилятор

VLIW (Very Long Instruction Word) — архитектура с очень длинным командным словом. Одна такая команда кодирует сразу несколько операций, которые выполняются параллельно в разных блоках процессора.

Ключевое отличие от суперскалярных CISC и RISC — кто ищет параллелизм. В суперскалярном ядре порядок и параллельное исполнение подбирает аппаратный планировщик на лету. В VLIW это делает компилятор на этапе сборки: он заранее раскладывает операции по слотам длинной команды. Железо получается проще, но нагрузка и ответственность переносятся на компилятор.

Примеры VLIW — российские процессоры Эльбрус (МЦСТ) и графические ядра AMD поколения TeraScale (до серии Northern Islands, дальше AMD перешла на архитектуру GCN).

EPIC (Explicitly Parallel Instruction Computing) — развитие идей VLIW от Intel и HP с явным указанием параллелизма в коде. На нем строилась архитектура Intel Itanium. Коммерчески Itanium не выстрелил, и Intel прекратила его выпуск (последние поставки — около 2021 года).

Отдельно стоит упомянуть MISC (Minimal Instruction Set Computer) — подход с минимальным набором команд, обычно на стековой архитектуре (например процессоры Чака Мура MuP21 и семейство GreenArrays). MISC — это про предельную простоту и низкое энергопотребление, и его не надо путать с VLIW: длинное командное слово с несколькими операциями — это как раз признак VLIW, а не MISC.

Почему граница между CISC и RISC размылась

Сегодня деление на чистый CISC и чистый RISC описывает систему команд (внешний интерфейс), но плохо описывает внутреннее устройство чипа.

Причина — микрооперации. Современные x86-процессоры снаружи остаются CISC: они принимают сложные команды переменной длины. Но внутри аппаратный декодер разбирает каждую такую команду на поток простых микроопераций (micro-ops), и дальше их исполняет по сути RISC-подобное ядро. Так работают процессоры Intel начиная с микроархитектуры P6 (Pentium Pro, 1995) и AMD начиная с K5 (тоже 1995).

Встречное движение идет со стороны RISC: наборы команд ARM и RISC-V обросли сложными расширениями — векторными инструкциями (NEON и SVE у ARM, векторное расширение у RISC-V), криптографией, специализированными операциями. Простой RISC перестал быть совсем простым.

Поэтому корректный вывод такой: CISC и RISC — это про философию системы команд, а реальная производительность определяется микроархитектурой (конвейером, кэшами, предсказанием переходов), а не ярлыком CISC или RISC.

CISC, RISC и VLIW: таблица сравнения

Признак CISC RISC VLIW
Набор команд большой, сложные команды сокращенный, простые команды средний, упор на явный параллелизм
Длина команды переменная фиксированная в базовом наборе очень длинное слово из нескольких операций
Доступ к памяти команды могут работать с памятью напрямую только через load/store обычно только через load/store
Кто ищет параллелизм аппаратный планировщик (у суперскалярных) аппаратный планировщик компилятор при сборке
Декодер сложный простой простой, но слово длинное
Примеры x86, x86-64, System/360 ARM, RISC-V, MIPS, SPARC Эльбрус, Itanium (EPIC)
Где встречается ПК, серверы смартфоны, Apple Silicon, ARM-серверы, микроконтроллеры нишевые и спец. процессоры, GPU прошлых поколений

Как читать таблицу для выбора: если нужна совместимость с обширным софтом для ПК и серверов — это мир x86 (CISC). Если важны энергоэффективность, мобильные и встраиваемые устройства или открытость — смотрят в сторону RISC (ARM, RISC-V). VLIW и EPIC остаются нишевыми решениями под специфические задачи.

Где это применяется на практике

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

Смежные темы: Память компьютера: виды и классификация, Компиляторы: назначение и виды, Двоичный код: как он работает.

FAQ

RISC быстрее CISC?
Само по себе нет. Скорость определяет микроархитектура конкретного чипа, а не ярлык. Современный x86 (CISC) внутри исполняет микрооперации RISC-подобным ядром, поэтому прямое сравнение по типу ISA некорректно.

Чем ARM отличается от RISC-V, если оба RISC?
ARM — это лицензируемая архитектура компании Arm со зрелой экосистемой. RISC-V — открытый бесплатный стандарт системы команд с модульными расширениями. Различие в модели лицензирования и зрелости, а не в базовом принципе RISC.

К какому типу относится Эльбрус?
Эльбрус построен на VLIW: параллелизм закладывает компилятор в длинное командное слово, а не аппаратный планировщик во время выполнения. Совместимость с x86-кодом при этом обеспечивается программной трансляцией.

Выводы

  • Типы процессоров различают по системе команд (ISA): CISC, RISC, VLIW и другие.
  • CISC (x86) — сложные команды переменной длины и работа с памятью напрямую; RISC (ARM, RISC-V) — простые команды фиксированной длины и модель load/store.
  • VLIW (Эльбрус, Itanium через EPIC) перекладывает поиск параллелизма на компилятор.
  • Граница CISC и RISC размылась: x86 внутри исполняет микрооперации, а RISC добрал сложные расширения; производительность решает микроархитектура, а не ярлык.
  • Для выбора смотрят на задачу: совместимость и ПК — x86, энергоэффективность и мобильные или открытость — ARM и RISC-V.

Освойте тему на практике

Разобраться в устройстве процессоров и низкоуровневом коде удобнее на практике: на курсе Системное программирование архитектуру разбирают на реальных задачах. А посмотреть формат и уровень занятий можно на открытых уроках Otus.

OTUS Журнал
Скидка 5% 14-20 сентября на курсы (popup)