DE102014003799A1 - Systeme und Verfahren zur Übertragungseliminierung mit Bypass-Mehrfachinstanziierungstabelle - Google Patents

Systeme und Verfahren zur Übertragungseliminierung mit Bypass-Mehrfachinstanziierungstabelle Download PDF

Info

Publication number
DE102014003799A1
DE102014003799A1 DE102014003799.1A DE102014003799A DE102014003799A1 DE 102014003799 A1 DE102014003799 A1 DE 102014003799A1 DE 102014003799 A DE102014003799 A DE 102014003799A DE 102014003799 A1 DE102014003799 A1 DE 102014003799A1
Authority
DE
Germany
Prior art keywords
data
register
data structure
elimination
transfer
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Withdrawn
Application number
DE102014003799.1A
Other languages
English (en)
Inventor
Jeremy R. Anderson
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of DE102014003799A1 publication Critical patent/DE102014003799A1/de
Withdrawn legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30032Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3824Operand accessing
    • G06F9/3826Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • G06F9/384Register renaming

Abstract

Systeme und Verfahren für die Eliminierung von Übertragungsoperationen mit Bypass-Mehrfachinstatiierungstabellen-(MIT)-Logik. Ein beispielhaftes Verarbeitungssystem kann eine erste Datenstruktur, die für die Speicherung einer Mehrzahl von physischen Registerwerten konfiguriert ist; eine zweite Datenstruktur, die für die Speicherung einer Mehrzahl von Zeigern konfiguriert ist, wobei jeder Zeiger auf ein Element der ersten Datenstruktur verweist; eine dritte Datenstruktur einschließlich einer Mehrzahl von Übertragungseliminierungssätzen, wobei jeder Übertragungseliminierungssatz eine Mehrzahl von Bits aufweist, die eine Mehrzahl von logischen Registern repräsentieren; und eine Logik, die für die Ausführung einer Datenbearbeitungsoperation konfiguriert ist, indem ein Element der zweiten Datenstruktur dazu veranlasst wird, auf ein Element der ersten Datenstruktur zu verweisen, wobei die Logik weiterhin so konfiguriert ist, dass sie die Ergebnisse von zwei oder mehr Datenbearbeitungsoperationen durch Ausführung einer einzelnen Aktualisierung der dritten Datenstruktur widerspiegelt, aufweisen.

Description

  • TECHNISCHES GEBIET
  • Die vorliegende Offenbarung betrifft allgemein Computersysteme und speziell die Verbesserung der Effizienz der Ausführung von Datenkopieranweisungen durch Computersysteme.
  • HINTERGRUND
  • Datenkopieroperationen zwischen physischen Registern stellen einen wesentlichen Anteil der von einem Prozessor ausgeführten Operationen dar. Daher kann die Optimierung ihrer Ausführung die Gesamtleistung des Prozessors erhöhen.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • Die vorliegende Offenbarung wird anhand von Beispielen, die nicht einschränkend sind, erläutert und kann vollständiger unter Bezugnahme auf die nachstehende ausführliche Beschreibung in Verbindung mit den Figuren verstanden werden, bei denen
  • 1 ein High-Level-Komponentendiagramm eines exemplarischen Computersystems gemäß einem oder mehreren Aspekten der vorliegenden Erfindung zeigt;
  • 2 ein Blockdiagramm eines Prozessors gemäß einem oder mehreren Aspekten der vorliegenden Offenbarung zeigt;
  • 3a3b schematisch Elemente einer Prozessor-Mikroarchitektur gemäß einem oder mehreren Aspekten der vorliegenden Offenbarung zeigen;
  • 4 zeigt eine schematische Darstellung mehrerer Aspekte eines Beispielprozessors und weiterer Komponenten des beispielhaften Computersystems 100 aus 1 gemäß einem oder mehreren Aspekten der vorliegenden Offenbarung;
  • 5 zeigt eine schematische Darstellung eines Beispiels für die Ausführung einer Übertragungsoperation durch Register-Aliasing gemäß einem oder mehreren Aspekten der vorliegenden Offenbarung;
  • 6a6c zeigen schematische Darstellungen der Verwendung der Mehrfachinstanziierungstabelle (MIT) für die Verfolgung an Einträgen in die Physical Register File (physische Registerdatei; PRF) gemäß einem oder mehreren Aspekten der vorliegenden Offenbarung;
  • 7a7c zeigen schematische Darstellungen der MIT-Zuweisungs- und Reservierungslogik gemäß einem oder mehreren Aspekten der vorliegenden Offenbarung;
  • 8a8c zeigen schematische Darstellungen der MIT-Rückgewinnungslogik für verwaiste Daten gemäß einem oder mehreren Aspekten der vorliegenden Offenbarung;
  • 9a9c, 10a10c und 11a11c zeigen schematische Darstellungen verschiedener Beispiele von Datenbearbeitungsoperationen zeigen, die gemäß einem oder mehreren Aspekten der vorliegenden Offenbarung von einer Bypass-MIT-Logik implementiert werden;
  • 12 zeigt eine schematische Darstellung einer Beispielschaltung, die gemäß einem oder mehreren Aspekten der vorliegenden Offenbarung die Übertragungseliminierungslogik implementiert;
  • 13 zeigt ein Ablaufschema eines beispielhaften Verfahrens gemäß einem oder mehreren Aspekten der vorliegenden Offenbarung; und
  • 14 zeigt ein Blockschaltbild eines beispielhaften Computersystems gemäß einem oder mehreren Aspekten der vorliegenden Offenbarung.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Beschrieben werden hier Computersysteme und damit in Beziehung stehende Technologien zur Implementierung der Übertragungseliminierung mit Bypass-Mehrfachinstanziierungstabellen-Logik (MIT). „Übertragungseliminierung” bezieht sich hier auf die Ausführung einer Registerkopieroperation ohne Verwendung der Ausführungseinheit (z. B. durch Verändern eines Eintrags in einer Register-Aliastabelle).
  • Ein Prozessor kann zur Verbesserung der Effizienz der Ausführung von Anweisungen Register-Aliasing implementieren: eine erste Datenstruktur, die als Physical Register File (Physische Registerdatei; PRF) bezeichnet wird, kann zum Speichern physischer Registerwerte eingesetzt und eine zweite Datenstruktur, die als Register Alias Table (Register-Aliastabelle; RAT) kann zum Speichern von Zeigern für die Zuweisung von logischen Registerkennungen (wie zum Beispiel R8 oder AX) zu den in der PRF gespeicherten Werten verwendet werden. Register-Aliasing gestattet das Ausführen bestimmter Anweisungen durch Ändern von Einträgen in der Aliastabelle, ohne diese Anweisungen an die Ausführungseinheit zu senden. Zu Beispielen für solche Anweisungen gehören Register-Rücksetzanweisungen (wie zum Beispiel XOR AX, AX) und Registerkopieranweisungen (wie MOV-Anweisungen). Weil eine Registerkopieranweisung keinen neuen Wert erzeugt, kann der Quellregisterzeiger in den Zielregisterzeiger in der RAT kopiert werden, sodass die Anweisung nicht die Ausführungseinheit und keinen anderen PRF-Eintrag zu verwenden braucht. Dieser Prozess wird als „Übertragungseliminierung” bezeichnet, da die Übertragungsanweisung aus dem an die Ausführungseinheit gesendeten Strom eliminiert wird.
  • Bei dem oben beschriebenen Register-Aliasing-Schema muss gegebenenfalls die Nutzung von PRF-Tabelleneinträgen verfolgt werden, um zu bestimmen, wann ein PRF-Eintrag zur Verwendung durch eine neue Anweisung freigegeben werden darf. Eine dritte Datenstruktur, die als Multiple Instantiation Table (Mehrfachinstanziierungstabelle; MIT) bezeichnet wird, kann zur Verfolgung der Nutzung von PRF-Tabelleneinträgen verwendet werden, was hierin im Folgenden genauer beschrieben ist.
  • Die hierin beschriebenen Systeme und Verfahren können Abhängigkeiten für zwei oder mehr Datenbearbeitungsoperationen vorausberechnen und dann eine einzige MIT-Aktualisierung ausführen, welche die Ergebnisse von zwei oder mehr Operationen widerspiegelt und so sowohl den Zeitaufwand als auch Stromverbrauchsaspekte von Übertragungseliminerungsoperationen verbessern. Verschiedene Aspekte der vorstehend genannten Verfahren und Systeme werden nachstehend exemplarisch und nicht einschränkend beschrieben.
  • In der folgenden Beschreibung sind zahlreiche konkrete Angaben dargelegt, wie Beispiele von bestimmten Typen von Prozessoren und Systemkonfigurationen, bestimmte Hardware-Anordnungen, bestimmte Details über Architektur und Mikroarchitektur, konkrete Registerkonfigurationen, konkrete Befehlstypen, konkrete Systemkomponenten, konkrete Abmessungen/Höhen, konkrete Prozessor-Pipeline-Stufen und Operationen usw., um ein gründliches Verständnis der vorliegenden Erfindung zu gewährleisten. Für einen Fachmann ist es jedoch offensichtlich, dass diese spezifischen Details nicht eingesetzt werden müssen, um die vorliegende Erfindung zu betreiben. In anderen Fällen wurden allgemein bekannte Komponenten oder Verfahren, wie z. B. konkrete und alternative Prozessorarchitekturen, konkrete Logikschaltungen/Code für beschriebene Algorithmen, konkreter Firmware-Code, konkrete Verbindungsoperationen, konkrete Logikkonfigurationen, konkrete Herstellungstechniken und Materialien, konkrete Compiler-Implementierungen, konkrete Umsetzung von Algorithmen in Code, konkrete Abschaltvorgangs- und Gating-Techniken/Logik und andere konkrete Betriebseinzelheiten eines Computersystems, nicht ausführlich beschrieben, um unnötige Verschleierung der vorliegenden Erfindung zu vermeiden.
  • Obwohl die nachstehenden Ausführungsformen unter Bezugnahme auf einen Prozessor beschrieben sind, sind andere Ausführungsformen auf andere Typen von integrierten Schaltungen und logischen Einheiten anwendbar. Ähnliche Techniken und Lehren von Ausführungsformen der vorliegenden Erfindung können auf andere Typen von Schaltungen oder Halbleiterbauelementen angewendet werden, die von einem höheren Pipeline-Datendurchsatz und einer verbesserten Leistung profitieren können. Die Lehren von Ausführungsformen der vorliegenden Erfindung sind auf einen beliebigen Prozessor oder eine beliebige Maschine anwendbar, die Datenmanipulationen ausführt. Die vorliegende Erfindung ist jedoch nicht auf Prozessoren oder Maschinen beschränkt, die 512-Bit-, 256-Bit-, 128-Bit-, 64-Bit-, 32-Bit- oder 16-Bit-Datenoperationen ausführen, und kann auf einen beliebigen Prozessor oder eine beliebige Maschine angewendet werden, in denen Datenmanipulationen oder Datenverwaltung durchgeführt wird. Darüber hinaus enthält die nachstehende Beschreibung Beispiele und die beigefügten Zeichnungen zeigen verschiedene Beispiele zu Veranschaulichungszwecken. Diese Beispiele sollen jedoch nicht auf eine einschränkende Wiese verstanden werden, da sie ausschließlich als Beispiele für Ausführungsformen der vorliegenden Erfindung, und nicht als eine erschöpfende Auflistung aller möglichen Implementierungen von Ausführungsformen der vorliegenden Erfindung gedacht sind.
  • Obgleich die nachstehenden Beispiele Befehlsabwicklung und -verteilung im Zusammenhang mit Ausführungseinheiten und Logikschaltungen beschreiben, können andere Ausführungsformen der vorliegenden Erfindung durch in einem maschinenlesbaren, nichtflüchtigen Medium gespeicherte Daten oder Befehle realisiert werden, die bei ihrer Ausführung durch eine Maschine die Maschine dazu veranlassen, Funktionen auszuführen, die mit mindestens einer Ausführungsform mit der Erfindung übereinstimmen. In einer Ausführungsform sind Funktionen, die mit Ausführungsformen der vorliegenden Erfindung assoziiert sind, in maschinenausführbaren Befehlen enthalten. Die Befehle können verwendet werden, um einen mit den Befehlen programmierten Universalprozessor oder Spezialprozessor dazu zu veranlassen, die Schritte der vorliegenden Erfindung auszuführen. Ausführungsformen der vorliegenden Erfindung können als ein Computerprogrammprodukt oder Software bereitgestellt sein, die ein maschinen- oder computerlesbares Medium mit darauf gespeicherten Befehlen umfassen können, die zum Programmieren eines Computers (oder anderer elektronischen Vorrichtungen) verwendet werden können, damit er (sie) eine oder mehrere Operationen gemäß Ausführungsformen der vorliegenden Erfindung ausführt. Alternativ können Operationen von Ausführungsformen der vorliegenden Erfindung durch bestimmte Hardware-Komponenten, die eine Fixed-Function Logic zum Ausführen der Operationen enthalten, oder durch eine beliebige Kombination von programmierten Computerkomponenten und Fixed-Function-Hardwarekomponenten ausgeführt werden.
  • Befehle, die zum Programmieren einer Logik verwendet werden, damit sie Ausführungsformen der Erfindung ausführt, können in einem Speicher in dem System (wie zum Beispiel DRAM, Cache, Flash-Speicher oder anderen Speichern) gespeichert sein. Außerdem können die Befehle über ein Netzwerk oder mithilfe von anderen computerlesbaren Medien verbreitet werden. Somit kann ein maschinenlesbares Medium einen beliebigen Mechanismus zum Speichern oder Übermitteln von Informationen in einer (z. B. einem Computer) maschinenlesbaren Form umfassen, ist aber nicht beschränkt auf Disketten, optische Laufwerke, CDs, Nur-Lese-Speicher (CD-ROMs), magnetooptische Disketten, Festwertspeicher (ROM), Direktzugriffsspeicher (RAM), Erasable Programmable Read-Only Memory (EPROM), Electrically Erasable Programmable Read-Only Memory (EEPROM), magnetische oder optische Karten, Flash-Speicher, oder einen nichtflüchtigen, maschinenlesbaren Speicher, der bei der Übertragung von Informationen über das Internet mithilfe von von elektrischen, optischen, akustischen oder anderen Formen von sich ausbreitenden Signalen (z. B. Trägerwellen, Infrarotsignalen, digitalen Signalen usw.) verwendet wird. Dementsprechend umfasst das computerlesbare Medium eine beliebige Art von nichtflüchtigem, maschinenlesbaren Medium, das zum Speichern oder Übermitteln elektronischer Befehle oder Informationen in einer von einer Maschine (z. B. einem Computer) lesbaren Form geeignet ist.
  • „Prozessor” bezieht sich hierbei auf eine Vorrichtung, die in der Lage ist, Befehle auszuführen, arithmetische, logische oder I/O-Operationen zu dekodieren. In einem erläuternden Beispiel kann ein Prozessor der Von-Neumann-Architektur folgen und kann eine arithmetischlogische Einheit (ALU), ein Steuerwerk und eine Mehrzahl von Registern aufweisen. In einem weiteren Aspekt kann ein Prozessor einen oder mehrere Prozessorkerne aufweisen und kann daher ein Einzelkernprozessor, der üblicherweise in der Lage ist, eine einzelne Befehls-Pipeline abzuarbeiten, oder ein Mehrkernprozessor sein, der gleichzeitig mehrere Befehls-Pipelines abarbeiten kann. In einem weiteren Aspekt kann ein Prozessor als eine einzelne integrierte Schaltung, zwei oder mehrere integrierte Schaltungen implementiert sein, oder er kann eine Komponente eines Multi-Chip-Moduls sein (bei dem z. B. einzelne Mikroprozessor-Dies in einem einzelnen Gehäuse untergebracht sind und sich daher einen einzelnen Sockel teilen).
  • 1 zeigt ein High-Level-Komponentendiagramm eines Beispiels eines Computersystems gemäß einem oder mehreren Aspekten der vorliegenden Erfindung. Ein Computersystem 100 kann einen Prozessor 102 aufweisen, um Ausführungseinheiten inklusive einer Logik für die Ausführung von Algorithmen zur Datenverarbeitung gemäß der hier beschrieben Ausführungsform einzusetzen. System 100 vertritt ein auf den Mikroprozessoren PENTIUM IIITM, PENTIUM 4TM, XeonTM, Itanium, XScaleTM und/oder StrongARMTM, die bei der Intel Corporation aus Santa Clara, Kalifornien erhältlich sind, basierendes Verarbeitungssystem, obwohl auch andere Systeme (darunter PCs mit anderen Mikroprozessoren, Engineering-Workstations, Set-Top-Boxen und dergleichen) verwendet werden können. In einer Ausführungsform führt Beispielsystem 100 eine Version des WINDOWSTM-Betriebssystems aus, das bei der Microsoft Corporation aus Redmond, Washington erhältlich ist, obwohl andere Betriebssysteme (zum Beispiel UNIX und Linux), eingebettete Software und/oder grafische Benutzeroberflächen ebenfalls verwendet werden können. Somit sind die Ausführungsformen der vorliegenden Erfindung nicht auf eine bestimmte Kombination von Hardwareschaltung und Software beschränkt.
  • Ausführungsformen sind nicht auf Computersysteme beschränkt. Alternative Ausführungsformen der vorliegenden Erfindung können in anderen Vorrichtungen, wie Handgeräte und eingebettete Anwendungen, verwendet werden. Einige Beispiele von Handgeräten umfassen Mobiltelefone, Internetprotokoll-Geräte, Digitalkameras, persönliche digitale Assistenten (PDAs) und Handheld-PCs. Eingebettete Anwendungen können einen Mikrocontroller, einen digitalen Signalprozessor (DSP), System-on-a-Chip, Netzwerkcomputer (NetPCs), Set-Top-Boxen, Netzwerk-Hubs, Weitverkehrsnetz-Switches (WAN-Switches) oder ein beliebiges anderes System umfassen, das einen oder mehrere Befehle gemäß mindestens einer Ausführungsform ausführen kann.
  • In dieser dargestellten Ausführungsform umfasst der Prozessor 102 eine oder mehrere Ausführungseinheiten 108 zum Implementieren eines Algorithmus, der mindestens eine Anweisung ausführen soll. Eine Ausführungsform kann im Zusammenhang mit einem Desktop- oder Server-System mit einem einzelnen Prozessor beschrieben werden, aber alternative Ausführungsformen können in einem Multiprozessorsystem eingefügt sein. System 100 ist ein Beispiel einer Hub-Architektur des Systems. Das Computersystem 100 weist einen Prozessor 102 zur Verarbeitung von Datensignalen auf. Der Prozessor 102 umfasst als ein erläuterndes Beispiel einen CISC-Mikroprozessor (Complex Instruction Set Computer, Rechner mit komplexem Befehlssatz), einen RISC-Mikroprozessor (Reduced Instruction Set Computer, Rechner mit reduziertem Befehlssatz), einen VLIW-Mikroprozessor (Very Long Instruction Word), einen Prozessor, der eine Kombination von Befehlssätzen implementiert, oder ein beliebiges anderes Prozessorgerät, wie zum Beispiel einen digitalen Signalprozessor. Der Prozessor 102 ist an einen Prozessorbus 110 gekoppelt, der Datensignale zwischen dem Prozessor 102 und anderen Komponenten im System 100 überträgt. Die Elemente von System 100 (z. B. Grafikbeschleuniger 112, Memory Controller Hub (MCH) 116, Speicher 120, I/O Controller Hub (ICH) 124, drahtloser Transceiver 126, Flash-BIOS 128, Netzwerkcontroller 134, Audiocontroller 136, serieller Erweiterungsanschluss 138, I/O-Controller 140 usw.) erfüllen ihre herkömmlichen Funktionen, die einem Fachmann gut bekannt sind.
  • In einer Ausführungsform umfasst der Prozessor 102 einen internen L1-Cache 104. Abhängig von der Architektur kann der Prozessor 102 einen einzelnen internen Cache oder mehrere Ebenen von internen Caches aufweisen. Andere Ausführungsformen umfassen eine Kombination von sowohl internen als auch externen Caches, je nach der spezifischen Implementierung und den Anforderungen. Registerspeicher 106 speichert verschiedene Datentypen in verschiedenen Registern, darunter Ganzzahlregister, Gleitkommaregister, Vektorregister, Banked-Register, Schattenregister, Checkpoint-Register, Statusregister und Befehlszeigerregister (instruction pointer register).
  • Ausführungseinheit 108, die eine Logik zum Ausführen von Integer- und Gleitkommaoperationen umfasst, liegt ebenfalls im Prozessor 102. Der Prozessor 102 umfasst in einer Ausführungsform ein Mikrocode-Festwertspeicher (ucode) zum Speichern von Mikrocode, der im Fall seiner Ausführung Algorithmen für bestimmte Makrobefhle auszuführen oder komplexe Szenarien zu bewältigen hat. Hierbei ist der Mikrocode möglicherweise aktualisierbar, um logische Fehler/Ausbesserungen für Prozessor 102 zu bearbeiten. Bei einer Ausführungsform umfasst Ausführungseinheit 108 eine Logik zur Bearbeitung eines komprimierten Befehlssatzes 109. Indem der komprimierte Befehlssatz 109 in dem Befehlssatz eines Universalprozessors 102 zusammen mit assoziierten Schaltungen zur Ausführung der Befehle aufgenommen wird, können die Operationen, die von vielen Multimedia-Anwendungen verwendet werden, unter Verwendung von komprimierten Daten in einem Allzweckprozessor 102 ausgeführt werden. Durch Verwendung der vollen Breite eines Prozessor-Datenbusses zur Ausführung von Operationen auf komprimierten Daten werden somit viele Multimedia-Anwendungen beschleunigt und effizienter ausgeführt. Dies behebt möglicherweise die Notwendigkeit, kleinere Dateneinheiten über den Prozessor-Datenbus zu übertragen, um eine oder mehrere Operationen auszuführen, jeweils ein Datenelement auf einmal.
  • Andere Ausführungsformen einer Ausführungseinheit 108 können auch in Mikrocontrollern, integrierten Prozessoren, Grafikgeräten, DSPs und weiteren Typen von Logikschaltungen verwendet werden. System 100 umfasst einen Speicher 120. Speicher 120 weist ein DRAM-Gerät (dynamisches RAM), SRAM-Gerät (statisches RAM), Flash-Speichergerät oder ein anderes Speichergerät auf. Speicher 120 speichert Befehle und/oder Daten, die durch Datensignale repräsentiert sind, die vom Prozessor 102 auszuführen sind.
  • Ein Systemlogik-Chip 116 ist an den Prozessorbus 110 und den Speicher 120 gekoppelt. Der Systemlogik-Chip 116 ist in der dargestellten Ausführungsform ein Memory Controller Hub (MCH). Der Prozessor 102 kann mit dem MCH 116 über einen Prozessorbus 110 kommunizieren. Der MCH 116 stellt einen Speicherpfad 118 mit hoher Bandbreite für den Speicher 120 zur Befehls- und Datenspeicherung und zur Speicherung von Grafikbefehlen, Daten und Texturen bereit. Der MCH 116 leitet Datensignale zwischen dem Prozessor 102, dem Speicher 120 und anderen Komponenten im System 100 und koppelt (bridge) die Datensignale zwischen Prozessorbus 110, Speicher 120 und der Ein- und Ausgabe (I/O) 122 des Systems. In manchen Ausführungsformen kann der Systemlogik-Chip 116 einen Graphics Port zur Koppelung an einen Grafikcontroller 112 bereitstellen. Der MCH 116 ist über eine Speicherschnittstelle 118 an Speicher 120 gekoppelt. Die Grafikkarte 112 ist an den MCH 116 über einen AGP-Anschluss (Accelerated Graphics Port) gekoppelt.
  • System 100 verwendet einen proprietären Hub Interface Bus 122, um den MCH 116 an den I/O Controller Hub (ICH) 130 zu koppeln. Der ICH 130 stellt über einen lokalen I/O-Bus direkte Verbindungen mit einigen Ein- und Ausgabe-Geräten bereit. Der lokale I/O-Bus ist ein Hochgeschwindigkeits-I/O-Bus zur Verbindung von Peripherigeräten an den Speicher 120, den Chipsatz und den Prozessor 102. Einige Beispiele sind der Audiocontroller, Firmware-Hub (Flash-BIOS) 128, drahtloser Transceiver 126, Datenspeicher 124, Legacy-I/O-Controller, der Benutzereingabe- und Tastaturschnittstellen enthält, ein serieller Erweiterungsanschluss, wie z. B. Universal Serial Bus (USB), und ein Netzwerkcontroller 134. Das Datenspeichergerät 124 kann einen Festplattenlaufwerk, einen Diskettenlaufwerk, ein CD-ROM-Gerät, ein Flash-Speicher-Gerät oder ein anderes Massenspeichergerät umfassen.
  • In einer weiteren Ausführungsform eines Systems kann eine Anweisung gemäß einem Ausführungsbeispiel mit einem System auf einem Chip verwendet werden. Eine Ausführungsform eines System-on-a-Chip umfasst einen Prozessor und einen Speicher. Der Speicher für ein solches System ist ein Flash-Speicher. Der Flash-Speicher kann sich auf demselben Die wie der Prozessor und andere Systemkomponenten befinden. Außerdem können sich auch andere logische Blöcke, wie z. B. ein Speichercontroller oder Grafikcontroller auf einem System-on-a-Chip befinden.
  • 2 ist ein Blockschaltbild der Mikroarchitektur für einen Prozessor 200, der Logikschaltungen zum Ausführen von Anweisungen gemäß einem Ausführungsbeispiel der vorliegenden Erfindung umfasst. In manchen Ausführungsformen kann eine Anweisung gemäß einer Ausführungsform für Operationen an Datenelementen mit Byte-, Wort-, Doppelwort-, Quadwortgröße usw. sowie an Datentypen wie einfach und doppelt genaue Ganzzahlen (Single und Double Precision Integers) und Datentypen in Gleitpunktdarstellung implementiert werden. In einer Ausführungsform ist das In-Order-Front-End 201 der Teil des Prozessors 200, das die auszuführenden Befehle holt und sie auf weitere Verwendung in der Prozessor-Pipeline vorbereitet. Das Front-End 201 kann mehrere Einheiten umfassen. In einer Ausführungsform holt der Befehls-Prefetcher 226 Befehle aus dem Speicher und gibt sie an den Befehlsdecoder 228 weiter, der sie seinerseits dekodiert und interpretiert. Zum Beispiel decodiert der Decoder in einem Ausführungsbeispiel eine empfangene Anweisung in eine oder mehrere „Mikroanweisungen” oder „Mikrooperationen” (auch Mikroops oder μops) genannte Operationen, die das Gerät ausführen kann. In anderen Ausführungsformen parst der Decoder den Befehl zu einem Opcode und entsprechenden Daten- und Steuerfeldern, die von der Mikroarchitektur verwendet werden, um Operationen gemäß einer Ausführungsform auszuführen. In einer Ausführungsform holt der Trace-Cache 230 die dekodierten Mikrooperationen und assembliert sie für die Ausführung zu geordneten Programmsequenzen oder Traces in der Mikrobefehls-Warteschlange 234. Wenn der Trace-Cache 230 einen komplexen Befehl antrifft, stellt der Mikrocode-ROM 232 die zum Abschluss der Operation nötigen Mikrooperationen bereit.
  • Manche Befehle werden in einfache Mikrooperationen umgewandelt, während andere mehrere Mikrooperationen benötigen, um die vollständige Operation abzuschließen. In einer Ausführungsform greift der Decoder 228, wenn mehr als vier Mikrooperationen zum Abschließen eines Befehls nötig sind, auf den Mikrocode-ROM 232 zu, um den Befehl auszuführen. Bei einer Ausführungsform kann ein Befehl für eine Abwicklung zu einer kleiner Anzahl von Mikrooperationen an dem Befehlsdecoder 228 dekodiert werden. In einer weiteren Ausführungsform kann ein Befehl in dem Mikrocode-ROM 232 gespeichert werden, falls eine Anzahl von Mikrooperationen zum Bewältigen der Operation nötig ist. Der Trace-Cache 230 bezieht sich auf die Einsprungpunkt-PLA (programmierbare logische Anordnung), um einen richtigen Mikrobefehl-Zeiger aus dem Mikrocode-ROM 232 zum Lesen der Mikrocode-Sequenzen zu bestimmen, um einen oder mehrere Befehle gemäß einer Ausführungsform abzuschließen. Nachdem der Mikrocode-ROM 232 das Einreihen von Mikrooperationen für einen Befehl beendet hat, nimmt das Front-End 201 der Maschine den Abruf von Mikrooperationen aus dem Trace-Cache 230 wieder auf.
  • Die Befehle werden in dem Out-Of-Order-Ausführungssystem (in der OOO-Execution Engine) für die Ausführung vorbereitet. Die OOO-Ausführungslogik weist eine Anzahl von Puffer auf, um den Fluss der Befehle für eine Optimierung der Leistung zu glätten und umzuordnen, während sie durch die Pipeline gehen und für die Ausführung eingeplant werden. Die Allokator-Logik alloziert die Puffer und Ressourcen der Maschine, die jede Mikrooperation benötigt, um ausgeführt zu werden. Die Register-Aliasing-Schaltung ordnet den Einträgen in einer Registerdatei logische Register zu. Der Allokator alloziert außerdem einen Eintrag für jede Mikrooperation in einer der zwei (eine für Speicheroperationen und eine für Nicht-Speicheroperationen) Mikrobefehls-Warteschlangen vor den Befehls-Scheduler: Speicher-Scheduler, dem schnellen Scheduler 202, dem langsamen/allgemeinen Gleitkommazahl-Scheduler 204 und einfachen Gleitkommazahl-Scheduler 206. Die Mikrooperationen-Scheduler 202, 204, 206 bestimmen, wann eine Mikrooperation zum Ausführen bereit ist, und zwar auf der Grundlage der Bereitschaft ihrer abhängigen Eingaberegisteroperandquellen und der Verfügbarkeit der Ausführungsressourcen, die die Mikrooperationen zum Abschließen ihrer Operationen brauchen. Der schnelle Scheduler 202 einer Ausführungsform kann in jeder Takthälfte des Hauptprozessors disponieren, während die anderen Scheduler nur einmal pro Taktzyklus des Hauptprozessors disponieren können. Die Scheduler vermitteln zwischen den Dispatch-Ports, um Mikrooperationen für die Ausführung einzuplanen.
  • Die physischen Registerdateien 208, 210 sind zwischen den Scheduler 202, 204, 206 und den Ausführungseinheiten 212, 214, 216, 218, 220, 222, 224 im Ausführungsblock 211 angeordnet. Es gibt jeweils einen separaten Registerspeicher 208, 210 für Integer- und Gleitkommaoperationen. Jeder Registerspeicher 208, 210 einer Ausführungsform umfasst außerdem ein Bypass-Netzwerk, dass fertige Ergebnisse, die noch nicht in den Registerspeicher geschrieben wurden, an neue abhängige Mikrooperationen umleitet oder weitergibt. Der Integer-Registerspeicher 208 und der Gleitkommaregisterspeicher 210 sind auch in der Lange, Daten aneinander zu übermitteln. Bei einer Ausführungsform ist der Integer-Registerspeicher 208 in zwei getrennte Registerspeicher, einen Registerspeicher für die niederwertigen 32 Datenbits und einen zweiten Registerspeicher für die höherwertigen 32 Datenbits, aufgeteilt. Der Gleitkommaregisterspeicher 210 einer Ausführungsform weist 128 Bit breite Einträge auf, da Gleitkommaoperationen normalerweise Operanden von 64- bis 128-Bit-Breite umfassen.
  • Der Ausführungsblock 211 weist die Ausführungseinheiten 212, 214, 216, 218, 220, 222, 224 auf, in denen die Befehle tatsächlich ausgeführt werden. Dieser Abschnitt weist die Registerspeicher 208, 210 auf, die die Werte von Integer- und Gleitkommazahl-Datenoperanden speichern, die von den Mikrobefehlen ausgeführt werden müssen. Der Prozessor 200 einer Ausführungsform weist eine Anzahl von Ausführungseinheiten auf: Address Generation Unit (AGU) 212, AGU 214, schnelle ALU 216, schnelle ALU 218, langsame ALU 220, Gleitkommazahl-ALU 222, Gleitkommazahl-Verschiebungseinheit 224. Bei einer Ausführungsform führen die Gleitkommazahl-Ausführungsblöcke 222, 224 Gleitkommazahl-, MMX-, SIMD- und SSE- oder andere Operationen aus. Die Gleitkommazahl-ALU 222 einer Ausführungsform weist einen 64-Bit/64-Bit-Gleitkommazahl-Divider auf, um Division, Quadratwurzel, und Rest an Mikrooperationen auszuführen. Bei Ausführungsformen der vorliegenden Erfindung können Befehle, die einen Gleitkommazahl-Wert einschließen, mit der Gleitkommazahl-Hardware bearbeitet werden. In einer Ausführungsform gehen die ALU-Operationen an die Ausführungseinheiten 216, 218 der Hochgeschwindigkeits-ALU. Die schnellen ALUs 216, 218 einer Ausführungsform können schelle Operationen mit einer effektiven Latenz eines halben Taktzyklus ausführen. Bei einer Ausführungsform wandern die komplexesten Integer-Operationen an die langsame ALU 220, da die langsame ALU 220 Integer-Ausführungshardware für Operationen mit einer langen Latenz, wie z. B. Multiplikator, Versetzungen, Flag-Logik, Sprung-Ausführung, umfasst. Load/Store-Speicheroperationen werden durch die AGUs 212, 214 ausgeführt. Bei einer Ausführungsform sind die Integer-ALUs 216, 218, 220 im Zusammenhang mit der Ausführung von Integer-Operationen an 64-Bit-Datenoperanden beschrieben. In alternativen Ausführungsformen können die ALUs 216, 218, 220 implementiert werden, um eine Vielfalt von Datenbits, einschließlich 16, 32, 128, 256 usw., zu unterstützen. Gleichermaßen können die Gleitkommazahl-Einheiten 222, 224 implementiert sein, um eine Reihe von Operanden mit verschiedenen Bit-Breiten zu unterstützen. Bei einer Ausführungsform können die Gleitkommazahl-Einheiten 222, 224 an 128 Bit breiten komprimierten Datenoperanden in Verbindung mit SIMD und Multimedia-Befehlen arbeiten.
  • In einer Ausführungsform lasten die Mikrooperationen-Scheduler 202, 204, 206 abhängige Operationen ein, bevor die Hauptoperationslast die Ausführung beendet hat. Da Mikrooperationen in Prozessor 200 spekulativ eingeplant und ausgeführt werden, umfasst der Prozessor 200 eine Logik, um die Speicher-Misses zu behandeln. Bei einem Fehlversuch der Datenlast im Daten-Cache können sich abhängige Operationen im Fluss der Pipeline befinden, die den Scheduler mit temporär falschen Daten verlassen haben. Ein Wiederholungsmechanismus verfolgt und führt erneut Befehle aus, die inkorrekte Daten verwenden. Die abhängigen Operationen sollen wiederholt werden und die unabhängigen Operationen dürfen abschließen. Die Scheduler und der Wiederholungsmechanismus einer Ausführungsform eines Prozessors sind außerdem entworfen, um Befehlssequenzen für Text-String-Vergleichsoperationen abzufangen.
  • Der Begriff ”Register” kann sich auf die Speicherstellen des On-Board-Prozessors beziehen, die als Teile der Befehle zur Identifizierung von Operanden verwendet werden. Mit anderen Worten können es Register sein, die von außerhalb des Prozessor verwendbar sind (aus der Perspektive eines Programmierers). Jedoch sollen die Register einer Ausführungsform nicht in ihrer Bedeutung auf eine bestimmte Art Schaltung beschränkt sein. Vielmehr ist ein Register einer Ausführungsform in der Lage, Daten zu speichern und bereitzustellen, sowie die hier beschriebenen Funktionen auszuführen. Die hierin beschriebenen Register können unter Verwendung einer beliebigen Anzahl an verschiedenen Techniken wie dedizierte physische Register, dynamisch zugewiesene physische Register mit Register-Aliasing, Kombinationen von dedizierten und dynamisch zugewiesenen Registern usw. durch Schaltungen implementiert sein.
  • In einer Ausführungsform speichern Integer-Register 32-Bit-Integer-Daten. Ein Registerspeicher einer Ausführungsform umfasst außerdem acht Multimedia-SIMD-Register für komprimierte Daten. Bei der nachstehenden Erörterungen werden die Register als Datenregister verstanden, die aufgebaut sind, um komprimierte Daten zu fassen, wie z. B. 64 Bit breite MMX-Register (auch auf Englisch in einigen Fällen als „mm”-Register bezeichnet) in Mikroprozessoren, die mit der MMXTM-Technologie von Intel Corporation aus Santa Clara, Kalifornien bereitgestellt sind. Diese MMX-Register, die sowohl in Integer- als auch Gleitkommazahl-Formen erhältlich sind, können mit komprimierten Datenelementen, die SIMD- und SSE-Befehle begleiten, arbeiten. Gleichermaßen können auch 128 Bit breite XMM-Register im Zusammenhang mit der SSE2-, SSE3-, SSE4-Technologie oder höher (allgemein als „SSEx” bezeichnet) verwendet werden, um solche komprimierten Datenoperanden zu fassen. In einer Ausführungsform brauchen die Register beim Speichern von komprimierten Daten und Integer-Daten nicht zwischen den zwei Datentypen zu unterscheiden. In einer Ausführungsform sind Integer und Gleitkommazahlen entweder in demselben Registerspeicher oder in verschiedenen Registerspeichern enthalten. Außerdem können in einer Ausführungsform Gleitkommazahl- und Integer-Daten in verschiedenen Registern oder denselben Registern gespeichert sein.
  • 3a3b zeigen schematisch Elemente einer Prozessor-Mikroarchitektur gemäß einem oder mehreren Aspekten der vorliegenden Offenbarung. In 3a umfasst eine Prozessor-Pipeline 400 eine Fetch-Stufe (Befehlsholestufe) 402, eine Längen-Dekodierstufe 404, eine Dekodierstufe 406, eine Zuweisungsstufe (Allozierungsstufe) 408, eine Umbenennungsstufe 410, eine Scheduling-Stufe 412 (auch als Dispatch oder Issue bekannt), eine Registerlese-/Speicherlesestufe 414, eine Ausführungsstufe 416, eine Rückschreib-/Speicherschreibstufe 418, eine Ausnahmenbearbeitungsstufe 422 und eine Festschreibstufe (commit) 424.
  • In 3b kennzeichnen die Pfeile eine Kopplung zwischen zwei oder mehreren Einheiten und die Richtung des Pfeils gibt eine Richtung des Datenflusses zwischen diesen Einheiten an. 3b zeigt Prozessorkern 490, der eine Front-End-Einheit 430 umfasst, die an eine Execution Engine-Einheit 450 gekoppelt ist, und beide sind an eine Speicher-Einheit 470 gekoppelt.
  • Der Kern 490 kann ein RISC-Kern (Reduced Instruction Set Computer), ein CISC-Kern (Complex Instruction Set Computer), ein VLIW-Kern (Very Long Instruction Word), oder ein Kombinations- oder alternativer Kerntyp sein. Als noch eine weitere Möglichkeit kann der Kern 490 ein Zweckkern sein, wie zum Beispiel ein Netzwerk- oder Kommunikationskern, Compression Engine, Grafikkern oder dergleichen.
  • Die Front-End-Einheit 430 umfasst eine Sprungvorhersage-Einheit (Branch Prediction Unit) 432, die an eine Befehls-Cache-Einheit 434 gekoppelt ist, die an einen Befehls-Übersetzungspuffer (TLB) 436 gekoppelt ist, der an eine Befehlsholeeinheit 438 gekoppelt ist, die an eine Dekodiereinheit 440 gekoppelt ist. Die Dekodiereinheit oder der Decoder kann Befehle dekodieren und generiert als Ausgabe eine oder mehrere Mikrooperationen, Mikrocode-Einsprungpunkte, Mikrobefehle, andere Befehle oder andere Steuersignale, die eine dekodierte Form der ursprünglichen Befehle darstellen oder diese anderweit widerspiegeln oder davon abgeleitet sind. Der Decoder kann mit verschiedenen Mechanismen implementiert werden. Beispiele für geeignete Mechanismen umfassen (sind aber nicht beschränkt auf): Nachschlagetabellen, Hardware-Implementierungen, programmierbare logische Anordnungen (PLAs), Mikrocode-Festwertspeicher (ROMs) usw. Die Befehls-Cache-Einheit 434 ist ferner an eine L2-Cache-Einheit 476 in der Speichereinheit 470 gekoppelt. Die Dekodiereinheit 440 ist an eine Umbenennungs-/Allozierungseinheit 452 in der Execution Engine-Einheit 450 gekoppelt.
  • Die Execution Engine-Einheit 450 umfasst die Umbenennungs-/Allozierungseinheit 452, die an eine Rückordnungseinheit (Retirement) 454 und einen Satz von einem oder mehreren Scheduler-Einheit(en) 456 gekoppelt ist. Die Scheduler-Einheit(en) 456 repräsentiert eine beliebige Anzahl von verschiedenen Schedulern, darunter Reservation Stations und Hauptbefehlsfenster usw. Die Scheduler-Einheit(en) 456 ist an die physikalische Registerspeicher-Einheit(en) 458 gekoppelt. Jede der physikalischen Registerspeicher-Einheit(en) 458 repräsentiert einen oder mehrere physikalische Registerspeicher, von denen verschiedene einen oder mehrere verschiedene Datentypen speichern, wie z. B. skalare Integer, skalare Gleitkommazahlen, komprimierte Integer, komprimierte Gleitkommazahlen, Vektor-Integer, Vektor-Gleitkommazahlen usw., Status (z. B. einen Befehlszeiger, d. h. die Adresse des nächsten auszuführenden Befehls), usw. Die physikalische Registerspeichereinheit(en) 458 überlappt mit der Rückordnungsreinheit 454, um die verschiedenen Weisen darzustellen, auf die Register-Aliasing und Out-Of-Order-Ausführung implementiert werden können (z. B. unter Verwendung eines Re-Order Buffers und eines Rückordnungsregisterspeichers, unter Verwendung eines Future-Files, eines Verlaufspuffers und eines Rückordnungsregistersepichers, unter Verwendung einer Registerkarte und eines Registerpools, usw.). Im Allgemeinen sind die Architektur-Register von der Außenseite des Prozessors oder aus der Perspektive eines Programmierers sichtbar. Die Register sind auf keinen bekannten, konkreten Schaltungstyp beschränkt. Verschiedene Registertypen sind geeignet, solange sie in der Lage sind, Daten zu speichern und bereitzustellen, wie hierin beschrieben. Beispiele für geeignete Register umfassen, sind jedoch nicht beschränkt auf, dedizierte physikalische Register, dynamisch allozierte physikalische Register, die Register Aliasing verwenden, Kombinationen von dedizierten und dynamisch allozierten physikalischen Registern usw. Die Rückordnungseinheit 454 und die physikalische Registerspeicher-Einheit(en) 458 sind an den (die) Ausführungscluster 460 gekoppelt. Der Ausführungscluster 460 umfasst einen Satz von einer oder mehreren Ausführungseinheiten 162 und einen Satz von einer oder mehreren Speicherzugriffseinheiten 464. Die Ausführungseinheiten 462 können verschiedene Operationen (z. B. Versetzungen, Addition, Subtraktion, Multiplikation) und an verschiedenen Datentypen (z. B. skalare Gleitkommazahlen, komprimierte Integer, komprimierte Gleitkommazahlen, Vektor-Integer, Vektor-Gleitkommazahlen) ausführen. Obwohl manche Ausführungsformen eine Anzahl von Ausführungsfeinheiten umfassen können, die bestimmten Funktionen oder Funktionssätzen gewidmet sind, können andere Ausführungsformen eine Ausführungseinheit oder mehrere Ausführungseinheiten umfassen, welche alle Funktionen ausführen. Die Scheduler-Einheit(en) 456, die physikalische Registerspeichereinheit(en) 458 und der Ausführungscluster 460 sind als möglicherweise eine Mehrzahl gezeigt, weil bestimmte Ausführungsformen separate Pipelines für bestimmte Typen von Daten/Operationen bilden (z. B. eine Pipeline für skalare Integer, eine Pipeline für skalare Gleitkommazahlen/komprimierte Gleitkommazahlen/Vektor-Integer/Vektor-Gleitkommazahlen, und/oder eine Speicherzugriff-Pipeline, von denen jede ihre eigene Scheduler-Einheit, physikalische Registerspeichereinheit und/oder einen Ausführungscluster aufweist, und im Falle einer separaten Speicherzugriff-Pipeline werden bestimmte Ausführungsformen implementiert, bei denen der Ausführungscluster dieser Pipeline die Speicherzugriffseinheit(en) 464 umfasst). Es versteht sich außerdem, dass bei Verwendung von separaten Pipelines eine oder mehrere von diesen Pipelines Out-Of-Order-Issue/Ausführung und der Rest In-Order sein können.
  • Der Satz von Speicherzugriffseinheiten 464 ist an die Speichereinheit 470 gekoppelt, die eine Daten-TLB-Einheit 474 umfasst, die an eine Daten-Cache-Einheit 474 gekoppelt ist, die an eine L2-Cache-Einheit 476 gekoppelt ist. In einem Ausführungsbeispiel kann die Speicherzugriffseinheit 464 eine Last-Einheit, eine Speicheradresseneinheit, eine Speicherdateneinheit umfassen, von denen jede an die Daten-TLB-Einheit 472 in der Speichereinheit 470 gekoppelt ist. Die L2-Cache-Einheit 476 ist an eine oder mehrere andere Cache-Level und möglicherweise an einen Hauptspeicher gekoppelt.
  • Beispielsweise kann die Kernarchitektur der Out-Of-Order-Issue/Ausführung die Pipeline 400 folgendermaßen implementieren: Der Befehlsholer 438 führt die Befehlshole- und die Längendekodierstufen 402 und 404 aus; die Dekodiereinheit 440 führt die Dekodierstufe 406 aus; die Umbenennungs/Allozierungseinheit 452 führt die Allozierungsstufe 408 und die Umbenennungsstufe 410 aus; die Scheduler-Einheit(en) 456 führt die Scheduling-Stufe 412 aus; die physikalische Registerspeichereingeit(en) 458 und die Speichereinheit 470 führen die Registerlese-/Speicherlesestufe 414 aus; der Ausführungscluster 460 führt die Ausführungsstufe 416 aus; die Speichereinheit 470 und die physikalische Registerspeichereinheit(en) 458 führen die Rückschreib-/Speicherschreibstufe 418 aus; verschiedene Einheiten können in die Ausnahmenbehandlungsstufe 422 involviert sein; und die Rückordnungseinheit 454 und die physikalische Registerspeichereinheit(en) 458 führen die Festschreibstufe (commit) 424 aus.
  • Der Kern 490 kann einen oder mehrere Befehlssätze unterstützen (z. B. den x86-Befehlssatz (mit einigen Erweiterungen, die bei neueren Versionen hinzugefügt wurden); den MIPS-Befehlssatz von MIPS Technologies aus Sunnyvale, Kalifornien; den ARM-Befehlssatz (mit zusätzlichen Erweiterungen, wie z. B. NEON) von ARM Holdings aus Sunnyvale, Kalifornien).
  • Bei bestimmten Implementierungen kann der Kern Multithreading (Nebenläufigkeit; Ausführung von zwei oder mehreren parallelen Sätzen von Operationen oder Threads) unterstützen und kann dies in vielerlei Weise tun, darunter als softwareseitiges (time sliced) Multithreading, hardwareseitiges (simultaneous) Multithreading (bei dem ein einzelner Prozessorkern einen logischen Kern für jeden der Threads, die vom physikalischen Kern simultan im Multithreading bearbeitet werden, bereitstellt), oder als eine Kombination davon (z. B. Zeitscheiben-Fetching und Dekodierung und anschließendes hardwareseitiges (simultaneous) Multithreading, wie z. B. bei der Intel® Hyperthreading-Technologie).
  • Während Register-Aliasing im Kontext einer Out-of-Order Execution (Ausführung in anderer Reihenfolge) beschrieben wird, sollte klar sein, dass Register-Aliasing auch in einer In-Order-Architektur verwendet werden kann. Während das dargestellte Ausführungsbeispiel des Prozessors auch eine separate Anweisung und Daten-Cache-Einheiten 434/474 und eine gemeinsam genutzte L2-Cache-Einheit 476 umfasst, können andere Ausführungsformen einen einzelnen internen Cache für Anweisungen und Daten, wie zum Beispiel einen internen Level 1(L1)-Cache oder mehrere Ebenen an internem Cache-Speicher, aufweisen. In manchen Ausführungsformen kann das System eine Kombination von einem internen Cache und einem externen Cache, der extern in Bezug auf den Kern und/oder den Prozessor ist, umfassen. Alternativ können alle Caches extern in Bezug auf den Kern und/oder den Prozessor sein.
  • 4 zeigt ein Blockschaltbild eines Beispielprozessors 102 und weiterer Komponenten des Computersystems 100 gemäß einem oder mehreren Aspekten der vorliegenden Offenbarung. Mit Bezug auf 4 kann der Prozessorkern 490 eine Einholeinheit 438 zum Einholen von Anweisungen zur Ausführung durch den Kern 490 umfassen. Die Anweisungen können von einem oder mehreren Speichergeräten wie dem Speicher 115 und/oder anderen Speichergeräten wie dem Datenspeichergerät 124 eingeholt werden. Der Prozessorkern 490 kann weiterhin eine Decodiereinheit 440 zum Decodieren der eingeholten Anweisung in eine oder mehrere Mikrooperationen (μops) umfassen. Der Prozessorkern 490 kann ferner eine Schedule-Einheit 446 zum Speichern einer von der Decodiereinheit 440 ermpfangenen Anweisung, bis die Anweisung ausgabebereit ist, umfassen, z. B. bis Operandenwerte für die decodierte Anweisung verfügbar werden. Die Schedule-Einheit 446 kann Anweisungen für eine Ausführungseinheit 450 planen und/oder an diese ausgeben.
  • Die Ausführungseinheit 450 kann eine oder mehrere Arithmetikschaltungen (ALUs), eine oder mehrere Ganzzahl-Ausführungseinheiten, eine oder mehrere Gleitpunkt-Ausführungseinheiten und/oder weitere Ausführungseinheiten umfassen. Bei bestimmten Implementierungen kann die Ausführungseinheit 450 Anweisungen außerhalb der Reihenfolge (Out of Order; OOO) ausführen. Der Prozessorkern 490 kann weiterhin eine Rückordnungseinheit 454 zum Rückordnen ausgeführter Anweisungen nach deren Aufnahme umfassen.
  • Der Prozessorkern 490 kann ferner eine RAT 421, eine PRF 423, eine MIT 425 und Logik 150 zum Implementieren von Datenbearbeitungsfunktionen, wie hierin im Folgenden genauer beschrieben, umfassen. Obwohl die Logik 150 in 4 in einem Kern 490 dargestellt ist, kann die Logik 150 an anderer Stelle im Computersystem 100 vorgesehen sein. Weiterhin kann die Logik 150 und/oder einige ihrer Komponenten von einer Mehrzahl von Prozessorkernen gemeinsam genutzt werden.
  • Wie hierin oben erwähnt, kann eine Übertragungsanweisung durch Kopieren des Zeigers des Quellregisters in den Zeiger des Zielregisters in der RAT eliminiert werden. 5 zeigt eine schematische Darstellung der Ausführung der Anweisung MOV DX, AX durch Register-Aliasing: der Inhalt des RAT-Eintrags für das logische Register AX, das ein Zeiger zu einem Eintrag X in der PRF ist, wird in den RAT-Eintrag für das logische Register DX kopiert. Wie in 5 dargestellt, kann die PRF in bestimmten Implementierungen durch eine Anordnung von physischen Registerwerten und die RAT durch eine Anordnung von Zeigern zur PRF definiert werden.
  • Bevor eine Anweisung zur Ausführungseinheit gesendet wird, kann ein PRF-Eintrag für den Empfang des Ergebnisses der Anweisung zugewiesen werden. Da mehrere RAT-Einträge auf den gleichen PRF-Eintrag zeigen können, kann ein PRF-Eintrag als verfügbar für die Verwendung durch nachfolgende Anweisungen markiert werden, wenn die mehreren RAT-Einträge durch eine oder mehrere Anweisungen, die danach rückgeordnet werden, überschrieben wurden. Eine MIT kann zur Verfolgung von Verweisen auf PRF-Einträge verwendet werden, um zu ermitteln, wann ein PRF-Eintrag für die Verwendung durch eine neue Anweisung freigegeben werden darf.
  • Die MIT kann durch eine zweidimensionale Anordnung (z. B. eine Bitmatrix) mit einer Mehrzahl von Zeilen, die verfolgte Register darstellen, definiert werden. Jede MIT-Spalte kann einen Übertragungseliminierungssatz darstellen, in dem ein gesetztes Bit angibt, dass das entsprechende logische Register an dem Übertragungseliminierungssatz teilnimmt.
  • Wenn eine Übertragungsoperation eliminiert wird, werden dem logischen Quell- und Zielregister entsprechende Bits gesetzt, die angeben, dass diese logischen Register Teil des Übertragungseliminierungssatzes sind, wie dies schematisch durch 6a dargestellt wird. Wenn die Quelle der Übertragungsanweisung ein logisches Register ist, das bereits an einem Übertragungseliminierungssatz teilnimmt, wird das logische Register zu dem Satz hinzugefügt, wie schematisch durch 6b dargestellt. Wenn ein logisches Register von einer anderen Anweisung überschrieben wird, kann das für dieses Register gesetzte Bit in der MIT gelöscht werden, wodurch das logische Register vom Übertragungseliminierungssatz dissoziiert wird, wie schematisch durch 6c dargestellt. Das entsprechende physische Register, das kein Teil eines Übertragungseliminierungssatzes oder das einzige Element eines Übertragungseliminierungssatzes ist, kann von einer neuen Anweisung wiederverwendet werden, sobald alle Verweise auf das physische Register durch eine oder mehrere Anweisungen überschrieben und diese Anweisungen rückgeordnet wurden.
  • In bestimmten Implementierungen wird die Verfolgung des Übertragungseliminierungssatzes von μop-Zuweisung zu μop-Zuweisung vorgenommen und ist nicht von der μop-Rückordnung abhängig. Das heißt, dass bei Zuweisung einer Übertragungs-μop ein Übertragungseliminierungssatz erstellt wird. Weiterhin wird bei Zuweisung einer μop, die ein logisches Register überschreibt, das logische Register aus dem bestehenden Übertragungseliminierungssatz entfernt. Bei Zuweisung einer μop, die das letzte logische Register in einem Übertragungseliminierungssatz überschreibt, wird der PRF-Eintrag als befreit markiert, wenn die überschreibende μop danach rückgeordnet wird. Die Befreiung des PRF-Eintrags hängt von der μop-Rückordnung der letzten überschreibenden μop ab. Die Logik für die Ausführung der Befreiung des PRF-Eintrags erfolgt außerhalb der MIT. Jedoch kann der Übertragungseliminierungssatz, wie er von der MIT implementiert wird, sofort wieder angefordert und zur Verfolgung eines anderen Übertragungseliminierungssatzes verwendet werden, nachdem die letzte überschreibende μop zuweist.
  • Da ein Übertragungseliminierungssatz von einer MIT-Spalte bereitgestellt wird, können zum Verfolgen aller möglichen Kombinationen von Übertragungseliminierungen in N logischen Registern N/2 MIT-Spalten notwendig sein. Wenn die MIT weniger als N/2 Übertragungseliminierungssätze hat und alle verwendet werden, kann die nächste Übertragungsanweisung als normale Anweisung, die einen neuen PRF-Eintrag in Anspruch nimmt, an die Ausführungseinheiten gesendet werden. In beiden Fällen signalisiert die MIT der RAT, ob die Anweisung einen PRF-Eintrag in Anspruch nehmen muss.
  • Bei einem superskalaren M-Wide-Issue-Prozessor können bis zu M Anweisungen pro Taktzyklus Datenkopieranweisungen sein, und es ist möglich, dass die MIT nur über genügend freie Sätze zum Eliminieren einer Teilmenge der Ausgabeanweisungen verfügt. Um die Ausführungseffizienz weiter zu verbessern, kann ein Prozessor davon ausgehen, dass jede Übertragungsanweisung einen neuen Übertragungseliminierungssatz erfordern wird, statt zu bestimmen, ob die Übertragungsanweisung für einen bereits vorhandenen oder einen neuen Übertragungseliminierungssatz relevant ist. Daher kann der Prozessor die Anzahl der verfügbaren Übertragungseliminierungssätze mit der Anzahl an Übertragungsanweisungen vergleichen und die ersten K Übertragungsanweisungen für die Übertragungseliminierung auswählen, während er die anderen Übertragungsanweisungen an die Ausführungseinheit sendet.
  • 7a7c sind schematische Darstellungen der MIT-Zuweisungs- und Reservierungslogik gemäß einem oder mehreren Aspekten der vorliegenden Offenbarung. 7a zeigt den Anfangszustand (Zyklus N) der MIT: Spalten 1–3 sind frei zur Zuweisung. Danach werden die Spalten 1–2 für die Ausführung von zwei Übertragungsoperationen (MOV AX, CX und MOV R9, R8) reserviert. Beim Zyklus (N + 1), wie schematisch durch 7b dargestellt, werden in der MIT Reserve-Bits gesetzt und FreeBits gelöscht, so dass die oben erwähnte Zuweisung der Spalten 1–2 widergespiegelt wird. Danach bieten sich der MIT zwei weitere Möglichkeiten der Übertragungseliminierung, und so wird die MIT-Spalte 3 für die Ausführung einer dritten Übertragungsoperation (MOV BX, DX) reserviert und wird eine vierte Übertragungsoperation zu den Ausführungseinheiten gesendet, da in der MIT (MOV AX, R8) keine Übertragungseliminierungssätze verfügbar sind. Beim Zyklus (N + 2), wie schematisch durch 7c dargestellt, werden Reservierungen vom Zyklus N storniert und daher die entsprechenden Reserve-Bits gelöscht. Die MIT wird mit Ergebnissen aus den Anweisungen von Zyklus N aktualisiert, die in Spalte 0 übergehen und in Spalte 2 einen neuen Satz erstellen. Empty-Bits werden angesichts der MIT-Aktualisierung neu berechnet, und Free-Bits werden durch Subtrahieren des Reserve-Bit vom Empty-Bit für die betroffenen Spalten aktualisiert. Daher kann es bei den zu aktualisierenden MIT-Sätzen mit neuen Übertragungseliminierungsdaten zu einer Latenz von zwei Taktzyklen kommen.
  • Wenn in einem Übertragungseliminierungssatz nur eine Registerzuordnung verbleibt, sodass der entsprechende PRF-Eintrag nur über einen verbleibenden Verweis verfügt, kann der von einer MIT-Spalte bereitgestellte Übertragungseliminierungssatz dennoch nicht für die Zuweisung zu einer anderen Übertragungsanweisung verfügbar sein. Ein solcher Satz kann als „verwaister” Satz bezeichnet werden, weil er nur eine Registerzuordnung hat. Ohne Maßnahmen zum Löschen eines verwaisten Satzes kann dieser nicht verfügbar bleiben, bis das letzte logische Register überschrieben wurde, womit sich die Anzahl an möglichen Übertragungseliminierungen verringert.
  • Bei bestimmten Implementierungen kann der Prozessor verwaiste Übertragungseliminierungssätze als Teil der MIT-Zuweisungssuche erfassen und löschen. Wenn ein Übertragungseliminierungssatz als verwaister Satz erkannt wird, kann der Prozessor ein Löschsignal für den nächsten Zyklus auslösen, das den Satz für eine Zuweisung frei macht. Der verwaiste Satz kann so in drei oder mehr Zyklen verfügbar werden, darunter zwei Zyklen für das Schreiben der ersten Zuweisung und einen Zyklus zum Löschen des verwaisten Satzes, wie dies hierin im Folgenden genauer beschrieben wird.
  • 8a8c zeigen schematische Darstellungen der Funktionsweise der MIT-Rückgewinnungslogik für verwaiste Daten gemäß einem oder mehreren Aspekten der vorliegenden Offenbarung. 8a ist eine schematische Darstellung des Anfangszustands (der als Zyklus N bezeichnet wird) einer MIT-Spalte, bevor eine Übertragungsanweisung und eine nachfolgende Anweisung, die den neu zugewiesenen Übertragungseliminierungssatz teilweise überschreibt, ausgeführt werden. 8b ist eine schematische Darstellung des Zustands der MIT-Spalte nach der Aktualisierung in Zyklus N + 2. Die MIT-Spalte ist in diesem Stadium ein verwaister Satz und kann als solcher erkannt werden. 8c ist eine schematische Darstellung des Zustands der MIT-Spalte nach der Rückgewinnung des verwaisten Satzes. Es ist jedoch zu beachten, dass es in Zyklus N + 3 nicht zu einer Rückgewinnung des verwaisten Satzes kommt, wenn eine in Zyklus N + 1 übertragungseliminierte Anweisung das Register AX als Quelle verwendet hat, denn der Übertragungseliminierungssatz würde mit den Ergebnissen der Anweisung aus Zyklus N + 1 aktualisiert.
  • Bei bestimmten Implementierungen kann die Logik 150 Abhängigkeiten für zwei oder mehr Datenbearbeitungsoperationen vorausberechnen und dann eine einzige MIT-Aktualisierung ausführen, die die Ergebnisse von zwei oder mehr Operationen widerspiegelt und so sowohl den Zeitaufwand als auch Stromverbrauchsaspekte von Übertragungseliminerungsoperationen verbessern. Die MIT-Aktualisierung kann die Erstellung eines neuen Übertragungseliminierungssatzes, das Verändern eines Übertragungseliminierungssatzes oder die Rückgewinnung eines verwaisten Übertragungseliminierungssatzes umfassen.
  • Im Unterschied zu einer serialisierten Update-Schaltung aktualisiert die Logik 150 die MIT nur einmal, um die Ergebnisse von zwei oder mehr Datenbarbeitungsoperationen widerzuspiegeln. MIT-Zwischenstadien, die bei einer serialisierten Update-Sequenz von entsprechenden MIT-Aktualisierungen wiedergegeben würden, werden von der Logik 150 nicht ausgeführt. Wenn zum Beispiel ein Register zu einem Übertragungseliminierungssatz hinzugefügt und von der nächsten Operation überschrieben wird, spiegelt die MIT das Zwischenstadium, in dem der Übertragungseliminierungssatz das Register enthält, nicht wider.
  • Um Abhängigkeiten für zwei oder mehr Datenbearbeitungsoperationen vorauszuberechnen, kann die Logik 150 verschiedene Arten von Übertragungsoperationen erfassen, darunter unter anderem: eine Übertragungsoperation mit einem Zielregister, das als Quelle einer nachfolgenden Übertragungsoperation in der gleichen Verarbeitungszeile verwendet wird, wie schematisch durch 9a9c dargestellt; zwei Übertragungsoperationen in der gleichen Zeile, die das gleiche Register als Quelle verwenden, wie dies schematisch durch 10a10c dargestellt wird; und eine Übertragungsoperation mit einem Zielregister, das mit einer Quelle einer nachfolgenden Übertragungsoperation mit einem dazwischen liegenden Schreibzugriff in das Ziel-/Quellregister übereinstimmt, wie dies schematisch durch 11a11c dargestellt wird.
  • Um die genannten Kombinationen erkennen zu können, kann die Logik 150 Quellen und Ziele von mehreren Anweisungen vergleichen, feststellen, ob Übertragungsanweisungen für eine Übertragungseliminierung ausgewählt wurden, feststellen, ob die Quelle einer Übertragungseliminierungsoperation in einem bereits vorhandenen Übertragungseliminierungssatz vorliegt, und feststellen, ob logische Register, die an neuen oder vorhandenen Übertragungseliminierungssätzen beteiligt sind, nachfolgend überschrieben werden. Angesichts der ermittelten MIT-Spaltenzuweisungsdaten kann die Logik 150 neue, in die betroffenen MIT-Spalten zu schreibende Daten generieren, neue oder vorhandene Daten als mit den einzelnen Anweisungen assoziierte Aktualisierungsdaten auswählen, mit den oben erwähnten Quell- und Zielvergleichen Daten von einer Anweisung zu einer anderen umleiten und die MIT aktualisieren.
  • Wie bereits angemerkt, kann die Übertragungseliminierungslogik in Hardware, Software oder einer Kombination davon implementiert sein. Eine die Logik 150 implementierende Beispielschaltung 800 ist in 12 schematisch dargestellt.
  • Die Schaltung 800 kann eine bitweise Logik 802 aufweisen, die einem bestimmten logischen Register in einer bestimmten MIT-Spalte (Übertragungseliminierungssatz) entspricht. Die Schaltung 800 kann weiterhin eine spaltenweise Logik 804 aufweisen, die einer bestimmten MIT-Spalte (Übertragungseliminierungssatz) entspricht.
  • Die Schaltung 800 kann mehrere Eingangssignale empfangen, darunter das PreviousData-Signal 805, das den vorherigen Zustand der MIT für die einzelnen Matrixbits wiedergibt; das SourceMatch-Signal 810 pro Tabellenzeile, das die einzelnen Übertragungseliminierungsanweisungen in der Verarbeitungszeile mit einer der Tabellenzeile entsprechenden logischen Quelle kennzeichnet; das SelectorCopy-Signal 815 pro Verarbeitungszeilenanweisung, das erkennt, ob Daten von einer MIT-Zeile in eine andere kopiert werden sollen (von logischer Quellzeile der Übertragungseliminierungsanweisung zur logischen Zielzeile der Übertragungseliminierungsanweisung), und damit das logische Zielregister von einer Übertragungseliminierungsanweisung zu einem zuvor vorhandenen Übertragungseliminierungssatz hinzufügt (und es auch von allen anderen Übertragungseliminierungssätzen dissoziiert); und das AllocationData-Signal 820, das neue Daten pro Verarbeitungszeilenanweisung enthält, die in eine MIT-Zeile geschrieben werden sollen. Diese Daten können entweder Null sein, um das von der MIT-Zeile erkannte logische Register aus allen Übertragungseliminierungssätzen zu löschen, oder es können Daten enthalten sein, mit denen das logische Register einem Übertragungseliminierungssatz zugewiesen wird. Die Schaltung 800 kann die genannten Signale zu einem neuen MIT-Daten-Ausgangssignal 830 verarbeiten.
  • Das CopyData-Signal 832 kann durch Kennzeichnen der vorhandenen MIT-Daten mit dem SourceMatch-Signal generiert werden, um Daten aus einer Zeile in der MIT auszuwählen, die ein als Quelle einer Übertragungsanweisung fungierendes logisches Register darstellt.
  • Der vom SelectorCopy-Signal 815 gesteuerte Copy/Set-Multiplexer 840 kann ein CopyData-Signal oder ein AllocData-Signal auswählen. SelectorCopy gibt an, dass Daten von einer die Quelle einer Übertragungsanweisung darstellenden MIT-Zeile in eine andere, das Ziel einer Übertragungsanweisung darstellende Zeile geschrieben werden sollten, wodurch das Zielregister zum vorhandenen Übertragungseliminierungssatz hinzugefügt wird. Das SelectorCopy-Signal wird gesetzt, wenn die Logik 150 feststellt, dass die Quelle einer Übertragungseliminierungsanweisung bereits an einem übertragungseliminierten Satz beteiligt ist und jenes logische Register nicht von einer vorherigen Anweisung in der Verarbeitungszeile überschrieben wurde. Die Beteiligung an einem übertragungseliminierten Satz wird durch Kennzeichnen einer Zeile aus der MIT mit dem SourceMatch-Signal 810 und einer Prüfung, ob in dieser Zeile Bits gesetzt sind, bestimmt.
  • Die Steuerung für den Inline Bypass Multiplexer 835 kann Abhängigkeiten innerhalb der Ausführungszeile berechnen, z. B. das Ziel einer ersten Übertragungsanweisung mit der Quelle einer zweiten Übertragungsanweisung vergleichen. Die Daten für eine vorherige Anweisung können zu einer späteren Anweisung in 835 umgeleitet werden, wenn eine Abhängigkeit erkannt wird. Das Ausgangssignal des Inline Bypass Multiplexers 835 kann in den Eingang des Update Data Multiplexers 845 geleitet werden. Eine weitere Eingabe des Update Data Multiplexers 845 kann vom PreviousData-Signal 805 bereitgestellt werden, gekennzeichnet durch das ClearOrphan-Signal 850, das angibt, ob in der MIT-Spalte nur ein Bit gesetzt ist. Der vom Signal „Selector Update Data” 825 gesteuerte Update Data Multiplexer 845 kann das Signal „New MIT Data” 850 ausgeben. Das Signal „Selector Update Data” 825 ist nach Priorität codiert, sodass vom letzten Verweis zum logischen Register umgeleitete Daten als Signal „New MIT Data” 850 ausgegeben werden.
  • Die Funktionsweise der Logik 150, wie sie z. B. von Schaltung 800 implementiert wird, wird unter Bezugnahme auf die Beispiele in 911 weiter veranschaulicht. 9a9c stellen schematisch eine Übertragungsoperation mit einem Zielregister, das als Quellregister einer nachfolgenden Übertragungsoperation in der gleichen Verarbeitungszeile verwendet wird, anhand einer beispielhaften Kettenübertragung AX->BX->CX dar. 9a zeigt den Anfangszustand der MIT. 9b stellt die MIT-Zuweisung dar: die Spalten 0 und 1 werden jeweils für μop0 (MOV BX, AX) bzw. μop1 (MOV CX, BX) zugewiesen. Da die Quelle keiner der Operationen ein Element eines vorhandenen Übertragungseliminierungssatzes ist, ist das CopyData-Signal 832 für beide μops 0, und das SelectorCopy-Signal 815 sendet AllocData 820 für beide μops durch Copy/Set-Multiplexer 840 zum Inline Bypass Multiplexer 835. Wie in 9c erkennt die Logik 150, dass das Ziel der ersten Übertragungsoperation (MOV BX, AX) mit der Quelle der zweiten Übertragungsoperation (MOV CX, BX) übereinstimmt. Der Inline Bypass Multiplexer 835 wählt die der ersten Übertragungsoperation entsprechenden Kopier-/Zuweisungsdaten (AllocData[Uop0]) statt die der zweiten Übertragungsoperation entsprechenden Daten (AllocData[Uop1]) zur Zuführung als Eingabedaten zum Update Data Multiplexer 845 aus. Somit sind UpdateData[Uop0] und UpdateData[Uop1] identisch. Da die Ausgaben des Update Data Multiplexers 845 nach Priorität codiert sind, werden die umgeleiteten Daten der letzten auf das logische Register verweisenden Operation die neuen MIT-Daten. Der Update Data Multiplexer 845 wählt die der ersten Übertragungsoperation (UpdateData[Uop0]) entsprechenden Daten als die neuen Daten für AX und entsprechend der zweiten Übertragungsoperation (UpdateData[Uop1]) umgeleitete Daten als die neuen Daten für BX und CX aus, da die zweite Übertragungsoperation die letzte auf diese Register verweisende Operation ist. Wegen des Bypass-Mechanismus werden jedoch die gleichen Daten in alle drei Einträge geschrieben.
  • 10a10c sind eine schematische Darstellung zweier Übertragungsoperationen in einer Zeile, die das gleiche Register als Quelle verwenden, anhand des Beispiels MOV BX, DX; MOV AX, DX. 10a zeigt den Anfangszustand der MIT. 10b stellt die MIT-Zuweisung dar: die Spalten 1 und 2 werden jeweils für μop0 (MOV BX, DX) bzw. μop1 (MOV AX, DX) zugewiesen. Da die Quelle keiner der Operationen ein Element eines vorhandenen Übertragungseliminierungssatzes ist, ist das CopyData-Signal 832 für beide μops 0, und das SelectorCopy-Signal 815 sendet AllocData 820 für beide μops durch Copy/Set-Multiplexer 840 zum Inline Bypass Multiplexer 835. Wie in Fig. In 10c stlelt die Logik 150, ähnlich wie im Beispiel in 9a9c, fest, ob die Kopier- oder Zuweisungsdaten für die erste Übertragungsoperation ausgewählt werden sollen. Für die zweite Übertragungsoperation stellt die Logik 150 fest, dass die Übertragungsoperation die gleiche Quelle wie eine zuvor übertragungseliminierte Operation hat, und daher wählt der Inline Bypass Multiplexer 835 die der ersten Übertragungsoperation entsprechenden Kopier-/Zuweisungsdaten (AllocData[Uop0]) statt die der zweiten Übertragungsoperation entsprechenden Daten (AllocData[Uop1]) zur Zuführung als Eingabedaten zum Update Data Multiplexer 845 aus. Somit sind UpdateData[μop0] und UpdateData[μop1] identisch. Der Update Data Multiplexer 845 wählt die der ersten Übertragungsoperation entsprechenden Daten als die neuen Daten für BX (UpdateData[uop0]) und entsprechend der zweiten Übertragungsoperation umgeleitete Daten als die neuen Daten für DX und AX (UpdateData[μop1]) aus, da die zweite Übertragungsoperation die letzte auf diese Register verweisende Operation ist. Wegen des Bypass-Mechanismus werden jedoch die gleichen Daten in alle drei Einträge geschrieben.
  • 11a11c stellen schematisch ein Beispiel für zwei Übertragungsanweisungen in einer Zeile dar, bei denen eine Übertragungskette durch einen dazwischen liegende Schreibvorgang in ein übertragungseliminiertes Register (MOV BX, AX; BX überschreiben; MOV DX, BX) unterbrochen wird. 11a zeigt den Anfangszustand der MIT. 11b stellt die MIT-Zuweisung dar: die MIT-Spalten 1 und 2 werden jeweils für μop0 (MOV BX, AX) bzw. μop2 (MOV DX, BX) zugewiesen. Wie in 11c stellt die Logik 150 ähnlich wie in dem Beispiel in 9a9c und 10a10c fest, ob die Quellen der Übertragungsoperationen bereits Elemente der vorhandenen Übertragungseliminierungssätze sind, und führt dem Copy/Set Multiplexer 840 die entsprechenden Daten zu. In diesem Fall leitet der Copy/Set Multiplexer 840 CopyData[uop0] für μop 0, AllocData[uop1] für μop 1 und AllocData [uop2] für μop 2 durch. Es ist zu beachten, dass AllocData für μop 1 nur Nullen enthält, weil es keinen Übertragungseliminierungssatz erstellt, sondern statt dessen das Register aus jedem Satz löscht. Die Logik 150 stellt fest, dass die Quelle der zweiten Übertragungsoperation mit dem Ziel der ersten Übertragungsoperation übereinstimmt und dass ein dazwischen liegender Schreibvorgang das Register überschreibt.
  • Daher wird der Bypass-Mechanismus beendet und werden die Ergebnisse der drei Übertragungsoperationen getrennt verarbeitet: AX empfängt die Daten der ersten Übertragungsoperation (CopyData[Uop0]-Signal) und BX und DX empfangen die Daten der zweiten Übertragungsoperation (AllocData[Uop2]). Da die Eingaben des Update Data Multiplexers 845 nach Priorität codiert sind, werden die der zweiten Übertragungsoperation entsprechenden Daten die neuen Daten für BX. Somit wurden aufgrund der Bypass-Logikoperation keine Zwischenaktualisierungen von BX vorgenommen, die es in die MIT-Spalte 0 einfügen, aus der Spalte 0 entfernen und dann in Spalte 2 einfügen.
  • In bestimmten Implementierungen kann der Prozessor Übertragungsanweisungen in der Domäne von frei verwendbaren logischen Ganzzahl-Registern (INT) und in der Domäne von Streaming Single Instruction Multiple Data (SIMD) Extensions (SSE) Logikregistern eliminieren. Die SSE-Domäne kann auch die logische Registerdomäne für Advanced Vector Extensions (AVX), eine übergeordnete Domäne von SSE, enthalten. Um die Effizienz der Implementierung weiter zu verbessern, kann der Prozessor unabhängig von den an der Übertragungsoperation beteiligten Registertypen sowohl in SSE- als auch in INT-MITs Übertragungseliminierungssätze reservieren. Trotz einer möglichen Reduzierung der Anzahl an tatsächlich ausgeführten Übertragungseliminierungen kann der oben beschriebene vereinheitlichte Reservierungsmechanismus die Gesamteffizienz der Anweisungsausführung durch den Prozessor weiter verbessern, weil eine SSE-Übertragungsoperation einen INT-Übertragungseliminierungssatz reservieren kann, der andernfalls von einer INT-Anweisung hätte verwendet werden können.
  • Somit verbessert das hierin beschriebene Bypass-MIT-Design die Prozessorleistung durch Verringerung der Verzögerung von MIT-Aktualisierungen infolge von parallelen Berechnungen, durch aktives Löschen von verwaisten Spalten und die Implementierung eines vereinheitlichten Reservierungsmechanismus.
  • 13 zeigt ein Ablaufschema eines beispielhaften Verfahrens für Übertragungseliminierung gemäß einem oder mehreren Aspekten der vorliegenden Offenbarung. Das Verfahren 900 kann von einem Computersystem ausgeführt werden, das Hardware (z. B. Schaltkreise, dedizierte Logik und/oder programmierbare Logik), Software (z. B. auf einem Computersystem ausführbare Anweisungen für eine Hardware-Simulierung) oder eine Kombination davon aufweisen kann. Das Verfahren 900 und/oder dessen einzelne Funktionen, Hilfsprogramme, Unterprogramme oder Operationen können von einem oder mehreren physischen Prozessoren des das Verfahren ausführenden Computersystems ausgeführt werden. Zwei oder mehr Funktionen, Hilfsprogramme, Unterprogramme oder Operationen des Verfahren 900 können parallel oder in einer anderen als der oben beschriebenen Reihenfolge ausgeführt werden. In einem Beispiel kann, wie in Fig. In 13 kann das Verfahren 900 von einem Computersystem 100 aus 1 ausgeführt werden.
  • Mit Bezug auf Fig. In 13 kann ein Prozessor bei Block 910 eine Mehrzahl von Registerwerten in einer PRF speichern.
  • Bei Block 920 kann der Prozessor eine Mehrzahl von Zeigern in einer RAT speichern, wobei jeder RAT-Zeiger auf ein PRF-Element verweist.
  • Bei Block 930 kann der Prozessor eine Mehrzahl von Übertragungseliminierungssätzen in einer MIT speichern. Jeder Übertragungseliminierungssatz kann eine Mehrzahl von Bits aufweisen, die eine Mehrzahl von logischen Registern repräsentieren.
  • Bei Block 940 kann der Prozessor Abhängigkeiten für zwei oder mehr Datenbearbeitungsoperationen vorausberechnen.
  • Bei Block 950 kann der Prozessor Ergebnisse von zwei oder mehr Datenbearbeitungsoperationen durch Aktualisieren der RAT und/oder der MIT widerspiegeln. Wie bereits angemerkt, kann der Prozessor bei bestimmten Implementierungen Abhängigkeiten für zwei oder mehr Datenbearbeitungsoperationen vorausberechnen und dann eine einzige MIT-Aktualisierung ausführen, die die Ergebnisse von zwei oder mehr Operationen widerspiegelt und so sowohl den Zeitaufwand als auch Stromverbrauchsaspekte von Übertragungseliminerungsoperationen verbessern. Bei Abschluss der von Block 950 ausgewiesenen Operationen kann das Verfahren enden.
  • 14 zeigt ein Blockschaltbild eines beispielhaften Computersystems gemäß einem oder mehreren Aspekten der vorliegenden Offenbarung. Wie in Fig. In 14 ist das Mehrprozessorsystem 700 ein System mit einer Punkt-zu-Punkt-Verbindung und umfasst einen ersten Prozessor 770 und einen zweiten Prozessor 780, die über eine Punkt-zu-Punkt-Verbindung 750 gekoppelt sind. Jeder der Prozessoren 770 und 780 kann eine Version des Prozessors 102 sein, die in der Lage ist, transaktionale Speicherzugriffsoperationen und/oder nicht-transaktionale Speicherzugriffsoperationen auszuführen, wie vorstehend ausführlicher beschrieben.
  • Obwohl nur zwei Prozessoren 770, 780 gezeigt sind, versteht es sich, dass der Umfang der vorliegenden Erfindung nicht derart beschränkt ist. In anderen Ausführungsformen kann ein oder mehrere zusätzliche Prozessoren in einem gegeben Prozessor vorhanden sein.
  • Prozessoren 770 und 780 sind jeweils mit integrierten Speichercontroller-Einheiten 772 und 782 gezeigt. Prozessor 770 umfasst außerdem als Teil seiner Bus-Controller-Einheiten Punkt-zu-Punkt-Schnittstellen (P-P) 776 und 778; gleichermaßen umfasst zweiter Prozessor 780 P-P-Schnittstellen 786 und 788. Prozessoren 770, 780 können Informationen über eine Punkt-zu-Punkt-Schnittstelle 750 unter Verwendung P-P-Schnittstellenschaltungen 778, 778 austauschen. Wie in Fig. In 14 koppeln die IMC 772 und 782 die Prozessoren an die jeweiligen Speicher, namentlich an einen Speicher 732 und einen Speicher 734, die Teil eines Hauptspeichers sein können, der lokal an die jeweiligen Prozessoren angeschlossen ist.
  • Prozessoren 770, 780 können jeweils mit einem Chipsatz 790 über individuelle P-P-Schnittstellen 752, 754 unter Verwendung von Punk-zu-Punkt-Schnittstellenschaltungen 776, 794, 786, 798 Informationen austauschen. Chipsatz 790 kann ebenfalls Informationen mit einer Hochleistungsgrafikschaltung 738 über eine Hochleistungsgrafikschnittstelle 739 austauschen.
  • Ein gemeinsam genutzter Cache (nicht dargestellt) kann in jedem der Prozessoren oder außerhalb beider Prozessoren, doch mit Prozessoren über P-P-Verbindung verbunden, vorgesehen sein, sodass lokale Cache-Informationen von einem oder beiden Prozessoren in dem gemeinsam genutzten Cache gespeichert werden können, wenn ein Prozessor ein einen Energiesparmodus versetzt wird.
  • Chipsatz 790 kann an einen ersten Bus 716 über eine Schnittstelle 796 gekoppelt sein. In einer Ausführungsform kann erster Bus 716 ein PCI-Bus (Peripheral Component Interconnect) sein, oder ein Bus, wie z. B. PCI Express-Bus oder anderer 3GIO-Interconnect-Bus sein. obwohl der Umfang der vorliegenden Erfindung nicht derart beschränkt ist.
  • Wie in Fig. In 14 können verschiedene I/O-Geräte 714 an den ersten Bus 716 gekoppelt werden, zusammen mit einer Busbrücke 718, die den ersten Bus 716 an einen zweiten Bus 720 koppelt. In einer Ausführungsform kann zweiter Bus 720 ein LPC-Bus (Low Pin Count) sein. Verschiedene Geräte, darunter zum Beispiel eine Tastatur und/oder Maus 722, Kommunikationsgeräte 727 und eine Speichereinheit 728, wie z. B. ein Plattenlaufwerk- oder anderes Massenspeichergerät, das Befehle/Code und Daten 730 enthalten kann, können in einer Ausführungsform an zweiten Bus 720 gekoppelt sein. Ferner kann eine Audioein- und Ausgabe 724 an zweiten Bus 720 gekoppelt sein. Es ist zu beachten, dass andere Architekturen möglich sind. Zum Beispiel kann ein System statt der Punk-zu-Punkt-Architektur von Fig. In 14 kann das System einen Multi-Drop-Bus oder eine andere solche Architektur implementieren.
  • Die nachfolgenden Beispiele veranschaulichen verschiedene Implementierungen gemäß einem oder mehreren Aspekten der vorliegenden Offenbarung.
  • Beispiel 1 ist ein Verarbeitungssystem, aufweisend: eine erste Datenstruktur, die für die Speicherung einer Mehrzahl von physischen Registerwerten konfiguriert ist; eine zweite Datenstruktur, die für die Speicherung einer Mehrzahl von Zeigern konfiguriert ist, wobei jeder Zeiger auf ein Element der ersten Datenstruktur verweist; eine dritte Datenstruktur einschließlich einer Mehrzahl von Übertragungseliminierungssätzen, wobei jeder Übertragungseliminierungssatz eine Mehrzahl von Bits aufweist, die eine Mehrzahl von logischen Registern repräsentieren; und eine Logik, die für die Ausführung einer Datenbearbeitungsoperation konfiguriert ist, indem ein Element der zweiten Datenstruktur dazu veranlasst wird, auf ein Element der ersten Datenstruktur zu verweisen, wobei die Logik weiterhin so konfiguriert ist, dass sie die Ergebnisse von zwei oder mehr Datenbearbeitungsoperationen durch Ausführung einer einzelnen Aktualisierung der dritten Datenstruktur widerspiegelt.
  • In Beispiel 2 kann die Aktualisierung der dritten Datenstruktur des Verarbeitungssystems aus Beispiel 1 mindestens einen der folgenden Schritte umfassen: Erstellen eines Übertragungseliminierungssatzes, Verändern eines Übertragungseliminierungssatzes oder Rückgewinnung eines Übertragungseliminierungssatzes.
  • In Beispiel 3 kann die Logik des Verarbeitungssystems aus Beispiel 1 für die Aktualisierung der dritten Datenstruktur auf der Grundlage der Vorausberechnung der Abhängigkeiten von zwei oder mehr Datenbearbeitungsoperationen konfiguriert sein.
  • In Beispiel 4 kann die Logik des Verarbeitungssystems aus Beispiel 1 für die Reservierung mindestens eines der folgenden Sätze konfiguriert sein: eines ersten Übertragungseliminierungssatzes in der Domäne von frei verwendbaren logischen Ganzzahlregistern oder eines zweiten Übertragungseliminierungssatzes in der Domäne von Streaming Single Instruction Multiple Data (SIMD) Extensions (SSE) Logikregistern.
  • In Beispiel 5 kann die Logik des Verarbeitungssystems aus Beispiel 1 für die Ausgabe eines Signals zur Aktualisierung der dritten Datenstruktur durch Verarbeitung von mindestens einem der folgenden Signale konfiguriert sein: einem ersten Signal, das einen vorherigen Zustand der dritten Datenstruktur widerspiegelt, einem zweiten Signal, das ein logisches Quellregister für eine Datenbearbeitungsoperation kennzeichnet, einem dritten Signal, das ein logisches Zielregister für eine Datenbearbeitungsoperation kennzeichnet, einem vierten Signal, das kennzeichnet, ob ein vorhandener Übertragungseliminierungssatz mindestens einen Verweis enthält, einem fünften Signal, das einen neuen Übertragungseliminierungssatz innerhalb der dritten Datenstruktur kennzeichnet, und einem sechsten Signal, das kennzeichnet, ob die Datenbearbeitungsoperation für Übertragungseliminierung ausgewählt wurde.
  • In Beispiel 6 kann die Logik des Verarbeitungssystems aus Beispiel 1 für die Erkennung von mindestens einem der folgenden Vorgänge konfiguriert sein: einer ersten Datenbearbeitungsoperation mit einem Zielregister, das mit der Quelle einer zweiten Datenbearbeitungsoperation übereinstimmt, zweier Datenbearbeitungsoperationen, die ein gemeinsames Register als Quelle verwenden, und eines dazwischen liegenden Schreibvorgangs in das Quellregister, zweier Datenbearbeitungsoperationen, die ein gemeinsames Register als Quelle verwenden, einer ersten Datenbearbeitungsoperation mit einem Zielregister, das mit der Quelle einer zweiten Datenbearbeitungsoperation übereinstimmt, und eines dazwischen liegenden Schreibvorgangs in das Zielregister oder einer ersten Datenbearbeitungsoperation, die ein Register überschreibt, auf das ein vorhandener Übertragungseliminierungssatz verweist und das eine Quelle einer zweiten Datenbearbeitungsoperation ist.
  • Beispiel 7 ist ein Verfahren für die Ausführung einer Datenbearbeitungsoperation, aufweisend: Speichern einer Mehrzahl von physischen Registerwerten in einer ersten Datenstruktur durch ein Computersystem; Speichern einer Mehrzahl von Zeigern in einer zweiten Datenstruktur, wobei jeder Zeiger auf ein Element der ersten Datenstruktur verweist; Speichern einer Mehrzahl von Übertragungseliminierungssätzen in einer dritten Datenstruktur, wobei jeder Übertragungseliminierungssatz eine Mehrzahl von Bits aufweist, die eine Mehrzahl von logischen Registern repräsentieren; Ausführung einer Datenbearbeitungsoperation, indem ein Element der zweiten Datenstruktur dazu veranlasst wird, auf ein Element der ersten Datenstruktur zu verweisen, und Widerspiegelung der Ergebnisse von zwei oder mehr Datenbearbeitungsoperationen durch Ausführung einer einzelnen Aktualisierung der dritten Datenstruktur.
  • In Beispiel 8 kann die Aktualisierung der dritten Datenstruktur des Verarbeitungssystems aus Beispiel 7 mindestens einen der folgenden Schritte umfassen: Erstellen eines Übertragungseliminierungssatzes, Verändern eines Übertragungseliminierungssatzes oder Rückgewinnung eines Übertragungseliminierungssatzes.
  • In Beispiel 9 kann das Verfahren aus Beispiel 7 weiterhin die Reservierung mindestens eines der folgenden Sätze umfassen: eines ersten Übertragungseliminierungssatzes in der Domäne von frei verwendbaren logischen Ganzzahlregistern oder eines zweiten Übertragungseliminierungssatzes in der Domäne von Streaming Single Instruction Multiple Data (SIMD) Extensions (SSE) Logikregistern.
  • In Beispiel 10 kann das Verfahren aus Beispiel 7 weiterhin die Ausgabe eines Signals zur Aktualisierung der dritten Datenstruktur durch Verarbeitung von mindestens einem der folgenden Signale umfassen: einem ersten Signal, das einen vorherigen Zustand der dritten Datenstruktur widerspiegelt, einem zweiten Signal, das ein logisches Quellregister für eine Datenbearbeitungsoperation kennzeichnet, einem dritten Signal, das ein logisches Zielregister für eine Datenbearbeitungsoperation kennzeichnet, einem vierten Signal, das kennzeichnet, ob ein vorhandener Übertragungseliminierungssatz mindestens einen Verweis enthält, einem fünften Signal, das einen neuen Übertragungseliminierungssatz innerhalb der dritten Datenstruktur kennzeichnet, und einem sechsten Signal, das kennzeichnet, ob die Datenbearbeitungsoperation für Übertragungseliminierung ausgewählt wurde.
  • In Beispiel 11 kann das Verfahren aus Beispiel 7 weiterhin die Erkennung von mindestens einem der folgenden Vorgänge umfassen: einer ersten Datenbearbeitungsoperation mit einem Zielregister, das mit der Quelle einer zweiten Datenbearbeitungsoperation übereinstimmt, zweier Datenbearbeitungsoperationen, die ein gemeinsames Register als Quelle verwenden, und eines dazwischen liegenden Schreibvorgangs in das Quellregister, zweier Datenbearbeitungsoperationen, die ein gemeinsames Register als Quelle verwenden, einer ersten Datenbearbeitungsoperation mit einem Zielregister, das mit der Quelle einer zweiten Datenbearbeitungsoperation übereinstimmt, und eines dazwischen liegenden Schreibvorgangs in das Zielregister oder einer ersten Datenbearbeitungsoperation, die ein Register überschreibt, auf das ein vorhandener Übertragungseliminierungssatz verweist und das eine Quelle einer zweiten Datenbearbeitungsoperation ist.
  • In Beispiel 12 kann die Aktualisierung der dritten Datenstruktur des Verfahrens aus Beispiel 7 auf der Grundlage der Vorausberechnung der Abhängigkeiten von zwei oder mehr Datenbearbeitungsoperationen ausgeführt werden.
  • Beispiel 13 ist ein Verarbeitungssystem, aufweisend: eine erste Datenstruktur, die für die Speicherung einer Mehrzahl von physischen Registerwerten konfiguriert ist; eine zweite Datenstruktur, die für die Speicherung einer Mehrzahl von Zeigern konfiguriert ist, wobei jeder Zeiger auf ein Element der ersten Datenstruktur verweist; eine dritte Datenstruktur, die eine erste Mehrzahl von Übertragungseliminierungssätzen und eine zweite Mehrzahl von Übertragungseliminierungssätzen umfasst, wobei jeder Übertragungseliminierungssatz der ersten Mehrzahl von Übertragungseliminierungssätzen eine Mehrzahl von Bits, die eine Mehrzahl von logischen Ganzzahlregistern repräsentieren, aufweist, jeder Übertragungseliminierungssatz der zweiten Mehrzahl von Übertragungseliminierungssätzen eine Mehrzahl von Bits, die eine Mehrzahl von logischen Streaming Single Instruction Multiple Data (SIMD) Extensions (SSE) Registern repräsentieren, aufweist; und eine Logik, die für das Reservieren eines ersten Übertragungseliminierungssatzes der ersten Mehrzahl von Übertragungseliminierungssätzen und eines zweiten Übertragungseliminierungssatzes der zweiten Mehrzahl von Übertragungseliminierungssätzen konfiguriert ist, wobei die Logik weiterhin für die Ausführung einer Datenbearbeitungsoperation durch Aktualisieren der zweiten Datenstruktur und entweder des ersten Übertragungseliminierungssatzes oder des zweiten Übertragungseliminierungssatzes konfiguriert ist.
  • In Beispiel 14 kann die Logik des Verarbeitungssystems aus Beispiel 13 für die Ausgabe eines Signals zur Aktualisierung der dritten Datenstruktur durch Verarbeitung von mindestens einem der folgenden Signale konfiguriert sein: einem ersten Signal, das einen vorherigen Zustand der dritten Datenstruktur widerspiegelt, einem zweiten Signal, das ein logisches Quellregister für eine Datenbearbeitungsoperation kennzeichnet, einem dritten Signal, das ein logisches Zielregister für eine Datenbearbeitungsoperation kennzeichnet, einem vierten Signal, das kennzeichnet, ob ein vorhandener Übertragungseliminierungssatz mindestens einen Verweis enthält, einem fünften Signal, das einen neuen Übertragungseliminierungssatz innerhalb der dritten Datenstruktur kennzeichnet, und einem sechsten Signal, das kennzeichnet, ob die Datenbearbeitungsoperation für Übertragungseliminierung ausgewählt wurde.
  • In Beispiel 15 kann die Logik des Verarbeitungssystems aus Beispiel 13 weiterhin für die Erkennung von mindestens einem der folgenden Vorgänge konfiguriert sein: einer ersten Datenbearbeitungsoperation mit einem Zielregister, das mit einer Quelle einer zweiten Datenbearbeitungsoperation übereinstimmt, zweier Datenbearbeitungsoperationen, die ein gemeinsames Register als Quelle verwenden, und eines dazwischen liegenden Schreibvorgangs in das Quellregister, zweier Datenbearbeitungsoperationen, die ein gemeinsames Register als Quelle verwenden, einer ersten Datenbearbeitungsoperation mit einem Zielregister, das mit der Quelle einer zweiten Datenbearbeitungsoperation übereinstimmt, und eines dazwischen liegenden Schreibvorgangs in das Zielregister oder einer ersten Datenbearbeitungsoperation, die ein Register überschreibt, auf das ein vorhandener Übertragungseliminierungssatz verweist und das eine Quelle einer zweiten Datenbearbeitungsoperation ist.
  • In Beispiel 16 kann die Logik des Verarbeitungssystems aus Beispiel 13 weiterhin so konfiguriert sein, dass sie: Abhängigkeiten von zwei oder mehr Datenbearbeitungsoperationen vorausberechnet; und Ergebnisse der zwei oder mehr Datenbearbeitungsoperationen durch Ausführen einer einzelnen Aktualisierung der dritten Datenstruktur widerspiegelt.
  • In Beispiel 17 kann die Logik des Verarbeitungssystems aus Beispiel 13 weiterhin so konfiguriert sein, dass sie mindestens einen der folgenden Schritte ausführt: Erstellen eines Übertragungseliminierungssatzes, Verändern eines Übertragungseliminierungssatzes oder Rückgewinnung eines Übertragungseliminierungssatzes.
  • Beispiel 18 ist ein Verfahren zur Ausführung einer Datenbearbeitungsoperation, aufweisend: Speicherung einer Mehrzahl von physischen Registerwerten in einer ersten Datenstruktur durch ein Computersystem; Speicherung einer Mehrzahl von Zeigern in einer zweiten Datenstruktur, wobei jeder Zeiger auf ein Element der ersten Datenstruktur verweist; Speichern einer ersten Mehrzahl von Übertragungseliminierungssätzen und einer zweiten Mehrzahl von Übertragungseliminierungssätzen in einer dritten Datenstruktur, wobei jeder Übertragungseliminierungssatz der ersten Mehrzahl von Übertragungseliminierungssätzen eine Mehrzahl von Bits, die eine Mehrzahl von logischen Ganzzahlregistern repräsentieren, aufweist, jeder Übertragungseliminierungssatz der zweiten Mehrzahl von Übertragungseliminierungssätzen eine Mehrzahl von Bits, die eine Mehrzahl von logischen Streaming Single Instruction Multiple Data (SIMD) Extension (SSE) Registern repräsentieren, aufweist; Reservieren eines ersten Übertragungseliminierungssatzes der ersten Mehrzahl von Übertragungseliminierungssätzen und eines zweiten Übertragungseliminierungssatzes der zweiten Mehrzahl von Übertragungseliminierungssätzen; und Ausführung einer Datenbearbeitungsoperation durch Aktualisieren der zweiten Datenstruktur und entweder des ersten Übertragungseliminierungssatzes oder des zweiten Übertragungseliminierungssatzes konfiguriert ist.
  • In Beispiel 19 kann das Verfahren aus Beispiel 18 weiterhin die Ausgabe eines Signals zur Aktualisierung der dritten Datenstruktur durch Verarbeitung von mindestens einem der folgenden Signale umfassen: einem ersten Signal, das einen vorherigen Zustand der dritten Datenstruktur widerspiegelt, einem zweiten Signal, das ein logisches Quellregister für eine Datenbearbeitungsoperation kennzeichnet, einem dritten Signal, das ein logisches Zielregister für eine Datenbearbeitungsoperation kennzeichnet, einem vierten Signal, das kennzeichnet, ob ein vorhandener Übertragungseliminierungssatz mindestens einen Verweis enthält, einem fünften Signal, das einen neuen Übertragungseliminierungssatz innerhalb der dritten Datenstruktur kennzeichnet, und einem sechsten Signal, das kennzeichnet, ob die Datenbearbeitungsoperation für Übertragungseliminierung ausgewählt wurde.
  • In Beispiel 20 kann das Verfahren aus Beispiel 18 weiterhin die Erkennung von mindestens einem der folgenden Vorgänge umfassen: einer ersten Datenbearbeitungsoperation mit einem Zielregister, das mit einer Quelle einer zweiten Datenbearbeitungsoperation übereinstimmt, zweier Datenbearbeitungsoperationen, die ein gemeinsames Register als Quelle verwenden, und eines dazwischen liegenden Schreibvorgangs in das Quellregister, zweier Datenbearbeitungsoperationen, die ein gemeinsames Register als Quelle verwenden, einer ersten Datenbearbeitungsoperation mit einem Zielregister, das mit der Quelle einer zweiten Datenbearbeitungsoperation übereinstimmt, und eines dazwischen liegenden Schreibvorgangs in das Zielregister oder einer ersten Datenbearbeitungsoperation, die ein Register überschreibt, auf das ein vorhandener Übertragungseliminierungssatz verweist und das eine Quelle einer zweiten Datenbearbeitungsoperation ist.
  • In Beispiel 21 kann das Verfahren aus Beispiel 18 weiterhin aufweisen: Vorausberechnen der Abhängigkeiten von zwei oder mehr Datenbearbeitungsoperationen; und Widerspiegeln der Ergebnisse der zwei oder mehr Datenbearbeitungsoperationen durch Ausführen einer einzelnen Aktualisierung der dritten Datenstruktur.
  • In Beispiel 22 kann das Verfahren aus Beispiel 18 weiterhin aufweisen: Ausführen von mindestens einem der folgenden Schritte: Erstellen eines Übertragungseliminierungssatzes, Verändern eines Übertragungseliminierungssatzes oder Rückgewinnung eines Übertragungseliminierungssatzes.
  • Beispiel 23 ist ein computerlesbares nichtflüchtiges Speichermedium, das ausführbare Anweisungen umfasst und bei Ausführung durch ein Computersystem dieses Computersystem zur Ausführung von Operationen veranlasst, umfassend: Speichern einer Mehrzahl von physischen Registerwerten in einer ersten Datenstruktur durch ein Computersystem; Speichern einer Mehrzahl von Zeigern in einer zweiten Datenstruktur, wobei jeder Zeiger auf ein Element der ersten Datenstruktur verweist; Speichern einer Mehrzahl von Übertragungseliminierungssätzen in einer dritten Datenstruktur, wobei jeder Übertragungseliminierungssatz eine Mehrzahl von Bits aufweist, die eine Mehrzahl von logischen Registern repräsentieren; Ausführung einer Datenbearbeitungsoperation, indem ein Element der zweiten Datenstruktur dazu veranlasst wird, auf ein Element der ersten Datenstruktur zu verweisen, und Widerspiegelung der Ergebnisse von zwei oder mehr Datenbearbeitungsoperationen durch Ausführung einer einzelnen Aktualisierung der dritten Datenstruktur.
  • In Beispiel 24 kann die Aktualisierung der dritten Datenstruktur aus Beispiel 23 mindestens einen der folgenden Schritte umfassen: Erstellen eines Übertragungseliminierungssatzes, Verändern eines Übertragungseliminierungssatzes oder Rückgewinnung eines Übertragungseliminierungssatzes.
  • In Beispiel 25 können die auf dem computerlesbaren nichtflüchtigen Speichermedium aus Beispiel 23 gespeicherten ausführbaren Anweisungen das Computersystem weiterhin zur Aktualisierung der dritten Datenstruktur auf der Grundlage der Vorausberechnung von Abhängigkeiten von zwei oder mehr Datenbearbeitungsoperationen veranlassen.
  • In Beispiel 26 können die auf dem computerlesbaren nichtflüchtigen Speichermedium aus Beispiel 23 gespeicherten ausführbaren Anweisungen das Computersystem weiterhin zur Reservierung mindestens eines der folgenden Sätze umfassen: eines ersten Übertragungseliminierungssatzes in der Domäne von frei verwendbaren logischen Ganzzahlregistern oder eines zweiten Übertragungseliminierungssatzes in der Domäne von Streaming Single Instruction Multiple Data (SIMD) Extensions (SSE) Logikregistern.
  • In Beispiel 27 können die auf dem computerlesbaren nichtflüchtigen Speichermedium aus Beispiel 23 gespeicherten ausführbaren Anweisungen das Computersystem weiterhin zur Ausgabe eines Signals zur Aktualisierung der dritten Datenstruktur durch Verarbeitung von mindestens einem der folgenden Signale umfassen: einem ersten Signal, das einen vorherigen Zustand der dritten Datenstruktur widerspiegelt, einem zweiten Signal, das ein logisches Quellregister für eine Datenbearbeitungsoperation kennzeichnet, einem dritten Signal, das ein logisches Zielregister für eine Datenbearbeitungsoperation kennzeichnet, einem vierten Signal, das kennzeichnet, ob ein vorhandener Übertragungseliminierungssatz mindestens einen Verweis enthält, einem fünften Signal, das einen neuen Übertragungseliminierungssatz innerhalb der dritten Datenstruktur kennzeichnet, und einem sechsten Signal, das kennzeichnet, ob die Datenbearbeitungsoperation für Übertragungseliminierung ausgewählt wurde.
  • In Beispiel 28 können die auf dem computerlesbaren nichtflüchtigen Speichermedium aus Beispiel 23 gespeicherten ausführbaren Anweisungen das Computersystem weiterhin zur Erkennung von mindestens einem der folgenden Vorgänge umfassen: einer ersten Datenbearbeitungsoperation mit einem Zielregister, das mit einer Quelle einer zweiten Datenbearbeitungsoperation übereinstimmt, zweier Datenbearbeitungsoperationen, die ein gemeinsames Register als Quelle verwenden, und eines dazwischen liegenden Schreibvorgangs in das Quellregister, zweier Datenbearbeitungsoperationen, die ein gemeinsames Register als Quelle verwenden, einer ersten Datenbearbeitungsoperation mit einem Zielregister, das mit der Quelle einer zweiten Datenbearbeitungsoperation übereinstimmt, und eines dazwischen liegenden Schreibvorgangs in das Zielregister oder einer ersten Datenbearbeitungsoperation, die ein Register überschreibt, auf das ein vorhandener Übertragungseliminierungssatz verweist und das eine Quelle einer zweiten Datenbearbeitungsoperation ist.
  • Beispiel 29 ist ein computerlesbares nichtflüchtiges Speichermedium, das ausführbare Anweisungen umfasst und bei Ausführung durch ein Computersystem dieses Computersystem zur Ausführung von Operationen veranlasst, umfassend: Speichern einer Mehrzahl von physischen Registerwerten in einer ersten Datenstruktur durch ein Computersystem; Speichern einer Mehrzahl von Zeigern in einer zweiten Datenstruktur, wobei jeder Zeiger auf ein Element der ersten Datenstruktur verweist; Speichern einer ersten Mehrzahl von Übertragungseliminierungssätzen und einer zweiten Mehrzahl von Übertragungseliminierungssätzen in einer dritten Datenstruktur, wobei jeder Übertragungseliminierungssatz der ersten Mehrzahl von Übertragungseliminierungssätzen eine Mehrzahl von Bits, die eine Mehrzahl von logischen Ganzzahlregistern repräsentieren, aufweist, jeder Übertragungseliminierungssatz der zweiten Mehrzahl von Übertragungseliminierungssätzen eine Mehrzahl von Bits, die eine Mehrzahl von logischen Streaming Single Instruction Multiple Data (SIMD) Extensions (SSE) Registern repräsentieren, aufweist; Reservieren eines ersten Übertragungseliminierungssatzes der ersten Mehrzahl von Übertragungseliminierungssätzen und eines zweiten Übertragungseliminierungssatzes der zweiten Mehrzahl von Übertragungseliminierungssätzen; und Ausführung einer Datenbearbeitungsoperation durch Aktualisieren der zweiten Datenstruktur und entweder des ersten Übertragungseliminierungssatzes oder des zweiten Übertragungseliminierungssatzes konfiguriert ist.
  • In Beispiel 30 können die auf dem computerlesbaren nichtflüchtigen Speichermedium aus Beispiel 29 gespeicherten ausführbaren Anweisungen das Computersystem weiterhin zur Aktualisierung der dritten Datenstruktur durch Verarbeitung von mindestens einem der folgenden Signale umfassen: einem ersten Signal, das einen vorherigen Zustand der dritten Datenstruktur widerspiegelt, einem zweiten Signal, das ein logisches Quellregister für eine Datenbearbeitungsoperation kennzeichnet, einem dritten Signal, das ein logisches Zielregister für eine Datenbearbeitungsoperation kennzeichnet, einem vierten Signal, das kennzeichnet, ob ein vorhandener Übertragungseliminierungssatz mindestens einen Verweis enthält, einem fünften Signal, das einen neuen Übertragungseliminierungssatz innerhalb der dritten Datenstruktur kennzeichnet, und einem sechsten Signal, das kennzeichnet, ob die Datenbearbeitungsoperation für Übertragungseliminierung ausgewählt wurde.
  • In Beispiel 31 können die auf dem computerlesbaren nichtflüchtigen Speichermedium aus Beispiel 29 gespeicherten ausführbaren Anweisungen das Computersystem weiterhin zur Erkennung von mindestens einem der folgenden Vorgänge umfassen: einer ersten Datenbearbeitungsoperation mit einem Zielregister, das mit einer Quelle einer zweiten Datenbearbeitungsoperation übereinstimmt, zweier Datenbearbeitungsoperationen, die ein gemeinsames Register als Quelle verwenden, und eines dazwischen liegenden Schreibvorgangs in das Quellregister, zweier Datenbearbeitungsoperationen, die ein gemeinsames Register als Quelle verwenden, einer ersten Datenbearbeitungsoperation mit einem Zielregister, das mit der Quelle einer zweiten Datenbearbeitungsoperation übereinstimmt, und eines dazwischen liegenden Schreibvorgangs in das Zielregister oder einer ersten Datenbearbeitungsoperation, die ein Register überschreibt, auf das ein vorhandener Übertragungseliminierungssatz verweist und das eine Quelle einer zweiten Datenbearbeitungsoperation ist.
  • In Beispiel 32 können die auf dem computerlesbaren nichtflüchtigen Speichermedium aus Beispiel 29 gespeicherten ausführbaren Anweisungen das Computersystem weiterhin zu Folgendem veranlassen: Vorausberechnung von Abhängigkeiten von zwei oder mehr Datenbearbeitungsoperationen und Widerspiegeln der Ergebnisse von zwei oder mehr Datenbearbeitungsoperationen durch Ausführung einer einzelnen Aktualisierung der dritten Datenstruktur.
  • In Beispiel 33 können die auf dem computerlesbaren nichtflüchtigen Speichermedium aus Beispiel 29 gespeicherten ausführbaren Anweisungen das Computersystem weiterhin zur Ausführung von mindestens einem der folgenden Schritte veranlassen: Erstellen eines Übertragungseliminierungssatzes, Verändern eines Übertragungseliminierungssatzes oder Rückgewinnung eines Übertragungseliminierungssatzes.
  • Beispiel 34 ist eine Vorrichtung, umfassend: einen Speicher und ein an den Speicher gekoppeltes Verarbeitungssystem, wobei das Verarbeitungssystem für die Ausführung des Verfahrens aus einem der Beispiele 7–12 konfiguriert ist.
  • Beispiel 34 ist eine Vorrichtung, umfassend: einen Speicher und ein an den Speicher gekoppeltes Verarbeitungssystem, wobei das Verarbeitungssystem für die Ausführung des Verfahrens aus einem der Beispiele 18–22 konfiguriert ist.
  • Einige Abschnitte der ausführlichen Beschreibung werden in Form von Algorithmen und symbolischen Repräsentationen von Operationen auf Datenbits innerhalb eines Computerspeichers dargestellt. Diese algorithmische Beschreibungen und Repräsentationen sind das von Fachleuten auf dem Gebiet der Datenverarbeitung verwendete Hilfsmittel zum effektivsten Vermitteln des Gegenstands ihrer Arbeit an andere Fachleute. Ein Algorithmus wird hierbei und im Allgemeinen als eine in sich konsistente Befehlssequenz, die zu einem gewünschten Ergebnis führt, aufgefasst. Die Operationen erfordern physikalische Manipulationen von physikalischen Größen. Normalerweise, doch nicht notwendigerweise, weisen diese Größen die Form von elektrischen oder magnetischen Signalen, die gespeichert, übermittelt, kombiniert, verglichen und anderweit manipuliert werden können. Es hat sich grundsätzlich aus Gründen des allgemeinen Sprachgebrauchs als geeignet erwiesen, diese Signale als Bits, Werte, Elemente, Symbole, Zeichen, Begriffe, Zahlen o. ä. zu bezeichnen.
  • Es sollte bedacht werden, dass alle diese und ähnlichen Begriffe jedoch mit den geeigneten, physischen Größen zu verbinden sind und lediglich praktische Bezeichnungen darstellen, die auf diese Größen angewendet werden. Sofern aus der oben geführten Diskussion nichts anderes zu entnehmen ist, kann davon ausgegangen werden, dass sich in der gesamten Beschreibung die Verwendung solcher Begriffe wie „Verschlüsseln” „Entschlüsseln” „Speichern”, „Bereitstellen”, „Ableiten”, „Einholen”, „Empfangen”, „Authentifizieren”, „Löschen”, „Ausführen”, „Anfordern”, „Kommunizieren” o. ä. auf die Aktionen und Prozesse eines Computersystems oder eines gleichartigen elektronischen Gerätes beziehen, das Daten, die als physikalische (z. B. elektronische) Größen in den Registern und Speicher des Computersystems repräsentiert sind, bearbeitet und in andere, gleichermaßen als physikalische Größen in den Speicher oder Registern des Computersystems oder anderer solcher Speicher-, Übertragungs- oder Anzeigegeräte repräsentierte Daten umwandelt.
  • Die Begriffe „Beispiel” oder „exemplarisch” werden hier in der Bedeutung „als Beispiel, Exemplar, der Erläuterung dienend” verwendet. Jeder Aspekt oder jede Ausgestaltung, die hier als „Beispiel„ oder „exemplarisch” beschrieben ist, ist nicht notwendigerweise als bevorzugt oder vorteilhaft im Vergleich zu anderen Aspekten oder Ausgestaltungen zu verstehen. Vielmehr soll der Gebrauch der Begriffe „Beispiel” oder „exemplarisch” Konzepte in einer konkreten Art und Weise präsentieren. Der in dieser Anmeldung verwendete Begriff „oder” soll auf eine inklusive, und nicht auf eine exklusive Weise verstanden werden. Das heißt, „X umfasst A oder B” soll jede der natürlichen inklusiven Permutationen umfassen, sofern nicht anders angegeben oder aus dem Kontext ersichtlich. Das heißt, wenn X A umfasst, X B umfasst, oder Y sowohl A als auch B umfasst, dann ist „X umfasst A oder B” in jedem vorhergehenden Fall erfüllt. Außerdem sollen die in dieser Anmeldung und den beigefügten Ansprüchen verwendeten Artikel „ein”, „eine”, „einer” generell als „ein oder mehr” verstanden werden, sofern nicht anders angegeben oder aus dem Kontext ersichtlich, dass sie als Singular auszulegen sind. Des Weiteren soll die durchgehende Verwendung des Begriffs „eine Ausführungsform” oder „eine Implementierung” nicht bedeuten, dass dieselbe Ausführungsform oder Implementierung gemeint ist, sie sofern nicht als solche beschrieben ist. Außerdem sind die Begriffe „erster”, „zweiter”, „dritter”, „vierter” usw. als Kennzeichnungen gedacht, um unter verschiedenen Elementen zu unterscheiden und müssen nicht notwendigerweise eine Ordnungsbedeutung entsprechend ihrer nummerischen Bezeichnung haben.
  • Hierin beschriebenen Ausführungsformen können sich auch auf eine Vorrichtung zum Ausführen der hier beschriebenen Operationen beziehen. Diese Vorrichtung kann gezielt für die geforderten Zwecke konstruiert sein, oder sie kann einen Universalrechner umfassen, der gezielt von einem in dem Rechner gespeicherten Computerprogramm geschaltet oder rekonfiguriert wurde. Ein derartiges Computerprogramm kann in einem nichtflüchtigen, computerlesbaren Speichermedium, wie z. B. (doch nicht darauf beschränkt) einem beliebigen Datenträger, darunter Disketten, optischen Disketten, CD-ROMs und Magneto Optical Disks, Festwertspeichern (ROMs), Direktzugriffsspeichern (RAMs), EPROMs, EEPROMs, magnetischen oder optischen Karten, Flash-Speichern oder einem beliebigen Typ von Medien, die zum Speicher elektronischer Befehle geeignet sind, gespeichert sein. Der Begriff „computerlesbares Speichermedium” umfasst ein einzelnes Medium oder mehrere Medien (z. B. zentrale oder dezentrale Datenbanken und/oder assoziierte Caches und Server), die einen oder mehrere Befehlssätze speichern. Der Begriff „computerlesbares Medium” soll außerdem jedes Medium einschließen, das in der Lage ist, einen Befehlssatz zur Ausführung durch der Maschine, der die Maschine dazu veranlasst, eine beliebige oder mehrere von den Methodiken der vorliegenden Ausführungsformen, zu speichern, zu dekodieren und abzuwickeln. Der Begriff „computerlesbares Medium” soll demgemäß umfassen (ohne sich darauf zu beschränken): Festkörpermedien, optische Medien, magnetische Medien, jedes Medium, das in der Lage ist, einen Befehlssatz zur Ausführung durch die Maschine, der die Maschine dazu veranlasst, eine beliebige oder mehrere von den Methodiken der vorliegenden Ausführungsformen, zu speichern, zu dekodieren und abzuwickeln.
  • Die hierin dargestellten Algorithmen und Displays sind nicht von Natur aus mit irgendeinem bestimmten Computer oder einer anderen Vorrichtung verbunden. Verschiedene Universalsysteme können mit Programmen gemäß der hier beschriebenen Lehren verwendet werden, oder es kann sich als praktisch erweisen, eine spezialisiertere Vorrichtung zur Ausführung der erforderlichen Verfahrensoperationen zu konstruieren. Der erforderliche Aufbau für eine Vielzahl dieser Systeme wird aus der nachstehenden Beschreibung ersichtlich. Außerdem sind die vorliegenden Ausführungsformen nicht unter Bezugnahme auf eine konkrete Programmiersprache beschrieben. Es ist selbstverständlich, dass vielerlei Programmiersprachen verwendet werden können, um die Lehren der Ausführungsformen wie hierin beschrieben zu implementieren.
  • Die vorstehende Beschreibung legt zahlreiche konkrete Einzelheiten dar, wie z. B. Beispiele von konkreten Systemen, Komponenten, Verfahren und so weiter, um für ein gutes Verständnis mehrerer Ausführungsformen zu sorgen. Es ist für einen Fachmann jedoch ersichtlich, dass zumindest einige Ausführungsformen ohne diese konkreten Einzelheiten umgesetzt werden können. In anderen Fällen sind allgemein bekannte Komponenten oder Verfahren nicht ausführlich beschrieben, oder sie sind in einem einfachen Blockdiagrammformat dargestellt, um unnötige Verschleierung der vorliegenden Ausführungsformen zu vermeiden. Somit sind die konkreten, vorstehend dargelegten Einzelheiten lediglich exemplarisch. Bestimmte Implementierungen können sich von diesen exemplarischen Einzelheiten unterscheiden und doch als innerhalb des Umfangs der vorliegenden Ausführungsformen befindlich betrachtet werden.
  • Es versteht sich, dass die vorstehende Beschreibung erläuternd und nicht beschränkend sein soll. Viele andere Ausführungsformen sind für Fachleute offenkundig, nachdem sie die vorstehende Beschreibung gelesen und verstanden haben. Der Umfang der vorliegenden Ausführungsformen soll daher unter Bezugnahme auf die beigefügten Ansprüche samt dem vollen Umfang von Äquivalenten, zu denen solche Ansprüche berechtigt sind, bestimmt werden.

Claims (24)

  1. Verarbeitungssystem, umfassend: eine erste Datenstruktur, die für die Speicherung einer Mehrzahl von physischen Registerwerten konfiguriert ist; eine zweite Datenstruktur, die für die Speicherung einer Mehrzahl von Zeigern konfiguriert ist, wobei jeder Zeiger auf ein Element der ersten Datenstruktur verweist; eine dritte Datenstruktur einschließlich einer Mehrzahl von Übertragungseliminierungssätzen, wobei jeder Übertragungseliminierungssatz eine Mehrzahl von Bits aufweist, die eine Mehrzahl von logischen Registern repräsentieren; eine Logik, die für die die für die Ausführung einer Datenbearbeitungsoperation konfiguriert ist, indem ein Element der zweiten Datenstruktur dazu veranlasst wird, auf ein Element der ersten Datenstruktur zu verweisen, wobei die Logik weiterhin so konfiguriert ist, dass sie die Ergebnisse von zwei oder mehr Datenbearbeitungsoperationen durch Ausführung einer einzelnen Aktualisierung der dritten Datenstruktur widerspiegelt.
  2. Verarbeitungssystem nach Anspruch 1, dadurch gekennzeichnet, dass die Aktualisierung der dritten Datenstruktur mindestens einen der folgenden Schritte umfasst: Erstellen eines Übertragungseliminierungssatzes, Verändern eines Übertragungseliminierungssatzes oder Rückgewinnung eines Übertragungseliminierungssatzes.
  3. Verarbeitungssystem nach Anspruch 1 oder 2, dadurch gekennzeichnet, dass die Logik für die Aktualisierung der dritten Datenstruktur auf der Grundlage der Vorausberechnung der Abhängigkeiten von zwei oder mehr Datenbearbeitungsoperationen konfiguriert ist.
  4. Verarbeitungssystem nach einem der Ansprüche 1 bis 3, dadurch gekennzeichnet, dass die Logik für die Reservierung mindestens eines der folgenden Sätze konfiguriert ist: eines ersten Übertragungseliminierungssatzes in der Domäne von frei verwendbaren logischen Ganzzahlregistern oder eines zweiten Übertragungseliminierungssatzes in der Domäne von Streaming Single Instruction Multiple Data (SIMD) Extensions (SSE) Logikregistern.
  5. Verarbeitungssystem nach einem der Ansprüche 1 bis 4, dadurch gekennzeichnet, dass die Logik für die Ausgabe eines Signals zur Aktualisierung der dritten Datenstruktur durch Verarbeitung von mindestens einem der folgenden Signale konfiguriert ist: einem ersten Signal, das einen vorherigen Zustand der dritten Datenstruktur widerspiegelt, einem zweiten Signal, das ein logisches Quellregister für eine Datenbearbeitungsoperation kennzeichnet, einem dritten Signal, das ein logisches Zielregister für eine Datenbearbeitungsoperation kennzeichnet, einem vierten Signal, das kennzeichnet, ob ein vorhandener Übertragungseliminierungssatz mindestens einen Verweis enthält, einem fünften Signal, das einen neuen Übertragungseliminierungssatz innerhalb der dritten Datenstruktur kennzeichnet, und einem sechsten Signal, das kennzeichnet, ob die Datenbearbeitungsoperation für Übertragungseliminierung ausgewählt wurde.
  6. Verarbeitungssystem nach einem der Ansprüche 1 bis 5, dadurch gekennzeichnet, dass die Logik für die Erkennung von mindestens einem der folgenden Vorgänge konfiguriert ist: einer ersten Datenbearbeitungsoperation mit einem Zielregister, das mit einer Quelle einer zweiten Datenbearbeitungsoperation übereinstimmt, zweier Datenbearbeitungsoperationen, die ein gemeinsames Register als Quelle verwenden, und eines dazwischen liegenden Schreibvorgangs in das Quellregister, zweier Datenbearbeitungsoperationen, die ein gemeinsames Register als Quelle verwenden, einer ersten Datenbearbeitungsoperation mit einem Zielregister, das mit der Quelle einer zweiten Datenbearbeitungsoperation übereinstimmt, und eines dazwischen liegenden Schreibvorgangs in das Zielregister oder einer ersten Datenbearbeitungsoperation, die ein Register überschreibt, auf das ein vorhandener Übertragungseliminierungssatz verweist und das eine Quelle einer zweiten Datenbearbeitungsoperation ist.
  7. Verfahren zur Ausführung einer Datenbearbeitungsoperation, aufweisend: Speichern einer Mehrzahl von physischen Registerwerten in einer ersten Datenstruktur durch ein Computersystem; Speichern einer Mehrzahl von Zeigern in einer zweiten Datenstruktur, wobei jeder Zeiger auf ein Element der ersten Datenstruktur verweist; Speichern einer Mehrzahl von Übertragungseliminierungssätzen in einer dritten Datenstruktur, wobei jeder Übertragungseliminierungssatz eine Mehrzahl von Bits aufweist, die eine Mehrzahl von logischen Registern repräsentieren; Ausführung einer Datenbearbeitungsoperation, indem ein Element der zweiten Datenstruktur dazu veranlasst wird, auf ein Element der ersten Datenstruktur zu verweisen; und Widerspiegelung der Ergebnisse von zwei oder mehr Datenbearbeitungsoperationen durch Ausführung einer einzelnen Aktualisierung der dritten Datenstruktur.
  8. Verfahren nach Anspruch 7, dadurch gekennzeichnet, dass die Aktualisierung der dritten Datenstruktur mindestens einen der folgenden Schritte umfasst: Erstellen eines Übertragungseliminierungssatzes, Verändern eines Übertragungseliminierungssatzes oder Rückgewinnung eines Übertragungseliminierungssatzes.
  9. Verfahren nach Anspruch 7 oder 8, weiterhin umfassend die Reservierung mindestens eines der folgenden Sätze: eines ersten Übertragungseliminierungssatzes in der Domäne von frei verwendbaren logischen Ganzzahlregistern oder eines zweiten Übertragungseliminierungssatzes in der Domäne von Streaming Single Instruction Multiple Data (SIMD) Extensions (SSE) Logikregistern.
  10. Verfahren nach einem der Ansprüche 7 bis 9, weiterhin umfassend die Ausgabe eines Signals zur Aktualisierung der dritten Datenstruktur durch Verarbeitung von mindestens einem der folgenden Signale: einem ersten Signal, das einen vorherigen Zustand der dritten Datenstruktur widerspiegelt, einem zweiten Signal, das ein logisches Quellregister für eine Datenbearbeitungsoperation kennzeichnet, einem dritten Signal, das ein logisches Zielregister für eine Datenbearbeitungsoperation kennzeichnet, einem vierten Signal, das kennzeichnet, ob ein vorhandener Übertragungseliminierungssatz mindestens einen Verweis enthält, einem fünften Signal, das einen neuen Übertragungseliminierungssatz innerhalb der dritten Datenstruktur kennzeichnet, und einem sechsten Signal, das kennzeichnet, ob die Datenbearbeitungsoperation für Übertragungseliminierung ausgewählt wurde.
  11. Verfahren nach einem der Ansprüche 7 bis 10, weiterhin umfassend die Erkennung von mindestens einem der folgenden Vorgänge: einer ersten Datenbearbeitungsoperation mit einem Zielregister, das mit einer Quelle einer zweiten Datenbearbeitungsoperation übereinstimmt, zweier Datenbearbeitungsoperationen, die ein gemeinsames Register als Quelle verwenden, und eines dazwischen liegenden Schreibvorgangs in das Quellregister, zweier Datenbearbeitungsoperationen, die ein gemeinsames Register als Quelle verwenden, einer ersten Datenbearbeitungsoperation mit einem Zielregister, das mit der Quelle einer zweiten Datenbearbeitungsoperation übereinstimmt, und eines dazwischen liegenden Schreibvorgangs in das Zielregister oder einer ersten Datenbearbeitungsoperation, die ein Register überschreibt, auf das ein vorhandener Übertragungseliminierungssatz verweist und das eine Quelle einer zweiten Datenbearbeitungsoperation ist.
  12. Verfahren nach einem der Ansprüche 7 bis 11, dadurch gekennzeichnet, dass die Aktualisierung der dritten Datenstruktur auf der Grundlage der Vorausberechnung der Abhängigkeiten von zwei oder mehr Datenbearbeitungsoperationen ausgeführt wird.
  13. Verarbeitungssystem, umfassend: eine erste Datenstruktur, die für die Speicherung einer Mehrzahl von physischen Registerwerten konfiguriert ist; eine zweite Datenstruktur, die für die Speicherung einer Mehrzahl von Zeigern konfiguriert ist, wobei jeder Zeiger auf ein Element der ersten Datenstruktur verweist; eine dritte Datenstruktur, die eine erste Mehrzahl von Übertragungseliminierungssätzen und eine zweite Mehrzahl von Übertragungseliminierungssätzen umfasst, wobei jeder Übertragungseliminierungssatz der ersten Mehrzahl von Übertragungseliminierungssätzen eine Mehrzahl von Bits, die eine Mehrzahl von logischen Ganzzahlregistern repräsentieren, aufweist, jeder Übertragungseliminierungssatz der zweiten Mehrzahl von Übertragungseliminierungssätzen eine Mehrzahl von Bits, die eine Mehrzahl von logischen Streaming Single Instruction Multiple Data (SIMD) Extensions (SSE) Registern repräsentieren, aufweist; und eine Logik, die für das Reservieren eines ersten Übertragungseliminierungssatzes der ersten Mehrzahl von Übertragungseliminierungssätzen und eines zweiten Übertragungseliminierungssatzes der zweiten Mehrzahl von Übertragungseliminierungssätzen konfiguriert ist, wobei die Logik weiterhin für die Ausführung einer Datenbearbeitungsoperation durch Aktualisieren der zweiten Datenstruktur und entweder des ersten Übertragungseliminierungssatzes oder Übertragungseliminierungssatzes konfiguriert ist.
  14. Verarbeitungssystem nach Anspruch 13, dadurch gekennzeichnet, dass die Logik weiterhin für die Ausgabe eines Signals zur Aktualisierung der dritten Datenstruktur durch Verarbeitung von mindestens einem der folgenden Signale konfiguriert ist: einem ersten Signal, das einen vorherigen Zustand der dritten Datenstruktur widerspiegelt, einem zweiten Signal, das ein logisches Quellregister für eine Datenbearbeitungsoperation kennzeichnet, einem dritten Signal, das ein logisches Zielregister für eine Datenbearbeitungsoperation kennzeichnet, einem vierten Signal, das kennzeichnet, ob ein vorhandener Übertragungseliminierungssatz mindestens einen Verweis enthält, einem fünften Signal, das einen neuen Übertragungseliminierungssatz innerhalb der dritten Datenstruktur kennzeichnet, und einem sechsten Signal, das kennzeichnet, ob die Datenbearbeitungsoperation für Übertragungseliminierung ausgewählt wurde.
  15. Verarbeitungssystem nach Anspruch 13 oder 14, dadurch gekennzeichnet, dass die Logik weiterhin für die Erkennung von mindestens einem der folgenden Vorgänge konfiguriert ist: einer ersten Datenbearbeitungsoperation mit einem Zielregister, das mit einer Quelle einer zweiten Datenbearbeitungsoperation übereinstimmt, zweier Datenbearbeitungsoperationen, die ein gemeinsames Register als Quelle verwenden, und eines dazwischen liegenden Schreibvorgangs in das Quellregister, zweier Datenbearbeitungsoperationen, die ein gemeinsames Register als Quelle verwenden, einer ersten Datenbearbeitungsoperation mit einem Zielregister, das mit der Quelle einer zweiten Datenbearbeitungsoperation übereinstimmt, und eines dazwischen liegenden Schreibvorgangs in das Zielregister oder einer ersten Datenbearbeitungsoperation, die ein Register überschreibt, auf das ein vorhandener Übertragungseliminierungssatz verweist und das eine Quelle einer zweiten Datenbearbeitungsoperation ist.
  16. Verarbeitungssystem nach einem der Ansprüche 13 bis 15, dadurch gekennzeichnet, dass die Logik weiter konfiguriert ist, um: Abhängigkeiten von zwei oder mehr Datenbearbeitungsoperationen vorauszuberechnen; und die Ergebnisse von zwei oder mehr Datenbearbeitungsoperationen durch Ausführung einer einzelnen Aktualisierung der dritten Datenstruktur widerzuspiegeln.
  17. Verarbeitungssystem nach einem der Ansprüche 13 bis 16, dadurch gekennzeichnet, dass die Logik für die Ausführung von mindestens einem der folgenden Schritte konfiguriert ist: Erstellen eines Übertragungseliminierungssatzes, Verändern eines Übertragungseliminierungssatzes oder Rückgewinnung eines Übertragungseliminierungssatzes.
  18. Verfahren zur Ausführung einer Datenbearbeitungsoperation, aufweisend: Speichern einer Mehrzahl von physischen Registerwerten in einer ersten Datenstruktur durch ein Computersystem; Speichern einer Mehrzahl von Zeigern in einer zweiten Datenstruktur, wobei jeder Zeiger auf ein Element der ersten Datenstruktur verweist; Speichern einer ersten Mehrzahl von Übertragungseliminierungssätzen und einer zweiten Mehrzahl von Übertragungseliminierungssätzen in einer dritten Datenstruktur, wobei jeder Übertragungseliminierungssatz der ersten Mehrzahl von Übertragungseliminierungssätzen eine Mehrzahl von Bits, die eine Mehrzahl von logischen Ganzzahlregistern repräsentieren, aufweist, jeder Übertragungseliminierungssatz der zweiten Mehrzahl von Übertragungseliminierungssätzen eine Mehrzahl von Bits, die eine Mehrzahl von logischen Streaming Single Instruction Multiple Data (SIMD) Extensions (SSE) Registern repräsentieren, aufweist; Reservieren eines ersten Übertragungseliminierungssatzes der ersten Mehrzahl von Übertragungseliminierungssätzen und eines zweiten Übertragungseliminierungssatzes der zweiten Mehrzahl von Übertragungseliminierungssätzen; und Ausführung einer Datenbearbeitungsoperation durch Aktualisieren der zweiten Datenstruktur und entweder des ersten Übertragungseliminierungssatzes oder des zweiten Übertragungseliminierungssatzes.
  19. Verfahren nach Anspruch 18, weiterhin umfassend die Ausgabe eines Signals zur Aktualisierung der dritten Datenstruktur durch Verarbeitung von mindestens einem der folgenden Signale: einem ersten Signal, das einen vorherigen Zustand der dritten Datenstruktur widerspiegelt, einem zweiten Signal, das ein logisches Quellregister für eine Datenbearbeitungsoperation kennzeichnet, einem dritten Signal, das ein logisches Zielregister für eine Datenbearbeitungsoperation kennzeichnet, einem vierten Signal, das kennzeichnet, ob ein vorhandener Übertragungseliminierungssatz mindestens einen Verweis enthält, einem fünften Signal, das einen neuen Übertragungseliminierungssatz innerhalb der dritten Datenstruktur kennzeichnet, und einem sechsten Signal, das kennzeichnet, ob die Datenbearbeitungsoperation für Übertragungseliminierung ausgewählt wurde.
  20. Verfahren nach Anspruch 18 oder 19, weiterhin umfassend die Erkennung von mindestens einem der folgenden Vorgänge: einer ersten Datenbearbeitungsoperation mit einem Zielregister, das mit einer Quelle einer zweiten Datenbearbeitungsoperation übereinstimmt, zweier Datenbearbeitungsoperationen, die ein gemeinsames Register als Quelle verwenden, und eines dazwischen liegenden Schreibvorgangs in das Quellregister, zweier Datenbearbeitungsoperationen, die ein gemeinsames Register als Quelle verwenden, einer ersten Datenbearbeitungsoperation mit einem Zielregister, das mit der Quelle einer zweiten Datenbearbeitungsoperation übereinstimmt, und eines dazwischen liegenden Schreibvorgangs in das Zielregister oder einer ersten Datenbearbeitungsoperation, die ein Register überschreibt, auf das ein vorhandener Übertragungseliminierungssatz verweist und das eine Quelle einer zweiten Datenbearbeitungsoperation ist.
  21. Verfahren nach einem der Ansprüche 18 bis 20, weiter umfassend: Vorausberechnen von Abhängigkeiten von zwei oder mehr Datenbearbeitungsoperationen; und Widerspiegeln der Ergebnisse von zwei oder mehr Datenbearbeitungsoperationen durch Ausführung einer einzelnen Aktualisierung der dritten Datenstruktur.
  22. Verfahren nach einem der Ansprüche 18 bis 21, das weiterhin das Ausführen von mindestens einem der folgenden Schritte umfasst: Erstellen eines Übertragungseliminierungssatzes, Verändern eines Übertragungseliminierungssatzes oder Rückgewinnung eines Übertragungseliminierungssatzes.
  23. Eine Vorrichtung, umfassend: einen Speicher; und ein an den Speicher gekoppeltes Verarbeitungssystem; dadurch gekennzeichnet, dass das Verarbeitungssystem für die Ausführung des Verfahrens nach einem der Ansprüche 7–12 konfiguriert ist.
  24. Eine Vorrichtung, umfassend: einen Speicher; und ein an den Speicher gekoppeltes Verarbeitungssystem; dadurch gekennzeichnet, dass das Verarbeitungssystem für die Ausführung des Verfahrens nach einem der Ansprüche 18–22 konfiguriert ist.
DE102014003799.1A 2013-03-15 2014-03-17 Systeme und Verfahren zur Übertragungseliminierung mit Bypass-Mehrfachinstanziierungstabelle Withdrawn DE102014003799A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/840,462 2013-03-15
US13/840,462 US9256433B2 (en) 2013-03-15 2013-03-15 Systems and methods for move elimination with bypass multiple instantiation table

Publications (1)

Publication Number Publication Date
DE102014003799A1 true DE102014003799A1 (de) 2014-09-18

Family

ID=51418953

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102014003799.1A Withdrawn DE102014003799A1 (de) 2013-03-15 2014-03-17 Systeme und Verfahren zur Übertragungseliminierung mit Bypass-Mehrfachinstanziierungstabelle

Country Status (6)

Country Link
US (1) US9256433B2 (de)
JP (1) JP5758515B2 (de)
KR (1) KR101594502B1 (de)
CN (1) CN104049950B (de)
DE (1) DE102014003799A1 (de)
GB (1) GB2512471B (de)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE112018000138B4 (de) 2017-01-23 2022-03-24 International Business Machines Corporation Schaltung, System und Verfahren zum Verbinden mehrerer Ausführungseinheiten zum Berechnen eines einzelnen breiten Skalaren Ergebnisses

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10417001B2 (en) * 2012-12-27 2019-09-17 Intel Corporation Physical register table for eliminating move instructions
US9292288B2 (en) * 2013-04-11 2016-03-22 Intel Corporation Systems and methods for flag tracking in move elimination operations
CN106149284B (zh) * 2015-04-28 2019-04-26 青岛海尔洗衣机有限公司 一种洗衣机故障检测处理方法
US9792147B2 (en) * 2015-07-02 2017-10-17 International Business Machines Corporation Transactional storage accesses supporting differing priority levels
US10261790B2 (en) * 2016-03-31 2019-04-16 Intel Corporation Memory copy instructions, processors, methods, and systems
US10282296B2 (en) * 2016-12-12 2019-05-07 Intel Corporation Zeroing a cache line
US20180203694A1 (en) * 2017-01-16 2018-07-19 Intel Corporation Execution Unit with Selective Instruction Pipeline Bypass
US10402355B2 (en) * 2017-02-08 2019-09-03 Texas Instruments Incorporated Apparatus and mechanism to bypass PCIe address translation by using alternative routing
CN110312992A (zh) 2017-03-20 2019-10-08 英特尔公司 用于片矩阵乘法和累加的系统、方法和装置
US11275588B2 (en) 2017-07-01 2022-03-15 Intel Corporation Context save with variable save state size
US10884752B2 (en) 2017-11-29 2021-01-05 International Business Machines Corporation Slice-based allocation history buffer
GB2576572B (en) * 2018-08-24 2020-12-30 Advanced Risc Mach Ltd Processing of temporary-register-using instruction
US10949205B2 (en) * 2018-12-20 2021-03-16 International Business Machines Corporation Implementation of execution compression of instructions in slice target register file mapper
US11321344B2 (en) * 2019-09-20 2022-05-03 Sap Se Virtual database tables with updatable logical table pointers

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0337722A (ja) * 1989-07-05 1991-02-19 Nec Corp 情報処理装置
US5838941A (en) 1996-12-30 1998-11-17 Intel Corporation Out-of-order superscalar microprocessor with a renaming device that maps instructions from memory to registers
US6505293B1 (en) * 1999-07-07 2003-01-07 Intel Corporation Register renaming to optimize identical register values
US6553483B1 (en) * 1999-11-29 2003-04-22 Intel Corporation Enhanced virtual renaming scheme and deadlock prevention therefor
KR100385356B1 (ko) * 2000-10-31 2003-05-27 김현수 복합 테이프 전사구
US6957323B2 (en) * 2001-11-14 2005-10-18 Elan Research, Inc. Operand file using pointers and reference counters and a method of use
US7647481B2 (en) * 2005-02-25 2010-01-12 Qualcomm Incorporated Reducing power by shutting down portions of a stacked register file
WO2006126449A1 (ja) * 2005-05-26 2006-11-30 Nec Corporation 情報処理装置および命令実行方法
US20090327661A1 (en) * 2008-06-30 2009-12-31 Zeev Sperber Mechanisms to handle free physical register identifiers for smt out-of-order processors
US8914617B2 (en) 2009-12-26 2014-12-16 Intel Corporation Tracking mechanism coupled to retirement in reorder buffer for indicating sharing logical registers of physical register in record indexed by logical register
US20120005459A1 (en) 2010-12-28 2012-01-05 Advanced Micro Devices, Inc. Processor having increased performance and energy saving via move elimination
US8661230B2 (en) * 2011-04-15 2014-02-25 International Business Machines Corporation Allocation of counters from a pool of counters to track mappings of logical registers to physical registers for mapper based instruction executions
WO2013101323A1 (en) * 2011-12-30 2013-07-04 Intel Corporation Micro-architecture for eliminating mov operations
US9454371B2 (en) * 2011-12-30 2016-09-27 Intel Corporation Micro-architecture for eliminating MOV operations
US8949639B2 (en) 2012-06-29 2015-02-03 Intel Corporation User behavior adaptive sensing scheme for efficient power consumption management
US10417001B2 (en) * 2012-12-27 2019-09-17 Intel Corporation Physical register table for eliminating move instructions

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE112018000138B4 (de) 2017-01-23 2022-03-24 International Business Machines Corporation Schaltung, System und Verfahren zum Verbinden mehrerer Ausführungseinheiten zum Berechnen eines einzelnen breiten Skalaren Ergebnisses

Also Published As

Publication number Publication date
US20140281432A1 (en) 2014-09-18
GB2512471B (en) 2015-06-03
GB201402777D0 (en) 2014-04-02
GB2512471A (en) 2014-10-01
JP2014182803A (ja) 2014-09-29
JP5758515B2 (ja) 2015-08-05
US9256433B2 (en) 2016-02-09
CN104049950A (zh) 2014-09-17
KR20140113434A (ko) 2014-09-24
KR101594502B1 (ko) 2016-02-16
CN104049950B (zh) 2017-04-12

Similar Documents

Publication Publication Date Title
DE102014003799A1 (de) Systeme und Verfahren zur Übertragungseliminierung mit Bypass-Mehrfachinstanziierungstabelle
DE102014003399A1 (de) Systeme und Verfahren zur Implementierung transaktionalen Speichers
DE112011104555B4 (de) Vektorkonfliktinstruktionen
DE102018005216A1 (de) Prozessoren, Verfahren und Systeme für einen konfigurierbaren, räumlichen Beschleuniger mit Transaktions- und Wiederholungsmerkmalen
DE102014003795A1 (de) Verfahren und Vorrichtungen für Fusionsbefehle zur Bereitstellung der OR-Test- und AND-Test-Funktionalität auf mehreren Testquellen
DE112017001825T5 (de) Prozessoren, verfahren, systeme und instruktionen zum atomischen speichern von daten, die breiter als eine nativ unterstützte datenbreite sind, in einem speicher
DE102018005105A1 (de) Befehle für entfernte atomare operationen
DE112013004867T5 (de) Befehl und Logik zum Bereitstellen von Push-Puffer-Kopier- und Speicher-Funktionalität
DE102014003563A1 (de) Fusionierbare befehle und logik zum versehen mit or-test- und and-test-funktionalität unter benutzen von mehrfachtestquellen
DE112013005416T5 (de) Verfahren, Vorrichtungen, Befehle und Logik zum Bereitstellen von Vektoradressenkonflikt-Detektionsfunktionalität
DE102014004563A1 (de) Befehle und Logik zur Bereitstellung verbesserter Paging-Fähigkeiten für Secure Enclave-Seitencaches
DE102014003689A1 (de) Verfolgung des kontrollflusses von befehlen
DE102015006863A1 (de) Befehle und Logik zum Unterbrechen und Wiederaufnehmen von Paging in Secure Enclaves
DE102014003671A1 (de) Prozessoren, verfahren und systeme zum entspannen der synchronisation von zugriffen auf einen gemeinsam genutzten speicher
DE102013021221A1 (de) Befehle und Logik zur Vektorisierung von bedingten Schleifen
DE102018002525A1 (de) Hybridatomaritätsunterstützung für einen binärübersetzungsbasierten mikroprozessor
DE102012216571A1 (de) Nutzung einer architekturdefinierten letztverwendungs-operandenangabe in einem computersystem-operandenressourcenpool
DE112012007088B4 (de) Vorrichtung, verfahren und system mit einem befehl zum reduzieren von elementen in einem vektorregister mit einem schrittweisem zugriffsmuster
DE102012216565A1 (de) Decodierzeit-computeranweisungsoptimierung
DE112018006127B4 (de) Abschliessen von verbundenen einträgen einer globalen abschlusstabelle in einem out-of-order-prozessor
DE112011105665T5 (de) Befehl und Logik zum Liefern von Vektorladen und -speichern mit Schritt- und Maskierfunktionalität
DE102018001229A1 (de) Beschleunigerschaltung mit variabler Wortlänge für ein neuronales Netzwerk
DE112017001716T5 (de) Speicherkopierbefehle, prozessoren, verfahren und systeme
DE112013004783T5 (de) Durch Lese- und Schreibmasken gesteuerter Vektor-Verschiebebefehl
DE112013004800T5 (de) Anweisung zur Bitverschiebung nach links mit Ziehen von Einsen in niedrigwertigere Bit

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee