Архитектура кэш-памяти


Архитектура кэш-памяти ( COMA ) — это организация компьютерной памяти для использования в мультипроцессорах , в которой локальная память (обычно DRAM ) на каждом узле используется в качестве кэша. Это контрастирует с использованием локальной памяти в качестве фактической основной памяти, как в организациях NUMA .

В NUMA каждому адресу в глобальном адресном пространстве обычно назначается фиксированный домашний узел. Когда процессоры получают доступ к некоторым данным, копия создается в их локальном кэше, но пространство остается выделенным на домашнем узле. Вместо этого у COMA нет дома. Доступ с удаленного узла может привести к миграции этих данных. По сравнению с NUMA это уменьшает количество избыточных копий и может позволить более эффективно использовать ресурсы памяти. С другой стороны, возникают проблемы с тем, как найти определенные данные (домашний узел больше не существует) и что делать, если локальная память заполняется (при переносе некоторых данных в локальную память затем необходимо удалить некоторые другие данные, у которого нет дома, куда можно пойти). Для реализации миграции обычно используются аппаратные механизмы согласованности памяти .

Этим вопросам посвящено огромное количество исследований. Были разработаны различные формы каталогов, политики сохранения свободного места в локальной памяти, политики миграции и политики для копий только для чтения. Также были предложены гибридные организации NUMA-COMA, такие как Reactive NUMA, которая позволяет страницам запускаться в режиме NUMA и при необходимости переключаться в режим COMA и реализована в WildFire от Sun Microsystems. [1] [2] Программная реализация гибридного NUMA-COMA была предложена и реализована ScaleMP, [3] позволяющая создать многопроцессорную систему с общей памятью из кластера стандартных узлов.