DE102009051388A1 - Technik zur Förderung effizienter Befehlsfusion - Google Patents
Technik zur Förderung effizienter Befehlsfusion Download PDFInfo
- Publication number
- DE102009051388A1 DE102009051388A1 DE102009051388A DE102009051388A DE102009051388A1 DE 102009051388 A1 DE102009051388 A1 DE 102009051388A1 DE 102009051388 A DE102009051388 A DE 102009051388A DE 102009051388 A DE102009051388 A DE 102009051388A DE 102009051388 A1 DE102009051388 A1 DE 102009051388A1
- Authority
- DE
- Germany
- Prior art keywords
- command
- fusible
- stored
- limit
- accessed
- 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.)
- Ceased
Links
- 230000004927 fusion Effects 0.000 title claims abstract description 19
- 238000000034 method Methods 0.000 title claims abstract description 13
- 230000001737 promoting effect Effects 0.000 title 1
- 238000012545 processing Methods 0.000 claims abstract description 8
- 238000012360 testing method Methods 0.000 claims description 12
- 239000000945 filler Substances 0.000 claims description 2
- 238000001356 surgical procedure Methods 0.000 description 7
- 238000010586 diagram Methods 0.000 description 4
- 230000008569 process Effects 0.000 description 3
- 230000000903 blocking effect Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 230000008878 coupling Effects 0.000 description 2
- 238000010168 coupling process Methods 0.000 description 2
- 238000005859 coupling reaction Methods 0.000 description 2
- 230000001934 delay Effects 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 230000008901 benefit Effects 0.000 description 1
- 239000003795 chemical substances by application Substances 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30181—Instruction operation extension or modification
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3853—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution of compound instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/084—Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0875—Addressing 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4063—Device-to-bus coupling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/22—Microcontrol or microprogram arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/3016—Decoding the operand specifier, e.g. specifier format
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/3017—Runtime instruction translation, e.g. macros
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30181—Instruction operation extension or modification
- G06F9/30196—Instruction operation extension or modification using decoder, e.g. decoder per instruction set, adaptable or programmable decoders
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/45—Caching of specific data in cache memory
- G06F2212/452—Instruction code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/62—Details of cache specific to multiprocessor cache arrangements
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
- Memory System Of A Hierarchy Structure (AREA)
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
- Erfindungsgemäße Ausführungsformen betreffen im Allgemeinen das Gebiet der Datenverarbeitung und spezieller das Gebiet der Befehlsfusion in Computersystemen und Mikroprozessoren.
- Hintergrund
- 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.
- 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
- 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:
-
1 ein Blockdiagramm eines Mikroprozessors zeigt, bei dem mindestens eine erfindungsgemäße Ausführungsform verwendet werden kann; -
2 ein Blockdiagramm eines gemeinsam genutzten Computer-Bussystems zeigt, bei dem mindestens eine erfindungsgemäße Ausführungsform verwendet werden kann; -
3 ein Blockdiagramm einer Punkt-zu-Punkt-Kopplungsstruktur eines Computersystems zeigt, bei der mindestens eine erfindungsgemäße Ausführungsform verwendet werden kann; -
4 ein Blockdiagramm einer Zustandsmaschine zeigt, die zur Implementierung mindestens einer erfindungsgemäßen Ausführungsform verwendet werden kann; -
5 ein Ablaufdiagramm von Operationen ist, die zur Ausführung von mindestens einer erfindungsgemäßen Ausführungsform verwendet werden können. -
6 ein Ablaufdiagramm von Operationen ist, die in mindestens einer erfindungsgemäßen Ausführungsform ausgeführt werden können. - Ausführliche Beschreibung
- 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.
- 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.
-
1 zeigt einen Mikroprozessor, bei dem mindestens eine erfindungsgemäße Ausführungsform verwendet werden kann. Insbesondere zeigt1 einen Mikroprozessor100 , der einen oder mehrere Prozessorkerne105 und110 besitzt, von denen jeder mit einem lokalen Cache107 bzw.113 verbunden ist.1 zeigt auch einen gemeinsam genutzten Cache-Speicher115 , der Versionen von mindestens einem Teil der Informationen speichern kann, die in jedem der lokalen Caches107 und113 gespeichert sind. Bei einigen Ausführungsformen kann Mikroprozessor100 auch andere Logik umfassen, die nicht in1 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 Logik119 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. - Bei einer Ausführungsform kann Logik
119 Logik beinhalten, um die Wahrscheinlichkeit von verfehlten Befehlsfusionsgelegenheiten zu verringern. Bei einer Ausführungsform verzögert Logik119 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 Logik119 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. -
2 zeigt beispielsweise ein Front-Side-Bus-(FSB)-Computersystem, bei dem eine erfindungsgemäße Ausführungsform verwendet werden kann. Jeder Prozessor201 ,205 ,210 oder215 kann auf Informationen von jedem lokalen Level Eins-(L1)-Cache-Speicher220 ,225 ,230 ,235 ,240 ,245 ,250 ,255 innerhalb oder anderweitig in Verbindung mit einem der Prozessorkerne223 ,227 ,233 ,237 ,243 ,247 ,253 ,257 stehend zugreifen. Außerdem kann jeder Prozessor201 ,205 ,210 oder215 auf Informationen von jedem der gemeinsam genutzten Level Zwei-(L2)-Caches203 ,207 ,213 ,217 oder vom Systemspeicher260 über den Chipsatz265 zugreifen. Ein Prozessor oder mehrere der Prozessoren in2 können Logik219 beinhalten oder anderweitig damit in Verbindung stehen, um eine verbesserte Wirksamkeit von Befehlsfusion in Übereinstimmung mit mindestens einer Ausführungsform zu ermöglichen. - 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 nach3 kann beispielsweise mehrere Prozessoren umfassen, von denen nur zwei, nämlich Prozessor370 ,380 , exemplarisch gezeigt werden. Die Prozessoren370 ,380 können je einen lokalen Memory-Controller-Hub (MCH)372 ,382 für die Verbindung mit dem Speicher32 ,34 enthalten. Die Prozessoren370 ,380 können über eine Punkt-zu-Punkt-(PtP)-Schnittstelle350 unter Verwendung von PtP-Schnittstellenschaltungen378 ,388 Daten austauschen. Die Prozessoren370 ,380 können mit einem Chipsatz390 über einzelne PtP-Schnittstellen352 ,354 Daten austauschen, wobei die Punkt-zu-Punkt-Schnittstellenschaltungen376 ,394 ,386 ,398 verwendet werden. Der Chipsatz390 kann auch mit einer Hochleistungsgrafikschaltung338 über eine Hochleistungsgrafikschnittstelle339 Daten austauschen. Erfindungsgemäße Ausführungsformen können innerhalb jedes Prozessors mit beliebiger Anzahl an Prozessorkernen oder innerhalb jedes PtP-Bus-Agenten von3 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 in3 können Logik319 enthalten oder anderweitig damit in Verbindung stehen, um eine verbesserte Wirksamkeit von Befehlsfusion in Übereinstimmung mit mindestens einer Ausführungsform zu ermöglichen. - 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.
- 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.
- 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.
-
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 Zustand401 , 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 PFRQ405 gespeicherten linearen Befehlszeiger („LIP”) an. Dies kann dazu führen, dass die Zustandsmaschine zu Zustand410 ü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 Freigabe415 des entsprechenden PFRQ Eintrags und die Zustandsmaschine kehrt zu Zustand401 zurück. Wenn jedoch der Füllzeiger dem Füllregions-LIP430 entspricht, während er sich entweder im Zustand401 oder im Zustand410 befindet, tritt die Zustandsmaschine in Zustand420 ein, in dem der Zugriff innerhalb der Füllregion und nach dem Füllstartpunkt ist. Von Zustand420 bringt eine letzte uOP in der Füllregionanzeige425 die Zustandsmaschine zu Zustand401 zurück, ohne den entsprechenden PFRQ Eintrag frei zu geben. Die Zustandsmaschine in4 kann in Hardwarelogik, Software oder einer Kombination davon implementiert sein. Bei anderen Ausführungsformen können andere Zustandsmaschinen oder Logik verwendet werden. -
5 zeigt ein Ablaufdiagramm von Operationen, die in Verbindung mit mindestens einer erfindungsgemäßen Ausführungsform verwendet werden können. Bei Operation501 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 Operation505 von der IQ auf den nächsten Befehl zugegriffen und der Verzögerungszähler wird zurückgesetzt. Ist dies der Fall, dann wird bei Operation510 ein Verzögerungszähler hochgezählt und bei Operation515 wird ermittelt, ob ein Grenzwert für die Anzahl der Verzögerungen erreicht ist. Wenn nicht, dann wird bei Operation520 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 Operation505 zurückgesetzt. Bei anderen Ausführungsformen können andere Operationen ausgeführt werden, um die Wirksamkeit der Befehlsfusion zu verbessern. -
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. In6 wird ermittelt, ob ein bestimmter Befehl ein erster Befehl eines fusionierten Befehlspaares bei Operation601 sein kann. Wenn nicht, dann werden die fusionierten Befehle bei Operation605 ausgegeben. Wenn ja, dann wird ermittelt, ob auf den ersten fusionierbaren Befehl ein gültiger Befehl in der IQ bei Operation610 folgt. Wenn ja, dann werden die fusionierten Befehle bei Operation610 ausgegeben. Wenn nicht, dann wird bei Operation615 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 Operation620 der erste fusionierbare Befehl an einen anderen Decoder weitergegeben oder „genuked”, bis er mit Decoder-0 übereinstimmt. Bei Operation625 wird ein Zähler auf einen Ausgangswert N gesetzt und bei Operation630 werden dann, wenn auf den Befehl ein gültiger Befehl folgt oder der Zähler Null ist, die fusionierten Befehle bei Operation635 ausgegeben. Ansonsten wird bei Operation640 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. - 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.
- 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)
- 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.
- 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.
- 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.
- 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.
- 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.
- Vorrichtung nach Anspruch 5, wobei der Zwischenbefehl dafür sorgen soll, dass die IQ geleert wird.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- System nach Anspruch 12, wobei der Speicher einen Befehls-Cache beinhaltet und die Größenordnungen der ersten und zweiten Grenze jeweils 64 Byte betragen.
- 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.
- System nach Anspruch 12, wobei der erste fusionierbare Befehl ein CMP/TEST Befehl ist und der zweite fusionierbare Befehl ein JCC Befehl ist.
- System nach Anspruch 18, wobei der Grenzwert für die Anzahl von Zyklen zwei beträgt.
- 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.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/290,395 | 2008-10-30 | ||
US12/290,395 US9690591B2 (en) | 2008-10-30 | 2008-10-30 | System and method for fusing instructions queued during a time window defined by a delay counter |
Publications (1)
Publication Number | Publication Date |
---|---|
DE102009051388A1 true DE102009051388A1 (de) | 2010-05-06 |
Family
ID=42063260
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE102009051388A Ceased DE102009051388A1 (de) | 2008-10-30 | 2009-10-30 | Technik zur Förderung effizienter Befehlsfusion |
Country Status (8)
Country | Link |
---|---|
US (4) | US9690591B2 (de) |
JP (2) | JP2012507794A (de) |
KR (1) | KR101258762B1 (de) |
CN (2) | CN101901128B (de) |
BR (2) | BRPI0920782B1 (de) |
DE (1) | DE102009051388A1 (de) |
TW (1) | TWI455023B (de) |
WO (1) | WO2010056511A2 (de) |
Families Citing this family (33)
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 |
US9690591B2 (en) * | 2008-10-30 | 2017-06-27 | Intel Corporation | System and method for fusing instructions queued during a time window defined by a delay counter |
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 |
US8843729B2 (en) | 2010-04-27 | 2014-09-23 | Via Technologies, Inc. | Microprocessor that fuses MOV/ALU instructions |
US8856496B2 (en) | 2010-04-27 | 2014-10-07 | Via Technologies, Inc. | Microprocessor that fuses load-alu-store and JCC macroinstructions |
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 |
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 |
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 |
WO2014154917A1 (es) * | 2013-03-27 | 2014-10-02 | Intel Corporation | Mecanismo para facilitar la fusión dinámica y eficaz de instrucciones informáticas en programas de software |
US9792121B2 (en) | 2013-05-21 | 2017-10-17 | Via Technologies, Inc. | Microprocessor that fuses if-then instructions |
US9372695B2 (en) * | 2013-06-28 | 2016-06-21 | Globalfoundries Inc. | Optimization of instruction groups across group boundaries |
US9348596B2 (en) | 2013-06-28 | 2016-05-24 | International Business Machines Corporation | Forming instruction groups based on decode time instruction optimization |
US10503513B2 (en) * | 2013-10-23 | 2019-12-10 | Nvidia Corporation | Dispatching a stored instruction in response to determining that a received instruction is of a same instruction type |
US9892803B2 (en) * | 2014-09-18 | 2018-02-13 | Via Alliance Semiconductor Co., Ltd | Cache management request fusing |
US20160179542A1 (en) * | 2014-12-23 | 2016-06-23 | Patrick P. Lai | Instruction and logic to perform a fused single cycle increment-compare-jump |
US10579389B2 (en) * | 2015-11-02 | 2020-03-03 | Arm Limited | Fusion of instructions by delaying handling of a partial subset of a fusible group of instructions |
US10387988B2 (en) | 2016-02-26 | 2019-08-20 | Google Llc | Compiler techniques for mapping program code to a high performance, power efficient, programmable image processing hardware platform |
US10387147B2 (en) | 2017-08-02 | 2019-08-20 | International Business Machines Corporation | Managing an issue queue for fused instructions and paired instructions in a microprocessor |
US11256509B2 (en) | 2017-12-07 | 2022-02-22 | International Business Machines Corporation | Instruction fusion after register rename |
US11157280B2 (en) | 2017-12-07 | 2021-10-26 | International Business Machines Corporation | Dynamic fusion based on operand size |
US11416252B2 (en) * | 2017-12-27 | 2022-08-16 | Arm Limited | Program instruction fusion |
US11194722B2 (en) * | 2018-03-15 | 2021-12-07 | Intel Corporation | Apparatus and method for improved cache utilization and efficiency on a many core processor |
US10929136B2 (en) | 2018-04-11 | 2021-02-23 | Futurewei Technologies, Inc. | Accurate early branch prediction using multiple predictors having different accuracy and latency in high-performance microprocessors |
US20200042322A1 (en) * | 2018-08-03 | 2020-02-06 | Futurewei Technologies, Inc. | System and method for store instruction fusion in a microprocessor |
US10831480B2 (en) * | 2019-02-25 | 2020-11-10 | International Business Machines Corporation | Move data and set storage key instruction |
US10831496B2 (en) | 2019-02-28 | 2020-11-10 | International Business Machines Corporation | Method to execute successive dependent instructions from an instruction stream in a processor |
US11216278B2 (en) * | 2019-08-12 | 2022-01-04 | Advanced New Technologies Co., Ltd. | Multi-thread processing |
KR102339882B1 (ko) | 2020-01-24 | 2021-12-14 | 정종범 | 역압대응이 가능한 티 모션 진자식 게이트밸브 |
US11249757B1 (en) | 2020-08-14 | 2022-02-15 | International Business Machines Corporation | Handling and fusing load instructions in a processor |
CN112363762B (zh) * | 2020-11-13 | 2023-01-06 | 苏州浪潮智能科技有限公司 | 一种融合命令处理方法、系统、设备以及介质 |
US12008369B1 (en) | 2021-08-31 | 2024-06-11 | Apple Inc. | Load instruction fusion |
Family Cites Families (37)
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 |
TW477936B (en) * | 1998-12-29 | 2002-03-01 | Ind Tech Res Inst | Instruction folding method and device used in a stack machine |
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 |
US20030023960A1 (en) | 2001-07-25 | 2003-01-30 | Shoab Khan | Microprocessor instruction format using combination opcodes and destination prefixes |
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 |
US6587929B2 (en) * | 2001-07-31 | 2003-07-01 | Ip-First, L.L.C. | Apparatus and method for performing write-combining in a pipelined microprocessor using tags |
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 |
US7653906B2 (en) * | 2002-10-23 | 2010-01-26 | Intel Corporation | Apparatus and method for reducing power consumption on simultaneous multi-threading systems |
US20040128485A1 (en) | 2002-12-27 | 2004-07-01 | Nelson Scott R. | Method for fusing instructions in a vector processor |
US7024544B2 (en) | 2003-06-24 | 2006-04-04 | Via-Cyrix, Inc. | Apparatus and method for accessing registers in a 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 |
US9690591B2 (en) * | 2008-10-30 | 2017-06-27 | Intel Corporation | System and method for fusing instructions queued during a time window defined by a delay counter |
-
2008
- 2008-10-30 US US12/290,395 patent/US9690591B2/en active Active
-
2009
- 2009-10-27 JP JP2011534680A patent/JP2012507794A/ja active Pending
- 2009-10-27 KR KR1020117007623A patent/KR101258762B1/ko active IP Right Grant
- 2009-10-27 WO PCT/US2009/062219 patent/WO2010056511A2/en active Application Filing
- 2009-10-27 BR BRPI0920782A patent/BRPI0920782B1/pt active IP Right Grant
- 2009-10-29 TW TW098136712A patent/TWI455023B/zh active
- 2009-10-30 BR BRPI0904287-3A patent/BRPI0904287A2/pt not_active Application Discontinuation
- 2009-10-30 CN CN200910253081.5A patent/CN101901128B/zh active Active
- 2009-10-30 DE DE102009051388A patent/DE102009051388A1/de not_active Ceased
- 2009-10-30 CN CN201410054184.XA patent/CN103870243B/zh active Active
-
2014
- 2014-11-28 JP JP2014241108A patent/JP5902285B2/ja active Active
-
2016
- 2016-04-30 US US15/143,520 patent/US10649783B2/en active Active
- 2016-04-30 US US15/143,518 patent/US20160378487A1/en not_active Abandoned
- 2016-04-30 US US15/143,522 patent/US20160246600A1/en not_active Abandoned
Also Published As
Publication number | Publication date |
---|---|
TWI455023B (zh) | 2014-10-01 |
US20100115248A1 (en) | 2010-05-06 |
WO2010056511A2 (en) | 2010-05-20 |
KR101258762B1 (ko) | 2013-04-29 |
CN103870243A (zh) | 2014-06-18 |
BRPI0920782B1 (pt) | 2020-04-22 |
BRPI0920782A2 (pt) | 2015-12-22 |
US20170003965A1 (en) | 2017-01-05 |
US20160246600A1 (en) | 2016-08-25 |
BRPI0904287A2 (pt) | 2011-02-01 |
WO2010056511A3 (en) | 2010-07-08 |
US20160378487A1 (en) | 2016-12-29 |
CN103870243B (zh) | 2018-02-02 |
JP2012507794A (ja) | 2012-03-29 |
CN101901128A (zh) | 2010-12-01 |
US9690591B2 (en) | 2017-06-27 |
CN101901128B (zh) | 2016-04-27 |
JP5902285B2 (ja) | 2016-04-13 |
KR20110050715A (ko) | 2011-05-16 |
TW201032129A (en) | 2010-09-01 |
US10649783B2 (en) | 2020-05-12 |
JP2015072707A (ja) | 2015-04-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE102009051388A1 (de) | Technik zur Förderung effizienter Befehlsfusion | |
DE10085375B4 (de) | Verfahren und Einrichtung für einen pipeline-verschachtelten Multi-Thread-Befehlsdecodierer | |
DE69434728T2 (de) | Synchronisationssystem und verfahren in einem datencachesystem mit aufgeteiltem pegel | |
DE60210633T2 (de) | Verfahren und vorrichtungen zur verbesserung des durchsatzes von eingebetteten prozessoren auf cache-basis durch umschalten von tasks als reaktion auf eine cache-verfehlung | |
DE3751474T2 (de) | Verzweigungsstrom-Koprozessor. | |
DE112007000812B4 (de) | Vorrichtung mit einer speichereinheit und drei logiken, verfahren zum durchführen der verfahrensschritte der vorrichtung undsystem mit einem speicher und einem prozessor zur bereitstellung eines effizienten mechanismus‘ für transaktionalspeicherausführungen in out-of-order-prozessoren | |
DE69633166T2 (de) | Integrierter schaltkreis mit mehreren funktionen und gemeinsamer verwendung mehrerer interner signalbusse zur verteilung der steuerung des buszugriffes und der arbitration | |
DE60308201T2 (de) | Datenverarbeitungssystem mit externen und internen anweisungssätzen | |
DE112011100743B4 (de) | Datenverarbeitungsvorrichtung und -verfahren zum Übertragen einer Arbeitslast zwischen Quell- und Zielverarbeitungsschaltkreisen | |
DE68927492T2 (de) | Verfahren und Vorrichtung zur gleichzeitigen Verteilung von Befehlen an mehrere funktionelle Einheiten | |
DE112004002296B4 (de) | Anwenderprogrammierbares Multithreading mit geringem Overhead | |
DE19506734A1 (de) | Computersystem und Verfahren zum Aufrechterhalten der Speicherkonsistenz in einer Busanforderungswarteschlange | |
DE60036016T2 (de) | Schnell multithreading für eng gekoppelte multiprozessoren | |
DE112006001698T5 (de) | Grundfunktionen zum Verbessern von Thread-Level Spekulation | |
DE69030931T2 (de) | Mehrfachsequenzprozessorsystem | |
DE112008003457T5 (de) | Mechanismus zum operativen Analysieren von Programmsoftware, die auf einem Prozessor abgearbeitet wird | |
DE112011100744T5 (de) | Datenverarbeitungsvorrichtung und -Verfahren zum Schalten einer Arbeitslast zwischen ersten und zweiten Verarbeitungsschaltkreisen | |
DE112015000294T5 (de) | Wiederherstellen von Hardware-Transaktionen | |
DE112013000891T5 (de) | Verbessern der Prozessorleistung für Befehlsfolgen, die Sperrbefehle enthalten | |
DE112010005821T5 (de) | Kontextwechsel | |
DE102014000382A1 (de) | Vorhersage indirekter Abzweigungen | |
DE19807872A1 (de) | Verfahren zur Verwaltung von Konfigurationsdaten in Datenflußprozessoren sowie Bausteinen mit zwei- oder mehrdimensionalen programmierbaren Zellstruktur (FPGAs, DPGAs, o. dgl. | |
DE112009000117T5 (de) | Prozessor mit einer Hybridredundanz zum Schutz vor Logikfehlern | |
DE112004001133T5 (de) | Warteschlangen-Sperren mit Monitor-Memory-Wait | |
DE102013224384A1 (de) | Fehlerdetektion in Instruktionsübersetzungen |
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 |
|
R002 | Refusal decision in examination/registration proceedings | ||
R003 | Refusal decision now final |