DE102018004727A1 - Verfahren und System zum Durchführen von Datenbewegungsoperationen mit Lese-Snapshot und In-Place-Schreibaktualisierung - Google Patents

Verfahren und System zum Durchführen von Datenbewegungsoperationen mit Lese-Snapshot und In-Place-Schreibaktualisierung Download PDF

Info

Publication number
DE102018004727A1
DE102018004727A1 DE102018004727.0A DE102018004727A DE102018004727A1 DE 102018004727 A1 DE102018004727 A1 DE 102018004727A1 DE 102018004727 A DE102018004727 A DE 102018004727A DE 102018004727 A1 DE102018004727 A1 DE 102018004727A1
Authority
DE
Germany
Prior art keywords
memory
cache
cache line
data
processor
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.)
Granted
Application number
DE102018004727.0A
Other languages
English (en)
Inventor
Anil Vasudevan
Venkata Krishnan
Andrew J. Herdrich
Ren Wang
Robert G. Blankenship
Vedaraman Geetha
Shrikant M. Shah
Marshall A. Millier
Raanan Sade
Binh Q. Pham
Olivier Serres
Chyi-Chang Miao
Christopher B. Wilkerson
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of DE102018004727A1 publication Critical patent/DE102018004727A1/de
Granted legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0868Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/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/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0871Allocation or management of cache space
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0893Caches characterised by their organisation or structure
    • G06F12/0897Caches characterised by their organisation or structure with two or more cache hierarchy levels
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/065Replication mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/068Hybrid storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/28Using a specific disk cache architecture
    • G06F2212/283Plural cache memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/31Providing disk cache in a specific location of a storage system
    • G06F2212/311In host system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6042Allocation of cache space to multiple users or processors
    • G06F2212/6046Using a specific cache allocation policy other than replacement policy

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Computer Security & Cryptography (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

Ein Verfahren und System zum Durchführen von Datenbewegungsoperationen wird hierin beschrieben. Eine Ausführungsform eines Verfahrens weist auf: Speichern von Daten für eine erste Speicheradresse in einer Cachezeile eines Speichers einer ersten Verarbeitungseinheit, wobei die Cachezeile mit einem Kohärenzzustand assoziiert ist, der anzeigt, dass der Speicher den alleinigen Besitz der Cachezeile hat; Decodieren eines Befehls zur Ausführung durch eine zweite Verarbeitungseinheit, wobei der Befehl einen Quelldatenoperanden, der die erste Speicheradresse angibt, und einen Zieloperanden, der einen Speicherort in der zweiten Verarbeitungseinheit angibt, umfasst; und in Reaktion auf das Ausführen des decodierten Befehls Kopieren von Daten von der Cachezeile des Speichers der ersten Verarbeitungseinheit, wie durch die erste Speicheradresse identifiziert, zum Speicherort der zweiten Verarbeitungseinheit, wobei die Cachezeile in Reaktion auf den Kopiervorgang im Speicher verbleiben soll und der Kohärenzzustand unverändert bleiben soll.

Description

  • HINTERGRUND
  • Gebiet der Erfindung
  • Die verschiedenen hierin beschriebenen Ausführungsformen der Erfindung betreffen im Allgemeinen das Gebiet der Verarbeitungslogik, Mikroprozessoren und der zugehörigen Befehlssatzarchitektur, die, wenn sie durch den Prozessor oder eine andere Verarbeitungslogik ausgeführt werden, logische, mathematische oder andere funktionale Operationen durchführen. Insbesondere betrifft die Offenbarung Befehle und Logik, um Datenbewegungsoperationen mit Lese-Snapshot und In-Place-Schreibaktualisierung bereitzustellen.
  • Beschreibung der verwandten Technik
  • Moderne Prozessoren weisen häufig Befehle auf, um rechenintensive Operationen bereitzustellen, bieten jedoch ein hohes Maß an Datenparallelität, die durch eine effiziente Implementierung unter Verwendung verschiedener Datenspeichervorrichtungen ausgenutzt werden kann. Beispielsweise kann in der Pipeline-Parallelität jede Schleifeniteration in Stufen unterteilt sein, und Hardware-Threads können gleichzeitig auf unterschiedlichen Stufen von verschiedenen Iterationen arbeiten. Bei diesem Ansatz fungiert eine vorherige Stufe einer Iteration, i, als ein Produzent für einen Konsumenten, die nächste Stufe der Iteration, i, und während ein Hardware-Thread auf der nächsten Stufe der Iteration, i, arbeitet, arbeitet ein anderer Hardware-Thread gleichzeitig auf einer vorherigen Stufe der Iteration, i+1. Somit wird ein serieller Softwareprozess von Hardware-Thread zu Hardware-Thread in die Warteschlange eingereiht und kann die Parallelität von Multikern- und/oder Multi-Thread-Prozessoren ausnutzen.
  • Einer der Nachteile der Software-Pipeline-Parallelität ist, dass die gemeinsame Nutzung und die Bewegung von Daten zwischen mehreren Kernen signifikante Leistungsverzögerungen zusammen mit teuren Erhöhungen des Kohärenzverkehrs, der Stromverwendung und des Energieverbrauchs verursachen können. Einige vorgeschlagene Lösungen führen eine Art von Message-Passing-Architektur und/oder softwareverwaltete Speicher ohne Kohärenzunterstützung ein, um die eingebauten Cachekohärenzerhöhungen beim Verkehr, bei den Stromanforderungen und beim Energieverbrauch zu vermeiden, indem die Software belastet wird. Ein Nachteil kann sein, dass zu den Aufgaben der Softwareprogrammierer ein beträchtlicher Entwicklungs- und Wartungsaufwand hinzukommt. Bis heute wurden mögliche Lösungen für derartige leistungsbeschränkenden Probleme, Probleme mit hohem Energieverbrauch und andere Engpässe nicht ausreichend untersucht.
  • Figurenliste
  • Die vorstehenden Aspekte und viele der damit verbundenen Vorteile dieser Erfindung werden leichter erkannt, wenn diese unter Bezugnahme auf die folgende detaillierte Beschreibung in Verbindung mit den beigefügten Zeichnungen besser verstanden werden, wobei sich gleiche Bezugszeichen auf gleiche Teile in den verschiedenen Ansichten beziehen, sofern nicht anderweitig angegeben:
    • 1 ist ein Blockschaltbild, das einen Überblick über einige der Transaktionen veranschaulicht, die durch Ausführungsformen der vorliegenden Erfindung durchgeführt werden können;
    • 2A-2B veranschaulichen die zugrunde liegenden Interaktionen in einem typischen Produzenten/Konsumenten-Datenaustausch zwischen zwei Prozessoren unter Verwendung eines Lese-/Ladebefehls;
    • 3A-3B veranschaulichen die zugrunde liegenden Interaktionen in einem Produzenten/Konsumenten-Datenaustausch zwischen zwei Prozessoren, wenn ein MOVGET-Befehl gemäß einer Ausführungsform verwendet wird;
    • 4A-4B veranschaulichen die zugrunde liegenden Interaktionen in einem typischen Produzenten/Konsumenten-Datenaustausch zwischen einem Prozessor und einem Eingabe/Ausgabe(E/A)-Schnittstellenblock unter Verwendung eines Lese-/Ladebefehls;
    • 5A-5B veranschaulichen die zugrunde liegenden Interaktionen in einem Produzenten/Konsumenten-Datenaustausch zwischen zwei Prozessoren, wenn eine Lese-Snapshot-Operation gemäß einer Ausführungsform verwendet wird;
    • 6 ist ein Nachrichtenflussdiagramm, das einen Konsumenten, der auf eine Cachezeile zugreift, die im lokalen Cache eines Produzenten gehalten wird, und den Produzenten, der später die gleiche Cachezeile modifiziert, nach einem herkömmlichen Ansatz veranschaulicht;
    • 7 ist ein Nachrichtenflussdiagramm, das einen Konsumenten, der auf eine Cachezeile zugreift, die im lokalen Cache eines Produzenten gehalten wird, und den Produzenten, der später die gleiche Cachezeile modifiziert, gemäß Ausführungsformen der vorliegenden Erfindung veranschaulicht;
    • 8 veranschaulicht ein Blockschaltbild für eine Ausführungsform eines Systems zum Verwenden eines Befehls zum Bereitstellen von Lese-Snapshot-Funktionalität;
    • 9 ist ein Flussdiagramm, das eine Ausführungsform eines Prozesses zum Bereitstellen von Lese-Snapshot-Funktionalität veranschaulicht;
    • 10A-10B veranschaulichen die zugrunde liegenden Interaktionen in einem typischen Produzenten/Konsumenten-Datenaustausch zwischen zwei Prozessoren unter Verwendung eines Schreibbefehls;
    • 11A-11C veranschaulichen die zugrunde liegenden Interaktionen in einem Produzenten/Konsumenten-Datenaustausch zwischen zwei Prozessoren, wenn ein MOVPUT-Befehl gemäß einer Ausführungsform verwendet wird;
    • 12 ist ein Nachrichtenflussdiagramm, das einen Produzenten, der zu einer Zielcachezeile schreibt, die im lokalen Cache eines Konsumenten gehalten wird, und den Konsumenten, der später auf die gleiche Cachezeile zugreift, nach einem herkömmlichen Ansatz veranschaulicht;
    • 13 ist ein Nachrichtenflussdiagramm, das einen Produzenten, der zu einer Zielcachezeile schreibt, die im lokalen Cache eines Konsumenten gehalten wird, und eine Ausführungsform der vorliegenden Erfindung, die einen MOVGET-Fluss verwendet, um die Zielcachezeile im Konsumenten-Cache zu aktualisieren, auf die der Konsument später zugreift, veranschaulicht;
    • 14 veranschaulicht ein Blockschaltbild für eine Ausführungsform eines Systems zum Verwenden eines Befehls zum Bereitstellen von In-Place-Schreibaktualisierungsfunktionalität;
    • 15 ist ein Flussdiagramm, das eine Ausführungsform eines Prozesses zum Bereitstellen von In-Place-Schreibaktualisierungsfunktionalität veranschaulicht;
    • 16 ist ein Blockschaltbild, das ein beispielhaftes System veranschaulicht, bei dem Ausführungsformen der vorliegenden Erfindung implementiert werden können;
    • 17A ist ein Blockschaltbild, das sowohl eine beispielhafte In-Order-Pipeline als auch eine beispielhafte Out-of-Order-Ausgabe-/Ausführungs-Pipeline mit Registerumbenennung gemäß Ausführungsformen der Erfindung veranschaulicht.
    • 17B ist ein Blockschaltbild, das sowohl eine beispielhafte Ausführungsform eines In-Order-Architekturkerns als auch eines beispielhaften Out-of-Order-Ausgabe-/Ausführungs-Architekturkerns mit Registerumbenennung, die in einen Prozessor eingeschlossen werden sollen, gemäß Ausführungsformen der Erfindung veranschaulicht.
    • 18 ist ein Blockschaltbild eines Einzelkernprozessors und eines Mehrkernprozessors mit integriertem Speichercontroller und Grafik gemäß Ausführungsformen der Erfindung;
    • 19 veranschaulicht ein Blockschaltbild eines Systems gemäß einer Ausführungsform der vorliegenden Erfindung;
    • 20 veranschaulicht ein Blockschaltbild eines zweiten Systems gemäß einer Ausführungsform der vorliegenden Erfindung;
    • 21 veranschaulicht ein Blockschaltbild eines dritten Systems gemäß einer Ausführungsform der vorliegenden Erfindung;
    • 22 veranschaulicht ein Blockschaltbild eines System-on-a-Chip (SoC) gemäß einer Ausführungsform der vorliegenden Erfindung; und
    • 23 veranschaulicht ein Blockschaltbild, das die Verwendung eines Softwarebefehlswandlers zum Umwandeln von binären Befehlen in einem Quellbefehlssatz in binäre Befehle in einem Zielbefehlssatz gemäß Ausführungsformen der Erfindung gegenüberstellt.
  • DETAILLIERTE BESCHREIBUNG
  • Hierin werden Ausführungsformen eines Verfahrens und Systems zum Durchführen von Datenbewegungsoperationen mit Lese-Snapshot und In-Place-Schreibaktualisierung beschrieben. In der folgenden Beschreibung sind zahlreiche spezielle Details dargelegt, um ein gründliches Verständnis der Ausführungsformen der Erfindung bereitzustellen. Fachleute auf dem betreffenden Gebiet werden jedoch erkennen, dass die Erfindung ohne ein oder mehrere der speziellen Details oder mit anderen Verfahren, Komponenten, Materialien usw. umgesetzt werden kann. In anderen Fällen werden wohlbekannte Strukturen, Materialien oder Operationen nicht im Detail gezeigt oder beschrieben, um Aspekte der Erfindung nicht unklar zu machen.
  • Die Bezugnahme auf „eine bestimmte Ausführungsform“ oder „eine Ausführungsform“ bedeutet die gesamte Beschreibung hindurch, dass ein bestimmtes Merkmal, eine bestimmte Struktur oder eine bestimmte Eigenschaft, welche(s) in Verbindung mit der Ausführungsform beschrieben wird, in wenigstens einer Ausführungsform der vorliegenden Erfindung eingeschlossen ist. Demnach bezieht sich das Vorkommen der Ausdrücke „in einer bestimmten Ausführungsform“ oder „in einer Ausführungsform“ an verschiedenen Stellen in der gesamten Beschreibung nicht unbedingt immer auf die gleiche Ausführungsform. Ferner können die jeweiligen Merkmale, Strukturen oder Eigenschaften in einer oder mehreren Ausführungsformen in beliebiger geeigneter Weise kombiniert werden. Der Klarheit halber können einzelne Komponenten in den Figuren hierin durch ihre Bezeichnungen in den Figuren und nicht durch ein spezielles Bezugszeichen bezeichnet werden.
  • Datenbewegungsdienste zwischen Produzenten und Konsumenten (z. B. Threads auf IA-Kernen) bewegen Kopien von Daten durch Lese- und Schreiboperationen zwischen diesen. Um eine optimale Leistung zu erzielen, speichern Produzenten und Konsumenten Kopien der Daten in ihren lokalen Caches basierend auf Überlegungen zur Lokalität. Wenn Produzenten und Konsumenten Daten aktualisieren und suchen, werden diese Überlegungen zur Lokalität geändert. In einigen kohärenten Speicherarchitekturen ändert beispielsweise der Vorgang des Lesens oder Aktualisierens von Daten durch Eingabe/Ausgabe(E/A)-Vorrichtungen über E/A-Schnittstellenblöcke auch den Kohärenzzustand und die Position der Daten in einer Cachehierarchie. In anderen Situationen führt das Messaging-System, das auf einem einzelnen Cache-kohärenten Knoten (z. B. einem Prozessor) läuft, eine unbeabsichtigte Übertragung des Cachezeilenbesitzes des Produzenten an den Konsumenten durch, während in Wirklichkeit nur die Daten an die Adresse des Konsumenten übertragen werden müssen. Diese Änderungen in den Überlegungen zur Lokalität verschlechtern nicht nur die Leistung, sondern konsumieren auch Strom, Kohärenzbandbreite und Cachespeicherplatz. Hochgeschwindigkeits-E/A-Schnittstellen, bei denen die Daten von der CPU von der/zur E/A konsumiert/produziert werden, Datenflussarchitekturen, die Kern-zu-Kern-Kommunikationen verwenden, um Messaging/Pipelining zu implementieren, oder Kern-zu-Cache-Operationen, die auf ausgewählte Anwendungsdatenzugriffsmuster fein abgestimmt sind, sind einige beispielhafte Verwendungen, die in diese Kategorie fallen.
  • Vorhandene Lösungen sind entweder nicht optimal oder nicht in der Lage, die gewünschten Funktionen durchzuführen. Beispielsweise ändert sich die Cachelokalität in E/Azu-Kern-Datenübertragungen für E/A-produzierte Daten, die von einem Kern konsumiert werden, und für Kern-produzierte Daten, die von der E/A konsumiert werden, wenn Daten zwischen dem Kern und der E/A bewegt werden. Das bedeutet, dass eine Leseoperation durch einen E/A-Schnittstellenblock für eine Zeile, die sich aktuell im Cache der ersten Ebene (L1) befindet, bewirken würde, dass die Zeile von dieser Ebene in der Caching-Hierarchie zu niedrigeren Ebenen entfernt wird, was in den meisten Fällen der Cache der letzten Ebene (LLC, Last Level Cache) ist. In ähnlicher Weise würde eine Schreiboperation über eine Direktspeicherzugriff(DMA, Direct Memory Access)-Operation für eine Zeile, die sich im L1-Cache befinden würde und aktiv von einer Anwendung verwendet wird, bewirken, dass die Zeile vom L1-Cache zum LLC entfernt wird. In einer Hochgeschwindigkeits-E/A-Umgebung sind diese Operationen verbreitet und bewirken eine Anzahl von Datenübertragungen zwischen verschiedenen Cacheebenen, wodurch unnötige Datenbewegung und unnötiger Kohärenzverkehr verursacht werden, was die Latenz erhöht, den Durchsatz verringert und den Strom erhöht.
  • Bei Kern-zu-Kern-Datenübertragungen verwenden Messaging-Systeme MEMCPY-Semantik, um Produzentenkern-zu-Konsumentenkern-Datenübertragungen zu erreichen. Diese Übertragungen führen beim Betrieb in der gleichen Cache-kohärenten Domäne zu einer Migration des Cachezeilenbesitzes des Produzenten zum Konsumenten. Infolgedessen belegen Produzentendaten und -adressen Cacheslots in den lokalen Caches des Konsumenten, die wertvollen Cachespeicherplatz konsumieren und zusätzlichen Kohärenzverkehr verursachen.
  • Aspekte der vorliegenden Erfindung sind auf spezielle Lese- und Schreiboperationen gerichtet, die, wenn sie ausgeführt werden, ermöglichen, dass Daten in situ in Bezug auf die Caching-Hierarchie und Kohärenz bezogen oder aktualisiert werden. In einer Ausführungsform ermöglicht eine vom Konsumenten initiierte Lese-Snapshot-Operation dem Konsumenten, Daten von einem Produzenten zu lesen oder zu beziehen, ohne nach Abschluss der Operation eine Änderung des Kohärenzzustands oder Speicherorts der Cachezeile, die die Daten enthält, zu bewirken. In einer anderen Ausführungsform ermöglicht eine von einem Produzenten initiierte In-Place-Schreibaktualisierungsoperation dem Produzenten, eine Adresse oder Cachezeile, die der Konsument besitzt, zu aktualisieren oder zu ihr zu schreiben, während der Kohärenzzustand und der Adressenbesitz durch den Konsumenten nach Abschluss der Operation beibehalten wird. Die Lese-Snapshot- und In-Place-Schreibaktualisierungsoperationen sollen als fundamentale Bausteine in der zugrunde liegenden Zwischenverbindung dienen und einen neuen Satz von Lese- und Schreibbefehlen ermöglichen. In einer Ausführungsform können E/A-Schnittstellenblöcke oder E/A-Vorrichtungen, die die E/A-Schnittstellenblöcke verwenden, diese Operationen direkt auslösen, um E/A-zu-Kern-Datenübertragungen durchzuführen. In einer anderen Ausführungsform können Kerne Befehle wie beispielsweise MOVGET und MOVPUT ausführen, um diese Operationen zum Lesen und Schreiben von Daten auszulösen.
  • 1 ist ein Blockschaltbild, das einen Überblick über einige der Transaktionen veranschaulicht, die durch Ausführungsformen der vorliegenden Erfindung durchgeführt werden können. Eine beispielhafte Systemplattform 100 kann einen oder mehrere Prozessoren (z. B. Prozessor 110) und einen oder mehrere E/A-Schnittstellenblöcke (z. B. 130) aufweisen. Der Prozessor 110 weist, wie veranschaulicht, zwei Kerne 120-1 und 120-2 auf, von denen jeder einen oder mehrere lokale Caches aufweist, wie beispielsweise jeweilige Caches der Ebene 1 (L1) (121-1 und 121-2) und jeweilige Caches der Ebene 2 (L2) (122-1 und 122-2). Der Prozessor 110 kann auch einen Cache der Ebene 3 (L3) 123 aufweisen, der von beiden Kernen 120-1 und 120-2 gemeinsam genutzt wird. Der E/A-Schnittstellenblock 130 kann auch einen oder mehrere lokale Caches (z. B. den lokalen Cache 132) aufweisen. Eine oder mehrere E/A-Vorrichtungen 134 sind mit dem E/A-Schnittstellenblock 130 verbunden.
  • Gemäß Ausführungsformen der vorliegenden Erfindung kann der Kern 1 120-1 als Produzent in-place eine Cachezeile aktualisieren, die sich aktuell im lokalen Cache (z. B. L1-Cache 121-2 oder L2-Cache 122-2) eines Konsumentenkerns (z. B. Kern 2 120-2) befindet, indem ein MOVPUT-Befehl 112 ausgeführt wird, ohne den Kohärenzzustand der aktualisierten Cachezeile und ihren Speicherort in der Cachehierarchie zu ändern. In einer Ausführungsform löst die Ausführung des MOVPUT-Befehls eine In-Place-Schreibaktualisierungsoperation aus. Zusätzlich kann der Kern 1 120-1 als Konsument eine Cachezeile lesen, die sich aktuell im lokalen Cache (z. B. L1-Cache 121-2 oder L2-Cache 122-2) eines Produzentenkerns (z. B. Kern 2 120-2) befindet,ohne den Kohärenzzustand der Cachezeile und ihren Speicherort in der Cachehierarchie zu ändern, indem ein MOVGET-Befehl 114 ausgeführt wird. Gemäß einer Ausführungsform löst die Ausführung des MOVGET-Befehls durch den Kern 1 120-1 eine Lese-Snapshot-Operation aus.
  • In ähnlicher Weise kann der E/A-Schnittstellenblock 130 als Produzent in-place eine Zeile, die sich aktuell im lokalen Cache eines Prozessors (z. B. L1-Cache 121-1, L2-Cache 122-2 oder gemeinsam genutzter L3-Cache 123) befindet, unter Verwendung der In-Place-Schreibaktualisierungsoperation aktualisieren, ohne den Kohärenzzustand der aktualisierten Cachezeile oder ihre Position in der Cachehierarchie zu ändern. Auf der anderen Seite kann der E/A-Schnittstellenblock 130 auch eine Cachezeile lesen, die sich aktuell im lokalen Cache eines Prozessors (z. B. L1-Cache 121-2, L2-Cache 122-2 oder gemeinsam genutzter L3-Cache 123) befindet, ohne den Kohärenzzustand der Cachezeile oder den Platz in der Cachehierarchie zu ändern, indem die Lese-Snapshot-Operation verwendet wird.
  • LESE-SNAPSHOT/MOVGET
  • Die Lese-Snapshot-Operation wird in Produzenten/Konsumenten-Nutzungsmodellen verwendet, bei denen der Konsument Daten vom Produzenten bezieht und sie in einem für den Konsumenten lokalen Speicherort speichert, ohne die Quelladresse oder die Cachezeile, die die Daten enthält, zu stören. In einer Ausführungsform ist der für den Konsumenten lokale Speicherort ein Register, das vom Konsumenten verwendet wird. In anderen Ausführungsformen ist der lokale Speicherort eine Speicheradresse oder Cachezeile im lokalen Cache des Konsumenten, die sich von der Quellspeicheradresse oder Cachezeile unterscheidet. In noch einer anderen Ausführungsform ist der lokale Speicherort ein Datenpuffer, wie beispielsweise einer, der sich im lokalen Cache des Konsumenten befindet und der wiederholt vom Produzenten verwendet werden kann, um mit neuen Daten für den Konsumenten aktualisiert zu werden. Die Lese-Snapshot-Operation kann Daten für eine Speicheradresse beziehen, wo immer diese Daten existieren, ohne den vorhandenen Kohärenzzustand der Daten oder ihren Speicherort in der Caching-Hierarchie zu ändern. Falls beispielsweise die aktuellsten (d. h. modifizierten) Daten, die für eine Speicheradresse angefordert werden, in einer Cachezeile des L1-Caches zwischengespeichert wären, würde die Lese-Snapshot-Operation die Daten von der Cachezeile im L1-Cache lesen Cache und dem Konsumenten, der die Daten anfordert, bereitstellen. Im Gegensatz zu aktuellen Ansätzen, wie beispielsweise Verwendung einer regulären Lese- oder Ladeoperation, die dazu neigen, alle modifizierten (d. h. schmutzigen) Daten in den Speicher zurückschreiben zu lassen, befinden sich die angeforderten Daten nach Abschluss einer Lese-Snapshot-Operation weiterhin in der Cachezeile im L1-Cache. Die Lese-Snapshot-Operation bewirkt keine Änderung des Speicherorts der Cachezeile oder des Kohärenzzustands infolge der Ausführung der Operation.
  • Um die Lese-Snapshot-Operation zwischen Prozessorkernen auszulösen, wird gemäß einer Ausführungsform ein neuer Ladebefehl MOVGET zur Befehlssatzarchitektur (ISA, Instruction Set Architecture) hinzugefügt. Der MOVGET-Befehl verwendet die zugrunde liegende Lese-Snapshot-Operation, um effizientere Datenbewegungsoperationen zwischen Prozessorkernen bereitzustellen. Ein Prozessorkern, der den MOVGET-Befehl ausführt, wird einfach eine aktuelle Kopie der angeforderten Cachezeile (d. h. Daten) „abrufen“, ohne die Cachezeile in den lokalen Cache laden oder den Speicherort und/oder den Kohärenzzustand der angeforderten Cachezeile ändern zu müssen.
  • 2A und 2B veranschaulichen die zugrunde liegenden Interaktionen in einem typischen Produzenten/Konsumenten-Datenaustausch zwischen zwei Prozessoren unter Verwendung eines Lese-/Ladebefehls, während 3A und 3B im Gegensatz dazu die zugrunde liegenden Interaktionen veranschaulichen, wenn ein MOVGET-Befehl gemäß einer Ausführungsform verwendet wird. Der Produzent und der Konsument, die in diesen Figuren gezeigt sind, können logische Prozessoren, Threads oder Kerne in einem Multi-Thread-/Mehrkern-Prozessor sein. Obgleich der Einfachheit halber ein einzelner lokaler Cache für jeden Produzenten und Konsumenten veranschaulicht ist, können sie außerdem zusätzliche Ebenen von lokalen Caches aufweisen, von denen einige gemeinsam genutzt werden können.
  • In 2A versucht der Prozessor 2 320 (d. h. der Konsument) die Cachezeile (CL, Cache Line) 232 zu lesen. Die einzige gültige Instanz der Cachezeile 232, die sich im modifizierten (M) oder exklusiven (E) Zustand befinden kann, befindet sich jedoch im lokalen Cache 212 des Prozessors 1 210 (d. h. des Produzenten). Somit verfehlt der Lesevorgang durch den Prozessor 2 220 den lokalen Cache 222. Dies wird durch die Operation 1 veranschaulicht (d. h. 1 von einem Kreis umschlossen). Infolge dieses Miss gibt der Home-Agent 202 eine Snoop-Anforderung für die Cachezeile 232 an den Prozessor 1 210 aus, wie durch die Operation 2 veranschaulicht. Der hier und in dieser Offenbarung verwendete „Home-Agent“ bezieht sich auf alle Controller, Agenten, Module, Schaltungen oder Programmcodes usw., die unter anderem Funktionen durchführen, um Speicher-/Cachekohärenz durchzusetzen und/oder sicherzustellen. Er kann auch als Kohärenzagent oder Kohärenzcontroller bekannt sein oder bezeichnet werden. Gemäß einer Ausführungsform ist der Home-Agent ein globaler Kohärenzmanager, der die Kohärenz zwischen anderen Kohärenzagenten oder -controllern verwaltet. Der Home-Agent 202 kann ein Verzeichnis aufweisen oder auf dieses zugreifen, das den Besitz und/oder den Status jeder Cachezeile verfolgt. Falls als Nächstes, wie in 2B veranschaulicht, die Cachezeile 232 im lokalen Cache 212 des Prozessors 1 210 im modifizierten (M) Zustand und somit „schmutzig“ ist, wird die Cachezeile 232 als Cachezeile 234 mittels eines Rückschreibens (d. h. Operation 3) in den Speicher 204 zurückgeschrieben. Zusätzlich wird der Kohärenzzustand der Cachezeile 232 im lokalen Cache 212 des Prozessors 1 210 von modifiziert (M) zu gemeinsam genutzt (S, shared) geändert, wie durch die Operation 4 veranschaulicht. Falls der Zustand der angeforderten Cachezeile 232 exklusiv (E) anstelle von modifiziert (M) war, ist kein Rückschreiben erforderlich. Stattdessen wird der Kohärenzzustand der angeforderten Cachezeile 232 einfach von exklusiv (E) zu gemeinsam genutzt (S, shared) geändert.
  • In jedem Szenario wird eine Kopie der Cachezeile 232 dem Prozessor 2 220 in der Operation 5 über eine Antwort auf den Lese-Miss des Prozessors 2 bereitgestellt. Diese Kopie der Cachezeile 232 wird im lokalen Cache 222 als Cachezeilenkopie 236 gespeichert und als gemeinsam genutzt (S, shared) markiert. Zusammengefasst wird infolge des von Prozessor 2 220 ausgegebenen Lesevorgangs der Cachekohärenzzustand der Cachezeile 232 geändert (z. B. M → S), und eine Kopie der Cachezeile 236 wird im lokalen Cache des Konsumenten 222 zwischengespeichert.
  • Im Gegensatz dazu veranschaulichen 3A und 3B die zugrunde liegenden Interaktionen, wenn ein MOVGET-Befehl gemäß Ausführungsformen der vorliegenden Erfindung verwendet wird. 3A veranschaulicht ähnlich wie 2A den Prozessor 2 320, der versucht, die Cachezeile 332 zu lesen, die sich aktuell im lokalen Cache 312 des Prozessors 1 310 befindet. Statt eines typischen Lesevorgangs führt der Prozessor 2 320 jedoch einen MOVGET-Befehl aus, der in einigen Ausführungsformen eine Lese-Snapshot-Operation in der zugrunde liegenden Systemplattform auslöst.
  • Ähnlich wie in 2A befindet sich die einzige gültige Kopie der Cachezeile 332, die sich im modifizierten (M) oder exklusiven (E) Zustand befinden kann, im Prozessor 1 310. Die MOVGET-Operation, die vom Prozessor 2 320 ausgegeben wird, um die Cachezeile 302 anzufordern, führt daher zu einem Miss im lokalen Cache 322, wie durch die Operation 1 veranschaulicht. Im Anschluss an den Miss leitet der Home-Agent 302 die Anforderung weiter oder gibt einen Snoop an den Prozessor 1 310 aus. In einigen Ausführungsformen weist die Anforderung oder der Snoop an den Prozessor 1 310 einen Hinweis auf, der anzeigt, dass nur die Daten von der Cachezeile angefordert werden. Als Nächstes, wie in 3B gezeigt, sendet der Prozessor 1 310 in Reaktion auf die Verarbeitung der Anforderung die Cachezeilenkopie (d. h. Daten) 334 an den Home-Agenten 302 in der Operation 3. Der Home-Agent 302 sendet wiederum die Cachezeilenkopie (d. h. Daten) 334 an den Prozessor 2 320 in der Operation 4. Alternativ kann die Cachezeilenkopie (d. h. Daten) direkt vom Prozessor 1 zum Prozessor 2 gesendet werden, ohne den Home-Agenten 302 zu durchlaufen. Gemäß einigen Ausführungsformen wird die Cachezeilenkopie (d. h. Daten) 334 nicht im lokalen Cache 322 des Prozessors 2 zwischengespeichert. Stattdessen wird sie direkt in einem Register 324 gespeichert. In anderen Ausführungsformen kann die Cachezeilenkopie (d. h. Daten) 334 in den lokalen Cache 322 des Prozessors 2 bei einer anderen Adresse oder Cachezeile gespeichert werden (nicht gezeigt). Es wird keine Änderung an der ursprünglichen Cachezeile 332 vorgenommen, die sich immer noch im lokalen Cache 312 des Prozessors 1 310 befindet und ihren Cachekohärenzzustand beibehält (z. B. modifiziert (M) oder exklusiv (E)).
  • Es ist zu beachten, dass die Cachezeile 332 nicht in einem modifizierten (M) oder exklusiven (E) Zustand sein muss, damit die MOVGET-Operation funktioniert. In Situationen, in denen die Cachezeile 332 in mehreren Caches oder Prozessoren zwischengespeichert wird (d. h. der Kohärenzzustand ist gemeinsam genutzt (S, shared)), würde ein Prozessor, der eine MOVGET-Operation ausgibt, gemäß einer Ausführungsform immer noch eine Kopie der Cachezeile 332 von wenigstens einem der mehreren Caches oder Prozessoren empfangen, der eine Kopie der Cachezeile besitzt. Diese Kopien würden nach dem Zugriff im gemeinsam genutzten (S, shared) Zustand bleiben.
  • Obgleich in 2A-2B und 3A-3B die Interaktion zwischen zwei Prozessoren oder Prozessorkernen veranschaulicht ist, können ähnliche Interaktionen in Szenarien gefunden werden, die andere Knoten oder Vorrichtungen beinhalten, die an der Speicher-/Cachekohärenz beteiligt sind. Beispielsweise veranschaulichen 4A-4B und 5A-5B ähnliche Produzenten/Konsumenten-Datenaustausche zwischen einem Prozessor und einem E/A-Schnittstellenblock. In 4A-4B wird eine Leseoperation verwendet, während in 5A-5B eine Lese-Snapshot-Operation verwendet wird.
  • Unter Bezugnahme auf 4A versucht der E/A-Schnittstellenblock 420 (d. h. der Konsument) die Cachezeile (CL, Cache Line) 432 zu lesen. Die einzige gültige Instanz der Cachezeile 432 befindet sich jedoch im lokalen Cache 412 des Prozessors 1 410 (d. h. des Produzenten). Somit verfehlt die Leseoperation, die durch den E/A-Schnittstellenblock 420 initiiert wird, den lokalen Cache 422 in Operation 1. Infolge dieses Miss gibt der Home-Agent 402 eine Snoop-Anforderung für die Cachezeile 432 an den Prozessor 410 aus, wie durch die Operation 2 veranschaulicht. Da die Cachezeile 432 im lokalen Cache 412 des Prozessors 410 modifiziert wurde und daher „schmutzig“ ist, wird als Nächstes die Cachezeile 432 als Cachezeile 434 mittels eines Rückschreibens in den Speicher 404 zurückgeschrieben, wie durch die Operation 3 in 4B veranschaulicht. Der Kohärenzzustand der ursprünglichen Cachezeile 432, die im lokalen Cache 412 des Prozessors 410 gespeichert ist, wird von modifiziert (M) zu gemeinsam genutzt (S, shared) geändert, wie durch die Operation 4 veranschaulicht. Zusätzlich zum Rückschreiben in den Speicher wird eine Kopie der Cachezeile 432 über die Operation 5 an den E/A-Schnittstellenblock 420 bereitgestellt. Diese Kopie der Cachezeile 432 wird im lokalen Cache 422 als Cachezeilenkopie 436 gespeichert und als gemeinsam genutzt (S, shared) markiert. Somit wird infolge des Lesevorgangs, der vom E/A-Schnittstellenblock 420 ausgegeben wird, der Cachekohärenzzustand der Cachezeile 432 im Prozessor 410 geändert (d. h. M → S).
  • Im Gegensatz dazu veranschaulichen 5A und 5B die zugrunde liegenden Interaktionen, wenn die Lese-Snapshot-Operation gemäß einigen Ausführungsformen verwendet wird. 5A veranschaulicht ähnlich wie 4A den E/A-Schnittstellenblock 520 (d. h. den Konsumenten), der versucht, die Cachezeile 532 zu lesen, die sich aktuell im lokalen Cache 512 des Prozessors 510 befindet. Anstelle einer typischen Leseoperation initiiert der E/A-Schnittstellenblock 520 jedoch eine Lese-Snapshot-Operation. Da sich die einzige gültige Kopie der Cachezeile 532 im Prozessor 510 befindet, verfehlt die Lese-Snapshot-Anforderung den lokalen Cache 522 des E/A-Schnittstellenblocks 520. Dies wird durch die Operation 1 veranschaulicht. Infolge des Miss gibt der Home-Agent 502 die Lese-Snapshot-Anforderung (RS, Read Snapshot) aus oder leitet diese weiter, die vom Prozessor 510 über einen Snoop empfangen wird, wie durch die Operation 2 veranschaulicht. In 5B gibt der Prozessor 510 in Reaktion auf die Lese-Snapshot-Anforderung eine Kopie der Cachezeile 532 in der Operation 3 zurück. Gemäß einer Ausführungsform wird diese Cachezeilenkopie 536 im Puffer 524 gespeichert, der sich im lokalen Cache 522 des E/A-Schnittstellenblocks 520 befindet. Die Cachezeilenkopie 536 kann in einer anderen Adresse gespeichert werden. Infolge der Durchführung der Lese-Snapshot-Operation wird keine Änderung an der ursprünglichen Cachezeile 532 vorgenommen, die sich immer noch im lokalen Cache 512 des Prozessors 510 befindet und ihren Cachekohärenzzustand beibehält (d. h. modifiziert (M)).
  • 6 ist ein Nachrichtenflussdiagramm, das einen Konsumenten, der auf eine Cachezeile zugreift, die im lokalen Cache eines Produzenten gehalten wird, und den Produzenten, der später die gleiche Cachezeile modifiziert, nach einem herkömmlichen Ansatz veranschaulicht. Das Nachrichtenflussdiagramm 600 ist auf einer Computerplattform implementiert, die einen Produzenten 602, einen Home-Agenten 606 und einen Konsumenten 610 umfasst. Der Produzent und der Konsument können beliebige Knoten oder Entitäten sein, die an einer kohärenten Speicherhierarchie beteiligt sind, die auf der Plattform implementiert ist. Der Produzent 602 weist einen lokalen Cache 604 des Produzenten auf, und der Konsument 610 weist einen lokalen Cache 608 des Konsumenten auf. Der lokale Cache des Produzenten und des Konsumenten kann beispielsweise LI-Cache, L2-Cache/Cache der mittleren Ebene (MLC, Mid Level Cache) und/oder L3-Cache/Cache der letzten Ebene (LLC, Last Level Cache) aufweisen. Jeder der lokalen Caches wird durch entsprechende Cacheagenten oder -controller (nicht gezeigt) verwaltet. In einigen Fällen ist der Home-Agent ein L3/LLC-Cacheagent/-controller.
  • Im Anfangszustand gibt es nur eine Kopie der Cachezeile, die im lokalen Cache 604 des Produzenten zwischengespeichert ist und einen modifizierten (M) Cachekohärenzzustand aufweist, der anzeigt, dass sie „schmutzig“ ist. Die anfängliche Cachezeile wird durch das Bezugszeichen 612 veranschaulicht. Der Konsument 610 möchte eine Kopie dieser Cachezeile erhalten und gibt daher eine Leseanforderung 622 aus. Da der lokale Cache 608 des Konsumenten keine Kopie der Cachezeile enthält, führt die Leseanforderung zu einem Miss 624, der dann an den Home-Agenten 606 weitergeleitet wird. In Reaktion auf den Lese-Miss 624 bestimmt der Home-Agent 606 bei 626, wie beispielsweise durch Prüfen eines Verzeichnisses, welcher Cache die Anforderungscachezeile aufweist. Nach dem Bestimmen, dass der lokale Cache 604 des Produzenten die Cachezeile 612 enthält, sendet der Home-Agent 606 eine Nachricht 628 an den lokalen Cache 604 des Produzenten, um die Cachezeile anzufordern. Der Cache 604 des Produzenten wiederum sendet eine Antwort 630, die eine Kopie der Cachezeile enthält, zurück an den Home-Agenten 606. Eine Kopie der Cachezeile wird im Cache 604 des Produzenten behalten, wobei der Cachekohärenzzustand auf gemeinsam genutzt (S, shared) gesetzt ist. Dies wird durch das Bezugszeichen 614 veranschaulicht. In Reaktion auf das Empfangen der Antwort 630 vom lokalen Cache 604 des Produzenten schreibt der Home-Agent 606 die Cachezeile in den Speicher zurück, um sicherzustellen, dass jegliche an der Cachezeile vorgenommene Modifikation nicht verloren geht. Zusätzlich leitet der Home-Agent 606 die Antwort zusammen mit der angeforderten Cachezeile über die Antwort 632 zum lokalen Cache 608 des Konsumenten weiter. Die angeforderte Cachezeile wird dann im lokalen Cache 608 des Konsumenten als Cachezeilenkopie 616 gespeichert und als gemeinsam genutzt (S, shared) markiert.
  • Danach versucht der Produzent 602, zur Cachezeile zu schreiben. Eine Schreibanforderung 636 wird an den lokalen Cache 604 gesendet, um die Cachezeile zu erhalten. Obgleich eine Kopie der Cachezeile 614 im lokalen Cache 604 des Produzenten zwischengespeichert wird, wird ihr Cachekohärenzzustand als gemeinsam genutzter (S, shared) Zustand markiert, und daher muss zuerst der alleinige Besitz der Cachezeile erhalten werden, bevor sie modifiziert werden kann. Dementsprechend sendet der lokale Cache 604 eine Nachricht mit einer Anforderung nach Besitz (RFO, Request for Ownership) an den Home-Agenten 606. Der Home-Agent 606 bestimmt bei 640 erneut, welcher der Caches auch eine Kopie der Cachezeile aufweist. Nach dem Bestimmen, dass der lokale Cache 608 des Konsumenten eine Kopie der Cachezeile enthält, sendet der Home-Agent 606 eine Nachricht 642, um die Kopie der im lokalen Cache 608 des Konsumenten zwischengespeicherten Cachezeile zu invalidieren, um dem Produzenten 602 den exklusiven Besitz der Cachezeile zu geben. In Reaktion auf die Invalidierungsnachricht 642 wird der Cachekohärenzzustand der Cachezeilenkopie 618 im lokalen Cache 608 des Konsumenten auf (I)nvalidieren gesetzt und eine Antwort 644 an den Home-Agenten 606 zurückgesendet, der die Invalidierung bestätigt. Der Home-Agent sendet dann eine Nachricht des Abschlusses 646 zurück an den lokalen Cache 604 des Produzenten, die den Abschluss der RFO-Anforderung anzeigt. In Reaktion darauf wird die Cachezeilenkopie im lokalen Cache 604 des Produzenten als (E)xklusiv markiert, was den alleinigen Besitz der Cachezeile durch den lokalen Cache 604 des Produzenten anzeigt. Ein Schreibvorgang 648 wird dann auf der Cachezeile durchgeführt. Die aktualisierte (d. h. schmutzige) Cachezeile 620 wird dann als modifizierter (M) Zustand markiert. Wie in 6 veranschaulicht, erzeugt dieser Produzenten/Konsumenten-Austausch einen Ping-Pong-Effekt, bei dem der Produzent nach einem Lesevorgang des Konsumenten die Kontrolle über eine Cachezeile verliert und den Cachezeilenbesitz wieder herstellen muss, bevor der Produzent die Cachezeile wieder modifizieren kann. Dieser Ping-Pong-Effekt ist zeitaufwendig und sollte vermieden werden.
  • 7 ist ein Nachrichtenflussdiagramm, das einen Cachezeilenzugriff zwischen einem Produzenten und einem Konsumenten veranschaulicht, unter dem eine Lese-Snapshot-Operation oder ein MOVGET-Befehl, der die Lese-Snapshot-Operation auslöst, gemäß Ausführungsformen der vorliegenden Erfindung verwendet wird. In einem Anfangszustand, ähnlich wie in 6, gibt es nur eine gültige Instanz der Cachezeile, die im lokalen Cache 704 des Produzenten zwischengespeichert ist. Diese Cachezeile wird als modifiziert (M) markiert, wodurch angezeigt wird, dass sie „schmutzig“ ist. Die anfängliche Cachezeile wird durch das Bezugszeichen 712 veranschaulicht. Der Konsument 710 möchte eine Kopie dieser Cachezeile erhalten. Statt einer Leseoperation verwendet der Konsument 710 jedoch eine Lese-Snapshot-Operation 722. In einigen Ausführungsformen führt der Konsument 7 einen MOVGET-Befehl aus, um die Lese-Snapshot-Operation in der zugrunde liegenden Systemplattform auszulösen. Da der lokale Cache 708 des Konsumenten keine Kopie der Cachezeile enthält, führt die Lese-Snapshot-Anforderung zu einem Miss 724, der dann an den Home-Agenten 706 weitergeleitet wird. In Reaktion auf den Lese-Miss 724 bestimmt der Home-Agent 706 bei 726 (z. B. durch Prüfen eines Verzeichnisses), welche(r) Cache(s) die angeforderte Cachezeile aufweist/aufweisen. Nach dem Bestimmen, dass der Cache 704 des Produzenten die Cachezeile 712 enthält, leitet der Home-Agent 706 die Lese-Snapshot-/MOVGET-Anforderung 728 an den lokalen Cache 704 des Produzenten für jede Cachezeile weiter. Der lokale Cache 704 des Produzenten wiederum sendet eine Antwort 730, die eine Kopie der Cachezeile enthält, zurück an den Home-Agenten 706. Die ursprüngliche Cachezeile 712 bleibt unverändert und wird am gleichen Speicherort im Cache 704 des Produzenten gehalten. In Reaktion auf das Empfangen der Antwort 730 vom lokalen Cache 704 des Produzenten leitet der Home-Agent 706 die Antwort zusammen mit der Kopie der Cachezeile über die Antwortnachricht 732 an den lokalen Cache 708 des Konsumenten weiter. Die Cachezeilenkopie 714 wird dann dem Konsumenten 710 bereitgestellt. In einer Ausführungsform wird die Cachezeilenkopie 714 in einem Register im Konsumenten 710 gespeichert und nicht im lokalen Cache 708. In anderen Ausführungsformen werden die Daten in der Cachezeilenkopie 714 an einer anderen Adresse im lokalen Cache 708 gespeichert, beispielsweise indem sie als eine neue Cachezeile mit dem geeigneten Kohärenzzustand gespeichert wird.
  • Danach versucht der Produzent 702, zur Cachezeile zu schreiben, indem eine Schreiboperation ausgegeben wird. Eine Schreibanforderung 734 wird an den lokalen Cache 704 des Produzenten gesendet. Die angeforderte Cachezeile 712 wird im lokalen Cache 704 mit einem (M)odifizierten Zustand gefunden, wodurch angezeigt wird, dass die Cachezeile 712 bereits die letzte gültige Kopie ist. Somit werden Daten über den Schreibvorgang 736 direkt in die Cachezeile 712 geschrieben. Die aktualisierte Cachezeile 716 bleibt im gleichen lokalen Cache 704 und behält den (M)odifizierten Kohärenzzustand bei.
  • Im Vergleich zum in 6 veranschaulichten herkömmlichen Ansatz beseitigt der neue Ansatz in 7 den Ping-Pong-Effekt in der Auseinandersetzung um den Cachezeilenbesitz zwischen einem Produzenten und einem Konsumenten, wodurch Verarbeitungszeit sowie zugehörige Ressourcen und Nachrichten-Overheads eingespart werden.
  • Der folgende Pseudocode veranschaulicht die Verwendung einer Ausführungsform des MOVGET-Befehls im Vergleich zur Verwendung eines herkömmlichen READ-Befehls:
    flag = 0 // Flag wird initialisiert
    //PRODUZENTEN -Schleife
    while (flag != 0) {} // warten, bis flag vom KONSUMENTEN gelöscht
    wird.
    memcpy (prodbuf, databuf, datalen); // PRODUZENT schreibt von databuf zu prodbuf.
    atomic_update(flag = datalen); // flag setzen, damit KONSUMENT lesen kann.
    ...
    //KONSUMENTEN-Schleife unter Verwen dung von MOVGET
    while (flag == 0) {} // warten, bis flag vom PRODUZENTEN
    gesetzt wird.
    memcpy_using_movget(consbuf, prodbuf,flag); // KONSUMENT verwendet MOVGET zum Kopieren
    // von prodbuf zu consbuf.
    atomic_update(flag = 0); // flag löschen, damit PRODUZENT
    schreiben kann.
    //KONSUMENTEN-Schleife unter Verwen dung von herkömmlichem READ
    while (flag == 0) {} // warten, bis flag vom PRODUZENTEN gesetzt
    wird.
    memcpy(consbuf, prodbuf, flag); // KONSUMENT verwendet herkömmliches Laden zum Kopieren
    // von prodbuf zu consbuf.
    atomic_update(flag = 0); // flag löschen, damit PRODUZENT schreiben
    kann.
    ...
  • 8 veranschaulicht ein Blockschaltbild für eine Ausführungsform eines Systems 800 zum Verwenden eines Befehls (d. h. MOVGET) zum Bereitstellen von Lese-Snapshot-Funktionalität; Das System 800 weist einen Home-Agenten 880, einen Systemspeicher 890 und einen Prozessor 802 auf. Der Prozessor 802 umfasst einen ersten logischen Prozessor (z. B. Hardware-Thread oder Prozessorkern) 810 und einen zweiten logischen Prozessor 820. Es wird erkannt, dass, obgleich der Prozessor 802 der Einfachheit halber so veranschaulicht ist, dass er zwei logische Prozessoren umfasst, die jeweils einen einzelnen Hardware-Thread repräsentieren, die Erfindung nicht darauf beschränkt ist. Beispielsweise ist es typisch, dass Prozessoren wie beispielsweise der Prozessor 802 oder andere hierin veranschaulichte Prozessoren mehrere logische Prozessoren aufweisen, die einige physikalische Ressourcen und/oder Schaltungen gemeinsam nutzen können oder nicht. Jeder logische Prozessor kann eine Mehrzahl von Hardware-Threads aufweisen, die in der Lage sind, Software-Threads simultan oder gleichzeitig auszuführen. Der logische Prozessor 810 weist eine Decodierstufe oder -schaltungen 812 und eine oder mehrere Ausführungseinheiten oder -schaltungen, z. B. Ausführungseinheit 814, auf. Der logische Prozessor 820 weist eine Decodierstufe oder -schaltungen 822 und eine oder mehrere Ausführungseinheiten oder -schaltungen, z. B. Ausführungseinheit 824, auf. Die logischen Prozessoren 810 und 820 weisen jeweils einen oder mehrere Caches in einer Cachehierarchie auf, um Cache-kohärente Daten in Cachezeilen zu speichern. Beispielsweise weist der logische Prozessor 810 die Caches 830 und 850 auf, und der logische Prozessor 820 weist die Caches 840 und 860 auf. Die Caches 830 und 840 sind Caches 806 der Ebene 1 (L1) und weisen jeweils die Controller 832 und 842 auf. Die Caches 850 und 860 sind Caches 808 der Ebene 2 (L2) und weisen jeweils die Controller 852 und 862 auf. Das System 800 weist ferner in seiner Cachespeicherhierarchie einen Cache 870 der letzten Ebene auf, der den Controller 872 einschließt. Der Cache 870 der letzten Ebene kann die L1-Caches 806 und/oder die L2-Caches 808 einschließen oder ausschließen. Es wird erkannt, dass, obgleich der Prozessor 802 der Einfachheit halber so veranschaulicht wird, dass er nur L1-Caches 806 aufweist, andere Ebenen der Cachespeicherhierarchie, wie beispielsweise L2-Caches 808, auch im Prozessor 802 eingeschlossen sein könnten.
  • Der logische Prozessor 810 speichert Cache-kohärente Daten in einer Cachezeile 835 für eine gemeinsam genutzte Speicheradresse, auf die die logischen Prozessoren 810 und 820 zugreifen können. Die Cachezeile 835 weist einen Cachekohärenzzustand auf oder ist mit diesem assoziiert, der in einigen Ausführungsformen vom Home-Agenten 880 und/oder von den verschiedenen Controllern (z. B. 832) verwendet wird, um Cachekohärenz sicherzustellen oder durchzusetzen. In einigen Ausführungsformen ist der Cachekohärenzzustand der Cachezeile 835 auf den modifizierten (M) oder exklusiven (E) Zustand gesetzt, wodurch angezeigt wird, dass der Cache 830 den alleinigen Besitz der Cachezeile 835 hat. Damit hat auch der logische Produzent 810, der den Cache 830 einschließt, den alleinigen Besitz der Cachezeile 835. Alternativ können Cache-kohärente Daten in der Cachezeile 855, 875 oder 895 in ihren jeweiligen Speicherorten (z. B. L2-Cache 850, LLC 870 oder Systemspeicher 890) gespeichert werden, wobei ein assoziierter Kohärenzzustand anzeigt, dass die jeweiligen Speicherorte alleinigen Besitz der Cachezeile haben.
  • Die Decodierstufe 822 des logischen Prozessors 820 dient zur Decodierung eines Befehls 891 (z. B. MOVGET) zur Ausführung. Der Befehl 891 kann einen Quelldatenoperanden angeben (z. B. 835 oder optional 855, 875, 895 oder einen anderen Quelldatenoperanden). Der Quelldatenoperand ist in einigen Ausführungsformen eine Speicheradresse (z. B. die gemeinsam genutzte Adresse, die die Cachezeile 835 identifiziert). Der Befehl 891 kann auch einen Zieloperanden angeben, der einen Speicherort anzeigt, der ein Register/Puffer (z. B. 825) oder eine Speicheradresse (z. B. 845) sein kann, die sich von der gemeinsam genutzten Speicheradresse unterscheidet. Darüber hinaus können der Quell- und/oder der Zieloperand eine Datengröße angeben oder anzeigen, wie beispielsweise 4, 8, 16, 32 oder 64 Bytes usw. Die Größe der Operanden kann variieren.
  • Die eine oder mehreren Ausführungseinheiten des logischen Prozessors 820 (z. B. die Ausführungseinheit 824), die auf den decodierten Befehl 891 reagieren, können bewirken, dass Daten vom Quelldatenoperanden (z. B. Cachezeile 835 oder optional 855, 875, 895 oder einem anderen Quelldatenoperanden) an den vom Zieloperanden (z. B. 825 oder 845) angegebenen Speicherort kopiert werden, ohne die Daten, den Cachekohärenzzustand und/oder den Speicherort des Quelldatenoperanden zu ändern. Das Kopieren der Daten wird gemäß einigen Ausführungsformen unter Verwendung des Home-Agenten 880 und/oder der verschiedenen Cachecontroller (z. B. 830) durchgeführt. Ausführungsformen des Befehls 891 stellen eine Lese-Snapshot-Funktionalität bereit, die es dem logischen Prozessor 820 erlaubt, Daten von einem Quelldatenoperanden (z. B. der Cachezeile 835) zu lesen, während der alleinige Besitz der Cache-kohärenten Daten im Speicherort (z. B. Cache 830) des Quelldatenoperanden (z. B. Cachezeile 835) verbleibt, um zu vermeiden, dass ein Cache-Miss bei einem nachfolgenden Schreibvorgang zum Quelldatenoperanden auftritt, beispielsweise durch den logischen Prozessor 810.
  • In einigen Ausführungsformen kann der Befehl 891 (z. B. MOVGET) in eine oder mehrere Operationen (z. B. Lese-Snapshot-Operation 893) decodiert werden, die auch als Mikrooperationen, Mikro-Ops oder uOps bekannt sind, die von der Messaging-Logik 826 des Prozessorkerns 820 zur Messaging-Logik 816 des Prozessorkerns 810 gesendet werden können. In einigen Ausführungsformen können Daten in Reaktion auf die Lese-Snapshot-Operation 893 vom Quelldatenoperanden (z. B. 835 oder 855 oder einem anderen Quelldatenoperanden) in einen Datenpuffer (z. B. 815) unter Verwendung einer Cachesteuerlogik (z. B. Steuerlogik 832 oder 852) geladen werden. Eine Nachricht 895 mit Daten kann dann von der Messaging-Logik 816 an die Messaging-Logik 826 gesendet werden, und die Daten können im Zieloperanden 825 gespeichert werden.
  • 9 veranschaulicht ein Flussdiagramm für eine Ausführungsform eines Prozesses 900 zum Bereitstellen von Lese-Snapshot-Funktionalität. Der Prozess 900 und andere hierin offenbarte Prozesse werden mittels Verarbeitungsblöcken durchgeführt, die dedizierte Hardware- oder Software- oder Firmware-Operationscodes umfassen können, die durch allgemeine Maschinen oder durch Spezialmaschinen oder durch eine Kombination von beiden ausführbar sind.
  • In Block 902 werden Daten für eine erste Speicheradresse in einer Cachezeile eines Speichers einer ersten Verarbeitungseinheit gespeichert. Die Cachezeile kann einen Kohärenzzustand aufweisen oder damit assoziiert sein, der anzeigt, dass der Speicher den alleinigen Besitz der Cachezeile hat. Der Kohärenzzustand kann ein modifizierter (M) oder exklusiver (E) Zustand sein. Der Speicher kann ein Cache der Ebene 1 (L1), Cache der Ebene 2 (L2)/Cache der mittleren Ebene (MLC, Mid Level Cache), Cache der Ebene 3 (L3)/Cache der letzten Ebene (LLC, Last Level Cache) oder Systemspeicher sein.
  • In Block 904 decodiert eine zweite Verarbeitungseinheit einen Befehl zur Ausführung, wobei der Befehl einen Quelldatenoperanden, der die erste Speicheradresse angibt, und einen Zieloperanden, der einen Speicherort der zweiten Verarbeitungseinheit angibt, umfasst. Der Befehl kann ein MOVGET-Befehl sein, der, wenn er decodiert und ausgeführt wird, eine Lese-Snapshot-Operation auslöst. Der durch den Zieloperanden angegebene Speicherort kann ein Register der zweiten Verarbeitungseinheit sein. Alternativ kann der Speicherort eine zweite Speicheradresse sein, die sich von der ersten Speicheradresse unterscheidet. In einer Ausführungsform können die erste und zweite Speicheradresse als ein Offset zu einer anderen Speicheradresse ausgedrückt werden. Darüber hinaus können der Quell- und/oder der Zieloperand eine Datengröße angeben oder anzeigen, wie beispielsweise 4, 8, 16, 32 oder 64 Bytes usw. Die Größe der Operanden kann variieren.
  • In Block 906 bewirkt die zweite Verarbeitungseinheit in Reaktion auf das Ausführen des decodierten Befehls, dass Daten von der Cachezeile des Speichers der ersten Verarbeitungseinheit, wie durch die erste Speicheradresse identifiziert, in den Speicherort der zweiten Verarbeitungseinheit kopiert werden. Infolge des Kopierens soll die Cachezeile im Speicher der ersten Verarbeitungseinheit verbleiben und der Kohärenzzustand der Cachezeile unverändert bleiben.
  • In Block 908 wird auf die Cachezeile im Speicher der ersten Verarbeitungseinheit zugegriffen (z. B. Schreibvorgang zur Cachezeile), ohne dass der Speicher den Besitz der Cachezeile suchen muss.
  • IN-PLACE-SCHREIBAKTUALISIERUNG/MOVPUT
  • Die In-Place-Schreibaktualisierungsoperation wird in Produzenten/Konsumenten-Nutzungsmodellen verwendet, wobei der Produzent auf eine Adresse abzielt, die vorzugsweise im lokalen Cache des Konsumenten ist. In einigen Fällen wurde die Zieladresse entweder explizit oder implizit durch den Konsumenten durch wiederholte Verwendung „aufgewärmt“. Der Produzent aktualisiert die Zieladresse mit neuen Daten, die vom Konsumenten konsumiert werden sollen. Die In-Place-Schreibaktualisierungsoperation aktualisiert die Zieladresse, wo immer die neuesten Daten für die Zieladresse existieren, und ändert den vorhandenen Kohärenzzustand und/oder den Speicherort der Zieladresse in der Caching-Hierarchie nicht. Falls beispielsweise ein Produzent neue Daten für eine Zieladresse hat, die sich aktuell im L1-Cache des Konsumenten und im modifizierten (M) Zustand befindet, würde die In-Place-Schreibaktualisierungsoperation einfach die Zieladresse im L1-Cache des Konsumenten mit neuen Daten aktualisieren. Im Gegensatz zu aktuellen Ansätzen, wie beispielsweise der Verwendung einer regulären Schreiboperation, die das Rückschreiben modifizierter Daten in den Speicher und das Invalidieren der Zieladresse im L1-Cache des Konsumenten erfordert, würde sich die Zieladresse nach Abschluss einer In-Place-Schreibaktualisierungsoperation weiterhin im L1-Datencache des Konsumenten befinden. Die In-Place-Schreibaktualisierungsoperation führt nicht zu einer Änderung des Speicherorts oder Kohärenzzustands der Zieladresse.
  • Um die In-Place-Schreibaktualisierung zwischen Prozessorkernen auszulösen, wird gemäß einer Ausführungsform ein neuer Speicherbefehl MOVPUT zur Befehlssatzarchitektur (ISA, Instruction Set Architecture) hinzugefügt. Der MOVPUT-Befehl verwendet die zugrunde liegende In-Place-Schreibaktualisierungsoperation, um effizientere Datenbewegungsoperationen zwischen Prozessorkernen bereitzustellen. Ein Prozessorkern, der den MOVPUT-Befehl ausführt, wird Daten für eine Zielspeicheradresse (d. h. Cachezeile) einfach in-place (d. h. an ihrem aktuellen Speicherort in der Cachehierarchie) „ablegen“ (d. h. aktualisieren), ohne die Zielspeicheradresse (d. h. Cachezeile) in den lokalen Cache des Prozessorkerns laden oder ihren Speicherort und/oder ihren Besitz ändern zu müssen. 10A und 10B veranschaulichen die zugrunde liegenden Interaktionen in einem typischen Produzenten/Konsumenten-Datenaustausch unter Verwendung eines Schreibbefehls, während 11A-11C im Gegensatz dazu die zugrunde liegenden Interaktionen veranschaulichen, wenn eine Ausführungsform des MOVPUT-Befehls verwendet wird. Der Produzent und der Konsument, die veranschaulicht sind, können logische Prozessoren (Threads) oder Kerne in einem Multi-Thread-/Mehrkern-Prozessor sein. Obgleich in diesen Figuren der Einfachheit halber ein einzelner lokaler Cache für jeden Produzenten und Konsumenten veranschaulicht ist, können zusätzliche oder mehrere Ebenen von lokalen Caches vorhanden sein.
  • In 10A versucht der Prozessor 1 1010 (d. h. Produzent), zur Zielcachezeile (CL, Cache Line) zu schreiben, die sich aktuell im Prozessor 2 1020 (d. h. Konsumenten) befindet. Der lokale Cache 1012 des Prozessors 1 hat keine gültige Kopie der Zielcachezeile, da sich die einzige gültige Instanz 1032 im lokalen Cache 1022 des Prozessors 2 mit einem modifizierten (M) Zustand befindet, der den alleinigen Besitz durch den Prozessor 2 1020 anzeigt. Somit verfehlt der Schreibvorgang durch den Prozessor 1 1010 den lokalen Cache 1012, und es wird eine Nachricht mit besitzbeanspruchendem Lesevorgang (RFO, Read for Ownership) ausgegeben, wie durch die Operation 1 veranschaulicht. In Reaktion auf die RFO gibt der Home-Agent 1002 eine Invalidierungsnachricht aus, um die Zielcachezeile zu invalidieren. Die Invalidierungsnachricht wird durch den lokalen Cache 1022 des Prozessors 2 über einen Snoop in Operation 2 empfangen. Als Nächstes wird unter Bezugnahme auf 10B die „schmutzige“ Zielcachezeile im lokalen Cache 1022 des Prozessors 2 in Operation 3 zurück in den Speicher geschrieben, und die Instanz der Zielcachezeile im lokalen Cache 1022 wird als I (invalidieren) markiert, wie durch 1034 gezeigt. In Reaktion auf die Invalidierung wird eine RFO-Antwortnachricht vom Home-Agenten an den lokalen Cache 1012 des Prozessors 1 ausgegeben. Der Prozessor 1 schreibt dann Daten zur Zielcachezeile im lokalen Cache 1012 in Operation 5. Diese Cachezeile 1036 ist als modifiziert (M) markiert. Somit wird infolge einer Schreiboperation, die vom Prozessor 1 1012 ausgegeben wird, der Kohärenzzustand der Zielcachezeile im lokalen Cache 1022 des Prozessors 2 geändert (z. B. M → I). Der Besitz der Zielcachezeile wird vom Prozessor 2 10 20 des Prozessors 1 1010 übertragen, und die Zielcachezeile wird im lokalen Cache 1012 im Gegensatz zum ursprünglichen Speicherort (d. h. Cache 1022) zwischengespeichert.
  • Im Gegensatz dazu veranschaulichen 11A-11C die zugrunde liegenden Interaktionen, wenn ein MOVPUT-Befehl gemäß Ausführungsformen der vorliegenden Erfindung verwendet wird. Wie 10A veranschaulicht 11A den Prozessor 1 1110 (d. h. Produzenten), der versucht, zur Zielcachezeile (CL, Cache Line) zu schreiben, die sich aktuell im lokalen Cache 1122 des Prozessors 2 befindet. Statt einer typischen Schreiboperation führt der Prozessor 1 1110 jedoch einen MOVPUT-Befehl aus, der in einigen Ausführungsformen eine In-Place-Schreibaktualisierungsoperation in der zugrunde liegenden Systemplattform auslöst.
  • In 11A ist der lokale Cache 1122 des Prozessors 2 der einzige Besitzer der Cachezeile 1132, die sich in einem modifizierten (M) oder exklusiven (E) Zustand befinden kann. Somit führt eine MOVPUT-/In-Place-Schreibaktualisierungsoperation, die vom Prozessor 1 1110 ausgegeben wird, zu einem Miss im lokalen Cache 1112. Eine MOVPUT-/In-Place-Schreibaktualisierungsnachricht wird dann vom lokalen Cache 1112 an den Home-Agenten 1102 ausgegeben, wie durch die Operation 1 veranschaulicht. In einigen Ausführungsformen weist diese Nachricht einen Hinweis auf, der eine Absicht anzeigt, eine In-Place-Aktualisierung durchzuführen oder in die Cachezeile zu schreiben, auf die in der Nachricht abgezielt wird. Sie kann auch die Daten aufweisen, die in die Zielcachezeile geschrieben werden sollen. Als Nächstes wird ein Snoop durch den Home-Agenten 1102 an den lokalen Cache 1122 des Prozessors 2 ausgegeben, wie durch die Operation 2 veranschaulicht. Unter Bezugnahme auf 11B kann der lokale Cache 1122 in Reaktion auf die Verarbeitung der Nachricht gemäß einigen Ausführungsformen eine Rückschreibnachricht an den Home-Agenten 1102 ausgeben, falls die Zielcachezeile schmutzig ist, um die Zielcachezeile in den Speicher zurückzuschreiben. Dies wird durch die Operation 3 gezeigt. Alternativ kann der lokale Cache 1122 einfach eine Nachricht der Bestätigung (ACKN, Acknowledgement) zurückgeben, die seinen Besitz der Zielcachezeile bestätigt, ohne eine Rückschreibung auszugeben. Falls eine Rückschreibung ausgegeben wurde, kann die Instanz der Zielcachezeile im lokalen Cache 1122 als exklusiv (E) markiert werden, wie durch 1134 gezeigt. Falls nur eine Bestätigung ausgegeben wurde, wird am Kohärenzzustand der Zielcachezeile keine Änderung vorgenommen. In Reaktion auf die Nachricht vom lokalen Cache 1132 schreibt der Home-Agent 1102 die schmutzige Cachezeile in den Speicher 1104, falls eine Rückschreibung ausgegeben wurde. Nachdem die Rückschreibung abgeschlossen ist oder falls keine notwendig war, gibt der Home-Agent 1102 eine Antwortnachricht an den Prozessor 1 1110 aus, wie durch die Operation 4 gezeigt. Die Antwort kann anzeigen, dass der lokale Cache 1134 den alleinigen Besitz der Cachezeile hat. Unter Bezugnahme auf 11C sendet der Prozessor 1 1110 wiederum in der Operation 5 die Daten 1136 an den Prozessor 2. Dies kann eine Zeilenaktualisierung sein. Die Daten 1136 werden in der Operation 6 in den lokalen Cache 1122 des Prozessors 2 geschrieben, und die aktualisierte Zielcachezeile 1138 wird als modifiziert (M) markiert. Gemäß einigen Ausführungsformen speichert der lokale Cache 1112 des Prozessors 1 die Zielcachezeile nicht im Cache und erhält nicht ihren Besitz. Stattdessen verbleibt beim Abschluss der MOVPUT-/In-Place-Schreibaktualisierungsoperation der Besitz der Zielcachezeile beim Prozessor 2 1120 und seinem lokalen Cache 1122. In einigen Ausführungsformen, in denen die in die Zielcachezeile zu schreibenden Daten der Operation 1 des Home-Agenten 1102 bereitgestellt wurden, kann der Home-Agent 1102 die Zielcachezeile direkt nach der Operation 3 aktualisieren, wodurch die Operation 4 und 5 übersprungen werden.
  • 12 ist ein Nachrichtenflussdiagramm, das einen Produzenten, der zu einer Zielcachezeile schreibt, die im lokalen Cache eines Konsumenten gehalten wird, und den Konsumenten, der später auf die gleiche Cachezeile zugreift, nach einem herkömmlichen Ansatz veranschaulicht. Das Nachrichtenflussdiagramm 1200 ist auf einer Computerplattform implementiert, die einen Produzenten 1202, einen Home-Agenten 1206 und einen Konsumenten 1210 umfasst. Der Produzent und der Konsument können beliebige Knoten oder Entitäten sein, die an einem kohärenten Speicher beteiligt sind, der auf der Plattform implementiert ist. Der Produzent 1202 weist einen lokalen Cache 1204 des Produzenten auf, und der Konsument 1210 weist einen lokalen Cache 1208 des Konsumenten auf. Der lokale Cache des Produzenten und des Konsumenten kann beispielsweise LI-Cache, L2-Cache/Cache der mittleren Ebene (MLC, Mid Level Cache) und/oder L3-Cache/Cache der letzten Ebene (LLC, Last Level Cache) aufweisen. Jeder der lokalen Caches wird durch entsprechende Cacheagenten (nicht gezeigt) verwaltet. In einigen Fällen ist der Home-Agent ein L3/LLC-Cacheagent.
  • Im Anfangszustand gibt es nur eine Kopie der Zielcachezeile, die im lokalen Cache 1208 des Konsumenten zwischengespeichert ist und einen modifizierten (M) Cachekohärenzzustand aufweist, der anzeigt, dass sie „schmutzig“ ist. Die anfängliche Zielcachezeile wird durch das Bezugszeichen 1214 veranschaulicht. Der Produzent 1202 möchte zu dieser Cachezeile schreiben und gibt daher eine Schreibanforderung 1202 aus. Da jedoch der lokale Cache 1204 des Produzenten keine gültige Kopie der Zielcachezeile enthält, führt die Leseanforderung zu einem Miss. Der lokale Cache 1204 des Produzenten gibt dann eine Anforderung nach Besitz (RFO, Request for Ownership) 1234 aus. In Reaktion auf die RFO bestimmt der Home-Agent 1206 bei 1236 (z. B. durch Prüfen eines Verzeichnisses), welche(r) Cache(s) die angeforderte Cachezeile aufweist/aufweisen. Nach dem Bestimmen, dass der lokale Cache 1208 des Konsumenten eine gültige Instanz der Zielcachezeile 1214 enthält, sendet der Home-Agent 1206 die Nachricht 1238 an den lokalen Cache 1208 des Konsumenten, um die Zielcachezeile zu invalidieren. Da die Zielcachezeile 1214 modifiziert (M) oder schmutzig ist, wird eine Kopie der Cachezeile mit einer Antwort an den Home-Agenten 1206 gesendet, um in den Speicher zurückgeschrieben zu werden, und die Cachezeile im Cache des Konsumenten wird als invalidiert (I) 1216 markiert. Nach Empfang der Antwort 1240 schreibt der Home-Agent 1206 die Cachezeile in den Speicher und sendet eine Nachricht 1242 zurück an den lokalen Cache des Produzenten, wodurch der Abschluss der RFO-Anforderung 1234 angezeigt wird. In einigen Fällen ist eine Kopie der Cachezeile, die als exklusiv (E) 1218 markiert ist, in der Nachricht 1242 eingeschlossen und wird im lokalen Cache 1204 des Produzenten gespeichert. In Reaktion auf die Antwortnachricht 1242 werden Daten über den Schreibvorgang 1244 zur Cachezeile 1218 geschrieben. Der Cachekohärenzzustand der aktualisierten Cachezeile 1220 wird auf modifiziert (M) gesetzt.
  • Danach versucht der Konsument 1210, die Cachezeile zu lesen. Eine Leseanforderung 1246 verfehlt den lokalen Cache 1208 des Konsumenten, da die Kopie der Cachezeile (d. h. 1216) nicht länger gültig ist. Eine Miss-Nachricht wird durch den lokalen Cache 1208 des Konsumenten gesendet und vom Home-Agenten 1206 empfangen, um die Cachezeile zu erhalten. Der Home-Agent 1206 kann von einem Verzeichnis bestimmen, dass der lokale Cache 1204 des Produzenten der exklusive Besitzer der Cachezeile ist. Eine Anforderung für die Cachezeile wird dann über einen Snoop 1252 an den lokalen Cache 1204 des Produzenten gesendet und von diesem empfangen. In Reaktion auf die Anforderung weist der lokale Cache 1204 des Produzenten eine Kopie der Anforderungscachezeile mit einer Antwortnachricht 1254 zurück an den Home-Agenten auf. Die Kopie der Cachezeile 1222 im lokalen Cache des Produzenten wird als gemeinsam genutzt (S, shared) markiert. Nach Empfang der Antwortnachricht 1254 schreibt der Home-Agent 1206 die eingeschlossene Cachezeile zurück in den Speicher und gibt eine Antwort 1256 zusammen mit einer Kopie der angeforderten Cachezeile zurück an den lokalen Cache 1208 des Konsumenten aus. In einigen Ausführungsformen aktualisiert der Home-Agent 1206 auch das Verzeichnis mit geeigneten Informationen. Die Cachezeile wird dann dem Konsumenten 1210 durch den lokalen Cache 1208 des Konsumenten über die Nachricht 1258 bereitgestellt. Eine Kopie dieser Cachezeile wird im lokalen Cache 1208 des Konsumenten gespeichert und als gemeinsam genutzt markiert (d. h. 1224).
  • 13 ist ein Nachrichtenflussdiagramm, das einen Cachezeilenzugriff zwischen einem Produzenten und einem Konsumenten veranschaulicht, unter dem eine Ausführungsform die In-Place-Schreibaktualisierungsoperation verwendet wird. Die In-Place-Schreibaktualisierungsoperation kann durch die Ausführung eines MOVPUT-Befehls ausgelöst werden. Im Anfangszustand gibt es nur eine gültige Instanz der Zielcachezeile und sie wird im lokalen Cache 1308 des Konsumenten zwischengespeichert. Diese Cachezeile kann als modifiziert (M) markiert werden, um anzuzeigen, dass sie „schmutzig“ ist, oder alternativ als exklusiv (E) markiert werden. Die anfängliche Cachezeile wird durch das Bezugszeichen 1314 veranschaulicht. Der Produzent 1302 versucht, Daten zur Zielcachezeile zu schreiben, so dass die Daten von einem Konsumenten konsumiert werden können. Der Produzent 1302 möchte jedoch keinen Besitz der Cachezeile, nachdem diese aktualisiert wurde, oder erfordert diesen nicht. Anstatt eine herkömmliche Schreiboperation zu verwenden, initiiert der Produzent 1302 folglich eine In-Place-Schreibaktualisierungsoperation 1332. In einigen Ausführungsformen wird die In-Place-Schreibaktualisierungsoperation in der zugrunde liegenden Systemplattform ausgelöst, indem der Produzent 1302 einen MOVPUT-Befehl ausführt.
  • Da der lokale Cache 1304 des Produzenten keine gültige Kopie der Zielcachezeile enthält, führt die In-Place-Schreibaktualisierungsoperation zu einem Miss. Der lokale Cache 1304 des Produzenten leitet dann die Anforderung 1334 an den Home-Agenten 1306 weiter. Diese Anforderung kann in einigen Ausführungsformen einen Hinweis aufweisen, der anzeigt, dass der Produzent beabsichtigt, die Zielcachezeile in-place zu aktualisieren oder zu schreiben. Sie kann auch die Daten aufweisen, die der Produzent 1302 versucht, in die Zielcachezeile zu schreiben. In Reaktion auf die Anforderung bestimmt der Home-Agent 1306 bei 1336 (z. B. durch Prüfen eines Verzeichnisses), welcher Cache eine Kopie der Zielcachezeile aufweist. Nach dem Bestimmen, dass der lokale Cache 1308 des Konsumenten die einzige gültige Instanz der Zielcachezeile 1314 enthält, kann der Home-Agent 1306 gemäß einer Ausführungsform eine Nachricht 1337 zurückgeben, um den Zielcachezeilenbesitz durch den lokalen Cache 1308 des Konsumenten anzuzeigen. In anderen Ausführungsformen leitet der Home-Agent 1306 die Anforderung 1338 an den lokalen Cache 1308 des Konsumenten weiter, um den Besitz zu bestätigen. Als Nächstes wird in einigen Ausführungsformen, wie etwa denjenigen, bei denen die Zielcachezeile schmutzig (d. h. modifiziert (M)) ist, eine Kopie der Zielcachezeile mit einer Antwortnachricht 1340 zur Speicherrückschreibung zurückgegeben, und die Zielcachezeile im Cache 1308 wird als exklusiv (E) markiert. In anderen Ausführungsformen kann der lokale Cache 1308 des Konsumenten einfach eine Bestätigung (ACKN, Acknowledgment) 1340 ohne irgendeine weitere Aktion (z. B. kein Rückschreiben und/oder Ändern des Kohärenzzustands der Zielcachezeile) zurück an den Home-Agenten zurückgeben.
  • Nach dem Empfangen der Antwort 1340 kann der Home-Agent 1306 die Cachezeile, falls eine eingeschlossen ist, in den Speicher schreiben. Nach Abschluss des Cachezeilenrückschreibens, oder falls kein Cachezeilenrückschreiben erforderlich oder angefordert war, sendet der Home-Agent 1306 eine Nachricht 1342 zurück an den lokalen Cache des Produzenten, die den Besitz der Zielcachezeile durch den lokalen Cache 1308 des Konsumenten anzeigt. Eine Kopie der Zielcachezeile kann in der Nachricht 1342 eingeschlossen sein oder nicht. Ungeachtet dessen, ob eine Kopie der Cachezeile eingeschlossen war, wird die Zielcachezeile nicht im lokalen Cache 1304 des Produzenten gespeichert.
  • Nach dem Empfangen der Nachricht 1342 oder alternativ nach dem Empfangen der Nachricht 1337 sendet der Produzent 1318 als Nächstes Daten, die in die Zielcachezeile geschrieben werden sollen, über die Nachricht 1344 an den lokalen Cache 1308 des Konsumenten. In einer Ausführungsform wird die Nachricht 1344 durch den Home-Agenten 1306 an den lokalen Cache 1308 des Konsumenten weitergeleitet. Gemäß der Ausführungsform wird die Zielcachezeile im lokalen Cache 1308 des Konsumenten mit Daten 1318 aktualisiert und als modifiziert (M) markiert (d. h. 1320). In gewisser Weise wird die Zielcachezeile direkt vom Produzenten 1302 unter Verwendung des Cachecontrollers des lokalen Caches 1308 des Konsumenten aktualisiert. In einigen Ausführungsformen werden die Daten 1318 dem Konsumenten 1310 jedoch zuerst über einen Puffer (nicht gezeigt) bereitgestellt und später durch den Cachecontroller in den Cache 1308 geschrieben. In noch einer anderen Ausführungsform, in der der Home-Agent 1306 die Daten, die in die Zielcachezeile geschrieben werden sollen, über die Schreibaktualisierungs-/MOVPUT-Anforderung 1334 empfangen hat, kann der Home-Agent die Daten nach der Bestimmung oder Bestätigung, dass der lokale Cache 1308 der alleinige Besitzer der Zielcachezeile ist, einfach an den lokalen Cache 1308 des Konsumenten weiterleiten.
  • Es wird erkannt, dass, da der lokale Cache 1308 des Konsumenten anfänglich den alleinigen Besitz der Zielcachezeile gehabt und auch während der oben beschriebenen Schritte beibehalten hat (d. h. im modifizierten (M) oder exklusiven (E) Zustand), muss er nicht den Besitz der Zielcachezeile suchen, um sie mit Daten 1318 zu aktualisieren. Ferner wird der lokale Cache 1308 des Konsumenten nach der Aktualisierung weiterhin den alleinigen Besitz der Zielcachezeile haben. Somit wird ein nachfolgender Lesevorgang 1346 für die Zielcachezeile durch den Konsumenten 1310 nicht zu einem Miss des lokalen Caches 1308 führen. Stattdessen wird die Zielcachezeile einfach durch den lokalen Cache 1308 über die Antwort 1348 an den Konsumenten 1310 bereitgestellt.
  • Im Vergleich zu dem in 12 veranschaulichten herkömmlichen Ansatz eliminiert der neue Ansatz in 13 den Ping-Pong-Effekt zwischen Produzenten und Konsumenten während der Auseinandersetzung um den Cachezeilenbesitz. Dies spart nicht nur Verarbeitungszeit, sondern auch die assoziierten Ressourcen und Messaging-Overheads.
  • 14 veranschaulicht ein Blockschaltbild für eine Ausführungsform eines Systems 1400 zum Verwenden eines Befehls (z. B. MOVPUT-Befehl) zum Bereitstellen von In-Place-Schreibaktualisierungsfunktionalität. Das System 1400 weist einen Home-Agenten 1480, einen Systemspeicher 1490 und einen Prozessor 1402 auf. Der Prozessor 1402 umfasst einen ersten logischen Prozessor (z. B. Hardware-Thread oder Prozessorkern) 1410 und einen zweiten logischen Prozessor 1420. Es wird erkannt, dass, obgleich der Prozessor 1402 der Einfachheit halber so veranschaulicht ist, dass er zwei logische Prozessoren umfasst, die jeweils einen einzelnen Hardware-Thread repräsentieren, die Erfindung nicht darauf beschränkt ist. Beispielsweise ist es typisch, dass Prozessoren wie beispielsweise der Prozessor 1402 oder andere hierin veranschaulichte Prozessoren mehrere logische Prozessoren aufweisen, die einige physikalische Ressourcen und/oder Schaltungen gemeinsam nutzen können oder nicht. Jeder logische Prozessor kann eine Mehrzahl von Hardware-Threads aufweisen, die in der Lage sind, Software-Threads simultan oder gleichzeitig auszuführen. Der logische Prozessor 1410 weist eine Decodierstufe oder -schaltungen 1412 und eine oder mehrere Ausführungseinheiten oder - schaltungen, z. B. Ausführungseinheit 1414, auf. Der logische Prozessor 1420 weist eine Decodierstufe oder -schaltungen 1422 und eine oder mehrere Ausführungseinheiten oder - schaltungen, z. B. Ausführungseinheit 1424, auf. Die logischen Prozessoren 1410 und 1420 weisen jeweils einen oder mehrere Caches in einer Cachehierarchie auf, um Cache-kohärente Daten in Cachezeilen zu speichern. Beispielsweise weist der logische Prozessor 1410 die Caches 1430 und 1450 auf, und der logische Prozessor 1420 weist die Caches 1440 und 1460 auf. Die Caches 1430 und 1440 sind Caches 1406 der Ebene 1 (L1) und weisen jeweils die Controller 1432 und 1442 auf. Die Caches 1450 und 1460 sind Caches 1408 der Ebene 2 (L2) und weisen jeweils die Controller 1452 und 1462 auf. Das System 1400 weist ferner in seiner Cachespeicherhierarchie einen Cache 1470 der letzten Ebene auf, der den Controller 1472 einschließt. Der Cache 1470 der letzten Ebene kann die L1-Caches 1406 und/oder die L2-Caches 1408 einschließen oder ausschließen. Es wird erkannt, dass, obgleich der Prozessor 1402 der Einfachheit halber so veranschaulicht wird, dass er nur L1-Caches 1406 aufweist, andere Ebenen der Cachespeicherhierarchie, wie beispielsweise L2-Caches 1408, auch im Prozessor 1402 eingeschlossen sein könnten.
  • Der logische Prozessor 1420 speichert Cache-kohärente Daten in einer Cachezeile 1445 für eine gemeinsam genutzte Speicheradresse, auf die die logischen Prozessoren 1410 und 1420 zugreifen können. Die Cachezeile 1445 weist einen Cachekohärenzzustand auf oder ist mit diesem assoziiert, der in einigen Ausführungsformen vom Home-Agenten 1480 und/oder von den verschiedenen Controllern (z. B. 1442) verwendet wird, um Cachekohärenz sicherzustellen oder durchzusetzen. In einigen Ausführungsformen ist der Cachekohärenzzustand der Cachezeile 1445 auf modifiziert (M) gesetzt, wodurch angezeigt wird, dass der Cache 1440 den alleinigen Besitz der Cachezeile 1445 hat. Damit hat auch der logische Produzent 1420, der den Cache 1440 einschließt, den alleinigen Besitz der Cachezeile 1445. Alternativ können Cache-kohärente Daten in einer anderen Cachezeile (z. B. 1465) eines anderen Speicherorts (z. B. 1460) gespeichert werden, wobei ein assoziierter Kohärenzzustand anzeigt, dass der Speicherort den alleinigen Besitz der Cachezeile hat.
  • Die Decodierstufe 1412 des logischen Prozessors 1410 dient zur Decodierung eines Befehls 1491 (z. B. MOVPUT) zur Ausführung. Der Befehl 1491 gibt einen Quelldatenoperanden und einen Zieloperanden an. Der Quelldatenoperand kann ein Register (z. B. 1415) des logischen Prozessors 1410 oder eine Quellspeicheradresse (z. B. 1435, 1455, 1475 oder 1495) identifizieren. Der Zieloperand kann eine Zielspeicheradresse (z. B. 1445) anzeigen, die sich von der Quellspeicheradresse unterscheidet. Darüber hinaus können der Quell- und/oder der Zieloperand eine Datengröße angeben oder anzeigen, wie beispielsweise 4, 8, 16, 32 oder 64 Bytes usw. Die Größe der Operanden kann variieren.
  • Der logische Prozessor 1410 weist eine oder mehrere Ausführungseinheiten oder - schaltungen auf, z. B. Ausführungseinheit 1414, um den decodierten Befehl 1491 auszuführen, um in Reaktion darauf Daten vom Quelldatenoperanden (z. B. 1415, 1435, 1455, 1475 oder 1495) zum Speicherort zu veranlassen, der durch den Zieloperanden angegeben ist (z. B. 1445), ohne den Cachekohärenzzustand des Zieloperanden (z. B. (M)odifiziert) und/oder den Speicherort in der Cachehierarchie (z. B. Cache 1440) zu ändern. Das Kopieren der Daten wird gemäß einigen Ausführungsformen unter Verwendung des Home-Agenten 1480 und/oder der verschiedenen Cachecontroller (z. B. 1430) durchgeführt. Ausführungsformen des Befehls 1491 stellen eine In-Place-Schreibaktualisierungsfunktionalität bereit, die es dem logischen Prozessor 1410 erlaubt, Daten zur Cachezeile 1445 zu schreiben, während der alleinige Besitz von Cache-kohärenten Daten in der Cachezeile 1445 im Speicherort beibehalten wird, der durch den Zieloperanden identifiziert wird (z. B. Cache 1440), um zu vermeiden, dass ein Cache-Miss bei einem nachfolgenden Lesevorgang zur Cachezeile 1445 im Cache 1440 durch den logischen Prozessor 1420 auftritt.
  • In einigen Ausführungsformen kann der Befehl 1491 (z. B. MOVPUT) in eine oder mehrere Operationen (z. B. In-Place-Schreibaktualisierung 1493) decodiert werden, die auch als Mikrooperationen, Mikro-Ops oder uOps bekannt sind. In einigen Ausführungsformen können Daten in Reaktion auf die In-Place-Schreibaktualisierung 1493 vom Quelldatenoperanden (z. B. 1435 oder 1455 oder einem anderen Quelldatenoperanden) in einen Datenpuffer (z. B. 1415) unter Verwendung einer Cachesteuerlogik (z. B. Steuerlogik 1432 oder 1452) geladen werden. Eine Nachricht 1495 mit Daten kann dann von der Messaging-Logik 1416 an die Messaging-Logik 1426 gesendet werden, und die Daten können im Zieloperanden 1445 gespeichert werden.
  • 15 veranschaulicht ein Flussdiagramm für eine Ausführungsform eines Prozesses 1500 zum Bereitstellen von In-Place-Schreibaktualisierungsfunktionalität. Der Prozess 1500 und andere hierin offenbarte Prozesse werden mittels Verarbeitungsblöcken durchgeführt, die dedizierte Hardware- oder Software- oder Firmware-Operationscodes umfassen können, die durch allgemeine Maschinen oder durch Spezialmaschinen oder durch eine Kombination von beiden ausführbar sind.
  • In Block 1502 werden Daten für eine erste Speicheradresse in einer Cachezeile eines Speichers einer ersten Verarbeitungseinheit gespeichert. Die Cachezeile kann einen Kohärenzzustand aufweisen oder damit assoziiert sein, der anzeigt, dass der Speicher den alleinigen Besitz der Cachezeile hat. Der Kohärenzzustand kann ein modifizierter (M) Zustand sein. Der Speicher kann ein Cache der Ebene 1 (L1), Cache der Ebene 2 (L2)/Cache der mittleren Ebene (MLC, Mid Level Cache), Cache der Ebene 3 (L3)/Cache der letzten Ebene (LLC, Last Level Cache) oder Systemspeicher sein.
  • In Block 1504 decodiert eine zweite Verarbeitungseinheit einen Befehl zur Ausführung, wobei der Befehl einen Quelldatenoperanden und einen Zieloperanden umfasst, wobei der Zieloperand die erste Speicheradresse angibt. Der Befehl kann ein MOVPUT-Befehl sein, der, wenn er decodiert und ausgeführt wird, eine In-Place-Schreibaktualisierungsoperation auslöst. Der Quelldatenoperand kann ein Register der zweiten Verarbeitungseinheit angeben. Alternativ kann der Quelldatenoperand eine zweite Speicheradresse angeben, die sich von der ersten Speicheradresse unterscheidet. In einer Ausführungsform können die erste oder zweite Speicheradresse als ein Offset zu einer anderen Speicheradresse ausgedrückt werden. Darüber hinaus können der Quell- und/oder der Zieloperand eine Datengröße angeben oder anzeigen, wie beispielsweise 4, 8, 16, 32 oder 64 Bytes usw. Die Größe der Operanden kann variieren.
  • In Block 1506 bewirkt die zweite Verarbeitungseinheit in Reaktion auf das Ausführen des decodierten Befehls, dass Daten vom Quelldatenoperanden zur Cachezeile des Speichers der ersten Verarbeitungseinheit, wie durch die erste Speicheradresse identifiziert, kopiert werden. Infolge des Kopiervorgangs soll die Cachezeile im Speicher der ersten Verarbeitungseinheit verbleiben, und der Speicher soll den alleinigen Besitz der Cachezeile behalten.
  • In Block 1508 wird auf die Cachezeile im Speicher der ersten Verarbeitungseinheit zugegriffen (z. B. Schreibvorgang zur Cachezeile), ohne dass der Speicher den Besitz der Cachezeile suchen muss.
  • 16 veranschaulicht eine Ausführungsform eines Systemdetails. Gemäß der Ausführungsform können sich ein oder mehrere Knoten in einem Chip-Multiprozessor (CMP), wie beispielsweise Prozessor 1660, befinden. In einigen Ausführungsformen bildet jeder Knoten einen Prozessorkern (Kern), logischen Prozessor oder Hardware-Thread oder weist diesen auf. Die Details eines einzelnen Knotens (d. h. Knoten 0) sind in 16 der Einfachheit halber veranschaulicht. Es versteht sich jedoch, dass jeder Knoten den gleichen Satz von Logik, Komponenten, Schaltungen und/oder Konfiguration wie Knoten 0 aufweisen kann. Beispielsweise kann jeder Knoten einen Satz von Registern 1602, einen Cache der Ebene 1 (L1) 1611 und einen Cache der Ebene 2 (L2) oder Cache der mittleren Ebene (MLC, Mid Level Cache) 1612 aufweisen. In einigen Ausführungsformen weist der Prozessor 1660, wie in 16 gezeigt, ferner einen Cache der Ebene 3 (L3) oder LLC 1613 auf, der kommunikativ mit allen Knoten gekoppelt ist und von diesen gemeinsam genutzt wird. In anderen Ausführungsformen (nicht gezeigt) wird der L3/LLC 1613 unter den Knoten physikalisch verteilt und logisch gemeinsam genutzt. Jeder der L1-, L2/MLC- und L3/LLC-Caches wird gemäß einer Ausführungsform von einem jeweiligen Cacheagenten oder -controller (1614-1616) verwaltet und kann zum Zwischenspeichern von Befehlen und Daten gemäß einer angegebenen Cachemanagementrichtlinie verwendet werden. Ein oder mehrere Cacheagenten oder -controller können verwendet werden, um die Funktionen eines Home-Agenten durchzuführen, der Verzeichnisse verwenden kann, um die Cachekohärenz sicherzustellen oder durchzusetzen. In wenigstens einigen Ausführungsformen weist die Cachemanagementrichtlinie ferner eine Cacheentfernungs-/Ersetzungsrichtlinie auf. Die Befehle und Daten, die innerhalb der verschiedenen Prozessorcaches gespeichert sind, werden in der Granularität von Cachezeilen verwaltet, die eine feste Größe (z. B. 64, 128, 512 Bytes in der Länge) aufweisen können. Jeder Knoten der beispielhaften Ausführungsformen weist ferner eine Befehlsabrufeinheit 1610 zum Abrufen von Befehlen aus dem Hauptspeicher 1600 über den Speichercontroller 1622 und/oder dem gemeinsam genutzten LLC 1613 über den L3/LLC-Agenten 1616; eine Decodiereinheit 1630 zum Decodieren der Befehle (z. B. Decodieren von Programmbefehlen in Mikrooperationen oder „uOps“); eine Ausführungseinheit 1640 zum Ausführen der decodierten Befehle; und eine Rückschreibeinheit 1650 zum Außerkraftsetzen der Befehle und Rückschreiben der Ergebnisse auf.
  • Es ist wichtig zu beachten, dass die Semantik sowohl der MOVGET- als auch der MOVPUT-Befehle den Datenfluss zwischen einem Produzenten und einem Konsumenten ermöglichen soll, während die Störung von Daten vermieden wird, die aktiv vom Produzenten, Konsumenten und/oder anderen Kernen verwendet werden. Vor diesem Hintergrund können sowohl die MOVGET- als auch die MOVPUT-Befehle sowie die assoziierten Operationen oder Transaktionen (d. h. Lese-Snapshot und In-Place-Schreibaktualisierung) in der gesamten Speicherhierarchie eine speziell behandelt werden. Beispielsweise behandeln Hardware-Vorabrufe, die räumliche Lokalität ausnutzen, indem nahegelegene Daten in den Cache eines Kerns abgerufen werden, Lese-Snapshot- und In-Place-Schreibaktualisierungsoperationen nicht auf die gleiche Weise wie herkömmliche Lade- und Speichervorgänge. Im Fall von herkömmlichen Lade- und Speichervorgängen ist das Vorabrufen sinnvoll, da das Ziel darin besteht, eine Kopie nicht nur der angeforderten Daten, sondern auch anderer nahegelegener Daten zu erfassen. In Situationen, in denen die nahegelegenen Daten nicht benötigt oder angefordert werden, kann ihre Erfassung die Leistung jedoch negativ beeinflussen. Gemäß einer Ausführungsform sind somit MOVGET-/MOVPUT-Befehle und die assoziierten Operationen von Hardware-Vorabrufen zu ignorieren, um zu vermeiden, dass nahegelegene Daten gestört werden, die sich auf anderen Kernen befinden. Temporäre Puffer können auch für MOVGET-/MOVPUT-Befehle und deren assoziierte Operationen verwendet werden, um ein versehentliches oder falsches Füllen von Daten in Caches zu verhindern, was zu Verschmutzungen und falschen Ergebnissen führen kann.
  • Ein Beispiel der vorliegenden Erfindung ist ein Verfahren, das Folgendes aufweist: Speichern von Daten für eine erste Speicheradresse in einer Cachezeile eines Speichers einer ersten Verarbeitungseinheit, wobei die Cachezeile einen Kohärenzzustand aufweist, der anzeigt, dass der Speicher den alleinigen Besitz der Cachezeile hat; Decodieren eines Befehls zur Ausführung durch eine zweite Verarbeitungseinheit, wobei der Befehl einen Quelldatenoperanden, der die erste Speicheradresse angibt, und einen Zieloperanden, der einen Speicherort der zweiten Verarbeitungseinheit angibt, aufweist; Ausführen des decodierten Befehls durch Kopieren von Daten von der Cachezeile des Speichers der ersten Verarbeitungseinheit, wie durch die erste Speicheradresse identifiziert, zum Speicherort der zweiten Verarbeitungseinheit,so dass in Reaktion auf den Kopiervorgang die Cachezeile im Speicher verbleiben soll und ihr Kohärenzzustand unverändert bleiben soll; und Zugreifen auf die Cachezeile im Speicher durch die erste Verarbeitungseinheit, ohne dass der Speicher den Besitz der Cachezeile suchen muss. Der Speicher kann ein Cache der Ebene 1 (L1), Cache der Ebene 2 (L2)/Cache der mittleren Ebene (MLC, Mid Level Cache), Cache der Ebene 3 (L3)/Cache der letzten Ebene (LLC, Last Level Cache) oder Systemspeicher sein. Der Speicherort kann ein Register sein. Alternativ kann der Speicherort eine zweite Speicheradresse sein, die sich von der ersten Speicheradresse unterscheidet. Der Kohärenzzustand kann ein modifizierter (M) oder exklusiver (E) Zustand sein. Der Befehl kann ein MOVGET-Befehl sein, um eine Lese-Snapshot-Funktionalität bereitzustellen, und seine Quell- und/oder Zieloperanden können eine Datengröße angeben, wie beispielsweise 4, 8, 16, 32 oder 64 Bytes.
  • Ein anderes Beispiel der vorliegenden Erfindung ist ein Verfahren, das Folgendes aufweist: Speichern von Daten für eine erste Speicheradresse in einer Cachezeile eines Speichers einer ersten Verarbeitungseinheit, wobei die Cachezeile einen Kohärenzzustand aufweist, der anzeigt, dass der Speicher den alleinigen Besitz der Cachezeile hat; Decodieren eines Befehls zur Ausführung durch eine zweite Verarbeitungseinheit, wobei der Befehl einen Quelldatenoperanden und einen Zieloperanden aufweist, wobei der Zieloperand die erste Speicheradresse angibt; Ausführen des decodierten Befehls durch Kopieren von Daten vom Quelldatenoperanden zur Cachezeile des Speichers, wie durch die erste Speicheradresse identifiziert, so dass der Speicher in Reaktion auf den Kopiervorgang den alleinigen Besitz der Cachezeile behalten soll; und Zugreifen auf die Cachezeile im Speicher durch die erste Verarbeitungseinheit, ohne dass der Speicher den Besitz der Cachezeile suchen muss. Der Speicher kann ein Cache der Ebene 1 (L1), Cache der Ebene 2 (L2)/Cache der mittleren Ebene (MLC, Mid Level Cache), Cache der Ebene 3 (L3)/Cache der letzten Ebene (LLC, Last Level Cache) oder Systemspeicher sein. Der Quelldatenoperand kann eine zweite Speicheradresse angeben, die sich von der ersten Speicheradresse unterscheidet. Alternativ kann der Quelldatenoperand ein Register angeben. Der Kohärenzzustand kann ein modifizierter (M) Zustand sein. Der Befehl kann ein MOVPUT-Befehl sein, um eine In-Place-Schreibaktualisierungsfunktionalität bereitzustellen, und seine Quell- und/oder Zieloperanden können eine Datengröße angeben, wie beispielsweise 4, 8, 16, 32 oder 64 Bytes.
  • Ein anderes Beispiel der vorliegenden Erfindung ist ein System, das Folgendes aufweist: eine erste Verarbeitungseinheit mit einem Speicher, um Daten für eine erste Speicheradresse in einer Cachezeile zu speichern, wobei die Cachezeile einen Kohärenzzustand aufweist, der anzeigt, dass der Speicher den alleinigen Besitz der Cachezeile hat; Decodierschaltungen, um einen Befehl zu decodieren, wobei der Befehl einen Quelldatenoperanden, der die erste Speicheradresse angibt, und einen Zieloperanden, der einen Speicherort einer zweiten Verarbeitungseinheit angibt, aufweist; Ausführungsschaltungen, um den decodierten Befehl auszuführen und Daten von der Cachezeile zum Speicherort der zweiten Verarbeitungseinheit zu kopieren, so dass die Cachezeile in Reaktion auf den Kopiervorgang im Speicher der ersten Verarbeitungseinheit verbleiben soll und der Kohärenzzustand unverändert bleiben soll; und die erste Verarbeitungseinheit, um auf die Cachezeile im Speicher zuzugreifen, ohne dass der Speicher den Besitz der Cachezeile suchen muss. Der Speicher kann ein Cache der Ebene 1 (L1), Cache der Ebene 2 (L2)/Cache der mittleren Ebene (MLC, Mid Level Cache), Cache der Ebene 3 (L3)/Cache der letzten Ebene (LLC, Last Level Cache) oder Systemspeicher sein. Der Speicherort kann ein Register sein. Alternativ kann der Speicherort eine zweite Speicheradresse sein, die sich von der ersten Speicheradresse unterscheidet. Der Kohärenzzustand kann ein modifizierter (M) oder exklusiver (E) Zustand sein. Der Befehl kann ein MOVGET-Befehl sein, um eine Lese-Snapshot-Funktionalität bereitzustellen, und seine Quell- und/oder Zieloperanden können eine Datengröße angeben, wie beispielsweise 4, 8, 16, 32 oder 64 Bytes.
  • Ein anderes Beispiel der vorliegenden Erfindung ist ein System, das Folgendes aufweist: eine erste Verarbeitungseinheit mit einem Speicher, um Daten für eine erste Speicheradresse in einer Cachezeile zu speichern, wobei die Cachezeile einen Kohärenzzustand aufweist, der anzeigt, dass der Speicher den alleinigen Besitz der Cachezeile hat; Decodierschaltungen, um einen Befehl zu decodieren, wobei der Befehl einen Quelldatenoperanden und einen Zieloperanden aufweist, wobei der Zieloperand die erste Speicheradresse angibt; Ausführungsschaltungen, um den decodierten Befehl auszuführen und Daten vom Quelldatenoperanden zur Cachezeile des Speichers, wie durch die erste Speicheradresse identifiziert, zu kopieren, so dass der Speicher in Reaktion auf den Kopiervorgang den alleinigen Besitz der Cachezeile behalten soll; und die erste Verarbeitungseinheit, um auf die Cachezeile im Speicher zuzugreifen, ohne dass der Speicher den Besitz der Cachezeile suchen muss. Der Speicher kann ein Cache der Ebene 1 (L1), Cache der Ebene 2 (L2)/Cache der mittleren Ebene (MLC, Mid Level Cache), Cache der Ebene 3 (L3)/Cache der letzten Ebene (LLC, Last Level Cache) oder Systemspeicher sein. Der Quelldatenoperand kann eine zweite Speicheradresse angeben, die sich von der ersten Speicheradresse unterscheidet. Alternativ kann der Quelldatenoperand ein Register angeben. Der Kohärenzzustand kann ein modifizierter (M) Zustand sein. Der Befehl kann ein MOVPUT-Befehl sein, um eine In-Place-Schreibaktualisierungsfunktionalität bereitzustellen, und seine Quell- und/oder Zieloperanden können eine Datengröße angeben, wie beispielsweise 4, 8, 16, 32 oder 64 Bytes.
  • Ein anderes Beispiel der vorliegenden Erfindung ist ein nicht-transitorisches maschinenlesbares Medium mit einem darauf gespeicherten Programmcode, der, wenn er von einer Maschine ausgeführt wird, die Maschine veranlasst, folgende Operationen durchzuführen: Speichern von Daten für eine erste Speicheradresse in einer Cachezeile eines Speichers einer ersten Verarbeitungseinheit, wobei die Cachezeile einen Kohärenzzustand aufweist, der anzeigt, dass der Speicher den alleinigen Besitz der Cachezeile hat; Decodieren eines Befehls zur Ausführung durch eine zweite Verarbeitungseinheit, wobei der Befehl einen Quelldatenoperanden, der die erste Speicheradresse angibt, und einen Zieloperanden, der einen Speicherort der zweiten Verarbeitungseinheit angibt, aufweist; in Reaktion auf das Ausführen des decodierten Befehls Kopieren von Daten von der Cachezeile des Speichers der ersten Verarbeitungseinheit, wie durch die erste Speicheradresse identifiziert, zum Speicherort der zweiten Verarbeitungseinheit, so dass die Cachezeile in Reaktion auf den Kopiervorgang im Speicher verbleiben soll und der Kohärenzzustand unverändert bleiben soll; und Zugreifen auf die Cachezeile im Speicher durch die erste Verarbeitungseinheit, ohne dass der Speicher den Besitz der Cachezeile suchen muss. Der Speicher kann ein Cache der Ebene 1 (L1), Cache der Ebene 2 (L2)/Cache der mittleren Ebene (MLC, Mid Level Cache), Cache der Ebene 3 (L3)/Cache der letzten Ebene (LLC, Last Level Cache) oder Systemspeicher sein. Der Speicherort kann ein Register sein. Alternativ kann der Speicherort eine zweite Speicheradresse sein, die sich von der ersten Speicheradresse unterscheidet. Der Kohärenzzustand kann ein modifizierter (M) oder exklusiver (E) Zustand sein. Der Befehl kann ein MOVGET-Befehl sein, um eine Lese-Snapshot-Funktionalität bereitzustellen, und seine Quell- und/oder Zieloperanden können eine Datengröße angeben, wie beispielsweise 4, 8, 16, 32 oder 64 Bytes.
  • Ein noch anderes Beispiel der vorliegenden Erfindung ist ein nicht-transitorisches maschinenlesbares Medium mit einem darauf gespeicherten Programmcode, der, wenn er von einer Maschine ausgeführt wird, die Maschine veranlasst, folgende Operationen durchzuführen: Speichern von Daten für eine erste Speicheradresse in einer Cachezeile eines Speichers einer ersten Verarbeitungseinheit, wobei die Cachezeile einen Kohärenzzustand aufweist, der anzeigt, dass der Speicher den alleinigen Besitz der Cachezeile hat; Decodieren eines Befehls zur Ausführung durch eine zweite Verarbeitungseinheit, wobei der Befehl einen Quelldatenoperanden und einen Zieloperanden aufweist, wobei der Zieloperand die erste Speicheradresse angibt; Ausführen des decodierten Befehls, um Daten vom Quelldatenoperanden zur Cachezeile des Speichers, wie durch die erste Speicheradresse identifiziert, zu kopieren, so dass der Speicher in Reaktion auf den Kopiervorgang den alleinigen Besitz der Cachezeile behalten soll; und Zugreifen auf die Cachezeile im Speicher durch die erste Verarbeitungseinheit, ohne dass der Speicher den Besitz der Cachezeile suchen muss. Der Speicher kann ein Cache der Ebene 1 (L1), Cache der Ebene 2 (L2)/Cache der mittleren Ebene (MLC, Mid Level Cache), Cache der Ebene 3 (L3)/Cache der letzten Ebene (LLC, Last Level Cache) oder Systemspeicher sein. Der Quelldatenoperand kann eine zweite Speicheradresse angeben, die sich von der ersten Speicheradresse unterscheidet. Alternativ kann der Quelldatenoperand ein Register angeben. Der Kohärenzzustand kann ein modifizierter (M) Zustand sein. Der Befehl kann ein MOVPUT-Befehl sein, um eine In-Place-Schreibaktualisierungsfunktionalität bereitzustellen, und seine Quell- und/oder Zieloperanden können eine Datengröße angeben, wie beispielsweise 4, 8, 16, 32 oder 64 Bytes.
  • 17A ist ein Blockschaltbild, das sowohl eine beispielhafte In-Order-Pipeline als auch eine beispielhafte Out-of-Order-Ausgabe-/Ausführungs-Pipeline mit Registerumbenennung gemäß Ausführungsformen der Erfindung veranschaulicht. 17B ist ein Blockschaltbild, das sowohl eine beispielhafte Ausführungsform eines In-Order-Architekturkerns als auch eines beispielhaften Out-of-Order-Ausgabe-/Ausführungs-Architekturkerns mit Registerumbenennung, der in einen Prozessor eingeschlossen werden soll, gemäß Ausführungsformen der Erfindung veranschaulicht. Die Kästchen mit durchgezogenen Linien in 17A-B veranschaulichen die In-Order-Pipeline und den In-Order-Kern, während die optionale Hinzufügung der Kästchen mit gestrichelten Linien die/den Out-of-Order-Ausgabe-/Ausführungs-Pipeline und -Kern mit Registerumbenennung veranschaulichen. Da der In-Order-Aspekt eine Teilmenge des Out-of-Order-Aspekts ist, wird der Out-of-Order-Aspekt beschrieben.
  • In 17A weist eine Prozessor-Pipeline 1700 eine Abrufstufe 1702, eine Längendecodierstufe 1704, eine Decodierstufe 1706, eine Zuordnungsstufe 1708, eine Umbenennungsstufe 1710, eine Zeitplanungsstufe (auch bekannt als eine Sende- oder Ausgabestufe) 1712, eine Register-Lese-/Speicher-Lese-Stufe 1714, eine Ausführungsstufe 1716, eine Rückschreib-/Speicher-Schreib-Stufe 1718, eine Ausnahmehandhabungsstufe 1722 und eine Commit-Stufe 1724 auf.
  • 17B zeigt den Prozessorkern 1790, der eine Frontend-Hardware 1730 gekoppelt mit einer Ausführungs-Engine-Hardware 1750 aufweist, und beide sind mit einer Speicher-Hardware 1770 gekoppelt. Der Kern 1790 kann ein Reduced Instruction Set Computing(RISC)-Kern, ein Complex Instruction Set Computing(CISC)-Kern, ein Very Long Instruction Word(VLIW)-Kern oder ein Hybrid- oder alternativer Kerntyp sein. Als noch eine weitere Option kann der Kern 1790 ein Spezialkern sein, wie beispielsweise ein Netz- oder Kommunikationskern, eine Komprimierungs-Engine, ein Coprozessorkern, der Kern einer Allzweckberechnungs-Grafikverarbeitungseinheit (GPGPU, General Purpose Computing Graphics Processing Unit), ein Grafikkern oder dergleichen.
  • Die Frontend-Hardware 1730 umfasst eine Zweigvorhersage-Hardware 1732, die mit einer Befehlscache-Hardware 1734 gekoppelt ist, die mit einem Befehlsübersetzungs-LookAside-Puffer (TLB, Translation Lookaside Buffer) 1736 gekoppelt ist, der mit einer Befehlsabruf-Hardware 1738 gekoppelt ist, die mit einer Decodier-Hardware 1740 gekoppelt ist. Die Decodier-Hardware 1740 (oder Decoder) kann Befehle decodieren und als Ausgabe eine(n) oder mehrere Mikrooperationen, Mikrocode-Einsprungspunkte, Mikrobefehle, andere Befehle oder andere Steuersignale erzeugen, die aus den ursprünglichen Befehlen decodiert werden oder diese anderweitig reflektieren oder von diesen abgeleitet sind. Die Decodier-Hardware 1740 kann unter Verwendung verschiedener unterschiedlicher Mechanismen implementiert werden. Beispiele geeigneter Mechanismen umfassen, sind jedoch nicht darauf beschränkt, Lookup-Tabellen, Hardwareimplementierungen, programmierbare logische Arrays (PLAs), Mikrocode-Nur-Lese-Speicher (ROMs, Read-Only Memories) usw. In einer Ausführungsform weist der Kern 1790 einen Mikrocode-ROM oder ein anderes Medium auf, das Mikrocode für bestimmte Makrobefehle speichert (z. B. in der Decodier-Hardware 1740 oder anderweitig innerhalb der Frontend-Hardware 1730). Die Decodier-Hardware 1740 ist mit einer Umbenennungs-/Zuordnungs-Hardware 1752 in der Ausführungs-Engine-Hardware 1750 gekoppelt.
  • Die Ausführungs-Engine-Hardware 1750 weist die Umbenennungs-/Zuordnungs-Hardware 1752 gekoppelt mit einer Außerkraftsetzungs-Hardware 1754 und einem Satz aus einer oder mehrerer Scheduler-Hardwares 1756 auf. Die Scheduler-Hardware 1756 repräsentiert eine beliebige Anzahl unterschiedlicher Scheduler, einschließlich Reservierungsstationen, zentrales Befehlsfenster usw. Die Scheduler-Hardware 1756 ist mit der physikalischen Registerdatei-Hardware 1758 gekoppelt. Jede der physikalischen Registerdatei-Hardwares 1758 repräsentiert eine oder mehrere physikalische Registerdateien, von denen unterschiedliche einen oder mehrere unterschiedliche Datentypen speichern, wie beispielsweise skalare Ganzzahl, skalares Gleitkomma, gepackte Ganzzahl, gepacktes Gleitkomma, Vektorganzzahl, Vektorgleitkomma, Status (z. B. ein Befehlsverweis, bei dem es sich um die Adresse des nächsten auszuführenden Befehls handelt) usw. In einer Ausführungsform umfasst die physikalische Registerdatei-Hardware 1758 eine Vektorregister-Hardware, eine Schreibmaskenregister-Hardware und eine skalare Register-Hardware. Diese Register-Hardware kann Architekturvektorregister, Vektormaskenregister und Allzweckregister bereitstellen. Die physikalische Registerdatei-Hardware 1758 wird durch die Außerkraftsetzungs-Hardware 1754 überlappt, um verschiedene Möglichkeiten zu veranschaulichen, mit denen Registerumbenennung und Out-of-Order-Ausführung implementiert werden können (z. B. unter Verwendung eines/von Umordnungspuffers/Umordnungspuffern und einer/von Außerkraftsetzungsdatei(en); unter Verwendung einer/von Zukunftsdatei(en), eines/von Verlaufspuffers/Verlaufspuffern und einer/von Außerkraftsetzungsdatei(en); unter Verwendung einer/von Registerkarte(n) und eines Pools von Registern usw.). Die Außerkraftsetzungs-Hardware 1754 und die physikalische Registerdatei-Hardware 1758 sind mit dem/den Ausführungscluster(n) 1760 gekoppelt. Das/die Ausführungscluster 1760 weist/weisen einen Satz von einer oder mehrerer Ausführungs-Hardwares 1762 und einen Satz von einer oder mehrerer Speicherzugriffs-Hardwares 1764 auf. Die Ausführungs-Hardware 1762 kann verschiedene Operationen (z. B. Verschiebungen, Addition, Subtraktion, Multiplikation) und an verschiedenen Datentypen (z. B. skalares Gleitkomma, gepackte Ganzzahl, gepacktes Gleitkomma, Vektorganzzahl, Vektorgleitkomma) durchführen. Während einige Ausführungsformen eine Reihe von Ausführungs-Hardware, die für spezielle Funktionen oder Sätze von Funktionen dediziert ist, aufweisen können, können andere Ausführungsformen nur eine Ausführungs-Hardware oder mehrere Ausführungs-Hardwares, die alle sämtliche Funktionen durchführen, aufweisen. Die Scheduler-Hardware 1756, die physikalische Registerdatei-Hardware 1758 und das/die Ausführungscluster 1760 sind derart gezeigt, dass sie möglicherweise in einer Mehrzahl vorliegen, weil bestimmte Ausführungsformen separate Pipelines für bestimmte Datentypen/Operationen erzeugen (z. B. eine skalare Ganzzahl-Pipeline, eine skalare Gleitkomma/gepackte Ganzzahl/gepackte Gleitkomma/Vektorganzzahl/Vektorgleitkomma-Pipeline und/oder eine Speicherzugriffs-Pipeline, die jeweils ihre eigene Scheduler-Hardware, physikalische Registerdatei-Hardware und/oder Ausführungscluster aufweist - und im Fall einer separaten Speicherzugriffs-Pipeline sind bestimmte Ausführungsformen implementiert, bei denen nur das Ausführungscluster dieser Pipeline die Speicherzugriffs-Hardware 1764 aufweist). Es versteht sich auch, dass, wenn separate Pipelines verwendet werden, eine oder mehrere dieser Pipelines Out-of-Order-Ausgabe-/Ausführungs-Pipelines und der Rest In-Order-Pipelines sein können.
  • Der Satz von Speicherzugriffs-Hardwares 1764 ist mit der Speicher-Hardware 1770 gekoppelt, die eine Daten-TLB-Hardware 1772 gekoppelt mit einer Datencache-Hardware 1774 gekoppelt mit einer Hardware 1776 der Cacheebene 2 (L2) aufweist. In einer beispielhaften Ausführungsform kann die Speicherzugriffs-Hardware 1764 eine Lade-Hardware, eine Speicheradressen-Hardware und eine Speicherdaten-Hardware aufweisen, von denen jede mit der Daten-TLB-Hardware 1772 in der Speicher-Hardware 1770 gekoppelt ist. Die Befehlscache-Hardware 1734 ist ferner mit einer Hardware 1776 der Cacheebene 2 (L2) in der Speicher-Hardware 1770 gekoppelt. Die L2-Cache-Hardware 1776 ist mit einem oder mehreren anderen Cacheebenen und schließlich mit einem Hauptspeicher gekoppelt.
  • Als Beispiel kann die beispielhafte Out-of-Order-Ausgabe-/Ausführungs-Kernarchitektur mit Registerumbenennung die Pipeline 1700 wie folgt implementieren: 1) der Befehlsabruf 1738 führt die Abruf- und Längendecodierstufen 1702 und 1704 durch; 2) die Decodier-Hardware 1740 führt die Decodierstufe 1706 durch; 3) die Umbenennungs-/Zuordnungs-Hardware 1752 führt die Zuordnungsstufe 1708 und die Umbenennungsstufe 1710 durch; 4) die Scheduler-Hardware 1756 führt die Zeitplanungsstufe 1712 durch; 5) die physikalische Registerdatei-Hardware 1758 und die Speichereinheit 1770 führen die Register-Lese-/Speicher-Lese-Stufe 1714 durch; das Ausführungscluster 1760 führt die Ausführungsstufe 1716 durch; 6) die Speicher-Hardware 1770 und die physikalische Registerdatei-Hardware 1758 führen die Rückschreib-/Speicher-Schreib-Stufe 1718 durch; 7) verschiedene Hardwares können an der Ausnahmehandhabungsstufe 1722 beteiligt sein; und 8) die Außerkraftsetzungs-Hardware 1754 und die physikalische Registerdatei-Hardware 1758 führen die Commit-Stufe 1724 durch.
  • Der Kern 1790 kann einen oder mehrere Befehlssätze unterstützen, z. B. den x86-Befehlssatz (mit einigen Erweiterungen, die bei neueren Versionen hinzugefügt wurden); den MIPS-Befehlssatz von MIPS Technologies aus Sunnyvale, CA; den ARM-Befehlssatz (mit optionalen zusätzlichen Erweiterungen, wie beispielsweise NEON) von ARM Holdings aus Sunnyvale, CA), einschließlich des/der hierin beschriebenen Befehls/Befehle. In einer Ausführungsform umfasst der Kern 1790 Logik zum Unterstützen einer gepackten Datenbefehlssatzerweiterung (z. B. AVX1, AVX2 und/oder irgendeine Form des generischen vektorfreundlichen Befehlsformats (U=0 und/oder U=1), nachstehend beschrieben), wodurch gestattet wird, dass die von vielen Multimediaanwendungen verwendeten Operationen unter Verwendung von gepackten Daten durchgeführt werden.
  • Es versteht sich, dass der Kern Multithreading (Ausführung von zwei oder mehr parallelen Sätzen von Operationen oder Threads) unterstützen kann, und er kann dies in einer Vielzahl von Möglichkeiten tun, einschließlich Zeitscheiben-Multithreading, simultanes Multithreading (wobei ein einzelner physikalischer Kern einen logischen Kern für jeden der Threads, die der physikalische Kern gleichzeitig im Multithreading-Verfahren bearbeitet, bereitstellt) oder einer Kombination davon (z. B. Zeitscheiben-Abruf und -Decodierung und danach gleichzeitiges Multithreading, wie beispielsweise bei der Intel® Hyperthreading-Technologie).
  • Obgleich die Registerumbenennung im Kontext der Out-of-Order-Ausführung beschrieben wird, versteht es sich, dass die Registerumbenennung in einer In-Order-Architektur verwendet werden kann. Obgleich die veranschaulichte Ausführungsform des Prozessors auch separate Befehls- und Datencache-Hardware 1734/1774 und eine gemeinsam genutzte L2-Cache-Hardware 1776 aufweist, können alternative Ausführungsformen einen einzelnen internen Cache sowohl für Befehle als auch Daten aufweisen, wie beispielsweise einen internen Cache der Ebene 1 (L1) oder mehrere Ebenen von internem Cache. In einigen Ausführungsformen kann das System eine Kombination aus einem internen Cache und einem externen Cache, der sich extern zum Kern und/oder Prozessor befindet, aufweisen. Alternativ dazu kann sich der gesamte Cache extern zum Kern und/oder Prozessor befinden.
  • 18 ist ein Blockschaltbild eines Prozessors 1800, der gemäß Ausführungsformen der Erfindung mehr als einen Kern aufweisen kann, einen integrierten Speichercontroller aufweisen kann und integrierte Grafik aufweisen kann. Die Kästchen mit durchgezogenen Linien in 18 veranschaulichen einen Prozessor 1800 mit einem einzelnen Kern 1802A, einem Systemagenten 1810, einem Satz von einer oder mehreren Buscontroller-Hardwares 1816, während die optionale Hinzufügung der Kästchen mit gestrichelten Linien einen alternativen Prozessor 1800 mit mehreren Kernen 1802A-N, einem Satz von einer oder mehreren integrierten Speichercontroller-Hardwares 1814 in der Systemagent-Hardware 1810 und Speziallogik 1808 veranschaulicht.
  • Somit können unterschiedliche Implementierungen des Prozessors 1800 Folgendes umfassen: 1) eine CPU mit der Speziallogik 1808, bei der es sich um integrierte Grafik und/oder wissenschaftliche (Durchsatz-) Logik handelt (die einen oder mehrere Kerne aufweisen kann), und die Kerne 1802A-N, bei denen es sich um einen oder mehrere Allzweckkerne handelt (z. B. Allzweck-In-Order-Kerne, Allzweck-Out-of-Order-Kerne, eine Kombination der beiden); 2) einen Coprozessor mit den Kernen 1802A-N, bei denen es sich um eine große Anzahl von Spezialkernen handelt, die primär für Grafik und/oder wissenschaftliche (Durchsatz-) Logik beabsichtigt sind; und 3) einen Coprozessor mit den Kernen 1802A-N, bei denen es sich um eine große Anzahl von Allzweck-In-Order-Kernen handelt. Somit kann der Prozessor 1800 ein Allzweckprozessor, Coprozessor oder Spezialprozessor sein, wie beispielsweise ein Netz- oder Kommunikationsprozessor, eine Komprimierungs-Engine, ein Grafikprozessor, eine Allzweck-Grafikverarbeitungseinheit (GPGPU, General Purpose Graphics Processing Unit), ein Coprozessor mit hohem Durchsatz und vielen integrierten Kernen (MIC, Many Integrated Cores) (der 30 oder mehr Kerne aufweist), ein eingebetteter Prozessor oder dergleichen. Der Prozessor kann auf einem oder mehreren Chips implementiert sein. Der Prozessor 1800 kann ein Teil von einem oder mehreren Substraten sein und/oder auf einem oder mehreren Substraten implementiert sein, und zwar unter Verwendung jeder einer Reihe von Prozesstechnologien, wie beispielsweise BiCMOS, CMOS oder NMOS.
  • Die Speicherhierarchie weist eine oder mehrere Cacheebenen innerhalb der Kerne, einen Satz oder eine oder mehrere gemeinsam genutzte Cache-Hardwares 1806 und externen Speicher (nicht gezeigt) gekoppelt mit dem Satz integrierter Speichercontroller-Hardwares 1814 auf. Der Satz gemeinsam genutzter Cache-Hardwares 1806 kann einen oder mehrere Caches der mittleren Ebene, wie beispielsweise Ebene 2 (L2), Ebene 3 (L3), Ebene 4 (L4) oder andere Cacheebenen, einen Cache der letzten Ebene (LLC, Last Level Cache) und/oder Kombinationen davon aufweisen. Obgleich in einer Ausführungsform eine ringbasierte Zwischenverbindungs-Hardware 1812 die integrierte Grafiklogik 1808, den Satz gemeinsam genutzter Cache-Hardwares 1806 und die Systemagent-Hardware 1810 bzw. die integrierte Speichercontroller-Hardware 1814 verbindet, können alternative Ausführungsformen eine beliebige Anzahl von wohlbekannten Techniken zum Verbinden derartiger Hardware verwenden. In einer Ausführungsform wird die Kohärenz zwischen einer oder mehreren Cache-Hardwares 1806 und den Kernen 1802A-N aufrechterhalten.
  • In einigen Ausführungsformen sind einer oder mehrere der Kerne 1802A-N zum Multithreading in der Lage. Der Systemagent 1810 weist diejenigen Komponenten auf, die die Kerne 1802A-N koordinieren und betreiben. Die Systemagent-Hardware 1810 kann beispielsweise eine Stromsteuerungseinheit (PCU, Power Control Unit) und eine Anzeige-Hardware aufweisen. Die PCU kann Logik und Komponenten darstellen oder diese einschließen, die zum Regulieren des Stromzustands der Kerne 1802A-N und der integrierten Grafiklogik 1808 benötigt werden. Die Anzeige-Hardware dient der Ansteuerung von einer oder mehreren extern angeschlossenen Anzeigen.
  • Die Kerne 1802A-N können in Bezug auf den Architekturbefehlssatz homogen oder heterogen sein; d. h. zwei oder mehr der Kerne 1802A-N können zur Ausführung des gleichen Befehlssatzes in der Lage sein, während andere nur zur Ausführung einer Teilmenge dieses Befehlssatzes oder eines unterschiedlichen Befehlssatzes in der Lage sein können. In einer Ausführungsform sind die Kerne 1802A-N heterogen und weisen sowohl die „kleinen“ Kerne als auch die „großen“ Kerne auf, die nachfolgend beschrieben werden.
  • 19-22 sind Blockschaltbilder beispielhafter Computerarchitekturen. Andere in der Technik bekannte Systemdesigns und Konfigurationen für Laptops, Desktops, Handheld-PCs, persönliche digitale Assistenten, Engineering-Arbeitsstationen, Server, Netzvorrichtungen, Netz-Hubs, Schalter, eingebettete Prozessoren, Digitalsignalprozessoren (DSPs), Grafikvorrichtungen, Videospielvorrichtungen, Set-Top-Boxen, Mikrocontroller, Mobiltelefone, tragbare Mediaplayer, Handheld-Vorrichtungen und verschiedene andere elektronische Vorrichtungen sind auch geeignet. Im Allgemeinen sind eine große Vielzahl von Systemen oder elektronischen Vorrichtungen, die in der Lage sind, einen Prozessor und/oder andere Ausführungslogik, wie hierin offenbart, zu integrieren, allgemein geeignet.
  • Bezug nehmend nun auf 19 ist ein Blockschaltbild eines Systems 1900 gemäß einer Ausführungsform der vorliegenden Erfindung gezeigt. Das System 1900 kann einen oder mehrere Prozessoren 1910, 1915 aufweisen, die mit einem Controller-Hub 1920 gekoppelt sind. In einer Ausführungsform weist der Controller-Hub 1920 einen Grafikspeichercontroller-Hub (GMCH, Graphics Memory Controller Hub) 1990 und einen Eingabe/Ausgabe-Hub (IOH, Input/Output Hub) 1950 (die sich auf separaten Chips befinden können) auf; der GMCH 1990 weist Speicher- und Grafikcontroller auf, mit denen der Speicher 1940 und ein Coprozessor 1945 gekoppelt sind; der IOH 1950 koppelt Eingabe/Ausgabe(E/A)-Vorrichtungen 1960 mit dem GMCH 1990. Alternativ sind einer oder beide der Speicher- und Grafikcontroller im Prozessor integriert (wie hierin beschrieben), der Speicher 1940 und der Coprozessor 1945 sind direkt mit dem Prozessor 1910 gekoppelt, und der Controller-Hub 1920 befindet sich in einem einzelnen Chip mit dem IOH 1950.
  • Die optionale Natur zusätzlicher Prozessoren 1915 ist in 19 mit unterbrochenen Linien dargestellt. Jeder Prozessor 1910, 1915 kann einen oder mehrere der hierin beschriebenen Verarbeitungskerne aufweisen und kann eine Version des Prozessors 1800 sein.
  • Der Speicher 1940 kann beispielsweise dynamischer Direktzugriffsspeicher (DRAM, Dynamic Random Access Memory), Phasenwechselspeicher (PCM, Phase Change Memory) oder eine Kombination der beiden sein. In wenigstens einer Ausführungsform kommuniziert der Controller-Hub 1920 mit dem/den Prozessor(en) 1910, 1915 über einen Multi-Drop-Bus, wie beispielsweise einen Frontside-Bus (FSB), eine Punkt-zu-Punkt-Schnittstelle oder eine ähnliche Verbindung 1995.
  • In einer Ausführungsform ist der Coprozessor 1945 ein Spezialprozessor, wie beispielsweise ein MIC-Prozessor mit hohem Durchsatz, ein Netz- oder Kommunikationsprozessor, eine Komprimierungs-Engine, ein Grafikprozessor, eine GPGPU, ein eingebetteter Prozessor oder dergleichen. In einer Ausführungsform kann der Controller-Hub 1920 einen integrierten Grafikbeschleuniger aufweisen.
  • Es kann eine Vielzahl von Unterschieden zwischen den physikalischen Ressourcen 1910, 1915 in Bezug auf ein Spektrum von Leistungsmetriken geben, einschließlich architektonischer, mikroarchitektonischer, thermischer und Stromverbrauchseigenschaften und dergleichen.
  • In einer Ausführungsform führt der Prozessor 1910 Befehle aus, die Datenverarbeitungsoperationen eines allgemeinen Typs steuern. Innerhalb der Befehle können Coprozessorbefehle eingebettet sein. Der Prozessor 1910 erkennt diese Coprozessorbefehle als einen Typ, der durch den angeschlossenen Coprozessor 1945 ausgeführt werden sollte. Dementsprechend gibt der Prozessor 1910 diese Coprozessorbefehle (oder Steuersignale, die Coprozessorbefehle repräsentieren) auf einem Coprozessor-Bus oder einer anderen Zwischenverbindung an den Coprozessor 1945 aus. Der/die Coprozessor(en) 1945 akzeptiert/akzeptieren die empfangenen Coprozessorbefehle und führt/führen diese aus.
  • Bezug nehmend nun auf 20 ist ein Blockschaltbild eines ersten spezielleren beispielhaften Systems 2000 gemäß einer Ausführungsform der vorliegenden Erfindung gezeigt. Wie in 20 gezeigt, ist das Multiprozessorsystem 2000 ein Punkt-zu-Punkt-Zwischenverbindungssystem, und es weist einen ersten Prozessor 2070 und einen zweiten Prozessor 2080 gekoppelt über eine Punkt-zu-Punkt-Zwischenverbindung 2050 auf. Jeder der Prozessoren 2070 und 2080 kann eine Version des Prozessors 1800 sein. In einer Ausführungsform der Erfindung sind die Prozessoren 2070 und 2080 jeweils die Prozessoren 1910 und 1915, während der Coprozessor 2038 der Coprozessor 1945 ist. In einer anderen Ausführungsform sind die Prozessoren 2070 und 2080 jeweils der Prozessor 1910 und der Coprozessor 1945.
  • Die Prozessoren 2070 und 2080 sind jeweils einschließlich der integrierten Speichercontroller(IMC, Integrated Memory Controller)-Hardware 2072 und 2082 gezeigt. Der Prozessor 2070 weist als Teil seiner Buscontroller-Hardware auch die Punkt-zu-Punkt(P-P)-Schnittstellen 2076 und 2078 auf; ähnlich weist der zweite Prozessor 2080 die P-P-Schnittstellen 2086 und 2088 auf. Die Prozessoren 2070, 2080 können über eine Punkt-zu-Punkt(P-P)-Schnittstelle 2050 unter Verwendung der P-P-Schnittstellenschaltungen 2078, 2088 Informationen austauschen. Wie in 20 gezeigt, koppeln die IMCs 2072 und 2082 die Prozessoren mit jeweiligen Speichern, nämlich einem Speicher 2032 und einem Speicher 2034, bei denen es sich um Abschnitte des Hauptspeichers lokal angeschlossen an die jeweiligen Prozessoren handeln kann.
  • Die Prozessoren 2070, 2080 können jeweils über die einzelnen P-P-Schnittstellen 2052, 2054 unter Verwendung der Punkt-zu-Punkt-Schnittstellenschaltungen 2076, 2090, 2094, 2098 Informationen mit einem Chipsatz 2086 austauschen. Der Chipsatz 2090 kann wahlweise über eine Hochleistungsschnittstelle 2038 Informationen mit dem Coprozessor 2039 austauschen. In einer Ausführungsform ist der Coprozessor 2038 ein Spezialprozessor, wie beispielsweise ein MIC-Prozessor mit hohem Durchsatz, ein Netz- oder Kommunikationsprozessor, eine Komprimierungs-Engine, ein Grafikprozessor, eine GPGPU, ein eingebetteter Prozessor oder dergleichen.
  • Ein gemeinsam genutzter Cache (nicht gezeigt) kann in jedem der Prozessoren eingeschlossen sein oder sich außerhalb beider Prozessoren befinden, ist jedoch über eine P-P-Zwischenverbindung mit den Prozessoren verbunden, so dass die lokalen Cacheinformationen von einem der oder beiden Prozessoren in dem gemeinsam genutzten Cache gespeichert werden können, falls ein Prozessor in einen niedrigen Strommodus geschaltet wird.
  • Der Chipsatz 2090 kann über eine Schnittstelle 2096 mit einem ersten Bus 2016 gekoppelt sein. In einer Ausführungsform kann der erste Bus 2016 ein peripherer Komponentenzwischenverbindungs(PCI, Peripheral Component Interconnect)-Bus oder ein Bus, wie z. B. ein PCI Express-Bus oder ein anderer E/A-Zwischenverbindungsbus der dritten Generation, sein, obwohl der Schutzbereich der vorliegenden Erfindung nicht darauf beschränkt ist.
  • Wie in 20 gezeigt, können verschiedene E/A-Vorrichtungen 2014 mit dem ersten Bus 2016 gekoppelt sein, zusammen mit einer Busbrücke 2018, die den ersten Bus 2016 mit einem zweiten Bus 2020 koppelt. In einer Ausführungsform sind ein oder mehrere zusätzliche Prozessoren 2015, wie beispielsweise Coprozessoren, MIC-Prozessoren mit hohem Durchsatz, GPGPUs, Beschleuniger (wie beispielsweise Grafikbeschleuniger oder Digitalsignalverarbeitungs(DSP, Digital Signal Processing)-Hardware), feldprogrammierbare Gate-Arrays oder ein beliebiger anderer Prozessor, mit dem ersten Bus 2016 gekoppelt. In einer Ausführungsform kann der zweite Bus 2020 ein Bus mit geringer Anschlusszahl (LPC, Low Pin Count) sein. In einer Ausführungsform können verschiedene Vorrichtungen mit einem zweiten Bus 2020 gekoppelt sein, einschließlich beispielsweise einer Tastatur und/oder Maus 2022, der Kommunikationsvorrichtungen 2027 und einer Speicher-Hardware 2028, wie beispielsweise ein Plattenlaufwerk oder eine andere Massenspeichervorrichtung, welche Befehle/Code und Daten 2030 umfassen kann. Ferner kann ein Audio-E/A 2024 mit dem zweiten Bus 2020 gekoppelt sein. Man beachte, dass auch andere Architekturen möglich sind. Beispielsweise kann ein System anstelle der Punkt-zu-Punkt-Architektur aus 20 einen Multi-Drop-Bus oder eine andere derartige Architektur implementieren.
  • Bezug nehmend nun auf 21 ist ein Blockschaltbild eines zweiten spezielleren beispielhaften Systems 2100 gemäß einer Ausführungsform der vorliegenden Erfindung gezeigt. Gleiche Elemente in 20 und 21 weisen die gleichen Bezugszeichen auf, und bestimmte Aspekte aus 20 wurden in 21 weggelassen, um andere Aspekte aus 21 nicht zu verschleiern.
  • 21 veranschaulicht, dass die Prozessoren 2070, 2080 den integrierten Speicher und die E/A-Steuerlogik (CL, Control Logic) 2072 bzw. 2082 aufweisen können. Somit weisen die CLs 2072, 2082 integrierte Speichercontroller-Hardware und E/A-Steuerlogik auf. 21 veranschaulicht, dass nicht nur die Speicher 2032, 2034 mit der CL 2072, 2082 gekoppelt sind, sondern dass auch die E/A-Vorrichtungen 2114 mit der Steuerlogik 2072, 2082 gekoppelt sind. Legacy-E/A-Vorrichtungen 2115 sind mit dem Chipsatz 2090 gekoppelt.
  • Bezug nehmend nun auf 22 ist ein Blockschaltbild eines SoC 2200 gemäß einer Ausführungsform der vorliegenden Erfindung gezeigt. Ähnliche Elemente in 18 weisen gleiche Bezugszeichen auf. Außerdem sind Kästchen mit gestrichelten Linien optionale Merkmale auf fortschrittlicheren SoCs. In 22 ist eine Zwischenverbindungs-Hardware 2202 gekoppelt mit: einem Anwendungsprozessor 2210, der einen Satz von einem oder mehreren Kernen 1802A-N und eine gemeinsam genutzte Cache-Hardware 1806 aufweist; einer Systemagent-Hardware 1810; einer Buscontroller-Hardware 1816; einer integrierten Speichercontroller-Hardware 1814; einem Satz von einem oder mehreren Coprozessoren 2220, die integrierte Grafiklogik, einen Bildprozessor, einen Audioprozessor und einen Videoprozessor aufweisen können; einer statischen Direktzugriffsspeicher(SRAM, Static Random Access Memory)-Hardware 2230; einer Direktspeicherzugriffs(DMA, Direct Memory Access)-Hardware 2232; und einer Anzeige-Hardware 2240 zum Koppeln mit einer oder mehreren externen Anzeigen. In einer Ausführungsform umfasst/umfassen der/die Coprozessor(en) 2220 einen Spezialprozessor, wie beispielsweise einen Netz- oder Kommunikationsprozessor, eine Komprimierungs-Engine, eine GPGPU, einen MIC-Prozessor mit hohem Durchsatz, einen eingebetteten Prozessor oder dergleichen.
  • Ausführungsformen der hierin offenbarten Mechanismen können in Hardware, Software, Firmware oder einer Kombination derartiger Implementierungsansätze implementiert sein. Die Ausführungsformen der Erfindung können als Computerprogramme oder Programmcode, die auf programmierbaren Systemen ausgeführt werden, die wenigstens einen Prozessor, ein Speichersystem (einschließlich flüchtiger und nicht-flüchtiger Arbeitsspeicher- und/oder Datenspeicherelemente), wenigstens eine Eingabevorrichtung und wenigstens eine Ausgabevorrichtung umfassen, implementiert sein.
  • Programmcode, wie beispielsweise der Code 2030, der in 20 veranschaulicht ist, kann auf Eingabebefehle angewandt werden, um die hierin beschriebenen Funktionen durchzuführen und Ausgabeinformationen zu erzeugen. Die Ausgabeinformationen können in bekannter Art und Weise auf eine oder mehrere Ausgabevorrichtungen angewandt werden. Zum Zweck dieser Anmeldung weist ein Verarbeitungssystem ein beliebiges System auf, das einen Prozessor aufweist, wie beispielsweise einen Digitalsignalprozessor (DSP), einen Mikrocontroller, eine anwendungsspezifische integrierte Schaltung (ASIC, Application Specific Integrated Circuit) oder einen Mikroprozessor.
  • Der Programmcode kann in einer prozeduralen oder objektorientierten höheren Programmiersprache zum Kommunizieren mit einem Verarbeitungssystem implementiert sein. Der Programmcode kann auch, falls gewünscht, in Assembler- oder Maschinensprache implementiert sein. Tatsächlich sind die hierin beschriebenen Mechanismen in ihrem Umfang nicht auf eine bestimmte Programmiersprache beschränkt. In jedem Fall kann die Sprache eine kompilierte oder interpretierte Sprache sein.
  • Ein oder mehrere Aspekte wenigstens einer Ausführungsform können durch repräsentative Befehle implementiert sein, die auf einem maschinenlesbaren Medium gespeichert sind, das verschiedene Logik innerhalb des Prozessors repräsentiert, die, wenn sie durch die Maschine gelesen wird, die Maschine veranlasst, Logik zum Durchführen der hierin beschriebenen Techniken zu erzeugen. Derartige Repräsentationen, bekannt als „IP-Kerne“, können auf einem greifbaren, maschinenlesbaren Medium gespeichert sein und an verschiedene Kunden oder Herstellungseinrichtungen geliefert werden, um sie in die Herstellungsmaschinen zu laden, die letztendlich die Logik oder den Prozessor erzeugen.
  • Zu derartigen maschinenlesbaren Speichermedien können, ohne Einschränkung, nicht-transitorische, greifbare Anordnungen von Artikeln hergestellt oder geformt durch eine Maschine oder Vorrichtung zählen, einschließlich Speichermedien, wie z. B. Festplatten, jede andere Art von Platte, einschließlich Disketten, optischer Platten, CD-ROMs, CD-RWs und magneto-optischer Platten, Halbleitervorrichtungen, wie z. B. Nur-Lese-Speicher (ROMs, Read-Only Memories), Direktzugriffspeicher (RAMs, Random Access Memories), wie z. B. dynamische Direktzugriffspeicher (DRAMs), statische Direktzugriffspeicher (SRAMs), löschbare programmierbare Nur-Lese-Speicher (EPROMs, Erasable Programmable Read-Only Memories), Flash-Speicher, elektrisch löschbare programmierbare Nur-Lese-Speicher (EEPROMs, Electrically Erasable Programmable Read-Only Memories), Phasenwechselspeicher (PCM, Phase Change Memory), magnetische oder optische Karten oder jede andere Art von Medium, die zum Speichern elektronischer Befehle geeignet ist.
  • Dementsprechend umfassen die Ausführungsformen der Erfindung auch nicht-transitorische, greifbare maschinenlesbare Medien, die Befehle oder Designdaten aufweisen, wie z. B. Hardwarebeschreibungssprache (Hardware Description Language, HDL), welche die hierin beschriebenen Strukturen, Schaltungen, Vorrichtungen, Prozessoren und/oder Systemmerkmale definieren. Derartige Ausführungsformen können auch als Programmprodukte bezeichnet werden.
  • In einigen Fällen kann ein Befehlswandler verwendet werden, um einen Befehl von einem Quellbefehlssatz in einen Zielbefehlssatz umzuwandeln. Beispielsweise kann der Befehlswandler übersetzen (z. B. unter Verwendung von statischer Binärübersetzung, dynamischer Binärübersetzung einschließlich dynamischer Kompilierung), morphen, emulieren oder anderweitig einen Befehl in eine oder mehrere andere Befehle umwandeln, die durch den Kern verarbeitet werden sollen. Der Befehlswandler kann in Software, Hardware, Firmware oder einer Kombination davon implementiert sein. Der Befehlswandler kann auf einem Prozessor, außerhalb eines Prozessors oder teilweise auf und teilweise außerhalb eines Prozessors sein.
  • 23 ist ein Blockschaltbild, das die Verwendung eines Softwarebefehlswandlers zum Umwandeln von binären Befehlen in einem Quellbefehlssatz in binäre Befehle in einem Zielbefehlssatz gemäß Ausführungsformen der Erfindung gegenüberstellt. In der veranschaulichten Ausführungsform ist der Befehlswandler ein Softwarebefehlswandler, obwohl der Befehlswandler alternativ in Software, Firmware, Hardware oder verschiedenen Kombinationen davon implementiert sein kann. 23 zeigt, dass ein Programm in einer Hochsprache 2302 unter Verwendung eines x86-Compilers 2304 kompiliert werden kann, um x86-Binärcode 2306 zu erzeugen, der von einem Prozessor mit wenigstens einem x86-Befehlssatzkern 2316 nativ ausgeführt werden kann. Der Prozessor mit wenigstens einem x86-Befehlssatzkern 2316 repräsentiert einen beliebigen Prozessor, der im Wesentlichen die gleichen Funktionen wie ein Intel-Prozessor mit wenigstens einem x86-Befehlssatzkern durchführen kann durch kompatibles Ausführen oder anderweitiges Verarbeiten (1) eines wesentlichen Teils des Befehlssatzes des Intel x86-Befehlssatzkerns oder (2) von Objektcodeversionen von Anwendungen oder anderer Software, die abgezielt sind, um auf einem Intel-Prozessor mit wenigstens einem x86-Befehlssatzkern zu laufen, um im Wesentlichen das gleiche Ergebnis wie ein Intel-Prozessor mit wenigstens einem x86-Befehlssatzkern zu erreichen. Der x86-Compiler 2304 repräsentiert einen Compiler, der betrieben werden kann, um x86-Binärcode 2306 (z. B. Objektcode) zu erzeugen, der mit oder ohne zusätzliche Verlinkungsverarbeitung auf dem Prozessor mit wenigstens einem x86-Befehlssatzkern 2316 ausgeführt werden kann. Ähnlich zeigt 23, dass das Programm in der Hochsprache 2302 unter Verwendung eines alternativen Befehlssatz-Compilers 2308 kompiliert werden kann, um alternativen Befehlssatz-Binärcode 2310 zu erzeugen, der von einem Prozessor ohne wenigstens einen x86-Befehlssatzkern 2314 nativ ausgeführt werden kann (z. B. einem Prozessor mit Kernen, die den MIPS-Befehlssatz von MIPS Technologies aus Sunnyvale, CA ausführen und/oder die den ARM-Befehlssatz von ARM Holdings aus Sunnyvale, CA ausführen). Der Befehlswandler 2312 wird verwendet, um den x86-Binärcode 2306 in Code umzuwandeln, der vom Prozessor ohne x86-Befehlssatzkern 2314 nativ ausgeführt werden kann. Es ist unwahrscheinlich, dass dieser umgewandelte Code der gleiche wie der alternative Befehlssatz-Binärcode 2310 ist, da ein Befehlswandler, der hierzu in der Lage ist, schwer herzustellen ist; jedoch wird der umgewandelte Code die allgemeine Operation erzielen und aus Befehlen vom alternativen Befehlssatz bestehen. Somit repräsentiert der Befehlswandler 2312 Software, Firmware, Hardware oder eine Kombination davon, die durch Emulierung, Simulation oder einen beliebigen anderen Prozess einem Prozessor oder einer anderen elektronischen Vorrichtung, die keinen x86-Befehlssatzprozessor oder -kern aufweist, ermöglicht, den x86-Binärcode 2306 auszuführen
  • Obwohl einige Ausführungsformen unter Bezugnahme auf bestimmte Implementierungen beschrieben wurden, sind andere Implementierungen gemäß einiger Ausführungsformen möglich. Zusätzlich brauchen die Anordnung und/oder Reihenfolge von Elementen oder anderen Merkmalen, die in den Zeichnungen veranschaulicht und/oder hierin beschrieben sind, nicht auf die bestimmte veranschaulichte und beschriebene Weise angeordnet sein. Viele andere Anordnungen sind gemäß einigen Ausführungsformen möglich.
  • Bei jedem in einer Figur gezeigten System können die Elemente in einigen Fällen jeweils das gleiche Bezugszeichen oder ein unterschiedliches Bezugszeichen aufweisen, um anzudeuten, dass die repräsentierten Elemente unterschiedlich und/oder ähnlich sein könnten. Ein Element kann jedoch flexibel genug sein, um unterschiedliche Implementierungen aufzuweisen und mit einigen oder allen hierin gezeigten oder beschriebenen Systemen zu funktionieren. Die verschiedenen in den Figuren gezeigten Elemente können die gleichen Elemente oder unterschiedlich sein. Welches als erstes Element bezeichnet wird und welches als zweites Element bezeichnet wird, ist willkürlich.
  • In der Beschreibung und in den Ansprüchen können die Begriffe „gekoppelt“ und „verbunden“, zusammen mit ihren Ableitungen, verwendet werden. Es versteht sich, dass diese Begriffe nicht als Synonyme füreinander gedacht sind. Vielmehr kann in bestimmten Ausführungsformen „verbunden“ verwendet werden, um anzuzeigen, dass zwei oder mehr Elemente in direktem physikalischen oder elektrischen Kontakt miteinander stehen. „Gekoppelt“ kann bedeuten, dass zwei oder mehr Elemente in direktem physikalischen oder elektrischen Kontakt stehen. Jedoch kann „gekoppelt“ auch bedeuten, dass zwei oder mehr Elemente nicht in direktem Kontakt miteinander stehen, aber dennoch zusammenwirken oder miteinander interagieren.
  • Eine Ausführungsform ist eine Implementierung oder ein Beispiel der Erfindungen. Wenn in der Beschreibung von „einer Ausführungsform“, „einer bestimmten Ausführungsform“, „einigen Ausführungsformen“ oder „anderen Ausführungsformen“ gesprochen wird, so bedeutet das, dass ein bestimmtes Merkmal, eine bestimmte Struktur oder eine bestimmte Eigenschaft, das bzw. die in Verbindung mit den Ausführungsformen beschrieben ist, wenigstens in einigen Ausführungsformen, aber nicht unbedingt in allen Ausführungsformen der Erfindungen eingeschlossen ist. Die verschiedenen Ausdrucksweisen „eine Ausführungsform“, „eine bestimmte Ausführungsform“ oder „einige Ausführungsformen“ beziehen sich nicht unbedingt alle auf die gleichen Ausführungsformen.
  • Nicht alle Komponenten, Merkmale, Strukturen, Eigenschaften usw., die hierin beschrieben und veranschaulicht sind, brauchen in einer bestimmten Ausführungsform oder in bestimmten Ausführungsformen eingeschlossen zu sein. Falls die Beschreibung beispielsweise besagt, dass eine Komponente, ein Merkmal, eine Struktur oder eine Eigenschaft eingeschlossen sein „kann“ oder „könnte“, so ist es nicht erforderlich, dass die bestimmte Komponente, das bestimmte Merkmal, die bestimmte Struktur oder die bestimmte Eigenschaft auch tatsächlich eingeschlossen ist. Falls in der Beschreibung oder einem Anspruch von „einem“ Element gesprochen wird, so bedeutet das nicht, dass es lediglich ein einziges solches Element gibt. Falls die Beschreibung oder die Ansprüche von „einem zusätzlichen“ Element sprechen, so schließt das nicht aus, dass auch mehrere der zusätzlichen Elemente vorhanden sein können.
  • Die oben stehende Beschreibung von veranschaulichten Ausführungsformen der Erfindung, darunter das, was in der Zusammenfassung beschrieben ist, ist nicht dazu bestimmt, als erschöpfend angesehen zu werden oder die Erfindung auf die genauen offenbarten Formen zu beschränken. Obgleich spezielle Ausführungsformen und Beispiele der Erfindung hierin zu veranschaulichenden Zwecken beschrieben sind, sind verschiedene äquivalente Modifikationen innerhalb des Schutzbereichs der Erfindung möglich, wie Fachleute auf dem betreffenden Gebiet erkennen werden.
  • Diese Modifikationen können angesichts der obigen detaillierten Beschreibung an der Erfindung vorgenommen werden. Die in den folgenden Ansprüchen verwendeten Begriffe sollten nicht so ausgelegt werden, dass sie die Erfindung auf die in der Beschreibung und den Zeichnungen offenbarten speziellen Ausführungsformen beschränken. Vielmehr ist der Schutzbereich der Erfindung vollständig durch die nachfolgenden Ansprüche zu bestimmen, die gemäß anerkannten Regelungen der Anspruchsinterpretation auszulegen sind.

Claims (26)

  1. Beansprucht wird:
  2. Verfahren, umfassend: Speichern von Daten für eine erste Speicheradresse in einer Cachezeile eines Speichers einer ersten Verarbeitungseinheit, wobei die Cachezeile einen Kohärenzzustand umfasst, der anzeigt, dass der Speicher den alleinigen Besitz der Cachezeile hat; Decodieren eines Befehls zur Ausführung durch eine zweite Verarbeitungseinheit, wobei der Befehl einen Quelldatenoperanden, der die erste Speicheradresse angibt, und einen Zieloperanden, der einen Speicherort der zweiten Verarbeitungseinheit angibt, umfasst; Ausführen des decodierten Befehls durch Kopieren von Daten von der Cachezeile des Speichers der ersten Verarbeitungseinheit, wie durch die erste Speicheradresse identifiziert, zum Speicherort der zweiten Verarbeitungseinheit, wobei die Cachezeile in Reaktion auf den Kopiervorgang im Speicher verbleiben soll und der Kohärenzzustand unverändert bleiben soll; und Zugreifen auf die Cachezeile im Speicher durch die erste Verarbeitungseinheit, ohne dass der Speicher den Besitz der Cachezeile suchen muss.
  3. Verfahren nach Anspruch 1, wobei der Speicher ein Cache der Ebene 1 (L1), Cache der Ebene 2 (L2)/Cache der mittleren Ebene (MLC, Mid Level Cache), Cache der Ebene 3 (L3)/Cache der letzten Ebene (LLC, Last Level Cache) oder Systemspeicher ist.
  4. Verfahren nach einem der Ansprüche 1-2, wobei der Speicherort ein Register ist.
  5. Verfahren nach einem der Ansprüche 1-2, wobei der Speicherort eine zweite Speicheradresse ist, die sich von der ersten Speicheradresse unterscheidet.
  6. Verfahren nach einem der Ansprüche 1-4, wobei der Kohärenzzustand ein modifizierter (M) oder exklusiver (E) Zustand ist.
  7. Verfahren nach einem der Ansprüche 1-5, wobei der Befehl ein MOVGET-Befehl ist, um eine Lese-Snapshot-Funktionalität bereitzustellen.
  8. Verfahren nach einem der Ansprüche 1-6, wobei die Quell- und/oder die Zieloperanden eine Datengröße angeben, wobei die Datengröße 4, 8, 16, 32 oder 64 Bytes beträgt.
  9. Verfahren, umfassend: Speichern von Daten für eine erste Speicheradresse in einer Cachezeile eines Speichers einer ersten Verarbeitungseinheit, wobei die Cachezeile einen Kohärenzzustand umfasst, der anzeigt, dass der Speicher den alleinigen Besitz der Cachezeile hat; Decodieren eines Befehls zur Ausführung durch eine zweite Verarbeitungseinheit, wobei der Befehl einen Quelldatenoperanden und einen Zieloperanden umfasst, wobei der Zieloperand die erste Speicheradresse angibt; Ausführen des decodierten Befehls durch Kopieren von Daten vom Quelldatenoperanden zur Cachezeile des Speichers, wie durch die erste Speicheradresse identifiziert, wobei der Speicher in Reaktion auf den Kopiervorgang den alleinigen Besitz der Cachezeile behalten soll; und Zugreifen auf die Cachezeile im Speicher durch die erste Verarbeitungseinheit, ohne dass der Speicher den Besitz der Cachezeile suchen muss.
  10. Verfahren nach Anspruch 8, wobei der Speicher ein Cache der Ebene 1 (L1), Cache der Ebene 2 (L2)/Cache der mittleren Ebene (MLC, Mid Level Cache), Cache der Ebene 3 (L3)/Cache der letzten Ebene (LLC, Last Level Cache) oder Systemspeicher ist.
  11. Verfahren nach einem der Ansprüche 8-9, wobei der Quelldatenoperand eine zweite Speicheradresse angibt, die sich von der ersten Speicheradresse unterscheidet.
  12. Verfahren nach einem der Ansprüche 8-9, wobei der Quellendatenoperand ein Register angibt.
  13. Verfahren nach einem der Ansprüche 8-11, wobei der Kohärenzzustand ein modifizierter (M) Zustand ist.
  14. Verfahren nach einem der Ansprüche 8-12, wobei der Befehl ein MOVPUT-Befehl ist, um In-Place-Schreibaktualisierungsfunktionalität bereitzustellen.
  15. Verfahren nach einem der Ansprüche 8-13, wobei die Quell- und/oder die Zieloperanden eine Datengröße angeben, wobei die Datengröße 4, 8, 16, 32 oder 64 Bytes beträgt.
  16. System, umfassend: eine erste Verarbeitungseinheit mit einem Speicher, um Daten für eine erste Speicheradresse in einer Cachezeile zu speichern, wobei die Cachezeile einen Kohärenzzustand umfasst, der anzeigt, dass der Speicher den alleinigen Besitz der Cachezeile hat; Decodierschaltungen, um einen Befehl zu decodieren, wobei der Befehl einen Quelldatenoperanden, der die erste Speicheradresse angibt, und einen Zieloperanden, der einen Speicherort einer zweiten Verarbeitungseinheit angibt, umfasst; Ausführungsschaltungen, um den decodierten Befehl auszuführen und Daten von der Cachezeile, wie durch die erste Speicheradresse identifiziert, zum Speicherort der zweiten Verarbeitungseinheit zu kopieren, wobei die Cachezeile in Reaktion auf den Kopiervorgang im Speicher der ersten Verarbeitungseinheit verbleiben soll und der Kohärenzzustand unverändert bleiben soll; und die erste Verarbeitungseinheit, um auf die Cachezeile im Speicher zuzugreifen, ohne dass der Speicher den Besitz der Cachezeile suchen muss.
  17. System nach Anspruch 15, wobei der Speicher ein Cache der Ebene 1 (L1), Cache der Ebene 2 (L2)/Cache der mittleren Ebene (MLC, Mid Level Cache), Cache der Ebene 3 (L3)/Cache der letzten Ebene (LLC, Last Level Cache) oder Systemspeicher ist.
  18. System nach einem der Ansprüche 15-16, wobei der Speicherort ein Register ist.
  19. System nach einem der Ansprüche 15-16, wobei der Speicherort eine zweite Speicheradresse ist, die sich von der ersten Speicheradresse unterscheidet.
  20. System nach einem der Ansprüche 15-18, wobei der Kohärenzzustand ein modifizierter (M) oder exklusiver (E) Zustand ist.
  21. System nach einem der Ansprüche 15-19, wobei der Befehl ein MOVGET-Befehl ist, um eine Lese-Snapshot-Funktionalität bereitzustellen.
  22. System nach einem der Ansprüche 15-20, wobei die Quell- und/oder die Zieloperanden eine Datengröße angeben, wobei die Datengröße 4, 8, 16, 32 oder 64 Bytes beträgt.
  23. System, umfassend: eine erste Verarbeitungseinheit mit einem Speicher, um Daten für eine erste Speicheradresse in einer Cachezeile zu speichern, wobei die Cachezeile einen Kohärenzzustand umfasst, der anzeigt, dass der Speicher den alleinigen Besitz der Cachezeile hat; Decodierschaltungen, um einen Befehl zu decodieren, wobei der Befehl einen Quelldatenoperanden und einen Zieloperanden umfasst, wobei der Zieloperand die erste Speicheradresse angibt; Ausführungsschaltungen, um den decodierten Befehl auszuführen und Daten vom Quelldatenoperanden zur Cachezeile des Speichers, wie durch die erste Speicheradresse identifiziert, zu kopieren, wobei der Speicher in Reaktion auf den Kopiervorgang den alleinigen Besitz der Cachezeile behalten soll; und wobei die erste Verarbeitungseinheit auf die Cachezeile im Speicher zugreifen soll, ohne dass der Speicher den Besitz der Cachezeile suchen muss.
  24. System nach Anspruch 22, wobei der Speicher ein Cache der Ebene 1 (L1), Cache der Ebene 2 (L2)/Cache der mittleren Ebene (MLC, Mid Level Cache), Cache der Ebene 3 (L3)/Cache der letzten Ebene (LLC, Last Level Cache) oder Systemspeicher ist.
  25. System nach einem der Ansprüche 22-23, wobei der Quelldatenoperand eine zweite Speicheradresse angibt, die sich von der ersten Speicheradresse unterscheidet.
  26. System nach einem der Ansprüche 22-23, wobei der Quellendatenoperand ein Register angibt.
DE102018004727.0A 2017-06-30 2018-06-13 Verfahren und System zum Durchführen von Datenbewegungsoperationen mit Lese-Snapshot und In-Place-Schreibaktualisierung Granted DE102018004727A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/640,060 US10606755B2 (en) 2017-06-30 2017-06-30 Method and system for performing data movement operations with read snapshot and in place write update
US15/640,060 2017-06-30

Publications (1)

Publication Number Publication Date
DE102018004727A1 true DE102018004727A1 (de) 2019-01-03

Family

ID=64661696

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102018004727.0A Granted DE102018004727A1 (de) 2017-06-30 2018-06-13 Verfahren und System zum Durchführen von Datenbewegungsoperationen mit Lese-Snapshot und In-Place-Schreibaktualisierung

Country Status (2)

Country Link
US (3) US10606755B2 (de)
DE (1) DE102018004727A1 (de)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11055226B2 (en) 2018-06-29 2021-07-06 Intel Corporation Mitigation of cache-latency based side-channel attacks

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10606755B2 (en) * 2017-06-30 2020-03-31 Intel Corporation Method and system for performing data movement operations with read snapshot and in place write update
US10579529B2 (en) * 2018-04-27 2020-03-03 EMC IP Holding Company LLC Reducing overhead of managing cache areas
US10789168B2 (en) 2018-04-27 2020-09-29 EMC IP Holding Company LLC Maintaining multiple cache areas
US10795814B2 (en) 2018-04-27 2020-10-06 EMC IP Holding Company LLC Placement of local cache areas
US11086672B2 (en) * 2019-05-07 2021-08-10 International Business Machines Corporation Low latency management of processor core wait state
US11113194B2 (en) * 2019-09-04 2021-09-07 Xilinx, Inc. Producer-to-consumer active direct cache transfers
US20220197726A1 (en) 2020-12-22 2022-06-23 Intel Corporation Inter-node messaging controller

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4394731A (en) 1980-11-10 1983-07-19 International Business Machines Corporation Cache storage line shareability control for a multiprocessor system
US6138213A (en) 1997-06-27 2000-10-24 Advanced Micro Devices, Inc. Cache including a prefetch way for storing prefetch cache lines and configured to move a prefetched cache line to a non-prefetch way upon access to the prefetched cache line
US6055605A (en) * 1997-10-24 2000-04-25 Compaq Computer Corporation Technique for reducing latency of inter-reference ordering using commit signals in a multiprocessor system having shared caches
US6324622B1 (en) * 1998-08-24 2001-11-27 International Business Machines Corporation 6XX bus with exclusive intervention
JP2000347933A (ja) 1999-06-08 2000-12-15 Nec Kofu Ltd バスブリッジ、キャッシュコヒーレンシ制御装置、キャッシュコヒーレンシ制御方法、プロセッサユニット、マルチプロセッサシステム
US8281079B2 (en) 2004-01-13 2012-10-02 Hewlett-Packard Development Company, L.P. Multi-processor system receiving input from a pre-fetch buffer
US7168070B2 (en) 2004-05-25 2007-01-23 International Business Machines Corporation Aggregate bandwidth through management using insertion of reset instructions for cache-to-cache data transfer
US7984244B2 (en) * 2007-12-28 2011-07-19 Intel Corporation Method and apparatus for supporting scalable coherence on many-core products through restricted exposure
US9563425B2 (en) * 2012-11-28 2017-02-07 Intel Corporation Instruction and logic to provide pushing buffer copy and store functionality
GB2532545B (en) * 2014-08-19 2017-04-19 Imagination Tech Ltd Processors and methods for cache sparing stores
US9727475B2 (en) 2014-09-26 2017-08-08 Intel Corporation Method and apparatus for distributed snoop filtering
US9852071B2 (en) * 2014-10-20 2017-12-26 International Business Machines Corporation Granting exclusive cache access using locality cache coherency state
US10719434B2 (en) 2014-12-14 2020-07-21 Via Alliance Semiconductors Co., Ltd. Multi-mode set associative cache memory dynamically configurable to selectively allocate into all or a subset of its ways depending on the mode
US10157129B2 (en) * 2014-12-17 2018-12-18 International Business Machines Corporation Mirroring a cache having a modified cache state
US11016893B2 (en) * 2016-09-30 2021-05-25 Intel Corporation Method and apparatus for smart store operations with conditional ownership requests
US10373285B2 (en) * 2017-04-09 2019-08-06 Intel Corporation Coarse grain coherency
US10606755B2 (en) * 2017-06-30 2020-03-31 Intel Corporation Method and system for performing data movement operations with read snapshot and in place write update
US10599567B2 (en) 2017-10-06 2020-03-24 International Business Machines Corporation Non-coherent read in a strongly consistent cache system for frequently read but rarely updated data
US20190303303A1 (en) * 2018-03-29 2019-10-03 Intel Corporation System, method, and apparatus for detecting repetitive data accesses and automatically loading data into local cache to avoid performance inversion and waste of uncore resources

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11055226B2 (en) 2018-06-29 2021-07-06 Intel Corporation Mitigation of cache-latency based side-channel attacks

Also Published As

Publication number Publication date
US11816036B2 (en) 2023-11-14
US20210049102A1 (en) 2021-02-18
US20190004958A1 (en) 2019-01-03
US11327894B2 (en) 2022-05-10
US20220261351A1 (en) 2022-08-18
US10606755B2 (en) 2020-03-31

Similar Documents

Publication Publication Date Title
DE102018004727A1 (de) Verfahren und System zum Durchführen von Datenbewegungsoperationen mit Lese-Snapshot und In-Place-Schreibaktualisierung
DE112017001825T5 (de) Prozessoren, verfahren, systeme und instruktionen zum atomischen speichern von daten, die breiter als eine nativ unterstützte datenbreite sind, in einem speicher
DE102018002294A1 (de) Effizientes bereichsbasiertes speicher-rückschreiben zum verbessern der host-zu-geräte-kommunikation für optimale energie und leistung
DE112016004960T5 (de) Befehl und logik, um informationen im voraus aus einem beständigen speicher zu holen
DE112013003731T5 (de) Neue befehls- und hocheffiziente Mikroarchitektur zum ermöglichen einer sofortigen Kontextumschaltung für Benutzerebenen-Threading
DE102018005105A1 (de) Befehle für entfernte atomare operationen
DE112013004751T5 (de) Prozessor mit mehreren Kernen, gemeinsam genutzter Kernerweiterungslogik und gemeinsam genutzten Kernerweiterungsnutzungsbefehlen
DE112012007088B4 (de) Vorrichtung, verfahren und system mit einem befehl zum reduzieren von elementen in einem vektorregister mit einem schrittweisem zugriffsmuster
DE112010004971T5 (de) Ein System, Verfahren und eine Vorrichtung für einen Cache-Flush eines Seitenbereichs und TLB Invalidierung eines Bereichs von Einträgen
DE202007019502U1 (de) Globaler Überlauf für virtualisierten Transaktionsspeicher
DE102015002582A1 (de) Architekturübergreifendes Kompatibilitätsmodul, um zuzulassen, dass ein Codemodul einer Architektur ein Bibliotheksmodul einer anderen Architektur verwendet
DE102010035603A1 (de) Bereitstellen von Hardwareunterstützung für gemeinsam benutzten virtuellen Speicher zwischen physischem Lokal- und Fernspeicher
DE112016004303T5 (de) Hardware-Vorhersageelement mit geringem Verwaltungsaufwand zur Verringerung der Leistungsumkehr für Kern-zu-Kern-Datenübertragungsoptimierungsbefehle
DE112016007516T5 (de) Vorrichtungen und verfahren für eine prozessorarchitektur
US11550721B2 (en) Method and apparatus for smart store operations with conditional ownership requests
DE112017001700T5 (de) Prozessoren, Verfahren, Systeme und Anweisungen zum Abruf von Daten auf der angegebenen Cache-Ebene mit garantiertem Abschluss
DE102015002254A1 (de) Verfahren und Gerät zum wirksamen Ausführen von Hash-Operationen
DE102018001537A1 (de) System, vorrichtung und verfahren zum selektiven freigeben einer instruktionshandhabung auf lokalitäts-basis
DE112013004800T5 (de) Anweisung zur Bitverschiebung nach links mit Ziehen von Einsen in niedrigwertigere Bit
DE112017001716T5 (de) Speicherkopierbefehle, prozessoren, verfahren und systeme
DE102016006399A1 (de) Hardwarevorrichtungen und verfahren zum durchführen von transaktionaler energieverwaltung
DE202019005686U1 (de) Skalierbare Gesamtspeicherverschlüsselungs-Engine mit mehrfachen Schlüsseln
DE112016005863T5 (de) Minimierung von Snoop-Verkehr lokal und über Kerne auf einem Chip-Mehrkern-Fabric
DE102018130225A1 (de) Entfernte atomare Operationen in Multi-Sockel-Systemen
DE102019119956A1 (de) Architektur und verfahren zur datenparallelen einzelprogramm- mehrfachdaten(spmd)-ausführung

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R016 Response to examination communication
R018 Grant decision by examination section/examining division