Топология Cluster-on-Die, Composter

Архитектурата на процесора Intel Xeon E5 v3 е първата, която прилага топологиятаCluster-on-Die, използвана за матрици с повече от 10 ядра, която разделя ресурсите на процесора на две групи, наречениклъстери.
Всеки клъстер съдържа набор от ядра, свързани с пръстеновидна шина или пръстеновидна шина. Двете пръстеновидни шини си взаимодействат чрез буферирани комутатори, осигурявайки обмен на информация между клъстерите.
Забележка към оптимизатора

Друга характеристика на процесорите с четири канала RAM е особено важна за специалистите в областта на системите с високо натоварване, както и за техните колеги - разработчици на помощни програми, които измерват производителността. Има две опции за топология на такива процесори:
- Един четириканален RAM контролер, на еднакво разстояние от всички ядра.
- Два двуканални контролера, по един на група ядра.
Във втория вариант програма, използваща една нишка или няколко нишки, но работеща на изчислителни ядра, принадлежащи към един и същи клъстер, няма да може да получи скорост на достъп до RAM, която надвишава възможностите на два (но не четири налични!) канала:

Внедряване на топологията NUMA (неравномерен достъп до паметта) в съвременни мултипроцесорни системипредполага наличието на няколко процесора, всеки от които е оборудван със собствен контролер на паметта. Достъпът до локалния контролер е по-бърз отколкото до паметта на съседен процесор. За да оптимизира софтуера за тази конкретна платформа, фърмуерът предава топологична информация към операционната система чрез интерфейса ACPI. Трябва да се отбележи, че декларирането на топологията Cluster-on-Die се извършва с помощта на същите системни обекти ACPI. Нека разгледаме по-отблизо как се случва това.
Как фърмуерът предава топологична информация на операционната система
Ако опцията Cluster-on-Die в CMOS настройката на платформата е настроена на ENABLED, всеки клъстер се декларира като отделен NUMA възел, съответно броят на възлите става два пъти по-голям от броя на процесорните гнезда. В същото време се декларира информация за характеристиките на клъстерната архитектура на процесора и може да се използва за оптимизиране на софтуера.
Декларирането на клъстери, както и топологията на многопроцесорните NUMA системи, за да се прехвърли информация от платформата BIOS към операционната система и да се оптимизира използването на локални клъстерни ресурси, се извършва с помощта на ACPI таблицата SRAT (System Resource Affinity Table или, според друга версия, Static Resource Affinity Table). Таблицата се състои от елементи от два типа: Processor Affinity Structures, които определят принадлежността на логически процесори към дадени NUMA възли (наречени Proximity Domains) и Memory Affinity Structures, които определят близостта на RAM ресурсите до посочените възли. По този начин всеки диапазон от памет е свързан със собствена група логически процесори.
Обърнете внимание, че йерархията на NUMA стана двустепенна: по-ниското ниво са клъстери,най-високото ниво са процесорни гнезда. Два NUMA възела са декларирани на сокет. Това означава, че параметърът, който характеризира разстоянието между възлите в многопроцесорна NUMA система, може да приеме повече от две стойности (не само локалния или отдалечения възел). За да се опише такава система, е необходима още една ACPI таблица SLIT (System Locality Distance Information Table). Тази таблица съдържа N x N матрица, където N = броят на NUMA възлите. Елементите на матрицата Xij съдържат константи, които числено характеризират разстоянието между възлите i, j.
Съвсем естествено е, че след достигане на определен праг от броя на ядрата в процесора, стана разумно решение да се раздели процесорът на клъстери. Такива привидно общи ресурси като кеша от трето ниво и RAM контролера също бяха разделени на блокове. Всеки такъв блок е свързан със собствен клъстер. Системната топология се декларира на софтуера чрез ACPI интерфейса и NUMA API процедурите, които се срещат във всички съвременни операционни системи. Основното правило при оптимизиране на софтуера е, че достъпът на процесора до "собствената" памет е за предпочитане, тъй като е по-бърз от "чуждата".