Минимизация взаимодействия между ядрами в архитектуре NUMA
Может ли кто-нибудь выделить способы снижения межъядерной связи в многоядерной архитектуре NUMA. Пример использования микроархитектуры Intel NEHALEM.
1 ответ
Процессор Nehalem использует QuickPath Interconnect (QPI) для связи между процессорами / узлами / пакетами. В системе NUMA каждый узел имеет собственную локальную память, которая используется совместно с другими узлами в системе. Когда рабочий набор программы помещается в кэш L1 и доступен только для чтения, не имеет большого значения, какой узел NUMA владеет памятью. Связь между узлами NUMA необходима, когда ядро получает ошибку в кеше, а память принадлежит другому узлу. Однако это не означает, что он медленнее обращается к памяти, принадлежащей другому узлу, это зависит от того, кэшировал ли он другой узел в кеше, связанном с его локальной памятью, что Intel называет кэшем последнего уровня (LLC). Доступ ядра к области памяти, которая является локальной для этого узла, быстрее, чем доступ к памяти, принадлежащей другому узлу, но только в том случае, если он отсутствует в LLC на обоих узлах. Он быстрее получает доступ к памяти, которая попадает в LLC на другом узле, чем к памяти на локальном узле, потому что память намного медленнее, чем ЦП, и QPI оптимизирован для такого рода связи. Большинство систем не пытаются уменьшить межпроцессорное взаимодействие, потому что, как вы можете себе представить, это не простая проблема - для этого требуется установить привязку потоков к ядрам, настроить привязку рабочего набора памяти этого потока к локальной памяти этого узла. Вы можете прочитать больше об этом в статье Дреппера Ульриха, поиск NUMA. В этой статье Ульрих упоминает QPI как Common System Interface (CSI), который был названием Intel для QPI до объявления.