CISC-процессор
CISC-процессор (Complex Instruction Set Computer, компьютер со сложным набором команд) — это тип архитектуры микропроцессоров, в котором каждая команда может выполнять несколько низкоуровневых операций (загрузку из памяти, арифметическое действие, сохранение в память) за один такт или за небольшое количество тактов. Основной характеристикой CISC является наличие большого количества сложных, многоцикловых инструкций, которые напрямую поддерживают высокоуровневые конструкции языков программирования (например, операции с массивами, строковые операции, вызовы функций). Архитектура CISC противопоставляется архитектуре RISC (Reduced Instruction Set Computer), где набор команд, наоборот, минимизирован и состоит из простых, однотактных инструкций.
История
Предпосылки появления
В 1960-х — начале 1970-х годов разработка микропроцессоров была ограничена низкой плотностью транзисторов и медленной памятью. Программирование велось в основном на ассемблере, и разработчики стремились сделать каждую команду максимально «мощной», чтобы сократить объём кода и количество обращений к медленной памяти. Это привело к появлению архитектур, где одна инструкция могла заменять несколько строк машинного кода.
Первые CISC-процессоры
Первым коммерчески успешным микропроцессором, реализующим принципы CISC, стал Intel 4004 (1971 год). Он имел 46 инструкций, но уже выполнял операции над 4-битными словами. Настоящий расцвет CISC начался с процессоров Intel 8080 (1974 год) и Motorola 6800 (1974 год). Эти 8-битные процессоры имели десятки инструкций, многие из которых были многоцикловыми.
Ключевым этапом стало появление процессора Intel 8086 (1978 год), который заложил основу архитектуры x86. Этот 16-битный процессор имел около 100 инструкций, включая сложные строковые операции (REP MOVS, REP SCAS) и поддержку сегментированной памяти. Впоследствии архитектура x86 эволюционировала в 32-битную (IA-32, 1985 год, процессор Intel 80386) и 64-битную (x86-64, 2003 год, AMD Opteron).
Расцвет и кризис
В 1980-х годах CISC-процессоры (Intel 80286, 80386, 80486; Motorola 68020, 68030) доминировали на рынке персональных компьютеров и рабочих станций. Однако к концу десятилетия проявились недостатки CISC:
- Сложность декодирования: переменная длина команд (от 1 до 15 байт в x86) усложняла конвейерную обработку.
- Сложность проектирования: реализация сотен сложных инструкций требовала огромного количества транзисторов и увеличивала время разработки.
- Производительность: из-за многоцикловости многих инструкций частота процессоров росла медленнее, чем у RISC-конкурентов (ARM, MIPS, SPARC).
В ответ на это в конце 1980-х — начале 1990-х годов возникла концепция RISC, которая предлагала упростить набор команд до минимума, делая каждую инструкцию однотактной. Это позволило RISC-процессорам работать на более высоких частотах при той же технологии.
Гибридный подход: CISC с RISC-ядром
Начиная с процессора Intel Pentium Pro (1995 год), производители CISC-процессоров (Intel, AMD) внедрили технологию микроархитектуры с декодированием. Внутри процессора сложные CISC-инструкции (макрокоманды) на лету разбиваются на несколько простых, однотактных микроопераций (µops), которые затем обрабатываются RISC-подобным исполнительным ядром. Внешне для программиста процессор остаётся CISC (поддерживает все старые инструкции), но внутри работает как RISC. Этот подход позволил сохранить совместимость с огромным объёмом существующего программного обеспечения (особенно для x86) и одновременно повысить производительность за счёт конвейеризации, суперскалярности и спекулятивного выполнения.
Классификация и виды
CISC-архитектуры можно классифицировать по нескольким признакам:
По разрядности
- 4-битные: Intel 4004, Intel 4040.
- 8-битные: Intel 8080, Zilog Z80, Motorola 6800, MOS Technology 6502.
- 16-битные: Intel 8086, Intel 80286, Motorola 68000 (внешняя 16-битная шина, внутренняя 32-битная).
- 32-битные: Intel 80386, Intel 80486, Pentium, Motorola 68020-68040, AMD Am386.
- 64-битные: Intel Core (начиная с Core 2), AMD Ryzen, Intel Xeon.
По производителю
- Intel: архитектура x86 (8086, 286, 386, 486, Pentium, Core, Xeon, Atom).
- AMD: совместимая с x86 архитектура (Am386, K5, K6, Athlon, Opteron, Ryzen, EPYC).
- Motorola (Freescale/NXP): архитектура 680x0 (68000, 68020, 68040, 68060), использовалась в компьютерах Apple Macintosh (до 1994 года), Amiga, Atari ST.
- VIA Technologies: процессоры C3, C7, Nano (совместимые с x86).
- IBM: архитектура System/360 (мэйнфреймы), Power (частично CISC-подобные инструкции, но ближе к RISC).
- DEC (Digital Equipment Corporation): архитектура VAX (Virtual Address eXtension), одна из самых сложных CISC-архитектур в истории (более 300 инструкций).
По области применения
- Универсальные (для ПК и серверов): x86-совместимые процессоры (Intel Core, AMD Ryzen).
- Встраиваемые и микроконтроллеры: Intel 8051 (8-битный CISC), Motorola 68HC11, некоторые модели ARM (хотя ARM — RISC, есть режимы Thumb, которые ближе к CISC).
- Мэйнфреймы: IBM z/Architecture (потомок System/360), поддерживающая сложные десятичные и строковые инструкции.
Устройство и характеристики
Основные признаки CISC-архитектуры
- Переменная длина инструкций: в x86 длина команды может варьироваться от 1 до 15 байт, что усложняет декодирование, но экономит память.
- Большое количество режимов адресации: в x86 поддерживаются десятки способов вычисления адреса операнда (регистровая, непосредственная, косвенная, базовая, индексная, базовая с индексом и смещением и т.д.).
- Сложные инструкции, работающие с памятью: например, инструкция
ADD [mem], regвыполняет чтение из памяти, сложение и запись обратно — за одну команду. - Многоцикловость: сложные инструкции (например, целочисленное деление
DIV, строковые операцииREP MOVS) могут выполняться десятки и сотни тактов. - Поддержка высокоуровневых конструкций: в старых CISC (VAX, Motorola 68000) были инструкции для вызова функций (
CALL), возврата (RET), проверки границ массива (BOUND), поиска подстроки (SCAS).
Микроархитектурные особенности современных CISC (x86)
Современные CISC-процессоры (Intel Core, AMD Ryzen) имеют сложную внутреннюю структуру:
- Декодер: преобразует сложные CISC-инструкции в последовательности микроопераций (µops). Для часто используемых инструкций (например,
MOV,ADD,CMP) декодер может быть прямым (1 инструкция → 1–4 µops). Для редких и сложных инструкций используется микрокод (ROM). - Планировщик: распределяет микрооперации по исполнительным блокам (ALU, FPU, блоки загрузки/сохранения).
- Исполнительные блоки: как правило, RISC-подобные, однотактные или с фиксированной задержкой.
- Кэш микроопераций (µop cache): хранит уже декодированные микрооперации, чтобы избежать повторного декодирования часто выполняемых инструкций.
- Спекулятивное выполнение: процессор предсказывает ветвления и выполняет инструкции заранее, отменяя результат при неверном предсказании.
Преимущества CISC
- Плотность кода: одна CISC-инструкция может заменять 3–5 RISC-инструкций, что уменьшает размер программы и снижает требования к памяти.
- Совместимость: архитектура x86 сохраняет обратную совместимость на протяжении 40+ лет, что позволяет запускать старое программное обеспечение на новых процессорах.
- Простота компиляции: компиляторы могут генерировать меньше инструкций, используя сложные макрокоманды.
- Эффективность для некоторых задач: строковые операции, работа с битовыми полями, десятичная арифметика могут быть реализованы одной инструкцией.
Недостатки CISC
- Сложность проектирования: современные CISC-процессоры (особенно x86) требуют огромных ресурсов для разработки и верификации (десятки тысяч человеко-лет).
- Энергопотребление и тепловыделение: из-за сложного декодера и большого количества транзисторов CISC-процессоры часто потребляют больше энергии, чем RISC-аналоги при той же производительности.
- Ограничения конвейеризации: переменная длина команд и сложные зависимости усложняют глубокую конвейеризацию.
- Избыточность: многие сложные инструкции (например,
BOUND,AAA,DAA) редко используются современными компиляторами, но продолжают поддерживаться для совместимости.
Применение
Персональные компьютеры и ноутбуки
Подавляющее большинство настольных и портативных компьютеров в мире (Windows, macOS, Linux) используют процессоры с архитектурой x86 (CISC). Это связано с огромной программной экосистемой, накопленной за десятилетия.
Серверы и центры обработки данных
Процессоры Intel Xeon и AMD EPYC (архитектура x86-64) доминируют на рынке серверов. Они обеспечивают высокую производительность, поддержку больших объёмов памяти (до нескольких терабайт) и аппаратную виртуализацию.
Встраиваемые системы
Хотя во встраиваемых системах доминируют RISC-архитектуры (ARM, RISC-V), CISC-процессоры (например, Intel Atom, AMD Geode) используются в промышленных контроллерах, терминалах, медицинском оборудовании и системах с жёсткими требованиями к совместимости с x86-софтом.
Мэйнфреймы
Архитектура IBM z/Architecture (CISC-подобная) используется в мэйнфреймах для банковских систем, государственных баз данных и крупных корпоративных приложений. Она поддерживает десятичную арифметику, транзакционную память и аппаратную шифровальную обработку.
Примеры CISC-процессоров
| Модель | Год выпуска | Разрядность | Количество транзисторов | Примечания |
|---|---|---|---|---|
| Intel 8086 | 1978 | 16 бит | 29 000 | Основа архитектуры x86 |
| Intel 80386 | 1985 | 32 бита | 275 000 | Первый 32-битный x86-процессор |
| Intel Pentium | 1993 | 32 бита | 3,1 млн | Первый суперскалярный x86 |
| Intel Core 2 Duo | 2006 | 64 бита | 291 млн | Первый двухъядерный Core |
| AMD Ryzen 9 7950X | 2022 | 64 бита | 13,1 млрд | 16 ядер, 32 потока, 5,7 ГГц |
| Motorola 68000 | 1979 | 16/32 бита | 68 000 | Использовался в Macintosh, Amiga |
| IBM z15 | 2019 | 64 бита (z/Arch) | 12,2 млрд | 12 ядер, до 5,2 ГГц |
Интересные факты
- Самая сложная CISC-архитектура — VAX от DEC (1977 год). Она имела более 300 инструкций, включая такие экзотические, как
POLY(вычисление полинома),CRC(циклический избыточный код) иEDITPC(редактирование строк). - Микрокод — ключевая технология CISC. Впервые применён в IBM System/360 (1964 год). Микрокод позволяет реализовать сложные инструкции в виде последовательностей простых микроопераций, хранящихся в ПЗУ.
- Процессор Intel 80286 (1982 год) поддерживал защищённый режим с виртуальной памятью, но из-за ошибки в микрокоде не мог переключаться обратно в реальный режим без сброса процессора.
- Архитектура x86 настолько сложна, что её полная документация (Intel Software Developer’s Manual) занимает более 5000 страниц.
- В 2020-х годах компания Apple перевела свои компьютеры Mac с CISC (x86) на RISC (ARM), что привело к значительному росту производительности и энергоэффективности. Однако на рынке ПК и серверов x86 продолжает доминировать.
Критика
Основная критика CISC-архитектуры (особенно x86) связана с её историческим наследием. Критики (в том числе создатели RISC, такие как Дэвид Паттерсон и Джон Хеннесси) утверждают, что:
- CISC — это «архитектурный компромисс», возникший из-за ограничений памяти в 1970-х годах, который больше не актуален.
- Сложные инструкции редко используются современными компиляторами, которые предпочитают генерировать простые, предсказуемые последовательности.
- Энергопотребление и тепловыделение современных CISC-процессоров (до 250 Вт для топовых моделей) значительно выше, чем у RISC-конкурентов (ARM — 5–15 Вт для мобильных чипов).
- Обратная совместимость x86 приводит к накоплению «мёртвого груза» — поддержка устаревших инструкций (например,
AAA,DAA,BOUND) занимает транзисторы и усложняет проектирование.
Сторонники CISC (Intel, AMD) парируют, что современные микроархитектуры (с декодированием в µops) фактически являются гибридными и сочетают преимущества обеих парадигм. Кроме того, огромная программная база x86 делает переход на другие архитектуры экономически нецелесообразным для большинства пользователей.
Источники
- Intel Corporation. Intel 64 and IA-32 Architectures Software Developer’s Manual. 2023.
- AMD. AMD64 Architecture Programmer’s Manual. 2022.
- Hennessy, J. L., Patterson, D. A. Computer Architecture: A Quantitative Approach. 6th ed., Morgan Kaufmann, 2019.
- Tanenbaum, A. S., Austin, T. Structured Computer Organization. 6th ed., Pearson, 2012.
- Motorola. M68000 Family Programmer’s Reference Manual. 1992.
- IBM. z/Architecture Principles of Operation. 2021.
- Patterson, D. A. «Reduced Instruction Set Computers». Communications of the ACM, vol. 28, no. 1, 1985, pp. 8–21.
- Halfhill, T. R. «RISC vs. CISC: The Post-RISC Era». Microprocessor Report, 1995.
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →