Если я могу начать с примера.
Скажем, у нас есть система из 4 разъемов, где каждый разъем имеет 4 ядра, а каждый разъем имеет 2 ГБ ОЗУ.
Тип памяти ccNUMA (когерентный неоднородный доступ к памяти).
Допустим, 4 запущенных процесса находятся на каждом сокете, и у всех есть некоторая область общей памяти, выделенная в ОЗУ P2, обозначенная как SHM. Это означает, что любая загрузка / сохранение в этом регионе приведет к поиску в каталоге P2, верно? Если так, то ... Когда происходит такой поиск, это эквивалентно доступу к ОЗУ с точки зрения задержки? Где этот каталог находится физически? (См. Ниже)
Более конкретный пример:
Скажем, P2 выполняет ЗАГРУЗКУ на SHM, и эти данные заносятся в кэш L3 P2 с тегом '(O) wner'. Кроме того, скажем, P4 выполняет нагрузку на тот же SHM. Это заставит P4 выполнить поиск в каталоге P2, и, поскольку данные помечены как принадлежащие P2, мой вопрос:
Получает ли P4 SHM из оперативной памяти P2 или ВСЕГДА получает данные из кэша L3 P2?
Если он всегда получает данные из кэша L3, не будет ли быстрее получить данные непосредственно из оперативной памяти P2? Так как он уже должен искать в каталоге P2? И я понимаю, что каталог буквально располагается поверх оперативной памяти.
Извините, если я сильно неправильно понимаю, что здесь происходит, но я надеюсь, что кто-то может помочь прояснить это.
Кроме того, есть ли какие-либо данные о том, как быстро работает такой каталог? Что касается поиска данных, есть ли документация по средним задержкам при таких поисках? Сколько циклов в L3 чтение-попадание, чтение-промах, поиск в каталоге? и т.д.