Concurrency, Synchronization and Consistency. Пост №5. Modified - Shared - Invalid (MSI) Protocol + Выводы по когерентности.
Сегодня будет короткий с точки зрения символов пост. Я понял что в рамках телеграмм поста объяснять протоколы простым языком это задача не из легких. Поэтому в такие моменты буду предлагать хорошую заметку с коротким и понятным объяснением, оформленную так как бы я сам оформлял подобную статью.
Статья о том как реализован протокол:
http://thebeardsage.com/msi-protocol/
Внутри:
- Диаграмма переходов с точки зрения CPU
- Диаграмма переходов с точки зрения шины (Bus)
- Челленджи и бутылочное горлышко протокола (куда ж без него)
- Какие состояния внедряли в протокол чтобы оптимизировать его работу ( как следствие появились протоколы: MOSI, MESI, MOESI).
Также напоминаю, что если хочется глубже залезть, то есть вот такая книженция, её можно легально скачать и погрузиться основательно.
- A Primer on Memory Consistency and Cache Coherence, Second Edition
В ней на тему когерентности несколько глав, разобрано буквально по косточкам.
Выводы по когерентности
На первый взгляд может показаться что с внедрением протоколов когерентности наш многоядерный СPU точно идеален и мы защищены от проблем несогласованности. Но это не так. Внедрение протоколов когерентности здорово оптимизирует количество ситуаций чтения несогласованных данных, но не сводит их в 0.
Следующий пост будет как раз о том, какая же проблема у нас осталась нерешенной и что с ней делать. Пишите в комментариях свои мысли и идеи о чем будет следующий пост, будет очень интересно почитать ваши ответы😊
Спасибо что читали, до встречи завтра! Не забывайте поддерживать посты реакцией, для меня это искренне важно.
Post #397
1.34K