TGViewer
Евгений Козлов пишет про IT Евгений Козлов пишет про IT @careerunderhood · 2.84K subscribers
Post #336 4.7K
CPU, Memory Models, Concurrency, Multiprocess, Multithreading и Async. Часть 12. Что такое модель памяти? Sequential Consistency.

В процессе подготовки материалов для постов про языки программирования понял что снова поторопился и хорошо бы сначала рассказать про модели памяти, как на уровне железа, так и на уровне языков программирования. И уже на этом фундаменте рассказать про внутренности ЯП.

Модель памяти - это набор правил и гарантий позволяющих нам писать детерминированные программы. Модель памяти может быть
- аппаратной, то есть это соглашение о том как работает процессор.
- программной, условно говоря это модель памяти <language name>.
И именно модель памяти говорит нам о том - возможны ли Data Race, Race Condition и прочие "неприятные артефакты" конкурентного программирования.

Начнем с базы - а именно модели под названием Sequential Consistency. Эту модель описал в 1979м Leslie Lamport в статье “How to Make a Multiprocessor Computer That Correctly Executes Multiprocess Programs”.

Последовательная согласованность — модель согласованности, в которой результат любого выполнения такой же, как в случае если бы операции всех процессоров были выполнены в некотором последовательном порядке, и операции каждого отдельного процессора появлялись в этой последовательности в порядке определённом его программой.


Если очень простыми словами она гарантирует что:
- операции с общей памятью в рамках потока исполняются в порядке определенном программой.
- порядок между процессорами отсутствует, следовательно не гарантирован.
- только одна операция над памятью возможна в единицу времени (по сути ядро ЦП захватывает владение памятью и остальные ждут)

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

Визуальное представление

Спасибо, что читали, в следующих постах разберем модели памяти X86 и ARM и то какие допущения были сделаны в них, чтобы ускорить взаимодействия памяти и процессора.
  • 👍 28
  • 🔥 10
More from @careerunderhood
  1. Oct 2, 2026Пока от темы Concurrency далеко не ушли. В последнем цикле я если и упоминал вопросы произ…
  2. Sep 30, 2026Результаты опроса меня впечатлили. Большинству интересны истории из работы. Поехали, начне…
  3. Sep 25, 2026Post #470
  4. Sep 21, 2026Concurrency, Synchronization and Consistency. Non-blocking. Оглавление Введение - Блокирую…
  5. Sep 21, 2026Concurrency and Consistency. Non-blocking, lock-free and async. Пост №12. Заключение. Когд…
  6. Sep 20, 2026Concurrency and Consistency. Non-blocking, lock-free and async. Пост №11. Самые важные фак…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →