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 PDFInfo
- 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
Links
- 230000015654 memory Effects 0.000 title claims abstract description 85
- 238000012545 processing Methods 0.000 title claims abstract description 54
- 238000006243 chemical reaction Methods 0.000 title description 13
- 238000003860 storage Methods 0.000 claims abstract description 44
- 230000004044 response Effects 0.000 claims abstract description 33
- 238000001514 detection method Methods 0.000 claims abstract description 12
- 238000000034 method Methods 0.000 claims description 71
- 238000004590 computer program Methods 0.000 claims description 19
- 238000010586 diagram Methods 0.000 description 30
- 230000008569 process Effects 0.000 description 30
- 230000006870 function Effects 0.000 description 26
- 238000013519 translation Methods 0.000 description 17
- 238000013507 mapping Methods 0.000 description 14
- 101150068276 ERT1 gene Proteins 0.000 description 9
- 102100024193 Mitogen-activated protein kinase 1 Human genes 0.000 description 9
- 108700015928 Mitogen-activated protein kinase 13 Proteins 0.000 description 9
- 101100427545 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) ULP2 gene Proteins 0.000 description 8
- 238000012217 deletion Methods 0.000 description 8
- 230000037430 deletion Effects 0.000 description 8
- KHESEVVLJIFTFE-UHFFFAOYSA-N CN(C1=CC=C2C=C(C(=NC2=C1)N)C1=CN(C2=CC=CC=C12)C)C Chemical compound CN(C1=CC=C2C=C(C(=NC2=C1)N)C1=CN(C2=CC=CC=C12)C)C KHESEVVLJIFTFE-UHFFFAOYSA-N 0.000 description 7
- 239000000872 buffer Substances 0.000 description 7
- 230000007246 mechanism Effects 0.000 description 7
- 230000008901 benefit Effects 0.000 description 6
- 230000005540 biological transmission Effects 0.000 description 5
- 101100310497 Arabidopsis thaliana SMT2 gene Proteins 0.000 description 4
- 238000004364 calculation method Methods 0.000 description 4
- 239000000203 mixture Substances 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 4
- 230000009467 reduction Effects 0.000 description 4
- 239000004065 semiconductor Substances 0.000 description 4
- 238000012546 transfer Methods 0.000 description 4
- 238000003491 array Methods 0.000 description 3
- 238000004140 cleaning Methods 0.000 description 3
- 238000010276 construction Methods 0.000 description 3
- 230000001934 delay Effects 0.000 description 3
- 238000007667 floating Methods 0.000 description 3
- 230000006872 improvement Effects 0.000 description 3
- 101100161473 Arabidopsis thaliana ABCB25 gene Proteins 0.000 description 2
- 101100096893 Mus musculus Sult2a1 gene Proteins 0.000 description 2
- 101150081243 STA1 gene Proteins 0.000 description 2
- 230000009471 action Effects 0.000 description 2
- 230000004913 activation Effects 0.000 description 2
- 230000008878 coupling Effects 0.000 description 2
- 238000010168 coupling process Methods 0.000 description 2
- 238000005859 coupling reaction Methods 0.000 description 2
- 230000001419 dependent effect Effects 0.000 description 2
- 239000000835 fiber Substances 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 238000010926 purge Methods 0.000 description 2
- 238000012163 sequencing technique Methods 0.000 description 2
- RYGMFSIKBFXOCR-UHFFFAOYSA-N Copper Chemical compound [Cu] RYGMFSIKBFXOCR-UHFFFAOYSA-N 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 239000004020 conductor Substances 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 229910052802 copper Inorganic materials 0.000 description 1
- 239000010949 copper Substances 0.000 description 1
- 238000013523 data management Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000011900 installation process Methods 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 238000004886 process control Methods 0.000 description 1
- 230000001902 propagating effect Effects 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 238000012827 research and development Methods 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 238000012552 review Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000001629 suppression Effects 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30181—Instruction operation extension or modification
- G06F9/30189—Instruction operation extension or modification according to execution mode, e.g. mode flag
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3851—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3824—Operand accessing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3824—Operand accessing
- G06F9/383—Operand prefetching
- G06F9/3832—Value prediction for operands; operand history buffers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3838—Dependency mechanisms, e.g. register scoreboarding
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3854—Instruction completion, e.g. retiring, committing or graduating
- G06F9/3856—Reordering of instructions, e.g. using queues or age tags
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
- G06F12/1045—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache
- G06F12/1063—Address 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1008—Correctness of operation, e.g. memory ordering
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/65—Details of virtual memory and virtual address translation
- G06F2212/652—Page size control
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/65—Details of virtual memory and virtual address translation
- G06F2212/655—Same page detection
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/65—Details of virtual memory and virtual address translation
- G06F2212/657—Virtual address space management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/68—Details of translation look-aside buffer [TLB]
- G06F2212/681—Multi-level TLB, e.g. microTLB and main TLB
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3824—Operand accessing
- G06F9/3834—Maintaining 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
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.
-
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
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
Die in
Die Ausgabe aus dem Einrichtungsblock
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
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,
Wie in
Wie in
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
Die Anzahl von Einträgen in der Ausgabewarteschlange
In einem oder mehreren Beispielen handelt es sich bei dem System
Der Anweisungs-Cache
Die in den Anweisungsabrufpuffer
Die EA und zugehörige Vorhersagedaten von der Verzweigungsvorhersageeinheit werden in ein Verzeichnis
Anweisungen, die aus dem Speicher lesen oder in diesen schreiben (wie Lade- oder Speicheranweisungen), werden an die LS/EX-Ausführungseinheit
Die LS/EX-Ausführungseinheit
Die Prozessorarchitektur enthält des Weiteren das EAD
Fachleuten ist ersichtlich, dass die Hardware in
Zudem kann das Datenverarbeitungssystem
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
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
Die LSU
Wie dargestellt, ist die LRQF
In einem oder mehreren Beispielen ist die LRQF
In einem oder mehreren Beispielen ist die LRQF
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
Alle Speicherungen werden anhand der LRQF
Auf diese Weise erleichtert die LRQF
Des Weiteren enthält die LRQF jedoch kein typischerweise verwendetes RA-Feld (
Die SRQ
Jeder Eintrag der SRQ
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
Die SRQ
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
Die ISU weist Speicherzuteilungen virtuelle Teilbereiche zu, um Probleme durch Überschneidungen zu vermeiden. Beispielsweise gibt die ISU im ST-Modus keinen virtuellen SRQ-Eintrag
Beispielsweise wird für den ST-Modus die SRQ
Wie in
Bei der Basis-EA
Das Kennungsfeld
Das Kennungsfeld
Das Geschlossen-Kennungsfeld
Das Feld
Das Feld
Das Feld
Das Verzweigungsdatenfeld
Das Feld
Auf Einträge in dem EAD
- 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.
- 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.
Die ERT
Wenn der Prozessor
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
Die LSU bezieht sich nur dann auf die ERT
Im ersten Fall von Ifetch-, Lade- oder Speicherfehlern in dem L1-Cache werden die EA und die Thread_id dazu verwendet in der ERT
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
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
Die LRQF
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
Des Weiteren wird jede Ladeanweisung anhand der LRQF
Noch weiter wird jede LARX-Anweisung anhand der LRQF
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.
Wenn es in der LSU zu einem EAD-Treffer in dem EAD
Im Folgenden wird der Fall betrachtet, in dem die Anweisung keinen Treffer in dem EAD
Wenn ein ERT-Fehler auftritt, initiiert die LSU ein erneutes Laden für die ERT
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 (
Bei Anweisungsabrufen, die keinen Treffer in dem L1-I-Cache auf Grundlage von EA aufweisen, wird die EA mithilfe der ERT
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.
Wenn festgestellt wird, dass der (die) vorhandene(n) Eintrag/Einträge in der ERT
Wenn die Seitengröße der vorhandenen Einträge mit der Größe der neu geladenen RA übereinstimmt, überprüft die ERT
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(
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(
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) = {
Die LSU installiert einen Eintrag in der SDT (Synonymerkennungstabelle) anstelle der ERT
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
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:
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
Während des erneuten Ladens der ERT wird, wie hierin beschrieben, der SDT
Da die SDT
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
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(
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
Bei einer beispielhaften Ausführungsform, wie in
Die E/A-Einheiten
Der Prozessor
Der Speicher
Die Anweisungen in dem Speicher
Zusätzliche Daten, darunter zum Beispiel Anweisungen für den Prozessor
Das Computersystem
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
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)
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)
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)
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)
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 |
-
2018
- 2018-10-03 CN CN201880061955.4A patent/CN111133413B/en active Active
- 2018-10-03 DE DE112018004004.6T patent/DE112018004004T5/en active Pending
- 2018-10-03 WO PCT/IB2018/057695 patent/WO2019069256A1/en active Application Filing
- 2018-10-03 GB GB2006344.2A patent/GB2579757B/en active Active
- 2018-10-03 GB GB2006338.4A patent/GB2579534B/en active Active
- 2018-10-03 WO PCT/IB2018/057694 patent/WO2019069255A1/en active Application Filing
- 2018-10-03 JP JP2020517847A patent/JP7064273B2/en active Active
- 2018-10-03 CN CN201880061956.9A patent/CN111133421B/en active Active
- 2018-10-03 DE DE112018004006.2T patent/DE112018004006B4/en active Active
- 2018-10-03 JP JP2020517947A patent/JP7025100B2/en active Active
Patent Citations (1)
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 |