(57)【要約】【課題】エラー処理方法、並びにデータ記憶装置及びその制御装置を提供する。【解決手段】該エラー処理方法は、ＥＣＣ保護機能を有するバッファメモリにエラー処理プログラムをアップロードし、少なくとも１つのエラーに応じて、現在のプログラムの実行を中断し、割り込みサービスを開始し、該バッファメモリにおける該エラー処理プログラムを実行し、伝送インターフェイス回路を無効にし、少なくとも１つのハードウェアエンジン及び不揮発性メモリ素子をリセットし、データ復元を行うように、該データ記憶装置におけるデータキャッシュに対してキャッシュ再配置を行い、再配置後のキャッシュデータを不揮発性メモリ素子にプログラミングし、該データ記憶装置が再度正常に動作するように、ウォッチドッグモジュール及び該伝送インターフェイス回路を起動してホスト装置と再接続することで、ソフトリセットを行う。【選択図】図３
2020057384.tif 000002
【特許請求の範囲】
【請求項１】
データ記憶装置に適用されるエラー処理方法であって、
前記データ記憶装置は、不揮発性メモリ（ｎｏｎ−ｖｏｌａｔｉｌｅ  ｍｅｍｏｒｙ：ＮＶ  ｍｅｍｏｒｙ）と、前記不揮発性メモリのアクセスを制御するメモリ制御装置とを含み、前記不揮発性メモリは少なくとも１つの不揮発性メモリ素子（ＮＶ  ｍｅｍｏｒｙ  ｅｌｅｍｅｎｔ）を含み、前記少なくとも１つの不揮発性メモリ素子は複数のブロックを含み、
前記エラー処理方法は、
エラー訂正符号（Ｅｒｒｏｒ  Ｃｏｒｒｅｃｔｉｏｎ  Ｃｏｄｅ：ＥＣＣ）保護機能を有するバッファメモリにエラー処理プログラムをアップロード（ｕｐｌｏａｄ）するステップであって、前記バッファメモリは前記メモリ制御装置に位置する、ステップと、
少なくとも１つのエラーに応じて、現在のプログラムの実行を中断し、割り込みサービスを開始するステップと、
前記バッファメモリにおける前記エラー処理プログラムを実行するステップと、
前記メモリ制御装置に位置し、且つホスト装置（ｈｏｓｔ  ｄｅｖｉｃｅ）との通信を行う伝送インターフェイス回路を無効（ｄｉｓａｂｌｅ）にするステップと、
少なくとも１つのハードウェアエンジン及び前記少なくとも１つの不揮発性メモリ素子をリセットするステップと、
データ復元を行うように、前記データ記憶装置におけるデータキャッシュに対してキャッシュ再配置を行い、再配置後のキャッシュデータを前記少なくとも１つの不揮発性メモリ素子にプログラミングするステップと、
前記データ記憶装置が再度正常に動作するように、前記メモリ制御装置におけるウォッチドッグ（Ｗａｔｃｈｄｏｇ）モジュールを起動し、且つ前記伝送インターフェイス回路を起動して前記ホスト装置と再接続することで、ソフトリセット（ｓｏｆｔ  ｒｅｓｅｔ）を行うステップと、を含む、エラー処理方法。
【請求項２】
前記少なくとも１つのエラーに応じて、現在のプログラムの実行を中断し、割り込みサービスを開始するステップは、
複数のソフトエラー（ｓｏｆｔ  ｅｒｒｏｒ）のうち何れか１つのソフトエラーの発生に応じて、前記現在のプログラムの実行を中断し、前記割り込みサービスを開始するステップ、をさらに含み、
前記少なくとも１つのエラーは、前記何れか１つのソフトエラーを含む、請求項１に記載のエラー処理方法。
【請求項３】
前記バッファメモリにおける前記エラー処理プログラムを実行するステップは、
前記現在のプログラムの実行アドレスから前記エラー処理プログラムの先頭にジャンプ（ｊｕｍｐ）して前記エラー処理プログラムを実行するステップ、をさらに含む、請求項１に記載のエラー処理方法。
【請求項４】
前記伝送インターフェイス回路を無効にするステップは、
前記伝送インターフェイス回路を無効にして前記ホスト装置へのデータの受信と送信を停止するステップ、をさらに含む、請求項１に記載のエラー処理方法。
【請求項５】
前記データ記憶装置は、動的ランダムアクセスメモリ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ：ＤＲＡＭ）をさらに含み、
前記データキャッシュは、前記動的ランダムアクセスメモリに位置する、請求項１に記載のエラー処理方法。
【請求項６】
前記データ記憶装置におけるデータキャッシュに対してキャッシュ再配置を行うステップは、
再割り当ての範囲において、前記キャッシュのキャッシュデータを再割り当てする（ｒｅａｌｌｏｃａｔｅ）ステップ、をさらに含み、
前記再割り当ての範囲は、前記データキャッシュのキャッシュ末尾の傍にある、請求項１に記載のエラー処理方法。
【請求項７】
前記データ記憶装置におけるデータキャッシュに対してキャッシュ再配置を行うステップは、
少なくとも１つのトリガされた書き込みコマンド（ｔｒｉｇｇｅｒｅｄ  ｗｒｉｔｅ  ｃｏｍｍａｎｄ）が存在するか否かを判断するステップと、
前記少なくとも１つのトリガされた書き込みコマンドが存在する場合、トリガされた書き込みコマンドに基づいて前記データキャッシュのキャッシュ空間を割り当てる（ａｌｌｏｃａｔｅ）ステップと、をさらに含む、請求項６に記載のエラー処理方法。
【請求項８】
前記データ記憶装置におけるデータキャッシュに対してキャッシュ再配置を行うステップは、
トリガされた書き込みコマンド（ｔｒｉｇｇｅｒｅｄ  ｗｒｉｔｅ  ｃｏｍｍａｎｄ）のデータの何れかが前記データキャッシュにバッファリングされていないか否かを判断するステップと、
前記トリガされた書き込みコマンドのデータの何れかが前記データキャッシュにバッファリングされていない場合、前記データキャッシュのキャッシュ空間を再同期する（ｒｅ−ｓｙｎｃｈｒｏｎｉｚｅ）ステップと、をさらに含む、請求項６に記載のエラー処理方法。
【請求項９】
前記再配置後のキャッシュデータを前記少なくとも１つの不揮発性メモリ素子にプログラミングするステップは、
前記再配置後のキャッシュデータを前記少なくとも１つの不揮発性メモリ素子における１つ又は複数のラッシングブロック（Ｆｌｕｓｈｉｎｇ  Ｂｌｏｃｋ）にプログラミングするステップ、をさらに含み、
前記１つ又は複数のラッシングブロックは、前記少なくとも１つの不揮発性メモリ素子から選択された空きブロックである、請求項１に記載のエラー処理方法。
【請求項１０】
前記再配置後のキャッシュデータを前記少なくとも１つの不揮発性メモリ素子における１つ又は複数のラッシングブロックにプログラミングするステップは、
１つのページよりも大きい所定のプログラミング単位で、前記再配置後のキャッシュデータを前記１つ又は複数のラッシングブロックにプログラミングするステップと、
プログラミング後の残りのキャッシュデータのデータ長が前記所定のプログラミング単位よりも短い場合、結合後のデータ長が前記所定のプログラミング単位に等しくなるように、前記残りのキャッシュデータとダミーデータ（Ｄｕｍｍｙ  Ｄａｔａ）とを結合し、前記残りのキャッシュデータと前記ダミーデータとを前記１つ又は複数のラッシングブロックにプログラミングするステップと、をさらに含む、請求項９に記載のエラー処理方法。
【請求項１１】
データ記憶装置であって、
情報を記憶する不揮発性メモリ（ｎｏｎ−ｖｏｌａｔｉｌｅ  ｍｅｍｏｒｙ：ＮＶ  ｍｅｍｏｒｙ）であって、前記不揮発性メモリは少なくとも１つの不揮発性メモリ素子（ＮＶ  ｍｅｍｏｒｙ  ｅｌｅｍｅｎｔ）を含み、前記少なくとも１つの不揮発性メモリ素子は複数のブロックを含む、不揮発性メモリと、
前記不揮発性メモリに接続され、前記データ記憶装置の動作を制御する制御装置と、を含み、
前記制御装置は、
情報を一時的に記憶するバッファメモリと、
特定の通信規格に準拠した伝送インターフェイス回路であって、前記特定の通信規格に従って通信を行う伝送インターフェイス回路と、
ホスト装置（ｈｏｓｔ  ｄｅｖｉｃｅ）が前記制御装置を介して前記不揮発性メモリにアクセス（ａｃｃｅｓｓ）できるように、前記ホスト装置からの複数のホストコマンド（ｈｏｓｔ  ｃｏｍｍａｎｄ）に基づいて前記制御装置を制御する処理回路と、を含み、
前記制御装置は、エラー訂正符号（Ｅｒｒｏｒ  Ｃｏｒｒｅｃｔｉｏｎ  Ｃｏｄｅ：ＥＣＣ）保護機能を有する前記バッファメモリにエラー処理プログラムをアップロード（ｕｐｌｏａｄ）し、
前記制御装置は、少なくとも１つのエラーに応じて、現在のプログラムの実行を中断し、割り込みサービスを開始し、
前記制御装置は、前記バッファメモリにおける前記エラー処理プログラムを実行し、
前記制御装置は、前記ホスト装置との通信を行う伝送インターフェイス回路を無効（ｄｉｓａｂｌｅ）にし、
前記制御装置は、少なくとも１つのハードウェアエンジン及び前記少なくとも１つの不揮発性メモリ素子をリセットし、
前記制御装置は、データ復元を行うように、前記データ記憶装置におけるデータキャッシュに対してキャッシュ再配置を行い、再配置後のキャッシュデータを前記少なくとも１つの不揮発性メモリ素子にプログラミングし、
前記制御装置は、前記データ記憶装置が再度正常に動作するように、前記メモリ制御装置におけるウォッチドッグ（Ｗａｔｃｈｄｏｇ）モジュールを起動し、且つ前記伝送インターフェイス回路を起動して前記ホスト装置と再接続することで、ソフトリセット（ｓｏｆｔ  ｒｅｓｅｔ）を行う、データ記憶装置。
【請求項１２】
前記制御装置は、複数のソフトエラー（ｓｏｆｔ  ｅｒｒｏｒ）のうち何れか１つのソフトエラーの発生に応じて、前記現在のプログラムの実行を中断し、前記割り込みサービスを開始し、
前記少なくとも１つのエラーは、前記何れか１つのソフトエラーを含む、請求項１１に記載のデータ記憶装置。
【請求項１３】
前記制御装置は、前記現在のプログラムの実行アドレスから前記エラー処理プログラムの先頭にジャンプ（ｊｕｍｐ）して前記エラー処理プログラムを実行する、請求項１１に記載のデータ記憶装置。
【請求項１４】
前記制御装置は、前記伝送インターフェイス回路を無効にして前記ホスト装置へのデータの受信と送信を停止する、請求項１１に記載のデータ記憶装置。
【請求項１５】
前記データ記憶装置は、動的ランダムアクセスメモリ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ：ＤＲＡＭ）をさらに含み、
前記データキャッシュは、前記動的ランダムアクセスメモリに位置する、請求項１１に記載のデータ記憶装置。
【請求項１６】
データ記憶装置の制御装置であって、
前記データ記憶装置は、
前記制御装置と、
不揮発性メモリ（ｎｏｎ−ｖｏｌａｔｉｌｅ  ｍｅｍｏｒｙ：ＮＶ  ｍｅｍｏｒｙ）であって、前記不揮発性メモリは少なくとも１つの不揮発性メモリ素子（ＮＶ  ｍｅｍｏｒｙ  ｅｌｅｍｅｎｔ）を含み、前記少なくとも１つの不揮発性メモリ素子は複数のブロックを含む、不揮発性メモリと、を含み、
前記制御装置は、
情報を一時的に記憶するバッファメモリと、
特定の通信規格に準拠した伝送インターフェイス回路であって、前記特定の通信規格に従って通信を行う伝送インターフェイス回路と、
ホスト装置（ｈｏｓｔ  ｄｅｖｉｃｅ）が前記制御装置を介して前記不揮発性メモリにアクセス（ａｃｃｅｓｓ）できるように、前記ホスト装置からの複数のホストコマンド（ｈｏｓｔ  ｃｏｍｍａｎｄ）に基づいて前記制御装置を制御する処理回路と、を含み、
前記制御装置は、エラー訂正符号（Ｅｒｒｏｒ  Ｃｏｒｒｅｃｔｉｏｎ  Ｃｏｄｅ：ＥＣＣ）保護機能を有する前記バッファメモリにエラー処理プログラムをアップロード（ｕｐｌｏａｄ）し、
前記制御装置は、少なくとも１つのエラーに応じて、現在のプログラムの実行を中断し、割り込みサービスを開始し、
前記制御装置は、前記バッファメモリにおける前記エラー処理プログラムを実行し、
前記制御装置は、前記ホスト装置との通信を行う伝送インターフェイス回路を無効（ｄｉｓａｂｌｅ）にし、
前記制御装置は、少なくとも１つのハードウェアエンジン及び前記少なくとも１つの不揮発性メモリ素子をリセットし、
前記制御装置は、データ復元を行うように、前記データ記憶装置におけるデータキャッシュに対してキャッシュ再配置を行い、再配置後のキャッシュデータを前記少なくとも１つの不揮発性メモリ素子にプログラミングし、
前記制御装置は、前記データ記憶装置が再度正常に動作するように、前記メモリ制御装置におけるウォッチドッグ（Ｗａｔｃｈｄｏｇ）モジュールを起動し、且つ前記伝送インターフェイス回路を起動して前記ホスト装置と再接続することで、ソフトリセット（ｓｏｆｔ  ｒｅｓｅｔ）を行う、制御装置。
【請求項１７】
前記制御装置は、複数のソフトエラー（ｓｏｆｔ  ｅｒｒｏｒ）のうち何れか１つのソフトエラーの発生に応じて、前記現在のプログラムの実行を中断し、前記割り込みサービスを開始し、
前記少なくとも１つのエラーは、前記何れか１つのソフトエラーを含む、請求項１６に記載の制御装置。
【請求項１８】
前記制御装置は、前記現在のプログラムの実行アドレスから前記エラー処理プログラムの先頭にジャンプ（ｊｕｍｐ）して前記エラー処理プログラムを実行する、請求項１６に記載の制御装置。
【請求項１９】
前記制御装置は、前記伝送インターフェイス回路を無効にして前記ホスト装置へのデータの受信と送信を停止する、請求項１６に記載の制御装置。
【請求項２０】
前記データ記憶装置は、動的ランダムアクセスメモリ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ：ＤＲＡＭ）をさらに含み、
前記データキャッシュは、前記動的ランダムアクセスメモリに位置する、請求項１６に記載の制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、フラッシュメモリ（Ｆｌａｓｈ  ｍｅｍｏｒｙ）へのアクセス（ａｃｃｅｓｓ）に関し、特にエラー処理（ｅｒｒｏｒ  ｈａｎｄｌｉｎｇ）方法、並びに関連するデータ記憶装置及びその制御装置に関する。
【背景技術】
【０００２】
フラッシュメモリは、様々なポータブル式又は非ポータブル式のデータ記憶装置（例えばＳＤ／ＭＭＣ、ＣＦ、ＭＳ、ＸＤ又はＵＦＳ規格に準拠したメモリカード、また、例えばソリッドステートドライブ、また、例えばＵＦＳ又はＥＭＭＣ規格に準拠した組み込み式（ｅｍｂｅｄｄｅｄ）の記憶装置）広く適用されてもよい。通常のＮＡＮＤ型フラッシュメモリは、最初にシングルレベルセル（ｓｉｎｇｌｅ  ｌｅｖｅｌ  ｃｅｌｌ：ＳＬＣ）、マルチレベルセル（ｍｕｌｔｉｐｌｅ  ｌｅｖｅｌ  ｃｅｌｌ：ＭＬＣ）などのタイプのフラッシュメモリがある。メモリの技術の継続的な発展により、新しいデータ記憶装置の製品は、トリプルレベルセル（ｔｒｉｐｌｅ  ｌｅｖｅｌ  ｃｅｌｌ：ＴＬＣ）フラッシュメモリ、さらにクォッドルプルレベルセル（ｑｕａｄｒｕｐｌｅ  ｌｅｖｅｌ  ｃｅｌｌ：ＱＬＣ）フラッシュメモリを採用できる。データ記憶装置のフラッシュメモリへのアクセス制御が関連する規制に準拠できるようにするために、通常、フラッシュメモリの制御装置は、内部動作を適切に管理するための管理メカニズムを備える。
【０００３】
関連技術では、このような管理メカニズムを有するデータ記憶装置に依然として欠陥がある。例えば、半導体プロセスの素子の密度が高くなると、ソフトエラー（ｓｏｆｔ  ｅｒｒｏｒ）の発生率も高くなる。ソフトエラーが発生すると、ビットフリップ（Ｂｉｔ  ｆｌｉｐ）のエラーが発生する場合が多い。この状況の悪化を避けるために、関連技術では幾つかの提案がなされてきた。これらの提案の何れかが採用されているかに関わらず、エラービットの数がエラー訂正メカニズムで訂正可能な範囲を超えた場合、従来の構成の定型的な対応方法として、様々な予測不能なエラーがさらに発生することを防ぐように、データ記憶装置がシステム停止（ｓｙｓｔｅｍ  ｈａｌｔ）状態に入るように制御する。しかし、従来構成のこのような制御により、データ記憶装置全体が動作を継続できず、ユーザのデータ損失（ｄａｔａ  ｌｏｓｓ）のリスクが大幅に高くなってしまう。従って、副作用がなく、又は副作用を起こす可能性が低く、且つ信頼性の高い管理メカニズムを有するデータ記憶装置を実現するための新しい方法及び関連する構成が求められている。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本発明の１つの目的は、上記の問題を解決するエラー処理（ｅｒｒｏｒ  ｈａｎｄｌｉｎｇ）方法、並びに関連するデータ記憶装置及びその制御装置を提供することである。
【０００５】
本発明のもう１つの目的は、副作用がなく、又は副作用を起こす可能性が低く、且つ信頼性の高い管理メカニズムを有するデータ記憶装置を実現できるエラー処理方法、並びに関連するデータ記憶装置及びその制御装置を提供することである。
【課題を解決するための手段】
【０００６】
本発明の少なくとも１つの実施例は、データ記憶装置に適用されるエラー処理方法であって、前記データ記憶装置は、不揮発性メモリ（ｎｏｎ−ｖｏｌａｔｉｌｅ  ｍｅｍｏｒｙ：ＮＶ  ｍｅｍｏｒｙ）と、前記不揮発性メモリのアクセスを制御するメモリ制御装置とを含み、前記不揮発性メモリは少なくとも１つの不揮発性メモリ素子（ＮＶ  ｍｅｍｏｒｙ  ｅｌｅｍｅｎｔ）を含み、前記少なくとも１つの不揮発性メモリ素子は複数のブロックを含み、前記エラー処理方法は、エラー訂正符号（Ｅｒｒｏｒ  Ｃｏｒｒｅｃｔｉｏｎ  Ｃｏｄｅ：ＥＣＣ）保護機能を有するバッファメモリにエラー処理プログラムをアップロード（ｕｐｌｏａｄ）するステップであって、前記バッファメモリは前記メモリ制御装置に位置する、ステップと、少なくとも１つのエラーに応じて、現在のプログラムの実行を中断し、割り込みサービスを開始するステップと、前記バッファメモリにおける前記エラー処理プログラムを実行するステップと、前記メモリ制御装置に位置し、且つホスト装置（ｈｏｓｔ  ｄｅｖｉｃｅ）との通信を行う伝送インターフェイス回路を無効（ｄｉｓａｂｌｅ）にするステップと、少なくとも１つのハードウェアエンジン及び前記少なくとも１つの不揮発性メモリ素子をリセットするステップと、データ復元を行うように、前記データ記憶装置におけるデータキャッシュに対してキャッシュ再配置を行い、再配置後のキャッシュデータを前記少なくとも１つの不揮発性メモリ素子にプログラミングするステップと、前記データ記憶装置が再度正常に動作するように、前記メモリ制御装置におけるウォッチドッグ（Ｗａｔｃｈｄｏｇ）モジュールを起動し、且つ前記伝送インターフェイス回路を起動して前記ホスト装置と再接続することで、ソフトリセット（ｓｏｆｔ  ｒｅｓｅｔ）を行うステップと、を含む、エラー処理方法を提供する。
【０００７】
本発明の少なくとも１つの実施例は、データ記憶装置であって、情報を記憶する不揮発性メモリであって、前記不揮発性メモリは少なくとも１つの不揮発性メモリ素子を含み、前記少なくとも１つの不揮発性メモリ素子は複数のブロックを含む、不揮発性メモリと、前記不揮発性メモリに接続され、前記データ記憶装置の動作を制御する制御装置と、を含み、前記制御装置は、情報を一時的に記憶するバッファメモリと、特定の通信規格に準拠した伝送インターフェイス回路であって、前記特定の通信規格に従って通信を行う伝送インターフェイス回路と、ホスト装置（ｈｏｓｔ  ｄｅｖｉｃｅ）が前記制御装置を介して前記不揮発性メモリにアクセスできるように、前記ホスト装置からの複数のホストコマンド（ｈｏｓｔ  ｃｏｍｍａｎｄ）に基づいて前記制御装置を制御する処理回路と、を含み、前記制御装置は、エラー訂正符号（ＥＣＣ）保護機能を有する前記バッファメモリにエラー処理プログラムをアップロードし、前記制御装置は、少なくとも１つのエラーに応じて、現在のプログラムの実行を中断し、割り込みサービスを開始し、前記制御装置は、前記バッファメモリにおける前記エラー処理プログラムを実行し、前記制御装置は、前記ホスト装置との通信を行う伝送インターフェイス回路を無効にし、前記制御装置は、少なくとも１つのハードウェアエンジン及び前記少なくとも１つの不揮発性メモリ素子をリセットし、前記制御装置は、データ復元を行うように、前記データ記憶装置におけるデータキャッシュに対してキャッシュ再配置を行い、再配置後のキャッシュデータを前記少なくとも１つの不揮発性メモリ素子にプログラミングし、前記制御装置は、前記データ記憶装置が再度正常に動作するように、前記メモリ制御装置におけるウォッチドッグモジュールを起動し、且つ前記伝送インターフェイス回路を起動して前記ホスト装置と再接続することで、ソフトリセットを行う、データ記憶装置を提供する。
【０００８】
本発明の少なくとも１つの実施例は、データ記憶装置の制御装置であって、前記データ記憶装置は、前記制御装置と、不揮発性メモリであって、前記不揮発性メモリは少なくとも１つの不揮発性メモリ素子を含み、前記少なくとも１つの不揮発性メモリ素子は複数のブロックを含む、不揮発性メモリと、を含み、前記制御装置は、情報を一時的に記憶するバッファメモリと、特定の通信規格に準拠した伝送インターフェイス回路であって、前記特定の通信規格に従って通信を行う伝送インターフェイス回路と、ホスト装置が前記制御装置を介して前記不揮発性メモリにアクセスできるように、前記ホスト装置からの複数のホストコマンドに基づいて前記制御装置を制御する処理回路と、を含み、前記制御装置は、エラー訂正符号（ＥＣＣ）保護機能を有する前記バッファメモリにエラー処理プログラムをアップロードし、前記制御装置は、少なくとも１つのエラーに応じて、現在のプログラムの実行を中断し、割り込みサービスを開始し、前記制御装置は、前記バッファメモリにおける前記エラー処理プログラムを実行し、前記制御装置は、前記ホスト装置との通信を行う伝送インターフェイス回路を無効にし、前記制御装置は、少なくとも１つのハードウェアエンジン及び前記少なくとも１つの不揮発性メモリ素子をリセットし、前記制御装置は、データ復元を行うように、前記データ記憶装置におけるデータキャッシュに対してキャッシュ再配置を行い、再配置後のキャッシュデータを前記少なくとも１つの不揮発性メモリ素子にプログラミングし、前記制御装置は、前記データ記憶装置が再度正常に動作するように、前記メモリ制御装置におけるウォッチドッグモジュールを起動し、且つ前記伝送インターフェイス回路を起動して前記ホスト装置と再接続することで、ソフトリセットを行う、制御装置を提供する。
【発明の効果】
【０００９】
本発明の利点の１つとしては、慎重に設計された管理メカニズムにより、本発明は該制御装置の動作を適切に制御することができ、特に、データ記憶装置は、ソフトエラー（ｓｏｆｔ  ｅｒｒｏｒ）が発生した場合、例えばデータ記憶装置が干渉（例えば放射、ノイズなど）を受けた場合、復元を自律的に行うことができる。データ記憶装置はソフトエラーが発生した場合に復元を自律的に行うことができるため、本発明は、ソフトエラー率（Ｓｏｆｔ  Ｅｒｒｏｒ  Ｒａｔｅ：ＳＥＲ）を低減させることができ、ユーザのデータ損失のリスクを大幅に低減させることができる。また、本発明の実施例によれば、余分のコストを増加することはない。よって、関連技術の問題を解決することができると共に、全体的なコストを増加することはない。従来の構成に比べると、本発明は、副作用がなく、又は副作用を起こす可能性が低く、最適な性能を有するデータ記憶装置を実現することができる。
【図面の簡単な説明】
【００１０】
【図１】本発明の実施例に係るデータ記憶装置及びホスト装置（ｈｏｓｔ  ｄｅｖｉｃｅ）を示す模式図である。
【図２】本発明の実施例に係るキャッシュ割り当て（ｃａｃｈｅ  ａｌｌｏｃａｔｉｏｎ）のスキームを示す図である
【図３】本発明の実施例に係るエラー処理方法を示すフローチャートである。
【図４】本発明の実施例に係る図１に示すメモリ制御装置によりソフトエラーが発生するか否かを判断する方法の実装の詳細を示す図である。
【図５】本発明の実施例に係る図３に示すエラー処理方法におけるキャッシュ再配置を示す図である。
【発明を実施するための形態】
【００１１】
図１は本発明の第１実施例に係るデータ記憶装置１００及びホスト装置（ｈｏｓｔ  ｄｅｖｉｃｅ）５０を示す模式図である。例えば、データ記憶装置１００は、ソリッドステートドライブ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ：ＳＳＤ）であってもよい。また、ホスト装置５０は、例えば多機能の携帯電話（ｍｕｌｔｉｆｕｎｃｔｉｏｎａｌ  ｍｏｂｉｌｅ  ｐｈｏｎｅ）、タブレットコンピュータ（ｔａｂｌｅｔ）、及びデスクトップパーソナルコンピュータやラップトップパーソナルコンピュータなどのパーソナルコンピュータ（ｐｅｒｓｏｎａｌ  ｃｏｍｐｕｔｅｒ）を含んでもよいが、これらに限定されない。本実施例では、データ記憶装置１００は、メモリ制御装置１１０などの制御装置と、不揮発性メモリ（ｎｏｎ−ｖｏｌａｔｉｌｅ  ｍｅｍｏｒｙ：ＮＶ  ｍｅｍｏｒｙ）１２０とを含んでもよく、該制御装置は不揮発性メモリ１２０にアクセス（ａｃｃｅｓｓ）するために用いられ、不揮発性メモリ１２０は情報を記憶するために用いられる。
【００１２】
不揮発性メモリ１２０は、複数の不揮発性メモリ素子（ＮＶ  ｍｅｍｏｒｙ  ｅｌｅｍｅｎｔ）１２２−１、１２２−２、…、１２２−Ｎを含んでもよく、ここで、符号「Ｎ」は１よりも大きい正整数を表してもよい。例えば、不揮発性メモリ１２０はフラッシュメモリ（Ｆｌａｓｈ  ｍｅｍｏｒｙ）であってもよく、不揮発性メモリ素子１２２−１、１２２−２、…、１２２−Ｎはそれぞれ複数のフラッシュメモリチップ（Ｆｌａｓｈ  ｍｅｍｏｒｙ  ｃｈｉｐ。フラッシュチップと略称されてもよい）又は複数のフラッシュメモリダイ（Ｆｌａｓｈ  ｍｅｍｏｒｙ  ｄｉｅ。フラッシュダイと略称されてもよい）であってもよいが、本発明はこれに限定されない。また、データ記憶装置１００は、データのバッファリングのための揮発性メモリ素子１３０をさらに含んでもよく、ここで、揮発性メモリ素子１３０は、好ましくは、動的ランダムアクセスメモリ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ。ＤＲＡＭと略称される）である。メモリ制御装置１１０の制御により、データ記憶装置１００は、例えば不揮発性メモリ１２０にアクセスする期間で、データを一時的に記憶するように、揮発性メモリ素子１３０の記憶空間の少なくとも一部（例えば一部又は全部）をデータバッファリング空間として用いてもよい。また、揮発性メモリ素子１３０はオプションの素子である。
【００１３】
メモリ制御装置１１０は、マイクロプロセッサ１１２などの処理回路、読み出し専用メモリ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ：ＲＯＭ）１１２Ｍなどのメモリ、制御論理回路１１４、バッファメモリ１１６及び伝送インターフェイス回路１１８を含んでもよく、これらの素子はバスを介して互いに接続されてもよい。バッファメモリ１１６は、好ましくは、静的ランダムアクセスメモリ（Ｓｔａｔｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ：ＳＲＡＭ）である。例えば、メモリ制御装置１１０は、ＳＲＡＭなどのバッファメモリ１１６を第１層キャッシュ（Ｃａｃｈｅ）として用い、ＤＲＡＭなどの揮発性メモリ素子１３０を第２層キャッシュとして用いてもよい。好ましくは、ＤＲＡＭのデータ記憶容量はバッファメモリ１１６のデータ記憶容量よりも大きく、バッファメモリ１１６によりバッファリングされるデータはＤＲＡＭ又は不揮発性メモリ１２０から得られたものであってもよい。
【００１４】
本実施例の読み出し専用メモリ１１２Ｍはプログラムコード１１２Ｃを記憶するために用いられ、マイクロプロセッサ１１２はプログラムコード１１２Ｃを実行して不揮発性メモリ１２０へのアクセスを制御するために用いられる。なお、プログラムコード１１２Ｃはバッファメモリ１１６又は任意の形式のメモリに記憶されてもよい。また、制御論理回路１１４は、データを保護し、且つ／或いはエラー訂正を行うために、少なくとも１つのエラー訂正符号（Ｅｒｒｏｒ  Ｃｏｒｒｅｃｔｉｏｎ  Ｃｏｄｅ。ＥＣＣと略称される）回路（図示せず）を含んでもよく、伝送インターフェイス回路１１８は、特定の通信規格（例えばシリアル・アドバンスド・テクノロジー・アタッチメント（Ｓｅｒｉａｌ  Ａｄｖａｎｃｅｄ  Ｔｅｃｈｎｏｌｏｇｙ  Ａｔｔａｃｈｍｅｎｔ：ＳＡＴＡ）規格、ペリフェラル・コンポーネント・インターコネクト・エクスプレス（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ  Ｅｘｐｒｅｓｓ：ＰＣＩＥ）規格、又は不揮発性メモリ（Ｎｏｎ−Ｖｏｌａｔｉｌｅ  Ｍｅｍｏｒｙ  Ｅｘｐｒｅｓｓ：ＮＶＭＥ）規格など）に準拠し、該特定の通信規格に従って通信を行ってもよく、特に該特定の通信規格に従ってホスト装置５０との通信を行ってもよい。
【００１５】
本実施例では、ホスト装置５０は複数のホストコマンド（Ｈｏｓｔ  Ｃｏｍｍａｎｄ）をデータ記憶装置１００に送信してもよく、メモリ制御装置１１０はホストコマンドに基づいて不揮発性メモリ１２０にアクセスし（例えばデータを読み取り、或いは書き込み）、ここで、上記のデータは、好ましくは、ホスト装置５０からのユーザデータである。ホストコマンドには、論理アドレス、例えば論理ブロックアドレス（Ｌｏｇｉｃａｌ  Ｂｌｏｃｋ  Ａｄｄｒｅｓｓ）が含まれる。メモリ制御装置１１０は、ホストコマンドを受信してホストコマンドをメモリ操作コマンド（操作コマンドと略称される）にそれぞれ変換し、操作コマンドを用いて不揮発性メモリ１２０の読み取り、書き込み（Ｗｒｉｔｅ）を制御し、不揮発性メモリ１２０における特定の物理アドレスのページ（Ｐａｇｅ）をプログラミング（Ｐｒｏｇｒａｍ）してもよい。不揮発性メモリ１２０は、データの論理アドレスと物理アドレスとのマッピング関係を論理物理アドレスマッピングテーブル（Ｌｏｇｉｃａｌ−ｔｏ−Ｐｈｙｓｉｃａｌ  Ａｄｄｒｅｓｓ  Ｍａｐｐｉｎｇ  Ｔａｂｌｅ。「Ｌ２Ｐマッピングテーブル」と略称される）に記録する。ここで、物理アドレスは、チャネル（Ｃｈａｎｎｅｌ）番号、論理ユニット番号（Ｌｏｇｉｃａｌ  Ｕｎｉｔ  Ｎｕｍｂｅｒ：ＬＵＮ）、プレーン（Ｐｌａｎｅ）番号、ブロック番号、ページ番号、及びオフセット（Ｏｆｆｓｅｔ）により構成されてもよい。幾つかの実施例では、物理アドレスの実装は異なってもよい。例えば、物理アドレスは、チャネル番号、論理ユニット番号、プレーン番号、ブロック番号、ページ番号、及び／又はオフセットを含んでもよい。
【００１６】
Ｌ２Ｐマッピングテーブルは、不揮発性メモリ１２０におけるシステムブロックに記憶されてもよく、複数のグループ（Ｇｒｏｕｐ）マッピングテーブルに分割されてもよく、システムブロックは、好ましくは、暗号化されたブロックであり、ＳＬＣモードでデータをプログラミングするものである。メモリ制御装置１１０は、迅速の参照のために、バッファメモリ１１６の容量の大きさに基づいて該複数のグループマッピングテーブルにおける一部又は全部のグループマッピングテーブルを不揮発性メモリ１２０からバッファメモリ１１６にロードしてもよいが、本発明はこれに限定されない。ユーザデータが更新された場合、メモリ制御装置１１０は、ユーザデータの最新のマッピング関係に基づいてグループマッピングテーブルを更新してもよい。該複数のグループマッピングテーブルの任意のグループマッピングテーブルの大きさは、好ましくは、不揮発性メモリ素子１２２−ｎの１つのページ（Ｐａｇｅ）の大きさ、例えば１６ＫＢ（ｋｉｌｏｂｙｔｅｓ：キロバイト）に等しく、ここで、符号「ｎ」は範囲［１，Ｎ］内の任意の正整数を表してもよいが、本発明はこれに限定されない。上記任意のグループマッピングテーブルの大きさはページの大きさよりも小さくてもよく、例えば４ＫＢ又は１ＫＢであってもよい。なお、上記任意のグループマッピングテーブルの大きさは、複数の不揮発性メモリ素子１２２の１つのページの大きさ、例えばＮ＝４の場合の４つの不揮発性メモリ素子１２２の１つのページの大きさ、即ち６４ＫＢに等しくてもよく、ここで、この４つの不揮発性メモリ素子１２２のページはスーパーページ（Ｓｕｐｅｒ  Ｐａｇｅ）と称されもよい。
【００１７】
また、メモリ制御装置１１０が不揮発性メモリ１２０に対してプログラミング動作を行うための最小単位は１つのページであってもよく、メモリ制御装置１１０が不揮発性メモリ１２０に対して消去（Ｅｒａｓｅ）動作を行うための最小単位は１つのブロックであってもよい。不揮発性メモリ素子１２２−ｎの複数のブロックの各ブロックは複数のページを含む。
【００１８】
書き込みキャッシュ（Ｗｒｉｔｅ  Ｃａｃｈｅ）モードでは、ホスト装置５０は、書き込みコマンドを送信し、メモリ制御装置１１０がユーザデータ（データと略称される）を不揮発性メモリ１２０に書き込むように要求してもよい。メモリ制御装置１１０は、ホスト装置５０から該データを受信し、或いはダウンロードし、バッファメモリ１１６を用いて該データをバッファリングし、揮発性メモリ素子１３０を用いて該データをキャッシュし、そして、書き込みコマンドの実行が完了したメッセージをホスト装置５０に直接応答してもよい。その後、書き込み条件が満たされた場合、例えば累積のデータ長がページの長さ又はスーパーページの長さ以上である場合、メモリ制御装置１１０はキャッシュされたデータを不揮発性メモリ１２０のデータに書き込む。
【００１９】
図２に示すように、メモリ制御装置１１０のマイクロプロセッサ１１２は、データキャッシュのキャッシュ割り当て（ｃａｃｈｅ  ａｌｌｏｃａｔｉｏｎ）を行い、割り当て操作及び／又は関連操作に応じてデータキャッシュのキャッシュ先頭（ｃａｃｈｅ  ｈｅａｄ）Ｈ及びキャッシュ末尾（ｃａｃｈｅ  ｔａｉｌ）Ｔのアドレスを更新してもよく、ここで、キャッシュ先頭Ｈ及びキャッシュ末尾Ｔはデータキャッシュのキャッシュ割り当てパラメータと見なされてもよい。図２の下半部に示す横軸はキャッシュ範囲を表す。揮発性メモリ素子１３０を上記データキャッシュの一例にすると、キャッシュ範囲はキャッシュアドレスの範囲に対応する。キャッシュアドレス範囲について、メモリ制御装置１１０（例えばマイクロプロセッサ１１２）は例えば４ＫＢを単位として揮発性メモリ素子１３０のキャッシュ空間を割り当て（ａｌｌｏｃａｔｅ）、例えば、所定の順序に従って、例えば左から右へ揮発性メモリ素子１３０のキャッシュ空間を割り当てる。ここで、キャッシュアドレス範囲における任意の２つのアドレス値は、左のアドレス値が右のアドレス値よりも小さいが、本発明はこれに限定されない。
【００２０】
マイクロプロセッサ１１２が循環（ｃｙｃｌｉｃ）の方式で揮発性メモリ素子１３０のキャッシュ空間を用いるため、キャッシュアドレス範囲は循環のアドレス範囲と見なされ、キャッシュアドレス範囲に対応するキャッシュ範囲は循環の範囲と見なされてもよい。マイクロプロセッサ１１２が長さ４ＫＢのデータをキャッシュする場合、マイクロプロセッサ１１２はキャッシュ先頭Ｈのアドレスを基本増分（例えば１）で（左から右へ）移動させ、キャッシュ先頭Ｈの移動前と移動後との間のキャッシュ空間に４ＫＢのキャッシュデータを記憶できるようにする。
【００２１】
マイクロプロセッサ１１２は、揮発性メモリ素子１３０の１つの４ＫＢのデータのために先入れ先出し（Ｆｉｒｓｔ−Ｉｎ  Ｆｉｒｓｔ−Ｏｕｔ。ＦＩＦＯと略称される）バッファを割り当て、該４ＫＢのデータを不揮発性メモリ１２０に書き込む。ＦＩＦＯバッファの割り当てが完了した後に、マイクロプロセッサ１１２は、キャッシュ末尾Ｔを基本増分（例えば１）で（左から右へ）移動させて、次の不揮発性メモリ１２０に書き込まれる４ＫＢのデータに対応するようにキャッシュ末尾Ｔを更新する。言い換えれば、キャッシュ先頭Ｈとキャッシュ末尾Ｔとの間の範囲は既にキャッシュされたデータ（キャッシュデータと略称される）であり、残りのキャッシュ空間は空白であり、或いは無効なデータが記憶されており、マイクロプロセッサ１１２はデータを空白のキャッシュ空間に書き込んでもよい。
【００２２】
いくつかの実施例では、上記少なくとも１つのＥＣＣ回路は、複数のＥＣＣエンジンなどの複数のＥＣＣ回路を含んでもよい。複数のＥＣＣ回路は、複数のプロシージャ（Ｐｒｏｃｅｄｕｒｅ）に従ってデータのパリティ符号（Ｐａｒｉｔｙ  Ｃｏｄｅ）を生成し、且つ／或いはパリティ符号に基づいてデータに対してエラー訂正を行ってもよい。特に、複数のＥＣＣ回路は並列に動作してもよいため、メモリ制御装置１１０（例えば、マイクロプロセッサ１１２）は複数のプロシージャを複数のＥＣＣ回路に割り当ててもよいが、本発明はこれに限定されない。
【００２３】
いくつかの実施例では、バッファメモリ１１６は重用な情報を記憶するために用いられてもよく、重要な情報は、例えばホスト装置５０からのユーザデータ、特定のプログラムコードの指示（ｉｎｓｔｒｕｃｔｉｏｎ）及びデータなどを含んでもよいが、これらに限定されない。
【００２４】
図３は本発明の実施例に係るエラー処理（Ｅｒｒｏｒ  Ｈａｎｄｌｉｎｇ）方法を示すフローチャートである。該エラー処理方法は、データ記憶装置１００に適用され、データ記憶装置１００のメモリ制御装置１１０により実行されてもよく、データ記憶装置１００の動作中に生成されたソフトエラー（Ｓｏｆｔ  Ｅｒｒｏｒ）に対してエラー処理を行ってもよい。本発明のエラー処理方法によれば、データ記憶装置１００はエラーを修復し、ソフトリセット（Ｓｏｆｔ  Ｒｅｓｅｔ）を実行することができるため、データ記憶装置１００は迅速に正常モードに戻って動作を行うことができる。
【００２５】
以下の説明では、本発明のエラー処理方法は、主に３つのステップに分けられてもよく、ステップＳ１０〜Ｓ１８は本発明のエラー処理方法の初期ステップと総称されてもよく、ステップＳ２０〜Ｓ３０は本発明のエラー処理方法のデータ復元（ｒｅｃｏｖｅｒｙ）ステップと総称されてもよく、ステップＳ４０〜Ｓ４４は本発明のエラー処理方法のシステム復元ステップと総称されてもよく、各ステップの説明は以下の通りである。
【００２６】
ステップＳ１０において、メモリ制御装置１１０はエラー処理プログラムをバッファメモリ１１６にアップロード（ｕｐｌｏａｄ）する。ここで、バッファメモリ１１６は、好ましくは、ＥＣＣ保護機能を有し、特にパリティ符号に基づいてエラー訂正を行う機能を有する。例えば、バッファメモリ１１６はエラー処理プログラムを保護するためにパリティ符号を自律的に生成してもよいし、ＥＣＣ回路はエラー処理プログラムについてパリティ符号を生成し、メモリ制御装置１１０はエラー処理プログラム及びパリティ符号を共にバッファメモリ１１６にアップロード（ｕｐｌｏａｄ）してもよい。バッファメモリ１１６はＥＣＣ保護機能を有するため、エラー処理プログラムを効果的に保護することができる。
【００２７】
ステップＳ１１において、メモリ制御装置１１０は、ソフトエラーが発生したか否かを判断し、ＹＥＳの場合、ステップＳ１２を実行し、ＮＯの場合、ステップＳ１１を繰り返し実行する。ここで、ソフトエラーはハードウェア素子又はファームウェア（Ｆｉｒｍｗａｒｅ）の実行に起因するエラーを含み、その後、従来のシステムリブート（Ｒｅｂｏｏｔ）の方式でエラーを処理することではなく、エラー処理プログラムでエラーを処理する。メモリ制御装置１１０は、好ましくは、内蔵されたエラー検出回路を用いてソフトエラーが発生するか否かを判断する。メモリ制御装置１１０が複数のコア（Ｃｏｒｅｓ）を有する場合、複数のコアのうち１つを用いてソフトエラーが発生するか否かを判断してもよい。
【００２８】
図４は本発明の実施例に係る図１に示すメモリ制御装置１００によりソフトエラーが発生するか否かを判断する方法の実装の詳細を示す図である。例えば、マイクロプロセッサ１１２のハードウェアアーキテクチャは、Ａｒｇｏｎａｕｔ  ＲＩＳＣ  Ｃｏｒｅ（ＡＲＣと略称される）アーキテクチャなどの縮小命令セットコンピューティング（Ｒｅｄｕｃｅｄ  Ｉｎｓｔｒｕｃｔｉｏｎ  Ｓｅｔ  Ｃｏｍｐｕｔｉｎｇ。ＲＩＳＣと略称される）アーキテクチャを用いて実装されてもよく、Ｉｎｓｔｒｕｃｔｉｏｎ  Ｃｌｏｓｅ  Ｃｏｕｐｌｅｄ  Ｍｅｍｏｒｙ（ＩＣＣＭと略称される）及びＤａｔａ  Ｃｌｏｓｅ  Ｃｏｕｐｌｅｄ  Ｍｅｍｏｒｙ（ＤＣＣＭと略称される）が組み込まれてもよく、本発明はこれに限定されない。マイクロプロセッサ１１２は、ＳＡＴＡ制御装置（例えばＳＡＴＡ制御装置エンジン）を介してＳＡＴＡ  ＰＨＹ回路の動作を制御してもよく、制御論理回路１１４におけるフラッシュメモリ制御装置（例えばフラッシュメモリ制御装置エンジン）を介して制御論理回路１１４における関連回路（例えば、不揮発性メモリ１２０とインターフェイシング（Ｉｎｔｅｒｆａｃｉｎｇ）するための入力／出力インターフェイス回路、上記少なくとも１つのＥＣＣ回路など）を制御してもよい。ソフトエラーの原因は、例えば次のものを含む。
【００２９】
（Ａ）ホストコマンド１秒タイムアウト（Ｈｏｓｔ  ｃｏｍｍａｎｄ  １  ｓｅｃｏｎｄ  ｔｉｍｅｏｕｔ）、以下のものを含んでもよい。
【００３０】
（１）タイムアウト条件＃１：ＤＲＡＭ又はＡＲＣ  ＤＣＣＭ変数（Ｖａｒｉａｂｌｅ）エラーによるファームウェア停止（Ｆｉｒｍｗａｒｅ  Ｈａｌｔ）；
（２）タイムアウト条件＃２：ハードウェアシステム、ＳＡＴＡ制御装置エンジン、又はフラッシュメモリエンジンの異常停止（ａｂｎｏｒｍａｌ  ｈａｌｔ）；及び
（３）タイムアウト条件＃３：ＩＣＣＭ符号アドレスマッピング（Ａｄｄｒｅｓｓ  Ｍａｐｐｉｎｇ）エラー、そのうち、ＩＣＣＭ符号アドレスマッピングエラー及びＩＣＣＭ符号指令（例外）エラーもＩＣＣＭ符号エラーに該当する；
（Ｂ）ＩＣＣＭ符号指令（例外）エラー（ＩＣＣＭ  ｃｏｄｅ  ｉｎｓｔｒｕｃｔｉｏｎ  （ｅｘｃｅｐｔｉｏｎ））、例えばＩＣＣＭ符号指令エラー、ＩＣＣＭ符号指令例外エラー、及び／又はＩＣＣＭ符号例外エラー；及び
（Ｃ）訂正不能なＥＣＣエラー（Ｕｎｃｏｒｒｅｃｔａｂｌｅ  ＥＣＣ  ｅｒｒｏｒ：ＵＥＣＣエラー）、例えばＳＲＡＭのＵＥＣＣエラー又はＤＲＡＭのＵＥＣＣエラー。これは、ＳＲＡＭ又はＤＲＡＭに記憶されたデータは対応するパリティ符号に基づいてエラー訂正を行うことができないため、ＵＥＣＣエラーが発生することを意味する。
【００３１】
ステップＳ１２において、メモリ制御装置１１０は、現在のプログラムの実行を中断し、割り込みサービスを開始する。上記の様々なソフトエラーのうち何れか１つのソフトエラーの発生が検出された場合、マイクロプロセッサ１１２は、現在のプログラムの実行アドレスを記録し、現在実行中のプログラムを中断し、実行アドレスから対応する割り込みサービスルーチン（Ｉｎｔｅｒｒｕｐｔ  Ｓｅｒｖｉｃｅ  Ｒｏｕｔｉｎｅ：ＩＳＲ）にジャンプし、割り込みサービスを開始する。ここで、１つ又は複数のソフトエラーは１つの割り込みサービスルーチンに対応してもよい。例えば、割り込み要求をマイクロプロセッサ１１２に転送し、現在実行中のプログラムを中断するように、割り込みハンドラなどのＩＳＲはハードウェアアーキテクチャからの割り込み要求により呼び出されてもよい（Ｉｎｖｏｋｅ）。
【００３２】
ステップＳ１４において、メモリ制御装置１１０は、バッファメモリ１１６におけるエラー処理プログラムを実行する。メモリ制御装置１１０は、上記現在のプログラムの実行アドレスからエラー処理プログラムの先頭にジャンプ（ｊｕｍｐ）してエラー処理プログラムを実行する。
【００３３】
ステップＳ１６において、メモリ制御装置１１０は、伝送インターフェイス回路１１８、特にＳＡＴＡ  ＰＨＹ回路を無効（Ｄｉｓａｂｌｅ）にし、ここで、ＳＡＴＡ制御装置及びＳＡＴＡ  ＰＨＹ回路は伝送インターフェイス回路１１８に位置する。本実施例では、メモリ制御装置１１０は、伝送インターフェイス回路１１８を無効にし、データ、指令及び確認（Ａｃｋｎｏｗｌｅｄｇｅｍｅｎｔ：ＡＣＫ）メッセージの受信と送信を含むホスト装置５０へのデータの受信と送信を停止し、エラー数の増加を回避する。
【００３４】
ステップＳ１８において、メモリ制御装置１１０は、少なくとも１つのハードウェアエンジン（例えば１つ又は複数のハードウェアエンジン）、及びフラッシュメモリ素子（例えばフラッシュチップ又はフラッシュダイ）などの不揮発性メモリ素子１２２をリセットする。メモリ制御装置１１０は、ＥＣＣエンジン、ＳＡＴＡ制御装置エンジン、及び／又はフラッシュ制御装置エンジンをリセットすることにより、上記少なくとも１つのハードウェアエンジンをリセットし、不揮発性メモリ素子１２２をリセットしてもよい。このように、ハードウェアエンジン及び不揮発性メモリ素子１２２は、正常の状態に復元することができ、ハードウェアエンジンの継続的な誤った動作によりデータを復元できないことを回避することができる。また、上記少なくとも１つのハードウェアエンジンは、ソフトエラーが発生したハードウェアエンジンを含んでもよい。メモリ制御装置１１０がソフトエラーの原因を判断できる場合、例えばソフトエラーの原因がＳＡＴＡ制御装置エンジンの異常停止である場合、ＳＡＴＡ制御装置エンジンのみをリセットしてもよい。
【００３５】
次に、メモリ制御装置１１０は、データ復元を行うように、データ記憶装置１００におけるデータキャッシュ（例えばＤＲＡＭなどの揮発性メモリ素子１３０）に対して図５に示すキャッシュ再配置し、再配置後のキャッシュデータを不揮発性メモリ素子１２２にプログラミングしてもよいが、本発明はこれに限定されない。
【００３６】
ステップＳ２０において、メモリ制御装置１１０は、揮発性メモリ素子１３０のキャッシュデータを再割り当てする（ｒｅａｌｌｏｃａｔｅ）。キャッシュデータの損失を回避するために、メモリ制御装置１１０は、揮発性メモリ素子１３０のキャッシュデータをＦＩＦＯバッファに再割り当て、キャッシュデータをフラッシュメモリ素子などの不揮発性メモリ素子１２２に書き込む。ステップＳ２０の効率を高めるために、メモリ制御装置１１０は、キャッシュ末尾Ｔのアドレスを基準として、揮発性メモリ素子１３０における１つのページのキャッシュデータのみ、例えばキャッシュ末尾Ｔの左側の４ＫＢのキャッシュデータのみを再割り当ててもよく、即ち基本増分は１に等しくてもよい。或いは、揮発性メモリ素子１３０における１つのスーパーページ（Ｓｕｐｅｒ  Ｐａｇｅ）のキャッシュデータのみ、例えばキャッシュ末尾Ｔの左側の１６ＫＢのキャッシュデータのみを再割り当ててもよく、即ち基本増分は４に等しくてもよい。或いは、揮発性メモリ素子１３０における１つのスーパーストリング（Ｓｕｐｅｒ  Ｓｔｒｉｎｇ）のキャッシュデータのみ、例えばキャッシュ末尾Ｔの左側の４８ＫＢのキャッシュデータのみをＦＩＦＯバッファに再割り当ててもよく、即ち基本増分は１２に等しくてもよい。よって、ステップＳ２０における再割り当ての範囲（図５に示す「再割り当ての範囲」。キャッシュ末尾Ｔの傍にある）の大きさに関わらず、メモリ制御装置１１０は、再割り当てされたキャッシュデータ、例えば４ＫＢ、１６ＫＢ又は４８ＫＢのキャッシュデータをＦＩＦＯバッファに準備することができ、４ＫＢ、１６ＫＢ又は４８ＫＢのキャッシュデータをフラッシュメモリ素子などの不揮発性メモリ素子１２２に書き込むことができる。
【００３７】
ステップＳ２２において、メモリ制御装置１１０は、トリガされた書き込みコマンド（Ｔｒｉｇｇｅｒｅｄ  Ｗｒｉｔｅ  Ｃｏｍｍａｎｄ）が存在するか否かを判断し、ＹＥＳの場合はステップＳ２４を実行し、ＮＯの場合はステップＳ２６を実行する。ホストコマンドにおける書き込みコマンドがトリガされると、揮発性メモリ素子１３０は、ホスト装置５０からのデータをバッファリングするために適切なキャッシュ空間を割り当てる必要がある。例えば、上記のトリガされた書き込みコマンドは、ホスト装置５０から受信された少なくとも1つの書き込みコマンドを表してもよい。上記少なくとも１つの書き込みコマンドがトリガされると、揮発性メモリ素子１３０は、ホスト５０からのデータをバッファリングするために適切なキャッシュ空間を割り当てることが期待されるが、前のステップによりこの期待される割り当て動作が行われていない場合がある。この場合、この期待される割り当て動作の実行を確保するためにステップＳ２４に進む。
【００３８】
ステップＳ２４において、メモリ制御装置１１０は、例えば、キャッシュ先頭Ｈの元の位置から、トリガされた書き込みコマンドに基づいて揮発性メモリ素子１３０のキャッシュ空間を割り当てる（ａｌｌｏｃａｔｅ）。書き込みコマンドがトリガされると、メモリ制御装置１１０は、キャッシュ先頭Ｈを右にシフトし、キャッシュ先頭Ｈの右シフト量を、トリガされた書き込みコマンドの数又はデータ量と一致させる。例えば、３つのトリガされた書き込みコマンドに対応する３つのデータは、書き込みが予想される合計１２ＫＢのデータであってもよい。この場合、マイクロプロセッサ１１２は、揮発性メモリ素子１３０に１２ＫＢの局所キャッシュ空間を割り当ててもよく、キャッシュ先頭Ｈのアドレスを更新するように、キャッシュ先頭Ｈは基本増分（例えば１）３回（（１２ＫＢ／４ＫＢ）＝３）だけ右にシフトしてもよい。他の例として、２つのトリガされた書き込みコマンドに対応する２つのデータは、書き込みが予想される合計３２ＫＢのデータであってもよい。この場合、マイクロプロセッサ１１２は、揮発性メモリ素子１３０に３２ＫＢの局所キャッシュ空間を割り当ててもよく、キャッシュ先頭Ｈのアドレスを更新するように、キャッシュ先頭Ｈは基本増分（例えば４）２回（（３２ＫＢ／１６ＫＢ）＝２）だけ右にシフトしてもよい。
【００３９】
ステップＳ２６において、メモリ制御装置１１０は、データがＤＲＡＭなどの揮発性メモリ素子１３０に到達していないか否かを判断し、ＹＥＳの場合はステップＳ２８を実行し、ＮＯの場合はステップＳ３０を実行する。ステップＳ１６においてＳＡＴＡ  ＰＨＹ回路が無効にされたため、ＳＡＴＡ  ＰＨＹ回路のデータ伝送が中止されたため、書き込みコマンドがトリガされたが、書き込みコマンドのデータの一部が揮発性メモリ素子１３０にバッファリングされていない可能性がある。よって、キャッシュ先頭Ｈを有効なキャッシュデータに指向させるために、キャッシュ先頭Ｈを適切に補正する必要がある。
【００４０】
ステップＳ２８において、メモリ制御装置１１０は、揮発性メモリ素子１３０のキャッシュ空間を再同期（ｒｅ−ｓｙｎｃｈｒｏｎｉｚｅ）し、例えば、キャッシュ先頭Ｈを例えばバッファリングされた最後のデータなどの上述の有効なキャッシュデータに指向させるように引き戻す。メモリ制御装置１１０は、ＳＡＴＡ  ＰＨＹ回路のフィードバックに基づいて、トリガされた書き込みコマンドに対応するデータ伝送量を知ることができ、該データ伝送量はキャッシュデータのデータ量である。メモリ制御装置１１０は、該データ量に基づいてキャッシュ先頭Ｈの移動量を補正し、特に該データ量に基づいて、キャッシュ先頭Ｈの再同期動作における補正量（左シフト量）を決定する。例えば、キャッシュ先頭Ｈは元々３回の基本増分だけ右にシフトされるが、キャッシュデータのデータ量は２のみであり、差分値は１であるため、メモリ制御装置１１０はキャッシュ先頭Ｈを１つの基本増分だけ左にシフトする。
【００４１】
ステップＳ３０において、メモリ制御装置１１０は、キャッシュデータ（特に上記の再配置後のキャッシュデータ）を不揮発性メモリ素子１２２にプログラミングし、ここで、好ましくは、キャッシュデータはＳＬＣモードで不揮発性メモリ素子１２２におけるラッシングブロック（Ｆｌｕｓｈｉｎｇ  Ｂｌｏｃｋ）にプログラミングされる。ラッシングブロックは不揮発性メモリ素子１２２から選択された空きブロックであり、主に緊急の場合にデータを書き込むために用いられる。メモリ制御装置１１０は、ラッシングブロック（アクティブブロックと同様）を選択し、ページ、スーパーページ又はスーパーストリングの単位で、キャッシュデータをラッシングブロックにプログラミングする。メモリ制御装置１１０は、１つのページよりも大きい所定のプログラミング単位で、キャッシュデータをラッシングブロックにプログラミングしてもよい。該所定のプログラミング単位、例えばスーパーページ又はスーパーストリングの単位でラッシングブロックをプログラミングする場合、プログラミング後の残りのキャッシュデータをスーパーページ又はスーパーストリングに書き込むことができないとき（例えば残りのキャッシュデータのデータ長が所定のプログラミング単位よりも短いとき）、メモリ制御装置１１０は、結合後のデータ長がスーパーページ又はスーパーストリングなどの所定のプログラミング単位に等しくなるように、残りのキャッシュデータとダミーデータ（Ｄｕｍｍｙ  Ｄａｔａ）とを結合し、残りのキャッシュデータとダミーデータとをラッシングブロックのスーパーページ又はスーパーストリングにプログラミングしてもよい。キャッシュデータをラッシングブロックに順次プログラミングする際に、キャッシュ先頭Ｈのアドレスは変更されず、キャッシュ末尾Ｔのアドレスは徐々に右にシフトされ、全てのキャッシュデータがラッシングブロックされた場合、キャッシュ先頭Ｈのアドレスはキャッシュ末尾Ｔのアドレスに等しくなる。ステップＳ３０の実行が完了すると、キャッシュデータは全て不揮発性メモリ素子１２２に記憶された。
【００４２】
ステップＳ４０において、メモリ制御装置１１０は、エラーログ（Ｅｒｒｏｒ  Ｌｏｇ）を記憶し、特に、ソフトエラーが発生した一連のイベントに関する情報を該エラーログに記録する。ここで、エラーログは不揮発性メモリ１２０のシステムブロックに記憶されてもよい。
【００４３】
ステップＳ４２において、メモリ制御装置１１０は、メモリ制御装置１１０におけるウォッチドッグ（Ｗａｔｃｈｄｏｇ）モジュールを起動する。例えば、ウォッチドッグモジュールはメモリ制御装置１１０に位置するウォッチドッグ回路であってもよく、該ウォッチドッグ回路はウォッチドッグタイマを含んでもよく、マイクロプロセッサ１１２はウォッチドッグタイマを起動してソフトリセット（ｓｏｆｔ  ｒｅｓｅｔ）を行ってもよい。ソフトリセットは、ソフトウェアの方式でシステムをリセットすることであり、例えば、システムをリセットするために、システム実行ファイル（又はシステム内プログラミングファイル：Ｉｎ−Ｓｙｓｔｅｍ  Ｐｒｏｇｒａｍｍｉｎｇ  Ｆｉｌｅ）を再実行し、或いはシステムレジスタ（Ｒｅｇｉｓｔｅｒ）の値をクリアしてもよいが、本発明はこれに限定されない。
【００４４】
ステップＳ４４において、メモリ制御装置１１０は、伝送インターフェイス回路１１８を起動してホスト装置５０と再接続（Ｒｅ−ｌｉｎｋ）する。伝送インターフェイス回路１１８が再起動されているため、マイクロプロセッサ１１２は、伝送インターフェイス回路１１８を介してホスト装置５０と再接続してインタラクションを行ってもよい。ステップＳ４２及びＳ４４の動作を通じて、メモリ制御装置１１０（例えばマイクロプロセッサ１１２）はソフトリセットを実行し、データ記憶装置１００を再び正常に動作させることができる。
【００４５】
以上のことから、データ記憶装置１００の動作にエラーが発生した場合、本発明のエラー処理方法を実行することにより、データ記憶装置１００は、システム停止を回避できるだけでなく、キャッシュデータを揮発性メモリ１２０に迅速に記憶することができる。これによって、キャッシュデータの損失を回避することができ、ソフトリセットによりデータ記憶装置１００を再度正常に動作させることができ、本発明の目的を達成することができる。また、本発明のエラー処理方法は、エラーログをシステムのデバッグの根拠として記憶することができる。
【００４６】
以上は本発明の好ましい実施例を説明しているが、本発明の特許請求の範囲に基づいて均等的に変更、変形されたものは全て本発明の範囲に属する。
【符号の説明】
【００４７】
５０      ホスト装置
１００    データ記憶装置
１１０    メモリ制御装置
１１２    マイクロプロセッサ
１１２Ｃ  プログラムコード
１１２Ｍ  読み出し専用メモリ
１１４    制御論理回路
１１６    バッファメモリ
１１８    伝送インターフェイス回路
１２０    不揮発性メモリ
１２２、１２２−１、１２２−２、…、１２２−Ｎ    不揮発性メモリ素子
１３０    揮発性メモリ素子
Ｈ        キャッシュ先頭
Ｔ        キャッシュ末尾
Ｓ１０、Ｓ１１、Ｓ１２、Ｓ１４、Ｓ１６、Ｓ１８、Ｓ２０、Ｓ２２、Ｓ２４、Ｓ２６、Ｓ２８、Ｓ３０、Ｓ４０、Ｓ４２、Ｓ４４    ステップ
【図１】
2020057384.tif 000003
【図２】
2020057384.tif 000004
【図３】
2020057384.tif 000005
【図４】
2020057384.tif 000006
【図５】
2020057384.tif 000007