ARM AArch64: домены совместного использования и обычная память

В этой статье объясняются концепции совместного использования для обычной памяти и затрагивается ее влияние на общую когерентность и кэшируемость при проектировании системы AArch64. Некоторые из этих пунктов применимы и к дизайну системы, отличной от AArch64.

В большинстве систем обычная память составляет большую часть адресуемой памяти. Наиболее важным фактором, позволяющим объявить конкретную память нормальной памятью, является ее идемпотентность. То есть память должна обладать всеми следующими свойствами:

  • Никаких побочных эффектов для операции чтения и повторных операций чтения.
  • Нет побочных эффектов для операции записи и повторяющихся операций записи в один и тот же адрес.
  • Множественные доступы могут быть объединены без побочных эффектов для одного и того же типа доступа (чтение/запись).
  • Операция чтения возвращает последнее записанное значение независимо от того, сколько раз выполнялась операция чтения.
  • Операция чтения может получить дополнительное содержимое памяти без побочных эффектов.
  • Невыровненный доступ может поддерживаться.

В дополнение к идемпотентности, реализация обычной памяти демонстрирует свойство завершения операции записи за конечное время.

  • Это означает, что в области совместного использования этой памяти наблюдатель должен видеть, что запись завершена за конечное время без необходимости использования явных инструкций по обслуживанию кэша или барьеров памяти.
  • Если доступ к обычной памяти осуществляется как к некэшируемой памяти, то завершение записи должно наблюдаться глобально всеми наблюдателями в течение конечного периода времени без необходимости использования каких-либо инструкций по обслуживанию кэша.

Домены совместного использования для обычной памяти

Атрибут совместного использования области памяти — это то, что аппаратное обеспечение применяет для конкретных требований когерентности этой области памяти.

Обычное место в памяти может иметь такой атрибут совместного использования, как:

  • Внутренний общий
  • Внешний разделяемый
  • Недоступно для совместного использования

Обратите внимание, что эти атрибуты определяют только требования когерентности данных. Они не определяют требования когерентности выборки инструкций.

Внутренний разделяемый домен определяется для обычной области памяти с установленным атрибутом Inner Sharable как

  • Один или несколько наблюдателей, имеющих согласованный доступ к данным в этом месте.
  • Каждый из этих наблюдателей независимо когерентен в доступе к данным в этом месте.

Внешний разделяемый домен определяется для обычной области памяти с установленным атрибутом Outer Sharable как

  • Один или несколько наблюдателей, имеющих согласованный доступ к данным в этом месте.
  • Каждый из этих наблюдателей независимо когерентен в доступе к данным в этом месте.

В дополнение к этим определениям, некоторые дополнительные свойства доменов совместного использования:

  • Каждый наблюдатель является членом только одного домена внутренней совместности.
  • Каждый наблюдатель является членом только одного домена внешнего совместного использования.
  • Все наблюдатели, являющиеся членами домена внутреннего совместного использования, всегда являются членами одного и того же домена внешнего совместного использования.

Также

  • Если местоположение не кэшируется, добавьте к нему доступ к данным, когерентный для всех наблюдателей. Таким образом, некэшируемые местоположения всегда считаются внешними доступными для всех наблюдателей.

При проектировании системы, если несколько PE управляются одним и тем же экземпляром гипервизора или операционной системы, все эти PE должны быть членами одного внутреннего совместно используемого домена.

Пример 1: Проект системы с асимметричной многопроцессорной обработкой

Асимметричная многопроцессорная обработка — это когда разные PE работают под управлением разных операционных систем или гипервизоров.

Для иллюстрации предположим вымышленную реализацию AArch64 со следующими компонентами.

  • Система с несколькими сокетами/процессорами с 4 PE на сокет.
  • Каждое PE имеет небольшой объем адресуемой встроенной памяти, которая распределяется по каждому PE, предоставляя каждому PE доступ к своему локальному OCM с использованием одного и того же диапазона адресов.
  • Каждый A53 PE имеет независимый кэш L1.
  • Каждый сокет имеет кеш L2, совместно используемый A53.
  • К системе подключена FPGA-реализация своего рода ОЗУ. Все PE имеют доступ к этой FPGARAM.

Эта система разработана для AMP, где PE (0–3) всегда запускает экземпляр гипервизора/ОС, а PE4–7 всегда запускает другой экземпляр гипервизора/ОС, домены совместного использования могут быть

На иллюстрации

  • OCM каждого PE нельзя использовать совместно (OCM имеет псевдоним и доступ к нему осуществляется по одному и тому же диапазону адресов во всех PE), но его можно кэшировать.
  • Socket-0 и подключенный DDR0 находятся в одном внутреннем совместно используемом домене. Сокет 0 запускает гипервизор.
  • Socket-1 и подключенный DDR1 находятся в одном внутреннем совместно используемом домене. Socket 1 запускает чистый экземпляр Linux.
  • FPGARAM, подключенная через PCIe RC, при этом оба сокета находятся в одном внешнем совместно используемом домене.

Иллюстрация системы AMP Характеристики системы AMP

Что означает эта конфигурация

Для кэшей L1 и L2,

  • Кэши L1 и L2 попадают в один и тот же внутренний общий домен. Оба поддерживаются аппаратно согласованными для всех доступов к кэшу, кроме доступа к OCM.

Для ОКМ,

  • Адреса OCM, но они должны быть помечены как Non-Shareable, так как они не являются общими для PE (даже тех, которые имеют один и тот же сокет). Это нормально, потому что OCM накапливается для каждого PE. Для доступа к OCM не существует принудительной аппаратной согласованности, поскольку в любом случае доступ к OCM вне PE невозможен. Они могут быть помечены как кэшированные или не кэшированные.

Для DDR0 и DDR1

  • Если DDR кэшируется и помечен как внутренний общий доступ, аппаратное обеспечение обеспечивает согласованность доступа к локальному DDR. Никаких специальных инструкций кеширования не требуется для PE одного и того же сокета для доступа к локальному содержимому DDR.
  • Если DDR кэшируется и помечен как внешний разделяемый, аппаратное обеспечение обеспечивает согласованность локального и нелокального доступа к DDR. Для доступа PE к содержимому DDR ​​не требуется никаких специальных инструкций кэширования независимо от местоположения DDR.
  • Если DDR кэшируется и помечается как внутренний, так и внешний совместно используемый, аппаратное обеспечение обеспечивает согласованность локального и нелокального доступа к DDR. Для доступа PE к содержимому DDR ​​не требуется никаких специальных инструкций кэширования независимо от местоположения DDR.
  • Память DDR нельзя пометить как не предназначенную для совместного использования (если это сделать, это может привести к неожиданному поведению).
  • Если DDR не кэшируется, он считается внешним общим.

Для ПЛИС ОЗУ

  • Если FPGARAM кэширована и помечена как внешняя совместно используемая, аппаратное обеспечение обеспечивает согласованность доступа к FPGARAM. Для доступа PE к содержимому FPGARAM не требуется никаких специальных инструкций кэширования.
  • FPGARAM не следует помечать как внутренний общий доступ, поскольку он не принадлежит к внутреннему общему домену.
  • Если FPGARAM не кэширована, она рассматривается как Outer Sharable.

Пример 2: Проект системы с симметричной многопроцессорной обработкой

В симметричной многопроцессорной обработке один экземпляр операционной системы или гипервизора работает на всех PE. В такой ситуации все PE и память, к которой они обращаются, попадают в один и тот же внутренний разделяемый домен.

Иллюстрация системы SMP Характеристики системы SMP

Здесь единственное отличие от дизайна AMP с двумя внутренними разделяемыми доменами заключается в том, что если DDR кешируются, для любого PE не требуются инструкции по управлению кешем для когерентного доступа к нелокальному содержимому DDR, поскольку локальная, а также нелокальная ОЗУ падает. в тот же внутренний общий домен.

Примечание. Это всего лишь один из возможных вариантов дизайна. Например, ничто не мешает системному архитектору расширить внутренний разделяемый домен, включив в него память FPGA.

— Конец статьи