В течение второй половины 90-х годов в области архитектур для высокопроизводительных многопроцессорных систем многое изменилось. Сразу несколько компаний (Hewlett-Packard/Convex, Pyramid Technology, Sun и Silicon Graphics) выпустили платформы с принципиально новой архитектурой CC-NUMA. Отличительная черта этого класса архитектур - поддержка неоднородного доступа к памяти - NUMA (Non-Uniform Memory Access). В данный класс можно также включить хорошо известные кластерные системы, архитектуры с массовым параллелизмом (MPP) и их модификации RMC (Reflective Memory Clusters), COMA (Cache-Only Memory Architecture). Среди разработок архитектура CC-NUMA выделяется принципиально. Это архитектура симметричного мультипроцессирования (SMP), обладающая множеством достоинств: простая модель программирования, переносимость приложений и т. д. В cc-NUMA (cache-coherent NUMA) аппаратно поддерживается когерентность кэшей во всей системе. У истоков создания архитектуры CC-NUMA стояла компания Sequent, реализовавшая собственную версию - NUMA-Q.
Технология NUMA доступа к оперативной памяти составляет альтернативу одноранговому доступу для SMP систем.
Основная идея NUMA архитектуры заключается в образовании основной вычислительной системы посредством объединения однотипных модулей, коммутируемых высокоскоростной сетью. Каждый модуль может состоять из одного или нескольких процессоров со своей локальной памятью, которая образует единое адресное пространство системы и часто подсистемы ввода/вывода. Модуль организован как SMP система, но за счет минимальной компоновки элементов достигается высокая пропускная способность между процессором и локальной памятью модуля. Каждый модуль, имея свою локальную память, уменьшает нагрузку на межмодульный обмен данными, время доступа к которым зависит от удаления модулей друг от друга, но в несколько раз превышает время локального доступа.
К основным достоинствам NUMA архитектуры следует отнести следующие положения.
1. На базе NUMA архитектуры можно построить систему с большим числом процессоров, чем SMP, т.е. вычислительная система хорошо масштабируется по числу процессоров, а следовательно и по памяти.
2. Масштабирование NUMA систем не добавляет сложности в логическую часть аппаратуры, что увеличивает устойчивость вычислительной системы в целом, одновременно, снижая общую стоимость.
3. На NUMA архитектуру хорошо ложатся задачи, в которых множество процессов не пересекаются по общим данным, либо при пересечении все процессы могут быть исполнены в рамках одного модуля.
4. На основе NUMA архитектуры легко реализуется разбиение системы на виртуально независимые машины (партиции - это программная или аппаратная реализация виртуальной машины).
К недостаткам NUMA архитектуры следует отнести нижеследующие положения.
1. Необходимость иметь специализированное системное программное обеспечение, которое организует вычислительный процесс, исходя из основного принципа NUMA архитектуры - память и процессоры для процесса должны принадлежать одному модулю. Только выполняя это условие, можно достичь высокой эффективности применения компьютеров с NUMA архитектурой.
2. Большинство кодов прикладных программ оттранслированы для SMP систем и запуск их без перекомпиляции на NUMA системах, вполне вероятно, не приведет к эффективному их исполнению. Такое заключение сделано на основе положения, что транслятор в основном запрашивает требуемую для задачи как статическую, так и динамическую память и естественно оказывает влияние на её распределение.
Это положение требует дополнительного исследования, а ещё лучше подтверждения практикой, т.к. сомнения вызывает механизм отображения виртуальной памяти на физическую, на который в ОС возложена обязанность учета архитектуры вычислительной системы.