
Неоднородный доступ к памяти (англ. 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), при котором задержки и пропускная способность от всех процессоров ко всем банкам памяти одинаковы.
You must be logged in to post a comment.