-
Einige
konventionelle Computer implementieren einen einzelnen Pipeline-artigen
Prozessor, der Computerprogramm-Anweisungen monolitisch der Reihe
nach ausführt.
Um die Leistung der Parallelverarbeitung auf Anweisungsebene – in der
Technik auch als ILP (Instruction Level Parallelism) bekannt – zu maximieren, könnte ein
derartiger Prozessor aggressive Optimimierungen im Kompilierer einsetzen.
Andere Möglichkeiten zur
Verbesserung der Leistung von Prozessoren könnten das Implementieren von
Außer-der-Reihe-Pipeline-Prozessoren beinhalten,
die Anweisungen nicht der Reihe nach ausführen. Solche Implementierungen könnten jedoch
Nachteile infolge erhöhter
Komplexitäten
sowohl in der Hardware als auch in der Software aufweisen. Eine
weitere Möglichkeit
ist, Prozessoren zu konstruieren, die mit höheren Frequenzen arbeiten,
dies kann jedoch einen nachteiligen Anstieg in der Latenz für den Zugriff
auf Cache/Speicher verursachen und/oder die Verarbeitungseffizienz
reduzieren, was zum Beispiel nach Anweisungen pro Zyklus (IPC – Instructions
per Cycle) gemessen werden könnte.
-
In
letzter Zeit wurden Untersuchungen durchgeführt, die sich auf das Clustering
von Prozessor-Ressourcen beziehen, um komplexitätseffiziente Mikroarchitekturen
zu konstruieren. Gemäß einer
Untersuchung wurde vorgeschlagen, anstatt einer monolithischen Pipeline
mehrere Clusters zu benutzen, wobei jedes Cluster eine geringere
Komplexität
als eine einzige monolithische Pipeline aufweisen konnte. Gemäß dieser
Recherche könnten
während
der Ausführung
Computerprogramm-Anweisungen an verschiedene Clusters gesendet werden
mit dem Ziel, die Zwischen-Cluster-Kommunikation zu minimieren,
um Latenz zu reduzieren. Gemäß einer
anderen Untersuchung wurde vorgeschlagen, eine auf Abhängigkeitsketten
beruhende Ausführung,
die Zwischen-Anweisungs-Abhängigkeitsbeziehungen
verwendet, einzusetzen, um die Komplexität des Prozessordesigns zu vereinfachen.
-
KURZBESCHREIBUNG
DER ZEICHNUNGEN
-
Die
folgende Beschreibung der erfindungsgemäßen Ausführungsformen vermittelt ein
besseres Verständnis
und eine bessere Würdigung
der Erfindung, die in Verbindung mit den beigefügten Zeichnungen zu lesen ist,
von denen
-
1 ein
Blockdiagramm einer Vorrichtung darstellt, die fähig ist, gemäß einiger
beispielhafter erfindungsgemäßer Ausführungsformen
Quellenanweisungen in Zielanweisungen zu kompilieren und die Zielanweisungen
unter Einsatz eines geclusterten Abhängigkeitsketten-Prozessors (DCP – Dependency
Chain Processor) auszuführen;
-
2 ein
Blockdiagramm eines geclusterten DCPs darstellt, der gemäß einiger
beispielhafter erfindungsgemäßer Ausführungsformen
so konfiguriert ist, daß er
drei Pipeline-Clusters der Größen 3-breit,
2-breit bzw. 1-breit aufweist.
-
3 ein
schematisches Ablaufdiagramm eines Verfahrens zum Konstruieren von
Abhängigkeitsketten
(DC) Spuren zur Verwendung in Verbindung mit einem geclusterten
DCP gemäß einiger
beispielhafter erfindungsgemäßer Ausführungsformen
ist;
-
4 eine
Konzeptdarstellung von drei Abhängigkeitsketten
in einer DC-Spur gemäß einiger
beispielhafter erfindungsgemäßer Ausführungsformen
ist;
-
5 ein
schematisches Ablaufdiagramm eines Verfahrens zur Analyse von Abhängigkeitsketten
und zur Konstruktion von Cluster-Ausgabebreiten gemäß einiger
beispielhafter erfindungsgemäßer Ausführungsformen
ist;
-
6 eine
Konzeptdarstellung zum Teilen einer Abhängigkeitskette in einen Satz
von Abhängigkeitsketten
mit reduzierter Breite gemäß einiger
beispielhafter erfindungsgemäßer Aus-führungsformen ist;
-
7 ein
schematisches Ablaufdiagramm eines Verfahrens zur Optimierung von
Abhängigkeitsketten gemäß einiger
beispielhafter erfindungsgemäßer Ausführungsformen
ist;
-
8 ein
schematisches Ablaufdiagramm eines Verfahrens zur Abbildung von
Abhängigkeitsketten auf
Clusters gemäß einiger
beispielhafter erfindungsgemäßer Ausführungsformen
ist;
-
9 eine
schematische Darstellung einer Grafik ist, die den kumulativen prozentualen
Anteil von Programmanweisungen zeigt, die durch Spuren ausgeführt wurden,
die mit Hilfe eines verbesserten „Whole Program Path (WPP)" Ansatzes erfaßt wurden;
-
10 eine
schematische Darstellung einer Grafik ist, die die Durchschnittsanzahl
von Anweisungen in einer Spur zeigt, die mit Hilfe eines verbesserten
WPP-Ansatzes gebildet wurden;
-
11 eine
schematische Darstellung einer Grafik ist, die den durchschnittlichen
prozentualen Anteil von Programmanweisungen zeigt, die auf die sieben
dominantesten DCs in einer Spur verteilt wurden;
-
12 eine
schematische Darstellung einer Grafik ist, die den prozentualen
Anteil von Spuren zeigt, die auf die DC-Breiten der sieben dominantesten
DCs verteilt wurden;
-
13 eine
schematische Darstellung einer Grafik ist, die den prozentualen
Anteil von Spuren zeigt, die auf die kritischen Pfadlängen der
sieben dominantesten DCs verteilt wurden;
-
14 eine
schematische Darstellung einer Grafik ist, die die DC-Breitenverteilung
der ersten dominanten DCs der zwanzig am häufigsten ausgeführten Spuren
vor dem Anlegen eines DC-Optimierungsalgorithmus gemäß erfindungsgemäßen Ausführungsformen
zeigt;
-
15 eine
schematische Darstellung einer Grafik ist, die die DC-Breitenverteilung
der ersten dominanten DCs der zwanzig am häufigsten ausgeführten Spuren
von 14 zeigt, nachdem ein DC-Optimierungsalgorithmus
gemäß erfindungsgemäßen Ausführungsformen
angelegt wurde;
-
16 eine
schematische Darstellung einer Grafik ist, die eine Größenreduktion
nach Anzahl der Anweisungen in den dominanten DCs nach Anlegen eines
DC-Optimierungsalgorithmus
gemäß erfindungsgemäßen Ausführungsformen
demonstriert;
-
17 eine
schematische Darstellung einer Grafik ist, die die Anweisungen pro
Zyklus (IPC) einer DCP-Mikroarchitektur gemäß erfindungsgemäßen Ausführungsformen,
verglichen mit den IPCs von konventionellen folgerichtigen und nicht-folgerichtigen
Prozessoren zeigt;
-
18 eine
schematische Darstellung einer Grafik ist, die den Leistungsvergleich
gemessen nach IPC zwischen einer heterogenen DCP-Mikroarchitektur
und einer homogenen DCP-Mikroarchitektur gemäß erfindungsgemäßen Ausführungsformen
zeigt; und
-
19 eine
schematische Darstellung einer Grafik ist, die den prozentualen
Anteil der in einem DC-Modus ausgeführten dynamischen Anzahl von
Anweisungen von Gesamtprogrammanweisungen, und den prozentualen
Anteil der dynamischen Anzahl von duplizierten Anweisungen zeigt.
-
AUSFÜHRLICHE
BESCHREIBUNG VON AUSFÜHRUNGSFORMEN
DER ERFINDUNG
-
In
der folgenden ausführlichen
Beschreibung sind zahlreiche spezifischen Details angegeben, um
ein gründliches
Verständnis
der erfindungsgemäßen Ausführungsformen
zu vermitteln. Ein in der Technik bewanderter Fachmann wird jedoch
wissen, daß die
Erfindung auch ohne diese spezifischen Details praktiziert werden
kann. In anderen Fällen
wurden gut bekannte Verfahren und Vorgehensweisen nicht im Detail
beschrieben, um die erfindungsgemäßen Ausführungsformen nicht zu verschleiern.
-
Einige
Abschnitte der folgenden ausführlichen
Beschreibung sind in Form von Algorithmen und symbolischen Darstellungen
der Operationen auf Datenbits oder binären digitalen Signalen innerhalb
eines Computerspeichers dargestellt. Diese algorithmischen Beschreibungen
und Darstellungen könnten
die Techniken sein, die von Fachleuten in Datenverarbeitungstechniken
verwendet werden, um anderen Fachleuten das Wesentliche ihrer Arbeit
zu vermitteln.
-
Ein
Algorithmus wird hier, und allgemein, als eine in sich widerspruchsfreie
Folge von Handlungen oder Operationen betrachtet, die zu einem gewünschten
Ergebnis führen.
Hierzu gehören
physikalische Manipulationen physikalischer Größen. Gewöhnlich, aber nicht unbedingt,
sind diese Größen in Form
von elektrischen oder magnetischen Signalen ausgedrückt, die
gespeichert, übertragen,
kombiniert, verglichen und auf sonstige Weise manipuliert werden können. Manchmal
hat sich als zweckmäßig herausgestellt,
hauptsächlich, weil
es allgemein üblich
ist, die Signale als Bits, Werte, Elemente, Symbole, Zeichen, Ausdrücke, Zahlen
oder dergleichen zu bezeichnen. Es versteht sich jedoch, daß alle diese
und ähnliche
Begriffe mit den entsprechenden physikalischen Größen zu verknüpfen sind
und lediglich zweckmäßige Bezeichnungen
für diese
Größen sind.
-
Soweit
nicht spezifisch in anderer Form angegeben, versteht es sich, wie
aus den folgenden Diskussionen ersichtlich ist, daß in der
ganzen Beschreibung Diskussionen, die Ausdrücke wie „Verarbeiten", „Rechnen", „Berechnen", „Bestimmen" oder dergleichen
verwenden, auf die Handlung und/oder die Prozesse eines Computers
oder Rechensystems oder ähnlicher
elektronischer Rechengeräte
bezogen sind, die Daten, die als physikalische, wie zum Beispiel
elektronische Größen, innerhalb
der Register und/oder der Speicher des Rechensystems dargestellt
sind, manipulieren und/oder in andere Daten umwandeln, die ebenfalls
als physikalische Größen innerhalb
der Speicher, Register oder anderer derartiger Informationsspeicher-, Übertragungs- oder
Anzeigegeräte
des Rechensystems dargestellt sind.
-
Einige
erfindungsgemäßen Ausführungsformen
könnten
zum Beispiel unter Einsatz eines maschinenlesbaren Medium oder Gegenstands
implementiert sein, welcher eine Anweisung oder einen Satz von Anweisungen
speichern könnte,
der, wenn von einer Maschine ausgeführt, bewirkt, daß die Maschine
ein Verfahren und/oder Operationen gemäß Ausführungsformen der Erfindung
durchführt.
Eine derartige Maschine könnte zum
Beispiel jede geeignete Verarbeitungsplattform, jedes geeignete
Rechengerät,
Verarbeitungsgerät,
Rechensystem, Verarbeitungssystem, Computer, Prozessor oder dergleichen
sein und könnte
mit jeder geeigneten Kombination von Hardware und/oder Software
implementiert sein. Das maschinenlesbare Medium bzw. der Gegenstand
könnte
zum Beispiel sein: jeder geeignete Typ von Arbeitsspeicher-Einheit,
Arbeitsspeicher-Gerät,
Arbeitsspeicher-Gegenstand, Arbeitsspeicher-Medium, Speichergerät, Speichergegenstand, Speichermedium
und/oder Speichereinheit, zum Beispiel Arbeitsspeicher, entfernbare
oder nicht entfernbare Medien, löschbare
oder nicht löschbare
Medien, beschreibbare oder wieder beschreibbare Medien, digitale oder
analoge Medien, Festplatte, Diskette, CD-ROM (Compact Disk Read Only Arbeitsspeicher),
CD-R (Compact Disk Recordable), CD-RW (Compact Disk Rewriteable),
optische Platte, magnetische Medien, verschiedene Typen von DVD
(Digital Versalile Disk), ein Magnetband, eine Kassette oder dergleichen.
Die Anweisungen könnten
jeden geeigneten Typ von Code, zum Beispiel Quellencode, kompilierten
Code, interpretierten Code, ausführbaren
Code, statischen Code, dynamischen Code oder dergleichen beinhalten
und könnten
implementiert werden mit jeder geeigneten höheren, niedrigeren, objektorientierten,
visuellen, kompilierten und/oder interpretierten Programmiersprache,
zum Beispiel C, C++, Java, BASIC, Pascal, Fortran, Cobol, Assemblersprache,
Maschinencode oder dergleichen.
-
Erfindungsgemäße Ausführungsformen
könnten
Vorrichtungen zum Durchführen
der hier beschriebenen Operationen sein. Diese Vorrichtung könnte speziell
für die
gewünschten
Zwecke konstruiert sein oder sie könnte einen Allgemeinzweck-Computer
enthalten, der selektiv von einem im Computer gespeicherten Computerprogramm
aktiviert oder rekonfiguriert wird. Ein derartiges Computerprogramm
könnte
in einem computerlesbaren Speichermedium gespeichert sein, wie zum
Beispiel, aber nicht beschränkt
auf, jede Art von Disk, einschließlich Disketten, optischen
Platten, CD-ROMS, magneto-optischen Platten, ROMs (Read-Only Memories),
RAMs (Random Access Memories), EPROMs (elektrisch programmierbare
Read-Only Memories),
magnetische oder optische Karten, oder jede andere Typ von Medium,
der geeignet ist zum Speichern von elektronischen Anweisungen und
fähig ist,
an einen Computersystembus gekoppelt zu werden.
-
Die
hier dargestellten Prozesse und Anzeigen sind nicht von sich aus
auf irgendeinen bestimmten Computer oder eine andere Vorrichtung
bezogen. Verschiedene Allgemeinzwecksysteme können in Verbindung mit Programmen
gemäß den hier
enthaltenen Lehren eingesetzt werden, oder es könnte zweckmäßig sein eine mehr spezialisierte
Vorrichtung zu konstruieren, mit der das gewünschte Verfahren ausgeführt werden
kann. Die gewünschte
Struktur für
eine Vielfalt dieser Systeme ergibt sich aus der folgenden Beschreibung.
Ausführungsformen
der Erfindung sind zudem nicht mit Bezug auf eine bestimmte Programmiersprache beschrieben.
Es versteht sich, daß eine
Vielfalt von Programmiersprachen zur Implementierung der Lehren
der hier beschriebenen Erfindung verwendet werden kann.
-
In
der folgenden Beschreibung stellen verschiedene Figuren, Diagramme,
Ablaufdiagramme, Modelle und Beschreibungen verschiedene Mittel
dar, um die wesentlichen Punkte wirksam herauszustellen und verschiedene
in dieser Anmeldung vorgeschlagenen Ausführungsformen der Erfindung
zu veranschaulichen. Ein Fachmann wird erkennen, daß diese
lediglich als Beispiele gedacht sind und nicht als die Erfindung
einschränkend
zu verstehen sind.
-
1 ist
ein Blockdiagramm, welches eine Vorrichtung 2, zum Beispiel
eine Computerplattform darstellt, die einen Speicher 6 umfaßt, der
gemäß beispielhafter
erfindungsgemäßer Ausführungsformen
betrieblich mit einem geclusterten Abhängigkeitsketten-Prozessor 12 (DCP)
verbunden ist. Der Speicher 6 ist fähig, mindestens einen Quellenanweisungssatz 8,
zum Beispiel einen Quellencode, und einen Zielanweisungssatz 10,
zum Beispiel einen für
DCP 12 geeigneten binären
ausführbaren
Code, zu speichern. Die Vorrichtung 2 könnte ferner einen Kompilierer 11 umfassen,
der entsprechend beispielhafter erfindungsgemäßer Ausführungsformen, wie im Detail
unten beschrieben, einen Optimierungs-algorithmus 30 und
einen Abbildungsalgorithmus 32 umfaßt. Der Quellenanweisungssatz 8 könnte zum
Beispiel vom Kompilierer 11 in den Zielanweisungssatz 10 kompiliert
werden, wobei der Kompilierer zum Beispiel einen dynamischen Umsetzer,
ein binäres Instrumentationswerkzeug,
mit entweder Online- oder Offline-Kompilierung beinhalten könnte. Der
Zielanweisungssatz 10 könnte
Spuren beinhalten, die mit Abhängigkeitskettenspuren
(„DC-Spuren") bezeichnet werden könnten, die
gemäß der Mikroarchitektur
von DCP 12 konstruiert werden könnten. Die in DCP 12 benutzten DC-Spuren
könnten
relativ lange Spuren sein, zum Beispiel mit hunderten von Anweisungen.
Derart lange Spuren, die mit Hilfe von Offline-Kompilierungsverfahren,
wie an späterer
Stelle ausführlich
beschrieben, konstruiert werden könnten, sind signifikant länger als
Spuren, die von herkömmlichen
Spur-Prozessoren verwendet werden. Konventionelle Spur-Prozessoren
benutzen Hardware zur Konstruktion von Spuren während der Ausführung, und
aufgrund eines begrenzten Anweisungsfensters in der Hardware ist
die Länge
der so konstruierten Spuren allgemein kurz, zum Beispiel 16 bis
32 Anweisungen pro Spur. Lange Spuren könnten die Parallelverarbeitung
auf Anweisungsebene (ILP) durch aggressive Spur-Planung verbessern,
gemäß erfindungsgemäßer Ausführungsformen.
-
Eine
DC-Spur könnte
eine oder mehrere Abhängigkeitsketten
(DC) enthalten. Wie in der Technik bekannt, ist eine Abhängigkeitskette
(DC) eine maximal verbundene Komponente in der grafischen Datenabhängigkeits-Darstellung
in einer DC-Spur. Gemäß erfindungsgemäßer Ausführungsformen
könnten
DCs im Innern der DC-Spuren des Zielanweisungssatzes 10 einem
Optimierungsalgorithmus 30 unterzogen werden, um einen
Satz von DCs mit reduzierter Breite zu erzeugen. Die optimierten
DCs könnten
auf der Basis eines Abbildungsalgorithmus 32 auf einen
Satz von Clustern im DCP 12, zum Beispiel Cluster 14, 16 und 18,
abgebildet werden.
-
Gemäß beispielhafter
erfindungsgemäßer Ausführungsformen
könnte
DCP 12 geclusterte Prozessoren aufweisen, die gemäß eines
gewünschten
spur-basierten Ausführungsmodells konstruiert
sind. Die Clusters im DCP, zum Beispiel Clusters 14, 16 oder 18,
könnten
superskalare folgerichtige oder nicht folgerichtige Pipelines sein
und könnten
verschiedene Ausgabebreiten aufweisen, um einen heterogenen DCP
zu bilden, oder könnten
die gleiche Ausgabebreite aufweisen, um einen homogenen DCP zu bilden.
Die DCP-Mikroarchitektur 12 könnte ferner Cache-Speicher 20 und
Register 22 beinhalten.
-
2 ist
ein Blockdiagramm, das eine Mikroarchitektur des heterogenen geclusterten
DCP 200 veranschaulicht, der gemäß beispielhafter erfindungsgemäßer Ausführungsformen
für drei
Verarbeitungspfade, zum Beispiel folgerichtige Pipeline Clusters
der Größen 3-breit,
2-breit bzw. 1-breit ausgelegt ist. DCP 200 könnte in
zwei unterschiedlichen Betriebsweisen arbeiten, nämlich in
einem DC-Modus, zum Ausführen
von „heißen" Pfaden, und einem
Nicht-DC-Modus,
zum Beispiel zum Ausführen
von „kalten" Pfaden. Sowohl die „heißen" als auch die „kalten" Pfade könnten im
Zielanweisungssatz 10 (1) enthalten
sein, der binären ausführbaren
Code beinhalten könnte.
-
In
einem Computerprogramm sind „heiße" Pfade Programmpfade,
die einen relativ kleinen Anteil, zum Beispiel 10–20%, der
statischen Programmanweisungen ausmachen, die jedoch relativ häufig ausgeführt werden
und für
einen relativ großen
Anteil, zum Beispiel 80–90%,
der Gesamtberechnung im Sinne dynamisch ausgeführter Anweisungen verantwortlich
sind. „Kalte" Pfade sind diejenigen
Programmpfade, die einen relativ großen Anteil, zum Beispiel 80–90%, der
statischen Programmanweisungen ausmachen, aber relativ selten ausgeführt werden
und für
einen relativ kleinen Anteil, zum Beispiel 10–20%, der Gesamtberechnung
im Sinne dynamisch ausgeführter
Anweisungen verantwortlich sind. Gemäß einiger beispielhafter erfindungsgemäßer Ausführungsformen
könnten
DC-Spuren, die für
die Mikroarchitektur des DCP 12 konstruiert wurden, „heiße" Pfade eines Programms
darstellen.
-
Im
Nicht-DC-Betriebsmodus könnte
der DCP 200 sequentiell Computerprogramm-Anweisungen aus einem
Anweisungs-Cache 202 (I-Cache) holen. Eine oder mehrere
der geholten Anweisungen könnten
folgerichtig in der Reihenfolge ausgegeben werden, in der sie auf
einem der Verarbeitungspfade empfangen werden, zum Beispiel dem
breitesten Verarbeitungspfad von Cluster 212 im DCP 200.
Die restlichen Verarbeitungspfade, zum Beispiel ein Cluster 214 und
ein Cluster 216, könnten
während
des Nicht-DC-Betriebsmodus von DCP 200 unbenutzt bleiben.
Gemäß einiger
beispielhafter erfindungsgemäßer Ausführungsformen
könnte der
DCP 200 aus dem Nicht-DC-Betriebsmodus in den DC-Betriebsmodus
umgeschaltet werden, das heißt, während der
Anweisungsausführung.
In der Technik ist zum Beispiel bekannt, daß ein Spur-Prädiktor (nicht dargestellt)
zur Vorhersage, daß bald
eine Spur ausgeführt
wird, verwendet werden kann. Der Spur-Prädiktor kann so implementiert
werden, daß der
DCP vom Nicht-DC-Betriebsmodus
in den DC-Betriebsmodus umgeschaltet wird, wenn eine Spur vorhergesagt
wird.
-
Im
DC-Betriebsmodus könnten
Anweisungen aus einem Abhängigkeitskettenspur-Cache 204 (DC-Cache) 204 anstatt
aus dem I-Cache 202 geholt werden. Dann könnten Abhängigkeitsketten
(DCs) den entsprechenden Verarbeitungspfaden, zum Beispiel Clustern 212, 214 und 216,
wie in 2, gemäß einem vordefinierten
Zuweisungssystem zugeführt
werden. Die vordefinierte Zuweisung könnte während eines DC-zu-Cluster-Abbildungsprozesses
durchgeführt
werden, wie unten im Detail beschrieben.
-
DCs
in einer Spur sind von sich aus voneinander unabhängig, so
daß es
keine Datenabhängigkeit
zwischen DCs innerhalb der gleichen Spur gibt. Wenn DCs in der Spur
an verschiedene Clusters ausgegeben werden, zum Beispiel an Clusters 212, 214 und/oder 216,
könnte
eine DC unabhängig
innerhalb eines Clusters ausgeführt
werden, ohne auf andere DCs in anderen Clustern Bezug zu nehmen.
Folglich könnten
mehrere DCs jeweils parallel zueinander mit verschiedenen Geschwindigkeiten
innerhalb verschiedener Clusters ausgeführt werden. Zum Beispiel könnte eine
DC innerhalb Cluster 212 vor den DCs innerhalb Cluster 214 oder Cluster 216 ausgeführt werden.
-
Gemäß beispielhafter
erfindungsgemäßer Ausführungsformen
könnte
DCP 200 von 2 eine hierarchische Zweiebenen-Registerstruktur
verwenden. Ein oder mehrere Clusters in der Architektur könnten selbst
ein lokales Register aufweisen, welches zum Beispiel ein 8-Einträge-Register, wie zum
Beispiel Beispiel 222, 224 oder 226,
sein könnte.
Zusätzlich
könnte
es ein globales Register 232 geben, auf das ein oder mehrere
der Clusters Zugriff haben. Zwischenwerte während der Ausführung einer
DC innerhalb eines Clusters könnten
auf das lokale Register des Clusters geschrieben und/oder aus diesem
gelesen werden. Das globale Register könnte von einem oder mehreren
der Clusters gemeinsam benutzt werden und könnte zum Lesen und/oder Schreiben
von Daten benutzt werden, die von benachbarten Spuren erzeugt und/oder
benutzt werden.
-
Da
DCs, die gleichzeitig in verschiedenen Clustern ausgeführt werden,
von der gleichen Spur ausgegeben werden könnten, könnten sie vollständig datenunabhängig voneinander
sein, und es ist eventuell nicht erforderlich, Werte zwischen diesen
DCs oder zwischen ihren entsprechenden Clustern auszutauschen. DCP 200 könnte unempfindlich
gegenüber
Verzögerungen
in der Reaktion des globalen Registers 232 sein. Gemäß beispielhafter
erfindungsgemäßer Ausführungsformen
könnte
das globale Register 232 mittels jedes geeigneten Typs
von Speicher oder anderer Datenspeichermedien, zum Beispiel On-Chip-Level-1
(L-1) Daten-Cachespeicher (2), implementiert
werden. In einer solchen Implementierung werden die Lese- und Schreibregister 232 zu
expliziten Lade- und Speicheroperationen.
-
Gemäß einiger
erfindungsgemäßer Ausführungsformen
könnte
DCP 200 einen On-Chip-Speicher
benutzen, um eine Prüfpunktkopie
der Werte des globalen Registers 232 zu speichern, die
zum Beispiel in Situationen benutzt werden könnte, in denen die erneute
Ausführung
einer bestimmten DC-Spur erforderlich wird. Die erneute Ausführung wird
zum Beispiel aufgrund einer Ausnahme erforderlich, wenn eine Spur
im DC-Betriebsmodus ausgeführt
wird, oder aufgrund einer falschen Vorhersage einer DC-Spur. Der
DCP 200 kann dann zum Nicht-DC-Betriebsmodus zurückschalten und damit anfangen,
die Anweisungen ab Beginn der zuletzt ausgegebenen Spur erneut auszuführen, wobei
Werte aus der Prüfpunktkopie
des lokalen Registers 232 zum Einsatz kommen, welches im
Speicher gespeichert wurde. In solchen Fällen könnten zusätzliche Last- und/oder Speicheranweisungen
implementiert werden, um die Kommunikationen zwischen DCP 200 und
dem Speicher, zum Beispiel dem L-1 Daten-Cache (2),
zu handhaben.
-
3 ist
ein schematisches Ablaufdiagramm, das ein Verfahren zur Konstruktion
langer DC-Spuren gemäß beispielhafter
erfindungsgemäßer Ausführungsformen
darstellt. Die Konstruktion langer DC-Spuren könnte auf einem verbesserten
WPP-Ansatz (WPP = Whole Program Path), wie in der Technik bekannt,
oder auf einem anderen geeigneten Verfahren basieren, und könnte für längere Spuren
entweder Online oder Offline, zum Beispiel, durchgeführt werden.
-
Ein
Kompilierer, zum Beispiel Kompilierer 11 (1),
könnte
auf einem Prozessor, zum Beispiel DCP 12 (1)
laufen, um eine DC-Spur zu konstruieren. In anderen Ausführungsformen
der Erfindung könnte
der Kompilierer 11 auf jedem beliebigen Typ von Prozessor,
zum Beispiel auf einem dedizierten Prozessor oder einem Allzweckprozessor
gemäß spezifischer
Implementierungen und/oder Design-Anforderungen laufen. Die DC-Spur
könnte
durch Sammeln eines Anweisungsausführungsprofils und Aufteilen
des Anweisungsausführungspro fils
in Stream-Blöcke
konstruiert werden, wie bei Block 310 angegeben. Ein Stream-Block
im Zusammenhang mit dieser Anmeldung könnte sich auf eine Folge von
Anweisungen zwischen erfolgten Verzweigungen eines Computerprogramms
beziehen. Jeder einzigartige Stream-Block könnte durch eine Folge von Anweisungsadressen
für alle
Anweisungen im Stream-Block dargestellt werden. Dem Gesamtwert eines
oder mehrerer Stream-Blöcke
könnte
dann eine eindeutige Stream-Kennung zugewiesen werden, wie bei Block 320 angegeben.
Die ursprüngliche
Spur der Anweisungsausführung
könnte
in eine Kette von Stream-Kennungen umgewandelt werden, wie bei Block 330 angegeben.
-
Wie
bei Block 340 angegeben, könnte nun die Kette von Stream-Kennungen,
die wie oben beschrieben, erstellt wurde, einem Komprimierungsalgorithmus,
zum Beispiel einem Sequitur-Kompressionsalgorithmus, wie in der
Technik bekannt, unterzogen werden. Der Sequitur-Algorithmus könnte eine
kompakte Darstellung für
eine gegebene Eingangskette von Stream-Kennungen erzeugen, zum Beispiel,
indem er die Kette als kontextfreie Grammatik darstellt. Der Algorithmus
könnte
Folgen von Stream-Kennungen und Grammatikregeln ersetzen, die mehr
als einmal mit einer einzigen Grammatikregel wiederholt werden.
Eine resultierende Grammatik-Darstellung der Kette von Stream-Kennungen,
die vom Komprimierungsalgorithmus erstellt wurden, könnte eine
gerichtete azyklische Grafik (DAG) sein (Block 350). Nun
könnten
eine oder mehrere häufig wiederkehrende
Folgen von Stream-Kennungen durch Parsen der DAG identifiziert und
extrahiert werden (Block 360). Eine wiederkehrende Folge
von Stream-Kennungen könnte
im Effekt einer verketteten Folge von Anweisungen entsprechen. Diese
eindeutige wiederkehrende Folge von Anweisungen könnte als
DC-Spur bezeichnet werden, aus der Anweisungs-Abhängigkeitsketten
weiter extrahiert werden könnten.
-
Die
Anweisungsdatenabhängigkeit
in einer DC-Spur könnte
grafisch als ein Satz von unabhängigen Abhängigkeitsketten
(DCs) dargestellt werden. Eine grafische Darstellung eines Satzes
von Abhängigkeitsketten
in der Spur wird in dieser Schrift als Datenabhängigkeitsgrafik (DDG) bezeichnet. 4 ist
eine diagrammatische Darstellung einer beispielhaften DDG 400,
die drei DCs beinhaltet, nämlich
DC1, DC2 und DC3. Eine entsprechende beispielhafte DC-Spur, die durch Parsen
der DDG in 4 erhalten wird, ist in der
folgenden Tabelle 1 dargestellt. Die DC-Spur könnte durch eine konsekutive
Folge von Kennungen in Verbindung mit einem Satz von entsprechenden
Grammatikregeln dargestellt werden.
-
TABELLE 1
-
-
5 ist
ein Blockdiagramm, das ein Verfahren zur Auswertung einer DDG und
zur Konstruktion von DCs für
Clusters mit ordnungsgemäß ausgewählten Ausgabebreiten
gemäß beispielhafter
erfindungsgemäßer Ausführungsformen
darstellt. Es versteht sich, daß eine
wichtige topologie-spezifische Eigenschaft einer DC eine Metrik,
bekannt als „DC-Breite", ist. Die DC-Breite
könnte
zum Beispiel als Summe aller Anweisungen innerhalb einer DC, dividiert
durch die längste
Pfadlänge
in der grafischen Darstellung der Datenabhängigkeit der DC, gemessen werden.
Gemäß beispielhafter
erfindungsgemäßer Ausführungsformen
könnte
ein Prozessor das DC-Auswertungsverfahren dadurch implementieren,
daß er
die Werte der DC-Breiten
einer oder mehrerer der DCs innerhalb einer DC-Spur (Block 510)
berechnet und dann die relative Dominanz der DCs entsprechend der
Anzahl von Anweisungen und/oder der DC-Breite der DCs identifiziert (Block 520).
Eine DC, die die größte DC-Breite
aufweist, könnte
auch die größte Anzahl
von Anweisungen enthalten und könnte
deshalb eine dominante DC sein. Dementsprechend könnte eine
DC, die die größte DC-Breite
aufweist, die dominanteste DC oder die erste dominante DC sein („die dominante
DC"). Eine DC, die
die zweitgrößte DC-Breite
aufweist, könnte
als zweite dominante DC bezeichnet werden, und so weiter. In dem
in 4 dargestellten Beispiel weist DC2 die größte DC-Breite
auf und ist daher die dominante DC, während DC3 die zweite dominante DC
ist.
-
Im
DCP 12 (1) könnten alle Anweisungen innerhalb
einer bestimmten DC innerhalb eines einzelnen Clusters ausgeführt werden.
Folglich könnte
die größte DC-Breite
aller DCs eine Metrik für
die von einem Cluster benötigte
Mindestausgabebreite darstellen, um die Parallelverarbeitung auf
Anweisungsebene (ILP) zu maximieren. Gemäß beispielhafter erfindungsgemäßer Ausführungsformen
könnte
ein DC-Optimierungalgorithmus an die dominante DC angelegt werden,
um einen Satz neuer dominanter DCs zu erstellen, die schmalere DC-Breiten
als die ursprüngliche
DC aufweisen könnten
(Block 530). Durch iteratives Anlegen des DC-Optimierungalgorithmus
an die resultierende dominante DC könnte ein effizienteres Design
für Clusters entwickelt
werden, da die maximale Ausgabebreite der Clusters weniger eingeschränkt ist
(Block 540).
-
Gemäß einiger
beispielhafter erfindungsgemäßer Ausführungsformen
könnte
es auch vorteilhaft sein, eine heterogene Cluster-Struktur zu konstruieren,
wobei zum Beispiel ein breites Cluster für die erste dominante DC und
eine Anzahl schmalerer Clusters für die restlichen DCs vorgesehen
würde.
Eine heterogene Cluster-Konfiguration könnte weniger Platz als eine
homogene Cluster-Konfiguration beanspruchen, zum Beispiel deshalb,
weil eine heterogene Cluster-Konfiguration
kleinere Bypass-Netzwerklogik benutzen würde.
-
6 ist
ein konzeptuales Blockdiagramm eines DC-Optimierungalgorithmus basierend
auf einer Anweisungsduplizierungsprozedur gemäß beispielhafter erfindungsgemäßer Ausführungsformen.
Der Anweisungs-Duplizierungsalgorithmus startet an einer Abhängigkeitskette,
die in 6 mit „abcde" (610) bezeichnet ist.
-
Eine
Vorzugszahl einer Teilung könnte
definiert werden als die Anzahl wirklicher Anweisungen, dargestellt
durch den kleineren Anweisungssatz der beiden resultierenden Anweisungssätze als
Ergebnis der Teilung, die in dem anderen Anweisungssatz nicht dupliziert
sind, und wovon die Anzahl der duplizierten Anweisungen subtrahiert
werden, die in beiden Anweisungssätzen gefunden wurden. Anweisungen
einer dominanten DC „abcde" könnten in
zwei kleinere Anweisungssätze,
bezeichnet als DC „abc" und DC „de", aufgeteilt werden,
basierend auf einem berechneten Indexwert, zum Beispiel einer berechneten
Vorzugszahl elf (620). Wie in 6 dargestellt,
wenn der Anweisungssatz „abcde" in zwei kleinere
Sätze – „abc" und „de" – aufgeteilt wird, hat der
Satz „abc", der der kleinere
von „abc" und „de" ist, zwölf wirkliche
Anweisungen, wie durch die leeren Kreise angedeutet. Die beiden
Anweisungs sätze „abc" und „de" weisen eine duplizierte
Anweisung auf, wie durch den vollen Kreis angedeutet. Folglich ergibt
die Berechnung eine Vorzugszahl von elf.
-
Die
nächste
dominante DC, zum Beispiel DC „de", könnte nun
aufgeteilt werden, zum Beispiel in DC „d" und DC „e" (630), basierend auf einer
mit dem Teilen verbundenen Vorzugszahl von vier. Desgleichen könnte DC „abc" in DC „ab" und DC „c" für eine Vorzugszahl
von eins aufgeteilt werden (640). Es versteht sich, daß in diesem
Beispiel keine weitere Optimierung auf DC „ab" notwendig ist, weil die mit dem Teilen
von DC „ab" verbundene Vorzugszahl
negativ ist, was bedeutet, daß für eine Teilung
eine große
Anzahl von Anweisungen dupliziert werden müßten, was daher nicht effizient
wäre. Obwohl
sich die obige beispielhafte Ausführungsform auf das Teilen einer
DC, basierend auf einer berechneten Vorzugsnummer, bezieht, könnte die
DC gemäß anderer
Ausführungsformen
der Erfindung auf der Basis eines anderen berechneten Indexwerts
aufgeteilt werden.
-
7 zeigt
ein schematisches Ablaufdiagramm eines verbesserten DC-Optimierungsprozesses,
der gemäß beispielhafter
erfindungsgemäßer Ausführungsformen
zum Beispiel von Prozessor 12 (1) ausgeführt werden
könnte,
wie im Konzept in 6 dargestellt. Der Optimierungalgorithmus,
das heißt
ein Anweisungs-Duplizierungsalgorithmus, könnte zur Erreichung des Zieles
konstruiert sein, nach der Optimierung eine DC zu erhalten, die
so klein wie möglich
ist, wobei jedoch die Anzahl der während des Prozesses duplizierten Anweisungen
reduziert ist, zum Beispiel auf einem Minimum gehalten wird. In
anderen Worten, der Optimierungsprozess könnte als Prozeß des Teilens
von DCs in optimale Gruppierungen von Leaf-DDGs verstanden werden.
-
Eine „Leaf" Anweisung könnte einen
Subsatz von Anweisungen einer DC beinhalten. Eine Leaf-DDG (LDDG)
einer „Leaf" Anweisung in einer
DC könnte
einen Subsatz von Anweisungen in dieser DC beinhalten, die notwendig
sind, um die Eingangswerte zum Ausführen dieser „Leaf" Anweisung zu erzeugen.
Der Satz von LDDGs ist die größtmögliche Teilung
für eine
gegebene DC. Zum Beispiel sind, wie in 6 dargestellt, „a", „b", „c", „d" und „e" die LDDGs der fünf „Blätter" (Leaves) der ursprünglichen
DC „abcde", die die maximal
mögliche
Teilung darstellen. Wie jedoch in 6 erklärt, ergibt
sich aus einer maximal möglichen
Teilung in einigen Fällen
eine große
Anzahl von Duplizierungsanweisungen.
-
Gemäß beispielhafter
erfindungsgemäßer Ausführungsformen
könnte
der Anweisungsduplizierungs-Algorithmus mit der Zusammenlegung aller
LDDGs zu einem Satz beginnen (702). Eine potentielle Teilung
in einer Mehrzahl von Teilungsszenarios könnte ausgewählt werden, und es könnte ein
Indexwert, A1, zum Beispiel eine Vorzugszahl, berechnet werden,
die sich auf diese Teilung bezieht (704).
-
Der
Algorithmus könnte
fortfahren, einen „Gewichtungsfaktor" A2 zu berechnen.
A2 könnte
der größte aller
mit der Teilung einer resultierenden dominanten DC verbundenen Indexwerte
sein (706). Diese resultierende dominante DC könnte das
direkte Ergebnis der Teilung einer DC sein, die in der vorhergehenden
Operation zum Teilen in Betracht gezogen wird (704). Die
beiden Werte, zum Beispiel Indexwert A1, wie in Operation 704,
und Gewichtungsfaktor A2, wie in Operation 706, werden
anschließend
zu einem kombinierten Wert A zusammenaddiert, der im Folgenden mit „Gewichtungsindexwert" bezeichnet wird
(708).
-
Der
oben beschriebene Teilungsprozeß könnte eine
Auswertung aller möglichen
Teilungen erfordern. Folglich könnte
gemäß einiger
erfindungsgemäßer Ausführungsformen,
solange es andere mögliche
Teilungen gibt, die ausgewertet werden müssen (710), das Verfahren
die Operationen 704, 706 und 708 so lange wiederholen,
bis der kombinierte Wert A für
alle möglichen
Teilungsszenarios ausgewertet ist.
-
Nachdem
die Auswertung von mindestens einigen der möglichen Teilungen abgeschlossen
ist, kann das Verfahren zum Beispiel damit fortfahren, ein Teilungsszenario
zu identifizieren, das auf den größten gewichteten Indexwert
A bezogen ist (712). Außerdem könnte mit dem Verfahren auch
geprüft
werden, ob der gewichtete Indexwert A größer als ein vordefinierter
Wert wie zum Beispiel Null ist (714). Wie bei Block 716 angedeutet,
könnte
das Verfahren das Teilen der DC gemäß des identifizierten Teilungsszenarios
beinhalten, zum Beispiel dann, wenn bestimmt wird, daß der gewichtete
Indexwert größer als
der vordefinierte Wert ist. Das Verfahren könnte ferner das Identifizieren
einer neuen dominanten DC mit der breitesten Ausgabebreite beinhalten,
die das Ergebnis der Sofortteilung ist (718). Das Verfahren
könnte
ferner das Wiederholen des Teilungsalgorithmus beinhalten (704).
-
Der
gewichtete Indexwert A könnte
auch kleiner als der zum Beispiel vordefinierte Wert Null sein,
zum Beispiel nach einer oder mehr Iterationen. Dies könnte bedeuten,
daß mehr Anweisungen
als eine mögliche Reduzierung
von Anweisungen in der DC dank einer Teilung dupliziert werden müßten. Somit
wird der Teilungsprozeß beendet.
-
ist
ein schematisches Ablaufdiagramm eines Verfahrens zum Abbilden von
DCs auf Clustern, gemäß beispielhafter
erfindungsgemäßer Ausführungsformen.
DCs könnten
entsprechend ihrer Dominanz sortiert werden, zum Beispiel beginnend
mit der dominantesten DC, und Clusters könnten nach ihrer Ausgabebreite sortiert
werden, zum Beispiel beginnend mit dem breitesten Cluster (810).
Dann könnten
die DCs, zum Beispiel eine nach der anderen, folgerichtig auf entsprechende
Clusters abgebildet werden (812). In anderen Worten, die
dominanteste DC könnte
auf das breiteste Cluster abgebildet werden, und die zweitdominanteste
DC könnte
auf das zweitbreiteste Cluster abgebildet werden, usw. bis entweder
alle DCs auf entsprechende Clusters abgebildet wurden, oder alle
Clusters im Abbildungsprozeß aufgebraucht
wurden. Einer oder mehreren abgebildeten DCs könnte eine Kennung (ID) zugewiesen
werden, die das Cluster identifiziert, auf das die DC abgebildet
wurde.
-
Dann
könnte
der Abbildungsprozeß damit
fortfahren zu prüfen,
ob DCs übrig
geblieben sind, die noch zu prüfen
sind (814). Der Abbildungsprozeß könnte beendet werden, wenn zum
Beispiel alle DCs abgebildet wurden. Auf mindestens einigen der
Clusters könnte
mehr als eine DC abgebildet werden, und der Abbildungsprozeß könnte wie
folgt weitergehen, wenn zum Beispiel noch DCs vorhanden sind, die
abzubilden sind.
-
Gemäß einiger
beispielhafter erfindungsgemäßer Ausführungsformen
könnte
ein Cluster-Last-Wert zum
Abbilden der verbleibenden DCs verwendet werden. Der Cluster-Last-Wert
eines Clusters könnte
als die Gesamtanzahl der bereits auf das Cluster abgebildeten Anweisungen,
dividiert durch die Ausgabebreite des Clusters, definiert werden.
Es können
Cluster-Last-Werte für
ein oder mehrere der Clusters berechnet werden (816). Dann
könnte
ein Cluster auf der Basis der vorherbestimmten Kriterien ausgewählt werden.
Zum Beispiel könnte
ein Cluster, das den niedrigsten Cluster-Last-Wert aufweist, ausgewählt werden
(818). In einigen Fällen könnte es
zwei oder mehr Clusters mit dem gleichen Cluster-Last-Wert geben
(820). In solchen Fällen
könnte das
Cluster mit der größten Ausgabebreite
(822) der Clusters mit dem gleichen Cluster-Last-Wert ausgewählt werden.
Dann könnte
der Abbildungsprozeß die
nächste
dominante DC auf das ausgewählte
Cluster abbilden (824).
-
Nach
dem Abbilden einer DC auf ein Cluster könnte der gerade abgebildeten
DC eine Kennung (ID) zugewiesen werden, die das Cluster, auf welches
die DC abgebildet wurde, eindeutig identifiziert (826).
Wie oben beschrieben, könnte
während
der Ausführung
von DC-Spuren im
DCP, zum Beispiel im CP 12 (1), eine
DC in der Spur einem Cluster zur Ausführung zugeordnet werden, zum
Beispiel auf der Basis dieses vordefinierten Systems, zum Beispiel
der vorher zugewiesenen Cluster-ID.
-
Nach
dem Abbilden einer DC auf einem Cluster und nach Zuweisen einer
Cluster-ID zur DC (826) könnte der Abbildungsprozeß ferner
bestimmen, ob alle DCs auf die Clusters abgebildet wurden (828).
Wenn noch DCs vorhanden sind, die abgebildet werden müssen, könnte der
Prozeß zur
Berechnung der Cluster-Last-Werte der gerade neu aktualisierten
Clusters (816) zurückkehren.
Dann könnte
die nächste
dominante DC auf ein Cluster abgebildet werden, welches zum Beispiel
unter Befolgung der oben beschriebenen Prozedur ausgewählt wurde.
Dieser Prozeß könnte so
lange weitergeführt
werden, bis zum Beispiel alle DCs auf Clusters abgebildet sind.
-
In
Verbindung mit verschiedenen erfindungsgemäßen Ausführungsformen, wie in dieser
Anmeldung offenbart, wurden verschiedene Benchmark-Analysen durchgeführt, um
eine quantitative unterstützende
Basis für
die verschiedenen Ausführungsformen
der Erfindung bereitzustellen. Die beispielhaften Ergebnisse dieser Analysen
sind in den folgenden Abschnitten zusammengefaßt. Zu den benutzten Benchmarks
gehören
acht ganzzahlige Benchmarks, die aus der CINT2000 Folge ausgewählt wurden,
zum Beispiel „bzip2", „crafty", „gap", „gcc", „gzip", „mcf", „twolf" und „vpr" – Bezeichnungen, die in den
folgenden Kurven benutzt wurden. Die in dieser Arbeit benutzten
binären
Codes wurden mit dem Intel® Electron Kompilierer
für die
Itanium Architektur kompiliert, gemäß einiger beispielhafter erfindungsgemäßer Ausführungsformen.
Dieser fortgeschrittene Kompilierer enthält Optimierungstechniken nach
dem Stand der Technik, die in der Kompilierer-Gemeinschaft bekannt
sind, sowie Techniken, die speziell für die Merkmale der Architektur
der Intel® Itanium
Prozessorfamilie (IPF) entworfen wurden. Alle Benchmarks wurden
mit aktivierter maximaler Kompiliereroptimierung kompiliert. Die
Optimierung beinhaltet diejenigen Techniken, die auf profilgetriebenem,
Feedback-geführtem,
wie aggressivem Software Pre-Fetching, Software-Pipelining, Steuerspekulation
und Datenspekulation basieren, wie in der Technik bekannt.
-
9 ist
eine schematische Grafik, die den kumulativen prozentualen Anteil
der Anweisungen zeigt, die von Spuren ausgeführt wurden, die unter Einsatz
des WPP-Ansatzes (WPP = Whole Program Path) erfaßt wurden. Sie zeigt die 100
Spuren, die am häufigsten
von den acht oben aufgelisteten Benchmark-Programmen ausgeführt wurden.
Die x-Achse zeigt die Anzahl der Spuren, und die y-Achse stellt
den kumulativen prozentualen Anteil der Programmdeckung dieser Spuren
dar. Es ist klar, daß weniger
als 100 Spuren notwendig sind, um bis zu 80% der dynamisch ausgeführten Anweisungen
für alle
Programme abzudecken, außer
einer, die einen größeren Programm „Fußabdruck" aufweist.
-
10 ist
eine schematische Grafik, die die Durchschnittsanzahl von Anweisungen
in den konstruierten Spuren sowie die durch die vertikale Linie
oben auf jedem Balken angegebenen maximalen und minimalen Spurlängen für die Spuren
zeigt, die für
jede Benchmark auf der x-Achse konstruiert wurden. Es wird darauf hingewiesen,
daß die
y-Achse als logarithmische Skala dargestellt ist. Die Offline-Kompilierung
gemäß beispielhafter
erfindungsgemäßer Ausführungsformen,
die auf dem WPP Algorithmus basiert, könnte fähig sein, signifikant längere Spuren
zu konstruieren als solche, die in anderen Ansätzen für den Spur-basierten Prozessor
erstellt wurden. Diese langen Spuren, wie sie zum Beispiel im DCP 12 (1)
benutzt werden, könnten die
Durchführung
einer besseren Anweisungsplanung für folgerichtige Clusters ermöglichen.
-
11 ist
eine schematische Grafik, die den durchschnittlichen prozentualen
Anteil von Programmanweisungen zeigt, die auf die sieben dominantesten
DCs für
die untersuchten Benchmarks verteilt wurden. Sie zeigt, daß die ersten
dominanten DCs in allen Spuren verglichen mit anderen DCs eine große Anzahl
von Anweisungen enthalten. Die ersten dominanten DCs decken fast
50–60%
aller Anweisungen in den Spuren ab, während die zweiten dominanten
Dcs nur ungefähr
20% der Anweisungen in den Spuren abdecken, und auf den Rest der
DCs entfallen weniger als 10%.
-
12 ist
eine schematische Grafik, die den prozentualen Anteil der Spuren,
verteilt auf die DC-Breiten für
die sieben dominantesten DCs, gemittelt über die Spuren aller oben beschriebenen
Benchmarks, zeigt. Da für
einige Spuren, ab der zweiten dominanten DC, die DCs überhaupt
nicht existieren könnten,
ergeben die Balken für
diese DCs keine Summe von 100%. In nahezu 55% der ausgeführten Spuren
weisen die ersten dominanten DCs eine DC-Breite von größer als
zwei auf. In anderen Worten, in nahezu 45% der ausgeführten Spuren
ist die DC- Breite
kleiner als zwei. Ferner zeigt die DC-Breite die Tendenz, größer als
drei nur für
die ersten dominanten DCs zu sein, aber für andere ist sie selten größer als
zwei. Dies bedeutet, daß beim
Entwerfen einer geclusterten Mikroarchitektur die Clusters keine
einheitliche Ausgabebreite aufweisen müssen. Es ist zum Beispiel möglich, die
Parallelverarbeitung auf Anweisungsebene (ILP) durch Entwerfen einer
heterogenen geclusterten Mikroarchitektur mit nur einem breiten
Cluster zur Abdeckung der Bedürfnisse
der ersten dominanten DCs und einer Anzahl von schmaleren Clustern,
möglicherweise
1-breit, zu maximieren, wie oben mit Bezug auf 5 besprochen.
-
13 ist
eine schematische Grafik, die den prozentualen Anteil der Spuren,
verteilt auf die kritischen Pfadlängen der sieben dominantesten
DCs, gemittelt über
die Spuren aller Benchmarks, zeigt. Wie erwartet, sind die kritischen
Pfade der ersten dominanten DCs länger als die von anderen. Folglich,
obwohl die dominanteste DC in einem breiten Cluster ausgeführt wird,
könnten
alle anderen sequentiell für
ein oder mehrere schmale Clusters geplant werden, da die kombinierte
Pfadlänge
gewöhnlich
nicht die der dominanten DC überschreitet.
Die kritische Pfadlänge
der ersten dominanten DCs ist ungefähr die Quadratwurzel der Länge der konstruierten
Spuren.
-
14 ist
eine schematische Grafik, die die DC-Breitenverteilung der ersten
dominanten DCs der zwanzig am häufigsten
ausgeführten,
entsprechend ihrer DC-Breite sortierten Spuren für die acht oben beschriebenen
Benchmarks zeigt. Daraus ist ersichtlich, daß in einigen Fällen die
DC-Breite der dominanten DC bis auf ein Maximum von zwölf ansteigen
könnte.
-
15 ist
eine schematische Grafik, die die DC-Breitenverteilung der ersten
dominanten DCs der zwanzig am häufigsten
ausgeführten
Spuren nach Anlegen einer auf einem Anweisungs-Duplizierungsalgorithmus
basierenden DC-Optimierungsprozedur zeigt, verglichen mit der in 14 dargestellten
DC-Breitenverteilung, gemäß beispielhafter
erfindungsgemäßer Ausführungsformen.
Die DC-Breite ist signifikant reduziert, und in den meisten Fällen ist
die DC-Breite gleich oder kleiner als zwei.
-
16 ist
eine schematische Grafik, die die Wirksamkeit des in dieser Anmeldung
offenbarten Anweisungs-Duplizierungsalgorithmus im Sinne der Reduzierung
der Anzahl von Anweisungen in den ersten dominanten DCs, gemittelt über alle
Spuren einer Benchmark, zeigt. Der erste Balken ist die Durchschnittssumme aller
Anweisungen in einer Spur. Der zweite Balken zeigt den Anstieg in
dieser Durchschnittszahl als Ergebnis der zusätzlichen duplizierten Anweisungen.
Jedoch ist dieser Anstieg in der Anzahl der auf Duplizierung zurückzuführenden
Anweisungen kleiner als 10% der Summe der Anweisungen in den Spuren.
Die nächsten
beiden Balken zeigen die Anzahl der Anweisungen in der dominanten
DC vor bzw. nach der Optimierung der dominanten DC. Im Durchschnitt
wurden circa 20% der Größe der dominanten
DC reduziert. Die letzten beiden Balken zeigen die Anzahl der Anweisungen
in der zweiten dominanten DC vor und nach dem Anlegen des Optimierungsalgorithmus.
Die Anzahl der Anweisungen in der zweiten dominanten DC ist erhöht, weil
eine DC, die sich aus der Teilung der ursprünglichen ersten dominanten
DC ergibt, die neue zweite dominante DC wird.
-
Die
Komplexitätswirksamkeit
der DCP-Mikroarchitektur, wie in dieser Anmeldung beschrieben, wird mit
der ILDP-Mikroarchitektur (ILDP = Instruction Level Distributed
Processing – Verteilte
Anweisungsebenenverarbeitung) und anderen geclusterten nicht folgerichtigen
(OOO) und folgerichtigen Mikroarchitekturen verglichen. Die Ergebnisse
sind in der folgenden Tabelle 2 zusammengefaßt. TABELLE
2
-
Aus
der Tabelle ist ersichtlich, daß die
in dieser Anmeldung offenbarte DCP-Mikroarchitektur nicht die Komplexität des Umbenennens
und Steuerns von Logik aufweist, aber dennoch einige der Vorteile
nicht folgerichtiger Ausführung
hat, da die Anweisungen während
der Konstruktion der Spur im Voraus geplant und umbenannt werden.
Wie auch unter Bezugnahme auf 2 bereits
erklärt,
ist ein Umordnungspuffer (ROB), der zum Speichern von Registerwerten
zum Einsatz in Situationen dient, in denen eine erneute Ausführung der Anweisungen
einer Spur notwendig wird, verglichen mit ILDP und nicht folgerichtigen
Prozessoren, eventuell nicht erforderlich. Im Vergleich zu einem
Baseline-Design von folgerichtigen 6-breit-Clustern hat der DCP weniger komplizierte
Bypass-Logik, da er höchstens
3-breit-Clusters verwendet. Andere Studien weisen darauf hin, daß die Komplexität der Bypass-Logik
sich quadratisch mit Bezug auf den Anstieg in den Ausgabebreiten erhöht. Ferner
benötigt
die im DCP benutzte globale Registerdatei nur zwei Lese- und zwei
Schreibports für die
globale Registerdatei, da der Verkehr hauptsächlich über lokale Registerdateien
gehandhabt wird. Dies ist eine signifikante Reduktion in der Komplexität im Vergleich
zu zwölf
Lese- und sechs Schreibports, die in konventionellen folgerichtigen
monolithischen Designs zur Ausgabe von 6-Anweisungen in einem Zyklus benötigt werden.
Ein derartiges Komplexitäts-effektives
Design könnte
Hochfrequenz-Implementierungen ermöglichen.
-
17 ist
eine schematische Grafik, in der die Performance von Anweisungen
pro Zyklus (IPC) einer DCP-Mikroarchitektur mit zwei folgerichtigen
3-breit Pipeline Clusters, genannt „(3,3)DCP", mit einem folgerichtigen Baseline
6-breit Prozessor mit Unterstützung
zur Ausführung
von optimierten Spuren, genannt „Trace Sch", mit einem folgerichtigen Prozessor,
genannt „io", und mit einem nicht
folgerichtigen Prozessor, genannt „ooo", verglichen wird. In 17 ist
zu sehen, daß der
folgerichtige Baseline 6-breit Prozessor „Trace Sch" eine höhere IPC, verglichen mit der
IPC des folgerichtigen Prozessors „io" erzielt. Die Performance- Verbesserung könnte bis
zu 15% für
die besondere Benchmark „gap" betragen. Ferner
ist zu sehen, daß die
DCP-Mikroarchitektur mit zwei folgerichtigen 3-breit Clustern, zum
Beispiel „(3,3)DCP", eine IPC erzielen
könnte,
die weitgehend gleich der IPC von „Trace Sch" ist. Dieser Performance-Vorteil könnte das
Ergebnis der Planung über
lange Spuren und einheitliche Anweisungsverteilung auf die Clusters
sein, erzielt mit dem optimierten DC-Konstruktionsalgorithmus.
-
Verglichen
mit serialisierter Ausführung
von Spuren, bei der die Ausführung
einer Spur abgeschlossen ist, bevor die nächste Spur an die Clusters
ausgegeben wird, wurde eine Performance-Verbesserung von ungefähr 10–15% auch
durch überlappende
Ausführung
von benachbarten Spuren, basierend auf einem gesteuerten Spekulationsansatz,
erzielt. Die Ergebnisse sind in 17 als „(3,3)DCP" w/Overlap" dargestellt. Die Ausführung der
DCs wurde von einem gesteuerten Spekulationsansatz gemanagt derart,
daß während die Ausführung von
DCs der aktuellen Spur noch im Gange war, der Spur-Prädiktor bereits
eine nächste
auszuführende
Spur auswählte.
DCs in der ausgewählten
Spur könnten
in der bereits verfügbaren
Cluster-Ressource ausgeführt
werden, da angenommen wird, daß sie
keine Datenabhängigkeit
mit gerade ausgeführten
DCs aufweisen.
-
Performance-Vergleiche,
gemessen in IPC, wurden auch zwischen homogenen und heterogenen DCP-Mikroarchitekturen
vorgenommen. 18 zeigt eine schematische Grafik,
die Vergleiche zwischen drei verschiedenen Cluster-Konfigurationen,
genannt (3,3), (3,2,1) und (2,2,2), mit der gleichen Gesamtausgabebreite
darstellt. Eine Konfiguration von (3,3) hatte zwei 3-breit Clusters,
eine Konfiguration von (3,2,1) hatte drei Clusters der Größen 3-breit,
2-breit und 1-breit, und eine Konfiguration von (2,2,2) hatte drei
2-breit Clusters.
-
Die
DCP-Mikroarchitektur mit einer (3,2,1) Cluster-Konfiguration wies
fast die gleiche Performance auf wie eine (3,3) Konfiguration. Dies
stimmt überein
mit der Charakterisierung der DCs. Da nur eine dominante DC mit
einer hohen DC-Breite vorhanden sein könnte, könnte nur ein breites Cluster,
das diese dominante DC ausführt,
erforderlich sein, um die verfügbare
ILP zu maximieren.
-
Die
DCP-Mikroarchitektur mit heterogener Cluster-Konfiguration hat einige
Vorteile gegenüber
einer homogenen Cluster-Konfiguration. Eine (3,2,1) Konfiguration
könnte
weniger Platz benötigen
als eine (3,3) Konfiguration, weil eine (3,2,1) Konfiguration eine
kleinere Bypass-Netzwerk-Logik benutzt. Dies führt dazu, daß eine (3,2,1)
Konfiguration durch Abschalten von Clustern auch weniger Energie
verbraucht, wenn nur eine begrenzte ILP verfügbar ist. Die Performance kann
auch dadurch verbessert werden, daß Pipelines mit variabler Länge entworfen
werden, da schmalere Pipelines weniger Tiefe aufweisen und schneller
getaktet werden können.
-
Andererseits
könnte
es einfacher sein, eine (3,3) Konfiguration durch Replizieren eines
vorhandenen 3-breit Clusters als eine (3,2,1) Konfiguration zu entwerfen,
die das Entwerfen von im wesentlichen drei Pipelines mit drei verschiedenen
Breiten erfordern würde.
-
18 ist
ebenfalls ein Vergleich zwischen der (3,3) und der (2,2,2) Konfiguration.
Im Nicht-DC-Modus wurden alle Anweisungen im breitest verfügbaren Cluster
ausgeführt.
Somit wurden in der (2,2,2) Konfiguration im Nicht-DC-Modus die
Anweisungen in einer 2-breit Pipeline ausgeführt, die zur Verschlechterung der
Performance führte. 18 zeigt
ferner den Performance-Vorteil, der sich aus der Verwendung des
Anweisungs-Duplizierungs-Algorithmus ergibt. Ein erster Balken in 18 entspricht
der (2,2,2) Konfiguration, die ohne Anlegen des Anweisungs-Duplizierungs-Algorithmus
simuliert wurde. Für
die Benchmark „gap" wurde eine Verbesserung
in der IPC bis zu 13% erzielt. Im Durchschnitt betrug die Verbesserung
ungefähr
5 %.
-
19 ist
eine schematische Grafik, die den prozentualen Anteil von dynamischen
Anweisungen zeigt, die im DC-Modus ausgeführt wurden. Der DC-Modus war
der gleiche für
alle drei Konfigurationen wie in 18, das
heißt
Konfiguration (3,3), Konfiguration (3,2,1) und Konfiguration (2,2,2).
Ferner ist der prozentuale Anteil der dynamischen Anzahl von duplizierten
Anweisungen dargestellt, der im Durchschnitt circa 4% betrug und
bedeutet, daß das
Overhead aufgrund der duplizierten Anweisungen äußerst minimal war.
-
Obwohl
bestimmte Merkmale der Erfindung in dieser Schrift dargestellt und
beschrieben wurden, werden einem in der Technik normal bewanderten
Fachmann viele Modifikationen, Substitutionen, Änderungen und Äquivalente
einfallen. Es versteht sich daher, daß die beigefügten Ansprüche dafür gedacht
sind, alle solchen Modifikationen und Änderungen abzudecken, die dem
Geist der Erfindung entsprechen.
-
Zusammenfassung:
-
Ausführungsformen
der vorliegenden Erfindung stellen ein Verfahren, eine Vorrichtung
und ein System bereit, welches das Teilen einer Abhängigkeitskette
in einen Satz von Abhängigkeitsketten
mit reduzierter Breite, das Abbilden einer oder mehrerer Abhängigkeitsketten
auf einen oder mehrere Prozessoren mit geclusterten Abhängigkeitsketten,
wobei eine Ausgabebreite eines oder mehrerer Cluster darauf eingerichtet
ist, eine Größe der Abhängigkeitsketten
aufzunehmen, und/oder die Verarbeitung einer Mehrzahl von Abhängigkeitsketten
einer Spur parallel zueinander beinhalten könnte. Andere Ausführungsformen
sind beschrieben und beansprucht.