DE102022104654A1 - Verfahren und einrichtung zum aktivieren eines cache (devpic) zum speichern von prozessspezifischen informationen innerhalb von vorrichtungen, die adressübersetzungsdienst (ats) unterstützen - Google Patents

Verfahren und einrichtung zum aktivieren eines cache (devpic) zum speichern von prozessspezifischen informationen innerhalb von vorrichtungen, die adressübersetzungsdienst (ats) unterstützen Download PDF

Info

Publication number
DE102022104654A1
DE102022104654A1 DE102022104654.0A DE102022104654A DE102022104654A1 DE 102022104654 A1 DE102022104654 A1 DE 102022104654A1 DE 102022104654 A DE102022104654 A DE 102022104654A DE 102022104654 A1 DE102022104654 A1 DE 102022104654A1
Authority
DE
Germany
Prior art keywords
address
specific information
memory
information
cache
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
DE102022104654.0A
Other languages
English (en)
Inventor
Rupin Vakharwala
Vedvyas Shanbhogue
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 DE102022104654A1 publication Critical patent/DE102022104654A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • 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/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G06F12/1036Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] for multiple virtual address spaces, e.g. segmentation
    • 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/1081Address translation for peripheral access to main memory, e.g. direct memory access [DMA]
    • 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/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • 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/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
    • 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/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
    • G06F13/4295Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus using an embedded synchronisation
    • 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/1004Compatibility, e.g. with legacy hardware
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/651Multi-level translation tables
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/652Page size control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/657Virtual address space management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/68Details of translation look-aside buffer [TLB]
    • G06F2212/681Multi-level TLB, e.g. microTLB and main TLB
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/68Details of translation look-aside buffer [TLB]
    • G06F2212/682Multiprocessor TLB consistency
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/68Details of translation look-aside buffer [TLB]
    • G06F2212/683Invalidation
    • 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/0026PCI express

Landscapes

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

Abstract

Hierin beschriebene Ausführungsformen können Einrichtungen, Systeme, Techniken oder Prozesse beinhalten, die sich auf PCIe-Adressübersetzungsdienst (ATS) beziehen, um es Vorrichtungen zu ermöglichen, einen DevTLB zu haben, der Informationen zur Adressübersetzung (pro Seite) in Verbindung mit einem Vorrichtungs-ProcesslnfoCache (DevPIC) zwischenspeichert, der prozessspezifische Informationen speichert. Andere Ausführungsformen können beschrieben und/oder beansprucht werden.

Description

  • Diese Anmeldung beansprucht Priorität vor der vorläufigen US-Patentanmeldung Nr. 63/181,871 , eingereicht am 29. April 2021, im Namen von Rupin H. Vakharwala und Vedvyas Shanbhogue, mit dem Titel „Method And Device To Enable A Cache (DEVPIC) To Store Process Specific Information Inside Devices That Support Address Translation Service (ATS)“,deren Offenbarung hiermit durch Bezugnahme aufgenommen wird.
  • Technisches Gebiet
  • Ausführungsformen der vorliegenden Offenbarung betreffen allgemein das Gebiet der Datenverarbeitung, insbesondere das Speichern prozessspezifischer Informationen in einer Vorrichtung auf einem Bus.
  • Stand der Technik
  • Es gibt eine zunehmende Übernahme von Vorrichtungen, die den Adressübersetzungsdienst (ATS) einer PCIe-Architektur (Peripheral Component Interconnect Express) unterstützen. Genauer gesagt stellt ATS gemäß der PC[e-Basisspezifikationsversion 5.0 (2019) einen Satz von Transaktionen für PCIe-Komponenten bereit, um übersetzte Adressen zur Unterstützung einer nativen Eingabe/Ausgabe- bzw. E/A-Virtualisierung auszutauschen und zu verwenden. Es existieren jedoch immer noch Ineffizienzen.
  • Figurenliste
  • Ausführungsformen werden durch die folgende ausführliche Beschreibung in Verbindung mit den beigefügten Zeichnungen leicht verständlich. Um diese Beschreibung zu vereinfachen, bezeichnen gleiche Bezugszeichen gleiche Strukturelemente. Ausführungsformen sind in den Figuren der begleitenden Zeichnungen beispielhaft und nicht beschränkend veranschaulicht.
    • 1 ist ein Diagramm, das ein Beispiel für lineare Adressenmaskierung (LAM) zeigt.
    • 2 ist ein Diagramm, das einen gemeinsam genutzten virtuellen Speicher (SVM) und PCIe-ATS gemäß verschiedenen Ausführungsformen zeigt.
    • 3 ist ein Diagramm, das eine Kombination von LAM und SVM gemäß verschiedenen Ausführungsformen zeigt.
    • 4 ist ein Diagramm, das einen Vorrichtungsprozess-Cache (DevPIC) gemäß verschiedenen Ausführungsformen zeigt.
    • 5 ist ein Diagramm, das einen Prozessfluss für ATS-Erweiterungen gemäß verschiedenen Ausführungsformen zeigt.
    • 6 ist ein Diagramm, das einen Prozess zur DevPIC-Ungültigkeitserklärung gemäß verschiedenen Ausführungsformen zeigt.
    • 7 ist ein Diagramm, das ein Beispiel für eine Anforderungsnachricht zur Ungültigkeitserklärung gemäß verschiedenen Ausführungsformen zeigt.
    • 8 ist ein Diagramm, das ein Beispiel für den Text einer Anforderungsnachricht zur Ungültigkeitserklärung gemäß verschiedenen Ausführungsformen zeigt.
    • 9 ist ein Flussdiagramm eines Verfahrens gemäß einer Ausführungsform.
    • 10 ist eine Ausführungsform einer Struktur, die aus Punkt-zu-Punkt-Verbindungen besteht, die einen Satz von Komponenten miteinander verbinden.
    • 11 ist ein Blockdiagramm eines Systems gemäß einer anderen Ausführungsform der vorliegenden Erfindung.
    • 12 ist ein Blockdiagramm eines Systems gemäß einer anderen Ausführungsform der vorliegenden Erfindung.
  • Ausführliche Beschreibung
  • Hierin beschriebene Ausführungsformen können Einrichtungen, Systeme, Techniken und/oder Prozesse beinhalten, die darauf gerichtet sind, einem Cache zu ermöglichen, prozessspezifische Informationen innerhalb von Vorrichtungen zu speichern, die ATS unterstützen. Bei älteren Implementierungen existieren linear Adressmaskierung (LAM) und gemeinsam genutzter virtueller Speicher (SVM) möglicherweise nicht nebeneinander, und Software macht sie bei diesen Implementierungen gegenseitig ausschließend, sodass Benutzer eines, aber nicht beide verwenden können. Hierin beschriebene Ausführungsformen ermöglichen Benutzern, sowohl LAM als auch SVM zusammen zu verwenden und Vorteile beider Merkmale zu erhalten.
  • Ältere Implementierungen können Aufbauen einer softwarebasierten Lösung beinhalten, bei der Software erforderliche Adressmaskierung durchführen kann, bevor eine beliebige Adresse an eine SVM-Vorrichtung übermittelt wird. Ein solcher Ansatz ist jedoch wahrscheinlich für einen Superbenutzer, wie etwa einen Cloud-Dienstanbieter, der den gesamten Softwarestapel steuert, reserviert und ist wahrscheinlich für die meisten Benutzer nicht praktikabel. Außerdem ermöglichen diese älteren Implementierungen möglicherweise nur Anwendungen, die LAM nicht ermöglichen, SVM-Vorrichtungen zu verwenden. Da LAM-Aktivierung frühzeitig stattfindet, ist es wahrscheinlich, dass SVM für solche Anwendungen nicht ermöglicht wird. Die Kosten der Softwarearbeit zum Säubern von Zeigern sind recht hoch, was auch die Übernahme von SVM verhindert.
  • Bei hierin beschriebenen Ausführungsformen ermöglicht ein PCIe-Adressübersetzungsdienst (ATS), dass Vorrichtungen einen Vorrichtungsübersetzungspuffer (DevTLB) (auch bekannt als Adressübersetzungs-Cache (ATC)) aufweisen, der Adressübersetzungsinformationen (pro Seite) zwischenspeichert. Hierin beschriebene Ausführungsformen können das Hinzufügen eines Speichers, der als ein dedizierter Cachespeicher implementiert sein kann, zum Speichern prozessspezifischer Informationen beinhalten. Bei einer Implementierung wird dieser Cache-Speicher als ein Vorrichtungs-ProcesslnfoCache (DevPIC) bezeichnet, der prozessspezifische Informationen speichert. Bei Ausführungsformen können zusätzliche Informationselemente, die als „Domänen-ID“ bezeichnet werden können, prozessspezifisch für Vorrichtungen sein, was eine Reduzierung der Latenz des Ungültigerklärens von DevTLBs in Vorrichtungen ermöglichen und dadurch die Leistungsfähigkeit verbessern würde.
  • Bei manchen Ausführungsformen können aufgrund des SVM sowohl eine zentrale Verarbeitungseinheit (CPU) als auch/oder andere Verarbeitungseinheiten (XPU) eine ähnliche Adressübersetzungs-/Manipulationsinfrastruktur aufweisen, die erfordern kann, dass andere prozessspezifische Informationen an die XPU (oder die Vorrichtung) gesendet werden. Hierin beschriebene Ausführungsformen können eine grundlegende Infrastruktur für Hardware zum Senden prozessspezifischer Informationen an die XPU und Software zum Verwalten der an der XPU gespeicherten prozessspezifischen Informationen bereitstellen.
  • In der folgenden Beschreibung werden verschiedene Aspekte der veranschaulichenden Implementierungen unter Verwendung von Begriffen beschrieben, die üblicherweise von Fachleuten verwendet werden, um anderen Fachleuten die Substanz ihrer Arbeit zu übermitteln. Es wird jedoch für einen Fachmann offensichtlich, dass Ausführungsformen der vorliegenden Offenbarung mit nur manchen der beschriebenen Aspekte umgesetzt werden können. Zu Erklärungszwecken sind spezielle Zahlen, Materialien und Konfigurationen dargelegt, um ein umfassendes Verständnis der veranschaulichenden Implementierungen zu vermitteln. Es versteht sich für einen Fachmann, dass Ausführungsformen der vorliegenden Offenbarung ohne die spezifischen Einzelheiten umgesetzt werden können. In anderen Fällen werden wohlbekannte Merkmale weggelassen oder vereinfacht, um die veranschaulichenden Implementierungen nicht einzutrüben.
  • Bei Ausführungsformen kann ein System-on-a-Chip (SoC) ankündigen, dass seine Eingabe/Ausgabe-Speicherverwaltungseinheit (IOMMU) hierin beschriebene Ausführungsformen implementiert. Zusätzlich können Ausführungsformen in Architekturspezifikationen einer IOMMU oder eines anderen Übersetzungsmechanismus dokumentiert werden. Bei Ausführungsformen kann eine PCIe-Vorrichtung die Fähigkeit verschiedener Ausführungsformen in ihrem Konfigurationsraum ankündigen. Außerdem kann programmierbares Aktivieren und Deaktivieren der hier beschriebenen Strukturen und Techniken auftreten, so dass ein System diese Merkmale dynamisch aktivieren und deaktivieren kann, wie für einen gegebenen Verwendungsfall und/oder eine gegebene Arbeitslast angemessen. LAM stellt zum Beispiel Software mit zusätzlicher Sicherheitsfähigkeit bereit, was aber mit assoziiertem Leistungs-Overhead einhergeht. Wenn eine höhere Leistungsfähigkeit wichtiger ist als die zusätzliche Sicherheit, die durch LAM bereitgestellt wird, kann sich Software entscheiden, LAM und daher DevPIC nicht zu aktivieren.
  • In der folgenden ausführlichen Beschreibung wird Bezug auf die begleitenden Zeichnungen genommen, die einen Teil hiervon bilden, wobei gleiche Ziffern durchweg gleiche Teile kennzeichnen, und in denen durch Veranschaulichung Ausführungsformen gezeigt werden, in denen der Gegenstand der vorliegenden Offenbarung umgesetzt werden kann. Es versteht sich, dass andere Ausführungsformen genutzt und strukturelle oder logische Änderungen vorgenommen werden können, ohne den Schutzumfang der vorliegenden Offenbarung zu verlassen. Daher ist die folgende ausführliche Beschreibung nicht in einem beschränkenden Sinn aufzufassen, und der Schutzumfang der Ausführungsformen wird durch die beigefügten Ansprüche und ihre Äquivalente definiert.
  • Im Rahmen der vorliegenden Offenbarung bedeutet die Phrase „A und/oder B“ so viel wie (A), (B) oder (A und B). Im Rahmen der vorliegenden Offenbarung bedeutet die Phrase „A, B und/oder C“ so viel wie (A), (B), (C), (A und B), (A und C), (B und C) oder (A, B und C).
  • Die Beschreibung kann perspektivisch basierte Beschreibungen verwenden, wie etwa oben/unten, innen/außen, über/unter und dergleichen. Solche Beschreibungen werden lediglich zur Erleichterung der Diskussion verwendet und sollen die Anwendung der hier beschriebenen Ausführungsformen nicht auf eine bestimmte Orientierung beschränken.
  • In der Beschreibung können die Ausdrücke „bei einer Ausführungsform“ oder „bei Ausführungsformen“ verwendet werden, die sich jeweils auf eine oder mehrere derselben oder unterschiedlicher Ausführungsformen beziehen können. Darüber hinaus sind die Begriffe „umfassend“, „beinhaltend“, „aufweisend“, und dergleichen, wie mit Bezug auf Ausführungsformen der vorliegenden Offenbarung verwendet, gleichbedeutend.
  • Der Begriff „gekoppelt mit“ kann hierin zusammen mit seinen Ableitungen verwendet werden. „Gekoppelt“ kann eine oder mehrere der folgenden Bedeutungen haben. „Gekoppelt“ kann bedeuten, dass sich zwei oder mehr Elemente in direktem physischen oder elektrischen Kontakt befinden. „Gekoppelt“ kann jedoch auch bedeuten, dass zwei oder mehr Elemente sich indirekt berühren, aber dennoch miteinander zusammenwirken oder interagieren, und kann bedeuten, dass ein oder mehrere andere Elemente zwischen den Elementen gekoppelt oder verbunden sind, die als miteinander gekoppelt bezeichnet werden. Der Begriff „direkt gekoppelt“ kann bedeuten, dass zwei oder mehr Elemente in direktem Kontakt stehen.
  • So wie hier verwendet, kann sich der Begriff „Modul“ auf eine anwendungsspezifische integrierte Schaltung (ASIC), eine elektronische Schaltung, einen Prozessor (gemeinsam genutzt, dediziert oder als Gruppe) und/oder einen Speicher (gemeinsam genutzt, dediziert oder als Gruppe) beziehen, Teil davon sein oder solches beinhalten, der/die ein oder mehrere Software oder Firmware-Programme, eine kombinatorische Logikschaltung und/oder andere geeignete Komponenten, die die beschriebene Funktionalität bereitstellen, ausführen.
  • 1 ist ein Diagramm, das ein Beispiel für LAM zeigt. Ältere CPUs prüfen alle virtuellen Adressbits (vor der Adressübersetzung), um sicherzustellen, dass die Adresse kanonisch ist, dass z. B., b63... b56 (für ein Seitentabellensystem mit 5 Ebenen) den gleichen Wert aufweisen (alles Nullen oder alles Einsen). Moderne Software möchte manche Metadaten in jene kanonischen Adressbits einbetten, wie in 1 gezeigt. Jeder Softwareprozess informiert die CPU über einen Ort der Metadatenbits, und die CPU maskiert diese Bits, bevor sie die Adresse für Adressübersetzung sendet. Die kanonische Prüfung wird immer noch durchgeführt, aber nur an dem/den nicht-maskierten Bit(s). Im Fall von 1 wird die kanonische Prüfung nur an b63 und b56 durchgeführt.
  • Somit zeigt 1 einen Teil eines Prozessors zum Durchführen einer kanonischen Prüfung von Adressen. Insbesondere in 1 beinhaltet ein Prozessor 100 eine kanonische Prüfschaltung 105 zum Prüfen mindestens gewisser oberer Bits einer Adresse, um zu bestätigen, dass die Adresse kanonisch ist. Wie ferner in 1 gezeigt, beinhaltet eine lineare oder virtuelle Adresse 110 in typischen Situationen einen Adressabschnitt, der z. B. 56 Bits und ein oberer Abschnitt mit einem vorbestimmten Wert von 0 sein kann (Bits b56-b63). Wie hierin verwendet, beziehen sich die Begriffe „linear“, „logisch“ und „virtuell“ alle auf softwarebereitgestellte Adressen, im Gegensatz zu tatsächlichen physischen Adressen in einem Speicher.
  • Wie ferner in 1 gezeigt, kann eine andere lineare Adresse 120 eine lineare Adressmaskierung angewendet haben, wobei Metadaten, wie sie von einer gegebenen Software bereitgestellt werden, in mindestens einem Abschnitt dieser oberen Adressbits enthalten sein können. Insbesondere, wie gezeigt, beinhaltet die lineare Adresse 120 Metadaten in den oberen Adressbits b62-b57. Wie gezeigt, werden zum Durchführen einer kanonischen Prüfung an der Adresse 120 nur die oberen Adressbits 63 und 56 an die kanonische Prüfschaltung 105 angewendet.
  • Zum Zwecke des Durchführens von Adressübersetzungen sollen diese Metadaten nicht verwendet werden. Dementsprechend kann eine Maske 130, hier als LAM bezeichnet, verwendet werden, um die Metadaten zu maskieren, um eine transformierte Adresse 140 zu bilden, die der Adressübersetzungs-Schaltungsanordnung bereitgestellt werden kann. Wie man sieht, werden durch diese Maskierungsoperation alle kanonischen Bits (z. B., b63-b56) auf denselben Wert, logisch 0, gesetzt, so dass sie für Adressübersetzungszwecke verwendet werden können.
  • Gemeinsam genutzter virtueller Speicher (SVM)
  • 2 ist ein Diagramm, das einen gemeinsam genutzten virtuellen Speicher (SVM) und PCIe-ATS gemäß verschiedenen Ausführungsformen zeigt. Ältere Computer sind heterogene Systeme, die universelle CPUs mit spezialisierten XPUs kombinieren. Solche Systeme beginnen, SVM zu unterstützen, wobei Anwendungen, die auf CPUs laufen, unter Verwendung virtueller Adressen Arbeit an XPUs übermitteln und erwarten, dass XPUs in der Lage sind, unter Verwendung virtueller Adressen Speicher genauso zu manipulieren wie die CPU. Unter Verwendung der durch virtuelle Maschinen (VMs) und Virtuelle-Maschinen-Monitore (VMMs) eingerichteten Seitentabellen übersetzen Speicherverwaltungseinheiten (MMUs) virtuelle Adressen (VA) in physische Adressen (PA) für CPUs, und IOMMUs übersetzen virtuelle Adressen in physische Adressen für XPUs, wie in 2 gezeigt. SVM ermöglicht CPUs und XPUs, komplexe Datenstrukturen (z. B. Bäume) im Speicher ohne unnötiges Datenkopieren zu manipulieren. SVM ermöglicht es XPUs auch, Seitenfehler zu behandeln, wodurch die Anforderung entfernt wird, dass XPUs ihren Speicher fixieren und dadurch, zum Beispiel, eine viel größere Arbeitssatzgröße aufweisen.
  • In der Ausführungsform von 2 kann ein Computersystem 200 eine beliebige Art von Datenverarbeitungsplattform sein, die von kleinen tragbaren Vorrichtungen, wie etwa Smartphones, Tablet-Computern und so weiter, zu größeren Vorrichtungen, wie etwa Client-Systemen, z. B. Desktopsystemen, Serversystemen und so weiter reicht. Wie gezeigt, beinhaltet das System 200 mehrere CPUs 2100-210N. Die CPUs 210 kommunizieren mit einem Speicher 220, der als ein SVM implementiert sein kann, der ferner mit einem Satz von Vorrichtungen 2300 bis 230n gemeinsam genutzt wird. Obwohl sie generisch in 2 als XPUs gezeigt sind, versteht es sich, dass viele verschiedene Arten von Vorrichtungen, wie etwa verschiedene PCIe- oder andere solche Vorrichtungen, in einem gegebenen System vorhanden sein können. Wie ferner gezeigt, stellt ein Root-Komplex 240 eine Schnittstelle zwischen dem Speicher 220 und den XPUs 230 bereit.
  • Wie in der hohen Ebene von 2 veranschaulicht, können die CPUs 210 einen Prozessorkomplex (allgemein 212) beinhalten, der einen oder mehrere Kerne oder andere Verarbeitungsengines beinhalten kann. Wie zu sehen ist, kann Software, die auf diesen Verarbeitungseinheiten ausgeführt wird, VAs ausgeben, die einem Übersetzungspuffer (TLB) 214 bereitgestellt werden können. Im Allgemeinen können die TLBs 214 VA-zu-PA-Adressen und potenziell zusätzliche Informationen puffern. Eine solche Zwischenspeicherungsfähigkeit kann im Namen einer Speicherverwaltungseinheit (MMU) 216 sein, die einen größeren Satz von Adressübersetzungen mittels einer Multi-Level-Seitentabellenstruktur beinhalten kann. Zusätzlich dazu kann die MMU 216 ferner eine Seitenfehlerbehandlungsschaltungsanordnung beinhalten, um Adressübersetzungen, z. B. aus dem Speicher 220 zu erhalten, wenn nicht vorhanden.
  • Auf ähnliche Weise beinhaltet der Root-Komplex 240 eine andere MMU, nämlich eine IOMMU 242, die Adressübersetzungen im Namen der XPUs 230 speichern kann. Wie gezeigt, können folglich Übersetzungsanfragen in dem Root-Komplex 240 von gegebenen XPUs 230 empfangen werden, und im Gegenzug stellt die IOMMU 242 eine physische Adresse bereit. Solche Übersetzungen können in einem TLB innerhalb der XPU 230, nämlich einem DevTLB 232, gespeichert werden. Dann kann eine XPU mit dieser physischen Adresse eine Speicheranforderung (z. B. Lesen oder Schreiben) an den Speicher 220 mit einer gegebenen physischen Adresse senden. Es ist anzumerken, dass bei unterschiedlichen Implementierungen der Root-Komplex 240 eine separate Komponente sein kann oder in einem SoC mit einer oder mehreren gegebenen CPUs vorhanden sein kann.
  • Bei unterschiedlichen Ausführungsformen kann eine Zwischenverbindung 235, die die XPUs 230 mit dem Root-Komplex 240 koppelt, Kommunikation gemäß einem oder mehreren Kommunikationsprotokollen, wie etwa, beispielsweise, PCle, Compute Express Link (CXL) (wie etwa einem CXL.io-Protokoll) oder einem integrierten On-Chip-skalierbaren Fabric (IOSF), bereitstellen.
  • Eine der vielen Herausforderungen, vor denen ältere XPUs stehen, wenn versucht wird, SVM auszunutzen, besteht darin, einen PCIe-ATS aufzubauen. ATS ermöglichen es XPUs, Adressübersetzungen von der IOMMU (auch Übersetzungsagent, TA) anzufordern und die Ergebnisse in einem Übersetzungs-Cache, DevTLB (auch Adressübersetzungs-Cache (ATC) oder Vorrichtungs-TLB) zwischenzuspeichern. DevTLB entkoppelt die Übersetzungs-Cache-Anforderung von XPUs von den Übersetzungs-Caches, die in der Root-Komplex-IOMMU verfügbar sind. SVM ermöglicht CPUs und XPUs, einen virtuellen Speicher gemeinsam zu nutzen.
  • LAM + SVM
  • 3 ist ein Diagramm, das eine Kombination von LAM und SVM gemäß verschiedenen Ausführungsformen zeigt. CPUs innovieren und entwickeln weiterhin Technologien, die Adressmanipulationen/Übersetzungen ändern. Wenn XPUs virtuellen Speicher mit CPUs gemeinsam nutzen, besteht ein Vorteil für XPUs, die hierin beschriebene Ausführungsformen implementieren. Außerdem ist eine Technologie, die auf älteren CPUs implementiert wird, der LAM.
  • Wie oben beschrieben, ermöglicht LAM Anwendungen, manche Metadaten in obere Adressbits einzubetten, die zuvor entweder alle Nullen oder alle Einsen sein müssen. CPUs maskieren jedoch die Metadateninformationen aus diesen oberen Adressbits, wie in 3 gezeigt, wandeln die Adresse in eine kanonische Form um (z. B., alle oberen Bits Nullen oder Einsen) und unterziehen dann die Adresse einer Adressübersetzung. Da Anwendungen eine Adresse mit Metadaten an XPUs senden, müssen die XPUs bei Ausführungsformen möglicherweise auch Informationen über die Maske in Verbindung mit dem relevanten CPU-Prozess bei der IOMMU anfordern, und können dann dieselbe Maske verwenden, um notwendige Metadatenentfernung auszuführen, bevor Adressübersetzung ausgeführt wird. Hierin beschriebene Ausführungsformen können sich auf das Erweitern der PCIe-ATS-Spezifikation beziehen, um XPUs zu ermöglichen, prozessspezifische Informationen (z. B. eine lineare Adressmaske) zwischenzuspeichern.
  • Somit kann, wie in 3 gezeigt, ein Computersystem 300 allgemein die gleiche Form wie in 2 gezeigt annehmen (und somit weisen ähnliche Komponenten die gleiche Nummerierung wie in 2 auf, aber mit der „300“-Serie). Hier sei auf die Anwesenheit von Maskierungsschaltungsanordnung 313 und 333 hingewiesen. Eine solche Schaltungsanordnung kann logische Operationen zwischen einer Maske, wie etwa einer linearen Adressmaske, wie hier beschrieben, und einer linearen Adresse durchführen, um eine lineare Adresse in korrekter kanonischer Form zu erhalten, um zu ermöglichen, dass Übersetzungen durchgeführt werden. Außerdem beinhalten die XPUs 330 ferner einen Cache-Speicher zum Speichern prozessspezifischer Informationen, nämlich einen Vorrichtungsprozessinformations-Cache (DevPIC) 335, der die lineare Adressmaske in Verbindung mit einem Prozess speichert und für die Maskierungsschaltungsanordnung 313, 333 bereitstellt. In anderen Aspekten kann das System 300 ähnlich dem oben beschriebenen System 200 konfiguriert sein.
  • Vorrichtungs-ProcesslnfoCache (DevPIC)
  • 4 ist ein Diagramm, das einen Vorrichtungsprozess-Cache (DevPIC) gemäß verschiedenen Ausführungsformen zeigt. Die PCIe-ATS-Spezifikation ermöglicht es Vorrichtungen (z. B. XPUs), einen DeviceTLB (auch ATC) einzubetten. Hierin beschriebene Ausführungsformen können Techniken beinhalten, bei denen Vorrichtungen einen DevPlC zum Speichern prozessspezifischer Informationen beinhalten. Eine Ausführungsform könnte wie in 4 gezeigt sein. Die Vorrichtung kann eine ATS-Erweiterung verwenden, die hierin mit Bezug auf 5 beschrieben ist, um Informationen darüber abzurufen, welche virtuellen Adressbits aus der IOMMU zu maskieren sind, und sie in einem Cache zu speichern, der durch Prozess-ID (PASID) indexiert ist. Bevor der DevTLB nach Adressübersetzung durchsucht werden kann, erhält die Vorrichtung die Adressmaske in Verbindung mit dem Prozess und maskiert Metadatenbits aus einer virtuellen Adresse, die durch Software bereitgestellt wird. Die Masken, die von einem Prozess verwendet werden, um auf Benutzer- und Kernelraum zuzugreifen, können unterschiedlich sein. Ein industrieweiter Mechanismus kann entwickelt werden, sodass jede Plattform eine Vorrichtung (z. B. durch Programmieren einiger Register im PCIe-Konfigurationsraum) informieren kann, wie die Vorrichtung bestimmen kann, ob eine Adresse ein Benutzer- oder Kernelraum ist. Eine Ausführungsform eines solchen Mechanismus könnte sein, dass Systemsoftware die Vorrichtung informiert, b63 der Adresse zu verwenden, um zu bestimmen, ob es sich um einen Zugriff auf einen Kerneladressraum (b63=1) oder einen Benutzeradressraum (b63=0) handelt. In Ausführungsformen kann dieses Bit als Bit-KAS (Kerneladressraum) bezeichnet werden, und es kann zusammen mit PASID zum Durchsuchen des DevPIC verwendet werden.
  • Die einfachste Implementierung eines DevPIC kann eine Adressmaske als einen Rohbitvektor von N Bits speichern, um eine Vielfalt von CPUs zu unterstützen, die LAM auf leicht unterschiedliche Weisen implementieren können. In Ausführungsformen kann diese Maske als ein codierter Wert unter Verwendung von M Bits (M=log2(N)) ausgedrückt werden. Falls CPUs zum Beispiel Metadatenbits in b62... b48 unterstützen, dann benötigt das Codieren des Maximalwerts von 15 nur 4 Speicherbits in DevPlC. In Ausführungsformen muss DevPIC die Maske nicht in der Form speichern, die sie empfängt. Falls die Industrie zu M möglichen Masken tendiert, dann können die empfangenen Informationen immer noch einen voll erweiterten X-Bit-Vektor für zukünftige Erweiterbarkeit verwenden, aber DevPIC kann die Y Möglichkeiten unter Verwendung von log2(Y) Bits codieren und die Speicherungsanforderung reduzieren. Solche DevPIC können inkompatibel werden, falls die ATS-Spezifikation erweitert wird, um neue Masken zu unterstützen. 4 zeigt ein Beispiel für DevPIC in einem System, wobei b63 verwendet wird, um Benutzer- ggü. Kernel-Raum zu identifizieren, wobei b62... b48 oder b62... b57 verwendet werden können, um Metadaten zu enthalten, und wobei die Maske ein 15bit-Bit-Vektor ist.
  • In jedem Fall, wie in 4 gezeigt, beinhaltet eine Vorrichtung 400, wie etwa eine gegebene XPU oder eine andere PCIe-Peripherievorrichtung, einen Adressübersetzungs-Cache 410 mit mehreren Einträgen 4120- 412n. Wie zu sehen ist, beinhaltet jeder Eintrag 412 ein Feld zum Speichern einer VA und ein anderes Feld zum Speichern einer physischen Host-Adresse (HPA). Es ist anzumerken, dass, obwohl mit diesen beschränkten Informationen gezeigt, zusätzliche Informationen in einem Vorrichtungs-TLB gespeichert werden können, wie etwa Fähigkeitsinformationen, umfassend, in einer Ausführungsform, R - Lesen erlaubt; W - Schreiben erlaubt; U - Nur unübersetzter Zugriff; Priv - Zugriff im bevorzugten Modus; Exe - Ausführung erlaubt; Global - globale Abbildung; N - Zugriff ohne Snoop; S - Größe der Übersetzung.
  • Immer noch unter Bezugnahme auf 4 weist die Vorrichtung 400 ferner einen Prozessinformations-Cache (PIC) 420 auf. Wie veranschaulicht, beinhaltet die PIC 420 mehrere Einträge 4220 - 422n. Jeder Eintrag 422 kann Felder zum Speichern von Informationen aufweisen, die eine Prozessadressraumkennung (PASID), einen Kerneladressraum- bzw. KAS-Indikator und Prozessinformationen beinhalten, die verschiedene Arten von prozessspezifischen Informationen sein können, die für einen gegebenen Verwendungsfall relevant sind. Im Beispiel von 4 kann die PASID-KAS-Kombination verwendet werden, um auf eine gegebene prozessspezifische Information eines Eintrags zuzugreifen.
  • In dem in 4 gezeigten Beispiel können diese Prozessinformationen in Form einer Adressmaske, z. B. eines LAM, wie hierin beschrieben, vorliegen. Es versteht sich, dass unterschiedliche oder zusätzliche Informationen (wie etwa eine Domänen-ID oder andere prozessspezifische Informationen) auch in diesem oder einem anderen Feld innerhalb der Einträge gespeichert sein können. Obgleich bei der Ausführungsform von 4 auf dieser hohen Ebene gezeigt, versteht sich, dass viele Variationen und Alternativen möglich sind.
  • ATS-Erweiterung für DevPIC
  • 5 ist ein Diagramm, das einen Prozessfluss für ATS-Erweiterungen gemäß verschiedenen Ausführungsformen zeigt. Insbesondere zeigt 5 Interaktion zwischen diversen Vorrichtungen eines Systems 500, das einen Speicher 510 beinhaltet, der bei einer Ausführungsform ein SVM, eine IOMMU 520 und Bauelemente innerhalb einer gegebenen Vorrichtung, wie etwa einer PCIe-Vorrichtung, sein kann. In der gezeigten Ausführungsform beinhalten diese Komponenten einen DevTLB 530, einen DevPIC 540 und einen DevCore 550, die einen universellen Verarbeitungskern oder eine beliebige andere Verarbeitungsengine der Vorrichtung sein können. Allgemein zeigt 5 verschiedene Operationen zum Erhalten einer physischen Host-Adresse (HPA) für eine gegebene virtuelle Adresse, die dann zum Durchführen eines Speicherzugriffs auf den Speicher 510 verwendet werden kann.
  • Im Allgemeinen verwendet eine Vorrichtung eine Übersetzungsanforderung (Translation_Req), um eine Abbildung einer VA zu einer physischen Host-Adresse (HPA) von der IOMMU abzurufen und das Ergebnis in DevTLB zu speichern. In Ausführungsformen, in denen Software die Abbildung ändert, kann erwartet werden, dass sie eine DevTLB-Ungültigkeitserklärung an jede Vorrichtung ausgibt, die eine veraltete Abbildung aufweisen kann. Ausführungsformen können ähnliche Erweiterungen zum Stützen des DevPIC beinhalten. Für jeden Speicherzugriff schaut sich die Vorrichtung zuerst DevPIC unter Verwendung, z. B., einer Busvorrichtungsfunktion (BDF), PASID und KAS an und versucht, die Maske in Verbindung mit dem Prozess zu finden, so dass sie die Maske auf die VA anwenden kann. Bei einem DevPIC-Fehltreffer gibt die Vorrichtung eine Anforderung, Processlnfo_Req, an die IOMMU aus, die BDF, PASID und KAS trägt. Die IOMMU verwendet Informationen in der ProcessInfo_Req, um in Informationen zu indexieren, die durch Systemsoftware (in einem Speicher oder Registern) bereitgestellt werden, um zu bestimmen, welche Bits von VA maskiert werden sollten, und stellt die Maske in einem Abschluss, Processlnfo_Cmpl, zurück für die Vorrichtung bereit.
  • Die Vorrichtung zwischenspeichert die Maske in DevPIC, wie mit Bezug auf 4 beschrieben. In Ausführungsformen verwendet die Vorrichtung die Maske, um Metadatenbits aus der VA zu entfernen, und kann dann die gesäuberte VA verwenden, um den DevTLB zu durchsuchen. Danach kann sich die Vorrichtung genauso verhalten wie es bei herkömmlichen ATS der Fall ist. Es ist anzumerken, dass bei Ausführungsformen ProcessInfo_Req nur bei einem DevPIC-Fehltreffer ausgegeben wird, was typischerweise nur bei dem ersten Speicherzugriff durch die Vorrichtung im Namen eines neuen Prozesses geschieht. Sobald DevPIC gefüllt ist, und falls der Eintrag aufgrund von Kapazitätsbeschränkungen nicht geräumt wird, treffen alle nachfolgenden Speicherzugriffe durch die Vorrichtung für den Prozess auf DevPIC und leiden nicht unter dem Overhead von Processlnfo_Req. Somit kann sich mit einem angemessen dimensionierten DevPIC ein lediglich geringer Leistungs-Overhead aus diesen Erweiterungen des ATS-Protokolls ergeben.
  • 6 ist ein Diagramm, das einen Prozess zur DevPIC-Ungültigkeitserklärung gemäß verschiedenen Ausführungsformen zeigt. Wenn Software den Ort von Metadatenbits für einen Prozess ändert, entfernt sie veraltete Informationen, die in DevPlC zwischengespeichert sind, indem sie einen Ungültigkeitserklärungsbefehl an DevPIC ausgibt. Wenn sich ein Ort von Metadatenbits für einen Prozess ändert, können alle Einträge, die in DevTLB für diesen Prozess zwischengespeichert sind, auch unbrauchbar werden, und Software kann eine traditionelle DevTLB-Ungültigkeitserklärung zum Ungültigerklären von DevTLB ausgeben. Um eine Bestätigung zu erhalten, dass DevTLB veraltete Informationen für ungültig erklärt hat, gibt ältere Software auch einen Befehl Invalidation_Wait an die IOMMU aus und wartet auf eine Bestätigung (Aktualisierung eines Flags im Speicher oder Interrupt) von der IOMMU. Da in diesem Fall auf die DevPIC-Ungültigkeitserklärung immer eine DevTLB-Ungültigkeitserklärung folgt und da die DevTLB-Ungültigkeitserklärung heutzutage zum Entleeren ausstehender veralteter Transaktionen führt, gibt es bei Ausführungsformen keinen Grund dafür, dass der DevPIC-Ungültigkeitserklärungsabschluss ausstehende nicht-gepostete (NP) Transaktionen entleert. Erweiterungen des Ungültigkeitserklärungsprotokolls für DevPIC sind in 6 hervorgehoben.
  • In Ausführungsformen kann die DevPIC-Ungültigkeitserklärungsnachricht die folgenden Informationen tragen: (1) BDF: was das gleiche sein kann wie bei älterer DevTLB-Ungültigkeitserklärung; (2) Itag: was das gleiche sein kann wie bei älterer DevTLB-Ungültigkeitserklärung; (3) PASID: was das gleiche sein kann wie bei älterer DevTLB-Ungültigkeitserklärung; (4) S (Größe): DevTLB-Ungültigkeitserklärung ermöglicht eine Ungültigkeitserklärung eines zusammenhängenden Adressbereichs, wobei das S-Bit angibt, dass mehrere zusammenhängende PASIDs unter Verwendung eines einzigen Ungültigkeitserklärungsbefehls für ungültig erklärt werden sollten; (5) KAS: Ungültigerklären eines Processlnfo-Eintrags in Verbindung mit dem Kerneladressraum; und/oder (7) UAS: Ungültigerklären des Processlnfo-Eintrags in Verbindung mit dem Benutzeradressenraum. Anmerkung: Falls KAS=UAS=0, behandelt die Vorrichtung die Ungültigkeitserklärung als Nop, und sollte ohne Durchführen irgendeiner Ungültigkeitserklärung von DevPlC DevPIC_InvalCmpl ausgeben.
  • Obwohl DevPIC verwendet werden kann, um eine Adressmaske zu speichern, kann es andere prozessspezifische Informationen geben, die in DevPlC zwischengespeichert werden können. Solche Informationen können auch verwendet werden, um DevTLB-Einträge zu kennzeichnen. Somit schließen die Vorrichtungen bei Ausführungsformen eine DevPIC-Ungültigkeitserklärung ab, bevor sie eine folgende DevTLB-Ungültigkeitserklärung starten. Vorrichtungen stellen auch sicher, dass der Abschluss einer DevTLB-Ungültigkeitserklärung für eine gegebene DevTLB-Ungültigkeitserklärung alle DevPIC-Ungültigkeitserklärungsabschlüsse schiebt, die durch DevPIC-Ungültigkeitserklärungen vor der DevTLB-Ungültigkeitserklärung ausgegeben wurden.
  • Softwaresequenz zum Ändern des LAM in Verbindung mit einem Prozess
  • In verschiedenen Ausführungsformen führt Software die folgenden Schritte durch, bevor sie den Metadatenbitort in Verbindung mit dem Prozess ändern kann:
    • i) Falls der Prozess auf CPU und/oder XPU läuft, wird der Prozess stillgelegt, z. B. ist der Prozess nicht in der Lage, irgendeine neue Arbeit an CPU und/oder XPU zu übermitteln.
    • ii) Eine Schnittstelle, die Software ermöglicht, XPUs abzufragen, dass alle Anforderungen von einem spezifischen Prozess in die geordnete Domäne geschoben wurden. Eine solche Anforderung hat möglicherweise keinen globalen Beobachtungspunkt erreicht.
    • iii) Software kann eine Ungültigkeitserklärung an die IOMMU ausgeben, um Caches für ungültig zu erklären, die Processlnfo speichern (für Intel VT-d-Architektur ist ein solcher Cache als PASID-Cache bekannt).
    • iv) Software kann eine DevPIC-Ungültigkeitserklärung an alle Vorrichtungen ausgeben, die den Prozess ausgeführt haben können.
    • v) Software kann eine Ungültigkeitserklärung an die IOMMU ausgeben, um TLBs für ungültig zu erklären, die Übersetzung für den Prozess speichern.
    • vi) Software kann eine DevTLB-Ungültigkeitserklärung an alle Vorrichtungen ausgeben, die den Prozess ausgeführt haben können.
    • vii) Software kann eine Bestätigung von der IOMMU anfordern, dass alle ausstehenden DevTLB-Ungültigkeitserklärungen abgeschlossen sind.
    • viii) Nach diesem Operationsablauf kann Software die Garantie haben, dass alle Transaktionen aus dem Prozess, der stillgelegt wurde, eine globale Beobachtung erreicht haben.
    • ix) Software kann nun den Ort von Metadatenbits ändern und dann den Prozess neu starten.
  • Andere Verwendung für DevPIC
  • Eine DevTLB-Ungültigkeitserklärungsanforderung kann eine Nachricht und Nutzdaten (z. B. 64-Bit-Nutzdaten) beinhalten. 7 ist ein Diagramm, das ein Beispiel für eine Anforderungsnachricht zur Ungültigkeitserklärung gemäß verschiedenen Ausführungsformen zeigt. Allgemein beinhaltet Nachricht 700 ein Format gemäß einer gegebenen PCIe-Spezifikation, einschließlich verschiedener Header-Felder, Anforderer- und Vorrichtungskennungen und so weiter. 8 ist ein Diagramm, das ein Beispiel für den Text einer Anforderungsnachricht zur Ungültigkeitserklärung gemäß verschiedenen Ausführungsformen zeigt. Wie in 8 gezeigt, kann der Nachrichtentext 800 64 Bits beinhalten und kann eine nicht übersetzte Adresse und ein S-Bit zum Identifizieren einer Größe beinhalten. Wie ferner gezeigt, bewirkt ein globales Ungültigkeitserklärungsbit, wenn gesetzt, dass Seiten, die mit der unübersetzten Adresse übereinstimmen (oder Seiten in der Region, die bei der unübersetzten Adresse beginnt, wenn das S-Bit gesetzt ist), für alle PASIDs für ungültig erklärt werden. Es ist anzumerken, dass in einigen Ausführungsformen, wenn dieses Bit null ist, nur Übersetzungen für ungültig erklärt werden können, die mit der unübersetzten Adresse und der spezifischen PASID (die in dem PASID-TLP-Präfix bereitgestellt sind, das an die Ungültigkeitserklärungsnachricht angehängt ist) übereinstimmen.
  • Wie zuvor erwähnt, ist in Ausführungsformen die Verwendung von DevPIC nicht auf das Speichern einer Adressmaske für LAM beschränkt. Es handelt sich um generische Infrastruktur, die zum Speichern beliebiger prozessspezifischer Informationen verwendet werden kann. Ein anderes Beispiel besteht darin, eine Domänen-ID (VM-ID), die eine VM identifiziert, in dem DevPIC zu speichern. Wenn die IOMMU Processlnfo_Req zusätzlich zu der Maske empfängt, stellt sie auch die Domänen-ID für den DevPIC bereit. Bei einem DevPIC-Treffer erhält die Vorrichtung die Domänen-ID und speichert sie in dem Puffer, der auf den Empfang von Translation_Cmpl wartet. Wenn Translation_Cmpl von der IOMMU eingeht, kann die Vorrichtung die übersetzte Adresse und die Domänen-ID in DevTLB füllen. Die Definition von DevTLB in der PCIe-ATS-Spezifikation kann Speichern der Domänen-ID beinhalten.
  • Das Ungültigerklären von DevTLB-Einträgen von N verschiedenen PASID aus einer einzelnen Domäne erfordert heutzutage, dass Software N unabhängige Ungültigkeitserklärungen ausgibt, was die Latenz der Ungültigkeitserklärung erhöht und die Fähigkeit der Systemsoftware verlangsamt, Puffer abzubilden bzw. deren Abbildung aufzuheben und den Systemspeicher zu verwalten. Der Vorteil des Speicherns von Domänen-ID in jedem DevTLB-Eintrag besteht darin, dass es Software ermöglicht, alle DevTLB-Einträge, die zu einer gewissen Domäne gehören, mit einer einzigen Ungültigkeitserklärungsanforderung zu für ungültig zu erklären. Die DevTLB-Ungültigkeitserklärungsanforderung beinhaltet eine Nachricht und 64-Bit-Nutzdaten, wie in 7 und 8 gezeigt. Das Domänen-ID-Feld kann eine beliebige Breite aufweisen und über Produkte und Plattformen hinweg variieren. Es kann mindestens 16 Bit betragen und kann auf eine Obergrenze von 32 Bit gesetzt werden (PCle SIG kann auswählen, die maximale Anzahl von Bits zu begrenzen, die über die Domänen-ID unterstützt werden). Die zusätzlichen Domänen-ID-Bits können zu der in 8 gezeigten Ungültigkeitserklärungsanforderungsnachricht in den aktuell reservierten Bits hinzugefügt werden oder der Text der Ungültigkeitserklärungsanforderungsnachricht kann von aktuell 64 Bits auf 96 Bits erweitert werden. Ein zusätzliches Bit kann spezifizieren, dass das Domänen-ID-Feld vorhanden und gültig ist.
  • In Ausführungsformen können für DevTLB Ungültigkeitserklärungen ohne PASID-TLP-Präfix das Domänen-ID- und das Domänen-ID-vorhanden-Feld wie folgt verwendet werden:
    • i) Domänen-ID- vorhanden = 0 => Ungültigerklären von DevTLB-Einträgen, die mit dem Adressbereich übereinstimmen (wie heute)
    • ii) Domänen-ID-vorhanden = 1 => Ungültigerklären von DevTLB-Einträgen, die mit dem Adressbereich und der Domänen-ID übereinstimmen.
  • In Ausführungsformen können für DevTLB-Ungültigkeitserklärungen mit PASID-TLP-Präfix das Domänen-ID- und das Domänen-ID-vorhanden-Feld wie folgt verwendet werden:
    • i) Domänen-ID vorhanden = 0 => Ungültigerklären von DevTLB-Einträgen mit spezifizierter PASID, die mit dem Adressbereich übereinstimmen.
    • ii) Domänen-ID vorhanden = 1 => Ungültigerklären von DevTLB-Einträgen mit spezifizierter PASID, die mit dem Adressbereich und der Domänen-ID übereinstimmen.
  • Andere Ausführungsformen des Unterstützens von Domänen-ID beim Ungültigkeitserklärungsprotokoll bestehen darin, die Domänen-ID in DevPIC, aber nicht in DevTLB zu speichern. Wenn bei diesem Ansatz die DevTLB-Ungültigkeitserklärung mit Domänen-ID eingeht, muss die Vorrichtung DevPIC durchsuchen, um alle PASIDs zu finden, die mit der Domänen-ID assoziiert sind, und dann mehrere PASID-basierte DevTLB-Ungültigkeitserklärungen durchführen.
  • Andere Ausführungsformen können ermöglichen, dass eine Domänen-ID an DevTLB gesendet und in diesem gespeichert wird, ohne dass eine Speicherung der Domänen-ID in DevPIC erforderlich ist. Anstatt die Domänen-ID in Processlnfo_Cmp zu senden, können IOMMUs die Domänen-ID in Translation_Cmp senden. Da jedoch erwartet wird, dass Translation_Req eine Größenordnung (oder mehr) häufiger als Processlnfo_Req ist, wäre es ineffizient, zusätzliche Domänen-ID-Bits auf jedem zu senden.
  • Jetzt Bezug nehmend auf 9 ist ein Flussdiagramm eines Verfahrens gemäß einer Ausführungsform gezeigt. Genauer gesagt, zeigt das Verfahren 900 Operationen, die beim Initialisieren eines Datenverarbeitungssystems mit einer oder mehreren Vorrichtungen mit einem DevPlC, wie hier beschrieben, durchgeführt werden, und einen Normalbetrieb eines Systems, in dem dieser DevPIC zum Speichern und Bereitstellen prozessspezifischer Informationen verwendet wird. Von daher kann das Verfahren 900 durch verschiedene Hardwareschaltungsanordnungen innerhalb einer Vorrichtung allein oder in Kombination mit Firmware und/oder Software durchgeführt werden.
  • Wie veranschaulicht, beginnt das Verfahren 900 mit dem Initialisieren eines Systems mit mindestens einer CPU und mindestens einer angeschlossenen Vorrichtung, wie etwa einer PCIe-Vorrichtung (Block 910). Solche Initialisierungsoperationen können herkömmlicherweise auftreten, bei denen verschiedene Firmware in die verschiedenen Vorrichtungen geladen wird. Als Nächstes geht die Steuerung zu Block 920 über, wo die Vorrichtung als Reaktion auf einen Konfigurationsraum, der aus der CPU gelesen wird, Fähigkeitsinformationen kommunizieren kann, wie etwa in einer oder mehreren Fähigkeiten und/oder Konfigurationsregistern oder anderen Speicherungen vorhanden. Diese Kommunikation kann über einen CPU-Lesevorgang des Konfigurationsraums der Vorrichtung erfolgen.
  • In einer speziellen Ausführungsform können Informationen bezüglich des Vorhandenseins eines PIC in einer erweiterten Fähigkeitsstruktur der Vorrichtung, wie etwa einer eigenständigen erweiterten PIC-Fähigkeitsstruktur, gespeichert werden. In einer anderen Ausführungsform können Informationen bezüglich eines PIC in einer erweiterten PCIe-ATS-Fähigkeitsstruktur enthalten sein.
  • Als Nächstes kann bei Block 930 eine Konfigurationsnachricht von der CPU empfangen werden, um z. B. einen Aktivierungsindikator dieser Konfigurationsspeicherung zu schreiben, um den PIC zu aktivieren. Es ist anzumerken, dass ähnliche Operationen durchgeführt werden können, um weitere Fähigkeitsinformationen bereitzustellen und eine Aktivierung anderer Komponenten, wie etwa eines DevTLB, wie hier beschrieben, zu empfangen. Zu diesem Zeitpunkt (Block 940) kann der PIC konfiguriert werden, z. B., indem sie über eine Steuerung der Vorrichtung aktiviert wird. Somit ist die Vorrichtung mit aktivem PIC im Normalbetrieb betriebsbereit.
  • Immer noch unter Bezugnahme auf 9 kann während des Normalbetriebs auf den PIC zugegriffen werden (Block 950). Genauer gesagt können empfangene prozessspezifische Informationen innerhalb von Einträgen des PIC in Verbindung mit einer gegebenen PASID und einem entsprechenden Kernel-/Benutzerraumindikator gespeichert werden. Von daher kann jeder Eintrag des PIC mit einem gegebenen Prozess und Adressraum (z. B. Benutzer- oder Kernelraum) assoziiert sein, der verwendet werden kann, um einen Eintrag nachzuschlagen, der die prozessspezifischen Informationen speichert. Immer noch unter Bezugnahme auf 9 kann als Nächstes bei Block 960 eine Prozessinformationsungültigkeitserklärungsnachricht für eine gegebene PASID und einen gegebenen Kernel-/Benutzeradressraum empfangen werden. Als Reaktion auf diese Ungültigkeitserklärungsnachricht kann die PIC bei Block 970 Einträge für ungültig erklären, die mit der speziellen PASID und dem speziellen Kernel-/Benutzerraum assoziiert sind. Es ist anzumerken, dass ein separater DevTLB-Ungültigkeitserklärungsbefehl gesendet werden kann, um den DevTLB für ungültig zu erklären. In anderen Fällen kann eine DevPIC-Ungültigkeitserklärungsnachricht eine Ungültigkeitserklärung sowohl von DevPIC als auch von DevTLB auslösen. Bei der Ungültigkeitserklärung geht die Steuerung zu Block 980 über, wo eine Ungültigkeitserklärungsabschlussnachricht an den Anforderer zurückgesendet werden kann. Obgleich bei der Ausführungsform von 9 auf dieser hohen Ebene gezeigt, versteht sich, dass viele Variationen und Alternativen möglich sind.
  • Zusätzliche DevPIC-Verbesserungen
  • Ausführungsformen beinhalten verschiedene prozessspezifische Informationen, die vorrichtungsseitig zwischengespeichert werden können und wie sie mit Systemsoftwarestrukturen konsistent gehalten werden können, die solche prozessspezifischen Informationen beibehalten und ändern. Hier beschriebene Ausführungsformen sind jedoch nicht auf diese Verwendungen beschränkt. Hierin beschriebene Ausführungsformen können sich auf das Aufbauen von Infrastruktur beziehen, die Caching (und auch Ungültigerklären) beliebiger prozessspezifischer Informationen ermöglichen, die heutzutage existieren können oder zukünftig erzeugt werden.
  • Ausführungsformen können in einer breiten Vielfalt von Zwischenverbindungsstrukturen implementiert werden. Unter Bezugnahme auf 10 ist eine Ausführungsform einer Struktur veranschaulicht, die aus Punkt-zu-Punkt-Verbindungen besteht, die einen Satz von Komponenten verschalten. Das System 1000 beinhaltet einen Prozessor 1005 und einen Flash-Speicher 1010, die mit dem Steuerungs-Hub 1015 gekoppelt sind. Der Prozessor 1005 beinhaltet ein beliebiges Verarbeitungselement, wie etwa einen Mikroprozessor, einen Hostprozessor, einen eingebetteten Prozessor, einen Koprozessor oder einen anderen Prozessor. Der Prozessor 1005 ist über einen Front-Side-Bus (FSB) 1006 mit dem Steuerungs-Hub 1015 gekoppelt. In einer Ausführungsform ist der FSB 1006 eine serielle Punkt-zu-Punkt-Zwischenverbindung.
  • Systemspeicher 1010 umfasst jede beliebige Speichervorrichtung, wie etwa Direktzugriffsspeicher (RAM), nicht-flüchtigen Speicher (NV) oder anderen Speicher, auf den Vorrichtungen im System 1000 zugreifen können.
  • Wie gezeigt, ist der Systemspeicher 1010 über die Speicherschnittstelle 1016 mit dem Steuerungs-Hub 1015 gekoppelt. Beispiele einer Speicherschnittstelle umfassen eine Speicherschnittstelle mit doppelter Datenrate (DDR), eine Zweikanal-DDR-Speicherschnittstelle, eine dynamische RAM-Speicherschnittstelle (DRAM) und/oder eine SPI-Speicherschnittstelle.
  • Bei einer Ausführungsform ist der Steuerungs-Hub 1015 ein Root-Hub, ein Root-Komplex oder eine Root-Steuerung in einer PCIe-Verbindungshierarchie. Beispiele für den Steuerungs-Hub 1015 beinhalten einen Chipsatz, einen Speichersteuerungs-Hub (MCH), eine Northbridge, einen Zwischenverbindungssteuerungs-Hub (ICH), eine Southbridge oder einen peripheren Steuerungs-Hub (PCH) und eine(n) Root-Steuerung/Hub. Oft bezieht sich der Begriff Chipsatz auf zwei physikalisch getrennte Steuerungs-Hubs, das heißt einen Speichersteuerungs-Hub (MCH), der mit einem Zwischenverbindungssteuerungs-Hub (ICH) gekoppelt ist. Es ist anzumerken, dass aktuelle Systeme häufig den MCH beinhalten, der mit dem Prozessor 1005 integriert ist, während die Steuerung 1015 mit E/A-Vorrichtungen auf eine ähnliche Weise wie unten beschrieben kommunizieren soll. In einigen Ausführungsformen wird Peer-to-Peer-Routing optional durch den Root-Komplex 1015 unterstützt. Der Root-Komplex 1015 kann eine IOMMU beinhalten, die in einem SVM-Modell einem Grafikbeschleuniger 1030 und/oder einer Vorrichtung 1025 (die DevPICs in Übereinstimmung mit einer Ausführungsform beinhalten kann) ermöglicht, auf einen gemeinsamen Speicherplatz mit dem Prozessor 1005 zuzugreifen.
  • Der Steuerungs-Hub 1015 ist über eine serielle Verbindung 1019 mit dem Switch/der Brücke 1020 gekoppelt. Eingabe/Ausgabe-Module 1017 und 1021, die auch als Schnittstellen/Anschlüsse 1017 und 1021 bezeichnet werden können, umfassen/implementieren einen geschichteten Protokollstapel, um Kommunikation zwischen Steuerungs-Hub 1015 und Switch 1020 bereitzustellen. In einer Ausführungsform sind mehrere Vorrichtungen in der Lage, mit dem Switch 1020 gekoppelt zu werden.
  • Der Switch/die Brücke 1020 leiten Pakete/Nachrichten von der Vorrichtung 1025 upstream, das heißt eine Hierarchie aufwärts in Richtung eines Root-Komplex zum Steuerungs-Hub 1015, und downstream, das heißt eine Hierarchie nach unten weg von einer Root-Steuerung, vom Prozessor 1005 oder vom Systemspeicher 1010 zur Einrichtung 1025. Der Switch 1020 wird in einer Ausführungsform als eine logische Anordnung mehrerer virtueller PCI-zu-PCI-Brückenvorrichtungen bezeichnet. Vorrichtung 1025 umfasst eine beliebige interne oder externe Vorrichtung oder Komponente, die mit einem elektronischen System zu koppeln ist, wie etwa eine E/A-Vorrichtung, eine Netzwerkschnittstellensteuerung (NIC, Network Interface Controller), eine Erweiterungskarte, einen Audioprozessor, einen Netzwerkprozessor, eine Festplatte, eine Speichervorrichtung, eine CD/DVD-ROM, einen Monitor, einen Drucker, eine Maus, eine Tastatur, einen Router, eine tragbare Speichervorrichtung, eine Firewire-Vorrichtung, eine universelle serielle Busvorrichtung (USB), einen Scanner und andere Eingabe/Ausgabe-Vorrichtungen. Im PCIe-Fachjargon wird eine solche Vorrichtung häufig als Endpunkt bezeichnet. Obwohl nicht speziell gezeigt, kann Vorrichtung 1025 eine PCIe-zu-PCI/PCI-X-Brücke umfassen, um ältere oder Vorrichtungen mit einer anderen PCI-Version zu unterstützen. Endpunktvorrichtungen in PCIe werden häufig als etablierte PCle- oder Root-Komplex-integrierte Endpunkte klassifiziert.
  • Der Grafikbeschleuniger 1030 ist auch über die serielle Verbindung 1032 mit dem Steuerungs-Hub 1015 gekoppelt. In einer Ausführungsform ist der Grafikbeschleuniger 1030 mit einem MCH gekoppelt, der mit einem ICH gekoppelt ist. Der Switch 1020 und dementsprechend die E/A-Vorrichtung 1025 ist dann mit dem ICH gekoppelt. Die E/A-Module 1031 und 1018 sollen auch einen geschichteten Protokollstapel implementieren, um zwischen dem Grafikbeschleuniger 1030 und dem Steuerungs-Hub 1015 zu kommunizieren. Eine Grafiksteuerung oder der Grafikbeschleuniger 1030 selbst kann in dem Prozessor 1005 integriert sein.
  • Jetzt Bezug nehmend auf 11 ist ein Blockdiagramm eines Systems gemäß einer anderen Ausführungsform der vorliegenden Erfindung gezeigt. Wie in 11 gezeigt, kann ein System 1100 eine beliebige Art von Datenverarbeitungsvorrichtung sein und kann in einer Ausführungsform ein Serversystem sein. In der Ausführungsform von 11 beinhaltet das System 1100 mehrere CPUs 1110a,b, die wiederum mit jeweiligen Systemspeichern 1120a,b gekoppelt sind, die bei Ausführungsformen als DIMMs, wie etwa DDR-Speicher mit doppelter Datenrate, persistente oder andere Speichertypen, implementiert sein können. Es ist zu beachten, dass die CPUs 1110 über ein Zwischenverbindungssystem 1115, wie etwa eine Intel® Ultra Path Interconnect oder eine andere Prozessorzwischenverbindungstechnologie, miteinander koppeln können.
  • Um kohärente Beschleunigereinrichtungen und/oder intelligente Adaptereinrichtungen über möglicherweise mehrere Kommunikationsprotokolle mit CPUs 1110 koppeln zu können, können mehrere Zwischenverbindungen 1130a1-b2 vorhanden sein. In einer Ausführungsform kann jede Zwischenverbindung 1130 eine gegebene Instanz eines Compute Express Link (CXL) sein, in dem PCIe-Kommunikationen, einschließlich ATS-Kommunikationen, stattfinden können.
  • In der gezeigten Ausführungsform koppeln jeweilige CPUs 1110 mit entsprechenden feldprogrammierbaren Gate-Arrays (FPGAs)/Beschleunigervorrichtungen 1150a,b (die GPUs beinhalten können), oder andere Beschleuniger können DevPlCs beinhalten, gemäß einer Ausführungsform. Außerdem koppeln die CPUs 1110 auch mit intelligenten NIC-Vorrichtungen 1160a,b. Wiederum koppeln die intelligenten NIC-Vorrichtungen 1160 a,b mit Switches 1180a,b, die wiederum mit einem gebündelten Speicher 1190 a,b, wie etwa einem persistenten Speicher, gekoppelt sind. Natürlich sind Ausführungsformen nicht auf Beschleuniger 1150 beschränkt und die hierin beschriebenen Techniken und Strukturen können in anderen Entitäten eines Systems implementiert werden.
  • Jetzt ist, Bezug nehmend auf 12, ein Blockdiagramm eines Systems gemäß einer anderen Ausführungsform der vorliegenden Erfindung, wie etwa eine Datenzentrumsplattform, gezeigt. Wie in 12 gezeigt, beinhaltet das Multiprozessorsystem 1200 einen ersten Prozessor 1270 und einen zweiten Prozessor 1280, die über eine Punkt-zu-Punkt-Zwischenverbindung 1250 gekoppelt sind. Wie in 12 gezeigt, kann jeder der Prozessoren 1270 und 1280 viele Kernprozessoren sein, einschließlich repräsentativer erster und zweiter Prozessorkerne (d. h. Prozessorkerne 1274a und 1274b und Prozessorkerne 1284a und 1284b).
  • In der Ausführungsform von 12 beinhalten die Prozessoren 1270 und 1280 ferner Punkt-zu-Punkt-Zwischenverbindungen 1277 und 1287, die über Zwischenverbindungen 1242 und 1244 (die CXL-Busse sein können, durch die PCIe-Kommunikationen laufen) mit Switches 1259 und 1260 gekoppelt sind, die IOMMUs beinhalten können, um Vorrichtungen, die DevPICs aufweisen, zu ermöglichen, auf gebündelte Speicher 1255 und 1265 zuzugreifen.
  • Weiterhin Bezug nehmend auf 12 umfasst der erste Prozessor 1270 ferner einen Speichersteuerungsknoten (MCH) 1272 und Punkt-zu-Punkt-Schnittstellen (P-P) 1276 und 1278. Gleichermaßen umfasst der zweite Prozessor 1280 einen MCH 1282 und P-P-Schnittstellen 1286 und 1288. Wie in 12 gezeigt, koppeln MCHs 1272 und 1282 die Prozessoren mit jeweiligen Speichern, nämlich einem Speicher 1232 und einem Speicher 1234, die Teile des Systemspeichers (z. B. DRAM) sein können, die lokal mit den jeweiligen Prozessoren verbunden sind. Der erste Prozessor 1270 und der zweite Prozessor 1280 können über P-P-Zwischenverbindungen 1276 bzw. 1286 mit einem Chipsatz 1290 gekoppelt sein. Wie in 12 gezeigt, beinhaltet der Chipsatz 1290 P-P-Schnittstellen 1294 und 1298.
  • Des Weiteren beinhaltet der Chipsatz 1290 eine Schnittstelle 1292 zum Koppeln des Chipsatzes 1290 mit einer Hochleistungsgrafik-Engine 1238 durch eine P-P-Zwischenverbindung 1239. Wie in 12 gezeigt, können verschiedene Eingabe/Ausgabe- bzw. E/A-Vorrichtungen 1214 mit dem ersten Bus 1216 gekoppelt sein, zusammen mit einer Busbrücke 1218, die den ersten Bus 1216 mit einem zweiten Bus 1220 koppelt. Verschiedene Vorrichtungen können mit dem zweiten Bus 1220 gekoppelt sein, einschließlich zum Beispiel einer Tastatur/Maus 1222, Kommunikationsvorrichtungen 1226 und einer Speichereinheit 1228, wie etwa einem Diskettenlaufwerk oder einer anderen Massenspeichervorrichtung, die in einer Ausführungsform Code 1230 umfassen kann. Ferner kann ein Audio-E/A 1224 mit dem zweiten Bus 1220 gekoppelt sein.
  • Verschiedene Ausführungsformen können eine beliebige geeignete Kombination der oben beschriebenen Ausführungsformen einschließlich alternativer (oder) Ausführungsformen von Ausführungsformen, die oben in konjunktiver Form (und) beschrieben sind (z. B. kann das „und“ ein „und/oder“ sein), beinhalten. Des Weiteren können manche Ausführungsformen einen oder mehrere Herstellungsgegenstände (z. B. nicht-flüchtige computerlesbare Medien) mit darauf gespeicherten Anweisungen beinhalten, die, wenn sie ausgeführt werden, zu Aktionen einer beliebigen der oben beschriebenen Ausführungsformen führen. Darüber hinaus können manche Ausführungsformen Einrichtungen oder Systeme mit beliebigen geeigneten Mitteln zum Ausführen der verschiedenen Operationen der oben beschriebenen Ausführungsformen beinhalten.
  • Die obige Beschreibung von veranschaulichten Ausführungsformen, einschließlich dessen, was in der Zusammenfassung beschrieben ist, soll nicht erschöpfend sein oder Ausführungsformen auf die offenbarten genauen Formen beschränken. Während hier zur Veranschaulichung spezielle Ausführungsformen beschrieben sind, sind verschiedene äquivalente Modifikationen innerhalb des Schutzumfangs der Ausführungsformen möglich, wie ein Fachmann auf dem relevanten Gebiet erkennen wird.
  • Diese Modifikationen können angesichts der obigen ausführlichen Beschreibung an den Ausführungsformen vorgenommen werden. Die in den folgenden Ansprüchen verwendeten Begriffe sollten nicht so ausgelegt werden, dass sie die Ausführungsformen auf die speziellen Implementierungen, die in der Beschreibung und den Ansprüchen offenbart sind, beschränken. Vielmehr soll der Schutzumfang der Erfindung vollständig durch die folgenden Ansprüche bestimmt werden, die gemäß etablierten Lehren der Anspruchsdeutung aufzufassen sind.
  • BEISPIELE
  • Die folgenden Beispiele betreffen weitere Ausführungsformen.
  • Beispiel 1 kann eine Einrichtung sein, die Folgendes umfasst: einen Vorrichtungs-ProcesslnfoCache (DevPIC); einen Vorrichtungsübersetzungspuffer (DevTLB); einen oder mehrere Prozessoren, die mit dem DevPIC und dem DevTLB gekoppelt sind; Speicher, der mit dem einen oder den mehreren Prozessoren gekoppelt ist, wobei der Speicher Anweisungen speichern soll, die, bei Ausführung, den einen oder die mehreren Prozessoren veranlassen zum: Empfangen einer Anforderung zum Durchführen eines Lesevorgangs; Identifizieren virtueller Adressbits zum Maskieren; und Übertragen einer Anforderung an den DevTLB basierend auf den virtuellen Adressbits zum Maskieren und für die Leseanforderung.
  • Beispiel 2 kann die Einrichtung aus Beispiel 1 beinhalten, wobei der DevPlC prozessspezifische Informationen beinhaltet.
  • Beispiel 3 kann die Einrichtung aus Beispiel 2 beinhalten, wobei die prozessspezifische Information virtuelle Adressbits zum Maskieren von einer Eingabe/Ausgabe-Speicherverwaltungseinheit (IOMMU) beinhaltet.
  • Beispiel 4 kann die Einrichtung aus Beispiel 2 beinhalten, wobei die prozessspezifischen Informationen in dem DevPIC unter Verwendung von Adressübersetzungsdienst- bzw. ATS-Erweiterungen abgerufen werden.
  • Beispiel Z01 kann eine Einrichtung beinhalten, die ein Mittel zum Durchführen eines oder mehrerer Elemente eines Verfahrens, das in einem beliebigen der Beispiele hier beschrieben ist oder damit in Zusammenhang steht, oder eines beliebigen anderen Verfahrens oder Prozesses, das/der hier beschrieben ist, umfasst.
  • Beispiel Z02 kann ein oder mehrere nichtflüchtige computerlesbare Medien beinhalten, die Befehle beinhalten, um eine elektronische Vorrichtung bei Ausführung der Befehle durch einen oder mehrere Prozessoren der elektronischen Vorrichtung zum Durchführen eines oder mehrerer Elemente eines Verfahrens, das in einem beliebigen der Beispiele hier beschrieben ist oder damit in Zusammenhang steht, oder eines beliebigen anderen Verfahrens oder Prozesses, das/der hier beschrieben ist, zu veranlassen.
  • Beispiel Z30 kann eine Einrichtung beinhalten, die eine Logik, Module oder Schaltungsanordnung zum Durchführen eines oder mehrerer Elemente eines Verfahrens, das in einem beliebigen der Beispiele hier beschrieben ist oder damit in Zusammenhang steht, oder eines beliebigen anderen Verfahrens oder Prozesses, das/der hier beschrieben ist, umfasst.
  • Beispiel Z04 kann ein Verfahren, eine Technik oder einen Prozess, wie in irgendeinem der Beispiele hier beschrieben oder damit in Zusammenhang stehend, oder Teile oder Stücke davon beinhalten.
  • Beispiel Z05 kann eine Einrichtung beinhalten, umfassend: einen oder mehrere Prozessoren und ein oder mehrere computerlesbare Medien, die Anweisungen umfassen, die, wenn sie durch den einen oder die mehreren Prozessoren ausgeführt werden, den einen oder die mehreren Prozessoren zum Durchführen des Verfahrens, der Techniken oder des Prozesses, wie in einem beliebigen der Beispiele hier beschrieben oder damit in Zusammenhang stehend, oder von Teilen davon veranlassen.
  • Beispiel Z06 kann ein Signal, wie in irgendeinem der Beispiele hier beschrieben oder damit in Zusammenhang stehend, oder Teile oder Stücke davon beinhalten.
  • In einem Beispiel umfasst eine Einrichtung: einen Cache-Speicher mit mehreren Einträgen, wobei jeder der mehreren Einträge prozessspezifische Informationen für einen Prozess speichern soll; einen DevTLB mit mehreren Einträgen, die jeweils eine Übersetzung einer virtuellen Adresse in eine physische Adresse speichern sollen, die von einer IOMMU empfangen wird; und mindestens einen Prozessor, der mit dem Cache-Speicher und dem DevTLB gekoppelt ist.
  • In einem Beispiel umfasst die Einrichtung eine PCIe-Einrichtung zum Koppeln mit mindestens einer CPU und einem SVM.
  • In einem Beispiel beinhalten die prozessspezifischen Informationen Maskierungsinformationen, um ein oder mehrere Adressbits einer virtuellen Adresse anzugeben, die von der IOMMU maskiert werden sollen.
  • In einem Beispiel umfasst die Einrichtung ferner eine Maskierungsschaltung zum Empfangen einer virtuellen Adresse von dem mindestens einen Prozessor und zum Maskieren eines oder mehrerer Adressbits der virtuellen Adresse gemäß den prozessspezifischen Informationen aus einem Eintrag des Cache-Speichers, wobei das eine oder die mehreren maskierten Adressbits der virtuellen Adresse Metadaten umfassen, die mit einem Prozess assoziiert sind.
  • In einem Beispiel soll die Einrichtung eine physische Adresse von der IOMMU als Reaktion auf die maskierte virtuelle Adresse empfangen, wobei die Einrichtung die physische Adresse zu dem SVM senden soll, wobei die PCIe-Vorrichtung mit dem SVM über einen Root-Komplex gekoppelt ist, wobei der Root-Komplex die IOMMU umfasst.
  • In einem Beispiel umfasst jeder der mehreren Einträge des Cache-Speichers: ein erstes Feld zum Speichern einer Prozessadressraumkennung; ein zweites Feld zum Speichern eines Abschnitts eines Adressraums; und ein drittes Feld zum Speichern der prozessspezifischen Informationen.
  • In einem Beispiel soll das zweite Feld den Teil des Adressraums speichern, um zu identifizieren, ob der Eintrag mit einem Kernelraum des Prozesses oder einem Benutzerraum des Prozesses assoziiert ist.
  • In einem Beispiel umfassen die prozessspezifischen Informationen eine Domänenkennung.
  • In einem Beispiel soll der DevTLB als Reaktion auf eine Ungültigkeitserklärungsnachricht für einen ersten Prozess mit einer ersten Domänenkennung Einträge des DevTLB für ungültig erklären, die mit der ersten Domänenkennung assoziiert sind.
  • In einem Beispiel umfasst die Einrichtung ferner einen Konfigurationsspeicher zum Speichern von Konfigurationsinformationen, wobei die Konfigurationsinformationen einen Indikator zum Angeben des Vorhandenseins des Cache-Speichers umfassen.
  • In einem anderen Beispiel umfasst ein Verfahren: Kommunizieren, von einer PCIe-Vorrichtung zu einem Prozessor, von Fähigkeitsinformationen der PCIe-Vorrichtung, wobei die Fähigkeitsinformationen angeben sollen, dass die PCIe-Vorrichtung einen Prozessinformations-Cache zum Speichern prozessspezifischer Informationen beinhaltet; Empfangen einer Konfigurationsnachricht vom Prozessor und Aktivieren des Prozessinformations-Caches als Reaktion auf die Konfigurationsnachricht; Empfangen erster prozessspezifischer Informationen von einer IOMMU; und Speichern der ersten prozessspezifischen Informationen in einem ersten Eintrag des Prozessinformations-Caches in Verbindung mit einer PASID.
  • In einem Beispiel umfasst das Verfahren ferner Speichern der ersten prozessspezifischen Informationen in dem ersten Eintrag des Prozessinformations-Caches in Verbindung mit einem Kerneladressraum oder einem Benutzeradressraum.
  • In einem Beispiel umfasst das Verfahren ferner das Empfangen der ersten prozessspezifischen Informationen als Reaktion auf eine Anforderung von dem Prozessinformations-Cache an die IOMMU.
  • In einem Beispiel umfasst das Verfahren ferner das Senden der Anforderung an die IOMMU als Reaktion auf eine Leseanforderung zu einer ersten virtuellen Adresse von einer Verarbeitungsschaltung der PCIe-Vorrichtung.
  • In einem Beispiel umfasst das Verfahren ferner: Verwenden einer Maske, die in den prozessspezifischen Informationen enthalten ist, um mindestens einen Teil der ersten virtuellen Adresse zu maskieren; und Senden der maskierten ersten virtuellen Adresse an einen Vorrichtungsübersetzungspuffer, um eine physische Adresse zu erhalten, die der ersten virtuellen Adresse entspricht, um der Verarbeitungsschaltung zu ermöglichen, eine Leseanforderung an einen Speicher zu senden, der mit der PCIe-Vorrichtung gekoppelt ist, wobei der Speicher einen gemeinsam genutzten virtuellen Speicher umfasst.
  • In einem Beispiel umfasst das Verfahren ferner, wenn die prozessspezifischen Informationen eine Domänenkennung umfassen, als Reaktion auf eine einzige Ungültigkeitserklärungsanforderung, Ungültigerklären von mehreren Einträgen eines Vorrichtungsübersetzungspuffers, der mit der Domänenkennung assoziiert ist, wobei die mehreren Einträge mit mehreren Prozessadressraumkennungen einer virtuellen Maschine assoziiert sind, die die Domänenkennung aufweist.
  • In einem anderen Beispiel soll ein computerlesbares Medium, das Anweisungen beinhaltet, das Verfahren nach einem der obigen Beispiele durchführen.
  • In einem weiteren Beispiel soll ein computerlesbares Medium, das Daten beinhaltet, durch mindestens eine Maschine verwendet werden, um wenigstens eine integrierte Schaltung zu fertigen, um das Verfahren nach einem der obigen Beispiele durchzuführen.
  • In noch einem weiteren Beispiel umfasst eine Einrichtung Mittel zum Durchführen des Verfahrens nach einem der obigen Beispiele.
  • In noch einem anderen Beispiel umfasst ein System eine CPU, einen Beschleuniger und einen Speicher. Die CPU kann eine Abladeanforderung an den Beschleuniger senden und kann Folgendes beinhalten: eine MMU zum Übersetzen einer linearen Adresse in eine physische Adresse; und eine Maskierungsschaltungsanordnung zum Maskieren eines oder mehrerer Abschnitte einer linearen Adresse und Bereitstellen der maskierten linearen Adresse für die MMU. Der mit der CPU gekoppelte Beschleuniger kann eine Operation als Reaktion auf die Abladeanforderung durchführen. Und der Speicher ist mit der CPU und dem Beschleuniger gekoppelt, wobei die CPU und der Beschleuniger mit dem Speicher gemäß einem SVM-Modell interagieren sollen, wobei die CPU die Abladeanforderung an den Beschleuniger senden soll, wobei die Abladeanforderung eine unmaskierte lineare Adresse umfasst, wobei die unmaskierte lineare Adresse Metadaten eines Prozesses beinhaltet.
  • In einem Beispiel umfasst das System ferner eine IOMMU, die zwischen der CPU und dem Beschleuniger gekoppelt ist, wobei der Beschleuniger den einen oder die mehreren Abschnitte der linearen Adresse maskieren und die maskierte lineare Adresse für die IOMMU bereitstellen soll, um eine physische Adresse zu erhalten.
  • In einem Beispiel umfasst der Beschleuniger einen Cache-Speicher mit mehreren Einträgen, wobei jeder der mehreren Einträge prozessspezifische Informationen für einen Prozess speichern soll, wobei die prozessspezifischen Informationen Maskierungsinformationen für den Prozess umfassen, wobei der Beschleuniger den einen oder die mehreren Teile der linearen Adresse unter Verwendung der Maskierungsinformationen maskieren soll.
  • In einem Beispiel umfasst der Beschleuniger ferner einen DevTLB mit mehreren Einträgen, die jeweils eine Übersetzung einer virtuellen Adresse in eine physische Adresse speichern sollen, die von der IOMMU empfangen wird, wobei als Reaktion auf eine Ungültigkeitserklärungsnachricht für eine virtuelle Maschine mit einer ersten Domänenkennung der Beschleuniger Einträge des DevTLB für ungültig erklären soll, die mit der ersten Domänenkennung assoziiert sind.
  • Es versteht sich, dass verschiedene Kombinationen der obigen Beispiele möglich sind.
  • Es ist anzumerken, dass die Begriffe „Schaltung“ und „Schaltungsanordnung“ hier austauschbar verwendet werden. Wie hier verwendet, werden diese Begriffe und der Begriff „Logik“ verwendet, um allein oder in einer beliebigen Kombination auf analoge Schaltungen, digitale Schaltungen, festverdrahtete Schaltungen, programmierbare Schaltungen, Prozessorschaltungen, Mikrocontrollerschaltungen, Hardwarelogikschaltungen, Zustandsmaschinenschaltungen und/oder eine beliebige andere Art physischer Hardwarekomponenten zu verweisen. Ausführungsformen können in vielen verschiedenen Arten von Systemen verwendet werden. In einer Ausführungsform kann zum Beispiel eine Kommunikationsvorrichtung angeordnet sein, um die verschiedenen hierin beschriebenen Verfahren und Techniken durchzuführen. Natürlich ist der Schutzumfang der vorliegenden Erfindung nicht auf eine Kommunikationsvorrichtung beschränkt, und stattdessen können andere Ausführungsformen auf andere Typen von Einrichtungen zum Verarbeiten von Befehlen oder auf ein oder mehrere maschinenlesbare Medien gerichtet sein, umfassend Befehle, die in Reaktion darauf, dass sie auf einer Datenverarbeitungsvorrichtung ausgeführt werden, die Vorrichtung veranlassen, ein(e) oder mehrere der hier beschriebenen Verfahren und Techniken durchzuführen.
  • Ausführungsformen können in Code implementiert sein und können auf einem nicht-flüchtigen Speichermedium gespeichert sein, auf dem Anweisungen gespeichert sind, die verwendet werden können, um ein System zum Durchführen der Anweisungen zu programmieren. Ausführungsformen können auch in Daten implementiert sein und können auf einem nicht-flüchtigen Speichermedium gespeichert sein, das, wenn es von mindestens einer Maschine verwendet wird, die mindestens eine Maschine veranlasst, mindestens eine integrierte Schaltung herzustellen, um eine oder mehrere Operationen durchzuführen. Noch weitere Ausführungsformen können in einem computerlesbaren Speichermedium implementiert sein, das Informationen beinhaltet, die, wenn sie in ein SoC oder einen anderen Prozessor hergestellt werden, das SoC oder den anderen Prozessor zum Durchführen einer oder mehrerer Operationen konfigurieren sollen. Das Speichermedium kann eine beliebige Art von Platte einschließlich Floppy Disks, optische Platten, Festkörperlaufwerke (SSDs), CD-Nur-Lese-Speicher (CD-ROMs), wiederbeschreibbare Compact Disks (CD-RWs) und magnetooptische Platten, Halbleitervorrichtungen, wie etwa Nur-Lese-Speicher (ROMs), Direktzugriffsspeicher (RAMs), wie etwa dynamische Direktzugriffsspeicher (DRAMs), statische Direktzugriffsspeicher (SRAMs), löschbare, programmierbare Nur-Lese-Speicher (EPROMs), Flash-Speicher, elektrisch löschbare, programmierbare Nur-Lese-Speicher (EEPROMs), magnetische oder optische Karten oder jeden anderen Typ von zum Speichern von elektronischen Befehlen geeigneten Medien einschließen, ist jedoch nicht darauf beschränkt.
  • Obwohl die vorliegende Offenbarung mit Bezug auf eine begrenzte Anzahl von Implementierungen beschrieben wurde, werden Fachleute, die den Vorteil dieser Offenbarung haben, zahlreiche Modifikationen und Variationen davon erkennen. Es ist beabsichtigt, dass die angehängten Ansprüche alle solchen Modifikationen und Variationen abdecken.
  • ZITATE ENTHALTEN IN DER BESCHREIBUNG
  • Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
  • Zitierte Patentliteratur
    • US 63/181871 [0001]

Claims (25)

  1. Einrichtung, umfassend: einen Cache-Speicher mit mehreren Einträgen, wobei jeder der mehreren Einträge prozessspezifische Informationen für einen Prozess speichern soll; einen Vorrichtungsübersetzungspuffer (DevTLB), der mehrere Einträge aufweist, die jeweils eine Übersetzung einer virtuellen Adresse in eine physische Adresse speichern sollen, die von einer Eingabe/Ausgabe-Speicherverwaltungseinheit (IOMMU) empfangen wird; und mindestens einen Prozessor, der mit dem Cache-Speicher und dem DevTLB gekoppelt ist.
  2. Einrichtung nach Anspruch 1, wobei die Einrichtung eine PCIe-Vorrichtung (Peripheral Component Interconnect Express) zum Koppeln mit mindestens einer Zentralverarbeitungseinheit (CPU) und einem gemeinsam genutzten virtuellen Speicher (SVM) umfasst.
  3. Einrichtung nach Anspruch 2, wobei die prozessspezifischen Informationen Maskierungsinformationen umfassen, um ein oder mehrere Adressbits einer virtuellen Adresse anzugeben, die von der IOMMU maskiert werden sollen.
  4. Einrichtung nach Anspruch 3, ferner umfassend eine Maskierungsschaltung zum Empfangen einer virtuellen Adresse von dem mindestens einen Prozessor und zum Maskieren eines oder mehrerer Adressbits der virtuellen Adresse gemäß den prozessspezifischen Informationen aus einem Eintrag des Cache-Speichers, wobei das eine oder die mehreren maskierten Adressbits der virtuellen Adresse Metadaten umfassen, die mit einem Prozess assoziiert sind.
  5. Einrichtung nach Anspruch 4, wobei die Einrichtung eine physische Adresse von der IOMMU als Reaktion auf die maskierte virtuelle Adresse empfangen soll, wobei die Einrichtung die physische Adresse zu dem SVM senden soll, wobei die PCIe-Vorrichtung mit dem SVM über einen Root-Komplex gekoppelt ist, wobei der Root-Komplex die IOMMU umfasst.
  6. Einrichtung nach Anspruch 1, wobei jeder der mehreren Einträge des Cache-Speichers Folgendes umfasst: ein erstes Feld zum Speichern einer Prozessadressraumkennung; ein zweites Feld zum Speichern eines Abschnitts eines Adressraums; und ein drittes Feld zum Speichern der prozessspezifischen Informationen.
  7. Einrichtung nach Anspruch 6, wobei das zweite Feld den Teil des Adressraums speichern soll, um zu identifizieren, ob der Eintrag mit einem Kernelraum des Prozesses oder einem Benutzerraum des Prozesses assoziiert ist.
  8. Einrichtung nach einem der Ansprüche 1-7, wobei die prozessspezifischen Informationen eine Domänenkennung umfassen.
  9. Einrichtung nach Anspruch 8, wobei der DevTLB als Reaktion auf eine Ungültigkeitserklärungsnachricht für einen ersten Prozess mit einer ersten Domänenkennung Einträge des DevTLB für ungültig erklären soll, die mit der ersten Domänenkennung assoziiert sind.
  10. Einrichtung nach einem der Ansprüche 1-9, ferner umfassend einen Konfigurationsspeicher zum Speichern von Konfigurationsinformationen, wobei die Konfigurationsinformationen einen Indikator zum Angeben des Vorhandenseins des Cache-Speichers umfassen.
  11. Verfahren, das Folgendes umfasst: Kommunizieren, von einer PCIe-Vorrichtung (Peripheral Component Interconnect Express) zu einem Prozessor, von Fähigkeitsinformationen der PCIe-Vorrichtung, wobei die Fähigkeitsinformationen angeben sollen, dass die PCIe-Vorrichtung einen Prozessinformations-Cache zum Speichern prozessspezifischer Informationen beinhaltet; Empfangen einer Konfigurationsnachricht vom Prozessor und Aktivieren des Prozessinformations-Caches als Reaktion auf die Konfigurationsnachricht; Empfangen erster prozessspezifischer Informationen von einer Eingabe/Ausgabe-Speicherverwaltungseinheit (IOMMU); und Speichern der ersten prozessspezifischen Informationen in einem ersten Eintrag des Prozessinformations-Caches in Verbindung mit einer Prozessadressraumkennung (PASID).
  12. Verfahren nach Anspruch 11, ferner umfassend Speichern der ersten prozessspezifischen Informationen in dem ersten Eintrag des Prozessinformations-Caches in Verbindung mit einem Kerneladressraum oder einem Benutzeradressraum.
  13. Verfahren nach Anspruch 11, ferner umfassend Empfangen der ersten prozessspezifischen Informationen als Reaktion auf eine Anforderung von dem Prozessinformations-Cache an die IOMMU.
  14. Verfahren nach Anspruch 13, ferner umfassend Senden der Anforderung an die IOMMU als Reaktion auf eine Leseanforderung an eine erste virtuelle Adresse von einer Verarbeitungsschaltung der PCIe-Vorrichtung.
  15. Verfahren nach Anspruch 14, das ferner Folgendes umfasst: Verwenden einer Maske, die in den prozessspezifischen Informationen enthalten ist, um mindestens einen Teil der ersten virtuellen Adresse zu maskieren; und Senden der maskierten ersten virtuellen Adresse an einen Vorrichtungsübersetzungspuffer, um eine physische Adresse zu erhalten, die der ersten virtuellen Adresse entspricht, um der Verarbeitungsschaltung zu ermöglichen, eine Leseanforderung an einen Speicher zu senden, der mit der PCIe-Vorrichtung gekoppelt ist, wobei der Speicher einen gemeinsam genutzten virtuellen Speicher umfasst.
  16. Verfahren nach einem der Ansprüche 11-15, ferner umfassend, wenn die prozessspezifischen Informationen eine Domänenkennung umfassen, als Reaktion auf eine einzige Ungültigkeitserklärungsanforderung, Ungültigerklären von mehreren Einträgen eines Vorrichtungsübersetzungspuffers, der mit der Domänenkennung assoziiert ist, wobei die mehreren Einträge mit mehreren Prozessadressraumkennungen einer virtuellen Maschine assoziiert sind, die die Domänenkennung aufweist.
  17. Computerprogramm, das Anweisungen umfasst, die, wenn das Programm durch einen Computer ausgeführt wird, den Computer dazu veranlassen, das Verfahren nach einem der Ansprüche 11-16 auszuführen.
  18. System, das Folgendes umfasst: mindestens eine Zentralverarbeitungseinheit (CPU), wobei die mindestens eine CPU eine Abladeanforderung an mindestens einen Beschleuniger senden soll, wobei die mindestens eine CPU Folgendes umfasst: eine Speicherverwaltungseinheit (MMU) zum Übersetzen einer linearen Adresse in eine physische Adresse; und eine Maskierungsschaltungsanordnung zum Maskieren eines oder mehrerer Abschnitte einer linearen Adresse und Bereitstellen der maskierten linearen Adresse für die MMU; wobei der mindestens eine Beschleuniger mit der CPU gekoppelt ist, wobei der mindestens eine Beschleuniger eine Operation als Reaktion auf die Abladeanforderung durchführen soll; und einen Speicher, der mit der mindestens einen CPU und dem mindestens einen Beschleuniger gekoppelt ist, wobei die mindestens eine CPU und der mindestens eine Beschleuniger mit dem Speicher gemäß einem SVM-Modell mit gemeinsam genutztem virtuellem Speicher interagieren sollen, wobei die mindestens eine CPU die Abladeanforderung an den mindestens einen Beschleuniger senden soll, wobei die Abladeanforderung eine unmaskierte lineare Adresse umfasst, wobei die unmaskierte lineare Adresse Metadaten eines Prozesses beinhaltet.
  19. System nach Anspruch 18, ferner umfassend eine Eingabe/Ausgabe-MMU (IOMMU), die zwischen der mindestens einen CPU und dem mindestens einen Beschleuniger gekoppelt ist, wobei der mindestens eine Beschleuniger den einen oder die mehreren Abschnitte der linearen Adresse maskieren und die maskierte lineare Adresse für die IOMMU bereitstellen soll, um eine physische Adresse zu erhalten.
  20. System nach Anspruch 18, wobei der mindestens eine Beschleuniger Folgendes umfasst: einen Cache-Speicher mit mehreren Einträgen, wobei jeder der mehreren Einträge prozessspezifische Informationen für einen Prozess speichern soll, wobei die prozessspezifischen Informationen Maskierungsinformationen für den Prozess umfassen, wobei der mindestens eine Beschleuniger den einen oder die mehreren Teile der linearen Adresse unter Verwendung der Maskierungsinformationen maskieren soll.
  21. System nach Anspruch 20, wobei der mindestens eine Beschleuniger ferner einen Vorrichtungsübersetzungspuffer (DevTLB) mit mehreren Einträgen umfasst, die jeweils eine Übersetzung einer virtuellen Adresse in eine physische Adresse speichern sollen, die von der IOMMU empfangen wird, wobei als Reaktion auf eine Ungültigkeitserklärungsnachricht für eine virtuelle Maschine mit einer ersten Domänenkennung der Beschleuniger Einträge des DevTLB für ungültig erklären soll, die mit der ersten Domänenkennung assoziiert sind.
  22. Einrichtung, umfassend: Cache-Speichermittel zum Speichern prozessspezifischer Informationen für Prozesse; Vorrichtungsübersetzungspuffer- bzw. DevTLB-Mittel zum Speichern von Übersetzungen von virtuellen Adressen in physische Adressen, die von einem Eingabe/Ausgabe-Speicherverwaltungseinheit- bzw. IOMMU-Mittel empfangen wird; und mindestens ein Prozessormittel, das mit dem Cache-Speichermittel und dem DevTLB-Mittel gekoppelt ist.
  23. Einrichtung nach Anspruch 22, wobei die Einrichtung eine PCIe-Vorrichtung (Peripheral Component Interconnect Express) zum Koppeln mit mindestens einer Zentralverarbeitungseinheit (CPU) und einem gemeinsam genutzten virtuellen Speicher (SVM) umfasst.
  24. Einrichtung nach Anspruch 23, wobei die prozessspezifischen Informationen Maskierungsinformationen umfassen, um ein oder mehrere Adressbits einer virtuellen Adresse anzugeben, die von dem IOMMU-Mittel maskiert werden sollen.
  25. Einrichtung nach Anspruch 24, ferner umfassend Maskierungsmittel zum Empfangen einer virtuellen Adresse von dem mindestens einen Prozessormittel und zum Maskieren eines oder mehrerer Adressbits der virtuellen Adresse gemäß den prozessspezifischen Informationen von dem Cache-Speichermittel, wobei das eine oder die mehreren maskierten Adressbits der virtuellen Adresse Metadaten umfassen, die mit einem Prozess assoziiert sind.
DE102022104654.0A 2021-04-29 2022-02-28 Verfahren und einrichtung zum aktivieren eines cache (devpic) zum speichern von prozessspezifischen informationen innerhalb von vorrichtungen, die adressübersetzungsdienst (ats) unterstützen Pending DE102022104654A1 (de)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US202163181871P 2021-04-29 2021-04-29
US63/181,871 2021-04-29
US17/473,468 US20210406195A1 (en) 2021-04-29 2021-09-13 Method and apparatus to enable a cache (devpic) to store process specific information inside devices that support address translation service (ats)
US17/473,468 2021-09-13

Publications (1)

Publication Number Publication Date
DE102022104654A1 true DE102022104654A1 (de) 2022-11-03

Family

ID=79030978

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102022104654.0A Pending DE102022104654A1 (de) 2021-04-29 2022-02-28 Verfahren und einrichtung zum aktivieren eines cache (devpic) zum speichern von prozessspezifischen informationen innerhalb von vorrichtungen, die adressübersetzungsdienst (ats) unterstützen

Country Status (3)

Country Link
US (1) US20210406195A1 (de)
CN (1) CN115269457A (de)
DE (1) DE102022104654A1 (de)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114064517A (zh) 2021-11-19 2022-02-18 上海兆芯集成电路有限公司 指定密钥进行高速缓存写回且无效的计算机系统及方法
CN114064518A (zh) 2021-11-19 2022-02-18 上海兆芯集成电路有限公司 指定密钥辨识码进行转译后备缓冲区清除的处理器和方法

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6055600A (en) * 1996-12-19 2000-04-25 International Business Machines Corporation Method and apparatus for detecting the presence and identification of level two cache modules
US6643759B2 (en) * 2001-03-30 2003-11-04 Mips Technologies, Inc. Mechanism to extend computer memory protection schemes
US7116569B2 (en) * 2005-02-11 2006-10-03 International Business Machines Corporation Method and apparatus for selecting operating characteristics of a content addressable memory by using a compare mask
US9619387B2 (en) * 2014-02-21 2017-04-11 Arm Limited Invalidating stored address translations
US9703722B2 (en) * 2014-11-14 2017-07-11 Cavium, Inc. Method and system for compressing data for a translation look aside buffer (TLB)
US10048881B2 (en) * 2016-07-11 2018-08-14 Intel Corporation Restricted address translation to protect against device-TLB vulnerabilities
US10324857B2 (en) * 2017-01-26 2019-06-18 Intel Corporation Linear memory address transformation and management
US10719453B1 (en) * 2019-04-03 2020-07-21 Arm Limited Apparatus and method for handling maintenance operations for an address translation cache

Also Published As

Publication number Publication date
US20210406195A1 (en) 2021-12-30
CN115269457A (zh) 2022-11-01

Similar Documents

Publication Publication Date Title
DE102018006756A1 (de) Beschleuniger-Fabric
DE102018213430A1 (de) Beschleuniger mit geringer Latenzzeit
DE112017003483T5 (de) Eingeschränkte adressumsetzung zum schutz vor vorrichtungs-tlb-anfälligkeiten
US9064330B2 (en) Shared virtual memory between a host and discrete graphics device in a computing system
DE112005002405B4 (de) Fehlerverarbeitung für Direktspeicherzugriffs-Adreßübersetzung
DE102020208234A1 (de) Sichere Adressübersetzungsdienste unter Verwendung von Nachrichtenauthentifizierungscodes und Invalidierungsverfolgung
DE102007063960B3 (de) Synchronisieren eines Übersetzungspufers (TLB) mit einer erweiterten Seitenwechseltabelle
KR101563659B1 (ko) 집성된 소페이지들을 사용한 페이지 사이즈 확장
DE602004011018T2 (de) Ungültigkeitserklärung eines speichers und löschen von puffereinträgen
DE102018006797A1 (de) Kohärente Speichereinrichtungen über PCIe
DE102010035603A1 (de) Bereitstellen von Hardwareunterstützung für gemeinsam benutzten virtuellen Speicher zwischen physischem Lokal- und Fernspeicher
DE102018004327A1 (de) Systeme und Verfahren zum Zugreifen auf Massenspeicher als Arbeitsspeicher
DE112010004971T5 (de) Ein System, Verfahren und eine Vorrichtung für einen Cache-Flush eines Seitenbereichs und TLB Invalidierung eines Bereichs von Einträgen
DE102022104654A1 (de) Verfahren und einrichtung zum aktivieren eines cache (devpic) zum speichern von prozessspezifischen informationen innerhalb von vorrichtungen, die adressübersetzungsdienst (ats) unterstützen
DE102019105879A1 (de) Verwaltung von kohärenten Verknüpfungen und Mehr-Ebenen-Speicher
DE112016005910T5 (de) Architechtur für Software-Definierten Interconnect-Switch
DE112010001467B4 (de) Steuerung von Blöcken einer On-Die-System-Struktur
DE112013002934T5 (de) Verwalten eines Zugreifens auf Seitentabelleneinträge
DE102020134207A1 (de) Sichere Adressübersetzungsdienste unter Verwendung kryptographisch geschützter physischer Hostadressen
DE112008002019T5 (de) Auslagern von Eingabe/Ausgabe (I/O)-Virtualisierungsarbeitsgängen an einem Prozessor
DE112005003736T5 (de) Virtueller Übersetzungspuffer
DE112013004105T5 (de) Kohärenzprotokolltabellen
DE112007001988T5 (de) Gemeinsames Nutzen von Informationen durch Gäste in einer Virtuelle-Maschine-Umgebung
DE102019109119A1 (de) Host-verwalteter kohärenter gerätespeicher
DE112016005919T5 (de) Verfahren und Vorrichtung zum Sub-Seiten-Schreibschutz