Computer Science

Учебник Компьютерная архитектура для начинающих

35 уроков · 10 разделов · бесплатно, без регистрации

Университетский курс компьютерной архитектуры на русском — от транзистора до программы. Вы пройдёте все уровни абстракции: логические вентили и таблицы истинности, комбинационные и последовательностные схемы, сумматоры и АЛУ, устройство процессора и цикл выборки-исполнения, набор команд (ISA) и ассемблер, конвейеризацию и конфликты, иерархию памяти и кэш, виртуальную память, ввод-вывод, параллелизм, производительность и GPU. Каждая тема — с ASCII-схемами, таблицами и запускаемыми примерами на Python, которые наглядно моделируют работу железа. Уровень Patterson-Hennessy и Tanenbaum, но объяснено понятно.

Курс «Компьютерная архитектура» состоит из 10 разделов и 35 уроков: Уровни абстракции компьютера, Представление данных, Булева логика и логические вентили, Комбинационные схемы, Последовательностная логика и память, Архитектура процессора, Набор команд и ассемблер, Конвейеризация и ускорение, Иерархия памяти и кэш и Ввод-вывод, параллелизм и производительность. Уроки идут по порядку — от основ к более сложным темам, в каждом есть объяснение с примерами, а в конце — вопросы для самопроверки. К урокам привязаны задачи с автоматической проверкой: прочитали тему — сразу закрепили её кодом.

Программа курса

  1. 1 Уровни абстракции компьютера

    1. Что такое компьютерная архитектура

      Разница между архитектурой и микроархитектурой, контракт ISA и почему один и тот же код работает на разном железе.

    2. Из чего на самом деле сделан компьютер

      Транзистор как переключатель, как из него собирают вентили, и почему вся цифровая техника работает в двоичной логике.

    3. Аппаратное и программное: где граница

      Прошивка, микрокод и виртуальные машины: почему граница между железом и софтом подвижна, а не жёстко зафиксирована.

  2. 2 Представление данных

    1. Двоичная и шестнадцатеричная системы

      Позиционные системы счисления, перевод между двоичной/десятичной/шестнадцатеричной и почему программисты любят hex.

    2. Отрицательные числа: дополнительный код

      Почему компьютеры хранят отрицательные числа в дополнительном коде (two's complement), как это упрощает АЛУ и где возникает переполнение.

    3. Дробные числа: IEEE 754

      Как компьютер хранит вещественные числа: знак, экспонента и мантисса, нормализация, почему 0.1+0.2 не равно 0.3.

    4. Символы и текст: от ASCII до UTF-8

      Как буквы превращаются в байты: таблица ASCII, проблема национальных алфавитов, Unicode и кодировка UTF-8.

  3. 3 Булева логика и логические вентили

    1. Базовые вентили: AND, OR, NOT

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

    2. Производные вентили: NAND, NOR, XOR

      Универсальные вентили NAND/NOR, исключающее ИЛИ XOR и его роль в сложении, сравнении и шифровании.

    3. Законы булевой алгебры и упрощение схем

      Законы де Моргана, поглощение, дистрибутивность: как упрощать логические выражения и экономить вентили в схемах.

  4. 4 Комбинационные схемы

    1. Мультиплексор и дешифратор

      Мультиплексор как управляемый переключатель и дешифратор как преобразователь адреса — два кирпичика процессора и памяти.

    2. Сумматоры: от полусумматора к каскаду

      Полусумматор, полный сумматор и каскадный сумматор переноса: как из XOR и AND собирается сложение многоразрядных чисел.

    3. АЛУ: арифметико-логическое устройство

      Как из сумматора и логических блоков собирается АЛУ, выбирающее операцию по управляющим битам, и какие флаги оно выставляет.

  5. 5 Последовательностная логика и память

    1. Триггеры и защёлки: память на один бит

      Как обратная связь превращает вентили в ячейку памяти: SR-защёлка, D-триггер и понятие тактирования по фронту.

    2. Регистры, счётчики и тактовый сигнал

      Как из триггеров собирают регистры и счётчики, что такое тактовая частота и почему она ограничена задержками схемы.

    3. Конечные автоматы: мозг устройства управления

      Конечный автомат как модель поведения: состояния, переходы и почему устройство управления процессора — это автомат.

  6. 6 Архитектура процессора

    1. Фон Нейман и Гарвардская архитектура

      Идея хранимой программы фон Неймана, узкое место фон Неймана и отличие Гарвардской архитектуры с раздельной памятью.

    2. Внутри процессора: регистры, АЛУ, УУ, ПК

      Из каких узлов состоит процессор: регистровый файл, АЛУ, устройство управления, счётчик команд и регистр команд.

    3. Цикл выборки-декодирования-исполнения

      Главный цикл процессора по шагам: fetch, decode, execute, writeback — как команды одна за другой оживают в железе.

  7. 7 Набор команд и ассемблер

    1. RISC против CISC

      Две философии набора команд: мало простых команд (RISC) против многих сложных (CISC), их сильные и слабые стороны.

    2. Кодирование команд и форматы

      Как команда превращается в биты: поля opcode и операндов, форматы R/I/J и декодирование машинного кода вручную.

    3. Режимы адресации

      Способы указать операнд: непосредственный, регистровый, прямой, косвенный, базовый со смещением и индексный.

    4. Ассемблер как зеркало ISA

      Что такое ассемблер, как мнемоники соответствуют машинным командам, метки, директивы и связь с языками высокого уровня.

  8. 8 Конвейеризация и ускорение

    1. Конвейер: как ускорить без роста частоты

      Идея конвейеризации по аналогии с прачечной: ступени, перекрытие команд, формула ускорения и пропускная способность.

    2. Конфликты конвейера: hazards

      Три типа конфликтов конвейера — структурные, данных и управления — и почему они мешают идеальному ускорению.

    3. Форвардинг, остановки и предсказание переходов

      Как процессор борется с конфликтами: проброс данных (forwarding), остановки (stalls) и предсказание переходов.

    4. Суперскалярность и внеочередное исполнение

      Как процессор выполняет больше одной команды за такт: суперскалярность, внеочередное исполнение и спекуляция (обзор).

  9. 9 Иерархия памяти и кэш

    1. Иерархия памяти и принцип локальности

      Пирамида памяти от регистров до диска, компромисс скорость-объём-цена и принципы временной и пространственной локальности.

    2. Устройство кэша: строки и отображение

      Кэш-строки, прямое отображение, ассоциативность, теги и индексы — как кэш решает, где хранить блок памяти.

    3. Попадания, промахи и политики записи

      Типы промахов (3C), политики записи write-through и write-back, грязный бит и вытеснение строк (LRU).

    4. Виртуальная память и трансляция адресов

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

  10. 10 Ввод-вывод, параллелизм и производительность

    1. Ввод-вывод: шины, прерывания и DMA

      Как процессор общается с устройствами: системные шины, опрос против прерываний и прямой доступ к памяти (DMA).

    2. Параллелизм: многоядерность и SIMD

      Параллелизм на уровне железа: несколько ядер, потоки (SMT), SIMD-инструкции и краткое введение в когерентность кэшей.

    3. Производительность: закон Амдала, CPI и бенчмарки

      Как измерять и сравнивать производительность: формула времени выполнения, CPI, закон Амдала и осторожность с бенчмарками.

    4. GPU против CPU и современные процессоры

      Архитектурная разница CPU и GPU (латентность против пропускной способности), гетерогенные системы и обзор современных чипов.

py
Курс по теме
Пройдите курс «Python с нуля» — по шагам, с проверкой
8 уроков · ~14 ч · теория, упражнения и экзамен с бейджем
Открыть курс →