- Двоичная система и логические операции
- Представление данных в двоичном виде (биты, байты)
- Логические вентили: AND, OR, NOT, XOR, NAND
- Булева алгебра и её применение в схемах процессора
- Триггеры и регистры
- Как хранится бит информации (RS-триггер, D-триггер)
- Роль регистров в процессоре
- Цикл выполнения инструкций (Fetch-Decode-Execute)
- Этапы: выборка, декодирование, выполнение, запись
- Роль счетчика команд (Program Counter) и регистра команд (Instruction Register)
- Основные компоненты ЦПУ
- АЛУ (арифметико-логическое устройство)
- Блок управления (Control Unit)
- Система регистров (аккумулятор, регистр флагов)
- Шины данных, адреса и управления
- Как данные перемещаются между компонентами
- Типы инструкций
- Арифметические (ADD, SUB), логические (AND, OR), управляющие (JUMP, CALL)
- Работа с памятью (LOAD, STORE)
- Форматы инструкций
- RISC (фиксированная длина) vs CISC (переменная длина)
- Примеры: x86 (CISC), ARM (RISC)
- Адресация данных
- Непосредственная, регистровая, косвенная, индексная адресация
- Конвейеризация (Pipeline)
- Разделение цикла выполнения на этапы (например, 5-ступенчатый конвейер)
- Проблемы: конфликты данных (data hazards) и их решение
- Параллелизм на уровне инструкций
- Суперскалярная архитектура: выполнение нескольких инструкций за такт
- Out-of-Order Execution (переупорядочивание команд)
- Спекулятивное выполнение
- Предсказание ветвлений (Branch Prediction)
- Иерархия памяти
- Регистры → Кэш L1/L2/L3 → ОЗУ → Диск
- Принцип локальности данных (временная и пространственная)
- Кэш-память
- Ассоциативность кэша (прямое отображение, наборно-ассоциативный)
- Алгоритмы замены данных (LRU, FIFO)
- Виды памяти
- SRAM (кэш), DRAM (ОЗУ), ROM
- Многоядерность
- Как ядра делят задачи (SMP, NUMA)
- Синхронизация: мьютексы, семафоры
- Многопоточность
- Hyper-Threading (одно ядро выполняет несколько потоков)
- Параллельные архитектуры
- GPU vs CPU: различия в подходах к вычислениям
- Тактовая частота
- Как частота влияет на скорость выполнения инструкций
- CPI (Cycles Per Instruction)
- Метрика для оценки эффективности архитектуры
- Закон Амдала
- Ограничения параллельных вычислений
- Тепловыделение и энергоэффективность
- Почему современные процессоры не могут бесконечно расти в частоте
- Векторные инструкции (SIMD)
- SSE, AVX, NEON: ускорение обработки данных
- Квантовые процессоры (обзор)
- Принципиальные отличия от классических ЦПУ
- RISC-V и открытые архитектуры
- Тренды в разработке процессоров
- Симуляторы процессоров
- Примеры: Logisim, MARS (MIPS), QEMU
- Ассемблер и низкоуровневое программирование
- Написание простых программ на ассемблере (например, сложение чисел)
- Анализ производительности
- Инструменты: perf, VTune, профилировщики
- Эволюция процессоров
- От Intel 4004 (1971) до современных многоядерных CPU
- Архитектурные прорывы
- Переход от 32-битных к 64-битным системам
- Появление кэш-памяти и конвейеризации
- Книги:
- «Код: Тайный язык информатики» (Чарльз Петцольд)
- «Архитектура компьютера» (Эндрю Таненбаум)
- «Computer Organization and Design» (Паттерсон и Хеннесси)
- Онлайн-курсы:
- Coursera: «Computer Architecture» (Princeton University)
- Nand2Tetris: Построение процессора с нуля
- Основа: Использует две цифры — 0 и 1.
- Причина применения: Электронные компоненты (транзисторы) легко различают два состояния (напряжение есть/нет).
- Примеры:
- Число
5
в десятичной →101
в двоичной. - Буква
A
в ASCII →01000001
.
- Число
- Базовые операции:
- AND (И):
1
, только если оба входа1
. - OR (ИЛИ):
1
, если хотя бы один вход1
. - NOT (НЕ): Инвертирует вход (
0
→1
,1
→0
). - XOR (исключающее ИЛИ):
1
, если входы разные. - NAND (И-НЕ): Инверсия AND.
- AND (И):
- Минимальная единица информации:
0
или1
. - Примеры физической реализации:
- Заряд в конденсаторе (DRAM).
- Намагниченная область на диске.
- 1 байт = 8 бит.
- Диапазон значений:
00000000
(0) до11111111
(255). - Примеры кодировок:
- ASCII: 7 бит на символ (128 значений).
- UTF-8: 1–4 байта на символ (поддержка эмодзи, иероглифов).
Вентиль | Функция | Таблица истинности |
---|---|---|
AND | Y = A AND B | 0,0→0; 0,1→0; 1,0→0; 1,1→1 |
OR | Y = A OR B | 0,0→0; 0,1→1; 1,0→1; 1,1→1 |
NOT | Y = NOT A | 0→1; 1→0 |
XOR | Y = A XOR B | 0,0→0; 0,1→1; 1,0→1; 1,1→0 |
NAND | Y = NOT (A AND B) | 0,0→1; 0,1→1; 1,0→1; 1,1→0 |
- NAND и NOR позволяют создать любую логическую операцию.
- Пример:
- NOT из NAND: Соедините оба входа NAND →
Y = NOT (A AND A) = NOT A
. - AND из NAND:
Y = NOT (NAND(A, B))
.
- NOT из NAND: Соедините оба входа NAND →
- Законы:
- Коммутативность:
A AND B = B AND A
. - Ассоциативность:
(A OR B) OR C = A OR (B OR C)
. - Дистрибутивность:
A AND (B OR C) = (A AND B) OR (A AND C)
.
- Коммутативность:
- Тождества:
A AND 0 = 0
,A OR 1 = 1
.A AND NOT A = 0
(закон противоречия).
- Проектирование логических схем:
- Упрощение выражений для минимизации числа транзисторов.
- Пример: Сумматор на основе XOR и AND.
- Оптимизация АЛУ:
- Использование булевых выражений для арифметических операций.
- Синтез комбинационных схем:
- Мультиплексоры, декодеры, шифраторы строятся на базе булевых функций.
Задача: Создать схему для вычисления A + B
(1-битный сумматор).
- Двоичное представление:
A
иB
— биты (0 или 1). - Логические вентили:
- Сумма:
A XOR B
(XOR-вентиль). - Перенос:
A AND B
(AND-вентиль).
- Сумма:
- Булева алгебра:
- Упрощение выражения для переноса:
Перенос = A AND B
.
- Упрощение выражения для переноса:
- Двоичная система — фундамент хранения и обработки данных.
- Логические вентили — «кирпичики» для построения процессоров.
- Булева алгебра — инструмент для проектирования и оптимизации схем.
- Вместе эти темы объясняют, как процессор выполняет операции: от простого сложения битов до запуска операционной системы.