-
Erklärung zum staatlich geförderten Forschungsprogramm
-
Diese Erfindung wurde mit staatlicher Unterstützung gemacht, die unter F33615-03-C-4106 durch die Luftwaffe gewährt wurde. Die US-Regierung hat gewisse Rechte an der Erfindung.
-
Hintergrund
-
Bei verteilten Prozessoren mit großem Bildschirmfenster ist eine Prädikation eine Technik, die genutzt wird, um Verzweigungen, die häufige Änderungen im Steuerfluss von Programmen bewirken, in Datenwerte zu konvertieren, die Befehle schützen und festlegen können, welche Befehle ausgeführt werden und welche nicht. Die Prädikation kann den Steuerfluss linearisieren, wodurch erleichtert wird, dass Befehle auf beiden möglichen Pfaden zur Verfügung gestellt werden, auf denen eine Verzweigung bis zum Kollabieren verlaufen kann, sowie dass alle Befehle abgerufen werden und nur einige von ihnen, je nach Prädikat, ausgeführt werden. Während dieses Modell wirksam werden kann, um große Codeblöcke zu generieren, die sich über viele Ausführungseinheiten verteilen, kann dies zu einem Problem führen, bei dem die Prädikate, die in einer nicht-prädikaten Architektur Verzweigungen wären, zur Ausführungszeit bewertet werden (im Gegensatz zu Verzweigungen, die kurz nach dem Abrufen hochgerechnet werden). Dieser Aufschub der Beurteilung der Prädikate kann die Leistungsfähigkeit beträchtlich reduzieren.
-
Aktuelle Technologien wenden eine von zwei möglicherweise nicht wünschenswerten Optionen an. Erstens bevorzugen diese Technologien, die Prädikation zu umgehen, wodurch jede Steuerentscheidung eine Verzweigung wird und möglicherweise die Verteilung von Befehlen über einen großen verteilten Prozessor ausgeschlossen wird. Eine zweite Alternative kann es sein, Befehle zu prädizieren, aber den Abruf und die Prädikatvorhersage in einer einzigen Einheit zu zentralisieren, was zu einer niedrigen Abrufbandbreite führt und wodurch wiederum die Verteilung über einen großen verteilten Mehrkernprozessor ausgeschlossen wird.
-
In hybriden Datenfluss-Architekturen, wie zum Beispiel EDGE-Architekturen (Explicit Data Graph Execution), kann ein Steuerfluss eine Mischung von Verzweigungen und Prädikaten sein. Die Festlegung, welche Verzweigungen mittels der Wenn-Funktion in Prädikate umgewandelt werden können, ist möglicherweise ein komplexes Problem. Es kann vorzugsweise für schwer hochzurechnende Verzweigungen prädiziert werden, und Verzweigungen, die einen ausreichend linearisierten Steuerfluss ermöglichen, werden prädiziert. Die übrigen Steuerpunkte können als Verzweigungen verbleiben. Mit einer solchen Partitionierung kann das Vorhersageschema alle Verzweigungen und die meisten vorhersagbaren Prädikate hochrechnen, wobei die Beurteilung der schwer hochzurechnenden Prädikate auf die Ausführungszeit verschoben wird.
-
In einer verteilten Datenflussmaschine kann jedoch die Verwaltung vollständiger Steuerverläufe, um eine genaue Prädikatvorhersage zu ermöglichen, schwierig sein. Frühere Bemühungen in diesem Bereich sind normalerweise von einem Kompilierer ausgegangen, der die „Wenn-Umwandlung” auf schwer hochzurechnende Verzweigungen anwendet, sowie von einem speziellen Mikroarchitektur-Mechanismus zur Wiederherstellung von Fällen, bei denen der Kompilierer aufgrund fehlender Laufzeitinformationen Fehler macht. Folglich haben die meisten bisher bekannten Datenflussmaschinen keine Prädikatvorhersage in einer für kommerzielle Anwendungen effektiven Art und Weise angewendet.
-
Übersicht
-
Beispiele eines Systems, Verfahrens und maschinenverarbeitbaren Mediums sind dafür vorgesehen, eine Prädikatvorhersage für eine verteilte Mehrkern-Architektur zu generieren. Unter Verwendung eines solchen Systems, Verfahrens und maschinenverarbeitbaren Mediums ist es möglich, eine annähernde Prädikat-Pfadinformation zu Verzweigungsbefehlen zu kodieren. Mittels dieser statisch generierten Informationen können verteilte Prädikatvorhersager dynamische Prädikatverläufe generieren, die eine genaue Vorhersage von Prädikaten mit hohem Vertrauensniveau ermöglichen können, wobei gleichzeitig die Kommunikation zwischen den Kernen minimiert wird.
-
In einem Beispiel ist ein Computersystem vorgesehen. Zu dem Computersystem kann ein Mehrkernprozessor gehören, der eine Vielzahl von Prozessorkernen aufweist. Jeder der Kerne kann einen Prädikatvorhersager umfassen. Der Prädikatvorhersager kann konfiguriert sein, um eine Prädikatvorhersage zu generieren.
-
In einem anderen Beispiel ist ein Verfahren zur Bereitstellung einer Prädikatvorhersage in einem Mehrkernprozessor vorgesehen. Das Verfahren kann einen Prädikatvorhersager für jeden Prozessorkern aus der Vielzahl der Prozessorkerne in einem Mehrkernprozessor umfassen und die Prädikatvorhersage aus einer Vielzahl von Verzweigungsbefehlen unter Verwendung der Prädikatvorhersager generieren.
-
In einem weiteren Beispiel ist ein maschinenverarbeitbares Medium vorgesehen, auf dem durch Computer ausführbare Befehle zur Bereitstellung einer Prädikatvorhersage innerhalb eines Computersystems mit einem Mehrkernprozessor gespeichert sind. Eine Verarbeitungseinrichtung kann konfiguriert sein, um Verarbeitungsprozesse auszuführen, wenn die Verarbeitungseinrichtung die Befehle ausführt. Zu den Verarbeitungsprozessen kann die Bereitstellung eines Prädikatvorhersagers für jeden der Vielzahl der Prozessorkerne im Mehrkernprozessor gehören, wobei jeder der Prozessorkerne mindestens einen Prädikatvorhersager umfasst, sowie die Generierung der Prädikatvorhersage unter Verwendung der Prädikatvorhersager.
-
Während mehrere Beispiele offengelegt werden, erschließen sich Kennern der Technik aus der nachfolgenden detaillierten Beschreibung noch weitere Beispiele. Wie offensichtlich wird, sind das System, das Verfahren und das maschinenverarbeitbare Medium in der Lage, Modifikationen in verschiedenen offensichtlichen Aspekten zu bewerkstelligen, ohne vom Sinn und dem Umfang der hier enthaltenen Erläuterungen abzuweichen. Dementsprechend ist die detaillierte Beschreibung ihrem Wesen nach als veranschaulichende Darstellung und nicht als Einschränkung anzusehen.
-
Kurze Beschreibung der Zeichnungen
-
Die vorstehenden und weiteren Merkmale der vorliegenden Offenlegung erschließen sich umfassender aus der nachfolgenden Beschreibung und den beigefügten Ansprüchen, im Zusammenhang mit den beigefügten Zeichnungen gesehen. Aus der Erkenntnis, dass diese Zeichnungen nur einige Beispiele nach der Offenlegung veranschaulichen und daher nicht als Einschränkung ihres Geltungsbereichs zu verstehen sind, wird die Offenlegung zusätzlich genau und detailliert durch Verwendung der beigefügten Zeichnungen beschrieben, wobei gilt:
-
1 ist ein Blockschema eines typischen Computersystems nach einem Beispiel;
-
2 ist ein Blockschema und Ablaufschema eines Prädikatvorhersagesystems nach einem Beispiel;
-
3 ist ein Block- und Ablaufschema des Prädikatvorhersagesystems nach einem weiteren Beispiel;
-
4 ist ein Block- und Ablaufschema eines geometrischen Verlaufslängevorhersagers nach einem Beispiel;
-
5 ist ein Block- und Ablaufschema eines geeigneten Verfahrens für eine Prädikatvorhersage nach einem Beispiel; und
-
6(a) und 6(b) sind Block- und Ablaufschemata eines globalen Verlaufsregisters nach einigen Beispielen.
-
Detaillierte Beschreibung
-
In der folgenden detaillierten Beschreibung wird Bezug auf die beigefügten Zeichnungen genommen, die Teil dieses Dokuments sind. In den Zeichnungen kennzeichnen ähnliche Symbole normalerweise ähnliche Komponenten, es sei denn, der Kontext verlangt Anderweitiges. Die veranschaulichenden Beispiele, die in der detaillierten Beschreibung angeführt werden, die Zeichnungen und Ansprüche stellen keine Einschränkung dar. Weitere Beispiele können genutzt werden, weitere Änderungen können vorgenommen werden, ohne vom Sinn oder dem Umfang des hier vorgestellten Inhalts abzuweichen. Es wird sich leicht erschließen, dass die Aspekte der vorliegenden Offenlegung, die hier allgemein beschrieben und in den Figuren veranschaulicht werden, in einer Vielzahl unterschiedlicher Konfigurationen zusammengestellt, ausgetauscht, kombiniert, getrennt und ausgelegt werden können, wobei alle hierin implizit eingeschlossen sind.
-
Diese Offenlegung bezieht sich auf Verfahren, Vorrichtung, Computerprogramme und Systeme, die sich auf die Verzweigungsvorhersage beziehen. Bestimmte bevorzugte Ausführungsformen eines solchen Systems sind in den Figuren veranschaulicht und nachfolgend beschrieben. Außerdem sind viele andere Ausführungsformen möglich, zeitliche und räumliche Beschränkungen verhindern aber, dass eine umfassende Auflistung dieser Ausführungsformen in einem Dokument enthalten ist. Dementsprechend erschließen sich Kennern der Technik aus den Erläuterungen zu diesem Patent weitere Ausführungsformen innerhalb des Geltungsbereichs der Ansprüche.
-
Die Figuren enthalten Nummerierungen zur Bezeichnung der veranschaulichten Komponenten der Beispiele, die innerhalb der Zeichnungen dargestellt werden, einschließlich der folgenden: ein Computersystem 100, ein Prozessor 101, ein Systembus 102, ein Betriebssystem 103, eine Applikation 104, ein Nur-Lese-Speicher 105, ein Speicher mit wahlfreiem Zugriff 106, ein Festplattenadapter 107, eine Festplatteneinheit 108, ein Kommunikationsadapter 109, ein Schnittstellenadapter 110, ein Displayadapter 111, eine Tastatur 112, eine Maus 113, ein Lautsprecher 114, ein Anzeigemonitor 115, eine IT-Umgebung 201, ein Anwendungsprogramm 202, ein Befehlsdatenfluss 203, einen Kompilierer 204, Verzweigungsbefehle 205, eine annähernde Prädikatpfadinformation 206, ein zweiter Befehlsdatenfluss 207, ein Prozessor 210, Prozessorkerne 211–213, Prädikatvorhersager 214–216, eine Prädikatvorhersage 220, Blockbefehle 301–303, Blockanfangsadressen 304–306, ein geometrischer Verlaufslängenvorhersager 400, ein kernspezifisches Verlaufsregister 401, ein globales Verlaufsregister 402, ein Summationsblock 404, ein Vorhersagezeichen 405, globale Vorhersagetabellen 406–409, eine Konfidenz-Vorhersagetabelle 410, ein Zähler 411, eine kernspezifische Vorhersagetabelle 412, ein kernspezifisches Prädikatverlaufsregister sowie globale Verlaufsregister 601–603, 605.
-
1 ist eine schematische Darstellung eines Blockdiagramms eines Computersystems 100, das nach einigen Beispielen angeordnet ist. Das Computersystem 100 ist außerdem typisch für eine Hardwareumgebung für ein Beispiel der vorliegenden Offenlegung. So kann zum Beispiel das Computersystem 100 einen Prozessor 101 aufweisen, der mit verschiedenen anderen Komponenten durch einen Systembus 102 gekoppelt ist. Der Prozessor 101 kann ein heterogener Mehrkernprozessor mit einer Vielzahl von Prädikatvorhersagern 214–216 sein, die nach den hier enthaltenen Beispielen angeordnet sind. Eine detailliertere Beschreibung des Prozessors 101 wird nachfolgend in Verbindung mit einer Beschreibung des in 2 dargestellten Beispiels zur Verfügung gestellt. In Bezug auf 1 kann ein Betriebssystem 103 auf dem Prozessor 101 laufen und die Funktionen der unterschiedlichen Komponenten der 1 koordinieren und steuern. Eine Applikation 104 nach den Prinzipien der Beispiele der vorliegenden Offenlegung kann in Verbindung mit dem Betriebssystem 103 ausgeführt werden und Aufrufe und/oder Anweisungen an Betriebssystem 103, wo die Aufrufe/Befehle zur Umsetzung der verschiedenen Funktionen oder Dienste, die durch die Applikation 104 ausgeführt werden sollen, zur Verfügung stellen.
-
In Bezug auf 1 kann ein Nur-Lese-Speicher (”ROM”) 105 an einen Systembus 102 gekoppelt sein und ein grundlegendes Input/Output-System (”BIOS”) enthalten, das bestimmte grundlegende Funktionen des Computergeräts 100 steuern kann. Ein Speicher mit wahlfreiem Zugriff (”RAM”) 106 und ein Festplattenadapter 107 können ebenfalls an den Systembus 102 gekoppelt sein. Es ist anzumerken, dass Softwarekomponenten, einschließlich des Betriebssystems 103 und der Applikation 104, in den RAM 106 geladen werden können, die der Hauptspeicher des Computersystems 100 für die Ausführung sein können. Ein Festplattenadapter 107 kann vorgesehen sein, der eine integrierte Antriebselektronik (”IDE”) oder ein PATA-Adapter (Parallel Advanced Technology Attachment), ein SATA-Adapter (Serial Advanced Technology Attachment), ein SCSI-Adapter (Small Computer System Interface), ein universeller serieller Bus-Adapter (”USB”), ein IEEE1394-Adaptor oder ein beliebiger anderer geeigneter Adapter sein kann, der mit einer Festplatteneinheit 108, z. B. einem Laufwerk, kommuniziert.
-
In Bezug auf 1 kann ein Computersystem 100 des Weiteren einen Kommunikationsadapter 109 umfassen, der mit dem Bus 102 gekoppelt ist. Der Kommunikationsadapter 109 kann den Bus mit einem externen Netzwerk (nicht dargestellt) verbinden und dadurch ermöglichen, dass das Computersystem 100 mit anderen ähnlichen und/oder unterschiedlichen Geräten kommuniziert.
-
Eingabe-/Ausgabe-(”I/O”)-Geräte können ebenfalls mit dem Computersystem 100 verbunden sein, und zwar über einen Benutzerschnittstellenadapter 110 und einen Displayadapter 111. So können zum Beispiel eine Tastatur 112, eine Maus 113 und ein Lautsprecher 114 über den Benutzerschnittstellenadapter 110 an den Bus 102 angeschlossen sein. Daten können dem Computersystem 100 durch eines dieser als Beispiel dienenden Geräte zur Verfügung gestellt werden. Ein Anzeigemonitor 115 kann durch den Displayadapter 111 an den Systembus 102 angeschlossen sein. In dieser als Beispiel dienenden Art und Weise kann ein Anwender dem Computersystem 100 Daten oder andere Informationen durch eine Tastatur 112 und/oder eine Maus 113 zur Verfügung stellen und über das Display 115 und/oder den Lautsprecher 114 eine Ausgabe vom Computersystem 100 erhalten.
-
Die verschiedenen Aspekte, Funktionen, Ausführungsformen oder Anwendungen der Beispiele der hier beschriebenen vorliegenden Offenlegung können allein oder in unterschiedlichen Kombinationen verwendet werden. Die als Beispiel dienenden Verfahren der vorliegenden Offenlegung können durch die Software, Hardware oder eine Kombination von Hardware und Software umgesetzt werden (z. B. auf einem maschinenverarbeitbaren Medium gespeicherte Software).
-
Hier wird ein Beispiel eines Prädikatvorhersageschemas für eine verteilte Mehrkern-Mikroarchitektur beschrieben, das auf einem Prozessor 101 umgesetzt und zum Beispiel angepasst werden kann, um mit einer EDGE-Mikroarchitektur (Explicit Data Graph Execution) verwendet werden zu können. Das Beispiel des verteilten Schemas kann auf einem Kompilierer beruhen, um die annähernden Prädikatpfadinformationen in den Verzweigungsbefehlen intelligent zu verschlüsseln. Unter Verwendung dieser statisch generierten Informationen können verteilte Prädikatvorhersager dynamische Prädikatverläufe generieren, die eine genaue Vorhersage von Prädikaten mit hohem Vertrauensniveau ermöglichen, während gleichzeitig die Kommunikation zwischen den Kernen reduziert wird. Das Beispiel des genauen und effizienten verteilten Prädikatvorhersageschemas ermöglicht es dem Kompilierer, den Code offensiv zu prädizieren, z. B. indem er auf den Prädikatvorhersager vertraut und eine aufwändige Berechnung vermeidet.
-
Somit kann, wie in 2 dargestellt ist, eine IT-Umgebung 201 im Computersystem 100 vorgesehen werden, zu der ein Software-Anwendungsprogramm 202 und ein Kompilierer 204 gehören können. Das Anwendungsprogramm 202 kann einen Befehlsdatenfluss 203 erzeugen, von denen einige oder viele Verzweigungsbefehle sein können. Der Kompilierer 204 kann die Verzweigungsbefehle 205 mit einer annähernden Prädikatpfadinformation 206 verschlüsseln. Die daraus resultierenden Befehlsdaten 207 können zur Ausführung an einen Prozessor 101, 210 fließen. Der Prozessor 210 kann eine Vielzahl von Prozessorkernen umfassen (zur Vereinfachung wurden z. B. drei Prozessorkerne als Kerne 211–213 dargestellt), wobei jeder davon entsprechend einen der Prädikatvorhersager 214–216 enthalten kann. Diese Vorhersager 214–216 können dann die vom Kompilierer verschlüsselte Prädikatpfadinformation 206 verwenden, um genaue Vorhersagen von Prädikaten mit hohem Vertrauensniveau zu ermöglichen [Block 220].
-
Nachfolgend wird eine weitere Beschreibung der EDGE-Befehlssatzarchitektur (ISA – Instruction set architecture) zur Verfügung gestellt. Es ist jedoch zu verstehen, dass die Beispiele der vorliegenden Erfindung in ähnlicher Weise mit anderen ISAs verwendet werden können. Die EDGE-ISA weist zwei als Beispiel dienende Merkmale auf, z. B. eine block-atomare Ausführung (entweder alle Befehle eines Blocks vollständig ausführen und weitergeben oder keine von ihnen ausführen) und eine direkte Befehlskommunikation (die ISA kann die Abhängigkeiten in den Befehlen innerhalb des Blocks verschlüsseln). Unter Verwendung dieses als Beispiel dienenden Modells kann ein Block des Befehlsdatenflusses, z. B. der Befehlsdatenfluss 203, seine Operation beenden, wenn er einen kontinuierlichen Ausgabesatz erzeugt. So kann zum Beispiel mit jeder Ausführungsrunde ein Block Daten schreiben oder der gleichen Anzahl von Registern zur Verfügung stellen, die gleiche Anzahl gespeicherter Daten generieren, die statisch im Blockkopf verschlüsselt ist, und zwar zusätzlich zum Generieren von genau einer Verzweigungsausgabe. Die Befehle können durch Register und den Speicher 105, 106 zwischen den Blöcken kommunizieren.
-
Die Befehle können anhand ihres Indexes im Befehlsblock über einige oder alle Kerne, die zu einem Prozessor 101, 210 zusammengefasst sind, überlappen. Ändert sich die Konfiguration des Prozessorkerns, zum Beispiel wenn die Kerne als getrennte Verarbeitungseinheiten arbeiten, dann kann sich der Überlappunysprozess entsprechend ändern, wodurch es dem Prozessor ermöglicht wird, den Block auf einem oder mehreren der Kerne auszuführen. Jeder Befehlsblock kann einen Prädikatoperanden aufweise, der die EDGE-ISA komplett prädiziert gestalten kann. Unter Verwendung des Modells der Datenflussausführung (z. B. eine direkte Kommunikation der Operanden) kann ein Befehlsblock ausgeführt werden, wenn er alle seine Operanden empfängt, sowie, falls er prädiziert ist, das entsprechende Prädikat.
-
In einer Architektur nach einem Beispiel kann jeder Befehlsblock einen bestimmten Kern aufweisen (z. B. einen Besitzerkern), der die angeschlossenen oder beteiligten Kerne koordiniert, um die Ausführung eines solchen Blocks zu ermöglichen. Der Besitzerkern kann zum Beispiel durch eine Blockanfangsadresse identifiziert werden, in ähnlicher oder gleicher Weise wie ein Programmzähler in herkömmlichen Architekturen. In Bezug auf 3 ist eine Vielzahl von Befehlsblöcken vorgesehen (z. B. drei Blöcke, die zur Vereinfachung als Blöcke 301–303 dargestellt werden), wobei jeder Block eine entsprechende Blockanfangsadresse 304–306 umfasst. Diese Adressen 304–306 können genutzt werden, um die entsprechenden Besitzerkerne 211–213 zu identifizieren. Wie in 3 dargestellt ist, kann der Block 301 durch die entsprechende Adresse 304 dem Kern 211 zugeordnet werden (z. B. im Besitz von diesem sein), der Block 302 kann durch die entsprechende Adresse 305 dem Kern 213 zugeordnet werden und der Block 303 kann durch die entsprechende Adresse 306 dem Kern 212 zugeordnet werden. Die entsprechenden Besitzerkerne 211–213 können für die Übermittlung des Abrufbefehls verantwortlich sein, indem sie die nächste Blockadresse vorhersagen und ein Besitzzeichen darauf setzen, eine Information zur Beendigung erfassen (z. B. einschließlich Registerschreib-, Speicher, Ausgangs-/Verzweigungsadresse usw.), Commit- oder Flush-Befehl(e) übermitteln und schließlich die Commit-Bestätigung erhalten.
-
Des Weiteren kann einer oder mehrere der entsprechenden Besitzerkerne 211–213 die Vorhersage der nächsten Blockadresse ermöglichen. Jeder einzelne der Kerne 211–213 einen der entsprechenden voll funktionsfähigen Blockvorhersager 214-216 umfassen, und die Vorhersager können zwischen den Kernen identisch sein oder sich voneinander unterscheiden. Der nächste der Blockvorhersager 214–216 kann einen Ausgangsvorhersager umfassen, der vorhersagen kann, welche Verzweigung aus dem Block zu nehmen ist, sowie das dazugehörige Ziel eines der Vorhersager 214–216, der die Adresse des nächsten der Blöcke 214–216 anhand des vorhergesagten Ausgangsziels vorhersagen kann. In Bezug auf 4 kann der Ausgangsvorhersager der Vorhersager 214–216 einen zweistufigen lokalen Vorhersager, einen globalen Vorhersager und/oder einen Auswahlvorhersager umfassen, die den lokalen Ausgangsverlauf 401 und den globalen Ausgangsverlauf 402 nutzen können. Die Ausgangsverläufe 401, 402 können von den Kernen 211–213 unter Verwendung der annähernden Prädikatpfadinformation 206, die statisch jedem Verzweigungsbefehl im entsprechenden Block zugeordnet ist, generiert werden. Die annähernde Prädikatpfadinformation 206 kann in den Verzweigungsbefehlen verschlüsselt sein und die spezifischen Verzweigungen eines bestimmten Blocks identifizieren. Der Kernpilierer 204 kann ursprünglich die annähernde Prädikatpfadinformation 206 aufgrund der Reihenfolge der Verzweigungsbefehle im entsprechenden Block zuweisen. Die Kerne 211–213 können den Ausgang nutzen, um die lokalen und globalen Verläufe im dazugehörigen Vorhersager zu generieren, anstelle einer genommenen/nicht genommenen Information (wie es in den herkömmlichen Architekturen zum Einsatz kommen kann).
-
Jeder der Kerne 211–213 kann mit einer Prädikatvorhersageeinrichtung erweitert werden, die den Ausgang der auf diesem Kern abgebildeten Prädikatbefehle vorhersagen kann. Ein globaler, auf dem Verlauf basierender Vorhersager, der einen Basisvorhersager und ein globales Verlaufsregister umfassen kann, kann in jedem Kern verwendet werden. Ein solcher globaler Verlaufsvorhersager kann versuchen, die globalen Verlaufsinformationen aufzubewahren, die in jedem der Kerne 211–213 aktualisiert werden, während gleichzeitig die Kommunikation zwischen den Kernen 211–213 reduziert wird. In Bezug auf 4 kann zuerst in einem Beispiel ein geometrischer Verlaufslängenvorhersager (GEHL) 400 als Basisvorhersager für die Ausführung einer verteilten Prädikatvorhersage verwendet werden. Zu dem GEHL-Vorhersager 400 gehören möglicherweise mehrere Vorhersagetafeln 406–409, die durch unabhängige Funktionen eines globalen Verzweigungsverlaufsregisters 402 und Verzweigungsadresse indiziert werden (z. B. ein kernspezifisches Verlaufsregister 401). Die Vorhersage kann auf dem Zeichen 405 der Summierung 404 über den von den Tabellen 406–409 abgerufenen Werten basieren, sowie auf einem Wert aus einer kernspezifischen Vorhersagetabelle 412, die mit dem kernspezifischen Verlaufsregister 401 verbunden ist. In diesem Beispiel kann ein großer Teil des Speicherplatzes genutzt werden, um einen Zusammenhang der neueren Verzweigungsverläufe zu erfassen und weiterhin eine Erfassung des Zusammenhangs mit bestimmten alten Verzweigungen zu ermöglichen.
-
In Bezug auf die globalen Prädikatverlaufsinformationen können nun mehrere geeignete Beispiele angeführt werden. Bestimmte Beispiele können einen hohen Genauigkeitsgrad erreichen, wobei gleichzeitig die Kommunikation zwischen den Kernen 211–213 verringert wird. In einem dieser Beispiele kann unter Bezugnahme auf 6a ein kernspezifisches Prädikatverlaufsregister (CLPHR – core-local predicate history register) 600 verwendet werden. Somit kann zum Beispiel der Vorhersager vorgesehen sein, um nur die Informationen zu verwenden, die nur im Kern verfügbar sind, ohne irgendwelche Informationen mit anderen Kernen auszutauschen. In diesem Beispiel kann jeder der Kerne 211–213 sein eigenes ausschließliches globales Verlaufsregister 601–603 aufweisen, das die Prädikatbefehle, die diesem Kern zugeordnet sind, nachverfolgen kann. Der Kompilierer 204 kann dann versuchen, abhängige Befehle diesem Kern zuzuordnen. Demzufolge können abhängige Prädikatbefehle dem gleichen Kern zugeordnet werden, wodurch ermöglicht wird, dass das CLPHR 600 die Beziehung zwischen diesen Befehlen ausnutzt.
-
In einem weiteren Beispiel kann unter Bezugnahme auf 6b ein globales Blockverlaufsregister (GBHR – global block history register) 605 vorgesehen sein. Da verteilte Ausgangsvorhersager die Exit-Codes der Blocks vorhersagen, kann ein solcher Ausgangsvorhersager außerdem die Ausgangsvorhersagenummern oder -codes verknüpfen und damit das GBHR 605 erzeugen. In diesem Beispiel kann der Kompilierer 204 den Verzweigungsbefehlen in jedem Block Exit-Codes mit 3 Bit zuweisen, je nach deren Reihenfolge im Programm. Daher kann das GBHR 605 als globale Verlaufsinformation verwendet werden. Ohne die Verwendung jeglicher Informationen von den Prädikaten in den Blocks können sowohl Ausgangs- als auch Prädikatvorhersager die gleichen Verlaufsinformationen gemeinsam verwenden, wodurch die Notwendigkeit eines zusätzlichen Kommunikationsmechanismus reduziert oder ausgeschlossen wird.
-
Die Beispiele des CLPHR 600 und des GBHR 605 können in einer beliebigen geeigneten Art und Weise kombiniert werden. So kann zum Beispiel das GBHR 605 durch Hinzufügen einer weiteren Tabelle erweitert werden, die durch das CLPHR anstelle des globalen Hauptverlaufsregisters indiziert werden. Die Vorhersage, die man aus dieser Tabelle erhält, kann durch einen Addierbaum mit den Vorhersagen kombiniert werden, die man aus den GEHL-Tabellen erhält.
-
In einigen Beispielen kann wiederum unter Bezugnahme auf 4 eine Konfidenz-Vorhersagetabelle 410 vorgesehen sein, die so konfiguriert ist, dass eine Schätzung der Genauigkeit einer Prädikatvorhersage ausgeführt wird. Die Konfidenz-Vorhersagetabelle 410 kann daher ermöglichen, dass der Vorhersager schwer vorherzusagende Prädikate „herausfiltert” (z. B. Prädikate mit einem niedrigen Vertrauensniveau). Die Eingaben für die Konfidenz-Vorhersagetabelle 410 können durch rückstellbare Zähler, z. B. Zähler 411, erfolgen, die die Anzahl der aufeinanderfolgenden korrekten Vorhersagen in einer Verzweigung zählen können. Wenn zum Beispiel eine falsche Vorhersage getroffen wird, kann der Zähler 411 auf Null zurückgesetzt werden. Ein Prädikat kann ausgewählt werden, das vorhergesagt wird, wenn der Wert des entsprechenden Zählers höher als ein bestimmter Schwellenwert ist. In einigen Beispielen können die Eingaben in die Konfidenztabelle (z. B. Zähler 411) über rückstellbare 3-Bit-Zähler erfolgen, die für eine Konfiguration mit einer geringeren Anzahl an Kernen einen Schwellenwert mit hohem Vertrauensniveau unterstützen können.
-
Ein Beispiel eines Verfahrens der vorliegenden Erfindung wird in 5 veranschaulicht. Das Computersystem 100 kann einen Prozessor 101 umfassen, der bei der Ausführung so konfiguriert werden kann, dass er die folgenden Prozesse ausführt. Insbesondere kann der Prozessor 101 den Kompilierer 204 veranlassen, die Verzweigungsbefehle mit den annähernden Prädikatpfadinformationen zu verschlüsseln [Prozess 501]. Als Nächstes können die daraus resultierenden Befehlsdaten dem Prozessor 101 zur Ausführung bereitgestellt werden [Prozess 502]. Diese Vorhersager, die mit jedem Prozessorkern verbunden sind, können dann die vom Kompilierer verschlüsselten Pfadinformationen nutzen, um genaue Vorhersagen von Prädikaten mit einem hohen Vertrauensniveau zu ermöglichen [Prozess 503].
-
In einigen Beispielen wird ein Computersystem offengelegt, das einen Mehrkernprozessor umfasst, der wiederum eine Vielzahl von Prozessorkernen umfasst, wobei jeder der Kerne mindestens einen Prädikatvorhersager umfasst, in dem die Prädikatvorhersager eine Prädikatvorhersage generieren. In einigen Beispielen kann das Computersystem des Weiteren ein Anwendungsprogramm umfassen, das einen oder mehrere Verzweigungsbefehle umfasst, in denen eine Prädikatpfadinformation verschlüsselt ist. In anderen Beispielen wird die Verschlüsselung der Prädikatpfadinformationen durch einen Kompilierer bewerkstelligt. In verschiedenen anderen Beispielen bestimmt die Blockadresse in jedem der einzelnen oder mehreren Verzweigungsbefehlen, welcher Prozessorkern im Mehrkernprozessor den entsprechenden Verzweigungsbefehl auszuführen hat. In weiteren Beispielen umfasst der Mehrkernprozessor eine EDGE-Mikroarchitektur (Explicit Data Graph Execution). In noch weiteren Beispielen umfassen ein oder mehrere Prädikatvorhersager einen Basisvorhersager und ein globales Verlaufsregister. In weiteren Beispielen ist der Basisvorhersager ein geometrischer Verlaufslängenvorhersager. Wohingegen in einigen Beispielen das globale Verlaufsregister ein kernspezifisches Prädikatverlaufsregister ist. In weiteren Beispielen ist das globale Verlaufsregister ein globales Blockverlaufsregister. In noch weiteren Beispielen umfasst das globale Verlaufsregister ein kernspezifisches Prädikatverlaufsregister. In noch anderen Beispielen umfasst das Computersystem eine Konfidenz-Vorhersagetabelle.
-
In anderen Beispielen wird ein Verfahren zur Bereitstellung einer Prädikatvorhersage in einem Mehrkernprozessor offengelegt, bei dem ein oder mehrere Verzweigungsbefehle über eine Vielzahl von Prozessorkernen in dem Mehrkernprozessor bereitgestellt werden, wobei jeder der Prozessorkerne mindestens einen Prädikatvorhersager umfasst, und bei dem die Prädikatvorhersage unter Verwendung der Prädikatvorhersager generiert wird. In einigen Beispielen kann das Verfahren des Weiteren die Verschlüsselung der annähernden Prädikatpfadinformationen in einem oder mehreren Verzweigungsbefehlen umfassen. In anderen Beispielen erfolgt die Verschlüsselung der Prädikatpfadinformationen durch einen Kompilierer. In weiteren Beispielen kann das Verfahren zusätzlich die Festlegung umfassen, welcher Prozessorkern einen Verzweigungsbefehl unter Verwendung einer Blockadresse für jeden der einzelnen oder mehreren Verzweigungsbefehle auszuführen hat. Wohingegen in weiteren Beispielen ein oder mehrere Prädikatvorhersager einen Basisvorhersager und ein globales Verlaufsregister umfassen. In noch weiteren Beispielen ist der Basisvorhersager ein geometrischer Verlaufslängenvorhersager. In noch anderen Beispielen ist das globale Verlaufsregister ein kernspezifisches Prädikatverlaufsregister. In verschiedenen anderen Beispielen ist das globale Verlaufsregister ein globales Blockverlaufsregister.
-
In weiteren Beispielen wird ein maschinenverarbeitbares Medium offengelegt, auf dem vom Computer ausführbare Befehle zur Bereitstellung einer Prädikatvorhersage innerhalb eines Mehrkernprozessor-Computersystems gespeichert sind, wobei, wenn eine Verarbeitungsanlage die Befehle ausführt, die Verarbeitungsanlage so konfiguriert ist, dass Prozesse ausgeführt werden, die die Verschlüsselung der annähernden Prädikatpfadinformationen in einem oder mehreren Verzweigungsbefehlen, die Ausführung eines oder mehrerer Verzweigungsbefehle auf einem oder mehreren Prozessorkerne im Mehrkernprozessor, wobei jeder der einzelnen oder mehreren Prozessorkerne einen oder mehrere Prädikatvorhersager umfassen, und die Generierung einer Prädikatvorhersage unter Verwendung eines oder mehrerer Prädikatvorhersager umfassen.
-
Die vorliegende Offenlegung ist nicht in Bezug auf die in dieser Anmeldung beschriebenen einzelnen Beispiele zu beschränken, die nur zur Veranschaulichung der verschiedenen Aspekte dienen. Viele Modifizierungen und Beispiele können angeführt werden, ohne von deren Sinn und Geltungsbereich abzuweichen, wie es für Kenner der Technik offensichtlich wird. Funktionell äquivalente Verfahren und Vorrichtungen innerhalb des Geltungsbereichs der Offenlegung werden sich aus den vorhergehenden Beschreibungen den Kennern der Technik zusätzlich zu den hier aufgezählten erschließen. Es ist beabsichtigt, dass diese Modifikationen und Beispiele in den Geltungsbereich der beigefügten Ansprüche fallen. Die vorliegende Offenlegung ist nur in Form der beigefügten Ansprüche zu begrenzen, einhergehend mit den umfassenden Äquivalenten, die diese Ansprüche benennen. Es ist davon auszugehen, dass diese Offenlegung nicht auf einzelne Verfahren, Reagenzien, Zusammensetzungen oder biologische Systeme begrenzt ist, die natürlich variieren können. Es ist davon auszugehen, dass die hier verwendete Terminologie nur dem Zweck der Beschreibung einzelner Beispiele dient und nicht als Einschränkung zu verstehen ist.
-
Hinsichtlich der Verwendung von im Wesentlichen allen Plural- und/oder Singularbegriffen in diesem Dokument können Kenner der Technik vom Plural auf den Singular und/oder vom Singular auf den Plural schließen, wie es der Kontext und/oder die Anmeldung erfordert. Die Vertauschung von Singular und Plural kann hier ausdrücklich zum Zwecke der Verdeutlichung vorgenommen worden sein.
-
Es wird sich Kennern der Technik erschließen, dass im Allgemeinen die hier und insbesondere in den beigefügten Ansprüchen verwendeten Begriffe (z. B. der Kern der beigefügten Ansprüche) allgemein als „offene” Begriffe zu verstehen sind (so ist z. B. der Begriff „einschließlich” als „einschließlich, aber nicht beschränkt auf” auszulegen, der Begriff „aufweisen” ist als „mindestens aufweisen” auszulegen, der Begriff „umfasst” ist als „umfasst, ist aber nicht beschränkt auf” auszulegen usw.). Des Weiteren wird sich Kennern der Technik erschließen, dass, wenn eine bestimmte Anzahl einer Aufzählung von angeführten Ansprüchen beabsichtigt ist, wird diese Absicht explizit im Anspruch aufgezählt, beim Fehlen einer solchen Aufzählung liegt diese Absicht nicht vor. Um dies besser zu verstehen, können zum Beispiel die folgenden beigefügten Ansprüche die einleitenden Redewendungen „mindestens ein” und „ein oder mehrere” enthalten, um Aufzählungen von Ansprüchen einzuleiten. Die Verwendung dieser Redewendungen ist jedoch nicht so auszulegen, dass impliziert wird, dass die Einleitung einer Aufzählung von Ansprüchen durch die unbestimmten Artikel „ein” oder „eine” diesen bestimmten Anspruch, der eine so eingeleitete Anspruchsaufzählung enthält, nur auf Beispiele beschränkt, die nur eine dieser Aufzählungen enthalten, selbst wenn der gleiche Anspruch die einleitenden Worte „ein oder mehrere” oder „mindestens ein” und unbestimmte Artikel wie „ein” oder „eine” enthält (z. B. „ein” und/oder „eine” ist in der Bedeutung von „mindestens ein” oder „ein oder mehrere” auszulegen). Das Gleiche gilt für die Verwendung der bestimmten Artikel in der Einleitung der Aufzählung der Ansprüche. Selbst wenn eine bestimmte Anzahl einer Aufzählung von angeführten Ansprüchen ausdrücklich erwähnt wird, ist darüber hinaus Kennern der Technik ersichtlich, dass eine solche Aufzählung so auszulegen ist, dass mindestens die genannte Anzahl gemeint ist (die reine Nennung von „zwei Aufzählungen” ohne weitere Bestimmungsworte bedeutet zum Beispiel mindestens zwei Aufzählungen oder zwei oder mehr Aufzählungen). In den Fällen, wo eine Konvention analog zu „mindestens eins von A, B und C usw.” verwendet wird, wird des Weiteren beabsichtigt, dass im Allgemeinen eine solche Konstruktion von den Kennern der Technik als Konvention zu verstehen ist (z. B. „ein System, das mindestens eins von A, B und C aufweist” würde Systeme einschließen, aber sich nicht darauf beschränken, die nur A, nur B, nur C, A und B zusammen, A und C zusammen, B und C zusammen und/oder A, B und C zusammen aufweisen usw.). In den Fällen, wo eine Konvention analog zu „mindestens eins von A, B oder C, usw.” verwendet wird, wird im allgemeinen beabsichtigt, dass eine solche Konstruktion von Kennern der Technik als Konvention zu verstehen ist (z. B. „ein System, das mindestens eins von A, B oder C aufweist” würde Systeme einschließen, aber sich nicht darauf beschränken, die nur A, nur B, nur C, A und B zusammen, A und C zusammen, B und C zusammen und/oder A, B und C zusammen aufweisen, usw.). Es erschließt sich des Weiteren den Kennern der Technik, dass praktisch jedes trennende Wort und/oder Redewendung, die zwei oder mehrere alternative Begriffe darstellen, sei es in der Beschreibung, den Ansprüchen oder den Zeichnungen, so zu verstehen sind, dass sie die Möglichkeit beabsichtigen, einen der Begriffe, einen der beiden Begriffe oder beide Begriffe einzuschließen. So ist zum Beispiel die Redewendung „A oder B” so zu verstehen, dass die Möglichkeiten „A” oder „B” oder „A und B” eingeschlossen sind.
-
Wie Eigenschaften oder Aspekte der Offenlegung in Form von Markush-Strukturen beschrieben werden, erkennen Kenner der Technik darüber hinaus, dass die Offenlegung damit in Form eine jeden einzelnen Elements oder jeder einzelnen Untergruppe von Elementen der Markush-Gruppe beschrieben wird.
-
Wie sich den Kennern der Technik erschließen wird, umfassen für jegliche Zwecke, wie z. B. die Bereitstellung einer schriftlichen Beschreibung, alle hier offengelegten Bereiche außerdem alle und jegliche Unterbereiche und Kombinationen von Unterbereichen derselben. Jeglicher aufgelisteter Bereich kann einfach als ausreichend beschreibend erkannt werden, wobei dieser Bereich in zumindest gleiche Hälften, Drittel, Viertel, Fünftel, Zehntel usw. unterteilt werden kann. Als nicht einschränkendes Beispiel kann jeder hier erläuterte Bereich in ein unteres Drittel, ein mittleres Drittel und ein oberes Drittel usw. aufgeteilt werden. Wie es sich den Kennern der Technik erschließt, bedeuten alle Worte wie „bis zu”, „mindestens”, „größer als”, „weniger als” und ähnliche, dass die genannte Zahl mit eingeschlossen ist und sich auf Bereiche bezieht, die nachfolgend wie oben erläutert in Unterbereiche aufgeteilt werden können. Schließlich werden Kenner der Technik verstehen, dass eine Reihe jedes einzelne Element einschließt. So bezieht sich zum Beispiel eine Gruppe, die 1–3 Zellen oder Kerne aufweist, auf Gruppen, die 1, 2 oder 3 Zellen oder Kerne aufweisen. In ähnlicher Weise bezieht sich eine Gruppe mit 1–5 Zellen oder Kernen auf Gruppen mit 1, 2, 3, 4 oder 5 Zellen oder Kerne und so weiter.
-
Während hier verschiedene Aspekte und Beispiele offengelegt wurden, werden sich weitere Aspekte und Beispiele den Kennern der Technik erschließen. Die hier offengelegten unterschiedlichen Aspekte und Beispiele dienen nur zur Veranschaulichung und sind nicht als Einschränkung zu verstehen, wobei der wahre Geltungsbereich und Sinn durch die nachfolgenden Ansprüche angegeben wird.