DE102018130225A1 - Entfernte atomare Operationen in Multi-Sockel-Systemen - Google Patents

Entfernte atomare Operationen in Multi-Sockel-Systemen Download PDF

Info

Publication number
DE102018130225A1
DE102018130225A1 DE102018130225.8A DE102018130225A DE102018130225A1 DE 102018130225 A1 DE102018130225 A1 DE 102018130225A1 DE 102018130225 A DE102018130225 A DE 102018130225A DE 102018130225 A1 DE102018130225 A1 DE 102018130225A1
Authority
DE
Germany
Prior art keywords
cache line
socket
addressed
requester
rao
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.)
Pending
Application number
DE102018130225.8A
Other languages
English (en)
Inventor
Doddaballapur N. Jayasimha
Samantika S. Sury
Christopher J. Hughes
Jonas Svennebring
Yen-Cheng Liu
Stephen R. Van Doren
David A. Koufaty
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 DE102018130225A1 publication Critical patent/DE102018130225A1/de
Pending 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/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0817Cache consistency protocols using directory methods
    • G06F12/082Associative directories
    • 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/0815Cache consistency protocols
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • 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/0808Multiuser, multiprocessor or multiprocessing cache systems with cache invalidating means
    • 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/0815Cache consistency protocols
    • G06F12/0817Cache consistency protocols using directory methods
    • G06F12/0824Distributed directories, e.g. linked lists of caches
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30047Prefetch instructions; cache control instructions
    • 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/0815Cache consistency protocols
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
    • 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/1008Correctness of operation, e.g. memory ordering
    • 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/1021Hit rate improvement
    • 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/608Details relating to cache mapping

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

Offenbarte Ausführungsformen betreffen entfernte atomare Operationen (RAO, Remote Atomic Operation) in Multi-Sockel-Systemen. In einem Beispiel umfasst ein Verfahren, das von einer Cache-Steuerschaltung eines Requester-Sockels durchgeführt wird, Folgendes: Empfangen des RAO-Befehls vom Requester-CPU-Kern, Bestimmen eines Home-Agenten in einem Home-Sockel für die adressierte Cache-Zeile, Bereitstellen einer Anforderung nach Besitz (RFO, Request for Ownership) der adressierten Cache-Zeile an den Home-Agenten, Warten, bis der Home-Agent entweder eine letzte Kopie der adressierten Cache-Zeile aus einem Cache invalidiert und abruft oder die adressierte Cache-Zeile vom Speicher fetcht, Empfangen einer Bestätigung und der adressierten Cache-Zeile, atomares Ausführen des RAO-Befehls auf der empfangenen Cache-Zeile, anschließendes Empfangen mehrerer lokaler RAO-Befehle an die adressierte Cache-Zeile von einem oder mehreren Requester-CPU-Kernen und Ausführen der mehreren lokalen RAO-Befehle auf der empfangenen Cache-Zeile unabhängig vom Home-Agenten.

Description

  • GEBIET DER ERFINDUNG
  • Das Gebiet der Erfindung betrifft allgemein eine Computerprozessorarchitektur und insbesondere entfernte atomare Operationen in Multi-Sockel-Systemen.
  • HINTERGRUND
  • Eine atomare Speicheroperation ist eine, bei der ein Prozessorkern einen Speicherort lesen, modifizieren und in das zurückschreiben kann, was anderen Kernen als eine einzelne Busoperation erscheint. Eine atomare Speicheroperation in einem Mehrkernsystem ist eine, die nicht in kleinere Teile unterteilt werden kann oder für andere Kerne im System als eine einzelne Operation erscheint. Lesen-Modifizieren-Schreiben ist eine Klasse von atomaren Speicheroperationen, die sowohl einen Speicherplatz liest als auch einen neuen Wert als Teil derselben Operation in diesen schreibt, zumindest wie es anderen Kernen im Mehrkernsystem erscheint. Atomare Operationen sind in vielfältigen Anwendungen vorherrschend, darunter Paketverarbeitung, Hochleistungsrechnen und maschinelles Lernen, und allgemeiner in dynamischen Planungsalgorithmen, um nur einige zu nennen.
  • Innerhalb eines Prozessors können ein oder mehrere Kerne einer zentralen Verarbeitungseinheit (CPU, Central Processing Unit) vorhanden sein, die einen von mehreren Sockeln in einem Multi-Sockel-System belegen können.
  • Die Ausführung atomarer Operationen kann Ineffizienzen aufweisen, insbesondere bei der Konkurrenz um eine gleiche Speicheradresse unter mehreren Sockeln in einem Multi-Sockel-System.
  • Figurenliste
  • Die vorliegende Erfindung wird beispielhaft und nicht einschränkend in den Figuren der beigefügten Zeichnungen veranschaulicht, in denen gleiche Bezugszeichen ähnliche Elemente bezeichnen und in denen:
    • 1A ein Blockflussdiagramm eines Multi-Sockel-Systems zum Ausführen eines Befehls für eine entfernte atomare Operation gemäß einigen Ausführungsformen ist;
    • 1B ein Blockflussdiagramm eines Multi-Sockel-Systems zum Ausführen eines Befehls für eine entfernte atomare Operation gemäß einigen Ausführungsformen ist;
    • 2A ein Blockschaltbild ist, das ein Multi-Sockel-System zum Ausführen eines Befehls für eine entfernte atomare Operation gemäß einigen Ausführungsformen veranschaulicht;
    • 2B ein Blockschaltbild ist, das ein Multi-Sockel-System zum Ausführen eines Befehls für eine entfernte atomare Operation gemäß einigen Ausführungsformen veranschaulicht;
    • 2C ein Blockschaltbild ist, das die Verarbeitung eines empfangenen Befehls für eine entfernte atomare Operation gemäß einigen Ausführungsformen veranschaulicht;
    • 3 ein Blockschaltbild ist, das Verarbeitungskomponenten zum Ausführen von Befehlen für entfernte atomare Operationen gemäß einigen Ausführungsformen veranschaulicht;
    • 4 ein Blockschaltbild ist, das Teile eines Mehrkernprozessors veranschaulicht, der zum Durchführen von RAO-Operationen verwendet werden kann;
    • 5 Teile eines Multi-Sockel-Systems zum Ausführen von Befehlen für entfernte atomare Operationen gemäß einigen Ausführungsformen veranschaulicht;
    • 6A ein physikalisches Speicherabbild mit verschiedenen Speicherregionen veranschaulicht, die gemappt werden, um RAO-Befehle an verschiedenen Speicherorten auszuführen, gemäß einigen Ausführungsformen;
    • 6B ein logisches Speicherabbild veranschaulicht, das Home-Agenten oder Home-Sockel für jeden von mehreren logischen Speicherbereichen gemäß einigen Ausführungsformen identifiziert;
    • 7 ein Blockflussdiagramm ist, das die Ausführung von Befehlen für entfernte atomare Operationen durch ein Multi-Sockel-System gemäß einigen Ausführungsformen veranschaulicht;
    • 8 ein Flussdiagramm ist, das die Ausführung von Befehlen für entfernte atomare Operationen durch eine Cache-Steuerschaltung in einem Multi-Sockel-System gemäß einer Ausführungsform veranschaulicht;
    • 9 ein Flussdiagramm ist, das die Ausführung von Befehlen für entfernte atomare Operationen durch einen Home-Sockel in einem Multi-Sockel-System gemäß einer Ausführungsform veranschaulicht;
    • 10 ein Flussdiagramm ist, das die Ausführung von Befehlen für entfernte atomare Operationen in einem Multi-Sockel-System gemäß einigen Ausführungsformen veranschaulicht;
    • 11 ein Blockschaltbild ist, das ein Format und optionale Parameter für Befehle für entfernte atomare Operationen gemäß einigen Ausführungsformen veranschaulicht;
    • 12A-12B Blockschaltbilder sind, die ein generisches vektorfreundliches Befehlsformat und Befehlsvorlagen davon gemäß Ausführungsformen der Erfindung veranschaulichen;
    • 12A ein Blockschaltbild ist, das ein generisches vektorfreundliches Befehlsformat und Klasse-A-Befehlsvorlagen davon gemäß Ausführungsformen der Erfindung veranschaulicht;
    • 12B ein Blockschaltbild ist, welches das generische vektorfreundliche Befehlsformat und Klasse-B-Befehlsvorlagen davon gemäß Ausführungsformen der Erfindung veranschaulicht;
    • 13A ein Blockschaltbild ist, das ein beispielhaftes spezielles vektorfreundliches Befehlsformat gemäß Ausführungsformen der Erfindung veranschaulicht;
    • 13B ein Blockschaltbild ist, das die Felder des speziellen vektorfreundlichen Befehlsformats veranschaulicht, die das vollständige Opcode-Feld gemäß einer Ausführungsform der Erfindung ausbilden;
    • 13C ein Blockschaltbild ist, das die Felder des speziellen vektorfreundlichen Befehlsformats veranschaulicht, die das Registerindexfeld gemäß einer Ausführungsform der Erfindung ausbilden;
    • 13D ein Blockschaltbild ist, das die Felder des speziellen vektorfreundlichen Befehlsformats veranschaulicht, die das Augmentierungsoperationsfeld gemäß einer Ausführungsform der Erfindung ausbilden;
    • 14 ein Blockschaltbild einer Registerarchitektur gemäß einer Ausführungsform der Erfindung ist;
    • 15A ein Blockschaltbild ist, das sowohl eine beispielhafte In-Order-Pipeline als auch eine beispielhafte Out-of-Order-Issue/Ausführungs-Pipeline mit Registerumbenennung gemäß Ausführungsformen der Erfindung veranschaulicht;
    • 15B ein Blockschaltbild ist, das sowohl eine beispielhafte Ausführungsform eines In-Order-Architekturkerns als auch eines beispielhaften Out-of-Order-Issue/Ausführungs-Architekturkerns mit Registerumbenennung, der in einen Prozessor eingeschlossen werden soll, gemäß Ausführungsformen der Erfindung veranschaulicht;
    • 16A-B ein Blockschaltbild einer spezielleren beispielhaften In-Order-Kernarchitektur veranschaulichen, wobei dieser Kern einer von mehreren logischen Blöcken (die andere Kerne des gleichen Typs und/oder unterschiedlicher Typen umfassen) in einem Chip wäre;
    • 16A ein Blockschaltbild eines einzelnen Prozessorkerns zusammen mit seiner Verbindung zum On-Die-Zwischenverbindungsnetz und mit seinem lokalen Subset des Level-2(L2)-Caches gemäß Ausführungsformen der Erfindung ist;
    • 16B eine erweiterte Ansicht eines Teils des Prozessorkerns aus 16A gemäß Ausführungsformen der Erfindung ist;
    • 17 ein Blockschaltbild eines Prozessors ist, der gemäß Ausführungsformen der Erfindung mehr als einen Kern aufweisen kann, einen integrierten Speichercontroller aufweisen kann und integrierte Grafik aufweisen kann;
    • 18-21 Blockschaltbilder beispielhafter Computerarchitekturen sind;
    • 18 ein Blockschaltbild eines Systems gemäß einer Ausführungsform der vorliegenden Erfindung zeigt;
    • 19 ein Blockschaltbild eines ersten spezielleren beispielhaften Systems gemäß einer Ausführungsform der vorliegenden Erfindung ist;
    • 20 ein Blockschaltbild eines zweiten spezielleren beispielhaften Systems gemäß einer Ausführungsform der vorliegenden Erfindung ist;
    • 21 ein Blockschaltbild eines System-on-a-Chip (SoC) gemäß einer Ausführungsform der vorliegenden Erfindung ist; und
    • 22 ein Blockschaltbild ist, 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
  • In der folgenden Beschreibung werden zahlreiche spezielle Details dargelegt. Es wird jedoch verstanden, dass Ausführungsformen der Erfindung ohne diese speziellen Details umgesetzt werden können. In anderen Fällen werden wohlbekannte Schaltungen, Strukturen und Techniken nicht im Detail gezeigt, um das Verständnis dieser Beschreibung nicht zu verschleiern.
  • Bezugnahmen in der Beschreibung auf „eine einzige Ausführungsform“, „eine Ausführungsform“, „eine beispielhafte Ausführungsform“ usw. zeigen an, dass die beschriebene Ausführungsform ein bestimmtes Merkmal, eine bestimmte Struktur oder eine bestimmte Eigenschaft umfassen kann, jedoch braucht nicht jede Ausführungsform notwendigerweise das bestimmte Merkmal, die bestimmte Struktur oder die bestimmte Eigenschaft zu umfassen. Darüber hinaus beziehen sich derartige Ausdrücke nicht notwendigerweise auf die gleiche Ausführungsform. Ferner wird, wenn ein bestimmtes Merkmal, eine bestimmte Struktur oder eine bestimmte Eigenschaft in Verbindung mit einer Ausführungsform beschrieben wird, vorausgeschickt, dass es innerhalb der Kenntnisse von Fachleuten auf dem Gebiet liegt, ein solches Merkmal, eine solche Struktur oder eine solche Eigenschaft in Verbindung mit anderen Ausführungsformen zu bewirken, ob diese nun ausdrücklich beschrieben sind oder nicht.
  • In der folgenden Beschreibung werden Verfahren, Konfigurationen und verwandte Vorrichtungen für die Verarbeitung von Befehlen für entfernte atomare Operationen (RAO, Remote Atomic Operation) in einer Multi-Sockel-Umgebung offenbart. Unterstützte RAO-Befehle führen jeweils eine atomare Aktualisierungsoperation (z. B. Lesen-Modifizieren-Schreiben) an einem Speicherplatz aus.
  • In einigen Ausführungsformen werden mehrere Prozessoren in einem Multi-Sockel-System in Sockel eingesteckt, bei denen es sich um physikalische Verbinder auf einer gedruckten Leiterplatte handelt, die die Prozessoren mechanisch und elektrisch mit dem Rest des Systems koppeln. In einigen Ausführungsformen verwenden Prozessoren ein Pin-Grid-Array (PGA), bei dem Stifte an der Unterseite des Prozessor-Packages in Löcher am Sockel gesteckt werden und den Prozessor elektrisch mit dem System koppeln. Einige Prozessorhersteller definieren und fertigen Sockel, die auf die Verwendung mit ihren Prozessoren angepasst sind, und spezifizieren Eigenschaften, wie beispielsweise eine Anzahl von Stiften, eine Stärke der Einsteckkraft, Spannungspegel und Takte. In einigen Ausführungsformen sind die mehreren Sockel im Multi-Sockel-System über einen oder mehrere Links in einem Zwischenverbindungsnetz elektrisch verbunden, so dass RAO-Anforderungs- und - Antworttransaktionsflüsse einen oder mehrere Links entlang des Zwischenverbindungsnetzes traversieren. Die mehreren Sockel in einem Multi-Sockel-System kommunizieren Transaktionen über einen oder mehrere Links, welche die Sockel verbinden.
  • In einigen Ausführungsformen sind mehrere Prozessoren in einem Multi-Prozessor-System elektrisch mit dem System gekoppelt, werden jedoch nicht in einen Sockel gesteckt. Beispielsweise können Prozessoren mit einer Ball-Grid-Array(BGA)-Schnittstelle auf eine Hauptplatine gelötet werden. Derartige Ausführungsformen, die Oberflächenmontageprozessoren verwenden, arbeiten auf die gleiche Weise wie die hierin beschriebenen Multi-Sockel-Systeme.
  • Einige offenbarte Ausführungsformen verarbeiten RAO-Befehle in Multi-Sockel-Systemen durch Exportieren von RAO-Transaktionen über das Multi-Sockel-Cache-Kohärenzprotokoll an den Home-Caching-Agenten oder den Home-Speichercontroller. 1A veranschaulicht eine Ausführungsform, die RAO-Befehle in einem Multi-Sockel-System unterstützt, in dem der Sockel X (Requester) 102 (der Requester-Sockel) einen RAO-Befehl an eine Speicheradresse A ausführen möchte, die in einer logischen Speicherpartition liegt, die zum Sockel Y (Home) 104 gemappt wird. Der Sockel Y (Home) 104 ist somit das designierte „Home“ für Zugriffe auf diesen logischen Speicherbereich. Der Sockel X (Requester) 102 bestimmt, dass der Sockel Y (Home) 104 der designierte Home-Agent ist, und stellt bei 106 einen RAO-Befehl an den Sockel Y (Home) 104 über eine Schnittstelle bereit, die gemappt wird, um ein Multi-Sockel-Cache-Kohärenzprotokoll zu verwenden. Es ist zu beachten, dass das Traversieren von einem Sockel zu einem anderen, wie durch die Pfeile 106 und 108 veranschaulicht, durch einen oder mehrere Hops unter Verwendung von einem oder mehreren Links der Zwischenverbindungspfade der Multi-Sockel-Architektur erzielt wird. Einige Beispiele der Interkonnektivität sind in 2A, 2B und 2C veranschaulicht.
  • Der Sockel Y (Home) 104 greift dann entweder in seiner Cache-Hierarchie oder vom physikalischen Speicher auf die adressierte Cache-Zeile zu, führt die RAO-Operation an den adressierten Daten durch und bestätigt Abschlüsse, indem dem Sockel X (Requester) 102 bei 108 ein ACK zurückgesendet wird. Die in 1A veranschaulichte Ausführungsform erfordert jedoch, dass das Multi-Sockel-Cache-Kohärenzprotokoll des Systems RAO-Befehle versteht und verarbeitet. Ferner kann in Szenarien, wenn der Sockel X (Requester) 102 mehrere RAO-Befehle an die Adresse A ausgibt, das Bereitstellen einer RAO an den Sockel Y (Home) 104 und das Warten auf eine Bestätigung vom Sockel Y (Home) 104 für jeden einzelnen zu einem Overhead und einer daraus resultierenden Leistungsverschlechterung in Sockel X und im gesamten Multi-Sockel-System führen.
  • Einige offenbarte Ausführungsformen verarbeiten RAO-Befehle, die zu einem Home-Agenten in einem entfernten Sockel mappen, indem die Daten und den Besitz in die verteilte gemeinsam genutzte Cache-Steuerschaltung des anfordernden Sockels gebracht werden, als ob es sich um eine reguläre atomare Operation handeln würde, aber sobald sie sich erst einmal in der gemeinsam genutzten Cache-Steuerschaltung befindet, wird sie an Ort und Stelle an der lokalen Cache-Steuerschaltung des lokalen Sockels verarbeitet. Dieser Ansatz bietet den Vorteil, dass eine Cache-Zeile im Cache der Cache-Steuerschaltung durch mehrere RAO-Operationen von verschiedenen Kernen auf demselben Sockel an Ort und Stelle gehalten wird, ohne dass die Transaktionen über die Zwischenverbindung zum entfernten Home-Agent exportiert werden müssen (das Exportieren von Transaktionen hat Auswirkungen auf die Leistung, indem die Latenz dieser Transaktionen erhöht wird und die Zwischenverbindungsbandbreite verbraucht wird). Mit anderen Worten führen einige offenbarte Ausführungsformen RAO-Aktualisierungen an den Cache-Steuerschaltungen des anfordernden Sockels durch. Somit behandeln einige offenbarte Ausführungsformen eine entfernte atomare Operation als eine lokale atomare Operation, wenn sie die Sockelgrenze überschreitet, bringen die Daten in die Cache-Steuerschaltung des lokalen Sockels und führen sie dann bei der lokalen Cache-Steuerschaltung aus, als würde es sich um eine entfernte atomare Operation handeln, die zum lokalen Sockel gemappt wird.
  • Obgleich der Kern, der eine RAO für einen entfernten Sockel durchführt, immer noch eine sockel übergreifende Latenz erleiden muss, um die Daten in seine eigene Cache-Steuerschaltung zu fetchen, können nachfolgende RAOs vom selben Sockel in der Cache-Steuerschaltung treffen und die RAOs dort mit hohem Durchsatz und niedriger Latenz ausführen. 1B ist ein Blockflussdiagramm eines Multi-Sockel-Systems zum Ausführen eines Befehls für eine entfernte atomare Operation gemäß einigen Ausführungsformen. Wie gezeigt, stellt der Sockel X (Requester) 152 eine Anforderung nach Besitz (RFO, Request for Ownership) an Adresse A bei 156 bereit, um die adressierte Cache-Zeile und ihren Besitz unter Verwendung des vorhandenen Cache-Kohärenzprotokolls des Multi-Sockel-Systems zu erhalten. Es ist zu beachten, dass RAO-Transaktionen von einem Sockel zu einem anderen, wie durch die Pfeile 156 und 158 veranschaulicht, unter Verwendung von einem oder mehreren Hops entlang einem oder mehrerer Links der Zwischenverbindungspfade der Multi-Sockel-Architektur traversieren. Bei 158 stellt der Sockel Y (Home) 154 die angeforderte Cache-Zeile und eine Bestätigung an den Sockel X (Requester) 152 bereit, der dann mehrere RAO-Befehle an die Cache-Zeile durchführen kann, ohne den Sockel Y (Home) 154 zu involvieren. In vielen parallelen Programmen werden konkurrierende Threads auf demselben Sockel gemeinsam untergebracht, wenigstens temporär. Indem die Cache-Zeile und ihr Besitz in den Requester-Sockel eingebracht werden, werden bei der Ausführungsform aus 1B unnötige sockelübergreifende Transaktionen vermieden.
  • Offenbarte Ausführungsformen begünstigen die Ausführung von RAO-Befehlen vom lokalen Sockel aus, stellen jedoch einen Fairness- und Anti-Starvation-Mechanismus bereit (wie im Abschnitt „Verhindern von Verhungern von Anforderungen von entfernten Sockeln“ beschrieben), der den Vorwärtsfortschritt von RAO-Befehlen von anderen Sockeln in einer Konkurrenzsituation ermöglichen würde. In einigen Ausführungsformen versuchen andere Sockel, den Besitz einer Cache-Zeile unter Verwendung einer Transaktion zur Anforderung nach Besitz (RFO, Request for Ownership) gemäß dem Cache-Kohärenzprotokoll zu erhalten. In einigen Ausführungsformen unterscheiden sich die RFO-Anforderungen anderer Sockel, die infolge von RAO-Befehlen generiert werden, von anderen RFO-Anforderungen und werden anders behandelt als diese.
  • Es wird erwartet, dass offenbarte Ausführungsformen die Leistung von RAO-Operationen verbessern, insbesondere für Systeme mit großen Kernzahlen und Netzanwendungen, wie beispielsweise Paketverarbeitung. Es wird auch erwartet, dass offenbarte Ausführungsformen die Leistung von entfernten atomaren Operationen in Dual-Sockel-Systemen, Quad-Sockel-Systemen und Multi-Sockel-Systemen mit größerer Anzahl, die immer beliebter werden, verbessern. Der Fluss dieser Operationen wird weiter unten veranschaulicht und beschrieben, einschließlich unter Bezugnahme auf die 7-10.
  • 2A ist ein Blockschaltbild, das ein Multi-Sockel-System zum Ausführen eines Befehls für eine entfernte atomare Operation gemäß einigen Ausführungsformen veranschaulicht. Wie gezeigt, umfasst das Multi-Sockel-System den Sockel 0 201, der die Kerne 202A-M, den Last-Level-Cache (LLC) 202X und die Cache-Steuerschaltung 202 umfasst; Sockel 1 203, der die Kerne 204A-N, den Last-Level-Cache (LLC) 204X und die Cache-Steuerschaltung 204 umfasst; Sockel 2 205, der die Kerne 206A-O, den Last-Level-Cache (LLC) 206X und die Cache-Steuerschaltung 206 umfasst; und Sockel 3 207, der die Kerne 208A-P, den Last-Level-Cache (LLC) 208X und die Cache-Steuerschaltung 208 umfasst. RAO-Transaktionen traversieren von einem Sockel zu einem anderen unter Verwendung von einem oder mehreren Hops unter Verwendung von einem oder mehreren Links der Zwischenverbindung der Multi-Sockel-Architektur.
  • Es ist zu beachten, dass die Cache-Steuerschaltungen 202, 204, 206 und 208 logische Repräsentationen von Cache-Steuerschaltungen sind, wie beispielsweise CHA 414 (4), die mehrere physikalische Komponenten aufweisen. In ähnlicher Weise sind die Last-Level-Caches 202X, 204X, 206X und 208X logische Repräsentationen von Last-Level-Cache-Schaltungen, die mehrere Komponenten und Schaltungen aufweisen, die möglicherweise in Partitionen unterteilt sind.
  • Wie veranschaulicht, sind die Sockel 0-3 in einer Crossbar-Konfiguration verbunden, wodurch gemäß einigen Ausführungsformen direkte Verbindungen zwischen den Cache-Steuerschaltungen 202, 204, 206 und 208 ermöglicht werden. RAO-Transaktionen traversieren von einem Sockel zu einem anderen unter Verwendung von einem oder mehreren Hops unter Verwendung von einem oder mehreren Links der Zwischenverbindungspfade der Multi-Sockel-Architektur. In einigen Ausführungsformen führt die Cache-Steuerschaltung in jedem der Sockel 0-3 eine Discovery durch, um die Topologie des Systems zu erlernen.
  • In einigen Ausführungsformen sind die Sockel 0-3 jeweils auf einer gedruckten Leiterplatte angeordnet, wobei die Sockel in einer Crossbar-Konfiguration verbunden sind. In einigen Ausführungsformen sind zwei oder mehr Prozessoren, die gemäß hierin offenbarten Ausführungsformen arbeiten, in die Sockel eingesteckt. Ein Multi-Sockel-System, wie es in 2A veranschaulicht ist, wird manchmal als ein Multi-Prozessor-System bezeichnet. Ein Multi-Sockel-System mit zwei Sockeln wird manchmal als ein Dual-Sockel-System bezeichnet.
  • Multi-Sockel-Systeme zum Ausführen von entfernten atomaren Operationen gemäß hierin offenbarten Ausführungsformen werden im Folgenden unter Bezugnahme auf die 18-22 weiter veranschaulicht und erörtert.
  • 2B ist ein Blockschaltbild, das ein Multi-Sockel-System zum Ausführen eines Befehls für eine entfernte atomare Operation gemäß einigen Ausführungsformen veranschaulicht. Wie gezeigt, umfasst das Multi-Sockel-System den Sockel 0 211, der die Kerne 212A-M, den Last-Level-Cache (LLC) 212X und die Cache-Steuerschaltung 212 umfasst; Sockel 1 213, der die Kerne 214A-N, den Last-Level-Cache (LLC) 214X und die Cache-Steuerschaltung 214 umfasst; Sockel 2 215, der die Kerne 216A-O, den Last-Level-Cache (LLC) 216X und die Cache-Steuerschaltung 216 umfasst; und Sockel 3 217, der die Kerne 218A-P, den Last-Level-Cache (LLC) 218X und die Cache-Steuerschaltung 218 umfasst. RAO-Transaktionen traversieren von einem Sockel zu einem anderen unter Verwendung von einem oder mehreren Hops unter Verwendung von einem oder mehreren Links der Zwischenverbindungspfade der Multi-Sockel-Architektur.
  • Es ist zu beachten, dass die Cache-Steuerschaltungen 212, 214, 216 und 218 logische Repräsentationen von Cache-Steuerschaltungen sind, wie beispielsweise CHA 314 (4), die mehrere physikalische Komponenten aufweisen. In ähnlicher Weise sind die Last-Level-Caches 212X, 214X, 216X und 218X logische Repräsentationen von Last-Level-Cache-Schaltungen, die mehrere Komponenten und Schaltungen aufweisen, die möglicherweise in mehrere Partitionen unterteilt sind.
  • Wie veranschaulicht, sind die Sockel 0-3 in einer Ringkonfiguration verbunden, die direkte Verbindungen zwischen jeder der Sockel-Cache-Steuerschaltungen 212, 214, 216 und 218 und ihren benachbarten Sockeln gemäß einigen Ausführungsformen ermöglichen. In einigen Ausführungsformen führt die Cache-Steuerschaltung in jedem der Sockel 0-3 eine Discovery durch, um die Topologie des Systems zu erlernen.
  • In einigen Ausführungsformen sind die Sockel 0-3 jeweils in einem Sockel auf einer gedruckten Leiterplatte angeordnet, wobei die Sockel in einer Ringkonfiguration verbunden sind. In einigen Ausführungsformen weist eine gedruckte Leiterplatte vier Sockel auf, die in einer Ringkonfiguration miteinander verbunden sind, wobei zwei oder mehr Sockel einen Prozessor aufweisen, der gemäß hierin offenbarten Ausführungsformen eingesteckt ist und arbeitet. Ein Multi-Sockel-System, wie es in 2B veranschaulicht ist, wird manchmal als ein Multi-Prozessor-System bezeichnet. Ein Multi-Sockel-System mit vier Sockeln wird manchmal als ein Quad-Sockel-System bezeichnet.
  • Multi-Sockel-Systeme zum Ausführen von entfernten atomaren Operationen gemäß hierin offenbarten Ausführungsformen werden im Folgenden unter Bezugnahme auf die 18-22 weiter veranschaulicht und erörtert.
  • 2C ist ein Blockschaltbild, das ein Multi-Sockel-System zum Ausführen eines Befehls für eine entfernte atomare Operation gemäß einigen Ausführungsformen veranschaulicht. Wie gezeigt, weist das Multi-Sockel-System mehrere Sockel auf, die logisch als Sockel 0 221, Sockel 1 222, Sockel 2 223, Sockel 3 224, Sockel 4 225, Sockel 5 226, Sockel 6 227 und Sockel 7 228 veranschaulicht sind. RAO-Transaktionen traversieren von einem Sockel zu einem anderen unter Verwendung von einem oder mehreren Hops unter Verwendung von einem oder mehreren Links der Zwischenverbindungspfade der Multi-Sockel-Architektur.
  • Wie veranschaulicht, sind die Sockel 0-7 in einem Hybrid von einer Crossbar-Verbindung und einer Ringkonfiguration verbunden, wodurch einige direkte Verbindungen und einige indirekte Verbindungen zwischen den Sockeln 0-7 221-228 ermöglicht werden. Insbesondere ist jeder der Sockel 0-7 mit genau drei anderen Sockeln gekoppelt.
  • In einigen Ausführungsformen sind die Sockel 0-7 jeweils auf einer gedruckten Leiterplatte angeordnet und in einem Hybrid von der Crossbar-Verbindung und der Ringkonfiguration verbunden. In einigen Ausführungsformen weist eine gedruckte Leiterplatte acht Sockel auf, die miteinander verbunden sind, wie in 2C veranschaulicht. Ein Multi-Sockel-System, wie es in 2C veranschaulicht ist, wird manchmal als ein Multi-Prozessor-System bezeichnet. Ein Multi-Sockel-System mit acht Sockeln wird manchmal als ein Octa-Sockel-System bezeichnet. In einigen Ausführungsformen enthält eine gedruckte Leiterplatte acht oder mehr Sockel, wobei ein Prozessor in jeden von zwei, drei, vier, fünf, sechs, sieben oder mehr der Sockel eingesteckt ist.
  • Multi-Sockel-Systeme zum Ausführen von entfernten atomaren Operationen gemäß hierin offenbarten Ausführungsformen werden im Folgenden unter Bezugnahme auf 18 bis 22 weiter veranschaulicht und erörtert.
  • 3 veranschaulicht eine Ausführungsform einer Hardware zum Verarbeiten eines RAO-Befehls. Wie veranschaulicht, speichert der Codespeicher 303 einen RAOOPMEMREG-Befehl 301 zur Ausführung. Der Befehl wird von der Fetch-Schaltung 304 gefetcht und dann von der Decodierschaltung 306 decodiert. Der Befehl 301 weist Felder für einen Opcode, eine Zielspeicherkennung zur Angabe eines Speicherziels und möglicherweise zusätzliche Felder und Operanden auf, wie weiter unten unter Bezugnahme auf 11, 12A-B und 13A-D beschrieben. Die Decodierschaltung 306 decodiert den Befehl in eine oder mehrere Operationen. In einigen Ausführungsformen umfasst diese Decodierung das Generieren einer Mehrzahl von Mikrooperationen, die von Ausführungsschaltungen (wie beispielsweise der Ausführungsschaltung 309) auszuführen sind. Die Decodierschaltung 306 decodiert auch Befehlspräfixe (falls verwendet).
  • In einigen Ausführungsformen stellen die Registerumbenennung, Registerzuweisung und/oder die Planungsschaltung 307 Funktionalität für eines oder mehrere der Folgenden bereit: 1) Umbenennen logischer Operandenwerte in physikalische Operandenwerte (z. B. in einigen Ausführungsformen eine Registeralias-Tabelle), 2) Zuweisen von Statusbits und Flags zum decodierten Befehl und 3) Planen des decodierten Befehls zur Ausführung auf einer Ausführungsschaltung aus einem Befehlspool heraus (z. B. bei einigen Ausführungsformen unter Verwendung einer Reservierungsstation).
  • Register (Registerdatei) und/oder Speicher 308 speichern Daten als Operanden des Befehls, der von Ausführungsschaltungen bearbeitet werden soll. Beispielhafte Registertypen umfassen gepackte Datenregister, Universalregister und Gleitkommaregister.
  • Die Ausführungsschaltung 309 führt den decodierten RAOOPMEMREG-Befehl aus. Einige Ausführungsformen der Ausführungsschaltung werden unter Bezugnahme auf die 7-10 gezeigt und beschrieben. Die Rückschreibschaltung 311 führt ein Commit des Ergebnisses der Ausführung des decodierten RAOOPMEMREG-Befehls aus. Die Rückschreibschaltung 311 ist optional, wie durch ihren gestrichelten Rand angezeigt, insofern als der RAOOPMEMREG-Befehl möglicherweise nicht zurückgeschrieben wird oder zu einem anderen Zeitpunkt zurückgeschrieben wird.
  • 4 ist ein Blockschaltbild, das Teile eines Mehrkernprozessors veranschaulicht, der zum Durchführen von RAO-Operationen verwendet werden kann. Wie gezeigt, weist der Prozessor 400 die Kerncluster 402A-N auf, von denen jeder die Schaltungen 404 aufweist, die Fetchen, Decodierung, Planung, Ausführung, arithmetisch-logische Einheiten (ALUs, Arithmetic-Logic Units) und Register umfassen. Jeder der Kerncluster 402A-N weist auch die Lade/Speicher-Einheit (LSU, Load/Store Unit) 406, Level-1/Level-2(L1/L2)-Caches 408 und die Busschnittstelleneinheit (BIU, Bus Interface Unit) 410 auf. Der Prozessor 400 weist auch den Caching- und Home-Agenten (CHA) 414 auf, einschließlich Ingress 416, Speicherdatenpuffer SD 418, Tabelle der Anforderungen (TOR, Table of Requests) 420, Home-Agent (HA) 422, Call-Pipe 424 und Home-Agent(HA)-Pipe 426. Die Intra-Die-Zwischenverbindung (IDI, Intra Die Interconnect) 412 koppelt den Kerncluster 402 mit dem CHA 414. Auch gezeigt sind der Snoop-Filter (SF) / Last-Level-Cache (LLC) 428, mit dem der CHA 414 kommuniziert, um den RAO-Befehl zu bedienen. Der CHA 414 wird hierin manchmal als eine Cache-Steuerschaltung bezeichnet.
  • Wo RAo-OPERATIONEN AUSGEFÜHRT WERDEN
  • Ausführungsformen der entfernten atomaren Operationen, wie sie in verschiedenen Ausführungsformen hierin als Befehle definiert sind, können an verschiedenen Stellen im Prozessor ausgeführt werden, wie beispielsweise: an einem oder mehreren der Kerne eines Mehrkernprozessors, an einem privaten Cache, an einem gemeinsam genutzten Cache oder Caching- und Home-Agenten (CHA), am Speichercontroller oder an einem entfernten Sockel in einem Multi-Sockel-System. RAO-Befehle gelten sowohl für Single-Sockel- als auch für Multi-Sockel-Systeme.
  • 5 veranschaulicht Teile eines Multi-Sockel-Systems zum Ausführen von Befehlen für entfernte atomare Operationen gemäß einigen Ausführungsformen. Wie gezeigt, weist das System 500 den Sockel X (Requester) 570 und den Sockel Y (Home) 580 auf, die in einigen Ausführungsformen physikalische Sockel auf einer gedruckten Leiterplatte sind, wobei jeder Sockel einen Mehrkernprozessor aufnimmt. Der Sockel X (Requester) 570 und der Sockel Y (Home) 580 weisen jeweils integrierten Speicher und E/A-Steuerlogik (IMC, Integrated Memory and I/O Control Logic) 572 und 582 auf. Der Sockel X (Requester) 570 und der Sockel Y (Home) 580 weisen jeweils einen oder mehrere Kerne 574 und 584, Caching- und Home-Agenten (CHA) 575 und 585, Last-Level-Cache (LLC) 577 und 587 und Punkt-zu-Punkt-Schnittstellen 576, 578, 588 und 586 auf. Das System 500 weist ferner den Chipsatz 590 auf, der die Punkt-zu-Punkt-Schnittstellen 594 und 598 und die Hochleistungsschnittstellen 592 und 596 aufweist, um mit dem Bus 516 und dem optionalen Sockel N 538 zu kommunizieren. Das System 500 weist zusätzliche Komponenten auf, zum Beispiel wie nachstehend unter Bezugnahme auf 18 bis 22 veranschaulicht und erörtert, die der Klarheit halber nicht in 5 gezeigt sind.
  • In einigen Ausführungsformen spiegelt die zum Durchführen eines RAO-Befehls ausgewählte Ausführungsschaltung eine statische Auswahl wider, beispielsweise durch einen Hardwaredesigner ausgewählt, der das System 500 entwirft. Jeder der mehreren Kerne 574 und 584 kann mit einem Caching- und Home-Agenten (CHA) assoziiert sein, beispielsweise CHA 575 und CHA 585, der den entfernten atomaren Befehl ausführt.
  • Mit anderen Worten wird die Stelle, an der die entfernte atomare Operation ausgeführt wird, in einigen Ausführungsformen statisch vom Hardwaredesigner, statisch durch Software oder dynamisch durch den RAO-Befehl ausgewählt. In einigen Ausführungsformen wird der Ort, an dem die entfernte atomare Operation ausgeführt werden soll, von jedem Befehl ausgewählt, einschließlich eines Immediates, um anzuzeigen, wo der Befehl ausgeführt werden soll. In einigen Ausführungsformen weist der Prozessor ein softwareprogrammierbares Steuerregister auf, das durch Software festgelegt werden soll, um anzuzeigen, wo RAO-Befehle ausgeführt werden sollen. In einigen Ausführungsformen weist der Prozessor separate softwareprogrammierbare Steuerregister auf, die durch Software für verschiedene Befehle (z. B. ADD und CMPXCHG) oder verschiedene Befehlsgruppen festgelegt werden sollen, um anzuzeigen, wo der RAO-Befehl auszuführen ist. In einigen Ausführungsformen weist der Prozessor separate softwareprogrammierbare Steuerregister für jeden unterschiedlichen Typ von Befehl oder Befehlsgruppe auf, wobei die Steuerregister durch Software festgelegt werden sollen, um anzuzeigen, wo der RAO-Befehl auszuführen ist. In einigen Ausführungsformen weist der Prozessor separate Steuerungen für verschiedene Befehle oder Befehlsgruppen auf.
  • In einigen Ausführungsformen verwendet der Prozessor einige Informationen von der Hardware, um den besten Ort zum Ausführen eines RAO-Befehls vorherzusagen. In derartigen Ausführungsformen verwendet der Prozessor sowohl die von der Hardware empfangenen Informationen als auch die von der Software bereitgestellten Steuerungen (z. B. als Teil des Befehls, als ein Steuerregister, als Teil eines Seitentabelleneintrags oder als Teil eines Mappings von Systemsockeln zu logischen Speicherbereichen, wie unter Bezugnahme auf die 6A und 6B veranschaulicht und erörtert), um zu bestimmen, wo der RAO-Befehl ausgeführt werden soll. In derartigen Ausführungsformen sind die von der Software bereitgestellten Steuerungen eher ein Hinweis als eine Anweisung.
  • In einigen Ausführungsformen wird eine Eigenschaft zu Adressen hinzugefügt (z. B. im Seitentabelleneintrag), die anzeigt, wo RAO-Befehle für diese Adressen ausgeführt werden sollten. 6A und 6B und ihre zugehörigen Erörterungen veranschaulichen ein Mapping von Systemsockeln, die als ein Home-Agent für verschiedene logische Speicherbereiche dienen.
  • 6A veranschaulicht ein RAO-Ausführungsabbild, um RAO-Befehle zu verschiedenen Speicherbereichen zu verschiedenen RAO-Ausführungsschaltungen gemäß einigen Ausführungsformen zu mappen. Wie gezeigt, weist das RAO-Ausführungsabbild 600 Mappings für den logischen Adressbereich 1602, den logischen Adressbereich 2 604, den logischen Adressbereich 3 606 und den logischen Adressbereich N 608 auf.
  • Wie gezeigt, sollen RAO-Befehle mit einer Zielkennung, die auf eine logische Adresse in der Region des Adressbereichs 1 602 zeigt, Ausführungsschaltungen in einem angegebenen CPU-Kern im selben Prozessor wie der Kern, der den RAO-Befehl ausgibt, verwenden. Unter Bezugnahme auf 4 kann zum Beispiel einer der Kerne 402, der einen RAO-Befehl an eine Adresse innerhalb des Adressbereichs 1 ausgibt, programmiert sein, um den RAO-Befehl zur Ausführung durch einen anderen der Kerne 402 auszugeben.
  • Wie gezeigt, sollen RAO-Befehle mit einer Zielkennung, die auf eine logische Adresse in der Region des Adressbereichs 2 604 zeigt, Ausführungsschaltungen in einer Cache-Steuerschaltung des Prozessors mit dem Kern, der den RAO-Befehl ausgibt, verwenden. Beispielsweise kann einer der Kerne 402 (4), der einen RAO-Befehl an eine Adresse innerhalb des Adressbereichs 2 ausgibt, programmiert sein, um den RAO-Befehl zur Ausführung durch die Cache-Steuerschaltung (CHA) 414 (4) auszugeben.
  • Wie gezeigt, sollen RAO-Befehle mit einer Zielkennung, die auf eine logische Adresse in der Region des Adressbereichs 3 604 zeigt, Ausführungsschaltungen in einer Cache-Steuerschaltung in einem anderen Sockel verwenden. Beispielsweise kann einer der Kerne 402 (4), der einen RAO-Befehl an eine Adresse innerhalb des Adressbereichs 3 ausgibt, programmiert sein, um den RAO-Befehl zur Ausführung durch die Cache-Steuerschaltung (CHA) 414 (4) auszugeben, die in einem anderen Prozessor (Sockel) ist.
  • In einigen Ausführungsformen wird das Mapping von jeder Speicherregion auf eine Ausführungsschaltung implementiert, indem ein Seitentabelleneintrag hinzugefügt wird, der angibt, wo RAO-Befehle, die an diese Region gerichtet sind, ausgeführt werden sollen. In einigen Ausführungsformen wird das Mapping von jeder Speicherregion auf eine Ausführungsschaltung durch Speichern eines Mappings von Speicherregionen auf Ausführungsschaltungen im Speicher implementiert. In einigen Ausführungsformen eines Multi-Prozessor-Systems (Multi-Sockel-Systems) verwaltet jeder Prozessor eine Kopie des RAO-Ausführungsabbilds 600 in seinem zugehörigen Speicher, beispielsweise verwaltet unter Bezugnahme auf 5 der Sockel X (Requester) 570 eine Kopie des RAO-Ausführungsabbilds 600 in seinem zugehörigen Speicher 532,und der Sockel Y (Home) 580 verwaltet eine Kopie des RAO-Ausführungsabbilds 600 in seinem zugehörigen Speicher 534.
  • 6B veranschaulicht ein logisches Speicherabbild, das für jeden von mehreren logischen Speicherbereichen einen entsprechenden Home-Agenten (z. B. einen Caching-Agenten und einen Speicheragenten in einem Home-Sockel) identifiziert, der auf den logischen Adressbereich gemappt wird, gemäß einigen Ausführungsformen. Wie gezeigt, identifiziert das Home-Agent-Abbild 650 den Sockel 1 652 als den Home-Agenten (z. B. in einem Home-Sockel) für den logischen Adressbereich 1654, den Sockel 2 656 als den Home-Agenten (z. B. in einem Home-Sockel) für den logischen Adressbereich 2 658, den Sockel 3 660 als den Home-Agenten (z. B. in einem Home-Sockel) für den logischen Adressbereich 3 662 und den Sockel 4 664 als den Home-Agenten (z. B. in einem Home-Sockel) für den logischen Adressbereich 4 666. In einigen Ausführungsformen wird das Home-Agent-Abbild 650 an einem vorbestimmten Speicherplatz gespeichert, auf den ein CPU-Kern, wenn ein RAO-Befehl ausgegeben wird, oder eine Cache-Steuerschaltung, wenn der RAO-Befehl verarbeitet wird, zugreifen soll. In einigen Ausführungsformen werden mehrere Kopien des Home-Agent-Abbilds 650 in mehreren Speichern gespeichert, die jeweils mit jedem von mehreren Sockeln assoziiert sind. In einigen Ausführungsformen eines Multi-Sockel-Systems (Multi-Prozessor-Systems) verwaltet jeder Sockel eine Kopie des Mappings in seinem zugehörigen Speicher, beispielsweise verwaltet unter Bezugnahme auf 5 der Sockel X (Requester) 570 eine Kopie des Home-Agent-Abbilds 650 in seinem zugehörigen Speicher 532, und der Sockel Y (Home) 580 verwaltet eine Kopie des Home-Agent-Abbilds 650 in seinem zugehörigen Speicher 534.
  • Nun wird der Operationsablauf veranschaulicht, wenn ein RAO-Befehl am anfordernden Sockel ausgeführt wird. Beim Betrieb greift ein CPU-Kern bei der Ausgabe eines RAO-Befehls an eine gegebene logische Adresse oder eine Requester-Cache-Steuerschaltung bei der Verarbeitung des RAO-Befehls auf das Home-Agent-Abbild 650 zu, um einen Home-Agenten (z. B. in einem Home-Sockel) zu bestimmen, beispielsweise bei Block 804 (8) oder Block 1004 (10), an den der RAO-Befehl bereitgestellt werden soll.
  • 7 ist ein Blockflussdiagramm, das die Ausführung von Befehlen für entfernte atomare Operationen durch ein Multi-Sockel-System gemäß einigen Ausführungsformen veranschaulicht. Wie gezeigt, weist das System 700 den Sockel X (Requester) 702 auf, der den Kern 0 704, den Kern 1 706 und die Requester-Cache-Steuerschaltung 708 aufweist. Das System 700 weist ferner den Sockel Y (Home) 712 auf, der den Kern 2 714, den Kern 3 716 und die Home-Cache-Steuerschaltung 718 aufweist. Das System 700 weist ferner den Sockel Z 720 auf, der den Kern 4 722, den Kern 5 724 und die Z-Cache-Steuerschaltung 726 aufweist. 7 weist nummerierte Pfeile auf, die jeweils eine Aktion angeben, die als Teil der Ausführung einer entfernten atomaren Operation ausgeführt wird.
  • Beginnend mit dem als ,1' bezeichneten Pfeil generiert der Kern 0 704 einen RAO-Befehl an die Adresse A zur Requester-Cache-Steuerschaltung 708 und stellt diesen bereit. Die Adresse A adressiert eine Cache-Zeile im Speicher. Die Requester-Cache-Steuerschaltung 708 bestimmt, dass der Sockel Y (Home) 712 der Home-Sockel für den Speicherplatz für Adresse A ist, und generiert bei Pfeil 2 eine Anforderung nach Besitz (RFO, Request for Ownership) an die Home-Cache-Steuerschaltung 718 von Sockel Y (Home) 712 und stellt diese bereit. In Reaktion darauf weist die Home-Cache-Steuerschaltung 718 bei Pfeil 3 nach dem Bestimmen, dass der Sockel Z 720 eine modifizierte Kopie der adressierten Cache-Zeile aufweist, den Sockel Z 720 an, die adressierte Cache-Zeile zu invalidieren. Nach dem Invalidieren der Cache-Zeile veranlasst der Sockel Z 720 bei Pfeil 4, dass die modifizierten Cache-Zeilen-Daten an die Home-Cache-Steuerschaltung 718 zurückgegeben werden, die bei den Pfeilen 5 und 6 jeweils eine Bestätigung und die modifizierten Daten an die Requester-Cache-Steuerschaltung 708 von Sockel X (Requester) 702 zurückgibt. An diesem Punkt repräsentieren die modifizierten Daten systemweit die neueste Version der adressierten Cache-Zeile. In einigen Ausführungsformen würde, wenn der Sockel Z 720 eine gemeinsam genutzte Kopie der adressierten Cache-Zeile aufweist und diese nicht modifiziert hat, eine Bestätigung bei Pfeil 4 ohne modifizierte Daten bereitgestellt werden. In einigen Ausführungsformen gibt der Sockel Z 720 die adressierte Cache-Zeile an den Sockel Y (Home) 712 zurück, egal ob modifiziert oder nicht. Bei Block 7 führen die Ausführungsschaltungen die angegebene Operation des RAO-Befehls an den Daten durch, und bei Pfeil 8 wird eine Bestätigung an den Kern 0 704 zurückgegeben.
  • Wenn der Sockel X (Requester) 702 den Besitz der von A adressierten Cache-Zeile etabliert hat, können weitere mehrere lokale RAO-Befehle an die Adresse A am Sockel X (Requester) 702 unabhängig vom Home-Sockel ausgeführt werden. Bei den Pfeilen 9 und 11 werden mehrere lokale RAO-Befehle zur Adresse A von der Requester-Cache-Steuerschaltung 708 jeweils vom Kern 0 704 und Kern 1 706 empfangen. Während die mehreren lokal empfangenen RAO-Befehle ausstehen, wird bei Pfeil 10 eine Anforderung nach Besitz (RFO, Request for Ownership) von der Requester-Cache-Steuerschaltung 708 von der Home-Cache-Steuerschaltung 718 von Sockel Y (Home) 712 empfangen.
  • Bei Block 12 arbitriert die Requester-Cache-Steuerschaltung 708 zwischen den drei ausstehenden RAO-Befehlen. In einigen Ausführungsformen, wie hier, bevorzugt die Requester-Cache-Steuerschaltung 708 die mehreren lokalen ausstehenden RAO-Befehle gegenüber eingehenden RFO-Anforderungen von entfernten Sockeln. Wie weiter unten beschrieben, versucht die Requester-Cache-Steuerschaltung 708 zu verhindern, dass der entfernte Sockel verhungert, indem der ausstehende RAO-Befehl an Adresse A insgesamt ignoriert wird (wie im Abschnitt „Verhindern von Verhungern von Anforderungen von entfernten Sockeln“ beschrieben). Dementsprechend führt die Requester-Cache-Steuerschaltung 708 bei Block 13 und Pfeil 14 die vom ersten ausstehenden RAO-Befehl angeforderte Operation atomar durch und gibt eine Bestätigung an den Kern 0 704 zurück.
  • Bei Block 15 arbitriert die Requester-Cache-Steuerschaltung 708 zwischen den zwei noch ausstehenden RAO-Befehlen vom Kern 1 706 und von der Home-Cache-Steuerschaltung 718. Wieder bevorzugt die Requester-Cache-Steuerschaltung 708 in einigen Ausführungsformen, wie hier, lokale ausstehende RAO-Befehle gegenüber eingehenden RFO-Anforderungen von entfernten Sockeln, während versucht wird, zu verhindern, dass der entfernte Sockel verhungert, indem der ausstehende RAO-Befehl an Adresse A insgesamt ignoriert wird (wie im Abschnitt „Verhindern von Verhungern von Anforderungen von entfernten Sockeln“ beschrieben). Dementsprechend führt die Requester-Cache-Steuerschaltung 708 bei Block 16 und Pfeil 17 die vom ausstehenden RAO-Befehl vom Kern 1 706 angeforderte Operation atomar durch und gibt eine Bestätigung an den Kern 1 706 zurück.
  • Bei Block 18, wenn nur der RAO-Befehl von der Home-Cache-Steuerschaltung 718 ausstehend ist, invalidiert die Requester-Cache-Steuerschaltung 708 die von A adressierte Cache-Zeile in Caches innerhalb von Sockel X (Requester) 702 und übergibt den Besitz an Sockel Y (Home) 712. Bei Pfeil 19 stellt die Requester-Cache-Steuerschaltung 708 schließlich eine Bestätigung und die Cache-Zeilen-Daten für die Home-Cache-Steuerschaltung 718 von Sockel Y (Home) 712 bereit.
  • Es sollte verstanden werden, dass zwischen dem Auftreten von Ereignissen, die durch die Pfeile/Blöcke 1-19 identifiziert werden, normale Nicht-RAO-Befehle durch die Kerne 0-5 704, 706, 714, 716, 722 und 724 generiert werden können. Diese Nicht-RAO-Befehle werden gemäß dem normalen Cache-Kohärenzprotokoll des Sockels bedient. Der Einfachheit halber konzentriert sich 7 jedoch auf RAO-Befehle für die Cache-Zeile, die von Adresse A adressiert wird, und veranschaulicht nur diese.
  • 8 ist ein Flussdiagramm, das die Ausführung von Befehlen für entfernte atomare Operationen durch eine Cache-Steuerschaltung in einem Multi-Sockel-System gemäß einer Ausführungsform veranschaulicht.
  • Bei 800 empfängt die Cache-Steuerschaltung in einem Requester-Sockel einen RAO-Befehl an eine Cache-Zeilen-Adresse, generiert von einem Kern einer Requester-Zentralverarbeitungseinheit (CPU, Central Processing Unit) im Requester-Sockel.
  • Bei 802 bestimmt die Cache-Steuerschaltung im Requester-Sockel eine Ausführungsschaltung zum Ausführen des RAO-Befehls. Wie unter Bezugnahme auf 4 veranschaulicht und beschrieben wird, können RAO-Befehle gemäß verschiedenen Ausführungsformen hierin an einer Vielzahl von Stellen in einem Sockel durchgeführt werden, wie beispielsweise: an einem oder mehreren der Kerne, an einem privaten Cache, an einem gemeinsam genutzten Cache oder Caching- und Home-Agenten (CHA), am Speichercontroller oder an einem entfernten Sockel in einem Multi-Sockel-System. Für die Zwecke des in 8 veranschaulichten Prozesses soll der RAO-Befehl von der Cache-Steuerschaltung des Requester-Sockels ausgeführt werden. Eine Ausführungsform zum Bestimmen, wo der RAO-Befehl auszuführen ist, ist unter Bezugnahme auf 6A veranschaulicht und erörtert.
  • 802 ist optional, wie durch seinen gestrichelten Rand angezeigt, insofern als er mit der bei 804 getroffenen Bestimmung kombiniert werden kann oder durch den RAO-Opcode (z. B. RAOHOMECHA) impliziert sein kann.
  • Bei 804 bestimmt die Requester-Cache-Steuerschaltung einen Home-Agenten in einem Home-Sockel für die durch das RAO-Ziel adressierte Cache-Zeile. In einigen Ausführungsformen wird ein Mapping im Speicher gespeichert und es wird darauf zugegriffen, um die Cache-Zeilen-Adresse auf einen bestimmten „Home-Sockel“ abzubilden. Eine Ausführungsform zum Bestimmen des Home-Agenten (Home-Sockel) für eine adressierte Cache-Zeile wird unter Bezugnahme auf 6B veranschaulicht und erörtert.
  • Bei 806 stellt die Requester-Cache-Steuerschaltung dem Home-Agenten (Home-Sockel) eine Anforderung nach Besitz (RFO, Request for Ownership) der adressierten Cache-Zeile bereit, wobei die RFO einem Cache-Kohärenzprotokoll entspricht. Bei 808 wartet die Requester-Cache-Steuerschaltung, bis der Home-Agent entweder eine letzte Kopie der adressierten Cache-Zeile aus einem Cache invalidiert und abruft oder die adressierte Cache-Zeile vom Speicher fetcht. Bei 810 empfängt die Requester-Cache-Steuerschaltung eine Bestätigung und die adressierte Cache-Zeile vom Home-Agenten. Bei 812 führt die Requester-Cache-Steuerschaltung die RAO-Befehlsoperation auf der empfangenen Cache-Zeile atomar und mit einer Speicheranordnungs-Semantik durch, wie durch die zugrunde liegende Architektur bestimmt.
  • In einigen Ausführungsformen veranlasst die Requester-Cache-Steuerschaltung, dass die empfangene Cache-Zeile in einer Cache-Hierarchie des Requester-Sockels gespeichert wird, um nachfolgende RAO-Befehle von einem oder mehreren Requester-CPU-Kernen innerhalb des Requester-Sockels zu bedienen, ohne den Home-Agenten zu involvieren.
  • Bei 814 empfängt die Requester-Cache-Steuerschaltung anschließend mehrere lokale RAO-Befehle an die adressierte Cache-Zeile von einem oder mehreren Requester-CPU-Kernen innerhalb des Requester-Sockels und führt die mehreren lokalen RAO-Befehle auf der empfangenen Cache-Zeile unabhängig vom Home-Agenten aus. Auf diese Weise kann der Requester-Sockel mehrere RAO-Befehle auf einer adressierten Cache-Zeile durchführen, ohne die Latenz der Einbeziehung des Home-Agenten in Kauf zu nehmen.
  • Bei 816 empfängt die Requester-Cache-Steuerschaltung eine entfernte Anforderung an die adressierte Cache-Zeile, während einer oder mehrere der mehreren lokalen RAO-Befehle noch ausstehen, wobei die entfernte Anforderung eines von einer Leseanforderung, einem Lesevorgang für den Besitz und einer Anforderung nach Besitz umfasst, und arbitriert zwischen den mehreren lokalen RAO-Befehlen und der entfernten Anforderung, indem die mehreren lokalen RAO-Befehle bevorzugt und zuerst durchgeführt werden, während Schritte ergriffen werden, um ein Verhungern der entfernten Anforderung zu vermeiden. Einige beispielhafte Ansätze zum Ergreifen von Schritten, um ein Verhungern der entfernten Anforderung zu vermeiden, werden nachstehend beschrieben.
  • VERHINDERN VON VERHUNGERN VON ANFORDERUNGEN VON ENTFERNTEN SOCKELN
  • In einigen Situationen muss eine Cache-Steuerschaltung, die mehrere RAO-Befehle empfangen hat, zwischen ihnen arbitrieren, um zu bestimmen, welche ausgeführt werden sollen. Beispielhafte Ausführungsformen einer Cache-Steuerschaltung, die zwischen mehreren empfangenen lokalen und entfernten RAO-Befehlen arbitriert, werden unter Bezugnahme auf Block 814 aus 8 und Block 1022 aus 10 veranschaulicht und erörtert, wobei den lokalen RAO-Befehlen der Vorzug gegeben wird, während ein Verhungern der entfernten Anforderung vermieden wird.
  • In einigen Ausführungsformen besteht eine Möglichkeit, das Verhungern der entfernten Anforderung zu vermeiden, darin, einen vorhandenen Mechanismus zum Vermeiden von Verhungern des Cache-Kohärenzprotokolls des Multi-Sockel-Systems zu nutzen.
  • In einigen Ausführungsformen besteht eine andere Möglichkeit, das Verhungern der entfernten Anforderung in einem Multi-Sockel-System zu vermeiden, darin, eine Prioritätsstufe im entfernten RAO-Befehl festzulegen, wobei beispielsweise einem entfernten RAO-Befehl, der als hohe Priorität identifiziert wurde (zum Beispiel einem RAO-Befehl, der mit einer missionskritischen oder zeitempfindlichen Echtzeitanwendung assoziiert ist), eine höhere Priorität gegeben wird und einem entfernten RAO-Befehl, der als niedrige Priorität identifiziert wurde (zum Beispiel Aktualisieren eines Datenbankeintrags, der warten kann), eine niedrigere Priorität gegeben wird.
  • 9 ist ein Flussdiagramm, das die Ausführung von Befehlen für entfernte atomare Operationen durch einen Home-Agenten (Home-Sockel) in einem Multi-Sockel-System gemäß einer Ausführungsform veranschaulicht. Bei 902 empfängt ein Home-Agent des Home-Sockels eine Anforderung nach Besitz (RFO, Request for Ownership) einer von einer Adresse adressierten Cache-Zeile von einem Requester-Sockel. Bei 904 bestimmt der Home-Agent, ob die adressierte Cache-Zeile irgendwo im System gecacht ist. In einigen Ausführungsformen wird die Bestimmung unter Verwendung eines verzeichnisbasierten Mechanismus durchgeführt. In einigen Ausführungsformen wird die Bestimmung unter Verwendung eines Snoop-Broadcastbasierten Mechanismus durchgeführt. Der Ort könnte sich in einem beliebigen von Folgendem befinden: a) im Home-Agent-Cache, b) an anderer Stelle in der Cache-Hierarchie des Home-Sockels oder eines anderen Sockels oder c) im Speicher.
  • In einigen Ausführungsformen weist der Home-Agent einen Caching-Agenten zum Verfolgen eines systemweiten Cache-Zustands einer Cache-Zeile mit einer Adresse innerhalb eines virtuellen Adressbereichs, der zum Home-Agenten gemappt wird, auf, wobei der systemweite Cache-Zustand einem Cache-Kohärenzprotokoll des Multi-Sockel-Systems entspricht. In einigen Ausführungsformen weist der systemweite Cache-Zustand einer Cache-Zeile eines oder mehrere von Modified (M), Shared (S), Invalid (I), Owned (O) und Exclusive (E) auf.
  • Bei 906, wenn die adressierte Cache-Zeile in einem lokalen Cache des Home-Sockels gecacht ist, invalidiert der Home-Agent die adressierte Cache-Zeile und ruft sie vom lokalen Cache ab, wobei der lokale Cache einen oder mehrere Caches, die von den CPU-Kernen im Home-Sockel gemeinsam genutzt werden, und einen oder mehrere untergeordnete Caches, die einzelnen CPU-Kernen im Home-Sockel dediziert sind, umfasst. Bei 908, wenn die adressierte Cache-Zeile in einem entfernten Sockel gecacht ist, invalidiert der Home-Agent die adressierte Cache-Zeile und ruft sie vom entfernten Sockel ab.
  • Bei 910, wenn die adressierte Cache-Zeile nirgendwo im System gecacht ist, fetcht der Home-Agent die adressierte Cache-Zeile aus einem virtuellen Speicherbereich, der zum Home-Sockel gemappt wird. In einigen Ausführungsformen weist der Home-Agent einen Speicheragenten auf, um eine Schnittstelle zu bilden und Anforderungen an den Speicher zu bedienen.
  • Bei 912 stellt der Home-Agent die adressierte Cache-Zeile und die Bestätigung an den Requester-Sockel bereit. Der Prozess endet dann.
  • 10 ist ein Flussdiagramm, das die Ausführung von Befehlen für entfernte atomare Operationen in einem Multi-Sockel-System gemäß einigen Ausführungsformen veranschaulicht. Wie gezeigt, beteiligen sich der Requester-Sockel 1000 und der Home-Sockel 1001 an der Ausführung des RAO-Befehls. Bei 1002 empfängt eine Requester-Cache-Steuerschaltung innerhalb des Requester-Sockels 1000 einen RAO-Befehl an eine Cache-Zeilen-Adresse von einem Requester-CPU-Kern innerhalb des Requester-Sockels. Bei 1004 bestimmt die Requester-Cache-Steuerschaltung einen Home-Agenten in einem Home-Sockel für die adressierte Cache-Zeile. In einigen Ausführungsformen bestimmt die Cache-Steuerschaltung den Home-Agenten basierend auf der Cache-Zeilen-Adresse durch Zugreifen auf ein Mapping von Home-Agenten auf Adressbereiche, wie unter Bezugnahme auf 6B beschrieben und veranschaulicht.
  • Bei 1006 stellt die Requester-Cache-Steuerschaltung eine Anforderung nach Besitz (RFO, Request for Ownership) der adressierten Cache-Zeile an den Home-Agenten 1001 bereit. Bei 1008 bestimmt ein Home-Agent innerhalb des Home-Sockels 1001, ob die adressierte Cache-Zeile irgendwo im System gecacht ist. Beispielsweise könnte die adressierte Cache-Zeile in einem gemeinsam genutzten Level-3-Cache des Home-Sockels 1001 gecacht werden. Beispielsweise könnte die adressierte Cache-Zeile in einem Level-1-Cache gecacht werden, der für einen CPU-Kern innerhalb des Home-Sockels 1001 dediziert ist. Oder die adressierte Cache-Zeile könnte in einer Cache-Hierarchie eines entfernten Sockels gecacht werden. Wenn der Home-Agent bestimmt, dass die adressierte Cache-Zeile irgendwo im System gecacht ist, invalidiert der Home-Agent bei 1010 die Cache-Zeile und ruft sie gemäß einem Cache-Kohärenzprotokoll des Multi-Sockel-Systems ab und stellt die Cache-Zeilen-Daten und eine Bestätigung an den Requester-Sockel 1000 bereit.
  • Bei 1012, wenn bestimmt wird, dass die adressierte Cache-Zeile nicht irgendwo im System gecacht ist, fetcht der Home-Agent die adressierte Cache-Zeile aus dem Speicher und stellt die Cache-Zeilen-Daten und eine Bestätigung an den Requester-Sockel 1000 bereit.
  • Bei 1014 empfängt die Requester-Cache-Steuerschaltung die Bestätigung (ACK, Acknowledgement) und die adressierte Cache-Zeile. Bei 1016 führt die Requester-Cache-Steuerschaltung den RAO-Befehl auf der empfangenen Cache-Zeile atomar aus. An diesem Punkt wurde der vom Requester-CPU-Kern empfangene RAO-Befehl ausgeführt.
  • Wie gezeigt, empfängt die Requester-Cache-Steuerschaltung bei 1020 anschließend mehrere lokale RAO-Befehle an die adressierte Cache-Zeile von einem oder mehreren Requester-CPU-Kernen innerhalb des Requester-Sockels und führt die mehreren lokalen RAO-Befehle auf der empfangenen Cache-Zeile unabhängig vom Home-Agenten aus. Auf diese Weise profitiert die Requester-Cache-Steuerschaltung vom Vermeiden der Latenz und des Overheads, die erforderlich wären, um den Home-Agenten an jedem RAO-Befehl zu beteiligen.
  • Anschließend empfängt die Requester-Cache-Steuerschaltung bei 1020 mehrere zusätzliche RAO-Befehle an die Adresse von einem oder mehreren Requester-CPU-Kernen und empfängt auch eine entfernte Anforderung, die eines von einem Lesevorgang, einem Lesevorgang für den Besitz und einer RFO der Adresse vom Home-Agenten (Home-Sockel) umfasst. Die Operation 1020 ist bedingt, wie durch ihren gestrichelten Rand veranschaulicht, insofern als keine weiteren Zugriffe von Requester-CPU-Kernen möglich sein könnten.
  • Wie gezeigt, empfängt die Requester-Cache-Steuerschaltung bei 1022 eine entfernte Anforderung an die adressierte Cache-Zeile, während einer oder mehrere der mehreren lokalen RAO-Befehle noch ausstehen, wobei die entfernte Anforderung eines von einer Leseanforderung, einem Lesevorgang für den Besitz und einer Anforderung nach Besitz ist. In einigen Ausführungsformen arbitriert die Requester-Cache-Steuerschaltung dann zwischen den mehreren lokalen RAO-Befehlen und der entfernten Anforderung, indem die mehreren lokalen RAO-Befehle bevorzugt und zuerst durchgeführt werden, während Schritte ergriffen werden, um ein Verhungern der entfernten Anforderung zu vermeiden (wie im Abschnitt „Verhindern von Verhungern von Anforderungen von entfernten Sockeln“ beschrieben). Die Operation 1022 ist bedingt, wie durch ihren gestrichelten Rand veranschaulicht, insofern als keine weiteren Zugriffe von Requester-CPU-Kernen ausstehend sein könnten, und in diesem Fall wird, wenn eine entfernte Anforderung empfangen wird, diese gewährt. In diesem Fall geht die adressierte Cache-Zeile auf die gleiche Weise zu diesem Sockel über, wie die Zeile zum Requester-Sockel übergegangen ist, und nachfolgende RAO-Befehle, die von Requester-CPU-Kernen im Requester-Sockel empfangen werden, beginnen den Prozess bei der Operation 1002 erneut.
  • RAO-BEFEHLSTYPEN
  • In einigen Ausführungsformen involviert das Ausführen des RAO-Befehls ein Lesen-Modifizieren-Schreiben, wobei eine Ausführungsschaltung den Inhalt eines Speicherplatzes liest, die gelesenen Daten modifiziert und das Ergebnis in den Speicherplatz zurückschreibt. Optionale Parameter können dazu dienen, die während der Modifizierungsphase durchgeführte Operation zu modifizieren.
  • Es gibt zwei verschiedene Klassen von RAO-Befehlen: diejenigen, deren einzige Ausgabe der Speicherplatz ist, der atomar aktualisiert wird, und diejenigen, die auch ein Zielregister aufweisen. Es gibt mikroarchitektonische Implikationen dieser Differenz.
  • RAO-Befehle, deren einzige Ausgabe der Speicherplatz ist, der atomar aktualisiert wird, können schwach geordnet sein - aufgrund der schwachen Ordnung wird ein derartiger RAO-Befehl außer Kraft gesetzt, sobald die Operation geordnet oder beim Home-Caching- oder Speicheragenten global beobachtbar ist, ohne auf den Abschluss der Operation zu warten. Befehle mit einem CPU-Register-Ziel können dagegen auf ähnliche Weise außer Kraft gesetzt werden, sobald die Operation geordnet oder beim Home-Caching- oder Speicheragenten global beobachtbar ist, aber der Kern muss immer noch verfolgen, dass der Befehl einen Wert für sein Zielregister erzeugt, um Datenabhängigkeiten von allen Verbrauchern durchzusetzen. Aus diesem Grund werden in einigen Ausführungsformen Befehle mit einem Registerziel als stärker geordnet als die RAO-Befehle ohne ein CPU-Registerziel behandelt. In anderen Ausführungsformen können RAO-Befehle dem Speicheranordnungsmodell der Befehle in der zugrunde liegenden Architektur folgen.
  • Alle RAO-Befehle spezifizieren ein Speicherziel, das aktualisiert werden soll, und einen Opcode, um die Operation anzugeben. Hierin offenbarte Ausführungsformen decken die folgenden speziellen Operationen ab und sind auf andere erweiterbar.
  • KEIN REGISTERZIEL (D. H. OP MEMDEST, REG)
    • RAO_ADD - ganzzahlige Addition
    • RAO_SUB - ganzzahlige Subtraktion
    • RAO_ADD_SAT - ganzzahlige Sättigungsaddition
    • (Seite 13, oben) RAO_SUB_FLR - ganzzahlige Subtraktion mit Floor
    • RAO_AND - logisches AND
    • RAO_OR - logisches OR
    • RAO_XOR - logisches XOR
    • RAO-BEFEHLE MIT REGISTERZIEL (D. H. OP MEMDEST, REGDEST, REG)
    • RAO_ADD_THR - ganzzahlige Addition mit Schwellenwert (Registerziel ist ein Single-Bit-Flag)
    • RAO_SUB_THR - ganzzahlige Subtraktion mit Schwellenwert (Registerziel ist ein Single-Bit-Flag)
    • RAO_XADD - ganzzahliger Austausch und Addition
    • RAO_XCHG - Austausch
    • RAO_CMPXCHG - Vergleich und Austausch
  • RAO-BEFEHLSFORMATE
  • 11 ist ein Blockschaltbild, das ein Format und optionale Parameter für Befehle für entfernte atomare Operationen gemäß einigen Ausführungsformen veranschaulicht. Wie gezeigt umfasst der Befehl 1100 den Opcode 1102 und die Zielkennung 1112 sowie mehrere optionale Felder, die jeweils mit einem gestrichelten Rand gezeigt sind.
  • Der Opcode 1102 kann optionale Präfixe oder Suffixe aufweisen, einschließlich einer optionalen mathematischen Operation (MATH OP) 1104 (z. B. Addieren, Subtrahieren, Dividieren, Multiplizieren, Modulo usw.), einer logischen Operation LOGICAL OP 1106 (z. B. AND, OR, NAND, NOR, XOR, XNOR, CMP usw.), einer optionalen Größenkennung 1108 und einer Vektoroperationsbezeichnung (IS A VECTOR OP) 1110. In einigen Ausführungsformen sind diese optionalen Parameter als Teil des Opcodes eingeschlossen, möglicherweise durch Unterstriche getrennt. In anderen Ausführungsformen sind diese Parameter separate Operanden oder Befehlsfelder.
  • MATH OP 1104 kann beispielsweise _ADD_ sein, in welchem Fall der RAO-Befehl zum Lesen des durch die Zielkennung 1112 identifizierten Orts aufruft, die durch ein Immediate oder durch den Inhalt der identifizierten Quelle identifizierten Daten addiert und das Ergebnis zurück zum durch die Zielkennung 1112 identifizierten Ort schreibt.
  • Die optionale Größenkennung 1108 ist in einigen Ausführungsformen im Opcode eingeschlossen, beispielsweise als Präfix oder Suffix „B“, „W“, „D“ und „Q“, entsprechend einer Größe - jeweils 1 Byte, 2 Byte, 4 Byte oder 8 Byte - von jedem Vektorelement einer identifizierten Quelle oder eines identifizierten Ziels. In einigen Ausführungsformen ist die optionale Größenkennung 1108 als ein Opcode-Präfix oder -Suffix „H“, „S“, „D“, „Q“ und „E“ eingeschlossen, entsprechend Genauigkeitsstufen - jeweils halbe Genauigkeit (2 Byte), einfache Genauigkeit (4 Byte), doppelte Genauigkeit (8 Byte) und vierfache Genauigkeit (16 Byte) - für jedes Vektorelement der identifizierten Quelle oder des identifizierten Ziels. In anderen Ausführungsformen ist die optionale Größenkennung 1108 ein Befehlsparameter oder -operand, gezeigt als Größe 1118, der die Größe und/oder Genauigkeitsstufe der Quell- oder Zielvektorelemente angibt.
  • Die optionale Priorität 1120 kann auf einen Skalarwert festgelegt werden, beispielsweise zwischen 0 und 5, um die Priorität des RAO-Befehls anzugeben. Wie im Abschnitt „Verhindern von Verhungern von Anforderungen von entfernten Sockeln“ erörtert, kann die optionale Priorität 1120 auf eine hohe Zahl festgelegt werden, um anzuzeigen, dass der RAO-Befehl, der an einen anderen Sockel gesendet wird, nicht verhungert werden sollte. Die optionale Priorität 1120 kann auf einen niedrigen Wert festgelegt werden, falls er eine relativ niedrige Priorität aufweist und warten kann.
  • Die optionale Quellkennung 1114 identifiziert einen Quelloperanden, der beim Durchführen der durch einen RAO-Befehl angegebenen Operation verwendet werden soll. In einigen Ausführungsformen gibt die optionale Quellkennung 1114 ein Quellregister an, wie beispielsweise ein Register, das in einer Registerdatei eines Prozessors eingeschlossen ist, wie unter Bezugnahme auf 14 veranschaulicht und beschrieben. In einigen Ausführungsformen identifiziert die optionale Quellkennung 1114 einen Speicherplatz. In einigen Ausführungsformen gibt die optionale Quellkennung 1114 ein Immediate an. Die optionale Quellkennung 1114 ist optional, insofern als ein RAO-Befehl einen Immediate-Operanden (z. B. RAOADD memaddr 55) angeben kann oder überhaupt keinen Operanden (z. B. RAOINC memaddr) angeben kann.
  • Beispielhafte Ausführungen von RAO-Befehlen gemäß einigen Ausführungsformen werden unter Bezugnahme auf 7 bis 11 veranschaulicht und erörtert. Beispielhafte Befehlsformate für Befehle für entfernte atomare Operationen werden weiter unten unter Bezugnahme auf 12 bis 14 erörtert und veranschaulicht.
  • BEFEHLSSÄTZE
  • Ein Befehlssatz kann ein oder mehrere Befehlsformate aufweisen. Ein gegebenes Befehlsformat kann verschiedene Felder (z. B. Anzahl von Bits, Ort von Bits), um unter anderem die durchzuführende Operation (z. B. Opcode) und den/die Operanden anzugeben, auf denen diese Operation durchgeführt werden soll, und/oder andere Datenfelder (z. B. Maske) definieren. Einige Befehlsformate werden weiter durch die Definition von Befehlsvorlagen (oder Unterformaten) unterteilt. Beispielsweise können die Befehlsvorlagen eines gegebenen Befehlsformats so definiert sein, dass sie unterschiedliche Teilmengen der Felder des Befehlsformats aufweisen (die eingeschlossenen Felder sind typischerweise in der gleichen Reihenfolge, aber wenigstens einige weisen unterschiedliche Bitpositionen auf, da weniger Felder eingeschlossen sind), und/oder so definiert sein, dass ein gegebenes Feld anders interpretiert wird. Somit wird jeder Befehl einer ISA unter Verwendung eines gegebenen Befehlsformats (und, falls definiert, in einer gegebenen von den Befehlsvorlagen dieses Befehlsformats) ausgedrückt und weist Felder zum Spezifizieren der Operation und der Operanden auf. Beispielsweise weist ein beispielhafter ADD-Befehl einen speziellen Opcode und ein Befehlsformat auf, das ein Opcode-Feld, um diesen Opcode anzugeben, und Operandenfelder aufweist, um Operanden auszuwählen (source1/destination und source2); und ein Auftreten dieses ADD-Befehls in einem Befehlsstrom wird spezielle Inhalte in den Operandenfeldern aufweisen, die spezielle Operanden auswählen. Eine Reihe von SIMD-Erweiterungen, die als Advanced Vector Extensions (AVX) (AVX1 und AVX2) bezeichnet werden und die das Vector-Extensions(VEX)-Codierungsschema verwenden, wurde freigegeben und/oder veröffentlicht (z. B. siehe Intel® 64 and IA-32 Architectures Software Developer's Manual, September 2014; und siehe Intel® Advanced Vector Extensions Programming Reference, Oktober 2014).
  • WEITERE BEISPIELHAFTE BEFEHLSFORMATE
  • Ausführungsformen des/der hierin beschriebenen Befehls/Befehle können in verschiedenen Formaten verkörpert werden. Zusätzlich werden beispielhafte Systeme, Architekturen und Pipelines nachstehend detailliert beschrieben. Ausführungsformen des/der Befehls/Befehle können auf derartigen Systemen, Architekturen und Pipelines ausgeführt werden, sind aber nicht auf die beschränkt, die detailliert sind.
  • GENERISCHES VEKTORFREUNDLICHES BEFEHLSFORMAT
  • Ein vektorfreundliches Befehlsformat ist ein Befehlsformat, das für Vektorbefehle geeignet ist (z. B. gibt es bestimmte Felder speziell für Vektoroperationen). Obgleich Ausführungsformen beschrieben werden, in denen sowohl Vektor- als auch Skalaroperationen durch das vektorfreundliche Befehlsformat unterstützt werden, verwenden alternative Ausführungsformen nur Vektoroperationen im vektorfreundlichen Befehlsformat.
  • 12A-12B sind Blockschaltbilder, die ein generisches vektorfreundliches Befehlsformat und Befehlsvorlagen davon gemäß Ausführungsformen der Erfindung veranschaulichen. 12A ist ein Blockschaltbild, das ein generisches vektorfreundliches Befehlsformat und Klasse-A-Befehlsvorlagen davon gemäß Ausführungsformen der Erfindung veranschaulicht; während 12B ein Blockschaltbild ist, welches das generische vektorfreundliche Befehlsformat und Klasse-B-Befehlsvorlagen davon gemäß Ausführungsformen der Erfindung veranschaulicht. Insbesondere ein generisches vektorfreundliches Befehlsformat 1200, für das Klasse-A-und Klasse-B-Befehlsvorlagen definiert sind, die beide keine Befehlsvorlagen für den Speicherzugriff 1205 und Befehlsvorlagen für den Speicherzugriff 1220 aufweisen. Der Begriff „generisch“ im Kontext des vektorfreundlichen Befehlsformats bezieht sich auf das Befehlsformat, das nicht an einen bestimmten Befehlssatz gebunden ist.
  • Obgleich Ausführungsformen der Erfindung beschrieben werden, bei denen das vektorfreundliche Befehlsformat das Folgende unterstützt: eine 64-Byte-Vektoroperandenlänge (oder -größe) mit Datenelementbreiten (oder -größen) von 32 Bit (4 Byte) oder 64 Bit (8 Byte) (und somit besteht ein 64-Byte-Vektor entweder aus 16 Elementen mit Doppelwortgröße oder alternativ aus 8 Elementen mit Quadwortgröße); eine 64-Byte-Vektoroperandenlänge (oder -größe) mit Datenelementbreiten (oder -größen) von 16 Bit (2 Byte) oder 8 Bit (1 Byte); eine 32-Byte-Vektoroperandenlänge (oder -größe) mit Datenelementbreiten (oder -größen) von 32 Bit (4 Byte), 64 Bit (8 Byte), 16 Bit (2 Byte) oder 8 Bit (1 Byte); und eine 16-Byte-Vektoroperandenlänge (oder -größe) mit Datenelementbreiten (oder -größen) von 32 Bit (4 Byte), 64 Bit (8 Byte), 16 Bit (2 Byte) oder 8 Bit (1 Byte); können alternative Ausführungsformen mehr, weniger und/oder unterschiedliche Vektoroperandengrößen (z. B. 256-Byte-Vektoroperanden) mit mehr, weniger oder unterschiedlichen Datenelementbreiten (z. B. Datenelementbreiten von 128 Bit (16 Byte)) unterstützen.
  • Die Klasse-A-Befehlsvorlagen in 12A weisen auf: 1) Innerhalb der Befehlsvorlagen für keinen Speicherzugriff 1205 sind eine Befehlsvorlage für keinen Speicherzugriff, Operation vom Typ Vollrundungssteuerung 1210 und eine Befehlsvorlage für keinen Speicherzugriff, Operation vom Typ Datentransformation 1215 gezeigt; und 2) innerhalb der Befehlsvorlagen für den Speicherzugriff 1220 sind eine Befehlsvorlage für den Speicherzugriff, temporal 1225 und eine Befehlsvorlage für den Speicherzugriff, nicht-temporal 1230 gezeigt. Die Klasse-B-Befehlsvorlagen in 12B weisen auf: 1) Innerhalb der Befehlsvorlagen für keinen Speicherzugriff 1205 sind eine Befehlsvorlage für keinen Speicherzugriff, Schreibmaskensteuerung, Operation vom Typ Teilrundungssteuerung 1212 und eine Befehlsvorlage für keinen Speicherzugriff, Schreibmaskensteuerung, Operation vom Typ vsize 1217 gezeigt; und 2) innerhalb der Befehlsvorlagen für den Speicherzugriff 1220 ist eine Befehlsvorlage für den Speicherzugriff, Schreibmaskensteuerung 1227 gezeigt.
  • Das generische vektorfreundliche Befehlsformat 1200 weist die folgenden Felder auf, die unten in der in den 12A-12B veranschaulichten Reihenfolge aufgeführt sind.
  • Formatfeld 1240: Ein bestimmter Wert (ein Befehlsformatkennungswert) in diesem Feld identifiziert eindeutig das vektorfreundliche Befehlsformat und somit das Auftreten von Befehlen im vektorfreundlichen Befehlsformat in Befehlsströmen. Als solches ist dieses Feld in dem Sinne optional, dass es nicht für einen Befehlssatz benötigt wird, der nur das generische vektorfreundliche Befehlsformat aufweist.
  • Basisoperationsfeld 1242: Sein Inhalt unterscheidet verschiedene Basisoperationen.
  • Registerindexfeld 1244: Sein Inhalt gibt direkt oder durch Adressgenerierung die Positionen der Quell- und Zieloperanden an, entweder in Registern oder im Speicher. Diese weisen eine ausreichende Anzahl von Bits auf, um N Register aus einer PxQ(z. B. 32x512, 16x128, 32x1024, 64x1024)-Registerdatei auszuwählen. Obgleich N in einer Ausführungsform bis zu drei Quellen und ein Zielregister sein kann, können alternative Ausführungsformen mehr oder weniger Quellen und Zielregister unterstützen (z. B. können bis zu zwei Quellen unterstützen, wobei eine dieser Quellen auch als Ziel fungiert, können bis zu drei Quellen unterstützen, wobei eine dieser Quellen auch als Ziel fungiert, können bis zu zwei Quellen und ein Ziel unterstützen).
  • Modifikatorfeld 1246: Sein Inhalt unterscheidet das Auftreten von Befehlen im generischen Vektorbefehlsformat, die den Speicherzugriff angeben, von denen, die dies nicht tun; das heißt, zwischen Befehlsvorlagen für keinen Speicherzugriff 1205 und Befehlsvorlagen für den Speicherzugriff 1220. Speicherzugriffsoperationen lesen und/oder schreiben in die Speicherhierarchie (wobei in einigen Fällen die Quell- und/oder Zieladressen unter Verwendung von Werten in Registern angegeben werden), während Nicht-Speicherzugriffsoperationen dies nicht tun (z. B. sind Quelle und Ziele Register). Obgleich dieses Feld in einer Ausführungsform auch zwischen drei verschiedenen Möglichkeiten zum Durchführen von Speicheradressenberechnungen auswählt, können alternative Ausführungsformen mehr, weniger oder verschiedene Möglichkeiten zum Durchführen von Speicheradressenberechnungen unterstützen.
  • Augmentierungsoperationsfeld 1250: Sein Inhalt unterscheidet, welche von einer Vielzahl von verschiedenen Operationen zusätzlich zur Basisoperation durchgeführt werden soll. Dieses Feld ist kontextspezifisch. In einer Ausführungsform der Erfindung ist dieses Feld in ein Klassenfeld 1268, ein Alpha-Feld 1252 und ein Beta-Feld 1254 unterteilt. Das Augmentierungsoperationsfeld 1250 ermöglicht, dass gemeinsame Gruppen von Operationen in einem einzelnen Befehl statt 2, 3 oder 4 Befehlen durchgeführt werden.
  • Skalierungsfeld 1260: Sein Inhalt ermöglicht die Skalierung des Inhalts des Indexfelds für die Speicheradressgenerierung (z. B. für die Adressgenerierung, die 2scale * Index + Basis verwendet).
  • Verschiebungsfeld 1262A: Sein Inhalt wird als Teil der Speicheradressgenerierung verwendet (z. B. für die Adressgenerierung, die 2scale * Index + Basis + Verschiebung verwendet).
  • Verschiebungsfaktorfeld 1262B (es ist zu beachten, dass die Juxtaposition des Verschiebungsfelds 1262A direkt über dem Verschiebungsfaktorfeld 1262B anzeigt, dass das eine oder das andere verwendet wird): Sein Inhalt wird als Teil der Adressgenerierung verwendet; es gibt einen Verschiebungsfaktor an, der durch die Größe eines Speicherzugriffs (N) zu skalieren ist - wobei N die Anzahl der Bytes im Speicherzugriff ist (z. B. für die Adressgenerierung, die 2scale * Index + Basis + skalierte Verschiebung verwendet). Redundante niederwertige Bits werden ignoriert, und somit wird der Inhalt des Verschiebungsfaktorfelds mit der Gesamtgröße (N) der Speicheroperanden multipliziert, um die endgültige Verschiebung zu generieren, die zur Berechnung einer effektiven Adresse verwendet werden soll. Der Wert von N wird von der Prozessorhardware zur Laufzeit basierend auf dem vollständigen Opcode-Feld 1274 (hierin später beschrieben) und dem Datenmanipulationsfeld 1254C bestimmt. Das Verschiebungsfeld 1262A und das Verschiebungsfaktorfeld 1262B sind optional in dem Sinne, dass sie nicht für die Befehlsvorlagen für keinen Speicherzugriff 1205 verwendet werden und/oder unterschiedliche Ausführungsformen nur eins oder keins der beiden implementieren können.
  • Datenelementbreitenfeld 1264: Sein Inhalt unterscheidet, welche von einer Anzahl von Datenelementbreiten verwendet werden soll (in einigen Ausführungsformen für alle Befehle; in anderen Ausführungsformen für nur einige der Befehle). Dieses Feld ist optional in dem Sinne, dass es nicht erforderlich ist, falls nur eine Datenelementbreite unterstützt wird und/oder Datenelementbreiten unter Verwendung eines Aspekts der Opcodes unterstützt werden.
  • Schreibmaskenfeld 1270: Sein Inhalt steuert auf Datenelementpositionsbasis, ob diese Datenelementposition im Zielvektoroperanden das Ergebnis der Basisoperation und der Augmentierungsoperation reflektiert. Klasse-A-Befehlsvorlagen unterstützen Merging-Schreibmaskierung, während Klasse-B-Befehlsvorlagen sowohl Merging- als auch Zeroing-Schreibmaskierung unterstützen. Beim Merging kann durch die Vektormasken eine beliebige Menge von Elementen im Ziel vor Aktualisierungen während der Ausführung einer beliebigen Operation geschützt werden (angegeben durch die Basisoperation und die Augmentierungsoperation); in einer anderen Ausführungsform kann dadurch der alte Wert jedes Elements des Ziels beibehalten werden, wobei das entsprechende Maskenbit eine 0 aufweist. Im Gegensatz dazu kann beim Zeroing durch die Vektormasken eine beliebige Menge von Elementen im Ziel während der Ausführung einer beliebigen Operation genullt werden (angegeben durch die Basisoperation und die Augmentierungsoperation); in einer Ausführungsform wird ein Element des Ziels auf 0 festgelegt, wenn das entsprechende Maskenbit einen Wert von 0 aufweist. Eine Teilmenge dieser Funktionalität ist die Fähigkeit, die Vektorlänge der durchgeführten Operation zu steuern (das heißt, die Spanne der modifizierten Elemente vom ersten bis zum letzten); es ist jedoch nicht notwendig, dass die Elemente, die modifiziert werden, aufeinanderfolgen. Somit erlaubt das Schreibmaskenfeld 1270 teilweise Vektoroperationen, einschließlich Ladevorgänge, Speichervorgänge, arithmetische, logische usw. Obgleich Ausführungsformen der Erfindung beschrieben werden, in denen der Inhalt des Schreibmaskenfelds 1270 eines aus einer Anzahl von Schreibmaskenregistern auswählt, das die zu verwendende Schreibmaske enthält (und somit der Inhalt des Schreibmaskenfelds 1270 indirekt diejenige Maskierung identifiziert, die durchzuführen ist), erlauben alternative Ausführungsformen stattdessen oder zusätzlich, dass der Inhalt des Schreibmaskenfelds 1270 die durchzuführende Maskierung direkt angibt.
  • Immediate-Feld 1272: Sein Inhalt erlaubt die Angabe eines Immediates. Dieses Feld ist optional in dem Sinne, dass es nicht in einer Implementierung des generischen vektorfreundlichen Formats vorhanden ist, die kein Immediate unterstützt, und nicht in Befehlen vorhanden ist, die kein Immediate verwenden.
  • Klassenfeld 1268: Sein Inhalt unterscheidet zwischen verschiedenen Klassen von Befehlen. Unter Bezugnahme auf die 12A-B wählt der Inhalt dieses Felds zwischen Klasse-A- und Klasse-B-Befehlen. In den 12A-B werden Vierecke mit abgerundeten Ecken verwendet, um anzuzeigen, dass ein spezieller Wert in einem Feld vorhanden ist (z. B. Klasse A 1268A und Klasse B 1268B für das Klassenfeld 1268 jeweils in den 12A-B).
  • BEFEHLSVORLAGEN DER KLASSE A
  • Im Fall der Befehlsvorlagen für keinen Speicherzugriff 1205 der Klasse A wird das Alpha-Feld 1252 als ein RS-Feld 1252A interpretiert, dessen Inhalt unterscheidet, welcher der verschiedenen Augmentierungsoperationstypen durchgeführt werden soll (z. B. werden Rundung 1252A.1 und Datentransformation 1252A.2 jeweils für die Befehlsvorlagen für keinen Speicherzugriff, Operation vom Typ Rundung 1210 und für keinen Speicherzugriff, Operation vom Typ Datentransformation 1215 angegeben), während das Beta-Feld 1254 unterscheidet, welche von den Operationen des angegebenen Typs durchgeführt werden soll. In den Befehlsvorlagen für keinen Speicherzugriff 1205 sind das Skalierungsfeld 1260, das Verschiebungsfeld 1262A und das Verschiebungsskalierungsfeld 1262B nicht vorhanden.
  • BEFEHLSVORLAGEN FÜR KEINEN SPEICHERZUGRIFF - OPERATION VOM TYP VOLLRUNDUNGSSTEUERUNG
  • In der Befehlsvorlage für keinen Speicherzugriff, Operation vom Typ Vollrundungssteuerung 1210 wird das Beta-Feld 1254 als ein Rundungssteuerungsfeld 1254A interpretiert, dessen Inhalt(e) eine statische Rundung bereitstellt/bereitstellen. Obgleich in den beschriebenen Ausführungsformen der Erfindung das Rundungssteuerungsfeld 1254A ein Suppress-All-Floating-Point-Exceptions(SAE)-Feld 1256 und ein Rundungsoperationssteuerungsfeld 1258 aufweist, können alternative Ausführungsformen unterstützen, diese beiden Konzepte in dasselbe Feld hinein zu codieren oder nur das eine oder das andere dieser Konzepte/Felder aufzuweisen (z. B. nur das Rundungsoperationssteuerungsfeld 1258 aufzuweisen).
  • SAE-Feld 1256: Sein Inhalt unterscheidet, ob die Ausnahmeereignisberichte zu deaktivieren sind oder nicht; wenn der Inhalt des SAE-Felds 1256 anzeigt, dass eine Unterdrückung aktiviert ist, so berichtet ein gegebener Befehl keinerlei Art von Gleitkomma-Ausnahme-Flag und ruft keinen Gleitkomma-Ausnahme-Handler auf.
  • Rundungsoperationssteuerungsfeld 1258: Sein Inhalt unterscheidet, welche aus einer Gruppe von Rundungsoperationen durchzuführen ist (zum Beispiel Aufrunden, Abrunden, Runden-in-Richtung-Null und Runden-zum-Nächsten). Somit erlaubt das Rundungsoperationssteuerungsfeld 1258 das Ändern des Rundungsmodus auf Befehlsbasis. In einer Ausführungsform der Erfindung, in der ein Prozessor ein Steuerregister zum Angeben von Rundungsmodi aufweist, setzt der Inhalt des Rundungsoperationssteuerungsfelds 1250 diesen Registerwert außer Kraft.
  • BEFEHLSVORLAGEN FÜR KEINEN SPEICHERZUGRIFF - OPERATION VOM TYP DATENTRANSFORMATION
  • In der Befehlsvorlage für keinen Speicherzugriff, Operation vom Typ Datentransformation 1215 wird das Beta-Feld 1254 als ein Datentransformationsfeld 1254B interpretiert, dessen Inhalt unterscheidet, welche aus einer Anzahl von Datentransformationen durchzuführen ist (z. B. keine Datentransformation, Swizzle oder Broadcast).
  • Im Fall einer Befehlsvorlage für den Speicherzugriff 1220 der Klasse A wird das Alpha-Feld 1252 als ein Entfernungshinweisfeld 1252B interpretiert, dessen Inhalt unterscheidet, welcher der Entfernungshinweise zu verwenden ist (in 12A sind temporal 1252B.1 und nicht-temporal 1252B.2 jeweils für die Befehlsvorlage für den Speicherzugriff, temporal 1225 und für die Befehlsvorlage für den Speicherzugriff, nicht-temporal 1230 angegeben), während das Beta-Feld 1254 als ein Datenmanipulationsfeld 1254C interpretiert wird, dessen Inhalt unterscheidet, welche aus einer Anzahl von Datenmanipulationsoperationen (auch als Primitive bekannt) durchgeführt werden soll (z. B. keine Manipulation; Broadcast; Aufwärtskonvertierung einer Quelle; und Abwärtskonvertierung eines Ziels). Die Befehlsvorlagen für den Speicherzugriff 1220 weisen das Skalierungsfeld 1260 und optional das Verschiebungsfeld 1262A oder das Verschiebungsskalierungsfeld 1262B auf.
  • Vektorspeicherbefehle führen Vektorladevorgänge aus einem Speicher und Vektorspeichervorgänge in einen Speicher mit Konvertierungsunterstützung aus. Wie im Fall regulärer Vektorbefehle übertragen Vektorspeicherbefehle Daten datenelementweise aus einem/in einen Speicher, wobei die Elemente, die tatsächlich übertragen werden, durch den Inhalt der Vektormaske diktiert werden, die als die Schreibmaske ausgewählt wird.
  • BEFEHLSVORLAGEN FÜR DEN SPEICHERZUGRIFF - TEMPORAL
  • Temporale Daten sind Daten, die wahrscheinlich früh genug wiederverwendet werden, um von einem Caching zu profitieren. Dies ist jedoch ein Hinweis, und verschiedene Prozessoren können ihn auf verschiedene Weise implementieren, einschließlich des völligen Ignorierens des Hinweises.
  • BEFEHLSVORLAGEN FÜR DEN SPEICHERZUGRIFF - NICHT-TEMPORAL
  • Nicht-temporale Daten sind Daten, die wahrscheinlich nicht früh genug wiederverwendet werden, um von einem Caching im 1st-Level-Cache zu profitieren, und sollten Priorität bei der Entfernung erhalten. Dies ist jedoch ein Hinweis, und verschiedene Prozessoren können ihn auf verschiedene Weise implementieren, einschließlich des völligen Ignorierens des Hinweises.
  • BEFEHLSVORLAGEN DER KLASSE B
  • Im Fall der Befehlsvorlagen der Klasse B wird das Alpha-Feld 1252 als ein Schreibmaskensteuerungs(Z)-Feld 1252C interpretiert, dessen Inhalt unterscheidet, ob die Schreibmaskierung, die durch das Schreibmaskenfeld 1270 gesteuert wird, ein Merging oder ein Zeroing sein sollte.
  • Im Fall der Befehlsvorlagen für keinen Speicherzugriff 1205 der Klasse B wird ein Teil des Beta-Felds 1254 als ein RL-Feld 1257A interpretiert, dessen Inhalt unterscheidet, welche der verschiedenen Augmentierungsoperationstypen durchgeführt werden soll (z. B. werden die Rundung 1257A.1 und Vektorlänge (VSIZE) 1257A.2 jeweils für die Befehlsvorlage für keinen Speicherzugriff, Schreibmaskensteuerung, Operation vom Typ Teilrundungssteuerung 1212 und für die Befehlsvorlage für keinen Speicherzugriff, Schreibmaskensteuerung, Operation vom Typ VSIZE 1217 angegeben), während der Rest des Beta-Felds 1254 unterscheidet, welche der Operationen des angegebenen Typs durchgeführt werden soll. In den Befehlsvorlagen für keinen Speicherzugriff 1205 sind das Skalierungsfeld 1260, das Verschiebungsfeld 1262A und das Verschiebungsskalierungsfeld 1262B nicht vorhanden.
  • In der Befehlsvorlage für keinen Speicherzugriff, Schreibmaskensteuerung, Operation vom Typ Teilrundungssteuerung 1210 wird der Rest des Beta-Felds 1254 als ein Rundungsoperationsfeld 1259A interpretiert, und Ausnahmeereignisberichte sind deaktiviert (ein gegebener Befehl berichtet keinerlei Art von Gleitkomma-Ausnahme-Flag und ruft keinen Gleitkomma-Ausnahme-Handler auf).
  • Rundungsoperationssteuerungsfeld 1259A: Genau wie das Rundungsoperationssteuerungsfeld 1258 unterscheidet sein Inhalt, welche aus einer Gruppe von Rundungsoperationen durchzuführen ist (zum Beispiel Aufrunden, Abrunden, Runden-in-Richtung-Null und Runden-zum-Nächsten). Somit erlaubt das Rundungsoperationssteuerungsfeld 1259A das Ändern des Rundungsmodus auf Befehlsbasis. In einer Ausführungsform der Erfindung, in der ein Prozessor ein Steuerregister zum Angeben von Rundungsmodi aufweist, setzt der Inhalt des Rundungsoperationssteuerungsfelds 1250 diesen Registerwert außer Kraft.
  • In der Befehlsvorlage für keinen Speicherzugriff, Schreibmaskensteuerung, Operation vom Typ VSIZE 1217 wird der Rest des Beta-Felds 1254 als ein Vektorlängenfeld 1259B interpretiert, dessen Inhalt unterscheidet, welche aus einer Anzahl von Datenvektorlängen durchgeführt werden soll (z. B. 128, 256 oder 512 Byte).
  • Im Fall einer Befehlsvorlage für den Speicherzugriff 1220 der Klasse B wird ein Teil des Beta-Felds 1254 als ein Broadcast-Feld 1257B interpretiert, dessen Inhalt unterscheidet, ob die Broadcast-Typ-Datenmanipulationsoperation durchgeführt werden soll oder nicht, während der Rest des Beta-Felds 1254 als das Vektorlängenfeld 1259B interpretiert wird. Die Befehlsvorlagen für den Speicherzugriff 1220 weisen das Skalierungsfeld 1260 und optional das Verschiebungsfeld 1262A oder das Verschiebungsskalierungsfeld 1262B auf.
  • Mit Bezug auf das generische vektorfreundliche Befehlsformat 1200 ist ein vollständiges Opcode-Feld 1274 gezeigt, das das Formatfeld 1240, das Basisoperationsfeld 1242 und das Datenelementbreitenfeld 1264 aufweist. Obgleich eine Ausführungsform gezeigt ist, bei der das vollständige Opcode-Feld 1274 alle diese Felder aufweist, weist das vollständige Opcode-Feld 1274 weniger als alle diese Felder in Ausführungsformen auf, die nicht alle davon unterstützen. Das vollständige Opcode-Feld 1274 stellt den Operationscode (Opcode) bereit.
  • Das Augmentierungsoperationsfeld 1250, das Datenelementbreitenfeld 1264 und das Schreibmaskenfeld 1270 erlauben die Angabe dieser Merkmale auf Befehlsbasis im generischen vektorfreundlichen Befehlsformat.
  • Die Kombination aus Schreibmaskenfeld und Datenelementbreitenfeld erzeugt typisierte Befehle, insofern als sie es erlauben, die Maske basierend auf verschiedenen Datenelementbreiten anzuwenden.
  • Die verschiedenen Befehlsvorlagen, die innerhalb der Klasse A und Klasse B zu finden sind, sind in unterschiedlichen Situationen vorteilhaft. In einigen Ausführungsformen der Erfindung können verschiedene Prozessoren oder verschiedene Kerne innerhalb eines Prozessors nur die Klasse A, nur die Klasse B oder beide Klassen unterstützen. Zum Beispiel könnte ein Hochleistungs-Allzweck-Out-of-Order-Kern, der für Allzweckberechnungen vorgesehen ist, nur Klasse B unterstützen, ein Kern, der vor allem für grafische und/oder wissenschaftliche (Durchsatz-)Berechnungen vorgesehen ist, könnte nur Klasse A unterstützen, und ein Kern, der für beides vorgesehen ist, könnte beide unterstützen (natürlich liegt ein Kern, der eine gewisse Mischung von Vorlagen und Befehlen beider Klassen aufweist, aber nicht alle Vorlagen und Befehle beider Klassen, ebenfalls im Geltungsbereich der Erfindung). Auch kann ein einzelner Prozessor mehrere Kerne aufweisen, die alle die gleiche Klasse unterstützen, oder in dem verschiedene Kerne verschiedene Klassen unterstützen. Zum Beispiel könnte in einem Prozessor mit separaten Grafik- und Allzweckkernen einer der Grafikkerne, der vor allem für grafische und/oder wissenschaftliche Berechnungen gedacht ist, nur Klasse A unterstützen, während einer oder mehrere der Allzweckkerne Hochleistungs-Allzweckkerne mit Out-of-Order-Ausführung und Registerumbenennung sein können, die für Allzweckberechnungen gedacht sind und nur Klasse B unterstützen. Ein anderer Prozessor, der keinen separaten Grafikkern aufweist, könnte einen oder mehrere Allzweck-In-Order- oder -Out-of-Order-Kerne aufweisen, die sowohl Klasse A als auch Klasse B unterstützen. Natürlich können in verschiedenen Ausführungsformen der Erfindung Merkmale einer Klasse auch in der anderen Klasse implementiert sein. Programme, die in einer Hochsprache geschrieben sind, würden in eine Vielzahl verschiedener ausführbarer Formen gebracht (zum Beispiel Just-in-Time-kompiliert oder statisch kompiliert) werden, einschließlich: 1) einer Form, die nur Befehle der Klasse(n) aufweist, die durch den Zielprozessor zur Ausführung unterstützt wird/werden; oder 2) einer Form, die alternative Routinen aufweist, die unter Verwendung verschiedener Kombinationen der Befehle aller Klassen geschrieben sind, und einen Steuerflusscode aufweist, der die auszuführenden Routinen basierend auf Befehlen auswählt, die durch den Prozessor unterstützt werden, der momentan den Code ausführt.
  • BEISPIELHAFTES SPEZIELLES VEKTORFREUNDLICHES BEFEHLSFORMAT
  • 13A ist ein Blockschaltbild, das ein beispielhaftes spezielles vektorfreundliches Befehlsformat gemäß Ausführungsformen der Erfindung veranschaulicht. 13A zeigt ein spezielles vektorfreundliches Befehlsformat 1300, das in dem Sinne speziell ist, dass es den Ort, die Größe, die Interpretation und die Reihenfolge der Felder sowie Werte für einige dieser Felder angibt. Das spezielle vektorfreundliche Befehlsformat 1300 kann dafür verwendet werden, den x86-Befehlssatz zu erweitern, und somit sind einige der Felder ähnlich denen oder die gleichen wie die, die im vorhandenen x86-Befehlssatz und seiner Erweiterung verwendet werden (z. B. AVX). Dieses Format bleibt mit dem Präfixcodierfeld, dem realen Opcode-Byte-Feld, dem MOD-R/M-Feld, dem SIB-Feld, dem Verschiebungsfeld und den Immediate-Feldern des vorhandenen x86-Befehlssatzes mit Erweiterungen konsistent. Die Felder aus 12, in die die Felder aus 13A abgebildet werden, sind veranschaulicht.
  • Es sollte verstanden werden, dass, obgleich Ausführungsformen der Erfindung zur Veranschaulichung mit Bezug auf das spezielle vektorfreundliche Befehlsformat 1300 im Kontext des generischen vektorfreundlichen Befehlsformats 1200 beschrieben werden, die Erfindung nicht auf das spezielle vektorfreundliche Befehlsformat 1300 beschränkt ist, außer dort, wo es beansprucht wird. Beispielsweise zieht das generische vektorfreundliche Befehlsformat 1200 eine Vielzahl verschiedener möglicher Größen für die verschiedenen Felder in Betracht, während das spezielle vektorfreundliche Befehlsformat 1300 mit Feldern von bestimmten Größen gezeigt ist. Als konkretes Beispiel: Obgleich das Datenelementbreitenfeld 1264 als ein 1-Bit-Feld im speziellen vektorfreundlichen Befehlsformat 1300 veranschaulicht ist, ist die Erfindung nicht darauf beschränkt (das heißt, das generische vektorfreundliche Befehlsformat 1200 zieht auch andere Größen des Datenelementbreitenfelds 1264 in Betracht).
  • Das generische vektorfreundliche Befehlsformat 1200 weist die folgenden Felder auf, die unten in der in 13A veranschaulichten Reihenfolge aufgeführt sind.
  • EVEX-Präfix (Bytes 0-3) 1302: Ist in einer 4-Byte-Form codiert.
  • Formatfeld 1240 (EVEX-Byte 0, Bits [7:0]): Das erste Byte (EVEX-Byte 0) ist das Formatfeld 1240, und es enthält 0x62 (den eindeutigen Wert, der in einer Ausführungsform der Erfindung zum Unterscheiden des vektorfreundlichen Befehlsformats verwendet wird).
  • Die zweiten bis vierten Bytes (EVEX-Bytes 1-3) weisen eine Anzahl von Bit-Feldern auf, die eine spezielle Fähigkeit bereitstellen.
  • REX-Feld 1305 (EVEX-Byte 1, Bits [7-5]): Besteht aus einem EVEX.R-Bit-Feld (EVEX-Byte 1, Bit [7] - R), EVEX.X-Bit-Feld (EVEX-Byte 1, Bit [6] - X) und 1257BEX-Byte 1, Bit [5] - B). Die EVEX.R-, EVEX.X- und EVEX.B-Bit-Felder stellen die gleiche Funktionalität wie die entsprechenden VEX-Bit-Felder bereit und sind unter Verwendung der Einerkomplement-Form codiert, d. h. ZMM0 ist als 1111B codiert, ZMM15 ist als 0000B codiert. Andere Felder der Befehle codieren die niedrigeren drei Bits der Registerindizes, wie in der Technik bekannt ist (rrr, xxx und bbb), so dass Rrrr, Xxxx und Bbbb durch Hinzufügen von EVEX.R, EVEX.X und EVEX.B ausgebildet werden können.
  • REX'-Feld 1210: Dies ist der erste Teil des REX'-Felds 1210 und ist das EVEX.R'-Bit-Feld (EVEX-Byte 1, Bit [4] - R'), das zum Codieren entweder der oberen 16 oder der unteren 16 des erweiterten 32-Register-Satzes verwendet wird. In einer Ausführungsform der Erfindung wird dieses Bit, zusammen mit anderen, wie unten angezeigt, in einem Bit-invertierten Format gespeichert, um eine Unterscheidung (im wohlbekannten x86-32-Bit-Modus) zum BOUND-Befehl zu machen, dessen reales Opcode-Byte 62 ist, akzeptiert aber im MOD-R/M-Feld (unten beschrieben) nicht den Wert von 11 im MOD-Feld; alternative Ausführungsformen der Erfindung speichern weder dieses noch die anderen angezeigten Bits unten im invertierten Format. Ein Wert von 1 wird zum Codieren der unteren 16 Register verwendet. Mit anderen Worten wird R'Rrrr durch Kombinieren von EVEX.R', EVEX.R und des anderen RRR aus anderen Feldern ausgebildet.
  • Opcode-Abbildfeld 1315 (EVEX-Byte 1, Bits [3:0] - mmmm): Sein Inhalt codiert ein impliziertes führendes Opcode-Byte (0F, 0F 38 oder 0F 3).
  • Datenelementbreitenfeld 1264 (EVEX-Byte 2, Bit [7] - W): Wird durch die Bezeichnung EVEX.W repräsentiert. EVEX.W wird verwendet, um die Granularität (Größe) des Datentyps zu definieren (entweder 32-Bit-Datenelemente oder 64-Bit-Datenelemente).
  • EVEX.wvv 1320 (EVEX-Byte 2, Bits [6:3]-vvvv): Die Rolle von EVEX.vvvv kann Folgendes umfassen: 1) EVEX.vvvv codiert den ersten Quellregisteroperanden, der in invertierter (Einerkomplement-)Form angegeben ist, und gilt für Befehle mit 2 oder mehr Quelloperanden; 2) EVEX.vvvv codiert den Zielregisteroperanden, der für bestimmte Vektorverschiebungen in Einerkomplement-Form angegeben ist; oder 3) EVEX.vvvv codiert keinen Operanden, das Feld ist reserviert und sollte 1111b enthalten. Somit codiert das EVEX.vwv-Feld 1320 die 4 niederwertigen Bits des ersten Quellregisterspezifikators, der in invertierter (Einerkomplement-)Form gespeichert wird. Je nach Befehl wird ein zusätzliches unterschiedliches EVEX-Bit-Feld verwendet, um die Spezifikatorgröße auf 32 Register zu erweitern.
  • EVEX.U 1268 - Klassenfeld (EVEX-Byte 2, Bit [2]-U): Falls EVEX.U = 0, so zeigt es Klasse A oder EVEX.U0 an; falls EVEX.U = 1, so zeigt es Klasse B oder EVEX.U1 an.
  • Präfixcodierfeld 1325 (EVEX-Byte 2, Bits [1:0]-pp): Stellt zusätzliche Bits für das Basisoperationsfeld bereit. Zusätzlich zur Bereitstellung von Unterstützung für die Legacy-SSE-Befehle im EVEX-Präfix-Format hat dies auch den Vorteil, das SIMD-Präfix zu kompaktieren (anstatt ein Byte zu erfordern, um das SIMD-Präfix auszudrücken, verlangt das EVEX-Präfix nur 2 Bits). Um Legacy-SSE-Befehle zu unterstützen, die ein SIMD-Präfix (66H, F2H, F3H) sowohl im Legacy-Format als auch im EVEX-Präfix-Format verwenden, werden diese Legacy-SIMD-Präfixe in einer Ausführungsform im SIMD-Präfixcodierfeld codiert und werden zur Laufzeit zum Legacy-SIMD-Präfix erweitert, bevor sie an das PLA des Decodierers bereitgestellt werden (somit kann das PLA sowohl das Legacy- als auch das EVEX-Format dieser Legacy-Befehle ohne Modifizierung ausführen). Obwohl neuere Befehle den Inhalt des EVEX-Präfixcodierfelds direkt als eine Opcode-Erweiterung verwenden könnten, nehmen bestimmte Ausführungsformen aus Konsistenzgründen eine ähnliche Erweiterung vor, aber erlauben die Angabe anderer Bedeutungen durch diese Legacy-SIMD-Präfixe. Eine alternative Ausführungsform kann das PLA umgestalten, um die 2-Bit-SIMD-Präfixcodierungen zu unterstützen, und erfordert somit keine Erweiterung.
  • Alpha-Feld 1252 (EVEX-Byte 3, Bit [7] - EH; auch bekannt als EVEX.EH, EVEX.rs, EVEX.RL, EVEX.Schreibmaskensteuerung und EVEX.N; auch mit α veranschaulicht): Wie zuvor beschrieben, ist dieses Feld kontextspezifisch.
  • Beta-Feld 1254 (EVEX-Byte 3, Bits [6:4]-SSS; auch bekannt als EVEX.s2-0, EVEX.r2-0, EVEX.rrl, EVEX.LL0, EVEX.LLB; auch mit βββ veranschaulicht): Wie zuvor beschrieben, ist dieses Feld kontextspezifisch.
  • REX'-Feld 1210: Dies ist der Rest des REX'-Felds und ist das EVEX.V'-Bit-Feld (EVEX-Byte 3, Bit [3] - V'), das zum Codieren entweder der oberen 16 oder der unteren 16 des erweiterten 32-Register-Satzes verwendet werden kann. Dieses Bit wird im Bit-invertierten Format gespeichert. Ein Wert von 1 wird zum Codieren der unteren 16 Register verwendet. Mit anderen Worten wird V'VVVV durch Kombinieren von EVEX.V', EVEX.vvw ausgebildet.
  • Schreibmaskenfeld 1270 (EVEX-Byte 3, Bits [2:0]-kkk): Sein Inhalt gibt den Index eines Registers in den Schreibmaskenregistern an, wie zuvor beschrieben. In einer Ausführungsform der Erfindung hat der spezielle Wert EVEX.kkk=000 ein besonderes Verhalten, das impliziert, dass keine Schreibmaske für den bestimmten Befehl verwendet wird (dies kann auf vielfältige Weise implementiert werden, einschließlich der Verwendung einer Schreibmaske, die mit allen Einsen festverdrahtet ist, oder Hardware, die die Maskierungshardware umgeht).
  • Ein reales Opcode-Feld 1330 (Byte 4) ist auch als Opcode-Byte bekannt. Ein Teil des Opcodes wird in diesem Feld angegeben.
  • Das MOD-R/M-Feld 1340 (Byte 5) weist das MOD-Feld 1342, das Reg-Feld 1344 und das R/M-Feld 1346 auf. Wie zuvor beschrieben, unterscheidet der Inhalt des MOD-Felds 1342 zwischen Speicherzugriffs- und Nicht-Speicherzugriffs-Operationen. Die Rolle des Reg-Felds 1344 kann in zwei Situationen zusammengefasst werden: das Codieren entweder des Zielregisteroperanden oder eines Quellregisteroperanden, oder die Behandlung als eine Opcode-Erweiterung und die Nichtverwendung zum Codieren von Befehlsoperanden. Die Rolle des R/M-Felds 1346 kann Folgendes umfassen: Codieren des Befehlsoperanden, der auf eine Speicheradresse verweist, oder Codieren entweder des Zielregisteroperanden oder eines Quellregisteroperanden.
  • Skalierung, Index, Basis(SIB)-Byte (Byte 6): Wie zuvor beschrieben, wird der Inhalt des Skalierungsfelds 1250 zur Speicheradressgenerierung verwendet. SIB.xxx 1354 und SIB.bbb 1356: Auf die Inhalte dieser Felder wurde zuvor mit Bezug auf die Registerindizes Xxxx und Bbbb verwiesen.
  • Verschiebungsfeld 1262A (Bytes 7-10): Wenn das MOD-Feld 1342 10 enthält, sind die Bytes 7-10 das Verschiebungsfeld 1262A, und es funktioniert genauso wie die Legacy-32-Bit-Verschiebung (disp32) und arbeitet mit der Granularität eines Bytes.
  • Verschiebungsfaktorfeld 1262B (Byte 7): Wenn das MOD-Feld 1342 01 enthält, ist das Byte 7 das Verschiebungsfaktorfeld 1262B. Der Ort dieses Felds ist der gleiche wie der der Legacy-x86-Befehlssatz-8-Bit-Verschiebung (disp8), die mit der Granularität eines Bytes arbeitet. Da disp8 um ein Vorzeichen erweitert ist, kann es nur zwischen -128 und 127 Byte Offsets adressieren; in Bezug auf 64-Byte-Cache-Zeilen verwendet disp8 8 Bits, die auf nur vier wirklich brauchbare Werte gesetzt werden können: -128, -64, 0 und 64; da oft ein größerer Bereich benötigt wird, wird disp32 verwendet; jedoch erfordert disp32 4 Byte. Im Gegensatz zu disp8 und disp32 ist das Verschiebungsfaktorfeld 1262B eine Neuinterpretation von disp8; bei Verwendung des Verschiebungsfaktorfelds 1262B wird die tatsächliche Verschiebung durch den Inhalt des Verschiebungsfaktorfelds multipliziert mit der Größe des Speicheroperandenzugriffs (N) bestimmt. Diese Art der Verschiebung wird als disp8*N bezeichnet. Dies reduziert die durchschnittliche Befehlslänge (ein einzelnes Byte wird für die Verschiebung verwendet, aber mit einem viel größeren Bereich). Eine derartige komprimierte Verschiebung basiert auf der Annahme, dass die effektive Verschiebung ein Vielfaches der Granularität des Speicherzugriffs ist, und somit brauchen die redundanten niederwertigen Bits des Adressoffsets nicht codiert zu werden. Mit anderen Worten ersetzt das Verschiebungsfaktorfeld 1262B die Legacy-x86-Befehlssatz-8-Bit-Verschiebung. Somit wird das Verschiebungsfaktorfeld 1262B in der gleichen Weise codiert wie eine x86-Befehlssatz-8-Bit-Verschiebung (also keine Änderungen der ModRM/SIB-Codierungsregeln), wobei die einzige Ausnahme darin besteht, dass disp8 zu disp8*N überladen wird. Mit anderen Worten gibt es keine Änderungen der Codierungsregeln oder Codierungslängen, sondern nur bei der Interpretation des Verschiebungswerts durch Hardware (die die Verschiebung um die Größe des Speicheroperanden skalieren muss, um einen byteweisen Adressoffset zu erhalten). Das Immediate-Feld 1272 arbeitet wie zuvor beschrieben.
  • VOLLSTÄNDIGES OPCODE-FELD
  • 13B ist ein Blockschaltbild, das die Felder des speziellen vektorfreundlichen Befehlsformats 1300 veranschaulicht, die das vollständige Opcode-Feld 1274 gemäß einer Ausführungsform der Erfindung ausbilden. Insbesondere weist das vollständige Opcode-Feld 1274 das Formatfeld 1240, das Basisoperationsfeld 1242 und das Datenelementbreiten(W)-Feld 1264 auf. Das Basisoperationsfeld 1242 weist das Präfixcodierfeld 1325, das Opcode-Abbildfeld 1315 und das reale Opcode-Feld 1330 auf.
  • REGISTERINDEXFELD
  • 13C ist ein Blockschaltbild, das die Felder des speziellen vektorfreundlichen Befehlsformats 1300 veranschaulicht, die das Registerindexfeld 1244 gemäß einer Ausführungsform der Erfindung ausbilden. Insbesondere weist das Registerindexfeld 1244 das REX-Feld 1305, das REX'-Feld 1310, das MODR/M.reg-Feld 1344, das MODR/M.r/m-Feld 1346, das VVW-Feld 1320, das xxx-Feld 1354 und das bbb-Feld 1356 auf.
  • AUGMENTIERUNGSOPERATIONSFELD
  • 13D ist ein Blockschaltbild, das die Felder des speziellen vektorfreundlichen Befehlsformats 1300 veranschaulicht, die das Augmentierungsoperationsfeld 1250 gemäß einer Ausführungsform der Erfindung ausbilden. Wenn das Klasse-(U)-Feld 1268 0 enthält, so bezeichnet es EVEX.U0 (Klasse A 1268A); wenn es 1 enthält, so bezeichnet es EVEX.U1 (Klasse B 1268B). Wenn U=0 und das MOD-Feld 1342 11 enthält (was eine Operation für keinen Speicherzugriff bezeichnet), wird das Alpha-Feld 1252 (EVEX-Byte 3, Bit [7] - EH) als das rs-Feld 1252A interpretiert. Wenn das rs-Feld 1252A eine 1 enthält (Rundung 1252A.1), wird das Beta-Feld 1254 (EVEX-Byte 3, Bits [6:4]-SSS) als das Rundungssteuerungsfeld 1254A interpretiert. Das Rundungssteuerungsfeld 1254A weist ein 1-Bit-SAE-Feld 1256 und ein 2-Bit-Rundungsoperationsfeld 1258 auf. Wenn das rs-Feld 1252A eine 0 enthält (Datentransformation 1252A.2), wird das Beta-Feld 1254 (EVEX-Byte 3, Bits [6:4]-SSS) als ein 3-Bit-Datentransformationsfeld 1254B interpretiert. Wenn U=0 und das MOD-Feld 1342 00, 01 oder 10 enthält (was eine Operation für den Speicherzugriff bezeichnet), wird das Alpha-Feld 1252 (EVEX-Byte 3, Bit [7] - EH) als das Entfernungshinweis(EH, Eviction Hint)-Feld 1252B interpretiert, und das Beta-Feld 1254 (EVEX-Byte 3, Bits [6:4]-SSS) wird als ein 3-Bit-Datenmanipulationsfeld 1254C interpretiert.
  • Wenn U=1, wird das Alpha-Feld 1252 (EVEX-Byte 3, Bit [7] - EH) als das Schreibmaskensteuerungs(Z)-Feld 1252C interpretiert. Wenn U=1 und das MOD-Feld 1342 11 enthält (was eine Operation für keinen Speicherzugriff bezeichnet), wird ein Teil des Beta-Felds 1254 (EVEX-Byte 3, Bit [4] - S0) als das RL-Feld 1257A interpretiert; wenn es eine 1 enthält (Rundung 1257A.1), wird der Rest des Beta-Felds 1254 (EVEX-Byte 3, Bit [6-5]-S2-1) als das Rundungsoperationsfeld 1259A interpretiert, während, wenn das RL-Feld 1257A eine 0 enthält (VSIZE 1257.A2), der Rest des Beta-Felds 1254 (EVEX-Byte 3, Bit [6-5]-S2-1) als das Vektorlängenfeld 1259B (EVEX-Byte 3, Bit [6-5]-L1-0) interpretiert wird. Wenn U=1 und das MOD-Feld 1342 00, 01 oder 10 enthält (was eine Speicherzugriffsoperation bezeichnet), wird das Beta-Feld 1254 (EVEX-Byte 3, Bits [6:4]-SSS) als das Vektorlängenfeld 1259B (EVEX-Byte 3, Bit [6-5]-L1-0) und das Broadcast-Feld 1257B (EVEX-Byte 3, Bit [4]-B) interpretiert.
  • BEISPIELHAFTE REGISTERARCHITEKTUR
  • 14 ist ein Blockschaltbild einer Registerarchitektur 1400 gemäß einer Ausführungsform der Erfindung. In der veranschaulichten Ausführungsform gibt es 32 Vektorregister 1410, die 512 Bit breit sind; diese Register werden als zmm0 bis zmm31 bezeichnet. Die 256 Bits niedrigerer Ordnung der unteren 16 zmm-Register sind auf den Registern ymm0-16 überlagert. Die 128 Bits niedrigerer Ordnung der unteren 16 zmm-Register (die 128 Bits niedrigerer Ordnung der ymm-Register) sind auf den Registern xmm0-15 überlagert. Das spezielle vektorfreundliche Befehlsformat 1300 arbeitet mit dieser überlagerten Registerdatei, wie in den folgenden Tabellen veranschaulicht.
    Anpassbare Vektorlänge Klasse Operationen Register
    Befehlsvorlagen, die das Vektorlängenfeld 1259B nicht einschließen A ( 12A; U=0) 1210, 1215, 1225, 1230 zmm-Register (die Vektorlänge ist 64 Byte)
    B ( 12B; U=1) 1212 zmm-Register (die Vektorlänge ist 64 Byte)
    Befehlsvorlagen, die das Vektorlängenfeld 1259B einschließen B ( 12B; U=1) 1217, 1227 zmm-, ymm- oder xmm-Register (die Vektorlänge ist 64 Byte, 32 Byte oder 16 Byte), abhängig vom Vektorlängenfeld 1259B
  • Mit anderen Worten wählt das Vektorlängenfeld 1259B zwischen einer maximalen Länge und einer oder mehreren anderen kürzeren Längen, wobei jede dieser kürzeren Längen halb so lang ist wie die vorherige Länge; und Befehlsvorlagen ohne das Vektorlängenfeld 1259B arbeiten mit der maximalen Vektorlänge. Ferner arbeiten die Klasse-B-Befehlsvorlagen des speziellen vektorfreundlichen Befehlsformats 1300 in einer Ausführungsform auf gepackten oder skalaren Einfach-/Doppelgenauigkeits-Gleitkommadaten und gepackten oder skalaren ganzzahligen Daten. Skalare Operationen sind Operationen, die an der Datenelementposition der niedrigsten Ordnung in einem zmm/ymm/xmm-Register durchgeführt werden; die Datenelementpositionen einer höheren Ordnung bleiben je nach Ausführungsform entweder so, wie sie vor dem Befehl waren, oder werden genullt.
  • Schreibmaskenregister 1415: In der veranschaulichten Ausführungsform gibt es 8 Schreibmaskenregister (k0 bis k7) von jeweils 64 Bit Größe. In einer alternativen Ausführungsform sind die Schreibmaskenregister 1415 16 Bit groß. Wie zuvor beschrieben, kann das Vektormaskenregister k0 in einer Ausführungsform der Erfindung nicht als eine Schreibmaske verwendet werden; wenn die Codierung, die normalerweise k0 anzeigen würde, für eine Schreibmaske verwendet wird, wird eine festverdrahtete Schreibmaske von 0xFFFF gewählt, so dass die Schreibmaskierung für diesen Befehl effektiv deaktiviert wird.
  • Allzweckregister 1425: In der veranschaulichten Ausführungsform gibt es sechzehn 64-Bit-Allzweckregister, die zusammen mit den vorhandenen x86-Adressierungsmodi verwendet werden, um Speicheroperanden zu adressieren. Diese Register werden als RAX, RBX, RCX, RDX, RBP, RSI, RDI, RSP und R8 bis R15 bezeichnet.
  • Skalare Gleitkomma-Stapelregisterdatei (x87-Stapel) 1445, auf der die MMX-Packed-Integer-Flat-Register-Datei 1450 aliasiert wird: In der veranschaulichten Ausführungsform ist der x87-Stapel ein 8-Element-Stapel, der verwendet wird, um skalare Gleitkommaoperationen an 32/64/80-Bit-Gleitkommadaten unter Verwendung der x87-Befehlssatzerweiterung durchzuführen; während die MMX-Register verwendet werden, um Operationen an 64-Bit-Packed-Integer-Daten durchzuführen sowie Operanden für einige Operationen zu halten, die zwischen den MMX- und XMM-Registern durchgeführt werden.
  • Alternative Ausführungsformen der Erfindung können breitere oder schmalere Register verwenden. Zusätzlich können alternative Ausführungsformen der Erfindung mehr, weniger oder andere Registerdateien und Register verwenden.
  • BEISPIELHAFTE KERNARCHITEKTUREN, PROZESSOREN UND COMPUTERARCHITEKTUREN
  • Prozessorkerne (CPU-Kerne) können auf unterschiedliche Weise, für unterschiedliche Zwecke und in verschiedenen Prozessoren implementiert sein. Zum Beispiel können Implementierungen derartiger Kerne Folgendes aufweisen: 1) einen Allzweck-In-Order-Kern, der für Allzweckberechnungen bestimmt ist; 2) einen Hochleistungs-Allzweck-Out-of-Order-Kern, der für Allzweckberechnungen bestimmt ist; 3) einen Spezialzweckkern, der primär für grafische und/oder wissenschaftliche (Durchsatz-)Berechnungen bestimmt ist. Implementierungen von unterschiedlichen Prozessoren können Folgendes aufweisen: 1) eine CPU, die einen oder mehrere für Allzweckberechnungen bestimmte Allzweck-In-Order-Kerne und/oder einen oder mehrere für Allzweckberechnungen bestimmte Allzweck-Out-of-Order-Kerne aufweist; und 2) einen Coprozessor, der einen oder mehrere Spezialzweckkerne aufweist, die primär für grafische und/oder wissenschaftliche (Durchsatz-)Berechnungen bestimmt sind. Solche unterschiedlichen Prozessoren führen zu unterschiedlichen Computersystemarchitekturen, die Folgendes aufweisen können: 1) den Coprozessor auf einem von der CPU getrennten Chip; 2) den Coprozessor auf einem getrennten Die in demselben Package wie eine CPU; 3) den Coprozessor auf demselben Die wie eine CPU (in welchem Fall so ein Coprozessor manchmal als Spezialzwecklogik, wie beispielsweise integrierte grafische und/oder wissenschaftliche (Durchsatz-)Logik, oder als Spezialzweckkerne bezeichnet wird); und 4) ein System auf einem Chip, das auf demselben Die die beschriebene CPU (manchmal als Anwendungskern(e) oder Anwendungsprozessor(en) bezeichnet), den oben beschriebenen Coprozessor und zusätzliche Funktionalität aufweisen kann. Beispielhafte Kernarchitekturen werden als Nächstes beschrieben, gefolgt von Beschreibungen von beispielhaften Prozessoren und Computerarchitekturen.
  • BEISPIELHAFTE KERNARCHITEKTUREN
  • IN-ORDER- UND OUT-OF-ORDER-KERN-BLOCKSCHALTBILD
  • 15A ist ein Blockschaltbild, das sowohl eine beispielhafte In-Order-Pipeline als auch eine beispielhafte Out-of-Order-Issue/Ausführungs-Pipeline mit Registerumbenennung gemäß Ausführungsformen der Erfindung veranschaulicht. 15B ist ein Blockschaltbild, das sowohl eine beispielhafte Ausführungsform eines In-Order-Architekturkerns als auch eines beispielhaften Out-of-Order-Issue/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 den 15A-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-Issue/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 15A weist eine Prozessor-Pipeline 1500 eine Fetch-Stufe 1502, eine Längendecodierstufe 1504, eine Decodierstufe 1506, eine Zuweisungsstufe 1508, eine Umbenennungsstufe 1510, eine Scheduler-Stufe (auch bekannt als eine Dispatch- oder Issue-Stufe) 1512, eine Register-Lese-/Speicher-Lese-Stufe 1514, eine Ausführungsstufe 1516, eine Rückschreib-/Speicher-Schreib-Stufe 1518, eine Ausnahmehandhabungsstufe 1522 und eine Commit-Stufe 1524 auf.
  • 15B zeigt den Prozessorkern 1590, der eine Frontend-Einheit 1530 gekoppelt mit einer Ausführungs-Engine-Einheit 1550 aufweist, und beide sind mit einer Speichereinheit 1570 gekoppelt. Der Kern 1590 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 1590 ein Spezialzweckkern 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-Einheit 1530 umfasst eine Abzweigvorhersageeinheit 1532, welche mit einer Befehlscache-Einheit 1534 gekoppelt ist, die mit einem Befehlsübersetzungs-LookAside-Puffer (Translation Lookaside Buffer, TLB) 1536 gekoppelt ist, der mit einer Befehls-Fetch-Einheit 1538 gekoppelt ist, die mit einer Decodiereinheit 1540 gekoppelt ist. Die Decodiereinheit 1540 (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 Decodiereinheit 1540 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 1590 einen Mikrocode-ROM oder ein anderes Medium auf, das Mikrocode für bestimmte Makrobefehle speichert (z. B. in der Decodiereinheit 1540 oder anderweitig innerhalb der Frontend-Einheit 1530). Die Decodiereinheit 1540 ist mit einer Umbenennungs-/Zuweisungseinheit 1552 in der Ausführungs-Engine-Einheit 1550 gekoppelt.
  • Die Ausführungs-Engine-Einheit 1550 umfasst die Umbenennungs-/Zuweisungseinheit 1552 gekoppelt mit einer Retirement-Einheit 1554 und einem Satz aus einer oder mehreren Scheduler-Einheit(en) 1556. Die Scheduler-Einheit(en) 1556 repräsentiert/repräsentieren eine beliebige Anzahl unterschiedlicher Scheduler, einschließlich Reservierungsstationen, zentrales Befehlsfenster usw. Die Scheduler-Einheit(en) 1556 ist/sind mit der/den physikalischen Registerdateieinheit(en) 1558 gekoppelt. Jede der physikalischen Registerdateieinheiten 1558 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 Registerdateieinheit 1558 eine Vektorregistereinheit, eine Schreibmaskenregistereinheit und eine Skalarregistereinheit. Diese Registereinheiten können Architekturvektorregister, Vektormaskenregister und Allzweckregister bereitstellen. Die physikalische(n) Registerdateieinheit(en) 1558 wird/werden durch die Retirement-Einheit 1554 überlappt, um verschiedene Möglichkeiten zu veranschaulichen, mit welchen Registerumbenennung und Out-of-Order-Ausführung implementiert werden können (z. B. unter Verwendung eines/von Umordnungspuffers/Umordnungspuffern und einer/von Retirement-Registerdatei(en); unter Verwendung einer/von Zukunftsdatei(en), eines/von Verlaufspuffers/Verlaufspuffern und einer/von Retirement-Registerdatei(en); unter Verwendung einer/von Registerkarte(n) und eines Pools von Registern usw.). Die Retirement-Einheit 1554 und die physikalische(n) Registerdateieinheit(en) 1558 sind mit dem/den Ausführungscluster(n) 1560 gekoppelt. Das/die Ausführungscluster 1560 beinhaltet/beinhalten einen Satz von einer oder mehreren Ausführungseinheiten 1562 und einen Satz von einer oder mehreren Speicherzugriffseinheiten 1564. Die Ausführungseinheiten 1562 können 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ührungseinheiten, die für spezielle Funktionen oder Sätze von Funktionen dediziert sind, umfassen können, können andere Ausführungsformen nur eine Ausführungseinheit oder mehrere Ausführungseinheiten, die alle sämtliche Funktionen durchführen, umfassen. Die Scheduler-Einheit(en) 1556, die physikalische(n) Registerdateieinheit(en) 1558 und das/die Ausführungscluster 1560 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 ihr(e) eigene(s) Scheduler-Einheit, physikalische Registerdateieinheit 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 Speicherzugriffseinheit(en) 1564 aufweist). Es versteht sich auch, dass, wenn separate Pipelines verwendet werden, eine oder mehrere dieser Pipelines Out-of-Order-Issue/Ausführungs-Pipelines und der Rest In-Order-Pipelines sein können.
  • Der Satz von Speicherzugriffseinheiten 1564 ist mit der Speichereinheit 1570 gekoppelt, welche eine Daten-TLB-Einheit 1572 gekoppelt mit einer Datencache-Einheit 1574 gekoppelt mit einer Level-2(L2)-Cache-Einheit 1576 umfasst. In einer beispielhaften Ausführungsform kann die Speicherzugriffseinheit 1564 eine Lasteinheit, eine Speicheradresseinheit und eine Speicherdateneinheit umfassen, von denen jede mit der Daten-TLB-Einheit 1572 in der Speichereinheit 1570 gekoppelt ist. Die Befehlscache-Einheit 1534 ist ferner mit einer Level-2(L2)-Cache-Einheit 1576 in der Speichereinheit 1570 gekoppelt. Die L2-Cache-Einheit 1576 ist mit einem oder mehreren anderen Cachelevels und schließlich mit einem Hauptspeicher gekoppelt.
  • Als Beispiel kann die beispielhafte Out-of-Order-Issue/Ausführungs-Kernarchitektur mit Registerumbenennung die Pipeline 1500 wie folgt implementieren: 1) der Befehls-Fetch 1538 führt die Fetch- und Längendecodierstufen 1502 und 1504 durch; 2) die Decodiereinheit 1540 führt die Decodierstufe 1506 durch; 3) die Umbenennungs-/Zuweisungseinheit 1552 führt die Zuweisungsstufe 1508 und die Umbenennungsstufe 1510 durch; 4) die Scheduler-Einheit(en) 1556 führt/führen die Scheduler-Stufe 1512 durch; 5) die physikalische Registerdateieinheit(en) 1558 und die Speichereinheit 1570 führen die Register-Lese-/Speicher-Lese-Stufe 1514 durch; das Ausführungscluster 1560 führt die Ausführungsstufe 1516 durch; 6) die Speichereinheit 1570 und die physikalische Registerdateieinheit(en) 1558 führen die Rückschreib-/Speicher-Schreib-Stufe 1518 durch; 7) verschiedene Einheiten können an der Ausnahmehandhabungsstufe 1522 beteiligt sein; und 8) die Retirement-Einheit 1554 und die physikalische(n) Registerdateieinheit(en) 1558 führen die Commit-Stufe 1524 durch.
  • Der Kern 1590 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 1590 Logik zum Unterstützen einer gepackten Datenbefehlssatzerweiterung (z. B. AVX1, AVX2), 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-Fetching 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. Während die veranschaulichte Ausführungsform des Prozessors auch separate Befehls- und Datencache-Einheiten 1534/1574 und eine gemeinsam genutzte L2-Cache-Einheit 1576 umfasst, können alternative Ausführungsformen einen einzelnen internen Cache für sowohl Befehle als auch Daten aufweisen, wie beispielsweise einen internen Level-1(L1)-Cache 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.
  • SPEZIELLE BEISPIELHAFTE IN-ORDER-KERNARCHITEKTUR
  • 16A-B veranschaulichen ein Blockschaltbild einer spezielleren beispielhaften In-Order-Kernarchitektur, wobei dieser Kern einer von mehreren logischen Blöcken (die andere Kerne des gleichen Typs und/oder unterschiedlicher Typen aufweisen) in einem Chip wäre. Die logischen Blöcke kommunizieren über ein Zwischenverbindungsnetz hoher Bandbreite (z. B. ein Ringnetz) mit einiger feststehender Funktionslogik, Speicher-E/A-Schnittstellen und anderer notwendiger E/A-Logik, in Abhängigkeit von der Anwendung.
  • 16A ist ein Blockschaltbild eines einzelnen Prozessorkerns zusammen mit seiner Verbindung zum On-Die-Zwischenverbindungsnetz 1602 und mit seinem lokalen Subset des Level-2(L2)-Caches 1604 gemäß Ausführungsformen der Erfindung. In einer Ausführungsform unterstützt ein Befehlsdecoder 1600 den x86-Befehlssatz mit einer gepackten Datenbefehlssatzerweiterung. Ein L1-Cache 1606 ermöglicht Zugriffe mit niedriger Latenz auf Cache-Speicher in die Skalar- und Vektoreinheiten. Während in einer Ausführungsform (zur Vereinfachung des Designs) eine Skalareinheit 1608 und eine Vektoreinheit 1610 separate Registersätze (entsprechend Skalarregister 1612 und Vektorregister 1614) verwenden und zwischen ihnen übertragene Daten in Speicher geschrieben und dann aus einem Level-1(L1)-Cache 1606 zurück eingelesen werden, können alternative Ausführungsformen der Erfindung einen unterschiedlichen Ansatz verwenden (z. B. einen einzelnen Registersatz verwenden oder einen Kommunikationspfad umfassen, der es ermöglicht, dass Daten zwischen den beiden Registerdateien übertragen werden, ohne dass sie geschrieben und zurückgelesen werden).
  • Das lokale Subset des L2-Caches 1604 ist Teil eines globalen L2-Caches, der in separate lokale Subsets, einen pro Prozessorkern, aufgeteilt ist. Jeder Prozessorkern hat einen direkten Zugriffspfad auf sein eigenes lokales Subset des L2-Caches 1604. Daten, die durch einen Prozessorkern gelesen werden, werden in seinem L2-Cache-Subset 1604 gespeichert, und es kann schnell auf sie zugegriffen werden, und zwar parallel zu anderen Prozessorkernen, die auf ihre eigenen lokalen L2-Cache-Subsets zugreifen. Daten, die durch einen Prozessorkern geschrieben werden, werden in seinem eigenen L2-Cache-Subset 1604 gespeichert und sie werden, falls nötig, von anderen Subsets gelöscht. Das Ringnetz stellt die Kohärenz für gemeinsam genutzte Daten sicher. Das Ringnetz ist bidirektional, um es Einheiten wie Prozessorkernen, L2-Caches und anderen logischen Blöcken zu gestatten, innerhalb des Chips miteinander zu kommunizieren. Jeder Ringdatenpfad ist pro Richtung 1012 Bits breit.
  • 16B ist eine erweiterte Ansicht eines Teils des Prozessorkerns aus 16A gemäß Ausführungsformen der Erfindung. 16B weist einen L1-Datencache 1606A, einen Teil des L1-Caches 1604 sowie mehr Details in Bezug auf die Vektoreinheit 1610 und die Vektorregister 1614 auf. Insbesondere ist die Vektoreinheit 1610 eine 16 Bit breite Vektorverarbeitungseinheit (VPU, Vector Processing Unit) (siehe die 16 Bit breite ALU 1628), die eine oder mehrere von Ganzzahl-, Einzelpräzision-Gleitkomma- und Doppelpräzision-Gleitkomma-Befehle ausführt. Die VPU unterstützt das Swizzling der Registereingaben mit der Swizzle-Einheit 1620, die numerische Umwandlung mit den numerischen Umwandlungseinheiten 1622A-B und die Replikation mit der Replikationseinheit 1624 in der Speichereingabe. Die Schreibmaskenregister 1626 ermöglichen es, das resultierende Vektorschreiben mit einem Prädikat zu versehen.
  • 17 ist ein Blockschaltbild eines Prozessors 1700, 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 17 veranschaulichen einen Prozessor 1700 mit einem einzelnen Kern 1702A, einem Systemagenten 1710, einem Satz von einer oder mehreren Bus-Controller-Einheiten 1716, während die optionale Hinzufügung der Kästchen mit gestrichelten Linien einen alternativen Prozessor 1700 mit mehreren Kernen 1702A-N, einem Satz von einer oder mehreren integrierten Speichercontrollereinheit(en) 1714 in der Systemagenteinheit 1710 und Spezialzwecklogik 1708 veranschaulicht.
  • Somit können unterschiedliche Implementierungen des Prozessors 1700 Folgendes umfassen: 1) eine CPU mit der Spezialzwecklogik 1708, bei der es sich um integrierte grafische und/oder wissenschaftliche (Durchsatz-)Logik handelt (die einen oder mehrere Kerne aufweisen kann), und die Kerne 1702A-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 1702A-N, bei denen es sich um eine große Anzahl von Spezialzweckkernen handelt, die primär für grafische und/oder wissenschaftliche (Durchsatz-)Logik beabsichtigt sind; und 3) einen Coprozessor mit den Kernen 1702A-N, bei denen es sich um eine große Anzahl von Allzweck-In-Order-Kernen handelt. Somit kann der Prozessor 1700 ein Allzweckprozessor, Coprozessor oder Spezialzweckprozessor 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 1700 kann ein Teil von einem oder mehreren Substraten sein und/oder auf einem oder mehreren Substraten implementiert sein, und zwar unter Verwendung von jeder einer Reihe von Prozesstechnologien, wie beispielsweise BiCMOS, CMOS oder NMOS.
  • Die Speicherhierarchie umfasst ein oder mehrere Cache-Level innerhalb der Kerne, einen Satz oder eine oder mehrere gemeinsam genutzte Cache-Einheiten 1706 und externen Speicher (nicht gezeigt) gekoppelt mit dem Satz integrierter Speichercontrollereinheiten 1714. Der Satz gemeinsam genutzter Cache-Einheiten 1706 kann einen oder mehrere Caches des mittleren Levels, wie Level 2 (L2), Level 3 (L3), Level 4 (L4) oder andere Cache-Level, einen Last-Level-Cache (LLC) und/oder Kombinationen davon umfassen. Obgleich in einer Ausführungsform eine ringbasierte Zwischenverbindungseinheit 1712 die integrierte Grafiklogik 1708 (die integrierte Grafiklogik 1708 ist ein Beispiel von und wird hierin auch als Spezialzwecklogik bezeichnet), den Satz gemeinsam genutzter Cache-Einheiten 1706 und die Systemagenteinheit 1710/die integrierte(n) Speichercontrollereinheit(en) 1714 verbindet, können alternative Ausführungsformen eine beliebige Anzahl von wohlbekannten Techniken zum Verbinden derartiger Einheiten verwenden. In einer Ausführungsform wird die Kohärenz zwischen einer oder mehreren Cache-Einheiten 1706 und den Kernen 1702A-N aufrechterhalten.
  • In einigen Ausführungsformen sind einer oder mehrere der Kerne 1702A-N zum Multithreading in der Lage. Der Systemagent 1710 weist diejenigen Komponenten auf, die die Kerne 1702A-N koordinieren und betreiben. Die Systemagenteinheit 1710 kann beispielsweise eine Leistungssteuerungseinheit (PCU, Power Control Unit) und eine Anzeigeeinheit aufweisen. Die PCU kann Logik und Komponenten darstellen oder diese einschließen, die zum Regulieren des Stromzustands der Kerne 1702A-N und der integrierten Grafiklogik 1708 benötigt werden. Die Anzeigeeinheit dient der Ansteuerung von einer oder mehreren extern angeschlossenen Anzeigen.
  • Die Kerne 1702A-N können in Bezug auf den Architekturbefehlssatz homogen oder heterogen sein; d.h. zwei oder mehr der Kerne 1702A-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.
  • BEISPIELHAFTE COMPUTERARCHITEKTUREN
  • 18-21 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 18 ist ein Blockschaltbild eines Systems 1800 gemäß einer Ausführungsform der vorliegenden Erfindung gezeigt. Das System 1800 kann einen oder mehrere Prozessoren 1810, 1815 aufweisen, die mit einem Controller-Hub 1820 gekoppelt sind. In einer Ausführungsform weist der Controller-Hub 1820 einen Grafikspeichercontroller-Hub (GMCH, Graphics Memory Controller Hub) 1890 und einen Eingabe/Ausgabe-Hub (IOH, Input/Output Hub) 1850 (die sich auf separaten Chips befinden können) auf; der GMCH 1890 weist Speicher- und Grafikcontroller auf, mit denen der Speicher 1840 und ein Coprozessor 1845 gekoppelt sind; der IOH 1850 koppelt Eingabe/Ausgabe(E/A)-Vorrichtungen 1860 mit dem GMCH 1890. Alternativ sind einer oder beide der Speicher- und Grafikcontroller im Prozessor integriert (wie hierin beschrieben), der Speicher 1840 und der Coprozessor 1845 sind direkt mit dem Prozessor 1810 gekoppelt, und der Controller-Hub 1820 befindet sich in einem einzelnen Chip mit dem IOH 1850.
  • Die optionale Natur zusätzlicher Prozessoren 1815 ist in 18 mit unterbrochenen Linien dargestellt. Jeder Prozessor 1810, 1815 kann einen oder mehrere der hierin beschriebenen Verarbeitungskerne aufweisen und kann eine Version des Prozessors 1700 sein.
  • Der Speicher 1840 kann beispielsweise dynamischer Direktzugriffsspeicher (DRAM, Dynamic Random Access Memory), Phasenwechselspeicher (PCM, Phase Change Memory) oder eine Kombination der beiden sein. Bei wenigstens einer Ausführungsform kommuniziert der Controller-Hub 1820 mit dem/den Prozessor(en) 1810, 1815 über einen Multi-Drop-Bus, wie beispielsweise ein Frontside-Bus (FSB), eine Punkt-zu-Punkt-Schnittstelle, wie beispielsweise QuickPath Interconnect (QPI), oder eine ähnliche Verbindung 1895.
  • In einer Ausführungsform ist der Coprozessor 1845 ein Spezialzweckprozessor, 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 1820 einen integrierten Grafikbeschleuniger aufweisen.
  • Es kann eine Vielzahl von Unterschieden zwischen den physikalischen Ressourcen 1810, 1815 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 1810 Befehle aus, die Datenverarbeitungsoperationen eines allgemeinen Typs steuern. Innerhalb der Befehle können Coprozessorbefehle eingebettet sein. Der Prozessor 1810 erkennt diese Coprozessorbefehle als einen Typ, der durch den angeschlossenen Coprozessor 1845 ausgeführt werden sollte. Dementsprechend gibt der Prozessor 1810 diese Coprozessorbefehle (oder Steuersignale, die Coprozessorbefehle repräsentieren) auf einem Coprozessor-Bus oder einer anderen Zwischenverbindung an den Coprozessor 1845 aus. Der/die Coprozessor(en) 1845 akzeptiert/akzeptieren die empfangenen Coprozessorbefehle und führt/führen diese aus.
  • Bezug nehmend nun auf 19 ist ein Blockschaltbild eines ersten spezielleren beispielhaften Systems 1900 gemäß einer Ausführungsform der vorliegenden Erfindung gezeigt. Wie in 19 gezeigt, ist das Multiprozessorsystem 1900 ein Punkt-zu-Punkt-Zwischenverbindungssystem, und es weist einen ersten Prozessor 1970 und einen zweiten Prozessor 1980 gekoppelt über eine Punkt-zu-Punkt-Zwischenverbindung 1950 auf. Jeder der Prozessoren 1970 und 1980 kann eine Version des Prozessors 1700 sein. In einer Ausführungsform der Erfindung sind die Prozessoren 1970 und 1980 jeweils die Prozessoren 1810 und 1815, während der Coprozessor 1938 der Coprozessor 1845 ist. In einer anderen Ausführungsform sind die Prozessoren 1970 und 1980 jeweils der Prozessor 1810 und der Coprozessor 1845.
  • Die Prozessoren 1970 und 1980 sind einschließlich der integrierten Speichercontroller(IMC, Integrated Memory Controller)-Einheiten 1972 bzw. 1982 gezeigt. Der Prozessor 1970 weist als Teil seiner Bus-Controller-Einheiten auch die Punkt-zu-Punkt(P-P)-Schnittstellen 1976 und 1978 auf; ähnlich weist der zweite Prozessor 1980 die P-P-Schnittstellen 1986 und 1988 auf. Die Prozessoren 1970, 1980 können über eine Punkt-zu-Punkt(P-P)-Schnittstelle 1950 unter Verwendung der P-P-Schnittstellenschaltungen 1978, 1988 Informationen austauschen. Wie in 19 gezeigt, koppeln die IMCs 1972 und 1982 die Prozessoren mit jeweiligen Speichern, nämlich einem Speicher 1932 und einem Speicher 1934, bei denen es sich um Abschnitte des Hauptspeichers lokal angeschlossen an die jeweiligen Prozessoren handeln kann.
  • Die Prozessoren 1970, 1980 können jeweils über die einzelnen P-P-Schnittstellen 1952, 1954 unter Verwendung der Punkt-zu-Punkt-Schnittstellenschaltungen 1976, 1994, 1986, 1998 Informationen mit einem Chipsatz 1990 austauschen. Der Chipsatz 1990 kann optional über eine Hochleistungsschnittstelle 1992 Informationen mit dem Coprozessor 1938 austauschen. In einer Ausführungsform ist der Coprozessor 1938 ein Spezialzweckprozessor, 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 Cache-Informationen 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 1990 kann über eine Schnittstelle 1996 mit einem ersten Bus 1916 gekoppelt sein. In einer Ausführungsform kann der erste Bus 1916 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 19 gezeigt, können verschiedene E/A-Vorrichtungen 1914 mit dem ersten Bus 1916 gekoppelt sein, zusammen mit einer Busbrücke 1918, die den ersten Bus 1916 mit einem zweiten Bus 1920 koppelt. In einer Ausführungsform sind ein oder mehrere zusätzliche Prozessoren 1915, wie beispielsweise Coprozessoren, MIC-Prozessoren mit hohem Durchsatz, GPGPUs, Beschleuniger (wie beispielsweise Grafikbeschleuniger oder Digitalsignalverarbeitungs(DSP, Digital Signal Processing)-Einheiten), feldprogrammierbare Gate-Arrays oder ein beliebiger anderer Prozessor, mit dem ersten Bus 1916 gekoppelt. In einer Ausführungsform kann der zweite Bus 1920 ein Bus mit geringer Anschlusszahl (LPC, Low Pin Count) sein. In einer Ausführungsform können verschiedene Vorrichtungen mit einem zweiten Bus 1920 gekoppelt sein, einschließlich beispielsweise einer Tastatur und/oder Maus 1922, der Kommunikationsvorrichtungen 1927 und einer Speichereinheit 1928, wie beispielsweise ein Plattenlaufwerk oder eine andere Massenspeichervorrichtung, die Befehle/Code und Daten 1930 umfassen kann. Ferner kann ein Audio-E/A 1924 mit dem zweiten Bus 1920 gekoppelt sein. Man beachte, dass auch andere Architekturen möglich sind. Beispielsweise kann ein System anstelle der Punkt-zu-Punkt-Architektur aus 19 einen Multi-Drop-Bus oder eine andere derartige Architektur implementieren.
  • Bezug nehmend nun auf 20 ist ein Blockschaltbild eines zweiten spezielleren beispielhaften Systems 2000 gemäß einer Ausführungsform der vorliegenden Erfindung gezeigt. Gleiche Elemente in den 19 und 20 weisen die gleichen Bezugszeichen auf, und bestimmte Aspekte aus 19 wurden in 20 weggelassen, um andere Aspekte aus 20 nicht zu verschleiern.
  • 20 veranschaulicht, dass die Prozessoren 1970, 1980 den integrierten Speicher und die E/A-Steuerlogik (CL, Control Logic) 1972 bzw. 1982 aufweisen können. Somit umfassen die CLs 1972, 1982 integrierte Speichercontrollereinheiten und E/A-Steuerlogik. 20 veranschaulicht, dass nicht nur die Speicher 1932, 1934 mit der CL 1972, 1982 gekoppelt sind, sondern dass auch die E/A-Vorrichtungen 2014 mit der Steuerlogik 1972, 1982 gekoppelt sind. Legacy-E/A-Vorrichtungen 2015 sind mit dem Chipsatz 1990 gekoppelt.
  • Bezug nehmend nun auf 21 ist ein Blockschaltbild eines SoC 2100 gemäß einer Ausführungsform der vorliegenden Erfindung gezeigt. Ähnliche Elemente in 17 weisen gleiche Bezugszeichen auf. Außerdem sind Kästchen mit gestrichelten Linien optionale Merkmale auf fortschrittlicheren SoCs. In 21 ist/sind eine/die Zwischenverbindungseinheit(en) 2102 gekoppelt mit: einem Anwendungsprozessor 2110, der einen Satz von einem oder mehreren Kernen 1702A-N, welche die Cache-Einheiten 1704A-N aufweisen, und eine/die gemeinsam genutzte(n) Cache-Einheit(en) 1706 umfasst; einer Systemagenteinheit 1710; einer/den Buscontroller-Einheit(en) 1716; einer/den integrierten Speichercontrollereinheit(en) 1714; einem Satz von einem oder mehreren Coprozessoren 2120, die integrierte Grafiklogik, einen Bildprozessor, einen Audioprozessor und einen Videoprozessor aufweisen können; einer statischen Zufallszugriffsspeicher(SRAM, Static Random Access Memory)-Einheit 2130; einer Direktspeicherzugriff(DMA, Direct Memory Access)-Einheit 2132; und einer Anzeigeeinheit 2140 zum Koppeln mit einer oder mehreren externen Anzeigen. In einer Ausführungsform umfasst/umfassen der/die Coprozessor(en) 2120 einen Spezialzweckprozessor, 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 nichtflüchtiger Arbeitsspeicher- und/oder Datenspeicherelemente), wenigstens eine Eingabevorrichtung und wenigstens eine Ausgabevorrichtung umfassen, implementiert sein.
  • Programmcode, wie beispielsweise der Code 1930, der in 19 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. In der Tat 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 Anweisungen implementiert sein, die auf einem maschinenlesbaren Medium gespeichert sind, das verschiedene Logik innerhalb des Prozessors repräsentiert, die, wenn sie durch eine Maschine gelesen werden, die Maschine veranlassen, 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, nichttransitorische, 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 nichttransitorische, greifbare maschinenlesbare Medien, die Befehle oder Designdaten aufweisen, wie z. B. Hardwarebeschreibungssprache (HDL, Hardware Description Language), welche die hierin beschriebenen Strukturen, Schaltungen, Vorrichtungen, Prozessoren und/oder Systemmerkmale definieren. Derartige Ausführungsformen können auch als Programmprodukte bezeichnet werden.
  • EMULATION (EINSCHLIEßLICH BINÄRER ÜBERSETZUNG, CODE-MORPHING USW.)
  • 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.
  • 22 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übersteht. 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. 22 zeigt, dass ein Programm in einer Hochsprache 2202 unter Verwendung eines x86-Compilers 2204 kompiliert werden kann, um x86-Binärcode 2206 zu erzeugen, der von einem Prozessor mit wenigstens einem x86-Befehlssatzkern 2216 nativ ausgeführt werden kann. Der Prozessor mit wenigstens einem x86-Befehlssatzkern 2216 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 2204 repräsentiert einen Compiler, der betrieben werden kann, um x86-Binärcode 2206 (z. B. Objektcode) zu erzeugen, der mit oder ohne zusätzliche Verlinkungsverarbeitung auf dem Prozessor mit wenigstens einem x86-Befehlssatzkern 2216 ausgeführt werden kann. Ähnlich zeigt 22, dass das Programm in der Hochsprache 2202 unter Verwendung eines alternativen Befehlssatz-Compilers 2208 kompiliert werden kann, um alternativen Befehlssatz-Binärcode 2210 zu erzeugen, der von einem Prozessor ohne wenigstens einen x86-Befehlssatzkern 2214 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 2212 wird verwendet, um den x86-Binärcode 2206 in Code umzuwandeln, der vom Prozessor ohne x86-Befehlssatzkern 2214 nativ ausgeführt werden kann. Es ist unwahrscheinlich, dass dieser umgewandelte Code der gleiche wie der alternative Befehlssatz-Binärcode 2210 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 2212 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 2206 auszuführen
  • WEITERE BEISPIELE
  • Beispiel 1 stellt ein beispielhaftes Verfahren bereit, das von einer Cache-Steuerschaltung eines Requester-Sockels in einem Multi-Sockel-System durchgeführt wird, zum Ausführen eines Befehls für eine entfernte atomare Operation (RAO, Remote Atomic Operation) zu einer Cache-Zeilen-Adresse, generiert von einem Kern einer Requester-Zentralverarbeitungseinheit (CPU, Central Processing Unit), das Verfahren umfassend:
    • Empfangen des RAO-Befehls vom Requester-CPU-Kern, Bestimmen eines Home-Agenten in einem Home-Sockel für die adressierte Cache-Zeile, Bereitstellen einer Anforderung nach Besitz (RFO, Request for Ownership) der adressierten Cache-Zeile an den Home-Agenten, Warten, bis der Home-Agent entweder eine letzte Kopie der adressierten Cache-Zeile aus einem Cache invalidiert und abruft oder die adressierte Cache-Zeile vom Speicher fetcht, Empfangen einer Bestätigung und der adressierten Cache-Zeile, atomares Ausführen des RAO-Befehls auf der empfangenen Cache-Zeile, anschließendes Empfangen mehrerer lokaler RAO-Befehle an die adressierte Cache-Zeile von einem oder mehreren Requester-CPU-Kernen und Ausführen der mehreren lokalen RAO-Befehle auf der empfangenen Cache-Zeile unabhängig vom Home-Agenten.
  • Beispiel 2 umfasst den Gegenstand des beispielhaften Verfahrens von Beispiel 1, wobei der Home-Agent die empfangene RFO-Anforderung bedienen soll, indem bestimmt wird, ob die adressierte Cache-Zeile irgendwo im System gecacht ist, und wenn die adressierte Cache-Zeile in einer lokalen Cache-Hierarchie des Home-Sockels gecacht ist, Invalidieren und Abrufen der adressierten Cache-Zeile aus der lokalen Cache-Hierarchie, wenn die adressierte Cache-Zeile in einem entfernten Sockel gecacht ist, Invalidieren und Abrufen der adressierten Cache-Zeile vom entfernten Sockel, wenn die adressierte Cache-Zeile nirgendwo im System gecacht ist, Fetchen der adressierten Cache-Zeile aus einem virtuellen Speicherbereich, der zum Home-Sockel gemappt wird; und Bereitstellen der adressierten Cache-Zeile und der Bestätigung an den Requester-Sockel.
  • Beispiel 3 umfasst den Gegenstand des beispielhaften Verfahrens von Beispiel 1, ferner umfassend, dass die Cache-Steuerschaltung des Requester-Sockels: eine entfernte Anforderung an die adressierte Cache-Zeile empfängt, während einer oder mehrere der mehreren lokalen RAO-Befehle noch ausstehen, wobei die entfernte Anforderung eines von einer Leseanforderung, einem Lesevorgang für den Besitz und einer Anforderung nach Besitz umfasst, und zwischen den mehreren lokalen RAO-Befehlen und der entfernten Anforderung arbitriert, indem die mehreren lokalen RAO-Befehle bevorzugt und zuerst durchgeführt werden, während Schritte ergriffen werden, um ein Verhungern der entfernten Anforderung zu vermeiden.
  • Beispiel 4 umfasst den Gegenstand des beispielhaften Verfahrens von Beispiel 3, wobei das Ergreifen von Schritten zum Vermeiden des Verhungerns der entfernten Anforderung das Aufrechterhalten einer Zählung, wie viele lokale RAO-Befehle ausgeführt werden, während die entfernte Anforderung ausstehend ist, und das Bedienen der entfernten Anforderung, wenn die Zählung einen Schwellenwert erreicht, umfasst.
  • Beispiel 5 umfasst den Gegenstand des beispielhaften Verfahrens von Beispiel 3, wobei das Ergreifen von Schritten zum Vermeiden des Verhungerns der entfernten Anforderung das Aufrechterhalten einer Zählung, wie viele Zyklen die entfernte Anforderung ausstehend ist, und das Bedienen der entfernten Anforderung, wenn die Zählung einen Schwellenwert erreicht, umfasst.
  • Beispiel 6 umfasst den Gegenstand des beispielhaften Verfahrens von Beispiel 3, wobei jeder der mehreren lokalen RAO-Befehle einen Prioritätsoperanden aufweist, und wobei das Ergreifen von Schritten zum Vermeiden des Verhungerns der entfernten Anforderung das Bedienen der entfernten Anforderung umfasst, wenn die mehreren lokalen RAO-Befehle jeweils eine niedrige Priorität aufweisen.
  • Beispiel 7 umfasst den Gegenstand des beispielhaften Verfahrens von einem der Beispiele 1-6, wobei der eine oder die mehreren Requester-CPU-Kerne im Requester-Sockel integriert sind, wobei der Requester-Sockel und der Home-Agent jeweils in ersten und zweiten Sockeln eines Multi-Sockel-Systems angeordnet sind, das wenigstens zwei Sockel umfasst, und wobei die wenigstens zwei Sockel mit einer Zwischenverbindung gekoppelt sind, die eine von einer vollständig verbundenen Topologie, einer Crossbar-Topologie, einer Maschentopologie und einer Ringtopologie aufweist.
  • Beispiel 8 umfasst den Gegenstand des beispielhaften Verfahrens von einem der Beispiele 1-6, wobei der Home-Agent umfasst: einen Caching-Agenten zum Verfolgen eines systemweiten Cache-Zustands einer Cache-Zeile mit einer Adresse innerhalb eines virtuellen Adressbereichs, der zum Home-Agenten gemappt wird, wobei der systemweite Cache-Zustand einem Cache-Kohärenzprotokoll des Multi-Sockel-Systems entspricht; und einen Speicheragenten, der über eine Schnittstelle mit dem Speicher verbunden sein soll und Anforderungen an diesen bedienen soll.
  • Beispiel 9 umfasst den Gegenstand des beispielhaften Verfahrens von einem der Beispiele 1-6, wobei das Bestimmen des Home-Agenten das Zugreifen auf ein im Speicher gespeichertes Mapping von Adressbereichen zu Home-Agenten umfasst.
  • Beispiel 10 umfasst den Gegenstand des beispielhaften Verfahrens von einem der Beispiele 1-6, ferner umfassend das Speichern der empfangenen Cache-Zeile in einer Cache-Hierarchie des Requester-Sockels, wobei auf die gespeicherte Cache-Zeile durch die nachfolgenden mehreren lokalen RAO-Befehle zugegriffen werden soll.
  • Beispiel 11 stellt ein beispielhaftes System zum Ausführen eines Befehls für eine entfernte atomare Operation (RAO, Remote Atomic Operation) bereit, umfassend: einen Requester-Sockel, der eine Requester-Cache-Steuerschaltung und einen oder mehrere Requester-CPU-Kerne umfasst; wobei die Requester-Cache-Steuerschaltung: den RAO-Befehl zu einer Cache-Zeilen-Adresse von einem der einen oder mehreren Requester-CPU-Kerne empfangen soll, einen Home-Agenten in einem Home-Sockel für die adressierte Cache-Zeile bestimmen soll, eine Anforderung nach Besitz (RFO, Request for Ownership) der adressierten Cache-Zeile an den Home-Agenten bereitstellen soll, warten soll, bis der Home-Agent entweder eine letzte Kopie der adressierten Cache-Zeile aus einem Cache invalidiert und abruft oder die adressierte Cache-Zeile vom Speicher fetcht, eine Bestätigung und die adressierte Cache-Zeile empfangen soll, den RAO-Befehl auf der empfangenen Cache-Zeile atomar ausführen soll, anschließend mehrere lokale RAO-Befehle an die adressierte Cache-Zeile von dem einen oder den mehreren Requester-CPU-Kernen empfangen soll und die mehreren lokalen RAO-Befehle auf der empfangenen Cache-Zeile unabhängig vom Home-Agenten ausführen soll.
  • Beispiel 12 umfasst den Gegenstand des beispielhaften Systems von Beispiel 11, wobei der Home-Agent die empfangene RFO-Anforderung bedienen soll, indem bestimmt wird, ob die adressierte Cache-Zeile irgendwo im System gecacht ist, und wenn die adressierte Cache-Zeile in einem lokalen Cache des Home-Sockels gecacht ist, Invalidieren und Abrufen der adressierten Cache-Zeile vom lokalen Cache, wobei der lokale Cache einen oder mehrere Caches, die von den CPU-Kernen im Home-Sockel gemeinsam genutzt werden, und einen oder mehrere untergeordnete Caches, die einzelnen CPU-Kernen im Home-Sockel dediziert sind, aufweist, wenn die adressierte Cache-Zeile in einem entfernten Sockel gecacht ist, Invalidieren und Abrufen der adressierten Cache-Zeile vom entfernten Sockel, wenn die adressierte Cache-Zeile nirgendwo im System gecacht ist, Fetchen der adressierten Cache-Zeile aus einem virtuellen Speicherbereich, der zum Home-Sockel gemappt wird; und Bereitstellen der adressierten Cache-Zeile und der Bestätigung an den Requester-Sockel.
  • Beispiel 13 umfasst den Gegenstand des beispielhaften Systems von Beispiel 11, wobei die Requester-Cache-Steuerschaltung ferner: eine entfernte Anforderung an die adressierte Cache-Zeile empfangen soll, während einer oder mehrere der mehreren lokalen RAO-Befehle noch ausstehen, wobei die entfernte Anforderung eines von einer Leseanforderung, einem Lesevorgang für den Besitz und einer Anforderung nach Besitz umfasst; und zwischen den mehreren lokalen RAO-Befehlen und der entfernten Anforderung arbitrieren soll, indem die mehreren lokalen RAO-Befehle bevorzugt und zuerst durchgeführt werden, während Schritte ergriffen werden, um ein Verhungern der entfernten Anforderung zu vermeiden.
  • Beispiel 14 umfasst den Gegenstand des beispielhaften Systems von Beispiel 13, wobei das Ergreifen von Schritten zum Vermeiden des Verhungerns der entfernten Anforderung das Aufrechterhalten einer Zählung, wie viele lokale RAO-Befehle ausgeführt werden, während die entfernte Anforderung ausstehend ist, und das Bedienen der entfernten Anforderung, wenn die Zählung einen Schwellenwert erreicht, umfasst.
  • Beispiel 15 umfasst den Gegenstand des beispielhaften Systems von Beispiel 13, wobei das Ergreifen von Schritten zum Vermeiden des Verhungerns der entfernten Anforderung das Aufrechterhalten einer Zählung, wie viele Zyklen die entfernte Anforderung ausstehend ist, und das Bedienen der entfernten Anforderung, wenn die Zählung einen Schwellenwert erreicht, umfasst.
  • Beispiel 16 umfasst den Gegenstand des beispielhaften Systems von Beispiel 13, wobei jeder der mehreren lokalen RAO-Befehle einen Prioritätsoperanden aufweist, und wobei das Ergreifen von Schritten zum Vermeiden des Verhungerns der entfernten Anforderung das Bedienen der entfernten Anforderung umfasst, wenn die mehreren lokalen RAO-Befehle jeweils eine niedrige Priorität aufweisen.
  • Beispiel 17 umfasst den Gegenstand des beispielhaften Systems von einem der Beispiele 11-16, wobei der Requester-Sockel und der Home-Agent jeweils in ersten und zweiten Sockeln eines Multi-Sockel-Systems angeordnet sind, das wenigstens zwei Sockel aufweist, und wobei die wenigstens zwei Sockel mit einer Zwischenverbindung gekoppelt sind, die eine von einer vollständig verbundenen Topologie, einer Crossbar-Topologie, einer Maschentopologie und einer Ringtopologie aufweist.
  • Beispiel 18 umfasst den Gegenstand des beispielhaften Systems von einem der Beispiele 11-16, wobei das Bestimmen des Home-Agenten das Zugreifen auf ein im Speicher gespeichertes Mapping von Adressbereichen zu Home-Agenten umfasst.
  • Beispiel 19 umfasst den Gegenstand des beispielhaften Systems von einem der Beispiele 11-16, wobei der Home-Agent umfasst: einen Caching-Agenten zum Verfolgen eines systemweiten Cache-Zustands einer Cache-Zeile mit einer Adresse innerhalb eines virtuellen Adressbereichs, der zum Home-Agenten gemappt wird, wobei der systemweite Cache-Zustand einem Cache-Kohärenzprotokoll des Multi-Sockel-Systems entspricht; und einen Speicheragenten, der über eine Schnittstelle mit dem Speicher verbunden sein soll und Anforderungen an diesen bedienen soll.
  • Beispiel 20 umfasst den Gegenstand des beispielhaften Systems von einem der Beispiele 11-16, wobei die Requester-Cache-Steuerschaltung die empfangene Cache-Zeile ferner in einer Cache-Hierarchie des Requester-Sockels speichern soll, wobei auf die gespeicherte Cache-Zeile durch die nachfolgenden mehreren lokalen RAO-Befehle zugegriffen werden soll.
  • Beispiel 21 stellt eine beispielhafte Vorrichtung zum Ausführen eines Befehls für eine entfernte atomare Operation (RAO, Remote Atomic Operation) bereit, generiert von einem Kern einer Requester-Zentralverarbeitungseinheit (CPU, Central Processing Unit) in einem Requester-Sockel, wobei die Vorrichtung eine Cache-Steuerschaltung im Requester-Sockel umfasst, die Cache-Steuerschaltung umfassend: Empfangsschaltungen zum Empfangen des RAO-Befehls vom Requester-CPU-Kern, Mittel zum Bestimmen eines Home-Agenten in einem Home-Sockel für die adressierte Cache-Zeile, Sendeschaltungen zum Bereitstellen einer Anforderung nach Besitz (RFO, Request for Ownership) der adressierten Cache-Zeile an den Home-Agenten, Mittel zum Warten, bis der Home-Agent entweder eine letzte Kopie der adressierten Cache-Zeile aus einem Cache invalidiert und abruft oder die adressierte Cache-Zeile vom Speicher fetcht, Mittel zum Empfangen einer Bestätigung und der adressierten Cache-Zeile, Mittel zum atomaren Ausführen des RAO-Befehls auf der empfangenen Cache-Zeile; und Mittel zum anschließenden Empfangen mehrerer lokaler RAO-Befehle an die adressierte Cache-Zeile von einem oder mehreren Requester-CPU-Kernen innerhalb des Requester-Sockels; und Mittel zum Ausführen der mehreren lokalen RAO-Befehle auf der empfangenen Cache-Zeile unabhängig vom Home-Agenten.
  • Beispiel 22 umfasst den Gegenstand der beispielhaften Vorrichtung von Beispiel 21, wobei der Home-Agent die empfangene RFO-Anforderung bedienen soll, indem bestimmt wird, ob die adressierte Cache-Zeile irgendwo im System gecacht ist, und wenn die adressierte Cache-Zeile in einem lokalen Cache des Home-Sockels gecacht ist, Invalidieren und Abrufen der adressierten Cache-Zeile vom lokalen Cache, wobei der lokale Cache einen oder mehrere Caches, die von den CPU-Kernen im Home-Sockel gemeinsam genutzt werden, und einen oder mehrere untergeordnete Caches, die einzelnen CPU-Kernen im Home-Sockel dediziert sind, aufweist, wenn die adressierte Cache-Zeile in einem entfernten Sockel gecacht ist, Invalidieren und Abrufen der adressierten Cache-Zeile vom entfernten Sockel, wenn die adressierte Cache-Zeile nirgendwo in der Vorrichtung gecacht ist, Fetchen der adressierten Cache-Zeile aus einem virtuellen Speicherbereich, der zum Home-Sockel gemappt wird; und Bereitstellen der adressierten Cache-Zeile und der Bestätigung an den Requester-Sockel.
  • Beispiel 23 umfasst den Gegenstand der beispielhaften Vorrichtung von Beispiel 21, wobei die Requester-Cache-Steuerschaltung ferner: eine entfernte Anforderung an die adressierte Cache-Zeile empfangen soll, während einer oder mehrere der mehreren lokalen RAO-Befehle noch ausstehen, wobei die entfernte Anforderung eines von einer Leseanforderung, einem Lesevorgang für den Besitz und einer Anforderung nach Besitz umfasst; und zwischen den mehreren lokalen RAO-Befehlen und der entfernten Anforderung arbitrieren soll, indem die mehreren lokalen RAO-Befehle bevorzugt und zuerst durchgeführt werden, während Schritte ergriffen werden, um ein Verhungern der entfernten Anforderung zu vermeiden.
  • Beispiel 24 umfasst den Gegenstand der beispielhaften Vorrichtung von Beispiel 13, wobei das Ergreifen von Schritten zum Vermeiden des Verhungerns der entfernten Anforderung das Aufrechterhalten einer Zählung, wie viele lokale RAO-Befehle ausgeführt werden, während die entfernte Anforderung ausstehend ist, und das Bedienen der entfernten Anforderung, wenn die Zählung einen Schwellenwert erreicht, umfasst.
  • Beispiel 25 umfasst den Gegenstand der beispielhaften Vorrichtung von Beispiel 13, wobei das Ergreifen von Schritten zum Vermeiden des Verhungerns der entfernten Anforderung das Aufrechterhalten einer Zählung, wie viele Zyklen die entfernte Anforderung ausstehend ist, und das Bedienen der entfernten Anforderung, wenn die Zählung einen Schwellenwert erreicht, umfasst.
  • Beispiel 26 umfasst den Gegenstand der beispielhaften Vorrichtung von Beispiel 13, wobei jeder der mehreren lokalen RAO-Befehle einen Prioritätsoperanden aufweist, und wobei das Ergreifen von Schritten zum Vermeiden des Verhungerns der entfernten Anforderung das Bedienen der entfernten Anforderung umfasst, wenn die mehreren lokalen RAO-Befehle jeweils eine niedrige Priorität aufweisen.
  • Beispiel 27 umfasst den Gegenstand der beispielhaften Vorrichtung von einem der Beispiele 21-26, wobei der Requester-Sockel und der Home-Agent jeweils in ersten und zweiten Sockeln von mehreren Sockeln in der Vorrichtung angeordnet sind, wobei die mehreren Sockel wenigstens zwei Sockel aufweisen, und wobei die wenigstens zwei Sockel mit einer Zwischenverbindung gekoppelt sind, die eine von einer vollständig verbundenen Topologie, einer Crossbar-Topologie, einer Maschentopologie und einer Ringtopologie aufweist.
  • Beispiel 28 umfasst den Gegenstand der beispielhaften Vorrichtung von einem der Beispiele 21-26, wobei das Bestimmen des Home-Agenten das Zugreifen auf ein im Speicher gespeichertes Mapping von Adressbereichen zu Home-Agenten umfasst.
  • Beispiel 29 umfasst den Gegenstand der beispielhaften Vorrichtung von einem der Beispiele 21-26, wobei der Home-Agent umfasst: einen Caching-Agenten zum Verfolgen eines vorrichtungsweiten Cache-Zustands einer Cache-Zeile mit einer Adresse innerhalb eines virtuellen Adressbereichs, der zum Home-Agenten gemappt wird, wobei der vorrichtungsweite Cache-Zustand einem Cache-Kohärenzprotokoll der Multi-Sockel-Vorrichtung entspricht; und einen Speicheragenten, der über eine Schnittstelle mit dem Speicher verbunden sein soll und Anforderungen an diesen bedienen soll.
  • Beispiel 30 umfasst den Gegenstand der beispielhaften Vorrichtung von einem der Beispiele 21-26, wobei die Requester-Cache-Steuerschaltung die empfangene Cache-Zeile ferner in einer Cache-Hierarchie des Requester-Sockels speichern soll, wobei auf die gespeicherte Cache-Zeile durch die nachfolgenden mehreren lokalen RAO-Befehle zugegriffen werden soll.
  • Beispiel 31 stellt ein beispielhaftes nicht-transitorisches maschinenlesbares Medium bereit, das Befehle enthält, die, wenn sie von einer Cache-Steuerschaltung eines Requester-Sockels durchgeführt werden, die Cache-Steuerschaltung veranlassen, einen Befehl für eine entfernte atomare Operation (RAO, Remote Atomic Operation) auszuführen, generiert von einem Kern einer Requester-Zentralverarbeitungseinheit (CPU, Central Processing Unit) innerhalb des Requester-Sockels durch: Empfangen des RAO-Befehls vom Requester-CPU-Kern, Bestimmen eines Home-Agenten in einem Home-Sockel für die adressierte Cache-Zeile, Bereitstellen einer Anforderung nach Besitz (RFO, Request for Ownership) der adressierten Cache-Zeile an den Home-Agenten, Warten, bis der Home-Agent entweder eine letzte Kopie der adressierten Cache-Zeile aus einem Cache invalidiert und abruft oder die adressierte Cache-Zeile vom Speicher fetcht, Empfangen einer Bestätigung und der adressierten Cache-Zeile, atomares Ausführen des RAO-Befehls auf der empfangenen Cache-Zeile, anschließendes Empfangen mehrerer lokaler RAO-Befehle an die adressierte Cache-Zeile von einem oder mehreren Requester-CPU-Kernen innerhalb des Requester-Sockels und Ausführen der mehreren lokalen RAO-Befehle auf der empfangenen Cache-Zeile unabhängig vom Home-Agenten.
  • Beispiel 32 umfasst den Gegenstand des beispielhaften nicht-transitorischen maschinenlesbaren Mediums von Beispiel 31, ferner umfassend Befehle, die den Home-Agenten veranlassen, die empfangene RFO-Anforderung zu bedienen, durch Bestimmen, ob die adressierte Cache-Zeile irgendwo im System gecacht ist, und wenn die adressierte Cache-Zeile in einem lokalen Cache des Home-Sockels gecacht ist, Invalidieren und Abrufen der adressierten Cache-Zeile vom lokalen Cache, wobei der lokale Cache einen oder mehrere Caches, die von den CPU-Kernen im Home-Sockel gemeinsam genutzt werden, und einen oder mehrere untergeordnete Caches, die einzelnen CPU-Kernen im Home-Sockel dediziert sind, aufweist, wenn die adressierte Cache-Zeile in einem entfernten Sockel gecacht ist, Invalidieren und Abrufen der adressierten Cache-Zeile vom entfernten Sockel, wenn die adressierte Cache-Zeile nirgendwo im System gecacht ist, Fetchen der adressierten Cache-Zeile aus einem virtuellen Speicherbereich, der zum Home-Sockel gemappt wird; und Bereitstellen der adressierten Cache-Zeile und der Bestätigung an den Requester-Sockel.
  • Beispiel 33 umfasst den Gegenstand des beispielhaften nicht-transitorischen maschinenlesbaren Mediums von Beispiel 31, ferner umfassend Befehle, welche die Cache-Steuerschaltung des Requester-Sockels veranlassen zum: Empfangen einer entfernten Anforderung an die adressierte Cache-Zeile, während einer oder mehrere der mehreren lokalen RAO-Befehle noch ausstehen, wobei die entfernte Anforderung eines von einer Leseanforderung, einem Lesevorgang für den Besitz und einer Anforderung nach Besitz umfasst; und Arbitrieren zwischen den mehreren lokalen RAO-Befehlen und der entfernten Anforderung, indem die mehreren lokalen RAO-Befehle bevorzugt und zuerst durchgeführt werden, während Schritte ergriffen werden, um ein Verhungern der entfernten Anforderung zu vermeiden.
  • Beispiel 34 umfasst den Gegenstand des beispielhaften nicht-transitorischen maschinenlesbaren Mediums von Beispiel 33, wobei das Ergreifen von Schritten zum Vermeiden des Verhungerns der entfernten Anforderung das Aufrechterhalten einer Zählung, wie viele lokale RAO-Befehle ausgeführt werden, während die entfernte Anforderung ausstehend ist, und das Bedienen der entfernten Anforderung, wenn die Zählung einen Schwellenwert erreicht, umfasst.
  • Beispiel 35 umfasst den Gegenstand des beispielhaften nicht-transitorischen maschinenlesbaren Mediums von Beispiel 33, wobei das Ergreifen von Schritten zum Vermeiden des Verhungerns der entfernten Anforderung das Aufrechterhalten einer Zählung, wie viele Zyklen die entfernte Anforderung ausstehend ist, und das Bedienen der entfernten Anforderung, wenn die Zählung einen Schwellenwert erreicht, umfasst.
  • Beispiel 36 umfasst den Gegenstand des beispielhaften nicht-transitorischen maschinenlesbaren Mediums von Beispiel 33, wobei jeder der mehreren lokalen RAO-Befehle einen Prioritätsoperanden aufweist, und wobei das Ergreifen von Schritten zum Vermeiden des Verhungerns der entfernten Anforderung das Bedienen der entfernten Anforderung umfasst, wenn die mehreren lokalen RAO-Befehle jeweils eine niedrige Priorität aufweisen.
  • Beispiel 37 umfasst den Gegenstand des beispielhaften nicht-transitorischen maschinenlesbaren Mediums von einem der Beispiele 31-36, wobei der Requester-Sockel und der Home-Agent jeweils in ersten und zweiten Sockeln eines Multi-Sockel-Systems angeordnet sind, das wenigstens zwei Sockel aufweist, und wobei die wenigstens zwei Sockel mit einer Zwischenverbindung gekoppelt sind, die eine von einer vollständig verbundenen Topologie, einer Crossbar-Topologie, einer Maschentopologie und einer Ringtopologie aufweist.
  • Beispiel 38 umfasst den Gegenstand des beispielhaften nicht-transitorischen maschinenlesbaren Mediums von einem der Beispiele 31-36, wobei das Bestimmen des Home-Agenten das Zugreifen auf ein im Speicher gespeichertes Mapping von Adressbereichen zu Home-Agenten umfasst.
  • Beispiel 39 umfasst den Gegenstand des beispielhaften nicht-transitorischen maschinenlesbaren Mediums von einem der Beispiele 31-36, wobei der Home-Agent umfasst: einen Caching-Agenten zum Verfolgen eines systemweiten Cache-Zustands einer Cache-Zeile mit einer Adresse innerhalb eines virtuellen Adressbereichs, der zum Home-Agenten gemappt wird, wobei der systemweite Cache-Zustand einem Cache-Kohärenzprotokoll des Multi-Sockel-Systems entspricht; und einen Speicheragenten, der über eine Schnittstelle mit dem Speicher verbunden sein soll und Anforderungen an diesen bedienen soll.
  • Beispiel 40 umfasst den Gegenstand des beispielhaften nicht-transitorischen maschinenlesbaren Mediums von einem der Beispiele 31-36, ferner umfassend Befehle, welche die Requester-Cache-Steuerschaltung veranlassen, die empfangene Cache-Zeile in einer Cache-Hierarchie des Requester-Sockels zu speichern, wobei auf die gespeicherte Cache-Zeile durch die nachfolgenden mehreren lokalen RAO-Befehle zugegriffen werden soll.

Claims (26)

  1. Beansprucht wird:
  2. Verfahren, das von einer Cache-Steuerschaltung eines Requester-Sockels in einem Multi-Sockel-System durchgeführt wird, zum Ausführen eines Befehls für eine entfernte atomare Operation (RAO, Remote Atomic Operation) zu einer Cache-Zeilen-Adresse, generiert von einem Kern einer Requester-Zentralverarbeitungseinheit (CPU, Central Processing Unit), das Verfahren umfassend: Empfangen des RAO-Befehls vom Requester-CPU-Kern; Bestimmen eines Home-Agenten in einem Home-Sockel für die adressierte Cache-Zeile; Bereitstellen einer Anforderung nach Besitz (RFO, Request for Ownership) der adressierten Cache-Zeile an den Home-Agenten; Warten, bis der Home-Agent entweder eine letzte Kopie der adressierten Cache-Zeile aus einem Cache invalidiert und abruft oder die adressierte Cache-Zeile vom Speicher fetcht; Empfangen einer Bestätigung und der adressierten Cache-Zeile; atomares Ausführen des RAO-Befehls auf der empfangenen Cache-Zeile; anschließendes Empfangen mehrerer lokaler RAO-Befehle an die adressierte Cache-Zeile von einem oder mehreren Requester-CPU-Kernen; und Ausführen der mehreren lokalen RAO-Befehle auf der empfangenen Cache-Zeile unabhängig vom Home-Agenten.
  3. Verfahren nach Anspruch 1, wobei der Home-Agent die empfangene RFO-Anforderung bedienen soll, indem bestimmt wird, ob die adressierte Cache-Zeile irgendwo im System gecacht ist; und wenn die adressierte Cache-Zeile in einer lokalen Cache-Hierarchie des Home-Sockels gecacht ist, Invalidieren und Abrufen der adressierten Cache-Zeile aus der lokalen Cache-Hierarchie; wenn die adressierte Cache-Zeile in einem entfernten Sockel gecacht ist, Invalidieren und Abrufen der adressierten Cache-Zeile vom entfernten Sockel; wenn die adressierte Cache-Zeile nirgendwo im System gecacht ist, Fetchen der adressierten Cache-Zeile aus einem virtuellen Speicherbereich, der zum Home-Sockel gemappt wird; und Bereitstellen der adressierten Cache-Zeile und der Bestätigung an den Requester-Sockel.
  4. Verfahren nach Anspruch 1, ferner umfassend, dass die Cache-Steuerschaltung des Requester-Sockels: eine entfernte Anforderung an die adressierte Cache-Zeile empfängt, während einer oder mehrere der mehreren lokalen RAO-Befehle noch ausstehen, wobei die entfernte Anforderung eines von einer Leseanforderung, einem Lesevorgang für den Besitz und einer Anforderung nach Besitz umfasst; und zwischen den mehreren lokalen RAO-Befehlen und der entfernten Anforderung arbitriert, indem die mehreren lokalen RAO-Befehle bevorzugt und zuerst durchgeführt werden, während Schritte ergriffen werden, um ein Verhungern der entfernten Anforderung zu vermeiden.
  5. Verfahren nach Anspruch 3, wobei das Ergreifen von Schritten zum Vermeiden des Verhungerns der entfernten Anforderung das Aufrechterhalten einer Zählung, wie viele lokale RAO-Befehle ausgeführt werden, während die entfernte Anforderung ausstehend ist, und das Bedienen der entfernten Anforderung, wenn die Zählung einen Schwellenwert erreicht, umfasst.
  6. Verfahren nach Anspruch 3, wobei das Ergreifen von Schritten zum Vermeiden des Verhungerns der entfernten Anforderung das Aufrechterhalten einer Zählung, wie viele Zyklen die entfernte Anforderung ausstehend ist, und das Bedienen der entfernten Anforderung, wenn die Zählung einen Schwellenwert erreicht, umfasst.
  7. Verfahren nach Anspruch 3, wobei jeder der mehreren lokalen RAO-Befehle einen Prioritätsoperanden aufweist, und wobei das Ergreifen von Schritten zum Vermeiden des Verhungerns der entfernten Anforderung das Bedienen der entfernten Anforderung umfasst, wenn die mehreren lokalen RAO-Befehle jeweils eine niedrige Priorität aufweisen.
  8. Verfahren nach einem der Ansprüche 1-6, wobei der eine oder die mehreren Requester-CPU-Kerne im Requester-Sockel integriert sind, wobei der Requester-Sockel und der Home-Agent jeweils in ersten und zweiten Sockeln eines Multi-Sockel-Systems angeordnet sind, das wenigstens zwei Sockel umfasst, und wobei die wenigstens zwei Sockel mit einer Zwischenverbindung gekoppelt sind, die eine von einer vollständig verbundenen Topologie, einer Crossbar-Topologie, einer Maschentopologie und einer Ringtopologie umfasst.
  9. Verfahren nach einem der Ansprüche 1-6, wobei der Home-Agent umfasst: einen Caching-Agenten zum Verfolgen eines systemweiten Cache-Zustands einer Cache-Zeile mit einer Adresse innerhalb eines virtuellen Adressbereichs, der zum Home-Agenten gemappt wird, wobei der systemweite Cache-Zustand einem Cache-Kohärenzprotokoll des Multi-Sockel-Systems entspricht; und einen Speicheragenten, der über eine Schnittstelle mit dem Speicher verbunden sein soll und Anforderungen an diesen bedienen soll.
  10. Verfahren nach einem der Ansprüche 1-6, wobei das Bestimmen des Home-Agenten das Zugreifen auf ein im Speicher gespeichertes Mapping von Adressbereichen zu Home-Agenten umfasst.
  11. Verfahren nach einem der Ansprüche 1-6, ferner umfassend das Speichern der empfangenen Cache-Zeile in einer Cache-Hierarchie des Requester-Sockels, wobei auf die gespeicherte Cache-Zeile durch die nachfolgenden mehreren lokalen RAO-Befehle zugegriffen werden soll.
  12. System zum Ausführen eines Befehls für eine entfernte atomare Operation (RAO, Remote Atomic Operation), umfassend: einen Requester-Sockel, der eine Requester-Cache-Steuerschaltung und einen oder mehrere Requester-CPU-Kerne umfasst; wobei die Requester-Cache-Steuerschaltung: den RAO-Befehl zu einer Cache-Zeilen-Adresse von einem der einen oder mehreren Requester-CPU-Kerne empfangen soll; einen Home-Agenten in einem Home-Sockel für die adressierte Cache-Zeile bestimmen soll; eine Anforderung nach Besitz (RFO, Request for Ownership) der adressierten Cache-Zeile an den Home-Agenten bereitstellen soll; warten soll, bis der Home-Agent entweder eine letzte Kopie der adressierten Cache-Zeile aus einem Cache invalidiert und abruft oder die adressierte Cache-Zeile vom Speicher fetcht; eine Bestätigung und die adressierte Cache-Zeile empfangen soll; den RAO-Befehl auf der empfangenen Cache-Zeile atomar ausführen soll; mehrere lokale RAO-Befehle an die adressierte Cache-Zeile von dem einen oder den mehreren Requester-CPU-Kernen anschließend empfangen soll; und die mehreren lokalen RAO-Befehle auf der empfangenen Cache-Zeile unabhängig vom Home-Agenten ausführen soll.
  13. System nach Anspruch 11, wobei der Home-Agent die empfangene RFO-Anforderung bedienen soll, indem bestimmt wird, ob die adressierte Cache-Zeile irgendwo im System gecacht ist; und wenn die adressierte Cache-Zeile in einem lokalen Cache des Home-Sockels gecacht ist, Invalidieren und Abrufen der adressierten Cache-Zeile vom lokalen Cache, wobei der lokale Cache einen oder mehrere Caches, die von den CPU-Kernen im Home-Sockel gemeinsam genutzt werden, und einen oder mehrere untergeordnete Caches, die einzelnen CPU-Kernen im Home-Sockel dediziert sind, umfasst; wenn die adressierte Cache-Zeile in einem entfernten Sockel gecacht ist, Invalidieren und Abrufen der adressierten Cache-Zeile vom entfernten Sockel; wenn die adressierte Cache-Zeile nirgendwo im System gecacht ist, Fetchen der adressierten Cache-Zeile aus einem virtuellen Speicherbereich, der zum Home-Sockel gemappt wird; und Bereitstellen der adressierten Cache-Zeile und der Bestätigung an den Requester-Sockel.
  14. System nach Anspruch 11, wobei die Requester-Cache-Steuerschaltung ferner: eine entfernte Anforderung an die adressierte Cache-Zeile empfangen soll, während einer oder mehrere der mehreren lokalen RAO-Befehle noch ausstehen, wobei die entfernte Anforderung eines von einer Leseanforderung, einem Lesevorgang für den Besitz und einer Anforderung nach Besitz umfasst; und zwischen den mehreren lokalen RAO-Befehlen und der entfernten Anforderung arbitrieren soll, indem die mehreren lokalen RAO-Befehle bevorzugt und zuerst durchgeführt werden, während Schritte ergriffen werden, um ein Verhungern der entfernten Anforderung zu vermeiden.
  15. System nach Anspruch 12, wobei das Ergreifen von Schritten zum Vermeiden des Verhungerns der entfernten Anforderung eines oder mehrere umfasst von: Aufrechterhalten einer Zählung, wie viele lokale RAO-Befehle ausgeführt werden, während die entfernte Anforderung ausstehend ist, und Bedienen der entfernten Anforderung, wenn die Zählung einen Schwellenwert erreicht; Aufrechterhalten einer Zählung, wie viele Zyklen die entfernte Anforderung ausstehend ist, und Bedienen der entfernten Anforderung, wenn die Zählung einen Schwellenwert erreicht; und Bedienen der entfernten Anforderung, wenn die mehreren lokalen RAO-Befehle jeweils eine niedrige Priorität aufweisen, wobei jeder der mehreren lokalen RAO-Befehle einen Prioritätsoperanden aufweist.
  16. System nach einem der Ansprüche 11-13, wobei der Requester-Sockel und der Home-Agent jeweils in ersten und zweiten Sockeln eines Multi-Sockel-Systems angeordnet sind, das wenigstens zwei Sockel umfasst, und wobei die wenigstens zwei Sockel mit einer Zwischenverbindung gekoppelt sind, die eine von einer vollständig verbundenen Topologie, einer Crossbar-Topologie, einer Maschentopologie und einer Ringtopologie umfasst.
  17. System nach einem der Ansprüche 11-13, wobei das Bestimmen des Home-Agenten das Zugreifen auf ein im Speicher gespeichertes Mapping von Adressbereichen zu Home-Agenten umfasst.
  18. System nach einem der Ansprüche 11-13, wobei der Home-Agent umfasst: einen Caching-Agenten zum Verfolgen eines systemweiten Cache-Zustands einer Cache-Zeile mit einer Adresse innerhalb eines virtuellen Adressbereichs, der zum Home-Agenten gemappt wird, wobei der systemweite Cache-Zustand einem Cache-Kohärenzprotokoll des Multi-Sockel-Systems entspricht; und einen Speicheragenten, der über eine Schnittstelle mit dem Speicher verbunden sein soll und Anforderungen an diesen bedienen soll.
  19. System nach einem der Ansprüche 11-13, wobei die Requester-Cache-Steuerschaltung ferner die empfangene Cache-Zeile in einer Cache-Hierarchie des Requester-Sockels speichern soll, wobei auf die gespeicherte Cache-Zeile von den nachfolgenden mehreren lokalen RAO-Befehlen zugegriffen werden soll.
  20. Vorrichtung zum Ausführen eines Befehls für eine entfernte atomare Operation (RAO, Remote Atomic Operation), generiert von einem Kern einer Requester-Zentralverarbeitungseinheit (CPU, Central Processing Unit) in einem Requester-Sockel, wobei die Vorrichtung eine Cache-Steuerschaltung im Requester-Sockel umfasst, die Cache-Steuerschaltung umfassend: Empfangsschaltungen zum Empfangen des RAO-Befehls vom Requester-CPU-Kern; Mittel zum Bestimmen eines Home-Agenten in einem Home-Sockel für die adressierte Cache-Zeile; Sendeschaltungen zum Bereitstellen einer Anforderung nach Besitz (RFO, Request for Ownership) der adressierten Cache-Zeile an den Home-Agenten; Mittel zum Warten, bis der Home-Agent entweder eine letzte Kopie der adressierten Cache-Zeile aus einem Cache invalidiert und abruft oder die adressierte Cache-Zeile vom Speicher fetcht; Mittel zum Empfangen einer Bestätigung und der adressierten Cache-Zeile; Mittel zum atomaren Ausführen des RAO-Befehls auf der empfangenen Cache-Zeile; Mittel zum anschließenden Empfangen mehrerer lokaler RAO-Befehle an die adressierte Cache-Zeile von einem oder mehreren Requester-CPU-Kernen innerhalb des Requester-Sockels; und Mittel zum Ausführen der mehreren lokalen RAO-Befehle auf der empfangenen Cache-Zeile unabhängig vom Home-Agenten.
  21. Vorrichtung nach Anspruch 19, wobei der Home-Agent die empfangene RFO-Anforderung bedienen soll, indem bestimmt wird, ob die adressierte Cache-Zeile irgendwo in der Vorrichtung gecacht ist; und wenn die adressierte Cache-Zeile in einem lokalen Cache des Home-Sockels gecacht ist, Invalidieren und Abrufen der adressierten Cache-Zeile vom lokalen Cache, wobei der lokale Cache einen oder mehrere Caches, die von den CPU-Kernen im Home-Sockel gemeinsam genutzt werden, und einen oder mehrere untergeordnete Caches, die einzelnen CPU-Kernen im Home-Sockel dediziert sind, umfasst; wenn die adressierte Cache-Zeile in einem entfernten Sockel gecacht ist, Invalidieren und Abrufen der adressierten Cache-Zeile vom entfernten Sockel; wenn die adressierte Cache-Zeile nirgendwo in der Vorrichtung gecacht ist, Fetchen der adressierten Cache-Zeile aus einem virtuellen Speicherbereich, der zum Home-Sockel gemappt wird; und Bereitstellen der adressierten Cache-Zeile und der Bestätigung an den Requester-Sockel.
  22. Vorrichtung nach einem der Ansprüche 19-20, wobei die Requester-Cache-Steuerschaltung ferner: eine entfernte Anforderung an die adressierte Cache-Zeile empfangen soll, während einer oder mehrere der mehreren lokalen RAO-Befehle noch ausstehen, wobei die entfernte Anforderung eines von einer Leseanforderung, einem Lesevorgang für den Besitz und einer Anforderung nach Besitz umfasst; und zwischen den mehreren lokalen RAO-Befehlen und der entfernten Anforderung arbitrieren soll, indem die mehreren lokalen RAO-Befehle bevorzugt und zuerst durchgeführt werden, während Schritte ergriffen werden, um ein Verhungern der entfernten Anforderung zu vermeiden.
  23. Nicht-transitorisches maschinenlesbares Medium, das Befehle enthält, die, wenn sie von einer Cache-Steuerschaltung eines Requester-Sockels durchgeführt werden, die Cache-Steuerschaltung veranlassen, einen Befehl für eine entfernte atomare Operation (RAO, Remote Atomic Operation) auszuführen, generiert von einem Kern einer Requester-Zentralverarbeitungseinheit (CPU, Central Processing Unit) innerhalb des Requester-Sockels durch: Empfangen des RAO-Befehls vom Requester-CPU-Kern; Bestimmen eines Home-Agenten in einem Home-Sockel für die adressierte Cache-Zeile; Bereitstellen einer Anforderung nach Besitz (RFO, Request for Ownership) der adressierten Cache-Zeile an den Home-Agenten; Warten, bis der Home-Agent entweder eine letzte Kopie der adressierten Cache-Zeile aus einem Cache invalidiert und abruft oder die adressierte Cache-Zeile vom Speicher fetcht; Empfangen einer Bestätigung und der adressierten Cache-Zeile; atomares Ausführen des RAO-Befehls auf der empfangenen Cache-Zeile; anschließendes Empfangen mehrerer lokaler RAO-Befehle an die adressierte Cache-Zeile von einem oder mehreren Requester-CPU-Kernen innerhalb des Requester-Sockels und Ausführen der mehreren lokalen RAO-Befehle auf der empfangenen Cache-Zeile unabhängig vom Home-Agenten.
  24. Nicht-transitorisches maschinenlesbares Medium nach Anspruch 22, ferner umfassend Befehle, die den Home-Agenten veranlassen zum: Bedienen der empfangenen RFO-Anforderung, indem bestimmt wird, ob die adressierte Cache-Zeile irgendwo in einem Multi-Sockel-System gecacht ist, in dem der Home-Sockel angeordnet ist; wenn die adressierte Cache-Zeile in einem lokalen Cache des Home-Sockels gecacht ist, Invalidieren und Abrufen der adressierten Cache-Zeile vom lokalen Cache, wobei der lokale Cache einen oder mehrere Caches, die von den CPU-Kernen im Home-Sockel gemeinsam genutzt werden, und einen oder mehrere untergeordnete Caches, die einzelnen CPU-Kernen im Home-Sockel dediziert sind, umfasst; wenn die adressierte Cache-Zeile in einem entfernten Sockel gecacht ist, Invalidieren und Abrufen der adressierten Cache-Zeile vom entfernten Sockel; wenn die adressierte Cache-Zeile nirgendwo im System gecacht ist, Fetchen der adressierten Cache-Zeile aus einem virtuellen Speicherbereich, der zum Home-Sockel gemappt wird; und Bereitstellen der adressierten Cache-Zeile und der Bestätigung an den Requester-Sockel.
  25. Nicht-transitorisches maschinenlesbares Medium nach einem der Ansprüche 22-23, ferner umfassend Befehle, die die Cache-Steuerschaltung des Requester-Sockels veranlassen zum: Empfangen einer entfernten Anforderung an die adressierte Cache-Zeile, während einer oder mehrere der mehreren lokalen RAO-Befehle noch ausstehen, wobei die entfernte Anforderung eines von einer Leseanforderung, einem Lesevorgang für den Besitz und einer Anforderung nach Besitz umfasst; und Arbitrieren zwischen den mehreren lokalen RAO-Befehlen und der entfernten Anforderung, indem die mehreren lokalen RAO-Befehle bevorzugt und zuerst durchgeführt werden, während Schritte ergriffen werden, um ein Verhungern der entfernten Anforderung zu vermeiden.
  26. Nicht-transitorisches maschinenlesbares Medium nach Anspruch 24, wobei das Ergreifen von Schritten zum Vermeiden des Verhungerns der entfernten Anforderung eines oder mehrere umfasst von: Aufrechterhalten einer Zählung, wie viele lokale RAO-Befehle ausgeführt werden, während die entfernte Anforderung ausstehend ist, und Bedienen der entfernten Anforderung, wenn die Zählung einen Schwellenwert erreicht; Aufrechterhalten einer Zählung, wie viele Zyklen die entfernte Anforderung ausstehend ist, und Bedienen der entfernten Anforderung, wenn die Zählung einen Schwellenwert erreicht; und Bedienen der entfernten Anforderung, wenn die mehreren lokalen RAO-Befehle jeweils eine niedrige Priorität aufweisen, wobei jeder der mehreren lokalen RAO-Befehle einen Prioritätsoperanden aufweist.
DE102018130225.8A 2017-12-29 2018-11-29 Entfernte atomare Operationen in Multi-Sockel-Systemen Pending DE102018130225A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/858,894 US10296459B1 (en) 2017-12-29 2017-12-29 Remote atomic operations in multi-socket systems
US15/858,894 2017-12-29

Publications (1)

Publication Number Publication Date
DE102018130225A1 true DE102018130225A1 (de) 2019-07-04

Family

ID=66541013

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102018130225.8A Pending DE102018130225A1 (de) 2017-12-29 2018-11-29 Entfernte atomare Operationen in Multi-Sockel-Systemen

Country Status (3)

Country Link
US (3) US10296459B1 (de)
CN (1) CN109992559A (de)
DE (1) DE102018130225A1 (de)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2551529B (en) * 2016-06-21 2018-09-12 Advanced Risc Mach Ltd Switching between private cache and shared memory to handle atomic operations
US11698929B2 (en) 2018-11-30 2023-07-11 Intel Corporation Offload of data lookup operations
US11734192B2 (en) * 2018-12-10 2023-08-22 International Business Machines Corporation Identifying location of data granules in global virtual address space
US11016908B2 (en) 2018-12-11 2021-05-25 International Business Machines Corporation Distributed directory of named data elements in coordination namespace
US20200401412A1 (en) * 2019-06-24 2020-12-24 Intel Corporation Hardware support for dual-memory atomic operations
US20200242042A1 (en) * 2020-03-26 2020-07-30 Jonas Svennebring System, Apparatus and Method for Performing a Remote Atomic Operation Via an Interface
US20210209035A1 (en) * 2020-12-26 2021-07-08 Intel Corporation Memory accesses using a memory hub

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8473567B2 (en) * 2010-03-29 2013-06-25 Intel Corporation Generating a packet including multiple operation codes
US8352656B2 (en) * 2010-04-08 2013-01-08 Intel Corporation Handling atomic operations for a non-coherent device
US20140181474A1 (en) * 2012-12-26 2014-06-26 Telefonaktiebolaget L M Ericsson (Publ) Atomic write and read microprocessor instructions
US9092345B2 (en) * 2013-08-08 2015-07-28 Arm Limited Data processing systems
US9250914B2 (en) * 2013-12-20 2016-02-02 Intel Corporation Method and apparatus for selecting cache locality for atomic operations
US9734063B2 (en) * 2014-02-27 2017-08-15 École Polytechnique Fédérale De Lausanne (Epfl) Scale-out non-uniform memory access

Also Published As

Publication number Publication date
US20220091983A1 (en) 2022-03-24
US11537520B2 (en) 2022-12-27
US10296459B1 (en) 2019-05-21
CN109992559A (zh) 2019-07-09
US20190243761A1 (en) 2019-08-08
US11138112B2 (en) 2021-10-05

Similar Documents

Publication Publication Date Title
DE102018130225A1 (de) Entfernte atomare Operationen in Multi-Sockel-Systemen
DE112017001804T5 (de) Vorrichtung und Verfahren für träge synchrone Seitentabellenaktualisierungen mit geringem Aufwand
DE102018005105A1 (de) Befehle für entfernte atomare operationen
DE112013005188B4 (de) Prozessor und vefrahren zur vektorisierung von zusammengeführten, mehrfach geschachtelten schleifen
DE102018006757A1 (de) Festkomma-zu-gleitkomma-umwandlung
DE112017001825T5 (de) Prozessoren, verfahren, systeme und instruktionen zum atomischen speichern von daten, die breiter als eine nativ unterstützte datenbreite sind, in einem speicher
DE102018124945A1 (de) Einrichtung und verfahren für komplexe multiplikation
DE102018125232A1 (de) Einrichtung und Verfahren für komplexe Multiplikation und Akkumulation
DE102018132521A1 (de) Vorrichtung und verfahren zur verflachung und reduktion von schleifen in einer single instruction, multiple data- (simd-) pipeline
DE102018129341A1 (de) Verfahren und Einrichtung für Mehrfachlade- und Mehrfachspeicher-Vektorbefehle
DE112011105122T5 (de) Systeme, Vorrichtungen und Verfahren zum Vermischen zweier Quelloperanden in einem einzigen Ziel unter Verwendung einer Schreibmaske
DE112012007088B4 (de) Vorrichtung, verfahren und system mit einem befehl zum reduzieren von elementen in einem vektorregister mit einem schrittweisem zugriffsmuster
DE112019002389T5 (de) Architektur zur dynamischen umwandlung einer speicherkonfiguration
DE102018125817A1 (de) Systeme und Verfahren zum Laden eines Kachelregisterpaars
DE102018006008A1 (de) Vorrichtung und Verfahren zur Multiplikation einer komplexen Zahl mit der konjugierten
DE102014004564A1 (de) Prozessoren, verfahren und systeme zum implementieren von teilregisterzugriffen mit maskierten gesamtregisterzugriffen
DE112013004783T5 (de) Durch Lese- und Schreibmasken gesteuerter Vektor-Verschiebebefehl
DE112013003741T5 (de) Systeme, Vorrichtungen und Verfahren zum Durchführen einer Konfliktdetektion unf einer Übertragung von Inhalten eines Registers an Datenelementpositionen eines anderen Registers
DE102018125805A1 (de) Systeme, verfahren, und vorrichtungen für skalarproduktoperationen
DE112016005909T5 (de) Einrichtung und verfahren zum beschleunigen von graphenanalyse
DE112013004800T5 (de) Anweisung zur Bitverschiebung nach links mit Ziehen von Einsen in niedrigwertigere Bit
DE102015002253A1 (de) Verfahren und Vorrichtung zum Ausführen mehrerer Multiplikationsoperationen
DE102018132200A1 (de) Vorrichtung und verfahren zum verarbeiten von fraktionalen umkehroperationen
DE102018126036A1 (de) Systeme und verfahren zum setzen eines kachelregisterpaars auf null
DE112017003347T5 (de) Systeme, Vorrichtungen und Verfahren für Strided-Ladevorgänge

Legal Events

Date Code Title Description
R012 Request for examination validly filed