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 ускорял процессор
- Простое декодирование — фиксированный формат, меньше полей → выше число команд в секунду.
- Конвейер — короткие стадии; классическая модель Fetch → Decode → Execute → Memory → Write-back (фон Нейман).
- Load/store — обращения к RAM предсказуемы; пока идёт load, конвейер может выполнять другие команды.
- Много регистров — меньше "трафика" с медленной памятью.
Суперскалярность — два и более конвейера параллельно (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-64 | CISC (ISA) | ПК, ноутбуки, большинство серверов |
| ARM | RISC | Смартфоны, планшеты, Apple M‑series, Raspberry Pi |
| RISC-V | RISC (открытая) | IoT, эксперименты, некоторые новые CPU |
| AVR | RISC (8‑бит) | Arduino Uno, бытовая электроника — примеры скетчей |
| MIPS / Power | RISC | Роутеры, игровые приставки (исторически), серверы IBM |
Сравнение x86, ARM и RISC-V во встраиваемых системах — Встраиваемые системы.
Практические следствия
| Вопрос | Ответ |
|---|---|
| Почему 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 и регистры так важны.
Рекомендую читать дальше
- Многоуровневая организация компьютера — уровень ISA в общей лестнице.
- Поколения вычислительной техники — MIPS (1985) и суперскаляр RS/6000 (1990).
- Компоненты железа — конвейер CPU, PCIe.
- Программа — ISA и машинный код.