ARM AArch64: Домейни за споделяне и нормална памет

Тази статия обяснява концепциите за споделеност за нормална памет и се докосва до нейното въздействие върху цялостната кохерентност и кешируемост при дизайн на AArch64 система. Части от тези точки са подходящи и за дизайна на системата, който не е AArch64.

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

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

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

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

Домейни за споделяне за нормална памет

Атрибутът за споделяне на място в паметта е нещо, което хардуерът налага за специфично изискване за кохерентност на това място в паметта

Нормалното място в паметта може да има атрибут за споделяне като:

  • Вътрешно споделяне
  • Външен за споделяне
  • Не може да се споделя

Моля, обърнете внимание, че тези атрибути определят само изискванията за съгласуваност на данните. Те не дефинират изисквания за съгласуваност на извличането на инструкции

Вътрешният домейн за споделяне е дефиниран за нормално място в паметта с набор от атрибути за вътрешно споделяне, като

  • Един или повече наблюдатели, които имат съгласуван достъп до данни до това местоположение.
  • Всеки от тези наблюдатели е независимо съгласуван в достъпа до данни до това местоположение.

Външният домейн за споделяне е дефиниран за нормално място в паметта с набор от атрибути за външно споделяне, като

  • Един или повече наблюдатели, които имат съгласуван достъп до данни до това местоположение.
  • Всеки от тези наблюдатели е независимо съгласуван в достъпа до данни до това местоположение.

В допълнение към тези дефиниции, някои допълнителни свойства на домейните за споделяне са:

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

Също

  • Ако дадено местоположение е Non-Cacheable, добавете достъп до данни към него е кохерентен за всички наблюдатели. Следователно местоположенията, които не могат да се кешират, винаги се считат за външни за споделяне за всички наблюдатели.

При системен дизайн, ако множество PE се управляват от едно и също копие на хипервайзор или операционна система, всички тези PE трябва да бъдат членове на единичен вътрешен домейн за споделяне.

Пример1: Системен дизайн с асиметрична мулти обработка

Асиметричната мулти обработка е мястото, където различните PE работят с различни операционни системи или хипервайзори.

За илюстрация нека приемем фиктивна реализация на AArch64 със следните компоненти

  • Multi socket/CPU система с 4 PE на гнездо.
  • Всеки PE има малко количество адресируема памет в чипа, която се съхранява за всеки PE, като дава на всеки PE достъп до своя локален OCM, използвайки същия адресен диапазон.
  • Всеки A53 PE има независим L1 кеш.
  • Всеки Socket има L2 кеш, споделен между A53.
  • Към системата е свързана FPGA реализация на вид RAM. Всички PE имат достъп до този FPGARAM.

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

В илюстрацията

  • OCM на всеки PE не може да се споделя (OCM е псевдоним и се осъществява достъп като един и същ адресен диапазон във всички PE), но може да се кешира.
  • Socket-0 и свързаният DDR0 са в един вътрешен домейн за споделяне. Socket 0 изпълнява Hypervisor.
  • Socket-1 и свързаният DDR1 са в един вътрешен домейн за споделяне. Socket 1 изпълнява голо метално копие на Linux.
  • FPGARAM, свързан чрез PCIe RC, като и двата гнезда са в един и същ външен домейн за споделяне.

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

Това, което означава тази конфигурация, е

За L1 и L2 кешове,

  • Кешовете L1 и L2 попадат в един и същ вътрешен домейн за споделяне. И двете се поддържат кохерентни от хардуера за всички кеширани достъпи, с изключение на тези към OCM.

За OCM,

  • OCM адреси, но трябва да бъдат маркирани като Non-Shareable, тъй като не се споделят между PE (дори тези от един и същи сокет). Това е наред, защото OCM се банкира за PE. Няма хардуерно наложена съгласуваност за достъп до OCM, тъй като OCM така или иначе не може да бъде достъпен извън PE. Те могат да бъдат маркирани кеширани или некеширани.

За DDR0 и DDR1

  • Ако DDR се кешира и е маркиран като Inner shareable, хардуерът налага кохерентност на локалните DDR достъпи. Не са необходими специални инструкции за кеширане за PE от същия сокет за достъп до локалното DDR съдържание.
  • Ако DDR е кеширан и маркиран като Външен за споделяне, хардуерът налага съгласуваност на локалните и нелокалните DDR достъпи. Не са необходими специални инструкции за кеша за PE за достъп до съдържанието на DDR, независимо от местоположението на DDR.
  • Ако DDR се кешира и е маркиран като Inner и Outer за споделяне, хардуерът налага кохерентност на локалните и нелокалните DDR достъпи. Не са необходими специални инструкции за кеша за PE за достъп до съдържанието на DDR, независимо от местоположението на DDR.
  • DDR паметта не може да бъде маркирана като неподеляема (ако е направено това, може да се получи неочаквано поведение).
  • Ако DDR не е кеширан, той се третира като външен за споделяне.

За FPGA RAM

  • Ако FPGARAM е кеширан и маркиран като Външен за споделяне, хардуерът налага кохерентност на достъпа до FPGARAM. Не са необходими специални инструкции за кеша за достъп на PE до съдържанието на FPGARAM.
  • FPGARAM не трябва да бъде маркиран като Вътрешен за споделяне, тъй като не принадлежи към Вътрешен домейн за споделяне.
  • Ако FPGARAM не е кеширан, той се третира като външен за споделяне.

Пример2: Системен дизайн със симетрична мулти обработка

При симетрична мулти обработка един екземпляр на операционната система или хипервайзор работи на всички PE. Такава ситуация задължава всички PE и паметта, до която имат достъп, да попадат в един и същ вътрешен домейн за споделяне.

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

Тук единствената разлика от дизайна на AMP с два вътрешни споделяеми домейна е, че ако DDR са кеширани, за всеки PE не се изискват инструкции за управление на кеша за съгласуван достъп до нелокално DDR съдържание, както локални, така и нелокални RAM падания в същия вътрешен домейн за споделяне.

Забележка: Това е само един възможен дизайн. Например, нищо не пречи на системния архитект да разшири вътрешния домейн за споделяне, за да включи FPGA паметта.

— Край на статията