Обзор структурной схемы. Центральная и периферийная части компьютера
Проблема межкомпонентных соединений
На заре вычислительной техники (ЭВМ 1-го поколения) каждый функциональный блок соединялся с остальными индивидуальными проводниками — по схеме «точка-точка».
Критическое противоречие: для N независимых устройств требовалось $N \times (N-1) / 2$ групп кабелей. С появлением сотен узлов компьютер превращался в паутину проводов, которую невозможно масштабировать.
Решение проблемы: магистрально-модульный принцип (единая системная шина для всех компонентов).
Принципы фон-неймановской архитектуры (1945 г.)
Принцип хранимой программы: инструкции и числовые операнды находятся в одной физической памяти.
Принцип однородности памяти: команды и данные неразличимы по форме представления — всё является двоичным кодом.
Принцип адресности: память делится на пронумерованные ячейки (байты), доступные по числовому адресу.
Принцип последовательного выполнения: команды выполняются шаг за шагом в порядке счётчика PC, если нет ветвления.
Две главные подсистемы компьютера
⚙️ Центральная часть
Ядро вычислительной системы, работающее на частотах в единицы гигагерц:
Центральный процессор (АЛУ, УУ, регистры).
Основная оперативная память (ОЗУ / RAM).
Постоянное запоминающее устройство (ПЗУ / ROM).
🔌 Периферийная часть
Устройства взаимодействия с внешним миром и долговременного хранения:
Внешние накопители (SSD, HDD).
Устройства ввода и вывода (монитор, клавиатура).
Сетевые контроллеры и шинные адаптеры.
Узлы центрального процессора (ЦП)
АЛУ (Арифметико-логическое устройство): сумматоры, компараторы, схемы сдвига; выполняет сложение, умножение, AND, OR, XOR.
УУ (Устройство управления): синхрогенератор, дешифратор команд; считывает инструкции, декодирует их и рассылает тактовые стробы остальным узлам.
Регистровый файл (РОН): сверхбыстрая память процессора (R1..Rn, RAX..RDX, PC, SP, FLAGS). Время доступа — доли наносекунды.
Основная память: ОЗУ и ПЗУ
ОЗУ (Оперативное запоминающее устройство, RAM)
Энергозависимая полупроводниковая память прямого доступа (DRAM). Хранит машинный код активных процессов ОС и прикладных программ, их стеки и динамические данные.
Энергонезависимая память. Содержит базовую систему инициализации оборудования (UEFI / BIOS) и загрузчик первичной стадии.
Системная магистраль: три потока сигналов
Магистраль представляет собой совокупность параллельных проводников, разделенных по функциональному назначению:
Шина адреса (ША): однонаправленная от ЦП/DMA. Передаёт номер ячейки памяти или порта (32/64 бит).
Шина данных (ШД): двунаправленная. Передаёт байты команд и чисел между ЦП, памятью и периферией.
Шина управления (ШУ): передаёт стробы чтения/записи (MEMR, MEMW, IOR, IOW), сигналы прерываний (IRQ) и готовности (READY).
Машинный цикл команды: ADD R1, [0x04F0]
Выборка команды (Fetch): УУ выставляет PC на ША, сигнал чтения на ШУ. Команда из ОЗУ считывается по ШД в регистр команд.
Декодирование (Decode): УУ определяет операцию (сложение) и исполнительный адрес (0x04F0).
Выборка данных: УУ запрашивает адрес 0x04F0 на ША. Число по ШД поступает в АЛУ.
Исполнение (Execute): АЛУ складывает R1 со значением из памяти.
Запись результата (Writeback): сумма помещается в регистр R1.
Периферийная подсистема и интерфейсные адаптеры
Периферийные устройства работают на порядки медленнее процессора и имеют разные физические протоколы передачи сигналов.
Принцип контроллера: Внешнее устройство никогда не подключается напрямую к шинам ЦП! Каждое ПУ подключается через собственный контроллер (адаптер), согласующий скорость, уровни напряжений и формат данных.
Контроллер содержит внутренние регистры управления, статуса и буферные регистры данных.
Прямой доступ к памяти (DMA)
Зачем нужен контроллер DMA?
Без DMA: процессор лично считывает каждый байт с контроллера накопителя и записывает его в память, тратя 100% мощности на перекладывание байт.
С DMA: процессор задаёт начальный адрес и размер буфера, а контроллер DMA сам захватывает системную шину и перекачивает данные пакетом блоками напрямую в ОЗУ.
По завершении передачи DMA генерирует прерывание процессору.
«Узкое горлышко фон Неймана» (Von Neumann Bottleneck)
Суть барьера: Процессор способен выполнять миллиарды операций в секунду, но вынужден ждать данные из памяти по узкой разделяемой шине.
Задержка кристалла ЦП: ~0.2 – 0.5 наносекунды.
Задержка обращения к планке DDR4/DDR5: ~50 – 70 наносекунд (в 200–300 раз медленнее!).
По одной шине невозможно одновременно выбирать инструкцию и читать данные.
Решение: Гарвардская модификация кэш-памяти
В современных процессорах (Intel Core, AMD Ryzen, Apple Silicon M-серии) архитектура гибридная:
Снаружи — Фон Нейман
Единое адресное пространство ОЗУ, общие шины на материнской плате, единые модули оперативной памяти.
Внутри — Гарвард
Кэш первого уровня разделен на независимый кэш инструкций (L1I) и кэш данных (L1D) со своими отдельными шинами.
Типичная ошибка: «SSD — это быстрая память процессора»
Заблуждение: «Поскольку NVMe SSD использует микросхемы флеш-памяти и подключается к шине PCIe, процессор может исполнять программы прямо из SSD».
Реальность:
SSD — это блочное периферийное устройство. Минимальная единица адресации контроллера — блок (4 КиБ). Процессор адресует память побайтово (1 байт). Программа ДОЛЖНА быть предварительно загружена в ОЗУ!
Экспресс-проверка (вопрос аудитории)
Вопрос: Почему при увеличении разрядности шины адреса с 32 до 64 бит максимальный адресуемый объём ОЗУ вырос с 4 ГиБ до 16 Экзабайт, но разрядность чисел при этом определяется шиной данных?
Ответ: Шина адреса определяет количество уникальных номеров ячеек ($2^{32} = 4\text{ млрд}$, $2^{64} = 1.8\times 10^{19}$), а шина данных определяет размер порции (байты числа), которую процессор передаёт за один такт.
Архитектурный баланс и мем
Мем «Compiling» (веб-комикс xkcd #619).
Автор: Randall Munroe. Источник: https://xkcd.com/619/. Лицензия: CC BY-NC 2.5. Отметка об изменениях: без изменений. Встроен offline через data URI (Base64).