Введение

Архитектура памяти только кэша (COMA) — это организация компьютерной памяти для использования в многопроцессорных системах, в которой локальные памяти (обычно DRAM) на каждом узле используются как кэш. Это отличается от использования локальных памятей в качестве основной памяти, как в организациях NUMA. В NUMA каждому адресу в глобальном адресном пространстве обычно назначается фиксированный домашний узел. Когда процессоры обращаются к данным, копия помещается в их локальный кэш, но место остаётся выделенным в домашнем узле. В отличие от этого, в COMA домашнего узла нет. Обращение с удалённого узла может вызвать миграцию данных. По сравнению с NUMA, это уменьшает количество избыточных копий и может обеспечить более эффективное использование ресурсов памяти. С другой стороны, это порождает проблемы поиска конкретных данных (домашнего узла больше нет) и действий при заполнении локальной памяти (миграция данных в локальную память требует вытеснения других данных, которым некуда вернуться). Для реализации миграции обычно используются аппаратные механизмы когерентности памяти. Большой объём исследований посвящён этим вопросам. Разработаны различные типы каталогов, политики поддержания свободного пространства в локальных памятьях, политики миграции и политики для копий, предназначенных только для чтения. Также были предложены гибридные организации NUMA COMA, такие как Reactive NUMA, которая позволяет страницам начинать работу в режиме NUMA и переключаться в режим COMA при необходимости, и реализована в WildFire от Sun Microsystems. Реализация гибридной NUMA COMA на основе программного обеспечения была предложена и реализована компанией ScaleMP, что позволило создать многопроцессорную систему с общей памятью из кластера стандартных узлов.