Устройство ЭВМ

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

Компьютер состоит из основных компонентов:

  • Процессор (CPU) — выполняет вычисления и обрабатывает данные.
  • Память (RAM) — временное хранилище для данных и инструкций, с которыми работает процессор.
  • Шина данных (Data Bus) — транспортирует данные между процессором, памятью и другими устройствами.
Обмен данными между процессором и памятью происходит через систему кэширования для уменьшения задержек доступа.

Память

Память компьютера организована в несколько уровней:

  1. Регистры CPU — самый быстрый, но ограниченный по объёму уровень (несколько десятков байт).
  2. Кэш-память (Cache) — промежуточное хранилище между процессором и оперативной памятью.
  3. Оперативная память (RAM) — медленнее кэша, но быстрее постоянного хранилища (SSD/HDD).
  4. Постоянное хранилище (SSD/HDD) — для долговременного хранения данных.

Уровни кэша

Кэш разделяется на несколько уровней:

  • L1 Cache: Самый быстрый и маленький (обычно 32–64 КБ), привязан к каждому ядру.
  • L2 Cache: Быстрее, чем RAM, но медленнее L1 (обычно 256 КБ – 1 МБ), также привязан к ядру.
  • L3 Cache: Общий для всех ядер, размер может достигать десятков мегабайт.

Cache Line и Cache Coherence

Cache Line — это минимальная единица данных, которая кэшируется (обычно 64 байта).

Cache Coherence — механизм обеспечения согласованности данных в кэше нескольких ядер процессора.

Протоколы согласованности:

  • MESI (Modified, Exclusive, Shared, Invalid) — самый распространённый протокол.
  • MOESI — расширение MESI с дополнительным состоянием Owned.

Cache Contention — ситуация, когда несколько ядер конкурируют за доступ к одной и той же кэш-линии, что приводит к снижению производительности.

Translation Lookaside Buffer (TLB) и виртуальная память

TLB — это кэш для таблиц страниц, ускоряющий преобразование виртуальных адресов в физические.

Виртуальная память — позволяет отображать виртуальные адреса в физические, разделяя память между процессами и обеспечивая защиту данных.

  • Страницы (Pages): обычно 4 КБ.
  • Page Fault: происходит, когда процесс обращается к странице, отсутствующей в физической памяти.

CPU: инструкции и конвейерная обработка

Процессор выполняет инструкции через конвейер (Pipeline), разбивая выполнение команды на несколько стадий (fetch, decode, execute, write back).

Это позволяет выполнять несколько инструкций одновременно.

Многопоточность на уровне железа (Hyper-Threading)

  • Каждый физический процессор может создавать несколько логических потоков (обычно 2), которые делят ресурсы процессора.
  • Мультиплексация: переключение между потоками для оптимального использования ресурсов процессора.

I/O: Блокирующий и неблокирующий ввод-вывод

  • Блокирующий ввод-вывод: процесс ожидает завершения операции ввода-вывода, прежде чем продолжить работу.
  • Неблокирующий ввод-вывод: операция возвращает управление сразу, а завершение ввода-вывода обрабатывается асинхронно.
Здесь нужно понимание, что I/O операции самые дорогие, которые могут занимать значительное время, поэтому важно уметь работать с ними эффективно. Нет смысла оптимизировать код, который выполняется за 1 мс, но если операция ввода-вывода занимает 100 мс, то это уже проблема.

Как данные перемещаются из памяти в процессор и обратно

  1. CPU запрашивает данные из оперативной памяти.
  2. TLB проверяет, присутствует ли виртуальный адрес в кэше таблицы страниц.
  3. Если данных нет в кэше (Cache Miss), происходит обращение к оперативной памяти, и данные записываются в кэш (Cache Line).
  4. CPU использует данные из кэша, минимизируя обращения к оперативной памяти.
  5. Cache Coherence следит за тем, чтобы все ядра имели согласованные данные.
  6. Когда данные изменяются, обновления проходят через L1 → L2 → L3 → RAM.

Atomics и синхронизация

Проработать самостоятельно

Примеры таких инструкций:

  • LOCK CMPXCHG (Compare-and-Swap) — сравнивает и заменяет значение, если оно совпадает с ожидаемым.
  • XCHG (Exchange) — атомарно меняет местами значения в регистре и памяти.
  • MFENCE, LFENCE, SFENCE — инструкции для управления порядком операций чтения и записи в памяти (memory barriers).

Дополнительные материалы: