(57)【特許請求の範囲】
【請求項１】
記憶デバイスのコントローラによって実行されるデータ読出方法であって、
読み出しターゲットアドレスを含む読み出し命令を受信したとき、前記読み出しターゲットアドレスが指すデータが、前記記憶デバイスの予め設定されたキャッシュエリアにキャッシュされているかを判断する段階と、
前記読み出しターゲットアドレスが指す前記データが前記予め設定されたキャッシュエリアにキャッシュされている場合、第１マッピング関係に従って、前記読み出しターゲットアドレスに対応するキャッシュアドレスを見付け、前記予め設定されたキャッシュエリアから、前記キャッシュアドレスが指すデータを読み出す段階であって、前記第１マッピング関係は、前記ターゲットアドレスと前記キャッシュアドレスとの間の対応関係を記録するために用いられる、段階、又は、前記読み出しターゲットアドレスが指す前記データが前記予め設定されたキャッシュエリアにキャッシュされていない場合、不揮発性記憶空間から、前記読み出しターゲットアドレスが指す前記データを読み出す段階と
を備え、
前記方法は、
書き込み命令を受信したとき、前記書き込み命令における書き込みターゲットアドレスが前記不揮発性記憶空間における最上位ビットページ（ＭＳＢページ）に属するかを判断する段階であって、前記書き込み命令は、書き込まれるべきデータと前記書き込みターゲットアドレスとを含む、段階と、
前記書き込みターゲットアドレスが前記不揮発性記憶空間におけるＭＳＢページに属さない場合、前記予め設定されたキャッシュエリアと前記書き込みターゲットアドレスに対応する前記不揮発性記憶空間とに、前記書き込まれるべきデータを記憶し、前記キャッシュアドレスと前記ターゲットアドレスとの間の前記第１マッピング関係を確立する段階と
をさらに備える
データ読出方法。
【請求項２】
前記書き込みターゲットアドレスが前記不揮発性記憶空間におけるＭＳＢページに属する場合、前記書き込みターゲットアドレスに対応する前記不揮発性記憶空間に、前記書き込まれるべきデータを記憶する段階
をさらに備える請求項１に記載の方法。
【請求項３】
前記不揮発性記憶空間における全ての共有ページグループのＭＳＢページとＬＳＢページとの間の最大のページ数の差であるｍを取得する段階であって、ｍは自然数である、段階と、
前記予め設定されたキャッシュエリアに対して、少なくともｎ＊ｐ＋ｍのページの大きさでキャッシュ空間を割り当てる段階であって、ｐは、前記不揮発性記憶空間におけるＭＳＢページの共有ページの数を表し、ｎは、自然数であって少なくとも１である、段階と
をさらに備える請求項２に記載の方法。
【請求項４】
前記書き込みターゲットアドレスが前記不揮発性記憶空間におけるＭＳＢページに属する場合、前記書き込みターゲットアドレスが位置する前記ＭＳＢページが、ブロック（ｂｌｏｃｋ）における最後のＭＳＢページであるかを判断する段階と、
前記書き込みターゲットアドレスが位置する前記ＭＳＢページが前記ブロックにおける最後のＭＳＢページではない場合、前記書き込みターゲットアドレスが位置する前記ＭＳＢページから前へ数えてｎ番目のＭＳＢページの共有ページのアドレスを取得し、前記取得したアドレスを、データ解放アドレスとして用いる段階、又は、前記書き込みターゲットアドレスが位置する前記ＭＳＢページは、前記ブロックにおける最後のＭＳＢページである場合、前記ブロックにおける最後のｎ＋１のＭＳＢページの共有ページのアドレスを取得し、前記取得したアドレスを前記データ解放アドレスとして用いる段階と、
前記予め設定されたキャッシュエリアにあって前記データ解放アドレスとの前記第１マッピング関係を有するキャッシュアドレスが指すデータを解放し、前記第１マッピング関係から前記データ解放アドレスを削除する段階と
をさらに備える請求項３に記載の方法。
【請求項５】
パワーオフ中、前記不揮発性記憶空間に、前記予め設定されたキャッシュエリアにおけるデータを保存し、前記キャッシュアドレスと前記不揮発性記憶空間における保存アドレスとの間の第２マッピング関係を確立する段階と、
パワーオン中、前記第２マッピング関係に従って、前記予め設定されたキャッシュエリアにおけるキャッシュアドレスに、前記不揮発性記憶空間における前記保存アドレスが指す前記データをキャッシュする段階と
をさらに備える請求項１から４の何れか一項に記載の方法。
【請求項６】
前記予め設定されたキャッシュエリアは、ダブルデータレート同時ダイナミックランダムアクセスメモリＤＤＲ、又はスタティックランダムアクセスメモリＳＲＡＭに位置する、請求項１から４の何れか一項に記載の方法。
【請求項７】
前記不揮発性記憶空間は、ソリッドステートドライブＳＳＤの記憶空間である、請求項１から４の何れか一項に記載の方法。
【請求項８】
第１判断モジュールと、
第１読み出しモジュールと、
第２読み出しモジュールと
を備えるデータ読出装置であって、
前記第１判断モジュールは、読み出しターゲットアドレスを含む読み出し命令を受信したとき、前記読み出しターゲットアドレスが指すデータが、記憶デバイスの予め設定されたキャッシュエリアにキャッシュされているかを判断し、第１判断結果を、前記第１読み出しモジュール及び前記第２読み出しモジュールに送信し、
前記第１読み出しモジュールは、前記読み出しターゲットアドレスが指す前記データが、前記予め設定されたキャッシュエリアにキャッシュされているとき、第１マッピング関係に従って、前記読み出しターゲットアドレスに対応するキャッシュアドレスを見付け、前記予め設定されたキャッシュエリアから、前記キャッシュアドレスが指すデータを読み出し、前記第１マッピング関係は、前記ターゲットアドレスと前記キャッシュアドレスとの間の対応関係を記録するために用いられ、
前記第２読み出しモジュールは、前記読み出しターゲットアドレスが指す前記データが、前記予め設定されたキャッシュエリアにキャッシュされていないとき、不揮発性記憶空間から、前記読み出しターゲットアドレスが指す前記データを読み出す、
データ読出装置であって、
前記装置は、
第２判断モジュールと、
第１書き込みモジュールと、
をさらに備え、
前記第２判断モジュールは、書き込み命令を受信したとき、前記書き込み命令における書き込みターゲットアドレスが前記不揮発性記憶空間における最上位ビットページ（ＭＳＢページ）に属するかを判断し、第２判断結果を、前記第１書き込みモジュール及び第２書き込みモジュールに送信し、前記書き込み命令は、書き込まれるべきデータと前記書き込みターゲットアドレスとを含み、
前記第１書き込みモジュールは、前記書き込みターゲットアドレスが前記不揮発性記憶空間におけるＭＳＢページに属さないと判断されたとき、前記予め設定されたキャッシュエリアと前記書き込みターゲットアドレスに対応する前記不揮発性記憶空間とに、前記書き込まれるべきデータを記憶し、前記キャッシュアドレスと前記ターゲットアドレスとの間の前記第１マッピング関係を確立する
データ読出装置。
【請求項９】
前記装置は、前記書き込みターゲットアドレスが、前記不揮発性記憶空間におけるＭＳＢページに属すると判断されたとき、前記書き込みターゲットアドレスに対応する前記不揮発性記憶空間に、前記書き込まれるべきデータを記憶する第２書き込みモジュールをさらに備える、
請求項８に記載の装置。
【請求項１０】
第３取得モジュールと、割り当てモジュールとをさらに備え、
前記第３取得モジュールは、前記不揮発性記憶空間における全ての共有ページグループのＭＳＢページとＬＳＢページとの間の最大のページ数の差であるｍを取得し、前記割り当てモジュールに、ｍを送信し、ｍは自然数であり、
前記割り当てモジュールは、前記予め設定されたキャッシュエリアに対して、少なくともｎ＊ｐ＋ｍのページの大きさで、キャッシュ空間を割り当て、ｐは、前記不揮発性記憶空間におけるＭＳＢページの共有ページの数を表し、ｎは自然数であって少なくとも１である、
請求項９に記載の装置。
【請求項１１】
第３判断モジュールと、第１取得モジュールと、第２取得モジュールと、解放モジュールとをさらに備え、
前記第３判断モジュールは、前記書き込みターゲットアドレスが前記不揮発性記憶空間におけるＭＳＢページに属するとき、前記書き込みターゲットアドレスが位置する前記ＭＳＢページがブロック（ｂｌｏｃｋ）における最後のＭＳＢページであるかを判断し、第３判断結果を、前記第１取得モジュール及び前記第２取得モジュールに送信し、
前記第１取得モジュールは、前記書き込みターゲットアドレスが位置する前記ＭＳＢページが、前記ブロックにおける最後のＭＳＢページではないとき、前記書き込みターゲットアドレスが位置する前記ＭＳＢページから前へ数えてｎ番目のＭＳＢページの共有ページのアドレスを取得し、前記取得したアドレスを、データ解放アドレスとして用い、前記データ解放アドレスを、前記解放モジュールに送信し、
前記第２取得モジュールは、前記書き込みターゲットアドレスが位置する前記ＭＳＢページが、前記ブロックにおける前記最後のＭＳＢページであるとき、前記ブロックにおける最後のｎ＋１のＭＳＢページの共有ページのアドレスを取得し、前記取得したアドレスを、前記データ解放アドレスとして用い、前記データ解放アドレスを、前記解放モジュールに送信し、
前記解放モジュールは、前記予め設定されたキャッシュエリアにあって前記データ解放アドレスとの前記第１マッピング関係を有するキャッシュアドレスが指すデータを解放し、前記第１マッピング関係から前記データ解放アドレスを削除する、
請求項１０に記載の装置。
【請求項１２】
保存モジュールと、キャッシングモジュールとをさらに備え、
前記保存モジュールは、パワーオフ中、前記不揮発性記憶空間に、前記予め設定されたキャッシュエリアにおけるデータを保存し、前記キャッシュアドレスと、前記不揮発性記憶空間における保存アドレスとの間の第２マッピング関係を確立し、前記第２マッピング関係を、前記キャッシングモジュールに送信し、
前記キャッシングモジュールは、パワーオン中、前記第２マッピング関係に従って、前記予め設定されたキャッシュエリアにおける前記キャッシュアドレスに、前記不揮発性記憶空間における前記保存アドレスが指す前記データをキャッシュする、
請求項８から１１の何れか一項に記載の装置。
【請求項１３】
前記予め設定されたキャッシュエリアは、ダブルデータレート同時ダイナミックランダムアクセスメモリＤＤＲ、又はスタティックランダムアクセスメモリＳＲＡＭに位置する、請求項８に記載の装置。
【請求項１４】
前記不揮発性記憶空間は、ソリッドステートドライブＳＳＤの記憶空間である、請求項８に記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本出願は、ストレージ分野に関し、特に、データ読出方法及び装置に関する。
【背景技術】
【０００２】
現在、ソリッドステートドライブ（英語表記：Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ、略してＳＳＤ）上の、記憶のために用いられる各フローティングゲートトランジスタは、２つ又は３つのビット（英語表記：ｂｉｔ）を記憶することができる。各フローティングゲートトランジスタに記憶されるビットは、異なるページ（英語表記：ｐａｇｅ）上に別々に分布する。従って、各ブロックにおけるページは、フローティングゲートトランジスタにおける記憶位置に応じて、２つ又は３つの異なる種類に分類される。
【０００３】
マルチレベルセル記憶（英語表記：Ｍｕｌｔｉ  Ｌｅｖｅｌ  Ｃｅｌｌ、略してＭＬＣ）を例として用いて、マルチレベルセル記憶のフローティングゲートトランジスタの２つのビットはそれぞれ、最下位ビット（英語表記：Ｌｅａｓｔ  Ｓｉｇｎｉｆｉｃａｎｔ  Ｂｉｔ、略してＬＳＢ）、及び最上位ビット（英語表記：Ｍｏｓｔ  Ｓｉｇｎｉｆｉｃａｎｔ  Ｂｉｔ、略してＭＳＢ）と称される。従って、各ブロックにおいて、フローティングゲートトランジスタにおける異なるビットが別々に位置するページは、ＬＳＢページ（フローティングゲートトランジスタのＬＳＢを記憶するためのものであり、ＬＳＢページはまた、下位ページと称され得るが、本出願においては統一してＬＳＢページが用いられる）、及びＭＳＢページ（フローティングゲートトランジスタのＭＳＢを記憶するためのものであり、ＭＳＢページはまた、上位ページと称され得るが、本出願においては統一してＭＳＢページが用いられる）といった２種類に分類される。ＬＳＢページ及びＭＳＢページの対応ビットのデータが同一のフローティングゲートトランジスタに記憶されることに基づき、ＬＳＢページ及びＭＳＢページは、１つの共有ページ（英語表記：ｓｈａｒｅｄ  ｐａｇｅｓ）グループに属する。具体的には、表１は、あるベンダのＭＬＣのブロックにおける共有ページを説明する。
【表１】
0006399720.tif 000002
【０００４】
データが書き込まれているとき、ＬＳＢがＭＳＢの前に書き込まれることが必要である。従って、データは、ＬＳＢページ全体が満ちている後にのみ、対応するＭＳＢページに書き込まれることができる。しかしながら、データをＭＳＢページに書き込むことは、前にＬＳＢページに書き込まれていたデータへの干渉を生じさせる。前述のベンダのＭＬＣを例として用いて、表２は、実験によりデータ書き込み中に取得された干渉データを説明する。
【表２】
0006399720.tif 000003
【０００５】
前述の表２は、データが横方向のページに書き込まれたときの縦方向のページ上の干渉を説明する。データがＭＳＢページに書き込まれているとき、比較的重大な誤り訂正符号（英語表記：Ｅｒｒｏｒ  Ｃｏｒｒｅｃｔｉｎｇ  Ｃｏｄｅ、略してＥＣＣ）誤り、又は訂正不可能なＥＣＣ誤り（英語表記：Ｕｎｃｏｒｒｅｃｔａｂｌｅ  ＥＣＣ  Ｅｒｒｏｒ、略してＵＮＣ）が、ＭＳＢページの共有ＬＳＢページ上で、及び隣接するＭＳＢページの共有ＬＳＢページ上で発生し得ることは、前述の表２から分かる。表２に示されているように、下線が施されたデータは、比較的重大な誤りを有する。
【０００６】
同様に、そのフローティングゲートトランジスタがより多くのビットを記憶する記憶デバイス、例えば、そのフローティングゲートトランジスタが３つのビットを記憶する記憶デバイスに対して、それは、共有ページグループが、ＬＡＢページと、中位ビット（英語表記：ｍｉｄｄｌｅ  ｓｉｇｎｉｆｉｃａｎｔ  ｂｉｔ、略してＣＳＢ）ページと、ＭＳＢページとを含むことを意味し、上位ページに書き込むことはまた、下位ページへの書き込み干渉を生じさせる。
【０００７】
従って、下位ページが書き込み干渉を受けるとき、データがその下位ページから読み出される場合、データ読み出し誤りが発生する。この課題に対する既存の一般的な解決手段は、ＳＳＤのＥＣＣ誤り訂正能力を改善することを目的とし、これにより、記憶デバイスのコントローラが、書き込み干渉を受けるページからデータを読み出すとき、ＥＣＣを用いることによってデータ読み出し誤りを訂正する。しかしながら、ＥＣＣ誤り訂正能力を改善することは、コントローラによるサポートを必要とする。加えて、記憶デバイスにより提供される、ＥＣＣのための予備エリアの空間が与えられたとき、ＥＣＣ誤り訂正能力をさらに改善することは困難である。従って、データの読み出し中に、読み出し誤りは、書き込み干渉に起因し依然として発生する。
【発明の概要】
【０００８】
本出願は、書き込み干渉により引き起こされるデータ読み出し誤りを低減するように、データ読出方法及び装置を提供する。
【０００９】
本出願の第１態様は、データ読出方法を提供する。方法は、読み出しターゲットアドレスを含む読み出し命令を受信したとき、読み出しターゲットアドレスが指すデータが予め設定されたキャッシュエリアにキャッシュされているかを判断する段階と、読み出しターゲットアドレスが指すデータが予め設定されたキャッシュエリアにキャッシュされている場合、第１マッピング関係に従って、読み出しターゲットアドレスに対応するキャッシュアドレスを見付け、予め設定されたキャッシュエリアから、キャッシュアドレスが指すデータを読み出す段階であって、第１マッピング関係は、ターゲットアドレスとキャッシュアドレスとの間の対応関係を記録するために用いられる、段階、又は、読み出しターゲットアドレスが指すデータが予め設定されたキャッシュエリアにキャッシュされていない場合、不揮発性記憶空間から、読み出しターゲットアドレスが指すデータを読み出す段階とを備える。
【００１０】
第１態様に関連して、第１態様の第１の可能な実施方式において、方法は、書き込み命令を受信したとき、書き込み命令における書き込みターゲットアドレスが不揮発性記憶空間における最上位ビットページ（ＭＳＢページ）に属するかを判断する段階であって、書き込み命令は、書き込まれるべきデータと書き込みターゲットアドレスとを含む、段階と、書き込みターゲットアドレスが不揮発性記憶空間におけるＭＳＢページに属さない場合、予め設定されたキャッシュエリアと書き込みターゲットアドレスに対応する不揮発性記憶空間とに、その書き込まれるべきデータを記憶し、キャッシュアドレスとターゲットアドレスとの間の第１マッピング関係を確立する段階、又は、書き込みターゲットアドレスが不揮発性記憶空間におけるＭＳＢページに属する場合、書き込みターゲットアドレスに対応する不揮発性記憶空間に、書き込まれるべきデータを記憶する段階とをさらに備える。
【００１１】
第１態様の第１の可能な実施方式に関連して、第１態様の第２の可能な実施方式において、方法は、不揮発性記憶空間における全ての共有ページグループのＭＳＢページとＬＳＢページとの間の最大のページ数の差であるｍを取得する段階であって、ｍは自然数である、段階と、予め設定されたキャッシュエリアに対して、少なくともｎ＊ｐ＋ｍのページの大きさでキャッシュ空間を割り当てる段階であって、ｐは、不揮発性記憶空間におけるＭＳＢページの共有ページの数を表し、ｎは自然数であって少なくとも１である、段階とをさらに備える。
【００１２】
第１態様の第２の可能な実施方式に関連して、第１態様の第３の可能な実施方式において、方法は、書き込みターゲットアドレスが不揮発性記憶空間におけるＭＳＢページに属する場合、書き込みターゲットアドレスが位置するＭＳＢページは、ブロック（ｂｌｏｃｋ）における最後のＭＳＢページであるかを判断する段階と、書き込みターゲットアドレスが位置するＭＳＢページがブロックにおける最後のＭＳＢページではない場合、書き込みターゲットアドレスが位置するＭＳＢページから前へ数えてｎ番目のＭＳＢページの共有ページのアドレスを取得し、取得したアドレスをデータ解放アドレスとして用いる段階、又は、書き込みターゲットアドレスが位置するＭＳＢページがブロックにおける最後のＭＳＢページである場合、ブロックにおける最後のｎ＋１のＭＳＢページの共有ページのアドレスを取得し、取得したアドレスをデータ解放アドレスとして用いる段階と、予め設定されたキャッシュエリアにあってデータ解放アドレスとの第１マッピング関係を有するキャッシュアドレスが指すデータを解放し、第１マッピング関係からデータ解放アドレスを削除する段階とをさらに備える。
【００１３】
第１態様、又は第１態様の第１から第３の可能な実施方式に関連して、第１態様の第４の可能な実施方式において、方法は、パワーオフ中、不揮発性記憶空間に、予め設定されたキャッシュエリアにおけるデータを保存し、キャッシュアドレスと不揮発性記憶空間における保存アドレスとの間の第２マッピング関係を確立する段階と、パワーオン中、第２マッピング関係に従って予め設定されたキャッシュエリアにおけるキャッシュアドレスに、不揮発性記憶空間における保存アドレスが指すデータをキャッシュする段階とをさらに備える。
【００１４】
第１態様、又は第１態様の第１から第３の可能な実施方式に関連して、第１態様の第５の可能な実施方式において、予め設定されたキャッシュエリアは、ダブルデータレート同時ダイナミックランダムアクセスメモリＤＤＲ、又はスタティックランダムアクセスメモリＳＲＡＭに位置する。
【００１５】
第１態様、又は第１態様の第１から第３の可能な実施方式に関連して、第１態様の第６の可能な実施方式において、不揮発性記憶空間は、ソリッドステートドライブＳＳＤの記憶空間である。
【００１６】
本出願の第２態様では、データ読出装置を提供する。装置は、第１判断モジュールと、第１読み出しモジュールと、第２読み出しモジュールとを備える。第１判断モジュールは、読み出しターゲットアドレスを含む読み出し命令を受信した場合、読み出しターゲットアドレスが指すデータが、予め設定されたキャッシュエリアにキャッシュされているかを判断し、第１判断結果を、第１及び第２読み出しモジュールに送信するよう構成される。第１読み出しモジュールは、読み出しターゲットアドレスが指すデータが予め設定されたキャッシュエリアにキャッシュされているとき、第１マッピング関係に従って、読み出しターゲットアドレスに対応するキャッシュアドレスを見付け、予め設定されたキャッシュエリアから、キャッシュアドレスが指すデータを読み出すよう構成され、ここで、第１マッピング関係は、ターゲットアドレスとキャッシュアドレスとの間の対応関係を記録するために用いられる。第２読み出しモジュールは、読み出しターゲットアドレスが指すデータが予め設定されたキャッシュエリアにキャッシュされていないとき、不揮発性記憶空間から、読み出しターゲットアドレスが指すデータを読み出すよう構成される。
【００１７】
第２態様に関連して、第２態様の第１の可能な実施方式において、装置は、第２判断モジュールと、第１書き込みモジュールと、第２書き込みモジュールとをさらに備える。第２判断モジュールは、書き込み命令を受信したとき、書き込み命令における書き込みターゲットアドレスが、不揮発性記憶空間における最上位ビットページ（ＭＳＢページ）に属するかを判断し、第２判断結果を、第１及び第２書き込みモジュールに送信するよう構成され、ここで、書き込み命令は、書き込まれるべきデータと書き込みターゲットアドレスとを含む。第１書き込みモジュールは、書き込みターゲットアドレスが不揮発性記憶空間におけるＭＳＢページに属さないと判断されたとき、予め設定されたキャッシュエリアと書き込みターゲットアドレスに対応する不揮発性記憶空間とに、書き込まれるべきデータを記憶し、キャッシュアドレスとターゲットアドレスとの間の第１マッピング関係を確立するよう構成される。第２書き込みモジュールは、書き込みターゲットアドレスが不揮発性記憶空間におけるＭＳＢページに属すると判断されたとき、書き込みターゲットアドレスに対応する不揮発性記憶空間に、書き込まれるべきデータを記憶するよう構成される。
【００１８】
第２態様の第１の可能な実施方式に関連して、第２態様の第２の可能な実施方式において、装置は、第３取得モジュールと割り当てモジュールとをさらに備える。第３取得モジュールは、不揮発性記憶空間における全ての共有ページグループのＭＳＢページとＬＳＢページとの間の最大のページ数の差であるｍを取得し、割り当てモジュールに、ｍを送信するよう構成され、ここで、ｍは自然数である。割り当てモジュールは、予め設定されたキャッシュエリアに対して、少なくともｎ＊ｐ＋ｍのページの大きさでキャッシュ空間を割り当てるよう構成され、ここで、ｐは、不揮発性記憶空間におけるＭＳＢページの共有ページの数を表し、ｎは、自然数であって少なくとも１である。
【００１９】
第２態様の第２の可能な実施方式に関連して、第２態様の第３の可能な実施方式において、装置は、第３判断モジュールと、第１取得モジュールと、第２取得モジュールと、解放モジュールとをさらに備える。第３判断モジュールは、書き込みターゲットアドレスが不揮発性記憶空間におけるＭＳＢページに属するとき、書き込みターゲットアドレスが位置するＭＳＢページがブロック（ｂｌｏｃｋ）における最後のＭＳＢページであるかを判断し、第３判断結果を、第１及び第２取得モジュールに送信するよう構成される。第１取得モジュールは、書き込みターゲットアドレスが位置するＭＳＢページがブロックにおける最後のＭＳＢページではないとき、書き込みターゲットアドレスが位置するＭＳＢページから前へ数えてｎ番目のＭＳＢページの共有ページのアドレスを取得し、取得したアドレスを、データ解放アドレスとして用い、データ解放アドレスを、解放モジュールに送信するよう構成される。第２取得モジュールは、書き込みターゲットアドレスが位置するＭＳＢページがブロックにおける最後のＭＳＢページであるとき、ブロックにおける最後のｎ＋１のＭＳＢページの共有ページのアドレスを取得し、取得したアドレスを、データ解放アドレスとして用い、データ解放アドレスを、解放モジュールに送信するよう構成される。解放モジュールは、予め設定されたキャッシュエリアにあってデータ解放アドレスとの第１マッピング関係を有するキャッシュアドレスが指すデータを解放し、第１マッピング関係から、データ解放アドレスを削除するよう構成される。
【００２０】
第２態様、又は第２態様の第１から第３の可能な実施方式に関連して、第２態様の第４の可能な実施方式において、装置は、保存モジュールとキャッシングモジュールとをさらに備える。保存モジュールは、パワーオフ中、不揮発性記憶空間に、予め設定されたキャッシュエリアにおけるデータを保存し、キャッシュアドレスと不揮発性記憶空間における保存アドレスとの間の第２マッピング関係を確立し、第２マッピング関係をキャッシングモジュールに送信するよう構成される。キャッシングモジュールは、パワーオン中、第２マッピング関係に従って、予め設定されたキャッシュエリアにおけるキャッシュアドレスに、不揮発性記憶空間における保存アドレスが指すデータをキャッシュするよう構成される。
【００２１】
第２態様、又は第２態様の第１から第３の可能な実施方式に関連して、第２態様の第５の可能な実施方式において、予め設定されたキャッシュエリアは、ダブルデータレート同時ダイナミックランダムアクセスメモリＤＤＲ、又はスタティックランダムアクセスメモリＳＲＡＭに位置する。
【００２２】
第２態様、又は第２態様の第１から第３の可能な実施方式に関連して、第２態様の第６の可能な実施方式において、不揮発性記憶空間は、ソリッドステートドライブＳＳＤの記憶空間である。
【００２３】
前述の解決手段において、キャッシュされたデータが優先的に読み出される方式が用いられる。読み出しターゲットアドレスが指すデータが予め設定されたキャッシュエリアにキャッシュされているとき、データは、予め設定されたキャッシュエリアから優先的に読み出される。キャッシュエリアにおけるデータは、不揮発性記憶空間におけるデータのように書き込み干渉を受けないので、書き込み干渉により引き起こされる読み出し誤りが低減され、記憶デバイスの信頼性が改善される。
【図面の簡単な説明】
【００２４】
【図１】本出願に係るデータ読出方法の実施方式のフローチャートである。
【００２５】
【図２】本出願に係るデータ読出方法の別の実施方式の部分フローチャートである。
【００２６】
【図３】本出願に係るデータ読出方法のさらに別の実施方式のフローチャートである。
【００２７】
【図４】本出願に係るデータ読出方法のさらに別の実施方式の部分フローチャートである。
【００２８】
【図５】本出願に係るデータ読出装置の実施方式の模式的な構造図である。
【００２９】
【図６】本出願に係るデータ読出装置の別の実施方式の模式的な構造図である。
【００３０】
【図７】本出願に係るコントローラの実施方式の模式的な構造図である。
【発明を実施するための形態】
【００３１】
以下の説明において、制限ではなく図示するために、特定のシステム構造、インターフェース、及び技術などの具体的な詳細が提供され、本出願に対する十分な理解を図る。しかしながら、当業者であれば、本出願はこれらの具体的な詳細なしで他の実施方式において実施され得ることを理解すべきである。他の場合において、周知の装置、回路、及び方法についての詳細な説明が省略され、これにより、本出願は、不必要な詳細に妨げられることなく、説明される。
【００３２】
図１を参照すると、図１は、本出願に係るデータ読出方法の実施方式のフローチャートである。本実施方式における方法は、記憶デバイスのコントローラにより実行される。本出願における記憶デバイスは、そのフローティングゲートトランジスタが、例えば、ＭＬＣ型のＳＳＤ（各フローティングゲートトランジスタが２つのビットを記憶する）、又は、ＴＬＣ（英語全表記：Ｔｒｉｎａｒｙ−Ｌｅｖｅｌ  Ｃｅｌｌ）型（各フローティングゲートトランジスタが３つのビットを記憶する）などの、少なくとも２つのビットを記憶できる任意の不揮発性記憶デバイスであり得る。記憶デバイスは、不揮発性記憶空間を含む。不揮発性記憶空間は、フローティングゲートトランジスタによって形成された記憶空間であり、例えば、具体的には、ＳＳＤの記憶マトリックスである。記憶デバイスの不揮発性記憶空間は、複数の共有ページグループを含む。例えば、ＭＬＣ型の記憶デバイスの不揮発性記憶空間は、複数の共有ページグループを含み、各共有ページグループは、ＭＳＢページとＬＳＢページとを含む。ＴＬＣ型の記憶デバイスの不揮発性記憶空間は、複数の共有ページグループを含み、各共有ページグループは、ＭＳＢページと、ＣＳＢページと、ＬＳＢページとを含む。
【００３３】
具体的には、この実施方式における方法は、以下の段階を含む。
【００３４】
１０１．読み出しターゲットアドレスを含む読み出し命令を受信したとき、記憶デバイスのコントローラは、読み出しターゲットアドレスが指すデータが、予め設定されたキャッシュエリアにキャッシュされているかを判断する。
【００３５】
背景技術において説明されたように、データが記憶デバイスの不揮発性記憶空間におけるＭＳＢページに書き込まれているとき、対応するＬＳＢページ又はＣＳＢページなどのＭＳＢページの共有ページに、書き込み干渉が生じ、データ読み出し誤りが、結果として発生し得る。ＭＳＢページを書き込むことによってもたらされる書き込み干渉を回避するために、本出願によれば、書き込み干渉を受けるデータがバックアップのためにキャッシュされ、そのような種類のデータが読み出されたとき、予め設定されたキャッシュエリアから読み出すことが、優先的に考慮される。
【００３６】
具体的には、例えば、データが書き込まれているとき、記憶デバイスのコントローラは、予め設定されたキャッシュエリア及び不揮発性記憶空間の両方に、記憶デバイスのデータであって書き込み干渉を受けるデータを記憶し、キャッシュアドレスと不揮発性記憶空間のアドレスとの間の第１マッピング関係を確立する。記憶デバイスのコントローラが、ＳＡＴＡ／ＳＡＳ／ＰＣＩｅインターフェースから、ホストにより送信された読み出し命令を受信したとき、読み出し命令は、読み出しターゲットアドレスを含み、不揮発性記憶空間から、読み出しターゲットアドレスが指すデータを読み出すよう、コントローラに命令する。コントローラは、読み出しターゲットアドレスの第１マッピング関係が存在するかをチェックする。第１マッピング関係が存在する場合、コントローラは、読み出しターゲットアドレスが指すデータが予め設定されたキャッシュエリアにキャッシュされていると判断し、段階１０２を実行する。第１マッピング関係が存在しない場合、コントローラは、読み出しターゲットアドレスが指すデータが予め設定されたキャッシュエリアにキャッシュされていないと判断し、段階１０３を実行する。
【００３７】
記憶デバイスのコントローラは、第１マッピング関係を用いることによらないで、読み込まれるべきデータがキャッシュされているかを判断し得ることが、理解され得る。別の実施方式において、コントローラはさらに、アドレス上のデータがキャッシュされているかを記録する識別子を追加的に設定し得る。データが読み出されているとき、アドレスの識別子が読み出され、読み出しターゲットアドレス上のデータがキャッシュされているかを判断する。従って、読み込まれるべきデータがキャッシュされているかを判断する方式は、本明細書において具体的に限定されない。
【００３８】
加えて、代替的に、読み出し命令を受信しているとき、記憶デバイスのコントローラは、まず、読み出しターゲットアドレスが指すデータが書き込み干渉を受けるデータであるかを判断し得、例えば、読み出しターゲットアドレスがＭＳＢページに属するかを判断し得る。読み出しターゲットアドレスがＭＳＢページに属さない場合、読み出しターゲットアドレスが指すデータは、書き込み干渉を受けるデータである。この場合、コントローラは、読み出しターゲットアドレスが指すデータが予め設定されたキャッシュエリアにキャッシュされているかを判断する。
【００３９】
１０２．記憶デバイスのコントローラは、第１マッピング関係に従って、読み出しターゲットアドレスに対応するキャッシュアドレスを見付け、予め設定されたキャッシュエリアから、キャッシュアドレスが指すデータを読み出し、ここで、第１マッピング関係は、ターゲットアドレスとキャッシュアドレスとの間の対応関係を記録するために用いられる。
【００４０】
キャッシュから優先的に読み出す原則に従って、読み出しターゲットアドレスが指すデータが予め設定されたキャッシュエリアにキャッシュされていると判断された場合、記憶デバイスのコントローラは、保存した第１マッピング関係に従って、読み出しターゲットアドレスに対応するキャッシュアドレスを見付け、予め設定されたキャッシュエリアから、キャッシュアドレス上のデータを読み出し、これにより、データの読み出しを実施する。キャッシュエリアにおけるデータは、記憶マトリックスにおける書き込み干渉を受けないので、キャッシュエリアからデータを読み出すことが、データ読み出しの正確さを保証する。
【００４１】
１０３．記憶デバイスのコントローラは、不揮発性記憶空間から、読み出しターゲットアドレスが指すデータを読み出す。
【００４２】
読み出しターゲットアドレスが指すデータが予め設定されたキャッシュエリアにキャッシュされていないと判断した場合、記憶デバイスのコントローラは、通常の読み出し方式で、不揮発性記憶空間から読み出しターゲットアドレス上のデータを読み出し、これにより、データの読み出しを実施する。
【００４３】
この実施方式において、キャッシュされたデータが優先的に読み出される方式が用いられる。読み出しターゲットアドレスが指すデータが予め設定されたキャッシュエリアにキャッシュされているとき、データは、予め設定されたキャッシュエリアから優先的に読み出される。キャッシュエリアにおけるデータは、不揮発性記憶空間における書き込み干渉を受けないので、書き込み干渉により引き起こされる読み出し誤りが低減され、記憶デバイスの信頼性が改善される。
【００４４】
図２を参照すると、図２は、本出願に係るデータ読出方法の別の実施方式の部分フローチャートである。この実施方式において、前述の実施方式の方法段階を実行する前に、記憶デバイスのコントローラは、以下の段階をさらに実行する。
【００４５】
２０１．書き込み命令を受信したとき、記憶デバイスのコントローラは、書き込み命令における書き込みターゲットアドレスが、不揮発性記憶空間におけるＭＳＢページに属するかを判断し、ここで、書き込み命令は、書き込まれるべきデータと書き込みターゲットアドレスとを含む。
【００４６】
本出願における記憶デバイスの各フローティングゲートトランジスタは、少なくとも２つのビットを記憶し得る。従って、記憶デバイスの不揮発性記憶空間のページは、ＬＳＢページ及びＭＳＢページといった、少なくとも２種類に分類される。フローティングゲートトランジスタが３つのビットを記憶し得るとき、記憶デバイスの不揮発性記憶空間のページは、ＣＳＢページをさらに含む。
【００４７】
記憶デバイスのコントローラは、ＳＡＴＡ／ＳＡＳ／ＰＣＩｅインターフェースなどのインターフェースから、ホストにより送信される書き込み命令を受信する。書き込み命令は、書き込まれるべきデータと、書き込みターゲットアドレスとを含み、これにより、書き込みターゲットアドレスが指す不揮発性記憶空間に、書き込まれるべきデータを記憶するよう、コントローラに命令する。書き込み命令を受信した後、コントローラは、まず、書き込みターゲットアドレスが、不揮発性記憶空間におけるＭＳＢページに属するかを判断する。書き込みターゲットアドレスが不揮発性記憶空間におけるＭＳＢページに属さない場合、コントローラは、段階２０２を実行する。書き込みターゲットアドレスが不揮発性記憶空間におけるＭＳＢページに属する場合、コントローラは、段階２０３を実行する。
【００４８】
２０２．記憶デバイスのコントローラは、予め設定されたキャッシュエリアと書き込みターゲットアドレスに対応する不揮発性記憶空間とに、書き込まれるべきデータを記憶し、キャッシュアドレスと書き込みターゲットアドレスとの間の第１マッピング関係を確立する。
【００４９】
背景技術において説明されたように、データが、記憶デバイスの不揮発性記憶空間におけるＭＳＢページに書き込まれているとき、対応するＬＳＢページ又はＣＳＢページなどのＭＳＢページの共有ページに、書き込み干渉が生じ、結果として、データ読み出し誤りが発生し得る。従って、コントローラは、書き込みターゲットアドレスがＭＳＢページに属さないと判断した場合、データがその後、ＭＳＢページに書き込まれているとき、書き込まれるべきデータは、書き込み干渉を受け得ることを意味する。従って、コントローラは、書き込みターゲットアドレスが指す不揮発性記憶空間に、書き込まれるべきデータを記憶し、バックアップとして、データを予め設定されたキャッシュエリアにキャッシュする。予め設定されたキャッシュエリアは、記憶デバイスにおけるダブルデータレート同時ダイナミックランダムアクセスメモリ（英語表記：Ｄｏｕｂｌｅ  Ｄａｔａ  Ｒａｔｅ、略してＤＤＲ）であり得る。例えば、従来のＳＳＤにはＤＤＲが本質的に提供され、データは、データの書き込みにおいても、又はデータの読み出しにおいても、ＤＤＲを通る。この記憶方式に基づき、予め設定されたキャッシュエリアは、ＤＤＲ上に優先的に構成され得る。すなわち、あるキャッシュ空間が、予め設定されたキャッシュエリアとして、ＤＤＲ上に提供される。もちろん、予め設定されたキャッシュエリアは代替的に、例えば、スタティックランダムアクセスメモリ（英語表記：Ｓｔａｔｉｃ  Ｒａｎｄｏｍ−Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ、略してＳＲＡＭ）などの、不揮発性記憶空間以外のメモリであり得る。
【００５０】
前述の書き込みが完了した後に、コントローラは、書き込まれるべきデータが予め設定されたキャッシュエリアにキャッシュされるキャッシュアドレスを取得し、キャッシュアドレスと書き込みターゲットアドレスとの間の第１マッピング関係を確立し、これにより、予め設定されたキャッシュエリアにおけるデータが、不揮発性記憶空間におけるデータに対応する。第１マッピング関係は、記憶デバイスの不揮発性記憶空間に、又は予め設定されたキャッシュエリアに、表形式で保存され得る。
【００５１】
２０３．記憶デバイスのコントローラは、書き込みターゲットアドレスに対応する不揮発性記憶空間に、書き込まれるべきデータを記憶する。
【００５２】
不揮発性記憶空間におけるＭＳＢページは、書き込み干渉を受けないので、コントローラが、書き込まれるべきデータが不揮発性記憶空間におけるＭＳＢページに属すると判断したとき、書き込まれるべきデータは、バックアップのためにキャッシュされる必要がなく、データは、書き込みターゲットアドレスに応じて、不揮発性記憶空間に直接記憶される。
【００５３】
前述の段階２０１−２０３を実行した後、記憶デバイスのコントローラは、図１に示されている段階１０１−１０３を実行する。
【００５４】
この実施方式において、ＭＳＢページの書き込み干渉に起因して読み出し誤りが発生し得るデータは、バックアップのためにキャッシュされる。加えて、データのこの部分を読み出し中、データは、キャッシュから優先的に読み出される。このことは、データが現に書き込み干渉を受けていることに起因する、データ読み出しにおける誤りの発生を回避し、これにより、書き込み干渉により引き起こされる読み出し誤りを低減し、記憶デバイスの信頼性を改善する。
【００５５】
図３を参照すると、図３は、本出願に係るデータ読出方法のさらに別の実施方式のフローチャートである。具体的には、方法は、以下の段階を備える。
【００５６】
３０１．記憶デバイスのコントローラは、不揮発性記憶空間における全ての共有ページグループのＭＳＢページとＬＳＢページとの間の最大のページ数の差であるｍを取得し、ここで、ｍは自然数である。
【００５７】
異なるベンダの記憶デバイスは、異なる共有ページを提供する。背景技術において表１に示されている記憶デバイスを例として用いて、記憶デバイスの各ブロックにおける第１共有ページグループは、ページ０からページ２である。すなわち、ＭＳＢページとＬＳＢページとの間には、２ページの差が存在する。第２共有ページグループは、ページ１からページ４である。すなわち、ＭＳＢページとＬＳＢページとの間には、３ページの差が存在する。記憶デバイスのブロックにおける全ての共有ページグループにわたって見ると、ＭＳＢページと対応するＬＳＢページとの間のページ数の差は全て、２又は３であることが分かる。従って、記憶デバイスの全ての共有ページグループにおけるＭＳＢページとＬＳＢページとの間の最大のページ数の差は、３である。
【００５８】
３０２．記憶デバイスのコントローラは、予め設定されたキャッシュエリアに対して、少なくともｎ＊ｐ＋ｍのページの大きさでキャッシュ空間を割り当て、ここで、ｐは、不揮発性記憶空間におけるＭＳＢページの共有ページの数を表し、ｎは、自然数であって、少なくとも１である。
【００５９】
可能な限り、キャッシュ空間の占有量を低減するために、もう書き込み干渉を受けないデータに対するキャッシュ空間は、この実施方式で、動的に解放される。予め設定されたキャッシュエリアにより必要とされるキャッシュ空間の大きさは、記憶デバイスの全ての共有ページグループにおけるＭＳＢページとＬＳＢページとの間の最大のページ数の差であるｍと、動的解放規則とに関連する。記憶デバイスの不揮発性記憶空間の共有ページグループにおけるＭＳＢページとＬＳＢページとの間の最大のページ数の差であるｍが存在する。予め設定されたキャッシュエリアは、少なくともｍのページのキャッシュ空間を必要とし、ＭＳＢページの共有ページ（ＬＳＢページ又はＭＳＢページに対応するＣＳＢページなど）が、ＭＳＢページが全て書き込まれる前に、予め設定されたキャッシュエリアにキャッシュされ得ることを保証することを意味し、これにより、ＭＳＢページの書き込み干渉に起因する読み出し誤りを回避する。加えて、本出願の動的解放規則は、データがＭＳＢページに書き込まれているとき、当該ＭＳＢページから前へ数えて少なくともｎのＭＡＢページの共有ページ（ＬＳＢページ又はＭＳＢページに対応するＣＳＢページなど）が、予め設定されたキャッシュエリアにキャッシュされ得ることを保証できることである。実験データによると、ｎが少なくとも１であるとき、比較的重大な書き込み干渉を現に受けているデータは全て、キャッシュされ得ることを実質的に保証できる。
【００６０】
キャッシュ空間の大きさを特定するための前述の原則、及び記憶デバイスの不揮発性記憶空間の共有ページグループを設定するための前述の規則によると、比較的重大な書き込み干渉を現に受けているデータが全てキャッシュされ得ることを保証するために、記憶デバイスのコントローラは、予め設定されたキャッシュエリアに対して、少なくともｍ＋ｎ＊ｐのページのキャッシュ空間を割り当て、例えば、ｍ＋ｎ＊ｐのページのキャッシュ空間を割り当てる。ｐは、記憶デバイスの不揮発性記憶空間におけるＭＳＢページの共有ページの数を表す。例えば、ＭＬＣ型の記憶デバイスの１つの共有ページグループは、ＭＳＢページとＬＳＢページとを含む。従って、記憶デバイスの不揮発性記憶空間におけるＭＳＢページの共有ページの数が１であり、すなわち、ＬＳＢページである。ＴＬＣ型の記憶デバイスの１つの共有ページグループは、ＭＳＢページと、ＣＳＢページと、ＬＳＢページとを含む。従って、記憶デバイスの不揮発性記憶空間におけるＭＳＢページの共有ページの数が２であり、ＣＳＢページとＬＳＢページとを含む。
【００６１】
３０３．書き込み命令を受信したとき、記憶デバイスのコントローラは、書き込み命令における書き込みターゲットアドレスが、不揮発性記憶空間におけるＭＳＢページに属するかを判断し、ここで、書き込み命令は、書き込まれるべきデータと書き込みターゲットアドレスとを含む。
【００６２】
書き込み命令を受信した後、コントローラは、まず、書き込みターゲットアドレスが、記憶デバイスの不揮発性記憶空間におけるＭＳＢページに属するかを判断する。書き込みターゲットアドレスは、不揮発性記憶空間におけるＭＳＢページに属さない場合、コントローラは、段階３０４を実行する。書き込みターゲットアドレスが不揮発性記憶空間におけるＭＳＢページに属する場合、コントローラは、段階３０５を実行する。
【００６３】
３０４．記憶デバイスのコントローラは、予め設定されたキャッシュエリアと書き込みターゲットアドレスに対応する不揮発性記憶空間とに、書き込まれるべきデータを記憶し、キャッシュアドレスとターゲットアドレスとの間の第１マッピング関係を確立する。
【００６４】
３０５．記憶デバイスのコントローラは、書き込みターゲットアドレスに対応する不揮発性記憶空間に、書き込まれるべきデータを記憶し、書き込みターゲットアドレスが位置するＭＳＢページが、ブロックにおける最後のＭＳＢページであるかを判断する。
【００６５】
書き込みターゲットアドレスが不揮発性記憶空間におけるＭＳＢページに属する場合、記憶デバイスのコントローラは、書き込みターゲットアドレスが指す不揮発性記憶空間にのみ、書き込まれるべきデータを記憶し、書き込みターゲットアドレスが位置するＭＳＢページがブロックにおける最後のＭＳＢページであるかを判断する。例えば、表１に示されるブロックにおける最後のＭＳＢページは、ページ２５５である。書き込みターゲットアドレスがページ２５５に属さないと判断された場合、コントローラは、段階３０６を実行する。書き込みターゲットアドレスがページ２５５に属すると判断された場合、コントローラは、段階３０７を実行する。
【００６６】
３０６．記憶デバイスのコントローラは、書き込みターゲットアドレスが位置するＭＳＢページから前へ数えてｎ番目のＭＳＢページの共有ページのアドレスを取得し、取得したアドレスを、データ解放アドレスとして用いる。
【００６７】
この実施方式において、動的キャッシュ解放方式が用いられる。具体的な規則は、データがＭＳＢページに書き込まれているとき、少なくともｎのＭＳＢページの共有ページ（ＬＳＢページ又はＭＳＢページに対応するＣＳＢページなど）が、予め設定されたキャッシュエリアにキャッシュされ得ることを保証することである。背景技術において表２に示されているＭＬＣ型の記憶デバイスを例として用いて、表２から、ＬＳＢページに対応するＭＳＢページの書き込みと次のＭＳＢページの書き込みの開始との間の処理において、ＬＳＢページは、比較的重大な書き込み干渉を受けることが分かる。ｎの最小値が１であるときのみ、比較的重大な書き込み干渉を現に受けているデータは全て、キャッシュされ得ることを保証できる。しかしながら、読み出し干渉をさらに低減するために、ｎは優先的に少なくとも２であり、すなわち、ＭＳＢページに対応するＬＳＢページは、当該ＭＳＢページの次の少なくとも２のＭＳＢページへのデータの書き込みが完了する前に、削除されない。
【００６８】
具体的には、背景技術において表１にて説明されている記憶デバイスをまた例として用いて、現在の書き込みターゲットアドレスは、ＭＳＢページであるページ６に属し、かつ、最後のＭＳＢページに属さないことを仮定する。ページ６から前へ数えて、第１ＭＳＢページがページ４であり、第２ＭＳＢページがページ２である。ｎが１である場合、データがページ６に書き込まれた後、ページ４の共有ページ、すなわち、ページ１において、書き込み干渉が生じないであろうとみなされる。従って、コントローラは、ページ１のアドレスを取得し、ページ１のアドレスを、データ解放アドレスとして用い、これにより、予め設定されたキャッシュエリアにあってページ１に対応するキャッシュ空間を解放する。前述の動的キャッシュ解放規則によると、データがページ２に書き込まれているとき、キャッシュエリアにおけるデータは、解放されず、データがページ４に書き込まれているとき、キャッシュエリアにおけるページ０が解放され、データがページ６に書き込まれているとき、キャッシュエリアにおけるページ１が解放され、データがページ８に書き込まれているとき、キャッシュエリアにおけるページ３が解放される、等など。このように、表２の太字体のデータにより示されている書き込み干渉が除去される前に、正確なデータが、キャッシュから読み出されることができる。
【００６９】
このことは、そのフローティングゲートトランジスタが２つより多くのビットを記憶する記憶デバイスに関しても同じである。すなわち、書き込みターゲットアドレスが位置するＭＳＢページから前へ数えてｎ番目のＭＳＢページの共有ページのアドレス（フローティングゲートトランジスタが３つのビットを記憶する場合、対応するＬＳＢページと対応するＣＢＳページが含まれる）が取得され、データ解放アドレスとして用いられる。
【００７０】
３０７．記憶デバイスのコントローラは、ブロックにおける最後のｎ＋１のＭＳＢページの共有ページのアドレスを取得し、取得したアドレスを、データ解放アドレスとして用いる。
【００７１】
書き込みターゲットアドレスが位置するＭＳＢページが、ブロックにおける最後のＭＳＢページである場合、ブロックにおける全てのページの書き込み干渉が除去されることを意味し、従って、ブロックの全てのデータキャッシュ空間が解放され得る。前述の段階３０６のキャッシュ解放規則によると、データが最後のＭＳＢページに書き込まれているとき、ブロックにおける最後のｎ＋１のＭＳＢページの共有ページのデータは、予め設定されたキャッシュエリアにキャッシュされたままであり、ここで、ｎは、自然数であって少なくとも１である。従って、コントローラは、ブロックにおける最後のｎ＋１のＭＳＢページの共有ページ（フローティングゲートトランジスタが２つのビットを記憶する場合はＬＳＢページであり、又は、フローティングゲートトランジスタが３つのビットを記憶する場合、ＬＳＢページ及びＣＳＢページを含む）のアドレスを取得し、取得したアドレスをデータ解放アドレスとして用いる。
【００７２】
３０８．記憶デバイスのコントローラは、予め設定されたキャッシュエリアにあってデータ解放アドレスとの第１マッピング関係を有するキャッシュアドレスが指すデータを解放し、第１マッピング関係からデータ解放アドレスを削除する。
【００７３】
記憶デバイスのコントローラは、第１マッピング関係に従って、データ解放アドレスとの第１マッピング関係を有するキャッシュアドレスを取得し、キャッシュアドレス上のデータを解放する。このように、重大な書き込み干渉を現に受けているデータがキャッシュされたままであることを保証しつつ、キャッシュ空間が動的に解放され得る。キャッシュ空間が既に解放されているので、第１マッピング関係のデータ解放アドレス及びキャッシュアドレスが削除される。
【００７４】
３０９．読み出しターゲットアドレスを含む読み出し命令を受信したとき、記憶デバイスのコントローラは、読み出しターゲットアドレスが指すデータが、予め設定されたキャッシュエリアにキャッシュされているかを判断する。読み出しターゲットアドレスが指すデータが予め設定されたキャッシュエリアにキャッシュされている場合、コントローラは、段階３１０を実行する。読み出しターゲットアドレスが指すデータが予め設定されたキャッシュエリアにキャッシュされていない場合、コントローラは、段階３１１を実行する。
【００７５】
３１０．記憶デバイスのコントローラは、第１マッピング関係に従って、読み出しターゲットアドレスに対応するキャッシュアドレスを見付け、予め設定されたキャッシュエリアから、キャッシュアドレスが指すデータを読み出す。
【００７６】
３１１．記憶デバイスのコントローラは、不揮発性記憶空間から、読み出しターゲットアドレスが指すデータを読み出す。
【００７７】
この実施方式において、ＭＳＢページの書き込み干渉に起因して読み出し誤りが発生し得るデータは、バックアップのためにキャッシュされる。加えて、データのこの部分の読み出し中、データは、キャッシュから優先的に読み出される。このことは、データが現に書き込み干渉を受けていることに起因するデータ読み出しにおける誤りの発生を回避し、これにより、書き込み干渉により引き起こされる読み出し誤りを格段に低減する。さらに、この実施方式において、データが記憶デバイスのＭＳＢページに書き込まれているとき、書き込み干渉は、当該ＭＳＢページの共有ページと、当該ＭＳＢページの前の隣接するＭＳＢページの共有ページとにのみ生じるので、キャッシュを動的に解放する方式が用いられ、必要とされるキャッシュ空間を低減する。加えて、本出願において、記憶デバイスの共有ページグループの最大のページ数の差であるｍに従って、キャッシュ空間が割り当てられ、これにより、異なるベンダの記憶デバイスとの適合性を可能にする。
【００７８】
図４を参照すると、図４は、本出願に係るデータ読出方法のさらに別の実施方式の部分フローチャートである。この実施方式における方法は、前述の実施方式における段階を備え、以下の段階をさらに備える。
【００７９】
４０１．パワーオフ中、記憶デバイスのコントローラは、不揮発性記憶空間に、予め設定されたキャッシュエリアにおけるデータを保存し、キャッシュアドレスと不揮発性記憶空間における保存アドレスとの間の第２マッピング関係を確立する。
【００８０】
記憶デバイスがパワーオフされた後に、予め設定されたキャッシュエリアにおけるデータが失われる。不揮発性記憶空間におけるデータが、次のパワーオンの後にも依然として正しく読み出され得ることを保証するために、パワーオフ中、コントローラは、不揮発性記憶空間に、予め設定されたキャッシュエリアにおけるデータを保存し、予め設定されたキャッシュエリアにおけるキャッシュアドレスと不揮発性記憶空間における保存アドレスとの間の第２マッピング関係を確立し、これにより、前に予め設定されたキャッシュエリアにキャッシュされたデータは、不揮発性記憶デバイスに保存されたデータに対応し得る。
【００８１】
４０２．パワーオン中、記憶デバイスのコントローラは、第２マッピング関係に従って、予め設定されたキャッシュエリアにおけるキャッシュアドレスに、不揮発性記憶空間における保存アドレスが指すデータをキャッシュする。
【００８２】
再度パワーオンされたとき、記憶デバイスのコントローラは、不揮発性記憶空間にあって第２マッピング関係にある保存アドレスを取得し、これに対応して、保存アドレスとの第２マッピング関係を有するキャッシュアドレスに、保存アドレス上のデータをキャッシュし、これにより、元のキャッシュアドレスに従って、パワーオフの前に予め設定されたキャッシュエリアにキャッシュされたデータを再度キャッシュする。このように、不揮発性記憶空間にあってキャッシュされているデータが読み出される必要があるとき、対応するキャッシュされたデータは、前に確立された第１マッピング関係に従って読み出され得て、これにより、正確なデータの読み出しが実施される。
【００８３】
図５を参照すると、図５は、本出願に係るデータ読出装置の実施方式の模式的な構造図である。この実施方式において、データ読出装置５００は具体的に、記憶デバイスのコントローラであり得る。記憶デバイスは、例えば、ＭＬＣ型又はＴＬＣ型のＳＳＤなどの、そのフローティングゲートトランジスタが少なくとも２つのビットを記憶し得る任意の不揮発性記憶デバイスであり得る。データ読出装置５００は、第１判断モジュール５１０と、第１読み出しモジュール５２０と、第２読み出しモジュール５３０とを含む。データ読出装置５００は、予め設定されたキャッシュエリア５７０と不揮発性記憶空間５８０とに接続される。
【００８４】
第１判断モジュール５１０は、読み出しターゲットアドレスを含む読み出し命令を受信した場合、読み出しターゲットアドレスが指すデータが、予め設定されたキャッシュエリア５７０にキャッシュされているかを判断し、第１判断結果を、第１読み出しモジュール５２０及び第２読み出しモジュール５３０に送信するよう構成される。
【００８５】
ＭＳＢページを書き込むことによってもたらされる書き込み干渉を回避するために、本出願によれば、書き込み干渉を受け得るデータは、バックアップのためにキャッシュされ、そのような種類のデータが読み出されたとき、予め設定されたキャッシュエリア５７０から読み出すことが優先的に考慮される。
【００８６】
具体的には、例えば、第１判断モジュール５１０は、ＳＡＴＡ／ＳＡＳインターフェースから、ホストにより送信された読み出し命令を受信する。読み出し命令は、読み出しターゲットアドレスを含み、これにより、不揮発性記憶空間５８０から、読み出しターゲットアドレスが指すデータを読み出すよう命令する。第１判断モジュール５１０は、読み出しターゲットアドレスの第１マッピング関係が存在するかをチェックする。第１マッピング関係が存在する場合、第１判断モジュール５１０は、読み出しターゲットアドレスが指すデータが、予め設定されたキャッシュエリア５７０にキャッシュされていると判断する。第１マッピング関係が存在しない場合、第１判断モジュール５１０は、読み出しターゲットアドレスが指すデータが、予め設定されたキャッシュエリア５７０にキャッシュされていないと判断する。
【００８７】
第１判断モジュール５１０は、第１マッピング関係を用いることによらないで、読み込まれるべきデータがキャッシュされたかを判断し得ることは、理解され得る。別の実施方式において、第１判断モジュール５１０はさらに、アドレス上のデータがキャッシュされているかを記録する識別子を追加的に設定し得る。データが読み出されているとき、アドレスの識別子が読み出され、読み出しターゲットアドレス上のデータがキャッシュされているかを判断する。従って、読み込まれるべきデータがキャッシュされているかを判断する方式は、本明細書において具体的に限定されない。
【００８８】
加えて、読み出し命令を受信したとき、第１判断モジュール５１０はさらに、まず、読み出しターゲットアドレスが指すデータが書き込み干渉を受けるデータであるかを判断し得て、例えば、読み出しターゲットアドレスがＭＳＢページに属するかを判断し得る。読み出しターゲットアドレスがＭＳＢページに属さない場合、第１判断モジュール５１０は、読み出しターゲットアドレスが指すデータが予め設定されたキャッシュエリア５７０にキャッシュされているかをさらに判断する。
【００８９】
第１読み出しモジュール５２０は、読み出しターゲットアドレスが指すデータが予め設定されたキャッシュエリアにキャッシュされているとき、第１マッピング関係に従って、読み出しターゲットアドレスに対応するキャッシュアドレスを見付け、予め設定されたキャッシュエリア５７０から、キャッシュアドレスが指すデータを読み出すよう構成され、ここで、第１マッピング関係は、ターゲットアドレスとキャッシュアドレスとの間の対応関係を記録するために用いられる。
【００９０】
キャッシュから優先的に読み出す原則に従って、第１判断モジュール５１０は、読み出しターゲットアドレスが指すデータが予め設定されたキャッシュエリア５７０にキャッシュされていると判断したとき、第１読み出しモジュール５２０は、保存した第１マッピング関係に従って、読み出しターゲットアドレスに対応するキャッシュアドレスを取得し、予め設定されたキャッシュエリア５７０から、キャッシュアドレス上のデータを読み出し、これにより、データの読み出しを実施する。キャッシュエリアにおけるデータは、記憶マトリックスにおける書き込み干渉を受けないので、キャッシュエリアからデータを読み出すことは、データ読み出しの正確さを保証する。
【００９１】
第２読み出しモジュール５３０は、読み出しターゲットアドレスが指すデータが予め設定されたキャッシュエリア５７０にキャッシュされていないとき、不揮発性記憶空間５８０から、読み出しターゲットアドレスが指すデータを読み出すよう構成される。
【００９２】
第１判断モジュール５１０は、読み出しターゲットアドレスが指すデータが予め設定されたキャッシュエリア５７０にキャッシュされていないと判断したとき、第２読み出しモジュール５３０は、通常の読み出し方式で、不揮発性記憶空間５８０から、読み出しターゲットアドレス上のデータを読み出し、これにより、データの読み出しを実施する。
【００９３】
任意で、この実施方式におけるデータ読出装置５００は、第２判断モジュール５４０と、第１書き込みモジュール５５０と、第２書き込みモジュール５６０とをさらに備え得る。
【００９４】
第２判断モジュール５４０が書き込み命令を受信したとき、書き込み命令における書き込みターゲットアドレスが、不揮発性記憶空間におけるＭＳＢページに属するかを判断し、第２判断結果を、第１書き込みモジュール５５０及び第２書き込みモジュール５６０に送信するよう構成され、ここで、書き込み命令は、書き込まれるべきデータと書き込みターゲットアドレスとを含む。
【００９５】
第２判断モジュール５４０は、ＳＡＴＡ／ＳＡＳ／ＰＣＩｅインターフェースなどのインターフェースから、ホストにより送信された書き込み命令を受信する。書き込み命令は、書き込まれるべきデータと書き込みターゲットアドレスとを含み、これにより、書き込みターゲットアドレスが指す不揮発性記憶空間５８０（記憶デバイスの記憶マトリックスなど）に、書き込まれるべきデータを記憶するよう命令する。書き込み命令を受信した後、第２判断モジュール５４０は、まず、記憶デバイスの書き込みターゲットアドレスが不揮発性記憶空間におけるＭＳＢページに属するかを判断する。
【００９６】
第１書き込みモジュール５５０は、書き込みターゲットアドレスが不揮発性記憶空間におけるＭＳＢページに属さないと判断されたとき、予め設定されたキャッシュエリア５７０と、書き込みターゲットアドレスに対応する不揮発性記憶空間５８０とに、書き込まれるべきデータを記憶し、キャッシュアドレスと書き込みターゲットアドレスとの間の第１マッピング関係を確立するよう構成される。
【００９７】
第２判断モジュール５４０が書き込みターゲットアドレスがＭＳＢページに属さないと判断した場合、データが後続のＭＳＢページに書き込まれているとき、書き込まれるべきデータは、書き込み干渉を受け得ることを意味する。従って、第１書き込みモジュール５５０は、書き込みターゲットアドレスが指す不揮発性記憶空間５８０に、書き込まれるべきデータを記憶し、バックアップとして、データを、予め設定されたキャッシュエリアにキャッシュする。予め設定されたキャッシュエリア５７０は、記憶デバイスにおけるＤＤＲ又はＳＲＡＭであり得る。
【００９８】
前述の書き込みが完了した後、第１書き込みモジュール５５０は、書き込まれるべきデータが予め設定されたキャッシュエリア５７０にキャッシュされているキャッシュアドレスを取得し、キャッシュアドレスと書き込みターゲットアドレスとの間の第１マッピング関係を確立し、これにより、予め設定されたキャッシュエリア５７０におけるデータは、不揮発性記憶空間５８０におけるデータに対応する。第１マッピング関係は、記憶デバイスの不揮発性記憶空間５８０に、又は、予め設定されたキャッシュエリア５７０に、表形式で保存され得る。
【００９９】
第２書き込みモジュール５６０は、書き込みターゲットアドレスが不揮発性記憶空間におけるＭＳＢページに属すると判断されたとき、書き込みターゲットアドレスに対応する不揮発性記憶空間５８０に、書き込まれるべきデータを記憶するよう構成される。
【０１００】
不揮発性記憶空間におけるＭＳＢページは、書き込み干渉を受けないので、第２判断モジュール５４０は、書き込まれるべきデータが不揮発性記憶空間におけるＭＳＢページに属すると判断したとき、書き込まれるべきデータは、バックアップのためにキャッシュされる必要がなく、データは、書き込みターゲットアドレスに従って、不揮発性記憶空間５８０に直接記憶される。
【０１０１】
この実施方式において、ＭＳＢページの書き込み干渉に起因して読み出し誤りが発生し得るデータは、バックアップのためにキャッシュされる。加えて、データのこの部分の読み出し中、データは、キャッシュから優先的に読み出される。このことは、データが書き込み干渉を現に受けていることに起因する、データの読み出しにおける誤りの発生を回避し、これにより、書き込み干渉により引き起こされる読み出し誤りを低減し、記憶デバイスの信頼性を改善する。
【０１０２】
図６を参照すると、図６は、本出願に係るデータ読出装置の実施方式の模式的な構造図である。具体的には、前述の実施方式に含まれるモジュールに加えて（図５のあるモジュールが、この実施方式の以下の説明において言及されていない場合、そのモジュールは、図６に示されないが、この実施方式におけるデータ読出装置は、そのモジュールを含まないことを意味するわけではない）、データ読出装置６００は、第３取得モジュール６１０と、割り当てモジュール６２０と、第３判断モジュール６３０と、第１取得モジュール６４０と、第２取得モジュール６５０と、解放モジュール６６０と、保存モジュール６７０と、キャッシングモジュール６８０とをさらに備える。
【０１０３】
第３取得モジュール６１０は、不揮発性記憶空間における全ての共有ページグループのＭＳＢページとＬＳＢページとの間の最大のページ数の差であるｍを取得し、割り当てモジュール６２０に、ｍを送信するよう構成され、ここで、ｍは自然数である。
【０１０４】
異なるベンダの記憶デバイスは、異なる共有ページを提供する。背景技術において表１に示されている記憶デバイスを例として用いて、記憶デバイスの各ブロックにおける第１共有ページグループは、ページ０からページ２である。すなわち、ＭＳＢページとＬＳＢページとの間に２ページの差が存在する。第２共有ページグループは、ページ１からページ４である。すなわち、ＭＳＢページとＬＳＢページとの間に３ページの差が存在する。記憶デバイスのブロックにおける全ての共有ページグループにわたって見ると、ＭＳＢページと対応するＬＳＢページとの間のページ数の差は全て、２又は３であることが分かる。従って、記憶デバイスの全ての共有ページグループにおけるＭＳＢページとＬＳＢページとの間の最大のページ数の差は、３である。
【０１０５】
割り当てモジュール６２０は、予め設定されたキャッシュエリア５７０に対して、少なくともｎ＊ｐ＋ｍのページの大きさでキャッシュ空間を割り当てるよう構成され、ここで、ｐは、不揮発性記憶空間におけるＭＳＢページの共有ページの数を表し、ｎは、自然数であって少なくとも１である。
【０１０６】
可能な限り、キャッシュ空間の占有量を低減するために、もう書き込み干渉を受けないデータに対するキャッシュ空間は、この実施方式で動的に解放される。予め設定されたキャッシュエリア５７０により必要とされるキャッシュ空間の大きさは、記憶デバイスの全ての共有ページグループにおけるＭＳＢページとＬＳＢページとの間の最大のページ数の差であるｍと、動的解放規則とに関連する。
【０１０７】
キャッシュ空間の大きさを特定するための前述の原則と、記憶デバイスの不揮発性記憶空間の共有ページグループを設定するための前述の規則とによると、比較的重大な書き込み干渉を現に受けているデータが全てキャッシュされることを保証するために、割り当てモジュール６２０は、予め設定されたキャッシュエリアに対して、少なくともｍ＋ｎ＊ｐのページのキャッシュ空間を割り当て、例えば、ｍ＋ｎ＊ｐのページのキャッシュ空間を割り当てる。ｐは、記憶デバイスの不揮発性記憶空間におけるＭＳＢページの共有ページの数を表す。例えば、ＭＬＣ型の記憶デバイスの１つの共有ページグループは、ＭＳＢページとＬＳＢページとを含む。従って、記憶デバイスの不揮発性記憶空間におけるＭＳＢページの共有ページの数は、１であり、すなわち、ＬＳＢページである。ＴＬＣ型の記憶デバイスの１つの共有ページグループは、ＭＳＢページと、ＣＳＢページと、ＬＳＢページとを含む。従って、記憶デバイスの不揮発性記憶空間におけるＭＳＢページの共有ページの数は、２であり、ＣＳＢページとＬＳＢページとを含む。
【０１０８】
第３判断モジュール６３０は、書き込みターゲットアドレスが不揮発性記憶空間におけるＭＳＢページに属するとき、書き込みターゲットアドレスが位置するＭＳＢページは、ブロック（ｂｌｏｃｋ）における最後のＭＳＢページであるかを判断し、第３判断結果を、第１取得モジュール６４０及び第２取得モジュール６５０に送信するよう構成される。
【０１０９】
例えば、第２判断モジュール５４０は、書き込みターゲットアドレスが不揮発性記憶空間におけるＭＳＢページに属すると判断したとき、第３判断モジュール６３０は、書き込みターゲットアドレスが位置するＭＳＢページが、ブロックにおける最後のＭＳＢページであるかを判断する。
【０１１０】
第１取得モジュール６４０は、書き込みターゲットアドレスが位置するＭＳＢページが、ブロックにおける最後のＭＳＢページではないとき、書き込みターゲットアドレスが位置するＭＳＢページから前へ数えてｎ番目のＭＳＢページの共有ページのアドレスを取得し、取得したアドレスを、データ解放アドレスとして用い、データ解放アドレスを、解放モジュール６６０に送信するよう構成される。
【０１１１】
この実施方式において、動的キャッシュ解放方式が用いられる。具体的な規則は、データがＭＳＢページに書き込まれているとき、少なくともｎのＭＳＢページの共有ページ（ＬＳＢページ又はＭＳＢページに対応するＣＳＢページなど）が予め設定されたキャッシュエリアにキャッシュされ得ることを保証できることである。背景技術において表２に示されているＭＬＣ型の記憶デバイスを例として用いて、表２から、ＬＳＢページに対応するＭＳＢページの書き込みと、次のＭＳＢページの書き込みの開始との間の処理において、そのＬＳＢページは、比較的重大な書き込み干渉を受けることが分かる。ｎの最小値が１であるときのみ、比較的重大な書き込み干渉を現に受けているデータが全てキャッシュされることを保証できる。しかしながら、読み出し干渉をさらに低減するために、ｎは優先的に、少なくとも２である。すなわち、ＭＳＢページに対応するＬＳＢページは、そのＭＳＢページの次の少なくとも２のＭＳＢページへのデータの書き込みが完了する前に、削除されない。
【０１１２】
具体的には、背景技術において表１にて説明されている記憶デバイスをまた例として用いて、現在の書き込みターゲットアドレスは、ＭＳＢページであるページ６に属し、かつ、最後のＭＳＢページに属さないことを仮定する。ページ６から前へ数えて、第１ＭＳＢページはページ４であり、第２ＭＳＢページはページ２である。ｎが１である場合、データがページ６に書き込まれた後、ページ４の共有ページ、すなわち、ページ１において、書き込み干渉が生じないとみなされる。従って、第１取得モジュール６４０は、ページ１のアドレスを、データ解放アドレスとして用い、これにより、予め設定されたキャッシュエリア５７０にあってページ１に対応するキャッシュ空間を解放する。
【０１１３】
このことは、そのフローティングゲートトランジスタが２つより多くのビットを記憶する記憶デバイスに関しても同じである。すなわち、書き込みターゲットアドレスが位置するＭＳＢページから前へ数えてｎ番目のＭＳＢページの共有ページ（フローティングゲートトランジスタが３つのビットを記憶する場合、対応するＬＳＢページ及び対応するＣＳＢページが含まれる）のアドレスが、取得され、データ解放アドレスとして用いられる。
【０１１４】
第２取得モジュール６５０は、書き込みターゲットアドレスが位置するＭＳＢページは、ブロックにおける最後のＭＳＢページであるとき、ブロックにおける最後のｎ＋１のＭＳＢページの共有ページのアドレスを取得し、取得したアドレスを、データ解放アドレスとして用い、データ解放アドレスを、解放モジュール６６０に送信するよう構成される。
【０１１５】
書き込みターゲットアドレスが位置するＭＳＢページがブロックにおける最後のＭＳＢページである場合、ブロックにおける全てのページの書き込み干渉が除去されることを意味し、従って、ブロックの全てのデータキャッシュ空間が解放され得る。前述の第１取得モジュール６４０のキャッシュ解放規則によると、データが最後のＭＳＢページに書き込まれているとき、ブロックにおける最後のｎ＋１のＭＳＢページの共有ページのデータは、予め設定されたキャッシュエリアにキャッシュされたままでり、ここで、ｎは自然数であって、少なくとも１である。従って、第２取得モジュール６５０は、ブロックにおける最後のｎ＋１のＭＳＢページの共有ページ（フローティングゲートトランジスタが２つのビットを記憶する場合、ＬＳＢページであり、又は、フローティングゲートトランジスタが３つのビットを記憶する場合、ＬＳＢページとＣＳＢページとを含む）のアドレスを取得し、取得したアドレスをデータ解放アドレスとして用いる。
【０１１６】
解放モジュール６６０は、予め設定されたキャッシュエリアにあってデータ解放アドレスとの第１マッピング関係を有するキャッシュアドレスが指すデータを解放し、第１マッピング関係から、データ解放アドレスを削除するよう構成される。
【０１１７】
解放モジュール６６０は、第１マッピング関係に従って、データ解放アドレスとの第１マッピング関係を有するキャッシュアドレスを取得し、キャッシュアドレス上のデータを解放する。このように、重大な書き込み干渉を現に受けているデータがキャッシュされたままであることを保証しつつ、キャッシュ空間は、動的に解放され得る。キャッシュ空間が既に解放されているので、第１マッピング関係におけるデータ解放アドレス及びキャッシュアドレスは、削除される。
【０１１８】
保存モジュール６７０は、パワーオフ中、不揮発性記憶空間に、予め設定されたキャッシュエリア５７０におけるデータを保存し、キャッシュアドレスと不揮発性記憶空間における保存アドレスとの間の第２マッピング関係を確立し、第２マッピング関係を、キャッシングモジュール６８０に送信するよう構成される。
【０１１９】
記憶デバイスがパワーオフされた後、予め設定されたキャッシュエリア５７０におけるデータが失われる。次のパワーオンの後に、不揮発性記憶空間におけるデータが、依然として正しく読み出され得ることを保証するために、パワーオフ中、保存モジュール６７０は、不揮発性記憶空間に、予め設定されたキャッシュエリアにおけるデータを保存し、予め設定されたキャッシュエリアにおけるキャッシュアドレスと不揮発性記憶空間における保存アドレスとの間の第２マッピング関係を確立し、これにより、前に予め設定されたキャッシュエリアにキャッシュされたデータは、不揮発性記憶デバイスに保存されたデータに対応し得る。
【０１２０】
キャッシングモジュール６８０は、パワーオン中、第２マッピング関係に従って、予め設定されたキャッシュエリア５７０におけるキャッシュアドレスに、不揮発性記憶空間における保存アドレスが指すデータをキャッシュするよう構成される。
【０１２１】
再度パワーオンされたとき、キャッシングモジュール６８０は、不揮発性記憶空間にあって第２マッピング関係における保存アドレスを取得し、これに対応して、保存アドレスとの第２マッピング関係を有するキャッシュアドレスに、保存アドレス上のデータをキャッシュし、これにより、元のキャッシュアドレスに従って、パワーオフされる前に、予め設定されたキャッシュエリアにキャッシュされたデータを再度キャッシュする。このように、不揮発性記憶空間にあってキャッシュされているデータが読み出される必要があるとき、対応するキャッシュされたデータは、前に確立された第１マッピング関係に従って読み出され得て、これにより、正確なデータの読み出しが実施される。
【０１２２】
本出願におけるデータ読出装置は、この実施方式における全てのモジュールを含むことに限定されることが、理解され得る。異なる実施方式では、図５に示されているモジュールに加えて、データ読出装置は、第３取得モジュールと割り当てモジュールとのみをさらに含み得、若しくは、第３判断モジュールと、第１取得モジュールと、第２取得モジュールと、解放モジュールとのみをさらに含み得、若しくは、保存モジュールと、キャッシングモジュールとのみをさらに含み得、又は、これら３つの選択肢のうちの２つのモジュールをさらに含み得る。
【０１２３】
図７を参照すると、図７は、本出願に係るコントローラの実施方式の模式的な構造図である。この実施方式におけるコントローラ７００は、受信器７０１と、プロセッサ７０２と、メモリ７０３と、バス７０４とを含む。コントローラ７００は、予め設定されたキャッシュエリア７１０と不揮発性記憶空間７２０とに接続される。
【０１２４】
受信器７０１は、書き込み命令と読み出し命令とを受信するよう構成される。
【０１２５】
プロセッサ７０２は、読み出しターゲットアドレスを含む読み出し命令を受信したとき、読み出しターゲットアドレスが指すデータが、予め設定されたキャッシュエリア７１０にキャッシュされているかを判断し、読み出しターゲットアドレスが指すデータが予め設定されたキャッシュエリアにキャッシュされているとき、第１マッピング関係に従って、読み出しターゲットアドレスに対応するキャッシュアドレスを見付け、予め設定されたキャッシュエリア７１０から、キャッシュアドレスが指すデータを読み出し、ここで、第１マッピング関係は、ターゲットアドレスとキャッシュアドレスとの間の対応関係を記録するために用いられ、又は、読み出しターゲットアドレスが指すデータは、予め設定されたキャッシュエリアにキャッシュされていないとき、不揮発性記憶空間７２０から、読み出しターゲットアドレスが指すデータを読み出すよう構成される。
【０１２６】
任意で、プロセッサ７０２は、書き込み命令を受信したとき、書き込み命令における書き込みターゲットアドレスが不揮発性記憶空間７２０における最上位ビットページ（ＭＳＢページ）に属するかを判断し、ここで、書き込み命令は、書き込まれるべきデータと書き込みターゲットアドレスとを含み、書き込みターゲットアドレスが不揮発性記憶空間におけるＭＳＢページに属さないと判断されたとき、予め設定されたキャッシュエリア７１０と、書き込みターゲットアドレスに対応する不揮発性記憶空間７２０とに、書き込まれるべきデータを記憶し、キャッシュアドレスとターゲットアドレスとの間の第１マッピング関係を確立し、又は、書き込みターゲットアドレスが不揮発性記憶空間におけるＭＳＢページに属すると判断されたとき、書き込みターゲットアドレスに対応する不揮発性記憶空間７２０に、書き込まれるべきデータを記憶するようさらに構成され得る。
【０１２７】
任意で、プロセッサ７０２は、書き込みターゲットアドレスが不揮発性記憶空間７２０におけるＭＳＢページに属するとき、書き込みターゲットアドレスが位置するＭＳＢページがブロック（ｂｌｏｃｋ）における最後のＭＳＢページであるかを判断し、書き込みターゲットアドレスが位置するＭＳＢページがブロックにおける最後のＭＳＢページではないとき、書き込みターゲットアドレスが位置するＭＳＢページから前へ数えてｎ番目のＭＳＢページの共有ページのアドレスを取得し、取得したアドレスをデータ解放アドレスとして用いるようさらに構成され、ここで、ｎは自然数であって少なくとも１であり、又は、第２取得モジュールは、書き込みターゲットアドレスが位置するＭＳＢページがブロックにおける最後のＭＳＢページであるとき、ブロックにおける最後のｎ＋１のＭＳＢページの共有ページのアドレスを取得し、取得したアドレスをデータ解放アドレスとして用い、ｎは自然数であって少なくとも１であり、予め設定されたキャッシュエリア７１０にあってデータ解放アドレスとの第１マッピング関係を有するキャッシュアドレスが指すデータを解放し、第１マッピング関係から、データ解放アドレスを削除するよう構成される。
【０１２８】
任意で、プロセッサ７０２は、不揮発性記憶空間７２０における全ての共有ページグループのＭＳＢページとＬＳＢページとの間の最大のページ数の差であるｍを取得し、ｍは自然数であり、予め設定されたキャッシュエリア７１０に対して、少なくともｎ＊ｐ＋ｍのページの大きさでキャッシュ空間を割り当てるようさらに構成され、ｐは、不揮発性記憶空間７２０におけるＭＳＢページの共有ページの数を表し、ｎは自然数であって少なくとも１である。
【０１２９】
任意で、プロセッサ７０２は、パワーオフ中、不揮発性記憶空間７２０に、予め設定されたキャッシュエリア７１０におけるデータを保存し、キャッシュアドレスと不揮発性記憶空間７２０における保存アドレスとの間の第２マッピング関係を確立し、パワーオン中、第２マッピング関係に従って、予め設定されたキャッシュエリア７１０におけるキャッシュアドレスに、不揮発性記憶空間７２０における保存アドレスが指すデータをキャッシュするようさらに構成される。
【０１３０】
メモリ７０３は、リードオンリメモリとランダムアクセスメモリとを含み、プロセッサ７０２に対して、命令及びデータを提供し得る。メモリ７０３の一部は、不揮発性ランダムアクセスメモリ（ＮＶＲＡＭ）をさらに含み得る。別の実施方式において、メモリ７０３は、代替的に、不揮発性記憶空間７２０と同一の記憶媒体に位置し得る。
【０１３１】
メモリ７０３は、以下の要素、実行可能なモジュール又はデータ構造、それらのサブセット、又はそれらの拡張セットを記憶する。様々なオペレーションを実施するために用いられる様々な操作命令を含む操作命令、及び、様々な基本サービスを実施し、ハードウェアベースのタスクを処理するために用いられる様々なシステムプログラムを含むオペレーティングシステムである。
【０１３２】
本発明の実施形態において、プロセッサ７０２は、メモリ７０３に記憶されている操作命令を呼び出すことによって前述のオペレーションを実行する（操作命令は、オペレーティングシステムに記憶され得る）。
【０１３３】
プロセッサ７０２はまた、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ、中央演算処理装置）と称され得る。具体的な応用において、コントローラの構成部品は、バス７０４を用いることによって、共に結合される。バス７０４は、データバスを含み、加えて、電力バス、制御バス、状態信号バス、及び同様のものをさらに含み得る。しかしながら、説明を明確にするために、図面において、様々なバスは、バス７０４と表記されている。
【０１３４】
本発明の前述の実施形態に開示されている方法は、プロセッサ７０２に適用され得て、又は、プロセッサ７０２により実施され得る。プロセッサ７０２は、集積回路チップであってよく、信号処理能力を有する。実施処理において、前述の方法の段階は、プロセッサ７０２のハードウェアの論理集積回路又はソフトウェア命令を用いることによって、完了され得る。プロセッサ７０２は、汎用プロセッサ、デジタル信号プロセッサ（ＤＳＰ）、特殊用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）又は別のプログラマブル論理デバイス、分離型ゲート又はトランジスタ論理デバイス、又は分離型ハードウェア構成部品であり得る。本発明の実施形態において開示されている方法、段階、及び論理ブロック図は、実施又は実行され得る。汎用プロセッサは、マイクロプロセッサであってよく、又は、プロセッサは、任意の従来のプロセッサ又は同様のものであってよい。本発明の実施形態において開示されている方法の段階は、ハードウェアのデコードプロセッサにより直接実行されてよく、又は、デコードプロセッサにおけるハードウェアとソフトウェアモジュールとの組み合わせにより実行されてよい。ソフトウェアモジュールは、ランダムアクセスメモリ、フラッシュメモリ、リードオンリメモリ、プログラマブルリードオンリメモリ、電気的消去可能なプログラマブルメモリ、又はレジスタなどの、当該技術分野において成熟した記憶媒体に位置し得る。記憶媒体は、メモリ７０３に位置する。プロセッサ７０２は、メモリ７０３から情報を読み出し、プロセッサ７０２のハードウェアとの組み合わせにおいて前述の方法の段階を実施する。
【０１３５】
前述の解決手段において、記憶空間にあって書き込み干渉に起因するデータ読み出し誤りの影響を受けやすいページのデータが、予め設定されたキャッシュエリアにキャッシュされ、ページのデータが読み出されたとき、当該データは、キャッシュエリアから選択的に読み出され、これにより、記憶空間から誤りを含み得るデータを読み出すことを回避する。このことは、書き込み干渉により引き起こされるデータ読み出し誤りを低減し、記憶デバイスの信頼性を改善する。
【０１３６】
本出願に提供されているいくつかの実施形態において、開示されたシステム、装置、及び方法は、他の方式で実施され得ることが、理解されるべきである。例えば、説明された装置の実施形態は、単に例示的なものである。例えば、モジュール又はユニットの区分は単に論理的な機能区分であり、実際の実施において、他の区分であり得る。例えば、複数のユニット又は構成部品は、別のシステムに組み合わされ又は統合されてよく、又は、いくつかの特徴が、無視されてよく、又は実行されなくてよい。加えて、表示された若しくは議論された相互結合又は直接結合若しくは通信接続は、インターフェース、装置、及びユニットの間の間接結合又は通信接続であってよく、又は、電子、機械、又は他の形態で実施されてよい。
【０１３７】
別々の部分として説明されているユニットは、物理的に別々のものであってもよく、又はそうでなくてもよい。ユニットとして表示されている部分は、物理的ユニットであってもよく、又はそうでなくてもよく、１つの場所に位置してよく、又は複数のネットワークユニット上に分布してよい。ユニットのいくつか又は全てが、実施形態の解決手段の目的を達成するように、実際の要求に応じて選択され得る。
【０１３８】
加えて、本出願の実施形態における機能ユニットは、１つの処理ユニットに統合されてよく、又は、ユニットのそれぞれは、物理的に単独で存在してよく、又は、２つ以上のユニットが１つのユニットに統合される。統合ユニットは、ハードウェアの形態で実装されてよく、又は、ソフトウェア機能ユニットの形態で実装されてよい。
【０１３９】
統合ユニットがソフトウェア機能ユニットの形態で実装され、独立な製品として販売され又は用いられるとき、当該統合ユニットは、コンピュータ可読記憶媒体に記憶され得る。そのような理解に基づき、本出願の本質的な技術的解決手段、又は従来技術に寄与する部分、又は技術的解決手段の全て若しくは一部が、ソフトウェア製品の形態で実施され得る。ソフトウェア製品は、記憶媒体において記憶され、（パーソナルコンピュータ、サーバ、又はネットワークデバイスであり得る）コンピュータデバイス、又はプロセッサ（ｐｒｏｃｅｓｓｏｒ）に対して、本出願の実施方式において説明されている方法の段階の全て又は一部を実行するよう命令するいくつかの命令を含む。前述の記憶媒体は、ＵＳＢフラッシュドライブ、リムーバブルハードディスク、リードオンリメモリ（ＲＯＭ、Ｒｅａｄ−Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ランダムアクセスメモリ（ＲＡＭ、Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、磁気ディスク、又は光ディスクなどの、プログラムコードを記憶し得る任意の媒体を含む。
【図１】
0006399720.tif 000004
【図２】
0006399720.tif 000005
【図３】
0006399720.tif 000006
【図４】
0006399720.tif 000007
【図５】
0006399720.tif 000008
【図６】
0006399720.tif 000009
【図７】
0006399720.tif 000010