Repository navigation
memory barriers
serhij.zolotukhin edited this page Dec 7, 2025
·
1 revision
Что подвигло дизайнеров CPU ввести барьеры памяти?
Переупорядочение обращений к памяти позволяет достичь лучшей производительности,
а барьеры памяти нужны для «наведения порядка» в вещах типа примитивов синхронизации [и lock-free алгоритмов, естественно],
где корректность примитива зависит как раз от порядка обращений к памяти.
Современные CPU намного быстрее подсистемы памяти.
Процессор образца 2006 года мог выполнять 10 инструкций в наносекунду,
но требовалось много десятков наносекунд для извлечения данных из основной памяти
CPU cache организован в железе в виде хеш-таблицы
store buffer - буфер записи между каждым CPU и его кэшем.
Cache coherency protocol - Протокол управляет состоянием линий кэша,
чтобы управлять когерентностью данных для всех CPU.
Протокол описывает сообщения, с помощью которых координируются изменения состояния линий кэша всех процессоров
example MESI
memory barriers - говорит процессору сбросить store buffer перед выполнением следующей записи в кэш.
барьеры памяти — это именно отдельные ассемблерные инструкции практически у всех современных архитектур
(особняком стоит, пожалуй, только Intel Itanium – в нем барьер может являться частью load/store/RMW-инструкции)
acquire/release семантика C++11 ?
My footer
My side bar
