Skip to content

memory barriers

serhij.zolotukhin edited this page Dec 7, 2025 · 1 revision
Memory Barriers
Что подвигло дизайнеров 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 side bar

Clone this wiki locally