Jump to content

Неравномерный доступ к памяти

Материнская плата рабочей станции HP Z820 с двумя разъемами ЦП, каждый из которых имеет собственный набор из восьми слотов DIMM, окружающих разъем.

Неравномерный доступ к памяти ( NUMA ) — это конструкция компьютерной памяти, используемая в многопроцессорной обработке , где время доступа к памяти зависит от местоположения памяти относительно процессора. В рамках NUMA процессор может получить доступ к своей локальной памяти быстрее, чем к нелокальной памяти (памяти, локальной для другого процессора или памяти, совместно используемой между процессорами). NUMA полезен для рабочих нагрузок с высокой локальностью памяти и низким уровнем конфликтов за блокировки , поскольку процессор может работать с подмножеством памяти в основном или полностью внутри своего собственного узла кэша, уменьшая трафик на шине памяти. [1]

Архитектуры NUMA по масштабированию логически следуют за архитектурами симметричной многопроцессорной обработки (SMP). Они были коммерчески разработаны в 1990-е годы компаниями Unisys , Convex Computer (позже Hewlett-Packard ), Honeywell Information Systems Italy (HISI) (позже Groupe Bull ), Silicon Graphics (позже Silicon Graphics International ), Sequent Computer Systems (позже IBM ), Data General (позже EMC , теперь Dell Technologies ), Digital (позже Compaq , затем HP , теперь HPE ) и ICL . Методы, разработанные этими компаниями, позже использовались во многих Unix-подобных операционных системах и, в некоторой степени, в Windows NT .

Первая коммерческая реализация системы Unix на базе NUMA была [ где? ] [ когда? ] семейство серверов Symmetrical Multi Processing XPS-100, разработанное Дэном Гиланом из корпорации VAST для Honeywell Information Systems Italy.

Одна из возможных архитектур системы NUMA. Процессоры подключаются к шине или кросс-панели с помощью соединений различной толщины/количества. Это показывает, что разные процессоры имеют разные приоритеты доступа к памяти в зависимости от их относительного расположения.

Современные процессоры работают значительно быстрее, чем используемая ими основная память. На заре вычислений и обработки данных ЦП обычно работал медленнее, чем собственная память. Линии производительности процессоров и памяти пересеклись в 1960-х годах с появлением первых суперкомпьютеров . С тех пор процессоры все чаще обнаруживают, что им «не хватает данных» и им приходится останавливаться в ожидании поступления данных из памяти (например, для компьютеров на основе архитектуры фон Неймана см. « Узкое место фон Неймана» ). Многие разработки суперкомпьютеров 1980-х и 1990-х годов были ориентированы на обеспечение высокоскоростного доступа к памяти в отличие от более быстрых процессоров, позволяя компьютерам работать с большими наборами данных на скоростях, к которым другие системы не могли приблизиться.

Ограничение количества обращений к памяти стало ключом к достижению высокой производительности современного компьютера. Для обычных процессоров это означало установку все большего объема высокоскоростной кэш-памяти и использование все более сложных алгоритмов для предотвращения промахов кэша . Однако резкое увеличение размера операционных систем и приложений, работающих на них, в целом свело на нет эти улучшения в обработке кэша. Многопроцессорные системы без NUMA значительно усугубляют проблему. Теперь система может одновременно отключать несколько процессоров, в частности потому, что только один процессор может одновременно обращаться к памяти компьютера. [2]

NUMA пытается решить эту проблему, предоставляя отдельную память для каждого процессора, избегая снижения производительности, когда несколько процессоров пытаются обратиться к одной и той же памяти. Для проблем, связанных с распространением данных (обычных для серверов и подобных приложений), NUMA может повысить производительность одной общей памяти примерно в раз, равный количеству процессоров (или отдельных банков памяти). [3] Другим подходом к решению этой проблемы является многоканальная архитектура памяти , в которой линейное увеличение количества каналов памяти линейно увеличивает параллелизм доступа к памяти. [4]

Конечно, не все данные ограничиваются одной задачей, а это означает, что одни и те же данные могут потребоваться более чем одному процессору. Чтобы справиться с этими случаями, системы NUMA включают дополнительное оборудование или программное обеспечение для перемещения данных между банками памяти. Эта операция замедляет работу процессоров, подключенных к этим банкам, поэтому общее увеличение скорости благодаря NUMA сильно зависит от характера выполняемых задач. [3]

Реализации

[ редактировать ]

AMD реализовала NUMA в своем процессоре Opteron (2003 г.), используя HyperTransport . Intel объявила о совместимости NUMA для своих серверов x86 и Itanium В конце 2007 года со своими процессорами Nehalem и Tukwila . [5] Оба семейства процессоров Intel используют общий набор микросхем ; это соединение называется Intel QuickPath Interconnect (QPI), которое обеспечивает чрезвычайно высокую пропускную способность для обеспечения высокой встроенной масштабируемости и было заменено новой версией под названием Intel UltraPath Interconnect с выпуском Skylake (2017). [6]

Когерентный кэш NUMA (ccNUMA)

[ редактировать ]
Топология сервера ccNUMA Bulldozer , полученная с помощью инструмента lstopo hwloc.

Почти все архитектуры ЦП используют небольшой объем очень быстрой отдельной памяти, известной как кэш, для использования локальности ссылок при доступе к памяти. При использовании NUMA поддержание согласованности кэша в общей памяти сопряжено со значительными издержками. Несмотря на то, что NUMA-системы без кэш-когерентности проще проектировать и создавать, их программирование в стандартной модели программирования архитектуры фон Неймана становится непомерно сложным . [7]

Обычно ccNUMA использует межпроцессорную связь между контроллерами кэша для поддержания согласованного образа памяти, когда одна и та же ячейка памяти хранится в нескольких кэшах. По этой причине ccNUMA может работать плохо, когда несколько процессоров пытаются быстро получить доступ к одной и той же области памяти. Поддержка NUMA в операционных системах пытается снизить частоту такого доступа, распределяя процессоры и память NUMA-дружественными способами и избегая алгоритмов планирования и блокировки, которые делают необходимым недружественный NUMA доступ. [8]

Альтернативно, протоколы согласованности кэша, такие как протокол MESIF, пытаются уменьшить объем связи, необходимый для поддержания согласованности кэша. Масштабируемый когерентный интерфейс (SCI) — это стандарт IEEE, определяющий протокол согласованности кэша на основе каталогов, позволяющий избежать ограничений масштабируемости, обнаруженных в более ранних многопроцессорных системах. Например, SCI используется в качестве основы для технологии NumaConnect. [9] [10]

NUMA против кластерных вычислений

[ редактировать ]

NUMA можно рассматривать как тесно связанную форму кластерных вычислений . Добавление подкачки виртуальной памяти в кластерную архитектуру может позволить полностью реализовать NUMA программно. Однако задержка между узлами программного NUMA остается на несколько порядков больше (медленнее), чем у аппаратного NUMA. [1]

Поддержка программного обеспечения

[ редактировать ]

Поскольку NUMA в значительной степени влияет на производительность доступа к памяти, необходимы определенные оптимизации программного обеспечения, чтобы позволить планировать потоки и процессы, близкие к их данным в памяти.

Аппаратная поддержка

[ редактировать ]

По состоянию на 2011 год системы ccNUMA представляют собой многопроцессорные системы на базе процессора AMD Opteron , который может быть реализован без внешней логики, и процессора Intel Itanium , для которого требуется набор микросхем с поддержкой NUMA. Примерами наборов микросхем с поддержкой ccNUMA являются SGI Shub (Super Hub), Intel E8870, HP sx2000 (используется в серверах Integrity и Superdome), а также те, которые используются в системах NEC Itanium. Более ранние системы ccNUMA, например системы от Silicon Graphics, были основаны на процессорах MIPS и процессоре DEC Alpha 21364 (EV7).

См. также

[ редактировать ]
  1. Перейти обратно: Перейти обратно: а б Накул Манчанда; Каран Ананд (4 мая 2010 г.). «Неравномерный доступ к памяти (NUMA)» (PDF) . Нью-Йоркский университет. Архивировано из оригинала (PDF) 28 декабря 2013 г. Проверено 27 января 2014 г.
  2. ^ Сергей Благодуров; Сергей Журавлёв; Мохаммад Дашти; Александра Федорова (2 мая 2011 г.). «Обоснование управления конфликтами с поддержкой NUMA в многоядерных системах» (PDF) . Университет Саймона Фрейзера . Проверено 27 января 2014 г.
  3. Перейти обратно: Перейти обратно: а б Золтан Майо; Томас Р. Гросс (2011). «Производительность системы памяти в многоядерном мультипроцессоре NUMA» (PDF) . АКМ. Архивировано из оригинала (PDF) 12 июня 2013 г. Проверено 27 января 2014 г.
  4. ^ «Информационный документ по архитектуре двухканальной памяти Intel DDR» (PDF) (ред. 1.0). Infineon Technologies North America и Kingston Technology. Сентябрь 2003 г. Архивировано из оригинала (PDF, 1021 КБ ) 29 сентября 2011 г. Проверено 6 сентября 2007 г.
  5. ^ Корпорация Intel (2008). Архитектура Intel QuickPath [Информационный документ]. Получено с http://www.intel.com/pressroom/archive/reference/whitepaper_QuickPath.pdf.
  6. ^ Корпорация Intel. (18 сентября 2007 г.). Гелсингер беседует с Intel и компанией Rapid Technology Caden [пресс-релиз]. Получено с http://www.intel.com/pressroom/archive/releases/2007/20070918corp_b.htm.
  7. ^ «ccNUMA: когерентный неравномерный доступ к памяти» . SlideShare.net. 2014 . Проверено 27 января 2014 г.
  8. ^ Пер Стенстремт; Трумэн Джо; Ануп Гупта (2002). «Сравнительная оценка производительности архитектур NUMA и COMA с когерентным кэшем» (PDF) . АКМ . Проверено 27 января 2014 г.
  9. ^ Дэвид Б. Густавсон (сентябрь 1991 г.). «Масштабируемый когерентный интерфейс и связанные с ним проекты стандартов» (PDF) . Публикация SLAC 5656 . Стэнфордский центр линейных ускорителей . Архивировано (PDF) из оригинала 9 октября 2022 г. Проверено 27 января 2014 г.
  10. ^ «NumaChip обеспечивает когерентное кэширование недорогой общей памяти» . Numascale.com. Архивировано из оригинала 22 января 2014 г. Проверено 27 января 2014 г.
  11. ^ Поддержка NUMA (MSDN)
  12. ^ Улучшения производительности виртуальной машины Java HotSpot
  13. ^ «Усилия по масштабированию Linux: домашняя страница группы NUMA» . SourceForge.net . 20 ноября 2002 г. Проверено 6 февраля 2014 г.
  14. ^ «Ядро Linux 3.8, раздел 1.8. Автоматическая балансировка NUMA» . kernelnewbies.org . 08 февраля 2013 г. Проверено 6 февраля 2014 г.
  15. ^ Джонатан Корбет (14 ноября 2012 г.). «НУМА спешит» . LWN.net . Проверено 6 февраля 2014 г.
  16. ^ «Ядро Linux 3.13, раздел 1.6. Улучшена производительность в NUMA-системах» . kernelnewbies.org . 19 января 2014 г. Проверено 6 февраля 2014 г.
  17. ^ «Документация по ядру Linux: Documentation/sysctl/kernel.txt» . ядро.орг . Проверено 6 февраля 2014 г.
  18. ^ Джонатан Корбет (01 октября 2013 г.). «Ход планирования NUMA» . LWN.net . Проверено 6 февраля 2014 г.
  19. ^ "нума(4)" . www.freebsd.org . Проверено 3 декабря 2020 г.
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 8d43d47530fcf19e4213a2222ce428b9__1721394780
URL1:https://arc.ask3.ru/arc/aa/8d/b9/8d43d47530fcf19e4213a2222ce428b9.html
Заголовок, (Title) документа по адресу, URL1:
Non-uniform memory access - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)