DE112005002317T5 - System, Verfahren und Vorrichtung für die Verarbeitung von Abhängigkeitsketten - Google Patents

System, Verfahren und Vorrichtung für die Verarbeitung von Abhängigkeitsketten Download PDF

Info

Publication number
DE112005002317T5
DE112005002317T5 DE112005002317T DE112005002317T DE112005002317T5 DE 112005002317 T5 DE112005002317 T5 DE 112005002317T5 DE 112005002317 T DE112005002317 T DE 112005002317T DE 112005002317 T DE112005002317 T DE 112005002317T DE 112005002317 T5 DE112005002317 T5 DE 112005002317T5
Authority
DE
Germany
Prior art keywords
dependency
chains
processor
chain
dependency chains
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
DE112005002317T
Other languages
English (en)
Other versions
DE112005002317B4 (de
Inventor
Satish Lajolla Narayanasamy
Hong Santa Clara Wang
John San Jose Shen
Roni Rosner
Yoav Almog
Naftali Schwartz
Gerolf Santa Clara Hoflehner
Daniel Santa Clara Lavery
Wei Redwood Li
Xinmin Union City Tian
Milind Sunnyvale Girkar
Perry San Jose Wang
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of DE112005002317T5 publication Critical patent/DE112005002317T5/de
Application granted granted Critical
Publication of DE112005002317B4 publication Critical patent/DE112005002317B4/de
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/443Optimisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/45Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
    • G06F8/451Code distribution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/43Checking; Contextual analysis
    • G06F8/433Dependency analysis; Data or control flow analysis

Abstract

Verfahren umfassend:
Teilen einer Abhängigkeitskette in einen Satz von Abhängigkeitsketten mit reduzierter Breite.

Description

  • 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
  • Figure 00120001
  • 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
    Figure 00200001
    Figure 00210001
  • 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.

Claims (66)

  1. Verfahren umfassend: Teilen einer Abhängigkeitskette in einen Satz von Abhängigkeitsketten mit reduzierter Breite.
  2. Verfahren nach Anspruch 1, wobei das Teilen der Abhängigkeitskette umfaßt: Auslegen eines oder mehrerer Teilungsszenarios der Abhängigkeitskette; Erhalten eines oder mehrerer gewichteter Indexwerte, die sich auf eins bzw. mehrere der Teilungsszenarios beziehen; und Aufteilen der Abhängigkeitskette in den Satz von Abhängigkeitsketten mit reduzierter Breite gemäß eines Teilungsszenarios, das auf den größten der gewichteten Indexwerte bezogen ist.
  3. Verfahren nach Anspruch 2, das ein iteratives Wiederholen des Auslegens, Erhaltens und Aufteilens auf eine breiteste Abhängigkeitskette des Satzes von Abhängigkeitsketten mit reduzierter Breite umfaßt, bis der größte der auf das Teilen der breitesten Abhängigkeitskette bezogenen gewichteten Indexwerte kleiner als ein vordefinierter Wert ist.
  4. Verfahren nach Anspruch 2, wobei das Erhalten eines oder mehrerer gewichteter Indexwerte folgendes umfaßt: Berechnen eines auf das Teilungsszenario bezogenen Indexwertes; Bestimmen eines Gewichtungsfaktors auf der Basis des Teilens einer breitesten Abhängigkeitskette des Satzes von Abhängigkeitsketten mit reduzierter Breite; und Anlegen einer Summe der Indexwerte und des Gewichtungsfaktors an den gewichteten Indexwert.
  5. Verfahren nach Anspruch 4, wobei das Bestimmen des Gewichtungsfaktors umfaßt: Berechnen eines oder mehrerer Indexwerte, die auf eine bzw. mehrere mögliche Teilungen der breitesten Abhängigkeitskette bezogen sind; und Anwenden des größten der Indexwerte auf den Gewichtungsfaktor.
  6. Verfahren nach Anspruch 5, wobei das Berechnen das Subtrahieren der Anzahl von duplizierten Anweisungen aus einem Satz von Abhängigkeitsketten mit reduzierter Breite der breitesten Abhängigkeitskette von der Anzahl der Anweisungen umfaßt, die in einer des Satzes von Abhängigkeitsketten mit reduzierter Breite, die die kleinste Anzahl von Anweisungen aufweist, nicht dupliziert sind.
  7. Verfahren nach Anspruch 4, wobei das Berechnen das Subtrahieren der Anzahl von duplizierten Anweisungen aus einem Satz von Abhängigkeitsketten mit reduzierter Breite von der Anzahl der Anweisungen umfaßt, die in einer des Satzes von Abhängigkeitsketten mit reduzierter Breite, die die kleinste Anzahl von Anweisungen aufweist, nicht dupliziert sind.
  8. Vorrichtung umfassend: einen Prozessor, der in der Lage ist, eine Abhängigkeitskette in einen Satz von Abhängigkeitsketten mit reduzierter Breite zu teilen.
  9. Vorrichtung nach Anspruch 8, wobei der Prozessor in der Lage ist, die Abhängigkeitskette in einen Satz von Abhängigkeitsketten mit reduzierter Breite gemäß eines Teilungsszenarios aufzuteilen, das sich auf einen größten gewichteten Indexwert bezieht.
  10. Vorrichtung nach Anspruch 9, wobei der Prozessor in der Lage ist, das Aufteilen für eine breiteste Abhängigkeitskette des Satzes von Abhängigkeitsketten mit reduzierter Breite iterativ so lange zu wiederholen, bis der größte gewichtete Indexwert kleiner als ein vordefinierter Wert ist.
  11. Vorrichtung nach Anspruch 9, wobei der Prozessor in der Lage ist, einen auf das Teilungsszenario bezogenen Indexwert zu berechnen, um einen Gewichtungsfaktor basierend auf dem Teilen einer breitesten Abhängigkeitskette des Satzes von Abhängigkeitsketten mit reduzierter Breite zu bestimmen und eine Summe des Indexwerts und des Gewichtungsfaktors auf den gewichteten Indexwert anzuwenden.
  12. Vorrichtung nach Anspruch 11, wobei der Prozessor in der Lage ist, einen oder mehrere Indexwerte zu berechnen, die sich auf eine oder mehrere entsprechenden möglichen Teilungen der breitesten Abhängigkeitskette beziehen, und den größten der Indexwerte auf den Gewichtungsfaktor anzuwenden.
  13. Vorrichtung nach Anspruch 12, wobei der Prozessor in der Lage ist, die Anzahl der duplizierten Anweisungen aus einem Satz von Abhängigkeitsketten mit reduzierter Breite der breiteten Abhängigkeitskette von der Anzahl von Anweisungen zu subtrahieren, die nicht in einen des Satzes von Abhängigkeitsketten mit reduzierter Breite, die die kleinste Anzahl von Anweisungen aufweist, dupliziert sind.
  14. Vorrichtung nach Anspruch 11, wobei der Prozessor in der Lage ist, die Anzahl der duplizierten Anweisungen aus einem Satz von Abhängigkeitsketten mit reduzierter Breite von der Anzahl von Anweisungen zu subtrahieren, die nicht in einen des Satzes von Abhängigkeitsketten mit reduzierter Breite, die die kleinste Anzahl von Anweisungen aufweist, dupliziert sind.
  15. Computerplattform umfassend: einen Prozessor, der in der Lage ist, eine Abhängigkeitskette eines Satzes von Zielanweisungen in einen Satz von Abhängigkeitsketten mit reduzierter Breite aufzuteilen, und einen Speicher zum Speichern des Satzes von Zielanweisungen.
  16. Computerplattform nach Anspruch 15, wobei der Prozessor in der Lage ist, die Abhängigkeitskette in einen Satz von Abhängigkeitsketten mit reduzierter Breite gemäß eines Teilungsszenarios aufzuteilen, das sich auf einen größten gewichteten Indexwert bezieht.
  17. Computerplattform nach Anspruch 16, wobei der Prozessor in der Lage ist, das Aufteilen der Abhängigkeitskette für eine breiteste Abhängigkeitskette des Satzes von Abhängigkeitsketten mit reduzierter Breite iterativ zu wiederholen.
  18. Computerplattform nach Anspruch 16, wobei der Prozessor in der Lage ist, den auf das Teilungsszenario bezogenen Indexwert zu berechnen, einen Gewichtungsfaktor basierend auf dem Teilen einer breitesten Abhängigkeitskette des Satzes von Abhängigkeitsketten mit reduzierter Breite zu bestimmen, und eine Summe des Indexwerts und des Gewichtungsfaktors auf den gewichteten Indexwert anzuwenden.
  19. Computerplattform nach Anspruch 18, wobei der Prozessor in der Lage ist, einen oder mehrere Indexwerte zu berechnen, die sich auf eine bzw. mehrere möglichen Teilungen der breitesten Abhängigkeitskette beziehen, und den größten der auf die eine oder die mehreren möglichen Teilungen bezogenen Indexwerte an den Gewichtungsfaktor anzulegen.
  20. Programmspeichergerät mit von einer Maschine lesbaren Anweisungen, welche bei ihrer Ausführung durch die Maschine folgendes bewirken: das Teilen einer Abhängigkeitskette in einen Satz von Abhängigkeitsketten mit reduzierter Breite.
  21. Programmspeichergerät nach Anspruch 20, wobei die Anweisungen, die das Teilen der Abhängigkeitskette bewirken, dazu führen, daß die Abhängigkeitskette gemäß eines auf den größten gewichteten Indexwert bezogenen Teilungsszenarios in den Satz von Abhängigkeitsketten mit reduzierter Breite aufgeteilt wird.
  22. Programmspeichergerät nach Anspruch 21, wobei die Anweisungen, die das Teilen der Abhängigkeitskette bewirken, dazu führen, daß das iterative Aufteilen so lange wiederholt wird, bis der größte gewichtete Indexwert kleiner als ein vordefinierter Wert ist.
  23. Verfahren umfassend: paralleles Verarbeiten einer Mehrzahl von Abhängigkeitsketten einer Spur.
  24. Verfahren nach Anspruch 23, wobei das Verarbeiten umfaßt: Zuweisen mindestens einiger der Abhängigkeitsketten zu einer Mehrzahl von Verarbeitungspfaden gemäß eines vordefinierten Systems; und Ausführen mindestens einiger der Verarbeitungspfade unabhängig voneinander.
  25. Verfahren nach Anspruch 24, wobei das Ausführen das Lesen und/oder Schreiben von Zwischendaten lokal innerhalb eines oder mehrerer der Verarbeitungspfade umfaßt.
  26. Verfahren nach Anspruch 24, wobei das Ausführen das Lesen und/oder Schreiben von globalen Daten durch einen oder mehrere der Verarbeitungspfade umfaßt.
  27. Verfahren nach Anspruch 24, wobei das Verarbeiten das Ausführen einer oder mehrerer der Abhängigkeitsketten in einem Nicht-Abhängigkeitskettenmodus umfaßt, wenn eine Ausnahme oder eine Fehlvorhersage eintritt.
  28. Verfahren nach Anspruch 23, welches ein Verarbeiten von Programmanweisungen umfaßt, die nicht Teil einer der Abhängigkeitsketten in einem Nicht-Abhängigkeitskettenmodus sind.
  29. Verfahren nach Anspruch 28, wobei das Verarbeiten der Programmanweisungen das Ausführen der Programmanweisungen in einem der Mehrzahl von Verarbeitungspfaden umfaßt.
  30. Verfahren nach Anspruch 28, wobei das Verarbeiten der Programmanweisungen das Ausführen der Programmanweisungen in einem breitesten Pfad einer Mehrzahl von Verarbeitungspfaden umfaßt.
  31. Vorrichtung umfassend: einen Prozessor, der in der Lage ist, eine Mehrzahl von Abhängigkeitsketten einer Spur parallel zu verarbeiten.
  32. Vorrichtung nach Anspruch 31, wobei der Prozessor eine Mehrzahl von Clustern umfaßt, um unabhängig mindestens eine der Abhängigkeitsketten auszuführen.
  33. Vorrichtung nach Anspruch 32, wobei eine oder mehrere Clusters einen lokalen Speicher umfassen, um Daten zu speichern, die während der Ausführung der Abhängigkeitsketten zu benutzen sind.
  34. Vorrichtung nach Anspruch 33, wobei der lokale Speicher ein lokales Register ist.
  35. Vorrichtung nach Anspruch 32, wobei der Prozessor einen globalen Speicher umfaßt, um Daten zu speichern, die von zwei oder mehreren der Clusters benutzt werden.
  36. Vorrichtung nach Anspruch 35, wobei der globale Speicher ein globales Register ist.
  37. Vorrichtung nach Anspruch 31, wobei der Prozessor in der Lage ist, eine oder mehrere der Abhängigkeitsketten in einem Nichtabhängigkeitsmodus auszuführen, wenn eine Ausnahme oder Fehlvorhersage eintritt.
  38. Vorrichtung nach Anspruch 31, wobei der Prozessor in der Lage ist, Programmanweisungen auszuführen, die nicht Teil einer der Abhängigkeitsketten im Nichtabhängigkeitskettenmodus sind.
  39. Vorrichtung nach Anspruch 38, wobei der Prozessor Programmanweisungen in einer der Mehrzahl von Clustern ausführt.
  40. Vorrichtung nach Anspruch 38, wobei der Prozessor die Programmanweisungen in einem breitesten Cluster der Mehrzahl von Clustern ausführt.
  41. Computerplattform umfassend: einen Prozessor, der in der Lage ist, eine Mehrzahl von Abhängigkeitsketten einer Spur eines Satzes von Zielanweisungen parallel zueinander zu verarbeiten; und einen Speicher zum Speichern des Satzes von Zielanweisungen.
  42. Computerplattform nach Anspruch 41, wobei der Prozessor eine Mehrzahl von Clustern umfaßt, um unabhängig mindestens eine der Abhängigkeitsketten auszuführen.
  43. Computerplattform nach Anspruch 41, wobei der Prozessor in der Lage ist, eine oder mehrere der Abhängigkeitsketten in einem Nichtabhängigkeitskettenmodus auszuführen, wenn eine Ausnahme oder Fehlvorhersage eintritt.
  44. Programmspeichergerät mit von einer Maschine lesbaren Anweisungen, welche bei ihrer Ausführung durch die Maschine folgendes bewirken: paralleles Verarbeiten einer Mehrzahl von Abhängigkeitsketten einer Spur.
  45. Programmspeichergerät nach Anspruch 44, wobei die Anweisungen, die das parallele Verarbeiten einer Mehrzahl von Abhängigkeitsketten folgendes bewirkt: Zuweisen mindestens einiger der Abhängigkeitsketten zu einer Mehrzahl von Verarbeitungspfaden gemäß eines vordefinierten Schemas; und Ausführen mindestens einiger der Verarbeitungspfade unabhängig voneinander.
  46. Verfahren umfassend: Abbilden einer Mehrzahl von Abhängigkeitsketten auf ein oder mehrere Cluster, wobei eine Ausgabebreite eines oder mehrerer der Clusters an die Aufnahme einer Größe der Abhängigkeitsketten angepaßt wird.
  47. Verfahren nach Anspruch 46, wobei das Abbilden umfaßt: Sortieren der Abhängigkeitsketten nach ihrer Breite; Sortieren der Cluster nach ihrer Ausgabebreite; und Zuordnen der Abhängigkeitsketten zu den Clustern in der Reihenfolge, in der sie sortiert werden.
  48. Verfahren nach Anspruch 47, ferner umfassend: Identifizieren eines Clusters, das einen niedrigsten Lastwert aufweist; Zuordnen einer nicht abgebildeten Abhängigkeitskette zum Cluster niedrigster Last; und Wiederholen des Identifizierens und Zuordnens so lange, bis ein vorherbestimmtes Kriterium erfüllt ist.
  49. Verfahren nach Anspruch 46, wobei das Abbilden umfaßt: Umwandeln eines Satzes von Programmanweisungen in eine Kette von Kennungen; und Komprimieren der Kette von Kennungen zum Erstellen der Mehrzahl von Abhängigkeitsketten.
  50. Verfahren nach Anspruch 49, welches ferner das Parsen der Mehrzahl von Abhängigkeitsketten zum Erhalt mindestens einer Anweisungsspur umfaßt.
  51. Verfahren nach Anspruch 49, wobei das Komprimieren das Komprimieren der Kette von Kennungen unter Verwendung eines Sequitur-Komprimierungsalgorithmus umfaßt.
  52. Verfahren nach Anspruch 49, wobei das Umwandeln folgendes umfaßt: Aufteilen der Programmanweisungen in ein oder mehrere atomare Blöcke; und Zuweisen eindeutiger Kennungen zu dem einen oder den mehreren atomaren Blöcken.
  53. Verfahren nach Anspruch 49, welches das Optimieren der Mehrzahl von Abhängigkeitsketten unter Verwendung eines Anweisungsduplizierungsalgorithmus umfaßt.
  54. Vorrichtung umfassend: einen Prozessor, der in der Lage ist, eine Mehrzahl von Abhängigkeitsketten auf ein oder mehrere Clusters abzubilden, wobei eine Ausgabebreite eines oder mehrerer der Clusters zur Aufnahme einer Größe der Abhängigkeitsketten angepaßt ist.
  55. Vorrichtung nach Anspruch 54, wobei der Prozessor in der Lage ist, die Abhängigkeitsketten nach ihrer Breite zu sortieren, Clusters nach ihrer Ausgabebreite zu sortieren, und die Abhängigkeitsketten den Clustern in der Reihenfolge, in der sie sortiert wurden, zuzuordnen.
  56. Vorrichtung nach Anspruch 55, wobei der Prozessor in der Lage ist, ein Cluster mit einem niedrigsten Lastwert wiederholt zu identifizieren und eine nicht abgebildete Abhängigkeitskette dem niedrigsten Last-Cluster so lange zuzuordnen, bis ein vorherbestimmtes Kriterium erfüllt ist.
  57. Vorrichtung nach Anspruch 54, wobei der Prozessor in der Lage ist, einen Satz von Programmanweisungen in eine Kette von Kennungen umzuwandeln und die Kette von Kennungen zu komprimieren, um die Mehrzahl von Abhängigkeitsketten zu erstellen.
  58. Vorrichtung nach Anspruch 57, wobei der Prozessor in der Lage ist, die Mehrzahl von Abhängigkeitsketten zu parsen, um mindestens eine Anweisungsspur zu erhalten.
  59. Vorrichtung nach Anspruch 57, wobei der Prozessor in der Lage ist, die Programmanweisungen in einen oder mehrere atomare Blöcke aufzuteilen und dem einen oder den mehreren atomaren Blöcken eindeutige Kennungen zuzuweisen.
  60. Vorrichtung nach Anspruch 57, wobei der Prozessor in der Lage ist, die Mehrzahl von Abhängigkeitsketten unter Verwendung eines Anweisungsduplizier-Algorithmus zu optimieren.
  61. Computerplattform umfassend: einen Prozessor, der in der Lage ist, eine Mehrzahl von Abhängigkeitsketten eines Satzes von Zielanweisungen auf ein oder mehrere Clusters abzubilden; und einen Speicher zum Speichern des Satzes von Programmanweisungen, wobei eine Ausgabebreite eines oder mehrerer der Clusters zur Aufnahme einer Größe der Abhängigkeitsketten angepaßt ist.
  62. Computerplattform nach Anspruch 61, wobei der Prozessor in der Lage ist, die Abhängigkeitsketten nach ihrer Breite zu sortieren, die Clusters nach ihrer Ausgabebreite zu sortieren und die Abhängigkeitsketten den Clustern in der Reihenfolge, in der sie sortiert wurden, zuzuordnen.
  63. Computerplattform nach Anspruch 62, wobei der Prozessor in der Lage ist, ein Cluster mit einem niedrigsten Lastwert wiederholt zu identifizieren und eine nicht abgebildete Abhängigkeitskette dem Cluster niedrigster Last so lange zuzuordnen, bis ein vorherbestimmtes Kriterium erfüllt ist.
  64. Programmspeichergerät mit von einer Maschine lesbaren Anweisungen, welche bei ihrer Ausführung durch die Maschine folgendes bewirken: Abbilden einer Mehrzahl von Abhängigkeitsketten eines Satzes von Zielanweisungen auf ein oder mehrere Clusters.
  65. Programmspeichergerät nach Anspruch 64, wobei die Anweisungen, die das Abbilden bewirken, das Sortieren der Abhängigkeitsketten nach ihrer Breite; das Sortieren der Clusters nach ihrer Ausgabebreite; und das Zuordnen der Abhängigkeitsketten zu den Clustern in der Reihenfolge, in der sie sortiert wurden, bewirken.
  66. Programmspeichergerät nach Anspruch 65, das Anweisungen umfaßt, die folgendes bewirken: das Identifizieren eines Clusters mit einem niedrigsten Lastwert; das Zuordnen einer nicht abgebildeten Abhängigkeitskette zum niedrigsten Last-Cluster; und das Wiederholen des Identifizierens und des Zuordnens so lange, bis ein vorherbestimmtes Kriterium erfüllt ist.
DE112005002317T 2004-09-28 2005-09-12 Verfahren für die Verarbeitung von Abhängigkeitsketten Expired - Fee Related DE112005002317B4 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US10/950,693 2004-09-28
US10/950,693 US7603546B2 (en) 2004-09-28 2004-09-28 System, method and apparatus for dependency chain processing
PCT/US2005/032118 WO2006036504A2 (en) 2004-09-28 2005-09-12 System, method and apparatus for dependency chain processing

Publications (2)

Publication Number Publication Date
DE112005002317T5 true DE112005002317T5 (de) 2007-09-20
DE112005002317B4 DE112005002317B4 (de) 2010-08-26

Family

ID=35929659

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112005002317T Expired - Fee Related DE112005002317B4 (de) 2004-09-28 2005-09-12 Verfahren für die Verarbeitung von Abhängigkeitsketten

Country Status (5)

Country Link
US (1) US7603546B2 (de)
JP (1) JP4745341B2 (de)
CN (1) CN101044457B (de)
DE (1) DE112005002317B4 (de)
WO (1) WO2006036504A2 (de)

Families Citing this family (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7457671B2 (en) 2004-09-30 2008-11-25 Rockwell Automation Technologies, Inc. Systems and methods that facilitate management of add-on instruction generation, selection, and/or monitoring during execution
US8499293B1 (en) * 2005-09-28 2013-07-30 Oracle America, Inc. Symbolic renaming optimization of a trace
US7904892B2 (en) * 2006-01-06 2011-03-08 Northrop Grumman Corporation Systems and methods for identifying and displaying dependencies
JP4884297B2 (ja) * 2006-05-26 2012-02-29 パナソニック株式会社 コンパイラ装置、コンパイル方法およびコンパイラプログラム
EP2135163B1 (de) 2007-04-11 2018-08-08 Apple Inc. Paralle datenverarbeitung auf mehreren prozessoren
US8286196B2 (en) * 2007-05-03 2012-10-09 Apple Inc. Parallel runtime execution on multiple processors
US8108633B2 (en) * 2007-04-11 2012-01-31 Apple Inc. Shared stream memory on multiple processors
US11836506B2 (en) 2007-04-11 2023-12-05 Apple Inc. Parallel runtime execution on multiple processors
US8276164B2 (en) 2007-05-03 2012-09-25 Apple Inc. Data parallel computing on multiple processors
US8341611B2 (en) 2007-04-11 2012-12-25 Apple Inc. Application interface on multiple processors
EP2023572B1 (de) 2007-08-08 2017-12-06 Oracle International Corporation Verfahren, computerprogramm und vorrichtung zur steuerung des zugangs zu einer computer-ressource und zur gewinnung einer baseline dafür
US8789031B2 (en) * 2007-09-18 2014-07-22 Intel Corporation Software constructed strands for execution on a multi-core architecture
US7493610B1 (en) 2008-03-27 2009-02-17 International Business Machines Corporation Versioning optimization for dynamically-typed languages
US8286198B2 (en) 2008-06-06 2012-10-09 Apple Inc. Application programming interfaces for data parallel computing on multiple processors
US8225325B2 (en) 2008-06-06 2012-07-17 Apple Inc. Multi-dimensional thread grouping for multiple processors
WO2010004474A2 (en) * 2008-07-10 2010-01-14 Rocketic Technologies Ltd Efficient parallel computation of dependency problems
CN102197376B (zh) * 2008-10-24 2014-01-15 国际商业机器公司 源代码处理方法、系统及程序
JP4629768B2 (ja) 2008-12-03 2011-02-09 インターナショナル・ビジネス・マシーンズ・コーポレーション 並列化処理方法、システム、及びプログラム
US8825473B2 (en) * 2009-01-20 2014-09-02 Oracle International Corporation Method, computer program and apparatus for analyzing symbols in a computer system
JP4886838B2 (ja) * 2009-10-30 2012-02-29 インターナショナル・ビジネス・マシーンズ・コーポレーション 並列化方法、システム、及びプログラム
CN103154890B (zh) * 2010-10-12 2016-04-13 富士通株式会社 模拟装置、方法以及程序
US8589901B2 (en) 2010-12-22 2013-11-19 Edmund P. Pfleger Speculative region-level loop optimizations
US8793675B2 (en) * 2010-12-24 2014-07-29 Intel Corporation Loop parallelization based on loop splitting or index array
CN102855339A (zh) * 2011-06-29 2013-01-02 北京华大九天软件有限公司 集成电路版图验证并行处理解决方案
JP6021342B2 (ja) * 2012-02-09 2016-11-09 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation 並列化方法、システム、及びプログラム
EP2912548B1 (de) * 2012-10-25 2018-04-11 Intel Corporation Kompilationssystem mit partieller vektorisierung
US9122494B2 (en) * 2013-05-15 2015-09-01 National Tsing Hua University Method and apparatus for code size reduction
US9195436B2 (en) * 2013-10-14 2015-11-24 Microsoft Technology Licensing, Llc Parallel dynamic programming through rank convergence
CN105988952B (zh) * 2015-02-28 2019-03-08 华为技术有限公司 为内存控制器分配硬件加速指令的方法和装置
CN106843812A (zh) * 2016-12-23 2017-06-13 北京北大众志微系统科技有限责任公司 一种实现间接转移关联软件预测的方法及装置
EP3343351B1 (de) * 2016-12-28 2023-04-26 Waseda University Paralleles programmgenerierungsverfahren und kompilierende parallelisierungsvorrichtung
JP7211052B2 (ja) * 2018-12-06 2023-01-24 富士通株式会社 ストリーム処理パイプラインの自動生成方法、データストリーム処理プログラムおよびデータストリーム処理システム
CN111047036B (zh) * 2019-12-09 2023-11-14 Oppo广东移动通信有限公司 神经网络处理器、芯片和电子设备
US11157388B1 (en) * 2020-07-10 2021-10-26 Microsoft Technology Licensing, Llc Trace identification based on wait chain coverage analysis
US11755539B2 (en) * 2021-03-22 2023-09-12 Renmin University Of China Big data processing method based on direct computation of compressed data

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5699537A (en) * 1995-12-22 1997-12-16 Intel Corporation Processor microarchitecture for efficient dynamic scheduling and execution of chains of dependent instructions
US6745384B1 (en) * 1998-05-29 2004-06-01 Microsoft Corporation Anticipatory optimization with composite folding
US6651247B1 (en) * 2000-05-09 2003-11-18 Hewlett-Packard Development Company, L.P. Method, apparatus, and product for optimizing compiler with rotating register assignment to modulo scheduled code in SSA form
US6615403B1 (en) * 2000-06-30 2003-09-02 Intel Corporation Compare speculation in software-pipelined loops
US6813693B2 (en) * 2000-12-11 2004-11-02 Microsoft Corporation System and method for the discovery and use of repetitively accessed data
US6941548B2 (en) * 2001-10-16 2005-09-06 Tensilica, Inc. Automatic instruction set architecture generation
US7137111B2 (en) * 2001-11-28 2006-11-14 Sun Microsystems, Inc. Aggressive prefetch of address chains

Also Published As

Publication number Publication date
CN101044457B (zh) 2010-12-08
CN101044457A (zh) 2007-09-26
US7603546B2 (en) 2009-10-13
DE112005002317B4 (de) 2010-08-26
WO2006036504A3 (en) 2007-02-08
WO2006036504A2 (en) 2006-04-06
JP4745341B2 (ja) 2011-08-10
US20060070047A1 (en) 2006-03-30
JP2008515051A (ja) 2008-05-08

Similar Documents

Publication Publication Date Title
DE112005002317B4 (de) Verfahren für die Verarbeitung von Abhängigkeitsketten
DE4217012C2 (de) Mit einer Vielzahl von Befehlsströmen und statischer Verschachtelung arbeitender Mikroprozessor
DE69722138T2 (de) Code-Optimierer für Pipeline-Rechner
DE112012000303B4 (de) Dynamische binäre Optimierung
DE69727453T2 (de) Kompilieren von prädikatiertem Code mit direkter Analyse desselben
DE10393481B4 (de) Verfahren und Vorrichtung zum Management einer Cache-Umgehung
DE19945992B4 (de) Dynamisch optimierender Objektcode-Übersetzer zur Architekturemulation und dynamisches optimierendes Objektcode-Übersetzungsverfahren
DE102016214786A1 (de) Anwendungsprofiling-Jobmanagement-System, -Programm und -Verfahren
DE69832932T2 (de) Programmkonvertiergerät für konstantenrekonstruierenden VLIW Prozessor
DE102020114218A1 (de) Verfahren und Vorrichtungen zum Verbessern der Laufzeitleistung auf einem heterogenen System ausgeführter Software
DE10393260T5 (de) Nachdurchgangs-Binäranpassung für eine auf Software basierende spekulative Vorberechnung
DE102013017982A1 (de) COMPILER gesteuerte Gebietsdisponierung für SIMD-Ausführung von Strängen
DE102015112202A1 (de) Kombinieren von Pfaden
EP2137615B1 (de) Verfahren zum rechnergestützten ermitteln der abhängigkeiten einer vielzahl von modulen eines technischen systems, insbesondere eines softwaresystems
DE112006004005T5 (de) Kommunikation zwischen Mehrfach-Ausführungsfolgen in einem Prozessor
EP0689694A1 (de) Verfahren zur maschinellen erzeugung von nebenläufig bearbeitbaren befehlsgruppen aus einem programm für superskalare mikroprozessoren
DE102016204963A1 (de) Parallelisierungskompilierverfahren, Parallelisierungskompilierer und Fahrzeugvorrichtung
EP0825540B1 (de) Prozessor mit Pipelining-Aufbau
DE112018004660T5 (de) Verwenden von kommentaren zum bereitstellen von optimierungen
DE102020110655A1 (de) Verfahren und vorrichtung zum verbessern der verwendung eines heterogenen systems, das software ausführt
DE112013001735T5 (de) Optimieren des Verbindens von Anweisungen
DE102012204167A1 (de) Vorauslaufende genäherte Berechnungen
DE10306051A1 (de) Kernparallele Ausführung mit unterschiedlichen Optimierungscharakteristika, um den dynamischen Ausführungsweg zu verringern
DE102016204960A1 (de) Parallelisierungskompilierverfahren, Parallelisierungskompilierer und Fahrzeugvorrichtung
EP2386949B1 (de) Verfahren und Vorrichtung zum zuweisen einer Mehrzahl von Teilaufgaben einer Aufgabe zu einer Mehrzahl von Recheneinheiten einer vorgegebenen Prozessorarchitektur

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
8364 No opposition during term of opposition
R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee
R079 Amendment of ipc main class

Free format text: PREVIOUS MAIN CLASS: G06F0009450000

Ipc: G06F0008410000