JP4901987B1 - 記憶装置、電子機器及び誤りデータの訂正方法 - Google Patents
記憶装置、電子機器及び誤りデータの訂正方法 Download PDFInfo
- Publication number
- JP4901987B1 JP4901987B1 JP2010206070A JP2010206070A JP4901987B1 JP 4901987 B1 JP4901987 B1 JP 4901987B1 JP 2010206070 A JP2010206070 A JP 2010206070A JP 2010206070 A JP2010206070 A JP 2010206070A JP 4901987 B1 JP4901987 B1 JP 4901987B1
- Authority
- JP
- Japan
- Prior art keywords
- entry data
- bit
- data
- entry
- abnormality
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1012—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
- G06F11/1016—Error in accessing a memory location, i.e. addressing error
Abstract
【課題】アドレス変換テーブルのエントリデータに誤り訂正符号を付与することなく、そのエントリデータに生じたビット異常の訂正を可能とする。
【解決手段】半導体記憶装置2は、論理アドレスに対応する物理アドレスへの変換にかかるアドレス変換テーブル31のエントリデータに付与された誤り検出符号をもとに、エントリデータに生じたビット異常を検出するアドレス変換テーブル異常検出部21と、ビット異常が検出されたエントリデータに含まれる所定のビットを反転させたデータが、正常なエントリデータであるか否かを検査するエントリデータ検査部22と、ビット異常が検出されたエントリデータを、検査された正常なエントリデータに置き換えるエントリデータ置換部23と、を備える。
【選択図】図1
【解決手段】半導体記憶装置2は、論理アドレスに対応する物理アドレスへの変換にかかるアドレス変換テーブル31のエントリデータに付与された誤り検出符号をもとに、エントリデータに生じたビット異常を検出するアドレス変換テーブル異常検出部21と、ビット異常が検出されたエントリデータに含まれる所定のビットを反転させたデータが、正常なエントリデータであるか否かを検査するエントリデータ検査部22と、ビット異常が検出されたエントリデータを、検査された正常なエントリデータに置き換えるエントリデータ置換部23と、を備える。
【選択図】図1
Description
本発明の実施形態は、記憶装置、電子機器及び誤りデータの訂正方法に関する。
近年、PC(Personal Computer)等の電子機器に用いられる記憶装置として、不揮発性メモリであるフラッシュメモリ(フラッシュEEPROM)を搭載したSSD(Solid State Drive)が注目されている。電子機器側では論理アドレスでデータアクセスを行い、記憶装置側では物理アドレスでデータアクセスを行うことから、記憶装置は、論理アドレスを物理アドレスへ変換するアドレス変換テーブル(正引きテーブルとも言う)をフラッシュメモリのシステム領域などに保持している。電子機器で記憶装置のデータにアクセスする場合、記憶装置は、アドレス変換テーブルを参照して、電子機器から指示された論理アドレスに対応する物理アドレスへアクセスする。
記憶装置などに用いられるDRAM(Dynamic Random Access Memory)やフラッシュメモリなどのメモリ素子(以下、メモリ)では、静電気などによって、記録しているビットが反転するビット異常が稀に生じることがある。アドレス変換テーブルのエントリデータにビット異常が生じた場合は正常なデータアクセスが出来なくなることから、アドレス変換テーブルのエントリデータにはビット異常を検出するための誤り検出符号(EDC:Error-Detecting Code)と、ビット異常が生じた場合に訂正するための誤り訂正符号(ECC:Error Correcting CodeまたはError Control Code)とが付与されている。
ところで、記憶装置のメモリは、年々大容量化と、ビット異常の生じる確率の低下とが進んでいる。メモリの大容量化に伴ってアドレス変換テーブルのエントリ数も増大し、誤り検出符号に比べてデータサイズの大きい誤り訂正符号のデータ量も無視できないものとなっている。ビット異常の生じる確率が年々低下しているとはいえ、アドレス変換テーブルのエントリデータに極稀に生じるビット異常は、エントリデータに付与された誤り訂正符号で訂正する以外の方法がなかった。
本発明は、上記に鑑みてなされたものであって、アドレス変換テーブルのエントリデータに誤り訂正符号を付与することなく、そのエントリデータに生じたビット異常の訂正を可能とすることを目的とする。
上述した課題を解決し、目的を達成するために、実施形態の記憶装置は、論理アドレスに対応する物理アドレスへの変換にかかるエントリデータに付与された誤り検出符号をもとに、当該エントリデータに生じたビット異常を検出する異常検出手段と、ビット異常が検出された前記エントリデータに含まれるすべてのビットのうちのいずれか1のビットを反転させたデータと、当該データで示される物理アドレスから読み出したエントリデータとに基づいて、正常なエントリデータであるか否かを検査する検査手段と、ビット異常が検出された前記エントリデータを、検査された正常なエントリデータに置き換える置換手段とを備える。
以下に添付図面を参照して、本実施形態にかかる記憶装置、電子機器及び誤りデータの訂正方法を詳細に説明する。なお、本実施形態では記憶装置として、例えばSSD(Solid State Drive)に代表される、フラッシュメモリを搭載した半導体記憶装置を例示するが、記憶装置は論理アドレスを物理アドレスへ変換するアドレス変換テーブルを用いてデータアクセスを行うものであればHDD(Hard Disk Drive)であってもよい。
図1は、半導体記憶装置2の構成を示すブロック図である。半導体記憶装置2は、パーソナルコンピュータまたはデジタルカメラ等の電子機器1の内部に収納され、電子機器1の外部記憶装置として機能するエンベデッドタイプのメモリ等であってよい。また、半導体記憶装置2は、電子機器1において、電子機器1のCPU(Central Processing Unit)などのホスト3側に着脱可能に接続されるメモリカードであってもよい。
半導体記憶装置2は、フラッシュメモリ(フラッシュEEPROM)などの不揮発性半導体メモリであるメモリ部40と、メモリコントローラ10とを有する。メモリ部40は例えばNAND型フラッシュメモリであり、単位セルである多数のメモリセル41が、ビット線(図示せず)およびワード線42の交点にマトリクス状に配置された構造を有している。メモリ部40におけるデータ消去は、単位セル複数個からなる物理ブロック単位で行われ、メモリ部40は複数の物理ブロックを備えている。メモリ部40に対する書き込み/読み出しは、物理アドレスにより指定された物理ページ(以下、単にページと呼ぶ)単位に行われる。1つの物理ブロックは複数のページから構成されるので、ページのサイズは物理ブロックのサイズより小さい。
図2は、メモリ部40のページBPを例示する概念図である。図2に示すように、メモリ部40における一つのページBPには、ホスト3側で扱うことができる論理ブロックアドレス(LBA、以下、論理アドレスと呼ぶ)が合計8つ配置される。図示例では、LBA(n)〜LBA(n+7)の論理アドレスがページBPに配置されている。ページBPの各論理アドレスに対応するメモリ領域には、論理アドレスに対応して格納されるデータの他に、その論理アドレスと、ページ内のエラー訂正を行うためのページECC(誤り訂正符号)とが格納されている。メモリ部40のメモリ領域には、メモリコントローラ10が用いるためのシステム領域と、ユーザが利用可能なユーザ領域とが予め確保されている。ホスト3で扱う論理アドレスによりアクセスされるページBPは、ユーザ領域内に配置される。
図1に示すように、メモリコントローラ10は、制御部であるCPU20と、DRAM30と、Host I/F12と、ROM13と、SRAM14と、NAND I/F15とを備え、これらがバス11を介して接続されている。
Host I/F12は、CPU20の制御のもと、ホスト3との間のデータ通信を制御するインタフェースである。ROM13は、各種プログラムや設定情報などを予め記憶する。SRAM14は、ホスト3から指示されたコマンドを一時的に格納するコマンドキューなどの領域を提供する。NAND I/F15は、CPU20の制御の下、NAND型フラッシュメモリであるメモリ部40へのアクセスを行う。
CPU20は、電源投入時にROM13より読み出されたプログラムを順次実行することで、半導体記憶装置2の動作を中央制御する。具体的には、CPU20は、電源投入時にメモリ部40のシステム領域に格納されているアドレス変換テーブル31、有効ページビットマップ32を読み出してDRAM30へ展開する。次いで、ホスト3より論理アドレスを指定されたデータの読み出し/書き込み指示があった場合は、アドレス変換テーブル31にエントリされたデータ(以下、エントリデータと呼ぶ)を参照することで、ホスト3より指定された論理アドレスに対応するページへのデータアクセスを制御する。また、CPU20は、上述した読み出し/書き込みに応じて有効ページビットマップ32を更新し、メモリ部40で現在使用されている有効なページを管理している。
図3は、アドレス変換テーブル31のエントリデータを例示する概念図である。図3に示すように、アドレス変換テーブル31は、論理アドレス(LBA)からメモリ部40のページを導くためのテーブルデータである。アドレス変換テーブル31では、論理アドレスが8の倍数で順番に並んでおり、その8個分の論理アドレスに対応するページが定義されている。すなわち、一つのエントリで8個の論理アドレスに対応する1ページ分のアドレス変換が定義されている。例えば、LBA(n)〜LBA(n+7)の間の論理アドレスには、対応するページBPが定義されている。
一つのエントリデータはビット番号が0〜31の32ビット(bit)で構成される。ビット番号の0〜5がページ番号、ビット番号の6〜18が物理ブロックを示すブロック番号、ビット番号の19〜23が物理ブロックを有するチップを示すチップ番号、ビット番号の24〜28がチップへ接続するためのチャネル(メモリセル41)を示すチャネル番号、ビット番号の30、29が未定義、ビット番号の31がエントリデータの誤りを検出するための誤り検出符号であるパリティビット(P)を示す。エントリデータに示されたページ番号、ブロック番号、チップ番号、チャネル番号により論理アドレスに対応するページBPへのアクセスが可能となる。また、エントリデータにおいて、いずれかのビット番号のビットが反転するビット異常が生じた場合は、パリティビットを参照することで、そのビット異常を検出することが可能となる。なお、本実施形態では誤り検出符号としてパリティビットを用いる場合を例示するが、パリティビット以外の符号を用いてもよいことは言うまでもないことである。
図4は、有効ページビットマップ32のエントリデータを例示する概念図である。図4に示すように、有効ページビットマップ32は、ビット幅が32ビットのビットマップである。有効ページビットマップ32において、一つのエントリデータは、データビット番号が0〜31の32ビットで構成される。有効ページビットマップ32では、一つのビットで一ページ分の有効(使用されている)、又は無効(使用されていない)を定義する。具体的には、1段目のエントリデータのビット番号の0〜23までは0〜23ページの有効又は無効を0又は1で定義している。2段目のエントリデータのビット番号の0〜23までは24〜47ページの有効又は無効を0又は1で定義している。ビット番号の24〜31までは各エントリに生じたエラーを訂正するための誤り訂正符号として用いられる。以下、同様にして、有効ページビットマップ32では、各ページの有効又は無効を0又は1で定義して管理している。
CPU20は、書き込み/読み出しなどが行われたページに該当する有効ページビットマップ32のビットを、0又は1に切り替えることで、メモリ部40で現在使用されている有効なページを管理する。例えば、書き込みが行われたページに該当する有効ページビットマップ32のビットを1に切り替えることで、そのページが有効なページであるとする。また、読み出した後に別のページに書き換えられたページや、消去が行われたページに該当する有効ページビットマップ32のビットを0に切り替えることで、そのページが無効なページであるとする。
また、CPU20は、電源が投入されている間の所定時間毎に、又はホスト3から電源停止の指示があった場合に、DRAM30に展開しているアドレス変換テーブル31、有効ページビットマップ32をメモリ部40のシステム領域に格納する。このように、電源停止時にDRAM30に展開しているアドレス変換テーブル31、有効ページビットマップ32がメモリ部40のシステム領域に退避されるため、メモリ部40へのデータアクセスの整合性は次の電源投入時にも保持されることとなる。
また、CPU20は、ROM13より読み出されたプログラムを順次実行することで、アドレス変換テーブル異常検出部21、エントリデータ検査部22、エントリデータ置換部23としての機能を備える。
アドレス変換テーブル異常検出部21は、アドレス変換テーブル31のエントリデータに付与されている誤り検出符号をもとに、そのエントリデータに含まれるビットが反転するビット異常が生じているか否かを検出する。具体的には、アドレス変換テーブル31のエントリデータに付与されているパリティビットを参照し、そのエントリデータを構成する全体のビットから算出した奇偶性と、パリティビットが示す奇偶性とが一致するか否かを判定することで、ビット異常の検出を行う。アドレス変換テーブル異常検出部21がビット異常の検出を行うタイミングは、ホスト3より指定された論理アドレスのエントリデータを読み出した時、電源投入時にメモリ部40のシステム領域からDRAM30にアドレス変換テーブル31を展開する時、電源の停止時にDRAM30に展開しているアドレス変換テーブル31をメモリ部40のシステム領域に格納する時、又は所定の時間間隔であってよい。
エントリデータ検査部22は、アドレス変換テーブル31のエントリデータにビット異常が検出された場合、そのエントリデータに含まれる所定のビットを反転させたデータが、正常なエントリデータであるか否かを検査する。具体的には、ビット異常が検出されたエントリデータを1ビットずつ順次反転させた検査値を生成し、その検査値が正常なエントリデータであるか否かを検査する。
例えば、生成した検査値が示すページが予め設定されたユーザ領域を示す場合は、異常が生じているビットを反転させて正常なエントリデータとなっていると推定されることから、生成した検査値を正常なエントリデータであるとする。逆に、生成した検査値が示すページが予め設定されたシステム領域を示す場合は、異常が生じているビット以外のビットを反転させていると推定されることから、生成した検査値を異常であるとする。
また、エントリデータ検査部22は、生成した検査値が示すページが有効なページとして有効ページビットマップ32により管理されている場合には、異常が生じているビットを反転させて正常なエントリデータとなっていると推定されることから、その検査値を正常なエントリデータであるとする。逆に、生成した検査値が示すページが無効なページとして有効ページビットマップ32により管理されている場合には、異常が生じているビット以外のビットを反転させていると推定されることから、生成した検査値を異常であるとする。
また、エントリデータ検査部22は、生成した検査値が示すページに格納されている論理アドレスを読み出し、その読み出した論理アドレスがビット異常が検出されたエントリデータにかかる論理アドレスと一致するか否かを判定する。この判定において、論理アドレスが一致する場合は、異常が生じているビットを反転させて正常なエントリデータとなっていると推定されることから、その検査値を正常なエントリデータであるとする。逆に、論理アドレスが一致しない場合は、異常が生じているビット以外のビットを反転させていると推定されることから、生成した検査値を異常であるとする。
エントリデータ置換部23は、アドレス変換テーブル異常検出部21によりビット異常が検出されたアドレス変換テーブル31のエントリデータを、エントリデータ検査部22により検査された正常なエントリデータに置き換える。この置き換えにより、半導体記憶装置2では、アドレス変換テーブル31のエントリデータにデータサイズの大きい誤り訂正符号を付与することなく、アドレス変換テーブル31のエントリデータに生じたビット異常を訂正できる。
次に、半導体記憶装置2の動作について詳細に説明する。図5は、半導体記憶装置2の動作の一例を示すフローチャートである。図5に示すように、半導体記憶装置2では、アドレス変換テーブル異常検出部21がアドレス変換テーブル31のエントリにてビット異常を検出することにより(S1)、処理が開始される。
次いで、エントリデータ検査部22は、アドレス変換テーブル異常検出部21によりビット異常が検出された異常箇所のエントリデータ(EP)をアドレス変換テーブル31より取得する(S2)。次いで、エントリデータ検査部22は、エントリデータを1ビットずつ順次反転させて検査を行うため、ビットの反転を行うビット番号(n)として0を設定する(S3)。すなわち、S3では、ビット番号n=0からエントリデータ検査部22による検査が開始される。なお、本実施形態ではビット番号0〜31まで順次インクリメントして検査する構成を例示するが、反転を行うビット番号は任意(ランダム)に選択してもよい。
次いで、エントリデータ検査部22は、反転を行うビット番号(n)がn<32を満たすか否かを判定する(S4)。n=32となった場合(S4:NO)は、エントリデータに含まれる全てのビットを順次反転し終えたことになるので、S5〜S11の処理を終えてS12へ進む。n<32を満たす場合(S4:YES)は、エントリデータに含まれるビットを順次反転している最中であることになるので、S5〜S11の処理を継続する。
S5において、エントリデータ検査部22は、ビット異常が検出されたエントリデータ(EP)のビット番号がn番のビットを反転した検査値Ch(n)を生成して用意する。次いで、エントリデータ検査部22は、用意した検査値Ch(n)が予め設定されたユーザ領域などの正当なページを指しているか否かを判定する(S6)。正当なページを指している場合(S6:YES)は、検査値Ch(n)は正常であると推定されることから、S7へ処理を進める。正当なページを指していない場合(S6:NO)は、検査値Ch(n)は異常であることから、S11へ処理を進めてnをインクリメントしてS4へ処理を戻し、次のビット番号を反転した検査値の検査へ処理を進める。
S7において、エントリデータ検査部22は、用意した検査値Ch(n)が示すページが有効なページとして有効ページビットマップ32により管理されているか否かを判定する。有効なページとして管理されている場合(S7:YES)は、検査値Ch(n)は正常であると推定されることから、S8へ処理を進める。無効なページとして管理されている場合(S7:NO)は、検査値Ch(n)は異常であることから、S11へ処理を進めてnをインクリメントしてS4へ処理を戻し、次のビット番号を反転した検査値の検査へ処理を進める。
S8において、エントリデータ検査部22は、用意した検査値Ch(n)が示すページのデータをメモリ部40より読み出す。次いで、エントリデータ検査部22は、検査値Ch(n)により読み出したページは、ビット異常が検出されたエントリデータ(EP)にかかる論理アドレスのデータであるか否かを判定する(S9)。具体的には、読み出したページに格納されている論理アドレスが、ビット異常が検出されたエントリデータ(EP)にかかる論理アドレスと一致するか否かを判定する。
一致する場合(S9:YES)、検査値Ch(n)は正常であると推定されることから、エントリデータ検査部22は、検査値Ch(n)を正常なエントリデータとしてSRAM14又はDRAM30に一時記憶させる(S10)。次いで、エントリデータ検査部22は、S11へ処理を進めてnをインクリメントしてS4へ処理を戻し、次のビット番号を反転した検査値の検査へ処理を進める。一致しない場合(S9:NO)は、検査値Ch(n)は異常であることから、S11へ処理を進めてnをインクリメントしてS4へ処理を戻し、次のビット番号を反転した検査値の検査へ処理を進める。
上述したS5〜S10の処理により、用意した検査値Ch(n)については、S6、S7、S9の判定の全てを満足する場合に、正常なエントリデータとしている。
エントリデータに含まれる全てのビットを順次反転して検査を終えたS12において、エントリデータ置換部23は、正常なエントリデータとしてSRAM14又はDRAM30に一時記憶されている検査値Ch(n)が一つのみであるか否かを判定する。一つのみである場合(S12:YES)、エントリデータ置換部23は、アドレス変換テーブル異常検出部21によりビット異常が検出されたアドレス変換テーブル31のエントリデータ(EP)を、エントリデータ検査部22により正常なエントリデータとして検査された検査値Ch(n)で置き換え(S13)、正常終了する(S14)。
パリティビットなどの誤り検出信号では、エントリデータのいずれかのビットでビット異常が発生していることを検出できるが、幾つのビットでビット異常が発生しているかまでは特定できない。したがって、S12の判定によって、正常なエントリデータとして検査された検査値Ch(n)が一つのみと判明された場合に限り、その検査値Ch(n)による置き換えを行う。エントリデータの複数のビットでビット異常が発生する確率は、ほぼ0に等しいため、上述した処理で正常なエントリデータへ復旧することができる。
なお、一つのみでない場合(S12:NO)、CPU20は、アドレス変換テーブル31のエントリデータの修復ができない故障として、処理を終了する(S15)。この場合は、上述したS4〜S11の処理で正常なエントリデータに復旧できないことから、Reboot処置によるメモリ部40の初期化などの復旧作業を行うこととなる。
ここで、図5に例示したフローチャートによるエントリデータの検査の一例を説明する。図6は、エントリデータの検査の一例を示す概念図である。
図6に示すように、LBAx〜LBA(x+7)のエントリでは、t番目のビットでビット異常ERが発生しているものとする。図5のS4〜S11の処理により、LBAx〜LBA(x+7)のエントリデータの0番目〜31番目のビットを順次反転した検査値Ch(0)〜Ch(31)を順次生成して検査が行われる。この検査では、t番目のビットを反転した検査値Ch(t)が、S6、S7、S9の判定の全てを満足することから、その検査値Ch(t)でエントリデータが置き換えられることとなる。
次に、上述した半導体記憶装置2を搭載した電子機器1として、ノート型のパーソナルコンピュータを例示する。図7は、半導体記憶装置2を搭載したパーソナルコンピュータ1000の一例を示す斜視図である。
パーソナルコンピュータ1000は、本体1001、及び表示ユニット1002を備えている。表示ユニット1002は、ディスプレイハウジング1003と、このディスプレイハウジング1003に収容された表示装置1004とを備えている。
本体1001は、筐体1005と、キーボード1006と、ポインティングデバイスであるタッチパッド1007とを備えている。筐体1005内部には、メイン回路基板、ODD(optical disk device)ユニット、カードスロット、及び半導体記憶装置2等が収容されている。
カードスロットは、筐体1005の周壁に隣接して設けられている。周壁には、カードスロットに対向する開口部1008が設けられている。ユーザは、この開口部1008を通じて筐体1005の外部から追加デバイスをカードスロットに挿抜することが可能である。
半導体記憶装置2は、従来のHDDの置き換えとして、パーソナルコンピュータ1000内部に実装された状態として使用してもよいし、パーソナルコンピュータ1000が備えるカードスロットに挿入した状態で、追加デバイスとして使用してもよい。
図8は、半導体記憶装置2を搭載したパーソナルコンピュータ1000のシステム構成例を示すブロック図である。パーソナルコンピュータ1000は、CPU1101、ノースブリッジ1102、主メモリ1103、ビデオコントローラ1104、オーディオコントローラ1105、サウスブリッジ1109、BIOS−ROM1110、半導体記憶装置2、ODDユニット1111、EC/KBC1112(エンベデッドコントローラ/キーボードコントローラ)、及びネットワークコントローラ1113等を備えている。
パーソナルコンピュータ1000は、CPU1101の制御の下、セクタ単位(論理アドレス単位)で半導体記憶装置2へのアクセスを行う。例えばSATAインタフェースを介して、所定の論理アドレスに対する書き込みコマンド、読出しコマンド、フラッシュコマンド等の各種コマンドが半導体記憶装置2に入力される。半導体記憶装置2では、CPU20がアドレス変換テーブル31を参照することで、指示された論理アドレスに対応する物理アドレスへ、各種コマンドに応じた書き込み/読み出し処理を行う。
(変形例)
ここで、上述したアドレス変換テーブル31の変形例を説明する。図9は、変形例にかかるアドレス変換テーブル31Aを例示する概念図である。上述したアドレス変換テーブル31では、論理アドレスとページとの対応関係が一つのテーブルデータで記述されていた。しかしながら、論理アドレスとページとの対応関係は、図9のアドレス変換テーブル31Aのように、1段目LBAテーブル31Bと2段目論物変換テーブル31Cとの複数の層に別れて記述されてもよい。
ここで、上述したアドレス変換テーブル31の変形例を説明する。図9は、変形例にかかるアドレス変換テーブル31Aを例示する概念図である。上述したアドレス変換テーブル31では、論理アドレスとページとの対応関係が一つのテーブルデータで記述されていた。しかしながら、論理アドレスとページとの対応関係は、図9のアドレス変換テーブル31Aのように、1段目LBAテーブル31Bと2段目論物変換テーブル31Cとの複数の層に別れて記述されてもよい。
具体的には、アドレス変換テーブル31Aは、1段目LBAテーブル31Bと2段目論物変換テーブル31Cとを有する。1段目LBAテーブル31Bのエントリは、論理アドレスをインデックスとして、チャネルの番号と、ページに付与されたページ番号と、データが記憶されている論理ブロックに付与された論理ブロック番号とから構成される。各書き込み対象データの論理アドレスは、ホスト3からのデータの書き込みの要求において指定される論理アドレスに基づいて各々計算される。
論理ブロック番号は、書き込み対象データを関連付けるための識別情報であり、例えば、論理ブロックの生成順に付与される番号である。チャネルの番号は、ここでは、CH0〜CH4とし、論理アドレスに対応するデータが記憶されている物理ブロックがいずれのチャネルに接続されているかを示す。そしてページ番号は、論理アドレスに対応するデータが、論理ブロック番号とチャネル番号で特定される物理ブロックの中のどのページに記憶されているかを示す。尚、ページ番号としては、例えば、物理アドレスの順に付与されるものであっても良いし、ページの物理アドレス自体が付与されても良い。
1段目LBAテーブル31Bは、書き込み対象データが書き込まれるメモリ部40内の複数の記憶領域を各々特定する領域特定情報であり、論理ブロック番号と、その論理ブロックに関連付けられた各チャネルの各物理ブロックとを対応付けて記憶する。1段目LBAテーブル31Bには、論理ブロック番号をインデックスとして、論理ブロックに関連付けられた各チャネルの物理ブロックのアドレス(物理ブロックアドレス)が記憶される。このような構成において、ある論理アドレスに対応するアドレス変換テーブル31Aのエントリに記憶されていた論理ブロック番号をインデックスとし、そのインデックスで、論理ブロックに関する1段目LBAテーブル31Bのエントリを特定する。次に、1段目LBAテーブル31Bのエントリに記憶されている物理ブロックの中から、アドレス変換テーブル31Aのエントリに記録されていたチャネル番号のチャネルに接続されているメモリ部40の物理ブロックを特定する。そして、アドレス変換テーブル31Aのエントリに含まれるページ番号によって、論理アドレスに対応するデータが書き込まれているページを特定する。
このアドレス変換テーブル31Aでは、1段目LBAテーブル31B、2段目論物変換テーブル31Cの各々について、エントリデータに誤り検出符号が付与されているため、1段目LBAテーブル31B、2段目論物変換テーブル31Cのエントリデータにビット異常が発生した場合であっても、そのエントリデータを正常なエントリデータに置き換えることができる。なお、1段目LBAテーブル31B、2段目論物変換テーブル31Cの中でエントリ数が少なくデータサイズが小さくて済むテーブルの方には、誤り訂正符号を付与してもよい。
なお、本実施形態の半導体記憶装置2で実行されるプログラムは、ROM等に予め組み込まれて提供される。本実施形態の半導体記憶装置2で実行されるプログラムは、インストール可能な形式又は実行可能な形式のファイルでCD−ROM、フレキシブルディスク(FD)、CD−R、DVD(Digital Versatile Disk)等のコンピュータで読み取り可能な記録媒体に記録して提供するように構成してもよい。
さらに、本実施形態の半導体記憶装置2で実行されるプログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成しても良い。また、本実施形態の半導体記憶装置2で実行されるプログラムをインターネット等のネットワーク経由で提供または配布するように構成しても良い。
本実施形態の半導体記憶装置2で実行されるプログラムは、上述した各部(アドレス変換テーブル異常検出部21、エントリデータ検査部22、エントリデータ置換部23)を含むモジュール構成となっており、実際のハードウェアとしてはCPU(プロセッサ)が上記ROMからプログラムを読み出して実行することにより上記各部が主記憶装置上にロードされ、アドレス変換テーブル異常検出部21、エントリデータ検査部22、エントリデータ置換部23が主記憶装置上に生成されるようになっている。
なお、本発明は、上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化することができる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成することができる。例えば、実施形態に示される全構成要素からいくつかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせても良い。
1 電子機器
2 半導体記憶装置
3 ホスト
10 メモリコントローラ
11 バス
12 Host I/F
13 ROM
14 SRAM
15 NAND I/F
20 CPU
21 アドレス変換テーブル異常検出部
22 エントリデータ検査部
23 エントリデータ置換部
30 DRAM
31、31A アドレス変換テーブル
31B 1段目LBAテーブル
31C 2段目論物変換テーブル
32 有効ページビットマップ
40 メモリ部
41 メモリセル
42 ワード線
BP ページ
2 半導体記憶装置
3 ホスト
10 メモリコントローラ
11 バス
12 Host I/F
13 ROM
14 SRAM
15 NAND I/F
20 CPU
21 アドレス変換テーブル異常検出部
22 エントリデータ検査部
23 エントリデータ置換部
30 DRAM
31、31A アドレス変換テーブル
31B 1段目LBAテーブル
31C 2段目論物変換テーブル
32 有効ページビットマップ
40 メモリ部
41 メモリセル
42 ワード線
BP ページ
Claims (8)
- 論理アドレスに対応する物理アドレスへの変換にかかるエントリデータに付与された誤り検出符号をもとに、当該エントリデータに生じたビット異常を検出する異常検出手段と、
ビット異常が検出された前記エントリデータに含まれるすべてのビットのうちのいずれか1のビットを反転させたデータと、当該データで示される物理アドレスから読み出したエントリデータとに基づいて、正常なエントリデータであるか否かを検査する検査手段と、
ビット異常が検出された前記エントリデータを、検査された正常なエントリデータに置き換える置換手段と、
を備える記憶装置。 - 前記検査手段は、ビット異常が検出された前記エントリデータに含まれる各ビットを1ビットずつ順次反転させるごとに検査し、
前記置換手段は、正常なエントリデータであると検査されたビットが1箇所である場合に、ビット異常が検出された前記エントリデータを、検査された正常なエントリデータに置き換える、
請求項1に記載の記憶装置。 - 前記誤り検出符号はパリティビットである請求項1又は2に記載の記憶装置。
- 前記検査手段は、ビット異常が検出された前記エントリデータに含まれるすべてのビットのうちのいずれか1のビットを反転させたデータが予め設定された範囲の物理アドレスを示すエントリデータである場合に、前記ビットを反転させたデータを正常なエントリデータであるとする、
請求項1乃至3のいずれか一項に記載の記憶装置。 - 物理アドレス毎に、当該物理アドレスが使用中であるか未使用であるかを管理するアドレス管理手段を更に備え、
前記検査手段は、ビット異常が検出された前記エントリデータに含まれるすべてのビットのうちのいずれか1のビットを反転させたデータが示す物理アドレスが使用中として管理されている場合に、前記ビットを反転させたデータを正常なエントリデータであるとする、
請求項1乃至4のいずれか一項に記載の記憶装置。 - 物理アドレスで指定されるメモリ領域には、当該物理アドレスに対応した論理アドレスが格納され、
前記検査手段は、ビット異常が検出された前記エントリデータに含まれるすべてのビットのうちのいずれか1のビットを反転させたデータが示す物理アドレスで指定されたメモリ領域から読み出した論理アドレスが、ビットを反転させたエントリデータにかかる論理アドレスと一致する場合に、当該ビットを反転させたエントリデータを正常なエントリデータであるとする、
請求項1乃至5のいずれか一項に記載の記憶装置。 - 請求項1乃至6のいずれか一項に記載の記憶装置を備えた電子機器。
- データを記憶する記憶装置で実行される誤りデータの訂正方法であって、
論理アドレスに対応する物理アドレスへの変換にかかるエントリデータに付与された誤り検出符号をもとに、当該エントリデータに生じたビット異常を検出するステップと、
ビット異常が検出された前記エントリデータに含まれるすべてのビットのうちのいずれか1のビットを反転させたデータと、当該データで示される物理アドレスから読み出したエントリデータとに基づいて、正常なエントリデータであるか否かを検査するステップと、
ビット異常が検出された前記エントリデータを、検査された正常なエントリデータに置き換えるステップと、
を具備する誤りデータの訂正方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2010206070A JP4901987B1 (ja) | 2010-09-14 | 2010-09-14 | 記憶装置、電子機器及び誤りデータの訂正方法 |
US13/158,766 US8671330B2 (en) | 2010-09-14 | 2011-06-13 | Storage device, electronic device, and data error correction method |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2010206070A JP4901987B1 (ja) | 2010-09-14 | 2010-09-14 | 記憶装置、電子機器及び誤りデータの訂正方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP4901987B1 true JP4901987B1 (ja) | 2012-03-21 |
JP2012063882A JP2012063882A (ja) | 2012-03-29 |
Family
ID=45807861
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2010206070A Expired - Fee Related JP4901987B1 (ja) | 2010-09-14 | 2010-09-14 | 記憶装置、電子機器及び誤りデータの訂正方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US8671330B2 (ja) |
JP (1) | JP4901987B1 (ja) |
Families Citing this family (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9740439B2 (en) * | 2011-12-23 | 2017-08-22 | International Business Machines Corporation | Solid-state storage management |
US20130275692A1 (en) * | 2012-04-16 | 2013-10-17 | Shak Loong Kwok | Storage device and methods thereof |
US8601347B1 (en) * | 2012-06-21 | 2013-12-03 | Hitachi, Ltd. | Flash memory device and storage control method |
US9158678B2 (en) * | 2013-03-13 | 2015-10-13 | Kabushiki Kaisha Toshiba | Memory address management system and method |
US9292379B2 (en) * | 2013-09-28 | 2016-03-22 | Intel Corporation | Apparatus and method to manage high capacity storage devices |
TWI522804B (zh) * | 2014-04-23 | 2016-02-21 | 威盛電子股份有限公司 | 快閃記憶體控制器以及資料儲存裝置以及快閃記憶體控制方法 |
JP6248921B2 (ja) * | 2014-12-22 | 2017-12-20 | ソニー株式会社 | メモリコントローラ、記憶装置、および、情報処理システム |
US9785570B2 (en) | 2015-03-09 | 2017-10-10 | Samsung Electronics Co., Ltd. | Memory devices and modules |
US10162537B2 (en) * | 2015-09-10 | 2018-12-25 | Samsung Electronics Co., Ltd. | Methods and systems to detect silent corruption of data |
TWI587132B (zh) | 2016-01-21 | 2017-06-11 | 瑞昱半導體股份有限公司 | 記憶體裝置以及映射表保證方法 |
JP2018041204A (ja) * | 2016-09-06 | 2018-03-15 | 東芝メモリ株式会社 | メモリ装置及び情報処理システム |
US10127103B2 (en) * | 2016-09-07 | 2018-11-13 | Sandisk Technologies Llc | System and method for detecting and correcting mapping table errors in a non-volatile memory system |
KR20180051706A (ko) * | 2016-11-07 | 2018-05-17 | 삼성전자주식회사 | 어드레스 맵핑 테이블의 에러 정정을 수행하는 메모리 시스템 |
US10459786B2 (en) * | 2017-06-27 | 2019-10-29 | Western Digital Technologies, Inc. | Scaling large drives using enhanced DRAM ECC |
CN111656330B (zh) * | 2017-12-21 | 2023-11-10 | 北极星特许集团有限责任公司 | Nand逻辑到物理表区域跟踪 |
US10949130B2 (en) * | 2018-05-10 | 2021-03-16 | Seagate Technology Llc | Virtual solid state storage system with solid state storage error emulation |
US10776201B2 (en) * | 2018-12-28 | 2020-09-15 | Micron Technology, Inc. | Extended error correction in storage device |
US11010241B2 (en) | 2019-01-09 | 2021-05-18 | Arm Limited | Translation protection in a data processing apparatus |
JP7048650B2 (ja) * | 2020-02-04 | 2022-04-05 | キオクシア株式会社 | メモリ装置及び方法 |
CN113590502B (zh) * | 2021-07-23 | 2024-03-22 | 合肥康芯威存储技术有限公司 | 一种非挥发性记忆体存储设备的垃圾回收方法与垃圾回收系统 |
JP7457740B2 (ja) | 2022-03-03 | 2024-03-28 | 株式会社日立製作所 | ストレージシステム及びその制御方法 |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH02159651A (ja) * | 1988-12-13 | 1990-06-19 | Nec Corp | データメモリの監視方式 |
JPH0520200A (ja) | 1991-07-09 | 1993-01-29 | Nec Corp | アドレス変換バツフアエラー処理方式 |
JPH0527403A (ja) * | 1991-07-24 | 1993-02-05 | Fuji Photo Film Co Ltd | 画像形成装置 |
JPH0667912A (ja) * | 1992-08-20 | 1994-03-11 | Yokogawa Electric Corp | エラー検出訂正回路 |
JPH10124384A (ja) | 1996-08-28 | 1998-05-15 | Toshiba Corp | 不揮発性半導体メモリの制御方法 |
US20020029365A1 (en) * | 1998-12-17 | 2002-03-07 | Yoshimichi Sato | Information processing apparatus |
JP3398686B2 (ja) * | 1999-06-14 | 2003-04-21 | エヌイーシーマイクロシステム株式会社 | 半導体記憶装置 |
JP2002132586A (ja) * | 2000-10-25 | 2002-05-10 | Pumpkin House:Kk | コンテンツへの情報埋込み方法および装置,コンテンツ復元方法および装置,ならびに情報取出し方法および装置 |
JP3866536B2 (ja) * | 2001-06-27 | 2007-01-10 | 株式会社デンソー | 車両の自動運転システム |
JP4300462B2 (ja) * | 2003-04-23 | 2009-07-22 | 富士フイルム株式会社 | 情報記録再生方法及び装置 |
JP3984209B2 (ja) * | 2003-07-31 | 2007-10-03 | 株式会社東芝 | 半導体記憶装置 |
JP4375219B2 (ja) * | 2003-11-27 | 2009-12-02 | 横河電機株式会社 | 試験装置 |
CN1954390B (zh) * | 2004-05-20 | 2012-04-25 | 美国模拟器件公司 | 存储器单元的修复 |
US7274607B2 (en) * | 2005-06-15 | 2007-09-25 | Micron Technology, Inc. | Bitline exclusion in verification operation |
JP4939234B2 (ja) | 2007-01-11 | 2012-05-23 | 株式会社日立製作所 | フラッシュメモリモジュール、そのフラッシュメモリモジュールを記録媒体として用いたストレージ装置及びそのフラッシュメモリモジュールのアドレス変換テーブル検証方法 |
-
2010
- 2010-09-14 JP JP2010206070A patent/JP4901987B1/ja not_active Expired - Fee Related
-
2011
- 2011-06-13 US US13/158,766 patent/US8671330B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
US20120066568A1 (en) | 2012-03-15 |
JP2012063882A (ja) | 2012-03-29 |
US8671330B2 (en) | 2014-03-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4901987B1 (ja) | 記憶装置、電子機器及び誤りデータの訂正方法 | |
KR101459861B1 (ko) | 스트라이프 기반 메모리 작동 | |
JP5585919B2 (ja) | 電源遮断管理 | |
TWI436211B (zh) | 區塊管理方法、記憶體控制器與記憶體儲存裝置 | |
US20130191705A1 (en) | Semiconductor storage device | |
JP2014160478A (ja) | ストライプに基づく不揮発性多値メモリ操作 | |
US8516184B2 (en) | Data updating using mark count threshold in non-volatile memory | |
TWI476590B (zh) | 記憶體管理方法、記憶體控制器與記憶體儲存裝置 | |
US8756398B2 (en) | Partitioning pages of an electronic memory | |
US20130254463A1 (en) | Memory system | |
US8694748B2 (en) | Data merging method for non-volatile memory module, and memory controller and memory storage device using the same | |
JP2009211204A (ja) | メモリシステム | |
US9721669B2 (en) | Data protection method, memory control circuit unit and memory storage apparatus | |
KR20150029402A (ko) | 데이터 저장 시스템 및 그것의 동작 방법 | |
US20070294588A1 (en) | Performing a diagnostic on a block of memory associated with a correctable read error | |
US20130166991A1 (en) | Non-Volatile Semiconductor Memory Device Using Mats with Error Detection and Correction and Methods of Managing the Same | |
JP2010500699A (ja) | メモリデバイス内のセクタごとに許容できるビットエラー | |
US8966344B2 (en) | Data protecting method, memory controller and memory storage device | |
US9990152B1 (en) | Data writing method and storage controller | |
US9467175B2 (en) | Decoding method, memory storage device and memory controlling circuit unit | |
TWI467364B (zh) | 記憶體儲存裝置、記憶體控制器與資料寫入方法 | |
US9367390B2 (en) | Memory controlling method, memory storage device and memory controlling circuit unit | |
US9778862B2 (en) | Data storing method for preventing data losing during flush operation, memory control circuit unit and memory storage apparatus | |
US8738847B2 (en) | Data writing method, and memory controller and memory storage apparatus using the same | |
JP2012252557A (ja) | メモリコントローラ |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
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 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20111227 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20150113 Year of fee payment: 3 |
|
LAPS | Cancellation because of no payment of annual fees |