(57)【要約】【課題】  記憶装置の用途や製造上の欠陥レベルを考慮して適切な方式の誤り訂正符号を記憶装置にインストールする手段および方法を提供すること。【解決手段】  固体記憶装置（１０２）および誤り訂正符号（ＥＣＣ）選択システム（１００）からなる、固体記憶装置を構成するためのシステム（９０）。該ＥＣＣ選択システムは、記憶装置の誤り率に基づいて誤り訂正符号のセットを自動的に選択するように構成される。該ＥＣＣ選択システムは、選択された誤り訂正符号のセットを固体記憶装置にインストールするようにさらに構成される。【選択図】図１
2005216301.tif 000002
【特許請求の範囲】
【請求項１】
固体記憶装置を構成する方法であって、
固体記憶装置（１０２）の誤り率を示す値を判定するステップと、
前記値に基づいて誤り訂正符号のセットを選択するステップと、
選択された前記誤り訂正符号のセットを固体記憶装置にインストールするステップと
からなる方法。
【請求項２】
前記選択するステップは、前記固体記憶装置の意図された用途に基づいて実施される、請求項１に記載の方法。
【請求項３】
前記値を所定の閾値と比較するステップをさらに含み、
前記選択するステップは前記比較に基づいて実施される、請求項１に記載の方法。
【請求項４】
前記記憶装置の劣化速度を示す値を判定するステップと、
前記劣化速度を示す値を閾値と比較するステップとをさらに含み、
前記選択するステップは前記比較に基づいて実施される、請求項１に記載の方法。
【請求項５】
固体記憶装置を構成するシステム（９０）であって、
固体記憶装置（１０２）と、
前記固体記憶装置の誤り率に基づいて誤り訂正符号のセットを自動的に選択するように構成され、選択された前記誤り訂正符号のセットを前記固体記憶装置にインストールするようにさらに構成された誤り訂正符号（ＥＣＣ）選択システム（１００）と
からなるシステム。
【請求項６】
前記ＥＣＣ選択システムは、前記記憶装置の意図された用途を示す情報を受け取り、該情報に基づいて前記誤り訂正符号のセットを選択するようにさらに構成される、請求項５に記載のシステム。
【請求項７】
前記ＥＣＣ選択システムは、前記誤り率を示す値を判定し、該値を所定の閾値と比較するように構成される、請求項５に記載のシステム。
【請求項８】
前記ＥＣＣ選択システムは、前記記憶装置の劣化速度に基づいて前記誤り訂正符号のセットを選択するように構成される、請求項５に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は概してデータ記憶装置に関し、詳しくは、誤り訂正符号を有する固体記憶装置を構成するシステムおよび方法に関する。
【背景技術】
【０００２】
固体記憶装置は一般に、データを記憶するための１以上の記憶セルアレイを含む。既存の半導体技術によれば、ＤＲＡＭ（ダイナミックランダムアクセスメモリ）のような比較的短期間のデータ記憶に適した揮発性固体記憶装置も、あるいはＳＲＡＭ（スタティックランダムアクセスメモリ）、不揮発性フラッシュメモリデバイス、ＥＥＰＲＯＭデバイスのような比較的長期間のデータ記憶に適した装置も得ることができる。
【０００３】
新たなタイプの不揮発性固体記憶装置として磁気抵抗記憶装置が開発された。磁気抵抗固体記憶装置は磁気ランダムアクセスメモリ（ＭＲＡＭ）デバイスとも呼ばれる。ＭＲＡＭデバイスは電力消費が比較的少なく、アクセス時間も比較的短く、特にデータ書込み処理の際のアクセス時間が短いので、短期間の記憶用途と長期間の記憶用途のどちらにも非常に適している。
【０００４】
ＭＲＡＭデバイスは、物理的損傷を受けやすく、その結果記憶されたデータが許容できないほど失われる可能性があるという点に問題がある。ＭＲＡＭデバイス内の物理的故障を引き起こす原因には、非常に様々なものがある。例えば、製造上の欠陥、読出し処理の際の雑音のような内的要因、温度や周囲の電磁雑音のような環境要因、使用によるデバイスの経年劣化などである。一般に故障は、系統的故障と偶発的故障のどちらかに分類される。系統的故障は、常に特定の記憶セルまたは特定の記憶セル群に発生する故障である。偶発的故障は、一時的に発生する故障であり、同じ箇所に繰り返し発生することはない故障である。系統的故障は、製造上の欠陥や経年劣化によって発生することがある。偶発的故障は、内的要因や外部の環境要因によって発生する。
【０００５】
ＭＲＡＭデバイスに現在利用可能な製造技術には限界があるため、ＭＲＡＭデバイスの製造歩留まりは比較的低い。もっと優れた製造技術も開発されているが、そうした製造技術は、製造上の複雑さやコストを増大させるものが多い。また、シリコン等の基板上に形成されるセルの密度を高めることも必要とされているが、密度を増大させると製造公差の制御はますます困難になり、誤り率が高くなるため、デバイスの歩留まりは低下する。
【発明の開示】
【発明が解決しようとする課題】
【０００６】
現在、記憶精度に影響を与える製造上の欠陥を修復するためにメモリで実施されている誤り訂正符号のサイズは、メモリの意図された精度や意図された用途に関係なく１つの所定サイズである。この１つの所定サイズは通常、ＥＣＣで可能な最も強力なレベルである。しかしながら、ＭＲＡＭデバイスの実際の欠陥レベルを考慮しないと、許容される精度のデバイスを得るために必要とされるレベルよりも高いレベルの訂正能力（「能力レベル」）を有する誤り訂正符号がＭＲＡＭデバイスにインストールされ、使用される場合がある。同様に、誤り訂正符号をインストールする前にＭＲＡＭデバイスの意図された用途を考慮しないと、その用途に必要とされるレベルよりも高い精度レベルを有する誤り訂正符号が実施される場合がある。過剰な訂正能力を有する（必要以上に高い「能力レベル」の）ＥＣＣを使用すると、そのＥＣＣを使用したデバイスによって、マシンの動作速度が不必要に低下させられ、そのデバイスを取り付けたマシンを動作させるために、さらに多くの電力が必要になる場合がある。
【課題を解決するための手段】
【０００７】
本開示は、誤り訂正符号を有する固体記憶装置を構成するシステムおよび方法に関する。
【０００８】
本開示の一実施形態によるシステムは、固体記憶装置と、誤り訂正符号（ＥＣＣ）選択システムとを含む。ＥＣＣ選択システムは、固体記憶装置の誤り率に基づいて誤り訂正符号のセットを自動的に選択するように構成される。ＥＣＣ選択システムは、選択された誤り訂正符号のセットを固体記憶装置にインストールするようにさらに構成される。
【０００９】
本発明の実施形態は、図面を参照すると理解しやすい。図面の構成要素は必ずしも一定の比率で拡大縮小されているわけではなく、本発明の原理を分かりやすく例示するために強調されている場合もある。
【発明を実施するための最良の形態】
【００１０】
開示する装置、システムおよび方法を使用すると、適当な誤り訂正符号（ＥＣＣ）を選択し、それを固体記憶装置にインストールして使用することができる。固体記憶装置を誤り訂正符号とともに使用することで、固体記憶装置の製造時の誤りや経時劣化による誤りの影響を低減することができる。本明細書に記載するように、本発明は、固体記憶装置と、固体記憶装置の意図された用途との両方について様々な情報を分析することにより、適当な誤り訂正符号を選択することができる。
【００１１】
ここで図面を参照する。全図面を通して同じ参照符号は対応する構成要素であることを示している。図１は、記憶装置構成システム９０の一実施形態を示す概略図である。図１に示すように、システム９０はＥＣＣ選択システム１００を含む。ＥＣＣ選択システム１００は、記憶装置１０２と通信し、該記憶装置１０２とともに使用される。また、ＥＣＣ選択システム１００は、選択されたＥＣＣとともに使用される記憶装置１０２の用途に対応する情報１０４を受け取ることができる。
【００１２】
図２は、ＥＣＣ選択システム１００の一実施形態の少なくとも一部を実施する処理システム２０２を示す概略図である。ＥＣＣ選択システム１００は、ソフトウェア、ファームウェア、ハードウェアのいずれで実施することもでき、それらの組合せとして実施してもよい。ＥＣＣ選択システム１００をソフトウェアで実施する場合、ＥＣＣ選択システム１００は、図２の概略図に示すような処理システム２０２によって実行可能なプログラムとして実施することができる。
【００１３】
図２の処理システム２０２は通常、ハードウェアアーキテクチャとしてプロセッサ２０４と、メモリ２０６と、１以上の入出力（Ｉ／Ｏ）デバイス２０８（または周辺装置）とを有し、それらがローカルインタフェース２１０を介して通信可能に接続される。ローカルインタフェース２１０は、たとえば１以上のバスであってもよいし、有線や無線の接続であってもよい。ローカルインタフェース２１０は、追加要素を含む場合もあるが、説明を簡単にするためにそれらは省略する。そうした追加要素としては、たとえば、コントローラ、バッファ（キャッシュ）、ドライバ、リピータ、および／またはレシーバなどがある。また、ローカルインタフェース２１０は、システム２０２のコンポーネント間の適切な通信を可能にするために、アドレス線、制御線、および／またはデータ線を含む場合がある。
【００１４】
プロセッサ２０４は、メモリ２０６に格納されたソフトウェアを実行するように構成されたハードウェアデバイスである。プロセッサ２０４は、任意のカスタムメイドの、または市販のプロセッサ、中央処理装置（ＣＰＵ）、あるいは複数のプロセッサ間の補助プロセッサなどであってよい。
【００１５】
メモリ２０６には、揮発性記憶要素（たとえば、ランダムアクセスメモリ（ＤＲＡＭ、ＳＲＡＭ等のＲＡＭ））と、不揮発性記憶要素（たとえば、ＲＯＭ、ハードドライブ、テープ、ＣＤＲＯＭ）とがあり、あるいはそれら両方であってもよい。さらに、メモリ２０６には、電子、磁気、光および／または他のタイプの記憶媒体も含まれる。なお、メモリ２０６は分散アーキテクチャにすることもでき、その場合、さまざまなコンポーネントを互いに離れたところに配置し、プロセッサ２０４からそれらのコンポーネントにアクセスできるようにする。
【００１６】
メモリ２０６のソフトウェアは１以上の個別のプログラムを含むこともできる。その場合、各プログラムは、論理機能を実現するための実行可能命令を順番に並べたリストを含む。メモリ２０６に格納されるソフトウェアには、ＥＣＣ選択システム１００と、適当なオペレーティングシステム（Ｏ／Ｓ）２１２とがある。オペレーティングシステム２１２は、ＥＣＣ選択システム１００等の他のコンピュータプログラムの実行を制御する。オペレーティングシステム２１２は更に、スケジューリング、入出力制御、ファイルやデータの管理、メモリの管理、通信の制御、および関連サービスなどを実施することもできる。
【００１７】
Ｉ／Ｏデバイス２０８（複数の場合もあり）には、たとえばキーパッドおよび／または受信機等の入力デバイスがある。また、Ｉ／Ｏデバイス２０８には、たとえば表示装置および／または送信機等の出力デバイスも含まれる。更に、Ｉ／Ｏデバイス２０８には、たとえばネットワーク通信ポートのような入力と出力の両方の通信を行なうように構成されたデバイスも含まれる。
【００１８】
プロセッサ２０４は、システム２０２の動作時に、メモリ２０６に格納されたソフトウェアを実行し、メモリ２０６に対して双方向にデータをやりとりして、コンピュータ２０２の動作全体を制御するように構成される。プロセッサ２０４は、ＥＣＣ選択システム１００およびＯＳ２１２の一部または全部を読出して、それらを大抵はプロセッサ２０４内にバッファリングして実行する。
【００１９】
ＥＣＣ選択システム１００をソフトウェアで実施する場合、ＥＣＣ選択システム１００は、いかなるコンピュータ関連システムまたは方法で使用される、あるいはそれらに関連して使用される、いかなるコンピュータ読取可能媒体に格納してもよい。本明細書におけるコンピュータ読取可能媒体とは、コンピュータ関連システムまたは方法で使用される、あるいはそれらに関連して使用されるコンピュータプログラムを格納することが可能な、電気的、磁気的、光的、または物理的なデバイスあるいは手段を意味する。ＥＣＣ選択システム１００は、命令実行システム、機器または装置から命令をフェッチしてそれらの命令を実行することが可能なコンピュータを利用したシステム、プロセッサを内蔵するシステム、その他のシステムといった、命令実行システム、機器または装置で使用される、あるいはそれらに関連して使用される、いかなるコンピュータ読取可能媒体に入れて実施してもよい。
【００２０】
本明細書で使用される「コンピュータ読取可能媒体」とは、命令実行システム、機器または装置で使用される、あるいはそれらに関連して使用される情報プログラムを格納し、通信し、伝達し、若しくは運搬することが可能な任意の手段であってよい。したがって、コンピュータ読取可能媒体には、限定はしないが、例えば、電気、磁気、光、電磁気、赤外線、または半導体のシステム、機器、装置または伝達媒体などがある。なお、コンピュータ読取可能媒体はプログラムを印刷した紙などの適当な媒体であってもよい。なぜなら、印刷されたプログラムは紙などの媒体を光学的にスキャンすることによって電気的に取り込むことができ、必要に応じてコンパイルまたはインタープリットなどの適当な処理を施した後、コンピュータのメモリに格納することができるからである。
【００２１】
ＥＣＣ選択システム１００をハードウェアで実施する場合、ＥＣＣ選択システム１００は、様々な技術のうちのいずれを用いて実施してもよいし、あるいはそれらの組合せを用いて実施してもよい。例えば、当該技術分野で周知の下記のような技術が使用される。
・データ信号に対する論理演算機能を実施する論理ゲートを有するディスクリート論理回路
・適当な組合せ論理ゲートを有する特定用途向け集積回路（ＡＳＩＣ）
・プログラマブルゲートアレイ（ＰＧＡ）
・フィールドプログラマブルゲートアレイ（ＦＰＧＡ）
【００２２】
図３のブロック３０２に示すように、ＥＣＣ選択システムは、記憶装置２０２または他のコンポーネントから記憶装置１０２の用途に関する情報１０４を受け取る。ブロック３０４において、ブロック３０２で受け取った情報の少なくとも一部に基づいて、適当なＥＣＣを選択する。たとえば受け取った情報が、重度の欠陥を有する記憶装置１０２が製造されたことや、時間の経過により記憶装置１０２が劣化して重度の欠陥が現れたことや、記憶装置１０２とともに実行されるアプリケーションが高い精度を必要とすることなどを示すものであった場合、非常に強力（頑強）なＥＣＣを選択する。ブロック３０６において、ＥＣＣ選択システム１００は、選択されたＥＣＣのインストールを可能にする。
【００２３】
図４を参照して、ＭＲＡＭデバイスの例４００について説明する。本発明の一実施形態で使用されるＥＣＣ選択方法は、装置ごとに異なる物理的故障を考慮して、その物理的故障の影響を低減するとともに、所望の誤り訂正を実現するためのメモリや電力の使用量を最小限に抑えることを目的としている。ＥＣＣ選択は、ユーザが意図するＭＲＡＭデバイスの用途をさらに考慮して実施してもよい。
【００２４】
図４のＭＲＡＭデバイス４００は、記憶セル４０４のアレイ４０２を含む。アレイ４０２は、ＥＣＣ符号化・復号ユニット４０８を含むコントローラ４０６に接続される。ＥＣＣ符号化・復号ユニット４０８は、他の制御要素に含まれる場合もある。動作中、ユニット４０８は、後で詳しく説明するように、ＥＣＣ選択システム１００（図１）によって選択されインストールされたＥＣＣを用いて誤り訂正を実施する。コントローラ４０６とアレイ４０２は、同じ１つの基板上に形成してもよいし、別々に配置してもよい。本願と同じ譲受人に譲渡された米国特許第６，１６９，６８６号は、本発明の実施形態で使用するのに適した磁気抵抗固体記憶装置の一例を開示している。
【００２５】
一実施形態において、アレイ４０２は約１０２４×１０２４個の記憶セル４０４を含む。ただし、アレイ４０２は、任意数の記憶セル４０４を含むことができるものと解釈しなければならない。図４は、そのうちのごく一部を示している。各記憶セル４０４は、制御ライン４１０と制御ライン４１２の交点に形成される。この例では、制御ライン４１０が行に配置され、制御ライン４１２が列に配置されている。この例では制御ライン４１０と制御ライン４１２とが互いにほぼ直交になっているが、もっと複雑な格子構造にしてもよい。行ライン４１０および列ライン４１２は、複数の読出し／書込み制御回路を含む制御回路４１４に接続される。実施形態に応じて、たとえば、各列について１個の読出し／書込み制御回路を設ける場合もあれば、複数の列間で読出し／書込み制御回路を多重化、すなわち共有する場合もある。
【００２６】
書込み処理や読出し処理のようにデバイスにアクセスする際には、制御回路４１４により１本の行ライン４１０と１以上の列ライン４１２とを選択し、所望の記憶セル４０４（複数の場合もあり）にアクセスする（アレイの向きによっては、逆に１本の列ラインと１以上の行ラインを選択する場合もある）。セル間の干渉を最小限に抑えるために、ＭＲＡＭデバイスは、選択される列ライン４１２間に最小間隔ｍ（例えば６４個の記憶セル分）を有する場合もある。各アレイ４０２の行の長さがｌ（例えば１０２４個の記憶セル分）であるものとすれば、アレイ４０２の中から、最大でｌ／ｍ＝１０２４／６４＝１６個までの一意にアドレス指定可能なセルを同時にアクセスすることができる。
【００２７】
各記憶セル４０４は、数値を表す１ビットのデータを格納する。数値とは、例えば０や１といった２進値である。各記憶セルは２枚の薄膜を含み、それらの薄膜の向きは常に、平行および反平行と呼ばれる２つの安定した磁化の向きのうちのいずれか一方をとる。この磁化の向きは、記憶セル４０４の抵抗値に影響を与える。記憶セル４０４が反平行状態であるとき、その抵抗値は最大になり、記憶セル４０４が平行状態であるとき、その抵抗値は最小になる。抵抗値の高い反平行状態は論理状態「０」を規定し、抵抗値の低い平行状態は論理状態「１」を規定する。あるいは、その逆でもよい。一実施形態において、各記憶セル４０４の抵抗値はスピントンネル現象と呼ばれる現象によって判定され、セルは磁気トンネル接合記憶セルと呼ばれる。記憶セルの状態の判定は、センス電流（センス電流は抵抗値に比例する）を測定したり、既知の静電容量を放電するのに要する応答時間（この応答時間から各記憶セル４０４に関する１以上のパラメタ値が得られる）などの関連パラメタを測定することによって行われる。そして、得られた１以上のパラメタ値から、論理値を算出する。ＭＲＡＭデバイス４００の性質や構造に応じて、読出し処理は、複数のステップを含む場合もあれば、読出し動作と再書込み動作の組み合わせを必要とする場合もある。
【００２８】
図５は、ＭＲＡＭデバイスの一実施形態の詳細を示す。マクロアレイ５００は、非常に多数のアレイ４２０から形成される。各アレイ４２０は、図４に関して上で説明したものと同様にして形成される。各アレイ４０２は、ＭＲＡＭデバイスにとって、小型のデータ記憶装置として働く。簡単にするために、図５には、マクロアレイの一部しか図示していない。
【００２９】
各アレイ４０２は、複数の層として形成することもできる。図４の例では、４つのアレイ４０２を層として積み重ねて、１つのスタックを形成している。１２８メガバイトの元情報を記憶する能力を有するデバイスの例では、後で説明するような適当な符号化により、幅１６アレイ×高さ２０アレイの４層構成のマクロアレイを用いて、実際には１６０メガバイトの情報を格納することができる。また、ＭＲＡＭデバイスは、そのようなマクロアレイを２つ以上含む場合もある。
【００３０】
図５を参照して説明すると、ＭＲＡＭデバイス４００にアクセスする方法は、複数のアレイ４０２のそれぞれについて１つの行４１０を選択するステップと、複数のアレイ４０２のそれぞれについて複数の列４１２を選択することにより複数の記憶セル４０４を選択するステップとからなる。複数のアレイ４０２のそれぞれにおいてアクセスされる記憶セル４０４は、１単位のデータのうちの小さな部分に対応する。アクセスされる各記憶セル４０４は、あわせて完全な１単位のデータになる。完全な１単位とは、例えば１セクタ単位全体や、１セクタ単位の少なくとも一部などである。各アレイ４０２は、実質的に同時にアクセスできるようにすることが望ましい。このようにすると、読出し処理や書込み処理の際のデバイスアクセス速度が向上する。このようなデバイスアクセスは、マクロアレイのスライスと呼ばれることもある。
【００３１】
図５に示すように、複数のアレイのそれぞれにおいて同じ行アドレスおよび同じ列アドレスを選択する。複数のアレイのそれぞれについて同じ行アドレスおよび同じ列アドレスを使用して、１単位のデータを複数のアレイにまたがって記憶する。
【００３２】
図５に示すように、アレイ４０２を層として積み重ねてスタックを形成する。各スタックにおいて１つのアレイだけを同時にアクセスするのが好ましい。複数のアレイを用いる場合、１セクタ単位のデータを異なるスタックに格納することができる（すなわち、同じスタックから複数のアレイが選択されることがなくなる）。また、同じ層にあるアレイ４０２をすべて選択することもできる。たとえば、各スタックの同じ層に存在する１つのアレイ４０２を選択することができる。図５の例では、各スタックの一番上に存在するアレイ４０２を選択している。
【００３３】
マクロアレイ５００に使用されるアレイ４０２の数は、そのデバイスに記憶されるデータの１セクタ単位のサイズに対応する。その場合、アレイ４０２内の同時にアクセス可能なセルの数が決まれば、デバイスの一層に存在する全てのアレイ４０２内のそれらのセルを用いて１セクタ単位のデータ全体が格納されるようにすることによって、アレイの総数が決まる。他の実施形態では、１セクタ単位の整数分の１（たとえば、１セクタ単位の１／２若しくは１／３若しくは１／４）のデータを同時にアクセスできるようにする場合もある。ただし、データを確実に記憶セル４０４に記憶するデバイスの能力に影響を与える故障が発生する可能性があることに注意して欲しい。一実施形態において、デバイス４００は、デバイス４００内の様々な選択されたセルに対して書込み処理および読出し処理を実施することにより、物理的故障による誤りが発生したか否かをテストすることができる。一実施形態では、セル４０４に論理値「１」等の既知の値を書き込む。再度セル４０４を読み出したときの論理値が「０」であった場合、テストしたセル４０４に欠陥が存在することが分かる。同様に、セル４０４に「０」を書込んだ後「１」が読み出された場合も、故障があることを示している。セル４０４の完全性を維持する必要度に応じて、セル４０４に一度だけ書き込みをして何回も繰り返し読み出す場合もあれば、読出しのたびに再書き込みする場合もある。本明細書では、セル４０４のテストを説明しているが、デバイスのテストは、セル４０４の行および／または列をテストすることによって行なうこともできる。
【００３４】
データの各ビットについて誤り訂正を行なう必要は無いこともある。ＭＲＡＭデバイスの記憶セルには任意の適当な論理レイアウトでデータを格納することが可能であるが、データを基本的な下位単位（たとえば、バイト）に編成した後、それをさらに大きな論理データ単位（たとえば、セクタ）にグループ化して格納することもできる。物理的故障は多数バイトに影響を与え、多数のセクタに影響を与えることがある。物理的故障によって影響を受ける小さな論理的下位単位（たとえば、バイト）のそれぞれについて情報を保持すると、必要になるデータ量が多くなるので、効率的でない場合がある。少なくとも１つの物理的故障によって使用不能になった全ての論理的単位についてリストを作成しようとすれば、非常に大量の管理データが生成され、効率的に処理することができなくなる。さらに、デバイス上でのデータの編成方法によっては、１つの物理的故障が多数の論理データ単位に影響を与えることもあり、故障の影響を受けた全てのバイト、セクタおよびその他の単位の使用を止めれば、デバイスの記憶容量は実質的に減少することになる。
【００３５】
本発明の一実施形態は、誤り訂正符号を用いて、誤りに耐性を持つ磁気抵抗固体記憶装置を提供する。好ましくは、偶発的故障と系統的故障の両方に耐性を持ち、それらの故障から復旧することができる磁気抵抗固体記憶装置を提供する。一般に、誤り訂正符号化は、格納すべき元情報を受け取るステップと、該元データを、誤りを特定することができ且つ理想的には訂正することもできる符号化データに符号化するステップとを含む。この符号化データは固体記憶装置に格納される。読出し時には、格納された符号化データの誤り訂正符号を復号することにより、元情報を復元する。様々なＥＣＣ方式を使用することができ、それらは単独で使用してもよいし、組み合わせて使用してもよい。それらの様々なＥＣＣ方式はそれぞれサイズが異なるため、それらを使用する装置に必要とされる能力や時間も違ってくる。適当なＥＣＣ方式には、シングルビットシンボルを用いた方式（たとえば、ＢＣＨ符号など）や、マルチビットシンボルを用いた方式（たとえば、リードソロモン符号など）がある。
【００３６】
図６は、ＭＲＡＭデバイス４０２（図４）へのデータの格納に使用される論理データ構造の例を示す。元情報６００は、５１２バイトのセクタ等の所定単位で受信される。誤り訂正符号化を実施して、ＥＣＣ符号化データ（この例の場合、符号化セクタ６０２）を生成する。符号化セクタ６０２は複数のシンボル６０６を含み、各シンボルは１ビットであってもよいし（たとえば、シングルビットシンボルを用いたＢＣＨ符号など）、複数ビットであってもよい（たとえば、マルチビットシンボルを用いたリードソロモン符号など）。図６に示すように、リードソロモン符号化方式の一例では、各シンボル６０６が８個のビットを含み、各符号化セクタ６０２が４個のコードワード６０４を含み、各コードワード６０４が約１４４〜１６０個のシンボルを含む。各シンボルに対応する８個のビットは、８個の記憶セル４０４に記憶され、シンボルグループと呼ばれる場合がある。それら８個の記憶セルのいずれかに直接または間接に影響を与える故障が発生すると、それらの記憶セルのうちの１以上が、読み出し不能になったり、信頼性を失ったりすることがある。
【００３７】
本発明の一実施形態では、マルチビットシンボルを用いたＥＣＣ方式を使用することもできる。製造プロセスやデバイス設計が時間の経過によって変化する場合、ビットエラーの発生が予測される記憶位置を編成して、１ビット記号のＥＣＣ方式を使用した方がよい場合もあり、その場合、下記の実施形態のうちの少なくとも幾つかをシングルビットシンボルに適用することができる。
【００３８】
格納されたＥＣＣ符号化データブロックの誤り訂正符号を復号することにより、破損したシンボル６０６を特定し、それを訂正することができる。復号処理は、ＥＣＣ符号化セクタ６０２のような各ＥＣＣ符号化データブロックについて独立に実施してもよいし、図示の実施形態のように各コードワード６０４について独立に実施してもよい。したがって、符号化セクタ６０２、または好ましくは各ＥＣＣワード６０４は、デバイスに格納される１単位のデータを形成する。
【００３９】
リードソロモン方式は、線形誤り訂正符号の一例であり、独立して復号可能な各ＥＣＣ符号化データブロックの中で、符号の能力に応じて決まる所定最大数までの破損シンボル６０６を数学的に完全に特定して訂正することができる。たとえば、１２８バイトの元情報に対応して各コードワードが１６０個の８ビットシンボルを含むコードワードを生成する、最小距離が３３シンボルの［１６０，１２８，３３］リードソロモン符号は、最大で１６個までのシンボル誤りを特定して訂正することができる。
【００４０】
ＥＣＣの格納に使用されるメモリ量を最小限に抑えるだけでなく、ＥＣＣの実行に必要とされる能力や時間も、最小限に抑えることが望ましい。したがって、様々な能力レベルのＥＣＣを使用することができる。一般に、能力レベルの高いＥＣＣは、能力レベルの低いＥＣＣに比べて広範囲の誤り訂正が可能である。実施すべきＥＣＣ能力レベルは、デバイス４００の故障の程度および／またはデバイス４００に必要とされる精度レベルによって決まる。
【００４１】
図７は、望ましい能力レベルのＥＣＣを判定する方法を示す。まずブロック７０２において、デバイス４００を選択する。デバイス４００は、例えば製造後に組立ラインから選択してもよいし、あるいはデバイス４００をインストールする末端製品のユーザが選択してもよい。また、デバイス４００の選択は、長期にわたって定期的にセルフテストを実行することによって行うこともできる。上記のように、デバイス４００は一般に、製造後にいくつかの欠陥を有することが多く、また、様々な原因によって劣化し、欠陥を生じる可能性もある。
【００４２】
ブロック７０４において、書込み・読出し処理等のような上記の方法で、または何らかの適当な方法で、デバイス４００に欠陥があるか否かをテストする。装置に欠陥があるか否かをテストすることにより、そのユニットの欠陥がどの程度のものであるかを判定することができる。したがって、欠陥の少ないデバイス４００すなわち所望の閾値以下の誤り率を有するデバイス４００を得るために、どの程度の誤り訂正符号が必要であるのかを判定することができる。また、デバイス４００のテストは、デバイス４００を定期的に使用することによって、本明細書で開示するような方法で実施してもよい。一実施形態では、１つのデバイス４００に対する一連のテスト結果を比較して、劣化速度を判定する。次いで、その劣化速度は、所望のＥＣＣ方式を選択する際の要素として使用される。また、テストを行なう代わりに、ブロック７０６において、ユニットの意図された用途を分析することもできる。
【００４３】
ブロック７０８において、所望の選択要素に基づいて、所与の能力レベル構成を有するＥＣＣ方式を選択する。テスト７０４によって相当数の欠陥を持つことが判明したデバイス４００は、比較的能力レベルの高いＥＣＣを必要とするのに対し、欠陥の少ないデバイス４００は、あまり強力なＥＣＣを必要としない。記憶装置４００の用途があまり険しくないものである場合、低レベルの誤り訂正で足りる。たとえば、デジタルカメラの画像の記憶に使用される記憶装置４００は、金融や保安の用途に使用される装置に比べて、低レベルの誤り訂正で足りる。ブロック７０８において、デバイスの欠陥、欠陥の変化や増加、および／または、ユニットの意図された用途などを考慮して、適当な能力レベルに構成された誤り訂正符号を選択する。必要以上の誤り訂正をシステムに行なわせることなく、必要レベルの誤り訂正を実施するＥＣＣを選択することが望ましい。所望のＥＣＣを選択し（７０８）、そのＥＣＣを記憶装置４００にインストールする（７１０）。インストールすべきＥＣＣの選択は、上記のような１以上の所定の基準に基づいてＥＣＣ選択システム１００によって自動的に実施されるようにしてもよいし、あるいは、ユーザが、記憶デバイス４００にインストールすべき所望のＥＣＣを示す入力を行って、インストールすべき所望のＥＣＣを手動で選択するようにしてもよい。
【００４４】
次に、所望のＥＣＣ能力レベルを選択するための方法をさらに分かりやすく説明するために、図２に示したＥＣＣ選択システム１００の使用および動作の例について説明する。例示のために、図４に示した記憶装置４００を、指定された閾値未満の誤り率であることが望ましい用途に使用する場合を仮定する。以下では、この指定された閾値のことを「Ｔerror」と呼ぶ。この閾値はＥＣＣ選択システム１００のメモリ２０６に格納しておくことができる。これに関し、ＥＣＣ選択システム１００は、様々な用途について所望の閾値を格納してもよい。後で詳しく説明するように、ＥＣＣ選択システム１００は、記憶装置４００の意図された用途に基づいて、該システム１００で使用される各記憶装置４００について格納された複数の閾値の中から１つの閾値を選択するように構成することもできる。
【００４５】
ＥＣＣ選択システム１００は、まず、記憶装置４００の意図された用途を示す情報を受け取る。ＥＣＣ選択システム１００は、その情報に基づいて、意図された用途に関連する閾値を取得する（すなわち、選択システム１００は、この例ではＴerrorを取得する）。さらに、ＥＣＣ選択システム１００は記憶装置４００をテストして、該記憶装置の実際の誤り率を判定する。そして、ＥＣＣ選択システム１００は、記憶装置４００の誤り率がＴerror以下になるようなＥＣＣ方式またはＥＣＣ能力レベルを選択する。
【００４６】
例として、ＥＣＣ選択システム１００は、実際の誤り率をＴerrorと比較する。実際の誤り率とＴerrorとの差が小さい場合、ＥＣＣ選択システム１００は第１のＥＣＣ方式を選択する。しかしながら、実際の誤り率とＴerrorとの差が大きい場合（たとえば、指定の閾値よりも大きい場合）、ＥＣＣ選択システム１００は、第１のＥＣＣ方式よりも強力な第２のＥＣＣ方式を選択する。実際には、ＥＣＣ選択システム１００は、各ＥＣＣ方式について起こり得る誤り率を推定し、誤り率がＴerror未満になるＥＣＣ方式を選択する。記憶装置４００の性能に対する影響を最小限に抑えるために、ＥＣＣ選択システム１００は、Ｔerror未満の誤り率を有するＥＣＣ方式の中から、最大の誤り率を有するものを選択してもよい。ただし、他の実施形態では、他の方法を実施して適当なＥＣＣ方式を選択する場合もある。たとえば、ＥＣＣ選択システム１００は、記憶装置４００の劣化が比較的大きい（たとえば、指定の閾値よりも大きい）ことを示す情報を受け取った場合、記憶装置４００に対して、さらに強力なＥＣＣ方式を選択してもよい。
【００４７】
上で述べたように、ＥＣＣ選択システム１００は、ＥＣＣ方式を選択した後、選択されたＥＣＣ方式を実施するためのＥＣＣのセットを記憶装置４００にインストールする。記憶装置４００の動作中は、インストールされたＥＣＣが、記憶装置４００内に発生する誤りを訂正し、記憶装置の実際の誤り率をＴerror未満に維持する。ただし、ＥＣＣ選択システム１００は、長期使用の後に記憶装置４００を再テストして、記憶装置の誤り率をＴerror未満に維持するためにさらに強力なＥＣＣ方式が必要であるか否かを判定するようにしてもよい。
【００４８】
比較的少数のコードワードにしか関係しない短絡ビット故障や開放ビット故障が存在する場合であっても、記憶装置４００の全体的誤り率に大きな影響を与えることがあるということに注意して欲しい。製造時に、あるいは使用中に定期的に、短絡ビット故障や開放ビット故障に関係するコードワードを検出し、それらのコードワードを以後使用しないようにすることにより、記憶装置の誤り率は大幅に低減される。上記の方法を実現する方法の詳細については、本願と同じ譲受人に譲渡された米国特許出願第２００３／００２３９２２Ａ１、第２００３／００２３９２５Ａ１、および第２００３／００２３９２８Ａ１に記載されている。
【００４９】
少なくとも欠陥に基づいて、あるいは記憶装置の意図された用途に基づいて、誤り訂正符号を選択する磁気抵抗固体記憶装置および方法について説明した。本記憶装置は、元データの損失を最小限に抑える動作をうまく維持ながらも、系統的故障と過渡的故障の両方について比較的多数の誤りに耐性を有する。比較的単純で低コストな製造方法を用いること、および／または、装置の歩留まりやデバイス密度を増加させることができる。普通ならばたった１つの故障によりデータブロック（たとえば、セクタやコードワードなど）全体が破棄される可能性がある場合であっても、誤り訂正符号による符号化／復号により、それらのデータブロックを使用しつづけることが可能になる。製造プロセスが改良されるのにつれて、欠陥セルの平均数は減少し、格納された符号化データの誤り訂正の際のオーバヘッドは低下し、同じオーバヘッドでも誤り率は低下する可能性がある。
【００５０】
上記の説明は図示説明の目的で提示したものである。上記の説明には、本発明の形態を網羅する意図も無ければ、本発明を厳密な形態に制限しようとする意図も無い。上記の示唆に鑑みて、様々な変更および変形を施すことが可能である。ただし、実施形態については、当業者が本発明を様々な実施形態で利用し、意図する用途に合わせて様々な修正を施すことができるように、本発明の例示的実施形態とその応用形態を選択して図示説明してある。
【図面の簡単な説明】
【００５１】
【図１】本発明によるＥＣＣ選択システムの一実施形態を示す概略図である。
【図２】ＥＣＣ選択システムの一実施形態を実施する処理システムを示す概略図である。
【図３】図２に示すＥＣＣ選択システムの実施形態の代表的機能を示すフロー図である。
【図４】記憶セルアレイを含むＭＲＡＭデバイスを示す概略図である。
【図５】図４のＭＲＡＭデバイスの詳細を示す図である。
【図６】図４のＭＲＡＭデバイスにデータを記憶するときに使用される論理データ構造を示す図である。
【図７】図４のＭＲＡＭデバイスでの使用に合わせて能力レベルが構成されたＥＣＣを選択するためのフロー図である。
【図１】
2005216301.tif 000003
【図２】
2005216301.tif 000004
【図３】
2005216301.tif 000005
【図４】
2005216301.tif 000006
【図５】
2005216301.tif 000007
【図６】
2005216301.tif 000008
【図７】
2005216301.tif 000009