Die technische Dokumentation zur SGI Altix ist Bestandteil der Dokumentation des LRZ Linux-Clusters.
Es handelt sich um ein sogenanntes ccNuma (cache-coherent non-uniform memory access) System
, bestehend aus 16
Compute Bricks
(Nodes)
mit je 8 CPUs. Die Nodes sind über ein Hochgeschwindigkeits-Netzwerk vom Typ NUMALink4
gekoppelt.
Damit steht ein Single System Image Distributed
Shared Memory
System mit 128 Prozessoren zur Verfügung, das die MPI und OpenMP
Programmiermodelle unterstützt.
Madisonmit 1.6 GHz Taktfrequenz, 6 MByte L3-Cache und 6.4 GFlop/s Spitzenleistung pro Prozessor
distributed shared memory; Peak-Bandbreite zum lokalen Speicher: 6.4 GB/s (3.2 GB/s pro CPU)
(Der folgende Text und die Grafiken wurden teilweise aus der Dokumentation des RRZE übernommen)
Das ALTIX System ist modular aufgebaut; es wird über Bricks
(19 Zoll Einschübe) zusammengestellt.
Die Prozessoren und die Level 0 Router befinden sich im CR-Brick; dazu kommen bei der LRZ-Maschine noch 4 R-Bricks
(Level 1 Router), 1 IX-Brick ( Systemplatten, Netzwerkverbindungen) und ein PCIX-Brick (PCI-X Adpapter für den Anschluss des
lokalen RAID Plattensystems
Die 64-Bit Itanium2 "Madison" Prozessoren der ALTIX sind 6-fach instruktionsparallele in-order CPUs und arbeiten nach dem EPIC-Konzept. EPIC (für "Explicitly Parallel Instruction Computing") bedeutet, dass die CPU alle Maschinenbefehle in Form von Dreiergruppen ("Bundles") verarbeitet. Zu jedem Bundle gehört ein Template-Feld, das angibt, von welchem Typ die Instruktionen sind und wo Barrieren für die parallele Ausführung zu setzen sind. Die CPU liest pro Takt zwei solcher Bundles aus dem L1-Instruktionscache. Damit ergibt sich eine maximale Ausführungsrate von 6 Befehlen pro Takt. Innerhalb eines Bundles gibt es einige Einschränkungen (" Dispersionsmatrix" bezüglich der erlaubten Befehlskombinationen; z.B. sind maximal zwei Fließkomma-Instruktionen bzw. zwei Speicher-Instruktionen (Load/Store) erlaubt. Da ein FMA-Befehl (Fused Multiply-Add) zwei Flops ausführt, ergibt sich eine Peak Performance von 4 Flops pro Takt. Ebenso können pro Takt bis zu 4 Load- bzw. 2 Load- und 2 Store-Operationen abgesetzt werden, was im Cache zu einer maximalen Bandbreite von 4 doppeltgenauen Worten pro Takt bzw. einem Wort pro Flop führt.
Für Fließkomma-Daten wird der 16 kByte große L1-Cache umgangen und stets der 256 kByte große L2-Cache konsultiert, der im Write-Back Verfahren arbeitet. Daneben gibt es noch einen 6 MByte großen L3 Cache (ebenfalls Write-Back) mit im Prinzip gleicher Bandbreite aber schlechterer Latenz. Alle Caches sind on-Chip.
Der Speicherbus kann 6.4 GByte/s (halbduplex) oder - bei 1.6 GHz CPU-Frequenz - 0.20 Worte (8 Byte) pro Flop transferieren; je zwei Prozessoren teilen sich die Busbandbreite. Zu beachten ist, dass aufgrund des Write-Back-Verfahrens ein Store auf eine Speicherstelle, die noch nicht im Cache liegt, zunächst einen Load auf die gesamte zugehörige Cachezeile bewirkt. Dies kann bei Store-dominierten Codes eine deutliche Reduktion der effektiven Bandbreite (beim Zugriff auf den L3 Cache oder das Memory) zur Folge haben. Diesen Nachteil teilt aber der Itanium2 Prozessor mit fast allen aktuellen Architekturen.
Weitere Informationen zur Prozessor-Architektur und verwandten Themen wie Optimierung finden sich auf den Intel-Webseiten:
Ein Node oder "SC-Brick" besteht aus acht CPUs in vier Paaren. Jedes Paar hat jeweils einen gemeinsamen Weg zum lokalen Speicher. Das ganze System ist aus sechzehn solcher SC-Bricks aufgebaut und durch NUMALink4-Verbindungen über vier Router verkoppelt (Abb. 2). Bei einem Memory-Zugriff über das Netzwerk erhöht sich für jeden Router-"Hop" entsprechend die Latenz.
Damit ergibt sich für das Gesamtsystem eine Speicherhierarchie mit drei Ebenen:
Schematischer Aufbau eines
Rechennodes (SC-Brick) mit lokalem Speicher und SHUB |
|
Blockdiagramm der SGI Altix | |
Aufbau der Altix . Alle Verbindungen zu und zwischen den Routern sind NUMALink4-Interconnects |