Тема 07. Классификация и типовая структура микропроцессоров

Дисциплина: «ОП.02 Архитектура аппаратных средств» | Раздел 3. Архитектура и принципы работы основных логических блоков системы (§2.2 с.8 программы).

Введение: Понятие микропроцессора и архитектурные границы

Микропроцессор (ЦПУ / CPU — Central Processing Unit) — функционально законченное программно-управляемое электронное устройство, выполненное на одном или нескольких полупроводниковых кристаллах (СБИС/СнК), предназначенное для считывания, декодирования и синхронного исполнения последовательности машинных команд, а также координации всех системных компонентов ЭВМ.

Принципиальное разделение понятий:
  • ISA (Instruction Set Architecture — Архитектура набора команд): логическая модель процессора, видимая программисту на ассемблере и компилятору (состав регистров, форматы команд, режимы адресации, типы данных, обработка прерываний). Примеры: x86-64, ARMv9-A, RISC-V (RV64GC).
  • Микроархитектура (Microarchitecture): конкретная аппаратная реализация ISA на кремнии (число стадий конвейера, объем и организация кэшей, количество исполнительных портов, методы предсказания переходов). Примеры: Intel Golden Cove, AMD Zen 4, ARM Cortex-A715. Разные микроархитектуры могут безукоризненно исполнять одну и ту же ISA!

1. Внутренняя типовая структура процессорного ядра

Независимо от поколения и назначения, любое процессорное ядро классической структуры включает четыре фундаментальные подсистемы: Арифметико-логическое устройство (ALU), Устройство управления (Control Unit), Внутреннюю регистровую память (Register File) и Подсистему кэш-памяти первого уровня (L1 Cache).

МИКРОПРОЦЕССОРНОЕ ЯДРО (CPU CORE ARCHITECTURE) Кэш команд L1i (Instruction) Гарвардское разделение (32-64 КБ) Выборка инструкций по PC / IP Program Counter (PC / RIP) Указатель адреса следующей команды Устройство Управления (CU) Декодер инструкций (Decoder) Аппаратный декодер / μops генератор Микрокод ПЗУ (Microcode ROM) Обработка сложных CISC-инструкций Регистровый файл (GPRs) • РОН: RAX..RDX, R8..R15 / X0..X31 • SP (RSP / Stack Pointer) • Регистр флагов (FLAGS / CPSR) ZF, CF, SF, OF (биты состояния) Латентность: 0-1 такт ядра Шина управляющих сигналов АЛУ / ALU Сумматоры, логика AND/OR Barrel Shifter, умножитель Кэш данных L1d (Data) Гарвардское разделение (32-64 КБ) Порты чтения/записи для операндов Шина записи результата (Write-Back) и обновления флагов Объединенный кэш L2 / Интерконнект системной шины (Bus Interface Unit)

1.1. Арифметико-логическое устройство (ALU)

ALU выполняет фундаментальные преобразования информации:

1.2. Устройство управления (Control Unit / CU)

Устройство управления формирует координирующие потенциалы и импульсы для всех узлов процессора на каждом такте генератора:

1.3. Регистровый файл и специализированные регистры

Регистры представляют собой сверхоперативную память (SRAM-ячейки), работающую на полной тактовой частоте ядра без задержек ожидания шины:

1.4. Иерархия кэш-памяти: L1, L2, L3

Проблема разрыва в скорости (Memory Wall) между тактовой частотой CPU (3–5 ГГц) и латентностью оперативной памяти DRAM (50–80 нс, что эквивалентно 200–300 тактам простоя ядра) решается многоуровневым статическим кэшированием:

2. Классификация архитектур команд: CISC, RISC, VLIW

Философия проектирования процессоров исторически разделилась на три ключевые парадигмы, определяющие баланс между сложностью аппаратного кремния и интеллектом программного компилятора.

Критерий CISC (x86, x86-64) RISC (ARM, RISC-V, MIPS) VLIW (Эльбрус, TI C6000)
Полное наименование Complex Instruction Set Computer Reduced Instruction Set Computer Very Long Instruction Word
Формат и длина инструкций Переменная (1–15 байт в x86) Строго фиксированная (32 бита; 16 бит в C-extension) Широкие связки (128–512 бит) из нескольких микроопераций
Архитектура работы с памятью «Регистр — Память»: операции могут напрямую адресовать ОЗУ Строгая «Load-Store»: математика только в регистрах; память — через LOAD/STORE «Load-Store» с параллельной адресацией нескольких каналов памяти
Декодирование команд Сложный многоступенчатый аппаратный декодер + Microcode ROM Простой, сверхбыстрый комбинационный декодер прямого действия Аппаратный декодер отсутствует: слоты связки напрямую коммутируются на АЛУ
Планирование исполнения Сложное динамическое внеочередное (OoO — Out-of-Order Execution) In-Order (в MCU) или динамическое OoO (в производительных CPU) Строго статическое планирование на этапе компиляции кода
Основная сфера применения ПК, высоконагруженные серверы, рабочие станции Мобильные устройства, IoT, суперкомпьютеры (Fugaku), облачные серверы Цифровая обработка сигналов (DSP), военные и защищенные спецсистемы

Микрокод против аппаратного декодера

В современных процессорах x86 (Intel Core, AMD Ryzen) внешняя архитектура является CISC, но внутренняя микроархитектура — RISC-подобной. Аппаратные декодеры инструкций на лету расщепляют сложные команды x86 на простые микрооперации (μops / uops). Простые инструкции декодируются за 1 такт аппаратно, а комплексные инструкции (например, ENTER, LEAVE, STRING COPY) считывают цепочки микрокоманд из специального внутреннего постоянного запоминающего устройства — Microcode ROM.

3. Пятистадийный конвейер инструкций (RISC Classic Pipeline)

Базовый цикл выполнения инструкции в процессоре традиционно делится на 5 стадий:

  1. IF (Instruction Fetch — Выборка команды): считывание 32-битного машинного слова из кэша L1i по адресу регистра PC. Инкремент PC.
  2. ID (Instruction Decode & Reg Read — Декодирование и чтение регистров): распознавание кода операции (opcode), извлечение номеров исходных регистров и одновременное чтение операндов из регистрового файла.
  3. EX (Execute / Address Calculation — Выполнение): математическая операция в ALU либо вычисление эффективного адреса памяти.
  4. MEM (Memory Access — Обращение к памяти): чтение или запись данных в кэш L1d (только для команд Load / Store). Для остальных инструкций стадия пропускается.
  5. WB (Write-Back — Обратная запись): помещение вычисленного результата из ALU или считанного из памяти слова в целевой регистр РОН.

4. Вопросы и задания для самопроверки

1. В чем заключается главное различие между архитектурой набора команд (ISA) и аппаратной микроархитектурой процессора?
Показать правильный ответ

Ответ: ISA — это логический интерфейс и спецификация (контракт между процессором и программистом), определяющий состав регистров, формат опкодов и режимы адресации. Микроархитектура — это физическое кремниевое воплощение ISA (число конвейеров, размер кэшей, алгоритмы предсказания ветвлений, схемотехника декодеров). Разные микроархитектуры могут исполнять один и тот же бинарный код ISA без модификации.

2. Почему кэш-память первого уровня (L1) физически разделена на L1i и L1d, тогда как L2 и L3 объединены?
Показать правильный ответ

Ответ: Разделение L1 на L1i (команды) и L1d (данные) реализует Гарвардский принцип внутри ядра. Это исключает структурные конфликты на шине: стадия выборки команд (Fetch) может непрерывно считывать следующий код из L1i, в то время как стадия работы с памятью (MEM) параллельно читает или пишет операнды в L1d. Кэши L2 и L3 объединены для упрощения когерентности и гибкого динамического перераспределения полезного объема между кодом и данными.

3. Какую роль играет регистр флагов (FLAGS) при выполнении условных переходов в программах?
Показать правильный ответ

Ответ: Инструкции сравнения (CMP) или арифметики (SUB) воздействуют на битовые флаги ALU (ZF — нулевой результат, SF — отрицательный, OF — переполнение, CF — перенос). Последующая инструкция условного перехода (например, JE — Jump if Equal проверяет флаг ZF=1, а JL — Jump if Less проверяет SF≠OF) считывает состояние флага и либо модифицирует регистр PC целевым адресом, либо оставляет управление линейным.

4. Почему архитектура RISC получила подавляющее доминирование в смартфонах и встраиваемой электронике?
Показать правильный ответ

Ответ: Благодаря фиксированной длине команд и философии Load-Store аппаратный декодер RISC-процессоров предельно прост, занимает малую площадь кристалла и потребляет минимум энергии. Отсутствие сложного транслятора микрокода и огромного перечня legacy-режимов позволяет направить энергетический бюджет процессора на полезные вычисления и автономность аккумулятора.