Реклама:

Количество процессоров в UMA-мультипроцессорах с одной шиной обычно ограничивается несколькими десятками, а для мультипроцессоров с перекрестной или многоступенчатой коммутацией требуется дорогое оборудованияе, к тому же количество процессоров в них не намного больше. Чтобы объединить в одном мультипроцессоре более 100 процессоров, нужно какое-то иное решение. Ранее предполагалось, что все модули памяти имеют одинаковое время доступа. Если не замыкаться на этой концепции, можно прийти к мультипроцессорам с неоднородным доступом к памяти (Nonuniform Memory Access, NUMA). Как и UMA-мультипроцессоры, они предоставляют единое адресное пространство для всех процессоров, но, в отличие от UMA-машин, доступ к локальным модулям памяти происходит быстрее, чем к удаленным. Следовательно, все UMA-программы смогут без изменений работать на NUMA-машинах, но производительность будет хуже, чем на UMA-машине с той же тактовой частотой.

NUMA-машины имеют три ключевые характеристики, которые в совокупности отличают их от других мультипроцессоров:

+ существует единое адресное пространство, видимое всеми процессорами;

+ доступ к удаленной памяти производится командами LOAD и STORE;

+ доступ к удаленной памяти выполняется медленнее, чем доступ к локальной.

Если время доступа к удаленной памяти не замаскировано кэшированием (кэш отсутствует), такая система называется NC-NUMA (No Caching NUMA - NUMA без кэширования). Если присутствуют согласованные кэши, то система называется CC-NUMA (Coherent Cache NUMA - NUMA с согласованными кэшами). Программисты часто называют такую систему аппаратной распределенной общей памятью, поскольку она, по сути, аналогична распределенной общей памяти (DSM), реализованной программно, однако поддерживается аппаратно с использованием страниц маленького размера.

Одной из первых NC-NUMA-машин был мультипроцессор Cm* производства Carnegie-Mellon. Он упрощенно показан на рис. 8.26 [200]. Этот мультипроцессор состоял из набора процессоров LSI-11, каждый с собственной памятью, обращение к которой производилось по локальной шине. (LSI-11 - однопроцессорная версия очень популярного в 70-е годы мини-компьютера DEC PDP-11.) Кроме того, процессоры LSI-11 были связаны друг с другом системной шиной. Когда выполнялось обращение к памяти, запрос попадал к диспетчеру памяти, который проверял, находится нужное слово в локальной памяти или нет. Если да, запрос направлялся по локальной шине, если нет, запрос направлялся по системной шине к той системе, которая содержала данное слово. Естественно, вторая операция требовала гораздо больше времени, чем первая. Выполнение программы, хранящейся в удаленной памяти, занимало в 10 раз больше времени, чем выполнение той же программы, расположенной локально.

NUMA-мультипроцессоры

Рис. 8.26. гчимА-машина с двумя уровнями шин

Согласованность памяти в КС->ШМА-машине гарантирована, поскольку в ней отсутствует кэш-память. Каждое слово памяти может находиться только в одном месте, поэтому нет никакой опасности появления копии с устаревшими данными - здесь вообще нет копий. То, в каком именно модуле памяти находится та или иная страница, имеет большое значение, поскольку от этого зависит производительность. Для максимального увеличения производительности в КГС-МиМА-машинах была реализована следующая сложная схема программной поддержки перемещения страниц.

Обычно каждые несколько секунд запускался специальный "сторожевой" процесс (демон), называемый страничным сканером. Его задача - следить за статистикой использования страниц и перемещать их таким образом, чтобы росла производительность. Если страница оказывалась в "неправильном" месте, страничный сканер выгружал ее из памяти, поэтому следующее обращение к ней вызывало ошибку отсутствия страницы. Когда происходит ошибка отсутствия страницы, принимается решение о том, куда эту страницу поместить (возможно, не в тот модуль памяти, в котором она была раньше). Для предотвращения пробуксовки существовало правило, согласно которому страница после размещения должна оставаться на месте в течение времени АГ. Предлагалось множество других алгоритмов, но ни один из них так и не стал безусловно лучшим [122].

UMA-мультипроцессоры в симметричных мультипроцессорных архитектурах || Оглавление || СОМА-мультипроцессоры