Перейти к основному содержимому

RISC и CISC

Всем

RISC (Reduced Instruction Set Computer) и CISC (Complex Instruction Set Computer) — два подхода к уровню ISA (набору команд). Спор «RISC против CISC» бушевал в 1980–1990‑х; сегодня граница размыта: ARM в смартфонах, x86 на ПК, внутри Intel — RISC‑подобное ядро.


Идея в двух предложениях

ПодходФилософияТипичный пример
CISCОдна «богатая» команда может заменить несколько простых (например, movsb копирует строку)x86, x86-64
RISCМного простых команд фиксированной длины; сложное поведение — из короткой последовательностиARM, RISC-V, MIPS, Power

CISC экономил память программ в эпоху дорогой RAM. RISC упрощал декодирование и конвейер, когда память подешевела, а тактовая частота стала главным рычагом скорости.


Сравнительная таблица

КритерийCISC (классический x86)RISC (ARM, RISC-V)
Длина командыПеременная (1–15 байт у x86)Часто фиксированная (4 байта у ARM32)
Обращение к памятиМногие команды сами читают/пишут операндыТолько load / store; арифметика — в регистрах
Число регистровИсторически мало (аккумулятор, пара регистров)Много регистров общего назначения
Сложные командыenter, строковые, x87Редко; цикл из простых
КонвейерПоздно (Intel 486+, Pentium)С ранних RISC‑чипов (MIPS, SPARC)
Код программыКомпактнее в байтахЧасто больше инструкций, но проще исполнять

Почему RISC ускорял процессор

  1. Простое декодирование — фиксированный формат, меньше полей → выше число команд в секунду.
  2. Конвейер — короткие стадии; классическая модель Fetch → Decode → Execute → Memory → Write-back (фон Нейман).
  3. Load/store — обращения к RAM предсказуемы; пока идёт load, конвейер может выполнять другие команды.
  4. Много регистров — меньше «трафика» с медленной памятью.

Суперскалярность — два и более конвейера параллельно (Pentium — два конвейера u и v). Это уже микроархитектура, но RISC её упростил.


Почему CISC не исчез

В 1990‑х ожидали доминирование RISC‑рабочих станций (SPARC, MIPS). На практике победил экосистемный эффект x86:

  • миллиарды долларов в ПО под Windows и DOS;
  • Intel встроил RISC‑идеи внутрь CISC — с 486 простые команды идут за один такт, сложные разбиваются на микрооперации;
  • совместимость — старый .exe работает на новом CPU.

Современный Core i7 — CISC снаружи, RISC внутри: декодер превращает x86 в поток микрокоманд для конвейера.


Принципы проектирования (наследие RISC)

Ими руководствуются и при создании x86, и ARM:

  • Большинство команд исполняется напрямую аппаратурой, без медленной микропрограммы.
  • Максимум команд в секунду — конвейер, superscalar, out-of-order.
  • Простое декодирование — единообразные форматы где возможно.
  • Load/store — память только через явные загрузку и сохранение.
  • Много регистров — снижение обращений к RAM.

Подробнее про конвейер и кэш — Компоненты железа, ЭВМ.


Где что встречается сегодня

АрхитектураКлассУстройства
x86-64CISC (ISA)ПК, ноутбуки, большинство серверов
ARMRISCСмартфоны, планшеты, Apple M‑series, Raspberry Pi
RISC-VRISC (открытая)IoT, эксперименты, некоторые новые CPU
AVRRISC (8‑бит)Arduino Uno, бытовая электроника
MIPS / PowerRISCРоутеры, игровые приставки (исторически), серверы IBM

Сравнение x86, ARM и RISC-V во встраиваемых системах — 112.


Практические следствия

ВопросОтвет
Почему Android на ARM, а Windows — на x86?Исторически разные ISA; эмуляция (Apple Rosetta, Windows on ARM) переводит или транслирует код
Нужно ли программисту знать RISC/CISC?Для Python/Java — редко; для embedded, perf‑инженерии и reverse — да
«RISC быстрее CISC»?Зависит от реализации; Apple M2 на ARM обгоняет многие x86, но причина — конвейер, кэш, техпроцесс, а не только три буквы в названии

Маршрут чтения
Сначала Многоуровневая организация (уровень ISA), затем эта статья, затем Память и кэш — локальность и промахи кэша объясняют, зачем load/store и регистры так важны.


Куда читать дальше

См. также

Другие статьи этого же раздела в боковом меню (как на странице "О разделе").