(57)【要約】【課題】アドレス変換テーブルのエントリデータに誤り訂正符号を付与することなく、そのエントリデータに生じたビット異常の訂正を可能とする。【解決手段】半導体記憶装置２は、論理アドレスに対応する物理アドレスへの変換にかかるアドレス変換テーブル３１のエントリデータに付与された誤り検出符号をもとに、エントリデータに生じたビット異常を検出するアドレス変換テーブル異常検出部２１と、ビット異常が検出されたエントリデータに含まれる所定のビットを反転させたデータが、正常なエントリデータであるか否かを検査するエントリデータ検査部２２と、ビット異常が検出されたエントリデータを、検査された正常なエントリデータに置き換えるエントリデータ置換部２３と、を備える。【選択図】図１
2012063882.tif 000002
【特許請求の範囲】
【請求項１】
論理アドレスに対応する物理アドレスへの変換にかかるエントリデータに付与された誤り検出符号をもとに、当該エントリデータに生じたビット異常を検出する異常検出手段と、
ビット異常が検出された前記エントリデータに含まれる所定のビットを反転させたデータが、正常なエントリデータであるか否かを検査する検査手段と、
ビット異常が検出された前記エントリデータを、検査された正常なエントリデータに置き換える置換手段と、
を備える記憶装置。
【請求項２】
前記検査手段は、ビット異常が検出された前記エントリデータに含まれる各ビットを１ビットずつ順次反転させて検査し、
前記置換手段は、正常なエントリデータであると検査されたビットが１箇所である場合に、ビット異常が検出された前記エントリデータを、検査された正常なエントリデータに置き換える、
請求項１に記載の記憶装置。
【請求項３】
前記誤り検出符号はパリティビットである請求項１又は２に記載の記憶装置。
【請求項４】
前記検査手段は、ビット異常が検出された前記エントリデータに含まれる所定のビットを反転させたデータが予め設定された範囲の物理アドレスを示すエントリデータである場合に、所定のビットを反転させた前記データを正常なエントリデータであるとする、
請求項１乃至３のいずれか一項に記載の記憶装置。
【請求項５】
物理アドレス毎に、当該物理アドレスが有効であるか無効であるかを管理するアドレス管理手段を更に備え、
前記検査手段は、ビット異常が検出された前記エントリデータに含まれる所定のビットを反転させたデータが示す物理アドレスが有効な物理アドレスとして管理されている場合に、所定のビットを反転させた前記データを正常なエントリデータであるとする、
請求項１乃至４のいずれか一項に記載の記憶装置。
【請求項６】
物理アドレスで指定されるメモリ領域には、当該物理アドレスに対応した論理アドレスが格納され、
前記検査手段は、ビット異常が検出された前記エントリデータに含まれる所定のビットを反転させたデータが示す物理アドレスで指定されたメモリ領域から読み出した論理アドレスが、ビット異常が検出された前記エントリデータにかかる論理アドレスと一致する場合に、所定のビットを反転させた前記データを正常なエントリデータであるとする、
請求項１乃至５のいずれか一項に記載の記憶装置。
【請求項７】
請求項１乃至６のいずれか一項に記載の記憶装置を備えた電子機器。
【請求項８】
データを記憶する記憶装置で実行される誤りデータの訂正方法であって、
論理アドレスに対応する物理アドレスへの変換にかかるエントリデータに付与された誤り検出符号をもとに、当該エントリデータに生じたビット異常を検出するステップと、
ビット異常が検出された前記エントリデータに含まれる所定のビットを反転させたデータが、正常なエントリデータであるか否かを検査するステップと、
ビット異常が検出された前記エントリデータを、検査された正常なエントリデータに置き換えるステップと、
を具備する誤りデータの訂正方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、記憶装置、電子機器及び誤りデータの訂正方法に関する。
【背景技術】
【０００２】
近年、ＰＣ（Personal  Computer）等の電子機器に用いられる記憶装置として、不揮発性メモリであるフラッシュメモリ（フラッシュＥＥＰＲＯＭ）を搭載したＳＳＤ（Solid  State  Drive）が注目されている。電子機器側では論理アドレスでデータアクセスを行い、記憶装置側では物理アドレスでデータアクセスを行うことから、記憶装置は、論理アドレスを物理アドレスへ変換するアドレス変換テーブル（正引きテーブルとも言う）をフラッシュメモリのシステム領域などに保持している。電子機器で記憶装置のデータにアクセスする場合、記憶装置は、アドレス変換テーブルを参照して、電子機器から指示された論理アドレスに対応する物理アドレスへアクセスする。
【０００３】
記憶装置などに用いられるＤＲＡＭ（Dynamic  Random  Access  Memory）やフラッシュメモリなどのメモリ素子（以下、メモリ）では、静電気などによって、記録しているビットが反転するビット異常が稀に生じることがある。アドレス変換テーブルのエントリデータにビット異常が生じた場合は正常なデータアクセスが出来なくなることから、アドレス変換テーブルのエントリデータにはビット異常を検出するための誤り検出符号（ＥＤＣ：Error-Detecting  Code）と、ビット異常が生じた場合に訂正するための誤り訂正符号（ＥＣＣ：Error  Correcting  CodeまたはError  Control  Code）とが付与されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００８−１７１１６３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ところで、記憶装置のメモリは、年々大容量化と、ビット異常の生じる確率の低下とが進んでいる。メモリの大容量化に伴ってアドレス変換テーブルのエントリ数も増大し、誤り検出符号に比べてデータサイズの大きい誤り訂正符号のデータ量も無視できないものとなっている。ビット異常の生じる確率が年々低下しているとはいえ、アドレス変換テーブルのエントリデータに極稀に生じるビット異常は、エントリデータに付与された誤り訂正符号で訂正する以外の方法がなかった。
【０００６】
本発明は、上記に鑑みてなされたものであって、アドレス変換テーブルのエントリデータに誤り訂正符号を付与することなく、そのエントリデータに生じたビット異常の訂正を可能とすることを目的とする。
【課題を解決するための手段】
【０００７】
上述した課題を解決し、目的を達成するために、実施形態の記憶装置は、論理アドレスに対応する物理アドレスへの変換にかかるエントリデータに付与された誤り検出符号をもとに、エントリデータに生じたビット異常を検出する異常検出手段と、ビット異常が検出されたエントリデータに含まれる所定のビットを反転させたデータが、正常なエントリデータであるか否かを検査する検査手段と、ビット異常が検出されたエントリデータを、検査された正常なエントリデータに置き換える置換手段と、を備える。
【図面の簡単な説明】
【０００８】
【図１】図１は、半導体記憶装置の構成を示すブロック図である。
【図２】図２は、メモリ部のページを例示する概念図である。
【図３】図３は、アドレス変換テーブルのエントリデータを例示する概念図である。
【図４】図４は、有効ページビットマップのエントリデータを例示する概念図である。
【図５】図５は、半導体記憶装置の動作の一例を示すフローチャートである。
【図６】図６は、エントリデータの検査の一例を示す概念図である。
【図７】図７は、半導体記憶装置を搭載したパーソナルコンピュータの一例を示す斜視図である。
【図８】図８は、半導体記憶装置を搭載したパーソナルコンピュータのシステム構成例を示すブロック図である。
【図９】図９は、変形例にかかるアドレス変換テーブルを例示する概念図である。
【発明を実施するための形態】
【０００９】
以下に添付図面を参照して、本実施形態にかかる記憶装置、電子機器及び誤りデータの訂正方法を詳細に説明する。なお、本実施形態では記憶装置として、例えばＳＳＤ（Solid  State  Drive）に代表される、フラッシュメモリを搭載した半導体記憶装置を例示するが、記憶装置は論理アドレスを物理アドレスへ変換するアドレス変換テーブルを用いてデータアクセスを行うものであればＨＤＤ（Hard  Disk  Drive）であってもよい。
【００１０】
図１は、半導体記憶装置２の構成を示すブロック図である。半導体記憶装置２は、パーソナルコンピュータまたはデジタルカメラ等の電子機器１の内部に収納され、電子機器１の外部記憶装置として機能するエンベデッドタイプのメモリ等であってよい。また、半導体記憶装置２は、電子機器１において、電子機器１のＣＰＵ（Central  Processing  Unit）などのホスト３側に着脱可能に接続されるメモリカードであってもよい。
【００１１】
半導体記憶装置２は、フラッシュメモリ（フラッシュＥＥＰＲＯＭ）などの不揮発性半導体メモリであるメモリ部４０と、メモリコントローラ１０とを有する。メモリ部４０は例えばＮＡＮＤ型フラッシュメモリであり、単位セルである多数のメモリセル４１が、ビット線（図示せず）およびワード線４２の交点にマトリクス状に配置された構造を有している。メモリ部４０におけるデータ消去は、単位セル複数個からなる物理ブロック単位で行われ、メモリ部４０は複数の物理ブロックを備えている。メモリ部４０に対する書き込み／読み出しは、物理アドレスにより指定された物理ページ（以下、単にページと呼ぶ）単位に行われる。１つの物理ブロックは複数のページから構成されるので、ページのサイズは物理ブロックのサイズより小さい。
【００１２】
図２は、メモリ部４０のページＢＰを例示する概念図である。図２に示すように、メモリ部４０における一つのページＢＰには、ホスト３側で扱うことができる論理ブロックアドレス（ＬＢＡ、以下、論理アドレスと呼ぶ）が合計８つ配置される。図示例では、ＬＢＡ（ｎ）〜ＬＢＡ（ｎ＋７）の論理アドレスがページＢＰに配置されている。ページＢＰの各論理アドレスに対応するメモリ領域には、論理アドレスに対応して格納されるデータの他に、その論理アドレスと、ページ内のエラー訂正を行うためのページＥＣＣ（誤り訂正符号）とが格納されている。メモリ部４０のメモリ領域には、メモリコントローラ１０が用いるためのシステム領域と、ユーザが利用可能なユーザ領域とが予め確保されている。ホスト３で扱う論理アドレスによりアクセスされるページＢＰは、ユーザ領域内に配置される。
【００１３】
図１に示すように、メモリコントローラ１０は、制御部であるＣＰＵ２０と、ＤＲＡＭ３０と、Ｈｏｓｔ  Ｉ／Ｆ１２と、ＲＯＭ１３と、ＳＲＡＭ１４と、ＮＡＮＤ  Ｉ／Ｆ１５とを備え、これらがバス１１を介して接続されている。
【００１４】
Ｈｏｓｔ  Ｉ／Ｆ１２は、ＣＰＵ２０の制御のもと、ホスト３との間のデータ通信を制御するインタフェースである。ＲＯＭ１３は、各種プログラムや設定情報などを予め記憶する。ＳＲＡＭ１４は、ホスト３から指示されたコマンドを一時的に格納するコマンドキューなどの領域を提供する。ＮＡＮＤ  Ｉ／Ｆ１５は、ＣＰＵ２０の制御の下、ＮＡＮＤ型フラッシュメモリであるメモリ部４０へのアクセスを行う。
【００１５】
ＣＰＵ２０は、電源投入時にＲＯＭ１３より読み出されたプログラムを順次実行することで、半導体記憶装置２の動作を中央制御する。具体的には、ＣＰＵ２０は、電源投入時にメモリ部４０のシステム領域に格納されているアドレス変換テーブル３１、有効ページビットマップ３２を読み出してＤＲＡＭ３０へ展開する。次いで、ホスト３より論理アドレスを指定されたデータの読み出し／書き込み指示があった場合は、アドレス変換テーブル３１にエントリされたデータ（以下、エントリデータと呼ぶ）を参照することで、ホスト３より指定された論理アドレスに対応するページへのデータアクセスを制御する。また、ＣＰＵ２０は、上述した読み出し／書き込みに応じて有効ページビットマップ３２を更新し、メモリ部４０で現在使用されている有効なページを管理している。
【００１６】
図３は、アドレス変換テーブル３１のエントリデータを例示する概念図である。図３に示すように、アドレス変換テーブル３１は、論理アドレス（ＬＢＡ）からメモリ部４０のページを導くためのテーブルデータである。アドレス変換テーブル３１では、論理アドレスが８の倍数で順番に並んでおり、その８個分の論理アドレスに対応するページが定義されている。すなわち、一つのエントリで８個の論理アドレスに対応する１ページ分のアドレス変換が定義されている。例えば、ＬＢＡ（ｎ）〜ＬＢＡ（ｎ＋７）の間の論理アドレスには、対応するページＢＰが定義されている。
【００１７】
一つのエントリデータはビット番号が０〜３１の３２ビット（ｂｉｔ）で構成される。ビット番号の０〜５がページ番号、ビット番号の６〜１８が物理ブロックを示すブロック番号、ビット番号の１９〜２３が物理ブロックを有するチップを示すチップ番号、ビット番号の２４〜２８がチップへ接続するためのチャネル（メモリセル４１）を示すチャネル番号、ビット番号の３０、２９が未定義、ビット番号の３１がエントリデータの誤りを検出するための誤り検出符号であるパリティビット（Ｐ）を示す。エントリデータに示されたページ番号、ブロック番号、チップ番号、チャネル番号により論理アドレスに対応するページＢＰへのアクセスが可能となる。また、エントリデータにおいて、いずれかのビット番号のビットが反転するビット異常が生じた場合は、パリティビットを参照することで、そのビット異常を検出することが可能となる。なお、本実施形態では誤り検出符号としてパリティビットを用いる場合を例示するが、パリティビット以外の符号を用いてもよいことは言うまでもないことである。
【００１８】
図４は、有効ページビットマップ３２のエントリデータを例示する概念図である。図４に示すように、有効ページビットマップ３２は、ビット幅が３２ビットのビットマップである。有効ページビットマップ３２において、一つのエントリデータは、データビット番号が０〜３１の３２ビットで構成される。有効ページビットマップ３２では、一つのビットで一ページ分の有効（使用されている）、又は無効（使用されていない）を定義する。具体的には、１段目のエントリデータのビット番号の０〜２３までは０〜２３ページの有効又は無効を０又は１で定義している。２段目のエントリデータのビット番号の０〜２３までは２４〜４７ページの有効又は無効を０又は１で定義している。ビット番号の２４〜３１までは各エントリに生じたエラーを訂正するための誤り訂正符号として用いられる。以下、同様にして、有効ページビットマップ３２では、各ページの有効又は無効を０又は１で定義して管理している。
【００１９】
ＣＰＵ２０は、書き込み／読み出しなどが行われたページに該当する有効ページビットマップ３２のビットを、０又は１に切り替えることで、メモリ部４０で現在使用されている有効なページを管理する。例えば、書き込みが行われたページに該当する有効ページビットマップ３２のビットを１に切り替えることで、そのページが有効なページであるとする。また、読み出した後に別のページに書き換えられたページや、消去が行われたページに該当する有効ページビットマップ３２のビットを０に切り替えることで、そのページが無効なページであるとする。
【００２０】
また、ＣＰＵ２０は、電源が投入されている間の所定時間毎に、又はホスト３から電源停止の指示があった場合に、ＤＲＡＭ３０に展開しているアドレス変換テーブル３１、有効ページビットマップ３２をメモリ部４０のシステム領域に格納する。このように、電源停止時にＤＲＡＭ３０に展開しているアドレス変換テーブル３１、有効ページビットマップ３２がメモリ部４０のシステム領域に退避されるため、メモリ部４０へのデータアクセスの整合性は次の電源投入時にも保持されることとなる。
【００２１】
また、ＣＰＵ２０は、ＲＯＭ１３より読み出されたプログラムを順次実行することで、アドレス変換テーブル異常検出部２１、エントリデータ検査部２２、エントリデータ置換部２３としての機能を備える。
【００２２】
アドレス変換テーブル異常検出部２１は、アドレス変換テーブル３１のエントリデータに付与されている誤り検出符号をもとに、そのエントリデータに含まれるビットが反転するビット異常が生じているか否かを検出する。具体的には、アドレス変換テーブル３１のエントリデータに付与されているパリティビットを参照し、そのエントリデータを構成する全体のビットから算出した奇偶性と、パリティビットが示す奇偶性とが一致するか否かを判定することで、ビット異常の検出を行う。アドレス変換テーブル異常検出部２１がビット異常の検出を行うタイミングは、ホスト３より指定された論理アドレスのエントリデータを読み出した時、電源投入時にメモリ部４０のシステム領域からＤＲＡＭ３０にアドレス変換テーブル３１を展開する時、電源の停止時にＤＲＡＭ３０に展開しているアドレス変換テーブル３１をメモリ部４０のシステム領域に格納する時、又は所定の時間間隔であってよい。
【００２３】
エントリデータ検査部２２は、アドレス変換テーブル３１のエントリデータにビット異常が検出された場合、そのエントリデータに含まれる所定のビットを反転させたデータが、正常なエントリデータであるか否かを検査する。具体的には、ビット異常が検出されたエントリデータを１ビットずつ順次反転させた検査値を生成し、その検査値が正常なエントリデータであるか否かを検査する。
【００２４】
例えば、生成した検査値が示すページが予め設定されたユーザ領域を示す場合は、異常が生じているビットを反転させて正常なエントリデータとなっていると推定されることから、生成した検査値を正常なエントリデータであるとする。逆に、生成した検査値が示すページが予め設定されたシステム領域を示す場合は、異常が生じているビット以外のビットを反転させていると推定されることから、生成した検査値を異常であるとする。
【００２５】
また、エントリデータ検査部２２は、生成した検査値が示すページが有効なページとして有効ページビットマップ３２により管理されている場合には、異常が生じているビットを反転させて正常なエントリデータとなっていると推定されることから、その検査値を正常なエントリデータであるとする。逆に、生成した検査値が示すページが無効なページとして有効ページビットマップ３２により管理されている場合には、異常が生じているビット以外のビットを反転させていると推定されることから、生成した検査値を異常であるとする。
【００２６】
また、エントリデータ検査部２２は、生成した検査値が示すページに格納されている論理アドレスを読み出し、その読み出した論理アドレスがビット異常が検出されたエントリデータにかかる論理アドレスと一致するか否かを判定する。この判定において、論理アドレスが一致する場合は、異常が生じているビットを反転させて正常なエントリデータとなっていると推定されることから、その検査値を正常なエントリデータであるとする。逆に、論理アドレスが一致しない場合は、異常が生じているビット以外のビットを反転させていると推定されることから、生成した検査値を異常であるとする。
【００２７】
エントリデータ置換部２３は、アドレス変換テーブル異常検出部２１によりビット異常が検出されたアドレス変換テーブル３１のエントリデータを、エントリデータ検査部２２により検査された正常なエントリデータに置き換える。この置き換えにより、半導体記憶装置２では、アドレス変換テーブル３１のエントリデータにデータサイズの大きい誤り訂正符号を付与することなく、アドレス変換テーブル３１のエントリデータに生じたビット異常を訂正できる。
【００２８】
次に、半導体記憶装置２の動作について詳細に説明する。図５は、半導体記憶装置２の動作の一例を示すフローチャートである。図５に示すように、半導体記憶装置２では、アドレス変換テーブル異常検出部２１がアドレス変換テーブル３１のエントリにてビット異常を検出することにより（Ｓ１）、処理が開始される。
【００２９】
次いで、エントリデータ検査部２２は、アドレス変換テーブル異常検出部２１によりビット異常が検出された異常箇所のエントリデータ（ＥＰ）をアドレス変換テーブル３１より取得する（Ｓ２）。次いで、エントリデータ検査部２２は、エントリデータを１ビットずつ順次反転させて検査を行うため、ビットの反転を行うビット番号（ｎ）として０を設定する（Ｓ３）。すなわち、Ｓ３では、ビット番号ｎ＝０からエントリデータ検査部２２による検査が開始される。なお、本実施形態ではビット番号０〜３１まで順次インクリメントして検査する構成を例示するが、反転を行うビット番号は任意（ランダム）に選択してもよい。
【００３０】
次いで、エントリデータ検査部２２は、反転を行うビット番号（ｎ）がｎ＜３２を満たすか否かを判定する（Ｓ４）。ｎ＝３２となった場合（Ｓ４：ＮＯ）は、エントリデータに含まれる全てのビットを順次反転し終えたことになるので、Ｓ５〜Ｓ１１の処理を終えてＳ１２へ進む。ｎ＜３２を満たす場合（Ｓ４：ＹＥＳ）は、エントリデータに含まれるビットを順次反転している最中であることになるので、Ｓ５〜Ｓ１１の処理を継続する。
【００３１】
Ｓ５において、エントリデータ検査部２２は、ビット異常が検出されたエントリデータ（ＥＰ）のビット番号がｎ番のビットを反転した検査値Ｃｈ（ｎ）を生成して用意する。次いで、エントリデータ検査部２２は、用意した検査値Ｃｈ（ｎ）が予め設定されたユーザ領域などの正当なページを指しているか否かを判定する（Ｓ６）。正当なページを指している場合（Ｓ６：ＹＥＳ）は、検査値Ｃｈ（ｎ）は正常であると推定されることから、Ｓ７へ処理を進める。正当なページを指していない場合（Ｓ６：ＮＯ）は、検査値Ｃｈ（ｎ）は異常であることから、Ｓ１１へ処理を進めてｎをインクリメントしてＳ４へ処理を戻し、次のビット番号を反転した検査値の検査へ処理を進める。
【００３２】
Ｓ７において、エントリデータ検査部２２は、用意した検査値Ｃｈ（ｎ）が示すページが有効なページとして有効ページビットマップ３２により管理されているか否かを判定する。有効なページとして管理されている場合（Ｓ７：ＹＥＳ）は、検査値Ｃｈ（ｎ）は正常であると推定されることから、Ｓ８へ処理を進める。無効なページとして管理されている場合（Ｓ７：ＮＯ）は、検査値Ｃｈ（ｎ）は異常であることから、Ｓ１１へ処理を進めてｎをインクリメントしてＳ４へ処理を戻し、次のビット番号を反転した検査値の検査へ処理を進める。
【００３３】
Ｓ８において、エントリデータ検査部２２は、用意した検査値Ｃｈ（ｎ）が示すページのデータをメモリ部４０より読み出す。次いで、エントリデータ検査部２２は、検査値Ｃｈ（ｎ）により読み出したページは、ビット異常が検出されたエントリデータ（ＥＰ）にかかる論理アドレスのデータであるか否かを判定する（Ｓ９）。具体的には、読み出したページに格納されている論理アドレスが、ビット異常が検出されたエントリデータ（ＥＰ）にかかる論理アドレスと一致するか否かを判定する。
【００３４】
一致する場合（Ｓ９：ＹＥＳ）、検査値Ｃｈ（ｎ）は正常であると推定されることから、エントリデータ検査部２２は、検査値Ｃｈ（ｎ）を正常なエントリデータとしてＳＲＡＭ１４又はＤＲＡＭ３０に一時記憶させる（Ｓ１０）。次いで、エントリデータ検査部２２は、Ｓ１１へ処理を進めてｎをインクリメントしてＳ４へ処理を戻し、次のビット番号を反転した検査値の検査へ処理を進める。一致しない場合（Ｓ９：ＮＯ）は、検査値Ｃｈ（ｎ）は異常であることから、Ｓ１１へ処理を進めてｎをインクリメントしてＳ４へ処理を戻し、次のビット番号を反転した検査値の検査へ処理を進める。
【００３５】
上述したＳ５〜Ｓ１０の処理により、用意した検査値Ｃｈ（ｎ）については、Ｓ６、Ｓ７、Ｓ９の判定の全てを満足する場合に、正常なエントリデータとしている。
【００３６】
エントリデータに含まれる全てのビットを順次反転して検査を終えたＳ１２において、エントリデータ置換部２３は、正常なエントリデータとしてＳＲＡＭ１４又はＤＲＡＭ３０に一時記憶されている検査値Ｃｈ（ｎ）が一つのみであるか否かを判定する。一つのみである場合（Ｓ１２：ＹＥＳ）、エントリデータ置換部２３は、アドレス変換テーブル異常検出部２１によりビット異常が検出されたアドレス変換テーブル３１のエントリデータ（ＥＰ）を、エントリデータ検査部２２により正常なエントリデータとして検査された検査値Ｃｈ（ｎ）で置き換え（Ｓ１３）、正常終了する（Ｓ１４）。
【００３７】
パリティビットなどの誤り検出信号では、エントリデータのいずれかのビットでビット異常が発生していることを検出できるが、幾つのビットでビット異常が発生しているかまでは特定できない。したがって、Ｓ１２の判定によって、正常なエントリデータとして検査された検査値Ｃｈ（ｎ）が一つのみと判明された場合に限り、その検査値Ｃｈ（ｎ）による置き換えを行う。エントリデータの複数のビットでビット異常が発生する確率は、ほぼ０に等しいため、上述した処理で正常なエントリデータへ復旧することができる。
【００３８】
なお、一つのみでない場合（Ｓ１２：ＮＯ）、ＣＰＵ２０は、アドレス変換テーブル３１のエントリデータの修復ができない故障として、処理を終了する（Ｓ１５）。この場合は、上述したＳ４〜Ｓ１１の処理で正常なエントリデータに復旧できないことから、Ｒｅｂｏｏｔ処置によるメモリ部４０の初期化などの復旧作業を行うこととなる。
【００３９】
ここで、図５に例示したフローチャートによるエントリデータの検査の一例を説明する。図６は、エントリデータの検査の一例を示す概念図である。
【００４０】
図６に示すように、ＬＢＡｘ〜ＬＢＡ（ｘ＋７）のエントリでは、ｔ番目のビットでビット異常ＥＲが発生しているものとする。図５のＳ４〜Ｓ１１の処理により、ＬＢＡｘ〜ＬＢＡ（ｘ＋７）のエントリデータの０番目〜３１番目のビットを順次反転した検査値Ｃｈ（０）〜Ｃｈ（３１）を順次生成して検査が行われる。この検査では、ｔ番目のビットを反転した検査値Ｃｈ（ｔ）が、Ｓ６、Ｓ７、Ｓ９の判定の全てを満足することから、その検査値Ｃｈ（ｔ）でエントリデータが置き換えられることとなる。
【００４１】
次に、上述した半導体記憶装置２を搭載した電子機器１として、ノート型のパーソナルコンピュータを例示する。図７は、半導体記憶装置２を搭載したパーソナルコンピュータ１０００の一例を示す斜視図である。
【００４２】
パーソナルコンピュータ１０００は、本体１００１、及び表示ユニット１００２を備えている。表示ユニット１００２は、ディスプレイハウジング１００３と、このディスプレイハウジング１００３に収容された表示装置１００４とを備えている。
【００４３】
本体１００１は、筐体１００５と、キーボード１００６と、ポインティングデバイスであるタッチパッド１００７とを備えている。筐体１００５内部には、メイン回路基板、ＯＤＤ（optical  disk  device）ユニット、カードスロット、及び半導体記憶装置２等が収容されている。
【００４４】
カードスロットは、筐体１００５の周壁に隣接して設けられている。周壁には、カードスロットに対向する開口部１００８が設けられている。ユーザは、この開口部１００８を通じて筐体１００５の外部から追加デバイスをカードスロットに挿抜することが可能である。
【００４５】
半導体記憶装置２は、従来のＨＤＤの置き換えとして、パーソナルコンピュータ１０００内部に実装された状態として使用してもよいし、パーソナルコンピュータ１０００が備えるカードスロットに挿入した状態で、追加デバイスとして使用してもよい。
【００４６】
図８は、半導体記憶装置２を搭載したパーソナルコンピュータ１０００のシステム構成例を示すブロック図である。パーソナルコンピュータ１０００は、ＣＰＵ１１０１、ノースブリッジ１１０２、主メモリ１１０３、ビデオコントローラ１１０４、オーディオコントローラ１１０５、サウスブリッジ１１０９、ＢＩＯＳ−ＲＯＭ１１１０、半導体記憶装置２、ＯＤＤユニット１１１１、ＥＣ／ＫＢＣ１１１２（エンベデッドコントローラ／キーボードコントローラ）、及びネットワークコントローラ１１１３等を備えている。
【００４７】
パーソナルコンピュータ１０００は、ＣＰＵ１１０１の制御の下、セクタ単位（論理アドレス単位）で半導体記憶装置２へのアクセスを行う。例えばＳＡＴＡインタフェースを介して、所定の論理アドレスに対する書き込みコマンド、読出しコマンド、フラッシュコマンド等の各種コマンドが半導体記憶装置２に入力される。半導体記憶装置２では、ＣＰＵ２０がアドレス変換テーブル３１を参照することで、指示された論理アドレスに対応する物理アドレスへ、各種コマンドに応じた書き込み／読み出し処理を行う。
【００４８】
（変形例）
ここで、上述したアドレス変換テーブル３１の変形例を説明する。図９は、変形例にかかるアドレス変換テーブル３１Ａを例示する概念図である。上述したアドレス変換テーブル３１では、論理アドレスとページとの対応関係が一つのテーブルデータで記述されていた。しかしながら、論理アドレスとページとの対応関係は、図９のアドレス変換テーブル３１Ａのように、１段目ＬＢＡテーブル３１Ｂと２段目論物変換テーブル３１Ｃとの複数の層に別れて記述されてもよい。
【００４９】
具体的には、アドレス変換テーブル３１Ａは、１段目ＬＢＡテーブル３１Ｂと２段目論物変換テーブル３１Ｃとを有する。１段目ＬＢＡテーブル３１Ｂのエントリは、論理アドレスをインデックスとして、チャネルの番号と、ページに付与されたページ番号と、データが記憶されている論理ブロックに付与された論理ブロック番号とから構成される。各書き込み対象データの論理アドレスは、ホスト３からのデータの書き込みの要求において指定される論理アドレスに基づいて各々計算される。
【００５０】
論理ブロック番号は、書き込み対象データを関連付けるための識別情報であり、例えば、論理ブロックの生成順に付与される番号である。チャネルの番号は、ここでは、ＣＨ０〜ＣＨ４とし、論理アドレスに対応するデータが記憶されている物理ブロックがいずれのチャネルに接続されているかを示す。そしてページ番号は、論理アドレスに対応するデータが、論理ブロック番号とチャネル番号で特定される物理ブロックの中のどのページに記憶されているかを示す。尚、ページ番号としては、例えば、物理アドレスの順に付与されるものであっても良いし、ページの物理アドレス自体が付与されても良い。
【００５１】
１段目ＬＢＡテーブル３１Ｂは、書き込み対象データが書き込まれるメモリ部４０内の複数の記憶領域を各々特定する領域特定情報であり、論理ブロック番号と、その論理ブロックに関連付けられた各チャネルの各物理ブロックとを対応付けて記憶する。１段目ＬＢＡテーブル３１Ｂには、論理ブロック番号をインデックスとして、論理ブロックに関連付けられた各チャネルの物理ブロックのアドレス（物理ブロックアドレス）が記憶される。このような構成において、ある論理アドレスに対応するアドレス変換テーブル３１Ａのエントリに記憶されていた論理ブロック番号をインデックスとし、そのインデックスで、論理ブロックに関する１段目ＬＢＡテーブル３１Ｂのエントリを特定する。次に、１段目ＬＢＡテーブル３１Ｂのエントリに記憶されている物理ブロックの中から、アドレス変換テーブル３１Ａのエントリに記録されていたチャネル番号のチャネルに接続されているメモリ部４０の物理ブロックを特定する。そして、アドレス変換テーブル３１Ａのエントリに含まれるページ番号によって、論理アドレスに対応するデータが書き込まれているページを特定する。
【００５２】
このアドレス変換テーブル３１Ａでは、１段目ＬＢＡテーブル３１Ｂ、２段目論物変換テーブル３１Ｃの各々について、エントリデータに誤り検出符号が付与されているため、１段目ＬＢＡテーブル３１Ｂ、２段目論物変換テーブル３１Ｃのエントリデータにビット異常が発生した場合であっても、そのエントリデータを正常なエントリデータに置き換えることができる。なお、１段目ＬＢＡテーブル３１Ｂ、２段目論物変換テーブル３１Ｃの中でエントリ数が少なくデータサイズが小さくて済むテーブルの方には、誤り訂正符号を付与してもよい。
【００５３】
なお、本実施形態の半導体記憶装置２で実行されるプログラムは、ＲＯＭ等に予め組み込まれて提供される。本実施形態の半導体記憶装置２で実行されるプログラムは、インストール可能な形式又は実行可能な形式のファイルでＣＤ−ＲＯＭ、フレキシブルディスク（ＦＤ）、ＣＤ−Ｒ、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ）等のコンピュータで読み取り可能な記録媒体に記録して提供するように構成してもよい。
【００５４】
さらに、本実施形態の半導体記憶装置２で実行されるプログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成しても良い。また、本実施形態の半導体記憶装置２で実行されるプログラムをインターネット等のネットワーク経由で提供または配布するように構成しても良い。
【００５５】
本実施形態の半導体記憶装置２で実行されるプログラムは、上述した各部（アドレス変換テーブル異常検出部２１、エントリデータ検査部２２、エントリデータ置換部２３）を含むモジュール構成となっており、実際のハードウェアとしてはＣＰＵ（プロセッサ）が上記ＲＯＭからプログラムを読み出して実行することにより上記各部が主記憶装置上にロードされ、アドレス変換テーブル異常検出部２１、エントリデータ検査部２２、エントリデータ置換部２３が主記憶装置上に生成されるようになっている。
【００５６】
なお、本発明は、上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化することができる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成することができる。例えば、実施形態に示される全構成要素からいくつかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせても良い。
【符号の説明】
【００５７】
１  電子機器
２  半導体記憶装置
３  ホスト
１０  メモリコントローラ
１１  バス
１２  Ｈｏｓｔ  Ｉ／Ｆ
１３  ＲＯＭ
１４  ＳＲＡＭ
１５  ＮＡＮＤ  Ｉ／Ｆ
２０  ＣＰＵ
２１  アドレス変換テーブル異常検出部
２２  エントリデータ検査部
２３  エントリデータ置換部
３０  ＤＲＡＭ
３１、３１Ａ  アドレス変換テーブル
３１Ｂ  １段目ＬＢＡテーブル
３１Ｃ  ２段目論物変換テーブル
３２  有効ページビットマップ
４０  メモリ部
４１  メモリセル
４２  ワード線
ＢＰ  ページ
【図１】
2012063882.tif 000003
【図２】
2012063882.tif 000004
【図３】
2012063882.tif 000005
【図４】
2012063882.tif 000006
【図５】
2012063882.tif 000007
【図６】
2012063882.tif 000008
【図７】
2012063882.tif 000009
【図８】
2012063882.tif 000010
【図９】
2012063882.tif 000011
【手続補正書】
【提出日】平成23年11月7日(2011.11.7)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
論理アドレスに対応する物理アドレスへの変換にかかるエントリデータに付与された誤り検出符号をもとに、当該エントリデータに生じたビット異常を検出する異常検出手段と、
ビット異常が検出された前記エントリデータに含まれるすべてのビットのうちのいずれか１のビットを反転させたデータと、当該データで示される物理アドレスから読み出したエントリデータとに基づいて、正常なエントリデータであるか否かを検査する検査手段と、
ビット異常が検出された前記エントリデータを、検査された正常なエントリデータに置き換える置換手段と、
を備える記憶装置。
【請求項２】
前記検査手段は、ビット異常が検出された前記エントリデータに含まれる各ビットを１ビットずつ順次反転させるごとに検査し、
前記置換手段は、正常なエントリデータであると検査されたビットが１箇所である場合に、ビット異常が検出された前記エントリデータを、検査された正常なエントリデータに置き換える、
請求項１に記載の記憶装置。
【請求項３】
前記誤り検出符号はパリティビットである請求項１又は２に記載の記憶装置。
【請求項４】
前記検査手段は、ビット異常が検出された前記エントリデータに含まれるすべてのビットのうちのいずれか１のビットを反転させたデータが予め設定された範囲の物理アドレスを示すエントリデータである場合に、前記ビットを反転させたデータを正常なエントリデータであるとする、
請求項１乃至３のいずれか一項に記載の記憶装置。
【請求項５】
物理アドレス毎に、当該物理アドレスが使用中であるか未使用であるかを管理するアドレス管理手段を更に備え、
前記検査手段は、ビット異常が検出された前記エントリデータに含まれるすべてのビットのうちのいずれか１のビットを反転させたデータが示す物理アドレスが使用中として管理されている場合に、前記ビットを反転させたデータを正常なエントリデータであるとする、
請求項１乃至４のいずれか一項に記載の記憶装置。
【請求項６】
物理アドレスで指定されるメモリ領域には、当該物理アドレスに対応した論理アドレスが格納され、
前記検査手段は、ビット異常が検出された前記エントリデータに含まれるすべてのビットのうちのいずれか１のビットを反転させたデータが示す物理アドレスで指定されたメモリ領域から読み出した論理アドレスが、ビットを反転させたエントリデータにかかる論理アドレスと一致する場合に、当該ビットを反転させたエントリデータを正常なエントリデータであるとする、
請求項１乃至５のいずれか一項に記載の記憶装置。
【請求項７】
請求項１乃至６のいずれか一項に記載の記憶装置を備えた電子機器。
【請求項８】
データを記憶する記憶装置で実行される誤りデータの訂正方法であって、
論理アドレスに対応する物理アドレスへの変換にかかるエントリデータに付与された誤り検出符号をもとに、当該エントリデータに生じたビット異常を検出するステップと、
ビット異常が検出された前記エントリデータに含まれるすべてのビットのうちのいずれか１のビットを反転させたデータと、当該データで示される物理アドレスから読み出したエントリデータとに基づいて、正常なエントリデータであるか否かを検査するステップと、
ビット異常が検出された前記エントリデータを、検査された正常なエントリデータに置き換えるステップと、
を具備する誤りデータの訂正方法。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】０００７
【補正方法】変更
【補正の内容】
【０００７】
上述した課題を解決し、目的を達成するために、実施形態の記憶装置は、論理アドレスに対応する物理アドレスへの変換にかかるエントリデータに付与された誤り検出符号をもとに、当該エントリデータに生じたビット異常を検出する異常検出手段と、ビット異常が検出された前記エントリデータに含まれるすべてのビットのうちのいずれか１のビットを反転させたデータと、当該データで示される物理アドレスから読み出したエントリデータとに基づいて、正常なエントリデータであるか否かを検査する検査手段と、ビット異常が検出された前記エントリデータを、検査された正常なエントリデータに置き換える置換手段とを備える。