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 в значительной степени влияет на производительность доступа к памяти, необходимы определенные оптимизации программного обеспечения, чтобы позволить планировать потоки и процессы, близкие к их данным в памяти.

  • В Microsoft Windows 7 и Windows Server 2008 R2 добавлена ​​поддержка архитектуры NUMA с более чем 64 логическими ядрами. [11]
  • В Java 7 с поддержкой NUMA добавлена ​​поддержка распределителя памяти и сборщика мусора . [12]
  • Ядро Linux :
    • Версия 2.5 обеспечивала базовую поддержку NUMA. [13] который был улучшен в последующих выпусках ядра.
    • Версия 3.8 ядра Linux представила новую основу NUMA, которая позволила разрабатывать более эффективные политики NUMA в более поздних выпусках ядра. [14] [15]
    • Версия 3.13 ядра Linux содержит множество политик, направленных на размещение процесса рядом с его памятью, а также обработку таких случаев, как совместное использование страниц памяти между процессами или использование прозрачных огромных страниц ; новые настройки sysctl позволяют включать и отключать балансировку NUMA, а также настраивать различные параметры балансировки памяти NUMA. [16] [17] [18]
  • OpenSolaris моделирует архитектуру NUMA с помощью lgroups.
  • Во FreeBSD добавлена ​​поддержка архитектуры NUMA в версии 9.0. [19]
  • Silicon Graphics IRIX (прекращено с 2021 г.) Поддержка архитектуры ccNUMA с процессором более 1240 ЦП с серией серверов Origin.

Аппаратная поддержка [ править ]

По состоянию на 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. ^ Jump up to: Перейти обратно: а б Накул Манчанда; Каран Ананд (4 мая 2010 г.). «Неравномерный доступ к памяти (NUMA)» (PDF) . Нью-Йоркский университет. Архивировано из оригинала (PDF) 28 декабря 2013 г. Проверено 27 января 2014 г.
  2. ^ Сергей Благодуров; Сергей Журавлёв; Мохаммад Дашти; Александра Федорова (2 мая 2011 г.). «Обоснование управления конфликтами с поддержкой NUMA в многоядерных системах» (PDF) . Университет Саймона Фрейзера . Проверено 27 января 2014 г.
  3. ^ Jump up to: Перейти обратно: а б Золтан Майо; Томас Р. Гросс (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 . 8 февраля 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
Номер скриншота №: d6abc250394270d1757c50095db6b6fb__1712413620
URL1:https://arc.ask3.ru/arc/aa/d6/fb/d6abc250394270d1757c50095db6b6fb.html
Заголовок, (Title) документа по адресу, URL1:
Non-uniform memory access - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)