- Попытка объединения достоинств компьютеров с общей и распределенной памятью реализована в архитектурах организации памяти non uniform memory access – технологиях NUMA и ccNUMA (cache-coherent NUMA).
- Идея в том, чтобы создать механизм, позволяющий всю совокупную, (вообще говоря, неоднородную, физическую память компьютера рассматривать (виртуально) как единую адресуемую память.
- При этом сохраняется преимущество работы с единым адресным пространством и одновременно ослабляются ограничения на число параллельных узлов. Таким образом, архитектуры NUMA и ccNUMA представляют нечто среднее между SMP и MPP. В таких системах память физически распределена, но логически общедоступна.
- NUMA-системы состоят из однородных базовых модулей (плат); каждый из модулей имеет небольшое число процессоров и блок памяти. Модули объединены с помощью высокоскоростного коммутатора. Поддерживается единое адресное пространство, аппаратно поддерживается доступ к удаленной памяти (к памяти других модулей).
- Время доступа к памяти определяется её физическом расположением: доступ к локальной памяти процессора в несколько раз быстрее, чем к удаленной. Если поддерживается когерентность кэшей во всей системе (обычно это так), говорят об архитектуре cc-NUMA (cache-coherent NUMA). Для поддержки кэш-когерентности используются специальные аппаратные решения.
NUMA: компьютер Cm* - Система Cm* (конец 70х) – первый NUMA компьютер. Набор кластеров, соединенных между собой через межкластерную шину.
- Каждый кластер объединяет процессор, контроллер памяти, модуль памяти, плюс вспомогательные устройства, соединенные между собой посредством локальной шины.
- Когда процессору нужно выполнить операции чтения или записи, он посылает запрос с адресом своему контроллеру памяти. Контроллер анализирует старшие разряды адреса и определяет, в каком модуле хранятся нужные данные. Если адрес локальный – запрос выставляется на локальную шину, запрос для удаленного кластера отправляется через межкластерную шину.
- Программа, хранящаяся в одном модуле памяти, может выполняться любым процессором системы. Различие заключается лишь в скорости выполнения. Локальные ссылки отрабатываются намного быстрее, чем удаленные (разрыв до 700%). Поэтому процессор того кластера, где хранится программа, выполнит ее на порядок быстрее, чем другие.
Do'stlaringiz bilan baham: |