DE102020120102A1 - Globale dauerhafte Speicherleerung - Google Patents

Globale dauerhafte Speicherleerung Download PDF

Info

Publication number
DE102020120102A1
DE102020120102A1 DE102020120102.8A DE102020120102A DE102020120102A1 DE 102020120102 A1 DE102020120102 A1 DE 102020120102A1 DE 102020120102 A DE102020120102 A DE 102020120102A DE 102020120102 A1 DE102020120102 A1 DE 102020120102A1
Authority
DE
Germany
Prior art keywords
flush
request
memory
devices
phase
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
DE102020120102.8A
Other languages
English (en)
Inventor
Mahesh S. Natu
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 DE102020120102A1 publication Critical patent/DE102020120102A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0804Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
    • 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/0706Error 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 the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/073Error 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 the processing taking place on a specific hardware platform or in a specific software environment in a memory management context, e.g. virtual memory or cache management
    • 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
    • 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/0766Error or fault reporting or storing
    • G06F11/0778Dumping, i.e. gathering error/state information after a fault for later diagnosis
    • 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/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1004Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
    • 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/12Replacement control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Health & Medical Sciences (AREA)
  • Biomedical Technology (AREA)
  • Computer Security & Cryptography (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Information Transfer Systems (AREA)
  • Bus Control (AREA)

Abstract

Eine Cache-Leerungsanforderung wird in einer ersten Phase eines Flusses zur dauerhaften Speicherleerung empfangen, wobei die erste Phase von einem Hostprozessor initiiert wird und die Cache-Leerungsanforderung anfordert, dass Daten in dem Cache-Speicher in dauerhaften Speicher innerhalb eines Systems geleert werden. Eine Cache-Leerungsantwort wird in der ersten Phase als Antwort auf die Cache-Leerungsanforderung gesendet, wobei die Cache-Leerungsantwort identifiziert, ob in der ersten Phase ein Fehler detektiert wird. Eine Speicherpufferleerungsanforderung wird in einer zweiten Phase des Flusses zur dauerhaften Speicherleerung empfangen, wobei die zweite Phase nach Abschluss der ersten Phase von dem Hostprozessor initiiert wird und die Speicherpufferleerungsanforderung anfordert, dass Daten in Puffern von dauerhaften Speichervorrichtungen in dem System in dauerhaften Speicher geleert werden. Eine Speicherpufferleerungsantwort wird in der zweiten Phase als Antwort auf die Speicherpufferleerungsanforderung gesendet.

Description

  • Diese Anmeldung beansprucht die Priorität der vorläufigen US-Patentanmeldung mit der lfd. Nr. 62/914788 , die am 14. Oktober 2019 eingereicht wurde und hier durch Bezugnahme vollständig mit aufgenommen ist.
  • Gebiet
  • Diese Offenbarung bezieht sich auf Rechensysteme und insbesondere (aber nicht ausschließlich) auf Computerschnittstellen.
  • Hintergrund
  • Fortschritte in der Halbleiterverarbeitung und im Logikdesign haben eine Erhöhung der Menge an Logik, die auf Vorrichtungen mit integrierter Schaltung vorhanden sein kann, ermöglicht. Als Konsequenz gab es eine Entwicklung der Computersystemkonfigurationen von einer einzelnen oder mehreren integrierten Schaltungen in einem System zu mehreren Kernen, mehreren Hardwaresträngen und mehreren logischen Prozessoren, die auf einzelnen integrierten Schaltungen vorhanden sind, sowie zu anderen in solchen Prozessoren integrierten Schnittstellen. Ein Prozessor oder eine integrierte Schaltung umfasst typischerweise einen einzelnen physischen Prozessorchip, wobei der Prozessorchip eine beliebige Anzahl von Kernen, Hardwaresträngen, logischen Prozessoren, Schnittstellen, Speichern, Controller-Hubs usw. aufweisen kann. Da die Verarbeitungsleistung zusammen mit der Anzahl von Vorrichtungen in einem Computersystem wächst, wird die Kommunikation zwischen Sockeln und anderen Vorrichtungen immer kritischer. Dementsprechend haben sich Zwischenverbindungen von traditionelleren Mehrpunktbussen, die hauptsächlich elektrische Kommunikation abwickelten, zu vollwertigen Zwischenverbindungsarchitekturen entwickelt, die eine schnelle Kommunikation ermöglichen. Da es eine danach Nachfrage gibt, dass zukünftigen Prozessoren noch höhere Raten nutzen, werden leider noch größere Anforderungen an die Fähigkeiten bestehender Zwischenverbindungsarchitekturen gestellt. Zwischenverbindungsarchitekturen können auf einer Vielzahl von Technologien basieren, darunter Peripheriekomponentenzwischenverbindung-Express (PCIe), universeller serieller Bus und andere.
  • Figurenliste
    • 1 zeigt eine Ausführungsform eines Rechensystems mit einer Zwischenverbindungsarchitektur.
    • 2 zeigt eine Ausführungsform einer Zwischenverbindungsarchitektur mit einem Schichtstapel.
    • 3 zeigt eine Ausführungsform einer Anforderung oder eines Pakets, die/das innerhalb einer Zwischenverbindungsarchitektur erzeugt oder empfangen werden soll.
    • 4 zeigt eine Ausführungsform eines Sender- und Empfängerpaars für eine Zwischenverbindungsarchitektur.
    • 5 zeigt eine beispielhafte Implementierung eines Rechensystems, das einen Hostprozessor und einen Beschleuniger umfasst, die durch eine Verbindung gekoppelt sind.
    • 6 zeigt eine beispielhafte Implementierung eines Rechensystems mit zwei oder mehr miteinander verbundenen Prozessorvorrichtungen.
    • 7 zeigt eine Darstellung eines beispielhaften Ports einer Vorrichtung mit einem Schichtstapel.
    • 8 zeigt ein beispielhaftes Rechensystem, das zwei miteinander verbundene Bäume von Vorrichtungen umfasst.
    • 9A-9E zeigen ein Beispiel für einen Fluss zur dauerhaften Speicherleerung.
    • 10 ist ein vereinfachtes Blockdiagramm, das beispielhafte Vorrichtungen in einem Rechensystems darstellt, die einen Fluss zur dauerhaften Speicherleerung unterstützen.
    • 11 ist ein Ablaufdiagramm, das einen Fluss zur dauerhaften Speicherleerung darstellt.
    • 12A-12B stellen beispielhafte Nachrichtenformate zur Verwendung in einem Fluss zur dauerhaften Speicherleerung dar.
    • 13A-13B sind Ablaufdiagramme, die beispielhafte Techniken zum Implementieren eines beispielhaften Flusses zur dauerhaften Speicherleerung zeigen.
    • 14 zeigt eine Ausführungsform eines Blockdiagramms für ein Rechensystem mit einem Mehrkernprozessor.
    • 15 zeigt eine weitere Ausführungsform eines Blockdiagramms für ein Rechensystem.
  • Genaue Beschreibung
  • In der folgenden Beschreibung werden zahlreiche spezifische Einzelheiten wie etwa Beispiele für spezifische Arten von Prozessoren und Systemkonfigurationen, spezifische Hardwarestrukturen, spezifische Architektur- und Mikroarchitektureinzelheiten, spezifische Registerkonfigurationen, spezifische Befehlstypen, spezifische Systemkomponenten, spezifische Messungen/Höhen, spezifische Prozessor-Pipeline-Stufen und spezifischer Betrieb davon usw. dargelegt, um ein gründliches Verständnis der vorliegenden Erfindung zu ermöglichen. Fachleuten wird jedoch klar sein, dass diese spezifischen Einzelheiten nicht zum Praktizieren der vorliegenden Erfindung verwendet werden müssen. In anderen Fällen wurden wohlbekannte Komponenten oder Verfahren wie etwa spezifische und alternative Prozessorarchitekturen, spezifische(r) Logikschaltungen/Code für beschriebene Algorithmen, spezifischer Firmware-Code, spezifischer Zwischenverbindungsbetrieb, spezifische Logikkonfigurationen, spezifische Herstellungstechniken und -materialien, spezifische Kompiliererimplementierungen, spezifischer Ausdruck von Algorithmen in Code, spezifische Herunterfahr- und Ansteuerungstechniken/-logik und andere spezifische Betriebseinzelheiten des Computersystems nicht im Detail beschrieben, um zu vermeiden, dass die vorliegende Erfindung unnötig verunklart wird.
  • Obwohl die folgenden Ausführungsformen unter Bezugnahme auf Energieeinsparung und Energieeffizienz in spezifischen integrierten Schaltungen wie beispielsweise in Rechenplattformen oder Mikroprozessoren beschrieben sein können, sind andere Ausführungsformen auf andere Arten von integrierten Schaltungen und Logikvorrichtungen anwendbar. Ähnliche Techniken und Lehren von hier beschriebenen Ausführungsformen können auf andere Arten von Schaltungen oder Halbleitervorrichtungen angewendet werden, die ebenfalls von einer besseren Energieeffizienz und Energieeinsparung profitieren können. Beispielsweise sind die offenbarten Ausführungsformen nicht auf Desktop-Computersysteme oder Ultrabooks™ beschränkt. Sie können auch in anderen Vorrichtungen verwendet werden, z. B. in handtragbaren Vorrichtungen, Tablets, anderen dünnen Notebooks, Ein-Chip-Systemen (SOC) und eingebetteten Anwendungen. Einige Beispiele für handgetragene Vorrichtungen umfassen Mobiltelefone, Internetprotokollvorrichtungen, Digitalkameras, persönliche digitale Assistenten (PDAs) und handgetragene PCs. Eingebettete Anwendungen umfassen typischerweise einen Mikrocontroller, einen Digitalsignalprozessor (DSP), ein Ein-Chip-System, Netzcomputer (NetPC), Beistellkästen, Netz-Hubs, Weitbereichsnetz-Switches (WAN-Switches) oder jedes andere System, das die unten beschriebenen Funktionen und Operationen durchführen kann. Darüber hinaus sind die hier beschriebenen Einrichtungen, Verfahren und Systeme nicht auf physische Rechenvorrichtungen beschränkt, sondern können sich auch auf Softwareoptimierungen zur Energieeinsparung und Energieeffizienz beziehen.
  • Bei fortschrittlicheren Rechensystemen werden die darin enthaltenen Komponenten komplexer. Infolgedessen nimmt auch die Komplexität der Zwischenverbindungsarchitektur zum Koppeln und Kommunizieren zwischen den Komponenten zu, um sicherzustellen, dass die Bandbreitenanforderungen für einen optimalen Komponentenbetrieb erfüllt werden. Darüber hinaus erfordern verschiedene Marktsegmente unterschiedliche Aspekte von Zwischenverbindungsarchitekturen, um die Anforderungen des Marktes zu erfüllen. Beispielsweise erfordern Server eine höhere Leistungsfähigkeit, während das mobile Ökosystem manchmal die Gesamtleistungsfähigkeit für Energieeinsparungen opfern kann. Dennoch ist es ein entscheidender Zweck der meisten Fabrics, höchstmögliche Leistungsfähigkeit bei maximaler Energieeinsparung zu erzielen. Nachfolgend wird eine Reihe von Zwischenverbindungen diskutiert, die möglicherweise von Aspekten der hier beschriebenen Offenbarung profitieren würden.
  • Eine Zwischenverbindungsstrukturarchitektur umfasst die Peripheriekomponentenzwischenverbindungs-Express-Architektur (PCIe-Architektur). Ein Hauptziel von PCIe ist es, zu ermöglichen, dass Komponenten und Vorrichtungen verschiedener Hersteller in einer offenen Architektur, die sich über mehrere Marktsegmente erstreckt, miteinander arbeiten; Clients (Desktop- und Mobilvorrichtungen), Server (Standard und Unternehmen) sowie eingebettete Vorrichtungen und Kommunikationsvorrichtungen. PCI Express ist eine hochleistungsfähige Allzweck-E/A-Zwischenverbindung, die für eine Vielzahl zukünftiger Rechen- und Kommunikationsplattformen definiert ist. Einige PCI-Eigenschaften wie das Nutzungsmodell, die Lade-Speicher-Architektur und die Softwareschnittstellen wurden durch die Überarbeitungen hindurch beibehalten, während frühere parallele Busimplementierungen durch eine stark skalierbare, vollständig serielle Schnittstelle ersetzt wurden. Die neueren Versionen von PCI Express nutzen die Fortschritte bei Punkt-zu-Punkt-Zwischenverbindungen, switchbasierter Technologie und paketiertem Protokoll, um neue Niveaus von Leistungsfähigkeit und Funktionen bereitzustellen. Leistungsverwaltung, Dienstgüte (QoS), Hot-Plug-/Hot-Swap-Unterstützung, Datenintegrität und Fehlerbehandlung gehören zu den erweiterten Funktionen, die von PCI Express unterstützt werden.
  • Unter Bezugnahme auf 1 ist eine Ausführungsform einer Fabric dargestellt, die aus Punkt-zu-Punkt-Verbindungen besteht, die eine Menge von Komponenten miteinander verbinden. Das System 100 umfasst einen Prozessor 105 und einen Systemspeicher 110, die mit dem Controller-Hub 115 gekoppelt sind. Der Prozessor 105 umfasst ein beliebiges Verarbeitungselement wie etwa einen Mikroprozessor, einen Hostprozessor, einen eingebetteten Prozessor, einen Koprozessor oder einen anderen Prozessor. Der Prozessor 105 ist über den Vorderseitenbus (FSB) 106 mit dem Controller-Hub 115 gekoppelt. In einer Ausführungsform ist der FSB 106 eine serielle Punkt-zu-Punkt-Zwischenverbindung, wie es nachstehend beschrieben ist. In einer weiteren Ausführungsform weist die Verbindung 106 eine serielle, differentielle Zwischenverbindungsarchitektur auf, die mit einem anderen Zwischenverbindungsstandard kompatibel ist.
  • Der Systemspeicher 110 umfasst eine beliebige Speichervorrichtung wie etwa einen Direktzugriffsspeicher (RAM), einen nichtflüchtigen Speicher (NV-Speicher) oder einen anderen Speicher, auf den Vorrichtungen in dem System 100 zugreifen können. Der Systemspeicher 110 ist über eine Speicherschnittstelle 116 mit dem Controller-Hub 115 verbunden. Beispiele für eine Speicherschnittstelle umfassen eine Doppeldatenraten-Speicherschnittstelle (DDR-Speicherschnittstelle), eine DDR-Speicherschnittstelle mit zwei Kanälen und eine Speicherschnittstelle für dynamischen RAM (DRAM-Speicherschnittstelle).
  • In einer Ausführungsform ist der Controller-Hub 115 ein Root-Hub, ein Root-Komplex oder ein Root-Controller in einer Peripheriekomponentenzwischenverbindungs-Express-Verbindungshierarchie (PCIe- oder PCIE-Verbindungshierarchie). Beispiele für den Controller-Hub 115 umfassen einen Chipsatz, einen Speicher-Controller-Hub (MCH), eine Northbridge, einen Zwischenverbindungs-Controller-Hub (ICH), eine Southbridge und einen Root-Port-Controller/-Hub. Häufig bezieht sich der Begriff Chipsatz auf zwei physisch getrennte Controller-Hubs, d. h. einen Speicher-Controller-Hub (MCH), der mit einem Zwischenverbindungs-Controller-Hub (ICH) gekoppelt ist. Es ist zu beachten, dass aktuelle Systeme häufig den in den Prozessor 105 integrierten MCH enthalten, während der Controller 115 auf ähnliche Weise wie nachstehend beschrieben mit E/A-Vorrichtungen kommunizieren soll. In einigen Ausführungsformen wird das Peer-zu-Peer-Routing optional durch den Root-Komplex 115 unterstützt.
  • Hier ist der Controller-Hub 115 über eine serielle Verbindung 119 mit dem Switch bzw. der Brücke 120 gekoppelt. Eingabe-/Ausgabemodule 117 und 121, die auch als Schnittstellen/Ports 117 und 121 bezeichnet werden können, umfassen/implementieren einen geschichteten Protokollstapel zum Herstellen von Kommunikation zwischen dem Controller-Hub 115 und dem Switch 120. In einer Ausführungsform können mehrere Vorrichtungen mit dem Switch 120 koppelbar sein.
  • Der Switch bzw. die Brücke 120 leitet Pakete/Nachrichten von der Vorrichtung 125 stromaufwärts, d. h. eine Hierarchie hinauf zu einem Root-Komplex, zu dem Controller-Hub 115, und stromabwärts, d. h. eine Hierarchie hinunter weg von einem Root-Port-Controller, von dem Prozessor 105 oder dem Systemspeicher 110 zu der Vorrichtung 125. Der Switch 120 wird in einer Ausführungsform als eine logische Anordnung mehrerer virtueller PCI-zu-PCI-Brückenvorrichtungen bezeichnet. Die Vorrichtung 125 umfasst eine beliebige interne oder externe Vorrichtung oder eine beliebige externe Komponente, die mit einem elektronischen System verbunden werden soll, beispielsweise eine E/A-Vorrichtung, einen Netzschnittstellen-Controller (NIC), eine Zusatzkarte, einen Audioprozessor, einen Netzprozessor, ein Festplattenlaufwerk, eine Speichervorrichtung, CD/DVD-ROM, einen Monitor, einen Drucker, eine Maus, eine Tastatur, einen Router, eine tragbare Speichervorrichtung, eine Firewire-Vorrichtung, eine USB-Vorrichtung, einen Scanner und andere Eingabe-/Ausgabevorrichtungen. In der PCIe-Fachsprache wird eine Vorrichtung häufig als Endpunkt bezeichnet. Obwohl dies nicht speziell gezeigt ist, kann die Vorrichtung 125 eine PCIe-zu-PCI/PCI-X-Brücke aufweisen, um ältere oder PCI-Vorrichtungen anderer Version zu unterstützen. Endpunktvorrichtungen in PCIe werden häufig als Alt-Endpunkte, PCIe-Endpunkte oder in den Root-Komplex integrierte Endpunkte klassifiziert.
  • Der Grafikbeschleuniger 130 ist über die serielle Verbindung 132 auch mit dem Controller-Hub 115 gekoppelt. In einer Ausführungsform ist der Grafikbeschleuniger 130 mit einem MCH gekoppelt, der mit einem ICH gekoppelt ist. Der Switch 120, und dementsprechend die E/A-Vorrichtung 125, ist dann mit dem ICH gekoppelt. Die E/A-Module 131 und 118 sollen auch einen geschichteten Protokollstapel zum Kommunizieren zwischen dem Grafikbeschleuniger 130 und dem Controller-Hub 115 implementieren. Ähnlich wie bei der obigen MCH-Diskussion kann ein Grafik-Controller oder der Grafikbeschleuniger 130 selbst in den Prozessor 105 integriert sein. Es ist zu beachten, dass eine oder mehrere der in 1 dargestellten Komponenten (z. B. 105, 110, 115, 120, 125, 130) erweitert werden können, um Logik auszuführen, zu speichern und/oder zu verkörpern, um eines oder mehrere der hier beschriebenen Merkmale zu implementieren.
  • Unter Bezugnahme auf 2 ist eine Ausführungsform eines geschichteten Protokollstapels dargestellt. Der geschichtete Protokollstapel 200 umfasst eine beliebige Form eines geschichteten Kommunikationsstapels, beispielsweise einen QuickPath-Zwischenverbindungsstapel (QPI), einen PCIe-Stapel, einen Hochleistungsrechnungs-Zwischenverbindungsstapel der nächsten Generation oder einen anderen geschichteten Stapel. Obwohl sich die unmittelbar folgenden Erläuterungen unter Bezugnahme auf 1-4 auf einen PCIe-Stapel beziehen, können die gleichen Konzepte auf andere Zwischenverbindungsstapel angewendet werden. In einer Ausführungsform ist der Protokollstapel 200 ein PCIe-Protokollstapel, der eine Transaktionsschicht 205, eine Verbindungsschicht 210 und die Bitübertragungsschicht 220 aufweist. Eine Schnittstelle, wie beispielsweise die Schnittstellen 117, 118, 121, 122, 126 und 131 in 1, kann als Kommunikationsprotokollstapel 200 dargestellt werden. Die Darstellung als Kommunikationsprotokollstapel kann auch als Modul oder Schnittstelle bezeichnet werden, die einen Protokollstapel implementiert/umfasst.
  • PCI Express verwendet Pakete, um Informationen zwischen Komponenten zu übermitteln. Pakete werden in der Transaktionsschicht 205 und der Datenverbindungsschicht 210 gebildet, um die Informationen von der sendenden Komponente zu der empfangenden Komponente zu übertragen. Während die gesendeten Pakete durch die anderen Schichten laufen, werden sie mit zusätzlichen Informationen erweitert, die zur Behandlung von Paketen in diesen Schichten erforderlich sind. Auf der Empfangsseite erfolgt der umgekehrte Prozess und Pakete werden von ihrer Darstellung in der Bitübertragungsschicht 220 in die Darstellung in der Datenverbindungsschicht 210 und schließlich (für Transaktionsschichtpakete) in die Form, das von der Transaktionsschicht 205 der Empfangsvorrichtung verarbeitet werden kann, umgewandelt.
  • Transaktionsschicht
  • In einer Ausführungsform soll die Transaktionsschicht 205 eine Schnittstelle zwischen dem Verarbeitungskern einer Vorrichtung und der Zwischenverbindungsarchitektur wie etwa der Datenverbindungsschicht 210 und der Bitübertragungsschicht 220 bereitstellen. In dieser Hinsicht ist eine Hauptaufgabe der Transaktionsschicht 205 das Zusammenstellen und Zerlegen von Paketen (d. h. Transaktionsschichtpaketen oder TLPs). Die Übersetzungsschicht 205 verwaltet typischerweise die kreditbasierte Flusssteuerung für TLPs. PCIe implementiert geteilte Transaktionen, d. h. Transaktionen, bei denen Anforderung und Antwort zeitlich getrennt sind, wodurch eine Verbindung anderen Verkehr transportieren kann, während die Zielvorrichtung Daten für die Antwort sammelt.
  • Zusätzlich verwendet PCIe eine kreditbasierte Flusssteuerung. In diesem Schema gibt eine Vorrichtung einen anfänglichen Kreditbetrag für jeden der Empfangspuffer in der Transaktionsschicht 205 bekannt. Eine externe Vorrichtung auf der gegenüberliegenden Seite der Verbindung, wie beispielsweise der Controller-Hub 115 in 1, zählt den von jedem TLP verbrauchten Kreditbetrag. Eine Transaktion kann gesendet werden, wenn die Transaktion ein Kreditlimit nicht überschreitet. Nach Erhalt einer Antwort wird der Kreditbetrag wiederhergestellt. Ein Vorteil eines Kreditschemas besteht darin, dass die Latenz der Kreditrückgabe die Leistung nicht beeinträchtigt, sofern das Kreditlimit eingehalten wird.
  • In einer Ausführungsform umfassen vier Transaktionsadressräume einen Konfigurationsadressraum, einen Speicheradressraum, einen Eingabe-/Ausgabe-Adressraum und einen Nachrichtenadressraum. Speicherraumtransaktionen umfassen eine oder mehrere von Leseanforderungen und Schreibanforderungen zum Übertragen von Daten zu/aus einem speicherabgebildeten Ort. In einer Ausführungsform können Speicherraumtransaktionen zwei verschiedene Adressformate verwenden, z. B. ein kurzes Adressformat wie eine 32-Bit-Adresse oder ein langes Adressformat wie eine 64-Bit-Adresse. Konfigurationsraumtransaktionen werden verwendet, um auf den Konfigurationsraum der PCIe-Vorrichtungen zuzugreifen. Transaktionen in den Konfigurationsraum umfassen Leseanforderungen und Schreibanforderungen. Nachrichtenraumtransaktionen (oder einfach Nachrichten) sind definiert, um die bandinterne Kommunikation zwischen PCIe-Agenten zu unterstützen.
  • Daher setzt in einer Ausführungsform die Transaktionsschicht 205 Paketkopf/Nutzdaten 156 zusammen. Das Format für aktuelle Paketköpfe/Nutzdaten kann in der PCIe-Spezifikation der PCIe-Spezifikations-Webpräsenz gefunden werden.
  • Unter kurzer Bezugnahme auf 3 ist eine Ausführungsform eines PCIe-Transaktionsdeskriptors dargestellt. In einer Ausführungsform ist der Transaktionsdeskriptor 300 ein Mechanismus zum Übertragen von Transaktionsinformationen. In dieser Hinsicht unterstützt der Transaktionsdeskriptor 300 die Identifizierung von Transaktionen in einem System. Andere mögliche Anwendungen umfassen ein Verfolgen von Änderungen der Standardtransaktionsreihenfolge und eine Zuordnung von Transaktionen zu Kanälen.
  • Der Transaktionsdeskriptor 300 umfasst ein globales Kennungsfeld 302, ein Attributfeld 304 und ein Kanalkennungsfeld 306. In dem dargestellten Beispiel ist ein globales Kennungsfeld 302 dargestellt, das ein lokales Transaktionskennungsfeld 308 und ein Quellenkennungsfeld 310 umfasst. In einer Ausführungsform ist die globale Transaktionskennung 302 für alle ausstehenden Anforderungen eindeutig.
  • Gemäß einer Implementierung ist das lokale Transaktionskennungsfeld 308 ein Feld, das von einem anfordernden Agenten erzeugt wird, und es ist eindeutig für alle ausstehenden Anforderungen, die einen Abschluss für diesen anfordernden Agenten erfordern. Darüber hinaus identifiziert in diesem Beispiel die Quellenkennung 310 den anfordernden Agenten innerhalb einer PCIe-Hierarchie eindeutig. Zusammen mit der Quellen-ID 310 stellt das Feld der lokalen Transaktionskennung 308 dementsprechend eine globale Identifikation einer Transaktion innerhalb einer Hierarchiedomäne bereit.
  • Das Attributfeld 304 spezifiziert Eigenschaften und Beziehungen der Transaktion. In dieser Hinsicht wird das Attributfeld 304 möglicherweise verwendet, um zusätzliche Informationen zu liefern, die eine Modifizierung der Standardbehandlung von Transaktionen ermöglichen. In einer Ausführungsform umfasst das Attributfeld 304 ein Prioritätsfeld 312, ein reserviertes Feld 314, ein Ordnungsfeld 316 und ein Nicht-Überprüfungs-Feld 318. Hier kann das Prioritätsunterfeld 312 von einem Initiator modifiziert werden, um der Transaktion eine Priorität zuzuweisen. Das reservierte Attributfeld 314 bleibt für die zukünftige oder vom Anbieter definierte Verwendung reserviert. Mögliche Nutzungsmodelle unter Verwendung von Prioritäts- oder Sicherheitsattributen können unter Verwendung des reservierten Attributfelds implementiert werden.
  • In diesem Beispiel wird das Ordnungsattributfeld 316 verwendet, um optionale Informationen zu liefern, die die Art der Ordnung übermitteln, die Standardordnungsregeln modifizieren kann. Gemäß einer beispielhaften Implementierung gilt ein Ordnungsattribut von „0“, das die Standardordnungsregeln bezeichnet, wobei ein Ordnungsattribut von „1“ eine entspannte Ordnung bezeichnet, bei der Schreibvorgänge Schreibvorgänge in derselben Richtung überholen können und Leseabschlüsse Schreibvorgänge in der gleichen Richtung überholen können. Das Überprüfungsattributfeld 318 wird verwendet, um zu bestimmen, ob Transaktionen abgehört werden. Wie gezeigt identifiziert das Kanal-ID-Feld 306 einen Kanal, dem eine Transaktion zugeordnet ist.
  • Verbindungsschicht
  • Die Verbindungsschicht 210, die auch als Datenverbindungsschicht 210 bezeichnet wird, fungiert als eine Zwischenstufe zwischen der Transaktionsschicht 205 und der Bitübertragungsschicht 220. In einer Ausführungsform ist es eine Aufgabe der Datenverbindungsschicht 210, einen zuverlässigen Mechanismus für den Austausch von Transaktionsschichtpaketen (TLPs) zwischen zwei Komponenten einer Verbindung bereitzustellen. Eine Seite der Datenverbindungsschicht 210 akzeptiert TLPs, die von der Transaktionsschicht 205 zusammengestellt werden, wendet eine Paketsequenzkennung 211, d. h. eine Identifikationsnummer oder Paketnummer, an, berechnet einen Fehlererkennungscode, d. h. CRC 212, und wendet diesen an und übermittelt die modifizierten TLPs an die Bitübertragungsschicht 220 zur Übertragung über etwas Physisches zu einer externen Vorrichtung.
  • Bitübertragungsschicht
  • In einer Ausführungsform umfasst die Bitübertragungsschicht 220 einen logischen Unterblock 221 und einen elektrischen Unterblock 222, um ein Paket physisch an eine externe Vorrichtung zu übertragen. Hier ist der logische Unterblock 221 für die „digitalen“ Funktionen der Bitübertragungsschicht 221 verantwortlich. In dieser Hinsicht umfasst der logische Unterblock einen Sendeabschnitt, um ausgehende Informationen für die Übertragung durch den physischen Unterblock 222 vorzubereiten, und einen Empfangsabschnitt, um empfangene Informationen zu identifizieren und vorzubereiten, bevor sie an die Verbindungsschicht 210 weitergeleitet werden.
  • Der physische Block 222 umfasst einen Sender und einen Empfänger. Der Sender wird von dem logischen Unterblock 221 mit Symbolen beliefert, die der Sender serialisiert und an eine externe Vorrichtung sendet. Der Empfänger wird von einer externen Vorrichtung mit serialisierten Symbolen beliefert und setzt die empfangenen Signale in einen Bitstrom um. Der Bitstrom wird entserialisiert und dem logischen Unterblock 221 zugeführt. In einer Ausführungsform wird ein 8b/10b-Übertragungscode verwendet, bei dem Zehn-Bit-Symbole gesendet/empfangen werden. Hier werden spezielle Symbole verwendet, um ein Paket mit Rahmen 223 auszubilden. Zusätzlich stellt der Empfänger in einem Beispiel auch einen Symboltakt bereit, der aus dem eingehenden seriellen Strom wiederhergestellt wird.
  • Obwohl die Transaktionsschicht 205, die Verbindungsschicht 210 und die Bitübertragungsschicht 220 unter Bezugnahme auf eine spezifische Ausführungsform eines PCIe-Protokollstapels erörtert werden, ist ein geschichteter Protokollstapel wie oben angegeben nicht darauf beschränkt. Tatsächlich kann ein beliebiges geschichtetes Protokoll enthalten/implementiert sein. Als ein Beispiel umfasst ein Port bzw. eine Schnittstelle, die als ein geschichtetes Protokoll dargestellt wird, Folgendes: (1) eine erste Schicht zum Zusammenstellen von Paketen, d. h. eine Transaktionsschicht; eine zweite Schicht zum Sequenzieren von Paketen, d. h. eine Verbindungsschicht; und eine dritte Schicht zum Übertragen der Pakete, d. h. eine Bitübertragungsschicht. Als spezielles Beispiel wird ein geschichtetes Protokoll mit allgemeiner Standardschnittstelle (CSI) verwendet.
  • Unter Bezugnahme auf 4 ist eine Ausführungsform einer seriellen PCIe-Punkt-zu-Punkt-Fabric dargestellt. Obwohl eine Ausführungsform einer seriellen PCIe-Punkt-zu-Punkt-Verbindung dargestellt ist, ist eine serielle Punkt-zu-Punkt-Verbindung nicht darauf beschränkt, da sie einen beliebigen Übertragungspfad zum Übertragen serieller Daten umfasst. In der gezeigten Ausführungsform weist eine Basis-PCIe-Verbindung zwei differentiell angesteuerte Niederspannungs-Signalpaare auf: ein Sendepaar 406/412 und ein Empfangspaar 411/407. Dementsprechend umfasst die Vorrichtung 405 eine Sendelogik 406 zum Senden von Daten an die Vorrichtung 410 und eine Empfangslogik 407 zum Empfangen von Daten von der Vorrichtung 410. Mit anderen Worten sind zwei Sendepfade, d. h. Pfade 416 und 417, und zwei Empfangspfade, d. h. Pfade 418 und 419, in einer PCIe-Verbindung enthalten.
  • Ein Übertragungspfad bezieht sich auf einen beliebigen Pfad zum Übertragen von Daten wie beispielsweise eine Übertragungsleitung, eine Kupferleitung, eine optische Leitung, einen drahtlosen Kommunikationskanal, eine Infrarot-Kommunikationsverbindung oder einen anderen Kommunikationspfad. Eine Verbindung zwischen zwei Vorrichtungen, wie z. B. Vorrichtung 405 und Vorrichtung 410, wird als Verbindung wie z. B. Verbindung 415 bezeichnet. Eine Verbindung kann eine Bahn unterstützen - wobei jede Bahn einen Satz von Differenzsignalpaaren darstellt (ein Paar zum Senden, ein Paar zum Empfangen). Um die Bandbreite zu skalieren, kann eine Verbindung mehrere Bahnen zusammenfassen, was mit xN bezeichnet ist, wobei N eine unterstützte Verbindungsbreite ist, beispielsweise 1, 2, 4, 8, 12, 16, 32, 64 oder breiter. In einigen Implementierungen umfasst jede symmetrische Bahn ein Sende-Differenzpaar und ein Empfangs-Differenzpaar. Asymmetrische Spuren können ungleiche Verhältnisse von Sende- und Empfangspaaren aufweisen. Einige Technologien (z. B. PCIe) können symmetrische Bahnen verwenden, während andere (z. B. Displayport) unter anderen Beispielen dies möglicherweise nicht tun und vielleicht sogar nur Sende- oder Empfangspaare umfassen können.
  • Ein Differenzpaar bezieht sich auf zwei Übertragungspfade, wie beispielsweise Leitungen 416 und 417, um Differenzsignale zu übertragen. Wenn beispielsweise die Leitung 416 von einem niedrigen Spannungspegel auf einen hohen Spannungspegel umschaltet, d. h. eine ansteigende Flanke, steuert die Leitung 417 von einem hohen Logikpegel auf einen niedrigen Logikpegel, d. h. eine abfallende Flanke. Differenzsignale weisen potenziell bessere elektrische Eigenschaften auf, wie beispielsweise eine bessere Signalintegrität, d. h. Übersprechkopplung, Spannungsüberschwingen/-unterschwingen, Überschwingen usw. Dies ermöglicht ein besseres Zeitvorgabefenster, das schnellere Übertragungsfrequenzen ermöglicht.
  • Eine Vielzahl von Zwischenverbindungsarchitekturen und -protokollen kann die hier diskutierten Konzepte verwenden. Mit den Fortschritten bei Rechensystemen und Leistungsanforderungen werden Verbesserungen an der Implementierung von Zwischenverbindungs-Fabric und Verbindungen fortlaufend entwickelt, was Zwischenverbindungen umfasst, die auf PCIe-Elementen oder anderen älteren Zwischenverbindungsplattformen basieren oder diese verwenden. In einem Beispiel wurde Rechen-Express-Verbindung (CXL) entwickelt, die eine verbesserte Hochgeschwindigkeits-Zwischenverbindung von CPU zu Vorrichtung sowie von CPU zu Speicher bietet, um unter anderen Anwendungen die Leistung von Rechenzentren der nächsten Generation zu beschleunigen. CXL hält die Speicherkohärenz zwischen dem CPU-Speicherraum und dem Speicher auf angeschlossenen Vorrichtungen aufrecht, was unter anderen beispielhaften Vorteilen die gemeinsame Nutzung von Betriebsmitteln für eine höhere Leistungsfähigkeit, eine geringere Komplexität des Software-Stapels und niedrigere Gesamtsystemkosten ermöglicht. CXL ermöglicht die Kommunikation zwischen Hostprozessoren (z. B. CPUs) und einer Menge von Arbeitslast-Beschleunigern (z. B. unter anderen Beispielen Grafikprozessoren (GPUs), Vorrichtungen mit feldprogrammierbaren Gatteranordnungen (FPGA-Vorrichtungen), Tensor- und Vektorprozessoreinheiten, Beschleunigern für maschinelles Lernen und speziell entwickelten Beschleunigerlösungen). In der Tat ist CXL so konzipiert, dass es eine Standardschnittstelle für die Hochgeschwindigkeitskommunikation bietet, da Beschleuniger zunehmend als Ergänzung zu CPUs zur Unterstützung neuer Rechenanwendungen wie künstlicher Intelligenz, maschinellen Lernens und anderer Anwendungen eingesetzt werden.
  • Eine CXL-Verbindung kann eine diskrete oder baugruppeninterne Verbindung mit niedriger Latenz und hoher Bandbreite sein, die das dynamische Protokollmultiplexen von Kohärenz-, Speicherzugriffs- und Eingabe/Ausgabe-Protokollen (E/A-Protokollen) unterstützt. Unter anderen Anwendungen kann eine CXL-Verbindung einem Beschleuniger unter anderen Beispielen ein Zugreifen auf den Systemspeicher als Caching-Agent und/oder ein Hosten von Systemspeicher ermöglichen. CXL ist eine dynamische Multiprotokolltechnologie, die dazu ausgelegt ist, ein breites Spektrum an Beschleunigern zu unterstützen. CXL bietet eine große Menge von Protokollen, darunter E/A-Semantik ähnlich wie PCIe (CXL.io), Caching-Protokoll-Semantik (CXL.cache) und Speicherzugriffs-Semantik (CXL.mem) über eine diskrete oder baugruppeninterne Verbindung. Basierend auf dem jeweiligen Beschleuniger-Nutzungsmodell können alle CXL-Protokolle oder nur eine Teilmenge der Protokolle aktiviert werden. In einigen Implementierungen kann CXL auf der gut etablierten, weit verbreiteten PCIe-Infrastruktur (z. B. PCIe 5.0) aufbauen und die physische und elektrische PCIe-Schnittstelle nutzen, um ein fortgeschrittenes Protokoll in Bereichen einschließlich E/A, Speicherprotokoll (z. B. Ermöglichen, dass ein Hostprozessor den Speicher mit einer Beschleunigervorrichtung gemeinsam nutzt) und Kohärenzschnittstelle bereitzustellen.
  • Unter Bezugnahme auf 5 ist ein vereinfachtes Blockdiagramm 500 gezeigt, das ein beispielhaftes System darstellt, das eine CXL-Verbindung 550 verwendet. Beispielsweise kann die Verbindung 550 einen Hostprozessor 505 (z. B. eine CPU) mit einer Beschleunigervorrichtung 510 verbinden. In diesem Beispiel umfasst der Hostprozessor 505 einen oder mehrere Prozessorkerne (z. B. 515a-b) und ein oder mehrere E/A-Vorrichtungen (z. B. 518). Der Hostspeicher (z. B. 560) kann mit dem Hostprozessor (z. B. in derselben Baugruppe oder demselben Chip) bereitgestellt werden. Die Beschleunigervorrichtung 510 kann eine Beschleunigerlogik 520 umfassen und kann in einigen Implementierungen ihren eigenen Speicher (z. B. einen Beschleunigerspeicher 565) enthalten. In diesem Beispiel kann der Hostprozessor 505 eine Schaltungsanordnung zum Implementieren der Kohärenz-/Cache-Logik 525 und der Zwischenverbindungslogik (z. B. PCIe-Logik 530) umfassen. Eine CXL-Multiplexlogik (z. B. 555a-b) kann ebenfalls bereitgestellt werden, um das Multiplexen von CXL-Protokollen (z. B. E/A-Protokoll 535a-b (z. B. CXL.io), Caching-Protokoll 540a-b (z. B. CXL.cache) und Speicherzugriffsprotokoll 545a-b (CXL.mem)) zu ermöglichen, wodurch ermöglicht wird, dass Daten eines der unterstützten Protokolle (z. B. 535a-b, 540a-b, 545ab) auf gemultiplexte Weise über die Verbindung 550 zwischen dem Hostprozessor 505 und der Beschleunigervorrichtung 510 gesendet werden.
  • In einigen Implementierungen kann ein Flex-Bus™-Port zusammen mit CXL-kompatiblen Verbindungen verwendet werden, um eine Vorrichtung flexibel zum Verbinden mit einer großen Vielzahl anderer Vorrichtungen (z. B. anderer Prozessorvorrichtungen, Beschleuniger, Switches, Speichervorrichtungen usw.) anzupassen. Ein Flex-Bus-Port ist ein flexibler Hochgeschwindigkeitsport, der statisch so konfiguriert ist, dass er entweder eine PCIe- oder eine CXL-Verbindung (und möglicherweise auch Verbindungen anderer Protokolle und Architekturen) unterstützt. Mittels eines Flex-Bus-Ports können Designs zwischen der Bereitstellung eines nativen PCIe-Protokolls oder CXL über eine baugruppenexterne Verbindung mit hoher Bandbreite wählen. Die Auswahl des an dem Port angewendeten Protokolls kann während der Hochfahrzeit über die automatische Aushandlung erfolgen und basiert auf der Vorrichtung, die an den Steckplatz angeschlossen ist. Flex Bus verwendet PCIe-Elektrik, wodurch es mit PCIe-Neuzeitgebern kompatibel ist, und entspricht den Standard-PCIe-Formfaktoren für eine Zusatzkarte.
  • Unter Bezugnahme auf 6 ist ein Beispiel (in einem vereinfachten Blockdiagramm 600) eines Systems gezeigt, das Flex-Bus-Ports (z. B. 635-640) verwendet, um CXL- (z. B. 615a-b, 650a-b) und PCIe-Verbindungen (z. B. 630a-b) zu implementieren, um eine Vielzahl von Vorrichtungen (z. B. 510, 610, 620, 625, 645 usw.) mit einem Hostprozessor (z. B. CPU 505, 605) zu koppeln. In diesem Beispiel kann ein System zwei CPU-Hostprozessorvorrichtungen (z. B. 505, 605) umfassen, die durch eine Zwischenprozessorverbindung 670 miteinander verbunden sind (z. B. unter Verwendung einer UltraPath-Zwischenverbindung (UPI), Infinity-Fabric™ oder eines anderen Zwischenverbindungsprotokolls). Jede Hostprozessorvorrichtung 505, 605 kann mit lokalen Systemspeicherblöcken 560, 660 (z. B. Speichervorrichtungen mit doppelter Datenrate (DDR-Speichervorrichtungen) gekoppelt sein, die über eine Speicherschnittstelle (z. B. Speicherbus oder eine andere Zwischenverbindung) mit dem jeweiligen Hostprozessor 505, 605 gekoppelt sind.
  • Wie es oben diskutiert ist, können CXL-Verbindungen (z. B. 615a, 650b) verwendet werden, um eine Vielzahl von Beschleunigervorrichtungen (z. B. 510, 610) miteinander zu verbinden. Dementsprechend können entsprechende Ports (z. B. Flex-Bus-Ports 635, 640) dazu konfiguriert sein (z. B. CXL-Modus ausgewählt), um das Herstellen von CXL-Verbindungen zu ermöglichen und entsprechende Hostprozessorvorrichtungen (z. B. 505, 605) mit Beschleunigervorrichtungen (z. B. 510, 610) zu verbinden. Wie es in diesem Beispiel gezeigt ist, können Flex-Bus-Ports (z. B. 636, 639) oder andere ähnlich konfigurierbare Ports so konfiguriert werden, dass sie Allzweck-E/A-Verbindungen (z. B. PCIe-Verbindungen) 630a-b anstelle von CXL-Verbindungen implementieren, um den Hostprozessor (z. B. 505, 605) mit E/A-Vorrichtungen (z. B. intelligenten E/A-Vorrichtungen 620, 625 usw.) zu verbinden. In einigen Implementierungen kann der Speicher des Hostprozessors 505 beispielsweise unter anderen Implementierungen und Architekturen durch den Speicher (z. B. 565, 665) verbundener Beschleunigervorrichtungen (z. B. 510, 610) oder Speichererweiterungsvorrichtungen (z. B. 645, mit dem/n Hostprozessor(en) 505, 605 über entsprechende an Flex-Bus-Ports (637, 638) implementierten CXL-Verbindungen (z. B. 650a-b) verbunden ist) erweitert werden.
  • 7 ist ein vereinfachtes Blockdiagramm, das eine beispielhafte Portarchitektur 700 (z. B. Flex Bus) darstellt, die zum Implementieren von CXL-Verbindungen verwendet wird. Beispielsweise kann die Flex-Bus-Architektur als mehrere Schichten organisiert sein, um die mehreren von dem Port unterstützten Protokolle zu implementieren. Beispielsweise kann der Port eine Transaktionsschichtlogik (z. B. 705), eine Verbindungsschichtlogik (z. B. 710) und eine Bitübertragungsschichtlogik (z. B. 715) umfassen (z. B. alle oder teilweise in Schaltungen implementiert). Beispielsweise kann eine Transaktionsschicht (oder Protokollschicht) (z. B. 705) in die Transaktionsschichtlogik 725, die eine PCIe-Transaktionsschicht 755 und CXL-Transaktionsschichterweiterungen 760 (für CXL.io) einer Basis-PCIe-Transaktionsschicht 755 implementiert, und eine Logik 730 zum Implementieren von Cache- (z. B. CXL.cache) und Speicherprotokollen (z. B. CXL.mem) für eine CXL-Verbindung unterteilt sein. In ähnlicher Weise kann die Verbindungsschichtlogik 735 bereitgestellt werden, um eine Basis-PCIe-Datenverbindungsschicht 765 und eine CXL-Verbindungsschicht (für CXl.io), die eine erweiterte Version der PCIe-Datenverbindungsschicht 765 darstellt, zu implementieren. Eine CXL-Verbindungsschicht 710 kann auch eine Cache-und-Speicherverbindungsschichterweiterungslogik 740 (z. B. für CXL.cache und CXL.mem) umfassen.
  • Um das Beispiel von 7 fortzusetzen, kann unter anderen beispielhaften Implementierungen eine CXL-Verbindungsschichtlogik 710 mit der CXL-Schlichtungs-/Multiplex-Logik (ARB/MUX-Logik) 720 verbunden sein, die den Verkehr aus den zwei Logikströmen (z. B. PCIe/CXL.io und CXL.cache/CXL.mem) verschachtelt. Während des Verbindungstrainings sind die Transaktions- und Verbindungsschichten dazu ausgelegt, entweder im PCIe-Modus oder im CXL-Modus zu arbeiten. In einigen Fällen unterstützt unter anderen Beispielen möglicherweise eine Host-CPU die Implementierung des PCIe- oder CXL-Modus, während andere Vorrichtungen wie z. B. Beschleuniger nur den CXL-Modus unterstützen. In einigen Implementierungen kann der Port (z. B. ein Flex-Bus-Port) eine Bitübertragungsschicht 715 verwenden, die auf einer PCIe-Bitübertragungsschicht (z. B. elektrische PCIe-PHY 750) basiert. Beispielsweise kann eine Flex-Bus-Bitübertragungsschicht als konvergierte logische Bitübertragungsschicht 745 implementiert sein, die basierend auf Ergebnissen der Aushandlung eines alternativen Modus während des Verbindungstrainingsprozesses entweder im PCIe-Modus oder im CXL-Modus arbeiten kann. In einigen Implementierungen unterstützt die Bitübertragungsschicht möglicherweise mehrere Signalisierungsraten (z. B. 8 GT/s, 16 GT/s, 32 GT/s usw.) und mehrere Verbindungsbreiten (z. B. x16, x8, x4, x2, x1 usw.). Im PCIe-Modus können von dem Port 700 implementierte Verbindungen vollständig mit nativen PCIe-Funktionen (wie sie z. B. in der PCIe-Spezifikation definiert sind) kompatibel sein, während im CXL-Modus die Verbindung alle für CXL definierten Funktionen unterstützt. Dementsprechend kann ein Flex-Bus-Port eine Punkt-zu-Punkt-Zwischenverbindung bereitstellen, die native PCIe-Protokolldaten oder dynamische Multiprotokoll-CXL-Daten übertragen kann, um unter anderen Beispielen E/A-, Kohärenz- und Speicherprotokolle über PCIe-Elektrik bereitzustellen.
  • Das CXL-E/A-Protokoll CXL.io bietet eine nicht kohärente Lade-/Speicherschnittstelle für E/A-Vorrichtungen. Transaktionstypen, Transaktionspaketformatierung, kreditbasierte Flusskontrolle, Verwaltung virtueller Kanäle und Transaktionsreihenfolgeregeln in CXL.io können der ganzen oder teilweisen PCIe-Definition folgen. Das CXL-Cache-Kohärenzprotokoll CXL.cache definiert die Interaktionen zwischen der Vorrichtung und dem Host als eine Reihe von Anforderungen, denen jeweils mindestens eine Antwortnachricht und manchmal eine Datenübertragung zugeordnet sind. Die Schnittstelle besteht aus drei Kanälen in jeder Richtung: Anforderung, Antwort und Daten.
  • Das CXL-Speicherprotokoll CXL.mem ist eine Transaktionsschnittstelle zwischen dem Prozessor und dem Speicher und verwendet die Bitübertragungsschicht und Verbindungsschicht von CXL, wenn über Chips hinweg kommuniziert wird. CXL.mem kann unter anderem für mehrere verschiedene Speicheranschlussoptionen verwendet werden, z. B. wenn sich ein Speichercontroller in der Host-CPU befindet, wenn sich der Speichercontroller in einer Beschleunigervorrichtung befindet oder wenn der Speichercontroller auf einen Speicherpufferchip verschoben ist. CXL.mem kann unter anderen beispielhaften Merkmalen auf Transaktionen angewendet werden, die verschiedene Speichertypen (z. B. flüchtig, dauerhaft usw.) und Konfigurationen (z. B. flach, hierarchisch usw.) beinhalten. In einigen Implementierungen kann eine Kohärenzmaschine des Hostprozessors unter Verwendung von CXL.mem-Anforderungen und -Antworten eine Schnittstelle zum Speicher herstellen. In dieser Konfiguration wird die CPU-Kohärenzmaschine als CXL.mem-Meister und die Mem-Vorrichtung als CXL.mem-Untergebener betrachtet. Der CXL.mem-Meister ist der Agent, der für die Beschaffung von CXL.mem-Anforderungen (z. B. Lesevorgänge, Schreibvorgänge usw.) verantwortlich ist, und ein CXL.mem-Untergebener ist der Agent, der für die Beantwortung von CXL.mem-Anforderungen (z. B. Daten, Abschlüsse usw.) verantwortlich ist. Wenn der Untergebene ein Beschleuniger ist, setzt das CXL.mem-Protokoll das Vorhandensein einer Vorrichtungskohärenzmaschine (DCOH) voraus. Es wird angenommen, dass dieser Agent für das Implementieren kohärenzbezogener Funktionen verantwortlich ist, z. B. das Überprüfen von Vorrichtungscaches basierend auf CXL.mem-Befehlen und das Aktualisieren von Metadatenfeldern. In Implementierungen, in denen Metadaten von einem an die Vorrichtung angeschlossenen Speicher unterstützt werden, können sie von dem Host verwendet werden, um unter anderem einen Grobüberprüfungsfilter für CPU-Sockel zu implementieren.
  • In einigen Rechensystemen werden dauerhafte Daten zwischengespeichert oder vorübergehend in Puffern gehalten, um die Leistung des Systems zu verbessern. Wenn das System in Betrieb ist, können diese Caches und Datenpuffer Daten halten, von denen eine Anwendung annimmt, dass sie in den dauerhaften Speicher geschrieben wurden, die es jedoch nicht in den dauerhaften Speicher geschafft haben. In Fällen von asynchronen Ereignissen wie z. B. einem Stromausfall kann das System mithilfe von Leerungen sicherstellen, dass diese im Flug befindlichen Daten in den dauerhaften Speicher geschrieben werden, um die Konsistenz mit der Sicht der Anwendung sicherzustellen. In herkömmlichen Computerarchitekturen einschließlich herkömmlicher Serverdesigns ist das Leeren des Caches und anderer im flüchtigen Speicher gespeicherter Daten in den dauerhaften Speicher auf das Leeren von CPU-Caches und des direkt an die CPU angeschlossenen dauerhaften Speichers beschränkt. Durch die Einführung von CXL-Topologien und -Protokollen sind die Caches und der dauerhafte Speicher eines Systems jedoch nicht so eingeschränkt und können sich außerhalb eines Hostprozessors (z. B. einer CPU) irgendwo in einem CXL-Baum befinden. Beispielsweise kann der CXL-Baum in einem System unter anderen beispielhaften Elementen CXLangeschlossene Vorrichtungen einschließlich Beschleuniger (die dauerhaften Speicher zwischenspeichern können) und angeschlossene dauerhafte Speichererweiterungen. Herkömmliche Lösungen setzen ein zentraleres Modell voraus, bei dem Caches Teil der CPU sind und dauerhafter Speicher (z. B. Vorrichtungen mit dualen Reihenspeichermodulen (DIMM-Vorrichtungen)) direkt an die CPU angeschlossen ist, so dass die CPU solche Leerungen lokal behandeln kann.
  • In verbesserten Implementierungen kann eine CXL-Verbindung (und die Protokollagenten auf den durch die Verbindung gekoppelten Vorrichtungen) eine asynchrone DRAM-Auffrischung oder ein GPF-Protokoll oder einen Flusses zur dauerhaften Leerung (GPF-Fluss) unterstützen. Die globale dauerhafte Leerung kann als hardwarebasierter Mechanismus implementiert werden, der dem dauerhaften Speicher zugeordnet ist und zum Leeren von Cache- und Speicherpuffern in die dauerhafte Domäne verwendet wird. GPF kann durch bestimmte Ereignisse ausgelöst werden, bei denen die Software die Daten nicht leeren kann, z. B. unter anderen Beispielen als Antwort auf einen Hinweis auf einen bevorstehenden Stromausfall oder ein nicht ordnungsgemäßes Zurücksetzen. Darüber hinaus können CXL-Agenten Nachrichten, die einem GPF-Fluss zugeordnet sind, verwenden, um Fehler zu detektieren und zu identifizieren, die beim Versuch auftreten können, in den dauerhaften Speicher zu leeren. Das Ermöglichen des Detektierens von Fehlern durch den GPF-Fluss kann besonders wichtig sein, da es um dauerhafte Daten geht (auf die sich die Systemanwendungen stützen) und ein möglicher Verlust dauerhafter Daten nachverfolgt werden sollte, um unter anderen Vorteilen und Überlegungen einen korrekten und vertrauenswürdigen Betrieb sicherzustellen.
  • Wie es hier diskutiert ist, können Protokollagenten, die auf einem Vorrichtung implementiert sind (z. B. durch Hardwareschaltungen, Firmware und/oder Software), einen GPF-Fluss auf einer Verbindung (z. B. einer CXL-Verbindung) implementieren, die einen Prozessor mit einer oder mehreren externen Vorrichtungen (z. B. Beschleunigervorrichtungen) verbindet. In einer beispielhaften Implementierung kann der GPF-Fluss zwei Phasen umfassen: erstens eine Cache-Leerungsphase und zweitens eine Speicher- oder Pufferleerungsphase, wobei eine logische Barriere (z. B. durch die initiierende CPU) zwischen den beiden Phasen erzwungen wird. Ferner können Fehlerdetektion und -meldung während des GPF-Flusses wie etwa Vorrichtungsfehler oder Zeitüberschreitungen während einer oder beider Phasen übermittelt werden, wobei jegliche Fehler zur Protokollierung an die CPU zurückgemeldet werden. Sollte ein Cache-Leerungsphasen-Fehler gemeldet werden, kann die CPU unter anderen beispielhaften Funktionen zudem eine Angabe des Cache-Leerungsphasen-Fehlers beim Initiieren der nächsten Phase, der Pufferleerungsphase, (z. B. Festlegen eines oder mehrerer Felder in einer zum Initiieren der Pufferleerungsphase über die Verbindung gesendeten Nachricht, um den Fehler zu identifizieren) aufnehmen, damit dauerhafte Speichervorrichtungen einen entsprechenden Zustand „Unreines Herunterfahren“ protokollieren können. Solche Funktionen können eine breitere Übernahme der unterstützenden Verbindung (z. B. CXL) ermöglichen und unter anderen beispielhaften Vorteilen den Hostprozessor und dauerhafte Speichervorrichtungen, die mit solchen Zwischenverbindungstechnologien kompatibel sind, verbessern.
  • Unter Bezugnahme auf 8 ist eine beispielhafte Systemtopologie durch ein vereinfachtes Blockdiagramm 800 dargestellt. In diesem Beispiel sind zwei CPU-Vorrichtungen 505, 605 durch eine Verbindung 670, die zum Koppeln von zwei Prozessorvorrichtungen ausgelegt ist, wie eine UPI, Infinity Fabric oder eine andere Zwischenprozessorverbindung miteinander verbunden. Jede CPU 505, 605 kann ebenfalls (über Speicherbusse) mit dem jeweiligen lokalen Systemspeicher wie beispielsweise DDR-Speicherelementen 560, 660 verbunden sein. CXL-Verbindungen (z. B. 870a-k) können verwendet werden, um „Bäume“ 805, 810 unter jeder CPU 505, 605 zu konstruieren, wobei jeder Baum 805, 810 ein oder mehrere zusätzliche Vorrichtungen einschließlich Beschleunigervorrichtungen (z. B. 840, 845) und Speichererweiterungsvorrichtungen (z. B. 815, 820, 825, 830, 835) umfasst. In einigen Implementierungen können auch Switch-Elemente (z. B. 850, 855, 860, 865) in CXL-Bäumen enthalten sein und können verwendet werden, um Verkehr zu Vorrichtungen zu leiten, die stromabwärts von der entsprechenden CPU und dem entsprechenden Switch positioniert sind. Beispielsweise kann der Switch 2 855 mit Beschleuniger 1 840 und dauerhafter Speichererweiterung 825 verbinden und den von der CPU 505 empfangenen Verkehr zu einer der Vorrichtungen weiterleiten und ebenfalls den von dem Beschleuniger 840 oder der Speichererweiterung 825 stammenden Verkehr stromaufwärts zu der CPU 505 weiterleiten. In einigen Implementierungen können die Einzelheiten und Attribute von Vorrichtungen, die stromabwärts von einem Switch angeordnet sind, zumindest teilweise vor der CPU (z. B. 505, 605), die den entsprechenden CXL-Baum kontrolliert, „verborgen“ sein, so dass die CPU nicht direkt mit Vorrichtungen unter dem Switch kommuniziert. Die Zwischenverbindung 670 der Hostprozessoren 505, 605 kann die Zwischenverbindung der Bäume 805, 810 ermöglichen, wodurch die Kombination von Prozessor-, Beschleuniger- und Speicherelementen arbeiten, Betriebsmittel gemeinsam nutzen und als ein einziges System fungieren kann.
  • In einigen Implementierungen kann ein Hostprozessor (z. B. 505, 605) CXL-Funktionen und -Flüsse initiieren, an denen Vorrichtungen innerhalb seines jeweiligen Baums (z. B. 805 bzw. 810) beteiligt sind. Beispielsweise kann ein CXL-GPF-Fluss von jedem Hostprozessor (z. B. 505, 605) in einem System auf koordinierte Weise initiiert werden (z. B. unter Verwendung von Nachrichten zwischen den Hostprozessoren), um den GPF-Fluss (und das entsprechende Leeren von Cache-Daten in einem dauerhaften Speicher) innerhalb ihres jeweiligen CXL-Baums (z. B. 805, 810) zu initiieren und zu steuern. Unter Bezugnahme auf das Beispiel, das in den vereinfachten Blockdiagrammen 900a-e von 9A-9E dargestellt ist, kann ein GPF-Fluss durch Senden von Nachrichten (z. B. GPF-Anforderungen und -Antworten) gemäß einem definierten GPF-Fluss oder - Protokoll implementiert werden. Ein GPF- oder Cache-Leerungs-Fluss kann basierend auf der Detektion eines Ereignisses initiiert werden, das zum Initiieren des GPF-Flusses ausgelegt ist. Ereignisse können Beispiele wie Stromausfallereignisse, schwerwiegende Systemfehler (von denen aus z. B. die Software nicht weitermachen kann), anormale Herunterfahr- oder Zurücksetz-Ereignisse und andere Ereignisse, bei denen die Software keine Caches in die dauerhafte Speicherdomäne leeren kann, umfassen. Solche Ereignisse können vordefiniert sein (z. B. in einem Register) oder dynamisch identifiziert werden, um zu veranlassen, dass ein Hostprozessor einen GPF-Fluss und andere Cache-Leerungs-Ereignisse initiiert. Zum Beispiel ist kann ein Hostprozessor 505 in dem Beispiel von 9A ein Ereignis detektieren oder eine Angabe eines Ereignisses von einer anderen Vorrichtung innerhalb seines CXL-Baums empfangen. Als Antwort kann der Hostprozessor 505 eine Cache-Leerung für das gesamte System initiieren. Dies kann ein Senden von LeerungsAnforderungen (z. B. 905) gemäß einem Zwischenprozessorprotokoll (die z. B. die Verbindung regeln, die die CPUs 505, 605 verbindet) umfassen, um die Initiierung der Cache-Leerung an andere Hostprozessorvorrichtungen (z. B. 605) in dem System zu vermitteln. Ebenso können auch Leerungsanforderungen (z. B. 910a, 910b) anderer Protokolle anderer im System verwendeter Verbindungen gesendet werden, um eine Leerungsanforderung an über solche Verbindungen verbundene Vorrichtungen zu vermitteln.
  • In dem Beispiel von 9A initiiert die CPU 505 als Antwort auf ein Identifizieren eines Ereignisses eine Cache-Leerung, indem sie eine Leerungsnachricht 905 (z. B. eine UPI-Leerungsnachricht) an die CPU 605 und eine Leerungsanforderung 910a gemäß einem Speicherbusprotokoll an den Speicherblock 560 sendet und einen CXL-GPF-Fluss initiiert. In einem Beispiel kann der CXL-GPF-Fluss in zwei Phasen stattfinden: einer ersten Cache-Leerungsphase, gefolgt von einer zweiten Pufferleerungsphase. Dementsprechend kann die CPU 505 zum Initiieren des GPF-Flusses einen Satz von CXL-GPF-Cache-Leerungs-Anforderungsnachrichten (z. B. 915a-c) an die Speichererweiterungsvorrichtung 815 und die Switches 850, 855 senden, die über entsprechende CXL-Verbindungen direkt mit der CPU 505 verbunden sind. Wenn die Leerungsnachricht 905 die CPU 605 über das Leerungsereignis benachrichtigt, kann die CPU 605 ebenfalls GPF-Cache-Leerungs-Anforderungsnachrichten (z. B. 915g, 915h) (und jegliche anderen Leerungsanforderungsnachrichten (z. B. 910b)) an Vorrichtungen (z. B. 660, 845, 860) senden, die direkt mit der CPU 605 verbunden sind. Switches (z. B. 850, 855, 860, 865), die eine GPF-Anforderungsnachricht (z. B. 915b, 915c, 915h, 915i) empfangen, können veranlassen, dass zusätzliche Instanzen (z. B. 915d, 915e, 915f, 915i, 915j, 915k) der empfangenen GPF-Anforderungsnachricht an stromabwärtige Vorrichtungen (z. B. 820, 825, 830, 835, 840, 865) weitergeleitet werden und die GPF-Cache-Leerung über die gesamten CXL-Bäume des Systems kommunizieren. Nicht-CXL-Leerungsanforderungen können gemäß den jeweiligen Protokollen, die diese Verbindungen regeln, behandelt werden.
  • Unter Bezugnahme auf 9B können in diesem speziellen Beispiel Beschleunigervorrichtungen (z. B. 840, 845), die innerhalb eines CXL-Baums angeschlossen sind, eine GPF-Cache-Leerungs-Anforderungsnachricht (z. B. 915e, 915g) empfangen und als Antwort veranlassen, dass in ihrem lokalen Cache gespeicherte Daten in einen oder mehrere dauerhafte Speicherblöcke in dem System geleert (oder kopiert/geschrieben) werden. Basierend auf dem Empfang der GPF-Cache-Leerungs-Anforderungsnachrichten 915e, 915g kann beispielsweise die Beschleunigervorrichtung 840 ihren Cache 920a in die dauerhafte Speichervorrichtung 825 leeren und die Beschleunigervorrichtung 845 ihren Cache 920b in den CPU-Speicher 660 leeren. Es ist zu beachten, dass andere Vorrichtungen als Beschleuniger innerhalb eines CXL-Baums angeschlossen sein können und den Cache oder einen anderen flüchtigen Speicher, der von auf dem System ausgeführten Anwendungen verwendet wird und der als Antwort auf den Empfang einer GPF-Anforderung (z. B. 915a-k) geleert werden kann, verwalten können. Ebenso können Cache-Daten unter anderen beispielhaften Implementierungen in einen oder, mehrere verschiedene dauerhafte Speicherblöcke (möglicherweise auf mehreren verschiedenen Speichervorrichtungen (z. B. 560, 660, 815, 820, 825, 830, 835) innerhalb des Systems gehostet) geleert werden.
  • Um das Beispiel von 9A-9E fortzusetzen, kann, wie es in 9C gezeigt ist, ein GPF-Fluss so definiert werden, dass eine Vorrichtung bei Empfang einer GPF-Anforderung (z. B. 915a-k) die Antwort verarbeitet, die empfangene Anforderung bestätigt (z. B. nach der Verarbeitung) und die ergriffenen Maßnahmen und jegliche mit diesen Maßnahmen verbundenen Fehler in entsprechenden GPF-Antwortnachrichten meldet. Beispielsweise ist zu erwarten, dass jede empfangende CXL-Vorrichtung (z. B. 815, 820, 825, 830, 835, 840, 845, 850, 855, 860, 865) in Übereinstimmung mit dem definierten GPF-Fluss eine entsprechende GPF-Cache-Leerungs-Antwortnachricht (z. B. 925a-k) als Antwort auf das Empfangen (und Verarbeiten) einer GPF-Cache-Leerungs-Anforderungsnachricht zurückgibt. Eine Leerungsantwortnachricht kann angeben, ob die Vorrichtung ihre Cache-Leerungsaufgabe(n) abgeschlossen hat und/oder ob beim Versuch, den Cache in den dauerhaften Speicher zu leeren, ein Fehler aufgetreten ist. Bei Vorrichtungen, die keinen Cache zum Leeren oder keine Daten in dem Cache haben, kann die Antwort in ihrer Cache-Leerungs-Antwort (z. B. 925a-k) einfach angeben, dass sie ihre Leerungs-Aufgabe erfolgreich abgeschlossen haben. Bei Switches, Routern oder anderen Vorrichtungen, die Nachrichten von einer stromaufwärtigen Vorrichtung (z. B. einem Hostprozessor) an zwei oder mehr verbundene stromabwärtige Vorrichtungen leiten, können Leerungsantworten den Status, den Inhalt und/oder die Attribute der von ihren verbundenen stromabwärtigen Vorrichtungen empfangenen, gesammelten Leerungsantworten angeben. Als Beispiel kann der Switch 855 verwendet werden, um Nachrichten zwischen der CPU 505 und sowohl dem Beschleuniger 840 als auch der dauerhaften Speichervorrichtung 825 weiterzuleiten. Der Switch 855 kann GPF-Cache-Leerungs-Antwortnachrichten 925b,c von jeder der Vorrichtungen 825, 840 empfangen. Die von dem Switch 855 erzeugte Cache-Leerungsantwort 925f kann auf den Antworten 925b,c aus den Vorrichtungen 825, 840 basieren und angeben, ob diese Vorrichtungen ihre jeweiligen Cache-Leerungs-Aufgaben erfolgreich abgeschlossen haben und/oder ob ein Fehler aufgetreten ist. Der Hostprozessor (z. B. 505) kann dadurch Leerungsantwortnachrichten (z. B. 925d-f) empfangen, die den Erfolg und/oder die Fehler der Cache-Leerungsphase für jede der Vorrichtungen (z. B. 815, 820, 825, 840, 850, 855) in seinem CXL-Baum angeben. Der Hostprozessor, der den Baum unter Befehl hat, kann die Ergebnisse der Cache-Leerungsphase des GPF-Flusses und alle Fehler, die entweder von dem Hostprozessor (z. B. 505) oder anderen stromabwärtigen Vorrichtungen in dem Baum detektiert und gemeldet werden, protokollieren.
  • Angesichts der Tatsache, dass die Zeit im Zusammenhang mit dem Leeren des flüchtigen Speichers in den dauerhaften Speicher im Zusammenhang mit einem Ereignis häufig von entscheidender Bedeutung ist, können Zeitüberschreitungsereignisse so definiert werden, dass von Vorrichtungen in einem CXL-Baum erwartet wird, dass sie eine entsprechende GPF-Leerungsantwort innerhalb von eines definierten Zeitfensters erzeugen. Wenn innerhalb dieses Fensters keine Antwort erzeugt wird, kann ein Zeitüberschreitungsfehler identifiziert werden (z. B. durch die Vorrichtung, die die Antwort von ihrer verbundenen stromabwärtigen Vorrichtung empfangen soll). In Fällen, in denen ein Switch (z. B. 850) auf eine Leerungsantwort von einer bestimmten verbundenen Vorrichtung (z. B. 820) wartet, aber keine Leerungsantwortnachricht empfangen wird, kann der Switch feststellen, dass eine Zeitüberschreitung aufgetreten ist, und die Zeitüberschreitung in der von dem Switch (z. B. 850) gesendeten Leerungsantwortnachricht (z. B. 925e) als Fehler kennzeichnen. Ebenso können andere Arten von Fehlern in Leerungsantworten auf ähnliche Weise angezeigt werden, so dass die Angabe jeglichen Fehlers von der detektierenden Vorrichtung den Baum hinauf zu dem Hostprozessor, der den Befehl über Baum hat, zur Protokollierung weitergeleitet wird.
  • Sobald der Hostprozessor (z. B. 505, 605) eines Baums Cache-Leerungs-Antworten von jeder der CXL-Vorrichtungen, mit denen er direkt verbunden ist, (z. B. Vorrichtungen 815, 850, 855 für CPU 505 und Vorrichtungen 845, 860 für CPU 605) empfängt, kann der Hostprozessor zu dem Schluss kommen, dass die Cache-Leerungsphase des GPF-Flusses abgeschlossen ist. Nach Abschluss der Cache-Leerungsphase kann der Hostprozessor (z. B. 505, 605) dann die nächste Phase, die Pufferleerungsphase, initiieren, um zu veranlassen, dass die Puffer jeglicher dauerhafter Speicherelemente (in die die Cache-Daten gerade geleert wurden) selbst geleert werden, um sicherzustellen, dass alle an die dauerhaften Speichervorrichtungen gesendeten Daten tatsächlich in den dauerhaften Speicher festgeschrieben werden. In einigen Implementierungen können dauerhafte Speichervorrichtungen (z. B. 815, 820, 825, 830, 835 usw.) Puffer aufweisen, damit die Vorrichtungen eine höhere Bandbreite eingehender Speicheranforderungen akzeptieren können. Solche Puffer sind jedoch möglicherweise nicht sicher vor Ereignissen, die einen GPF-Fluss auslösen, was es wünschenswert macht, dass der Inhalt dieser Puffer als Antwort auf ein GPF-Ereignis auch in den dauerhaften Speicher festgeschrieben wird. Dementsprechend kann, wie es in 9D gezeigt ist, während einer Pufferleerungsphase jeder Hostprozessor (z. B. 505, 605) über einen Baum GPF-Pufferleerungs-Anforderungsnachrichten (z. B. 930a-c,g,h) an seine verbundenen Vorrichtungen (z. B. 815, 845, 850, 855, 860) senden, um die Pufferleerungsphase zu initiieren. Wie in der Cache-Leerungsphase können Pufferleerungsanforderungen durch den Baum kaskadieren, wobei Vorrichtungen (z. B. 850, 855, 860, 865) entsprechende Instanzen der Pufferleerungsanforderung erzeugen, um sie an andere stromabwärtige Vorrichtungen (z. B. 820, 825, 830, 835, 840 usw.) zu senden, um gegebenenfalls die Pufferleerungsanforderung an alle Vorrichtungen (und die entsprechenden CXL-Protokollagenten) innerhalb des Baums zu übermitteln. Bei Empfang einer Pufferleerungsanforderung können dauerhafte Speichervorrichtungen (z. B. 815, 820, 825, 830, 835) durch Leeren (z. B. 935a-e) in entsprechenden dauerhaften Speicher reagieren.
  • In einigen Implementierungen kann ein Hostprozessor (z. B. 505, 605) die zweite Pufferleerungsphase in einem GPF-Fluss nutzen, um Cache-Leerungs-Fehler zu kommunizieren, die dem Hostprozessor in der vorhergehenden Cache-Leerungsphase gemeldet wurden. Zum Beispiel kann der Hostprozessor Informationen in Pufferleerungs-Anforderungsnachrichten einfügen (die auch in entsprechenden Pufferleerungsanforderungen enthalten sind, die von Switches, Routern und anderen Zwischenvorrichtungen in dem Baum weitergeleitet werden), um anzugeben, dass ein oder mehrere Fehler während der Cache-Leerungsphase identifiziert und gemeldet wurden. Stromabwärtige Vorrichtungen (z. B. Beschleuniger), die diese Informationen empfangen, können protokollieren, dass ein Fehler aufgetreten ist, so dass die Vorrichtung (und die zugehörige Software) die Option identifizieren und handhaben können, dass Daten, die für die Verwendung durch die Vorrichtung oder die Software geplant sind, trotz der versuchten Cache-Leerung unvollständig oder „unrein“ sind.
  • Um das vorhergehende Beispiel fortzusetzen, wie es in 9E gezeigt ist, kann wie in der Cache-Leerungsphase von jeder Vorrichtung erwartet werden, dass sie eine entsprechende Pufferleerungsantwort (z. B. 940a-k) als Antwort auf eine entsprechende Pufferleerungsanforderung erzeugt. Jede Pufferleerungsantwort kann auch angeben, ob die Pufferleerungsaktionen der Vorrichtung erfolgreich oder mit Fehlern abgeschlossen wurden. Vorrichtungen, auf die eine Pufferleerung nicht anwendbar ist, antworten möglicherweise einfach, dass ihre Pufferleerungsaktionen (oder Nichtaktionen) erfolgreich waren. Bei Empfang von Antworten für jede der verbundenen Vorrichtungen können entsprechende Hostprozessoren, die den CXL-Baum regeln, bestimmen, dass der GPF-Fluss abgeschlossen ist, und alle Fehler protokollieren, die möglicherweise in den Pufferleerungsantworten (z. B. 940a-k) gemeldet wurden. Diese Protokolldaten können von der Systemsoftware (z. B. beim Neustart) verwendet werden, um Probleme zu beheben und/oder jegliche Probleme und Daten, die nach dem Ereignis (z. B. Herunterfahren), das den GPF-Fluss ausgelöst hat, möglicherweise beschädigt oder unrein sind, zu kennzeichnen.
  • 10 ist ein vereinfachtes Blockdiagramm 1000, das beispielhafte Komponentenvorrichtungen (z. B. 505, 825, 840, 855) innerhalb eines beispielhaften Systems darstellt. In diesem Beispiel können entsprechende CXL-Verbindungen (z. B. 915c, 915e, 915f) verwendet werden, um die Vorrichtungen zu verbinden, die einen Hostprozessor 505 und einen Beschleuniger 840 und eine dauerhafte Speichererweiterungsvorrichtung 825, die mit dem Hostprozessor 505 über einen protokollbewusstes (z. B. CXL-kompatiblen) Switch 855 kommuniziert, umfassen. In einem Beispiel kann jede der CXL-Vorrichtungen (z. B. 505, 825, 840, 855) eine Protokollagentenlogik (z. B. 1005, 1010, 1015, 1020) aufweisen, um mindestens einen Teil einer oder mehrerer Schichten des CXL-Stapels an einem oder mehreren Ports der Vorrichtung zu implementieren und die Erzeugung und Verarbeitung von CXL-Anforderungs- und Antwortnachrichten, die über die CXL-Verbindungen in einem GPF-Fluss gesendet werden sollen, zu unterstützen. Eine oder mehrere der Vorrichtungen wie etwa der Hostprozessor (z. B. 505) und Beschleunigervorrichtungen (z. B. 840) können lokalen (flüchtigen) Speicher zum Implementieren eines Caches (z. B. 1025, 1035) und einen entsprechenden Speicherverwalter (z. B. 1030, 1040) zum Verwalten der Daten in dem Cache einschließlich des Durchführens von Leerungen von Cache-Daten in den dauerhaften Speicher (z. B. 1045 der dauerhaften Speichervorrichtung 825) umfassen. Im Fall einer dauerhaften Speichervorrichtung (z. B. 825) können ein oder mehrere Puffer (z. B. 1050) unter Verwendung eines entsprechenden Speicherverwalters (z. B. 1040) implementiert und auch verwaltet (z. B. Leerungen orchestriert) werden. In einigen Implementierungen können Vorrichtungen (z. B. 505, 825, 840, 855) in einem CXL-Baum zudem mit einer Fehlerdetektionsschaltung (z. B. 1060, 1065, 1070, 1075) ausgestattet sein, um zu identifizieren, dass eine bestimmte GPF-Aufgabe an der Vorrichtung nicht ausgeführt wurde oder korrekt abgeschlossen wurde (z. B. eine Cache- oder Pufferleerung oder das Schreiben von geleerten Daten in den dauerhaften Speicher), oder einen Fehler basierend auf einer Antwort (oder Nichtantwort) einer anderen Vorrichtung zu bestimmen. Eine oder mehrere Vorrichtungen (z. B. 505, 840), die aufgerufen werden können, um Befehle unter Verwendung von Daten auszuführen, die einer GPF-Prozedur unterliegen können, können zudem Fehlerprotokolle (z. B. 1080, 1085) aufweisen, um basierend auf Fehlern, die während eines vorherigen GPF-Flusses detektiert und gemeldet wurden, eine Instanz zu identifizieren, in der unreine Daten in einem System vorhanden sein können. Die Fehlerprotokolle (z. B. 1080, 1085) können unter anderen beispielhaften Merkmalen und Komponenten dazu verwendet werden, um vor der Verwendung solcher unreinen Daten an der Vorrichtung zu schützen und um Systemsoftware oder andere Systemwerkzeuge beim Beheben des einen oder der mehreren Fehler zu unterstützen.
  • 11 ist ein Ablaufdiagramm 100, das eine beispielhafte GPF darstellt, an der ein Teil von Vorrichtungen innerhalb eines beispielhaften CXL-Baums beteiligt ist. In einer Cache-Leerungsphase sendet ein Hostprozessor (z. B. CPU 505) GPF-Anforderungsnachrichten (z. B. 915a, 915c) an eine dauerhafte Speichervorrichtung 815 und eine mit der CPU 805 verbundene Switch-Vorrichtung 855. In einigen Implementierungen kann eine GPF-Anforderungsnachricht auf einem allgemeinen E/A-Nachrichtenformat (z. B. einem CXL.io-Nachrichtenpaketformat) basieren, das für andere Nachrichten und Nachrichtentypen (z. B. Nicht-GPF-Nachrichten) wiederverwendet werden kann. Beispielsweise können Werte in einem oder mehreren Feldern des Nachrichtenformats eingestellt sein, um anzugeben, dass die Nachricht eine GPF-Nachricht ist, und ein oder mehrere zusätzliche Felder können eingestellt sein, um anzugeben, dass es sich bei der Nachricht um eine Cache-Leerungs-Anforderungsnachricht innerhalb des GPF-Flusses handelt. In diesem Beispiel empfängt der Switch 855 die Cache-Leerungs-Anforderungsnachricht 915c und erzeugt eine entsprechende Instanz 915e der Leerungsanforderungsnachricht, um sie an andere an den Switch 855 angeschlossene Vorrichtungen wie beispielsweise die Beschleunigervorrichtung 840 zu senden. Wenn die dauerhafte Speichervorrichtung 815 die Cache-Leerungsanforderung 915a empfängt, führt sie keine Aktion aus (bei 1105), da die Vorrichtung 815 keinen Cache zum Leeren hat, und sendet eine Antwortnachricht 925d an die CPU 505, um anzugeben, dass sie ihren Teil der GPF-Cache-Leerungsphase erfolgreich ausgeführt hat.
  • UM das Beispiel von 11 fortzusetzen, kann die Beschleunigervorrichtung 840 hängen bleiben (bei 1110), während sie versucht, eine Leerung ihres Caches durchzuführen oder eine GPF-Antwortnachricht zu erzeugen (z. B. nachdem es ihr tatsächlich gelungen ist, ihren Cache in einen dauerhaften Speicher zu leeren). Dementsprechend wird keine Antwort von der Beschleunigervorrichtung 840 an den Switch 855 gesendet und die Zeitüberschreitung 1115 wird an dem Switch 855 detektiert. Der Switch kann basierend auf der Zeitüberschreitung identifizieren, dass ein Fehler aufgetreten ist, und eine Cache-Leerungsantwort 925f erzeugen, die den Fehler und die Attribute des Fehlers (z. B. eine Adresse der Vorrichtung (z. B. 840), die für den Fehler verantwortlich ist) angibt. Da ein Switch mit mehreren stromabwärtigen Vorrichtungen verbunden sein kann, kann er mehrere Leerungsantwortnachrichten empfangen. In einigen Implementierungen kann die Leerungsantwort (z. B. 925f), die von dem Switch gesendet werden, (in der einzelnen Antwortnachricht) jeden von mehreren Fehlern identifizieren, die basierend auf Antworten oder Nichtantworten identifiziert wurden, die an dem Switch als Antwort auf eine Leerungsanforderung empfangen wurden. Wenn alternativ bei dem Switch keine Fehler detektiert oder an den Switch gemeldet werden (von seinen mehreren verbundenen stromabwärtigen Vorrichtungen), kann die von dem Switch gelieferte Leerungsantwort (z. B. 925f) unter anderem den zusammengefassten Erfolg jeder aus der Sammlung von Vorrichtungen, die stromabwärts von dem Switch liegen, (z. B. dadurch, dass in der Leerungsantwortnachricht des Switches keine Fehler gemeldet werden). Wie bei GPF-Anforderungsnachrichten können GPF-Antwortnachrichten ebenfalls auf einem Basis-E/A-Nachrichtenformat basieren und Felder enthalten, um anzugeben, dass die Nachricht eine Antwort auf eine Cache-Leerungsanforderung ist.
  • Um mit dem Beispiel von 11 fortzufahren, kann die CPU 505 nach dem Initiieren der Cache-Leerungsphase 1150 für jedes der (direkt) über eine entsprechende CXL-Verbindung mit der CPU 505 verbundenen Vorrichtungen (z. B. 815, 855) bestimmen, dass entweder eine Cache-Leerungsantwort (z. B. 925d, 925f) empfangen wurde oder eine Zeitüberschreitung aufgetreten ist. Die CPU 505 kann basierend auf diesen Antworten (und Nichtantworten) bestimmen, ob ein Fehler während der Cache-Leerungsphase aufgetreten ist, und einen oder mehrere Datensätze erzeugen (bei 1120), die den einen oder die mehreren Fehler in einem Protokoll beschreiben (z. B. Protokollieren der Adresse der hängenden Beschleunigervorrichtung 840 und Zuordnen dieser zu einem Fehler während der Cache-Leerungsphase).
  • Die CPU 505 kann eine logische Barriere 1125 oder eine Teilung zwischen der Cache-Leerungsphase 1150 und der nachfolgenden Speicher- oder Pufferleerungsphase 1160 erzwingen, indem sie sicherstellt, dass Antworten oder Zeitüberschreitungen für alle mit der CPU 505 verbundenen Vorrichtungen berücksichtigt wurden. Sobald die Antworten/Nichtantworten berücksichtigt wurden, kann die CPU 505 die Pufferleerungsphase 1160 initiieren, indem sie Pufferleerungs-Anforderungsnachrichten (z. B. 930a, 930c) direkt an jede der direkt mit der CPU 505 verbundenen Vorrichtungen (z. B. 815, 855) sendet. Bei Empfang der Pufferleerungsanforderungsnachrichten (z. B. 930a, 930c) kann die empfangende Vorrichtung (z. B. 815, 855) Instanzen (z. B. 930c) der Pufferleerungsanforderung an andere stromabwärtige Vorrichtungen (z. B. 840) weiterleiten und/oder als Antwort auf die Anforderung eine Pufferleerung (falls zutreffend) durchführen. Beispielsweise können für dauerhafte Speichervorrichtungen (z. B. 815), die einen Puffer aufweisen, die Speicherpuffer der dauerhaften Speichervorrichtung (bei 1130) in den dauerhaften Speicher geleert und eine entsprechende Pufferleerungsantwort (z. B. 94d) erzeugt werden, um den Status der Pufferleerung (z. B. Erfolg oder Fehler) anzugeben. Für andere Vorrichtungen (z. B. ohne dauerhaften Speicher oder Puffer) kann die Vorrichtung eine Pufferleerungsantwort erzeugen, ohne zusätzliche Maßnahmen zu ergreifen. Ferner kann wie bei der Cache-Leerungsphase ein Switch, der mehrere Pufferleerungsantworten empfängt, unter anderen Beispielen Informationen aus diesen mehreren Antworten zusammenfassen und eine einzelne Pufferleerungsantwort (z. B. 940f) für den Switch (z. B. 855) basierend auf den zusammengefassten Informationen erzeugen.
  • In dem speziellen Beispiel von 11 kann die CPU basierend darauf, dass in der Cache-Leerungsphase 1150 ein oder mehrere Fehler detektiert und an die CPU 505 gemeldet werden, veranlassen, dass Pufferleerungsanforderungsnachrichten (z. B. in einem oder mehreren bestimmten Feldern der Pufferleerungsanforderungen) angeben, dass die Cache-Leerungsphase einen Fehler enthielt. Dementsprechend kann eine empfangende Vorrichtung (z. B. 815) zusätzlich zum Durchführen einer Pufferleerung als Antwort auf den Empfang einer Pufferleerungsanforderungsnachricht (z. B. 930a, 930c, 930e usw.) unter anderen beispielhaften Aktionen auch ein unreines Herunterfahrereignis (z. B. bei 1130) protokollieren, um die Möglichkeit anzugeben, dass unreine Daten aus dem Cache-Leerungs-Fehler resultieren. Fehler können auch in Verbindung mit der Pufferleerungsphase 1160 gemeldet werden, um Fehler anzugeben, die während Pufferleerungen innerhalb dieser Phase auftreten. Solche Fehler können auch protokolliert werden (z. B. von der CPU) und die entsprechenden Protokollinformationen können bewertet werden, um verwandte Probleme, die die Fehler verursachen, zu korrigieren oder zu beheben. Wenn Antworten (z. B. 940d, 940f) oder alternativ Zeitüberschreitungen für jede der mit der CPU 505 verbundenen Vorrichtungen (z. B. 815, 855) identifiziert wurden, kann die CPU 505 den GPF-Fluss beenden 1135 und ermöglichen, dass weitere Systemaktionen in Verbindung mit dem Ereignis (z. B. Herunterfahren), das der Initiierung des GPF-Flusses entspricht, vorgenommen werden.
  • 12A-12B zeigen Beispielformate für Nachrichten, die in GPF-Flüssen verwendet werden, darunter GPF-Cache-Leerungsanforderungen und -antworten und GPF-Pufferleerungsanforderungen und -antworten. 12A zeigt ein beispielhaftes Paketformat (z. B. ein CXL.io-Paketformat), das zur Verwendung in GPF-Anforderungen und -antworten genutzt werden kann. In einem Beispiel kann das Paketformat einem CXL-Leistungsverwaltungsnachrichtenformat entsprechen oder darauf basieren. Beispielsweise können die CXL-Leistungsverwaltungsnachrichten als anbieterdefinierte PCIe-TypO-Nachrichten mit 4 Doppelwörtern (DW) Nutzdaten gesendet werden. Solche Nachrichten können Format- und Typfelder verwenden, deren Werte eingestellt sind, um Nachrichten mit Daten und Routen von „Lokaler Beendigung am Empfänger“ anzugeben. Der Nachrichtencode kann auf anbieterdefinierter Typ 0 gesetzt werden und Byte 15 des Nachrichtenkopfs kann einen VDM-Code enthalten und auf einen Wert gesetzt sein, um anzugeben, dass es sich bei der Nachricht um eine CXL Leistungsverwaltungsnachricht (PM-Nachricht) handelt (z. B. „68h“). Ferner können die 4DW Nutzdaten der Nachricht den logischen CXL-PM-Opcode und jegliche anderen Informationen, die sich auf die CXL-PM-Nachricht beziehen, enthalten.
  • Wie es in 12A gezeigt ist, ist ein beispielhaftes CXL-Leistungsverwaltungsnachrichtenpaket 1200 dargestellt. Das Paket kann einen Kopfabschnitt 1205 (z. B. 4 DW) und einen Nutzdatenabschnitt 1210 umfassen. Nachrichtencodes (z. B. 1215, 1220) in dem Kopf 1205 können verwendet werden, um anzugeben, dass das Paket ein CXL-Leistungsverwaltungspaket ist. Zusätzliche Codes können bereitgestellt werden (z. B. in einem OpCode-Feld 1215 und/oder Parameterfeldern 1225, 1230), um anzugeben, ob das Paket ein GPF-Anforderungspaket oder GPF-Antwortpaket innerhalb der Cache-Leerungs- oder Pufferleerungsphase des GPF-Flusses ist. Unter Bezugnahme auf 12B ist eine Darstellung des Nutzdatenabschnitts 1210 des Pakets gezeigt, die unter anderen Informationen Felddefinitionen zum Angeben, dass das Paket ein GPF-Anforderungspaket oder GPF-Antwortpaket ist, umfasst. Beispielsweise kann der OpCode 1215 bereitgestellt sein, um zu identifizieren, dass das Paket einen GPF-Fluss betrifft. Ein Agentenidentifikationsfeld (Agenten-ID-Feld 1220) kann die Quelle des Pakets (z. B. ob Anforderung oder Antwort) beispielsweise durch Identifizieren einer entsprechenden Agentenkennung angeben. Der Parameter 1225 kann mit einem Wert (z. B. einem oder mehreren Bits) codiert werden, um anzugeben, ob das Paket eine Anforderung (z. B. von einem Hostprozessor in einem CXL-Baum stammend) oder eine Antwort (wobei z. B. Bit 0 - 1 ist eine Leerungsanforderung angibt und Bit 0 = 0 eine Flussantwort angibt).
  • Die Länge des Nutzdatenpakets kann darauf basieren, ob das Paket ein Anforderungs- oder Antwortpaket in der Cache-Leerungs- oder Pufferleerungs-GPF-Phase ist. Zum Beispiel können in dem Beispiel von 12B Felder innerhalb des ersten Doppelworts (DW) 1230 von Nutzdaten bereitgestellt sein, um anzugeben, ob zusätzliche erweiterte Nutzdatenfelder (z. B. 1235, 1240, 1245, 1250) verwendet werden, um Fehlerinformationen in einer entsprechenden bestimmten Leerungsantwort zu identifizieren. In einigen Implementierungen werden solche erweiterten Nutzdatenfelder möglicherweise nicht in Leerungsanforderungen verwendet. Zusätzliche Felder (z. B. in Nutzdaten-Bits [17:16]) können identifizieren, ob sich die Anforderung oder Antwort innerhalb der Cache-Leerungs- oder der Speicherpuffer-Leerungsphase befindet. Bei Pufferleerungsanforderungen kann das Paket Daten enthalten, die angeben, ob während der vorhergehenden Cache-Leerungsphase Fehler an den Host gemeldet wurden. Beispielsweise kann das Nutzdaten-Bit [9] in Pufferleerungsanforderungen verwendet werden, um (auf binäre Weise) anzugeben, ob in der Cache-Leerungsphase Fehler identifiziert wurden oder nicht.
  • In Leerungsantworten können Fehler unter Verwendung eines oder mehrerer Felder des Nachrichtenpakets identifiziert werden. Beispielsweise können Nutzdaten-Bits [27:24] (in dem ersten Nutzdaten-DW 1230) verwendet werden, um anzugeben, welche erweiterten Nutzdatenfelder (z. B. 1235, 1240, 1245, 1250), falls vorhanden, Fehlerinformationen enthalten. Beispielsweise kann jedes erweiterte Nutzdatenfeld einem der Bits in den Nutzdaten-Bits [27:24] zugeordnet sein und unter anderen Informationen die Fehlerquelle identifizieren (z. B. die Adresse der verantwortlichen Komponente benennen). Auf diese Weise können bis zu vier verschiedene Fehler in einer einzelnen Leerungsantwortnachricht beschrieben werden. Beispielsweise kann ein Switch zwei Fehler identifizieren, an denen zwei andere Vorrichtungen beteiligt sind, und die Nutzdaten-Bits [27:24] = „0011b“ codieren, um das erweiterte Nutzdatenfeld 1235 (das dem ersten Fehler entspricht) und das erweiterte Nutzdatenfeld 1240 (das dem zweiter Fehler entspricht) werden mit Fehlerinformationen codiert. Wenn keines der erweiterten Nutzdatenfelder verwendet wird, weil keine Fehler gemeldet werden (wie z. B. angegeben wird, wenn Nutzdaten-Bits [27:24] = „0h“), kann die Leerungsantwortnachricht (von dem empfangenden Element) unter anderen beispielhaften Implementierungen, Feldern und Codierungen so interpretiert werden, dass sie eine erfolgreiche Durchführung jeweiliger Leerungsaktivitäten und eine Meldung von keinen Fehlern angibt.
  • Es versteht sich, dass die hier aufgeführten beispielhaften Ausführungsformen und Darstellungen beispielsweise zur Erleichterung der Veranschaulichung allgemeinerer Prinzipien bereitgestellt sind, die gleichermaßen auf verschiedene Systemarchitekturen und Topologien und verschiedene Zwischenverbindungstechnologien und -protokolle angewendet werden können. Beispielsweise können verschiedene Nachrichtenformate und -felder verwendet werden, um Nachrichten innerhalb eines GPF-Flusses zu realisieren. In ähnlicher Weise können andere Protokolle und Technologien als CXL auch GPF verwenden, um unter anderen Beispielen das Leeren von Daten im flüchtigen Speicher (einschließlich Daten außerhalb des Hosts) auf dauerhaften Speicher (z. B. einschließlich dauerhafter Speicherblöcke, die in diskreten Speichererweiterungsvorrichtungen gehostet werden) auszudehnen.
  • 13A-13B sind Ablaufdiagramme 1300a-b, die beispielhafte Techniken zum Durchführen einer dauerhaften Speicherleerung in einem Rechensystem darstellen. Zum Beispiel kann in dem Beispiel von 13A ein Hostprozessor, der mit einem Satz von Vorrichtungen (z. B. Switch-Vorrichtungen oder anderen Vorrichtungen, die selbst mit weiteren Vorrichtungen stromabwärts von dem Hostprozessor verbunden sein können) verbunden ist, ein Leerungsauslöserereignis (z. B. ein anormales Herunterfahren, einen Stromausfall, einen schwerwiegenden Systemfehler usw.) detektieren 1302 und als Antwort einen Fluss zur dauerhaften Speicherleerung initiieren, um vor dem Verlust von Daten, die zum Zeitpunkt des Ereignisses noch nicht in den dauerhaften Speicher des Systems übernommen wurden, zu schützen. Vorrichtungen stromabwärts von dem Hostprozessor können Speichervorrichtungen umfassen, die dauerhaften Speicher innerhalb des Systems (z. B. für Beschleuniger oder andere Vorrichtungen) bereitstellen. Um den Fluss zur dauerhaften Speicherleerung zu initiieren, kann der Hostprozessor Cache-Leerungsanforderungen an den Satz von Vorrichtungen senden (z. B. indem er Leerungsanforderungen an die Vorrichtungen, die unmittelbar Punkt-zu-Punkt mit dem Hostprozessor über eine Verbindung verbunden sind, sendet und diese Vorrichtungen die Anforderungen an andere Vorrichtungen, die weiter stromabwärts von dem Hostprozessor liegen und nicht über eine Punkt-zu-Punkt-Verbindung direkt mit dem Hostprozessor verbunden sind, weiterleiten). Der Hostprozessor kann dann innerhalb einer ersten Phase des Flusses zur dauerhaften Speicherleerung Antworten auf die Cache-Leerungsanforderungen empfangen. Wenn beim Versuch der Vorrichtungen, ihren Cache in einen dauerhaften Speicher zu leeren, oder aufgrund des Versäumnisses einer Vorrichtung, eine Antwort auf die Cache-Flussanforderung zu senden, Fehler aufgetreten sind, können diese in den Cache-Leerungsantworten gemeldet werden. Wenn Fehler gemeldet wurden (bei 1308), können diese 1310 an dem Hostprozessor protokolliert werden. Ferner kann der Hostprozessor (bei 1312) für jede der Vorrichtungen in dem Satz von Vorrichtungen bewerten, ob Antworten (oder Zeitüberschreitungsereignisse) identifiziert wurden. Wenn alle Antworten oder Nichtantworten berücksichtigt wurden, kann der Hostprozessor die erste Phase des Flusses zur dauerhaften Speicherleerung (z. B. CXL-GPF-Flusses) abschließen und eine zweite Phase des Flusses zur dauerhaften Speicherleerung initiieren, um Speicherpuffer von Vorrichtungen, die dauerhaften Speicher hosten, zu leeren.
  • Um das Beispiel von 13A fortzusetzen, kann die zweite Phase damit beginnen, dass der Hostprozessor Pufferleerungsanforderungen an den Satz von Vorrichtungen sendet, um Puffer von dauerhaften Speichervorrichtungen aufzufordern, ihre Puffer in dauerhaften Speicher zu leeren. Antworten auf die Pufferleerungsanforderungen können aus dem Satz von Vorrichtungen empfangen werden 1318 und der Hostprozessor kann erneut bewerten (bei 1320), ob Fehler in den Pufferleerungsantworten gemeldet werden (z. B. basierend auf Fehlern, die während der Pufferleerungen oder der zweiten Phase allgemein auftreten), und solche Fehler protokollieren 1322. Der Hostprozessor kann unter anderen beispielhaften Implementierungen auch bestimmen 1324, ob Antworten (oder Zeitüberschreitungen) auf die Pufferleerungsanforderungen für jede aus dem Satz von Vorrichtungen geliefert/bestimmt wurden und den Fluss zur dauerhaften Speicherleerung abschließen, wenn alle Vorrichtungen berücksichtigt wurden.
  • Unter Bezugnahme auf 13B kann in einem Beispiel eine bestimmte Vorrichtung über eine Hierarchie oder einen Baum von Vorrichtungen kommunikationstechnisch mit einer Hostprozessorvorrichtung verbunden sein. Beispielsweise kann der Hostprozessor einen Fluss zur dauerhaften Speicherleerung initiieren und das Senden von Cache-Leerungsanforderungen initiieren, wie im Beispiel von 13A. Die fragliche Vorrichtung (z. B. eine Speichervorrichtung, ein Beschleuniger, ein Switch usw.) kann in einer ersten Phase des Flusses zur dauerhaften Speicherleerung eine Cache-Leerungsanforderung empfangen 1330 (entweder direkt von dem Hostprozessor oder von einer anderen Vorrichtung (z. B. einem Switch), die zwischen der jeweiligen Vorrichtung und dem Hostprozessor liegt, weitergeleitet). Die fragliche Vorrichtung kann eine Cache-Leerungsaktion bestimmen 1332, die in der ersten Phase ausgeführt werden soll. In Fällen, in denen die fragliche Vorrichtung keinen Cache-Speicher zum Leeren oder keine Daten in ihrem Cache zum Leeren hat, kann die fragliche Vorrichtung bestimmen 1332, dass keine Aktion erforderlich ist. In anderen Fällen kann die fragliche Vorrichtung unter anderen Beispielen bestimmen, dass eine Cache-Leerung von der fraglichen Vorrichtung durchgeführt werden soll. Die fragliche Vorrichtung kann unter anderen Beispielen zusätzlich bestimmen 1334, ob ein Fehler im Zusammenhang mit der Cache-Leerung aufgetreten ist (z. B. entweder durch die fragliche Vorrichtung selbst oder durch eine andere Vorrichtung (z. B. die dauerhafte Speichervorrichtung)). Die fragliche Vorrichtung sendet 1336 eine Antwort auf die Cache-Leerungsanforderung, die an die Hostprozessorvorrichtung zurückgeleitet werden soll, wobei die Antwort angibt, ob ein Fehler im Zusammenhang mit Cache-Leerungsaktionen oder Antworten in der ersten Phase des Flusses zur dauerhaften Speicherleerung detektiert wurde.
  • Der Hostprozessor kann eine zweite Phase des Flusses zur dauerhaften Speicherleerung initiieren, indem er Pufferleerungsanforderungen an die Vorrichtungen sendet, wobei eine Instanz der Pufferleerungsanforderung auch an die fragliche Vorrichtung gerichtet und von 1338 dieser empfangen wird. Wie bei der Verarbeitung der Cache-Leerungsanforderung kann die fragliche Vorrichtung basierend auf der Pufferleerungsanforderung bestimmen 1340, ob und welche Pufferleerungsaktionen in der zweiten Phase ausgeführt werden sollen. In Fällen, in denen die fragliche Vorrichtung einen dauerhaften Speicher hostet und über einen Speicherpuffer verfügt, versucht die fragliche Vorrichtung beispielsweise, den Speicherpuffer basierend auf dem Empfang der Pufferleerungsanforderung in den dauerhaften Speicher zu leeren. In anderen Fällen verfügt die fragliche Vorrichtung möglicherweise weder über einen dauerhaften Speicher noch über einen Puffer zum Leeren und ergreift möglicherweise keine Aktion als Antwort auf die Pufferleerungsanforderung außer der Pufferleerungsantwort (bei 1346). Die fragliche Vorrichtung kann zusätzlich bestimmen 1342, ob während der zweiten Phase Fehler aufgetreten sind, und eine Antwort auf die Pufferleerungsanforderung erzeugen, die gesendet 1346 und an den Hostprozessor zurückgeleitet werden soll. Die Antwort auf die Pufferleerungsanforderung kann zusätzlich jegliche in der zweiten Phase identifizierten Fehler identifizieren. In einigen Implementierungen kann eine Pufferleerungsanforderung mit Informationen codiert werden, um für die Vorrichtungen zu identifizieren, ob im Zusammenhang mit der ersten Cache-Leerungsphase Fehler gemeldet wurden. Dementsprechend kann die fragliche Vorrichtung 1344 unter anderen beispielhaften Funktionen und Implementierungen basierend auf der Pufferleerungsanforderung bestimmen, ob ein Fehler in der ersten Phase gemeldet wurde, und kann optional den Fehler protokollieren 1345, um beispielsweise die Möglichkeit schmutziger Daten basierend auf dem gemeldeten Cache-Leerungsfehler zu identifizieren.
  • Es ist zu beachten, dass die oben beschriebenen Einrichtungen, Verfahren und Systeme in einer beliebigen elektronischen Vorrichtung oder einem beliebigen System wie oben erwähnt implementiert werden können. Als spezifische Darstellungen liefern die folgenden Figuren beispielhafte Systeme zur Nutzung der hier beschriebenen Erfindung. Da die nachstehenden Systeme genauer beschrieben werden, werden eine Anzahl verschiedener Zwischenverbindungen offenbart, beschrieben und aus der obigen Diskussion erneut betrachtet. Und wie leicht ersichtlich ist, können die oben beschriebenen Fortschritte auf jegliche dieser Zwischenverbindungen, Fabrics oder Architekturen angewendet werden.
  • Unter Bezugnahme auf 14 ist eine Ausführungsform eines Blockdiagramms für ein Rechensystem mit einem Mehrkernprozessor dargestellt. Der Prozessor 1400 umfasst einen beliebigen Prozessor oder eine beliebige Verarbeitungsvorrichtung wie beispielsweise einen Mikroprozessor, einen eingebetteten Prozessor, einen Digitalsignalprozessor (DSP), einen Netzprozessor, einen Handprozessor, einen Anwendungsprozessor, einen Koprozessor, ein Ein-Chip-System (SOC) oder eine andere Vorrichtung zum Ausführen von Code. Der Prozessor 1400 enthält in einer Ausführungsform mindestens zwei Kerne - Kern 1401 und 1402, die asymmetrische Kerne oder symmetrische Kerne (in der dargestellten Ausführungsform) umfassen können. Der Prozessor 1400 kann jedoch eine beliebige Anzahl von Verarbeitungselementen enthalten, die symmetrisch oder asymmetrisch sein können.
  • In einer Ausführungsform bezieht sich ein Verarbeitungselement auf Hardware oder Logik zum Unterstützen eines Softwarestrangs. Beispiele für Hardware-Verarbeitungselemente umfassen: eine Strangeinheit, einen Strangschlitz, einen Strang, eine Prozesseinheit, einen Kontext, eine Kontexteinheit, einen logischen Prozessor, einen Hardwarestrang, einen Kern und/oder ein beliebiges anderes Element, das dazu in der Lage ist, einen Zustand für einen Prozessor, wie beispielsweise einen Ausführungszustand oder einen Architekturzustand, zu halten. Mit anderen Worten bezieht sich ein Verarbeitungselement in einer Ausführungsform auf beliebige Hardware, die unabhängig Code zugeordnet werden kann, wie z. B. einen Softwarestrang, ein Betriebssystem, eine Anwendung oder anderen Code. Ein physischer Prozessor (oder Prozessorsockel) bezieht sich typischerweise auf eine integrierte Schaltung, die möglicherweise eine beliebige Anzahl anderer Verarbeitungselemente wie Kerne oder Hardwarestränge enthält.
  • Ein Kern bezieht sich häufig auf eine Logik, die auf einer integrierten Schaltung angeordnet ist, die einen unabhängigen Architekturzustand aufrechterhalten kann, wobei jeder unabhängig aufrechterhaltene Architekturzustand mindestens einigen dedizierten Ausführungsbetriebsmitteln zugeordnet ist. Im Gegensatz zu Kernen bezieht sich ein Hardwarestrang typischerweise auf eine beliebige Logik, die sich auf einer integrierten Schaltung befindet, die einen unabhängigen Architekturzustand aufrechterhalten kann, wobei sich die unabhängig aufrechterhaltenen Architekturzustände den Zugriff auf Ausführungsbetriebsmittel teilen. Wie ersichtlich ist, überlappen sich die Grenzen zwischen der Nomenklatur eines Hardwarestrangs und des Kerns, wenn bestimmte Betriebsmittel gemeinsam genutzt werden und andere einem Architekturzustand zugeordnet sind. Ein Kern und ein Hardwarestrang werden jedoch häufig von einem Betriebssystem als einzelne logische Prozessoren betrachtet, wobei das Betriebssystem Operationen auf jedem logischen Prozessor einzeln planen kann.
  • Der physische Prozessor 1400, wie er in 14 dargestellt ist, umfasst zwei Kerne - Kern 1401 und 1402. Die Kerne 1401 und 1402 werden als symmetrische Kerne aufgefasst, d. h. als Kerne mit der/n gleichen Konfigurationen, Funktionseinheiten und/oder Logik. In einer weiteren Ausführungsform umfasst der Kern 1401 einen nicht reihenfolgetreuen Prozessorkern, während der Kern 1402 einen reihenfolgetreuen Prozessorkern umfasst. Die Kerne 1401 und 1402 können jedoch individuell aus beliebigen Typen von Kernen ausgewählt werden wie beispielsweise einem nativen Kern, einem durch Software verwalteten Kern, einem Kern, der zum Ausführen einer nativen Befehlssatzarchitektur (ISA) ausgelegt ist, einem Kern, der zum Ausführen einer übersetzten Befehlssatzarchitektur (ISA) ausgelegt ist, einem Co-Design-Kern oder einem anderen bekannten Kern. In einer heterogenen Kernumgebung (d. h. asymmetrische Kerne) kann irgendeine Form der Übersetzung wie etwa eine binäre Übersetzung verwendet werden, um Code auf einem oder beiden Kernen zu planen oder auszuführen. Zur weiteren Erörterung werden die in dem Kern 1401 dargestellten Funktionseinheiten nachstehend ausführlicher beschrieben, da die Einheiten in dem Kern 1402 in der dargestellten Ausführungsform auf ähnliche Weise arbeiten.
  • Wie dargestellt umfasst der Kern 1401 zwei Hardwarestränge 1401a und 1401b, die auch als Hardwarestrangschlitze 1401a und 1401b bezeichnet werden können. Daher betrachten Softwareentitäten wie beispielsweise ein Betriebssystem in einer Ausführungsform den Prozessor 1400 möglicherweise als vier separate Prozessoren, d. h. vier logische Prozessoren oder Verarbeitungselemente, die in der Lage sind, vier Softwarestränge gleichzeitig auszuführen. Wie oben angedeutet ist ein erster Strang den Architekturzustandsregistern 1401a zugeordnet, ein zweiter Strang den Architekturzustandsregistern 1401b zugeordnet, ein dritter Strang den Architekturzustandsregistern 1402a zugeordnet und ein vierter Strang den Architekturzustandsregistern 1402b zugeordnet. Hier können die Architekturzustandsregister (1401a, 1401b, 1402a und 1402b) jeweils als Verarbeitungselemente, Strangschlitze oder Strangeinheiten bezeichnet werden, wie sie oben beschrieben sind. Wie dargestellt werden Architekturzustandsregister 1401a in Architekturzustandsregistern 1401b repliziert, so dass einzelne Architekturzustände/-kontexte für den logischen Prozessor 1401a und den logischen Prozessor 1401b gespeichert werden können. In dem Kern 1401 können auch andere kleinere Betriebsmittel wie beispielsweise Befehlszeiger und Umbenennungslogik in dem Zuweisungs- und-Umbenennungsblock 1430 für die Stränge 1401a und 1401b repliziert werden. Einige Betriebsmittel wie z. B. Puffer in einer Umordnungs-/Stilllegungseinheit 1435, einem ILTB 1420, einem Lade-/Speicherpuffer und Warteschlangen können durch Partitionierung gemeinsam genutzt werden. Andere Betriebsmittel wie etwa interne Allzweckregister, Seitentabellen-Basisregister, Daten-Cache und Daten-TLB 1415 niedriger Ebene, Ausführungseinheit(en) 1440 und Teile der nicht reihenfolgetreuen Einheit 1435 werden möglicherweise vollständig gemeinsam genutzt.
  • Der Prozessor 1400 umfasst häufig andere Betriebsmittel, die vollständig gemeinsam genutzt werden können, durch Partitionierung gemeinsam genutzt werden können oder von/für Verarbeitungselemente(n) reserviert sind. In 14 ist eine Ausführungsform eines rein beispielhaften Prozessors mit beispielhaften logischen Einheiten/Betriebsmitteln eines Prozessors dargestellt. Es ist zu beachten, dass ein Prozessor jede dieser Funktionseinheiten enthalten oder weglassen kann, sowie beliebige andere bekannte Funktionseinheiten, Logik oder Firmware enthalten kann, die nicht dargestellt sind. Wie dargestellt umfasst der Kern 1401 einen vereinfachten, repräsentativen, nicht reihenfolgetreuen Prozessorkern (OOO-Prozessorkern). In verschiedenen Ausführungsformen kann jedoch ein reihenfolgetreuer Prozessor verwendet werden. Der OOO-Kern umfasst einen Verzweigungszielpuffer 1420 zum Vorhersagen von auszuführenden bzw. zu nehmenden Verzweigungen und einen Befehlsübersetzungspuffer (I-TLB) 1420 zum Speichern von Adressübersetzungseinträgen für Befehle.
  • Der Kern 1401 umfasst ferner ein Decodiermodul 1425, das mit der Abrufeinheit 1420 gekoppelt ist, um abgerufene Elemente zu decodieren. In einer Ausführungsform umfasst die Abruflogik einzelne Sequenzer, die den Strangschlitzen 1401a bzw. 1401b zugeordnet sind. Üblicherweise ist der Kern 1401 einer ersten ISA zugeordnet, die auf dem Prozessor 1400 ausführbare Befehle definiert/spezifiziert. Häufig enthalten Maschinencodebefehle, die Teil der ersten ISA sind, einen Befehlsabschnitt (als Opcode bezeichnet), der einen auszuführenden Befehl oder eine auszuführende Operation referenziert oder festlegt. Die Decodierlogik 1425 weist eine Schaltung auf, die diese Befehle anhand ihrer Opcodes erkennt und die decodierten Befehle in der Pipeline zum Verarbeiten weiterleitet, wie es von der ersten ISA definiert wird. Wie später näher erörtert wird, haben bei einer Ausführungsform die Decodierer 1425 beispielsweise eine Logik, die so ausgelegt oder eingerichtet ist, dass sie spezielle Befehle erkennt, wie etwa einen transaktionalen Befehl. Als Ergebnis der Erkennung durch die Decodierer 1425 trifft die Architektur oder der Kern 1401 spezielle festgelegte Maßnahmen, um Aufgaben auszuführen, die dem entsprechenden Befehl zugeordnet sind. Es ist wichtig zu beachten, dass alle hier beschriebenen Aufgaben, Blöcke, Operationen und Verfahren als Antwort auf einen oder mehrere Befehle ausgeführt werden können, wobei einige davon neue oder alte Befehle sein können. Es ist zu beachten, dass die Decodierer 1426 in einer Ausführungsform die gleiche ISA (oder eine Teilmenge davon) erkennen. Alternativ erkennen die Decodierer 1426 in einer heterogenen Kernumgebung eine zweite ISA (entweder eine Teilmenge der ersten ISA oder eine andere ISA) .
  • In einem Beispiel enthält der Zuweisungs-und-Umbenennungsblock 1430 einen Zuweiser zum Reservieren von Betriebsmitteln wie z. B. Registersätzen zum Speichern von Befehlsverarbeitungsergebnissen. Die Stränge 1401a und 1401b können jedoch möglicherweise nicht nicht reihenfolgetreu ausgeführt werden, wobei der Zuweisungs- und-Umbenennungsblock 1430 zudem andere Betriebsmittel reserviert wie beispielsweise Umordnungspuffer zum Verfolgen von Befehlsergebnissen. Die Einheit 1430 kann zudem einen Registerumbenenner enthalten, um Programm-/Befehlsreferenzregister in andere Register innerhalb des Prozessors 1400 umzubenennen. Die Umordnungs-/Stilllegungseinheit 1435 enthält Komponenten wie die oben erwähnten Umordnungspuffer, Ladepuffer und Speicherpuffer, um die nicht reihenfolgetreue Ausführung und spätere reihenfolgetreue Stilllegung von nicht reihenfolgetreu ausgeführten Befehlen zu unterstützen.
  • Der Scheduler-und-Ausführungseinheit-Block 1440 enthält in einer Ausführungsform eine Scheduler-Einheit zum Planen von Befehlen/Operationen an Ausführungseinheiten. Beispielsweise wird ein Gleitkommabefehl an einem Port einer Ausführungseinheit geplant, die eine verfügbare Gleitkommaausführungseinheit hat. Registersätze, die den Ausführungseinheiten zugeordnet sind, sind ebenfalls enthalten, um Informationen zu Befehlsverarbeitungsergebnissen zu speichern. Beispielhafte Ausführungseinheiten umfassen eine Gleitkommaausführungseinheit, eine Ganzzahlausführungseinheit, eine Sprungausführungseinheit, eine Ladeausführungseinheit, eine Speicherausführungseinheit und andere bekannte Ausführungseinheiten.
  • Der Datencache niedrigerer Ebene und der Datenübersetzungspuffer (D-TLB) 1450 sind mit der Ausführungseinheit (den Ausführungseinheiten) 1440 gekoppelt. Der Datencache dient zum Speichern kürzlich verwendeter/bearbeiteter Elemente wie beispielsweise Datenoperanden, die möglicherweise in Speicherkohärenzzuständen gehalten werden. Der D-TLB dient zum Speichern aktueller virtuell/linear-zuphysisch-Adressübersetzungen. Als ein spezielles Beispiel kann ein Prozessor eine Seitentabellenstruktur enthalten, um den physischen Speicher in mehrere virtuelle Seiten aufzuteilen.
  • Hier teilen sich die Kerne 1401 und 1402 den Zugriff auf einen Cache höherer oder entfernterer Ebene wie beispielsweise einen Cache zweiter Ebene, der einer chipinternen Schnittstelle 1410 zugeordnet ist. Es ist zu beachten, dass höhere oder entferntere Ebene sich drauf bezieht, dass Cache-Ebenen zunehmen oder sich von der/den Ausführungseinheit(en) entfernen. In einer Ausführungsform ist der Cache höherer Ebene ein Datencache letzter Ebene - ein letzter Cache in der Speicherhierarchie auf dem Prozessor 1400 - wie etwa ein Datencache zweiter oder dritter Ebene. Der Cache höherer Ebene ist jedoch nicht darauf beschränkt, da er einem Befehls-Cache zugeordnet sein kann oder diesen enthalten kann. Ein Verfolgungs-Cache - eine Art Befehls-Cache - kann stattdessen nach dem Decodierer 1425 eingekoppelt sein, um kürzlich decodierte Verfolgungen zu speichern. Hier bezieht sich ein Befehl möglicherweise auf einen Makrobefehl (d. h. einen von den Decodierern erkannten allgemeinen Befehl), der in eine Anzahl von Mikrobefehlen (Mikrooperationen) decodiert werden kann.
  • In der dargestellten Konfiguration umfasst der Prozessor 1400 auch ein chipinternes Schnittstellenmodul 1410. In der Vergangenheit war ein Speicher-Controller, der nachstehend ausführlicher beschrieben ist, in einem Rechensystem außerhalb des Prozessors 1400 enthalten. In diesem Szenario dient die chipinterne Schnittstelle 1410 zur Kommunikation mit Vorrichtungen außerhalb des Prozessors 1400 wie beispielsweise dem Systemspeicher 1475, einem Chipsatz (der häufig einen Speicher-Controller-Hub zur Verbindung mit dem Speicher 1475 und einen E/A-Controller-Hub zur Verbindung mit Peripherievorrichtungen enthält), einem Speicher-Controller-Hub, einer Northbridge oder einer anderen integrierten Schaltung. In diesem Szenario kann der Bus 1405 zudem eine beliebige bekannte Zwischenverbindung wie beispielsweise einen Mehrpunktbus, eine Punkt-zu-Punkt-Zwischenverbindung, eine serielle Zwischenverbindung, einen parallelen Bus, einen kohärenten (z. B. einen cachekohärenten) Bus, eine geschichtete Protokollarchitektur, einen differentiellen Bus und einen GTL-Bus umfassen.
  • Der Speicher 1475 kann dem Prozessor 1400 zugewiesen sein oder mit anderen Vorrichtungen in einem System gemeinsam genutzt werden. Übliche Beispiele für Speichertypen 1475 umfassen DRAM, SRAM, nichtflüchtigen Speicher (NV-Speicher) und andere bekannte Speichervorrichtungen. Es ist zu beachten, dass die Vorrichtung 1480 einen Grafikbeschleuniger, einen Prozessor oder eine Karte, der/die mit einem Speicher-Controller-Hub gekoppelt ist, einen Datenspeicher, der mit einem E/A-Controller-Hub gekoppelt ist, einen drahtlosen Sendeempfänger, eine Flash-Vorrichtung, einen Audiocontroller, einen Netzcontroller oder eine andere bekannte Vorrichtung umfassen kann.
  • In jüngerer Zeit jedoch kann, da mehr Logik und Vorrichtungen auf einem einzelnen Chip wie beispielsweise einem SOC integriert werden, jede dieser Vorrichtungen auf dem Prozessor 1400 eingebaut sein. In einer Ausführungsform befindet sich beispielsweise ein Speicher-Controller-Hub auf derselben Baugruppe und/oder demselben Chip wie der Prozessor 1400. Hier umfasst ein Teil des Kerns (ein On-Core-Abschnitt) 1410 einen oder mehrere Controller zum Verbinden mit anderen Vorrichtungen wie einem Speicher 1475 oder einer Grafikvorrichtung 1480. Die Konfiguration, die eine Zwischenverbindung und Controller zum Bilden einer Schnittstelle mit solchen Vorrichtungen aufweist, wird häufig als On-Core (oder Un-Core-Konfiguration) bezeichnet. Beispielsweise umfasst die chipinterne Schnittstelle 1410 eine Ringzwischenverbindung für die chipinterne Kommunikation und eine serielle Hochgeschwindigkeits-Punkt-zu-Punkt-Verbindung 1405 für die chipexterne Kommunikation. In der SOC-Umgebung können jedoch noch mehr Vorrichtungen wie z. B. die Netzschnittstelle, Koprozessoren, der Speicher 1475, der Grafikprozessor 1480 und andere bekannte Computervorrichtungen/Schnittstellen auf einem einzelnen Chip oder einer integrierten Schaltung integriert sein, um einen geringen Formfaktor mit hoher Funktionalität und geringem Energieverbrauch bereitzustellen.
  • In einer Ausführungsform ist der Prozessor 1400 in der Lage, einen Kompilier-, Optimierungs- und/oder Übersetzercode 1477 auszuführen, um den Anwendungscode 1476 zu kompilieren, zu übersetzen und/oder zu optimieren, um die hier beschriebenen Vorrichtungen und Verfahren zu unterstützen oder eine Schnittstelle damit zu bilden. Ein Kompilierer umfasst häufig ein Programm oder eine Reihe von Programmen, um Quelltext/-code in Zieltext/-code zu übersetzen. In der Regel erfolgt die Kompilierung von Programm-/Anwendungscode mit einem Kompilierer in mehreren Phasen und Durchläufen zum Umwandeln von Hochprogrammiersprachencode in Maschinen- oder Assemblersprachencode niederer Ebene. Kompilierer mit einmaligem Durchlauf können jedoch weiterhin für die einfache Kompilierung verwendet werden. Ein Kompilierer kann alle bekannten Kompilierungstechniken verwenden und alle bekannten Kompilieroperationen ausführen, wie z. B. lexikalische Analyse, Vorverarbeitung, Parsen, semantische Analyse, Codeerzeugung, Codetransformation und Codeoptimierung.
  • Größere Kompilierer umfassen häufig mehrere Phasen, aber am häufigsten sind diese Phasen in zwei allgemeinen Phasen enthalten: (1) einem Frontend, d. h. im Allgemeinen dort, wo syntaktische Verarbeitung, semantische Verarbeitung und einige Transformationen/Optimierungen stattfinden können, und (2) einem Backend, d. h. im Allgemeinen dort, wo Analysen, Transformationen, Optimierungen und Codeerzeugung stattfinden. Einige Kompilierer verweisen auf eine Mitte, was die Unschärfe der Abgrenzung zwischen einem Frontend und einem Backend eines Kompilierers zeigt. Infolgedessen können Verweise auf Einfügen, Verknüpfen, Erstellen oder andere Operationen eines Kompilierers in einer der oben genannten Phasen oder Durchgänge sowie in anderen bekannten Phasen oder Durchgängen eines Kompilierers erfolgen. Als anschauliches Beispiel fügt ein Kompilierer möglicherweise Operationen, Aufrufe, Funktionen usw. in einer oder mehreren Phasen der Kompilierung ein, z. B. das Einfügen von Aufrufen/Operationen in einer Frontend-Phase der Kompilierung und anschließend eine Transformation der Aufrufe/Operationen in einen Code niedrigerer Ebene während einer Transformationsphase. Es ist zu beachten, dass während der dynamischen Kompilierung Kompilierercode oder dynamischer Optimierungscode möglicherweise solche Operationen/Aufrufe einfügen kann und den Code für die Ausführung während der Laufzeit optimieren kann. Als spezielles anschauliches Beispiel kann Binärcode (bereits kompilierter Code) während der Laufzeit dynamisch optimiert werden. Hier kann der Programmcode den dynamischen Optimierungscode, den Binärcode oder eine Kombination davon umfassen.
  • Ähnlich wie ein Kompilierer übersetzt ein Übersetzer wie etwa ein Binärübersetzer den Code entweder statisch oder dynamisch, um den Code zu optimieren und/oder zu übersetzen. Daher kann sich der Verweis auf die Ausführung eines Codes, Anwendungscodes, Programmcodes oder einer Software-Umgebung auf Folgendes beziehen: (1) dynamische oder statische Ausführung eines oder mehrerer Kompilierprogramme, eines Optimierungscode-Optimierers oder -Übersetzers, um den Programmcode zu kompilieren, Software-Strukturen aufrechtzuerhalten, andere Operationen auszuführen, Code zu optimieren oder Code zu übersetzen; (2) Ausführung eines Hauptprogrammcodes mit Operationen/Aufrufen wie etwa eines Anwendungscodes, der optimiert/kompiliert worden ist; (3) Ausführung eines anderen Programmcodes wie etwa Bibliotheken, die dem Hauptprogrammcode zugeordnet sind, um Software-Strukturen aufrechtzuerhalten, andere softwarebezogene Operationen auszuführen oder den Code zu optimieren; oder (4) eine Kombination davon.
  • Unter Bezugnahme auf 15 ist ein Blockdiagramm eines zweiten Systems 1500 gemäß einer Ausführungsform der vorliegenden Offenbarung gezeigt. Wie es in 15 gezeigt ist, ist das Mehrprozessorsystem 1500 ein Punkt-zu-Punkt-Zwischenverbindungssystem und umfasst einen ersten Prozessor 1570 und einen zweiten Prozessor 1580, die über eine Punkt-zu-Punkt-Zwischenverbindung 1550 gekoppelt sind. Jeder der Prozessoren 1570 und 1580 kann irgendeine Version eines Prozessors sein. In einer Ausführungsform sind 1552 und 1554 Teil einer seriellen, kohärenten Punkt-zu-Punkt-Zwischenverbindungs-Fabric, wie beispielsweise der Intels QuickPath-Zwischenverbindungs-Architektur (QPI-Architektur). Infolgedessen kann die Offenbarung innerhalb der QPI-Architektur implementiert werden.
  • Obwohl nur zwei Prozessoren 1570, 1580 gezeigt sind, versteht es sich, dass der Umfang der vorliegenden Offenbarung nicht darauf beschränkt ist. In anderen Ausführungsformen können ein oder mehrere zusätzliche Prozessoren in einem gegebenen Prozessor vorhanden sein.
  • Die Prozessoren 1570 und 1580 sind mit integrierten Speichercontrollereinheiten 1572 bzw. 1582 gezeigt. Der Prozessor 1570 enthält als Teil seiner Buscontrollereinheiten auch Punkt-zu-Punkt-Schnittstellen (P-P-Schnittstellen) 1576 und 1578; in ähnlicher Weise enthält der zweite Prozessor 1580 P-P-Schnittstellen 1586 und 1588. Die Prozessoren 1570, 1580 können Informationen über eine Punkt-zu-Punkt-Schnittstelle (P-P-Schnittstelle) 1550 unter Verwendung von P-P-Schnittstellenschaltungen 1578, 1588 austauschen. Wie es in 15 gezeigt ist, koppeln die IMCs 1572 und 1582 die Prozessoren mit jeweiligen Speichern, nämlich einem Speicher 1532 und einem Speicher 1534, die Teile des Hauptspeichers sein können, die lokal an die jeweiligen Prozessoren angebunden sind.
  • Die Prozessoren 1570, 1580 tauschen jeweils Informationen mit einem Chipsatz 1590 über einzelne P-P-Schnittstellen 1552, 1554 unter Verwendung von Punkt-zu-Punkt-Schnittstellenschaltungen 1576, 1594, 1586, 1598 aus. Der Chipsatz 1590 tauscht auch Informationen mit einer Hochleistungs-Grafikschaltung 1538 über eine Schnittstellenschaltung 1592 entlang einer Hochleistungs-Grafikzwischenverbindung 1539 aus.
  • Ein gemeinsam genutzter Cache (nicht gezeigt) kann entweder in einem Prozessor enthalten sein oder sich außerhalb beider Prozessoren befinden, aber über eine P-P-Zwischenverbindung mit den Prozessoren verbunden sein, so dass die lokalen Cache-Informationen eines oder beider Prozessoren in dem gemeinsam genutzten Cache gespeichert werden können, wenn ein Prozessor in einen Energiesparmodus versetzt wird.
  • Der Chipsatz 1590 kann über eine Schnittstelle 1596 mit einem ersten Bus 1516 gekoppelt sein. In einer Ausführungsform kann der erste Bus 1516 ein Peripheriekomponentenzwischenverbindungs-Bus (PCI-Bus) oder ein Bus wie etwa ein PCI Express-Bus oder ein anderer E/A-Zwischenverbindungsbus der dritten Generation sein, obwohl der Umfang der vorliegenden Offenbarung nicht darauf beschränkt ist.
  • Wie es in 15 gezeigt ist, sind verschiedene E/A-Vorrichtungen 1514 mit dem ersten Bus 1516 gekoppelt, zusammen mit einer Busbrücke 1518, die den ersten Bus 1516 mit einem zweiten Bus 1520 koppelt. In einer Ausführungsform umfasst der zweite Bus 1520 einen Bus mit niedriger Stiftzahl (LPC-Bus). Verschiedene Vorrichtungen sind in einer Ausführungsform mit dem zweiten Bus 1520 verbunden, einschließlich beispielsweise einer Tastatur und/oder Maus 1522, Kommunikationsvorrichtungen 1527 und einer Speichereinheit 1528 wie beispielsweise einem Plattenlaufwerk oder einer anderen Massenspeichervorrichtung, die häufig Befehle/Code und Daten 1530 enthält. Ferner ist gezeigt, dass eine Audio-E/A 1524 mit dem zweiten Bus 1520 gekoppelt ist. Es ist zu beachten, dass andere Architekturen möglich sind, bei denen die enthaltenen Komponenten und Zwischenverbindungsarchitekturen variieren. Beispielsweise kann anstelle der Punkt-zu-Punkt-Architektur von 15 ein System einen Mehrpunktbus oder eine andere solche Architektur implementieren.
  • Rechensysteme können zahlreiche Kombinationen von Komponenten umfassen. Diese Komponenten können als ICs, Teile davon, diskrete elektronische Vorrichtungen oder andere Module, Logik, Hardware, Software, Firmware oder eine Kombination davon, die in einem Computersystem angepasst ist, oder als Komponenten, die auf andere Weise in einem Chassis des Computersystems enthalten sind, implementiert sein. Es ist zudem zu beachten, dass einige der gezeigten Komponenten weggelassen werden können, zusätzliche Komponenten vorhanden sein können und in anderen Implementierungen eine andere Anordnung der gezeigten Komponenten auftauchen kann. Infolgedessen kann die oben beschriebene Offenbarung in einem beliebigen Teil einer oder mehrerer der nachstehend dargestellten oder beschriebenen Zwischenverbindungen implementiert sein.
  • Ein Prozessor umfasst in einer Ausführungsform einen Mikroprozessor, einen Mehrkernprozessor, einen Mehrstrangprozessor, einen Prozessor mit sehr niedriger Spannung, einen eingebetteten Prozessor oder ein anderes bekanntes Verarbeitungselement. In der veranschaulichten Implementierung fungiert der Prozessor als eine Hauptverarbeitungseinheit und ein zentraler Hub für die Kommunikation mit vielen der verschiedenen Komponenten des Systems. Als ein Beispiel ist der Prozessor als ein Ein-Chip-System (SoC) implementiert. Als spezielles veranschaulichendes Beispiel umfasst der Prozessor einen Prozessor auf Basis von Intel® Architecture Core™, wie etwa i3, i5, i7 oder einen anderen derartigen Prozessor, der von der Intel Corporation, Santa Clara, CA, erhältlich ist. Es gilt jedoch zu beachten, dass andere Prozessoren mit geringer Leistungsaufnahme, wie sie beispielsweise von Advanced Micro Devices, Inc. (AMD) in Sunnyvale, CA, erhältlich sind, ein MIPS-basiertes Design von MIPS Technologies, Inc. in Sunnyvale, CA, ein ARMbasiertes Design, das von ARM Holdings, Ltd. oder einem Kunden davon lizenziert wurde, oder deren Lizenznehmer oder Anwender stattdessen in anderen Ausführungsformen vorhanden sein können, wie beispielsweise ein A5/A6-Prozessor von Apple, ein Snapdragon-Prozessor von Qualcomm, oder ein TI-OMAP-Prozessor. Es ist zu beachten, dass viele Kundenversionen solcher Prozessoren abgewandelt und variiert sind. Sie können jedoch einen bestimmten Befehlssatz unterstützen oder erkennen, der definierte Algorithmen ausführt, wie sie von dem Prozessorlizenzgeber dargelegt werden. Hierbei kann die mikroarchitektonische Implementierung variieren, aber die architektonische Funktion des Prozessors ist normalerweise konsistent. Bestimmte Einzelheiten bezüglich der Architektur und des Betriebs des Prozessors in einer Implementierung sind weiter unten diskutiert, um ein veranschaulichendes Beispiel zu liefern.
  • Der Prozessor kommuniziert in einer Ausführungsform mit einem Systemspeicher. Als ein veranschaulichendes Beispiel kann dieser in einer Ausführungsform über mehrere Speichervorrichtungen implementiert sein, um eine gegebene Menge an Systemspeicher bereitzustellen. Als Beispiel kann der Speicher gemäß einem Niederleistungs-Doppeldatenraten-Design (LPDDR-Design) des Joint Electron Devices Engineering Council (JEDEC) betrieben werden, wie z. B. dem aktuellen LPDDR2-Standard nach JEDEC JESD 209-2E (veröffentlicht im April 2009) oder einem LPDDR-Standard der nächsten Generation, der als LPDDR3 oder LPDDR4 bezeichnet wird, der Erweiterungen zu LPDDR2 bieten wird, um die Bandbreite zu steigern. In verschiedenen Implementierungen können die einzelnen Speichervorrichtungen von verschiedenen Baugruppentypen wie Ein-Chip-Baugruppe (SDP), Zwei-Chip-Baugruppe (DDP) oder Vier-Chip-Baugruppe (13P) sein. Diese Vorrichtungen sind in einigen Ausführungsformen direkt auf eine Hauptplatine gelötet, um eine Lösung mit niedrigerem Profil zu bieten, während in anderen Ausführungsformen die Vorrichtungen als ein oder mehrere Speichermodule ausgebildet sind, die wiederum mit einem bestimmten Anschluss mit der Hauptplatine verbunden sind. Andere Speicherimplementierungen sind natürlich möglich, wie z. B. andere Typen von Speichermodulen, beispielsweise doppelreihige Speichermodule (DIMMs) unterschiedlicher Typen, unter anderem MicroDIMMs, MiniDIMMs. In einem besonderen Ausführungsbeispiel ist der Speicher zwischen 2 GB und 16 GB groß und kann als DDR3LM-Baugruppe oder ein LPDDR2- oder LPDDR3-Speicher, der über eine Kugelgitteranordnung (BGA) auf einer Hauptplatine verlötet ist, ausgebildet sein.
  • Um eine dauerhafte Speicherung von Informationen wie Daten, Anwendungen, einem oder mehreren Betriebssystemen usw. bereitzustellen, kann ein Massenspeicher auch mit dem Prozessor gekoppelt sein. In verschiedenen Ausführungsformen kann dieser Massenspeicher über eine SSD implementiert werden, um ein dünneres und leichteres Systemdesign zu ermöglichen und das Systemansprechverhalten zu verbessern. In anderen Ausführungsformen kann der Massenspeicher jedoch primär unter Verwendung eines Festplattenlaufwerks (HDD) mit einer geringeren Menge an SSD-Speicher als SSD-Cache implementiert sein, um eine nichtflüchtige Speicherung des Kontextzustands und anderer solcher Informationen während Ausschaltereignissen zu ermöglichen, so dass ein schnelles Hochfahren bei Wiederaufnahme von Systemaktivitäten erfolgen kann. Eine Flash-Vorrichtung kann mit dem Prozessor gekoppelt sein, beispielsweise über eine serielle periphere Schnittstelle (SPI). Diese Flash-Vorrichtung kann die nichtflüchtige Speicherung von Systemsoftware einschließlich einer Basis-Eingabe/Ausgabe-Software (BIOS) sowie anderer Firmware des Systems sicherstellen.
  • In verschiedenen Ausführungsformen wird der Massenspeicher des Systems durch eine SSD allein oder als eine Platte, ein optisches oder sonstiges Laufwerk mit SSD-Cache implementiert. In einigen Ausführungsformen wird der Massenspeicher als SSD oder als Festplatte zusammen mit einem Wiederherstellungs-Cache-Modul (RST-Cache-Modul) implementiert. In verschiedenen Implementierungen sorgt die Festplatte für die Speicherung von zwischen 320 GB und 4 Terabyte (TB) und mehr, während der RST-Cache mit einer SSD mit einer Kapazität von 24 GB bis 256 GB implementiert ist. Es ist zu beachten, dass ein solcher SSD-Cache als Einzel-Cache (SLC) oder Mehrebenen-Cache(MLC) ausgebildet werden kann, um ein angemessenes Maß an Ansprechfähigkeit zu bieten. Bei einer reinen SSD-Option kann das Modul an verschiedenen Orten, wie etwa in einem mSATA- oder NGFF-Schlitz, untergebracht sein. So hat eine SSD zum Beispiel eine Kapazität zwischen 120 GB und 1 TB.
  • Verschiedene Peripherievorrichtungen können über eine Zwischenverbindung mit geringer Stiftzahl (LPC-Zwischenverbindung) mit einem Prozessor gekoppelt sein. In der gezeigten Ausführungsform können verschiedene Komponenten über einen eingebetteten Controller gekoppelt werden. Solche Komponenten können eine Tastatur (z. B. über eine PS2-Schnittstelle angekoppelt), einen Lüfter und einen Wärmesensor umfassen. In einigen Ausführungsformen kann das Berührungsfeld auch über eine PS2-Schnittstelle mit dem EC gekoppelt sein. Zusätzlich kann ein Sicherheitsprozessor wie ein vertrauenswürdiges Plattformmodul (TPM) gemäß der Spezifikation Version 1.2 der Trusted Computing Group (TCG) vom 2. Oktober 2003 auch über diese LPC-Zwischenverbindung mit dem Prozessor 1210 gekoppelt sein. Es versteht sich jedoch, dass der Umfang der vorliegenden Offenbarung in dieser Hinsicht nicht beschränkt ist, und die sichere Verarbeitung und Speicherung sicherer Informationen an einem anderen geschützten Ort wie einem statischen Direktzugriffsspeicher (SRAM) in einem Sicherheitskoprozessor oder als verschlüsselte Datenblobs, die nur entschlüsselt werden, wenn sie durch einen Sicherheitsenklaven-Prozessormodus (SE-Prozessormodus) geschützt sind, erfolgen können.
  • In einer bestimmten Implementierung können Peripherieports umfassen: einen Verbinder für die hochauflösende Medienschnittstelle (HDMI-Verbinder, der verschiedene Formfaktoren wie volle Größe, Mini oder Mikro haben kann); ein oder mehrere USB-Anschlüsse wie externe Anschlüsse voller Größe gemäß der Spezifikation Universal Serial Bus Revision 3.0 (November 2008), wobei mindestens einer zum Aufladen von USB-Vorrichtungen (z. B. Smartphones) betrieben wird, wenn sich das System im in dem verbundenen Bereitschaftszustand befindet und an einer Netzsteckdose angeschlossen ist. Darüber hinaus können ein oder mehrere Thunderbolt™-Ports bereitgestellt sein. Andere Ports können u. a. einen extern zugänglichen Kartenleser voller Größe wie einen SD-XC-Kartenleser und/oder einen SIM-Kartenleser für WWAN (z. B. einen 8-poligen Kartenleser) umfassen. Für Audio kann eine 3,5-mm-Buchse mit Stereoton- und Mikrofon-Funktion (z. B. Kombinationsfunktionalität) mit Unterstützung für die Buchsenerkennung (z. B. reine Kopfhörer-Unterstützung mit Mikrofon in dem Deckel oder Kopfhörer mit Mikrofon im Kabel) vorhanden sein. In einigen Ausführungsformen kann diese Buchse neu zwischen Stereo-Kopfhörer und Stereo-Mikrofon-Eingang umgeschaltet werden. Auch eine Netzbuchse für die Kopplung mit einem AC-Baustein kann bereitgestellt sein.
  • Das System kann auf viele Arten und auch drahtlos mit externen Vorrichtungen kommunizieren. In einigen Beispielen sind verschiedene Drahtlosmodule vorhanden, von denen jedes einer Funkvorrichtung entsprechen kann, das für ein bestimmtes Drahtlos-Kommunikationsprotokoll ausgelegt ist. Eine Art der drahtlosen Kommunikation in einem Nahbereich wie z. B. einem Nahfeld kann über eine Nahfeldkommunikationseinheit (NFC-Einheit) erfolgen, die in einer Ausführungsform mit dem Prozessor über einen SMBus kommuniziert. Es ist zu beachten, dass über diese NFC-Einheit Vorrichtungen in Nähe miteinander kommunizieren können. So kann z. B. ein Anwender das System durch Bringen der beiden Vorrichtungen in enge Beziehung und Ermöglichen der Übertragung von Informationen wie Informationen zur Identifizierung, Zahlungsinformationen, Daten wie z. B. Bilddaten usw. zur Kommunikation mit einer anderen (z. B.) tragbaren Vorrichtung wie etwa einem Smartphone des Anwenders befähigen. Auch die drahtlose Energieübertragung kann mit einem NFC-System durchgeführt werden.
  • Unter Verwendung der hier beschriebenen NFC-Einheit können Anwender Vorrichtungen Seite an Seite zusammenstoßen lassen und Vorrichtungen Seite an Seite platzieren, um Nahfeldkopplungsfunktionen (wie Nahfeldkommunikation und drahtlose Energieübertragung (WPT)) zu erhalten, indem die Kopplung zwischen Spulen einer oder mehrerer solcher Vorrichtungen genutzt wird. Insbesondere schaffen Ausführungsformen Vorrichtungen mit strategisch geformten und platzierten Ferritmaterialien, um eine bessere Kopplung der Spulen bereitzustellen. Jeder Spule ist eine Induktivität zugeordnet, die in Verbindung mit den ohmschen, kapazitiven und anderen Merkmalen des Systems gewählt werden kann, um eine gemeinsame Resonanzfrequenz für das System zu ermöglichen.
  • Ferner können zusätzliche drahtlose Einheiten andere drahtlose Nahbereichsmaschinen beinhalten, einschließlich einer WLAN-Einheit und einer Bluetooth-Einheit. Mittels der WLAN-Einheit kann Wi-Fi™-Kommunikation gemäß einer bestimmten Norm 802.11 des Institute of Electrical und Electronics Engineers (IEEE) hergestellt werden, während über die Bluetooth-Einheit Nachbereichskommunikation mittels des Bluetooth-Protokolls erfolgen kann. Diese Einheiten können mit dem Prozessor beispielsweise über eine USB-Verbindung oder eine universelle asynchrone Empfänger-Sender-Verbindung (UART-Verbindung) kommunizieren. Oder diese Einheiten können über eine Zwischenverbindung gemäß Peripheriekomponentenzwischenverbindungs-Express-Protokoll (PCIe™-Protokoll), z. B. gemäß der PCI-Express™-Basisspezifikation Version 3.0 (erschienen am 17. Januar 2007) oder einem anderen Protokoll wie einem seriellen Dateneingabe/Ausgabe-Standard (SDIO-Standard) an den Prozessor gekoppelt sein. Natürlich kann die tatsächliche physische Verbindung zwischen diesen Peripherievorrichtungen, die auf einer oder mehreren Karten ausgebildet sein kann, durch die NGFF-Stecker an eine Festplatte angepasst sein.
  • Zusätzlich kann drahtlose Weitbereichskommunikation, z. B. gemäß einem zellularen oder einem anderen drahtlosen Weitbereichsprotokoll, über eine WWAN-Einheit erfolgen, die wiederum mit einem Teilnehmeridentitätsmodul (SIM) gekoppelt sein kann. Um den Empfang und die Verwendung von Standortinformationen zu ermöglichen, kann zudem ein GPS-Modul vorhanden sein. Die WWAN-Einheit und eine integrierte Erfassungsvorrichtung wie etwa ein Kameramodul können über ein bestimmtes USB-Protokoll wie eine USB-2.0- oder USB-3.0-Verbindung oder ein UART- oder I2C-Protokoll kommunizieren. Die tatsächliche physische Verbindung dieser Einheiten kann wiederum über die Einrichtung einer NGFF-Zusatzkarte an einem auf der Hauptplatine ausgebildeten NGFF-Verbinder erfolgen.
  • In einer bestimmten Ausführungsform kann die Drahtlos-Funktionalität modular bereitgestellt werden, z. B. mit einer Wi-Fi™-802.11ac-Lösung (z. B. Zusatzkarte, die mit IEEE 802.11abgn abwärtskompatibel ist) mit Unterstützung für Windows 8 CS. Diese Karte kann in einem internen Steckplatz (z. B. über einen NGFF-Adapter) ausgebildet sein. Ein zusätzliches Modul kann für Bluetooth-Fähigkeit (z. B. Bluetooth 4.0 mit Rückwärtskompatibilität) sowie Intel@-Wireless-Display-Funktionalität sorgen. Zusätzlich kann die NFC-Unterstützung über eine separate Vorrichtung oder ein Multifunktionsvorrichtung bereitgestellt werden und kann beispielsweise für den einfachen Zugriff in einem vorderen rechten Teil des Gehäuses positioniert werden. Ein weiteres Zusatzmodul kann eine WWAN-Vorrichtung sein, die 3G/4G/LTE und GPS unterstützen kann. Dieses Modul kann in einem internen Steckplatz (z. B. NGFF) implementiert sein. Integrierte Antennenunterstützung kann für Wi-Fi™, Bluetooth, WWAN, NFC und GPS bereitgestellt werden, wodurch ein nahtloser Übergang von Wi-Fi™ auf WWAN-Radios, drahtloses Gigabit (WiGig) gemäß der Wireless Gigabit-Spezifikation (Juli 2010), und umgekehrt möglich ist.
  • Wie es oben beschrieben ist, kann eine integrierte Kamera in den Deckel eingebaut sein. Als ein Beispiel kann diese Kamera eine Kamera mit hoher Auflösung sein, z. B. mit einer Auflösung von mindestens 2,0 Megapixeln (MP) und bis zu 6,0 MP und darüber hinaus.
  • Um Audioeingaben und -ausgaben bereitzustellen, kann ein Audioprozessor über einen Digitalsignalprozessor (DSP) implementiert sein, der über eine hochauflösende Audio-Verbindung (HDA-Verbindung) mit dem Prozessor gekoppelt sein kann. In ähnlicher Weise kann der DSP mit einem integrierten Codierer/Decodierer (CODEC) und einem Verstärker kommunizieren, die wiederum mit Ausgabelautsprechern gekoppelt sein können, die in dem Chassis implementiert sein können. In ähnlicher Weise können Verstärker und CODEC gekoppelt sein, um Audioeingaben von einem Mikrofon zu empfangen, das in einer Ausführungsform über Doppelarray-Mikrofone (wie etwa ein digitales Mikrofonarray) implementiert sein kann, um Audioeingaben hoher Qualität zu liefern, um eine sprachaktivierte Steuerung von verschiedenen Operationen innerhalb des Systems zu ermöglichen. Es ist auch zu beachten, dass Audioausgaben von dem Verstärker/CODEC an eine Kopfhörerbuchse geliefert werden können.
  • In einer bestimmten Ausführungsform können der digitale Audiocodec und der Verstärker die Stereo-Kopfhörerbuchse, die Stereo-Mikrofonbuchse, ein internes Mikrofonarray und die Stereo-Lautsprecher ansteuern. In verschiedenen Implementierungen kann der Codec in einen Audio-DSP integriert sein oder über einen HD-Audiopfad mit einem Peripheriecontroller-Hub (PCH) gekoppelt sein. In einigen Implementierungen können zusätzlich zu den integrierten Stereolautsprechern ein oder mehrere Basslautsprecher bereitgestellt sein und die Lautsprecherlösung kann DTS-Audio unterstützen.
  • In einigen Ausführungsformen kann der Prozessor von einem externen Spannungsregler (VR) und mehreren internen Spannungsreglern, die in den Prozessorchip integriert sind, gespeist werden, die als vollständig integrierte Spannungsregler (FIVRs) bezeichnet werden. Die Verwendung mehrerer FIVRs in dem Prozessor ermöglicht die Gruppierung von Komponenten in separate Leistungsebenen, so dass die Leistung von der FIVR nur für die Komponenten in der Gruppe geregelt und bereitgestellt wird. Während des Leistungsmanagements kann eine bestimmte Leistungsebene eines FIVR heruntergefahren oder ausgeschaltet werden, wenn der Prozessor in einen bestimmten Energiesparmodus versetzt wird, während eine andere Leistungsebene eines anderen FIVR aktiv bleibt oder vollständig mit Leistung versorgt wird.
  • In einer Ausführungsform kann eine Leistungserhaltungsebene während einiger Tiefschlafzustände verwendet werden, um die E/A-Stifte für mehrere E/A-Signale wie beispielsweise die Schnittstelle zwischen dem Prozessor und einem PCH, die Schnittstelle mit dem externen VR und die Schnittstelle mit dem EC einzuschalten. Diese Leistungserhaltungsebene versorgt auch einen chipinternen Spannungsregler mit Leistung, der den chipinternen SRAM oder einen anderen Cache-Speicher unterstützt, in dem der Prozessorkontext während des Ruhezustands gespeichert ist. Die Leistungserhaltungsebene wird auch verwendet, um die Aufwecklogik des Prozessors einzuschalten, die die verschiedenen Aufweckquellensignale überwacht und verarbeitet.
  • Während des Leistungsmanagement bleibt, während andere Leistungsebenen heruntergefahren oder ausgeschaltet werden, wenn der Prozessor in bestimmte Tiefschlafzustände eintritt, die Leistungserhaltungsebene eingeschaltet, um die oben genannten Komponenten zu unterstützen. Dies kann jedoch zu unnötiger Energieverbrauch oder -verlust führen, wenn diese Komponenten nicht benötigt werden. Zu diesem Zweck können Ausführungsformen einen verbundenen Bereitschaftsschlafzustand bereitstellen, um den Prozessorkontext unter Verwendung einer dedizierten Leistungsebene aufrechtzuerhalten. In einer Ausführungsform ermöglicht der verbundene Bereitschaftsschlafzustand ein Aufwecken des Prozessors unter Verwendung von Betriebsmitteln eines PCH, der selbst in einer Baugruppe mit dem Prozessor bereitgestellt sein kann. In einer Ausführungsform ermöglicht der verbundene Bereitschaftsschlafzustand ein Aufrechterhalten von Prozessorarchitekturfunktionen in dem PCH bis zum Aufwecken des Prozessors, wodurch alle unnötigen Prozessorkomponenten ausgeschaltet werden können, die zuvor während des Tiefschlafzustands eingeschaltet blieben, einschließlich des Ausschaltens aller Uhren. In einer Ausführungsform umfasst der PCH einen Zeitstempelzähler (TSC) und eine verbundene Bereitschaftslogik zum Steuern des Systems während des verbundenen Bereitschaftszustands. Der integrierte Spannungsregler für die Leistungserhaltungsebene kann sich auch auf dem PCH befinden.
  • In einer Ausführungsform kann während des verbundenen Bereitschaftszustands ein integrierter Spannungsregler als eine dedizierte Leistungsebene fungieren, die eingeschaltet bleibt, um den dedizierten Cache-Speicher zu unterstützen, in dem der Prozessorkontext gespeichert ist, wie z. B. kritische Zustandsvariablen, wenn der Prozessor in Tiefschlafzustände und den verbundenen Bereitschaftszustand eintritt. Dieser kritische Zustand kann Zustandsvariablen umfassen, die dem Architektur-, Mikroarchitektur-, Debug-Zustand und/oder ähnlichen Zustandsvariablen zugeordnet sind, die dem Prozessor zugeordnet sind.
  • Die Aufweckquellensignale von dem EC können während des verbundenen Bereitschaftszustands an den PCH statt an den Prozessor gesendet werden, so dass der PCH anstelle des Prozessors die Aufweckverarbeitung verwalten kann. Darüber hinaus wird der TSC in dem PCH verwaltet, um die Aufrechterhaltung der Architekturfunktionen des Prozessors zu erleichtern.
  • Die Leistungssteuerung in dem Prozessor kann zu einer verbesserten Energieersparnis führen. Beispielsweise kann die Leistung dynamisch zwischen Kernen aufgeteilt werden, einzelne Kerne können Frequenz/Spannung ändern und es können mehrere tiefe Niederleistungszustände bereitgestellt werden, um eine sehr geringe Leistungsaufnahme zu ermöglichen. Darüber hinaus kann die dynamische Steuerung der Kerne oder der unabhängigen Kernteile zu einer verringerten Leistungsaufnahme führen, da Komponenten ausgeschaltet werden, wenn sie nicht verwendet werden.
  • In verschiedenen Implementierungen kann ein Sicherheitsmodul wie etwa ein TPM in einen Prozessor integriert sein oder es kann eine diskrete Vorrichtung wie etwa eine TPM-2.0-Vorrichtung sein. Mit einem integrierten Sicherheitsmodul, auch als Vertrauensplattformtechnologie (PTT) bezeichnet, kann es BIOS/Firmware ermöglicht werden, um bestimmte Hardwarefunktionen für bestimmte Sicherheitsmerkmale, einschließlich sicherer Befehle, sicherem Booten, Intel® Anti-Diebstahl-Technologie, Intel® Identitätsschutz-Technologie, Intel® Technologie zur vertrauenswürdigen Ausführung (TXT) und Intel® Manageability-Engine-Technologie zusammen mit sicheren Anwenderoberflächen wie einer sicheren Tastatur und Anzeige freizugeben.
  • Obwohl diese Offenbarung unter Bezugnahme auf eine begrenzte Anzahl von Ausführungsformen beschrieben ist, werden Fachleute zahlreiche Abwandlungen und Variationen davon erkennen. Es ist beabsichtigt, dass die beigefügten Ansprüche alle derartigen Abwandlungen und Variationen abdecken, die unter den wahren Gedanken und Umfang dieser vorliegenden Offenbarung fallen.
  • Ein Entwurf kann verschiedene Stadien durchlaufen, von der Erzeugung über die Simulation bis zur Herstellung. Daten, die einen Entwurf repräsentieren, können den Entwurf auf eine Reihe von Arten darstellen. Zuerst kann die Hardware, wie es in Simulationen nützlich ist, unter Verwendung einer Hardwarebeschreibungssprache oder einer anderen funktionalen Beschreibungssprache dargestellt werden. Zusätzlich kann ein Schaltungsebenenmodell mit Logik- und/oder Transistorgattern in einigen Stufen des Entwurfsprozesses erzeugt werden. Darüber hinaus erreichen die meisten Entwürfe zu einem bestimmten Zeitpunkt ein Datenniveau, das die physische Anordnung verschiedener Vorrichtungen in dem Hardwaremodell darstellt. In dem Fall, in dem herkömmliche Halbleiterherstellungstechniken verwendet werden, können die Daten, die das Hardwaremodell darstellen, die Daten sein, die das Vorhandensein oder Fehlen verschiedener Merkmale auf verschiedenen Maskenschichten für Masken angeben, die zur Herstellung der integrierten Schaltung verwendet werden. In jeder Darstellung des Entwurfs können die Daten in irgendeiner Form eines maschinenlesbaren Mediums gespeichert sein. Ein Speicher oder ein magnetischer oder optischer Datenspeicher wie etwa eine Platte kann das maschinenlesbare Medium zum Speichern von Informationen sein, die über optische oder elektrische Wellen übertragen werden, die moduliert oder auf andere Weise erzeugt werden, um solche Informationen zu übertragen. Wenn eine elektrische Trägerwelle, die den Code oder den Entwurf angibt oder trägt, übertragen wird, wird, soweit das Kopieren, Puffern oder erneute Senden des elektrischen Signals durchgeführt wird, eine neue Kopie erstellt. Somit kann ein Kommunikationsanbieter oder ein Netzanbieter auf einem konkreten, maschinenlesbaren Medium zumindest vorübergehend ein Element, beispielsweise in eine Trägerwelle codierte Informationen, speichern, das Techniken von Ausführungsformen der vorliegenden Offenbarung verkörpert.
  • Ein Modul bezieht sich wie hier verwendet auf irgendeine Kombination von Hardware, Software und/oder Firmware. Als ein Beispiel enthält ein Modul Hardware wie beispielsweise einen Mikrocontroller, der einem nichtflüchtigen Medium zugeordnet ist, um Code zu speichern, der dazu ausgelegt ist, von dem Mikrocontroller ausgeführt zu werden. Daher bezieht sich der Verweis auf ein Modul in einer Ausführungsform auf die Hardware, die speziell dazu ausgelegt ist, den auf einem nichtflüchtigen Medium zu haltenden Code zu erkennen und/oder auszuführen. Ferner bezieht sich in einer weiteren Ausführungsform die Verwendung eines Moduls auf das nichttransitorische Medium, das den Code enthält, der speziell dazu ausgelegt ist, von dem Mikrocontroller ausgeführt zu werden, um vorbestimmte Operationen durchzuführen. Und wie daraus geschlossen werden kann, kann sich in einer weiteren Ausführungsform der Begriff Modul (in diesem Beispiel) auf die Kombination des Mikrocontrollers und des nichtflüchtigen Mediums beziehen. Häufig variieren Modulgrenzen, die separat dargestellt sind, und überlappen sich möglicherweise. Zum Beispiel können sich ein erstes und ein zweites Modul Hardware, Software, Firmware oder eine Kombination davon teilen, während möglicherweise einige unabhängige Hardware, Software oder Firmware beibehalten wird. In einer Ausführungsform umfasst die Verwendung des Begriffs Logik Hardware wie z. B. Transistoren, Register oder andere Hardware wie etwa programmierbare Logikvorrichtungen.
  • Die Verwendung des Ausdrucks „dazu ausgelegt“ bezieht sich in einer Ausführungsform auf ein Anordnen, Zusammenstellen, Herstellen, Anbieten zum Verkauf, Importieren und/oder Entwerfen einer Vorrichtung, Hardware, Logik oder eines Elements zum Ausführen einer zugewiesenen oder bestimmten Aufgabe. In diesem Beispiel ist eine Vorrichtung oder ein Element davon, die/das nicht in Betrieb ist, immer noch dazu ausgelegt, eine bestimmte Aufgabe auszuführen, wenn sie entworfen, angekoppelt und/oder angeschlossen ist, um die bestimmte Aufgabe auszuführen. Als rein veranschaulichendes Beispiel kann ein Logikgatter während des Betriebs eine 0 oder eine 1 liefern. Ein Logikgatter, das dazu ausgelegt ist, ein Aktivierungssignal an einen Takt zu liefern, umfasst jedoch nicht jedes mögliche Logikgatter, das eine 1 oder 0 liefern kann. Stattdessen ist das Logikgatter auf irgendeine Weise so gekoppelt, dass während des Betriebs die Ausgabe 1 oder 0 dazu dient, den Takt zu aktivieren. Es ist noch einmal anzumerken, dass die Verwendung des Ausdrucks „dazu ausgelegt“ keine Operation erfordert, sondern stattdessen auf den latenten Zustand einer Vorrichtung, einer Hardware und/oder eines Elements abzielt, wobei die Vorrichtung, die Hardware und/oder das Element in dem latenten Zustand dazu ausgelegt ist, eine bestimmte Aufgabe auszuführen, wenn die Vorrichtung, die Hardware und/oder das Element in Betrieb ist.
  • Ferner bezieht sich die Verwendung der Ausdrücke „dazu fähig“ und/oder „dazu betreibbar“ in einer Ausführungsform auf eine Vorrichtung, eine Logik, eine Hardware und/oder ein Element, die so gestaltet sind, dass sie die Verwendung der Vorrichtung, Logik, Hardware und/oder des Elements in einer bestimmten Art und Weise ermöglichen. Wie oben erwähnt bezieht sich die Verwendung von „dazu fähig“ und/oder „dazu betreibbar“ in einer Ausführungsform auf den latenten Zustand einer Vorrichtung, Logik, Hardware und/oder eines Elements, in dem die Vorrichtung Logik, Hardware und/oder das Element nicht in Betrieb ist, sondern derart ausgelegt ist, dass die Verwendung einer Vorrichtung in einer bestimmten Art und Weise ermöglicht wird.
  • Ein Wert umfasst wie hier verwendet jede bekannte Darstellung einer Zahl, eines Zustands, eines logischen Zustands oder eines binären logischen Zustands. Häufig wird die Verwendung von Logikpegeln, Logikwerten oder logischen Werten auch als 1 und 0 bezeichnet, was einfach binäre logische Zustände darstellt. Zum Beispiel bezieht sich 1 auf einen hohen Logikpegel und 0 auf einen niedrigen Logikpegel. In einer Ausführungsform kann eine Speicherzelle wie etwa ein Transistor oder eine Flash-Zelle in der Lage sein, einen einzelnen logischen Wert oder mehrere logische Werte zu halten. Es wurden jedoch andere Darstellungen von Werten in Computersystemen verwendet. Zum Beispiel kann die Dezimalzahl zehn auch als ein Binärwert 1010 und ein hexadezimaler Buchstabe A dargestellt werden. Daher umfasst ein Wert irgendeine Darstellung von Informationen, die in einem Computersystem gehalten werden kann.
  • Darüber hinaus können Zustände durch Werte oder Teile von Werten dargestellt werden. Als ein Beispiel kann ein erster Wert wie beispielsweise eine logische Eins einen Standard- oder Anfangszustand darstellen, während ein zweiter Wert wie beispielsweise eine logische Null einen Nicht-Standardzustand darstellen kann. Außerdem beziehen sich die Begriffe „zurückgesetzt“ und „gesetzt“ in einer Ausführungsform auf einen Standardwert bzw. einen aktualisierten Wert bzw. Zustand. Zum Beispiel umfasst ein Standardwert möglicherweise einen hohen logischen Wert, d. h. zurückgesetzt, während ein aktualisierter Wert möglicherweise einen niedrigen logischen Wert umfasst, d. h. gesetzt. Es ist zu beachten, dass eine beliebige Kombination von Werten verwendet werden kann, um eine beliebige Anzahl von Zuständen darzustellen.
  • Die folgenden Beispiele beziehen sich auf Ausführungsformen gemäß dieser Beschreibung. Beispiel 1 ist eine Einrichtung, die Folgendes umfasst: einen Port; und eine Protokollschaltungsanordnung, die zu Folgendem ausgelegt ist: Identifizieren einer ersten Anforderung, die bei einer dauerhaften Speicherleerung an dem Port empfangen wird, wobei die erste Anforderung anfordert, dass Daten im Cache-Speicher in einem System in dauerhaften Speicher in dem System geleert werden, wobei die dauerhafte Speicherleerung von einer Hostprozessorvorrichtung initiiert wird, und die erste Anforderung in einer ersten Phase der dauerhaften Speicherleerung empfangen wird; Senden einer ersten Antwort auf die erste Anforderung, wobei die erste Antwort an die Hostprozessorvorrichtung weitergeleitet werden soll und in der ersten Phase der dauerhaften Speicherleerung gesendet wird; Identifizieren einer zweiten Anforderung bei der dauerhaften Speicherleerung, wobei die zweite Anforderung anfordert, dass Puffer, die dem dauerhaften Speicher in dem System zugeordnet sind, in dauerhaften Speicher geleert werden, und die zweite Anforderung in einer zweiten Phase der dauerhaften Speicherleerung empfangen wird; und Senden einer zweiten Antwort auf die zweite Anforderung, wobei die zweite Antwort an die Hostprozessorvorrichtung weitergeleitet werden soll und in der zweiten Phase der dauerhaften Speicherleerung gesendet wird.
  • Beispiel 2 umfasst den Gegenstand von Beispiel 1, der ferner umfasst: einen bestimmten dauerhaften Speicher; einen bestimmten Puffer; und einen Speicherverwalter, der zu Folgendem ausgelegt ist: Schreiben von Daten aus einem bestimmten Cache einer weiteren Vorrichtung in dem System basierend auf der ersten Anforderung in den bestimmten dauerhaften Speicher; und Schreiben von Daten aus dem bestimmten Puffer in den nichtflüchtigen Speicher basierend auf der zweiten Anforderung.
  • Beispiel 3 umfasst den Gegenstand von Beispiel 1, der ferner umfasst: eine Prozessorschaltungsanordnung; einen bestimmten Cache, der der Prozessorschaltungsanordnung zugeordnet ist; und einen Speicherverwalter zum Veranlassen basierend auf der ersten Anforderung, dass Daten in dem bestimmten Cache in einen dauerhaften Speicher auf einer weiteren Vorrichtung in dem System geschrieben werden.
  • Beispiel 4 umfasst den Gegenstand von Beispiel 3, wobei die Einrichtung eine Hardwarebeschleunigervorrichtung umfasst.
  • Beispiel 5 umfasst den Gegenstand von Beispiel 1, wobei die Einrichtung einen Switch umfasst, der Switch mit einer ersten stromabwärtigen Vorrichtung und einer zweiten stromabwärtigen Vorrichtung verbunden ist und der Switch zu Folgendem ausgelegt ist: Weiterleiten jeweiliger Instanzen der ersten Anforderung an die erste und zweite stromabwärtige Vorrichtung; Empfangen jeweiliger Antworten auf die erste Anforderung von der ersten und zweiten stromabwärtigen Vorrichtung, wobei die erste Antwort auf Informationen in den Antworten auf die erste Anforderung von der ersten und zweiten stromabwärtigen Vorrichtung basiert; Weiterleiten jeweiliger Instanzen der zweiten Anforderung an die erste und die zweite stromabwärtige Vorrichtung; und Empfangen jeweiliger Antworten auf die zweite Anforderung von der ersten und zweiten stromabwärtigen Vorrichtung, wobei die zweite Antwort auf Informationen in den Antworten auf die zweite Anforderung von der ersten und zweiten stromabwärtigen Vorrichtung basiert.
  • Beispiel 6 umfasst den Gegenstand eines der Beispiele 1-5, der ferner umfasst: eine Fehlerdetektionsschaltungsanordnung zum Identifizieren eines Fehlers in der ersten Phase oder der zweiten Phase der dauerhaften Speicherleerung; wobei die erste Antwort identifiziert, ob in der ersten Phase ein Fehler detektiert wird, und die zweite Antwort identifiziert, ob in der zweiten Phase ein Fehler detektiert wird.
  • Beispiel 7 umfasst den Gegenstand von Beispiel 6, wobei die erste Antwort ein Feld aufweist, um anzugeben, dass ein bestimmter Fehler in der ersten Phase detektiert wird, und die erste Antwort ferner ein Nutzdatenfeld aufweist, um Attribute des bestimmten Fehlers anzugeben.
  • Beispiel 8 umfasst den Gegenstand von Beispiel 7, wobei das Nutzdatenfeld eines von mehreren Nutzdatenfeldern umfasst und das Feld identifiziert, welche der mehreren Nutzdatenfelder mit Informationen gefüllt sind, um den bestimmten Fehler zu beschreiben.
  • Beispiel 9 umfasst den Gegenstand eines der Beispiele 7-8, wobei die Attribute eine Adresse einer Quelle des bestimmten Fehlers umfassen.
  • Beispiel 10 umfasst den Gegenstand eines der Beispiele 7-9, wobei die zweite Antwort zudem das Feld und das Nutzdatenfeld aufweist.
  • Beispiel 11 umfasst den Gegenstand eines der Beispiele 1-10, wobei die zweite Anforderung ein Feld aufweist, um anzugeben, ob in der ersten Phase der dauerhaften Speicherleerung ein Fehler in dem System detektiert wurde.
  • Beispiel 12 umfasst den Gegenstand von Beispiel 11, der ferner eine Protokollierungsschaltungsanordnung zum Protokollieren des Fehlers basierend auf dem Feld in der zweiten Anforderung umfasst.
  • Beispiel 13 umfasst den Gegenstand eines der Beispiele 1-12, wobei der Port die Einrichtung über eine Verbindung mit einer zweiten Einrichtung koppelt, die Verbindung mit einem bestimmten Zwischenverbindungsprotokoll kompatibel ist und die erste Anforderung, erste Antwort, die zweite Anforderung und die zweite Antwort auf dem bestimmten Zwischenverbindungsprotokoll basieren.
  • Beispiel 14 umfasst den Gegenstand von Beispiel 13, wobei das bestimmte Zwischenverbindungsprotokoll Compute Express Link (CXL) umfasst.
  • Beispiel 15 ist ein Verfahren, das Folgendes umfasst: Empfangen einer Cache-Leerungsanforderung in einer ersten Phase eines Flusses zur dauerhaften Speicherleerung, wobei die erste Phase von einem Hostprozessor initiiert wird und die Cache-Leerungsanforderung anfordert, dass Daten in dem Cache-Speicher in dauerhaften Speicher innerhalb eines Systems geleert werden; Bestimmen, ob in der ersten Phase ein Fehler auftritt; Senden einer Cache-Leerungsantwort in der ersten Phase, wobei die Cache-Leerungsantwort identifiziert, ob in der ersten Phase ein Fehler detektiert wird; Empfangen einer Speicherpufferleerungsanforderung in einer zweiten Phase des Flusses zur dauerhaften Speicherleerung, wobei die zweite Phase nach Abschluss der ersten Phase von dem Hostprozessor initiiert wird und die Speicherpufferleerungsanforderung anfordert, dass Daten in Puffern von dauerhaften Speichervorrichtungen in dem System in dauerhaften Speicher geleert werden; und Senden einer Speicherpufferleerungsantwort in der zweiten Phase.
  • Beispiel 16 umfasst den Gegenstand von Beispiel 15, wobei sich ein Teil des Cache-Speichers in dem System in einer von dem Hostprozessor getrennten Beschleunigervorrichtung befindet und sich mindestens ein Teil des dauerhaften Speichers in dem System in Speichererweiterungsvorrichtungen befindet.
  • Beispiel 17 umfasst den Gegenstand eines der Beispiele 15-16, wobei die Cache-Leerungsantwort ein Feld aufweist, um anzugeben, dass ein bestimmter Fehler in der ersten Phase detektiert wird.
  • Beispiel 18 umfasst den Gegenstand von Beispiel 17, wobei die Cache-Leerungsantwort ferner ein Nutzdatenfeld aufweist, um Attribute des bestimmten Fehlers anzugeben.
  • Beispiel 19 umfasst den Gegenstand von Beispiel 18, wobei das Nutzdatenfeld eines von mehreren Nutzdatenfeldern umfasst und das Feld identifiziert, welche der mehreren Nutzdatenfelder mit Informationen gefüllt sind, um den bestimmten Fehler zu beschreiben.
  • Beispiel 20 umfasst den Gegenstand eines der Beispiele 18-19, wobei die Attribute eine Adresse einer Quelle des bestimmten Fehlers umfassen.
  • Beispiel 21 umfasst den Gegenstand eines der Beispiele 18-20, wobei die zweite Antwort auch das Feld und das Nutzdatenfeld aufweist.
  • Beispiel 22 umfasst den Gegenstand eines der Beispiele 15-21, wobei die Speicherpufferleerungsanforderung ein Feld aufweist, um anzugeben, ob in der ersten Phase des Flusses zur dauerhaften Speicherleerung ein Fehler in dem System detektiert wurde.
  • Beispiel 23 umfasst den Gegenstand von Beispiel 22, der ferner ein Protokollieren des Fehlers basierend auf dem Feld in der zweiten Anforderung umfasst.
  • Beispiel 24 umfasst den Gegenstand eines der Beispiele 15-23, wobei die erste Anforderung, die erste Antwort, die zweite Anforderung und die zweite Antwort auf einem bestimmten Zwischenverbindungsprotokoll basieren.
  • Beispiel 25 umfasst den Gegenstand von Beispiel 24, wobei das bestimmte Zwischenverbindungsprotokoll Compute Express Link (CXL) umfasst.
  • Beispiel 26 ist ein System, das Mittel umfasst, um das Verfahren nach einem der Beispiele 15-25 durchzuführen.
  • Beispiel 27 umfasst den Gegenstand von Beispiel 26, wobei die Mittel eine Schaltungsanordnung einer Switch-Vorrichtung umfassen.
  • Beispiel 28 enthält den Gegenstand von Beispiel 26, wobei die Mittel eine Schaltungsanordnung einer Beschleunigervorrichtung umfassen.
  • Beispiel 29 umfasst den Gegenstand von Beispiel 26, wobei die Mittel eine Schaltungsanordnung einer dauerhaften Speichervorrichtung umfassen.
  • Beispiel 30 umfasst den Gegenstand von Beispiel 26, wobei die Mittel ein nichttransitorisches Speichermedium mit Befehlen darauf umfassen, wobei die Befehle von einer Maschine ausgeführt werden können, um mindestens einen Teil des Verfahrens eines der Beispiele 15-25 auszuführen.
  • Beispiel 31 ist ein System, das Folgendes umfasst: eine Hostprozessorvorrichtung, die Folgendes umfasst: einen oder mehrere Kerne; einen Hostspeicher; und eine Protokollschaltungsanordnung, die zu Folgendem ausgelegt ist: Senden von Instanzen einer Cache-Leerungsanforderung an einen Satz von Vorrichtungen, die mit der Hostprozessorvorrichtung verbunden sind, wobei die Cache-Leerungsanforderung einem Start einer ersten Phase eines Flusses zur dauerhaften Speicherleerung entspricht und anfordert, dass Daten in dem Cache-Speicher in dem Satz von Vorrichtungen in dauerhaften Speicher geleert werden, wobei der dauerhafte Speicher eine Speichervorrichtung außerhalb des Hostspeichers umfasst; Empfangen eines ersten Satzes von Antworten auf die Cache-Leerungsanforderung aus dem Satz von Vorrichtungen; Bestimmen des Abschlusses der ersten Phase basierend auf dem ersten Satz von Antworten; Senden von Instanzen einer Speicherpufferleerungsanforderung an den Satz von Vorrichtungen, wobei die Speicherpufferleerungsanforderung einem Start einer zweiten Phase des Flusses zur dauerhaften Speicherleerung entspricht und anfordert, dass ein Puffer der Speichervorrichtung in den dauerhaften Speicher geleert wird; und Empfangen eines zweiten Satzes von Antworten auf die Speicherpufferleerungsanforderung aus dem Satz von Vorrichtungen.
  • Beispiel 32 umfasst den Gegenstand von Beispiel 31, wobei der erste Satz von Antworten einen Fehler identifiziert, der während der ersten Phase von einer weiteren Vorrichtung detektiert wird, und die Speicherpufferleerungsanforderung den Fehler identifiziert.
  • Beispiel 33 umfasst den Gegenstand von Beispiel 32, der ferner ein Fehlerprotokoll zum Identifizieren des Fehlers umfasst, wobei Systemsoftware auf das Fehlerprotokoll zugreifen kann.
  • Beispiel 34 umfasst den Gegenstand von Beispiel 33, wobei der Hostprozessor einen ersten Prozessor umfasst und das System ferner einen zweiten Prozessor umfasst, der über eine Verbindung mit dem ersten Prozessor verbunden ist, der Satz von Vorrichtungen einen ersten Satz von Vorrichtungen umfasst und der zweite Prozessor mit einem zweiten Satz von Vorrichtungen verbunden ist, wobei sich der zweite Prozessor mit dem ersten Prozessor koordiniert, um die erste und zweite Phase des Flusses zur dauerhaften Speicherleerung für den zweiten Satz von Vorrichtungen zu verwalten.
  • Beispiel 35 umfasst den Gegenstand eines der Beispiele 31-34, wobei der Hostprozessor ferner Hardwarelogik zum Identifizieren eines Ereignisses umfasst und der Fluss zur dauerhaften Speicherleerung von dem Hostprozessor basierend auf dem Ereignis initiiert wird.
  • Beispiel 36 umfasst den Gegenstand eines der Beispiele 31-35, der ferner den Satz von Vorrichtungen umfasst, wobei der Satz von Vorrichtungen eine Switch-Vorrichtung, eine Beschleunigervorrichtung oder eine dauerhafte Speichervorrichtung umfasst.
  • Beispiel 37 umfasst den Gegenstand eines der Beispiele 31-36, wobei der Satz von Vorrichtungen die Einrichtung eines der Beispiele 1-14 umfasst.
  • Beispiel 38 umfasst den Gegenstand eines der Beispiele 31-37, wobei der Hostprozessor über eine jeweilige Verbindung mit jeder aus dem Satz von Vorrichtungen verbunden ist und jede der Verbindungen, die den Hostprozessor mit dem Satz von Vorrichtungen verbinden, mit dem auf Compute Express Link (CXL) basierenden Protokoll kompatibel ist.
  • Die Ausführungsformen von Verfahren, Hardware, Software, Firmware oder Code, die oben dargelegt sind, können mittels Befehlen oder Code implementiert werden, die auf einem maschinenzugänglichen, maschinenlesbaren, computerzugänglichen oder computerlesbaren Medium gespeichert sind und die durch ein Verarbeitungselement ausführbar sind. Ein nichttransitorisches maschinenzugängliches/-lesbares Medium umfasst irgendeinen Mechanismus, der Informationen in einer Form bereitstellt (d. h. speichert und/oder überträgt), die von einer Maschine wie etwa einem Computer oder einem elektronischen System gelesen werden kann. Zum Beispiel umfasst ein nichttransitorisches, maschinenzugängliches Medium einen Direktzugriffsspeicher (RAM) wie etwa einen statischen RAM (SRAM) oder einen dynamischen RAM (DRAM); ROM; ein magnetisches oder optisches Speichermedium; Flash-Speichervorrichtungen; elektrische Speichervorrichtungen; optische Speichervorrichtungen; akustische Speichervorrichtungen; eine andere Form von Speichervorrichtungen zum Halten von Informationen, die aus transitorischen (sich ausbreitenden) Signalen (z. B. Trägerwellen, Infrarotsignalen, digitalen Signalen) empfangen werden; usw., die von den nichttransitorischen Medien zu unterscheiden sind, die daraus Informationen empfangen können.
  • Befehle, die verwendet werden, um Logik zum Ausführen von Ausführungsformen der Offenbarung zu programmieren, können in einem Speicher in dem System gespeichert sein, wie beispielsweise einem DRAM, einem Cache, einem Flash-Speicher oder anderem Speicher. Darüber hinaus können die Befehle über ein Netz oder über andere computerlesbare Medien verteilt werden. Somit kann ein maschinenlesbares Medium irgendeinen Mechanismus zum Speichern oder Übertragen von Informationen in einer Form, die von einer Maschine (z. B. einem Computer) lesbar ist, umfassen, ist aber nicht beschränkt auf Disketten, optische Disketten, CD-Nur-Lese-Speicher (CD-ROMs) und magnetooptische Platten, Nur-Lese-Speicher (ROMs), Direktzugriffsspeicher (RAM), löschbare programmierbare Nur-Lese-Speicher (EPROM), elektrisch löschbare programmierbare Nur-Lese-Speicher (EEPROM), magnetische oder optische Karten, Flash-Speicher oder einen konkreten, maschinenlesbaren Speicher, der bei der Übertragung von Informationen über das Internet über elektrische, optische, akustische oder andere Formen von sich ausbreitenden Signalen (z. B. Trägerwellen, Infrarotsignale, digitale Signale usw.) verwendet wird. Dementsprechend umfasst das computerlesbare Medium irgendeinen Typ von konkretem, maschinenlesbarem Medium, das zum Speichern oder Übertragen elektronischer Befehlen oder Informationen in einer Form, die von einer Maschine (z. B. einem Computer) gelesen werden kann, geeignet ist.
  • Die Bezugnahme auf „eine Ausführungsform“ in dieser Beschreibung bedeutet, dass ein bestimmtes Merkmal, eine bestimmte Struktur oder Eigenschaft, die in Verbindung mit der Ausführungsform beschrieben wurde, in mindestens einer Ausführungsform der vorliegenden Offenbarung enthalten ist. Somit bezieht sich das Auftauchen des Ausdrucks „in einer Ausführungsform“ an verschiedenen Stellen in dieser Beschreibung nicht notwendigerweise immer auf die gleiche Ausführungsform. Darüber hinaus können die besonderen Merkmale, Strukturen oder Eigenschaften in irgendeiner geeigneten Weise in einer oder mehreren Ausführungsformen kombiniert werden.
  • In der vorstehenden Beschreibung ist eine genaue Beschreibung unter Bezugnahme auf spezifische beispielhafte Ausführungsformen gegeben worden. Es ist jedoch offensichtlich, dass verschiedene Abwandlungen und Änderungen daran vorgenommen werden können, ohne von dem breiteren Gedanken und Schutzumfang der Erfindung abzuweichen, wie sie in den beigefügten Ansprüchen dargelegt ist. Die Beschreibung und die Zeichnungen sind dementsprechend in einem veranschaulichenden Sinne und nicht als einschränkend zu betrachten. Ferner bezieht sich die vorstehende Verwendung von Ausführungsform und anderer beispielhafter Sprache nicht notwendigerweise auf die gleiche Ausführungsform oder das gleiche Beispiel, sondern kann sich auf verschiedene und unterschiedliche Ausführungsformen sowie möglicherweise die gleiche Ausführungsform beziehen.
  • ZITATE ENTHALTEN IN DER BESCHREIBUNG
  • Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
  • Zitierte Patentliteratur
    • US 62/914788 [0001]

Claims (28)

  1. Einrichtung, die Folgendes umfasst: einen Port; und eine Protokollschaltungsanordnung, die zu Folgendem ausgelegt ist: Identifizieren einer ersten Anforderung, die bei einer dauerhaften Speicherleerung an dem Port empfangen wird, wobei die erste Anforderung anfordert, dass Daten im Cache-Speicher in einem System in dauerhaften Speicher in dem System geleert werden, wobei die dauerhafte Speicherleerung von einer Hostprozessorvorrichtung initiiert wird, und die erste Anforderung in einer ersten Phase der dauerhaften Speicherleerung empfangen wird; Senden einer ersten Antwort auf die erste Anforderung, wobei die erste Antwort an die Hostprozessorvorrichtung weitergeleitet werden soll und in der ersten Phase der dauerhaften Speicherleerung gesendet wird; Identifizieren einer zweiten Anforderung bei der dauerhaften Speicherleerung, wobei die zweite Anforderung anfordert, dass Puffer, die dem dauerhaften Speicher in dem System zugeordnet sind, in dauerhaften Speicher geleert werden, und die zweite Anforderung in einer zweiten Phase der dauerhaften Speicherleerung empfangen wird; und Senden einer zweiten Antwort auf die zweite Anforderung, wobei die zweite Antwort an die Hostprozessorvorrichtung weitergeleitet werden soll und in der zweiten Phase der dauerhaften Speicherleerung gesendet wird.
  2. Einrichtung nach Anspruch 1, die ferner umfasst: einen bestimmten dauerhaften Speicher; einen bestimmten Puffer; und einen Speicherverwalter, der zu Folgendem ausgelegt ist: Schreiben von Daten aus einem bestimmten Cache einer weiteren Vorrichtung in dem System basierend auf der ersten Anforderung in den bestimmten dauerhaften Speicher; und Schreiben von Daten aus dem bestimmten Puffer in den nichtflüchtigen Speicher basierend auf der zweiten Anforderung.
  3. Einrichtung nach Anspruch 1, die ferner umfasst: eine Prozessorschaltungsanordnung; einen bestimmten Cache, der der Prozessorschaltungsanordnung zugeordnet ist; und einen Speicherverwalter zum Veranlassen basierend auf der ersten Anforderung, dass Daten in dem bestimmten Cache in dauerhaften Speicher auf einer weiteren Vorrichtung in dem System geschrieben werden.
  4. Einrichtung nach Anspruch 3, wobei die Einrichtung eine Hardwarebeschleunigervorrichtung umfasst.
  5. Einrichtung nach Anspruch 1, wobei die Einrichtung einen Switch umfasst, der Switch mit einer ersten stromabwärtigen Vorrichtung und einer zweiten stromabwärtigen Vorrichtung verbunden ist und der Switch zu Folgendem ausgelegt ist: Weiterleiten jeweiliger Instanzen der ersten Anforderung an die erste und zweite stromabwärtige Vorrichtung; Empfangen jeweiliger Antworten auf die erste Anforderung aus der ersten und zweiten stromabwärtigen Vorrichtung, wobei die erste Antwort auf Informationen in den Antworten auf die erste Anforderung aus der ersten und zweiten stromabwärtigen Vorrichtung basiert; Weiterleiten jeweiliger Instanzen der zweiten Anforderung an die erste und die zweite stromabwärtige Vorrichtung; und Empfangen jeweiliger Antworten auf die zweite Anforderung aus der ersten und zweiten stromabwärtigen Vorrichtung, wobei die zweite Antwort auf Informationen in den Antworten auf die zweite Anforderung aus der ersten und zweiten stromabwärtigen Vorrichtung basiert.
  6. Einrichtung nach einem der Ansprüche 1-5, die ferner umfasst: eine Fehlerdetektionsschaltungsanordnung zum Identifizieren eines Fehlers in der ersten Phase oder der zweiten Phase der dauerhaften Speicherleerung; wobei die erste Antwort identifiziert, ob in der ersten Phase ein Fehler detektiert wird, und die zweite Antwort identifiziert, ob in der zweiten Phase ein Fehler detektiert wird.
  7. Einrichtung nach Anspruch 6, wobei die erste Antwort ein Feld aufweist, um anzugeben, dass ein bestimmter Fehler in der ersten Phase detektiert wird, und die erste Antwort ferner ein Nutzdatenfeld aufweist, um Attribute des bestimmten Fehlers anzugeben.
  8. Einrichtung nach Anspruch 7, wobei das Nutzdatenfeld eines von mehreren Nutzdatenfeldern umfasst und das Feld identifiziert, welche der mehreren Nutzdatenfelder mit Informationen gefüllt sind, um den bestimmten Fehler zu beschreiben.
  9. Einrichtung nach einem der Ansprüche 7-8, wobei die Attribute eine Adresse einer Quelle des bestimmten Fehlers umfassen.
  10. Einrichtung nach einem der Ansprüche 7-9, wobei die zweite Antwort zudem das Feld und das Nutzdatenfeld aufweist.
  11. Einrichtung nach einem der Ansprüche 1-10, wobei die zweite Anforderung ein Feld aufweist, um anzugeben, ob in der ersten Phase der dauerhaften Speicherleerung ein Fehler in dem System detektiert wurde.
  12. Einrichtung nach Anspruch 11, die ferner eine Protokollierungsschaltungsanordnung zum Protokollieren des Fehlers basierend auf dem Feld in der zweiten Anforderung umfasst.
  13. Einrichtung nach einem der Ansprüche 1-12, wobei der Port die Einrichtung über eine Verbindung mit einer zweiten Einrichtung koppelt, die Verbindung mit einem bestimmten Zwischenverbindungsprotokoll kompatibel ist und die erste Anforderung, erste Antwort, zweite Anforderung und zweite Antwort auf dem bestimmten Zwischenverbindungsprotokoll basieren.
  14. Einrichtung nach Anspruch 13, wobei das bestimmte Zwischenverbindungsprotokoll Compute Express Link (CXL) umfasst.
  15. Verfahren, das Folgendes umfasst: Empfangen einer Cache-Leerungsanforderung in einer ersten Phase eines Flusses zur dauerhaften Speicherleerung, wobei die erste Phase von einem Hostprozessor initiiert wird und die Cache-Leerungsanforderung anfordert, dass Daten in dem Cache-Speicher in dauerhaften Speicher innerhalb eines Systems geleert werden; Bestimmen, ob in der ersten Phase ein Fehler auftritt; Senden einer Cache-Leerungsantwort in der ersten Phase, wobei die Cache-Leerungsantwort identifiziert, ob in der ersten Phase ein Fehler detektiert wird; Empfangen einer Speicherpufferleerungsanforderung in einer zweiten Phase des Flusses zur dauerhaften Speicherleerung, wobei die zweite Phase nach Abschluss der ersten Phase von dem Hostprozessor initiiert wird und die Speicherpufferleerungsanforderung anfordert, dass Daten in Puffern von dauerhaften Speichervorrichtungen in dem System in dauerhaften Speicher geleert werden; und Senden einer Speicherpufferleerungsantwort in der zweiten Phase.
  16. Verfahren nach Anspruch 15, wobei sich ein Teil des Cache-Speichers in dem System in einer von dem Hostprozessor getrennten Beschleunigervorrichtung befindet und sich ein Teil des dauerhaften Speichers in dem System in Speichererweiterungsvorrichtungen befindet.
  17. System, das Mittel umfasst, um das Verfahren nach einem der Ansprüche 15-16 auszuführen.
  18. System nach Anspruch 17, wobei die Mittel eine Schaltungsanordnung einer Switch-Vorrichtung umfassen.
  19. System nach Anspruch 17, wobei die Mittel eine Schaltungsanordnung einer Beschleunigervorrichtung umfassen.
  20. System nach Anspruch 17, wobei die Mittel eine Schaltungsanordnung einer dauerhaften Speichervorrichtung umfassen.
  21. System nach Anspruch 17, wobei die Mittel ein nichttransitorisches Speichermedium mit Befehlen darauf umfassen, wobei die Befehle von einer Maschine ausgeführt werden können, um mindestens einen Teil des Verfahrens nach einem der Ansprüche 15-16 auszuführen.
  22. System, das Folgendes umfasst: eine Hostprozessorvorrichtung, die Folgendes umfasst: einen Prozessorkern; einen Hostspeicher; und eine Protokollschaltungsanordnung, die zu Folgendem ausgelegt ist: Senden von Instanzen einer Cache-Leerungsanforderung an einen Satz von Vorrichtungen, die mit der Hostprozessorvorrichtung verbunden sind, wobei die Cache-Leerungsanforderung einem Start einer ersten Phase eines Flusses zur dauerhaften Speicherleerung entspricht und anfordert, dass Daten in dem Cache-Speicher in dem Satz von Vorrichtungen in dauerhaften Speicher geleert werden, wobei der dauerhafte Speicher eine Speichervorrichtung außerhalb des Hostspeichers umfasst; Empfangen eines ersten Satzes von Antworten auf die Cache-Leerungsanforderung aus dem Satz von Vorrichtungen; Bestimmen des Abschlusses der ersten Phase basierend auf dem ersten Satz von Antworten; Senden von Instanzen einer Speicherpufferleerungsanforderung an den Satz von Vorrichtungen, wobei die Speicherpufferleerungsanforderung einem Start einer zweiten Phase des Flusses zur dauerhaften Speicherleerung entspricht und anfordert, dass ein Puffer der Speichervorrichtung in den dauerhaften Speicher geleert wird; und Empfangen eines zweiten Satzes von Antworten auf die Speicherpufferleerungsanforderung aus dem Satz von Vorrichtungen.
  23. System nach Anspruch 22, wobei der erste Satz von Antworten einen Fehler identifiziert, der während der ersten Phase von einer weiteren Vorrichtung detektiert wird, und die Speicherpufferleerungsanforderung den Fehler identifiziert.
  24. System nach Anspruch 23, das ferner ein Fehlerprotokoll zum Identifizieren des Fehlers umfasst, wobei Systemsoftware auf das Fehlerprotokoll zugreifen kann.
  25. System nach Anspruch 24, wobei der Hostprozessor einen ersten Prozessor umfasst und das System ferner einen zweiten Prozessor umfasst, der über eine Verbindung mit dem ersten Prozessor gekoppelt ist, der Satz von Vorrichtungen einen ersten Satz von Vorrichtungen umfasst und der zweite Prozessor mit einem zweiten Satz von Vorrichtungen verbunden ist, wobei der zweite Prozessor die erste und zweite Phase des Flusses zur dauerhaften Speicherleerung für den zweiten Satz von Vorrichtungen verwaltet.
  26. System nach einem der Ansprüche 22-25, wobei der Hostprozessor ferner Hardwarelogik zum Identifizieren eines Ereignisses umfasst und der Fluss zur dauerhaften Speicherleerung von dem Hostprozessor basierend auf dem Ereignis initiiert wird.
  27. System nach einem der Ansprüche 22-26, das ferner den Satz von Vorrichtungen umfasst, wobei der Satz von Vorrichtungen eine Switch-Vorrichtung, eine Beschleunigervorrichtung oder eine dauerhafte Speichervorrichtung umfasst.
  28. System nach einem der Ansprüche 22-27, wobei der Hostprozessor über eine jeweilige Verbindung mit jeder aus dem Satz von Vorrichtungen verbunden ist und jede der Verbindungen, die den Hostprozessor mit dem Satz von Vorrichtungen verbinden, mit dem auf Compute Express Link (CXL) basierenden Protokoll kompatibel ist.
DE102020120102.8A 2019-10-14 2020-07-30 Globale dauerhafte Speicherleerung Pending DE102020120102A1 (de)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201962914788P 2019-10-14 2019-10-14
US62/914,788 2019-10-14
US16/796,861 US11416397B2 (en) 2019-10-14 2020-02-20 Global persistent flush
US16/796,861 2020-02-20

Publications (1)

Publication Number Publication Date
DE102020120102A1 true DE102020120102A1 (de) 2021-04-15

Family

ID=71072178

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102020120102.8A Pending DE102020120102A1 (de) 2019-10-14 2020-07-30 Globale dauerhafte Speicherleerung

Country Status (2)

Country Link
US (2) US11416397B2 (de)
DE (1) DE102020120102A1 (de)

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11416397B2 (en) * 2019-10-14 2022-08-16 Intel Corporation Global persistent flush
US20210011864A1 (en) * 2020-09-25 2021-01-14 Francesc Guim Bernat System, apparatus and methods for dynamically providing coherent memory domains
KR20220049978A (ko) * 2020-10-15 2022-04-22 삼성전자주식회사 장치-부착 메모리에 대한 액세스를 위한 시스템, 장치 및 방법
KR20220056984A (ko) * 2020-10-29 2022-05-09 삼성전자주식회사 메모리 확장기, 호스트 장치, 및 그것들을 포함하는 서버 시스템의 동작 방법
US11455251B2 (en) * 2020-11-11 2022-09-27 Advanced Micro Devices, Inc. Enhanced durability for systems on chip (SOCs)
US20210089225A1 (en) * 2020-11-19 2021-03-25 Intel Corporation Adaptive device behavior based on available energy
US11704060B2 (en) * 2020-12-18 2023-07-18 Micron Technology, Inc. Split protocol approaches for enabling devices with enhanced persistent memory region access
WO2022139835A1 (en) * 2020-12-23 2022-06-30 Futurewei Technologies, Inc. Server architecture with configurable universal expansion slots
CN114816220A (zh) 2021-01-22 2022-07-29 伊姆西Ip控股有限责任公司 管理存储***的方法、电子设备和计算机程序产品
US20210318980A1 (en) * 2021-06-25 2021-10-14 Intel Corporation Peer-to-peer link sharing for upstream communications from xpus to a host processor
US11989143B2 (en) * 2021-07-18 2024-05-21 Avago Technologies International Sales Pte. Limited Composable infrastructure enabled by heterogeneous architecture, delivered by CXL based cached switch SoC
KR20230016110A (ko) * 2021-07-23 2023-02-01 삼성전자주식회사 메모리 모듈, 이를 포함하는 시스템, 및 메모리 모듈의 동작 방법
US20210349512A1 (en) * 2021-07-26 2021-11-11 Intel Corporation System, Apparatus And Methods For Power Communications According To A CXL Power Protocol
US11803506B2 (en) * 2021-10-28 2023-10-31 Arm Limited PCIe routing
US20230185740A1 (en) * 2021-12-10 2023-06-15 Samsung Electronics Co., Ltd. Low-latency input data staging to execute kernels
US11989142B2 (en) 2021-12-10 2024-05-21 Samsung Electronics Co., Ltd. Efficient and concurrent model execution
US20230305922A1 (en) * 2022-03-24 2023-09-28 Smart Modular Technologies, Inc. Serial attached non-volatile memory
US20240028201A1 (en) * 2022-07-19 2024-01-25 Dell Products L.P. Optimal memory tiering of large memory systems using a minimal number of processors
US20240086076A1 (en) * 2022-09-12 2024-03-14 Samsung Electronics Co., Ltd. Systems and methods for using a storage device as persistent memory
US20240111682A1 (en) * 2022-09-30 2024-04-04 Advanced Micro Devices, Inc. Runtime Flushing to Persistency in Heterogenous Systems
US11966339B1 (en) * 2022-09-30 2024-04-23 Advanced Micro Devices, Inc. Selecting between basic and global persistent flush modes

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3838682A (en) * 1972-12-29 1974-10-01 Primary Childrens Hospital Automated blood analysis system
US4398189A (en) * 1981-08-20 1983-08-09 Bally Manufacturing Corporation Line buffer system for displaying multiple images in a video game
US5142634A (en) * 1989-02-03 1992-08-25 Digital Equipment Corporation Branch prediction
EP0447145B1 (de) * 1990-03-12 2000-07-12 Hewlett-Packard Company Durch Anwender festgelegter direkter Speicherzugriff mit Anwendung von virtuellen Adressen
US6546462B1 (en) * 1999-12-30 2003-04-08 Intel Corporation CLFLUSH micro-architectural implementation method and system
US6711653B1 (en) * 2000-03-30 2004-03-23 Intel Corporation Flexible mechanism for enforcing coherency among caching structures
US6629211B2 (en) * 2001-04-20 2003-09-30 International Business Machines Corporation Method and system for improving raid controller performance through adaptive write back/write through caching
WO2015061731A1 (en) * 2013-10-27 2015-04-30 Advanced Micro Devices, Inc. Input/output memory map unit and northbridge
US10019354B2 (en) * 2013-12-09 2018-07-10 Intel Corporation Apparatus and method for fast cache flushing including determining whether data is to be stored in nonvolatile memory
US10489158B2 (en) * 2014-09-26 2019-11-26 Intel Corporation Processors, methods, systems, and instructions to selectively fence only persistent storage of given data relative to subsequent stores
US11416397B2 (en) * 2019-10-14 2022-08-16 Intel Corporation Global persistent flush

Also Published As

Publication number Publication date
US20230038517A1 (en) 2023-02-09
US20200192798A1 (en) 2020-06-18
US11416397B2 (en) 2022-08-16

Similar Documents

Publication Publication Date Title
DE102020120102A1 (de) Globale dauerhafte Speicherleerung
DE112013007732B4 (de) System und Vorrichtung zum Bestimmen und Melden eines Fehlers auf einer Bahn
DE112013007752B3 (de) Hochleistungsverdrahtungs-Bitübertragungsschicht
DE102019129626A1 (de) Vorwärtsfehlerkorrekturmechanismus für datenübertragung über mehrspurige verbindungen
DE102019009207B3 (de) Vorrichtungen, verfahren und nichttransitorisches computerlesbares speichermedien für dvsec für eine effiziente peripheriegeräteverwaltung
DE102020116195A1 (de) Leistungsmanagement für neu-treiber-vorrichtungen
DE112017001430T5 (de) In-band-retimer-registerzugriff
DE102020125353A1 (de) Transaktionsschichtpaketformat
DE112013007724B4 (de) System, vorrichtung und verfahren zur gemeinsamen benutzung von speicher und i/o-diensten zwischen knoten
DE102018004327A1 (de) Systeme und Verfahren zum Zugreifen auf Massenspeicher als Arbeitsspeicher
DE102020130978A1 (de) Seitenbandsignalisierung über vorhandene hilfsstifte einer schnittstelle
DE112013007734B4 (de) Geräte, verfahren und systeme zum identifizieren eines protokolls, das eine physikalische verbindung nutzt
DE112013007726T5 (de) Verbesserungen eines Zwischenverbindungs-Retimers
DE102020128760A1 (de) Zustände mit teilweiser verbindungsbreite für mehrbahnverbindungen
DE112016005910T5 (de) Architechtur für Software-Definierten Interconnect-Switch
DE112017005002T5 (de) Verbindungsphysikalischer schichtschnittstellenadapter
DE112016004300T5 (de) Verfahren, gerät und system zum zuweisen von cache unter verwendung einer verkehrsklasse
DE112017006523T5 (de) Retimer mit kurzer latenzzeit
DE102018005753A1 (de) Serdes link training
DE112018002469T5 (de) Alternative Protokollaushandlung in einer Hochleistungskopplungsstruktur
DE102018007025A1 (de) System, Verfahren und Einrichtung zur SRIS-Modus-Auswahl für PCIe
DE112018007637T5 (de) Fehlermeldung in Verbindungsverlängerungsvorrichtungen
DE112018001088T5 (de) Anwendung von framing-regeln für eine hochgeschwindigkeitsdatenverbindung
DE102020101958A1 (de) Dynamisches spurzugriffswechseln zwischen pcie-wurzelräumen
DE112017004963T5 (de) Spannunsgmodulierte steuer-lane

Legal Events

Date Code Title Description
R081 Change of applicant/patentee

Owner name: INTEL CORPORATION, SANTA CLARA, US

Free format text: FORMER OWNER: INTEL CORPORATION, SANTA CLARA, CALIF., US

R082 Change of representative

Representative=s name: SAMSON & PARTNER PATENTANWAELTE MBB, DE

R012 Request for examination validly filed