UltraSPARC-III - All

Transcrição

UltraSPARC-III - All
BAUELEMENTE
Titelstory
64-bit-Mikroprozessor für das nächste Jahrtausend
UltraSPARC-III
BILL LYNCH
Die dritte Generation seiner UltraSPARC-Prozessorfamilie stellt Sun Microsystems, Microelectronics, mit dem UltraSPARC-III vor. Dabei handelt es sich
um einen superskalaren Mikroprozessor, bei dem die 64-bit-SPARC-V9 RISCArchitektur von Sun implementiert wurde. Der Prozessor unterstützt einen 64
bit großen virtuellen und einen 43 bit großen physikalischen Adreßbereich.
Beim UltraSPARC-III (Bild 1) wurde der CoreBefehlssatz um Grafik-Instruktionen erweitert,
die dem Anwender die am häufigsten verwendeten Operationen bei der Verarbeitung von
zweidimensionalen Bildern, zwei/drei-dimensionalen Grafik- und Image-Algorithmen sowie
parallele Operationen an Pixel-Daten mit 8- und
16-bit-Komponenten zur Verfügung stellen.
Im Rahmen seiner Roadmap für die UltraSPARC-Familie kennzeichnet Sun mit den „ungeraden“ Bezeichnungen – UltraSPARC-I und
lierbarkeit von 1000 oder mehr Prozessoren
(dies ist fünfzehn Mal mehr als beim UltraSPARC-II bei seiner Einführung erzielt werden konnte) eine wichtige Rolle spielt.
컄 Daß bei einer angestrebten Taktfrequenz
von 600 MHz Interconnects in Form von Leitungsverzögerungen die Zykluszeit deutlich
begrenzen – über das zweifache des UltraSPARC-II bei seiner Einführung und immer
noch 50% schneller als die neueste Version.
System
Interconnect
DRAM`s
System
Interface
Pre-Fetch
Cache
Memory
Control
Data Cache
Data MMU
Integer Execute
L2 Cache
Control
Instruction
Cache
Decode
Instruction
MMU
Integer Execute
FP/Graphics Add
FP/Graphics Multiply
Special
Branch
Write Cache
SRAM`s
L2 Tags
Register File
Bild 1: Blockschaltung des UltraSPARC-III Mikroprozessors
UltraSPARC-III – wesentliche Entwicklungen
und Verbesserungen an der Pipeline dieser
Prozessoren, während bei den Typen mit „geraden“ Bezeichnungen – UltraSPARC-II und
UltraSPARC-IV – Prozeß-Verbesserungen vorgenommen werden. Bei der Entwicklung des
UltraSPARC-III standen zwei primäre Überlegungen im Vordergrund.
컄
Die Erkenntnis, daß das Memory SubSystem zur Erzielung der angestrebten Ska-
28
Darüber hinaus basiert die Design-Philosophie
des UltraSPARC-III auf der Annahme, daß sich
die Ausführungszeit einer Applikation aus drei
Faktoren ergibt. Dies sind die Anzahl der vom
Compiler erzeugten Instruktionen, die durchschnittliche Anzahl der Zyklen, die pro Befehl
benötigt werden, und die Zykluszeit des Prozessors. Die Architektur und Implementierung
des UltraSPARC-III hat in Kombination mit
neuen Compiler-Techniken ermöglicht, daß
jedes dieser Elemente ohne Beeinträchtigung
http://www.elektronik-industrie.de
Der
UltraSPARCIII enthält
folgende Komponenten:
컄
Instruction Issue Unit (IIU); holt Instruktionen und leitet diese weiter
in die Execution Pipelines (Dispatch).
컄 Integer Execution Unit (IEU); führt
alle Integer Arithmetic, logischen
und Shift Instruktionen aus.
컄 Data Cache Unit (DCU); ist für
Sourcing und Sinking von Daten
für Load- und Store-Befehle zuständig.
컄 Floating Point und Graphics Unit
(FGU); die Floating Point Graphics
Unit bietet fünf Pipelines zum
Ausführen aller Floating Point Befehle und der meisten VIS GrafikInstruktionen. Eine Mischung aus
zwei Floating Point oder VIS Operationen können zu jedem Zyklus
gestartet werden. Die meisten
Floating Point Instruktionen sind
in vier Zyklen abgeschlossen (Ausnahme: Div & Sqrt).
컄 External Cache Unit (ECU); steuert
der Betrieb des externen Cacheund externen DRAM Memories.
컄 Memory Control Unit (MCU);
steuert der Betrieb des externen
DRAM Memory. Enthält den DRAMController, der bis zu 8 Gbit SDRAM
in vier Bänken unterstützt.
컄 System Interface Unit (SIU); steuert die externen System-Schnittstellen.
des jeweils anderen Elementes verbessert werden konnte.
Daraus resultierte eine Vielzahl von DesignZielen. Ganz oben auf der Wunschliste stand
das Ziel, dem Anwender höchstmögliche Speicher- und System-Bandbreiten bereitstellen zu
können. Die vollständige Kompatibilität zur
SPARC V9 Architektur sowie zum Betriebssystem Solaris wurden zusammen mit der Fähigkeit, die in der Branche führende Skalierbarkeit der Performance auf der Grundlage von
künftigen Prozeß-Technologien bereitstellen
zu können, implementiert.
䊳
elektronik industrie 9 – 1999
BAUELEMENTE
Titelstory
A
A
P
Fetch
I$
Address Pre Fetch
Integer
Execute
Integer
Execute
A
E
Floating
Point
and
Graphics
A
F
Front
End
B
I$
Fetch
Branch
Target
M
W
I
J
R
Instruction
Juxta
position
Queue
Register
File read
X
D$
Memory
RF Write Extend
Access Result
Fr
Fe1
Fe2
Fe3
Fe4
RF Read
Exec 1
Exec 2
Exec 3
Exec 4
T
D
Trap
Done
Bild 2: Pipeline-Struktur des UltraSPARC-III.
Instruction
Queue
Inst. TLP
32 KB
Inst Cache
Miss Queue
Branch Predictor
Return Address
Stack
tung der Befehle. Für
eine erweiterte Parallelität können die Befehle außerhalb der Reihenfolge (Out-of-Order) ausgeführt werden. Um die Anzahl
der Befehle, die pro
Zyklus
abgearbeitet
werden, zu steigern,
können Instruktionen
aus zwei Basis-Blöcken
in der gleichen Gruppe
ausgestellt werden.
4
Bild 3: Instruction Fetch.
Struktur und Eigenschaften
der Pipeline
Die Prozessorleistung wird wesentlich von der
Struktur und den Eigenschaften der Pipeline
bestimmt. Für den UltraSPARC-III sind Werte
von 35 SPECint95 und mehr und über 60
SPECfp95 bei 600 MHz spezifiziert.
Da bei einer langen Pipeline vermieden wird,
daß zuviel in einen Zyklus “gepackt” wird, verkürzt sich die Zykluszeit. Aus diesem Grund ist
der UltraSPARC-III mit einer 14-stufigen NonStalling Pipeline ausgestattet; im Vergleich
dazu verfügt der UltraSPARC-II lediglich über
eine neunstufige Pipeline.
Beim UltraSPARC-III können Befehle und Daten asynchron in die Pipeline gebracht werden;
aus diesem Grund kann der Prozessor im Dauerbetrieb bis zu vier Instruktionen ausführen.
Dies gilt selbst bei bedingten Verzweigungen
(Conditional Branches) und Cache Misses.
Die Reihenfolge, in der Instruktionen ausgeführt werden, liegt fest; mehrere Funktionseinheiten ermöglichen eine parallele Verarbei-
30
C
Speicher
Der UltraSPARC-III ist
mit einem großen, Low
Latency, Multi-Set L1
Daten-Cache ausgestattet; dieser bietet im Vergleich zu den drei Zyklen an Load und Latenz
von Mitbewerbern nur
zwei Load- und LatenzZyklen. Durch ein schnelleres „Load Back“ konnte die Performance wesentlich verbessert werden; dies ist auf die Möglichkeit, Daten im dritten Zyklus zu verwenden,
zurückzuführen.
Durch die Integration
eines
umfassenden
Hardware/Software PreFetch Support, einer
Technik, mit der sich bei
http://www.elektronik-industrie.de
einem Speicher die gesamte Bandbreite erzielen läßt, reduziert sich die effektive SpeicherLatenz. Die Pipeline ist außerdem mit integrierten System- und Memory-Schnittstellen ausgerüstet und ist Code- bzw. Software-kompatibel
zu den Prozessoren UltraSPARC-I/II (Bild 2).
In der Stufe A der Pipeline wird die Adresse des
nächsten Befehls berechnet. Bis zu vier Befehle
können gleichzeitig auf sechs beliebigen Pipes
ausgestellt werden. Die Stufen P und F ermöglichen den Zugriff auf den Pipelined Instruction
Cache (One und Two Cycle). Dabei handelt es
sich um einen 32 kbit großen 4-Wege-Assoziativ-Befehlscache mit virtuellen Adress Microtags und 32 Byte Line Size (zwei bit pro Entry),
die jeweils vier Instruktionen in einer 32 Byte
großen Zeile holen können.
Die Stufe B der Pipeline ist für Branch Target
Finding konzipiert und beinhaltet einen 16 k
Entry History-Based Branch Predictor; dieser
beinhaltet einen modifizierten gshare mit 12
globalen History Bit und 14 Branch PC Bit
(zwei Bit pro Entry). Für einen Branch Mispredict sind maximal sieben Zyklen vorgesehen,
obwohl durchschnittlich drei Zyklen erforderlich sind.
Die Stufe I beinhaltet eine 20 Entry Instruction
Queue und entkoppelt die Maschine. Diese
Entkopplung ist wichtig für die Zyklus-Zeit.
Falls ein Befehl aus Ressource-Gründen in J
nicht ausgestellt werden kann (z.B. weil zwei
Instruktionen die gleiche Pipe nutzen möchten), oder ein Operand fehlt (z.B. wenn ein
Befehl ein Ergebnis fordert, welches noch
nicht zur Verfügung steht), arbeitet der vordere Teil der Pipeline (Stufen I und davorliegende) weiter und kommt ohne ein (langsames) globales Stall-Signal aus.
Über die Stufe J gelangen Instruktionen in die
RM
E
branch/
cond. move
1024
WRF
restore
ARF
+
4
32
Reg.
8
Win.
2
Memory
ASU
Bild 4: Integer Execute.
elektronik industrie 9 – 1999
Pipeline; die Stufe R enthält ein Dependency
Check/Register File Read. Auch der Instruction
Fetch beinhaltet einen Eight Jump Target/
Return Adreß-Stack und eine Four Entry Miss
Queue Funktion; der Instruction Fetch (Bild 3)
verhindert einen Fall-Through Pfad von falsch
vorhergesagten Verzweigungen. Im Anschluß
an die Stufe R ist die Pipeline Non-Stalling.
Die Integer Execute Einheit (Bild 4) des UltraSPARC-III beinhaltet einen Four Integer Issue,
eine arithmetische Spezial-Einheit, Pipelined
Predicated Execution sowie ein sieben Read,
drei Write Port Register File.
Obwohl der UltraSPARC-III im allgemeinen mit
einer Two Cycle Load Latenz arbeitet, die zum
Laden von Daten nur 3,3 ns benötigt, erfordern einige Loads wie etwa die, die Sign
Extension, Sub-Word Alignment oder RAW
Bypassing voraussetzen, drei Zyklen. Diese
werden in der Stufe M abgeschlossen.
Memory-Subsystem
Das Memory-Subsystem besteht aus vier
Caches; dies sind der 64 kbit große DatenCache L1 (Four-Way Associative), ein 2 kbit grosser Prefetch-Cache und ein 2 kbit großer Write
Cache. Darüber hinaus stehen ein 1 bis 8 MBit
großer Direct-Mapped Cache (L2) und ein
externer Cache sowie eine „RAW Forwarding
Store Queue“ (Eight Entry) und ein On-Chip
Memory Controller zur Verfügung (Bild 5).
Beim Daten-Cache handelt es sich um einen
64 kbit großen (Four-Way Associative) Virtually
Indexed, Physically Tagged (VIPT) Cache. Der
Daten-Cache des UltraSPARC-III unterscheidet
sich in der Größe sowie in der Organisation
vom Daten-Cache des UltraSPARC-I/II und
setzt damit Änderungen in den Algorithmen
voraus, die zum Entleeren des Cache benötigt
werden. Die virtuellen „Indexed Caches“ müssen
entleert werden, sobald ein virtueller AdreßAlias erzeugt wird. Die Caches, die modifizierte Daten enthalten, müssen aus Gründen
der sicheren Speicherung entleert werden.
Darüber hinaus nutzen die Data Cache Microtags „Partial Virtual Tag Compare“ zur schnellen Selektion und ermöglichen Vier-WegeAssoziativität ohne Beeinträchtigung der Zugriffszeit. Low Latency Loads sind wichtig für
eine gute Performance, da abhängige Instruktionen solange warten, bis Load Daten zur
Verfügung stehen. Selbst bei 600 MHz stehen
beim UltraSPARC-III Daten meist nach nur zwei
(schnellen) Zyklen zur Verfügung; damit ist die
Kompatibilität zu der zwei Zyklen langen
Latenz des UltraSPARC-II sichergestellt.
Der Pre-Fetch Cache wird für Software PreFetch Instruktionen sowie für einen autonomen Hardware Pre-Fetch aus dem externen
Cache benutzt. Er bietet eine sehr hohe Bandbreite ohne „Contention“ – zwei Loads und ein
Fill/Cycle, True 3-Ported, Not Banked; dies ist
ideal für Grafik- und Floating Point Vektor Codes.
elektronik industrie 9 – 1999
䊳
http://www.elektronik-industrie.de
31
BAUELEMENTE
Titelstory
Cache
Latency
Bandwidth
L1 Data
2 cycles
9.6 GB/s
L1 Prefetch
3 cycles
18.4 GB/s
L1 Write
1 cycles
13.6 GB/s
L2 External
6.4 GB/s
off-chip
L1 Data Cache
64
64
64
256
Prefetch
Cache
L2
Cache
Write
Cache
STORE QUEUE
Bild 5: Memory Subsystem.
Zusätzliche Instruktionen,
Erweiterungen und Änderungen
Beim UltraSPARC-III wurde die proprietäre
SPARC-V9 Instruction Set Architecture (ISA)
von Sun um grafische Erweiterungen, die im
Visual Instruction Set (VIS) definiert sind, ergänzt. Zu den Erweiterungen gehören:
컄
컄
컄
Verbesserungen der VIS-Befehle.
Ein zusätzlicher Pre-Fetch Befehl.
Verbesserungen für schnellere arithmetische
Berechnungen.
Im Vergleich zum UltraSPARC-I/II sind beim
UltraSPARC-III mehrere Änderungen des Befehlssatzes implementiert. So arbeitet der Prozessor zum Beispiel zur Erzielung der Energy
Star Compliance nach einem anderen Prinzip.
Da beim UltraSPARC-III die Konsistenz zwischen dem Instruktions-Cache und allen Store
und Atomic Instructions beibehalten wird,
wird der Flush-Befehl lediglich zum Entleeren
der Pipeline herangezogen. Im Gegensatz zum
UltraSPARC-I/II wird die Flush-Adresse beim
UltraSPARC-III ignoriert.
Beim UltraSPARC-III reicht ein einziger FlushBefehl am Ende einer Speichersequenz aus,
um die Pipeline zu synchronisieren.
32
Multiprozessor-Skalierbarkeit
Der Schlüssel zu der Multiprozessor-Performance ist bei der Reduzierung der Latenz des
Shared Memory im Vergleich zu anderen 64bit-Prozessoren zu finden. Bei vier Prozessoren
entsteht praktisch keine Latenz, während bei
Systemen mit 32 Prozessoren eine nur sehr
geringe Latenz zu verzeichnen ist. Sobald die
Anzahl an UltraSPARC-III Prozessoren die Zahl
von 64 übersteigt und sich der Zahl 1000
nähert, steigt die Latenz proportional zu der
Anzahl an Prozessoren. Ferner reduzieren
Cache-to-Cache Transfers die Latenz.
Die Snoopy Bus Architektur von Sun läßt jede
UltraSPARC Einheit in einem Multiprozessorsystem jeden Memory Request von jedem anderen Prozessor des Systems „sehen“. Als Ergebnis davon wird kein anderer UltraSPARC-Prozessor versuchen, auf den Teil eines Speichers
zuzugreifen, der von einem anderen Prozessor
des Systems bereits beansprucht wurde. Damit
wird mindestens ein Zyklus eingespart.
(oe)
451
Bill Lynch ,Sun Microsystems, Microelectronics
elektronik industrie 9 – 1999