Структура современных процессоров. Окружение процессора. CISC, RISC, VLIW

Структура современного процессора

Современный процессор (CPU) — это сложный многоядерный комплекс, включающий:

  • Суперскалярность: способность процессора выполнять несколько инструкций параллельно за один такт.
  • Кэш-память: иерархическая структура сверхбыстрой памяти (L1, L2 для каждого ядра и общая L3).
  • Множество ядер: от 1 до 16 и более физических ядер на одном кристалле.
  • Высокие тактовые частоты: от 500 МГц до 5 ГГц.

Архитектуры наборов команд

Философия проектирования процессоров исторически разделилась на три направления. Главное отличие между ними — баланс между сложностью “железа” (процессора) и сложностью компилятора.

CISC (Complex Instruction Set Computer)

Философия: «Сложный процессор, простой компилятор».

Команды имеют разную длину. Одна сложная команда может напрямую обращаться к ОЗУ, производить вычисления и сразу сохранять результат обратно.

  • Плюсы: Программы занимают мало места в памяти (высокая плотность кода). Компилятору легко переводить языки высокого уровня в машинный код.
  • Минусы: Процессору очень тяжело и долго расшифровывать (дешифровать) команды разной длины. “Железо” получается сложным, требует много транзисторов для логики управления.

RISC (Reduced Instruction Set Computer)

Философия: «Простой процессор, сложный компилятор». Набор команд сильно сокращён, все они имеют строго одинаковую длину. АЛУ работает только с регистрами, а для работы с ОЗУ есть только команды чтения и записи.

  • Плюсы: Дешифратор процессора максимально прост, поэтому каждая команда выполняется молниеносно (строго за 1 такт). Аппаратная часть дешевле и энергоэффективнее.
  • Минусы: Чтобы сделать сложное действие, нужно выполнить 4-5 простых команд, из-за чего код программы “раздувается”. Процессору требуется огромное количество регистров для хранения промежуточных данных.

VLIW (Very Long Instruction Word)

Философия: «Параллелизм на плечах компилятора». Архитектура призвана значительно увеличить скорость выполнения программ процессором за счет распараллеливания. Компилятор сам анализирует код программы, находит независимые друг от друга операции и упаковывает их в одну «сверхдлинную» машинную команду (пакет).

  • Плюсы: Высокая скорость выполнения программы, так как процессор аппаратно выполняет все инструкции из готового пакета одновременно на разных исполнительных блоках. Само “железо” процессора освобождается от сложной логики анализа зависимостей на лету.
  • Минусы: Полная зависимость от качества компилятора. Если компилятор не сможет найти в коде достаточное количество независимых команд, часть исполнительных блоков процессора будет простаивать впустую.