DE102020130534A1 - System, Vorrichtung und Verfahren zum persistenten Umgehen mit Speicheranforderungen in einem System - Google Patents

System, Vorrichtung und Verfahren zum persistenten Umgehen mit Speicheranforderungen in einem System Download PDF

Info

Publication number
DE102020130534A1
DE102020130534A1 DE102020130534.6A DE102020130534A DE102020130534A1 DE 102020130534 A1 DE102020130534 A1 DE 102020130534A1 DE 102020130534 A DE102020130534 A DE 102020130534A DE 102020130534 A1 DE102020130534 A1 DE 102020130534A1
Authority
DE
Germany
Prior art keywords
request
queue
persistent
requests
switch
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
DE102020130534.6A
Other languages
English (en)
Inventor
Francesc Guim Bernat
Karthik Kumar
Donald Faw
Thomas Willhalm
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 DE102020130534A1 publication Critical patent/DE102020130534A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4022Coupling between buses using switching circuits, e.g. switching matrix, connection or expansion network
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/30Means for acting in the event of power-supply failure or interruption, e.g. power-supply fluctuations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Mathematical Physics (AREA)
  • Computer Hardware Design (AREA)
  • Power Sources (AREA)
  • Communication Control (AREA)

Abstract

Bei einer Ausführungsform umfasst eine Vorrichtung Folgendes: eine erste Warteschlange zum Speichern von Anforderungen, von denen garantiert wird, dass sie an einen persistenten Speicher abgeliefert werden; eine zweite Warteschlange zum Speichern von Anforderungen, von denen nicht garantiert wird, dass sie an den persistenten Speicher abgeliefert werden; eine Steuerschaltung zum Empfangen der Anforderungen und zum Leiten der Anforderungen zu der ersten Warteschlange oder der zweiten Warteschlange; und eine mit der ersten Warteschlange gekoppelte Ausgangsschaltung zum Abliefern der in der ersten Warteschlange gespeicherten Anforderungen an den persistenten Speicher, selbst wenn ein Stromausfall auftritt. Es werden andere Ausführungsformen beschrieben und beansprucht.

Description

  • Technisches Gebiet
  • Ausführungsformen betreffen die Interaktion mit einem persistenten Speicher.
  • Hintergrund
  • Eine neue Speichertechnologie ist ein persistentes Speichermodul, das mit dynamischem Direktzugriffsspeicher interagieren kann, um einen viel größeren Systemspeicher zu präsentieren. Mit einem Speichersubsystem, das persistenten Speicher umfasst, erfolgt eine Zusammenlegung von Platte und Speicher, wobei eine dauerhafte Kopie von Daten dieselbe wie eine Arbeitskopie der Daten sein kann. Obwohl dies vorteilhaft ist, besteht dahingehend ein Problem, dass Kohärenzprobleme resultieren können, da ein Stromausfall auftreten kann, bevor aktualisierte Daten den persistenten Speicher erreichen, insbesondere in einem datenzentralen Kontext. Der Grund dafür besteht darin, dass Prozessor-Caches und Speicher-Controllerwarteschlangen flüchtig sind und bei einem Stromausfall Daten verlieren. In einem solchen Szenario stimmt die dauerhafte Kopie der Daten im persistenten Speicher möglicherweise nicht mit einem neusten Wert vom Standpunkt einer Anwendung aus gesehen überein, was zu einer Unstimmigkeit führt. Dieses Problem wird insbesondere verschlimmert, wenn Prozessor und persistenter Speicher entfernt voneinander angeordnet sind. Obwohl einige Systeme Batteriestrom bereitstellen, um mit Stromausfällen zurechtzukommen, stellen nicht alle Komponenten in einem Pfad vom Prozessor zu persistentem Speicher solchen Schutz bereit. Und Verwaltung dieser Unstimmigkeit über Software erhöht Komplexität und vergrößert Latenz.
  • Figurenliste
    • 1 ist eine Blockdarstellung eines Systems gemäß einer Ausführungsform.
    • 2 ist eine Blockdarstellung eines Switch gemäß einer Ausführungsform der vorliegenden Erfindung.
    • 3 ist ein Flussdiagramm eines Verfahrens gemäß einer Ausführungsform der vorliegenden Erfindung.
    • 4 ist ein Flussdiagramm eines Verfahrens gemäß einer anderen Ausführungsform der vorliegenden Erfindung.
    • 5 ist ein Flussdiagramm eines Verfahrens gemäß noch einer anderen Ausführungsform der vorliegenden Erfindung.
    • 6 ist eine Blockdarstellung eines Systems gemäß einer anderen Ausführungsform der vorliegenden Erfindung.
    • 7 ist eine Blockdarstellung einer Ausführungsform eines SoC-Entwurfs gemäß einer Ausführungsform.
    • 8 ist eine Blockdarstellung eines Systems gemäß einer anderen Ausführungsform der vorliegenden Erfindung.
  • Ausführliche Beschreibung
  • Bei verschiedenen Ausführungsformen können eine oder mehrere Vorrichtungen auf einem Pfad zwischen einem Prozessor und einem persistenten Speicher dafür ausgelegt werden, stromsichere Domänen bereitzustellen, so dass garantiert werden kann, dass Persistenz von Datenanforderungen, typischerweise Schreibanforderungen an den persistenten Speicher, auftreten und abgeschlossen werden, selbst wenn während des Umgangs mit der Schreibanforderung von dem Prozessor an den persistenten Speicher ein Stromausfall auftritt.
  • Obwohl Ausführungsformen auf verschiedene Vorrichtungen und Interconnects auf dem Pfad zwischen Prozessor und persistentem Speicher anwendbar sind, können bei einer Implementierung Interconnects und ein mit diesen Interconnects gekoppelter Switch gemäß einer CXL-Spezifikation (Compute Express Link), wie etwa der Spezifikation CXL 1.1 oder beliebige zukünftige Versionen, Modifikationen, Varianten oder Alternativen zu einer CXL-Spezifikation sein. Während eine hier beschriebene beispielhafte Ausführungsform in Verbindung mit auf CXL basierender Technologie steht, können ferner Ausführungsformen in anderen kohärenten Interconnect-Technologien verwendet werden, wie etwa einem IBM-XBus-Protokoll, einem Nvidia-NVLink-Protokoll, einem AMD-Infinity-Fabric-Protokoll, einem CCIX-Protokoll (Cache Coherent Interconnect for Accelerators) oder der OpenCAPI (Coherent Accelerator Processor Interface).
  • Bei Ausführungsformen kann ein Cache-kohärenter persistenter Speicher realisiert werden, während Funktionalität der Art ADR (asynchrones DRAM-Auffrischen) über ein auf CXL basierendes Netzwerk geboten wird. Folglich können RDMA-Schreiboperationen (Remote Direct Memory Access) dergestalt auftreten, dass garantiert werden kann, dass diese Operationen erfolgreich abgeschlossen werden, selbst wenn während dieses Vorgangs ein Stromausfall auftritt. Somit können Anwendungen Rückmeldung von einem entfernten Switch/Link erhalten, um über Festlegung auf eine stromsichere Domäne zu informieren, um sich in einem stimmigen Zustand zu befinden. Ein solcher Benutzungsfall ist von Datenbanken, die RDMA und physischen Speicher wirksam nutzen, wobei transaktionale Aktualisierungen und Änderungen auftreten können. Diese Aktualisierungsoperationen können ohne explizites Anwendungs-verwaltetes Loggen oder herkömmliche auf TCP-IP (Transmit Control Protocol-Internet Protocol) basierende Datenablieferung auf dem gesamten Weg zu entferntem physischen Speicher und Rückweg-Bestätigungen erfolgen, um somit Komplexität und Latenz zu verringern.
  • Bei Ausführungsformen können bestimmte Interconnects, die CXL-Links umfassen, mit mehreren virtuellen Kanälen versehen werden, die dafür bestimmt sind, zum Einteilen von Speicheranforderungen verwendet zu werden, die verschiedene Ebenen von Persistenzanforderungen aufweisen. Bei einer Ausführungsform können drei VC (virtuelle Kanäle) bereitgestellt werden, jeweils für Anforderungen einer gegebenen Priorität. Natürlich können bei anderen Ausführungsformen mehr oder weniger VC vorliegen. Anforderungen hoher Priorität können sobald wie möglich in eine persistente Domäne verlagert werden, während Anforderungen niedriger Priorität darauf warten können, in persistenten Speicher verlagert zu werden. Und Anforderungen mittlerer Priorität können dazwischen fallen, mit einem Verhalten, das auf der Basis einer gegebenen Richtlinienimplementierung gesteuert wird. Man beachte, dass Prioritäten für Speicherbereiche verschieden sein können (dies verhindert auch Probleme oder strikte Protokollanordnung). Daher können verschiedene Speicherbereiche auf verschiedene Prioritäten abgebildet werden.
  • Um diese auf Priorität basierende Handhabung zu realisieren, kann ein Switch gemäß einer Ausführungsform Elemente zur Implementierung des auf Priorität basierenden Persistenzschemas umfassen. Diese Elemente umfassen bei einer Ausführungsform Folgendes:
    • (1) mindestens einen Puffer, der die Menge von Anforderungen speichert, von denen garantiert werden kann, dass sie im Fall eines Stromausfalls in persistenten Speicher ausgeräumt werden;
    • (2) einen oder mehrere Puffer, die anstehende Anforderungen speichern, die noch nicht in den persistenten Puffer verlagert wurden; und (3) einen Scheduler, der über die nicht garantierten Puffer zum persistenten garantierten Puffer und/oder zum persistenten Speicher arbitriert.
  • Nunmehr mit Bezug auf 1 ist eine Blockdarstellung eines Systems gemäß einer Ausführungsform gezeigt. Wie gezeigt, ist das System 100 eine Netzwerk-Datenverarbeitungsumgebung, in der Datenverarbeitungsplattformen über dazwischentretende Elemente an ein Ziel-Speicherungssystem, wie etwa einen persistenten Speicher, angeschlossen sind. Speziell zeigt 1 eine Datenzentralenumgebung, in der ein Agent 110, wie etwa eine Software-Entität auf einer gegebenen Datenverarbeitungsplattform, Anforderungen über einen Adapter 120 und Switch 130 zu einem Zielmedium 140 (nämlich einem persistenten Speicher) übermittelt. Der Adapter 120 kann die Form einer beliebigen Art von Adapterschaltung annehmen und kann in einer gegebenen Plattform enthalten sein, um als Schnittstelle zu anderen Agenten, darunter der Switch 130, zu wirken. Obwohl Ausführungsformen in dieser Hinsicht nicht beschränkt sind, kann bei einer Implementierung der Adapter 120 als ein CXL-Adapter und der Switch 130 als in CXL-Switch implementiert werden. In einigen Fällen kann der Switch 130 direkt zwischen mehreren Plattformen, z. B. Servern, und einem aus mehreren persistenten Speichern, darunter das Zielmedium 140, gebildeten gepoolten Speicher angeschlossen sein.
  • Mit vorliegenden Ausführungsformen kann der Agent 110 Speicherschreibanforderungen, die eine gegebene Prioritätsebene aufweisen, an das Zielmedium 140 ausgeben. Bei einer Ausführungsform kann diese Prioritätsebene auf einer SLA (Dienstniveauvereinbarung) oder einer anderen Grundlage basieren. Obwohl diese Priorität eine Prioritätsebene für die Anforderung und ihre Handhabung repräsentieren kann, kann in einigen Fällen eine getrennte Persistenzpriorität in der Anforderung bereitgestellt werden, um eine Prioritätsebene mit Bezug auf ein Persistenzattribut anzugeben. Das heißt, wenn eine Schreibanforderung von dem Agenten 110 ausgegeben wird, kann es einige Zeit dauern, bevor Daten der Anforderung tatsächlich sicher persistent in dem Zielmedium 140 gespeichert sind. In dieser dazwischentretenden nicht persistenten Periode ist es möglich, dass z. B. in dem Adapter 120 und/oder in dem Switch 130 der Strom ausfällt, so dass die Anforderung nicht erfolgreich abgeschlossen wird.
  • Bei Ausführungsformen kann auf eine prioritätsbewusste Weise mit Bezug auf ein Persistenzattribut mit durch den Agenten 110 ausgegebenen Anforderungen umgegangen werden. Zu diesem Zweck kann priorisierter Umgang mit Anforderungen hoher Priorität sowohl im Adapter 120 als auch im Switch 130 auftreten, um Abschluss bestimmter Anforderungen von einem Persistenzstandpunkt aus gesehen zu garantieren.
  • Wie dargestellt, kann der Agent 110 mehrere Anforderungen ausgeben, nämlich Schreibanforderungen zum Schreiben von ersten Daten (A einer ersten Anforderung) und von zweiten Daten (B einer zweiten Anforderung). Man beachte, dass, obwohl die zweite Anforderung für die Daten B nach der ersten Anforderung für die Daten A ausgegeben wird, diese zweite Anforderung eine höhere Persistenzpriorität als die erste Anforderung aufweist.
  • Wenn diese Anforderungen in dem Adapter 120 empfangen werden, kann dementsprechend verschieden mit ihnen umgegangen werden. Zum Beispiel kann jede dieser Anforderungen, die verschiedene Persistenzprioritäten aufweisen, in verschiedenen von mehreren Warteschlangen 1220-n gespeichert werden, die jeweils einer bestimmten Prioritätsebene zugeordnet sein können. Diese Anforderungen werden wiederum von dem Adapter 120 zu dem Switch 130 gesendet.
  • Man beachte, dass in der Veranschaulichung angenommen wird, dass es genug Bandbreite auf einem Interconnect, das den Adapter 120 mit dem Switch 130 koppelt, gibt, so dass die Anforderungen in der richtigen Reihenfolge losgesendet werden können. Auf der in 1 dargestellten hohen Ebene kann dieses Interconnect mit verschiedenen virtuellen Kanälen implementiert werden. Speziell ist gezeigt, dass das Interconnect drei virtuelle Kanäle 1250-2 umfasst, die jeweils einer bestimmten Prioritätsebene zugeordnet sind, so dass die mehreren virtuellen Kanäle verwendet werden können, um Speicheranforderungen einzuteilen, die verschiedene Ebenen von Persistenzanforderungen aufweisen.
  • Bei einer CXL-Implementierung kann es mehrere Mengen von VC geben, die jeweils einer gegebenen Art von CXL-Verkehr zugeordnet sind (z. B. CXL.cache, CXL.io und CXL.mem). Allgemeiner können Ausführungsformen in Interconnects, wie etwa in 1, verwendet werden, die betreibbar sein können, um mehrere Protokolle und Übermittlung von Daten und Nachrichten über mehrere Interconnect-Protokolle, darunter ein CXL-Protokoll wie hier beschrieben, zu unterstützen. Zum Beispiel kann das Interconnect verschiedene Interconnect-Protokolle unterstützen, darunter ein nicht kohärentes Interconnect-Protokoll, ein kohärentes Interconnect-Protokoll und ein Speicher-Interconnect-Protokoll. Nicht einschränkende Beispiele für unterstützte Interconnect-Protokolle wären PCI, PCIe, USB, IDI, IOSF, SMI, SMI3, SATA, CXL.io, CXL.cache und CXL.mem, und/oder dergleichen.
  • Bei einer Ausführungsform werden Anforderungen, die zu demselben virtuellen Kanal gehören, in ihrer Reihenfolge gehalten, um strikte Anordnungsregeln von Speicherprotokollen beizubehalten. Jeder virtuelle Kanal hat eine gegebene Priorität. Falls die virtuellen Kanäle im selben physischen Kanal implementiert werden, kann ein Scheduler auf der Absenderseite Priorität für Anforderungen bereitstellen. Als ein Beispiel kann Priorität als für jeden der virtuellen Kanäle benutzter Prozentsatz von Bandbreite definiert werden.
  • Obwohl 1 einen Betrieb zeigt, bei dem die erste Anforderung mit niedriger Priorität über das Interconnect vor der zweiten Anforderung mit höherer Priorität zu dem Switch 130 gesendet wird, versteht sich, dass in anderen Fällen, insbesondere, wenn Bandbreite begrenzt sein kann, die Anforderung höherer Priorität für die Daten B vor der Anforderung für die Daten A niedrigerer Priorität gesendet werden kann. Wie gezeigt, verwendet somit der Adapter 120 verschiedene Warteschlangen 1220-2 für die verschiedenen Anforderungen und sendet diese verschiedenen Anforderungen über verschiedene virtuelle Kanäle 1250-2. Im Fall von hoher Last können Anforderungen der Hochprioritäts-Persistenzwarteschlange 1220 mehr Ressourcen und Bandbreite zum Switch 130 benutzen (mehr Ressourcen dem entsprechenden VC zuteilen).
  • Wie ferner in 1 dargestellt ist, wird in dem Switch 130 verschieden mit diesen Anforderungen, die verschiedene Prioritäten aufweisen, umgegangen. Der Switch 130 kann entsprechende Warteschlangen aufweisen, nämlich Warteschlangen 1320-2, die jeweils einer bestimmten Priorität zugeordnet sind. Mit dem unterschiedlichen Umgang mit Anforderungen verschiedener Prioritäten beachte man, dass eine Bestätigung für die zweite Anforderung von Daten B zu dem Agenten 110 zurückgesendet werden kann, sobald die Anforderung im Switch 130 empfangen und in dem entsprechenden Hochprioritätspuffer 1320 gespeichert wird. Man beachte, dass, obwohl die tatsächliche Speicherung der Daten B noch nicht abgeschlossen wurde, diese Bestätigung eine Angabe dieses späteren Abschlusses ist. Dies ist so, da der Switch 130 dafür ausgelegt ist, zu garantieren, dass er ausreichend Energieverfügbarkeit hat, um sicherzustellen, dass alle in der Hochprioritätswarteschlange 1320 gespeicherten Anforderungen garantiert an die Zielmedien 140 abgeschlossen werden, selbst wenn ein Stromausfall in dem Switch 130 auftritt. Und mit dieser frühen Übermittlung der Bestätigung zurück an den Anforderer wird die verringerte Latenz von Operationen im Anforderer realisiert. Zum Beispiel nehme man eine Datenabhängigkeit an, wobei eine erste Schreibanforderung für erste Daten abgeschlossen werden soll, bevor eine Leseanforderung für diese ersten Daten freigegeben wird. Mittels der frühen Bestätigung kann die zweite Schreibanforderung früher voranschreiten, wodurch die Latenz reduziert wird.
  • Bei einer Ausführungsform kann diese Garantie des Versenkens von Anforderungen in dem Hochprioritätspuffer 1320 in den Zielmedien 140 auf der Menge an ADR-Energie, die dieser Warteschlange gewidmet ist, und der aktuellen VC-Hochprioritätsauslastung für die Zielmedien 140 basieren (so dass im Fall fehlenden Stroms auf dem Switch 130 genug Strom bereitgestellt wird, um die Anforderungen auf dieser Warteschlange in die Zielmedien 140 auszuräumen). Das Gleiche gilt jedoch nicht für die erste Anforderung für die Daten A niedrigerer Priorität, da es möglich ist, dass bei einem Stromausfall diese Anforderung in die Zielmedien 140 nicht erfolgreich abgeschlossen wird. In normalen Fällen werden diese Anforderungen jedoch auch voranschreiten und in den Zielmedien 140 abgeschlossen. Folglich werden beide Anforderungen in den Zielmedien 140 abgeschlossen. Als Reaktion auf erfolgreichen Abschluss können die Zielmedien 140 entsprechende Bestätigungen zu dem Switch 130 zurücksenden. Da der Switch 130 zuvor eine Bestätigung für die zweite Anforderung für die Daten B bei ihrer Vergabe an Warteschlange 1320 gesendet hat, wird die Bestätigung für diese Anforderung einfach abgeworfen. Stattdessen wird die Bestätigung für die erste Anforderung an diesem späteren Punkt zurückgesendet, wie in 1 gezeigt.
  • Der Switch 130 kann interne Scheduler-Schaltkreise umfassen, um Anforderungen umzuordnen, dergestalt, dass die zweite Anforderung höherer Priorität vor der ersten Anforderung niedrigerer Priorität von dem Switch 130 an die Zielmedien 140 ausgegeben wird. Es versteht sich, dass, obwohl es bei der Ausführungsform von 1 auf dieser hohen Ebene gezeigt ist, viele Varianten und Alternativen möglich sind. Obwohl drei Warteschlangen und VCs gezeigt sind, können zum Beispiel N verschiedene VCs definiert werden. Der Bestätigungsmechanismus kann von der Menge an jedem VC zugeteilter Bandbreite und der jeder Art von Persistenz-Prioritätsklasse zugeteilter ADR-Energie abhängen. Außerdem ist es möglich, dass sich die Persistenzdomäne weiter zu dem Adapter 120 erstreckt, so dass selbst im Fall eines Stromausfalls, während sich bestimmte Anforderungen in dem Adapter 120 befinden, garantiert werden kann, dass diese Anforderungen zu den Zielmedien 140 durchfließen. Bei einer solchen Implementierung können Bestätigungen direkt zu dem Agenten 110 zurückgesendet werden, wenn diese Anforderungen in eine persistente Domäne innerhalb des Adapters 120 gelegt werden.
  • Nunmehr mit Bezug auf 2 ist eine Blockdarstellung eines Switch gemäß einer Ausführungsform der vorliegenden Erfindung gezeigt. Wie in 2 gezeigt, ist der Switch 200 eine Hardwareschaltung, die bei verschiedenen Implementierungen als ein Switching- oder Routing-Mechanismus wirkt, und der Switch 200 koppelt Entitäten in einem Datenzentrum oder in einer anderen Datenverarbeitungsumgebung. Zum Beispiel kann der Switch 200 zwischen einen Adapter und ein Speicherungssystem geschaltet sein, das z. B. als persistenter Speicher implementiert ist. Natürlich kann der Switch 200 zwischen viele andere Arten von Entitäten geschaltet sein.
  • Auf jeden Fall ist in der in 2 gezeigten hohen Ebene der Switch 200 dafür ausgelegt, ankommende Anforderungen, z. B. Schreibanforderungen von verschiedenen Upstream-Agenten, die an einen persistenten Downstream-Speicher zu richten sind, zu empfangen. Wie gezeigt, werden die ankommenden Anforderungen der Steuerschaltung 210 zugeführt. Die Steuerschaltung 210 kann als Hardwareschaltung implementiert werden, wie etwa als Mikrocontroller, Prozessorkern oder anderer Controller, der Anweisungen ausführt, die in einem nichttransitorischen Speicherungsmedium gespeichert sind. Es ist ersichtlich, dass ankommende Anforderungen einem Scheduler 214 und einem Systemadressendecodierer 212 zugeführt werden. Bei Ausführungsformen wird der Systemadressendecodierer 212 benutzt, um zu validieren, dass die Speicheranforderungen, die auf eine bestimmte Warteschlange abzielen (was sich durch den virtuellen Speicherkanal bedingt), auf einen der Adressenräume abzielen, die für diese virtuelle Warteschlange registriert sind. Falls es eine Nichtübereinstimmung gibt, wird eine Fehlernachricht zum Absender zurückgesendet. Bei einigen Implementierungen kann diese Fehlernachricht ein Software-Interrupt oder einen Maschinenfehler auslösen.
  • Der Systemadressendecodierer 212 kann, wenn er freigegeben ist, dafür ausgelegt werden, zu bestätigen, dass eine Adresse einer ankommenden Anforderung an einen zulässigen Adressenraum gerichtet ist, z. B. auf der Basis des Anforderers, des Anforderungstyps oder so weiter. Zum Beispiel kann der Systemadressendecodierer 212 eine Abbildung zum Identifizieren zulässiger Adressenräume eines Anforderers umfassen. Man beachte, dass Prioritäten für Speicherbereiche unterschiedlich sein können (dies verhindert auch Probleme oder strikte Protokollanordnung). Daher werden verschiedene Speicherbereiche auf verschiedene Prioritäten abgebildet. Bei einigen Implementierungen kann 212 eine optionale Komponente sein.
  • Der Scheduler 214 empfängt ankommende Anforderungen und kann diese entweder für eine persistente Warteschlange 220 oder eine Anstehende-Anforderung-Wartschlange 230 einteilen. Bei vorliegenden Ausführungsformen können Anforderungen hoher Priorität an die persistente Warteschlange 220 gerichtet werden. Die persistente Warteschlange 220 kann dafür ausgelegt sein, eine Größe dergestalt aufzuweisen, dass garantiert ist, dass selbst im Fall eines Stromausfalls alle ihre gespeicherten Anforderungen in den persistenten Speicher hinausgeschrieben werden können. Im Gegensatz dazu besteht bei der Anstehende-Anforderung-Warteschlange 230 keine solche Garantie. Dementsprechend ist es bei einem Stromausfall möglich und sogar wahrscheinlich, dass einige oder alle in der Anstehende-Anforderung-Warteschlange 230 gespeicherten Anforderungen nicht erfolgreich in einen persistenten Speicher abgeschlossen werden.
  • Obwohl in der hohen Ebene von 2 einzelne Warteschlangen 220, 230 gezeigt sind, versteht sich, dass es bei einigen Implementierungen für jeden mehrerer virtueller Kanäle (und möglicherweise für jede verschiedener Verkehrsarten) getrennte Warteschlangen persistenter und anstehender Anforderungen geben kann. Ferner versteht sich, dass es verschiedene physische Warteschlangen geben kann. Oder, um eine flexiblere Lösung zu implementieren, kann ein einziger Puffer alle verschiedenen virtuellen Warteschlangen speichern. Man beachte, dass in diesem Fall verschiedenen virtuellen Warteschlangen verschiedene Kapazität zugeteilt werden kann. Wenn jede der Warteschlangen registriert wird, kommt die Definition der Warteschlange zusammen mit der dieser Warteschlange zugeordneten Priorität. Bei einer Ausführungsform kann diese Priorität durch den Prozentsatz des Durchsatzes definiert werden, den diese Warteschlange mit Bezug auf die anderen Warteschlangen zugeteilt bekommt. Außerdem kann jede Warteschlange ferner mit einer Liste von Speicherbereichen, die dieser Warteschlange zugeordnet sind, definiert werden, um an den verschiedenen bei dieser Warteschlange geschehenden Schreibvorgängen Prüfungen zu ermöglichen.
  • Um die Garantie für in der persistenten Warteschlange 220 gespeicherte Anforderungen zu ermöglichen, umfasst der Switch 200 eine Batterie 250, die ausreichend Ladung aufweisen kann, so dass bei einem Stromausfall mindestens einige Schaltkreise des Switch 200, die in einer persistenten Stromdomäne anwesend sind, eingeschaltet bleiben. Zu diesem Zweck kann die Batterie 250 eine persistente Stromdomäne, die mindestens eine Ausgangsschaltung 240 und die persistente Anforderungswarteschlange 220 umfasst, mit Strom versorgen, so dass bei einem Stromausfall die Ausgangsschaltung 240 bewirken kann, dass alle in der persistenten Warteschlange 220 gespeicherten Anforderungen zu dem persistenten Speicher gesendet werden.
  • Im Normalbetrieb kann die Ausgangsschaltung 240 dafür ausgelegt sein, Anforderungen zu dem persistenten Speicher zu leiten, der als ein gepoolter Speicher implementiert sein kann. Außerdem kann die Ausgangsschaltung 240 dafür ausgelegt sein, Arbitrierung zwischen Prioritätsanforderungen und Nicht-Prioritätsanforderungen durchzuführen, so dass Fairness beim Scheduling realisiert wird. Während des Normalbetriebs können somit Anforderungen sowohl höherer Priorität als auch niedrigerer Priorität weiter zum persistenten Speicher gesendet werden. Sobald der gepoolte Speicher bestätigt, dass eine Anforderung in einer persistenten Domäne gespeichert wurde, entfernt die Ausgangsschaltung 240 die Anforderung aus der Warteschlange und sendet eine Betätigung zu dem Urheber der Anforderung (d. h. der spezifischen Plattform) zurück, wenn zuvor die Bestätigung nicht zurückgegeben wurde (z. B. im Fall einer Anforderung hoher Priorität). Man beachte, dass ein Prozessor (z. B. eine CPU) der Plattform dann dem Anforderer (z. B. einem Softwarestapel) antwortet, dass die Anforderung es zur Persistenz gebracht hat.
  • Als Letztes kann wie in 2 gezeigt der Switch 200 ferner eine Eingangsschaltung 260 umfassen, um z. B. als Reaktion auf eine Leseanforderung Daten von persistentem Speicher zu empfangen. Obwohl es in 2 auf dieser hohen Ebene gezeigt ist, versteht sich, dass zusätzliche Schaltkreise anwesend sein können, darunter Schaltkreise zum Sicherstellen, dass solche Leseanforderungen zu einem Anforderer zurückgesendet werden.
  • Bei Ausführungsformen können ein Switch, ein Adapter und/oder andere Komponenten mit einer persistenten Domäne versehen werden, während Mechanismen bereitgestellt werden, um verschiedene Dienstgüterichtlinien zu implementieren, die eine Skalierung einer Lösung auf mehrere Plattformen erlauben. Solche Techniken können zur Ressourcendisaggregation und zum Speicherpooling unter Verwendung von Switches verwendet werden, wie hier beschrieben. Auf diese Weise können sich mehrere Plattformen Warteschlangen im Switch teilen, so dass Richtlinien holistisch auf Systemebene implementiert werden.
  • Nunmehr mit Bezug auf 3 ist ein Flussdiagramm eines Verfahrens gemäß einer Ausführungsform der vorliegenden Erfindung gezeigt. Wie in 3 gezeigt, ist das Verfahren 300 ein Verfahren zum Umgehen mit ankommenden Anforderungen, die in einem Switch empfangen werden. Dementsprechend kann das Verfahren 300 durch Hardwareschaltkreise, Firmware, Software und/oder Kombinationen davon ausgeführt werden.
  • Das Verfahren 300 beginnt wie dargestellt mit dem Empfangen einer Anforderung im Switch (Block 310). Man nehme an, dass diese Anforderung eine Schreibanforderung zum Schreiben von Daten in einen persistenten Speicher ist, der an den Switch angeschlossen ist. Außerdem nehme man an, dass die ankommende Schreibanforderung eine bestimmte Prioritätsebene aufweist, z. B. gemäß einer SLA, der ein Anforderer zugeordnet ist. In einigen Fällen kann auch eine weitere persistente Prioritätsebene bereitgestellt werden, um Persistenzpriorität weiter zu definieren. Als Nächstes kann in Block 320 eine Priorität der Anforderung identifiziert werden. Zum Beispiel kann eine Schreibanforderung Metadaten umfassen, die ein Prioritätsfeld zur Prioritätsebenenangabe umfassen.
  • Unter weiterer Bezugnahme auf 3 kann als Nächstes bestimmt werden, ob die Anforderung an einen zulässigen Adressenraum für eine Zielwarteschlange gerichtet ist (Raute 330). Zum Beispiel kann ein Switch wie oben besprochen mindestens 2 Warteschlangen aufweisen. Es kann wiederum eine Abbildung geben, um anzugeben, ob es einer Anforderung an einen gegebenen Adressenraum gestattet ist, eine bestimmte dieser Warteschlangen (z. B. die persistente Warteschlange) anzuvisieren. Wenn nicht und die Bestimmung in der Raute 330 negativ ist, wird die Steuerung an Block 340 abgegeben, in dem eine Fehlernachricht zur Anforderung gesendet werden kann, und die Anforderung kann abgeworfen werden.
  • Wenn dagegen bestimmt wird, dass die Anforderung für einen zulässigen Adressenraum ist, wird die Steuerung an die Raute 350 abgegeben, um zu bestimmen, ob die Priorität eine Schwellenpriorität überschreitet. Wenn nicht, wird in Block 360 die Anforderung zu einer Anstehende-Anforderung-Warteschlange des Switch gesendet, und kann dort gespeichert werden. Andernfalls wird die Anforderung zu einer persistenten Warteschlang des Switch gesendet und dort gespeichert. Als Letztes kann in Block 380 eine Bestätigung des Abschlusses dieser Anforderung zum Anforderer gesendet werden. Das heißt, obwohl die Daten noch nicht in den persistenten Speicher geschrieben wurden, wird mittels des Persistenzattributs des Switch garantiert, dass diese Anforderung, wenn sie in die persistente Warteschlange geschrieben wird, in den persistenten Speicher geschrieben wird, selbst wenn ein Stromausfall auftreten sollte. Es versteht sich, dass, obwohl es bei der Ausführungsform von 3 auf dieser hohen Ebene gezeigt ist, viele Varianten und Alternativen möglich sind.
  • Nunmehr mit Bezug auf 4 ist ein Flussdiagramm eines Verfahrens gemäß einer anderen Ausführungsform der vorliegenden Erfindung gezeigt. Wie in 4 gezeigt, ist das Verfahren 400 ein Verfahren zum Arbitrieren des Zugriffs auf eine persistente Warteschlange in einem Switch, z. B. durch einen Scheduler oder andere Schaltkreise des Switch. Dementsprechend kann das Verfahren 400 durch Hardwareschaltkreise, Firmware, Software und/oder Kombinationen davon ausgeführt werden.
  • Wie gezeigt kann in der Raute 410 bestimmt werden, ob es ausreichend Platz in der persistenten Warteschlange gibt. Sollte zum Beispiel der Belegungswert in der persistenten Warteschlange unter eine gegebene Schwelle (z. B. irgendwo um 50%) fallen, kann bestimmt werden, dass es ausreichend Platz gibt. Wenn dem so ist, wird die Steuerung an Block 420 abgegeben, in dem eine Anforderung höchster Priorität in der Anstehende-Anforderung-Warteschlange identifiziert werden kann. Wenn es mehrere solche Anforderungen der höchsten Prioritätsebene gibt, kann eine älteste Anforderung identifiziert werden. Als Nächstes kann in Block 430 diese identifizierte Anforderung in die persistente Warteschlange verlagert werden. Dementsprechend ist nun an diesem Punkt garantiert, dass diese Anforderung erfolgreich abgeschlossen wird, selbst wenn ein Stromausfall auftreten sollte. Wie weiter gezeigt, kann gegebenenfalls der Switch eine Bestätigung eines Abschlusses für diese Anforderung zu dem Anforderer zurücksenden (Block 440). In anderen Fällen findet diese optionale Anforderung an diesem Punkt jedoch nicht statt und stattdessen wird eine Bestätigung nur dann zum Anforderer zurückgesendet, wenn eine entsprechende Bestätigung für den tatsächlichen Abschluss der Schreibanforderung von dem persistenten Speicher empfangen wird. Es versteht sich, dass, obwohl es bei der Ausführungsform von 4 auf dieser hohen Ebene gezeigt ist, viele Varianten und Alternativen möglich sind.
  • Nunmehr mit Bezug auf 5 ist ein Flussdiagramm eines Verfahrens gemäß einer weiteren Ausführungsform der vorliegenden Erfindung gezeigt. Wie in 5 gezeigt, ist das Verfahren 500 ein Verfahren zum Senden von Anforderungen von einem Switch zu einem Zielmedium, so wie es durch eine Ausgangsschaltung des Switch ausgeführt werden kann. Dementsprechend kann das Verfahren 500 durch Hardwareschaltkreise, Firmware, Software und/oder Kombinationen davon ausgeführt werden. Spezieller ist das Verfahren 500 zum Umgehen mit Anforderungen von einer persistenten Warteschlange gezeigt. Es versteht sich, dass beim Umgehen mit Anforderungen von einer nicht persistenten Warteschlange ähnliche Operationen ausgeführt werden können. Weiterhin versteht sich, dass die Ausgangsschaltung ferner Arbitrierung zwischen Anforderungen von mindestens zwei verschiedenen Warteschlangen durchführen kann. Zum Beispiel kann eine auf Fairness basierende Arbitrierung durchgeführt werden, z. B. gemäß einem gegebenen Kreditprotokoll, dergestalt, dass Anforderungen sowohl höherer Priorität als auch niedrigerer Priorität ausgewählt und zu dem persistenten Speicher gesendet werden können. Wenn ein Kreditmechanismus anwesend ist, können außerdem Kreditrückgaben upstream, z. B. zu einem Verbinder, zurückgesendet werden. Diese Kreditrückgaben können es dem Verbinder wiederum erlauben, zusätzliche Anforderungen eines gegebenen Typs zu senden, wenn er ausreichend Kredit dafür hat.
  • Wie in 5 gezeigt, kann in Block 510 eine Anforderung an der obersten Stelle der persistenten Warteschlange ausgewählt werden. Als Nächstes wird in Block 520 die Anforderung zu dem persistenten Speicher gesendet. Wenn in der Raute 530 bestimmt wird, dass eine Bestätigung von dem persistenten Speicher für diese Anforderung empfangen wird, kann in Block 540 eine Bestätigung der Anforderung zum Anforderer gesendet werden. Man beachte, dass diese Bestätigung nur dann gesendet wird, wenn die Priorität der Anforderung unter einer Schwellenebene liegt. Anders ausgedrückt, muss für eine Anforderung höherer Priorität, die bei Empfang im Switch direkt zu der persistenten Warteschlange gesendet wurde, keine Bestätigung zum Anforderer zurückgesendet werden, da eine Bestätigung zuvor bereits gesendet wurde. Abhängig von der Situation kann somit eine Bestätigung für diese Anforderung, die vom persistenten Speicher empfangen wurde, einfach abgeworfen werden. Als Letztes kann in Block 550 die Anforderung aus der persistenten Warteschlange entfernt werden. Es versteht sich, dass, obwohl es bei der Ausführungsform von 5 auf dieser hohen Ebene gezeigt ist, viele Varianten und Alternativen möglich sind.
  • Nunmehr mit Bezug auf 6 ist eine Blockdarstellung eines Systems gemäß einer anderen Ausführungsform der vorliegenden Erfindung gezeigt. Wie in 6 gezeigt, kann ein System 600 eine beliebige Art von Datenverarbeitungsvorrichtung sein und kann bei einer Ausführungsform ein Serversystem sein. Bei der Ausführungsform von 6 umfasst das System 600 mehrere CPUs 610a,b, die ihrerseits an jeweilige Systemspeicher 620a,b angeschlossen sind, die bei Ausführungsformen als DDR-Speicher (Doppeldatenrate) implementiert werden können. Man beachte, dass die CPUs 610 über ein Interconnect-System 615, wie etwa ein Intel® Ultra Path Interconnect oder eine andere Prozessor-Interconnect-Technologie miteinander gekoppelt sein können.
  • Um es kohärenten Beschleunigervorrichtungen und/oder intelligenten Adaptervorrichtungen zu ermöglichen, sich mittels potentiell mehrerer Kommunikationsprotokolle mit den CPUs 610 zu koppeln, können mehrere Interconnects 630al-b2 anwesend sein. Bei einer Ausführungsform kann jedes Interconnect 630 eine gegebene Instanz eines CXL-Busses sein, um das Auftreten von RDMA-Kommunikation auf optimierte Weise wie hier beschrieben zu ermöglichen.
  • Bei der gezeigten Ausführungsform sind jeweilige CPUs 610 an entsprechende FPGAs (Field Programmable Gate Arrays)/Beschleunigervorrichtungen 650a,b (die bei einer Ausführungsform GPUs (Grafikverarbeitungseinheiten) umfassen können) gekoppelt. Zusätzlich sind die CPUs 610 auch mit intelligenten NIC-Vorrichtungen 660a,b gekoppelt. Die intelligenten NIC-Vorrichtungen 650a,b sind ihrerseits mit Switches 680a,b (z. B. CXL-Switches gemäß einer Ausführungsform) gekoppelt, die ihrerseits mit einem gepoolten Speicher 690a,b, wie etwa einem persistenten Speicher, gekoppelt sind. Mit einer Anordnung wie in 6 können die CPUs 610 an den gepoolten Speicher 690 gerichtete Schreibanforderungen ausgeben. Anforderungen hoher Priorität können mittels Routens solcher Anforderungen durch persistente Domänen von mindestens den Switches 680 (und möglicherweise den intelligenten NIC-Vorrichtungen 660) mit niedrigerer Latenz abgeschlossen werden, so dass diese Anforderungen höherer Priorität selbst im Fall von Stromausfall in diesen Komponenten erfolgreich in den gepoolten Speicher 690 abgeschlossen werden können.
  • Nunmehr mit Bezug auf 7 ist eine Ausführungsform eines SoC-Entwurfs gemäß einer Ausführungsform abgebildet. Als ein spezifisches Anschauungsbeispiel kann das SoC 700 für Einfügung in eine beliebige Art von Datenverarbeitungsvorrichtung, von tragbaren Vorrichtungen bis zu einem Serversystem, ausgelegt sein. Das SoC 700 umfasst hier 2 Kerne 706 und 707. Die Kerne 706 und 707 können einer Anweisungssatzarchitektur genügen, wie etwa ein auf Intel® Architecture Core™ basierender Prozessor, ein AMD-Prozessor (Advanced Micro Devices, Inc.), ein auf MIPS basierender Prozessor, ein auf ARM basierender Prozessorentwurf oder ein Kunde davon, sowie ihre Lizenznehmer oder Verwender. Die Kerne 706 und 707 sind mit einem Cache-Controller 708, der der Busschnittstellenschaltung 709 zugeordnet ist, und dem L2-Cache 710 gekoppelt, um über ein Interconnect 712 mit anderen Teilen des Systems 700 zu kommunizieren. Wie ersichtlich, umfasst die Busschnittstelleneinheit 709 eine DMA-Schaltung 711, ausgelegt zum Senden von RDMA-Schreibanforderungen mit einer Angabe hoher Priorität, so dass garantiert werden kann, dass diese Anforderungen abgeschlossen werden, sobald sie eine persistente Domäne einer oder mehrerer dazwischentretender Komponenten auf einem Pfad zu einem persistenten Speicher erreichen, wie hier beschrieben.
  • Das Interconnect 712 stellt Kommunikationskanäle zu den anderen Komponenten bereit, wie etwa einem SIM (Subscriber Identity Module) 730 als Schnittstelle mit einer SIM-Karte, einem Boot-ROM 735 zum Halten von Boot-Code zur Ausführung durch die Kerne 706 und 707 zum Initialisieren und Booten des SoC 700, einem SDRAM-Controller 740 als Schnittstelle mit externem Speicher (z. B. DRAM 860), einem Flash-Controller 745 als Schnittstelle mit nichtflüchtigem Speicher (z. B. Flash 765), einem Peripherie-Controller 750 (z. B. einer eSPI-Schnittstelle) als Schnittstelle mit Peripheriegeräten, einem Videocodec 720 und einer Videoschnittstelle 725 zum Anzeigen und Empfangen von Eingaben (z. B. berührungsbefähigter Eingabe), einer GPU 715 zum Ausführen von grafikbezogenen Berechnungen usw. Zusätzlich zeigt das System Peripheriegeräte zur Kommunikation, wie etwa ein Bluetooth-Modul 770, ein 3G-Modem 775, GPS 780 und WiFi 785. Außerdem ist in dem System eine Stromversorgungssteuerung 755 enthalten. Ferner ist in 7 dargestellt, dass das System 700 zusätzliche Schnittstellen, einschließlich einer MIPI-Schnittstelle 792, z. B. zu einer Anzeige, und/oder eine HDMI-Schnittstelle 795 umfasst, die auch mit derselben oder einer anderen Anzeige gekoppelt sein kann.
  • Nunmehr mit Bezug auf 8 ist eine Blockdarstellung eines Systems gemäß einer anderen Ausführungsform der vorliegenden Erfindung gezeigt. Wie in 8 gezeigt, umfasst das Multiprozessorsystem 800 einen ersten Prozessor 870 und einen zweiten Prozessor 880, die über ein Punkt-zu-Punkt-Interconnect 850 gekoppelt sind. Wie in 8 gezeigt, können jeder der Prozessoren 870 und 880 mehrere Kernprozessoren, einschließlich entsprechender erster und zweiter Prozessorkerne (d. h. Prozessorkerne 874a und 874b und Prozessorkerne 884a und 884b), sein.
  • In der Ausführungsform von 8 umfassen die Prozessoren 870 und 880 ferner Punkt-zu-Punkt-Interconnects 877 und 887, die über Interconnects 842 und 844 (die CXL-Busse sein können) mit den Switches 859 und 860 gekoppelt sind, die persistente Domänen wie hier beschrieben umfassen können. Die Switches 859, 860 sind ihrerseits mit persistenten Speichern 855 und 865 gekoppelt. Auf diese Weise können die Prozessoren 870 und 880 RDMA-Schreibanforderungen mit Prioritätsangaben ausgeben, dergestalt, dass diese Anforderungen selbst im Fall eines Stromausfalls in einer oder mehreren von Komponenten abgeschlossen werden können, wie hier beschrieben.
  • Weiter mit Bezug auf 8 umfasst der erste Prozessor 870 ferner einen MCH (Speichercontroller-Hub) 872 und Punkt-zu-Punkt- bzw. P-P-Schnittstellen 876 und 878. Ähnlich umfasst der zweite Prozessor 880 einen MCH 882 und P-P-Schnittstellen 886 und 888. Wie in 8 gezeigt, koppeln die MCH 872 und 882 die Prozessoren mit jeweiligen Speichern, nämlich einem Speicher 832 und einem Speicher 834, die Teile von Systemspeicher (z. B. DRAM sein können), der lokal an die jeweiligen Prozessoren angeschlossen ist. Der erste Prozessor 870 und der zweite Prozessor 880 können über die P-P-Interconnects 876 bzw. 886 mit einem Chipsatz 890 gekoppelt sein. Wie in 8 gezeigt, umfasst der Chipsatz 890 P-P-Schnittstellen 894 und 898.
  • Ferner umfasst der Chipsatz 890 eine Schnittstelle 892 zum Koppeln des Chipsatzes 890 mit einer Hochleistungs-Grafikengine 838 durch ein P-P-Interconnect 839. Wie in 8 gezeigt, können verschiedene Eingabe-Ausgabe- bzw. E/A-Vorrichtungen 814 mit einem ersten Bus 816 gekoppelt sein, zusammen mit einer Busbrücke 818, die den ersten Bus 816 mit einem zweiten Bus 820 koppelt. Es können verschiedene Vorrichtungen mit dem zweiten Bus 820 gekoppelt sein, darunter zum Beispiel eine Tastatur/Maus 822, Kommunikationsvorrichtungen 826 und eine Datenspeicherungseinheit 828, wie etwa ein Plattenlaufwerk oder eine andere Massenspeicherungsvorrichtung, die bei einer Ausführungsform Code 830 umfassen kann. Ferner kann eine Audio-E/A 824 mit dem zweiten Bus 820 gekoppelt sein.
  • Die folgenden Beispiele betreffen weitere Ausführungsformen.
  • In einem Beispiel umfasst eine Vorrichtung Folgendes: eine erste Warteschlange zum Speichern von Anforderungen, von denen garantiert wird, dass sie an einen persistenten Speicher abgeliefert werden; eine zweite Warteschlange zum Speichern von Anforderungen, von denen nicht garantiert wird, dass sie an den persistenten Speicher abgeliefert werden; eine Steuerschaltung zum Empfangen der Anforderungen und zum Leiten der Anforderungen zu der ersten Warteschlange oder der zweiten Warteschlange mindestens teilweise auf der Basis von Priorität der Anforderungen; und eine mit der ersten Warteschlange gekoppelte Ausgangsschaltung zum Abliefern der in der ersten Warteschlange gespeicherten Anforderungen an den persistenten Speicher, selbst wenn ein Stromausfall auftritt.
  • In einem Beispiel umfasst die Vorrichtung einen zwischen eine Netzwerkschnittstellenschaltung und den persistenten Speicher gekoppelten Switch.
  • In einem Beispiel ist der Switch über ein Interconnect mit der Netzwerkschnittstellenschaltung gekoppelt ist, wobei das Interconnect mehrere virtuelle Kanäle aufweist, wobei jeder der mehreren virtuellen Kanäle Anforderungen einer gegebenen Prioritätsebene zugeordnet ist.
  • In einem Beispiel umfasst die Vorrichtung ferner eine Batterie, wobei die Batterie ausreichend Ladung aufrechterhalten soll, um die in der ersten Warteschlange gespeicherten Anforderungen an den persistenten Speicher abzuliefern, wenn der Stromausfall auftritt.
  • In einem Beispiel umfasst die Steuerschaltung einen mit der ersten Warteschlange gekoppelten Scheduler, wobei der Scheduler eine erste Anforderung aus der zweiten Warteschlange auswählen und die erste Anforderung in der ersten Warteschlange speichern soll.
  • In einem Beispiel soll die Vorrichtung als Reaktion auf die Speicherung der ersten Anforderung in der ersten Warteschlange eine Bestätigung zu einem Anforderer der ersten Anforderung senden, um anzugeben, dass garantiert wird, dass die erste Anforderung in dem persistenten Speicher gespeichert wird.
  • In einem Beispiel soll die Vorrichtung eine Bestätigung zu einem Anforderer einer zweiten Anforderung senden, wenn die Steuerschaltung die zweite Anforderung zu der ersten Warteschlange leitet.
  • In einem Beispiel umfasst die Vorrichtung ferner mehrere erste Warteschlangen, wobei jede der mehreren ersten Warteschlangen einem Verkehrstyp zugeordnet ist.
  • In einem Beispiel soll die Steuerschaltung eine Bestätigung zu einem ersten Anforderer einer ersten Anforderung senden, wenn die Steuerschaltung die erste Anforderung zu der ersten Warteschlange leitet, wobei die Bestätigung einen Abschluss umfasst, um den ersten Anforderer zu benachrichtigen, dass Daten der ersten Anforderung erfolgreich im persistenten Speicher gespeichert wurden.
  • In einem Beispiel soll die Ausgangsschaltung die in der zweiten Warteschlange gespeicherten Anforderungen nicht an den persistenten Speicher abliefern, wenn der Stromausfall auftritt.
  • In einem anderen Beispiel umfasst ein Verfahren Folgendes: Empfangen einer ersten Anforderung von einem ersten Anforderer in einem mit einem persistenten Speicher gekoppelten Switch; als Reaktion darauf, dass eine erste Priorität der ersten Anforderung eine Schwellenpriorität überschreitet, Speichern der ersten Anforderung in einer persistenten Warteschlange des Switch; und Senden einer Bestätigung zu dem ersten Anforderer als Reaktion auf Speichern der ersten Anforderung in der persistenten Warteschlange, wobei die Bestätigung eine Garantie umfasst, dass Daten der ersten Anforderung selbst dann im persistenten Speicher zu speichern sind, wenn ein Stromausfall in dem Switch auftritt.
  • In einem Beispiel umfasst das Verfahren ferner Folgendes: Empfangen einer zweiten Anforderung in dem Switch von einem zweiten Anforderer; und als Reaktion darauf, dass eine zweite Priorität der zweiten Anforderung die Schwellenpriorität nicht überschreitet, Speichern der zweiten Anforderung in einer Anstehende-Anforderung-Warteschlange des Switch.
  • In einem Beispiel umfasst das Verfahren ferner Folgendes: als Reaktion auf Bestimmen, dass es ausreichend Platz in der persistenten Warteschlange gibt, Auswählen der zweiten Anforderung aus der zweiten Warteschlange und Speichern der zweiten Anforderung in der persistenten Warteschlange.
  • In einem Beispiel umfasst das Verfahren ferner Folgendes: Senden der zweiten Anforderung von der persistenten Warteschlange zu dem persistenten Speicher; Empfangen einer Bestätigung für die zweite Anforderung von dem persistenten Speicher; und als Reaktion auf Empfangen der Bestätigung von dem persistenten Speicher, Senden der Bestätigung von dem Switch zu dem zweiten Anforderer, um anzugeben, dass die Daten der zweiten Anforderung in dem persistenten Speicher gespeichert wurden.
  • In einem Beispiel umfasst das Verfahren ferner Folgendes: Bestimmen, ob die erste Anforderung für einen zulässigen Adressenraum ist, und Speichern der ersten Anforderung in der persistenten Warteschlange ferner als Reaktion auf Bestimmen, dass die erste Anforderung für den zulässigen Adressenraum ist; und wenn die erste Anforderung nicht für den zulässigen Adressenraum ist, Abwerfen der ersten Anforderung und Senden einer Fehlernachricht zu dem ersten Anforderer.
  • In einem anderen Beispiel soll ein Anweisungen umfassendes computerlesbares Medium das Verfahren nach einem der obigen Beispiele ausführen.
  • In einem anderen Beispiel ist ein Daten umfassendes computerlesbares Medium durch mindestens eine Maschine zu verwenden, um mindestens eine integrierte Schaltung zum Ausführen des Verfahrens nach einem der obigen Beispiele herzustellen.
  • In einem anderen Beispiel umfasst eine Vorrichtung Mittel zum Ausführen des Verfahrens nach einem der obigen Beispiele.
  • In einem anderen Beispiel umfasst ein System Folgendes: einen Prozessor mit mindestens einem Kern, wobei der Prozessor eine erste Schreibanforderung und eine zweite Schreibanforderung zu einem persistenten Speicher senden soll, wobei die erste Schreibanforderung eine erste Priorität und die zweite Schreibanforderung eine zweite Priorität aufweist, wobei die erste Priorität größer als die zweite Priorität ist; einen mit dem Prozessor gekoppelten Switch, wobei der Switch Folgendes umfasst: eine der ersten Priorität zugeordnete erste Warteschlange, wobei sich die erste Warteschlange in einer persistenten Stromdomäne befindet, so dass garantiert wird, dass in der ersten Warteschlange gespeicherte Anforderungen selbst bei einem Stromausfall an den persistenten Speicher abgeliefert werden; eine der zweiten Priorität zugeordnete zweite Warteschlange, wobei sich die zweite Warteschlange in einer nicht persistenten Stromdomäne befindet, so dass nicht garantiert wird, dass in der zweiten Warteschlange gespeicherte Anforderungen beim Stromausfall an den persistenten Speicher abgeliefert werden; und eine Steuerschaltung zum Empfangen der ersten Schreibanforderung und Leiten der ersten Schreibanforderung zu der ersten Wartschlange und Empfangen der zweiten Schreibanforderung und Leiten der zweiten Schreibanforderung zu der zweiten Warteschlange. Der persistente Speicher kann mit dem Switch gekoppelt sein.
  • In einem Beispiel soll der Switch als Reaktion auf Speicherung der ersten Schreibanforderung in der ersten Warteschlange eine Bestätigung zu dem Prozessor senden, um anzugeben, dass garantiert wird, dass die erste Schreibanforderung in dem persistenten Speicher gespeichert wird.
  • In einem Beispiel soll der Switch eine weitere Bestätigung von dem persistenten Speicher empfangen, wenn Daten der ersten Schreibanforderung in dem persistenten Speicher gespeichert werden und der Switch die weitere Bestätigung abwerfen soll.
  • In einem Beispiel soll der Switch eine zweite Bestätigung von dem persistenten Speicher empfangen, wenn Daten der zweiten Schreibanforderung in dem persistentem Speicher gespeichert sind, und die zweite Bestätigung zu dem Prozessor senden, um anzugeben, dass die zweite Anforderung im persistenten Speicher gespeichert wurde.
  • Es versteht sich, dass verschiedene Kombinationen der obigen Beispiele möglich sind.
  • Man beachte, dass die Ausdrücke „Schaltung“ und „Schaltkreise“ hier austauschbar verwendet werden. Im vorliegenden Gebrauch sollen sich diese Ausdrücke und der Ausdruck „Logik“ alleine oder in beliebiger Kombination auf Folgendes beziehen: analoge Schaltkreise, digitale Schaltkreise, fest verdrahtete Schaltkreise, programmierbare Schaltkreise, Prozessorschaltkreise, Mikrocontrollerschaltkreise, Hardware-Logikschaltkreise, Automatenschaltkreise und/oder eine beliebige andere Art von physischer Hardwarekomponente. Ausführungsformen können in vielen verschiedenen Arten von Systemen verwendet werden. Zum Beispiel kann bei einer Ausführungsform eine Kommunikationsvorrichtung dafür ausgelegt sein, die verschiedenen hier beschriebenen Verfahren und Techniken auszuführen. Der Schutzumfang der vorliegenden Erfindung ist natürlich nicht auf eine Kommunikationsvorrichtung beschränkt, und stattdessen können andere Ausführungsformen andere Arten von Vorrichtung zum Verarbeiten von Anweisungen betreffen, oder ein oder mehrere maschinenlesbare Medien mit Anweisungen, die, wenn sie auf einer Datenverarbeitungsvorrichtung ausgeführt werden, bewirken, dass die Vorrichtung eines oder mehrere der hier beschriebenen Verfahren oder eine oder mehrere der hier beschriebenen Techniken ausführt.
  • Ausführungsformen können in Code implementiert werden und können auf einem nichttransitorischen Speicherungsmedium gespeichert werden, auf dem Anweisungen gespeichert sind, die zum Programmieren eines Systems zum Ausführen der Anweisungen verwendet werden können. Ausführungsformen können auch in Daten implementiert werden und können auf einem nichttransitorischen Speicherungsmedium gespeichert werden, das, wenn es durch mindestens eine Maschine verwendet wird, bewirkt, dass die mindestens eine Maschine mindestens eine integrierte Schaltung zum Ausführen einer oder mehrerer Operationen herstellt. Weitere Ausführungsformen können in einem computerlesbaren Speicherungsmedium implementiert werden, das Informationen umfasst, die bei Herstellung zu einem SoC oder anderen Prozessor das SoC oder den anderen Prozessor dafür auslegen sollen, eine oder mehrere Operationen auszuführen. Das Speicherungsmedium kann, aber ohne Beschränkung darauf, eine beliebige Art von Datenträger umfassen, darunter Disketten, optische Datenträger, SSD (Solid State Drives), CD-ROM (Compact Disk Read-Only Memories), CD-RW (Compact Disk Rewritables) und magnetooptische Datenträger, Halbleitervorrichtungen wie ROM (Festwertspeicher), RAM (Direktzugriffsspeicher), wie etwa DRAM (dynamische Direktzugriffsspeicher), SRAM (statische Direktzugriffsspeicher), EPROM (löschbare programmierbare Festwertspeicher), Flash-Speicher, EEPROM (elektrische löschbare programmierbare Festwertspeicher), magnetische oder optische Karten oder eine beliebige andere Art von zum Speichern elektronischer Anweisungen geeigneten Medien.
  • Obwohl die vorliegende Erfindung mit Bezug auf eine begrenzte Anzahl von Ausführungsformen beschrieben wurde, sind für Fachleute zahlreiche Modifikationen und Varianten daraus ersichtlich. Es ist beabsichtigt, dass die angefügten Ansprüche alle solchen Modifikationen und Varianten abdecken, die in den wahren Gedanken und Schutzumfang der vorliegenden Erfindung fallen.

Claims (25)

  1. Vorrichtung, umfassend: eine erste Warteschlange zum Speichern von Anforderungen, von denen garantiert wird, dass sie an einen persistenten Speicher abgeliefert werden; eine zweite Warteschlange zum Speichern von Anforderungen, von denen nicht garantiert wird, dass sie an den persistenten Speicher abgeliefert werden; eine Steuerschaltung zum Empfangen der Anforderungen und zum Leiten der Anforderungen zu der ersten Warteschlange oder der zweiten Warteschlange mindestens teilweise auf der Basis von Priorität der Anforderungen; und eine mit der ersten Warteschlange gekoppelte Ausgangsschaltung zum Abliefern der in der ersten Warteschlange gespeicherten Anforderungen an den persistenten Speicher, selbst wenn ein Stromausfall auftritt.
  2. Vorrichtung nach Anspruch 1, wobei die Vorrichtung einen zwischen eine Netzwerkschnittstellenschaltung und den persistenten Speicher geschalteten Switch umfasst.
  3. Vorrichtung nach Anspruch 2, wobei der Switch über ein Interconnect mit der Netzwerkschnittstellenschaltung gekoppelt ist, wobei das Interconnect mehrere virtuelle Kanäle aufweist, wobei jeder der mehreren virtuellen Kanäle Anforderungen einer gegebenen Prioritätsebene zugeordnet ist.
  4. Vorrichtung nach Anspruch 2, die ferner eine Batterie umfasst, wobei die Batterie ausreichend Ladung aufrechterhalten soll, um die in der ersten Warteschlange gespeicherten Anforderungen an den persistenten Speicher abzuliefern, wenn der Stromausfall auftritt.
  5. Vorrichtung nach Anspruch 1, wobei die Steuerschaltung einen mit der ersten Warteschlange gekoppelten Scheduler umfasst, wobei der Scheduler eine erste Anforderung aus der zweiten Warteschlange auswählen und die erste Anforderung in der ersten Warteschlange speichern soll.
  6. Vorrichtung nach Anspruch 5, wobei als Reaktion auf die Speicherung der ersten Anforderung in der ersten Warteschlange die Vorrichtung eine Bestätigung zu einem Anforderer der ersten Anforderung senden soll, um anzugeben, dass garantiert wird, dass die erste Anforderung in dem persistenten Speicher gespeichert wird.
  7. Vorrichtung nach Anspruch 6, wobei die Vorrichtung eine Bestätigung zu einem Anforderer einer zweiten Anforderung senden soll, wenn die Steuerschaltung die zweite Anforderung zu der ersten Warteschlange leitet.
  8. Vorrichtung nach Anspruch 1, die ferner mehrere erste Warteschlangen umfasst, wobei jede der mehreren ersten Warteschlangen einem Verkehrstyp zugeordnet ist.
  9. Vorrichtung nach Anspruch 1, wobei die Steuerschaltung eine Bestätigung zu einem ersten Anforderer einer ersten Anforderung senden soll, wenn die Steuerschaltung die erste Anforderung zu der ersten Warteschlange leitet, wobei die Bestätigung einen Abschluss umfasst, um den ersten Anforderer zu benachrichtigen, dass Daten der ersten Anforderung erfolgreich im persistenten Speicher gespeichert wurden.
  10. Vorrichtung nach Anspruch 9, wobei die Steuerschaltung keine Bestätigung zu einem zweiten Anforderer einer zweiten Anforderung senden soll, wenn die Steuerschaltung die zweite Anforderung zu der zweiten Warteschlange leitet.
  11. Vorrichtung nach Anspruch 1, wobei die Ausgangsschaltung die in der zweiten Warteschlange gespeicherten Anforderungen nicht an den persistenten Speicher abliefern soll, wenn der Stromausfall auftritt.
  12. Verfahren, umfassend: Empfangen einer ersten Anforderung von einem ersten Anforderer in einem mit einem persistenten Speicher gekoppelten Switch; als Reaktion darauf, dass eine erste Priorität der ersten Anforderung eine Schwellenpriorität überschreitet, Speichern der ersten Anforderung in einer persistenten Warteschlange des Switch; und Senden einer Bestätigung zu dem ersten Anforderer als Reaktion auf Speichern der ersten Anforderung in der persistenten Warteschlange, wobei die Bestätigung eine Garantie umfasst, dass Daten der ersten Anforderung selbst dann im persistenten Speicher zu speichern sind, wenn ein Stromausfall in dem Switch auftritt.
  13. Verfahren nach Anspruch 12, wobei das Verfahren ferner Folgendes umfasst: Empfangen einer zweiten Anforderung in dem Switch von einem zweiten Anforderer; und als Reaktion darauf, dass eine zweite Priorität der zweiten Anforderung die Schwellenpriorität nicht überschreitet, Speichern der zweiten Anforderung in einer Anstehende-Anforderung-Warteschlange des Switch.
  14. Verfahren nach Anspruch 13, wobei das Verfahren ferner Folgendes umfasst: als Reaktion auf Bestimmen, dass es ausreichend Platz in der persistenten Warteschlange gibt, Auswählen der zweiten Anforderung aus der zweiten Warteschlange und Speichern der zweiten Anforderung in der persistenten Warteschlange.
  15. Verfahren nach Anspruch 14, wobei das Verfahren ferner Folgendes umfasst: Senden der zweiten Anforderung von der persistenten Warteschlange zu dem persistenten Speicher; Empfangen einer Bestätigung für die zweite Anforderung von dem persistenten Speicher; und als Reaktion auf Empfangen der Bestätigung von dem persistenten Speicher, Senden der Bestätigung von dem Switch zu dem zweiten Anforderer, um anzugeben, dass die Daten der zweiten Anforderung in dem persistenten Speicher gespeichert wurden.
  16. Verfahren nach Anspruch 12, wobei das Verfahren ferner Folgendes umfasst: Bestimmen, ob die erste Anforderung für einen zulässigen Adressenraum ist, und Speichern der ersten Anforderung in der persistenten Warteschlange ferner als Reaktion auf Bestimmen, dass die erste Anforderung für den zulässigen Adressenraum ist; und wenn die erste Anforderung nicht für den zulässigen Adressenraum ist, Abwerfen der ersten Anforderung und Senden einer Fehlernachricht zu dem ersten Anforderer.
  17. Computerlesbares Speicherungsmedium mit computerlesbaren Anweisungen, die, wenn sie ausgeführt werden, ein Verfahren nach einem der Ansprüche 12 bis 16 implementieren.
  18. Vorrichtung mit Mitteln zum Ausführen eines Verfahrens nach einem der Ansprüche 12 bis 16.
  19. System, umfassend: einen Prozessor mit mindestens einem Kern, wobei der Prozessor eine erste Schreibanforderung und eine zweite Schreibanforderung zu einem persistenten Speicher senden soll, wobei die erste Schreibanforderung eine erste Priorität und die zweite Schreibanforderung eine zweite Priorität aufweist, wobei die erste Priorität größer als die zweite Priorität ist; einen mit dem Prozessor gekoppelten Switch, wobei der Switch Folgendes umfasst: eine der ersten Priorität zugeordnete erste Warteschlange, wobei sich die erste Warteschlange in einer persistenten Stromdomäne befindet, so dass garantiert wird, dass in der ersten Warteschlange gespeicherte Anforderungen selbst bei einem Stromausfall an den persistenten Speicher abgeliefert werden; eine der zweiten Priorität zugeordnete zweite Warteschlange, wobei sich die zweite Warteschlange in einer nicht persistenten Stromdomäne befindet, so dass nicht garantiert wird, dass in der zweiten Warteschlange gespeicherte Anforderungen beim Stromausfall an den persistenten Speicher abgeliefert werden; und eine Steuerschaltung zum Empfangen der ersten Schreibanforderung und Leiten der ersten Schreibanforderung zu der ersten Wartschlange und Empfangen der zweiten Schreibanforderung und Leiten der zweiten Schreibanforderung zu der zweiten Warteschlange; und den mit dem Switch gekoppelten persistenten Speicher.
  20. System nach Anspruch 19, wobei als Reaktion auf Speicherung der ersten Schreibanforderung in der ersten Warteschlange der Switch eine Bestätigung zu dem Prozessor senden soll, um anzugeben, dass garantiert wird, dass die erste Schreibanforderung in dem persistenten Speicher gespeichert wird.
  21. System nach Anspruch 20, wobei der Switch eine weitere Bestätigung von dem persistenten Speicher empfangen soll, wenn Daten der ersten Schreibanforderung in dem persistenten Speicher gespeichert werden, und der Switch die weitere Bestätigung abwerfen soll.
  22. System nach Anspruch 20, wobei der Switch eine zweite Bestätigung von dem persistenten Speicher empfangen soll, wenn Daten der zweiten Schreibanforderung in dem persistenten Speicher gespeichert sind, und die zweite Bestätigung zu dem Prozessor senden soll, um anzugeben, dass die zweite Anforderung im persistenten Speicher gespeichert wurde.
  23. Vorrichtung, umfassend: erste Warteschlangenmittel zum Speichern von Anforderungen, von denen garantiert wird, dass sie an einen persistenten Speicher abgeliefert werden; zweite Warteschlangenmittel zum Speichern von Anforderungen, von denen nicht garantiert wird, dass sie an den persistenten Speicher abgeliefert werden; Steuermittel zum Empfangen der Anforderungen und zum Leiten der Anforderungen zu den ersten Warteschlangenmitteln oder den zweiten Warteschlangenmitteln mindestens teilweise auf der Basis von Priorität der Anforderungen; und mit den ersten Warteschlangenmitteln gekoppelte Ausgangsmittel zum Abliefern der in den ersten Warteschlangenmitteln gespeicherten Anforderungen an die persistenten Speichermittel, selbst wenn ein Stromausfall auftritt.
  24. Vorrichtung nach Anspruch 23, wobei die Vorrichtung ein zwischen ein Netzwerkschnittstellenmittel und die persistenten Speichermittel geschaltetes Switch-Mittel umfasst.
  25. Vorrichtung nach Anspruch 24, wobei das Switch-Mittel über ein Interconnect-Mittel mit dem Netzwerkschnittstellenmittel gekoppelt ist, wobei das Interconnect-Mittel mehrere virtuelle Kanäle aufweist, wobei jeder der mehreren virtuellen Kanäle Anforderungen einer gegebenen Prioritätsebene zugeordnet ist.
DE102020130534.6A 2020-05-26 2020-11-19 System, Vorrichtung und Verfahren zum persistenten Umgehen mit Speicheranforderungen in einem System Pending DE102020130534A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/882,833 2020-05-26
US16/882,833 US11983437B2 (en) 2020-05-26 2020-05-26 System, apparatus and method for persistently handling memory requests in a system

Publications (1)

Publication Number Publication Date
DE102020130534A1 true DE102020130534A1 (de) 2021-12-02

Family

ID=72335256

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102020130534.6A Pending DE102020130534A1 (de) 2020-05-26 2020-11-19 System, Vorrichtung und Verfahren zum persistenten Umgehen mit Speicheranforderungen in einem System

Country Status (2)

Country Link
US (1) US11983437B2 (de)
DE (1) DE102020130534A1 (de)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11921637B2 (en) 2019-05-24 2024-03-05 Texas Instruments Incorporated Write streaming with cache write acknowledgment in a processor
KR20210157544A (ko) * 2020-06-22 2021-12-29 에스케이하이닉스 주식회사 메모리 시스템, 메모리 컨트롤러 및 메모리 시스템의 동작 방법
WO2022098356A1 (en) * 2020-11-05 2022-05-12 Google Llc Memory-request priority up-leveling
US11704060B2 (en) * 2020-12-18 2023-07-18 Micron Technology, Inc. Split protocol approaches for enabling devices with enhanced persistent memory region access
US20210349840A1 (en) * 2021-07-26 2021-11-11 Intel Corporation System, Apparatus And Methods For Handling Consistent Memory Transactions According To A CXL Protocol
US12072805B2 (en) 2022-04-11 2024-08-27 Arteris, Inc. System and method to enter and exit a cache coherent interconnect
CN117472793A (zh) * 2022-07-20 2024-01-30 摩尔线程智能科技(北京)有限责任公司 用于管理存储空间的装置及方法、计算设备

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2276739A (en) * 1993-03-30 1994-10-05 Ibm System for storing persistent and non-persistent queued data.
GB0613192D0 (en) * 2006-07-01 2006-08-09 Ibm Methods, apparatus and computer programs for managing persistence
US9535828B1 (en) * 2013-04-29 2017-01-03 Amazon Technologies, Inc. Leveraging non-volatile memory for persisting data
US10521305B2 (en) * 2016-04-29 2019-12-31 Toshiba Memory Corporation Holdup time measurement for solid state drives
US11436087B2 (en) * 2017-05-31 2022-09-06 Everspin Technologies, Inc. Systems and methods for implementing and managing persistent memory
JP2023516786A (ja) * 2020-03-10 2023-04-20 マイクロン テクノロジー,インク. メモリサブシステムのキューの管理のための方法、システム、及び可読ストレージ媒体

Also Published As

Publication number Publication date
US20200285420A1 (en) 2020-09-10
US11983437B2 (en) 2024-05-14

Similar Documents

Publication Publication Date Title
DE102020130534A1 (de) System, Vorrichtung und Verfahren zum persistenten Umgehen mit Speicheranforderungen in einem System
DE112012005210B4 (de) Bereitstellen eines gemeinsamen Caching-Agenten für ein Kern- und integriertes Ein-/Ausgabe-(IO)-Modul
DE102009022152B4 (de) Verwenden von Kritikaliätsinformationen zum Routen von Cache-Kohärenz-Kommmunikationen
DE60036465T2 (de) Rechneradapterkarte für die kombinierung von eingang-/ausgangfertigstellungsberichten und verwendung derselben
DE69027515T2 (de) Vorrichtung für Prioritätsarbitrierungskonditionierung bei gepufferter Direktspeicheradressierung
DE69519926T2 (de) Verfahren und vorrichtung zum einhalten der transaktionssteuerung und zur unterstützung von verzögerten antworten in einer busbrücke
DE69613423T2 (de) Unterbrechungssystem in einem Mikroprozessor
DE102009023898B4 (de) Optimierung von gleichzeitigen Zugriffen in einem verzeichnisbasierten Kohärenzprotokoll
DE112016005910T5 (de) Architechtur für Software-Definierten Interconnect-Switch
DE102021121062A1 (de) System, vorrichtung und verfahren zur dynamischen bereitstellung kohärenter speicherdomänen
DE112007002201T5 (de) Quality-of-Service-Implementierung für Plattformressourcen
DE112012006227B4 (de) Systeme und verfahren für den remotezugriff auf den direkten speicher mit reduzierter latenzzeit
DE112010005821T5 (de) Kontextwechsel
DE102009061252B3 (de) Vorrichtung, Verfahren und System zur Verarbeitung einer Transaktion auf einem PCI-Bus mittels eines Root-Komplexes
DE112013001361T5 (de) Bereitstellung Snoop-Filterung zugeordnet mit einem Datenpuffer
DE102019112772A1 (de) Technologien für eine dienstgütefrist-bewusste ende-zu-ende-e/a-planung
US8756349B2 (en) Inter-queue anti-starvation mechanism with dynamic deadlock avoidance in a retry based pipeline
DE60026068T2 (de) System für externe transaktionen mit dynamischen prioritäten
DE69111764T2 (de) Übereinstimmungsprotokolle für Mehrprozessoren mit gemeinsam genutztem Speicher.
DE102021107336A1 (de) VORRICHTUNGEN, SYSTEME, UND VERFAHREN FÜR PCIe ENDPUNKT INTERRUPT
DE102007060806A1 (de) Rangbasierter Speicher-Lese/Schreib-Mikrobefehls-Scheduler
DE112012004551T5 (de) Mehrkernverknüpfung in einem Netzprozessor
DE102018209188A1 (de) Technologien zum Verwalten der Dienstgüte für Plattformverbindungen
DE112017004907T5 (de) System, Vorrichtung und Verfahren zur Durchführung einer verteilten Arbitration
DE102009060301A1 (de) Das Ermöglichen mehrerer virtueller Geräte-Controller durch Umleiten eines Interrupts von einem physischen Geräte-Controller