DE102022107196A1 - Sichere direkte Peer-to-Peer-Speicherzugriffsanforderung zwischen Geräten - Google Patents

Sichere direkte Peer-to-Peer-Speicherzugriffsanforderung zwischen Geräten Download PDF

Info

Publication number
DE102022107196A1
DE102022107196A1 DE102022107196.0A DE102022107196A DE102022107196A1 DE 102022107196 A1 DE102022107196 A1 DE 102022107196A1 DE 102022107196 A DE102022107196 A DE 102022107196A DE 102022107196 A1 DE102022107196 A1 DE 102022107196A1
Authority
DE
Germany
Prior art keywords
memory
host
memory protection
access request
translated
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
DE102022107196.0A
Other languages
English (en)
Inventor
Utkarsh Y. Kakaiya
Rajesh Sankaran
David 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 DE102022107196A1 publication Critical patent/DE102022107196A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/78Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
    • G06F21/79Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data in semiconductor storage media, e.g. directly-addressable memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1458Protection against unauthorised use of memory or access to memory by checking the subject access rights
    • G06F12/1483Protection against unauthorised use of memory or access to memory by checking the subject access rights using an access-table, e.g. matrix or list
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1458Protection against unauthorised use of memory or access to memory by checking the subject access rights
    • 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/0875Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
    • GPHYSICS
    • G06COMPUTING; CALCULATING 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/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/1425Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/145Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being virtual, e.g. for virtual blocks or segments before a translation mechanism
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4204Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
    • G06F13/4221Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being an input/output bus, e.g. ISA bus, EISA bus, PCI bus, SCSI bus
    • 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/1052Security improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0024Peripheral component interconnect [PCI]

Landscapes

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

Abstract

Eine Ausführungsform einer integrierte Schaltung umfasst eine Schaltung, um Speicherschutzinformationen für einen Nicht-Host-Speicher in einem Speicherschutz-Cache zu speichern, und eine oder mehrere Speicherschutzprüfungen an einer übersetzten Zugriffsanforderung für den Nicht-Host-Speicher basierend auf den gespeicherten Speicherschutzinformationen auszuführen. Andere Ausführungsformen werden offenbart und beansprucht.

Description

  • HINTERGRUND
  • 1. Technisches Gebiet
  • Diese Offenbarung betrifft allgemein Speichertechnologie und insbesondere Speicherverwaltungstechnologie.
  • 2. Stand der Technik
  • Die meisten modernen Computersysteme verwenden Speichervirtualisierung für optimale Speichernutzung und Sicherheit. Herkömmlicherweise würden Peripheral Component Interconnect Express (PCIe) -Geräte nur nicht übersetzte Adressen anstelle von Host Physical Addresses (HPA) beobachten, und würden eine Lese- oder Schreibanforderung mit einer gegebenen nicht übersetzten Adresse senden. Auf der Host-Seite würde die Input/Output Memory Management Unit (IOMMU) des Prozessors eine Lese/Schreib-Anforderung von einem Gerät empfangen, die spezifizierte Adresse in eine HPA übersetzen, und den Speicherzugriff (Lesen/Schreiben) des Geräts abschließen. Um Geräte nur für spezifische Adressen zu isolieren, würde Software das Gerät und die IOMMU programmieren, nicht übersetzte Adressen zu verwenden, die zum Beispiel eine Virtual Address (VA), eine Guest Physical Address (GPA) oder eine Input/Output Virtual Address (IOVA) sind. Die HPA ist die physikalische Adresse, die verwendet wird, um auf alle Plattformressourcen zuzugreifen, nachdem alle Adressübersetzungen stattgefunden haben, einschließlich jeglicher Übersetzung von GPA in HPA oder von Guest Virtual Address (GVA) in GPA in HPA oder von Guest Input/Output Virtual Address (GIOVA) in GPA in HPA in einer virtualisierten Umgebung, und sie wird üblicherweise einfach als eine Physical Address (PA) in einer nicht virtualisierten Umgebung bezeichnet.
  • Address Translation Services (ATS) ist eine Erweiterung zu dem PCIe-Protokoll. Die aktuelle Version von ATS ist Teil der PCIe-Spezifikation, die von der PCI Special Interest Group (PCI-SIG) verwaltet wird, und auf die Mitglieder bei https://pcisig.com/specifications/ zugreifen können, und kann hierin als „ATS-Spezifikation“ bezeichnet werden. ATS ermöglicht es unter anderem, dass Geräte Adressübersetzungen zwischenspeichern und Seitenfehler handhaben (herkömmliches für PCIe-Geräte erforderliches Speicher-Pinning), was Unterstützung für eine Vielzahl von Merkmalen ermöglicht, einschließlich Device Translation Lookaside Buffer (Dev-TLB) und Shared Virtual Memory. ATS stellt auch Unterstützung für Cache-kohärente Verbindungen, wie zum Beispiel Computer Express Link (CXL) -Cache-Protokoll, bereit, die ausschließlich an einer physikalischen Adresse arbeiten. ATS ermöglicht es einem PCIe-Gerät, Adressübersetzungen, zum Beispiel von VA zu HPA, von einem Übersetzungsagenten (zum Beispiel der IOMMU) anzufordern. Diese Fähigkeit ermöglicht es dem Gerät, die resultierenden Übersetzungen intern in einem Dev-TLB zu speichern, der in der ATS-Spezifikation auch als ein Address Translation Cache (ATC) bezeichnet wird, und die resultierende HPA direkt zu verwenden, um anschließend auf den Hauptspeicher über eine Host-zu-Gerät-Verbindung (zum Beispiel eine PCIe-Schnittstelle oder eine Cache-kohärente Schnittstelle (zum Beispiel CXL, NVLink und Cache Coherent Interconnect for Accelerators (CCIX)) zuzugreifen. Als solches teilt ATS einen etablierten PCIe-Speicherzugriff in mehrere Stufen auf, einschließlich (i) einer Übersetzungsanforderung, bei der das Gerät eine Übersetzung für eine VA in eine HPA anfordert; (ii) einer übersetzten Anforderung, bei der das Gerät ein Lesen/Schreiben mit einer gegebenen HPA anfordert; und (iii) einer optionalen Seitenanforderung, bei der das Gerät eine Anforderung an die IOMMU stellt, damit ihr nach einer fehlgeschlagenen Übersetzungsanforderung eine neue Seite zugewiesen wird.
  • Figurenliste
  • Die verschiedenen Ausführungsformen der vorliegenden Erfindung sind beispielhaft und nicht einschränkend in den Figuren der begleitenden Zeichnungen veranschaulicht, in denen Folgendes gilt::
    • 1A ist ein Blockdiagramm eines Beispiels einer integrierten Schaltung gemäß einer Ausführungsform;
    • 1B ist ein Blockdiagramm eines anderen Beispiels einer integrierten Schaltung gemäß einer Ausführungsform;
    • Die 2A bis 2B sind Flussdiagramme eines Beispiels eines Verfahrens gemäß einer Ausführungsform;
    • 3 ist ein Blockdiagramm eines Beispiels einer Vorrichtung gemäß einer Ausführungsform;
    • 4A ist ein Blockdiagramm eines Beispiels eines verteilten Datenverarbeitungssystems gemäß einer Ausführungsform;
    • 4B ist ein Blockdiagramm eines anderen Beispiels eines verteilten Datenverarbeitungssystems gemäß einer Ausführungsform;
    • 4C ist ein veranschaulichendes Diagramm eines Beispiels einer Speicherschutz-Cache-Struktur gemäß jeweiligen Ausführungsformen;
    • 5A ist ein Flussdiagramm eines Beispiels eines Verfahrens gemäß einer Ausführungsform;
    • 5B ist ein Flussdiagramm eines anderen Beispiels eines Verfahrens gemäß einer Ausführungsform;
    • 6 ist ein Blockdiagramm eines anderen Beispiels eines verteilten Datenverarbeitungssystems gemäß einer Ausführungsform;
    • 7 ist ein Blockdiagramm eines anderen Beispiels eines verteilten Datenverarbeitungssystems gemäß einer Ausführungsform;
    • 8A ist ein Blockdiagramm eines anderen Beispiels eines verteilten Datenverarbeitungssystems gemäß einer Ausführungsform;
    • 8B ist ein Flussdiagramm eines anderen Beispiels eines Verfahrens gemäß einer Ausführungsform;
    • 9A ist ein Blockdiagramm, das sowohl eine beispielhafte In-Order-Pipeline als auch eine beispielhafte Registerumbenennungs-, Out-of-Order-Ausgabe/Ausführungs-Pipeline gemäß Ausführungsformen der Erfindung veranschaulicht.
    • 9B ist ein Blockdiagramm, das sowohl ein Ausführungsbeispiel eines In-Order-Architekturkerns als auch einen beispielhaften Registerumbenennungs-, Out-of-Order-Ausgabe/Ausführung-Architekturkern veranschaulicht, der in einem Prozessor enthalten sein soll, gemäß Ausführungsformen der Erfindung;
    • Die 10A-B veranschaulichen ein Blockdiagramm einer spezifischeren beispielhaften In-Order-Kernarchitektur, wobei der Kern einer von mehreren Logikblöcken (einschließlich anderer Kerne desselben Typs und/oder unterschiedlicher Typen) in einem Chip wäre;
    • 11 ist ein Blockdiagramm eines Prozessors, der mehr als einen Kern haben kann, eine integrierte Speichersteuerung haben kann, und eine integrierte Grafik haben kann, gemäß Ausführungsformen der Erfindung;
    • Die 12-15 sind Blockdiagramme beispielhafter Computerarchitekturen; und
    • 16 ist ein Blockdiagramm, das die Verwendung eines Softwareanweisungskonverters zum Konvertieren binärer Anweisungen in einem Quellanweisungssatz in binäre Anweisungen in einem Zielanweisungssatz gegenüberstellt, gemäß Ausführungsformen der Erfindung.
  • DETAILLIERTE BESCHREIBUNG
  • Hierin diskutierte Ausführungsformen stellen verschiedentlich Techniken und Mechanismen für einen Memory Protection Cache (MPC) bereit. Die hierin beschriebenen Technologien können in einem oder mehreren elektronischen Geräten implementiert sein. Nicht einschränkende Beispiele für elektronische Geräte, die hierin beschriebene Technologien nutzen können, beinhalten jegliche Art von mobilem Gerät und/oder stationärem Gerät, wie zum Beispiel Kameras, Mobiltelefone, Computerendgeräte, Desktop-Computer, elektronische Lesegeräte, Faxgeräte, Kiosks, Laptop-Computer, Netbook-Computer, Notebook-Computer, Internetgeräte, Zahlungsendgeräte, persönliche digitale Assistenten, Medienabspielgeräten und/oder Recorder, Server (zum Beispiel Blade-Server, Rackmontageserver, Kombinationen davon, usw.), Set-Top-Boxen, Smartphones, Tablet-Personalcomputer, ultramobile Personalcomputer, drahtgebundene Telefone, Kombinationen davon und dergleichen. Allgemeiner können die hierin beschriebenen Technologien in jeglicher einer Vielzahl von elektronischen Geräten eingesetzt werden, die eine integrierte Schaltung beinhalten, die funktionsfähig ist, um eine oder mehrere Speicherschutzprüfungen an einer übersetzten Zugriffsanforderung für einen Nicht-Host-Speicher basierend auf in einem MPC gespeicherten Speicherschutzinformationen auszuführen
  • In der folgenden Beschreibung werden zahlreiche Details diskutiert, um eine genauere Erläuterung der Ausführungsformen der vorliegenden Offenbarung bereitzustellen. Es versteht sich jedoch für einen Fachmann, dass Ausführungsformen der vorliegenden Offenbarung ohne diese spezifischen Details praktiziert werden können. In anderen Fällen sind gut bekannte Strukturen und Geräte in Blockdiagrammform anstatt detailliert gezeigt, um zu vermeiden, dass Ausführungsformen der vorliegenden Offenbarung verschleiert werden.
  • Es ist anzumerken, dass in den entsprechenden Zeichnungen der Ausführungsformen Signale mit Linien dargestellt sind. Einige Linien können dicker sein, um eine größere Anzahl an einzelnen Signalpfaden anzuzeigen, und/oder können Pfeile an einem oder mehreren Enden haben, um eine Richtung des Informationsflusses anzuzeigen. Solche Anzeigen sollen nicht einschränkend sein. Vielmehr werden die Linien in Verbindung mit einer oder mehreren beispielhaften Ausführungsformen verwendet, um ein einfacheres Verständnis einer Schaltung oder einer Logikeinheit zu ermöglichen. Jegliches dargestellte Signal kann, wie durch Gestaltungsbedürfnisse oder Präferenzen vorgegeben, tatsächlich ein oder mehrere Signale umfassen, die sich in beiden Richtungen bewegen können, und mit jeglichem geeigneten Typ von Signalschema implementiert werden können.
  • Über die gesamte Spezifikation hinweg und in den Ansprüchen bedeutet der Ausdruck „verbunden“ eine direkte Verbindung, wie zum Beispiel eine elektrische, mechanische oder magnetische Verbindung, zwischen den Gegenständen, die verbunden sind, ohne jegliche zwischengeschaltete Geräte. Der Begriff „gekoppelt“ bedeutet eine direkte oder indirekte Verbindung, wie zum Beispiel eine direkte elektrische, mechanische oder magnetische Verbindung zwischen den Gegenständen, die verbunden sind, oder eine indirekte Verbindung über ein oder mehrere passive oder aktive zwischengeschaltete Geräte. Der Begriff „Schaltung“ oder „Modul“ kann sich auf eine oder mehrere passive und/oder aktive Komponenten beziehen, die angeordnet sind, um miteinander zusammenzuwirken, um eine gewünschte Funktion bereitzustellen. Der Begriff „Signal“ kann sich auf mindestens ein Stromsignal, Spannungssignal, magnetisches Signal oder Daten-/Taktsignal beziehen. Die Bedeutung von „ein/e“ und „der/die/das“ beinhaltet Pluralbezüge. Die Bedeutung von „in“ schließt „in“ und „an“ ein.
  • Der Begriff „Gerät“ kann sich allgemein auf eine Vorrichtung gemäß dem Kontext der Verwendung dieses Begriffs beziehen. Zum Beispiel kann sich ein Gerät auf einen Stapel von Schichten oder Strukturen, eine einzelne Struktur oder Schicht, eine Verbindung verschiedener Strukturen, die aktive und/oder passive Elementen haben, usw. beziehen. Allgemein ist ein Gerät eine dreidimensionale Struktur mit einer Ebene entlang der x-y-Richtung und einer Höhe entlang der z-Richtung eines kartesischen x-y-z-Koordinatensystems. Die Ebene des Geräts kann auch die Ebene einer Vorrichtung sein, die das Gerät umfasst. Wie hierin verwendet, kann sich der Begriff „Gerät“ auch allgemein auf eine Eingabe/Ausgabe-Quelle oder ein Eingabe/Ausgabe-Ziel (zum Beispiel Quellgerät, Zielgerät, usw.) beziehen.
  • Der Begriff „Skalieren“ bezieht sich allgemein auf das Konvertieren eines Designs (schematisch und Layout) von einer Prozesstechnologie in eine andere Prozesstechnologie und das anschließende Verringert werden in der Layoutfläche. Der Begriff „Skalieren“ bezieht sich allgemein auch auf das Verkleinern des Layouts und von Geräten innerhalb desselben Technologieknotens. Der Begriff „Skalieren“ kann sich auch auf Anpassen (zum Beispiel Verlangsamen oder Beschleunigen - das heißt abwärts skalieren bzw. aufwärts skalieren) einer Signalfrequenz relativ zu einem anderen Parameter, zum Beispiel einem Stromversorgungspegel, beziehen.
  • Die Ausdrücke „im Wesentlichen“, „nahe“, „ungefähr“, „in der Nähe von“ und „etwa“ beziehen sich allgemein auf einen Bereich innerhalb von +/- 10% eines Zielwerts. Zum Beispiel bedeuten die Begriffe „im Wesentlichen gleich“, „etwa gleich“ und „etwa gleich“, sofern in dem expliziten Kontext ihrer Verwendung nicht anderes spezifiziert, dass es zwischen den so beschriebenen Gegenständen nicht mehr als eine zufällige Variation gibt. In der Technik ist eine solche Variation typischerweise nicht mehr als +/-10 % eines vorbestimmten Zielwerts.
  • Es versteht sich, dass die so verwendeten Begriffe unter geeigneten Umständen austauschbar sind, sodass die hierin beschriebenen Ausführungsformen der Erfindung zum Beispiel zum Betrieb in anderen als den hierin veranschaulichten oder anderweitig beschriebenen Orientierungen geeignet sind.
  • Sofern nicht anders spezifiziert, zeigt die Verwendung der Ordnungsadjektive „erste/r/s“, „zweite/r/s“ und „dritte/r/s“ usw. zur Beschreibung eines gemeinsames Objekts lediglich an, dass sich auf unterschiedliche Instanzen von gleichen Objekten bezogen wird, und soll nicht implizieren, dass die so beschriebenen Objekte in einer gegebenen Sequenz, entweder zeitlich, räumlich, in der Rangfolge oder auf jegliche andere Weise, vorliegen müssen.
  • Die Begriffe „links“, „rechts“, „vorn“, „hinten“, „oben“, „unten“, „über“, „unter“ und dergleichen in der Beschreibung und in den Ansprüchen, falls vorhanden, werden zu beschreibenden Zwecken und nicht notwendigerweise zum Beschreiben permanenter relativer Positionen verwendet. Zum Beispiel beziehen sich die Begriffe „über“, „unter“, „Vorderseite“, „Rückseite“, „oben“, „unten“, „über“, „unter“ und „auf“, wie hierin verwendet, auf eine relative Position einer Komponente, Struktur oder eines Materials in Bezug auf andere referenzierte Komponenten, Strukturen oder Materialien innerhalb eines Geräts, wobei solche physikalischen Beziehungen beachtenswert sind. Diese Begriffe werden hierin nur zu beschreibenden Zwecken und überwiegend in dem Kontext einer z-Achse eines Geräts verwendet, und können daher relativ zu einer Orientierung eines Geräts sein. Somit kann ein erstes Material „über“ einem zweiten Material in dem Kontext einer hierin bereitgestellten Figur auch „unter“ dem zweiten Material sein, wenn das Gerät in Bezug auf den Kontext der bereitgestellten Figur kopfüber ausgerichtet ist. Im Kontext von Materialien kann ein Material, das über oder unter einem anderen angeordnet ist, direkt in Kontakt mit einem oder mehreren dazwischenliegenden Materialien stehen oder diese haben. Außerdem kann ein Material, das zwischen zwei Materialien angeordnet ist, direkt mit den zwei Schichten in Kontakt stehen, oder eine oder mehrere Zwischenschichten haben. Im Gegensatz dazu befindet sich ein erstes Material „auf“ einem zweiten Material in direktem Kontakt mit diesem zweiten Material. Ähnliche Unterscheidungen sind in dem Kontext von Baugruppen zu machen.
  • Der Begriff „zwischen“ kann in dem Kontext der z-Achse, x-Achse oder y-Achse eines Geräts eingesetzt werden. Ein Material, das sich zwischen zwei anderen Materialien befindet, kann in Kontakt mit einem oder beiden dieser Materialien stehen, oder es kann durch ein oder mehrere dazwischenliegende Materialien von beiden der anderen zwei Materialien getrennt sein. Ein Material „zwischen“ zwei anderen Materialien kann deshalb mit einem der anderen zwei Materialien in Kontakt stehen, oder es kann durch ein dazwischenliegendes Material an die anderen zwei Materialien gekoppelt sein. Ein Gerät, das sich zwischen zwei anderen Geräten befindet, kann direkt mit einem oder beiden dieser Geräte verbunden sein, oder es kann durch ein oder mehrere dazwischenliegende Geräte von beiden der anderen zwei Geräte getrennt sein.
  • Wie über diese Beschreibung hinweg und in den Ansprüchen verwendet, kann eine Liste von Elementen, die durch den Ausdruck „mindestens eine/einer/eines von“ oder „ein/einer/eines oder mehrere von“ verbunden sind, jegliche Kombination der aufgelisteten Elemente bedeuten. Zum Beispiel kann der Ausdruck „mindestens eines von A, B oder C“ A; B; C; A und B; A und C; B und C; oder A, B und C bedeuten. Es wird darauf hingewiesen, dass jene Elemente einer Figur, die dieselben Bezugszahlen (oder Bezeichnungen) wie die Elemente jeglicher anderen Figur auf ähnliche Weise wie die beschriebene haben, arbeiten oder funktionieren können, aber nicht auf solche beschränkt sind.
  • Zusätzlich können die verschiedenen Elemente der kombinatorischen Logik und der sequenziellen Logik, die in der vorliegenden Offenbarung diskutiert werden, sowohl physikalische Strukturen (wie zum Beispiel AND-Gatter, OR-Gatter oder XOR-Gatter) als auch zusammengesetzte oder anderweitig optimierte Sammlungen von Geräten betreffen, die die logischen Strukturen, die boolesche Äquivalente der diskutierten Logik sind, implementieren.
  • Unter Bezugnahme auf 1A kann eine Ausführungsform von integriertem Schaltkreis 100 Schaltung 113 beinhalten, die dazu ausgelegt ist, Speicherschutzinformationen für einen Nicht-Host-Speicher in einem Memory Protection Cache (MPC) zu speichern, und eine oder mehrere Speicherschutzprüfungen an einer übersetzten Zugriffsanforderung für den Nicht-Host-Speicher basierend auf den gespeicherten Speicherschutzinformationen auszuführen. Zum Beispiel kann der Nicht-Host-Speicher einem lokalen Gerätespeicher, einem Speicherpool, einem entfernt angeordneten Speicherpool, usw. entsprechen. In einigen Ausführungsformen kann die Schaltung 113 ferner dazu ausgelegt sein, die gespeicherten Speicherschutzinformationen mit einer Memory Protection Unit (MPU) eines Hosts (zum Beispiel einer Input/Output-MPU (IO-MPU)) zu synchronisieren. Zum Beispiel kann die Schaltung 113 dazu ausgelegt sein, sicheren direkten Peer-to-Peer (P2P) -Speicherzugriff auf den Nicht-Host-Speicher ohne Eingriff durch den Host (zum Beispiel umgehen eines Root-Ports des Hosts für die übersetzte Zugriffsanforderung für den Nicht-Host-Speicher) und/oder Blockieren oder Zulassen einer direkten P2P-Speicherzugriffsanforderung für den Nicht-Host-Speicher basierend auf den in dem MPC gespeicherten Speicherschutzinformationen bereitzustellen. In einigen Ausführungsformen kann die Schaltung 113 ferner dazu ausgelegt sein, zu bestimmen, ob die übersetzte Zugriffsanforderung von dem Host kommt, und, falls dies bestimmt wurde, die eine oder die mehreren Speicherschutzprüfungen an der übersetzten Zugriffsanforderung zu umgehen. Die Schaltung 113 kann auch dazu ausgelegt sein, basierend auf in der übersetzten Zugriffsanforderung empfangenen Informationen zu bestimmen, ob die übersetzte Zugriffsanforderung den MPC verfehlt, und, falls dies bestimmt wurde, die MPU des Hosts aufzufordern, Speicherschutzinformationen für die übersetzte Zugriffsanforderung aufzufüllen. Zum Beispiel kann die Schaltung 113 dazu ausgelegt sein, einen Anforderer zu benachrichtigen, die übersetzte Zugriffsanforderung, die den MPC verfehlt, zusammen mit Zurückhalteinformationen erneut zu versuchen.
  • Unter Bezugnahme auf 1B kann eine Ausführungsform von integrierter Schaltung 150 Schaltung 153 beinhalten, die dazu ausgelegt ist, Speicherschutzinformationen für einen Host-Speicher in einer IO-MPU zu speichern, und die gespeicherten Speicherschutzinformationen mit einem MPC eines kommunizierend mit dem Host gekoppelten Geräts (zum Beispiel eines I/O-Geräts) zu synchronisieren. Der Host-Speicher kann zum Beispiel einem Systemspeicher, einem Hauptspeicher usw. entsprechen. In einigen Ausführungsformen kann die Schaltung 153 weiter konfiguriert sein. Zum Beispiel kann die Schaltung 153 dazu ausgelegt sein, eine MPC-Auffüllanforderung an der IO-MPU von dem Gerät zu empfangen, einen Host-Genehmigungstabellenlauf auszuführen und Zugriffsgenehmigungen an der IO-MPU zu validieren, und Informationen von der IO-MPU in einer Form einer MPC-Auffüllantwort an das Gerät zurückzugeben. In einigen Ausführungsformen kann die Schaltung 153 ferner dazu ausgelegt sein, eine Anforderung an der IO-MPU von Systemsoftware zu empfangen, MPC-Informationen zu annullieren. Als Reaktion auf die Anforderung kann die Schaltung 153 dazu ausgelegt sein, eine MPC -Annullierungsanforderung an das Gerät zu erzeugen, und eine MPC-Anullierungsantwort von dem Gerät zu empfangen. Zum Beispiel kann die Schaltung 153 auch dazu ausgelegt sein, Verfolgungsinformationen zu aktualisieren und/oder die Systemsoftware über die MPC-Anullierungsantwort zu benachrichtigen.
  • Unter Bezugnahme auf die 2A bis 2B kann eine Ausführungsform von Verfahren 200 bei Kasten 221 das Speichern von Speicherschutzinformationen für einen Nicht-Host-Speicher in einem MPC und bei Kasten 222 das Ausführen einer oder mehrerer Speicherschutzprüfungen an einer übersetzten Zugriffsanforderung für den Nicht-Host-Speicher basierend auf den gespeicherten Speicherschutzinformationen beinhalten. Einige Ausführungsformen des Verfahrens 200 können ferner bei Kasten 223 das Synchronisieren der gespeicherten Speicherschutzinformationen mit einer MPU eines Hosts beinhalten. Das Verfahren 200 kann zum Beispiel bei Kasten 224 das Bereitstellen eines sicheren direkten P2P-Speicherzugriffs auf den Nicht-Host-Speicher ohne Eingriff durch den Host (zum Beispiel das Umgehen eines Root-Ports des Hosts für die Zugriffsanforderung für den Nicht-Host-Speicher) und/oder bei Kasten 225 das Blockieren oder Zulassen einer direkten P2P-Speicherzugriffsanforderung für den Nicht-Host-Speicher basierend auf den in der MPC gespeicherten Speicherschutzinformationen beinhalten. Einige Ausführungsformen des Verfahrens 200 können ferner bei Kasten 226 das Bestimmen beinhalten, ob die übersetzte Zugriffsanforderung von dem Host kommt, und, falls dies bestimmt wurde, bei Kasten 227 das Umgehen der einen oder der mehreren Speicherschutzprüfungen an der übersetzten Zugriffsanforderung beinhalten. Das Verfahren 200 kann bei Kasten 228 auch basierend auf in der übersetzten Zugriffsanforderung empfangenen Informationen das Bestimmen beinhalten, ob die übersetzte Zugriffsanforderung den MPC verfehlt, und, falls dies bestimmt wurde, bei Kasten 229 das Auffordern der MPU des Hosts, Speicherschutzinformationen für die übersetzte Zugriffsanforderung aufzufüllen, beinhalten. Zum Beispiel kann das Verfahren 200 bei Kasten 230 das Benachrichtigen eines Anforderers beinhalten, die übersetzte Zugriffsanforderung, die den MPC verfehlt, zusammen mit Halteinformationen erneut zu versuchen.
  • Unter Bezugnahme auf 3 kann eine Ausführungsform von Vorrichtung 300 MPC 331 beinhalten, um Speicherschutzinformationen für einen Nicht-Host-Speicher zu speichern, und mit dem MPC 331 gekoppelte Schaltung 333 beinhalten, um eine oder mehrere Speicherschutzprüfungen an einer übersetzten Zugriffsanforderung für den Nicht-Host-Speicher basierend auf den gespeicherten Speicherschutzinformationen auszuführen. Zum Beispiel kann der Nicht-Host-Speicher einem lokalen Gerätespeicher, einem Speicherpool, einem entfernt angeordneten Speicherpool, usw. entsprechen. In einigen Ausführungsformen kann die Schaltung 333 ferner dazu ausgelegt sein, die gespeicherten Speicherschutzinformationen mit einer MPU eines Hosts (zum Beispiel einer IO-MPU) zu synchronisieren. Zum Beispiel kann die Schaltung 333 dazu ausgelegt sein, sicheren direkten P2P-Speicherzugriff auf den Nicht-Host-Speicher ohne Eingriff durch den Host (zum Beispiel umgehen eines Root-Ports des Hosts für die übersetzte Zugriffsanforderung für den Nicht-Host-Speicher) und/oder Blockieren oder Zulassen einer direkten P2P-Speicherzugriffsanforderung für den Nicht-Host-Speicher basierend auf den in dem MPC 331 gespeicherten Speicherschutzinformationen bereitzustellen. In einigen Ausführungsformen kann die Schaltung 333 ferner dazu ausgelegt sein, zu bestimmen, ob die übersetzte Zugriffsanforderung von dem Host kommt, und, falls dies bestimmt wurde, die eine oder die mehreren Speicherschutzprüfungen an der übersetzten Zugriffsanforderung zu umgehen. Die Schaltung 333 kann auch dazu ausgelegt sein, basierend auf in der übersetzten Zugriffsanforderung empfangenen Informationen zu bestimmen, ob die übersetzte Zugriffsanforderung den MPC verfehlt, und, falls dies bestimmt wurde, die MPU des Hosts aufzufordern, Speicherschutzinformationen für die übersetzte Zugriffsanforderung aufzufüllen. Zum Beispiel kann die Schaltung 333 dazu ausgelegt sein, einen Anforderer zu benachrichtigen, die übersetzte Zugriffsanforderung, die den MPC verfehlt, zusammen mit Zurückhalteinformationen erneut zu versuchen.
  • Einige Ausführungsformen stellen Technologie für sichere direkte P2P-Speicherzugriffsanforderungen zwischen Geräten bereit. Ausführungsformen einer verteilten sicheren Address Translation Service (ATS) -Architektur können Technologie beinhalten, um eine direkte P2P-Hochleistungskommunikation zwischen Peripheral Component Interconnect Express (PCIe) -und/oder Computer-Express-Link (CXL) -Geräten zu ermöglichen, während eine höhere Sicherheitsbarriere aufrechterhalten wird, die mit der Sicherheitsüberprüfung übersetzter Speicheranforderungen verbunden ist. Herkömmlicherweise werden P2P-Speicheranforderungen Host-reflektiert/gespiegelt (zum Beispiel durch Konfigurieren von Access Control Services (ACS) -Einstellungen über die Input/Output (I/O) -Hierarchie hinweg), um Speicherschutzprüfungen auszuführen. Ein Problem besteht darin, dass die Host-reflektierten/gespiegelten P2P-Speicheranforderungen einen I/O-Engpass (zum Beispiel insbesondere für stark bestückte I/O-Hierarchien) erzeugen, die Ende-zu-Ende-Latenz für P2P-Verkehr erhöhen, und für eine aufgeschlüsselte Cloud-Plattform nicht gut skalieren.
  • Einige Ausführungsformen überwinden eines oder mehrere der vorstehenden Probleme mit Technologie für eine verteilte sichere ATS-Architektur, die es Erweiterungen ermöglicht, einen MPC näher an dem Gerätespeicher/-Pool aufzubauen, um Speicherschutzprüfungen auszuführen. Einige Ausführungsformen stellen auch Technologie für ein Protokoll und/oder Nachrichten bereit, um den MPC synchron mit einer IO-MPU zu halten, die sich innerhalb eines Hosts befindet (zum Beispiel ein SoC-Gerät, das eine Central Processing Unit (CPU) und einen Root Complex beinhaltet). Vorteilhafterweise können einige Ausführungsformen einer verteilten sicheren ATS-Architektur die Notwendigkeit des Host-reflektierens/spiegelns übersetzter Speicheranforderungen entfernen, wodurch die mit den P2P-Speicheranforderungen verbundene Latenz und Leistungsfähigkeit verbessert werden, und auch eine sichere direkte P2P-Kommunikation ermöglicht wird.
  • Unter Bezugnahme auf 4A beinhaltet eine Ausführungsform von verteiltem Datenverarbeitungssystem 400 SoC-Host-Gerät 422, das mit Systemspeicher 433 gekoppelt ist. Das Host-Gerät 422 beinhaltet eine oder mehrere CPU 423, die kommunizierend mit Root-Complex 424 gekoppelt sind. Der Root-Complex 424 beinhaltet zwei oder mehr Root-Ports 425a und 425b (kollektiv Root-Ports 425), I/O Memory Management Unit (IOMMU) 426 und IO-MPU 427. Zum Beispiel können das Host-Gerät 422 und der Root-Complex 424 PCIe- und CXL-Kommunikationsschnittstellen unterstützen. Das Host-Gerät 422 kann kommunizierend mit einer I/O-Hierarchie gekoppelt sein, die ein oder mehrere I/O-Geräte oder Beschleuniger mit lokalem Speicher/lokalen Pools haben kann. Zum Beispiel kann das System 400 einer Cloud-Plattform mit aufgeschlüsselten Komponenten entsprechen, die ein oder mehrere externe Geräte 441 bis 444 direkt durch die Root-Ports 425 und/oder durch einen oder mehrere Schalter 455 beinhalten. Zum Beispiel können die verbundenen Geräte 441 bis 444 und/oder Schalter 455 auch die PCIe-und CXL-Kommunikationsschnittstellen unterstützen. Wie veranschaulicht, sind die Geräte 444, 441 und 442 über den Schalter 455 mit dem Host-Gerät 422 verbunden, während Gerät 443 direkt mit einem Root-Port 425b verbunden ist. Verschiedene der Geräte 441 bis 444 können Zugriff auf Nicht-Host-Speicher, wie zum Beispiel lokalen Gerätespeicher 461 und 463, und Speicherpools 462 (kollektiv Nicht-Host-Speicher), bereitstellen.
  • In einigen Ausführungsformen beinhaltet der Root-Complex eine IO-MMU 426, die DMA-Neuabbildungs- und Unterbrechungsneuabbildungsfähigkeiten bereitstellt, die PCIe/CXL-Root-Ports 425, die die I/O-Hierarchie verbinden, und eine I/O-MPU 427, die Genehmigungen für übersetzte DMA-Anforderungen validiert. In einigen Ausführungsformen kann die IO-MPU 427 innerhalb der IO-MMLT 426 implementiert sein.
  • In einer beispielhaften Operation kann das Gerät 441 ein Zielgerät A mit dem lokalen Gerätespeicher 461 (zum Beispiel eine Graphic Processing Unit (GPU), ein Field Programmable Gate Array (FPGA) usw.) sein, das Gerät 442 kann ein Zielgerät B mit den Speicherpools 462 sein, das Gerät 443 kann ein Zielgerät C mit dem lokalen Gerätespeicher 463 (zum Beispiel ein anderes I/O- oder Beschleunigergerät) sein, und das Gerät 444 kann ein Quellgerät sein.
  • In einem beispielhaften Szenario erzeugt das Quellgerät 444 eine P2P-Anforderung an ein Zielgerät. Nicht übersetzte P2P-Anforderungen gehen durch Schalter 455 hindurch und haben ein Address Translation (AT) -Attribut, das als 00b gesetzt ist. Der PCIe/CXL-Schalter 455 sendet die nicht übersetzten P2P-Anforderungen nach Upstream, um zu gewährleisten, dass die Anforderungen durch einen Übersetzungsagenten (zum Beispiel die IO-MMU 426) übersetzt werden, bevor sie zu dem Zielgerät umgeleitet werden. Das Senden der nicht übersetzten Anforderungen nach Upstream gewährleistet, dass beide Geräte dieselbe Sprache sprechen, und dass der Root-Complex 424 Adressübersetzung und Zugriffsprüfungen nach Bedarf ausführen kann. Um die benötigten Übersetzungen zu handhaben, kann Systemsoftware ACS-Steuerfelder (zum Beispiel ACS-P2P-Request Redirect Enable, ACS-P2P-Completion Redirect Enable, usw.) in der gesamten I/O-Hierarchie einstellen (0x1).
  • Um sichere ATS bereitzustellen, validiert die IO-MPU 427 übersetzte Anforderungen (zum Beispiel durch Verwendung einer Genehmigungstabelle), bevor es den übersetzten Anforderungen ermöglicht wird, zu der Speicherstruktur weiterzugehen oder sie zu einer I/O-Struktur zu leiten. Die IO-MPU 427 validiert, dass die physikalische Adresse in übersetzten Anforderungen durch den Host erlaubt wird. In einigen Ausführungsformen verwendet die IO-MPU 427 einen Satz von Tabellen, die die Genehmigungen spezifizieren, die ein Gerät für jede physikalische Seite haben kann. Falls die IO-MPU 427 bestimmt, dass der Zugriff erlaubt ist, ermöglicht die IO-MPU 427 der übersetzten Anforderung, zu ihrem Ziel weiterzugehen. Andernfalls blockiert die IO-MPU 427 den Zugriff.
  • In einem herkömmlichen System müssen alle übersetzten P2P-Anforderungen immer noch an den Host geleitet werden, um die Adressprüfungen auszuführen. Systemsoftware erreicht dies durch Löschen (0x0) eines ACS-Steuerfelds „ACS Direct Translation P2P Enable“ über die gesamte I/O-Hierarchie hinweg. Zum Beispiel sendet ein Quellgerät eine übersetzte Anforderung für ein herkömmliches Zielgerät mit AT=10b, der PCIe/CXL-Schalter 455 empfängt die ankommende Anforderung von dem Downstream-Port, und leitet sie nach Upstream, die Anforderung kommt durch den PCIe/CXL-Root-Port 425a an, und die IO-MPU 427 führt eine Genehmigungsprüfung aus, um zu gewährleisten, dass der angeforderte Speicherzugriff erlaubt ist. Nach einer erfolgreichen Verifizierung leitet der Root-Complex 424 die Anforderung nach Downstream um (unter der Annahme, dass die Adresse, auf die zugegriffen wird, in den Speicherbereich fällt, der durch das herkömmliche Zielgerät freigelegt wird), der PCIe/CXL-Schalter 455 empfängt diese Anforderung, und leitet sie dann an das herkömmliche Zielgerät weiter. Ein ähnlicher Ablauf kann verwendet werden, wenn das Quellgerät eine DMA-Anforderung an ein herkömmliches Zielgerät B stellt, das als ein Peer-Gerät platziert ist.
  • Zusammengefasst kann ein herkömmliches Zielgerät drei Arten von Anforderungen empfangen, einschließlich: 1) Nicht übersetzte Anforderungen, die von den CPU-Kernen 423 stammen (zum Beispiel Source RID = Root Port RID, AT = 00b), 2) Nicht übersetzte Anforderungen, die von einem Peer-Gerät stammen, die für Adressübersetzung zu dem SoC 422 reflektiert/geleitet/gespiegelt und dann zu dem herkömmlichen Zielgerät umgeleitet werden (zum Beispiel Source RID = Root Port RID, AT = 00b), und 3) Übersetzte Anforderungen, die von dem Peer-Gerät stammen, die an das SoC 422 für sichere ATS -und/oder IO-MPU 427-Prüfungen reflektiert/geleitet/gespiegelt und dann an das herkömmliche Zielgerät geleitet werden (zum Beispiel Source RID = Root Port RID, AT = 10b oder 00b). Einige Root-Complexes können den AT-Typ von 10b in 00b konvertieren, wenn übersetzte Anforderungen nach Downstream an ein herkömmliches Zielgerät gesendet werden, und andere Root-Complexes können den AT-Typ so wie er ist als 10b beibehalten.
  • Jede Transaktion, die das SoC/Host-Gerät 422 erreicht und an das Peer-Geräte-I/O-Gefüge geleitet wird, wird hierin als Host-reflektierte/gespiegelte Transaktion bezeichnet. Ein Problem beim Übergehen zu dem Host zum Ausführen von Speicherschutzprüfungen für eine aufgeschlüsselte Architektur besteht darin, dass die Host-Prüfung I/O-Engpässe erzeugen und die Speicherlatenz erhöhen kann. Einige Ausführungsformen stellen vorteilhafterweise Technologieerweiterungen bereit, um sichere direkte Hochleistungs-P2P-Speicherzugriffe sowohl für aufgeschlüsselte als auch heterogene Rechen- und I/O-Umgebungen zu ermöglichen.
  • Einige Ausführungsformen können einen Memory Protection Cache (MPC) bereitstellen, der auf einem Gerät (zum Beispiel näher an dem lokalen Gerätespeicher, einem Speicherpool usw.) implementiert werden kann, um Speicherschutzprüfungen an übersetzten Anforderungen auszuführen, wobei die Notwendigkeit beseitigt wird, übersetzte Anforderungen an ein Host-Gerät (zum Beispiel ein SoC) zu spiegeln. Der MPC kann dazu ausgelegt sein, mit der Host-IO-MPU zu interagieren, um Speicherschutzinformationen lokal auf dem Gerät zu erfassen und dann zwischenzuspeichern, um eine Hochleistungs-P2P-Kommunikation zu ermöglichen, während auch eine höhere Sicherheitsbarriere aufrechterhalten wird, die mit den sicheren ATS - und/oder IO-MPU-Architekturen, die durch den Host implementiert werden, verbunden ist.
  • 4A zeigt eine beispielhafte Plattform mit MPC-Erweiterungen gemäß einigen Ausführungsformen. Die Zielgeräte A und B haben einen lokalen MPC, der dazu ausgelegt ist, die Speicherschutzinformationen von der IO-MPU 427 zwischenzuspeichern und die eingehenden übersetzten Anforderungen zu überprüfen. Das Quellgerät 444 kann dem obigen Ablauf folgen, zu dem SoC 422 zu gehen, um die Adressübersetzungsinformationen zu erfassen, und speichert die Informationen in ihrem Geräte- Translation Lookaside Buffer (TLB) (zum Beispiel einem lokalen Address Translation Cache (ATC)) zwischen. Jedoch können die übersetzten Anforderungen, die an das Peer-Gerät oder an den Peer-Speicherpool geleitet werden, einen verbesserten oder optimierten Pfad (zum Beispiel gezeigt über 1-2-3 oder a-b-c) verwenden, der nicht erfordert, dass die übersetzte Anforderung zu dem SoC 422 für Genehmigungsprüfungen geht.
  • Unter Bezugnahme auf 4B kann eine Ausführungsform von verteiltem Datenverarbeitungssystem 480 ähnlich wie das System 400 konfiguriert sein. In diesem Beispiel beinhaltet das Gerät 442 (zum Beispiel Zielgerät B) sowohl einen ATC als auch einen MPC. Der ATC wird verwendet, um ausgehende Anforderungen zu übersetzen (wobei zum Beispiel das Gerät 442 ein Quellgerät ist), während der MPC verwendet wird, um eingehende Anforderungen zu validieren (wobei zum Beispiel das Gerät 442 das Ziel ist). Jegliche der Geräte in dem System 480 können einen ATC und/oder einen MPC beinhalten, nach Bedarf, um die Funktion(en) dieser Geräte zu unterstützen.
  • Einige Ausführungsformen können Technologie für ein Gerät bereitstellen, um private Speicher- oder Speicherpoolfähigkeiten offenzulegen, um einen MPC zu implementieren, der mit dem Speicher verbundene Genehmigungen speichert. Das Gerät ist dazu ausgelegt, den MPC-Cache nachzuschlagen, um eingehende Speicherlese-/Schreibanforderungen zu validieren, bevor es den Anforderungen ermöglicht wird, den Speicher zu erreichen. Anforderungen, die die Genehmigungsprüfungen erfolgreich bestanden haben, gehen normalerweise zum Speicherlesen oder -schreiben (wie angefordert) weiter, und Anforderungen, die Genehmigungsprüfungen nicht bestehen, werden daran gehindert, auf den Speicher zuzugreifen. In einigen Ausführungsformen speichert der MPC seitengranulare Lese- und Schreibgenehmigungen. In anderen Ausführungsformen kann der MPC zusätzliche seitengranulare Genehmigungen (zum Beispiel Ausführungsgenehmigung) speichern.
  • 4C zeigt eine Ausführungsform von MPC-Struktur 490. In der Struktur 490 ist der MPC dazu ausgelegt, Seitengenehmigungen bei einer Quellanforderer-ID-Granularität, einer Anforderer-ID + Process Address Spac -ID (PASID) -Granularität, einer Domänen-ID-Granularität oder jeglicher Kombination davon zu speichern. Ausführungsformen dieser Erweiterung ermöglichen viel feinkörnigeres Schützen/Filtern, wobei Systemsoftware oder ein Orchestrierungsagent direkte P2P-Anforderungen von einem Gerät, aber nicht von einem anderen, oder von einer Geräteschnittstelle, die einer Softwaredomäne zugewiesen ist, aber nicht von einer anderen Softwaredomäne/Geräteschnittstelle, usw. ermöglichen kann.
  • Da die durch das Zielgerät empfangenen Speicheranforderungen (i) von einem Peer-Gerät stammen und direkt an ein Zielgerät gesendet werden können (zum Beispiel eine direkte P2P-Anforderung von dem Quellgerät 444 an das/die Zielgerät(e) A und/oder B), (ii) von der CPU 423 oder Software, die auf der CPU 423 läuft, stammen können, oder (iii) von einem Peer-Gerät stammen können, aber an die CPU 423 spiegeln können (zum Beispiel Anforderungen von dem Quellgerät 444 an das Zielgerät C), können einige Ausführungsformen Technologie bereitstellen, um MPC-Prüfungen zu umgehen (zum Beispiel können MPC-Prüfungen nicht für das Zielgerät C benötigt werden), falls (1) das AT-Feld in der Anforderung nicht 10b ist, oder (2) die in der übersetzten Anforderung empfangene Anforderer-ID mit einer Anforderer-ID übereinstimmt, die mit dem PCIe/CXL-ROOT-PORT verbunden ist, der die PCIe/CXL-Hierarchie startet, wo das Zielgerät verbunden ist. Einige Ausführungsformen stellen Technologie für Systemsoftware bereit, um einen PCIe/CXL-Root-Port-Anforderer-ID-Wert in dem Zielgerät durch eine PCIe-Konfigurationsfähigkeit (zum Beispiel eine MPC-Fähigkeit) oder einen MMIO-Mechanismus auszulegen.
  • Unter Bezugnahme auf 5A kann eine Ausführungsform von Verfahren 520 bei Kasten 521 starten, wenn eine neue Transaktion an einem Zielgeräte-Port ankommt. Bei Empfang einer neuen Speicheranforderung entscheidet das Zielgerät, ob MPC-Prüfungen erforderlich sind oder nicht. Das Zielgerät trifft diese Entscheidung basierend auf den AT-Feld- und Anforderer-ID-Feldwerten, die in der Anforderung empfangen werden. Falls zum Beispiel bei Kasten 523 das AT-Feld == 10b ist (was anzeigt, dass die Transaktion einer übersetzten Anforderung entspricht), kann das Verfahren 520 als Nächstes bei Kasten 525 bestimmen, ob die Anforderer-ID in der übersetzten Anforderung mit einer PCIe/CXL-Root-Port-Quell-RID, die in den MPC-Einstellungen konfiguriert ist, übereinstimmt. Falls nicht (was eine direkte P2P-Anforderung anzeigt), kann das Verfahren 520 weitergehen, um bei Kasten 527 einen MPC-Prüfablauf aufzurufen. Andernfalls (was eine Host-gespiegelte/reflektierte Anforderung anzeigt) kann das Verfahren 520 weitergehen, um bei Kasten 529 die Verarbeitung der Anforderung normal fortzusetzen. In dem Fall, dass MPC-Prüfungen bei Kasten 529 umgangen werden, wird der MPC nicht nachgeschlagen, und Speicherlese-/Schreibabläufe funktionieren normal. Falls das Zielgerät bestimmt, dass die MPC-Prüfungen notwendig sind, führt das Zielgerät ein MPC-Nachschlagen aus.
  • Unter Bezugnahme auf 5B kann eine Ausführungsform von Verfahren 540 bei Kasten 542 für einen MPC-Prüfablauf starten. Das Verfahren 540 beinhaltet bei Kasten 544 das Nachschlagen des MPC basierend auf Informationen, die in einer übersetzten Anforderung empfangen werden. Falls bei Kasten 546 der übereinstimmende Eintrag in dem MPC gefunden wird (was zum Beispiel einen MPC-Treffer anzeigt), beinhaltet das Verfahren 540 bei Kasten 548 das Validieren der Genehmigungen gegen den übereinstimmenden MPC-Eintrag. Zum Beispiel vergleicht das Zielgerät die in dem MPC gespeicherten Genehmigungen mit den durch die Speicheranforderung angeforderten Zugriffsrechten, und entweder wird Speicherzugriff gewährt, oder wird blockiert (zum Beispiel wie unten detaillierter beschrieben). Zum Beispiel wird ein übereinstimmender Eintrag gefunden, wenn die eingehende Anforderung dieselbe Quell-RID, PASID usw. und Adresse (zum Beispiel bei einer Seitengranularität) eines existierenden Eintrags in dem MPC hat.
  • Falls bei Kasten 546 der übereinstimmende Eintrag nicht gefunden wird (was zum Beispiel ein MPC-Verfehlen anzeigt), beinhaltet das Verfahren 540 bei Kasten 550 das Aufrufen eines MPC-Auffüllablaufs (zum Beispiel um die fehlenden Informationen aufzufüllen), bevor zu Kasten 548 weiter gegangen wird. Falls bei Kasten 552 die Zugriffsprüfung bestanden wird, fährt das Verfahren 540 bei Kasten 554 mit der normalen Verarbeitung der Anforderung fort. Andernfalls geht das Verfahren 540 bei Kasten 556 weiter zum Blockieren des Speicherzugriffs, und bei Kasten 558 zum Aufrufen eines Speicherzugriffsfehlerablaufs.
  • Unter Bezugnahme auf 6 kann eine Ausführungsform von verteiltem Datenverarbeitungssystem 600 ähnlich wie das System 400 konfiguriert sein. In einem beispielhaften MPC-Auffüllablauf sendet ein Zielgerät eine „MPC-Auffüllanforderung“ nach Upstream (zum Beispiel bei den nummerierten Pfeilen 1, 2) in Richtung der IO-MPU. Dann arbeitet der PCIe/CXL-Root-Port mit der IO-MPU, um die Seitengenehmigungen zu erhalten (zum Beispiel bei dem nummerierten Pfeil 3), und der PCIe/CXL-Root-Port gibt eine „MPC-Auffüllantwort“ nach Downstream an das Zielgerät zurück (zum Beispiel bei den nummerierten Pfeilen 4, 5). In einigen Ausführungsformen schlägt die IO-MPU die Genehmigungstabellen, die durch Systemsoftware basierend auf den in der MPC-Auffüllanforderung (zum Beispiel Quell-RID, optional PASID, Adresse,...) empfangenen Informationen eingerichtet werden, nach oder durchläuft diese, um dabei zu helfen, die MPC-Auffüllantwort (zum Beispiel Arbeiten mit dem PCIe/CXL-Root-Port) zu erzeugen. Falls die MPC-Auffüllanforderung mehr als eine Seite überspannt, kann die IO-MPU mit mehr als einer Auffüllantwort antworten, um mehrere MPC-Einträge in dem Zielgerät aufzufüllen. Das Zielgerät kann eine Seitengröße, die größer als die unterstützten Seitengrößen in ihrem MPC ist, frei in mehrere Einträge zerlegen, unterstützt aber im Allgemeinen mindestens eine Seitengröße von 4KB.
  • Geräte werden im Allgemeinen den MPC proportional zu dem Speicherpool auf dem Gerät, der Seitengröße, die durch das Gerät unterstützt wird, und den erwarteten durch den Host verwendeten Seitengrößen bemessen. Zusätzlich können Verwendungen und Leistungsanforderungen die Anzahl gleichzeitiger Quellgeräte, die eine Anforderung an ein Zielgerät stellen können, beeinflussen, was erfordert, dass zusätzliche MPC-Einträge ihre zugeordneten Genehmigungen speichern. In einigen Ausführungsformen kann eine MPC-Auffüllanforderung die folgenden in Tabelle 1 aufgelisteten Informationen/Felder beinhalten: Tabelle 1
    Feld Beschreibung
    Quellanforderer-ID Anforderer-ID des Quellgeräts, das die Speicherzugriffsanforderung an das Zielgerät gesendet hat
    Zielanforderer-ID Anforderer-ID des Zielgeräts, das die MPC-Auffüllanforderung sendet
    PASID-Info PASID-Valid-Bit und PASID-Wert (falls gültig)
    Adresse Adresse, die in der Speicherzugriffsanforderung empfangen wird
    Länge Länge des angeforderten Zugriffs
    Kennzeichen Kennzeichenwert
  • In einigen Ausführungsformen kann eine MPC-Auffüllantwort die folgenden in Tabelle 2 aufgelisteten Informationen/Felder beinhalten: Tabelle 2
    Feld Beschreibung
    Vervollständiger-ID Anforderer-ID von PCIe/CXL-Root-Port, der die I/O-Hierarchie startet, wo das Zielgerät verbunden ist
    Anforderer-ID Anforderer-ID von PCIe/CXL-Gerät, das die MPC-Auffüllanforderung initiiert hat
    Vervollständigungsstatus Vervollständigungsstatus (Erfolg, Unsupported Request/UR, Completer Abort/CA, usw.)
    Kennzeichen In der MPC-Auffüllanforderung empfangener Kennzeichenwert
    Seitengenehmigungen Anwendbare Genehmigungen (R, W, usw.)
    Seitengröße Die Größe der Seite (4KB, 16KB, usw.)
  • Unter Bezugnahme auf 7 kann eine Ausführungsform von verteiltem Datenverarbeitungssystem 700 ähnlich wie das System 400 ausgelegt sein. Einige Ausführungsformen des Systems 700 können die fragliche Speicheranforderung behalten (zum Beispiel puffern), während der Ablauf „MPC-Auffüllen“ abgeschlossen wird, und die notwendigen Genehmigungsprüfungen ausgeführt werden können. Zum Beispiel kann eine direkte P2P-Anforderung von dem Quellgerät an das Zielgerät A (zum Beispiel die nummerierten Pfeile 1-2-3) in einem Fehltreffer in dem MPC-Cache resultieren, gefolgt von einer MPC-Auffüllanforderung an die IO-MPU. Einige Ausführungsformen des Systems 700 können ein erweitertes CXL- und/oder ein PCIe-P2P-Protokoll verwenden, um Non-Posted (NP) - Schreibvorgänge für P2P-Anforderungen zu verwenden. Zum Beispiel kann ein NP-Schreibvorgang von dem Zielgerät A an das Quellgerät mit einer Nachricht zum erneuten Versuchen (zum Beispiel die nummerierten Pfeile 4-5-6) zurückgegeben werden. In diesem Beispiel kann das Zielgerät in dem Fall eines MPC-Fehltreffers einen erneuten Versuch an das Quellgerät zurückgeben, wodurch das Gerätedesign, die ausstehende Transaktion nicht zu puffern (zum Beispiel zu behalten), vereinfacht wird. In einigen Ausführungsformen kann das Zielgerät auch Zurückhalteinformationen (zum Beispiel Wartezeit, Warteschlangentiefe, usw.) zusammen mit der Nachricht zum erneuten Versuchen zurückgeben, wodurch es dem Quellgerät ermöglicht wird, für einen kleinen Zeitraum zurückzuhalten, während das Zielgerät den MPC auffüllt (zum Beispiel anstatt dass das Quellgerät neue Anforderungen sendet und mehrere erneute Versuche empfängt). In einigen Ausführungsformen kann das Zielgerät zusätzlich oder alternativ das Quellgerät benachrichtigen, nachdem der MPC aufgefüllt ist (zum Beispiel gibt das Zielgerät eine Freigabe an das Quellgerät), um dem Quellgerät zu ermöglichen, die Anforderung erneut zu übermitteln.
  • Unter Bezugnahme auf 8A kann eine Ausführungsform von verteiltem Datenverarbeitungssystem 800 ähnlich wie das System 400 konfiguriert sein. Da die MPC Seitengenehmigungen und Eigentümerschaftsinformationen zwischenspeichert, kann Systemsoftware eine Möglichkeit benötigen, Cache-Zeilen/-Einträge in dem MPC ungültig zu machen, wenn Genehmigungen/Attribute, die mit der Seite verbunden sind, modifiziert werden. Einige Ausführungsformen können die folgenden Nachrichten zwischen der IO-MPU und dem MPC beinhalten: (1) Eine MPC-Ungültigkeitsanforderung; und (2) eine MPC-Ungültigkeitsantwort. Systemsoftware kann durch die IO-MPU verwendete Genehmigungstabellen modifizieren (zum Beispiel bei einigen Ausführungsformen die Host-Genehmigungstabellen), und dann Ungültigkeiten, die mit Caches in der IO-MPU und für jeden der MPC verbunden sind, in eine Warteschlange einreihen. Ein Zielgerät empfängt eine solche Ungültigkeitsanforderung in der Form einer „MPC-Ungültigkeitsanforderung (zum Beispiel die nummerierten Pfeile 1-2-3). Das Zielgerät erklärt dann Cache-Zeile(n)/Einträge in MPC basierend auf den in der Ungültigkeitsanforderung spezifizierten Kriterien für ungültig, und sendet eine „MPC-Ungültigkeitsantwort“ (zum Beispiel die nummerierten Pfeile 4-5-6) nach Upstream an die IO-MPU zurück.
  • In einigen Ausführungsformen kann eine MPC-Ungültigkeitsanforderung die folgenden in Tabelle 3 aufgelisteten Informationen/Felder beinhalten: Tabelle 3
    Feld Beschreibung
    Anforderer-ID Anforderer-ID des MPC, der das Gerät implementiert
    Ungültigkeitstyp RID-granular, RID+PASID-granular, HPA-granular usw.
    Ungültigkeitsinfo RID: für RID-granular
    RID+PASID: für RID+PASID granular
    HPA: Adresse mit (Größen-) feldcodiertem
    Ungültigkeitskennzeichen Kennzeichenwert
  • In einigen Ausführungsformen kann eine MPC-Ungültigkeitsantwort die folgenden in Tabelle 4 aufgelisteten Informationen/Felder beinhalten: Tabelle 4
    Feld Beschreibung
    Anforderer-ID Anforderer-ID des MPC, der das Gerät implementiert
    Ungültigkeitskennzeichen Tag empfangen in MPC-Ungültigkeitsanforderung
  • Tabelle 5 listet Beispiele für Informationen auf, die in Verbindung mit verschiedenen Kennzeichen für einen MPC verwendet werden: Tabelle 5
    Kennzeichentyp Verwendete Informationen
    Nachschlagen Quellanforderer-ID
    PASID (wenn die Anforderung mit PASID erfolgt)
    Adresse
    Ungültigkeitserklärung Quellanforderer-ID
    Anforderer-ID + PASID
    HPA
  • Unter Bezugnahme auf 8B startet bei Kasten 862 eine Ausführungsform von Verfahren 860 zum Handhaben von Speicherzugriffsfehlern, wenn der Speicherzugriffsfehlerablauf aufgerufen wird. Das Verfahren 860 kann bei Kasten 864 das Bestimmen beinhalten, ob der Speicherzugriffsfehler einer geposteten Speicherschreibanforderung entspricht, und, falls ja, bei Kasten 866 das Verwerfen des Schreibens oder andererseits bei Kasten 868 das Zurückgeben einer geeigneten Fehlerantwort (UR, CA, usw.) an das Quellgerät für andere Typen von Anforderungen beinhalten.
  • Einige Ausführungsformen können ferner eine Erweiterung beinhalten, um Fehlerprotokollierungsfähigkeiten zu ermöglichen. Einige Ausführungsformen des Verfahrens 860 können zum Beispiel ferner bei Kasten 870 das Bestimmen beinhalten, ob Fehlerprotokollierung für MPC-Prüfungen aktiviert ist, und, falls ja, bei Kasten 872 das Fortfahren mit dem Aktualisieren eines Fehlerprotokolls mit den Transaktionsinformationen und bei Kasten 874 das Erzeugen einer Fehlerunterbrechung basierend auf den eingestellten Kriterien und/oder der Frequenz beinhalten.
  • In einigen Ausführungsformen stellt ein Zielgerät ein Register oder einen Satz von Registern bereit, die Informationen über (eine) fehlerhafte Transaktion(en) erfassen. In einigen Ausführungsformen kann ein Zielgerät ein Register bereitstellen, wobei Systemsoftware ein speicherabgesichertes Fehlerprotokoll (das heißt in dem Speicher gespeichertes Fehlerprotokoll) und seine entsprechende Größe konfigurieren kann. In einigen Ausführungsformen kann, falls Fehlerprotokollierung aktiviert ist, ein Zielgerät eine Fehlerunterbrechung für jede fehlerhafte Transaktion erzeugen. Alternativ kann in einigen Ausführungsformen die Fehlerunterbrechung basierend auf Kriterien erzeugt werden, die durch die Systemsoftware spezifiziert werden (zum Beispiel, wenn das Fehlerprotokoll einen eingestellten Systemsoftwareschwellenwert erreicht, oder nach jeweils N Fehlern, usw.). In einigen Ausführungsformen stellt die IO-MPU einen Hinweis/eine Präferenz zusammen mit der MPC-Auffüllantwortnachricht bereit, ob ein Fehler für Zugriffsverstoß bei einer bestimmten MPC-Eintragskombination protokolliert werden soll oder nicht.
  • Da ein MPC-Fehltreffer in zusätzlicher Speicherzugriffslatenz (zum Beispiel Round-Trip-Latenz des Sendens einer MPC-Auffüllanforderung und des Empfangens einer MPC-Auffüllantwort) für eingehende Speicheranforderungen resultieren wird, können einige Ausführungsformen einen oder mehrere Speicherbereiche in dem MPC zusammen mit geeigneten Genehmigungen und Eigentümerschaftsinformationen vorkonfigurieren. Eine solche Vorkonfiguration kann es einem Gerät ermöglichen, grobkörnige Speicherschutzprüfungen auszuführen, und die Last des Zwischenspeicherns/Erfassens von Genehmigungen für jede Seitendomänenkombination wird gelockert. In einigen Ausführungsformen, in denen der MPC auch durch die PCIe/CXL-Schalter implementiert wird, kann es eine Konfiguration ermöglichen, dass die Schalter eine Fähigkeit haben, eine „MPC-Auffüllanforderung“ näher an dem Gerät zu bedienen, anstatt anzufordern, den gesamten Weg zu der IO-MPU zu gehen.
  • Fachleute werden erkennen, dass eine breite Vielfalt von Geräten von den vorstehenden Ausführungsformen profitieren kann. Die folgenden beispielhaften Kernarchitekturen, Prozessoren und Computerarchitekturen sind nicht einschränkende Beispiele von Geräten, die Ausführungsformen der hierin beschriebenen Technologie vorteilhaft einbinden können.
  • Beispielhafte Kernarchitekturen, Prozessoren und Computerarchitekturen
  • Prozessorkerne können auf unterschiedliche Arten, für unterschiedliche Zwecke und in unterschiedlichen Prozessoren implementiert sein. Beispielsweise können Implementierungen solcher Kerne Folgendes beinhalten: 1) einen In-Order-Universalkern, der für Universaldatenverarbeitung vorgesehen ist; 2) einen Out-of-Order-Hochleistungsuniversalkern, der für Universaldatenverarbeitung vorgesehen ist; 3) einen Spezialkern, der hauptsächlich für Grafik- und/oder wissenschaftliche (Durchsatz-) Datenverarbeitung vorgesehen ist. Implementierungen von unterschiedlichen Prozessoren können Folgendes beinhalten: 1) eine CPU, die einen oder mehrere In-Order-Universalkerne, die für Universaldatenverarbeitung vorgesehen sind, und/oder einen oder mehrere Out-of-Order-Universalkerne, die für Universaldatenverarbeitung vorgesehen sind, beinhaltet; und 2), einen Coprozessor, der einen oder mehrere Spezialkerne, die hauptsächlich für Grafik- und/oder wissenschaftliche (Durchsatz-) Datenverarbeitung vorgesehen sind, beinhaltet. Solche unterschiedlichen Prozessoren führen zu unterschiedlichen Computersystemarchitekturen, die Folgendes beinhalten können: 1) den Coprozessor auf einem von der CPU separaten Chip; 2) den Coprozessor auf einem separaten Chip in demselben Package wie eine CPU; 3) den Coprozessor auf demselben Chip wie eine CPU (in diesem Fall wird ein solcher Coprozessor manchmal als Speziallogik, wie zum Beispiel als integrierte Grafik und/oder wissenschaftliche (Durchsatz-) Logik, oder als Spezialkerne bezeichnet); und 4) ein System-on-a-Chip, das auf demselben Chip die beschriebene CPU (manchmal als der (die) Anwendungskern(e) oder Anwendungsprozessor(en) bezeichnet), den oben beschriebenen Coprozessor und zusätzliche Funktionalität beinhalten kann. Als Nächstes werden beispielhafte Kernarchitekturen beschrieben, gefolgt von Beschreibungen beispielhafter Prozessoren und Computerarchitekturen.
  • Beispielhafte Kernarchitekturen
  • In-Order- und Out-of Order-Kern-Blockdiagramm
  • 9A ist ein Blockdiagramm, das sowohl eine beispielhafte In-Order-Pipeline, als auch eine beispielhafte Registerumbenennungs-, Out-of-Order-Ausgabe/Ausführungs-Pipeline gemäß Ausführungsformen der Erfindung veranschaulicht. 9B ist ein Blockdiagramm, das sowohl ein Ausführungsbeispiel eines In-Order-Architekturkerns als auch einen beispielhaften Registerumbenennungs Out-of-Order-Ausgabe/Ausführung-Architekturkern veranschaulicht, der in einem Prozessor enthalten sein soll, gemäß Ausführungsformen der Erfindung; Die Kästchen mit durchgezogenen Linien in den 9A-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 Registerumbenennungs-, Out-of-Order-Ausgabe/Ausführungs-Pipeline und -Kern veranschaulicht. Unter der Annahme, dass der In-Order-Aspekt ein Untersatz des Out-of-Order-Aspekts ist, wird der Out-of-Order-Aspekt beschrieben.
  • In 9A beinhaltet Prozessor-Pipeline 900 Abholstufe 902, Längendecodierungsstufe 904, Decodierungsstufe 906, Zuordnungsstufe 908, Umbenennungsstufe 910, Planungsstufe (auch bekannt als Sende- oder Ausgabe-Stufe) 912, Registerlese/Speicherlese-Stufe 914, Ausführungsstufe 916, Zurückschreib-/Speicherschreib-Stufe 918, Ausnahmehandhabungsstufe 922 und Festlegungsstufe 924.
  • 9B zeigt Prozessorkern 990, der Frontend-Einheit 930 beinhaltet, die mit Ausführungs-Engine-Einheit 950 gekoppelt ist, und beide sind mit Speichereinheit 970 gekoppelt. Der Kern 990 kann ein Reduced Instruction Set Computing (RISC) -Kern, ein Complex Instruction Set Computing (CISC) -Kern, ein Very Long Instruction Word (VLIW) -Kern oder ein hybrider oder alternativer Kerntyp sein. Als noch eine weitere Option kann der Kern 990 ein Spezialkern, wie zum Beispiel ein Netzwerk- oder Kommunikationskern, eine Komprimierungsengine, ein Coprozessorkern, ein General-Purpose-Computing-Graphics-Processing-Unit (GPGPU) -Kern, ein Grafikkern oder dergleichen sein.
  • Die Front-End-Einheit 930 beinhaltet Sprungvorhersageeinheit 932, die mit Anweisungs-Cache-Einheit 934 gekoppelt ist, die mit Translation-Lookaside-Buffer (TLB) 936 gekoppelt ist, der mit Anweisungsabholeinheit 938 gekoppelt ist, die mit Decodierungseinheit 940 gekoppelt ist. Die Decodierungseinheit 940 (oder der Decoder) kann Anweisungen decodieren und als eine Ausgabe eine oder mehrere Mikro-Operationen, Mikrocode-Eintragungsspunkte, Mikroanweisungen, andere Anweisungen oder andere Steuersignale erzeugen, die von den ursprünglichen Anweisungen decodiert werden, oder die diese auf andere Weise widerspiegeln oder davon abgeleitet werden. Die Decodierungseinheit 940 kann durch Verwenden verschiedener unterschiedlicher Mechanismen implementiert werden. Beispiele für geeignete Mechanismen beinhalten, sind jedoch nicht beschränkt auf Nachschlagetabellen, Hardwareimplementierungen, Programmable-Logic-Arrays (PLA), Mikrocode-Read-Only-Memories (ROM) usw. In einer Ausführungsform beinhaltet der Kern 990 einen Mikrocode-ROM oder ein anderes Medium, das einen Mikrocode für bestimmte Makroanweisungen (zum Beispiel in der Decodierungseinheit 940 oder anderweitig innerhalb der Front-End-Einheit 930) speichert. Die Decodierungseinheit 940 ist mit Umbenennungs-/Zuordnungseinheit 952 in der Ausführungs-Engine-Einheit 950 gekoppelt.
  • Die Ausführungs-Engine-Einheit 950 beinhaltet die Umbenennungs-/Zuordnungseinheit 952, die mit Rückzugseinheit 954 und einem Satz einer oder mehrerer Planereinheiten 956 gekoppelt ist. Die Planereinheit(en) 956 stellt (stellen) jegliche Anzahl von unterschiedlichen Planern dar, einschließlich Reservierungsstationen, zentralem Anweisungsfenster usw. Die Planereinheit(en) 956 ist/sind mit physikalischer Registerdatei(en)-Einheit(en) 958 gekoppelt. Jede der physikalischen Registerdatei(en)-Einheiten 958 stellt eine oder mehrere physikalische Registerdateien dar, von denen unterschiedliche einen oder mehrere unterschiedliche Datentypen speichern, wie zum Beispiel skalare Ganzzahlen, skalare Gleitkommazahlen, gepackte Ganzzahlen, gepackte Gleitkommazahlen, Vektorganzzahlen, Vektorgleitkommazahlen, Status (zum Beispiel einen Anweisungszeiger, der die Adresse der nächsten auszuführenden Anweisung ist) usw. In einer Ausführungsform umfasst die physikalische Registerdatei(en)-Einheit 958 eine Vektorregistereinheit, eine Schreibmaskenregistereinheit und eine skalare Registereinheit. Diese Registereinheiten können Architekturvektorregister, Vektormaskenregister und Universalregister bereitstellen. Die physikalische(n) Registerdatei(en)-Einheit(en) 958 sind durch die Rückzugseinheit 954 überlappt, um verschiedene Weisen zu veranschaulichen, in denen Registerumbenennung und Out-of-Order-Ausführung implementiert werden können (zum Beispiel durch Verwenden von Neuordnungspuffer(n) und Rückzugsregisterdatei(en); durch Verwenden von künftigen Datei(en), Verlaufspuffer(n) und Rückzugsregisterdatei(en); durch Verwenden von Registerabbildungen und einem Pool von Registern; usw.). Die Rückzugseinheit 954 und die physikalischen Registerdatei(en)-Einheit(en) 958 sind mit Ausführungs-Cluster(n) 960 gekoppelt. Der eine oder die mehreren Ausführungs-Cluster 960 beinhalten einen Satz von einer oder mehreren Ausführungseinheiten 962 und einen Satz von einer oder mehreren Speicherzugriffseinheiten 964. Die Ausführungseinheiten 962 können verschiedene Operationen (zum Beispiel Verschiebungen, Addition, Subtraktion, Multiplikation) und auf verschiedenen Typen von Daten (zum Beispiel skalares Gleitkomma, gepackte Ganzzahl, gepacktes Gleitkomma, Vektorganzzahl, Vektorgleitkomma) ausführen. Während einige Ausführungsformen eine Anzahl von Ausführungseinheiten beinhalten können, die für spezifische Funktionen oder Sätze von Funktionen vorgesehen sind, können andere Ausführungsformen nur eine Ausführungseinheit oder mehrere Ausführungseinheiten beinhalten, die alle alle Funktionen ausführen. Die Planereinheit(en) 956, die physikalische(n) Registerdatei(en)-Einheit(en) 958 und Ausführungs-Cluster 960 sind als möglicherweise mehrfach gezeigt, da bestimmte Ausführungsformen separate Pipelines für bestimmte Typen von Daten/Operationen erzeugen (zum Beispiel eine skalare Ganzzahl-Pipeline, eine skalare Gleitkomma-/gepackte Ganzzahl-/gepackte Gleitkomma-/VektorGanzzahl-/Vektor-Gleitkomma-Pipeline, und/oder eine Speicherzugriffspipeline, die jeweils ihre eigene Planereinheit, physikalische Registerdatei(en)-Einheit und/oder Ausführungs-Cluster haben - und in dem Fall einer separaten Speicherzugriffspipeline werden bestimmte Ausführungsformen implementiert, bei denen nur der Ausführungs-Cluster dieser Pipeline die Speicherzugriffseinheit(en) 964 hat). Es sollte auch klargestellt werden, dass bei Verwendung separater Pipelines eine oder mehrere dieser Pipelines Out-of-Order-Ausgabe/-Ausführungs-Pipelines und der Rest In-Order-Pipelines sein können.
  • Der Satz von Speicherzugriffseinheiten 964 ist mit der Speichereinheit 970 gekoppelt, die Daten-TLB-Einheit 972 beinhaltet, die mit Daten-Cache-Einheit 974 gekoppelt ist, die mit Level 2 (L2) -Cache-Einheit 976 gekoppelt ist. In einer beispielhaften Ausführungsform können die Speicherzugriffseinheiten 964 eine Ladeeinheit, eine Adressspeichereinheit und eine Datenspeichereinheit beinhalten, von denen jede mit der Daten-TLB-Einheit 972 in der Speichereinheit 970 gekoppelt ist. Die Anweisungs-Cache-Einheit 934 ist ferner mit einer Level 2 (L2)-Cache-Einheit 976 in der Speichereinheit 970 gekoppelt. Die L2-Cache-Einheit 976 ist mit einem oder mehreren anderen Cache-Level und schließlich mit einem Hauptspeicher gekoppelt.
  • Beispielsweise kann die beispielhafte Kernarchitektur für Registerumbenennung, Out-of-Order-Ausgabe/-Ausführung die Pipeline 900 wie folgt implementieren: 1) das Anweisungsabholen 938 führt die Abhol- und Längendecodierungs-Stufen 902 und 904 aus; 2) die Decodierungseinheit 940 führt die Decodierungsstufe 906 aus; 3) die Umbenennungs-/Zuordnungseinheit 952 führt die Zuordnungsstufe 908 und die Umbenennungsstufe 910 aus; 4) die Planereinheit(en) 956 führen die Planungsstufe 912 aus; 5) die physikalische Registerdatei-Einheit(en) 958 und die Speichereinheit 970 führen die Registerlesen/Speicherlesen-Stufe 914 aus; das Ausführungs-Cluster 960 führt die Ausführungsstufe 916 aus; 6) die Speichereinheit 970 und die physikalischen Registerdatei-Einheit(en) 958 führen die Zurückschreib-/Speicherschreib-Stufe 918 aus; 7) verschiedene Einheiten können in der Ausnahmebehandlungsstufe 922 involviert sein; und 8) die Rückzugseinheit 954 und die physikalische Registerdatei-Einheit(en) 958 führen die Festlegungsstufe 924 aus.
  • Der Kern 990 kann einen oder mehrere Anweisungssätze unterstützen (zum Beispiel den x86-Anweisungssatz (mit einigen Erweiterungen, die mit neueren Versionen hinzugefügt wurden); den MIPS-Anweisungssatz von MIPS Technologies in Sunnyvale, CA, USA; den ARM-Anweisungssatz (mit optional zusätzlichen Erweiterungen, wie zum Beispiel NEON) von ARM Holdings in Sunnyvale, CA, USA), einschließlich der hierin beschriebenen Anweisung(en). In einer Ausführungsform beinhaltet der Kern 990 eine Logik zum Unterstützen einer Anweisungssatzerweiterung für gepackte Daten (zum Beispiel AVX1, AVX2), wodurch es den durch viele Multimedia-Anwendungen verwendeten Operationen ermöglicht wird, durch Verwenden gepackter Daten ausgeführt zu werden.
  • Es sollte klargestellt werden, dass der Kern Multithreading (Ausführen von zwei oder mehr parallelen Sätzen von Operationen oder Threads) unterstützen und dies in einer Vielzahl von Weisen tun kann, einschließlich Zeitscheiben-Multithreading, gleichzeitiges Multithreading (wobei ein einzelner physikalischer Kern einen logischen Kern für alle Threads bereitstellt, für die dieser physikalische Kern ein gleichzeitiges Multithreading durchführt) oder einer Kombination davon (zum Beispiel Zeitscheiben-Abholen und -Decodieren und gleichzeitiges Multithreading danach, wie zum Beispiel in der Intel® Hyperthreading-Technologie).
  • Während die Registerumbenennung in dem Kontext der Out-of-Order-Ausführung beschrieben ist, sollte klargestellt werden, dass die Registerumbenennung in einer In-Order-Architektur verwendet werden kann. Während die veranschaulichte Ausführungsform des Prozessors auch separate Anweisungs- und Daten-Cache-Einheiten 934/974 und eine gemeinsame L2-Cache-Einheit 976 beinhaltet, können alternative Ausführungsformen einen einzelnen internen Cache sowohl für Anweisungen als auch für Daten haben, wie zum Beispiel einen internen Level 1 (L1) -Cache, oder mehrere Level interner Caches. In einigen Ausführungsformen kann das System eine Kombination von einem internen Cache und einem externen Cache, der außerhalb des Kerns und/oder des Prozessors ist, beinhalten. Alternativ kann der gesamte Cache außerhalb des Kerns und/oder des Prozessors sein.
  • Spezifische beispielhafte In-Order-Kernarchitektur
  • Die 10A-B veranschaulichen ein Blockdiagramm einer spezifischeren beispielhaften In-Order-Kernarchitektur, wobei der Kern einer von mehreren Logikblöcken (einschließlich anderer Kerne des gleichen Typs und/oder unterschiedlicher Typen) in einem Chip wäre. Die logischen Blöcke kommunizieren durch ein Verbindungsnetzwerk mit hoher Bandbreite (zum Beispiel ein Ringnetzwerk) mit einer Festfunktionslogik, Speicher-I/O-Schnittstellen und anderer erforderlicher I/O-Logik, abhängig von der Anwendung.
  • 10A ist ein Blockdiagramm eines Einzelprozessorkerns zusammen mit seiner Verbindung zu On-Die-Verbindungsnetzwerk 1002 und mit seinem lokalen Untersatz von Level 2 (L2) -Cache 1004, gemäß Ausführungsformen der Erfindung. In einer Ausführungsform unterstützt Anweisungsdecoder 1000 den x86-Anweisungssatz mit einer Anweisungssatzerweiterung für gepackte Daten. L1-Cache 1006 ermöglicht Zugriffe mit niedriger Latenz auf Cache-Speicher in die Skalar- und Vektoreinheiten. Während in einer Ausführungsform (zur Vereinfachung des Designs) Skalareinheit 1008 und Vektoreinheit 1010 separate Registersätze (Skalarregister 1012 bzw. Vektorregister 1014) verwenden, und zwischen diesen übertragene Daten in Speicher geschrieben und dann von einem Level 1 (L1) -Cache 1006 wieder eingelesen werden, können alternative Ausführungsformen der Erfindung einen unterschiedlichen Ansatz verwenden (zum Beispiel einen einzelnen Registersatz verwenden oder einen Kommunikationspfad beinhalten, die es ermöglichen, Daten zwischen den zwei Registerdateien zu übertragen, ohne diese zu schreiben und wieder einzulesen).
  • Der lokale Untersatz des L2-Cache 1004 ist Teil eines globalen L2-Cache, der in separate lokale Untersätze, einer pro Prozessorkern, geteilt ist. Jeder Prozessorkern hat einen Direktzugriffspfad zu seinem eigenen lokalen Untersatz des L2-Cache 1004. Durch einen Prozessorkern gelesene Daten werden in seinem L2-Cache-Untersatz 1004 gespeichert, und es kann schnell auf diese zugegriffen werden, parallel zu anderen Prozessorkernen, die auf ihre eigenen lokalen L2-Cache-Untersätze zugreifen. Durch einen Prozessorkern geschriebene Daten werden in seinem eigenen L2-Cache-Untersatz 1004 gespeichert, und werden von anderen Untersätzen geleert, falls erforderlich. Das Ringnetzwerk sichert eine Kohärenz für gemeinsam genutzte Daten. Das Ringnetzwerk ist bidirektional, um es Agenten, wie zum Beispiel Prozessorkernen, L2-Caches und anderen Logikblöcken, zu ermöglichen, innerhalb des Chips miteinander zu kommunizieren. Jeder Ringdatenpfad ist pro Richtung 1012 Bit breit.
  • 10B ist eine erweiterte Ansicht eines Teils des Prozessorkerns in 10A gemäß Ausführungsformen der Erfindung. 10B beinhaltet L1-Datencache 1006A, der Teil des L1-Cache 1006 ist, sowie mehr Details bezüglich der Vektoreinheit 1010 und den Vektorregistern 1014. Insbesondere ist die Vektoreinheit 1010 eine 16-breite Vector-Processing-Unit (VPU) (siehe 16-breite ALU 1028), die Integer-Anweisungen und/oder Float-Anweisungen mit einfacher Genauigkeit und/oder Float-Anweisungen mit doppelter Genauigkeit ausführt. Die VPU unterstützt das Swizzling der Registereingaben mit Swizzle-Einheit 1020, numerische Konvertierung mit numerischen Konvertierungseinheiten 1022A-B und Replikation mit Replikationseinheit 1024 bei der Speichereingabe. Schreibmaskenregister 1026 ermöglichen das Vorhersagen resultierender Vektorschreibvorgänge.
  • 11 ist ein Blockdiagramm von Prozessor 1100, der mehr als einen Kern haben kann, eine integrierte Speichersteuerung haben kann, und eine integrierte Grafik haben kann, gemäß Ausführungsformen der Erfindung. Die Kästchen mit durchgezogenen Linien in 11 veranschaulichen einen Prozessor 1100 mit Einzelkern 1102A, Systemagent 1110, einem Satz einer oder mehrerer Bussteuerungseinheiten 1116, während die optionale Hinzufügung der Kästchen mit gestrichelten Linien einen alternativen Prozessor 1100 mit mehreren Kernen 1102AN, einem Satz einer oder mehrerer integrierter Speichersteuerungseinheit(en) 1114 in der Systemagenteneinheit 1110 und Speziallogik 1108 veranschaulicht.
  • Somit können unterschiedliche Implementierungen des Prozessors 1100 Folgendes beinhalten: 1) eine CPU mit der Speziallogik 1108, die eine integrierte Grafik- und/oder wissenschaftliche (Durchsatz-) Logik ist (die einen oder mehrere Kerne beinhalten kann), und die Kerne 1102A-N, die ein oder mehrere Universalkerne sind (zum Beispiel In-Order-Universalkerne, Out-of-Order-Universalkerne, eine Kombination der beiden); 2) einen Coprozessor, wobei die Kerne 1102A-N eine große Anzahl von Spezialkernen sind, die hauptsächlich für Grafik- und/oder wissenschaftliches (Durchsatz-) Rechnen vorgesehen sind; und 3) einen Coprozessor, wobei die Kerne 1102A-N eine große Anzahl von In-Order-Universalkernen sind. Somit kann der Prozessor 1100 ein Universalprozessor, Coprozessor oder Spezialprozessor, wie zum Beispiel ein Netzwerk- oder Kommunikationsprozessor, eine Komprimierungs-Engine, ein Grafikprozessor, eine GPGPU (General Purpose Graphics Processing Unit), ein Many-Integrated-Core (MIC) -Coprozessor mit hohem Durchsatz (der 30 oder mehr Kerne beinhaltet), ein eingebetteter Prozessor oder dergleichen sein. Der Prozessor kann auf einem oder mehreren Chips implementiert sein. Der Prozessor 1100 kann ein Teil von einem oder mehreren Substraten sein und/oder kann durch Verwenden jeglicher Anzahl von Prozesstechnologien, wie zum Beispiel BiCMOS, CMOS oder NMOS, auf einem oder mehreren Substraten implementiert sein.
  • Die Speicherhierarchie beinhaltet einen oder mehrere Level jeweiliger Caches 1104AN innerhalb der Kerne 1102A-N, einen Satz oder eine oder mehrere gemeinsame Cache-Einheiten 1106 und einen externen Speicher (nicht gezeigt), der mit dem Satz der integrierten Speichersteuerungseinheiten 1114 gekoppelt ist. Der Satz gemeinsam genutzter Cache-Einheiten 1106 kann ein oder mehrere Mid-Level-Caches, wie zum Beispiel Level 2 (L2), Level 3 (L3), Level 4 (L4) -Cache oder andere Cache-Level, einen Last-Level-Cache (LLC) und/oder Kombinationen davon beinhalten. Während in einer Ausführungsform ringbasierte Verbindungseinheit 1112 die integrierte Grafiklogik 1108, den Satz gemeinsam genutzter Cache-Einheiten 1106 und die Systemagenteneinheit 1110/die integrierten Speichersteuerungseinheit(en) 1114 miteinander verbindet, können alternative Ausführungsformen jegliche Anzahl von gut bekannten Techniken zum Verbinden solcher Einheiten verwenden. In einer Ausführungsform wird die Kohärenz zwischen einer oder mehreren Cache-Einheiten 1106 und den Kernen 1102-AN aufrechterhalten.
  • In einigen Ausführungsformen sind einer oder mehrere der Kerne 1102A-N zum Multithreading geeignet. Der Systemagent 1110 beinhaltet jene Komponenten, die die Kerne 1102A-N koordinieren und betreiben. Die Systemagenteneinheit 1110 kann zum Beispiel eine Power-Control-Unit (PCU) und eine Anzeigeeinheit beinhalten. Die PCU kann Logik und Komponenten sein oder beinhalten, die zum Regulieren des Leistungszustands der Kerne 1102AN und der integrierten Grafiklogik 1108 benötigt werden. Die Anzeigeeinheit dient zum Treiben einer oder mehrerer extern verbundener Anzeigen.
  • Die Kerne 1102A-N können in Bezug auf einen Architekturanweisungssatz homogen oder heterogen sein; das heißt, zwei oder mehr der Kerne 1102A-N können zur Ausführung des gleichen Anweisungssatzes geeignet sein, während andere zur Ausführung von nur einem Untersatz von diesem Anweisungssatz oder einem unterschiedlichen Anweisungssatz geeignet sein können.
  • Beispielhafte Computerarchitekturen
  • Die 12-15 sind Blockdiagramme beispielhafter Computerarchitekturen. Andere in dem Fachgebiet bekannte Systemauslegungen und Konfigurationen für Laptops, Desktops, Handheld-PC, Personal Digital Assistants, Engineering-Workstations, Server, Netzwerkgeräte, Netzwerk-Hubs, Schalter, eingebettete Prozessoren, Digital-Signal-Processors (DSP), Grafikgeräte, Videospielgeräte, Set-Top-Boxen, Mikrocontroller, Mobiltelefone, tragbare Medienwiedergabegeräte, Handheld-Geräte und verschiedene andere elektronische Geräte sind ebenfalls geeignet. Im Allgemeinen ist eine große Vielzahl von Systemen oder elektronischen Geräten, die zur Aufnahme eines Prozessors und/oder anderer Ausführungslogik, wie hierin offenbart, in der Lage sind, allgemein geeignet.
  • Nun Bezug nehmend auf 12 ist ein Blockdiagramm von System 1200 gemäß einer Ausführungsform der vorliegenden Erfindung gezeigt. Das System 1200 kann einen oder mehrere Prozessoren 1210, 1215 beinhalten, die mit Controller-Hub 1220 gekoppelt sind. In einer Ausführungsform beinhaltet der Controller-Hub 1220 Graphics-Memory-Controller-Hub (GMCH) 1290 und Input/Output-Hub (IOH) 1250 (die sich auf separaten Chips befinden können); der GMCH 1290 beinhaltet Speicher- und Grafiksteuerungen, mit denen Speicher 1240 und Coprozessor 1245 gekoppelt sind; IOH 1250 koppelt Ein-/Ausgabe (I/O) -Geräte 1260 mit dem GMCH 1290. Alternativ sind eine oder beide der Speicher- und Grafiksteuerungen in den Prozessor integriert (wie hierin beschrieben), der Speicher 1240 und der Coprozessor 1245 sind direkt mit dem Prozessor 1210 gekoppelt, und der Controller-Hub 1220 ist in einem einzelnen Chip mit dem IOH 1250.
  • Die optionale Art der zusätzlichen Prozessoren 1215 ist in 12 mit gestrichelten Linien gekennzeichnet. Jeder Prozessor 1210, 1215 kann einen oder mehrere der hierin beschriebenen Prozessorkerne beinhalten, und kann eine Version des Prozessors 1100 sein.
  • Der Speicher 1240 kann zum Beispiel ein Dynamic-Random-Access-Memory (DRAM), Phase-Change-Memory (PCM) oder eine Kombination der beiden sein. Für mindestens eine Ausführungsform kommuniziert der Controller-Hub 1220 mit dem einen oder den mehreren Prozessoren 1210, 1215 über einen Multi-Drop-Bus, wie zum Beispiel einen Front-Side-Bus (FSB), eine Punkt-zu-Punkt-Schnittstelle, wie zum Beispiel QuickPath-Interconnect (QPI), oder eine ähnliche Verbindung 1295.
  • In einer Ausführungsform ist der Coprozessor 1245 ein Spezialprozessor, wie zum Beispiel ein MIC-Prozessor mit hohem Durchsatz, ein Netzwerk- oder Kommunikationsprozessor, eine Komprimierungs-Engine, ein Grafikprozessor, eine GPGPU, ein eingebetteter Prozessor oder dergleichen. In einer Ausführungsform kann der Controller-Hub 1220 einen integrierten Grafikbeschleuniger beinhalten.
  • Es kann eine Vielzahl von Unterschieden zwischen den physikalischen Ressourcen 1210, 1215 in Bezug auf ein Spektrum von Leistungsmetriken, einschließlich Architektur-, Mikroarchitektur-, Wärme-, Stromverbrauchseigenschaften und dergleichen, geben.
  • In einer Ausführungsform führt der Prozessor 1210 Anweisungen aus, die Datenverarbeitungsoperationen eines allgemeinen Typs steuern. In die Anweisungen können Coprozessor-Anweisungen eingebettet sein. Der Prozessor 1210 erkennt, dass diese Coprozessor-Anweisungen von einem Typ sind, der durch den verbundenen Coprozessor 1245 ausgeführt werden sollte. Dementsprechend gibt der Prozessor 1210 diese Coprozessor-Anweisungen (oder Steuersignale, die Coprozessor-Anweisungen darstellen) auf einem Coprozessor-Bus oder einer anderen Verbindung zu dem Coprozessor 1245 aus. Der (die) Coprozessor(en) 1245 nimmt (nehmen) die empfangenen Coprozessor-Anweisungen an und führen sie aus.
  • Nun Bezug nehmend auf 13 ist ein Blockdiagramm von erstem spezifischerem System 1300 gemäß einer Ausführungsform der vorliegenden Erfindung gezeigt. Wie in 13 gezeigt, ist das Mehrfachprozessorsystem 1300 ein Punkt-zu-Punkt-Verbindungssystem, und beinhaltet ersten Prozessor 1370 und zweiten Prozessor 1380, die über Punkt-zu-Punkt-Verbindung 1350 gekoppelt sind. Jeder der Prozessoren 1370 und 1380 kann eine Version des Prozessors 1100 sein. In einer Ausführungsform der Erfindung sind die Prozessoren 1370 und 1380 die Prozessoren 1210 bzw. 1215, während Coprozessor 1338 der Coprozessor 1245 ist. In einer anderen Ausführungsform sind die Prozessoren 1370 und 1380 der Prozessor 1210 bzw. der Coprozessor 1245.
  • Die Prozessoren 1370 und 1380 sind einschließlich Integrated-Memory-Controller (IMC) -Einheiten 1372 bzw. 1382 gezeigt. Der Prozessor 1370 beinhaltet als Teil seiner BusSteuerungseinheiten auch Punkt-zu-Punkt (P-P) -Schnittstellen 1376 und 1378; in ähnlicher Weise beinhaltet der zweite Prozessor 1380 P-P-Schnittstellen 1386 und 1388. Die Prozessoren 1370 und 1380 können Informationen über eine Punkt-zu-Punkt (P-P)-Schnittstelle 1350 durch Verwenden der P-P-Schnittstellenschaltungen 1378 bzw. 1388 austauschen. Wie in 13 gezeigt, koppeln die IMC 1372 und 1382 die Prozessoren mit jeweiligen Speichern, nämlich Speicher 1332 und Speicher 1334, die Abschnitte eines lokal an die jeweiligen Prozessoren angehängten Hauptspeichers sein können.
  • Die Prozessoren 1370, 1380 können jeweils Informationen mit Chipsatz 1390 über einzelne P-P-Schnittstellen 1352, 1354 durch Verwenden von Punkt-zu-Punkt-SchnittstellenSchaltungen 1376, 1394, 1386, 1398 austauschen. Der Chipsatz 1390 kann optional Informationen mit dem Coprozessor 1338 über Hochleistungsschnittstelle 1339 und Schnittstelle 1392 austauschen. In einer Ausführungsform ist der Coprozessor 1338 ein Spezialprozessor, wie zum Beispiel ein MIC-Prozessor mit hohem Durchsatz, ein Netzwerk- oder Kommunikationsprozessor, eine Komprimierungs-Engine, ein Grafikprozessor, eine GPGPU, ein eingebetteter Prozessor oder dergleichen.
  • Ein gemeinsam genutzter Cache (nicht gezeigt) kann in jedem Prozessor oder außerhalb beider Prozessoren enthalten sein, und dennoch über eine P-P-Verbindung mit den Prozessoren verbunden sein, sodass lokale Cache-Informationen eines oder beider Prozessoren in dem gemeinsam genutzten Cache gespeichert werden können, wenn ein Prozessor in einen Modus mit niedriger Leistung gesetzt wird.
  • Der Chipsatz 1390 kann über Schnittstelle 1396 mit erstem Bus 1316 gekoppelt werden. In einer Ausführungsform kann der erste Bus 1316 ein Peripheral Component Interconnect (PCI) -Bus oder ein Bus, wie zum Beispiel ein PCI-Express-Bus oder ein anderer I/O-Verbindungsbus, der dritten Generation sein, obwohl der Umfang der vorliegenden Erfindung nicht darauf beschränkt ist.
  • Wie in 13 gezeigt, können verschiedene I/O-Geräte 1314 mit dem ersten Bus 1316 gekoppelt sein, zusammen mit Bus-Brücke 1318, die den ersten Bus 1316 mit zweitem Bus 1320 koppelt. In einer Ausführungsform sind ein oder mehrere zusätzliche Prozessoren 1315, wie zum Beispiel Coprozessoren, MIC-Prozessoren mit hohem Durchsatz, GPGPU, Beschleuniger (wie zum Beispiel Grafikbeschleuniger oder Digital-Signal-Processing (DSP) -Einheiten), Field-Programmable-Gate-Arrays oder jeglicher andere Prozessor, mit dem ersten Bus 1316 gekoppelt. In einer Ausführungsform kann der zweite Bus 1320 ein Low-Pin-Count (LPC) -Bus sein. Verschiedene Geräte können in einer Ausführungsform mit einem zweiten Bus 1320 gekoppelt werden, einschließlich zum Beispiel Tastatur und/oder Maus 1322, Kommunikationsgeräte 1327 und Speicherungseinheit 1328, wie zum Beispiel ein Festplattenlaufwerk oder ein anderes Massenspeichergerät, das Anweisungen/Code und Daten 1330 in einer Ausführungsform beinhalten kann. Ferner kann Audio-I/O 1324 mit dem zweiten Bus 1320 gekoppelt sein. Es ist darauf hinzuweisen, dass andere Architekturen möglich sind. Zum Beispiel kann ein System anstatt der Punkt-zu-Punkt-Architektur von 13 einen Multi-Drop-Bus oder eine andere solche Architektur implementieren.
  • Nun Bezug nehmend auf 14 ist ein Blockdiagramm von zweitem spezifischerem System 1400 gemäß einer Ausführungsform der vorliegenden Erfindung gezeigt. Gleiche Elemente in den 13 und 14 tragen gleiche Bezugszeichen, und bestimmte Aspekte von 13 wurden in 14 weggelassen, um eine Verschleierung anderer Aspekte von 14 zu vermeiden.
  • 14 veranschaulicht, dass die Prozessoren 1370, 1380 integrierte Speicher- und I/O-Control-Logic (CL) 1472 bzw. 1482 beinhalten können. Somit beinhalten die CL 1472, 1482 integrierte Speicher-Steuerungseinheiten und beinhalten eine I/O-Steuerungslogik. 14 veranschaulicht, dass nicht nur die Speicher 1332, 1334 mit der CL 1472, 1482 gekoppelt sind, sondern auch, dass I/O-Geräte 1414 auch mit der Steuerlogik 1472, 1482 gekoppelt sind. Etablierte I/O-Geräte 1415 sind mit dem Chipsatz 1390 gekoppelt.
  • Nun Bezug nehmend auf 15 ist ein Blockdiagramm von SoC 1500 gemäß einer Ausführungsform der vorliegenden Erfindung gezeigt. Ähnliche Elemente in 15 tragen gleiche Bezugszeichen. Außerdem sind Kästchen mit gestrichelten Linien optionale Merkmale bei fortschrittlicheren SoC. In 15 ist (sind) Verbindungseinheit(en) 1502 mit Folgendem gekoppelt: Anwendungsprozessor 1510, der einen Satz von einem oder mehreren Kernen 1102AN, und gemeinsam genutzte Cache-Einheit(en) 1106 beinhaltet; einer Systemagenteneinheit 1110; Bussteuerungseinheit(en) 1116; integrierter Speichersteuerungseinheit(en) 1114; einem Satz oder einem oder mehreren Coprozessoren 1520, die eine integrierte Grafiklogik, einen Bildprozessor, einen Audioprozessor und einen Videoprozessor beinhalten können; Static-Random-Access-Memory (SRAM) -Einheit 1530; Direct-Memory-Access (DMA) -Einheit 1532; und Anzeigeeinheit 1540 zum Koppeln mit einer oder mehreren externen Anzeigen. In einer Ausführungsform beinhaltet (beinhalten) der (die) Coprozessor(en) 1520 einen Spezialprozessor, wie zum Beispiel einen Netzwerk- 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 von solchen Implementierungsansätzen implementiert sein. Ausführungsformen der Erfindung können als Computerprogramme oder Programmcode umgesetzt sein, die/der auf programmierbaren Systemen ausgeführt werden/wird, die mindestens einen Prozessor, ein Speicherungssystem (einschließlich flüchtigem und nichtflüchtigem Speicher und/oder Speicherungselementen), mindestens ein Eingabegerät und mindestens ein Ausgabegerät umfassen.
  • Programmcode, wie zum Beispiel der in 13 veranschaulichte Code 1330, kann angewendet werden, um Anweisungen zum Ausführen der hierin beschriebenen Funktionen einzugeben und Ausgabeinformationen zu erzeugen. Die Ausgabeinformationen können in bekannter Weise auf ein oder mehrere Ausgabegeräte angewendet werden. Zu Zwecken dieser Anwendung beinhaltet ein Verarbeitungssystem jegliches System, das einen Prozessor hat, wie zum Beispiel; einen Digital-Signal-Processor (DSP), einen Mikrocontroller, eine Application-Specific-Integrated-Circuit (ASIC) oder einen Mikroprozessor.
  • Der Programmcode kann in einer höheren prozeduralen oder objektorientierten Programmiersprache implementiert sein, um mit einem Verarbeitungssystem zu kommunizieren. Der Programmcode kann auch in einer Assembler- oder Maschinensprache implementiert sein, falls gewünscht. Tatsächlich sind die hierin beschriebenen Mechanismen in ihrem Umfang nicht auf jegliche bestimmte Programmiersprache beschränkt. In jeglichem Fall kann die Sprache eine kompilierte oder interpretierte Sprache sein.
  • Ein oder mehrere Aspekte mindestens einer Ausführungsform können durch repräsentative Anweisungen implementiert werden, die auf einem maschinenlesbaren Medium gespeichert sind, das verschiedene Logik innerhalb des Prozessors darstellt, die, wenn durch eine Maschine gelesen, die Maschine dazu veranlasst, Logik zum Ausführen der hierin beschriebenen Techniken herzustellen. Diese Darstellungen, bekannt als „IP-Kerne“, können auf einem materiellen, maschinenlesbaren Medium gespeichert und an verschiedene Kunden oder Herstellungseinrichtungen geliefert werden, um sie in die Herstellungsmaschinen zu laden, die die Logik oder den Prozessor tatsächlich herstellen.
  • Solche maschinenlesbaren Speicherungsmedien beinhalten, ohne Beschränkung, nichtflüchtige, materielle Anordnungen von Artikeln, die durch eine Maschine oder ein Gerät hergestellt oder gebildet werden, einschließlich Speicherungsmedien, wie zum Beispiel Festplatten, jeglichem anderen Typ von Disk, einschließlich Floppy-Disks, optische Disks, Compact-Disc-Read-Only-Memories (CD-ROM), Compact-Disk-Rewritables (CD-RW) und magneto-optische Disks, Halbleitergeräte, wie zum Beispiel Read-Only-Memories (ROM), Random-Access-Memories (RAM), wie zum Beispiel Dynamic-Random-Access-Memories (DRAM), Static-Random-Access-Memories (SRAM), Erasable-Programmable-Read-Only-Memories (EPROM), Flash-Speichern, Electrically-Erasable-Programmable-Read-Only-Memories (EEPROM), Phase-Change-Memory (PCM), magnetische oder optische Karten oder jeglichem anderen Typ von zum Speichern elektronischer Anweisungen geeigneter Medien.
  • Dementsprechend beinhalten Ausführungsformen der Erfindung auch nichtflüchtige, materielle maschinenlesbare Medien, die Anweisungen enthalten oder Designdaten enthalten, wie zum Beispiel eine Hardware-Description-Language (HDL), die hierin beschriebene Strukturen, Schaltungen, Vorrichtungen, Prozessoren und/oder Systemmerkmale definiert. Solche Ausführungsformen können auch als Programmprodukte bezeichnet werden.
  • Emulation (einschließlich binärer Übersetzung, Code-Morphing usw.)
  • In einigen Fällen kann ein Anweisungskonverter verwendet werden, um eine Anweisung von einem Quellanweisungssatz in einen Zielanweisungssatz zu konvertieren. Zum Beispiel kann der Anweisungskonverter eine Anweisung in einen oder mehrere andere durch den Kern zu verarbeitende Anweisungen übersetzen (zum Beispiel durch Verwenden einer statischen binären Übersetzung, einer dynamischen binären Übersetzung, einschließlich dynamischer Kompilierung), morphen, emulieren oder anderweitig konvertieren. Der Anweisungskonverter kann in Software, Hardware, Firmware oder einer Kombination davon implementiert sein. Der Anweisungskonverter kann prozessorintern, prozessorextern oder teilweise prozessorintern und teilweise prozessorextern sein.
  • 16 ist ein Blockdiagramm, das die Verwendung eines Softwareanweisungskonverters zum Konvertieren binärer Anweisungen in einem Quellanweisungssatz in binäre Anweisungen in einem Zielanweisungssatz gegenüberstellt, gemäß Ausführungsformen der Erfindung. In der veranschaulichten Ausführungsform ist der Anweisungskonverter ein Softwareanweisungskonverter, obwohl der Anweisungskonverter alternativ in Software, Firmware, Hardware oder verschiedenen Kombinationen davon implementiert sein kann. 16 zeigt, dass ein Programm in höherer Sprache 1602 durch Verwenden von x86-Compiler 1604 kompiliert werden kann, um x86-Binärcode 1606 zu erzeugen, der nativ durch einen Prozessor mit mindestens einem x86-Anweisungssatzkern 1616 ausgeführt werden kann. Der Prozessor mit mindestens einem x86-Anweisungssatzkern 1616 stellt jeglichen Prozessor dar, der im Wesentlichen dieselben Funktionen wie ein Intel-Prozessor mit mindestens einem x86-Anweisungssatzkern ausführen kann, durch kompatibles Ausführen oder anderweitiges Verarbeiten (1) eines wesentlichen Abschnitts des Anweisungssatzes des Intel x86-Anweisungssatzkerns oder (2) von Objektcodeversionen von Anwendungen oder anderer Software, die darauf abzielen, auf einem Intel Prozessor mit mindestens einem x86-Anweisungssatzkern ausgeführt zu werden, um im Wesentlichen dasselbe Ergebnis wie ein Intel Prozessor mit mindestens einem x86-Anweisungssatzkern zu erreichen. Der x86-Kompilierer 1604 stellt einen Kompilierer dar, der funktionsfähig ist, um den x86-Binärcode 1606 (zum Beispiel Objektcode) zu erzeugen, der mit oder ohne zusätzliche Verbindungsverarbeitung auf dem Prozessor mit mindestens einem x86-Anweisungssatzkern 1616 ausgeführt werden kann. In ähnlicher Weise zeigt 16, dass das Programm in der höheren Sprache 1602 durch Verwenden von alternativem Anwendungssatz-Compiler 1608 kompiliert werden kann, um alternativen Anweisungssatzbinärcode 1610 zu erzeugen, der nativ durch einen Prozessor ohne mindestens einen x86-Anweisungssatzkern 1614 ausgeführt werden kann (zum Beispiel einen Prozessor mit Kernen, die den MIPS-Anweisungssatz von MIPS Technologies in Sunnyvale, CA, USA, ausführen und/oder die den ARM-Anweisungssatz von ARM Holdings in Sunnyvale, CA, USA, ausführen). Anweisungskonverter 1612 wird verwendet, um den x86-Binärcode 1606 in Code umzuwandeln, der nativ durch den Prozessor ohne einen x86-Anweisungssatzkern 1614 ausgeführt werden kann. Dieser konvertierte Code ist wahrscheinlich nicht derselbe wie der alternative Anweisungssatzbinärcode 1610, da ein dazu geeigneter Anweisungskonverter schwierig herzustellen ist; der konvertierte Code wird jedoch die allgemeine Operation erfüllen, und aus Anweisungen von dem alternativen Anweisungssatz bestehen. Somit stellt der Anweisungskonverter 1612 Software, Firmware, Hardware oder eine Kombination davon dar, die es durch Emulation, Simulation oder jeglichen anderen Prozess einem Prozessor oder einem anderen elektronischen Gerät, das keinen x86-Anweisungssatzprozessor oder -Kern hat, ermöglicht, den x86-Binärcode 1606 auszuführen.
  • Zusätzliche Anmerkungen und Beispiele:
  • Beispiel 1 beinhaltet eine Vorrichtung, die einen Speicherschutz-Cache umfasst, um Speicherschutzinformationen für einen Nicht-Host-Speicher zu speichern, und eine mit dem Speicherschutz-Cache gekoppelte Schaltung, um eine oder mehrere Speicherschutzprüfungen an einer übersetzten Zugriffsanforderung für den Nicht-Host-Speicher basierend auf den gespeicherten Speicherschutzinformationen auszuführen.
  • Beispiel 2 beinhaltet die Vorrichtung von Beispiel 1, wobei die Schaltung ferner die gespeicherten Speicherschutzinformationen mit einer Speicherschutzeinheit eines Hosts synchronisieren soll.
  • Beispiel 3 beinhaltet die Vorrichtung von Beispiel 2, wobei die Schaltung ferner einen sicheren direkten Peer-to-Peer-Speicherzugriff auf den Nicht-Host-Speicher ohne Eingriff durch den Host bereitstellen soll (zum Beispiel, um einen Root-Port des Hosts für die übersetzte Zugriffsanforderung für den Nicht-Host-Speicher zu umgehen).
  • Beispiel 4 beinhaltet die Vorrichtung eines der Beispiele 2 bis 3, wobei die Schaltung ferner eine direkte P2P-Speicherzugriffsanforderung für den Nicht-Host-Speicher basierend auf den in dem MPC gespeicherten Speicherschutzinformationen blockieren oder ermöglichen soll.
  • Beispiel 5. Die Vorrichtung eines der Beispiele 2 bis 4, wobei die Schaltung ferner bestimmen soll, ob die übersetzte Zugriffsanforderung von dem Host kommt, und, falls dies bestimmt wurde, die eine oder die mehreren Speicherschutzprüfungen an der übersetzten Zugriffsanforderung umgehen soll.
  • Beispiel 6 beinhaltet die Vorrichtung eines der Beispiele 2 bis 5, wobei die Schaltung ferner bestimmen soll, ob die übersetzte Zugriffsanforderung den Speicherschutz-Cache verfehlt, basierend auf Informationen, die in der übersetzten Zugriffsanforderung empfangen werden, und, falls dies bestimmt wurde, anfordern soll, dass die Speicherschutzeinheit des Hosts Speicherschutzinformationen für die übersetzte Zugriffsanforderung ausfüllt.
  • Beispiel 7 beinhaltet die Vorrichtung von Beispiel 6, wobei die Schaltung ferner einen Anforderer benachrichtigen soll, die übersetzte Zugriffsanforderung, die den Speicherschutz-Cache verfehlt, zusammen mit Zurückhalteinformationen erneut zu versuchen.
  • Beispiel 8 beinhaltet eine integrierte Schaltung, die eine Schaltung umfasst, um Speicherschutzinformationen für einen Nicht-Host-Speicher in einem Speicherschutz-Cache zu speichern, und eine oder mehrere Speicherschutzprüfungen an einer übersetzten Zugriffsanforderung für den Nicht-Host-Speicher basierend auf den gespeicherten Speicherschutzinformationen auszuführen.
  • Beispiel 9 beinhaltet die integrierte Schaltung von Beispiel 8, wobei die Schaltung ferner die gespeicherten Speicherschutzinformationen mit einer Speicherschutzeinheit eines Hosts synchronisieren soll.
  • Beispiel 10 beinhaltet die integrierte Schaltung von Beispiel 9, wobei die Schaltung ferner einen sicheren direkten Peer-to-Peer-Speicherzugriff auf den Nicht-Host-Speicher ohne Eingriff durch den Host bereitstellen soll.
  • Beispiel 11 beinhaltet die integrierte Schaltung eines der Beispiele 9 bis 10, wobei die Schaltung ferner einen Root-Port des Hosts für die übersetzte Zugriffsanforderung für den Nicht-Host-Speicher umgehen soll.
  • Beispiel 12 beinhaltet die integrierte Schaltung eines der Beispiele 9 bis 11, wobei die Schaltung ferner bestimmen soll, ob die übersetzte Zugriffsanforderung von dem Host kommt, und, falls dies bestimmt wurde, die eine oder die mehreren Speicherschutzprüfungen an der übersetzten Zugriffsanforderung umgehen soll.
  • Beispiel 13 beinhaltet die integrierte Schaltung eines der Beispiele 9 bis 12, wobei die Schaltung ferner bestimmen soll, ob die übersetzte Zugriffsanforderung den Speicherschutz-Cache verfehlt, basierend auf Informationen, die in der übersetzten Zugriffsanforderung empfangen werden, und, falls dies bestimmt wurde, anfordern soll, dass die Speicherschutzeinheit des Hosts Speicherschutzinformationen für die übersetzte Zugriffsanforderung ausfüllt.
  • Beispiel 14 beinhaltet die integrierte Schaltung von Beispiel 13, wobei die Schaltung ferner einen Anforderer benachrichtigen soll, die übersetzte Zugriffsanforderung, die den Speicherschutz-Cache verfehlt, zusammen mit Zurückhalteinformationen erneut zu versuchen.
  • Beispiel 15 beinhaltet ein Verfahren, das das Speichern von Speicherschutzinformationen für einen Nicht-Host-Speicher in einem Speicherschutz-Cache und das Ausführen einer oder mehrerer Speicherschutzprüfungen an einer übersetzten Zugriffsanforderung für den Nicht-Host-Speicher basierend auf den gespeicherten Speicherschutzinformationen umfasst.
  • Beispiel 16 beinhaltet das Verfahren von Beispiel 15, das ferner das Synchronisieren der gespeicherten Speicherschutzinformationen mit einer Speicherschutzeinheit eines Hosts umfasst.
  • Beispiel 17 beinhaltet das Verfahren von Beispiel 16, das ferner das Bereitstellen eines sicheren direkten Peer-to-Peer-Speicherzugriffs auf den Nicht-Host-Speicher ohne Eingriff durch den Host umfasst.
  • Beispiel 18 beinhaltet das Verfahren eines der Beispiele 16 bis 17, das ferner das Umgehen eines Root-Port des Hosts für die übersetzte Zugriffsanforderung für den Nicht-Host-Speicher umfasst.
  • Beispiel 19 beinhaltet das Verfahren eines der Beispiele 16 bis 18, das ferner das Bestimmen umfasst, ob die übersetzte Zugriffsanforderung von dem Host kommt, und, falls dies bestimmt wurde, das Umgehen der einen oder der mehreren Speicherschutzprüfungen an der übersetzten Zugriffsanforderung.
  • Beispiel 20 beinhaltet das Verfahren eines der Beispiele 16 bis 19, das ferner das Bestimmen umfasst, ob die übersetzte Zugriffsanforderung den Speicherschutz-Cache verfehlt, basierend auf Informationen, die in der übersetzten Zugriffsanforderung empfangen werden, und, falls dies bestimmt wurde, das Anfordern, dass die Speicherschutzeinheit des Hosts Speicherschutzinformationen für die übersetzte Zugriffsanforderung ausfüllt.
  • Beispiel 21 beinhaltet das Verfahren von Beispiel 20, das ferner das Benachrichtigen eines Anforderers umfasst, die übersetzte Zugriffsanforderung, die den Speicherschutz-Cache verfehlt, zusammen mit Zurückhalteinformationen erneut zu versuchen.
  • Beispiel 22 beinhaltet eine Vorrichtung, die Mittel zum Speichern von Speicherschutzinformationen für einen Nicht-Host-Speicher in einem Speicherschutz-Cache und Mittel zum Ausführen einer oder mehrerer Speicherschutzprüfungen an einer übersetzten Zugriffsanforderung für den Nicht-Host-Speicher basierend auf den gespeicherten Speicherschutzinformationen umfasst.
  • Beispiel 23 beinhaltet die Vorrichtung von Beispiel 22, die ferner Mittel zum Synchronisieren der gespeicherten Speicherschutzinformationen mit einer Speicherschutzeinheit eines Hosts umfasst.
  • Beispiel 24 beinhaltet die Vorrichtung von Beispiel 23, die ferner Mittel zum Bereitstellen eines sicheren direkten Peer-to-Peer-Speicherzugriffs auf den Nicht-Host-Speicher ohne Eingriff durch den Host umfasst.
  • Beispiel 25 beinhaltet die Vorrichtung eines der Beispiele 23 bis 24, die ferner Mittel zum Umgehen eines Root-Port des Hosts für die übersetzte Zugriffsanforderung für den Nicht-Host-Speicher umfasst.
  • Beispiel 26 beinhaltet die Vorrichtung eines der Beispiele 23 bis 25, die ferner Mittel zum Bestimmen umfasst, ob die übersetzte Zugriffsanforderung von dem Host kommt, und, falls dies bestimmt wurde, Mittel zum Umgehen der einen oder der mehreren Speicherschutzprüfungen an der übersetzten Zugriffsanforderung.
  • Beispiel 27 beinhaltet die Vorrichtung eines der Beispiele 23 bis 26, die ferner Mittel zum Bestimmen umfasst, ob die übersetzte Zugriffsanforderung den Speicherschutz-Cache verfehlt, basierend auf Informationen, die in der übersetzten Zugriffsanforderung empfangen werden, und, falls dies bestimmt wurde, Mittel zum Anfordern, dass die Speicherschutzeinheit des Hosts Speicherschutzinformationen für die übersetzte Zugriffsanforderung ausfüllt.
  • Beispiel 28 beinhaltet die Vorrichtung von Beispiel 27, die ferner das Benachrichtigen eines Anforderers umfasst, die übersetzte Zugriffsanforderung, die den Speicherschutz-Cache verfehlt, zusammen mit Zurückhalteinformationen erneut zu versuchen.
  • Beispiel 29 beinhaltet mindestens ein nichtflüchtiges maschinenlesbares Medium, das mehrere Anweisungen umfasst, die als Reaktion darauf, dass sie auf einem Datenverarbeitungsgerät ausgeführt werden, das Datenverarbeitungsgerät dazu veranlassen, Speicherschutzinformationen für einen Nicht-Host-Speicher in einem Speicherschutz-Cache zu speichern, und eine oder mehrere Speicherschutzprüfungen an einer übersetzten Zugriffsanforderung für den Nicht-Host-Speicher basierend auf den gespeicherten Speicherschutzinformationen auszuführen.
  • Beispiel 30 beinhaltet das mindestens eine nichtflüchtige maschinenlesbare Medium von Beispiel 29, das mehrere weitere Anweisungen umfasst, die als Reaktion darauf, dass sie auf dem Datenverarbeitungsgerät ausgeführt werden, das Datenverarbeitungsgerät dazu veranlassen, die gespeicherten Speicherschutzinformationen mit einer Speicherschutzeinheit eines Hosts zu synchronisieren.
  • Beispiel 31 beinhaltet das mindestens eine nichtflüchtige maschinenlesbare Medium von Beispiel 30, das mehrere weitere Anweisungen umfasst, die als Reaktion darauf, dass sie auf dem Datenverarbeitungsgerät ausgeführt werden, das Datenverarbeitungsgerät dazu veranlassen, sicheren direkten Peer-to-Peer Zugriff auf den Nicht-Host-Speicher ohne Eingriff durch den Host bereitzustellen
  • Beispiel 32 beinhaltet das mindestens eine nichtflüchtige maschinenlesbare Medium eines der Beispiele 30 bis 31, das mehrere weitere Anweisungen umfasst, die als Reaktion darauf, dass sie auf dem Datenverarbeitungsgerät ausgeführt werden, das Datenverarbeitungsgerät dazu veranlassen, einen Root-Port des Hosts für die übersetzte Zugriffsanforderung für den Nicht-Host-Speicher zu umgehen.
  • Beispiel 33 beinhaltet das mindestens eine nichtflüchtige maschinenlesbare Medium eines der Beispiele 30 bis 32, das mehrere weitere Anweisungen umfasst, die als Reaktion darauf, dass sie auf dem Datenverarbeitungsgerät ausgeführt werden, das Datenverarbeitungsgerät dazu veranlassen, zu bestimmen, ob die übersetzte Zugriffsanforderung von dem Host kommt, und, falls dies bestimmt wurde, die eine oder die mehreren Speicherschutzprüfungen an der übersetzten Zugriffsanforderung zu umgehen.
  • Beispiel 34 beinhaltet das mindestens eine nichtflüchtige maschinenlesbare Medium eines der Beispiele 30 bis 33, das mehrere weitere Anweisungen umfasst, die als Reaktion darauf, dass sie auf dem Datenverarbeitungsgerät ausgeführt werden, das Datenverarbeitungsgerät dazu veranlassen, zu bestimmen, ob die übersetzte Zugriffsanforderung den Speicherschutz-Cache verfehlt, basierend auf Informationen, die in der übersetzten Zugriffsanforderung empfangen werden, und, falls dies bestimmt wurde, anzufordern, dass die Speicherschutzeinheit des Hosts Speicherschutzinformationen für die übersetzte Zugriffsanforderung ausfüllt.
  • Beispiel 35 beinhaltet das mindestens eine nichtflüchtige maschinenlesbare Medium von Beispiel 34, das mehrere weitere Anweisungen umfasst, die als Reaktion darauf, dass sie auf dem Datenverarbeitungsgerät ausgeführt werden, das Datenverarbeitungsgerät dazu veranlassen, einen Anforderer zu benachrichtigen, die übersetzte Zugriffsanforderung, die den Speicherschutz-Cache verfehlt, zusammen mit Zurückhalteinformationen erneut zu versuchen.
  • Beispiel 36 beinhaltet eine integrierte Schaltung, die eine Schaltung umfasst, um Speicherschutzinformationen für einen Host-Speicher in einer Input/Output Memory Protection Unit (I/O-MPU) zu speichern, und die gespeicherten Speicherschutzinformationen mit einem Memory Protection Cache (MPC) eines kommunizierend mit dem Host gekoppelten Geräts zu synchronisieren.
  • Beispiel 37 beinhaltet die integrierte Schaltung von Beispiel 36, wobei die Schaltung ferner eine MPC-Auffüllanforderung an der IO-MPU von dem Gerät empfangen soll.
  • Beispiel 38 beinhaltet die integrierte Schaltung von Beispiel 37, wobei die Schaltung ferner einen Host-Genehmigungstabellenlauf ausführen und Zugriffsgenehmigungen an der IO-MPU als Reaktion auf die MPC-Auffüllanforderung validieren soll, und Informationen von der IO-MPU in einer Form einer MPC-Auffüllantwort an das Gerät zurückgeben soll.
  • Beispiel 39 beinhaltet die integrierte Schaltung eines der Beispiele 36 bis 38, wobei die Schaltung ferner eine Anforderung an der IO-MPU von Systemsoftware empfangen soll, um MPC-Informationen ungültig zu machen.
  • Beispiel 40 beinhaltet die integrierte Schaltung von Beispiel 39, wobei die Schaltung ferner eine MPC-Ungültigkeitsanforderung an das Gerät als Reaktion auf die Anforderung erzeugen soll, und eine MPC-Ungültigkeitsantwort von dem Gerät empfangen soll.
  • Beispiel 41 beinhaltet die integrierte Schaltung von Beispiel 40, wobei die Schaltung ferner eine oder mehrere Verfolgungsinformationen aktualisieren soll, und die Systemsoftware über die MPC-Ungültigkeitsantwort benachrichtigen soll.
  • Beispiel 42 beinhaltet die integrierte Schaltung eines der Beispiele 36 bis 41, wobei der Host-Speicher einen Systemspeicher umfasst.
  • Techniken und Architekturen für einen MPC sind hierin beschrieben. In der obigen Beschreibung werden zu Zwecken der Erläuterung zahlreiche spezifische Details dargelegt, um ein sorgfältiges Verständnis bestimmter Ausführungsformen bereitzustellen. Für einen Fachmann wird jedoch offensichtlich, dass bestimmte Ausführungsformen ohne diese spezifischen Details praktiziert werden kann. In anderen Fällen sind Strukturen und Geräte in Blockdiagrammform gezeigt, um ein Verschleiern der Beschreibung zu vermeiden.
  • Ein Bezug in der Spezifikation auf „(genau) eine Ausführungsform“ oder „eine Ausführungsform“ bedeutet, dass ein in Verbindung mit der Ausführungsform beschriebenes bestimmtes Merkmal, eine bestimmte Struktur oder eine bestimmte Charakteristik in mindestens einer Ausführungsform der Erfindung enthalten ist. Die Erscheinungen der Phrase „in einer Ausführungsform“ an verschiedenen Stellen in der Spezifikation beziehen sich nicht alle notwendigerweise auf dieselbe Ausführungsform.
  • Einige Abschnitte der detaillierten Beschreibung hierin werden in Form von Algorithmen und symbolischen Darstellungen von Operationen an Daten-Bits in einem Computerspeicher dargestellt. Diese algorithmischen Beschreibungen und Darstellungen sind die Mittel, die durch Fachleute der Datenverarbeitung verwendet werden, um die Substanz ihrer Arbeit anderen Fachleuten am effektivsten zu vermitteln. Ein Algorithmus wird hier und allgemein als eine selbstkonsistente Sequenz von Schritten betrachtet, die zu einem angestrebten Ergebnis führt. Die Schritte sind jene, die physikalische Manipulationen physikalischer Größen erfordern. Üblicherweise, jedoch nicht notwendigerweise, nehmen diese Größen die Form von elektrischen oder magnetischen Signalen an, die gespeichert, übertragen, kombiniert, verglichen und anderweitig manipuliert werden können. Es hat sich bisweilen, hauptsächlich aus Gründen der üblichen Verwendung, als zweckmäßig erwiesen, diese Signale als Bits, Werte, Elemente, Symbole, Zeichen, Begriffe, Zahlen oder dergleichen zu bezeichnen.
  • Es sollte jedoch berücksichtigt werden, dass alle diese und ähnliche Begriffe den geeigneten physikalischen Größen zugeordnet werden müssen, und lediglich auf diese Größen angewendete zweckmäßige Etiketten sind. Sofern sich aus der Diskussion hierin nicht ausdrücklich etwas anderes ergibt, wird davon ausgegangen, dass sich Diskussionen über die gesamte Beschreibung hinweg durch Verwendung von Begriffen, wie zum Beispiel „Verarbeiten“ oder „Rechnen“ oder „Berechnen“ oder „Bestimmen“ oder „Anzeigen“ oder dergleichen auf die Handlung und Prozesse eines Computersystems oder eines ähnlichen elektronischen Datenverarbeitungsgeräts beziehen, das bzw. die Daten, die als physikalische (elektronische) Größen in den Registern und Speichern des Computersystems dargestellt sind, manipuliert und in andere Daten umwandelt, die gleichermaßen als physikalische Größen in den Speichern oder Registern des Computersystems oder anderen derartigen Informationsspeicherungs-, Übertragungs- oder Anzeigegeräten dargestellt sind.
  • Gewisse Ausführungsformen beziehen sich auch auf Vorrichtungen zum Ausführen der Operationen hierin. Diese Vorrichtungen können speziell für die erforderlichen Zwecke konstruiert sein, oder sie können einen Mehrzweckcomputer umfassen, der durch ein in dem Computer gespeichertes Computerprogramm selektiv aktiviert oder neu konfiguriert wird. Ein solches Computerprogramm kann in einem computerlesbaren Speicherungsmedium gespeichert sein, wie zum Beispiel unter anderem jeglichem Typ von Platte, einschließlich Disketten, optischen Platten, CD-ROM und magnetisch-optischen Platten, Read Only Memories (ROM), Random Access Memories (RAM), wie zum Beispiel Dynamic RAM (DRAM), EPROM, EEPROMs, magnetischen oder optischen Karten oder jeglichem Typ von Medien, die zum Speichern elektronischer Anweisungen geeignet sind und mit einem Computersystembus gekoppelt sind.
  • Die hierin dargestellten Algorithmen und Anzeigen beziehen sich nicht inhärent auf jeglichen speziellen Computer oder eine andere Vorrichtung. Verschiedene Mehrzwecksysteme können mit Programmen gemäß den hierin enthaltenen Lehren verwendet werden, oder es kann sich als zweckmäßig erweisen, spezialisiertere Vorrichtungen zu konstruieren, um die erforderlichen Verfahrensschritte auszuführen. Die erforderliche Struktur für eine Vielzahl dieser Systeme ergibt sich aus der hierin enthaltenen Beschreibung. zusätzlich sind bestimmte Ausführungsformen nicht unter Bezugnahme auf jegliche spezielle Programmiersprache beschrieben. Es versteht sich, dass eine Vielzahl von Programmiersprachen verwendet werden kann, um die Lehren solcher Ausführungsformen wie hierin beschrieben zu implementieren.
  • Neben dem, was hierin beschrieben ist, können verschiedene Modifikationen an den offenbarten Ausführungsformen und Implementierungen davon vorgenommen werden, ohne von ihrem Umfang abzuweichen. Daher sollten die Veranschaulichungen und Beispiele hierin in einem veranschaulichenden und nicht einem beschränkenden Sinn ausgelegt werden. Der Umfang der Erfindung sollte allein durch Bezugnahme auf die folgenden Ansprüche bemessen werden.

Claims (25)

  1. Vorrichtung, die Folgendes umfasst: einen Speicherschutz-Cache zum Speichern von Speicherschutzinformationen für einen Nicht-Host-Speicher; und eine mit dem Speicherschutz-Cache gekoppelte Schaltung zum Ausführen einer oder mehrerer Speicherschutzprüfungen an einer übersetzten Zugriffsanforderung für den Nicht-Host-Speicher basierend auf den gespeicherten Speicherschutzinformationen.
  2. Vorrichtung nach Anspruch 1, wobei die Schaltung ferner: die gespeicherten Speicherschutzinformationen mit einer Speicherschutzeinheit eines Hosts synchronisieren soll.
  3. Vorrichtung nach Anspruch 2, wobei die Schaltungsanordnung ferner: einen sichereren direkten Peer-to-Peer-Speicherzugriff auf den Nicht-Host-Speicher ohne Eingriff durch den Host bereitstellen soll.
  4. Vorrichtung nach einem der Ansprüche 2 bis 3, wobei die Schaltung ferner: eine direkte Peer-to-Peer-Speicherzugriffsanforderung für den Nicht-Host-Speicher basierend auf den Speicherschutzinformationen, die in dem Speicherschutz-Cache gespeichert sind, blockieren oder ermöglichen soll.
  5. Vorrichtung nach einem der Ansprüche 2 bis 4, wobei die Schaltung ferner: bestimmen soll, ob die übersetzte Zugriffsanforderung von dem Host kommt; und, falls dies bestimmt wurde, die eine oder die mehreren Speicherschutzprüfungen an der übersetzten Zugriffsanforderung umgehen soll.
  6. Vorrichtung nach einem der Ansprüche 2 bis 5, wobei die Schaltung ferner: bestimmen soll, ob die übersetzte Zugriffsanforderung den Speicherschutz-Cache verfehlt, basierend auf Informationen, die in der übersetzten Zugriffsanforderung empfangen werden; und, falls dies bestimmt wurde, anfordern soll, dass die Speicherschutzeinheit des Hosts Speicherschutzinformationen für die übersetzte Zugriffsanforderung auffüllt.
  7. Vorrichtung nach Anspruch 6, wobei die Schaltung ferner: einen Anforderer benachrichtigen soll, die übersetzte Zugriffsanforderung, die den Speicherschutz-Cache verfehlt, zusammen mit Zurückhalteinformationen erneut zu versuchen.
  8. Integrierte Schaltung, die eine Schaltung umfasst, um: Speicherschutzinformationen für einen Host-Speicher in einer Input/Output Memory Protection Unit (IO-MPU) zu speichern; und die gespeicherten Speicherschutzinformationen mit einem Memory Protection Cache (MPC) eines kommunizierend mit dem Host gekoppelten Geräts zu synchronisieren.
  9. Integrierte Schaltung nach Anspruch 8, wobei die Schaltung ferner: eine MPC-Auffüllanforderung an der IO-MPU von dem Gerät empfangen soll.
  10. Integrierte Schaltung nach Anspruch 9, wobei die Schaltung ferner: einen Host-Genehmigungstabellenlauf ausführen soll, und Zugriffsgenehmigungen an der IO-MPU als Reaktion auf die MPC-Auffüllanforderung validieren soll; und Informationen von der IO-MPU an das Gerät in einer Form einer MPC-Auffüllantwort zurückgeben soll.
  11. Integrierte Schaltung nach einem der Ansprüche 8 bis 10, wobei die Schaltung ferner: eine Anforderung an der IO-MPU von Systemsoftware empfangen soll, um MPC-Informationen ungültig zu machen
  12. Integrierte Schaltung nach Anspruch 11, wobei die Schaltung ferner: eine MPC-Ungültigkeitsanforderung an das Gerät als Reaktion auf die Anforderung erzeugen soll; und eine MPC-Ungültigkeitsantwort von dem Gerät empfangen soll.
  13. Integrierte Schaltung nach Anspruch 12, wobei die Schaltung ferner: Eine oder mehrere Verfolgungsinformationen aktualisieren soll, und die Systemsoftware über die MPC-Ungültigkeitsantwort benachrichtigen soll.
  14. Integrierte Schaltung nach Anspruch 13, wobei der Host-Speicher einen Systemspeicher umfasst.
  15. Verfahren, das Folgendes umfasst: Speichern von Speicherschutzinformationen für einen Nicht-Host-Speicher in einem Speicherschutz-Cache; und Ausführen einer oder mehrerer Speicherschutzprüfungen an einer übersetzten Zugriffsanforderung für den Nicht-Host-Speicher basierend auf den gespeicherten Speicherschutzinformationen.
  16. Verfahren nach Anspruch 15, das ferner Folgendes umfasst: Synchronisieren der gespeicherten Speicherschutzinformationen mit einer Speicherschutzeinheit eines Hosts.
  17. Verfahren nach Anspruch 16, das ferner Folgendes umfasst: Bereitstellen eines sicheren direkten Peer-to-Peer-Speicherzugriffs auf den Nicht-Host-Speicher ohne Eingriff durch den Host.
  18. Verfahren nach einem der Ansprüche 16 bis 17, das ferner Folgendes umfasst: Umgehen eines Root-Ports des Hosts für die übersetzte Zugriffsanforderung für den Nicht-Host-Speicher.
  19. Verfahren nach einem der Ansprüche 16 bis 18, das ferner Folgendes umfasst: Bestimmen, ob die übersetzte Zugriffsanforderung von dem Host kommt; und, falls dies bestimmt wurde, Umgehen der einen oder der mehreren Speicherschutzprüfungen an der übersetzten Zugriffsanforderung.
  20. Verfahren nach einem der Ansprüche 16 bis 19, das ferner Folgendes umfasst: Bestimmen, ob die übersetzte Zugriffsanforderung den Speicherschutz-Cache verfehlt, basierend auf Informationen, die in der übersetzten Zugriffsanforderung empfangen werden; und, falls dies bestimmt wurde, Anfordern, dass die Speicherschutzeinheit des Hosts Speicherschutzinformationen für die übersetzte Zugriffsanforderung auffüllt.
  21. Verfahren nach Anspruch 20, das ferner Folgendes umfasst: Benachrichtigen eines Anforderers, die übersetzte Zugriffsanforderung, die den Speicherschutz-Cache verfehlt, zusammen mit Zurückhalteinformationen erneut zu versuchen.
  22. Mindestens ein nicht flüchtiges maschinenlesbares Medium, das mehrere Anweisungen umfasst, die als Reaktion darauf, dass sie auf einem Datenverarbeitungsgerät ausgeführt werden, das Datenverarbeitungsgerät dazu veranlassen: Speicherschutzinformationen für einen Nicht-Host-Speicher in einem Speicherschutz-Cache zu speichern; und eine oder mehrere Speicherschutzprüfungen an einer übersetzten Zugriffsanforderung für den Nicht-Host-Speicher basierend auf den gespeicherten Speicherschutzinformationen auszuführen.
  23. Mindestens ein nicht flüchtiges maschinenlesbares Medium nach Anspruch 22, das mehrere weitere Anweisungen umfasst, die als Reaktion darauf, dass sie auf dem Datenverarbeitungsgerät ausgeführt werden, das Datenverarbeitungsgerät dazu veranlassen: die gespeicherten Speicherschutzinformationen mit einer Speicherschutzeinheit eines Hosts zu synchronisieren.
  24. Mindestens ein nicht flüchtiges maschinenlesbares Medium nach Anspruch 23, das mehrere weitere Anweisungen umfasst, die als Reaktion darauf, dass sie auf dem Datenverarbeitungsgerät ausgeführt werden, das Datenverarbeitungsgerät dazu veranlassen: einen sichereren direkten Peer-to-Peer-Speicherzugriff auf den Nicht-Host-Speicher ohne Eingriff durch den Host bereitzustellen.
  25. Mindestens ein nicht flüchtiges maschinenlesbares Medium nach einem der Ansprüche 23 bis 24, das mehrere weitere Anweisungen umfasst, die als Reaktion darauf, dass sie auf dem Datenverarbeitungsgerät ausgeführt werden, das Datenverarbeitungsgerät dazu veranlassen: einen Root-Port des Hosts für die übersetzte Zugriffsanforderung für den Nicht-Host-Speicher zu umgehen.
DE102022107196.0A 2021-06-21 2022-03-28 Sichere direkte Peer-to-Peer-Speicherzugriffsanforderung zwischen Geräten Pending DE102022107196A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US17/352,631 2021-06-21
US17/352,631 US20220405212A1 (en) 2021-06-21 2021-06-21 Secure direct peer-to-peer memory access requests between devices

Publications (1)

Publication Number Publication Date
DE102022107196A1 true DE102022107196A1 (de) 2022-12-22

Family

ID=84283467

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102022107196.0A Pending DE102022107196A1 (de) 2021-06-21 2022-03-28 Sichere direkte Peer-to-Peer-Speicherzugriffsanforderung zwischen Geräten

Country Status (3)

Country Link
US (1) US20220405212A1 (de)
CN (1) CN115577402A (de)
DE (1) DE102022107196A1 (de)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023004229A1 (en) * 2021-07-18 2023-01-26 Elastics.cloud, Inc. Composable infrastructure enabled by heterogeneous architecture, delivered by cxl based cached switch soc and extensible via cxloverethernet (coe) protocols
US11914543B2 (en) 2021-12-06 2024-02-27 Arm Limited PCIe communications
US11741021B2 (en) * 2022-01-18 2023-08-29 Vmware, Inc. Trust domains for peripheral devices

Also Published As

Publication number Publication date
CN115577402A (zh) 2023-01-06
US20220405212A1 (en) 2022-12-22

Similar Documents

Publication Publication Date Title
DE112013002069B4 (de) Hohes Leistungsverbindungskohärenz-Protokoll
DE102018006756A1 (de) Beschleuniger-Fabric
DE102018213430A1 (de) Beschleuniger mit geringer Latenzzeit
DE102022107196A1 (de) Sichere direkte Peer-to-Peer-Speicherzugriffsanforderung zwischen Geräten
DE102018006797A1 (de) Kohärente Speichereinrichtungen über PCIe
DE112016007566T5 (de) Systeme, Verfahren und Vorrichtungen zur heterogenen Berechnung
DE112016005910T5 (de) Architechtur für Software-Definierten Interconnect-Switch
DE102015002582A1 (de) Architekturübergreifendes Kompatibilitätsmodul, um zuzulassen, dass ein Codemodul einer Architektur ein Bibliotheksmodul einer anderen Architektur verwendet
DE102020208234A1 (de) Sichere Adressübersetzungsdienste unter Verwendung von Nachrichtenauthentifizierungscodes und Invalidierungsverfolgung
DE112010004971T5 (de) Ein System, Verfahren und eine Vorrichtung für einen Cache-Flush eines Seitenbereichs und TLB Invalidierung eines Bereichs von Einträgen
DE112016004303T5 (de) Hardware-Vorhersageelement mit geringem Verwaltungsaufwand zur Verringerung der Leistungsumkehr für Kern-zu-Kern-Datenübertragungsoptimierungsbefehle
DE112019002389T5 (de) Architektur zur dynamischen umwandlung einer speicherkonfiguration
DE112017001148T5 (de) Abflachende portalbrücke .
DE102019109119A1 (de) Host-verwalteter kohärenter gerätespeicher
DE102018002294A1 (de) Effizientes bereichsbasiertes speicher-rückschreiben zum verbessern der host-zu-geräte-kommunikation für optimale energie und leistung
DE112013005368T5 (de) Prozessoren, verfahren und systeme für echtzeit-befehlsverfolgung
DE112017003332T5 (de) Öffnungszugriffsprozessoren, verfahren, systeme und befehle
DE112016006065T5 (de) Spekulative nummerierung von adressräumen für bus-einrichtungsfunktionen
DE112017001700T5 (de) Prozessoren, Verfahren, Systeme und Anweisungen zum Abruf von Daten auf der angegebenen Cache-Ebene mit garantiertem Abschluss
DE112016005919T5 (de) Verfahren und Vorrichtung zum Sub-Seiten-Schreibschutz
DE102016006402A1 (de) Persistente commit-prozessoren, verfahren, systeme und befehle
DE202022002976U1 (de) Skalierbares System-on-a-Chip
DE102018005039A1 (de) System und verfahren für pro-agent-steuerung und - dienstqualität gemeinsam genutzter ressourcen in chip-mehrprozessor-plattformen
DE102014003854A1 (de) Robuste und Hochleistungsbefehle für Systemaufruf
DE112016005863T5 (de) Minimierung von Snoop-Verkehr lokal und über Kerne auf einem Chip-Mehrkern-Fabric