DE102016107718A1 - Auslesen von Fehlervektoren aus einer Speichereinheit - Google Patents

Auslesen von Fehlervektoren aus einer Speichereinheit Download PDF

Info

Publication number
DE102016107718A1
DE102016107718A1 DE102016107718.6A DE102016107718A DE102016107718A1 DE 102016107718 A1 DE102016107718 A1 DE 102016107718A1 DE 102016107718 A DE102016107718 A DE 102016107718A DE 102016107718 A1 DE102016107718 A1 DE 102016107718A1
Authority
DE
Germany
Prior art keywords
memory addresses
memory
error vector
raw data
data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
DE102016107718.6A
Other languages
English (en)
Inventor
Michael Healy
Hillery Hunter
Charles Kilmer
Kyu-hyoun Kim
Warren Maule
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US14/705,115 external-priority patent/US9733870B2/en
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of DE102016107718A1 publication Critical patent/DE102016107718A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1048Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1012Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
    • G06F11/1032Simple parity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1048Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
    • G06F11/106Correcting systematically all correctable errors, i.e. scrubbing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1072Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in multilevel memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/52Protection of memory contents; Detection of errors in memory contents
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1006Data managing, e.g. manipulating data before writing or reading out, data bus switches or control circuits therefor
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1051Data output circuits, e.g. read-out amplifiers, data output buffers, data output registers, data output level conversion circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C2029/0411Online error correction

Abstract

Ein System zum Verwalten von Speichern und ein Verfahren zum Verwalten von Ausgabedaten, die aus einer Speichereinheit stammen, die Daten und Fehlerkorrektur-Codier-Bits (ECC-Bits) speichert, werden beschrieben. Das System enthält eine Steuereinheit zum Empfangen eines Lesebefehls und Steuern einer Speichereinheit auf der Grundlage des Lesebefehls, wobei die Speichereinheit Rohdaten und Fehlerkorrektur-Codier-Bits (ECC-Bits) speichert und die Rohdaten und die ECC-Bits ausgibt, die Speicheradressen entsprechen, die in dem Lesebefehl spezifiziert sind, und einen ECC-Decodierer zum Ausgeben eines Fehlervektors, der den Speicheradressen zugehörig ist, auf der Grundlage der Rohdaten und der ECC-Bits, die den Speicheradressen entsprechen, die durch die Speichereinheit ausgegeben werden, wobei der Fehlervektor, der den Speicheradressen zugehörig ist, Fehler in der Rohdaten angibt, die den Speicheradressen entsprechen. Das System enthält außerdem einen Multiplexer (MUX) zum Ausgeben des Fehlervektors auf der Grundlage einer Auswahl, die in dem Lesebefehl angegeben ist.

Description

  • HINTERGRUND
  • Die vorliegende Erfindung bezieht sich auf Verwalten von Speichern und insbesondere Auslesen von Fehlervektoren aus einer Speichereinheit.
  • Eine Speichereinheit wie beispielsweise ein dynamischer Direktzugriffsspeicher (DRAM) enthält üblicherweise die Möglichkeit der Fehlerkorrektur. Fehlerkorrektur-Codier-Bits (ECC-Bits) werden über einen Codierer in Daten codiert, die in dem DRAM gespeichert sind. Wenn die Daten aus dem DRAM ausgelesen werden, wird ein Decodierer verwendet, um auf der Grundlage der ECC-Bits korrekte Daten zu erhalten. Der Decodierer erzeugt einen Fehlervektor, der mit den Rohdaten (in einer XOR-Operation) verknüpft wird, um die korrigierten Daten zu erhalten.
  • KURZDARSTELLUNG
  • Gemäß einer Ausführungsform enthält ein System zur Speicherverwaltung eine Steuereinheit, die so eingerichtet ist, dass sie einen Lesebefehl empfängt und eine Speichereinheit anhand des Lesebefehls steuert; wobei die Speichereinheit so eingerichtet ist, dass sie Rohdaten und Fehlerkorrektur-Codier-Bits (ECC-Bits) speichert und die Rohdaten mit den ECC-Bits, die der Speicheradresse entsprechen, die in dem Lesebefehl angegeben ist, ausgeben kann; einen ECC-Decodierer, der so eingerichtet ist, dass er einen Fehlervektor, der den Speicheradressen zugehörig ist, auf der Grundlage der Rohdaten und der ECC-Bits, die den Speicheradressen entsprechen, die durch die Speichereinheit ausgegeben werden, ausgibt, wobei der Fehlervektor, der den Speicheradressen zugehörig ist, Fehler in den Rohdaten angibt, die den Speicheradressen entsprechen; und einen Multiplexer (MUX), der so eingerichtet ist, dass er den Fehlervektor auf der Grundlage einer Auswahl ausgibt, die in dem Lesebefehl angegeben ist.
  • Gemäß einer weiteren Ausführungsform beinhaltet ein Verfahren zum Verwalten von Ausgabedaten, die aus einer Speichereinheit stammen, die Rohdaten und Fehlerkorrektur-Codier-Bits (ECC-Bits) speichert, Empfangen eines Lesebefehls, wobei der Lesebefehl eine Spezifikation einer oder mehrerer Speicheradressen in der Speichereinheit enthält; aus der Speichereinheit Ausgeben der Rohdaten, die der einen oder den mehreren Speicheradressen entsprechen, und der ECC-Bits, die der einen oder den mehreren Speicheradressen entsprechen; Decodieren der Rohdaten und der ECC-Bits, die der einen oder den mehreren Speicheradressen entsprechen, um einen Fehlervektor auszugeben, der der einen oder den mehreren Speicheradressen zugehörig ist, wobei der Fehlervektor, der der einen oder den mehreren Speicheradressen zugehörig ist, Fehler in den Rohdaten angibt, die der einen oder den mehreren Speicheradressen entsprechen, und Ausgeben des Fehlervektors, der der einen oder den mehreren Speicheradressen zugehörig ist, als Ausgabedaten anhand einer Auswahl, die in dem Lesebefehl angegeben ist.
  • Zusätzliche Merkmale und Vorteile werden durch die Techniken der vorliegenden Erfindung realisiert. Weitere Ausführungsformen und Aspekte der Erfindung werden hier genau beschrieben und als Teil der beanspruchten Erfindung betrachtet. Für ein besseres Verständnis der Erfindung mit den Vorteilen und den Merkmalen sollte auf die Beschreibung und die Zeichnungen Bezug genommen werden.
  • KURZBESCHREIBUNG DER ZEICHNUNGEN
  • Der erfindungsgemäße Gegenstand wird am Ende der Spezifikation speziell hervorgehoben und eindeutig beansprucht. Die vorhergehenden und weitere Merkmale sowie Vorteile der Erfindung werden aus der nachfolgenden genauen Beschreibung deutlich, die in Verbindung mit den beigefügten Zeichnungen erfolgt, in denen:
  • 1 ein Blockschaltbild eines Systems zur Speicherverwaltung gemäß einer Ausführungsform der Erfindung ist;
  • 2 die Ausgabedaten veranschaulicht, die sich aus zwei unterschiedlichen Befehlen gemäß einer Ausführungsform ergeben;
  • 3 die Ausgabedaten veranschaulicht, die sich aus zwei unterschiedlichen Befehlen gemäß einer weiteren Ausführungsform ergeben;
  • 4 die Ausgabedaten veranschaulicht, die sich aus zwei unterschiedlichen Befehlen gemäß einer nochmals weiteren Ausführungsform ergeben;
  • 5 einen beispielhaften Kompressionsalgorithmus für einen beispielhaften Fehlervektor gemäß einer Ausführungsform zeigt;
  • 6 beispielhafte Daten- und Fehlervektorbits im Fall eines korrigierbaren Fehlers gemäß Ausführungsformen veranschaulicht;
  • 7 beispielhafte Daten- und Fehlervektorbits im Fall eines nichtkorrigierbaren Fehlers gemäß Ausführungsformen veranschaulicht;
  • 8 beispielhafte Daten- und Fehlervektorbits im Fall eines nichtkorrigierbaren Fehlers gemäß einer weiteren Ausführungsform veranschaulicht;
  • 9 veranschaulicht Fehlervektoren für verschiedene Szenarien gemäß einer Ausführungsform;
  • 10 Fehlervektoren für verschiedene Szenarien gemäß einer weiteren Ausführungsform veranschaulicht;
  • 11 eine beispielhafte Umsetzung des Befehls-Decodierers des Systems zur Speicherverwaltung gemäß einer Ausführungsform ist;
  • 12 ein Prozessablauf eines Verfahrens zum Verwenden des Fehlervektors ist, der gemäß Ausführungsformen erhalten wird;
  • 13 ein Prozessablauf eines weiteren Verfahrens zum Verwenden des Fehlervektors ist, der gemäß Ausführungsformen erhalten wird; und
  • 14 ein Prozessablauf eines nochmals weiteren Verfahrens zum Verwenden des Fehlervektors ist, der gemäß Ausführungsformen erhalten wird.
  • GENAUE BESCHREIBUNG
  • Wie oben angegeben werden ECC-Bits, die in Daten codiert werden, die in einer Speichereinheit (z.B. ein DRAM) gespeichert werden, verwendet, um beim Auslesen aus der Speichereinheit korrekte Daten zu erhalten. Alle Fehler in den Rohdaten, die in der Speichereinheit gespeichert werden, werden durch Verknüpfen der Rohdaten mit decodierten ECC-Bits korrigiert, die ebenfalls gespeichert werden. Im Einzelnen erzeugt das Decodieren der ECC-Bits einen Fehlervektor, der mit den Rohdaten (z.B. mittels XOR) verknüpft wird, um korrigierte Daten bereitzustellen. Zwar werden die korrigierten Daten, die mit dem Fehlervektor erhalten werden, bereitgestellt, der eigentliche Fehlervektor steht jedoch aktuell nicht zur Verfügung. Der Fehlervektor kann jedoch verwendet werden, um Informationen zu erhalten, die eine bessere Speicherverwaltung ermöglichen. Beispielsweise gibt der Fehlervektor, der Adressinformationen enthält, die Adresspositionen von Fehlern an, ermöglicht ein Überwachen von Fehlern (z.B. ihre Häufigkeit, die Konzentration in bestimmten Speicherpositionen) und des Korrekturumfangs, der erforderlich wäre, um die korrigierten Daten zu erhalten. Diese Beispiele sind in Bezug auf die Informationen, die aus dem Fehlervektor erhalten werden können, nicht erschöpfend. Früher konnte eine Flagpin-Anzeige oder ein anderer Mechanismus verwendet werden, um der Speichersteuereinheit einen Fehler anzugeben. Die Speichersteuereinheit musste jedoch die Leseoperation unterbrechen und das interne Register der Speichereinheit lesen, um die Speicherposition des Fehlers zu ermitteln. Zwar würden zusätzliche Flagpins die Notwendigkeit des Prozesses vermeiden, sie stellen jedoch eine Nutzung bedeutender zusätzlicher Ressourcen dar. Ausführungsformen der Systeme und Verfahren, die hier genau beschrieben werden, betreffen ein Erhalten des Fehlervektors ohne eine Einbuße bei der Leistungsfähigkeit oder die Notwendigkeit zusätzlicher Ressourcen. Das heißt, bei den nachfolgend erläuterten Ausführungsformen handelt es sich nicht wie bei früheren Konzepten um Konzepte zum Unterbrechen und Prüfen bzw. sie erfordern keine zusätzlichen Pins oder weitere Ressourcen.
  • 1 ist ein Blockschaltplan eines Systems 100 zur Speicherverwaltung gemäß einer Ausführungsform der Erfindung. Auf das System 100 zur Speicherverwaltung kann durch eine Speichersteuereinheit 10 zugegriffen werden, die auf eine beliebige Anzahl von Speichereinheiten 110 zugreift. Die Speichersteuereinheit 10 enthält eine oder mehrere Speichereinheiten, die Befehle speichern, und einen oder mehrere Prozessoren, die die Befehle umsetzen. Beispielhafte Prozesse, die durch die Speichersteuereinheit 10 ausgeführt werden, werden nachfolgend unter Bezugnahme auf die 12 bis 14 weiter erläutert. Eine Speichereinheit 110 wird gezeigt, in der Daten 113 und ECC-Bits 115 gespeichert sind. Die Daten 113 sind mit ECC-Bits 115 in der Speichereinheit 110 codiert. Ein Befehl 153, der in den Befehls-Decodierer 155 eingegeben wird, ergibt einen decodierten Befehl 155. Der Befehl 153 wird nachfolgend weiter erläutert und stammt möglicherweise von der Speichersteuereinheit 10. Auf der Grundlage des decodierten Befehls 155 wird ein Auslesen von Daten aus der Speichereinheit 110 ausgelöst. Ein Auslesen von Daten beinhaltet Auslesen von Rohdaten 113 sowie der ECC-Bits 115. Die Speicheradressen oder der Adressbereich, aus denen entsprechende Rohdaten 113 und ECC-Bits 115 aus der Speichereinheit 110 ausgegeben werden sollen, sind in dem Lesebefehl 153 spezifiziert. Der ECC-Decodierer 120 verwendet die Daten 113 und ECC-Bits 115 zum Erzeugen des Fehlervektors 125. Eine Komponente 130 (z.B. ein digitales Exklusiv-ODER-Logikgatter (XOR)) wirkt an den Rohdaten 113 und dem Fehlervektor 125, um die korrigierten Daten 135 auszugeben. Gemäß einer Ausführungsform gibt der Fehlervektor 125 die Position von Fehlern in den Rohdaten 113 an, die in den korrigierten Daten 135 korrigiert wurden. Weitere Ausführungsformen werden nachfolgend erläutert. Der decodierte Befehl 155 wird außerdem einem MUX 140 bereitgestellt und wird verwendet, um entweder die korrigierten Daten 135 oder den Fehlervektor 125 gemäß einer Ausführungsform als Ausgabedaten 145 auszugeben. Bei alternativen Ausführungsformen kann es sich bei den Ausgabedaten 145 des MUX 140 um die Rohdaten 113 handeln oder sie können eine komprimierte Version des Fehlervektors 125 enthalten, wie nachfolgend weiter erläutert wird. Der Befehl 153 kann ein oder mehrere Bits enthalten, die spezifizieren, ob es sich bei den Ausgabedaten 145 um den Fehlervektor 125 handeln sollte (z.B. Bit EV = 0, wenn der Fehlervektor 125 nicht ausgegeben werden soll, und EV = 1, wenn der Fehlervektor 125 ausgegeben werden soll). Bei einer alternativen Ausführungsform können dasselbe eine oder dieselben mehreren Bits oder eine andere Gruppe von Bits verwendet werden, um zu spezifizieren, ob es sich bei den Ausgabedaten 145, die durch den MUX 140 ausgegeben werden, um die Rohdaten 113 handeln sollte. Nachfolgend werden weitere Ausführungsformen erläutert, bei denen andere Optionen der Ausgabedaten 145 spezifiziert werden. Die Ausgabedaten 145 können der Speichersteuereinheit 10 bereitgestellt werden. Beispielhafte Auslesevorgänge werden nachfolgend erläutert.
  • Die 2 bis 4 veranschaulichen beispielhafte Auslesevorgänge gemäß drei unterschiedlichen Ausführungsformen. Bei jeder Ausführungsform hat ein Eingabebefehl 153 bestimmte Ausgabedaten 145 von dem MUX 140 zur Folge. Zwar wird die Ausführungsform, bei der anstelle von korrigierten Daten 135 Rohdaten 113 als Ausgabedaten 145 ausgegeben werden, nicht explizit erläutert, Rohdaten 113 können in jeder der in den 2 bis 4 gezeigten Ausführungsformen auf der Grundlage des Befehls 153 ausgegeben werden. Das kann realisiert werden, indem ein Bit (z.B. RV) in dem Befehl 153 gesetzt wird, um anzugeben, dass die Rohdaten 113 durch den MUX 140 als Ausgabedaten 145 ausgegeben werden sollten.
  • 2 veranschaulicht die Ausgabedaten 145, die sich aus zwei unterschiedlichen Befehlen 153 gemäß einer Ausführungsform ergeben. Der erste Befehl 153 (Read1) enthält das auf 0 gesetzte Fehlervektorbit (z.B. EV), das angibt, dass der Fehlervektor 125 nicht ausgegeben werden soll. Folglich werden korrigierte Daten 135 (oder alternativ Rohdaten 113) ausgegeben, wie durch den Pfeil in 2 angegeben. Bei den beispielhaften korrigierten Daten 135 handelt es sich in 2 um 32 Bits, es ist jedoch nicht vorgesehen, dass die Länge der korrigierten Daten 135 oder die Anordnung des Datenbusses, der die Ausgabedaten 145 bereitstellt, durch das Beispiel eingeschränkt wird. Wenn ein anderer Befehl 153 (Read2) ausgegeben wird, wobei EV auf 1 gesetzt ist, wodurch angegeben wird, dass der Fehlervektor 125 ausgegeben werden soll, wird der Fehlervektor 125 als Ausgabedaten 145 bereitgestellt. Der Befehl 153 (Read2 mit EV = 1) kann nach einer bestimmten festgelegten Anzahl von regulären Lesebefehlen 153 (Read1 mit EV = 0) (beispielsweise nach jeweils 100 Lesebefehlen) ausgegeben werden oder kann auf der Grundlage eines Ereignisses oder gemäß einem anderen Auslöseereignis ausgegeben werden.
  • 3 veranschaulicht die Ausgabedaten 145, die sich aus zwei unterschiedlichen Befehlen 153 gemäß einer weiteren Ausführungsform ergeben. Der erste Befehl 153 (Read1) enthält das auf 0 gesetzte Fehlervektorbit (z.B. EV), das angibt, dass der Fehlervektor 125 nicht ausgegeben werden soll. Folglich und ähnlich wie bei der in 2 gezeigten Ausführungsform werden korrigierte Daten 135 als Ausgabedaten 145 ausgegeben. Bei alternativen Ausführungsformen können anstelle von korrigierten Daten 135 Rohdaten 113 als Ausgabedaten 145 ausgegeben werden. Wenn ein anderer Befehl 153 (Read2) ausgegeben wird, bei dem EV auf 1 gesetzt wurde, ist das Ergebnis gemäß der vorliegenden Ausführungsform anders als bei der in 2 veranschaulichten Ausführungsform. Wenn EV auf 1 gesetzt ist, werden sowohl die korrigierten Daten 135 (oder Rohdaten 113) als auch der Fehlervektor 125 als Ausgabedaten 145 ausgegeben. Folglich werden bei dem beispielhaft dargestellten Fall, bei dem es sich bei den Daten um 32 Bit handelt, 64 Bits als Ausgabedaten 145 ausgegeben, wenn EV auf 1 gesetzt wurde. Die Adressbereiche der korrigierten Daten 135, die ausgegeben werden, wenn EV = 0 und wenn EV = 1, können unterschiedlich sein (könnten jedoch auch gleich sein) und hängen von dem Adressbereich ab, der in dem Befehl 153 spezifiziert ist. Ein Vergleich der 2 und 3 gibt an, dass die in 3 gezeigte Ausführungsform ein Auslesen des Fehlervektors 125 zusammen mit einem Auslesen von Daten (113 oder 135) ermöglicht, jedoch infolge der zusätzlichen Bits in den Ausgabedaten 145 eine längere Zeit erfordert. Tatsächlich wird für die in 3 gezeigte Ausführungsform (für Read2) im Vergleich mit der in 2 gezeigten Ausführungsform die doppelte Zeit benötigt.
  • 4 veranschaulicht die Ausgabedaten 145, die sich aus zwei unterschiedlichen Befehlen 153 gemäß einer nochmals weiteren Ausführungsform ergeben. 4 zeigt eine Ausführungsform, die einen Kompromiss zwischen den in den 2 und 3 gezeigten Ausführungsformen darstellt. Für den ersten Befehl 153 (Read1), bei dem EV auf 0 gesetzt ist, handelt es sich bei den Ausgabedaten 145 wiederum um die korrigierten Daten 135 (oder Daten 113). Wenn ein anderer Befehl 153 (Read2) ausgegeben wird, bei dem EV auf 1 gesetzt ist, enthalten die resultierenden Ausgabedaten 145 einen komprimierten Fehlervektor 125‘ zusammen mit den korrigierten Daten 135. Das heißt, der Fehlervektor (in dem in 3 gezeigten Beispiel mit einer Länge von 8 Bit für jede Busleitung) ist (auf 2 Bit) komprimiert. Das Komprimieren kann gemäß dem in 5 gezeigten beispielhaften Algorithmus ausgeführt werden. Diese Ausführungsform stellt einen Kompromiss zwischen den in den 2 und 3 gezeigten Ausführungsformen dar, da keine Informationen von dem Fehlervektor 125 anstelle von Daten (135 oder 113) wie das in der in 2 gezeigten Ausführungsform der Fall ist, sondern weniger Daten befördert werden und somit im Vergleich zu der in 3 gezeigten Ausführungsform eine kürzere Zeit erforderlich ist, um die Ausgabedaten 145 bereitzustellen, wenn EV auf 1 gesetzt ist. 5 zeigt einen beispielhaften Kompressionsalgorithmus für einen beispielhaften Fehlervektor gemäß einer Ausführungsform. Die Tabelle 510 gibt an, wie vier Bit zu einem Bit komprimiert werden. Das Zeichen ║ in der Tab 510 gibt eine logische ODER-Operation an.
  • 6 veranschaulicht beispielhafte Daten- und Fehlervektorbits bei einem korrigierbaren Fehler gemäß Ausführungsformen. Die Rohdaten 113 enthalten ein Bit (schattiert), das einen Fehler enthält. Dieses Bit ist in den korrigierten Daten 135 korrigiert und wird als ein Fehler in dem entsprechenden Bit des Fehlervektors 125 angegeben. Bei den Ausgabedaten 145 handelt es sich um die korrigierten Daten 135, wenn das Fehlervektorbit (EV) auf 0 gesetzt ist. Bei den Ausgabedaten 145 kann es sich um eine von drei unterschiedlichen Gruppen von Bits handeln, wenn EV auf 1 gesetzt ist, gemäß den Ausführungsformen, die oben unter Bezugnahme auf die 2 bis 4 erläutert wurden. Bei den Ausgabedaten 145 kann es sich nur um den Fehlervektor 125 (wie in 3 gezeigt), die korrigierten Daten 135 und den Fehlervektor 125 (wie in 3 gezeigt) oder die korrigierten Daten 135 und eine komprimierte Version des Fehlervektors 125‘ (wie in 4 gezeigt) handeln. Das in 6 gezeigte Beispiel enthält einen korrigierbaren Fehler. Beispielhafte Ausführungsformen, die Muster enthalten, um nichtkorrigierbare Fehler anzugeben, werden nachfolgend erläutert.
  • 7 veranschaulicht beispielhafte Daten- und Fehlervektorbits bei einem nichtkorrigierbaren Fehler gemäß einer Ausführungsform. Die Rohdaten 113 enthalten zwei Bit (schattiert) mit Fehlern. Die Bits mit Fehlern sind gegebenenfalls nichtkorrigierbar, da Informationen darüber, welches Bit im Einzelnen fehlerhaft ist, z.B. durch die ECC-Bits 115 möglicherweise nicht zur Verfügung stehen. Somit sind die Fehler erkennbar, aber nichtkorrigierbar. Gemäß der vorliegenden Ausführungsform sind in diesem Fall die korrigierten Daten 135 gleich den Rohdaten 113, bei dem Fehlervektor 125 handelt es sich jedoch um ein im Voraus definiertes Muster (z.B. bei dem Beispiel nur ‚1‘), das einen oder mehrere nichtkorrigierbare Fehler angibt. 8 veranschaulicht beispielhafte Daten- und Fehlervektorbits bei einem nichtkorrigierbaren Fehler gemäß einer weiteren Ausführungsform. Bei der in 8 gezeigten Ausführungsform handelt es sich sowohl bei den korrigierten Daten 135 als auch bei dem Fehlervektor 125 um im Voraus definierte Muster (wobei es sich um das gleiche oder verschiedene Muster handeln könnte), die das Vorhandensein von nichtkorrigierbaren Daten in den Rohdaten 113 angeben.
  • 9 veranschaulicht Fehlervektoren 125 für unterschiedliche Szenarien 910 bis 940 gemäß einer Ausführungsform. Gemäß der Ausführungsform, die durch 9 veranschaulicht ist, gibt der Fehlervektor 125 Fehlerbits unter den ECC-Bits 115 sowie in den Rohdaten 113 an. Bei dem Szenario 910, bei dem weder in den Rohdaten 113 noch in den ECC-Bits 115 Fehler vorhanden sind, weist der Fehlervektor 125 nur Nullen auf. Bei dem Szenario 920 mit einem korrigierbaren Fehler in den Rohdaten 113 und ohne Fehler in den ECC-Daten 115, ist das entsprechende Bit in dem Fehlervektor 125 auf 1 gesetzt (wobei alle anderen Bits auf 0 gesetzt sind). Bei dem Szenario 930 gibt es keine Fehler in den Rohdaten 113, aber es ist ein Fehler bei einem der ECC-Bits 115 vorhanden. Es wird angemerkt, dass die Anzahl von Bits des Fehlervektors 125 gleich der Anzahl von Bits der Rohdaten 113 ist, so dass keine Ersatzbits vorhanden sind, um Fehler in den ECC-Bits 115 anzugeben, wobei ein Muster (das für die schattierten Bits gezeigt ist) verwendet wird, um anzugeben, dass ein Fehler in den ECC-Bits 115 bei den Bits 935 gezeigt wird. Das Bit in dem Fehlervektor 125 innerhalb der Bits 935, das dem fehlerhaften ECC-Bit 115 entspricht, ist auf 1 gesetzt, während die anderen Bits innerhalb der Bits 935 auf 0 gesetzt sind. Bei dem Szenario 940 wird ein nichtkorrigierbarer Fehler in den Rohdaten 113 erkannt. In diesem Fall wird der Fehlervektor 125 mit einem Muster erzeugt, das den in den 7 und 8 gezeigten Ausführungsformen ähnlich ist. Es sei angemerkt, dass die Szenarien 910 bis 940 nichterschöpfend sind (z.B. Kombinationen der Szenarien 910 bis 940).
  • 10 veranschaulicht Fehlervektoren 125 für unterschiedliche Szenarien 1010 bis 1050 gemäß einer weiteren Ausführungsform. Gemäß der Ausführungsform, die durch die 10 veranschaulicht ist, gibt der Fehlervektor 125 Fehler nicht nur bei den Rohdaten 113, auf die zugegriffen wird, und den ECC-Bits 115 an, sondern auch bei Rohdaten 113, auf die nicht zugegriffen wird. Diese Ausführungsform bezieht sich auf ECC-Bits 115, die über Daten 113, auf die zugegriffen wird, und über Daten 113‘, auf die nicht zugegriffen wird, berechnet werden. Die Speichereinheit 110 verwendet die ECC-Bits 115 und ein zusätzliches Bit, um die doppelte Anzahl von Daten 113 abzudecken (z.B. 64 Bits anstelle von lediglich 32 Bits). Die Daten 113‘, auf die nicht zugegriffen wird, werden in der Speichereinheit 110 gespeichert, jedoch in den hier erläuterten Beispielen nicht als Rohdaten ausgelesen. Wenn in den Daten 113, auf die zugegriffen wird, den Daten 113‘, auf die nicht zugegriffen wird, oder ECC-Bits 115 wie in dem Szenario 1010 keine Fehler vorhanden sind, enthält der Fehlervektor 125 nur Nullen. Wenn wie in dem Szenario 1020 ein korrigierbarer Fehler in den Daten 113, auf die zugegriffen wird, vorhanden ist, wird das Fehlerbit in einem entsprechenden Bit des Fehlervektors 125 angegeben. Wenn die Daten 113‘, auf die nicht zugegriffen wird, wie im Szenario 1030 einen korrigierbaren Fehler enthalten, handelt es sich bei dem Fehlervektor um ein Muster, das angibt, dass in einem der beiden Datengruppen (113, 113‘), die den ECC-Bits 115 zugehörig sind, in Fehler vorhanden ist. Alternativ kann der Fehlervektor 125 lediglich aus Nullen bestehen, um anzugeben, dass die Daten 113, auf die zugegriffen wird, keinen Fehler enthalten. Bei dem Szenario 1040 gibt es einen korrigierbaren Fehler bei den ECC-Bits 115. Bei diesem Szenario 1040 ergibt sich ein Muster ähnlich wie beim Szenario 930 und außerdem eine Angabe in dem Fehlervektor 125 des fehlerhaften Bit unter den ECC-Bits 115. Wenn es in den Daten 113, auf die zugegriffen wird, einen nichtkorrigierbaren Fehler gibt wie im Szenario 1050, handelt es sich bei dem Fehlervektor 125 um ein Muster ähnlich wie beim Szenario 940.
  • 11 ist eine beispielhafte Umsetzung des Befehls-Decodierers 150 des Systems 100 zur Speicherverwaltung gemäß einer Ausführungsform. Die verschiedenen Bits, die als Befehl 153 gesetzt sind, der in den Decodierer 150 eingegeben wird, enthalten das Bit EV. Wie 11 angibt, kann ein Betriebsartregister 1110 verwendet werden, um das Auslesebit EV freizugeben oder zu sperren.
  • Die 12 bis 14 veranschaulichen beispielhafte Prozessabläufe, die durch die Speichersteuereinheit 10 umgesetzt werden, die das System 100 zur Speicherverwaltung verwendet. 12 ist ein Prozessablauf eines Verfahrens zum Verwenden des Fehlervektors, der gemäß hier erläuterter Ausführungsformen erhalten wird. Die vorliegende Ausführungsform bezieht sich beispielsweise auf einen regulären Lesevorgang. Im Block 1210 erfolgt eine Leseoperation, wobei EV auf 0 gesetzt ist, was anzeigt, dass der Fehlervektor 125 nicht ausgegeben werden sollte. Es erfolgt im Block 1220 ein Ermitteln, ob es sich bei den korrigierten Daten 135 um ein im Voraus definiertes Muster handelt. Wie beispielsweise in 8 gezeigt, können die korrigierten Daten 135, wenn sie ein im Voraus definiertes Muster aufweisen, einen nichtkorrigierbaren Fehler angeben. Wenn es sich bei den korrigierten Daten 135 um ein im Voraus definiertes Muster handelt, erfolgt im Block 1230 ein weiterer Lesevorgang (Read2), wobei EV auf 1 gesetzt ist, was anzeigt, dass der Fehlervektor 125 ausgegeben werden sollte. Auf der Grundlage anderer Bits, die gemäß verschiedenen Ausführungsformen, die oben erläutert wurden, in dem Befehl 153 gesetzt sind, kann dieser zweite Lesevorgang zusätzlich verlangen, dass Rohdaten 113 oder korrigierte Daten 135 ausgegeben werden. Im Block 1240 wird auf der Grundlage des Fehlervektors 125 ermittelt, ob in den Rohdaten 113 ein nichtkorrigierbarer Fehler vorhanden ist. Wenn festgestellt wird, dass in den Rohdaten 113 ein nichtkorrigierbarer Fehler vorhanden ist, wird im Block 1250 eine Fehlerwiederherstellung verfolgt. Die Fehlerwiederherstellung kann durch bekannte Techniken ausgeführt werden. Wenn festgestellt wird, dass es sich bei den korrigierten Daten 135 nicht um ein im Voraus definiertes Muster handelt (im Block 1220) oder wenn festgestellt wird, dass in den Rohdaten 113 (im Block 1240) kein nichtkorrigierbarer Fehler vorhanden ist, wird der Prozess zum Fortsetzen einer normalen Operation im Block 1260 fortgesetzt. Dieser Prozess kann beispielsweise ein Lesen zusätzlicher Daten von der Speichereinheit 110 enthalten.
  • 13 ist ein Prozessablauf eines weiteren Verfahrens zum Verwenden des Fehlervektors, der gemäß Ausführungsformen erhalten wird. Die vorliegende Ausführungsform bezieht sich beispielsweise auf einen Speicher-Bereinigungsprozess, bei dem Speicherpositionen der Speichereinheit 110 gelesen und bei Bedarf korrigiert werden. Speicherpositionen, bei denen Fehler bestehen bleiben, nachdem korrigierte Daten zurückgeschrieben wurden, gelten als harte Fehler, während Speicherpositionen, an denen kein Fehler bestehen bleibt, als weiche Fehler gelten. Im Block 1310 folgt einem ersten Lesevorgang (Read1), wobei EV auf 0 gesetzt ist, was angibt, dass der Fehlervektor 125 nicht ausgegeben werden soll (d.h., lediglich Daten (113 oder 135) sollten ausgegeben werden), ein zweiter Lesevorgang (Read2), wobei EV auf 1 gesetzt ist, was angibt, dass der Fehlervektor 125 ausgegeben werden sollte. Im Block 1320 wird ermittelt, ob in den Daten (113 oder 135) oder im Fehlervektor 125 Fehler vorhanden sind (bei dem Fehlervektor 125 handelt es sich beispielsweise um ein im Voraus definiertes Muster). Wenn in den Daten 113, 135 oder im Fehlervektor 125 ein Fehler vorhanden ist, werden im Block 1330 korrekte Daten auf die Speicherposition geschrieben. Dieser Korrektur folgt im Block 1340 eine weitere Gruppe von Lesevorgängen (Read1 und Read2). Im Block 1350 wird ermittelt, ob in den Daten 113, 125 oder im Fehlervektor 125 Fehler vorhanden sind. Wenn in den Daten 113, 135 oder im Fehlervektor 125 bei dieser Stufe (noch) ein Fehler vorhanden ist (nach der Korrektur im Block 1330), wird der Fehler im Block 1360 in dem Protokoll für harte Fehler protokolliert. Wenn in den Daten 113, 135 oder im Fehlervektor 125 nach der Korrektur im Block 1330 kein Fehler vorhanden ist, wird im Block 1370 ein weicher Fehler protokolliert. Nach dem Protokollieren harter und weicher Fehler (Blöcke 1360, 1370) oder wenn (im Block 1320) festgestellt wird, dass in den Daten 113, 135 oder in dem Fehlervektor 125 nach der ersten Gruppe von Lesevorgängen (im Block 1310) kein Fehler vorhanden ist, wird der Prozess fortgesetzt. Der Prozess wird fortgesetzt, indem zur nächsten Adresse oder Speicherposition der Speichereinheit 110 vorgegangen wird, bis jede Speicherposition der Speichereinheit 110 gelesen wurde.
  • 14 ist ein Prozessablauf eines nochmals weiteren Verfahrens zum Verwenden des Fehlervektors, der gemäß Ausführungsformen erhalten wurde. Wie das Beispiel, das unter Bezugnahme auf 13 erläutert wurde, bezieht sich die in 14 gezeigte Ausführungsform auf einen Speicher-Bereinigungsprozess. Im Block 1410 erfolgt ein Lesevorgang, wobei EV auf 1 gesetzt ist, was angibt, dass der Fehlervektor 125 ausgegeben werden sollte. Wie beispielsweise unter Bezugnahme auf 3 erläutert wurde, können die Daten (113 und/oder 135) zusätzlich ausgegeben werden. Im Block 1420 wird ermittelt, ob in den Daten 113, 125 oder im Fehlervektor 125 ein Fehler vorhanden ist. Wenn im Block 1420 ein Fehler gefunden wird, wird im Block 1430 ein weiterer Lesevorgang ausgeführt, wobei EV auf 0 gesetzt ist, was angibt, dass der Fehlervektor 125 nicht ausgegeben werden sollte. Im Block 1440 werden korrigierte Daten zu der Speicherposition bzw. den Speicherpositionen zurückgeschrieben, die einen Fehler enthielten (festgestellt im Block 1420). Dann wird im Block 1450 ein weiterer Lesevorgang ausgeführt, wobei EV auf 1 gesetzt ist. Im Block 1460 wird ermittelt, ob in den Daten 113, 135 oder in dem Fehlervektor 125 ein Fehler vorhanden ist. Wenn erneut ein Fehler vorhanden ist, ist der Fehler dauerhaft und wird im Block 1470 als harter Fehler protokolliert. Wenn nach diesem Lesevorgang (im Block 1450) kein Fehler vorhanden ist, wird der Fehler im Block 1480 als weicher Fehler protokolliert. Nach dem Protokollieren der harten oder weichen Fehler (Blöcke 1470 oder 1480) oder wenn (im Block 1420) festgestellt wird, dass nach dem ersten Lesevorgang (im Block 1410) kein Fehler in den Daten 113, 135 oder in dem Fehlervektor 125 vorhanden ist, wird der Prozess fortgesetzt. Bis jede Speicherposition der Speichereinheit 110 gelesen wurde, enthält ein Fortsetzen das Übergehen zur nächsten Adresse oder Speicherposition der Speichereinheit 110.
  • Die hier verwendete Terminologie dient lediglich dem Zweck des Beschreibens bestimmter Ausführungsformen und soll die Erfindung nicht einschränken. Die hier verwendeten Singular-Formen „ein“ und „der/die/das“ sollen ebenso die Plural-Formen einschließen, falls im Kontext nicht anders angegeben. Es ist ferner klar, dass die Ausdrücke „weist auf“ und/oder „aufweisend“ bei Verwendung in dieser Spezifikation das Vorhandensein von festgestellten Merkmalen, Ganzzahlen, Schritten, Operationen, Elementen und/oder Komponenten spezifiziert, jedoch nicht das Vorhandensein oder das Hinzufügen von einem oder mehreren Merkmalen, Ganzzahlen, Schritten, Operationen, Elementen, Komponenten und/oder deren Gruppen ausschließt.
  • Die entsprechenden Strukturen, Materialien, Wirkungen und Ersetzungen aller Mittel oder Schritte plus Funktionselemente in den nachfolgenden Ansprüchen sollen gegebenenfalls alle Strukturen, Materialien oder Wirkungen zum Ausführen der Funktion in Kombination mit anderen Elementen, die speziell beansprucht werden, enthalten. Die Beschreibung der vorliegenden Erfindung wurde für Zwecke der Erläuterung und Beschreibung dargestellt, es ist jedoch nicht vorgesehen, dass sie in der offenbarten Form für die Erfindung erschöpfend oder einschränkend sein soll. Viele Modifikationen und Variationen werden einem Fachmann offensichtlich erscheinen, ohne vom Umfang und Erfindungsgedanken der Erfindung abzuweichen. Die Ausführungsform wurde gewählt und beschrieben, um die Grundgedanken der Erfindung und der praktischen Anwendung am besten zu erläutern und um Nichtfachleute zu befähigen, die Erfindung zu verstehen, da verschiedene Ausführungsformen mit zahlreichen Modifikationen für die vorgesehene praktische Verwendung geeignet sind.
  • Bei der vorliegenden Erfindung kann es sich um ein System, ein Verfahren und/oder ein Computerprogrammprodukt handeln. Das Computerprogrammprodukt kann ein computerlesbares Speichermedium (oder Medien) enthalten, auf dem sich computerlesbare Programmbefehle befinden, um einen Prozessor zu veranlassen, Aspekte der vorliegenden Erfindung auszuführen.
  • Bei dem computerlesbaren Speichermedium kann es sich um eine materielle Einheit handeln, die Befehle zum Verwenden durch eine Befehlsausführungseinheit halten und speichern kann. Bei dem computerlesbaren Speichermedium kann es sich beispielsweise um eine elektronische Speichereinheit, eine magnetische Speichereinheit, eine optische Speichereinheit, eine elektromagnetische Speichereinheit, eine Halbleiter-Speichereinheit oder jede geeignete Kombination der Vorhergehenden handeln, ist jedoch nicht darauf beschränkt. Eine nicht erschöpfende Liste von spezielleren Beispielen des computerlesbaren Speichermediums enthält Folgendes: eine tragbare Computerdiskette, eine Festplatte, einen Direktzugriffsspeicher (RAM), einen Festwertspeicher (ROM), einen löschbaren programmierbaren Festwertspeicher (EPROM oder Flash-Speicher), einen statischen Direktzugriffsspeicher (SRAM), einen tragbaren Compactdisk-Festwertspeicher (CD-ROM), eine digitale Versatile-Disk (DVD), einen Speicherstick, eine Diskette (Floppy Disk), eine mechanisch codierte Einheit wie beispielsweise Lochkarten oder erhabene Strukturen in einer Nut, in denen Befehle aufgezeichnet sind, oder jede geeignete Kombination des Vorhergehenden. Ein hier verwendetes computerlesbares Speichermedium sollte nicht so ausgelegt werden, dass es sich dabei per se um vergängliche Signale handelt wie beispielsweise Funkwellen oder andere sich frei ausbreitende elektromagnetische Wellen, elektromagnetische Wellen, die sich durch einen Hohlleiter oder andere Übertragungsmedien ausbreiten (z.B. Lichtimpulse, die ein Lichtwellenleiterkabel durchlaufen) oder elektrische Signale, die durch eine Leitung übertragen werden.
  • Computerlesbare Programmbefehle, die hier beschrieben werden, können von einem computerlesbaren Speichermedium zu betreffenden Datenverarbeitungs/Verarbeitungs-Einheiten oder über ein Netzwerk, z.B. das Internet, ein Lokalbereichsnetz, ein Weitverkehrsnetz und/oder ein drahtloses Netzwerk zu einem externen Computer oder einer externen Speichereinheit heruntergeladen werden. Das Netzwerk kann Kupfer-Übertragungskabel, Lichtwellenleiter, drahtlose Übertragungen, Router, Firewalls, Switches, Gateway-Computer und/oder Edge-Server aufweisen. Eine Netzwerk-Adapterkarte oder eine Netzwerk-Schnittstelle in jeder Datenverarbeitungs/Verarbeitungs-Einheit empfängt computerlesbare Programmbefehle von dem Netzwerk und leitet die computerlesbaren Programmbefehle zum Speichern in einem computerlesbaren Speichermedium in der betreffenden Datenverarbeitungs/Verarbeitungs-Einheit weiter.
  • Bei computerlesbaren Programmbefehlen zum Ausführen von Operationen der vorliegenden Erfindung kann es sich um Assembler-Befehle, Befehle mit Befehlssatz-Architektur (ISA), Maschinenbefehle, maschinenabhängige Befehle, Mikrocode, Firmware-Befehle, Zustandseinstellungsdaten oder Quellencode bzw. Objektcode handeln, die in jeder Kombination aus einer oder mehreren Programmiersprachen geschrieben sind, darunter eine objektorientierte Programmiersprache wie Java, Smalltalk, C++ oder dergleichen und herkömmliche prozedurale Programmiersprachen wie etwa die Programmiersprache "C" oder ähnliche Programmiersprachen. Die computerlesbaren Programmbefehle können nur auf dem Computer eines Benutzers, teilweise auf dem Computer eines Benutzers, als ein eigenständiges Software-Paket, teilweise auf dem Computer eines Benutzers und teilweise auf einem fernen Computer oder nur auf dem fernen Computer oder Server ausgeführt werden. In dem zuletzt genannten Szenario kann der ferne Computer mit dem Computer des Benutzers durch jeden Netzwerktyp verbunden sein, darunter ein lokales Netzwerk (LAN) oder ein Weitverkehrsnetz (WAN), oder die Verbindung kann zu einem externen Computer (z.B. über das Internet unter Verwendung eines Internet-Dienstanbieters) hergestellt werden. Bei einigen Ausführungsformen können elektronische Schaltungsanordnungen, darunter beispielsweise eine programmierbare logische Schaltungsanordnung, vor Ort programmierbare Gate-Arrays (FPGA) oder programmierbare Logik-Arrays (PLA) die computerlesbaren Programmbefehle ausführen, indem Zustandsinformationen der computerlesbaren Programmbefehle genutzt werden, um die elektronische Schaltungsanordnung zu personalisieren, um Aspekte der vorliegenden Erfindung auszuführen.
  • Aspekte der vorliegenden Erfindung werden hier unter Bezugnahme auf Ablaufplan-Darstellungen und/oder Blockschaltbilder von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten gemäß Ausführungsformen der Erfindung beschrieben. Es ist klar, dass jeder Block der Ablaufplan-Darstellungen und/oder Blockschaltbilder und Kombinationen von Blöcken in den Ablaufplan-Darstellungen und/oder Blockschaltbildern durch computerlesbare Programmbefehle umgesetzt werden können.
  • Diese computerlesbaren Programmbefehle können einem Prozessor eines Universalcomputers, eines Spezialcomputers oder einer anderen programmierbaren Datenverarbeitungsvorrichtung bereitgestellt werden, um eine Maschine zu bilden, so dass Befehle, die über den Prozessor des Computers oder der anderen programmierbaren Datenverarbeitungsvorrichtung ausgeführt werden, Mittel zum Umsetzen der Funktionen/Wirkungen, die in dem Block oder den Blöcken des Ablaufplans und/oder Blockschaltbilds spezifiziert sind, erzeugen. Diese computerlesbaren Programmbefehle können außerdem in einem computerlesbaren Speichermedium gespeichert sein, das einen Computer, eine andere programmierbare Datenverarbeitungsvorrichtung und/oder andere Einheiten anweisen kann, in einer bestimmten Weise zu funktionieren, so dass das computerlesbare Speichermedium mit darin gespeicherten Befehlen einen Herstellungsgegenstand aufweist, der Befehle enthält, die Aspekte der Funktion/Wirkung umsetzen, die in dem Block oder den Blöcken des Ablaufplans und/oder Blockschaltbilds spezifiziert sind.
  • Die computerlesbaren Programmbefehle können außerdem in einen Computer, eine andere programmierbare Datenverarbeitungsvorrichtung oder eine andere Einheit geladen werden, um eine Reihe von Funktionsschritten zu bewirken, die auf dem Computer, der anderen programmierbaren Datenverarbeitungsvorrichtung oder der anderen Einheit ausgeführt werden sollen, um einen durch einen Computer umgesetzten Prozess zu erzeugen, so dass die Befehle, die auf dem Computer, der anderen programmierbaren Vorrichtung oder der anderen Einheit ausgeführt werden, die Funktionen/Wirkungen, die in dem Block oder Blöcken des Ablaufplans und/oder Blockschaltbilds spezifiziert sind, umsetzen.
  • Der Ablaufplan und die Blockdarstellungen in den Figuren veranschaulichen die Architektur, Funktionalität und Operation von möglichen Umsetzungen von Systemen, Verfahren und Computerprogrammprodukten gemäß verschiedener Ausführungsformen der vorliegenden Erfindung. In diesem Zusammenhang kann jeder Block in dem Ablaufplan oder in Blockdarstellungen ein Modul, Segment oder Abschnitt von Befehlen repräsentieren, der einen oder mehrere ausführbare Befehle zum Umsetzen der spezifizierten logischen Funktion(en) aufweist. Bei einigen alternativen Umsetzungen können die in dem Block angegebenen Funktionen möglicherweise nicht in der in den Figuren angegebenen Reihenfolge auftreten. Zum Beispiel können zwei Blöcke, die nacheinander gezeigt sind, tatsächlich im Wesentlichen gleichzeitig ausgeführt werden oder die Blöcke können gelegentlich in Abhängigkeit von der beteiligten Funktionalität in der umgekehrten Reihenfolge ausgeführt werden. Es wird außerdem angemerkt, dass jeder Block in den Blockdarstellungen und/oder Ablaufplan-Darstellungen und Kombinationen von Blöcken in den Blockdarstellungen und/oder der Ablaufplan-Darstellung durch Systeme, die auf spezieller Hardware beruhen, die die spezifizierten Funktionen oder Wirkungen ausführen, oder Kombinationen aus spezieller Hardware und Computerbefehlen umgesetzt werden können.
  • Die Beschreibungen der verschiedenen Ausführungsformen der vorliegenden Erfindung wurden für Zwecke der Erläuterung dargestellt, es ist jedoch nicht vorgesehen, dass sie für die offenbarten Ausführungsformen erschöpfend oder einschränkend sein sollen. Viele Modifikationen und Variationen werden einem Fachmann offensichtlich erscheinen, ohne vom Umfang und Erfindungsgedanken der Erfindung abzuweichen. Die hier verwendete Terminologie wurde gewählt, um die Grundgedanken der Ausführungsformen, die praktische Anwendung oder die technische Verbesserung gegenüber Am Markt vorhandenen Technologien am besten zu erläutern oder um Nichtfachleute zu befähigen, die hier offenbarten Ausführungsformen zu verstehen.
  • Aus Gründen der Vollständigkeit können einige zusätzliche Ausführungsformen des Verfahrens außerdem erwähnt werden:
    Gemäß einer Ausführungsform kann das Verfahren ferner aufweisen:
    Ausgeben der korrigierten Daten, die einer oder mehreren Speicheradressen zugehörig sind, oder der Rohdaten, die der einen oder den mehreren Speicheradressen entsprechen, als Ausgabedaten zusätzlich oder anstelle des Fehlervektors, der der einen oder den mehreren Speicheradressen zugehörig ist, auf der Grundlage der Auswahl, die in dem Lesebefehl angegeben ist.
  • Gemäß einer weiteren Ausführungsform kann das Verfahren ferner aufweisen: Ausgeben der korrigierten Daten, die der einen oder den mehreren Speicheradressen zugehörig sind, oder der Rohdaten, die der einen oder den mehreren Speicheradressen entsprechen, zusätzlich zu einer komprimierten Version des Fehlervektors, der der einen oder den mehreren Speicheradressen zugehörig ist, als Ausgabedaten auf der Grundlage der Auswahl, die in dem Lesebefehl angegeben ist.
  • Gemäß einer weiteren Ausführungsform des Verfahrens enthält das Ausgeben des Fehlervektors, der der einen oder den mehreren Speicheradressen zugehörig ist, Ausgeben eines im Voraus definierten Musters nichtkorrigierbarer Fehler, das einen nichtkorrigierbaren Fehler in den Rohdaten angibt, die der einen oder den mehreren Speicheradressen entsprechen, oder Ausgeben eines im Voraus definierten Muster von Daten, auf die nicht zugegriffen wird, das einen Fehler in den Rohdaten angibt, der sich an anderen Speicheradressen befindet als an der einen oder den mehreren Speicheradressen, die in dem Lesebefehl spezifiziert sind, jedoch den ECC-Bits zugehörig ist, die der einen oder den mehreren Speicheradressen entsprechen.
  • Gemäß einer zusätzlichen Ausführungsform kann das Verfahren ferner eine Steuereinheit aufweisen, die den Lesebefehl sendet, um reguläre Auslesevorgänge aus der Speichereinheit auszuführen, oder eine Mehrzahl von Lesebefehlen sendet, um einen Bereinigungsprozess an der Speichereinheit auszuführen, um dauerhafte Fehler und korrigierbare Fehler zu kennzeichnen.

Claims (15)

  1. System zur Speicherverwaltung, das aufweist: eine Steuereinheit, die so eingerichtet ist, dass sie einen Lesebefehl empfängt und eine Speichereinheit auf der Grundlage des Lesebefehls steuert; wobei die Steuereinheit so eingerichtet ist, dass sie Rohdaten und Fehlerkorrektur-Codier-Bits (ECC-Bits) speichert und die Rohdaten und die ECC-Bits in entsprechend den Speicheradressen ausgibt, die in dem Lesebefehl spezifiziert sind; einen ECC-Decodierer, der so eingerichtet ist, dass er einen Fehlervektor ausgibt, der den Speicheradressen zugehörig ist, auf der Grundlage der Rohdaten und den ECC-Bits, die den Speicheradressen entsprechen, die durch die Speichereinheit ausgegeben werden, wobei der Fehlervektor, der den Speicheradressen zugehörig ist, Fehler in den Rohdaten angibt, die den Speicheradressen entsprechen; und einen Multiplexer (MUX), der so eingerichtet ist, dass er den Fehlervektor auf der Grundlage einer Auswahl ausgibt, die in dem Lesebefehl angegeben ist.
  2. System nach Anspruch 1, das ferner eine Komponente aufweist, die so eingerichtet ist, dass sie auf die Rohdaten und die ECC-Bits wirkt, die den Speicheradressen entsprechen, die durch die Speichereinheit ausgegeben werden, und korrigierte Daten ausgibt, die den Speicheradressen zugehörig sind, wobei die korrigierten Daten, die den Speicheradressen zugehörig sind, Korrekturen an korrigierbaren Fehlern in den Rohdaten enthalten, die den Speicheradressen entsprechen.
  3. System nach Anspruch 2, wobei es sich bei der Komponente um ein digitales Exklusiv-ODER-Logikgatter handelt.
  4. System nach Anspruch 2, wobei der MUX auf der Grundlage der Auswahl, die in dem Lesebefehl angegeben ist, die korrigierten Daten, die den Speicheradressen zugehörig sind, zusätzlich zu dem Fehlervektor ausgibt, der den Speicheradressen zugehörig ist.
  5. System nach Anspruch 2, wobei der MUX auf der Grundlage der Auswahl, die in dem Lesebefehl angegeben ist, die korrigierten Daten, die den Speicheradressen zugehörig sind, zusätzlich zu einer komprimierten Version des Fehlervektors ausgibt, der den Speicheradressen zugehörig ist.
  6. System nach Anspruch 2, wobei der MUX auf der Grundlage der Auswahl, die in dem Lesebefehl angegeben ist, die korrigierten Daten, die den Speicheradressen zugehörig sind, anstelle des Fehlervektors ausgibt, der den Speicheradressen zugehörig ist.
  7. System nach Anspruch 1, wobei der Fehlervektor, der den Speicheradressen zugehörig ist, ein im Voraus definiertes Muster nichtkorrigierbarer Daten angibt, wenn die Rohdaten, die den Speicheradressen entsprechen, einen nichtkorrigierbaren Fehler enthalten.
  8. System nach Anspruch 1, wobei der MUX auf der Grundlage der Auswahl, die in dem Lesebefehl angegeben ist, die Rohdaten, die den Speicheradressen entsprechen, anstelle des Fehlervektors ausgibt, der den Speicheradressen zugehörig ist.
  9. System nach Anspruch 1, wobei der MUX auf der Grundlage der Auswahl, die in dem Lesebefehl angegeben ist, die Rohdaten, die den Speicheradressen entsprechen, zusätzlich zu dem Fehlervektor ausgibt, der den Speicheradressen zugehörig ist.
  10. System nach Anspruch 1, wobei der Fehlervektor, der den Speicheradressen zugehörig ist, ein im Voraus definiertes Muster von Daten angibt, auf die nicht zugegriffen wird, wenn die Rohdaten einen Fehler aufweisen, der an anderen Speicheradressen vorhanden ist als die Speicheradressen, die in dem Lesebefehl spezifiziert sind, jedoch den ECC-Bits zugehörig ist, die den Speicheradressen entsprechen.
  11. System nach Anspruch 1, wobei die Steuereinheit eine Mehrzahl von Lesebefehlen empfängt, die zum Ausführen eines Bereinigungsprozesses an der Speichereinheit verwendet werden, um dauerhafte Fehler und korrigierbare Fehler zu kennzeichnen.
  12. System nach Anspruch 1, wobei es sich bei der Speichereinheit um eine Einheit eines dynamischen Direktzugriffsspeichers (DRAM) handelt.
  13. Verfahren zum Verwalten von Ausgabedaten, die aus einer Speichereinheit stammen, die Rohdaten und Fehlerkorrektur-Codier- Bits (ECC-Bits) speichert, wobei das Verfahren enthält: Empfangen eines Lesebefehls, wobei der Lesebefehl eine Spezifikation der einen oder der mehreren Speicheradressen in der Speichereinheit enthält; aus der Speichereinheit Ausgeben der Rohdaten, die der einen oder den mehreren Speicheradressen entsprechen, und der ECC-Bits, die der einen oder den mehreren Speicheradressen entsprechen; Decodieren der Rohdaten und der ECC-Bits, die der einen oder den mehreren Speicheradressen entsprechen, um einen Fehlervektor auszugeben, der der einen oder den mehreren Speicheradressen zugehörig ist, wobei der Fehlervektor, der der einen oder den mehreren Speicheradressen zugehörig ist, Fehler in den Rohdaten angibt, die der einen oder den mehreren Speicheradressen entsprechen; und Ausgeben des Fehlervektors, der der einen oder den mehreren Speicheradressen zugehörig ist, als Ausgabedaten auf der Grundlage einer Auswahl, die in dem Lesebefehl angegeben ist.
  14. Verfahren nach Anspruch 13, ferner aufweisend ein Wirken auf die Rohdaten und die ECC-Bits, die der einen oder den mehreren Speicheradressen entsprechen, um korrigierte Daten auszugeben, die der einen oder den mehreren Speicheradressen zugehörig sind, wobei die korrigierten Daten, die der einen oder den mehreren Speicheradressen zugehörig sind, Korrekturen an korrigierbaren Fehlern in den Rohdaten enthalten, die der einen oder den mehreren Speicheradressen entsprechen.
  15. Computerprogrammprodukt zum Verwalten von Ausgabedaten, die aus einer Speichereinheit stammen, die Rohdaten und Fehlerkorrektur-Codier-Bits (ECC-Bits) speichert, wobei das Computerprogrammprodukt ein computerlesbares Speichermedium aufweist, in dem Programmcode verkörpert ist, wobei der Programmcode durch einen Prozessor ausführbar ist, um ein Verfahren auszuführen, das aufweist: Empfangen eines Lesebefehls, wobei der Lesebefehl eine Spezifikation einer oder mehrerer Speicheradressen in der Speichereinheit enthält; aus der Speichereinheit Ausgeben der Rohdaten, die der einen oder den mehreren Speicheradressen entsprechen, und der ECC-Bits, die der einen oder den mehreren Speicheradressen entsprechen; Decodieren der Rohdaten und der ECC-Bits, die der einen oder den mehreren Speicheradressen entsprechen, um einen Fehlervektor auszugeben, der der einen oder den mehreren Speicheradressen zugehörig ist, wobei der Fehlervektor, der der einen oder den mehreren Speicheradressen zugehörig ist, Fehler in den Rohdaten angibt, die der einen oder den mehreren Speicheradressen entsprechen; und Ausgeben des Fehlervektors, der der einen oder den mehreren Speicheradressen zugehörig ist, als Ausgabedaten auf der Grundlage einer Auswahl, die in dem Lesebefehl angegeben ist.
DE102016107718.6A 2015-05-06 2016-04-26 Auslesen von Fehlervektoren aus einer Speichereinheit Pending DE102016107718A1 (de)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US14/705,115 2015-05-06
US14/705,115 US9733870B2 (en) 2015-05-06 2015-05-06 Error vector readout from a memory device
US14/724,901 US9734008B2 (en) 2015-05-06 2015-05-29 Error vector readout from a memory device
US14/724,901 2015-05-29

Publications (1)

Publication Number Publication Date
DE102016107718A1 true DE102016107718A1 (de) 2016-11-10

Family

ID=57179096

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102016107718.6A Pending DE102016107718A1 (de) 2015-05-06 2016-04-26 Auslesen von Fehlervektoren aus einer Speichereinheit

Country Status (2)

Country Link
US (1) US9734008B2 (de)
DE (1) DE102016107718A1 (de)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9606851B2 (en) 2015-02-02 2017-03-28 International Business Machines Corporation Error monitoring of a memory device containing embedded error correction
US9940457B2 (en) * 2015-02-13 2018-04-10 International Business Machines Corporation Detecting a cryogenic attack on a memory device with embedded error correction
US9734008B2 (en) * 2015-05-06 2017-08-15 International Business Machines Corporation Error vector readout from a memory device
US9733870B2 (en) * 2015-05-06 2017-08-15 International Business Machines Corporation Error vector readout from a memory device
US10810077B1 (en) * 2018-06-11 2020-10-20 Ambarella International Lp Rapid soft-error detection
US11507454B2 (en) * 2020-10-26 2022-11-22 Oracle International Corporation Identifying non-correctable errors using error pattern analysis
US20230333762A1 (en) * 2022-04-15 2023-10-19 Micron Technology, Inc. Reuse of bad blocks for tasks in a memory sub-system

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4105819B2 (ja) * 1999-04-26 2008-06-25 株式会社ルネサステクノロジ 記憶装置およびメモリカード
US7779334B2 (en) * 2006-06-26 2010-08-17 Taiwan Semiconductor Manufacturing Company, Ltd. Memory having an ECC system
US8024637B2 (en) * 2007-04-02 2011-09-20 Broadcom Corporation Super block error correction code (ECC) adaptable to communication systems including hard disk drives (HDDs) and other memory storage devices
JP2009093714A (ja) * 2007-10-04 2009-04-30 Panasonic Corp 半導体記憶装置
US9170879B2 (en) * 2009-06-24 2015-10-27 Headway Technologies, Inc. Method and apparatus for scrubbing accumulated data errors from a memory system
US8468421B2 (en) * 2010-06-23 2013-06-18 International Business Machines Corporation Memory system for error checking fetch and store data
US8644104B2 (en) * 2011-01-14 2014-02-04 Rambus Inc. Memory system components that support error detection and correction
KR102081584B1 (ko) * 2012-11-02 2020-02-26 삼성전자 주식회사 메모리 장치 구동 방법 및 메모리 시스템
KR102143517B1 (ko) * 2013-02-26 2020-08-12 삼성전자 주식회사 에러 정정회로를 포함하는 반도체 메모리 장치 및 반도체 메모리 장치의 동작방법
US9146809B2 (en) * 2013-10-07 2015-09-29 Macronix International Co., Ltd. ECC method for double pattern flash memory
EP2876557B1 (de) * 2013-11-22 2016-06-01 Alcatel Lucent Erkennung eines Lesezugriffs auf nicht zugewiesenen oder nicht initialisierten Speicher
KR20150090414A (ko) * 2014-01-29 2015-08-06 에스케이하이닉스 주식회사 에러 정정 동작을 수행하는 반도체 장치
US9514848B2 (en) * 2014-04-03 2016-12-06 Lite-On Electronics (Guangzhou) Limited Solid state drive and associated error check and correction method
KR20150130888A (ko) * 2014-05-14 2015-11-24 에스케이하이닉스 주식회사 셀프 리페어 동작을 수행하는 반도체 메모리 장치
US9734008B2 (en) * 2015-05-06 2017-08-15 International Business Machines Corporation Error vector readout from a memory device

Also Published As

Publication number Publication date
US9734008B2 (en) 2017-08-15
US20160328285A1 (en) 2016-11-10

Similar Documents

Publication Publication Date Title
DE102016107718A1 (de) Auslesen von Fehlervektoren aus einer Speichereinheit
DE112011100371B4 (de) Verfahren, Vorrichtung und Computerprogrammprodukt zum Decodieren eines Codeworts
DE102012214324B4 (de) Verfahren und Vorrichtung zur Erleichterung der Datenüberprüfung mithilfe einer Prüfsumme in Verbindung mit einem Sidefile
DE112014002870B4 (de) Kombinations-Fehler- und Löschdecodierung für Produktcodes
DE112007003015T5 (de) Verfahren und Vorrichtung zur Cache-gestützten Fehlerdetektion und -korrektur in einem Speicher
DE102013201174A1 (de) Online-Überprüfung einer Standby-Datenbank in physischen Replikationsumgebungen mit Protokollversand
DE112018000227B4 (de) Verfahren zum teilweisen Aktualisieren von Dateninhalten in einem verteilten Speichernetzwerk
DE112011101852T5 (de) Decodieren von LDPC-Code
DE112014002403B4 (de) Hochleistungs-Lese-Modifizier-Schreib-System mit Zeilenratenzusammenführung von Datenrahmensegmenten in Hardware
DE102015210651B4 (de) Schaltung und Verfahren zum Testen einer Fehlerkorrektur-Fähigkeit
DE112012005635T5 (de) Inkrementelles Modifizieren eines Fehlererkennungscodes
DE102013208212B4 (de) Verbessertes Computerschnittstellensystem
DE112011104830T5 (de) Ein Verfahren zum Sicherstellen der Programmkorrektheit unter Verwendung von feingranularem spekulativem Hardwareausführen
DE102018213618A1 (de) Kryptografiemodul und Betriebsverfahren hierfür
DE102012102080A1 (de) Fehlertolerante Flip-Flops
DE102015105414A1 (de) Bearbeiten eines Zielspeichers
DE102015102774A1 (de) Verfahren und vorrichtung zur verarbeitung eines löschzählers
DE102013219088B9 (de) Schaltungsanordnung und Verfahren zur Realisierung von Prüfbitkompaktierung für Cross-Parity-Codes
DE102013016694B4 (de) Codieren und Decodieren redundanter Bits zum Vornehmen von Anpassungen für Speicherzellen mit Haftfehlern
DE102018219877A1 (de) Vorrichtung und Verfahren zum Erzeugen einer Fehlerkorrekturinformation
DE112014001736T5 (de) Ein Primärspeichermodul mit Aufzeichnung des Nutzungsverlaufs und Anwendungsmöglichkeiten des Primärspeichermoduls bei einem Computersystem
DE102014006998A1 (de) Korrektur eines programmierbaren Speichers
DE102014114157B4 (de) Verfahren zur Datenverarbeitung zum Ermitteln, ob bei einer Ausführung eines Programms ein Fehler aufgetreten ist und Datenverarbeitungsanordnungen zum Erzeugen von Programm-Code
EP3314768A1 (de) Vorrichtung und verfahren zum erstellen einer asymmetrischen prüfsumme
DE112021000637T5 (de) Kontinuierlicher monotoner zähler für speichervorrichtungen

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R082 Change of representative

Representative=s name: SPIES & BEHRNDT PATENTANWAELTE PARTG MBB, DE

R082 Change of representative

Representative=s name: SPIES & BEHRNDT PATENTANWAELTE PARTG MBB, DE