JP3978195B2 - 記憶デバイスの欠陥リストの長さを最小にする方法およびシステム - Google Patents

記憶デバイスの欠陥リストの長さを最小にする方法およびシステム Download PDF

Info

Publication number
JP3978195B2
JP3978195B2 JP2004109741A JP2004109741A JP3978195B2 JP 3978195 B2 JP3978195 B2 JP 3978195B2 JP 2004109741 A JP2004109741 A JP 2004109741A JP 2004109741 A JP2004109741 A JP 2004109741A JP 3978195 B2 JP3978195 B2 JP 3978195B2
Authority
JP
Japan
Prior art keywords
data storage
bit
vector
storage location
codebook
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2004109741A
Other languages
English (en)
Other versions
JP2004334846A (ja
Inventor
ジョバンニ・モッタ
エリック・オーデントリッチ
ガディエル・セロウッシ
マルセロ・ワインバーガー
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 JP2004334846A publication Critical patent/JP2004334846A/ja
Application granted granted Critical
Publication of JP3978195B2 publication Critical patent/JP3978195B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

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)
  • For Increasing The Reliability Of Semiconductor Memories (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Description

本発明は、データ記憶デバイス、すなわちメモリに関し、特に、データ記憶デバイスに関連付けられた欠陥データ記憶位置テーブル、すなわち、メモリに関連付けられた欠陥メモリ位置テーブルに関する。
このテーブルは、単調増加するインデックスによってインデックスされる論理メモリ位置のシーケンシャルリストを、複数の欠陥のある物理メモリ位置を含むメモリから作成できるように、欠陥のあるすべてのメモリ位置を特定するものである。
近年、データ記憶デバイス、すなわちメモリにデータを記憶するための新しい技術開発に、非常に大きな発展があった。
高密度かつ大容量の電子メモリチップが、容易に、かつ、安価に入手可能となり、新しい3次元積層電子メモリデバイスが、半導体フィルムを使用して開発された。
旧技術には、磁気ディスク、磁気テープ、ならびに非常に古いコアメモリおよびドラムメモリが含まれる。
電子メモリデバイスおよび磁気メモリデバイスは、一般に、非常に多くのアドレス指定可能な物理メモリ位置を含む。
各物理メモリ位置は、1つまたは2つ以上のコンピュータ可読バイトまたはコンピュータ可読ワードを記憶することができる。
これらのバイトまたはワードは、例えば8ビットバイトおよび32ビットワードまたは64ビットワードといった一定数のビットからなる。
「データ記憶単位」と一般に呼ばれる最低レベルの記憶単位は、例えばディスクセクタまたは3次元メモリプレーンといった、より大きな単位に階層的にグループ化することができる。
物理メモリ位置は、物理アドレスによってアドレス指定できる1つまたは2つ以上のデータ記憶単位を含む。
物理メモリ位置は、あるタイプのメモリデバイスのコンピュータ可読ワードであってもよいし、別のタイプのデバイスのディスクセクタであってもよい。
一般に、技術のいかんを問わず、メモリデバイス内のある一定数のメモリ位置は、欠陥を有することがある。
欠陥のあるメモリ位置は、読み出せないことがあるか、または、書き込みを介在することなく、連続的に読み出した場合に異なる値を生成するので、信頼できないことがある。
このような欠陥のあるメモリ位置は、製造直後の初期試験で特定できるか、または、そのメモリデバイスの寿命の間は、メモリデバイスの付加的な試験を介して、もしくは、他の手段によって動的に特定できる。
図1は、3次元メモリの説明図を示している。
このメモリは、9つのプレーン101〜109を備える。
各プレーンは、例えばメモリ位置110といったメモリ位置の格子状配列を備える。
図1に示す3次元メモリデバイスでは、各プレーンのメモリ位置は、数学的配列のセルと同様にインデックスされ、メモリ位置(0,0)から開始して、メモリ位置(31,5)に行ごとに進む。
各メモリ位置が、例えば座標(x,y,z)によって指定されるように、プレーンを第3のインデックスによってインデックスすることができる。
座標(x,y,z)において、xは、あるプレーン内の行のインデックスであり、yは、あるプレーン内の列のインデックスであり、zは、3次元メモリを構成する複数のプレーンからなる層内のあるプレーンのインデックスである。
図1では、例えばメモリ位置112といった多数のメモリ位置、すなわちワードに、そのメモリ位置に欠陥があることを示すために陰影が付けられている。
図2は、欠陥のあるメモリ位置を含むメモリ内、例えば図1に示すメモリ内で欠陥のないメモリ位置をアドレス指定する多数の可能な技法の1つを示している。
図2に示すように、このメモリ内の物理メモリ位置の構造を正確に描写するビットマップ201を構築することができる。
例えば、図2に示すように、ビットマップ201は、例えば配列203といったビットの配列を含む。
この配列は、図1に示す3次元メモリの各プレーンに対応する。
各ビット配列では、例えばセル205といったセルが、対応するメモリ位置の欠陥の有無を示す1ビットを含む。
この図および以下の解説では、ビット値「0」が、欠陥のない物理メモリ位置を示し、ビット値「1」が、欠陥のある物理メモリ位置を示す。
図2のビット配列203は、図1に示すメモリにおける対応する3次元メモリプレーン101内のメモリ位置をインデックスするのと同様にしてインデックスされることに留意されたい。
図1で陰影を付けたセルとして示す欠陥のあるビットと、ビットアレイ203のビット値「1」を含むセルとの対応関係は、容易に識別することができる。
例えば図2のビットマップ201といった欠陥メモリ位置マップが一旦準備されると、ビットマップで欠陥のあるものとして確認されたメモリ位置を無視することにより、欠陥のないメモリ位置を、単調増加する順番で順序付けることができる。
換言すると、一連の欠陥のない論理的なメモリ位置を準備することができ、それによって、欠陥のない論理メモリ位置を使用して物理メモリ位置をアドレス指定することができる。
これを行う1つの方法は、ビットマップ配列の第1行209のビットマップエントリに対応する物理メモリ位置のそれぞれの論理メモリ位置アドレスのインデックス207を作成することである。
例えばインデックス207のように、メモリのプレーンに対応する各ビットアレイに対して、別々にインデックスを作成することができる。
このインデックスは、所望のメモリ位置に近く、かつ、所望のメモリ位置の前に位置するメモリ位置を見つけ出すために使用することができる。
次に、メモリ内のメモリ位置の正確な物理アドレスを見つけ出すために、ビット配列の対応する列を踏査することができる。
例えば、論理メモリ位置アドレス100を有する物理メモリ位置を見つけ出したい場合、インデックス207を検索して、論理メモリ位置アドレス「98」を含むセル212が突き止めることができる。
そのセルのインデックスは、ビット配列内において、その論理メモリ位置アドレスに対応する第1セルを有する列のインデックスである。
したがって、ビット配列203内のセル214は、論理メモリ位置アドレス「98」を有するメモリ位置に対応する。
次に、この列を下方にセル単位で踏査して、論理メモリ位置アドレス「100」に対応するビット配列のセル216を突き止めることができる。
この踏査を行っている間、ビット値「1」を含むビット配列のセルは、いずれもスキップされる。
インデックス207内の連続したセルの内容値の差分は、一定でないことに留意されたい。
ビット配列の列に対応したメモリのプレーンの列内に、欠陥のあるメモリ位置が存在しない場合、インデックスの次のセルは、ビット配列の列のセルの個数分だけ、インクリメントされる。
例えば、インデックス207の第2セル218の値「6」は、メモリの第1プレーンの第1列に、欠陥のあるメモリ位置が存在しないことを示している。
一方、メモリの第1プレーンの第2列では、欠陥のあるメモリ位置(図1の114)が存在する(このメモリ位置は、ビット配列203のセル220のビット値「1」によって特定される)ため、インデックス207の第3セル222の値は、前の値よりも5だけ大きい「11」となっている。
これらのインデックスおよびメモリ位置ビットマップ(それぞれ、図2の207および201)は、メモリ内の欠陥のないメモリ位置を連続的にインデックスするための多くの異なる可能な方法の1つを表している。
メモリ内の欠陥のないメモリ位置および欠陥のあるメモリ位置が特定されるビットマップ、例えば図2のビットマップ201は、ほとんどの方法に共通している。
メモリ位置にアクセスするごとに、このビットマップにアクセスすることが必要となり得るので、メモリの効率的で高速なアドレス指定を容易にするには、このビットマップを非常に高速なメモリに記憶する必要がある。
しかしながら、このような高速メモリは、一般に使用される低速メモリよりもはるかに高額である。
例えば、プロセッサ内の高速レジスタは、一般に、はるかに高速にアクセスされるが、一般に、1つまたは2つ以上のメモリバスを介してプロセッサと相互接続される低速のダイナミックランダムアクセスメモリよりも、何桁も高額である。
プロセッサ内に含まれるレジスタの数をより多くすることにより、演算をより高速にすることができるが、プロセッサは、レジスタが追加されるごとにますます高額になる。
これらの理由から、図2に示すメモリ位置ビットマップ201のようなメモリ位置ビットマップを効率的に記憶する方法が、メモリの製造業者および設計者、ならびに、それらのメモリを含むデバイスの製造業者およびユーザによって認識されてきた。
本発明の実施の形態の組を表す一般的な方法では、欠陥メモリ位置ビットマップが、非可逆圧縮/伸張方法を使用して圧縮される。
非可逆圧縮/伸張方法は、伸張時に圧縮情報を変更することがあるが、結果的に大きな圧縮を生み出す。
本発明の特定の一実施の形態は、ベクトル量子化技法を使用して、メモリ内の欠陥のあるメモリ位置を特定する欠陥メモリ位置ビットマップを圧縮する。
このベクトル量子化方法は、ベクトル空間の反復的な分割を利用する。
分割は、初期の分割それぞれの最初の処理ベクトルとして選択された各コードワードに対して、ベクトルの類似性を判断するために、ブールORメトリックを利用する。
特別なベクトル(1,1…1)が、すべての繰り返しにわたってコードブック内にコードワードとして保持される。
ベクトル量子化方法は、欠陥のあるメモリ位置が、圧縮および伸張を通じて歪められて、そのメモリ位置が正常であることを誤って示すことがないように、非対称歪みを生成するよう設計される。
欠陥メモリ位置ビットマップ内の正常なメモリ位置を、欠陥メモリ位置に分類する歪みのみが許容される。
その結果、メモリ位置の損失が発生するが、欠陥のあるメモリ位置が信頼されて使用されることは防止される。
さまざまな異なる圧縮/伸張方法が、メモリ内の異なるタイプの欠陥分布に適合し得るので、複数の圧縮/伸張方法の中から最も適切な圧縮/伸張方法を、特定の欠陥確率分布に最も適したものとして選択する方法が提供される。
欠陥メモリ位置ビットマップの圧縮には、連長量子化方法も使用することができる。
メモリ内の欠陥のあるメモリ位置を表すビットマップを高速メモリにできるだけコンパクトに記憶して、そのメモリを実施するのに必要な高速メモリの量を最小にするために、本発明の複数の実施の形態は、どの物理メモリ位置が欠陥を有するかを示す欠陥メモリ位置テーブルを圧縮し、圧縮した欠陥メモリ位置テーブルを高速メモリに記憶する。
上述したように、欠陥メモリ位置テーブルは、一般に、ビットマップであり、そのビットマップでは、ビット値「0」が、欠陥のないメモリ位置を示すのに使用される一方、ビット値「1」が、欠陥のあるメモリ位置を指定するのに使用される。
もちろん、逆の慣例が使用されてもよい。
多くの異なるタイプの圧縮技法が存在する。
これらのタイプは、(1)圧縮ビットマップの正確な復元を可能にする可逆圧縮技法、および、(2)伸張時に元の符号化されたビットマップに対して一般に歪みが生じる非可逆圧縮技法、の2つの一般的なカテゴリに分類される。
既知の可逆圧縮技法は、「連長符号化」として知られている。
図3A〜図3Cは、連長符号化技法を示している。
メモリの構造にかかわらず、メモリ内のメモリ位置のすべてを連続的に順序付けることができ、それによって、メモリ位置のいずれが欠陥を有するかを示すビットマップも連続的にすることができるようになる。
図3Aには、短い欠陥メモリ位置ビットマップ302を、このビットマップの圧縮版304と共に示す。
図3Aに示す例では、圧縮ビットマップ304が、図3Aの後尾の空白ビット305〜307で示す3ビットしか、未圧縮ビットマップ302よりも短くなっていないので、この圧縮はあまり劇的ではない。
ビットマップ302は、連長符号化によって符号化、すなわち圧縮される。
この技法では、連続した0のビット列および連続した1のビット列が、その列の長さ、および、その直後に続くその列内のビットのビット値によって表される。
例えば、ビットマップ302は、先頭に、14個の0のビット列310を含む。
この14個の0のビット列は、このビットマップの圧縮版304では、値「14」を表す4ビット整数312、および、その直後に続く1ビット値「0」314として表される。
1ビット値「0」314は、14ビット列のビットが0のビットであることを示す。
同様に、未圧縮ビットマップ302の次の3個の1のビット列316は、圧縮ビットマップでは、値「3」を表す4ビット整数318、および、その直後に続く、ビット値「1」を有する1ビット320で表される。
1ビット320は、この3ビット列がビット値「1」を有することを示す。
元のビットマップ302をそのビットマップの圧縮版304から正確に復元できるので、連長符号化は、可逆符号化技法である。
未圧縮ビットマップのそれぞれの部分列を、そのビットマップの圧縮版の最も左の部分列表現から開始して順に、圧縮ビットマップから生成することができる。
図3Bに示すように、欠陥のあるメモリ位置が比較的少ない場合にのみ、非常に大きな圧縮比が達成される。
図3Bに示す例では、ほぼ50パーセントの圧縮が達成される。
大きな連長整数、例えば32ビット整数が使用され、欠陥の発生がかなり稀であると、さらに大きな圧縮比を達成することができる。
しかしながら、図3Cに示すように、可逆圧縮技法は、必ずしも圧縮を生成できるとは限らず、ある一定の入力ビットマップに対しては、元の未圧縮ビットマップよりも長い圧縮ビットマップを生成することがある。
換言すると、可逆圧縮技法は、ある一定のタイプの欠陥の分布に対しては、あまり機能しない可能性がある。
図3Cでは、欠陥のあるメモリ位置が比較的高い比率で存在し、これらの欠陥のあるメモリ位置は、欠陥のないメモリ位置を挟んで散在している。
このケースでは、未圧縮ビットマップ330の最初の6ビット328の連長圧縮だけで、28ビットの連長符号化ビットマップが、ビットマップの圧縮版332に生成される。
したがって、このケースでは、連長符号化の結果、データ圧縮ではなく、データ拡張が生じる。
あるいは、固定長ではなく、可変長の連長符号化技法を使用することができる。
可変長符号化技法では、可変長のプレフィックスフリーコード(prefix-free code)を使用して、連長値を一連の可変長ビット列に符号化することができる。
連長符号化のビットサイズは、一般に、符号化の発生頻度を反映し、最も高い頻度で発生する連長が最も簡潔に符号化されるようになっている。
できるだけ効率的にデータを圧縮するために、さまざまな異なるタイプの可変長連長符号化を使用して、圧縮するデータの統計モデルに符号化を適合させることができる。
本発明の一実施の形態は、ベクトル量子化を使用して、欠陥メモリ位置ビットマップを圧縮することを必要とする。
ベクトル量子化は、非可逆圧縮技法である。
メモリ位置欠陥ビットマップを圧縮するのに、非可逆圧縮技法を使用することは自明ではない。
その理由は、伸張時に、元の欠陥メモリ位置ビットマップが歪められることがあり、これは、元のビットマップでビット値「0」を有するビットが、欠陥メモリ位置ビットマップの伸張版では歪められて、ビット値「1」を有することがあることを意味し、また、ビット値「1」を有するビットが、欠陥メモリ位置ビットマップの伸張版では歪められて、ビット値「0」を有することがあることを意味するからである。
前者の場合、欠陥のないメモリ位置が、欠陥があるとみなされ、メモリ内の欠陥のないメモリ位置が無駄になっていることに相当する。
後者の場合、認識された欠陥のあるメモリ位置は、欠陥のないものとみなされ、その結果、破滅的なエラーを含むさまざまな重度のエラーが発生することがある。
したがって、非可逆圧縮技法は、合理的にみると、容認できないように見られるかもしれない。
しかしながら、非対称の歪みを生成する圧縮/伸張技法が、欠陥メモリ位置ビットマップの圧縮に容認できる場合があると認識することが、本発明の第1の実施の形態の動機となっている。
図4〜図9は、本発明の一実施の形態を表す欠陥メモリ位置ビットマップを圧縮するベクトル量子化方法を示している。
図4に示すように、欠陥メモリ位置ビットマップ402を一連のビットベクトル404〜407に分割することができる。
換言すると、欠陥メモリ位置ビットマップ402は、図4に示すように、一連の4ビットのビットベクトルとみなすことができる。
ベクトル量子化は、これら連続したベクトルのそれぞれをインデックスに圧縮するプロセスである。
ベクトル量子化によって圧縮されたビットマップの伸張には、一連のインデックスをビットベクトルに変換して戻すことが必要となる。
図5は、ベクトル量子化によるビットベクトルのインデックスベクトルへの変換、および、その後のビットベクトルの復元を示している。
図5に示すように、入力ビットマップの連続したビットベクトルの1つを表すビットベクトル502は、エンコーダ504によってインデックスベクトル506に変換される。
インデックスベクトルは、ビットベクトルよりも短く、したがって、インデックスベクトルの長さに対するビットベクトルの長さの比に等しい入力ビットマップの圧縮比が生み出される。
インデックスベクトル506は、後述するコードブック内のコードワードのインデックスである。
一連のインデックスベクトルからビットマップを復元するには、インデックスベクトルをデコーダ508に通過させて、対応するベクトル510を生成することを伴う。
デコーダは、インデックスを使用して、対応するコードワードを突き止め、そのコードワードを出力ビットベクトルとして生成する。
図6は、一例のビットベクトル空間および対応するインデックスベクトル空間を示している。
図6に示すように、4ビットの入力ベクトルが使用される場合、ベクトル量子化エンコーダは、16個の可能な異なる入力ベクトル602を受け取ることができる。
エンコーダが、4つのコードワードを含むコードブックを使用する場合、4つの異なるインデックスが、コードブックをインデックスするために必要とされる。
したがって、コードブック内の4つのコードワードをインデックスするには、2ビットのインデックスベクトルを使用することができる。
したがって、図6に示すように、4ビットのビットベクトルは、ベクトル量子化符号化によって、2ビットのインデックスベクトル604に変換される。
連長符号化と同様に、ベクトル量子化技法も、無損失可変長プレフィックスフリーコードを使用して、インデックスをバイナリ列に符号化することができる。
そうすることにより、最も一般に参照されるコードワードは、最も簡潔にインデックスすることができる一方、参照頻度の少ないコードワードは、長いインデックスによりインデックスされ得る。
参照頻度の分布が一定でない場合には、可変長インデックスを使用して、より高い符号化効率を得ることができる。
上述したように、欠陥メモリ位置ビットマップを圧縮するための非対称ベクトル量子化方法を考案しなければならない。
図7は、16個の可能な異なる4ビットの入力ベクトルのそれぞれを表すのに使用できる異なるコードワードを例示したテーブルを示している。
これらの16個の可能な異なる4ビットの入力ベクトルは、図7のテーブル700では、例えば列704などの16列のラベル702として示されている。
各列の4ビット値は、その列をラベル付けする特定の4ビットの入力ベクトルに対応し得る可能な異なるコードワードを表す。
例えば、入力ベクトル「0100」706は、コードワード「0100」、「0101」、「0110」、「0111」、「1100」、「1101」、「1110」、および「1111」のいずれかによって表すことができる。
これら以外のコードワードは可能ではない。
その理由は、4ビットのビットベクトル「0100」用のコードワードは、その入力ベクトルがビット値「1」を有するビット位置のいずれにもビット値「0」を含むことができないからである。
換言すると、欠陥のあるメモリ位置の表示を、欠陥のないメモリ位置の表示に歪めることはできない。
入力ベクトル「1111」708に対して可能なコードワードは、コードワード「1111」のみであることに留意されたい。
また、入力ベクトル「0000」には、あらゆるコードワードを使用できることにも留意されたい。
入力ベクトル「1111」に対して可能なコードワードは、コードワード「1111」のみであることから、コードワード「1111」は、望ましくない歪みを防止するために、それぞれの可能なコードブックに存在する必要がある。
図8は、4ビットの入力ベクトルと、4つのコードワードを含むコードブックをインデックスする2ビットのインデックスベクトルとの可能なベクトル量子化方式を示している。
図8の大きな長方形802は、可能な異なる入力ベクトルのすべてを示している。
これらの可能な入力ベクトルは、図8では、4つのグループ804〜807に分割される。
第1のグループ、すなわち区画804は、入力ビットベクトル「0000」しか含まない。
第2の区画805は、入力ビットベクトル「0001」、「0010」、および「0011」を含む。
第3の区画806は、ビットベクトル「0100」、「1000」、および「1100」を含む。
第4の区画807は、残りの可能な入力ベクトルを含む。
各区画において丸を付けたベクトル、例えば、丸を付けたベクトル810は、その区画のコードワードである。
4つの区画に対して4つのコードワード810〜813が存在する。
これらの4つのコードワードは、4ビットの整数として見ると、コードワードの大きさの順でインデックスされる。
したがって、図8の方式を使用するベクトル量子化圧縮技法は、区画804の入力ベクトル「0000」を、その区画のコードワード811のインデックスを表すインデックスベクトル「00」に圧縮する。
同様に、入力ベクトル「1010」814は、その区画のコードワード「1111」810をインデックスするインデックスベクトル「11」に圧縮される。
図9は、図8に示す分割を使用するベクトル量子化圧縮方式により一例のビットマップを圧縮する様子を示している。
入力ビットマップ902は、4ビットのベクトル、例えば4ビットのベクトル904に分割される。
次に、各入力ベクトルは、2ビットのインデックスベクトル、例えば2ビットのインデックスベクトル906に変換される。
この変換は、区画のコードワードに対応する2ビットのインデックスを使用することにより行われる。
この区画のコードワードは、図8の方式に従って入力ベクトルに割り当てられたものである。
一般に、入力ベクトルに対応するインデックスは、距離または歪みメトリック(distortion metric)を使用して計算されるが、代わりに、各入力ベクトルのインデックスが記憶されていてもよい。
図9は、圧縮ビットマップ906から伸張された伸張ビットマップ908も示している。
伸張は、各インデックスベクトルを、そのインデックスベクトルがインデックスするコードワードと置き換えることにより行われる。
ある一定の場合には、伸張は、未圧縮のビットマップにもともと存在するビットベクトルと同じビットベクトルを正確に生成する。
例えば、ビットベクトル「0000」904は、伸張ビットマップの同一の4ビットのベクトル「0000」910に伸張される。
一方、他のベクトルは、正確に伸張されない。
例えば、未圧縮のビットマップ902の2番目のビットベクトル912は、異なるビットベクトル914に伸張される。
ビット916〜920は、伸張を通じてビット値「0」からビット値「1」に変化しており、したがって、歪みを表していることが分かる。
説明した本発明の実施の形態で使用されるベクトル量子化手法は、圧縮/伸張歪みの結果として、値「0」が、時に「1」に変化することがあるが、値「1」は、「0」に変化しないように、歪みが非対称となるよう設計される。
その結果、欠陥のないメモリ位置は、欠陥のあるメモリ位置として誤って特徴付けられることがあるが、欠陥のあるメモリ位置が、欠陥のないメモリ位置として誤って特徴付けられることはない。
非対称歪みの措置は、欠陥メモリ位置テーブルのベクトル量子化に使用され、バイナリ値xと、このバイナリ値を伸張したもの
Figure 0003978195
との歪みは、以下の数式によって与えられる。
Figure 0003978195
図4〜図9を参照して上述した、欠陥メモリ位置テーブルの圧縮および伸張を行うためのベクトル量子化の効率および有効性は、コードワードのコードブックの適切な構築に依存する。
入力ベクトルとも呼ばれるトレーニングベクトルの組が、コードブックの構築に一般に使用され、その結果、発生する可能性のあるベクトルの効率的な符号化を構築する際に、さまざまなベクトルの発生確率が考慮される。
明らかに、コードワードは、歪みを最小にする方法で、トレーニングベクトルのベクトル空間を分割する必要がある。
コードワードの個数が多くなるほど、コードブックをインデックスするのに必要なインデックスの個数が多くなる。
したがって、圧縮率は、コードブックサイズに依存するが、入力データの所与の組に対して最適な分割が与えられると、歪み率は、一般に、コードブックサイズが小さくなるにつれて増加する。
ベクトル量子化圧縮/伸張用のコードブックを構築するための複数の異なる手法が存在する。
有名な技法は、アルゴリズムの作成者Linde、Buzo、およびGrayに関連して「LBGアルゴリズム」または単に「LBG」と呼ばれる。
図10は、コードブックを構築するLBG技法のフロー制御図である。
ステップ1002で、コードブックサイズN、コードワードベクトルの次元n、および閾値カットオフパラメータsが選択される。
コードブックサイズNは、コードワードの個数である。
閾値カットオフパラメータsは、LBGの連続した繰り返しによって生成されるコードブック間の相対的な歪みの変化の閾値であり、アルゴリズムは、この閾値未満になった時点で構築されたコードブックで終了する。
終了時現在のコードブックは、局所的に最適なコードブックに少なくとも近いものと仮定される。
さまざまな判断基準を使用して、コードブックサイズNおよびコードワードベクトルの次元nを選択することができる。
上述したように、ベクトル量子化にコードブックを使用することにより達成できる圧縮比は、コードブックサイズNに直接関係する。
最適に近いコードブックを選択する効率は、コードワードベクトルの次元nを大きくするように選択することによって促進され、それによって、ベクトル空間の分割により大きな多様性が提供される。
しかしながら、コードワードベクトルの次元nが、あまりにも大きくなるように選択されると、最適なコードブックを見つけ出すことはおろか、局所的に最適なコードブックに繰り返し到達することも、実際に不可能になる可能性がある。
ステップ1004では、繰り返し変数kが、1に設定される。
繰り返し変数kは、LBGアルゴリズムの内部ループが実行される回数を追尾する。
次に、ステップ1006で、LBGアルゴリズムは、初期コードブックとして、N個のn次元ベクトルJの初期セットを選択する。
初期コードブックの選択は、さまざまな異なる方法で請け負うことができる。
1つの手法は、ランダムに発生したベクトルの組を使用することである。
ランダム発生の一手法では、区画のインデックスが、適切なサイズで適切に分布した擬似乱数ベクトルを生成する擬似乱数発生器の種として使用される。
この手法の利点は、コードワードを記憶する必要がないということである。
その代わり、対応するコードワードを再生するために、圧縮テーブルから抽出されたインデックスを同じ擬似乱数発生器に種として入力することができる。
別の手法は、各入力ベクトルをそれ自身の区画に配置し、次いで、区画の個数が容認できる少ない個数となるまで、各区画の重心ベクトルをコードワードとして使用して、近い区画をペア形式で共に合体するものである。
近さのメトリックは、ユークリッド距離の総和に基づくものであってもよいし、別の距離メトリックに基づくものであってもよい。
第3の手法は、入力ベクトル空間の重心を計算し、最初のコードワードとしてその重心を使用し、次に、その重心を体系的に摂動させて、初期コードブックの残りのコードワードを生成するものである。
ステップ1008〜1013は、共に、繰り返しループを構成する。
この繰り返しループでは、容認できるレベルの歪みが得られるまで、最初に選択されたコードワードが変更される。
前の繰り返しで構築されたコードブックについて計算された歪みと、現在のコードブックについて計算された歪みとの差が、閾値s未満になると、LBGアルゴリズムは終了し、現在のコードブックQは、ステップ1014で返される。
このコードブックは、入力ベクトルのN個の区画Qからなる。
ここで、iは、0〜N−1の値を有し、各区画Qには、コードワードJ(i)が含まれる。
ステップ1008で、他のどのコードワードよりも各コードワードJ(i)に近い入力ベクトルが、以下の数式に従って、コードワードJ(i)を含む区画iのメンバとして選択される。
Figure 0003978195
上記数式において、iおよびj∈{0,1,…N−1}であり、例えば、
Figure 0003978195
換言すると、ステップ1008では、入力ベクトルが、N個の区画に分割される。
別法では、歪みdを、ユークリッド距離ではなく、歪みを反映した別のメトリックとなるように定義してもよいことに留意されたい。
次に、ステップ1009で、ステップ1008のk回目の繰り返しで構築された現在のコードブックQについて、全歪みD(k)が計算される。
この全歪みは、次のように計算される。
Figure 0003978195
上記数式において、q(i) ∈Qであり、0<j≦sizeof(Q)(Qのサイズ)である。
ステップ1010で、LBGアルゴリズムは、kが1より大きいかどうかを判断する。
kが1より大きい場合には、D(k−1)は、先に計算されているので、ステップ1011で、相対的な歪みの変化ΔD relを次のようにして計算することができる。
Figure 0003978195
この相対的な歪みの変化ΔD relは、より良いコードブックの探索を続けるかどうかを判断するために、ステップ1011で閾値sと比較される。
相対的な歪みの変化が、閾値s未満である場合には、現在の区画Qおよび現在のコードワードの組Jがそれぞれ返される。
そうではなく、kが1である場合、または、相対的な歪みの変化がsよりも大きい場合には、現在のコードワードの組Jが、ステップ1013で変更され、内部ループの繰り返しがもう一度実行される。
この場合も、コードワードを変更するための多数の方法をステップ1013で使用することができる。
一手法は、Qの各区画について重心ベクトルを計算し、計算した重心ベクトルを次の繰り返しでコードワードの新しい組として使用することである。
LBGアルゴリズムは、欠陥メモリ位置テーブルを圧縮するベクトル量子化方式で使用するために調整する必要がある。
図11は、本発明の一実施の形態におけるベクトル量子化欠陥メモリ位置テーブル圧縮および伸張用のコードブックを構築するために使用できる非対称歪みモデルLBGアルゴリズムのフロー制御図である。
非対称歪みモデルLBGアルゴリズムの多くのステップは、図10を参照して説明したLBGアルゴリズムのステップと類似しているので、再度説明しないこととする。
その代わり、相違点のみを解説する。
第1の相違点は、ステップ1106に見られる。
ステップ1106と図10のステップ1006とを比較すると、非対称歪みモデルLBGアルゴリズムでは、ベクトルJの初期セットが、ベクトル内の各位置に値「1」を有するベクトルを含まなければならないことが明らかになる。
このベクトルは、伸張時に、欠陥メモリ位置テーブルにおいて、「1」の値が「0」の値に歪められ、それによって、特定された欠陥のあるメモリ位置が変更されて、そのメモリ位置が欠陥のないことを示すことがないことを保証するために存在する必要がある。
図8を参照して上述したように、すべての位置が「1」の値からなる入力ベクトルに適したコードワードのみが、すべての位置が「1」の値からなるコードワードであるので、そのコードワードが、コードブックに存在する必要がある。
第2の相違点は、図10の対応するステップ1008および1009と比較することにより、ステップ1108および1109に見ることができる。
ステップ1108から分かるように、非対称歪みモデルLBGアルゴリズムは、歪みの対称的な尺度を反映するユークリッド距離の尺度を使用するのではなく、以下の非対称距離の尺度を使用する。
Figure 0003978195
上記数式において、
Figure 0003978195
第3の相違点は、図10のステップ1013と比較することにより、ステップ1113に見られる。
ベクトルJを含むコードブックが変更されると、すべての位置に値「1」を有するベクトルは、変更されたコードブックに含まれる必要がある。
また、重心の計算または他の距離に関連した技法が、変更を行うのに必要とされる場合には、上述した非対称距離メトリックをユークリッド距離メトリックに代わって使用する必要がある。
非対称歪みモデルLBGアルゴリズムでは、重心は、区画内のベクトルの論理ORとして計算される。
コードブックの最適なサイズは、入力ベクトル
Figure 0003978195
の確率分布p、および、伸張ベクトル
Figure 0003978195
の条件付き確率分布
Figure 0003978195
から計算される相互情報量の大きさを最小にすることを通じて決定することができる。
上述したように、非対称歪み尺度
Figure 0003978195
が、欠陥メモリ位置テーブルのベクトル量子化に使用される。
非可逆エンコーダ/デコーダでは、条件付き確率分布
Figure 0003978195
上で、相互情報量
Figure 0003978195
を最小にする努力が行われる。
ここで、
Figure 0003978195
は、入力ベクトル
Figure 0003978195
の確率分布p、および、伸張ベクトル
Figure 0003978195
の条件付き確率分布
Figure 0003978195
から計算され、以下の式によって与えられる。
Figure 0003978195
上記数式は、エンコーダが生成する平均歪みが、最大許容歪み
Figure 0003978195
以下であることを必要とするという制約に従うことを条件とする。
この条件は、次の数式で表される。
Figure 0003978195
最大許容歪みの制約を条件として、相互情報量
Figure 0003978195
を最小にすることにより、レート歪みの最適な比率R(δ)が得られる。
ここで、δは、圧縮/伸張歪みにより犠牲にできる欠陥のないメモリ位置の割合に等しい。
δは、以下のように、
Figure 0003978195
と関係する。
Figure 0003978195
上記数式において、nは、ベクトルの長さであり、pは、予想される不良セクタの比率である。
独立かつ全く同じに分布した欠陥の場合には、レート歪みの最適な比率は、次の式により与えられる。
Figure 0003978195
上記数式において、pは、欠陥のあるセクタの比率であり、H(p)は、H(p)=−(p)logp−(1−p)log(1−p)である、欠陥のあるセクタの比率/確率のエントロピーである。
コードブックの最適なサイズは、2nR(δ)である。
ここで、nは、コードベクトルの次元である。
入力ベクトルおよびコードワードベクトルの次元nの最適なサイズも、最適化することができる。
ベクトルの次元があまりにも小さいと、コードブックの構築は、最適でないコードブックにあまりにも高速に収束することがあり、効果的に得ることができる圧縮率があまりにも小さくなることがある。
他方で、ベクトルの次元があまりにも大きいと、非対称歪みモデルLBGアルゴリズムの各繰り返しで考慮する必要がある入力ベクトルの個数が、途方もなく大きくなり、符号化プロセスが、あまりにも複雑になることがある。
入力ベクトルおよびコードワードベクトルの次元nの最適なサイズは、試行錯誤法により決定することができる。
欠陥メモリ位置テーブルの効果的な圧縮/伸張方法を選択するには、さまざまな圧縮/伸張方法の性能指数を計算でき、最も良い性能指数を生み出す圧縮/伸張方法を選択できることが望ましい。
性能指数の最も良い値は、その性能指数の表現形式に応じて、最小値、最大値、0に最も近い値、またはそれ以外のある値とすることができる。
圧縮/伸張方法に役立つ性能指数は、以下で導出され、望ましい圧縮/伸張方法であるほど、大きな値を生成する。
所与の圧縮アルゴリズムcompの操作可能なレート歪み関数Rcomp(δ)が、性能指数の導出に使用される。
この関数は、正常なセクタが不良セクタに歪められる率δで動作する圧縮アルゴリズムcompが達成するビットレートを統計的または決定論的に特徴付ける。
この特徴付けは、漸近線による特徴付けから、最悪の場合は、ある最大符号化ビット数に至る特徴付けまでのいずれであってもよい。
この圧縮アルゴリズムが、正常なセクタが不良セクタに誤って特徴付けられる率δでnビット(nは、前に使用したベクトルのビット数を表すnとは異なる)を圧縮するのに使用される場合、圧縮ビットストリーム長が、すべてのnに対してnRcomp(δ)とほぼ等しくなるべきであるという特性を、この特徴付けは、いかなる場合にも有する必要がある。
不良セクタの割合をpとすると、これは、n(1−p)δ個の誤って特徴付けられた使用されないセクタに対応する一方、欠陥テーブルに従って実際に利用可能な正常なセクタの個数は、n(1−p)(1−δ)となる。
非可逆欠陥テーブル圧縮方式について考慮されるコストは、大容量記憶装置のコスト/セクタα、および、高速メモリのコスト/ビットβを含む。
このコストは、欠陥テーブルを作成して維持する対象となる大容量記憶装置のセクタの総数をα倍したものに、このテーブルが占めるビット数をβ倍したものを加えたものである。
総コストCの方程式は、大容量記憶装置のセクタ数をnとすると、次のようになる。
C=αn+βnRcomp(δ)
圧縮/伸張方法は、以下のように定義されるコスト制約Cmaxを満たす必要がある。
max>C
圧縮/伸張方法compは、以下のように、圧縮欠陥メモリ位置テーブルによって使用されるメモリをコスト制約Cmaxの範囲内で最大にすることにより、歪みδについて最適化することができる。
制約:Cmax≧αn+βnRcomp(δ)のもとで、
Figure 0003978195
一定のδに対して、nは、上記制約の等式を成立させるように最大化されるべきであるので、この最適化は、等価的に次のように表すことができる。
Figure 0003978195
Figure 0003978195
は、特定の計算環境に特有のパラメータのみを含む。
したがって、この項を上記最適化式から因数分解して、以下のように、特定の圧縮/伸張方法compの性能指数Fcompの式を与えることができる。
Figure 0003978195
すなわち、
Figure 0003978195
上記数式において、
Figure 0003978195
このように、性能指数Fcompは、効果的な圧縮/伸張方法を選択するための重要なツールである。
性能指数Fcompを使用して欠陥メモリ位置テーブルの圧縮/伸張方法を評価する方法は、本発明の一実施の形態を表す。
欠陥メモリ位置テーブルの圧縮/伸張の別の手法は、本発明のさらに別の実施の形態を表す技法である連長量子化を使用することである。
この技法では、連長符号化が使用されるが、図3A〜図3Cを参照して上述した標準的な連長符号化と異なり、量子化された連長が使用され、それによって、圧縮テーブルでは、連長を指定する整数ではなく、インデックスを使用することが可能になる。
図12および図13は、本発明の一実施の形態を表す連長量子化圧縮/伸張方法を示している。
図12は、連長量lを含む配列Lを示している。
ここで、iは、この例では0〜31の値を有する。
連長量は、「0」の値の連続であって、その後に「1」の値の連続(run)が続く、「0」の値の連続のサイズを指定する。
未圧縮テーブルにおける長さrの「0」の値の所与の連続に対して、量子化関数Q(r)は、連長量lが、Lにおいてr以下の最大量となるように、連長量lを選択する。
続いて、未圧縮テーブルからの次の一連のli+1個の値は、これらli+1個の値を、配列Lの量lのインデックスと置き換えるによって圧縮される。
量lのインデックスが伸張される場合、そのインデックスは、今度は、l個の「0」の値の連続およびその後に続く(li+1−l)個の「1」の値の連続によって置き換えられる。
より効率的な圧縮は、量子化された連長の可変長符号化を使用することにより得ることができる。
図13は、短い例のビット列の連長量子化圧縮を示している。
図13では、短い例のビット列1302が、圧縮ビット列1304に圧縮され、次に、圧縮ビット列1304が、伸張ビット列1306に伸張される。
第1ステップでは、1個の「0」の値の初期連続1308が、5ビットのインデックス1310に圧縮される。
この圧縮は、量子化関数Qをこの連長「1」に適用して、lを、長さ1の連続に対応する量と特定することにより行われる。
これは、単一の「0」の値およびその後に続く(l−l)個、すなわち1個の「1」の値を意味する。
もちろん、この最初のlに基づく圧縮は、実際には拡張されて、実際のシステムでは、一般に使用されないであろう。
次のステップでは、「0」の値1312で開始する10個の「0」の値の連続が、lに対応するL配列のインデックス「4」1314に置き換えられる。
これは、10個の「0」の値の連続およびその後に続く(l−l)個、すなわち4個の「1」の値の連続を意味する。
最後に、12個の「0」の値の連続も、lに対応するL配列のインデックス「4」1318に置き換えられる。
伸張には、それぞれのL配列のインデックスiを特定することと、そのL配列のインデックスを、l個の「0」の値およびその後に続く(li+1−l)個の「1」の値に置き換えることが必要となる。
図13に示すように、歪みが発生することがある。
伸張ビット列1306の「1」の値1320〜1324は、未圧縮ビット列1302ではもともと「0」の値であったものである。
このように、連長量子化は、ベクトル量子化の場合と同様に、非対称歪みを有する非可逆圧縮を意味する。
欠陥のないブロックの連長rが、確率分布p(r)に従ってランダムに発生する場合、分割
Figure 0003978195
を使用することにより生成される、正常なセクタが不良セクタと誤ってラベル付けされる平均率または予想率は、次の式に比例する。
ここで、Cは、k個の区間C=[l,…,li+1−1]の1つを表す。
Figure 0003978195
上記数式において、pは、欠陥のあるセクタの予想率である。
最適な分割は、その問題を、有向グラフの最短経路を見つける問題に変形することにより見つけることができる。
グラフのあらゆる頂点は、可能なセルの境界を表す整数によってラベル付けされる。
頂点iは、あらゆる頂点j>iにエッジei,jによって接続される。
このエッジei,jは、予想される歪み全体に対するそのセルの寄与によってラベル付けされるセル[i,j−1]を表すものである。
このグラフで可能な最短経路を見つけることは、最小コストの区画を見つけることと等価であり、したがって、量子化連長圧縮/伸張方法の最適量を見つけることと等価である。
この設計アルゴリズムは、量子化された連続(run)を固定長符号化する場合にのみ機能するが、区画にまたがる各エッジのコストに−λp(C)log(p(C))を取り入れることにより、可変長符号化に拡張することができる。
ここで、p(C)は、区画Cに実現されないrについてのp(r)の総和である。
図14および図15は、説明した本発明の実施の形態の1つを取り入れたメモリを提供するための方法の概要をフロー制御図の形式で提供する。
図14は、説明した本発明の実施の形態の1つに従って圧縮された欠陥データ記憶位置テーブルを取り入れたメモリを提供するための一般的な方法を示している。
ステップ1402で、欠陥データ記憶位置テーブルが構築される。
上述したように、欠陥データ記憶位置テーブルには、各ビットがデータ記憶位置を表すビットマップの実施態様が便利である。
データ記憶位置は、例えば、ディスクブロックであってもよいし、ディスクセクタであってもよく、別の例としては、ナノワイヤベースのメモリの1つまたは2つ以上のナノワイヤ配列接合であってもよい。
ステップ1404で、欠陥データ記憶位置テーブルは、非可逆圧縮技法、例えば上述した非可逆圧縮技法の1つを使用して圧縮される。
本発明に関して、非可逆圧縮技法には、例えば、1ビットを使用してディスクブロックではなくディスクセクタを表すといったように、欠陥データ記憶位置テーブルの粒度を単に変更することは含まれないことに留意されたい。
次に、ステップ1406〜1409を含むループで、論理データ記憶位置のアクセス要求に対する応答および処理が行われる。
ステップ1407では、要求された論理データ記憶位置に対応する物理データ記憶位置を決定するために、欠陥データ記憶位置テーブルの十分な部分が伸張され、この物理データ記憶位置を使用して、そのデータ記憶位置からデータの取り出し、または、そのデータ記憶位置へのデータの書き込みが行われる。
図15は、図14のステップ1404で起動される非可逆圧縮方法を示している。
ステップ1502で、初期コードブックが構築される。
この初期コードブックでは、上述したように、多数の区画のそれぞれに対して、コードワードが選択される。
ステップ1504で、ベクトルからなるベクトル空間が分割されて、最終的なコードブックが生成される。
欠陥データ記憶位置テーブルは、このベクトルに伸張される。
次に、ステップ1506〜1509を含むforループで、上述したように、欠陥データ記憶位置テーブルが、固定長ベクトルに伸張され、各固定長ベクトルに対して、そのベクトルを含むコードブックの区画のインデックスが、コードブックから取り出されて、圧縮テーブルに追加される。
本発明を、特定の実施の形態の観点で説明してきたが、本発明をこの実施の形態に限定することを意図するものではない。
本発明の精神の範囲内で変更があることは、当業者に明らかである。
例えば、上述したように、さまざまな欠陥メモリ位置テーブル圧縮/伸張方法の効率を比較するための性能指数を、数学的に作り直して、より大きな値を生成するのではなく、0により近い値、すなわちより大きさの小さな値を生成することにより、より大きな効率を示すものとすることができる。
制約を追加するか、または、異なる制約を含め、かつ、異なるパラメータについて効率を最大にすることにより、さまざまな別の性能指数を得ることができる。
ベクトル量子化方法および連長量子化方法は、多くの欠陥メモリ位置の分布に対して、非常に効率がよく、かつ、有益であることが分かるが、他の欠陥メモリ位置の分布に対しては、他の圧縮/伸張方法がより有益であると確認される場合がある。
これらの方法の変形は可能である。
この変形には、実施態様の変形、実施態様の用語およびスタイルの変形、境界条件の取り扱いの変形、コードブックの構造の変形、データ構造の変形、特定のビット値の意義および意味の変形、ならびにこのような多くの他の変形が含まれる。
一般に、各メモリ位置のアクセスには、アクセスされるメモリ位置の物理アドレスを決定するために、圧縮欠陥メモリ位置テーブルを伸張することが必要となる。
しかしながら、テーブルをセグメントで圧縮して、それらのセグメントへのインデックスを設けることが可能な場合があり、それによって、テーブル全体を伸張する必要なく、テーブルの関連部分のみを伸張することが可能となる。
上記説明は、説明のためのものであって、具体的な専門用語を使用して、本発明の十分な理解を提供した。
しかしながら、その具体的な詳細は、本発明を実践するために必要とされないことが当業者には容易に分かる。
本発明の具体的な実施の形態の上記説明は、例示および説明の目的で提供される。
それらの説明は、本発明を網羅することを意図するものでもなく、本発明を開示した正確な形に限定することを意図するものでもない。
多くの変更および変形が、上記教示に鑑みて可能であることは明らかである。
実施の形態は、本発明の原理およびその実際の用途を最もよく説明するために図示および説明されているので、他の当業者は、意図した特定の使用に適合するように、本発明およびさまざまな変更を有するさまざまな実施の形態を最もよく利用することができる。
本発明の範囲は、添付の特許請求の範囲およびその均等物によって画定されることが意図される。
3次元メモリの説明図である。 欠陥のあるメモリ位置を含むメモリ内、例えば図1に示すメモリ内で欠陥のないメモリ位置をアドレス指定する多数の可能な技法の1つを示す図である。 連長符号化技法を示す図である。 連長符号化技法を示す図である。 連長符号化技法を示す図である。 本発明の一実施の形態を表す欠陥メモリ位置ビットマップを圧縮するベクトル量子化方法を示す図である。 本発明の一実施の形態を表す欠陥メモリ位置ビットマップを圧縮するベクトル量子化方法を示す図である。 本発明の一実施の形態を表す欠陥メモリ位置ビットマップを圧縮するベクトル量子化方法を示す図である。 本発明の一実施の形態を表す欠陥メモリ位置ビットマップを圧縮するベクトル量子化方法を示す図である。 本発明の一実施の形態を表す欠陥メモリ位置ビットマップを圧縮するベクトル量子化方法を示す図である。 本発明の一実施の形態を表す欠陥メモリ位置ビットマップを圧縮するベクトル量子化方法を示す図である。 コードブックを構築するLBG技法のフロー制御図である。 本発明の一実施の形態におけるベクトル量子化欠陥メモリ位置テーブル圧縮および伸張用のコードブックを構築するために使用できる非対称歪みモデルLBGアルゴリズムのフロー制御図である。 本発明の一実施の形態を表す連長量子化圧縮/伸張方法を示す図である。 本発明の一実施の形態を表す連長量子化圧縮/伸張方法を示す図である。 説明した本発明の実施の形態の1つを取り入れたメモリを提供するための方法の概要のフロー制御図である。 説明した本発明の実施の形態の1つを取り入れたメモリを提供するための方法の概要のフロー制御図である。
符号の説明
302・・・欠陥メモリ位置ビットマップ、
304・・・ビットマップの圧縮版、
305〜307・・・空白ビット、
310・・・ビット列、
312・・・4ビット整数、
314・・・1ビット値「0」、
316・・・ビット列、
318・・・4ビット整数、
320・・・1ビット、
328・・・最初の6ビット、
330・・・未圧縮ビットマップ、
332・・・ビットマップの圧縮版、
402・・・欠陥メモリ位置ビットマップ、
404〜407・・・ビットベクトル、
502・・・ビットベクトル、
504・・・エンコーダ、
506・・・インデックスベクトル、
508・・・デコーダ、
510・・・ベクトル、
602・・・入力ベクトル、
604・・・インデックスベクトル、
700・・・テーブル、
702・・・ラベル、
704・・・列、
802・・・長方形、
804〜807・・・グループ(区画)、
811・・・コードワード、
902・・・入力ビットマップ、
904・・・ビットベクトル「0000」、
906・・・インデックスベクトル、
908・・・伸張ビットマップ、
912・・・ベクトル「0000」ビットベクトル、
914・・・ビットベクトル
916〜920・・・ビット、
1302・・・ビット列、
1304・・・圧縮ビット列、
1306・・・伸張ビット列、
1314・・・インデックス「4」、
1320〜1324・・・「1」の値、

Claims (6)

  1. 順序付けられた一連の欠陥のないデータ記憶位置(207)を提供する方法であって、
    欠陥データ記憶位置テーブル(201)を構築することと、
    欠陥のあるメモリ位置を歪ませない非対称歪みを生成する非可逆圧縮方法により、前記欠陥データ記憶位置テーブル(902)を圧縮欠陥データ記憶位置テーブル(906)に圧縮することと、
    データ記憶位置が、論理アドレスによりアクセスされる場合、該論理アドレスによりアドレス指定されるデータ記憶位置の物理位置を決定するために、前記圧縮欠陥データ記憶位置テーブル(908)の十分な部分を伸張することと
    を含む方法。
  2. 前記論理アドレスによりアドレス指定されるデータ記憶位置の物理位置を決定するために、前記圧縮欠陥データ記憶位置テーブルの十分な部分を伸張することは、
    前記圧縮欠陥データ記憶位置テーブルからインデックス(604)を抽出することと、
    抽出した各インデックスに対して、コードブック(802)において前記インデックスに関連したコードワード(810〜813)を、前記伸張された圧縮欠陥データ記憶位置テーブルに挿入することと
    とをさらに含む請求項1に記載の方法。
  3. 前記欠陥データ記憶位置テーブル(201)は、対応する物理データ記憶位置(110、112、114)が欠陥を有するかどうかを各ビットが示すビットマップを含み、
    前記欠陥データ記憶位置テーブルを前記圧縮欠陥データ記憶位置テーブルに圧縮することは、
    コードワード(810〜813)の組であって、各コードワードが、nビットの長さを有するビットベクトルである、コードワード(810〜813)の組を含む初期コードブック(802)を構築することと、
    分離した区画(804〜807)であって、各区画が、1つのコードワードを含み、1つの区画が、欠陥のあるメモリ位置を示すnビットの値を含むコードワード(810)を含む、分離した区画(804〜807)に入力ベクトルを分割することであって、それによって、コードブックを生成する、分離した区画(804〜807)に入力ベクトルを分割することと、
    前記欠陥データ記憶位置テーブルからnビットの長さを有する連続した入力ベクトルを抽出すること、かつ抽出した各入力ベクトルに対して、該抽出した入力ベクトルを含むコードブック区画内のコードワードのインデックス(604)を前記圧縮欠陥データ記憶位置テーブルに配置することと
    をさらに含む
    請求項1に記載の方法。
  4. 抽出した各入力ベクトルに対して、該抽出した入力ベクトルを含むコードブック区画内のコードワードのインデックスを前記圧縮欠陥データ記憶位置テーブルに配置することは、
    前記抽出した入力ベクトルを含む該コードブック区画(804〜807)を、
    テーブル参照、
    距離メトリックを使用して前記コードブック区画を計算すること、および、
    歪みメトリックを使用して前記コードブック区画を計算すること
    のうちの1つによって決定すること
    をさらに含み、
    前記コードワードの組を含むコードブックを構築することは、
    最初に選択されるコードワードの組が繰り返し変更される非対称歪みモデルLBGアルゴリズムを使用すること
    をさらに含み、
    総歪みは、各入力ベクトルの各区画のコードワードについて、該区画内の歪みの総和として計算され、
    入力ベクトル
    Figure 0003978195
    とコードワードxとの間の歪みDは、
    Figure 0003978195
    とすると、非対称歪み
    Figure 0003978195
    として求められる
    請求項3に記載の方法。
  5. 前記欠陥データ記憶位置テーブル(201)を圧縮することは、
    長さrの同一のビット値の連続に対して、量の順序付けられた組L内で位置iの増加と共に大きさが必ず増加する該量の順序付けられた組Lからr以下の最大の量を返す量子化関数Qを提供することと、
    jの初期値を0に等しくして、前記欠陥データ記憶位置テーブル内の位置jから開始する前記欠陥データ記憶位置テーブルから、同一の値を有するビットの連続を連続的に抽出することであって、
    抽出した同一の値を有するビットの各連続に対して、
    前記量子化関数Qを前記抽出した連続の長さに適用することであって、それによって、該連続の該長さに対応する量lを選択する、前記量子化関数Qを前記抽出した連続の長さに適用することと、
    前記インデックスiを前記圧縮欠陥データ記憶位置テーブルに配置することと、
    jをli+1の位置だけ進めることと
    を行う同一の値を有するビットの連続を連続的に抽出することと
    をさらに含む
    請求項2に記載の方法。
  6. 前記欠陥データ記憶位置テーブル(201,207,402)は、
    それぞれのビットが、欠陥がない物理メモリ位置の値または欠陥がある物理メモリ位置の値を有することにより、対応する物理データ記憶位置に欠陥があるかどうかを示すビットマップ
    を含み、
    前記欠陥データ記憶位置テーブルを前記圧縮欠陥データ記憶位置テーブルに圧縮することは、
    コードワードの組であって、各コードワードが、nビットの長さを有するビットベクトルである、コードワードの組を含むコードブック(700)を構築することであって、前記コードワードのビットは、その位置が表す入力ベクトルが、欠陥がある物理メモリ位置の値を有するビット位置のいずれにおいても、欠陥がないメモリ位置の値を有さないコードブックを構築すること
    を含む
    請求項1に記載の方法。
JP2004109741A 2003-04-30 2004-04-02 記憶デバイスの欠陥リストの長さを最小にする方法およびシステム Expired - Fee Related JP3978195B2 (ja)

Applications Claiming Priority (1)

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

Publications (2)

Publication Number Publication Date
JP2004334846A JP2004334846A (ja) 2004-11-25
JP3978195B2 true JP3978195B2 (ja) 2007-09-19

Family

ID=33310173

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004109741A Expired - Fee Related JP3978195B2 (ja) 2003-04-30 2004-04-02 記憶デバイスの欠陥リストの長さを最小にする方法およびシステム

Country Status (3)

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

Families Citing this family (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2475186C (en) * 2003-07-17 2010-01-05 At&T Corp. Method and apparatus for windowing in entropy encoding
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
US9430390B2 (en) 2013-09-21 2016-08-30 Oracle International Corporation Core in-memory space and object management architecture in a traditional RDBMS supporting DW and OLTP applications
US9720769B2 (en) 2014-12-03 2017-08-01 Sandisk Technologies Llc Storage parameters for a data storage device
US10025822B2 (en) 2015-05-29 2018-07-17 Oracle International Corporation Optimizing execution plans for in-memory-aware joins
US10061832B2 (en) 2016-11-28 2018-08-28 Oracle International Corporation Database tuple-encoding-aware data partitioning in a direct memory access engine
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
US10061714B2 (en) 2016-03-18 2018-08-28 Oracle International Corporation Tuple encoding aware direct memory access engine for scratchpad enabled multicore processors
US10402425B2 (en) 2016-03-18 2019-09-03 Oracle International Corporation Tuple encoding aware direct memory access engine for scratchpad enabled multi-core 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
CN117639792B (zh) * 2023-11-27 2024-07-26 浙江大学 一种基于码表聚类的深度学习模型压缩方法

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
US20040221192A1 (en) 2004-11-04
US7013378B2 (en) 2006-03-14
DE102004003353A1 (de) 2004-12-09

Similar Documents

Publication Publication Date Title
JP3978195B2 (ja) 記憶デバイスの欠陥リストの長さを最小にする方法およびシステム
US5870036A (en) Adaptive multiple dictionary data compression
US5488365A (en) Method and apparatus for compressing and decompressing short blocks of data
JP3785444B2 (ja) コンピュータ・メモリ内の情報量を増加させるための方法
JP3225638B2 (ja) データを圧縮するための装置及び方法並びにデータ処理システム
JP4261779B2 (ja) データ圧縮装置および方法
US5175543A (en) Dictionary reset performance enhancement for data compression applications
KR101049699B1 (ko) 데이터의 압축방법
KR20130029080A (ko) 소거 없는 플래시 메모리의 다중 프로그래밍
JPH0682370B2 (ja) 文字処理装置
KR100484137B1 (ko) 개선된 허프만 디코딩 방법 및 장치
US5815096A (en) Method for compressing sequential data into compression symbols using double-indirect indexing into a dictionary data structure
CA2770348A1 (en) Compression of bitmaps and values
CN114342264A (zh) 多符号解码器
Rahman et al. A novel lossless coding technique for image compression
CN118132911A (zh) 图计算中稀疏矩阵向量乘的自适应方法与装置
CN113487025B (zh) 面向神经网络检查点数据的智能压缩存储方法和系统
CN115472232A (zh) 一种基于分类算法的dna数据存储动态压缩方法
CN116529705A (zh) 利用计算机存储器中的值相似性的系统、方法和装置
JP2021149389A (ja) メモリシステム
CN117950916B (zh) 高可靠性数据备份方法与系统
JP2024046000A (ja) 圧縮装置及び圧縮方法
US11119702B1 (en) Apparatus for processing received data
CN113708780B (zh) 一种基于shadow的部分重复码构造方法
CN117200805B (zh) 一种mcu的低内存占用的压缩和解压方法及装置

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20061026

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20061030

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20070125

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20070130

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070501

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20070528

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20070622

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100629

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100629

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110629

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120629

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130629

Year of fee payment: 6

LAPS Cancellation because of no payment of annual fees