DE112018004006B4 - PROCESSING SYNONYMS OF EFFECTIVE ADDRESSES IN A LOAD MEMORY UNIT THAT WORKS WITHOUT ADDRESS CONVERSION - Google Patents

PROCESSING SYNONYMS OF EFFECTIVE ADDRESSES IN A LOAD MEMORY UNIT THAT WORKS WITHOUT ADDRESS CONVERSION Download PDF

Info

Publication number
DE112018004006B4
DE112018004006B4 DE112018004006.2T DE112018004006T DE112018004006B4 DE 112018004006 B4 DE112018004006 B4 DE 112018004006B4 DE 112018004006 T DE112018004006 T DE 112018004006T DE 112018004006 B4 DE112018004006 B4 DE 112018004006B4
Authority
DE
Germany
Prior art keywords
instruction
entry
address
ert
effective address
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.)
Active
Application number
DE112018004006.2T
Other languages
German (de)
Other versions
DE112018004006T5 (en
Inventor
Balaram Sinharoy
Bryan Lloyd
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US15/726,596 external-priority patent/US10606591B2/en
Priority claimed from US15/726,627 external-priority patent/US11175924B2/en
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of DE112018004006T5 publication Critical patent/DE112018004006T5/en
Application granted granted Critical
Publication of DE112018004006B4 publication Critical patent/DE112018004006B4/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/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, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • 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, look ahead
    • G06F9/3824Operand accessing
    • 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, look ahead
    • G06F9/3824Operand accessing
    • G06F9/383Operand prefetching
    • G06F9/3832Value prediction for operands; operand history buffers
    • 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, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • 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, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • 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, look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3856Reordering of instructions, e.g. using queues or age tags
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G06F12/1045Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache
    • G06F12/1063Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache the data cache being concurrently virtually addressed
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1008Correctness of operation, e.g. memory ordering
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/652Page size control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/655Same page detection
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/657Virtual address space management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/68Details of translation look-aside buffer [TLB]
    • G06F2212/681Multi-level TLB, e.g. microTLB and main TLB
    • 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, look ahead
    • G06F9/3824Operand accessing
    • G06F9/3834Maintaining memory consistency

Abstract

Verarbeitungseinheit zum Ausführen einer oder mehrerer Anweisungen, wobei die Verarbeitungseinheit aufweist:eine Lade-Speicher-Einheit (LSU) (104) zum Übertragen von Daten zwischen einem Speicher und Registern, wobei die LSU dazu ausgebildet ist, eine Mehrzahl von Anweisungen in einem Out-of-Order(OoO)-Fenster auszuführen, wobei die Ausführung aufweist:in Reaktion auf ein Ermitteln (610), dass eine erste effektive Adresse durch eine erste Anweisung verwendet wird, wobei die erste effektive Adresse einer ersten realen Adresse entspricht, Erstellen (615) eines Eintrags einer Effektiv-Real-Tabelle (ERT) (255) in einer ERT, wobei der ERT-Eintrag die erste effektive Adresse der ersten realen Adresse zuordnet; undin Reaktion auf ein Ermitteln (830) eines Synonyms einer effektiven Adresse, das durch eine zweite Anweisung verwendet wird, wobei es sich bei dem Synonym der effektiven Adresse um eine zweite effektive Adresse handelt, die auch der ersten realen Adresse entspricht:Erstellen eines Eintrags einer Synonymerkennungstabelle (SDT) (800) in einer SDT, wobei der SDT-Eintrag die zweite effektive Adresse dem ERT-Eintrag zuordnet; undNeustarten (845) der zweiten Anweisung durch Ersetzen der zweiten effektiven Adresse in der zweiten Anweisung durch die erste effektive Adresse.Processing unit for executing one or more instructions, wherein the processing unit has: a load storage unit (LSU) (104) for transferring data between a memory and registers, the LSU being designed to store a plurality of instructions in an out- of Order (OoO) window, the execution comprising: in response to determining (610) that a first effective address is being used by a first instruction, the first effective address corresponding to a first real address, creating (615 ) an entry of an effective real table (ERT) (255) in an ERT, the ERT entry assigning the first effective address to the first real address; andin response to determining (830) a synonym of an effective address used by a second instruction, the synonym of the effective address being a second effective address that also corresponds to the first real address: creating an entry of a Synonym Detection Table (SDT) (800) in an SDT, the SDT entry assigning the second effective address to the ERT entry; and restarting (845) the second instruction by replacing the second effective address in the second instruction with the first effective address.

Description

HINTERGRUNDBACKGROUND

Ausführungsformen der vorliegenden Erfindung beziehen sich allgemein auf einen Out-of-Order(OoO)-Prozessor (Prozessor für eine Ausführung in anderer Reihenfolge) und im Besonderen auf ein Verarbeiten von Synonymen von effektiven Adressen mit einer Synonymerkennungstabelle (synonym detection table, SDT) in einer Lade-Speicher-Einheit, die ohne Adressumsetzung arbeitet.Embodiments of the present invention relate generally to an out-of-order (OoO) processor and, more particularly, to processing synonyms of effective addresses with a synonym detection table (SDT) in FIG a load / store unit that works without address translation.

In einem OoO-Prozessor teilt eine Anweisungssequenzbildungseinheit (instruction sequencing unit, ISU) Anweisungen verschiedenen Ausgabewarteschlangen zu, benennt Register zur Unterstützung einer OoO-Ausführung um, gibt Anweisungen aus den verschiedenen Ausgabewarteschlangen an die Ausführungs-Pipelines aus, schließt ausgeführte Anweisungen ab und verarbeitet Ausnahmebedingungen. Eine Registerumbenennung wird typischerweise durch eine Zuordnungsfunktionslogik in der ISU durchgeführt, bevor die Anweisungen in ihren jeweiligen Ausgabewarteschlangen platziert werden. Die ISU enthält eine oder mehrere Ausgabewarteschlangen, die Abhängigkeitsmatrizes zum Verfolgen von Abhängigkeiten zwischen Anweisungen enthalten. Eine Abhängigkeitsmatrix enthält typischerweise eine Zeile und eine Spalte für jede Anweisung in der Ausgabewarteschlange.In an OoO processor, an instruction sequencing unit (ISU) dispatches instructions to various issue queues, renames registers to support OoO execution, issues instructions from the various issue queues to the execution pipelines, closes executed instructions, and handles exceptions . Register renaming is typically performed by mapping function logic in the ISU before the instructions are placed in their respective issue queues. The ISU contains one or more output queues that contain dependency matrices for keeping track of dependencies between instructions. A dependency matrix typically contains one row and one column for each instruction in the output queue.

Auf dem Gebiet der Konstruktion von Zentraleinheiten (central processing unit, CPU) und im Besonderen für OoO-Prozessoren stellen Risiken technische Probleme für die Anweisungs-Pipeline in den CPU-Mikroarchitekturen dar, wenn eine nächste Anweisung im folgenden Taktzyklus nicht ausgeführt werden kann, da dies möglicherweise zu falschen Berechnungsergebnissen führt. Zu typischen Arten von Risiken zählen Datenrisiken, strukturelle Risiken und Risiken im Steuerungsablauf (Verzweigungsrisiken). Datenrisiken treten auf, wenn Anweisungen, die eine Datenabhängigkeit aufweisen, Daten auf verschiedenen Stufen einer Pipeline ändern, zum Beispiel Lesen nach Schreiben (read after write, RAW), Schreiben nach Lesen (write after read, WAR) und Schreiben nach Schreiben (write after write, WAW). Ein strukturelles Risiko tritt auf, wenn ein Teil der Hardware des Prozessors von zwei oder mehr Anweisungen gleichzeitig benötigt wird, zum Beispiel wenn auf eine Speichereinheit sowohl auf der Abrufstufe, in der eine Anweisung aus dem Speicher abgerufen wird, als auch auf der Speicherstufe zugegriffen wird, in der Daten geschrieben und/oder aus dem Speicher gelesen werden. Des Weiteren treten Verzweigungsrisiken (auch als Steuerungsrisiken bezeichnet) auf, wenn Verzweigungen in dem Computerprogramm durch den Prozessor ausgeführt werden.In the field of the construction of central processing units (CPU) and in particular for OoO processors, risks pose technical problems for the instruction pipeline in the CPU microarchitectures if a next instruction cannot be executed in the following clock cycle, since this may lead to incorrect calculation results. Typical types of risks include data risks, structural risks and risks in the control process (branch risks). Data risks arise when instructions that have a data dependency change data at different stages of a pipeline, such as read after write (RAW), write after read (WAR), and write after write, WAW). A structural risk arises when part of the hardware of the processor is required by two or more instructions at the same time, for example when a memory unit is accessed both at the fetch level in which an instruction is fetched from memory and at the memory level , in which data is written and / or read from memory. Furthermore, branch risks (also referred to as control risks) occur when branches in the computer program are executed by the processor.

Die WO 2016/ 105 961 A1 betrifft eine Computerarchitektur, die einen Speichercache bereitstellt, auf den nicht über physische Adressen, sondern über virtuelle Adressen direkt von laufenden Prozessen aus zugegriffen wird. Mehrdeutigkeiten, die sich aus der Abbildung mehrerer virtueller Adressen auf eine einzige physische Adresse ergeben können, werden durch dynamische Spurverfolgung von synonymen und die Verbindung einer begrenzten Anzahl virtueller synonyme, die auf dieselbe physische Adresse abgebildet werden, mit einer einzigen virtuellen Schlüsseladresse, die ausschließlich für den Cache-Zugriff verwendet wird, handhaben.The WO 2016/105 961 A1 relates to a computer architecture that provides a memory cache that is not accessed via physical addresses but via virtual addresses directly from running processes. Ambiguities that can result from mapping multiple virtual addresses to a single physical address are resolved through dynamic tracking of synonyms and the connection of a limited number of virtual synonyms that are mapped to the same physical address with a single virtual key address that is exclusive to handle cache access.

KURZDARSTELLUNGSHORT REPRESENTATION

Die Erfindung betrifft ein Verfahren, eine Verarbeitungseinheit und ein Computerprogrammprodukt, deren Merkmalen in den entsprechenden Hauptansprüchen angegeben sind. Ausführungsformen der Erfindung sind in den abhängigen Patentansprüchen angegeben.The invention relates to a method, a processing unit and a computer program product, the features of which are specified in the corresponding main claims. Embodiments of the invention are specified in the dependent claims.

Ein nicht beschränkendes Beispiel einer Verarbeitungseinheit zum Ausführen einer oder mehrerer Anweisungen enthält eine Lade-Speicher-Einheit (LSU) zum Übertragen von Daten zwischen einem Speicher und Registern. Die LSU führt eine Mehrzahl von Anweisungen in einem Out-of-Order(OoO)-Fenster aus. Die Ausführung enthält in Reaktion auf ein Ermitteln, dass eine erste effektive Adresse durch eine erste Anweisung verwendet wird, wobei die erste effektive Adresse einer ersten realen Adresse entspricht, ein Erstellen eines Eintrags einer Effektiv-Real-Tabelle (effective real table, ERT) in einer ERT, wobei der ERT-Eintrag die erste effektive Adresse der ersten realen Adresse zuordnet. Des Weiteren enthält die Ausführung in Reaktion auf ein Ermitteln eines Synonyms einer effektiven Adresse, das durch eine zweite Anweisung verwendet wird, wobei es sich bei dem Synonym der effektiven Adresse um eine zweite effektive Adresse handelt, die auch der ersten realen Adresse entspricht: ein Erstellen eines Eintrags einer Synonymerkennungstabelle (SDT) in einer SDT, wobei der SDT-Eintrag die zweite effektive Adresse dem ERT-Eintrag zuordnet, und ein Neustarten der zweiten Anweisung durch Ersetzen der zweiten effektiven Adresse in der zweiten Anweisung durch die erste effektive Adresse.One non-limiting example of a processing unit for executing one or more instructions includes a load store unit (LSU) for transferring data between memory and registers. The LSU executes a plurality of instructions in an out-of-order (OoO) window. In response to a determination, execution includes a first effective address by a first instruction is used, the first effective address corresponding to a first real address, creating an entry of an effective real table (ERT) in an ERT, the ERT entry being the first effective address of the first real Address assigns. Furthermore, in response to determining a synonym of an effective address that is used by a second instruction, the synonym of the effective address being a second effective address that also corresponds to the first real address, the execution includes: a creation an entry of a synonym recognition table (SDT) in an SDT, the SDT entry assigning the second effective address to the ERT entry, and restarting the second instruction by replacing the second effective address in the second instruction with the first effective address.

Gemäß einer oder mehreren Ausführungsformen der vorliegenden Erfindung enthält ein beispielhaftes auf einem Computer implementiertes Verfahren zum Ausführen einer oder mehrerer Anweisungen außerhalb der Reihenfolge durch eine Verarbeitungseinheit ein Ausgeben oder Ausführen einer Mehrzahl von Anweisungen aus einem Out-of-Order(OoO)-Fenster durch eine Lade-Speicher-Einheit (LSU). Das Ausgeben enthält in Reaktion auf ein Ermitteln, dass eine erste effektive Adresse durch eine erste Anweisung verwendet wird, wobei die erste effektive Adresse einer ersten realen Adresse entspricht, ein Erstellen eines Eintrags einer Effektiv-Real-Tabelle (ERT) in einer ERT, wobei der ERT-Eintrag die erste effektive Adresse der ersten realen Adresse zuordnet. Des Weiteren enthält die Ausführung in Reaktion auf ein Ermitteln eines Synonyms einer effektiven Adresse, das durch eine zweite Anweisung verwendet wird, wobei es sich bei dem Synonym der effektiven Adresse um eine zweite effektive Adresse handelt, die auch der ersten realen Adresse entspricht: ein Erstellen eines Eintrags einer Synonymerkennungstabelle (SDT) in einer SDT, wobei der SDT-Eintrag die zweite effektive Adresse dem ERT-Eintrag zuordnet, und ein Neustarten der zweiten Anweisung durch Ersetzen der zweiten effektiven Adresse in der zweiten Anweisung durch die erste effektive Adresse.According to one or more embodiments of the present invention, an exemplary method implemented on a computer for executing one or more instructions out of order by a processing unit includes issuing or executing a plurality of instructions from an out-of-order (OoO) window by a Load storage unit (LSU). In response to determining that a first effective address is being used by a first instruction, the first effective address corresponding to a first real address, issuing includes creating an effective-real table (ERT) entry in an ERT, where the ERT entry assigns the first effective address to the first real address. Furthermore, in response to determining a synonym of an effective address that is used by a second instruction, the synonym of the effective address being a second effective address that also corresponds to the first real address, the execution includes: a creation an entry of a synonym recognition table (SDT) in an SDT, the SDT entry assigning the second effective address to the ERT entry, and restarting the second instruction by replacing the second effective address in the second instruction with the first effective address.

Gemäß einer oder mehreren Ausführungsformen enthält ein beispielhaftes Computerprogrammprodukt ein durch einen Computer lesbares Speichermedium, in dem Programmanweisungen verkörpert sind, wobei die durch eine Verarbeitungseinheit ausführbarenAccording to one or more embodiments, an exemplary computer program product includes a computer-readable storage medium in which program instructions are embodied, the ones being executable by a processing unit

Programmanweisungen bewirken, dass die Verarbeitungseinheit Operationen durchführt. Die Operationen enthalten ein Ausgeben oder Ausführen einer Mehrzahl von Anweisungen aus einem Out-of-Order(OoO)-Fenster durch eine Lade-Speicher-Einheit (LSU). Das Ausgeben enthält in Reaktion auf ein Ermitteln, dass eine erste effektive Adresse durch eine erste Anweisung verwendet wird, wobei die erste effektive Adresse einer ersten realen Adresse entspricht, ein Erstellen eines Eintrags einer Effektiv-Real-Tabelle (ERT) in einer ERT, wobei der ERT-Eintrag die erste effektive Adresse der ersten realen Adresse zuordnet. Des Weiteren enthält die Ausführung in Reaktion auf ein Ermitteln eines Synonyms einer effektiven Adresse, das durch eine zweite Anweisung verwendet wird, wobei es sich bei dem Synonym der effektiven Adresse um eine zweite effektive Adresse handelt, die auch der ersten realen Adresse entspricht: ein Erstellen eines Eintrags einer Synonymerkennungstabelle (SDT) in einer SDT, wobei der SDT-Eintrag die zweite effektive Adresse dem ERT-Eintrag zuordnet, und ein Neustarten der zweiten Anweisung durch Ersetzen der zweiten effektiven Adresse in der zweiten Anweisung durch die erste effektive Adresse.Program instructions cause the processing unit to perform operations. The operations include issuing or executing a plurality of instructions from an out-of-order (OoO) window by a load store unit (LSU). In response to determining that a first effective address is being used by a first instruction, the first effective address corresponding to a first real address, issuing includes creating an effective-real table (ERT) entry in an ERT, where the ERT entry assigns the first effective address to the first real address. Furthermore, in response to determining a synonym of an effective address that is used by a second instruction, the synonym of the effective address being a second effective address that also corresponds to the first real address, the execution includes: a creation an entry of a synonym recognition table (SDT) in an SDT, the SDT entry assigning the second effective address to the ERT entry, and restarting the second instruction by replacing the second effective address in the second instruction with the first effective address.

Zusätzliche Merkmale und Vorteile werden durch die Techniken der vorliegenden Erfindung umgesetzt. Sonstige Ausführungsformen und Aspekte der Erfindung werden hierin ausführlich beschrieben und werden als Teil der beanspruchten Erfindung betrachtet. Zum besseren Verständnis der Erfindung mit den Vorteilen und Merkmalen sei auf die Beschreibung und auf die Zeichnungen verwiesen.Additional features and advantages are realized through the techniques of the present invention. Other embodiments and aspects of the invention are described in detail herein and are considered part of the claimed invention. For a better understanding of the invention with the advantages and features, reference is made to the description and to the drawings.

FigurenlisteFigure list

Die Besonderheiten der hierin beschriebenen Exklusivrechte werden in den Ansprüchen am Ende der Beschreibung genau dargelegt und ausdrücklich beansprucht. Die obigen und sonstige Merkmale und Vorteile der Ausführungsformen der Erfindung werden aus der folgenden ausführlichen Beschreibung in Verbindung mit den beigefügten Zeichnungen deutlich, in denen:

  • 1 ein Blockschaubild eines Systems darstellt, das eine Lade-Speicher-Einheit auf Grundlage von effektiven Adressen in einem Out-of-Order(OoO)-Prozessor gemäß einer oder mehreren Ausführungsformen der vorliegenden Erfindung enthält;
  • 2 ein beispielhaftes Blockschaubild einer Prozessorarchitektur eines OoO-Prozessors ist, in dem ein Verzeichnis von effektiven Adressen (effective address directory, EAD) und die zugehörigen Mechanismen zum Verwenden dieses EAD gemäß einer oder mehreren Ausführungsformen der vorliegenden Erfindung implementiert sind;
  • 3 eine Lade-Speicher-Einheit (LSU) eines Verarbeitungskerns gemäß einer oder mehreren Ausführungsformen der vorliegenden Erfindung darstellt;
  • 4 ein beispielhafter Block einer Struktur (L1-Cache) eines Verzeichnisses von effektiven Adressen (EAD) gemäß einer veranschaulichenden Ausführungsform ist;
  • 5 ein beispielhafter Block einer Struktur einer Effektiv-Real-Tabelle (ERT) gemäß einer veranschaulichenden Ausführungsform ist;
  • 6 einen Ablaufplan eines beispielhaften Verfahrens zum Zugreifen auf einen Speicher zum Ausführen von Anweisungen durch eine LSU gemäß einer oder mehreren Ausführungsformen der vorliegenden Erfindung veranschaulicht;
  • 7 einen Ablaufplan für ein Verfahren zum erneuten Laden der ERT gemäß einer oder mehreren Ausführungsformen der vorliegenden Erfindung veranschaulicht;
  • 8 eine beispielhafte Struktur einer Synonymerkennungstabelle (SDT) gemäß einer oder mehreren Ausführungsformen der vorliegenden Erfindung darstellt;
  • 9 einen Ablaufplan für ein Verfahren zum Durchführen eines Austauschs einer EA in einer ERT und einer SDT gemäß einer oder mehreren Ausführungsformen der vorliegenden Erfindung veranschaulicht; und
  • 10 ein Blockschaubild eines Computersystems zum Implementieren einiger oder sämtlicher Aspekte einer oder mehrerer Ausführungsformen der vorliegenden Erfindung darstellt.
The particularities of the exclusive rights described herein are set out in detail and expressly claimed in the claims at the end of the description. The above and other features and advantages of embodiments of the invention will become apparent from the following detailed description when taken in conjunction with the accompanying drawings, in which:
  • 1 Figure 3 illustrates a block diagram of a system including an effective address based load store unit in an out-of-order (OoO) processor in accordance with one or more embodiments of the present invention;
  • 2 Figure 13 is an exemplary block diagram of a processor architecture of an OoO processor that implements an effective address directory (EAD) and the associated mechanisms for using that EAD in accordance with one or more embodiments of the present invention;
  • 3 Figure 12 illustrates a load store unit (LSU) of a processing core in accordance with one or more embodiments of the present invention;
  • 4th Figure 3 is an exemplary block of a structure (L1 cache) of a directory of effective addresses (EAD) according to an illustrative embodiment;
  • 5 Figure 3 is an exemplary block of an effective-real table (ERT) structure in accordance with an illustrative embodiment;
  • 6th Figure 3 illustrates a flow diagram of an exemplary method of accessing memory for execution of instructions by an LSU in accordance with one or more embodiments of the present invention;
  • 7th Figure 3 illustrates a flow diagram for a method of reloading the ERT in accordance with one or more embodiments of the present invention;
  • 8th Figure 3 illustrates an exemplary structure of a Synonym Recognition Table (SDT) in accordance with one or more embodiments of the present invention;
  • 9 Figure 11 illustrates a flow diagram for a method of performing a swap of an EA in an ERT and an SDT in accordance with one or more embodiments of the present invention; and
  • 10 Figure 3 illustrates a block diagram of a computer system for implementing some or all aspects of one or more embodiments of the present invention.

Die hierin dargestellten Schaubilder dienen der Veranschaulichung. Es sind viele Varianten des Schaubildes oder der darin beschriebenen Vorgänge möglich, ohne vom Wesensgehalt der Erfindung abzuweichen. Die Vorgänge können beispielsweise in einer abweichenden Reihenfolge durchgeführt werden, oder es können Vorgänge hinzugefügt, weggelassen oder modifiziert werden. Darüber hinaus beschreiben der Begriff „gekoppelt“ und Varianten davon das Vorhandensein eines Datenübertragungswegs zwischen zwei Elementen und unterstellen keine direkte Verbindung zwischen den Elementen, ohne dass sich dazwischenliegende Elemente/Verbindungen zwischen diesen befinden. Alle diese Varianten werden als Teil der Beschreibung betrachtet.The graphs presented herein are provided for illustrative purposes. Many variants of the diagram or of the processes described therein are possible without departing from the essence of the invention. For example, the operations can be performed in a different order, or operations can be added, omitted, or modified. In addition, the term “coupled” and variants thereof describe the existence of a data transmission path between two elements and do not imply a direct connection between the elements without intervening elements / connections between them. All of these variants are considered part of the description.

AUSFÜHRLICHE BESCHREIBUNGDETAILED DESCRIPTION

Eine oder mehrere hierin beschriebene Ausführungsformen der vorliegenden Erfindung stellen eine Lade-Speicher-Einheit (LSU) auf Grundlage von effektiven Adressen (EA) für einen Out-of-Order(OoO)-Prozessor durch dynamisches Entfernen von Einträgen in einer Tabelle von effektiven und realen Adressen in dem OoO-Prozessor bereit. Die hierin beschriebenen technischen Lösungen verwenden neben sonstigen Komponenten ein Verzeichnis von effektiven Adressen (EAD) in Verbindung mit einer Effektiv-Real-Tabelle (ERT) und einer Synonymerkennungstabelle (SDT), um eine Verringerung der Chip-Fläche zu erleichtern und eine Ablaufsteuerung von OoO-Prozessoren weiter zu verbessern.One or more embodiments of the present invention described herein provide an effective address (EA) based load store unit (EA) for an out-of-order (OoO) processor by dynamically removing entries in a table of effective addresses real addresses in the OoO processor. In addition to other components, the technical solutions described here use a directory of effective addresses (EAD) in conjunction with an effective real table (ERT) and a synonym recognition table (SDT) in order to facilitate a reduction in the chip area and a flow control of OoO -Processors to improve further.

Wie oben erwähnt, können aufgrund des OoO-Charakters moderner Prozessoren neuere Ladeanweisungen zur Ausführung vor älteren Speicheranweisungen an dieselbe reale Adresse (RA) ausgewählt werden. Wenn eine neuere Ladeanweisung vor einer älteren Speicheranweisung an dieselbe RA ausgeführt wird, gibt die neuere Ladeanweisung veraltete Daten zurück, und Anweisungen in einer Prozessor-Pipeline müssen aus der Pipeline gelöscht und erneut abgerufen werden, um die Programmkonsistenz wiederherzustellen. Typischerweise ist es wünschenswert, eine neuere Ladeanweisung zu verzögern, bis eine ältere Speicheranweisung für eine selbe RA ausgeführt wird, so dass sonstige unabhängige Anweisungen ausgeführt werden können und nicht unnötig aus einer Prozessor-Pipeline gelöscht werden. Ein Schritt beim Verringern von Löschungen aus einer Prozessor-Pipeline aufgrund einer Ausführung einer neueren Ladeanweisung vor einer älteren Speicheranweisung an eine selbe RA besteht darin, eine Lade-/Speicher-Sequenz zu erkennen, die an dieselbe RA gerichtet ist und OoO ausgeführt wird, so dass ein Löschen einer Prozessor-Pipeline erforderlich ist. Alternativ oder darüber hinaus werden die ältere Ladeanweisung aus einer Ladeneuordnungs-Warteschlange und alle nachfolgenden Anweisungen daraus aus der Ladeneuordnungs-Warteschlange oder aus einer Anweisungsabrufeinheit (instruction fetching unit, IFU) gelöscht. Ein Löschen einer Anweisung enthält ein Senden einer Löschnachricht (die eine entsprechende Kennung der Anweisung enthält) an die IFU.As noted above, because of the OoO nature of modern processors, newer load instructions can be selected to execute before older store instructions to the same real address (RA). If a newer load instruction executes before an older store instruction to the same RA, the newer load instruction will return stale data and instructions in a processor pipeline must be deleted from the pipeline and fetched again to restore program consistency. Typically, it is desirable to delay a newer load instruction until an older store instruction is executed for a same RA so that other independent instructions can be executed and are not unnecessarily deleted from a processor pipeline. One step in reducing deletions from a processor pipeline due to execution of a newer load instruction prior to an older store instruction to the same RA is to identify a load / store sequence directed to the same RA and executing OoO, so that a processor pipeline must be deleted. Alternatively, or in addition, the older load instruction is deleted from a load reorder queue and all subsequent instructions therefrom from the load reorder queue or from an instruction fetching unit (IFU). Deleting an instruction includes sending a delete message (containing a corresponding identifier of the instruction) to the IFU.

Die meisten modernen Computereinheiten unterstützen virtuelle Speicher. Bei einem virtuellen Speicher handelt es sich um eine Technik, durch die Anwendungsprogrammen der Eindruck vermittelt wird, dass sie über einen zusammenhängenden Arbeitsspeicher oder Adressraum verfügen, obwohl der physische Speicher möglicherweise fragmentiert ist und möglicherweise sogar auf einen Plattenspeicher überläuft. Im Wesentlichen erhält das Anwendungsprogramm eine Ansicht des Speichers der Datenverarbeitungseinheit, wobei die Anwendung mithilfe einer EA in dem für die Anwendung sichtbaren EA-Raum auf einen scheinbar zusammenhängenden Speicher zugreift, die dann in eine physische Adresse des/der tatsächlichen physischen Speichers oder Speichereinheit(en) umgesetzt wird, um die Zugriffsoperation tatsächlich durchzuführen. Bei einer EA handelt es sich um einen Wert, der dazu verwendet wird, eine Speicherposition anzugeben, auf die durch die Operation aus der Perspektive der Entität, z.B. einer Anwendung, eines Prozesses, eines Threads, einer Interrupt-Routine, einer Kernel-Komponente usw., die die Operation ausgibt, zugegriffen werden soll.Most modern computing devices support virtual storage. Virtual memory is a technique that gives application programs the impression that they have contiguous memory or address space, even though the physical memory may be fragmented and may even spill onto disk. Essentially, the application program receives a view of the memory of the data processing unit, with the application using an EA to access a seemingly contiguous memory in the EA space visible to the application, which is then stored in a physical address of the actual physical memory or memory unit (s ) is implemented to actually perform the access operation. An EA is a value that is used to indicate a memory position to which the operation accesses from the perspective of the entity, e.g. an application, a process, a thread, an interrupt routine, a kernel component, etc. . that the operation issues is to be accessed.

Das heißt, wenn eine Datenverarbeitungseinheit das Konzept von virtuellen Speichern nicht unterstützt, sind die EA und die physische Adresse identisch. Wenn die Datenverarbeitungseinheit jedoch virtuelle Speicher unterstützt, wird die EA der jeweiligen durch die Anwendung übermittelten Operation durch die Speicherzuordnungseinheit der Datenverarbeitungseinheit in eine physische Adresse umgesetzt, die die Position in dem physischen Speicher oder der/den physischen Speichereinheit(en) angibt, an der die Operation durchgeführt werden soll.That is, if a data processing unit does not support the concept of virtual storage, the EA and the physical address are identical. However, if the data processing unit supports virtual memory, the EA of the respective operation transmitted by the application is converted by the memory allocation unit of the data processing unit into a physical address that indicates the position in the physical memory or the physical memory unit (s) at which the Operation is to be performed.

Des Weiteren verwenden in modernen Datenverarbeitungseinheiten Prozessoren der Datenverarbeitungseinheiten Prozessoranweisungs-Pipelines, die eine Reihe von Datenverarbeitungselementen aufweisen, um Anweisungen (Operationen) zu verarbeiten, die durch Entitäten, z.B. Anwendungen, Prozesse usw., übermittelt werden. Anweisungs-Pipelining ist eine Technik zum Erhöhen eines Anweisungsdurchsatzes durch Aufteilen der Verarbeitung von Computeranweisungen auf eine Reihe von Schritten mit einem Speichern am Ende jedes Schritts. Das Anweisungs-Pipelining erleichtert der Steuerschaltung der Datenverarbeitungseinheit, Anweisungen an die Prozessoranweisungs-Pipeline mit der Verarbeitungsgeschwindigkeit des langsamsten Schritts auszugeben, die erheblich schneller ist als die Zeit, die zum gleichzeitigen Durchführen sämtlicher Schritte erforderlich ist. Prozessoren mit Anweisungs-Pipelining, d.h., in eine Pipeline eingestellte Prozessoren, sind intern in Stufen organisiert, die halb unabhängig an getrennten Aufgaben arbeiten können. Jede Stufe ist mit einer nächsten Stufe in einer fortlaufenden Kette organisiert und verbunden, so dass die Ausgabe jeder Stufe einer weiteren Stufe bis zur letzten Stufe der Pipeline zugeführt wird.Furthermore, in modern data processing units, processors of the data processing units use processor instruction pipelines which have a series of data processing elements in order to process instructions (operations) which are transmitted by entities, eg applications, processes, etc. Instruction pipelining is a technique of increasing instruction throughput by dividing the processing of computer instructions into a series of steps with a save at the end of each step. The instruction pipelining facilitates the control circuitry of the data processing unit to issue instructions to the processor instruction pipeline at the processing speed of the slowest step, which is considerably faster than the time required to perform all the steps simultaneously. Instruction pipelined processors, ie processors placed in a pipeline, are organized internally in stages that can work semi-independently on separate tasks. Each stage is organized and linked to a next stage in an ongoing chain so that the output of each stage is fed to another stage up to the last stage of the pipeline.

Solche in eine Pipeline eingestellten Prozessoren können die Form von in eine Pipeline eingestellten In-Order- oder Out-of-Order-Prozessoren annehmen. Bei in eine Pipeline eingestellten In-Order-Prozessoren werden Anweisungen in der Reihenfolge ausgeführt, so dass, wenn keine Daten für die Anweisung verfügbar sind, die auf einer bestimmten Stufe der Pipeline verarbeitet werden soll, eine Ausführung von Anweisungen durch die Pipeline verzögert werden kann, bis die Daten verfügbar sind. In eine Pipeline eingestellte OoO-Prozessoren ermöglichen dem Prozessor dagegen, Verzögerungen zu vermeiden, die auftreten, wenn die zum Durchführen einer Operation erforderlichen Daten nicht verfügbar sind. Die Anweisungs-Pipeline eines OoO-Prozessors vermeidet diese Verzögerungen, indem „Bereiche“ rechtzeitig mit sonstigen Anweisungen gefüllt werden, die zur Verarbeitung bereit sind, und anschließend die Ergebnisse am Ende der Pipeline neu angeordnet werden, um den Anschein zu erwecken, dass die Anweisungen in der Reihenfolge verarbeitet wurden. Die Weise, in der die Anweisungen in dem ursprünglichen Computercode angeordnet sind, wird als Programmreihenfolge bezeichnet, wohingegen sie in dem Prozessor in Datenreihenfolge verarbeitet werden, d.h., in der Reihenfolge, in der die Daten und Operanden in den Registern des Prozessors verfügbar werden.Such pipeline processors may take the form of pipeline in-order or out-of-order processors. With in-order processors placed in a pipeline, instructions are executed in order so that if there is no data available for the instruction to be processed at a particular stage in the pipeline, execution of instructions through the pipeline may be delayed until the data is available. On the other hand, pipelined OoO processors allow the processor to avoid delays that occur when the data required to perform an operation is not available. An OoO processor's instruction pipeline avoids these delays by timely filling "areas" with other instructions that are ready to be processed and then rearranging the results at the end of the pipeline to make the instructions appear to be were processed in the order. The way in which the instructions are arranged in the original computer code is called program order, whereas in the processor they are processed in data order, i.e., in the order in which the data and operands become available in the registers of the processor.

Moderne Prozessoranweisungs-Pipelines verfolgen eine EA einer Anweisung, während die Anweisung durch die Anweisungs-Pipeline verläuft. Es ist wichtig, die EA der Anweisung zu verfolgen, da diese EA immer dann verwendet wird, wenn die Verarbeitung einer Anweisung zu einem Auftreten einer Ausnahme führt, die Anweisung in einen vorherigen Zustand gelöscht wird, die Anweisung im Verhältnis zu ihrer aktuellen Speicherposition zu einer neuen Speicherposition verzweigt oder die Ausführung der Anweisung abgeschlossen wird.Modern processor instruction pipelines track an EA of an instruction as the instruction progresses through the instruction pipeline. It is important to keep track of the EA of the instruction, as this EA is used whenever the processing of an instruction results in an exception occurring, the instruction is deleted to a previous state, the instruction relative to its current storage location to a branches to the new location or the execution of the statement completes.

Ein Verfolgen der EA einer Anweisung ist im Hinblick auf die Chip-Fläche des Prozessors, den Stromverbrauch und dergleichen aufwändig. Dies liegt daran, dass diese EAs große Größen (z.B. 64 Bit) aufweisen und moderne Prozessoranweisungs-Pipelines tief sind, d.h., viele Stufen aufweisen, was dazu führt, dass die Lebensdauer einer Anweisung von einer Anweisungsabrufstufe der Prozessoranweisungs-Pipeline bis zu einer Abschlussstufe der Prozessoranweisungs-Pipeline sehr lang ist. Dieser Aufwand kann bei OoO-Prozessoren mit starkem Multithreading, d.h., bei Prozessoren, die Anweisungen von mehreren Threads auf OoO-Weise ausführen, weiter steigen, da eine große Anzahl von Anweisungen aus verschiedenen Adressbereichen „in flight“, d.h., gleichzeitig verarbeitet werden können.Tracking the EA of an instruction is laborious in terms of the chip area of the processor, power consumption and the like. This is because these EAs are large in size (e.g. 64 bits) and modern processor instruction pipelines are deep, that is, have many stages, which results in the lifetime of an instruction from an instruction fetch stage of the processor instruction pipeline to a completion stage of the Processor instruction pipeline is very long. This effort can increase further with OoO processors with strong multithreading, ie with processors that execute instructions from several threads in OoO fashion, since a large number of instructions from different address ranges can be processed "in flight", ie simultaneously .

In einem oder mehreren Beispielen verwenden Datenverarbeitungseinheiten eine Kombination aus Pipeline-Latches, einer Verzweigungsinformations-Warteschlange (branch information queue, BIQ) und einer globalen Abschlussstabelle (global completion table, GCT), um die EA einer Anweisung zu verfolgen. Die Basis-EA für eine Gruppe von Anweisungen wird von dem vorderen Ende der Pipeline mithilfe von Latches übertragen, bis sie in der GCT der Anweisungsablaufsteuereinheit (instruction sequencer unit, ISU) abgelegt und verfolgt werden kann. Die Anzahl der Latches, die zum Speichern dieser Daten benötigt werden, liegt in der Größenordnung der Anzahl der Pipeline-Stufen zwischen einer Abrufstufe und einer Zuteilungsstufe der Pipeline. Dies ist verschwenderisch, da die EA während dieser Stufen typischerweise nicht benötigt wird. Vielmehr handelt es sich einfach um Nutzdaten, die mit der Anweisungsgruppe „mitgeführt“ werden, während diese durch die Pipeline verläuft. Darüber hinaus führt dieses Verfahren zu einer doppelten Speicherung, da Verzweigungsanweisungen ihre EAs sowohl in der BIQ als auch in der GCT aufweisen.In one or more examples, computing devices use a combination of pipeline latches, a branch information queue (BIQ), and a global completion table (GCT) to keep track of the EA of an instruction. The base EA for a group of instructions is latched from the front end of the pipeline until it can be placed and tracked in the GCT of the instruction sequencer unit (ISU). The number of latches that are required to store this data is of the order of magnitude of the number of pipeline stages between a retrieval stage and an allocation stage of the pipeline. This is wasteful as the EA is typically not needed during these stages. Rather, it is simply user data that is “carried along” with the instruction group as it runs through the pipeline. In addition, this method leads to double storage, since branch instructions have their EAs in both the BIQ and the GCT.

Dementsprechend sind Datenverarbeitungseinheiten entwickelt worden, die diese Ineffizienz beseitigen, indem die EA ausschließlich in der GCT verfolgt wird. Beispielsweise erstellt bei diesen neuen Datenverarbeitungseinheiten eine Anweisungsablaufsteuereinheit zum Abrufzeitpunkt einen Eintrag in der GCT. Die EA wird zu diesem Zeitpunkt in die GCT geladen und anschließend entfernt, wenn die Anweisung abgeschlossen ist. Dadurch werden zahlreiche Pipeline-Latches in der gesamten Maschine beseitigt. Anstelle einer vollständigen EA, die so lang wie die Anzahl der Adresszeilen ist, beispielsweise eine EA von 64 Bit, wird ein kleines Tag zusammen mit der Anweisungsgruppe durch die Pipeline mitgeführt. Dieses Tag verweist zurück auf den Eintrag in der GCT, der die Basis-EA für diese Anweisungsgruppe enthält. Ein Speichern von Adressen in der BIQ ist nicht mehr erforderlich, da Verzweigungen ihre EA direkt aus der GCT abrufen können, wenn sie ausgegeben werden. Solche Techniken verbessern die Flächeneffizienz, sie sind jedoch bei einem OoO-Prozessor nicht anwendbar. Des Weiteren fehlen ihnen ausreichende Daten, um Adressanforderungen zu verarbeiten, die außerhalb der Programmreihenfolge eintreffen. Darüber hinaus können diese Techniken die für eine OoO-Ausführung erforderliche Zuteilungs- und Abschlussbandbreite nicht unterstützen, da sie nicht in der Lage sind, Anweisungsgruppen zu verfolgen, die möglicherweise aus mehreren nicht zusammenhängenden Adressbereichen ausgebildet worden sind. In der Vergangenheit haben solche Mechanismen nur Anweisungsgruppen aus einem einzigen Adressbereich unterstützt, wodurch die Anzahl der Anweisungen, die für eine OoO-Ausführung verfügbar sind, erheblich verringert werden kann. Um nach entsprechenden Adressen wie beispielsweise einer RA, die einer EA entspricht (oder umgekehrt), zu suchen, wird des Weiteren ein inhaltsadressierbarer Speicher (Content Addressable Memory, CAM) verwendet. Ein CAM implementiert eine Suchtabellenfunktion in einem einzelnen Taktzyklus mithilfe einer dedizierten Vergleichsschaltung. Die Gesamtfunktion eines CAM besteht darin, ein Suchwort aufzugreifen und die entsprechende Speicherposition zurückzugeben. Ein solcher CAM beansprucht jedoch Chip-Fläche und verbraucht Strom für solche Suchen.Accordingly, data processing units have been developed that eliminate this inefficiency by tracking the EA exclusively in the GCT. For example, in these new data processing units, an instruction flow control unit creates an entry in the GCT at the time of the request. The EA is loaded into the GCT at this point and then removed when the statement completes. This eliminates numerous pipeline latches across the machine. Instead of a complete EA that is as long as the number of address lines, for example an EA of 64 bits, a small tag is carried through the pipeline together with the instruction group. This tag points back to the entry in the GCT that contains the base EA for this instruction group. It is no longer necessary to store addresses in the BIQ, since branches can retrieve their EA directly from the GCT when they are output. Such techniques improve area efficiency, but they are not applicable to an OoO processor. Furthermore, they lack sufficient data to process address requests outside of the Arrive program sequence. In addition, these techniques cannot support the allocation and termination bandwidth required for OoO execution because they are unable to keep track of instruction groups that may have been formed from multiple non-contiguous address ranges. In the past, such mechanisms have only supported groups of instructions from a single address range, which can significantly reduce the number of instructions available for OoO execution. A content addressable memory (CAM) is also used to search for corresponding addresses such as an RA that corresponds to an EA (or vice versa). A CAM implements a look-up table function in a single clock cycle using a dedicated compare circuit. The overall function of a CAM is to pick up a search term and return the appropriate memory location. However, such a CAM takes up chip area and consumes power for such searches.

Des Weiteren werden solche Umwandlungen einer EA in eine entsprechende RA typischerweise auf einer zweiten Ebene einer dem Prozessor zugehörigen Speicherverschachtelung durchgeführt. So, wie er hierin verwendet wird, bezieht sich der Begriff Speicherverschachtelung auf die verschiedenen Typen von Speichern, die durch einen Prozessor zum Speichern von Daten verwendet werden können. Im Allgemeinen enthält die Speicherverschachtelung eine Hierarchie von Caches und physischen Speichern. Mit steigender Ebene der Speicherverschachtelung nimmt im Allgemeinen der Abstand von dem Prozessor zu den Daten zu, und eine Zugriffslatenzzeit des Prozessors zum Abrufen der Daten nimmt ebenfalls zu. Auf diese Weise verlangsamt ein Umwandeln einer EA in eine RA die Prozessorausführung.Furthermore, such conversions of an EA into a corresponding RA are typically carried out on a second level of a memory nesting belonging to the processor. As used herein, the term memory interleaving refers to the various types of memories that can be used by a processor to store data. In general, memory interleaving contains a hierarchy of caches and physical memories. Generally, as the level of memory interleaving increases, the distance from the processor to the data increases, and an access latency of the processor to retrieve the data also increases. In this way, converting an EA to an RA slows processor execution.

Die veranschaulichenden Ausführungsformen von hierin beschriebenen technischen Lösungen führen zu Verbesserungen an diesen Techniken, indem sie ein Verzeichnis von effektiven Adressen (EAD), eine Effektiv-Real-Tabelle (ERT) und eine Synonymerkennungstabelle (SDT) bereitstellen, die die Flächeneffizienz der oben beschriebenen GCT-Lösung aufweisen, die jedoch auch eine OoO-Pipeline mit breiter Ausgabe unterstützen können, ohne die Leistungsfähigkeit zu beeinträchtigen. Die hierin beschriebenen technischen Lösungen erleichtern es den Prozessoren des Weiteren, nur mit EAs zu arbeiten, sofern der Prozessor EA-Synonyme innerhalb eines Out-of-Order(OoO)-Fensters vermeiden kann. Bei dem OoO-Fenster handelt es sich um einen Satz von Anweisungen in einer Anweisungs-Pipeline des Prozessors. Durch Vermeiden von EA-Synonymen in dem OoO-Fenster verringert der Prozessor die Chip-Fläche und den Stromverbrauch für die Adressumsetzung, da der Prozessor eine Umsetzung für die EA in dem OoO-Fenster vermeiden kann.The illustrative embodiments of technical solutions described herein improve these techniques by providing an Effective Address Directory (EAD), an Effective Real Table (ERT), and a Synonym Recognition Table (SDT) that enhances the area efficiency of the GCT described above Solution, but which can also support a wide-output OoO pipeline without sacrificing performance. The technical solutions described herein also make it easier for processors to only work with EAs, provided the processor can avoid EA synonyms within an out-of-order (OoO) window. The OoO window is a set of instructions in an instruction pipeline of the processor. By avoiding EA synonyms in the OoO window, the processor reduces the chip area and the power consumption for address translation, since the processor can avoid a translation for the EA in the OoO window.

Mit anderen Worten, die hierin beschriebenen technischen Lösungen behandeln das technische Problem, indem sie gegen EA-Aliasing innerhalb des OoO-Fensters vorgehen und auf diese Weise Umsetzungsdatenstrukturen und Hardware für die Lade-/Speicher-Anschlüsse verringern. Dementsprechend erleichtern die hierin beschriebenen technischen Lösungen eine Verringerung der Chip-Fläche, indem nur eine Adresse, die EA, verfolgt wird. Des Weiteren erleichtern die technischen Lösungen dem OoO-Prozessor, in einem 2-Lade- und 2-Speicher-Modus mit unterteilten Lade-Speicher-Warteschlangen zu arbeiten, wodurch die CAM-Anschlüsse weiter verringert werden, die typischerweise für die Adressumsetzung verwendet werden.In other words, the technical solutions described herein address the technical problem by taking action against EA aliasing within the OoO window and in this way reducing conversion data structures and hardware for the load / store connections. Accordingly, the technical solutions described herein facilitate a reduction in chip area by only tracking one address, the EA. Furthermore, the technical solutions make it easier for the OoO processor to work in a 2-load and 2-store mode with subdivided load / store queues, which further reduces the CAM connections that are typically used for address translation.

Beispielsweise kann ein Prozessor, der in der Lage ist, Anweisungen OoO auszugeben und auszuführen, zulassen, dass Ladeanweisungen vor Speicheranweisungen ausgeführt werden. In der Annahme, dass sich eine reale Adresse (RA) einer neueren Ladeanweisung nicht mit einer RA einer älteren Speicheranweisung überschneidet, kann eine OoO-Ausführung der neueren Ladeanweisung und der älteren Speicheranweisung Vorteile bei der Leistungsfähigkeit bieten. In einem typischen Programm ist die Wahrscheinlichkeit, dass sich eine RA einer neueren Ladeanweisung mit einer RA einer älteren Speicheranweisung (die nach der neueren Ladeanweisung ausgeführt wird) überschneidet, relativ gering. Bekanntlich wird eine Speicherverletzungsbedingung (Store-Hit-Load (Speichern trifft auf Laden), SHL) angegeben, wenn eine RA einer Speicheranweisung in einer Ladeneuordnungs-Warteschlange (LRQ) einer Lade-Speicher-Einheit (LSU) auftrifft. Das heißt, wenn eine RA einer neu ausgegebenen älteren Speicheranweisung mit einer RA einer neueren Ladeanweisung übereinstimmt, die sich in der LRQ der LSU befindet, wird ein SHL angegeben. Da ein Erkennen eines SHL jedoch typischerweise in einer Anweisungsausführungs-Pipeline spät auftritt, führt ein Wiederherstellen von einem SHL typischerweise zu einer relativ starken Einbuße bei der Prozessorleistung. Beispielsweise enthält ein Wiederherstellen von einem SHL typischerweise ein Ungültigmachen der neueren Ladeanweisung, die das SHL verursacht hat, und ein erneutes Ausgeben der neueren Ladeanweisung sowie sämtlicher Anweisungen, die nach der älteren Speicheranweisung ausgegeben wurden.For example, a processor capable of issuing and executing instructions OoO may allow load instructions to be executed before store instructions. Assuming that a real address (RA) of a newer load instruction does not overlap with an RA of an older store instruction, OoO execution of the newer load instruction and the older store instruction can provide performance advantages. In a typical program, the likelihood that an RA of a newer load instruction will overlap with an RA of an older store instruction (which is executed after the newer load instruction) is relatively small. As is known, a store hit load (SHL) condition is indicated when a RA of a store instruction hits a load relocation queue (LRQ) of a load store unit (LSU). That is, if an RA of a newly issued older store instruction matches an RA of a newer load instruction, which is located in the LRQ of the LSU, an SHL is indicated. However, since a detection of an SHL typically occurs late in an instruction execution pipeline, restoring from an SHL typically results in a relatively severe penalty in processor performance. For example, restoring from an SHL typically includes invalidating the newer load instruction that caused the SHL and reissuing the newer load instruction as well as any instructions issued after the older store instruction.

Wenn des Weiteren zum Beispiel zwei Ladeanweisungen an dieselbe Adresse OoO ausgeführt werden und der Wert der Daten an dieser Adresse zwischen den Ausführungen der beiden Ladeanweisungen (z.B. durch einen weiteren Prozessor) geändert wird, erhält das spätere (d.h., das neuere) Laden einen früheren (d.h., einen alten) Wert und erhält das frühere (d.h., das ältere) Laden einen späteren (d.h., einen neuen) Wert. Diese Situation wird als „Verletzung der Lade-Lade-Reihenfolge“ oder als „Load-Hit-Load(Laden trifft auf Laden)-Risiko“ bezeichnet. Die Anforderung, dass, wenn eine neuere Ladeanweisung alte Daten erhält, eine ältere Ladeanweisung an dieselbe Adresse keine neuen Daten erhalten darf, wird als „sequentielle Ladekonsistenz“ bezeichnet. Wenn eine spätere (d.h., eine neuere) Ladeanweisung ausgeführt wird, bevor eine frühere (d.h., eine ältere) Speicheranweisung an dieselbe Adresse (d.h., Speicherposition) abgeschlossen ist, erhält die Ladeanweisung darüber hinaus einen früheren (d.h., einen alten) Wert. Diese Situation wird als „Verletzung der Lade-Speicher-Reihenfolge‟ oder als „Load-Hit-Store(Laden trifft auf Speichern)-Risiko“ bezeichnet. (Siehe zum Beispiel „Power4 System Microarchitecture“ von J. M. Tendler et al., IBM Journal of Research and Development, Band 46, Nummer 1, Januar 2002, S. 5 bis 25 ).Furthermore, if, for example, two load instructions are executed to the same address OoO and the value of the data at this address is changed between the executions of the two load instructions (e.g. by another processor), the later (ie, the newer) load receives an earlier (ie, old) value and the earlier (ie, older) store gets a later (ie, new) value. This situation is known as a “violation of the load-load sequence” or as a “load-hit-load” risk. The requirement that if a newer load instruction receives old data, an older load instruction at the same address must not receive any new data, is referred to as "sequential load consistency". In addition, if a later (ie, newer) load instruction is executed before an earlier (ie, older) store instruction to the same address (ie, memory location) completes, the load instruction is given an earlier (ie, old) value. This situation is called "Violation of the load-store sequence" or referred to as a "load hit store (load meets store) risk". (See for example "Power4 System Microarchitecture" by JM Tendler et al., IBM Journal of Research and Development, Volume 46, Number 1, January 2002, pp. 5 to 25 ).

Bei dem OoO-Prozessor, der mithilfe von EAs (und nicht RAs) arbeitet, bestehen jedoch technische Probleme darin, die SHL- und LHL-Bedingungen nur auf der Grundlage von EAs zu erkennen und ein weiteres Wiederherstellen aus diesen Situationen zu erreichen. Typischerweise weisen Prozessoren dedizierte Hardware auf, um Verletzungen der Lade-Lade- und der Lade-Speicher-Reihenfolge zu vermeiden, wodurch eine Gewährleistung der Programmkorrektheit unterstützt wird. Eine solche Hardware ist jedoch typischerweise komplex und führt zu Zeitverzögerungen. Des Weiteren stützt sich eine solche Hardware auf eine Verwendung von RA, um Risikobedingungen zu erkennen, wodurch eine größere Chip-Fläche (für Umsetzungs-/CAM-Anschlüsse) eingenommen wird und mehr Strom für die EA-RA- und/oder RA-EA-Umsetzung(en) verbraucht wird. Die hierin beschriebenen technischen Lösungen behandeln solche technischen Probleme mithilfe der EA und mithilfe von Indizes einer Effektiv-Real-Umsetzungstabelle (ERT), die mit EAD-Einträgen gespeichert sind. Die technischen Lösungen hierin verwenden eine Load-Hit-Load-Tabelle, um Load-Hit-Load-Risiken zu erkennen und auf solche Situationen zu reagieren. Die technischen Lösungen erleichtern es dem OoO-Prozessor auf diese Weise, weniger Chip-Fläche zum Speichern und Verarbeiten von realen Adressen vorzusehen.However, the OoO processor using EAs (and not RAs) has technical problems in recognizing the SHL and LHL conditions based only on EAs and achieving further recovery from these situations. Typically, processors have dedicated hardware in order to avoid violations of the load-load and load-store sequence, which helps ensure that the program is correct. However, such hardware is typically complex and introduces time delays. Furthermore, such hardware relies on using RA to detect risk conditions, thereby taking up a larger chip area (for conversion / CAM connections) and more power for the EA-RA and / or RA-EA -Implementation (s) is consumed. The technical solutions described herein address such technical problems using the EA and using indexes of an effective-to-real translation table (ERT) stored with EAD entries. The technical solutions herein use a load-hit-load table to identify load-hit-load risks and react to such situations. In this way, the technical solutions make it easier for the OoO processor to provide less chip area for storing and processing real addresses.

Unter Bezugnahme auf 1 wird ein Blockschaltbild eines Systems 100, das eine Anweisungssequenzbildungseinheit (ISU) eines OoO-Prozessors zum Implementieren der technischen Lösungen zum Vermeiden von EA-Synonymen in einem OoO-Anweisungsfenster enthält, allgemein gemäß einer oder mehreren Ausführungsformen der vorliegenden Erfindung dargestellt. Das in 1 dargestellte System 100 enthält eine Anweisungsabrufeinheit/Anweisungsentschlüsselungseinheit (instruction fetch unit/instruction decode unit, IFU/IDU) 106, die Anweisungen zum Eingeben in einen Einrichtungsblock 108 abruft und entschlüsselt, der die entschlüsselten Anweisungen zum Eingeben in eine Zuordnungsfunktion 110 der ISU vorbereitet. Gemäß einer oder mehreren Ausführungsformen der vorliegenden Erfindung können sechs Anweisungen gleichzeitig von einem Thread durch die IFU/IDU 106 abgerufen und entschlüsselt werden. Gemäß einer oder mehreren Ausführungsformen der vorliegenden Erfindung können die sechs an den Einrichtungsblock 108 gesendeten Anweisungen sechs Nicht-Verzweigungsanweisungen, fünf Nicht-Verzweigungsanweisungen und eine Verzweigungsanweisung oder vier Nicht-Verzweigungsanweisungen und zwei Verzweigungsanweisungen enthalten. Gemäß einer oder mehreren Ausführungsformen der vorliegenden Erfindung überprüft der Einrichtungsblock 108, ob ausreichende Ressourcen wie zum Beispiel Einträge in den Ausgabewarteschlangen, der Abschlusstabelle, den Zuordnungsfunktionen und den Registerdateien vorhanden sind, bevor die abgerufenen Anweisungen an diese Blöcke in der ISU übertragen werden.With reference to 1 becomes a block diagram of a system 100 , which includes an instruction sequencing unit (ISU) of an OoO processor for implementing the technical solutions for avoiding EA synonyms in an OoO instruction window, illustrated generally in accordance with one or more embodiments of the present invention. This in 1 illustrated system 100 includes an instruction fetch unit / instruction decode unit (IFU / IDU) 106, the instructions for input into a facility block 108 retrieves and decrypts the decrypted instructions for input into a mapping function 110 prepared by the ISU. According to one or more embodiments of the present invention, six instructions can be issued simultaneously from a thread through the IFU / IDU 106 can be accessed and decrypted. According to one or more embodiments of the present invention, the six can be attached to the device block 108 instructions sent contain six non-branch instructions, five non-branch instructions and one branch instruction, or four non-branch instructions and two branch instructions. According to one or more embodiments of the present invention, the device block verifies 108 whether there are sufficient resources such as entries in the output queues, termination table, allocation functions, and register files before the fetched instructions are transmitted to these blocks in the ISU.

Die in 1 dargestellten Zuordnungsfunktionen 110 ordnen Programmiereranweisungen (z.B. logische Registernamen) physischen Ressourcen des Prozessors (z.B. physischen Registeradressen) zu. In 1 wird eine Vielfalt von Zuordnungsfunktionen 110 dargestellt, darunter eine Zuordnungsfunktion für Bedingungsregister (condition register, CR); eine Zuordnungsfunktion für Verbindungs-/Anzahl-Register (Link/Count (LNK/CNT) register); eine Zuordnungsfunktion für Ganzzahl-Ausnahmeregister (integer exception register, XER); eine einheitliche Zuordnungsfunktion (Unified Mapper, UMapper) zum Zuordnen von Allgemeinregistern (general purpose registers, GPRs) und Vektor-Skalar-Registern (vectorscalar registers, VSRs); eine strukturierte Zuordnungsfunktion (architected mapper, ARCH Mapper) zum Zuordnen von GPRs und VSRs; und eine Zuordnungsfunktion für Gleitkommastatus- und Steuerregister (floating point status and control register, FPSCR).In the 1 mapping functions shown 110 assign programmer instructions (e.g. logical register names) to physical resources of the processor (e.g. physical register addresses). In 1 becomes a variety of mapping functions 110 shown, including a condition register (CR) mapping function; a link / count (LNK / CNT) register; an integer exception register (XER) mapping function; a Unified Mapper (UMapper) for mapping general purpose registers (GPRs) and vector-scalar registers (VSRs); an architected mapper (ARCH mapper) for mapping GPRs and VSRs; and a floating point status and control register (FPSCR) mapping function.

Die Ausgabe aus dem Einrichtungsblock 108 wird auch in eine globale Abschlusstabelle (GCT) 112 eingegeben, um alle aktuell in der ISU befindlichen Anweisungen zu verfolgen. Die Ausgabe aus dem Einrichtungsblock 108 wird auch in eine Zuteilungseinheit 114 eingegeben, um die Anweisungen einer Ausgabewarteschlange zuzuteilen. Die Ausführungsform der in 1 dargestellten ISU enthält eine CR-Ausgabewarteschlange, CR-ISQ116, die Anweisungen von der CR-Zuordnungsfunktion empfängt und verfolgt und diese an die Anweisungsabrufeinheit (IFU) 124 ausgibt 120, um logische CR-Anweisungen und Bewegungsanweisungen auszuführen. Darüber hinaus wird in 1 eine Verzweigungsausgabe-Warteschlange, Verzweigungs-ISQ 118, dargestellt, die Verzweigungsanweisungen und physische LNK/CNT-Adressen von der LNK/CNT-Zuordnungsfunktion empfängt und verfolgt. Die Verzweigungs-ISQ 118 kann eine Anweisung an die IFU 124 ausgeben, um ein Abrufen von Anweisungen umzuleiten, wenn eine vorhergesagte Verzweigungsadresse und/oder -richtung falsch war.The output from the facility block 108 is also included in a global closing table (GCT) 112 to keep track of all instructions currently in the ISU. The output from the facility block 108 is also in an allocation unit 114 to dispatch the instructions to an output queue. The embodiment of the in 1 The ISU shown contains a CR output queue, CR-ISQ116, which receives and tracks instructions from the CR mapping function and sends them to the instruction fetch unit (IFU) 124 issues 120 to execute CR logic and move instructions. In addition, in 1 a Branch Issue Queue, Branch ISQ 118 , which receives and tracks branch instructions and LNK / CNT physical addresses from the LNK / CNT mapping function. The branch ISQ 118 can send an instruction to the IFU 124 issue to redirect instruction fetching when a predicted branch address and / or direction was incorrect.

Von der Zuteilungslogik ausgegebene Anweisungen und umbenannte Register von der LNK/CNT-Zuordnungsfunktion, der XER-Zuordnungsfunktion, des UMappers (GPR/VSR), der ARCH-Zuordnungsfunktion (GPR/VSR) und der FPSCR-Zuordnungsfunktion werden in die Ausgabewarteschlange 102 eingegeben. Wie in 1 dargestellt, verfolgt die Ausgabewarteschlange 102 zugeteilte Festkomma-Anweisungen (Fx), Ladeanweisungen (L), Speicheranweisungen (S) und Anweisungen für die Vektor- und Zähler-Einheit (VSU). Wie in der Ausführungsform von 1 dargestellt, ist die Ausgabewarteschlange 102 in zwei Teile, ISQ0 1020 und ISQ1 1021, aufgeteilt, wobei jeder Abschnitt N/2 Anweisungen enthält. Wenn der Prozessor im Einzel-Thread(single threaded, ST)-Modus ausgeführt wird, kann die Ausgabewarteschlange 102 als einzelne logische Ausgabewarteschlange verwendet werden, die sowohl ISQ0 1020 als auch ISQ1 1021 enthält, um alle Anweisungen (in diesem Beispiel sämtliche N Anweisungen) eines einzelnen Threads zu verarbeiten.Instructions issued by the allocation logic and renamed registers from the LNK / CNT allocation function, the XER allocation function, the UMapper (GPR / VSR), the ARCH allocation function (GPR / VSR) and the FPSCR allocation function are placed in the output queue 102 entered. As in 1 shown tracks the output queue 102 allocated fixed point instructions (Fx), load instructions (L), store instructions (S) and instructions for the vector and counter unit (VSU). As in the embodiment of 1 shown is the output queue 102 split into two parts, ISQ0 1020 and ISQ1 1021, with each section containing N / 2 instructions. When the processor is running in single threaded (ST) mode, the output queue may 102 can be used as a single logical output queue containing both ISQ0 1020 and ISQ1 1021 to process all instructions (all N instructions in this example) of a single thread.

Wenn der Prozessor im Multi-Thread(MT)-Modus ausgeführt wird, kann ISQ0 1020 zum Verarbeiten von N/2 Anweisungen von einem ersten Thread verwendet werden, und ISQ1 1021 wird zum Verarbeiten von N/2 Anweisungen von einem zweiten Thread ISQ1 1021 verwendet.When the processor is running in Multi-Thread (MT) mode, ISQ0 1020 can be used to process N / 2 instructions from a first thread, and ISQ1 1021 is used to process N / 2 instructions from a second thread, ISQ1 1021 .

Wie in 1 dargestellt, gibt die Ausgabewarteschlange 102 Anweisungen an die Ausführungseinheiten 104 aus, die in zwei Gruppen von Ausführungseinheiten, 1040 und 1041, aufgeteilt sind. Beide Gruppen von Ausführungseinheiten, 1040 und 1041, die in 1 dargestellt werden, enthalten eine Einheit zur vollständigen Festkommaausführung (vollständige FX0, vollständige FX1); eine Ladeausführungseinheit (LU0, LU1); eine Einheit zur einfachen Festkomma-, Datenspeicher- und Adressspeicherausführung (einfache FX0/STD0/STA0, einfache FX1/STD1/STA1); und eine Einheit zur Gleitkomma-, Vektor-Multimedia-Erweiterungs-, dezimalen Gleitkomma- und Datenspeicherausführung (FP/VMX/DFP/STD0, FP/VMX/DFP/STD1). Zusammen bilden die LU0, die einfache FX0/STD0/STA0 und die FP/VMX/DFP/STD0 eine Lade-Speicher-Einheit (LSU) 1042 aus. In ähnlicher Weise bilden die LU1, die einfache FX1/STD1/STA1 und die FP/VMX/DFP/STD1 eine Lade-Speicher-Einheit (LSU) 1043 aus. Die beiden LSUs 1042 und 1043 werden zusammen als LSU des Systems 100 bezeichnet.As in 1 is the output queue 102 Instructions to the execution units 104 which are divided into two groups of execution units, 1040 and 1041. Both groups of execution units, 1040 and 1041, included in the 1 contain a unit for complete fixed-point execution (complete FX0, complete FX1); a load execution unit (LU0, LU1); one unit for simple fixed point, data memory and address memory execution (simple FX0 / STD0 / STA0, simple FX1 / STD1 / STA1); and a unit for floating point, vector multimedia expansion, decimal floating point and data storage execution (FP / VMX / DFP / STD0, FP / VMX / DFP / STD1). Together the LU0, the simple FX0 / STD0 / STA0 and the FP / VMX / DFP / STD0 form a load storage unit (LSU) 1042 out. Similarly, the LU1, the simple FX1 / STD1 / STA1 and the FP / VMX / DFP / STD1 form a load storage unit (LSU) 1043 out. The two LSUs 1042 and 1043 are collectively called the LSU of the system 100 designated.

Wie in 1 dargestellt, führt, wenn der Prozessor im ST-Modus ausgeführt wird, die erste Gruppe von Ausführungseinheiten 1040 Anweisungen aus, die von der ISQ0 1020 ausgegeben werden, und führt die zweite Gruppe von Ausführungseinheiten 1041 Anweisungen aus, die von der ISQ1 1021 ausgegeben werden. Bei alternativen Ausführungsformen der vorliegenden Erfindung können, wenn der Prozessor im ST-Modus ausgeführt wird, Anweisungen, die sowohl von der ISQ0 1020 als auch von der ISQ1 1021 in der Ausgabewarteschlange 102 ausgegeben werden, an Ausführungseinheiten in einer beliebigen der Ausführungseinheiten 1040 in der ersten Gruppe von Ausführungseinheiten 1040 und der zweiten Gruppe von Ausführungseinheiten 1041 ausgegeben werden.As in 1 shown, when the processor is executing in ST mode, the first group of execution units performs 1040 Instructions issued by ISQ0 1020 and executes the second group of execution units 1041 Instructions issued by the ISQ1 1021. In alternative embodiments of the present invention, when the processor is running in ST mode, instructions issued by both ISQ0 1020 and ISQ1 1021 may be in the issue queue 102 are issued to execution units in any of the execution units 1040 in the first group of execution units 1040 and the second group of execution units 1041 are issued.

Gemäß einer oder mehreren Ausführungsformen der vorliegenden Erfindung, führt, wenn der Prozessor im MT-Modus ausgeführt wird, die erste Gruppe von Ausführungseinheiten 1040 Anweisungen des ersten Threads aus, die von der ISQ0 1020 ausgegeben werden, und führt die zweite Gruppe von Ausführungseinheiten 1041 Anweisungen des zweiten Threads aus, die von der ISQ1 1021 ausgegeben werden.In accordance with one or more embodiments of the present invention, when the processor is executing in MT mode, the first group of execution units performs 1040 Instructions of the first thread, which are issued by ISQ0 1020, and executes the second group of execution units 1041 Instructions of the second thread, which are issued by the ISQ1 1021.

Die Anzahl von Einträgen in der Ausgabewarteschlange 102 und Größen sonstiger Elemente (z.B. Busbreiten, Warteschlangengrößen), die in 1 dargestellt werden, sollen beispielhaft sein, da Ausführungsformen der vorliegenden Erfindung für Ausgabewarteschlangen und sonstige Elemente einer Vielfalt unterschiedlicher Größen implementiert werden können. Gemäß einer oder mehreren Ausführungsformen der vorliegenden Erfindung sind die Größen auswählbar oder programmierbar.The number of entries in the output queue 102 and sizes of other elements (e.g. bus widths, queue sizes) that are included in 1 are intended to be exemplary in that embodiments of the present invention can be implemented for output queues and other elements of a variety of different sizes. According to one or more embodiments of the present invention, the sizes are selectable or programmable.

In einem oder mehreren Beispielen handelt es sich bei dem System 100 gemäß den veranschaulichenden Ausführungsformen um einen OoO-Prozessor. 2 ist ein beispielhaftes Blockschaubild einer Prozessorarchitektur eines OoO-Prozessors, in dem ein EAD und die zugehörigen Mechanismen zum Verwenden dieses EAD gemäß einer oder mehreren Ausführungsformen der vorliegenden Erfindung implementiert sind. Wie in 2 dargestellt, enthält die Prozessorarchitektur einen Anweisungs-Cache 202, einen Anweisungsabrufpuffer 204, eine Anweisungsentschlüsselungseinheit 206 und eine Anweisungszuteilungseinheit 208. Anweisungen werden durch den Anweisungsabrufpuffer 204 aus dem Anweisungs-Cache 202 abgerufen und der Anweisungsentschlüsselungseinheit 206 bereitgestellt. Die Anweisungsentschlüsselungseinheit 206 entschlüsselt die Anweisung und stellt die entschlüsselte Anweisung der Anweisungszuteilungseinheit 208 bereit. Die Ausgabe der Anweisungszuteilungseinheit 208 wird der globalen Abschlusstabelle 210 und abhängig von dem Anweisungstyp einer oder mehreren der Verzweigungsausgabe-Warteschlange 212, der Bedingungsregister-Ausgabewarteschlange 214, der einheitlichen Ausgabewarteschlange 216, der Ladeneuordnungs-Warteschlange 218 und/oder der Speicherneuordnungs-Warteschlange 220 bereitgestellt. Der Anweisungstyp wird durch das Entschlüsseln und Zuordnen der Anweisungsentschlüsselungseinheit 206 ermittelt. Die Ausgabewarteschlangen 212 bis 220 stellen Eingaben für verschiedene Ausführungseinheiten 222 bis 240 bereit. Der Daten-Cache 250 und die Registerdateien, die in jeder jeweiligen Einheit enthalten sind, stellen die Daten zur Verwendung mit den Anweisungen bereit.In one or more examples, it is the system 100 an OoO processor in accordance with the illustrative embodiments. 2 Figure 13 is an exemplary block diagram of a processor architecture of an OoO processor that implements an EAD and the associated mechanisms for using that EAD in accordance with one or more embodiments of the present invention. As in 2 As shown, the processor architecture includes an instruction cache 202 , an instruction fetch buffer 204 , an instruction decryption unit 206 and an instruction dispatch unit 208 . Instructions are passed through the instruction fetch buffer 204 from the instruction cache 202 fetched and the instruction decryption unit 206 provided. The instruction decryption unit 206 decrypts the instruction and provides the decrypted instruction to the instruction dispatch unit 208 ready. The output of the instruction dispatcher 208 becomes the global closure table 210 and depending on the instruction type one or more of the branch issue queues 212 , the condition register output queue 214 , the unified output queue 216 , the load reorder queue 218 and / or the memory reorder queue 220 provided. The instruction type is determined by the decryption and assignment of the instruction decryption unit 206 determined. The output queues 212 to 220 provide inputs for various execution units 222 to 240 ready. The data cache 250 and the register files contained in each respective unit provide the data for use with the instructions.

Der Anweisungs-Cache 202 empfängt Anweisungen von dem L2-Cache 260 über die Umsetzungseinheit 262 der zweiten Ebene und eine Vorentschlüsselungseinheit 270. Die Umsetzungseinheit 262 der zweiten Ebene verwendet ihren zugehörigen Segmentumsetzpuffer 264 und den Adressumsetzpuffer 266, um Adressen der abgerufenen Anweisung von effektiven Adressen in Systemspeicheradressen umzusetzen. Die Vorentschlüsselungseinheit entschlüsselt zum Teil Anweisungen, die aus dem L2-Cache eintreffen, und erweitert sie mit eindeutigen Kenndaten, die die Arbeit der nachgelagerten Anweisungsentschlüsselungseinrichtungen vereinfachen.The instruction cache 202 receives instructions from L2 cache 260 via translation unit 262 the second level and a pre-decryption unit 270 . The implementation unit 262 the second level uses its associated segment relocation buffer 264 and the translation buffer 266 to translate addresses of the fetched instruction from effective addresses to system memory addresses. The pre-decryption unit partially decrypts instructions that arrive from the L2 cache and extends them with unique identification data which simplify the work of the downstream instruction decryption devices.

Die in den Anweisungsabrufpuffer 204 abgerufenen Anweisungen werden darüber hinaus der Verzweigungsvorhersageeinheit 280 bereitgestellt, wenn es sich bei der Anweisung um eine Verzweigungsanweisung handelt. Die Verzweigungsvorhersageeinheit 280 enthält eine Verzweigungsverlaufstabelle 282, einen Rückgabestapel 284 und einen Zähler-Cache 286. Diese Elemente sagen die nächste EA vorher, die aus dem Anweisungs-Cache abgerufen werden soll. Bei einer Verzweigungsanweisung handelt es sich um eine Stelle in einem Computerprogramm, an der der Steuerungsablauf geändert wird. Dies ist die Maschinenanweisung auf niedriger Ebene, die aus Steuerkonstrukten in einem Computerprogramm erzeugt wird, wie zum Beispiel If-Then-Else- oder Do-While-Anweisungen. Eine Verzweigung kann nicht gewählt werden, bei der der Steuerungsablauf unverändert bleibt und die nächste auszuführende Anweisung die unmittelbar darauf folgende Anweisung im Speicher ist, oder sie kann gewählt werden, bei der die nächste auszuführende Anweisung eine Anweisung an einer anderen Stelle im Speicher ist. Wenn die Verzweigung gewählt wird, muss dem Anweisungs-Cache eine neue EA bereitgestellt werden.The ones in the instruction fetch buffer 204 Fetched instructions are also used by the branch prediction engine 280 provided if the instruction is a branch instruction. The branch prediction unit 280 contains a branch history table 282 , a return batch 284 and a counter cache 286 . These elements predict the next EA to be fetched from the instruction cache. A branch instruction is a point in a computer program at which the control sequence is changed. This is the low-level machine instruction generated from control constructs in a computer program, such as If-Then-Else or Do-While instructions. A branch cannot be chosen where the control flow remains unchanged and the next instruction to be executed is the immediately following instruction in memory, or it can be chosen where the next instruction to be executed is an instruction elsewhere in memory. If the branch is chosen, a new EA must be provided to the instruction cache.

Die EA und zugehörige Vorhersagedaten von der Verzweigungsvorhersageeinheit werden in ein Verzeichnis 290 von effektiven Adressen geschrieben. Diese EA wird im Folgenden durch die Verzweigungsausführungseinheit 222 bestätigt. Wenn sie korrekt ist, bleibt die EA in dem Verzeichnis, bis die Ausführung sämtlicher Anweisungen aus diesem Adressbereich abgeschlossen ist. Wenn sie falsch ist, löscht die Verzweigungsausführungseinheit die Adresse, und die korrigierte Adresse wird an ihre Stelle geschrieben. Das EAD 290 enthält darüber hinaus eine Logikeinheit, die die Verwendung des Verzeichnisses als CAM erleichtert.The EA and related prediction data from the branch prediction unit are stored in a directory 290 written by effective addresses. This EA is subsequently carried out by the branch execution unit 222 approved. If it is correct, the EA remains in the directory until all instructions from this address range have been executed. If it is incorrect, the branch execution unit clears the address and the corrected address is written in its place. The EEAS 290 also contains a logic unit that facilitates the use of the directory as a CAM.

Anweisungen, die aus dem Speicher lesen oder in diesen schreiben (wie Lade- oder Speicheranweisungen), werden an die LS/EX-Ausführungseinheit 238, 240 ausgegeben. Die LS/EX-Ausführungseinheit ruft Daten aus dem Daten-Cache 250 mithilfe einer durch die Anweisung angegebenen Speicheradresse ab. Bei dieser Adresse handelt es sich um eine EA, und sie muss zuerst über die Umsetzungseinheit der zweiten Ebene in eine Systemspeicheradresse umgesetzt werden, bevor sie verwendet wird. Wenn in dem Daten-Cache keine Adresse gefunden wird, wird die Ladefehler-Warteschlange dazu verwendet, die Fehleranforderung an den L2-Cache zu verwalten. Um die Einbußen bei solchen Cache-Fehlern zu verringern, sagt die erweiterte Datenvorabzugriffs-Engine die Adressen vorher, die in naher Zukunft wahrscheinlich von Anweisungen verwendet werden. Auf diese Weise befinden sich Daten wahrscheinlich bereits in dem Daten-Cache, wenn eine Anweisung diese benötigt, wodurch eine Fehleranforderung mit langer Latenzzeit an den L2-Cache verhindert wird.Instructions reading from or writing to memory (such as load or store instructions) are passed to the LS / EX execution unit 238 , 240 issued. The LS / EX execution unit retrieves data from the data cache 250 using a memory address specified by the instruction. This address is an EA and must first be converted to a system memory address via the second level translator before it is used. If no address is found in the data cache, the load failure queue is used to manage the failure request to the L2 cache. To reduce the cost of such cache failures, the advanced data prefetch engine predicts the addresses that instructions are likely to use in the near future. In this way, data is likely already in the data cache by the time an instruction needs it, thereby preventing a long latency error request to the L2 cache.

Die LS/EX-Ausführungseinheit 238, 240 führt Anweisungen außerhalb der Programmreihenfolge durch Verfolgen des Anweisungsalters und von Speicherabhängigkeiten in der Ladeneuordnungs-Warteschlange 218 und der Speicherneuordnungs-Warteschlange 220 aus. Diese Warteschlangen werden dazu verwendet zu erkennen, wenn die OoO-Ausführung ein Ergebnis erzeugt hat, das nicht mit der Ausführung desselben Programms in der Reihenfolge konsistent ist. In solchen Fällen wird der aktuelle Programmablauf gelöscht und erneut durchgeführt.The LS / EX execution unit 238 , 240 executes instructions out of program order by keeping track of instruction age and memory dependencies in the load reorder queue 218 and the store reorder queue 220 out. These queues are used to detect when the OoO execution produced a result that is inconsistent with the order of execution of the same program. In such cases, the current program sequence is deleted and carried out again.

Die Prozessorarchitektur enthält des Weiteren das EAD 290, das die effektive Adresse einer Gruppe von Anweisungen zentral verwaltet, so dass die EA bei Bedarf verfügbar ist, jedoch nicht durch die Pipeline geleitet werden muss. Darüber hinaus enthält das EAD 290 eine Schaltung und/oder Logik zur Unterstützung einer OoO-Verarbeitung. 2 stellt das EAD 290 dar, auf das über die Verzweigungsvorhersageeinheit 280 zugegriffen wird, es versteht sich jedoch, dass eine Schaltung bereitgestellt werden kann, um zuzulassen, dass verschiedene der in 2 dargestellten Einheiten auf das EAD 290 zugreifen, ohne die Verzweigungsvorhersageeinheit 280 durchlaufen zu müssen.The processor architecture also contains the EAD 290 that centrally maintains the effective address of a group of instructions so that the EA is available when needed but does not need to be piped. In addition, the EEAS 290 circuit and / or logic to support OoO processing. 2 represents the EEAS 290 to the one about the branch prediction unit 280 is accessed, however, it should be understood that circuitry can be provided to allow various of the features shown in FIG 2 units shown on the EAD 290 without the branch prediction unit 280 having to go through.

Fachleuten ist ersichtlich, dass die Hardware in 1 bis 2 abhängig von der Implementierung variieren kann. Sonstige interne Hardware- oder Peripherieeinheiten wie zum Beispiel ein Flash-Speicher, ein gleichwertiger nichtflüchtiger Speicher oder optische Plattenlaufwerke und dergleichen können zusätzlich oder anstelle der in 1 bis 2 dargestellten Hardware verwendet werden. Darüber hinaus können die Prozesse der veranschaulichenden Ausführungsformen auf ein anderes Mehrprozessor-Datenverarbeitungssystem als das zuvor erwähnte SMP-System angewendet werden, ohne vom Wesensgehalt und Umfang der vorliegenden Erfindung abzuweichen.It will be apparent to those skilled in the art that the hardware in 1 to 2 may vary depending on the implementation. Other internal hardware or peripheral units such as a flash memory, an equivalent non-volatile memory or optical disk drives and the like can be used in addition to or instead of the in 1 to 2 hardware shown. In addition, the processes of the illustrative embodiments can be applied to a multiprocessor data processing system other than the aforementioned SMP system without departing from the spirit and scope of the present invention.

Zudem kann das Datenverarbeitungssystem 100 die Form eines beliebigen einer Anzahl verschiedener Datenverarbeitungssysteme annehmen, darunter von Client-Datenverarbeitungseinheiten, Server-Datenverarbeitungseinheiten, eines Tablet-Computers, eines Laptop-Computers, eines Telefons oder einer sonstigen Datenübertragungseinheit, eines persönlichen digitalen Assistenten (PDA) oder dergleichen. Bei einigen veranschaulichenden Beispielen kann es sich bei dem Datenverarbeitungssystem 100 um eine tragbare Datenverarbeitungseinheit handeln, die mit einem Flash-Speicher dazu eingerichtet ist, einen nichtflüchtigen Speicher zum Speichern beispielsweise von Betriebssystemdateien und/oder von einem Benutzer erzeugten Daten bereitzustellen. Im Grunde kann es sich bei dem Datenverarbeitungssystem 100 ohne architektonische Einschränkung um ein beliebiges bekanntes oder später entwickeltes Datenverarbeitungssystem handeln.In addition, the data processing system 100 take the form of any of a number of different computing systems including client computing devices, server computing devices, a tablet computer, laptop computer, telephone or other communications device, personal digital assistant (PDA), or the like. In some illustrative examples, the data processing system may be 100 be a portable data processing unit which is set up with a flash memory to provide a non-volatile memory for storing, for example, operating system files and / or data generated by a user. Basically, it can be the data processing system 100 be any known or later developed data processing system without architectural restriction.

Wie für einen Fachmann ersichtlich ist, kann die vorliegende Erfindung als System, Vorrichtung oder Verfahren verkörpert werden. Bei einer veranschaulichenden Ausführungsform werden die Mechanismen vollständig in Hardware, z.B. in Schaltungen, Hardware-Modulen oder -einheiten usw. eines Prozessors bereitgestellt. Bei sonstigen veranschaulichenden Ausführungsformen kann jedoch eine Kombination aus Software und Hardware verwendet werden, um die Merkmale und Mechanismen der veranschaulichenden Ausführungsformen bereitzustellen oder zu implementieren. Die Software kann zum Beispiel in Firmware, residenter Software, Mikrocode oder dergleichen bereitgestellt werden. Die verschiedenen im Folgenden dargelegten Ablaufpläne geben einen Überblick über Operationen, die von dieser Hardware und/oder dieser Kombination aus Hardware und Software durchgeführt werden können.As will be apparent to one skilled in the art, the present invention can be embodied as a system, apparatus, or method. In an illustrative embodiment, the mechanisms are provided entirely in hardware, e.g., in circuitry, hardware modules or units, etc. of a processor. However, in other illustrative embodiments, a combination of software and hardware can be used to provide or implement the features and mechanisms of the illustrative embodiments. For example, the software can be provided in firmware, resident software, microcode, or the like. The various flowcharts set out below provide an overview of the operations that can be performed by this hardware and / or this combination of hardware and software.

Bei veranschaulichenden Ausführungsformen, in denen die Mechanismen der veranschaulichenden Ausführungsformen zumindest zum Teil in Software implementiert sind, kann eine beliebige Kombination von einem oder mehreren durch einen Computer verwendbaren oder durch einen Computer lesbaren Medien verwendet werden, die diese Software speichern. Bei dem durch einen Computer verwendbaren oder durch einen Computer lesbaren Medium kann es sich zum Beispiel um ein(e) elektronische(s), magnetische(s), optische(s), elektromagnetische(s), Infrarot- oder Halbleitersystem, - vorrichtung oder -einheit handeln, ohne auf diese beschränkt zu sein. Zu konkreteren Beispielen (einer nicht erschöpfenden Liste) des durch einen Computer lesbaren Mediums würden folgende gehören: ein Direktzugriffsspeicher (random access memory, RAM), ein Festwertspeicher (read-only memory, ROM), ein löschbarer, programmierbarer Festwertspeicher (erasable programmable read-only memory, EPROM oder Flash-Speicher) usw.In illustrative embodiments in which the mechanisms of the illustrative embodiments are implemented, at least in part, in software, any combination of one or more computer-usable or computer-readable media may be used that store that software. The computer usable or readable medium may be, for example, an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system, device, or system -unit, without being limited to them. More specific examples (a non-exhaustive list) of the computer-readable medium would include: random access memory (RAM), read-only memory (ROM), erasable programmable read-only memory. only memory, EPROM or Flash memory) etc.

Typischerweise wird für jede Lade- und jede Speicheranweisung eine EA in eine entsprechende RA umgewandelt. Eine solche Umwandlung einer EA in eine RA wird auch für einen Anweisungsabruf (instruction fetch, I-Fetch) durchgeführt. Eine solche Umwandlung erforderte typischerweise eine Tabelle von effektiven und realen Adressen (effective to real address table, ERAT) zum Abrufen von Anweisungen aus einem Speicher niedrigerer Ordnung. Bei den hierin beschriebenen technischen Lösungen wird die Umwandlung einer EA in eine RA nicht für jede Lade- und Speicheranweisung durchgeführt, sondern nur für den Fall von Ladefehlern, I-Fetch-Fehlern und sämtlichen Speicherungen.Typically, for each load and each store instruction, an EA is converted into a corresponding RA. Such a conversion of an EA into an RA is also carried out for an instruction fetch (I-Fetch). Such a conversion typically required an effective to real address table (ERAT) for retrieving instructions from lower order memory. In the technical solutions described here, the conversion of an EA into an RA is not carried out for every loading and storage instruction, but only in the event of loading errors, I-Fetch errors and all saves.

Indem nur EA für die Operationen verwendet werden, erleichtern die technischen Lösungen ein Entfernen von RA-Bits (zum Beispiel der Bits 8 bis 51) aus einer oder mehreren Datenstrukturen wie zum Beispiel einem EA-Verzeichnis (auch als L1-Verzeichnis bezeichnet), LRQF-Einträgen, LMQ Einträgen. Des Weiteren wird keine SRQ-LHS-RA-Vergleichslogik ausgeführt, wenn nur die EA verwendet wird. Ein Entfernen solcher Elemente verringert die Chip-Fläche des verwendeten Prozessors, wodurch eine Verringerung der Chip-Fläche gegenüber typischen Prozessoren erleichtert wird.By using only EA for the operations, the technical solutions make it easier to remove RA bits (for example the bits 8th to 51 ) from one or more data structures such as an EA directory (also referred to as an L1 directory), LRQF entries, LMQ entries. Furthermore, no SRQ-LHS-RA comparison logic is carried out if only the EA is used. Removing such elements reduces the chip area of the processor used, which makes it easier to reduce the chip area compared to typical processors.

Indem nur EA verwendet werden, beseitigen die technischen Lösungen hierin ERAT-Camming-Vorgänge bei jeder Erzeugung von Lade- und Speicheradressen. Die technischen Lösungen beseitigen des Weiteren ein Umschalten eines RA-Busses in der gesamten Einheit und vermeiden darüber hinaus einen schnellen SRQ-LHS-RA-Camming-Vorgang. Die technischen Lösungen erleichtern auf diese Weise dem Prozessor, im Vergleich zu typischen Prozessoren weniger Strom zu verbrauchen, indem die obigen Operationen nicht durchgeführt werden.By using EA only, the technical solutions herein eliminate ERAT camming operations each time load and store addresses are generated. The technical solutions also eliminate switching of an RA bus in the entire unit and also avoid a fast SRQ-LHS-RA camming process. The technical solutions thus make it easier for the processor to consume less power compared to typical processors by not performing the above operations.

Noch weiter erleichtern die technischen Lösungen hierin auch Verbesserungen der L1-Latenzzeit. Beispielsweise sind die technischen Lösungen hierin durch Beseitigen der Adressumwandlungen um zumindest 1 Zyklus schneller beim Ermitteln einer „abschließenden Dval“ im Vergleich zu typischen Prozessoren, die die Umwandlungen von EA in RA durchführen. Die Latenzzeit wird darüber hinaus verbessert, weil eine Verwendung nur der EA (ohne RA-Umwandlung) (eine) „schlechte Dval“-Bedingung(en) wie mehrere Treffer in der Einrichtungstabelle, Treffer in der Einrichtungstabelle/RA-Fehler und dergleichen beseitigt. In ähnlicher Weise erleichtern die technischen Lösungen hierin eine Verbesserung der L2-Latenzzeit.The technical solutions herein also facilitate improvements in the L1 latency even further. For example, the technical solutions herein are by eliminating the address conversions at least 1 cycle faster in determining a "final Dval" compared to typical processors that do the conversions from EA to RA. Latency is also improved because using EA only (no RA conversion) eliminates (a) "bad Dval" condition (s) such as multiple facility table hits, facility table hits / RA errors, and the like. Similarly, the technical solutions herein facilitate an improvement in L2 latency.

Zu den technischen Problemen bei einer Verwendung nur einer LSU auf Grundlage von EA zählen, dass die Ausführung der Anweisungen außerhalb der Reihenfolge zu Risiken (LHL, SHL, LHS) führen kann und dass solche Risiken erkannt werden müssen, ohne dass entsprechende reale Adressen für eine reine EA-Implementierung verwendet werden. Die hierin beschriebenen technischen Lösungen behandeln ein solches technisches Problem. Die RA wird nicht für eine Erkennung von Risiken einer OoO-Ausführung vom Typ Load-Hit-Store, Store-Hit-Load oder Load-Hit-Load verwendet, wie sie typischerweise verwendet wird. Die RA-Berechnung für Speicherungen findet statt, bevor das Speichern abgeschlossen ist, da nach Abschluss kein Interrupt für die Speicheranweisungen verarbeitet wird (ein Speichern kann einen auf eine Adressumsetzung bezogenen Interrupt erzeugen, der verarbeitet werden muss, bevor das Speichern abgeschlossen wird). Hier wird die RA-Berechnung durchgeführt, wenn das Speichern ausgegeben wird (und nicht beim Bereinigen). Die hierin beschriebenen technischen Lösungen ermitteln LHS (Load-Hit-Store), SHL (Store-Hit-Load) und LHL (Load-Hit-Load) auf Grundlage der EA und des ERT-Index, der mit den EA-Verzeichniseinträgen gespeichert ist, und darüber hinaus mithilfe einer Ladeneuordnungs-Warteschlange (LRQF) mit einer Struktur und einem Betrieb, wie hierin beschrieben.The technical problems when using only one LSU based on EA include that executing the instructions out of sequence can lead to risks (LHL, SHL, LHS) and that such risks have to be identified without corresponding real addresses for a pure EA implementation can be used. The technical solutions described herein address one such technical problem. The RA is not used for the detection of risks of an OoO execution of the type load-hit-store, store-hit-load or load-hit-load as it is typically used. The RA computation for stores takes place before the store is completed, as no interrupt is processed for the store instructions after completion (a store can generate an address translation related interrupt that must be processed before the store completes). Here the RA calculation is performed when saving is issued (and not when purging). The technical solutions described here determine LHS (Load-Hit-Store), SHL (Store-Hit-Load) and LHL (Load-Hit-Load) on the basis of the EA and the ERT index that is stored with the EA directory entries , and furthermore using a load reorder queue (LRQF) having a structure and operation as described herein.

Unter erneuter Bezugnahme auf die Figuren stellt 3 eine Lade-Speicher-Einheit (LSU) 104 eines Verarbeitungskerns gemäß einer oder mehreren Ausführungsformen der vorliegenden Erfindung dar. Die dargestellte LSU 104 erleichtert eine Ausführung in einem 2-Lade-2-Speicher-Modus; es ist jedoch zu beachten, dass die hierin beschriebenen technischen Lösungen nicht auf eine solche LSU beschränkt sind. Der Ausführungsablauf für die LSU wird im Folgenden beschrieben. Aus den Lade- oder Speicheranweisungen wird die EA (wie sie durch den Programmierer in einem Computerprogramm verwendet wird) erzeugt. In ähnlicher Weise wird für einen Anweisungsabruf ebenfalls eine EA erzeugt. Neben sonstigen technischen Problemen wurde typischerweise die EA für jede Anweisung in eine RA (eine reale Adresse, wie durch die Hardware nach einer EA-RA-Umsetzung verwendet) umgewandelt, was eine größere Chip-Fläche und häufige Umsetzungen erforderte. Die hierin beschriebenen technischen Lösungen behandeln solche technischen Probleme, indem sie nur die EA (ohne Umsetzung in eine RA) verwenden und nur bei Ladefehlern, I-Fetch-Fehlern und Speicherungen eine Effektiv-Real-Tabelle (ERT) 255 verwenden, um die RA zu erzeugen.Referring again to the figures, represents 3 a load storage unit (LSU) 104 of a processing core in accordance with one or more embodiments of the present invention. The illustrated LSU 104 facilitates execution in a 2 load, 2 store mode; however, it should be noted that the technical solutions described here are not restricted to such an LSU. The execution sequence for the LSU is described below. The EA (as used by the programmer in a computer program) is generated from the load or save instructions. In a similar way, an EA is also generated for an instruction call. In addition to other technical problems, the EA was typically converted into an RA (a real address as used by the hardware after an EA-RA conversion) for each instruction, which required a larger chip area and frequent conversions. The technical solutions described here deal with such technical problems by using only the EA (without conversion to an RA) and only an effective real table (ERT) for load errors, I-fetch errors and saves. 255 use to generate the RA.

Die LSU 104 enthält eine Ladeneuordnungs-Warteschlange (LRQF) 218, in der alle Ladeoperationen von der Zuteilung bis zum Abschluss verfolgt werden. Die LSU 104 enthält des Weiteren eine zweite Ladeneuordnungs-Warteschlange LRQE 225. Wenn ein Laden abgelehnt wird (bei einem Cache-Fehler oder einem Umsetzungsfehler oder wenn eine vorherige Anweisung, von der dieses abhängt, abgelehnt wurde), wird das Laden aus der Ausgabewarteschlange entfernt und in einen LRQE-Eintrag eingestellt, damit es von dort erneut ausgegeben wird. Die dargestellte LRQE 225 ist in 2 Instanzen unterteilt, LRQE0 und LRQE1 für den Zwei-Lade-Modus mit jeweils 12 Einträgen (insgesamt 24 Einträge). Im ST-Modus ist keine Unterteilung auf Grundlage von Threads/Pipes vorhanden. Im MT-Modus wurden T0-, T2-Operationen in der Pipe LD0 gestartet; und T1-, T3-Operationen wurden für einen Neustart in der Pipe LD1 gestartet.The LSU 104 contains a load relocation queue (LRQF) 218 which tracks all load operations from allocation to completion. The LSU 104 also includes a second load reorder queue LRQE 225 . If a load is rejected (in the event of a cache or translation error, or if a previous instruction on which it depends was rejected), the load is removed from the output queue and placed in an LRQE entry to be reissued from there becomes. The illustrated LRQE 225 is divided into 2 instances, LRQE0 and LRQE1 for the two-load mode with 12 entries each (a total of 24 entries). In ST mode, there is no subdivision based on threads / pipes. In MT mode, T0, T2 operations were started in the pipe LD0; and T1, T3 operations were started for a restart in the pipe LD1.

Wie dargestellt, ist die LRQF 218 in 2 Instanzen LRQF0 und LRQF1 für den Zwei-Lade-Modus mit jeweils 40 Einträgen (bei jeder Instanz) unterteilt. Die LRQF 218 ist im Hinblick auf eine Reihenfolge einer Eintragszuordnung umlaufend, im Hinblick auf eine Reihenfolge einer Eintragsbereinigung umlaufend und im Hinblick auf eine Reihenfolge einer Eintragsfreigabe umlaufend. Des Weiteren wurden im MT-Modus T0-, T2-Operationen in Pipes LD0, ST0 gestartet; und T1-, T3-Operationen wurden in Pipes LD1, ST1 gestartet. Im ST-Modus weist die LRQF keine Pipes/Threads auf.As shown, the LRQF is 218 divided into 2 instances LRQF0 and LRQF1 for the two-load mode with 40 entries each (for each instance). The LRQF 218 is revolving with respect to an order of entry allocation, revolving with respect to an order of entry cleanup, and revolving with respect to an order of entry release. In addition, T0, T2 operations in pipes LD0, ST0 were started in MT mode; and T1, T3 operations were started in pipes LD1, ST1. In ST mode, the LRQF has no pipes / threads.

In einem oder mehreren Beispielen ist die LRQF 218 (und sonstige hierin beschriebene Strukturen) für den SMT4-Modus unterteilt in T0: LRQF0[0 bis 19]-Umlaufwarteschlange, T1: LRQF1[0 bis 19]-Umlaufwarteschlange; und T2: LRQF0[20 bis 39]-Umlaufwarteschlange, T3: LRQF1[20 bis 39]-Umlaufwarteschlange.In one or more examples, the LRQF is 218 (and other structures described herein) for SMT4 mode divided into T0: LRQF0 [0-19] wraparound queue, T1: LRQF1 [0-19] wraparound queue; and T2: LRQF0 [20 to 39] rotating queue, T3: LRQF1 [20 to 39] rotating queue.

In einem oder mehreren Beispielen ist die LRQF 218 (und sonstige hierin beschriebene Strukturen) für den SMT2-Modus unterteilt in T0: LRQF0[0 bis 39]-Umlaufwarteschlange, T1: LRQF1[0 bis 39]-Umlaufwarteschlange. Des Weiteren in einem oder mehreren Beispielen für den ST-Modus in eine LRQF0[0 bis 39]-Umlaufwarteschlange, wobei es sich bei der LRQF1 um eine Kopie der LRQF0 handelt. Für sonstige Datenstrukturen wird ein ähnliches Unterteilungsmuster verwendet, wobei es sich bei der zweiten Instanz um eine Kopie der ersten Instanz im ST-Modus handelt.In one or more examples, the LRQF is 218 (and other structures described herein) for SMT2 mode divided into T0: LRQF0 [0 to 39] wraparound queue, T1: LRQF1 [0 to 39] wrap around queue. Also in one or more examples for ST mode in an LRQF0 [0 to 39] wraparound queue, where LRQF1 is a copy of LRQF0. A similar subdivision pattern is used for other data structures, with the second instance being a copy of the first instance in ST mode.

Bei einer Löschung zur gegenseitigen Aufhebung (cross invalidation flush, XI flush) wird für die LRQF durch NTC+1 jeglicher Thread, auf den eine XI oder eine Speicherbereinigung von einem weiteren Thread trifft, gelöscht, so dass bei der XI-Löschung durch die LSU 104 keine ausdrücklichen Löschungen in L/L-Reihenfolge bei Synchronisierungen durchgeführt werden.In the event of a deletion for mutual cancellation (cross invalidation flush, XI flush), any thread encountered by an XI or a garbage collector from another thread is deleted for the LRQF by NTC + 1, so that the XI deletion by the LSU 104 no explicit deletions in L / L order are performed during synchronization.

Alle Speicherungen werden anhand der LRQF 218 auf eine SHL-Erkennung überprüft, woraufhin die LRQF 218 ein Löschen jeglichen Ladens oder sämtlicher Vorgänge (jeglicher Anweisungen/Operationen) nach dem Speichern initiiert. Des Weiteren werden DCB-Anweisungen anhand der LRQF 218 auf SHL-Fälle überprüft, woraufhin die LRQF 218 ein Löschen des Ladens oder sämtlicher Vorgänge nach dem DCB bewirkt. Des Weiteren werden sämtliche Ladungen anhand der LRQF 218 auf eine LHL-Erkennung (sequentielle Ladekonsistenz) überprüft, woraufhin die :RQF 218 ein Löschen des neueren Ladens oder sämtlicher Vorgänge nach dem älteren Laden bewirkt. In einem oder mehreren Beispielen stellt die LRQF 218 eine Vierfachwortatomizität bereit, und die LQ vergleicht die LRQF 218 auf Vierfachatomizität und löscht die LQ, wenn sie nicht atomar ist. Im Fall von LARX-Anweisungen überprüft die LSU 104 anhand der LRQF 218 auf Larx-Hit-Larx-Fälle und löscht in Reaktion neuere LARX oder Sämtliches nach der älteren LARX-Anweisung.All storage is based on the LRQF 218 checked for an SHL detection, whereupon the LRQF 218 initiates a deletion of any load or all processes (any instructions / operations) after saving. Furthermore, DCB instructions are based on the LRQF 218 checked for SHL cases, whereupon the LRQF 218 causes a deletion of the load or all processes after the DCB. Furthermore, all loads are based on the LRQF 218 checked for an LHL detection (sequential load consistency), whereupon the: RQF 218 causes the newer load or all processes after the older load to be deleted. In one or more examples, the LRQF 218 a quadruple word atomicity ready, and the LQ compares the LRQF 218 to quadruple atomicity and clears the QL if it is not atomic. In the case of LARX instructions, the LSU checks 104 based on the LRQF 218 to Larx-Hit-Larx cases and in response deletes newer LARX or everything after the older LARX instruction.

Auf diese Weise erleichtert die LRQF 218 ein Verfolgen sämtlicher Ladeoperationen von der Ausgabe bis zum Abschluss. Einträge in der LRQF 218 werden mit Real_Ltag (rltag) indiziert, wobei es sich um die physische Position in der Warteschlangenstruktur handelt. Das Alter einer Ladeoperation/eines Eintrags in der LRQF 218 wird mit einem Virtual_Ltag (vltag) bestimmt, das sich in der Reihenfolge befindet. Die LRQF löscht ein Laden mithilfe von GMASK und führt eine Teilgruppenlöschung mithilfe von GTAG und IMASK durch. Die LRQF-Logik kann aus einem aktuellen iTag oder iTag+1 löschen oder ein iTag präzise laden.In this way, the LRQF facilitates 218 keeping track of all loads from issue to completion. Entries in the LRQF 218 are indexed with Real_Ltag (rltag), which is the physical position in the queue structure. The age of a load operation / entry in the LRQF 218 is determined with a Virtual_Ltag (vltag) that is in the sequence. The LRQF clears a store using GMASK and performs a subgroup clear using GTAG and IMASK. The LRQF logic can delete from a current iTag or iTag + 1 or precisely load an iTag.

Des Weiteren enthält die LRQF jedoch kein typischerweise verwendetes RA-Feld (8 bis 51) und beruht stattdessen auf einer EA und enthält eine ERT-ID (0 bis 6) und eine EA(40 bis 51) (eine Einsparung von 24 Bits). Die LRQF-Seitenübereinstimmung im Hinblick auf SHL, LHL beruht auf einer ERT-ID-Übereinstimmung. Des Weiteren weist jeder LRQ-Eintrag ein Bit „Force Page Match“ (Seitenübereinstimmung erzwingen) auf. Wenn eine ERT-ID ungültig gemacht wird, die mit der ERT-ID des LRQ-Eintrags übereinstimmt, wird das Bit Force Page Match gesetzt. Die LRQ erkennt LHL, SHL und Löschungen in Speicherreihenfolge, die mit einem beliebigen Eintrag mit Force-Match-Übereinstimmung=1 einhergehen.Furthermore, the LRQF does not contain a typically used RA field ( 8th to 51 ) and is instead based on an EA and contains an ERT-ID ( 0 to 6th ) and an EA ( 40 to 51 ) (a saving of 24 bits). The LRQF page match for SHL, LHL is based on an ERT-ID match. Each LRQ entry also has a “Force Page Match” bit. If an ERT-ID that matches the ERT-ID of the LRQ entry is invalidated, the Force Page Match bit is set. The LRQ recognizes LHL, SHL, and deletions in storage order associated with any entry with force match = 1.

Die SRQ 220 der LSU 104 weist eine ähnliche Struktur wie die LRQF 218 mit zwei Instanzen SRQR0 und SRQR1 von 40 Einträgen (in jeder Instanz) auf, die im Hinblick auf eine Reihenfolge einer Eintragszuordnung umlaufend sind, im Hinblick auf eine Reihenfolge einer Eintragsbereinigung umlaufend sind und im Hinblick auf eine Reihenfolge einer Eintragsfreigabe umlaufend sind. Des Weiteren ist die SRQ 220 ähnlich wie die LRQ 218 unterteilt, zum Beispiel in T0-, T2-Operationen, die in den Pipes LD0, ST0 gestartet werden; T1-, T3-Operationen, die in den Pipes LD1, ST1 gestartet werden; und keine Pipe-/Thread-Unterteilung im ST-Modus. Im ST-Modus weisen beide Kopien übereinstimmende Werte auf, wobei die Kopien in den MT-Modi unterschiedlich sind. Im SMT4-Modus sind beide Instanzen weiter unterteilt, wobei jedem Thread 20 Einträge von der SRQ 220 zugeordnet werden (siehe eine hierin beschriebene beispielhafte Unterteilung für die LRQF). In einem oder mehreren Beispielen wird für die Speicherlöschungsarbitrierung ein Intra-SRQ-Lesezeiger-Multiplexverfahren in dem SMT4-Modus durchgeführt. Alternativ oder zusätzlich wird ein Inter-SRQ0/1-Multiplexverfahren in den Modi SMT2 und SMT4 durchgeführt. In dem ST-Modus wird eine Bereinigung nur bei SRQ0 durchgeführt.The SRQ 220 the LSU 104 exhibits a structure similar to the LRQF 218 with two instances SRQR0 and SRQR1 of 40 entries (in each instance) which are circulating with regard to an order of entry allocation, are circulating with regard to an order of entry cleaning and are circulating with regard to an order of entry release. Furthermore, the SRQ 220 similar to the LRQ 218 divided, for example into T0, T2 operations that are started in the pipes LD0, ST0; T1, T3 operations that are started in the pipes LD1, ST1; and no pipe / thread division in ST mode. In the ST mode, both copies have identical values, whereas the copies in the MT modes are different. In SMT4 mode, both instances are further subdivided, with each thread 20th Entries from the SRQ 220 (see an exemplary subdivision for the LRQF described herein). In one or more examples, an intra-SRQ read pointer multiplexing is performed in the SMT4 mode for memory erasure arbitration. Alternatively or additionally, an inter-SRQ0 / 1 multiplex method is carried out in the modes SMT2 and SMT4. In the ST mode, a cleanup is only performed on SRQ0.

Jeder Eintrag der SRQ 220 enthält eine Speicher-TID(0 bis 1), eine ERT-ID(0 bis 6), eine EA(44 bis 63) und eine RA(8 bis 51). Zum Erkennen eines LHS verwendet die LSU die {Speicher-Tid, EA(44 bis 63)}, wodurch die RA-LHS-Alias-Überprüfung beseitigt wird. Die ERT-ID wird dazu verwendet, eine falsche Vermutung einer EA(44 bis 63)-Teilübereinstimmung zu „erfassen“. Der SRQ-Eintrag weist die RA(8 bis 51) auf, die bei Store Agen umgesetzt wird und nur verwendet wird, wenn Speicheranforderungen an den L2 gesendet werden (Speicheranweisung bereinigt, nicht ausgegeben). Jeder SRQ-Eintrag weist darüber hinaus ein Bit „Force Page Match“ auf. Das Bit Force Page Match wird gesetzt, wenn eine ERT-ID ungültig gemacht wird, die mit der ERT-ID des SRQ-Eintrags übereinstimmt. Die SRQ kann ein LHS erkennen, das mit einem beliebigen Eintrag mit Force Page Match=1 einhergeht. Beispielsweise bewirkt ein LHS an einem Eintrag mit Force Page Match=1 eine Zurückweisung der Ladeanweisung. Des Weiteren erzwingt eine Speicherbereinigung einen Fehler in dem L1-Cache, wenn für den SRQ-Eintrag Force Page Match=1 gilt. Dies funktioniert zusammen mit „Extended-Store-Hit-Reload“-LMQ-Vorgängen.Every entry in the SRQ 220 contains a memory TID (0 to 1), an ERT ID (0 to 6), an EA (44 to 63) and an RA (8 to 51). To detect an LHS, the LSU uses the {Memory Tid, EA (44 to 63)}, which eliminates the RA LHS alias check. The ERT-ID is used to "record" a false assumption of an EA (44 to 63) partial match. The SRQ entry has the RA (8 to 51), which is implemented at Store Agen and is only used when storage requests are sent to the L2 (store instruction cleaned up, not issued). Each SRQ entry also has a “Force Page Match” bit. The Force Page Match bit is set if an ERT-ID is invalidated that matches the ERT-ID of the SRQ entry. The SRQ can recognize an LHS that is associated with any entry with Force Page Match = 1. For example, an LHS at an entry with Force Page Match = 1 causes the load instruction to be rejected. In addition, garbage collection forces an error in the L1 cache if Force Page Match = 1 applies to the SRQ entry. This works in conjunction with “Extended Store Hit Reload” LMQ operations.

Beispielsweise liegt bei einer LMQ eine Übereinstimmung einer LMQ-Adressübereinstimmung = {ERT ID, EA-Seitenversatz(xx bis 51), EA(52 bis 56)} vor. Des Weiteren wird ein Bit „Force Page Match“ jedes LMQ-Eintrags gesetzt (=1), wenn eine ERT-ID ungültig gemacht wird, die mit der ERT-ID des LMQ-Eintrags übereinstimmt. Die LMQ weist einen Ladefehler zurück, wenn ein gültiger LMQ-Eintrag[x]ForcePageMatch=1 und eine Ld-Fehler-EA[52 bis 56] = LMQEntry[X]EA(52 bis 56) vorliegt. Des Weiteren weist die LMQ ein Extended-Store-Hit-Reload auf. Beispielsweise unterdrückt die LMQ eine Aktivierung eines erneuten Ladens, wenn gilt Reload EA(52 bis 56) = SRQEntry[X] EA(52 bis 56) und SRQEntry[X]ForcePageMatch=1. Alternativ oder darüber hinaus unterdrückt die LMQ eine Aktivierung eines erneuten Ladens, wenn gilt LMQEntry[X]EA(52 bis 56) = StDrain EA(52 bis 56) und StDrainForcePageMatch=1.For example, an LMQ has an LMQ address match = {ERT ID, EA page offset (xx to 51), EA (52 to 56)}. In addition, a “Force Page Match” bit is set for each LMQ entry (= 1) if an ERT-ID that matches the ERT-ID of the LMQ entry is made invalid. The LMQ rejects a loading error if a valid LMQ- Entry [x] ForcePageMatch = 1 and an Ld-Fehler-EA [52 to 56] = LMQEntry [X] EA (52 to 56) is present. The LMQ also has an extended store hit reload. For example, the LMQ suppresses activation of a reload if Reload EA (52 to 56) = SRQEntry [X] EA (52 to 56) and SRQEntry [X] ForcePageMatch = 1. Alternatively or in addition, the LMQ suppresses activation of a reload if LMQEntry [X] EA (52 to 56) = StDrain EA (52 to 56) and StDrainForcePageMatch = 1.

Die dargestellte LSU 104 komprimiert eine Speicherdaten-Warteschlange (Store Data Queue, SDQ) als Teil der SRQ 220 selbst, um noch mehr Chip-Fläche einzusparen. Die Operanden werden in einem Eintrag der SRQ selbst gespeichert, wenn die Operandengröße kleiner als die SRQ-Eintragsgröße ist, beispielsweise 8 Bytes. Im Fall von breiteren Operanden, wie beispielsweise Vektoroperanden, die 16 Bytes breit sind, speichert die SRQ die Operanden mithilfe von zwei aufeinanderfolgenden Einträgen in der SRQ 220 im MT-Modus. Im ST-Modus werden die breiteren Operanden in der SRQ0 und der SRQ1 gespeichert, zum Beispiel jeweils 8 Bytes.The LSU shown 104 compresses a Store Data Queue (SDQ) as part of the SRQ 220 even to save even more chip space. The operands are stored in an entry of the SRQ itself if the operand size is smaller than the SRQ entry size, for example 8 bytes. In the case of wider operands, such as vector operands that are 16 bytes wide, the SRQ stores the operands using two consecutive entries in the SRQ 220 in MT mode. In ST mode, the wider operands are stored in SRQ0 and SRQ1, for example 8 bytes each.

Die SRQ 220 stellt Operationen vom Typ Speicherungen, Blockaden, DCB, ICBI oder Operationen vom Typ TLB in die Warteschlange ein. Ein einzelnes s-Tag wird sowohl für store_agen als auch für store_data verwendet. Die SRQ 220 verarbeitet Load-Hit-Store(LHS)-Fälle (nur derselbe Thread). Beispielsweise werden alle ausgegebenen Ladungen durch die SRQ 220 überprüft, um sicherzustellen, dass keine älteren Speicherungen mit einem Datenkonflikt vorhanden sind. Beispielsweise wird der Datenkonflikt durch Vergleichen von Flags für Lade-EA und Daten-Bytes mit älteren Speicherungen in dem SRQ-EA-Array erkannt.The SRQ 220 queues operations of the type stores, blocks, DCB, ICBI or operations of the type TLB. A single s-tag is used for both store_agen and store_data. The SRQ 220 handles load hit store (LHS) cases (same thread only). For example, all charges issued are checked by the SRQ 220 checked to make sure there are no older stores with a data conflict. For example, the data conflict is recognized by comparing flags for load I / O and data bytes with older stores in the SRQ I / O array.

SRQ-Einträge werden beim Zuteilen zugeordnet, wobei die zugeteilten Anweisungs-Tags (itags) in die richtige Zeile eingetragen werden. Darüber hinaus werden SRQ-Einträge bei einer Speicherbereinigung freigegeben. In einem oder mehreren Beispielen enthalten die Itag-Arrays „Überlauf“-Zuteilungen. Beispielsweise werden Daten bei einer Zuteilung in das Itag-Array geschrieben, wenn die gewünschte Zeile in der SRQ, z.B. der SRQ-Eintrag x, noch verwendet wird. Wenn der SRQ-Eintrag x freigegeben wird, wird seine entsprechende Zeile in der SRQ-Überlauf-Itag-Struktur ausgelesen und in die Haupt-SRQ-Itag-Array-Struktur kopiert (Lesen der Überlauf-Itag-Struktur, das dadurch gesteuert wird, ob gültige Einträge in dem Überlauf-Itag-Array für einen jeweiligen Thread/Bereich vorhanden sind). An dem Haupt-SRQ-0/1-Itag-Array wird ein Camming-Vorgang (oder bei SMT4 ein ½ Vorgang) durchgeführt, um zu ermitteln, in welche physische Zeile bei einer Ausgabe eines Speicherns geschrieben werden soll, so dass die ISU Speicherungen auf Grundlage des Itags ausgibt. Die SRQ 220 sendet das Itag an die ISU, wenn ein Speichern bereinigt & freigegeben wird.SRQ entries are assigned when they are assigned, with the assigned instruction tags (itags) being entered in the correct line. In addition, SRQ records are freed during a garbage collection. In one or more examples, the Itag arrays contain "overflow" allocations. For example, data is written to the Itag array during an allocation if the desired line in the SRQ, for example the SRQ entry x, is still in use. When the SRQ entry x is released, its corresponding line in the SRQ overflow Itag structure is read out and copied into the main SRQ Itag array structure (reading of the overflow Itag structure, which is controlled by whether there are valid entries in the overflow itag array for a respective thread / area). A camming process (or a ½ process in the case of SMT4) is performed on the main SRQ-0/1-Itag array to determine which physical line is to be written to when a store is output, so that the ISU stores based on the Itags. The SRQ 220 sends the Itag to the ISU when a store is cleaned up & released.

Die ISU weist Speicherzuteilungen virtuelle Teilbereiche zu, um Probleme durch Überschneidungen zu vermeiden. Beispielsweise gibt die ISU im ST-Modus keinen virtuellen SRQ-Eintrag 40 aus, bis der reale SRQ-Eintrag 0 durch eine Bereinigung eines Eintrags 0 aus dem Speicher freigegeben wird. Des Weiteren kann die ISU im SMT4-Modus den virtuellen Tx-SRQ-Eintrag 20 erst dann ausgeben, wenn der reale Tx-SRQ-Eintrag 0 bereinigt und freigegeben wird. Die ISU unterteilt jede Thread-Unterteilung weiter in 4 Bereiche.The ISU allocates memory allocations to virtual sub-areas in order to avoid problems due to overlapping. For example, the ISU does not give a virtual SRQ entry in ST mode 40 until the real SRQ entry 0 by cleaning up an entry 0 is released from memory. In addition, the ISU can use the virtual Tx-SRQ entry in SMT4 mode 20th only output when the real Tx-SRQ entry 0 cleaned up and released. The ISU divides each thread division further into 4 areas.

Beispielsweise wird für den ST-Modus die SRQ 220 in 4 Teilbereiche unterteilt: Ping A: SRQ-Einträge 0 bis 9, Ping B: SRQ-Einträge 10 bis 19, Ping C: SRQ-Einträge 20 bis 29, Ping D: SRQ-Einträge 30 bis 39, und Pong A: SRQ-Einträge 0 bis 9, Pong B: SRQ-Einträge 10 bis 19, Pong C: SRQ-Einträge 20 bis 29, Pong D: SRQ-Einträge 30 bis 39. Anfänglich gibt die ISU Ping-A,B,C,D-Itags aus. Des Weiteren gibt die ISU keine Pong-A-Itags aus, bis Ping-A-Itags freigegeben worden sind. Nachdem sämtliche Ping-A-Itags freigegeben worden sind, gibt die ISU anschließend Pong-A-Itags aus, gibt jedoch keine Pong-B-Itags aus, bis Ping-B-Itags freigegeben worden sind, ähnlich wie in Fall A. In einem oder mehreren Beispielen enthält die ISU 3 zusätzliche Bits in dem Eintrag der Ausgabewarteschlange (1 Wrap-Bit (Umlauf-Bit) + 2 Bits zur Beschreibung des Teilbereichs), um eine Pseudo-Ausgabeabhängigkeit auf Grundlage des Teilbereichs zu erstellen.For example, for the ST mode, the SRQ 220 divided into 4 sub-areas: Ping A: SRQ entries 0 to 9 , Ping B: SRQ entries 10 to 19th , Ping C: SRQ entries 20th to 29 , Ping D: SRQ entries 30th to 39 , and Pong A: SRQ entries 0 to 9 , Pong B: SRQ records 10 to 19th , Pong C: SRQ entries 20th to 29 , Pong D: SRQ records 30th to 39 . Initially, the ISU issues ping A, B, C, D-Itags. Furthermore, the ISU will not issue Pong-A-Itags until Ping-A-Itags have been released. After all Ping-A-Itags have been released, the ISU will then issue Pong-A-Itags, but will not issue Pong-B-Itags until Ping-B-Itags have been released, similar to Case A. In one One or more examples, the ISU contains 3 additional bits in the entry of the output queue (1 wrap bit + 2 bits to describe the sub-area) in order to create a pseudo-output dependency based on the sub-area.

4 ist ein beispielhafter Block einer Struktur (L1-Cache) 290 eines Verzeichnisses von effektiven Adressen (EAD) gemäß einer veranschaulichenden Ausführungsform. In einem oder mehreren Beispielen handelt es sich bei dem EAD um einen Teil der LSU 104. Wie in 3 dargestellt, besteht das EAD 290 aus einem oder mehreren Einträgen, z.B. Eintrag 0 bis Eintrag N, wobei jeder Eintrag eine Mehrzahl von Feldern mit Daten im Hinblick auf eine Gruppe von einer oder mehreren Anweisungen aufweist. Beispielsweise kann bei einer veranschaulichenden Ausführungsform jeder Eintrag in dem EAD 290 zwischen 1 und 32 Anweisungen darstellen. Einträge in dem EAD 290 werden in Reaktion auf einen Abruf einer Anweisung erzeugt, der sich in einer neuen Cache-Zeile des Prozessor-Cache befindet, z.B. dem L2-Cache 260 in 2. Der Eintrag in dem EAD 290 wird aktualisiert, wenn zusätzliche Anweisungen aus der Cache-Zeile abgerufen werden. Jeder Eintrag des EAD 290 wird bei einer gewählten Verzweigung (d.h., eine aus dem Cache abgerufene Verzweigungsanweisung wird als „gewählt“ aufgelöst), einer Überschreitung einer Cache-Zeile (d.h., die nächste abgerufene Anweisung befindet sich in einer anderen Cache-Zeile als der aktuellen Cache-Zeile) oder einem Löschen der Prozessor-Pipeline (beispielsweise wenn eine falsche Vorhersage einer Verzweigung oder dergleichen auftritt) beendet. 4th Figure 13 is an exemplary block of a directory of effective addresses (EAD) structure (L1 cache) 290, according to an illustrative embodiment. In one or more examples, the EAD is part of the LSU 104 . As in 3 shown, the EEAS exists 290 from one or more entries, e.g. entry 0 through entry N, each entry having a plurality of fields of data relating to a group of one or more statements. For example, in one illustrative embodiment, each entry in the EAD 290 represent between 1 and 32 statements. Entries in the EAD 290 are generated in response to a fetch of an instruction residing in a new cache line of the processor cache, e.g., L2 cache 260 in FIG 2 . The entry in the EAD 290 updated when additional instructions are fetched from the cache line. Every entry in the EEAS 290 is selected on a branch chosen (ie, a branch instruction fetched from the cache is resolved as "chosen"), a cache line exceeded (ie, the next instruction fetched is in a different cache line than the current cache line) or a clearing of the processor pipeline (for example, if an incorrect branch prediction or the like occurs) has ended.

Wie in 3 dargestellt, weisen die Felder des Eintrags in dem EAD 290 eine effektive Basisadresse 310, eine Kennung 320 einer ersten Anweisung, eine Kennung 330 einer letzten Anweisung, eine Geschlossen-Kennung 340, ein Feld eines globalen Verlaufsvektors 350, ein Feld 360 eines Verknüpfungsstapelzeigers, eine Kennung 370 einer gewählten Verzweigung und ein Verzweigungsdatenfeld 380 auf. Das EAD 290 ist wie ein L1-Daten-Cache organisiert. Eine assoziative Organisation wird festgelegt. In einem oder mehreren Beispielen handelt es sich beispielsweise um 32 Indizes, durch eine EA(52 bis 56) auf 8 Arten adressiert, ausgewählt mit EA(0 bis 51).As in 3 shown, indicate the fields of the entry in the EAD 290 an effective base address 310 , an identifier 320 a first instruction, an identifier 330 a final instruction, a closed identifier 340 , a field of a global history vector 350 , a field 360 a link stack pointer, an identifier 370 a selected branch and a branch data field 380 on. The EEAS 290 is organized like an L1 data cache. An associative organization is established. For example, one or more examples are 32 indices, through an EA ( 52 to 56 ) addressed in 8 ways, selected with EA ( 0 to 51 ).

Bei der Basis-EA 310 handelt es sich um die Ausgangs-EA der Gruppe von Anweisungen. Jede Anweisung in der Gruppe von Anweisungen weist dieselbe Basis-EA und dann einen Versatz von dieser auf. Beispielsweise ist bei einer veranschaulichenden Ausführungsform die EA eine 64-Bit-Adresse, die die Bits 0 bis 63 aufweist. Die Basis-EA kann bei einer veranschaulichenden Ausführungsform die Bits 0 bis 56 dieser EA umfassen, wobei die Bits 57 bis 61 den Versatz von der Basis-EA für die spezifische Anweisung innerhalb der Gruppe von Anweisungen darstellen. Die Bits 62 und 63 verweisen auf ein bestimmtes Byte jeder Anweisung. Bei der veranschaulichenden Ausführungsform verweist jede Adresse auf eine Anweisung mit einer Länge von 32 Bits (d.h., 4 Bytes), wobei jedes Byte in dem Speicher adressierbar ist. Eine Anweisung kann nicht weiter in adressierbare Teilkomponenten unterteilt werden, und daher werden für eine Anweisungsadresse die Bits 62 und 63 immer auf null gesetzt. Daher müssen die Bits 62 und 63 nicht gespeichert werden und können durch das EAD immer als null angenommen werden.With the basic EA 310 it is the starting I / O of the group of instructions. Each instruction in the group of instructions has the same base EA and then an offset from it. For example, in one illustrative embodiment, the EA is a 64-bit address that contains the bits 0 to 63 having. The base EA, in an illustrative embodiment, may contain the bits 0 to 56 this EA include, the bits 57 to 61 represent the offset from the base EA for the specific instruction within the group of instructions. The bits 62 and 63 refer to a specific byte of each instruction. In the illustrative embodiment, each address points to an instruction 32 bits (ie, 4 bytes) in length, with each byte being addressable in memory. An instruction cannot be further divided into addressable sub-components, and therefore the bits for an instruction address 62 and 63 always set to zero. Hence the bits 62 and 63 are not saved and can always be assumed to be zero by the EAD.

Das Kennungsfeld 320 der ersten Anweisung speichert die EA-Versatz-Bits, z.B. die Bits 57 bis 61 der EA, für die erste Anweisung in der Gruppe von Anweisungen, der der Eintrag in dem EAD 290 entspricht. Eine Kombination aus der Basis-EA aus dem Feld 310 und den EA-Versatz-Bits in dem Kennungsfeld 320 der ersten Anweisung stellt die EA für die erste Anweisung in der Gruppe von Anweisungen bereit, die durch den Eintrag in dem EAD 290 dargestellt wird. Dieses erste Feld 320 kann, wie im Folgenden erörtert wird, zum Wiederherstellen einer Wiederabrufadresse und von Verzweigungsvorhersagedaten zum Beispiel in dem Fall verwendet werden, dass die Pipeline gelöscht wird.The identifier field 320 of the first instruction stores the IO offset bits, e.g. the bits 57 to 61 the EA, for the first instruction in the group of instructions, that is the entry in the EAD 290 corresponds to. A combination of the basic I / O from the field 310 and the EA offset bits in the identifier field 320 of the first instruction provides the EA for the first instruction in the group of instructions identified by the entry in the EAD 290 is shown. This first field 320 As discussed below, it can be used to restore a retrieval address and branch prediction data in the event that the pipeline is deleted, for example.

Das Kennungsfeld 330 der letzten Anweisung speichert die EA-Versatz-Bits, z.B. die Bits 57 bis 61 der EA, für die letzte Anweisung in der Gruppe von Anweisungen, der der Eintrag in dem EAD 290 entspricht. Eine EAD-Logik aktualisiert dieses Feld, wenn zusätzliche Anweisungen in der Gruppe von Anweisungen, die durch den Eintrag in dem EAD 290 dargestellt werden, abgerufen werden. Die EAD-Logik stellt die Aktualisierung dieses Feldes 330 in dem jeweiligen Eintrag in dem EAD 290 in Reaktion darauf ein, dass der Eintrag in dem EAD 290 geschlossen wird, wenn eine Überschreitung einer Cache-Zeile oder eine gewählte Verzweigung festgestellt wird. Dieses Feld bleibt erhalten, sofern es nicht zu einer Pipeline-Löschung kommt, die einen Abschnitt des EAD-Eintrags entfernt. In solchen Fällen aktualisiert die EAD-Logik dieses Feld, um die EA-Versatz-Bits der Anweisung zu speichern, die nun infolge der Löschung die neue letzte Anweisung in dem Eintrag ist. Dieses Feld wird letztendlich zum Abschließen verwendet, wie im Folgenden erörtert, um den Eintrag in dem EAD 290 freizugeben.The identifier field 330 the last instruction saves the IO offset bits, e.g. the bits 57 to 61 the EA, for the last instruction in the group of instructions, that is the entry in the EAD 290 corresponds to. EAD logic updates this field when there are additional instructions in the set of instructions identified by the entry in the EAD 290 can be displayed. The EAD logic provides the update of this field 330 in the respective entry in the EAD 290 in response to that the entry is in the EAD 290 is closed when a cache line exceeded or a selected branch is detected. This field is preserved unless a pipeline delete occurs that removes a portion of the EAD entry. In such cases, the EAD logic updates this field to store the IO offset bits of the instruction which, as a result of the deletion, is now the new last instruction in the entry. This field is ultimately used to complete the entry in the EAD, as discussed below 290 to release.

Das Geschlossen-Kennungsfeld 340 wird verwendet, um anzugeben, dass der Eintrag in dem EAD 290 geschlossen worden ist und keine weiteren Anweisungsabrufe durchgeführt werden, um Anweisungen für die Anweisungsgruppe abzurufen, die dem Eintrag in dem EAD 290 entspricht. Ein Eintrag in dem EAD 290 kann aus einer Vielfalt unterschiedlicher Gründe geschlossen werden, darunter eine Überschreitung einer Cache-Zeile, eine gewählte Abzweigung oder ein Löschen der Pipeline. Jede dieser Bedingungen kann dazu führen, dass der Wert in dem Geschlossen-Feld 340 so festgelegt wird, dass angegeben wird, dass der EAD-Eintrag geschlossen ist, z.B. auf einen Wert „1“ festgelegt wird. Dieses Feld 340 wird beim Abschließen dazu verwendet, einen Eintrag in dem EAD 290 freizugeben, wie im Folgenden ausführlicher erörtert wird.The closed identifier field 340 is used to indicate that the entry is in the EAD 290 has been closed and no further instruction fetches are made to fetch instructions for the instruction set corresponding to the entry in the EAD 290 corresponds to. An entry in the EAD 290 can be inferred from a variety of different reasons, including a cache line violation, a chosen junction, or a pipeline clearing. Any of these conditions can cause the value in the Closed field 340 is set to indicate that the EAD entry is closed, e.g. set to a value of "1". This field 340 is used on completion to make an entry in the EAD 290 as discussed in more detail below.

Das Feld 350 des globalen Verlaufsvektors kennzeichnet den globalen Verlaufsvektor für die erste Anweisungsabrufgruppe, die den Eintrag in dem EAD 290 erstellt hat. Der globale Verlaufsvektor wird verwendet, um einen Verlauf im Hinblick darauf zu kennzeichnen, ob Verzweigungen gewählt worden sind, wie im Folgenden ausführlicher erörtert wird. Der globale Verlaufsvektor wird zu Zwecken einer Verzweigungsvorhersage verwendet, um auf der Grundlage des jüngsten Verlaufs von gewählten oder nicht gewählten Verzweigungen zu ermitteln, ob eine aktuelle Verzweigung wahrscheinlich gewählt wird.The field 350 of the global history vector identifies the global history vector for the first instruction fetch group containing the entry in the EAD 290 created. The global history vector is used to identify a history in terms of whether branches have been taken, as discussed in more detail below. The global history vector is used for branch prediction purposes to determine whether a current branch is likely to be chosen based on the most recent history of chosen or unselected branches.

Das Feld 360 des Verknüpfungsstapelzeigers kennzeichnet den Verknüpfungsstapelzeiger für die erste Anweisungsabrufgruppe, die den Eintrag in dem EAD 290 erstellt hat. Bei dem Verknüpfungsstapelzeiger handelt es sich um einen weiteren Verzweigungsvorhersagemechanismus, der im Folgenden ausführlicher beschrieben wird.The field 360 of the link stack pointer identifies the link stack pointer for the first instruction fetch group containing the entry in the EAD 290 created. The link stack pointer is another Branch prediction mechanism, which is described in more detail below.

Das Feld 370 der gewählten Verzweigung gibt an, ob die dem Eintrag in dem EAD 290 entsprechende Gruppe von Anweisungen eine Verzweigungsanweisung aufwies, in der die Verzweigung gewählt wurde. Der Wert in dem Feld 370 der gewählten Verzweigung wird in Reaktion darauf aktualisiert, dass eine Verzweigungsanweisung der Anweisungsgruppe, die durch den Eintrag in dem EAD 290 dargestellt wird, als gewählt vorhergesagt wird. Darüber hinaus wird, nachdem eine Verzweigung in den Anweisungen des Eintrags in dem EAD 290 gewählt worden ist, der Eintrag in dem EAD 290 ebenfalls geschlossen, indem der entsprechende Wert in das Geschlossen-Feld 340 geschrieben wird. Da das Feld der gewählten Verzweigung zum Zeitpunkt der Vorhersage spekulativ geschrieben wird, muss es möglicherweise durch den korrekten Wert ersetzt werden, wenn die Verzweigung tatsächlich ausgeführt wird. Beispielsweise könnte eine Verzweigung als nicht gewählt vorhergesagt werden, in welchem Fall eine „0“ in das Feld der gewählten Verzweigung geschrieben würde. Im weiteren Verlauf in der Ausführung könnte sich jedoch herausstellen, dass die Verzweigung gewählt wurde, in welchem Fall das Feld korrigiert werden muss, indem ein Wert „1“ hineingeschrieben wird. Der zweite Schreibvorgang erfolgt nur, wenn die Verzweigung falsch vorhergesagt wurde.The field 370 of the selected branch indicates whether the entry in the EAD 290 corresponding group of instructions had a branch instruction in which the branch was selected. The value in the field 370 the selected branch is updated in response to a branch instruction of the instruction set identified by the entry in the EAD 290 is represented as is predicted to be elected. In addition, after a branch in the instructions of the entry in the EAD 290 has been chosen, the entry in the EAD 290 also closed by entering the corresponding value in the closed field 340 is written. Since the field of the chosen branch is written speculatively at prediction time, it may need to be replaced with the correct value if the branch is actually taken. For example, a branch could be predicted as not chosen, in which case a “0” would be written in the field of the chosen branch. In the further course of the execution, however, it could turn out that the branch was selected, in which case the field must be corrected by writing a value "1" into it. The second write occurs only if the branch was mispredicted.

Das Verzweigungsdatenfeld 380 speichert verschiedene Verzweigungsdaten, die zum Aktualisieren von Verzweigungsvorhersagestrukturen, wenn eine Verzweigung aufgelöst wird, oder eines strukturierten EA-Zustands verwendet werden, wenn eine Verzweigungsanweisung abgeschlossen wird.The branch data field 380 stores various branch data used to update branch prediction structures when a branch is resolved or an EA structured state when a branch instruction completes.

Das Feld 385 ERT_ID speichert einen Index in der ERT-Tabelle (ausführlicher beschrieben), der einen entsprechenden ERT-Eintrag kennzeichnet. Wenn ein ERT-Eintrag ungültig gemacht wird, wird die zugehörige ERT_ID ungültig gemacht, und es werden auch alle zugehörigen Einträge in dem L1-Cache und in dem L1-D-Cache ungültig gemacht.The field 385 ERT_ID stores an index in the ERT table (described in more detail), which identifies a corresponding ERT entry. When an ERT entry is invalidated, the associated ERT_ID is invalidated, and all related entries in the L1 cache and in the L1-D cache are also invalidated.

Auf Einträge in dem EAD 290 wird mithilfe eines Tags einer effektiven Adresse (effective address tag, eatag) zugegriffen, das zumindest zwei Teile aufweist: ein Basis-Eatag und einen Eatag-Versatz. Bei einer veranschaulichenden Ausführungsform handelt es sich bei diesem Eatag um einen 10-Bit-Wert, der relativ viel kleiner als die 64-Bit-EA ist. Bei einem 10-Bit-Eatag-Wert und einem EAD 290 mit einer Größe von 14 Einträgen besteht bei einer beispielhaften Implementierung das Eatag aus ersten 5 Bits, die als Basis-Eatag bezeichnet werden, um einen Eintrag innerhalb des EAD 290 zu kennzeichnen, und aus zweiten 5 Bits, die als Eatag-Versatz bezeichnet werden, um den Versatz der spezifischen Anweisung innerhalb der Gruppe von Anweisungen bereitzustellen, die durch den Eintrag in dem EAD 290 dargestellt wird. Ein erstes Bit in den 5 Bits, die den Eintrag innerhalb des EAD 290 kennzeichnen, kann als Wrap-Bit verwendet werden, um anzugeben, ob ein Umlaufen von dem obersten Eintrag zu dem untersten Eintrag des EAD 290 aufgetreten ist. Dies kann für eine Alterserkennung verwendet werden. Das zweite bis fünfte Bit der 5 Bits, die den Eintrag in dem EAD 290 kennzeichnen, können zum Indizieren in dem EAD verwendet werden, um die Basis-EA der Anweisung, d.h., die EA(0 bis 56) zu kennzeichnen. Der 5-Bit-Versatzwert kann dazu verwendet werden, zum Beispiel die Bits 57 bis 61 der EA der jeweiligen Anweisung bereitzustellen. Dieses beispielhafte Eatag wird im Folgenden veranschaulicht:

  • eatag(0 bis 9)=Zeile(0 bis 4)||Versatz(0 bis 4)
  • Zeile(0): Wrap-Bit für das EAD, das angibt, ob ein Umlaufen von dem obersten Eintrag zu dem untersten Eintrag des EAD aufgetreten ist.
  • Zeile(1 bis 4): Index in dem EAD mit 14 Einträgen wird verwendet, um die EA(0 bis 56) der Anweisung zu ermitteln.
  • Versatz(0 bis 4): Bits 57 bis 61 der EA der Anweisung.
On entries in the EEAS 290 is accessed using an effective address tag (eatag) that has at least two parts: a base eatag and an eatag offset. In an illustrative embodiment, this eatag is a 10-bit value, which is relatively much smaller than the 64-bit EA. With a 10-bit Eatag value and an EAD 290 With a size of 14 entries, in an exemplary implementation the Eatag consists of the first 5 bits, which are referred to as the base Eatag, around an entry within the EAD 290 and the second 5 bits called the Eatag offset to provide the offset of the specific instruction within the group of instructions identified by the entry in the EAD 290 is shown. A first bit in the 5 bits that make up the entry within the EAD 290 can be used as a wrap bit to indicate whether there is a wrap around from the top entry to the bottom entry of the EAD 290 occured. This can be used for age detection. The second through fifth bits of the 5 bits that make up the entry in the EAD 290 can be used for indexing in the EAD to indicate the base EA of the instruction, i.e. the EA ( 0 to 56 ). The 5-bit offset value can be used for this, for example the bits 57 to 61 to provide the EA of the respective instruction. This exemplary Eatag is illustrated below:
  • eatag (0 to 9) = line (0 to 4) || offset (0 to 4)
  • Line (0): Wrap bit for the EAD, which indicates whether a wrap around from the top entry to the bottom entry of the EAD has occurred.
  • Line (1 to 4): Index in the EAD with 14 entries is used to determine the EA (0 to 56) of the instruction.
  • Offset (0 to 4): Bits 57 to 61 of the EA of the instruction.

5 stellt eine beispielhafte Struktur einer Effektiv-Real-Tabelle (ERT) gemäß einer oder mehreren Ausführungsformen der vorliegenden Erfindung dar. In einem oder mehreren Beispielen enthält die ERT 255 128 Einträge insgesamt, es ist jedoch zu beachten, dass die Gesamtanzahl von Einträgen in sonstigen Beispielen unterschiedlich sein kann, und des Weiteren, dass die Anzahl von Einträgen wählbar oder programmierbar sein kann. Für den Fall, dass die LSU zwei Anweisungen über getrennte Threads parallel ausführt, verwaltet die LSU zwei Instanzen der ERT 255 mit jeweils 64 (der Hälfte) Einträgen, zum Beispiel eine ERTO und eine ERT1. In der folgenden Beschreibung wird eine beliebige dieser Instanzen beschrieben, sofern nichts anderes angegeben wird. 5 FIG. 10 illustrates an exemplary structure of an effective real table (ERT) according to one or more embodiments of the present invention. In one or more examples, the ERT includes 255 128 Entries in total, however, it should be noted that the total number of entries in other examples can be different, and further that the number of entries can be selectable or programmable. In the event that the LSU executes two instructions in parallel via separate threads, the LSU manages two instances of the ERT 255 with 64 (half) entries each, for example an ERTO and an ERT1. In the following description, any one of these instances is described unless otherwise indicated.

Die ERT 255 enthält einen gültigen ERT-Eintrag, der im Allgemeinen für jede Seite vorhanden ist, die in dem L1-I-Cache- oder -D-Cache-Verzeichnis (EAD 290) aktiv ist, oder einen SRQ-Eintrag oder einen LRQF-Eintrag oder einen LMQ-Eintrag. Mit anderen Worten, bei der ERT 255 handelt es sich um eine Tabelle aller aktiven RPNs in der LSU und der IFU (L1-DC, SRQ, LRQE, LRQF, LMQ, IC). In einem oder mehreren Beispielen werden, wenn der Prozessor 106 im ST-Modus arbeitet, alle Einträge in der ERT 255 für den einzelnen Thread verwendet, der ausgeführt wird. Alternativ sind in einem oder mehreren Beispielen die Einträge in der ERT 255 in Sätze unterteilt, und in dem ST-Modus weist jeder Satz denselben Inhalt auf. Wenn die ERT 255 zum Beispiel insgesamt 128 Einträge aufweist und maximal zwei Threads unterstützt, enthält die ERT 255, wenn der Prozessor im ST-Modus arbeitet, zwei Sätze mit jeweils 64 Einträgen und die beiden Sätze weisen denselben Inhalt auf.The ERT 255 contains a valid ERT entry, which generally exists for every page stored in the L1 I-cache or -D-cache directory (EAD 290 ) is active, or an SRQ entry or an LRQF entry or an LMQ entry. In other words, at ERT 255 it is a table of all active RPNs in the LSU and the IFU (L1-DC, SRQ, LRQE, LRQF, LMQ, IC). In one or more examples, if the processor 106 works in ST mode, all entries in the ERT 255 used for the single thread that is running. Alternatively, in one or more examples, the entries in the ERT 255 divided into sentences, and in the ST mode, each sentence has the same content. When the ERT 255 for example has a total of 128 entries and supports a maximum of two threads, the ERT 255 when the processor is in ST mode, two sets of 64 entries each, and the two sets have the same content.

Wenn der Prozessor 106 im MT-Modus arbeitet, werden die ERT-Einträge alternativ unter den ausgeführten Threads aufgeteilt. Beispielsweise werden im Fall von zwei Threads die ERT-Einträge in zwei gleiche Sätze aufgeteilt, einen ersten Satz von Einträgen, die einem ersten Thread zugehörig sind, und einen zweiten Satz von Einträgen, die einem zweiten Thread zugehörig sind. Beispielsweise 1 Kopie für LD0-Pipe-L1-Fehler, ST0-Pipe-Starts, T0/T2-I-Fetches: ERT0, die T0 im SMT2-Modus und T0/T2 im SMT4-Modus verarbeitet; und 1 Kopie für LD1-Pipe-L1-Fehler, ST1-Pipe-Starts, T1/T3-I-Fetches: ERT1, die T1 im SMT2-Modus und T1/T3 im SMT4-Modus verarbeitet.When the processor 106 works in MT mode, the ERT entries are alternatively divided among the executed threads. For example, in the case of two threads, the ERT entries are split into two equal sets, a first set of entries associated with a first thread and a second set of entries associated with a second thread. For example 1 copy for LD0 pipe L1 errors, ST0 pipe starts, T0 / T2 I fetches: ERT0 that processes T0 in SMT2 mode and T0 / T2 in SMT4 mode; and 1 copy for LD1 pipe L1 errors, ST1 pipe starts, T1 / T3 I fetches: ERT1 which processes T1 in SMT2 mode and T1 / T3 in SMT4 mode.

In einem oder mehreren Beispielen enthält jeder ERT-Eintrag zumindest die folgenden ERT-Felder, ERT_ID (0 bis 6), Tid_en (0 bis 1), Seitengröße (0 bis 1), EA (0 bis 51) und RA (8 bis 51). Bei dem Feld ERT_ID handelt es sich um einen eindeutigen Index für jeden ERT-Eintrag. Beispielsweise kann die ERT_ID eine fortlaufende Nummer enthalten, die den ERT-Eintrag kennzeichnet. Die ERT_ID wird in dem Feld 285 ERT_ID des EAD 290 und sonstigen durch die LSU verwendeten Datenstrukturen gespeichert. Das Feld TID_en gibt an, ob der Eintrag für eine Verwendung im MT-Modus aktiviert ist, und gibt in einem oder mehreren Beispielen die Thread-Kennung der Anweisung an, die den ERT-Eintrag verwendet. Des Weiteren gibt die Seitengröße die Speicherseitengröße an, auf die sich der ERT-Eintrag bezieht. Die RA enthält eine reale Adresse, die dem ERT-Eintrag zugehörig ist.In one or more examples, each ERT entry contains at least the following ERT fields, ERT_ID (0 to 6), Tid_en (0 to 1), Page Size (0 to 1), EA (0 to 51), and RA (8 to 51 ). The ERT_ID field is a unique index for each ERT entry. For example, the ERT_ID can contain a sequential number that identifies the ERT entry. The ERT_ID is in the field 285 ERT_ID of the EAD 290 and other data structures used by the LSU. The TID_en field indicates whether the entry is enabled for use in MT mode and, in one or more examples, indicates the thread ID of the instruction that uses the ERT entry. The page size also indicates the memory page size to which the ERT entry relates. The RA contains a real address that is associated with the ERT entry.

Die LSU bezieht sich nur dann auf die ERT 255, wenn die RA zum Abschließen einer Ausführung einer Anweisung verwendet werden soll. Wie hierin beschrieben, wird die ERT 255 durch die LSU für die folgenden vier Funktionen herangezogen, 1. Ifetch-, Lade- oder Speicherfehler in dem L1-Cache; 2. Speicherungen von einem weiteren Thread innerhalb des Kerns; 3. Snoop-Vorgänge (XI) von einem weiteren Kern; und 4. Ungültigmachen von TLB und SLB.The LSU only then refers to the ERT 255 when the RA is to be used to complete an execution of an instruction. As described herein, the ERT 255 used by the LSU for the following four functions, 1. Ifetch, load or store errors in the L1 cache; 2. Saves from another thread within the core; 3. Snoops (XI) from another core; and 4. Invalidating TLB and SLB.

Im ersten Fall von Ifetch-, Lade- oder Speicherfehlern in dem L1-Cache werden die EA und die Thread_id dazu verwendet in der ERT 255 zu indizieren, und die RA von dem entsprechenden ERT-Eintrag wird an den L2-Cache gesendet, wenn ein gültiger ERT-Eintrag vorhanden ist. Bei einem ERT-Fehler, das heißt, wenn kein gültiger ERT-Eintrag für die EA und die Thread_id vorhanden ist, wird der SLB/TLB verwendet.In the first case of ifetch, load or store errors in the L1 cache, the EA and the Thread_id are used in the ERT 255 to index, and the RA from the corresponding ERT entry is sent to the L2 cache if there is a valid ERT entry. In the event of an ERT error, i.e. if there is no valid ERT entry for the EA and the Thread_id, the SLB / TLB is used.

In dem zweiten Fall, in dem von einem weiteren Thread innerhalb des Kerns gespeichert wird, überprüft ein Speichern, das aus der SRQ bereinigt wurde, die ERT 255. Wenn kein Treffer von einem anderen Thread vorhanden ist, besteht kein Laden von einem weiteren Thread, der dieselbe RA verwendet. Wenn ein Treffer von einem anderen Thread vorhanden ist, der dieselbe RA verwendet, überprüft die LSU die LRQ. Wenngleich selten, wenn ein Treffer von einem weiteren Thread vorhanden ist, wenn die RA von einem oder mehreren weiteren Threads verwendet wird. Dementsprechend durchsucht die LSU die ERT-Tabelle 400, um die relevante(n) EA(s) für die gemeinsame RA zu finden. Anschließend wird/werden die EA(s) dazu verwendet, in der LRQ nach einer Übereinstimmung zu suchen (alle Speicherausgaben in diesem Zyklus abzulehnen). Die LRQ wird je Thread unterteilt, so dass die LSU nur die LRQ des relevanten Threads untersucht. Wenn (ein) entsprechende(s) Laden/Ladungen in der LRQ vorhanden ist/sind, löscht die LSU die älteste der entsprechenden Ladung(en).In the second case, when another thread is saving within the core, a save that has been cleaned up from the SRQ checks the ERT 255 . If there is no hit from another thread, there is no load from another thread using the same RA. If there is a hit from another thread using the same RA, the LSU checks the LRQ. Although rarely, if there is a hit from another thread when the RA is in use by one or more other threads. The LSU searches the ERT table accordingly 400 to find the relevant EA (s) for the common RA. Then the EA (s) is / are used to search for a match in the LRQ (to reject all memory outputs in this cycle). The LRQ is subdivided for each thread so that the LSU only examines the LRQ of the relevant thread. If there is (a) corresponding charge (s) in the LRQ, the LSU will delete the oldest of the corresponding charge (s).

Im dritten Fall eines Snoop-Vorgangs von einem weiteren Kern des Prozessors arbeitet die LSU ähnlich wie im zweiten Fall und überprüft auf einen Treffer von einem der sonstigen ausgeführten Threads. Wenn der TLB/SLB ungültig gemacht werden, wird die ERT 255 ebenfalls ungültig gemacht.In the third case of a snoop process from another core of the processor, the LSU works similarly to the second case and checks for a hit from one of the other executed threads. If the TLB / SLB are invalidated, the ERT 255 also invalidated.

Die LRQF 218 wird zusammen mit der ERT-Tabelle 400 zum Erkennen und Verarbeiten von Risiken wie zum Beispiel LHL, SHL und LHS verwendet. Beispielsweise wird jede Speicheranweisung anhand der LRQF 218 auf eine Erkennung eines SHL überprüft, und falls eine Ladeanweisung in der LRQF 218 für dieselbe EA wie in der Speicheranweisung vorhanden ist, werden die Speicheranweisung und sonstige Einträge daraus in der IFU gelöscht oder wird die Ladeanweisung aus der LRQF 218 gelöscht. Im Fall von DCB-Anweisungen werden des Weiteren die Anweisungen anhand der LRQF 218 auf SHL-Fälle überprüft, und eine Ladeanweisung und Sämtliches nach dem DCB wird gelöscht, oder die Ladeanweisung wird gelöscht. Für jeden Datensatz, den das System 100 verarbeiten möchte, ist eine entsprechende Datensteuerblock(data control block, DCB)- und Datendefinitions(DD)-Anweisung oder ihre dynamische Zuordnungsentsprechung zu konfigurieren.The LRQF 218 comes along with the ERT table 400 used to identify and process risks such as LHL, SHL and LHS. For example, each memory instruction is based on the LRQF 218 checked for detection of an SHL, and if a load instruction is in the LRQF 218 for the same EA as is present in the storage instruction, the storage instruction and other entries from it are deleted in the IFU or the load instruction is removed from the LRQF 218 deleted. In the case of DCB instructions, the instructions are also based on the LRQF 218 checked for SHL cases, and a load instruction and everything after the DCB is deleted, or the load instruction is deleted. For every record that the system 100 configure an appropriate data control block (DCB) and data definition (DD) statement, or their dynamic mapping equivalent.

Des Weiteren werden in einem oder mehreren Beispielen, wenn Daten in physische Speicherpositionen in dem Systemspeicher hinein und aus diesen heraus verschoben werden (z.B. in Reaktion auf das Aufrufen eines neuen Prozesses oder eines Kontextwechsels), die Einträge in dem TLB aktualisiert, um das Vorhandensein der neuen Daten widerzuspiegeln, und die TLB-Einträge, die Daten zugehörig sind, die aus dem Systemspeicher entfernt worden sind (z.B. in einen nichtflüchtigen Massenspeicher ausgelagert worden sind), müssen ungültig gemacht werden. Typischerweise liegt das Ungültigmachen von TLB-Einträgen in der Verantwortung von Software und wird durch die Ausführung einer expliziten Anweisung zum Ungültigmachen von TLB-Einträgen (z.B. TLBIE in der POWER™-Anweisungssatzarchitektur (instruction set architecture, ISA)) erreicht. Die LRQF 218 stellt TLBIE-Unterstützung bereit, indem sie eine TLBIE-Anweisung zum Markieren der Einträge in der LRQF 218 erleichtert, wobei die LRQF 218 angibt, ob gültige Einträge markiert sind.Furthermore, in one or more examples, when data is moved in and out of physical storage locations in system storage (e.g., in response to a new process being invoked or a context switch), the entries in the TLB are updated to reflect the presence of the new data, and the TLB entries associated with data that has been removed from system memory (e.g. into a non-volatile Mass storage devices have been swapped out) must be invalidated. Typically, invalidation of TLB entries is the responsibility of software and is accomplished by executing an explicit TLB entry invalidation instruction (e.g., TLBIE in the POWER ™ instruction set architecture (ISA)). The LRQF 218 provides TLBIE support by issuing a TLBIE statement to mark the entries in the LRQF 218 relieved, the LRQF 218 indicates whether valid entries are marked.

Des Weiteren wird jede Ladeanweisung anhand der LRQF 218 auf LHL-Erkennung (sequentielle Ladekonsistenz) überprüft, und im Fall eines LHL wird die neuere Ladeanweisung gelöscht oder wird Sämtliches nach der älteren Ladeanweisung gelöscht.Furthermore, each loading instruction is based on the LRQF 218 checked for LHL detection (sequential load consistency), and in the case of an LHL, the newer load instruction is deleted or everything is deleted after the older load instruction.

Noch weiter wird jede LARX-Anweisung anhand der LRQF 218 auf Larx-Hit-Larx-Fälle überprüft, und falls die Situation erkannt wird, wird die neuere LARX-Anweisung gelöscht, oder Sämtliches nach der älteren LARX-Anweisung wird gelöscht.Each LARX instruction is even further based on the LRQF 218 checked for Larx-Hit-Larx cases, and if the situation is detected, the newer LARX instruction is deleted, or everything after the older LARX instruction is deleted.

Die hierin beschriebenen technischen Lösungen erleichtern auf diese Weise eine Erkennung von Risiken nur mit EA und ohne EA-RA-Umsetzung für jeden Lade- und Speicherpfad, was sowohl im Hinblick auf Zeit wie auch auf Chip-Fläche (um RA und CAM-Anschlüsse für eine Umsetzung zu speichern) aufwendiger ist. Des Weiteren erleichtern die technischen Lösungen eine verbesserte Ablaufsteuerung, um ein SHL zu erkennen und eine DVAL rechtzeitig zu unterdrücken.In this way, the technical solutions described here facilitate the identification of risks with EA only and without EA-RA implementation for each loading and storage path, which is important in terms of both time and chip area (to provide RA and CAM connections for saving an implementation) is more complex. Furthermore, the technical solutions facilitate improved process control in order to recognize an SHL and to suppress a DVAL in good time.

6 veranschaulicht einen Ablaufplan eines beispielhaften Verfahrens zum Zugreifen auf einen Speicher zum Ausführen von Anweisungen durch eine LSU gemäß einer oder mehreren Ausführungsformen der vorliegenden Erfindung. Bei der Anweisung kann es sich um ein Laden, ein Speichern oder einen Anweisungsabruf für den OoO-Prozessor 106 handeln. Beim Empfang der Anweisung verwendet die LSU Parameter der Anweisung, um zu überprüfen, ob das EAD 290 einen Eintrag aufweist, der der Anweisung entspricht, wie in 505 und 510 dargestellt. In einem oder mehreren Beispielen enthalten die zum Überprüfen verwendeten Parameter unter anderem eine Thread-Kennung, eine Seitengröße, eine EA. 6th Figure 3 illustrates a flow diagram of an exemplary method of accessing memory for execution of instructions by an LSU in accordance with one or more embodiments of the present invention. The instruction can be a load, a store, or an instruction fetch for the OoO processor 106. When receiving the instruction, the LSU uses parameters of the instruction to check whether the EAD 290 has an entry corresponding to the instruction, as shown in 505 and 510. In one or more examples, the parameters used for checking contain, among other things, a thread ID, a page size, an EA.

Wenn es in der LSU zu einem EAD-Treffer in dem EAD 290 kommt, das heißt, die EA der Anweisung stimmt mit einem Eintrag in der EAD-Tabelle 300 überein, liest die LSU den Inhalt des übereinstimmenden EAD-Eintrags, um einen entsprechenden ERT-Eintrag zu ermitteln, wie in 520 dargestellt. Jeder EAD-Eintrag enthält das Feld 285 ERT_ID (0 bis 6). Wie zuvor beschrieben, wird, wenn ein ERT-Eintrag ungültig gemacht wird, die zugehörige ERT_ID ungültig gemacht, wodurch auch alle zugehörigen Einträge in der EAD-Tabelle 300 ungültig gemacht werden. Dementsprechend impliziert ein EAD-Treffer einen ERT-Treffer, da mithilfe des Feldes 285 ERT_ID ein ERT-Eintrag für die Lade-/Speicheranweisung zu finden ist. Dementsprechend liest die LSU im Fall des EAD-Treffers nach dem Identifizieren des entsprechenden EAD-Eintrags die ERT_ID aus dem EAD-Eintrag aus und sendet diese an die SRQ, LMQ und/oder LRQF, wie in 530 dargestellt. Die SRQ, LMQ und/oder LRQF verwenden die EA aus dem erkannten EAD-Eintrag. Bei Speicheranweisungen, die eine RA verwenden, wird die RA aus dem ERT-Eintrag für einen L2-Zugriff ausgelesen, wie in 540 und 545 dargestellt. Daher wird der Kern, der die technischen Lösungen hierin implementiert, als Nur-EA-Kern bezeichnet, da die RA außer in den Speicheranweisungen nirgendwo verwendet wird.If there is an EAD hit in the EAD in the LSU 290 comes, that is, the EA of the instruction matches an entry in the EAD table 300 matches, the LSU reads the contents of the matching EAD entry to determine a corresponding ERT entry, as shown at 520. Each EAD entry contains the field 285 ERT_ID (0 to 6). As previously described, when an ERT entry is invalidated, the associated ERT_ID is invalidated, which also causes all associated entries in the EAD table 300 invalidated. Correspondingly, an EAD hit implies an ERT hit, since the field is used 285 ERT_ID an ERT entry for the load / save instruction can be found. Accordingly, in the case of the EAD hit, the LSU reads out the ERT_ID from the EAD entry after identifying the corresponding EAD entry and sends it to the SRQ, LMQ and / or LRQF, as shown in 530. The SRQ, LMQ and / or LRQF use the EA from the recognized EAD entry. For store instructions that use an RA, the RA is read from the ERT entry for an L2 access, as shown in 540 and 545. Therefore, the core that implements the technical solutions herein is referred to as the EA-only core, since the RA is not used anywhere except in the store instructions.

Im Folgenden wird der Fall betrachtet, in dem die Anweisung keinen Treffer in dem EAD 290 erzielt, das heißt, die EA der Anweisung keinen entsprechenden Eintrag in der EAD-Tabelle 300 aufweist. Die Thread_id und die EA werden mit jedem Eintrag aus der ERT 255 verglichen, wie in 550 dargestellt. Wenn ein ERT-Treffer vorliegt, das heißt, ein ERT-Eintrag mit den Parametern übereinstimmt, liest die LSU die RA (8 bis 51) aus dem ERT-Eintrag aus, wie in 555 und 530 dargestellt. Für Ladeanforderungen sendet die LSU die RA zum Zugriff 530 an den L2-Cache. Für Speicheranweisungen speichert die LSU die RA in der SRQ und sendet die RA anschließend an den L2-Cache, wenn das Speichern in den L2-Cache bereinigt wird, wie in 540 bis 545 dargestellt.The following will consider the case where the instruction does not hit the EAD 290 that is, the EA of the statement does not have a corresponding entry in the EAD table 300 having. The Thread_id and the EA are taken from the ERT 255 as shown in 550. If there is an ERT hit, i.e. an ERT entry matches the parameters, the LSU reads the RA ( 8th to 51 ) from the ERT entry, as shown in 555 and 530. For load requests, the LSU sends the RA for access 530 to the L2 cache. For store instructions, the LSU stores the RA in the SRQ and then sends the RA to the L2 cache when the store in the L2 cache is cleaned up, as illustrated in 540-545.

Wenn ein ERT-Fehler auftritt, initiiert die LSU ein erneutes Laden für die ERT 255, wie in 555 und 560 dargestellt. Des Weiteren wird ein Austausch von ERT-Einträgen initiiert. Der Austausch von ERT-Einträgen beruht auf der LRU, und die LSU stellt sicher, dass während dieses Prozesses Synonyme innerhalb des OoO-Fensters verfolgt werden.If an ERT error occurs, the LSU initiates a reload for the ERT 255 as shown in 555 and 560. An exchange of ERT entries is also initiated. The exchange of ERT entries is based on the LRU, and the LSU ensures that synonyms are followed within the OoO window during this process.

Auf diese Weise wird durch Implementieren des obigen Verfahrens für ein Laden, wenn ein EA-Treffer in dem L1-Verzeichnis auf Grundlage von EA vorhanden ist, keine Adressumsetzung durchgeführt. Dies verbessert den typischen Prozessor, bei dem das L1-Verzeichnis auf RA beruht, was im Falle eines Fehlers in dem L1-Verzeichnis für ein Laden dazu führt, dass die EA zum Umsetzen an eine ERAT-Tabelle gesendet wird, um die RA zu beziehen, die an das L2-Verzeichnis und darüber hinaus gesendet wird.In this way, by implementing the above method for loading when there is an EA hit in the EA based L1 directory, no address translation is performed. This improves the typical processor where the L1 directory is based on RA, which in the event of an error in the L1 directory for a load results in the EA being sent to an ERAT table for translation to obtain the RA sent to the L2 directory and beyond.

Des Weiteren muss die LSU bei dem hierin beschriebenen Verfahren für Speicherungen die ERT-Tabelle durchlaufen, um die RA zu ermitteln, die anschließend in der SRQR gespeichert wird, um bis hinunter zu den Caches (L1, L2, Speicher) zu bereinigen, wenn das Speichern aus der SRQ bereinigt wird. Die SRQR speichert sämtliche RA für die Speicherungen. Die RA wird nur zum Bereinigen in der Verschachtelung gespeichert (d.h., L2, Speicher und sonstige Einheiten des Speicherteilsystems). Die RA wird nicht für eine Erkennung von Risiken einer OoO-Ausführung vom Typ Load-Hit-Store, Store-Hit-Load oder Load-Hit-Load verwendet, wie es bei den typischen Lösungen der Fall ist. Die RA-Berechnung für Speicherungen findet statt, bevor das Speichern abgeschlossen ist, da nach Abschluss die LSU nicht in der Lage ist, einen Interrupt für das Speichern zu verarbeiten (ein Speichern kann einen auf eine Adressumsetzung bezogenen Interrupt erzeugen, der verarbeitet werden muss, bevor das Speichern abgeschlossen wird). Hier wird die RA-Berechnung durchgeführt, wenn das Speichern (von der SRQR) ausgegeben wird, wodurch verhindert wird, dass die LSU die Adressumsetzung durchführen muss. Auf diese Weise werden Speicherungen außerhalb der Reihenfolge ausgegeben und ausgeführt und werden anschließend in der Reihenfolge abgeschlossen, und danach werden die Speicherungen in der Reihenfolge aus der SRQ bereinigt. Bis ein Speichern bereinigt ist, hat kein sonstiger Thread oder Kern Kenntnis von dem Speichern (nur der aktuelle Thread hat Kenntnis davon). Nachdem das Speichern aus der SRQ bereinigt worden ist, wird es in den L1- (sofern die Zeile in dem L1 bereits vorhanden ist) und den L2-Cache (sofern Zwischenspeichern aktiviert ist) geschrieben, und zu diesem Zeitpunkt ist das Speichern allen sonstigen Threads und Kernen in dem System 100 bekannt.In addition, the LSU must go through the ERT table in the method for storage described here in order to determine the RA, which is then stored in the SRQR in order to go down to the caches ( L1 , L2 , Memory) too Purge when the store is purged from the SRQ. The SRQR stores all RA for the stores. The RA is stored in the nest for cleaning only (ie, L2, storage, and other units of the storage subsystem). The RA is not used to identify risks of OoO execution of the load-hit-store, store-hit-load or load-hit-load types, as is the case with typical solutions. The RA calculation for stores takes place before the store is completed, since after completion the LSU is unable to process an interrupt for the store (a store can generate an interrupt related to an address translation that must be processed, before saving is completed). Here the RA calculation is performed when the store is issued (from the SRQR), which prevents the LSU from having to perform the address translation. In this way, saves are issued and executed out of order, and then complete in order, and then the in-order saves are purged from the SRQ. Until a save is cleaned up, no other thread or core has knowledge of the save (only the current thread has knowledge of it). After the store has been cleaned up from the SRQ, it is written to the L1 (if the line already exists in the L1) and L2 caches (if caching is enabled), and at this point the store is all other threads and cores in the system 100 known.

Bei Anweisungsabrufen, die keinen Treffer in dem L1-I-Cache auf Grundlage von EA aufweisen, wird die EA mithilfe der ERT 255 in eine RA umgesetzt, und die RA wird an die Verschachtelung gesendet, um die I-Cache-Zeile abzurufen. Hierbei werden LHS (Load-Hit-Store), SHL (Store-Hit-Load) und LHL (Load-Hit-Load) sämtlich auf Grundlage der EA und des ERT-Indexes ermittelt, der mit den Verzeichniseinträgen in dem L1-Cache auf Grundlage von EA (EAD 290) gespeichert ist. Sämtliche Einträge in der EAD-Tabelle 300 weisen ihre gültige Umsetzung in der ERT-Tabelle 400 auf, die verwendet werden kann, sobald LHS, SHL und LHL ermittelt worden sind. Wenn ein ERT-Eintrag ungültig gemacht wird, werden die entsprechenden L1-Cache-Einträge ungültig gemacht.For instruction fetches that do not have a hit in the L1 I-Cache based on EA, the EA is determined using the ERT 255 is converted to an RA and the RA is sent to the interleave to fetch the I-cache line. LHS (Load-Hit-Store), SHL (Store-Hit-Load) and LHL (Load-Hit-Load) are all determined on the basis of the EA and the ERT index, which is based on the directory entries in the L1 cache Basis of EA (EAD 290 ) is saved. All entries in the EAD table 300 assign their valid implementation in the ERT table 400 that can be used once LHS, SHL, and LHL have been determined. When an ERT entry is invalidated, the corresponding L1 cache entries are invalidated.

Die LRQF, bei der es sich um die Ladeneuordnungs-Warteschlange handelt, stellt sicher, dass alle Ladeoperationen von der Zuteilung bis zum Abschluss verfolgt werden. Wenn ein Laden abgelehnt wird (bei einem Cache-Fehler oder einem Umsetzungsfehler oder wenn eine vorherige Anweisung, von der dieses abhängt, abgelehnt wurde), wird das Laden aus der Ausgabewarteschlange entfernt und in die LRQE eingestellt, damit es von dort erneut ausgegeben wird.The LRQF, which is the load reorder queue, ensures that all loads are tracked from dispatch to completion. If a load is refused (in the event of a cache or translation error, or if a previous instruction on which it depends was refused), the load is removed from the output queue and placed in the LRQE to be reissued from there.

6 veranschaulicht einen Ablaufplan für ein Verfahren zum erneuten Laden der ERT gemäß einer oder mehreren Ausführungsformen der vorliegenden Erfindung. Ein erneutes Laden der ERT bewirkt, dass ein Eintrag in der ERT in Reaktion auf und auf Grundlage des ERT-Fehlers erstellt oder aktualisiert wird. Die ERT empfängt die RA, die der ERT 255 hinzugefügt werden soll, und vergleicht die RA mit jedem Eintrag in der ERTO und der ERT1, wie in 605 dargestellt. Wenn die RA in der ERT 255 nicht vorhanden ist und wenn ein neuer Eintrag erstellt werden kann, erstellt die ERT 255 einen neuen Eintrag mit einer neuen ERT_ID zum Speichern der RA, wie in 610 und 615 dargestellt. Der neue Eintrag wird auf Grundlage dessen, ob es sich bei dem ausgeführten Thread um den ersten Thread oder den zweiten Thread handelt, in der ERTO bzw. in der ERT1 erstellt. Wenn der Prozessor im ST-Modus arbeitet, wird die ERTO aktualisiert. Wenn die ERT 255 keinen offenen Bereich für einen neuen Eintrag aufweist, wird ein vorhandener Eintrag auf Grundlage des am längsten nicht verwendeten oder sonstiger derartiger Techniken ersetzt, wie in 615 dargestellt. 6th Figure 11 illustrates a flow diagram for a method of reloading the ERT in accordance with one or more embodiments of the present invention. Reloading the ERT causes an entry to be created or updated in the ERT in response to and based on the ERT error. The ERT receives the RA, that of the ERT 255 is to be added and compares the RA with each entry in the ERTO and ERT1, as shown in 605. If the RA in the ERT 255 does not exist and if a new entry can be created, the ERT 255 a new entry with a new ERT_ID to store the RA as shown in 610 and 615. The new entry is created in ERTO or ERT1 on the basis of whether the thread being executed is the first thread or the second thread. When the processor is operating in ST mode, the ERTO is updated. When the ERT 255 does not have an open area for a new entry, an existing entry is replaced based on the least recently used or other such techniques, as illustrated in 615.

Wenn festgestellt wird, dass der (die) vorhandene(n) Eintrag/Einträge in der ERT 255 dieselbe RA wie die empfangene RA (neu geladene RA) aufweist/aufweisen, vergleicht die ERT 255 die Seitengröße(0 bis 1) des/der vorhandenen Eintrags/Einträge mit derjenigen der empfangenen RA, wie in 620 dargestellt. Wenn die Seitengröße der vorhandenen Einträge kleiner als diejenige der neu geladenen RA ist, werden die vorhandenen Einträge für diese RA aus der ERT 255 entfernt, und ein neuer Eintrag mit einer neuen ERT_ID wird für die RA mit der größeren Seitengröße hinzugefügt, wie in 625 dargestellt. Wenn der vorhandene Eintrag eine selbe oder eine größere Seitengröße aufweist und wenn die Implementierung eine SDT verwendet, wird in der SDT ein Eintrag für die neu geladene RA erstellt, wie in 627 dargestellt.If it is determined that the existing entry (s) in the ERT 255 has / have the same RA as the received RA (Reloaded RA), the ERT compares 255 the page size (0 to 1) of the existing entry (s) with that of the received RA, as shown in 620. If the page size of the existing entries is smaller than that of the newly loaded RA, the existing entries for this RA will be removed from the ERT 255 is removed and a new entry with a new ERT_ID is added for the RA with the larger page size, as shown in 625. If the existing entry is the same or a larger page size, and if the implementation uses an SDT, an entry is created in the SDT for the newly loaded RA, as shown in 627.

Wenn die Seitengröße der vorhandenen Einträge mit der Größe der neu geladenen RA übereinstimmt, überprüft die ERT 255, ob sich der vorhandene Eintrag in der lokalen ERT für den ausgeführten Thread befindet, wie in 630 dargestellt. Eine lokale ERT bezieht sich in diesem Fall auf die ERT, die dem ausgeführten Thread zugehörig ist, zum Beispiel die ERTO für den ersten Thread und die ERT1 für einen zweiten Thread. Wenn sich der RA-Treffer in der anderen ERT befindet, das heißt, in der ERT, bei der es sich nicht um die lokale ERT handelt, erstellt die ERT 255 einen neuen Eintrag in der lokalen ERT mit einer ERT_ID, die mit derjenigen in der nicht lokalen ERT übereinstimmt, wie in 632 dargestellt. Wenn sich der RA-Treffer zum Beispiel in der ERT1 für eine Anweisung befindet, die durch Thread-0 ausgeführt wird, wird in der ERTO ein Eintrag mit einer ERT_ID erstellt, die mit derjenigen des Eintrags in der ERT1 übereinstimmt.If the page size of the existing entries matches the size of the newly loaded RA, the ERT checks 255 whether the existing entry is in the local ERT for the running thread, as shown in 630. In this case, a local ERT refers to the ERT that belongs to the thread being executed, for example the ERTO for the first thread and the ERT1 for a second thread. If the RA hit is in the other ERT, that is, the ERT that is not the local ERT, creates the ERT 255 a new entry in the local ERT with an ERT_ID that matches that in the non-local ERT, as shown in 632. For example, if the RA hit is in ERT1 for an instruction executed by thread-0 an entry is created in the ERTO with an ERT_ID that matches that of the entry in ERT1.

Wenn sich der RA-Treffer in der lokalen ERT-Instanz befindet und wenn die EA ebenfalls übereinstimmt, weil sowohl die EA als auch die RA mit einem vorhandenen Eintrag übereinstimmen, jedoch für diesen Thread ein ERT-Fehler aufgetreten ist, der zu einem erneuten Laden der ERT auffordert, geht die ERT davon aus, dass dies angibt, dass die beiden Threads dieselbe EA-RA-Zuordnung (mit derselben Seitengröße) gemeinsam nutzen. Dementsprechend wird das Bit tid_en(0) oder tid_en(1) in dem vorhandenen übereinstimmenden Eintrag für das Bit, das dem neu geladenen Thread entspricht, EINgeschaltet, um diesen Fall anzugeben, wie in 634 dargestellt.If the RA hit is in the local ERT instance and if the EA also matches because both the EA and the RA match an existing entry, but an ERT error has occurred for this thread, which leads to a reload When the ERT asks, the ERT assumes that this indicates that the two threads are sharing the same EA-RA mapping (with the same page size). Accordingly, the tid_en (0) or tid_en (1) bit in the existing matching entry for the bit corresponding to the newly loaded thread is turned ON to indicate this case, as shown in 634.

Wenn sich der RA-Treffer in einer lokalen ERT-Instanz befindet, stimmt die EA nicht mit dem vorhandenen Eintrag überein, und wenn der vorhandene Eintrag für denselben Thread wie die neu geladene RA bestimmt ist, erkennt die ERT den Aliasing-Fall, bei dem zwei verschiedene EA von demselben Thread derselben RA zugeordnet werden, wie in 636 dargestellt. Wenn der Prozessor eine Implementierung auf Grundlage einer SDT verwendet, wird in der SDT ein Synonymeintrag installiert, der der ERT-ID, dem EA-Versatz(40 bis 51) des vorhandenen, übereinstimmenden Eintrags zugeordnet ist.If the RA hit is in a local ERT instance, the EA does not match the existing entry, and if the existing entry is for the same thread as the newly loaded RA, the ERT detects the aliasing case in which two different EA from the same thread can be assigned to the same RA, as shown in 636. If the processor uses an implementation based on an SDT, a synonym entry is installed in the SDT that corresponds to the ERT ID, the EA offset ( 40 to 51 ) of the existing, matching entry.

Wenn sich der RA-Treffer in der lokalen ERT-Instanz befindet, stimmt die EA nicht mit dem vorhandenen Eintrag überein, und wenn der vorhandene Eintrag für einen anderen Thread bestimmt ist, erkennt die ERT den Aliasing-Fall, bei dem zwei EAs von verschiedenen Threads derselben RA zugeordnet werden, wie in 638 dargestellt. Wenn der Prozessor eine Implementierung auf Grundlage einer SDT verwendet, wird in der SDT ein Synonymeintrag installiert, der der ERT-ID, dem EA-Versatz(40 bis 51) des vorhandenen, übereinstimmenden Eintrags zugeordnet ist.If the RA hit is in the local ERT instance, the EA does not match the existing entry, and if the existing entry is for a different thread, the ERT detects the aliasing case where two EAs of different Threads are assigned to the same RA, as shown in 638. If the processor uses an implementation based on an SDT, a synonym entry is installed in the SDT that corresponds to the ERT ID, the EA offset ( 40 to 51 ) of the existing, matching entry.

Das obige Verfahren erleichtert, dass bei einer Implementierung auf Grundlage einer SDT, wenn zwei Threads dieselbe RA, jedoch unterschiedliche EA aufweisen, eine der Umsetzungen den ERT-Eintrag verwendet und die andere den SDT-Eintrag verwendet. Auf diese Weise erleichtern die ERT-Einträge den Fall, in dem dieselbe EA und dieselbe RA über verschiedene Threads hinweg verwendet werden, indem ein Feld tid_en in dem ERT-Eintrag vorhanden ist. Beispielsweise Tid_en(0 bis 1) = {tid 0 en, tid 1 en} in der Instanz ERTO; und Tid_en(0 bis 1) = {tid 1 en, tid 1 en} in der Instanz ERT1. Des Weiteren erleichtert der ERT-Eintrag den Fall, in dem dieselbe EA verschiedenen RAs über verschiedene Threads hinweg entspricht, indem mehrere Einträge in der ERTO und der ERT1 mit ihren jeweiligen Thread-Kennungen vorhanden sind. Die ERT-Einträge unterstützen darüber hinaus den Fall mit unterschiedlichen EAs, die derselben RA entsprechen (in Fällen mit entweder demselben oder unterschiedlichen Threads). Im Folgenden werden zwei Fälle auf Grundlage der Implementierung mithilfe einer SDT beschrieben.The above method facilitates that in an implementation based on an SDT, if two threads have the same RA but different EA, one of the implementations will use the ERT entry and the other will use the SDT entry. In this way, the ERT entries facilitate the case where the same EA and RA are used across different threads by having a tid_en field in the ERT entry. For example Tid_en (0 to 1) = {tid 0 en, tid 1 en} in the instance ERTO; and Tid_en (0 to 1) = {tid 1 en, tid 1 en} in the instance ERT1. Furthermore, the ERT entry facilitates the case in which the same EA corresponds to different RAs across different threads, in that there are several entries in the ERTO and ERT1 with their respective thread IDs. The ERT entries also support the case with different EAs corresponding to the same RA (in cases with either the same or different threads). The following describes two cases based on implementation using an SDT.

Die LSU installiert einen Eintrag in der SDT (Synonymerkennungstabelle) anstelle der ERT 255, wenn zum Zeitpunkt eines erneuten Ladens der ERT eine neue Anweisung mit einer anderen EA erkannt wird, die derselben RA entspricht. Die SDT-Treffer werden mit der EA des ursprünglichen (oder früheren) ERT-Eintrags neu gestartet. Wenn die Größe der neuen Synonymseite größer als die Seitengröße in dem vorhandenen ERT-Eintrag mit übereinstimmender RA ist, wird der vorhandene ERT-Eintrag durch das neue Synonym (mit der größeren Seitengröße) ersetzt, anstatt ein Synonym in der SDT zu installieren. Der alte ERT-Eintrag wird schließlich als Synonym in der SDT neu installiert.The LSU installs an entry in the SDT (Synonym Recognition Table) instead of the ERT 255 if, at the time of reloading the ERT, a new instruction is recognized with a different EA that corresponds to the same RA. The SDT hits are restarted with the EA of the original (or earlier) ERT entry. If the size of the new synonym page is larger than the page size in the existing ERT entry with matching RA, the existing ERT entry will be replaced with the new synonym (with the larger page size) instead of installing a synonym in the SDT. The old ERT entry is finally reinstalled as a synonym in the SDT.

Unter Bezugnahme auf die ERT-Fälle wird des Weiteren der Fall betrachtet, in dem die LSU einen Snoop-Vorgang von einem weiteren Kern vom Prozessor 106 empfängt. Der Snoop-Vorgang kann von einem anderen Kern in dem System stammen (der Snoop-Vorgang gibt einen weiteren Kern oder Thread an, hat die Daten an derselben realen Adresse geändert). Die LSU überprüft darüber hinaus Speicherungen von einem Thread innerhalb des Kerns als potenziellen Snoop-Vorgang bei den sonstigen Threads innerhalb des Kerns. Sämtliche Snoop-Vorgänge (von sonstigen Kernen) oder Speicherungen (von sonstigen Threads innerhalb des Kerns) gehen mit einer RA einher. In solchen Fällen führt die LSU eine Rückumsetzung der RA durch, um die entsprechende EA, ERT_ID und Seitengröße auf Grundlage der ERT 255 zu ermitteln. Die LSU vergleicht diese Daten mit der ERT_ID, PS, EA(40 bis 56), die in jeder der folgenden Strukturen gespeichert sind, um einen Snoop-Treffer zu erkennen und die entsprechende Maßnahme zu ergreifen. Wenn zum Beispiel ein Snoop-Treffer in einem LRQF-Eintrag erkannt wird, gibt die LSU ein potenzielles Risiko für ein Load-Hit-Load außerhalb der Reihenfolge an. Wenn in der EAD 290 ein Snoop-Treffer erkannt wird, leitet die LSU eine L1-Ungültigmachung ein, wenn der Snoop-Vorgang von einem anderen Kern stammt. Wenn das Speichern von einem weiteren Thread für eine gemeinsam genutzte Zeile stammt, erhält die Zeile automatisch das neue Speichern und wird aktualisiert.With reference to the ERT cases, consider the case in which the LSU snooped from another core by the processor 106 receives. The snoop can originate from another core in the system (the snoop indicates another core or thread has changed the data at the same real address). The LSU also checks stores from a thread within the core as a potential snoop with the other threads within the core. All snoops (from other cores) or saves (from other threads within the core) are accompanied by an RA. In such cases, the LSU converts the RA back to the corresponding EA, ERT_ID and page size based on the ERT 255 to determine. The LSU compares this data with the ERT_ID, PS, EA ( 40 to 56 ) that are stored in each of the following structures in order to detect a snoop hit and take the appropriate action. For example, if a snoop hit is detected in an LRQF entry, the LSU will indicate a potential risk of a load hit load out of order. If in the EAD 290 a snoop hit is detected, the LSU initiates an L1 invalidation if the snoop originates from another core. If the save comes from another thread for a shared row, the row automatically receives the new save and is updated.

Wenn die LSU eine SDT verwendet und ein Snoop-Treffer in der LMQ vorhanden ist, aktualisiert die LSU auch den LMQ-Eintrag so, dass er nicht in dem L1-Dcache gespeichert wird, der SRQ-Eintrag nicht für Snoop-Vorgänge in der SRQ verwendet wird, sondern nur für eine Überprüfung im Stil LHS-EA-Fehler-RA-Treffer verwendet wird, und ein neuer SDT-Eintrag für den Snoop-Treffer erstellt wird.If the LSU is using an SDT and there is a snoop hit in the LMQ, the LSU also updates the LMQ entry so that it is not stored in the L1 cache, the SRQ entry not for snoops in the SRQ used, but only for an LHS style review EA Error RA Hit is used and a new SDT entry is created for the Snoop Hit.

Wie zuvor beschrieben, besteht folglich ein technisches Problem bei der LSU, die nur auf EA beruht, mit einem hierin beschriebenen Ausführungsablauf in einem EA-Synonym in einem Thread. Beispielsweise dieselben Thread-EA-Synonyme (das heißt, zwei unterschiedliche EA von einem Thread sind derselben RA zugeordnet). Ein solches technisches Problem kann sich über LHS, SHL, LHL erstrecken, wenn das OoO-Fenster zumindest zwei L1-Zugriffe aufweist, zum Beispiel: Tid = w ,  EA  ( 0  bis  51 ) =  x  = >  RA ( 8  bis  51 ) = z ;

Figure DE112018004006B4_0001
und Tid = w ,  EA  ( 0  bis  51 ) =  y  = >  RA ( 8  bis  51 ) = z .
Figure DE112018004006B4_0002
As previously described, there is consequently a technical problem in the LSU which is based only on EA, with an execution flow described herein in an EA synonym in a thread. For example, the same thread EA synonyms (that is, two different EA from one thread are associated with the same RA). Such a technical problem can extend over LHS, SHL, LHL if the OoO window has at least two L1 accesses, for example: Tid = w , EA ( 0 to 51 ) = x = > RA ( 8th to 51 ) = z ;
Figure DE112018004006B4_0001
and Tid = w , EA ( 0 to 51 ) = y = > RA ( 8th to 51 ) = z .
Figure DE112018004006B4_0002

Die hierin beschriebenen technischen Lösungen behandeln das technische Problem mithilfe einer SDT, bei der es sich um eine weitere LSU-Untereinheit handelt. In einem oder mehreren Beispielen enthält die SDT 16 Einträge für das Verarbeiten von Fällen, in denen unterschiedliche EAs dieselbe RA aufweisen. Solche unterschiedlichen EAs werden als Synonyme bezeichnet, da sie sämtlich in dieselbe RA umgewandelt werden. Bei der SDT handelt es sich um eine Tabelle solcher Synonyme in der LSU. Auf die SDT wird bei einer AGEN (address generation, Adresserzeugung) bei ERT-Fehlern zugegriffen. In einem oder mehreren Beispielen kann mit Einschränkungen auf die SDT zugegriffen werden, zum Beispiel nur dann, wenn ein gültiger SDT-Eintrag für den Thread der L/S-Operation vorhanden ist, bei der es sich um Agen handelt.The technical solutions described herein address the technical problem using an SDT, which is another LSU sub-unit. In one or more examples, the SDT contains 16 Entries for handling cases where different EAs have the same RA. Such different EAs are called synonyms because they are all converted into the same RA. The SDT is a table of such synonyms in the LSU. The SDT is accessed in the event of an AGEN (address generation) in the event of ERT errors. In one or more examples, the SDT can be accessed with restrictions, for example only if there is a valid SDT entry for the L / S operation thread that is Agen.

8 stellt eine beispielhafte Struktur einer Synonymerkennungstabelle (SDT) 800 gemäß einer oder mehreren Ausführungsformen der vorliegenden Erfindung dar. Das dargestellte Beispiel zeigt einen Fall mit 16 Einträgen, es ist jedoch zu beachten, dass die SDT 800 in sonstigen Beispielen eine andere Anzahl von Einträgen als dieses Beispiel enthalten kann. Ein Eintrag in der SDT 800 enthält zumindest die Felder Ausgabeadresse {Ausgabe-Tid(0 bis 1)}, Ausgabe-EA(0 bis 51)}, Seitengröße(0 bis 1) (z.B. 4 k, 64 k, 2 MB, 16 MB), und Neustartadresse {EA(40 bis 51), ERT-ID(0 bis 6)}. In einem oder mehreren Beispielen kann jeder Eintrag auch ein (nicht dargestelltes) Feld ,Gültigkeit' enthalten, das angibt, ob der SDT-Eintrag gültig ist. In Fällen von Anweisungen, in denen Starts keinen Treffer in dem L1 aufweisen, vergleicht die LSU die Anweisung mit der SDT 800. Wenn die gestartete Anweisung einen SDT-Treffer bei einem Vergleich mit der ursprünglichen Adresse aufweist, lehnt die LSU die Anweisung ab und startet die Anweisung mit der entsprechenden Ersatzadresse aus dem SDT-Eintrag neu. Zum Beispiel verwendet die LSU die Ersatz-Adr(40 bis 51) für das SRQ-LHS und „Force Match“ (Übereinstimmung erzwingen) für die ERT-ID in der Ausführungs-Pipeline. 8th provides an exemplary structure of a synonym recognition table (SDT) 800 according to one or more embodiments of the present invention. The illustrated example shows a case with 16 entries, however it should be noted that the SDT 800 other examples may contain a different number of entries than this example. An entry in the SDT 800 contains at least the fields output address {output Tid (0 to 1)}, output EA (0 to 51)}, page size (0 to 1) (e.g. 4 k, 64 k, 2 MB, 16 MB), and restart address { EA (40 to 51), ERT-ID (0 to 6)}. In one or more examples, each entry may also contain a 'Validity' field (not shown) that indicates whether the SDT entry is valid. In cases of instructions in which starts do not hit the L1, the LSU compares the instruction with the SDT 800 . If the started instruction has an SDT hit when compared with the original address, the LSU rejects the instruction and restarts the instruction with the corresponding substitute address from the SDT entry. For example, the LSU uses the substitute addr ( 40 to 51 ) for the SRQ-LHS and “Force Match” for the ERT ID in the execution pipeline.

Während des erneuten Ladens der ERT wird, wie hierin beschrieben, der SDT 800 ein Eintrag hinzugefügt. Während des erneuten Ladens der ERT wird zum Beispiel die erneut geladene RA mit gültigen ERT-Einträgen verglichen. Wenn ein ERT-Eintrag mit einer entsprechenden RA bereits vorhanden ist und es sich nicht um einen Fall eines EA-Treffers handelt, in dem lediglich ein zusätzliches Bit tid_en in dem ursprünglichen ERT-Eintrag gesetzt wird, wird die EA(32 bis 51) aus dem vorhandenen ERT-Eintrag gelesen und wird ein Eintrag in der SDT 800 installiert, statt der ERT 255 einen Eintrag hinzuzufügen.During the reloading of the ERT, as described herein, the SDT 800 an entry added. During the reloading of the ERT, for example, the reloaded RA is compared with valid ERT entries. If an ERT entry with a corresponding RA already exists and it is not a case of an EA hit in which only an additional bit tid_en is set in the original ERT entry, the EA ( 32 to 51 ) is read from the existing ERT entry and becomes an entry in the SDT 800 installed instead of the ERT 255 add an entry.

Da die SDT 800 nur eine begrenzte Anzahl von Einträgen aufweist, werden die Einträge ersetzt. In einem oder mehreren Beispielen werden die Einträge auf Grundlage von Techniken der am längsten nicht verwendeten (least recently used, LRU) oder in einer beliebigen sonstigen Reihenfolge ersetzt. In einem oder mehreren Beispielen löst, wenn ein SDT-Eintrag ersetzt wird, ein nachfolgender Start mithilfe der sekundären Adresse den Installationsablauf des SDT-Eintrags erneut aus. Noch weiter löscht der CAM (einen) SDT-Eintrag/Einträge, dessen/deren ERT-ID mit einem ungültigen ERT-Eintrag übereinstimmt.Since the SDT 800 has a limited number of entries, the entries are replaced. In one or more examples, entries are replaced based on least recently used (LRU) techniques or in any other order. In one or more examples, when an SDT entry is replaced, a subsequent start using the secondary address will re-initiate the SDT entry's installation process. The CAM further deletes (one) SDT entry / entries whose ERT ID matches an invalid ERT entry.

9 veranschaulicht einen Ablaufplan für ein Verfahren zum Durchführen eines Austauschs einer EA in der ERT und der SDT gemäß einer oder mehreren Ausführungsformen der vorliegenden Erfindung. In einem oder mehreren Beispielen führt die LSU den Austausch durch, wenn die Einträge in der ERT und der SDT dieselbe Seitengröße aufweisen. Der Austausch verbessert die Effizienz des Prozessors 106 in Fällen unterschiedlicher EAs, die derselben RA entsprechen, bei unterschiedlichen Anweisungen in demselben oder einem anderen Thread. Man betrachte zum Beispiel zwei Anweisungen x und y, so dass gilt EAx => RAz und EAy => RAz. Wenn EAx zuerst keinen Treffer in der ERT aufweist, das heißt, vor EAy, installiert die LSU einen ERT-Eintrag, bei dem EAx RAz zugeordnet ist, wie hierin beschrieben. Wenn EAy zu einem späteren Zeitpunkt keinen Treffer in der ERT aufweist, führt die LSU nachfolgend einen CAMming-Vorgang an der ERT mit der RAz durch, erzielt einen RA-Treffer und installiert einen Eintrag in der SDT 800 mit Ursprüngliche Adresse = EAy, Ersatzadresse = EAx. 9 Figure 10 illustrates a flow diagram for a method of performing an exchange of an EA in the ERT and the SDT in accordance with one or more embodiments of the present invention. In one or more examples, the LSU performs the swap when the entries in the ERT and the SDT are the same page size. The exchange improves the efficiency of the processor 106 in cases of different EAs corresponding to the same RA, with different instructions in the same or a different thread. For example, consider two statements x and y such that EAx => RAz and EAy => RAz. If EAx does not first have a hit in the ERT, that is, before EAy, the LSU installs an ERT entry with EAx associated with RAz as described herein. If EAy does not have a hit in the ERT at a later point in time, the LSU then carries out a CAMming process on the ERT with the RAz, achieves an RA hit and installs an entry in the SDT 800 with original address = EAy, substitute address = EAx.

Wenn die meisten nachfolgenden Zugriffe auf RAz über EAy erfolgen, muss die LSU die SDT häufiger verwenden, als das EAD selbst verwendet wird. In einem oder mehreren Beispielen enthalten die technischen Lösungen zum Verbessern der Effizienz der LSU durch Verringern solch häufiger Zugriffe auf die SDT ein Bereitstellen eines Inkrementierungszählers in jedem SDT-Eintrag. Wie in 8 dargestellt, startet die LSU eine Anweisung mit einer ERT-ID, die mit einer ERT-ID aus einem SDT-Eintrag übereinstimmt, wie in 810 dargestellt. Wenn die ERT-ID des SDT-Eintrags übereinstimmt, vergleicht die LSU des Weiteren die EA der gestarteten Anweisung mit einer ursprünglichen EA in dem SDT-Eintrag, wie in 820 dargestellt. Wenn der SDT-Eintrag einen ursprünglichen Adresswert aufweist, der mit der EA aus der Anweisung übereinstimmt, wird der Zähler des SDT-Eintrags inkrementiert, wie in 830 und 835 dargestellt. Wenn die gestartete Anweisung eine andere EA als die ursprüngliche Adresse des SDT-Eintrags aufweist, wird der Zähler des SDT-Eintrags zurückgesetzt, wie in 840 dargestellt.If most of the subsequent accesses to RAz are via EAy, the LSU must use the SDT more often than the EAD itself is used. In one or more examples, the technical solutions are included to improve efficiency the LSU by reducing such frequent accesses to the SDT providing an increment counter in each SDT entry. As in 8th As shown in FIG. 8, the LSU starts an instruction with an ERT-ID that matches an ERT-ID from an SDT entry, as shown in 810. If the ERT-ID of the SDT entry matches, the LSU further compares the EA of the started instruction with an original EA in the SDT entry, as shown in 820. If the SDT entry has an original address value that matches the EA from the instruction, the counter of the SDT entry is incremented, as shown in 830 and 835. If the started instruction has a different EA than the original address of the SDT entry, the counter of the SDT entry is reset, as shown in 840.

In einem oder mehreren Beispielen handelt es sich bei dem Zähler um ein 4-Bit-Feld, was einen Höchstwert von 15 impliziert. Es versteht sich, dass das Feld in sonstigen Beispielen eine andere Länge aufweist und/oder einen anderen Höchstwert aufweist, der als Schwellenwert verwendet wird. Beispielsweise wird nach dem Start der Anweisung der Zählerwert mit dem Schwellenwert verglichen, wie in 845 und 850 dargestellt. Wenn der Zähler unter dem Schwellenwert liegt, arbeitet die LSU wie beschrieben weiter. Wenn der Zähler den Schwellenwert übersteigt oder in einigen Fällen mit dem Schwellenwert übereinstimmt, macht die LSU den ERT-Eintrag, der dem SDT-Eintrag entspricht, ungültig, wie in 860 dargestellt. Beispielsweise wird der ERT-Eintrag mit der ERT-ID aus dem SDT-Eintrag ungültig gemacht. Das Ungültigmachen des ERT-Eintrags bewirkt, dass die entsprechenden Einträge aus dem EA-Verzeichnis, der LRQF, der LMQ und der SRQ ungültig gemacht werden.In one or more examples, the counter is a 4-bit field, which implies a maximum value of 15. It should be understood that in other examples the field has a different length and / or has a different maximum value that is used as a threshold value. For example, after the instruction starts, the counter value is compared to the threshold value, as shown in 845 and 850. If the counter is below the threshold, the LSU continues to operate as described. If the counter exceeds the threshold, or in some cases matches the threshold, the LSU invalidates the ERT entry that corresponds to the SDT entry, as shown in 860. For example, the ERT entry with the ERT ID from the SDT entry is made invalid. The invalidation of the ERT entry has the effect that the corresponding entries from the EA directory, the LRQF, the LMQ and the SRQ are invalidated.

Des Weiteren behandelt die LSU ein technisches Problem im Hinblick auf Ausnahmen in einer gestarteten Anweisung, bei der zum Beenden die ursprüngliche EA erforderlich ist, auf die folgende Weise. Man betrachte zum Beispiel den Fall, in dem die gestartete Anweisung einen SDT-Treffer erzielt und statt mit der ursprünglichen Startadresse mit der Ersatzadresse aus dem SDT-Eintrag neu gestartet werden soll, jedoch eine Ausnahme auftritt, die zum Beenden die ursprüngliche EA erfordert. Ein solche Bedingung kann im Fall von DAWR/SDAR usw. auftreten.Furthermore, the LSU handles a technical problem with regard to exceptions in a started instruction that requires the original EA to exit in the following way. Consider, for example, the case in which the started instruction achieves an SDT hit and is to be restarted with the substitute address from the SDT entry instead of the original start address, but an exception occurs that requires the original EA to terminate. Such a condition may occur in the case of DAWR / SDAR, etc.

Die LSU, die die hierin beschriebenen technischen Lösungen implementiert, behandelt ein solches technisches Problem, indem sie die ursprüngliche Adresse in einer Warteschlange in der LRQE behält. Die LRQE behält darüber hinaus ein SDT-Treffer-Flag (Bit), einen SDT-Index(0 bis 3) für jeden LRQE-Eintrag. Bei einem Neustart wird der SDT-Index einen Zyklus früher gelesen, um die Ersatzadresse zu beziehen. Die LRQE multiplext des Weiteren vor dem Neustart zwischen der Adresse des LRQE-Eintrags (der ursprünglichen Adresse) und der (aus der SDT gelesenen) SDT-Ersatzadresse. In Ausnahmefällen wie den obigen, in denen zum Beenden die ursprüngliche Adresse erforderlich ist, weist die LRQE ein zusätzliches SDT-Treffer-Überschreibe-Flag (Bit) für jeden Eintrag auf, für den eine teilweise Übereinstimmung mit dem DAWR festgelegt wurde, usw. Die LRQE startet erneut den Fall, in dem ein SDT-Treffer vorlag, der mit einer Ausnahme beendet wird, und erzwingt, dass die ursprüngliche Adresse gestartet wird. Ein SRQ-Neustart ähnelt dem hier beschriebenen LRQE-Neustart, bei dem das SDT-Treffer-Überschreibe-Flag verwendet wird, wenn vor dem Neustart ermittelt wird, dass er mit einer Ausnahme beendet wird.The LSU implementing the technical solutions described herein addresses such a technical problem by keeping the original address in a queue in the LRQE. The LRQE also retains an SDT hit flag (bit), an SDT index ( 0 to 3 ) for each LRQE entry. In the event of a restart, the SDT index is read one cycle earlier in order to obtain the substitute address. The LRQE also multiplexes between the address of the LRQE entry (the original address) and the SDT substitute address (read from the SDT) before the restart. In exceptional cases like the above where the original address is required to exit, the LRQE will have an additional SDT hit overwrite flag (bit) for each entry that has been partially matched with the DAWR, and so on LRQE restarts the case of an SDT hit that exits with an exception and forces the original address to start. An SRQ restart is similar to the LRQE restart described here, which uses the SDT hit overwrite flag if prior to the restart it is determined that it will exit with an exception.

Auf diese Weise erleichtern die hierin beschriebenen technischen Lösungen ein Verwenden nur der EA, bieten insofern technische Vorteile, als nicht auf eine ERAT (die typischerweise in Prozessoren verwendet wurde) in einem Lade-/Speicherpfad Bezug genommen wird, und des Weiteren ein Erkennen eines SHL und ein rechtzeitiges Unterbinden einer DVAL keine Probleme bei der Ablaufsteuerung verursachen. Des Weiteren behandeln die hierin beschriebenen technischen Lösungen technische Probleme bei einem Verwenden nur der EA, zum Beispiel, dass eine Erkennung von LHS, SHL, LHL zu einem Fehler führen kann, wenn zwei verschiedene EA derselben RA zugeordnet werden. Die hierin beschriebenen technischen Lösungen behandeln ein solches technisches Problem, indem sie jeweils eine Synonymerkennungstabelle (SDT) für die Anweisungen in dem OoO-Fenster verwenden. Die technischen Lösungen bieten verschiedene technische Vorteile, zu denen unter anderem eine Verringerung der Chip-Fläche (indem keine RA gespeichert wird), eine Verringerung des Stromverbrauchs (indem keine EA in RA umgesetzt werden) und Verbesserungen der Latenzzeit zählen.In this way, the technical solutions described herein facilitate using only the EA, offer technical advantages in that no reference is made to an ERAT (which was typically used in processors) in a load / store path, and furthermore a recognition of an SHL and a timely suppression of a DVAL will not cause any problems with the flow control. Furthermore, the technical solutions described herein deal with technical problems when using only the EA, for example that a detection of LHS, SHL, LHL can lead to an error if two different EA are assigned to the same RA. The technical solutions described herein address such a technical problem by each using a Synonym Recognition Table (SDT) for the instructions in the OoO window. The technical solutions offer various technical advantages, including a reduction in chip area (by not storing RA), a reduction in power consumption (by not converting EA to RA) and improvements in latency.

Unter Bezugnahme auf 10 wird ein Blockschaubild eines Computersystems 1000 zum Implementieren einiger oder sämtlicher Aspekte einer oder mehrerer Ausführungsformen der vorliegenden Erfindung dargestellt. Die hierin beschriebene Verarbeitung kann in Hardware, Software (z.B. Firmware) oder einer Kombination von diesen implementiert werden. Bei einer beispielhaften Ausführungsform werden die beschriebenen Verfahren zumindest zum Teil in Hardware implementiert und können ein Teil des Mikroprozessors eines Spezial- oder Universalcomputers 1000 wie etwa einer mobilen Einheit, eines Personal-Computers, eines Arbeitsplatzrechners, eines Minicomputers oder eines Großrechners sein.With reference to 10 becomes a block diagram of a computer system 1000 for implementing some or all aspects of one or more embodiments of the present invention. The processing described herein can be implemented in hardware, software (eg, firmware), or a combination of these. In an exemplary embodiment, the methods described are implemented at least in part in hardware and can be part of the microprocessor of a special purpose or general purpose computer 1000 such as a mobile unit, a personal computer, a workstation computer, a minicomputer or a mainframe computer.

Bei einer beispielhaften Ausführungsform, wie in 10 dargestellt, enthält das Computersystem 1000 einen Prozessor 1005, einen Speicher 1012, der mit einer Speichersteuereinheit 1015 verbunden ist, und eine oder mehrere Eingabeeinheiten 1045 und/oder Ausgabeeinheiten 1047 wie zum Bespiel Peripheriegeräte, die zur Datenübertragung über eine lokale E/A-Steuereinheit 1035 verbunden sind. Zu diesen Einheiten 1047 und 1045 können zum Beispiel ein Drucker, ein Scanner, ein Mikrofon und dergleichen zählen. Eine herkömmliche Tastatur 1050 und Maus 1055 können mit der E/A-Steuereinheit 1035 verbunden sein. Bei der E/A-Steuereinheit 1035 kann es sich zum Beispiel um einen oder mehrere Busse oder sonstige drahtgebundene oder drahtlose Verbindungen nach dem Stand der Technik handeln. Die E/A-Steuereinheit 1035 kann zusätzliche Elemente wie zum Beispiel Steuereinheiten, Puffer (Caches), Treiber, Zwischenverstärker und Empfänger aufweisen, die der Einfachheit halber weggelassen werden, um Datenübertragungen zu ermöglichen.In an exemplary embodiment, as shown in FIG 10 shown, contains the computer system 1000 a processor 1005 , a memory 1012 that with a storage control unit 1015 connected, and one or more input devices 1045 and / or output units 1047 such as peripheral devices that are used to transfer data via a local I / O control unit 1035 are connected. To these units 1047 and 1045 can include, for example, a printer, a scanner, a microphone, and the like. A traditional keyboard 1050 and mouse 1055 can with the I / O control unit 1035 be connected. At the I / O control unit 1035 it can be, for example, one or more buses or other wired or wireless connections according to the prior art. The I / O control unit 1035 may have additional elements such as control units, buffers (caches), drivers, repeaters and receivers, which are omitted for the sake of simplicity in order to enable data transfers.

Die E/A-Einheiten 1047, 1045 können des Weiteren Einheiten, die Daten zwischen Ein- und Ausgängen übertragen, zum Beispiel Platten- und Bandspeicher, eine Netzwerk-Schnittstellenkarte (network interface card, NIC) oder einen Modulator/Demodulator (zum Zugreifen auf sonstige Dateien, Einheiten, Systeme oder ein Netzwerk), einen Hochfrequenz-(HF-) oder einen sonstigen Sender-Empfänger, eine Telefonschnittstelle, eine Brücke, einen Router und dergleichen enthalten.The I / O units 1047 , 1045 You can also use units that transfer data between inputs and outputs, for example disk and tape storage, a network interface card (NIC) or a modulator / demodulator (for accessing other files, units, systems or a network ), a radio frequency (RF) or other transceiver, a telephone interface, a bridge, a router and the like.

Der Prozessor 1005 ist eine Hardware-Einheit zum Ausführen von Hardware-Anweisungen oder Software, im Besonderen von solchen, die in dem Speicher 1012 gespeichert sind. Der Prozessor 1005 kann ein nach Kundenwünschen angefertigter oder handelsüblicher Prozessor, eine Zentraleinheit (CPU), ein Hilfsprozessor von mehreren Prozessoren, die dem Computersystem 1000 zugehörig sind, ein Mikroprozessor auf Grundlage eines Halbleiters (in Form eines Mikro-Chips oder eines Chip-Satzes), ein Mikroprozessor oder eine sonstige Einheit zum Ausführen von Anweisungen sein. Der Prozessor 1005 kann einen Cache enthalten, zum Beispiel, ohne darauf beschränkt zu sein, einen Anweisungs-Cache, um ein Abrufen ausführbarer Anweisungen zu beschleunigen, einen Daten-Cache, um ein Abrufen und Speichern von Daten zu beschleunigen, und einen Adressumsetzpuffer (TLB), der dazu verwendet wird, ein Umsetzen von virtuellen in physische Adressen für ausführbare Anweisungen sowie für Daten zu beschleunigen. Der Cache kann als Hierarchie mehrerer Cache-Ebenen (L1, L2 usw.) organisiert sein.The processor 1005 is a hardware unit for executing hardware instructions or software, in particular those stored in memory 1012 are stored. The processor 1005 can be a custom-made or commercially available processor, a central processing unit (CPU), an auxiliary processor of several processors that make up the computer system 1000 be a microprocessor based on a semiconductor (in the form of a microchip or a chip set), a microprocessor or some other device for executing instructions. The processor 1005 may include a cache, for example, but not limited to, an instruction cache to expedite fetching of executable instructions, a data cache to expedite fetching and storage of data, and an address translation buffer (TLB), the is used to speed up a translation from virtual to physical addresses for executable instructions as well as for data. The cache can be organized as a hierarchy of several cache levels (L1, L2, etc.).

Der Speicher 1012 kann ein flüchtiges Speicherelement (z.B. einen Direktzugriffsspeicher (random access memory, RAM, wie etwa einen DRAM, SRAM, SDRAM usw.)) und ein nichtflüchtiges Speicherelement (z.B. einen ROM, einen löschbaren, programmierbaren Festwertspeicher (erasable programmable read only memory, EPROM), einen elektrisch löschbaren, programmierbaren Festwertspeicher (electronically erasable programmable read only memory, EEPROM), einen programmierbaren Festwertspeicher (programmable read only memory, PROM), ein Band, eine CD-ROM (compact disc read only memory, Kompakt-Disk-Festwertspeicher), eine Platte, eine Diskette, ein Steckmodul, eine Kassette oder dergleichen usw.) oder Kombinationen von diesen enthalten. Darüber hinaus kann der Speicher 1012 elektronische, magnetische, optische oder sonstige Arten von Speichermedien umfassen. Es ist zu beachten, dass der Speicher 1012 eine verteilte Architektur aufweisen kann, wobei sich verschiedene Komponenten entfernt voneinander befinden, auf die jedoch durch den Prozessor 1005 zugegriffen werden kann.The memory 1012 a volatile memory element (e.g. a random access memory, RAM, such as a DRAM, SRAM, SDRAM etc.) and a non-volatile memory element (e.g. a ROM, an erasable programmable read only memory (EPROM) , an electronically erasable programmable read only memory (EEPROM), a programmable read only memory (PROM), a tape, a CD-ROM (compact disc read only memory) , disk, floppy disk, cartridge, cassette or the like, etc.) or combinations of these. In addition, the memory 1012 electronic, magnetic, optical or other types of storage media. It should be noted that the memory 1012 may have a distributed architecture with various components remotely located but accessed by the processor 1005 can be accessed.

Die Anweisungen in dem Speicher 1012 können ein oder mehrere getrennte Programme enthalten, von denen jedes eine geordnete Auflistung ausführbarer Anweisungen zum Implementieren logischer Funktionen aufweist. In dem Beispiel von 10 enthalten die Anweisungen in dem Speicher 1012 ein geeignetes Betriebssystem (operating system, OS) 1011. Das Betriebssystem 1011 kann im Wesentlichen die Ausführung sonstiger Computerprogramme steuern und stellt Zeitplanung, Eingabe-Ausgabe-Steuerung, Datei- und Datenverwaltung, Speicherverwaltung und Datenübertragungssteuerung sowie damit in Zusammenhang stehende Dienste bereit.The instructions in memory 1012 may include one or more separate programs, each of which has an ordered listing of executable instructions for implementing logical functions. In the example of 10 contain the instructions in memory 1012 a suitable operating system (OS) 1011. The operating system 1011 can essentially control the execution of other computer programs and provides scheduling, input-output control, file and data management, memory management and data transfer control as well as related services.

Zusätzliche Daten, darunter zum Beispiel Anweisungen für den Prozessor 1005 oder sonstige abrufbare Daten, können in dem Speicher 1027 gespeichert werden, bei dem es sich um eine Speichereinheit wie zum Beispiel ein Festplattenlaufwerk oder ein Halbleiterlaufwerk handeln kann. Die gespeicherten Anweisungen in dem Speicher 1012 oder in dem Speicher 1027 können diejenigen enthalten, die es dem Prozessor 1005 ermöglichen, einen oder mehrere Aspekte der Zuteilungssysteme und -verfahren dieser Offenbarung auszuführen.Additional data, including, for example, instructions for the processor 1005 or other retrievable data can be stored in the memory 1027 which can be a storage device such as a hard disk drive or a semiconductor drive. The stored instructions in memory 1012 or in the memory 1027 can include those that make it the processor 1005 enable one or more aspects of the allocation systems and methods of this disclosure to be carried out.

Das Computersystem 1000 kann des Weiteren eine Anzeigesteuereinheit 1025 enthalten, die mit einer Anzeige 1030 verbunden ist. Bei einer beispielhaften Ausführungsform kann das Computersystem 1000 des Weiteren eine Netzwerk-Schnittstelle 1060 zum Verbinden mit einem Netzwerk 1065 enthalten. Bei dem Netzwerk 1065 kann es sich um ein Netzwerk auf Grundlage von IP zur Datenübertragung zwischen dem Computer 1000 und einem externen Server, Client und dergleichen über eine Breitbandverbindung handeln. Das Netzwerk 1065 überträgt und empfängt Daten zwischen dem Computersystem 1000 und externen Systemen. Bei einer beispielhaften Ausführungsform kann es sich bei dem Netzwerk 1065 um ein verwaltetes IP-Netzwerk handeln, das durch einen Diensteanbieter verwaltet wird. Das Netzwerk 1065 kann drahtlos implementiert werden, z.B. mithilfe von drahtlosen Protokollen und Technologien wie z.B. WiFi, WiMax usw. Bei dem Netzwerk 1065 kann es sich auch um ein Netzwerk mit Paketvermittlung wie zum Beispiel um ein lokales Netzwerk, ein Weitverkehrs-Netzwerk, ein Hochgeschwindigkeits-Netzwerk, das Internet oder einen sonstigen, ähnlichen Typ von Netzwerkumgebung handeln. Das Netzwerk 1065 kann ein festes drahtloses Netzwerk, ein drahtloses lokales Netzwerk (local area network, LAN), ein drahtloses Weitverkehrs-Netzwerk (wide area network, WAN), ein persönliches Netzwerk (personal area network, PAN), ein virtuelles privates Netzwerk (VPN), ein Intranet oder ein sonstiges geeignetes Netzwerksystem sein und kann Geräte zum Empfangen und Übertragen von Signalen enthalten.The computer system 1000 can furthermore be a display control unit 1025 included that with an ad 1030 connected is. In an exemplary embodiment, the computer system may 1000 also a network interface 1060 to connect to a network 1065 contain. At the network 1065 it can be an IP based network for transferring data between computers 1000 and an external server, client and the like over a broadband connection. The network 1065 transmits and receives data between the computer system 1000 and external systems. In an exemplary embodiment, the network 1065 be a managed IP network managed by a service provider. The network 1065 can be implemented wirelessly, for example using wireless protocols and technologies such as WiFi, WiMax, etc. On the network 1065 it can also be a packet-switched network such as a local area network, a wide area network, a high-speed network, the Internet, or some other similar type of network environment. The network 1065 can be a fixed wireless network, a wireless local area network (LAN), a wireless wide area network (WAN), a personal area network (PAN), a virtual private network (VPN), be an intranet or any other suitable network system and can contain devices for receiving and transmitting signals.

Systeme und Verfahren zum Bereitstellen einer Adressumsetzung zum Senden einer realen Adresse an ein Speicherteilsystem in einer Lade-Speicher-Einheit auf Grundlage von effektiven Adressen können vollständig oder zum Teil in Computerprogrammprodukten oder in Computersystemen 1000 wie zum Beispiel dem in 10 veranschaulichten verkörpert sein.Systems and methods for providing an address translation for sending a real address to a memory subsystem in a load-storage unit on the basis of effective addresses can be completely or partially in computer program products or in computer systems 1000 like the one in 10 illustrated be embodied.

Hierin werden verschiedene Ausführungsformen der Erfindung unter Bezugnahme auf die zugehörigen Zeichnungen beschrieben. Alternative Ausführungsformen der Erfindung können entwickelt werden, ohne vom Umfang dieser Erfindung abzuweichen. Verschiedene Verbindungen und Positionsbeziehungen (z.B. über, unter, angrenzend an usw.) zwischen Elementen werden in der folgenden Beschreibung und in den Zeichnungen dargelegt. Sofern nichts anderes angegeben ist, können diese Verbindungen und/oder Positionsbeziehungen direkt oder indirekt sein, und die vorliegende Erfindung soll in dieser Hinsicht nicht beschränkend sein. Dementsprechend kann sich eine Kopplung von Entitäten entweder auf eine direkte oder auf eine indirekte Kopplung beziehen, und eine Positionsbeziehung zwischen Entitäten kann eine direkte oder eine indirekte Positionsbeziehung sein. Darüber hinaus können die verschiedenen hierin beschriebenen Aufgaben und Prozessschritte in eine umfassendere Prozedur oder einen umfassenderen Prozess mit zusätzlichen Schritten oder Funktionen integriert werden, die hierin nicht ausführlich beschrieben werden.Various embodiments of the invention are described herein with reference to the accompanying drawings. Alternative embodiments of the invention can be devised without departing from the scope of this invention. Various connections and positional relationships (e.g., above, below, adjacent, etc.) between elements are set forth in the following description and in the drawings. Unless otherwise indicated, these connections and / or positional relationships can be direct or indirect, and the present invention is not intended to be limiting in these respects. Accordingly, a coupling of entities can refer to either a direct or an indirect coupling, and a positional relationship between entities can be a direct or an indirect positional relationship. In addition, the various tasks and process steps described herein can be incorporated into a more comprehensive procedure or process with additional steps or functions not described in detail herein.

Die folgenden Definitionen und Abkürzungen sind für die Auslegung der Ansprüche und der Beschreibung zu verwenden. So, wie die Begriffe hierin verwendet werden, sollen „weist auf“, „aufweisend“, „umfasst“, „umfassend“, „verfügt über“, „verfügend über“, „enthält“ oder „enthaltend“ oder jegliche sonstige Variante von diesen eine nichtausschließliche Einbeziehung abdecken. Beispielsweise ist eine Zusammensetzung, ein Gemisch, ein Prozess, ein Verfahren, ein Gegenstand oder eine Vorrichtung, der/die/das eine Auflistung von Elementen aufweist, nicht zwingend auf nur diese Elemente beschränkt, sondern kann sonstige Elemente enthalten, die nicht ausdrücklich aufgeführt oder einer/einem solchen Zusammensetzung, Gemisch, Prozess, Verfahren, Gegenstand oder Vorrichtung inhärent sind.The following definitions and abbreviations are to be used for the interpretation of the claims and the description. As used herein, the terms “has,” “having,” “comprises,” “comprising,” “has,” “having,” “contains,” or “containing”, or any other variant thereof cover non-exclusive inclusion. For example, a composition, a mixture, a process, a method, an object or a device that has a list of elements is not necessarily limited to just these elements, but can contain other elements that are not expressly listed or are inherent in such a composition, mixture, process, method, article or device.

Darüber hinaus wird hierin der Begriff „beispielhaft“ in der Bedeutung „als Exempel, Beispiel oder Veranschaulichung dienend“ verwendet. Jegliche hierin als „beispielhaft“ beschriebene Ausführungsform oder Konstruktion soll nicht unbedingt als gegenüber sonstigen Ausführungsformen oder Konstruktionen bevorzugt oder vorteilhaft aufgefasst werden. Die Begriffe „zumindest ein(e)“ und „ein(e) oder mehrere“ können so verstanden werden, dass sie jede Ganzzahl enthalten, die größer als oder gleich eins ist, d.h., eins, zwei, drei, vier usw. Der Begriff „eine Mehrzahl“ kann so verstanden werden, dass er jede Ganzzahl enthält, die größer als oder gleich zwei ist, d.h., zwei, drei, vier, fünf usw. Der Begriff „Verbindung“ kann sowohl eine indirekte „Verbindung“ als auch eine direkte „Verbindung“ enthalten.Additionally, the term “exemplary” is used herein to mean “serving as an example, example, or illustration”. Any embodiment or construction described herein as "exemplary" is not necessarily to be construed as preferred or advantageous over other embodiments or constructions. The terms “at least one” and “one or more” may be understood to include any integer greater than or equal to one, ie, one, two, three, four, etc. The term “A plurality” can be understood to include any integer greater than or equal to two, ie, two, three, four, five, etc. The term “connection” can be both an indirect “connection” and a direct one "Connection" included.

Die Begriffe „etwa“, „im Wesentlichen“ „ungefähr“ und Varianten davon sollen den Fehlergrad enthalten, der einer Messung der jeweiligen Menge auf Grundlage der zum Zeitpunkt des Einreichens der Anmeldung verfügbaren Ausrüstung zugehörig ist. Beispielsweise kann „etwa“ einen Bereich von ± 8 % oder 5 % oder 2 % eines bestimmten Wertes enthalten.The terms "approximately", "substantially", "approximately" and variations thereof are intended to include the degree of error associated with a measurement of the respective quantity based on the equipment available at the time of filing the application. For example, “about” can contain a range of ± 8% or 5% or 2% of a certain value.

Der Kürze halber werden herkömmliche Techniken im Zusammenhang mit einem Herstellen und Verwenden von Aspekten der Erfindung hierin möglicherweise nicht ausführlich beschrieben. Im Besonderen sind verschiedene Aspekte von Datenverarbeitungssystemen und spezifischen Computerprogrammen zum Implementieren der verschiedenen hierin beschriebenen technischen Merkmale allgemein bekannt. Dementsprechend werden hierin der Kürze halber zahlreiche Einzelheiten einer herkömmlichen Implementierung nur kurz erwähnt oder ganz weggelassen, ohne die allgemein bekannten Einzelheiten des Systems und/oder der Prozesse bereitzustellen.For brevity, conventional techniques related to making and using aspects of the invention may not be described in detail herein. In particular, various aspects of data processing systems and specific computer programs for implementing the various technical features described herein are well known. Accordingly, for the sake of brevity, numerous details of a conventional implementation are briefly mentioned or omitted entirely herein without providing the well-known details of the system and / or processes.

Bei der vorliegenden Erfindung kann es sich um ein System, ein Verfahren und/oder ein Computerprogrammprodukt handeln. Das Computerprogrammprodukt kann (ein) durch einen Computer lesbare(s) Speichermedium (oder -medien) enthalten, auf dem/denen durch einen Computer lesbare Programmanweisungen gespeichert ist/sind, um einen Prozessor dazu zu veranlassen, Aspekte der vorliegenden Erfindung auszuführen.The present invention can be a system, a method and / or a computer program product. The computer program product may contain (a) computer-readable storage medium (or media) on which (s) are computer-readable Program instructions are stored to cause a processor to carry out aspects of the present invention.

Bei dem durch einen Computer lesbaren Speichermedium kann es sich um eine physische Einheit handeln, die Anweisungen zur Verwendung durch ein System zur Ausführung von Anweisungen behalten und speichern kann. Bei dem durch einen Computer lesbaren Speichermedium kann es sich zum Beispiel um eine elektronische Speichereinheit, eine magnetische Speichereinheit, eine optische Speichereinheit, eine elektromagnetische Speichereinheit, eine Halbleiterspeichereinheit oder jede geeignete Kombination daraus handeln, ohne auf diese beschränkt zu sein. Zu einer nicht erschöpfenden Liste spezifischerer Beispiele des durch einen Computer lesbaren Speichermediums gehören die Folgenden: eine tragbare Computerdiskette, eine Festplatte, ein Direktzugriffsspeicher (RAM), ein Nur-Lese-Speicher (ROM), ein löschbarer programmierbarer Nur-Lese-Speicher (EPROM bzw. Flash-Speicher), ein statischer Direktzugriffsspeicher (SRAM), ein tragbarer Kompaktspeicherplatte-Nur-Lese-Speicher (CD-ROM), eine DVD (digital versatile disc), ein Speicher-Stick, eine Diskette, eine mechanisch kodierte Einheit wie zum Beispiel Lochkarten oder gehobene Strukturen in einer Rille, auf denen Anweisungen gespeichert sind, und jede geeignete Kombination daraus. Ein durch einen Computer lesbares Speichermedium soll in der Verwendung hierin nicht als flüchtige Signale an sich aufgefasst werden, wie zum Beispiel Funkwellen oder andere sich frei ausbreitende elektromagnetische Wellen, elektromagnetische Wellen, die sich durch einen Wellenleiter oder ein anderes Übertragungsmedium ausbreiten (z.B. durch ein Glasfaserkabel geleitete Lichtimpulse) oder durch einen Draht übertragene elektrische Signale.The computer readable storage medium can be any physical entity that can retain and store instructions for use by an instruction execution system. The computer-readable storage medium can be, for example, an electronic storage unit, a magnetic storage unit, an optical storage unit, an electromagnetic storage unit, a semiconductor storage unit, or any suitable combination thereof, without being limited to these. A non-exhaustive list of more specific examples of computer readable storage media include the following: a portable computer disk, hard drive, random access memory (RAM), read only memory (ROM), erasable programmable read only memory (EPROM or flash memory), a static random access memory (SRAM), a portable compact disk read-only memory (CD-ROM), a DVD (digital versatile disc), a memory stick, a floppy disk, a mechanically encoded unit such as for example punch cards or raised structures in a groove on which instructions are stored, and any suitable combination thereof. As used herein, a computer-readable storage medium is not intended to be construed as being transient signals per se, such as radio waves or other freely propagating electromagnetic waves, electromagnetic waves traveling through a waveguide or other transmission medium (e.g., through a fiber optic cable guided light pulses) or electrical signals transmitted through a wire.

Hierin beschriebene, durch einen Computer lesbare Programmanweisungen können von einem durch einen Computer lesbaren Speichermedium auf jeweilige Datenverarbeitungs-/Verarbeitungseinheiten oder über ein Netzwerk wie zum Beispiel das Internet, ein lokales Netzwerk, ein Weitverkehrsnetz und/oder ein drahtloses Netzwerk auf einen externen Computer oder eine externe Speichereinheit heruntergeladen werden. Das Netzwerk kann Kupferübertragungskabel, Lichtwellenübertragungsleiter, drahtlose Übertragung, Leitwegrechner, Firewalls, Vermittlungseinheiten, Gateway-Computer und/oder Edge-Server aufweisen. Eine Netzwerkadapterkarte oder Netzwerkschnittstelle in jeder Datenverarbeitungs-/Verarbeitungseinheit empfängt durch einen Computer lesbare Programmanweisungen aus dem Netzwerk und leitet die durch einen Computer lesbaren Programmanweisungen zur Speicherung in einem durch einen Computer lesbaren Speichermedium innerhalb der entsprechenden Datenverarbeitungs-/Verarbeitungseinheit weiter.Program instructions described herein, readable by a computer, can be transferred from a computer-readable storage medium to respective data processing / processing units or via a network such as the Internet, a local area network, a wide area network and / or a wireless network to an external computer or a external storage device. The network can have copper transmission cables, fiber optic transmission conductors, wireless transmission, routing computers, firewalls, switching units, gateway computers and / or edge servers. A network adapter card or network interface in each data processing unit receives computer-readable program instructions from the network and forwards the computer-readable program instructions for storage in a computer-readable storage medium within the corresponding data processing / processing unit.

Bei durch einen Computer lesbaren Programmanweisungen zum Ausführen von Arbeitsschritten der vorliegenden Erfindung kann es sich um Assembler-Anweisungen, ISA-Anweisungen (Instruction-Set-Architecture), Maschinenanweisungen, maschinenabhängige Anweisungen, Mikrocode, Firmware-Anweisungen, zustandssetzende Daten oder entweder Quellcode oder Objektcode handeln, die in einer beliebigen Kombination aus einer oder mehreren Programmiersprachen geschrieben werden, darunter objektorientierte Programmiersprachen wie Java, Smalltalk, C++ o.ä. sowie herkömmliche prozedurale Programmiersprachen wie die Programmiersprache „C“ oder ähnliche Programmiersprachen. Die durch einen Computer lesbaren Programmanweisungen können vollständig auf dem Computer des Benutzers, teilweise auf dem Computer des Benutzers, als eigenständiges Software-Paket, teilweise auf dem Computer des Benutzers und teilweise auf einem entfernt angeordneten Computer oder vollständig auf dem entfernt angeordneten Computer oder Server ausgeführt werden. In letzterem Fall kann der entfernt angeordnete Computer mit dem Computer des Benutzers durch eine beliebige Art Netzwerk verbunden sein, darunter ein lokales Netzwerk (LAN) oder ein Weitverkehrsnetz (WAN), oder die Verbindung kann mit einem externen Computer hergestellt werden (zum Beispiel über das Internet unter Verwendung eines Internet-Dienstanbieters). In einigen Ausführungsformen können elektronische Schaltungen, darunter zum Beispiel programmierbare Logikschaltungen, im Feld programmierbare Gatter-Anordnungen (FPGA, field programmable gate arrays) oder programmierbare Logikanordnungen (PLA, programmable logic arrays) die durch einen Computer lesbaren Programmanweisungen ausführen, indem sie Zustandsinformationen der durch einen Computer lesbaren Programmanweisungen nutzen, um die elektronischen Schaltungen zu personalisieren, um Aspekte der vorliegenden Erfindung durchzuführen.Computer-readable program instructions for performing work steps of the present invention can be assembler instructions, ISA instructions (Instruction-Set-Architecture), machine instructions, machine-dependent instructions, microcode, firmware instructions, condition-setting data, or either source code or object code that are written in any combination of one or more programming languages, including object-oriented programming languages such as Java, Smalltalk, C ++ or similar, as well as conventional procedural programming languages such as the "C" programming language or similar programming languages. The computer readable program instructions can be executed entirely on the user's computer, partially on the user's computer, as a stand-alone software package, partially on the user's computer and partially on a remote computer, or entirely on the remote computer or server will. In the latter case, the remote computer can be connected to the user's computer through any type of network, including a local area network (LAN) or wide area network (WAN), or the connection can be made to an external computer (for example via the Internet using an Internet service provider). In some embodiments, electronic circuitry, including, for example, programmable logic circuits, field programmable gate arrays (FPGA) or programmable logic arrays (PLA), can execute the computer-readable program instructions by using state information from the use computer readable program instructions to personalize the electronic circuitry to perform aspects of the present invention.

Aspekte der vorliegenden Erfindung sind hierin unter Bezugnahme auf Ablaufpläne und/oder Blockschaltbilder bzw. Schaubilder von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten gemäß Ausführungsformen der Erfindung beschrieben. Es wird darauf hingewiesen, dass jeder Block der Ablaufpläne und/oder der Blockschaltbilder bzw. Schaubilder sowie Kombinationen von Blöcken in den Ablaufplänen und/oder den Blockschaltbildern bzw. Schaubildern mittels durch einen Computer lesbare Programmanweisungen ausgeführt werden können.Aspects of the present invention are described herein with reference to flow charts and / or block diagrams or diagrams of methods, devices (systems) and computer program products according to embodiments of the invention. It should be noted that each block of the flowcharts and / or the block diagrams or graphs as well as combinations of blocks in the flowcharts and / or the block diagrams or graphs can be executed by means of program instructions that can be read by a computer.

Diese durch einen Computer lesbaren Programmanweisungen können einem Prozessor eines Universalcomputers, eines Spezialcomputers oder einer anderen programmierbaren Datenverarbeitungsvorrichtung bereitgestellt werden, um eine Maschine zu erzeugen, so dass die über den Prozessor des Computers bzw. der anderen programmierbaren Datenverarbeitungsvorrichtung ausgeführten Anweisungen ein Mittel zur Umsetzung der in dem Block bzw. den Blöcken der Ablaufpläne und/oder der Blockschaltbilder bzw. Schaubilder festgelegten Funktionen/Schritte erzeugen. Diese durch einen Computer lesbaren Programmanweisungen können auch auf einem durch einen Computer lesbaren Speichermedium gespeichert sein, das einen Computer, eine programmierbare Datenverarbeitungsvorrichtung und/oder andere Einheiten so steuern kann, dass sie auf eine bestimmte Art funktionieren, so dass das durch einen Computer lesbare Speichermedium, auf dem Anweisungen gespeichert sind, ein Herstellungsprodukt aufweist, darunter Anweisungen, welche Aspekte der/des in dem Block bzw. den Blöcken des Ablaufplans und/oder der Blockschaltbilder bzw. Schaubilder angegebenen Funktion/Schritts umsetzen.These computer-readable program instructions can be provided to a processor of a general-purpose computer, a special purpose computer or some other programmable data processing device in order to generate a machine, so that the instructions executed via the processor of the computer or the other programmable data processing device are a means for implementing the in the block or blocks of the flowcharts and / or the block diagrams or graphs to generate functions / steps specified. These computer-readable program instructions can also be stored on a computer-readable storage medium which can control a computer, a programmable data processing device and / or other units to function in a certain way, so that the computer-readable storage medium , on which instructions are stored, has a manufacturing product, including instructions which implement aspects of the function / step specified in the block or blocks of the flowchart and / or the block diagrams or diagrams.

Die durch einen Computer lesbaren Programmanweisungen können auch auf einen Computer, eine andere programmierbare Datenverarbeitungsvorrichtung oder eine andere Einheit geladen werden, um das Ausführen einer Reihe von Prozessschritten auf dem Computer bzw. der anderen programmierbaren Vorrichtung oder anderen Einheit zu verursachen, um einen auf einem Computer ausgeführten Prozess zu erzeugen, so dass die auf dem Computer, einer anderen programmierbaren Vorrichtung oder einer anderen Einheit ausgeführten Anweisungen die in dem Block bzw. den Blöcken der Ablaufpläne und/oder der Blockschaltbilder bzw. Schaubilder festgelegten Funktionen/Schritte umsetzen.The computer readable program instructions can also be loaded onto a computer, other programmable data processing device, or other device to cause a series of process steps to be performed on the computer or other programmable device or other device, such as one on a computer executed process so that the instructions executed on the computer, another programmable device or another unit implement the functions / steps specified in the block or blocks of the flowcharts and / or the block diagrams or diagrams.

Die Ablaufpläne und die Blockschaltbilder bzw. Schaubilder in den Figuren veranschaulichen die Architektur, die Funktionalität und den Betrieb möglicher Ausführungen von Systemen, Verfahren und Computerprogrammprodukten gemäß verschiedenen Ausführungsformen der vorliegenden Erfindung. In diesem Zusammenhang kann jeder Block in den Ablaufplänen oder Blockschaltbildern bzw. Schaubildern ein Modul, ein Segment oder einen Teil von Anweisungen darstellen, die eine oder mehrere ausführbare Anweisungen zur Ausführung der bestimmten logischen Funktion(en) aufweisen. In einigen alternativen Ausführungen können die in dem Block angegebenen Funktionen in einer anderen Reihenfolge als in den Figuren gezeigt stattfinden. Zwei nacheinander gezeigte Blöcke können zum Beispiel in Wirklichkeit im Wesentlichen gleichzeitig ausgeführt werden, oder die Blöcke können manchmal je nach entsprechender Funktionalität in umgekehrter Reihenfolge ausgeführt werden. Es ist ferner anzumerken, dass jeder Block der Blockschaltbilder bzw. Schaubilder und/oder der Ablaufpläne sowie Kombinationen aus Blöcken in den Blockschaltbildern bzw. Schaubildern und/oder den Ablaufplänen durch spezielle auf Hardware beruhende Systeme umgesetzt werden können, welche die festgelegten Funktionen oder Schritte durchführen, oder Kombinationen aus Spezial-Hardware und Computeranweisungen ausführen.The flowcharts and the block diagrams or diagrams in the figures illustrate the architecture, functionality and operation of possible implementations of systems, methods and computer program products in accordance with various embodiments of the present invention. In this context, each block in the flowcharts or block diagrams or diagrams can represent a module, a segment or a part of instructions that have one or more executable instructions for performing the particular logical function (s). In some alternative implementations, the functions noted in the block may take place out of the order shown in the figures. For example, two blocks shown in sequence can in fact be executed essentially simultaneously, or the blocks can sometimes be executed in reverse order depending on the functionality involved. It should also be noted that each block of the block diagrams or diagrams and / or the flowcharts and combinations of blocks in the block diagrams or diagrams and / or the flowcharts can be implemented by special hardware-based systems that carry out the specified functions or steps , or combinations of special hardware and computer instructions.

Claims (20)

Verarbeitungseinheit zum Ausführen einer oder mehrerer Anweisungen, wobei die Verarbeitungseinheit aufweist: eine Lade-Speicher-Einheit (LSU) (104) zum Übertragen von Daten zwischen einem Speicher und Registern, wobei die LSU dazu ausgebildet ist, eine Mehrzahl von Anweisungen in einem Out-of-Order(OoO)-Fenster auszuführen, wobei die Ausführung aufweist: in Reaktion auf ein Ermitteln (610), dass eine erste effektive Adresse durch eine erste Anweisung verwendet wird, wobei die erste effektive Adresse einer ersten realen Adresse entspricht, Erstellen (615) eines Eintrags einer Effektiv-Real-Tabelle (ERT) (255) in einer ERT, wobei der ERT-Eintrag die erste effektive Adresse der ersten realen Adresse zuordnet; und in Reaktion auf ein Ermitteln (830) eines Synonyms einer effektiven Adresse, das durch eine zweite Anweisung verwendet wird, wobei es sich bei dem Synonym der effektiven Adresse um eine zweite effektive Adresse handelt, die auch der ersten realen Adresse entspricht: Erstellen eines Eintrags einer Synonymerkennungstabelle (SDT) (800) in einer SDT, wobei der SDT-Eintrag die zweite effektive Adresse dem ERT-Eintrag zuordnet; und Neustarten (845) der zweiten Anweisung durch Ersetzen der zweiten effektiven Adresse in der zweiten Anweisung durch die erste effektive Adresse.Processing unit for executing one or more instructions, the processing unit comprising: a load / store unit (LSU) (104) for transferring data between a memory and registers, the LSU being configured to execute a plurality of instructions in an out-of-order (OoO) window, wherein the execution having: in response to determining (610) that a first effective address is used by a first instruction, the first effective address corresponding to a first real address, creating (615) an entry of an effective-real table (ERT) (255) in an ERT, the ERT entry assigning the first effective address to the first real address; and in response to determining (830) a synonym of an effective address used by a second instruction, the synonym of the effective address being a second effective address that also corresponds to the first real address: Creating an entry in a Synonym Detection Table (SDT) (800) in an SDT, the SDT entry associating the second effective address with the ERT entry; and Restarting (845) the second instruction by replacing the second effective address in the second instruction with the first effective address. Verarbeitungseinheit nach Anspruch 1, wobei in Reaktion darauf, dass die zweite effektive Adresse auch der ersten realen Adresse entspricht: Vergleichen (620) einer ersten Seitengröße, die der ersten Anweisung zugehörig ist, mit einer zweiten Seitengröße, die der zweiten Anweisung zugehörig ist; und wobei der SDT-Eintrag, der die zweite effektive Adresse der ERT zuordnet, in Reaktion darauf erstellt wird (627), dass die erste Seitengröße größer als die zweite Seitengröße ist.Processing unit according to Claim 1 wherein in response to the second effective address also corresponding to the first real address: comparing (620) a first page size associated with the first instruction with a second page size associated with the second instruction; and wherein the SDT entry associating the second effective address with the ERT is created (627) in response to the first page size being larger than the second page size. Verarbeitungseinheit nach Anspruch 2, wobei in Reaktion darauf, dass die erste Seitengröße kleiner als die zweite Seitengröße ist: Modifizieren des ERT-Eintrags durch Ersetzen der Zuordnung zwischen der ersten effektiven Adresse und der ersten realen Adresse durch eine Zuordnung zwischen der zweiten effektiven Adresse und der ersten realen Adresse.Processing unit according to Claim 2 wherein in response to the first page size being smaller than the second page size: modifying the ERT entry by replacing the association between the first effective address and the first real address with an association between the second effective address and the first real address. Verarbeitungseinheit nach Anspruch 3, wobei des Weiteren in Reaktion darauf, dass die erste Seitengröße kleiner als die zweite Seitengröße ist: Erstellen (625) des SDT-Eintrags, der die erste effektive Adresse dem ERT-Eintrag zuordnet.Processing unit according to Claim 3 further responsive to the first page size being smaller than the second page size: creating (625) the SDT entry that maps the first effective address to the ERT entry. Verarbeitungseinheit nach Anspruch 1, wobei der SDT-Eintrag eine Thread-Kennung eines Threads, in dem die erste Anweisung gestartet wird, die effektive Adresse der ersten Anweisung, eine Seitengröße der ersten Anweisung, eine effektive Neustartadresse der ersten Anweisung und eine ERT-Eintragskennung des entsprechenden ERT-Eintrags aufweist.Processing unit according to Claim 1 , the SDT entry being a thread identifier of a thread in which the first instruction is started, the effective address of the first instruction, a page size of the first instruction, an effective restart address of the first instruction and an ERT entry identifier of the corresponding ERT entry having. Verarbeitungseinheit nach Anspruch 1, wobei es sich bei der ersten Anweisung um eine aus einer Gruppe von Anweisungen handelt, die aus einer Ladeanweisung und einer Speicheranweisung besteht.Processing unit according to Claim 1 , the first instruction being one of a group of instructions consisting of a load instruction and a store instruction. Verarbeitungseinheit nach Anspruch 1, wobei ein Zähler geführt wird (835, 840), um eine Anzahl von Anweisungen anzugeben, die mit der ersten effektiven Adresse gestartet wurden, und in Reaktion darauf, dass der Zähler einen vorgegebenen Schwellenwert übersteigt (850), der ERT-Eintrag ungültig gemacht wird (860), der der ersten effektiven Adresse entspricht.Processing unit according to Claim 1 wherein a counter is maintained (835, 840) to indicate a number of instructions started with the first effective address and in response to the counter exceeding a predetermined threshold (850) invalidating the ERT entry becomes (860) corresponding to the first effective address. Auf einem Computer implementiertes Verfahren zum Ausführen einer oder mehrerer Out-of-Order-Anweisungen durch eine Verarbeitungseinheit, wobei das Verfahren aufweist: Ausgeben einer Mehrzahl von Anweisungen aus einem Out-of-Order(OoO)-Fenster durch eine Lade-Speicher-Einheit (LSU) (104), wobei das Ausgeben aufweist: in Reaktion auf ein Ermitteln (610), dass eine erste effektive Adresse durch eine erste Anweisung verwendet wird, wobei die erste effektive Adresse einer ersten realen Adresse entspricht, Erstellen (615) eines Eintrags einer Effektiv-Real-Tabelle (ERT) (255) in einer ERT, wobei der ERT-Eintrag die erste effektive Adresse der ersten realen Adresse zuordnet; und in Reaktion auf ein Ermitteln eines Synonyms einer effektiven Adresse, das durch eine zweite Anweisung verwendet wird, wobei es sich bei dem Synonym der effektiven Adresse um eine zweite effektive Adresse handelt, die auch der ersten realen Adresse entspricht: Erstellen eines Eintrags einer Synonymerkennungstabelle (SDT) (800) in einer SDT, wobei der SDT-Eintrag die zweite effektive Adresse dem ERT-Eintrag zuordnet; und Neustarten (845) der zweiten Anweisung durch Ersetzen der zweiten effektiven Adresse in der zweiten Anweisung durch die erste effektive Adresse.A method implemented on a computer for executing one or more out-of-order instructions by a processing unit, the method comprising: A load and store unit (LSU) (104) issuing a plurality of instructions from an out-of-order (OoO) window, the issuing comprising: in response to determining (610) that a first effective address is used by a first instruction, the first effective address corresponding to a first real address, creating (615) an entry of an effective-real table (ERT) (255) in an ERT, the ERT entry assigning the first effective address to the first real address; and in response to determining a synonym of an effective address that is used by a second instruction, the synonym of the effective address being a second effective address which also corresponds to the first real address: Creating an entry in a Synonym Detection Table (SDT) (800) in an SDT, the SDT entry associating the second effective address with the ERT entry; and Restarting (845) the second instruction by replacing the second effective address in the second instruction with the first effective address. Auf einem Computer implementiertes Verfahren nach Anspruch 8, wobei in Reaktion darauf, dass die zweite effektive Adresse auch der ersten realen Adresse entspricht: Vergleichen (620) einer ersten Seitengröße, die der ersten Anweisung zugehörig ist, mit einer zweiten Seitengröße, die der zweiten Anweisung zugehörig ist; und wobei der SDT-Eintrag, der die zweite effektive Adresse dem ERT-Eintrag zuordnet, in Reaktion darauf erstellt wird (627), dass die erste Seitengröße größer als die zweite Seitengröße ist.Method implemented on a computer according to Claim 8 wherein in response to the second effective address also corresponding to the first real address: comparing (620) a first page size associated with the first instruction with a second page size associated with the second instruction; and wherein the SDT entry associating the second effective address with the ERT entry is created (627) in response to the first page size being larger than the second page size. Auf einem Computer implementiertes Verfahren nach Anspruch 9, wobei in Reaktion darauf, dass die erste Seitengröße kleiner als die zweite Seitengröße ist: Modifizieren des ERT-Eintrags durch Ersetzen der Zuordnung zwischen der ersten effektiven Adresse und der ersten realen Adresse durch eine Zuordnung zwischen der zweiten effektiven Adresse und der ersten realen Adresse.Method implemented on a computer according to Claim 9 wherein in response to the first page size being smaller than the second page size: modifying the ERT entry by replacing the association between the first effective address and the first real address with an association between the second effective address and the first real address. Auf einem Computer implementiertes Verfahren nach Anspruch 10, wobei in Reaktion darauf, dass die erste Seitengröße kleiner als die zweite Seitengröße ist: Erstellen (625) des SDT-Eintrags, der die erste effektive Adresse dem ERT-Eintrag zuordnet.Method implemented on a computer according to Claim 10 wherein in response to the first page size being smaller than the second page size: creating (625) the SDT entry that maps the first effective address to the ERT entry. Auf einem Computer implementiertes Verfahren nach Anspruch 8, wobei der SDT-Eintrag eine Thread-Kennung eines Threads, in dem die erste Anweisung gestartet wird, die effektive Adresse der ersten Anweisung, eine Seitengröße der ersten Anweisung, eine effektive Neustartadresse der ersten Anweisung und eine ERT-Eintragskennung des entsprechenden ERT-Eintrags aufweist.Method implemented on a computer according to Claim 8 , the SDT entry being a thread identifier of a thread in which the first instruction is started, the effective address of the first instruction, a page size of the first instruction, an effective restart address of the first instruction and an ERT entry identifier of the corresponding ERT entry having. Auf einem Computer implementiertes Verfahren nach Anspruch 8, wobei es sich bei der ersten Anweisung um eine aus einer Gruppe von Anweisungen handelt, die aus einer Ladeanweisung und einer Speicheranweisung besteht.Method implemented on a computer according to Claim 8 , the first instruction being one of a group of instructions consisting of a load instruction and a store instruction. Auf einem Computer implementiertes Verfahren nach Anspruch 8, wobei ein Zähler geführt wird (835, 840), um eine Anzahl von Anweisungen anzugeben, die mit der ersten effektiven Adresse gestartet wurden, und in Reaktion darauf, dass der Zähler einen vorgegebenen Schwellenwert übersteigt (850), der ERT-Eintrag ungültig gemacht wird (860), der der ersten effektiven Adresse entspricht.Method implemented on a computer according to Claim 8 wherein a counter is maintained (835, 840) to indicate a number of instructions started with the first effective address and in response to the counter exceeding a predetermined threshold (850) invalidating the ERT entry becomes (860) corresponding to the first effective address. Computerprogrammprodukt, das ein durch einen Computer lesbares Speichermedium aufweist, in dem Programmanweisungen verkörpert sind, wobei die Programmanweisungen durch einen Prozessor ausführbar sind, um zu bewirken, dass der Prozessor Operationen durchführt, die aufweisen: Ausgeben einer Mehrzahl von Anweisungen aus einem Out-of-Order(OoO)-Fenster durch eine Lade-Speicher-Einheit (LSU) (104) durch: in Reaktion auf ein Ermitteln (610), dass eine erste effektive Adresse durch eine erste Anweisung verwendet wird, wobei die erste effektive Adresse einer ersten realen Adresse entspricht, Erstellen (615) eines Eintrags einer Effektiv-Real-Tabelle (ERT) (255) in einer ERT, wobei der ERT-Eintrag die erste effektive Adresse der ersten realen Adresse zuordnet; und in Reaktion auf ein Ermitteln (830) eines Synonyms einer effektiven Adresse, das durch eine zweite Anweisung verwendet wird, wobei es sich bei dem Synonym der effektiven Adresse um eine zweite effektive Adresse handelt, die auch der ersten realen Adresse entspricht: Erstellen eines Eintrags einer Synonymerkennungstabelle (SDT) (800) in einer SDT, wobei der SDT-Eintrag die zweite effektive Adresse dem ERT-Eintrag zuordnet; und Neustarten (845) der zweiten Anweisung durch Ersetzen der zweiten effektiven Adresse in der zweiten Anweisung durch die erste effektive Adresse.A computer program product comprising a computer readable storage medium having embodied program instructions, the program instructions being executable by a processor to cause the processor to perform operations comprising: A load and store unit (LSU) (104) issuing a plurality of instructions from an out-of-order (OoO) window by: in response to determining (610) that a first effective address is provided by a first instruction is used, the first effective address corresponds to a first real address, creating (615) an entry of an effective real table (ERT) (255) in an ERT, the ERT entry assigning the first effective address to the first real address ; and in response to determining (830) a synonym of an effective address used by a second instruction, the synonym of the effective address being a second effective address that also corresponds to the first real address: creating an entry a synonym recognition table (SDT) (800) in an SDT, the SDT entry assigning the second effective address to the ERT entry; and restarting (845) the second instruction by replacing the second effective address in the second instruction with the first effective address. Computerprogrammprodukt nach Anspruch 15, wobei in Reaktion darauf, dass die zweite effektive Adresse auch der ersten realen Adresse entspricht: Vergleichen (620) einer ersten Seitengröße, die der ersten Anweisung zugehörig ist, mit einer zweiten Seitengröße, die der zweiten Anweisung zugehörig ist; und wobei der SDT-Eintrag, der die zweite effektive Adresse dem ERT-Eintrag zuordnet, in Reaktion darauf erstellt wird (627), dass die erste Seitengröße größer als die zweite Seitengröße ist.Computer program product according to Claim 15 wherein in response to the second effective address also corresponding to the first real address: comparing (620) a first page size associated with the first instruction with a second page size associated with the second instruction; and wherein the SDT entry associating the second effective address with the ERT entry is created (627) in response to the first page size being larger than the second page size. Computerprogrammprodukt nach Anspruch 16, wobei in Reaktion darauf, dass die erste Seitengröße kleiner als die zweite Seitengröße ist: Modifizieren des ERT-Eintrags durch Ersetzen der Zuordnung zwischen der ersten effektiven Adresse und der ersten realen Adresse durch eine Zuordnung zwischen der zweiten effektiven Adresse und der ersten realen Adresse.Computer program product according to Claim 16 wherein in response to the first page size being smaller than the second page size: modifying the ERT entry by replacing the association between the first effective address and the first real address with an association between the second effective address and the first real address. Computerprogrammprodukt nach Anspruch 17, wobei in Reaktion darauf, dass die erste Seitengröße kleiner als die zweite Seitengröße ist: Erstellen (625) des SDT-Eintrags, der die erste effektive Adresse dem ERT-Eintrag zuordnet.Computer program product according to Claim 17 wherein in response to the first page size being smaller than the second page size: creating (625) the SDT entry that maps the first effective address to the ERT entry. Computerprogrammprodukt nach Anspruch 15, wobei der SDT-Eintrag eine Thread-Kennung eines Threads, in dem die erste Anweisung gestartet wird, die effektive Adresse der ersten Anweisung, eine Seitengröße der ersten Anweisung, eine effektive Neustartadresse der ersten Anweisung und eine ERT-Eintragskennung des entsprechenden ERT-Eintrags aufweist.Computer program product according to Claim 15 , the SDT entry being a thread identifier of a thread in which the first instruction is started, the effective address of the first instruction, a page size of the first instruction, an effective restart address of the first instruction and an ERT entry identifier of the corresponding ERT entry having. Computerprogrammprodukt nach Anspruch 15, wobei es sich bei der ersten Anweisung um eine aus einer Gruppe von Anweisungen handelt, die aus einer Ladeanweisung und einer Speicheranweisung besteht.Computer program product according to Claim 15 , the first instruction being one of a group of instructions consisting of a load instruction and a store instruction.
DE112018004006.2T 2017-10-06 2018-10-03 PROCESSING SYNONYMS OF EFFECTIVE ADDRESSES IN A LOAD MEMORY UNIT THAT WORKS WITHOUT ADDRESS CONVERSION Active DE112018004006B4 (en)

Applications Claiming Priority (9)

Application Number Priority Date Filing Date Title
US15/726,596 2017-10-06
US15/726,596 US10606591B2 (en) 2017-10-06 2017-10-06 Handling effective address synonyms in a load-store unit that operates without address translation
US15/726,627 US11175924B2 (en) 2017-10-06 2017-10-06 Load-store unit with partitioned reorder queues with single cam port
US15/726,627 2017-10-06
US15/825,453 2017-11-29
US15/825,453 US11175925B2 (en) 2017-10-06 2017-11-29 Load-store unit with partitioned reorder queues with single cam port
US15/825,494 US10606592B2 (en) 2017-10-06 2017-11-29 Handling effective address synonyms in a load-store unit that operates without address translation
US15/825,494 2017-11-29
PCT/IB2018/057694 WO2019069255A1 (en) 2017-10-06 2018-10-03 Handling effective address synonyms in a load-store unit that operates without address translation

Publications (2)

Publication Number Publication Date
DE112018004006T5 DE112018004006T5 (en) 2020-04-16
DE112018004006B4 true DE112018004006B4 (en) 2021-03-25

Family

ID=65994519

Family Applications (2)

Application Number Title Priority Date Filing Date
DE112018004004.6T Pending DE112018004004T5 (en) 2017-10-06 2018-10-03 LOADING STORAGE UNIT WITH DIVIDED REORGANIZATION QUEUE WITH SINGLE CAM CONNECTOR
DE112018004006.2T Active DE112018004006B4 (en) 2017-10-06 2018-10-03 PROCESSING SYNONYMS OF EFFECTIVE ADDRESSES IN A LOAD MEMORY UNIT THAT WORKS WITHOUT ADDRESS CONVERSION

Family Applications Before (1)

Application Number Title Priority Date Filing Date
DE112018004004.6T Pending DE112018004004T5 (en) 2017-10-06 2018-10-03 LOADING STORAGE UNIT WITH DIVIDED REORGANIZATION QUEUE WITH SINGLE CAM CONNECTOR

Country Status (5)

Country Link
JP (2) JP7064273B2 (en)
CN (2) CN111133413B (en)
DE (2) DE112018004004T5 (en)
GB (2) GB2579757B (en)
WO (2) WO2019069256A1 (en)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2023056289A (en) 2021-10-07 2023-04-19 富士通株式会社 Arithmetic processing unit, and arithmetic processing method
CN114780146B (en) * 2022-06-17 2022-08-26 深流微智能科技(深圳)有限公司 Resource address query method, device and system

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016105961A1 (en) * 2014-12-26 2016-06-30 Wisconsin Alumni Research Foundation Cache accessed using virtual addresses

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6694425B1 (en) * 2000-05-04 2004-02-17 International Business Machines Corporation Selective flush of shared and other pipeline stages in a multithread processor
US6931639B1 (en) * 2000-08-24 2005-08-16 International Business Machines Corporation Method for implementing a variable-partitioned queue for simultaneous multithreaded processors
US7343469B1 (en) * 2000-09-21 2008-03-11 Intel Corporation Remapping I/O device addresses into high memory using GART
US20040117587A1 (en) 2002-12-12 2004-06-17 International Business Machines Corp. Hardware managed virtual-to-physical address translation mechanism
US7730282B2 (en) * 2004-08-11 2010-06-01 International Business Machines Corporation Method and apparatus for avoiding data dependency hazards in a microprocessor pipeline architecture using a multi-bit age vector
US8145887B2 (en) * 2007-06-15 2012-03-27 International Business Machines Corporation Enhanced load lookahead prefetch in single threaded mode for a simultaneous multithreaded microprocessor
US8645974B2 (en) * 2007-08-02 2014-02-04 International Business Machines Corporation Multiple partition adjunct instances interfacing multiple logical partitions to a self-virtualizing input/output device
US7711929B2 (en) 2007-08-30 2010-05-04 International Business Machines Corporation Method and system for tracking instruction dependency in an out-of-order processor
US8639884B2 (en) * 2011-02-28 2014-01-28 Freescale Semiconductor, Inc. Systems and methods for configuring load/store execution units
US9182991B2 (en) * 2012-02-06 2015-11-10 International Business Machines Corporation Multi-threaded processor instruction balancing through instruction uncertainty
US8966232B2 (en) * 2012-02-10 2015-02-24 Freescale Semiconductor, Inc. Data processing system operable in single and multi-thread modes and having multiple caches and method of operation
GB2503438A (en) * 2012-06-26 2014-01-01 Ibm Method and system for pipelining out of order instructions by combining short latency instructions to match long latency instructions
CN103198028B (en) * 2013-03-18 2015-12-23 华为技术有限公司 A kind of internal storage data moving method, Apparatus and system
US9740409B2 (en) * 2013-12-13 2017-08-22 Ineda Systems, Inc. Virtualized storage systems
US10209995B2 (en) * 2014-10-24 2019-02-19 International Business Machines Corporation Processor core including pre-issue load-hit-store (LHS) hazard prediction to reduce rejection of load instructions

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016105961A1 (en) * 2014-12-26 2016-06-30 Wisconsin Alumni Research Foundation Cache accessed using virtual addresses

Also Published As

Publication number Publication date
CN111133413A (en) 2020-05-08
JP7025100B2 (en) 2022-02-24
CN111133413B (en) 2023-09-29
GB2579757A (en) 2020-07-01
WO2019069256A1 (en) 2019-04-11
CN111133421A (en) 2020-05-08
DE112018004004T5 (en) 2020-04-16
GB202006344D0 (en) 2020-06-17
DE112018004006T5 (en) 2020-04-16
WO2019069255A1 (en) 2019-04-11
GB2579757B (en) 2020-11-18
GB2579534B (en) 2020-12-16
GB2579534A (en) 2020-06-24
JP2020536310A (en) 2020-12-10
GB202006338D0 (en) 2020-06-17
JP2020536308A (en) 2020-12-10
CN111133421B (en) 2023-09-29
JP7064273B2 (en) 2022-05-10

Similar Documents

Publication Publication Date Title
US10776113B2 (en) Executing load-store operations without address translation hardware per load-store unit port
DE112010003492B4 (en) Transaction storage system with efficient cache support
DE112004002848B4 (en) A microprocessor and method for verifying a memory file in such a microprocessor
DE202007019502U1 (en) Global overflow for virtualized transaction store
DE102018125257A1 (en) DEFRAGMENTED AND EFFICIENT MICROOPERATION CAKE
US11175925B2 (en) Load-store unit with partitioned reorder queues with single cam port
US10606593B2 (en) Effective address based load store unit in out of order processors
DE112018006127B4 (en) CLOSING LINKED ENTRIES OF A GLOBAL CLOSING TABLE IN AN OUT-OF-ORDER PROCESSOR
DE102014003799A1 (en) Systems and methods for transfer elimination with bypass multiple instantiation table
US9740623B2 (en) Object liveness tracking for use in processing device cache
US10572256B2 (en) Handling effective address synonyms in a load-store unit that operates without address translation
DE102014109083A1 (en) Forming statement sets based on the optimization of statements in decoding
DE102018001537A1 (en) SYSTEM, DEVICE AND METHOD FOR SELECTIVELY RELEASING A LOCALITY-BASED INSTRUCTION HANDLING
DE102018002525A1 (en) HYBRIDATOMARITY ASSISTANCE FOR A BINARY TRANSLATION-BASED MICROPROCESSOR
DE112010003942T5 (en) Device for setting keys without shutdown
DE112016005863T5 (en) Minimize snoop traffic locally and across cores on a multi-core chip fabric
DE102020132140A1 (en) Pipelines for secure multithreaded execution
DE112018004006B4 (en) PROCESSING SYNONYMS OF EFFECTIVE ADDRESSES IN A LOAD MEMORY UNIT THAT WORKS WITHOUT ADDRESS CONVERSION
DE102021116489A1 (en) Management of prefetch requests based on stream information for previously recognized streams
DE102020132893A1 (en) DEVICES, PROCEDURES AND SYSTEMS FOR A DUPLICATION RESISTANT ON-DIE PREFETCHER FOR IRREGULAR DATA
DE202020005503U1 (en) Power management unit (PMU) supported tier selection in heterogeneous storage
DE112016007029T5 (en) DEVICE AND METHOD FOR MANAGING AN MEMORY CACHE CLEARANCE

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R083 Amendment of/additions to inventor(s)
R016 Response to examination communication
R018 Grant decision by examination section/examining division
R084 Declaration of willingness to licence
R020 Patent grant now final