-
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.