Архитектура компьютера

Структура CPU: Мозг компьютера

2007 год. Apple выпускает iPhone. Внутри - ARM CPU с тактовой частотой 412 МГц. Это в 10 раз медленнее настольных Intel Core 2 Duo того же года. Но iPhone работал быстрее, чем Windows Mobile на 600 МГц. Причина - другая микроархитектура и другие инструкции. Частота - не скорость. Понимание структуры CPU объясняет, почему Apple M1 на 3 ГГц бьёт Intel на 5 ГГц.

  • **Оптимизация кода**: cache-friendly алгоритмы в 10 раз быстрее за счёт правильной работы с шинами
  • **Embedded системы**: ARM vs RISC-V выбор зависит от структуры регистров и CU
  • **Security**: Spectre и Meltdown атаки эксплуатируют спекулятивное исполнение в CU
  • **Компиляторы**: распределение регистров - ключевая задача backend компилятора

Рождение архитектуры: Манхэттен, 1945

В июне 1945 года Джон фон Нейман написал отчёт 'First Draft of a Report on the EDVAC' - 101 страницу, изменившую вычисления навсегда. Идея: программа хранится в той же памяти, что и данные. До этого машины перепрограммировались физической перекоммутацией. ENIAC, предшественник EDVAC, весил 30 тонн и требовал нескольких дней для смены программы. Архитектура фон Неймана позволила загружать программы как данные. Она до сих пор используется в каждом современном процессоре.

Архитектура фон Неймана

**1945 год.** Джон фон Нейман публикует идею: программа хранится в той же памяти, что и данные. Революция!

**Гарвардская архитектура:** Отдельная память для кода и данных. Используется в микроконтроллерах (Arduino). Быстрее для real-time задач, но менее гибкая.

Главное отличие архитектуры фон Неймана:

Регистры: Память внутри CPU

**Регистр** - крошечная ячейка памяти прямо в процессоре. Доступ за 1 такт (~0.3 нс), в отличие от RAM (~50-100 нс).

Регистр (x86-64)РазмерНазначение
RAX64 битаАккумулятор, результат операций
RBX64 битаБазовый регистр
RCX64 битаСчётчик (циклы)
RDX64 битаДанные (I/O, умножение)
RSI64 битаSource Index (строки)
RDI64 битаDestination Index (строки)
RSP64 битаStack Pointer
RBP64 битаBase Pointer (стек)
R8-R1564 битаДополнительные регистры

Почему регистры быстрее RAM?

Специальные регистры

Некоторые регистры имеют **специальное назначение** и управляются автоматически CPU:

РегистрНазваниеФункция
PC / RIPProgram CounterАдрес следующей инструкции
IRInstruction RegisterТекущая инструкция
FLAGS / RFLAGSStatus RegisterФлаги Z, N, C, V и другие
SP / RSPStack PointerВершина стека
MARMemory Address RegisterАдрес для чтения/записи
MDRMemory Data RegisterДанные для чтения/записи

**FLAGS регистр:** Бит 6 = Zero Flag (ZF), Бит 7 = Sign Flag (SF), Бит 0 = Carry Flag (CF), Бит 11 = Overflow Flag (OF). Каждая арифметическая операция обновляет FLAGS автоматически.

Что хранит Program Counter (PC)?

Устройство управления

**Control Unit (CU)** - дирижёр процессора. Декодирует инструкции и генерирует управляющие сигналы для всех компонентов.

ТипОписаниеПримеры
HardwiredЛогические схемы напрямуюMIPS, ARM (простые ISA)
MicroprogrammedМикрокод в ROMx86 (сложные инструкции)

**Микрокод x86:** Сложные инструкции (REP MOVSB, CPUID) транслируются в последовательность микроопераций. Баги в CU можно патчить обновлением микрокода через BIOS - именно так исправляли Spectre/Meltdown.

Что делает Control Unit?

Шины: Дороги данных

**Шина (Bus)** - набор проводов для передачи сигналов между компонентами. Ширина шины определяет пропускную способность.

ШинаФункцияШирина (типично)
Data BusПередача данных64 бита
Address BusПередача адресов48-64 бита
Control BusУправляющие сигналы~20 линий

**Bottleneck шины:** FSB (Front Side Bus) в старых Intel CPU давал ~10 ГБ/с. Современный Infinity Fabric в AMD Ryzen - до 100 ГБ/с. Шина часто является узким местом производительности.

Если Address Bus имеет 32 линии, какой максимальный объём памяти можно адресовать?

Тактовый генератор

**Clock** - сердцебиение CPU. Кварцевый генератор создаёт периодический сигнал, синхронизирующий все операции.

**Физический предел:** Чем выше частота, тем больше тепловыделение (P ~ f^3). 4-5 ГГц - практический потолок для кремния при разумном охлаждении. Дальше - только параллелизм (многоядерность).

**Turbo Boost:** CPU может временно повышать частоту (до +500 МГц), если позволяет охлаждение и TDP. При перегреве частота автоматически снижается (thermal throttling).

Частота CPU определяет его скорость однозначно

Скорость зависит от IPC (инструкций за такт), размера кэша, ширины конвейера и ISA.

M1 Apple на 3 ГГц быстрее многих Intel на 5 ГГц благодаря лучшей микроархитектуре и IPC ~8 против ~4.

Почему производители CPU перешли к многоядерным процессорам вместо повышения частоты?

Ключевые идеи

  • Архитектура фон Неймана: код и данные в одной памяти - фундамент всех CPU
  • Регистры - сверхбыстрая память внутри CPU (1 такт vs 50-100 тактов для RAM)
  • PC указывает на следующую инструкцию, FLAGS хранит результаты сравнений
  • Control Unit декодирует инструкции и генерирует управляющие сигналы
  • Шины: Data Bus, Address Bus, Control Bus - дороги для данных
  • Clock синхронизирует всё - физический потолок 4-5 ГГц из-за тепловыделения

Вопросы для размышления

  • Почему Apple M1 на 3 ГГц быстрее Intel на 5 ГГц - что именно в структуре CPU влияет на IPC?
  • Как ширина Address Bus определяет максимальный объём RAM, который может поддерживать система?
  • Почему Spectre/Meltdown стали возможны - какой компонент CPU (CU, спекулятивное выполнение) создал эту уязвимость?

Связанные уроки

  • arch-03-alu
  • arch-02-logic-gates
  • arch-05-instruction-cycle
  • arch-06-pipelining
  • arch-09-cache
  • os-01-intro
Структура CPU: Мозг компьютера

0

1

Войти