DE112022000580T5 - Reduzierung der Latenzauswirkungen von Fehlerprüfung und Korrektur auf dem Chip (ECC) - Google Patents

Reduzierung der Latenzauswirkungen von Fehlerprüfung und Korrektur auf dem Chip (ECC) Download PDF

Info

Publication number
DE112022000580T5
DE112022000580T5 DE112022000580.7T DE112022000580T DE112022000580T5 DE 112022000580 T5 DE112022000580 T5 DE 112022000580T5 DE 112022000580 T DE112022000580 T DE 112022000580T DE 112022000580 T5 DE112022000580 T5 DE 112022000580T5
Authority
DE
Germany
Prior art keywords
data
memory
error
ecc
read
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
DE112022000580.7T
Other languages
English (en)
Inventor
Kuljit Bains
Narasimha Lanka
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 DE112022000580T5 publication Critical patent/DE112022000580T5/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1068Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1048Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0766Error or fault reporting or storing
    • G06F11/0772Means for error signaling, e.g. using interrupts, exception flags, dedicated error registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0766Error or fault reporting or storing
    • G06F11/0784Routing of error reports, e.g. with a specific transmission path or data flow
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0766Error or fault reporting or storing
    • G06F11/0787Storage of error reports, e.g. persistent data storage, storage using memory protection
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1048Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
    • G06F11/106Correcting systematically all correctable errors, i.e. scrubbing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3037Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a memory, e.g. virtual memory, cache

Abstract

Eine Speichervorrichtung mit Schaltungsanordnungen zur Fehlerprüfung und Korrektur (ECC) auf dem Chip kann als Reaktion auf einen Lesebefehl unkorrigierte Daten liefern. Die ECC-Schaltungsanordnung kann Fehlerkorrekturen für detektierte Fehler durchführen und die korrigierten Daten parallel zur Bereitstellung der unkorrigierten Daten erzeugen. Die Speichervorrichtung speichert die korrigierten Daten intern auf der Speichervorrichtung. Wenn ein Fehler detektiert wird, stellt die Speichervorrichtung eine Anzeige für die Speichersteuerung bereit, die dann die korrigierten Daten anfordern kann.

Description

  • PRIORITÄTSANSPRUCH
  • Diese Anwendung basiert auf und beansprucht Priorität gegenüber der US-Anmeldung Nr. 17/225,777 eingereicht am 8. April 2021 mit dem Titel „REDUCTION OF LATENCY IMPACT OF ON-DIE ERROR CHECKING AND CORRECTION (ECC)“.
  • GEBIET
  • Die Beschreibungen beziehen sich im Allgemeinen auf Speichersysteme, und insbesondere beziehen sich Beschreibungen auf Fehlerprüfung und -korrektur auf dem Chip (ECC).
  • STAND DER TECHNIK
  • Zunehmende Speicherdichte und Betriebsgeschwindigkeiten in Verbindung mit einer geringeren Merkmalsgröße für Schalt- und Speicherelemente in Speichervorrichtungen haben dazu geführt, dass Laufzeitfehler bei Speichervorrichtungen tendenziell zunehmen. Speichersysteme verwenden Fehlerprüfung und -korrektur (ECC, Error Checking and Correction), um Fehler zu korrigieren, die andernfalls zu Systemfehlern führen könnten. Die Speichersteuerung des Hosts wendet ECC auf Daten an, die von Speichervorrichtungen empfangen werden, die parallel zum Speicherbus gekoppelt sind. Die Speichervorrichtungen, wie etwa DRAM-Vorrichtungen (dynamischer Direktzugriffsspeicher), verwenden zunehmend ECC auf dem Chip, um Fehler in den an den Host gesendeten Daten zu reduzieren.
  • Komplexe Codierungsschemata wie Reed-Solomon-Codes werden in der Regel bei ECC auf dem Chip verwendet, um die Anzahl der erforderlichen Prüfbits zu reduzieren und die Korrekturmöglichkeiten für ein Datenwort zu maximieren. Solche Codierungsschemata sorgen jedoch bei jedem Datenzugriff durch den Host für Latenz zur Fehlerkorrektur. Daher kann die Latenz von ECC auf dem Chip die Systemleistung beeinträchtigen, indem die Zeit verlängert wird, die der Host benötigt, um Daten aus dem Systemspeicher abzurufen.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • Die folgende Beschreibung beinhaltet eine Erörterung von Figuren mit Veranschaulichungen, die beispielhaft für eine Implementierung gegeben werden. Die Zeichnungen sind als Beispiel und nicht als Einschränkung zu verstehen. Wie hierin verwendet, sind Verweise auf ein oder mehrere Beispiele so zu verstehen, dass sie ein bestimmtes Merkmal, eine bestimmte Struktur oder eine bestimmte Eigenschaft beschreiben, das bzw. die in mindestens einer Implementierung der Erfindung enthalten ist. Ausdrücke wie „in einem Beispiel“ oder „in einem alternativen Beispiel“, die hier vorkommen, stellen Beispiele für Implementierungen der Erfindung dar und beziehen sich nicht unbedingt alle auf dieselbe Implementierung. Jedoch schließen sie sich auch nicht zwingend gegenseitig aus.
    • 1 ist ein Blockdiagramm eines beispielhaften Systems, in dem eine Speichervorrichtung ECC auf dem Chip ausführt und korrigierte Daten nur dann bereitstellt, wenn ein Fehler detektiert wird.
    • 2 ist ein Blockdiagramm eines beispielhaften Systems, in dem ein Host einen Befehl gezielt bereitstellt, um Daten anzufordern, die mit der Fehlerkorrektur auf dem Chip verarbeitet wurden.
    • 3 ist ein Blockdiagramm eines beispielhaften Teilsystems für Fehlerprüfung und -korrektur (ECC) auf dem Chip, um gezieltes Senden korrigierter Daten von der ECC auf dem Chip zu implementieren.
    • 4 ist eine beispielhafte Tabelle mit Fehlerdetektionsindikatoren.
    • 5 ist ein Blockdiagramm einer beispielhaften Datenarchitektur für eine Speicherarchitektur, die gezieltes Senden korrigierter Daten von der ECC auf dem Chip ermöglicht.
    • 6 ist ein Flussdiagramm eines beispielhaften Prozesses zum gezielten Senden korrigierter Daten von der ECC auf dem Chip.
    • 7 ist ein Blockdiagramm eines Beispiels für Fehlerprüfung und - korrektur auf Systemebene.
    • 8 ist ein Blockdiagramm einer beispielhaften Prüfbiterzeugungslogik und Syndrombiterzeugungslogik, um eine Matrix für ECC anzuwenden.
    • 9 ist ein Blockdiagramm eines Speicherteilsystems, in dem gezieltes Senden korrigierter Daten von der ECC auf dem Chip implementiert werden kann.
    • 10 ist ein Blockdiagramm eines Computersystems, in dem gezieltes Senden korrigierter Daten von der ECC auf dem Speicher implementiert werden kann.
    • 11 ist ein Blockdiagramm einer beispielhaften mobilen Vorrichtung, in der gezieltes Senden korrigierter Daten von einer ECC auf dem Speicher implementiert werden kann.
    • 12 ist ein Blockdiagramm eines beispielhaften Netzwerks mit mehreren Knoten, in dem gezieltes Senden korrigierter Daten von einer ECC auf dem Speicher implementiert werden kann.
  • Es folgen Beschreibungen bestimmter Einzelheiten und Implementierungen, einschließlich nicht einschränkender Beschreibungen der Figuren, die manche oder alle Beispiele beschreiben können, sowie anderer möglicher Implementierungen.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Wie in diesem Dokument beschrieben, kann eine Speichervorrichtung mit einer Schaltungsanordnung für Fehlerprüfung und -korrektur (ECC) auf dem Chip als Reaktion auf einen Lesebefehl unkorrigierte Daten bereitstellen. Obwohl die Fehlerraten bei Speichervorrichtungen steigen, sind Fehler eher die Ausnahme als die Regel. Bei den meisten Lesetransaktionen detektiert die ECC auf dem Chip keinen Fehler. Wenn kein Fehler detektiert wird, ist eine Fehlerkorrektur nicht erforderlich, und die mit der Fehlerkorrektur verbundene Latenz ist unnötig. In einem Beispiel verfügt die ECC auf dem Chip über parallele Pfade für die Datenkorrektur und Nicht-Korrektur. Mit den parallelen Pfaden kann die Speichervorrichtung auf Senden von Daten ohne Fehlerkorrektur zurückgreifen und eine Fehlerkorrektur durchführen, um Daten zu speichern und später vom Host darauf zuzugreifen, wenn ein Fehler detektiert wird.
  • Somit kann die ECC-Schaltungsanordnung Fehlerdetektion bei allen Lesezugriffen durchführen und Fehlerkorrekturen bei detektierten Fehlern durchführen, wobei die korrigierten Daten parallel zur Bereitstellung der unkorrigierten Daten für den Host erzeugt werden. Die Speichervorrichtung speichert die korrigierten Daten intern. Die Speichervorrichtung stellt der Speichersteuerung eine Anzeige eines Fehlers oder keines Fehlers bereit. Die Speichersteuerung kann die korrigierten Daten anschließend anfordern, wenn eine Anzeige eines Fehlers vorliegt.
  • In einem Beispiel ist der Pfad unkorrigierter Daten ein wählbarer Bypass-Datenpfad, der keine Latenzeinbußen bei der Fehlerkorrektur verursacht. In einem Beispiel zeigt die Fehlerprüfung den Schweregrad des detektierten Fehlers für den Host über Metadatenbits oder Metadaten zur Meldung von Fehlern an. In einem Beispiel können die Metadaten Codierung enthalten, um einen korrigierbaren, aber nicht korrigierten Fehler anzuzeigen, der dem Host anzeigt, wenn die nicht korrigierten Daten einen Fehler aufweisen, der an der Speichervorrichtung detektiert wurde.
  • Es wird davon ausgegangen, dass es in den meisten Fällen zu einer Latenzeinsparung bei einem Speicherzugriff kommt, da auf die Daten ohne Fehlerkorrektur zugegriffen wird. In einem Beispiel kann die Speichersteuerung basierend auf den angegebenen Metadaten erkennen, dass zusätzliche Maßnahmen erforderlich sind, während die Speichervorrichtung die Daten parallel korrigiert. In einem Beispiel gibt die Speichersteuerung einen Lesebefehl für die korrigierten Daten aus, wenn ein Fehler angezeigt wird. Wenn die Speichersteuerung einen nachfolgenden Lesebefehl mit einer nachfolgenden Adresse für die korrigierten Daten ausgibt, sind die Daten auf der Speichervorrichtung bereit, wenn die Speichersteuerung den nachfolgenden Lesebefehl ausgibt. In einem Beispiel entspricht die nachfolgende Adresse der Adresse des ersten Lesebefehls, der zu einem Fehler geführt hat. In einem Beispiel ist die nachfolgende Adresse eine Adresse zu einem Ort, an dem die korrigierten Daten gespeichert werden. In einem Beispiel kann die Speichervorrichtung auf den nachfolgenden Lesebefehl reagieren, indem sie die zuvor korrigierten Daten bereitstellt. Dadurch entsteht keine Latenz im Zusammenhang mit der Fehlerkorrektur, da die Daten parallel zum Senden der unkorrigierten Daten und der Fehleranzeige an die Speichersteuerung korrigiert wurden.
  • 1 ist ein Blockdiagramm eines beispielhaften Systems, in dem eine Speichervorrichtung ECC auf dem Chip ausführt und korrigierte Daten nur dann bereitstellt, wenn ein Fehler detektiert wird. Das System 100 repräsentiert Elemente eines Computersystems. Das System 100 kann als Darstellung von Elementen eines Speichersystems oder Speicherteilsystems betrachtet werden, wenn das Speichersystem als Teil des Computersystems betrachtet wird.
  • Das System 100 enthält den Host 110, der eine Hardware- und Softwareplattform für das Computersystem repräsentiert, die den Speicher enthält. Der Host 110 umfasst Prozessor 112, bei dem es sich um einen beliebigen Prozessortyp, Mikroprozessor, eine Zentralprozessoreinheit (CPU), eine Grafikprozessoreinheit (GPU) oder einen anderen Controller oder Prozessor handeln kann, der Befehle ausführt, die zu Anforderungen für den Zugriff auf den Speicher führen. Der Prozessor 112 kann ein Einzelkernprozessor sein. Bei einem Beispiel ist der Prozessor 112 ein Mehrkernprozessor.
  • Der Host 110 umfasst die Speichersteuerung 120 zur Darstellung der Schaltungsanordnungen im Host 110 zur Verwaltung des Zugriffs auf den Speicher 130. In einem Beispiel ist die Speichersteuerung 120 Teil eines Prozessor-Dies (integrierte Speichersteuerung oder Steuerung auf dem Chip). In einem Beispiel ist die Speichersteuerung 120 eine Schaltungsanordnung, die in ein System-on-a-Chip (SOC) integriert ist, das den Prozessor 112 und die Speichersteuerung 120 umfasst. Ein solches SOC kann auch Peripheriesteuerungen, Kommunikationssteuerungen, Grafiksteuerungen oder andere Schaltungsanordnungen umfassen.
  • In einem Beispiel enthält die Speichersteuerung 120 die Befehlslogik (CMD) 122, die Logik zum Erzeugen von Befehlen an den Speicher 130 darstellt, als Reaktion auf eine Anforderung vom Prozessor 112 für Speicherzugriff. Die Befehlslogik 122 kann Schaltungsanordnungen auf der Speichersteuerung 120 sowie Firmware oder Codelogik enthalten. In einem Beispiel kann die Befehlslogik 122 als Reaktion auf eine Fehleranzeige einen Befehl erzeugen, um auf unkorrigierte Daten aus dem Speicher 130 zuzugreifen. In einem Beispiel kann der nachfolgende Befehl eine Befehlscodierung haben, um einen Lesevorgang für nicht korrigierte Daten anzuzeigen. In einem Beispiel hat der nachfolgende Befehl die gleiche gelesene Codierung für dieselbe Adresse wie der Befehl, der zu den unkorrigierten Daten mit dem Fehler geführt hat. In einem Beispiel interpretiert der Befehls- bzw. CMD-Decodierer 132 von Speicher 130 den nachfolgenden Befehl als Befehl für die korrigierten Daten. In einem Beispiel kann der nachfolgende Befehl als Wiederholungsbefehl bezeichnet werden, um den Speicher 130 zu veranlassen, korrigierte Lesedaten zurückzugeben.
  • Die Speichersteuerung 120 enthält die ECC 124, die die Fehlerprüfungs- und Korrekturlogik auf Hostseite darstellt. Die ECC 124 führt ECC auf Systemebene durch, was sich auf die Fehlerprüfung und Korrektur von Daten bezieht, die von mehreren parallelen Vorrichtungen des Speichers 130 empfangen wurden. In einem Beispiel enthält die ECC 124 Schaltungsanordnungen zur Ausführung von ECC-Operationen an Daten, die vom Speicher 130 empfangen wurden. In einem Beispiel erzeugt die ECC 124 ECC-Prüfbits, die mit Schreibdaten für einen Schreibbefehl gesendet werden.
  • Die Speichersteuerung 120 umfasst E/A (Eingang/Ausgang) 128, der die Hardware für die Schnittstelle mit dem Speicher 130 darstellt. Die Hardware kann Stifte, Kugeln oder andere Steckverbinder zur Verbindung mit Signalleitungen auf einem Verbindungssubstrat (z. B. einem SOC oder einer Hauptplatine) von System 100 umfassen, das eine elektrische Verbindung zwischen der Speichersteuerung 120 und dem Speicher 130 bereitstellt. Die Hardware von E/A 128 kann Treiber und Empfangsschaltungsanordnungen umfassen (einschließlich Terminierungshardware, Taktgeber-/Zeitschaltkreise, Signalphasensteuerung wie Verzögerungsregelschleifen (DLL) oder phasensynchronisierte Schleifen (PLL) oder andere Hardware).
  • Der Speicher 130 stellt eine einzelne Speichervorrichtung dar, z. B. eine DRAM-Vorrichtung (dynamischer Direktzugriffsspeicher) oder eine SDRAM-Vorrichtung (Synchroner DRAM). In einem Beispiel stellt der Speicher 130 Speichervorrichtungen dar, die mit einem doppelten Datenratenstandard (DDR) kompatibel sind. Das System 100 zeigt mehrere Speichervorrichtungen, die jeweils als Speicher 130 bezeichnet sind. Der Speicher 130 enthält E/A 138, das für Hardware oder eine Hardwareschnittstelle der Speichervorrichtung steht, um mit der Speichersteuerung 120 zu verbinden und zu kommunizieren. Der Bus 150 stellt eine oder mehrere Gruppen von Signalleitungen oder Leiterbahnen dar, die den Speicher 130 elektrisch/kommunikativ mit der Speichersteuerung 120 verbinden. Die Hardware von E/A 138 kann identisch oder ähnlich sein mit E/A 128 der Speichersteuerung und wird nicht separat beschrieben.
  • Der Speicher 130 enthält einen Befehls- bzw. CMD-Decodierer 132, der Schaltungselemente und Logik zum Decodieren eines vom der Speichersteuerung 120 empfangenen Befehls darstellt. Ein Befehl kann einen Lesebefehl, einen Schreibbefehl, einen Aktualisierungsbefehl oder andere Befehle enthalten. In einem Beispiel enthält der Befehlsdecodierer 132 Logik zum Decodieren eines Wiederholungsbefehls oder eines nachfolgenden Befehls als Anforderung für korrigierte Daten.
  • Der Speicher 130 enthält ein Array 140 zum Speichern von Daten. Das Array 140 stellt ein Array adressierbarer Speicherorte dar. In der Regel ist das Array 140 mindestens nach Zeile (z. B. Wordline) und Spalte (z. B. Bitline) adressierbar. Das Array 140 kann in verschiedene Bänke, Unterbänke oder andere Abteilungen unterteilt werden. Das Array 140 speichert Daten und ECC-Daten. Es wird davon ausgegangen, dass Daten Daten enthalten können, die von der Speichersteuerung 120 geschrieben wurden. In einem Beispiel können einige oder alle Daten, die von der Speichersteuerung 120 auf eine ausgewählte Speichervorrichtung geschrieben werden, ECC-Daten des Systems sein. Die ECC in Array 140 stellt lokale ECC-Daten oder ECC-Prüfbits dar, die von der ECC 162 für interne ECC erzeugt wurden.
  • Der Speicher 130 enthält ECC 162, die ECC auf dem Chip oder ECC auf der Vorrichtung darstellt. Die ECC 162 arbeitet im Speicher 130, um Datenfehler für Daten zu korrigieren, bevor der Speicher 130 die Daten an die Speichersteuerung 120 übermittelt. Der Betrieb von ECC 162 des Speichers 130 unterscheidet sich von dem Betrieb von ECC 124 der Speichersteuerung 120. Die Speichersteuerung 120 berechnet ECC und sendet Prüfbits, die in einer oder mehreren der Speichervorrichtungen gespeichert werden können. Einige Speichervorrichtungen speichern nur Daten, andere nur ECC-Prüfbits. Gängige Architekturen umfassen beispielsweise 10x4- oder 10 Speichervorrichtungen mit 8 zum Speichern von Daten und 2 zum Speichern von ECC-Informationen, wobei die Speichervorrichtungen eine x4-Datenschnittstelle aufweisen. Das Hinzufügen weiterer Vorrichtungen für ECC erhöht die Kosten durch zusätzliche Teile und erhöht die Pinbelegung der Kanäle für zusätzliche Signalleitungen zum Anschluss an die zusätzlichen Vorrichtungen.
  • In einem Beispiel stellt der Speicher 130 mehrere Speicher-Dies eines Speichermoduls dar, z. B. ein DIMM (Dual Inline Memory Module). In einem Beispiel stellt der Speicher 130 mehrere Speicher-Dies eines Multichip-Pakets dar, wie z. B. ein HBM-Paket (High Bandwidth Memory). Die parallelen Speicherchips oder Speicherbausteine können parallel arbeiten, um einen Teil eines Codeworts für einen Zugriffsbefehl von der Speichersteuerung 120 bereitzustellen.
  • Die ECC 124 führt ECC für alle Datenbits durch, die insgesamt an alle Speichervorrichtungen gesendet werden. Die ECC 162 arbeitet im Speicher 130, um Fehler in der Speichervorrichtung zu prüfen und zu korrigieren, bevor der Teil der auf der Speichervorrichtung gespeicherten Bits zurückgegeben wird. Es wird davon ausgegangen, dass die RAS-Leistung (Reliability, Accessibility, Serviceability) der ECC auf Systemebene aufgrund der Verfügbarkeit von mehr ECC-Informationen höher sein wird als die der ECC innerhalb einer einzelnen Vorrichtung.
  • In einem Beispiel weist die ECC 162 einen fehlerhaften Bypass-Pfad auf. Somit kann davon ausgegangen werden, dass die ECC 162 über separate Teile für die Fehlerdetektion und Fehlerkorrektur verfügt. Der Teil für die Fehlerdetektion oder Fehlerprüfung der ECC 162 kann eine Fehlerprüfung für alle ersten Lesebefehle durchführen. Ein Lesebefehl, der kein nachfolgender Befehl für korrigierte Daten ist, kann als erster Lesebefehl betrachtet werden. In einem Beispiel führt die ECC 162 eine Fehlerkorrektur für alle ersten Lesebefehle durch, gibt jedoch nicht korrigierte Daten mit einer Fehlerdetektionsanzeige zurück, während die Fehlerkorrektur beginnt. Die ECC 162 kann die korrigierten Daten in einem Puffer oder an einem Speicherort auf Speicher 130 speichern, um später von der Speichersteuerung 120 darauf zugreifen zu können.
  • Der Speicher 130 enthält das Register 136, das ein Konfigurationsregister von Speicher 130 darstellt. Zum Beispiel kann das Register 136 ein Modusregister sein. Das Register 136 enthält ein oder mehrere Felder zum Speichern von Konfigurationsinformationen für den Speicher 130. In einem Beispiel stellt das Register 136 einen Speicherort für die korrigierten Daten von der ECC 162 dar. In einem Beispiel speichert die ECC 162 die korrigierten Daten an einem dedizierten Speicherort von Array 140. In einem Beispiel enthält der Speicher 130 eine Speichervorrichtung oder einen Puffer, um die korrigierten Daten für den späteren Zugriff zu speichern.
  • Der Bus 150 stellt eine elektrische und kommunikative Verbindung zwischen der Speichersteuerung 120 und dem Speicher 130 her. Das gestrichelte Feld, das auf Bus 150 zeigt, zeigt ein Beispiel für eine Befehlssequenz (CMD) 152. Die Befehlssequenz 152 versteht sich als ein nicht einschränkendes Beispiel einer Befehlssequenz, bei der ein Wiederholungsbefehl verwendet wird.
  • In einem Beispiel wird ein Lesebefehl (READ CMD) von der Speichersteuerung 120 an den Speicher 130 (Steuerung an Speicher oder C→M) gesendet. Als Reaktion auf den Lesebefehl greift der Speicher 130 auf Daten von Array 140 zu und stellt sie der ECC 162 zur Verfügung. Somit kann die ECC 162 gelesene Daten von einer Adresse empfangen, die im Lesebefehl als Antwort auf den Lesebefehl angegeben ist. Die ECC 162 kann eine Fehlerprüfung durchführen und unkorrigierte Daten mit einer Fehleranzeige an die Speichersteuerung 120 (Speicher an Controller/Steuerung oder M→C) zurückgeben. Die Fehleranzeige zeigt Fehler an, die in den gelesenen Daten detektiert wurden.
  • Die Speichersteuerung 120 gibt einen nachfolgenden Lesebefehl (READ CMD) für die korrigierten Daten an den Speicher 130 aus. In einem Beispiel bezieht sich der nachfolgende Befehl auf einen anderen Lesebefehl mit derselben Adresse wie der unmittelbar vorausgehende Lesebefehl. Somit kann ein identischer Befehl darauf hinweisen, dass die Speichersteuerung die korrigierten Daten wünscht. Als Reaktion auf den nachfolgenden Lesebefehl kann der Speicher 130 die korrigierten Daten an die Speichersteuerung 120 liefern.
  • In einem Beispiel beziehen sich die „korrigierten“ Daten einfach auf Daten, für die ECC 162 eine Fehlerkorrektur durchgeführt hat. Korrigierte Daten in diesem Sinne bedeuten nicht unbedingt, dass die Daten fehlerfrei sind. So kann die ECC 162 beispielsweise SBEs (Einzelbitfehler) effektiv korrigieren, kann aber auch einen zusätzlichen Bitfehler detektieren, wenn Daten, die von Array 140 gelesen werden, einen MBE (Multibitfehler) aufweisen. Ebenso beziehen sich „unkorrigierte“ Daten nicht notwendigerweise auf Daten mit Fehlern. Unkorrigierte Daten beziehen sich vielmehr auf Daten, für die ECC 162 keine Fehlerkorrektur durchgeführt hat. Nicht korrigierte Daten können in den meisten Fällen fehlerfrei sein.
  • In einem Beispiel enthält die Speichersteuerung 120 die Fehlersteuerung 126. In einem Beispiel liest die Fehlersteuerung 126 eine Fehleranzeige nach einem Lesebefehl und bestimmt, ob eine nachfolgende Verarbeitung für den Lesebefehl erforderlich ist. In einem Beispiel, wenn die Fehleranzeige anzeigt, dass ein Fehler detektiert wurde, der nicht korrigiert wurde, kann die Fehlersteuerung 126 die Befehlslogik 122 veranlassen, einen nachfolgenden Lesebefehl zu erzeugen, um auf die korrigierten Daten aus Speicher 130 zuzugreifen.
  • In einem Beispiel beinhaltet der Speicher 130 ECS (Fehlerprüfung und Bereinigung) 164. ECS 164 stellt eine Bereinigungs-Engine für Speicher 130 dar. In einem Beispiel arbeitet ECS 164 mit der ECC 162 zusammen, um ECC durchzuführen und die Daten von Array 140 zu bereinigen. In der Regel wird die Bereinigung in festgelegten Zeitintervallen durchgeführt, um die Adressen von Array 140 über einen Bereinigungszeitraum (z. B. 24 Stunden) zu bereinigen. Bereinigung bezieht sich auf das Lesen von Daten aus Array 140, Durchführung von ECC auf den Daten und Zurückschreiben korrigierter Daten in das Array. Die Bereinigung über die Bereinigungszeit kann als Überwachungsbereinigung (Patrol-Scrubbing) bezeichnet werden.
  • In einem Beispiel kann die Speichersteuerung 120 die Latenz für wiederkehrende Korrekturen und Pufferkonflikte bei Wiederholungen reduzieren, die durch mehrere detektierte Fehler verursacht werden, bei denen unkorrigierte Daten zurückgegeben werden. In einem Beispiel reduziert die Speichersteuerung 120 die Latenz für wiederkehrende Korrekturen, indem sie die korrigierten Daten aus dem Puffer liest und die Befehlslogik 122 veranlasst, einen Schreibbefehl an die Adresse auszugeben, an der der unkorrigierte, korrigierbare Fehler detektiert wurde.
  • In einem Beispiel reduziert die Speichersteuerung 120 die Latenz für wiederkehrende Korrekturen, indem sie einen speziellen gezielten Bereinigungsbefehl ausgibt, der dem Speicher 130 anzeigt, die Adresse zu bereinigen und die Daten in der betroffenen Adresse zu korrigieren. Ein solcher zielgerichteter Bereinigungsbefehl könnte in der Befehlscodierung für das Befehlsprotokoll für den Zugriff auf den Speicher 130 definiert werden. In einem Beispiel kann die Anwendung einer gezielten Bereinigung ermöglichen, dass zusätzliche Lesebefehle für dieselbe Adresse korrekte Daten erhalten. In einem Beispiel gibt die Speichersteuerung 120 erst dann einen nachfolgenden Lesebefehl für die korrigierten Daten aus, nachdem sie einen gezielten Bereinigungsbefehl ausgegeben hat, um die Daten zu korrigieren und in das Array 140 zurückzuschreiben. Es ist davon auszugehen, dass eine solche Operation viele zeitliche Beschränkungen hat, die für den Zugriff auf die korrigierten Daten eingehalten werden müssen. Ein solcher Mechanismus kann der Speichersteuerung 120 Flexibilität bieten, andere Befehle an andere Adressen auszugeben, selbst wenn ein korrigierbarer, unkorrigierter Fehler angezeigt wird.
  • In einem Beispiel kann der Host 110 über die ECC 124 der Speichersteuerung 120 eine CAN-SBE-Korrektur der vom Speicher 130 empfangenen Daten durchführen. Mit der Fähigkeit, SBE-Korrekturen an empfangenen Lesedaten durchzuführen, kann in einem Beispiel die Speichersteuerung 120 einen korrigierbaren, unkorrigierten Fehler am Host beheben, ohne dass ein erneuter Lesebefehl oder ein nachfolgender Lesebefehl erforderlich ist.
  • Es wird davon ausgegangen, dass Daten, die von mehreren Speichervorrichtungen parallel empfangen werden, einen SBE für Daten von einer Vorrichtung enthalten können. SBEs von mehreren parallelen Vorrichtungen für dieselbe Adresse führen dazu, dass Daten mit einem MBE zurückgegeben werden. In einem Beispiel, wenn die zurückgegebenen Daten einen SBE haben, gibt die Speichersteuerung 120 keinen nachfolgenden Lesebefehl aus, um auf die korrigierten Lesedaten von der Speichervorrichtung zuzugreifen, sondern korrigiert stattdessen den SBE auf Host 110. In einem Beispiel gibt die Speichersteuerung 120 nur dann einen nachfolgenden Lesebefehl aus, wenn die empfangenen Daten einen MBE aufweisen. Ein nachfolgender Lesebefehl kann auf korrigierte Daten von mehreren Speichervorrichtungen zugreifen, die den MBE adressieren könnten. In einem Beispiel gibt die Speichersteuerung 120 den nachfolgenden Lesebefehl aus, wenn mehrere Speichervorrichtungen Hinweise auf korrigierbare, unkorrigierte Fehler liefern.
  • 2 ist ein Blockdiagramm eines beispielhaften Systems, in dem ein Host einen Befehl gezielt bereitstellt, um Daten anzufordern, die mit der Fehlerkorrektur auf dem Chip verarbeitet wurden. Das System 200 ist ein Beispiel für ein System gemäß System 100 in 1. Das System 200 veranschaulicht eine Architektur für einen nachfolgenden Lesebefehl oder einen Wiederholungsbefehl, der durch eine Folge wiederholter Lesebefehle angezeigt wird. Aus Gründen der Einfachheit wird nur eine Speichervorrichtung dargestellt, es kann jedoch mehr als eine Speichervorrichtung verwendet werden, und eine typische Implementierung umfasst mehrere Speichervorrichtungen parallel.
  • Der Host 210 stellt eine Host-Plattform für das System 200 dar. Der Host 210 umfasst den Prozessor 212 und die Speichersteuerung 220. Die obigen Beschreibungen in Bezug auf den Prozessor 112 von System 100 können auch für den Prozessor 212 von Host 210 gelten. Die obigen Beschreibungen in Bezug auf die Speichersteuerung 120, ECC 124, Fehlersteuerung 126 und E/A 128 von System 100 können auch für die Speichersteuerung 220, ECC 224, Fehlersteuerung 226 und E/A 228 von System 200 gelten.
  • Die obigen Beschreibungen in Bezug auf den Speicher 130, Befehlsdecodierer 132, E/A 138 und das Array 140 von System 100 können auch für den Speicher 230, Befehlsdecodierer (CMD) 232, E/A 238 bzw. das Array 240 gelten. Ebenso können die obigen Beschreibungen von Bus 150 auf Bus 250 zutreffen.
  • In Bezug auf die Befehlslogik 222 (CMD) gibt die Befehlslogik 222 einen Wiederholungsbefehl aus, indem sie an dieselbe Adresse zurückgegebene Lesebefehle zurückgibt. Eine Befehlssequenz an Bus 250 ist zwar nicht spezifisch dargestellt, aber ein Beispiel der Befehlssequenz, die in Bezug auf Bus 150 beschrieben wird, kann für Bus 250 gelten. Der nachfolgende Lesebefehl in der Sequenz kann genauer gesagt ein Lesebefehl sein, der durch die Wiederholung einer Folge von Lesebefehlen an dieselbe Adresse für System 200 ausgelöst wird.
  • In einem Beispiel enthält der Speicher 230 Adressregister oder andere Speicherelemente, um Adressdaten für Lesebefehle zu speichern. In einem Beispiel, wenn der Befehlsdecodierer 232 einen Lesebefehl erkennt, löst der Decodierer aus, dass der Speicher 230 die Adresse des Lesebefehls (ADDR) in Register 262 speichert. Der Speicher 230 kann die Adresse des Registers 262 mit einer früheren Leseadresse (ADDR-1) in Register 264 vergleichen. Der Komparator 266 kann feststellen, ob die Adressen identisch sind, und eine korrigierte Datenausgabe als Reaktion auf den Vergleich ausgeben. Die korrigierte Datenanzeige kann dem Speicher 230 anzeigen, die korrigierten Daten (CORR DATA) für die Adresse des vorherigen Lesebefehls zurückzugeben.
  • In einem Beispiel erfolgt der Vergleich nur als Reaktion auf aufeinanderfolgende Lesebefehle. So kann beispielsweise der Betrieb von Komparator 266 aktiviert (oder gesteuert) werden, wenn ein anderer Vergleich vorliegt, dass der aktuelle Befehl mit dem vorherigen Befehl identisch ist. In einem Beispiel speichert die Schaltung des Speichers 230 die Adresse jedes Zugriffsbefehls in Register 262, und beim nächsten Zugriffsbefehl wird die Adresse in Register 264 verschoben, um durch die Adresse des nächsten Zugriffsbefehls ersetzt zu werden. In einer solchen Implementierung kann der Speicher 230 zusätzliche Schaltungsanordnungen enthalten, um die nachfolgende Lesedecodierung zu steuern, z. B. Gating der korrigierten Datenausgabe mit der Feststellung, dass der Befehl ein Lesebefehl ist oder dass der Befehl ein Lesebefehl ist und der vorherige Befehl auch ein Lesebefehl war (z. B. ein Hinweis darauf, dass zwei Lesebefehle hintereinander empfangen wurden). Eine solche Logik kann mit dem Ausgang gesteuert oder von Schaltungsanordnungen im Komparator 266 verwendet werden, um den Ausgang für die Codierung der Lesewiederholung zu generieren.
  • Es kann eine ähnliche oder zusätzliche Logik hinzugefügt werden, um sicherzustellen, dass keine dazwischenliegenden Befehle empfangen wurden. Der Speicher 230 kann beispielsweise Schaltungsanordnungen enthalten, um sicherzustellen, dass die Decodierung aufeinanderfolgender Befehle nur zu einer Lesewiederholung führt, wenn zwischen den beiden Lesebefehlen keine dazwischenliegenden Befehle empfangen werden, wie z. B. ein aktueller Befehl und ein nachfolgender Lesebefehl, was alternativ als aktueller Lesebefehl und als vorheriger Lesebefehl betrachtet werden könnte. Bezüglich dazwischenliegender Befehle versteht es sich, dass ein Lesebefehl gefolgt von einem CAS-Befehl als ein Lesebefehl betrachtet werden kann. Daher würde der CAS-Befehl nicht als dazwischenliegender Befehl für den Vergleich betrachtet, wenn der CAS-Befehl Teil der Sequenz ist, in der die Ausführung eines Lesevorgangs ausgelöst wird.
  • In einem Beispiel vergleicht der Speicher 230 eine Lesebefehlsadresse mit einer früheren Lesebefehlsadresse. Wenn die Lesebefehlsadressen übereinstimmen, kann der Speicher 230 in einem Beispiel auf korrigierte Daten von einem Speicherort zugreifen und diese an die Speichersteuerung 220 zurückgeben.
  • Die ECC 270 repräsentiert die ECC-Schaltungsanordnung des Speichers 230. Das System 200 veranschaulicht die ECC 270 noch ausführlicher. Die ECC 270 empfängt Lesedaten 242 von Array 240 als Antwort auf einen Lesebefehl, der Daten vom Array liest. In einem Beispiel enthält die ECC 270 Fehlerdetektion 272 und Fehlerkorrektur 274 als parallele Pfade. In einem Beispiel bietet Detektion 272 eine Fehleranzeige (ANZ) 282, um die Speichersteuerung 220 über Fehler zu informieren, die beim Lesen von Daten 242 detektiert wurden. Fehlerdetektion 272 kann Daten 284 zurückgeben, die den gelesenen Daten 242 entsprechen, da keine Fehlerkorrektur auf die Daten angewendet wurde.
  • In einem Beispiel enthält der Speicher 230 Puffer 276, der einen Speicherort im Speicher 230 darstellt, um korrigierte Daten aus der Fehlerkorrektur 274 zu speichern. Die Daten 286 repräsentieren die korrigierten Daten, die in Puffer 276 gespeichert sind. In einem Beispiel gibt Speicher 230 die korrigierten Daten 286 als Reaktion auf einen nachfolgenden Lesebefehl von der Speichersteuerung 220 zurück.
  • In einem Beispiel repräsentiert der Puffer 276 einen Wiederholungspuffer, der in Speicher 230 implementiert ist, um korrigierte Daten 286 zu speichern. In einem Beispiel gibt die Speichersteuerung 220 einen Lesebefehl (READ) an dieselbe Adresse aus wie der ursprüngliche Lesebefehl, der zu der Fehleranzeige 282 führte, die auf einen Fehler in Daten 284 hinweist. In einem Beispiel repräsentiert der Puffer 276 einen separat adressierbaren Speicherort in Speicher 230, und die Speichersteuerung 220 kann einen nachfolgenden Lesebefehl als Lesebefehl an den adressierbaren Speicherort ausgeben. In einem Beispiel repräsentiert der adressierbare Speicherort eine Zeile oder einen Speicherort von Array 240. In einem Beispiel repräsentiert der Puffer 276 ein Register, z. B. ein Modus- oder Mehrzweckregister von Speicher 230. Wenn der Puffer 276 als Register implementiert ist, gibt die Befehlslogik 222 in einem Beispiel den nachfolgenden Lesebefehl als Registerlesebefehl aus (z. B. einen Modusregisterlesebefehl (MRR)).
  • In einem Beispiel gibt die Befehlslogik 222 als Reaktion auf die Fehleranzeige 282, die einen Fehler anzeigt, einen gezielten Bereinigungsbefehl an die vorherige Adresse oder die Adresse des vorherigen Lesebefehls aus. Ein solcher gezielter Bereinigungsbefehl würde es dem Speicher 230 ermöglichen, die korrigierten Daten zurück in das Array 240 zu schreiben. In einem Beispiel schreibt der Speicher 230 als Reaktion auf einen gezielten Bereinigungsbefehl korrigierte Daten 286 zurück in das Array 240 und sendet korrigierte Daten 286 an die Speichersteuerung 220. In einem Beispiel gibt die Speichersteuerung 220 als Reaktion auf einen korrigierbaren Fehler einen gezielten Bereinigungsbefehl an Speicher 230 aus, wodurch der Speicher 230 die korrigierten Daten zurück in das Array 240 schreibt. Nach dem gezielten Bereinigungsbefehl kann die Speichersteuerung 220 einen nachfolgenden Lesevorgang an dieselbe Adresse ausgeben, der die Daten von Array 240 lesen und die Daten über den unkorrigierten Datenpfad der Fehlerdetektion 272 bereitstellen kann. In einem Beispiel schreibt der Speicher 230 als Reaktion auf einen nachfolgenden Lesebefehl oder Wiederholungsbefehl korrigierte Daten 286 zurück in das Array 240 und sendet die Daten an die Speichersteuerung 220.
  • Ein Beispiel für die Fehleranzeige 282 wird im Folgenden in Bezug auf Tabelle 400 in 4 ausführlicher beschrieben. In einem Beispiel enthält die Fehleranzeige 282 eine Codierung der Fehleranzeige, die als Anzeige des Schweregrads des Fehlers bezeichnet werden kann, der in den gelesenen Daten 242 detektiert wurde. In einem Beispiel enthält die Codierung eine Codierung für einen korrigierbaren Fehler, der nicht korrigiert wurde (CENC), um anzuzeigen, dass ein korrigierbarer Fehler (CE) von ECC 270 detektiert wurde, dass aber auf die zurückgesendeten Daten keine Korrektur 274 angewendet wurde.
  • In einem Beispiel kann, wenn die Speichersteuerung 220 bis Fehlersteuerung 226 eine CENC-Anzeige für eine Adresse eines Lesebefehls erhält, die Befehlslogik 222 einen zusätzlichen Lesevorgang auf dieselbe Adresse ausgeben, um auf Puffer 276 zuzugreifen. Der Speicher 230 kann den zusätzlichen Lesevorgang unterstützen, indem er korrigierte Daten 286 aus Puffer 276 bereitstellt. In einem Beispiel schreibt die Korrektur 274 Daten nur in den Puffer 276, wenn die Fehleranzeige 282 auf einen CENC hinweist. Die CENC-Codierung kann beispielsweise als Gating-Signal für das Schreiben in Puffer 276 dienen.
  • 3 ist ein Blockdiagramm eines beispielhaften Teilsystems für Fehlerprüfung und -korrektur (ECC) auf dem Chip, um gezieltes Senden korrigierter Daten von der ECC auf dem Chip zu implementieren. Das System 300 enthält ein Beispiel für eine ECC-Schaltungsanordnung auf dem Chip für ein System gemäß System 100 oder System 200. Der Host 310 beinhaltet eine Speichersteuerung oder äquivalente oder alternative Schaltung oder Komponente, die den Zugriff auf den Speicher 320 verwaltet. Der Speicher 320 implementiert die ECC auf dem Chip, um Daten zu prüfen und zu korrigieren, bevor die Daten an den Host 310 gesendet werden.
  • Das System 300 veranschaulicht einen Schreibpfad 330 in dem Speicher 320, der einen Pfad für Daten repräsentiert, die von dem Host 310 in den Speicher 320 geschrieben werden. Der Host 310 stellt Daten 332 an den Speicher 320 zum Schreiben in ein oder mehrere Speicherarrays 340 bereit. In einem Beispiel erzeugt der Speicher 320 Prüfbits 336 mit dem Prüfbitgenerator 334, um die Daten im Speicher 320 zu speichern. Prüfbits 336 können als ECC-Bits bezeichnet werden und ermöglichen dem Host 310, einen Fehler zu korrigieren, der beim Schreiben in den und Lesen aus dem Speicher 320 auftreten kann. Daten 332 und Prüfbits 336 können als Codewort in 342 aufgenommen werden, was in das Array 340 geschrieben wird.
  • Der Lesepfad 350 repräsentiert einen Pfad für Daten, die aus Speicher 320 von Array 340 gelesen werden, um zu Host 310 zurückzukehren. In einem Beispiel sind zumindest bestimmte Hardwarekomponenten des Schreibpfads 350 und des Lesepfads 330 die gleiche Hardware. In einem Beispiel ruft der Speicher 320 das Ausgangscodewort 344 als Reaktion auf einen Lesebefehl vom Host 310 ab. Das Codewort kann Daten 354 und Prüfbits 352 umfassen. Die Daten 354 und die Prüfbits 352 können Daten 332 bzw. Prüfbits 336 entsprechen, die in den Schreibpfad 330 geschrieben werden. Somit kann ein Lesevorgang auf Daten und ECC-Bits zugreifen.
  • Es versteht sich, dass Fehlerkorrektur in dem Lesepfad 350 die Anwendung eines XOR-Baums auf eine entsprechende H-Matrix beinhalten kann, um Fehler zu erkennen und Fehler (im Fall eines Einzelbitfehlers) gezielt zu korrigieren. Die Struktur des XOR-Baums kann dazu ausgelegt sein, die H-Matrix zu implementieren. Wie im Fachgebiet verstanden wird, verweist eine H-Matrix auf eine Hamming-Code-Paritätsprüfmatrix, die zeigt, wie Linearkombinationen von Ziffern des Codeworts gleich null sind. Somit identifizieren die H-Matrixzeilen die Koeffizienten von Paritätsprüfgleichungen, die erfüllt sein müssen, damit eine Komponente oder Ziffer Teil eines Codeworts ist. In einem Beispiel enthält Speicher 320 einen Syndromgenerator 356, der es dem Speicher ermöglicht, Prüfbits 352 auf Daten 354 anzuwenden, um Fehler in den gelesenen Daten zu detektieren. Der Syndromgenerator 356 kann das Syndrom 358 erzeugen, um geeignete Fehlerinformationen für die gelesenen Daten zu erzeugen. Die Daten 354 können auch zur Korrektur eines detektierten Fehlers an die Fehlerkorrektur 366 weitergeleitet werden.
  • In einem Beispiel übergibt der Syndromgenerator 356 das Syndrom 358 an die Syndromdecodierung 360, um einen Fehlervektor zu erzeugen. In einem Beispiel sind der Prüfbitgenerator 334 und die Syndromdecodierung 360 vollständig durch eine entsprechende H-Matrix für die Speichervorrichtung spezifiziert. In einem Beispiel, wenn keine Fehler in den gelesenen Daten vorliegen (z. B. Null-Syndrom 358), erzeugt die Decodierung 360 des Syndroms die Anzeige 362 als ein Kein-Fehler-Signal. Wenn in einem Beispiel mehrere Fehler in den gelesenen Daten vorliegen (z. B. Nicht-Null-Syndrom 358, das keiner der Spalten in einer entsprechenden H-Matrix entspricht), erzeugt die Syndromdecodierung 360 die Anzeige 362 als ein DUE-Signal (detected uncorrected error), das auf einen detektierten, nicht korrigierten Fehler hinweist. Das DUE-Signal kann auf einen Multibitfehler hinweisen, den der Speicher 320 nicht durch interne ECC korrigieren konnte.
  • In einem Beispiel kann bei einem Einzelbitfehler (z. B. Nicht-Null-Syndrom 358, das mit einer der Spalten einer entsprechenden H-Matrix übereinstimmt) die Syndromdecodierung 360 die Anzeige 362 als CE-Signal (correctable error, korrigierbarer Fehler) mit Fehlerlokalisierung erzeugen, was Fehlerinformationen 364 sind, die für die Fehlerkorrekturlogik 366 bereitgestellt werden. Die Fehlerkorrektur 366 kann den korrigierbaren Fehler auf die angegebene Position in Daten 354 anwenden, um korrigierte Daten 368 für den internen Speicher zu erzeugen. Der Host 310 kann korrigierte Daten 368 mit einem nachfolgenden Lesebefehl lesen. In einem Beispiel kann die Anzeige 362 als Fehlervektor betrachtet werden, der einen Fehlerzustand in den an Host 310 übertragenen gelesenen Daten anzeigt. Die Fehlerinfo 364 kann die Informationen der Anzeige 362 sowie Adress- oder Standortinformationen für die Durchführung der Fehlerkorrektur enthalten. Der Vektor kann mehrere Bits enthalten, um den Schweregrad von Fehlern in Daten 354 oder den gelesenen Daten anzuzeigen.
  • In einem Beispiel enthält der Lesepfad 350 einen Pfad für unkorrigierte Daten 370. Mux 372 repräsentiert einen Multiplexer oder Selektor zur Auswahl zwischen unkorrigierten Daten 370 und korrigierten Daten 368. Mux 372 kann über SELECT 374 gesteuert werden, was ein Auswahlsignal darstellt, das auf die ECC-Schaltung angewendet wird, um einen Bypass-Pfad für unkorrigierte Daten bereitzustellen. In einem Beispiel wird SELECT 374 durch die Befehlsdecodierungslogik des Speichers 320 erzeugt. In einem Beispiel bezieht sich die Auswahl der korrigierten Daten 368 auf die Auswahl von Daten, die in einem internen Speicher gespeichert sind, um sie an Host 310 zu senden. Der unkorrigierte Datenpfad bietet einen Pfad mit niedriger Latenz für das Lesen von Daten zum Host 310, da es möglicherweise mehrere Nanosekunden Latenz im Zusammenhang mit der Fehlerkorrektur 366 geben kann.
  • 4 ist eine beispielhafte Tabelle mit Fehlerdetektionsindikatoren. Tabelle 400 repräsentiert eine Metadatencodierung für Informationen zur Fehleranzeige, wie z. B. die Fehleranzeige 362 von System 300. In einem Beispiel gibt es zwei Stifte, SEV[0:1], die Informationen zur Fehleranzeige vom Speicher an die Speichersteuerung bereitstellen. In einem Beispiel könnte ein einzelner Stift verwendet werden. SEV kann sich auf ein „Schweregrad-Bit“ oder ein Bit zum Anzeigen des Schweregrads von Fehlern beziehen, die in den gelesenen Daten des Arrays detektiert wurden. Die dargestellte Codierung ist nur ein Beispiel, und es kann eine andere Codierung verwendet werden.
  • Die Burst-Position kann Bitpositionen für BL8 oder Burst-Länge von acht mit Burst-Positionen BP[0:7] darstellen. In einem Beispiel kann eine Anzeige von NE (kein Fehler) nur Nullen für BP[0:7] für SEV[0] enthalten, wie in Zeile 412 der Tabelle 400 dargestellt. Zeile 414 zeigt nur Nullen für BP[0:7] für SEV[1] für die NE-Anzeige.
  • Zeile 422 zeigt Nullen für BP[0:3] und Nullen für BP[4:7] für SEV[0] als Anzeige eines Einzelbits mit korrigierbarem Fehler (CEs). Zeile 424 zeigt nur Nullen für BP[0:7] für SEV[1] für eine Anzeige von CEs.
  • Zeile 432 zeigt nur Nullen für BP[0:7] für SEV[0] für eine Anzeige einer Multibits mit korrigierbarem Fehler (CEM) für ein System, in dem ein Multibit-Fehler mit interner ECC korrigiert werden kann. Zeile 434 zeigt Nullen für BP[0:3] und Nullen für BP[4:7] für SEV[1] als Anzeige von CEm.
  • Zeile 442 zeigt Nullen für BP[0:3] und Nullen für BP[4:7] für SEV[0] als Anzeige eines nicht korrigierbaren Fehlers (UE). Zeile 444 zeigt Nullen für BP[0:3] und Nullen für BP[4:7] für SEV[1] für die Anzeige von UE.
  • Zeile 452 zeigt Einsen für BP[0:3] und Nullen für BP[4:7] für SEV[0] als Anzeige eines korrigierbaren, unkorrigierten Fehlers (CENC). Zeile 454 zeigt Einsen für BP[0:3] und Nullen für BP[4:7] für SEV[1] als Anzeige von CENC. Der Host kann auf der Grundlage einer Anzeige eines CENC zusätzliche Maßnahmen gemäß dem oben Beschriebenen ergreifen.
  • In einem Beispiel kann die CENC-Anzeige, obwohl als einzelne Codierung dargestellt, jedoch in verschiedene CENC-Befehle für SBE-CE und MBE-CE unterteilt werden. Daher kann es unterschiedliche Codierungsmuster (nicht abgebildet) für verschiedene Arten von unkorrigierten Fehlern geben.
  • 5 ist ein Blockdiagramm einer beispielhaften Datenarchitektur für eine Speicherarchitektur, die gezieltes Senden korrigierter Daten von der ECC auf dem Chip ermöglicht. Das System 500 stellt Elemente dar, die in ein System wie System 100, System 200 oder System 300 integriert werden können. Das System 500 stellt eine Kernspeicherarchitektur dar. Wie dargestellt, führt der Speicherkern einen Abruf von Daten durch (in einem Beispiel ein Prefetch und eine Datenauswahl) und enthält ECC-Bits für interne ECC. Das System 500 stellt eine xN-Architektur dar, was bedeutet, dass die Speichervorrichtung 510 N DQ-Signalschnittstellen mit einem Datenbus aufweist.
  • In einem Beispiel verwendet die Speichervorrichtung 510 alle Daten, auf die vom Speicher-Array 520 zugegriffen wird, um auf die Leseanforderung zu reagieren. In einem solchen Beispiel stellt FETCH 530 alle Daten, auf die von Speicher-Array 520 zugegriffen wird, für die ECC-Schaltungsanordnung 540 für ECC-Operationen bereit. In einem Beispiel benötigt die Speichervorrichtung weniger als den gesamten Datenzugriff vom Speicher-Array 520, um auf die Leseanforderung zu reagieren. In einem solchen Beispiel kann FETCH 530 alle Daten aus dem Speicher-Array 520 abrufen und einen Teil der Daten auswählen, um sie für ECC-Operationen für die ECC-Schaltungsanordnung 540 bereitzustellen.
  • Die ECC-Schaltungsanordnung 540 repräsentiert vorrichtungsinterne oder interne ECC-Logik für die Speichervorrichtung 510. In einem Beispiel ist es möglich, sich die ECC-Schaltungsanordnung 540 als ECC-Engine vorzustellen oder sie als ECC-Engine zu bezeichnen. In einem Beispiel umfasst die ECC-Schaltungsanordnung 540 Fehlerdetektion 542, um Fehler in den gelesenen Daten zu detektieren und eine Anzeige (ANZ) 554 zu erzeugen, die dem Host bereitgestellt wird. Die E/A-Schaltungsanordnung 560 stellt Schnittstellen zu DQ[0:(N-1)] dar, nicht aber Metadaten-Signalleitungen. In einem Beispiel umfasst die E/A-Schaltungsanordnung 560 Schnittstellen zu einer oder mehreren Metadaten-Signalleitungen, um die Anzeige 554 für den Host bereitzustellen.
  • In einem Beispiel enthält die ECC-Schaltungsanordnung 540 die Korrektur 544, die eine Fehlerkorrekturlogik innerhalb der Speichervorrichtung 510 darstellt und für einen ersten Lesevorgang an eine Adresse umgangen wird. Daher kann die Speichervorrichtung 510 als Reaktion auf eine erste Leseanforderung an eine Adresse die Anzeige 554 und Daten 552 als die unkorrigierten Lesedaten bereitstellen, auf die vom Speicher-Array 520 aus durch FETCH 530 zugegriffen wird. In einem solchen Fall sind Daten 552 die unkorrigierten Daten.
  • In einem Beispiel erzeugt die Korrektur 544 korrigierte Daten, die im Speicher 546 gespeichert werden sollen. Der Selektor 548 kann zwischen den unkorrigierten Daten aus dem Speicher-Array 520 und den korrigierten Daten aus dem Speicher 546 auswählen, je nachdem, ob die Leseanforderung die erste Leseanforderung für die Adresse oder eine nachfolgende Leseanforderung ist. Alternativ können korrigierte Daten in einem bestimmten Speicherort gespeichert und vom Host daraus gelesen werden, wie oben beschrieben. Wenn die korrigierten Daten ausgewählt werden, sind die an den Host zu sendenden Daten 552 die korrigierten Daten aus Speicher 546.
  • Das System 500 zeigt, wie die Daten (und die Fehleranzeige) von der Speichervorrichtung 510 als E/A 560 über eine Burst-Länge von M an den Host gesendet werden können. In einem Beispiel entspricht die Burst-Länge der Fehleranzeige der Burst-Länge der Datenübertragung. In einem Beispiel hat die Fehleranzeige eine andere Burst-Länge als die Burst-Länge der Datenübertragung.
  • 6 ist ein Flussdiagramm eines beispielhaften Prozesses zum gezielten Senden korrigierter Daten von der ECC auf dem Chip. Der Prozess 600 repräsentiert einen Prozess für einen Speicherlesevorgang mit optionaler Fehlerkorrektur auf dem Chip. Ein solcher Prozess kann von der ECC-Schaltungsanordnung gemäß System 100, System 200, System 300 oder System 500 durchgeführt werden.
  • Die Speichersteuerung erzeugt eine Leseanforderung und sendet sie bei 602 an eine Speichervorrichtung. In einem Beispiel bestimmt die Speichervorrichtung, ob es korrigierte oder unkorrigierte Daten als Antwort auf die Leseanforderung bei 604 bereitstellen soll. Wenn es sich bei der Leseanforderung um eine anfängliche Leseanforderung für die Daten handelt, kann die Speichervorrichtung unkorrigierte Daten zurückgeben. Wenn es sich bei der Leseanforderung um eine nachfolgende Leseanforderung handelt, kann die Speichervorrichtung korrigierte Daten zurückgeben.
  • Wenn die Speichervorrichtung keine korrigierten Daten zurückgeben soll, entsprechend dem NEIN-Zweig bei 606, greift in einem Beispiel die Speichervorrichtung bei 608 auf die Daten des Speicher-Arrays zu. Die ECC-Schaltungsanordnung oder -Logik auf der Speichervorrichtung können eine Fehlerdetektion durchführen und eine Fehleranzeige als Reaktion auf die Leseanforderung bei 610 bereitstellen. Zusätzlich zur Fehleranzeige kann die Speichervorrichtung bei 612 unkorrigierte Daten zurückgeben. In einem Beispiel führt die ECC-Schaltungsanordnung eine Fehlerkorrektur der Daten durch und speichert bei 614 das korrigierte Datenergebnis in einem Speicher der Speichervorrichtung. In einem Beispiel führt die Speichervorrichtung nur dann eine Fehlerkorrektur durch, wenn es sich bei der Fehleranzeige um einen korrigierbaren Fehler handelt. In einem Beispiel führt die Speichervorrichtung eine Fehlerkorrektur durch und speichert die korrigierten Daten nur, wenn es sich bei der Fehleranzeige um einen korrigierbaren Fehler handelt.
  • Nach dem Speichern der korrigierten Daten kann der Lesevorgang beendet werden In einem Beispiel erzeugt die Speichersteuerung als Reaktion auf die Fehleranzeige eine nachfolgende Leseanforderung für die korrigierten Daten. Daher sollte die Speichervorrichtung korrigierte Daten als Antwort auf eine solche Leseanforderung bereitstellen.
  • Wenn die Speichervorrichtung korrigierte Daten bereitstellen soll, entsprechend dem JA-Zweig bei 606, greift in einem Beispiel die Speichervorrichtung bei 616 auf die Daten vom internen Speicherort (z. B. einem Puffer, einem Register, einer dedizierten Adresse des Arrays) zu. Die Speichervorrichtung kann dann bei 618 die korrigierten Daten an die Speichersteuerung zurückgeben. In einem Beispiel beinhaltet der Zugriff auf die korrigierten Daten keine Fehlerdetektion oder Korrektur, die als Reaktion auf die ursprüngliche Anforderung durchgeführt wurde. In einem Beispiel, in dem korrigierte Daten bereinigt und in das Array zurückgeschrieben werden, kann sich der Zugriff auf die korrigierten Daten auf einen nachfolgenden Zugriff auf dieselbe Adresse des Arrays beziehen, und die Fehlerdetektion kann erneut durchgeführt werden.
  • 7 ist ein Blockdiagramm eines Beispiels für Fehlerprüfung und - korrektur auf Systemebene. Das System 700 stellt ein Beispiel für ECC-Schaltungsanordnungen auf Systemebene für ein System gemäß einem beliebigen Beispiel für hostseitige oder Speichersteuerung-ECC hierin bereit. Der Host 710 beinhaltet eine Steuerung 720 oder eine äquivalente oder alternative Logik oder Schaltung oder Komponente, die den Zugriff auf den Speicher 770 verwaltet. Die Steuerung 720 führt eine externe ECC an Daten durch, die aus dem Speicher 770 gelesen werden. In einem Beispiel implementiert der Speicher 770 eine ECC auf dem Chip 772, um Daten aus dem Array 774 zu prüfen und zu korrigieren, bevor die Daten über den Bus 740 an den Host 710 gesendet werden. Die Leistungsfähigkeit der ECC auf dem Chip 772 kann mit jedem hier angegebenen Beispiel übereinstimmen.
  • Der Host 710 weist einen Prozessor 712 zum Ausführen von Operationen auf, die Anfragen für Daten erzeugen werden, die in dem Array 774 des Speichers 770 gespeichert sind. Als Reaktion auf eine Anfrage zum Schreiben von Daten kann die Steuerung 720 einen Schreibbefehl durch den Schreibpfad 730 erzeugen. Für eine Leseanfrage empfängt die Steuerung 720 Lesedaten durch den Lesepfad 750.
  • Der Schreibpfad 730 stellt einen Pfad für Daten dar, die von dem Prozessor 712 in den Speicher 770 geschrieben werden. Der Prozessor 712 stellt Daten 722 zum Schreiben in den Speicher 770 bereit. In einem Beispiel erzeugt die Steuerung 720 Prüfbits 736 mit dem Prüfbitgenerator 734, um die Daten 732 im Speicher zu speichern. Prüfbits 736 können als ECC-Bits bezeichnet werden und ermöglichen die Fehlerkorrektur für einen Fehler, der beim Schreiben in und Lesen aus dem bzw. den Speicher-Array(s) 774 auftreten kann. Die Daten 732 und Prüfbits 736 können als Codewort 742 geschrieben werden, das über den Datenbus 740 in das Array 774 in Speicher 770 geschrieben wird.
  • Der Lesepfad 750 repräsentiert einen Pfad für Daten, die aus dem Speicher 770 gelesen werden, zu dem Host 710. In einem Beispiel sind zumindest bestimmte Hardwarekomponenten des Schreibpfads 730 und des Lesepfads 750 die gleiche Hardware. In einem Beispiel ruft der Speicher 770 die Daten als Reaktion auf einen Lesebefehl vom Host 710 ab. Das Lesecodewort 742 repräsentiert die Daten und Prüfbits, die in dem Array 774 gespeichert wurden. Die Daten 754 und Prüfbits 752 repräsentieren die Daten und Prüfbits des gelesenen Codeworts 744. Das Lesecodewort 744 repräsentiert ein Codewort, das aus Daten von Vorrichtung[0:(N-1)] besteht. In einem Beispiel entsprechen diese Daten 732 bzw. Prüfbits 736, die in den Schreibpfad 730 an die gleiche Adresse des Lesebefehls geschrieben werden.
  • Der Lesepfad 750 enthält den Syndromgenerator 756, um H-Matrixberechnungen auf Daten 754 und Prüfbits 752 anzuwenden, um Fehler in den gelesenen Daten zu detektieren. Der Syndromgenerator 756 kann das Syndrom 758 erzeugen, um geeignete Fehlerinformationen für die gelesenen Daten zu erzeugen. Die Daten 754 können auch zur Korrektur eines detektierten Fehlers an die Fehlerkorrektur 766 weitergeleitet werden.
  • In einem Beispiel übergibt der Syndromgenerator 756 das Syndrom 758 an die Syndromdecodierung 760, um einen Fehlervektor zu erzeugen. In einem Beispiel werden der Prüfbitgenerator 734 und der Syndromgenerator 756 vollständig durch eine entsprechende H-Matrix spezifiziert. Falls es keine Fehler in den gelesenen Daten gibt (z. B. Null-Syndrom 758), erzeugt der Syndromgenerator 756 in einem Beispiel ein Kein-Fehler-Signal 762. Wenn in einem Beispiel mehrere Fehler in den gelesenen Daten vorhanden sind (z. B. Nicht-Null-Syndrom 758, das keiner der Spalten in einer entsprechenden H-Matrix entspricht), erzeugt die Syndromdecodierung 760 ein UE-Signal 764 (nicht korrigierbarer Fehler). Das UE-Signal 764 kann auf einen Multibitfehler hinweisen, der durch die Anwendung von ECC nicht korrigiert werden konnte.
  • In einem Beispiel, wenn ein Einzelbitfehler vorliegt (z. B. Nicht-Null-Syndrom 758, das mit einer der Spalten einer entsprechenden H-Matrix übereinstimmt), kann die Syndromdecodierung 760 Fehlerinformationen erzeugen, die für die Fehlerkorrekturlogik 766 bereitgestellt werden. Die Fehlerkorrektur 766 kann den korrigierbaren Fehler auf die spezifizierte Position in den Daten 754 anwenden, um korrigierte Daten 768 zur Ausgabe zu erzeugen, die für den Prozessor 712 bereitgestellt werden sollen.
  • In einem Beispiel umfasst der Speicher 770 die ECC auf dem Chip 772, um eine gezielte Anwendung der Fehlerkorrektur auf Daten durchzuführen, die aus dem Array 774 gelesen werden. Die gezielte Anwendung der Fehlerkorrektur kann in Übereinstimmung mit jedem Beispiel hier erfolgen. Die gezielte Anwendung der Fehlerkorrektur ermöglicht Speichervorrichtungen[0:N-1], standardmäßig unkorrigierte Daten für einen Lesebefehl bereitzustellen. Der Speicher 770 kann als Reaktion auf einen nachfolgenden Befehl korrigierte Daten für den Host 710 bereitstellen. In einem Beispiel stellt die Steuerung 720 eine Fehlerkorrektur für unkorrigierte Daten mit korrigierbaren Fehlern bereit, um die Notwendigkeit eines nachfolgenden Lesebefehls für den Zugriff auf die korrigierten Daten zu vermeiden.
  • 8 ist ein Blockdiagramm einer beispielhaften Prüfbiterzeugungslogik und Syndrombiterzeugungslogik, um eine Matrix für ECC anzuwenden. Die H-Matrix 810 ist ein vereinfachtes Beispiel für die Anwendung von ECC durch eine Speichervorrichtung für eine ECC auf dem Chip in Übereinstimmung mit dem System 300 oder durch eine Speichersteuerung für eine System-ECC nach einem Beispiel von System 700. Die H-Matrix 810 bietet ein vereinfachtes Beispiel für die Detektion und Korrektur korrigierbarer Fehler.
  • Die H-Matrix 810 repräsentiert ein Beispiel für 16 Bits einer Codematrix zur Verwendung mit einer vorrichtungsinternen ECC. Es versteht sich, dass ein typisches Operationscodewort in modernen Rechensystemen mehr als 16 Bit umfasst. Die 16-Bit-H-Matrix veranschaulicht jedoch Prinzipien eines ECC-Betriebs für entweder Die-interne ECC, die bei speicherinterner Fehlerprüfung und -korrektur gemäß einem beliebigen Beispiel hierin zu verwenden ist, oder für ECC auf Systemebene durch die Speichersteuerung oder eine Fehlersteuerung gemäß einem beliebigen Beispiel hierin.
  • Die Matrix 810 kann Teil eines Hamming-Codes für SEC (Einzelbitfehlerkorrektur) sein, z. B. eines Hamming-Codes für ein 128-Bit-Codewort. Die Matrix 810 veranschaulicht nur 16 Codes, ein Codebit für jedes Datenbit [15:0]. In einem Beispiel entspricht jeder Code der Matrix 810 einem Datenbit. Bei dem veranschaulichten Beispiel beinhaltet jeder Code 8 Prüfbits CB[0:7]. Wenn aus dem Datenwort und Prüfbits, die in dem Speicher gespeichert sind, ein Syndrom berechnet wird, kann die ECC-Engine bestimmen, ob das Syndrom einem der Codes in der Matrix 810 entspricht. Wenn die ECC-Engine bestimmt, dass ein Syndrom mit einem der Codes übereinstimmt, schaltet die ECC-Engine das entsprechende Datenbit um, um einen Fehler zu korrigieren. Beispiele für Prüfbiterzeugung und Syndrombiterzeugung sind dargestellt.
  • Die Prüfbiterzeugungslogik 802 repräsentiert Logik zum Durchführen von ECC-Operationen, um Prüfbits zu erzeugen. Die Syndrombiterzeugungslogik 804 repräsentiert Logik zum Durchführen von ECC-Operationen, um Syndrombits zum Vergleichen mit dem Prüfbit zu erzeugen. Zu Veranschaulichungszwecken ist in der Zeichnung nur Logik bezüglich der Prüfbits CB[0:2] veranschaulicht, und entsprechend sind nur Syndrombits SB[0:2] veranschaulicht.
  • Wie veranschaulicht, kann das Syndrom vollständig in der ECC-Logik für die Prüfbiterzeugung und die Syndrombiterzeugung codiert werden. In einem Beispiel beinhaltet die Prüfbiterzeugung 802 XOR-Gatter, um das Schreibdatenwort 820 zu empfangen und XOR-Operationen für die Eins-Bits des Codes durchzuführen. Zum Beispiel sind die Bits D[10:0] bei der Erzeugung von CB[0] mit Bezug auf die veranschaulichten 16 Codewortbits nur Einsen, wohingegen die Bits D[15:11] Nullen sind. Somit beinhaltet die Berechnung von CB[0] in einem Beispiel die XOR-Operation mit XOR 822 von Bits D[10:0] des Codeworts. Gleichermaßen beinhaltet die Erzeugung des Syndrombits SB[0] Logik zum Empfangen des Lesedatenworts 830 und zum Durchführen einer XOR-Operation mit dem XOR 832 der Bits D[10:0] des Lesedatencodeworts. Die Ausgabe von XOR 832 wird dann einer XOR-Operation mit XOR 842 mit CB[0] unterzogen, um SB[0] zu erzeugen.
  • Es versteht sich, dass technisch gesehen eine wahre XOR-Operation nur für zwei Eingaben existieren kann, wobei eine Ausgabe nur dann eins ist, wenn nur eine der Eingaben eins ist. Es ist jedoch üblich, eine Kaskade von XOR-Operationen als XOR mit mehreren Eingaben (was eine Anzahl von Eingaben größer als 2 bedeutet) zu repräsentieren, wie etwa XOR 822 für CB[0] und XOR 832 für SB[0]. Die XOR-Operation weist eine kommutative Eigenschaft auf und die XOR-Verknüpfung mehrerer Paare von Eingaben und dann die serielle XOR-Verknüpfung der Ausgaben dieser Operationen kann in beliebiger Reihenfolge mit demselben Ergebnis ausgetauscht werden. Somit haben die XOR-Operationen den praktischen Effekt einer Modulo-2-Addition, was auch zu einer Detektion von ungerader Parität äquivalent ist. Eine Detektion ungerader Parität liefert eine ‚1‘ als Ausgabe, wenn eine ungerade Anzahl von Einsen unter den Eingaben vorliegt, und liefert eine Null-Ausgabe, wenn eine gerade Anzahl von Einsen unter den Eingaben vorliegt.
  • In einem anderen Beispiel sind bei der Erzeugung von CB[1] mit Bezug auf die veranschaulichten 16 Codewortbits die Bits D[15:10] und D[4:1] Einsen, und die Bits D[9:5] und D[0] sind Nullen. XOR 824 berechnet CB[1] aus den Eins-Bits. Gleichermaßen sind für die Erzeugung von CB[2] Bits D[15:9] und D[2:0] Einsen und Bits D[8:3] Nullen. XOR 826 berechnet CB[2] aus den Eins-Bits.
  • Die Syndrombiterzeugung 804 repräsentiert Logik zum Empfangen des Lesedatenworts 830 und des Prüfbitworts 840 und zum Erzeugen der Syndrombits durch Vergleich der CB-Berechnung mit den gespeicherten Prüfbits. Gleichermaßen berechnet für die Syndrombiterzeugung von SB[1] mit Bezug auf die 16 veranschaulichten Codewortbits XOR 834 ein XOR von D[15:10] und D[4:1] und berechnet dann das XOR 844 SB[1] durch XOR von CB[1] mit der Ausgabe von XOR 834. Gleichermaßen berechnet für die Syndrombiterzeugung von SB[2] mit Bezug auf die 16 veranschaulichten Codewortbits XOR 836 ein XOR von D[15:9] und D[2:0] und berechnet dann das XOR 846 SB[2] durch XOR von CB[2] mit der Ausgabe von XOR 836.
  • Basierend auf der Bestimmung der Prüfbits und Syndrombits kann das System Fehler und potenziell Flip-Bits, z. B. für ein Bit oder eine Spalte von CB[7:0], von dem/der festgestellt wurde, dass es/sie mit den Syndrombits übereinstimmt, identifizieren. Ein ECS-System kann solche Techniken anwenden, um eine Bereinigung von Speicheradressen durchzuführen. In einem Beispiel führt ein System eine Fehlerkorrektur parallel zum Senden der Fehlerdetektion und -Meldung an den Host durch, entsprechend den Beispielen in diesem Dokument.
  • 9 ist ein Blockdiagramm eines Speicherteilsystems, in dem gezieltes Senden korrigierter Daten von der ECC auf dem Chip implementiert werden kann. Das System 900 beinhaltet einen Prozessor und Elemente eines Speicherteilsystems in einer Datenverarbeitungsvorrichtung. System 900 ist ein Beispiel für ein System in Übereinstimmung mit einem beispielhaften System 100 oder System 200.
  • In einem Beispiel enthält die Speichervorrichtung 940 die ECC auf dem Chip 990. ECC 990 repräsentiert eine ECC auf dem Chip für die Speichervorrichtung 940, um die Fehlerprüfung und die gezielte Bereitstellung korrigierter Daten an den die Speichersteuerung 920 gemäß den Beispielen in diesem Dokument zu ermöglichen. In einem Beispiel enthält die Speichersteuerung 920 die Fehlersteuerung 928, um die Logik innerhalb der Speichersteuerung 920 darzustellen, damit bestimmt werden kann, ob ein nachfolgender Lesebefehl ausgegeben werden soll, um auf korrigierte Daten zuzugreifen. In einem Beispiel stellt die Speichervorrichtung 940 in der Regel unkorrigierte Daten für die Speichersteuerung 920 bereit als Reaktion auf einen Lesebefehl, führt eine Fehlerkorrektur parallel zur Bereitstellung der unkorrigierten Daten durch und kann die korrigierten Daten als Antwort auf eine nachfolgende Anforderung durch die Speichersteuerung 920 bereitstellen.
  • Der Prozessor 910 stellt eine Verarbeitungseinheit einer Datenverarbeitungsplattform dar, die ein Betriebssystem (BS) und Anwendungen ausführen kann, die gemeinsam als der Host oder der Benutzer des Speichers bezeichnet werden können. Das BS und die Anwendungen führen Operationen aus, die zu Speicherzugriffen führen. Der Prozessor 910 kann einen oder mehrere separate Prozessoren beinhalten. Jeder separate Prozessor kann eine einzelne Verarbeitungseinheit, eine Mehrkern-Verarbeitungseinheit oder eine Kombination davon beinhalten. Die Verarbeitungseinheit kann ein Primärprozessor, wie etwa eine CPU (central processing unit - zentrale Verarbeitungseinheit), ein Peripherieprozessor, wie etwa eine GPU (graphics processing unit - Grafikverarbeitungseinheit), oder eine Kombination davon sein. Die Speicherzugriffe können auch durch Vorrichtungen, wie etwa eine Netzwerksteuerung oder eine Festplattensteuerung, initiiert werden. Derartige Vorrichtungen können bei einigen Systemen in den Prozessor integriert sein oder über einen Bus (z. B. PClexpress) oder eine Kombination davon an den Prozessor angeschlossen sein. Das System 900 kann als SOC (System-on-a-Chip) umgesetzt sein oder kann mit eigenständigen Komponenten umgesetzt sein.
  • Eine Bezugnahme auf Speichervorrichtungen kann auf verschiedene Speichertypen anwendbar sein. Die Speichervorrichtungen beziehen sich oftmals auf flüchtige Speichertechnologien. Flüchtiger Speicher ist ein Speicher, dessen Zustand (und somit die darin gespeicherten Daten) unbestimmt ist, wenn eine Stromversorgung zur Vorrichtung unterbrochen wird. Nichtflüchtiger Speicher bezieht sich auf einen Speicher, dessen Zustand selbst bei Unterbrechung einer Leistungszufuhr zur Vorrichtung festgelegt ist. Dynamischer flüchtiger Speicher erfordert ein Auffrischen der in der Vorrichtung gespeicherten Daten, um einen Zustand beizubehalten. Ein Beispiel für dynamischen flüchtigen Speicher beinhaltet DRAM (dynamic random-access memory - dynamischen Direktzugriffsspeicher) oder eine Variante davon, wie etwa synchronen DRAM (SDRAM). Ein Speicherteilsystem, wie es hier beschrieben ist, kann mit einer Anzahl von Speichertechnologien kompatibel sein, wie etwa DDR4 (Double Data Rate Version 4, JESD79-4, ursprünglich veröffentlicht im September 2012 von JEDEC (Joint Electron Device Engineering Council, jetzt JEDEC Solid State Technology Association)), LPDDR4 (Low Power DDR Version 4, JESD209-4, ursprünglich veröffentlicht von JEDEC im August 2014), WIO2 (Wide I/O 2 (WidelO2), JESD229-2, ursprünglich veröffentlicht von JEDEC im August 2014), HBM (High Bandwidth Memory DRAM, JESD235A, ursprünglich veröffentlicht von JEDEC im November 2015), DDR5 (DDR Version 5, ursprünglich veröffentlicht von JEDEC im Juli 2020), LPDDR5 (LPDDR Version 5, JESD209-5, ursprünglich veröffentlicht von JEDEC im Februar 2019), HBM2 (HBM Version 2, JESD235C, ursprünglich veröffentlicht von JEDEC im Januar 2020), HBM3 (HBM Version 3, derzeit erörtert durch JEDEC) oder anderen oder Kombinationen von Speichertechnologien und Technologien basierend auf Ableitungen oder Erweiterungen solcher Spezifikationen.
  • Neben oder alternativ zu flüchtigem Speicher kann das Speichermodul in einem Beispiel ein persistenter Speicher-DIMM oder ein nicht-flüchtiger Systemspeicher sein, der sich auf den nicht flüchtigen Speicher bezieht, der an den Systemspeicherbus angeschlossen ist. Eine solche Speichervorrichtung kann eine dreidimensionale 3DXP-Speichervorrichtung (Crosspoint) enthalten. 3DXP kann als byteadressierbare nicht-flüchtige Speichervorrichtung oder als blockadressierbare nicht-flüchtige Speichervorrichtung arbeiten. Eine Speichervorrichtung kann ein nichtflüchtiges byteadressierbares Medium oder blockadressierbares Medium beinhalten, das Daten basierend auf einem Widerstandszustand der Speicherzelle oder einer Phase der Speicherzelle speichert. In einem Beispiel kann die Speichervorrichtung Chalkogenid-Phasenwechselmaterial (z. B. Chalkogenidglas) verwenden. In einem Beispiel kann der Systemspeicherbaustein 3DXP, ein- oder mehrstufiger Phasenänderungsspeicher (PCM) oder Phasenänderungsspeicher mit einem Schalter (PCMS), ein Widerstandsspeicher, Nanowire-Speicher, ferroelektrischer Transistor Random Access Memory (FeTRAM), magnetoresistiver Direktzugriffsspeicher (MRAM) mit Memristor-Technologie oder Spin-Transfer-Torque- bzw. STT-MRAM oder eine Kombination der oben genannten oder anderer Speicher sein oder enthalten.
  • Die Speichersteuerung 920 stellt eine oder mehrere Speichersteuerungsschaltungen oder -vorrichtungen für das System 900 dar. Die Speichersteuerung 920 stellt eine Steuerlogik dar, die Speicherzugriffsbefehle als Reaktion auf die Ausführung von Operationen durch den Prozessor 910 erzeugt. Die Speichersteuerung 920 greift auf eine oder mehrere Speichervorrichtungen 940 zu. Die Speichervorrichtungen 940 können DRAM-Vorrichtungen gemäß einer beliebigen der oben genannten sein. In einem Beispiel werden die Speichervorrichtungen 940 als unterschiedliche Kanäle organisiert und verwaltet, wobei jeder Kanal mit Bussen und Signalleitungen gekoppelt ist, die ihrerseits parallel mit mehreren Speichervorrichtungen gekoppelt sind. Jeder Kanal ist unabhängig betreibbar. Somit wird auf jeden Kanal unabhängig zugegriffen, und er wird unabhängig gesteuert, und die Zeitsteuerung, die Datenübertragung, der Befehls- und Adressaustausch und andere Operationen sind für jeden Kanal separat. Eine Kopplung kann sich auf eine elektrische Kopplung, eine kommunikative Kopplung, eine physische Kopplung oder eine Kombination aus diesen beziehen. Eine physische Kopplung kann einen direkten Kontakt beinhalten. Die elektrische Kopplung beinhaltet eine Schnittstelle oder Zwischenverbindung, die einen elektrischen Fluss zwischen den Komponenten oder eine Signalisierung zwischen den Komponenten oder beides erlaubt. Eine kommunikative Kopplung beinhaltet Verbindungen, einschließlich drahtgebundener oder drahtloser Verbindungen, die es den Komponenten ermöglichen, Daten auszutauschen.
  • In einem Beispiel werden Einstellungen für jeden Kanal durch separate Modusregister oder andere Registereinstellungen gesteuert. In einem Beispiel verwaltet jede Speichersteuerung 920 einen separaten Speicherkanal, obwohl das System 900 so konfiguriert sein kann, dass es mehrere Kanäle aufweist, die von einer einzigen Steuerung verwaltet werden, oder dass es mehrere Steuerungen auf einem einzigen Kanal aufweist. In einem Beispiel ist die Speichersteuerung 920 Teil des Host-Prozessors 910, wie etwa eine Logik, die auf demselben Die implementiert ist oder in demselben Gehäuseraum implementiert ist wie der Prozessor.
  • Die Speichersteuerung 920 beinhaltet eine E/A-Schnittstellenlogik 922 zum Koppeln mit einem Speicherbus, wie etwa einem Speicherkanal, wie oben erwähnt wurde. Die E/A-Schnittstellenlogik 922 (sowie die E/A-Schnittstellenlogik 942 der Speichervorrichtung 940) kann Stifte, Kontaktfelder, Verbinder, Signalleitungen, Leiterbahnen oder Drähte oder andere Hardware zum Verbinden der Vorrichtungen oder eine Kombination von diesen beinhalten. Die E/A-Schnittstellenlogik 922 kann eine Hardwareschnittstelle beinhalten. Wie dargestellt, beinhaltet die E/A-Schnittstellenlogik 922 zumindest Treiber/Sendeempfänger für Signalleitungen. Üblicherweise sind Drähte innerhalb einer IC-Schnittstelle über ein Kontaktfeld, einen Stift oder einen Verbinder mit Schnittstellensignalleitungen oder Leiterbahnen oder anderen Drähten zwischen Vorrichtungen gekoppelt. Die E/A-Schnittstellenlogik 922 kann Treiber, Empfänger, Sendeempfänger oder Endabschlüsse oder andere Schaltungsanordnungen oder Kombinationen von Schaltungsanordnungen zum Austauschen von Signalen auf den Signalleitungen zwischen den Vorrichtungen beinhalten. Das Austauschen von Signalen beinhaltet mindestens eines von einem Senden oder einem Empfangen. Obwohl eine Kopplung der E/A 922 von der Speichersteuerung 920 mit der E/A 942 der Speichervorrichtung 940 gezeigt wird, versteht es sich, dass in einer Implementierung des Systems 900, bei der parallel auf Gruppen von Speichervorrichtungen 940 zugegriffen wird, mehrere Speichervorrichtungen E/A-Schnittstellen zu derselben Schnittstelle der Speichersteuerung 920 beinhalten können. In einer Implementierung des Systems 900, das ein oder mehrere Speichermodule 970 beinhaltet, kann die E/A 942 eine Schnittstellenhardware des Speichermoduls zusätzlich zur Schnittstellenhardware in der Speichervorrichtung selbst beinhalten. Andere Speichersteuerungen 920 weisen separate Schnittstellen zu anderen Speichervorrichtungen 940 auf.
  • Der Bus zwischen der Speichersteuerung 920 und den Speichervorrichtungen 940 kann als mehrere Signalleitungen implementiert sein, welche die Speichersteuerung 920 mit den Speichervorrichtungen 940 koppeln. Der Bus kann in der Regel mindestens einen Takt (CLK) 932, eine Befehls-/Adresseinheit (CMD) 934 und Schreibdaten (DQ) und Lesedaten (DQ) 936 und null oder mehr andere Signalleitungen 938 beinhalten. In einem Beispiel kann ein Bus oder eine Verbindung zwischen der Speichersteuerung 920 und dem Speicher als ein Speicherbus bezeichnet werden. In einem Beispiel ist der Speicherbus ein Mehrpunktbus. Die Signalleitungen für die CMD können als „C/A-Bus“ (oder ADD/CMD-Bus oder mit irgendeiner anderen Bezeichnung, die eine Übertragung von Befehlen (C oder CMD) und Adress- (A- oder ADD-)Informationen angibt) bezeichnet werden und die Signalleitungen für Schreib- und Lese-DQ können als „Datenbus“ bezeichnet werden. In einem Beispiel weisen unabhängige Kanäle unterschiedliche Taktsignale, C/A-Busse, Datenbusse und andere Signalleitungen auf. Somit kann das System 900 betrachtet werden, als dass es in dem Sinne, dass ein unabhängiger Schnittstellenpfad als ein separater Bus betrachtet werden kann, mehrere „Busse“ aufweist. Es versteht sich, dass ein Bus zusätzlich zu den explizit gezeigten Leitungen mindestens eine von Strobe-Signalisierungsleitungen, Warnleitungen, Hilfsleitungen, andere Signalleitungen oder eine Kombination davon beinhalten kann. Es versteht sich zudem, dass serielle Bustechnologien zur Verbindung zwischen der Speichersteuerung 920 und den Speichervorrichtungen 940 verwendet werden können. Ein Beispiel für eine serielle Bustechnologie ist die 9B10B-Codierung und -Übertragung von Hochgeschwindigkeitsdaten mit eingebettetem Takt über ein einziges Differenzpaar von Signalen in jeder Richtung. In einem Beispiel repräsentiert die CMD 934 Signalleitungen, die parallel mit mehreren Speichervorrichtungen gemeinsam genutzt werden. In einem Beispiel nutzen mehrere Speichervorrichtungen die Codierbefehlssignalleitungen der CMD 934 gemeinsam und weisen jeweils eine separate Chipauswahl- (CS_n-)Signalleitung auf, um individuelle Speichervorrichtungen auszuwählen.
  • Es versteht sich, dass in dem Beispiel für das System 900 der Bus zwischen der Speichersteuerung 920 und den Speichervorrichtungen 940 einen untergeordneten Befehlsbus CMD 934 und einen untergeordneten Bus zum Transportieren der Schreib- und Lesedaten, DQ 936, beinhaltet. In einem Beispiel kann der Datenbus bidirektionale Leitungen für Lesedaten und für Schreib-/Befehlsdaten beinhalten. In einem anderen Beispiel kann der untergeordnete Bus DQ 936 unidirektionale Schreibsignalleitungen zum Schreiben von Daten von dem Host zu dem Speicher beinhalten und kann unidirektionale Leitungen zum Lesen von Daten von dem Speicher zu dem Host beinhalten. Gemäß der gewählten Speichertechnologie und der gewählten Systemausgestaltung können andere Signalleitungen 938 einen Bus oder Teilbus begleiten, wie etwa die Strobeleitungen DQS. Basierend auf einer Ausgestaltung des Systems 900 oder einer Implementierung, falls eine Ausgestaltung mehrere Implementierungen unterstützt, kann der Datenbus mehr oder weniger Bandbreite pro Speichervorrichtung 940 aufweisen. Zum Beispiel kann der Datenbus Speichervorrichtungen unterstützen, die entweder eine x4-Schnittstelle, eine x8-Schnittstelle, eine x16-Schnittstelle oder eine andere Schnittstelle aufweisen. Die Konvention „xW“, wobei W eine ganze Zahl ist, die sich auf eine Schnittstellengröße oder eine Breite der Schnittstelle der Speichervorrichtung 940 bezieht, stellt eine Anzahl von Signalleitungen zum Austauschen von Daten mit der Speichersteuerung 920 dar. Die Schnittstellengröße der Speichervorrichtungen ist ein steuernder Faktor dahingehend, wie viele Speichervorrichtungen gleichzeitig pro Kanal in dem System 900 verwendet werden können oder parallel mit denselben Signalleitungen gekoppelt werden können. In einem Beispiel können Speichervorrichtungen mit hoher Bandbreite, breite Schnittstellenvorrichtungen oder gestapelte Speicherkonfigurationen oder Kombinationen davon breitere Schnittstellen ermöglichen, wie etwa eine x128-Schnittstelle, eine x256-Schnittstelle, eine x512-Schnittstelle, eine x1024-Schnittstelle oder eine andere Datenbusschnittstellenbreite.
  • In einem Beispiel tauschen die Speichervorrichtungen 940 und die Speichersteuerung 920 Daten über den Datenbus in einem Burst oder einer Sequenz von aufeinander folgenden Datenübertragungen aus. Der Burst entspricht einer Anzahl von Übertragungszyklen, die mit einer Busfrequenz in Beziehung steht. In einem Beispiel kann der Übertragungszyklus ein ganzer Taktzyklus für Übertragungen sein, die auf demselben Takt oder an derselben Strobesignalflanke (z. B. an der aufsteigenden Flanke) stattfinden. In einem Beispiel ist jeder Taktzyklus, der sich auf einen Zyklus des Systemtakts bezieht, in mehrere Einheitsintervalle (Uls, unit intervals) getrennt, wobei jedes UI ein Übertragungszyklus ist. Zum Beispiel lösen Übertragungen mit doppelter Datenrate auf beiden Flanken des Taktsignals aus (z. B. steigend und fallend). Ein Burst kann eine konfigurierte Anzahl von Uls lang sein, was eine in einem Register gespeicherte Konfiguration sein kann, oder er kann spontan ausgelöst werden. Zum Beispiel kann eine Sequenz von acht aufeinander folgenden Übertragungsperioden als eine Burst-Länge acht (BL8) angesehen werden, und jede Speichervorrichtung 940 kann Daten in jedem UI übertragen. Somit kann eine x8-Speichervorrichtung, die mit BL8 arbeitet, 64 Datenbits übertragen (8 Datensignalleitungen mal 8 Datenbits, die pro Leitung über den Burst übertragen werden). Es versteht sich, dass dieses einfache Beispiel lediglich eine Veranschaulichung ist und nicht einschränkend ist.
  • Die Speichervorrichtungen 940 stellen Speicherressourcen für das System 900 dar. In einem Beispiel ist jede Speichervorrichtung 940 ein separater Speicher-Die. In einem Beispiel kann jede Speichervorrichtung 940 mit mehreren (z. B. 2) Kanälen pro Vorrichtung oder Die eine Schnittstelle bilden. Jede Speichervorrichtung 940 beinhaltet die E/A-Schnittstellenlogik 942, die eine durch die Implementierung der Vorrichtung bestimmte Bandbreite aufweist (z. B. x16 oder x8 oder eine andere Schnittstellenbandbreite). Die E/A-Schnittstellenlogik 942 ermöglicht, dass die Speichervorrichtungen mit der Speichersteuerung 920 eine Schnittstelle bilden. Die E/A-Schnittstellenlogik 942 kann eine Hardwareschnittstelle beinhalten und kann der E/A 922 der Speichersteuerung entsprechen, allerdings am Speichervorrichtungsende. In einem Beispiel sind mehrere Speichervorrichtungen 940 parallel mit denselben Befehls- und Datenbussen verbunden. In einem anderen Beispiel sind mehrere Speichervorrichtungen 940 parallel mit demselben Befehlsbus verbunden sowie mit unterschiedlichen Datenbussen verbunden. Das System 900 kann beispielsweise mit mehreren parallel geschalteten Speichervorrichtungen 940 konfiguriert sein, wobei jede Speichervorrichtung auf einen Befehl reagiert und auf jeweilige interne Speicherressourcen 960 zugreift. Für eine Schreiboperation kann eine einzelne Speichervorrichtung 940 einen Abschnitt des Gesamtdatenworts schreiben, und für eine Leseoperation kann eine individuelle Speichervorrichtung 940 einen Abschnitt des Gesamtdatenworts abrufen. Die restlichen Bits des Worts werden parallel von anderen Speichervorrichtungen bereitgestellt oder empfangen.
  • In einem Beispiel sind die Speichervorrichtungen 940 direkt auf einer Hauptplatine oder Host-Systemplattform (z. B. einer PCB (gedruckten Leiterplatte), auf der der Prozessor 910 angeordnet ist) einer Rechenvorrichtung angeordnet. In einem Beispiel können die Speichervorrichtungen 940 in Speichermodulen 970 organisiert sein. In einem Beispiel stellen die Speichermodule 970 Dual Inline Memory Modules (DIMMs) dar. In einem Beispiel repräsentieren die Speichermodule 970 eine andere Organisation mehrerer Speichervorrichtungen, um mindestens einen Abschnitt einer Zugriffs- oder Steuerschaltungsanordnung gemeinsam zu nutzen, die eine separate Schaltung, eine separate Vorrichtung oder eine separate Platine von der Host-Systemplattform sein kann. Die Speichermodule 970 können mehrere Speichervorrichtungen 940 beinhalten, und die Speichermodule können eine Unterstützung für mehrere separate Kanäle zu den in ihnen angeordneten enthaltenen Speichervorrichtungen beinhalten. In einem anderen Beispiel können die Speichervorrichtungen 940 in das gleiche Gehäuse wie die Speichersteuerung 920 integriert sein, wie etwa durch Techniken wie ein Mehrchipmodul (MCM), eine Gehäuse-auf-Gehäuse-Technik, eine Silicium-Durchkontaktierungstechnik (Through-Silicon-Via, TSV) oder andere Techniken oder Kombinationen davon. Auf ähnliche Weise können bei einem Beispiel mehrere Speichervorrichtungen 940 in Speichermodule 970 integriert sein, die ihrerseits in das gleiche Gehäuse wie die Speichersteuerung 920 integriert sein können. Es versteht sich, dass die Speichersteuerung 920 für diese und andere Implementierungen ein Abschnitt des Host-Prozessors 910 sein kann.
  • Die Speichervorrichtungen 940 weisen jeweils ein oder mehrere Speicheranordnungen 960 auf. Die Speicheranordnung 960 repräsentiert adressierbare Kurz- oder Dauerspeicherorte für Daten. Typischerweise wird die Speicheranordnung 960 als Datenzeilen verwaltet, auf die über eine Wortleitungs- (Zeilen-) und eine Bitleitungssteuereinheit (einzelne Bits innerhalb einer Zeile) zugegriffen wird. Die Speicheranordnung 960 kann als separate Kanäle, Ränge und Bänke des Speichers organisiert sein. Die Kanäle können sich auf unabhängige Steuerpfade zu Speicherorten innerhalb der Speichervorrichtungen 940 beziehen. Die Ränge können sich auf gemeinsame Orte über mehrere parallele Speichervorrichtungen (z. B. gleiche Zeilenadressen innerhalb verschiedener Vorrichtungen) hinweg beziehen. Die Bänke können sich auf Teilanordnungen von Speicherorten innerhalb einer Speichervorrichtung 940 beziehen. In einem Beispiel sind Speicherbänke in Teilbänke mit mindestens einem Abschnitt der gemeinsam genutzten Schaltungsanordnung (z. B. Treiber, Signalleitungen, Steuerlogik) für die Teilbänke unterteilt, was ein separates Adressieren und Zugreifen ermöglicht. Es versteht sich, dass sich Kanäle, Ränge, Bänke, Teilbänke, Bankgruppen oder andere Organisationen der Speicherorte und Kombinationen der Organisationen in ihrer Anwendung auf physische Ressourcen überlagern können. 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 ist die Organisation von Speicherressourcen auf eine einschließende und nicht ausschließende Weise zu verstehen.
  • In einem Beispiel beinhalten die Speichervorrichtungen 940 ein oder mehrere Register 944. Das Register 944 stellt eine oder mehrere Speicherungsvorrichtungen oder Speicherungsorte dar, die eine Konfiguration oder Einstellungen für den Betrieb der Speichervorrichtung bereitstellen. In einem Beispiel kann das Register 944 einen Speicherungsort für die Speichervorrichtung 940 bereitstellen, um Daten für den Zugriff durch die Speichersteuerung 920 als Teil einer Steuer- oder Verwaltungsoperation zu speichern. In einem Beispiel beinhaltet das Register 944 ein oder mehrere Modusregister. In einem Beispiel beinhaltet das Register 944 ein oder mehrere Mehrzweckregister. Die Konfiguration von Orten innerhalb des Registers 944 kann die Speichervorrichtung 940 konfigurieren, um in unterschiedlichen „Modi“ zu arbeiten, wobei Befehlsinformationen unterschiedliche Operationen innerhalb der Speichervorrichtung 940 basierend auf dem Modus auslösen können. Zusätzlich oder alternativ dazu können unterschiedliche Modi auch abhängig von dem Modus unterschiedliche Operationen von Adressinformations- oder anderen Signalleitungen auslösen. Die Einstellungen des Registers 944 können eine Konfiguration für E/A-Einstellungen (z. B. eine Zeitsteuerung, eine Terminierung oder eine ODT (Die-interne Terminierung) 946, eine Treiberkonfiguration oder andere E/A-Einstellungen) angeben.
  • In einem Beispiel beinhaltet die Speichervorrichtung 940 die ODT 946 als Teil der Schnittstellenhardware, die mit der E/A 942 assoziiert ist. Die ODT 946 kann so konfiguriert sein, wie es vorstehend erwähnt ist, und sie kann Einstellungen für die Impedanz bereitstellen, die für spezifizierte Signalleitungen auf die Schnittstelle anzuwenden ist. In einem Beispiel wird die ODT 946 auf DQ-Signalleitungen angewendet. In einem Beispiel wird die ODT 946 auf Befehlssignalleitungen angewendet. In einem Beispiel wird die ODT 946 auf Adresssignalleitungen angewendet. In einem Beispiel kann die ODT 946 auf eine beliebige Kombination der Vorhergehenden angewendet werden. Die ODT-Einstellungen können basierend darauf geändert werden, ob eine Speichervorrichtung ein ausgewähltes Ziel einer Zugriffsoperation oder eine Nicht-Zielvorrichtung ist. Die Einstellungen der ODT 946 können die Zeitsteuerung und Reflexionen der Signalisierung auf den terminierten Leitungen beeinflussen. Eine sorgfältige Steuerung über die ODT 946 kann einen Betrieb mit höherer Geschwindigkeit und mit einer verbesserten Anpassung der angelegten Impedanz und Last ermöglichen. Die ODT 946 kann auf spezielle Signalleitungen der E/A-Schnittstelle 942, 922 angewendet werden (zum Beispiel eine ODT für DQ-Leitungen oder eine ODT für CA-Leitungen) und wird nicht notwendigerweise auf alle Signalleitungen angewendet.
  • Die Speichervorrichtung 940 beinhaltet eine Steuerung 950, die eine Steuerlogik innerhalb der Speichervorrichtung zum Steuern von internen Operationen innerhalb der Speichervorrichtung darstellt. Zum Beispiel decodiert die Steuerung 950 Befehle, die von der Speichersteuerung 920 gesendet werden, und erzeugt interne Operationen, um die Befehle auszuführen oder zu erfüllen. Die Steuerung 950 kann als eine interne Steuerung bezeichnet werden und ist von der Speichersteuerung 920 des Hosts getrennt. Die Steuerung 950 kann basierend auf dem Register 944 bestimmen, welcher Modus ausgewählt wird, und die interne Ausführung von Operationen für den Zugriff auf die Speicherressourcen 960 oder andere Operationen basierend auf dem ausgewählten Modus konfigurieren. Die Steuerung 950 erzeugt Steuersignale zum Steuern des Leitens von Bits innerhalb der Speichervorrichtung 940, um eine passende Schnittstelle für den ausgewählten Modus bereitzustellen und einen Befehl an die passenden Speicherorte oder -adressen zu leiten. Die Steuerung 950 beinhaltet eine Befehlslogik 952, die eine Befehlscodierung decodieren kann, die auf Befehls- und Adresssignalleitungen empfangen wird. Somit kann die Befehlslogik 952 ein Befehlsdecodierer sein oder diesen beinhalten. Mit der Befehlslogik 952 kann die Speichervorrichtung Befehle identifizieren und interne Operationen zum Ausführen von angeforderten Befehlen erzeugen.
  • Unter erneuter Bezugnahme auf die Speichersteuerung 920 beinhaltet die Speichersteuerung 200 eine Befehls- bzw. CMD-Logik 924, die eine Logik oder Schaltungsanordnung zum Erzeugen von an die Speichervorrichtung 940 zu sendenden Befehlen repräsentiert. Die Erzeugung der Befehle kann sich auf den Befehl vor dem Planen oder die Vorbereitung von in einer Warteschlange eingereihten Befehlen beziehen, die bereit sind, gesendet zu werden. Im Allgemeinen beinhaltet die Signalisierung in Speicherteilsystemen Adressinformationen innerhalb des Befehls oder diesen begleitend, um einen oder mehrere Speicherorte anzugeben oder auszuwählen, an denen die Speichervorrichtungen den Befehl ausführen sollen. Als Reaktion auf das Planen von Transaktionen für die Speichervorrichtung 940 kann die Speichersteuerung 920 Befehle über die E/A 922 ausgeben, um zu bewirken, dass die Speichervorrichtung 940 die Befehle ausführt. In einem Beispiel empfängt und decodiert die Steuerung 950 der Speichervorrichtung 940 Befehls- und Adressinformationen, die über die E/A 942 von der Speichersteuerung 920 empfangen werden. Basierend auf den empfangenen Befehls- und Adressinformationen kann die Steuerung 950 die Zeitsteuerung von Operationen der Logik und der Schaltungsanordnung innerhalb der Speichervorrichtung 940 steuern, um die Befehle auszuführen. Die Steuerung 950 ist für die Einhaltung von Standards oder Spezifikationen innerhalb der Speichervorrichtung 940, wie etwa Zeitsteuerungs- und Signalisierungsanforderungen, verantwortlich. Die Speichersteuerung 920 kann durch eine Zugriffsplanung und -steuerung eine Einhaltung von Standards oder Spezifikationen implementieren.
  • Die Speichersteuerung 920 beinhaltet einen Scheduler 930, der eine Logik oder Schaltungsanordnung zum Erzeugen und Ordnen von an die Speichervorrichtung 940 zu sendenden Transaktionen darstellt. Aus einer Perspektive lässt sich sagen, dass die Hauptfunktion der Speichersteuerung 920 darin besteht, Speicherzugriffs- und andere Transaktionen an die Speichervorrichtung 940 zu planen. Ein derartiges Planen kann ein Erzeugen der Transaktionen selbst beinhalten, um die Anfragen von Daten durch den Prozessor 910 zu implementieren und die Integrität der Daten beizubehalten (wie z. B. mit Befehlen, die sich auf ein Auffrischen beziehen). Die Transaktionen können einen oder mehrere Befehle beinhalten und zum Übertragen von Befehlen oder Daten oder beiden über einen oder mehrere Zeitsteuerzyklen, wie etwa Taktzyklen oder Einheitsintervallen, führen. Die Transaktionen können zum Zugriff, wie etwa als Lese- oder Schreib- oder verwandte Befehle oder eine Kombination davon, dienen und andere Transaktionen können Speicherverwaltungsbefehle für eine Konfiguration, Einstellungen, eine Datenintegrität oder andere Befehle oder eine Kombination davon beinhalten.
  • Die Speichersteuerung 920 beinhaltet in der Regel eine Logik, wie etwa den Scheduler 930, um eine Auswahl und ein Ordnen von Transaktionen zu ermöglichen, um die Leistungsfähigkeit des Systems 900 zu verbessern. Die Speichersteuerung 920 kann somit wählen, welche der ausstehenden Transaktionen in welcher Reihenfolge an die Speichervorrichtung 940 gesendet werden sollen, was in der Regel mittels einer weitaus komplexeren Logik als eines einfachen First-In-First-Out-Algorithmus erreicht wird. Die Speichersteuerung 920 verwaltet die Übertragung der Transaktionen an die Speichervorrichtung 940 und verwaltet die mit der Transaktion verbundene Zeitsteuerung. In einem Beispiel weisen Transaktionen eine deterministische Zeitsteuerung auf, die durch die Speichersteuerung 920 verwaltet werden kann und beim Bestimmen, wie die Transaktionen mit dem Scheduler 930 zu planen sind, verwendet werden kann.
  • In einem Beispiel weist die Speichersteuerung 920 eine Auffrischungs- bzw. REF-Logik 926 auf. Die Auffrischungslogik 926 kann für Speicherressourcen verwendet werden, die flüchtig sind und aufgefrischt werden müssen, um einen deterministischen Zustand beizubehalten. In einem Beispiel gibt die Auffrischungslogik 926 einen Ort für die Auffrischung und einen durchzuführenden Auffrischungstyp an. Die Auffrischungslogik 926 kann eine Selbstauffrischung innerhalb der Speichervorrichtung 940 auslösen oder durch ein Senden von Auffrischungsbefehlen externe Auffrischungen ausführen, die als Autoauffrischungsbefehle bezeichnet werden können, oder eine Kombination davon ausführen. In einem Beispiel beinhaltet die Steuerung 950 innerhalb der Speichervorrichtung 940 eine Auffrischungslogik 954, um eine Auffrischung innerhalb der Speichervorrichtung 940 anzuwenden. In einem Beispiel erzeugt die Auffrischungslogik 954 interne Operationen, um eine Auffrischung gemäß einer externen Auffrischung durchzuführen, die von der Speichersteuerung 920 empfangen wird. Die Auffrischungslogik 954 kann bestimmen, ob eine Auffrischung an die Speichervorrichtung 940 gerichtet ist, und welche Speicherressourcen 960 in Reaktion auf den Befehl aufzufrischen sind.
  • 10 ist ein Blockdiagramm eines Computersystems, in dem gezieltes Senden korrigierter Daten von der ECC auf dem Speicher implementiert werden kann. Das System 1000 stellt eine Rechenvorrichtung gemäß einem beliebigen vorliegenden Beispiel dar und kann ein Laptop-Computer, ein Desktop-Computer, ein Tablet-Computer, ein Server, ein Spiel- oder Unterhaltungssteuersystem, eine eingebettete Rechenvorrichtung oder eine andere elektronische Vorrichtung sein. Das System 1000 stellt ein System gemäß einem Beispiel für das System 100 oder das System 200 dar.
  • In einem Beispiel enthält der Speicher 1030 eine ECC auf dem Chip 1090. ECC 1090 steht für ECC auf dem Chip für den Speicher 1030, um die Fehlerprüfung und die gezielte Bereitstellung korrigierter Daten für die Speichersteuerung 1022 gemäß den Beispielen in diesem Dokument zu ermöglichen. In einem Beispiel enthält die Speichersteuerung 1022 die Fehlersteuerung 1092, um die Logik innerhalb der Speichersteuerung 1022 darzustellen, damit bestimmt werden kann, ob ein nachfolgender Lesebefehl ausgegeben werden soll, um auf korrigierte Daten zuzugreifen. In einem Beispiel stellt der Speicher 1030 in der Regel unkorrigierte Daten für die Speichersteuerung 1022 bereit als Reaktion auf einen Lesebefehl, führt eine Fehlerkorrektur parallel zur Bereitstellung der unkorrigierten Daten durch und kann die korrigierten Daten als Antwort auf eine nachfolgende Anforderung durch die Speichersteuerung 1022 bereitstellen.
  • Das System 1000 beinhaltet einen Prozessor 1010, der einen beliebigen Typ von Mikroprozessor, zentraler Verarbeitungseinheit (CPU), Grafikverarbeitungseinheit (GPU), Verarbeitungskern oder andere Verarbeitungshardware oder eine Kombination davon beinhalten kann, um eine Verarbeitung oder eine Ausführung von Anweisungen für das System 1000 bereitzustellen. Der Prozessor 1010 kann eine Host-Prozessorvorrichtung sein. Der Prozessor 1010 steuert den Gesamtbetrieb des Systems 1000 und kann Folgendes sein oder beinhalten: einen oder mehrere programmierbare Universal- oder Spezialzweck-Mikroprozessoren, digitale Signalprozessoren (DSPs), programmierbare Steuerungen, anwendungsspezifische integrierte Schaltungen (ASICs), programmierbare Logikvorrichtungen (PLDs) oder eine Kombination derartiger Vorrichtungen.
  • Das System 1000 beinhaltet Boot/Config 1016, das eine Speicherung zum Speichern von Boot-Code (z. B. Basic Input/Output System (BIOS)), Konfigurationseinstellungen, Sicherheitshardware (z. B. Trusted Platform Module (TPM)) oder andere Hardware auf Systemebene darstellt, die außerhalb eines Host-BS arbeitet. Boot/Config 1016 kann eine nicht-flüchtige Speicherungsvorrichtung, wie etwa Nur-Lese-Speicher (ROM), Flash-Speicher oder andere Speichervorrichtungen, beinhalten.
  • In einem Beispiel beinhaltet das System 1000 eine Schnittstelle 1012, die mit dem Prozessor 1010 gekoppelt ist und eine Schnittstelle mit höherer Geschwindigkeit oder eine Schnittstelle mit hohem Durchsatz für Systemkomponenten darstellen kann, die Verbindungen mit höherer Bandbreite benötigen, wie etwa das Speicherteilsystem 1020 oder die Grafikschnittstellenkomponenten 1040. Die Schnittstelle 1012 stellt eine Schnittstellenschaltung dar, die eine eigenständige Komponente sein kann oder auf einem Prozessor-Die integriert sein kann. Die Schnittstelle 1012 kann als Schaltung in den Prozessor-Die integriert sein oder als eine Komponente in ein System-on-Chip integriert sein. Wo vorhanden, koppelt die Grafikschnittstelle 1040 an Grafikkomponenten an, um einem Benutzer des Systems 1000 eine visuelle Anzeige bereitzustellen. Die Grafikschnittstelle 1040 kann eine eigenständige Komponente oder in den Prozessor-Die oder das System-on-Chip integriert sein. In einem Beispiel kann die Grafikschnittstelle 1040 eine High-Definition(HD)-Anzeige oder eine Ultra-High-Definition(UHD)-Anzeige ansteuern, die einem Benutzer eine Ausgabe bereitstellt. In einem Beispiel kann die Anzeige eine Berührungsbildschirmanzeige beinhalten. In einem Beispiel erzeugt die Grafikschnittstelle 1040 eine Anzeige basierend auf in dem Speicher 1030 gespeicherten Daten oder basierend auf durch den Prozessor 1010 ausgeführten Operationen oder beidem.
  • Das Speicherteilsystem 1020 stellt den Hauptspeicher des Systems 1000 dar und stellt eine Speicherung für Code, der durch den Prozessor 1010 auszuführen ist, oder Datenwerte, die beim Ausführen einer Routine zu verwenden sind, bereit. Das Speicherteilsystem 1020 kann eine oder mehrere Varianten von Direktzugriffsspeicher (RAM), wie etwa DRAM, 3DXP (dreidimensionaler Crosspoint) oder andere Speichervorrichtungen oder eine Kombination solcher Vorrichtungen, beinhalten. Der Speicher 1030 speichert und hostet unter anderem das Betriebssystem (BS) 1032, um eine Softwareplattform zur Ausführung von Anweisungen in dem System 1000 bereitzustellen. Außerdem können Anwendungen 1034 auf der Softwareplattform des BS 1032 aus dem Speicher 1030 ausgeführt werden. Die Anwendungen 1034 repräsentieren Programme, die ihre eigene Betriebslogik haben, um die Ausführung einer oder mehrerer Funktionen durchzuführen. Die Prozesse 1036 repräsentieren Agenten oder Routinen, die dem BS 1032 oder einer oder mehreren Anwendungen 1034 oder einer Kombination Hilfsfunktionen bereitstellen. Das BS 1032, die Anwendungen 1034 und die Prozesse 1036 stellen Softwarelogik bereit, um dem System 1000 Funktionen bereitzustellen. In einem Beispiel beinhaltet das Speicherteilsystem 1020 eine Speichersteuerung 1022, die eine Speichersteuerung zum Erzeugen und Ausgeben von Befehlen an den Speicher 1030 ist. Es versteht sich, dass die Speichersteuerung 1022 ein physischer Teil des Prozessors 1010 oder ein physischer Teil der Schnittstelle 1012 sein könnte. Zum Beispiel kann die Speichersteuerung 1022 eine integrierte Speichersteuerung sein, die in eine Schaltung mit dem Prozessor 1010 integriert ist, wie etwa in den Prozessor-Die oder in ein System-on-Chip integriert.
  • Obwohl dies nicht speziell veranschaulicht ist, versteht es sich, dass das System 1000 einen oder mehrere Busse oder Bussysteme zwischen Vorrichtungen beinhalten kann, wie etwa einen Speicherbus, einen Grafikbus, Schnittstellenbusse oder andere. Busse oder Signalleitungen können kommunikativ oder elektrisch Komponenten zusammenkoppeln oder sowohl kommunikativ als auch elektrisch die Komponenten koppeln. Busse können physische Kommunikationsleitungen, Punkt-zu-Punkt-Verbindungen, Bridges, Adapter, Steuerungen oder andere Schaltungsanordnungen oder eine Kombination davon beinhalten. Die Busse können zum Beispiel einen oder mehrere aus einem Systembus, einem PCI-(Peripheral Component Interconnect)-Bus, einem HyperTransport- oder Industry-Standard-Architecture(ISA)-Bus, einem SCSI(Small Computer System Interface)-Bus, einem USB(Universal Serial Bus)-Bus, einem anderen Bus oder eine Kombination davon beinhalten.
  • In einem Beispiel beinhaltet das System 1000 eine Schnittstelle 1014, die mit der Schnittstelle 1012 gekoppelt sein kann. Die Schnittstelle 1014 kann eine Schnittstelle mit niedrigerer Geschwindigkeit als die Schnittstelle 1012 sein. In einem Beispiel stellt die Schnittstelle 1014 eine Schnittstellenschaltung dar, die eigenständige Komponenten und integrierte Schaltungsanordnungen beinhalten kann. In einem Beispiel koppeln mehrere Benutzerschnittstellenkomponenten oder Peripheriekomponenten oder beides mit der Schnittstelle 1014. Die Netzwerkschnittstelle 1050 stellt dem System 1000 die Fähigkeit bereit, mit entfernten Vorrichtungen (z. B. Servern oder anderen Rechenvorrichtungen) über ein oder mehrere Netzwerke zu kommunizieren. Die Netzwerkschnittstelle 1050 kann einen Ethernet-Adapter, drahtlose Verbindungskomponenten, zellulare Netzwerkverbindungskomponenten, USBs (Universal Serial Bus) oder andere drahtgebundene oder drahtlose standardbasierte oder urheberrechtlich geschützte Schnittstellen umfassen. Die Netzwerkschnittstelle 1050 kann Daten mit einer entfernten Vorrichtung austauschen, was Senden der im Speicher gespeicherten Daten oder Empfangen von im Speicher zu speichernden Daten enthalten kann.
  • In einem Beispiel beinhaltet das System 1000 eine oder mehrere Eingabe-/Ausgabe- bzw. E/A-Schnittstellen 1060. Die E/A-Schnittstelle 1060 kann eine oder mehrere Schnittstellenkomponenten beinhalten, durch die ein Benutzer mit dem System 1000 interagiert (zum Beispiel akustisch, alphanumerisch, taktil/berührend oder eine andere Schnittstellenbildung). Die Peripheriegeräteschnittstelle 1070 kann eine beliebige Hardwareschnittstelle beinhalten, die zuvor nicht speziell erwähnt wurde. Peripheriegeräte verweisen im Allgemeinen auf Vorrichtungen, die eine abhängige Verbindung zu dem System 1000 herstellen. Eine abhängige Verbindung ist eine Verbindung, bei der das System 1000 die Softwareplattform oder Hardwareplattform oder beides bereitstellt, auf der die Operation ausgeführt wird und mit der ein Benutzer interagiert.
  • In einem Beispiel beinhaltet das System 1000 ein Speicherungsteilsystem 1080 zum Speichern von Daten auf eine nichtflüchtige Weise. In einem Beispiel können sich in bestimmten Systemimplementierungen zumindest bestimmte Komponenten der Speicherung 1080 mit Komponenten des Arbeitsspeicherteilsystems 1020 überlappen. Das Speicherungsteilsystem 1080 beinhaltet eine oder mehrere Speichervorrichtungen 1084, die ein beliebiges herkömmliches Medium zum Speichern von großen Mengen von Daten auf eine nicht-flüchtige Weise sein oder dieses beinhalten können, wie etwa einen oder mehrere magnetische, Festkörper-, NAND-, 3DXP- oder optisch basierte Datenträger oder eine Kombination davon. Die Speicherung 1084 hält Code oder Anweisungen und Daten 1086 in einem persistenten Zustand (d. h. der Wert wird trotz Unterbrechung der Stromversorgung des Systems 1000 beibehalten). Die Speicherung 1084 kann allgemein als ein „Speicher“ betrachtet werden, obwohl der Speicher 1030 in der Regel der Ausführungs- oder Arbeitsspeicher ist, um dem Prozessor 1010 Anweisungen bereitzustellen. Während die Speicherung 1084 nicht-flüchtig ist, kann der Speicher 1030 einen flüchtigen Speicher beinhalten (d. h. der Wert oder Zustand der Daten ist unbestimmt, falls die Stromversorgung zu dem System 1000 unterbrochen wird). In einem Beispiel beinhaltet das Speicherungsteilsystem 1080 eine Steuerung 1082 zum Bilden einer Schnittstelle mit der Speicherung 1084. In einem Beispiel ist die Steuerung 1082 ein physischer Teil der Schnittstelle 1014 oder des Prozessors 1010 oder kann Schaltungen oder Logik sowohl im Prozessor 1010 als auch in der Schnittstelle 1014 beinhalten.
  • Die Leistungsquelle 1002 stellt Leistung für die Komponenten des Systems 1000 bereit. Insbesondere bildet die Leistungsquelle 1002 in der Regel eine Schnittstelle mit einer oder mehreren Leistungsversorgungen 1004 im System 1000, um Leistung für die Komponenten des Systems 1000 bereitzustellen. In einem Beispiel beinhaltet die Leistungsversorgung 1004 einen AC/DC(Wechselstrom/Gleichstrom)-Adapter zum Einstecken in eine Wandsteckdose. Eine solche AC-Leistung kann eine Leistungsquelle 1002 erneuerbarer Energie (z. B. Solarenergie) sein. In einem Beispiel beinhaltet die Leistungsquelle 1002 eine Gleichstromquelle, wie etwa einen externen AC/DC-Wandler. In einem Beispiel beinhaltet die Leistungsquelle 1002 oder die Leistungsversorgung 1004 Drahtlosladehardware zum Laden über die Nähe zu einem Ladefeld. In einem Beispiel kann die Leistungsquelle 1002 eine interne Batterie oder Brennstoffzellenquelle beinhalten.
  • 11 ist ein Blockdiagramm einer beispielhaften mobilen Vorrichtung, in der gezieltes Senden korrigierter Daten von einer ECC auf dem Speicher implementiert werden kann. Das System 1100 stellt eine mobile Rechenvorrichtung dar, wie etwa ein Rechen-Tablet, ein Mobiltelefon bzw. ein Smartphone, eine am Körper tragbare Rechenvorrichtung oder eine andere mobile Vorrichtung oder eine eingebettete Rechenvorrichtung. Es versteht sich, dass bestimmte der Komponenten allgemein gezeigt werden, aber nicht alle Komponenten einer derartigen Vorrichtung in dem System 1100 gezeigt werden. Das System 1100 stellt ein System gemäß einem Beispiel für das System 100 oder das System 200 dar.
  • In einem Beispiel enthält der Speicher 1162 eine ECC auf dem Chip 1190. ECC 1190 steht für ECC auf dem Chip für den Speicher 1162, um die Fehlerprüfung und die gezielte Bereitstellung korrigierter Daten für die Speichersteuerung 1164 gemäß den Beispielen in diesem Dokument zu ermöglichen. In einem Beispiel enthält die Speichersteuerung 1164 die Fehlersteuerung 1192, um die Logik innerhalb der Speichersteuerung 1164 darzustellen, damit bestimmt werden kann, ob ein nachfolgender Lesebefehl ausgegeben werden soll, um auf korrigierte Daten zuzugreifen. In einem Beispiel stellt der Speicher 1162 in der Regel unkorrigierte Daten für die Speichersteuerung 1164 bereit als Reaktion auf einen Lesebefehl, führt eine Fehlerkorrektur parallel zur Bereitstellung der unkorrigierten Daten durch und kann die korrigierten Daten als Antwort auf eine nachfolgende Anforderung durch die Speichersteuerung 1164 bereitstellen.
  • Das System 1100 beinhaltet einen Prozessor 1110, der die primären Verarbeitungsoperationen des Systems 1100 durchführt. Der Prozessor 1110 kann eine Host-Prozessorvorrichtung sein. Der Prozessor 1110 kann eine oder mehrere physische Vorrichtungen, wie etwa Mikroprozessoren, Anwendungsprozessoren, Mikrocontroller, programmierbare Logikvorrichtungen oder andere Verarbeitungselemente, beinhalten. Die durch den Prozessor 1110 durchgeführten Verarbeitungsoperationen beinhalten die Ausführung einer Betriebsplattform oder eines Betriebssystems, auf der bzw. dem Anwendungen und Vorrichtungsfunktionen ausgeführt werden. Die Verarbeitungsoperationen beinhalten Operationen in Bezug auf E/A (Eingabe/Ausgabe) mit einem menschlichen Benutzer oder mit anderen Vorrichtungen, Operationen in Bezug auf eine Energieverwaltung, Operationen in Bezug auf das Verbinden des Systems 1100 mit einer anderen Vorrichtung oder eine Kombination davon. Die Verarbeitungsoperationen können auch Operationen in Bezug auf eine Audio-E/A, eine Anzeige-E/A oder andere Schnittstellen oder eine Kombination davon beinhalten. Der Prozessor 1110 kann im Speicher gespeicherte Daten ausführen. Der Prozessor 1110 kann im Speicher gespeicherte Daten schreiben oder bearbeiten.
  • In einem Beispiel beinhaltet das System 1100 einen oder mehrere Sensoren 1112. Die Sensoren 1112 stellen eingebettete Sensoren oder Schnittstellen zu externen Sensoren oder eine Kombination davon dar. Die Sensoren 1112 ermöglichen es dem System 1100, eine oder mehrere Bedingungen einer Umgebung oder einer Vorrichtung, in der das System 1100 implementiert ist, zu überwachen oder zu erkennen. Die Sensoren 1112 können Umgebungssensoren (wie etwa Temperatursensoren, Bewegungsmelder, Lichtdetektoren, Kameras, chemische Sensoren (z. B. Kohlenmonoxid-, Kohlendioxid- oder andere chemische Sensoren), Drucksensoren, Beschleunigungsmesser, Gyroskope, medizinische oder physiologische Sensoren (z. B. Biosensoren, Herzfrequenzüberwachungsgeräte oder andere Sensoren zum Erkennen physiologischer Attribute) oder andere Sensoren oder eine Kombination davon beinhalten. Die Sensoren 1112 können auch Sensoren für biometrische Systeme, wie etwa Fingerabdruckdetektionssysteme, Gesichtserfassungs- oder -detektionssysteme oder andere Systeme, die Benutzermerkmale erfassen oder erkennen, beinhalten. Die Sensoren 1112 sind im weitesten Sinne zu verstehen und nicht auf die vielen verschiedenen Typen von Sensoren zu beschränken, die mit dem System 1100 implementiert werden könnten. In einem Beispiel sind ein oder mehrere Sensoren 1112 über eine in den Prozessor 1110 integrierte Frontend-Schaltung mit dem Prozessor 1110 gekoppelt. In einem Beispiel sind ein oder mehrere Sensoren 1112 über eine andere Komponente des Systems 1100 mit dem Prozessor 1110 gekoppelt.
  • In einem Beispiel beinhaltet das System 1100 ein Audioteilsystem 1120, das Hardware (z. B. eine Audiohardware und Audioschaltungen) und Softwarekomponenten (z. B. Treiber, Codecs) darstellt, die mit einem Bereitstellen von Audiofunktionen für die Datenverarbeitungsvorrichtung assoziiert sind. Die Audiofunktionen können eine Lautsprecher- oder Kopfhörerausgabe sowie eine Mikrofoneingabe beinhalten. Die Vorrichtungen für derartige Funktionen können in das System 1100 integriert oder mit dem System 1100 verbunden sein. In einem Beispiel interagiert ein Benutzer mit dem System 1100, indem er Audiobefehle bereitstellt, die durch den Prozessor 1110 empfangen und verarbeitet werden.
  • Das Anzeigeteilsystem 1130 stellt Hardware- (z. B. Anzeigevorrichtungen) und Softwarekomponenten (z. B. Treiber) dar, die eine visuelle Anzeige zur Darstellung für einen Benutzer bereitstellen. In einem Beispiel beinhaltet die Anzeige taktile Komponenten oder Touchscreen-Elemente, damit ein Benutzer mit der Datenverarbeitungsvorrichtung interagieren kann. Das Anzeigeteilsystem 1130 beinhaltet eine Anzeigeschnittstelle 1132, die den jeweiligen Bildschirm oder die jeweilige Hardwarevorrichtung beinhaltet, der/die verwendet wird, um einem Benutzer eine Anzeige bereitzustellen. In einem Beispiel beinhaltet die Anzeigeschnittstelle 1132 eine Logik, die von dem Prozessor 1110 (wie etwa einem Grafikprozessor) getrennt ist, um mindestens eine teilweise Verarbeitung in Bezug auf die Anzeige durchzuführen. In einem Beispiel beinhaltet das Anzeigeteilsystem 1130 eine Touchscreen-Vorrichtung, die einem Benutzer sowohl eine Ausgabe als auch eine Eingabe bereitstellt. In einem Beispiel beinhaltet das Anzeigeteilsystem 1130 eine High-Definition- (HD-) oder Ultra-High-Definition- bzw. UHD-Anzeige, die einem Benutzer eine Ausgabe bereitstellt. In einem Beispiel beinhaltet das Anzeigeteilsystem eine Touchscreen-Anzeige oder steuert diese an. In einem Beispiel erzeugt das Anzeigeteilsystem 1130 Anzeigeinformationen basierend auf Daten, die im Speicher gespeichert sind, oder basierend auf Operationen, die durch den Prozessor 1110 ausgeführt werden, oder basierend auf beiden.
  • Die E/A-Steuerung 1140 stellt Hardwarevorrichtungen und Softwarekomponenten dar, die sich auf eine Interaktion mit einem Benutzer beziehen. Die E/A-Steuerung 1140 kann betrieben werden, um eine Hardware zu verwalten, die Teil des Audioteilsystems 1120 oder des Anzeigeteilsystems 1130 oder beider ist. Zusätzlich dazu veranschaulicht die E/A-Steuerung 1140 einen Verbindungspunkt für zusätzliche Vorrichtungen, die sich mit dem System 1100 verbinden, durch die ein Benutzer mit dem System interagieren könnte. Die Vorrichtungen, die an das System 1100 angeschlossen werden können, können zum Beispiel Mikrofonvorrichtungen, Lautsprecher- oder Stereosysteme, Videosysteme oder andere Anzeigevorrichtungen, Tastatur- oder Tastenfeldvorrichtungen, Tasten/Schalter oder andere E/A-Vorrichtungen für eine Verwendung mit spezifischen Anwendungen, wie etwa Kartenlesegeräten oder anderen Vorrichtungen, beinhalten.
  • Wie oben erwähnt, kann die E/A-Steuerung 1140 mit dem Audioteilsystem 1120 oder dem Anzeigeteilsystem 1130 oder beiden interagieren. Zum Beispiel kann eine Eingabe durch ein Mikrofon oder eine andere Audiovorrichtung eine Eingabe oder Befehle für eine oder mehrere Anwendungen oder Funktionen des Systems 1100 bereitstellen. Zusätzlich kann eine Audioausgabe anstelle oder zusätzlich zu einer Anzeigeausgabe bereitgestellt werden. In einem anderen Beispiel, wenn das Anzeigeteilsystem einen berührungsempfindlichen Bildschirm beinhaltet, fungiert die Anzeige auch als eine Eingabevorrichtung, die zumindest teilweise von der E/A-Steuerung 1140 verwaltet werden kann. Es können auch zusätzliche Tasten oder Schalter an dem System 1100 vorhanden sein, um E/A-Funktionen bereitzustellen, die durch die E/A-Steuerung 1140 verwaltet werden.
  • In einem Beispiel verwaltet die E/A-Steuerung 1140 Vorrichtungen, wie etwa Beschleunigungsmesser, Kameras, Lichtsensoren oder andere Umgebungssensoren, Gyroskope, ein globales Positionierungssystem (GPS) oder eine andere Hardware, die in dem System 1100 beinhaltet sein kann, oder die Sensoren 1112. Die Eingabe kann Teil einer direkten Benutzerinteraktion sein sowie dem System Umgebungseingaben zur Beeinflussung seiner Operationen (wie Rauschfiltern, Anpassen von Anzeigen zur Helligkeitsdetektion, Anwenden eines Blitzes für eine Kamera oder andere Merkmale) bereitstellen.
  • In einem Beispiel beinhaltet das System 1100 eine Leistungsverwaltung 1150, die die Verwendung von Batterieleistung, das Laden der Batterie und Funktionen bezüglich einer Energiesparoperation verwaltet. Die Leistungsverwaltung 1150 verwaltet die Leistung von der Leistungsquelle 1152, welche die Komponenten des Systems 1100 mit Leistung versorgt. In einem Beispiel beinhaltet die Leistungsquelle 1152 einen AC/DC(Wechselstrom/Gleichstrom)-Adapter zum Einstecken in eine Wandsteckdose. Ein derartiger Wechselstrom kann erneuerbare Energie (z. B. Solarenergie, bewegungsbasierte Energie) sein. In einem Beispiel beinhaltet die Leistungsquelle 1152 nur Gleichstrom, der durch eine Gleichstromquelle, wie etwa einen externen AC/DC-Wandler, bereitgestellt werden kann. In einem Beispiel beinhaltet die Leistungsquelle 1152 Drahtlosladehardware zum Laden durch eine Nähe zu einem Ladefeld. In einem Beispiel kann die Leistungsquelle 1152 eine interne Batterie oder Brennstoffzellenquelle beinhalten.
  • Das Speicherteilsystem 1160 beinhaltet eine oder mehrere Speichervorrichtungen 1162 zum Speichern von Informationen in dem System 1100. Das Speicherteilsystem 1160 kann nicht-flüchtige (Zustand ändert sich nicht, wenn die Stromversorgung der Speichervorrichtung unterbrochen wird) oder flüchtige (Zustand ist unbestimmt, wenn die Stromversorgung der Speichervorrichtung unterbrochen wird) Speichervorrichtungen oder eine Kombination davon beinhalten. Der Speicher 1160 kann Anwendungsdaten, Benutzerdaten, Musik, Fotos, Dokumente oder andere Daten sowie Systemdaten (ob langfristig oder vorübergehend) in Bezug auf die Ausführung der Anwendungen und Funktionen des Systems 1100 speichern. In einem Beispiel beinhaltet das Speicherteilsystem 1160 eine Speichersteuerung 1164 (die auch als Teil der Steuerung des Systems 1100 angesehen werden kann und potenziell als Teil des Prozessors 1110 angesehen werden kann). Die Speichersteuerung 1164 beinhaltet einen Scheduler zum Erzeugen und Ausgeben von Befehlen zum Steuern des Zugriffs auf die Speichervorrichtung 1162.
  • Die Konnektivität 1170 beinhaltet Hardwarevorrichtungen (z. B. drahtlose oder drahtgebundene Verbinder und eine Kommunikationshardware oder eine Kombination von drahtgebundener und drahtloser Hardware) und Softwarekomponenten (z. B. Treiber, Protokollstapel), um dem System 1100 zu ermöglichen, mit externen Vorrichtungen zu kommunizieren. Bei der externen Vorrichtung könnte es sich um separate Vorrichtungen, wie etwa andere Rechenvorrichtungen, drahtlose Zugangspunkte oder Basisstationen, sowie Peripherievorrichtungen, wie etwa Headsets, Drucker oder andere Vorrichtungen, handeln. In einem Beispiel tauscht das System 1100 Daten mit einer externen Vorrichtung zur Speicherung im Speicher oder zur Anzeige auf einer Anzeigevorrichtung aus. Die ausgetauschten Daten können im Speicher zu speichernde Daten oder bereits im Speicher gespeicherte Daten zum Lesen, Schreiben oder Bearbeiten von Daten beinhalten.
  • Die Konnektivität 1170 kann mehrere unterschiedliche Typen von Konnektivität beinhalten. Zur Verallgemeinerung ist das System 1100 mit einer zellularen Konnektivität 1172 und einer drahtlosen Konnektivität 1174 veranschaulicht. Die zellulare Konnektivität 1172 bezieht sich allgemein auf eine zellulare Netzwerkkonnektivität, die durch drahtlose Träger, wie etwa über GSM (Global System for Mobile Communications) oder Varianten oder Ableitungen davon bereitgestellt wird, CDMA (Code Division Multiple Access) oder Varianten oder Ableitungen davon, TDM (Time Division Multiplexing) oder Varianten oder Ableitungen davon, LTE (Long Term Evolution, auch als „4G“ bezeichnet), 5G oder andere zellulare Dienststandards bereitgestellt wird. Die drahtlose Konnektivität 1174 bezieht sich auf eine drahtlose Konnektivität, die nicht zellular ist, und sie kann private Netzwerke (wie etwa Bluetooth), lokale Netzwerke (wie etwa WiFi) oder Weitverkehrsnetzwerke (wie etwa WiMax) oder eine andere drahtlose Kommunikation oder eine Kombination davon beinhalten. Die drahtlose Kommunikation bezieht sich auf ein Übertragen von Daten durch die Verwendung von modulierter elektromagnetischer Strahlung durch ein nichtfestes Medium. Die drahtgebundene Kommunikation erfolgt durch ein festes Kommunikationsmedium.
  • Die Peripherieverbindungen 1180 beinhalten Hardwareschnittstellen und Verbinder sowie Softwarekomponenten (z. B. Treiber, Protokollstapel), um Peripherieverbindungen herzustellen. Es versteht sich, dass das System 1100 sowohl eine Peripherievorrichtung („zu“ 1182) zu anderen Rechenvorrichtungen sein könnte als auch mit ihm verbundene Peripherievorrichtungen („von“ 1184) aufweisen könnte. Das System 1100 weist üblicherweise einen „Docking“-Verbinder zum Verbinden mit anderen Rechenvorrichtungen zu Zwecken wie etwa dem Verwalten (z. B. Herunterladen, Hochladen, Ändern, Synchronisieren) eines Inhalts auf dem System 1100 auf. Zusätzlich kann ein Docking-Verbinder ermöglichen, dass das System 1100 mit bestimmten Peripherievorrichtungen verbunden wird, die dem System 1100 ermöglichen, die Inhaltsausgabe zum Beispiel an audiovisuelle oder andere Systeme zu steuern.
  • Zusätzlich zu einem herstellereigenen Dockingverbinder oder einer anderen herstellereigenen Verbindungshardware kann das System 1100 Peripherieverbindungen 1180 über gemeinsame oder standardbasierte Verbinder herstellen. Gängige Typen können einen Universal-Serial-Bus- (USB-)Verbinder (der beliebige einer Anzahl verschiedener Hardwareschnittstellen beinhalten kann), einen DisplayPort einschließlich eines MiniDisplayPort (MDP), eine High Definition Multimedia Interface (HDMI) oder einen anderen Typ beinhalten.
  • 12 ist ein Blockdiagramm eines beispielhaften Netzwerks mit mehreren Knoten, in dem gezieltes Senden korrigierter Daten von einer ECC auf dem Speicher implementiert werden kann. Das System 1200 stellt ein Netzwerk von Knoten dar, die eine adaptive ECC anwenden können. In einem Beispiel repräsentiert das System 1200 ein Rechenzentrum. In einem Beispiel repräsentiert das System 1200 eine Serverfarm. In einem Beispiel repräsentiert das System 1200 eine Datencloud oder eine Verarbeitungscloud.
  • Knoten 1230 von System 1200 repräsentieren ein System in Übereinstimmung mit einem Beispiel von System 100 oder System 200. Der Knoten 1230 beinhaltet einen Speicher 1240. Der Knoten 1230 beinhaltet eine Steuerung 1242, die eine Speichersteuerung zum Verwalten eines Zugriffs auf den Speicher 1240 darstellt. In einem Beispiel beinhaltet der Speicher 1240 die ECC 1246. ECC 1246 steht für ECC auf dem Chip für den Speicher 1240, um die Fehlerprüfung und die gezielte Bereitstellung korrigierter Daten für die Speichersteuerung 1242 gemäß den Beispielen in diesem Dokument zu ermöglichen. In einem Beispiel enthält die Speichersteuerung 1242 die Fehlersteuerung 1244, um die Logik innerhalb der Speichersteuerung 1242 darzustellen, damit bestimmt werden kann, ob ein nachfolgender Lesebefehl ausgegeben werden soll, um auf korrigierte Daten zuzugreifen. In einem Beispiel stellt der Speicher 1240 in der Regel unkorrigierte Daten für die Speichersteuerung 1242 bereit als Reaktion auf einen Lesebefehl, führt eine Fehlerkorrektur parallel zur Bereitstellung der unkorrigierten Daten durch und kann die korrigierten Daten als Antwort auf eine nachfolgende Anforderung durch die Speichersteuerung 1242 bereitstellen.
  • Ein oder mehrere Clients 1202 stellen über das Netzwerk 1204 Anfragen an das System 1200. Das Netzwerk 1204 repräsentiert ein oder mehrere lokale Netzwerke oder Weitverkehrsnetzwerke oder eine Kombination davon. Die Clients 1202 können menschliche oder Maschinen-Clients sein, die Anforderungen zur Ausführung von Operationen durch das System 1200 erzeugen. Das System 1200 führt Anwendungen oder Datenberechnungsaufgaben aus, die von den Clients 1202 angefordert werden.
  • In einem Beispiel beinhaltet das System 1200 ein oder mehrere Racks, die Struktur- und Zwischenverbindungsressourcen zum Unterbringen und Verbinden mehrerer Rechenknoten darstellen. In einem Beispiel beinhaltet das Rack 1210 mehrere Knoten 1230. In einem Beispiel hostet das Rack 1210 mehrere Bladekomponenten 1220. Hosting bezieht sich auf das Bereitstellen von Leistung, struktureller oder mechanischer Unterstützung und Zwischenverbindungen. Blades 1220 können sich auf Rechenressourcen auf Leiterplatten (PCBs) beziehen, wobei eine PCB die Hardwarekomponenten für einen oder mehrere Knoten 1230 beherbergt. In einem Beispiel beinhalten die Blades 1220 keine Einhausung oder kein Gehäuse oder einen anderen „Kasten“ außer dem durch das Rack 1210 bereitgestellten. In einem Beispiel beinhalten die Blades 1220 ein Gehäuse mit freigelegtem Verbinder zur Verbindung mit dem Rack 1210. In einem Beispiel beinhaltet das System 1200 kein Rack 1210 und jedes Blade 1220 beinhaltet eine Einhausung oder ein Gehäuse, die stapelbar sind oder anderweitig in großer Nähe zu anderen Blades liegen und eine Verbindung der Knoten 1230 gestatten.
  • Das System 1200 beinhaltet ein Fabric 1270, die einen oder mehrere Zwischenverbinder für die Knoten 1230 repräsentiert. In einem Beispiel beinhaltet das Fabric 1270 mehrere Switches 1272 oder Router oder andere Hardware, um Signale zwischen den Knoten 1230 zu leiten. Zusätzlich dazu kann das Fabric 1270 das System 1200 mit dem Netzwerk 1204 für den Zugriff durch die Clients 1202 koppeln. Zusätzlich zu Routing-Ausrüstung kann das Fabric 1270 als die Kabel oder Anschlüsse oder andere Hardwareausrüstung zum Koppeln der Knoten 1230 miteinander beinhaltend betrachtet werden. In einem Beispiel weist das Fabric 1270 ein oder mehrere assoziierte Protokolle auf, um das Routing von Signalen durch das System 1200 zu verwalten. In einem Beispiel hängt bzw. hängen das Protokoll oder die Protokolle zumindest teilweise von der in dem System 1200 verwendeten Hardwareausrüstung ab.
  • Wie veranschaulicht, beinhaltet das Rack 1210 N Blades 1220. In einem Beispiel beinhaltet das System 1200 zusätzlich zu dem Rack 1210 ein Rack 1250. Wie veranschaulicht, beinhaltet das Rack 1250 M Blades 1260. M ist nicht notwendigerweise gleich N; somit versteht es sich, dass vielfältige unterschiedliche Hardware-Ausrüstungskomponenten verwendet und über das Fabric 1270 zum System 1200 zusammengekoppelt werden könnten. Die Blades 1260 können gleich oder ähnlich den Blades 1220 sein. Die Knoten 1230 können eine beliebige Art von Knoten sein und sind nicht notwendigerweise alle die gleiche Art von Knoten. Das System 1200 ist weder darauf beschränkt, homogen zu sein, noch ist es darauf beschränkt, nicht homogen zu sein.
  • Der Einfachheit halber ist nur der Knoten in dem Blade 1220[0] ausführlich veranschaulicht. Andere Knoten im System 1200 können jedoch gleich oder ähnlich sein. Zumindest einige Knoten 1230 sind Rechenknoten mit einem Prozessor (Proz) 1232 und einem Speicher 1240. Ein Rechenknoten bezieht sich auf einen Knoten mit Verarbeitungsressourcen (z. B. einem oder mehreren Prozessoren), der ein Betriebssystem ausführt und eine oder mehrere Aufgaben empfangen und verarbeiten kann. In einem Beispiel sind zumindest einige Knoten 1230 Serverknoten mit einem Server als Verarbeitungsressourcen, die durch den Prozessor 1232 und den Speicher 1240 dargestellt sind. Ein Speicherungsserver bezieht sich auf einen Knoten mit mehr Speicherungsressourcen als ein Rechenknoten, und anstatt Prozessoren zur Ausführung von Aufgaben aufzuweisen, beinhaltet ein Speicherungsserver Verarbeitungsressourcen zum Verwalten des Zugriffs auf die Speicherungsknoten innerhalb des Speicherungsservers.
  • In einem Beispiel beinhaltet der Knoten 1230 eine Schnittstellensteuerung 1234, die Logik zum Steuern des Zugriffs durch den Knoten 1230 auf das Fabric 1270 darstellt. Die Logik kann Hardwareressourcen zur Zwischenverbindung mit der physischen Zwischenverbindungshardware beinhalten. Die Logik kann Software- oder Firmwarelogik zum Verwalten der Zwischenverbindung beinhalten. In einem Beispiel ist oder beinhaltet die Schnittstellensteuerung 1234 eine Host-Fabric-Schnittstelle, die eine Fabric-Schnittstelle gemäß einem beliebigen hier beschriebenen Beispiel sein kann.
  • Der Prozessor 1232 kann einen oder mehrere separate Prozessoren enthalten. Jeder separate Prozessor kann eine einzelne Verarbeitungseinheit, eine Mehrkern-Verarbeitungseinheit oder eine Kombination beinhalten. Die Verarbeitungseinheit kann ein primärer Prozessor wie eine CPU (Zentralverarbeitungseinheit), ein peripherer Prozessor wie eine GPU (Grafikverarbeitungseinheit) oder eine Kombination sein. Der Speicher 1240 kann Speichervorrichtungen und eine Speichersteuerung sein oder diese beinhalten.
  • Im Allgemeinen umfasst eine Speichervorrichtung in Bezug auf die hier aufgeführten Beschreibungen in einem Beispiel: ein Speicher-Array; eine Hardwareschnittstelle zur Kopplung mit einer Speichersteuerung; und Schaltungsanordnungen für Fehlerprüfung und Korrektur (ECC) zum Empfang von gelesenen Daten von einer Adresse des Speicher-Arrays als Reaktion auf einen Lesebefehl von der Speichersteuerung, zur Durchführung einer Fehlerprüfung der gelesenen Daten, zur Anzeige von Fehlern, die in den gelesenen Daten detektiert wurden, Rückgabe der gelesenen Daten ohne Anwendung der Fehlerkorrektur, Fehlerkorrektur der gelesenen Daten und interne Speicherung der korrigierten Lesedaten auf der Speichervorrichtung.
  • In einem Beispiel der Speichervorrichtung dient die ECC-Schaltungsanordnung dazu, die korrigierten Lesedaten in einem Puffer der Speichervorrichtung zu speichern. In jedem vorhergehenden Beispiel der Speichervorrichtung dient die ECC-Schaltungsanordnung dazu, die korrigierten gelesenen Daten in einem Register zu speichern, auf das die Speichersteuerung zugreifen kann. In jedem vorhergehenden Beispiel der Speichervorrichtung umfasst die Anzeige die Anzeige eines korrigierbaren, unkorrigierten Fehlers in den gelesenen Daten. In jedem vorhergehenden Beispiel der Speichervorrichtung umfasst die Anzeige eine Codierung von Metadaten zur Fehlerberichterstellung. In jedem vorhergehenden Beispiel der Speichervorrichtung empfängt die Hardwareschnittstelle einen nachfolgenden Lesebefehl für die korrigierten Lesedaten und gibt die korrigierten Lesedaten als Antwort auf den nachfolgenden Lesebefehl für die korrigierten Lesedaten zurück. In jedem vorhergehenden Beispiel der Speichervorrichtung umfasst der Lesebefehl für die korrigierten Lesedaten einen nachfolgenden Lesebefehl an die Adresse des Speicher-Arrays. In jedem vorhergehenden Beispiel der Speichervorrichtung enthält die Speichervorrichtung: ein Register zum Speichern einer Adresse des Lesebefehls, wobei als Antwort auf einen nachfolgenden Lesebefehl eine nachfolgende Adresse angegeben wird, und Bereitstellen der korrigierten Lesedaten, wenn die nachfolgende Adresse und die gespeicherte Adresse übereinstimmen. In jedem vorhergehenden Beispiel der Speichervorrichtung besteht die Speichervorrichtung aus einer SDRAM-Vorrichtung (synchroner dynamischer Direktzugriffsspeicher), die mit einem doppelten Datenratenstandard (DDR) kompatibel ist.
  • Im Allgemeinen umfasst eine Speichersteuerung in einem Beispiel eine Hardwareschnittstelle zur Kopplung mit einer Speichervorrichtung und eine Befehlslogik zum Erzeugen eines Lesebefehls an eine Adresse der Speichervorrichtung; wobei die Hardwareschnittstelle als Reaktion auf den Lesebefehl Daten von der Adresse empfängt, ohne Anwendung einer Fehlerkorrektur auf dem Chip durch Schaltungsanordnungen für Fehlerprüfung und Korrektur (ECC) der Speichervorrichtung und Anzeige eines korrigierbaren, unkorrigierten Fehlers in den Daten; und wobei die Befehlslogik als Reaktion auf die Anzeige des korrigierbaren, unkorrigierten Fehlers in den Daten darin besteht, einen nachfolgenden Lesebefehl zu erzeugen, um die Daten von der Adresse unter Anwendung der Fehlerkorrektur auf dem Chip durch die ECC-Schaltungsanordnung der Speichervorrichtung zu empfangen.
  • In einem Beispiel der Speichersteuerung umfasst die Anzeige eine Codierung von Metadaten zur Fehlerberichterstellung. In jedem vorhergehenden Beispiel der Speichersteuerung umfasst der nachfolgende Lesebefehl einen Lesebefehl an die Adresse. In jedem vorhergehenden Beispiel der Speichersteuerung umfasst der nachfolgende Lesebefehl einen Lesebefehl für ein Register, auf das die Speichersteuerung zugreifen kann. In jedem vorangehenden Beispiel der Speichersteuerung dient die Hardwareschnittstelle dazu, mehrere Speichervorrichtungen parallel zu koppeln, und die Speichersteuerung umfasst außerdem: Host-ECC-Schaltungsanordnungen zur Durchführung von Fehlerprüfungen bei Daten, die von den mehreren Speichervorrichtungen empfangen wurden; wobei die Host-ECC-Schaltungsanordnungen dazu dienen, eine Fehlerkorrektur für einen Einzelbitfehler (SBE) für Daten durchzuführen, die von den mehreren Speichervorrichtungen empfangen werden, und den nachfolgenden Lesebefehl zu erzeugen, um Daten von der Adresse zu empfangen, mit Anwendung von Fehlerkorrektur auf dem Chip durch die ECC-Schaltungsanordnung der Speichervorrichtung als Reaktion auf einen Multibitfehler (MBE) in den von den mehreren Speichervorrichtungen empfangenen Daten.
  • Im Allgemeinen umfasst ein System in Bezug auf die hier aufgeführten Beschreibungen in einem Beispiel: eine Speichervorrichtung mit: einem Speicher-Array; und einer Schaltungsanordnung zur Fehlerprüfung und Korrektur (ECC) zum Empfangen von gelesenen Daten von einer Adresse des Speicher-Arrays; Durchführen einer Fehlerprüfung der gelesenen Daten; Zurückgeben einer Anzeige von detektierten Fehlern in den gelesenen Daten, Zurückgeben der gelesenen Daten ohne Anwendung der Fehlerkorrektur, Anwenden einer Fehlerkorrektur auf die gelesenen Daten und internes Speichern von korrigierten Lesedaten auf der Speichervorrichtung; und einer Speichersteuerung, die Folgendes umfasst: Befehlslogik zum Erzeugen eines Lesebefehls an die Adresse der Speichervorrichtung, wobei die Speichervorrichtung als Reaktion auf den Lesebefehl die gelesenen Daten ohne Anwendung einer Fehlerkorrektur und der Anzeige von Fehlern zurückgibt, die in den gelesenen Daten detektiert werden.
  • In einem Beispiel des Systems dient die ECC-Schaltungsanordnung dazu, die korrigierten gelesenen Daten in einem Puffer der Speichervorrichtung oder in einem Register zu speichern, auf das die Speichersteuerung zugreifen kann. In jedem vorhergehenden Beispiel des Systems umfasst die Anzeige eine Anzeige eines korrigierbaren, unkorrigierten Fehlers in den gelesenen Daten, wobei die Anzeige eine Codierung von Metadaten zur Fehlermeldung umfasst. In jedem vorhergehenden Beispiel des Systems umfasst die Anzeige eine Anzeige eines korrigierbaren, unkorrigierten Fehlers in den gelesenen Daten, wobei die Speichersteuerung einen nachfolgenden Lesebefehl für die korrigierten gelesenen Daten sendet, wobei die Speichervorrichtung die korrigierten Lesedaten als Reaktion auf den nachfolgenden Lesebefehl für die korrigierten Lesedaten zurückgeben soll. In jedem vorhergehenden Beispiel des Systems umfasst die Speichervorrichtung außerdem: ein Register zum Speichern einer Adresse des Lesebefehls, als Reaktion auf einen nachfolgenden Lesebefehl mit einer nachfolgenden Adresse, und Bereitstellen der korrigierten Lesedaten, wenn die nachfolgende Adresse und die gespeicherte Adresse übereinstimmen. In einem der vorangehenden Systembeispiele umfasst das System außerdem eines oder mehrere aus Folgendem: eine mit der Speichersteuerung gekoppelte Host-Prozessorvorrichtung, eine mit einem Host-Prozessor kommunikativ gekoppelte Anzeige, eine mit einem Host-Prozessor kommunikativ gekoppelte Netzwerkschnittstelle; oder eine Batterie zur Stromversorgung des Systems.
  • In Bezug auf die hier aufgeführten Beschreibungen umfasst ein Verfahren in einem Beispiel: Empfangen von gelesenen Daten von einer Adresse eines Speicher-Arrays bei der Schaltungsanordnung zur Fehlerprüfung und Korrektur (ECC) einer Speichervorrichtung als Reaktion auf einen Lesebefehl von einer Speichersteuerung; Durchführen einer Fehlerprüfung auf den gelesenen Daten; Zurückgeben einer Anzeige von Fehlern, die in den gelesenen Daten detektiert wurden; Zurückgeben der gelesenen Daten ohne Anwendung einer Fehlerkorrektur; Anwenden einer Fehlerkorrektur auf die gelesenen Daten; internes Speichern korrigierter Lesedaten auf der Speichervorrichtung.
  • In einem Beispiel des Verfahrens umfasst das Speichern das Speichern der korrigierten Lesedaten in einem Puffer der Speichervorrichtung. In jedem vorhergehenden Beispiel des Verfahrens umfasst das Speichern Speichern der korrigierten Lesedaten in einem Register, auf das die Speichersteuerung zugreifen kann. In jedem vorhergehenden Beispiel des Verfahrens umfasst das Zurückgeben der Anzeige Zurückgeben einer Anzeige eines korrigierbaren, nicht korrigierten Fehlers in den gelesenen Daten. In jedem vorhergehenden Beispiel des Verfahrens umfasst das Zurückgeben der Anzeige Zurückgeben einer Codierung von Metadaten zur Fehlermeldung. In jedem vorhergehenden Beispiel des Verfahrens umfasst das Verfahren Empfangen eines nachfolgenden Lesebefehls für die korrigierten Lesedaten und Zurückgeben der korrigierten Lesedaten als Reaktion auf den nachfolgenden Lesebefehl für die korrigierten Lesedaten. In jedem vorhergehenden Beispiel des Verfahrens umfasst das Empfangen des nachfolgenden Lesebefehls für die korrigierten Lesedaten Empfangen eines nachfolgenden Lesebefehls an die Adresse des Speicher-Arrays. In jedem vorhergehenden Beispiel des Verfahrens umfasst das Verfahren: Speichern einer Adresse des Lesebefehls in einem Register, als Reaktion auf Empfangen eines nachfolgenden Lesebefehls mit einer nachfolgenden Adresse; und Bereitstellen der korrigierten Lesedaten, wenn die nachfolgende Adresse und die gespeicherte Adresse übereinstimmen. In jedem vorhergehenden Beispiel des Verfahrens umfasst die Speichervorrichtung eine SDRAM-Vorrichtung (synchroner dynamischer Direktzugriffsspeicher), die mit einem doppelten Datenratenstandard (DDR) kompatibel ist.
  • Bezug nehmend auf die Beschreibungen hierin umfasst, in einem Beispiel, ein computerlesbares Speichermedium im Allgemeinen Anweisungen, die darauf gespeichert sind, die, wenn sie von einem Prozessor ausgeführt werden, den Prozessor veranlassen, ein Verfahren in Übereinstimmung mit einem Beispiel der beiden vorstehenden Absätze auszuführen.
  • In Bezug auf die hier aufgeführten Beschreibungen umfasst ein Verfahren in einem Beispiel: Erzeugen eines Lesebefehls an eine Adresse einer Speichervorrichtung von einer Speichersteuerung; als Reaktion auf den Lesebefehl, Empfangen von Daten von der Adresse ohne Anwendung einer Fehlerkorrektur auf dem Chip durch Schaltungsanordnungen zur Fehlerprüfung und Korrektur (ECC) der Speichervorrichtung und Empfangen einer Anzeige eines korrigierbaren, unkorrigierten Fehler in den Daten; und als Reaktion auf die Anzeige des korrigierbaren, unkorrigierten Fehlers in den Daten, Erzeugen eines nachfolgenden Lesebefehls, um die Daten von der Adresse zu empfangen, mit Anwendung der Fehlerkorrektur auf dem Chip durch die ECC-Schaltungsanordnung der Speichervorrichtung.
  • In einem Beispiel des Verfahrens umfasst Empfangen der Anzeige Empfangen einer Codierung von Metadaten zur Fehlerberichterstellung. In jedem vorhergehenden Beispiel des Verfahrens umfasst Erzeugen des nachfolgenden Lesebefehls Senden eines Lesebefehls an die Adresse. In jedem vorhergehenden Beispiel des Verfahrens umfasst Erzeugen des nachfolgenden Lesebefehls Senden eines Lesebefehls an ein Register, auf das der Speichersteuerung zugreifen kann. In jedem der vorstehenden Beispiele des Verfahrens ist die Speichervorrichtung eine von mehreren Speichervorrichtungen, die parallel zur Speichersteuerung gekoppelt sind, und das Verfahren umfasst ferner Folgendes: Durchführen einer Fehlerprüfung auf Daten, die von den mehreren Speichervorrichtungen empfangen werden, mit der Host-ECC-Schaltungsanordnung; wobei die Host-ECC-Schaltungsanordnung eine Fehlerkorrektur für einen Einzelbitfehler (SBE) für Daten durchführt, die von mehreren Speichervorrichtungen empfangen werden; und Erzeugen des nachfolgenden Lesebefehls, um Daten von der Adresse zu empfangen, mit Anwendung der Fehlerkorrektur auf dem Chip durch die ECC-Schaltungsanordnung der Speichervorrichtungen als Reaktion auf einen Multibitfehler (MBE) in den von den mehreren Speichervorrichtungen empfangenen Daten.
  • Bezug nehmend auf die Beschreibungen hierin umfasst, in einem Beispiel, ein computerlesbares Speichermedium im Allgemeinen Anweisungen, die darauf gespeichert sind, die, wenn sie von einem Prozessor ausgeführt werden, den Prozessor veranlassen, ein Verfahren in Übereinstimmung mit einem Beispiel der beiden vorstehenden Absätze auszuführen.
  • Flussdiagramme, wie hier veranschaulicht, stellen Beispiele für Abfolgen verschiedener Prozesshandlungen bereit. Die Flussdiagramme können Vorgänge, die durch eine Software- oder Firmware-Routine auszuführen sind, sowie physische Vorgänge angeben. Ein Flussdiagramm kann ein Beispiel für die Implementierung von Zuständen eines endlichen Automaten (FSM - Finite State Machine) veranschaulichen, der in Hardware und/oder als Software implementiert sein kann. Obgleich sie in einer bestimmten Abfolge oder Reihenfolge gezeigt sind, kann die Reihenfolge der Handlungen modifiziert werden, sofern nichts anderes angegeben ist. Dementsprechend sind die veranschaulichten Diagramme nur als Beispiele zu verstehen, und der Prozess kann in einer anderen Reihenfolge durchgeführt werden und manche Handlungen können parallel durchgeführt werden. Zusätzlich können eine oder mehrere Handlungen ausgelassen werden; dementsprechend werden nicht bei allen Implementierungen alle Handlungen durchgeführt.
  • Soweit hier verschiedene Operationen oder Funktionen beschrieben sind, können sie als Softwarecode, Anweisungen, eine Konfiguration und/oder Daten beschrieben oder definiert werden. Der Inhalt kann direkt ausführbar („Objekt“- oder „ausführbare“ Form), Quellcode oder Differenzcode („Delta“- oder „Patch“-Code) sein. Der Softwareinhalt dessen, was hier beschrieben ist, kann über einen Herstellungsgegenstand mit dem darauf gespeicherten Inhalt oder über ein Verfahren zum Betreiben einer Kommunikationsschnittstelle zum Senden von Daten über die Kommunikationsschnittstelle bereitgestellt werden. Ein maschinenlesbares Speicherungsmedium kann eine Maschine veranlassen, die beschriebenen Funktionen oder Operationen durchzuführen, und beinhaltet jeden Mechanismus, der Informationen in einer Form speichert, auf die durch eine Maschine (z. B. eine Rechenvorrichtung, ein elektronisches System usw.) zugegriffen werden kann, wie etwa beschreibbare/nicht beschreibbare Medien (z. B. Festwertspeicher (ROM), Direktzugriffsspeicher (RAM), magnetische Speicherungsmedien, optische Speicherungsmedien, Flash-Speichervorrichtungen usw.). Eine Kommunikationsschnittstelle beinhaltet jeden Mechanismus, der mit jedem aus einem drahtgebundenen, drahtlosen, optischen usw. Medium eine Schnittstelle bildet, um mit einer anderen Vorrichtung, wie etwa einer Speicherbusschnittstelle, einer Prozessorbusschnittstelle, einer Internetverbindung, einer Plattensteuerung usw., zu kommunizieren. Die Kommunikationsschnittstelle kann konfiguriert sein, indem sie Konfigurationsparameter bereitstellt und/oder Signale sendet, um die Kommunikationsschnittstelle vorzubereiten, ein den Softwareinhalt beschreibendes Datensignal bereitzustellen. Auf die Kommunikationsschnittstelle kann über einen oder mehrere Befehle oder ein oder mehrere Signale, die an die Kommunikationsschnittstelle gesendet werden, zugegriffen werden.
  • Verschiedene hier beschriebene Komponenten können ein Element zum Durchführen der beschriebenen Operationen oder Funktionen sein. Jede hier beschriebene Komponente beinhaltet Software, Hardware oder eine Kombination von diesen. Die Komponenten können als Softwaremodule, Hardwaremodule, spezielle Hardware (z. B. anwendungsspezifische Hardware, anwendungsspezifische integrierte Schaltungen (ASICs), digitale Signalprozessoren (DSPs) usw.), eingebettete Steuerungen, drahtgebundene Schaltungsanordnungen usw. implementiert sein.
  • Abgesehen von dem, was hier beschrieben ist, können verschiedene Modifikationen an dem, was hier offenbart ist, und an Implementierungen der Erfindung vorgenommen werden, ohne von ihrem Schutzumfang abzuweichen. Die vorliegenden Veranschaulichungen und Beispiele sollten deshalb im veranschaulichenden und nicht im einschränkenden Sinne aufgefasst werden. Der Schutzumfang der Erfindung bemisst sich nur durch Bezugnahme auf die folgenden Ansprüche.
  • ZITATE ENTHALTEN IN DER BESCHREIBUNG
  • Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
  • Zitierte Patentliteratur
    • US 17/225777 [0001]

Claims (25)

  1. Speichervorrichtung, die Folgendes umfasst: ein Speicher-Array; eine Hardwareschnittstelle zur Kopplung mit einer Speichersteuerung; und eine Schaltungsanordnung zur Fehlerprüfung und Korrektur (ECC) zum Empfangen von gelesenen Daten von einer Adresse des Speicher-Arrays als Reaktion auf einen Lesebefehl von der Speichersteuerung, Durchführen einer Fehlerprüfung der gelesenen Daten, Zurückgeben einer Anzeige von Fehlern, die in den gelesenen Daten detektiert wurden, Zurückgeben der gelesenen Daten ohne Anwendung der Fehlerkorrektur, Anwenden von Fehlerkorrektur auf die gelesenen Daten und internes Speichern der korrigierten Lesedaten auf der Speichervorrichtung.
  2. Speichervorrichtung nach Anspruch 1, wobei die ECC-Schaltungsanordnung dazu dient, die korrigierten Lesedaten in einem Puffer der Speichervorrichtung zu speichern.
  3. Speichervorrichtung nach einem der Ansprüche 1 bis 2, wobei die ECC-Schaltungsanordnung dazu dient, die korrigierten Lesedaten in einem Register zu speichern, auf das die Speichersteuerung zugreifen kann.
  4. Speichervorrichtung nach einem der Ansprüche 1 bis 3, wobei die Anzeige eine Anzeige eines korrigierbaren, unkorrigierten Fehler in den gelesenen Daten umfasst.
  5. Speichervorrichtung nach Anspruch 4, wobei die Anzeige eine Codierung von Metadaten zur Fehlermeldung umfasst.
  6. Speichervorrichtung nach Anspruch 4, ferner umfassend die Hardwareschnittstelle, um einen nachfolgenden Lesebefehl für die korrigierten Lesedaten zu empfangen und die korrigierten Lesedaten als Antwort auf den nachfolgenden Lesebefehl für die korrigierten Lesedaten zurückzugeben.
  7. Speichervorrichtung nach Anspruch 6, wobei der Lesebefehl für die korrigierten Lesedaten einen nachfolgenden Lesebefehl an die Adresse des Speicher-Arrays umfasst.
  8. Speichervorrichtung nach einem der Ansprüche 1 bis 7, die ferner Folgendes umfasst: ein Register zum Speichern einer Adresse des Lesebefehls, als Reaktion auf einen nachfolgenden Lesebefehl mit einer nachfolgenden Adresse, und Bereitstellen der korrigierten Lesedaten, wenn die nachfolgende Adresse und die gespeicherte Adresse übereinstimmen.
  9. Speichervorrichtung nach einem der Ansprüche 1 bis 8, wobei die Speichervorrichtung eine SDRAM-Vorrichtung (synchroner dynamischer Direktzugriffsspeicher), der mit einem doppeltem Datenratenstandard (DDR) kompatibel ist, umfasst.
  10. Speichersteuerung, die Folgendes umfasst: eine Hardwareschnittstelle zur Kopplung mit einer Speichervorrichtung; und Befehlslogik zum Erzeugen eines Lesebefehls an eine Adresse der Speichervorrichtung; wobei die Hardwareschnittstelle dazu dient, als Reaktion auf den Lesebefehl Daten von der Adresse zu empfangen, ohne Anwendung einer Fehlerkorrektur auf dem Chip durch Schaltungsanordnungen zur Fehlerprüfung und Korrektur (ECC) der Speichervorrichtung und Anzeige eines korrigierbaren, unkorrigierten Fehlers in den Daten; und wobei die Befehlslogik dazu dient, als Reaktion auf die Anzeige des korrigierbaren, unkorrigierten Fehlers in den Daten, einen nachfolgenden Lesebefehl zu erzeugen, um die Daten von der Adresse zu empfangen, mit Anwendung der Fehlerkorrektur auf dem Chip durch die ECC-Schaltungsanordnung der Speichervorrichtung.
  11. Speichersteuerung nach Anspruch 10, wobei die Anzeige eine Codierung von Metadaten zur Fehlermeldung umfasst.
  12. Speichersteuerung nach Anspruch 10, wobei der nachfolgende Lesebefehl einen Lesebefehl an die Adresse umfasst.
  13. Speichersteuerung nach Anspruch 10, wobei der nachfolgende Lesebefehl einen Lesebefehl zu einem Register umfasst, auf das die Speichersteuerung zugreifen kann.
  14. Speichersteuerung nach einem der Ansprüche 10 bis 13, dadurch gekennzeichnet, dass die Hardwareschnittstelle dazu dient, mehrere Speichervorrichtungen parallel zu koppeln, und ferner umfassend: Host-ECC-Schaltungsanordnungen in der Speichersteuerung zum Durchführen einer Fehlerprüfung der von den mehreren Speichervorrichtungen empfangenen Daten; wobei die Host-ECC-Schaltungsanordnung dazu dient, eine Fehlerkorrektur für einen Einzelbitfehler (SBE) für Daten durchzuführen, die von den mehreren Speichervorrichtungen empfangen werden, und den nachfolgenden Lesebefehl zu erzeugen, um Daten von der Adresse zu empfangen, mit Anwendung der Fehlerkorrektur auf dem Chip durch die ECC-Schaltungsanordnung der Speichervorrichtung, als Reaktion auf einen Multibitfehler (MBE) in den von den mehreren Speichervorrichtungen empfangenen Daten.
  15. System, das Folgendes umfasst: eine Speichervorrichtung, umfassend: ein Speicher-Array; und eine Schaltungsanordnung zur Fehlerprüfung und Korrektur (ECC) zum Empfangen von Lesedaten von einer Adresse des Speicher-Arrays, Durchführen einer Fehlerprüfung auf den gelesenen Daten, Zurückgeben einer Anzeige von Fehlern in den gelesenen Daten, Zurückgeben der gelesenen Daten ohne Anwendung einer Fehlerkorrektur, Anwenden einer Fehlerkorrektur auf die gelesenen Daten und internes Speichern der korrigierten Lesedaten auf der Speichervorrichtung; und eine Speichersteuerung, umfassend: Befehlslogik zum Erzeugen eines Lesebefehls an die Adresse der Speichervorrichtung; wobei die Speichervorrichtung dazu dient, als Reaktion auf den Lesebefehl die gelesenen Daten ohne Anwendung der Fehlerkorrektur und Anzeige von in den gelesenen Daten detektierten Fehlern zurückzugeben.
  16. System nach Anspruch 15, wobei die ECC-Schaltungsanordnung dazu dient, die korrigierten Lesedaten in einem Puffer der Speichervorrichtung oder in einem Register, auf das die Speichersteuerung zugreifen kann, zu speichern.
  17. System nach einem der Ansprüche 15 bis 16, wobei die Anzeige eine Anzeige eines korrigierbaren, unkorrigierten Fehlers in den gelesenen Daten umfasst, wobei die Anzeige eine Codierung von Metadaten zur Fehlermeldung umfasst.
  18. System nach einem der Ansprüche 15 bis 16, wobei die Anzeige eine Anzeige eines korrigierbaren, unkorrigierten Fehlers in den gelesenen Daten umfasst, wobei die Speichersteuerung dazu dient, einen nachfolgenden Lesebefehl für die korrigierten gelesenen Daten zu senden, wobei die Speichervorrichtung die korrigierten Lesedaten als Reaktion auf den nachfolgenden Lesebefehl für die korrigierten Lesedaten zurückgeben soll.
  19. System nach einem der Ansprüche 15 bis 18, wobei die Speichervorrichtung ferner Folgendes umfasst: ein Register zum Speichern einer Adresse des Lesebefehls, als Reaktion auf einen nachfolgenden Lesebefehl mit einer nachfolgenden Adresse, und Bereitstellen der korrigierten Lesedaten, wenn die nachfolgende Adresse und die gespeicherte Adresse übereinstimmen.
  20. System nach einem der Ansprüche 15 bis 19, wobei die Speichervorrichtung eine von mehreren Speichervorrichtungen umfasst, die parallel mit der Speichersteuerung verbunden sind, wobei die Speichersteuerung ferner Folgendes umfasst: Host-ECC-Schaltungsanordnungen zum Durchführen einer Fehlerprüfung der von mehreren Speichervorrichtungen empfangenen Daten; wobei die Host-ECC-Schaltungsanordnung dazu dient, eine Fehlerkorrektur für einen Einzelbitfehler (SBE) für Daten durchzuführen, die von den mehreren Speichervorrichtungen empfangen werden, und den nachfolgenden Lesebefehl zu erzeugen, um Daten von der Adresse zu empfangen, mit Anwendung der Fehlerkorrektur auf dem Chip durch die ECC-Schaltungsanordnung der Speichervorrichtung, als Reaktion auf einen Multibitfehler (MBE) in den von den mehreren Speichervorrichtungen empfangenen Daten.
  21. System nach einem der Ansprüche 15 bis 20, ferner umfassend eines oder mehrere aus Folgendem: eine mit der Speichersteuerung gekoppelte Host-Prozessorvorrichtung, eine Anzeige, die kommunikativ mit einem Hostprozessor gekoppelt ist; eine Netzwerkschnittstelle, die kommunikativ mit einem Hostprozessor gekoppelt ist; oder eine Batterie zur Stromversorgung des Systems.
  22. Verfahren zur Fehlerkorrektur, das Folgendes umfasst: Empfangen von Lesedaten von einer Adresse eines Speicher-Arrays an der Schaltungsanordnung zur Fehlerprüfung und Korrektur (ECC) einer Speichervorrichtung als Reaktion auf einen Lesebefehl von einer Speichersteuerung, Durchführen einer Fehlerprüfung auf den gelesenen Daten; Zurückgeben einer Anzeige von Fehlern, die in den gelesenen Daten detektiert wurden; Zurückgeben der gelesenen Daten ohne Anwendung einer Fehlerkorrektur; Anwenden einer Fehlerkorrektur auf die gelesenen Daten; und internes Speichern der korrigierten Lesedaten auf der Speichervorrichtung.
  23. Computerlesbares Speichermedium mit darauf gespeichertem Inhalt, der, wenn er von einer Datenverarbeitungsvorrichtung ausgeführt wird, die Datenverarbeitungsvorrichtung veranlasst, ein Verfahren nach Anspruch 22 auszuführen.
  24. Verfahren zur Fehlerkorrektur, das Folgendes umfasst: Erzeugen eines Lesebefehls an eine Adresse einer Speichervorrichtung von einer Speichersteuerung; als Reaktion auf den Lesebefehl, Empfangen von Daten von der Adresse ohne Anwendung einer Fehlerkorrektur auf dem Chip durch Schaltungsanordnungen zur Fehlerprüfung und Korrektur (ECC) der Speichervorrichtung und Empfangen einer Anzeige eines korrigierbaren, unkorrigierten Fehlers in den Daten; und als Reaktion auf die Anzeige des korrigierbaren, unkorrigierten Fehlers in den Daten, Erzeugen eines nachfolgenden Lesebefehls, um die Daten von der Adresse zu empfangen, mit Anwendung einer Fehlerkorrektur auf dem Chip durch die ECC-Schaltungsanordnung der Speichervorrichtung.
  25. Computerlesbares Speichermedium mit darauf gespeichertem Inhalt, der, wenn er von einer Datenverarbeitungsvorrichtung ausgeführt wird, die Datenverarbeitungsvorrichtung veranlasst, ein Verfahren nach Anspruch 24 auszuführen.
DE112022000580.7T 2021-04-08 2022-03-07 Reduzierung der Latenzauswirkungen von Fehlerprüfung und Korrektur auf dem Chip (ECC) Pending DE112022000580T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US17/225,777 2021-04-08
US17/225,777 US20210224155A1 (en) 2021-04-08 2021-04-08 Reduction of latency impact of on-die error checking and correction (ecc)
PCT/US2022/019202 WO2022216396A1 (en) 2021-04-08 2022-03-07 Reduction of latency impact of on-die error checking and correction (ecc)

Publications (1)

Publication Number Publication Date
DE112022000580T5 true DE112022000580T5 (de) 2023-11-30

Family

ID=76858139

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112022000580.7T Pending DE112022000580T5 (de) 2021-04-08 2022-03-07 Reduzierung der Latenzauswirkungen von Fehlerprüfung und Korrektur auf dem Chip (ECC)

Country Status (3)

Country Link
US (1) US20210224155A1 (de)
DE (1) DE112022000580T5 (de)
WO (1) WO2022216396A1 (de)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20220060156A (ko) * 2020-11-04 2022-05-11 삼성전자주식회사 반도체 메모리 장치 및 반도체 메모리 장치의 동작 방법
US20210224155A1 (en) * 2021-04-08 2021-07-22 Intel Corporation Reduction of latency impact of on-die error checking and correction (ecc)
US20220075688A1 (en) * 2021-11-14 2022-03-10 Intel Corporation Circuits And Methods For Correcting Errors In Memory
US20230195618A1 (en) * 2021-12-21 2023-06-22 Advanced Micro Devices, Inc. Approach for performing efficient memory operations using near-memory compute elements
US11934265B2 (en) 2022-02-04 2024-03-19 Apple Inc. Memory error tracking and logging
US11829242B2 (en) 2022-02-04 2023-11-28 Apple Inc. Data corruption tracking for memory reliability

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090307523A1 (en) * 2008-06-06 2009-12-10 Allison Brian D System Performance Through Invalidation of Speculative Memory Scrub Commands
US9268632B2 (en) * 2010-09-24 2016-02-23 Rambus Inc. Memory device with ECC history table
US9811420B2 (en) * 2015-03-27 2017-11-07 Intel Corporation Extracting selective information from on-die dynamic random access memory (DRAM) error correction code (ECC)
KR102412781B1 (ko) * 2015-11-03 2022-06-24 삼성전자주식회사 비휘발성 메모리 장치 및 비휘발성 메모리 장치의 독출 방법
US10885991B2 (en) * 2017-04-04 2021-01-05 Sandisk Technologies Llc Data rewrite during refresh window
US20210224155A1 (en) * 2021-04-08 2021-07-22 Intel Corporation Reduction of latency impact of on-die error checking and correction (ecc)

Also Published As

Publication number Publication date
WO2022216396A1 (en) 2022-10-13
US20210224155A1 (en) 2021-07-22

Similar Documents

Publication Publication Date Title
DE112022000580T5 (de) Reduzierung der Latenzauswirkungen von Fehlerprüfung und Korrektur auf dem Chip (ECC)
CN109074851B (zh) 利用额外系统位的内部错误校验和校正(ecc)
US10496473B2 (en) Extracting selective information from on-die dynamic random access memory (DRAM) error correction code (ECC)
US10572343B2 (en) Targeted aliasing single error correction (SEC) code
DE102020104367A1 (de) Refresh-befehlssteuerung für eine hostunterstützung einer rowhammer-mitigation
DE112016004243T5 (de) Hybrides Auffrischen mit verborgenen Auffrischungen und externen Auffrischungen
CN107210063A (zh) 对具有存储体分组架构的存储器设备内的存储体进行预充电和刷新
DE112017003334T5 (de) Lastreduzierte nichtflüchtige speicherschnittstelle
US11314589B2 (en) Read retry to selectively disable on-die ECC
DE112017006599T5 (de) Programmierbare datenstruktur zum wiederholten schreiben in einen speicher
KR102501147B1 (ko) 메모리에서 에러 체킹 및 정정 코드의 확장된 적용
DE102021122170A1 (de) Adaptive fehlerbereinigung und fehlerbehandlung für internen speicher
US11704194B2 (en) Memory wordline isolation for improvement in reliability, availability, and scalability (RAS)
US20210141692A1 (en) Distribution of error checking and correction (ecc) bits to allocate ecc bits for metadata
US11200113B2 (en) Auto-increment write count for nonvolatile memory
US20220121398A1 (en) Perfect row hammer tracking with multiple count increments
DE102023110723A1 (de) Randomisierung von gezielten auffrischungsverwaltungs(directed refresh management - drfm)-pseudo-zielzeilenauffrischungs(pseudo target row refresh - pttr)-befehlen
DE102020132763A1 (de) Undirektionaler informationskanal zur überwachung einer drift eines bidirektionalen informationskanals
DE112022000954T5 (de) Doppelabruf für Speicherdatenübertragung mit langer Burst-Länge
US20210382638A1 (en) Data scrambler to mitigate row hammer corruption
US20220012173A1 (en) Flexible configuration of memory module data width
DE102022106020A1 (de) Anwendungsbewusste speicher-patrol-scrubbing-techniken
DE112020007776T5 (de) Adaptive Fehlerkorrektur zur Verbesserung des Systemspeichers Zuverlässigkeit, Verfügbarkeit und Wartungsfreundlichkeit (RAS)
US20240118970A1 (en) Techniques for memory scrubbing associated with reliability availability and serviceability features
EP4155953A1 (de) Aktivierungslogik für flexible konfiguration von speichermoduldatenbreite