DE102021121062A1 - System, vorrichtung und verfahren zur dynamischen bereitstellung kohärenter speicherdomänen - Google Patents

System, vorrichtung und verfahren zur dynamischen bereitstellung kohärenter speicherdomänen Download PDF

Info

Publication number
DE102021121062A1
DE102021121062A1 DE102021121062.3A DE102021121062A DE102021121062A1 DE 102021121062 A1 DE102021121062 A1 DE 102021121062A1 DE 102021121062 A DE102021121062 A DE 102021121062A DE 102021121062 A1 DE102021121062 A1 DE 102021121062A1
Authority
DE
Germany
Prior art keywords
memory
domain
coherent
storage
request
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
DE102021121062.3A
Other languages
English (en)
Inventor
Francesc Guim Bernat
Karthik Kumar
Thomas Willhalm
Alexander Bachmutsky
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 DE102021121062A1 publication Critical patent/DE102021121062A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • 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/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4022Coupling between buses using switching circuits, e.g. switching matrix, connection or expansion network
    • 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
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • G06F11/0754Error or fault detection not based on redundancy by exceeding limits
    • G06F11/076Error or fault detection not based on redundancy by exceeding limits by exceeding a count or rate limit, e.g. word- or bit count limit
    • 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/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • 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/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0292User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
    • G06F12/0833Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means in combination with broadcast means (e.g. for invalidation or updating)
    • 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/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/1652Handling requests for interconnection or transfer for access to memory bus based on arbitration in a multiprocessor architecture
    • G06F13/1663Access to shared memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3037Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a memory, e.g. virtual memory, cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3055Monitoring arrangements for monitoring the status of the computing system or of the computing system component, e.g. monitoring if the computing system is on, off, available, not available
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/82Solving problems relating to 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/15Use in a specific computing environment
    • G06F2212/154Networked environment

Landscapes

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

Abstract

In einer Ausführungsform beinhaltet eine Vorrichtung: eine Tabelle zum Speichern mehrerer Einträge, wobei jeder Eintrag eine Speicherdomäne eines Systems und einen Kohärenzstatus der Speicherdomäne identifizieren soll; und eine Steuerschaltung, die mit der Tabelle gekoppelt ist. Die Steuerschaltung kann dazu ausgelegt sein, eine Anforderung zum Ändern eines Kohärenzstatus einer ersten Speicherdomäne des Systems zu empfangen und einen ersten Eintrag der Tabelle für die erste Speicherdomäne zum Ändern des Kohärenzstatus zwischen einer kohärenten Speicherdomäne und einer nicht-kohärenten Speicherdomäne in Reaktion auf die Anforderung dynamisch zu aktualisieren. Andere Ausführungsformen sind beschrieben und beansprucht.

Description

  • Technisches Gebiet
  • Ausführungsformen betreffen das Steuern der Kohärenz in einer Datenverarbeitungsumgebung.
  • Stand der Technik
  • In modernen Unternehmenssystemen kann Speicher auf eine verteilte Weise implementiert werden, wobei verschiedene Speicherbereiche bestimmten Vorrichtungen zugewiesen sind. In einem solchen System können statische Verarbeitungsentitäten und Speicherbereiche spezifiziert werden, die eine Kohärenzdomäne bilden. Dieser Ansatz skaliert jedoch nicht, da unerwünschte Latenzen als Ergebnis von Kohärenzkommunikationen auftreten können, insbesondere wenn versucht wird, die Anzahl kohärenter Entitäten zu erhöhen. Und das Erhöhen der Anzahlen kohärenter Entitäten kann eine mehrfache Erhöhung dieser Kohärenzkommunikationen bewirken, was zu Engpässen und anderen Leistungsproblemen führt.
  • Figurenliste
    • 1 ist ein Blockdiagramm eines Teils einer Datenzentrumsarchitektur gemäß einer Ausführungsform.
    • 2 ist ein Blockdiagramm eines Schalters gemäß einer Ausführungsform.
    • 3 ist ein Flussdiagramm eines Verfahrens gemäß einer Ausführungsform.
    • 4 ist ein Flussdiagramm eines Verfahrens gemäß einer anderen Ausführungsform.
    • 5 ist ein Blockdiagramm eines Systems gemäß einer anderen Ausführungsform der vorliegenden Erfindung.
    • 6 ist ein Blockdiagramm einer Ausführungsform eines SoC-Designs gemäß einer Ausführungsform.
    • 7 ist ein Blockdiagramm eines Systems gemäß einer anderen Ausführungsform der vorliegenden Erfindung.
    • 8 ist ein Blockdiagramm einer Netzwerkarchitektur gemäß einer Ausführungsform.
  • Ausführliche Beschreibung
  • In verschiedenen Ausführungsformen kann ein System einen Speicherplatz aufweisen, der dynamisch konfigurierbar ist, um mehrere unabhängige Speicherdomänen zu beinhalten, von denen jede dynamisch erzeugt und aktualisiert werden kann. Zusätzlich dazu kann jede dieser unabhängigen Speicherdomänen dynamisch gesteuert werden, kohärent oder nicht-kohärent zu sein, und kann dynamisch aktualisiert werden, um den Kohärenzstatus zu wechseln. Zu diesem Zweck können Umschaltschaltungsanordnungen innerhalb des Systems, wie etwa Schalter, die mehrere Prozessoren, Vorrichtungen, Speicher und so weiter koppeln, dazu ausgelegt sein, gegebenen Speicherdomänen dynamisch Speicherbereiche zuzuweisen. Zusätzlich dazu können die Schalter Kohärenzmechanismen beibehalten und erzwingen, wenn angegeben wird, dass solche Speicherdomänen einen Kohärenzstatus aufweisen. Von daher können diese Umschaltschaltungsanordnungen eingehende Speicheranforderungen in Abhängigkeit davon, ob eine Anforderung an eine kohärente Speicherdomäne oder eine nicht-kohärente Speicherdomäne gerichtet ist, dynamisch unterschiedlich behandeln. Des Weiteren können die Umschaltschaltungsanordnungen Kohärenzoperationen in Abhängigkeit von z. B. Verkehrsbedingungen in dem System unterschiedlich behandeln. Eine kohärente Speicherdomäne kann zum Beispiel zugewiesen werden und kann mit einer oder mehreren Rückfallregeln assoziiert sein, um bereitzustellen, dass unterschiedliche Kohärenzmechanismen verwendet werden, wenn hohe Verkehrsbedingungen vorliegen.
  • Obwohl Ausführungsformen in dieser Hinsicht nicht beschränkt sind, können beispielhafte Cloud-basierte Randarchitekturen unter Verwendung von Zwischenverbindungen und Schaltern gemäß einer CXL-Spezifikation (Compute Express Link) kommunizieren, wie etwa der Spezifikation CXL 1.1 oder beliebiger zukünftiger Versionen, Modifikationen, Variationen oder Alternativen zu einer CXL-Spezifikation. Obwohl ein hier beschriebenes Ausführungsbeispiel in Verbindung mit CXL-basierter Technologie ist, können Ausführungsformen ferner in anderen kohärenten Verbindungstechnologien verwendet werden, wie etwa einem IBM-XBus-Protokoll, einem Nvidia-NVLink-Protokoll, einem AMD-Infinity-Fabric-Protokoll, einem CCIX-Protokoll (Cache-Coherent Interconnect for Accelerators) oder einer kohärenten Beschleunigerprozessorschnittstelle (OpenCAPI).
  • Viele Systeme stellen eine einzige kohärente Speicherdomäne bereit, so dass sich alle Datenverarbeitungsvorrichtungen (z. B. mehrere Prozessorsockel) und Zusatzvorrichtungen (wie Beschleuniger und so weiter) in derselben kohärenten Domäne befinden. Eine solche Konfiguration kann vorteilhaft sein, um gemeinsam genutzte Datenverarbeitung und gemeinsam genutzten Speicher über die Prozessoren hinweg zu ermöglichen. Das Erhöhen der Anzahl an kohärenten Agenten erhöht jedoch auch die Menge an Kohärenzverkehr. Als ein Beispiel kann das Hinzufügen von vier Prozessorsockeln zu einem System, um es von einem 4-Sockel-System zu einem 8-Sockel-System zu erweitern, Kohärenzverkehr um einen 3-fachen Betrag erhöhen, was die Latenz unerwünscht beeinflussen kann, und größere Anzahlen von Sockeln erhöhen diesen Verkehr noch weiter. Dies ist insbesondere der Fall, wenn auch Zusatzvorrichtungen und Beschleuniger betrachtet werden, die Teil dieser einzigen kohärenten Speicherdomäne sein können.
  • Von daher können Ausführungsformen dynamisch und auf einem feinkörnigen Niveau die Kohärenz des Speichers steuern. Bei Ausführungsformen kann ein gemeinsam genutztes Kohärenzdomänen-basiertes Protokoll über CXL-Zwischenverbindungen auf eine Weise kommunizieren, die flexibel und skalierbar ist. Infolgedessen können über einen CXL-Schalter mehrere Server oder Racks in der Speichersemantik mit CXI,.cache- oder CXL.mem-Semantik umgekehrt werden. Bei einer Ausführungsform können Anwendungen Kohärenz dynamisch und unabhängig unter Verwendung von CXL.cache-Semantik implementieren.
  • Wenn eine über eine CXL-Verbindung angeschlossene Speichervorrichtung Kohärenz deaktiviert hat, kann die Speichervorrichtung nur-lokal ohne Kohärenz gemacht werden. Als ein Beispiel kann ein Zusatzbeschleuniger mit Zusatzspeicher oder eine Zusatzspeicher-Erweiterungskarte: (1) im „Vorrichtungsbeeinflussungs“-Modus ausgelegt und nicht kohärent mit irgendeiner anderen Einheit sein und nur ausschließlich durch die Vorrichtung verwendet werden; oder (2) im „Hostbeeinflussungs“-Modus ausgelegt und mit dem Rest der Plattform global kohärent gemacht werden.
  • Bei Cloud-Server-Implementierungen, wie etwa einem mandantenfähigen Datenzentrum, kann ein System mehrere Kohärenzdomänen aufweisen, wie etwa eine Kohärenz pro Mandant. Als ein Beispiel kann jeder von mehreren (potenziell eine große Anzahl von unterschiedlichen Mandanten) mit einer Speicherdomäne (oder mehreren Speicherdomänen) assoziiert sein. Es ist anzumerken, dass diese separaten Speicherdomänen voneinander isoliert sein können, so dass ein erster Mandant, der einer ersten Speicherdomäne zugewiesen ist, nicht auf eine zweite Speicherdomäne zugreifen kann, die einem zweiten Mandanten zugewiesen ist (und umgekehrt). In anderen Fällen kann es flexiblere Beziehungen zwischen Mandanten und Speicherdomänen geben. In Ausführungsformen werden kohärente Domänen auf Mandantenbasis verwaltet.
  • Eine beispielhafte Implementierung kann in Verbindung mit einem Datenbankserver oder einem Datenbankverwaltungssystem stehen, der/das dazu konfiguriert ist, auf einer Cloud-basierten Architektur zu laufen. In einem solchen System können mehrere Knoten implementiert sein, wobei mindestens einige der Knoten ein Segment aufweisen, das ein Hauptspeicher genannt wird, der keine Kohärenz erfordert, da er nur lesbar ist. Dieser Hauptspeicher kann einen großen Prozentsatz (z. B. 50 %) der von der Datenbank verwendeten Gesamtspeicherkapazität verbrauchen. Während andere Abschnitte der Datenbank Kohärenz für bestimmte Transaktionen erfordern können, können Ausführungsformen einen feinkörnigen, flexiblen Mechanismus innerhalb der Anwendung bereitstellen, um Kohärenzanforderungen zu definieren. Dieser dynamische und flexible Ansatz, der in Ausführungsformen bereitgestellt wird, unterscheidet sich somit von einer statischen, vorausgehenden, harten Partitionierung auf einer Knotenebene oder Speicherbereichsebene.
  • Um diese Anordnung zu realisieren, stellen Ausführungsformen Mechanismen bereit, um einer Anwendung oder einem anderen Anforderer die Fähigkeit zum dynamischen Konfigurieren und Aktualisieren des Kohärenzstatus darzustellen, unter anderen Aspekten einer Speicherdomäne. Wenn zum Beispiel ein Speicherbereich wie der Hauptspeicher zugewiesen wird, der keine Kohärenz erfordert, kann eine Anwendung eine Speicherzuweisungsanforderung wie folgt spezifizieren: cxl-mmap([A,B], allocate, 800GB, NULL <coherence>, NULL <callback>). Mit dieser beispielhaften Speicherzuweisungsanforderung stellt ein Anforderer Informationen bezüglich eines Speicherbereichsanforderungstyps (Zuweisungsanforderung), einer Menge an angefordertem Platz und Indikatoren für einen Kohärenzstatus und Rückrufinformationen (von denen keines in dieser speziellen Anforderung aktiv ist) bereit.
  • Während jedoch ein Speicherbereich zugewiesen wird, der für eine Transaktion verwendet wird, kann die Anwendung Kohärenz spezifizieren und ferner Entitäten definieren, denen Zugriff auf diese kohärente Speicherdomäne erlaubt ist (z. B. hinsichtlich Prozessadressraumkennungen (PASIDs), z. B. PASID2, PASID3 und PASID5). Dies zeigt sich in folgender Speicherzuweisungsanforderung: cxl-mmap([C,D], allocate, 100GB, PASID2,PASID3,PASID5, NULL <call-back>). Es ist anzumerken, dass zusätzlich Speicherdomänen mit einer Mandanten-ID assoziiert sein können, die wiederum in eine oder mehrere PASIDs abgebildet werden können, um mandantenweise Kohärenz bereitzustellen. Es ist anzumerken, dass bei manchen Implementierungen ein „Mandant“ als eine Instanz aller Prozesse definiert sein kann. Ausführungsformen können die Definition einer kohärenten Domäne als eine von zwei Optionen ermöglichen: (1) ID (Mandanten-ID), die einen Satz von PASIDs enthält; und (2) PASID-Granularität (die durch Mandanten-ID und PASID identifiziert werden kann).
  • Man kann nun auch die Kohärenz abschalten, nachdem eine Transaktion abgeschlossen ist, indem dieselbe Speicherzuweisungsanforderung verwendet wird, durch Verwenden eines Modifikationsindikators anstelle eines Zuweisungsindikators wie folgt: cxl-mmap([C,D], modify, 100GB, NULL <coherence>, NULL <call-back>). Derselbe Mechanismus kann verwendet werden, um Kohärenz später einzuschalten, um zum Beispiel Kohärenz nur für PASID5 wie folgt zu aktualisieren: cxl-mmap([C,D], modify, 100GB, PASID5, NULL <callback>).
  • Wie weiter oben gezeigt, können diese Speicherzuweisungs- und Aktualisierungsanforderungen eine Erweiterung beinhalten, die als „Rückruf“ bezeichnet wird, die verwendet werden kann, um CXL-basierte Rückrufregeln zu spezifizieren. Diese Regeln können Rückfalloperationen zum Handhaben von Kohärenz bereitstellen, falls eine oder mehrere Verbindungen gesättigt sind. Dies ist analog zu Back-Off-Mechanismen zum Sperren, wo zum Beispiel, falls ein Sperre nicht erworben wird, ein anderer Codepfad oder eine andere Möglichkeit genommen wird. Als ein Beispiel kann eine Rückrufoption das Verwenden eines mehrphasigen Softwareübergabeprotokolls erfordern, um Kohärenz zu implementieren, falls ein Schalter ein Rückrufsignal erzeugt, das angibt, dass die Verbindungen aufgrund von Kohärenzoperationen gesättigt sind: cxl-mmap([C,D], modify, 100GB, PASID5, CALL-BACK CODEPATH *swcommitprotocol(C,D,PASID5)).
  • Eine andere Option für den Rückruf könnte eine Dienstgüte sein, bei der, falls die Verbindungen gesättigt sind, eine gegebene PASID (z. B. PASID 2) hohe Priorität/dedizierte Schalterkredite (z. B. PASID 2 führt die primäre Kohärenz erfordernde Operation durch, wohingegen PASID 3 und PASID5 einfach statistische Analysen sammeln oder Speicherbereinigung durchführen) wie folgt empfängt: cxl-mmap([C,D], modify, 100GB, PASID5, CALL-BACK QOS PASID 2).
  • Jetzt Bezug nehmend auf 1 ist ein Blockdiagramm eines Teils einer Datenzentrumsarchitektur gemäß einer Ausführungsform gezeigt. Wie in 1 gezeigt, kann das System 100 eine Sammlung von Komponenten sein, die als ein oder mehrere Server eines Datenzentrums implementiert sind. Wie veranschaulicht, beinhaltet das System 100 einen Schalter 110, z.B. einen CXL-Schalter gemäß einer Ausführungsform. Bei anderen Implementierungen kann der Schalter 110 ein anderer Typ von kohärentem Schalter sein. Es ist jedoch anzumerken, dass der Schalter 110 in jedem Fall als ein kohärenter Schalter und nicht als Schalter vom Ethernet-Typ implementiert ist. Mittels des Schalters 110, der als Fabric fungiert, können verschiedene Komponenten einschließlich einer oder mehrerer Zentralverarbeitungseinheiten (CPUs) 120, 160, einer oder mehrerer Spezialfunktionseinheiten, wie etwa einer Grafikverarbeitungseinheit (GPU) 150, und einer Netzwerkschnittstellenschaltung (NIC) 130 miteinander kommunizieren. Genauer gesagt stellen diese Vorrichtungen, von denen jede als eine oder mehrere integrierte Schaltungen implementiert sein kann, eine Ausführung von Funktionen bereit, die mit anderen Funktionen in anderen Vorrichtungen über eines von mehreren CXL-Kommunikationsprotokollen kommunizieren. Zum Beispiel kann die CPU 120 mit der NIC 130 über ein CXL.io-Kommunikationsprotokoll kommunizieren. Wiederum können die CPUs 120, 160 mit der GPU 150 über ein CXL.mem-Kommunikationsprotokoll kommunizieren. Und die CPUs 120, 160 können, als Beispiele, miteinander und von der CPU 160 zu der GPU 150 über ein CXL.cache-Kommunikationsprotokoll kommunizieren. Der Schalter 110 kann eine Steuerschaltungsanordnung beinhalten, die ermöglicht, dass verschiedene Speicherdomänen für Vorrichtungen und Anwendungen oder Dienste dynamisch zugewiesen und aktualisiert werden (einschließlich Kohärenzstatus). Beispielsweise können unterschiedliche Prozesse Kohärenz über gewisse Speicherbereiche anfordern, während andere Prozesse möglicherweise gar keine Kohärenz benötigen.
  • Wie ferner in 1 gezeigt, kann ein Systemspeicher aus verschiedenen Speichervorrichtungen gebildet sein. Bei der gezeigten Ausführungsform ist ein gebündelter Speicher 160 mit dem Schalter 110 gekoppelt. Verschiedene Komponenten können über den Schalter 110 auf den gebündelten Speicher 160 zugreifen. Außerdem können mehrere Teile des Systemspeichers direkt mit bestimmten Komponenten gekoppelt sein. Wie veranschaulicht, sind die Speichervorrichtungen 1700-3 so verteilt, dass verschiedene Bereiche direkt mit entsprechenden CPUs 120, 160, NIC 130 und GPU 150 gekoppelt sind.
  • Wie ferner in 1 veranschaulicht, können in Reaktion auf Speicherzuweisungsanforderungen, die durch Prozesse ausgegeben werden, verschiedene kohärente und nicht-kohärente Speicherdomänen innerhalb des Speichers 170 verwaltet werden. Es versteht sich, dass, während es bei der Ausführungsform von 1 auf diesem hohen Niveau gezeigt ist, viele Variationen und Alternativen möglich sind.
  • Über eine Schnittstelle gemäß einer Ausführungsform ermöglicht Software (z. B. ein Systemstapel) eine dynamische Spezifikation dieser Typen von Speicherdomänen. Bei einer Ausführungsform besteht eine Speicherdomäne aus einem Satz von Speicherbereichen mit Adressbereichen, einer Liste von PASIDs, die mit der Speicherdomäne assoziiert sind, und dem Kohärenztyp (z. B. kohärent, nicht-kohärent, nur-lese usw.). Speicherdomänen auf Vorrichtungsebene (z. B. GPU und CPU) können ebenfalls definiert werden. In anderen Fällen kann eine Speicherdomäne in einen einzigen Adressbereich abgebildet werden, wobei ein Mandant mehrere Speicherdomänen aufweisen kann.
  • Eine Schaltungsanordnung innerhalb eines Schalters kann die oben erwähnten Kohärenzdomänen implementieren. Zu diesem Zweck kann die Schaltungsanordnung dazu ausgelegt sein, Snoops und andere CXL.cache-Flüsse abzufangen und zu bestimmen, ob sie den Schalter kreuzen müssen oder nicht. In einem negativen Fall gibt sie eine entsprechende CXL. cache-Antwort zurück, um den Snoop-Anforderer darüber zu informieren, dass die Adresse nicht in der Zielplattform oder -vorrichtung für diese Anforderung gehostet wird.
  • Es ist anzumerken, dass dynamische kohärente Speicherdomänen, wie hier beschrieben, ohne irgendeine Modifikation an irgendeinem Kohärenzagenten (wie etwa einem Cache-Agenten (CA) in der CPU) implementiert werden können.
  • Jetzt Bezug nehmend auf 2 ist ein Blockdiagramm eines Schalters gemäß einer Ausführungsform gezeigt. Wie in 2 gezeigt, beinhaltet der Schalter 200 verschiedene Schaltungsanordnungen, einschließlich einer Eingangsschaltung 212, über die eingehende Anforderungen empfangen werden, und einer Ausgangsschaltung 219, über die ausgehende Kommunikationen gesendet werden. Zum Zwecke des Beschreibens der dynamischen Kohärenzmechanismen hierin beinhaltet der Schalter 210 ferner eine Konfigurationsschnittstelle 214, die Anwendungen die Fähigkeiten hierin offenlegen kann, einschließlich der Fähigkeit, kohärente Speicherdomänen dynamisch zu instanziieren und zu aktualisieren. Um zu bestimmen, ob eine eingehende Anforderung für eine kohärente Domäne ist, kann eine Kohärenzschaltung 220 Informationen in einem Systemadressendecodierer 218 nutzen, der eingehende Systemadressen in Anforderungen decodieren kann.
  • Wie ferner in dem Einsatz in 2 gezeigt, beinhaltet die Kohärenzschaltung 220 eine Cache-Agent (CA) -Schaltung 222, die eine Snoop-Verarbeitung und eine andere Kohärenzverarbeitung durchführen kann. Genauer gesagt, wenn eine Steuerschaltung 224 bestimmt, dass eine Anforderung kohärent verarbeitet werden soll, kann sie die CA-Schaltung 222 veranlassen, eine Kohärenzverarbeitung durchzuführen. Diese Bestimmung kann zumindest teilweise auf Informationen basieren, die von einer Telemetrieschaltung 226 verwaltet werden, die Verkehr durch das System verfolgen kann, einschließlich Verbindungsbandbreitenniveaus.
  • Wie ferner in 2 gezeigt, ist eine Regeldatenbank 230 innerhalb des Schalters 210 bereitgestellt, die Informationen bezüglich verschiedener Speicherdomänen speichern kann. Wie gezeigt, beinhaltet die Regeldatenbank 230 mehrere Einträge, die jeweils mit einer gegebenen Speicherdomäne assoziiert sind. Wie veranschaulicht, beinhaltet jeder Eintrag mehrere Felder, einschließlich eines Regel-ID-Feldes, eines Speicherbereichsfeldes, eines PASID-Listenfeldes, eines Vorrichtungslistenfeldes, eines Rückruffeldes und eines Kohärenzstatusfeldes. Diese unterschiedlichen Felder können in Reaktion auf eine Speicherzuweisungsanforderung gefüllt werden und können ferner in Reaktion auf zusätzliche Anforderungen für Aktualisierungen weiter aktualisiert werden.
  • Ausführungsformen können auf mandantenfähige Verwendungen bei Cloud- and Edge-Datenverarbeitung und nativen Cloud-Anwendungen mit vielen Mikrodiensten, die keine globale Kohärenz aufweisen, anwendbar sein. Zu weiteren Veranschaulichungszwecken können mehrere unabhängige CXL-Kohärenzdomänen, die mit unterschiedlichen Mandanten assoziiert sind, in einem Systemspeicher isoliert werden. Beispielsweise könnte eine Anwendung vorhanden sein, die Container oder virtuelle Maschinen einsetzt, die folgenden Domänen spezifizieren:
    • Domäne 1 - VMs A, B, C = Datenverarbeitungsvorrichtungen S1, S2, S3, A3, die den Speicherbereich [x,y] gemeinsam nutzen
    • Domäne 2 - VMs D, E = Datenverarbeitungsvorrichtungen S3, S4, S5, A4, die den Speicherbereich [z,t] gemeinsam nutzen
    • Domäne 3 - Gemeinsam genutzter Speicher zwischen VMs C und D - Alle Datenverarbeitungsvorrichtungen
    • App A erzeugt Snoop @X1 [x,y], der CXL-Schalter nur die Snoops S1, S2, S3, A3.
  • Wie in 2 gezeigt, sind diese unterschiedlichen Speicherdomänen, die über die Plattformen gemeinsam genutzt werden, nicht über alle Datenverarbeitungsvorrichtungen kohärent. Für jeden Speicherbereich wird ein Satz von Zielen zum Snoop spezifiziert, wie etwa mit den Domains 1, 2 und 3 oben gezeigt. Ferner können manche Speicherbereiche nur lesbar sein, wie ein Hauptspeicher einer Datenbank, der einen großen Prozentsatz der Speicherkapazitätsnutzung berücksichtigen kann. Für solche definierten Bereiche ist kein Snoop oder Kohärenz erforderlich.
  • Mit dieser Anordnung kann der Schalter 210 eine Kohärenz-Dienstgüte (QoS) zwischen kohärenten Domänen und innerhalb kohärenter Domänen bereitstellen. Auf diese Weise legt der Schalter 210 Schnittstellen frei, die verwendet werden können durch: (1) den Infrastruktur-Eigentümer, um zu spezifizieren, welche kohärente QoS (in Bezug auf Priorität oder kohärente Transaktionen pro Sekunde) jeder kohärenten Domäne zugeordnet sind; und (2) der Eigentümer der kohärenten Domäne, um zu spezifizieren, was das QoS-Niveau ist, das zwischen Kohärenzflüssen zwischen jedem der Teilnehmer einer Domäne zugeordnet ist.
  • Über die Telemetrieschaltung 226 wird aktives Telemetriekohärenzsättigungs-Bewusstsein realisiert. Dies ermöglicht es Softwarestapeln zu wissen, wie es bei Zugriff auf verschiedene Objekte innerhalb einer kohärenten Domäne zu Leistungsverschlechterung kommen kann. Bei einer Ausführungsform kann die Telemetrieschaltung 226 die Sättigung der verschiedenen Pfade zwischen jedem der Teilnehmer der Domäne und den verschiedenen Objekten verfolgen und jedes von ihnen in Abhängigkeit von bereitgestellten Überwachungsregeln benachrichtigen.
  • Bei einer Ausführungsform zum Implementieren von Überwachungs- und Dienstgüteflüssen kann der Schalter 210 auf inhaltadressierbarem Speicher (CAM) basierende Strukturtypen beinhalten, die durch Objekt-ID markiert werden können, um den Zugriff zu verfolgen und QoS-Durchsetzung anzuwenden. Zu diesem Zweck verfolgt der Systemadressendecodierer 216 die verschiedenen Objekte und bildet eine Kohärenzanforderung (wie etwa eine Leseanforderung) auf dieses Objekt ab. Daher kann der Schalter 210 bei einer bestimmten Kohärenzanforderung die SAD 216 verwenden, um zu entdecken, zu welcher kohärenten Domäne und zu welchem kohärenten Objekt er gehört; die erreichte und spezifizierte QoS zu identifizieren und zu bestimmen, wann die Anforderung verarbeitet werden soll. Es ist anzumerken, dass, falls bestimmt wird, die Anforderung noch nicht zu verarbeiten, sie dann in einer Warteschlange gespeichert werden kann. Wenn eine Anforderung verarbeitet wird, kann fortgefahren werden, wenn die Domäne kohärent ist. Falls sie nicht kohärent ist, kann der Schalter 210 einen „fingierten“ Fluss ausführen und auf den Urheber mit einer Antwort antworten, die erwartet wird, wenn ein Ziel die Zeile nicht aufweist. Ferner sendet der Schalter 210 die Anforderung direkt über die Ausgangsschaltung 219 an das Ziel. Als ein Beispiel kann der Schalter, wenn er den Fluss fingiert, ein globales Beobachtungssignal (z. B. ACK GO) zurückgeben (das dem Urheber angibt, dass keiner diese Zeile aufweist).
  • Der Schalter 210 kann über die Konfigurationsschnittstelle 214 ein Registrieren einer neuen kohärenten Domäne bereitstellen. Bei einer Ausführungsform ermöglicht diese Schnittstelle das Spezifizieren des Identifizierens der Adressdomäne; und des Speicherbereichs, der zu dieser Speicherdomäne gehört. Hier wird angenommen, dass der physische Speicherbereich (von 0.. N) auf alle verschiedenen adressierbaren Speicher in dem System abgebildet wird; die Schnittstelle ermöglicht auch die Spezifikation von Elementen innerhalb der Speicherdomäne, einer Liste von Prozessadressen-IDs (PASID), die zu der Speicherdomäne gehören, und optional der Liste von Vorrichtungen innerhalb der Speicherdomäne. Die Konfigurationsschnittstelle 214 kann ferner das Ändern oder Entfernen einer Speicherdomäne ermöglichen.
  • Die Kohärenzschaltung 220 kann dazu konfiguriert sein, CXL.cache-Anforderungen abzufangen und zu bestimmen, ob sie abgefangen werden sollen oder nicht. Zu diesem Zweck kann die Steuerschaltung 224 für eine Anforderung den Systemadressendecodierer 218 verwenden, um zu identifizieren, ob es eine Kohärenzdomäne gibt, die in einen bestimmten Adressraum abgebildet wird, der mit der Speicheradresse in der Anforderung übereinstimmt. Falls keine kohärente Domäne gefunden wird, verlässt die Anforderung die Ausgangsschaltung 219 zu dem endgültigen Ziel hin.
  • Falls eine oder mehrere Domänen gefunden werden, kann die Kohärenzschaltung 220 für jede dieser Folgendes durchführen: Prüfen, ob die PASID, die in der Anforderung enthalten ist, in diese Domäne abgebildet wird. Falls ja, verlässt die Anforderung die Ausgangsschaltung 219 zu dem endgültigen Ziel hin. Falls nicht, kann die Kohärenzschaltung 220 die CXL.cache-Snoop- oder Speicheranforderung fallenlassen. Die Kohärenzschaltung 220 implementiert die Kohärenzantwort, die dieser speziellen CXL.cache-Anforderung entspricht. Antwortet beispielsweise mit ungültig.
  • Jetzt Bezug nehmend auf 3 ist ein Flussdiagramm eines Verfahrens gemäß einer Ausführungsform gezeigt. Wie in 3 gezeigt, ist das Verfahren 300 ein Verfahren zum Erzeugen und Aktualisieren von Speichereigenschaften in Reaktion auf eine Speicherzuweisungsanforderung. Von daher kann das Verfahren 300 durch eine Schalterschaltungsanordnung, wie etwa eine Kohärenzschaltung innerhalb eines Schalters gemäß einer Ausführungsform durchgeführt werden. Von daher kann das Verfahren 300 durch Hardwareschaltungsanordnungen, Firmware, Software und/oder Kombinationen davon durchgeführt werden.
  • Wie veranschaulicht, beginnt das Verfahren 300 durch Empfangen einer Speicherzuweisungsanforderung in einem Schalter (Block 310). Als ein Beispiel kann eine Anwendung, wie etwa eine VM, ein Prozess oder eine beliebige andere Softwareentität, diese Anforderung ausgeben, die diverse Informationen beinhalten kann. Obwohl Ausführungsformen in dieser Hinsicht nicht beschränkt sind, können Beispielinformationen in der Anforderung Speicherbereichsinformationen, Kohärenzstatus, Adressraumkennungsinformationen und so weiter beinhalten.
  • Die nächste Steuerung geht zum Rhombus 320 über, wo festgestellt wird, ob für einen Speicherbereich dieser Speicherzuweisungsanforderung bereits ein Eintrag in einer Speicherdomänentabelle existiert. Falls nicht, geht die Steuerung zu Block 330 über, wo ein Eintrag in dieser Tabelle erzeugt werden kann. Als ein Beispiel kann der Eintrag die Felder beinhalten, die oben mit Bezug auf 2 beschrieben sind. Andernfalls, falls bestimmt wird, dass bereits ein Eintrag existiert, geht die Steuerung zu Block 340 über, wo der Eintrag aktualisiert werden kann. Zum Beispiel kann ein Kohärenzstatus geändert werden, z. B. eine kohärente Domäne wird zu einer nicht-kohärenten Domäne gemacht, wie etwa nachdem eine Transaktion abgeschlossen wird, eine Speicherdomäne gelöscht wird, wie etwa, wenn die Anwendung endet, und so weiter. Obwohl in der Ausführungsform von 3 auf diesem hohen Niveau gezeigt, sind viele Variationen und Alternativen möglich.
  • Jetzt Bezug nehmend auf 4 ist ein Flussdiagramm eines Verfahrens gemäß einer anderen Ausführungsform gezeigt. Wie in 4 gezeigt, ist das Verfahren 400 ein Verfahren zum Handhaben einer eingehenden Speicheranforderung in einem Schalter. Von daher kann das Verfahren 400 durch verschiedene Schaltungen innerhalb des Schalters durchgeführt werden. Von daher kann das Verfahren 400 durch Hardwareschaltungsanordnungen, Firmware, Software und/oder Kombinationen davon durchgeführt werden.
  • Das Verfahren 400 beginnt mit dem Empfangen einer Speicheranforderung im Schalter (Block 410). Zu Diskussionszwecken sei angenommen, dass diese Speicheranforderung zum Lesen von Daten dient. Diese Leseanforderung umfasst eine Adresse, an der sich angeforderte Daten befinden. Als Nächstes kann bei Block 420 auf eine Speicherdomänentabelle basierend auf einer Adresse der Speicheranforderung zugegriffen werden, um z. B. einen Eintrag in der Tabelle zu identifizieren, der mit einer Speicherdomäne, umfassend die Adresse, assoziiert ist.
  • Bei Rhombus 425 wird bestimmt, ob diese Speicheranforderung für einen kohärenten Speicherbereich ist. Diese Bestimmung kann auf einem Kohärenzstatusindikator basieren, der in einem Kohärenzstatusfeld des relevanten Eintrags der Speicherdomänentabelle vorhanden ist. Falls nicht, geht die Steuerung zu Block 430 über, wo die Speicheranforderung ohne weitere Verarbeitung innerhalb des Schalters an den Zielort weitergeleitet wird, da diese Anforderung an eine nicht-kohärente Domäne gerichtet ist.
  • Immer noch unter Bezugnahme auf 4, falls bestimmt wird, dass die Anforderung für eine kohärente Speicherdomäne ist, geht die Steuerung zu Rhombus 440 über, um zu bestimmen, ob die Speicheranforderung mit einem Snoop assoziiert ist. Diese Bestimmung kann darauf basieren, ob diese Anforderung für ein Lesen ist, wobei in diesem Fall eine Snoop-Verarbeitung durchgeführt werden kann. Andere Speicheranforderungen, wie etwa eine Schreibanforderung, können direkt ohne Snoop-Verarbeitung behandelt werden (Block 445).
  • Als Nächstes geht die Steuerung zu Rhombus 450 über, um zu bestimmen, ob eine Snoop-Verarbeitung erlaubt ist. Diese Bestimmung kann auf einem oder mehreren Systemparametern, wie etwa dem Verbindungsstatus, basieren. Falls bestimmt wird, dass eine Snoop-Verarbeitung nicht erlaubt ist, wie etwa wenn hoher Verbindungsverkehr vorhanden ist, geht die Steuerung zu Block 460 über. Bei Block 460 kann die Speicheranforderung gemäß Rückrufinformationen behandelt werden. Genauer gesagt kann auf den relevanten Eintrag in der Speicherdomänentabelle zugegriffen werden, um einen Rückfallverarbeitungsmechanismus zu bestimmen, der zum Handhaben von Snoop-Verarbeitung verwendet werden kann. Auf diese Weise kann reduzierter Verbindungsverkehr realisiert werden.
  • Immer noch unter Bezugnahme auf 4 geht die Steuerung, falls bestimmt wird, dass eine Snoop-Verarbeitung bei Rhombus 450 erlaubt ist, zu Block 470 über, wo eine Snoop-Verarbeitung durchgeführt wird, um das Vorhandensein und den Status angeforderter Daten in verschiedenen verteilten Caches und anderen Speicherstrukturen zu bestimmen. Als Nächstes kann bei Block 480 die Speicheranforderung basierend auf Snoop-Ergebnissen behandelt werden. Wenn zum Beispiel bestimmt wird, dass eine jüngste Kopie der Daten gültig ist, kann die Leseanforderung durchgeführt werden. Oder bei einer Angabe verschmutzter Daten können verschmutzte Daten verwendet werden, um einen Leseabschluss bereitzustellen. Obwohl in der Ausführungsform von 4 auf diesem hohen Niveau gezeigt, sind viele Variationen und Alternativen möglich.
  • Jetzt Bezug nehmend auf 5 ist ein Blockdiagramm eines Systems gemäß einer anderen Ausführungsform der vorliegenden Erfindung gezeigt. Wie in 5 gezeigt, kann ein System 500 eine beliebige Art von Datenverarbeitungsvorrichtung sein und kann in einer Ausführungsform ein Serversystem, wie etwa eine Edge-Plattform, sein. Bei der Ausführungsform von 5 beinhaltet das System 500 mehrere CPUs 510a,b, die wiederum mit jeweiligen Systemspeichern 520a,b gekoppelt sind, die bei Ausführungsformen als Dual-Inline-Speichermodule (DIMMs), wie etwa DDR-Speicher mit doppelter Datenrate, persistente oder andere Speichertypen, implementiert sein können. Es ist zu beachten, dass die CPUs 510 über ein Zwischenverbindungssystem 515, 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 510 koppeln zu können, können mehrere Zwischenverbindungen 530al-b2 vorhanden sein. Bei einer Ausführungsform kann jede Zwischenverbindung 530 eine gegebene Instanz einer CXL sein.
  • Bei der gezeigten Ausführungsform koppeln jeweilige CPUs 510 bei einer Ausführungsform mit entsprechenden feldprogrammierbaren Gate-Arrays (FPGAs)/Beschleunigervorrichtungen 550a,b (die Grafikverarbeitungseinheiten (GPUs) beinhalten können). Außerdem koppeln die CPUs 510 auch mit intelligenten NIC-Vorrichtungen 560a,b. Wiederum koppeln die intelligenten NIC-Vorrichtungen 560a,b mit Schaltern 580a,b (z. B. CXL-Schalter gemäß einer Ausführungsform), die wiederum mit einem gebündelten Speicher 590a,b, wie etwa einem persistenten Speicher, gekoppelt sind. Bei Ausführungsformen können die Schalter 580 feinkörnige und dynamische Kohärenzverwaltung unabhängiger kohärenter (und nicht-kohärenter) Speicherdomänen durchführen, wie hier beschrieben. Natürlich sind Ausführungsformen nicht auf Schalter beschränkt, und die hier beschriebenen Techniken können durch andere Entitäten eines Systems durchgeführt werden.
  • Bezug nehmend auf 6 ist eine Ausführungsform einer SoC-Gestaltung gemäß einer Ausführungsform dargestellt. Als ein spezifisches veranschaulichendes Beispiel kann das SoC 600 zum Einfügen in eine beliebige Art von Datenverarbeitungsvorrichtung konfiguriert sein, die von der tragbaren Vorrichtung zu dem Serversystem reicht. Hier weist das SoC 600 2 Kerne 606 und 607 auf. Die Kerne 606 und 607 können einer Befehlssatzarchitektur entsprechen, wie etwa einem auf Intel® Architecture Core™ basierenden Prozessor, einem AMD-Prozessor (Advanced Micro Devices, Inc.), einem MIPS-basierten Prozessor, einer ARM-basierten Prozessorkonzeption oder einem Kunde davon sowie deren Lizenznehmer oder Übernehmer. Die Kerne 606 und 607 sind mit der Cache-Steuerung 608 gekoppelt, die mit der Busschnittstelleneinheit 609 und dem Cache-Speicher L2 610 assoziiert ist, um mit anderen Teilen des Systems 600 über eine Verbindung 612 zu kommunizieren. Wie zu sehen ist, beinhaltet die Busschnittstelleneinheit 609 eine Kohärenzschaltung 611, die Kohärenzoperationen, wie hier beschrieben, durchführen kann.
  • Die Zwischenverbindung 612 stellt Kommunikationskanäle zu den anderen Komponenten bereit, wie etwa einem Teilnehmeridentitätsmodul (SIM) 630 zum Verbinden mit einer SIM-Karte, einem Boot-ROM 635 zum Halten von Boot-Code zur Ausführung durch die Kerne 606 und 607 zum Initialisieren und Booten des SoC 600, einer SDRAM-Steuerung 640 zum Verbinden mit einem externen Speicher (z. B. DRAM 660), einer Flash-Steuerung 645 zum Verbinden mit einem nicht-flüchtigen Speicher (z. B. Flash 665), einer Peripheriesteuerung 650 (z. B. eine eSPI-Schnittstelle) zum Verbinden mit Peripheriegeräten, einem Videocodec 620 und einer Videoschnittstelle 625 zum Anzeigen und Empfangen einer Eingabe (z. B. berührungsempfindliche Eingabe), einer GPU 615 zum Durchführen grafikbezogener Berechnungen usw. Außerdem veranschaulicht das System Peripheriegeräte zur Kommunikation, wie etwa ein Bluetooth-Modul 670, ein 3G-Modem 675, ein GPS 680 und WiFi 685. In dem System ist auch eine Leistungssteuerung 655 enthalten. Ferner kann, wie in 6 veranschaulicht, das System 600 zusätzlich Schnittstellen einschließlich einer MIPI-Schnittstelle 692, z. B. zu einer Anzeige, und/oder einer HDMI-Schnittstelle 695 beinhalten, die auch mit derselben oder einer anderen Anzeige gekoppelt sein können.
  • Jetzt Bezug nehmend auf 7 ist ein Blockdiagramm eines Systems gemäß einer anderen Ausführungsform der vorliegenden Erfindung, wie etwa einer Edge-Plattform, gezeigt. Wie in 7 gezeigt, beinhaltet das Multiprozessorsystem 700 einen ersten Prozessor 770 und einen zweiten Prozessor 780, die über eine Punkt-zu-Punkt-Zwischenverbindung 750 gekoppelt sind. Wie in 7 gezeigt, kann jeder der Prozessoren 770 und 780 viele Kernprozessoren sein, einschließlich repräsentativer erster und zweiter Prozessorkerne (d. h. Prozessorkerne 774a und 774b und Prozessorkerne 784a und 784b).
  • Bei der Ausführungsform von 7 beinhalten die Prozessoren 770 und 780 ferner Punkt-zu-Punkt-Zwischenverbindungen 777 und 787, die über Zwischenverbindungen 742 und 744 (die CXL-Busse sein können) mit den Schaltern 759 und 760 gekoppelt sind, die feinkörnige und dynamische Kohärenzverwaltung unabhängiger kohärenter (und nicht-kohärenter) Speicherdomänen durchführen können, wie hier beschrieben. Wiederum koppeln die Schalter 759, 760 mit gebündelten Speichern 755 und 765. Auf diese Weise können die Schalter 759, 760 basierend auf Regeln, die z. B. durch eine Anwendung bereitgestellt werden, die auf den Prozessoren 770 und 780 ausgeführt wird, eine Verkehrsüberwachung und dynamische Steuerung von Kohärenzverkehr durchführen, einschließlich Rekonfigurieren zu einem Rückfallmechanismus für gewissen Kohärenzverkehr basierend auf Verbindungsüberlastungsniveaus, die eine gegebene Schwelle überschreiten, wie hier beschrieben.
  • Weiterhin Bezug nehmend auf 7 umfasst der erste Prozessor 770 ferner einen Speichersteuerungsknoten (MCH) 772 und Punkt-zu-Punkt-Schnittstellen (P-P) 776 und 778. In ähnlicher Weise umfasst der zweite Prozessor 780 einen MCH 782 und P-P-Schnittstellen 786 und 788. Wie in 7 gezeigt, koppeln MCHs 772 und 782 die Prozessoren mit jeweiligen Speichern, nämlich einem Speicher 732 und einem Speicher 734, die Teile des Systemspeichers (z. B. DRAM) sein können, die lokal mit den jeweiligen Prozessoren verbunden sind. Der erste Prozessor 770 und der zweite Prozessor 780 können über P-P-Zwischenverbindungen 776 bzw. 786 mit einem Chipsatz 790 gekoppelt sein. Wie in 7 gezeigt, umfasst Chipsatz 790 P-P-Schnittstellen 794 und 798.
  • Des Weiteren beinhaltet der Chipsatz 790 eine Schnittstelle 792 zum Koppeln des Chipsatzes 790 mit einer Hochleistungsgrafik-Engine 738 durch eine P-P-Zwischenverbindung 739. Wie in 7 gezeigt, können verschiedene Eingabe/Ausgabe(E/A)-Vorrichtungen 714 mit dem ersten Bus 716 gekoppelt sein, zusammen mit einer Busbrücke 718, die den ersten Bus 716 mit einem zweiten Bus 720 koppelt. Verschiedene Vorrichtungen können mit dem zweiten Bus 720 gekoppelt sein, einschließlich zum Beispiel einer Tastatur/Maus 722, Kommunikationsvorrichtungen 726 und einer Speichereinheit 728, wie etwa einem Diskettenlaufwerk oder einer anderen Massenspeichervorrichtung, die in einer Ausführungsform Code 730 umfassen kann. Ferner kann ein Audio-E/A 524 mit dem zweiten Bus 720 gekoppelt sein.
  • Ausführungsformen, wie hier beschrieben, können in einer breiten Vielfalt von Netzwerkarchitekturen verwendet werden. Zu diesem Zweck können viele verschiedene Arten von Rechenplattformen in einer vernetzten Architektur, die zwischen einer gegebenen Edge-Vorrichtung und einem Datenzentrum koppelt, die hier beschriebene feinkörnige und dynamische Kohärenzverwaltung unabhängiger kohärenter (und nicht-kohärenter) Speicherdomänen durchführen. Jetzt Bezug nehmend auf 8 ist ein Blockdiagramm einer Netzwerkarchitektur gemäß einer anderen Ausführungsform der vorliegenden Erfindung gezeigt. Wie in 8 gezeigt, beinhaltet die Netzwerkarchitektur 800 verschiedene Datenverarbeitungsplattformen, die sich in einem sehr weiten Bereich befinden können und die unterschiedliche Latenzen beim Kommunizieren mit unterschiedlichen Vorrichtungen aufweisen.
  • In der Ansicht auf hoher Ebene von 8 beinhaltet die Netzwerkarchitektur 800 eine repräsentative Vorrichtung 810, wie etwa ein Smartphone. Diese Vorrichtung kann über verschiedene Funkzugangsnetze (RANs) kommunizieren, einschließlich eines RAN 820 und eines RAN 830. Das RAN 820 wiederum kann mit einer Plattform 825 gekoppelt sein, die eine Edge-Plattform sein kann, wie etwa eine Fog-/Far-/Near-Edge-Plattform, und die die Ausführungsformen hierin ausnutzen kann. Andere Anforderungen können durch eine mit dem RAN 830 gekoppelte Far-Edge-Plattform 835 gehandhabt werden, die auch Ausführungsformen nutzen kann.
  • Wie ferner in 8 veranschaulicht, kann eine andere Near-Edge-Plattform 840 mit den RANs 820, 830 koppeln. Es wird angemerkt, dass sich diese Near-Edge-Plattform näher an einem Datenzentrum 850 befinden kann, das eine große Menge an Datenverarbeitungsressourcen aufweisen kann. Durch das Pushen von Nachrichten zu diesen entfernteren Plattformen wird eine größere Latenz beim Handhaben von Anforderungen für die Edge-Vorrichtung 810 verursacht. Es versteht sich, dass alle Plattformen, die in 8 gezeigt sind, Ausführungsformen, wie hier beschrieben, einschließen können, um feinkörnige und dynamische Kohärenzverwaltung unabhängiger kohärenter (und nicht-kohärenter) Speicherdomänen durchzuführen.
  • Die folgenden Beispiele betreffen weitere Ausführungsformen.
  • In einem Beispiel umfasst eine Vorrichtung: eine Tabelle zum Speichern mehrerer Einträge, wobei jeder Eintrag eine Speicherdomäne eines Systems und einen Kohärenzstatus der Speicherdomäne identifizieren soll; und eine Steuerschaltung, die mit der Tabelle gekoppelt ist. Die Steuerschaltung kann eine Anforderung zum Ändern eines Kohärenzstatus einer ersten Speicherdomäne des Systems empfangen und einen ersten Eintrag der Tabelle für die erste Speicherdomäne dynamisch aktualisieren, um den Kohärenzstatus zwischen einer kohärenten Speicherdomäne und einer nicht-kohärenten Speicherdomäne zu ändern.
  • In einem Beispiel soll die Steuerschaltung eine Speicherzuweisungsanforderung für eine zweite Speicherdomäne des Systems empfangen und einen zweiten Eintrag in die Tabelle für die zweite Speicherdomäne schreiben, wobei der zweite Eintrag einen Kohärenzstatus der zweiten Speicherdomäne als eine der kohärenten Speicherdomäne oder der nicht-kohärenten Speicherdomäne angeben soll.
  • In einem Beispiel umfasst der erste Eintrag Speicherbereichsinformationen, eine oder mehrere Prozessadressenkennungen, die zu der ersten Speicherdomäne gehören, ein oder mehrere Attribute bezüglich der ersten Speicherdomäne und Rückrufinformationen.
  • In einem Beispiel umfassen die Rückrufinformationen mindestens eine Rückfallregel zum Handhaben von Kohärenz für eine Speicheranforderung, wenn ein Zwischenverbindungsbelegungsniveau eine Schwelle überschreitet.
  • In einem Beispiel umfasst die Einrichtung ferner eine Telemetrieschaltung zum Beibehalten von Telemetrieinformationen, die das Zwischenverbindungsbelegungsniveau umfassen.
  • In einem Beispiel soll die Vorrichtung Kohärenz für Speicheranforderungen gemäß mindestens einer Rückfallregel handhaben, wenn ein Zwischenverbindungsbelegungsniveau eine Schwelle überschreitet.
  • In einem Beispiel umfasst die Vorrichtung einen kohärenten Schalter zum Empfangen, vor der Kohärenzstatusänderungsanforderung, einer ersten Speicheranforderung für einen ersten Ort in der ersten Speicherdomäne und zum Durchführen einer Kohärenzverarbeitung und zum Empfangen, nach der Kohärenzstatusänderungsanforderung, einer zweiten Speicheranforderung für einen anderen Ort in der ersten Speicherdomäne und Leiten der zweiten Speicheranforderung zu einem Ziel der zweiten Speicheranforderung, ohne die Kohärenzverarbeitung durchzuführen.
  • In einem Beispiel soll die Steuerschaltung eine Speicherzuweisungsanforderung für eine zweite Speicherdomäne des Systems empfangen, das einen Hauptdatenspeicher einer Datenbankanwendung umfasst, wobei die Speicherzuweisungsanforderung einen Kohärenzstatus der zweiten Speicherdomäne als eine nicht-kohärente Speicherdomäne angeben soll, und wobei, in Reaktion auf die Speicherzuweisungsanforderung, die Steuerschaltung einen zweiten Eintrag in die Tabelle für die zweite Speicherdomäne schreiben soll, wobei der zweite Eintrag den Kohärenzstatus der zweiten Speicherdomäne als die nicht-kohärente Speicherdomäne angeben soll.
  • In einem anderen Beispiel umfasst ein Verfahren: Empfangen, in einem Schalter eines Systems, einer Speicheranforderung, wobei der Schalter zwischen einem Anforderer und einem Zielspeicher gekoppelt ist; Bestimmen, ob eine Adresse der Speicheranforderung innerhalb einer kohärenten Speicherdomäne liegt; wenn die Adresse der Speicheranforderung innerhalb der kohärenten Speicherdomäne liegt, Durchführen einer Snoop Verarbeitung für die Speicheranforderung und Handhaben der Speicheranforderung basierend auf der Snoop-Verarbeitung; und wenn die Adresse der Speicheranforderung nicht innerhalb der kohärenten Speicherdomäne liegt, Leiten der Speicheranforderung vom Schalter zum Zielspeicher, ohne die Snoop-Verarbeitung durchzuführen.
  • In einem Beispiel umfasst das Verfahren ferner Bestimmen eines Zwischenverbindungsbelegungsniveaus.
  • In einem Beispiel umfasst das Verfahren ferner, falls das Zwischenverbindungsbelegungsniveau größer als eine Schwelle ist, Handhaben der Speicheranforderung gemäß Rückrufinformationen, die mit der kohärenten Speicherdomäne assoziiert sind, wobei die Rückrufinformationen in einer Speicherdomänentabelle gespeichert sind.
  • In einem Beispiel umfasst das Verfahren ferner Bestimmen, ob sich die Adresse innerhalb der kohärenten Speicherdomäne befindet, basierend auf Speicherbereichsinformationen, die in einer Speicherdomänentabelle gespeichert sind.
  • In einem Beispiel umfasst das Verfahren ferner Empfangen einer Speicherzuweisungsanforderung für eine erste kohärente Speicherdomäne und Speichern eines Eintrags für die erste kohärente Speicherdomäne in einer Speicherdomänentabelle, wobei der Eintrag Speicherbereichsinformationen, eine oder mehrere Prozessadressenkennungen, die zu der ersten kohärenten Speicherdomäne gehören, eine oder mehrere Vorrichtungen innerhalb der ersten kohärenten Speicherdomäne und Rückrufinformationen, um mindestens eine Rückfallregel zum Handhaben einer Speicheranforderung an die erste kohärente Speicherdomäne zu identifizieren, wenn ein Zwischenverbindungsbelegungsniveau eine Schwelle überschreitet.
  • In einem Beispiel umfasst das Verfahren ferner: Zuweisen einer ersten Speicherdomäne für einen ersten Mandanten in Reaktion auf eine erste Speicherzuweisungsanforderung für eine kohärente Speicherdomäne, die mit ersten mehreren Vorrichtungen des Systems und einem ersten Speicherbereich assoziiert ist; und Zuweisen einer zweiten Speicherdomäne für einen zweiten Mandanten in Reaktion auf eine zweite Speicherzuweisungsanforderung für eine nicht-kohärente Speicherdomäne, die mit zweiten mehreren Vorrichtungen des Systems und einem zweiten Speicherbereich assoziiert ist, wobei die erste Speicherdomäne von der zweiten Speicherdomäne isoliert ist.
  • Bei einem anderen Beispiel soll ein computerlesbares Medium, das Anweisungen beinhaltet, das Verfahren nach einem der obigen Beispiele durchführen.
  • Bei einem weiteren Beispiel soll ein computerlesbares Medium, das Daten beinhaltet, durch wenigstens eine Maschine verwendet werden, um wenigstens eine integrierte Schaltung zu fertigen, um das Verfahren nach einem der obigen Beispiele durchzuführen.
  • Bei einem noch weiteren Beispiel umfasst eine Einrichtung Mittel zum Durchführen des Verfahrens nach einem der obigen Beispiele.
  • Bei einem anderen Beispiel umfasst ein System: mehrere Prozessoren; mehrere Beschleuniger; einen Systemspeicher, der dynamisch in mehrere Speicherdomänen aufzuteilen ist, die mindestens eine kohärente Speicherdomäne und mindestens eine nicht-kohärente Speicherdomäne beinhalten; und einen Schalter, um mindestens einige der mehreren Prozessoren und mindestens einige der mehreren Beschleuniger über CXL-Verbindungen (Computer Express Link) zu koppeln. Der Schalter kann die mindestens eine kohärente Speicherdomäne in Reaktion auf eine erste Speicherzuweisungsanforderung dynamisch erzeugen und die mindestens eine nicht-kohärente Speicherdomäne in Reaktion auf eine zweite Speicherzuweisungsanforderung dynamisch erzeugen.
  • In einem Beispiel soll der Schalter die mindestens eine kohärente Speicherdomäne in Reaktion auf eine Speicheraktualisierungsanforderung dynamisch als eine andere nicht-kohärente Speicherdomäne aktualisieren.
  • In einem Beispiel umfasst der Schalter einen CXL-Schalter, der eine Speicherdomänentabelle mit mehreren Einträgen umfasst, wobei jeder der mehreren Einträge Speicherbereichsinformationen, mindestens eine von einer oder mehreren Prozessadressenkennungen oder mindestens eine von einer oder mehreren Mandantenkennungen, die zu einer Speicherdomäne gehören, und eine oder mehrere Vorrichtungen innerhalb der Speicherdomäne speichern soll.
  • In einem Beispiel sollen mindestens einige der mehreren Einträge ferner mindestens eine Rückfallregel zum Handhaben einer Speicheranforderung speichern, wenn ein Zwischenverbindungsbelegungsniveau eine Schwelle überschreitet.
  • In einem Beispiel umfasst der CXL-Schalter ferner eine Telemetrieschaltung zum Beibehalten von Telemetrieinformationen, die das Zwischenverbindungsbelegungsniveau umfassen.
  • In einem Beispiel soll der CXL-Schalter die erste Speicherzuweisungsanforderung empfangen, umfassend einen Speicherbereich für die mindestens eine kohärente Speicherdomäne, einen Kohärenzindikator, eine oder mehrere Prozessadressenkennungen, die zu der mindestens einen kohärenten Speicherdomäne gehören, eine oder mehrere Vorrichtungen innerhalb der mindestens einen kohärenten Speicherdomäne und mindestens eine Rückfallregel zum Handhaben von Kohärenz für eine Speicheranforderung, wenn ein Belegungsniveau auf einer oder mehreren der CXL-Verbindungen eine Schwelle überschreitet.
  • 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. Bei einer Ausführungsform kann zum Beispiel eine Kommunikationsvorrichtung eingerichtet 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, Solid State Drives), CD-Nur-Lese-Speicher (CD-ROMs, Compact Disk Read-Only Memories), wiederbeschreibbare Compact Disks (CD-RWs) und magnetooptische Platten, Halbleitervorrichtungen, wie etwa Nur-Lese-Speicher (ROMs, Read-Only Memories), Direktzugriffsspeicher (RAMs, Random Access Memories), wie etwa dynamische Direktzugriffsspeicher (DRAMs, Dynamic Random Access Memories), statische Direktzugriffsspeicher (SRAMs, Static Random Access Memories), löschbare, programmierbare Nur-Lese-Speicher (EPROMs, Erasable Programmable Read-Only Memories), Flash-Speicher, elektrisch löschbare, programmierbare Nur-Lese-Speicher (EEPROMs, Electrically Erasable Programmable Read-Only Memories), 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 Erfindung mit Bezug auf eine begrenzte Anzahl von Ausführungsformen beschrieben wurde, wird der Fachmann zahlreiche Modifikationen und Varianten davon zu würdigen wissen. Es ist beabsichtigt, dass die angehängten Ansprüche alle solchen Modifikationen und Varianten, wie sie in den wahren Geist und Schutzumfang dieser vorliegenden Erfindung fallen, abdecken.

Claims (20)

  1. Einrichtung, die Folgendes umfasst: eine Tabelle zum Speichern mehrerer Einträge, wobei jeder Eintrag eine Speicherdomäne eines Systems und einen Kohärenzstatus der Speicherdomäne identifizieren soll; und eine Steuerschaltung, die mit der Tabelle gekoppelt ist, wobei die Steuerschaltung dazu dient, eine Anforderung zum Ändern eines Kohärenzstatus einer ersten Speicherdomäne des Systems zu empfangen, wobei die Steuerschaltung dazu dient, einen ersten Eintrag der Tabelle für die erste Speicherdomäne dynamisch zu aktualisieren, um den Kohärenzstatus zwischen einer kohärenten Speicherdomäne und einer nicht-kohärenten Speicherdomäne zu ändern.
  2. Einrichtung nach Anspruch 1, wobei die Steuerschaltung dazu dient, eine Speicherzuweisungsanforderung für eine zweite Speicherdomäne des Systems zu empfangen und einen zweiten Eintrag in die Tabelle für die zweite Speicherdomäne zu schreiben, wobei der zweite Eintrag dazu dient, einen Kohärenzstatus der zweiten Speicherdomäne als einen der kohärenten Speicherdomäne oder der nicht-kohärenten Speicherdomäne anzuzeigen.
  3. Einrichtung nach Anspruch 1, wobei der erste Eintrag Speicherbereichsinformationen, eine oder mehrere Prozessadressenkennungen, die zu der ersten Speicherdomäne gehören, ein oder mehrere Attribute bezüglich der ersten Speicherdomäne und Rückrufinformationen umfasst.
  4. Einrichtung nach Anspruch 3, wobei die Rückrufinformation wenigstens eine Rückfallregel zum Handhaben von Kohärenz für eine Speicheranforderung aufweist, wenn ein Zwischenverbindungsbelegungsniveau eine Schwelle überschreitet.
  5. Einrichtung nach Anspruch 4, ferner umfassend eine Telemetrieschaltung zum Aufrechterhalten von Telemetrieinformationen, die das Zwischenverbindungsbelegungsniveau umfassen.
  6. Einrichtung nach Anspruch 1, wobei die Einrichtung Kohärenz für Speicheranforderungen gemäß wenigstens einer Rückfallregel handhaben soll, wenn ein Zwischenverbindungsbelegungsniveau eine Schwelle überschreitet.
  7. Einrichtung nach Anspruch 1, wobei die Einrichtung einen kohärenten Schalter umfasst, wobei der kohärente Schalter dient zum Empfangen, vor der Kohärenzstatusänderungsanforderung, einer ersten Speicheranforderung für einen ersten Ort in der ersten Speicherdomäne und Durchführen von Kohärenzverarbeitung und zum Empfangen, nach der Kohärenzstatusänderungsanforderung, einer zweiten Speicheranforderung für einen anderen Ort in der ersten Speicherdomäne und Leiten der zweiten Speicheranforderung zu einem Ziel der zweiten Speicheranforderung, ohne die Kohärenzverarbeitung durchzuführen.
  8. Einrichtung nach Anspruch 1, wobei die Steuerschaltung eine Speicherzuweisungsanforderung für eine zweite Speicherdomäne des Systems empfangen soll, das einen Hauptdatenspeicher einer Datenbankanwendung umfasst, wobei die Speicherzuweisungsanforderung einen Kohärenzstatus der zweiten Speicherdomäne als eine nicht-kohärente Speicherdomäne angeben soll, und wobei, in Reaktion auf die Speicherzuweisungsanforderung, die Steuerschaltung einen zweiten Eintrag in die Tabelle für die zweite Speicherdomäne schreiben soll, wobei der zweite Eintrag den Kohärenzstatus der zweiten Speicherdomäne als die nicht-kohärente Speicherdomäne angeben soll.
  9. Mindestens ein computerlesbares Speichermedium, auf dem Anweisungen gespeichert sind, die, wenn sie von einer Maschine durchgeführt werden, die Maschine veranlassen, ein Verfahren durchzuführen, das Folgendes umfasst: Empfangen, in einem Schalter eines Systems, einer Speicheranforderung, wobei der Schalter zwischen einem Anforderer und einem Zielspeicher gekoppelt ist; Bestimmen, ob eine Adresse der Speicheranforderung innerhalb einer kohärenten Speicherdomäne liegt; wenn die Adresse der Speicheranforderung innerhalb der kohärenten Speicherdomäne liegt, Durchführen einer Snoop-Verarbeitung für die Speicheranforderung und Handhaben der Speicheranforderung basierend auf der Snoop-Verarbeitung; und wenn die Adresse der Speicheranforderung nicht innerhalb der kohärenten Speicherdomäne liegt, Leiten der Speicheranforderung vom Schalter zum Zielspeicher, ohne die Snoop Verarbeitung durchzuführen.
  10. Mindestens ein computerlesbares Speichermedium nach Anspruch 9, wobei das Verfahren weiter Bestimmen eines Zwischenverbindungsbelegungsniveaus aufweist.
  11. Computerlesbares Speichermedium nach Anspruch 10, wobei das Verfahren ferner, falls der Verbindungsüberlastungsgrad größer als eine Schwelle ist, Handhaben der Speicheranforderung gemäß Rückrufinformationen, die mit der kohärenten Speicherdomäne assoziiert sind, umfasst, wobei die Rückrufinformationen in einer Speicherdomänentabelle gespeichert sind.
  12. Mindestens ein computerlesbares Speichermedium nach Anspruch 9, wobei das Verfahren ferner Bestimmen umfasst, ob die Adresse innerhalb der kohärenten Speicherdomäne ist, basierend auf Speicherbereichsinformationen, die in einer Speicherdomänentabelle gespeichert sind.
  13. Mindestens ein computerlesbares Speichermedium nach Anspruch 9, wobei das Verfahren ferner Empfangen einer Speicherzuweisungsanforderung für eine erste kohärente Speicherdomäne und Speichern eines Eintrags für die erste kohärente Speicherdomäne in einer Speicherdomänentabelle umfasst, wobei der Eintrag Speicherbereichsinformationen, eine oder mehrere Prozessadressenkennungen, die zu der ersten kohärenten Speicherdomäne gehören, eine oder mehrere Vorrichtungen innerhalb der ersten kohärenten Speicherdomäne und Rückrufinformationen, um mindestens eine Rückfallregel zum Handhaben einer Speicheranforderung an die erste kohärente Speicherdomäne zu identifizieren, wenn ein Zwischenverbindungsbelegungsniveau eine Schwelle überschreitet, umfasst.
  14. Computerlesbares Speichermedium nach Anspruch 9, wobei das Verfahren ferner Folgendes umfasst: Zuweisen einer ersten Speicherdomäne für einen ersten Mandanten in Reaktion auf eine erste Speicherzuweisungsanforderung für eine kohärente Speicherdomäne, die mit ersten mehreren Vorrichtungen des Systems und einem ersten Speicherbereich assoziiert ist; und Zuweisen einer zweiten Speicherdomäne für einen zweiten Mandanten in Reaktion auf eine zweite Speicherzuweisungsanforderung für eine nicht-kohärente Speicherdomäne, die mit zweiten mehreren Vorrichtungen des Systems und einem zweiten Speicherbereich assoziiert ist, wobei die erste Speicherdomäne von der zweiten Speicherdomäne isoliert ist.
  15. System, das Folgendes umfasst: mehrere Prozessoren; mehrere Beschleuniger; einen Systemspeicher, der dynamisch in mehrere Speicherdomänen aufzuteilen ist, die mindestens eine kohärente Speicherdomäne und mindestens eine nicht-kohärente Speicherdomäne beinhalten; und einen Schalter zum Koppeln von mindestens einigen der mehreren Prozessoren und mindestens einigen der mehreren Beschleuniger über CXL-Verbindungen (Compute Express Link), wobei der Schalter zum dynamischen Erzeugen der mindestens einen kohärenten Speicherdomäne in Reaktion auf eine erste Speicherzuweisungsanforderung und zum dynamischen Erzeugen der mindestens einen nicht-kohärenten Speicherdomäne in Reaktion auf eine zweite Speicherzuweisungsanforderung dient.
  16. System nach Anspruch 15, wobei der Schalter ausgelegt ist zum dynamischen Aktualisieren der mindestens einen kohärenten Speicherdomäne in Reaktion auf eine Speicheraktualisierungsanforderung als eine andere nicht-kohärente Speicherdomäne.
  17. System nach Anspruch 15, wobei der Schalter einen CXL-Schalter umfasst, wobei der CXL-Schalter eine Speicherdomänentabelle mit mehreren Einträgen, wobei jeder der mehreren Einträge Speicherbereichsinformationen speichern soll, mindestens einen von einer oder mehreren Prozessadressenkennungen oder mindestens einen von einer oder mehreren Mandantenkennungen, die zu einer Speicherdomäne gehören, und eine oder mehrere Vorrichtungen innerhalb der Speicherdomäne umfasst.
  18. System nach Anspruch 17, wobei mindestens einige der mehreren Einträge ferner mindestens eine Rückfallregel zum Handhaben einer Speicheranforderung speichern sollen, wenn ein Zwischenverbindungsbelegungsniveau eine Schwelle überschreitet.
  19. System nach Anspruch 18, wobei der CXL-Schalter ferner eine Telemetrieschaltung zum Beibehalten von Telemetrieinformationen umfasst, die das Zwischenverbindungsbelegungsniveau umfassen.
  20. System nach Anspruch 18, wobei der CXL-Schalter die erste Speicherzuweisungsanforderung empfangen soll, die einen Speicherbereich für die mindestens eine kohärente Speicherdomäne, einen Kohärenzindikator, eine oder mehrere Prozessadressenkennungen, die zu der mindestens einen kohärenten Speicherdomäne gehören, eine oder mehrere Vorrichtungen innerhalb der mindestens einen kohärenten Speicherdomäne und mindestens eine Rückfallregel zum Handhaben von Kohärenz für eine Speicheranforderung, wenn ein Belegungsniveau auf einer oder mehreren der CXL-Verbindungen eine Schwelle überschreitet, umfasst.
DE102021121062.3A 2020-09-25 2021-08-13 System, vorrichtung und verfahren zur dynamischen bereitstellung kohärenter speicherdomänen Pending DE102021121062A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US17/032,056 US20210011864A1 (en) 2020-09-25 2020-09-25 System, apparatus and methods for dynamically providing coherent memory domains
US17/032,056 2020-09-25

Publications (1)

Publication Number Publication Date
DE102021121062A1 true DE102021121062A1 (de) 2022-03-31

Family

ID=74102001

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102021121062.3A Pending DE102021121062A1 (de) 2020-09-25 2021-08-13 System, vorrichtung und verfahren zur dynamischen bereitstellung kohärenter speicherdomänen

Country Status (4)

Country Link
US (1) US20210011864A1 (de)
JP (1) JP2022054407A (de)
DE (1) DE102021121062A1 (de)
NL (1) NL2029043B1 (de)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20210311897A1 (en) * 2020-04-06 2021-10-07 Samsung Electronics Co., Ltd. Memory with cache-coherent interconnect
US11914903B2 (en) 2020-10-12 2024-02-27 Samsung Electronics Co., Ltd. Systems, methods, and devices for accelerators with virtualization and tiered memory
US11704060B2 (en) * 2020-12-18 2023-07-18 Micron Technology, Inc. Split protocol approaches for enabling devices with enhanced persistent memory region access
US12056374B2 (en) * 2021-02-03 2024-08-06 Alibaba Group Holding Limited Dynamic memory coherency biasing techniques
US11875046B2 (en) 2021-02-05 2024-01-16 Samsung Electronics Co., Ltd. Systems and methods for storage device resource management
US20220358042A1 (en) * 2021-05-07 2022-11-10 Samsung Electronics Co., Ltd. Coherent memory system
KR20230016110A (ko) * 2021-07-23 2023-02-01 삼성전자주식회사 메모리 모듈, 이를 포함하는 시스템, 및 메모리 모듈의 동작 방법
US20210349840A1 (en) * 2021-07-26 2021-11-11 Intel Corporation System, Apparatus And Methods For Handling Consistent Memory Transactions According To A CXL Protocol
US20220014588A1 (en) * 2021-09-24 2022-01-13 Intel Corporation Methods and apparatus to share memory across distributed coherent edge computing system
US11632337B1 (en) * 2021-10-11 2023-04-18 Cisco Technology, Inc. Compute express link over ethernet in composable data centers
KR20230082484A (ko) * 2021-12-01 2023-06-08 삼성전자주식회사 전자 장치의 동작 방법
US12072805B2 (en) 2022-04-11 2024-08-27 Arteris, Inc. System and method to enter and exit a cache coherent interconnect

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070186052A1 (en) * 2006-02-07 2007-08-09 International Business Machines Corporation Methods and apparatus for reducing command processing latency while maintaining coherence
US7451277B2 (en) * 2006-03-23 2008-11-11 International Business Machines Corporation Data processing system, cache system and method for updating an invalid coherency state in response to snooping an operation
US20140032854A1 (en) * 2012-07-30 2014-01-30 Futurewei Technologies, Inc. Coherence Management Using a Coherent Domain Table
US9026736B1 (en) * 2012-08-06 2015-05-05 Netapp, Inc. System and method for maintaining cache coherency
US9648148B2 (en) * 2013-12-24 2017-05-09 Intel Corporation Method, apparatus, and system for QoS within high performance fabrics
US9817693B2 (en) * 2014-03-14 2017-11-14 International Business Machines Corporation Coherence protocol augmentation to indicate transaction status
US10592451B2 (en) * 2017-04-26 2020-03-17 International Business Machines Corporation Memory access optimization for an I/O adapter in a processor complex
GR20180100189A (el) * 2018-05-03 2020-01-22 Arm Limited Δικτυο επεξεργασιας δεδομενων με συμπυκνωση ροης για μεταφορα δεδομενων μεσω streaming
US11036650B2 (en) * 2019-09-19 2021-06-15 Intel Corporation System, apparatus and method for processing remote direct memory access operations with a device-attached memory
US11416397B2 (en) * 2019-10-14 2022-08-16 Intel Corporation Global persistent flush
US11138115B2 (en) * 2020-03-04 2021-10-05 Micron Technology, Inc. Hardware-based coherency checking techniques
US11341060B2 (en) * 2020-08-11 2022-05-24 International Business Machines Corporation Multifunction communication interface supporting memory sharing among data processing systems

Also Published As

Publication number Publication date
NL2029043B1 (en) 2022-07-27
NL2029043A (en) 2022-05-24
JP2022054407A (ja) 2022-04-06
US20210011864A1 (en) 2021-01-14

Similar Documents

Publication Publication Date Title
DE102021121062A1 (de) System, vorrichtung und verfahren zur dynamischen bereitstellung kohärenter speicherdomänen
DE112015004336B4 (de) Konfigurationsbasierte Auswahl eines Cachekohärenz-Protokolls
DE112008002018B4 (de) Bereitstellen eines gemeinsam genutzten Inklusiv-Cache bei Mehrkern-Cache-Clustern
DE69233655T2 (de) Mikroprozessorarchitektur mit der Möglichkeit zur Unterstützung mehrerer verschiedenartiger Prozessoren
DE69822534T2 (de) Gemeinsame Speicherbenutzung mit variablen Blockgrössen für symmetrische Multiporzessor-Gruppen
DE102019105879A1 (de) Verwaltung von kohärenten Verknüpfungen und Mehr-Ebenen-Speicher
DE102011076895B4 (de) Cachekohärenzprotokoll für persistente Speicher
DE102018006756A1 (de) Beschleuniger-Fabric
DE112008002019T5 (de) Auslagern von Eingabe/Ausgabe (I/O)-Virtualisierungsarbeitsgängen an einem Prozessor
DE102016221811A1 (de) Zuordnung von Ressourcen mit mehrschichtigem Speicher
DE102014117463A1 (de) Datenkohärenzmodell und Protokoll auf Cluster-Ebene
DE112009000373T5 (de) Technik, um Information zwischen unterschiedlichen Kohärenz-Domains von Caches zu nutzen
DE112016004303T5 (de) Hardware-Vorhersageelement mit geringem Verwaltungsaufwand zur Verringerung der Leistungsumkehr für Kern-zu-Kern-Datenübertragungsoptimierungsbefehle
DE112005002328T5 (de) Cachespeicherungsunterstützung für Direktspeicherzugriffsadreßübersetzung
DE112019000629B4 (de) Koordination von cacheoperationen
DE112013000889T5 (de) Weiterleitungsfortschritts-Mechanismus für Speichervorgänge bei Vorhandensein von Ladekonflikten in einem Ladevorgänge begünstigenden System
DE112020002575T5 (de) Drosselung von speicher als dienst auf grundlage der verbindungsbandbreite
DE112008001957T5 (de) Systeme und Verfahren zum Verbessern der Leistungsfähigkeit eines routfähigen Netzwerks
DE102022205478A1 (de) Busübergreifende speicherabbildung
DE102018213428A1 (de) Techniken zum Reduzieren von Beschleuniger-Speicherzugriffskosten in Plattformen mit mehreren Speicherkanälen
DE112007003722B4 (de) Modifizieren von Systemroutinginformationen in linkbasierenden Systemen
DE112012004926B4 (de) Gemeinsame Speichernutzung durch Prozessoren
DE112020002583T5 (de) Speicherdienste zwischen betriebssystemen über kommunikationsnetzwerkverbindungen
DE102016211986A1 (de) Cache-kohärentes System, das master-seitigen Filter umfasst und Datenverarbeitungssystem, das diesen umfasst
DE112021004290T5 (de) Gemeinsames nutzen von zwischengespeicherten klassendaten in einer containerisierten umgebung