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