DE102022127896A1 - Adresserzeugung für ein sparing durch adaptive doppelvorrichtungsdatenkorrektur - Google Patents

Adresserzeugung für ein sparing durch adaptive doppelvorrichtungsdatenkorrektur Download PDF

Info

Publication number
DE102022127896A1
DE102022127896A1 DE102022127896.4A DE102022127896A DE102022127896A1 DE 102022127896 A1 DE102022127896 A1 DE 102022127896A1 DE 102022127896 A DE102022127896 A DE 102022127896A DE 102022127896 A1 DE102022127896 A1 DE 102022127896A1
Authority
DE
Germany
Prior art keywords
memory
address
sparing
processor
circuitry
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
DE102022127896.4A
Other languages
English (en)
Inventor
Jing Ling
Sreenivas Mandava
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 DE102022127896A1 publication Critical patent/DE102022127896A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/70Masking faults in memories by using spares or by reconfiguring
    • G11C29/76Masking faults in memories by using spares or by reconfiguring using address translation or modifications
    • G11C29/765Masking faults in memories by using spares or by reconfiguring using address translation or modifications in solid state disks
    • 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
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • 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/1012Adding 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 codes or arrangements adapted for a specific type of error
    • G06F11/1016Error in accessing a memory location, i.e. addressing error
    • 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/1044Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices with specific ECC/EDC distribution
    • 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/1064Adding 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 cache or content addressable memories
    • 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/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • G06F11/1088Reconstruction on already foreseen single or plurality of spare disks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0631Configuration or reconfiguration of storage systems by allocating resources to storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0658Controller construction arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/18Address generation devices; Devices for accessing memories, e.g. details of addressing circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/44Indication or identification of errors, e.g. for repair
    • G11C29/4401Indication or identification of errors, e.g. for repair for self repair
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/70Masking faults in memories by using spares or by reconfiguring
    • G11C29/88Masking faults in memories by using spares or by reconfiguring with partially good memories
    • G11C29/883Masking faults in memories by using spares or by reconfiguring with partially good memories using a single defective memory device with reduced capacity, e.g. half capacity
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/38Response verification devices
    • G11C29/42Response verification devices using error correcting codes [ECC] or parity check

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Human Computer Interaction (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • For Increasing The Reliability Of Semiconductor Memories (AREA)
  • Hardware Redundancy (AREA)

Abstract

Ein Sparing durch adaptive Doppelvorrichtungsdatenkorrektur verwendet Speicheradressen in steigender Reihenfolge. Die letzte Sparing-Adresse wird als Speicheradresse gespeichert. Jede Systemadresse für eine Prozessorspeichertransaktion wird in eine Speicheradresse umgewandelt. Die Speicheradresse wird mit der letzten Sparing-Adresse verglichen, um das Fehlercodekorrekturformat für die Prozessorspeichertransaktion zu bestimmen.

Description

  • GEBIET
  • Die vorliegende Offenbarung betrifft die Speicherverwaltung und insbesondere die Speicherfehlerverwaltung.
  • HINTERGRUND
  • Sparing-Techniken werden eingesetzt, um harte dynamische Direktzugriffsspeicher(DRAM)-Ausfälle oder harte Fehler zu überwinden. Ein harter Fehler bezieht sich auf einen Fehler bei einer physischen Vorrichtung, der verhindert, dass sie korrekt liest und/oder schreibt, und wird von transienten Fehlern unterschieden, die intermittierende Fehler sind. Techniken sind für Single Device Data Correction (SDDC), Double Device Data Correction (DDDC) und Adaptive Double Device Data Correction (ADDDC) bekannt, die eine Fehlerprüfung und -korrektur (ECC) bereitstellen, um vor einem Speicherausfall aufgrund harter Ausfälle im DRAM zu schützen.
  • Die SDDC überprüft und korrigiert Einzelbit- oder Mehrfachbitspeicherfehler, die eine gesamte einzelne DRAM-Einrichtung beeinflussen. Die DDDC stellt eine Fehlerprüfung und -korrektur bereit, um vor Speicherausfällen in zwei sequenziellen DRAM-Vorrichtungen zu schützen. Die ADDDC kann mit einer Rang- oder Bankgranularität implementiert werden. Ein Rang ist ein Satz von DRAM-Einrichtungen, die mit derselben Chipauswahl verbunden sind. Eine Bank ist ein Array von Speicherorten innerhalb einer DRAM-Vorrichtung.
  • Sparing-Operationen kopieren die Inhalte des Speichers an einen anderen Ort oder in ein anderes Format. Beispiele für Sparing-Operationen sind unter anderem ein Rang-Sparing, wobei Daten von einem schlechten Rang in einen Ersatzrang kopiert werden, und Vorrichtungs-Sparing, wobei Inhalte einer schlechten DRAM-Vorrichtung in eine andere DRAM-Vorrichtung kopiert werden.
  • Figurenliste
  • Merkmale von Ausführungsformen des beanspruchten Gegenstands werden mit Fortschreiten der folgenden ausführlichen Beschreibung und unter Bezugnahme auf die Zeichnungen ersichtlich, in denen gleiche Ziffern gleiche Teile darstellen. Diese sind:
    • 1 ist ein Blockdiagramm eines Speichersubsystems, das einen Speicher und eine Speichersteuereinheit beinhaltet;
    • 2 ist ein Blockdiagramm einer Ausführungsform eines Systems mit einem Speichersubsystem, das mindestens einen mit einer Speichersteuereinheit gekoppelten Speicher beinhaltet;
    • 3 veranschaulicht Cachezeilen, die in zwei Bereichen im Speicher gespeichert sind, die in einer Nicht-Lockstep-Konfiguration arbeiten;
    • 4 veranschaulicht Cachezeilen, die in einem fehlerhaften Speicherbereich gespeichert sind, und einen nicht fehlerhaften Speicherbereich im Speicher, die nach Abschluss des ADDDC-Sparings in einer Lockstep-Konfiguration arbeiten;
    • 5 veranschaulicht ein Beispiel für eine Sparing-Adresse für den ADDDC-Modus unter Verwendung von Systemadressen;
    • 6 ist ein Verfahren, das in der Speichersteuereinheit ausgeführt wird, um eine Ersatzkopie auszuführen; und
    • 7 ist ein Blockdiagramm einer Ausführungsform eines Computersystems, das die Speichersteuereinheit beinhaltet.
  • Wenngleich die folgende ausführliche Beschreibung unter Bezugnahme auf veranschaulichende Ausführungsformen des beanspruchten Gegenstands erfolgt, sind für Fachleute viele Alternativen, Modifikationen und Variationen davon ersichtlich. Dementsprechend ist der beanspruchte Gegenstand in einem weiten Sinne aufzufassen und soll gemäß der Darlegung in den beigefügten Ansprüchen definiert sein.
  • BESCHREIBUNG VON AUSFÜHRUNGSFORMEN
  • Ein Ersatzkopiervorgang kopiert Daten von einem Rang (einem Satz von DRAM-Vorrichtungen (DRAM: Dynamic Random Access Memory - dynamischer Direktzugriffsspeicher), die mit derselben Chipauswahl verbunden sind) in einen anderen Rang, wenn ein Ersatzrang verfügbar ist, oder kopiert Daten an denselben Ort in einem anderen Fehlerkorrekturcode(ECC)-Format, um eine Ersatzvorrichtung zu erhalten. Die Ersatzvorrichtung kann verwendet werden, um Daten von der fehlerhaften DRAM-Vorrichtung zu speichern. Daten können zwischen der Ersatz-DRAM-Vorrichtung und einer anderen nicht fehlerhaften DRAM-Vorrichtung aufgeteilt werden.
  • Um die Ersatzkopie unter Verwendung des Formats Adaptive Double Device Data Correction (ADDDC) durchzuführen, wird die erste Hälfte einer Cachezeile an den ursprünglichen Ort geschrieben (fehlerhafter Ort in der fehlerhaften DRAM-Vorrichtung) und die zweite Hälfte der Cachezeile wird an einen nicht fehlerhaften Ort geschrieben (einen nicht fehlerhaften Ort in der nicht fehlerhaften DRAM-Vorrichtung). Genauso wird die ursprüngliche Cachezeile am fehlerhaften Ort sowohl am fehlerhaften Ort als auch am nicht fehlerhaften Ort gespeichert. Somit müssen Daten sowohl von fehlerhaften als auch nicht fehlerhaften Orten gelesen und dann zurückgeschrieben werden, um den Verlust der Daten zu vermeiden. Der fehlerhafte Ort und der nicht fehlerhafte Ort weisen unterschiedliche Systemadressen auf, die typischerweise nicht aufeinanderfolgende Systemadressen sind.
  • Prozessorspeichertransaktionen werden durchgeführt, während die Ersatzkopie durchgeführt wird. Jede Speicheradresse für eine Prozessorspeichertransaktion wird mit der letzten Ersatzkopiespeicheradresse verglichen. Falls die Speicheradresse für die Prozessorspeichertransaktion kleiner oder gleich der letzten Ersatzkopiespeicheradresse ist, wird das neue Fehlerkorrekturcodeformat verwendet. Falls nicht, wird das alte Fehlerkorrekturcodeformat verwendet.
  • Für ein ADDDC-Sparing gibt es zwei Systemadressen, die für jede fehlerhafte Systemadresse oder jeden fehlerhaften Ort auf der fehlerhaften Speichereinrichtung kopiert werden müssen. Für ein rangbasiertes ADDDC-Sparing weisen die zwei Systemadressen eine gemeinsame Bank/Zeile/Spalte auf. Für ein bankbasiertes ADDDC-Sparing weisen die beiden Systemadressen eine gemeinsame Zeile/Spalte auf. Jede Speicheradresse für eine Prozessorspeichertransaktion wird unter Verwendung von Bank/Zeile/Spalte mit der letzten Ersatzkopiespeicheradresse verglichen, und es besteht ein Bedarf, die Reihenfolge in beiden Formaten gleich zu halten. Dies wird noch komplizierter, wenn Bank/Zeile/Spalte von verschiedenen
  • Systemadressbits in verschiedenen Decodierungsmodi stammen, wenn ein exklusives ODER (XOR) einer Adresse angewendet wird und/oder wenn das Decodieren unter Verwendung einer Modulo-Operation durchgeführt wird.
  • Außerdem wird die Systemadresse protokolliert, wenn ein ECC-Fehler beim Sparing-Lesen erkannt wird und in der Systemadresse spezifizierte Speicheradressbereiche (zum Beispiel Einebenen-Speicher, Zweiebenen-Speicher) unterschiedliche ECC-Formate unterstützen können.
  • Die ADDDC kann mit einer Rang- oder Bankgranularität implementiert werden. Anstatt Systemadressen zu verwenden, verwendet das ADDDC-Sparing Speicheradressen (Adresse Bank/Zeile/Spalte (für ADDDC, implementiert mit Ranggranularität) oder Zeile/Spalte (für ADDDC, implementiert mit Bankgranularität)) in steigender Reihenfolge. Die letzte Sparing-Adresse wird als Speicheradresse gespeichert. Jede Systemadresse für eine Prozessorspeichertransaktion wird in eine Prozessorspeicheradresse umgewandelt. Die Prozessorspeicheradresse wird mit der letzten Sparing-Adresse verglichen, um das ECC-Format für die Prozessorspeicheradresse unter Verwendung nur der Felder zu bestimmen, die zwischen fehlerhaften und nicht fehlerhaften Adressen üblich sind. Eine umgekehrte Adressübersetzung wird implementiert, um die Prozessorspeicheradresse zurück in eine Systemadresse zur Fehlerprotokollierung umzuwandeln und Attribute zu bestimmen, die in der Systemadresse verfügbar sind.
  • 1 ist ein Blockdiagramm eines Speichersubsystems 104, das einen Speicher 140 und eine Speichersteuereinheit 106 beinhaltet.
  • Der Speicher 140 ist ein flüchtiger Speicher. Ein flüchtiger Speicher ist ein Speicher, dessen Zustand (und daher die darin gespeicherten Daten) unbestimmt ist, wenn eine Energiezufuhr zur Vorrichtung unterbrochen wird. Ein dynamischer flüchtiger Arbeitsspeicher erfordert ein Auffrischen der in der Vorrichtung gespeicherten Daten, um einen Zustand beizubehalten. Ein Beispiel für dynamischen flüchtigen Speicher ist unter anderem ein DRAM (Dynamic Random Access Memory - dynamischer Direktzugriffsspeicher) oder eine Variante wie etwa ein synchroner DRAM (SDRAM). Ein wie hierin beschriebenes Speichersubsystem kann mit einer Reihe von Speichertechnologien kompatibel sein, darunter DDR3 (Double Data Rate Version 3, ursprüngliches Release durch JEDEC (Joint Electronic Device Engineering Council) am 27. Juni 2007, derzeitig bei Release 21), DDR4 (DDR Version 4, JESD79-4 Erstspezifikation veröffentlicht im September 2012 durch JEDEC), DDR4E (DDR Version 4 Extended, derzeitig von JEDEC geplant), LPDDR3 (Low Power DDR Version 3, JESD209-3B, Aug. 2013 durch JEDEC), LPDDR4 (LOW POWER DOUBLE DATA RATE (LPDDR) Version 4, JESD209-4, ursprünglich veröffentlicht durch JEDEC im August 2014), WIO2 (Wide I/O 2 (WideIO2), JESD229-2, ursprünglich veröffentlicht durch JEDEC im August 2014), HBM (HIGH BANDWIDTH MEMORY DRAM, JESD235, ursprünglich veröffentlicht durch JEDEC im Oktober 2013), DDR5 (DDR Version 5, derzeitig von JEDEC geplant), LPDDR5, ursprünglich veröffentlicht durch JEDEC im Januar 2020, HBM2 (HBM Version 2), ursprünglich veröffentlicht durch JEDEC im Januar 2020, oder andere oder Kombinationen von Speichertechnologien, und Technologien, die auf Ableitungen oder Erweiterungen derartiger Spezifikationen basieren. Die JEDEC-Standards sind unter www.jedec.org abrufbar.
  • Der Speicher 140 beinhaltet eine oder mehrere Vorrichtungen 146. Bei einer Ausführungsform ist die Speichervorrichtung 146 eine DRAM-Vorrichtung. Die Speicheradresse 122 kann eine Rangadresse, eine Bankadresse, eine Zeilenadresse und eine Spalte zum Identifizieren einer Zeile 142 und einer Spalte in einer Bank 144 in einer Vorrichtung 146 in einem Rang 148 im Speicher 140 beinhalten.
  • Die Adressdecodierungsschaltungsanordnung 112 in der Speichersteuereinheit 106 wandelt eine empfangene Systemadresse 120 in eine Speicheradresse 122 um. Die Speicheradresse 122 kann Bits zum Identifizieren eines DIMM und eines Rangs im Speicher 140 beinhalten. Die Systemadresse 120 kann verwendet werden, um auf alle Orte im Speicher 140 oder nur auf Orte für einen Kanal (Kanaladresse) im Speicher 140 zuzugreifen.
  • Sparing-Operationen werden durch die Sparing-Schaltungsanordnung 130 durchgeführt. Sparing-Operationen kopieren die Inhalte des Speichers an einen anderen Ort oder in ein anderes Format. Beispiele für Sparing-Operationen sind Rang-Sparing, wobei Daten von einem schlechten Rang in einen Ersatzrang kopiert werden, und Vorrichtungs-Sparing, wobei Inhalte einer schlechten DRAM-Vorrichtung in eine andere DRAM-Vorrichtung kopiert werden. Die Sparing-Schaltungsanordnung 130 erzeugt eine Speicheradresse 122. Die Umkehradressdecodierungsschaltungsanordnung 114 wandelt die Speicheradresse 122 in eine umgewandelte Systemadresse um, die für Fehlerprotokollierungs- und Sparing-Operationen verwendet wird.
  • Der Speicher 140 kann ein 3D gestapeltes (3DS) DIMM mit Unterrängen, die keine physische Chipauswahl aufweisen. Bei einer Ausführungsform wird der Unterrang mit der Bank gruppiert. Während der Rang-ADDDC weisen fehlerhafte und nicht fehlerhafte Adressen denselben Unterrangwert auf. Bei einer anderen Ausführungsform wird der Unterrang während der Rang-ADDDC mit dem Rang gruppiert.
  • 2 ist ein Blockdiagramm einer Ausführungsform eines Systems 200 mit einem Speichersubsystem, das mindestens ein mit einer Speichersteuereinheit 220 gekoppeltes Speichermodul 270 beinhaltet. Die Speichersteuereinheit 220 beinhaltet eine Adressdecodierungsschaltungsanordnung 112, eine Umkehradressdecodierungsschaltungsanordnung 114, eine Sparing-Schaltungsanordnung 130 und eine Planungseinheit 110, die in Verbindung mit 1 besprochen wurden. Das System 200 beinhaltet einen Prozessor 210 und Elemente eines Speichersubsystems in einer Rechenvorrichtung. Der Prozessor 210 stellt eine Verarbeitungseinheit einer Rechenplattform dar, die ein Betriebssystem (OS: Operating System) und Anwendungen ausführen kann, die zusammengenommen als Host oder Benutzer des Speichers bezeichnet werden können. Das OS und die Anwendungen führen Operationen aus, die zu Speicherzugriffen führen. Der Prozessor 210 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 (zentrale Verarbeitungseinheit), ein Peripherieprozessor wie etwa eine GPU (Graphics Processing Unit, Grafikverarbeitungseinheit) oder eine Kombination davon sein. Speicherzugriffe können auch durch Vorrichtungen wie etwa eine Netzwerksteuerung oder eine Speicherungssteuerung initiiert werden. Solche Vorrichtungen können in einigen Systemen (zum Beispiel in einem System-on-Chip (SoC)) im Prozessor integriert sein oder über einen Bus (zum Beispiel Peripheral Component Interconnect Express (PCIe)) oder eine Kombination an den Prozessor angeschlossen sein.
  • Bezugnahmen auf Speichervorrichtungen können für flüchtige Speichertechnologien oder nichtflüchtige Speichertechnologien gelten. Beschreibungen hierin, die sich auf einen „RAM“ oder eine „RAM-Vorrichtung“ beziehen, können für jegliche Speichervorrichtungen gelten, die einen Direktzugriff gestatten, seien sie flüchtig oder nichtflüchtig. Beschreibungen, die sich auf einen „DRAM“ oder eine „DRAM-Vorrichtung“ beziehen, können sich auf eine flüchtige Direktzugriffsspeichervorrichtung beziehen. Die Speichervorrichtung oder der DRAM kann sich auf den Die selbst, ein gekapseltes Speicherprodukt, das einen oder mehrere Dies beinhaltet, oder beides beziehen. Bei einer Ausführungsform kann ein System mit flüchtigem Speicher, der aufgefrischt werden muss, auch nichtflüchtigen Speicher beinhalten.
  • Die Speichersteuereinheit 220 stellt eine oder mehrere Speichersteuerschaltungen oder -vorrichtungen für das System 200 dar. Die Speichersteuereinheit 220 stellt eine Steuerlogik dar, die Speicherzugriffsbefehle als Reaktion auf die Ausführung von Operationen durch den Prozessor 210 erzeugt. Die Speichersteuereinheit 220 greift auf eine oder mehrere Speichervorrichtungen 240 zu. Die Speichervorrichtungen 240 können DRAM-Vorrichtungen gemäß einer beliebigen der oben genannten sein. Die Speichersteuereinheit 220 beinhaltet eine E/A-Schnittstellenlogik 222 zur Kopplung mit einem Speicherbus. Die E/A-Schnittstellenlogik 222 (sowie die E/A-Schnittstellenlogik 242 der Speichervorrichtung 240) kann Stifte, Kontaktfelder, Verbinder, Signalleitungen, Leiterbahnen oder Drähte oder andere Hardware zum Verbinden der Vorrichtungen oder eine Kombination davon beinhalten. Die E/A-Schnittstellenlogik 222 kann eine Hardwareschnittstelle beinhalten. Wie dargestellt beinhaltet die E/A-Schnittstellenlogik 222 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 222 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. Obgleich eine Kopplung der E/A-Schnittstellenlogik 222 der Speichersteuereinheit 220 mit der E/A-Schnittstellenlogik 242 der Speichervorrichtung 240 gezeigt ist, versteht es sich, dass bei einer Implementierung des Systems 200, bei der parallel auf Gruppen von Speichervorrichtungen 240 zugegriffen wird, mehrere Speichervorrichtungen E/A-Schnittstellen zu derselben Schnittstelle der Speichersteuereinheit 220 beinhalten können. Bei einer Implementierung des Systems 200, die ein oder mehrere Speichermodule 270 beinhaltet, kann die E/A-Schnittstellenlogik 242 zusätzlich zu der Schnittstellenhardware der Speichervorrichtung selbst Schnittstellenhardware des Speichermoduls beinhalten. Andere Speichersteuereinheiten 220 können separate Schnittstellen zu anderen Speichersteuereinheiten 240 beinhalten.
  • Der Bus zwischen der Speichersteuereinheit 220 und den Speichervorrichtungen 240 kann eine Double-Data-Rate(DDR)-Hochgeschwindigkeits-DRAM-Schnittstelle zum Transferieren von Daten sein, die als mehrere Signalleitungen, die die Speichersteuereinheit 220 mit den Speichervorrichtungen 240 koppeln, implementiert ist. Der Bus kann in der Regel zumindest Takt- (CLK-) 232, Befehls-/Adress- (CMD-) 234 und Daten- (Schreibdaten-(DQ-) und Lesedaten- (DQO-)) 236 sowie null oder mehr Steuersignalleitungen 238 beinhalten. Bei einer Ausführungsform kann ein Bus oder eine Verbindung zwischen der Speichersteuereinheit 220 und dem Speicher als Speicherbus bezeichnet werden. Die Signalleitungen für CMD können als „C/A-Bus“ (oder ADD/CMD-Bus) mit einer anderen Bezeichnung, die den Transfer von Befehls(C oder CMD)- und Adress(A oder ADD)-Informationen angibt), bezeichnet werden, und die Signalleitungen für Daten (Schreib-DQ und Lese-DQ) können als „Datenbus“ bezeichnet werden. Es versteht sich, dass ein Bus zusätzlich zu den explizit gezeigten Leitungen Strobe-Signalisierungsleitungen und/oder Warnleitungen und/oder Hilfsleitungen und/oder andere Signalleitungen und/oder eine Kombination beinhalten kann. Es versteht sich zudem, dass serielle Bustechnologien für eine Verbindung zwischen der Speichersteuersteuerung 220 und den Speichervorrichtungen 240 verwendet werden können. Ein Beispiel einer seriellen Bustechnologie ist die 8B 10B-Codierung und -übertragung von Hochgeschwindigkeitsdaten mit eingebettetem Takt über ein einziges Differenzpaar von Signalen in jeder Richtung.
  • Bei einer Ausführungsform kann/können die CLK-Leitung 232 und/oder die CMD-Leitung 234 und/oder die Datenleitung 236 und/oder die Steuerungsleitung 238 über eine Logik 280 an die Speichervorrichtungen 240 geleitet werden. Die Logik 280 kann eine Register- oder Pufferschaltung sein oder beinhalten. Die Logik 280 kann die Last an der Schnittstelle auf die E/A-Schnittstelle 222 reduzieren, wodurch eine schnellere Signalisierung oder reduzierte Fehler oder beides ermöglicht werden. Die Lastreduzierung kann daraus hervorgehen, dass die E/A-Schnittstelle 222 nur den Abschluss eines oder mehrerer Signale an der Logik 280 anstatt eines Abschlusses der Signalleitungen an jeder der Speichervorrichtungen 240 parallel sieht. Obgleich die E/A-Schnittstellenlogik 242 in der Veranschaulichung nicht spezifisch Treiber oder Sendeempfänger beinhaltet, versteht es sich, dass die E/A-Schnittstellenlogik 242 zum Koppeln mit den Signalleitungen erforderliche Hardware beinhaltet. Der Einfachheit der Darstellungen halber veranschaulicht die E/A-Schnittstellenlogik 242 darüber hinaus nicht alle der in Zusammenhang mit der E/A-Schnittstelle 222 gezeigten entsprechenden Signale. Bei einer Ausführungsform haben alle Signale der E/A-Schnittstelle 222 Gegenstücke an der E/A-Schnittstellenlogik 242. Einige oder alle der Signalleitungen, die mit der E/A-Schnittstellenlogik 242 verbunden sind, können von der Logik 280 bereitgestellt sein. Bei einer Ausführungsform sind gewisse Signale von der E/A-Schnittstelle 222 nicht direkt mit der E/A-Schnittstellenlogik 242 gekoppelt, sondern über die Logik 280 gekoppelt, während ein oder mehrere andere Signale von der E/A-Schnittstelle 222 über eine E/A-Schnittstelle 272 direkt mit der E/A-Schnittstellenlogik 242 gekoppelt sein können, ohne über die Logik 280 gepuffert zu werden. Signale 282 stellen die Signale dar, die über die Logik 280 mit den Speichervorrichtungen 240 verbunden sind.
  • Es versteht sich, dass bei dem Beispiel des Systems 200 der Bus zwischen der Speichersteuereinheit 220 und den Speichervorrichtungen 240 einen Nebenbefehlsbus CMD 234 und einen Nebendatenbus 236 beinhaltet. Bei einer Ausführungsform kann der Nebenbefehlsbus 236 bidirektionale Leitungen für Lesedaten und für Schreib-/Befehlsdaten beinhalten. Bei einer anderen Ausführungsform kann der Nebendatenbus 236 unidirektionale Schreibsignalleitungen für Schreibdaten vom Host zum Speicher beinhalten, und kann unidirektionale Signalleitungen für Lesedaten von den Speichervorrichtungen 240 zum Host beinhalten. Gemäß der gewählten Speichertechnologie und Systemausgestaltung können die Steuersignale 238 zu einem Bus oder einem Subbus gehören, wie etwa Strobe-Leitungen DQS. Basierend auf einer Auslegung des Systems 200 oder einer Implementierung, falls eine Auslegung mehrere Implementierungen unterstützt, kann der Datenbus mehr oder weniger Bandbreite pro Speichervorrichtung 240 aufweisen. So kann der Datenbus beispielsweise Speichervorrichtungen 240 mit einer x32-Schnittstelle, einer x16-Schnittstelle, einer x8-Schnittstelle oder einer anderen Schnittstelle unterstützen. Die Konvention „xW“, wobei W eine ganze Zahl ist, die sich auf eine Schnittstellengröße oder ein Breite der Schnittstelle der Speichervorrichtung 240 bezieht, repräsentiert eine Anzahl von Signalleitungen zum Austauschen von Daten mit der Speichersteuereinheit 220. Die Anzahl ist oftmals binär, wobei sie jedoch nicht darauf beschränkt ist. Die Schnittstellengröße der Speichervorrichtungen ist ein maßgeblicher Faktor hinsichtlich der Anzahl von Speichervorrichtungen, die gleichzeitig im System 200 verwendet werden können oder parallel mit denselben Signalleitungen gekoppelt sein können. Bei einer Ausführungsform können Speichervorrichtungen hoher Bandbreite, Vorrichtungen mit breiter Schnittstelle oder gestapelte Speicherkonfigurationen oder Kombinationen breitere Schnittstellen ermöglichen, wie etwa eine x128-Schnittstelle, eine x256-Schnittstelle, eine x512-Schnittstelle, eine x1024-Schnittstelle oder eine andere Datenbusschnittstellenbreite.
  • Die Speichervorrichtungen 240 repräsentieren Speicherressourcen für das System 200. Bei einer Ausführungsform ist jede Speichervorrichtung 240 ein separater Speicher-Die. Jede Speichervorrichtung 240 beinhaltet die E/A-Schnittstellenlogik 242, die eine durch die Implementierung der Vorrichtung bestimmte Bandbreite aufweist (z. B. x16 oder x8 oder eine andere Schnittstellenbandbreite). Die E/A-Schnittstellenlogik 242 ermöglicht es jeder Speichervorrichtung 240, eine Verknüpfung mit der Speichersteuereinheit 220 herzustellen. Die E/A-Schnittstellenlogik 242 kann eine Hardwareschnittstelle beinhalten und kann der E/A-Schnittstellenlogik 222 der Speichersteuereinheit 220 entsprechen, jedoch speichervorrichtungsseitig. Bei einer Ausführungsform sind mehrere Speichervorrichtungen 240 parallel mit denselben Befehls- und Datenbussen verbunden. Bei einer anderen Ausführungsform sind mehrere Speichervorrichtungen 240 parallel mit demselben Befehlsbus verbunden und mit verschiedenen Datenbussen verbunden. Das System 200 kann zum Beispiel mit mehreren parallel geschalteten Speichervorrichtungen 240 konfiguriert sein, wobei jede Speichervorrichtung auf einen Befehl reagiert und auf jeweilige interne Speicherressourcen 260 zugreift. Für eine Schreiboperation kann eine einzelne Speichervorrichtung 240 einen Teil des Gesamtdatenworts schreiben, und für eine Leseoperation kann eine einzelne Speichervorrichtung 240 einen Teil des Gesamtdatenworts abrufen. Als nichteinschränkende Beispiele kann eine spezifische Speichervorrichtung 8 Bit eines 128-Bit-Datenworts für eine Lese- oder Schreibtransaktion oder 8 Bit oder 16 Bit (abhängig davon, ob es sich um eine x8- oder eine x16-Vorrichtung handelt) eines 256-Bit-Datenworts bereitstellen bzw. empfangen. Die restlichen Bits des Worts werden durch andere Speichervorrichtungen in Parallelschaltung bereitgestellt oder empfangen.
  • Bei einer Ausführungsform können die Speichervorrichtungen 240 in Speichermodulen 270 organisiert sein. Bei einer Ausführungsform repräsentieren die Speichermodule 270 doppelreihige Speichermodule (DIMMs). Die Speichermodule 270 können mehrere Speichervorrichtungen 240 beinhalten und die Speichermodule können eine Unterstützung für mehrere separate Kanäle zu den in ihnen angeordneten enthaltenen Speichervorrichtungen beinhalten.
  • Die Speichervorrichtungen 240 umfassen jeweils Speicherressourcen 260. Die Speicherressourcen 260 repräsentieren einzelne Arrays von Speicherorten oder Speicherungsorten für Daten. In der Regel werden die Speicherressourcen 260 als Zeilen von Daten verwaltet, auf die über eine Wortleitungssteuerung (Zeilen) und eine Bitleitungssteuerung (einzelne Bit innerhalb einer Zeile) zugegriffen wird. Die Speicherressourcen 260 können als separate Speicherbänke organisiert sein. Bänke kann sich auf Arrays von Speicherorten innerhalb einer Speichervorrichtung 240 beziehen. Bei einer Ausführungsform sind Speicherbänke in Teilbänke aufgeteilt, wobei zumindest ein Teil einer gemeinsam genutzten Schaltungsanordnung (z. B. Treiber, Signalleitungen, Steuerlogik) für die Teilbänke vorgesehen sind.
  • Bei einer Ausführungsform beinhalten die Speichervorrichtungen 240 ein oder mehrere Register 244. Das Register 244 repräsentiert eine oder mehrere Speichervorrichtungen oder Speicherungsorte, die eine Konfiguration oder Einstellungen für den Betrieb der Speichervorrichtung bereitstellen. Bei einer Ausführungsform kann das Register 244 einen Speicherungsort für die Speichervorrichtung 240 bereitstellen, um Daten für einen Zugriff durch die Speichersteuereinheit 220 als Teil einer Steuer- und Verwaltungsoperation zu speichern. Bei einer Ausführungsform beinhaltet das Register 244 ein oder mehrere Modusregister 244. Bei einer Ausführungsform beinhaltet das Register 244 ein oder mehrere Mehrzweckregister 244. Durch die Konfiguration von Orten in dem Register 244 kann die Speichervorrichtung 240 dahingehend konfiguriert werden, in einem anderen „Modus“ zu arbeiten, in dem Befehlsinformationen basierend auf dem Modus verschiedene Operationen in der Speichervorrichtung 240 auslösen können. Zusätzlich oder alternativ dazu können verschiedene Modi auch verschiedene Operationen von Adressinformationen oder anderen Signalleitungen abhängig vom Modus auslösen. Einstellungen des Registers 244 können eine Konfiguration für E/A-Einstellungen angeben (z. B. Zeitsteuerung, Abschluss, Treiberkonfiguration oder andere E/A-Einstellungen).
  • Die Speichersteuereinheit 220 beinhaltet eine Planungseinheit 110, die eine Logik oder Schaltungsanordnung zum Erzeugen und Ordnen von an die Speichervorrichtung 240 zu sendenden Transaktionen repräsentiert. Gemäß einer Sichtweise besteht die primäre Funktion der Speichersteuereinheit 220 im Planen des Speicherzugriffs und anderer Transaktionen zur Speichervorrichtung 240. Ein derartiges Planen kann ein Erzeugen der Transaktionen selbst beinhalten, um die Anforderungen von Daten durch den Prozessor 210 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 Speichersteuereinheit 220 beinhaltet in der Regel eine Logik zum Gestatten einer Auswahl und Ordnung von Transaktionen, um das Leistungsverhalten des Systems 200 zu verbessern. Die Speichersteuereinheit 220 kann somit wählen, welche der ausstehenden Transaktionen in welcher Reihenfolge an die Speichervorrichtung 240 gesendet werden soll, was in der Regel mittels einer weitaus komplexeren Logik als eines einfachen First-In-First-Out-Algorithmus erreicht wird. Die Speichersteuereinheit 220 verwaltet die Übertragung der Transaktionen an die Speichervorrichtung 240 und verwaltet die mit der Transaktion verbundene Zeitsteuerung. Bei einer Ausführungsform weisen Transaktionen ein deterministisches Timing auf, das durch die Speichersteuereinheit 220 verwaltet und bei der Bestimmung, wie die Transaktionen zu planen sind, verwendet werden kann.
  • Unter erneuter Bezugnahme auf die Speichersteuerung 220 beinhaltet die Speichersteuereinheit 200 eine Befehls(CMD)-Logik 224, die eine Logik oder Schaltungsanordnung zum Erzeugen von an die Speichervorrichtung 240 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, die zum Senden bereit sind, beziehen. Allgemein beinhaltet die Signalisierung in Speichersubsystemen Adressinformationen innerhalb des Befehls oder diesen begleitend, um einen oder mehrere Speicherorte, an denen die Speichervorrichtungen den Befehl ausführen sollen, anzugeben oder auszuwählen. Als Reaktion auf ein Planen von Transaktionen für die Speichervorrichtung 240 kann die Speichersteuereinheit 220 Befehle über die E/A 222 ausgeben, um zu veranlassen, dass die Speichervorrichtung 240 die Befehle ausführt. Die Speichersteuereinheit 220 kann durch eine Zugriffsplanung und -steuerung eine Übereinstimmung mit Standards oder Spezifikationen implementieren.
  • Unter erneuter Bezugnahme auf die Logik 280 puffert die Logik 280 bei einer Ausführungsform ein gewisses Signal 282 vom Host zu den Speichervorrichtungen 240. Bei einer Ausführungsform puffert die Logik 280 Datensignalleitungen 236 als Daten 286 und puffert Befehlsleitungen (oder Befehls- und Adressleitungen) von CMD 234 als CMD 284. Bei einer Ausführungsform werden die Daten 286 gepuffert, wobei sie jedoch die gleiche Anzahl an Signalleitungen wie die Daten 236 beinhalten. Demnach weisen beide in der Veranschaulichung X Signalleitungen auf. Dagegen weist CMD 234 weniger Signalleitungen als CMD 284 auf. Somit gilt P>N. Die N Signalleitungen von CMD 234 werden mit einer Datenrate betrieben, die höher als die P Signalleitungen von CMD 284 ist. Beispielsweise kann P gleich 2N sein, und CMD 284 kann mit einer Datenrate betrieben werden, die die Hälfte der Datenrate von CMD 234 beträgt.
  • Bei einer Ausführungsform beinhaltet die Speichersteuereinheit 220 eine Auffrischlogik 226. Die Auffrischlogik 226 kann für Speicherressourcen 260 verwendet werden, die flüchtig sind und zum Erhalt eines deterministischen Zustands aufgefrischt werden müssen. Bei einer Ausführungsform gibt die Auffrischlogik 226 einen Ort für eine Auffrischung und eine Art der durchzuführenden Auffrischung an. Die Auffrischlogik 226 kann externe Auffrischungen durch Senden von Auffrischbefehlen ausführen. Beispielsweise unterstützt das System 200 bei einer Ausführungsform All-Bank-Auffrischungen sowie Per-Bank-Auffrischungen. All-Bank-Auffrischungen bewirken das Auffrischen einer ausgewählten Bank 292 in allen parallel geschalteten Speichervorrichtungen 240. Per-Bank-Auffrischungen bewirken das Auffrischen einer spezifischen Bank 292 in einer spezifischen Speichervorrichtung 240.
  • Das System 200 kann eine Speicherschaltung beinhalten, die die Logik 280 sein oder beinhalten kann. Wird die Schaltung derart betrachtet, dass sie die Logik 280 ist, so kann sie sich auf eine Schaltung oder Komponente (wie etwa ein oder mehrere diskrete Elemente oder ein oder mehrere Elemente eines Logikchipgehäuses) beziehen, die den Befehlsbus puffert. Wird die Schaltung als die Logik 280 beinhaltend betrachtet, so kann die Schaltung die Stifte eines Gehäuses der einen oder der mehreren Komponenten beinhalten und kann Signalleitungen beinhalten. Die Speicherschaltung beinhaltet eine Schnittstelle zu den N Signalleitungen von CMD 234, die mit einer ersten Datenrate zu betreiben sind. Die N Signalleitungen von CMD 234 weisen in Bezug auf die Logik 280 in Host-Richtung. Die Speicherschaltung kann auch eine Schnittstelle zu den P Signalleitungen von CMD 284 beinhalten, die mit einer zweiten Datenrate, die geringer als die erste Datenrate ist, zu betreiben sind. Die P Signalleitungen von CMD 284 weisen in Bezug auf die Logik 280 in Speicherrichtung. Die Logik 280 kann entweder als die Steuerlogik betrachtet werden, die die Befehlssignale empfängt und sie den Speichervorrichtungen bereitstellt, oder sie kann intern eine Steuerlogik beinhalten (z. B. in ihren Verarbeitungselementen oder ihrem Logikkern), die die Befehlssignale empfängt und sie den Speichervorrichtungen bereitstellt.
  • 3 veranschaulicht Cachezeilen, die in zwei Bereichen 302, 304 im Speicher 140 gespeichert sind, die in einer Nicht-Lockstep-Konfiguration arbeiten. Die Bereiche können Speicherränge 148 oder Speicherbänke 144 sein. Das Fehlerkorrekturcode(ECC)-Format, das in der Nicht-Lockstep-Konfiguration verwendet wird, ist Single-Data-Device-Correction (SDDC).
  • Jede im Speicher 140 gespeicherte Cachezeile beinhaltet eine obere Hälfte und eine untere Hälfte. Die Cachezeile 306 bei Adresse A im Bereich 302 weist die obere Hälfte 306a der Adresse A und die untere Hälfte 306b der Adresse A auf. Die Cachezeile 308 bei Adresse B im Bereich 304 weist die obere Hälfte 308a der Adresse B und die untere Hälfte 308b der Adresse B auf. Bei einer Ausführungsform weist eine Cachezeile 306, 308 64 Bytes auf, wobei die jeweilige obere Hälfte 306a, 308a und untere Hälfte 306b, 308b der Cachezeile 306, 308 jeweils 32 Bytes aufweisen.
  • Nachdem ein Fehler in einem Speicherbereich 302, 304 detektiert wurde, wird der fehlerhafte Speicherbereich mit einem nicht fehlerhaften Speicherbereich gepaart. Der fehlerhafte Speicherbereich und der nicht fehlerhafte Speicherbereich weisen die gleiche Größe auf. Das ECC-Format (Error Correction Code - Fehlerkorrektur-Code) wird von SDDC in ADDDC geändert, da Cachezeilen im fehlerhaften Speicherbereich oder im nicht fehlerhaften Speicherbereich sowohl in den fehlerhaften Speicherbereich als auch in den nicht fehlerhaften Speicherbereich im VLS-Modus (Virtual Lock Step - virtueller Gleichschritt) kopiert werden.
  • 4 veranschaulicht Cachezeilen, die in einem fehlerhaften Speicherbereich 402 und einem nicht fehlgeschlagenen Speicherbereich 404 in dem Speicher 140 gespeichert sind, die nach Abschluss des ADDDC-Sparings in einer Lockstep-Konfiguration arbeiten. Der fehlerhafte Speicherbereich 402 ist mit dem nicht fehlerhaften Speicherbereich 404 gepaart. Eine Cachezeile im fehlerhaften Speicherbereich 402 oder im nicht fehlerhaften Speicherbereich 404 wird durch die Sparing-Schaltungsanordnung 130 in der Speichersteuerung 106 sowohl in den fehlerhaften Speicherbereich 402 als auch in denn nicht fehlerhaften Speicherbereich 404 im virtuellen Lockstep-Format kopiert. Die untere Hälfte 306b der Adresse A und die untere Hälfte 308b der Adresse B werden als „primär“ bezeichnet und werden nicht kopiert. Die obere Hälfte 306a der Adresse A und die obere Hälfte 308a der Adresse B werden als „Buddy“ bezeichnet und werden kopiert. Das heißt, dass eine obere Hälfte 306a der Adresse A in den nicht fehlerhaften Speicherbereich 404 kopiert wird und die obere Hälfte 308a der Adresse B in den fehlerhaften Speicherbereich 402 kopiert wird.
  • Um die Datentransfers zwischen dem fehlerhaften Speicherbereich 402 und einem nicht fehlerhaften Speicherbereich 404 auszuführen, durchläuft die Sparing-Schaltungsanordnung 130 jede Speicheradresse im fehlerhaften Bereich 402. Die Daten von der fehlerhaften Adresse (der unteren Hälfte 306b der Adresse A und der oberen Hälfte 306b der Adresse A) im fehlerhaften Speicherbereich 402 und Daten von der zugehörigen Adresse (untere Hälfte 308b der Adresse B und obere Hälfte 308a der Adresse B) im nicht fehlerhaften Speicherbereich 404 werden gelesen und in der Speichersteuerung 106 gespeichert.
  • Die Sparing-Schaltungsanordnung 130 schreibt eine untere Hälfte 306b der Adresse A und eine obere Hälfte 308a der Adresse B in den fehlerhaften Bereich 402 und schreibt eine obere Hälfte 306a der Adresse A und eine untere Hälfte 308b der Adresse B in einen nicht fehlerhaften Bereich 404. Dieser Prozess kann als Ersatzkopie bezeichnet werden. Die Ersatzkopie kann periodisch pausiert werden, um zu ermöglichen, dass andere Speicherzugriffsanfragen (zum Beispiel CPU-Speicherzugriffsanfragen) im Speicher 140 ausgeführt werden.
  • 5 veranschaulicht ein Beispiel für eine Sparing-Adresse für den ADDDC-Modus unter Verwendung von Systemadressen. Im gezeigten Beispiel durchläuft die Sparing-Schaltungsanordnung 130 (auch als Sparing-Engine bezeichnet) die Systemadressen 0-15 (binär 0000-1111) 500. Das Sparing hat die Ersatzkopie für Adressen 502 (Systemadressen 0-4 und für Adressen 506 (Systemadressen 8-12) abgeschlossen. Die Adressen 502 und Adressen 504 verwenden ein ADDDC-Format für ECC. Die Adressen 504 und 508 verwenden ein SDDC-Format für ECC. Die letzte Ersatz-Systemadresse 510 des fehlerhaften Bereichs ist 4, und die letzte Ersatz-Systemadresse des nicht fehlerhaften Bereichs 512 ist 12. Für ein rangbasiertes ADDDC-Sparing weisen die zwei Systemadressen eine gemeinsame Bank/Zeile/Spalte auf. Für ein bankbasiertes ADDDC-Sparing weisen die zwei Systemadressen eine gemeinsame Zeile/Spalte auf. In dem in 5 gezeigten Beispiel entspricht für rangbasiertes Sparing das höchstwertige Bit der Systemadresse dem Rang (Rang 0 oder Rang 1) in der entsprechenden Speicheradresse und die anderen drei Bits entsprechen der Bank/Zeile/Spalte in der entsprechenden Speicheradresse.
  • Zu 1 zurückkehrend, wandelt die Adressdecodierung 112 in der Speichersteuerung 106 die Systemadressen 120 in Speicheradressen 122 um. Die Speicheradressen 122 befinden sich im Bank-/Zeilen-/Spaltenformat. ADDDC-Sparing ist dazu ausgelegt, die Speicheradressen in steigender Reihenfolge zu verwenden. Die Speicheradressen beinhalten eine Adresse Bank/Zeile/Spalte (für ADDDC, implementiert mit Ranggranularität) oder Zeile/Spalte (für ADDDC, implementiert mit Bankgranularität)). Die Sparing-Schaltungsanordnung 130 in der Speichersteuereinheit 106 arbeitet an den Speicheradressen 122 und inkrementiert die Speicheradressen 122, um die Sparing-Operation durchzuführen. Die letzte Sparing-Adresse wird als eine Speicheradresse (eine letzte Sparing-Speicheradresse) gespeichert. Jede Systemadresse 120 für eine Prozessorspeichertransaktion wird in der Adressdecodierung 112 in eine Prozessorspeicheradresse umgewandelt. Die Prozessorspeicheradresse wird mit der letzten Ersatzkopiespeicheradresse verglichen, um das ECC-Format (ADDDC oder SDDC) für die Prozessorspeicheradresse unter Verwendung nur der Bits zu bestimmen, die zwischen fehlerhaften und nicht fehlerhaften Adressen üblich sind. Für ein rangbasiertes ADDDC-Sparing weisen die zwei Systemadressen eine gemeinsame Bank/Zeile/Spalte auf (die Speicheradresse beinhaltet eine Zeilenadresse, eine Spaltenadresse und eine Bankadresse). Für ein bankbasiertes ADDDC-Sparing weisen die zwei Systemadressen eine gemeinsame Zeile/Spalte auf (die Speicheradresse beinhaltet eine Zeilenadresse und eine Spaltenadresse). Falls die Prozessorspeicheradresse kleiner oder gleich der letzten Ersatzspeicheradresse ist, wird das ADDDC-Format verwendet. Andernfalls wird das SDDC-Format verwendet.
  • Eine umgekehrte Adressübersetzung wird in der Umkehradressdecodierung 114 implementiert, um die Prozessorspeicheradresse zurück in eine Systemadresse zur Fehlerprotokollierung in der Fehlerschaltungsanordnung 130 umzuwandeln und Attribute zu bestimmen, die in der Systemadresse verfügbar sind. Ein Attribut in der Systemadresse kann angeben, ob die Systemadresse für einen Einebenen-Speicher oder für einen Nahspeicher eines Zweiebenen-Speichers ist.
  • 6 ist ein Verfahren, das in der Speichersteuereinheit 106 ausgeführt wird, um eine Ersatzkopie auszuführen.
  • Bei Block 600 wird das erste Adresspaar für das Sparing von der Speicheradresse 122 in die Systemadresse 120 durch die Sparing-Schaltungsanordnung 130 in der Speichersteuereinheit 106 umgekehrt.
  • Bei Block 602 wird eine Ersatzkopie des aktuellen Sparing-Adresspaars durchgeführt. Eine umgekehrte Adressübersetzung kann mehrere Zyklen dauern (zum Beispiel, um eine Division durch einen Wert, der keine Zweierpotenz ist, zu handhaben, zum Beispiel eine Division durch 3). Eine umgekehrte Adressübersetzung für das nächste Sparing-Adresspaar wird durchgeführt, während die Sparing-Kopie des aktuellen Adresspaars im Gange ist, um die Umkehrübersetzungszeit zu verbergen.
  • Falls bei Block 604 alle fehlerhaften Adressen kopiert wurden, fährt die Verarbeitung mit Block 612 fort. Falls nicht, fährt die Verarbeitung mit Block 606 fort.
  • Bei Block 606, falls der Ersatzzeitraum zum Ausführen von Sparing-Operationen (auch als ein Ersatzfenster bezeichnet) abgelaufen ist, fährt die Verarbeitung mit Block 608 fort. Falls nicht, fährt die Verarbeitung mit Block 602 fort, um eine Ersatzkopie des nächsten Sparing-Adresspaars durchzuführen.
  • Bei Block 608 werden Prozessorspeicheroperationen freigegeben. Die Prozessorspeicheradresse wird mit dem letzten Sparing-Adresspaar verglichen, um das zu verwendende ECC-Format zu bestimmen.
  • Bei Block 610, falls der Prozessorzeitraum zum Durchführen von Prozessorspeicheroperationen (auch als ein CPU-Transaktionsfenster bezeichnet) abgelaufen ist, fährt die Verarbeitung mit Block 602 fort, um die nächste Sparing-Operation durchzuführen. Falls nicht, fährt die Verarbeitung mit Block 608 fort, um die nächste Prozessorspeicheroperation durchzuführen.
  • Bei Block 612 ist die Ersatzkopie abgeschlossen.
  • 7 ist ein Blockdiagramm einer Ausführungsform eines Computersystems 700, das die Speichersteuereinheit 106 beinhaltet. Das Computersystem 700 kann einer Rechenvorrichtung entsprechen, unter anderem einem Server, einem Workstation-Computer, einem Desktop-Computer, einem Laptop-Computer und/oder einem Tablet-Computer.
  • Das Computersystem 700 beinhaltet ein Ein-Chip-System (System-on-Chip (SOC oder SoC)) 704, das Prozessor-, Grafik-, Speicher- und Eingabe/Ausgabe(E/A)-Steuerlogik in einem SoC-Gehäuse kombiniert. Das SoC 704 beinhaltet mindestens ein Zentralverarbeitungseinheits(CPU)-Modul 708, eine Speichersteuereinheit 106 und eine Grafikprozessoreinheit (GPU) 710. Bei anderen Ausführungsformen kann sich die Speichersteuereinheit 106 außerhalb des SoC 704 befinden. Das CPU-Modul 708 beinhaltet mindestens einen Prozessorkern 702 und einen Level-2(L2)-Cache 706. Die Speichersteuereinheit 106 ist kommunikativ mit dem Speicher 140 gekoppelt. Die Speichersteuereinheit 106 beinhaltet die Umkehradressdecodierungsschaltungsanordnung 114 und die Sparing-Schaltungsanordnung 130, die in Verbindung mit 1 erörtert wurden.
  • Obwohl dies nicht gezeigt ist, kann jeder des einen oder der mehreren Prozessorkerne 702 intern einen oder mehrere Anweisungs-/Daten-Caches, Ausführungseinheiten, Vorabrufpuffer, Anweisungswarteschlangen, Verzweigungsadressen-Berechnungseinheiten, Anweisungsdecodierer, Gleitkommaeinheiten, Zurückzieheinheiten usw. enthalten. Das CPU-Modul 708 kann gemäß einer Ausführungsform einem Einzelkern- oder einem Mehrkern-Mehrzweckprozessor entsprechen, wie etwa jenen, die von der Intel® Corporation bereitgestellt werden.
  • Die Grafikprozessoreinheit (GPU: Graphics Processor Unit) 710 kann einen oder mehrere GPU-Kerne und einen GPU-Cache, der grafikbezogene Daten für den GPU-Kern speichern kann, beinhalten. Der GPU-Kern kann intern eine oder mehrere Ausführungseinheiten und einen oder mehrere Anweisungs- und Datencaches beinhalten. Außerdem kann die Grafikprozessoreinheit (GPU) 710 andere Grafiklogikeinheiten enthalten, die in 7 nicht gezeigt sind, wie etwa eine oder mehrere Vertex-Verarbeitungseinheiten, Rasterisierungseinheiten, Medienverarbeitungseinheiten und Codecs.
  • Im E/A-Subsystem 712 sind ein oder mehrere E/A-Adapter 716 vorhanden, um ein im Prozessorkern bzw. in den Prozessorkernen 702 genutztes Host-Kommunikationsprotokoll in ein mit bestimmten E/A-Vorrichtungen kompatibles Protokoll zu übersetzen. Zu den Protokollen, die Adapter für die Übersetzung nutzen können, gehören Peripheral Component Interconnect(PCI)-Express (PCIe); Universal Serial Bus (USB); Serial Advanced Technology Attachment (SATA) und „Firewire“ 1594 des Institute of Electrical and Electronics Engineers (IEEE).
  • Der E/A-Adapter bzw. die E/A-Adapter 716 können mit externen E/A-Vorrichtungen 724 kommunizieren, die beispielsweise Benutzeroberflächenvorrichtung(en) beinhalten können, darunter eine Anzeige und/oder eine Touchscreen-Anzeige 748, Drucker, Tastenfeld, Tastatur, Kommunikationslogik, verdrahtete und/oder drahtlose Speicherungsvorrichtung(en), darunter Festplatten („HDD“), Solid-State Drives („SSD“), wechselbare Speicherungsmedien, ein DVD-Laufwerk (Digital Video Disk), ein CD-Laufwerk (Compact Disk), ein RAID (Redundant Array of Independent Disks), ein Bandlaufwerk oder eine andere Speicherungsvorrichtung. Die Speicherungsvorrichtungen können durch einen oder mehrere Busse, die eines oder mehrere von vielfältigen Protokollen verwenden können, darunter unter anderem SAS (Serial Attached SCSI (Small Computer System Interface)), PCIe (Peripheral Component Interconnect Express), NVMe (NVM Express) über PCIe (Peripheral Component Interconnect Express) und SATA (Serial ATA (Advanced Technology Attachment)) kommunikativ und/oder physisch miteinander gekoppelt sein.
  • Außerdem können ein oder mehrere Drahtlosprotokoll-E/A-Adapter vorhanden sein. Beispiele für Drahtlosprotokolle werden unter anderem in persönlichen Netzwerken wie etwa IEEE 802.15 und Bluetooth 4.0, in drahtlosen lokalen Netzwerken wie etwa Drahtlosprotokolle auf der Basis von IEEE 802.11 und in Mobilfunkprotokollen verwendet.
  • Der Speicher 140 kann ein Betriebssystem 746 speichern. Das Betriebssystem 746 ist Software, die Computerhardware und Software einschließlich Speicherzuordnung und Zugriff auf E/A-Vorrichtungen verwaltet. Zu Beispielen von Betriebssystemen gehören Microsoft® Windows®, Linux®, iOS® und Android®.
  • Die Energiequelle 740 versorgt die Komponenten des Systems 700 mit Energie. Genauer gesagt bildet die Energiequelle 740 typischerweise eine Schnittstelle mit einer oder mehreren Energieversorgungen 742 im System 700, um die Komponenten des Systems 700 mit Energie zu versorgen. In einem Beispiel beinhaltet die Energieversorgung 742 einen AC-zu-DC(Wechselstrom-zu-Gleichstrom)-Adapter zum Einstecken in eine Wandsteckdose. Eine derartige AC-Energieversorgung kann eine Energiequelle 740 aus erneuerbarer Energie (zum Beispiel Solarenergie) sein. In einem Beispiel beinhaltet die Energiequelle 740 eine DC-Energiequelle, wie etwa einen externen AC/DC-Wandler. In einem Beispiel beinhaltet die Energiequelle 740 oder die Energieversorgungseinheit 742 eine Hardware für drahtloses Laden, um das Laden durch eine Nähe zu einem Ladefeld auszuführen. In einem Beispiel kann die Energiequelle 740 eine interne Batterie- oder Brennstoffzellenquelle beinhalten.
  • Verschiedene Ausführungsformen und Aspekte der Erfindungen werden unter Bezugnahme auf nachstehend erörterte Einzelheiten beschrieben, und die beigefügten Zeichnungen veranschaulichen die verschiedenen Ausführungsformen. Die folgende Beschreibung und die Zeichnungen veranschaulichen die Erfindung und sind nicht als die Erfindung einschränkend aufzufassen. Es werden zahlreiche spezifische Einzelheiten beschrieben, um ein umfassendes Verständnis verschiedener Ausführungsformen der vorliegenden Erfindung zu vermitteln. In einigen Fällen wird allerdings auf eine Beschreibung allgemein bekannter oder herkömmlicher Einzelheiten verzichtet, um eine übersichtliche Erörterung von Ausführungsformen der vorliegenden Erfindungen bereitzustellen.
  • In der Patentschrift bedeutet eine Bezugnahme auf „eine Ausführungsform“, dass ein bestimmtes Merkmal, eine bestimmte Struktur oder eine bestimmte Charakteristik, das bzw. die in Verbindung mit der Ausführungsform beschrieben wurde, in mindestens einer Ausführungsform der Erfindung enthalten sein kann. Die Verwendung der Formulierung „bei einer Ausführungsform“ an verschiedenen Stellen in der Patentschrift bezieht sich nicht zwangsläufig immer auf dieselbe Ausführungsform.
  • Hier veranschaulichte Flussdiagramme stellen Beispiele für Sequenzen verschiedener Prozesshandlungen bereit. Die Flussdiagramme können Operationen, die durch eine Software- oder Firmware-Routine auszuführen sind, sowie physische Operationen angeben. Bei einer Ausführungsform kann ein Flussdiagramm den Zustand eines endlichen Zustandsautomaten, Finite State Machine (FSM), veranschaulichen, der in Hardware und/oder Software implementiert sein kann. Wenn nicht anders angegeben, kann die Reihenfolge der Handlungen geändert werden, auch wenn sie in einer bestimmten Abfolge oder Reihenfolge dargestellt sind. Die veranschaulichten Ausführungsformen sollten somit als ein Beispiel verstanden werden, und der Prozess kann in einer anderen Reihenfolge durchgeführt werden, und einige Handlungen können parallel durchgeführt werden. Außerdem können eine oder mehrere Handlungen bei verschiedenen Ausführungsformen weggelassen werden; es sind also nicht alle Handlungen in jeder Ausführungsform notwendig. Es sind auch andere Prozessabläufe möglich.
  • Soweit hier verschiedene Operationen oder Funktionen beschrieben sind, können sie als Softwarecode, Anweisungen, 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 der hier beschriebenen Ausführungsformen kann über einen Herstellungsartikel mit dem darauf gespeicherten Inhalt oder über ein Verfahren zum Betreiben einer Kommunikationsschnittstelle zum Senden von Daten über die Kommunikationsschnittstelle bereitgestellt sein. Ein maschinenlesbares Speichermedium kann veranlassen, dass eine Maschine die beschriebenen Funktionen oder Operationen durchführt, und beinhaltet einen beliebigen Mechanismus, der Informationen in einer Form, die für eine Maschine (z.B. eine Rechenvorrichtung, ein elektronisches System usw.) zugänglich ist, wie etwa in beschreibbaren/nicht beschreibbaren Medien (z.B. einem Festwertspeicher (ROM), einem Direktzugriffsspeicher (RAM), Magnetplattenspeichermedien, optischen Speichermedien, Flash-Speichervorrichtungen usw.) speichert. Eine Kommunikationsschnittstelle beinhaltet jeden Mechanismus, der eine Schnittstelle zu einem festverdrahteten, drahtlosen, optischen usw. Medium bildet, um mit einer anderen Vorrichtung zu kommunizieren, wie etwa einer Speicherbusschnittstelle, einer Prozessorbusschnittstelle, einer Internetverbindung, einer Laufwerkssteuereinheit usw. Die Kommunikationsschnittstelle kann durch ein Bereitstellen von Konfigurationsparametern und/oder ein Senden von Signalen konfiguriert werden, um die Kommunikationsschnittstelle auf die Bereitstellung eines Datensignals vorzubereiten, das den Softwareinhalt beschreibt. 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, Spezialhardware (z.B. anwendungsspezifische Hardware, anwendungsspezifische integrierte Schaltungen (Application Specific Integrated Circuits, ASICs), digitale Signalprozessoren (Digital Signal Processors, DSPs), usw.), eingebettete Steuereinheiten, festverdrahtete Schaltungsanordnung usw. implementiert sein.
  • Neben dem hier Beschriebenen können verschiedene Modifikationen an den offenbarten Ausführungsformen und Implementierungen der Erfindung vorgenommen werden, ohne von ihrem Schutzumfang abzuweichen.
  • Daher sind die Darstellungen und Beispiele hier in einem illustrativen und nicht in einem einschränkenden Sinne zu verstehen. Der Schutzumfang der Erfindung sollte allein durch Bezugnahme auf die folgenden Patentansprüche bemessen werden.

Claims (22)

  1. Speichersteuereinheit, umfassend: eine Sparing-Schaltungsanordnung zum Speichern einer letzten Sparing-Adresse als Speicheradresse für einen Speicher, zum Umwandeln einer Systemadresse für eine Prozessorspeichertransaktion in eine Prozessorspeicheradresse und zum Vergleichen der Prozessorspeicheradresse mit der letzten Sparing-Adresse, um ein Fehlerkorrekturcodeformat für die Prozessorspeicheradresse zu bestimmen; und eine Umkehradressdecodierungsschaltungsanordnung zum Empfangen der Prozessorspeicheradresse von der Sparing-Schaltungsanordnung und zum Umwandeln der Prozessorspeicheradresse in eine zweite Systemadresse zur Fehlerprotokollierung.
  2. Speichersteuereinheit nach Anspruch 1, wobei das Fehlerkorrekturcodeformat eine Adaptive Double Device Data Correction (ADDDC) oder Single Device Data Correction (SDDC) ist.
  3. Speichersteuereinheit nach Anspruch 1, wobei das Fehlerkorrekturcodeformat eine Adaptive Double Device Data Correction (ADDDC) ist und die Sparing-Schaltungsanordnung dazu ausgelegt ist, Speicheradressen in steigender Reihenfolge zu verwenden.
  4. Speichersteuereinheit nach Anspruch 3, wobei die Sparing-Schaltungsanordnung ein rangbasiertes ADDDC-Sparing durchführt.
  5. Speichersteuereinheit nach Anspruch 3, wobei die Sparing-Schaltungsanordnung ein bankbasiertes ADDDC-Sparing durchführt.
  6. Speichersteuereinheit nach Anspruch 5, wobei der Speicher ein dynamischer Direktzugriffsspeicher ist.
  7. Speichersteuereinheit nach Anspruch 6, wobei die Speicheradresse eine Zeilenadresse, eine Spaltenadresse und eine Bankadresse beinhaltet.
  8. Verfahren, das durch eine Speichersteuereinheit durchgeführt wird, umfassend: Speichern, in einer Sparing-Schaltungsanordnung, einer letzten Sparing-Adresse als eine Speicheradresse für einen Speicher; Umwandeln, in der Sparing-Schaltungsanordnung, einer Systemadresse für eine Prozessorspeichertransaktion in eine Prozessorspeicheradresse; Vergleichen, in der Sparing-Schaltungsanordnung, der Prozessorspeicheradresse mit der letzten Sparing-Adresse, um ein Fehlerkorrekturcodeformat für die Prozessorspeicheradresse zu bestimmen; und Umwandeln, in einer Rückwärtsadressendecodierungsschaltungsanordnung, der Prozessorspeicheradresse in eine zweite Systemadresse zur Fehlerprotokollierung.
  9. Verfahren nach Anspruch 8, wobei das Fehlerkorrekturcodeformat eine Adaptive Double Device Data Correction (ADDDC) oder Single Device Data Correction (SDDC) ist.
  10. Verfahren nach Anspruch 8, wobei das Fehlerkorrekturcodeformat eine Adaptive Double Device Data Correction (ADDDC) ist und die Sparing-Schaltungsanordnung dazu ausgelegt ist, Speicheradressen in steigender Reihenfolge zu verwenden.
  11. Verfahren nach Anspruch 10, wobei die Sparing-Schaltungsanordnung ein rangbasiertes ADDDC-Sparing durchführt.
  12. Verfahren nach Anspruch 10, wobei die Sparing-Schaltungsanordnung ein bankbasiertes ADDDC-Sparing durchführt.
  13. Verfahren nach Anspruch 8, wobei der Speicher ein dynamischer Direktzugriffsspeicher ist.
  14. Einrichtung, die Mittel zum Durchführen der Verfahren nach einem der Ansprüche 8 bis 13 umfasst.
  15. Maschinenlesbares Medium einschließlich Code, der bei Ausführung veranlasst, dass eine Maschine das Verfahren nach einem der Ansprüche 8-13 durchführt.
  16. System, umfassend: einen Prozessor; einen Speicher; und eine Speichersteuereinheit, die kommunikativ mit dem Prozessor und dem Speicher gekoppelt ist, wobei die Speichersteuerung umfasst: eine Sparing-Schaltungsanordnung zum Speichern einer letzten Sparing-Adresse als Speicheradresse, zum Umwandeln einer Systemadresse für eine Prozessorspeichertransaktion in eine Prozessorspeicheradresse und zum Vergleichen der Prozessorspeicheradresse mit der letzten Sparing-Adresse, um ein Fehlerkorrekturcodeformat für die Prozessorspeicheradresse zu bestimmen; und eine Umkehradressdecodierungsschaltungsanordnung zum Empfangen der Prozessorspeicheradresse von der Sparing-Schaltungsanordnung und zum Umwandeln der Prozessorspeicheradresse in eine zweite Systemadresse zur Fehlerprotokollierung.
  17. System nach Anspruch 16, wobei das Fehlerkorrekturcodeformat eine Adaptive Double Device Data Correction (ADDDC) oder Single Device Data Correction (SDDC) ist.
  18. System nach Anspruch 16, wobei das Fehlerkorrekturcodeformat eine Adaptive Double Device Data Correction (ADDDC) ist und die Sparing-Schaltungsanordnung dazu ausgelegt ist, Speicheradressen in steigender Reihenfolge zu verwenden.
  19. System nach Anspruch 18, wobei die Sparing-Schaltungsanordnung ein rangbasiertes ADDDC-Sparing durchführt.
  20. System nach Anspruch 18, wobei die Sparing-Schaltungsanordnung ein bankbasiertes ADDDC-Sparing durchführt.
  21. System nach Anspruch 16, wobei der Speicher ein dynamischer Direktzugriffsspeicher ist.
  22. System nach Anspruch 16, ferner umfassend eines oder mehrere von: einer Anzeige, die kommunikativ mit dem Prozessor gekoppelt ist; oder einer Batterie, die mit dem Prozessor gekoppelt ist.
DE102022127896.4A 2021-12-15 2022-10-21 Adresserzeugung für ein sparing durch adaptive doppelvorrichtungsdatenkorrektur Pending DE102022127896A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US17/551,499 2021-12-15
US17/551,499 US20220108764A1 (en) 2021-12-15 2021-12-15 Address generation for adaptive double device data correction sparing

Publications (1)

Publication Number Publication Date
DE102022127896A1 true DE102022127896A1 (de) 2023-06-15

Family

ID=80932360

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102022127896.4A Pending DE102022127896A1 (de) 2021-12-15 2022-10-21 Adresserzeugung für ein sparing durch adaptive doppelvorrichtungsdatenkorrektur

Country Status (5)

Country Link
US (1) US20220108764A1 (de)
JP (1) JP2023088840A (de)
KR (1) KR20230091006A (de)
CN (1) CN116263645A (de)
DE (1) DE102022127896A1 (de)

Also Published As

Publication number Publication date
US20220108764A1 (en) 2022-04-07
JP2023088840A (ja) 2023-06-27
KR20230091006A (ko) 2023-06-22
CN116263645A (zh) 2023-06-16

Similar Documents

Publication Publication Date Title
DE102020118897A1 (de) Verfahren und Vorrichtung zum Reduzieren des Leistungsverbrauchs für dieAktualisierung von Speicherbauelementen auf einem Speichermodul
DE102006002526B4 (de) Steuervorrichtung für eine Solid-State-Disk und Verfahren zum Betreiben derselben
DE102020115736A1 (de) Halbleiterspeichervorrichtung und Verfahren zum Betreiben der Halbleiterspeichervorrichtungen
DE112006002300B4 (de) Vorrichtung zum Stapeln von DRAMs
DE102017104448A1 (de) Datenspeichervorrichtung
DE102020133664A1 (de) Initialisierung und Leistungsausfallisolation eines Speichermoduls in einem System
DE102018122491A1 (de) Halbleiterspeichervorrichtung und verfahren zum betreiben derselben
DE102021122170A1 (de) Adaptive fehlerbereinigung und fehlerbehandlung für internen speicher
CN105518784A (zh) 具有用于高可靠性操作的存储控制器的数据处理器和方法
DE102020123583A1 (de) Speichervorrichtungen zum Durchführen einer Reparaturoperation, Speichersysteme mit denselben und Betriebsverfahren davon
DE102021120140A1 (de) Speichervorrichtung, die in der lage ist, fehlerhafte daten im parallel-bit-test auszugeben, und speichersystem mit dieser speichervorrichtung
DE102016009807A1 (de) Korrelieren von physikalischen seitenadressen für soft-decision-dekodierung
DE112017004966T5 (de) Erweiterte anwendung eines fehlerprüfungs- und korrekturcodes in einem speicher
US11437118B2 (en) Memory device and test method thereof
DE112012005617T5 (de) Speicherung von Daten in Speichermodulpuffern
DE102020132762A1 (de) Eingebaute Selbsttest-Stromausfallabschwächung für dynamischen Direktzugriffsspeicher
DE112022000580T5 (de) Reduzierung der Latenzauswirkungen von Fehlerprüfung und Korrektur auf dem Chip (ECC)
DE102020211544A1 (de) Steuerung, betriebsverfahren der steuerung und speichergerät mit derselben
DE102021126634A1 (de) Speichervorrichtung, Speichersystem und Betriebsverfahren
DE102022102790A1 (de) Verwaltung der Hierarchie eines Zwei-Ebenen-Hauptspeichers
DE112022000450T5 (de) Verbesserte d3-cold und schnellere wiederherstellung
DE112020007776T5 (de) Adaptive Fehlerkorrektur zur Verbesserung des Systemspeichers Zuverlässigkeit, Verfügbarkeit und Wartungsfreundlichkeit (RAS)
DE102022106020A1 (de) Anwendungsbewusste speicher-patrol-scrubbing-techniken
DE102022127896A1 (de) Adresserzeugung für ein sparing durch adaptive doppelvorrichtungsdatenkorrektur
Pawlowski Memory as we approach a new horizon