Kaja Kallas

Схема организации памяти в мультипроцессорных системах

Неоднородный доступ к памяти (англ. non-uniform memory access, NUMA) — архитектура организации оперативной памяти, используемая в мультипроцессорных системах, в которой процессор имеет быстрый доступ к локальной памяти через свой контроллер, а также более медленный канал до памяти, подключённой к контроллерам (слотам) других процессоров, реализуемый через шину обмена данными.

Различные производители используют собственные реализации шины обмена данными, например, AMD применяет технологию HyperTransport (разработанную в 2001 году в рамках консорциума, среди участников которых можно выделить Cray, Cisco, NVidia), а Intel традиционно использует свои технологии. В 2008 году появился первый процессор, реализующий шину QuickPath Interconnect (QPI), в 2017 году был сменён технологией UPI?! (англ. Intel Ultra Path Interconnect).

Большинство практических реализаций предполагают аппаратно реализуемую когерентность кэш-памяти (cache-cohenrent NUMA, ccNUMA), поскольку программирование для систем с некогерентным кэшем чрезвычайно сложно. Как правило, существует межпроцессорное взаимодействие между контроллерами кэша для сохранения согласованной картины памяти (когерентность памяти), когда более чем один кэш хранит одну и ту же ячейку памяти. Именно поэтому ccNUMA-платформы теряют в производительности, когда несколько процессоров подряд запрашивают доступ к одному блоку памяти. Операционная система, поддерживающая NUMA, пытается уменьшить частоту запросов доступа такого типа путём перераспределения процессоров и памяти таким способом, чтобы избежать гонок и блокировок.

Альтернатива — однородный доступ к памяти (uniform memory access, UMA), при котором задержки и пропускная способность от всех процессоров ко всем банкам памяти одинаковы.

Ссылки

No tags for this post.