DE102014108753A1 - Vorhersageeinheiten-Datenstruktur zur Verwendung bei der Verarbeitung im Pipelinesystem - Google Patents

Vorhersageeinheiten-Datenstruktur zur Verwendung bei der Verarbeitung im Pipelinesystem Download PDF

Info

Publication number
DE102014108753A1
DE102014108753A1 DE102014108753.4A DE102014108753A DE102014108753A1 DE 102014108753 A1 DE102014108753 A1 DE 102014108753A1 DE 102014108753 A DE102014108753 A DE 102014108753A DE 102014108753 A1 DE102014108753 A1 DE 102014108753A1
Authority
DE
Germany
Prior art keywords
instruction
predicted
address
execution
return
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.)
Withdrawn
Application number
DE102014108753.4A
Other languages
English (en)
Inventor
Michael K. Gschwind
Valentina Salapura
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.)
GlobalFoundries Inc
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 DE102014108753A1 publication Critical patent/DE102014108753A1/de
Withdrawn 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/3861Recovery, e.g. branch miss-prediction, exception handling
    • 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/30054Unconditional 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/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • 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/30181Instruction operation extension or modification
    • G06F9/30189Instruction operation extension or modification according to execution mode, e.g. mode flag
    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3818Decoding for concurrent execution
    • G06F9/382Pipelined decoding, e.g. using predecoding
    • 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/3838Dependency mechanisms, e.g. register scoreboarding
    • G06F9/384Register renaming

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

Eine Vorhersageeinheiten-Datenstruktur wird durch einen in einem Pipeline System arbeitenden Prozessor zur Verarbeitung in einem Pipelinesystem verwendet. Die Vorhersageeinheiten-Datenstruktur weist eine vorhergesagte Adresse auf, die bei der Rückkehr von der Ausführung einer ausgewählten Anweisung zu verwenden ist, und einen zu der vorhergesagten Adresse gehörenden vorhergesagten Betriebszustand. Auf der Grundlage des Feststellens, dass eine ausgewählte Rückkehranweisung auszuführen ist, wird die vorhergesagte Adresse, zu der die Verarbeitung zurückkehren soll, von der Vorhersageeinheiten-Datenstruktur empfangen. Ferner wird auf der Grundlage des Feststellens, dass die ausgewählte Rückkehranweisung auszuführen ist, ein Übergangs-Betriebszustand vorhergesagt, der auf dem vorhergesagten Betriebszustand beruht, der in der Vorhersageeinheiten-Datenstruktur gespeichert ist, wobei mindestens eines aus der vorhergesagten Adresse und dem vorhergesagten Übergangs-Betriebszustand zu verwenden ist, um die Ausführung der ausgewählten Rückkehranweisung zu validieren.

Description

  • HINTERGRUND
  • Ein oder mehrere Aspekte betreffen allgemein die Verarbeitung in einer Verarbeitungsumgebung und insbesondere die Ausführung von Anweisungen, die eine Berechtigungsstufe oder einen anderen Betriebszustand der Verarbeitungsumgebung ändern.
  • Prozessoren führen Anweisungen aus, die die Prozessoren anweisen, bestimmte Operationen durchzuführen. Die Anweisungen können zum Beispiel Teil von Benutzeranwendungen sein, die benutzerdefinierte Aufgaben durchführen, oder Teil von Betriebssystemanwendungen, die Dienste auf der Systemebene durchführen. Die in Benutzeranwendungen vorhandenen Anweisungen weisen eine bestimmte Berechtigungsstufe auf, während Anweisungen von Betriebssystemanwendungen eine andere Berechtigungsstufe aufweisen. Die Berechtigungsstufe der Betriebssystemanweisungen ist normalerweise höher als die Berechtigungsstufe der Benutzeranwendungen. Diese höhere Berechtigung soll Sicherheit in dem Prozessor schaffen, indem Benutzeranwendungen daran gehindert werden, Schäden in den Prozessoren zu verursachen.
  • Anweisungen werden durch die Prozessoren unabhängig von der Art oder Berechtigungsstufe ausgeführt. Die Prozessoren können unterschiedliche Arten von Verarbeitungstechniken verwenden, um die Anweisungen zu verarbeiten. Eine Verarbeitungstechnik wird als „Pipeline-Verarbeitung” bezeichnet, bei der die Verarbeitung phasenweise durchgeführt wird. Zu beispielhaften Phasen gehören eine Abrufphase, in der der Prozessor eine Anweisung aus einem Speicher abruft; eine Decodierphase, in der die abgerufene Anweisung decodiert wird; eine Ausführungsphase, in der die decodierte Anweisung ausgeführt wird; und eine Abschlussphase, in der die Ausführung der Anweisung abgeschlossen wird, einschließlich des Aktualisierens des architektonischen Zustands in Bezug auf die Verarbeitung. Weitere und/oder andere Phasen sind ebenfalls möglich.
  • Die Verwendung der Pipeline-Verarbeitung bei bestimmten Anweisungen kann zu einer Latenz führen, die sich auf die Leistungsfähigkeit auswirkt. Dies gilt insbesondere in den Situationen, in denen die Ausführung der Anweisung erfordert, dass alle nach der Anweisung abgerufenen Anweisungen aus der Pipeline entfernt werden und die Anweisung bewirkt, dass eine oder mehrere Anweisungen ab dem Beginn der Pipeline abgerufen werden.
  • KURZDARSTELLUNG
  • Durch die Bereitstellung eines Computerprogrammprodukts zum Erleichtern der Verarbeitung in einer Verarbeitungsumgebung werden Mängel des Stands der Technik überwunden und zusätzliche Vorteile bereitgestellt. Das Computerprogrammprodukt weist ein computerlesbares Speichermedium auf, das durch eine Verarbeitungsschaltung gelesen werden kann, sowie Speicherungsanweisungen zur Ausführung durch die Verarbeitungsschaltung, um ein Verfahren durchzuführen. Das Verfahren weist zum Beispiel das Verwenden einer Vorhersageeinheiten-Datenstruktur zur Verarbeitung im Pipelinesystem durch einen im Pipelinesystem arbeitenden Prozessor auf, wobei die Vorhersageeinheiten-Datenstruktur eine vorhergesagte Adresse aufweist, die bei der Rückkehr von der Ausführung einer ausgewählten Anweisung zu verwenden ist, und einen zu der vorhergesagten Adresse gehörenden vorhergesagten Betriebszustand; auf der Grundlage des Feststellens, dass eine ausgewählte Rückkehranweisung auszuführen ist, von der Vorhersageeinheiten-Datenstruktur das Empfangen der vorhergesagten Adresse, zu der die Verarbeitung zurückkehren soll; und auf der Grundlage des Feststellens, dass die ausgewählte Rückkehranweisung auszuführen ist, das Vorhersagen eines Übergangs-Betriebszustands, der auf dem vorhergesagten Betriebszustand beruht, der in der Vorhersageeinheiten-Datenstruktur gespeichert ist, wobei mindestens eines aus der vorhergesagten Adresse und dem vorhergesagten Übergangs-Betriebszustand zu verwenden ist, um die Ausführung der ausgewählten Rückkehranweisung zu validieren.
  • Außerdem werden hierin Verfahren und Systeme beschrieben und beansprucht, die einen oder mehrere Aspekte betreffen. Ferner werden hierin Dienste beschrieben und unter Umständen beansprucht, die einen oder mehrere Aspekte betreffen.
  • Weitere Merkmale und Vorteile werden durch die hierin beschriebenen Techniken realisiert. Andere Ausführungsformen und Aspekte werden hierin eingehend beschrieben und als Teil der beanspruchten Aspekte betrachtet.
  • KURZBESCHREIBUNG DER VERSCHIEDENEN ANSICHTEN IN DEN ZEICHNUNGEN
  • Ein oder mehrere Aspekte werden in den Ansprüchen, die im Anschluss an die Beschreibung folgen, besonders hervorgehoben und ausdrücklich beansprucht. Das Vorstehende und Aufgaben, Merkmale und Vorteile eines oder mehrerer Aspekte werden anhand der folgenden eingehenden Beschreibung deutlich, die in Verbindung mit den beigefügten Zeichnungen zu lesen ist, wobei:
  • 1 eine Ausführungsform einer Datenverarbeitungsumgebung darstellt, in der ein oder mehrere Aspekte der vorausschauenden Abruf- und Decodierfähigkeit enthalten sind und verwendet werden;
  • 2 weitere Einzelheiten eines Prozessors der Datenverarbeitungsumgebung aus 1 darstellt;
  • 3 eine Ausführungsform einer Anweisungspipeline eines Prozessors einer Datenverarbeitungsumgebung darstellt;
  • 4 weitere Einzelheiten einer Anweisungspipelineverarbeitung gemäß einem Aspekt darstellt;
  • 5 ein weiteres Beispiel der Anweisungspipelineverarbeitung gemäß einem Aspekt darstellt;
  • 6 eine Ausführungsform der Front-End-Ausführung einer Systemaufrufanweisung darstellt;
  • 7 eine Ausführungsform der Logik zur Ausführung der Systemaufrufanweisung darstellt;
  • 8 eine Ausführungsform eines Vorhersageeinheiten-Stacks darstellt, der bei der Front-End-Ausführung der Systemaufrufanweisung verwendet wird;
  • 9 eine Ausführungsform der Front-End-Ausführung einer asynchronen Ausnahmebedingung darstellt;
  • 10A eine Ausführungsform der Front-End-Ausführung einer Rückkehr von einem Systemaufruf oder einer Rückkehr von einer Interruptanweisung darstellt;
  • 10B eine Ausführungsform der Logik zur Ausführung der Rückkehr von dem Systemaufruf oder der Rückkehr von der Interruptanweisung darstellt;
  • 11 eine Ausführungsform der Logik zur Leerung eines in einem Pipelinesystem arbeitenden Prozessors darstellt;
  • 12 eine Ausführungsform eines Computerprogrammprodukts darstellt, das einen oder mehrere Aspekte der vorliegenden Erfindung aufweist;
  • 13 eine Ausführungsform eines Host-Computersystems darstellt, in dem ein oder mehrere Aspekte enthalten sind und verwendet werden;
  • 14 ein weiteres Beispiel eines Host-Computersystems darstellt, in dem ein oder mehrere Aspekte enthalten sind und verwendet werden;
  • 15 ein weiteres Beispiel eines Host-Computersystems darstellt, das ein Computernetzwerk aufweist, in dem ein oder mehrere Aspekte enthalten sind und verwendet werden;
  • 16 eine Ausführungsform verschiedener Elemente eines Computersystems darstellt, in dem ein oder mehrere Aspekte enthalten sind und verwendet werden;
  • 17A eine Ausführungsform der Ausführungseinheit des Computersystems aus 16 darstellt;
  • 17B eine Ausführungsform der Verzweigungseinheit des Computersystems aus 16 darstellt;
  • 17C eine Ausführungsform der Speicherungs-/Ladeeinheit des Computersystems aus 16 darstellt; und
  • 18 eine Ausführungsform eines emulierten Host-Computersystems darstellt, in dem ein oder mehrere Aspekte enthalten sind und verwendet werden.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Gemäß einem Aspekt wird eine Fähigkeit zum vorausschauenden Abrufen und Decodieren bei ausgewählten Anweisungen wie zum Beispiel Anweisungen bereitgestellt, die die Berechtigungsstufe und/oder den Betriebszustand im Prozessor ändern (z. B. Betriebssystemanweisungen, Hypervisor-Anweisungen und andere derartige Anweisungen), und/oder andere ausgewählte Anweisungen. Die Fähigkeit weist zum Beispiel das Feststellen auf, dass eine ausgewählte Anweisung wie zum Beispiel eine Systemaufrufanweisung, ein asynchroner Interrupt, eine Rückkehr von einer Systemaufrufanweisung oder eine Rückkehr von einem asynchronen Interrupt auszuführen ist; das Ermitteln einer vorhergesagten Adresse für die ausgewählte Anweisung, bei der es sich um die Adresse handelt, zu der die Verarbeitung übergeht, um die angeforderten Dienste bereitzustellen; und das Beginnen des Abrufens von Anweisungen, beginnend an der vorhergesagten Adresse, vor der Ausführung der ausgewählten Anweisung. Die Fähigkeit weist ferner bei einer Ausführungsform das Vorhersagen und/oder Aufrechterhalten eines spekulativen Zustands in Bezug auf eine ausgewählte Anweisung auf, einschließlich zum Beispiel einer Anzeige der Berechtigungsstufe der ausgewählten Anweisung oder Anweisungen, die im Auftrag der ausgewählten Anweisung ausgeführt wird bzw. werden.
  • Diese Vorhersagefähigkeit kann bei vielen unterschiedlichen Verarbeitungsumgebungen verwendet werden, in denen unterschiedliche Prozessoren ausgeführt werden. Sie kann zum Beispiel in Verbindung mit Prozessoren verwendet werden, die auf der z/Architecture beruhen, die von International Business Machines Corporation angeboten wird. Ein oder mehrere Prozessoren können Teil eines Servers wie zum Beispiel eines Servers vom Typ „System z” sein, in dem die z/Architecture umgesetzt ist und der von International Business Machines Corporation angeboten wird. Eine Ausführungsform der z/Architecture ist in einer IBM-Veröffentlichung mit dem Titel „z/Architecture Principles of Operation", IBM-Veröffentlichungsnr. SA22-7832-09, zehnte Ausgabe, September 2012, beschrieben, die durch Bezugnahme in ihrer Gesamtheit einen Bestandteil des vorliegenden Dokuments bildet. Bei einem Beispiel führen ein oder mehrere Prozessoren ein Betriebssystem wie zum Beispiel zJOS aus, das ebenfalls von International Business Machines Corporation angeboten wird. IBM, Z/ARCHITECTURE und Z/OS sind eingetragene Marken von International Business Machines Corporation, Armonk, New York, USA. Andere hierin verwendete Namen können eingetragene Marken oder Produktnamen von International Business Machines Corporation oder anderen Unternehmen sein.
  • Bei einer weiteren Ausführungsform beruhen die Prozessoren auf der von International Business Machines Corporation angebotenen Power Architecture und können zum Beispiel Prozessoren der Baureihe Power 700 sein. Eine Ausführungsform der Power Architecture ist in „Power ISA Version 2.07", International Business Machines Corporation, 3. Mai 2013, beschrieben, wobei diese Veröffentlichung durch Bezugnahme in ihrer Gesamtheit einen Bestandteil des vorliegenden Dokuments bildet. POWER ARCHITECTURE ist eine eingetragene Marke von International Business Machines Corporation.
  • Ein bestimmtes Beispiel einer Datenverarbeitungsumgebung, in der ein oder mehrere Aspekte der Vorhersagefähigkeit enthalten sind und verwendet werden, wird unter Bezugnahme auf 1 beschrieben. Bei diesem bestimmten Beispiel beruht die Datenverarbeitungsumgebung auf der von International Business Machines Corporation angebotenen Power Architecture, aber dies ist lediglich ein Beispiel. Ein oder mehrere Aspekte sind auf andere Architekturen anwendbar, die von International Business Machines Corporation oder anderen Unternehmen angeboten werden.
  • Unter Bezugnahme auf 1 weist eine Datenverarbeitungsumgebung 100 zum Beispiel eine zentrale Verarbeitungseinheit (Central Processing Unit, CPU) 110 auf, die mit verschiedenen anderen Komponenten durch eine Verbindung 112 verbunden ist, unter anderem zum Beispiel mit einem Nur-Lese-Speicher (Read-Only Memory, ROM) 116, der ein BIOS-System (BIOS = Basic Input/Output System) aufweist, das bestimmte Grundfunktionen der Verarbeitungsumgebung steuert, mit einem Direktzugriffsspeicher (Random Access Memory, RAM) 114, mit einem E/A-Adapter 118 und einem Datenaustauschadapter 120. Der E/A-Adapter 118 kann ein SCSI-Adapter (SCSI = Small Computer System Interface) sein, der Daten mit einer Speichereinheit 121 austauscht. Der Datenübertragungsadapter verbindet die Verbindung 112 mit einem Netzwerk 122, das es der Verarbeitungsumgebung 100 ermöglicht, Daten mit anderen Systemen wie zum Beispiel mit einem entfernt angeordneten Computer 124 auszutauschen.
  • Die Verbindung 112 weist außerdem Eingabe-/Ausgabeeinheiten auf, die mit dieser über einen Benutzerschnittstellenadapter 126 und einen Anzeigeadapter 136 verbunden sind. Eine Tastatur 128, ein Trackball 130, eine Maus 132 und ein Lautsprecher 134 sind jeweils über den Benutzerschnittstellenadapter 126 mit dem Bus 112 verbunden. Eine Anzeige 138 ist über den Anzeigeadapter 136 mit dem Systembus 112 verbunden. Auf diese Weise empfängt die Verarbeitungsumgebung 100 Eingaben zum Beispiel über die Tastatur 128, den Trackball 130 und/oder die Maus 132 und stellt zum Beispiel über das Netzwerk 122 Ausgänge beispielsweise für die Speichereinheit 121, den Lautsprecher 134 und oder die Anzeige 138 bereit. Die in der Verarbeitungsumgebung dargestellten Hardwareelemente sind nicht als erschöpfend gedacht, sondern stehen vielmehr für beispielhafte Komponenten einer Verarbeitungsumgebung bei einer Ausführungsform.
  • Der Betrieb der Verarbeitungsumgebung 100 kann durch Programmcode wie zum Beispiel Firmware und/oder Software gesteuert werden, die normalerweise ein Betriebssystem wie zum Beispiel AIX® (AIX ist eine Marke von International Business Machines Corporation) und ein oder mehrere Anwendungs- oder Middleware-Programme aufweist. Im hierin verwendeten Sinne gehören zur Firmware z. B. der Mikrocode, Millicode und/oder Makrocode des Prozessors. Er weist zum Beispiel die Anweisungen auf Hardwareebene und/oder Datenstrukturen auf, die zur Realisierung eines höheren Maschinencodes verwendet werden. Bei einer Ausführungsform weist er zum Beispiel einen proprietären Code auf, der normalerweise als Mikrocode bereitgestellt wird und vertrauenswürdige Software oder vertrauenswürdigen Mikrocode aufweist, der für die unterlagerte Hardware spezifisch ist und den Zugriff des Betriebssystems auf die Systemhardware steuert. Derartiger Programmcode weist Anweisungen auf, die nachfolgend unter Bezugnahme auf 2 erörtert werden.
  • Unter Bezugnahme auf 2 werden weitere Einzelheiten eines Prozessors 200 (z. B. der zentralen Verarbeitungseinheit 110) der Verarbeitungsumgebung erörtert. Bei einem Beispiel ist der Prozessor ein superskalarer Prozessor, der Anweisungen aus dem Speicher (z. B. dem RAM 114 aus 1) empfängt und sie in eine Anweisungs-Einreihungslogik (ISL-Logik) (ISL = instruction sequencing logic) 204 des Prozessors lädt. Die Anweisungs-Einreihungslogik weist zum Beispiel einen Anweisungs-Cache-Zwischenspeicher der Ebene 1 (Level 1 Instruction cache (L1-I-Cache)) 206, eine Abruf- und Decodiereinheit 208, eine Anweisungswarteschlange 210 und eine Zuleitungseinheit 212 auf. Bei einem Beispiel werden die Anweisungen in den L1-I-Cache 206 der ISL 204 geladen, und sie werden im L1-I-Cache 206 gehalten, bis sie benötigt werden, oder sie werden gelöscht, wenn sie nicht benötigt werden. Die Anweisungen werden durch die Abruf- und Decodiereinheit 208 aus dem L1-I-Cache 206 abgerufen und decodiert. Nach dem Decodieren einer aktuellen Anweisung wird die aktuelle Anweisung in die Anweisungswarteschlange 210 geladen. Die Zuleitungseinheit 212 leitet die Anweisungen aus der Anweisungswarteschlange 210 in eine Registerverwaltungseinheit 214 sowie in eine Abschlusseinheit 221. Die Abschlusseinheit 221 ist mit einer allgemeinen Ausführungseinheit 224 und der Registerverwaltungseinheit 214 verbunden und überwacht, wann eine ausgegebene Anweisung abgeschlossen ist.
  • Wenn die Zuleitungseinheit 212 eine aktuelle Anweisung zuleitet, reserviert eine vereinheitlichte Haupt-Zuordnungseinheit (Main Mapper) 218 der Registerverwaltungseinheit 214 eine Nummer eines logischen Zielregisters und ordnet diese einem physischen Register innerhalb von Dateien 232a bis 232n mit physischen Registern zu, das gegenwärtig keinem logischen Register zugewiesen ist. Das Ziel wird in das bezeichnete physische Register in den Dateien 232a bis 232n mit physischen Registern umbenannt. Die vereinheitlichte Haupt-Zuordnungseinheit 218 entfernt das zugewiesene physische Register aus einer Liste 219 freier physischer Register, die in der vereinheitlichten Haupt-Zuordnungseinheit 218 gespeichert ist. Nachfolgende Verweise auf dieses logische Zielregister zeigen auf dasselbe physische Register, bis die Abruf- und Decodiereinheit 208 eine andere Anweisung decodiert, die auf dasselbe logische Register schreibt. Anschließend benennt die vereinheitlichte Haupt-Zuordnungseinheit 218 das logische Register in eine andere physische Position um, die aus der Liste 219 freier Register ausgewählt wurde, und die Zuordnungseinheit wird aktualisiert, um die neuen Daten der Zuordnungseinheit über die Zuordnung zwischen logischen und physischen Registern einzutragen. Wenn die Daten der Zuordnungseinheit über die Zuordnung zwischen logischen und physischen Registern nicht mehr benötigt werden, werden die physischen Register alter Zuordnungen an die Liste 219 freier Register zurückgegeben. Wenn die Liste 219 freier physischer Register nicht genügend physische Register aufweist, setzt die Zuleitungseinheit 212 die Zuleitung von Anweisungen aus, bis die benötigten physischen Register verfügbar werden.
  • Nachdem die Registerverwaltungseinheit 214 die aktuelle Anweisung zugeordnet hat, gibt eine Ausgabewarteschlange 222 die gegenwärtige Anweisung an das allgemeine Ausführungsmodul 224 aus, das die Ausführungseinheiten (EUs) (EU = Execution Unit) 230a bis 230n aufweist. Die Ausführungseinheiten 230a bis 230n gehören zu verschiedenen Typen, zum Beispiel zum Typ „Gleitkomma” (FP) (FP = Floating Point), „Festkomma” (FX) (FX = Fixed Point) und „Laden/Speichern” (LS). Das allgemeine Ausführungsmodul 224 tauscht über einen Daten-Cache-Zwischenspeicher 234 Daten mit dem Datenspeicher (z. B. mit dem RAM 114, dem ROM 116 aus 1) aus. Darüber hinaus enthält die Ausgabewarteschlange 222 unter Umständen Anweisungen des Typs „Gleitkomma” oder „Festkomma” und/oder Lade-/Speicherungsanweisungen. Es sollte jedoch klar sein, dass beliebige Anzahlen und Typen von Anweisungen verwendet werden können. Während der Ausführung empfangen die EUs 230a bis 230n die Quelloperandenwerte von physischen Positionen in den Registerdateien 232a bis 232n und speichern Ergebnisdaten, sofern vorliegend, in den Registerdateien 232a bis 232n und/oder im Daten-Cache-Zwischenspeicher 234.
  • Die Registerverwaltungseinheit 214 weist zum Beispiel auf: (i) eine Zuordnungseinheitengruppe 215, die eine Zuordnungseinheit 216 für angelegte Register, die vereinheitlichte Haupt-Zuordnungseinheit 218 und eine Zuordnungseinheit 220 für temporäre Register aufweist; und (ii) die Ausgabewarteschlange 222. Die Zuordnungseinheitengruppe 215 überwacht die physischen Register, die den logischen Registern verschiedener Anweisungen zugewiesen sind. Bei einer Ausführungsform weist die Zuordnungseinheit 216 für angelegte Register 16 logische (d. h. nicht physisch zugeordnete) Register jedes Typs auf, in denen der letzte gültige (d. h. mit einem Prüfpunkt versehene) Zustand von Daten der Zuordnungseinheit über die Zuordnung zwischen logischen und physischen Registern gespeichert wird. Es sollte jedoch klar sein, dass andere Prozessorarchitekturen mehr oder weniger logische Register aufweisen können, als bei dieser Ausführungsform beschrieben sind. Ferner weist die Zuordnungseinheit 216 für angelegte Register eine Zeigerliste auf, die ein physisches Register kennzeichnet, das den mit einem Prüfpunkt versehenen Zustand beschreibt. Die Dateien 232a bis 232n mit physischen Registern enthalten normalerweise mehr Register als die Anzahl von Einträgen in der Zuordnungseinheit 216 für angelegte Register. Es sollte beachtet wird, dass die jeweilige Anzahl physischer und logischer Register variieren kann, die bei einem Schema zum Umbenennen von Zuordnungen verwendet wird.
  • Im Gegensatz hierzu ist die vereinheitlichte Haupt-Zuordnungseinheit 218 normalerweise größer (sie enthält normalerweise bis zu 20 Einträge) als die Zuordnungseinheit 216 für angelegte Register. Die vereinheitlichte Haupt-Zuordnungseinheit 218 erleichtert das Überwachen des Übergangszustands der Zuordnungen zwischen logischen und physischen Registern. Der Begriff „Übergangs...” bezeichnet die Tatsache, dass die vereinheitlichte Haupt-Zuordnungseinheit 218 provisorische Daten der Zuordnung zwischen logischen und physischen Registern überwacht, während die Anweisungen außerhalb der Reihenfolge (OoO) (OoO = Out of Order) ausgeführt werden. Die Ausführung außerhalb der Reihenfolge tritt normalerweise auf, wenn ältere Anweisungen vorliegen, die eine längere Zeit (d. h. heißt mehr Taktzyklen) benötigen würden als neuere Anweisungen in der Pipeline. Wenn jedoch das Ergebnis einer außerhalb der Reihenfolge ausgeführten Anweisung erfordern würde, sie aus einem bestimmten Grund (z. B. eine falsche Verzweigungsvorhersage) zu löschen, kann der Prozessor zu dem mit einem Prüfpunkt versehenen Zustand zurückkehren, der durch die Zuordnungseinheit 216 für angelegte Register aufbewahrt wird, und die Ausführung ab dem letzten gültigen Zustand wiederaufnehmen.
  • Die vereinheitlichte Haupt-Zuordnungseinheit 218 stellt den Zusammenhang zwischen physischen Registern in den Dateien 232a bis 232n mit physischen Registern und der Zuordnungseinheit 216 für angelegte Register her. Der erläuternde Begriff „vereinheitlicht” bezeichnet die Tatsache, dass durch die vereinheitlichte Haupt-Zuordnungseinheit 218 die komplizierte Entwicklung einer speziell angepassten Zuordnungseinheit für jede der Registerdateien 232 (z. B. Mehrzweckregister (General-Purpose Registers, GPRs), Gleitkommaregister (Floating-Point Registers. FPRs), Festkommaregister (Fixed-Point Registers, FXPs), Ausnahmebedingungsregister (Exception Registers, XERs), Bedingungsregister (Exception Registers, CRs) usw.) vermieden wird.
  • Außer dem Erzeugen eines Eintrags einer außerhalb der Reihenfolge ausgeführten Anweisung in der Zuordnungseinheit mit der Zuordnung zwischen logischen und physischen Registern überwacht die vereinheitlichte Haupt-Zuordnungseinheit 218 auch Abhängigkeitsdaten (d. h. Anweisungen, die von der Beendigung einer älteren Anweisung in der Pipeline abhängen), die zum Sortieren von Anweisungen verwendet werden. Bei einem herkömmlichen Ablauf gelangt die Anweisung zur Ausgabewarteschlange 222, sobald die vereinheitlichte Haupt-Zuordnungseinheit 218 die Umsetzung vom logischen in ein physisches Register einer Anweisung eingetragen hat. Die Ausgabewarteschlange 222 dient als Kontrolleur, bevor die Anweisung zwecks Ausführung an die Ausführungseinheit 230 ausgegeben wird. Als allgemeine Regel gilt, dass eine Anweisung die Ausgabewarteschlange 222 nicht verlassen kann, wenn sie davon abhängt, ob eine ältere Anweisungen abgeschlossen ist. Aus diesem Grund überwacht die vereinheitlichte Haupt-Zuordnungseinheit 218 Abhängigkeitsdaten, indem bei jeder Anweisung, die zugeordnet wird, die Daten der Position in der Ausgabewarteschlange gespeichert werden. Sobald die Anweisung durch das allgemeine Ausführungsmodul 224 ausgeführt wurde, gilt die Anweisung als „beendet” und wird aus der Ausgabewarteschlange 222 entfernt.
  • Die Registerverwaltungseinheit 214 kann in einem einzigen Zyklus mehrere Anweisungen von der Zuleitungseinheit 212 empfangen, um eine gefüllte Pipeline mit Einzelausgabe aufrechtzuerhalten. Das Zuleiten von Anweisungen wird durch die Anzahl verfügbarer Einträge in der vereinheitlichten Haupt-Zuordnungseinheit 218 begrenzt. Bei einigen Zuordnungseinheitensystemen, die keine Zuordnungseinheit 220 für temporäre Register aufweisen, können maximal 20 Anweisungen gleichzeitig zugeleitet werden (d. h. ohne Prüfpunkt). Daher ist vorstellbar, dass die Zuleitungseinheit 212 mehr Anweisungen zuleiten kann als die Anzahl, die tatsächlich aus der vereinheitlichten Haupt-Zuordnungseinheit 218 entfernt werden kann. Der Grund für diesen Engpass bei der vereinheitlichten Haupt-Zuordnungseinheit 218 ist die Tatsache, dass ein Zuordnungseinheiteneintrag einer Anweisung bei einem herkömmlichen Ablauf nicht aus der vereinheitlichten Haupt-Zuordnungseinheit 218 entfernt werden konnte, bis die Anweisung „abgeschlossen” ist (d. h., die Ausführung aller älteren Anweisungen ist „beendet”).
  • Bei einer Ausführungsform dient die Zuordnungseinheit 220 für temporäre Register als hinsichtlich des zeitlichen Ablaufs unkritisches Register, bei dem eine „beendete”, aber „unvollständige” Anweisung vor dem endgültigen Abschluss der Anweisung aus der vereinheitlichten Haupt-Zuordnungseinheit 218 zurückgezogen (d. h. aus der vereinheitlichten Haupt-Zuordnungseinheit 218 entfernt) werden könnte. Sobald die Anweisung „abgeschlossen” ist, benachrichtigt die Abschlusseinheit 221 die Zuordnungseinheit 220 für temporäre Register über den Abschluss. Der Zuordnungseinheiteneintrag in der Zuordnungseinheit 220 für temporäre Register kann dann den angelegten übereinstimmenden Zustand der Zuordnungseinheit 216 für angelegte Register aktualisieren, indem der entsprechende Eintrag ersetzt wird, der derzeit in der Zuordnungseinheit 216 für angelegte Register gespeichert war.
  • Weitere Einzelheiten über eine Ausführungsform der Zuordnungseinheiten und der damit zusammenhängenden Verarbeitung sind in der US-Publikation mit der Nummer 2013/0086361 unter dem Titel „Scalable Decode-Time Instruction Sequence Optimization of Dependent Instructions”, Gschwind et al., veröffentlicht am 4. April 2013, beschrieben, die durch Bezugnahme in ihrer Gesamtheit einen Bestandteil des vorliegenden Dokuments bildet.
  • Wie oben erwähnt nutzt der Prozessor 200 die Pipeline-Verarbeitung, um die aus dem Speicher abgerufenen Anweisungen zu verarbeiten. Weitere Einzelheiten zu einer Ausführungsform dieser Verarbeitung sind unter Bezugnahme auf 3 beschrieben, in der ein Beispiel einer Prozessorpipeline dargestellt ist. Bei einem Beispiel werden Anweisungen in eine Anweisungsabrufeinheit 300 abgerufen, die zum Beispiel eine Anweisungsabrufeinheit (Instruction Fetch, IF) 302, einen Anweisungs-Cache-Zwischenspeicher (Instruction Cache, IC) 304 und eine Verzweigungsvorhersageeinheit (Branch Predictor, BP) 306 aufweist. Die Anweisungsabrufeinheit 300 ist mit einer Gruppenbildungs- und Decodiereinheit 310 verbunden, die eine oder mehrere Decodierphasen (Dn) 312 sowie eine Übertragungsphase (Xfer) 314 aufweist, um die decodierten Anweisungen zu einer Gruppenzuleitungseinheit (Group Dispatch, GD) 320 zu übertragen. Die Gruppenzuleitungseinheit 320 ist mit Zuordnungseinheiten (Mapping Units, MP) 322 (wie zum Beispiel mit der Zuordnungseinheit 216 für angelegte Register, der vereinheitlichten Haupt-Zuordnungseinheit 218 und/oder der Zuordnungseinheit 220 für temporäre Register aus 2) verbunden, die mit einer Verarbeitungseinheit 330 verbunden sind.
  • Die Verarbeitungseinheit 330 stellt die Verarbeitung unterschiedlicher Typen von Anweisungen bereit. Beispielsweise ist bei 331 die Verarbeitung bei einer Anweisung dargestellt, die eine Verzweigungsumleitungseinheit (Branch Redirect, BR) 337 und zum Beispiel eine Anweisungsausgabeeinheit (Instruction Issue, ISS) 332, eine Registerdatei-Leseeinheit (Register File Read, RF) 334, eine Ausführungseinheit (Execute, EX) 336, die Verzweigungsumleitungseinheit 337 zur Anweisungsabrufeinheit 302, eine Rückschreibeinheit (Write Back, WB) 346 und eine Übertragungseinheit (Xfer) 348 aufweist; ist bei 333 die Verarbeitung bei einer Lade-/Speicherungsanweisung dargestellt, die beispielsweise die Anweisungsausgabeeinheit 332, die Registerdatei-Leseeinheit 334, eine Adressberechnungseinheit (EA) 338, eine Daten-Cache-Zwischenspeichereinheit (Data Cache, DC) 340, eine Formateinheit (FMT) 342, die Rückschreibeinheit 346 und die Datenübertragungseinheit 348 aufweist; ist bei 335 die Verarbeitung bei einer Festkommaanweisung dargestellt, die beispielsweise die Anweisungsausgabeeinheit 332, die Registerdatei-Leseeinheit 334, die Ausführungseinheit 336, die Rückschreibeinheit 346 und die Datenübertragungseinheit 348 aufweist; und ist bei 337 die Verarbeitung bei einer Gleitkommaanweisung dargestellt, die beispielsweise die Anweisungsausgabeeinheit 332, die Registerdatei-Leseeinheit 334, eine Sechs-Zyklus-Gleitkommaeinheit (F6) 344, die Rückschreibeinheit 346 und die Datenübertragungseinheit 348 aufweist. Die Verarbeitung bei jedem Anweisungstyp überträgt zu einer Gruppenfestschreibeinheit (Group Commit, CP) 350. Der Ausgang der Gruppenfestschreibeinheit 350 ist beispielsweise im Fall von Interrupts und Leerungen mit der Anweisungsabrufeinheit 302 verbunden.
  • Bei einer Ausführungsform wird eine ausgewählte Anweisung wie zum Beispiel ein Systemaufruf oder eine Rückkehr von einer Systemaufrufanweisung ausgeführt (siehe z. B. die Bezugsnummer bei 370), wenn die ausgewählte Anweisung die nächste abzuschließende Anweisung (hext Instruction to Complete, NTC) ist, d. h. dass alle anderen Anweisungen vor ihr in der Pipeline abgeschlossen sind. Wenn sie ausgeführt wird, werden bei einem herkömmlichen Ablauf alle Anweisungen nach der ausgewählten Anweisung geleert. Die Anweisungen werden anschließend erneut mit einer neuen Berechtigungsstufe (z. B. Betriebssystemebene) von einem Ausführungspunkt abgerufen, der je nach der gerade ausgeführten betreffenden Anweisung von einer Einsprungadresse des Systemaufrufs (z. B. einer Zieladresse des Systemaufrufs) oder einer angegebenen Rückkehr von der Adresse des Systemaufrufs abhängt.
  • Eine ähnliche Verarbeitung wird durchgeführt, wenn andere Anweisungstypen auszuführen sind, die die Berechtigungsstufe und/oder einen anderen Betriebszustand in der Pipeline verändern.
  • Weitere Einzelheiten hinsichtlich des Anweisungsdatenflusses werden unter Bezugnahme auf 4 beschrieben. Wie dargestellt kann ein bestimmter Datenfluss je nach der Anweisung eines oder mehrere aus Folgendem nutzen: eine Verzweigungsvorhersageeinheit 400, die mit einem Programmzähler 402 verbunden ist, der ferner über einen Multiplexer 403 mit einem Anweisungs-Cache-Zwischenspeicher 404 verbunden ist. Der Anweisungs-Cache-Zwischenspeicher 404 ist mit einer Anweisungsumsetzungseinheit 406 sowie mit einem oder mehreren Anweisungspuffern 408 verbunden. Die Anweisungspuffer 408 sind mit einem Multiplexer 410 verbunden, der eine Thread-Priorität nutzen kann, um die abgerufenen Anweisungen zu einer Gruppenbildungs-, Anweisungsdecodier- und Zuleitungseinheit 420 weiterzuleiten. Die Einheit 420 ist dann ferner mit Zuordnungseinheiten 422 für gemeinsam genutzte Register (z. B. mit den Zuordnungseinheiten 216, 218, 220 aus 2) und einer globalen Abschlusstabelle 424 verbunden, bei der es sich um eine Datenstruktur handelt, die die Anweisungen in Bezug auf den Abschluss überwacht.
  • Von den Zuordnungseinheiten fließen die Daten durch gemeinsam genutzte Ausgabewarteschlangen 430 (z. B. durch die Ausgabewarteschlange 222 aus 2); einen Multiplexer 432 zur dynamischen Auswahl von Anweisungen; eine gemeinsam genutzte Leselogik für die Dateien 440 mit gemeinsam genutzten Registern (z. B. die Registerdateien 232a bis 232n aus 2); gemeinsam genutzte Ausführungseinheiten 442 wie zum Beispiel Lade-/Speicherungseinheiten (Load/Store Units, LSU), Festkomma-Ausführungseinheiten (Fixed Point Execution Units, FXU), Gleitkomma-Ausführungseinheiten (Floating Point Execution Units, FPU), Verzweigungs-Ausführungseinheiten (Branch Execution Units, BXU) und Logik-Ausführungseinheiten von Bedingungsregistern (Condition Register Logical Execution Units, CRL) (z. B. die Ausführungseinheiten 230a bis 230n aus 2); eine gemeinsam genutzte Schreiblogik für die Dateien 444 mit gemeinsam genutzten Registern (z. B. die Registerdateien 232a bis 232n aus 2); eine Datenumsetzungseinheit 446, sofern notwendig; eine Gruppenabschlusseinheit 448 (z. B. die Abschlusseinheit 221 aus 2 oder CP 350 aus 3); und Speicherungswarteschlangen 450. Die Speicherungswarteschlangen 450 sind über einen Multiplexer 452 mit einem oder mehreren eines Daten-Cache-Zwischenspeichers 452 und eines L2-Cache-Zwischenspeichers 454 verbunden.
  • Die Gruppenabschlusseinheit 448 ist ferner betriebsfähig mit einer oder mehreren Datenstrukturen und/oder einem oder mehreren Speicherplätzen verbunden, die den Zustand für die Verarbeitungsumgebung wie beispielsweise einen globalen Zustand 458 enthalten, der zum Beispiel die aktuelle Berechtigungsstufe in der Pipeline anzeigt; mit einem Register 456 für den nicht spekulativen Maschinenzustand (Machine State Register, MSR), das zu jeder Anweisung, die in der Pipeline ausgeführt wird, einen gemeinsam genutzten Maschinenzustand bereitstellt; und wahlweise mit anderen globalen Zuständen, die das Überwachen von Anweisungen im Prozessor betreffen. Das Maschinenzustandsregister enthält zum Beispiel eine Vielzahl von Anzeigern (z. B. Bits), und jeder Anzeiger gibt den Zustand eines ausgewählten Attributs wieder. Beispielsweise wird ein Anzeiger verwendet, um die Berechtigungsstufe (z. B. Benutzerebene, Betriebssystemebene, Hypervisor-Ebene) der Anweisung anzugeben; kann ein Anzeiger verwendet werden, um anzuzeigen, ob eine Verschiebung von Anweisungen freigegeben ist; und/oder können andere Anzeiger verwendet werden, um anzuzeigen, ob eine Verschiebung von Daten freigegeben ist (die Verschiebung von Anweisungen und Daten wird bei der Umsetzung von Adressen verwendet). Weitere und/oder andere Attribute können angegeben werden.
  • Unter erneuter Bezugnahme auf die Verzweigungsvorhersageeinheit 400 weist diese zum Beispiel eine Verzweigungsvorhersagelogik 460 auf, die auf eine oder mehrere Verzweigungsverlaufstabellen 462, einen Rückkehr-Stack 464 und einen Ziel-Cache-Zwischenspeicher 466 zurückgreifen kann, die verwendet werden, um eine Vorhersage zum Beispiel dahingehend zu treffen, ob eine Verzweigung stattfinden wird. Der Rückkehr-Stack ist bei einer Ausführungsform als Verbindungsvorhersageeinheiten-Stack realisiert, der für Unterroutinen zum Beispiel die Adresse vorhersagt, von der der Prozessor annimmt, dass die Anwendung zu dieser Adresse zurückkehrt, wenn er eine Rückkehr von Unterroutinen ausführt. Gemäß einem Aspekt weist er außerdem vorhergesagte Adressen für die Rückkehr von ausgewählten Anweisungen auf, zum Beispiel von solchen, die wie oben beschrieben die Berechtigungsstufe im Prozessor und/oder einen anderen Betriebszustand ändern. Bei einem weiteren Aspekt wird eine getrennte Vorhersageeinheit zum Vorhersagen von Adressen für die Rückkehr von ausgewählten Anweisungen bereitgestellt.
  • Gemäß einem Aspekt wird die Verzweigungsvorhersagelogik 460 auch verwendet, um vorherzusagen, ob eine ausgewählte Anweisung wie zum Beispiel eine Anweisung, die die Berechtigungsstufe und/oder einen anderen Betriebszustand ändert, ausgeführt werden soll, und wenn dies der Fall ist, um für diese ausgewählte Anweisung eine vorhergesagte Adresse vorherzusagen. Bei einem Beispiel, bei dem die Anweisung eine Systemaufrufanweisung ist, ist die vorhergesagte Adresse eine Einsprungadresse eines Systemaufrufs. Die Einsprungadresse ist die Adresse, zu der die Systemaufrufanweisung übergeht, wenn sie ausgeführt wird. Durch Vorhersagen der Einsprungadresse können die an der Einsprungadresse beginnenden Anweisungen abgerufen und anschließend in der Einheit 420 decodiert werden, bevor die Ausführung der ausgewählten Anweisung erreicht wird. Dadurch werden zum Beispiel in der Verzweigungsausführungseinheit und in der Logik-Ausführungseinheit von Bedingungsregistern Einbußen bei der Pipeline durch eine Änderung der Berechtigungsstufe verringert. Um dies zu erreichen, weist die Verzweigungsvorhersagelogik 640 wie hierin nachfolgend eingehender beschrieben eine Vorhersagelogik 468 auf, die beim vorausschauenden Abrufen und Decodieren im Zusammenhang mit ausgewählten Anweisungen verwendet wird. Diese Vorhersagelogik nutzt den spekulativen Zustand, der zum Beispiel in einem spekulativen MSR gehalten wird, das mit der Vorhersagelogik verbunden ist. Bei einem Beispiel wird er in der Decodierlogik gehalten, wie in 5 dargestellt.
  • Gemäß einem Aspekt der Vorhersagefähigkeit wird die Verzweigungsvorhersagelogik verwendet, um Kosten zu senken, die im Zusammenhang mit dem Ausführen ausgewählter Anweisungen stehen, zum Beispiel Systemaufrufanweisungen, Rückkehr von Systemaufrufanweisungen, Rückkehr von Interrupts sowie andere. Die Vorhersagefähigkeit sagt vorher, ob eine ausgewählte Anweisung (z. B. einer Anweisung, die die Berechtigungsstufe und/oder einen anderen Betriebszustand im Prozessor ändert) in der Anweisungspipeline ausgeführt werden soll, und wenn dies der Fall ist, sie mit dem Abrufen und Decodieren der Anweisungen beginnt, die im Zusammenhang mit dieser Anweisung (z. B. die Anweisungen an der vorhergesagten Adresse) stehen. Dies verringert Unterbrechungen der Pipeline, wenn die ausgewählte Anweisung ausgeführt wird und die Verarbeitung zu den Anweisungen an der vorhergesagten Adresse übergeht. Bei mindestens einer Ausführungsform ist die Vorhersagelogik so gestaltet, dass ein Programmzähler (Program Counter, PC) (der auch als Anweisungsadressregister (Instruction Address Register, IAR) bezeichnet wird) für zukünftige Anweisungen mit der vorhergesagten Abrufadresse aktualisiert wird. Obwohl die Verzweigungsvorhersagelogik bei diesem Beispiel das vorausschauende Abrufen und Decodieren ausgewählter Anweisungen aufweist (die als Vorhersagelogik 468 bezeichnet ist), kann diese Logik bei anderen Ausführungsformen in einer anderen als in der Verzweigungsvorhersagelogik enthalten sein.
  • Ein Überblick über die Verarbeitung einer ausgewählten Anweisung gemäß einem Aspekt wird unter Bezugnahme auf 5 beschrieben. Wie dargestellt ist eine Anweisungsabrufeinheit (Instruction Fetch, IF) 500 mit einer Anweisungsdecodiereinheit (Instruction Decode, ID) 502 verbunden. Die Anweisungen werden durch die Anweisungsabrufeinheit aus dem Speicher abgerufen und durch einen Decodierer 504 der Decodiereinheit 502 decodiert. Bei einem Aspekt wird, wenn eine Anweisung abgerufen wird, zum Beispiel unter Verwendung einer Vorhersageeinheit 506 eine Vorhersage dahingehend getroffen, ob die betreffende abgerufene Anweisung eine ausgewählte Anweisung wie zum Beispiel eine Anweisung ist, die die Berechtigungsstufe und/oder einen anderen Betriebszustand ändert. Zum Beispiel wird eine anteilige Decodierung der abgerufenen Anweisung durchgeführt, um zu ermitteln, ob die Anweisung eine ausgewählte Anweisung ist. Wenn es sich um eine ausgewählte Anweisung handelt, wird für die ausgewählte Anweisung eine vorhergesagte Adresse vorhergesagt und im Programmzähler (PC) 512 der Anweisungsabrufeinheit gespeichert. Beispielsweise ist die vorhergesagte Adresse bei einer Systemaufrufanweisung die Einsprungadresse des Systemaufrufs; und bei einer Rückkehr von einer Systemaufrufanweisung ist die vorhergesagte Adresse eine Rückkehradresse. Ferner wird ein Zustand, der die Anweisung an der vorhergesagten Adresse betrifft, vorhergesagt und in einem spekulativen MSR 510 gespeichert.
  • Die ausgewählte Anweisung nimmt ihren Weg durch die Anweisungspipeline zu einer Anweisungsabfolgeeinheit (Instruction Sequence Unit, ISU) 530, die zum Beispiel eine oder mehrere Ausgabewarteschlangen 532 und eine Anweisungsabfolge-Ausführungseinheit 534 aufweist, die ein nicht spekulatives MSR 536 aktualisiert. Das nicht spekulative MSR gibt den Zustand der Anweisung(en) wieder, die in der Pipeline ausgeführt wird bzw. werden. Es ist der tatsächliche Zustand und nicht der vorhergesagte Zustand und weist bei einer Ausführungsform dieselben Anzeiger wie das spekulative MSR auf. (Bei einer anderen Ausführungsform enthält er eine Obermenge der Anzeiger im spekulativen MSR.) Die Anweisungsabfolgeeinheit ist mit einer oder mehreren Ausführungseinheiten wie zum Beispiel mit einer Verzweigungsumleitungs-Ausführungseinheit 540, einer Festkomma-Ausführungseinheit 542, einer Lade-/Speicherungsausführungseinheit 544, einer Vektor-Skalar-Ausführungseinheit 546 und einer oder mehreren weiteren Ausführungseinheiten 548 verbunden. Die Anweisung wird durch eine dieser Ausführungseinheiten ausgeführt. Die Ausführung der Anweisung gemäß einem Aspekt verursacht keine Leerung der beginnend bei der vorhergesagten Adresse abgerufenen Anweisungen, die sich jetzt in der Pipeline befinden. Stattdessen werden Anweisungen, die bei der vorhergesagten Adresse der ausgewählten Anweisung beginnen, abgerufen und/oder decodiert, und befinden sich in der Pipeline, die auszuführen ist, wenn die ausgewählte Anweisung ausgeführt wird. Bei einer Ausführungsform werden Anweisungen, die bei der vorhergesagten Adresse beginnen, in einer Pipelinephase gehalten, zum Beispiel in der Decodier-, Zuleitungs-, Übertragungs- oder Ausgabephase, bis die ausgewählte Anweisung den Zustand des nicht spekulativen MSR (z. B. 456 aus 4 oder 536 aus 5) aktualisiert hat.
  • Weitere Einzelheiten hinsichtlich der Verarbeitung einer ausgewählten Anweisung wie zum Beispiel einer Systemaufrufanweisung werden unter Bezugnahme auf 6 beschrieben. Bei einer Ausführungsform wird zu Anfang eine Anweisung in die Anweisungsabrufeinheit abgerufen, SCHRITT 600. Danach wird eine Durchsuchung wie zum Beispiel eine Verzweigungsdurchsuchung (keine vollständige Decodierung) durchgeführt, um vorherzusagen, ob die Anweisung eine Systemaufrufanweisung ist, ABFRAGE 602. Die Durchsuchung wird zum Beispiel durch die Verzweigungsvorhersagelogik durchgeführt, die sich in der Anweisungsabrufeinheit befindet (oder bei einer anderen Ausführungsform eventuell in der Decodiereinheit). Diese Vorhersage wird getroffen, indem zum Beispiel der Operationscode der Anweisung und/oder zur Anweisung gehörende Parameter untersucht werden. Bei einer weiteren Ausführungsform werden Informationen aus einer Vordecodierung verwendet, um eine Systemaufrufanweisung zu erkennen. Bei noch einer weiteren Ausführungsform wird eine vollständige Decodierung der Anweisung durchgeführt. Wenn es sich nicht um eine Systemaufrufanweisung handelt, geht die Verarbeitung in herkömmlicher Weise vor, SCHRITT 604. Bei einer weiteren Ausführungsform können andere Prüfungen vorgenommen werden, um zu ermitteln, ob es sich bei der Anweisung um einen anderen Typ ausgewählter Anweisungen handelt.
  • Wenn jedoch vorhergesagt wird, dass eine Systemaufrufanweisung auszuführen ist, wird eine bestimmte Verarbeitung durchgeführt, um vor der Ausführung der Systemaufrufanweisung das Abrufen und Decodieren einer oder mehrerer Anweisungen zu ermöglichen, die zu der Systemaufrufanweisung gehören. Bereits in der Pipeline befindliche Anweisungen, die vor der erkannten Systemaufrufanweisung abgerufen wurden, dürfen die Verarbeitung durch die Pipeline hindurch fortsetzen. Zu dieser Verarbeitung gehören zum Beispiel das Setzen einer Vorhersageadresse auf eine Einsprungadresse der ausgewählten Anweisung und das Speichern der Adresse im Programmzähler, SCHRITT 606. Die Einsprungadresse ist die Adresse, auf die auf der Grundlage der Ausführung der Systemaufrufanweisung zugegriffen werden muss. Sie ist die Zieladresse der Systemaufrufanweisung, an der das Abrufen einer oder mehrerer Anweisungen im Auftrag der Systemaufrufanweisung durchgeführt wird. Zum Beispiel wird diese Einsprungadresse des Systemaufrufs entweder aus einer Konstanten abgeleitet, die in der Architekturspezifikation angegeben ist, oder sie wird beispielsweise aus einem Steuerregister, einem Interruptvektorregister, einem Spezialregister oder von einer bestimmten bezeichneten Speicherposition empfangen. Bei einem Beispiel wird das Zwischenspeichern unter Verwendung eines Spezialregisters durchgeführt, in dem ein Interruptwert gespeichert ist, wenn dieser Wert im Speicher dynamisch änderbar ist (z. B. die Einsprungadresse), um einen Speicherzugriff zu vermeiden. Bei einem weiteren Beispiel findet das Zwischenspeichern in Verbindung mit einem Registerumweg (register indirect) oder mit einer Vorhersagetabelle statt, in der eine Vielzahl vorhergesagter Werte gespeichert ist, wenn der Wert dynamisch änderbar ist, um einen Speicherzugriff zu vermeiden.
  • Darüber hinaus wird, wenn die Systemaufrufanweisung vorhergesagt wurde, für die Anweisung(en), die beginnend an der Einsprungadresse abzurufen ist bzw. sind, eine weitere Vorhersage hinsichtlich der Werte eines oder mehrerer der MSR-Anzeiger getroffen, zum Beispiel hinsichtlich der Berechtigungsstufe (z. B. Betriebssystemebene), der Verschiebung von Anweisungen, Verschiebung von Daten usw., SCHRITT 608. Bei einem Beispiel wird die Berechtigungsstufe auf der Grundlage der Systemaufrufanweisung empfangen (z. B. auf der Grundlage des Operationscodes oder eines Parameters, der zu der Systemaufrufanweisung gehört, oder auf der Grundlage einer Tabelle der Vorhersageeinheit, wenn die Ebene in einem Register gespeichert ist.
  • Wahlweise werden ferner eine Adresse, zu der nach der Ausführung der Systemaufrufanweisung zurückzukehren ist, sowie ein Wert im Push-Verfahren zu einem Vorhersageeinheiten-Stack übertragen, der nach der Rückkehr von dem Systemaufrufs als spekulatives MSR vorherzusagen ist. Bei einer Ausführungsform gibt der für die Rückkehr von dem Systemaufruf vorhergesagte Wert die aktuellen Werte des nicht spekulativen MSR wieder, SCHRITT 610. Bei einer weiteren Ausführungsform gibt das spekulative MSR, bevor es auf die in SCHRITT 608 vorhergesagten Bits des Vorhersage-MSR aktualisiert wird, das nicht spekulative MSR wieder, und die Bits des spekulativen MSR, die die Bits des nicht spekulativen MSR wiedergeben, werden verwendet, um den Vorhersageeinheiten-Stack zu initialisieren. Bei noch einer weiteren Ausführungsform werden zum Beispiel, wenn gleichzeitig mehrere Spekulationsebenen in einem Prozessor vorliegen, die Bits des spekulativen MSR in einem Vorhersageeinheiten-Stack gespeichert, die den spekulativen Zustand vor den neu vorhergesagten MSR-Bits des SCHRITTS 608 wiedergeben.
  • Darüber hinaus wird ein Abruf an der vorhergesagten Adresse ausgelöst, und die Bits des Vorhersage-MSR werden in dem spekulativen MSR gespeichert, das mit der bzw. den Anweisungsabruf- und Anweisungsdecodiereinheit(en) verbunden ist, SCHRITT 612. Wenn nach dem Systemaufruf beliebige sonstige Anweisungen abgerufen werden (d. h. Anweisungen, die nicht mit dem Systemaufruf im Zusammenhang stehen – nicht diejenigen, die beginnend an der vorhergesagten Adresse abgerufen werden), werden sie unterdrückt. Gemäß einem Aspekt werden jedoch die Anweisungen, die beginnend an der vorhergesagten Adresse abgerufen werden, die hierin als Anweisungen bezeichnet werden, die im Zusammenhang mit dem Systemaufruf oder einer anderen ausgewählten Anweisung stehen, auf der Grundlage des Vorhersage-MSR decodiert, aber die weitere Verarbeitung wird unterdrückt. Beispielsweise werden diese Anweisungen bei der Zuleitung festgehalten, bis ein Hinweis empfangen wird, sie zuzuleiten. Die Verarbeitung kehrt anschließend zu SCHRITT 600 zurück.
  • Bei einer Ausführungsform wird nur eine Vorhersageebene der ausgewählten Anweisung spekulativ durchgeführt (d. h., wenn eine ausgewählte Anweisung vorhergesagt wurde, werden weitere, in dem Anweisungsdatenstrom auftretende ausgewählte Anweisungen nicht vorausschauend verarbeitet, bis die erste vorhergesagte ausgewählte Anweisung ihre Ausführung abgeschlossen hat). Bei einer weiteren Ausführungsform werden mehrere Vorhersageebenen durchgeführt.
  • Die Verarbeitung der Systemaufrufanweisung wird fortgesetzt und erreicht schließlich die Ausführungsphase wie zum Beispiel eine Verzweigungsausführung. Einzelheiten hinsichtlich einer Ausführungsform der Ausführung der Systemaufrufanweisung (d. h. wenn die Systemaufrufanweisung die Ausführungsphase erreicht) werden unter Bezugnahme auf 7 beschrieben. Zu Anfang wird durch die Verzweigungsausführungseinheit eine Ermittlung dahingehend durchgeführt, ob die Systemaufrufanweisung von der Ausgabe-/Zuleitungslogik empfangen wurde, ABFRAGE 700. Wenn nicht, wird die herkömmliche Verarbeitung durchgeführt, SCHRITT 702. Wenn die Systemaufrufanweisung jedoch von der Ausgabe-/Zuleitungslogik empfangen wurde, werden die MSR-Bits und die nächste Abrufadresse (d. h. die tatsächliche Adresse der Anweisung nach der Systemaufrufanweisung) von der Anweisungsdefinition empfangen, SCHRITT 704.
  • Außerdem wird der Ausnahmebedingungszustand aktualisiert, SCHRITT 706. Beispielsweise wird ein Register (z. B. SRR0) aktualisiert, sodass es die nächste Abrufadresse enthält, die nach einer Rückkehr von dem Systemaufruf zu verwenden ist, und es wird ein weiteres Register (z. B. SRR1) aktualisiert, sodass es die MSR-Bits enthält, die nach einer Rückkehr von dem Systemaufruf zu verwenden sind (z. B. der aktuelle Zustand des nicht spekulativen MSR vor MSR-Aktualisierungen gemäß der aktuellen Anweisung). Ferner wird das nicht spekulative MSR mit dem MSR aktualisiert, das gemäß der Anweisungsdefinition empfangen wurde, SCHRITT 708. Darüber hinaus wird ein anderer Zustand zum Beispiel auf der Grundlage der betreffenden Architekturdefinition aktualisiert, bei der der Zustand aufgrund von Werten aktualisiert wird, die zum Beispiel unter Verwendung einer oder mehrerer Anweisungen oder durch Zugreifen auf bestimmte Speicherpositionen empfangen wurden.
  • Anschließend wird eine Ermittlung dahingehend durchgeführt, ob die Bits des Vorhersage-MSR den MSR-Bits der Architektur aus der Anweisungsdefinition entsprechen, ABFRAGE 710. Wenn sie diesen entsprechen, wird anschließend eine weitere Ermittlung dahingehend durchgeführt, ob die vorhergesagte nächste Abrufadresse (z. B. die vorhergesagte Adresse) der nächsten Abrufadresse (Next Fetch Address, NIA) der Architektur aus der Anweisungsdefinition entspricht, ABFRAGE 712. Wenn eine Übereinstimmung zwischen den MSR-Bits und der Abrufadresse vorliegt, werden bei der Zuleitung festgehaltene Anweisungen entsperrt, SCHRITT 714, und die Anweisung wird abgeschlossen, SCHRITT 716. Die Verarbeitung kehrt anschließend zur ABFRAGE 700 zurück.
  • Wenn jedoch entweder die Bits des Vorhersage-MSR nicht den MSR-Bits der Architektur entsprechen oder die vorhergesagte Adresse nicht der Adresse der Architektur entspricht, wird die falsche Vorhersage behandelt, SCHRITT 720. Beispielsweise werden die Anweisungen nach der aktuellen Anweisung in der Pipeline geleert, SCHRITT 723, und die MSR-Bits der Architektur und die Abrufadresse werden zum Beispiel zur Anweisungsabrufeinheit übertragen, SCHRITT 724. Der Abruf von Anweisungen wird neu gestartet, SCHRITT 726, und die Verarbeitung geht zur ABFRAGE 700 über. Damit ist eine Ausführungsform der Ausführung von Systemaufrufen beendet.
  • Wie hierin beschrieben wird eine Fähigkeit bereitgestellt, bei der bei einem Aspekt eine Verzweigungsvorhersagelogik verwendet wird, um eine Systemaufrufanweisung zu erkennen und für die Systemaufrufanweisung eine Adresse vorherzusagen, die eine Position angibt, an der das Abrufen von Anweisungen für die Systemaufrufanweisung beginnen soll. Ferner wird für diese abgerufenen Anweisungen zudem eine Berechtigungsstufe vorhergesagt.
  • Bei einem Aspekt wird eine Systemaufruf-Einsprunganweisung durch eine Verzweigungsvorhersagelogik erkannt und als vorhergesagte Verzweigung behandelt. Eine Vorhersage ist normalerweise einfach, da die meisten Einsprunganweisungen von Systemaufrufen nicht an Bedingungen geknüpft sind, d. h. stets ausgeführt werden. Bei einer Anweisungssatzarchitektur (Instruction Set Architecture, ISA) mit bedingten Anweisungen von Systemaufrufen wird eine Richtungsvorhersage getroffen, um zu ermitteln, ob ein Systemaufruf (oder TRAP oder eine ähnliche Anweisung) durchgeführt werden sollte, und es wird eine Vorhersage auf der Grundlage einer Systemaufrufanweisung aktualisiert.
  • Obwohl 7 unter Bezugnahme auf die Ausführung beschrieben wurde, die in der Verzweigungsausführungseinheit stattfindet, wird die Methode aus 7 bei einer anderen Ausführungsform in einer anderen Ausführungseinheit durchgeführt, die sich von der Verzweigungsausführungseinheit unterscheidet, oder zusammen durch eine Vielzahl von Ausführungseinheiten, die die Verzweigungsausführungseinheit wahlweise enthalten.
  • Bei einem Aspekt ist eine Verzweigungsvorhersageeinheit abgeändert, um die neue Berechtigungsstufe des Ziels der Systemaufrufanweisung vorherzusagen. Auf der Grundlage einer Systemaufrufanweisung wird der vorausschauende Berechtigungszustand gespeichert. Bei einem Aspekt wird, wenn eine Verzweigungsleerung (oder eine andere Leerung) eintritt, der vorausschauende Zustand auf den vorausschauenden Zustand der Berechtigungsstufe an dem Punkt in dem Anweisungsdatenstrom aktualisiert, mit dem die Leerung im Zusammenhang steht.
  • Bei einer Ausführungsform wird eine getrennte vorhergesagte Berechtigungsstufe in der Abruf-/Decodierlogik verwaltet, während eine nicht vorhergesagte Berechtigungsstufe an anderer Stelle verwaltet wird, z. B. in der ISU. Eine Prüfung zur Gewährleistung des korrekten spekulativen Abrufs und der Decodierung in Bezug auf die vorhergesagte Berechtigungsstufe im Vergleich zur nicht spekulativen Stufe wird durchgeführt, um bei allen Anweisungen die korrekte Ausführung zu gewährleisten. Beispielsweise wird die zu mindestens einer Anweisung gehörende spekulative Berechtigungsstufe validiert, indem eine spekulative Berechtigungsstufe mit einer nicht spekulativen Stufe verglichen wird. Bei einer erfolglosen Validierung werden Korrekturmaßnahmen ergriffen.
  • Wie oben beschrieben wird bei einer Realisierungsform ein Vorhersageeinheiten-Stack verwendet, um für die Systemaufrufanweisung eine Rückkehradresse zu verwalten. Früher geschah dies nicht, da die Rückkehr von Anweisungen von Systemaufrufen oder Ausnahmebedingungen den Berechtigungszustand des Prozessors verändern kann. Hingegen wird gemäß einem Aspekt die Verwaltung von Rückkehradressen aktiviert, indem Vorhersageeinheiten-Stacks um einen vorausschauenden Berechtigungszustand erweitert werden oder indem Vorhersageeinheiten-Stacks mit einem vorausschauenden Berechtigungszustand markiert werden oder indem beides durchgeführt wird. Ferner wird bei einem Aspekt Logik bereitgestellt, um den vorhergesagten Berechtigungszustand in Verbindung mit mindestens einer Anweisung zu prüfen.
  • Bei einer Ausführungsform wird eine Rückkehradresse in einem Vorhersageeinheiten-Stack abgelegt, wenn eine Systemaufruf-Einsprunganweisung erkannt wird. Des Weiteren wird bei einer Ausführungsform ein Berechtigungszustand und wahlweise ein zusätzlicher einzutragender MSR-Zustand zum Rückkehradresseintrag hinzugefügt. Darüber hinaus weist der Eintrag bei einer Ausführungsform einen Anzeiger auf, der kennzeichnet, dass der Eintrag durch eine Systemaufruf-Einsprunganweisung abgelegt wurde. In diesem Kontext wird der Berechtigungszustand als vorausschauend betrachtet, da die Rückkehr vorausschauend ist. Es ist nicht zwangsläufig bekannt, dass die Verarbeitung zur Rückkehradresse zurückkehrt und welche Berechtigungsstufe und/oder welchen MSR-Zustand das Betriebssystem nach dem Durchführen einer Rückkehr von einem Interrupt oder der Rückkehr von einem Systemaufruf anzeigen wird. Die Rückkehr hängt zum Beispiel von der Verarbeitung in der Pipeline ab.
  • Ein Beispiel eines Vorhersageeinheiten-Stacks, der die Rückkehradresse aufnimmt, wird unter Bezugnahme auf 8 beschrieben. Beispielsweise ist ein Vorhersageeinheiten-Stack 800 als LIFO-Verbindungs-Stack (LIFO = Last-In-First-Out) realisiert. Das obere Ende des Stacks ist mit „TOS” bezeichnet. Bei einer Ausführungsform weist der Stack eine Vielzahl von Adressen 802 sowie Zustandsinformationen wie zum Beispiel die aktuellen MSR-Bits 804 für jede Adresse und eine Datensatzmarkierung 806 auf. Die Datensatzmarkierung ist bei einer Ausführungsform wahlweise vorhanden und stellt eine Fähigkeit zur Überwachung bereit, wer den Datensatz in dem Verbindungs-Stack erzeugt hat. Beispielsweise bezeichnet „BL” eine Verzweigungsverbindung; „SC” bezeichnet einen Systemaufruf wie zum Beispiel einen Systemaufruf an das Betriebssystem; „SC_HV” bezeichnet einen Systemaufruf an den Hypervisor; und „EXT” bezeichnet einen externen Interrupt.
  • Bei einigen Ausführungsformen verwenden einige Anweisungen eine Teilmenge der Felder, die in einem Verbindungs-Stack zur Verfügung stehen. Daher kann zum Beispiel eine Verzweigung zu einer Verbindungsanweisung vorhergesagt werden, indem eine vorhergesagte Unterroutinen-Rückkehradresse empfangen wird, ohne einen aktualisierten MSR-Zustand zu empfangen, da bei der Verzweigung zu einer Verbindungsanweisung gemäß mindestens einer Spezifikation von Anweisungssätzen wie zum Beispiel Power ISA, v2.07, nicht festgelegt ist, dass sie den MSR-Zustand verändert.
  • Gemäß einer Ausführungsform wird eine Datensatzmarkierung in Verbindung mit einer vorhergesagten Rückkehradresse und einem vorhergesagten MSR-Zustand empfangen, wenn eine Datensatzmarkierung vorliegt. Gemäß einer Ausführungsform wird die Datensatzmarkierung mit einer Anweisung verglichen, die gerade verarbeitet wird, sodass beispielsweise nur BL-Datensätze, die einen Vorhersagedatensatz wiedergeben, der durch die Verzweigungs- und Verbindungsanweisung erzeugt wurde, verwendet werden, um eine Rückkehradresse zu einer Verzweigung zu einer Verbindungsanweisung vorherzusagen; nur SC-Datensätze, die einen Systemaufruf an das Betriebssystem wiedergeben, durch eine Rückkehr von dem Systemaufruf aus dem Betriebssystem verwendet werden; nur SC-HV-Datensätze, die einen Systemaufruf an den Hypervisor wiedergeben, durch eine Rückkehr von dem Systemaufruf aus dem Hypervisor verwendet werden; und nur EXT-Datensätze, die durch eine externe asynchrone Unterbrechung erzeugt wurden, durch eine Rückkehr von der externen Interruptanweisung verwendet werden. Bei anderen Ausführungsformen kann eine Rückkehr von dem Systemaufruf verwendet werden, um entweder aus einem Betriebssystem oder einem Hypervisor zurückzukehren, und beide Datensatztypen werden als zulässige Vorhersageeinheit akzeptiert. Bei noch weiteren Ausführungsformen weisen diese Systemaufrufe dieselbe Datensatzmarkierung auf. Bei noch anderen Ausführungsformen können einige oder alle aus einem Betriebssystemaufruf (Systemaufruf an das Betriebssystem), einem Hypervisor-Aufruf (Systemaufruf an einen Hypervisor) und einer externen asynchronen Ausnahmebedingung durch dieselbe Rückkehranweisung abgeschlossen werden. Bei einer derartigen Ausführungsform werden alle entsprechend einer gemeinsam genutzten Rückkehr erzeugten Markierungen als zulässige Vorhersageeinheit akzeptiert. Bei noch einer weiteren Ausführungsform weisen diese Systemaufrufe und/oder Interrupts dieselbe Datensatzmarkierung auf. Viele Variationen sind möglich.
  • Wie bei anderen Ausführungsformen kann der Stack mit den Zustandsinformationen markiert sein, zusätzlich oder anstatt sie im Stack zu enthalten.
  • Bei einem weiteren Aspekt können externe asynchrone Interrupts zudem einen oder mehrere Aspekte der hierin beschriebenen Vorhersagefähigkeit nutzen, um Rückkehrvorgänge von externen Interrupts zu beschleunigen. Hierzu gehören zum Beispiel das Übertragen einer Rückkehradresse in einen Vorhersageeinheiten-Stack auf einen Eintrag bezüglich einer externen Ausnahmebedingungen mithilfe des Push-Verfahrens; und bei der Beendigung (Exit) der externen Ausnahmebedingung das frühzeitige Abrufen der Adresse unter Verwendung beispielsweise einer Rückkehr von einer Interruptanweisung, wie hierin beschrieben.
  • Eine Ausführungsform der Front-End-Ausführung eines externen asynchronen Interrupts wird unter Bezugnahme auf 9 beschrieben. Zu Anfang wird zum Beispiel durch die Abruf-/Decodiereinheit eine Ermittlung dahingehend vorgenommen, ob eine externe Ausnahmebedingung empfangen wurde, ABFRAGE 900. Wenn nicht, wird die herkömmliche Verarbeitung durchgeführt, SCHRITT 902. Bei einer weiteren Ausführungsform können andere Prüfungen vorgenommen werden, um zu ermitteln, ob es sich bei der Anweisung um einen anderen Typ ausgewählter Anweisungen handelt.
  • Anderenfalls wird der Programmzähler im Anweisungsadressregister auf die Einsprungadresse der Ausnahmebedingung gesetzt, SCHRITT 904. Dieser Wert kann zum Beispiel von einer Konstanten, einem Interruptvektorregister oder einem Speichervektor empfangen werden. Ferner werden die MSR-Anzeiger auf der Grundlage der Ausnahmebedingung vorhergesagt.
  • Danach werden die Anweisungen in der Pipeline geleert, SCHRITT 906. Ferner werden bei einer Ausführungsform eine Rückkehr von der Interruptadresse sowie die aktuellen MSR-Bits im Push-Verfahren zum Vorhersageeinheiten-Stack übertragen, SCHRITT 908. Bei einer Ausführungsform geben die Bits des aktuellen MSR die Bits 536 des nicht spekulativen MSR aus 5 wieder. Anschließend wird an der Einsprungadresse der Ausnahmebedingung ein Abruf ausgelöst, und die Bits des Vorhersage-MSR werden im spekulativen MSR gespeichert, SCHRITT 910. Die abgerufenen Anweisungen, die an der Einsprungadresse der Ausnahmebedingung beginnen, werden decodiert. Die Verarbeitung geht anschließend zur ABFRAGE 900 über.
  • Bei mindestens einer Ausführungsform wird ein zusätzlicher Zustand gemäß einer herkömmlichen Definition der Verarbeitung von Ausnahmebedingungen gemäß einer Architektur aktualisiert. Dieser Zustand weist, ohne darauf beschränkt zu sein, nicht spekulative globale MSR-Bits (z. B. die MSR-Bits 456 aus 5) auf sowie einen anderen nicht spekulativen Zustand wie zum Beispiel eine angelegte Rückkehr von der Ausnahmebedingungsadresse in einem ersten Register (z. B. im Register SRR0) und eine angelegte Rückkehr von einem Zustand des Ausnahmebedingungs-MSR in einem zweiten Register (z. B. im Register SRR1).
  • Wie oben beschrieben weist die Vorhersagefähigkeit bei einer Ausführungsform für das Push-Verfahren Rückkehrinformationen über einen Vorhersageeinheiten-Stack auf, um Rückkehrvorgänge von den ausgewählten Anweisungen zu erleichtern. Die Rückkehrvorgange werden zum Beispiel durch eine Rückkehr von einer Systemaufrufanweisung entweder durch das Betriebssystem oder einen Hypervisor und/oder durch eine Rückkehr von einem asynchronen Interrupt entweder durch das Betriebssystem oder einen Hypervisor bereitgestellt. Dieses Anweisungen werden hierin der Einfachheit halber als „ausgewählte Rückkehranweisungen” bezeichnet.
  • Bei den ausgewählten Rückkehranweisungen wird die Vorhersage im Vorhersageeinheiten-Stack bei einem Beispiel geprüft, indem das MSR und der Programmzähler geprüft werden. Bei einer erfolgreichen Vorhersage findet keine Umleitung statt.
  • Das Beenden eines bevorrechtigten Zustands aus einem Systemaufruf, Hypervisor-Aufruf oder einem asynchronen Interrupt mit einer Anweisung des Typs „Rückkehr von dem Interrupt” kann sich wegen der Verarbeitung, die an der Beendigung eines Systemaufrufs oder an einer Rückkehr von dem Interrupt beteiligt ist, auf das Betriebsverhalten auswirken. Daher werden gemäß einem Aspekt Rückkehrvorgänge von Systemaufrufen, Rückkehrvorgänge von Hypervisoren oder Rückkehrvorgänge von Interrupts vorhergesagt. Bei Auftreten eines Einsprungs aufgrund eines asynchronen (externen) Interrupts wird eine Rückkehradresse in einem Vorhersageeinheiten-Stack abgelegt. Bei einer Ausführungsform werden Rückkehradressen für Systemaufrufe oder Interrupts im Vorhersageeinheiten-Stack für die Rückkehr von Funktionen abgelegt, wenn ein Systemaufruf oder ein asynchroner Interrupt verarbeitet wird. Bei einer weiteren Ausführungsform wird ein spezielles Betriebssystem, ein spezieller Hypervisor oder eine Kombination aus Betriebssystem und Hypervisor-Vorhersageeinheiten-Eintrag und/oder -Stack bereitgestellt. Im hierin verwendeten Sinne sind externe Interrupts und externe Ausnahmebedingungen synchron, was bei vielen Architekturen der Fall ist.
  • Bei einer Ausführungsform werden interne Ausnahmebedingungen, interne Interrupts, Abfangpunkte (Traps) oder andere derartige Übergaben an eine übergeordnete Software (z. B. an das Betriebssystem oder an den Hypervisor) zu Steuerungszwecken ähnlich wie ein Systemaufruf und ein externer Interrupt behandelt und weisen zum Beispiel das Erzeugen eines Vorhersagedatensatzes in einem aus einem Vorhersageeinheiten-Stack für die Rückkehr von Funktionen oder einem speziellen Betriebssystem, Hypervisor oder einer Kombination aus Betriebssystem und Hypervisor-Vorhersageeinheiten-Eintrag und/oder -Stack auf.
  • Bei einem Aspekt wird eine Rückehranweisung eines Systemaufrufs oder eine Rückkehranweisung eines Interrupts durch eine Verzweigungsvorhersagelogik erkannt und als vorhergesagte Verzweigung behandelt. Eine Vorhersageadresse wird von einem Vorhersageeinheiten-Stack empfangen, in dem eine Rückkehradresse gespeichert wurde. Die Anweisung zur Rückkehr von einem Systemaufruf oder Interrupt wird zum Beispiel durch die Verzweigungsausführungseinheit verarbeitet, und der vorausschauende Zustand wird im Vergleich zu einem nicht spekulativen Zustand an dem innerhalb der Reihenfolge befindlichen Ausführungspunkt geprüft. Eine Prüfung des eingetragenen nicht spekulativen Zustands wird durchgeführt, und nachfolgende Anweisungen werden bei einer falschen Vorhersage geleert.
  • Die meisten Rückkehrvorgänge von Systemaufruf- oder Interruptanweisungen sind bei typischen Anweisungssatzarchitekturen (ISAs) nicht an Bedingungen geknüpft, d. h., sie werden stets ausgeführt. Bei einer ISA mit bedingten Rückkehrvorgängen von Systemaufrufen oder bedingten Rückkehrvorgängen von Interruptanweisungen wird eine Richtungsvorhersage getroffen und auf der Grundlage einer Rückkehr von einer Systemaufruf- oder Interruptanweisung aktualisiert.
  • Bei einer Ausführungsform ist, über die herkömmliche Verzweigungsvorhersage hinausgehend, eine Verzweigungsvorhersageeinheit abgeändert, um eine neue Berechtigungsstufe des Ziels einer Änderung des Steuerungsflusses vorherzusagen (zum Beispiel aufgrund einer Beendigung eines Systemaufrufs oder einer Anweisung zur Rückkehr von einem Interrupt). Auf der Grundlage einer Anweisung zur Beendigung eines Systemaufrufs oder einer Anweisung zur Rückkehr von einem Interrupt wird der vorausschauende Berechtigungszustand aktualisiert (d. h. gespeichert). Bei einer Ausführungsform wird der neue vorausschauende Zustand direkt von der Anweisung empfangen. Bei einer weiteren Ausführungsform sagt eine Vorhersageeinheitentabelle den Zustand vorher, z. B. wenn der Zustand in einem Register bereitgestellt wird.
  • Bei einer Ausführungsform wird, wenn eine Verzweigungsleerung (oder eine andere Leerung) eintritt, der vorausschauende Zustand auf den vorausschauenden Zustand der Berechtigungsstufe und/oder einen anderen MSR-Zustand an dem Punkt in dem Anweisungsdatenstrom aktualisiert, mit dem die Leerung im Zusammenhang steht. Bei einer weiteren Ausführungsform wird, wenn Leerungen im Zusammenhang mit einer nicht spekulativen Berechtigungsstufe und/oder einem anderen MSR-Zustand im Zusammenhang stehen (z. B. mit dem nicht spekulativen MSR 536 aus 5), die vorausschauende Berechtigungsstufe und/oder ein anderer MSR-Zustand auf eine nicht spekulative Berechtigungsstufe und/oder einen anderen MSR-Zustand aktualisiert, der mit dem Leerungspunkt im Zusammenhang steht.
  • In der Abruf-/Decodierlogik werden eine getrennte vorhergesagte Berechtigungsstufe und/oder ein anderer MSR-Zustand verwaltet. Eine nicht vorhergesagte Berechtigungsstufe und/oder ein anderer MSR-Zustand werden an anderer Stelle verwaltet, z. B. in der ISU. Eine Prüfung zur Gewährleistung des korrekten spekulativen Abrufs und der Decodierung in Bezug auf die vorhergesagte Berechtigungsstufe und/oder einen anderen MSR-Zustand im Vergleich zur nicht spekulativen Berechtigungsstufe und/oder zu dem anderen MSR-Zustand wird durchgeführt, um bei allen Anweisungen die korrekte Ausführung zu gewährleisten.
  • Bei einer Ausführungsform sind die Rückkehrvorgänge vom Interrupt und von der Beendigung des Systemaufrufs dieselben Anweisungen. In diesem Fall erzeugen der Systemaufrufeintrag und der Eintrag aufgrund des asynchronen Interrupts einen ähnlichen Vorhersagedatensatz auf derselben Vorhersagestruktur. Eine Rückkehr von bevorrechtigtem Code (z. B. Betriebssystem und/oder Hypervisor) nutzt den erzeugten Eintrag unabhängig von der Art, wie der Eintrag erzeugt wurde, um die Beendigung zu verarbeiten.
  • Bei einer Ausführungsform werden alle Anweisungen mit einem Vorhersagezustand festgehalten (z. B. in Zuleitungs- oder Ausgabewarteschlangen oder in anderen Warteschlangen und Positionen), bis der Vorhersagezustand validiert wurde. Bei mindestens einer Ausführungsform werden einige Anweisungen (z. B. solche, die auf einem bevorrechtigten Zustand oder Modus beruhen) gehalten, während andere wie zum Beispiel Additions- und Subtraktionsanweisungen usw. weiterhin ausgeführt werden. Bei mindestens einer Ausführungsform, bei der jede Anweisung mit ihrem spekulativen Zustand markiert ist, werden einige Anweisungen, die vom spekulativen Zustand abhängen, auf der Grundlage ihres spekulativen bevorrechtigten Zustands ausgeführt, falls und nur falls sie rückgängig gemacht werden können, wenn die spekulative Anweisung geleert werden muss, z. B. wenn der spekulative Zustand falsch vorhergesagt wurde. Bei einer Ausführungsform können Ergebnisse gelöscht werden, wenn nur ein umbenannter Zustand wie zum Beispiel das Ergebnis von Lade- und Speicherungsvorgängen aktualisiert wird, und Anweisungen, die Ausnahmebedingungen verursachen, werden gehalten, wenn sie spekulativ ausgeführt werden, und erneut ausgeführt, wenn sie nicht spekulativ werden.
  • Bei einer Ausführungsform wird eine Vorhersage auf der Grundlage einer Rückkehr von einer Interruptanweisung getroffen, aber anschließend wird die Rückkehr von der Interruptanweisung mikrocodiert. Normalerweise bewirkt dieselbe Anweisung die Vorhersage und später in der Pipeline (d. h. in einer Pipelinephase, die später aus dem Anweisungsabruf entfernt wird) die Prüfung der Vorhersage. Gemäß einem Aspekt bewirkt jedoch die ursprüngliche Anweisung, die zu dem Mikrocodeeintrag gehört, die Vorhersage (sowohl in Bezug auf die Adresse als auch auf einige MSR-Bits), und eine weitere Anweisung, die durch den Mikrocode ausgegeben wird, führt nur das Prüfen der Vorhersage durch. Wenn entweder die Programmzähleradresse oder das MSR falsch vorhergesagt wurden, wird der Programmzähler umgeleitet, und das MSR wird zurückgesetzt.
  • Eine Ausführungsform der Verarbeitung im Zusammenhang mit einer ausgewählten Rückkehranweisung wird unter Bezugnahme auf 10A beschrieben. Zu Anfang wird eine Anweisung aus dem Speicher in die Anweisungsabrufeinheit abgerufen, SCHRITT 1000. Danach wird eine Durchsuchung wie zum Beispiel eine Verzweigungsdurchsuchung durchgeführt, um vorherzusagen, ob die Anweisung eine Rückkehr von einem Systemaufruf oder eine Anweisung zur Rückkehr von einem Interrupt ist, ABFRAGE 1002. Diese Vorhersage wird getroffen, indem zum Beispiel der Operationscode der Anweisung und/oder zur Anweisung gehörende Parameter untersucht werden. Wenn es sich nicht um eine ausgewählte Rückkehranweisung handelt, geht die Verarbeitung in herkömmlicher Weise vor, SCHRITT 1004. Bei einer weiteren Ausführungsform können andere Prüfungen vorgenommen werden, um zu ermitteln, ob es sich bei der Anweisung um einen anderen Typ ausgewählter Anweisungen handelt.
  • Wenn jedoch vorhergesagt wird, dass eine ausgewählte Rückkehranweisung auszuführen ist, wird die Vorhersageadresse auf die im Vorhersageeinheiten-Stack gespeicherte Adresse gesetzt, und diese vorhergesagte Adresse wird im Programmzähler gespeichert, SCHRITT 1006.
  • Darüber hinaus wird, wenn eine ausgewählte Rückkehranweisung vorhergesagt wurde, für die Anweisung an der vorhergesagten Adresse, eine weitere Vorhersage hinsichtlich des Wertes eines oder mehrerer der MSR-Bits getroffen, zum Beispiel hinsichtlich der Berechtigungsstufe (z. B. Betriebssystemebene), der Verschiebung von Anweisungen, Verschiebung von Daten usw., SCHRITT 1008. Bei einem Beispiel wird dieser Zustand aus dem Eintrag im Vorhersageeinheiten-Stack empfangen, der der Adresse entspricht. Bei einer weiteren Ausführungsform kann der vorhergesagte MSR-Zustand gemäß einer Anweisungssatz-Architekturspezifikation für mindestens eine Anweisungssatzarchitektur aus der gerade in Verarbeitung befindlichen Anweisung abgeleitet werden.
  • Ferner wird wahlweise der Typ des Datensatzes aus dem Vorhersageeinheiten-Stack geprüft, um zu ermitteln, ob die Vorhersage korrekt ist, SCHRITT 1010. Wenn es sich beispielsweise um eine Rückkehr von einem Systemaufruf handelt, bestätigt die Prüfung, dass der zur Vorhersage der Rückkehr verwendete Datensatz durch einen Einsprung in einen Systemaufruf erzeugt wurde, usw. Wenn die Vorhersage falsch ist, wird eine Wiederherstellung wie vorgegeben durchgeführt. (Bei einer Ausführungsform wird die Wiederherstellung als falsche Vorhersage behandelt. Bei einer weiteren Ausführungsform wird der Abruf von Anweisungen ausgesetzt, bis die Wiederherstellung durchgeführt wurde.) Darüber hinaus wird ein Abruf an der vorhergesagten Adresse ausgelöst, und die Bits des vorausschauenden MSR werden im spekulativen MSR gespeichert, SCHRITT 1012. Wenn nach der ausgewählten Rückkehranweisung beliebige sonstige Anweisungen aufgerufen werden (d. h. Anweisungen, die nicht mit der Rückkehranweisung im Zusammenhang stehen – nicht diejenigen, die beginnend an der vorhergesagten Adresse abgerufen werden), werden sie unterdrückt. Gemäß einem Aspekt einer Ausführungsform werden jedoch die Anweisungen, die beginnend an der vorhergesagten Adresse abgerufen werden, die hierin als Anweisungen bezeichnet werden, die im Zusammenhang mit der Systemaufrufrückkehr oder einer anderen ausgewählten Anweisung stehen, auf der Grundlage des Vorhersage-MSR decodiert, aber die weitere Verarbeitung wird unterdrückt. Beispielsweise werden diese Anweisungen bei der Zuleitung festgehalten, bis ein Hinweis empfangen wird, sie zuzuleiten. Die Verarbeitung kehrt anschließend zu SCHRITT 1000 zurück.
  • Die Verarbeitung der Rückkehranweisung wird fortgesetzt und erreicht schließlich die Ausführungsphase wie zum Beispiel eine Verzweigungsausführung. Einzelheiten hinsichtlich einer Ausführungsform der Ausführung der Rückkehranweisung (d. h. wenn die Rückkehranweisung die Ausführungsphase erreicht) werden unter Bezugnahme auf 10B beschrieben. Zu Anfang wird durch die Verzweigungsausführungseinheit eine Ermittlung dahingehend durchgeführt, ob die Rückkehranweisung von der Ausgabe-/Zuleitungslogik empfangen wurde, ABFRAGE 1050. Wenn nicht, wird die herkömmliche Verarbeitung durchgeführt, SCHRITT 1052. Wenn die Rückkehranweisung jedoch von der Ausgabe-/Zuleitungslogik empfangen wurde, werden die MSR-Bits und die Rückkehradresse zum Beispiel von den Registern SRR1 bzw. SRR0 empfangen, SCHRITT 1054.
  • Darüber hinaus wird das nicht spekulative MSR mit dem aus der Anweisung empfangenen MSR aktualisiert, SCHRITT 1056.
  • Anschließend wird eine Ermittlung dahingehend durchgeführt, ob die Bits des Vorhersage-MSR den MSR-Bits der Architektur aus der Anweisungsdefinition entsprechen, ABFRAGE 1058. Wenn sie diesen entsprechen, wird anschließend eine weitere Ermittlung dahingehend durchgeführt, ob die vorhergesagte Rückkehradresse (z. B. die Rückkehradresse der Systemaufrufrückkehr, aus der der Abruf durchgeführt wird) der Rückkehradresse der Architektur aus der Anweisungsdefinition entspricht, ABFRAGE 1060. Wenn eine Übereinstimmung zwischen den MSR-Bits und der Adresse vorliegt, werden bei der Zuleitung festgehaltene Anweisungen entsperrt, SCHRITT 1062, und die Anweisung wird abgeschlossen, SCHRITT 1064. Die Verarbeitung kehrt anschließend zur ABFRAGE 1050 zurück.
  • Wenn jedoch entweder die Bits des Vorhersage-MSR nicht den MSR-Bits der Architektur entsprechen oder die Adresse nicht der Adresse der Architektur entspricht, wird die falsche Vorhersage behandelt, SCHRITT 1080. Beispielsweise werden die Anweisungen nach der aktuellen Anweisung in der Pipeline geleert, SCHRITT 1082, und die MSR-Bits der Architektur und die Adresse werden zum Beispiel zur Abrufeinheit übertragen, SCHRITT 1084. Der Abruf von Anweisungen wird neu gestartet, SCHRITT 1086, und die Verarbeitung geht zur ABFRAGE 1050 über. Damit ist eine Ausführungsform der Ausführung von Rückkehrvorgängen beendet.
  • Bei mindestens einer Ausführungsform werden zusätzliche Abhilfemaßnahmen als Reaktion auf das Wiederherstellen eines Vorhersageeinheiten-Stacks zur Rückkehr von Subroutinen als Reaktion auf das Auftreten einer falschen Vorhersage durchgeführt.
  • Bei einer Ausführungsform wird, wenn eine Rückkehr von einer Systemaufrufanweisung verarbeitet wird, ein vorausschauender Berechtigungszustand eingetragen, der auf dem vorausschauenden Berechtigungszustand im Zustand in der Rückkehr-Vorhersageeinheit beruht. Ferner werden bei einer Ausführungsform ein vorausschauender Berechtigungszustand und/oder ein anderer MSR-Zustand mit einem Berechtigungszustand und/oder anderen MSR-Zustand in der Anweisung zur Beendigung des Systemaufrufs verglichen. Wenn festgestellt wird, dass keine Übereinstimmung vorliegt, wird keine Vorhersage verarbeitet, und die Rückkehr von dem Systemaufruf wird nicht spekulativ durchgeführt. Wenn bei einer Verzweigung eine Verzweigungsvorhersage unter Verwendung eines Rückkehr-Vorhersageeinheiten-Stacks durchgeführt wird und der Rückkehr-Vorhersageeinheiten-Stack anzeigt, dass der ausgewählte Eintrag durch einen Systemaufrufeinsprung vorgenommen wurde, wird die Verzweigung nicht vorausschauend durchgeführt. Wenn bei einer Beendigung eines Systemaufrufs eine Verzweigungsvorhersage unter Verwendung eines Rückkehr-Vorhersageeinheiten-Stacks durchgeführt wird und der Rückkehr-Vorhersageeinheiten-Stack nicht anzeigt, dass der ausgewählte Eintrag durch einen Systemaufrufeinsprung vorgenommen wurde, wird die Beendigung des Systemaufrufs nicht vorausschauend durchgeführt.
  • Bei einer Ausführungsform wird eine Rückkehradresse in einem Vorhersageeinheiten-Stack abgelegt, wenn ein Eintrag eines asynchronen oder externen Interrupts stattfindet. Des Weiteren wird ein Berechtigungszustand und/oder ein anderer einzutragender MSR-Zustand zu dem vorausschauenden Adresseintrag zur Rückkehr von dem Interrupt hinzugefügt. Wenn eine Anweisung zur Rückkehr von einem Interrupt verarbeitet wird, werden bei einer Ausführungsform ein vorausschauender Berechtigungszustand und/oder ein anderer MSR-Zustand eingetragen, die auf dem vorausschauenden Berechtigungszustand und/oder einem anderen MSR-Zustand im Zustand in der Rückkehr-Vorhersageeinheit beruhen. Ferner werden bei einer Ausführungsform ein vorausschauender Berechtigungszustand und/oder ein anderer MSR-Zustand mit einem Berechtigungszustand und/oder anderen MSR-Zustand in der Anweisung zur Rückkehr von dem Interrupt verglichen. Wenn festgestellt wird, dass keine Übereinstimmung vorliegt, wird keine Vorhersage verarbeitet, und die Rückkehr von dem Interrupt wird nicht spekulativ durchgeführt.
  • Ferner wird bei einer Ausführungsform, wenn ein asynchroner oder externer Interrupt eingetragen wird, ein Anzeiger zu der vorhergesagten Rückkehradresse hinzugefügt, der kennzeichnet, dass der Eintrag in dem Vorhersageeinheiten-Stack durch einen asynchronen/externen Interrupt abgelegt wurde. Wenn bei einer Verzweigung eine Verzweigungsvorhersage unter Verwendung eines Rückkehr-Vorhersageeinheiten-Stacks durchgeführt wird und der Rückkehr-Vorhersageeinheiten-Stack anzeigt, dass der ausgewählte Eintrag durch einen Ablauf beim Einsprung in einen asynchronen/externen Interrupt vorgenommen wurde, wird die Verzweigung nicht vorausschauend durchgeführt. Wenn bei einer Anweisung zur Rückkehr von einem Interrupt zwecks Interruptbeendigung eine Verzweigungsvorhersage unter Verwendung eines Rückkehr-Vorhersageeinheiten-Stacks durchgeführt wird und der Rückkehr-Vorhersageeinheiten-Stack nicht anzeigt, dass der ausgewählte Eintrag durch einen Ablauf beim Einsprung in einen asynchronen/externen Interrupt vorgenommen wurde, wird die Rückkehr von dem Interrupt nicht vorausschauend durchgeführt.
  • Wenn bei einer Ausführungsform eine Rückkehr von einem Interrupt und eine Rückkehr von einem Systemaufruf durch dieselbe Anweisung durchgeführt werden, erzeugen der Einsprung in den Systemaufruf und der Einsprung in den externen Interrupt unterschiedliche Markierungen, aber der Zugriff auf die Rückkehranweisung akzeptiert beide Markierungen, um eine Rückkehr spekulativ durchzuführen. Wenn bei einer weiteren Ausführungsform eine Rückkehr von einem Interrupt und eine Rückkehr von einem Systemaufruf durch dieselbe Anweisung durchgeführt werden, erzeugen der Einsprung in den Systemaufruf und der Einsprung in den externen Interrupt dieselbe Markierung für den Rückkehradressen-Stack.
  • Beendigungen von Systemaufrufen und Rückkehrvorgänge von Interruptanweisungen werden zur Verzweigungsausführungseinheit geleitet, um die Vorhersage zu validieren, und ein Wiederherstellungsablauf (z. B. eine Leerung bis zur korrekten Adresse mit dem korrekten vorausschauenden Berechtigungszustand) findet statt, wenn die Validierung nicht erfolgreich ist. Bei einer weiteren Ausführungsform wird dies durch eine andere Ausführungseinheit oder durch eine Kombination aus mehr als einer Ausführungseinheit behandelt. Bei einer Ausführungsform führt die Verzweigungsausführungseinheit, wenn aufgrund einer Nichtübereinstimmung vorhergesagter Zustände oder eines Markierungsdatensatzes im Rückkehreintrag keine vorausschauende Ausführung stattgefunden hat, keine Validierung durch, sondern führt die Anweisung direkt aus. Bei mindestens einer Ausführungsform entspricht die direkte Ausführung dem Durchführen eines Wiederherstellungsablaufs wie zum Beispiel einer Leerung bis zur korrekten Adresse mit dem korrekten vorausschauenden Zustand.
  • Wie hierin angedeutet, ist hin und wieder eine Leerung der Pipeline erforderlich oder erwünscht. Wenn zum Beispiel eine Verzweigung vorhergesagt hat, dass ein bestimmter Pfad eingeschlagen werden sollte und der Pfad falsch war, wird eine Leerung durchgeführt. Gemäß einem Aspekt müssen wie hierin beschrieben die Berechtigungsstufe und/oder ein anderer MSR-Zustand ebenfalls geändert werden, wenn der vorausschauend einbezogene falsche Pfad eine Anweisung durchführt, die die bevorrechtigte Stufe und/oder einen anderen Betriebszustand verändert.
  • Eine Ausführungsform der mit einer Leerung im Zusammenhang stehenden Logik wird unter Bezugnahme auf 11 beschrieben. Zu Anfang wird das Anweisungsadressregister (IAR) auf eine oder mehrere Adressen gesetzt, die von der GCT-Logik (GCT = Global Completion Table, globale Abschlusstabelle) in der Anweisungsabfolgeeinheit (ISU) abgerufen wurden, SCHRITT 1100. Außerdem werden die MSR-Bits auf die Werte der nicht spekulativen MSR-Anzeiger gesetzt, die zur globalen Abschlusstabelle gehören, SCHRITT 1102.
  • Ferner wird ein Abruf an der Adresse aus dem Adressregister für neue Anweisungen und mit den neuen MSR-Bits ausgelöst, SCHRITT 1104. Die an der neuen Adresse abgerufene Anweisung wird auf der Grundlage des neuen Zustands (z. B. der neuen MSR-Bits) verarbeitet. Damit ist eine Ausführungsform der Leerungslogik beendet.
  • Hierin wird eine Vorhersagefähigkeit eingehend beschrieben, die erkennt, ob eine ausgewählte Anweisung auszuführen ist. Auf der Grundlage der Feststellung, dass eine ausgewählte Anweisung auszuführen ist, wird eine Vorhersage hinsichtlich einer vorhergesagten Adresse für die ausgewählte Anweisung getroffen. Anschließend werden die Anweisungen, beginnend an der vorhergesagten Adresse, vor der Ausführung der ausgewählten Anweisung abgerufen und/oder decodiert. Dies verbessert das Betriebsverhalten innerhalb des Prozessors.
  • Bei einer Ausführungsform verwaltet die Vorhersagefähigkeit den MSR-Zustand in der Anweisungsabruf- und/oder -decodiereinheit als spekulativen Zustand. Das Originalexemplar in der Anweisungsabfolgeeinheit wird jedoch nach wie vor nicht spekulativ aktualisiert (bei NTC, d. h. zu dem Zeitpunkt, wenn die Anweisung nicht spekulativ und als nächste abzuschließen ist und vor der gegenwärtigen Anweisung keine Anweisungen vorliegen, die den nicht spekulativen Zustand aktualisieren). Bei einer Ausführungsform kann eine Vorhersageeinheit die neuen MSR-Bits enthalten, die in der Anweisungsabruf- und/oder -decodiereinheit überwacht und spekulativ aktualisiert werden. Bei einer Leerung werden die MSR-Bits in Verbindung mit der Leerungsadresse übertragen.
  • Obwohl ein oder mehrere der oben erörterten Beispiele einen Systemaufruf beschreiben, der durch ein Betriebssystem ausgegeben wird, sind ein oder mehrere Aspekte auf Systemaufrufe oder dergleichen anwendbar, die durch den Hypervisor ausgegeben werden. Der Hypervisor weist bei einer Ausführungsform eine Berechtigungsstufe auf, die höher als die sowohl des Betriebssystems als auch von Anwendungsprogrammen ist. Bei einem Hypervisor kehrt eine Rückkehr von einem Systemaufruf normalerweise zum Betriebssystem zurück. Ein oder mehrere der hierin beschriebenen Aspekte können zudem in Verbindung mit Programmen verwendet werden, die auf anderen Berechtigungsstufen außerhalb von oder zusätzlich zu Anwendungs-, Betriebssystem- und Hypervisor-Ebenen arbeiten.
  • Obwohl ein oder mehrere Aspekte unter Berücksichtigung von Anweisungen beschrieben wurden, die durch die Power ISA verwendet werden, können bei anderen Ausführungsformen Anweisungen anderer Architekturen verwendet werden. Beispielsweise können ein Systemaufruf gemäß einer anderen Systemaufrufanweisung (zum Beispiel die Anweisung „SVC” gemäß der z/Architecture bei System z) zusammen mit einem anderen Prozessorzustand und anderen Berechtigungsstufen zur Registerüberwachung verwendet werden (zum Beispiel ein PSW-Register (PSW = Program Status Word, Programmstatuswort) gemäß der z/Architecture bei System z); und/oder andere Anweisungen, Register und Einrichtungen gemäß den durch einen Mikroprozessor realisierten Anweisungssatzarchitekturen.
  • Dem Fachmann wird klar sein, dass ein oder mehrere Aspekte in Form eines Systems, Verfahrens oder Computerprogrammprodukts verkörpert sein können. Demzufolge können ein oder mehrere Aspekte die Form einer komplett in Hardware realisierten Ausführungsform, einer komplett in Software realisierten Ausführungsform (darunter Firmware, residente Software, Mikrocode usw.) oder einer Ausführungsform annehmen, die Software- und Hardwareaspekte kombiniert, die hier allgemein als „Schaltung”, „Modul” oder „System” bezeichnet werden. Ferner können ein oder mehrere Aspekte die Form eines Computerprogrammprodukts annehmen, das auf mindestens einem oder mehreren computerlesbaren Medium verkörpert ist, auf dem bzw. denen computerlesbarer Programmcode verkörpert ist.
  • Es können beliebige Kombinationen eines oder mehrerer computerlesbarer Medien verwendet werden. Das computerlesbare Medium kann ein computerlesbares Speichermedium sein. Zu computerlesbaren Speichermedien können beispielsweise, ohne darauf beschränkt zu sein, ein elektronisches, ein magnetisches, ein optisches oder ein elektromagnetisches System bzw. ein Infrarot- oder Halbleitersystem bzw. eine derartige Vorrichtung oder Einheit oder eine beliebige geeignete Kombination des Vorstehenden gehören. Zu den konkreteren Beispielen (unvollständige Liste) computerlesbarer Speichermedien zählen unter anderem folgende: eine elektrische Verbindung mit einer oder mehreren Leitungen, eine tragbare Computerdiskette, 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 Nur-Lese-Speicher in Form einer Compact Disc (CD-ROM), eine optische Speichereinheit, eine magnetische Speichereinheit oder eine beliebige geeignete Kombination des Vorstehenden. Im Kontext des vorliegenden Dokuments kann ein computerlesbares Speichermedium jedes beliebige vergegenständlichte Medium sein, das ein Programm enthalten oder speichern kann, das von oder in Verbindung mit einem System, einer Vorrichtung oder einer Einheit zur Befehlsausführung genutzt werden kann.
  • Unter Bezugnahme auf 12 weist ein Computerprogrammprodukt 1200 unter anderem ein oder mehrere nicht flüchtige computerlesbare Speichermedien 1202 auf, um darauf computerlesbare Programmcodemittel bzw. -logik 1204 zu speichern, um einen oder mehrere Aspekte bereitzustellen oder zu ermöglichen.
  • Auf einem computerlesbaren Medium verkörperter Programmcode kann unter Verwendung eines geeigneten Mediums, einschließlich, ohne darauf beschränkt zu sein, drahtloser, drahtgebundener Medien, Lichtwellenleitern, HF usw., oder unter Verwendung einer beliebigen geeigneten Kombination des Vorstehenden übertragen werden.
  • Computerprogrammcode zum Ausführen von Operationen eines oder mehrerer Aspekte kann in einer beliebigen Kombination aus einer oder mehreren Programmiersprachen, darunter in einer objektorientierten Programmiersprache wie z. B. Java, Smalltalk, C++ oder dergleichen und in herkömmlichen prozeduralen Programmiersprachen wie „C”, Assembler oder ähnlichen Programmiersprachen geschrieben sein. Der Programmcode kann vollständig auf dem Computer des Benutzers, teilweise auf dem Computer des Benutzers, als eigenständiges Softwarepaket, teilweise auf dem Computer des Benutzers und teilweise auf einem entfernt angeordneten Computer oder vollständig auf dem entfernt angeordneten Computer oder Server ausgeführt werden. Beim letztgenannten Szenario kann der entfernt angeordnete Computer mit dem Computer des Benutzers über eine beliebige Art von Netzwerk verbunden sein, unter anderem über ein lokales Netzwerk (LAN) oder über ein Weitverkehrsnetzwerk (WAN), oder die Verbindung kann zu einem externen Computer hergestellt werden (beispielsweise über das Internet unter Nutzung eines Internet-Dienstanbieters (Internet Service Provider)).
  • Hierin sind ein oder mehrere Aspekte unter Bezugnahme auf Flussdiagramme und/oder Blockschemata von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten gemäß Ausführungsformen beschrieben. Es wird klar sein, dass jeder Block der Flussdiagramme und/oder der Blockschemata und Kombinationen von Blöcken in den Flussdiagrammen und/oder Blockschemata durch Computerprogrammanweisungen realisiert werden kann bzw. können. Diese Computerprogrammanweisungen können einem Prozessor eines Mehrzweckcomputers, eines Spezialcomputers oder anderen programmierbaren Datenverarbeitungsvorrichtungen bereitgestellt werden, um eine Maschine zu erzeugen, sodass die Anweisungen, die über den Prozessor des Computers oder anderer programmierbarer Datenverarbeitungsvorrichtungen ausgeführt werden, Mittel zum Realisieren der in einem Block bzw. in den Blöcken der Flussdiagramme und/oder der Blockschemata angegebenen Funktionen/Aktionen schaffen.
  • Diese Computerprogrammanweisungen können ebenfalls in einem computerlesbaren Medium gespeichert sein, das einen Computer, andere programmierbare Datenverarbeitungsvorrichtungen oder andere Einheiten anweisen kann, in einer bestimmten Weise zu funktionieren, sodass die im computerlesbaren Medium gespeicherten Anweisungen ein Erzeugnis schaffen, das die Anweisungen aufweist, die die in einem Block bzw. in den Blöcken der Flussdiagramme und/oder der Blockschemata angegebene Funktion/Aktion realisieren.
  • Die Computerprogrammanweisungen können auch in einen Computer, in andere programmierbare Datenverarbeitungsvorrichtungen oder in andere Einheiten geladen werden, um zu bewirken, dass auf dem Computer, auf anderen programmierbaren Vorrichtungen oder anderen Einheiten eine Reihe von Arbeitsschritten ausgeführt wird, um einen mittels Computer realisierten Prozess zu schaffen, sodass die Anweisungen, die auf dem Computer oder auf anderen programmierbaren Vorrichtungen ausgeführt werden, Prozesse zur Realisierung der in einem Block bzw. in den Blöcken der Flussdiagramms und/oder der Blockschemata angegebenen Funktionen/Aktionen bereitstellen.
  • Die Flussdiagramme und Blockschemata in den Figuren veranschaulichen die Architektur, Funktionalität und Wirkungsweise möglicher Realisierungsformen von Systemen, Verfahren und Computerprogrammprodukten gemäß verschiedenen Ausführungsformen eines oder mehrerer Aspekte. Dementsprechend kann jeder einzelne Block in den Flussdiagrammen bzw. in den Blockschemata ein Modul, ein Segment oder einen Teil des Codes darstellen, der eine oder mehrere ausführbare Anweisungen zur Realisierung der angegebenen Logikfunktion bzw. Logikfunktionen aufweist. Außerdem sollte beachtet werden, dass bei einigen alternativen Realisierungsformen die in dem Block angegebenen Funktionen in einer anderen als der in den Figuren angegebenen Reihenfolge ausgeführt werden können. Beispielsweise können zwei hintereinander aufgeführte Blöcke tatsächlich im Wesentlichen gleichzeitig ausgeführt werden, oder die Blöcke können je nach der damit verbundenen Funktionalität manchmal in umgekehrter Reihenfolge ausgeführt werden. Darüber hinaus ist anzumerken, dass jeder Block der dargestellten Blockschemata und/oder des dargestellten Flussdiagramms sowie Kombinationen von Blöcken in den dargestellten Blockschemata und/oder im dargestellten Flussdiagramm mithilfe von bestimmten Zwecken dienenden, hardwaregestützten Systemen zur Ausführung der angegebenen Funktionen bzw. Aktionen oder mithilfe von Kombinationen aus bestimmten Zwecken dienender Hardware und Computeranweisungen realisiert werden kann bzw. können.
  • Zusätzlich zu den vorstehenden Ausführungen können ein oder mehrere Aspekte durch einen Dienstanbieter bereitgestellt, angeboten, installiert, verwaltet, gewartet usw. werden, der die Verwaltung von Kundenumgebungen anbietet. Zum Beispiel kann der Dienstanbieter Computercode und/oder eine Computerinfrastruktur schaffen, aufrechterhalten, unterstützen usw., die für einen oder mehrere Kunden einen oder mehrere Aspekte durchführt. Im Gegenzug kann der Dienstanbieter beispielsweise im Rahmen einer Abonnements- und/oder Gebührenvereinbarung eine Bezahlung erhalten. Zusätzlich oder alternativ kann der Dienstanbieter eine Bezahlung aus dem Verkauf von Werbeinhalten an einen oder mehrere Dritte erhalten.
  • Bei einem Aspekt kann eine Anwendung zum Durchführen eines oder mehrere Aspekte installiert sein. Um ein Beispiel zu nennen, weist das Installieren einer Anwendung das Bereitstellen einer Computerinfrastruktur auf, die betriebsfähig ist, um einen oder mehrere Aspekte durchzuführen.
  • Als weiterer Aspekt kann eine Datenverarbeitungsinfrastruktur installiert sein, die das Integrieren von computerlesbarem Code in ein Datenverarbeitungssystem aufweist, bei dem der Code in Kombination mit dem Datenverarbeitungssystem in der Lage ist, einen oder mehrere Aspekte durchzuführen.
  • Als noch weiterer Aspekt kann ein Prozess zum Integrieren einer Datenverarbeitungsinfrastruktur bereitgestellt sein, der das Integrieren von computerlesbarem Code in ein Computersystem aufweist. Das Computersystem weist ein computerlesbares Medium auf, bei dem das Computermedium ein oder mehrere Aspekte aufweist. Der Code in Kombination mit dem Computersystem ist in der Lage, einen oder mehrere Aspekte durchzuführen.
  • Obwohl oben verschiedene Ausführungsformen beschrieben sind, handelt es sich hierbei lediglich um Beispiele. Zum Beispiel können andere Datenverarbeitungsumgebungen einen oder mehrere Aspekte einbeziehen und nutzen. Außerdem können andere Anweisungen einschließlich und ohne darauf beschränkt zu sein anderer Anweisungen, die die Berechtigungsstufe und/oder einen anderen Betriebszustand verändern können, einen oder mehrere Aspekte der Vorhersagefähigkeit nutzen. Ferner können andere Typen von Vorhersageeinheiten-Datenstrukturen verwendet werden, und/oder es können weitere, weniger oder andere Informationen verwendet werden. Außerdem können andere Strukturen als ein MSR verwendet werden, zum Beispiel ein Programmstatuswort (PSW) oder andere Arten von Strukturen. Viele Variationen sind möglich.
  • Ferner können andere Arten von Datenverarbeitungsumgebungen von einem oder mehreren Aspekten profitieren. Beispielsweise ist ein zum Speichern und/oder Ausführen von Programmcode geeignetes Datenverarbeitungssystem verwendbar, das mindestens zwei Prozessoren aufweist, die direkt oder indirekt über einen Systembus mit Speicherelementen verbunden sind. Zu den Speicherelementen können ein lokaler Speicher, der während der eigentlichen Ausführung des Programmcodes genutzt wird, ein Massenspeicher und ein Cache-Zwischenspeicher gehören, der eine zeitweilige Speichermöglichkeit für mindestens einen Teil des Programmcodes bereitstellt, um während der Ausführung die Anzahl der Codeabrufe aus dem Massenspeicher zu verringern.
  • Eingabe-/Ausgabe-Einheiten bzw. E/A-Einheiten (einschließlich und ohne darauf beschränkt zu sein, von Tastaturen, Anzeigeeinheiten, Zeigeeinheiten, DASD, Band, CDs, DVDs, USB-Sticks und anderen Speichermedien usw.) können entweder direkt oder über zwischengeschaltete E/A-Steuereinheiten mit dem System verbunden sein. Netzwerkadapter können ebenfalls mit dem System verbunden sein, sodass das Datenverarbeitungssystem über zwischengeschaltete private oder öffentliche Netzwerke mit anderen Datenverarbeitungssystemen, entfernt angeordneten Druckern oder Speichereinheiten verbunden werden kann. Modems, Kabelmodems und Ethernet-Karten sind nur einige der erhältlichen Arten von Netzwerkadaptern.
  • Unter Bezugnahme auf 13 sind dort charakteristische Komponenten eines Host-Computersystems 5000 dargestellt, die einen oder mehrere Aspekte realisieren. Der charakteristische Host-Computer 5000 weist eine oder mehrere CPUs 5001 auf, die in Verbindung mit einem Computerspeicher (d. h. Hauptspeicher) 5002 stehen, sowie E/A-Schnittstellen zu Speichermedieneinheiten 5011 und Netzwerken 5010 zum Datenaustausch mit anderen Computern oder SANs und dergleichen. Die CPU 5001 ist zu einer Architektur konform, die einen angelegten Anweisungssatz und eine angelegte Funktionalität aufweist. Die CPU 5001 kann eine dynamische Adressumsetzung (Dynamic Address Translation, DAT) 5003 zum Umwandeln von Programmadressen (virtuellen Adressen) in reale Speicheradressen aufweisen. Eine DAT weist normalerweise einen Adressumsetzpuffer (Translation Lookaside Buffer, TLB) 5007 zum Zwischenspeichern von Umsetzungen auf, sodass spätere Zugriffe auf den Block des Computerspeichers 5002 keine Verzögerung der Adressumsetzung erfordern. Normalerweise wird ein Cache-Zwischenspeicher 5009 zwischen dem Computerspeicher 5002 und dem Prozessor 5001 genutzt. Der Cache-Zwischenspeicher 5009 kann hierarchisch sein und einen großen Cache-Zwischenspeicher aufweisen, der mehr als einer CPU zur Verfügung steht, und kleinere, schnellere Cache-Zwischenspeicher (einer unteren Ebene) zwischen dem großen Cache-Zwischenspeicher und jeder CPU. Bei einigen Realisierungsformen sind Cache-Zwischenspeicher unterer Ebenen aufgeteilt, um getrennte Cache-Zwischenspeicher unterer Ebenen zum Abrufen von Anweisungen und für Datenzugriffe bereitzustellen. Bei einer Ausführungsform wird eine Anweisung durch eine Anweisungsabrufeinheit 5004 über einen Cache-Zwischenspeicher 5009 aus dem Computerspeicher 5002 abgerufen. Die Anweisung wird in einer Anweisungsdecodiereinheit decodiert und einer Anweisungsausführungseinheit bzw. Anweisungsausführungseinheiten 5008 zugeleitet (bei einigen Ausführungsformen zusammen mit anderen Anweisungen). Normalerweise werden mehrere Ausführungseinheiten 5008 genutzt, zum Beispiel eine Arithmetikausführungseinheit, eine Gleitkommaausführungseinheit und eine Verzweigungsanweisungs-Ausführungseinheit. Die Anweisung wird durch die Ausführungseinheit ausgeführt, indem je nach Bedarf auf Operanden in Registern oder im Speicher zugegriffen wird, die bzw. der in der Anweisung angegeben sind bzw. ist. Wenn auf einen Operanden aus dem Computerspeicher 5002 zugegriffen (geladen oder gespeichert) werden muss, verarbeitet normalerweise eine Lade-/Speicherungseinheit 5005 den Zugriff unter der Steuerung der Anweisung, die gegenwärtig ausgeführt wird. Anweisungen können in Hardwareschaltungen oder in internem Mikrocode (Firmware) oder durch eine Kombination aus beidem ausgeführt werden.
  • Wie erwähnt weist ein Computersystem Informationen im lokalen Speicher (bzw. Hauptspeicher) sowie das Adressieren, den Schutz und das Aufzeichnen von Verweisen und Änderungen auf. Zu einigen Aspekten des Adressierens gehören das Format von Adressen, das Konzept von Adressräumen, die verschiedenen Arten von Adressen und die Art und Weise, in der eine Adressenart in eine andere Adressenart umgesetzt wird. Einige Hauptspeicherarten weisen permanent zugewiesene Speicherpositionen auf. Der Hauptspeicher stellt dem System einen direkt adressierbaren Schnellzugriffs-Datenspeicher bereit. Sowohl Daten als auch Programme müssen (von Eingabeeinheiten) in den Hauptspeicher geladen werden, bevor sie verarbeitet werden können.
  • Der Hauptspeicher kann einen oder mehrere kleinere Schnellzugriffs-Pufferspeicher aufweisen, die manchmal als Cache-Zwischenspeicher bezeichnet werden. Ein Cache-Zwischenspeicher gehört normalerweise physisch zu einer CPU oder zu einem E/A-Prozessor. Die Auswirkungen, mit Ausnahme auf das Betriebsverhalten, des physischen Aufbaus und der Verwendung getrennter Speichermedien sind im Allgemeinen durch das Programm nicht wahrnehmbar.
  • Getrennte Cache-Zwischenspeicher können für Anweisungen und für Datenoperanden vorgehalten sein. Informationen innerhalb eines Cache-Zwischenspeichers werden in zusammenhängenden Bytes in einer integralen Grenze gehalten, die als „Cache-Block” oder „Cache-Zeile” (oder in der Kurzform als „Zeile”) bezeichnet werden. Ein Modell kann eine „EXTRACT CACHE ATTRIBUTE”-Anweisung bereitstellen, die die Größe einer Cache-Zeile in Bytes zurückgibt. Ein Modell kann außerdem eine „PREFETCH DATA”- und „PREFETCH DATA RELATIVE LONG”-Anweisung bereitstellen, die sich auf das Vorab-Abrufen von Speicher in den Daten- oder Anweisungs-Cache-Zwischenspeicher oder auf das Freigeben von Daten im Cache-Zwischenspeicher auswirken.
  • Der Speicher wird als lange horizontale Zeichenfolge von Bits betrachtet. Bei den meisten Operationen finden Zugriffe auf den Speicher in einer Reihenfolge von links nach rechts statt. Die Zeichenfolge von Bits ist in Einheiten von acht Bits unterteilt. Eine Acht-Bit-Einheit wird als „Byte” bezeichnet und bildet den grundlegenden Baustein aller Informationsformate. Jede Byteposition im Speicher ist durch eine eindeutige, nicht negative Ganzzahl gekennzeichnet, bei der es sich um die Adresse dieser Byteposition oder einfach ausgedrückt um die Byteadresse handelt. Benachbarte Bytepositionen weisen fortlaufende Adressen auf, die auf der linken Seite mit 0 beginnen und von links nach rechts fortgeschrieben werden. Adressen sind vorzeichenlose binäre Ganzzahlen von 24, 31 oder 64 Bit.
  • Informationen werden zwischen dem Speicher und einer CPU oder einem Kanal-Teilsystem jeweils als ein Byte oder als Gruppe von Bytes übertragen. Sofern nicht anderweitig angegeben, ist zum Beispiel bei der z/Architecture® eine Gruppe von Bytes im Speicher durch das am weitesten links stehende Byte der Gruppe adressiert. Die Anzahl von Bytes in der Gruppe ist entweder stillschweigend eingeschlossen oder durch die auszuführende Operation ausdrücklich angegeben. Bei Verwendung in einer CPU-Operation wird eine Gruppe von Bytes als „Feld” bezeichnet. Innerhalb jeder Gruppe von Bytes sind Bits zum Beispiel bei der z/Architecture® von links nach rechts nummeriert. Bei der z/Architecture® werden die am weitesten links stehenden Bits manchmal als „höchstwertige” Bits und die am weitesten rechts stehenden Bits als „niedrigstwertige” Bits bezeichnet. Bitnummern sind jedoch keine Speicheradressen. Es können nur Bytes adressiert werden. Um Operationen an einzelnen Bits eines Bytes im Speicher durchzuführen, muss auf das gesamte Byte zugegriffen werden. Die Bits in einem Byte sind von links nach rechts (z. B. bei der z/Architecture®) von 0 bis 7 nummeriert. Die Bits in einer Adresse können bei 24-Bit-Adressen von 8 bis 31 bzw. von 40 bis 63 oder bei 31-Bit-Adressen von 1 bis 31 oder von 33 bis 63 nummeriert sein; bei 64 Bit-Adressen sind sie von 0 bis 63 nummeriert. Innerhalb beliebiger anderer Formate fester Länge mit mehreren Bytes sind die Bits, aus denen das Format besteht, mit 0 beginnend fortlaufend nummeriert. Zum Zweck der Fehlererkennung und vorzugsweise zur Korrektur können ein oder mehrere Prüfbits zusammen mit jedem Byte oder mit einer Gruppe von Bytes übertragen werden. Derartige Prüfbits werden durch die Maschine automatisch erzeugt und können durch das Programm nicht direkt gesteuert werden. Speicherkapazitäten werden in einer Anzahl von Bytes ausgedrückt. Wenn die Länge eines Speicheroperandenfeldes stillschweigend im Operationscode einer Anweisung eingeschlossen ist, wird angenommen, dass das Feld eine feste Länge aufweist, die ein, zwei, vier, acht oder 16 Bytes betragen kann. Bei einigen Anweisungen können größere Felder stillschweigend eingeschlossen sein. Wenn die Länge eines Speicheroperandenfeldes nicht stillschweigend eingeschlossen, sondern ausdrücklich angegeben ist, wird angenommen, dass das Feld eine variable Länge aufweist. Operanden mit variabler Länge können in der Länge in Schritten von einem Byte (oder bei einigen Anweisungen in Mehrfachen von zwei Bytes oder anderen Mehrfachen) variieren. Wenn Informationen im Speicher abgelegt werden, werden nur die Inhalte derjenigen Bytepositionen ersetzt, die in dem bezeichneten Feld enthalten sind, selbst wenn die Breite des physischen Pfades zum Speicher größer als die Länge des Feldes sein kann, das gegenwärtig gespeichert wird.
  • Bestimmte Informationseinheiten müssen sich in einer integralen Grenze im Speicher befinden. Eine Grenze wird bei einer Informationseinheit als „integral” bezeichnet, wenn ihre Speicheradresse ein Mehrfaches der Länge der Einheit in Bytes beträgt. Bei einer integralen Grenze tragen Felder mit 2, 4, 8 und 16 Bytes spezielle Bezeichnungen. Ein Halbwort ist eine Gruppe aus zwei aufeinanderfolgenden Bytes in einer Zwei-Byte-Grenze und bildet den grundlegenden Baustein von Anweisungen. Ein Wort ist eine Gruppe aus vier aufeinanderfolgenden Bytes in einer Vier-Byte-Grenze. Ein Doppelwort ist eine Gruppe aus acht aufeinanderfolgenden Bytes in einer Acht-Byte-Grenze. Ein Vierfachwort ist eine Gruppe aus 16 aufeinanderfolgenden Bytes in einer 16-Byte-Grenze. Wenn Speicheradressen Halbwörter, Wörter, Doppelwörter und Vierfachwörter bezeichnen, enthält die Binärdarstellung der Adresse ein, zwei, drei bzw. vier am weitesten rechts stehende Nullbits. Anweisungen müssen sich in integralen Zwei-Byte-Grenzen befinden. Die Speicheroperanden der meisten Anweisungen weisen keine Anforderungen hinsichtlich der Ausrichtung an Grenzen auf.
  • Bei Einheiten, die getrennte Cache-Zwischenspeicher für Anweisungen und Datenoperanden realisieren, kann eine erhebliche Verzögerung festzustellen sein, wenn das Programm in eine Cache-Zeile speichert, von der anschließend Anweisungen abgerufen werden, unabhängig davon, ob der Speicherungsvorgang die Anweisungen verändert, die anschließend abgerufen werden.
  • Bei einer Ausführungsform kann die Erfindung durch Software (die manchmal als „lizenzierter interner Code”, „Firmware”, „Mikrocode” „Millicode”, „Pikocode” und dergleichen bezeichnet wird, von denen beliebige einem oder mehreren Aspekten der vorliegenden Erfindung entsprechen würden) praktisch umgesetzt sein. Unter Bezugnahme auf 8 kann durch den Prozessor 5001 des Host-Systems 5000 auf Software-Programmcode, der einen oder mehrere Aspekte verkörpert, von den Langzeit-Speichermedieneinheiten 5011 wie zum Beispiel von einem CD-ROM-Laufwerk, Bandlaufwerk oder Festplattenlaufwerk zugegriffen werden. Der Software-Programmcode kann auf einem beliebigen einer Vielfalt von bekannten Medien wie zum Beispiel auf einer Diskette, einem Festplattenlaufwerk oder einer CD-ROM verkörpert sein, die für die Verwendung bei einem Datenverarbeitungssystem bekannt sind. Der Code kann auf derartigen Medien verteilt sein, oder er kann aus dem Computerspeicher 5002 auf Benutzer oder aus dem Speicher eines Computersystems über ein Netzwerk 5010 auf andere Computersysteme verteilt werden, um durch Benutzer derartiger anderer Systeme verwendet zu werden.
  • Der Software-Programmcode weist ein Betriebssystem auf, das die Funktion und Interaktion der verschiedenen Computerkomponenten und eines oder mehrerer Anwendungsprogramme steuert. Der Programmcode wird normalerweise von der Speichermedieneinheit 5011 auf den relativ schnelleren Computerspeicher 5002 ausgelagert, wo er zur Verarbeitung durch den Prozessor 5001 zur Verfügung steht.
  • Die Techniken und Verfahren zum Verkörpern von Software-Programmcode im Speicher und auf physischen Medien und/oder zum Verteilen von Softwarecode über Netzwerke sind allgemein bekannt und werden hierin nicht weiter erläutert. Programmcode wird, wenn er auf einem materiellen Medium (zu denen, ohne darauf beschränkt zu sein, elektronische Speichermodule (RAM), Flash-Speicher, Compact Discs (CDs), DVDs, Magnetband und dergleichen gehören) oftmals als „Computerprogrammprodukt” bezeichnet. Das Medium des Computerprogrammprodukts kann normalerweise durch eine Verarbeitungsschaltung, vorzugsweise in einem Computersystem, zur Ausführung durch die Verarbeitungsschaltung gelesen werden.
  • 14 veranschaulicht ein charakteristisches Workstation- oder Server-Hardwaresystem, in dem ein oder mehrere Aspekte praktisch umgesetzt sein können. Das System 5020 aus 14 weist ein charakteristisches Basis-Computersystem 5021 wie zum Beispiel einen Personal Computer, eine Workstation oder einen Server einschließlich optionaler Peripherieeinheiten auf. Das Basis-Computersystem 5021 weist einen oder mehrere Prozessoren 5026 und einen Bus auf, der genutzt wird, um die Datenübertragung zwischen dem Prozessor bzw. den Prozessoren 5026 und den anderen Komponenten des Systems 5021 anhand bekannter Techniken zu vermitteln und zu aktivieren. Der Bus verbindet die Prozessoren 5026 mit einem Speicher 5025 und einem Langzeitspeicher 5027, zu dem beispielsweise ein Festplattenlaufwerk (einschließlich zum Beispiel eines beliebigen aus magnetischen Medien, CD, DVD und Flash-Speicher) oder ein Bandlaufwerk gehören können. Das System 5021 könnte außerdem einen Benutzerschnittstellenadapter aufweisen, der den Mikroprozessor 5026 über den Bus mit einer oder mehreren Schnittstelleneinheiten wie zum Beispiel mit einer Tastatur 5024, einer Maus 5023, einem Drucker/Scanner 5030 und/oder mit anderen Schnittstelleneinheiten verbindet, bei denen es sich um eine beliebige Benutzerschnittstelleneinheit wie zum Beispiel einen berührungsempfindlichen Bildschirm, ein Digital-Eingabe-Pad usw. handeln kann. Der Bus verbindet außerdem eine Anzeigeeinheit 5022 wie zum Beispiel einen LCD-Bildschirm oder -Monitor über einen Anzeigeadapter mit dem Mikroprozessor 5026.
  • Das System 5021 kann Daten mit anderen Computern oder Netzwerken aus Computern über einen Netzwerkadapter austauschen, der mit einem Netzwerk 5029 Daten austauschen kann 5028. Beispielhafte Netzwerkadapter sind Datenübertragungskanäle, Token Ring, Ethernet oder Modems. Alternativ kann das System 5021 unter Verwendung einer drahtlosen Schnittstelle wie zum Beispiel einer CDPD-Karte (CDPD = Cellular Digital Packet Data) Daten austauschen. Das System 5021 kann derartigen anderen Computern in einem Local Area Network (LAN) oder in einem Wide Area Network (WAN) zugeordnet sein, oder das System 5021 kann ein Client in einer Client/Server-Anordnung mit einem anderen Computer usw. sein. Alle diese Konfigurationen sowie die entsprechende Hardware und Software zur Datenübertragung sind in der Technik bekannt.
  • 15 veranschaulicht ein Datenverarbeitungsnetzwerk 5040, in dem ein oder mehrere Aspekte praktisch umgesetzt sein können. Das Datenverarbeitungsnetzwerk 5040 kann eine Vielzahl einzelner Netzwerke wie zum Beispiel ein drahtloses Netzwerk oder ein kabelgebundenes Netzwerk aufweisen, von denen jedes eine Vielzahl einzelner Workstations 5041, 5042, 5043, 5044 aufweisen kann. Darüber hinaus wird dem Fachmann klar sein, dass hierzu ein oder mehrere LANs gehören können, wobei ein LAN eine Vielzahl intelligenter Workstations aufweisen kann, die mit einem Host-Prozessor verbunden sind.
  • Unter fortgesetzter Bezugnahme auf 15 können die Netzwerke auch Großrechner oder Server wie zum Beispiel einen Gateway-Computer (Client-Server 5046) oder Anwendungsserver aufweisen (entfernt angeordneter Server 5048, der auf einen Datenspeicher zugreifen kann und auf den außerdem von einer Workstation 5045 direkt zugegriffen werden kann). Ein Gateway-Computer 5046 dient als Eintrittspunkt in jedes einzelne Netzwerk. Ein Gateway wird benötigt, wenn ein Vernetzungsprotokoll mit einem anderen verbunden werden soll. Das Gateway 5046 kann mithilfe einer Datenübertragungsverbindung vorzugsweise mit einem anderen Netzwerk (zum Beispiel mit dem Internet 5047) verbunden sein. Das Gateway 5046 kann unter Verwendung einer Datenübertragungsverbindung auch direkt mit einer oder mehreren Workstations 5041, 5042, 5043, 5044 verbunden sein. Der Gateway-Computer kann unter Nutzung eines Servers vom Typ IBM eServerTM System z® realisiert sein, der bei International Business Machines Corporation erhältlich ist.
  • Unter gleichzeitiger Bezugnahme auf 14 und 15 kann durch den Prozessor 5026 des Systems 5020 auf Software-Programmiercode, der einen oder mehrere Aspekte verkörpern kann, von den Langzeit-Speichermedieneinheiten 5027 wie zum Beispiel von einem CD-ROM-Laufwerk oder Festplattenlaufwerk zugegriffen werden. Der Software-Programmiercode kann auf einem beliebigen einer Vielfalt von bekannten Medien wie zum Beispiel auf einer Diskette, einem Festplattenlaufwerk oder einer CD-ROM verkörpert sein, die für die Verwendung bei einem Datenverarbeitungssystem bekannt sind. Der Code kann auf derartigen Medien verteilt sein, oder er kann aus dem Speicher auf die Benutzer 5050, 5051 oder aus dem Speicher eines Computersystems über ein Netzwerk auf andere Computersysteme verteilt werden, um durch Benutzer derartiger anderer Systeme verwendet zu werden.
  • Alternativ kann der Programmiercode im Speicher 5025 verkörpert sein, und durch den Prozessor 5026 kann unter Verwendung des Prozessorbusses darauf zugegriffen werden. Derartiger Software-Programmiercode weist ein Betriebssystem auf, das die Funktion und Interaktion der verschiedenen Computerkomponenten und eines oder mehrerer Anwendungsprogramme 5032 steuert. Der Programmcode wird normalerweise vom Speichermedium 5027 auf den schnellen Speicher 5025 ausgelagert, wo er zur Verarbeitung durch den Prozessor 5026 zur Verfügung steht. Die Techniken und Verfahren zum Verkörpern von Software-Programmiercode im Speicher und auf physischen Medien und/oder zum Verteilen von Softwarecode über Netzwerke sind allgemein bekannt und werden hierin nicht weiter erläutert. Programmcode wird, wenn er auf einem materiellen Medium (zu denen, ohne darauf beschränkt zu sein, elektronische Speichermodule (RAM), Flash-Speicher, Compact Discs (CDs), DVDs, Magnetband und dergleichen gehören) oftmals als „Computerprogrammprodukt” bezeichnet. Das Medium des Computerprogrammprodukts kann normalerweise durch eine Verarbeitungsschaltung, vorzugsweise in einem Computersystem, zur Ausführung durch die Verarbeitungsschaltung gelesen werden.
  • Der Cache-Zwischenspeicher, der für den Prozessor am leichtesten verfügbar ist (normalerweise schneller und kleiner als andere Cache-Zwischenspeicher des Prozessors) ist der unterste Cache-Zwischenspeicher (L1-Cache-Zwischenspeicher bzw. Cache-Zwischenspeicher der Ebene eins) und der Hauptspeicher ist der Cache-Zwischenspeicher der höchsten Ebene (L3, sofern 3 Ebenen vorhanden sind). Der Cache-Zwischenspeicher der untersten Ebene ist oftmals in einen Anweisungs-Cache-Zwischenspeicher (Instruction Cache, I-Cache) unterteilt, der auszuführende Maschinenanweisungen enthält, und in einen Daten-Cache-Zwischenspeicher (Data Cache, D-Cache), der Datenoperanden enthält.
  • Unter Bezugnahme auf 16 ist dort eine beispielhafte Prozessorausführungsform des Prozessors 5026 abgebildet. Normalerweise werden eine oder mehrere Ebenen des Cache-Zwischenspeichers 5053 genutzt, um Speicherblöcke zu puffern und so das Betriebsverhalten des Prozessors zu verbessern. Der Cache-Zwischenspeicher 5053 ist ein schneller Puffer, der Cache-Zeilen von Speicherdaten enthält, die wahrscheinlich verwendet werden. Typische Cache-Zeilen sind Speicherdaten mit 64, 128 oder 256 Bytes. Getrennte Cache-Zwischenspeicher werden öfter zum Zwischenspeichern von Anweisungen als zum Zwischenspeichern von Daten genutzt. Die Kohärenz von Cache-Zwischenspeichern (Synchronisation zwischen Kopien von Zeilen im Speicher und den Cache-Zwischenspeichern) wird oftmals durch verschiedene Durchsuchungsalgorithmen („Snoop”-Algorithmen) bereitgestellt, die in der Technik allgemein bekannt sind. Der Hauptspeicher 5025 eines Prozessorsystems wird oftmals als „Cache-Zwischenspeicher” bezeichnet. In einem Prozessorsystem mit 4 Ebenen von Cache-Zwischenspeicher 5053 wird der Hauptspeicher 5025 manchmal als „Cache-Zwischenspeicher der Ebene 5 (L5-Cache Zwischenspeicher) bezeichnet, da er normalerweise schneller ist und nur einen Teil des nicht flüchtigen Speichers (DASD, Band usw.) enthält, der einem Computersystem zur Verfügung steht. Der Hauptspeicher 5025 dient zum „Zwischenspeichern” von Datenseiten, die durch das Betriebssystem im Hauptspeicher 5025 abgelegt und aus diesem ausgelagert werden.
  • Ein Programmzähler (Anweisungszähler 5061) überwacht die Adresse der aktuellen auszuführenden Anweisung. Ein Programmzähler in einem z/Architecture®-Prozessor ist 64 Bit breit und kann in der Breite auf 31 oder 24 Bit verkleinert werden, um frühere Grenzen der Adressierung zu unterstützen. Ein Programmzähler ist normalerweise in einem Programmstatuswort (Program Status Word, PSW) eines Computers verkörpert, sodass er bei einer Kontextumschaltung bestehen bleibt.
  • Daher kann ein in Abarbeitung befindliches Programm, das einen Programmzählerwert aufweist, zum Beispiel durch das Betriebssystem unterbrochen werden (Kontextumschaltung von der Programmumgebung zur Betriebssystemumgebung). Das PSW des Programms verwaltet einen Programmzählerwert, während das Programm nicht aktiv ist, und der Programmzähler (im PSW) des Betriebssystems wird verwendet, während das Betriebssystem ausgeführt wird. Normalerweise wird der Programmzähler um einen Betrag erhöht, der gleich der Anzahl von Bytes der aktuellen Anweisung ist. RISC-Anweisungen (RISC = Reduced Instruction Set Computing) weisen normalerweise eine feste Länge auf, während CISC-Anweisungen (CISC = Complex Instruction Set Computing) normalerweise eine variable Länge aufweisen. Anweisungen der IBM z/Architecture® sind CISC-Anweisungen mit einer Länge von 2, 4 oder 6 Bytes. Der Programmzähler 5061 wird zum Beispiel entweder durch eine Kontextumschaltoperation oder durch eine Verzweigung-eingeschlagen-Operation einer Verzweigungsanweisung geändert. Bei einer Kontextumschaltoperation wird der aktuelle Programmzählerwert zusammen mit anderen Zustandsinformationen über das gegenwärtig ausgeführte Programm (wie zum Beispiel Bedingungscodes) im Programmstatuswort gespeichert, und ein neuer Programmzählerwert wird geladen, der auf eine Anweisung eines auszuführenden neuen Programmmoduls zeigt. Eine Verzweigung-eingeschlagen-Operation wird durchgeführt, um dem Programm zu ermöglichen, Entscheidungen zu treffen oder innerhalb des Programms eine Schleife zu durchlaufen, indem das Ergebnis der Verzweigungsanweisung in den Programmzähler 5061 geladen wird.
  • Normalerweise wird eine Programmabrufeinheit 5055 genutzt, um im Auftrag des Prozessors 5026 Anweisungen abzurufen. Die Abrufeinheit ruft entweder „nächstfolgende Anweisungen”, Zielanweisungen von Verzweigung-eingeschlagen-Anweisungen oder erste Anweisungen eines Programms nach einer Kontextumschaltung ab. Moderne Anweisungsabrufeinheiten nutzen oftmals Vorababruf-Techniken, um auf der Grundlage der Wahrscheinlichkeit, dass die vorab abgerufenen Anweisungen verwendet werden könnten, Anweisungen auf Vermutungen beruhend abzurufen. Beispielsweise kann eine Abrufeinheit 16 Bytes einer Anweisung abrufen, die die nächstfolgende Anweisung aufweist, sowie weitere Bytes von weiteren nachfolgenden Anweisungen.
  • Die abgerufenen Anweisungen werden anschließend durch den Prozessor 5026 ausgeführt. Bei einer Ausführungsform werden die abgerufenen Anweisungen an eine Zuleitungseinheit 5056 der Abrufeinheit übergeben. Die Zuleitungseinheit decodiert die Anweisungen und leitet Informationen über die decodierten Anweisungen an entsprechende Einheiten 5057, 5058, 5060 weiter. Eine Ausführungseinheit 5057 empfängt normalerweise Informationen über decodierte Arithmetikanweisungen von der Anweisungsabrufeinheit 5055 und führt Arithmetikoperationen an Operanden anhand des Operationscodes der Anweisung durch. Operanden werden der Ausführungseinheit 5057 vorzugsweise entweder aus dem Speicher 5025, aus angelegten Registern 5059 oder aus einem unmittelbaren Feld der gegenwärtig ausgeführten Anweisung bereitgestellt. Ergebnisse der Ausführung werden, wenn sie gespeichert werden, entweder im Speicher 5025, in den Registern 5059 oder in anderer Maschinenhardware (wie zum Beispiel in den Steuerregistern, PSW-Registern und dergleichen) gespeichert.
  • Ein Prozessor 5026 enthält normalerweise eine oder mehrere Einheiten 5057, 5058, 5060 zum Ausführen der Funktion der Anweisung. Unter Bezugnahme auf 17A kann eine Ausführungseinheit 5057 über eine Schnittstellenlogik 5071 Daten mit angelegten allgemeinen Registern 5059, einer Decodier-/Zuleitungseinheit 5056, einer Lade-/Speicherungseinheit 5060 und anderen 5065 Prozessoreinheiten austauschen. Eine Ausführungseinheit 5057 kann mehrere Registerschaltungen 5067, 5068, 5069 nutzen, um Informationen zu speichern, an denen die Arithmetik-Logik-Einheit (Arithmetic Logic Unit, ALU) Operationen durchführt. Die ALU führt Arithmetikoperationen wie zum Beispiel Addieren, Subtrahieren, Multiplizieren und Dividieren sowie logische Funktionen wie zum Beispiel AND, OR und EXLUSIVE OR (XOR), Vertauschen und Verschieben durch. Vorzugsweise unterstützt die ALU spezialisierte Operationen, die von der Gestaltung der Schaltung abhängen. Andere Schaltungen können andere angelegte Einrichtungen 5072 bereitstellen, zu denen beispielsweise Bedingungscodes und Logik zur Unterstützung von Wiederherstellungen gehören. Normalerweise wird das Ergebnis einer ALU-Operation in einer Ausgaberegisterschaltung 5070 gespeichert, die das Ergebnis zu einer Vielfalt anderer Verarbeitungsfunktionen weiterleiten kann. Es gibt viele Anordnungen von Prozessoreinheiten, und die vorliegende Beschreibung ist lediglich dazu gedacht, ein allgemeines Verständnis einer Ausführungsform zu ermöglichen.
  • Eine ADD-Anweisung würde beispielsweise in einer Ausführungseinheit 5057 ausgeführt werden, die eine arithmetische und logische Funktionalität aufweist, während eine Gleitkommaanweisung zum Beispiel in einer Gleitkomma-Ausführungseinheit ausgeführt würde, die eine spezialisierte Gleitkommafähigkeit aufweist. Vorzugsweise führt eine Ausführungseinheit Operationen an Operanden durch, die durch eine Anweisung angegeben werden, indem an den Operanden eine mittels Operationscode definierte Funktion durchgeführt wird. Beispielsweise kann eine ADD-Anweisung durch die Ausführungseinheit 5057 an Operanden ausgeführt werden, die in zwei Registern 5059 vorgefunden werden, die durch Registerfelder der Anweisung angegeben sind.
  • Die Ausführungseinheit 5057 führt eine arithmetische Addition an zwei Operanden durch und speichert das Ergebnis in einem dritten Operanden, wobei der dritte Operand ein drittes Register oder eines der beiden Quellregister sein kann. Die Ausführungseinheit nutzt vorzugsweise eine Arithmetik-Logik-Einheit (ALU) 5066, die eine Vielfalt logischer Funktionen wie zum Beispiel Verschieben, Vertauschen, AND, OR und XOR sowie eine Vielfalt algebraischer Funktionen durchführen kann, zu denen Addieren, Subtrahieren, Multiplizieren und Dividieren gehören. Einige ALUs 5066 sind für Skalaroperationen und einige für Gleitkommaoperationen ausgelegt. Je nach Architektur können Daten im Big-Endian-Format (bei dem sich das niedrigstwertige Byte an der höchsten Byteadresse befindet) oder im Little-Endian-Format (bei dem sich das niedrigstwertige Bit an der niedrigsten Byteadresse befindet) vorliegen. Die IBM z/Architecture® weist das Big-Endian-Format auf. Je nach Architektur können vorzeichenbehaftete Felder als Vorzeichen und Größenordnung, Einerkomplement oder Zweierkomplement vorliegen. Eine Zahl in Form des Zweierkomplements ist in der Weise vorteilhaft, dass die ALU keine Subtraktionsfähigkeit bilden muss, da entweder ein negativer Wert oder ein positiver Wert im Zweierkomplement lediglich eine Addition innerhalb der ALU erfordert. Zahlen werden üblicherweise in Kurzform beschrieben, wobei ein 12-Bit-Feld eine Adresse eines Blocks mit 4.096 Bytes definiert, der üblicherweise zum Beispiel als 4-kByte-Block (kByte = Kilobyte) beschrieben wird.
  • Unter Bezugnahme auf 17B werden Verzweigungsanweisungsinformationen zum Ausführen einer Verzweigungsanweisung normalerweise an eine Verzweigungseinheit 5058 gesendet, die oftmals einen Verzweigungsvorhersagealgorithmus wie zum Beispiel eine Verzweigungsverlaufstabelle (Branch History Table, BHT) 5082 nutzt, um das Ergebnis der Verzweigung vorherzusagen, bevor andere bedingte Operationen abgeschlossen sind. Das Ziel der aktuellen Verzweigungsanweisung wird abgerufen und auf spekulativer Grundlage ausgeführt, bevor die bedingten Operationen abgeschlossen sind. Wenn die bedingten Operation abgeschlossen sind, werden die spekulativ ausgeführten Verzweigungsanweisungen auf der Grundlage der Bedingungen der bedingten Operation oder des vermuteten Ergebnisses entweder abgeschlossen oder verworfen. Eine typische Verzweigungsanweisung kann Bedingungscodes prüfen und zu einer Zieladresse verzweigen, wenn die Bedingungscodes die Verzweigungsanforderung der Verzweigungsanweisung erfüllen, eine Zieladresse kann auf der Grundlage mehrerer Zahlen einschließlich derjenigen berechnet werden, die zum Beispiel in Registerfeldern oder in einem unmittelbaren Feld der Anweisung vorgefunden wurden. Die Verzweigungseinheit 5058 kann eine ALU 5074 nutzen, die eine Vielzahl von Eingangsregisterschaltungen 5075, 5076, 5077 und eine Ausgangsregisterschaltung 5080 aufweist. Die Verzweigungseinheit 5058 kann zum Beispiel mit allgemeinen Registern 5059, mit der Decodier-Zuleitungseinheit 5056 oder mit anderen Schaltungen 5073 Daten austauschen,
  • Die Ausführung einer Gruppe von Anweisungen kann aus einer Vielfalt von Gründen unterbrochen werden, zu denen zum Beispiel eine durch ein Betriebssystem ausgelöste Kontextumschaltung gehört, ein Programm-Ausnahmefehler oder ein Fehler, der eine Kontextumschaltung verursacht, ein E/A-Unterbrechungssignal, das eine Kontextumschaltung oder eine Multithreading-Aktivität einer Vielzahl von Programmen verursacht (in einer Multithreading-Umgebung). Vorzugsweise speichert eine Kontextumschaltaktion Zustandsinformationen über ein gegenwärtig ausgeführtes Programm und lädt anschließend Zustandsinformationen über ein anderes Programm, das aufgerufen wird. Zustandsinformationen können zum Beispiel in Hardwareregistern oder im Speicher gespeichert werden.
  • Zustandsinformationen weisen vorzugsweise einen Programmzählerwert auf, der auf eine nächste auszuführende Anweisung zeigt, auf Bedingungscodes, auf Speicherumsetzungsinformationen und auf den Inhalt von angelegten Registern. Eine Kontextumschaltungsaktivität kann durch Hardwareschaltungen, Anwendungsprogramme, Betriebssystemprogramme oder Firmwarecode (Mikrocode, Pikocode, lizenzierter interner Code (LIC)) allein oder in Kombination ausgeführt werden.
  • Ein Prozessor greift anhand von Methoden, die in den Anweisungen definiert sind, auf Operanden zu. Die Anweisung kann einen unmittelbaren Operanden bereitstellen, indem ein Wert eines Teils der Anweisung verwendet wird, oder sie kann ein oder mehrere Registerfelder bereitstellen, die ausdrücklich auf entweder Mehrzweckregister oder Spezialregister (zum Beispiel Gleitkommaregister) zeigen. Die Anweisung kann stillschweigend eingeschlossene Register nutzen, die durch ein Operationscodefeld als Operanden gekennzeichnet sind. Die Anweisung kann Speicherpositionen für Operanden nutzen. Eine Speicherposition eines Operanden kann durch ein Register, durch ein unmittelbares Feld oder durch eine Kombination aus Registern und unmittelbarem Feld, wie etwa durch die Long-Displacement-Facility der z/Architecture® beispielhaft bereitgestellt sein, bei der eine Anweisung ein Basisregister, ein Indexregister und ein Direktfeld (Verschiebungsfeld) definiert, die zusammen hinzugefügt werden, um zum Beispiel die Adresse des Operanden im Speicher bereitzustellen. Der hierin verwendete Begriff „Position” schließt normalerweise stillschweigend eine Position im Hauptspeicher ein, sofern nicht anderweitig angegeben.
  • Unter Bezugnahme auf 17C greift ein Prozessor unter Verwendung einer Lade-/Speicherungseinheit 5060 auf einen Speicher zu. Die Lade-/Speicherungseinheit 5060 kann eine Ladeoperation durchführen, indem sie die Adresse des Zieloperanden in einem Speicher 5053 empfängt und den Operanden in ein Register 5059 oder an einer anderen Position des Speichers 5053 lädt, oder sie kann eine Speicherungsoperation durchführen, indem sie die Adresse des Zieloperanden im Speicher 5053 empfängt und Daten an der Position des Zieloperanden 5053 speichert, die sie von einem Register 5059 oder von einer anderen Position des Speichers 5053 empfangen hat. Die Lade-/Speicherungseinheit 5060 kann spekulativ arbeiten, und sie kann in einer Abfolge auf den Speicher zugreifen, die in Bezug auf die Abfolge der Anweisungen außerhalb der Reihenfolge liegt, aber die Lade-/Speicherungseinheit 5060 muss für Programme den Eindruck aufrechterhalten, dass Anweisungen innerhalb der Reihenfolge ausgeführt wurden. Eine Lade-/Speicherungseinheit 5060 kann mit allgemeinen Registern 5059, der Decodier-/Zuleitungseinheit 5056, der Cache-Zwischenspeicher-/Speicherschnittstelle 5053 oder anderen Elementen 5083 Daten austauschen und weist verschiedene Registerschaltungen, ALUs 5085 und einer Steuerlogik (Control Logic, CTL) 5090 auf, um Speicheradressen zu berechnen und die Reihenfolgeplanung der Pipeline bereitzustellen, sodass die Reihenfolge der Operationen eingehalten wird. Einige Operationen können außerhalb der Reihenfolge liegen, aber die Lade-/Speicherungseinheit stellt eine Funktionalität bereit, um für das Programm den Eindruck zu erzeugen, dass die außerhalb der Reihenfolge liegenden Operationen in der Reihenfolge ausgeführt wurden, wie in der Technik allgemein bekannt ist.
  • Vorzugsweise werden Adressen, die ein Anwendungsprogramm „sieht”, oftmals als „virtuelle Adressen” bezeichnet. Virtuelle Adressen werden manchmal als „logische Adressen” und „effektive Adressen” bezeichnet. Diese virtuellen Adressen sind in der Weise virtuell, dass sie durch eine aus einer Vielfalt von Technologien zur dynamischen Adressumsetzung (DAT) auf eine physische Speicherposition umgeleitet werden, einschließlich, ohne darauf beschränkt zu sein, des Voranstellens eines Offset-Wertes vor eine virtuelle Adresse, des Umsetzens der virtuellen Adressen über eine oder mehrere Umsetzungstabellen, wobei die Umsetzungstabellen vorzugsweise mindestens eine Segmenttabelle und eine Seitentabelle allein oder in Kombination aufweisen, wobei die Segmenttabelle einen Eintrag aufweist, der auf die Seitentabelle zeigt. Bei der z/Architecture® wird eine Umsetzungshierarchie bereitgestellt, einschließlich einer ersten Tabelle einer Region, einer zweiten Tabelle einer Region, einer dritten Tabelle einer Region, einer Segmenttabelle und einer optionalen Seitentabelle. Das Betriebsverhalten der Adressumsetzung wird oftmals durch Nutzung eines Adressumsetzpuffers (TLB) verbessert, der Einträge aufweist, die eine virtuelle Adresse einer zugehörigen physischen Speicherposition zuordnen. Die Einträge werden erzeugt, wenn die DAT eine virtuelle Adresse unter Verwendung der Umsetzungstabellen umsetzt. Die nachfolgende Verwendung der virtuellen Adresse kann dann den Eintrag des schnelleren TLB anstelle der langsamen aufeinanderfolgenden Zugriffe auf Umsetzungstabellen nutzen. Der TLB-Inhalt kann durch eine Vielfalt von Ersetzungsalgorithmen einschließlich LRU (Least Recently Used, am längsten nicht verwendet) verwaltet werden
  • Wenn der Prozessor ein Prozessor eines Mehrprozessorsystems ist, ist jeder Prozessor dafür zuständig, gemeinsam genutzte Ressourcen wie zum Beispiel E/A, Cache-Zwischenspeicher, TLBs und Speicher aus Kohärenzgründen gesperrt zu halten. Normalerweise werden zur Verwaltung der Kohärenz von Cache-Zwischenspeichern Durchsuchungstechnologien („Snoop”-Technologien) genutzt. In einer Durchsuchungsumgebung kann jede Cache-Zeile als in einem beliebigen aus einem gemeinsam genutzten Zustand, einem ausschließlichen Zustand, einem geänderten Zustand, einem ungültigen Zustand und dergleichen markiert werden, um die gemeinsame Nutzung zu erleichtern.
  • E/A-Einheiten 5054 (16) stellen dem Prozessor Mittel bereit, um Peripherieeinheiten anzuhängen, zu denen Band, Platte, Drucker, Anzeigeeinheiten und Netzwerke gehören. E/A-Einheiten werden dem Computerprogramm oftmals durch Softwaretreiber bereitgestellt. Bei Großrechnern wie zum Beispiel dem System z® von IBM® sind Kanaladapter und Adapter offener Systeme E/A-Einheiten des Großrechners, die den Datenaustausch zwischen dem Betriebssystem und Peripherieeinheiten bereitstellen.
  • Ferner können andere Arten von Datenverarbeitungsumgebungen von einem oder mehreren Aspekten profitieren. Beispielsweise kann eine Umgebung einen Emulator (z. B. Software- oder andere Emulationsmechanismen) aufweisen, in dem eine bestimmte Architektur (einschließlich beispielsweise der Anweisungsausführung, von angelegten Funktionen wie zum Beispiel Adressumsetzung, und von angelegten Registern) oder eine Teilmenge davon emuliert wird (z. B. auf einem nativen (systemeigenen) Computersystem, das einen Prozessor und einen Speicher aufweist). In einer derartigen Umgebung können eine oder mehrere Emulationsfunktionen des Emulators einen oder mehrere Aspekte realisieren, selbst wenn ein Computer, der den Emulator ausführt, eine andere Architektur als die Fähigkeiten aufweist, die gegenwärtig emuliert werden. Zum Beispiel wird im Emulationsmodus die betreffende Anweisung oder Operation decodiert, die gegenwärtig emuliert wird, und eine entsprechende Emulationsfunktion wird aufgebaut, um die einzelne Anweisung oder Operation zu realisieren.
  • Bei einer Emulationsumgebung weist ein Host-Computer zum Beispiel einen Speicher auf, um Anweisungen und Daten zu speichern; eine Anweisungsabrufeinheit, um Anweisungen aus dem Speicher abzurufen und wahlweise eine lokale Pufferung für die abgerufenen Anweisung bereitzustellen; eine Anweisungsdecodiereinheit, um die abgerufenen Anweisungen zu empfangen und die Art von Anweisungen zu ermitteln, die abgerufen wurden; und eine Anweisungsausführungseinheit, um die Anweisungen auszuführen. Zur Ausführung können das Laden von Daten aus dem Speicher in ein Register; das Speichern von Daten aus einem Register zurück in den Speicher; oder das Durchführen einer bestimmten Art von Arithmetik- oder Logikoperation gehören, die durch die Decodiereinheit ermittelt wurde. Bei einem Beispiel ist jede Einheit in Software realisiert. Beispielsweise sind die durch die Einheiten durchgeführten Operationen als eine oder mehrere Unterroutinen innerhalb der Emulatorsoftware realisiert.
  • Bei einem Großrechner werden von Programmierern, bei denen es sich heutzutage normalerweise um „C”-Programmierer handelt, angelegte Maschinenanweisungen oftmals mithilfe einer Compileranwendung verwendet. Diese auf dem Speichermedium gespeicherten Anweisungen können nativ auf einem IBM® Server mit z/Architecture® oder alternativ auf Maschinen ausgeführt werden, auf denen andere Architekturen ausgeführt werden. Sie können auf bestehenden und zukünftigen IBM® Großrechnerservern und auf anderen Maschinen von IBM® emuliert werden (z. B. auf Power-Systems-Servern und Servern des Typs System x®). Sie können auf Maschinen ausgeführt werden, auf denen Linux ausgeführt wird, wobei bei einer großen Vielfalt von Maschinen Hardware verwendet werden kann, die von IBM®, Intel®, AMDTM und anderen hergestellt wurde. Außer der Ausführung auf dieser Hardware unter einer z/Architecture® können Linux sowie Maschinen verwendet werden, die die Emulation durch Hercules, UMX oder FSI (Fundamental Software, Inc) verwenden, bei denen die Ausführung im Allgemeinen in einem Emulationsmodus stattfindet. Im Emulationsmodus wird durch einen nativen Prozessor Emulationssoftware ausgeführt, um die Architektur eines emulierten Prozessors zu emulieren.
  • Der native Prozessor führt normalerweise Emulationssoftware aus, die 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 Anweisungen der emulierten Prozessorstruktur zuständig. Die Emulationssoftware verwaltet einen Zähler für das emulierte Programm, um Anweisungsgrenzen zu überwachen. Die Emulationssoftware kann jeweils eine oder mehrere emulierte Maschinenanweisungen abrufen und die eine oder mehreren emulierten Maschinenanweisungen in eine entsprechende Gruppe nativer Maschinenanweisungen zur Ausführung durch den nativen Prozessor umwandeln. Diese umgewandelten Anweisungen können zwischengespeichert werden, sodass eine schnellere Umwandlung erreicht werden kann. Ungeachtet dessen muss die Emulationssoftware die Architekturregeln der emulierten Prozessorstruktur einhalten, um zu gewährleisten, dass Betriebssysteme und für den emulierten Prozessor geschriebene Anwendungen ordnungsgemäß arbeiten. Des Weiteren muss die Emulationssoftware Ressourcen bereitstellen, die durch die emulierte Prozessorarchitektur festgelegt sind, zu denen, ohne darauf beschränkt zu sein, Steuerregister, Mehrzweckregister, Gleitkommaregister, eine dynamische Adressumsetzungsfunktion einschließlich von beispielsweise Segmenttabellen und Seitentabellen, Tageszeitgeber und angelegte Schnittstellen zu E/A-Subsystemen gehören, sodass ein Betriebssystem oder ein Anwendungsprogramm, das zur Ausführung auf den emulierten Prozessor entwickelt wurde, auf dem nativen Prozessor ausgeführt werden kann, der die Emulationssoftware aufweist.
  • Eine bestimmte, gegenwärtig emulierte Anweisung wird decodiert, und eine Unterroutine wird aufgerufen, um die Funktion der einzelnen Anweisung durchzuführen. Eine Emulationssoftwarefunktion, die eine Funktion eines emulierten Prozessors emuliert, ist zum Beispiel in einer „C”-Unterroutine bzw. in einem „C” Treiber oder in einer anderen Methode zum Bereitstellen eines Treibers für die betreffende Hardware realisiert, was in den Rahmen der Fertigkeiten eines Fachmanns fällt, nachdem er die Beschreibung der bevorzugten Ausführungsform verstanden hat. Verschiedene Patente zur Software- und Hardwareemulation, zu denen, ohne darauf beschränkt zu sein, die US-Patentschrift Nr. 5 551 013 mit dem Titel „Multiprocessor for Hardware Emulation” von Beausoleil et al.; und die US-Patentschrift Nr. 6 009 261 mit dem Titel „”Preprocessing of Stored Target Routines for Emulating Incompatible Instructions on a Target Prozessor” von Scalzi et al.; und die US-Patentschrift Nr. 5 574 873 mit dem Titel „Decoding Guest Instruction to Directly Access Emulation Routines that Emulate the Guest Instructions” von Davidian et al.; und die US-Patentschrift Nr. 6 308 255 mit dem Titel „Symmetrical Multiprocessing Bus and Chipset Used for Coprocessor Support Allowing Non-Native Code to Run in a System” von Gorishek et al.; und die US-Patentschrift Nr. 6 463 582 mit dem Titel „Dynamic Optimizing Object Code Translator for Architecture Emulation and Dynamic Optimizing Object Code Translation Method” von Lethin et al.; und die US-Patentschrift Nr. 5 790 825 mit dem Titel „Emulating Guest Instructions on a Host Computer Through Dynamic Recompilation of Host Instructions” von Eric Traut, von denen jede durch Bezugnahme in ihrer Gesamtheit einen Bestandteil des vorliegenden Dokuments bildet; und viele andere gehören, veranschaulichen eine Vielfalt bekannter Wege, um die Emulation eines Anweisungsformates zu erreichen, das für eine andere Maschine als die Zielmaschine angelegt wurde, die dem Fachmann zur Verfügung stehen.
  • In 18 ist ein Beispiel eines emulierten Host-Computersystems 5092 bereitgestellt, das ein Host-Computersystem 5000' einer Host-Architektur emuliert. Bei dem emulierten Host-Computersystem 5092 ist der Host-Prozessor (CPU) 5091 ein emulierter Host-Prozessor (bzw. virtueller Host-Prozessor) und weist einen Emulationsprozessor 5093 mit einer anderen Architektur des nativen Anweisungssatzes als der des Prozessors 5091 des Host-Computers 5000' auf. Das emulierte Host-Computersystem 5092 weist einen Speicher 5094 auf, der für den Emulationsprozessor 5093 zugänglich ist. Bei der beispielhaften Ausführungsform ist der Speicher 5094 in einen Teil für Host-Computerspeicher 5096 und in einen Teil für Emulationsroutinen 5097 unterteilt. Der Host-Computerspeicher 5096 steht entsprechend der Architektur des Host-Computers Programmen des emulierten Host-Computers 5092 zur Verfügung. Der Emulationsprozessor 5093 führt native Anweisungen eines angelegten Anweisungssatzes einer Architektur aus, die sich von der des emulierten Prozessors 5091 unterscheidet, wobei die nativen Anweisungen von einem Speicher 5097 für emulierte Routinen empfangen werden, und kann von einem Programm im Host-Computerspeicher 5096 zwecks Ausführung auf eine Host-Anweisung zugreifen, indem eine oder mehrere Anweisungen genutzt werden, die in einer Reihenfolge- und Zugriffs-/Decodierroutine empfangen wurden, die die Host-Anweisungen decodieren kann, auf die zugegriffen wurde, um eine Ausführungsroutine für native Anweisungen zum Emulieren der Funktion der Host-Anweisung zu ermitteln, auf die zugegriffen wurde. Andere Einrichtungen, die für die Architektur des Host-Computersystems 5000' definiert sind, können durch Routinen für angelegte Einrichtungen emuliert werden, zu denen Einrichtungen wie zum Beispiel Mehrzweckregister, Steuerregister, Unterstützung für die dynamische Adressumsetzung und E/A-Subsysteme sowie Prozessor-Cache-Zwischenspeicher gehören. Die Emulationsroutinen können auch von Funktionen profitieren, die im Emulationsprozessor 5093 zur Verfügung stehen (wie zum Beispiel allgemeine Register und die dynamische Umsetzung virtueller Adressen), um das Betriebsverhalten der Emulationsroutinen zu verbessern. Spezielle Hardware und ausgelagerte Module können ebenso bereitgestellt sein, um den Prozessor 5093 beim Emulieren der Funktion des Host-Computers 5000' zu unterstützen.
  • Die hierin verwendete Terminologie dient ausschließlich zur Beschreibung bestimmter Ausführungsformen und ist nicht als Einschränkung der Erfindung gedacht. Die hierin verwendeten Einzahlformen „ein/eine” und „der/die/das” schließen auch die Pluralformen ein, sofern dies im Kontext nicht ausdrücklich anderweitig angegeben ist. Es versteht sich des Weiteren, dass die Begriffe „weist auf” bzw. „aufweisen/aufweisend” bei Verwendung in dieser Beschreibung das Vorhandensein angegebener Merkmale, Ganzzahlen, Schritte, Operationen, Elemente und/oder Komponenten bezeichnen, jedoch das Vorhandensein oder die Hinzufügung eines bzw. einer oder mehrerer anderer Merkmale, Ganzzahlen, Schritte, Operationen, Elemente, Komponenten und/oder Gruppen davon nicht ausschließen.
  • Die entsprechenden Strukturen, Materialien, Aktionen und Äquivalente aller Mittel bzw. Schritt-plus-Funktion-Elemente (Step plus Function Elements) in den folgenden Ansprüchen, sofern zutreffend, sollen alle Strukturen, Materialien oder Aktionen zur Ausführung der Funktion in Verbindung mit anderen ausdrücklich beanspruchten Elementen mit einschließen. Die Beschreibung eines oder mehrerer Aspekte soll der Veranschaulichung und Beschreibung dienen, ist jedoch nicht als vollständig oder die Erfindung in der offenbarten Form beschränkend gedacht. Für den Fachmann sind viele Modifikationen und Variationen denkbar, ohne dass diese eine Abweichung vom Schutzbereich und Grundgedanken der Erfindung darstellen würden. Die Ausführungsform wurde ausgewählt und beschrieben, um die Grundgedanken und die praktische Anwendung der Erfindung auf bestmögliche Weise zu erklären und anderen Fachleuten ein Verständnis dafür zu ermöglichen, dass verschiedene Ausführungsformen der Erfindung mit verschiedenen Modifikationen denkbar sind, die sich für die jeweils beabsichtigte Verwendung eignen.
  • ZITATE ENTHALTEN IN DER BESCHREIBUNG
  • Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
  • Zitierte Patentliteratur
    • US 2013/0086361 [0046]
    • US 5551013 [0172]
    • US 6009261 [0172]
    • US 5574873 [0172]
    • US 6308255 [0172]
    • US 6463582 [0172]
    • US 5790825 [0172]
  • Zitierte Nicht-Patentliteratur
    • „z/Architecture Principles of Operation”, IBM-Veröffentlichungsnr. SA22-7832-09, zehnte Ausgabe, September 2012 [0031]
    • „Power ISA Version 2.07”, International Business Machines Corporation, 3. Mai 2013 [0032]

Claims (12)

  1. Computerprogrammprodukt zum Erleichtern der Verarbeitung in einer Verarbeitungsumgebung, wobei das Computerprogrammprodukt aufweist: ein computerlesbares Speichermedium, das durch eine Verarbeitungsschaltung gelesen werden kann und auf dem Speicheranweisungen zur Ausführung durch die Verarbeitungsschaltung gespeichert sind, um ein Verfahren durchzuführen, wobei das Verfahren aufweist: Verwenden einer Vorhersageeinheiten-Datenstruktur zur Verarbeitung im Pipelinesystem durch einen im Pipelinesystem arbeitenden Prozessor, wobei die Vorhersageeinheiten-Datenstruktur eine vorhergesagte Adresse aufweist, die bei der Rückkehr von der Ausführung einer ausgewählten Anweisung zu verwenden ist, und einen zu der vorhergesagten Adresse gehörenden vorhergesagten Betriebszustand; auf der Grundlage des Feststellens, dass eine ausgewählte Rückkehranweisung auszuführen ist, von der Vorhersageeinheiten-Datenstruktur das Empfangen der vorhergesagten Adresse, zu der die Verarbeitung zurückkehren soll; und auf der Grundlage des Feststellens, dass die ausgewählte Rückkehranweisung auszuführen ist, das Vorhersagen eines Übergangs-Betriebszustands, der auf dem vorhergesagten Betriebszustand beruht, der in der Vorhersageeinheiten-Datenstruktur gespeichert ist, wobei mindestens eines aus der vorhergesagten Adresse und dem vorhergesagten Übergangs-Betriebszustand zu verwenden ist, um die Ausführung der ausgewählten Rückkehranweisung zu validieren.
  2. Computerprogrammprodukt nach Anspruch 1, wobei die ausgewählte Anweisung eines aus einer Systemaufrufanweisung, einer Hypervisor-Aufrufanweisung oder einer asynchronen Unterbrechung aufweist.
  3. Computerprogrammprodukt nach Anspruch 2, wobei das Verfahren ferner auf der Grundlage der Ausführung der ausgewählten Anweisung das Ablegen der vorhergesagten Adresse und des vorhergesagten Betriebszustands entsprechend einer zukünftigen erwarteten Rückkehr in der Vorhersageeinheiten-Datenstruktur aufweist.
  4. Computerprogrammprodukt nach Anspruch 1, wobei der vorhergesagte Betriebszustand eine Berechtigungsstufe einer Anweisung aufweist, auf die an der vorhergesagten Adresse zugegriffen werden soll.
  5. Computerprogrammprodukt nach Anspruch 1, wobei das Verfahren ferner das Validieren der Ausführung der ausgewählten Rückkehranweisung aufweist, wobei das Validieren aufweist: Vergleichen mindestens eines Teils des vorhergesagten Übergangs-Betriebszustands mit dem empfangenen Betriebszustand; und Fortsetzen der Ausführung der ausgewählten Rückkehranweisung auf der Grundlage, dass der Vergleich eine Übereinstimmung anzeigt; und Durchführen der Wiederherstellung der ausgewählten Rückkehranweisung auf der Grundlage, dass der Vergleich eine Nichtübereinstimmung anzeigt.
  6. Computerprogrammprodukt nach Anspruch 5, wobei das Fortsetzen der Ausführung aufweist: Entsperren einer oder mehrerer bei der Zuleitung festgehaltener Anweisungen; und Abschließen der Ausführung der ausgewählten Rückkehranweisung.
  7. Computerprogrammprodukt nach Anspruch 5, wobei das Durchführen der Wiederherstellung aufweist: Durchführen einer Leerung des im Pipelinesystem arbeitenden Prozessors, wobei das Durchführen der Leerung eine neue Abrufadresse und einen neuen spekulativen Betriebszustand bereitstellt; auf der Grundlage des Durchführens der Leerung Auslösen eines Abrufs eine Anweisung an der neuen Abrufadresse; und Verarbeiten der an der neuen Abrufadresse abgerufenen Anweisung auf der Grundlage des neuen spekulativen Betriebszustands.
  8. Computerprogrammprodukt nach Anspruch 1, wobei der vorhergesagte Betriebszustand mit einer Decodiereinheit des im Pipelinesystem arbeiteten Prozessors verbunden und getrennt von dem nicht spekulativen Betriebszustand ist, der mit einer Ausführungseinheit des im Pipelinesystem arbeitenden Prozessors verbunden ist.
  9. Computerprogrammprodukt nach Anspruch 1, wobei die ausgewählte Rückkehranweisung eines aus einer Rückkehr von einer Systemaufrufanweisung, einer Rückkehr von einer Hypervisor-Aufrufanweisung oder einer Rückkehr von einer asynchronen Unterbrechung aufweist.
  10. Computerprogrammprodukt nach Anspruch 1, wobei die Vorhersageeinheiten-Datenstruktur ferner einen Anzeiger eines Erstellers aufweist, der für das Ablegen des vorhergesagten Betriebszustands in der Datenstruktur zuständig ist.
  11. Computersystem zum Erleichtern der Verarbeitung in einer Verarbeitungsumgebung, wobei das Computersystem aufweist: einen Speicher; und einen mit dem Speicher in Verbindung stehenden Prozessor, wobei das Computersystem so gestaltet ist, dass ein Verfahren durchgeführt wird, wobei das Verfahren aufweist: Verwenden einer Vorhersageeinheiten-Datenstruktur zur Verarbeitung im Pipelinesystem durch einen im Pipelinesystem arbeitenden Prozessor, wobei die Vorhersageeinheiten-Datenstruktur eine vorhergesagte Adresse aufweist, die bei der Rückkehr von der Ausführung einer ausgewählten Anweisung zu verwenden ist, und einen zu der vorhergesagten Adresse gehörenden vorhergesagten Betriebszustand; auf der Grundlage des Feststellens, dass eine ausgewählte Rückkehranweisung auszuführen ist, von der Vorhersageeinheiten-Datenstruktur das Empfangen der vorhergesagten Adresse, zu der die Verarbeitung zurückkehren soll; und auf der Grundlage des Feststellens, dass die ausgewählte Rückkehranweisung auszuführen ist, das Vorhersagen eines Übergangs-Betriebszustands, der auf dem vorhergesagten Betriebszustand beruht, der in der Vorhersageeinheiten-Datenstruktur gespeichert ist, wobei mindestens eines aus der vorhergesagten Adresse und dem vorhergesagten Übergangs-Betriebszustand zu verwenden ist, um die Ausführung der ausgewählten Rückkehranweisung zu validieren.
  12. Verfahren zum Erleichtern der Verarbeitung in einem Datenverarbeitungssystem, wobei das Verfahren aufweist: Verwenden einer Vorhersageeinheiten-Datenstruktur zur Verarbeitung im Pipelinesystem durch einen im Pipelinesystem arbeitenden Prozessor, wobei die Vorhersageeinheiten-Datenstruktur eine vorhergesagte Adresse aufweist, die bei der Rückkehr von der Ausführung einer ausgewählten Anweisung zu verwenden ist, und einen zu der vorhergesagten Adresse gehörenden vorhergesagten Betriebszustand; auf der Grundlage des Feststellens durch einen Prozessor, dass eine ausgewählte Rückkehranweisung auszuführen ist, von der Vorhersageeinheiten-Datenstruktur das Empfangen der vorhergesagten Adresse, zu der die Verarbeitung zurückkehren soll; und auf der Grundlage des Feststellens, dass die ausgewählte Rückkehranweisung auszuführen ist, das Vorhersagen eines Übergangs-Betriebszustands, der auf dem vorhergesagten Betriebszustand beruht, der in der Vorhersageeinheiten-Datenstruktur gespeichert ist, wobei mindestens eines aus der vorhergesagten Adresse und dem vorhergesagten Übergangs-Betriebszustand zu verwenden ist, um die Ausführung der ausgewählten Rückkehranweisung zu validieren.
DE102014108753.4A 2013-06-28 2014-06-23 Vorhersageeinheiten-Datenstruktur zur Verwendung bei der Verarbeitung im Pipelinesystem Withdrawn DE102014108753A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/931,671 US9513924B2 (en) 2013-06-28 2013-06-28 Predictor data structure for use in pipelined processing
US13/931,671 2013-06-28

Publications (1)

Publication Number Publication Date
DE102014108753A1 true DE102014108753A1 (de) 2014-12-31

Family

ID=52017491

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102014108753.4A Withdrawn DE102014108753A1 (de) 2013-06-28 2014-06-23 Vorhersageeinheiten-Datenstruktur zur Verwendung bei der Verarbeitung im Pipelinesystem

Country Status (3)

Country Link
US (2) US9513924B2 (de)
CN (1) CN104252360B (de)
DE (1) DE102014108753A1 (de)

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9619230B2 (en) * 2013-06-28 2017-04-11 International Business Machines Corporation Predictive fetching and decoding for selected instructions
US9361144B2 (en) * 2013-06-28 2016-06-07 Globalfoundries Inc. Predictive fetching and decoding for selected return instructions
US9513919B2 (en) 2015-04-28 2016-12-06 Intel Corporation Method and apparatus for speculative decompression
GB2539410B (en) * 2015-06-15 2017-12-06 Bluwireless Tech Ltd Data processing
US20170090927A1 (en) * 2015-09-30 2017-03-30 Paul Caprioli Control transfer instructions indicating intent to call or return
GB2542831B (en) * 2015-09-30 2018-05-30 Imagination Tech Ltd Fetch unit for predicting target for subroutine return instructions
US11269640B2 (en) * 2017-02-13 2022-03-08 Qualcomm Incorporated Speculative transitions among modes with different privilege levels in a block-based microarchitecture
US10922087B2 (en) 2017-11-30 2021-02-16 International Business Machines Corporation Block based allocation and deallocation of issue queue entries
US10802829B2 (en) 2017-11-30 2020-10-13 International Business Machines Corporation Scalable dependency matrix with wake-up columns for long latency instructions in an out-of-order processor
US10942747B2 (en) 2017-11-30 2021-03-09 International Business Machines Corporation Head and tail pointer manipulation in a first-in-first-out issue queue
US10929140B2 (en) 2017-11-30 2021-02-23 International Business Machines Corporation Scalable dependency matrix with a single summary bit in an out-of-order processor
US10901744B2 (en) 2017-11-30 2021-01-26 International Business Machines Corporation Buffered instruction dispatching to an issue queue
US10564976B2 (en) 2017-11-30 2020-02-18 International Business Machines Corporation Scalable dependency matrix with multiple summary bits in an out-of-order processor
US10884753B2 (en) 2017-11-30 2021-01-05 International Business Machines Corporation Issue queue with dynamic shifting between ports
US10564979B2 (en) 2017-11-30 2020-02-18 International Business Machines Corporation Coalescing global completion table entries in an out-of-order processor
US10572264B2 (en) 2017-11-30 2020-02-25 International Business Machines Corporation Completing coalesced global completion table entries in an out-of-order processor
US10747541B2 (en) * 2018-01-19 2020-08-18 Marvell Asia Pte, Ltd. Managing predictor selection for branch prediction
US10599437B2 (en) 2018-01-19 2020-03-24 Marvell World Trade Ltd. Managing obscured branch prediction information
US11061681B2 (en) * 2019-07-25 2021-07-13 International Business Machines Corporation Instruction streaming using copy select vector
US11301254B2 (en) * 2019-07-25 2022-04-12 International Business Machines Corporation Instruction streaming using state migration

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5551013A (en) 1994-06-03 1996-08-27 International Business Machines Corporation Multiprocessor for hardware emulation
US5574873A (en) 1993-05-07 1996-11-12 Apple Computer, Inc. Decoding guest instruction to directly access emulation routines that emulate the guest instructions
US5790825A (en) 1995-11-08 1998-08-04 Apple Computer, Inc. Method for emulating guest instructions on a host computer through dynamic recompilation of host instructions
US6009261A (en) 1997-12-16 1999-12-28 International Business Machines Corporation Preprocessing of stored target routines for emulating incompatible instructions on a target processor
US6308255B1 (en) 1998-05-26 2001-10-23 Advanced Micro Devices, Inc. Symmetrical multiprocessing bus and chipset used for coprocessor support allowing non-native code to run in a system
US6463582B1 (en) 1998-10-21 2002-10-08 Fujitsu Limited Dynamic optimizing object code translator for architecture emulation and dynamic optimizing object code translation method
US20130086361A1 (en) 2011-10-03 2013-04-04 International Business Machines Corporation Scalable Decode-Time Instruction Sequence Optimization of Dependent Instructions

Family Cites Families (39)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5313634A (en) * 1992-07-28 1994-05-17 International Business Machines Corporation Computer system branch prediction of subroutine returns
US5454117A (en) * 1993-08-25 1995-09-26 Nexgen, Inc. Configurable branch prediction for a processor performing speculative execution
GB2287111B (en) * 1994-03-01 1998-08-05 Intel Corp Method for pipeline processing of instructions by controlling access to a reorder buffer using a register file outside the reorder buffer
US5784586A (en) * 1995-02-14 1998-07-21 Fujitsu Limited Addressing method for executing load instructions out of order with respect to store instructions
US5896528A (en) * 1995-03-03 1999-04-20 Fujitsu Limited Superscalar processor with multiple register windows and speculative return address generation
WO1996038783A1 (en) * 1995-06-01 1996-12-05 Hal Computer Systems, Inc. Method and apparatus for rotating active instructions in a parallel data processor
SE509499C2 (sv) * 1996-05-03 1999-02-01 Ericsson Telefon Ab L M Metod och anordning för hantering av villkorliga hopp vid instruktionsbehandling i en pipeline-arkitektur
US6253316B1 (en) * 1996-11-19 2001-06-26 Advanced Micro Devices, Inc. Three state branch history using one bit in a branch prediction mechanism
DE69727773T2 (de) * 1996-12-10 2004-12-30 Texas Instruments Inc., Dallas Verbesserte Verzweigungsvorhersage in einem Pipelinemikroprozessor
US6108775A (en) * 1996-12-30 2000-08-22 Texas Instruments Incorporated Dynamically loadable pattern history tables in a multi-task microprocessor
US6256729B1 (en) * 1998-01-09 2001-07-03 Sun Microsystems, Inc. Method and apparatus for resolving multiple branches
US6304960B1 (en) 1998-08-06 2001-10-16 Intel Corporation Validating prediction for branches in a cluster via comparison of predicted and condition selected tentative target addresses and validation of branch conditions
US6393556B1 (en) 1998-10-30 2002-05-21 Intel Corporation Apparatus and method to change processor privilege without pipeline flush
US6332191B1 (en) * 1999-01-19 2001-12-18 Advanced Micro Devices, Inc. System for canceling speculatively fetched instructions following a branch mis-prediction in a microprocessor
US6978462B1 (en) * 1999-01-28 2005-12-20 Ati International Srl Profiling execution of a sequence of events occuring during a profiled execution interval that matches time-independent selection criteria of events to be profiled
US6954923B1 (en) * 1999-01-28 2005-10-11 Ati International Srl Recording classification of instructions executed by a computer
US7065633B1 (en) * 1999-01-28 2006-06-20 Ati International Srl System for delivering exception raised in first architecture to operating system coded in second architecture in dual architecture CPU
US8127121B2 (en) * 1999-01-28 2012-02-28 Ati Technologies Ulc Apparatus for executing programs for a first computer architechture on a computer of a second architechture
US7941647B2 (en) * 1999-01-28 2011-05-10 Ati Technologies Ulc Computer for executing two instruction sets and adds a macroinstruction end marker for performing iterations after loop termination
US6289444B1 (en) * 1999-06-02 2001-09-11 International Business Machines Corporation Method and apparatus for subroutine call-return prediction
US6934832B1 (en) * 2000-01-18 2005-08-23 Ati International Srl Exception mechanism for a computer
CN1156760C (zh) * 2000-12-12 2004-07-07 智原科技股份有限公司 适用于处理器的存储器数据存取装置及其存取方法
US7203833B1 (en) * 2002-12-23 2007-04-10 Microsoft Corporation History based rights computation for managed code
US7552426B2 (en) 2003-10-14 2009-06-23 Microsoft Corporation Systems and methods for using synthetic instructions in a virtual machine
WO2010004242A2 (en) 2008-07-10 2010-01-14 Cambridge Consultants Limited Data processing apparatus, for example using vector pointers
US8307353B2 (en) 2008-08-12 2012-11-06 Oracle America, Inc. Cross-domain inlining in a system virtual machine
GB2478733B (en) * 2010-03-15 2013-08-14 Advanced Risc Mach Ltd Apparatus and method for handling exception events
US8566569B2 (en) * 2010-06-24 2013-10-22 International Business Machines Corporation State machine-based filtering of pattern history tables based on distinguishable pattern detection
US9098295B2 (en) * 2011-01-21 2015-08-04 Apple Inc. Predicting a result for an actual instruction when processing vector instructions
US9122485B2 (en) * 2011-01-21 2015-09-01 Apple Inc. Predicting a result of a dependency-checking instruction when processing vector instructions
US9213551B2 (en) * 2011-03-11 2015-12-15 Oracle International Corporation Return address prediction in multithreaded processors
US10338928B2 (en) 2011-05-20 2019-07-02 Oracle International Corporation Utilizing a stack head register with a call return stack for each instruction fetch
US9582275B2 (en) * 2011-05-31 2017-02-28 Intel Corporation Method and apparatus for obtaining a call stack to an event of interest and analyzing the same
US9021155B2 (en) 2011-06-01 2015-04-28 International Business Machines Corporation Fibre channel input/output data routing including discarding of data transfer requests in response to error detection
US9703567B2 (en) * 2012-11-30 2017-07-11 Intel Corporation Control transfer termination instructions of an instruction set architecture (ISA)
US9569612B2 (en) * 2013-03-14 2017-02-14 Daniel Shawcross Wilkerson Hard object: lightweight hardware enforcement of encapsulation, unforgeability, and transactionality
US9619230B2 (en) * 2013-06-28 2017-04-11 International Business Machines Corporation Predictive fetching and decoding for selected instructions
US9361144B2 (en) * 2013-06-28 2016-06-07 Globalfoundries Inc. Predictive fetching and decoding for selected return instructions
US20160055003A1 (en) * 2014-08-19 2016-02-25 Qualcomm Incorporated Branch prediction using least-recently-used (lru)-class linked list branch predictors, and related circuits, methods, and computer-readable media

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5574873A (en) 1993-05-07 1996-11-12 Apple Computer, Inc. Decoding guest instruction to directly access emulation routines that emulate the guest instructions
US5551013A (en) 1994-06-03 1996-08-27 International Business Machines Corporation Multiprocessor for hardware emulation
US5790825A (en) 1995-11-08 1998-08-04 Apple Computer, Inc. Method for emulating guest instructions on a host computer through dynamic recompilation of host instructions
US6009261A (en) 1997-12-16 1999-12-28 International Business Machines Corporation Preprocessing of stored target routines for emulating incompatible instructions on a target processor
US6308255B1 (en) 1998-05-26 2001-10-23 Advanced Micro Devices, Inc. Symmetrical multiprocessing bus and chipset used for coprocessor support allowing non-native code to run in a system
US6463582B1 (en) 1998-10-21 2002-10-08 Fujitsu Limited Dynamic optimizing object code translator for architecture emulation and dynamic optimizing object code translation method
US20130086361A1 (en) 2011-10-03 2013-04-04 International Business Machines Corporation Scalable Decode-Time Instruction Sequence Optimization of Dependent Instructions

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
"Power ISA Version 2.07", International Business Machines Corporation, 3. Mai 2013
"z/Architecture Principles of Operation", IBM-Veröffentlichungsnr. SA22-7832-09, zehnte Ausgabe, September 2012

Also Published As

Publication number Publication date
CN104252360B (zh) 2017-07-18
CN104252360A (zh) 2014-12-31
US20150006862A1 (en) 2015-01-01
US20150089208A1 (en) 2015-03-26
US9535703B2 (en) 2017-01-03
US9513924B2 (en) 2016-12-06

Similar Documents

Publication Publication Date Title
DE102014108785A1 (de) Vorausschauendes abrufen und decodieren bei ausgewählten anweisungen
DE102014108753A1 (de) Vorhersageeinheiten-Datenstruktur zur Verwendung bei der Verarbeitung im Pipelinesystem
DE102014108738A1 (de) Vorausschauendes Abrufen und Decodieren bei ausgewählten Rückkehranweisungen
EP2430533B1 (de) Diagnoseanweisung zur seriellen verarbeitung
DE112018003584B4 (de) Vorhersagen eines inhaltsverzeichnis-zeigerwerts in reaktion auf ein verzweigen auf eine subroutine
DE102014109083A1 (de) Bilden von Anweisungsgruppen basierend auf der Optimierung von Anweisungen bei der Dekodierung
DE112018004384B4 (de) Schützen von arbeitsspeicherinternen konfigurationsstatusregistern
DE112015001548T5 (de) Partitionsmobilität für Partitionen mit erweitertem Code
DE112012007119T5 (de) Threadmigration-Unterstützung für Kerne unterschiedlicher Architektur
DE102012216592A1 (de) Präfix-Computeranweisung zur Erweiterung der Anweisungsfunktionalität
DE112013002956T5 (de) Vorabladen von Verzweigungsvorhersagen
DE112013001442T5 (de) Kopieren von Zeichendaten, die ein Abschlusszeichen aufweisen, von einer Speicherposition zu einer anderen
DE112014000252T5 (de) Anweisung "Vector floating point test data class immediate"
DE102018002525A1 (de) Hybridatomaritätsunterstützung für einen binärübersetzungsbasierten mikroprozessor
DE112015000203T5 (de) "Compare and Delay"-Befehle
DE112018003586T5 (de) Instruktion "inhaltsverzeichnis- (toc) register einrichten"
DE112018004388T5 (de) Globale speicher- und ladeoperationen von konfigurationsstatusregistern
DE112013007702T5 (de) Befehl und Logik für den Speicherzugriff in einer geclusterten Maschine mit breiter Ausführung
DE202019005686U1 (de) Skalierbare Gesamtspeicherverschlüsselungs-Engine mit mehrfachen Schlüsseln
DE112016005863T5 (de) Minimierung von Snoop-Verkehr lokal und über Kerne auf einem Chip-Mehrkern-Fabric
DE112018004364T5 (de) Konfigurationsstatusregister, gruppiert auf grundlage von funktionaler affinität
US11915000B2 (en) Apparatuses, methods, and systems to precisely monitor memory store accesses
DE112018005758T5 (de) Konfigurationsstatusregister auf arbeitsspeichergrundlage
DE112017003345T5 (de) Bit-prüfprozessoren, verfahren, systeme und anweisungen zum prüfen eines bits mit einem angegebenen prüfbitwert
DE112016004395T5 (de) Verfahren und Einrichtung für leichtgewichtige Virtualisierungskontexte

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R081 Change of applicant/patentee

Owner name: GLOBALFOUNDRIES INC., KY

Free format text: FORMER OWNER: INTERNATIONAL BUSINESS MACHINES CORPORATION, ARMONK, N.Y., US

R082 Change of representative

Representative=s name: RICHARDT PATENTANWAELTE PARTG MBB, DE

R081 Change of applicant/patentee

Owner name: GLOBALFOUNDRIES INC., KY

Free format text: FORMER OWNER: GLOBALFOUNDRIES US 2 LLC (N.D.GES.DES STAATES DELAWARE), HOPEWELL JUNCTION, N.Y., US

R082 Change of representative

Representative=s name: RICHARDT PATENTANWAELTE PARTG MBB, DE

R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee