DE112013002956T5 - Vorabladen von Verzweigungsvorhersagen - Google Patents

Vorabladen von Verzweigungsvorhersagen Download PDF

Info

Publication number
DE112013002956T5
DE112013002956T5 DE112013002956.1T DE112013002956T DE112013002956T5 DE 112013002956 T5 DE112013002956 T5 DE 112013002956T5 DE 112013002956 T DE112013002956 T DE 112013002956T DE 112013002956 T5 DE112013002956 T5 DE 112013002956T5
Authority
DE
Germany
Prior art keywords
branch
instruction
predicted
address
prediction
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.)
Pending
Application number
DE112013002956.1T
Other languages
English (en)
Inventor
Brian Robert Prasky
Alexander Vasilevskiy
James Joseph Bonanno
Joran Siu
Marcel Mitran
Timothy Slegel
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.)
International Business Machines Corp
Original Assignee
International Business Machines 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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of DE112013002956T5 publication Critical patent/DE112013002956T5/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3804Instruction prefetching for branches, e.g. hedging, branch folding
    • G06F9/3806Instruction prefetching for branches, e.g. hedging, branch folding using address prediction, e.g. return stack, branch history buffer
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30058Conditional branch instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • G06F9/3844Speculative instruction execution using dynamic branch prediction, e.g. using branch history tables

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)

Abstract

Ausführungsformen betreffen das Vorabladen von Verzweigungsvorhersagen. Ein Aspekt beinhaltet ein System zum Vorabladen von Verzweigungsvorhersagen. Das System enthält einen Befehls-Cache-Speicher und einen Verzweigungsziel-Pufferspeicher (BTB), der mit einer Verarbeitungsschaltung verbunden ist, wobei die Verarbeitungsschaltung so konfiguriert ist, dass sie ein Verfahren durchführt. Das Verfahren beinhaltet das Abrufen einer Vielzahl von Befehlen in einem Befehlsstrom aus dem Befehls-Cache-Speicher und das Decodieren eines Verzweigungsvorhersage-Vorabladebefehls in dem Befehlsstrom. Auf der Grundlage des Verzweigungsvorhersage-Vorabladebefehls wird eine Adresse eines vorhergesagten Verzweigungsbefehls ermittelt. Auf der Grundlage des Verzweigungsvorhersage-Vorabladebefehls wird eine vorhergesagte Zieladresse ermittelt. In dem Verzweigungsvorhersage-Vorabladebefehl wird ein Maskenfeld erkannt und auf der Grundlage des Maskenfelds wird die Länge eines Verzweigungsbefehls ermittelt. Auf der Grundlage des Ausführens des Verzweigungsvorhersage-Vorabladebefehls werden die Adresse des vorhergesagten Verzweigungsbefehls, die Länge des Verzweigungsbefehls, der Typ der Verzweigung und die vorhergesagte Zieladresse vorab in den BTB geladen.

Description

  • Hintergrund
  • Die vorliegende Erfindung betrifft allgemein Datenverarbeitungssysteme und insbesondere das Vorabladen von Verzweigungsvorhersagen.
  • Eine Befehlspipeline in einem Computerprozessor verbessert den Durchsatz der Befehlsausführung, indem Befehle mittels mehrerer Pipelinestufen verarbeitet werden, wobei mehrere Stufen verschiedene Befehle eines Befehlsstroms parallel verarbeiten können. Ein bedingter Verzweigungsbefehl in einem Befehlsstrom kann zu einer Blockierung der Pipeline führen, wenn der Prozessor wartet, bis der bedingte Verzweigungsbefehl in einer Ausführungsstufe in der Pipeline aufgelöst wird, bevor ein nächster Befehl in einer Befehlsabrufstufe für die Pipeline abgerufen wird. Ein Verzweigungsprädiktor kann versuchen, zu erraten, ob eine bedingte Verzweigung genommen wird oder nicht. Zu einem Verzweigungsprädiktor kann auch eine Verzweigungszielvorhersage gehören, die versucht, ein Ziel einer genommenen bedingten oder unbedingten Verzweigung zu erraten, bevor es berechnet wird, indem der Befehl selbst codiert und ausgeführt wird. Ein Verzweigungsziel kann eine berechnete Adresse sein, die auf einem Offset und/oder einem indirekten Verweis durch ein Register beruht.
  • Ein Verzweigungsziel-Pufferspeicher (branch target buffer (BTB)) kann verwendet werden, um das Ziel eines Befehls für eine als genommen vorhergesagte Verzweigung auf der Grundlage der Adresse des Verzweigungsbefehls vorherzusagen. Das Vorhersagen des Ziels des Verzweigungsbefehls kann Blockierungen der Pipeline verhindern, indem nicht darauf gewartet wird, dass der Verzweigungsbefehl die Ausführungsstufe der Pipeline erreicht, um die Adresse des Verzweigungsziels zu berechnen. Indem man eine Verzweigungszielvorhersage durchführt, kann die Decodierung des Befehls für das Verzweigungsziel in demselben Zyklus oder in dem Zyklus nach dem Verzweigungsbefehl durchgeführt werden, statt dass man mehrere Blasenzyklen/leere Zyklen zwischen dem Verzweigungsbefehl und dem Ziel des Befehls für eine als genommen vorhergesagte Verzweigung hat. Zu weiteren Verzweigungsvorhersagekomponenten, die in dem BTB enthalten sein oder gesondert realisiert werden können, gehören eine Verzweigungshistorietabelle und eine Musterhistorietabelle. Eine Verzweigungshistorietabelle kann die Richtung einer Verzweigung (”genommen” gegenüber ”nicht genommen”) in Abhängigkeit von der Verzweigungsadresse vorhersagen. Eine Musterhistorietabelle kann bei der Richtungsvorhersage einer Verzweigung in Abhängigkeit von dem angetroffenen Muster der Verzweigungen unterstützend wirken, das zu der jeweiligen Verzweigung, die vorhergesagt werden soll, führt.
  • Kurzdarstellung der Erfindung
  • Zu Ausführungsformen gehören ein System, ein Verfahren und ein Computerprogrammprodukt zum Vorabladen von Verzweigungsvorhersagen. Das System zum Vorabladen von Verzweigungsvorhersagen enthält einen Befehls-Cache-Speicher und einen Verzweigungsziel-Pufferspeicher, der mit einer Verarbeitungsschaltung verbunden ist. Die Verarbeitungsschaltung ist so konfiguriert, dass sie ein Verfahren durchführt. Das Verfahren beinhaltet das Abrufen einer Vielzahl von Befehlen in einem Befehlsstrom aus dem Befehls-Cache-Speicher und das Decodieren eines Verzweigungsvorhersage-Vorabladebefehls in dem Befehlsstrom. Das Verfahren beinhaltet des Weiteren das Ermitteln einer Adresse eines vorhergesagten Verzweigungsbefehls durch die Verarbeitungsschaltung auf der Grundlage des Verzweigungsvorhersage-Vorabladebefehls und das Ermitteln einer vorhergesagten Zieladresse des vorhergesagten Verzweigungsbefehls durch die Verarbeitungsschaltung auf der Grundlage des Verzweigungsvorhersage-Vorabladebefehls. Das Verfahren beinhaltet auch das Erkennen eines Maskenfelds in dem Verzweigungsvorhersage-Vorabladebefehl und das Ermitteln einer Verzweigungsbefehl-Länge des vorhergesagten Verzweigungsbefehls durch die Verarbeitungsschaltung auf der Grundlage des Maskenfelds. Auf der Grundlage des Ausführens des Verzweigungsvorhersage-Vorabladebefehls werden die Adresse des vorhergesagten Verzweigungsbefehls, die Länge des Verzweigungsbefehls und die vorhergesagte Zieladresse, die zu dem vorhergesagten Verzweigungsbefehl gehört, vorab in den Verzweigungsziel-Pufferspeicher geladen.
  • Das Verfahren zum Vorabladen von Verzweigungsvorhersagen beinhaltet das Abrufen einer Vielzahl von Befehlen in einem Befehlsstrom und das Decodieren eines Verzweigungsvorhersage-Vorabladebefehls in dem Befehlsstrom. Das Verfahren beinhaltet auch das Ermitteln einer Adresse eines vorhergesagten Verzweigungsbefehls durch die Verarbeitungsschaltung auf der Grundlage des Verzweigungsvorhersage-Vorabladebefehls und das Ermitteln einer vorhergesagten Zieladresse des vorhergesagten Verzweigungsbefehls durch die Verarbeitungsschaltung auf der Grundlage des Verzweigungsvorhersage-Vorabladebefehls. Das Verfahren beinhaltet des Weiteren das Erkennen eines Maskenfelds in dem Verzweigungsvorhersage-Vorabladebefehl und das Ermitteln einer Verzweigungsbefehl-Länge des vorhergesagten Verzweigungsbefehls durch die Verarbeitungsschaltung auf der Grundlage des Maskenfelds. Auf der Grundlage des Ausführens des Verzweigungsvorhersage-Vorabladebefehls werden die Adresse des vorhergesagten Verzweigungsbefehls, die Länge des Verzweigungsbefehls und die vorhergesagte Zieladresse, die zu dem vorhergesagten Verzweigungsbefehl gehört, vorab in einen Verzweigungsziel-Pufferspeicher geladen.
  • Zu dem Computerprogrammprodukt gehört ein physisch greifbares Speichermedium, das von einer Verarbeitungsschaltung gelesen werden kann und Befehle zur Ausführung durch die Verarbeitungsschaltung speichert, um ein Verfahren durchzuführen. Das Verfahren beinhaltet das Abrufen einer Vielzahl von Befehlen in einem Befehlsstrom und das Decodieren eines Verzweigungsvorhersage-Vorabladebefehls in dem Befehlsstrom. Das Verfahren beinhaltet auch das Ermitteln einer Adresse eines vorhergesagten Verzweigungsbefehls durch die Verarbeitungsschaltung auf der Grundlage des Verzweigungsvorhersage-Vorabladebefehls und das Ermitteln einer vorhergesagten Zieladresse des vorhergesagten Verzweigungsbefehls durch die Verarbeitungsschaltung auf der Grundlage des Verzweigungsvorhersage-Vorabladebefehls. Das Verfahren beinhaltet des Weiteren das Erkennen eines Maskenfelds in dem Verzweigungsvorhersage-Vorabladebefehl und das Ermitteln einer Verzweigungsbefehl-Länge des vorhergesagten Verzweigungsbefehls durch die Verarbeitungsschaltung auf der Grundlage des Maskenfelds. Auf der Grundlage des Ausführens des Verzweigungsvorhersage-Vorabladebefehls werden die Adresse des vorhergesagten Verzweigungsbefehls, die Länge des Verzweigungsbefehls und die vorhergesagte Zieladresse, die zu dem vorhergesagten Verzweigungsbefehl gehört, vorab in einen Verzweigungsziel-Pufferspeicher geladen.
  • Kurze Beschreibung der diversen Ansichten der Zeichnungen
  • Der Erfindungsgegenstand, der in Gestalt von Ausführungsformen betrachtet wird, ist in den Ansprüchen am Ende der Beschreibung im Einzelnen dargelegt und eindeutig beansprucht. Die vorstehenden und andere Merkmale und Vorteile der Ausführungsformen gehen aus der folgenden ausführlichen Beschreibung in Zusammenschau mit den beiliegenden Zeichnungen hervor, bei denen:
  • 1A ein Blockschaubild ist, das ein beispielhaftes Hostcomputersystem in einer Ausführungsform zeigt;
  • 1B ein Blockschaubild ist, das ein beispielhaftes Emulations-Hostcomputersystem in einer Ausführungsform zeigt;
  • 1C eine Übersichtsdarstellung ist, die ein beispielhaftes Computersystem in einer Ausführungsform zeigt;
  • 2 eine Übersichtsdarstellung ist, die ein beispielhaftes Computernetzwerk in einer Ausführungsform zeigt;
  • 3 eine Übersichtsdarstellung ist, die Elemente eines Computersystems in einer Ausführungsform zeigt;
  • die 4A bis 4C detailliert dargestellte Elemente eines Computersystems in einer Ausführungsform zeigen;
  • 5 ein Befehlsformat für einen Verzweigungsvorhersage-Vorabladebefehl gemäß einer Ausführungsform zeigt;
  • 6 ein weiteres Befehlsformat für einen Verzweigungsvorhersage-Vorabladebefehl gemäß einer Ausführungsform zeigt;
  • 7 einen Prozessablauf zum Vorabladen von Verzweigungsvorhersagen gemäß einer Ausführungsform zeigt; und
  • 8 ein Computerprogrammprodukt gemäß einer Ausführungsform darstellt.
  • Ausführliche Beschreibung
  • Eine beispielhafte Ausführungsform ermöglicht das Vorabladen von Verzweigungsvorhersagen. Die Verzweigungsvorhersage wird üblicherweise im Laufe der Zeit erlernt, während Code wiederholt ausgeführt wird und Überraschungsverzweigungen, jene Verzweigungen, von denen man nur durch den Prozess des Decodierens erfährt, in einem Verzweigungsziel-Pufferspeicher (branch target buffer (BTB)) installiert werden. Sobald der BTB mit Einträgen gefüllt wird, die eine Verzweigungsadresse, eine Zieladresse und Richtungsinformationen angeben, z. B. ”genommen” im Gegensatz zu ”nicht genommen”, erhöht sich die Vorhersagegenauigkeit, da Aktualisierungen an dem BTB vorgenommen werden, nachdem Verzweigungsvorhersagen aufgelöst worden sind. Beispielhafte Ausführungsformen ermöglichen das Vorabladen von Verzweigungsvorhersagen unter Verwendung von Verzweigungsvorhersage-Vorabladebefehlen in der Weise, dass Adressen von Verzweigungsbefehlen und Zieladressen in den BTB eingegeben werden können, bevor die zugehörige Verzweigung genommen wird. Beim Schreiben oder Kompilieren von Software kann Code ausgewertet werden, um nach Verzweigungsbefehlen zu suchen. Verzweigungsvorhersage-Vorabladebefehle können dem Code vor den Verzweigungen so hinzugefügt werden, dass anschließende Verzweigungen präzise vorhergesagt und Überraschungsverzweigungen vermieden werden können. Indem Überraschungsverzweigungen vermieden werden, kommt es zu weniger Blockierungen der Pipeline, die andernfalls während des Wartens darauf, dass eine Überraschungsverzweigung aufgelöst wird, auftreten können. Ein BTB, der mittels Verzweigungsvorhersage-Vorabladebefehlen gefüllt wird, kann bei gleichzeitiger Aufrechterhaltung eines weitgehend gleichen Leistungsvermögens wie der Genauigkeit und der Trefferquote des Inhalts des nicht vorab geladenen BTBs ursprünglicher Größe physisch verkleinert werden. Zum Beispiel kann die Größe eines BTB bei Verwendung von Verzweigungsvorhersage-Vorabladebefehlen gegenüber einem BTB, der keine Verzweigungsvorhersage-Vorabladebefehle unterstützt, im Verhältnis 4:1 verringert werden.
  • 1A zeigt die repräsentativen Komponenten eines Hostcomputersystems 50 in einer Ausführungsform. Andere Anordnungen von Komponenten können in einem Computersystem ebenfalls realisiert werden. Das repräsentative Hostcomputersystem 50 weist einen oder mehrere Prozessoren 1, die mit dem Hauptspeicher (Computerspeicher) 2 Daten austauschen, sowie E/A-Schnittstellen zu Speichereinheiten 11 und Netzwerken 10 auf, um mit anderen Computern oder Speicherbereichsnetzwerken (storage area networks (SANs) und dergleichen Daten auszutauschen. Der Prozessor 1 ist mit einer Architektur kompatibel, die über einen architekturdefinierten Befehlssatz und architekturdefinierte Funktionalität verfügt. Der Prozessor 1 kann eine dynamische Adressumsetzung (DAT) 3 aufweisen, um Programmadressen (virtuelle Adressen) in eine reale Adresse im Arbeitsspeicher umzusetzen. Zu einer DAT 3 gehört üblicherweise ein Adressumsetzpufferspeicher (TLB) 7, um Umsetzungen zwischenzuspeichern, so dass spätere Zugriffe auf den Block des Computerspeichers 2 keine verzögerte Adressumsetzung erforderlich machen. Üblicherweise wird ein Cache-Speicher 9 zwischen dem Computerspeicher 2 und dem Prozessor 1 verwendet. Der Cache-Speicher 9 kann hierarchisch aufgebaut sein und über einen großen Cache-Speicher, der mehr als einer CPU zur Verfügung steht, sowie kleinere, schnellere Cache-Speicher (einer niedrigeren Stufe) zwischen dem großen Cache-Speicher und einer jeden CPU verfügen. In manchen Ausführungsformen werden die Cache-Speicher der niedrigeren Stufe aufgeteilt, um getrennte Low Level-Cache-Speicher für das Abrufen von Befehlen und für Datenzugriffe bereitzustellen. In einer Ausführungsform wird ein Befehl von einer Befehls-Abrufeinheit 4 über den Cache-Speicher 9 aus dem Computerspeicher 2 abgerufen. Der Befehl wird in einer Befehlsdecodiereinheit 6 decodiert und (in manchen Ausführungsformen mit anderen Befehlen) den Befehlsausführungseinheiten 8 zugeteilt. Üblicherweise werden mehrere Befehlsausführungseinheiten 8 verwendet, zum Beispiel eine arithmetische Ausführungseinheit, eine Gleitkomma-Ausführungseinheit und eine Verzweigungsbefehl-Ausführungseinheit. Der Befehl wird von der Befehlsausführungseinheit 8 ausgeführt, wobei nach Bedarf auf Operanden aus von dem Befehl angegebenen Registern oder aus dem Computerspeicher 2 zugegriffen wird. Wenn auf einen Operanden aus dem Computerspeicher 2 zugegriffen werden soll (wenn dieser geladen oder gespeichert werden soll), führt die Lade-/Speichereinheit 5 den Zugriff üblicherweise von dem Befehl gesteuert aus, welcher gerade ausgeführt wird. Befehle können in Hardware-Schaltungen oder in internem Mikrocode (Firmware) oder von einer Kombination aus beidem ausgeführt werden.
  • 1B beschreibt ein emuliertes Hostcomputersystem 21, das ein Hostcomputersystem einer Hostarchitektur, wie beispielsweise das Hostcomputersystem 50 von 1, emuliert. In dem emulierten Hostcomputersystem 21 handelt es sich bei einem Hostprozessor (CPU) 1 um einen emulierten Hostprozessor (oder einen virtuellen Hostprozessor) 29 und dieser weist einen nativen Prozessor 27 auf, der über eine andere Architektur mit nativem Befehlssatz als der Prozessor 1 des Hostcomputersystems 50 verfügt. Das emulierte Hostcomputersystem 21 verfügt über einen Arbeitsspeicher 22, auf den der native Prozessor 27 zugreifen kann. In einer Ausführungsform wird der Arbeitsspeicher 22 in einen Teil, den der Computerspeicher 2 bildet, und einen Teil, den der Emulationsroutinen-Speicher 23 bildet, aufgeteilt. Der Computerspeicher 2 steht entsprechend der Architektur des Rostcomputers Programmen des emulierten Hostcomputersystems 21 zur Verfügung. Der native Prozessor 27 führt native Befehle eines architekturdefinierten Befehlssatzes einer anderen Architektur als der des emulierten Prozessors 29 aus, wobei er die nativen Befehle aus dem Emulationsroutinen-Speicher 23 erhält, und er kann von einem Programm in dem Computerspeicher 2 auf einen Rostbefehl zur Ausführung zugreifen, indem er einen oder mehrere in einer Abfolge- & Zugriffs-/Decodierroutine erhaltenen Befehl(e) verwendet, die den beziehungsweise die Hostbefehl(e), auf den/die zugegriffen wurde, decodieren können, um eine Ausführungsroutine für native Befehle festzulegen, um die Funktion des Rostbefehls, auf den zugegriffen wurde, zu emulieren. Andere für die Architektur des Hostcomputersystems 50 angegebene Einrichtungen/Funktionen können von architekturdefinierten Routinen für die Einrichtungen/Funktionen einschließlich solcher Einrichtungen/Funktionen wie beispielsweise Mehrzweckregister, Steuerregister, dynamische Adressumsetzung und Unterstützung des Eingabe-/Ausgabe-(E/A-)Subsystems sowie des Cache-Speichers des Prozessors emuliert werden. Die Emulationsroutinen können auch eine Funktion vorteilhaft nutzen, die in dem nativen Prozessor 27 zur Verfügung steht (wie zum Beispiel allgemeine Register und die dynamische Umsetzung von virtuellen Adressen), um die Leistungsfähigkeit der Emulationsroutinen zu verbessern. Spezielle Hardware und Auslagerungsengines können ebenfalls bereitgestellt werden, um den nativen Prozessor 27 bei der Emulierung der Funktion des Hostcomputersystems 50 zu unterstützen.
  • In einem Mainframe-Computer werden architekturdefinierte Maschinenbefehle, beispielsweise von Programmierern, oftmals mittels einer Just in-Time-Compiler-Anwendung verwendet. Diese in dem Speichermedium gespeicherten Befehle können nativ in einem IBM-Server der z/Architecture oder alternativ in Maschinen, die andere Architekturen ausführen, ausgeführt werden. Sie können in den vorhandenen und in zukünftigen IBM-Mainframe-Servern und auf anderen Maschinen von IBM (z. B. Servern der pSeries® und Servern der xSeries®) emuliert werden. Sie können in Maschinen, auf denen Linux läuft, auf einer großen Vielzahl von Maschinen unter Verwendung von Hardware, die von IBM®, intel®, AMDTM, Oracle und anderen hergestellt wird, ausgeführt werden. Neben der Ausführung auf dieser Hardware unter einer z/Architecture® können Linux sowie Maschinen eingesetzt werden, die eine Emulation durch Hercules, UMX, Fundamental Software, Inc. (FSI) oder Platform Solutions, Inc. (PSI) verwenden, bei denen die Ausführung im Allgemeinen in einem Emulationsmodus erfolgt. Im Emulationsmodus wird Emulationssoftware von einem nativen Prozessor ausgeführt, um die Architektur eines emulierten Prozessors nachzubilden.
  • Eine oder mehrere der Komponenten des emulierten Hostcomputersystems 21 sind in ”IBM® z/Architecture Principles of Operation”, Veröffentlichungsnummer SA22-7832-08, 9. Ausgabe, August 2010, näher beschrieben, das hiermit in seiner Gesamtheit durch Bezugnahme Bestandteil hiervon ist. IBM ist ein eingetragenes Warenzeichen der International Business Machines Corporation mit Sitz in Armonk, New York, USA. Andere hier verwendete Namen können eingetragene Warenzeichen, Warenzeichen oder Produktnamen der International Business Machines Corporation oder anderer Unternehmen sein.
  • Der native Prozessor 27 führt üblicherweise Emulationssoftware aus, die in dem Emulationsroutinen-Speicher 23 gespeichert ist, der entweder Firmware oder ein natives Betriebssystem aufweist, um die Emulation des emulierten Prozessors durchzuführen. Die Emulationssoftware ist für das Abrufen und Ausführen von Befehlen der emulierten Prozessor-Architektur verantwortlich. Die Emulationssoftware verwaltet einen emulierten Programmzähler, um Befehlsgrenzen zu überwachen. Die Emulationssoftware kann jeweils einen oder mehrere emulierte Maschinenbefehle abrufen und den einen oder die mehreren emulierten Maschinenbefehle in eine entsprechende Gruppe von nativen Maschinenbefehlen zur Ausführung durch den nativen Prozessor 27 umwandeln. Diese umgewandelten Befehle können so im Cache-Speicher abgelegt werden, dass eine schnellere Umwandlung erreicht werden kann. Die Emulationssoftware verwaltet die Architekturregeln der emulierten Prozessor-Architektur, um sicherzustellen, dass Betriebssysteme und Anwendungen, die für den emulierten Prozessor geschrieben wurden, korrekt arbeiten. Außerdem stellt die Emulationssoftware von der emulierten Prozessorarchitektur gekennzeichnete Ressourcen einschließlich, ohne darauf beschränkt zu sein, Steuerregister, Mehrzweckregister, Gleitkomma-Register, einer Funktion für eine dynamische Adressumsetzung, zu der beispielsweise Segmenttabellen und Seitentabellen gehören, Unterbrechungsmechanismen, Mechanismen für einen Kontextwechsel, Zeituhren sowie architekturdefinierter Schnittstellen zu E/A-Subsystemen bereit, so dass ein Betriebssystem oder ein Anwendungsprogramm, das für die Ausführung auf dem emulierten Prozessor 29 bestimmt ist, auf dem nativen Prozessor 27 ausgeführt werden kann, welcher über die Emulationssoftware verfügt.
  • Ein bestimmter Befehl, der emuliert wird, wird decodiert, und eine Unterroutine wird aufgerufen, um die Funktion des einzelnen Befehls auszuführen. Eine Funktion einer Emulationssoftware, die eine Funktion eines emulierten Prozessors 29 nachbildet, wird beispielsweise in einer ”C”-Unterroutine oder einem ”C”-Treiber oder in irgendeinem anderen Verfahren zur Bereitstellung eines Treibers für die jeweilige Hardware realisiert, wobei ein Fachmann, nachdem er die Beschreibung der bevorzugten Ausführungsform verstanden hat, diese Realisierung aufgrund seiner Qualifikation vornehmen kann.
  • Eine Ausführungsform kann mittels Software (die manchmal als lizenzierter interner Code, Firmware, Mikrocode, Millicode, Pikocode und dergleichen bezeichnet wird, wobei alle Bezeichnungen mit der vorliegenden Erfindung vereinbar wären) in die Praxis umgesetzt werden. Bezug nehmend auf 1A wird von dem Prozessor, der auch als CPU (Zentraleinheit) 1 des Hostcomputersystems 50 bezeichnet wird, von der Speichereinheit 11, wie zum Beispiel einem Langzeitspeichermedium, einem CD-ROM-Laufwerk, einem Bandlaufwerk oder einem Festplattenlaufwerk, auf Softwareprogrammcode zugegriffen. Der Softwareprogrammcode kann sich auf beliebigen einer Vielzahl von bekannten Datenträgern zur Verwendung mit einem Datenverarbeitungssystem wie zum Beispiel einer Diskette, einem Festplattenlaufwerk, einem CD-ROM, einer Blu-Ray-Disk oder Universal-Serial-Bus-(USB-)Flash-Laufwerken befinden. Der Code kann auf solchen Datenträgern vertrieben werden oder er kann an Benutzer aus dem Computerspeicher 2 oder dem Massenspeicher von einem Computersystem über ein Netzwerk 10 an andere Computersysteme zur Verwendung durch Benutzer dieser anderen Systeme vertrieben werden.
  • Alternativ kann der Programmcode in dem Computerspeicher 2 enthalten sein und der Prozessor 1 kann mittels eines Prozessorbusses (nicht gezeigt) auf den Programmcode zugreifen. Ein solcher Programmcode beinhaltet ein Betriebssystem, das die Funktion und die interaktive Kommunikation der verschiedenen Computerkomponenten und von einem oder mehreren Anwendungsprogrammen steuert. Programmcode wird normalerweise von einem kompakten Datenträger wie zum Beispiel der Speichereinheit 11 in den Computerspeicher 2 umgelagert, wo er zur Verarbeitung durch den Prozessor 1 zur Verfügung steht. Die Techniken und die Verfahren zur Aufnahme von Softwareprogrammcode in den Arbeitsspeicher, auf physische Datenträger und/oder für den Vertrieb von Software-Code über Netzwerke sind hinlänglich bekannt und werden hier nicht weiter erörtert. Programmcode wird häufig als ”Computerprogrammprodukt” bezeichnet, wenn er erzeugt und auf einem physisch greifbaren Medium (einschließlich elektronischer Speichermodule (RAM), Flash-Speicher, Compact-Discs (CDs), DVDs, Magnetband und dergleichen, ohne darauf beschränkt zu sein) gespeichert wird. Der Datenträger mit dem Computerprogrammprodukt kann üblicherweise von einer Verarbeitungsschaltung vorzugsweise in einem Computersystem gelesen werden, um von der Verarbeitungsschaltung ausgeführt zu werden.
  • 1C stellt eine repräsentative Workstation oder ein Server-Hardwaresystem in einer beispielhaften Ausführungsform dar. Das System 100 von 1C weist ein repräsentatives Basiscomputersystem 101 auf, wie zum Beispiel einen Personal Computer, eine Workstation oder einen Server, zu dem optionale periphere Einheiten gehören. Das Basiscomputersystem 101 enthält einen oder mehrere Prozessoren 106 und einen Bus (nicht gezeigt), der verwendet wird, um den einen oder die mehreren Prozessoren 106 und die anderen Komponenten des Basiscomputersystems 101 gemäß bekannter Techniken zu verbinden und den Datenaustausch zwischen ihnen zu ermöglichen. Der Bus verbindet den Prozessor 106 mit dem Arbeitsspeicher 105 und dem Langzeitspeicher 107, der beispielsweise ein Festplattenlaufwerk (einschließlich beliebiger magnetischer Datenträger, CD, DVD und Flash-Speicher zum Beispiel) oder ein Bandlaufwerk enthalten kann. Das Basiscomputersystem 101 kann auch einen Benutzerschnittstellenadapter enthalten, der den einen oder die mehreren Prozessoren 106 über den Bus mit einer oder mehreren Schnittstelleneinheiten wie zum Beispiel einer Tastatur 104, einer Maus 103, einem Drucker/Scanner 110 und/oder anderen Schnittstelleneinheiten, bei denen es sich um eine beliebige Benutzerschnittstelleneinheit wie zum Beispiel einen berührungsempfindlichen Bildschirm, ein digitalisiertes Eingabetablett usw. handeln kann, verbindet. Der Bus verbindet den einen oder die mehreren Prozessoren über einen Bildschirm-Adapter auch mit einer Anzeigeeinheit 102 wie zum Beispiel einem LCD-Bildschirm oder -Monitor.
  • Das Basiscomputersystem 101 kann mit anderen Computern oder Computernetzen mittels eines Netzwerkadapters, der mit einem Netzwerk 109 kommunizieren 108 kann, Daten austauschen. Beispiele für Netzwerkadapter sind Übertragungskanäle, Token Ring, Ethernet oder Modems. Alternativ kann das Basiscomputersystem 101 mit Hilfe einer drahtlosen Schnittstelle wie zum Beispiel einer Cellular-Digital-Packet-Data-(CDPD-)Karte Daten austauschen. Das Basiscomputersystem 101 kann solchen anderen Computern in einem lokalen Netz (LAN) oder in einem Weitverkehrsnetz (WAN) zugeordnet sein oder das Basiscomputersystem 101 kann ein Client in einer Client/Server-Anordnung mit einem anderen Computer usw. sein.
  • 2 stellt ein Datenverarbeitungsnetzwerk 200 dar, in dem Ausführungsformen in die Praxis umgesetzt werden können. Zu dem Datenverarbeitungsnetzwerk 200 kann eine Vielzahl von einzelnen Netzwerken wie zum Beispiel ein drahtloses Netzwerk und ein drahtgebundenes Netzwerk gehören, von denen jedes eine Vielzahl von einzelnen Workstations 201, 202, 203, 204 und/oder das Basiscomputersystem 101 von 1C enthalten kann. Der Fachmann wird als vorteilhaft erkennen, dass ferner ein oder mehrere LANs eingebunden werden können, wobei ein LAN eine Vielzahl von intelligenten Workstations aufweisen kann, die mit einem Hostprozessor verbunden sind.
  • Im Arbeitsspeicher 105 kann Programmcode 111 enthalten sein, auf den der Prozessor 106 mittels des Prozessorbusses zugreifen kann. Dieser Programmcode beinhaltet ein Betriebssystem, das die Funktion und die interaktive Kommunikation der verschiedenen Computerkomponenten und von einem oder mehreren Anwendungsprogrammen 112 steuert. Programmcode wird normalerweise aus dem Langzeitspeicher 107 in den Hochgeschwindigkeitsspeicher 105 umgelagert, wo er zur Verarbeitung durch den Prozessor 106 zur Verfügung steht. Der Prozessor 106 kann auch als Verarbeitungsschaltung 106 bezeichnet werden. Die Techniken und die Verfahren zur Aufnahme von Software-Programmcode in den Arbeitsspeicher, auf physische Datenträger und/oder für den Vertrieb von Software-Code über Netzwerke sind hinlänglich bekannt und werden hier nicht weiter erörtert. Programmcode wird häufig als ”Computerprogrammprodukt” bezeichnet, wenn er erzeugt und auf einem physisch greifbaren Medium (einschließlich elektronischer Speichermodule (RAM), Flash-Speicher, Compact-Discs (CDs), DVDs, Magnetband und dergleichen, ohne darauf beschränkt zu sein) gespeichert wird. Der Datenträger mit dem Computerprogrammprodukt kann üblicherweise von einer Verarbeitungsschaltung vorzugsweise in einem Computersystem gelesen werden, um von der Verarbeitungsschaltung ausgeführt zu werden.
  • Der Cache-Speicher, der für den Prozessor am leichtesten verfügbar ist (der normalerweise schneller und kleiner als andere Cache-Speicher des Prozessors ist), ist der unterste Cache-Speicher (L1-Cache-Speicher oder Cache-Speicher der Stufe eins) und der Hauptspeicher ist der Cache-Speicher der höchsten Stufe (L3-Cache-Speicher, wenn es 3 Stufen gibt). Der Cache-Speicher der untersten Stufe wird häufig in einen Befehls-Cache-Speicher (1-Cache-Speicher), der auszuführende Maschinenbefehle enthält, und einen Daten-Cache-Speicher (D-Cache-Speicher), der Daten-Operanden enthält, aufgeteilt.
  • Nach wie vor Bezug nehmend auf 2 können die Netzwerke auch Mainframe-Computer oder Server wie zum Beispiel einen Gateway-Computer (Client-Server) 206 oder einen Anwendungsserver (einen fernen Server) 208, der auf ein Datenarchiv (data repository) zugreifen kann und auf den auch direkt von einer Workstation 205 zugegriffen werden kann, beinhalten. Ein Gateway-Computer 206 dient als Einstiegspunkt in jedes Netzwerk 207. Ein Gateway (Netzbrücke) wird beim Verbinden von einem Netzwerkprotokoll mit einem anderen Netzwerkprotokoll benötigt. Der Gateway-Computer 206 kann vorzugsweise über eine Datenübertragungsverbindung mit einem anderen Netzwerk (zum Beispiel dem Internet 207) verbunden sein. Der Gateway-Computer 206 kann über eine Datenübertragungsverbindung auch direkt mit der einen oder den mehreren Workstations 101, 201, 202, 203 und 204 verbunden sein. Der Gateway-Computer kann unter Verwendung eines Servers vom Typ IBM zEnterprise 196, der von der International Business Machines Corporation erhältlich ist, realisiert werden.
  • In einer beispielhaften Ausführungsform greift der Prozessor 106 des Basiscomputersystems 101 aus dem Langzeitspeichermedium, wie beispielsweise dem Langzeitspeicher 107 von 1C, auf den Software-Programmcode zu. Der Software-Programmcode kann sich auf beliebigen einer Vielzahl von bekannten Datenträgern zur Verwendung mit einem Datenverarbeitungssystem wie zum Beispiel einer Diskette, einem Festplattenlaufwerk oder einer CD-ROM befinden. Der Code kann auf solchen Datenträgern vertrieben werden oder er kann an Benutzer 210 und 211 aus dem Arbeitsspeicher oder dem Massenspeicher von einem Computersystem über ein Netzwerk an andere Computersysteme zur Verwendung durch Benutzer dieser anderen Systeme vertrieben werden.
  • Bezug nehmend auf 3 ist eine beispielhafte Ausführungsform eines Prozessors für den Prozessor 106 gezeigt. Eine oder mehrere Stufen des Cache-Speichers 303 werden für die Pufferung von Speicherblöcken verwendet, um die Leistungsfähigkeit des Prozessors 106 zu verbessern. Der Cache-Speicher 303 ist ein Hochgeschwindigkeits-Pufferspeicher, der Cache-Speicher-Zeilen mit Daten des Arbeitsspeichers enthält, die wahrscheinlich verwendet werden. Übliche Cache-Speicher-Zeilen umfassen 64, 128 oder 256 Bytes an Daten des Arbeitsspeichers. In einer Ausführungsform werden getrennte Cache-Speicher verwendet, um Befehle zwischenzuspeichern und um Daten zwischenzuspeichern. Cache-Speicher-Kohärenz (die Synchronisation von Kopien von Zeilen im Arbeitsspeicher und in den Cache-Speichern) wird häufig durch verschiedene ”Abhör”-Algorithmen, die in der Technik hinlänglich bekannt sind, ermöglicht. Der Hauptspeicher 105, wie zum Beispiel der Arbeitsspeicher 105, eines Prozessorsystems wird oftmals als Cache-Speicher bezeichnet. In einem Prozessorsystem, das über einen 3-stufigen Cache-Speicher 303 verfügt, wird der Arbeitsspeicher 105 manchmal als Cache-Speicher der Stufe 4 (L4) bezeichnet, da er gewöhnlich schneller ist und nur einen Teil des nicht flüchtigen Speichers (DASD, Band usw.) enthält, der einem Computersystem zur Verfügung steht. Der Arbeitsspeicher 105 nimmt eine ”Zwischenspeicherung” von Seiten von Daten vor, die vom Betriebssystem in den Arbeitsspeicher 105 ein- und aus dem Arbeitsspeicher 105 ausgelagert werden.
  • Ein Programmzähler (Befehlszähler) 311 überwacht die Adresse des aktuellen auszuführenden Befehls. Ein Programmzähler in einem z/Architecture-Prozessor umfasst 64 Bit und kann auf 31 oder 24 Bit gekürzt werden, um bisherige Adressierungsgrenzen zu unterstützen. Ein Programmzähler ist üblicherweise in einem Programmstatuswort (PSW) eines Computers in der Weise realisiert, dass er während eines Kontextwechsels bestehen bleibt. Folglich kann ein in Ausführung befindliches Programm, das über einen Wert eines Programmzählers verfügt, beispielsweise vom Betriebssystem unterbrochen werden (d. h., der aktuelle Kontext wechselt von der Programmumgebung zur Betriebssystem-Umgebung). Das PSW des Programms hält den Wert des Programmzählers fest, während das Programm nicht aktiv ist, und der Programmzähler (in dem PSW) des Betriebssystems wird verwendet, während das Betriebssystem in Ausführung befindlich ist. In einer Ausführungsform wird der Programmzähler um einen Betrag erhöht, der gleich der Anzahl der Bytes des aktuellen Befehls ist. Reduced-Instruction-Set-Computing-(RISC-)Befehle haben gewöhnlich eine feste Länge, während Complex-Instruction-Set-Computing-(CISC-)Befehle gewöhnlich eine veränderliche Länge haben. Bei den Befehlen der z/Architecture von IBM handelt es sich um CISC-Befehle mit einer Länge von 2, 4 oder 6 Byte. Der Programmzähler 311 wird beispielsweise entweder von einer Kontextwechsel-Operation oder von einer Verzweigung-genommen-Operation eines Verzweigungsbefehls geändert. Bei einer Kontextwechsel-Operation wird der aktuelle Wert des Programmzählers zusammen mit anderen Zustandsinformationen über das Programm, das gerade ausgeführt wird (wie zum Beispiel Bedingungscodes), in dem PSW gespeichert, und ein neuer Wert des Programmzählers wird geladen, der auf einen Befehl eines neuen Programm-Moduls zeigt, das ausgeführt werden soll. Eine Verzweigung-genommen-Operation wird durchgeführt, um dem Programm zu gestatten, Entscheidungen zu treffen oder innerhalb des Programms eine Schleife zu durchlaufen, indem das Ergebnis des Verzweigungsbefehls in den Programmzähler 311 geladen wird.
  • In einer Ausführungsform wird eine Befehlsabrufeinheit 305 verwendet, um Befehle im Namen des Prozessors 106 abzurufen. Die Befehlsabrufeinheit 305 ruft entweder die ”nächsten sequenziellen Befehle”, die Zielbefehle von Verzweigung-genommen-Befehlen oder die ersten Befehle eines Programms im Anschluss an einen Kontextwechsel ab. In einer Ausführungsform wendet die Befehlsabrufeinheit 305 Vorababruf-Techniken an, um Befehle auf der Grundlage der Wahrscheinlichkeit, dass die vorab abgerufenen Befehle verwendet werden könnten, spekulativ vorab abzurufen. Die Befehlsabrufeinheit 305 kann zum Beispiel 16 Byte an Befehlen, zu denen der nächste sequenzielle Befehl gehört, sowie zusätzliche Bytes von weiteren sequenziellen Befehlen abrufen.
  • Die abgerufenen Befehle werden dann vom Prozessor 106 ausgeführt. In einer Ausführungsform werden der abgerufene Befehl beziehungsweise die abgerufenen Befehle einer Decodier-/Zuteilungseinheit 306 der Befehlsabrufeinheit 305 übergeben. Die Decodier-/Zuteilungseinheit 306 decodiert den Befehl/die Befehle und leitet Informationen über den/die decodierten Befehl(e) an entsprechende Einheiten 307, 308 und/oder 310 weiter. Eine Reihenfolgesicherung zwischen den verschiedenen Einheiten (oder Stufen) 306, 307, 308, 310 kann in Pipeline-Technik erfolgen, damit die Einheiten 306, 307, 308, 310 weiterhin für einen höheren Durchsatz eingesetzt werden. Eine Ausführungseinheit 307 empfängt Informationen über decodierte arithmetische Befehle von der Befehlsabrufeinheit 305 und führt entsprechend dem Operationscode (Opcode) des Befehls arithmetische Operationen an Operanden durch. Operanden werden der Ausführungseinheit 307 entweder aus dem Arbeitsspeicher 105, den architekturdefinierten Registern 309 oder aus einem direkten Feld des Befehls, der gerade ausgeführt wird, bereitgestellt. Ergebnisse der Ausführung werden, wenn sie gespeichert werden, entweder im Arbeitsspeicher 105, in den architekturdefinierten Registern 309 oder in anderer Maschinen-Hardware (wie zum Beispiel in Steuerregistern, PSW-Registern und dergleichen) gespeichert.
  • Ein Prozessor 106 verfügt gewöhnlich über eine oder mehrere Einheiten 307, 308 und 310, um die Funktion des Befehls auszuführen. Bezug nehmend auf 4A kann eine Ausführungseinheit 307 mit architekturdefinierten Registern 309, der Decodier-/Zuteilungseinheit 306, der Lade-/Speichereinheit 310 und anderen Prozessoreinheiten 401 mittels der Schnittstellenlogik 407 Daten austauschen. Die Ausführungseinheit 307 kann mehrere Registerschaltungen 403, 404 und 405 verwenden, um Daten aufzunehmen, an denen das Rechenwerk (arithmetic logic unit (ALU)) 402 Operationen ausführen wird. Die ALU 402 führt arithmetische Operationen wie zum Beispiel Addieren, Subtrahieren, Multiplizieren und Dividieren sowie logische Funktionen wie UND, ODER und EXKLUSIV-ODER (XOR), Rotieren und Verschieben durch. In einer Ausführungsform unterstützt die ALU spezielle Operationen, die von der individuellen Ausgestaltung abhängig sind. Andere Schaltungen können andere architekturdefinierte Einrichtungen 408, darunter beispielsweise Bedingungscodes und Wiederherstellungs-Unterstützungslogik, bereitstellen. Üblicherweise wird das Ergebnis einer ALU-Operation in einer Ausgaberegisterschaltung 406 festgehalten, die das Ergebnis an eine Vielzahl von anderen Verarbeitungsfunktionen weiterleiten kann. In anderen Ausführungsformen gibt es viele Anordnungen von Prozessoreinheiten; die vorliegende Beschreibung soll lediglich ein repräsentatives Verständnis einer Ausführungsform ermöglichen.
  • Ein ADD-(Hinzufüge-)Befehl würde beispielsweise in einer Ausführungseinheit 307 ausgeführt werden, die über arithmetische und logische Funktionalität verfügt, während ein Gleitkomma-Befehl beispielsweise in einer Gleitkomma-Ausführungseinheit (nicht gezeigt) ausgeführt würde, die über spezielle Gleitkomma-Funktionen verfügt. Eine Ausführungseinheit führt vorzugsweise Operationen an Operanden durch, die von einem Befehl gekennzeichnet werden, indem sie eine von einem Operationscode angegebene Funktion an den Operanden ausführt. Ein ADD-Befehl kann zum Beispiel von einer Ausführungseinheit 307 an Operanden ausgeführt werden, die man in zwei architekturdefinierten Registern 309 vorfindet, welche von Registerfeldern des Befehls gekennzeichnet werden.
  • Die Ausführungseinheit 307 führt die arithmetische Addition an zwei Operanden durch und speichert das Ergebnis in einem dritten Operanden, wobei es sich bei dem dritten Operanden um ein drittes Register oder eines der beiden Quellenregister handeln kann. Die Ausführungseinheit 307 verwendet vorzugsweise ein Rechenwerk (ALU) 402, das viele verschiedene logische Funktionen wie zum Beispiel Verschieben, Rotieren, UND, ODER und XOR sowie viele verschiedene algebraische Funktionen, darunter beliebige der Funktionen Addieren, Subtrahieren, Multiplizieren, Dividieren, durchführen kann. Einige ALUs 402 sind für skalare Operationen und einige ALUs 402 sind für Gleitkomma-Operationen ausgelegt. In Ausführungsformen können die Daten in Abhängigkeit von der Architektur die Byte-Reihenfolge ”Big Endian” (wobei sich das niederwertigste Byte an der höchsten Byte-Adresse befindet) oder ”Little Endian” (wobei sich das niederwertigste Byte an der niedrigsten Byte-Adresse befindet) aufweisen. Die z/Architecture von IBM verwendet ”Big Endian”. Bei vorzeichenbehafteten Feldern kann die Darstellung des Vorzeichens in Abhängigkeit von der Architektur in Form von Vorzeichen-Betrag, Einerkomplement oder Zweierkomplement erfolgen. Eine Zweierkomplement-Zahl ist dahingehend vorteilhaft, dass die ALU keine Subtraktionsfunktion konzipieren muss, da ein negativer Wert oder aber ein positiver Wert in dem Zweierkomplement lediglich eine Addition in der ALU erforderlich macht. Zahlen werden gemeinhin in verkürzter Schreibweise dargestellt, wobei ein 12 Bit-Feld eine Adresse eines 4.096-Byte-Blocks angibt und gewöhnlich zum Beispiel als ein 4-KByte-(Kilobyte-)Block beschrieben wird.
  • Bezug nehmend auf 4B werden Verzweigungsbefehl-Informationen für die Ausführung eines Verzweigungsbefehls üblicherweise an eine Verzweigungseinheit 308 gesendet, die von einer Verzweigungsvorhersage Gebrauch macht, wobei sie eine Struktur wie zum Beispiel einen Verzweigungsziel-Pufferspeicher (BTB) 432 verwendet, um den Ausgang der Verzweigung vorherzusagen, bevor andere bedingte Operationen abgeschlossen sind. Das Ziel des aktuellen Verzweigungsbefehls wird abgerufen und spekulativ ausgeführt, bevor die bedingten Operationen abgeschlossen sind. Wenn die bedingten Operationen abgeschlossen sind, werden die spekulativ ausgeführten Verzweigungsbefehle auf der Grundlage der Bedingungen der bedingten Operation und des spekulierten Ausgangs entweder abgeschlossen oder verworfen. Ein typischer Verzweigungsbefehl kann Bedingungscodes prüfen und zu einer Zieladresse verzweigen, wenn die Bedingungscodes die Verzweigungsvoraussetzung des Verzweigungsbefehls erfüllen; eine Zieladresse kann auf der Grundlage von mehreren Zahlen einschließlich Zahlen, die beispielsweise in Registerfeldern oder in einem direkten Feld des Befehls vorgefunden werden, berechnet werden. In einer Ausführungsform kann die Verzweigungseinheit 308 eine ALU 426 verwenden, die über eine Vielzahl von Eingaberegister-Schaltungen 427, 428 und 429 und eine Ausgaberegister-Schaltung 430 verfügt. Die Verzweigungseinheit 308 kann beispielsweise mit allgemeinen Registern, der Decodier-/Zuteilungseinheit 306 oder anderen Schaltungen 425 Daten austauschen.
  • Die Ausführung einer Gruppe von Befehlen kann aus vielen verschiedenen Gründen einschließlich beispielsweise eines von einem Betriebssystem veranlassten Kontextwechsels, einer Programm-Ausnahmebedingung oder eines Fehlers, der einen Kontextwechsel bewirkt, eines E/A-Unterbrechungssignals, das einen Kontextwechsel bewirkt, oder einer Multithreading-Aktivität einer Vielzahl von Programmen (in einer Multithread-Umgebung) unterbrochen werden. In einer Ausführungsform speichert ein Kontextwechsel-Vorgang Zustandsinformationen über ein gerade in Ausführung befindliches Programm und lädt anschließend Zustandsinformationen über ein anderes Programm, das aufgerufen wird.
  • Zustandsinformationen können zum Beispiel in Hardware-Registern oder im Arbeitsspeicher gespeichert werden. Zu Zustandsinformationen gehören ein Wert eines Programmzählers, welcher auf einen nächsten auszuführenden Befehl zeigt, Bedingungscodes, Informationen über die Umsetzung des Arbeitsspeichers sowie der Inhalt von architekturdefinierten Registern. Eine Kontextwechsel-Aktivität kann von Hardware-Schaltungen, Anwendungsprogrammen, Betriebssystemprogrammen oder von Firmware-Code (Mikrocode, Pikocode oder lizenziertem internen Code (LIC) allein oder in Kombination durchgeführt werden.
  • Ein Prozessor greift entsprechend Verfahren, die von Befehlen angegeben werden, auf Operanden zu. Der Befehl kann einen Direktoperanden bereitstellen, der den Wert von einem Teil des Befehls verwendet, oder er kann ein oder mehrere Registerfelder bereitstellen, die eindeutig auf Mehrzweckregister oder aber auf Sonderregister (zum Beispiel Gleitkomma-Register) zeigen. Der Befehl kann implizit enthaltene Register verwenden, die von einem Feld des Operationscodes als Operanden gekennzeichnet werden. Der Befehl kann Speicherplätze für Operanden verwenden. Ein Speicherplatz eines Operanden kann von einem Register, einem direkten Feld oder einer Kombination aus Registern und einem direkten Feld bereitgestellt werden, wie es die Long Displacement Facility der z/Architecture beispielhaft zeigt, bei der der Befehl ein Basisregister, ein Indexregister und ein direktes Feld (Versatz-Feld) angibt, die zusammengesetzt werden, um die Adresse des Operanden im Arbeitsspeicher bereitzustellen. Sofern nichts anderes angegeben ist, bezeichnet ein Speicherplatz hier einen Speicherplatz im Hauptspeicher.
  • Bezug nehmend auf 4C greift ein Prozessor mittels einer Lade-/Speichereinheit 310 auf den Massenspeicher zu. Die Lade-/Speichereinheit 310 kann eine Ladeoperation durchführen, indem sie die Adresse des Zieloperanden im Arbeitsspeicher über die Cache-/Arbeitsspeicherschnittstelle abruft und den Operanden in ein architekturdefiniertes Register 309 oder an einen anderen Speicherplatz lädt, oder sie kann eine Speicheroperation durchführen, indem sie die Adresse des Zieloperanden im Arbeitsspeicher abruft und Daten, die sie aus einem architekturdefinierten Register 309 oder einem anderen Speicherplatz abgerufen hat, am Speicherplatz des Zieloperanden im Arbeitsspeicher speichert. Die Lade-/Speichereinheit 310 kann spekulativ sein und auf den Arbeitsspeicher in einer Abfolge zugreifen, die in Bezug auf die Befehlsfolge außerhalb der Reihenfolge ist, jedoch wahrt die Lade-/Speichereinheit 310 gegenüber Programmen den Anschein, dass Befehle in der vorgesehenen Reihenfolge ausgeführt worden seien. Eine Lade-/Speichereinheit 310 kann mit den architekturdefinierten Registern 309, der Decodier-/Zuteilungseinheit 306, der Cache-/Arbeitsspeicher-Schnittstelle oder anderen Elementen 455 Daten austauschen und sie weist verschiedene Registerschaltungen, ALUs 458 und Steuerlogik 463 auf, um Speicheradressen zu berechnen und die Reihenfolgesicherung in der Pipeline zu ermöglichen, damit Operationen in der vorgesehenen Reihenfolge durchgeführt werden können. Manche Operationen können außerhalb der Reihenfolge stattfinden, aber die Lade-/Speichereinheit stellt Funktionen bereit, damit die außerhalb der Reihenfolge stattfindenden Operationen dem Programm so erscheinen, als wären sie reihenfolgekonform durchgeführt worden, wie in der Technik hinlänglich bekannt ist.
  • Vorzugsweise Adressen, die ein Anwendungsprogramm ”sieht”, werden oft als virtuelle Adressen bezeichnet. Virtuelle Adressen werden manchmal als ”logische Adressen” und ”effektive Adressen” bezeichnet. Diese virtuellen Adressen sind dahingehend virtuell, dass sie von einer dynamischen Adressumsetzungs-(DAT-)Technologie von vielen verschiedenen DAT-Technologien, wie zum Beispiel der DAT 312 von 3, an einen physischen Speicherplatz umgeleitet werden, wobei die Technologien das Versehen einer virtuellen Adresse mit einem Offset-Wert als Vorsatz, das Umsetzen der virtuellen Adresse über eine oder mehrere Umsetzungstabellen einschließen, ohne darauf beschränkt zu sein, wobei zu den Umsetzungstabellen mindestens eine Segmenttabelle und eine Seitentabelle allein oder in Kombination gehören, wobei die Segmenttabelle vorzugsweise über einen Eintrag verfügt, der auf die Seitentabelle zeigt. Bei der z/Architecture wird eine Umsetzungs-Hierarchie bereitgestellt, zu der eine Bereichs-Ersttabelle, eine Bereichs-Zweittabelle, eine Bereichs-Dritttabelle, eine Segmenttabelle und eine optionale Seitentabelle gehören. Die Leistungsfähigkeit der Adressumsetzung wird oftmals durch die Verwendung eines Adressumsetzpufferspeichers (TLB) verbessert, der Einträge umfasst, die eine virtuelle Adresse auf einen zugehörigen physischen Speicherplatz abbilden. Die Einträge werden erzeugt, wenn die DAT 312 eine virtuelle Adresse mit Hilfe der Umsetzungstabellen umsetzt. Bei einer späteren Verwendung der virtuellen Adresse kann dann anstelle der langsamen sequenziellen Zugriffe auf die Umsetzungstabelle der Eintrag des schnellen TLB verwendet werden. Die Verwaltung des Inhalts des TLB kann mittels vieler verschiedener Ersetzungsalgorithmen einschließlich LRU (Least Recently Used) erfolgen.
  • In dem Fall, in dem der Prozessor 106 ein Prozessor eines Mehrprozessorsystems ist, ist jeder Prozessor dafür verantwortlich, dass gemeinsam genutzte Ressourcen wie zum Beispiel E/A, Cache-Speicher, TLBs und Arbeitsspeicher aus Kohärenzgründen aufeinander abgestimmt bleiben. In einer Ausführungsform kommen bei der Aufrechterhaltung der Kohärenz des Cache-Speichers ”Abhör”-Technologien zur Anwendung. In einer Abhörumgebung kann jede Cache-Speicher-Zeile als eine Zeile gekennzeichnet werden, die sich entweder in einem gemeinsam genutzten Zustand, einem exklusiven Zustand, einem geänderten Zustand, einem ungültigen Zustand oder dergleichen befindet, um die gemeinsame Nutzung zu vereinfachen.
  • Die E/A-Einheiten 304 von 3 stellen dem Prozessor 106 ein Mittel zur Anbindung an periphere Einheiten einschließlich beispielsweise Band, Platte, Drucker, Bildschirme und Netzwerke bereit. Die E/A-Einheiten 304 werden dem Computerprogramm oftmals von Software-Treibern angezeigt. Bei Mainframe-Computern wie zum Beispiel dem System z von IBM sind Kanaladapter und Adapter für offene Systeme E/A-Einheiten des Mainframe-Computers, die die Datenübertragungen zwischen dem Betriebssystem und peripheren Einheiten ermöglichen.
  • Die 5 und 6 zeigen beispielhafte Befehlsformate 500 und 600 für Verzweigungsvorhersage-Vorabladebefehle. Das Befehlsformat 500 ist ein Verzweigungsvorhersage-Vorabladebefehl einschließlich eines Operationscodes 502, eines Maskenfelds 504, eines Startadressen-Offsets RI 506, eines Zieladressenbasisregisters 508 und eines Zieladressenversatzes 510. Das Befehlsformat 500 kann auch reservierte/undefinierte Bits 512 enthalten. Ebenso ist das Befehlsformat 600 ein auf eine Verzweigungsvorhersage bezogener Vorabladebefehl mit einem Operationscode 602, einem Maskenfeld 604, einem Startadressen-Offset RI2 606 und einem Zieladressen-Offset Ri3 608. Die Operationscodes 502 und 602 können ausgewählt werden, um die Befehlsformate 500 und 600 in Bezug auf andere architekturdefinierte Befehle eindeutig zu kennzeichnen.
  • Mit dem Startadressen-Offset RI 506 oder dem Startadressen-Offset RI2 606 wird eine Startadresse eines vorhergesagten Verzweigungsbefehls ermittelt. In einer beispielhaften Ausführungsform sind der Startadressen-Offset RI 506 und der Startadressen-Offset RI2 606 vorzeichenbehaftete ganze Binärzahlen, die die Anzahl der Halbwörter angeben, welche zu der Adresse des aktuellen Verzweigungsvorabladebefehls hinzugefügt werden, um die Adresse einer Verzweigung oder eines Befehls vom Typ ”Ausführen” zu erzeugen. In einem Beispiel enthält der Startadressen-Offset RI 506 des Befehlsformats 500 eine vorzeichenbehaftete ganze 16-Bit-Zahl und der Startadressen-Offset RI2 606 des Befehlsformats 600 enthält eine vorzeichenbehaftete ganze 12-Bit-Zahl. Wenn die in dem Startadressen-Offset RI 506 oder in dem Startadressen-Offset RI2 606 angegebene Anzahl von Halbwörtern zu der Adresse des aktuellen Verzweigungsvorabladebefehls hinzugefügt wird, unterliegt das Ergebnis dem aktuellen Adressierungsmodus. Das heißt, im 24-Bit-Adressierungsmodus wird das Ergebnis als eine 24-Bit-Adresse, im 31-Bit-Adressierungsmodus als eine 31-Bit-Adresse beziehungsweise im 64-Bit-Adressierungsmodus als eine 64-Bit-Adresse behandelt.
  • Vorbehaltlich der Steuerangaben im Maskenfeld 504 oder im Maskenfeld 604 werden dem Prozessor 106 Informationen über eine Verzweigung oder einen Befehl vom Typ ”Ausführen” bereitgestellt, die beziehungsweise der vom Startadressen-Offset RI 506 oder vom Startadressen-Offset RI2 606 angegeben wird. Die vorhergesagte Zieladresse des bezeichneten Befehls wird von dem Zieladressenbasisregister 508 in Verbindung mit dem Zieladressenversatz 510 oder dem Zieladressen-Offset RI3 608 angegeben.
  • In beispielhaften Ausführungsformen enthalten das Maskenfeld 504 und das Maskenfeld 604 jeweils eine vorzeichenfreie ganze 4-Bit-Binärzahl, die als Code verwendet wird, um CPU-Attribute des von dem Startadressen-Offset bezeichneten Verzweigungsbefehls anzugeben. Die Codes für die Maskenfelder 504 und 604 sind beispielsweise wie folgt:
    • Code 0 – Der Befehl ist ein Verzweigungsbefehl mit einer Länge von 4 Byte. Der Verzweigungsbefehl wird nicht für eine Aufrufverknüpfung oder eine Rückgabeverknüpfung verwendet, und es kann mehrere mögliche Ziele dieses Verzweigungsbefehls geben.
    • Codes 1–4 – Reserviert.
    • Code 5 – Der Befehl ist ein Verzweigungsbefehl mit einer Länge von 2 Byte. Der Verzweigungsbefehl wird für eine Aufrufverknüpfung verwendet, und es gibt nur ein Ziel dieses Verzweigungsbefehls.
    • Code 6 – Der Befehl ist ein Verzweigungsbefehl mit einer Länge von 2 Byte. Der Verzweigungsbefehl wird für eine Rückgabeverknüpfung verwendet.
    • Code 7 – Der Befehl ist ein Verzweigungsbefehl mit einer Länge von 2 Byte. Der Verzweigungsbefehl wird für eine Aufrufverknüpfung verwendet, und es kann mehrere mögliche Ziele dieses Verzweigungsbefehls geben.
    • Code 8 – Der Befehl ist ein Verzweigungsbefehl mit einer Länge von 4 Byte. Der Verzweigungsbefehl wird weder für eine Aufrufverknüpfung noch für eine Rückgabeverknüpfung verwendet, und es gibt nur ein Ziel dieses Verzweigungsbefehls.
    • Code 9 – Der Befehl ist ein Verzweigungsbefehl mit einer Länge von 4 Byte. Der Verzweigungsbefehl wird für eine Aufrufverknüpfung verwendet, und es gibt nur ein Ziel des Verzweigungsbefehls.
    • Code 10 – Der Befehl ist ein Verzweigungsbefehl mit einer Länge von 4 Byte. Der Verzweigungsbefehl kann für eine Rückgabeverknüpfung und für unbedingte Verzweigungen verwendet werden.
    • Code 11 – Der Befehl ist ein Verzweigungsbefehl mit einer Länge von 4 Byte. Der Verzweigungsbefehl wird für eine Aufrufverknüpfung verwendet, und es kann mehrere mögliche Ziele dieses Verzweigungsbefehls geben.
    • Code 12 – Der Befehl ist ein Verzweigungsbefehl mit einer Länge von 6 Byte. Der Verzweigungsbefehl wird weder für eine Aufrufverknüpfung noch für eine Rückgabeverknüpfung verwendet, und es gibt nur ein Ziel dieses Verzweigungsbefehls.
    • Code 13 – Der Befehl ist ein Verzweigungsbefehl mit einer Länge von 6 Byte. Der Verzweigungsbefehl wird für eine Aufrufverknüpfung verwendet, und es gibt nur ein Ziel dieses Verzweigungsbefehls.
    • Code 14 – Der Befehl ist ein Befehl vom Typ ”Ausführen”, z. B. EXECUTE (AUSFÜHREN). Der Befehl vom Typ ”Ausführen” kann vorübergehend verzweigen, um einen Befehl auszuführen, den er ändern darf, und dann sofort zurückkehren, vorausgesetzt, dass es sich bei diesem einzelnen Befehl nicht um eine genommene Verzweigung handelt, die den Code-Strom an einen anderen Ort umlenkt.
    • Code 15 – Der Befehl ist ein Befehl vom Typ ”Ausführen”, z. B. EXECUTE RELATIVE LONG. Der Befehl vom Typ ”Ausführen” kann vorübergehend verzweigen, um einen Befehl auszuführen, den er ändern darf, und dann sofort zurückkehren, vorausgesetzt, dass es sich bei diesem einzelnen Befehl nicht um eine genommene Verzweigung handelt, die den Code-Strom an einen anderen Ort umlenkt.
  • Wenn das Maskenfeld 504 bei dem Befehlsformat 500 einen Verzweigungsbefehl angibt, ist die Zieladresse, die von dem Zieladressenbasisregister 508 in Verbindung mit dem Zieladressenversatz 510 gebildet wird, eine vorhergesagte Verzweigungszieladresse des von dem Startadressen-Offset RI 506 bezeichneten Verzweigungsbefehls. Wenn das Maskenfeld 504 bei dem Befehlsformat 500 einen Befehl vom Typ ”Ausführen” angibt, ist die Zieladresse, die von dem Zieladressenbasisregister 508 in Verbindung mit dem Zieladressenversatz 510 gebildet wird, eine Ausführen-Zieladresse des Befehls vom Typ ”Ausführen”, die von dem Startadressen-Offset RI 506 in Abhängigkeit von dem aktuellen Adressierungsmodus angegeben wird. Das heißt, im 24-Bit-Adressierungsmodus wird das Ergebnis als eine 24-Bit-Adresse, im 31-Bit-Adressierungsmodus als eine 31-Bit-Adresse beziehungsweise im 64-Bit-Adressierungsmodus als eine 64-Bit-Adresse behandelt.
  • Wenn das Maskenfeld 604 bei dem Befehlsformat 600 einen Verzweigungsbefehl angibt, besteht der Inhalt des Zieladressen-Offsets RI3 608 aus einer vorzeichenbehafteten ganzen 24-Bit-Binärzahl, die die Anzahl der Halbwörter angibt, welche zu der Adresse des auf die Verzweigungsvorhersage bezogenen Vorabladebefehls hinzugefügt werden, um die Verzweigungszieladresse des von dem Startadressen-Offset RI2 606 bezeichneten Verzweigungsbefehls zu erzeugen. Wenn das Maskenfeld 604 bei dem Befehlsformat 600 einen Befehl vom Typ ”Ausführen” angibt, besteht der Inhalt des Zieladressen-Offsets RI3 608 aus einer vorzeichenbehafteten ganzen 24-Bit-Binärzahl, die die Anzahl der Halbwörter angibt, welche zu der Adresse des auf die Verzweigungsvorhersage bezogenen Vorabladebefehls hinzugefügt werden, um die Ausführungszieladresse des von dem Startadressen-Offset RI2 606 bezeichneten Befehls vom Typ ”Ausführen” zu erzeugen. Wenn die von dem Startadressen-Offset RI3 608 angegebene Anzahl von Halbwörtern zu der Adresse des auf die Verzweigungsvorhersage bezogenen Vorabladebefehls hinzugefügt wird, unterliegt das Ergebnis dem aktuellen Adressierungsmodus. Das heißt, im 24-Bit-Adressierungsmodus wird das Ergebnis als eine 24-Bit-Adresse, im 31-Bit-Adressierungsmodus als eine 31-Bit-Adresse beziehungsweise im 64-Bit-Adressierungsmodus als eine 64-Bit-Adresse behandelt.
  • In Abhängigkeit von dem Modell führt der Prozessor 106 möglicherweise nicht alle vorstehend aufgeführten Verzweigungsattribut-Codes aus. Bei Codes, die von dem Prozessor 106 nicht erkannt werden, und bei reservierten Codes verhält sich der Befehl möglicherweise wie eine Nicht-Operation. In beispielhaften Ausführungsformen handelt es sich bei den von den Befehlsformaten 500 und 600 angegebenen Verzweigungsadressen/den Adressen vom Typ ”Ausführen” und den Zieladressen um virtuelle Adressen.
  • 7 zeigt einen beispielhaften Prozess 700 zum Vorabladen von Verzweigungsvorhersagen, der im Prozessor 106 ausgeführt werden kann. Am Block 702 wird eine Vielzahl von Befehlen in einem Befehlsstrom abgerufen, wobei es sich bei dem Befehlsstrom um eine Folge von Befehlen handelt, die ausgeführt werden können. Befehle können mit Hilfe der Befehlsabrufeinheit 305 aus einem Befehls-Cache-Speicher in den Cache-Speichern 303 abgerufen werden. Am Block 704 wird ein Verzweigungsvorhersage-Vorabladebefehl in dem Befehlsstrom decodiert. Eine Befehlsdecodierung kann von der Decodier-/Zuteilungseinheit 306 vorgenommen werden.
  • Am Block 706 wird auf Grundlage des Verzweigungsvorhersage-Vorabladebefehls eine Adresse eines vorab zu ladenden, vorhergesagten Verzweigungsbefehls ermittelt. Der Verzweigungsvorhersage-Vorabladebefehl kann das Befehlsformat 500, das Befehlsformat 600 oder eine Variante dieser Befehlsformate aufweisen. Die Adresse des vorab zu ladenden, vorhergesagten Verzweigungsbefehls kann ein Adressoffset von der Adresse des Verzweigungsvorhersage-Vorabladebefehl sein. Bei dem Befehlsformat 500 kann die Adresse eine auf dem Startadressen-Offset RI 506 beruhende Startadresse sein. Bei dem Befehlsformat 600 kann die Adresse eine auf dem Startadressen-Offset RI2 606 beruhende Startadresse sein. Alternative Formate können anstelle einer Startadresse eine Endadresse als Adresse verwenden. Beispielsweise können die Offsets RI 506 und RI2 606 als Endadressen-Offsets statt als Startadressen-Offsets realisiert werden. Als weitere Alternative kann die Adresse eine Endadresse sein, die auf dem Startadressen-Offset RI 506 oder dem Startadressen-Offset RI2 606 zuzüglich einer Verzweigungsbefehl-Länge gemäß dem Maskenfeld 504 und dem Maskenfeld 604 und abzüglich einer oder mehrerer adressierbaren Einheiten (z. B. Bytes) beruht, um die Adresse auszurichten.
  • Am Block 708 wird auf der Grundlage des Verzweigungsvorhersage-Vorabladebefehls eine vorhergesagte Zieladresse des vorab zu ladenden, vorhergesagten Verzweigungsbefehls ermittelt. Beim Befehlsformat 500 kann die vorhergesagte Zieladresse auf der Grundlage des Inhalts des Zieladressenbasisregisters 508 in Verbindung mit dem Zieladressenversatz 510 ermittelt werden. Beim Befehlsformat 600 kann die vorhergesagte Zieladresse auf der Grundlage des Zieladressen-Offsets RI3608 ermitteltwerden.
  • Am Block 710 wird in dem Verzweigungsvorhersage-Vorabladebefehl ein Maskenfeld erkannt. In beispielhaften Ausführungsformen erfolgen Decodierungen des Maskenfelds 504 des Befehlsformats 500 und des Maskenfelds 604 des Befehlsformats 600 weitgehend auf die gleiche Weise. Die Maskenfelder 504 und 604 geben die Länge eines Verzweigungsbefehls und den Verzweigungstyp für das Vorabladen des BTB 432 an. Am Block 712 wird auf der Grundlage des Maskenfelds eine Verzweigungsbefehl-Länge des vorab zu ladenden, vorhergesagten Verzweigungsbefehls ermittelt. Ein Verzweigungstyp des vorab zu ladenden, vorhergesagten Verzweigungsbefehls lässt sich ebenfalls auf der Grundlage des Maskenfelds ermitteln und kann dem BTB 432 bereitgestellt werden. Auf der Grundlage des Ausführens des Verzweigungsvorhersage-Vorabladebefehls werden die Adresse des vorhergesagten Verzweigungsbefehls, die Länge des Verzweigungsbefehls, der Verzweigungstyp und die vorhergesagte Zieladresse, die zu dem vorhergesagten Verzweigungsbefehl gehört, am Block 714 vorab in den BTB 432 geladen. Hier kann die Adresse des vorhergesagten Verzweigungsbefehls auf der Grundlage des Verzweigungsoffsets ermittelt werden, der zu der Adresse des Verzweigungs-Vorabladebefehls hinzugefügt werden kann. Die Adresse des vorhergesagten Verzweigungsbefehls kann eine Startadresse oder eine Endadresse darstellen. Dadurch, dass man die Endadresse als Funktion der bereitgestellten Befehlslänge kennt, die ebenfalls im BTB 432 gespeichert werden kann, weiß man, wie weit ein sequenzieller Abruf bei einer Architektur mit veränderlicher Befehlslänge bei einer zukünftigen Vorhersage der vorab geladenen Verzweigung reichen muss, welche als vom BTB 432 genommen vorhergesagt wird.
  • Indem die Adresse des vorhergesagten Verzweigungsbefehls und die vorhergesagte Zieladresse, die zu dem vorhergesagten Verzweigungsbefehl gehört, vorab in den BTB 432 geladen werden, können ein Teil der Adresse des vorhergesagten Verzweigungsbefehls und ein Teil der vorhergesagten Zieladresse in dem BTB 432 gespeichert werden. Zum Beispiel können im BTB 432 gespeicherte Adresskennzeichen (address tags) weniger Bits als eine vollständige Adresse enthalten, jedoch können vollständige Adressen auf der Grundlage der Adresskennzeichen in Verbindung mit anderen Informationen, z. B. einer Basisadresse oder eines Adressbereichs, ermittelt werden.
  • Auf der Grundlage des Verzweigungstyps können verschiedene Maßnahmen ergriffen werden. Beispielsweise wird auf der Grundlage der Feststellung, dass der Verzweigungstyp des vorhergesagten Verzweigungsbefehls eine Aufrufverzweigung ist, eine sequenzielle Adresse als Funktion der Länge des Verzweigungsbefehls für eine zukünftige Vorhersage einer Rückkehrverzweigung gespeichert. Nach der Vorhersage des vorhergesagten Verzweigungsbefehls von dem BTB 432 kann die sequenzielle Adresse in einem Aufruf-Rückkehr-Stapelspeicher im Hauptspeicher 105 oder in einem anderen Bereich des Hauptspeichers gespeichert werden. Auf der Grundlage der Feststellung, dass der Verzweigungstyp des vorhergesagten Verzweigungsbefehls die Rückkehrverzweigung ist, kann die sequenzielle Adresse nach der Vorhersage als eine Zielvorhersage statt aus einem Zieladresseneintrag im BTB 432 aus dem Aufruf-Rückkehr-Stapelspeicher abgerufen werden. Ein Hinweis, dass ein Verzweigungstyp eine Aufruftyp-Verzweigung oder eine Rückkehrtyp-Verzweigung ist, wird zusammen mit der Verzweigung im BTB 432 gespeichert. Nach der Vorhersage des Aufruftyps wird die sequenzielle Adresse als Funktion der Länge des Verzweigungsbefehls, die ebenfalls im BTB 432 gespeichert ist, in dem Stapelspeicher, auf den verwiesen wird, gespeichert. Nach der Vorhersage der Verzweigung, auf die als Rückkehrverzweigung verwiesen wird, wird für die Rückkehradresse auf den Stapelspeicher verwiesen.
  • Auf der Grundlage der Feststellung, dass der Verzweigungstyp des vorhergesagten Verzweigungsbefehls eine Verzweigung ist, die den Adressmodus ändert, wird nach der Vorhersage der vorhergesagten Zieladresse in dem Verzweigungsziel-Pufferspeicher ein Adressierungsmodus gesetzt, der dem Verzweigungstyp entspricht. Auf der Grundlage der Feststellung, dass der Verzweigungstyp des vorhergesagten Verzweigungsbefehls ein Befehlstyp ”Ausführen” ist, wird der Befehlstyp ”Ausführen” als ein spezieller Verzweigungstyp in der Verzweigungsvorhersagelogik der Verzweigungsvorhersageeinheit 308 behandelt. Beispielsweise kann ein einzelner Befehl ”Ausführen” tatsächlich zu zwei sequenziellen Verzweigungen führen, um zu einem auszuführenden Befehl zu verzweigen und um nach der Befehlsausführung unverzüglich zurückzukehren.
  • Zusätzliche Informationen auf der Grundlage des Verzweigungstyps können ebenfalls im BTB 432 gespeichert werden. Wenn die Verzweigung zum Beispiel mehrere Ziele hat, wie von dem Maskenfeld 504, 604 angegeben, kann auch ein Hinweis auf mehrere Ziele in dem BTB 432 gespeichert werden, so dass geeignete Vorhersagestrukturen zur Anwendung kommen können, wenn die Verzweigung vorhergesagt und folglich auch das Ziel vorhergesagt wird.
  • Wie der Fachmann verstehen wird, können ein oder mehrere Aspekte der vorliegenden Erfindung als ein System, ein Verfahren oder ein Computerprogrammprodukt realisiert werden. Folglich können ein oder mehrere Aspekte der vorliegenden Erfindung die Form einer ganz in Hardware realisierten Ausführung, einer ganz in Software realisierten Ausführung (einschließlich Firmware, residenter Software, Mikrocode usw.) oder einer Ausführungsform annehmen, die Software- und Hardware-Aspekte kombiniert, die hier alle allgemein als eine ”Schaltung”, ein ”Modul” oder ein ”System” bezeichnet werden können. Überdies können ein oder mehrere Aspekte der vorliegenden Erfindung die Form eines Computerprogrammprodukts annehmen, das sich auf einem oder mehreren von einem Computer lesbaren Datenträger(n) befindet, auf dem beziehungsweise denen sich von einem Computer lesbarer Programmcode befindet.
  • Jede beliebige Kombination aus einem oder mehreren von einem Computer lesbaren Datenträgern kann verwendet werden. Bei dem von einem Computer lesbaren Datenträger kann es sich um ein von einem Computer lesbares Speichermedium handeln. Ein von einem Computer lesbares Speichermedium kann zum Beispiel, ohne darauf beschränkt zu sein, ein(e) elektronische(s), magnetische(s), optische(s), elektromagnetische(s), Infrarot- oder Halbleitersystem, -vorrichtung, -einheit oder eine beliebige geeignete Kombination des Vorstehenden sein. Zu konkreteren Beispielen (eine Liste, die keinen Anspruch auf Volständigkeit erhebt) für das von einem Computer lesbare Speichermedium gehören folgende: eine elektrische Verbindung mit einer oder mehreren Leitungen, eine Diskette eines tragbaren Computers, eine Festplatte, ein Direktzugriffsspeicher (RAM), ein Nur-Lese-Speicher (ROM), ein löschbarer programmierbarer Nur-Lese-Speicher (EPROM oder Flash-Speicher), ein Lichtwellenleiter, ein tragbarer Compact-Disk-Nur-Lese-Speicher (CD-ROM), eine optische Speichereinheit, eine magnetische Speichereinheit oder jede beliebige geeignete Kombination des Vorstehenden. Im Kontext dieses Schriftstücks kann es sich bei einem von einem Computer lesbaren Speichermedium um jedes physisch greifbare Medium handeln, das ein Programm zur Verwendung durch oder zur Verwendung in Verbindung mit einem Befehlsausführungssystem, einer Befehlsausführungsvorrichtung oder -einheit enthalten oder speichern kann.
  • Nun Bezug nehmend auf 8 enthält ein Computerprogrammprodukt 800 in einem Beispiel beispielsweise ein oder mehrere Speichermedien 802, wobei die Medien physisch greifbar und/oder nicht flüchtig sein können, um ein von einem Computer lesbares Programmcode-Mittel oder Logik 804 darauf zu speichern, um einen Aspekt oder mehrere Aspekte von hier beschriebenen Ausführungsformen bereitzustellen und zu vereinfachen.
  • Programmcode wird häufig als ”Computerprogrammprodukt” bezeichnet, wenn er erzeugt und auf einem physisch greifbaren Medium (einschließlich elektronischer Speichermodule (RAM), Flash-Speicher, Compact-Discs (CDs), DVDs, Magnetband und dergleichen, ohne darauf beschränkt zu sein) gespeichert wird. Der Datenträger mit dem Computerprogrammprodukt kann üblicherweise von einer Verarbeitungsschaltung vorzugsweise in einem Computersystem gelesen werden, um von der Verarbeitungsschaltung ausgeführt zu werden. Ein solcher Programmcode kann zum Beispiel mit Hilfe eines Compilers oder Assemblers erzeugt werden, um Befehle zusammenzustellen, die, wenn sie ausgeführt werden, Aspekte der Erfindung durchführen.
  • Zu Ausführungsformen gehören ein System, ein Verfahren und ein Computerprogrammprodukt zum Vorabladen von Verzweigungsvorhersagen. Das System zum Vorabladen von Verzweigungsvorhersagen enthält einen Befehls-Cache-Speicher und einen Verzweigungsziel-Pufferspeicher, der mit einer Verarbeitungsschaltung verbunden ist. Die Verarbeitungsschaltung ist so konfiguriert, dass sie ein Verfahren durchführt. Das Verfahren beinhaltet das Abrufen einer Vielzahl von Befehlen in einem Befehlsstrom aus dem Befehls-Cache-Speicher und das Decodieren eines Verzweigungsvorhersage-Vorabladebefehls in dem Befehlsstrom. Das Verfahren beinhaltet des Weiteren das Ermitteln einer Adresse eines vorhergesagten Verzweigungsbefehls durch die Verarbeitungsschaltung auf der Grundlage des Verzweigungsvorhersage-Vorabladebefehls und das Ermitteln einer vorhergesagten Zieladresse des vorhergesagten Verzweigungsbefehls durch die Verarbeitungsschaltung auf der Grundlage des Verzweigungsvorhersage-Vorabladebefehls. Das Verfahren beinhaltet auch das Erkennen eines Maskenfelds in dem Verzweigungsvorhersage-Vorabladebefehl und das Ermitteln einer Verzweigungsbefehl-Länge des vorhergesagten Verzweigungsbefehls durch die Verarbeitungsschaltung auf der Grundlage des Maskenfelds. Auf der Grundlage des Ausführens des Verzweigungsvorhersage-Vorabladebefehls werden die Adresse des vorhergesagten Verzweigungsbefehls, die Länge des Verzweigungsbefehls und die vorhergesagte Zieladresse, die zu dem vorhergesagten Verzweigungsbefehl gehört, vorab in den Verzweigungsziel-Pufferspeicher geladen.
  • In einer Ausführungsform ist die Verarbeitungsschaltung des Systems des Weiteren so konfiguriert, dass sie einen Verzweigungstyp des vorhergesagten Verzweigungsbefehls auf der Grundlage des Maskenfelds ermittelt und den Verzweigungstyp des vorhergesagten Verzweigungsbefehls dem Verzweigungsziel-Pufferspeicher bereitstellt. In einer Ausführungsform ist die Verarbeitungsschaltung des Systems des Weiteren so konfiguriert, dass sie eine sequenzielle Adresse für eine zukünftige Vorhersage einer Rückkehrverzweigung nach der Vorhersage des vorhergesagten Verzweigungsbefehls aus dem Verzweigungsziel-Pufferspeicher auf der Grundlage der Feststellung, dass der Verzweigungstyp des vorhergesagten Verzweigungsbefehls eine Aufrufverzweigung ist, speichert. In einer Ausführungsform wird die sequenzielle Adresse in einem Aufruf-Rückkehr-Stapelspeicher gespeichert und auf der Grundlage der Feststellung, dass der Verzweigungstyp des vorhergesagten Verzweigungsbefehls die Rückkehrverzweigung ist, wird die sequenzielle Adresse nach der Vorhersage als eine Zielvorhersage nicht aus einem Zieladresseneintrag im Verzweigungsziel-Pufferspeicher, sondern aus dem Aufruf-Rückkehr-Stapelspeicher abgerufen. Auf der Grundlage der Feststellung, dass der Verzweigungstyp des vorhergesagten Verzweigungsbefehls eine Verzweigung ist, die den Adressmodus ändert, wird in einer Ausführungsform nach der Vorhersage der vorhergesagten Zieladresse in dem Verzweigungsziel-Pufferspeicher ein Adressierungsmodus gesetzt, der dem Verzweigungstyp entspricht. Auf der Grundlage der Feststellung, dass der Verzweigungstyp des vorhergesagten Verzweigungsbefehls ein Befehlstyp ”Ausführen” ist, wird der Befehlstyp ”Ausführen” in einer Ausführungsform als ein spezieller Verzweigungstyp in der Verzweigungsvorhersagelogik behandelt.
  • In einer Ausführungsform ist die Verarbeitungsschaltung des Systems des Weiteren so konfiguriert, dass sie die Adresse des vorhergesagten Verzweigungsbefehls als einen Adressen-Offset von dem Verzweigungsvorhersage-Vorabladebefehl und die vorhergesagte Zieladresse als eines von Folgendem ermittelt: als einen relativen Offset von dem Verzweigungsvorhersage-Vorabladebefehl oder als eine Abweichung von einem Basiswert Die Adresse des vorhergesagten Verzweigungsbefehls kann eines von Folgendem sein: eine Anfangsadresse oder eine Endadresse des vorhergesagten Verzweigungsbefehls. In einer Ausführungsform ist die Verarbeitungsschaltung des Systems des Weiteren so konfiguriert, dass sie die Adresse des vorhergesagten Verzweigungsbefehls vorab in den Verzweigungsziel-Pufferspeicher lädt, und die vorhergesagte Zieladresse, die zu dem vorhergesagten Verzweigungsbefehl gehört, speichert einen Teil der Adresse des vorhergesagten Verzweigungsbefehls und einen Teil der vorhergesagten Zieladresse in dem Verzweigungsziel-Pufferspeicher.
  • Zu technischen Wirkungen und Vorteilen zählen das Vorabladen von Verzweigungsvorhersagen in einen Verzweigungsziel-Pufferspeicher. Die Angabe der Befehlslänge einer Verzweigung oder eines Befehls vom Typ ”Ausführen” in einem Verzweigungsvorhersage-Vorabladebefehl ermöglicht es, die genaue Vorhersage von Befehlen veränderlicher Länge zu unterstützen. Durch die Angabe des Typs der Verzweigung oder durch die Angabe des Befehls vom Typ ”Ausführen” als Teil der Verzweigungsvorhersage-Vorabladebefehls besteht die Möglichkeit, als Teil des Vorhersage- und Vorababrufprozesses zusätzliche typspezifische Effizienzgewinne zu realisieren.
  • Die hier verwendete Terminologie dient lediglich dazu, bestimmte Ausführungsformen zu beschreiben und ist nicht als Einschränkung von Ausführungsformen zu verstehen. Die Singular-Formen ”ein”, ”eine” und ”der”, ”die”, ”das” sollen in der hier verwendeten Weise auch die Plural-Formen einschließen, sofern der Kontext nicht eindeutig etwas anderes angibt. Des Weiteren versteht es sich, dass die Begriffe ”aufweist” und/oder ”aufweisend”, wenn sie in dieser Beschreibung verwendet werden, das Vorhandensein von angegebenen Merkmalen, ganzen Zahlen, Schritten, Operationen, Elementen und/oder Komponenten bezeichnen, das Vorhandensein oder das Hinzufügen von einem oder mehreren anderen/weiteren Merkmalen, ganzen Zahlen, Schritten, Operationen, Elementen, Komponenten und/oder Gruppen der Vorgenannten jedoch nicht ausschließen.
  • Die entsprechenden Strukturen, Materialien, Vorgänge und Gleichwertiges von allen Mitteln oder Schritten plus Funktionselementen in den nachstehenden Ansprüchen sollen jedwede Struktur, jedwedes Material oder jedweden Vorgang zur Ausführung der Funktion in Kombination mit anderen beanspruchten Elementen, die im Einzelnen beansprucht werden, beinhalten. Die Beschreibung von Ausführungsformen erfolgte zum Zweck der Veranschaulichung und Erläuterung, erhebt jedoch keinen Anspruch auf Vollständigkeit und ist auch nicht als auf die Ausführungsformen in der offenbarten Form beschränkt zu verstehen. Viele Ab- und Veränderungen sind für den Fachmann erkennbar, ohne vom Umfang der Ausführungsformen abzuweichen. Die Ausführungsformen wurden gewählt und beschrieben, um die Grundgedanken der Erfindung und die praktische Anwendung bestmöglich zu erklären und um anderen Fachleuten das Verständnis der Ausführungsformen mit verschiedenen Änderungen, wie sie für die jeweilige vorgesehene Verwendung geeignet sind, zu ermöglichen.
  • Computerprogrammcode zur Durchführung von Operationen für Aspekte der Ausführungsformen kann in einer beliebigen Kombination aus einer oder mehreren Programmiersprachen einschließlich einer objektorientierten Programmiersprache, wie beispielsweise Java, Smalltalk, C++ oder dergleichen, sowie in herkömmlichen prozeduralen Programmiersprachen wie beispielsweise der Programmiersprache ”C” oder in ähnlichen Programmiersprachen geschrieben sein. Die Ausführung des Programmcodes kann vollständig auf dem Computer des Benutzers, teilweise auf dem Computer des Benutzers, als eigenständiges Software-Paket, teilweise auf dem Computer des Benutzers und teilweise auf einem fernen Computer oder vollständig auf dem fernen Computer oder Server erfolgen. Im letzteren Szenario kann der ferne Computer mit dem Computer des Benutzers über jede beliebige Art eines Netzwerks einschließlich eines lokalen Netzwerks (LAN) oder eines Weitverkehrsnetzes (WAN) verbunden sein oder die Verbindung kann zu einem externen Computer (zum Beispiel über das Internet mittels eines Internet-Dienstanbieters) hergestellt werden.
  • Aspekte von Ausführungsformen wurden vorstehend mit Bezug auf Darstellungen in Ablaufplänen und/oder schematischen Darstellungen von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten gemäß Ausführungsformen beschrieben. Es versteht sich, dass jeder Block der Darstellungen in den Ablaufplänen und/oder der Blockschaubilder sowie Kombinationen aus Blöcken in den Darstellungen der Ablaufpläne und/oder den Blockschaubildern mittels Befehlen eines Computerprogramms realisiert werden können. Diese Befehle eines Computerprogramms können einem Prozessor eines Mehrzweckcomputers, eines Spezialcomputers oder einer anderen programmierbaren Datenverarbeitungsvorrichtung bereitgestellt werden, um eine Maschine zu erzeugen, so dass die Befehle, die über den Prozessor des Computers oder einer anderen programmierbaren Datenverarbeitungsvorrichtung ausgeführt werden, ein Mittel zur Ausführung der Funktionen/Vorgänge erzeugen, die in dem Block oder den Blöcken der Ablaufpläne und/oder der Blockschaubilder angegeben sind.
  • Diese Befehle eines Computerprogramms können auch auf einem von einem Computer lesbaren Datenträger gespeichert werden, der einen Computer, eine andere programmierbare Datenverarbeitungsvorrichtung oder andere Einheiten anweisen kann, auf eine bestimmte Art und Weise zu funktionieren, so dass die auf dem von einem Computer lesbaren Datenträger gespeicherten Befehle einen Herstellungsgegenstand erzeugen, der Befehle enthält, die die Funktion/den Vorgang ausführen, welche beziehungsweise welcher in dem Block oder den Blöcken der Ablaufpläne und/oder der Blockschaubilder angegeben ist.
  • Die Befehle des Computerprogramms können auch auf einen Computer, eine andere programmierbare Datenverarbeitungsvorrichtung oder auf andere Einheiten geladen werden, um die Durchführung einer Reihe von Betriebsschritten auf dem Computer, einer anderen programmierbaren Vorrichtung oder auf anderen Einheiten zu bewirken, um einen von einem Computer ausgeführten Prozess so zu erzeugen, dass die Befehle, die auf dem Computer oder einer anderen programmierbaren Vorrichtung ausgeführt werden, Prozesse zur Ausführung der Funktionen/Vorgänge ermöglichen, die in dem Block oder den Blöcken der Ablaufpläne und/oder der Blockschaubilder angegeben sind.
  • Der Ablaufplan und die Blockschaubilder in den Figuren veranschaulichen die Architektur, die Funktionalität und die Betriebsweise von möglichen Ausführungsarten von Systemen, Verfahren und Computerprogrammprodukten gemäß verschiedenen Ausführungsformen. In dieser Hinsicht kann jeder Block in den Ablaufplänen oder in den Blockschaubildern ein Modul, ein Segment oder einen Teil von Code darstellen, das beziehungsweise der einen oder mehrere ausführbare Befehle zur Durchführung der angegebenen logischen Funktion(en) aufweist. Es sei auch angemerkt, dass die in dem Block angegebenen Funktionen in manchen alternativen Ausführungsarten mitunter in einer anderen als in der in den Figuren angegebenen Reihenfolge auftreten können. In Abhängigkeit von der mit ihnen verbundenen Funktionalität können beispielsweise zwei Blöcke, die als aufeinanderfolgende Blöcke dargestellt sind, tatsächlich weitgehend gleichzeitig ausgeführt werden oder die Blöcke können manchmal in der umgekehrten Reihenfolge ausgeführt werden. Man wird auch feststellen, dass jeder Block der Blockschaubilder und/oder der Darstellung in dem Ablaufplan sowie Kombinationen aus Blöcken in den Blockschaubildern und/oder der Darstellung in dem Ablaufplan von Systemen, die auf Spezial-Hardware beruhen und die angegebenen Funktionen oder Vorgänge durchführen, oder von Kombinationen aus Spezial-Hardware und Computer-Befehlen ausgeführt werden können.

Claims (20)

  1. System zum Vorabladen von Verzweigungsvorhersagen, wobei das System aufweist: einen Befehls-Cache-Speicher; einen Verzweigungsziel-Pufferspeicher; und eine Verarbeitungsschaltung, die mit dem Befehls-Cache-Speicher und dem Verzweigungsziel-Pufferspeicher verbunden ist, wobei die Verarbeitungsschaltung so konfiguriert ist, dass sie ein Verfahren durchführt, das aufweist: Abrufen einer Mehrzahl von Befehlen in einem Befehlsstrom aus dem Befehls-Cache-Speicher; Decodieren eines Verzweigungsvorhersage-Vorabladebefehls in dem Befehlsstrom; Ermitteln einer Adresse eines vorhergesagten Verzweigungsbefehls durch die Verarbeitungsschaltung auf Grundlage des Verzweigungsvorhersage-Vorabladebefehls; Ermitteln einer vorhergesagten Zieladresse des vorhergesagten Verzweigungsbefehls durch die Verarbeitungsschaltung auf Grundlage des Verzweigungsvorhersage-Vorabladebefehls; Erkennen eines Maskenfelds in dem Verzweigungsvorhersage-Vorabladebefehl; Ermitteln einer Verzweigungsbefehl-Länge des vorhergesagten Verzweigungsbefehls durch die Verarbeitungsschaltung auf Grundlage des Maskenfelds; und auf Grundlage des Ausführens des Verzweigungsvorhersage-Vorabladebefehls Vorabladen der Adresse des vorhergesagten Verzweigungsbefehls, der Länge des Verzweigungsbefehls und der vorhergesagten Zieladresse, die zu dem vorhergesagten Verzweigungsbefehl gehört, in den Verzweigungsziel-Pufferspeicher.
  2. System nach Anspruch 1, des Weiteren aufweisend: Ermitteln eines Verzweigungstyps des vorhergesagten Verzweigungsbefehls durch die Verarbeitungsschaltung auf Grundlage des Maskenfelds; und Bereitstellen des Verzweigungstyps des vorhergesagten Verzweigungsbefehls für den Verzweigungsziel-Pufferspeicher.
  3. System nach Anspruch 2, des Weiteren aufweisend: auf Grundlage der Feststellung, dass der Verzweigungstyp des vorhergesagten Verzweigungsbefehls eine Aufrufverzweigung ist, Speichern einer sequenziellen Adresse für eine zukünftige Vorhersage einer Rückkehrverzweigung nach der Vorhersage des vorhergesagten Verzweigungsbefehls aus dem Verzweigungsziel-Pufferspeicher.
  4. System nach Anspruch 3, wobei das Speichern der sequenziellen Adresse in einen Aufruf-Rückkehr-Stapelspeicher erfolgt, und wobei das System des Weiteren aufweist: auf Grundlage der Feststellung, dass der Verzweigungstyp des vorhergesagten Verzweigungsbefehls die Rückkehrverzweigung ist, Abrufen der sequenziellen Adresse nach der Vorhersage als eine Zielvorhersage aus dem Aufruf-Rückkehr-Stapelspeicher und nicht aus einem Zieladresseneintrag in dem Verzweigungsziel-Pufferspeicher.
  5. System nach Anspruch 2, des Weiteren aufweisend: auf Grundlage der Feststellung, dass der Verzweigungstyp des vorhergesagten Verzweigungsbefehls eine Verzweigung ist, die den Adressmodus ändert, Setzen eines Adressierungsmodus, der dem Verzweigungstyp entspricht, nach der Vorhersage der vorhergesagten Zieladresse in dem Verzweigungsziel-Pufferspeicher.
  6. System nach Anspruch 2, des Weiteren aufweisend: auf Grundlage der Feststellung, dass der Verzweigungstyp des vorhergesagten Verzweigungsbefehls ein Befehlstyp ”Ausführen” ist, Behandeln des Befehlstyps ”Ausführen” als einen speziellen Verzweigungstyp in der Verzweigungsvorhersagelogik.
  7. System nach Anspruch 1, des Weiteren aufweisend: Ermitteln der Adresse des vorhergesagten Verzweigungsbefehls als einen Adressen-Offset von dem Verzweigungsvorhersage-Vorabladebefehl; und Ermitteln der vorhergesagten Zieladresse als eines von Folgendem: als ein relativer Offset von dem Verzweigungsvorhersage-Vorabladebefehl oder einer Abweichung von einem Basiswert.
  8. System nach Anspruch 7, wobei die Adresse des vorhergesagten Verzweigungsbefehls eines von Folgendem ist: eine Anfangsadresse oder eine Endadresse des vorhergesagten Verzweigungsbefehls; und Vorabladen der Adresse des vorhergesagten Verzweigungsbefehls in den Verzweigungsziel-Pufferspeicher, und wobei die vorhergesagte Zieladresse, die zu dem vorhergesagten Verzweigungsbefehl gehört, einen Teil der Adresse des vorhergesagten Verzweigungsbefehls und einen Teil der vorhergesagten Zieladresse in dem Verzweigungsziel-Pufferspeicher speichert.
  9. Von einem Computer durchgeführtes Verfahren zum Vorabladen von Verzweigungsvorhersagen, wobei das Verfahren aufweist: Abrufen einer Mehrzahl von Befehlen in einem Befehlsstrom; Decodieren eines Verzweigungsvorhersage-Vorabladebefehls in dem Befehlsstrom; Ermitteln einer Adresse eines vorhergesagten Verzweigungsbefehls durch eine Verarbeitungsschaltung auf Grundlage des Verzweigungsvorhersage-Vorabladebefehls; Ermitteln einer vorhergesagten Zieladresse des vorhergesagten Verzweigungsbefehls durch die Verarbeitungsschaltung auf Grundlage des Verzweigungsvorhersage-Vorabladebefehls; Erkennen eines Maskenfelds in dem Verzweigungsvorhersage-Vorabladebefehl; Ermitteln einer Verzweigungsbefehl-Länge des vorhergesagten Verzweigungsbefehls durch die Verarbeitungsschaltung auf Grundlage des Maskenfelds; und auf Grundlage des Ausführens des Verzweigungsvorhersage-Vorabladebefehls Vorabladen der Adresse des vorhergesagten Verzweigungsbefehls, der Länge des Verzweigungsbefehls und der vorhergesagten Zieladresse, die zu dem vorhergesagten Verzweigungsbefehl gehört, in einen Verzweigungsziel-Pufferspeicher.
  10. Verfahren nach Anspruch 9, des Weiteren aufweisend: Ermitteln eines Verzweigungstyps des vorhergesagten Verzweigungsbefehls durch die Verarbeitungsschaltung auf Grundlage des Maskenfelds; und Bereitstellen des Verzweigungstyps des vorhergesagten Verzweigungsbefehls für den Verzweigungsziel-Pufferspeicher.
  11. Verfahren nach Anspruch 10, des Weiteren aufweisend: auf Grundlage der Feststellung, dass der Verzweigungstyp des vorhergesagten Verzweigungsbefehls eine Aufrufverzweigung ist, Speichern einer sequenziellen Adresse für eine zukünftige Vorhersage einer Rückkehrverzweigung nach der Vorhersage des vorhergesagten Verzweigungsbefehls aus dem Verzweigungsziel-Pufferspeicher.
  12. Verfahren nach Anspruch 11, wobei das Speichern der sequenziellen Adresse in einen Aufruf-Rückkehr-Stapelspeicher erfolgt, und wobei das System des Weiteren aufweist: auf Grundlage der Feststellung, dass der Verzweigungstyp des vorhergesagten Verzweigungsbefehls die Rückkehrverzweigung ist, Abrufen der sequenziellen Adresse nach der Vorhersage als eine Zielvorhersage aus dem Aufruf-Rückkehr-Stapelspeicher anstatt aus einem Zieladresseneintrag in dem Verzweigungsziel-Pufferspeicher.
  13. Verfahren nach Anspruch 10, des Weiteren aufweisend: auf Grundlage der Feststellung, dass der Verzweigungstyp des vorhergesagten Verzweigungsbefehls eine Verzweigung ist, die den Adressmodus ändert, Setzen eines Adressierungsmodus, der dem Verzweigungstyp entspricht, nach der Vorhersage der vorhergesagten Zieladresse in dem Verzweigungsziel-Pufferspeicher.
  14. Verfahren nach Anspruch 10, des Weiteren aufweisend: auf Grundlage der Feststellung, dass der Verzweigungstyp des vorhergesagten Verzweigungsbefehls ein Befehlstyp ”Ausführen” ist, wird der Befehlstyp ”Ausführen” als ein spezieller Verzweigungstyp in der Verzweigungsvorhersagelogik behandelt.
  15. Verfahren nach Anspruch 9, des Weiteren aufweisend: Ermitteln der Adresse des vorhergesagten Verzweigungsbefehls als einen Adressen-Offset von dem Verzweigungsvorhersage-Vorabladebefehl; und Ermitteln der vorhergesagten Zieladresse als eines von Folgendem: ein relativer Offset von dem Verzweigungsvorhersage-Vorabladebefehl oder eine Abweichung von einem Basiswert.
  16. Computerprogrammprodukt zum Vorabladen von Verzweigungsvorhersagen, wobei das Computerprogrammprodukt aufweist: ein physisch greifbares Speichermedium, das von einer Verarbeitungsschaltung lesbar ist und Befehle zur Ausführung durch die Verarbeitungsschaltung speichert, um ein Verfahren durchzuführen, welches aufweist: Abrufen einer Vielzahl von Befehlen in einem Befehlsstrom; Decodieren eines Verzweigungsvorhersage-Vorabladebefehls in dem Befehlsstrom; Ermitteln einer Adresse eines vorhergesagten Verzweigungsbefehls durch die Verarbeitungsschaltung auf Grundlage des Verzweigungsvorhersage-Vorabladebefehls; Ermitteln einer vorhergesagten Zieladresse des vorhergesagten Verzweigungsbefehls durch die Verarbeitungsschaltung auf Grundlage des Verzweigungsvorhersage-Vorabladebefehls; Erkennen eines Maskenfelds in dem Verzweigungsvorhersage-Vorabladebefehl; Ermitteln einer Verzweigungsbefehl-Länge des vorhergesagten Verzweigungsbefehls durch die Verarbeitungsschaltung auf Grundlage des Maskenfelds; und auf Grundlage des Ausführens des Verzweigungsvorhersage-Vorabladebefehls Vorabladen der Adresse des vorhergesagten Verzweigungsbefehls, der Länge des Verzweigungsbefehls und der vorhergesagten Zieladresse, die zu dem vorhergesagten Verzweigungsbefehl gehört, in einen Verzweigungsziel-Pufferspeicher.
  17. Computerprogrammprodukt nach Anspruch 16, das des Weiteren aufweist: Ermitteln eines Verzweigungstyps des vorhergesagten Verzweigungsbefehls durch die Verarbeitungsschaltung auf Grundlage des Maskenfelds; und Bereitstellen des Verzweigungstyps des vorhergesagten Verzweigungsbefehls für den Verzweigungsziel-Pufferspeicher.
  18. Computerprogrammprodukt nach Anspruch 17, das des Weiteren aufweist: auf Grundlage der Feststellung, dass der Verzweigungstyp des vorhergesagten Verzweigungsbefehls eine Aufrufverzweigung ist, Speichern einer sequenziellen Adresse in einem Aufruf-Rückkehr-Stapelspeicher für eine zukünftige Vorhersage einer Rückkehrverzweigung nach der Vorhersage des vorhergesagten Verzweigungsbefehls aus dem Verzweigungsziel-Pufferspeicher; und auf Grundlage der Feststellung, dass der Verzweigungstyp des vorhergesagten Verzweigungsbefehls die Rückkehrverzweigung ist, Abrufen der sequenziellen Adresse nach der Vorhersage als eine Zielvorhersage aus dem Aufruf-Rückkehr-Stapelspeicher und nicht aus einem Zieladresseneintrag in dem Verzweigungsziel-Pufferspeicher.
  19. Computerprogrammprodukt nach Anspruch 17, das des Weiteren aufweist: auf Grundlage der Feststellung, dass der Verzweigungstyp des vorhergesagten Verzweigungsbefehls eine Verzweigung ist, die den Adressmodus ändert, Setzen eines Adressierungsmodus, der dem Verzweigungstyp entspricht, nach der Vorhersage der vorhergesagten Zieladresse in dem Verzweigungsziel-Pufferspeicher; und auf Grundlage der Feststellung, dass der Verzweigungstyp des vorhergesagten Verzweigungsbefehls ein Befehlstyp ”Ausführen” ist, Behandeln des Befehlstyps ”Ausführen” als einen speziellen Verzweigungstyp in der Verzweigungsvorhersagelogik.
  20. Computerprogrammprodukt nach Anspruch 16, das des Weiteren aufweist: Ermitteln der Adresse des vorhergesagten Verzweigungsbefehls als einen Adressen-Offset von dem Verzweigungsvorhersage-Vorabladebefehl; und Ermitteln der vorhergesagten Zieladresse als eines von Folgendem: als ein relativer Offset von dem Verzweigungsvorhersage-Vorabladebefehl oder einer Abweichung von einem Basiswert.
DE112013002956.1T 2012-06-14 2013-05-20 Vorabladen von Verzweigungsvorhersagen Pending DE112013002956T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/517,779 US9146739B2 (en) 2012-06-14 2012-06-14 Branch prediction preloading
US13/517,779 2012-06-14
PCT/EP2013/060328 WO2013186014A1 (en) 2012-06-14 2013-05-20 Branch prediction preloading

Publications (1)

Publication Number Publication Date
DE112013002956T5 true DE112013002956T5 (de) 2015-03-12

Family

ID=48446391

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112013002956.1T Pending DE112013002956T5 (de) 2012-06-14 2013-05-20 Vorabladen von Verzweigungsvorhersagen

Country Status (5)

Country Link
US (2) US9146739B2 (de)
CN (1) CN104335168B (de)
DE (1) DE112013002956T5 (de)
GB (1) GB2517876B (de)
WO (1) WO2013186014A1 (de)

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9921561B2 (en) * 2015-03-17 2018-03-20 Secure Cloud Systems, Inc. Real time control of a remote device
US10664280B2 (en) * 2015-11-09 2020-05-26 MIPS Tech, LLC Fetch ahead branch target buffer
US10423418B2 (en) 2015-11-30 2019-09-24 International Business Machines Corporation Method for maintaining a branch prediction history table
CN105718241B (zh) * 2016-01-18 2018-03-13 北京时代民芯科技有限公司 一种基于sparc v8体系结构的分类式混合分支预测系统
US11709679B2 (en) 2016-03-31 2023-07-25 Qualcomm Incorporated Providing load address predictions using address prediction tables based on load path history in processor-based systems
US10496789B2 (en) * 2016-09-02 2019-12-03 Siemens Healthcare Gmbh Display of preloaded predicted data
US10489296B2 (en) 2016-09-22 2019-11-26 International Business Machines Corporation Quality of cache management in a computer
US10691460B2 (en) 2016-12-13 2020-06-23 International Business Machines Corporation Pointer associated branch line jumps for accelerated line jumps
US10346558B2 (en) 2017-06-22 2019-07-09 International Business Machines Corporation Integrated circuit buffering solutions considering sink delays
US10387162B2 (en) 2017-09-20 2019-08-20 International Business Machines Corporation Effective address table with multiple taken branch handling for out-of-order processors
US11113066B2 (en) 2018-01-09 2021-09-07 International Business Machines Corporation Predicting a branch instruction classified as simple or hard to predict based on a confidence counter in a branch type table
US11579886B2 (en) 2018-01-09 2023-02-14 International Business Machines Corporation System and method for multi-level classification of branches
US11329963B2 (en) 2018-02-22 2022-05-10 Eclypses, Inc. System and method for securely transferring data
US10649782B2 (en) * 2018-03-29 2020-05-12 Arm Limited Apparatus and method for controlling branch prediction
US10761855B2 (en) * 2018-05-02 2020-09-01 Micron Technology, Inc. Securing conditional speculative instruction execution
US11481221B2 (en) * 2018-05-02 2022-10-25 Micron Technology, Inc. Separate branch target buffers for different levels of calls
US10713054B2 (en) * 2018-07-09 2020-07-14 Advanced Micro Devices, Inc. Multiple-table branch target buffer
US11169810B2 (en) * 2018-12-28 2021-11-09 Samsung Electronics Co., Ltd. Micro-operation cache using predictive allocation
US11405203B2 (en) 2020-02-17 2022-08-02 Eclypses, Inc. System and method for securely transferring data using generated encryption keys
US11720693B2 (en) 2021-03-05 2023-08-08 Eclypses, Inc. System and method for securely transferring data
US11522707B2 (en) 2021-03-05 2022-12-06 Eclypses, Inc. System and method for detecting compromised devices

Family Cites Families (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4679141A (en) * 1985-04-29 1987-07-07 International Business Machines Corporation Pageable branch history table
JPS6488844A (en) * 1987-09-30 1989-04-03 Takeshi Sakamura Data processor
US5226126A (en) * 1989-02-24 1993-07-06 Nexgen Microsystems Processor having plurality of functional units for orderly retiring outstanding operations based upon its associated tags
US5287467A (en) * 1991-04-18 1994-02-15 International Business Machines Corporation Pipeline for removing and concurrently executing two or more branch instructions in synchronization with other instructions executing in the execution unit
US5644742A (en) * 1995-02-14 1997-07-01 Hal Computer Systems, Inc. Processor structure and method for a time-out checkpoint
US5742804A (en) * 1996-07-24 1998-04-21 Institute For The Development Of Emerging Architectures, L.L.C. Instruction prefetch mechanism utilizing a branch predict instruction
US6092188A (en) * 1997-12-23 2000-07-18 Intel Corporation Processor and instruction set with predict instructions
US6223280B1 (en) * 1998-07-16 2001-04-24 Advanced Micro Devices, Inc. Method and circuit for preloading prediction circuits in microprocessors
US6073215A (en) * 1998-08-03 2000-06-06 Motorola, Inc. Data processing system having a data prefetch mechanism and method therefor
US6119203A (en) * 1998-08-03 2000-09-12 Motorola, Inc. Mechanism for sharing data cache resources between data prefetch operations and normal load/store operations in a data processing system
US6611910B2 (en) * 1998-10-12 2003-08-26 Idea Corporation Method for processing branch operations
US6446197B1 (en) 1999-10-01 2002-09-03 Hitachi, Ltd. Two modes for executing branch instructions of different lengths and use of branch control instruction and register set loaded with target instructions
US7441110B1 (en) * 1999-12-10 2008-10-21 International Business Machines Corporation Prefetching using future branch path information derived from branch prediction
US6560693B1 (en) * 1999-12-10 2003-05-06 International Business Machines Corporation Branch history guided instruction/data prefetching
US6877089B2 (en) * 2000-12-27 2005-04-05 International Business Machines Corporation Branch prediction apparatus and process for restoring replaced branch history for use in future branch predictions for an executing program
US6886093B2 (en) 2001-05-04 2005-04-26 Ip-First, Llc Speculative hybrid branch direction predictor
US6895498B2 (en) 2001-05-04 2005-05-17 Ip-First, Llc Apparatus and method for target address replacement in speculative branch target address cache
US7493480B2 (en) * 2002-07-18 2009-02-17 International Business Machines Corporation Method and apparatus for prefetching branch history information
CN1270233C (zh) * 2003-12-24 2006-08-16 智慧第一公司 远跳跃及远呼叫指令的退回分支预测机制的处理器及方法
US7676663B2 (en) * 2004-03-09 2010-03-09 International Business Machines Corporation Method, system and program product for pipelined processor having a branch target buffer (BTB) table with a recent entry queue in parallel with the BTB table
US20060179277A1 (en) 2005-02-04 2006-08-10 Flachs Brian K System and method for instruction line buffer holding a branch target buffer
US8490065B2 (en) * 2005-10-13 2013-07-16 International Business Machines Corporation Method and apparatus for software-assisted data cache and prefetch control
US9519480B2 (en) 2008-02-11 2016-12-13 International Business Machines Corporation Branch target preloading using a multiplexer and hash circuit to reduce incorrect branch predictions
US7882338B2 (en) 2008-02-20 2011-02-01 International Business Machines Corporation Method, system and computer program product for an implicit predicted return from a predicted subroutine
US7913068B2 (en) 2008-02-21 2011-03-22 International Business Machines Corporation System and method for providing asynchronous dynamic millicode entry prediction
US8131982B2 (en) * 2008-06-13 2012-03-06 International Business Machines Corporation Branch prediction instructions having mask values involving unloading and loading branch history data
US8131976B2 (en) * 2009-04-13 2012-03-06 International Business Machines Corporation Tracking effective addresses in an out-of-order processor
US10338923B2 (en) * 2009-05-05 2019-07-02 International Business Machines Corporation Branch prediction path wrong guess instruction
US8521999B2 (en) * 2010-03-11 2013-08-27 International Business Machines Corporation Executing touchBHT instruction to pre-fetch information to prediction mechanism for branch with taken history
CN202133998U (zh) * 2011-04-18 2012-02-01 江苏中科芯核电子科技有限公司 一种分支预测装置

Also Published As

Publication number Publication date
WO2013186014A1 (en) 2013-12-19
CN104335168B (zh) 2017-11-21
GB2517876B (en) 2017-03-22
CN104335168A (zh) 2015-02-04
US20130339691A1 (en) 2013-12-19
US9146739B2 (en) 2015-09-29
US20130339697A1 (en) 2013-12-19
GB2517876A (en) 2015-03-04
US9146740B2 (en) 2015-09-29

Similar Documents

Publication Publication Date Title
DE112013002956T5 (de) Vorabladen von Verzweigungsvorhersagen
DE102010051476B4 (de) Addierbefehle, um drei Quelloperanden zu addieren
DE102018006757A1 (de) Festkomma-zu-gleitkomma-umwandlung
DE112017001825T5 (de) Prozessoren, verfahren, systeme und instruktionen zum atomischen speichern von daten, die breiter als eine nativ unterstützte datenbreite sind, in einem speicher
DE102015002582A1 (de) Architekturübergreifendes Kompatibilitätsmodul, um zuzulassen, dass ein Codemodul einer Architektur ein Bibliotheksmodul einer anderen Architektur verwendet
DE102015006863A1 (de) Befehle und Logik zum Unterbrechen und Wiederaufnehmen von Paging in Secure Enclaves
DE112013002155T5 (de) Befehl zur Art des Zugriffs auf den nächsten Befehl
DE112012007119T5 (de) Threadmigration-Unterstützung für Kerne unterschiedlicher Architektur
DE102018005105A1 (de) Befehle für entfernte atomare operationen
DE112013003743T5 (de) Beschleunigte spurübergreifende Vektorreduzierungsbefehle
DE112013001466T5 (de) Vergleichen von Gruppen von Zeichendaten, die Abschlusszeichen aufweisen
DE112013003731T5 (de) Neue befehls- und hocheffiziente Mikroarchitektur zum ermöglichen einer sofortigen Kontextumschaltung für Benutzerebenen-Threading
DE102014003563A1 (de) Fusionierbare befehle und logik zum versehen mit or-test- und and-test-funktionalität unter benutzen von mehrfachtestquellen
DE112014000252T5 (de) Anweisung "Vector floating point test data class immediate"
DE112013001442T5 (de) Kopieren von Zeichendaten, die ein Abschlusszeichen aufweisen, von einer Speicherposition zu einer anderen
DE102014108753A1 (de) Vorhersageeinheiten-Datenstruktur zur Verwendung bei der Verarbeitung im Pipelinesystem
DE102014108785A1 (de) Vorausschauendes abrufen und decodieren bei ausgewählten anweisungen
DE112016004960T5 (de) Befehl und logik, um informationen im voraus aus einem beständigen speicher zu holen
DE112017004911T5 (de) Anweisung und Logik für die Erkennung eines numerischen Ansammlungsfehlers
DE112013005466T5 (de) Anweisung "Vector generate mask"
DE112013003741T5 (de) Systeme, Vorrichtungen und Verfahren zum Durchführen einer Konfliktdetektion unf einer Übertragung von Inhalten eines Registers an Datenelementpositionen eines anderen Registers
DE112013005500T5 (de) Anweisung zum Drehen und Einfügen eines Vektorelements unter einer Maske
DE102014109083A1 (de) Bilden von Anweisungsgruppen basierend auf der Optimierung von Anweisungen bei der Dekodierung
DE102018132521A1 (de) Vorrichtung und verfahren zur verflachung und reduktion von schleifen in einer single instruction, multiple data- (simd-) pipeline
DE112017001716T5 (de) Speicherkopierbefehle, prozessoren, verfahren und systeme

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R083 Amendment of/additions to inventor(s)
R082 Change of representative

Representative=s name: SPIES & BEHRNDT PATENTANWAELTE PARTG MBB, DE

Representative=s name: LIFETECH IP SPIES & BEHRNDT PATENTANWAELTE PAR, DE

R082 Change of representative

Representative=s name: SPIES & BEHRNDT PATENTANWAELTE PARTG MBB, DE

R016 Response to examination communication
R084 Declaration of willingness to licence