Учебник Компьютерная архитектура для начинающих
Университетский курс компьютерной архитектуры на русском — от транзистора до программы. Вы пройдёте все уровни абстракции: логические вентили и таблицы истинности, комбинационные и последовательностные схемы, сумматоры и АЛУ, устройство процессора и цикл выборки-исполнения, набор команд (ISA) и ассемблер, конвейеризацию и конфликты, иерархию памяти и кэш, виртуальную память, ввод-вывод, параллелизм, производительность и GPU. Каждая тема — с ASCII-схемами, таблицами и запускаемыми примерами на Python, которые наглядно моделируют работу железа. Уровень Patterson-Hennessy и Tanenbaum, но объяснено понятно.
Курс «Компьютерная архитектура» состоит из 10 разделов и 35 уроков: Уровни абстракции компьютера, Представление данных, Булева логика и логические вентили, Комбинационные схемы, Последовательностная логика и память, Архитектура процессора, Набор команд и ассемблер, Конвейеризация и ускорение, Иерархия памяти и кэш и Ввод-вывод, параллелизм и производительность. Уроки идут по порядку — от основ к более сложным темам, в каждом есть объяснение с примерами, а в конце — вопросы для самопроверки. К урокам привязаны задачи с автоматической проверкой: прочитали тему — сразу закрепили её кодом.
Программа курса
1 Уровни абстракции компьютера
- Что такое компьютерная архитектура
Разница между архитектурой и микроархитектурой, контракт ISA и почему один и тот же код работает на разном железе.
- Из чего на самом деле сделан компьютер
Транзистор как переключатель, как из него собирают вентили, и почему вся цифровая техника работает в двоичной логике.
- Аппаратное и программное: где граница
Прошивка, микрокод и виртуальные машины: почему граница между железом и софтом подвижна, а не жёстко зафиксирована.
- Что такое компьютерная архитектура
2 Представление данных
- Двоичная и шестнадцатеричная системы
Позиционные системы счисления, перевод между двоичной/десятичной/шестнадцатеричной и почему программисты любят hex.
- Отрицательные числа: дополнительный код
Почему компьютеры хранят отрицательные числа в дополнительном коде (two's complement), как это упрощает АЛУ и где возникает переполнение.
- Дробные числа: IEEE 754
Как компьютер хранит вещественные числа: знак, экспонента и мантисса, нормализация, почему 0.1+0.2 не равно 0.3.
- Символы и текст: от ASCII до UTF-8
Как буквы превращаются в байты: таблица ASCII, проблема национальных алфавитов, Unicode и кодировка UTF-8.
- Двоичная и шестнадцатеричная системы
3 Булева логика и логические вентили
- Базовые вентили: AND, OR, NOT
Три фундаментальные логические операции, их таблицы истинности, обозначения и роль в построении любых схем.
- Производные вентили: NAND, NOR, XOR
Универсальные вентили NAND/NOR, исключающее ИЛИ XOR и его роль в сложении, сравнении и шифровании.
- Законы булевой алгебры и упрощение схем
Законы де Моргана, поглощение, дистрибутивность: как упрощать логические выражения и экономить вентили в схемах.
- Базовые вентили: AND, OR, NOT
4 Комбинационные схемы
- Мультиплексор и дешифратор
Мультиплексор как управляемый переключатель и дешифратор как преобразователь адреса — два кирпичика процессора и памяти.
- Сумматоры: от полусумматора к каскаду
Полусумматор, полный сумматор и каскадный сумматор переноса: как из XOR и AND собирается сложение многоразрядных чисел.
- АЛУ: арифметико-логическое устройство
Как из сумматора и логических блоков собирается АЛУ, выбирающее операцию по управляющим битам, и какие флаги оно выставляет.
- Мультиплексор и дешифратор
5 Последовательностная логика и память
- Триггеры и защёлки: память на один бит
Как обратная связь превращает вентили в ячейку памяти: SR-защёлка, D-триггер и понятие тактирования по фронту.
- Регистры, счётчики и тактовый сигнал
Как из триггеров собирают регистры и счётчики, что такое тактовая частота и почему она ограничена задержками схемы.
- Конечные автоматы: мозг устройства управления
Конечный автомат как модель поведения: состояния, переходы и почему устройство управления процессора — это автомат.
- Триггеры и защёлки: память на один бит
6 Архитектура процессора
- Фон Нейман и Гарвардская архитектура
Идея хранимой программы фон Неймана, узкое место фон Неймана и отличие Гарвардской архитектуры с раздельной памятью.
- Внутри процессора: регистры, АЛУ, УУ, ПК
Из каких узлов состоит процессор: регистровый файл, АЛУ, устройство управления, счётчик команд и регистр команд.
- Цикл выборки-декодирования-исполнения
Главный цикл процессора по шагам: fetch, decode, execute, writeback — как команды одна за другой оживают в железе.
- Фон Нейман и Гарвардская архитектура
7 Набор команд и ассемблер
- RISC против CISC
Две философии набора команд: мало простых команд (RISC) против многих сложных (CISC), их сильные и слабые стороны.
- Кодирование команд и форматы
Как команда превращается в биты: поля opcode и операндов, форматы R/I/J и декодирование машинного кода вручную.
- Режимы адресации
Способы указать операнд: непосредственный, регистровый, прямой, косвенный, базовый со смещением и индексный.
- Ассемблер как зеркало ISA
Что такое ассемблер, как мнемоники соответствуют машинным командам, метки, директивы и связь с языками высокого уровня.
- RISC против CISC
8 Конвейеризация и ускорение
- Конвейер: как ускорить без роста частоты
Идея конвейеризации по аналогии с прачечной: ступени, перекрытие команд, формула ускорения и пропускная способность.
- Конфликты конвейера: hazards
Три типа конфликтов конвейера — структурные, данных и управления — и почему они мешают идеальному ускорению.
- Форвардинг, остановки и предсказание переходов
Как процессор борется с конфликтами: проброс данных (forwarding), остановки (stalls) и предсказание переходов.
- Суперскалярность и внеочередное исполнение
Как процессор выполняет больше одной команды за такт: суперскалярность, внеочередное исполнение и спекуляция (обзор).
- Конвейер: как ускорить без роста частоты
9 Иерархия памяти и кэш
- Иерархия памяти и принцип локальности
Пирамида памяти от регистров до диска, компромисс скорость-объём-цена и принципы временной и пространственной локальности.
- Устройство кэша: строки и отображение
Кэш-строки, прямое отображение, ассоциативность, теги и индексы — как кэш решает, где хранить блок памяти.
- Попадания, промахи и политики записи
Типы промахов (3C), политики записи write-through и write-back, грязный бит и вытеснение строк (LRU).
- Виртуальная память и трансляция адресов
Зачем нужна виртуальная память, страницы и таблицы страниц, трансляция виртуального адреса в физический и роль TLB.
- Иерархия памяти и принцип локальности
10 Ввод-вывод, параллелизм и производительность
- Ввод-вывод: шины, прерывания и DMA
Как процессор общается с устройствами: системные шины, опрос против прерываний и прямой доступ к памяти (DMA).
- Параллелизм: многоядерность и SIMD
Параллелизм на уровне железа: несколько ядер, потоки (SMT), SIMD-инструкции и краткое введение в когерентность кэшей.
- Производительность: закон Амдала, CPI и бенчмарки
Как измерять и сравнивать производительность: формула времени выполнения, CPI, закон Амдала и осторожность с бенчмарками.
- GPU против CPU и современные процессоры
Архитектурная разница CPU и GPU (латентность против пропускной способности), гетерогенные системы и обзор современных чипов.
- Ввод-вывод: шины, прерывания и DMA