DE102009051388A1 - Technik zur Förderung effizienter Befehlsfusion - Google Patents

Technik zur Förderung effizienter Befehlsfusion

Info

Publication number
DE102009051388A1
DE102009051388A1 DE200910051388 DE102009051388A DE102009051388A1 DE 102009051388 A1 DE102009051388 A1 DE 102009051388A1 DE 200910051388 DE200910051388 DE 200910051388 DE 102009051388 A DE102009051388 A DE 102009051388A DE 102009051388 A1 DE102009051388 A1 DE 102009051388A1
Authority
DE
Grant status
Application
Patent type
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
DE200910051388
Other languages
English (en)
Inventor
Ron Gabor
Ido Ouziel
Pankaj Hillsboro Raghuvanshi
Lihu Rappoport
Robert Valentine
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

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING; 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, out of order instruction execution
    • G06F9/3853Instruction issuing, e.g. dynamic instruction scheduling, out of order instruction execution of compound instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/084Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0875Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4063Device-to-bus coupling
    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • GPHYSICS
    • G06COMPUTING; CALCULATING; 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/3017Runtime instruction translation, e.g. macros
    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • G06F9/30196Instruction operation extension or modification using decoder, e.g. decoder per instruction set, adaptable or programmable decoders
    • GPHYSICS
    • G06COMPUTING; CALCULATING; 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, out of order instruction execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/45Caching of specific data in cache memory
    • G06F2212/452Instruction code
    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/62Details of cache specific to multiprocessor cache arrangements
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing
    • Y02D10/10Reducing energy consumption at the single machine level, e.g. processors, personal computers, peripherals or power supply
    • Y02D10/14Interconnection, or transfer of information or other signals between, memories, peripherals or central processing units
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing
    • Y02D10/10Reducing energy consumption at the single machine level, e.g. processors, personal computers, peripherals or power supply
    • Y02D10/15Reducing energy consumption at the single machine level, e.g. processors, personal computers, peripherals or power supply acting upon peripherals
    • Y02D10/151Reducing energy consumption at the single machine level, e.g. processors, personal computers, peripherals or power supply acting upon peripherals the peripheral being a bus

Abstract

Eine Technik, um eine wirksame Befehlsfusion innerhalb eines Computersystems zu ermöglichen. Bei einer Ausführungsform verzögert eine Prozessorlogik die Verarbeitung eines zweiten Befehls für eine begrenzte Zeit, wenn ein erster Befehl innerhalb einer Befehlswarteschlange mit dem zweiten Befehl fusionierbar ist.

Description

  • Gebiet der Erfindung
  • [0001]
    Erfindungsgemäße Ausführungsformen betreffen im Allgemeinen das Gebiet der Datenverarbeitung und spezieller das Gebiet der Befehlsfusion in Computersystemen und Mikroprozessoren.
  • Hintergrund
  • [0002]
    Befehlsfusion ist ein Prozess, der zwei Befehle zu einem einzigen Befehl kombiniert, der zu einer Sequenz mit nur einer Operation (oder Mikrooperation, „uOP”) innerhalb eines Prozessors führt. Befehle, die in einer Befehlswarteschlange (Instruction Queue, IQ) eines Prozessors gespeichert sind, können „fusioniert” werden, nachdem sie aus der IQ ausgelesen wurden und bevor sie an Befehlsdecoder gesendet werden oder nachdem sie von den Befehlsdecodern decodiert wurden. Typischerweise wird eine Befehlsfusion, die auftritt, bevor der Befehl decodiert wird, als „Makro-Fusion” bezeichnet, wobei eine Befehlsfusion, die auftritt, nachdem der Befehl decodiert wurde (in uOPs beispielsweise), als „Mikro-Fusion” bezeichnet wird. Ein Beispiel einer Makro-Fusion ist die Kombination eines Vergleichsbefehls („CMP”) oder eines Testbefehls („TEST”) („CMP/TEST”) mit einem bedingten Sprungbefehl („JCC”). CMP/TEST und JCC Befehlspaare können regelmäßig in Programmen am Ende von Schleifen auftreten, beispielsweise dort, wo ein Vergleich durchgeführt wird und, basierend auf dem Ergebnis eines Vergleichs, ein Zweig genommen oder nicht genommen wird. Da Makro-Fusion den Befehlsdurchsatz wirksam steigern kann, kann es wünschenswert sein, so viele Gelegenheiten zur Befehlsfusion zu finden wie möglich.
  • [0003]
    Damit Befehlsfusionsgelegenheiten in einigen Prozessor-Mikroarchitekturen nach Stand der Technik gefunden werden, müssen sowohl die CMP/TEST als auch die JCC Befehle gleichzeitig in der IQ verbleiben, sodass sie fusioniert werden können, wenn die Befehle aus der IQ ausgelesen werden. Wenn es jedoch einen fusionierbaren CMP/TEST Befehl in der IQ gibt und keine weiteren Befehle in die IQ geschrieben wurden (d. h. der CMP/TEST Befehl ist der letzte Befehl in der IQ), kann der CMP/TEST Befehl aus der IQ ausgelesen werden und ohne fusioniert zu werden an den Decoder gesendet werden, auch wenn der nächste Befehl im Programmablauf ein JCC Befehl ist. Ein Beispiel, wo eine verfehlte Fusionsgelegenheit auftreten kann, ist, wenn der CMP/TEST und der JCC zufällig über eine Speichergrenze gehen (z. B. 16-Byte-Grenze), was dazu führt, dass der CMP/TEST in einem Zyklus in die IQ geschrieben wird und der JCC im darauffolgenden Zyklus geschrieben wird. Wenn es in diesem Fall keine blockierenden Bedingungen gibt, wird der JCC zur gleichen Zeit in die IQ geschrieben oder nachdem der CMP/TEST aus der IQ ausgelesen wurde, wodurch eine Fusionsgelegenheit verfehlt wird, was zu vielfachen unnötigen Lesezugriffen der IQ, verringertem Befehlsdurchsatz und übermäßigem Energieverbrauch führt.
  • Kurze Beschreibung der Zeichnungen
  • [0004]
    Erfindungsgemäße Ausführungsformen werden exemplarisch und in keiner Weise einschränkend in den Figuren der begleitenden Zeichnungen dargestellt, wobei gleiche Bezugsnummern zum Verweis auf ähnliche Elemente verwendet werden und in denen:
  • [0005]
    1 ein Blockdiagramm eines Mikroprozessors zeigt, bei dem mindestens eine erfindungsgemäße Ausführungsform verwendet werden kann;
  • [0006]
    2 ein Blockdiagramm eines gemeinsam genutzten Computer-Bussystems zeigt, bei dem mindestens eine erfindungsgemäße Ausführungsform verwendet werden kann;
  • [0007]
    3 ein Blockdiagramm einer Punkt-zu-Punkt-Kopplungsstruktur eines Computersystems zeigt, bei der mindestens eine erfindungsgemäße Ausführungsform verwendet werden kann;
  • [0008]
    4 ein Blockdiagramm einer Zustandsmaschine zeigt, die zur Implementierung mindestens einer erfindungsgemäßen Ausführungsform verwendet werden kann;
  • [0009]
    5 ein Ablaufdiagramm von Operationen ist, die zur Ausführung von mindestens einer erfindungsgemäßen Ausführungsform verwendet werden können.
  • [0010]
    6 ein Ablaufdiagramm von Operationen ist, die in mindestens einer erfindungsgemäßen Ausführungsform ausgeführt werden können.
  • Ausführliche Beschreibung
  • [0011]
    Erfindungsgemäße Ausführungsformen können verwendet werden, um den Befehlsdurchsatz in einem Prozessor zu verbessern und/oder den Energieverbrauch des Prozessors zu verringern. Was bei einer Ausführungsform sonst verfehlte Gelegenheiten zur Befehlsfusion wären, werden gefunden, und als Ergebnis kann eine Befehlsfusion auftreten. Bei einer Ausführungsform werden vermeintlich verfehlte Befehlsfusionsgelegenheiten gefunden, indem der Lesezugriff eines letzten Befehls aus einer Befehlswarteschlange (IQ) oder die Ausgabe des Lesezugriffs des letzten Befehls von der IQ an eine Decodierungsphase für eine begrenzte Anzahl von Zyklen verzögert wird, sodass jegliche darauffolgende fusionierbaren Befehle abgerufen und in der IQ gespeichert werden können (oder zumindest identifiziert werden können, ohne notwendigerweise in der IQ gespeichert zu werden) und daraufhin mit dem letzten fusionierbaren Befehl fusioniert werden können. Bei einer Ausführungsform kann die Verzögerung des Lesezugriffs oder Ausgabe eines ersten fusionierbaren Befehls durch eine begrenzte Anzahl von Zyklen die Prozessorleistung verbessern, da dies zwei ansonsten fusionierbare Befehle vermeiden kann, die anstatt als ein einziger Befehl, getrennt decodiert und verarbeitet werden.
  • [0012]
    Die Auswahl des Grenzwertes für die Anzahl von Wartezyklen kann von der Mikroarchitektur abhängen, in der eine spezielle Ausführungsform verwendet wird. Bei einer Ausführungsform beispielsweise kann der Grenzwert für die Anzahl von Zyklen zwei sein, wobei der Grenzwert für die Anzahl von Zyklen bei anderen Ausführungsformen mehr oder weniger als zwei betragen kann. Bei einer Ausführungsform stellt der Grenzwert für die Anzahl von Wartezyklen die maximale Wartezeit auf einen darauffolgenden fusionierbaren Befehl bereit, der in die IQ gespeichert werden soll, während ein allgemeiner Latenz-/Leistungsvorteil beim Warten auf den darauffolgenden fusionierbaren Befehl gegenüber der Verarbeitung der fusionierbaren Befehle als individuelle Befehle aufrechterhalten wird. Bei anderen Ausführungsformen, bei denen die Leistung entscheidender ist, könnte beispielsweise der Grenzwert für die Anzahl von Wartezyklen höher sein, um sicherzustellen, dass zusätzliche Leistung nicht verwendet wird, um die beiden fusionierbaren Befehle getrennt zu verarbeiten, auch wenn die Anzahl von Wartezyklen zu einer Verringerung (sei es auch nur vorübergehend) beim Befehlsdurchsatz führen kann.
  • [0013]
    1 zeigt einen Mikroprozessor, bei dem mindestens eine erfindungsgemäße Ausführungsform verwendet werden kann. Insbesondere zeigt 1 einen Mikroprozessor 100, der einen oder mehrere Prozessorkerne 105 und 110 besitzt, von denen jeder mit einem lokalen Cache 107 bzw. 113 verbunden ist. 1 zeigt auch einen gemeinsam genutzten Cache-Speicher 115, der Versionen von mindestens einem Teil der Informationen speichern kann, die in jedem der lokalen Caches 107 und 113 gespeichert sind. Bei einigen Ausführungsformen kann Mikroprozessor 100 auch andere Logik umfassen, die nicht in 1 gezeigt wird, wie z. B. einen integrierten Memory-Controller, einen integrierten Grafikcontroller, sowie weitere Logik, um andere Funktionen innerhalb eines Computersystems, wie z. B. die Eingangs/Ausgangs-(I/O- Input/Output)-Steuerung, auszuführen. Bei einer Ausführungsform kann jeder Mikroprozessor in einem Mehrprozessorsystem oder jeder Prozessorkern in einem Mehrkernprozessor Logik 119 enthalten oder anderweitig damit in Verbindung stehen, um Interrupt-Kommunikationstechniken in Übereinstimmung mit mindestens einer Ausführungsform zu ermöglichen. Die Logik kann Schaltungen, Software oder beides beinhalten, um eine wirksamere Fusion von Befehlen zu ermöglichen als in einigen Implementierungen nach Stand der Technik.
  • [0014]
    Bei einer Ausführungsform kann Logik 119 Logik beinhalten, um die Wahrscheinlichkeit von verfehlten Befehlsfusionsgelegenheiten zu verringern. Bei einer Ausführungsform verzögert Logik 119 den Lesezugriff eines ersten Befehls (z. B. CMP) aus der IQ, wenn es keinen darauffolgenden, in der IQ gespeicherten Befehl oder eine andere abgerufene Befehlsspeicherstruktur gibt. Bei einer Ausführungsform löst die Logik 119 den Lesezugriff oder die Ausgabe eines ersten fusionierbaren Befehls für eine begrenzte Anzahl von Zyklen (z. B. zwei Zyklen) aus, bevor die IQ gelesen oder der erste fusionierbare Befehl an einen Decoder oder andere verarbeitende Logik ausgegeben wird, derart, dass die Gelegenheit, die beiden fusionierbaren Befehle zu fusionieren, wenn es einen zweiten fusionierbaren Befehl gibt, der mit dem ersten Befehl, der noch nicht in der IQ gespeichert ist (beispielsweise aufgrund der zwei fusionierbaren Befehle, die in einem Speicher oder Cache in verschiedenen Speichergrenzen gespeichert sind), fusioniert werden kann, nicht verfehlt werden kann. Bei einigen Ausführungsformen kann der Grenzwert unveränderlich sein, während er bei anderen Ausführungsformen variabel, von einem Benutzer oder gemäß einem benutzerunabhängigen Algorithmus modifizierbar sein kann. Bei einer Ausführungsform ist der erste fusionierbare Befehl ein CMP Befehl und der zweite fusionierbare Befehl ist ein JCC Befehl. Bei anderen Ausführungsformen können entweder der erste oder der zweite Befehl oder beide kein CMP oder JCC Befehl sein, sondern irgendwelche fusionierbare Befehle. Außerdem können erfindungsqgemäße Ausführungsformen zur Fusion von mehr als zwei Befehlen angewendet werden.
  • [0015]
    2 zeigt beispielsweise ein Front-Side-Bus-(FSB)-Computersystem, bei dem eine erfindungsgemäße Ausführungsform verwendet werden kann. Jeder Prozessor 201, 205, 210 oder 215 kann auf Informationen von jedem lokalen Level Eins-(L1)-Cache-Speicher 220, 225, 230, 235, 240, 245, 250, 255 innerhalb oder anderweitig in Verbindung mit einem der Prozessorkerne 223, 227, 233, 237, 243, 247, 253, 257 stehend zugreifen. Außerdem kann jeder Prozessor 201, 205, 210 oder 215 auf Informationen von jedem der gemeinsam genutzten Level Zwei-(L2)-Caches 203, 207, 213, 217 oder vom Systemspeicher 260 über den Chipsatz 265 zugreifen. Ein Prozessor oder mehrere der Prozessoren in 2 können Logik 219 beinhalten oder anderweitig damit in Verbindung stehen, um eine verbesserte Wirksamkeit von Befehlsfusion in Übereinstimmung mit mindestens einer Ausführungsform zu ermöglichen.
  • [0016]
    Zusätzlich zu dem in 2 gezeigten FSB-Computersystem können andere Systemkonfigurationen in Verbindung mit verschiedenen erfindungsgemäßen Ausführungsformen, einschließlich Punkt-zu-Punkt-(P2P)-Kopplungssysteme und Ringkopplungssysteme, verwendet werden. Das P2P-System nach 3 kann beispielsweise mehrere Prozessoren umfassen, von denen nur zwei, nämlich Prozessor 370, 380, exemplarisch gezeigt werden. Die Prozessoren 370, 380 können je einen lokalen Memory-Controller-Hub (MCH) 372, 382 für die Verbindung mit dem Speicher 32, 34 enthalten. Die Prozessoren 370, 380 können über eine Punkt-zu-Punkt-(PtP)-Schnittstelle 350 unter Verwendung von PtP-Schnittstellenschaltungen 378, 388 Daten austauschen. Die Prozessoren 370, 380 können mit einem Chipsatz 390 über einzelne PtP-Schnittstellen 352, 354 Daten austauschen, wobei die Punkt-zu-Punkt-Schnittstellenschaltungen 376, 394, 386, 398 verwendet werden. Der Chipsatz 390 kann auch mit einer Hochleistungsgrafikschaltung 338 über eine Hochleistungsgrafikschnittstelle 339 Daten austauschen. Erfindungsgemäße Ausführungsformen können innerhalb jedes Prozessors mit beliebiger Anzahl an Prozessorkernen oder innerhalb jedes PtP-Bus-Agenten von 3 angeordnet sein. Bei einer Ausführungsform kann jeder Prozessorkern einen lokalen Cache-Speicher (nicht abgebildet) enthalten oder anderweitig damit in Verbindung stehen. Außerdem kann in jedem Prozessor ein gemeinsam genutzter Cache (nicht abgebildet) außerhalb von den beiden Prozessoren enthalten sein, der jedoch mit den Prozessoren über die P2P-Kopplungsstruktur derart verbunden ist, dass eine oder beide der lokalen Cache-Informationen der Prozessoren im gemeinsam genutzten Cache gespeichert werden können, wenn ein Prozessor in einen Energiesparmodus versetzt wird. Ein Prozessor oder mehrere der Prozessoren oder Kerne in 3 können Logik 319 enthalten oder anderweitig damit in Verbindung stehen, um eine verbesserte Wirksamkeit von Befehlsfusion in Übereinstimmung mit mindestens einer Ausführungsform zu ermöglichen.
  • [0017]
    Bei mindestens einer Ausführungsform kann ein zweiter fusionierbarer Befehl nicht in eine IQ gespeichert werden, bevor eine Zwischenoperation eintritt (die zwischen einem ersten und zweiten fusionierbaren Befehl eintritt), wie beispielsweise eine IQ Leerungsoperation, die eine verfehlte Gelegenheit veranlasst, die beiden ansonsten fusionierbaren Befehle zu fusionieren. Bei einer Ausführungsform bei der ein Cache (oder ein Puffer) verwandte Sequenzen decodierter Befehle (nachdem sie aus der IQ ausgelesen und decodiert wurden) oder uOPs (z. B. „decoded stream buffer – Puffer für den decodierten Datenstrom” oder „DSB”, „Trace-Cache” oder „TC”), die für die Ausführung durch den Prozessor gescheduled werden müssen (eventuell mehrfach), speichert, kann eine erste fusionierbare uOP (z. B. CMP) in dem Cache ohne eine fusionierbare zweite uOP (z. B. JCC) innerhalb desselben adressierbaren Bereichs (z. B. gleicher Cache-Weg) gespeichert werden. Dies kann beispielsweise eintreten, wo ein JCC eine Cache-Line kreuzt (aufgrund eines Cache-Miss) oder wo er eine Seitengrenze kreuzt (aufgrund eines Translation Lookaside Buffer Miss), wobei in diesem Fall der Cache den CMP ohne den JCC speichern kann. Wenn anschließend die Prozessorkernpipeline geleert ist (beispielsweise aufgrund eines zugesicherten „Leerungs”-Signals) nachdem der CMP gespeichert wurde, aber bevor der JCC in dem Cache gespeichert wird, speichert der Cache nur den CMP auf eine Art ohne den JCC.
  • [0018]
    Bei darauffolgenden Lookups in der den CMP speichernden Cache-Line kann der Cache den fehlenden JCC als einen verfehlten Zugriff interpretieren und der JCC kann als der Anfügepunkt für die nächste Operation zum Füllen des Caches markiert werden. Dieser Anfügepunkt kann jedoch nicht gefunden werden, da der CMP + JCC als fusioniert aus der IQ ausgelesen werden können. Daher kann der angefragte JCC keiner zu füllenden uOP entsprechen, die von der IQ kommt und somit ist der Cache nicht in der Lage, den fehlenden JCC zu füllen, sondern verfehlt ständig auf der Linie, auf der der fusionierte CMP + JCC erwartet wird. Außerdem kann bei einer Ausführungsform, bei der eine ausstehende Füllanfragewarteschlange (PFRQ) zur Speicherung von uOP-Cachefüllanfragen verwendet wird, ein Eintrag, der für eine spezielle fusionierte Befehlsfüllung reserviert war, nicht freigegeben werden (da die erwartete fusionierte Befehlsfüllung niemals stattfindet) und er kann bis zur nächsten Leerungsoperation nutzlos bleiben. Bei einer Ausführungsform kann eine Sperre eines PFRQ Eintrags jedes Mal auftreten, wenn auf den verfehlten fusionierten Befehlseintrag zugegriffen wird, und kann daher jegliche darauffolgenden Füllungen derselben Stelle verhindern.
  • [0019]
    Um eine fehlerhafte oder unerwünschte Sperre des PFRQ Eintrags zu verhindern, kann bei einer Ausführungsform eine Zustandsmaschine verwendet werden, um die uOPs zu überwachen, die aus der IQ ausgelesen werden, um Fälle aufzudecken, in denen eine Region, die einen entsprechenden PFRQ Eintrag aufweist (z. B. eine für eine Füllung markierte Region), aufgrund von beispielsweise der letzten uOP des Eintrags, die erreicht wurde, ohne dass der Füllstartpunkt aufgedeckt wurde, vollständig verfehlt wurde. Bei einer Ausführungsform kann die Zustandsmaschine zu einer Freigabe des PFRQ Eintrags führen, wenn diese Bedingung erfüllt wird. Bei anderen Ausführungsformen kann eine unerwünschte Sperre des PFRQ Eintrags vermieden werden, indem innerhalb des Caches kein fusionierbarer Befehl erzeugt wird, der aus der IQ ausgelesen werden kann, ohne dass beide fusionierbaren Befehle anstehen. Wenn beispielsweise ein nicht-JCC Befehl auf einen CMP folgt, kann ein fusionierter Befehlseintrag in dem Cache erzeugt werden, aber nur, wenn der CMP aus der IQ alleine ausgelesen wird (nachdem beispielsweise der Grenzwert für die Wartezeit überschritten wird), wird der fusionierte Befehlseintrag nicht in den Cache gefüllt. Bei anderen Ausführungsformen kann gezählt werden, wie oft die Zustandsmaschine eine Füllregion entdeckt hat, die übersprungen wurde, ein Cache-Flush oder eine Entwertungsoperation kann ausgeführt werden, nachdem die Füllregion begrenzt oft übersprungen wurde. Die Füllregion kann dann aus dem Cache entfernt werden und der fusionierte Befehl kann dann erneut gefüllt werden.
  • [0020]
    4 zeigt eine Zustandsmaschine gemäß einer Ausführungsform, die verwendet werden kann, um unerwünschte PFRQ-Eintragssperrbedingungen aufgrund eines verfehlten fusionierbaren Befehls in der IQ zu verhindern. In Zustand 401, in dem die Befehle in der IQ sich nicht in einer Region befinden, die zur Füllung markiert ist, gibt ein „Füllregion Start”-Signal an, dass die IQ bereit ist, einen Befehl zu verarbeiten, der einer Füllregion zugeordnet ist (ein Befehl von der Füllregion gemäß dem Cache-Hashing), aber sie fängt nicht an dem in der PFRQ 405 gespeicherten linearen Befehlszeiger („LIP”) an. Dies kann dazu führen, dass die Zustandsmaschine zu Zustand 410 übergeht. Wenn der nächste Befehl in der IQ (der bald decodiert wird) eine Füllregion beendet (z. B. eine Linie beendet, wie vom Cache gehashed, oder ein genommener Zweig ist), dann veranlasst die Zustandsmaschine die Freigabe 415 des entsprechenden PFRQ Eintrags und die Zustandsmaschine kehrt zu Zustand 401 zurück. Wenn jedoch der Füllzeiger dem Füllregions-LIP 430 entspricht, während er sich entweder im Zustand 401 oder im Zustand 410 befindet, tritt die Zustandsmaschine in Zustand 420 ein, in dem der Zugriff innerhalb der Füllregion und nach dem Füllstartpunkt ist. Von Zustand 420 bringt eine letzte uOP in der Füllregionanzeige 425 die Zustandsmaschine zu Zustand 401 zurück, ohne den entsprechenden PFRQ Eintrag frei zu geben. Die Zustandsmaschine in 4 kann in Hardwarelogik, Software oder einer Kombination davon implementiert sein. Bei anderen Ausführungsformen können andere Zustandsmaschinen oder Logik verwendet werden.
  • [0021]
    5 zeigt ein Ablaufdiagramm von Operationen, die in Verbindung mit mindestens einer erfindungsgemäßen Ausführungsform verwendet werden können. Bei Operation 501 wird ermittelt, ob der Befehl in der IQ, auf den gerade zugegriffen wird, mit irgendeinem darauffolgenden Befehl fusionierbar ist. Ist dies nicht der Fall, dann wird bei Operation 505 von der IQ auf den nächsten Befehl zugegriffen und der Verzögerungszähler wird zurückgesetzt. Ist dies der Fall, dann wird bei Operation 510 ein Verzögerungszähler hochgezählt und bei Operation 515 wird ermittelt, ob ein Grenzwert für die Anzahl der Verzögerungen erreicht ist. Wenn nicht, dann wird bei Operation 520 keine Befehlsfusion des Befehls ausgeführt, auf den gerade zugegriffen wird. Wenn ja, dann wird auf den nächsten Befehl von der IQ zugegriffen und der Verzögerungszähler wird bei Operation 505 zurückgesetzt. Bei anderen Ausführungsformen können andere Operationen ausgeführt werden, um die Wirksamkeit der Befehlsfusion zu verbessern.
  • [0022]
    6 zeigt ein Ablaufdiagramm von Operationen, die in Verbindung mit mindestens einer Ausführungsform ausgeführt werden können. Um eine Ausführungsform in Prozessoren mit einer Vielzahl an Decoderschaltungen auszuführen, kann es hilfreich sein, sicher zu stellen, dass der erste fusionierbare Befehl auf einer bestimmten Decoderschaltung decodiert wird, die in der Lage ist, den fusionierten Befehl zu decodieren. In 6 wird ermittelt, ob ein bestimmter Befehl ein erster Befehl eines fusionierten Befehlspaares bei Operation 601 sein kann. Wenn nicht, dann werden die fusionierten Befehle bei Operation 605 ausgegeben. Wenn ja, dann wird ermittelt, ob auf den ersten fusionierbaren Befehl ein gültiger Befehl in der IQ bei Operation 610 folgt. Wenn ja, dann werden die fusionierten Befehle bei Operation 610 ausgegeben. Wenn nicht, dann wird bei Operation 615 ermittelt, ob der erste fusionierbare Befehl an einen Decoder ausgegeben werden soll, der in der Lage ist, den fusionierten Befehl zu unterstützen. Bei einer Ausführungsform ist Decoder-0 in der Lage, die fusionierten Befehle zu decodieren. Wenn der erste fusionierbare Befehl nicht an Decoder-0 ausgegeben wurde, dann wird bei Operation 620 der erste fusionierbare Befehl an einen anderen Decoder weitergegeben oder „genuked”, bis er mit Decoder-0 übereinstimmt. Bei Operation 625 wird ein Zähler auf einen Ausgangswert N gesetzt und bei Operation 630 werden dann, wenn auf den Befehl ein gültiger Befehl folgt oder der Zähler Null ist, die fusionierten Befehle bei Operation 635 ausgegeben. Ansonsten wird bei Operation 640 der Zähler heruntergezählt und der ungültige Befehl wird genuked. Bei anderen Ausführungsformen kann der Zähler bis zu einem Endwert hochzählen. Bei anderen Ausführungsformen können andere Operationen außer einer Nuke-Operation den ungültigen Befehl löschen.
  • [0023]
    Einer oder mehrere Aspekte mindestens einer Ausführungsform können implementiert werden, indem die hier beschriebenen Techniken durch repräsentative Daten ausgeführt werden, die auf einem maschinenlesbaren Datenträger gespeichert sind, welcher verschiedene Logiken innerhalb des Prozessors repräsentiert, die beim Lesezugriff durch eine Maschine die Maschine veranlassen, die Logik zu fabrizieren. Solche Repräsentationen, auch als „IP-Kerne” bekannt, können auf einem konkreten, maschinenlesbaren Datenträger („Band”) gespeichert und an verschiedene Kunden oder Fertigungsanlagen geliefert werden, wo sie in Fabrikationsmaschinen geladen werden, welche eigentlich die Logik oder den Prozessor herstellen.
  • [0024]
    Somit wurden hier ein Verfahren und eine Vorrichtung für die Leitung von Zugriffen auf Mikroarchitektur-Speicherregionen beschrieben. Es ist offenbar, dass die vorstehende Beschreibung rein illustrativ und in keiner Weise einschränkend ist. Viele andere Ausführungsformen sind für Fachleute offenkundig, nachdem sie die vorstehende Beschreibung gelesen und verstanden haben. Der Umfang der Erfindung ist deshalb mit Verweis auf die angehängten Ansprüche festgelegt, zusammen mit dem vollen Umfang von gleichwertigen Ausführungen, zu denen die Ansprüche berechtigen.

Claims (20)

  1. Vorrichtung, die aufweist: eine Befehlswarteschlange (IQ); Logik zur Verzögerung der Verarbeitung eines ersten fusionierbaren Befehls für eine begrenzte Zeit, derart, dass ein zweiter fusionierbarer Befehl, der mit dem ersten fusionierbaren Befehl fusionierbar ist, mit dem ersten fusionierbaren Befehl fusioniert werden kann, wenn der zweite fusionierbare Befehl innerhalb der IQ innerhalb der begrenzten Zeit gespeichert ist.
  2. Vorrichtung nach Anspruch 1, wobei der erste fusionierbare und der zweite fusionierbare Befehl über eine Abrufgrenze gespeichert sind, bevor sie in der IQ gespeichert werden.
  3. Vorrichtung nach Anspruch 1, wobei die Logik die Verarbeitung des ersten fusionierbaren Befehls nur verzögern soll, wenn der erste fusionierbare Befehl der letzte Befehl ist, der in der IQ gespeichert ist.
  4. Vorrichtung nach Anspruch 1, wobei die Logik einen Zähler beinhaltet, der einmal für jeden Zyklus hochgezählt werden soll, nachdem der erste fusionierbare Befehl in der IQ gespeichert wurde und er der letzte Befehl in der IQ ist, bis ein Grenzwert für die Anzahl von Zyklen entsprechend des zeitlichen Grenzwertes erreicht ist.
  5. Vorrichtung nach Anspruch 1, weiter umfassend eine Zustandsmaschine, um zu verhindern, dass eine Füllpufferanfragewarteschlange (FBRQ) einen Eintrag sperrt, der dem ersten und zweiten fusionierbaren Befehl entspricht, wenn ein Zwischenbefehl zwischen dem ersten in der IQ gespeicherten Befehl und dem zweiten in der IQ gespeicherten Befehl ausgeführt wird.
  6. Vorrichtung nach Anspruch 5, wobei der Zwischenbefehl dafür sorgen soll, dass die IQ geleert wird.
  7. Verfahren, umfassend: zu ermitteln, ob der Befehl innerhalb einer Befehlswarteschlange (IQ), auf den gerade zugegriffen wird, mit irgendeinem darauffolgenden Befehl, der in die IQ gespeichert werden soll, fusionierbar ist; auf einen nächsten Befehl aus der IQ zuzugreifen und den Verzögerungszähler zurückzusetzen, wenn der Befehl, auf den gerade zugegriffen wird, nicht mit einem darauffolgenden Befehl fusioniert werden kann, der in der IQ gespeichert werden soll; den Verzögerungszähler hochzuzählen, wenn ein Befehl, auf den gerade zugegriffen wird, fusionierbar ist und dieser der letzte Befehl in der IQ ist.
  8. Verfahren nach Anspruch 7, weiter umfassend das Fusionieren des Befehls auf den gerade zugegriffen wird, mit dem darauffolgenden Befehl, wenn der erste und zweite Befehl fusionierbar sind und der Verzögerungszähler noch keinen Grenzwert erreicht hat.
  9. Verfahren nach Anspruch 8, weiter umfassend das Verarbeiten des Befehls auf den gerade zugegriffen wird, getrennt von dem darauffolgenden Befehl, wenn der erste und zweite Befehl nicht fusionierbar sind.
  10. Verfahren nach Anspruch 8, weiter umfassend das Verarbeiten des Befehls auf den gerade zugegriffen wird, getrennt von dem darauffolgenden Befehl, wenn der Verzögerungszähler den Grenzwert erreicht hat.
  11. Verfahren nach Anspruch 7, weiter umfassend zu verhindern, dass eine Füllpufferanfragewarteschlange (FBRQ) einen Eintrag sperrt, der dem Befehl, auf den gerade zugegriffen wird, und den darauffolgenden Befehlen entspricht, wenn sie fusionierbar sind und ein Zwischenevent ausgeführt wird, bevor der darauffolgende Befehl in einem Cache gespeichert wird und nachdem der Befehl, auf den gerade zugegriffen wird, in dem Cache gespeichert ist.
  12. System, umfassend: einen Speicher zum Speichern eines ersten und zweiten fusionierbaren Befehls innerhalb einer ersten bzw. zweiten Zugriffsgrenze; einen Prozessor mit Abruflogik zum Abrufen des ersten und zweiten fusionierbaren Befehls in eine Befehlswarteschlange (IQ); Verzögerungslogik zum Verzögern der Lesezugriffe des ersten fusionierbaren Befehls von der IQ für eine begrenzte Anzahl von Zyklen; Befehlsfusionslogik zum Fusionieren des ersten und zweiten fusionierbaren Befehls, wenn der zweite fusionierbare Befehl nach dem ersten fusionierbaren Befehl in der IQ gespeichert wird und bevor der Grenzwert für die Anzahl von Zyklen erreicht wurde.
  13. System nach Anspruch 12, weiter umfassend einen Zähler zum Hochzählen, wenn der erste fusionierbare Befehl der einzige Befehl in der IQ ist und zum Stoppen des Zählens, wenn der Grenzwert für die Anzahl von Zyklen erreicht wurde.
  14. System nach Anspruch 13, wobei der Zähler zurückgesetzt werden muss, wenn der zweite fusionierbare Befehl in der IQ gespeichert wird, bevor der Grenzwert für die Anzahl von Zyklen erreicht wurde.
  15. System nach Anspruch 13, wobei der Zähler zurückgesetzt werden muss, wenn der zweite fusionierbare Befehl in der IQ gespeichert wird, bevor der Grenzwert für die Anzahl von Zyklen erreicht wurde.
  16. System nach Anspruch 12, wobei der Speicher einen Befehls-Cache beinhaltet und die Größenordnungen der ersten und zweiten Grenze jeweils 64 Byte betragen.
  17. System nach Anspruch 12, wobei der Speicher einen dynamischen Random-Access Speicher beinhaltet und die Größenordnungen der ersten und zweiten Grenze jeweils 4096 Byte betragen.
  18. System nach Anspruch 12, wobei der erste fusionierbare Befehl ein CMP/TEST Befehl ist und der zweite fusionierbare Befehl ein JCC Befehl ist.
  19. System nach Anspruch 18, wobei der Grenzwert für die Anzahl von Zyklen zwei beträgt.
  20. System nach Anspruch 12, weiter beinhaltend eine Zustandsmaschine, um zu verhindern, dass eine Füllpufferanfragewarteschlange (FBRQ) einen Eintrag sperrt, der dem ersten und zweiten Befehl entspricht, wenn ein Zwischenevent zwischen dem ersten fusionierbaren Befehl, der in dem Cache gespeichert ist, und dem zweiten fusionierbaren Befehl, der in dem Cache gespeichert ist, ausgeführt wird.
DE200910051388 2008-10-30 2009-10-30 Technik zur Förderung effizienter Befehlsfusion Pending DE102009051388A1 (de)

Priority Applications (2)

Application Number Priority Date Filing Date Title
US12290395 US9690591B2 (en) 2008-10-30 2008-10-30 System and method for fusing instructions queued during a time window defined by a delay counter
US12/290,395 2008-10-30

Publications (1)

Publication Number Publication Date
DE102009051388A1 true true DE102009051388A1 (de) 2010-05-06

Family

ID=42063260

Family Applications (1)

Application Number Title Priority Date Filing Date
DE200910051388 Pending DE102009051388A1 (de) 2008-10-30 2009-10-30 Technik zur Förderung effizienter Befehlsfusion

Country Status (6)

Country Link
US (4) US9690591B2 (de)
JP (1) JP5902285B2 (de)
KR (1) KR101258762B1 (de)
CN (2) CN101901128B (de)
DE (1) DE102009051388A1 (de)
WO (1) WO2010056511A3 (de)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8090931B2 (en) * 2008-09-18 2012-01-03 Via Technologies, Inc. Microprocessor with fused store address/store data microinstruction
JP5491071B2 (ja) * 2009-05-20 2014-05-14 エヌイーシーコンピュータテクノ株式会社 命令融合演算装置および命令融合演算方法
US9223578B2 (en) * 2009-09-25 2015-12-29 Nvidia Corporation Coalescing memory barrier operations across multiple parallel threads
US8856496B2 (en) 2010-04-27 2014-10-07 Via Technologies, Inc. Microprocessor that fuses load-alu-store and JCC macroinstructions
US8843729B2 (en) 2010-04-27 2014-09-23 Via Technologies, Inc. Microprocessor that fuses MOV/ALU instructions
US20130081001A1 (en) * 2011-09-23 2013-03-28 Microsoft Corporation Immediate delay tracker tool
US9672037B2 (en) * 2013-01-23 2017-06-06 Apple Inc. Arithmetic branch fusion
US9483266B2 (en) * 2013-03-15 2016-11-01 Intel Corporation Fusible instructions and logic to provide OR-test and AND-test functionality using multiple test sources
US9886277B2 (en) 2013-03-15 2018-02-06 Intel Corporation Methods and apparatus for fusing instructions to provide OR-test and AND-test functionality on multiple test sources
US9329848B2 (en) * 2013-03-27 2016-05-03 Intel Corporation Mechanism for facilitating dynamic and efficient fusion of computing instructions in software programs
US9792121B2 (en) 2013-05-21 2017-10-17 Via Technologies, Inc. Microprocessor that fuses if-then instructions
US9348596B2 (en) 2013-06-28 2016-05-24 International Business Machines Corporation Forming instruction groups based on decode time instruction optimization
US9372695B2 (en) 2013-06-28 2016-06-21 Globalfoundries Inc. Optimization of instruction groups across group boundaries
US9911508B2 (en) 2014-09-18 2018-03-06 Via Alliance Semiconductor Co., Ltd Cache memory diagnostic writeback

Family Cites Families (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2834171B2 (ja) * 1989-02-06 1998-12-09 株式会社日立製作所 コンパイル方法
US5392228A (en) * 1993-12-06 1995-02-21 Motorola, Inc. Result normalizer and method of operation
US5860154A (en) * 1994-08-02 1999-01-12 Intel Corporation Method and apparatus for calculating effective memory addresses
US6006324A (en) * 1995-01-25 1999-12-21 Advanced Micro Devices, Inc. High performance superscalar alignment unit
JP3113792B2 (ja) * 1995-04-27 2000-12-04 松下電器産業株式会社 最適化装置
US6151618A (en) * 1995-12-04 2000-11-21 Microsoft Corporation Safe general purpose virtual machine computing system
US6041403A (en) * 1996-09-27 2000-03-21 Intel Corporation Method and apparatus for generating a microinstruction responsive to the specification of an operand, in addition to a microinstruction based on the opcode, of a macroinstruction
US5860107A (en) * 1996-10-07 1999-01-12 International Business Machines Corporation Processor and method for store gathering through merged store operations
US5957997A (en) * 1997-04-25 1999-09-28 International Business Machines Corporation Efficient floating point normalization mechanism
US5903761A (en) * 1997-10-31 1999-05-11 Preemptive Solutions, Inc. Method of reducing the number of instructions in a program code sequence
US6112293A (en) 1997-11-17 2000-08-29 Advanced Micro Devices, Inc. Processor configured to generate lookahead results from operand collapse unit and for inhibiting receipt/execution of the first instruction based on the lookahead result
US6282634B1 (en) * 1998-05-27 2001-08-28 Arm Limited Apparatus and method for processing data having a mixed vector/scalar register file
US6247113B1 (en) * 1998-05-27 2001-06-12 Arm Limited Coprocessor opcode division by data type
US6018799A (en) * 1998-07-22 2000-01-25 Sun Microsystems, Inc. Method, apparatus and computer program product for optimizing registers in a stack using a register allocator
US6742110B2 (en) * 1998-10-06 2004-05-25 Texas Instruments Incorporated Preventing the execution of a set of instructions in parallel based on an indication that the instructions were erroneously pre-coded for parallel execution
US6338136B1 (en) * 1999-05-18 2002-01-08 Ip-First, Llc Pairing of load-ALU-store with conditional branch
US6647489B1 (en) 2000-06-08 2003-11-11 Ip-First, Llc Compare branch instruction pairing within a single integer pipeline
US6675376B2 (en) * 2000-12-29 2004-01-06 Intel Corporation System and method for fusing instructions
US6832307B2 (en) 2001-07-19 2004-12-14 Stmicroelectronics, Inc. Instruction fetch buffer stack fold decoder for generating foldable instruction status information
US20030023960A1 (en) 2001-07-25 2003-01-30 Shoab Khan Microprocessor instruction format using combination opcodes and destination prefixes
US6889318B1 (en) * 2001-08-07 2005-05-03 Lsi Logic Corporation Instruction fusion for digital signal processor
US6718440B2 (en) 2001-09-28 2004-04-06 Intel Corporation Memory access latency hiding with hint buffer
US7051190B2 (en) * 2002-06-25 2006-05-23 Intel Corporation Intra-instruction fusion
US6920546B2 (en) * 2002-08-13 2005-07-19 Intel Corporation Fusion of processor micro-operations
US20040128485A1 (en) * 2002-12-27 2004-07-01 Nelson Scott R. Method for fusing instructions in a vector processor
US7355601B2 (en) 2003-06-30 2008-04-08 International Business Machines Corporation System and method for transfer of data between processors using a locked set, head and tail pointers
KR101076815B1 (ko) 2004-05-29 2011-10-25 삼성전자주식회사 분기 타겟 어드레스 캐쉬를 포함하는 캐쉬 시스템
US8082430B2 (en) * 2005-08-09 2011-12-20 Intel Corporation Representing a plurality of instructions with a fewer number of micro-operations
US7937564B1 (en) 2005-09-28 2011-05-03 Oracle America, Inc. Emit vector optimization of a trace
US7676513B2 (en) 2006-01-06 2010-03-09 Microsoft Corporation Scheduling of index merges
US7958181B2 (en) * 2006-09-21 2011-06-07 Intel Corporation Method and apparatus for performing logical compare operations
US7917568B2 (en) 2007-04-10 2011-03-29 Via Technologies, Inc. X87 fused multiply-add instruction

Also Published As

Publication number Publication date Type
CN103870243B (zh) 2018-02-02 grant
CN101901128B (zh) 2016-04-27 grant
US20100115248A1 (en) 2010-05-06 application
CN103870243A (zh) 2014-06-18 application
WO2010056511A2 (en) 2010-05-20 application
WO2010056511A3 (en) 2010-07-08 application
KR101258762B1 (ko) 2013-04-29 grant
US20170003965A1 (en) 2017-01-05 application
US20160378487A1 (en) 2016-12-29 application
KR20110050715A (ko) 2011-05-16 application
JP5902285B2 (ja) 2016-04-13 grant
US9690591B2 (en) 2017-06-27 grant
JP2015072707A (ja) 2015-04-16 application
CN101901128A (zh) 2010-12-01 application
JP2012507794A (ja) 2012-03-29 application
US20160246600A1 (en) 2016-08-25 application

Similar Documents

Publication Publication Date Title
US6915395B1 (en) Active address content addressable memory
US20060026309A1 (en) Memory barriers primitives in an asymmetric heterogeneous multiprocessor environment
DE19822776A1 (de) Datenverarbeitungsvorrichtung
US7328433B2 (en) Methods and apparatus for reducing memory latency in a software application
DE19807872A1 (de) Verfahren zur Verwaltung von Konfigurationsdaten in Datenflußprozessoren sowie Bausteinen mit zwei- oder mehrdimensionalen programmierbaren Zellstruktur (FPGAs, DPGAs, o. dgl.
WO2010056511A2 (en) Technique for promoting efficient instruction fusion
DE10349581A1 (de) Verfahren und Vorrichtung zur Umschaltung zwischen wenigstens zwei Betriebsmodi einer Prozessoreinheit
US20040168039A1 (en) Simultaneous Multi-Threading Processor circuits and computer program products configured to operate at different performance levels based on a number of operating threads and methods of operating
DE19934515A1 (de) Verfahren und Einrichtung zum Durchführen von Cache-Segment-Flush- und Cache-Segment-Invalidier-Operationen
US20060212689A1 (en) Method and apparatus for simultaneous speculative threading
DE3603240A1 (de) Schaltungsanordnung zur bereinigung von operandenkonflikten in nach dem fliessbandprinzip arbeitenden datenverarbeitungsanlagen
DE102009037630A1 (de) Elektronische Vorrichtung und Verfahren zur Überprüfung der korrekten Prgrammausführung
EP1892639A2 (de) Sichere Programmcodeausführung
CN104714848A (zh) 利用用于聚结内存事务的指示的方法和系统
DE4330119C1 (de) Verfahren zum gesteuerten Vorladen von Informationsblöcken in Cacheblockgröße in einen Cachespeicher eines Rechners bei Ablauf eines Programms
DE3912705A1 (de) Verfahren und anordnung zur steuerung des datenaustausches bei schreibanforderungen von verarbeitungseinheiten an einen cachespeicher
DE4406094C2 (de) Vorrichtung zum Betrieb einer Steuerungsanwendung
EP0907912B1 (de) Synchronisationsverfahren
EP0477598A2 (de) Befehlswerk für einen n Prozessorelemente aufweisenden Prozessor
DE102007012058A1 (de) Synchronisieren von Neuheitsinformation in einer inklusiven Cache-Hierarchie
DE112013000752T5 (de) Verwalten von Verarbeitungselementen in einem Streaming-Datensystem
EP1278118A2 (de) Verfahren und Vorrichtung zum Verarbeiten von Befehlen, die in einer Mehrzahl von Gruppen gruppiert sind
GB2447907A (en) Reducing data hazards by counting the number of long-latency instructions in the thread still being processed before running the hazard instruction
EP0967539B1 (de) Vorrichtung zur Senkung des Leistungsverbrauchs eines Signalprozessor-Systems
DE112005003136B4 (de) Verfahren, Vorrichtung und System zum dynamischen Einstellen von Arbeitsparametern von mehreren Porzessorkernen

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
R016 Response to examination communication
R130 Divisional application to

Ref document number: 102009061792

Country of ref document: DE

Ref document number: 102009061793

Country of ref document: DE

Ref document number: 102009061794

Country of ref document: DE