DE112019000211B4 - Effizientes und selektives ersatzweises Speichern von Bits in Arbeitsspeichersystemen - Google Patents

Effizientes und selektives ersatzweises Speichern von Bits in Arbeitsspeichersystemen Download PDF

Info

Publication number
DE112019000211B4
DE112019000211B4 DE112019000211.2T DE112019000211T DE112019000211B4 DE 112019000211 B4 DE112019000211 B4 DE 112019000211B4 DE 112019000211 T DE112019000211 T DE 112019000211T DE 112019000211 B4 DE112019000211 B4 DE 112019000211B4
Authority
DE
Germany
Prior art keywords
bit
memory
data
error
track
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.)
Active
Application number
DE112019000211.2T
Other languages
English (en)
Other versions
DE112019000211T5 (de
Inventor
Kevin Mcilvain
Stephen Glancy
Warren Maule
Kyu-hyoun Kim
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.)
International Business Machines Corp
Original Assignee
International Business Machines 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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of DE112019000211T5 publication Critical patent/DE112019000211T5/de
Application granted granted Critical
Publication of DE112019000211B4 publication Critical patent/DE112019000211B4/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/16Error detection or correction of the data by redundancy in hardware
    • G06F11/1666Error detection or correction of the data by redundancy in hardware where the redundant component is memory or memory area
    • 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/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
    • 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
    • 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
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/52Protection of memory contents; Detection of errors in memory contents
    • 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
    • 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
    • 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
    • G11C2029/1204Bit line control

Landscapes

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

Abstract

Arbeitsspeichersystem zum Speichern von Daten, wobei das Arbeitsspeichersystem aufweist:eine Mehrzahl von Arbeitsspeichereinheiten (250, 350), die konfiguriert sind, um Daten zu speichern, wobei jede Arbeitsspeichereinheit (250, 350) eine Mehrzahl von Bits aufweist, wobei die Arbeitsspeichereinheiten (250, 350) konfiguriert und angeordnet sind, um zusammenzuwirken, um auf eine Anforderung zu antworten;eine Arbeitsspeicher-Steuerschaltung (330), die der Mehrzahl von Arbeitsspeichereinheiten (250, 350) zugehörig und konfiguriert ist, um Befehls- und Steuersignale an die Mehrzahl von Arbeitsspeichereinheiten (250, 350) auszugeben;einen Detektor zum Erkennen eines Bitfehlers in einer Operation; undeinen Controller zum Neuzuordnen des Bitfehlers zu einer Ersatz-Bitspur als Reaktion darauf, dass der Detektor den Bitfehler erkennt,wobei die Arbeitsspeicher-Steuerschaltung (330) konfiguriert ist, um Daten in dem Ersatzbit in der Ersatz-Bitspur und die Positionsinformationen in der Ersatz-Bitspur zu lesen, um anzugeben, wo die Daten in dem Ersatzbit in der Ersatz-Bitspur verwendet werden sollen.

Description

  • HINTERGRUND
  • Die vorliegende Erfindung bezieht sich auf Computerarchitektur-, Verarbeitungs- und Arbeitsspeichersysteme und im Besonderen auf Erfordernisse einer Wiederherstellbarkeit, Verfügbarkeit und Wartungsfreundlichkeit (Recoverability, Availability and Serviceability, RAS) wie z.B. ein effizientes und selektives ersatzweises Speichern von Bits in Arbeitsspeichersystemen/-teilsystemen.
  • Im Zuge von jüngsten Fortschritten bei der Informationstechnologie und der weitverbreiteten Nutzung des Internets zum Speichern und Verarbeiten von Informationen werden an den Erhalt, die Verarbeitung, Speicherung und Verbreitung von Informationen durch Rechensysteme immer mehr Anforderungen gestellt. Rechensysteme werden entwickelt, um die Geschwindigkeit zu erhöhen, mit der Computer zunehmend komplexe Anwendungen für geschäftliche Zwecke, persönliche Nutzung und Unterhaltung ausführen können. Die Gesamtleistung von Computersystemen wird durch jedes einzelne der Schlüsselelemente der Computerstruktur beeinflusst, wie z.B. die Leistung/Struktur der Prozessoren, etwaige Arbeitsspeicher-Caches, Eingabe/Ausgabe(E/A)-Systeme, die Effizienz der Arbeitsspeicher-Steuerungsfunktionen, die Leistung der Arbeitsspeichereinheiten und - systeme und etwaiger zugehöriger Arbeitsspeicher-Schnittstellenelemente sowie die Art und Struktur der Arbeitsspeicher-Verbindungsschnittstellen.
  • Die ständig steigende Geschwindigkeit von Prozessoren, die zunehmend komplexe Anwendungen ausführen, stellt höhere Leistungsanforderungen an sämtliche anderen Teilsysteme in dem Computer, wie z.B. das Arbeitsspeicherteilsystem, wo Daten während der Ausführung einer Anwendung viele Male gespeichert werden, auf sie zugegriffen wird und sie aktualisiert werden. Die durch Lese-/Schreiboperationen im Arbeitsspeicher benötigte Zeit ist ein bedeutsamer Faktor bei der letztendlichen Geschwindigkeit und Effizienz eines Computersystems. Das Arbeitsspeicherteilsystem der meisten Computer wird in der Regel durch einen Arbeitsspeicher-Controller betrieben. Die Aufgabe eines Arbeitsspeicher-Controllers besteht darin, Daten so schnell und effizient wie möglich zwischen dem Arbeitsspeicherteilsystem und dessen einem oder mehreren Prozessoren zu verschieben. In vielen Arbeitsspeicherteilsystemen kann der Arbeitsspeicher-Controller mehrere Arbeitsspeichereinheiten steuern. Die Arbeitsspeichereinheiten können in Bänken und/oder Kanälen angeordnet sein. Ein Arbeitsspeicherteilsystem eines Computers weist häufig Arbeitsspeichermodule auf, in der Regel ein oder mehrere Dual-in-line-Arbeitsspeichermodule (Dual In-Line Memory Modules, DIMMs), die mehrere Arbeitsspeichereinheiten enthalten, z.B. dynamische Direktzugriffsspeicher-Einheiten (Dynamic Random Access Memory, DRAM). Die DIMMs können eine(n) oder mehrere Bänke und Kanäle von Arbeitsspeichereinheiten aufweisen.
  • Datenverarbeitungsanforderungen machen es notwendig, mit immer höheren Zugriffsgeschwindigkeiten auf eine steigende Zahl von Arbeitsspeichereinheiten mit höherer Speicherdichte zugreifen zu können. Die Industrie unternimmt große Forschungs- und Entwicklungsanstrengungen, um verbesserte und/oder innovative Lösungen zur Maximierung der Gesamt-Systemleistung zu erzeugen, indem die Ausgestaltung und/oder Struktur des Arbeitsspeichersystems/-teilsystems und die Verfahren, vermittels derer das Arbeitsspeichersystem/-teilsystem funktioniert, verbessert werden. Solche Anstrengungen haben zu der Entwicklung von verteilten Arbeitsspeichersystemen, verteilten Pufferarbeitsspeicher-Systemen, Registered-DIMMs (RDIMMs) und lastreduzierten DIMMs (LRDIMMs) sowie anderen Systemen, Spezifikationen und Standards wie zum Beispiel DDR4 und DDR5 geführt, die eine höhere Arbeitsspeicherleistung bereitstellen.
  • In einem Beispiel kann ein verteiltes Arbeitsspeichersystem eine Mehrzahl von Arbeitsspeichereinheiten, einen oder mehrere, auch Arbeitsspeicher-Steuerschaltungen genannte Adress-Chips (ACs) und eine Mehrzahl von Datenschaltungen enthalten, die auch Datenpufferschaltungen oder DC-Chips (DCs) genannt werden. Zwischen einem Host-Prozessor und den Arbeitsspeicher-Steuerschaltungen und Datenpufferschaltungen gibt es Datenübertragungsverbindungen oder -busse. Auch von den Arbeitsspeicher-Steuerschaltungen zu den Datenpufferschaltungen gibt es eine Datenübertragungsverbindung bzw. einen Datenübertragungsbus. Zwischen den Arbeitsspeichereinheiten wie z.B. den DRAMs und den Arbeitsspeicher-Steuerschaltungen sowie den Datenpufferschaltungen gibt es ebenfalls Datenübertragungsverbindungen. Bandbreitenbeschränkungen von Datenübertragungsverbindungen können die Leistung von Arbeitsspeichersystemen beeinträchtigen.
  • Wenn die Leistung (z.B. Geschwindigkeit und Kapazität) von Arbeitsspeichersystemen steigt, sind auch Wiederherstellbarkeit, Verfügbarkeit und Wartungsfreundlichkeit (RAS) wichtige Gesichtspunkte. Die RAS-Erfordernisse eines Hochleistungsservers oder Mainframe-Computers unterscheiden sich wesentlich von denen eines einfachen Personal Computers. Um die Zuverlässigkeit zu erhöhen und das Risiko eines Computerausfalls zu vermeiden oder wenigstens zu verringern, wurden verschiedene Arten von Fehlererkennungs- und -korrekturprozessen entwickelt. Ein häufig verwendetes System zur Fehlererkennung besteht in der Verwendung von Paritätsbits zum Erkennen von Fehlern. Während die Prüfung von Paritätsbits für die Feststellung von Einzelbitfehler durchaus funktioniert, ist dies für die Ermittlung von Mehrbitfehlern nicht immer der Fall, und Systeme für die Paritätsprüfung verfügen über keinen Mechanismus zum Korrigieren von Datenfehlern.
  • Die US 7 447 066 B2 offenbart ein Schema, das es in einem Speicherarray mit redundanten Spalten ermöglicht, dass defekte Zellen individuell auf redundante Zellen in einer redundanten Spalte umgeschaltet werden können. Redundante Zellen in einer redundanten Spalte ersetzen defekte Zellen in mehreren nicht-redundanten Spalten. Eine Neuzuordnung wird als Teil des Tests und der Konfiguration bei der Initialisierung durchgeführt. Für das Schema kann spezielle Hardware verwendet werden oder die Firmware in der Steuereinheit des Speichers kann das Schema implementieren.
  • KURZDARSTELLUNG
  • Die Kurzdarstellung der Offenbarung soll das Verständnis des Arbeitsspeichersystems, der architektonischen Struktur und des Verfahrens eines Speicherns und Abrufens von Daten unterstützen und ist nicht als Beschränkung der Offenbarung oder der Erfindung gedacht. Die vorliegende Offenbarung richtet sich an einen Fachmann. Dabei sollte klar sein, dass verschiedene Aspekte und Merkmale der Offenbarung in manchen Fällen vorteilhafterweise getrennt, in anderen Fällen jedoch in Kombination mit anderen Aspekten und Merkmalen der Offenbarung verwendet werden können. Entsprechend können an den Arbeitsspeichersystemen, der architektonischen Struktur und der Arbeitsweise Abwandlungen und Änderungen vorgenommen werden, um verschiedene Effekte zu erzielen.
  • Bei einer Ausführungsform wird ein Arbeitsspeichersystem zum Speichern von Daten offenbart, wobei das Arbeitsspeichersystem eine Mehrzahl von Arbeitsspeichereinheiten, die konfiguriert sind, um Daten zu speichern, wobei jede Arbeitsspeichereinheit eine Mehrzahl von Bits aufweist, wobei die Arbeitsspeichereinheiten konfiguriert und angeordnet sind, um vorzugsweise als eine Bank zusammenzuwirken, um auf eine Anforderung zu antworten; eine Arbeitsspeicher-Steuerschaltung, die der Mehrzahl von Arbeitsspeichereinheiten zugehörig und konfiguriert ist, um Befehls- und Steuersignale an die Mehrzahl von Arbeitsspeichereinheiten auszugeben; einen Detektor zum Erkennen eines Bitfehlers in einer Operation; und einen Controller zum Neuzuordnen des Bitfehlers zu einer Ersatz-Bitspur als Reaktion darauf enthält, dass der Detektor den Bitfehler erkennt.
  • Bei einer weiteren Ausführungsform wird ein Arbeitsspeichersystem zum Speichern von Daten offenbart, wobei das Arbeitsspeichersystem eine Mehrzahl von Arbeitsspeichereinheiten, die konfiguriert sind, um Daten zu speichern, wobei jede Arbeitsspeichereinheit eine Mehrzahl von Bits aufweist, wobei die Arbeitsspeichereinheiten konfiguriert und angeordnet sind, um zum Durchführen einer Operation zusammenzuwirken; eine Arbeitsspeicher-Steuerschaltung enthält, die der Mehrzahl von Arbeitsspeichereinheiten zugehörig und konfiguriert ist, um Signale an die Mehrzahl von Arbeitsspeichereinheiten auszugeben, wobei die Arbeitsspeicher-Steuerschaltung Logikschaltungen enthält, die konfiguriert sind, um (i) ein ausfallendes Bit während einer Operation zu erkennen; (ii) bei einer Ausführungsformen Daten aus dem ausfallendes Bit in eine Einzel-Ersatz-Bitspur neu zu schreiben; und (iii) die in die Ersatz-Bitspur neu geschriebenen Daten für das ausfallende Bit zu lesen. Bei einem Aspekt enthält die Arbeitsspeicher-Steuerschaltung einen Arbeitsspeicher-Controller, der konfiguriert ist, um die Position des ausfallenden Bits in die Ersatz-Bitspur zu schreiben, und bei einem weiteren Aspekt kann Fehlerkorrekturcode (Error Correction Code, ECC) in die Ersatz-Bitspur geschrieben werden.
  • Offenbart wird außerdem ein Verfahren zum Verwalten von Bitfehlern in einem Arbeitsspeicherteilsystem, wobei das Verfahren ein Erkennen eines Fehlers in einer ersten Arbeitsspeicher-Bitposition in einer Mehrzahl von Arbeitsspeichereinheiten in einer ersten Operation; und ein Neuzuordnen der Daten, die in der Arbeitsspeicher-Bitposition, wo der erste Fehler erkannt wurde, gespeichert werden sollen, zu einer Ersatz-Bitspur enthält. Bei einem Aspekt werden die Daten, die in der Arbeitsspeicher-Bitposition, wo der erste Fehler erkannt wurde, gespeichert werden sollen, einem Ersatzbit in der Ersatz-Bitspur nur zugeordnet. Das Neuzuordnen kann ein Speichern von Positionsinformationen, welche die Position des erkannten Bitfehlers identifizieren, und von Fehlerkorrekturcode für das Ersatzbit in der Ersatz-Bitspur enthalten. Bei einem Aspekt ist die erste Operation eine Leseoperation, und wenn während der Leseoperation ein Fehler erkannt wird, weist das Verfahren des Weiteren ein Durchführen einer Schreiboperation auf, wobei das System, vorzugsweise der Arbeitsspeicher-Controller, die Informationen/Daten aus der Bitposition, wo der Fehler erkannt wurde, in die Ersatz-Bitspur schreibt. Bei einem weiteren Aspekt enthält das Verfahren eine Leseoperation, und gültige Daten werden aus der Ersatz-Bitspur gelesen, die ein Bit von Daten, ein oder mehrere Bits von Positionsinformationen für das Bit von Daten und ein oder mehrere Bits von Fehlerkorrekturcode enthält, die das Datenbit und die Positionsbits schützen. Bei einem weiteren Aspekt enthält das Verfahren eine Leseoperation, und gültige Daten werden aus der Ersatz-Bitspur gelesen, die ein Ersatzbit enthält, wobei dieses Bit unter Verwendung von in der Ersatz-Bitspur gespeicherten Positionsinformationen den Daten, die durch das System, vorzugsweise den Arbeitsspeicher-Controller, gelesen werden, neu zugeordnet wird, um die ursprünglichen, nicht ersatzweise gespeicherten Daten wiederherzustellen. Bei einem weiteren Aspekt kann das System die Daten nach Bedarf reparieren, nachdem das fehlerhafte Bit der Ersatz-Bitspur neu zugeordnet wird und nachdem das System oder der Prozess das Ersatzbit ausliest.
  • Figurenliste
  • Die verschiedenen Aspekte, Merkmale und Ausführungsformen des Arbeitsspeichersystems, der architektonischen Struktur und deren Arbeitsweise werden in Verbindung mit den bereitgestellten Figuren besser verständlich. Ausführungsformen werden in den Figuren zum Zwecke einer Veranschaulichung von Aspekten, Merkmalen und/oder verschiedenen Ausführungsformen des Arbeitsspeichersystems, der architektonischen Struktur und der Arbeitsweise bereitgestellt, wobei die Ansprüche jedoch nicht auf die gezeigte(n) exakte(n) Anordnung, Strukturen, Merkmale, Aspekte, Ausführungsformen oder Einheiten beschränkt werden sollten, und wobei die gezeigten Anordnungen, Strukturen, Teilbaugruppen, Merkmale, Aspekte, Ausführungsformen, Verfahren und Einheiten einzeln oder in Kombination mit anderen Anordnungen, Strukturen, Teilbaugruppen, Merkmalen, Aspekten, Ausführungsformen, Verfahren und Einheiten verwendet werden können.
    • 1 stellt ein allgemeines Rechen- oder Datenverarbeitungssystem dar.
    • 2 stellt ein Rechen- oder Verarbeitungssystem mit einem Arbeitsspeicherteilsystem gemäß einer Ausführungsform dar.
    • 3 stellt ein Arbeitsspeicherteilsystem mit einem gepufferten DIMM gemäß einer Ausführungsform dar.
    • 4 stellt ein Zweikanal-DIMM gemäß einer weiteren Ausführungsform dar.
    • 5 stellt eine zeichnerische Darstellung eines Bitausfalls in einer Operation gemäß einer Ausführungsform dar, der in eine Ersatz-Bitspur neu geschrieben wird.
    • 6 stellt eine zeichnerische Darstellung eines anderen Bitausfalls in einer anderen, nachfolgenden Operation gemäß einer Ausführungsform dar, der in eine Ersatz-Bitspur neu geschrieben wird.
    • 7 ist ein Ablaufplan eines Verfahrens zum Verwalten von ausgefallenen Bits in einer Arbeitsspeicheroperation.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Die folgende Beschreibung dient zur Veranschaulichung der allgemeinen Grundgedanken der Erfindung und ist nicht als Einschränkung der hier beanspruchten erfinderischen Konzepte gedacht. In der folgenden ausführlichen Beschreibung werden zahlreiche Einzelheiten dargelegt, um ein Verständnis des Arbeitsspeichersystems, der architektonischen Struktur und der Arbeitsweise bereitzustellen, wobei für den Fachmann jedoch offensichtlich sein dürfte, dass verschiedene und zahlreiche Ausführungsformen des Arbeitsspeichersystems, der architektonischen Struktur und der Arbeitsweise ohne diese spezifischen Einzelheiten realisiert werden können und dass die Ansprüche und die Erfindung nicht auf die Ausführungsformen, Teilbaugruppen, Merkmale, Prozesse, Verfahren, Aspekte, Eigenschaften oder Einzelheiten beschränkt werden sollten, die hier konkret beschrieben und gezeigt werden. Darüber hinaus können bestimmte hier beschriebene Merkmale in Verbindung mit anderen beschriebenen Merkmalen in jeder der verschiedenen möglichen Kombinationen und Abwandlungen verwendet werden.
  • Sofern hier nicht ausdrücklich anderweitig genannt, sind sämtliche Begriffe in ihrer größtmöglichen Auslegung zu verstehen, einschließlich aus der Beschreibung hervorgehende Bedeutungen sowie durch einen Fachmann verstandene und/oder in Wörterbüchern, Abhandlungen usw. definierte Bedeutungen. Darüber hinaus ist zu beachten, dass die in der Beschreibung und den beigefügten Ansprüchen verwendeten Singularformen „ein/eine/eines“ und „der/die/das“ auch die Pluralformen einschließen, soweit dies nicht anderweitig angegeben wird.
  • Ein zum Speichern und/oder Ausführen von Programmcode geeignetes Rechen- oder Datenverarbeitungssystem 100 kann viele Formen annehmen und kann bei einer Ausführungsform mindestens einen Prozessor 102 enthalten, der ein Controller oder Teil eines Controllers sein kann, welcher direkt oder indirekt über einen Systembus 106 mit Arbeitsspeichereinheiten oder -elementen verbunden ist, wie in 1 gezeigt wird. Das Rechensystem 100 aus 1 wird mit einem Prozessor 102, einem Direktzugriffsspeicher (Random Access Memory, RAM) 103, einem nicht flüchtigen Arbeitsspeicher 104, einheitenspezifischen Schaltungen 101 und einer E/A-Schnittstelle 105 gezeigt. Alternativ können der RAM 103 und/oder der nicht flüchtige Arbeitsspeicher 104 in dem Prozessor 102 enthalten sein, ebenso wie die einheitenspezifischen Schaltungen 101 und die E/A-Schnittstelle 105. Der Prozessor 102 kann zum Beispiel einen vorgefertigten Mikroprozessor, einen angepassten Prozessor, eine im Feld programmierbare Gatter-Anordnung (Field Programmable Gate Array, FPGA), eine anwendungsspezifische integrierte Schaltung (Application Specific Integrated Circuit, ASIC), diskrete Logik usw. aufweisen. Der RAM 103 wird üblicherweise verwendet, um variable Daten, Stapeldaten, ausführbare Anweisungen usw. zu speichern, und kann einen dynamischen Direktzugriffsspeicher oder DRAM enthalten. Bei einer Ausführungsform kann der RAM 103 einen synchronen DRAM oder SDRAM mit doppelter Datenrate (Double Data Rate, DDR) aufweisen. Der RAM kann Arbeitsspeichereinheiten enthalten, die in einem Modul angeordnet sind, zum Beispiel Dual-in-line-Arbeitsspeichermodule, die auch DIMMs genannt werden.
  • Gemäß verschiedenen Ansätzen kann der nicht flüchtige Arbeitsspeicher 104 eine beliebige Art von nicht flüchtigem Arbeitsspeicher aufweisen, z.B. einen elektrisch löschbaren programmierbaren Nur-Lese-Speicher (Electrically Erasable Programmable Read Only Memory, EEPROM), einen programmierbaren Flash-Nur-Lese-Speicher (Programmable Read Only Memory, PROM), einen RAM mit Notstromversorgung, Festplattenlaufwerke usw., ohne jedoch hierauf beschränkt zu sein. Der nicht flüchtige Arbeitsspeicher 104 wird üblicherweise verwendet, um ausführbare Firmware und etwaige nicht flüchtige Daten zu speichern, die Programmieranweisungen enthalten, die ausgeführt werden können, um den Prozessor 102 zum Durchführen bestimmter Funktionen zu veranlassen.
  • Bei manchen Ausführungsformen kann die E/A-Schnittstelle 105 eine Datenübertragungsschnittstelle enthalten, die dem Prozessor 102 ermöglicht, mit außerhalb des Controllers angeordneten Einheiten Daten auszutauschen. Beispiele für die Datenübertragungsschnittstelle können serielle Schnittstellen wie z.B. RS-232, USB (Universal Serial Bus), Small Computer Systems Interface (SCSI), RS-422 oder eine drahtlose Datenübertragungsschnittstelle wie WLAN, Bluetooth, Nahfeldkommunikation (Near-Field Communication, NFC) oder andere drahtlose Schnittstellen sein, ohne jedoch hierauf beschränkt zu sein. Das Rechensystem 100 kann über die Datenübertragungsschnittstelle 105 unter Verwendung eines beliebigen Datenübertragungsprotokolls wie z.B. Automation/Drive Interface (ADI) mit einer externen Einheit Daten austauschen.
  • 2 stellt ein beispielhaftes Verarbeitungssystem 200 dar, das Teil einer größeren Computersystemstruktur oder eines größeren Computersystemnetzwerks sein kann. Das Verarbeitungssystem 200 enthält ein Steuerungsprozessorsystem oder einen Prozessor 202, bei dem es sich um ein Verarbeitungsteilsystem handelt, das mindestens eine Prozessoreinheit (CPU) oder einen Mikroprozessor 206 enthält, die bzw. der konfiguriert sein kann, um eine Schnittstelle zu einer Arbeitsspeicher-Steuereinheit (Memory Control Unit, MCU) 210 zu bilden. Der Prozessor oder die CPU 206 kann ein Modul sein, das Lese-, Schreib- und Konfigurationsanforderungen von einem (nicht dargestellten) System-Controller verarbeitet. Der Prozessor 206 kann ein Mehrkernprozessor sein. Die MCU 210 kann einen auch als Arbeitsspeicher-Controller bezeichneten synchronen Arbeitsspeicher-Controller (Memory Controller Synchronous, MCS) 208 enthalten, der einen Datenaustausch mit einer oder mehreren (in 1 nicht gezeigten) Arbeitsspeichereinheiten 250 in einem Arbeitsspeicherteilsystem 220 steuert. Die MCU 210 und der MCS 208 können eine oder mehrere Verarbeitungsschaltungen enthalten, oder eine Verarbeitung kann durch den oder in Verbindung mit dem Prozessor 206 durchgeführt werden. Das Steuerungsprozessorsystem 202 tauscht über einen Datenübertragungsbus 215 Daten mit dem Arbeitsspeicherteilsystem 220 aus. Das Steuerungsprozessorsystem 202, der Prozessor oder die CPU 206, die Arbeitsspeicher-Steuereinheit 210 und das MCS 208 können hier einzeln oder in ihrer Gesamtheit als der Host bezeichnet werden. Wie hier verwendet, bezieht sich der Host im weiten Sinne auf einen Prozessor, einen Controller oder eine Einheit, der bzw. die Befehls- und/oder Steuersignale an ein Arbeitsspeichersystem oder - teilsystem sendet und von diesem empfängt. Der Host kann auch Datensignale an ein Arbeitsspeichersystem oder -teilsystem senden und von diesem empfangen.
  • Offenbart werden Systeme, eine Architektur und/oder Verfahren zum Verwalten von Fehlern in einem Arbeitsspeichersystem oder -teilsystem. Bei einer Ausführungsform werden ein System, eine architektonische Struktur und/oder ein Verfahren zum Verwenden von nicht genutzten oder Ersatzbits in einem Arbeitsspeicherkanal oder einer Arbeitsspeicherbank offenbart, der bzw. die Arbeitsspeichereinheiten für RAS-Fähigkeiten (z.B. Fehlerkorrekturcode (ECC)) enthält. Bei einem Aspekt erlaubt das System, die Architektur und/oder das Verfahren das Neuzuordnen eines beliebigen Bits in einer Transaktion oder Operation, z.B. einer Lese- oder Schreiboperation, um einer Ersatz-Bitspur zugeordnet zu werden. Bei einer Ausführungsform kann ein Bit in jeder Transaktion, z.B. einer Lese- oder Schreiboperation, der Ersatz-Bitspur zugeordnet oder in diese neu geschrieben werden, und die Bitauswahl kann dieselbe bleiben oder sich mit jeder Transaktion oder Operation ändern. Das Bit, das für ein Neuzuordnen zu dem Ersatz ausgewählt wird, z.B. aufgrund eines Bitfehlers oder -ausfalls, kann unabhängig von der Burst-Transaktion oder -Operation sein. Bei einer Ausführungsform können die Neuzuordnungsinformationen wie z.B. die Daten und die Position des ungültigen oder fehlerhaften Bits zudem durch Fehlerkorrekturcode (ECC) abgedeckt werden. Das System, die Architektur und das Verfahren zum Zuordnen eines Bits zu einer Ersatz-Bitspur ist vorteilhaft, wenn in einem Arbeitsspeicherkanal verschiedene Bits über mehrere Arbeitsspeichereinheiten hinweg ausfallen, was häufig der Fall sein kann. Das System, die Architektur und das Verfahren zum Neuzuordnen eines Bits zu einer Ersatz-Bitspur ist außerdem effizienter als gegenwärtige Methoden für ein ersatzweises Speichern, die eine gesamte Datenzeile (DQ) einer Ersatz-Datenzeile (DQ) neu zuordnen.
  • Das System, die Architektur und das Verfahren zum ersatzweisen Speichern von Bits in einer nicht genutzten Bitspur gemäß einer Ausführungsform kann durch einen Arbeitsspeicher-Controller mit einfacher Logik gesteuert und durchgeführt werden. Der Prozess und das System können bei einem Aspekt mit keinen oder minimalen Änderungen an dem Arbeitsspeicherkanal realisiert werden. Das Verfahren, das System und die Architektur funktionieren auch während Arbeitsspeicheroperationen wie z.B. Lese- oder Schreiboperationen und erfordern unter Umständen keine Betriebsarten für die nachträgliche Paketreparatur (Post Package Repair, PPR). Zusätzlich können das Verfahren, das System und die Architektur einem standardmäßigen DDR5-DIMM mit Fehlerkorrekturcode (ECC) auch einen höheren Grad an RAS ermöglichen, da das DDRS-Doppelkanal-DIMM bei Ausführungsformen bereits über ein zusätzliches Bit auf jedem Kanal verfügt. Für einen Fachmann dürfte offensichtlich sein, dass die Vorteile dieser Ausgestaltung auf jedes System mit zusätzlichen Bits auf dem Bus anwendbar sind und dass diese Methode und Offenbarung nicht auf DDR5 beschränkt sind. Das Verfahren, das System und die Architektur können in anderen Konfigurationen und Ausführungsformen realisiert und bereitgestellt werden, wie aus der Offenbarung und den hierin dargelegten Lehren hervorgeht.
  • Ein Arbeitsspeicherteilsystem eines Computers weist häufig Arbeitsspeichermodule auf, wobei es sich in der Regel um ein oder mehrere Dual-in-line-Arbeitsspeichermodule (DIMMs) handelt, die üblicherweise eine Mehrzahl von Arbeitsspeichereinheiten enthalten, z.B. dynamische Direktzugriffsspeicher-Einheiten (DRAM-Einheiten). Bei einer Ausführungsform kann das Arbeitsspeichersystem eine Mehrzahl von Arbeitsspeichereinheiten, eine oder mehrere Arbeitsspeicher-Steuerschaltungen und eine oder mehrere Datenpufferschaltungen enthalten, die alle vorzugsweise auf einem Modul wie z.B. einem DIMM angeordnet sind. Bei einer Ausführungsform empfängt die Arbeitsspeicher-Steuerschaltung Signale von einem Host-Prozessor und gibt Befehls- und Steuersignale aus. Das Arbeitsspeichersystem kann bei einer Ausführungsform einen Arbeitsspeicher-Controller enthalten, um den Fluss von Daten an die und von den Arbeitsspeichereinheiten zu steuern. Der Arbeitsspeicher-Controller kann außerdem einen Zugriff auf die Arbeitsspeichereinheiten verwalten. Für Zugriffsanforderungen, die durch einen Host wie z.B. einen Prozessor erzeugt werden, erzeugt der Arbeitsspeicher-Controller einen oder mehrere Zugriffsbefehle, die an die Arbeitsspeichereinheiten gesendet werden, um die Anforderungen zu bedienen. In Verbindung mit einem Verwalten eines Zugriffs auf Arbeitsspeicherressourcen kann der Arbeitsspeicher-Controller außerdem eine Konfiguration und einen Status der Arbeitsspeichereinheiten verwalten. Der Arbeitsspeicher-Controller erzeugt vorzugsweise Befehle und verwaltet einen Zugriff auf Datenressourcen wie z.B. Arbeitsspeichereinheiten, um dadurch eine Bandbreitennutzung der Arbeitsspeichereinheiten zu maximieren. Bei einer Ausführungsform kann die Arbeitsspeicher-Steuerschaltung einen oder mehrere registrierte Taktgebertreiber oder RCDs (Registered Clock Drivers) enthalten. Bei einer Ausführungsform kann die Arbeitsspeicher-Steuerschaltung einen Scheduler enthalten, der in Form einer Schaltung vorliegen kann.
  • Die Arbeitsspeicher-Steuerschaltung wie z.B. der Scheduler kann die Reihenfolge von Operationen und Anweisungen optimieren und sendet Befehlssignale (z.B. Anweisungen) an die Datenpufferschaltungen und/oder die Arbeitsspeichereinheiten. Bei einer Ausführungsform planen ein Arbeitsspeicher-Controller, ein Scheduler und/oder eine Schaltung Abrufoperationen (Leseoperationen), Speicheroperationen (Schreiboperationen) ein, und eine Arbeitsspeichereinheit wie z.B. ein DRAM plant periodische Operationen ein, zum Beispiel Aktualisierungsoperationen, um eine Systemleistung zu optimieren. Zwischen einem Host (Prozessor), den Arbeitsspeichereinheiten, den Datenpufferschaltungen und/oder den Arbeitsspeicher-Steuerschaltungen kann es Datenübertragungsverbindungen oder -busse zum Übertragen von Daten, Befehlen, Antworten und/oder Signalen geben. Bei einer Ausführungsform gibt es einen Datenübertragungsbus oder eine Datenübertragungsverbindung von der Arbeitsspeicher-Steuerschaltung zu den Datenpufferschaltungen. Bei einer Ausführungsform kann es außerdem Datenübertragungsbusse und -verbindungen zwischen dem Host und der Arbeitsspeicher-Steuerschaltung sowie getrennte Datenübertragungsbusse oder -verbindungen zwischen dem Host und den Datenpufferschaltungen geben. Bei einer weiteren Ausführungsform kann es Datenübertragungsbusse und -verbindungen zwischen dem Arbeitsspeicher-Controller, der Teil des Prozessors und/oder der Arbeitsspeicher-Steuerschaltung sein kann, und den Arbeitsspeichereinheiten geben. Das Arbeitsspeichersystem und/oder die architektonische Struktur kann des Weiteren eine Datenübertragungsverbindung oder einen Datenübertragungsbus zwischen den Arbeitsspeichereinheiten und der Arbeitsspeicher-Steuerschaltung und/oder der Datenpufferschaltung enthalten. Im Interesse einer besseren Veranschaulichung wurden viele der Datenübertragungsverbindungen in den Figuren weggelassen.
  • Die 3 und 4 stellen Beispiele für ein Prozessor-Arbeitsspeichersystem 300 mit einem Arbeitsspeicherteilsystem 320 dar. 3 zeigt das Arbeitsspeichersystem 320 mit einer Mehrzahl von Arbeitsspeichermodulen 325a bis c wie z.B. Dual-in-line-Arbeitsspeichermodule oder DIMMs, wobei jedoch offensichtlich sein sollte, dass das Arbeitsspeicherteilsystem 320 auch mehr oder weniger DIMMs 325 enthalten kann (siehe z.B. 4). Das Beispiel aus 3 zeigt drei Arbeitsspeichermodule 325, während das Beispiel aus 4 ein Arbeitsspeichermodul 325 zeigt. 3 zeigt ein System und eine Architektur, die DDR4 entsprechen, und 4 zeigt ein System und eine Architektur, die DDR5 entsprechen. 4 zeigt ein Doppelkanal-DIMM mit zwei RCDs, wobei die Funktion der beiden gezeigten RCDs jedoch auch innerhalb eines RCDs oder innerhalb mehrerer Einheiten enthalten sein kann. Die Mehrzahl von Arbeitsspeichereinheiten auf den DIMMs 325 kann in Kanälen oder Bänken angeordnet sein, wobei sich ein oder mehrere Bänke oder Kanäle auf einem DIMM 325 oder auf mehreren DIMMs 325 befinden. Zum Beispiel zeigt 4 zwei Kanäle auf dem DIMM 325. Jedes DIMM 325 kann eine oder mehrere flüchtige Arbeitsspeichereinheiten wie z.B. DRAMs 350 enthalten. Die DRAMs sind vorzugsweise synchrone DRAMs mit doppelter Datenrate (DDR).
  • Die Arbeitsspeichereinheiten 350 können integrierte Schaltungen oder Chips sein und bilden die grundlegenden Arbeitsspeicherzellen, die Bits von Informationen enthalten. Die Arbeitsspeicherzellen (Bits) in einer Arbeitsspeichereinheit wie z.B. einem DRAM sind üblicherweise in Speicherbänken angeordnet, wobei jede Speicherbank eine Anordnung von Zeilen und Spalten ist. Üblicherweise gibt es eine Mehrzahl von Speicherbänken in den Arbeitsspeichereinheiten wie z.B. den DRAMs. Die Arbeitsspeichereinheiten haben üblicherweise eine Bitbreite von 4, 8 oder 16, was durch die Angabe x4, x8 oder x16 kenntlich gemacht wird. Zum Beispiel greift bei einer x4-Arbeitsspeichereinheit ein Takt oder Zyklus während einer Operation der x4-Arbeitsspeichereinheit, z.B. einer Lese- oder Schreiboperation, auf vier (4) Bits zu. Bei einer x8-Arbeitsspeichereinheit greift ein Takt oder Zyklus während einer Operation der x8-Arbeitsspeichereinheit auf acht (8) Bits zu. Bei einer x16-Arbeitsspeichereinheit wiederum greift ein Takt oder Zyklus während einer Operation der x4-Arbeitsspeichereinheit, z.B. einer Lese- oder Schreiboperation, auf sechzehn (16) Bits zu.
  • Die Arbeitsspeichereinheiten werden häufig in Bänken angeordnet, so dass ein Zyklus während des Zyklus aus mehreren Arbeitsspeichereinheiten liest bzw. in diese schreibt. Eine Bank ist im Allgemeinen ein Satz von Arbeitsspeichereinheiten, die auf ein und denselben Befehl und dieselbe Adresse zum selben Zeitpunkt mit unterschiedlichen Elementen von angeforderten Daten antworten. Zum Beispiel liest bei vier (4) x8-Arbeitsspeichereinheiten, die als eine Bank angeordnet sind, ein Takt oder Zyklus zweiunddreißig (32) Bits aus den Arbeitsspeichereinheiten bzw. schreibt sie in diese. Zusätzlich kann die Operation wie z.B. eine Lese- oder Schreiboperation mehrere Takte enthalten. Zum Beispiel kann eine Operation wie beispielsweise eine Lese- oder Schreiboperation eine Burst-Länge (BL) von sechzehn (BL 16) aufweisen, was sechzehn (16) Takte oder Zyklen innerhalb der Operation (Transaktion) angibt. Bei einer Ausführungsform weist eine Leseoperation von vier (4) x8-Arbeitsspeichereinheiten, die für eine Burst-Länge von sechzehn (BL 16) angeordnet und konfiguriert sind, sechzehn (16) Takte auf, die in jedem Takt zweiunddreißig (32) Bits lesen. Bei einem weiteren Beispiel weist eine Operation (Lese- oder Schreiboperation) in einer DDR4-Konfiguration mit acht (8) x8-Arbeitsspeichereinheiten, die für eine Burst-Länge von acht (BL 8) konfiguriert sind, acht (8) Takte auf, die in jedem Takt auf vierundsechzig (64) Bits zugreifen.
  • Das Arbeitsspeicherteilsystem kann außerdem eine oder mehrere auch als Adress-Chips (ACs) bekannte Arbeitsspeicher-Steuerschaltungen 330 sowie eine(n) oder mehrere Datenpuffer oder Datenschaltungen (DCs) 340 enthalten, die auch DC-Chips genannt werden. In anderen Beispielen können die AC- und DC-Chips in einem Chip kombiniert werden. Alternativ kann das Arbeitsspeichersystem bei einer Ausführungsform nur einen oder mehrere AC-Chips ohne jedwede DC-Chips oder nur einen oder mehrere DC-Chips ohne jedwede AC-Chips enthalten. Die Arbeitsspeicher-Steuerschaltung 330 verwaltet den Fluss von Daten an die und von den Arbeitsspeichereinheiten 350 sowie den Zugriff auf diese. Die Arbeitsspeicher-Steuerschaltung empfängt Signale wie z.B. Befehls- und Steuersignale in der Regel von einem Host wie beispielsweise einem Prozessor. Die Steuersignale können Adresspositionen oder Kennungen dazu enthalten, wo Daten in den Arbeitsspeichereinheiten und/oder Datenpufferschaltungen gespeichert werden sollen. Die Arbeitsspeicher-Steuerschaltung 330 kann Befehls- und Steuersignale an die Arbeitsspeichereinheiten ausgeben. Um die Bezugnahme zu vereinfachen, können die Arbeitsspeicher-Steuerschaltungen 330 auch als Adress- und Befehlsschaltungen, AC-Schaltungen oder AC-Chips bezeichnet werden. Die Arbeitsspeicher-Steuerschaltung 330 kann einen registrierten Taktgebertreiber (RCD) 332 aufweisen, ohne dass dies jedoch der Fall sein muss. Jedes Arbeitsspeichermodul 325 kann, wie in 3 gezeigt einen RCD 332 oder, wie in 4 gezeigt, mehrere RCDs 332 aufweisen. Bei einer Ausführungsform kann die Arbeitsspeicher-Steuerschaltung 330 einen Arbeitsspeicher-Controller aufweisen.
  • Die Arbeitsspeicher-Steuerschaltung 330 oder der Arbeitsspeicher-Controller können einen Scheduler 338 aufweisen. Die Arbeitsspeicher-Steuerschaltung 330, der Arbeitsspeicher-Controller und/oder der Scheduler 338 können die Reihenfolge von Operationen und Anweisungen optimieren und senden Signale an die Datenpufferschaltungen und die Arbeitsspeichereinheiten. Die Arbeitsspeicher-Steuerschaltung 330/der Arbeitsspeicher-Controller/der Arbeitsspeicher-Scheduler 338 können die Reihenfolge von Operationen neu ordnen. Die Arbeitsspeicher-Steuerschaltung 330 kann sich auf der Leiterplatte oder dem Modul wie z.B. dem DIMM mit den Arbeitsspeichereinheiten befinden, ohne dass dies jedoch der Fall sein muss. Wie in den 3 und 4 gezeigt, sind die Arbeitsspeicher-Steuerschaltungen 330 bei Ausführungsformen als eine integrierte Schaltung oder ein Chip ausgebildet und befinden sich auf dem Modul 325 mit den Arbeitsspeichereinheiten 350. Bei der Ausführungsform aus 3 befindet sich auf jedem DIMM 325 eine einzige Arbeitsspeicher-Steuerschaltung 330 und steuert und verwaltet die Arbeitsspeichereinheiten 350 auf dem DIMM 325. Bei der Ausführungsform aus 4 werden auf dem Modul 325 zwei Arbeitsspeicher-Steuerschaltungen 330 mit zwei RCDs 332 gezeigt. Dabei dürfte klar sein, dass in den Arbeitsspeichermodulen 325 eine einzige Arbeitsspeicher-Steuerschaltung 330 und ein oder mehrere RCDs 332 enthalten sein können. Im Besonderen kann das Arbeitsspeichermodul 325 aus 4 mit einem RCD 332 konfiguriert sein.
  • Die Datenpufferschaltungen 340 puffern, empfangen, senden und/oder übertragen Daten zwischen dem Host, z.B. dem Prozessor 302 und den Arbeitsspeichereinheiten 350. Die Datenpufferschaltungen können auch als Datenschaltungen, DC-Schaltungen und/oder DC-Chips bezeichnet werden. Die Datenpufferschaltungen 340 können sich auf derselben Leiterplatte oder demselben Modul wie z.B. DIMM befinden wie die Arbeitsspeichereinheiten und/oder die Arbeitsspeicher-Steuerschaltungen, ohne dass dies jedoch der Fall sein muss. Bei einer Ausführungsform sind die Datenpufferschaltungen 340 auch als integrierte Schaltungen oder Chips ausgebildet und befinden sich auf dem Modul 325 mit den Arbeitsspeichereinheiten 350, wie in 3 gezeigt. Obwohl in 4 nicht veranschaulicht, können sich Datenpufferschaltungen auf dem Arbeitsspeichermodul befinden, und es kann eine einzige Datenpufferschaltung für jede Arbeitsspeichereinheit auf dem Modul und/oder eine einzige Datenpufferschaltung für jede Arbeitsspeichereinheit in einer Bank und/oder eine einzige Datenpufferschaltung für jede Arbeitsspeichereinheit in einem Kanal vorhanden sein. Auch andere Konfigurationen sind denkbar.
  • Das Arbeitsspeicher- oder Datenspeichersystem 320 kann konfiguriert sein, um Daten zu speichern und Speicherdienste einem oder mehreren Hosts wie z.B. Prozessoren bereitzustellen, die direkt oder über ein Netzwerk (z.B. über das Internet) mit dem Speichersystem 320 verbunden sein können. Das Speichersystem kann eine Schnittstelle enthalten, um eine Datenübertragung mit dem Host zu unterstützen. Im Interesse einer besseren Veranschaulichung wurden in den 3 und 4 die Datenübertragungsbusse zwischen den Arbeitsspeichereinheiten, der Arbeitsspeicher-Steuerschaltung und den Datenpufferschaltungen weggelassen.
  • In dem Arbeitsspeichersystem 320 aus 3 ist jedes Arbeitsspeichermodul 325 als ein DIMM konfiguriert und hat eine Arbeitsspeicher-Steuerschaltung bzw. einen AC-Chip 330, neun (9) Datenpufferschaltungen bzw. DC-Chips 340 und sechsunddreißig (36) Arbeitsspeichereinheiten 350 wie z.B. DRAMs (achtzehn (18) Arbeitsspeichereinheiten 350 auf jeder Seite). Die Arbeitsspeicher-Steuerschaltung 330 ist konfiguriert und programmiert, um Befehls- und Steuersignale an die Datenpufferschaltungen 340 und die Arbeitsspeichereinheiten 350 zu senden. In diesem Beispiel verwaltet jeder Arbeitsspeicher-Steuerchip bzw. AC-Chip 330 den Fluss von Daten an die und von den Arbeitsspeichereinheiten 350 auf dem Modul 325. In diesem Beispiel interagiert jede Datenpufferschaltung bzw. jeder DC-Chip 340 mit vier Arbeitsspeichereinheiten 350 und puffert Daten zwischen diesen. Die DIMMs können eine Mehrzahl von Arbeitsspeichereinheiten wie z.B. DRAMs enthalten, die optional in Gruppen oder Bänken von neun angeordnet sein können, z.B. 9, 18, 27, 36 usw., wobei jedoch auch andere Konfigurationen denkbar sind.
  • Für das Arbeitsspeichermodul 325 und das Arbeitsspeicherteilsystem 320 sind auch andere Konfigurationen denkbar. Die Architektur des Arbeitsspeichersystems kann formatiert und strukturiert sein, um DDR4- und DDRS-Standards zu unterstützen, und kann RDIMMs und LRDIMMs enthalten, obwohl die offenbarte(n) und dargelegte(n) Verfahren, Systeme und Architektur auch auf andere Konfigurationen wie z.B. zukünftige Standards anwendbar sind.
  • 3 steht im Einklang mit DDR4-Standards und enthält acht (8) x8-Arbeitsspeichereinheiten zum Speichern von Daten und eine x8-Arbeitsspeichereinheit für ECC, wobei pro Takt oder Zyklus vierundsechzig (64) Bits von Daten übertragen werden. Das heißt, es gibt acht (8) x8-Arbeitsspeichereinheiten in einer Bank für eine Datenübertragung, wobei jede Arbeitsspeichereinheit pro Zyklus oder Takt auf acht (8) Bits zugreift, so dass pro Zyklus auf insgesamt vierundsechzig (64) Bits von Daten zugegriffen wird. Wenn die Breite der Arbeitsspeichereinheiten vier Bit beträgt (x4-Arbeitsspeichereinheiten), werden sechzehn (16) x4-Arbeitsspeichereinheiten benötigt, um auf vierundsechzig (64) Datenbits pro Zyklus zuzugreifen, und zwei x4-Arbeitsspeichereinheiten, um acht (8) Bits von ECC bereitzustellen, um vierundsechzig (64) Bits von Daten abzudecken. Obwohl sich die Offenbarung aus Gründen einer einfacheren Beschreibung auf Arbeitsspeichereinheiten bezieht, die für ECC spezifiziert sind, dürfte offensichtlich sein, dass der ECC auch über mehrere Arbeitsspeichereinheiten hinweg verteilt sein könnte.
  • 4 steht im Einklang mit DDRS-Standard, und das DIMM oder Arbeitsspeichermodul enthält zehn (10) Arbeitsspeichereinheiten, die in zwei Bänken/Kanälen mit vier (4) x8-Arbeitsspeichereinheiten zum Speichern von Daten und einer x8-Arbeitsspeichereinheit für ECC, die in einer ersten Bank (und einem ersten Kanal) konfiguriert sind, sowie vier (4) x8 Arbeitsspeichereinheiten zum Speichern von Daten und einer x8-Arbeitsspeichereinheit für ECC in einer zweiten Bank (und einem zweiten Kanal) angeordnet sind. Jede der fünf (5) Arbeitsspeichereinheiten wie z.B. DDR DRAMs in jeder Bank (und jedem Kanal) hat eine acht (8) Bit breite Schnittstelle (x8), wie in 4 veranschaulicht wird. Die Breite einer jeden Bank und eines jeden Kanals unterstützt lediglich vierzig (40) Bits, und es werden pro Zyklus oder Takt zweiunddreißig (32) Bits von Daten übertragen. Wenn 4 Bit breite oder 16 Bit breite Arbeitsspeichereinheiten wie z.B. x4- oder x16-DRAMs auf dem Arbeitsspeichermodul verwendet werden, ändert sich die Anzahl von Arbeitsspeichereinheiten pro Bank und Kanal, um der zweiunddreißig (32) Bit breiten Datenübertragung pro Zyklus und dem entsprechenden ECC für jeden Zyklus oder Burst zu genügen. Wenn zum Beispiel vier (4) Bit breite Arbeitsspeichereinheiten (z.B. x4-Arbeitsspeichereinheiten) verwendet werden, werden acht (8) x4-Arbeitsspeichereinheiten für Daten verwendet, und zwei (2) x4-Arbeitsspeichereinheiten werden für ECC verwendet. Wenn sechzehn (16) Bit breite Arbeitsspeichereinheiten verwendet werden, werden zwei (2) x16-Arbeitsspeichereinheiten für Daten verwendet, und eine x16-Arbeitsspeichereinheit wird für ECC verwendet. Alternativ können bei einem Beispiel zwei (2) x4-Arbeitsspeichereinheiten oder eine x8-Arbeitsspeichereinheit für ECC verwendet werden, da nur sieben (7) Bits von ECC notwendig sind, um zweiunddreißig (32) Bits von Daten abzudecken.
  • Die Arbeitsspeicherkonfiguration aus den 3 bis 6 enthält eine x8-ECC-Arbeitsspeichereinheit für jeden Arbeitsspeicherkanal und/oder jede Arbeitsspeicherbank. Die Anzahl von ECC-Arbeitsspeichereinheiten ist von vielen Faktoren abhängig, z.B. dem Typ des verwendeten Fehlerprüf- und -korrekturcodes (ECC) und der Menge von geprüften Daten sowie der Anzahl von Datenfehlern. Der Arbeitsspeicher-Controller enthält ECC-Logik, die eine Datenkorrektur für Arbeitsspeicherfehler bereitstellt. Die ECC-Logik verwendet herkömmliche Methoden. Allgemein sind sieben (7) Bits für ECC erforderlich, um zweiunddreißig (32) Bits von Daten abzudecken, und acht (8) Bits sind für ECC erforderlich, um vierundsechzig (64) Bits von Daten in einem Takt abzudecken.
  • 5 veranschaulicht eine Bank von Arbeitsspeichereinheiten, die wie in 4 gezeigt konfiguriert sind, wobei ein schlechtes oder fehlerhaftes Datenbit 121 einer Ersatz-Bitspur zugeordnet wird. Die Spaltenüberschrift b00 bis b31 in 5 gibt zweiunddreißig (32) Bits von Daten an, die in einem Zyklus oder Takt gelesen werden, und die Spaltenüberschrift e00 bis e06 gibt die sieben (7) Bits an, die in einem Zyklus oder Takt für ECC verwendet werden. Da die Daten, auf die pro Zyklus oder Takt zugegriffen wird, zweiunddreißig (32) Bits betragen, sind sieben (7) Bits in der Bank (und in dieser Darstellung dem Kanal) erforderlich, um den ECC zu verarbeiten, so dass für ECC eine zusätzliche x8-Arbeitsspeichereinheit benötigt wird. Somit ist die Bank und/oder der Kanal vierzig (40) Bit breit. Konkret veranschaulicht 5 eine Darstellung der Bits bei einer Operation wie z.B. einer Lese- oder Schreiboperation in einer Bank von fünf (5) Arbeitsspeichereinheiten, von denen jede einen acht (8) Bit breiten Datenpfad aufweist, z.B. eine x8-Arbeitsspeichereinheit, wobei vier (4) Arbeitsspeichereinheiten einer Bank (und einem Kanal) zugehörig und angeordnet sind, um Daten zu speichern, und eine x8-Arbeitsspeichereinheit für ECC verwendet wird, wobei das System für eine Burst-Länge von sechzehn (BL 16) konfiguriert ist. Dem Fachmann sollte klar sein, dass im Interesse einer einfacheren Beschreibung der ECC als auf einer Arbeitsspeichereinheit oder einem Chip enthalten bezeichnet und beschrieben wird, dass der ECC jedoch nicht darauf beschränkt ist, auf einer Arbeitsspeichereinheit oder einem Chip enthalten zu sein, und dass der ECC auch über mehrere Arbeitsspeichereinheiten oder Chips hinweg verteilt sein könnte.
  • Da in jedem Zyklus oder Takt zweiunddreißig (32) Bits übertragen werden und sieben (7) Bits für die ECC-Abdeckung benötigt werden, bleibt in einer vierzig (40) Bit breiten Bank/einem vierzig (40) Bit breiten Kanal ein Bit übrig. Der Kanal hat somit ein zusätzliches Bit übrig, das in einem Takt oder Zyklus nicht für Daten oder ECC verwendet wird. Die Spaltenüberschrift s00 aus 5 veranschaulicht das zusätzliche Bit als eine Ersatz-Bitspur. Die Spaltenüberschrift „Takt“ in 5 gibt den Takt (Nummer des Takts) in der Burst-Operation an und zeigt in diesem Beispiel eine Burst-Länge von sechzehn (BL 16) in einer Operation wie z.B. einer Lese- oder Schreiboperation, wobei die sechzehn Takte in hexadezimaler Schreibweise (0 und 9 und A bis F) bezeichnet sind. In 5 wird das Bit 121 als fehlerhaft erkannt und der Ersatz-Bitspur s00 neu zugeordnet. Der Wert, die Informationen oder Daten, die in dem Burst für b121 vorgesehen sind (in Takt 3 als Bit b25 gezeigt), werden in das Bit S in der Ersatz-Bitspur s00 geschrieben oder diesem neu zugeordnet. Das heißt, der Wert, die Informationen oder Daten, die in das Bit 121 in dem Burst (Bit b25 in Takt 3) geschrieben werden sollten, werden nun in das Bit S neu geschrieben oder diesem zugeordnet (Bit s00 in Takt 0). Die Position, die das schlechte Bit oder den Fehler angibt, wird in die Bits L0 bis L8 in der Ersatz-Bitspur s00 geschrieben. Es gibt zahlreiche Arten, die Position des fehlerhaften oder falschen Bits kenntlich zu machen, z.B. durch Nennung der Bitnummer in dem Burst (z. B. Bit 121) oder durch Angabe der Bit- und Taktnummer (z.B. Bit b25 in Takt 3). In dem Beispiel aus 5 wird die Position von Bit 121 (z.B. Bit b25 in Takt 3) in die Bits L8:L0 (L8:L0 = 0,0111,1001 S = b121 guter Wert) in der Ersatz-Bitspur s00 geschrieben.
  • Zusätzlich wird in der Ersatz-Bitspur s00 auch ECC zur Abdeckung der Daten und Position des fehlerhaften Bits berücksichtigt, wobei dies in 5 als E0:E5 gezeigt wird. Somit stellen die Bits in der Ersatz-Bitspur s00 in den Takten A:F eine ECC-Abdeckung für das Datenbit S in Takt 0 und die Positionsinformationen in den Bits L8:L0 in den Takten 1 bis 9 bereit. Sechs (6) ECC-Bits können sechzehn (16) Bits von Daten/Informationen in der Ersatz-Bitspur s00 abdecken. Wenn somit ein schlechtes oder fehlerhaftes Bit erkannt wird, werden sein Wert und seine Positionsinformationen in die Ersatz-Bitspur s00 geschrieben. In nachfolgenden Operationen verwendet der Arbeitsspeicher-Controller die Informationen/Daten in dem Ersatzbit S anstatt des schlechten oder fehlerhaften Bits. Der Arbeitsspeicher-Controller verwendet die Informationen in der Ersatz-Bitspur s00 in den Bits L8:L0 (z.B. Bit s00 in den Takten 1 bis 9), um die Position des schlechten Bits zu identifizieren und festzustellen, wann/wo der Wert aus dem Ersatzbit S verwendet werden soll. In dem Beispiel aus 5 verwendet der Arbeitsspeicher-Controller beim Lesen von Bit 121 den Wert in dem Bit S. Der Arbeitsspeicher-Controller verwendet die Positionsinformationen in den Bits L8:L0 in der Ersatz-Bitspur s00, um zu wissen, wann/wo der Wert, die Daten oder Informationen, die sich in dem Bit S (Bit s00 in Takt 0) befinden, verwendet werden sollen. Anders ausgedrückt verwendet der Arbeitsspeicher-Controller die Daten in dem Bit S in der Ersatz-Bitspur s00, wenn der Arbeitsspeicher-Controller auf die Adresse der Arbeitsspeichereinheit zugreift, die durch die Bits L8:L0 in der Ersatz-Bitspur s00 identifiziert werden.
  • 6 veranschaulicht eine weitere Operation, zum Beispiel eine Leseoperation, in einer Transaktion mit sechzehn (16) Takten. 6 bezieht sich auf eine nachfolgende Operation in einer Bank/einem Kanal, die ebenso wie in 5 angeordnet sind, wobei b00 bis b31 für Datenbits steht, e00 bis e06 für ECC für die zweiunddreißig (32) Bits von Daten steht, und s00 für die Ersatz-Bitspur steht, die in einer Bank/einem Kanal mit fünf (5) x8-Arbeitsspeichereinheiten (z.B. vier x8-Arbeitsspeichereinheiten für Daten und einer x8-Arbeitsspeichereinheit für die sieben (7) Bits zur Abdeckung von ECC-Anforderungen) verbleibt. Jeder Takt oder Zyklus in einer Operation weist ein Ersatzbit auf, das dazu verwendet wird, Informationen aus einem Fehler wie z.B. einem schlechten oder fehlerhaften Bit neu zu schreiben. 6 stellt ein in einer nachfolgenden Operation erkanntes schlechtes Bit 511 dar, das in die Ersatz-Bitspur s00 neu geschrieben wird, wobei die Daten, Informationen oder der Wert, die für Bit 511 vorgesehen sind, in das Bit S in der Ersatz-Bitspur neu geschrieben werden, wobei die Positionsinformationen für das schlechte Bit 511 in die Bits L0:L8 (L8:L0 = 1,111, 1111, S = b511 guter Wert) geschrieben werden, und die ECC-Abdeckung für das Bit S und die Positionsbits L8:L0 durch E0 bis E5 in der Ersatz-Bitspur S00 bereitgestellt wird.
  • Es dürfte klar sein, dass das in die Ersatz-Bitspur s00 geschriebene schlechte oder fehlerhafte Bit, z.B. der Fehler, in einer anderen Operation dasselbe Bit (Position) sein kann oder dass es in einer anderen Operation ein anderes Bit (Position) sein kann. Das heißt, das Bit, wo der Fehler in den Arbeitsspeichereinheit auftritt, kann bei jeder Operation dasselbe Bit sein, d.h. es kann sich bei jeder Operation in derselben Position in den Arbeitsspeichereinheiten befinden, oder es kann ein anderes Bit, d.h. eine andere Position, sein. Unabhängig von der Position kann das schlechte Bit in nachfolgenden Operationen in die Ersatz-Bitspur neu geschrieben und dieser zugeordnet werden. Es dürfte ebenfalls klar sein, dass 5 und 6 Beispiele sind, die auf eine DDR5-BL-16-Operation (Burst-Länge 16) mit einem zweiunddreißig (32) Bit breiten Datenpfad (Schnittstelle) anwendbar sein können, bei der eine ECC-Abdeckung für die zweiunddreißig (32) Bits von Daten gegeben ist.
  • Für das System, die Architektur und die Methoden zum ersatzweisen Speichern von Bits, die hier offenbart werden, können auch andere Konfigurationen verwendet werden, die eine oder mehrere Ersatz-Bitspuren bereitstellen. Als ein Beispiel sind in einem System oder einer Konfiguration, in dem bzw. der die zwei Kanäle aus 4 so miteinander verriegelt oder verbunden werden, dass zehn (10) x8-Arbeitsspeichereinheiten für eine Operation mit vierundsechzig (Bits) von Daten für jeden Takt oder Zyklus verwendet werden, sechzehn (16) Bits für einen ECC-Arbeitsspeicher verfügbar, um vierundsechzig (64) Datenbits abzudecken. In diesem Beispiel sind nur acht (8) Bits von ECC notwendig, um vierundsechzig (64) Bits von Daten abzudecken, was eine Mehrzahl von Ersatz-Bitspuren für ein Neuzuordnen oder Neuschreiben von schlechten, fehlerhaften oder falschen Bits übrig lässt. Andere Beispiele können ein Hinzufügen von zusätzlichen Einheiten enthalten. Obwohl die Beispiele aus den 5 und 6 x8-Arbeitsspeichereinheiten zeigen, dürfte ebenfalls offensichtlich sein, dass das Verfahren und die Offenbarung auch auf x4- oder x16-Arbeitsspeichereinheiten Anwendung finden können.
  • 7 ist ein beispielhafter Ablaufplan gemäß einer Ausführungsform, der ein Verfahren zum Verwalten von Bitfehlern in einem Arbeitsspeichersystem, das Arbeitsspeichereinheiten und/oder Arbeitsspeichermodule wie z.B. DIMMs enthält, gemäß einer Ausführungsform der vorliegenden Offenbarung veranschaulicht und beschreibt. Obwohl das Verfahren 700 aus Gründen der Übersichtlichkeit und nicht mit der Absicht beschrieben wird, die Offenbarung darauf zu beschränken, dass sie lediglich eine Folge und/oder eine Anzahl von Schritten aufweist, sollte klar sein, dass der Prozess nicht als eine Folge von Schritten durchgeführt werden muss und/oder die Schritte nicht in der Reihenfolge durchgeführt werden müssen, die in Bezug auf 7 gezeigt und beschrieben wird, sondern dass der Prozess integriert sein kann und/oder mehrere Schritte gemeinsam und gleichzeitig durchgeführt werden können oder dass die Schritte in der offenbarten Reihenfolge oder in einer alternativen Reihenfolge durchgeführt werden können.
  • Das Verfahren 700 zum Verwalten von Bitfehlern in einem Arbeitsspeichersystem enthält in 710 ein Erkennen eines Fehlers in einer ersten Arbeitsspeicher-Bitposition in einer Operation wie z.B. einer Lese- oder Schreiboperation in einer Mehrzahl von Arbeitsspeichereinheiten, die vorzugsweise einer Bank zugehörig sind oder als eine solche gruppiert oder angeordnet sind. Die Mehrzahl von Arbeitsspeichereinheiten kann auch als ein Kanal angeordnet sein, wie in 4 gezeigt wird. In einem Beispiel kann eine Detektorschaltung verwendet werden, um den Bitfehler zu erkennen. Die Detektorschaltung kann Teil der Arbeitsspeicher-Steuerschaltung oder des Arbeitsspeicher-Controllers sein. Alternativ kann sich die Detektorschaltung an anderen Stellen befinden oder Teil anderer Schaltungen in dem System sein. Bei einer Ausführungsform zum Erkennen von Fehlern wird der ECC-Code für einen Takt mit Daten für diesen Takt verglichen. Eine ECC-Codierung kann eine Einzelbitfehlerkorrektur und Doppelbitfehlererkennung (Single Error Correction, Dual Error Detection (SECDED) erlauben. Wenn ein Bit unter Verwendung einer ECC-Codierung als inkorrekt gelöscht wird, wird das Bit korrigiert und der Ersatzspur neu zugeordnet. Durch ein ersatzweises Speichern eines schlechten Bits ermöglicht der Algorithmus eine bessere Abdeckung des SECDED-ECC-Codes, wobei ein bekanntermaßen schlechtes Bit in der Ersatzspur dupliziert wird, die SECDED-ECC-Codierung das schlechte Bit nicht korrigieren muss und dazu verwendet werden kann, andere ausfallende Bits zu korrigieren.
  • Die Daten, die in der Arbeitsspeicher-Bitposition, wo in 720 der erste Fehler erkannt wurde, gespeichert werden sollen, können in der ersten Operation in ein Ersatzbit in einer Ersatz-Bitspur geschrieben oder diesem neu zugeordnet werden. Logik zum Verwalten einer Fehlerantwort kann in der Arbeitsspeicher-Steuerschaltung oder dem Arbeitsspeicher-Controllers enthalten sein. Logik zum Verwalten einer Fehlerantwort kann in dem Detektor oder der Detektorschaltung enthalten sein. Die Adresspositionsinformationen, welche die Position des erkannten ersten Bitfehlers identifizieren, können in 730 ebenfalls in der Ersatz-Bitspur gespeichert werden. Fehlerkorrekturcode für die in dem Ersatzbit enthaltenen Informationen und vorzugsweise für die Positionsinformationen, die den fehlerhaften oder erkannten Bitfehler identifizieren, kann in 740 ebenfalls in die Ersatz-Bitspur geschrieben (darin gespeichert) werden. In einer nachfolgenden Operation greift der Arbeitsspeicher-Controller auf den Wert des Ersatzbits zu, liest ihn beispielsweise, wenn er sich anschickt, auf das schlechte Bit zuzugreifen, und verwendet die in die Ersatz-Bitspur in den Bits L8:L0 geschriebenen Positionsinformationen, um die Position des schlechten Bits zu identifizieren. Bei einer Ausführungsform stellt das Verfahren eine Methode oder einen Prozess zum ersatzweisen Speichern bereit, wobei Daten aus einer fehlerhaften Region eines Arbeitsspeichers wie z.B. einem ausgefallenen Bit verschoben und in einer neuen Arbeitsspeicherposition oder -region wie z.B. einem Ersatzbit gespeichert werden, wobei nachfolgende Zugriffe auf die Daten aus der neuen Position und nicht aus der ausgefallenen Position abgerufen werden.
  • In einer zweiten, anderen Operation, die nach der ersten Operation stattfindet, kann in 750 ein zweiter Fehler in einer Arbeitsspeicher-Bitposition erkannt werden. Der zweite Fehler kann in derselben Arbeitsspeicher-Bitposition wie der erste Fehler oder in einer anderen Arbeitsspeicher-Bitposition auftreten. Die Daten, die in der Arbeitsspeicher-Bitposition, wo der zweite Fehler erkannt wurde, gespeichert werden sollen, können in 760 in dieser Operation in ein Ersatzbit in einer Ersatz-Bitspur geschrieben oder diesem neu zugeordnet werden.
  • Die Position des zweiten Bitfehlers kann in 770 während der zweiten, anderen Operation in der Ersatz-Bitspur gespeichert werden. In 780 kann außerdem Fehlerkorrekturcode für das Ersatzbit, das in der zweiten, anderen Operation der Ersatz-Bitspur neu zugeordnet wird, und vorzugsweise für die Position, die das fehlerhafte oder erkannte Fehlerbit identifiziert, in der Ersatz-Bitspur gespeichert werden. In einer nachfolgenden Operation greift der Arbeitsspeicher-Controller auf den Wert des Ersatzbits zu, liest ihn beispielsweise, wenn er sich anschickt, das schlechte Bit zu lesen, und verwendet die in die Ersatz-Bitspur in die Bits L8:L0 geschriebenen Positionsinformationen, um die Position des schlechten Bits zu identifizieren.
  • Es dürfte offensichtlich sein, dass das offenbarte System, die offenbarte Architektur und der offenbarte Prozess verwendet werden können, wenn in einem bestimmten Takt (einer Zeile, wie in den Beispielfiguren gezeigt) mehrere Bitausfälle auftreten, da die Ersatz-Bitspur dazu verwendet werden kann, einen oder mehrere Bitausfälle in dem Takt zu verarbeiten.
  • Offenbart wird ein Arbeitsspeichersystem zum Speichern von Daten, wobei das Arbeitsspeichersystem eine Mehrzahl von Arbeitsspeichereinheiten, die konfiguriert sind, um Daten zu speichern, wobei jede Arbeitsspeichereinheit eine Mehrzahl von Bits aufweist, wobei die Arbeitsspeichereinheiten konfiguriert und angeordnet sind, um als eine Bank zusammenzuwirken, um auf eine Anforderung zu antworten; eine Arbeitsspeicher-Steuerschaltung, die der Mehrzahl von Arbeitsspeichereinheiten zugehörig und konfiguriert ist, um Befehls- und Steuersignale an die Mehrzahl von Arbeitsspeichereinheiten auszugeben; einen Detektor zum Erkennen eines Bitfehlers in einer Operation; und einen Controller zum Neuzuordnen des Bitfehlers zu einer Ersatz-Bitspur als Reaktion darauf enthält, dass der Detektor den Bitfehler erkennt. Bei einem Aspekt befinden sich der Detektor, der Controller und die Arbeitsspeicher-Steuerschaltung auf demselben Chip. Die Mehrzahl von Arbeitsspeichereinheiten kann sich auf einem Dual-in-line-Arbeitsspeichermodul (DIMM) befinden, und die Arbeitsspeicher-Steuerschaltung befindet sich auf dem DIMM. Bei einer Ausführungsform kann das DIMM des Weiteren Datenpufferschaltungen enthalten.
  • Bei einem Aspekt kann das System mindestens ein DIMM enthalten, das eine Mehrzahl von Arbeitsspeichereinheiten wie z.B. mindestens zehn (10) Arbeitsspeichereinheiten enthält, wobei fünf (5) Arbeitsspeichereinheiten eine erste Bank bilden und fünf (5) Arbeitsspeichereinheiten eine zweite Bank bilden und wobei des Weiteren zweiunddreißig (32) Bits pro Bank verwendet werden, um Daten zu speichern. Bei einer Ausführungsform werden sieben (7) Bits pro Bank für einen Fehlerkorrekturcode verwendet, und mindestens ein Bit wird zum Neuzuordnen eines Fehlers verwendet. Gemäß einer Ausführungsform bilden die fünf Arbeitsspeichereinheiten der ersten Bank einen Kanal, der vierzig Bit breit ist. Die in das Ersatzbit (und/oder die Ersatz-Bitspur) neu geschriebenen Informationen können die Daten des Bits, wo der Fehler erkannt wurde, die Position des Bits (z.B. die Bitnummer in dem Burst oder die Bitnummer in dem Takt und die Taktnummer), wo der Fehler erkannt wurde, sowie den Fehlerkorrekturcode für das Ersatzbit und die Position des Bits enthalten, wo der Fehler erkannt wurde.
  • Bei einem Aspekt stellt die Mehrzahl von Arbeitsspeichereinheiten eine Mehrzahl von Ersatz-Bitspuren bereit, um Bitfehler neu zuzuordnen. Bei einer Ausführungsform kann die Arbeitsspeicher-Steuerschaltung konfiguriert sein, um die Daten in dem Ersatzbit in der Ersatz-Bitspur und die Positionsinformationen in der Ersatz-Bitspur zu lesen, um das Bit zu identifizieren, um die in dem Ersatzbit in der Ersatz-Bitspur gespeicherten Daten zu verwenden.
  • Bei einer weiteren Ausführungsform wird ein Arbeitsspeichersystem zum Speichern von Daten offenbart, wobei das Arbeitsspeichersystem eine Mehrzahl von Arbeitsspeichereinheiten, die konfiguriert sind, um Daten zu speichern, wobei jede Arbeitsspeichereinheit eine Mehrzahl von Bits aufweist, wobei die Arbeitsspeichereinheiten konfiguriert und angeordnet sind, um zum Durchführen einer Operation als eine Bank zusammenzuwirken, sowie eine Arbeitsspeicher-Steuerschaltung aufweist, die der Mehrzahl von als eine Bank konfigurierten Arbeitsspeichereinheiten zugehörig und konfiguriert ist, um Signale an die Mehrzahl von Arbeitsspeichereinheiten auszugeben, wobei die Arbeitsspeicher-Steuerschaltung Logikschaltungen enthält, die konfiguriert sind, um (i) ein ausfallendes Bit während einer Operation zu erkennen; (ii) die Daten aus dem ausfallenden Bit in der Operation in eine Einzel-Ersatz-Bitspur neu zu schreiben; und (iii) die in die Ersatz-Bitspur neu geschriebenen Daten für das ausfallende Bit zu lesen. Die Arbeitsspeicher-Steuerschaltung kann einen Arbeitsspeicher-Controller enthalten, der konfiguriert ist, um die Positionsadresse des ausfallenden Bits in die Ersatz-Bitspur zu schreiben, und kann bei einem weiteren Aspekt ECC für die Daten und Positionsinformationen enthalten, die in die Ersatz-Bitspur geschrieben werden.
  • Bei einer weiteren Ausführungsform wird ein Verfahren zum Verwalten von Bitfehlern in einem Arbeitsspeicherteilsystem offenbart, wobei das Verfahren ein Erkennen eines Fehlers in einer ersten Arbeitsspeicher-Bitposition in einer Mehrzahl von Arbeitsspeichereinheiten in einer ersten Operation; und ein Neuzuordnen der Daten, die in der Arbeitsspeicher-Bitposition, wo der erste Fehler erkannt wurde, gespeichert werden sollen, zu einer Ersatz-Bitspur enthält. Bei einem Aspekt des Verfahrens werden die Daten, die in der Arbeitsspeicher-Bitposition, wo der erste Fehler erkannt wurde, gespeichert werden sollen, einem Ersatzbit in der Ersatz-Bitspur neu zugeordnet. Das Neuzuordnen kann ein Speichern von Positionsinformationen, welche die Position des erkannten Bitfehlers identifizieren, und von Fehlerkorrekturcode für das Ersatzbit in der Ersatz-Bitspur enthalten. Ein Einzelfehler in einer ersten Operation kann in eine Einzel-Bitspur geschrieben werden. Bei einem Aspekt ist die erste Operation eine Leseoperation, und wenn während der Leseoperation ein Fehler erkannt wird, weist das Verfahren des Weiteren ein Durchführen einer Schreiboperation auf, wobei das System, vorzugsweise der Arbeitsspeicher-Controller, die Informationen/Daten aus der Bitposition, wo der Fehler erkannt wurde, in die Ersatz-Bitspur schreibt. Bei einem weiteren Aspekt enthält das Verfahren eine Leseoperation, und gültige Daten werden aus der Ersatz-Bitspur gelesen, die ein Bit von Daten, ein oder mehrere Bits von Positionsinformationen für das Bit von Daten und ein oder mehrere Bits von Fehlerkorrekturcode enthält, die das Datenbit und die Positionsbits schützen. Bei einem weiteren Aspekt enthält das Verfahren eine Leseoperation, und gültige Daten werden aus der Ersatz-Bitspur gelesen, die ein Ersatzbit enthält, wobei dieses Bit unter Verwendung von in der Ersatz-Bitspur gespeicherten Positionsinformationen den Daten, die durch das System, vorzugsweise den Arbeitsspeicher-Controller, gelesen werden, neu zugeordnet wird, um die ursprünglichen, nicht ersatzweise gespeicherten Daten wiederherzustellen.
  • Bei Ausführungsformen kann das Verfahren des Weiteren in einer anderen Operation ein Erkennen eines zweiten Fehlers in einer Arbeitsspeicher-Bitposition, wobei der zweite Fehler in mindestens einer aus der Gruppe auftritt, bestehend aus derselben Arbeitsspeicher-Bitposition wie der erste Bitfehler und einer anderen Arbeitsspeicher-Bitposition; und ein Neuzuordnen der Daten, die in der Arbeitsspeicher-Bitposition gespeichert werden sollen, wo der zweite Fehler erkannt wurde, zu einer Einzel-Bit-Ersatzspur in dieser anderen Operation enthalten. Bei einem Aspekt kann das Verfahren eine Arbeitsspeicherbank mit einer Mehrzahl von Arbeitsspeichereinheiten wie z.B. fünf (5) Arbeitsspeichereinheiten enthalten, wobei zweiunddreißig (32) Bits konfiguriert sind, um Daten zu speichern, und sieben (7) Bits sind für Fehlerkorrekturcode vorgesehen, und ein Bit dient zum Verwalten und/oder Neuzuordnen von Fehlern.
  • Bei einer weiteren Ausführungsform wird ein Computerprogrammprodukt zum Verwalten von Fehlern in einem Arbeitsspeichersystem offenbart, wobei das Computerprogrammprodukt ein durch einen Computer lesbares Speichermedium mit darin enthaltenen Programmanweisungen aufweist, wobei die Programmanweisungen durch ein Arbeitsspeichersystem ausführbar sind, um das Arbeitsspeichersystem zum Durchführen eines Verfahrens zu veranlassen, wobei das Arbeitsspeichersystem eine Arbeitsspeicher-Steuerschaltung und eine Mehrzahl von Arbeitsspeichereinheiten aufweist, wobei das Verfahren ein Erkennen eines Fehlers in einem ersten Arbeitsspeicherbit in der Mehrzahl von Arbeitsspeichereinheiten und ein Neuzuordnen der Daten aus dem Arbeitsspeicherbit, wo der erste Fehler erkannt wurde, zu einer Ersatz-Bitspur aufweist.
  • Obwohl die oben beschriebenen veranschaulichenden Ausführungsformen vorzugsweise in Hardware realisiert werden, wie z.B. in funktionellen Einheiten eines Prozessors, können verschiedene Aspekte der veranschaulichenden Ausführungsformen auch in Software realisiert werden. Zum Beispiel dürfte offensichtlich sein, dass jeder Block der Ablaufplandarstellung aus 7 sowie Kombinationen von Blöcken in der Ablaufplandarstellung durch Computerprogrammanweisungen realisiert werden können. Diese Computerprogrammanweisungen können einem Prozessor oder einer anderen programmierbaren Datenverarbeitungsvorrichtung bereitgestellt werden, um eine Maschine zu erzeugen, so dass die in dem Prozessor bzw. der anderen programmierbaren Datenverarbeitungsvorrichtung ausgeführten Anweisungen ein Mittel zum Realisieren der in dem Block bzw. den Blöcken des Ablaufplans angegebenen Funktionen erzeugen. Diese Computerprogrammanweisungen können auch in einem durch einen Computer lesbaren Arbeitsspeicher oder Speichermedium gespeichert werden, das einen Prozessor oder eine anderweitige programmierbare Datenverarbeitungsvorrichtung anweisen kann, auf eine bestimmte Art und Weise zu funktionieren, so dass die in dem durch einen Computer lesbaren Arbeitsspeicher oder Speichermedium gespeicherten Anweisungen einen Gegenstand hervorbringen, der Anweisungsmittel aufweist, welche die in dem Block bzw. den Blöcken des Ablaufplans angegebenen Funktionen realisieren. Entsprechend unterstützen Blöcke der Ablaufplandarstellung Kombinationen eines Mittels zum Durchführen der angegebenen Funktionen, Kombinationen von Schritten zum Durchführen der angegebenen Funktionen und Programmanweisungsmittel zum Durchführen der angegebenen Funktionen. Ebenfalls dürfte klar sein, dass jeder Block der Ablaufplandarstellung sowie Kombinationen von Blöcken in der Ablaufplandarstellung durch Spezial-Computersysteme auf der Grundlage von Hardware, welche die angegebenen Funktionen oder Schritte durchführen, oder durch Kombinationen von Spezial-Hardware und Computerbefehlen realisiert werden kann bzw. können.
  • Bei der vorliegenden Erfindung kann es sich um ein System, ein Verfahren und/oder ein Computerprogrammprodukt handeln. Das Computerprogrammprodukt kann (ein) durch einen Computer lesbare(s) Speichermedium (oder -medien) enthalten, auf dem/denen durch einen Computer lesbare Programmanweisungen gespeichert sind, um einen Prozessor dazu zu veranlassen, Aspekte der vorliegenden Erfindung auszuführen.
  • Bei dem durch einen Computer lesbaren Speichermedium kann es sich um eine physische Einheit handeln, die Anweisungen zur Verwendung durch eine Anweisungsausführungseinheit enthalten und speichern kann. Bei dem durch einen Computer lesbaren Speichermedium kann es sich zum Beispiel um eine elektronische Speichereinheit, eine magnetische Speichereinheit, eine optische Speichereinheit, eine elektromagnetische Speichereinheit, eine Halbleiterspeichereinheit oder jede geeignete Kombination daraus handeln, ohne auf diese beschränkt zu sein. Zu einer nicht erschöpfenden Liste spezifischerer Beispiele des durch einen Computer lesbaren Speichermediums gehören die Folgenden: eine tragbare Computerdiskette, eine Festplatte, ein RAM, ein ROM, ein löschbarer programmierbarer Nur-Lese-Speicher (EPROM bzw. Flash-Speicher), ein statischer Direktzugriffsspeicher (SRAM), ein tragbarer CD-ROM, eine DVD (Digital Versatile Disc), ein Speicher-Stick, eine Diskette, eine mechanisch kodierte Einheit wie zum Beispiel Lochkarten oder erhabene Strukturen in einer Rille, auf denen Anweisungen gespeichert sind, und jede geeignete Kombination daraus. Ein durch einen Computer lesbares Speichermedium soll in der Verwendung hierin nicht als flüchtige Signale an sich aufgefasst werden, wie zum Beispiel Funkwellen oder andere sich frei ausbreitende elektromagnetische Wellen, elektromagnetische Wellen, die sich durch einen Wellenleiter oder ein anderes Übertragungsmedium ausbreiten (z.B. durch ein Lichtwellenleiterkabel geleitete Lichtimpulse) oder durch einen Draht übertragene elektrische Signale.
  • Hierin beschriebene, durch einen Computer lesbare Programmanweisungen können von einem durch einen Computer lesbaren Speichermedium auf jeweilige Datenverarbeitungs-/Verarbeitungseinheiten oder über ein Netzwerk wie zum Beispiel das Internet, ein lokales Netzwerk, ein Weitverkehrsnetzwerk und/oder ein drahtloses Netzwerk auf einen externen Computer oder eine externe Speichereinheit heruntergeladen werden. Das Netzwerk kann Kupferübertragungskabel, Lichtwellenübertragungsleiter, drahtlose Übertragung, Leitwegrechner, Firewalls, Vermittlungseinheiten, Gateway-Computer und/oder Edge-Server aufweisen. Eine Netzwerkadapterkarte oder Netzwerkschnittstelle in jeder Datenverarbeitungs-/Verarbeitungseinheit empfängt durch einen Computer lesbare Programmanweisungen aus dem Netzwerk und leitet die durch einen Computer lesbaren Programmanweisungen zur Speicherung in einem durch einen Computer lesbaren Speichermedium innerhalb der entsprechenden Datenverarbeitungs-/Verarbeitungseinheit weiter.
  • Bei durch einen Computer lesbaren Programmanweisungen zum Ausführen von Arbeitsschritten der vorliegenden Erfindung kann es sich um Assembler-Anweisungen, ISA-Anweisungen (Instruction-Set-Architecture), Maschinenanweisungen, maschinenabhängige Anweisungen, Mikrocode, Firmware-Anweisungen, zustandssetzende Daten oder entweder Quellcode oder Objektcode handeln, die in einer beliebigen Kombination aus einer oder mehreren Programmiersprachen geschrieben werden, darunter objektorientierte Programmiersprachen wie Smalltalk, C++ o.ä. sowie herkömmliche prozedurale Programmiersprachen wie die Programmiersprache „C“ oder ähnliche Programmiersprachen. Die durch einen Computer lesbaren Programmanweisungen können vollständig auf dem Computer des Benutzers, teilweise auf dem Computer des Benutzers, als eigenständiges Software-Paket, teilweise auf dem Computer des Benutzers und teilweise auf einem entfernt angeordneten Computer oder vollständig auf dem entfernt angeordneten Computer oder Server ausgeführt werden. In letzterem Fall kann der entfernt angeordnete Computer mit dem Computer des Benutzers durch eine beliebige Art Netzwerk verbunden sein, darunter ein lokales Netzwerk (LAN) oder ein Weitverkehrsnetzwerk (WAN), oder die Verbindung kann mit einem externen Computer hergestellt werden (zum Beispiel über das Internet unter Verwendung eines Internet-Diensteanbieters). In einigen Ausführungsformen können elektronische Schaltungen, darunter zum Beispiel programmierbare Logikschaltungen, im Feld programmierbare Gatter-Anordnungen (FPGA) oder programmierbare Logikanordnungen (PLA, Programmable Logic Arrays) die durch einen Computer lesbaren Programmanweisungen ausführen, indem sie Zustandsinformationen der durch einen Computer lesbaren Programmanweisungen nutzen, um die elektronischen Schaltungen zu personalisieren, um Aspekte der vorliegenden Erfindung durchzuführen.
  • Aspekte der vorliegenden Erfindung sind hierin unter Bezugnahme auf Ablaufpläne und/oder Blockschaubilder von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten gemäß Ausführungsformen der Erfindung beschrieben. Es wird darauf hingewiesen, dass jeder Block der Ablaufpläne und/oder der Blockschaubilder sowie Kombinationen von Blöcken in den Ablaufplänen und/oder den Blockschaubildern mittels durch einen Computer lesbare Programmanweisungen ausgeführt werden können.
  • Diese durch einen Computer lesbaren Programmanweisungen können einem Prozessor eines Universalcomputers, eines Spezialcomputers oder einer anderen programmierbaren Datenverarbeitungsvorrichtung bereitgestellt werden, um eine Maschine zu erzeugen, so dass die über den Prozessor des Computers bzw. der anderen programmierbaren Datenverarbeitungsvorrichtung ausgeführten Anweisungen ein Mittel zur Umsetzung der in dem Block bzw. den Blöcken der Ablaufpläne und/oder der Blockschaubilder festgelegten Funktionen/Schritte erzeugen. Diese durch einen Computer lesbaren Programmanweisungen können auch auf einem durch einen Computer lesbaren Speichermedium gespeichert sein, das einen Computer, eine programmierbare Datenverarbeitungsvorrichtung und/oder andere Einheiten so steuern kann, dass sie auf eine bestimmte Art funktionieren, so dass das durch einen Computer lesbare Speichermedium, auf dem Anweisungen gespeichert sind, ein Herstellungsprodukt aufweist, darunter Anweisungen, welche Aspekte der/des in dem Block bzw. den Blöcken des Ablaufplans und/oder der Blockschaubilder angegebenen Funktion/Schritts umsetzen.
  • Die durch einen Computer lesbaren Programmanweisungen können auch auf einen Computer, eine andere programmierbare Datenverarbeitungsvorrichtung oder eine andere Einheit geladen werden, um das Ausführen einer Reihe von Prozessschritten auf dem Computer bzw. der anderen programmierbaren Vorrichtung oder anderen Einheit zu verursachen, um einen durch einen Computer umgesetzten Prozess zu erzeugen, so dass die auf dem Computer, einer anderen programmierbaren Vorrichtung oder einer anderen Einheit ausgeführten Anweisungen die in dem Block bzw. den Blöcken der Ablaufpläne und/oder der Blockschaubilder festgelegten Funktionen/Schritte umsetzen.
  • Die Ablaufpläne und die Blockschaubilder in den Figuren veranschaulichen die Architektur, die Funktionalität und den Betrieb möglicher Ausführungen von Systemen, Verfahren und Computerprogrammprodukten gemäß verschiedenen Ausführungsformen der vorliegenden Erfindung. In diesem Zusammenhang kann jeder Block in den Ablaufplänen oder Blockschaubildern ein Modul, ein Segment oder einen Teil von Anweisungen darstellen, die eine oder mehrere ausführbare Anweisungen zur Ausführung der bestimmten logischen Funktion(en) aufweisen. In einigen alternativen Ausführungen können die in dem Block angegebenen Funktionen in einer anderen Reihenfolge als in den Figuren gezeigt stattfinden. Zwei nacheinander gezeigte Blöcke können zum Beispiel im Wesentlichen gleichzeitig ausgeführt werden, oder die Blöcke können manchmal je nach entsprechender Funktionalität in umgekehrter Reihenfolge ausgeführt werden. Es ist ferner anzumerken, dass jeder Block der Blockschaubilder und/oder der Ablaufpläne sowie Kombinationen aus Blöcken in den Blockschaubildern und/oder den Ablaufplänen durch spezielle auf Hardware beruhende Systeme umgesetzt werden können, welche die festgelegten Funktionen oder Schritte durchführen, oder Kombinationen aus Spezial-Hardware und Computeranweisungen ausführen.
  • Darüber hinaus kann ein System gemäß verschiedenen Ausführungsformen einen Prozessor und Logik enthalten, die mit dem Prozessor integriert und/oder durch diesen ausführbar ist, wobei die Logik so konfiguriert sein kann, dass sie einen oder mehrere der hier genannten Prozessschritte ausführt. Dabei bedeutet „integriert“, dass der Prozessor über Logik verfügt, die in Form von Hardware-Logik in ihn eingebettet ist, wie z.B. eine anwendungsspezifische integrierte Schaltung (ASIC), eine im Feld programmierbare Gatter-Anordnung (FPGA) usw. „Durch den Prozessor ausführbar“ bedeutet, dass es sich bei der Logik um Hardware-Logik; Software-Logik wie z.B. Firmware, einen Teil eines Betriebssystems, einen Teil eines Anwendungsprogramms; usw., oder um eine Kombination von Hardware- und Software-Logik handelt, auf die der Prozessor zugreifen kann und die so konfiguriert wird, dass sie den Prozessor veranlasst, bei Ausführung durch den Prozessor eine Funktionalität durchzuführen. Software-Logik kann in einem lokalen und/oder entfernt angeordneten Arbeitsspeicher eines beliebigen Arbeitsspeichertyps nach dem Stand der Technik gespeichert werden. Jeder Prozessor nach dem Stand der Technik kann verwendet werden, z.B. ein Software-Prozessormodul und/oder ein Hardware-Prozessormodul wie beispielsweise eine ASIC, eine FPGA, eine Zentraleinheit (CPU), eine integrierte Schaltung (IC), ein Grafikprozessor (GPU) usw.
  • Es dürfte offensichtlich sein, dass die verschiedenen Merkmale der vorgenannten Systeme und/oder Methodiken auf eine beliebige Weise kombiniert werden können, so dass sich aus den oben dargelegten Beschreibungen eine Mehrzahl von Kombinationen ergibt.
  • Des Weiteren dürfte klar sein, dass Ausführungsformen der vorliegenden Erfindung in Form eines Dienstes bereitgestellt werden können, der im Namen eines Kunden bereitgestellt wird, um Dienste auf Abruf (service on demand) anzubieten.

Claims (17)

  1. Arbeitsspeichersystem zum Speichern von Daten, wobei das Arbeitsspeichersystem aufweist: eine Mehrzahl von Arbeitsspeichereinheiten (250, 350), die konfiguriert sind, um Daten zu speichern, wobei jede Arbeitsspeichereinheit (250, 350) eine Mehrzahl von Bits aufweist, wobei die Arbeitsspeichereinheiten (250, 350) konfiguriert und angeordnet sind, um zusammenzuwirken, um auf eine Anforderung zu antworten; eine Arbeitsspeicher-Steuerschaltung (330), die der Mehrzahl von Arbeitsspeichereinheiten (250, 350) zugehörig und konfiguriert ist, um Befehls- und Steuersignale an die Mehrzahl von Arbeitsspeichereinheiten (250, 350) auszugeben; einen Detektor zum Erkennen eines Bitfehlers in einer Operation; und einen Controller zum Neuzuordnen des Bitfehlers zu einer Ersatz-Bitspur als Reaktion darauf, dass der Detektor den Bitfehler erkennt, wobei die Arbeitsspeicher-Steuerschaltung (330) konfiguriert ist, um Daten in dem Ersatzbit in der Ersatz-Bitspur und die Positionsinformationen in der Ersatz-Bitspur zu lesen, um anzugeben, wo die Daten in dem Ersatzbit in der Ersatz-Bitspur verwendet werden sollen.
  2. Arbeitsspeichersystem nach Anspruch 1, wobei sich der Detektor, der Controller und die Arbeitsspeicher-Steuerschaltung (330) auf demselben Chip befinden.
  3. Arbeitsspeichersystem nach Anspruch 1, wobei sich die Mehrzahl von Arbeitsspeichereinheiten (250, 350) auf einem Dual-in-line-Arbeitsspeichermodul, Dual In-Line Memory Module, DIMM (325) befindet, die Arbeitsspeicher-Steuerschaltung (330) sich auf dem DIMM (325) befindet und das DIMM (325) des Weiteren eine Mehrzahl von Datenpufferschaltungen (340) aufweist.
  4. Arbeitsspeichersystem nach Anspruch 3, wobei das DIMM (325) die Mehrzahl von Arbeitsspeichereinheiten (250, 350) aufweist, wobei ein erster Teilsatz der Arbeitsspeichereinheiten (250, 350) eine erste Bank bildet und ein zweiter Teilsatz von Arbeitsspeichereinheiten (250, 350) eine zweite Bank bildet, und wobei des Weiteren zweiunddreißig Bits pro Bank verwendet werden, um Daten zu speichern.
  5. Arbeitsspeichersystem nach Anspruch 4, wobei mindestens eine Bitspur zum Neuzuordnen des Bitfehlers verwendet wird.
  6. Arbeitsspeichersystem nach Anspruch 4, des Weiteren aufweisend ein neu Schreiben in ein bestimmtes Ersatzbit in der Ersatz-Bitspur, wobei die in das bestimmte Ersatzbit neu geschriebenen Daten Daten des Bits, wo der Fehler erkannt wurde, sowie einen Fehlerkorrekturcode für das bestimmte Ersatzbit und eine Position des Bits enthalten, wo der Fehler erkannt wurde.
  7. Arbeitsspeichersystem nach Anspruch 1, wobei die Mehrzahl von Arbeitsspeichereinheiten (250, 350) eine Mehrzahl von Ersatz-Bitspuren bereitstellt, um Bitfehler neu zuzuordnen.
  8. Arbeitsspeichersystem zum Speichern von Daten, wobei das Arbeitsspeichersystem aufweist: eine Mehrzahl von Arbeitsspeichereinheiten (250, 350), die konfiguriert sind, um Daten zu speichern, wobei jede Arbeitsspeichereinheit (250, 350) eine Mehrzahl von Bits aufweist, wobei die Arbeitsspeichereinheiten (250, 350) konfiguriert und angeordnet sind, um zusammenzuwirken, um eine Anforderung durchzuführen; eine Arbeitsspeicher-Steuerschaltung (330), die der Mehrzahl von Arbeitsspeichereinheiten (250, 350) zugehörig und konfiguriert ist, um Signale an die Mehrzahl von Arbeitsspeichereinheiten (250, 350) auszugeben, wobei die Arbeitsspeicher-Steuerschaltung (330) Logikschaltungen enthält, die konfiguriert sind, um (i) ein ausfallendes Bit während einer Operation zu erkennen; (ii) Daten aus dem ausfallenden Bit in eine Einzel-Ersatz-Bitspur neu zu schreiben; und (iii) die in die Ersatz-Bitspur neu geschriebenen Daten für das ausfallende Bit zu lesen, wobei die Arbeitsspeicher- Steuerschaltung (330) konfiguriert ist, um eine Positionsadresse des ausfallenden Bits in die Ersatz-Bitspur zu schreiben.
  9. Arbeitsspeichersystem nach Anspruch 8, des Weiteren aufweisend einen Fehlerkorrekturcode (Error Correction Code, ECC) für die Daten und die Positionsinformationenadresse, die in die Ersatz-Bitspur geschrieben werden.
  10. Verfahren zum Verwalten von Bitfehlern in einem Arbeitsspeicherteilsystem (220, 320), wobei das Verfahren aufweist: ein Erkennen eines ersten Fehlers in einer ersten Arbeitsspeicher-Bitposition in einer Mehrzahl von Arbeitsspeichereinheiten (250, 350) in einer ersten Operation; und ein Neuzuordnen von Daten, die in der ersten Arbeitsspeicher-Bitposition, wo der erste Fehler erkannt wurde, gespeichert werden sollen, zu einer Ersatz-Bitspur, wobei während einer Leseoperation gültige Daten aus der Ersatz-Bitspur gelesen werden, wobei die gültigen Daten ein Bit von Daten, ein oder mehrere Bits von Positionsinformationen für das Bit von Daten und ein oder mehrere Bits von Fehlerkorrekturcode enthalten, die das Datenbit und ein oder mehrere Bits der Positionsinformationen schützen.
  11. Verfahren nach Anspruch 10, wobei Daten, die in der ersten Arbeitsspeicher-Bitposition, wo der erste Fehler erkannt wurde, gespeichert werden sollen, einem Ersatzbit in der Ersatz-Bitspur neu zugeordnet werden.
  12. Verfahren nach Anspruch 11, wobei das Neuzuordnen ein Speichern von Positionsinformationen, welche die Position des ersten Fehlers identifizieren, und von Fehlerkorrekturcode für das Ersatzbit in der Ersatz-Bitspur enthält.
  13. Verfahren nach Anspruch 10, wobei ein Einzelbitfehler in einer ersten Operation in eine Einzel-Bitspur geschrieben wird.
  14. Verfahren nach Anspruch 10, wobei die erste Operation eine Leseoperation ist und wobei während der Leseoperation ein Fehler erkannt wird, wobei das Verfahren des Weiteren ein Durchführen einer Schreiboperation aufweist, wobei ein Arbeitsspeicher-Controller die Informationen in der Ersatz-Bitspur in eine Arbeitsspeicher-Bitposition schreibt, die durch die in der Ersatz-Bitspur enthaltenen Positionsinformationen identifiziert wird.
  15. Verfahren nach Anspruch 12, wobei während einer Leseoperation bestimmte gültige Daten aus der Ersatz-Bitspur gelesen werden, wobei die bestimmten gültigen Daten ein Ersatzbit aufweisen, wobei dieses unter Verwendung von in der Ersatz-Bitspur gespeicherten Positionsinformationen durch einen Arbeitsspeicher-Controller den gelesenen bestimmten gültigen Daten neu zugeordnet wird, um ursprüngliche, nicht ersatzweise gespeicherte Daten wiederherzustellen.
  16. Verfahren nach Anspruch 10, des Weiteren aufweisend: ein Erkennen eines zweiten Fehlers in einer Arbeitsspeicher-Bitposition in einer anderen Operation, wobei der zweite Fehler in einer zweiten Arbeitsspeicher-Bitposition in mindestens einer aus der Gruppe auftritt, bestehend aus derselben Arbeitsspeicher-Bitposition wie der erste Fehler und einer anderen Arbeitsspeicher-Bitposition; und ein Neuzuordnen von Daten, die in der zweiten Arbeitsspeicher-Bitposition, wo der zweite Fehler erkannt wurde, gespeichert werden sollen, zu einer Einzel-Ersatz-Bitspur in der anderen Operation.
  17. Verfahren nach Anspruch 10, des Weiteren aufweisend ein Bereitstellen einer Mehrzahl von Arbeitsspeichereinheiten (250, 350), wobei eine Mehrzahl von Bits konfiguriert ist, um Daten zu speichern, eine Mehrzahl von Bits für einen Fehlerkorrekturcode vorgesehen ist und mindestens ein Bit zum Verwalten einer Fehlerkorrektur vorgesehen ist.
DE112019000211.2T 2018-01-19 2019-01-15 Effizientes und selektives ersatzweises Speichern von Bits in Arbeitsspeichersystemen Active DE112019000211B4 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/875,136 2018-01-19
US15/875,136 US10671497B2 (en) 2018-01-19 2018-01-19 Efficient and selective sparing of bits in memory systems
PCT/IB2019/050299 WO2019142093A1 (en) 2018-01-19 2019-01-15 Efficient and selective sparing of bits in memory systems

Publications (2)

Publication Number Publication Date
DE112019000211T5 DE112019000211T5 (de) 2020-08-13
DE112019000211B4 true DE112019000211B4 (de) 2021-08-26

Family

ID=67298203

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112019000211.2T Active DE112019000211B4 (de) 2018-01-19 2019-01-15 Effizientes und selektives ersatzweises Speichern von Bits in Arbeitsspeichersystemen

Country Status (6)

Country Link
US (3) US10671497B2 (de)
JP (1) JP7267285B2 (de)
CN (1) CN111566738B (de)
DE (1) DE112019000211B4 (de)
GB (1) GB2585514B (de)
WO (1) WO2019142093A1 (de)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10657002B2 (en) * 2017-11-10 2020-05-19 International Business Machines Corporation Method and apparatus to rollback memory DIMM lane sparing
US11216333B2 (en) * 2018-10-16 2022-01-04 Micron Technology, Inc. Methods and devices for error correction
US11437114B1 (en) * 2020-05-04 2022-09-06 Meta Platforms, Inc. Reduced error correction code for dual channel DDR dynamic random-access memory
US11803444B1 (en) * 2022-06-15 2023-10-31 Micron Technology, Inc. Cooperative memory subsystem data recovery
US12013752B2 (en) * 2022-06-16 2024-06-18 Advanced Micro Devices, Inc. Host-level error detection and fault correction

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7447066B2 (en) 2005-11-08 2008-11-04 Sandisk Corporation Memory with retargetable memory cell redundancy

Family Cites Families (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS57150197A (en) 1981-03-11 1982-09-16 Nippon Telegr & Teleph Corp <Ntt> Storage circuit
US4594660A (en) 1982-10-13 1986-06-10 Honeywell Information Systems Inc. Collector
US5617365A (en) 1988-10-07 1997-04-01 Hitachi, Ltd. Semiconductor device having redundancy circuit
US6237076B1 (en) 1998-08-19 2001-05-22 International Business Machines Corporation Method for register renaming by copying a 32 bits instruction directly or indirectly to a 64 bits instruction
US6366998B1 (en) 1998-10-14 2002-04-02 Conexant Systems, Inc. Reconfigurable functional units for implementing a hybrid VLIW-SIMD programming model
US6711602B1 (en) 2000-02-18 2004-03-23 Texas Instruments Incorporated Data processor with flexible multiply unit
US6760856B1 (en) 2000-07-17 2004-07-06 International Business Machines Corporation Programmable compensated delay for DDR SDRAM interface using programmable delay loop for reference calibration
US6418068B1 (en) 2001-01-19 2002-07-09 Hewlett-Packard Co. Self-healing memory
US7184916B2 (en) * 2003-05-20 2007-02-27 Cray Inc. Apparatus and method for testing memory cards
US7334201B1 (en) 2004-07-02 2008-02-19 Tensilica, Inc. Method and apparatus to measure hardware cost of adding complex instruction extensions to a processor
US7539800B2 (en) * 2004-07-30 2009-05-26 International Business Machines Corporation System, method and storage medium for providing segment level sparing
US8060774B2 (en) 2005-06-24 2011-11-15 Google Inc. Memory systems and memory modules
US7465185B2 (en) 2006-03-30 2008-12-16 Fci Americas Technology, Inc Electrical connector assembly with mate-assist and a wire dress cover
US20070239970A1 (en) 2006-04-06 2007-10-11 I-Tao Liao Apparatus For Cooperative Sharing Of Operand Access Port Of A Banked Register File
US7712010B2 (en) 2006-06-15 2010-05-04 International Business Machines Corporation Systems, methods and computer program products for utilizing a spare lane for additional checkbits
GB0612892D0 (en) 2006-06-29 2006-08-09 Ibm Error correction for digital systems
US9250899B2 (en) 2007-06-13 2016-02-02 International Business Machines Corporation Method and apparatus for spatial register partitioning with a multi-bit cell register file
KR100882841B1 (ko) 2007-06-19 2009-02-10 삼성전자주식회사 읽기 디스터번스로 인한 비트 에러를 검출할 수 있는메모리 시스템 및 그것의 읽기 방법
US7877582B2 (en) 2008-01-31 2011-01-25 International Business Machines Corporation Multi-addressable register file
JP5309636B2 (ja) 2008-03-21 2013-10-09 富士通株式会社 演算処理装置及び演算処理装置の制御方法
KR20100115970A (ko) * 2009-04-21 2010-10-29 삼성전자주식회사 배드 셀 관리 방법과 그 장치
US8635487B2 (en) 2010-03-15 2014-01-21 International Business Machines Corporation Memory interface having extended strobe burst for write timing calibration
GB2478731B (en) 2010-03-15 2013-08-21 Advanced Risc Mach Ltd Operand size control
US8677211B2 (en) * 2010-12-23 2014-03-18 International Business Machines Corporation Data bus inversion using spare error correction bits
DE112012005617T5 (de) * 2012-01-31 2014-10-09 Hewlett-Packard Development Company, L.P. Speicherung von Daten in Speichermodulpuffern
US20130246761A1 (en) 2012-03-13 2013-09-19 International Business Machines Corporation Register sharing in an extended processor architecture
US9430324B2 (en) 2013-05-24 2016-08-30 Rambus Inc. Memory repair method and apparatus based on error code tracking
US9619230B2 (en) 2013-06-28 2017-04-11 International Business Machines Corporation Predictive fetching and decoding for selected instructions
US9715424B1 (en) * 2013-08-23 2017-07-25 Rambus Inc. Memory device and repair method with column-based error code tracking
US9477550B2 (en) 2013-10-24 2016-10-25 Globalfoundries Inc. ECC bypass using low latency CE correction with retry select signal
US10318299B2 (en) 2013-10-31 2019-06-11 International Business Machines Corporation Reading a register pair by writing a wide register
KR101548875B1 (ko) * 2014-08-28 2015-09-01 성균관대학교산학협력단 메모리의 오류검사정정 성능 향상방법
US9760375B2 (en) 2014-09-09 2017-09-12 International Business Machines Corporation Register files for storing data operated on by instructions of multiple widths
US9697094B2 (en) 2015-02-06 2017-07-04 Intel Corporation Dynamically changing lockstep configuration
US20170109093A1 (en) 2015-10-14 2017-04-20 International Business Machines Corporation Method and apparatus for writing a portion of a register in a microprocessor
US10261856B2 (en) * 2016-11-04 2019-04-16 International Business Machines Corporation Bitwise sparing in a memory system
US10606713B2 (en) * 2018-01-03 2020-03-31 International Business Machines Corporation Using dual channel memory as single channel memory with command address recovery

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7447066B2 (en) 2005-11-08 2008-11-04 Sandisk Corporation Memory with retargetable memory cell redundancy

Also Published As

Publication number Publication date
WO2019142093A1 (en) 2019-07-25
CN111566738A (zh) 2020-08-21
US20190227886A1 (en) 2019-07-25
GB202012499D0 (en) 2020-09-23
US11698842B2 (en) 2023-07-11
US10671497B2 (en) 2020-06-02
GB2585514B (en) 2021-05-19
CN111566738B (zh) 2023-12-22
US20200226040A1 (en) 2020-07-16
US20220027243A1 (en) 2022-01-27
JP2021510897A (ja) 2021-04-30
JP7267285B2 (ja) 2023-05-01
US11182262B2 (en) 2021-11-23
GB2585514A (en) 2021-01-13
DE112019000211T5 (de) 2020-08-13

Similar Documents

Publication Publication Date Title
DE112019000211B4 (de) Effizientes und selektives ersatzweises Speichern von Bits in Arbeitsspeichersystemen
DE10255872B4 (de) Speichermodul und Verfahren zum Betrieb eines Speichermoduls in einem Datenspeichersystem
DE102010030745B4 (de) Nicht-flüchtiger Speicher zum Speichern von Speicher-Umabbildungs-Informationen
DE102020112512A1 (de) Datenspeichergerät und Betriebsverfahren dafür
DE102006039473B4 (de) Datenspeichersystem und Verfahren zum Übertragen von Daten in einen Datenspeicher
DE112012005617T5 (de) Speicherung von Daten in Speichermodulpuffern
DE102011075814B4 (de) Speicherpuffer mit zugänglicher Information nach einem Schreibfehler
DE4423949A1 (de) E/A-Hilfssystem und Exklusiv-Steuerverfahren, Datenspeicherverfahren und Speicherinitialisierungsverfahren in einem E/A-Hilfssystem
DE102020118505A1 (de) Speichervorrichtungen mit darin enthaltenen variablen reparatureinheiten und verfahren zu deren reparatur
DE102020108262A1 (de) Halbleiterspeichervorrichtungen, Speichersysteme und Verfahren zum Steuern der Reparatur von Halbleiterspeichervorrichtungen
DE102016009807A1 (de) Korrelieren von physikalischen seitenadressen für soft-decision-dekodierung
DE112018005427T5 (de) Autonome adress-/befehls-chip-synchronisierte datenchip-adress-ablaufsteuerung für ein verteiltes pufferspeichersystem
DE102004036888A1 (de) Flashspeichersystem und zugehöriges Datenschreibverfahren
EP0046976A2 (de) Halbleiterspeicher aus Speicherbausteinen mit redundanten Speicherbereichen
DE112020001937T5 (de) Vorausschauender datenvorabruf in einer datenspeicher-vorrichtung
DE112007003015T5 (de) Verfahren und Vorrichtung zur Cache-gestützten Fehlerdetektion und -korrektur in einem Speicher
DE112020000305B4 (de) Verringern der wiederherstellungszeit in einer computerspeicherumgebung
DE112018005121T5 (de) Speichersystem unter verwendung von cloud-speicher als eine speicherbank
DE102009047875A1 (de) Speicherreparatur
DE112021000776T5 (de) Verwaltung von schreib-operationen in einer nichtflüchtigen speichervorrichtung unter verwendung eines variablen vor-lese-spannungspegels
DE112020003028T5 (de) Vorrichtungen und verfahren zum reparieren von defekten speicherzellen basierend auf einer spezifizierten fehlerrate für bestimmte speicherzellen
DE102020115747A1 (de) Speichermodul, Fehlerkorrekturverfahren für Speicher-Controller, der dieses steuert, und Rechensystem, das dieses umfasst
DE102020132762A1 (de) Eingebaute Selbsttest-Stromausfallabschwächung für dynamischen Direktzugriffsspeicher
DE69021192T2 (de) Peripheres Massenspeichersubsystem.
DE69016978T2 (de) Sicheres Datenschnellschreibverfahren für Massenspeichereinrichtung und ein dieses Verfahren ausführendes Computersystem.

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R016 Response to examination communication
R018 Grant decision by examination section/examining division
R084 Declaration of willingness to licence
R020 Patent grant now final