DE102004003353A1 - Verfahren und System zum Minimieren der Länge einer Defektliste für eine Speichervorrichtung - Google Patents

Verfahren und System zum Minimieren der Länge einer Defektliste für eine Speichervorrichtung Download PDF

Info

Publication number
DE102004003353A1
DE102004003353A1 DE102004003353A DE102004003353A DE102004003353A1 DE 102004003353 A1 DE102004003353 A1 DE 102004003353A1 DE 102004003353 A DE102004003353 A DE 102004003353A DE 102004003353 A DE102004003353 A DE 102004003353A DE 102004003353 A1 DE102004003353 A1 DE 102004003353A1
Authority
DE
Germany
Prior art keywords
bit
data storage
memory
defect
defective
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.)
Withdrawn
Application number
DE102004003353A
Other languages
English (en)
Inventor
Giovanni Waltham Motta
Erik San Jose Ordentlich
Gadiel Cupertino Seroussi
Marcelo San Jose Weinberger
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.)
Hewlett Packard Development Co LP
Original Assignee
Hewlett Packard Development Co LP
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hewlett Packard Development Co LP filed Critical Hewlett Packard Development Co LP
Publication of DE102004003353A1 publication Critical patent/DE102004003353A1/de
Withdrawn legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/38Response verification devices
    • G11C29/40Response verification devices using compression techniques
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/70Masking faults in memories by using spares or by reconfiguring
    • G11C29/78Masking faults in memories by using spares or by reconfiguring using programmable devices
    • G11C29/80Masking faults in memories by using spares or by reconfiguring using programmable devices with improved layout
    • G11C29/802Masking faults in memories by using spares or by reconfiguring using programmable devices with improved layout by encoding redundancy signals
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C2029/1208Error catch memory
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C2029/4402Internal storage of test result, quality data, chip identification, repair information

Landscapes

  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • For Increasing The Reliability Of Semiconductor Memories (AREA)

Abstract

Es werden eine Anzahl von Verfahren und Systemen zum effizienten Speichern von Defekte-Speicherplätze-Tabellen offenbart. Ein Vektorquantisierungsverfahren eines Asymmetrische-Verzerrung-Modells und ein Lauflängenquantisierungsverfahren zum Komprimieren einer Defekte-Speicherplätze-Bittabelle, die defekte Speicherplätze in einem Speicher identifiziert, werden bereitgestellt. Da diverse unterschiedliche Komprimierungs-/Entkomprimierungsverfahren für unterschiedliche Typen von Defektverteilungen in einem Speicher geeignet sein können, wird ferner ein Verfahren zum Auswählen des am besten geeigneten Komprimierungs-/Entkomprimierungsverfahrens aus einer Anzahl von Komprimierungs-/Entkomprimierungsverfahren als für eine bestimmte Defektwahrscheinlichkeitsverteilung am besten geeignet bereitgestellt. Schließlich können eine Bittabellenkomprimierung und die Gütefaktormetrik zum Auswählen einer entsprechenden Komprimierungstechnik eine globale Optimierung von Fehlerkorrekturcodes und der Identifizierung von defekten Speicherplätzen ermöglichen.

Description

  • Die vorliegende Erfindung bezieht sich auf Datenspeichervorrichtungen bzw. Speicher und insbesondere auf Datenspeichervorrichtungen zugeordnete Defekte-Speicherplätze-Tabellen bzw. Speichern zugeordnete Defekte-Speicherplätze-Tabellen, die alle defekten Speicherplätze identifizieren, so daß aus einem Speicher eine sequentielle Liste von logischen Speicherplätzen, die mit monoton ansteigenden Indizes indexiert sind, erstellt werden kann, die eine Anzahl von defekten physischen Speicherplätzen bzw. physikalischen Speicherorten umfaßt.
  • In den letzten Jahren wurden enorme Schritte dahingehend unternommen, neue Technologien zum Speichern von Daten in Datenspeichervorrichtungen bzw. Speichern zu entwickeln. Elektronische Speicherchips mit hoher Dichte und hoher Kapazität sind mittlerweile ohne weiteres und auf kostengünstige Weise erhältlich, und unter Verwendung von Halbleiterfilmen werden neuere dreidimensionale gestapelte elektronische Speichervorrichtungen entwickelt. Ältere Technologien umfassen Magnetplatten, Magnetbänder, und sehr alte Technologien umfassen Kernspeicher und Trommelspeicher. Elektronische und magnetische Speichervorrichtungen weisen allgemein eine sehr große Anzahl von adressierbaren physischen Speicherplätzen auf, wobei jeder physische Speicherplatz in der Lage ist, ein oder mehrere computerlesbare Bytes oder Wörter zu speichern, die aus einer feststehenden Anzahl von Bits bestehen, z.B. 8-Bit-Bytes und 32-Bit-Wörter oder 64-Bit-Wörter. Die Speichereinheiten der untersten Ebene, die allgemein als „Datenspeichereinheiten" bezeichnet werden, können hierarchisch in größere Einheiten wie z.B. Plattensektoren oder dreidimensionale Speicherebenen gruppiert werden. Ein physischer Speicherplatz weist eine oder mehrere Datenspeichereinheiten auf, die durch eine physische Adresse adressiert werden können. Ein physischer Speicherplatz kann auf einem Typ von Speichervorrichtung ein computerlesbares Wort sein und kann auf einem anderen Typ von Vorrichtung ein Plattensektor sein.
  • Ungeachtet der Technologie kann allgemein eine gewisse Anzahl der Speicherplätze in einer Speichervorrichtung defekt sein. Ein defekter Speicherplatz kann unlesbar oder unzuverlässig sein, wobei er unterschiedliche Werte erzeugt, wenn er nacheinander ohne einen dazwischenliegenden Schreibvorgang gelesen wird. Derartige defekte Speicherplätze können bei einem anfänglichen Testen im Anschluß an die Herstellung identifiziert werden oder können über die Lebensdauer der Speichervorrichtung hinweg oder über ein inkrementales Testen der Speichervorrichtung oder anhand anderer Mittel dynamisch identifiziert werden.
  • 1 zeigt eine Veranschaulichung eines dreidimensionalen Speichers. Der Speicher weist neun Ebenen 101109 auf, wobei jede Ebene ein gitterartiges Array aus Speicherplätzen, z.B. Speicherplatz 110, aufweist. Bei der in 1 gezeigten dreidimensionalen Speichervorrichtung sind die Speicherplätze auf jeder Ebene wie die Zellen in einem mathematischen Array indexiert, wobei mit dem Speicherplatz (0, 0) begonnen wird und Zeile um Zeile bis zu dem Speicherplatz (31, 5) weitergegangen wird. Die Ebenen sind durch einen dritten Index indexiert, so daß jeder Speicherplatz beispielsweise durch Koordinaten (x, y, z) spezifiziert ist, wobei x der Index einer Zeile in einer Ebene ist, y der Index einer Spalte in einer Ebene ist und z der Index einer Ebene in dem Stapel von Ebenen ist, der den dreidimensionalen Speicher bildet. Bei 1 sind eine Anzahl von Speicherplätzen bzw. Wörtern, wie z.B. der Speicherplatz 112, schattiert gezeigt, um anzugeben, daß der Speicherplatz defekt ist.
  • 2 veranschaulicht eine von zahlreichen möglichen Techniken zum Adressieren von nicht-defekten Speicherplätzen in einem Speicher, der defekte Speicherplätze umfaßt, wie beispielsweise dem in 1 gezeigten. Wie in 2 gezeigt ist, kann eine Bittabelle 201 aufgebaut sein, um die Struktur der physischen Speicherplätze in dem Speicher widerzuspiegeln. Wie in 2 gezeigt ist, umfaßt die Bittabelle 201 beispielsweise ein Array aus Bits, z.B. Array 203, das jeder Ebene des in 1 gezeigten dreidimensionalen Speichers entspricht. Bei jedem Bitarray umfaßt eine Zelle, z.B. Zelle 205, ein einzelnes Bit, das angibt, ob der entsprechende Speicherplatz nicht-defekt oder defekt ist. Bei dieser Figur und in der folgenden Erörterung gibt der Bitwert „0" einen nicht-defekten physischen Speicherplatz an, und der Bitwert „1" gibt einen defekten physischen Speicherplatz an. Man beachte, daß das Bitarray 203 in 2 ähnlich dem Indexieren der Speicherplätze in der entsprechenden dreidimensionalen Speicherebene 101 in dem in 1 gezeigten Speicher indexiert ist. Die Entsprechung zwischen den defekten Bits, die in 1 als schattierte Zellen gezeigt sind, und Zellen in dem Bitarray 203, die den Bitwert „1" enthalten, ist ohne weiteres ersichtlich.
  • Wenn eine Defekte-Speicherplätze-Tabelle, z.B. die Bittabelle 201 in 2, hergestellt ist, können die nicht-defekten Speicherplätze in einer monoton ansteigenden Reihenfolge sequenziert werden, indem diejenigen Speicherplätze, die in der Bittabelle als defekt verifiziert werden, ignoriert werden. Mit anderen Worten kann eine Sequenz von logischen, nicht-defekten Speicherplätzen erstellt werden, so daß physische Speicherplätze unter Verwendung von logischen Speicherplätzen, die nicht-defekt sind, adressiert werden können. Eine Möglichkeit, dies zu tun, besteht darin, einen Index 207 der logischen Speicherplatzadresse jedes der physischen Speicherplätze, die den Bittabelleneinträgen in der ersten Zeile 209 des Bittabellenarrays entsprechen, zu erstellen. Man kann für jedes Bitarray, das einer Ebene in dem Speicher entspricht, einen separaten In dex, z.B. Index 207, erstellen. Der Index kann verwendet werden, um einen Speicherplatz zu finden, der sich in der Nähe eines gewünschten Speicherplatzes befindet und demselben vorausgeht, und anschließend kann die entsprechende Spalte des Bitarrays überquert werden, um die exakte physische Adresse des Speicherplatzes in dem Speicher zu finden. Wenn man beispielsweise den physischen Speicherplatz mit der logischen Speicherplatzadresse 100 finden möchte, könnte man den Index 207 durchsuchen, um die Zelle 212 zu lokalisieren, die die logische Speicherplatzadresse „98" enthält. Der Index in dieser Zelle ist der Index der Spalte in dem Bitarray, das eine erste Zelle aufweist, die der logischen Speicherplatzadresse entspricht. Somit entspricht die Zelle 214 in dem Bitarray 203 einem Speicherplatz, der die logische Speicherplatzadresse „98" aufweist. Anschließend kann die Spalte Zelle um Zelle nach unten überquert werden, um die Bitarrayzelle 216, die der logischen Speicherplatzadresse „100" entspricht, zu lokalisieren. Während der Überquerung werden jegliche Bitarrayzellen, die den Bitwert „1" enthalten, übersprungen. Man beachte, daß der Unterschied zwischen dem Inhalt aufeinanderfolgender Zellen in dem Index 207 nicht konstant ist. Falls in der Spalte einer Ebene des Speichers, die einer Spalte des Bitarrays entspricht, keine defekten Speicherplätze vorliegen, wird die nächste Zelle in dem Index um die Anzahl von Zellen in einer Spalte des Bitarrays inkrementiert. Beispielsweise gibt der Wert „6" in der zweiten Zelle 218 des Index 207 an, daß in der ersten Spalte der ersten Ebene des Speichers keine defekten Speicherplätze auftreten. Wegen des Auftretens eines defekten Speicherplatzes in der zweiten Spalte der ersten Ebene des Speichers (114 in 1), der durch den Bitwert „1" in der Zelle 220 des Bitarrays 203 identifiziert ist, ist jedoch der Wert in der dritten Zelle des Index 207 222 „11", nur fünf größer als der vorhergehende Wert.
  • Der Index und die Speicherplatzbittabelle (bei 2 207 bzw. 201) stellen eines von vielen unterschiedlichen mögli chen Verfahren zum sequentiellen Indexieren der nicht-defekten Speicherplätze in einem Speicher dar. Den meisten Verfahren gemeinsam ist eine Bittabelle, beispielsweise Bittabelle 201 in 2, bei der die nicht-defekten und die defekten Speicherplätze in dem Speicher identifiziert werden. Diese Bittabelle muß in einem Speicher mit einer sehr hohen Geschwindigkeit gespeichert werden, um ein effizientes Adressieren eines Speichers bei hoher Geschwindigkeit zu ermöglichen, da möglicherweise jedesmal, wenn auf einen Speicherplatz zugegriffen wird, auf die Bittabelle zugegriffen werden muß. Derartige Hochgeschwindigkeitsspeicher sind jedoch viel teurer als üblicherweise verwendete Speicher einer geringeren Geschwindigkeit. Beispielsweise wird auf Hochgeschwindigkeitsregister in einem Prozessor allgemein viel schneller zugegriffen, sie sind jedoch viele Größenordnungen teurer als die dynamischen Direktzugriffsspeicher einer geringeren Geschwindigkeit, die allgemein über einen oder mehrere Speicherbusse mit dem Prozessor verbunden sind. Obwohl ein schnellerer Betrieb erhalten werden kann, indem eine größere Anzahl von Registern in einen Prozessor aufgenommen wird, wird der Prozessor mit jedem hinzugefügten Register immer teurer. Aus diesen Gründen erkannten Hersteller und Entwerfer von Speichern und Hersteller und Benutzer von Vorrichtungen, die diese Speicher enthalten, ein Verfahren zum effizienten Speichern von Speicherplatzbittabellen wie z.B. der Speicherplatzbittabelle 201, die in 2 gezeigt ist.
  • Die Aufgabe der vorliegenden Erfindung besteht darin, Verfahren und einen Speicher zu schaffen, die die Länge einer Defektliste für eine Speichervorrichtung minimieren.
  • Diese Aufgabe wird durch Verfahren gemäß Anspruch 1 oder 14 sowie durch einen Speicher gemäß Anspruch 16 gelöst.
  • Bei einem allgemeinen Verfahren, das einen Satz von Ausführungsbeispielen der vorliegenden Erfindung darstellt, wird eine Defekte-Speicherplätze-Bittabelle unter Verwendung ei nes Verfahrens einer verlustbehafteten Komprimierung/Entkomprimierung komprimiert. Ein Verfahren einer verlustbehafteten Komprimierung/Entkomprimierung kann komprimierte Informationen auf eine Entkomprimierung hin verändern, kann jedoch zu einer stärkeren Komprimierung führen. Ein bestimmtes Ausführungsbeispiel der vorliegenden Erfindung verwendet eine Vektorquantisierungstechnik, um eine Defekte-Speicherplätze-Bittabelle, die defekte Speicherplätze in einem Speicher identifiziert, zu komprimieren. Das Vektorquantisierungsverfahren verwendet eine iterative Partitionierung eines Vektorraums. Eine Partitionierung verwendet eine Boolesche ODER-Metrik zum Bestimmen der Affinitäten von Vektoren für jedes Codewort, das als der anfängliche Vektor für jede entstehende Partition ausgewählt wird. Der spezielle Vektor (1,1...1) wird über alle Iterationen hinweg als Codewort in dem Codebuch unterhalten. Das Vektorquantisierungsverfahren ist entworfen, um eine asymmetrische Verzerrung zu erzeugen, so daß ein defekter Speicherplatz nicht durch eine Komprimierung und Entkomprimierung verzerrt wird, um unkorrekterweise anzugeben, daß der Speicherplatz fehlerfrei sei. Lediglich Verzerrungen, die fehlerfreie Speicherplätze auf Defekte-Speicherplätze-Angaben in der Defekte-Speicherplätze-Bittabelle relegieren, sind erlaubt, was zu einem Verlust von Speicherplätzen führt, was jedoch verhindert, daß man sich auf einen defekten Speicherplatz verläßt. Da diverse unterschiedliche Komprimierungs-/Entkomprimierungsverfahren für unterschiedliche Typen von Defektverteilungen innerhalb eines Speichers geeignet sein können, ist ein Verfahren vorgesehen, um aus einer Anzahl von Komprimierungs-/Entkomprimierungsverfahren das für eine bestimmte Defektwahrscheinlichkeitsverteilung am besten geeignete Komprimierungs-/Entkomprimierungsverfahren auszuwählen. Ein Lauflängenquantisierungsverfahren kann ebenfalls verwendet werden, um eine Defekte-Speicherplätze-Bittabelle zu komprimieren.
  • Bevorzugte Ausführungsbeispiele der vorliegenden Erfindung werden nachfolgend Bezug nehmend auf die beiliegenden Zeichnungen näher erläutert. Es zeigen:
  • 1 eine Veranschaulichung eines dreidimensionalen Speichers;
  • 2 eine von zahlreichen möglichen Techniken zum Adressieren nicht-defekter Speicherplätze innerhalb eines Speichers, der defekte Speicherplätze umfaßt, wie z.B. der in 1 gezeigte;
  • 3A3C die Lauflängencodierungstechnik;
  • 4-9 ein Vektorquantisierungsverfahren zum Komprimieren von Defekte-Speicherplätze-Bittabellen, das ein Ausführungsbeispiel der vorliegenden Erfindung darstellt;
  • 10 ein Ablaufsteuerungsdiagramm der LBG-Technik für die Erstellung eines Codebuchs;
  • 11 ein Ablaufsteuerungsdiagramm eines LBG-Algorithmus eines Asymmetrische-Verzerrung-Modells, der verwendet werden kann, um ein Codebuch für eine Vektorquantisierungs-Defekte-Speicherplätze-Tabelle-Komprimierung und -Entkomprimierung bei einem Ausführungsbeispiel der vorliegenden Erfindung zu erstellen;
  • 12 und 13 das Lauflängenquantisierungskomprimierungs-/Entkomprimierungsverfahren, das ein Ausführungsbeispiel der vorliegenden Erfindung darstellt; und
  • 14 und 15 in einem Format eines Ablaufsteuerungsdiagramms eine Übersicht über ein Verfahren zum Bereitstellen eines Speichers, das eines der be schriebenen Ausführungsbeispiele der vorliegenden Erfindung beinhaltet.
  • Um eine Bittabelle, die defekte Speicherplätze in einem Speicher darstellt, so kompakt wie möglich in einem Hochgeschwindigkeitsspeicher zu speichern, um die zum Implementieren des Speichers notwendige Menge an Hochgeschwindigkeitsspeicher zu minimieren, komprimieren eine Anzahl von Ausführungsbeispielen der vorliegenden Erfindung die Defekte-Speicherplätze-Tabelle, die angibt, welche physischen Speicherplätze defekt sind, und speichern die Defekte-Speicherplätze-Tabelle in einem Hochgeschwindigkeitsspeicher. Wie oben erläutert wurde, sind die Defekte-Speicherplätze-Tabellen üblicherweise Bittabellen, bei denen der Bitwert „0" verwendet wird, um nicht-defekte Speicherplätze anzugeben, während der Bitwert „1" verwendet wird, um defekte Speicherplätze zu bezeichnen. Selbstverständlich kann auch eine umgekehrte Konvention verwendet werden.
  • Es gibt viele verschiedene Typen von Komprimierungstechniken. Diese Typen fallen in zwei allgemeine Kategorien: (1) verlustfreie Komprimierungstechniken, die eine exakte Rekonstruktion einer komprimierten Bittabelle ermöglichen; und (2) verlustbehaftete Komprimierungstechniken, die allgemein Verzerrungen bezüglich der ursprünglich codierten Bittabelle auf eine Entkomprimierung hin erzeugen. Eine hinreichend bekannte verlustfreie Komprimierungstechnik ist als „Lauflängencodieren" bekannt. 3A3C veranschaulichen die Lauflängencodierungstechnik. Man beachte, daß ungeachtet der Struktur eines Speichers alle Speicherplätze in einem Speicher sequentiell geordnet werden können, so daß die Bittabelle, die angibt, welche der Speicherplätze defekt sind, ebenfalls sequentiell sein kann. Bei 3A ist eine kurze Defekte-Speicherplätze-Bittabelle 302 zusammen mit einer komprimierten Version der Bittabelle 304 gezeigt. Diese Komprimierung ist bei dem in 3A gezeigten Beispiel nicht sehr dramatisch, da die komprimierte Bitta belle 304 nur um drei Bits kürzer ist als die unkomprimierte Bittabelle 302, die als die Endleerbits 305307 in 3A gezeigt sind. Die Bittabelle 302 wird über ein Lauflängencodieren codiert oder komprimiert. Bei dieser Technik werden Zeichenfolgen von sequentiellen Null-Bits und Zeichenfolgen von sequentiellen Eins-Bits durch eine Länge der Zeichenfolge dargestellt, auf die der Bitwert der Bits in der Zeichenfolge folgt. Beispielsweise umfaßt die Bittabelle 302 eine führende Zeichenfolge von 14 Null-Bits 310. Diese Zeichenfolge von 14 Null-Bits wird bei der komprimierten Version der Bittabelle 304 als eine Vier-Bit-Ganzzahl 312 dargestellt, die den Wert „14" darstellt, auf die ein Ein-Bit-Wert „0" 314 folgt, was angibt, daß die Bits in der 14-Bit-Zeichenfolge Null-Bits sind. Desgleichen wird die nächste Zeichenfolge von drei Eins-Bits 316 in der unkomprimierten Bittabelle 302 in der komprimierten Bittabelle durch die Vier-Bit-Ganzzahl 318 dargestellt, die den Wert „3" darstellt, auf die ein Ein-Bit 320 folgt, das den Bitwert „1" aufweist, was angibt, daß die Zeichenfolge von drei Bits Bitwerte von „1" aufweist. Ein Lauflängencodieren ist eine verlustfreie Codierungstechnik, da die ursprüngliche Bittabelle 302 aus der komprimierten Version der Bittabelle 304 exakt rekonstruiert werden kann. Jede Teilzeichenfolge der unkomprimierten Bittabelle kann in einer Reihenfolge aus der komprimierten Bittabelle erzeugt werden, wobei bei der komprimierten Version der Bittabelle bei der Darstellung der äußersten linken Teilzeichenfolge begonnen wird. Wie in 3B gezeigt ist, werden bedeutend größere Komprimierungsverhältnisse erhalten, wenn lediglich relativ wenige Speicherplätze defekt sind. Bei dem in 3B gezeigten Beispiel wird eine fast 50 Prozent betragende Komprimierung erzielt. Wenn größere Lauflängenganzzahlen verwendet werden, beispielsweise 32-Bit-Ganzzahlen, und das Auftreten von Defekten ziemlich selten ist, können sogar noch größere Komprimierungsverhältnisse erzielt werden. Wie jedoch in 3C gezeigt ist, erzeugen verlustfreie Komprimierungstechniken eventuell nicht immer eine Komprimierung, sondern können bezüglich bestimmter Eingangsbittabel len komprimierte Bittabellen erzeugen, die größere Längen aufweisen als die ursprüngliche unkomprimierte Bittabelle. Mit anderen Worten können verlustfreie Komprimierungstechniken bei bestimmten Typen von Defektverteilungen auf spektakuläre Weise versagen. Bei 3C besteht ein relativ hoher Anteil an defekten Speicherplätzen, und die defekten Speicherplätze sind mit nicht-defekten Speicherplätzen durchsetzt. In diesem Fall erzeugt eine Lauflängenkomprimierung lediglich der ersten sechs Bits 328 der unkomprimierten Bittabelle 330 28 Bits einer lauflängencodierten Bittabelle in der komprimierten Version der Bittabelle 332. Somit führt ein Lauflängencodieren in diesem Fall zu einer Datenerweiterung statt zu einer Datenkomprimierung. Alternativ dazu kann eine Lauflängencodierungstechnik einer variablen Länge statt einer feststehenden Länge verwendet werden. Bei einer Variable-Länge-Codierungstechnik kann ein präfixfreier Code verwendet werden, um die Lauflängenwerte zu Sequenzen von Variable-Länge-Bitzeichenfolgen zu codieren. Die Größen, in Bits, von Lauflängencodierungen spiegeln allgemein die Auftretenshäufigkeit der Codierungen wider, so daß die am häufigsten auftretenden Lauflängen am exaktesten codiert werden. Es können diverse unterschiedliche Arten von Variable-Länge-Lauflängencodierungen verwendet werden, um die Codierung an ein statistisches Modell der zu komprimierenden Daten anzupassen, um die Daten so effizient wie möglich zu komprimieren.
  • Ein Ausführungsbeispiel der vorliegenden Erfindung beinhaltet die Verwendung einer Vektorquantisierung, um eine Defekte-Speicherplätze-Bittabelle zu komprimieren. Vektorquantisierung ist eine verlustbehaftete Komprimierungstechnik. Es wäre nicht naheliegend, eine verlustbehaftete Komprimierungstechnik zum Komprimieren von Speicherplatz-Defekt-Bittabellen zu verwenden, da die ursprüngliche Defekte-Speicherplätze-Bittabelle auf eine Entkomprimierung hin verzerrt sein kann, was bedeutet, daß Bits, die in der ursprünglichen Bittabelle Bitwerte „0" aufweisen, so verzerrt sein können, daß sie bei der entkomprimierten Version Bitwerte „1" aufweisen, und daß Bits, die Bitwerte „1" aufweisen, so verzerrt sein können, daß sie bei der entkomprimierten Version der Defekte-Speicherplätze-Bittabelle Bitwerte „0" aufweisen. In dem erstgenannten Fall wird ein nicht-defekter Speicherplatz als defekt angesehen, was eine Verschwendung an nicht-defektem Speicherplatz in dem Speicher darstellt. In dem letztgenannten Fall wird ein erkannter defekter Speicherplatz als nicht-defekt angesehen, was zu Fehlern verschiedener Schwere, einschließlich katastrophischer Fehler, führen kann. Somit könnten verlustbehaftete Komprimierungstechniken sinnvollerweise als inakzeptabel angesehen werden. Jedoch diente die Anerkennung, daß eine Komprimierungs-/Entkomprimierungstechnik, die eine asymmetrische Verzerrung erzeugt, zum Komprimieren von Defekte-Speicherplätze-Bittabellen akzeptabel sein kann, als Motivation für das erste Ausführungsbeispiel der vorliegenden Erfindung.
  • 4-9 veranschaulichen ein Vektorquantisierungsverfahren zum Komprimieren von Defekte-Speicherplätze-Bittabellen, das ein Ausführungsbeispiel der vorliegenden Erfindung darstellt. Wie in 4 gezeigt ist, kann eine Defekte-Speicherplätze-Bittabelle 402 in eine Sequenz von Bitvektoren 404407 unterteilt sein. Mit anderen Worten kann die Defekte-Speicherplätze-Bittabelle 402 als eine Sequenz von Vier-Bit-Bitvektoren betrachtet werden, wie in 4 gezeigt ist. Vektorquantisierung ist ein Prozeß zum Komprimieren jedes der sequentiellen Vektoren zu einem Index. Eine Entkomprimierung einer über eine Vektorquantisierung komprimierten Bittabelle beinhaltet ein Zurücktransformieren einer Sequenz von Indizes zu Bitvektoren.
  • 5 veranschaulicht die Transformation eines Bitvektors zu einem Indexvektor über eine Vektorquantisierung und eine anschließende Rekonstruktion des Bitvektors. Wie in 5 gezeigt ist, wird ein Bitvektor 502, der einen der sequentiellen Bitvektoren in einer Eingangsbittabelle darstellt, durch einen Codierer 504 in einen Indexvektor 506 transfor miert. Der Indexvektor ist kürzer als der Bitvektor, wodurch ein Komprimierungsverhältnis der Eingangsbittabelle erzeugt wird, das gleich dem Verhältnis der Länge des Bitvektors zu der Länge des Indexvektors ist. Der Indexvektor 506 ist der Index eines Codeworts in einem Codebuch, das nachfolgend beschrieben wird. Eine Rekonstruktion einer Bittabelle aus einer Sequenz von Indexvektoren beinhaltet ein Leiten der Indexvektoren durch einen Decodierer 508, um einen entsprechenden Vektor 510 zu erzeugen. Der Decodierer verwendet den Index, um das entsprechende Codewort zu lokalisieren, und erzeugt das Codewort als den Ausgangsbitvektor.
  • 6 zeigt einen beispielhaften Bitvektorraum und einen entsprechenden Indexvektorraum. Wie in 6 gezeigt ist, können, wenn Vier-Bit-Eingangsvektoren verwendet werden, 16 unterschiedliche mögliche Eingangsvektoren 602 durch einen Vektorquantisierungscodierer empfangen werden. Falls der Codierer ein Codebuch verwendet, das vier Codewörter enthält, so werden vier unterschiedliche Indizes benötigt, um das Codebuch zu indexieren. Somit können Zwei-Bit-Indexvektoren verwendet werden, um die vier Codewörter in dem Codebuch zu indexieren. Wie in 6 gezeigt ist, werden somit Vier-Bit-Bitvektoren durch eine Vektorquantisierungscodierung zu Zwei-Bit-Indexvektoren 604 transformiert.
  • Wie beim Lauflängencodieren können Vektorquantisierungstechniken unter Verwendung eines verlustfreien, präfixfreien Variable-Länge-Codes Index zu binären Zeichenfolgen codieren. Dadurch können die Codewörter, auf die am häufigsten Bezug genommen wird, mit größerer Exaktheit indexiert werden, während Codewörter, auf die weniger häufig Bezug genommen wird, mit längeren Indizes indexiert werden können. Wenn eine nicht-konstante Bezugnahmehäufigkeitsverteilung vorliegt, kann unter Verwendung von Indizes einer variablen Länge eine größere Codierungseffizienz erhalten werden.
  • Wie oben erwähnt wurde, muß ein asymmetrisches Vektorquantisierungsverfahren für ein Komprimieren von Defekte-Speicherplätze-Bittabellen ausgelegt sein. 7 zeigt eine Tabelle, die die verschiedenen Codewörter veranschaulicht, die verwendet werden könnten, um jeden der 16 unterschiedlichen möglichen Vier-Bit-Eingangsvektoren darzustellen. Die 16 unterschiedlichen möglichen Vier-Bit-Eingangsvektoren sind als Markierungen 702 von 16 Spalten, z.B. Spalte 704, in der Tabelle 700 der 7 gezeigt. Die Vier-Bit-Werte in jeder Spalte stellen die möglichen unterschiedlichen Codewörter dar, die dem jeweiligen Vier-Bit-Eingangsvektor, der die Spalte kennzeichnet, entsprechen können. Beispielsweise kann der Eingangsvektor „0100" 706 durch jegliche der Codewörter „0100", „0101", „0110", „0111", „1100", „1101", „1110", und „1111" dargestellt werden. Kein anderes Codewort ist möglich, da ein Codewort für den Vier-Bit-Bitvektor „0100" in keiner der Bitpositionen, in denen der Eingangsvektor einen Bitwert „1" aufweist, einen Bitwert „ 0" enthalten kann. Mit anderen Worten wird eine Angabe eines defekten Speicherplatzes eventuell nicht zu einer Angabe eines nicht-defekten Speicherplatzes verzerrt. Man beachte, daß das einzige für den Eingangsvektor „1111" 708 mögliche Codewort das Codewort „1111" ist, und man beachte ferner, daß für den Eingangsvektor „0000" jegliches Codewort verwendet werden kann. Da das einzige für den Eingangsvektor „1111" mögliche Codewort das Codewort „1111" ist, muß sich das Codewort „1111" in jedem möglichen Codebuch befinden, um eine unerwünschte Verzerrung zu verhindern.
  • 8 stellt ein mögliches Vektorquantisierungsschema für Vier-Bit-Eingangsvektoren und Zwei-Bit-Indexvektoren, die ein Codebuch, das vier Codewörter enthält, indexieren, dar. Das große Rechteck 802 in 8 zeigt alle möglichen unterschiedlichen Eingangsvektoren. Die möglichen Eingangsvektoren sind bei 8 in vier Gruppen 804807 partitioniert bzw. unterteilt. Die erste Gruppe bzw. Partition 804 umfaßt lediglich den Eingangsbitvektor „0000". Die zweite Partition 805 umfaßt die Eingangsbitvektoren „0001", „0010" und „0011". Die dritte Partition 806 umfaßt die Bitvektoren „0100", „1000" und „1100". Die vierte Partition 802 umfaßt die verbleibenden möglichen Eingangsvektoren. Der eingekreiste Vektor in jeder Partition, z.B. der eingekreiste Vektor 810, ist das Codewort für die Partition. Es liegen vier Codewörter 810813 für die vier Partitionen vor. Die vier Codewörter werden in der Größenordnung der Codewörter, wenn sie als 4-Bit-Ganzzahlen betrachtet werden, indexiert. Somit komprimiert eine Vektorquantisierungskomprimierungstechnik, die das Schema der 8 verwendet, den Eingangsvektor „0000" der Partition 804 zu dem Indexvektor „00", der den Index für das Codewort 811 für die Partition darstellt. Desgleichen würde der Eingangsvektor „1010" 814 zu dem Indexvektor „11" komprimiert, der das Codewort für die Partition „1111" 810 indexiert.
  • 9 veranschaulicht eine Komprimierung einer beispielhaften Bittabelle anhand eines Vektorquantisierungskomprimierungsschemas unter Verwendung der in 8 gezeigten Partitionierung. Die Eingangsbittabelle 902 ist in Vier-Bit-Vektoren, beispielsweise den Vier-Bit-Vektor 904, partitioniert. Jeder Eingangsvektor wird anschließend in einen Zwei-Bit-Indexvektor, z.B. den Zwei-Bit-Indexvektor 906, transformiert, indem der Zwei-Bit-Index verwendet wird, der dem Codewort in der Partition entspricht, der der Eingangsvektor gemäß dem Schema der 8 zugewiesen ist. Allgemein wird der einem Eingangsvektor entsprechende Index unter Verwendung einer Entfernungs- oder Verzerrungsmetrik berechnet, obwohl alternativ Indizes für jeden Eingangsvektor gespeichert werden können. In 9 ist ferner eine entkomprimierte Bittabelle 908 gezeigt, die von der komprimierten Bittabelle 906 entkomprimiert wurde. Eine Entkomprimierung wird durchgeführt, indem jeder Indexvektor durch das Codewort, das er indexiert, ersetzt wird. In bestimmten Fällen erzeugt eine Entkomprimierung genau denselben Bitvektor, wie er ursprünglich in der unkomprimierten Bittabelle vorlag. Beispielsweise entkomprimiert der Bitvektor „0000" 904 zu dem identischen Vier-Bit-Vektor „0000" 910 in der entkomprimierten Bittabelle. Andere Vektoren entkomprimieren jedoch nicht gerade. Beispielsweise entkomprimiert der zweite Bitvektor 912 in der unkomprimierten Bittabelle 902 zu einem unterschiedlichen Bitvektor 914. Es stellt sich heraus, daß sich die Bits 916-920 durch eine Entkomprimierung von dem Bitwert „0" zu dem Bitwert „1" verändert haben und somit eine Verzerrung darstellen.
  • Der bei dem beschriebenen Ausführungsbeispiel der vorliegenden Erfindung verwendete Vektorquantisierungsansatz ist so entworfen, daß er bezüglich einer Verzerrung asymmetrisch ist, so daß sich der Wert „0" gelegentlich zu „1" verändern kann, so daß sich jedoch der Wert „1" infolge einer Komprimierungs-/Entkomprimierungsverzerrung nicht zu „0" ändern kann. Folglich können nicht-defekte Speicherplätze fälschlicherweise als defekte Speicherplätze charakterisiert werden, defekte Speicherplätze werden jedoch nicht fälschlicherweise als nicht-defekte Speicherplätze charakterisiert. Ein Asymmetrische-Verzerrung-Maß wird für eine Vektorquantisierung von Defekte-Speicherplätze-Tabellen verwendet, wobei die Verzerrung eines binären Werts x und die entkomprimierte Form des binären Werts z durch folgendes gegeben sind:
    Figure 00150001
  • Die Effizienz und Effektivität der Vektorquantisierung zum Komprimieren und Entkomprimieren einer Defekte-Speicherplätze-Tabelle, die oben unter Bezugnahme auf 4-9 beschrieben wurde, hängt von einer ordnungsgemäßen Erstellung des Codebuchs von Codewörtern ab. Ein Satz von Trainingsvektoren, die auch als Eingangsvektoren bezeichnet werden, wird üblicherweise bei der Codebucherstellung verwendet, so daß die Auftretenswahrscheinlichkeiten verschiedener Vektoren beim Erstellen eines effizienten Codierens von Vektoren, deren Auftreten wahrscheinlich ist, berücksichtigt werden. Die Codewörter müssen natürlich den Vek torraum von Trainingsvektoren auf eine Weise partitionieren, die eine Verzerrung minimiert. Je größer die Anzahl von Codewörtern, desto größer die Anzahl von Indizes, die notwendig sind, um das Codebuch zu indexieren. Deshalb hängt die Komprimierungsrate von der Codebuchgröße ab; wenn jedoch eine optimale Partitionierung für einen gegebenen Satz von Eingangsdaten gegeben ist, erhöht sich die Verzerrungsrate allgemein mit der Verringerung der Codebuchgröße.
  • Es gibt eine Anzahl unterschiedlicher Lösungsansätze bezüglich eines Erstellens eines Codebuchs für eine Vektorquantisierungskomprimierung/-entkomprimierung. Eine beliebte Technik wird als „LBG-Algorithmus" oder einfach „LBG" bezeichnet, wobei auf die Autoren des Algorithmus, Linde, Buzo und Gray, Bezug genommen wird. 10 ist ein Ablaufsteuerungsdiagramm der LBG-Technik für eine Erstellung eines Codebuchs. Bei Schritt 1002 werden eine Codebuchgröße, N, eine Codewortvektorabmessung, n und ein Schwellengrenzparameter s ausgewählt. Die Codebuchgröße N ist die Anzahl von Codewörtern, und der Schwellengrenzparameter s ist eine Schwelle für eine relative Änderung der Verzerrung zwischen Codebüchern, die durch aufeinanderfolgende Iterationen des LBG erzeugt werden, unter der der Algorithmus mit dem derzeit erstellten Codebuch endet. Von dem aktuellen Codebuch nimmt man bei seiner Beendigung an, daß es einem lokalen optimalen Codebuch zumindest nahekommt. Verschiedene Kriterien können verwendet werden, um die Codebuchgröße N und die Codewortvektorabmessung n auszuwählen. Wie oben erläutert wurde, ist das Komprimierungsverhältnis, das durch ein Verwenden des Codebuchs bei der Vektorquantisierung erreichbar ist, direkt auf die Codebuchgröße N bezogen. Die Effizienz einer Auswahl eines nahezu optimalen Codebuchs wird ermöglicht, indem die Codewortvektorabmessung n groß gewählt wird, was eine größere Vielfalt bei der Vektorraumpartitionierung liefert. Wenn die Codewortvektorabmessung n jedoch zu groß gewählt wird, kann es praktisch unmöglich werden, iterativ zu einem lokal optimalen Code buch zu gelangen, geschweige denn, das optimale Codebuch zu finden.
  • Bei Schritt 1004 wird die Iterationsvariable k auf 1 eingestellt. Die Iterationsvariable k verfolgt die Anzahl von Malen, die eine Innenschleife des LBG-Algorithmus ausgeführt wird. Bei Schritt 1006 wählt der LBG-Algorithmus dann einen anfänglichen Satz von N n-dimensionalen Vektoren J als anfängliches Codebuch. Die Auswahl des anfänglichen Codebuchs kann auf diverse verschiedene Weisen erfolgen. Ein Lösungsansatz besteht darin, einen zufällig erzeugten Satz von Vektoren zu verwenden. Bei einem Zufallserzeugungsansatz wird der Index einer Partition als Keim für einen Pseudozufallszahlengenerator verwendet, der entsprechend dimensionierte und entsprechend verteilte Pseudozufallsvektoren erzeugt. Ein Vorteil dieses Lösungsansatzes besteht darin, daß die Codewörter nicht gespeichert werden müssen. Statt dessen können die aus einer komprimierten Tabelle extrahierten Indizes als Keime in denselben Pseudozufallszahlengenerator eingegeben werden, um die entsprechenden Codewörter wiederzugewinnen. Ein weiterer Lösungsansatz besteht darin, jeden Eingangsvektor in seine eigene Partition zu plazieren und anschließend Partitionen, die nahe beieinander liegen, paarweise zu verschmelzen, bis eine annehmbar kleine Anzahl von Partitionen erzeugt wird, wobei der Schwerpunktvektor jeder Partition als Codewort verwendet wird. Ein Maß für Nähe kann auf einer Summe von euklidischen Abständen oder auf alternativen Abstandsmaßen beruhen. Ein dritter Lösungsansatz besteht darin, einen Schwerpunkt für den Eingangsvektorraum zu berechnen, den Schwerpunkt für ein erstes Codewort zu verwenden und diesen Schwerpunkt anschließend systematisch zu stören, um die verbleibenden Codewörter für das anfängliche Codebuch zu erzeugen.
  • Die Schritte 10081013 bilden zusammen eine iterative Schleife, bei der die anfänglich gewählten Codewörter modifiziert werden, bis ein akzeptables Verzerrungsniveau er halten wird. Wenn der Unterschied zwischen der berechneten Verzerrung für das bei der vorherigen Iteration erstellte Codebuch und der für das aktuelle Codebuch berechneten Verzerrung unter der Schwelle s liegt, so endet der LBG-Algorithmus, und das aktuelle Codebuch Q wird bei Schritt 1014 zurückgegeben. Das Codebuch besteht aus N Partitionen von Eingangsvektoren, Qi, wobei i zwischen 0 und N – 1 liegt, einschließlich eines Codeworts J(i)in jeder Partition Qi. Bei Schritt 1008 werden Eingangsvektoren, die näher an jedem Codewort J(i) als an jeglichem anderen Codewort liegen, als Angehörige der Partition i ausgewählt, die das Codewort J(i) umfaßt, gemäß Qi = {Xn|d(Xn, Jn ( i)) < d(Xn, Jn (j)) ∀ j ≠ i}wobei beispielsweise i und j∊{0, 1, ... N – 1} und wobei beispielsweise
    Figure 00180001
  • Mit anderen Worten werden bei Schritt 1008 Eingangsvektoren in N Partitionen partitioniert. Man beachte, daß die Verzerrung d alternativ so definiert sein kann, daß sie ein weiteres, eine Verzerrung widerspiegelndes Maß und nicht ein euklidischer Abstand ist. Bei Schritt 1009 wird für das aktuelle Codebuch Q, das bei der kten Iteration des Schrittes 1008 erstellt wird, eine Gesamtverzerrung D(k) berechnet. Die Gesamtverzerrung wird als folgendes berechnet:
    Figure 00180002
    wobei q (i) / j ∊ Qi,0 < j ≤ Größe von (Qi)
  • Bei Schritt 1010 bestimmt der LBG-Algorithmus, ob k größer als 1 ist oder nicht. Falls dies der Fall ist, so wurde zu vor ein D(k– 1) berechnet, und die relative Verzerrungsänderung
    Figure 00190001
    kann bei Schritt 1011 wie folgt berechnet werden:
    Figure 00190002
  • Die relative Verzerrungsänderung
    Figure 00190003
    wird bei Schritt 1011 mit der Schwelle s verglichen, um zu bestimmen, ob weiterhin nach einem besseren Codebuch gesucht werden soll. Falls die relative Verzerrungsänderung geringer ist als die Schwelle s, so werden die aktuelle Partition und der aktuelle Satz von Codewörtern, Q bzw. J, zurückgegeben. Wenn dagegen k 1 ist oder die relative Verzerrungsänderung größer ist als s, so wird der aktuelle Satz von Codewörtern J bei Schritt 1013 modifiziert, und es wird eine weitere Iteration der inneren Schleife unternommen. Wiederum kann eine Anzahl von Verfahren zum Modifizieren der Codewörter bei Schritt 1013 verwendet werden. Ein Lösungsansatz besteht darin, einen Schwerpunktvektor für jede Partition in Q zu berechnen und die berechneten Schwerpunktvektoren als neuen Satz von Codewörtern für die nächste Iteration zu verwenden.
  • Der LBG-Algorithmus muß auf eine Verwendung bei einem Vektorquantisierungsschema zum Komprimieren einer Defekte-Speicherplätze-Tabelle zugeschnitten sein. 11 ist ein Ablaufsteuerungsdiagramm eines LBG-Algorithmus eines Asymmetrische-Verzerrung-Modells, der bei einem Ausführungsbeispiel der vorliegenden Erfindung verwendet werden kann, um ein Codebuch für eine Vektorquantisierungs-Defekte-Speicherplätze-Tabelle-Komprimierung und -Entkomprimierung zu erstellen. Viele Schritte bei dem LBG-Algorithmus des Asymmetrische-Verzerrung-Modells sind ähnlich denjenigen in dem LBG-Algorithmus, der unter Bezugnahme auf 10 beschrieben wurde, und werden nicht erneut erläutert. Statt dessen werden lediglich die Unterschiede erläutert. Der erste Unterschied findet sich bei Schritt 1106. Ein Vergleich des Schritts 1106 und des Schritts 1006 in 10 zeigt, daß der anfängliche Satz von Vektoren J bei dem LBG-Algorithmus des Asymmetrische-Verzerrung-Modells einen Vektor umfassen muß, der den Wert „1" in jeder Position in dem Vektor aufweist. Dieser Vektor muß vorliegen, um zu gewährleisten, daß auf eine Entkomprimierung hin kein „1"-Wert zu einem „0"-Wert verzerrt wird und dadurch einen identifizierten defekten Speicherplatz dahingehend ändert, daß in der Defekte-Speicherplätze-Tabelle angegeben wird, daß der Speicherplatz nicht defekt sei. Wie oben unter Bezugnahme auf 8 erläutert wurde, ist das einzige geeignete Codewort für einen Eingangsvektor, das aus „1"-Werten in allen Positionen besteht, das Codewort, das aus „1"-Werten in allen Positionen besteht, so daß das Codewort in dem Codebuch vorhanden sein muß. Ein zweiter Unterschied findet sich bei Schritten 1108 und 1109, wenn sie mit den entsprechenden Schritten 1008 und 1009 in 10 verglichen werden. Wie aus Schritt 1108 hervorgeht, verwendet der LBG-Algorithmus des Asymmetrische-Verzerrung-Modells ein asymmetrisches Abstandsmaß, und nicht ein euklidisches Abstandsmaß, das ein symmetrisches Verzerrungsmaß reflektiert:
    Figure 00200001
    wobei d(x, x ^) = {0, wenn x = x ^, 1, wenn x < x ^, ∞ wenn x > x ^
  • Ein dritter Unterschied findet sich bei Schritt 1113 im Vergleich zu Schritt 1013 in 10. Wenn das Codebuch, das Vektoren J aufweist, modifiziert wird, muß der Vektor mit dem Wert „1" in allen Positionen in dem modifizierten Codebuch enthalten sein. Falls die Modifikation ferner ein Berechnen von Schwerpunkten oder andere abstandsbezogene Techniken beinhaltet, muß die oben beschriebene Asymmetrischer-Abstand-Metrik statt einer Euklidischer-Abstand-Metrik verwendet werden. Bei dem LBG-Algorithmus des Asymmetrische-Verzerrung-Modells werden Schwerpunkte als das logische ODER der Vektoren in der Partition berechnet.
  • Eine optimale Größe für ein Codebuch kann durch eine Minimierung eines Maßes von gegenseitigen Informationen bestimmt werden, die aus der Wahrscheinlichkeitsverteilung pX von Eingangsvektoren x und der bedingten Wahrscheinlichkeitsverteilung
    Figure 00210001
    von entkomprimierten Vektoren k berechnet werden. Wie oben erläutert wurde, wird ein Asymmetrische-Verzerrung-Maß, D(x, x ^), für eine Vektorquantisierung von Defekte-Speicherplätze-Tabellen verwendet.
  • Bei einem verlustbehafteten Codierer/Decodierer möchte man die gegenseitigen Informationen I(x ^; x) über die bedingte Wahrscheinlichkeitsverteilung
    Figure 00210002
    minimieren, wobei I(x ^; x) aus der Wahrscheinlichkeitsverteilung px der Eingangsvektoren x und aus der bedingten Wahrscheinlichkeitsverteilung
    Figure 00210003
    der entkomprimierten Vektoren x ^ berechnet wird, und durch folgendes gegeben ist:
    Figure 00210004
    vorbehaltlich der Einschränkung, daß die durch den Codierer erzeugte durchschnittliche Verzerrung geringer als oder gleich einer maximal zulässigen Verzerrung D sein muß:
    Figure 00210005
  • Durch Minimieren der gegenseitigen Informationen I(x ^; x) vorbehaltlich der Einschränkung bezüglich der maximal zulässigen Verzerrung wird eine optimale Ratenverzerrungsrate R(δ) erhalten, wobei δ gleich dem Bruchteil von nicht-defekten Speicherplätzen ist, die aufgrund einer Komprimierungs-/Entkomprimierungsverzerrung geopfert werden können, und wobei δ die folgende Beziehung zu D aufweist: D = nδ(1 – p)wobei n die Vektorlänge und p die erwartete Fehlerhafte-Sektoren-Rate ist. Für den Fall von unabhängig und iden tisch verteilten Defekten wird die optimale Rate von Verzerrungen durch folgendes wiedergegeben:
    Figure 00220001
    wobei p die Defekte-Sektoren-Rate ist, und
    H(p) die Entropie der Defekte-Sektoren-Rate/-Wahrscheinlichkeit ist,
    wobei H(p)= –(p)log2p – (1 – p)log2(1 – p)
  • Die optimale Größe des Codebuchs ist: 2nR(δ) wobei n die Abmessung eines Codevektors ist.
  • Die optimale Größe für die Abmessung der Eingangs- und Codewortvektoren n kann ebenfalls optimiert werden. Wenn die Vektorabmessung zu gering ist, kann die Codebucherstellung zu rasch einem nicht-optimalen Codebuch nähern, und die effektive erhältliche Komprimierungsrate kann zu gering sein. Wenn die Vektorabmessung dagegen zu groß ist, wird die Anzahl von Eingangsvektoren, die bei jeder Iteration des LBG-Algorithmus des Asymmetrische-Verzerrung-Modells berücksichtigt werden müssen, untragbar groß, und der Codierungsprozeß kann zu komplex werden. Eine optimale Größe für die Abmessung der Eingangs- und Codewortvektoren n kann durch Versuch-Und-Irrtum-Verfahren bestimmt werden.
  • Um ein effektives Komprimierungs-/Entkomprimierungsverfahren für eine Defekte-Speicherplätze-Tabelle auszuwählen, ist es wünschenswert, in der Lage zu sein, einen Gütefaktor für diverse Komprimierungs-/Entkomprimierungsverfahren zu berechnen und das Komprimierungs-/Entkomprimierungsverfahren auszuwählen, das den besten Gütefaktor erzeugt. Der beste Wert für einen Gütefaktor kann der ge ringste Wert, der größte Wert, der am nächsten bei 0 liegende Wert oder irgendein anderer Wert sein, je nach der Form, in der der Gütefaktor ausgedrückt ist. Nachstehend ist ein nützlicher Gütefaktor für Komprimierungs-/Entkomprimierungsverfahren abgeleitet, der einen größeren Wert für ein wünschenswerteres Komprimierungs-/Entkomprimierungsverfahren erzeugt.
  • Eine Betriebs-Ratenverzerrungsfunktion bei vorgeschriebenen Verzerrungen Rkomp(δ) für einen gegebenen Komprimierungsalgorithmus komp wird bei der Ableitung des Gütefaktors verwendet. Diese Funktion bestimmt auf statistische oder deterministische Weise die Bitrate, die durch den Komprimierungsalgorithmus komp, der mit einer Fehlerfreie-Zu-Fehlerhafte-Sektoren-Verzerrungsrate von δ arbeitet, erzielt wird. Die Charakterisierung kann alles von einer asymptotischen Charakterisierung über eine Schlimmster-Fall-Charakterisierung bis hin zu einer maximalen Anzahl von codierten Bits sein. In allen Fällen muß die Charakterisierung die Eigenschaft aufweisen, daß die Komprimierter-Bitstrom-Länge für alle n etwa gleich nRkomp(δ) sein sollte, falls der Komprimierungsalgorithmus verwendet wird, um n Bits (wobei sich n von dem zuvor verwendeten n, das die Anzahl von Bits in einem Vektor darstellt, unterscheidet) mit einer Fehlerfreie-Zu-Fehlerhafte-Sektoren-Fehlcharakterisierungsrate von δ zu komprimieren. Falls die Fraktion von fehlerhaften Sektoren p ist, so entspräche dies n(1 – p)δ fehlcharakterisierten Sektoren, die nicht verwendet werden, während die Anzahl von fehlerfreien Sektoren, die gemäß der Defekttabelle tatsächlich zur Verfügung stehen, n(1 – p)(1 – δ) beträgt.
  • Die für ein Schema einer verlustbehafteten Defekttabellenkomprimierung in Betracht gezogenen Kosten beinhalten die Kosten/Sektor einer Massenspeicherung und die Kosten/Bit eines schnellen Speichers β. Die Kosten der Gesamtanzahl von Sektoren einer Massenspeicherung, der Speicherung, für die die Defekttabelle erstellt und unterhalten wird, mal α plus die Anzahl von Bits, die durch die Tabelle eingenommen werden, mal β. Die Formel für die Gesamtkosten C, wenn n Sektoren einer Massenspeicherung vorausgesetzt werden, beträgt: C = αn + βnRkomp(δ)
  • Ein Komprimierungs-/Entkomprimierungsverfahren muß eine Kosteneinschränkung Cmax erfüllen, die wie folgt definiert ist. Cmax > C
  • Ein Komprimierungs-/Entkomprimierungsverfahren komp kann bezüglich der Verzerrung δ optimiert werden, indem der Speicher, der durch die komprimierte Defekte-Speicherplätze-Tabelle verwendet wird, innerhalb der Kosteneinschränkung Cmax wie folgt maximiert wird:
    Figure 00240001
    unter der Einschränkung: Cmax ≥ αn + βnRkomp(δ)
  • Da für ein feststehendes δ, n maximiert werden sollte, um eine Gleichheit bezüglich der Einschränkung zu erzielen, kann diese Optimierung äquivalent wie folgt ausgedrückt werden:
    Figure 00240002
  • Der Begriff
    Figure 00240003

    umfaßt lediglich Parameter, die für eine bestimmte Rechenumgebung spezifisch sind, und kann somit aus dem obigen Optimierungsausdruck faktorisiert werden, um einen Ausdruck für einen Gütefaktor Fkomp für ein bestimmtes Komprimierungs-/Entkomprimierungsverfahren komp zu ergeben, wie folgt:
    Figure 00250001
    Der Gütefaktor Fkomp ist somit ein wichtiges Hilfsmittel zum Auswählen eines effektiven Komprimierungs-/Entkomprimierungsverfahrens. Ein Verfahren zum Verwenden des Gütefaktors Fkomp, um ein Komprimierungs-/Entkomprimierungsverfahren für Defekte-Speicherplätze-Tabellen zu bewerten, stellt ein Ausführungsbeispiel der vorliegenden Erfindung dar.
  • Ein weiterer Lösungsansatz bezüglich einer Komprimierung/Entkomprimierung von Defekte-Speicherplätze-Tabellen besteht darin, eine Lauflängenquantisierung zu verwenden, eine Technik, die ein weiteres Ausführungsbeispiel der vorliegenden Erfindung darstellt. Bei dieser Technik wird ein Lauflängencodieren verwendet, im Gegensatz zu einem standardmäßigen Lauflängencodieren, wie es oben unter Bezugnah me auf 3A3C erläutert wurde, werden jedoch quantisierte Lauflängen verwendet, um zu ermöglichen, daß in der komprimierten Tabelle Indizes statt Ganzzahlen, die die Längen von Läufen spezifizieren, verwendet werden. 12 und 13 veranschaulichen das Lauflängenquantisierungs-Komprimierungs-/Entkomprimierungsverfahren, das ein Ausführungsbeispiel der vorliegenden Erfindung darstellt. 12 zeigt ein Array L, das Lauflängenquanten li enthält, wobei i bei dem vorliegenden Beispiel zwischen 0 und 31 liegt. Die Lauflängenquanten spezifizieren die Größen von Läufen von „0"-Werten, auf die Läufe von „1"-Werten folgen. Für einen gegebenen Lauf von „0"-Werten einer Länge r in einer unkomprimierten Tabelle wählt eine Quantisierungsfunktion Q(r) ein Lauflängenquantum li aus, derart, daß li das größte Quantum in L ist, das kleiner oder gleich r ist. Dann wird die nächste Sequenz von li + i Werten von der unkomprimierten Tabelle komprimiert, indem die li+1 Werte durch den Index des Quantums li in dem Array L ersetzt werden. Wenn der Index des Quantums li entkomprimiert wird, wird er wiederum durch einen Lauf von li „0"-Werten, auf die ein Lauf von (li+1 – li) „1"-Werten folgt, ersetzt. Eine effizientere Komprimierung kann erhalten werden, indem eine Variable-Länge-Codierung von quantisierten Lauflängen verwendet wird.
  • 13 zeigt die Lauflängenquantisierungskomprimierung einer kurzen, beispielhaften Bitfolge. Bei 13 wird die kurze beispielhafte Bitfolge 1302 zu der komprimierten Bitfolge 1304 komprimiert, die wiederum zu der entkomprimierten Bitfolge 1306 entkomprimiert wird. Bei einem ersten Schritt wird der anfängliche Lauf von 1 „0"-Wert 1308 zu dem 5-Bit-Index 1310 komprimiert, indem auf die Lauflänge „1" eine Quantisierungsfunktion Q angewendet wird, um l1 als das Quantum zu identifizieren, das einem Lauf der Länge 1 entspricht, das einen einzigen „0"-Wert darstellt, auf den ein (l2 – l1), oder 1, „1"-Wert folgt. Selbstverständlich führt diese erste li-basierte Komprimierung in der Tat zu einer Erweiterung und würde bei einem tatsächlichen Sy stem allgemein nicht verwendet. Bei einem nächsten Schritt wird ein Lauf von 10 „0"-Werten, wobei mit dem „0"-Wert 1312 begonnen wird, durch einen L-Array-Index „4" 1314, der l4 entspricht, ersetzt. Dies stellt einen Lauf von 10 „0"-Werten dar, auf den ein Lauf von (l5 – l4), oder 4, „1"-Werten folgt. Schließlich wird ferner ein Lauf von 12 „0"-Werten durch einen L-Array-Index „4" 1318, der l4 entspricht, ersetzt.
  • Eine Entkomprimierung beinhaltet ein Identifizieren jedes L-Array-Indizes i und ein Ersetzen des L-Array-Indizes durch li „0"-Werte, auf die ein Lauf von (li+1 – li) „1"-Werten folgt. Wie in 13 gezeigt ist, kann eine Verzerrung auftreten. Die „1"-Werte 13201324 in der entkomprimierten Bitfolge 1306 waren ursprünglich „0"-Werte in der unkomprimierten Bitfolge 1302. Somit stellt eine Lauflängenquantisierung eine verlustbehaftete Komprimierung mit einer asymmetrischen Verzerrung dar, wie in dem Fall einer Vektorquantisierung.
  • Falls Lauflängen r nicht-defekter Blöcke gemäß der Wahrscheinlichkeitsverteilung p(r) zufällig auftreten, so ist die durchschnittliche oder erwartete Fehlerfreie-Zu-Fehlerhafte-Sektoren-Fehlkennzeichnungsrate, die durch Verwendung einer Partitionierung
    Figure 00270001
    wobei Ci eines von k Intervallen Ci = [li, ..., li+1 – 1] darstellt, erzeugt wird, proportional zu
    Figure 00270002
    wobei p die erwartete Rate von defekten Sektoren ist. Eine optimale Partitionierung läßt sich finden, indem man das Problem darauf reduziert, den kürzesten Pfad auf einem gelenkten Graphen zu finden. Jeder Scheitelpunkt in dem Graphen ist durch eine Ganzzahl gekennzeichnet, die eine mögliche Zellengrenze darstellt. Der Scheitelpunkt i ist durch eine Kante ei,j mit jedem Scheitelpunkt j > i verbunden, wobei die Kante ei,j die Zelle [i,j – 1] darstellt, die mit dem Beitrag der Zelle zu der erwarteten Gesamtverzerrung gekennzeichnet ist. Ein Finden des kürzesten möglichen Pfades in diesem Graphen ist äquivalent zu einem Finden der Partition der minimalen Kosten, und somit der optimalen Quanten für das Quantisierte-Lauflänge-Komprimierungs-/-Entkomprimierungsverfahren. Dieser Entwurfsalgorithmus funktioniert lediglich für ein Codieren einer feststehenden Länge von quantisierten Läufen, kann jedoch auf ein Variable-Länge-Codieren erweitert werden, indem –λp(Ci)log(p(Ci)) in die Kosten jeder Kante, die eine Partition umspannt, integriert wird, wobei p(Ci) die Summe von p(r) für r ist, das zu der Partition Ci durchfällt.
  • 14 und 15 liefern in dem Format eines Ablaufsteuerungsdiagramms eine Übersicht über ein Verfahren zum Bereitstellen eines Speichers, das eines der beschriebenen Ausführungsbeispiele der vorliegenden Erfindung beinhaltet. 14 veranschaulicht ein allgemeines Verfahren zum Bereitstellen eines Speichers, der eine Defekte-Datenspeicherplätze-Tabelle beinhaltet, die gemäß einem der beschriebenen Ausführungsbeispiele der vorliegenden Erfindung komprimiert ist bzw. wird. Bei Schritt 1402 wird eine Defekte-Datenspeicherplätze-Tabelle erstellt. Wie oben erläutert wurde, ist eine Bittabellenimplementierung für eine Defekte-Datenspeicherplätze-Tabelle zweckmäßig, wobei jedes Bit einen Datenspeicherplatz darstellt. Ein Datenspeicherplatz kann z.B. ein Plattenblock oder ein Plattensektor sein oder kann, als weiteres Beispiel, ein oder mehrere Nanodraht-Array-Übergänge in einem nanodrahtbasierten Speicher sein. Bei Schritt 1404 wird die Defekte-Datenspeicherplätze-Tabelle unter Verwendung einer verlustbehafteten Komprimierungstechnik, beispielsweise einer der oben erläuterten verlustbehafteten Techniken, komprimiert. Man beachte, daß verlustbehaftete Komprimierungstechniken bezüglich der vorliegenden Erfindung keine einfachen Änderungen der Granularität der Defekte-Datenspeicherplätze- Tabelle umfassen, beispielsweise ein Verwenden eines einzelnen Bits, um einen Plattensektor statt eines Plattenblocks darzustellen. Bei der Schleife, die die Schritte 14061409 aufweist, werden logische Datenspeicherplatz-Zugriffsanforderungen erhalten und gehandhabt. Ein ausreichender Anteil der Defekte-Datenspeicherplätze-Tabelle wird bei Schritt 1407 entkomprimiert, um einen entsprechenden physischen Datenspeicherplatz zu bestimmen, der dem angeforderten logischen Datenspeicherplatz entspricht, und der physische Datenspeicherplatz wird verwendet, um Daten von dem Datenspeicherplatz wiederzuerlangen oder Daten in denselben zu schreiben.
  • 15 veranschaulicht ein verlustbehaftetes Komprimierungsverfahren, das bei Schritt 1404 der 14 aufgerufen wird. Bei Schritt 1502 wird ein anfängliches Codebuch erstellt, in dem ein Codewort für jede einer Anzahl von Partitionen ausgewählt wird, wie oben erläutert wurde. Bei Schritt 1504 wird der Vektorraum von Vektoren, in die die Defekte-Datenspeicherplätze-Tabelle zerlegt wird, partitioniert, um ein abschließendes Codebuch er erzeugen. Bei der für-Schleife, die die Schritte 15061509 umfaßt, wird die Defekte-Datenspeicherplätze-Tabelle anschließend in Vektoren einer feststehenden Länge zerlegt, und für jeden Vektor einer feststehenden Länge wird der Index der Codebuchpartition, die den Vektor enthält, von dem Codebuch wiedererlangt und zu der komprimierten Tabelle hinzugefügt, wie oben erläutert wurde.
  • Obwohl die vorliegende Erfindung anhand eines bestimmten Ausführungsbeispiels beschrieben wurde, ist nicht beabsichtigt, daß die Erfindung auf dieses Ausführungsbeispiel beschränkt sei. Fachleuten werden Modifikationen einfallen, die in der Wesensart der Erfindung enthalten sind. Wie oben erläutert wurde, kann beispielsweise der Gütefaktor zum Vergleichen der Effizienz verschiedener Defekte-Speicherplätze-Tabellen-Komprimierungs-/Entkomprimierungsverfahren mathematisch umgeformt werden, um eine größere Effizienz anzugeben, indem Werte erzeugt werden, die näher bei 0 liegen oder eine geringere Größe aufweisen, statt größere Werte zu erzeugen. Verschiedene alternative Gütefaktoren können erhalten werden, indem zusätzliche oder andere Beschränkungen aufgenommen werden und indem die Effizienz bezüglich verschiedener Parameter maximiert wird. Während sich Vektorquantisierungs- und Lauflängenquantisierungsverfahren für viele Defekte-Speicherplätze-Verteilungen als sehr effizient und nützlich erwiesen haben, können andere Komprimierungs-/Entkomprimierungsverfahren identifiziert werden, die für andere Defekte-Speicherplätze-Verteilungen nützlicher sind. Variationen bei diesen Verfahren sind möglich und beinhalten Variationen bezüglich Implementierung, Sprache und Implementierungsstil, der Behandlung von Grenzbedingungen, der Codebuchstruktur, Datenstrukturen, des Sinns und der Bedeutung bestimmter Bitwerte sowie viele andere Variationen. Allgemein erfordert jeder Speicherplatzzugriff eine Entkomprimierung einer komprimierten Defekte-Speicherplätze-Tabelle, um die physische Adresse des Speicherplatzes, auf den zugegriffen wird, zu bestimmen. Jedoch kann es möglich sein, die Tabelle in Segmente zu komprimieren und einen Index in diese Segmente bereitzustellen, um eine Entkomprimierung lediglich eines relevanten Abschnitts der Tabelle zu ermöglichen, statt zu erfordern, daß die gesamte Tabelle entkomprimiert wird.

Claims (20)

  1. Verfahren zum Liefern einer geordneten Sequenz von nicht-defekten Speicherplätzen, wobei das Verfahren folgende Schritte aufweist: Erstellen (1402) einer Defekte-Datenspeicherplätze-Tabelle (201, 207, 402); Komprimieren (1404), mittels einer verlustbehafteten Komprimierung, der Defekte-Datenspeicherplätze-Tabelle (402) zu einer komprimierten Defekte-Datenspeicherplätze-Tabelle mittels eines anderen verlustbehafteten Komprimierungsverfahrens (602, 604, 700) als einem Ändern einer Datenspeicherplatzgröße, der Einträge in die Defekte-Datenspeicherplätze-Tabelle entsprechen; und wenn durch eine logische Adresse auf einen Datenspeicherplatz zugegriffen wird, Entkomprimieren (1407) eines ausreichenden Abschnitts der Defekte-Datenspeicherplätze-Tabelle, um einen physischen Platz (1408) des logisch adressierten Datenspeicherplatzes zu bestimmen.
  2. Verfahren gemäß Anspruch 1, bei dem das Entkomprimieren (1407) eines ausreichenden Abschnitts der Defekte-Datenspeicherplätze-Tabelle, um einen physischen Platz des logisch adressierten Datenspeicherplatzes zu bestimmen, ferner folgende Schritte umfaßt: Extrahieren von Indizes (1310, 1314, 1318) aus der komprimierten Defekte-Datenspeicherplätze-Tabelle; und Einfügen, für jeden extrahierten Index, des Codeworts, das dem Index in dem Codebuch zugeordnet ist, in eine entkomprimierte Defekte-Datenspeicherplätze-Tabelle.
  3. Verfahren gemäß Anspruch 1 oder 2, bei dem die Defekte-Datenspeicherplätze-Tabelle (201, 207, 402) eine Bittabelle aufweist, bei der jedes Bit angibt, ob ein entsprechender physischer Datenspeicherplatz defekt ist oder nicht.
  4. Verfahren gemäß Anspruch 3, bei dem das Komprimieren der Defekte-Datenspeicherplätze-Tabelle und das Speichern der komprimierten Defekte-Datenspeicherplätze-Tabelle ferner folgende Schritte umfaßt: Erstellen eines anfänglichen Codebuchs (1502), das einen Satz von Codewörtern aufweist, wobei jedes Codewort einen Bitvektor aufweist, der eine Länge von n Bits aufweist; Partitionieren von Eingangsvektoren (1504) in diskrete Partitionen, wobei jede Partition ein einzelnes Codewort umfaßt und eine Partition ein Codewort umfaßt, das n Bitwerte aufweist, die defekte Speicherplätze angeben, um ein Codebuch zu erzeugen; und Extrahieren aufeinanderfolgender Eingangsvektoren (1507-1508), die Längen von n Bits aufweisen, aus der Defekte-Datenspeicherplätze-Tabelle, und Plazieren, für jeden extrahierten Eingangsvektor, eines Index des Codeworts in einer Codebuchpartition, die den extrahierten Eingangsvektor umfaßt, in die komprimierte Defekte-Datenspeicherplätze-Tabelle.
  5. Verfahren gemäß Anspruch 4, bei dem das Plazieren, für jeden extrahierten Eingangsvektor, eines Index des Codeworts in einer Codebuchpartition, die den extrahierten Eingangsvektor umfaßt, in die komprimierte Defekte-Datenspeicherplätze-Tabelle ferner ein Bestimmen der Codebuchpartition, die den extrahierten Eingangsvektor umfaßt, durch eines der folgenden umfaßt: einen Tabellennachschlag; Berechnen der Codebuchpartition unter Verwendung einer Abstandsmetrik; und Berechnen der Codebuchpartition unter Verwendung einer Verzerrungsmetrik.
  6. Verfahren gemäß Anspruch 5, bei dem das Erstellen eines Codebuchs, das einen Satz von Codewörtern aufweist, ferner ein Verwenden eines LBG-Algorithmus eines Asymmetrische-Verzerrung-Modells, durch den ein anfänglich ausgewählter Satz von Codewörtern iterativ modifiziert wird (1106, 1008, 1109, 1113), umfaßt.
  7. Verfahren gemäß Anspruch 6, bei dem die Gesamtverzerrung als eine Summe von Verzerrungen in jeder Partition jedes Eingangsvektors bezüglich des Codeworts für die Partition berechnet wird.
  8. Verfahren gemäß Anspruch 7, bei dem die Verzerrung D zwischen einem Eingangsvektor x ^ und einem Codewort x als eine asymmetrische Verzerrung
    Figure 00330001
    bestimmt wird (1008), wobei d(x, x ^) = {0, wenn x = x ^, 1, wenn x < x ^; ∞ wenn x > x ^}.
  9. Verfahren gemäß einem der Ansprüche 4 bis 8, bei dem das Erstellen eines Codebuchs, das einen Satz von Codewörtern aufweist, ferner ein zufälliges Erzeugen der Codewörter gemäß einer Wahrscheinlichkeitsverteilung umfaßt.
  10. Verfahren gemäß Anspruch 9, das ferner ein Verwenden jedes Index jeder Partition als Keim für einen Pseudozufallsgenerator, um Codewörter zu erzeugen, umfaßt.
  11. Verfahren gemäß Anspruch 10, bei dem das Entkomprimieren (1407) eines ausreichenden Abschnitts der Defekte- Datenspeicherplätze-Tabelle, um einen physischen Platz des logisch adressierten Datenspeicherplatzes zu bestimmen, ferner folgende Schritte umfaßt: Extrahieren von Indizes aus der komprimierten Defekte-Datenspeicherplätze-Tabelle; Liefern jedes extrahierten Index an den Pseudozufallsgenerator, um entsprechende entkomprimierte Codewörter zu erzeugen; und Einfügen der entkomprimierten Codewörter in eine entkomprimierte Defekte-Datenspeicherplätze-Tabelle.
  12. Verfahren gemäß einem der Ansprüche 2 bis 11, bei dem das Komprimieren (1404) der Defekte-Datenspeicherplätze-Tabelle ferner folgende Schritte umfaßt: Liefern einer Quantisierungsfunktion Q (1008), die für einen Lauf von identischen Bitwerten einer Länge r ein Quantum li, das kleiner oder gleich r ist, von einem geordneten Satz L von Quanten zurückgibt, die mit einer ansteigenden Position i innerhalb des geordneten Satzes L streng an Größe zunehmen; anschließendes Extrahieren eines Laufs von Bits mit identischen Werten aus der Defekte-Datenspeicherplätze-Tabelle, beginnend bei einer Position j in der Defekte-Datenspeicherplätze-Tabelle, wobei der anfängliche Wert von j gleich 0 ist, und, für jeden extrahierten Lauf von Bits mit identischen Werten: Anwenden der Quantisierungsfunktion Q auf die Länge des extrahierten Laufes, um ein Quantum li, das der Länge des Laufs entspricht, auszuwählen, Plazieren des Index i in die komprimierte Defekte-Datenspeicherplätze-Tabelle; und Vorrücken von j um li+1 Positionen.
  13. Verfahren gemäß Anspruch 12, bei dem das Entkomprimieren (1407) eines ausreichenden Abschnitts der Defekte-Datenspeicherplätze-Tabelle, um einen physischen Platz des logisch adressierten Datenspeicherplatzes zu bestimmen, ferner folgende Schritte umfaßt: Extrahieren von Indizes aus der komprimierten Defekte-Datenspeicherplätze-Tabelle; für jeden extrahierten Index i: Plazieren eines Quantums von li Bits mit identischen Werten, auf die ein Quantenunterschied von (li+i – li) Bits mit entgegengesetzten Werten folgt, in eine entkomprimierte Defekte-Datenspeicherplätze-Tabelle.
  14. Verfahren zum Vergleichen von Verfahren zum Komprimieren einer Defekte-Speicherplätze-Tabelle zu einer komprimierten Defekte-Speicherplätze-Tabelle, wobei das Verfahren folgende Schritte aufweist: Liefern eines Kosten/Bit-Parameters für die Bittabelle; Liefern eines Kosten/Bit-Parameters β für die komprimierte Bittabelle; Bestimmen, für jedes Verfahren zum Komprimieren einer Bittabelle, komp, einer Betriebs-Ratenverzerrungsfunktion Rkomp(δ) Berechnen eines Gütefaktors F für jedes Verfahren zum Komprimieren einer Bittabelle; und Auswählen eines Verfahrens zum Komprimieren einer Bittabelle mit einem wünschenswertesten Gütefaktor F.
  15. Verfahren gemäß Anspruch 14, bei dem der Gütefaktor als
    Figure 00360001
    berechnet wird, wobei p der Bruchteil von Defekte-Speicherplätze-Angaben ist.
  16. Speicher, der folgende Merkmale aufweist: eine Speichervorrichtung mit physischen Speicherplätzen (101109); und eine komprimierte (1404) Defekte-Speicherplätze-Tabelle, die auf einen Zugriff eines logischen Speicherplatzes in dem Speicher hin entkomprimiert wird (1407), um den logischen Speicherplatz auf einen physischen Speicherplatz abzubilden.
  17. Speicher gemäß Anspruch 16, bei dem die Defekte-Speicherplätze-Tabelle eine Bittabelle (201, 207, 402) umfaßt, bei der jedes Bit angibt, ob ein entsprechender physischer Speicherplatz defekt ist oder nicht.
  18. Speicher gemäß Anspruch 17, bei dem die komprimierte Defekte-Speicherplätze-Tabelle Indizes (1310, 1314, 1318) von Codewörtern in einem Codebuch aufweist, wobei ein einzelnes Codewort in jeder einer Anzahl von Partitionen ein Codewort und zusätzliche Eingangsvektoren umfaßt.
  19. Speicher gemäß Anspruch 18, bei dem jedes Codewort und jeder Eingangsvektor ein Bitvektor mit einer Länge von n Bits ist, wobei Eingangsvektoren nacheinander aus einer anfänglichen, unkomprimierten Defekte-Speicherplätze-Tabelle (402) extrahiert werden.
  20. Speicher gemäß einem der Ansprüche 17 bis 19, bei dem die komprimierte Defekte-Speicherplätze-Tabelle Indizes von Quanten innerhalb eines geordneten Satzes L von Quanten aufweist, die mit einer ansteigenden Position i innerhalb des geordneten Satzes L streng an Größe zunehmen.
DE102004003353A 2003-04-30 2004-01-22 Verfahren und System zum Minimieren der Länge einer Defektliste für eine Speichervorrichtung Withdrawn DE102004003353A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/427,526 US7013378B2 (en) 2003-04-30 2003-04-30 Method and system for minimizing the length of a defect list for a storage device
US10/427526 2003-04-30

Publications (1)

Publication Number Publication Date
DE102004003353A1 true DE102004003353A1 (de) 2004-12-09

Family

ID=33310173

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102004003353A Withdrawn DE102004003353A1 (de) 2003-04-30 2004-01-22 Verfahren und System zum Minimieren der Länge einer Defektliste für eine Speichervorrichtung

Country Status (3)

Country Link
US (1) US7013378B2 (de)
JP (1) JP3978195B2 (de)
DE (1) DE102004003353A1 (de)

Families Citing this family (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7454431B2 (en) * 2003-07-17 2008-11-18 At&T Corp. Method and apparatus for window matching in delta compressors
FR2867928B1 (fr) * 2004-03-16 2006-06-09 Medialive Procede et systeme hautement securises pour la distribution de flux audiovisuels
US7917176B2 (en) * 2006-02-14 2011-03-29 Nec Laboratories America, Inc. Structured codebook and successive beamforming for multiple-antenna systems
US8516218B2 (en) * 2006-10-30 2013-08-20 Hewlett-Packard Development Company, L.P. Pattern-based mapping for storage space management
US20100169322A1 (en) * 2008-12-26 2010-07-01 Sun Microsystems, Inc. Efficient access of bitmap array with huge usage variance along linear fashion, using pointers
US8407171B2 (en) * 2010-02-01 2013-03-26 Seiko Epson Corporation Method for constraint optimization under box constraints
CN103339543B (zh) 2011-01-20 2016-12-21 康宁股份有限公司 具有梯度折射率透镜的插座套管组件和使用其的光纤连接器
US8732538B2 (en) * 2011-03-10 2014-05-20 Icform, Inc. Programmable data storage management
US9104327B2 (en) * 2011-05-17 2015-08-11 Sandisk Technologies Inc. Fast translation indicator to reduce secondary address table checks in a memory device
US9792117B2 (en) 2011-12-08 2017-10-17 Oracle International Corporation Loading values from a value vector into subregisters of a single instruction multiple data register
US9697174B2 (en) * 2011-12-08 2017-07-04 Oracle International Corporation Efficient hardware instructions for processing bit vectors for single instruction multiple data processors
KR101279497B1 (ko) * 2012-02-16 2013-06-27 서울대학교산학협력단 Mimo 시스템 및 이를 위한 계층적 코드북 생성 방법
US8972649B2 (en) * 2012-10-05 2015-03-03 Microsoft Technology Licensing, Llc Writing memory blocks using codewords
US9606921B2 (en) 2013-09-21 2017-03-28 Oracle International Corporation Granular creation and refresh of columnar data
US9720769B2 (en) 2014-12-03 2017-08-01 Sandisk Technologies Llc Storage parameters for a data storage device
US10073885B2 (en) 2015-05-29 2018-09-11 Oracle International Corporation Optimizer statistics and cost model for in-memory tables
US10061832B2 (en) 2016-11-28 2018-08-28 Oracle International Corporation Database tuple-encoding-aware data partitioning in a direct memory access engine
US10402425B2 (en) 2016-03-18 2019-09-03 Oracle International Corporation Tuple encoding aware direct memory access engine for scratchpad enabled multi-core processors
US10061714B2 (en) 2016-03-18 2018-08-28 Oracle International Corporation Tuple encoding aware direct memory access engine for scratchpad enabled multicore processors
US10055358B2 (en) 2016-03-18 2018-08-21 Oracle International Corporation Run length encoding aware direct memory access filtering engine for scratchpad enabled multicore processors
US10599488B2 (en) 2016-06-29 2020-03-24 Oracle International Corporation Multi-purpose events for notification and sequence control in multi-core processor systems
US10380058B2 (en) 2016-09-06 2019-08-13 Oracle International Corporation Processor core to coprocessor interface with FIFO semantics
US10783102B2 (en) 2016-10-11 2020-09-22 Oracle International Corporation Dynamically configurable high performance database-aware hash engine
US10176114B2 (en) 2016-11-28 2019-01-08 Oracle International Corporation Row identification number generation in database direct memory access engine
US10459859B2 (en) 2016-11-28 2019-10-29 Oracle International Corporation Multicast copy ring for database direct memory access filtering engine
US10725947B2 (en) 2016-11-29 2020-07-28 Oracle International Corporation Bit vector gather row count calculation and handling in direct memory access engine
US11442910B2 (en) * 2017-09-28 2022-09-13 Intel Corporation Multiple order delta compression
CN117639792A (zh) * 2023-11-27 2024-03-01 浙江大学 一种基于码表聚类的深度学习模型压缩方法

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2625609B2 (ja) * 1991-07-10 1997-07-02 インターナショナル・ビジネス・マシーンズ・コーポレイション ディスク記憶装置
US5394534A (en) * 1992-09-11 1995-02-28 International Business Machines Corporation Data compression/decompression and storage of compressed and uncompressed data on a same removable data storage medium
GB9623215D0 (en) * 1996-11-07 1997-01-08 Process Insight Limited Solid state memory test system with defect compression
US5960465A (en) * 1997-02-27 1999-09-28 Novell, Inc. Apparatus and method for directly accessing compressed data utilizing a compressed memory address translation unit and compression descriptor table
US5913928A (en) * 1997-05-09 1999-06-22 Micron Technology, Inc. Data compression test mode independent of redundancy
US5966263A (en) * 1997-08-01 1999-10-12 International Business Machines Corporation Method and apparatus to increase head/AE select robustness for a system using multiple head servo write
US6138254A (en) * 1998-01-22 2000-10-24 Micron Technology, Inc. Method and apparatus for redundant location addressing using data compression
US6470461B1 (en) * 1999-06-07 2002-10-22 Qlogic Corporation Disk drive controller circuit and method for skipping defective and/or undesired sectors
US6381669B1 (en) * 1999-12-27 2002-04-30 Gregory V. Chudnovsky Multi-bank, fault-tolerant, high-performance memory addressing system and method

Also Published As

Publication number Publication date
JP2004334846A (ja) 2004-11-25
JP3978195B2 (ja) 2007-09-19
US7013378B2 (en) 2006-03-14
US20040221192A1 (en) 2004-11-04

Similar Documents

Publication Publication Date Title
DE102004003353A1 (de) Verfahren und System zum Minimieren der Länge einer Defektliste für eine Speichervorrichtung
DE69932962T2 (de) Kodierungsverfahren und Speicheranordnung
DE112011100371B4 (de) Verfahren, Vorrichtung und Computerprogrammprodukt zum Decodieren eines Codeworts
DE112011101116B4 (de) Two-Level BCH-Codes für Solid-State-Speichereinheiten
US5870036A (en) Adaptive multiple dictionary data compression
DE10133595B4 (de) Pufferschaltung, Speicherzugriffsverfahren und Reed-Solomon-Decoder
DE102013020712B4 (de) Techniken zum Speichern von Bits in Speicherzellen mit Hängenbleiben-auf-0-oder-1-Fehlern
DE60038333T2 (de) Vier-zu-sechs Kodierungstabelle, Modulation die diese anwendet, aber ohne Vereinigungsbit ,sowie ihre Anwendung für optische Plattenaufzeichnungs- oder Wiedergabesysteme
DE102017117066A1 (de) Nichtbinäre codierung für einen nichtflüchtigen speicher
DE102019125059A1 (de) Abbildung für multi-state-programmierung von speichervorrichtungen
DE112018000485T5 (de) Komprimierer/Dekomprimierer für nicht binäre Kontextmischung
DE102017130591A1 (de) Verfahren und Vorrichtung zur Fehlerkorrekturkodierung auf Basis einer Datenkomprimierung
DE112019000167T5 (de) Anpassbare Lesewiederholungsreihenfolge basierend auf einem Decodierungserfolgstrend
DE102008003267A1 (de) Hybridflashspeicherbauelement, Speichersystem und Verfahren zum Steuern von Fehlern in einem Hybridflashspeicherbauelement
DE112020000748B4 (de) Adresserzeugung zur hochleistungsverarbeitung von vektoren
DE102012103577A1 (de) Datenspeichervorrichtung, Kodierungseinheit, Systeme selbige umfassend und Verfahren zum Auslesen von Daten
DE112017005197T5 (de) Hybrid-Komprimierungsschema zur effizienten Speicherung synaptischer Gewichte in neuromorphen Hardware-Kernen
DE102004006528A1 (de) Fehlerfassung und Korrektur in einer geschichteten dreidimensionalen Speicherarchitektur
EP0479787B1 (de) Verfahren zur codierung einer elementfolge und einrichtung zur durchführung des verfahrens
DE60101745T2 (de) Viterbi dekodierung mit pfadmetrikaktualisierung durchgeführt in einheiten von bitscheiben
DE102020114046A1 (de) Neuronales Maschinenübersetzungsverfahren, neuronales Maschinenübersetzungssystem, Lernverfahren, Lernsystem und Programm
DE102013016694B4 (de) Codieren und Decodieren redundanter Bits zum Vornehmen von Anpassungen für Speicherzellen mit Haftfehlern
CN115913248A (zh) 一种直播软件开发数据智能管理系统
CN114781639A (zh) 面向边缘设备多层共享码本向量量化的深度模型压缩方法
DE102013020713A1 (de) Techniken zum Codieren und Decodieren unter Verwendung eines kombinatorischen Zahlensystems

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
8139 Disposal/non-payment of the annual fee