DE69112624T2 - Mehrfehlerkorrektur eines rechnerspeichers. - Google Patents
Mehrfehlerkorrektur eines rechnerspeichers.Info
- Publication number
- DE69112624T2 DE69112624T2 DE69112624T DE69112624T DE69112624T2 DE 69112624 T2 DE69112624 T2 DE 69112624T2 DE 69112624 T DE69112624 T DE 69112624T DE 69112624 T DE69112624 T DE 69112624T DE 69112624 T2 DE69112624 T2 DE 69112624T2
- Authority
- DE
- Germany
- Prior art keywords
- data
- bits
- error correction
- bit
- region
- 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.)
- Expired - Fee Related
Links
- 238000012937 correction Methods 0.000 title claims abstract description 57
- 230000015654 memory Effects 0.000 claims abstract description 55
- 208000011580 syndromic disease Diseases 0.000 claims abstract description 31
- 238000012545 processing Methods 0.000 claims abstract description 15
- 238000000034 method Methods 0.000 claims abstract description 14
- 238000001514 detection method Methods 0.000 claims abstract description 6
- FGUUSXIOTUKUDN-IBGZPJMESA-N C1(=CC=CC=C1)N1C2=C(NC([C@H](C1)NC=1OC(=NN=1)C1=CC=CC=C1)=O)C=CC=C2 Chemical compound C1(=CC=CC=C1)N1C2=C(NC([C@H](C1)NC=1OC(=NN=1)C1=CC=CC=C1)=O)C=CC=C2 FGUUSXIOTUKUDN-IBGZPJMESA-N 0.000 claims 1
- 238000013500 data storage Methods 0.000 claims 1
- 230000002708 enhancing effect Effects 0.000 abstract 1
- 238000010586 diagram Methods 0.000 description 12
- 230000009977 dual effect Effects 0.000 description 4
- 230000008520 organization Effects 0.000 description 4
- 230000006870 function Effects 0.000 description 3
- 240000007320 Pinus strobus Species 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 101710130550 Class E basic helix-loop-helix protein 40 Proteins 0.000 description 1
- 102100025314 Deleted in esophageal cancer 1 Human genes 0.000 description 1
- 230000004075 alteration Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000005465 channeling Effects 0.000 description 1
- 239000002131 composite material Substances 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 230000001627 detrimental effect Effects 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding 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/1012—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
- G06F11/1016—Error in accessing a memory location, i.e. addressing error
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding 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/1012—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
- G06F11/1028—Adjacent errors, e.g. error in n-bit (n>1) wide storage units, i.e. package error
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)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Description
- Diese Erfindung betrifft allgemein Fehlerkorrekturkode (ECC) Techniken und insbesondere ein ECC-Verfahren, bei welchem Datenworte für ECC-Zwecke in mehrere Bereiche unterteilt werden.
- Die Verwendung von Fehlerkorrektur- und Erfassungstechniken beim Übertragen und Speichern binärer Daten ist von vitaler Bedeutung zum Sicherstellen der Datenintegrität in digitalen Datenverarbeitungssystemen. In jedem Digitalsystem kann Rauschen in dem Kanal zwischen Sender und Empfänger Fehler einfügen, so daß einzelne Bits invertiert werden und eine falsche Mitteilung empfangen werden kann. Lineare Blockkodierungen wurden entworfen, um Fehler zu erfassen und zu korrigieren, um die Datenintegrität zu verbessern. Bei der Verwendung dieser Kodierungen besteht die übertragene Mitteilung aus Informationsbits und einer Anzahl von Paritätsbits oder Prüfbits. Die Prüfbits werden beim Sender errechnet und erzeugt. Prüfbits werden mit den aktuellen Informationsbit übertragen und durch den Empfänger dekodiert.
- Syndrombits werden beim Empfänger erzeugt durch Dekodieren der empfangenen Informations- und Prüfbits. Durch Verwenden der Syndrombits ist es möglich, zu bestimmen, ob ein oder mehrere Fehler aufgetreten sind und, bei einigen Kodierungen, die Bitpositionen in dem binären Wort, an welcher die Fehler aufgetreten sind. Die Anzahl der Fehler, welche erfaßt und/oder korrigiert werden können, hängt von der verwendeten Kodierung ab.
- Hamming-Kodes wurden als effizienteste im Sinne der kleinsten Anzahl von Paritätsbits für eine vorgegebene Anzahl von Informationsbits erkannt und sie werden allgemein in Datenverarbeitungssystemen verwendet. Bei Verwenden eines Hamming-Kodes mit einer Hamming-Distanz von 3 (d.h. jedes Wort in dem Kode, Datenbits und Prüfbits unterscheiden sich von jedem anderen Wort in wenigstens drei verschiedenen Bitpositionen) können Einzelbitfehler korrigiert und Doppelbitfehler erfaßt werden. Wenn es erforderlich ist, mehr als eine Einzelbitfehlerkorrektur zu implementieren, muß die Hamming-Distanz des Kodes erhöht werden. Die Fehlerkorrekturmöglichkeit eines Kodes wird durch die folgende Formel ausgedrückt:
- Fehlerkorrekturmöglichkeit = [(Dmin - 1 )/2]
- wobei Dmin die minimale Hamming-Distanz ist. Die eckigen Klammern [] bezeichnen den ganzzahligen Teil von (Dmin-1 )/2. Aus dieser Gleichung ist erkennbar, daß eine minimale Hamming-Distanz von 4 ebenfalls Einzelbitfehler korrigiert und Doppelbitfehler erkennt.
- In der Datenverarbeitung und in Computersystemen wird typisch ein modifizierter Hamming-Kode mit einer Distanz von 4 zur Fehlerkorrektur und Erkennung verwendet. Um die Hamming-Distanz eines Kodes und dadurch die Fehlerkorrekturmöglichkeit zu erhöhen, ist es erforderlich, die Anzahl der Prüfbits zu erhöhen.
- Ein in dem U.S.-Patent 4,817,091 für Katzman et al. verwendetes Fehlerkorrekturschema ist ein typisches Beispiel für einen Fehlerkorrekturkode. In diesem exemplarischen System ist ein 16-Bit-Datenfeld geschützt durch ein 6-Bit-Prüffeld. Das verwendete Kodierungsschema ist ein modifizierter Hamming-Kode der Distanz 4, bei welchem jedes Datenbit durch 3 Prüfbits geschützt ist. D.h., ein Fehler in einem Datenbit veranlaßt 3 der 6 Prüfbits, ihren Zustand zu ändern. Wenn das Syndrom durch Vergleichen der alten Prüfbits mit den neuen Prüfbits berechnet wird, weist das Syndrom eine ungerade Parität auf. Dies zeigt, daß ein Einzelbitfehler aufgetreten ist und die Bitposition des Fehlerortes kann leicht gefunden werden durch Heranziehen der Fehlerkodeerzeugungstabelle. Die Prüfbits werden auf das 16-Bit- Wort angewendet und die Datenbits und die Prüfbits sind in dem gleichen physikalischen Speicherbereich angeordnet.
- Es ist möglich, eine ECC einer zweiten Ebene in einem Datenverarbeitungssystem auszuführen. Das US-Patent 4,745,604 für Patel et al. lehrt eine Zwei-Ebenen-ECC, die für auf einem Plattenlaufwerk gespeicherte Daten verwendet wird. Die Daten werden in Unterblöcke aufgeteilt und jedem Unterblock ist ein ECC einer ersten Ebene zugeordnet. Zusätzlich ist ein ECC einer zweiten Ebene für den gesamten Block bestimmt, einschließlich der Unterblocks und der ECC-Bits der ersten Ebene. Dieses Verfahren erfordert zusätzliche Zeit zum Berechnen des ECC der zweiten Ebene, da jede Ebene sequentiell berechnet wird.
- Beim Ausbilden eines fehlertoleranten Speichersystems ist es erwünscht, die Wirkungen von Wortgröße, Fehlerkorrekturmöglichkeit, wahlfreier Zugriffspeicher- (RAM)-Fehlermodi und die durchschnittliche Zeit zwischen Fehlern (MTBF) zu berücksichtigen. Eine Untersuchung von MTBF'n für unterschiedliche Wortgrößen zeigt eine inverse Beziehung zwischen Wortgröße und MTBF. Größere Wortgrößen resultieren in der Speicherung oder Übertragung einer größeren Anzahl von Bits mit zunehmender Wahrscheinlichkeit, daß ein Fehler an wenigstens einer Bitposition des Wortes auftritt. Wenn die zu korrigierende Anzahl von Fehlern von 1 auf 2 erhöht wird, werden für die gleiche Anzahl von Informationsbits mehr Prüfbits benötigt. Diese Zunahme des Volumens der gespeicherten (oder übertragenen) Daten kann die MTBF tatsächlich verringern.
- Felduntersuchungen der Fehlermodi von dynamischen wahlfreien Zugriffsspeichern (DRAMS) zeigen, daß Fehler voll integrierter Schaltungen (ICs) einen wesentlichen Einfluß auf die MTBF haben. Einzelbitfehler treten häufiger auf als Gesamt-IC- Fehler, aber der Fehler eines isolierten Bits ist durch einen Einzelbitfehlerkorrekturkode leicht korrigierbar. Der Fehler eines gesamten IC resultiert typisch in einer größeren Anzahl falscher Bits, als ECC-Verfahren korrigieren können. Aufgrund der Anzahl von Bits in einem DRAM führt der Fehler eines gesamten IC zu vielen Systemfehlern.
- Das U.S.-Patent 4,747,080 für Yamada betrifft einen Halbleiterspeicher mit einer Eigenkorrekturfunktion Das Speicherfeld hat redundante Datenzellen. Sowohl horizontales als auch vertikales Fehlerprüfen wird verwirklicht. Die einzelnen Speicherzellen sind in Gruppen derart angeordnet, daß keine zwei Zellen einer Gruppe die gleiche horizontale oder die gleiche vertikale Parität aufweisen. Wenn die horizontale und vertikale Paritätsprüfung ausgeführt sind, kann eine fehlerhafte Zelle im Schnittpunkt der horizontalen und vertikalen Paritätsprüfwerte lokalisiert werden. Wenn eine fehlerhafte Zelle lokalisiert ist, wird sie durch eine der Ersatzzellen ersetzt. Obwohl ein selbstkorrigierende Speicherbereiche verwendetes System gegen Einzelbitfehler geschützt ist, kann das Versagen des gesamten IC in diesem System nicht einfach korrigiert werden.
- Das europäische Patent EP-A-0 278 415 lehrt ein System, in welchem ein in einen Speicher zu schreibendes Datenwort in kleinere Teile (d.h. Bytes) zur separaten ECC-Erzeugung/Prüfung aufgeteilt werden kann.
- Das europäische Patent EP-A-0 080 354 offenbart ein Computerspeicherprüfungssystem, in welchem das Datenwort, das Daten und Prüfstellen enthält, partitioniert wird, und bei welchem die Partitionen des Datenwortes in verschiedenen physikalischen Geräten gespeichert werden.
- Im Stand der Technik stellen in Speichersystemen verwendete Fehlerkorrekturschemata keinen Schutz für große Datenworte ohne eine große Anzahl von Prüfbits bereit. Das Speichern dieser zusätzlichen Prüfbits hat eine nachteilige Wirkung auf die durchschnittliche Zeit zwischen Fehlern des Speichersystems durch die zusätzlich erforderliche Hardware. Somit ist eine Zunahme der Datensicherheit typisch begleitet von einer Abnahme der Zuverlässigkeit des Systems. Bei der vorliegenden Erfindung werden Datenworte in Zonen aufgeteilt, wobei jede Zone ihren eigenen Fehlerkorrekturkode aufweist. Durch Aufteilen von Worten in kleinere Zonen und Ausführen von Fehlerkorrektur für mehrere Zonen gleichzeitig können mehrere Fehler in einem einzelnen Wort korrigiert werden. Gleichzeitige Fehlerkorrektur in jeder Zone erlaubt die Systemwiederherstellung in wesentlich kürzerer Zeit als eine Einzelzonenfehlerverarbeitung.
- Ein anderes vorteilhaftes Merkmal der vorliegenden Erfindung ist die Belegung von Daten in dem physikalischen Speicher. Diese Ausführungsform der vorliegenden Erfindung verwendet ein Dual-In-Line-Speichermodul oder DIMM zur Daten- und ECC-Speicherung. Ein DIMM besteht aus sechs integrierten dynamischen RAM- (DRAM)-Schaltungen, die als Einzelpackung konfiguiert sind. Jede der integrierten DRAM-Schaltungen kann 1 Bit mal 1 ein Megabit speichern. Für jedes gegebene Datenwort wird nicht mehr als ein Bit pro ECC-Zone in einem DIMM gespeichert. Daher sind, wenn ein DIMM vollständig versagt, die in ihm enthaltenen sechs Megabits Daten einzeln durch eine separate ECC-Zone geschützt. Somit kann das System wiederhergestellt werden, d.h., jeden Einzelbitfehler korrigieren, auch wenn ein gesamtes DIMM versagt. Die vorliegende Erfindung weist die vorstehend erwähnten Vorteile entsprechend den Ansprüchen auf.
- Fig. 1a ist ein Blockschaltbild eines parallelen Computersystems, in welchem mehrere zentrale Verarbeitungseinheiten (CPU's) oder Prozessoren an
- Fig. 1b ist eine Darstellung eines in mehrere Zonen aufgeteilten einzelnen Datenwortes;
- Fig. 2 ist ein Blockschaltbild, welches die Organisation der in Fig. 1b gezeigten Datenworte im Speicher zeigt;
- Fig. 3 ist ein Blockschaltbild, welches die Anordnung von in mehreren DIMMs gespeicherten Datenworten zeigt;
- Fig. 4 ist eine Datenanordnungsdarstellung, welche Gruppen von ECC-Bits zu ihren korrespondierenden Datenzonen und Adressfeldern in Beziehung setzt;
- Fig. 5 ist ein Blockschaltbild, welches eine Datenpfad-IC-Zwischenverbindung zum physikalischen Speicher (DIMMs) zeigt;
- Fig. 6 ist ein Blockschaltbild, welches die logische Organisation eines einzelnen DIMM darstellt;
- Fig. 7a ist eine kommentierte Tabelle, welche das Kodierungsschema zeigt, das zum Erzeugen von Syndrombits aus Datenbits und Adressbits verwendet wird;
- Fig. 7b ist eine kommentierte Tabelle, die das Kodierungsschema zeigt, das zum Erzeugen von Syndrombits aus dem Cache-Status und den Adressbits verwendet wird;
- Fig. 7c bis 7e sind kommentierte Tabellen, die den Syndromkode zu den in den Datenbits und Cache-Statusbits erfaßten Fehlern in Beziehung Setzen;
- Fig. 8a ist ein vereinfachtes Blockschaltbild der Datensektion einer integrierten Datenpfadschaltung (IC), das die wichtigsten Datenflußpfade und Daten-ECC zeigt;
- Fig. 8b ist ein vereinfachtes Blockschaltbild der Cache-Statussektion des Datenpfad-IC, welches die Hauptdatenflußwege des Cache-Statuswortes und des Cache-Status-ECC zeigt.
- Datenpfad-IC, welches die Hauptdatenflußwege des Cache-Statuswortes und des Cache-Status-ECC zeigt.
- Das Folgende ist eine Beschreibung eines beispielhaften, erfindungsgemäßen ECC- Schemas.
- Fig. 1a ist ein Blockschaltbild eines parallelen Computersystems, in welchem mehrere CPU's 200 an einen Hauptspeicher 202 gekoppelt sind, der als Speichereinheit (MSU) bezeichnet ist.
- In Fig. 1a ist nur eine CPU 200 gezeigt. Die CPU 200 beinhaltet eine Kodeeinheit 212, eine Ausführungseinheit 214, eine Referenzeinheit 216 und einen Cache- Speicher 218. Die Kodeeinheit fragt Befehle von dem MSU 202 ab und dekodiert sie teilweise. Jede Speicherreferenz in dem durch die Kodeeinheit verarbeiteten Kode wird durch die Referenzeinheit 216 gehandhabt. Der Datencachespeicher 218 ist über eine Speicherzugriffseinheit (MAU) 220 an die MSU 202 gekoppelt. Wenn eine Adressreferenz in einem Befehl in dem Cachespeicher 218 nicht gefunden werden kann, veranlaßt der Cachespeicher die MAU 220, eine Zugriffsanforderung zu dem Hauptspeicher 202 auszuführen.
- Der Cache 218 kann gleichzeitig eine Hol- und eine Speicher-Operation von der MAU 220 anfordern. Die MAU 220 analysiert die Anforderungen und ordnet ihnen Prioritäten zu, um Interferenzen zwischen gleichzeitigen Speicheroperationen zu minimieren.
- Der exemplarische Cachespeicher 218 ist ein löschfreier Cache. Datenwerte sind in dem Cachespeicher 218 in Vierwortsätzen gespeichert. Der Status jedes Vierwortsatzes in dem Cache ist mit den Originaldaten in der MSU 202 gehalten. Wenn somit eine der mehreren CPUs, zum Beispiel Prozessor A, einen Vierwortsatz aus dem Speicher holt und beabsichtigt, die Daten in dem Satz zu modifizieren, wird der Cachestatuseintrag für die Daten in dem Hauptspeicher 202 anzeigen, daß die Daten dieses Satzes von Prozessor A exklusiv gehalten werden. Jeder Versuch, zum Beispiel durch Prozessor B, auf die gleichen Daten in dem Hauptspeicher 202 zuzugreifen, wird erfolglos sein, bis die modifizierten Daten durch Prozessor A zurück in den Hauptspeicher geschrieben wurden.
- Alternativ kann Prozessor A Daten aus dem Hauptspeicher abfragen, welche nicht modifiziert werden. In diesem Fall wird der Cachestatuseintrag für den Vierwortsatz anzeigen, daß Prozessor A die Daten in einem gemeinsam genutzten Zustand hat. Prozessor B kann ebenfalls auf geteilte Daten zugreifen, kann jedoch keinen ausschließlichen (z.B. Schreib-)Zugriff auf die Daten erhalten, bis der Satz in dem Cache von Prozessor A ungültig geworden ist. Somit spielt die Cachestatusinformation eine vitale Rolle im Steuern des Mehrfachprozessorzugriffs auf einen gemeinsam genutzten Hauptspeicher.
- In dieser Ausführungsform der Erfindung ist ein Cachestatuseintrag entsprechend jedem Vierwortdatensatz mit den Daten selbst im Hauptspeicher 202 gespeichert. Jeder Vierwortdatensatz ist durch mehrere Fehlerkorrekturkodebereiche geschützt und jeder korrespondierende Cachestatuseintrag ist unabhängig durch seinen eigenen ECC-Bereich geschützt. Ein Speicherzugriff auf jeden Vierwortdatensatz ist gleichzeitig begleitet von einem Zugriff auf den korrespondierenden Cachestatuseintrag. Steuerungsschaltungen in der MSU 202, welche auf den Cachestatus reagieren, bestimmen, ob die Speicherzugriffsanforderung erlaubbar ist.
- Fig. 1b zeigt, wie ein einzelnes Datenwort 10a im Hauptspeicher 202 in mehrere Fehlerkorrekturzonen 20a-c geteilt werden kann. Das 54-Bit Wort 10a ist zum Zweck der ECC in drei 18-Bit Segmente oder Zonen 20a-c aufgeteilt. Die Bits in jeder Zone sind von Bit 0 bis Bit 17 numeriert. In Fig. 2 werden während des Speicherbetriebes zwei Datenworte 10a und 10b gleichzeitig für die ECC-Erzeugung verarbeitet. Ebenso werden Worte 10c und 10d gleichzeitig verarbeitet. Innerhalb jedes Wortes 10a werden die drei Zonen 20a-c ebenfalls gleichzeitig verarbeitet. Fig. 2 zeigt eine vorteilhafte Organisation von Daten und ECC. Die Datenworte 10a-d umfassen jeweils 54 Bits. Das nächste Feld sind Daten-ECC 12. Dieses Feld enthält 21 Bits, oder 7 Bits für jeden der drei abgedeckten Fehlerbereiche. Das ECC-Feld 1 2 enthält die Korrekturkodes, welche die Integrität der Datenworte 10a-d sicherstellen. Das nächste Feld ist der Cachestatus 14, welcher 18 Bits breit ist, gefolgt durch das Cachestatus-ECC-Feld 16, welches 18 Bits breit ist.
- Fig. 2 zeigt außerdem die Beziehung zwischen der Datenorganisation und dem physikalischen Speicher. Eine an ein Dual-In-Line-Speichermodul (DIMM) 18 abgegebene DRAM-Adresse spricht die sechs DRAMS als drei Datenbits 22a, 22b und 22c für jede der zwei Gruppen von zwei Datenworten an. In Fig. 2 beinhaltet die erste Gruppe die Worte 10a und 10b und die zweite Gruppe beinhaltet die Worte 10c und 10d. Jedes der durch eine einzelne DRAM-Adresse auf dem DIMM angesprochenen 6 Bits ist in einer separaten integrierten DRAM-Schaltung gespeichert, die 1 Bit breit und 1 Megabit tief ist. Daten, Cachestatus und ECC belegen zusammen 55 DIMMs in dieser Ausführungsform.
- In der exemplarischen Konfiguration gehört jedes durch eine einzelne DRAM- Adresse angesprochene Bit zu einer unterschiedlichen ECC-Zone 20a-c. Durch Erweitern der Daten derart, daß keine 2 Bits einer einzelnen ECC-Zone in demselben DIMM 18 gespeichert werden, sind die Daten gegen Datenverlust oder Veränderung durch das Versagen eines DIMM oder das Versagen einer einzelnen integrierten DRAM-Schaltung des DIMM geschützt.
- Der in der vorliegenden Erfindung verwendete Fehlerkorrekturkode ist ein modifizierter Hamming-Kode der Distanz 4, so daß innerhalb eines Fehlerbereiches Einzelbitfehler korrigiert und Doppelbitfehler erkannt werden.
- Ein 7-Bit-ECC 1 2 wird für jede der folgenden Daten- und Adresskombinationen (Fehlerbereiche) erzeugt:
- (WORT0A bezeichnet hier Wort0, Zone A; ebenso bezeichnet WORT0B WORT ,ZoneB; WORT0C bezeichnet WORT0, Zone C; eine gleiche Nomenklatur wird auf die anderen unten erläuterten Zonen angewendet)
- WORT0A(BIT0-BIT17) WORT1A(BIT0-BIT17) Adresse (8-Bits);
- WORT0B(BIT0-BIT17) WORT1B(BIT0-BIT17) Adresse (8-Bits);
- WORT0C(BIT0-BIT17) WORT1C(BIT0-BIT17) Adresse (8-Bits).
- Zwei weitere Worte, WORT2 und WORT3 sind ebenso durch einen 7-Bit-ECC für jeden dieser Bereiche geschützt:
- WORT2A(BIT0-BIT17) WORT3A(BIT0-BIT17) Adresse (8-Bits);
- WORT2B(BIT0-BIT17) WORT3B(BIT0-BIT17) Adresse (8-Bits);
- WORT2C(BIT0-BIT17) WORT3C(BIT0-BIT17) Adresse (8-Bits).
- Durch Teilen jedes Wortes in drei Zonen, zusammenfassen einer Zone von jedem der zwei oder mehr verschiedenen Worte in einem Bereich und Erzeugen eines ECC für jeden Bereich ist es möglich, mehrere Bitfehler in einem einzelnen Wort durch Verwenden eines Einzelbitfehlerkorrekturschemas für jede Zone zu korrigieren, solange nicht mehr als ein Fehler pro Bereich vorhanden ist.
- Fig. 3 ist ein Blockschaltbild, welches illustriert, wie vier Datenworte zwischen 36 DIMMs aufgeteilt werden. Die Datenworte sind physikalisch in DRAM-Modulen angeordnet, die als Dual-In-Line-Speichermodule (DIMMs) 18 bezeichnet werden. Jedes DIMM besteht aus sechs DRAM-Speichern 30a-f, die jeder eine Zelle breit und ein Megabit tief sind. Die Zellen sind in zwei Bänken 32a, 32b aus jeweils drei Zellen organisiert. Die Datenworte WORTO (10a) bis WORT3 (10d) sind derart in den DIMMs 18 gespeichert, daß jedes DIMM lediglich drei Bits (mit einer Tiefe von einem Megabit) von zwei verschiedenen Worten enthält, von denen jedes Bit zu einem anderen Fehlerbereich gehört.
- Wenn der Fehlerkorrekturkode für einen bestimmten Bereich verarbeitet wird, zieht der ECC-Generator Daten aus unterschiedlichen DIMMS. Somit kann, auch wenn ein gesamter DIMM versagt, jeder Einzelbitfehler korrigiert werden. Die Wirkung eines DIMM-Versagens kann mit bezug auf Fig. 3 verstanden werden. Wenn eines der DIMMS 18 vollständig versagt, fehlt ein Bit in jedem der sechs unterschiedlichen Fehlerbereiche. In diesem Beispiel fehlen, bezugnehmend auf Fig. 1b, WORT2 BIT0 22c, BIT 18 22b und BIT36 22a und WORT0 BIT0 22c, BIT18 22b und BIT36 22a. Diese Bitpositionen innerhalb des Datenwortes sind in Fig. 1b gezeigt. Die Einzelbitfehlerkorrekturmöglichkeit der vorliegenden Erfindung erlaubt die Korrektur der fehlenden Bits, solange keine anderen Bitfehler in WORT0 10a oder WORT2 10c in den anderen DIMMs auftreten.
- Fig. 3 zeigt die Zuordnung von Datenworten zwischen DIMMs. In dieser Ausführungsform der Erfindung erfordert eine Datenwortgröße von 54 Bits neun der DIMMs 18 zur Speicherung. Die gezeigten 36 DIMMs 18 werden zum Halten von vier 54-Bits-Datenworten verwendet.
- Fig. 4 zeigt, wie die Prüfbits 42, 44, 46 auf jeden der Fehlerbereiche angewendet werden. In dieser Ausführungsform sind acht Adressbits in den geschützten Datenwortzonen enthalten. Die sieben Prüfbits 42 schützen den Bereich 52, die nächsten sieben Prüfbits 44 schützen den Bereich 50 und die nächsten sieben Prüfbits 46 schützen den Bereich 48. In dieser Fig. sind nur WORT0 10a und WORT1 10b dargestellt. Ebenso sind Prüfbits für Daten und Adressbits von WORT2 10c und WORT3 10d vorgesehen. Somit ist in der exemplarischen Ausführungsform eine Zone aus zwei verschiedenen Worten zu einem einzelnen Fehlerbereich zusammengefaßt. Andere Ausführungsformen können eine Zone aus einem Einzelwort oder zusammengesetzte Zonen aus einer Anzahl von Worten zum Bilden eines Fehlerbereiches verwendet.
- In den Fehlerbereichen sind Adressbits enthalten und Adressfehler werden erfaßt und an die CPU bei Abrufen aus dem Hauptspeicher berichtet. Als Teil des Aufrechterhaltens des Cachestatus besteht jedes CPU-Holen oder Speichern aus einem Lesen-Modifizieren-Schreiben-Zyklus der DRAMS innerhalb der MSU. Während eines Lesen-Modifizieren-Schreiben-Zyklus wird eine ECC-Prüfung der Adresse vor der Übergabe an die Schreiboperation ausgeführt. Ein Adressfehler, wie er durch das Syndrom angezeigt wird, zeigt, daß die während des Leseteils des Zyklus erhaltenen Daten von einer anderen Hauptspeicheradresse als der vorgesehenen stammen.
- Fig. 5 ist ein Blockschaltbild, das die Zwischenverbindungen der drei Datenpfad-ICs 60a-c, die parallel arbeiten, mit den 55 DIMMs zeigt. Die in Fig. 5 gezeigte Schaltung ist in der MSU 202 in Fig. 1a enthalten. In dieser Ausführungsform der Erfindung werden die Fehlerkorrekturkodes durch Datenpfad-ICs 60a-c für in den DIMMS 18 gespeicherte Daten erzeugt. Die ICs 60a-c führen ebenfalls die Fehlererkennung und Korrektur der aus den DIMMS 18 abgefragten Daten aus. Das Datenpfad-IC 60a-c ist ein Multifunktions-IC, welches Datenworte speichert, ECC's nach Schreiboperationen erzeugt, Fehler während Leseoperationen erfaßt und korrigiert und Daten zu dem zugeordneten DIMM leitet. Die 55 DIMM 18 halten die Daten, den Cachestatus und die ECC-Daten, welche durch diese exemplarische Ausführungsform der Erfindung verwendet werden.
- Die drei Datenpfadbausteine 60a-c sind jeweils zum Unterstützen der Daten-, Cache-Status- und ECC-Übertragungen zwischen der CPU und den DIMMS in der Lage. Während einer CPU-Speicheroperation werden nach dem Empfang eines Vierwortsatzes von der CPU zwei aufeinanderfolgende DIMM-Schreibzugriffe durch die drei Datenpfadbausteine ausgeführt. Bei dem ersten Schreiben schreibt das Datenpfad-IC 60a WORT0 Zone A und WORT1 Zone A in die DIMMs, während das Datenpfad-IC 60b WORT0 Zone B und WORT1 Zone B und das Datenpfad-IC 60c WORT0 Zone C und WORT1 Zone C schreibt. Somit verwirklicht die erste Schreiboperation das Speichern von WORT0 und WORT1 in den DIMMs. Bei dem nächsten Schreiben schreibt das Datenpfad-IC 60a WORT2 Zone A und WORT3 Zone A, Datenpfad-IC 60b schreibt WORT2 Zone B und WORT3 Zone B und Datenpfad-IC 60c schreibt WORT2 Zone C und WORT3 Zone C in die DIMMs.
- Nach dem Empfang der Speicherdaten von der CPU und vor dem Schreiben in die DIMMs berechnet die in den Datenpfadbausteinen 60a-c enthaltene ECC-Verarbeitungslogik Prüfbits basierend auf den zwei Datenwortzonen und 24 Adressbits. Jeder Datenpfadbaustein berechnet die ECC basierend auf den zwei Datensegmenten, die er empfängt und acht der insgesamt 24 Adressbits. Die Adressbits werden somit in drei Zonen segmentiert, vergleichbar mit den Datenzonen. Die Adresse ist somit durch ECC geschützt, und obwohl Adressfehler nicht korrigiert werden, werden sie berichtet, wenn sie auftreten. Die resultierenden 21 Prüfbits werden zusammen mit den 108 Datenbits an die zugeordneten DIMMs ausgegeben. Prüfbits für den Cachestatus werden getrennt von den Prüfbits für Daten berechnet. Jedes Datenpfad-IC 60a-c handhabt ein Drittel des 18-Bits-Cachestatuswortes und jedes IC berechnet Prüfbits basierend auf seinem Teil des Cachestatus. Diese Segmentierung des Cachestatuswortes in Zonen zum Zweck der ECC ergibt gleiche Vorteile wie das Segmentieren der Datenworte, d.h., mehrfache Bitfehler können durch gleichzeitige Verarbeitung jeder Zone erkannt werden.
- Fig. 6 ist ein Blockschaltbild, welches die Struktur eines repräsentativen DIMM 18 darstellt. Das DIMM 18 besteht aus sechs DRAM-Speichern 70, 72, 74, 76, 78 und 80, mit jeweils 1 Bit mal 1 Megabit, organisiert in zwei Bänken von je drei Bits. Die DRAMs 70, 72 und 74 bilden die erste Bank, während die DRAMs 76, 78 und 80 die zweite Bank bilden. Jede Bank des DIMM 18 ist mit getrennten Zeilenadressimpulsen (RAS) und Spaltenadressimpulsen (CAS), gemeinsamen Schreibfreigabe-(WE) und Adressleitungen versehen. Das Signal DATAINO wird an die Dateneingabeleitungen der DRAMs 70 und 76 abgegeben, während das Signal DATAIN1 an die Dateneingabeleitungen der DRAMs 72 und 78 und das Signal DATAIN2 an die Dateneingabeleitungen der DRAMs 74 und 80 abgegeben wird. Das Vorhandensein unabhängiger Adressimpulse erlaubt eine unabhängige Steuerung beim Schreiben jeder Bank.
- In dieser Ausführungsform der Erfindung sind die Datenausgabeleitungen der DRAMS nicht miteinander verbunden. Stattdessen sind die Datenausgabeleitungen jedes Paares von DRAMs 70, 76; 72, 78 und 74, 80 an entsprechenden Eingangsanschlüssen von drei Zweikanalmultiplexern 82, 84 und 86 vorgesehen. Das Adressbit 1 (das zweitniedrigste Adressbit) selektiert zwischen Bank 1 (DIMMs 70, 72 und 74) und Bank 2 (DIMMS 76, 78, 80). Die Signale DATAOUT0, DATAOUT1 und DATAOUT2 werden auf separaten Eingabeleitungen an die Datenpfadbausteine 60a-c abgegeben.
- Jedes Datenpfad-IC 60a-c beinhaltet Register (in Fig. 5 nicht dargestellt), welche jedes Wort speichern, wie es von den DIMMs 18 bereitgestellt wird, und Schaltungen (ebenfalls in Fig. 5 nicht dargestellt), welche die Syndrombits aus den Prüfbits und den Datenworten erzeugen. Innerhalb jeder Zone werden Einzelbitdatenfehler, Einzelbit-Cachefehler und Prüfbitfehler korrigiert. Innerhalb jeder Zone werden Adressfehler, Mehrfachdatenfehler und Mehrfach-Cachefehler an den Prozessor berichtet. Die interne Anordnung der ICs 60a-c ist nachfolgend mit Bezug auf die Fig. 8a und 8b beschrieben.
- Die Fig. 7a und 7b sind Tabellen, die zeigen, wie Daten- und Adressbits durch Prüfbits geschützt werden. In dieser Ausführungsform der Erfindung wird ein modifizierter Hammingkode der Distanz vier verwendet. Ein modifizierter Hammingkode der Distanz vier ist erwünscht, um eine Einzelfehlerkorrektur und eine Doppelfehlererkennung zu verwirklichen. Die Anzahl K der Prüfbits, die verwendet wird, um einen Informationsvektor mit M Datenbits zu schützen, so daß der resultierende Kode eine Hammingdistanz von vier aufweist, kann aus der folgenden Ungleichung gefunden werden:
- 2K-1 > = M + K
- Um eine Fehlerkorrekturabdeckung für den in Fig. 7a gezeigten Bereich bereitzustellen, der 36 Datenbits, 18 Bits von WORT0 und WORT1 (oder WORT2 und WORT3) plus 8 Adressbits umfaßt, sind 7 Prüfbits erforderlich. Da die Anzahl der Informationsbits M in dieser Ausführungsform 44 ist (18 + 18 + 8) ist K gleich 7.
- Prüfbits werden erzeugt durch die Modulo-2-Addition (Exklusiv-Oder) jedes in jeder Reihe mit einem "X" markierten Bits. Das Kodierungsschema in dieser exemplarischen Ausführungsform der Erfindung ist so ausgebildet, daß jedes Informationsbit in dem Bereich verwendet wird, um drei oder fünf Prüfbits zu berechnen. Wenn ein einzelnes Informationsbit verändert ist, sind somit entweder drei oder fünf Prüfbits invertiert. Das resultierende Syndrom wird eine ungerade Parität aufweisen.
- Ein anderer vorteilhafter Aspekt des verwendeten Kodes ist, daß die Paritätsbaumbreite, also die Anzahl der zum Berechnen jedes Prüfbits verwendeten Informationsbits annähernd gleich ist. In dieser Ausführungsform der Erfindung weist jedes der Prüfbits C0, C1, C2 und C4 eine Paritätsbaumbreite von 21 auf, während C3 eine Paritätsbaumbreite von 22 und C5 und C6 je eine Paritätsbaumbreite von 23 aufweisen. Ein Wählen des Kodes derart, daß die Paritätsbaumbreiten ähnlich sind, optimiert die Geschwindigkeit des Kodierers und minimiert die relativen Ausbreitungsverzögerungen.
- Der in der vorliegenden Erfindung verwendete Prüfbitgenerator kann ein Netzwerk aus Exklusiv-Oder-(XOR)-Gattern sein, wie in dem U.S.-Patent 4,817,091 für Katzman et al. gezeigt, auf das hierdurch bezug genommen wird. Der in dem Katzman-Patent gezeigt Prüfbitgenerator unterscheidet sich von dem in der vorliegenden Erfindung verwendeten dadurch, daß in der vorliegenden Erfindung nur ungerade Paritätsbäume verwendet werden. Das Katzman-Patent beschreibt außerdem die Prinzipien der Syndromerzeugung. Unter Anwendung dieser Prinzipien kann ein Durchschnittsfachmann leicht einen Syndromgenerator zur Verwendung in der vorliegenden Erfindung schaffen.
- Das folgende Beispiel demonstriert, wie der in dieser Ausführungsform der Erfindung verwendete besondere Kode Prüfbits erzeugt. Für dieses Beispiel sei die folgende Kombination von Daten- und Adressbits angenommen, die durch ECC zu schützen ist:
- 00 0000 0000 0000 0011 00 0000 0000 0000 0001 1010 1000
- Dieses Bitmuster (oder der Informationsvektor) repräsentiert ein beispielhaftes WORT0 Zone A (18-Bits), gefolgt von WORT1 Zone A (18-Bits), gefolgt von 8 Adressbits. Die in dem Beispiel verwendeten Werte sind wie folgt:
- WORT0 Zone A = 00003 Hexadezimal
- WORT1 Zone A = 00001 Hexadezimal
- Adresse = A8 Hexadezimal
- Die Prüfbits werden erhalten durch Überlagern des Informationsvektors über die ECC-Abdeckungstabelle und Exklusiv-Oder-Verknüpfen der Informationsbits, welche an jeder mit X markierten Bitposition existieren, um jedes Prüfbit zu erzeugen. In diesem Beispiel ergibt der gegebene Informationsvektor die folgenden Gleichungen für die Prüfbits:
- C0 = 0
- C1 = 0
- C2 = 1
- C3 = 1 + 1 = 0
- C4 = 1 + 1 = 0
- C5 = 1 + 1 + 1 + 1 + 1 = 1
- C6 = 1 + 1 + 1 + 1 = 0
- wobei "+" die Exklusiv-Oder-Funktion repräsentiert.
- Das vollständige Prüfbitwort ist dann 0100100. Dieser Wert wird zusammen mit den Datenworten in den DIMMs (18) gespeichert.
- Ein 7-Bit-Syndromwort wird durch die ECC-Schaltung des Datenpfad-ICs erzeugt und verwendet, um Einzelbitfehler zu identifizieren. Das Syndrom ist beschrieben als die Exklusiv-Oder-Summe des alten Prüfbitwortes und des neuen Prüfbitwortes. D.h., jedes Bit Cn des aus den DIMMs 18 gelesenen alten Prüfwortes wird Exklusiv- Oder-verknüpft mit dem korrespondierenden Bit Cn, das aus den Daten generiert wird, die aus den DIMMs gelesen werden. Das resultierende Syndromwort zeigt an, ob Fehler in Daten, Adresse oder Prüfbits vorhanden sind und wenn nur ein Fehler vorhanden ist, dessen Position. Die Fig. 7c, 7d und 7e sind Tabellen,die jeden möglichen Wert des Syndromwortes für den Daten- und Cache-Status zeigen, und die durch jedes mögliche Syndrom repräsentierten Fehler. SYNDROM SYNDROM SYNDROM SYNDROM TABELLE 7 ¹ Kein Fehler ² Prüfbitfehler - Bit 7 des ECC-Kodes ist fehlerhaft ³ Mehrfachbitfehler &sup4; Adressfehler &sup5; Mehrfachbitfehler (überschreibt SBE-Flag) &sup6; Einzelbitfehler, Bit 5 von CS ist fehlerhaft
- Der primäre Zweck der Datenpfad-ICs ist es, Einrichtungen zum Kanalisieren von Daten in geeignete Richtungen für jede Speicheroperation bereitzustellen. Die Datenpfad-ICs erfassen den Daten- und den Cache-Status, errechnen ECC-Bits für den Daten- und den Cache-Status, führen Fehlerkorrektur- und Erfassungsfunktionen aus und leiten den Daten- und den Cache-Status vom Hauptspeicher zu dem anfordernden Prozessor. Zum Betrieb der Datenpfad-ICs 60a-c erforderliche Steuerungsinformationen werden durch Schaltungen außerhalb des Datenpfad-ICs erzeugt.
- Die interne Anordnung jedes der Datenpfad-ICs 60a-c ist identisch. Die Fig. 8a und 8b zeigen die Hauptdatenflußpfade durch das Datenpfad-IC 60a. Fig. 8a repräsentiert den Teil des Datenpfad-IC, welcher die Datenworte 10a-d und Teile des Adresswertes handhabt, während Fig. 8b den Teil des IC's repräsentiert, welcher den Cachestatus und den verbleibenden Teil des Adresswertes handhabt.
- In Fig. 8a werden Datenregister 100a-d verwendet, um eine Zone von jedem der Systemdatenworte 10a-d während der Speicheroperationen zu halten. Jedes Datenregister 100a-d enthält 18 Bitpositionen. Die Datenregister 100a-d erhalten Datenwerte von den jeweiligen Multiplexern 102a-d. Diese Multiplexer 102a-d selektieren Daten von einer der folgenden Quellen:
- 1. SUDI: Daten von dem den Speicherzugriff anfordernden Prozessor
- 2. DATAI: Eingabedaten von den Hauptspeicher-DIMMs 18
- 3. korrigierte Daten: von der internen ECC-Schaltung 108.
- Die Datenregister 100a-d liefern Datenbits an einen Multiplexer 118. Dieser Multiplexer selektiert 18 Bits von durch eines der vier Datenregister 102a-d bereitgestellten Daten und liefert diese über die Signalleitungen SUDO an die externen Prozessoren. Die Datenregister 100a-d sind ebenfalls gekoppelt, um Daten an einen ECC-Generator 106 und eine ECC-Korrekturschaltung 108 durch einen Multiplexer 104 abzugeben. Die Ausgangsanschlüsse der Register 100a und 100b sind miteinander verknüpft, wie die Ausgangsanschlüsse der Register 100c und 100d. Diese verknüpften Ausgangsanschlüsse stellen zwei 36-Bit-Werte für den Multiplexer 104 bereit. Diese zwei 36-Bit-Werte werden außerdem an einen Multiplexer 114 angelegt, welcher das Datenausgangssignal DATAO an die DIMMs 18 des Hauptspeichers 202 anlegt.
- Ein 8-Bit-Adressregister 116 speichert die gültige Adresse der SUDI-Eingangsleitungen zwischen und behält sie zur Verwendung in der ECC-Erzeugungslogik 106.
- Der Daten-ECC von den DIMMs 18 wird auf der Signalleitung DECI an das Datenpfad-IC 60a abgegeben. Ein Multiplexer 110 selektiert zwischen korrigierten Prüfbits und DECI-Prüfbits von den DIMMS. Das Daten-ECC-Register 112 enthält die durch den Multiplexer 110 selektierten Prüfbits. Die Prüfbits in diesem Register 112 werden über die Signalleitung DECO ebenfalls an die DIMMs geliefert.
- Bei einer typischen Speicheroperation liefert die MAU 220 (in Fig. 1 gezeigt) vier Worte, jedes 54 Bits lang, und eine 24-Bit-Adresse an die MSU 202. Zuerst wird die Adresse abgegeben, gefolgt durch WORT0, WORT1, WORT2 und WORT3, jeweils eins zur Zeit. Adresse und Daten werden über die Signalleitung SUDI an die Datenpfad-ICs 60a-c abgegeben. Acht Adressbits werden in das Register 116 geladen und die folgenden Datenbits werden mit einem 18-Bit-Segment zur Zeit in Datenregister 100a-d geladen. D.h., WORT0 wird in Register 100a geladen, WORT1 in Register 100b, WORT2 in Register 100c und WORT3 in Register 100d. Da jedes der drei Datenpfad-IC's 60 ein Drittel der Daten- und Adress-Worte geladen hat, sind jetzt die gesamten vier Worte und die vollständige Adresse in den drei Datenpfad-ICs 60a-c gespeichert und die Berechnung des ECC ist jetzt möglich.
- Sobald die entsprechenden Teile der Datenworte in die Register 100a-d geladen sind, werden sie verknüpft und durch den Multiplexer 104 zu dem ECC-Generator 106 geleitet. Zuerst werden die 36-Bits von WORT0 und WORT1 zu dem Generator 106 geleitet. Der Generator 106 verknüpft die 36 Datenbits mit dem Acht-Bit-Adresswert aus Register 116 und erzeugt einen Sieben-Bit-ECC-Wert wie vorstehend erläutert. Dieser Sieben-Bit-ECC-Wert wird dann durch den Multiplexer 110 in das Daten-ECC-Register A 112 geladen. Daran anschließend errechnet der Generator 106 einen ECC-Wert für die 36 Datenbits, die Teile von WORT2 und WORT3 repräsentieren. Dieser Sieben-Bit-ECC-Wert wird durch den Multiplexer 120 in dem Daten-ECC-Register B 122 gespeichert.
- Das Daten-ECC-Register A 112 und das Daten-ECC-Register B 122 sind durch den Multiplexer 124 mit dem Ausgangsanschluß DEC0 des Datenpfad-ICs 60a gekoppelt. Der die Verknüpfung des Inhalts der Register 100a und 100b repräsentierende 36-Bit-Datenwert wird ebenfalls an den Multiplexer 114 angelegt, dessen Ausgangsanschluß der Ausgangsanschluß DATA0 des Datenpfad-ICs 60a ist. Die Ausgangsanschlüsse DATA0 und DEC0 stellen 43 binäre Bits zur Speicherung in den DIMMs 18 bereit, wie in Fig. 5 gezeigt.
- Während die Teile von WORT0 und WORT1 durch das Datenpfad-IC 60a verarbeitet werden, werden entsprechende Teile von WORT2 und WORT3 in die Register 100c und 100d geladen. Während die Worte WORT0 und WORT1 von den Datenpfad-ICs 60a, 60b und 60c in den DIMMs 18 gespeichert werden, werden die durch die Register 100c und 100d gehaltenen entsprechenden Teile von WORT2 und WORT3 in der gleichen Weise verarbeitet. Somit werden während einer MSU-Speicheroperation WORT0- und WORT1-Datenbits auf DATA0 zusammen mit den zugeordneten ECC-Bits auf DEC0 ausgegeben und dann werden die WORT2- und WORT3-Datenbits auf DATA0 und die zugeordneten ECC-Bits auf DEC0 ausgegeben.
- Die Bestimmung, ob die durch einen bestimmten Prozessor versuchte MSU- Speicheroperation gültig ist, wird durch Lesen des Cache-Status ausgeführt. Die Cache-Status-ECC-Logik korrigiert Einzelbitfehler und verifiziert, daß die richtige Adressposition gelesen wurde. Die vorstehend beschriebene Daten-ECC-Logik wird verwendet, um einen Daten-ECC vor dem Ausführen einer gültigen MSU-Speicherung zu erzeugen.
- Wie oben erläutert, werden MSU-Hol-Operationen in dieser Ausführungsform der Erfindung als Lesen-Modifizieren-Schreiben-Zyklus ausgeführt. Wenn die Daten aus den DIMMS 18 gelesen sind, werden 36 Datenbits für den Eingangsanschluß DATAI bereitgestellt und sieben ECC-Bits werden für den Eingangsanschluß DEC1 von jedem der Datenpfad-ICs 60a, 60b und 60c bereitgestellt. Die an das IC 60a abgegebenen 36 Datenbits werden in zwei 18-Bit-Teile geteilt, welche durch die jeweiligen Multiplexer 102a und 102b in die Register 100a und 100b geladen werden. Der Sieben-Bit-ECC-Wert wird durch den Multiplexer 110 in das Daten- ECC-Register A 112 geladen.
- Die von den Registern 100a und 100b gehaltenen Datenwerte werden an den ECC- Generator 106 und die ECC-Korrekturschaltung 108 abgegeben, wie oben erläutert. Die ECC-Korrekturschaltung erzeugt Syndrombits aus den von Multiplexer 104 bereitgestellten Daten und aus dem durch das Daten-ECC-Register A 112 bereitgestellten ECC und korrigiert die Daten entsprechend. Diese korrigierten Daten werden in die Register 100a und 100b geladen. Wenn der Korrektor 108 anzeigt, daß ein Fehler in einem der Prüfbits aufgetreten ist, wird der korrekte ECC für die Daten-ECC-Register A und B (112 und 122) durch den ECC-Generator 106 bereitgestellt. Als nächstes werden die in den Registern 100a und 100b gehaltenen Datenwerte sequentiell zu der MAU 220 gesendet, welche über den Multiplexer 118 und den Ausgangsanschluß SUDO an den anfordernden Prozessor gekoppelt ist. Gleichzeitig werden diese Datenwerte und der Sieben-Bit-ECC-Wert, die durch das Daten-ECC-Register A 112 gehalten werden, in die DIMMs 18 zurückgeschrieben, wie oben erläutert.
- Während die 43 Bits der korrigierten Daten und des ECC von dem Datenpfad-IC 60a verarbeitet werden, können die nächsten 43 Bits der unkorrigierten Daten und deren ECC in die Register 100c, 100d und das Daten-ECC-Register B 122 zur gleichartigen Verarbeitung geladen werden.
- Die Steuerungsignale für die verschiedenen Multiplexer und Register der Datenpfad- ICs 60a, 60b und 60c werden erzeugt durch eine Steuerungsschaltung (nicht dargestellt), die auf ein Zehn-Bit-Steuerungswort reagiert, welches durch den anfordernden Prozessor MAU 220 zusammen mit acht der vierundzwanzig Adressbits bereitgestellt werden. Dieser Wert zeigt zum Beispiel den Typ der Speicheranforderung (Speichern oder Holen) an. Als Reaktion auf diesen Wert steuert die Steuerungsschaltung die Datenpfadschaltung, wie vorstehend erläutert. Ein Durchschnittsfachmann für das Entwerfen digitaler Logikschaltungen kann aus der vorstehenden Beschreibung leicht eine geeignete Datenpfadschaltung schaffen.
- Fig. 8b zeigt die Sektion des Datenpfad-IC 60a, die den Fluß des Cachestatuswortes und der Cachestatus-Prüfbits handhabt. Das Cachestatusregister 150 speichert entweder direkt von den DIMMs auf der Eingangsleitung CSln erhaltene Cachestatusbits oder ein neues Cachestatuswort, welches auf CSCWIN durch eine externe Steuerungslogik geliefert wird. Der Multiplexer 154 selektiert entweder das vorherige Cachestatuswort von den DLMMS (das am Ausgang des Cachestatusregisters 150 verfügbar ist) oder ein extern auf CSCWIN geliefertes neues Cachestatuswort. Das resultierende Wort wird an den ECC-Generator 160 abgegeben. Ebenso werden in den ECC-Bereich einzuschließende 8 Adressbits an den ECC- Generator 160 abgegeben. Das Cachestatusregister 150 liefert weiterhin Cachestatusbits auf den Signalleitungen CSOUT zu den DIMMs.
- Cachestatus-Prüfbits von den DIMMS werden über die Signalleitung CECI abgegeben. Diese Bits werden mit den durch den ECC-Generator 160 erzeugten Prüfbits durch einen Multiplexer 156 gemultiplext. Die selektierten Prüfbits werden in dem ECC-Register 152 gespeichert. Die Cachestatus-Prüfbits werden auf den Signalleitungen CECO an die DIMMs ausgegeben. Eine Einzelbitfehlerkorrektur findet in der Fehlerkorrekturschaltung 162 statt. Korrigierte Cachestatusbits werden dann auf der Ausgabeleitung CSCWOUT an eine externe Steuerung abgegeben.
- Eine Zusammenfassung der Wirkungsweise des Cachestatusteiles des Datenpfad-IC 60a wird jetzt gegeben. Ein Lesen-Modifiziereren-Schreiben-Zyklus folgt in gleicher Weise wie bei dem oben beschriebenen Datenteil. Eine Leseoperation aus den DIMMs 18 tritt auf, welche den Cachestatus zu der Eingabeleitung CSln und den korrespondierenden ECC zu der Eingabeleitung CECI bringt. Dieser Cachestatus wird in dem CS-Register 150 und der ECC in dem Register 152 gespeichert. Der Inhalt dieser zwei Register wird dann an die Korrekturschaltung 162 abgegeben, welche den korrigierten Cachestatus auf der Ausgabesignalleitung CSCWOUT an die MSU sendet. Externe Steuerungsschaltungen, die hier nicht erläutert werden, aktualisieren den Cachestatus. Der neue Cachestatus wird auf der Eingangsleitung CSCWIN abgegeben und in das Cachestatusregister 150 geladen. Gleichzeitig wird CSCWIN an den ECC-Generator 160 abgegeben und der neue ECC wird in das ECC-Register 152 geladen. Dann werden die Inhalte der Register 150 und 152 auf den Signalleitungen CSOUT und CECO jeweils in die DIMMs 18 geschrieben.
- Für den Durchschnittsfachmann ist es klar, daß vielfältige Variationen der hier beschriebenen Ausführungsform in Betracht kommen. Diese beinhalten unterschiedliche Wortgrößen, unterschiedliche Anzahlen von Prüfbits, unterschiedliche Anzahlen von Zonen pro Wort und unterschiedliche Anzahlen von Zonen pro Fehlerbereich.
Claims (10)
1. Verfahren zum Speichern und Abrufen von Datenworten in Speichergeräten,
bei dem Fehlerkorrekturbits während des Speicherns in die Datenworte
hineincodiert werden oder während des Abrufens der Datenworte herauscodiert werden,
gekennzeichnet durch die Schritte:
a) Aufteilen von Datenworten in Bereiche durch Dividieren jedes Wortes in
mehrere Abschnitte und Zusammenfügen eines Abschnittes von jedem von
wenigstens zwei Worten, einen der Bereiche zu bilden;
b) Hinzufügen von Fehlerkorrekturbits zu jedem Bereich, deren Anzahl ausreicht,
um wenigstens Ein-Bit-Fehler in dem Bereich zu erkennen und zu korrigieren;
c) Aufteilen jedes Bereiches in eine Vielzahl von Komponentenabschnitten;
d) Speichern jedes Komponentenabschnittes innerhalb eines Bereiches in einem
jeweils unterschiedlichen physikalischen Speichergerät;
e) Abrufen der Bereiche aus den Speichergeräten;
f) Verarbeiten der Fehlerkorrekturbits in jedem abgerufenen Bereich und
Berechnen eines Syndroms für jeden Bereich;
g) Berechnen des Ortes für jeden Bitfehler innerhalb jedes abgerufenen Bereiches
in Abhängigkeit von dem Syndrom;
h) Korrigieren jedes falschen Bits in jedem abgerufenen Bereich; und
i) Wiederzusammenfügen der abgerufenen Bereiche zu Worten.
2. Verfahren nach Anspruch 1,
bei welchem der Schritt des Aufteilens jedes Bereiches in eine Mehrzahl von
Komponentenabschnitten die Schritte des Aufteilens jedes Bereiches in einzelne
Bits umfaßt.
3. Verfahren nach Anspruch 1,
bei welchem der Schritt des Aufteilens der Datenworte in Bereiche weiterhin den
Schritt des Anfügens von Adressbits an jeden Bereich umfaßt.
4. Verfahren nach Anspruch 1,
bei welchem der Schritt des Hinzufügens von Fehlerkorrekturbits zu jedem Bereich
gleichzeitig für mehrere Bereiche ausgeführt wird.
5. Verfahren nach Anspruch 1,
bei welchem der Schritt des Verarbeitens der Fehlerkorrekturbits in jedem
abgerufenen Bereich und des Berechnens eines Syndroms für jeden abgerufenen Bereich
gleichzeitig für mehrere Bereiche ausgeführt wird.
6. Verfahren zum Übertragen von Datenworten zwischen einem Cache-Speicher
und einer Mehrzahl von Speichergeräten unter Verwendung eines in einem der
Ansprüche 1-5 beanspruchten Verfahrens, bei welchem
- in Schritt c) jedem Bereich Cache-Statusbits und
Cache-Statusfehlerkorrekturbits zugeordnet werden,
- in Schritt d) jeder Bereich in der Mehrzahl der Speichergeräte gespeichert wird,
und
die weiteren Schritte ausgeführt werden:
j) Verarbeiten der Cache-Statusfehlerkorrekturbits nach dem Abrufen aus dem
Speicher; und
k) Korrigieren jedes falschen Bits in dem abgerufenen Cache-Status, wie durch
die Fehlerkorrekturbits für die abgerufenen Bereiche, welche die
Cache-Statusbits beinhalten, angezeigt.
7. Verfahren nach einem der Ansprüche 1-5,
in welchem flüchtige Speichergeräte als Speichergeräte verwendet werden, wobei
- in Schritt b) eine Fehlerkorrekturcodierung für jeden Bereich ausgeführt wird,
- in Schritt d) ein Speichern jedes Komponentenabschnittes in einem anderen
flüchtigen Speichergerät stattfindet,
- in Schritt e) die Mehrzahl der Komponentenabschnitte für jeden Bereich aus
dem entsprechenden flüchtigen Speichergerät abgerufen wird,
- in Schritt f) die decodierende Verarbeitung jedes abgerufenen Bereiches
ausgeführt und ein entsprechender Syndrom wert für jeden abgerufenen
Bereich berechnet wird, und
- in den Schritten g) und h) die Bitwerte in den abgerufenen Bereichen in
Abhängigkeit von den entsprechenden Syndromwerten verändert werden, welche
einen Fehlerzustand anzeigen.
8. System zum Speichern von Daten in einer Mehrzahl flüchtiger
Speicherelemente und zum Abrufen von Daten aus den Speicherelementen, bei welchem
Fehlerkorrekturbits in den Daten während des Speicherns codiert und während des
Abrufens decodiert werden,
gekennzeichnet durch
- Einrichtungen zum Aufteilen der Datenworte in Bereiche durch Aufteilen jedes
Wortes in mehrere Abschnitte und Zusammenfügen eines Abschnittes aus
jedem von wenigstens zwei Worten, um einen der Bereiche zu bilden;
- Fehlerkorrektur-Codiereinrichtungen zum Erzeugen eines Fehlerkorrektur-
Codewertes für jeden Bereich;
- Einrichtungen zum Aufteilen jedes Bereiches in eine Mehrzahl von
Komponentenabschnitten;
- Einrichtungen zum Speichern jedes Komponentenabschnittes innerhalb eines
Bereiches in einem jeweils verschiedenen flüchtigen Speicherelement;
- Einrichtungen zum Abrufen der Mehrzahl der Komponentenabschnitte aus den
entsprechenden Speichergeräten für jeden Bereich;
- Fehlererkennungseinrichtungen zum Erzeugen von Syndromwerten für jeden
der abgerufenen Bereiche;
- Fehlerkorrektureinrichtungen zum Ändern von Datenbitwerten in den
abgerufenen Bereichen in Abhängigkeit von den entsprechenden Syndromwerten, die
einen Fehlerzustand anzeigen; und
- Einrichtungen zum Wiederzusammenfügen der abgerufenen Bereiche zu
Datenworten.
9. System nach Anspruch 8,
bei welchem die Komponentenabschnitte jedes Bereiches jeweils verschiedene Bits
sind, jedes Bit eines Speicherelementes somit Teil eines entsprechend
unterschiedlichen Bereiches ist und durch einen entsprechend unterschiedlichen ECC-Bereich
abgedeckt wird, was eine Vielfachbit-Fehlerkorrektur bei dem Auftreten eines
Gesamtspeicherelementfehlers bereitstellt.
10. System nach Anspruch 9,
bei welchem jedes der Speicherelemente einen Adresseingangsanschluß beinhaltet,
an welchen ein Adresswert angelegt wird, um Datenspeicherstellen innerhalb des
Speicherelementes zu identifizieren, in welchen entsprechende Bits der Bereiche
abgelegt sind, wobei das System weiterhin beinhaltet:
- an die Aufteilungseinrichtungen gekoppelte Einrichtungen zum Verknüpfen
mindestens eines Teiles des Adresswertes und des Bereiches; und
- an die Fehlerkorrekturcodiereinrichtung gekoppelte Einrichtungen zum
Erzeugen eines Fehlerkorrekturcodes aus dem verknüpften Bereichs- und
Adresswert.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US07/535,757 US5164944A (en) | 1990-06-08 | 1990-06-08 | Method and apparatus for effecting multiple error correction in a computer memory |
PCT/US1991/004037 WO1991019253A1 (en) | 1990-06-08 | 1991-06-07 | Multiple error correction in a computer memory |
Publications (2)
Publication Number | Publication Date |
---|---|
DE69112624D1 DE69112624D1 (de) | 1995-10-05 |
DE69112624T2 true DE69112624T2 (de) | 1996-04-25 |
Family
ID=24135637
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE69112624T Expired - Fee Related DE69112624T2 (de) | 1990-06-08 | 1991-06-07 | Mehrfehlerkorrektur eines rechnerspeichers. |
Country Status (5)
Country | Link |
---|---|
US (1) | US5164944A (de) |
EP (1) | EP0535086B1 (de) |
JP (1) | JPH05508042A (de) |
DE (1) | DE69112624T2 (de) |
WO (1) | WO1991019253A1 (de) |
Families Citing this family (66)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH03272224A (ja) * | 1990-03-20 | 1991-12-03 | Canon Inc | 情報信号処理方法 |
US5392288A (en) * | 1991-02-08 | 1995-02-21 | Quantum Corporation | Addressing technique for a fault tolerant block-structured storage device |
US5369650A (en) * | 1991-11-22 | 1994-11-29 | Honeywell, Inc. | Error detection and correction apparatus in a BY-4 RAM Device |
US5428761A (en) * | 1992-03-12 | 1995-06-27 | Digital Equipment Corporation | System for achieving atomic non-sequential multi-word operations in shared memory |
US5434870A (en) * | 1992-04-17 | 1995-07-18 | Unisys Corporation | Apparatus and method for verifying the authenticity of a circuit board |
US5455939A (en) * | 1992-06-17 | 1995-10-03 | Intel Corporation | Method and apparatus for error detection and correction of data transferred between a CPU and system memory |
JP2816512B2 (ja) * | 1992-07-27 | 1998-10-27 | 三菱電機株式会社 | 半導体記憶装置 |
US5817830A (en) * | 1992-08-14 | 1998-10-06 | Trustees Of The University Of Pennsylvania | Pyrrolic compounds |
US5493017A (en) * | 1992-08-14 | 1996-02-20 | The Trustees Of The University Of Pennsylvania | Ring-metalated porphyrins |
US5371199B1 (en) * | 1992-08-14 | 1995-12-26 | Univ Pennsylvania | Substituted porphyrins porphyrin-containing polymers and synthetic methods therefor |
US5599924A (en) * | 1992-08-14 | 1997-02-04 | Trustees Of The University Of Pennsylvania | Electron-deficient porphyrins and processes and intermediates for preparing same |
US5539754A (en) * | 1992-10-05 | 1996-07-23 | Hewlett-Packard Company | Method and circuitry for generating syndrome bits within an error correction and detection circuit |
JPH0887451A (ja) * | 1994-09-09 | 1996-04-02 | Internatl Business Mach Corp <Ibm> | アドレス変換を管理する方法およびアドレス変換マネージャ |
JPH08106733A (ja) * | 1994-10-07 | 1996-04-23 | Hitachi Ltd | 情報記憶媒体利用システム |
US5533189A (en) * | 1994-11-28 | 1996-07-02 | International Business Machines Corporation | System and method for error correction code generation |
US5745507A (en) * | 1995-03-31 | 1998-04-28 | International Business Machines Corporation | Systematic symbol level ECC for use in digital memory systems |
US5825788A (en) | 1996-05-20 | 1998-10-20 | Micron Technology Inc. | Data ordering for cache data transfer |
US5960453A (en) | 1996-06-13 | 1999-09-28 | Micron Technology, Inc. | Word selection logic to implement an 80 or 96-bit cache SRAM |
WO1998009219A1 (de) * | 1996-08-30 | 1998-03-05 | Siemens Aktiengesellschaft | Fehlererkennung in einem speichersystem |
US6076182A (en) * | 1996-12-16 | 2000-06-13 | Micron Electronics, Inc. | Memory fault correction system and method |
US5862154A (en) | 1997-01-03 | 1999-01-19 | Micron Technology, Inc. | Variable bit width cache memory architecture |
US6049856A (en) * | 1997-05-27 | 2000-04-11 | Unisys Corporation | System for simultaneously accessing two portions of a shared memory |
US5944843A (en) * | 1997-08-21 | 1999-08-31 | Hewlett-Packard Company | Method and apparatus for using the unused bits of a data packet to transmit additional information |
US6223301B1 (en) * | 1997-09-30 | 2001-04-24 | Compaq Computer Corporation | Fault tolerant memory |
US6480975B1 (en) * | 1998-02-17 | 2002-11-12 | International Business Machines Corporation | ECC mechanism for set associative cache array |
US6233716B1 (en) * | 1998-09-24 | 2001-05-15 | Sun Microsystems, Inc. | Technique for partitioning data to correct memory part failures |
US6141789A (en) * | 1998-09-24 | 2000-10-31 | Sun Microsystems, Inc. | Technique for detecting memory part failures and single, double, and triple bit errors |
US6574746B1 (en) * | 1999-07-02 | 2003-06-03 | Sun Microsystems, Inc. | System and method for improving multi-bit error protection in computer memory systems |
US6519717B1 (en) | 1999-10-06 | 2003-02-11 | Sun Microsystems Inc. | Mechanism to improve fault isolation and diagnosis in computers |
US6662333B1 (en) * | 2000-02-04 | 2003-12-09 | Hewlett-Packard Development Company, L.P. | Shared error correction for memory design |
US6691276B2 (en) * | 2001-06-25 | 2004-02-10 | Intel Corporation | Method for detecting and correcting failures in a memory system |
US20030163769A1 (en) * | 2002-02-27 | 2003-08-28 | Sun Microsystems, Inc. | Memory module including an error detection mechanism for address and control signals |
US6941493B2 (en) * | 2002-02-27 | 2005-09-06 | Sun Microsystems, Inc. | Memory subsystem including an error detection mechanism for address and control signals |
US6996766B2 (en) * | 2002-06-28 | 2006-02-07 | Sun Microsystems, Inc. | Error detection/correction code which detects and corrects a first failing component and optionally a second failing component |
US6973613B2 (en) * | 2002-06-28 | 2005-12-06 | Sun Microsystems, Inc. | Error detection/correction code which detects and corrects component failure and which provides single bit error correction subsequent to component failure |
US6976194B2 (en) * | 2002-06-28 | 2005-12-13 | Sun Microsystems, Inc. | Memory/Transmission medium failure handling controller and method |
US20040083334A1 (en) * | 2002-10-28 | 2004-04-29 | Sandisk Corporation | Method and apparatus for managing the integrity of data in non-volatile memory system |
US6996686B2 (en) * | 2002-12-23 | 2006-02-07 | Sun Microsystems, Inc. | Memory subsystem including memory modules having multiple banks |
US7779285B2 (en) * | 2003-02-18 | 2010-08-17 | Oracle America, Inc. | Memory system including independent isolated power for each memory module |
US7234099B2 (en) * | 2003-04-14 | 2007-06-19 | International Business Machines Corporation | High reliability memory module with a fault tolerant address and command bus |
US20040225944A1 (en) * | 2003-05-09 | 2004-11-11 | Brueggen Christopher M. | Systems and methods for processing an error correction code word for storage in memory components |
US7530008B2 (en) | 2003-08-08 | 2009-05-05 | Sun Microsystems, Inc. | Scalable-chip-correct ECC scheme |
US7188296B1 (en) | 2003-10-30 | 2007-03-06 | Sun Microsystems, Inc. | ECC for component failures using Galois fields |
US7206962B2 (en) * | 2003-11-25 | 2007-04-17 | International Business Machines Corporation | High reliability memory subsystem using data error correcting code symbol sliced command repowering |
JP4260688B2 (ja) * | 2004-06-09 | 2009-04-30 | 富士通株式会社 | データ送信装置、データ送受信システム、データ送信装置の制御方法およびデータ送受信システムの制御方法 |
US7353437B2 (en) * | 2004-10-29 | 2008-04-01 | Micron Technology, Inc. | System and method for testing a memory for a memory failure exhibited by a failing memory |
US7478307B1 (en) | 2005-05-19 | 2009-01-13 | Sun Microsystems, Inc. | Method for improving un-correctable errors in a computer system |
DE102006003146B4 (de) | 2006-01-23 | 2016-05-12 | Infineon Technologies Ag | Vorrichtung und Verfahren zum Auslesen eines Datenwortes und Vorrichtung und Verfahren zum Speichern eines Datenblocks |
JP4918824B2 (ja) * | 2006-08-18 | 2012-04-18 | 富士通株式会社 | メモリコントローラおよびメモリ制御方法 |
US20080148132A1 (en) * | 2006-10-26 | 2008-06-19 | Mavila Rajith K | Error detection and correction scheme for multi-level cell NAND flash |
US8433979B2 (en) | 2011-02-28 | 2013-04-30 | International Business Machines Corporation | Nested multiple erasure correcting codes for storage arrays |
US9058291B2 (en) | 2011-02-28 | 2015-06-16 | International Business Machines Corporation | Multiple erasure correcting codes for storage arrays |
US9141473B2 (en) * | 2011-03-25 | 2015-09-22 | Samsung Electronics Co., Ltd. | Parallel memory error detection and correction |
US9053050B2 (en) * | 2011-12-02 | 2015-06-09 | Synopsys, Inc. | Determining a desirable number of segments for a multi-segment single error correcting coding scheme |
US8874995B2 (en) | 2012-02-02 | 2014-10-28 | International Business Machines Corporation | Partial-maximum distance separable (PMDS) erasure correcting codes for storage arrays |
US8910017B2 (en) | 2012-07-02 | 2014-12-09 | Sandisk Technologies Inc. | Flash memory with random partition |
US9021328B2 (en) | 2013-01-15 | 2015-04-28 | International Business Machines Corporation | Shared error protection for register banks |
US9041428B2 (en) | 2013-01-15 | 2015-05-26 | International Business Machines Corporation | Placement of storage cells on an integrated circuit |
US9201727B2 (en) | 2013-01-15 | 2015-12-01 | International Business Machines Corporation | Error protection for a data bus |
US9043683B2 (en) | 2013-01-23 | 2015-05-26 | International Business Machines Corporation | Error protection for integrated circuits |
US9639418B2 (en) * | 2015-09-01 | 2017-05-02 | International Business Machines Corporation | Parity protection of a register |
US10489241B2 (en) * | 2015-12-30 | 2019-11-26 | Arteris, Inc. | Control and address redundancy in storage buffer |
US10162702B2 (en) | 2016-02-01 | 2018-12-25 | Lattice Semiconductor Corporation | Segmented error coding for block-based memory |
US11335430B2 (en) | 2019-03-26 | 2022-05-17 | Rambus Inc. | Error remapping |
US11210167B2 (en) * | 2019-10-28 | 2021-12-28 | Intel Corporation | Memory wordline isolation for improvement in reliability, availability, and scalability (RAS) |
CN112612637B (zh) * | 2020-12-10 | 2023-11-21 | 海光信息技术股份有限公司 | 内存数据存储方法、内存控制器、处理器芯片及电子设备 |
Family Cites Families (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3784976A (en) * | 1972-04-10 | 1974-01-08 | Ibm | Monolithic array error detection system |
US4228496A (en) * | 1976-09-07 | 1980-10-14 | Tandem Computers Incorporated | Multiprocessor system |
US4205324A (en) * | 1977-12-23 | 1980-05-27 | International Business Machines Corporation | Methods and means for simultaneously correcting several channels in error in a parallel multi channel data system using continuously modifiable syndromes and selective generation of internal channel pointers |
JPS58105500A (ja) * | 1981-11-23 | 1983-06-23 | スペリ・コ−ポレ−シヨン | メモリ駆動回路故障検出システム及び方法 |
IL67664A (en) * | 1982-01-19 | 1987-01-30 | Tandem Computers Inc | Computer memory system with data,address and operation error detection |
US4506364A (en) * | 1982-09-30 | 1985-03-19 | International Business Machines Corporation | Memory address permutation apparatus |
US4819154A (en) * | 1982-12-09 | 1989-04-04 | Sequoia Systems, Inc. | Memory back up system with one cache memory and two physically separated main memories |
JPS60183653A (ja) * | 1984-03-01 | 1985-09-19 | Toshiba Corp | ビツト・エラ−検出機能を備えたメモリ |
US4667326A (en) * | 1984-12-20 | 1987-05-19 | Advanced Micro Devices, Inc. | Method and apparatus for error detection and correction in systems comprising floppy and/or hard disk drives |
JPS6276825A (ja) * | 1985-09-30 | 1987-04-08 | Hitachi Ltd | 符号誤り訂正方法 |
US4747080A (en) * | 1985-11-12 | 1988-05-24 | Nippon Telegraph & Telephone Corporation | Semiconductor memory having self correction function |
US4745604A (en) * | 1986-10-20 | 1988-05-17 | International Business Machines Corporation | Method and apparatus for transferring data between a host processor and a data storage device |
US4775978A (en) * | 1987-01-12 | 1988-10-04 | Magnetic Peripherals Inc. | Data error correction system |
IT1202527B (it) * | 1987-02-12 | 1989-02-09 | Honeywell Inf Systems | Sistema di memoria e relativo apparato di rivelazione-correzione di errore |
US4862463A (en) * | 1987-07-20 | 1989-08-29 | International Business Machines Corp. | Error correcting code for 8-bit-per-chip memory with reduced redundancy |
US4993028A (en) * | 1988-09-07 | 1991-02-12 | Thinking Machines Corporation | Error detection and correction coding |
US4951284A (en) * | 1988-12-14 | 1990-08-21 | International Business Machines Corporation | Method and means for correcting random and burst errors |
-
1990
- 1990-06-08 US US07/535,757 patent/US5164944A/en not_active Expired - Lifetime
-
1991
- 1991-06-07 WO PCT/US1991/004037 patent/WO1991019253A1/en active IP Right Grant
- 1991-06-07 JP JP91511488A patent/JPH05508042A/ja active Pending
- 1991-06-07 EP EP91911690A patent/EP0535086B1/de not_active Expired - Lifetime
- 1991-06-07 DE DE69112624T patent/DE69112624T2/de not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
EP0535086A1 (de) | 1993-04-07 |
WO1991019253A1 (en) | 1991-12-12 |
JPH05508042A (ja) | 1993-11-11 |
EP0535086B1 (de) | 1995-08-30 |
DE69112624D1 (de) | 1995-10-05 |
US5164944A (en) | 1992-11-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE69112624T2 (de) | Mehrfehlerkorrektur eines rechnerspeichers. | |
DE3586851T2 (de) | Fehlerkorrekturverfahren und anordnung fuer chips mit multibitausgabe. | |
DE60001370T2 (de) | Verfahren und vorrichtung zur erkennung von doppelbitfehlern und korrektur von fehlern durch bauelementfehler verursacht | |
DE60006031T2 (de) | Speicherfehlerkorrektur mit einem redundanten geschnittenen Speicher und Standard ECC Mechanismus | |
DE69220818T2 (de) | Verfahren und Einrichtung zur Fehlererkennung in Recherspeichern versehen mit Mehrfach-bit-Ausgängen | |
DE3853206T2 (de) | Verfahren und gerät zur byteschreibfehlerkodierung. | |
DE69522457T2 (de) | Verfahren und vorrichtung zur automatischen entfernung von ecc-speicherfehlern mittels hardware | |
DE69026743T2 (de) | Fehlertolerantes Speichersystem | |
DE10133595B4 (de) | Pufferschaltung, Speicherzugriffsverfahren und Reed-Solomon-Decoder | |
DE2260850C2 (de) | Schaltungsanordnung zur Erkennung von Einzel- und Mehrfachfehlern und zur korrektur von Einzel- und bestimmten Mehrfachfehlern | |
DE2060643C3 (de) | Schaltungsanordnung zur Korrektur von Einzelfehlern | |
US4688219A (en) | Semiconductor memory device having redundant memory and parity capabilities | |
DE69528615T2 (de) | Verfahren und Struktur zur Indexierung eines Speichers mit niedriger Latenzzeit | |
DE60015753T2 (de) | System und verfahren zum schutz von daten und zur korrektur von bitfehlern folgend aus komponentenfehlern | |
DE102013215055B4 (de) | Schaltungsanordnung, Vorrichtung, Verfahren und Computerprogramm mit modifiziertem Fehlersyndrom zur Fehlererkennung von permanenten Fehlern in Speichern | |
DE102005028221B4 (de) | Vorrichtung und Verfahren zum Schutz der Integrität von Daten | |
EP0105402A2 (de) | Gerät zur Permutation von Speicheradressen | |
DE102015113414B4 (de) | Fehlerkorrektur unter Verwendung von WOM-Codes | |
DE102017103347B4 (de) | Verarbeitung von daten in speicherzellen eines speichers | |
DE3209679A1 (de) | Halbleiter-speichereinrichtung | |
JPS58501791A (ja) | 低いストレ−ジオ−バヘッドおよび速い訂正を持つエラ−訂正メモリ | |
DE69317766T2 (de) | Fehlerkorrekturgerät für digitale Daten zur Korrektur von Einfachfehlern (sec), von Doppelfehlern (ded) und Vielfacheinzelbytefehlern (sbd) und zur Korrektur von Einzelbytefehlern ungerader Anzahl (odd sbc) | |
DE112022001547T5 (de) | Speicheradressenschutz | |
DE60215687T2 (de) | Fehlerkorrektion von multibit-baueinheiten mit unbeschränkter erkennung von doppelfehlern | |
EP1222545B1 (de) | Verfahren und schaltungsanordnung zum speichern von datenworten in einem ram modul |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8364 | No opposition during term of opposition | ||
8339 | Ceased/non-payment of the annual fee |