专利摘要:
Bei einem Ausführungsbeispiel ist die Erfindung auf einn System zum Verarbeiten von Speichertransaktionsanforderungen gerichtet. Das System umfaßt eine Steuerung zum Speichern und Wiedergewinnen von Cacheleitungen und einen Puffer, der mit der Steuerung und zumindest einem Bus kommunikativ gekoppelt ist. Die Steuerung formatiert Cacheleitungen zu einer Mehrzahl von Abschnitten, implementiert ein Fehlerkorrekturcodeschema (ECC-Schema), um einen Einzelbytefehler in einem ECC-Codewort für Paare der Mehrzahl von Abschnitten zu korrigieren, speichert jeweilige Paare der Mehrzahl von Abschnitten, derart, daß jedes Einzelbyte der jeweiligen Paare der Mehrzahl von Abschnitten in einer einzigen einer Mehrzahl von Speicherkomponenten (102) gespeichert wird. Wenn die Steuerung eines Speichertransaktionsanforderung, die Markierungsdaten modifiziert, ohne Cacheleitungsdaten zu modifizieren, verarbeitet, berechnet der Puffer neue ECC-Daten unter Verwendung vorheriger ECC-Daten, vorheriger Markierungsdaten und der neuen Markierungsdaten, ohne eine Kommunikation von Cacheleitungsdaten zu erfordern.
公开号:DE102004003352A1
申请号:DE200410003352
申请日:2004-01-22
公开日:2004-12-16
发明作者:Theodore C. Plano Briggs
申请人:Hewlett Packard Development Co LP;
IPC主号:G06F12-08
专利说明:
[0001] Dievorliegende Erfindung bezieht sich auf eine Übertragung von Daten von einemverteilten Speicher zu einem Prozessor unter Verwendung einer Übereinstimmungssteuerungbzw. Kohärenzsteuerung.
[0002] Beieiner Architektur von verteilten, gemeinsam verwendeten Speichernkann eine Mehrzahl von Prozessoren von einer Mehrzahl von gemeinsam verwendetenSpeicherressourcen lesen und in dieselbe schreiben. Abschnitte dergemeinsam verwendeten Speicherressourcen können verschiedenen Zuständen unterworfensein. Beispielsweise kann einer der Mehrzahl von Prozessoren einebestimmte Seite eines Speichers übereinen Zeitraum verriegeln, oder eine Gruppe der Mehrzahl von Prozessorenkann einen gemeinsamen Zugriff auf eine bestimmte Seite haben. Fernerkommuniziert die Mehrzahl von Prozessoren allgemein durch eine physischeVerbindung mit der Mehrzahl von gemeinsam verwendeten Speicherressourcen.Die Mehrzahl von Prozessoren verwendet in der Regel Cachespeicherungsmechanismen,um die Leistungsfähigkeitvon Speicherzugriffen zu optimieren und dadurch die Notwendigkeit,die physische Verbindung fürjede Speichertransaktion zu verwenden, zu vermeiden. Die Verwendungvon Cachespeicherungsmechanismen in einem verteilten, gemeinsamverwendeten Speicherschema beinhaltet ein Bereitstellen eines Nachverfolgungsschemasoder -protokolls, um eine Übereinstimmungzwischen Prozessoren, die auf dieselben physischen Speicherplätze zugreifen,zu gewährleisten.
[0003] Allgemeingibt es zwei Gruppen von Protokollen, die sich mit einer Cachespeicherübereinstimmungin einer Architektur von verteilten, gemeinsam verwendeten Speichernbeschäftigen.Im einzelnen könnenRundsendungsprotokolle verwendet werden, bei denen eine Schreibtransaktionan alle Prozessoren in dem System rundgesendet wird. In der Regel erfolgtdie Rundsendung durch die Kommunikation von Schreibtransaktionenauf einem gemeinsam verwendeten Bus. Rundsendeprotokolle werdenallgemein als „Schnüffel"-Protokolle (snoopyprotocols) bezeichnet, da alle Prozessoren den Bus bezüglich Schreibtransaktionen überwachenund entsprechende Maßnahmenergreifen, falls eine Schreibtransaktion erfaßt wird, die eine in ihremjeweiligen Cachespeicher enthaltene Leitung beeinflußt.
[0004] Alternativdazu könnenverzeichnisbasierte Cachespeicherübereinstimmungsprotokolle verwendetwerden. Bei verzeichnisbasierten Cachespeicherübereinstimmungsprotokollenwird eine Schreibtransaktion lediglich an diejenigen Prozessorenweitergeleitet, von denen man weiß, daß sie eine Kopie der jüngst geändertenCacheleitung besitzen. In diesen Protokollen werden Zustandsinformationenin einem zentralisierten oder verteilten Verzeichnis unterhalten,um den Zustand von Cacheleitungen nachzuverfolgen. Ein anfordernderCachespeicher kann bei dem Verzeichnis anfragen, um die Besitzerjeglicher Cachespeicher, die dieselben Cacheleitungen gemeinsamverwenden, zu bestimmen. Invalidierungssignale oder Schreibaktualisierungenwerden lediglich an Cachespeicher gesandt, die in dem Verzeichnisidentifiziert sind. Verzeichnisbasierte Cachespeicherübereinstimmungsprotokollesind vorteilhaft, da kein Bedarf besteht, alle Prozessoren auf einemeinzigen Bus zu verbinden. Überdieswird das Verkehrsaufkommen überdie Verbindung im Vergleich zu Schnüffel-Protokollen verringert.Somit eignen sich verzeichnisbasierte Cachespeicherübereinstimmungsprotokollebesser fürskalierbare Architekturen.
[0005] Fernerkönnenallgemein erhältlicheSpeicher (z. B. dynamischer Direktzugriffsspeicher (DRAM)), diebei Architekturen von verteilten Speichern verwendet werden, problematischsein. Im einzelnen besteht eine Wahrscheinlichkeit, daß, wenn Datenin einem Speicher gespeichert und anschließend wiedergewonnen werden,die wiedergewonnenen Daten eine gewisse Korruption erleiden. Beispielsweisespeichert ein DRAM Informationen in relativ kleinen Kondensatoren,die aufgrund einer Vielzahl von Mechanismen eine vorübergehendeKorruption erfahren können. überdieskann eine Datenkorruption infolge von Hardwareausfällen, z.B. losen Speichermodulen, defekten Chips, Leitungs- oder Verdrahtungsfehlernund/oder dergleichen, auftreten. Die durch derartige Ausfälle verursachtenFehler werden als wiederholbare Fehler bezeichnet, da derselbe physischeMechanismus wiederholt dasselbe Muster von Datenkorruption bewirkt.
[0006] Umdieses Problem anzugehen, wurden bereits eine Vielfalt von Fehlererfassungs-und Fehlerkorrekturalgorithmen entwickelt. Im allgemeinen verwendenFehlererfassungsalgorithmen typischerweise redundante Daten, diezu einer Zeichenfolge von Daten hinzugefügt werden. Die redundantenDaten werden unter Verwendung einer Prüfsummen- oder Zyklische-Redundanzprüfung-Operation(CRC-Operation, CRC = cyclic redundancy check, zyklische Redundanzprüfung) berechnet.Wenn die Zeichenfolge von Daten und die ursprünglichen redundanten Datenwiedergewonnen werden, werden die redundanten unter Verwendung derwiedergewonnenen Daten neu berechnet. Falls die neu berechnetenredundanten Daten nicht mit den ursprünglichen redundanten Daten übereinstimmen,wird eine Datenkorruption bei den wiedergewonnen Daten erfaßt.
[0007] Fehlerkorrekturcode-Algorithmen(ECC-Algorithmen, ECC = error correction code, Fehlerkorrekturcode)arbeiten auf ähnlicheWeise wie Fehlererfassungsalgorithmen. Wenn Daten gespeichert werden,werden redundante Daten berechnet und in Zuordnung zu den Datengespeichert. Wenn die Daten und die redundanten Daten anschließend wiedergewonnenwerden, werden die redundanten Daten neu berechnet und mit den wiedergewonnenenredundanten Daten verglichen. Wenn ein Fehler erfaßt wird(z. B. die ursprünglichenund die neu berechneten redundanten Daten stimmen nicht überein), können dieursprünglichenund die neu berechneten redundanten Daten verwendet werden, um bestimmte Fehlerkategorienzu korrigieren. Ein Beispiel eines bekannten ECC-Schemas ist indem Dokument „SingleByte Error Correcting-Double Byte Error Detecting Codes for MemorySystems" von ShigeoKaneda und Eiji Fujiwara beschrieben, das in IEEE TRANSAC-TIONS on COMPUTERS,Bd. C31, Nr. 7, Juli 1982, veröffentlichtwurde.
[0008] AllgemeinkönnenECC-Algorithmen in einer Anzahl von Komponenten in einem Computersystem eingebettetsein, um eine Datenkorruption zu korrigieren. Häufig können ECC-Algorithmen in Speichersteuerungen,wie z. B. kohärentenSpeichersteuerungen, in Architekturen von verteilten und gemeinsamverwendeten Speichern eingebettet sein. Die Implementierung desECC-Algorithmus setzt der Implementierung einer Speichersteuerungallgemein Grenzen, z. B. Busbreite und -frequenz. Dementsprechendkann die Implementierung des ECC-Algorithmus Speichertransaktionenfunktionsbedingte Beschränkungenauferlegen.
[0009] BekannteSysteme implementieren Cachespeicherübereinstimmungsschemata undECC-Algorithmen in einem Speichersteuerungssystem. Bei bekanntenSystemen, die eine Einzelbitfehlerkorrektur verwenden, ist es fernermöglich,Verzeichnismarkierungsdaten (die Daten, die den Zustand einer Cacheleitunggemäß dem Cachespeicherübereinstimmungsschemadefinieren) zu aktualisieren, ohne eine Kommunikation der Cacheleitungsdatenzu erfordern. Im einzelnen könnendie ECC-Daten, die der Cacheleitung zugeordnet sind, aktualisiertwerden, ohne daß dieKommunikation und Verarbeitung der Cacheleitungsdaten erforderlichist. Jedoch weisen bekannte Systeme, die Markierungsdaten auf diese Weiseaktualisieren, aufgrund von Beschränkungen, die mit dem Einzelbit-ECC-Algorithmuseinhergehen, eine schlechte Busausnutzung auf. Insbesondere erfordernbekannte Systeme einen Betrieb übervier Einzelbit-ECC-Domains und erfordern somit einen sehr breitenBus (z. B. 576 Bits), wodurch bewirkt wird, daß die Busausnutzung geringist.
[0010] DieAufgabe der vorliegenden Erfindung besteht darin, Systeme und einVerfahren zu schaffen, die eine Aktualisierung von Markierungsdatenbei verbesserter Ausnutzung ermöglichen.
[0011] DieseAufgabe wird durch Systeme gemäß Anspruch1 oder 10 sowie durch ein Verfahren gemäß Anspruch 19 gelöst.
[0012] Beieinem Ausführungsbeispielist die Erfindung auf ein System zum Verarbeiten von Speichertransaktionsanforderungengerichtet. Das System umfaßteine Steuerung zum Speichern und Wiedergewinnen von Cacheleitungenund einen Puffer, der mit der Steuerung und zumindest einem Buskommunikativ gekoppelt ist. Die Steuerung formatiert Cacheleitungenzu einer Mehrzahl von Abschnitten, implementiert ein Fehlerkorrekturcodeschema (ECC-Schema),um einen Einzelbytefehler in einem ECC-Codewort für Paareder Mehrzahl von Abschnitten zu korrigieren, speichert jeweiligePaare der Mehrzahl von Abschnitten derart, daß jedes Einzelbyte der jeweiligenPaare der Mehrzahl von Abschnitten in einer einzigen einer Mehrzahlvon Speicherkomponenten gespeichert wird. Wenn die Steuerung eineSpeichertransaktionsanforderung, die Markierungsdaten modifiziert,ohne Cacheleitungsdaten zu modifizieren, verarbeitet, berechnetder Puffer neue ECC-Daten unter Verwendung vorheriger ECC-Daten,vorheriger Markierungsdaten und der neuen Markierungsdaten, ohneeine Kommunikation von Cacheleitungsdaten zu erfordern.
[0013] BevorzugteAusführungsbeispieleder vorliegenden Erfindung werden nachfolgend Bezug nehmend aufdie beiliegenden Zeichnungen nähererläutert.Es zeigen:
[0014] 1 ein Speichersteuerungssystemgemäß repräsentativenAusführungsbeispielen;
[0015] 2 ein Cacheleitungsformat,das durch eine Speichersteuerung, die gemäß repräsentativen Ausführungsbeispielenimplementiert ist, verwendet werden kann;
[0016] 3 ein Cacheleitungslayout,das verwendet werden, kann, um Cachedaten durch eine Speichersteuerung,die gemäß repräsentativenAusführungsbeispielenimplementiert ist, in einem Speicher zu speichern;
[0017] 4 ein Flußdiagrammzum Verarbeiten von Cachedaten, die an einen ECC-Algorithmus gemäß repräsentativenAusführungsbeispielenangepaßtsind;
[0018] 5 ein Speichersystem, beidem ein ECC-Algorithmus selektiv eine Löschmodusfehlerkorrektur aufDaten anwenden kann, die von begrenzten Abschnitten des Speichersystemswiedergewonnen werden;
[0019] 6 und 7 Flußdiagramme zum Verarbeitenvon Cachedaten, die an einen ECC-Algorithmus gemäß repräsentativen Ausführungsbeispielen angepaßt sind;
[0020] 8 ein Flußdiagramm,das einer Modifizierung an Markierungsdaten gemäß repräsentativen Ausführungsbeispielenzugeordnet ist;
[0021] 9 bis 12 XOR-Bäume zum Berechnen neuer ECC-Daten,die ei ner Markierungsaktualisierungstransaktion gemäß repräsentativenAusführungsbeispielenzugeordnet sind; und
[0022] 13 und 14 andere XOR-Bäume zum Berechnen neuer ECC-Daten,die einer Markierungsaktualisierungstransaktion gemäß repräsentativenAusführungsbeispielenzugeordnet sind.
[0023] RepräsentativeAusführungsbeispieleimplementieren vorteilhafterweise einen Bytefehlerkorrketur-ECC-Algorithmusin einem Speichersystem, um eine erhöhte Zuverlässigkeit des Speichersystems zuliefern. Im einzelnen könnenrepräsentativeAusführungsbeispieleCacheleitungen in einem Speicher speichern, indem sie die verschiedenenBits der Cacheleitung übereine Mehrzahl von DRAM-Komponenten verteilen. Wenn der Byte-ECC-Algorithmus miteiner entsprechenden Verteilung von Daten über die Mehrzahl von DRAM-Komponentenkombiniert wird, könnenrepräsentativeAusführungsbeispiele denAusfall einer gesamten DRAM-Komponente tolerieren, ohne den Ausfalldes gesamten Speichersystems zu bewirken. Repräsentative Ausführungsbeispielekönnenferner eine Dual-Zyklus-Implementierung eines ECC-Schemas verwenden,um das ECC-Schema so anzupassen, daß es die Ausnutzung eines zugeordnetenBusses optimiert. RepräsentativeAusführungsbeispielekönnenselektiv einen „Lösch"-Modus für den ECC-Algorithmus freigeben,wenn ein wiederholbarer Fehler identifiziert wird, um die Wahrscheinlichkeiteines Korrigierens von zusätzlichenFehlern zu erhöhen.Der Löschmoduskann auf einen begrenzten Abschnitt des Speichersystems angewendetwerden, um die Wahrscheinlichkeit falsch diagnostizierten Datenkorruptionzu verringern.
[0024] RepräsentativeAusführungsbeispieleoptimieren ferner eine Verarbeitung von Cacheleitungen, die in einerMehrzahl von DRAM-Komponenten in einer Architektur von verteiltenSpeichern, die eine Cachespeicherübereinstimmung verwendet, gespeichertsind. Im einzelnen könnenausgewählteSpeichertransaktionen in dem Cachespeicherübereinstimmungsschema eineVerzeichnismarkierung, die einer Cacheleitung zugeordnet ist, beeinflussen, ohnedie Daten, die der Cacheleitung zugeordnet sind, zu beeinflussen.Für dieseTypen von Speichertransaktionen muß die Cachesteuerung, die dasCachespeicherübereinstimmungsprotokollimplementiert, nicht kommunizieren und alle Cacheleitungsdaten verarbeiten,um eine Veränderungbei den Markierungsdaten zu bewirken.
[0025] Stattdessen wird ein „intelligenterPuffer" verwendet,um die Markierungsdaten zu modifizieren und um die ECC-Daten gemäß den modifizierten Markierungsdatenzu modifizieren. Dadurch kann eine Busausnutzung und Speicherkomponentenausnutzungoptimiert werden.
[0026] RepräsentativeAusführungsbeispielekönneneinen geeigneten Reed-Solomon-Burst-Fehlerkorrekturcode verwenden,um eine Bytekorrektur durchzuführen.Bei Reed-Solomon-Algorithmen besteht das Codewort aus n m-Bit-Zahlen: C = (c, cn-2, ..., c0).Das Codewort kann mathematisch durch das folgende Polynom einesGrades n dargestellt werden, wobei die Koeffizienten (Symbole) Elementein dem finiten Galios-Feld sind: (2m): C(x)= (cxn-1 + cn-2xn-2 ... + c0). DasCodewort wird unter Verwendung eines Generatorpolynoms (das üblicherweisemit g(x) bezeichnet wird) erzeugt. Im einzelnen werden die Nutzlastdaten(durch u(x) bezeichnet) zum systematischen Codieren mit dem Generatorpolynommultipliziert, d. h. C(x) = xn-ku(x) + [xn-ku(x)mod(g(x))]. Ein systematisches Codierenbewirkt, daß dieursprünglichenNutzlastbits explizit in definierten Positionen des Codeworts erscheinen.Die ursprünglichenNutzlastbits werden durch xn-ku(x) dargestellt,und die Redundanzinformationen werden durch [xn-ku(x)mod(g(x))]dargestellt.
[0027] Wenndas Codewort anschließendaus dem Speicher wiedergewonnen wird, kann das wiedergewonnene Codewortaufgrund eines vorübergehendenAusfalls und/oder eines wiederholbaren Ausfalls eine Datenkorruptionerleiden. Das wiedergewonnene Codewort wird durch das Polynom r(x)dargestellt. Falls r(x) eine Datenkorruption umfaßt, unterscheidet sichr(x) durch ein Fehlersignal e(x) von C(x). Die Redundanzinformationenwerden aus dem wiedergewonnen Codewort neu berechnet. Die ursprünglichenRedundanzinformationen, wie sie in dem Speicher gespeichert sind,und die erneut berechneten Redundanzinformationen werden unter Verwendung einerExklusiv-Oder-Verknüpfung(XOR-Verknüpfung)kombiniert, um das Syndrompolynom s(x) zu bilden. Das Syndrompo lynomist ebenfalls auf das Fehlersignal bezogen. Unter Verwendung dieserBeziehung könnenmehrere Algorithmen das Fehlersignal bestimmen und somit die Fehlerin den durch r(x) dargestellten korrumpierten Daten korrigieren.Diese Techniken umfassen eine Fehler-Lokalisierer-Polynom-Bestimmung, eineWurzelfindung zum Bestimmen der Positionen eines Fehlers bzw. vonFehlern, und eine Fehlerwertbestimmung zum Bestimmen des richtigenBitmusters des Fehlers bzw. der Fehler. Weitere Einzelheiten, diesich auf die Wiedergewinnung des Fehlersignals e(x) aus dem Syndroms(x) gemäß Reed-Solomon-Burst-Fehlerkorrekturcodes beziehen,finden sich in dem Dokument THE ART OF ERROR CORRECTING CODES vonRobert H. Morelos-Zaragoza, Seiten 33–72 (2002), das durch Bezugnahmein das vorliegende Dokument aufgenommen ist.
[0028] Löschungenbei Fehlerkorrekturcodes sind spezifische Bits oder spezifischeZeichenfolgen von Bits, von denen man weiß, daß sie korrumpiert sind, ohneauf die ECC-Funktionalität zurückzugreifen. Beispielsweisekönnenspezifische Bits aufgrund eines Hardwareausfalls, beispielsweiseeiner fehlerhaften DRAM-Komponente, eines Verdrahtungsfehlers und/oderdergleichen als korrumpiert identifiziert werden. Eine Einführung vonLöschungenin den ECC-Algorithmus ist vorteilhaft, da die Positionen der gelöschten Bitsbekannt sind. Angenommen, d stellt den minimalen Abstand eines Codesdar, v stellt die Anzahl von Fehlern dar und μ stellt die Anzahl von Löschungendar, die in einem empfangenen ECC-Codewort enthalten sind. Anschließend wird derminimale Hamming-Abstand zwischen Codewörtern in den nicht-gelöschten Abschnittenauf zumindest d–μ verringert.Es folgt, daß dieFehlerkorrekturfähigkeit[(d – μ – 1)/2]beträgtund die folgende Beziehung aufrechterhalten wird: d > 2v + μ. Im einzelnenzeigt diese Ungleichheit, daß esfür einenfeststehenden minimalen Abstand zweimal so „einfach" ist, eine Löschung zu korrigieren, wiees ist, einen zufälligpositionierten Fehler zu korrigieren.
[0029] BeirepräsentativenAusführungsbeispielen kannder ECC-Algorithmuseiner Speichersteuerung die Decodierungsprozedur eines [36, 33,4]-verkürztenReed-Solomon-Engerfassungscodes(bei dem die Codewortlänge36 Symbole beträgt,die Nutzlastlänge33 Symbole beträgtund der Hamming-Abstand 4 Bits beträgt) über das finite Galios-Feld(28) implementieren. Das finite Galios-Felddefiniert, daß die Symbollänge 8 Bitsbeträgt.Durch ein derartiges Anpassen des ECC-Algorithmus kann der ECC-Algorithmusin zwei unterschiedlichen Modi arbeiten. In einem ersten Modus kannder ECC-Algorithmus eine Einzelbyte-Korrektur durchführen, wobeisich der Begriff „Einzelbyte" auf 8 zusammenhängende Bitsbezieht, die auf 8-Bit-Grenzen ausgerichtet sind. Ein Einzelbytefehlerbezieht sich auf jegliche Anzahl von Bits in einem Einzelbyte, diekorrumpiert sind. Fehler, die an mehr als einer Byteposition eineBitkorruption bewirken, werden als „Mehrbytefehler" bezeichnet, dieals nichtkorrigierbar erfaßtwerden. In dem zweiten Modus (dem Löschmodus) wird eine Byteposition (oderBytepositionen) in dem ECC-Codewort als eine Löschung über eine Registereinstellungspezifiziert. Die Position kann durch einen Software- oder Firmwareprozeß als wiederholbarerFehler identifiziert werden, der durch einen Hardwareausfall bewirkt wird.Da die Position des Fehlers bekannt ist, kann der ECC-Algorithmusin dem Löschmodusden Bytefehler, der der Löschungzugeordnet ist, und einen anderen zufällig lokalisierten Einzelbytefehler(oder zwei Lösch-Einzelbytefehler,falls gewünscht)korrigieren.
[0030] UnterBezugnahme auf die Zeichnungen zeigt 1 einSystem 100, das angepaßtist, um einen geeigneten ECC-Code, beispielsweise den [36, 33, 4]-verkürzten Reed-Solomon-Engerfassungscode,gemäß repräsentativenAusführungsbeispielen zuimplementieren. Das System 100 weist eine Mehrzahl vonDoppelreihenspeichermodulen (DIMMs) auf, die als 110a und 110b gezeigtsind. Zusätzliche DIMMs 110 (nichtgezeigt) können,falls gewünscht, verwendetwerden, wie anschließendausführlicher erläutert wird.Jedes der DIMMs 110a und 110b umfaßt eineMehrzahl von 4 Bits breiten DRAM-Komponenten 102 (dieals DRAM0–DRAM17bzw. DRAM18–DRAM35gezeigt sind). Somit bilden die DIMMs 110a und 110b einenlogischen Rang 101, der eine Breite von 144 Bits aufweist.Die DIMMs 110a und 110b sind durch einen Bus 103 (odermehrere Busse) mit einer Mehrzahl von Pufferchips 104a und 104b kommunikativgekoppelt. Die Pufferchips 104a und 104b arbeitenparallel, um Cacheleitungen zu puffern und zwischen jeweiligen Bussenzu verschieben. Im einzelnen kann der Bus 103 eine Breite von144 Bits bei 250 MT/s besitzen, und der Bus 105 kann eineBreite von 72 Bits besitzen und bei 500 MT/s arbeiten. Ferner kanneiner oder könnenbeide Pufferchips 104a und 104b Verzeichnismarkierungsdatenund zugeordnete ECC-Daten modifizieren, ohne eine Kommunikationvon Cacheleitungsdaten zu erfordern, wie anschließend ausführlichererläutertwird. Der Bus 105 kann durch einen Multiplexer/Demultiplexer(MUX/DEMUX) 106 demultiplexiert werden. Eine Steuerung 108 kann über zweiunidirektionale 144-Bit-Busse (einen für ankommende Daten und denanderen fürausgehende Daten) mit dem Demultiplexer 106 kommunizieren.
[0031] DieSteuerung 108 kann Cacheleitungen verarbeiten, die Datenzugeordnet sind, die in den DIMMs 110a und 110b gemäß repräsentativenAusführungsbeispielengespeichert sind. Durch ein geeignetes Verteilen von Daten über dieverschiedenen DRAM-Komponenten 102 und durch ein Verwenden einesauf geeignete Weise angepaßtenBytekorrektur-ECC-Algorithmusermöglichtdas System 100, daß einegesamte DRAM-Komponente 102 ausfällt, ohne den Ausfall des Speichersystems 100 zubewirken. Die Fehlerkorrekturfunktionalität der Steuerung 108 kanneinen ECC unter Verwendung von standardmäßigen Logikentwürfen implementieren.Im einzelnen kann die ECC-Funktionalität der Steuerung 108 unterVerwendung von XOR-Bäumen, Schieberegistern,Nachschlagtabellen und/oder anderer logischer Elemente implementiertwerden. Überdieskann die Steuerung 108 selektiv eine Löschmodus verarbeitung für Daten,die in dem DIMM 110a gespeichert sind, unter Verwendungdes Registers 109 ermöglichen.
[0032] Die 2 und 3 zeigen ein Cacheleitungsformat undein Cacheleitungslayout füreine Implementierung durch die Steuerung 108, um die Speicherungvon Cachedaten übereine Mehrzahl von DRAM-Komponenten 102 gemäß repräsentativen Ausführungsbeispielenzu ermöglichen.Im einzelnen zeigt ein Cacheleitungsformat 200 in 2 das Cacheleitungsformatfür eineKommunikation von Cachedaten zu und von Prozessoren (nicht in den Zeichnungengezeigt), z. B. bei einer Architektur von verteilten, gemeinsamverwendeten Speichern. Die jeweiligen Bits (von 0 bis 1.023 indexiert)der Cacheleitung sind in eine Mehrzahl von Gruppen (die durch DATA0–DATA7 (DATEN0–DATEN7)bezeichnet sind) aufgeteilt. Jede der Gruppen enthält 128 Bits.
[0033] DasCacheleitungslayout 300 in 3 veranschaulicht,wie die jeweiligen Bits von Cacheleitungen, die von Prozessorenempfangen werden, durch die Steuerung 108 mit ECC-Informationen und Verzeichnismarkierungsinformationenin den DRAM-Komponenten 102 gespeichert werden. Die ECC-Bits(die Redundanzinformationen) könnenunter Verwendung des Reed-Solomon-Code-Algorithmus berechnet werden.Die Verzeichnismarkierungsinformationen können gemäß einem Speicherübereinstimmungsschemaerzeugt und aktualisiert werden, um das System 100 zu befähigen, ineiner Architektur von verteilten und gemeinsam verwendeten Speichernzu arbeiten. Das Cacheleitungslayout 300 unterteilt dieCacheleitungsdaten, Markierungsdaten und ECC-Bits in acht Abschnitte(als 301–308 gezeigt),wobei jeder Abschnitt 144 Datenbits aufweist. Jeder Abschnitt umfaßt 12 ECC-Bits.Die ECC-Bits werden verwendet, um Fehler in zwei jeweiligen Abschnittenzu korrigieren. Beispielsweise werden die 12 ECC-Bits des Abschnitts 301 unddie 12 ECC-Bits des Abschnitts 302 verwendet, um Bytefehlerin dem ECC-Codewort, das durch beide Abschnitte 301 und 302 gebildetist, zu korrigieren. Ferner sind die 26 Bits von Markierungsdatenin dem Ab schnitt 301 gespeichert. Die Cacheleitungsdatengruppen (DATA7–DATA0)sind durch Abschnitte 301–309 gestaffelt. Wiezuvor erwähntwurde, bilden die DIMMs 110a und 110b einen logischenRang 101, der eine Breite von 144 Bits aufweist. Das Cacheleitungslayout 300 istgemäß dem physischenLayout der DIMMs 110a und 110b angepaßt. Wenndas Cacheleitungslayout 300 auf diese Weise angepaßt ist, kannjeder der Abschnitte 301–308 über denlogischen Rang 101 gespeichert sein.
[0034] DurchVerteilen jedes der Abschnitte 301–308 über DRAM-Komponenten 102 unddurch Verwenden des erörtertenReed-Solomon-Codes kanneine gesamte DRAM-Komponente 102 ausfallen, ohne den Ausfalldes Speichersystems 100 zu bewirken. Im einzelnen können immerjeweils zwei Abschnitte (z. B. Abschnitte 301 und 302),die die 24 ECC-Bits gemeinsam verwenden, über den logischen Rang 101 gespeichertsein. Die geradzahligen Halbbytes (d. h. die ersten vier Bits einesEinzelbytes) des ECC-Codeworts könnenwährendeines ersten Buszyklus überjeweilige 36 DRAM-Komponenten 102 des logischen Rangs 101 gespeichert werden.Anschließendkönnenwährendeines zweiten Buszyklus die ungeradzahligen Halbbytes des ECC-Codewortsunter Verwendung desselben Musters wie bei den geradzahligen Halbbytes über die36 DRAM-Komponenten 102 gespeichertwerden. Dadurch wird jedes Einzelbyte (8 zusammenhängende Bits,die auf 8-Bit-Grenzen ausgerichtet sind) bei einer einzigen DRAM-Komponente 102 gespeichert. Wenneine der DRAM-Komponenten 102 ausfällt, ist die resultierendeDatenkorruption des jeweiligen ECC-Codeworts auf ein Einzelbyte beschränkt. Somitkann der ECC-Algorithmus die dem Hardwareausfall zugeordnete Datenkorruptionkorrigieren und kann ferner einen weiteren Fehler in einem weiterenByte korrigieren. Dementsprechend kann die Architektur des Systems 100 unddie Implementierung der Steuerung 108 die Fehlerkorrekturfunktionalität des ECC-Algorithmusoptimieren.
[0035] 4 zeigt ein Flußdiagrammzum Verarbeiten von Cacheleitungen durch die Steuerung 108 gemäß repräsentativenAusführungsbeispielen.Bei Schritt 401 wird eine Cacheleitung von einem Prozessorempfangen. Bei Schritt 402 werden die Cacheleitungsdatenin Gruppen unterteilt. Bei Schritt 403 werden Markierungsinformationenan eine der Gruppen angehängt.Bei Schritt 404 werden die Cachedatengruppen und die Markierungsinformationen ineine Mehrzahl von Abschnitten unterteilt. Bei Schritt 405 werdenECC-Bits fürjedes Paar der Abschnitte berechnet, um ECC-Codewörter zubilden, die aus den ECC-Bits und den jeweiligen Cachedaten und/oderden Markierungsinformationen bestehen. Bei Schritt 406 werdendie geradzahligen Halbbytes eines ECC-Codeworts über einen logischen Rang gespeichert.Bei Schritt 407 werden die ungeradzahligen Halbbytes desECC-Codeworts unter Verwendung desselben Musters über denlogischen Rang gespeichert. Bei Schritt 408 wird ein logischer Vergleichdurchgeführt,um zu bestimmen, ob noch zusätzlicheECC-Codewörterzu speichern sind. Falls noch zusätzliche ECC-Codewörter zuspeichern sind, kehrt der Prozeßfluß zu Schritt 406 zurück. Falls nicht,geht der Prozeßfluß zu Schritt 409 über, um denProzeßfluß zu beenden.
[0036] BeirepräsentativenAusführungsbeispielen kanndie Steuerung 108 die Löschmoduskorrektur aufverschiedene Abschnitte eines Speichersystems anwenden, beispielsweisedas Speichersystem 500 der 5.Das Speichersystem 500 umfaßt eine Mehrzahl von Speicherquadranten 504a–504d zur Speicherungund Wiedergewinnung von Daten durch eine Speichereinheit 501 mittelsder Steuerung 108. Die Speichereinheit 501 umfaßt eineMehrzahl von Zeitplanern 502, um einen Zugriff über Quadrantenbusse 503 zeitlichzu planen. Die Quadrantenbusse 503-1 bis 503-4 können unterVerwendung einer Busbreite von 72 Bits implementiert sein. DurchVerwenden einer Busbreite von 72 Bits und durch ein geeignetes Kommuniziereneines ECC-Codeworts in entsprechenden Zyklen wird jedes Einzelbyteeines ECC-Codeworts überein entsprechendes Paar von Drähteneines entsprechenden Qua drantenbusses 503 übertragen.Falls Verdrahtungsausfälle,die einem der Quadrantenbusse 503 zugeordnet sind, auf zweioder weniger Einzelbytes eines ECC-Codeworts beschränkt sind,kann die Steuerung 108 den Drahtausfall bzw. die Drahtausfälle kompensieren, indemsie den Löschmodusund eine Identifizierung des jeweiligen Fehlermusters verwendet.
[0037] Fernerkann jeder der Quadranten 504 ein Paar von Speicherpuffern 104 umfassen.Jeder Speicherpuffer 104 ist mit einem jeweiligen DRAM-Bus (als 505-1 bis 505-8 gezeigt)gekoppelt. Ferner sind vier logische Speicherränge (als 101-1 bis 101-32 gezeigt)mit jedem DRAM-Bus 505 gekoppelt. Jeder DRAM-Bus 505 weisteine Busbreite von 144 Bits auf. Durch Verwenden einer Busbreitevon 144 Bits und durch Kommunizieren von Daten in entsprechendenBuszyklen wird jedes Einzelbyte eines ECC-Codeworts über einenentsprechenden Satz von vier Drähtendes DRAM-Busses 505 übertragen. Fallsalso ein etwaiger Satz von Drahtausfällen zwei oder weniger Einzelbyteseines ECC-Codeworts beeinflußt,kann die Steuerung 108 die Drahtausfälle kompensieren, indem sieden Löschmodusund eine Identifizierung des jeweiligen Fehlermusters verwendet.
[0038] JederSpeicherrang 101 umfaßteine Mehrzahl von DRAM-Komponenten 102 injeweiligen DIMMs 110 (siehe Erläuterung der 1). Die Steuerung 108 kann fernerAusfällevon einzelnen DRAM-Komponenten 102 kompensieren, wie zuvor erläutert wurde.
[0039] DieRegister 109 könnenidentifizieren, ob der Löschmodusauf Daten angewandt werden sollte, die von einer spezifischen Bank(Teileinheit in einem logischen Rang 101), dem logischenRang 101 (Paar von DIMMs 110, auf die parallelzugegriffen wird), dem DRAM-Bus 505, dem Quadrantenbus 503 und/odereiner beliebigen anderen geeigneten Hardwarekomponente, je nachder architektonischen Implementierung, wiedergewonnen werden. DieFähigkeit,mehrere unabhängige Löschungenzu spezifizieren, erhöhtdie Wahrscheinlichkeit, daß mehrere wiederholbareAusfällein dem Speichersystem korrigiert werden können. Beispielsweise können zwei Löschungenspezifiziert werden, was erlaubt, daß zwei unterschiedliche wiederholbareFehler, die zwei unterschiedlichen Rängen oder zwei unterschiedlichenDRAM-Bussen usw. zugeordnet sind, korrigiert werden.
[0040] Fernerkann bei dem Löschmodusein kleiner Prozentsatz von nicht-korrigierbaren Fehlern als korrigierbardecodiert werden. Die Fähigkeit,die Löschungeiner begrenzten Region des Speichersystems zu spezifizieren, verringertdie Wahrscheinlichkeit, daß nicht-korrigierbareFehler fälschlicherweise alskorrigierbar diagnostiziert werden. Falls beispielsweise ein Hardwarefehlerdie Korruption eines Einzelbytefehlers für eine Kommunikation von ECC-Codewörtern über denDRAM-Bus 505-1 bewirkt, kann eines der Register 109 eingestelltsein, um das spezifische Byte der Position des ECC-Codeworts für diesenBus zu identifizieren. Wenn ECC-Codewörter von dem DRAM-Bus 505-1 empfangenwerden, kann der Löschmodusauf diese ECC-Codewörterangewandt werden, um die Datenkorruption anzugehen. Ferner kanndie Anwendung des Löschmodusauf diese ECC-Codewörterunabhängigvon der Verarbeitung von ECC-Codewörtern erfolgen, die von DRAM-Bussen 505-2 bis 505-8 wiedergewonnen werden.Demgemäß ist dieerhöhteWahrscheinlichkeit von fehldiagnostizierten nicht-korrigierbaren Fehlernauf einen spezifischen Teilsatz des Speichersystems beschränkt.
[0041] Indem Fall, in dem mehrere Löschungen identifiziertwerden, sollten die Abschnitte des Speichersystems 500,die jeder Löschungentsprechen, einander nicht überlappen.Das heißt,daß esnicht vorteilhaft ist, eine Löschposition,die einem spezifischen Rang zugeordnet ist, und eine andere Löschposition,die dem DRAM-Bus 505, der diesen Rang enthält, zugeordnetist, zu spezifizieren.
[0042] 6 zeigt ein Flußdiagrammzum Wiedergewinnen von Daten, die in einem Speichersystem gemäß repräsentativenAusführungsbeispielengespeichert sind. Bei Schritt 601 wird der logische Rang,in dem Cacheleitungsdaten gespeichert sind, bestimmt. Bei Schritt 602 wirddie Cacheleitung als ein Satz von vier aufeinanderfolgenden ECC-Codewörtern wiedergewonnen,die in acht aufeinanderfolgenden Datenzyklen in die Speichersteuerungeintreten. Jedes ECC-Codewort besteht aus zwei aufeinanderfolgendenZyklen, wobei sich die geradzahligen Halbbytes in dem ersten Zyklusund die ungeradzahligen Halbbytes in dem zweiten Zyklus befinden.Bei Schritt 603 wird bestimmt, ob der Löschmodus für die wiedergewonnenen Daten über denWert des entsprechenden Registers bzw. der entsprechenden Registerfreigegeben ist. Falls die Bestimmung wahr ist ist, geht der Prozeßfluß zu Schritt 604 über. Bei Schritt 604 wirdfür jedesentsprechende Paar von Cacheleitungsdatenabschnitten das Löschbyte,das auf die physische Fehlfunktion zurückzuführen ist, korrigiert, ein weitererBytefehler (falls vorhanden) kann korrigiert werden, und Mehrbytefehler(falls vorhanden) könnenerfaßtwerden. Falls die logische Bestimmung bei Schritt 603 falschist, geht der Prozeßfluß zu Schritt 605 über. BeiSchritt 605 kann fürjedes entsprechende Paar von Cacheleitungsdatenabschnitten ein Einzelbytefehler(falls vorhanden) korrigiert werden, und Mehrbytefehler (falls vorhanden) können erfaßt werden.Von beiden der Schritte 604 und 605 geht der Prozeßfluß zu Schritt 606 über. Bei Schritt 606 wirdein logischer Vergleich durchgeführt, umzu bestimmen, ob ein nicht-korrigierbarer Fehler (d. h. Mehrbytefehler)erfaßtwurde. Falls die Bestimmung falsch ist, geht der Prozeßfluß zu Schritt 607 über, wodie Cacheleitungsdaten erneut zusammengestellt werden und die Cacheleitungan einen geeigneten Prozessor kommuniziert wird. Falls die logischeBestimmung bei Schritt 606 wahr ist, geht der Prozeßfluß zu Schritt 608 über, woder Auftretensfall eines nicht-korrigierbaren Fehlers unter Verwendung einesgeeigneten Fehlersignals kommuniziert werden kann.
[0043] ÜberdieskönnenrepräsentativeAusführungsbeispieledie ECC-Algorithmen füreine Implementierung in Hardware gemäß der Architektur des Systems 100 optimieren.Im einzelnen gehen auf üblicheWeise implementierte ECC-Algorithmen davon aus, daß alle Nutzlastdatenunmittelbar verfügbar sind,wenn die ECC-Bits berechnet werden. Wie jedoch zuvor erörtert wurde,gewinnen repräsentative Ausführungsbeispieledie geradzahligen Halbbytes eines Codeworts in einem ersten Buszykluswieder und gewinnen die ungeradzahligen Halbbytes des Codewortsin einem anderen Buszyklus wieder (siehe Erläuterung der 6). Bei repräsentativen Ausführungsbeispielenbesteht somit eine gewisse Verzögerung,bis alle Codewortbits verfügbarwerden. RepräsentativeAusführungsbeispielekönnenein Verarbeiten der ersten Gruppe von Halbbytes vorteilhafterweiseunmittelbar beginnen, ohne auf die zweite Gruppe von Halbbytes zuwarten.
[0044] 7 zeigt ein Flußdiagrammzum Verarbeiten von wiedergewonnenen Daten gemäß einem repräsentativenAusführungsbeispiel.Bei Schritt 701 werden die geradzahligen Halbbytes einesCodeworts wiedergewonnen. Bei Schritt 702 wird die Redundanzteilweise berechnet, indem Kombinationen der wiedergewonnenen Bitsan XOR-Bäumeangelegt werden. Bei Schritt 703 werden die ungeradzahligenHalbbytes wiedergewonnen. Schritt 703 kann gleichzeitigmit der Durchführungdes Schritt 702 auftreten. Wenn die ungeradzahligen Halbbyteswiedergewonnen werden, könnendie ungeradzahligen Halbbytes an XOR-Bäume angelegt werden (Schritt 704).Bei Schritt 705 werden die Ergebnisse des Anlegens dergeradzahligen Halbbytes und der ungeradzahligen Halbbytes an XOR-Bäume durcheine XOR-Verknüpfungkombiniert, um die vollständige Redundanzzu bilden. Währenddie neu berechnete Redundanz auf diese Weise erzeugt wird, kanndie wiedergewonnene Redundanz in dem ersten bzw. dem zweiten Zyklusaus ihren geradzahligen bzw. ungeradzahligen Halbbytes zusammengestelltwerden. Die neu berechnete Redundanz und die wiedergewonnene Redundanzwerden durch eine XOR-Verknüpfung kombiniert,um das Syndrom zu erzeugen (Schritt 706). Das Syndrom wirdanschließendin einem von zwei Modi decodiert (Schritt 707). Falls für das ECC-Codewortkein Löschmodusspezifiziert wurde, wird das Syndrom decodiert, um die Position undden Wert eines Einzelbytefehlers zu bestimmen. Falls ein Löschmodusspezifiziert wurde, wird ein anderer Decodierungsprozeß verwendet,um den Wert des Fehlers in der Löschpositionund die Position und den Wert eines zusätzlichen Einzelbytefehlers,falls einer existiert, zu bestimmen.
[0045] Wiezuvor erläutertwurde, könnenPufferchips 104 Verzeichnismarkierungsdaten und zugeordneteECC-Daten modifizieren, ohne eine Kommunikation von Cacheleitungsdatenzu erfordern, wie nachstehend ausführlicher erläutert wird. 8 zeigt ein Flußdiagramm,das einer Modifizierung an Markierungsdaten gemäß repräsentativen Ausführungsbeispielenzugeordnet ist. Bei Schritt 801 wird eine Speicheranforderungempfangen, die Markierungsdaten gemäß einem Cachespeicherübereinstimmungsschemamodifiziert und die keine Cacheleitungsdaten modifiziert. Bei Schritt 802 gewinntder Puffer 104 alte Markierungsdaten und alte ECC-Daten,die den alten Markierungsdaten zugeordnet sind, für die entsprechendeCacheleitung wieder. Bei Schritt 803 werden die alten Markierungsdatenund die alten ECC-Daten an XOR-Bäumeangelegt, um ECC-Zwischenergebnisdaten zu erzeugen. Bei Schritt 804 werdendie neuen Markierungsdaten an den Puffer 104 kommuniziert.Bei Schritt 805 werden die ECC-Zwischenergebnisdaten und die neuenMarkierungsdaten gemäß dem ECC-Schemaan XOR-Bäumeangelegt, um neue ECC-Daten zu erzeugen. Bei Schritt 806 werdendie neuen ECC-Daten derart in Speicherkomponenten geschrieben, daß jedesEinzelbyte von Daten in einer entsprechenden DRAM-Komponente gespeichertwird. Bei Schritt 807 werden die Markierungsdaten derartin einen Speicher geschrieben, daß jedes Einzelbyte von Datenin einer entsprechenden DRAM-Komponente gespeichert wird.
[0046] 9–12 zeigenlogische Darstellungen von XOR-Baumverknüpfungen,die durch den Puffer 104 durchgeführt werden können, umunter Verwendung von neuen Markierungsdaten, alten Markierungsdatenund alten ECC-Daten gemäß repräsentativen Ausführungsbeispielenfür den[36, 33, 4]-verkürzten Reed-Solomon-Engerfassungscodeneue ECC-Daten zu berechnen. Die Verknüpfungen von XOR-Bäumen 900 und 1000 der 9 und 10 arbeiten durch ein „Entfernen" des Beitrags derursprünglichenoder alten Markierungsdaten aus den ECC-Daten durch ein XOR-Verknüpfen deralten Markierungsdaten aus den alten ECC-Daten, um die ECC-Zwischendaten zuerzeugen. Die neuen Markierungsdaten werden anschließend zuden ECC-Daten in XOR-Bäumen 1100 und 1200 der 11 und 12 beigefügt, indem die neuen Markierungsdatenmit den ECC-Zwischendaten XOR-verknüpft werden.
[0047] Indem XOR-Baum 900 stellt jeder Ausdruck alte_Daten[] (old_data[])das jeweilige wiedergewonnene Bit der 24 Bits von Markierungsdatenin dem Abschnitt 301 des Cacheleitungslayouts 300 der 3 dar. Desgleichen stelltjeder Ausdruck altes_ecc[] (old_ecc[]) das jeweilige wiedergewonneneBit der 12 Bits von ECC-Daten in dem Abschnitt 301 desCacheleitungslayouts 300 der 3 dar.Jeder Ausdruck alte_Daten_ecc_XOR_c1[] (old_data_ecc_XOR_c1[])stellt das jeweilige ECC-Zwischenergebnis dar, das durch ein XOR-Verknüpfen derjeweiligen alte_Daten[]- und alte_ecc[]-Bits, wie gezeigt, erzeugt wird. Beidem XOR-Baum 1000 stellt jeder Ausdruck alte_Daten_XOR_c2[](old_data_XOR_c2[]) das ECC-Zwischenergebnis dar, das durch einXOR-Verknüpfender jeweiligen alte_Daten[]-Bits, wie gezeigt, erzeugt wird.
[0048] 11 zeigt den XOR-Baum 1100,der neue ECC-Daten berechnet, die in einen Speicher geschriebenwerden sollen. Jeder Ausdruck neue_Daten[] (new_data[]) stellt dasjeweilige Bit der 24 Bits der neuen Markierungsdaten dar, die ineinen Speicher geschrieben werden sollen. Jeder Ausdruck neue_ecc_c1[](new_ecc_c1[]) stellt das jeweilige Bit dar, das in die 12 Bitsvon ECC-Daten in dem Abschnitt 301 des Cacheleitungslayouts 300 der 3 geschrieben werden soll.Im einzelnen wird jeder Ausdruck neues_ecc_c1[] durch ein XOR-Verknüpfen deralte_Daten_ecc_XOR_c1[]-Bits und der neue_Daten[]-Bits, wie gezeigt,erzeugt. Desgleichen zeigt 12 denXOR-Baum 1200, der die neuen ECC-Daten, die in einen Speichergeschrieben werden sollen, berechnet. Jeder Ausdruck altes_ecc_c2[]stellt das jeweilige Bit dar, das von den 12 Bits von ECC-Datenin dem Abschnitt 302 des Cacheleitungslayouts 300 der 3 wiedergewonnen wird. JederAusdruck neues_ecc_c2[] stellt das jeweilige Bit dar, das in die12 Bits von EC-Daten in dem Abschnitt 302 des Cacheleitungslayouts 300 der 3 geschrieben werden soll.Im einzelnen wird jeder Ausdruck neues_ecc_c2[] durch ein XOR-Verknüpfen deralte_Daten_ecc_XOR_c2[]-Bits, alte_ecc_c2[]-Bits und der neue–Daten[]-Bits,wie gezeigt, erzeugt.
[0049] AndereAusführungsbeispielekönnenunter Verwendung von anderen ECC-Schemata als dem [36, 33, 4]-verkürzten Reed-Solomon-EngerfassungsschemaMarkierungsdaten verarbeiten und neue ECC-Daten erzeugen. Beispielsweisekönnen andereAusführungsbeispieleeiner Steuerung 108 so implementieren, daß sie eineECC-Schema anwendet, das benachbarte Zwei-Bit-Fehler erfaßt und korrigiert. Das ECC-Schemakann vorteilhafterweise ECC-Codewörter verwenden, die eine Breitevon 144 Bits besitzen, um eine Busausnutzung zu optimieren. DieECC-Codewörterkönnen12 Bits von ECC-Daten enthalten. 13 und 14 zeigen XOR-Bäume 1300 und 1400,die einem Aktualisieren von Markierungsdaten mit den zugeordnetenECC-Daten, ohneeine Kommunikation oder Verarbeitung der Cacheleitungsdaten zu erfordern,zugeordnet sind. Bei dem XOR-Baum 1300 stellenalte_Daten[28] bis alte_Daten[37] die alten ECC-Datenbits dar, und alte_Daten[0]bis alte_Daten[25] stellen die alten Markierungsdaten eines ECC-Codeworts dar. Das ECC-Codewort,das gerade verarbeitet wird, kann zu einer Gruppe von Codewörtern für eine Cacheleitung gehören. DieMarkierungsdaten in dem ECC-Codewort, das gerade verarbeitet wird,könnenden Cachespeicherübereinstimmungszustandfür dieCacheleitung darstellen. Bei dem XOR-Baum 1300 wird derBeitrag der alten Markierungsdatenbits zu dem ECC-Codewort durchdie XOR-Verknüpfungenentfernt, um XOR-Zwischenergebnisdaten (alte_Daten_XOR[28] bis alte_Daten_XOR[37])zu erzeugen. Bei dem XOR-Baum 1400 werden die neuen ECC-Daten(neue_ECC[28] bis neue_ECC[37]) berechnet, indem die XOR-Verknüpfungenan die XOR-Zwischenergebnisdaten und die neuen Markierungsdaten(neue_Daten[0] bis neue_Daten[25]) angelegt werden.
[0050] RepräsentativeAusführungsbeispielekönneneine Anzahl von vorteilhaften Charakteristika liefern. Beispielsweisekann die Busbreite durch Verwenden eines ECC-Algorithmus, der derphysischen Implementierung des Systems 100 entspricht,auf einer vernünftigenBreite gehalten werden. Durch ein derartiges Aufrechterhalten derBreite des Busses wird die Busausnutzung erhöht, wodurch die Systemleistungoptimiert wird. Ferner könnenMarkierungsdaten auf effiziente Weise modifiziert werden, ohne eineKommunikation oder ein Verarbeiten von Cacheleitungsdaten zu erfordern.Durch ein selektives Anwenden eines Löschmodus für den ECC-Algorithmus wird ferner die Anzahl vonkorrigierbaren Fehlern, die auf Hardwareausfälle zurückzuführen sind, erhöht, unddie Wahrscheinlichkeit, daß einnichtkorrigierbarer Mehrbytefehler fehldiagnostiziert wird, wirdverringert. Indem gewährleistetwird, daß jedes Einzelbyteeines ECC-Codeworts in einer einzelnen DRAM-Komponente gespeichertwird, ermöglichen repräsentativeAusführungsbeispieleferner, daß eine gesamteDRAM-Komponente ausfällt,ohne den Ausfall des gesamten Speichersystems zu bewirken. DesgleichenkönnenVerdrahtungsausfällein verschiedenen Bussen, die zwei oder weniger Einzelbytes von ECC-Codewörtern beeinflussen,angegangen werden, um einen Ausfall des Speichersystems zu verhindern.
权利要求:
Claims (20)
[1] System zum Verarbeiten von Speichertransaktionsanforderungen,das folgende Merkmale aufweist: eine Steuerung (108)zum Speichern und Wiedergewinnen von Cacheleitungen in einer undvon einer Mehrzahl von Speicherkomponenten (102) durchzumindest einen Bus; und einen Puffer (104), der mitder Steuerung (108) und dem zumindest einen Bus kommunikativgekoppelt ist; wobei die Steuerung (108) Cacheleitungenin eine Mehrzahl von Abschnitten formatiert, ein Fehlerkorrekturcodeschema(ECC-Schema) implementiert, um einen Einzelbytefehler in einem ECC-Codewort für Paareder Mehrzahl von Abschnitten zu korrigieren, jeweilige Paare derMehrzahl von Abschnitten derart speichert, daß jedes Einzelbyte der jeweiligen Paareder Mehrzahl von Abschnitten in einer einzigen der Mehrzahl vonSpeicherkomponenten (102) gespeichert ist; wobei,wenn die Steuerung (108) eine Speichertransaktionsanforderungverarbeitet, die Markierungsdaten modifiziert, ohne Cacheleitungsdatenzu modifizieren, (i) die Steuerung (108) neue Markierungsdatenan den Puffer (104) kommuniziert und (ii) der Puffer (104)unter Verwendung vorheriger ECC-Daten, vorheriger Markierungsdatenund der neuen Markierungsdaten neue ECC-Daten berechnet, ohne eine Kommunikationvon Cacheleitungsdaten zu erfordern.
[2] System gemäß Anspruch1, bei dem zumindest ein Bus eine Busbreite aufweist und das ECC-Codeworteine Codewortlängeaufweist, die größer istals die Busbreite.
[3] System gemäß Anspruch2, bei dem die Codewortlängezweimal so lang ist wie die Busbreite.
[4] System gemäß Anspruch3, bei dem die Busbreite 144 Bits und die Codewortlänge 288Bits betragen.
[5] System gemäß einemder Ansprüche1 bis 4, bei dem jede der Speicherkomponenten (102) eine Bitbreitevon vier Bits aufweist.
[6] System gemäß einemder Ansprüche1 bis 5, bei dem die Mehrzahl von Speicherkomponenten (102)in einer Mehrzahl von Doppelreihenspeichermodulen (DIMMs) befindlichist, die einen logischen Rang bilden, der eine Bitbreite aufweist,die gleich der Hälfteeiner Längedes ECC-Codeworts ist.
[7] System gemäß Anspruch6, bei dem die Steuerung (108) Paare der Mehrzahl von Abschnitten über denlogischen Rang speichert.
[8] System gemäß einemder Ansprüche1 bis 7, bei dem die Steuerung (108) ferner wirksam ist,um ein Löschbytein einem zweiten Modus eines ECC-Betriebs zu korrigieren.
[9] System gemäß einemder Ansprüche1 bis 8, bei dem die Speicherkomponenten (102) DRAM-Speicherkomponentensind.
[10] System zum Verarbeiten von Speichertransaktionsanforderungen,das folgende Merkmale aufweist: eine Steuereinrichtung (108)zum Speichern und Wiedergewinnen von Cacheleitungen in und von einerMehrzahl von Speicherkomponenten (102) durch zumindesteinen Bus; und eine Puffereinrichtung (104) zum Puffernvon Daten von der Mehrzahl von Speicherkomponenten (102), diemit der Steuerung (108) und dem zumindest einen Bus kommunikativgekoppelt ist; wobei die Steuereinrichtung Cacheleitungen ineine Mehrzahl von Abschnitten formatiert, ein Fehlerkorrekturcodeschema(ECC-Schema) implementiert, um einen Einzelbytefehler in einem ECC-Codewort für Paareder Mehrzahl von Abschnitten zu korrigieren, jeweilige Paare derMehrzahl von Abschnitten derart speichert, daß jedes Einzelbyte der jeweiligen Paareder Mehrzahl von Abschnitten in einer einzigen der Mehrzahl vonSpeicherkomponenten (102) gespeichert ist; wobei,wenn die Steuereinrichtung eine Speichertransaktionsanforderungverarbeitet, die Markierungsdaten modifiziert, ohne Cacheleitungsdatenzu modifizieren, (i) die Steuereinrichtung neue Markierungsdatenan den Puffer (104) kommuniziert und (ii) der Puffer (104)unter Verwendung vorheriger ECC-Daten, vorheriger Markierungsdatenund der neuen Markierungsdaten neue ECC-Daten berechnet, ohne eine Kommunikationvon Cacheleitungsdaten zu erfordern.
[11] System gemäß Anspruch10, bei dem zumindest ein Bus eine Busbreite aufweist und das ECC-Codeworteine Codewortlängeaufweist, die größer istals die Busbreite.
[12] System gemäß Anspruch11, bei dem die Codewortlängezweimal so lang ist wie die Busbreite.
[13] System gemäß Anspruch12, bei dem die Busbreite 144 Bits und die Codewortlänge 288Bits betragen.
[14] System gemäß einemder Ansprüche10 bis 13, bei dem jede der Speicherkomponenten (102) eineBitbreite von vier Bits aufweist.
[15] System gemäß einemder Ansprüche10 bis 14, bei dem die Mehrzahl von Speicherkomponenten (102)in einer Mehrzahl von Doppelreihenspeichermodulen (DIMMs) befindlichist, die einen logischen Rang bilden, der eine Bitbreite aufweist,die gleich der Hälfteeiner Längedes ECC-Codeworts ist.
[16] System gemäß Anspruch15, bei dem die Steuerung (108) Paare der Mehrzahl vonAbschnitten überden logischen Rang speichert.
[17] System gemäß einemder Ansprüche10 bis 16, bei dem die Steuerung (108) ferner wirksam ist, umein Löschbytein einem zweiten Modus eines ECC-Betriebs zu korrigieren.
[18] System gemäß einemder Ansprüche10 bis 17, bei dem die Speicherkomponenten (102) DRAM-Speicherkomponentensind.
[19] Verfahren zum Betreiben eines Speichersystems, dasfolgende Schritte umfaßt: Verarbeitenvon Cacheleitungsdaten und Markierungsdaten durch eine Steuerung(108), die in einer Mehrzahl von Datenabschnitten gespeichertwerden sollen, wobei jedes Paar der Mehrzahl von Datenabschnittenein Fehlerkorrekturcodewort (ECC-Codewort) bildet, das eine Korrektureines Einzelbytefehlers in dem ECC-Codewort ermöglicht; Speichern jedesPaares der Mehrzahl von Datenabschnitten über eine Mehrzahl von Speicherkomponenten(102), derart, daß jedesEinzelbyte jedes Paars in einer ein zigen der Mehrzahl von Speicherkomponenten(102) gespeichert wird; Empfangen einer Speicheranforderungstransaktion, dieMarkierungsdaten, die der Mehrzahl von Datenabschnitten zugeordnetsind, modifiziert und die die Cacheleitungsdaten nicht modifiziert;und Berechnen, ansprechend auf das Empfangen, neuer ECC-Daten unter Verwendungvorheriger ECC-Daten, vorheriger Markierungsdaten und neuer Markierungsdaten,ohne eine Kommunikation von Cacheleitungsdaten zu erfordern.
[20] Verfahren gemäß Anspruch19, bei dem das Berechnen durch einen Puffer (104) zwischender Steuerung (108) und der Mehrzahl von Speicherkomponenten(102) durchgeführtwird.
类似技术:
公开号 | 公开日 | 专利标题
US20190146867A1|2019-05-16|Systems and Methods for Adaptive Data Storage
US20160371144A1|2016-12-22|Systems and methods for adaptive error-correction coding
US9128871B2|2015-09-08|Memory system with variable length page stripes including data protection information
US8601348B2|2013-12-03|Error checking addressable blocks in storage
KR101047241B1|2011-07-06|메모리 디바이스 및 메모리 디바이스의 신뢰성, 가용성 및 서비스능력을 개선하기 위한 방법 및 시스템
US7162678B2|2007-01-09|Extended error correction codes
JP5437470B2|2014-03-12|共有されるエラー・ビット・コードをもつ共通フレームにおいてデータおよびデータ・マスク・ビットを転送するためのシステム、方法および装置
US5912906A|1999-06-15|Method and apparatus for recovering from correctable ECC errors
US8041989B2|2011-10-18|System and method for providing a high fault tolerant memory system
KR101502519B1|2015-03-13|메모리 관리 시스템 및 방법
JP5522480B2|2014-06-18|フォールトトレラント不揮発性集積回路メモリ
US8041990B2|2011-10-18|System and method for error correction and detection in a memory system
US8560881B2|2013-10-15|FLASH-based memory system with static or variable length page stripes including data protection information and auxiliary protection stripes
TWI375152B|2012-10-21|System and method for data read of a synchronous serial interface nand
KR100921748B1|2009-10-15|Ecc 회로를 포함하는 메모리 시스템 및 그 구동 방법
EP0989491B1|2005-12-21|Technik für Datenaufteilung zur Fehlerkorrektur von Speichermodulen
US7543100B2|2009-06-02|Node controller for a data storage system
US6151641A|2000-11-21|DMA controller of a RAID storage controller with integrated XOR parity computation capability adapted to compute parity in parallel with the transfer of data segments
KR100645058B1|2006-11-10|데이터 신뢰성을 향상시킬 수 있는 메모리 관리 기법
US5708769A|1998-01-13|Logical partitioning of a redundant array storage system
US6754858B2|2004-06-22|SDRAM address error detection method and apparatus
US7386757B2|2008-06-10|Method and apparatus for enabling high-reliability storage of distributed data on a plurality of independent storage devices
JP3283530B2|2002-05-20|ディスク・アレイにおいてパリティ保全性を維持するための妥当性検査システム
KR101500635B1|2015-03-09|비-ecc 컴포넌트에서의 ecc 구현
KR101531080B1|2015-06-23|데이터 처리 시스템에서 단일화된 캐시에 대한 에러 검출 스킴들
同族专利:
公开号 | 公开日
US7392347B2|2008-06-24|
US20040236901A1|2004-11-25|
引用文献:
公开号 | 申请日 | 公开日 | 申请人 | 专利标题
法律状态:
2004-12-16| OP8| Request for examination as to paragraph 44 patent law|
2011-12-23| R016| Response to examination communication|
2015-08-01| R119| Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee|
优先权:
申请号 | 申请日 | 专利标题
[返回顶部]