-
HINTERGRUNDINFORMATIONEN
-
Bei Cloud-Einsätzen, die Zehntausende von Server in großem Umfang involvieren, sind Speicherfehler in jüngster Zeit stark in den Fokus gerückt. Als ein Beispiel involvieren SAP-HANA-Einsätze Server, die durchschnittlich 2-4 TB (Terabyte) Speicher in einem einzelnen Knoten überspannen, und große Hyperscaler setzen Tausende solcher Server ein.
-
Speicherfehler werden derzeit unter Verwendung mehrerer Ansätze behandelt. Machine Check Architecture Recovery-Lösungen (Maschinenprüfungsarchitektur-Wiederherstellung-Lösungen) bieten verschiedene Optionen und Abläufe zur Wiederherstellung aus Speicherfehlern. Der einfachste Fall ist ein hardwarekorrigierbarer Fehler, der vollständig durch Hardware ohne Beteiligung, die von dem Softwarestapel erforderlich ist, behoben werden kann.
-
In Fällen, in denen der Fehler nicht korrigierbar ist, muss der Softwarestapel involviert werden. Ein Ansatz wird durch das Betriebssystem (OS) gehandhabt, das über den Fehler benachrichtigt wird. Falls die Seite (die einen Adressbereich aufweist, der den Fehler beinhaltet) nicht verwendet wird, dann kann die Seite durch das OS nicht abgebildet und angemessen markiert werden, wodurch es keinen Verlust von Anwendungsdaten aufgrund des unkorrigierbaren Fehlers gibt. Falls die Seite verwendet wird, dann wird die Anwendung signalisiert. Viele Anwendungen, einschließlich Datenbanken, weisen einige Fähigkeiten auf, um den unkorrigierbaren Fehler zu kompensieren, und die Wiederherstellung nutzt Prüfsummen auf Anwendungsebene (verschieden von Hardware-Fehlerkorrekturcode (ECC)), um in einigen Fällen die Daten von der Platte zu rekonstruieren oder wiederherzustellen.
-
Ferner ist Patrol-Scrubbing ein wichtiger Mechanismus gegen Speicherfehler, da er dazu ausgelegt ist, Mehrbitfehler zu behandeln, die nicht durch ECC-Algorithmen korrigiert werden können. Das Scrubbing nutzt die geringe Wahrscheinlichkeit, dass zu jedem gegebenen Zeitpunkt zwei Strikes im gleichen Wort vorhanden sind. Die gegenwärtige Verwendung von Patrol-Scrubbing besteht darin, den Speicher periodisch durch die ECC-Logik zu zyklieren, um Einzelbitfehler zu korrigieren, bevor sie sich akkumulieren.
-
Figurenliste
-
Die vorstehenden Aspekte und viele der dazugehörigen Vorteile dieser Erfindung werden besser ersichtlich, wenn dieselben unter Bezugnahme auf die folgende ausführliche Beschreibung in Verbindung mit den zugehörigen Zeichnungen besser verstanden werden, wobei sich gleiche Bezugszeichen über alle verschiedenen Ansichten hinweg auf gleiche Teile beziehen, sofern nicht anders angegeben:
- 1 ist ein schematisches Diagramm, das eine Beschreibung hoher Ebene einer Speichersteuerungsarchitektur zum Implementieren einer Speicher-Scrubber-QoS-Logik veranschaulicht, gemäß einer Ausführungsform;
- 2 ist ein schematisches Diagramm, das weitere Einzelheiten einer Speichersteuerungsarchitektur zum Implementieren einer Speicher-Scrubber-QoS-Logik veranschaulicht, gemäß einer Ausführungsform;
- 3 ist ein Graph und Diagramm, die ein Beispiel für ein spärliches Speicherzugriffsmuster veranschaulichen;
- 4 ist ein Flussdiagramm, das Operationen veranschaulicht, die unter Verwendung von Patrol-Scrubbing mit Mustern durchgeführt werden, gemäß einer Ausführungsform;
- 5 ist ein schematisches Diagramm, das einen Überblick eines mehrstufigen Speicherschemas veranschaulicht, gemäß einer Ausführungsform;
- 6 ist ein schematisches Diagramm eines beispielhaften Systems, das eine Speichersteuerung beinhaltet, die mit Speichermodulen gekoppelt ist, wobei das System dazu ausgelegt ist, Patrol-Speicher-Scrubbing gemäß Aspekten von Ausführungsformen hierin zu implementieren; und
- 7 ist ein Blockdiagramm eines beispielhaften Systems, in dem Aspekte der hierin offenbarten Ausführungsformen implementiert werden können.
-
AUSFÜHRLICHE BESCHREIBUNG
-
Ausführungsformen von Verfahren und Einrichtungen für anwendungsbewusste Speicher-Patrol-Scrubbing-Techniken sind hierin beschrieben. In der folgenden Beschreibung werden zahlreiche Einzelheiten dargelegt, um ein umfassendes Verständnis von Ausführungsformen der Erfindung bereitzustellen. Ein Fachmann auf dem relevanten Gebiet wird jedoch erkennen, dass die Erfindung ohne eine oder mehrere der spezifischen Einzelheiten oder mit anderen Verfahren, Komponenten, Materialien usw. praktiziert werden kann. In anderen Fällen werden gut bekannte Strukturen, Materialien oder Operationen nicht im Einzelnen gezeigt oder beschrieben, um das Verschleiern von Aspekten der Erfindung zu vermeiden.
-
Durchweg bedeutet in dieser Spezifikation Bezugnahme auf „eine Ausführungsform“, dass ein in Verbindung mit der Ausführungsform beschriebenes bestimmtes Merkmal, eine bestimmte Struktur oder eine bestimmte Eigenschaft in mindestens einer Ausführungsform der vorliegenden Erfindung enthalten ist. Somit beziehen sich die Erscheinungen der Phrase „in einer Ausführungsform“ an verschiedenen Stellen über diese Spezifikation hinweg nicht alle notwendigerweise auf dieselbe Ausführungsform. Zudem können die bestimmten Merkmale, Strukturen oder Charakteristiken in einer oder mehreren Ausführungsformen auf eine beliebige geeignete Weise kombiniert werden.
-
Zur Verständlichkeit können einzelne Komponenten in den Figuren hierin anstatt durch eine bestimmte Bezugsziffer auch durch ihre Beschriftungen in den Figuren bezeichnet werden. Zusätzlich dazu können Bezugsziffern, die sich auf einen bestimmten Komponententyp beziehen (im Gegensatz zu einer bestimmten Komponente), mit einer Bezugsziffer gefolgt von „(typ)“ gezeigt sein, was „typisch“ bedeutet. Es versteht sich, dass die Konfiguration dieser Komponenten für ähnliche Komponenten, die existieren können, in den Zeichnungsfiguren der Einfachheit und Klarheit halber aber nicht gezeigt sind, oder anderweitig ähnliche Komponenten, die nicht mit getrennten Referenznummern beschriftet sind, typisch ist. Umgekehrt ist „(typ)“ nicht dahingehend auszulegen, dass die Komponente, das Element usw. typischerweise für ihre/seine offenbarte Funktion, Implementierung, ihren Zweck usw. verwendet wird.
-
Gegenwärtig kann die Patrol-Scrub-Option in dem BIOS als ein Parameter ausgewählt werden, zum Beispiel kann der Standard darin bestehen, den gesamten Speicher einmal alle 24 Stunden zu scrubben. Es gibt Optionen, die Frequenz für Einsätze mit hoher Zuverlässigkeit zu erhöhen, und dies kann so häufig wie alle paar Stunden betragen. Angesichts dessen, dass dies ein wichtiges präventives Werkzeug für ein zunehmend verbreitetes Problem ist, nutzen die hierin offenbarten Ausführungsformen Patrol-Scrubbing-Mechanismen besser aus, um Speicherfehler zu verhindern und abzuschwächen. Die offenbarten Techniken basieren teilweise auf den folgenden Schlüsselbeobachtungen.
-
Erstens sind alle Speicherbereiche von einem Anwendungsstandpunkt, sowohl von einem Fehlerpräventionsstandpunkt als auch von einem Fehlerkorrekturstandpunkt aus, nicht gleich. Für eine speicherinterne Datenbank sind zum Beispiel bestimmte Speichergebiete schreibgeschützt und auf der Platte dupliziert. Ein Fehler in diesen Gebieten kann durch Wiederherstellen der Daten von der Platte behoben werden. Ferner werden bestimmte Speichergebiete für statistisches Rechnungswesen und Buchführung für datenbankinterne Effizienzen verwendet, und Fehler in diesen Gebieten können ohne Verlust an Geschäftskontinuität toleriert werden. Angesichts dessen könnten Patrol-Scrubbing-Bemühungen durch Anwendungs- oder Betriebssystemhinweise geleitet werden, um sich intensiv auf Speichergebiete zu konzentrieren, die aus Sicht einer Geschäftskontinuität kritisch sind.
-
Zweitens ist es angesichts der Verfügbarkeit des Patrol-Scrubbing zum periodischen Durchführen von Speicher-„Scrubbing“, insbesondere für jene Speichergebiete, die aus Zuverlässigkeitssicht kritisch sind, vorteilhaft, dem Patrol-Scrubber zusätzliche Fähigkeiten zum Scrubbing außerhalb des ECC bereitzustellen. Zum Beispiel das Verwenden von Hinweisen auf Anwendungsebene oder Verknüpfung mit Prüfsummen auf Anwendungsebene.
-
Drittens nimmt Patrol-Scrubbing Bandbreite ein und kommt nicht „kostenlos“. Daher besteht die Tendenz, das seltene 24-Stunden- oder Einmal-pro-X-Stunde-Patrol-Scrub zu verwenden, sodass die Anwendungsleistung nicht beeinträchtigt wird. Es gibt zwei Schlüsselfaktoren, die hier in Betracht gezogen werden - erstens ist ein „wichtiger“ Speicherbereich aus einer Perspektive eines Informationsverlusts nicht immer ein bandbreitenintensiver Speicherbereich. Zum Beispiel findet eine Analyseverarbeitung (viel Bandbreite) häufig an Nurlesedaten statt, was häufig nicht so kritisch ist wie zum Beispiel ein Transaktionsverarbeitungsgebiet (nicht so viel Bandbreite wie Analyse), in dem kritische Modifikationen an den Daten vorgenommen wurden. Zweitens gibt es, falls ein Gebiet tatsächlich wichtig ist, heutzutage Techniken in RAS (Reliability, Availability and Serviceability - Zuverlässigkeit, Verfügbarkeit und Brauchbarkeit), wie Intra-DIMM-Untergebietsspiegelung, die in Kombination mit Patrol-Scrubbing genutzt werden können, um Bandbreite zu bewahren. Eine Haupteinsicht besteht darin, dass weniger spezifische Gebiete benötigt werden, auf die solche Techniken fokussiert werden, und der gegenwärtige Ansatz, der das gesamte Speichersystem als einen Monolithen behandelt, macht es unmöglich, eine solche Kombination von Techniken zu verwenden, da einfach nicht genügend Kapazität/Ressourcen vorhanden sind.
-
Die hierin beschriebenen und veranschaulichten Ausführungsformen behandeln die vorstehenden Probleme durch Bereitstellen einer eindeutigen Differenzierung mit einem adaptiven Patrol-Scrubber, der sich intensiv auf Bereiche konzentrieren kann, die durch das OS und/oder die Anwendungssoftware spezifiziert werden, und auch Fähigkeiten für Prüfsummierungs- und Korrekturlogik erweitern kann, um anwendungsspezifische Logik einzuschließen. Darüber hinaus sollen die Ausführungsformen unseres Konzepts der Dienstgüte (QoS: Quality of Service) in dem Speicheruntersystem - das historisch auf Cache-Kapazität und Speicherbandbreite fokussiert ist - auch Speicherzuverlässigkeit beinhalten, und erweitern die QoS-APIs, um eine Spezifikation kritischer Speicherbereiche zu beinhalten, in denen Verlust von Informationen einen Verlust von Geschäftskontinuität bedeuten würde.
-
Ein Aspekt der Ausführungsformen ist neue Logik in der Speichersteuerung, die es Softwarestapeln (z. B. einem Betriebssystem) ermöglicht, unterschiedliche Dienstgüteniveaus zu steuern, die damit assoziiert sind, wie Speicher-Scrubbing pro unterschiedlichen Prozessen und potenziell unterschiedlichen Speicherbereichen durchgeführt wird. Dies wird durch eine Speicher-Scrubbing-QoS-Logik implementiert, wie in den Figuren hierin gezeigt, einschließlich 1 unten. Die neue Logik beinhaltet auch einen Bitstrommustergenerator, der für das Erzeugen der Speicheradressmuster verantwortlich ist, auf die die Scrubbing-Logik Zugriff hat und denen sie folgen könnte. Ähnlich der Speicher-Scrubbing-QoS-Logik können die Speicheradressmuster pro Prozess oder pro Prozess und Adressraum sein. Dies ermöglicht es dem Softwarestapel, spezifische Abläufe zu implementieren (z. B. bei spärlichen Zugriffen für einen Prozess, der der Zeigerverfolgung auf relevanten Strukturen folgt, besteht keine Notwendigkeit, alle Adressen zu scrubben, sondern sich auf die spärlichen Zugriffspfade zu konzentrieren, die für die Anwendung wichtig sind).
-
1 stellt eine Beschreibung hoher Ebene dieser neuen Basisblöcke bereit, die in der Speichersteuerungsarchitektur enthalten sind. Eine Speichersteuerung 100 beinhaltet eine Eingangslogik 102, einen Mustergenerator 104, eine Speicher-Scrubber-QoS-Logik 106, eine Speicher-Scrubber-Logik 108 und eine existierende Logik 110. Die Speichersteuerung 100 ist mit mehreren DIMMs (Dual-Inline-Speichermodulen) 112 gekoppelt. Ein Adressraum 114 ist in unterschiedliche Bereiche partitioniert, wie unten beschrieben.
-
Die Speicher-Scrubber-QoS-Logik 106 steuert, wie die Bandbreite, die dem Speicher-Scrubbing zugewiesen ist, unterschiedlichen Anwendungen (z. B. wie durch eine Prozessadressen-ID (PASID) identifiziert) und potenziell innerhalb unterschiedlicher Speicherbereiche zugewiesen ist. In dem in 1 gezeigten Beispiel sind zwei unterschiedliche Richtlinien für zwei Prozesse definiert, wie durch eine Richtlinie 114 mit hoher Priorität und einen Prozess 116 mit niedrigerer Priorität dargestellt. Die Richtlinie 114 mit hoher Priorität wird auf zwei Speicherbereiche 118 und 120 angewendet. Für den Speicherbereich 118 ein Speicher-Scrubber-Muster „X‟, das durch den Mustergenerator 104 unter Verwendung einer maximalen Bandbreite von M MB/s erzeugt wird. Ein Speicher-Scrubber-Muster „Y‟, das durch den Mustergenerator 104 erzeugt wird, wie für den Speicherbereich 120 unter Verwendung einer maximalen Bandbreite von N MB/s angewendet.
-
Im Allgemeinen kann eine Richtlinie mit niedriger Priorität herkömmliche Patrol-Scrubbing-Operationen einsetzen, wie etwa Durchführen der erforderlichen Mindestmenge an Scrubbing. Zum Beispiel wird die Richtlinie 116 mit niedrigerer Priorität auf ein Gebiet 120 unter Verwendung eines Direktzugriffsmusters mit einer minimalen Scrub-Rate (wie etwa Scrubbing dieses Bereichs jede Stunde) unter Verwendung einer optionalen maximalen Bandbreite von P MB/s angewendet.
-
Die hierin bereitgestellten Techniken beinhalten einen einfachen Ansatz (z. B. einfachen Stride-Mustern folgend) und komplexere Ansätze basierend auf kleiner Beschleunigungslogik (z. B. um spezifische Muster basierend auf dem gelesenen Inhalt zu erzeugen). Die Erzeugung von Stride-Mustern und spezifischen Mustern wird unten besprochen.
-
2 zeigt zusätzliche Einzelheiten neuartiger Verbesserungen an einer Speichersteuerung 200, um die hierin beschriebene erweiterte Speicher-Scrubbing-Funktionalität zu unterstützen. In den 1 und 2 führen Komponenten/Blöcke mit gleichen Bezugsziffern ähnliche Funktionen durch. Zusätzlich zu den zuvor identifizierten Blöcken und der Logik beinhaltet die Speichersteuerung 200 ferner Konfigurationsschnittstellen 202 und einen Systemadressendecodierer 204, deren Betrieb unten beschrieben ist. Wie ferner gezeigt, greift die Speicher-Scrubber-Logik 108a auf eine Tabelle 206 zu, in der verschiedene Regeln und assoziierte Parameter gespeichert sind.
-
Ein Satz neuer Schnittstellen wird durch die Speichersteuerung freigelegt, um dem Softwarestapel zu ermöglichen, das Verfahren zu konfigurieren. Diese Schnittstellen können entweder mit modellspezifischen Registern (MSRs), ENQ-Befehlen (Warteschlangenanordnungs-Befehlen) oder einer beliebigen ähnlichen Einrichtung implementiert werden. In einer Ausführungsform befinden sie sich in RING 0, um zu vermeiden, dass Benutzerraumprogramme RAS-Merkmale beeinflussen. In einer Ausführungsform werden drei neue Schnittstellen bereitgestellt.
-
Eine erste Schnittstelle ermöglicht es einem Bediener und/oder einer Steuersoftware oder -firmware, wie etwa einem Betriebssystem, die gesamte Speicherbandbreite zu spezifizieren, die zum Scrubbing verbraucht werden kann. Diese Schnittstelle kann ermöglichen, dass die Speicherbandbreite als bedingte Eingabe spezifiziert wird, oder dass die Bandbreite zu der Menge der aktuellen Speicherbandbreite hinzugefügt wird, die für andere Anwendungen verwendet wird. Die Bandbreite kann ferner spezifiziert sein als:
- i. Ein Bereich der Speicherbandbreitennutzung (z. B. [10 %-60 %] Speicherbandbreite, die für reguläres Lesen und Schreiben verwendet wird)
- ii. Menge an Speicherbandbreite, die zum Scrubbing bestimmt ist (z. B. 50 % aus der nicht verwendeten Bandbreite)
-
Eine zweite Schnittstelle ermöglicht das Spezifizieren oder Auswählen einer spezifischen Speicher-Scrubbing-Dienstgüterichtlinie für einen bestimmten Prozess, der durch eine Prozessadressen-ID (PASID) repräsentiert wird. In einer Ausführungsform beinhaltet diese Schnittstelle die folgenden Parameter:
- i. Die PASID für die Anwendung.
- ii. Einen optionalen Speicherbereich, der sich auf die Speicher-Scrubbing-QoS bezieht. Falls es keinen assoziierten Bereich gibt, wird die QoS standardmäßig für den gesamten Adressraum für den Prozess assoziiert. Andernfalls wird die QoS auf das bestimmte Gebiet (den Speicherbereich) abgebildet, das spezifiziert ist.
- iii. Die Priorität des Prozesses. In Fällen, in denen es spezifische gewünschte minimale Scrubbing-Bandbreiten gibt, können Prozessprioritäten bereitgestellt werden, um zwischen allen PASIDs zu unterscheiden.
- iv. Spezifische minimale Speicherbandbreite assoziiert mit der QoS-Registrierung. Die Speicherbandbreite muss höher als das designbedingt erforderliche Minimum sein. Diese Mindestvoraussetzung kann werkseitig registriert werden oder kann konfigurierbar sein. Falls es nicht genügend Menge an zuweisbarer Speicher-Scrubbing-Bandbreite gibt, kann die Registrierung fehlschlagen.
-
In Abhängigkeit von der Gesamtspeicherbandbreite, die zum Scrubbing verbraucht werden kann, ist die erforderliche Speicherbandbreite möglicherweise auch nach ihrer Zuweisung nicht möglich. In diesem Fall kann ein System-Interrupt erzeugt werden, um dem Betriebssystem mitzuteilen, dass eine Registrierung der Bandbreite nicht erfüllt werden kann.
-
Eine dritte Schnittstelle ermöglicht, dass ein bestimmtes Scrubbing-Muster mit einem bestimmten Bereich (z. B. einem über die zweite Schnittstelle registrierten Speicherbereich) assoziiert wird. Dies kann Folgendes beinhalten:
- i. Die PASID für die Anwendung.
- ii. Den assoziierten Speicherbereich.
- iii. Das Speichermuster, das assoziiert werden muss.
-
In einer Ausführungsform kann das Speichermuster unter Verwendung von zwei unterschiedlichen Optionen eingegeben werden: 1) Bereitstellen einer Muster-ID (z. B. Stride) und eines Parameters (z. B. 4); oder 2) Bereitstellen eines Bitstroms, der in einer kleinen Beschleunigungseinheit ausgeführt werden kann, die spezifische Muster basierend auf der Kenntnis der Anwendung erzeugen kann.
-
Tabelle 206 zeigt beispielhafte Daten, die durch die zweite Schnittstelle verwendet werden. Dies beinhaltet ein Regel-ID-Feld 208, ein Speicherbereich-Feld 210, ein PASID-Feld 212, ein Zugewiesene-Bandbreite-(BB)-Feld 214, ein Priorität-Feld 216 und ein Muster-Feld 218. Das Regel-ID-Feld 208 enthält eine Regelkennung, die allgemein einen Wert oder Daten zum Identifizieren einer Regel umfassen kann, wie etwa zum Beispiel eine Zahl oder einen alphanumerischen String. Das Speicherbereich-Feld 210 enthält einen Speicherbereich, für den die Regel gilt, wie etwa eine Startadresse und eine Endadresse (z. B. Adresse A, Adresse B). Das PASID-Feld 212 enthält die PASID für den Prozess. Die zugewiesene Bandbreite wird in dem Zugewiesene-BB-Feld 214 bereitgestellt.
-
Das Priorität-Feld 216 enthält Indizien, die mit einer Prioritätsstufe assoziiert sind. Nichtbeschränkende Beispiele für „niedrig“ und „hoch“ sind in 2 gezeigt; es können jedoch auch Indizien verwendet werden, die Granularität mit größerer Priorität unterstützen.
-
Das Muster-Feld 218 wird verwendet, um entweder ein Muster (z. B. „zufällig“) zu identifizieren oder einen Zeiger oder dergleichen auf einen gegebenen Bitstrom oder eine Kennung für den Bitstrom, der zum Programmieren der Speicher-Scrubber-Logik 108a verwendet wird, bereitzustellen. Zusätzlich zu Bitströmen können, wie hierin besprochen, andere Muster verwendet werden.
-
Scrubbing-Mustererzeugung
-
Verschiedene Techniken können zum Erzeugen von Scrubbing-Mustern verwendet werden, einschließlich Stride-basierter Muster und anwendungsspezifischer Muster. Unter einem Aspekt der anwendungsspezifischen Muster kann eine gegebene Anwendung oder Klasse von Anwendungen, wie etwa eine Anwendung für maschinelles Lernen (ML) und/oder künstliche Intelligenz (KI) oder eine Anwendung, die in einem Cloudgehosteten Dienst implementiert ist, häufiger auf Speicher an einigen Adressen als anderen Adressen zugreifen. In manchen Fällen können manche Bereiche von Speicherseiten, die für eine Anwendung zugewiesen sind, sehr selten oder überhaupt nicht verwendet werden. Zum Beispiel kann eine Anwendung eine Zuweisung von Speicher anfordern, der Speicherseiten beinhaltet, die verwendet werden, und kann andere Seiten beinhalten, die verwendet werden könnten (in Abhängigkeit von verschiedenen Bedingungen, Benutzereingabe, Dynamikverhalten usw.). Anstatt diesen Speicher nach Bedarf zuzuweisen, stellt das Anfordern der Zuweisung von Speicher, der verwendet werden könnte, sicher, dass Speicher zur Verwendung verfügbar ist (unabhängig davon, ob er tatsächlich verwendet wird oder nicht).
-
Für manche Anwendungen können die Zugriffsmuster spärlich sein, das heißt, auf nur einen kleinen (d.h. spärlichen) Teil des Speichers wird tatsächlich zugegriffen. Ein Beispiel für ein spärliches Zugriffsmuster ist in 3 gezeigt, in der der vergrößerte Bereich 300 die Cache-Fehltrefferadressen auf dem omnetpp-Datensatz zeigt, der in Hashemi, Milad et al. „Learning memory access patterns“, Internationale Konferenz über maschinelles Lernen, PMLR, 2018 veröffentlicht ist. Die Cache-Fehltrefferadressen entsprechen Speicherzugriffsanforderungen, die zu Cache-Fehltreffern geführt haben (z. B. nicht in der Cache-Hierarchie für einen Prozessor, der L1/L2-Caches und einen Last-Level-Cache (LLC) einsetzt). Dies spiegelt auch wider, welcher Speicherabschnitt (welche Cachezeilen) aus dem Systemspeicher gelesen wird.
-
Da häufiger auf diese Cachezeilen zugegriffen wird als auf andere Cachezeilen, würde es vorteilhaft sein, diese Cachezeilen häufiger zu scrubben, um Datenfehler zu verhindern. Gemäß weiteren Aspekten mancher Ausführungsformen werden eine oder mehrere Techniken und/oder ein oder mehrere Mechanismen eingesetzt, um Speicherzugriffsmuster zu überwachen oder vorherzusagen und dann das überwachte oder vorhergesagte Speicherzugriffsmuster zu verwenden, um Abschnitte des zu scrubbenden Speichers unter Verwendung eines Musterzugriffsschemas zu identifizieren.
-
4 zeigt ein Flussdiagramm 400, das Operationen veranschaulicht, die unter Verwendung von Patrol-Scrubbing mit Mustern durchgeführt werden, gemäß einer Ausführungsform. Wie in der äußeren Schleife gezeigt, die zwischen Start- und Endschleifenblöcken 402 und 416 gekoppelt ist, können die Operationen für einen oder mehrere Mandanten für Multi-Mandanten-Umgebungen durchgeführt werden. Wie in der mittleren Schleife gezeigt, die zwischen Start- und Endschleifenblöcken 404 und 414 gekoppelt ist, können die Operationen für einen oder mehrere Prozesse durchgeführt werden. In einem Block 406 werden Speicherzugriffsmuster überwacht und/oder vorhergesagt. In einem Block 408 wird das überwachte oder vorhergesagte Speicherzugriffsmuster dem Mustergenerator als eine Eingabe bereitgestellt. In einem Block 410 wird der Mustergenerator (und/oder eine andere Logik) verwendet, um die Scrubber-Logik zu programmieren. In einer Ausführungsform wird zum Beispiel ein FPGA verwendet und durch einen Bitstrom programmiert, um Speicheradressen/Cachezeilen zu scrubben, die dem überwachten oder vorhergesagten Muster entsprechen. In einem Block 412 wird der Speicher dann unter Verwendung von Patrol-Scrubbing basierend auf dem Muster und den geltenden QoS-Parametern und Einstellungen, die mit der PASID für den Prozess assoziiert sind, gescrubbt. Wie durch eine optionale Schleife zurück zu Block 406 dargestellt, können die Operationen der Blöcke 406, 408, 410 und 412 auf laufender Basis durchgeführt werden, um das zum Patrol-Scrubbing verwendete Muster basierend auf den neuesten überwachten und/oder vorhergesagten Speicherzugriffsmustern anzupassen. In der Praxis können die Patrol-Scrubbing-Operationen für mehrere Prozesse und (falls zutreffend) mehrere Mandanten allgemein parallel durchgeführt werden, wobei das Muster periodisch aktualisiert wird.
-
Techniken zum Vorhersagen von Speicherzugriffsmustern sind in der oben beschriebenen Abhandlung „Learning memory access patterns“ beschrieben. In manchen Ausführungsformen kann zum Beispiel Speichervorabrufen beobachtet werden, um ein unter Verwendung von Patrol-Scrubbing einzusetzendes Speicherzugriffsmuster zu bestimmen.
-
Vorabrufer sind Hardwarestrukturen, die zukünftige Speicherzugriffe aus vergangener Speicherzugriffshistorie vorhersagen. Sie können im Allgemeinen in zwei Kategorien unterteilt werden: Stride-Vorabrufer und Korrelationsvorabrufer. Stride-Vorabrufer werden üblicherweise in modernen Prozessoren implementiert und rasten auf stabile, wiederholbare Deltas ein (Differenzen zwischen nachfolgenden Speicheradressen). Bei einem Zugriffsmuster, das jedes Mal vier zu einer Speicheradresse addiert (0, 4, 8, 12), wird zum Beispiel ein Stride-Vorabrufer dieses Delta lernen und versuchen, vor dem Bedarfsstrom vorabzurufen, indem parallele Zugriffe auf potenzielle zukünftige Adressziele (16, 20, 24) bis zu einer festgelegten Vorabrufdistanz gestartet werden. Korrelationsvorabrufer versuchen, Muster zu lernen, die sich wiederholen können, aber nicht so konsistent wie ein einziges stabiles Delta sind. Sie speichern die vergangene Historie von Speicherzugriffen in großen Tabellen und sagen unregelmäßigere Muster besser vorher als Stride-Vorabrufer. Beispiele für Korrelationsvorabrufer beinhalten Markov-Vorabrufer, GHB-Vorabrufer und neuere Arbeiten, die größere speicherinterne Strukturen nutzen.
-
5 veranschaulicht ein beispielhaftes System 500. In einigen Beispielen, wie in 5 gezeigt, beinhaltet das System 500 einen Prozessor und Elemente eines Speicheruntersystems in einer Rechenvorrichtung. Der Prozessor 510 repräsentiert eine Verarbeitungseinheit eines Rechensystems, das ein Betriebssystem (OS) und Anwendungen ausführen kann, die kollektiv als Host oder Benutzer des Speicheruntersystems bezeichnet werden können. Das OS und die Anwendungen führen Operationen aus, die zu Speicherzugriffen führen. Der Prozessor 510 kann einen oder mehrere separate Prozessoren beinhalten. Jeder separate Prozessor kann eine einzelne Verarbeitungseinheit, eine Mehrkernverarbeitungseinheit oder eine Kombination beinhalten. Die Verarbeitungseinheit kann ein Primärprozessor, wie etwa eine Zentralverarbeitungseinheit (CPU), ein Peripherieprozessor, wie etwa eine Grafikverarbeitungseinheit (GPU), oder eine Kombination sein. Speicherzugriffe können auch durch Vorrichtungen wie eine Netzwerksteuerung oder Festplattensteuerung initiiert werden. Solche Vorrichtungen können in einigen Systemen mit dem Prozessor integriert sein oder über einen Bus (z. B. einen PCI-Express-Bus) an den Prozessor angeschlossen sein, oder eine Kombination davon. Das System 500 kann als ein System-on-Chip (SOC) implementiert sein oder kann mit eigenständigen Komponenten implementiert sein.
-
Die Bezugnahme auf Speichervorrichtungen kann für unterschiedliche Speichertypen gelten. Speichervorrichtungen bezieht sich oftmals auf flüchtige Speichertechnologien, wie etwa DRAM. Zusätzlich oder alternativ zu flüchtigem Speicher kann sich in manchen Beispielen ein Bezug auf Speichervorrichtungen auf eine nichtflüchtige Speichervorrichtung beziehen, deren Zustand festgelegt ist, selbst wenn die Leistung zu der Vorrichtung unterbrochen wird. In einem Beispiel ist die nichtflüchtige Speichervorrichtung eine blockadressierbare Speichervorrichtung, wie etwa NAND- oder NOR-Technologien. Eine Speichervorrichtung kann auch byte- oder blockadressierbare Typen von nichtflüchtigem Speicher mit einer 3-dimensionalen (3-D) Crosspoint-Speicherstruktur beinhalten, die unter anderem Chalkogenid-Phasenwechselmaterial (z. B. Chalkogenidglas) beinhaltet, nachfolgend als „3-D-Crosspoint-Speicher“ bezeichnet. Nichtflüchtige Speichertypen können auch andere Typen von byte- oder blockadressierbarem nichtflüchtigem Speicher beinhalten, wie etwa unter anderem Mehrfachschwellenpegel-NAND-Flash-Speicher, NOR-Flash-Speicher, Einzel- oder Mehrfachpegel-Phasenwechselspeicher (PCM), resistiver Speicher, Nanodrahtspeicher, ferroelektrischer Transistor-Direktzugriffsspeicher (FeTRAM), antiferroelektrischer Speicher, resistiver Speicher einschließlich der Metalloxid-Basis, der Sauerstoffleerstellen-Basis und des leitfähigen Brücken-Direktzugriffsspeichers (CB-RAM), einen spintronischen Magnetübergangsspeicher, einen Magnettunnelübergang(MTJ)-Speicher (MTJ: Magnetic Tunnel Junction), einen Domänenwand(DW)- und Spin-Orbit-Transfer(SOT)-Speicher, einen thyristorbasierten Speicher, einen magnetoresistiven Direktzugriffsspeicher (MRAM), der Memristor-Technologie beinhaltet, einen Spin-Transfer-Torque-MRAM (STT-MRAM) oder eine Kombination beliebiger der Obigen.
-
Beschreibungen hierin, die sich auf ein „RAM“ oder eine „RAM-Vorrichtung“ beziehen, können für jegliche Speichervorrichtungen gelten, die einen Direktzugriff gestatten, sei es flüchtig oder nichtflüchtig. Beschreibungen, die sich auf „DRAM“, „SDRAM“, „DRAM-Vorrichtung“ oder „SDRAM-Vorrichtung“ beziehen, können sich auf eine flüchtige Direktzugriffsspeichervorrichtung beziehen. Die Speichervorrichtung, der SDRAM oder DRAM können auf den Die selbst, auf ein paketisiertes Speicherprodukt, das einen oder mehrere Dies beinhaltet, oder beides verweisen. In manchen Beispielen kann ein System mit flüchtigem Speicher, der aufgefrischt werden muss, auch zumindest etwas nichtflüchtigen Speicher beinhalten.
-
Die Speichersteuerung 520, wie in 5 gezeigt, kann eine oder mehrere Speichersteuerungsschaltungen oder -vorrichtungen für das System 500 repräsentieren. Außerdem kann die Speichersteuerung 520 Logik und/oder Merkmale beinhalten, die Speicherzugriffsbefehle als Reaktion auf die Ausführung von Operationen durch den Prozessor 510 erzeugen. In manchen Beispielen kann die Speichersteuerung 520 auf eine oder mehrere Speichervorrichtungen 540 zugreifen. Für diese Beispiele können die eine oder die mehreren Speichervorrichtungen 540 SDRAM- oder DRAM-Vorrichtungen gemäß beliebigen oben genannten sein. Die eine oder die mehreren Speichervorrichtungen 540 können durch unterschiedliche Kanäle organisiert und verwaltet werden, wobei diese Kanäle über Busse und Signalleitungen parallel mit mehreren Speichervorrichtungen gekoppelt sein können. Jeder Kanal kann unabhängig betreibbar sein. Somit kann auf separate Kanäle unabhängig zugegriffen werden und diese unabhängig gesteuert werden, und das Timing, der Datentransfer, Befehls- und Adressaustausch und andere Operationen können für jeden Kanal separat sein. Kopplung kann sich auf eine elektrische Kopplung, kommunikative Kopplung, physische Kopplung oder eine Kombination von diesen beziehen. Physische Kopplung kann direkten Kontakt beinhalten. Elektrische Kopplung beinhaltet zum Beispiel eine Schnittstelle oder Zwischenverbindung, die einen elektrischen Fluss zwischen Komponenten ermöglicht oder eine Signalisierung zwischen Komponenten ermöglicht oder beides. Kommunikative Kopplung beinhaltet zum Beispiel Verbindungen, einschließlich drahtgebundener oder drahtloser, die es Komponenten ermöglichen, Daten auszutauschen.
-
Gemäß manchen Beispielen werden Einstellungen für jeden Kanal durch separate Modusregister oder andere Registereinstellungen gesteuert. Für diese Beispiele kann die Speichersteuerung 520 einen separaten Speicherkanal verwalten, obwohl das System 500 so konfiguriert sein kann, dass es mehrere Kanäle aufweist, die durch eine einzelne Speichersteuerung verwaltet werden, oder dass es mehrere Speichersteuerungen auf einem einzelnen Kanal aufweist. In einem Beispiel ist die Speichersteuerung 520 Teil des Prozessors 510, wie etwa Logik und/oder Merkmale der Speichersteuerung 520 sind auf demselben Die implementiert oder in demselben Package-Raum wie der Prozessor 510 implementiert, manchmal als eine integrierte Speichersteuerung bezeichnet.
-
Die Speichersteuerung 520 beinhaltet eine Eingabe/Ausgabe(E/A)-Schnittstellenschaltungsanordnung 522 zum Koppeln mit einem Speicherbus, wie etwa einem Speicherkanal, wie oben erwähnt. Die E/A-Schnittstellenschaltungsanordnung 522 (sowie die E/A-Schnittstellenschaltungsanordnung 542 der einen oder der mehreren Speichervorrichtungen 540) kann Pins, Pads, Verbinder, Signalleitungen, Leiterbahnen oder Drähte oder andere Hardware zum Verbinden der Vorrichtungen oder eine Kombination von diesen beinhalten. Die E/A-Schnittstellenschaltungsanordnung 522 kann eine Hardwareschnittstelle beinhalten. Wie in 5 gezeigt, beinhaltet die E/A-Schnittstellenschaltungsanordnung 522 zumindest Treiber/Sendeempfänger für Signalleitungen. Üblicherweise sind Drähte in einer IC-Schnittstelle über ein Kontaktfeld, einen Pin oder einen Verbinder mit Schnittstellensignalleitungen oder -leiterbahnen oder anderen Drähten zwischen Vorrichtungen gekoppelt. Die E/A-Schnittstellenschaltungsanordnung 522 kann Treiber, Empfänger, Sendeempfänger oder Terminierung oder eine andere Schaltungsanordnung oder Kombinationen von Schaltungsanordnungen zum Austauschen von Signalen auf den Signalleitungen zwischen der Speichersteuerung 520 und der einen oder den mehreren Speichervorrichtungen 540 beinhalten. Das Austauschen von Signalen beinhaltet Übertragen und/oder Empfangen. Obwohl als die E/A-Schnittstellenschaltungsanordnung 522 von der Speichersteuerung 520 mit der E/A-Schnittstellenschaltungsanordnung 542 der einen oder der mehreren Speichervorrichtungen 540 koppelnd gezeigt, versteht es sich, dass bei einer Implementierung des Systems 500, bei der parallel auf Gruppen von Speichervorrichtung(en) 540 zugegriffen wird, mehrere Speichervorrichtungen eine E/A-Schnittstellenschaltungsanordnung zu derselben Schnittstelle der Speichersteuerung 520 beinhalten können. In einer Implementierung des Systems 500, das ein oder mehrere Speichermodule 570 beinhaltet, kann die E/A-Schnittstellenschaltungsanordnung 542 Schnittstellenhardware des einen oder der mehreren Speichermodule 570 zusätzlich zu Schnittstellenhardware für die Speichervorrichtung(en) 540 beinhalten. Andere Speichersteuerungen 520 können mehrere separate Schnittstellen zu einer oder mehreren Speichervorrichtungen der Speichervorrichtung(en) 540 beinhalten.
-
In manchen Beispielen kann die Speichersteuerung 520 mit der einen oder den mehreren Speichervorrichtungen 540 über mehrere Signalleitungen gekoppelt sein. Die mehreren Signalleitungen können zumindest einen Takt (CLK) 532, einen Befehl/eine Adresse (CMD) 534 und Schreibdaten (DQ) und Lesedaten (DQ) 536 und null oder mehr andere Signalleitungen 538 beinhalten. Gemäß manchen Beispielen kann eine Zusammensetzung von Signalleitungen, die die Speichersteuerung 520 mit der einen oder den mehreren Speichervorrichtungen 540 koppeln, kollektiv als ein Speicherbus bezeichnet werden. Die Signalleitungen für CMD 534 können als ein „Befehlsbus“, ein „C/A-Bus“ oder ein ADD/CMD-Bus oder irgendeine andere Bezeichnung, den Transfer von Befehlen angibt, bezeichnet werden. Die Signalleitungen für DQ 536 können als „Datenbus“ bezeichnet werden.
-
Gemäß manchen Beispielen können unabhängige Kanäle unterschiedliche Taktsignale, Befehlsbusse, Datenbusse und andere Signalleitungen aufweisen. Für diese Beispiele kann das System 500 als mehrere „Busse“ aufweisend angesehen werden, in dem Sinne, dass ein unabhängiger Schnittstellenpfad als ein separater Bus angesehen werden kann. Es versteht sich, dass zusätzlich zu den in 5 gezeigten Signalleitungen ein Bus auch Strobe-Signalisierungsleitungen und/oder Warnleitungen und/oder Hilfsleitungen und/oder andere Signalleitungen oder eine Kombination dieser zusätzlichen Signalleitungen beinhalten kann. Es versteht sich auch, dass serielle Bustechnologien zum Übertragen von Signalen zwischen der Speichersteuerung 520 und der einen oder den mehreren Speichervorrichtungen 540 verwendet werden können. Ein Beispiel einer seriellen Bustechnologie ist die 8B10B-Codierung und -Übertragung von Hochgeschwindigkeitsdaten mit eingebettetem Takt über ein einziges Differenzpaar von Signalen in jeder Richtung. In manchen Beispielen repräsentiert CMD 534 Signalleitungen, die parallel unter mehreren Speichervorrichtung(en) 540 geteilt werden. In anderen Beispielen teilen sich mehrere Speichervorrichtungen Codierungsbefehlssignalleitungen des CMD 534 und weisen jeweils eine separate Chipauswahl(CS_n)-Signalleitung zum Auswählen individueller Speichervorrichtung(en) 540 auf.
-
In manchen Beispielen beinhaltet der Bus zwischen der Speichersteuerung 520 und der einen oder den mehreren Speichervorrichtungen 540 einen untergeordneten Befehlsbus, der über Signalleitungen geführt wird, die im CMD 534 enthalten sind, und einen untergeordneten Datenbus zum Führen der Schreib- und Lesedaten, die über Signalleitungen geführt werden, die im DQ 536 enthalten sind. In manchen Beispielen können CMD 534 und DQ 536 separat bidirektionale Leitungen beinhalten. In anderen Beispielen kann DQ 536 unidirektionale Schreibsignalleitungen zum Schreiben von Daten von dem Host in den Speicher und unidirektionale Leitungen zum Lesen von Daten von dem Speicher in den Host beinhalten.
-
Gemäß manchen Beispielen können gemäß einer gewählten Speichertechnologie und einem gewählten Systemdesign Signalleitungen, die in anderen 538 enthalten sind, einen Speicherbus oder untergeordneten Bus erweitern. Zum Beispiel Strobe-Leitung-Signalleitungen für ein DQS. Basierend auf einem Design des Systems 500 oder einer Speichertechnologieimplementierung kann ein Speicherbus mehr oder weniger Bandbreite pro Speichervorrichtung aufweisen, die in der einen oder den mehreren Speichervorrichtungen 540 enthalten ist. Der Speicherbus kann Speichervorrichtungen unterstützen, die in der einen oder den mehreren Speichervorrichtungen 540 enthalten sind, die entweder eine x32-Schnittstelle, eine x16-Schnittstelle, eine x8-Schnittstelle oder eine andere Schnittstelle aufweisen. Die Konvention „xW“, wobei W eine ganze Zahl ist, die sich auf eine Schnittstellengröße oder Breite der Schnittstelle der Speichervorrichtung(en) 540 bezieht, repräsentiert eine Anzahl von Signalleitungen zum Austauschen von Daten mit der Speichersteuerung 520. Die Schnittstellengröße dieser Speichervorrichtungen kann ein steuernder Faktor dafür sein, wie viele Speichervorrichtungen gleichzeitig pro Kanal in dem System 500 verwendet oder parallel mit denselben Signalleitungen gekoppelt werden können. In manchen Beispielen können Speichervorrichtungen mit hoher Bandbreite, Speichervorrichtungen mit breiter Schnittstelle oder gestapelte Speichervorrichtungen oder Kombinationen breitere Schnittstellen ermöglichen, wie etwa eine x128-Schnittstelle, eine x256-Schnittstelle, eine x512-Schnittstelle, eine x1024-Schnittstelle oder eine andere Datenbusschnittstellenbreite.
-
Gemäß manchen Beispielen repräsentieren die eine oder die mehreren Speichervorrichtungen 540 Speicherressourcen für das System 500. Für diese Beispiele ist jede Speichervorrichtung, die in der einen oder den mehreren Speichervorrichtungen 540 enthalten ist, ein separater Speicher-Die. Die separaten Speichervorrichtungen können eine Schnittstelle mit mehreren (z. B. 2) Kanälen pro Vorrichtung oder Die bilden. Eine gegebene Speichervorrichtung der Speichervorrichtung(en) 540 kann eine E/A-Schnittstellenschaltungsanordnung 542 beinhalten und kann eine Bandbreite aufweisen, die durch eine Schnittstellenbreite bestimmt wird, die mit einer Implementierung oder Konfiguration der gegebenen Speichervorrichtung (z. B. x16 oder x8 oder eine andere Schnittstellenbandbreite) assoziiert ist. Die E/A-Schnittstellenschaltungsanordnung 542 kann ermöglichen, dass die Speichervorrichtungen eine Schnittstelle mit der Speichersteuerung 520 bilden. Die E/A-Schnittstellenschaltungsanordnung 542 kann eine Hardwareschnittstelle beinhalten und koordiniert mit der E/A-Schnittstellenschaltungsanordnung 522 der Speichersteuerung 520 arbeiten.
-
In einigen Beispielen können mehrere Speichervorrichtungen 540 parallel mit denselben Befehls- und Datenbussen (z. B. über CMD 534 und DQ536) verbunden sein. In anderen Beispielen können mehrere Speichervorrichtungen 540 parallel mit demselben Befehlsbus verbunden sein, aber mit unterschiedlichen Datenbussen verbunden sein. Beispielsweise kann das System 500 mit mehreren Speichervorrichtungen 540 konfiguriert sein, die parallel gekoppelt sind, wobei jede Speichervorrichtung auf einen Befehl reagiert, und auf Speicherressourcen 560 innerhalb jeder Speichervorrichtung zugreift. Für eine Schreiboperation kann eine individuelle Speichervorrichtung der Speichervorrichtung(en) 540 einen Teil des Gesamtdatenworts schreiben, und für eine Leseoperation kann die individuelle Speichervorrichtung einen Teil des Gesamtdatenworts abrufen. Als nicht einschränkende Beispiele kann eine spezifische Speichervorrichtung 8 Bits eines 128-Bit-Datenworts für eine Lese- oder Schreiboperation oder 8 Bits oder 16 Bits (in Abhängigkeit von einer x8- oder einer x16-Vorrichtung) eines 256-Bit-Datenworts bereitstellen bzw. empfangen. Die verbleibenden Bits des Wortes können von anderen Speichervorrichtungen parallel bereitgestellt oder empfangen werden.
-
Gemäß manchen Beispielen können die Speichervorrichtung(en) 540 direkt auf einer Hauptplatine oder Hostsystemplattform (z. B. einer PCB (Leiterplatte), auf der der Prozessor 510 angeordnet ist) einer Rechenvorrichtung angeordnet sein. Die Speichervorrichtung(en) 540 können in einem oder mehreren Speichermodulen 570 organisiert sein. In einigen Beispielen können das eine oder die mehreren Speichermodule 570 Dual-Inline-Speichermodule (DIMMs) repräsentieren. In manchen Beispielen können das eine oder die mehreren Speichermodule 570 andere Organisationen oder Konfigurationen mehrerer Speichervorrichtungen repräsentieren, die sich zumindest einen Teil einer Zugriffs- oder Steuerschaltungsanordnung teilen, die eine separate Schaltung, eine separate Vorrichtung oder eine von der Hostsystemplattform separate Platine sein kann. In manchen Beispielen können das eine oder die mehreren Speichermodule 570 mehrere Speichervorrichtungen 540 beinhalten, und das eine oder die mehreren Speichermodule 570 können Unterstützung für mehrere separate Kanäle zu der einen oder den mehreren enthaltenen Speichervorrichtungen 540 beinhalten, die auf ihnen angeordnet sind.
-
In manchen Beispielen können die Speichervorrichtung(en) 540 in ein gleiches Package wie die Speichersteuerung 520 integriert sein. Zum Beispiel in einem Mehrfachchipmodul (MCM), einem Package-on-Package mit Silizium-Durchkontaktierung (TSV: Through-Silicon Via) oder anderen Techniken oder Kombinationen integriert. Gleichermaßen können in einigen Beispielen die Speichervorrichtung(en) 540 in ein oder mehrere Speichermodule 570 integriert sein, die selbst in das gleiche Package wie die Speichersteuerung 520 integriert sein können. Es versteht sich, dass für diese und andere Beispiele die Speichersteuerung 520 Teil des Prozessors 510 sein oder mit diesem integriert sein kann.
-
Wie in 5 gezeigt, beinhalten die Speichervorrichtung(en) 540 in manchen Beispielen Speicherressourcen 560. Die Speicherressourcen 560 können einzelne Arrays von Speicherorten oder Speicherungsorten für Daten repräsentieren. Die Speicherressourcen 560 können als Zeilen von Daten verwaltet werden, auf die über Wortleitungssteuerung (Zeilen) und Bitleitungssteuerung (einzelne Bits innerhalb einer Zeile) zugegriffen wird. Die Speicherressourcen 560 können als separate Kanäle, Ränge und Bänke von Speicher organisiert sein. Kanäle können sich auf unabhängige Steuerpfade zu Speicherungsorten innerhalb der Speichervorrichtung(en) 540 beziehen. Ränge können sich auf gemeinsame Orte über mehrere Speichervorrichtungen (z. B. gleiche Zeilenadressen innerhalb unterschiedlicher Speichervorrichtungen) beziehen. Bänke können auf Arrays von Speicherorten innerhalb einer gegebenen Speichervorrichtung der Speichervorrichtung(en) 540 verweisen. Bänke können in Unterbänke mit wenigstens einem Teil der gemeinsam genutzten Schaltungsanordnung (z. B. Treiber, Signalleitungen, Steuerlogik) für die Unterbänke unterteilt sein, was eine separate Adressierung und einen separaten Zugriff ermöglicht. Es versteht sich, dass sich Kanäle, Ränge, Bänke, Unterbänke, Bankgruppen oder andere Organisationen der Speicherorte und Kombinationen der Organisationen in ihrer Anwendung überlappen können, um auf die Speicherressourcen 560 zuzugreifen. Zum Beispiel kann auf die gleichen physischen Speicherorte über einen spezifischen Kanal als eine spezifische Bank zugegriffen werden, die auch zu einem Rang gehören kann. Somit kann die Organisation der Speicherressourcen 560 auf eine inklusive, anstatt exklusive Weise verstanden werden.
-
Gemäß manchen Beispielen, wie in 5 gezeigt, beinhalten die Speichervorrichtung(en) 540 ein oder mehrere Register 544. Das eine oder die mehreren Register 544 können eine oder mehrere Speicherungsvorrichtungen oder Speicherungsorte repräsentieren, die eine Konfiguration oder Einstellungen für den Betrieb der Speichervorrichtung(en) 540 bereitstellen. In einem Beispiel können das eine oder die mehreren Register 544 einen Speicherungsort für die Speichervorrichtung(en) 540 bereitstellen, um Daten für den Zugriff durch die Speichersteuerung 520 als Teil einer Steuer- oder Verwaltungsoperation zu speichern. Das eine oder die mehreren Register 544 können zum Beispiel ein oder mehrere Modusregister (MRs) beinhalten und/oder können ein oder mehrere Mehrzweckregister beinhalten.
-
In einigen Beispielen kann das Schreiben oder Programmieren eines oder mehrerer Register des einen oder der mehreren Register 544 die Speichervorrichtung(en) 540 dazu konfigurieren, in unterschiedlichen „Modi“ zu arbeiten. Für diese Beispiele können Befehlsinformationen, die in das eine oder die mehreren Register geschrieben oder programmiert werden, unterschiedliche Modi innerhalb der Speichervorrichtung(en) 540 auslösen. Zusätzlich oder alternativ können unterschiedliche Modi auch unterschiedliche Operationen von Adressinformationen oder anderen Signalleitungen in Abhängigkeit von dem ausgelösten Modus auslösen. Programmierte Einstellungen des einen oder der mehreren Register 544 können eine Konfiguration von E/A-Einstellungen angeben oder auslösen. Zum Beispiel Konfiguration von Timing, Terminierung, On-Die-Terminierung (ODT), Treiberkonfiguration oder andere E/A-Einstellungen.
-
Gemäß manchen Beispielen beinhalten die Speichervorrichtung(en) 540 die ODT 546 als Teil der Schnittstellenhardware, die mit der E/A-Schnittstellenschaltungsanordnung 542 assoziiert ist. Die ODT 546 kann Einstellungen für Impedanz bereitstellen, die an die Schnittstelle zu spezifizierten Signalleitungen anzulegen ist. Zum Beispiel kann die ODT 546 dazu ausgelegt sein, eine Impedanz an Signalleitungen anzulegen, die in DQ 536 oder CMD 534 enthalten sind. Die ODT-Einstellungen für die ODT 546 können basierend darauf geändert werden, ob eine Speichervorrichtung der Speichervorrichtung(en) 540 ein ausgewähltes Ziel einer Zugriffsoperation oder eine Nichtziel-Speichervorrichtung ist. ODT-Einstellungen für die ODT 546 können Timing und Reflexionen der Signalisierung auf terminierten Signalleitungen beeinflussen, die zum Beispiel in CMD 534 oder DQ 536 enthalten sind. Die Steuerung über die ODT-Einstellung für die ODT 546 kann einen Betrieb mit höherer Geschwindigkeit mit verbessertem Abstimmen von angelegter Impedanz und Belastung ermöglichen. Impedanz und Belastung können an spezifische Signalleitungen der E/A-Schnittstellenschaltungsanordnung 542, 522 (z. B. CMD 534 und DQ 536) angelegt werden und werden nicht notwendigerweise an alle Signalleitungen angelegt.
-
In manchen Beispielen, wie in 5 gezeigt, beinhalten die Speichervorrichtung(en) 540 eine Steuerung 550. Die Steuerung 550 kann Steuerlogik innerhalb der Speichervorrichtung(en) 540 repräsentieren, um interne Operationen innerhalb der Speichervorrichtung(en) 540 zu steuern. Zum Beispiel decodiert die Steuerung 550 Befehle, die durch die Speichersteuerung 520 gesendet werden, und erzeugt interne Operationen, um die Befehle auszuführen oder zu erfüllen. Die Steuerung 550 kann als eine interne Steuerung bezeichnet werden und ist von der Speichersteuerung 520 des Hosts getrennt. Die Steuerung 550 kann Logik und/oder Merkmale beinhalten, um zu bestimmen, welcher Modus basierend auf programmierten oder standardmäßigen Einstellungen ausgewählt wird, die in dem einen oder den mehreren Registern 544 angegeben sind, und die interne Ausführung von Operationen für den Zugriff auf die Speicherressourcen 560 oder andere Operationen basierend auf dem ausgewählten Modus zu konfigurieren. Die Steuerung 550 erzeugt Steuersignale, um das Routing von Bits innerhalb der Speichervorrichtung(en) 540 zu steuern, um eine zweckmäßige Schnittstelle für den ausgewählten Modus bereitzustellen und einen Befehl an die zweckmäßigen Speicherorte oder Adressen der Speicherressourcen 560 zu leiten. Die Steuerung 550 beinhaltet eine Befehls(CMD)-Logik 552, die eine Befehlscodierung decodieren kann, die auf Befehls- und Adresssignalleitungen empfangen wird. Somit kann die CMD-Logik 552 ein Befehlsdecodierer sein oder diesen beinhalten. Mit der Befehlslogik 552 kann die Speichervorrichtung Befehle identifizieren und interne Operationen zum Ausführen angeforderter Befehle erzeugen.
-
Wieder unter Bezugnahme auf die Speichersteuerung 520 beinhaltet die Speichersteuerung 520 CMD-Logik 524, die Logik und/oder Merkmale zum Erzeugen von Befehlen zum Senden an die Speichervorrichtung(en) 540 repräsentiert. Die Erzeugung der Befehle kann sich auf den Befehl vor dem Planen oder die Vorbereitung von in einer Warteschlange eingereihten Befehlen, die bereit sind, gesendet zu werden, beziehen. Allgemein beinhaltet die Signalisierung in Speicheruntersystemen Adressinformationen innerhalb oder begleitend mit dem Befehl, um einen oder mehrere Speicherorte anzugeben oder auszuwählen, an denen die Speichervorrichtung(en) 540 den Befehl ausführen sollten. Als Reaktion auf das Planen von Transaktionen für die Speichervorrichtung(en) 540 kann die Speichersteuerung 520 Befehle über die E/A-Schnittstellenschaltungsanordnung 522 ausgeben, um zu bewirken, dass die Speichervorrichtung(en) 540 die Befehle ausführen. In einigen Beispielen empfängt und decodiert die Steuerung 550 der Speichervorrichtung(en) 540 Befehls- und Adressinformationen, die über die E/A-Schnittstellenschaltungsanordnung 542 von der Speichersteuerung 520 empfangen werden. Basierend auf den empfangenen Befehls- und Adressinformationen kann die Steuerung 550 das Timing von Operationen der Logik, Merkmale und/oder Schaltungsanordnung innerhalb der Speichervorrichtung(en) 540 steuern, um die Befehle auszuführen. Die Steuerung 550 kann dazu eingerichtet sein, gemäß Standards oder Spezifikationen, wie etwa Timing- und Signalisierungsanforderungen für die Speichervorrichtung(en) 540, zu arbeiten. Die Speichersteuerung 520 kann die Einhaltung von Standards oder Spezifikationen durch Zugriffsplanung und -steuerung implementieren.
-
In einigen Beispielen beinhaltet die Speichersteuerung 520 eine Auffrischungs(REF)-Logik 526. Die REF-Logik 526 kann für Speicherressourcen verwendet werden, die flüchtig sind und aufgefrischt werden müssen, um einen deterministischen Zustand beizubehalten. Die REF-Logik 526 kann zum Beispiel einen Ort zur Auffrischung und einen Typ der durchzuführenden Auffrischung angeben. Die REF-Logik 526 kann Selbstauffrischung innerhalb der Speichervorrichtung(en) 540 auslösen oder externe Auffrischungen ausführen, die als Autoauffrischungsbefehle bezeichnet werden können, indem Auffrischungsbefehle gesendet werden, oder eine Kombination. Gemäß manchen Beispielen unterstützt das System 500 Alle-Bänke-Auffrischungen sowie Pro-Bank-Auffrischungen. Alle-Bänke-Auffrischungen bewirken die Auffrischung von Bänken innerhalb aller Speichervorrichtungen 540, die parallel gekoppelt sind. Pro-Bank-Auffrischungen bewirken die Auffrischung einer spezifizierten Bank innerhalb einer spezifizierten Speichervorrichtung der Speichervorrichtung(en) 540. In einigen Beispielen beinhaltet die Steuerung 550 innerhalb der Speichervorrichtung(en) 540 eine REF-Logik 554, um eine Auffrischung innerhalb der Speichervorrichtung(en) 540 anzuwenden. Die REF-Logik 554 kann zum Beispiel interne Operationen erzeugen, um eine Auffrischung gemäß einer externen Auffrischung durchzuführen, die von der Speichersteuerung 520 empfangen wird. Die REF-Logik 554 kann bestimmen, ob eine Auffrischung an die Speichervorrichtung(en) 540 gerichtet ist, und bestimmen, welche Speicherressourcen 560 als Reaktion auf den Befehl aufgefrischt werden sollen.
-
Wie ferner veranschaulicht, beinhaltet die Speichersteuerung 520 eine ähnliche Logik wie jene, die für die Speichersteuerung 200 in 2 gezeigt ist, einschließlich Eingangslogik 102, Mustergenerator 104, Konfigurationsschnittstellen 202, Systemadressendecodierer 204, Speicher-Scrubber-QoS-Logik 106, Speicher-Scrubber-Logik 108a und existierender Logik 110. Die Speichersteuerung 520 würde auch Vorkehrungen zum Erzeugen eines Zugriffs auf eine QoS-Parametertabelle ähnlich der oben besprochenen Tabelle 206 in 2 aufweisen (in 5 nicht gezeigt).
-
In einigen Ausführungsformen kann die Scrubbing-Logik auf den Speichervorrichtungen 540 und/oder den Speichermodulen 570 bereitgestellt sein. Dies ist zum Beispiel als Scrubber-Logik 556 dargestellt, die Teil der Steuerung 550 sein könnte oder separate Logik umfassen kann. In einigen Ausführungsformen kann die Scrubber-Logik 556 ermöglichen, dass Patrol-Scrubbing-Operationen in Verbindung mit der Speicher-Scrubber-Logik 108a durchgeführt werden. In einigen Ausführungsformen kann die Scrubber-Logik 556 eine ähnliche Logik implementieren, die hierin für die Speicher-Scrubber-Logik 108a gezeigt und beschrieben ist. In einigen Ausführungsformen kann die Scrubber-Logik 556 einen Beschleuniger oder dergleichen beinhalten, der dazu programmiert sein kann, Speicher-Scrubbing-Operationen unter Verwendung eines oder mehrerer Muster durchzuführen, die durch den Mustergenerator 104 erzeugt werden.
-
Anwendung auf mehrstufige Speicherarchitekturen
-
Die hierin beschriebenen Lehren und Prinzipien können unter Verwendung verschiedener Arten von gestuften Speicherarchitekturen implementiert werden. Zum Beispiel veranschaulicht 6 eine abstrakte Ansicht einer gestuften Speicherarchitektur, die drei Stufen einsetzt: 1) „Nah“-Speicher; 2) „Fern“-Speicher; und 3) SCM (Speicherungsklassenspeicher). Die Terminologie „Nah“- und „Fern“-Speicher bezieht sich nicht auf den physischen Abstand zwischen einer CPU und der assoziierten Speichervorrichtung, sondern stattdessen auf die Latenz und/oder Bandbreite zum Zugreifen auf Daten, die in der Speichervorrichtung gespeichert sind. SCM-Speicher ist ein Typ von gepooltem Speicher - wenn sich der gepoolte Speicher in einem separaten Gehäuse, Schlitten oder Schub oder in einem separaten Rack befindet, das über ein Netzwerk oder Fabric verbunden ist, kann der gepoolte Speicher als entfernter gepoolter Speicher bezeichnet werden.
-
6 zeigt eine Plattform 600, die eine Zentralverarbeitungseinheit (CPU) 602 beinhaltet, die mit einem Nahspeicher 604 und einem Fernspeicher 606 gekoppelt ist. Der Rechenknoten 600 ist ferner mit dem SCM-Speicher 610 und 612 in SCM-Speicherknoten 614 und 616 verbunden, die über ein Fabric 618 mit hoher Geschwindigkeit und niedriger Latenz mit dem Rechenknoten 600 gekoppelt sind. In der veranschaulichten Ausführungsform ist der SCM-Speicher 610 mit einer CPU 620 in dem SCM-Knoten 614 gekoppelt und ist der SMC-Speicher 612 mit einer CPU 622 in dem SCM-Knoten 616 gekoppelt. 6 zeigt ferner eine zweite oder dritte Speicherstufe, die einen EA(Eingabe-Ausgabe)-Speicher 624 umfasst, der in einer CXL(Compute Express Link)-Karte 626 implementiert ist, die über ein CXL-Interconnect 628 mit der Plattform 600 gekoppelt ist. Die CLX-Karte 626 beinhaltet ferner einen Agenten 630 und eine Speichersteuerung (MC) 632
-
In einem Beispiel umfasst der Stufe-1-Speicher DDR und/oder HBM, der Stufe-2-Speicher umfasst 3D-Crosspoint-Speicher und Stufe 3 umfasst gepoolten SCM-Speicher, wie etwa 3D-Crosspoint-Speicher. In manchen Ausführungsformen kann die CPU eine Speichersteuerung bereitstellen, die Zugriff auf den Stufe-2-Speicher unterstützt. In manchen Ausführungsformen kann der Stufe-2-Speicher Speichervorrichtungen umfassen, die einen DIMM-Formfaktor einsetzen.
-
Für CXL kann dem Agenten 630 oder anderweitig Logik in der MC 632 Anweisungen und/oder Daten bereitgestellt werden, um Scrubbing-Operationen auf dem EA-Speicher 624 durchzuführen. Beispielsweise könnten solche Anweisungen und/oder Daten über den CXL-Link 628 unter Verwendung eines CXL-Protokolls gesendet werden. Für den gepoolten SMC-Speicher oder dergleichen kann eine CPU oder ein anderer Typ von Verarbeitungselement (Mikro-Engine, FPGA usw.) auf dem SCM-Knoten bereitgestellt sein und zum Durchführen der hierin offenbarten Scrubbing-Operationen verwendet werden. Eine solche CPU kann eine Konfiguration ähnlich zu dem System 500 aufweisen, bei dem ein Prozessor eine integrierte Speichersteuerung aufweist, oder die Speichersteuerung kann separat sein.
-
7 veranschaulicht ein beispielhaftes System 700. In einigen Beispielen kann das System 700 ein Rechensystem sein, in dem ein Speichersystem DCA-Trainingsalgorithmen implementieren kann. Das System 700 repräsentiert eine Rechenvorrichtung gemäß einem beliebigen hierin beschriebenen Beispiel und kann ein Laptop-Computer, ein Desktop-Computer, ein Tablet-Computer, ein Server, ein Gaming- oder Unterhaltungssteuersystem, ein Scanner, ein Kopierer, ein Drucker, eine Routing- oder Switching-Vorrichtung, eine eingebettete Rechenvorrichtung, ein Smartphone, eine Wearable-Vorrichtung, eine Internet-der-Dinge-Vorrichtung oder eine andere elektronische Vorrichtung sein.
-
Das System 700 beinhaltet einen Prozessor 710, der eine Verarbeitung, Betriebsverwaltung und Ausführung von Anweisungen für das System 700 bereitstellt. Der Prozessor 710 kann eine beliebige Art von Mikroprozessor, Zentralverarbeitungseinheit (CPU), Grafikverarbeitungseinheit (GPU), Verarbeitungskern oder andere Verarbeitungshardware zum Bereitstellen von Verarbeitung für das System 700 oder eine Kombination von Prozessoren beinhalten. Der Prozessor 710 steuert den Gesamtbetrieb des Systems 700 und kann ein(e) oder mehrere programmierbare Allzweck- oder Spezialmikroprozessoren, Digitalsignalprozessoren (DSPs), programmierbare Steuerungen, anwendungsspezifische integrierte Schaltungen (ASICs), programmierbare Logikvorrichtungen (PLDs) oder dergleichen oder eine Kombination solcher Vorrichtungen sein oder beinhalten.
-
In einem Beispiel beinhaltet das System 700 eine Schnittstelle 712, die mit dem Prozessor 710 gekoppelt ist und eine Schnittstelle mit höherer Geschwindigkeit oder eine Schnittstelle mit hohem Durchsatz für Systemkomponenten repräsentieren kann, die Verbindungen mit höherer Bandbreite benötigen, wie etwa das Speicheruntersystem 720 oder die Grafikschnittstellenkomponenten 740. Die Schnittstelle 712 repräsentiert eine Schnittstellenschaltung, die eine eigenständige Komponente sein kann oder auf einem Prozessor-Die integriert sein kann. Wo vorhanden, ist die Grafikschnittstelle 740 mit Grafikkomponenten verknüpft, um einem Benutzer des Systems 700 eine visuelle Anzeige bereitzustellen. In einem Beispiel kann die Grafikschnittstelle 740 eine HD(High Definition)-Anzeige ansteuern, die einem Benutzer eine Ausgabe liefert. High Definition kann sich auf eine Anzeige mit einer Pixeldichte von ungefähr 100 PPI (Pixel pro Zoll) oder mehr beziehen und kann Formate wie etwa Voll-HD (z. B. 1080p), Retina-Displays, 4K (Ultra-High-Definition oder UHD) oder andere beinhalten. In einem Beispiel kann die Anzeige eine Touchscreen-Anzeige enthalten. In einem Beispiel erzeugt die Grafikschnittstelle 740 eine Anzeige basierend auf Daten, die in dem Speicher 730 gespeichert sind, oder basierend auf Operationen, die durch den Prozessor 710 ausgeführt werden, oder beides. In einem Beispiel erzeugt die Grafikschnittstelle 740 eine Anzeige basierend auf Daten, die in dem Speicher 730 gespeichert sind, oder basierend auf Operationen, die durch den Prozessor 710 ausgeführt werden, oder beides.
-
Das Speicheruntersystem 720 repräsentiert den Hauptspeicher des Systems 700 und stellt eine Speicherung für Code bereit, der durch den Prozessor 710 ausgeführt werden soll, oder Datenwerte, die beim Ausführen einer Routine verwendet werden sollen. Der Speicher 730 des Speicheruntersystems 720 kann eine oder mehrere Speichervorrichtungen, wie etwa Nurlesespeicher (ROM), Flash-Speicher, eine oder mehrere Varianten von Direktzugriffsspeicher (RAM), wie etwa DRAM, oder andere Speichervorrichtungen oder eine Kombination solcher Vorrichtungen beinhalten. Der Speicher 730 speichert und hostet unter anderem das Betriebssystem (OS) 732, um eine Softwareplattform zur Ausführung von Anweisungen in dem System 700 bereitzustellen. Zusätzlich dazu können die Anwendungen 734 auf der Softwareplattform des OS 732 aus dem Speicher 730 ausgeführt werden. Die Anwendungen 734 repräsentieren Programme, die ihre eigene Betriebslogik zum Durchführen der Ausführung einer oder mehrerer Funktionen aufweisen. Die Prozesse 736 repräsentieren Agenten oder Routinen, die dem OS 732 oder einer oder mehreren Anwendungen 734 oder einer Kombination Hilfsfunktionen bereitstellen. Das OS 732, die Anwendungen 734 und die Prozesse 736 stellen Softwarelogik bereit, um Funktionen für das System 700 bereitzustellen. In einem Beispiel enthält das Speicheruntersystem 720 eine Speichersteuerung 722, die eine Speichersteuerung zum Erzeugen und Ausgeben von Befehlen an den Speicher 730 ist. Es versteht sich, dass die Speichersteuerung 722 ein physischer Teil des Prozessors 710 oder ein physischer Teil der Schnittstelle 712 sein könnte. Beispielsweise kann die Speichersteuerung 722 eine integrierte Speichersteuerung sein, die in eine Schaltung mit dem Prozessor 710 integriert ist.
-
Obwohl dies nicht speziell veranschaulicht ist, versteht es sich, dass das System 700 einen oder mehrere Busse oder Bussysteme zwischen Vorrichtungen beinhalten kann, wie etwa einen Speicherbus, einen Grafikbus, Schnittstellenbusse oder andere. Busse oder andere Signalleitungen können Komponenten kommunikativ oder elektrisch miteinander koppeln oder die Komponenten sowohl kommunikativ als auch elektrisch koppeln. Busse können physische Kommunikationsleitungen, Punkt-zu-Punkt-Verbindungen, Brücken, Adapter, Steuerungen oder eine andere Schaltungsanordnung oder eine Kombination beinhalten. Busse können zum Beispiel einen Systembus und/oder einen PCI-Bus (PCI: Peripheral Component Interconnect) und/oder einen HyperTransport- oder ISA-Bus (ISA: Industriestandard Architecture) und/oder einen SCSI-Bus (SCSI: Small Computer System Interface) und/oder einen USB (USB: Universal Serial Bus) und/oder einen IEEE-Standard-1394-Bus (IEEE: Institute of Electrical and Electronics Engineers) beinhalten.
-
In einem Beispiel beinhaltet das System 700 eine Schnittstelle 714, die mit der Schnittstelle 712 gekoppelt sein kann. Die Schnittstelle 714 kann eine Schnittstelle mit niedrigerer Geschwindigkeit als die Schnittstelle 712 sein. In einem Beispiel repräsentiert die Schnittstelle 714 eine Schnittstellenschaltung, die eigenständige Komponenten und integrierte Schaltungsanordnungen beinhalten kann. In einem Beispiel sind mehrere Benutzerschnittstellenkomponenten oder Peripheriekomponenten oder beide mit der Schnittstelle 714 gekoppelt. Die Netzwerkschnittstelle 750 stellt dem System 700 die Fähigkeit bereit, mit entfernten Vorrichtungen (z. B. Servern oder anderen Rechenvorrichtungen) über ein oder mehrere Netzwerke zu kommunizieren. Die Netzwerkschnittstelle 750 kann einen Ethernet-Adapter, drahtlose Verbindungskomponenten, Zellularnetzwerkverbindungskomponenten, USB (Universal Serial Bus) oder andere auf drahtgebundenen oder drahtlosen Standards basierende oder proprietäre Schnittstellen beinhalten. Die Netzwerkschnittstelle 750 kann Daten mit einer entfernten Vorrichtung austauschen, was Senden von im Speicher gespeicherten Daten oder Empfangen von im Speicher zu speichernden Daten beinhalten kann.
-
In einem Beispiel beinhaltet das System 700 eine oder mehrere E/A-Schnittstellen 760. Die E/A-Schnittstelle(n) 760 können eine oder mehrere Schnittstellenkomponenten beinhalten, über die ein Benutzer mit dem System 700 interagiert (z. B. akustische, alphanumerische, taktile/berührungsgestützte oder andere Schnittstellen). Die Peripherieschnittstelle 770 kann eine beliebige Hardwareschnittstelle enthalten, die oben nicht speziell erwähnt wurde. Peripheriegeräte beziehen sich im Allgemeinen auf Vorrichtungen, die eine abhängige Verbindung zum System 700 herstellen. Eine abhängige Verbindung ist eine Verbindung, bei der das System 700 die Softwareplattform oder Hardwareplattform oder beide bereitstellt, auf der die Operation ausgeführt wird und mit der ein Benutzer interagiert.
-
In einem Beispiel beinhaltet das System 700 ein Speicherungsuntersystem 780 zum Speichern von Daten auf eine nichtflüchtige Weise. In einem Beispiel können sich bei bestimmten Systemimplementierungen zumindest gewisse Komponenten des Speicherungsuntersystems 780 mit Komponenten des Speicheruntersystems 720 überlappen. Das Speicherungsuntersystem 780 beinhaltet eine oder mehrere Speicherungsvorrichtungen 784, die ein beliebiges herkömmliches Medium zum Speichern großer Datenmengen auf eine nichtflüchtige Weise sein oder beinhalten können, wie etwa eine oder mehrere magnetische, Solid-State- oder optische Platten oder eine Kombination. Die Speicherungsvorrichtung(en) 784 halten Code oder Anweisungen und Daten 786 in einem persistenten Zustand (d.h. der Wert wird trotz Unterbrechung der Leistung zu dem System 700 beibehalten). Die Speicherungsvorrichtung(en) 784 können generisch als ein „Speicher“ angesehen werden, obwohl der Speicher 730 typischerweise der Ausführungs- oder Betriebsspeicher ist, um dem Prozessor 710 Anweisungen bereitzustellen. Obwohl die Speicherungsvorrichtung(en) 784 nichtflüchtig sind, kann der Speicher 730 flüchtigen Speicher beinhalten (d.h. der Wert oder Zustand der Daten ist unbestimmt, falls die Leistung zu dem System 700 unterbrochen wird). In einem Beispiel beinhaltet das Speicherungsuntersystem 780 eine Steuerung 782, um eine Schnittstelle mit einer oder mehreren Speicherungsvorrichtungen 784 zu bilden. In einem Beispiel ist die Steuerung 782 ein physisches Teil der Schnittstelle 714 oder des Prozessors 710 oder kann Schaltungen oder Logik sowohl im Prozessor 710 als auch in der Schnittstelle 714 beinhalten.
-
Die Leistungsquelle 702 stellt Leistung an die Komponenten des Systems 700 bereit. Genauer gesagt bildet die Leistungsquelle 702 typischerweise eine Schnittstelle mit einer oder mehreren Leistungsversorgungen 704 im System 700, um den Komponenten des Systems 700 Leistung bereitzustellen. In einem Beispiel beinhaltet die Leistungsversorgung 704 einen AC-zu-DC(Wechselstrom-zu-Gleichstrom)-Adapter zum Einstecken in eine Wandsteckdose. Eine solche AC-Leistung kann eine Leistungsquelle 702 erneuerbarer Energie (z. B. Solarenergie) sein. In einem Beispiel beinhaltet die Leistungsquelle 702 eine DC-Leistungsquelle, wie etwa einen externen AC-zu-DC-Wandler. In einem Beispiel beinhaltet die Leistungsquelle 702 oder die Leistungsversorgung 704 Drahtlosladehardware zum Laden über die Nähe zu einem Ladefeld. In einem Beispiel kann die Leistungsquelle 702 eine interne Batterie oder Brennstoffzellenquelle beinhalten.
-
Wie hierin beschrieben, kann der Bezug auf Speichervorrichtungen für unterschiedliche Speichertypen gelten. Ein Speicheruntersystem, wie hierin beschrieben, kann mit einer Anzahl von Speichertechnologien oder -standards kompatibel sein, wie etwa DDR3 (Doppeldatenrate Version 3, JESD79-3, ursprünglich veröffentlicht von JEDEC (Joint Electronic Device Engineering Council) am 27 Juni 2007), DDR4 (DDR Version 4, JESD79-4, ursprünglich veröffentlicht im September 2012 von JEDEC), LPDDR3 (Niederleistung-DDR Version 3, JESD209-3B, ursprünglich veröffentlicht im August 2013 von JEDEC), LPDDR4 (Niederleistung-DDR Version 4, JESD209-4, ursprünglich veröffentlicht von JEDEC im August 2014), WIO2 (Wide I/O 2 (WideIO2), JESD229-2, ursprünglich veröffentlicht von JEDEC im August 2014), HBM (High Bandwidth Memory DRAM, JESD235, ursprünglich veröffentlicht von JEDEC im Oktober 2013), LPDDR5 (ursprünglich veröffentlicht von JEDEC im Februar 2019), HBM2 ((HBM Version 2), ursprünglich veröffentlicht von JEDEC im Dezember 2018), DDR5 (DDR Version 5, ursprünglich veröffentlicht von JEDEC im Juli 2020) oder andere oder Kombinationen von Speichertechnologien und Technologien basierend auf Ableitungen oder Erweiterungen solcher Spezifikationen.
-
Zusätzlich zur Verwendung in Rechenplattformen und Systemen mit Prozessoren können die hierin offenbarten Lehren und Prinzipien auf andere Verarbeitungseinheiten (kollektiv als XPUs bezeichnet) angewendet werden, einschließlich einer oder mehrerer von Grafikprozessoreinheiten (GPUs) oder Allzweck-GPUs (GP-GPUs), Tensorverarbeitungseinheit(TPU)-Datenverarbeitungseinheiten (DPUs), Infrastrukturverarbeitungseinheiten (IPUs), Künstliche-Intelligenz(KI)-Prozessoren oder KI-Inferenzeinheiten und/oder andere Beschleuniger, FPGAs und/oder andere programmierbare Logik (die für Rechenzwecke verwendet wird) usw. Obwohl manche der Diagramme hierin die Verwendung von Prozessoren zeigen, ist dies lediglich beispielhaft und nicht einschränkend. Allgemein kann in den veranschaulichten Ausführungsformen eine beliebige Art von XPU anstelle eines Prozessors verwendet werden. Darüber hinaus wird, wie in den folgenden Ansprüchen verwendet, der Begriff „Prozessor“ verwendet, um Prozessoren, CPUs und verschiedene Formen von XPUs generisch abzudecken.
-
Obwohl manche Ausführungsformen unter Bezugnahme auf bestimmte Implementierungen beschrieben wurden, sind andere Implementierungen gemäß manchen Ausführungsformen möglich. Außerdem müssen die Anordnung und/oder Reihenfolge von Elementen oder anderen Merkmalen, die in den Zeichnungen veranschaulicht und/oder hierin beschrieben sind, nicht auf die bestimmte veranschaulichte und beschriebene Weise angeordnet sein. Viele andere Anordnungen sind gemäß manchen Ausführungsformen möglich.
-
In jedem in einer Figur gezeigten System können die Elemente in manchen Fällen jeweils eine gleiche Bezugsziffer oder eine unterschiedliche Bezugsziffer aufweisen, um anzudeuten, dass die repräsentierten Elemente verschieden und/oder ähnlich sein könnten. Jedoch kann ein Element flexibel genug sein, um unterschiedliche Implementierungen aufzuweisen und mit manchen oder allen der hierin gezeigten oder beschriebenen Systeme zu arbeiten. Die in den Figuren gezeigten verschiedenen Elemente können die gleichen oder verschiedene sein. Welches als ein erstes Element bezeichnet wird und welches ein zweites Element genannt wird, ist willkürlich.
-
In der Beschreibung und in den Ansprüchen können die Begriffe „gekoppelt“ und „verbunden“ zusammen mit ihren Ableitungen verwendet werden. Es versteht sich, dass diese Begriffe nicht als Synonyme füreinander gedacht sind. Stattdessen kann bei bestimmten Ausführungsformen „verbunden“ verwendet werden, um anzugeben, dass sich zwei oder mehr Elemente in direktem physischem oder elektrischem Kontakt miteinander befinden. „Gekoppelt“ kann bedeuten, dass sich zwei oder mehr Elemente in direktem physischem oder elektrischem Kontakt befinden. Allerdings kann „gekoppelt“ auch bedeuten, dass sich zwei oder mehr Elemente nicht in direktem Kontakt miteinander befinden, aber dennoch kooperieren oder miteinander interagieren. Zusätzlich bedeutet „kommunikativ gekoppelt“, dass zwei oder mehr Elemente, die sich in direktem Kontakt miteinander befinden können oder nicht, in der Lage sind, miteinander zu kommunizieren. Falls beispielsweise die Komponente A mit der Komponente B verbunden ist, die im Gegenzug mit der Komponente C verbunden ist, kann die Komponente A mit der Komponente C unter Verwendung der Komponente B als Zwischenkomponente kommunikativ gekoppelt sein.
-
Eine Ausführungsform ist eine Implementierung oder ein Beispiel der Erfindungen. Ein Verweis in der Beschreibung auf „eine Ausführungsform“, „manche Ausführungsformen“ oder „andere Ausführungsformen“ bedeutet, dass ein bestimmtes Merkmal, eine bestimmte Struktur oder eine bestimmte Charakteristik, das bzw. die in Verbindung mit den Ausführungsformen beschrieben ist, in zumindest manchen Ausführungsformen, aber nicht notwendigerweise allen Ausführungsformen der Erfindungen enthalten ist. Die verschiedenen Vorkommen von „einer Ausführungsform“ oder „manchen Ausführungsformen“ beziehen sich nicht notwendigerweise alle auf die gleichen Ausführungsformen.
-
Nicht alle hierin beschriebenen und veranschaulichten Komponenten, Merkmale, Strukturen, Charakteristiken usw. müssen in einer bestimmten Ausführungsform oder bestimmten Ausführungsformen enthalten sein. Falls die Beschreibung angibt, dass zum Beispiel eine Komponente, ein Merkmal, eine Struktur oder eine Charakteristik enthalten sein „kann“ oder „könnte“, muss diese bestimmte Komponente, dieses bestimmte Merkmal, diese bestimmte Struktur oder diese bestimmte Charakteristik nicht enthalten sein. Falls sich die Beschreibung oder der Anspruch auf „ein“ Element bezieht, bedeutet dies nicht, dass es nur eines von dem Element gibt. Falls sich die Spezifikation oder die Ansprüche auf „ein zusätzliches“ Element beziehen, schließt dies nicht aus, dass es mehr als eines des zusätzlichen Elements gibt.
-
Wie oben besprochen, können verschiedene Aspekte der Ausführungsformen hierin durch entsprechende Software- und/oder Firmwarekomponenten und -anwendungen wie etwa durch einen eingebetteten Prozessor oder dergleichen ausgeführte Software und/oder Firmware ermöglicht werden. Somit können Ausführungsformen dieser Erfindung als oder zur Unterstützung eines Softwareprogramms, von Softwaremodulen, Firmware und/oder verteilter Software verwendet werden, die in irgendeiner Form von Prozessor, Verarbeitungskern oder eingebetteter Logik, einer virtuellen Maschine, die auf einem Prozessorkern läuft, ausgeführt werden oder anderweitig auf oder innerhalb eines nichtflüchtigen computerlesbaren oder maschinenlesbaren Speicherungsmediums implementiert oder realisiert werden. Ein nichtflüchtiges computerlesbares oder maschinenlesbares Speicherungsmedium beinhaltet einen beliebigen Mechanismus zum Speichern oder Übertragen von Informationen in einer Form, die von einer Maschine (z. B. einem Computer) gelesen werden kann. Zum Beispiel schließt ein nichtflüchtiges computerlesbares oder maschinenlesbares Speicherungsmedium einen beliebigen Mechanismus ein, der Informationen in einer Form bereitstellt (d.h. speichert und/oder überträgt), auf die ein Computer oder eine Rechenmaschine zugreifen kann (z. B. Rechenvorrichtung, elektronisches System usw.), wie etwa beschreibbare/nicht beschreibbare Medien (z. B. Nurlesespeicher (ROM), Direktzugriffsspeicher (RAM), Magnetplattenspeichermedien, optische Speichermedien, Flash-Speichervorrichtungen usw.). Der Inhalt kann direkt ausführbar („Objekt“- oder „ausführbare“ Form), Quellcode oder Differenzcode („Delta“- oder „Patch“-Code) sein. Ein nichtflüchtiges computerlesbares oder maschinenlesbares Speicherungsmedium kann auch eine Speicherung oder Datenbank einschließen, aus der ein Inhalt heruntergeladen werden kann. Das nichtflüchtige computerlesbare oder maschinenlesbare Speicherungsmedium kann auch eine Vorrichtung oder ein Produkt einschließen, auf der/dem zum Zeitpunkt des Verkaufs oder der Lieferung Inhalte gespeichert sind. Somit kann das Liefern einer Vorrichtung mit gespeicherten Inhalten oder das Anbieten von Inhalten zum Herunterladen über ein Kommunikationsmedium so verstanden werden, dass ein Herstellungsartikel bereitgestellt wird, der ein nichtflüchtiges computerlesbares oder maschinenlesbares Speicherungsmedium mit einem solchen hierin beschriebenen Inhalt umfasst.
-
Verschiedene hierin beschriebene Komponenten, die oben als Prozesse, Server oder Werkzeuge bezeichnet werden, können ein Mittel zum Ausführen der beschriebenen Funktionen sein. Die durch verschiedene hierin beschriebene Komponenten durchgeführten Operationen und Funktionen können durch Software, die auf einem Verarbeitungselement läuft, über eingebettete Hardware oder dergleichen, oder eine beliebige Kombination von Hardware und Software implementiert werden. Solche Komponenten können als Softwaremodule, Hardwaremodule, Spezialhardware (z. B. anwendungsspezifische Hardware, ASICs, DSPs usw.), eingebettete Steuerungen, festverdrahtete Schaltungsanordnungen, Hardwarelogik usw. implementiert werden. Softwareinhalte (z. B. Daten, Anweisungen, Konfigurationsinformationen usw.) können über einen Herstellungsartikel bereitgestellt werden, der ein nichtflüchtiges computerlesbares oder maschinenlesbares Speicherungsmedium beinhaltet, das einen Inhalt bereitstellt, der Anweisungen repräsentiert, die ausgeführt werden können. Der Inhalt kann dazu führen, dass ein Computer verschiedene hierin beschriebene Funktionen/Operationen durchführt.
-
Wie hierin verwendet, kann eine Auflistung von durch den Ausdruck „mindestens eines von“ verbundenen Gegenständen eine jegliche Kombination der aufgelisteten Begriffe bedeuten. Beispielsweise kann die Phrase „mindestens eines von A, B oder C“ A; B; C; A und B; A und C; B und C oder A, B und C bedeuten.
-
Die obige Beschreibung veranschaulichter Ausführungsformen der Erfindung, einschließlich dessen, was in der Zusammenfassung beschrieben ist, soll nicht erschöpfend sein oder die Erfindung auf die offenbarten präzisen Formen beschränken. Obgleich spezifische Ausführungsformen und Beispiele für die Erfindung hierin zu veranschaulichenden Zwecken beschrieben sind, sind verschiedene äquivalente Modifikationen innerhalb des Schutzumfangs der Erfindung möglich, wie Fachleute auf dem betreffenden Gebiet erkennen werden.
-
Diese Modifikationen können angesichts der obigen ausführlichen Beschreibung an der Erfindung vorgenommen werden. Die in den folgenden Ansprüchen verwendeten Begriffe sollten nicht so ausgelegt werden, dass sie die Erfindung auf die bestimmten in der Beschreibung und den Zeichnungen offenbarten Ausführungsformen beschränken. Vielmehr soll der Schutzumfang der Erfindung vollständig durch die folgenden Ansprüche bestimmt werden, die gemäß eingeführter Lehren für die Anspruchsinterpretation ausgelegt werden sollen.