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.
— Конец статьи