Архитектура компьютера
RISC vs CISC: Война архитектур
Цели урока
- Понимать философию и историю CISC
- Знать проблемы CISC для конвейеризации
- Понимать принципы RISC архитектуры
- Знать ключевые RISC процессоры
- Понимать гибридный подход современных CPU
Предварительные знания
- Цикл выполнения инструкций
- Конвейеризация
Ваш iPhone на ARM-процессоре обгоняет ноутбук с Intel? История о том, как 'меньше' стало 'быстрее'.
- Apple Silicon (M1, M2, M3) - ARM захватывает десктопы
- RISC-V в IoT и встраиваемых системах
- Серверы на ARM (AWS Graviton, Ampere)
- x86 в дата-центрах и легаси-системах
История противостояния
1977: VAX-11 - вершина CISC, 300+ инструкций. 1980: Patterson & Hennessy начинают исследования RISC в Berkeley и Stanford. 1984: MIPS R2000 - первый коммерческий RISC. 1985: ARM1 - начало ARM (Acorn RISC Machine). 1989: Intel 486 - начало RISC-ядра внутри x86. 2007: iPhone - ARM в каждом кармане. 2010: RISC-V - открытый стандарт. 2020: Apple M1 - ARM на десктопе бьёт Intel.
CISC: Делаем жизнь программиста легче
**1970-е:** Память дорогая, компиляторы примитивные, программисты пишут на ассемблере. Решение? Мощные инструкции!
**CISC (Complex Instruction Set Computer):** Одна инструкция делает много работы. Меньше кода = меньше памяти.
| Особенность CISC | Пример (x86) | Зачем |
|---|---|---|
| Сложные режимы адресации | MOV EAX, [EBX+ECX*4+8] | Доступ к массивам структур |
| Инструкции разной длины | 1-15 байт | Экономия памяти |
| Много специальных инструкций | ENTER, LEAVE, LOOP | Частые паттерны кода |
| Микрокод | Внутренний интерпретатор | Сложные операции |
**VAX-11 (1977):** 300+ инструкций! Включая POLY для вычисления полиномов и INDEX для проверки границ массива.
Главная цель CISC в 1970-х:
Проблемы CISC
**1980-е:** Исследования Паттерсона и Хеннесси показали - сложные инструкции редко используются!
**Проблемы CISC для конвейера:**
| Проблема | Почему | Последствия |
|---|---|---|
| Разная длина инструкций | Нужен сложный декодер | Не параллельный fetch |
| Разное время выполнения | ADD = 1 такт, DIV = 40 | Стоит весь конвейер |
| Память в операндах | CISC: ADD [mem], reg | Непредсказуемые задержки |
| Микрокод | Внутренний цикл | Занимает pipeline |
**Ирония CISC:** Компиляторы 80-х стали умнее и перестали использовать сложные инструкции - простые быстрее!
Главная проблема CISC для конвейеризации:
RISC: Меньше - значит быстрее
**RISC (Reduced Instruction Set Computer):** Простые инструкции, но БЫСТРЫЕ. Сложность переносим в компилятор.
**Парадокс:** Больше инструкций, но меньше тактов. Почему?
| Фактор | CISC | RISC |
|---|---|---|
| Инструкций для задачи | Меньше | Больше (~30%) |
| Тактов на инструкцию | 3-10 (CPI) | ~1 (CPI) |
| Частота | Ограничена сложностью | Выше |
| Итого | CPI × инструкции | Меньше! |
**Формула:** Время = Инструкции × CPI × Период такта. RISC побеждает в произведении!
Load/Store архитектура означает:
Принципы дизайна RISC
**Ключевые решения RISC:**
**RISC-V:** Открытый RISC ISA (2010). Базовый набор - 47 инструкций. Модульные расширения (M, A, F, D, C).
Если MIPS имеет 32 регистра, сколько бит нужно для кодирования одного регистра?
RISC процессоры: MIPS, ARM, RISC-V
**MIPS (1984):** Первый коммерчески успешный RISC. Playstation 1/2, сетевое оборудование.
**ARM (1985):** Низкое энергопотребление. Мобильные устройства, 200+ миллиардов чипов произведено.
**RISC-V (2010):** Открытый стандарт, бесплатная лицензия. Будущее RISC.
| RISC ISA | Регистров | Биты | Особенности |
|---|---|---|---|
| MIPS | 32 | 32/64 | Классический учебный RISC |
| ARM | 16/31 | 32/64 | Условные инструкции, Thumb |
| RISC-V | 32 | 32/64/128 | Модульный, открытый |
**ARM Thumb:** 16-битные инструкции для плотности кода. Компромисс между RISC чистотой и размером.
Уникальная особенность ARM архитектуры:
Современность: Гибридный подход
**Итог войны:** Никто не победил. Современные процессоры - гибриды!
**Apple M1 (ARM):** Чистый RISC, но с огромным OoO и предсказателями. Лучшее из обоих миров.
| Аспект | x86 (Intel/AMD) | ARM (Apple M1/Qualcomm) |
|---|---|---|
| ISA | CISC (внешне) | RISC |
| Декодер | Сложный, дорогой | Простой, эффективный |
| Энергия на декодирование | ~15% от ядра | ~5% от ядра |
| Совместимость | 40 лет ПО | Нужна перекомпиляция |
| Плотность кода | Лучше (переменная длина) | Хуже (32 бита фикс) |
| Производительность/Ватт | Хуже | Лучше |
**ARM на десктопе:** Apple M1 показал, что ARM может конкурировать с x86 в производительности. Windows on ARM растёт.
RISC всегда быстрее CISC
Современные x86 процессоры внутри используют RISC-подобные микрооперации и очень быстры
Важна реализация, не только ISA. x86 с триллионами долларов инвестиций оптимизирован до предела.
Почему x86 всё ещё доминирует на десктопах?
Ключевые идеи
- CISC: сложные инструкции для экономии памяти (1970-е)
- Проблема: сложные инструкции плохо конвейеризуются
- RISC: простые инструкции, 1 такт, много регистров
- Load/Store: арифметика только с регистрами
- Современные x86 внутри транслируют в RISC μops
- ARM доминирует в мобильных, растёт на десктопах
- RISC-V - открытое будущее
Связанные темы
RISC/CISC - фундамент для понимания современных процессоров.
- Конвейеризация — RISC оптимизирован для pipeline
- ARM и x86 — Конкретные реализации