説明

記憶装置、コンピュータ装置、コンピュータの制御方法、およびコンピュータプログラム

【課題】データの保持期間を長くする。
【解決手段】コンピュータシステムは、パーソナルコンピュータなどのホスト10と、ホスト10に接続されるUSBメモリデバイス100とを備える。USBメモリデバイス100は、ユーザ用データを格納するためのNAND型フラッシュメモリ130と、OTPメモリ140とを備える。NAND型フラッシュメモリ130には、ユーザ用データ以外に、ユーザ用データに対応した第1次のエラー訂正用符号であるECC_Aとが格納される。一方、OTPメモリ140には、ECC_Aに対応した第2次のエラー訂正用符号であるECC_Bが格納される。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、NAND型フラッシュメモリを備える記憶装置、前記記憶装置が接続されるコンピュータ装置、コンピュータの制御方法、およびコンピュータプログラムに関する。
【背景技術】
【0002】
近年、ハードディスク装置に代替して、大容量のフラッシュメモリを備えたストレージデバイスが知られており、とりわけ、容量当たりの価格が低いNAND型フラッシュメモリを備えるストレージデバイスが種々提案されている(例えば特許文献1)。
【0003】
しかしながら、NAND型フラッシュメモリには、データの保持期間に制限があり、大容量化に伴って加工技術が微細化すればするほど、データの保持期間が短くなるという問題があった。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特許第4377951号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
上記問題を考慮し、本発明が解決しようとする課題は、データの保持期間を長くすることにある。
【課題を解決するための手段】
【0006】
本発明は、上述の課題の少なくとも一部を解決するためになされたものであり、以下の形態又は適用例として実現することが可能である。
【0007】
[適用例1] NAND型フラッシュメモリにより構成され、ユーザ用データを格納するためのデータ用記憶部と、
NAND型フラッシュメモリと種類の相違する不揮発性メモリにより構成され、前記ユーザ用データに対応するエラー訂正用符号を格納するための符号用記憶部と
を備える記憶装置。
【0008】
適用例1に係る記憶装置では、データ記憶部と符号用記憶部が設けられ、符号用記憶部は、データ用記憶部を構成するNAND型フラッシュメモリと種類の相違する不揮発性メモリによって構成される。この不揮発性メモリがNAND型フラッシュメモリよりデータの保持能力が高いものであるならば、データ記憶部よりも符号用記憶部はデータ保持期間が長いものとなる。実際、NAND型フラッシュメモリは、データのRead処理が行われる度に高電圧(10〜20V)を必要とすることから、Read処理が一定回数以上行われる度に、メモリセル内の電子が減少し、データが保持できなくなるのに対して、V−EPROM、MRAM等の不揮発性メモリは、READ処理において、高電圧を必要としないことから、NAND型フラッシュメモリよりもデータ保持ができなくなるまでの期間が長くなる。データ記憶部内のデータが破壊された場合、符号用記憶部に記憶されたエラー訂正用符号によりその破壊されたデータを高い確率で訂正することができるが、前記記憶装置では、上記のように記号用記憶部のデータ保持期間が長いことから、結果として、装置全体としても、データの保持期間が長くなる。
【0009】
[適用例2] 適用例1に記載の記憶装置であって、前記ユーザ用データに対応する第1次のエラー訂正用符号を生成し、前記第1次のエラー訂正用符号を前記データ用記憶部に書き込むエラー検出訂正部を備え、前記符号用記憶部は、前記ユーザ用データに対応するエラー訂正用符号として、前記第1次のエラー訂正用符号に対応する第2次のエラー訂正用符号を格納し得る構成である、記憶装置。
【0010】
この構成によれば、ユーザ用データに対応するエラー訂正用符号をデータ記憶部に書き込む既存の装置をそのまま用いて、記憶装置を構成することができる。
【0011】
[適用例3] 適用例2に記載の記憶装置であって、前記エラー検出訂正部は、前記第1次のエラー訂正用符号に対応する第2次のエラー訂正用符号を生成し、前記第2次のエラー訂正用符号を前記符号用記憶部に書き込む構成をさらに備える、記憶装置。
【0012】
この構成によれば、第1次のエラー訂正用符号はデータ用記憶部に、第2次のエラー訂正用符号は符号用記憶部に記憶される。このために、第2次のエラー訂正用符号から第1次のエラー訂正用符号を訂正し、第1次のエラー訂正用符号からユーザ用データを訂正することが高い確率で可能となる。
【0013】
[適用例4] 適用例1ないし3のいずれかに記載の記憶装置であって、前記NAND型フラッシュメモリは、追記可能な構成である、記憶装置。この構成であれば、NAND型フラッシュメモリに追記が可能となる。
【0014】
[適用例5] 適用例1ないし3のいずれかに記載の記憶装置であって、前記NAND型フラッシュメモリは、追記不可能な構成である、記憶装置。この構成であれば、NAND型フラッシュメモリをリードオンリーモードで使用することが可能となる。
【0015】
[適用例6] 適用例1ないし5のいずれかに記載の記憶装置であって、前記符号用記憶部は、OTP(ワンタイム・プログラマブル)メモリである、記憶装置。OTPメモリは、データの書き込みが1回に制限されていることから、データ保持期間が極めて長い。したがって、前記記憶装置によれば、データの保持期間を飛躍的に長くすることができる。
【0016】
[適用例7] 適用例1ないし5のいずれかに記載の記憶装置であって、前記符号用記憶部は、前記データ用記憶部よりデータ保持能力が高いメモリにより構成された、記憶装置。この構成であれば、データの保持期間を確実に長くすることができる。
【0017】
[適用例8] コンピュータ装置であって、
該コンピュータ装置に接続された請求項2に記載の記憶装置の前記データ用記憶部から、前記第1次のエラー訂正用符号を受信する入力制御部と、
前記第1次のエラー訂正用符号に対応する第2次のエラー訂正用符号を生成するエラー訂正用符号生成制御部と、
前記第2次のエラー訂正用符号を前記記憶装置に送信する出力制御部と
を備える、コンピュータ装置。
【0018】
適用例8に係るコンピュータ装置では、第1次のエラー訂正用符号を記憶装置のデータ用記憶部に、第2次のエラー訂正用符号を記憶装置の符号用記憶部に記憶させることができる。記憶装置においては、データ記憶部よりも符号用記憶部はデータ保持期間が長いものとなっていることから、データ記憶部内のデータが破壊された場合、符号用記憶部に記憶されたエラー訂正用符号によりその破壊されたデータを高い確率で訂正することができる。このために、記憶装置におけるデータの保持期間を長くすることができる。
【0019】
[適用例9] コンピュータの制御方法であって、
前記コンピュータに接続された請求項2に記載の記憶装置の前記データ用記憶部から、前記第1次のエラー訂正用符号を受信することを、前記コンピュータに実行させ、
前記第1次のエラー訂正用符号に対応する第2次のエラー訂正用符号を生成することを、前記コンピュータに実行させ、
前記第2次のエラー訂正用符号を前記記憶装置に送信することを、前記コンピュータに実行させる、コンピュータの制御方法。
【0020】
[適用例10] コンピュータを制御するためのコンピュータプログラムであって、
前記コンピュータに接続された請求項2に記載の記憶装置の前記データ用記憶部から、前記第1次のエラー訂正用符号を受信する機能と、
前記第1次のエラー訂正用符号に対応する第2次のエラー訂正用符号を生成する機能と、
前記第2次のエラー訂正用符号を前記記憶装置に送信する機能と
を前記コンピュータに実現させるコンピュータプログラム。
【0021】
適用例9に係るコンピュータ装置の制御方法および適用例10に係るコンピュータプログラムによれば、適用例8に係るコンピュータ装置と同様に、記憶装置におけるデータの保持期間を長くすることができる。
【0022】
さらに、本発明は、前記適用例1ないし10以外の種々の形態で実現可能であり、例えば、適用例1に係る記憶装置と適用例8に係るコンピュータ装置とを併せ持つコンピュータシステムとしての形態、適用例10に係るコンピュータプログラムを記録した記録媒体、そのコンピュータプログラムを含み搬送波内に具現化されたデータ信号、等の形態でとしての形態等で実現することが可能である。記録媒体としては、例えば、磁気ディスクや光ディスク、メモリカード、ハードディスク等の種々の媒体を利用することができる。
【図面の簡単な説明】
【0023】
【図1】本発明の第1実施例としてのコンピュータシステムの概略構成を示す説明図である。
【図2】初期化処理を示すフローチャートである。
【図3】ECCについての説明図である。
【図4】USBメモリデバイス100で実行されるデータ読出処理の前半部分を示すフローチャートである。
【図5】USBメモリデバイス100で実行されるデータ読出処理の後半部分を示すフローチャートである。
【図6】第2実施例における初期化処理を示すフローチャートである。
【発明を実施するための形態】
【0024】
以下、本発明の実施の形態を実施例に基づき説明する。
A.第1実施例:
A−1.ハードウェアの構成:
図1は、本発明の第1実施例としてのコンピュータシステムの概略構成を示す説明図である。図示するように、コンピュータシステムは、パーソナルコンピュータなどのホスト10と、ホスト10に接続されるUSBメモリデバイス100とを備える。USBメモリデバイス100が適用例1に記載の「記憶装置」に該当する。
【0025】
ホスト10は、中央演算処理装置としてのCPU11を中心にバス12により相互に接続されたメモリ13、ホストコントローラ15、ルートハブ16、ハードディスクドライブ(HDD)17、ディスプレイコントローラ18等を備える。また、ホスト10は、ディスプレイ20や、入力装置としてのマウスおよびキーボード(図示せず)が接続されている。
【0026】
メモリ13は、各種データや各種プログラム等を記憶し、CPU11の作業領域となる。ホストコントローラ15はUSBインタフェースユニットであり、このホストコントローラ15にルートハブ16が一体化されている。ルートハブ16は複数のポート16Pを備える。HDD17は、内蔵タイプのものであり、コンピュータプログラム(以下、単に「プログラム」と呼ぶ)等が格納されている。ディスプレイコントローラ18は、ディスプレイ20への信号出力を制御するコントローラである。
【0027】
USBメモリデバイス100は、ホスト10に接続されて使用される二次記憶装置であり、スティック型のものである。USBメモリデバイス100は、外部への接続部として、USBポート110を備え、このUSBポート110がルートハブ16のいずれかのポート16Pに差し込まれることで、ホスト10に接続される。
【0028】
USBメモリデバイス100は、コントローラ120と、ユーザ用のデータを格納するためのNAND型フラッシュメモリ130と、エラー訂正用符号(以下、「ECC:Error Correcting Code」と呼ぶ)を格納するためのOTP(ワンタイム・プログラマブル)メモリ140とを備える。
【0029】
コントローラ120は、ホスト10からコマンドを受け取るUSBインターフェース121と、NAND型フラッシュメモリ130やOTPメモリ140に対して所定のコマンドプロトコルに従ってコマンドを発行するメモリインターフェース122と、制御処理を行うプロセッサ123と、USBインターフェース121とプロセッサ123とに接続されるバッファ124とを備える。
【0030】
プロセッサ123は、その制御プログラムであるファームウェア(図示せず)を有する。プロセッサ123は、ホスト10からライト(Write)コマンドを受け取ると、ファームウェアによってNAND型フラッシュメモリ130へのデータの書き込みを実行し、ホスト10からリード(Read)コマンドを受け取ると、ファームウェアによってNAND型フラッシュメモリ130からのデータの読み出しを実行する。また、プロセッサ123は、NAND型フラッシュメモリ130へのデータの書き込み時に、ファームウェア(ハードウェアでも可)によってエラー検出訂正処理を実行し、エラー検出訂正処理によって得られたECCを、NAND型フラッシュメモリ130もしくはOTPメモリ140に書き込む。
【0031】
NAND型フラッシュメモリ130は、不揮発性の半導体メモリの一種で、本実施例では、追記可能なものが用いられている。また、NAND型フラッシュメモリ130は、前述したように、ユーザ用データを格納するためのもので、大容量(例えば、32ギガビット)である。これに対して、OTPメモリ140は、1回だけ書き込み可能な不揮発性メモリで、比較的、小容量(例えば、1〜2ギガビット)である。OTPメモリ140は、EPROM(UV−EPROM,EEPROM)タイプ、ゲート酸化膜破壊タイプ、eフューズタイプ等、種々のものを採用可能であるが、本実施例では、EEPROMタイプのものが採用されている。
【0032】
A−2.ソフトウェアおよびファームウェアの構成:
本実施例で用いられているUSBメモリデバイス100は、データ保持期間を高めるために、リードオンリーモードとして使用するようにしている。すなわち、USBメモリデバイス100は、初期化処理で、データの書き込みを行った上でリードオンリーモードへの移行を行い、以後、データの書き込みを禁止し、データの読み出ししかできないようにしている。こうした初期化処理とデータ読出処理について、以下に詳述する。
【0033】
・初期化処理:
図2は、初期化処理を示すフローチャートである。図2(A)はホスト10のCPU11で実行されるホスト側初期化処理であり、図2(B)はUSBメモリデバイス100のプロセッサ123で実行されるデバイス側初期化処理である。ホスト10は、初期化処理を実行する旨の指示をキーボードから受けたときに、所定のプログラムをHDD17からロードして実行することで、ホスト側初期化処理を行う。
【0034】
図2(A)に示すように、ホスト側初期化処理が実行開始されると、ホスト10のCPU11は、USBメモリデバイス100に対してライト(Write)コマンドを発行する(ステップS110)。
【0035】
USBメモリデバイス100のプロセッサ123は、USBメモリデバイス100に対するライトコマンドが発行されたことを検知したときに、自身のファームウェアに従ってデバイス側初期化処理を実行する。
【0036】
図2(B)に示すように、デバイス側初期化処理が実行開始されると、プロセッサ123は、まず、ホスト10側から送られてくるライトコマンドを受け取る(ステップS210)。次いでプロセッサ123は、ライトコマンドに記録されたデータ(以下、「書込データ」と呼ぶ)と、書込データから作成したECC(以下、「ECC_A」と呼ぶ)とを、NAND型フラッシュメモリ130に書き込む処理を行う(ステップS220)。ステップS220の処理は、詳しくは次の(i)(ii)の通り行う。
【0037】
(i)まず、書込データから一定サイズ毎にデータ(区分データ)を読み出して、区分データ毎にエラー検出訂正処理を実行しECC_Aを得る。
(ii)次に、書込データと各ECC_AをNAND型フラッシュメモリ130に書き込む。
【0038】
図3は、ECCについての説明図である。上記(i)の処理によれば、図3(a)に示すように、書込データDTが一定サイズ毎に区分けされ、図3(b)に示すように、区分データDTa毎にECC_Aが作成されることになる。実際には、各区分データは、記憶領域(NAND領域)の物理アドレスもしくは論理アドレス上で一定の間隔毎に存在するように格納され、各ECC_Aは、エラー検出訂正処理の実行先である各区分データの後ろに連続して存在するように格納される。これにより、エラー検出訂正の対象がいずれの区分データであるかを、各ECC_Aから辿ることができる。ECCを作成するエラー検出訂正処理についてのアルゴリズムについては、周知の構成であることから、ここでは説明を省略する。
【0039】
図2に戻って、ステップS220の実行後、プロセッサ123は、ECC_AからECC(以下、「ECC_B」と呼ぶ)を作成し、ECC_BをOTPメモリ140に書き込む処理を行う(ステップS230)。ステップS230の処理は、詳しくは次の(iii)(iv)の通り行う。
【0040】
(iii)まず、ECC_Aを所定の数毎、集め、各集合に対してエラー検出訂正処理を実行し、ECC_Bを得る。
(iv)次に、各ECC_BをOTPメモリ140に書き込む。
【0041】
上記(iii)の処理によれば、図3においては(b)から(c)に処理がなされることになる。なお、各ECC_Bは、エラー検出訂正の対象がいずれのECC_Aであるかがわかる必要がある。このために、ECC_AとECC_Bと対応関係を表す対応テーブルが、コントローラ120内のNAND記憶領域(図示せず)に記憶される。この対応テーブルを利用することで、エラー検出訂正の対象がいずれのECC_Aであるかを、各ECC_Bから辿ることができる。
【0042】
また、後述のステップS394でデータリフレッシュが実行された際にも、書込みデータの各区分単位で物理アドレスもしくは論理アドレスを移動し、移動に応じた論理アドレスはコントローラ120内のNANDのテーブルに記録が行われるように構成する。これにより、データ参照に不具合が生じることがない。前記テーブルは、NAND型フラッシュメモリ130に記録する構成としてもよい。
【0043】
なお、各データのサイズは、一例として次の通りである。区分データDTaが32ギガビットに対し、ECC_Aは1792メガビット、ECC_Bは128メガビットとなる。
【0044】
プロセッサ123は、ステップS230の実行後、ライトコマンドに従う書き込みが完了した旨を、ホスト10に対して通知する(ステップS235)。
【0045】
図2(A)に示すように、ホスト10のCPU11は、USBメモリデバイス100からの前記書込完了の通知を受け取り(ステップS115)、その後、リードオンリーモード(Read Only Mode)コマンドをUSBメモリデバイス100に発行する(ステップS120)。ステップS120の実行後、CPU11は、ホスト側初期化処理を終了する。
【0046】
USBメモリデバイス100のプロセッサ123は、ステップS230の実行後、ホスト10からリードオンリーモードコマンドを受け取ると、以後、自身を、データの書き込みを禁止してデータの読み出ししかできない状態(リードオンリーモード)に移行する(ステップS240)。ステップS240の実行後、プロセッサ123は、デバイス側初期化処理を終了する。
【0047】
デバイス側初期化処理の結果、USBメモリデバイス100内のNAND型フラッシュメモリ130には、ライトコマンドに記録された書込データDTと、第1次のエラー訂正用符号であるECC_Aとが格納されることになる。一方、USBメモリデバイス100内のOTPメモリ140には、第2次のエラー訂正用符号であるECC_Bが格納されることになる。
【0048】
・データ読出処理:
ホスト10において、USBメモリデバイス100に対してリード(Read)コマンドの発行がなされると、USBメモリデバイス100は、自身に対するリードコマンドが発行されたことを検知して、次に示すデータ読出処理を実行する。
【0049】
図4および図5は、USBメモリデバイス100で実行されるデータ読出処理を示すフローチャートである。このデータ読出処理は、USBメモリデバイス100のプロセッサ123で自身のファームウェアに従って実行される処理で、ホスト10からリードコマンドを受け取ったときに実行開始される。
【0050】
処理が開始されると、図4に示すように、プロセッサ123は、まず、ホスト10側から送られてくるリードコマンドを受け取る(ステップS300)。次いで、プロセッサ123は、NAND型フラッシュメモリ130から、リードコマンドにより指定された読出対象データを含む区分データ(以下、「対象区分データ」と呼ぶ)を読み出し、対象区分データにエラー検出訂正処理を実行しECC(以下、「ECC_X」と呼ぶ)を得る(ステップS310)。次いで、プロセッサ123は、対象区分データに対応するECC_AとECC_BをNAND型フラッシュメモリ130から読み出す(ステップS320)。
【0051】
ステップS320の実行後、プロセッサ123は、図5のステップS330に処理を進めて、ステップS320の読み出しにより得られたECC_Aと、ステップS310で得られたECC_Xとを比較する。ここで、両者が一致すると判定された場合には、プロセッサ123は、ステップS400に処理を進めて、ステップS310で読み出した対象区分データの中から読出対象データを抽出し、その抽出した読出対象データをホスト10に転送する。すなわち、ステップS320でECC_AとECC_Xとが一致すると判定された場合には、対象区分データにビット化けがない(すなわち、誤りがない)として、対象区分データに含まれる読出対象データをホスト10に転送する。ステップS400の実行後、「リターン」に抜けて、このデータ読出処理を一旦終了する。
【0052】
一方、ステップS330でECC_AとECC_Xとが一致しないと判定された場合には、プロセッサ123は、ステップS340に処理を移行する。ステップS340では、ステップS320で読み出したECC_Aにエラー検出訂正処理を実行しECC(以下、「ECC_a」と呼ぶ)を得る。
【0053】
ステップS340の実行後、プロセッサ123は、ステップS320の読み出しにより得られたECC_Bと、ステップS340で得られたECC_aとを比較する(ステップS350)。ここで、両者が一致しないと判定された場合には、ステップS320の読み出しにより得られたECC_A、すなわち、NAND型フラッシュメモリ130内のECC_Aにビット化けがある(すなわち、誤りがある)として、ステップS360に処理を進める。
【0054】
ステップS360では、ECC_Bを用いてECC_Aを訂正可能か否かを判定する。詳しくは、ECC_Aに対応したECC_BをOTPメモリ140から、読み出して、そのECC_BでECC_Aを訂正可能か否かを判定する。エラー検出訂正処理は、エラーが発生したビット数やエラーが発生した位置等から定まる所定条件下でエラー訂正が可能であり、その所定条件を外れた場合には、エラー検出訂正が不可能となる。このため、ステップS360では、ECC_Aが前記所定条件を満たしているか否かから、訂正可能か否かを判定する。
【0055】
ステップS360で訂正が不可能であると判定されたときには、プロセッサ123は、ステップS410に処理を移行して、リードコマンドに従う読み出しが不能である旨のエラーメッセージをホスト10に送信する。ステップS410の実行後、「リターン」に抜けて、このデータ読出処理を一旦終了する。
【0056】
一方、ステップS360で訂正が可能であると判定されたときには、プロセッサ123は、ステップS370に処理を移行して、OTPメモリ140から読み出したECC_Bを用いてECC_Aを訂正する。その後、ステップS380に処理を進める。
【0057】
また、ステップS350で、ECC_BとECC_aとが一致したと判定された場合には、ECC_Bは正しく、読出対象データにビット化けがある(すなわち、誤りがある)として、ステップS380に処理を進める。
【0058】
ステップS380では、ECC_Aを用いて読出対象データを訂正可能か否かを判定する。この判定は、ステップS360と同様のもので、前述した所定条件を満たしているか否かから訂正可能か否かを判定する。
【0059】
ステップS380で訂正が不可能であると判定されたときには、プロセッサ123は、前述したステップS410に処理を移行する。この結果、リードコマンドに従う読み出しが不能である旨のエラーメッセージがホスト10に送信される。
【0060】
一方、ステップS380で訂正が可能であると判定されたときには、プロセッサ123は、ECC_Aを用いて、そのECC_Aに対応した対象区分データを訂正する(ステップS390)。その後、プロセッサ123は、ステップS390により行なったデータ訂正のビット数が所定値を上回ったか否かを判定する(ステップS392)。ここで、所定値を上回ったと判定されたデータブロックについては、データをリフレッシュする処理を行う(ステップS394)。リフレッシュの方法としては、周知の種々のものを採用することができるが、本実施例では、特許文献1に記載のように、リフレッシュ管理テーブルを用いて対象となるブロックを時分割に一括してリフレッシュする。なお、データをリフレッシュした物理ブロックについての積算値は一旦、クリアする。
【0061】
ステップS394の実行後、プロセッサ123は、前述したステップS400に処理を移行する。また、ステップS392でデータ訂正ビット数の積算結果が所定値以下であると判定された場合にも、プロセッサ123は、ステップS400に処理を移行する。ステップS400では、訂正後の対象区分データのから前記読出対象データを抽出し、その抽出した読出対象データをホスト10に送信する。
【0062】
以上で説明した第1実施例のコンピュータシステムにおけるUSBメモリデバイス100では、ユーザ用データを格納するためのNAND型フラッシュメモリ130と、ECCを格納するためのOTPメモリ140とが設けられている。NAND型フラッシュメモリ130には、ユーザ用データと共に、ユーザ用データに対応する第1次のエラー訂正用符号としてのECC_Aが記憶される。OTPメモリ140には、ECC_Aに対応する第2次のエラー訂正用符号としてのECC_Bが記憶される。
【0063】
前記コンピュータシステムでは、ホスト10がUSBメモリデバイス100からデータを読み出す際に、NAND型フラッシュメモリ130内の読出対象データが破壊されている(文字化けもしくはビット反転している)場合、USBメモリデバイス100は、OTPメモリ140に記憶されたECC_BによりECC_Aを訂正し、ECC_Aから読出対象データを訂正することで、その破壊された読出対象データを高い確率で訂正することができる。その上、OTPメモリ140は、データの書き込みが1回に制限されており、データ保持期間が極めて長いことから、長い期間にわたってデータの読み出しが可能となることから、装置としてのデータの保持期間を飛躍的に長くすることができる。
【0064】
本実施例では、さらに、
(a)USBメモリデバイス100において、データの書き込みは初期化処理で行うだけで、それ以後はリードオンリーモードとすること、
(b)NAND型フラッシュメモリ130内のデータ訂正のビット数が多くなったときに、データリフレッシュを行うこと(ステップS392、S394)、
を併用することによって、データ保持期間をより長くすることを実現している。従来のNAND型フラッシュメモリを備えるストレージデバイスは1年〜10年のデータ保持期間であるが、本実施例のUSBメモリデバイス100は数十年〜百年のデータ保持期間となっている。
【0065】
なお、上記(a)、(b)の構成は、本発明に対しては付加的な要素であり、適宜省略可能である。
【0066】
B.第2実施例:
本発明の第2実施例について、次に説明する。この第2実施例としてのコンピュータシステムは、第1実施例と比較して、ECC_Bを作成する場所が相違する。第1実施例では、ECC_A、ECC_B共に、USBメモリデバイス100のプロセッサ123によるエラー検出訂正処理により作成していたが、これに換えて、第2実施例では、ECC_Aの作成はUSBメモリデバイス100側で行い、ECC_Bの作成はホスト10側で行う構成とした。以下、第2実施例の詳細な構成を説明する。なお、各パーツの符号については、第1実施例と同一の番号を付けて説明を行う。
【0067】
第2実施例では、USBメモリデバイス100のプロセッサ123に含まれるエラー検出訂正処理を行うファームウェアと同じ処理内容のソフトウェアが、ホスト10のHDD17にインストールされている。
【0068】
図6は、第2実施例における初期化処理を示すフローチャートである。図6(A)はホスト10のCPU11で実行されるホスト側初期化処理であり、図6(B)はUSBメモリデバイス100のプロセッサ123で実行されるデバイス側初期化処理である。ホスト側初期化処理は、第1実施例におけるホスト側初期化処理(図2(A))と比較して、ステップS110、S120が同一であり、ステップS110とステップS120との間のステップS512ないしS516の処理が相違する。デバイス側初期化処理は、第1実施例におけるデバイス側初期化処理(図2(B))と比較して、ステップS210、S220、S240が同一であり、ステップS220とステップS240との間のステップS630およびステップS632の処理が相違する。
【0069】
図6(B)に示すように、USBメモリデバイス100のプロセッサ123は、ステップS220の実行後、ステップS220で作成されたECC_Aを、USBインターフェース121を介してホスト10に送信する(ステップS630)。
【0070】
図6(A)に示すように、ステップS110の実行後、ホスト10のCPU11は、USBメモリデバイス100から送られてくるECC_Aを受信し(ステップS512)、ECC_AからECC_Bを作成する(ステップS514)。この作成は、HDD17にインストールされた前述したエラー検出訂正処理のソフトウェアを用いて行う。その後、ステップS514で作成されたECC_Bを、ホストコントローラ15を介してUSBメモリデバイス100に送信する(ステップS516)。ステップS516の実行後、CPU11は、ステップS120に処理を進める。
【0071】
USBメモリデバイス100のプロセッサ123は、ホスト10から送られてくるECC_BをOTPメモリ140に書き込む(ステップS632)。ステップS632の実行後、プロセッサ123は、ステップS20に処理を進める。以上で、初期化処理の説明を終える。なお、本実施例のデータ読出処理については、第1実施例と同一である。
【0072】
以上で説明した第2実施例の初期化処理によれば、第1実施例と同様に、NAND型フラッシュメモリ130にユーザ用データとECC_Aが記憶され、OTPメモリ140にECC_Bが記憶されることになる。このために、第2実施例におけるUSBメモリデバイス100は、第1実施例と同様に、装置としてのデータの保持期間を飛躍的に長くするという効果を奏する。
【0073】
また、この第2実施例では、ECC_Bの作成をホスト側で担うように構成されていることから、データ書き込み時のUSBメモリデバイス100のコントローラ120の負担を軽減することができることから、データの書き込み速度の向上を図ることができる。
【0074】
C.変形例:
以上、本発明の第1および第2の実施例について説明したが、本発明はこれらの実施例に限定されず、その趣旨を逸脱しない範囲で種々の構成を採ることができる。例えば、ソフトウェアによって実現した機能は、ハードウェアによって実現するものとしてもよい。また、そのほか、以下のような変形が可能である。
【0075】
・変形例1:
前記各実施例では、USBメモリデバイス100に備えられるNAND型フラッシュメモリ130は、追記可能なものとしたが、これに換えて、追記不可能なものとしてもよい。
【0076】
・変形例2:
前記各実施例では、USBメモリデバイス100に備えられる符号用記憶部は、OTPメモリ140により構成していたが、これに換えて、NAND型フラッシュメモリ130と種類の相違する、OTPメモリ以外の不揮発性メモリとしてもよい。例えば、V−EPROM、EEPROM、MRAM、FRAM、PRAM等に換えることができる。例示されたこれらのメモリは、NAND型フラッシュメモリよりもデータ保持能力が高いメモリである。
【0077】
・変形例3:
前記各実施例では、USBメモリデバイス100のコントローラ120に備えられるメモリインターフェース122は、NAND型フラッシュメモリ130とOTPメモリ140の双方に対して読み書きできるインターフェースであるが、これに換えて、NAND型フラッシュメモリ130に対して読み書きできるフラッシュメモリインターフェースと、OTPメモリ140に対して読み書きできるOTPメモリインターフェースとを別個に備える構成としてもよい。
【0078】
・変形例4:
前記各実施例では、エラー訂正用符号として、第1次のECC_Aと第2次のECC_Bとを作成する構成としたが、これに換えて、第1次のECC_Aだけを作成する構成としてもよい。この場合には、NAND型フラッシュメモリ130にはECCを格納せず、ECC_AはOTPメモリ140に格納する構成とする。この構成によっても、前記各実施例と同様に、装置としてのデータの保持期間を長くすることができる。
【0079】
・変形例5:
前記各実施例では、記憶装置をUSBメモリデバイス100とし、ホスト10との間のインターフェースをUSBとしたが、これに換えて、IEEE1394(アイトリプルイーイチサンキューヨン)、eSATA、Thunderbolt(Intel社の登録商標)等の他のインターフェースによりホストと接続される構成としてもよい。また、コンピュータ装置を、汎用のパーソナルコンピュータであるホスト10に換えて、プリンタ装置、ファックス装置等の他の装置とすることもできる。
【0080】
・変形例6:
上記実施例では、ホスト側初期化処理を記述したコンピュータプログラムは、HDD17に記憶される構成としたが、これに替えて他の記憶部に記憶される構成としてもよい。上記コンピュータプログラムは、CD−ROMなどの各種記憶媒体(コンピュータ読み取り可能な記録媒体等)に記憶されて配布されたり、またはインターネットなど各種通信手段を通じて配信されたりするものとすることができる。
【0081】
なお、前述した実施例および各変形例における構成要素の中の、独立請求項で記載された要素以外の要素は、付加的な要素であり、適宜省略可能である。また、本発明はこれらの実施例および各変形例になんら限定されるものではなく、その要旨を逸脱しない範囲内において種々の態様での実施が可能である。
【符号の説明】
【0082】
10…ホスト
11…CPU
12…バス
13…メモリ
15…ホストコントローラ
16…ルートハブ
16P…ポート
17…ハードディスクドライブ
18…ディスプレイコントローラ
20…ディスプレイ
100…USBメモリデバイス
120…コントローラ
121…USBインターフェース
122…メモリインターフェース
123…プロセッサ
124…バッファ
130…NAND型フラッシュメモリ
140…OTPメモリ

【特許請求の範囲】
【請求項1】
NAND型フラッシュメモリにより構成され、ユーザ用データを格納するためのデータ用記憶部と、
NAND型フラッシュメモリと種類の相違する不揮発性メモリにより構成され、前記ユーザ用データに対応するエラー訂正用符号を格納するための符号用記憶部と
を備える記憶装置。
【請求項2】
請求項1に記載の記憶装置であって、
前記ユーザ用データに対応する第1次のエラー訂正用符号を生成し、前記第1次のエラー訂正用符号を前記データ用記憶部に書き込むエラー検出訂正部
を備え、
前記符号用記憶部は、
前記ユーザ用データに対応するエラー訂正用符号として、前記第1次のエラー訂正用符号に対応する第2次のエラー訂正用符号を格納し得る構成である、記憶装置。
【請求項3】
請求項2に記載の記憶装置であって、
前記エラー検出訂正部は、
前記第1次のエラー訂正用符号に対応する第2次のエラー訂正用符号を生成し、前記第2次のエラー訂正用符号を前記符号用記憶部に書き込む構成をさらに備える、記憶装置。
【請求項4】
請求項1ないし3のいずれかに記載の記憶装置であって、
前記NAND型フラッシュメモリは、追記可能な構成である、記憶装置。
【請求項5】
請求項1ないし3のいずれかに記載の記憶装置であって、
前記NAND型フラッシュメモリは、追記不可能な構成である、記憶装置。
【請求項6】
請求項1ないし5のいずれかに記載の記憶装置であって、
前記符号用記憶部は、OTP(ワンタイム・プログラマブル)メモリである、記憶装置。
【請求項7】
請求項1ないし5のいずれかに記載の記憶装置であって、
前記符号用記憶部は、前記データ用記憶部よりデータ保持能力が高いメモリにより構成された、記憶装置。
【請求項8】
コンピュータ装置であって、
該コンピュータ装置に接続された請求項2に記載の記憶装置の前記データ用記憶部から、前記第1次のエラー訂正用符号を受信する入力制御部と、
前記第1次のエラー訂正用符号に対応する第2次のエラー訂正用符号を生成するエラー訂正用符号生成制御部と、
前記第2次のエラー訂正用符号を前記記憶装置に送信する出力制御部と
を備える、コンピュータ装置。
【請求項9】
コンピュータの制御方法であって、
前記コンピュータに接続された請求項2に記載の記憶装置の前記データ用記憶部から、前記第1次のエラー訂正用符号を受信することを、前記コンピュータに実行させ、
前記第1次のエラー訂正用符号に対応する第2次のエラー訂正用符号を生成することを、前記コンピュータに実行させ、
前記第2次のエラー訂正用符号を前記記憶装置に送信することを、前記コンピュータに実行させる、コンピュータの制御方法。
【請求項10】
コンピュータを制御するためのコンピュータプログラムであって、
前記コンピュータに接続された請求項2に記載の記憶装置の前記データ用記憶部から、前記第1次のエラー訂正用符号を受信する機能と、
前記第1次のエラー訂正用符号に対応する第2次のエラー訂正用符号を生成する機能と、
前記第2次のエラー訂正用符号を前記記憶装置に送信する機能と
を前記コンピュータに実現させるコンピュータプログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate


【公開番号】特開2012−234240(P2012−234240A)
【公開日】平成24年11月29日(2012.11.29)
【国際特許分類】
【出願番号】特願2011−100406(P2011−100406)
【出願日】平成23年4月28日(2011.4.28)
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.FRAM
【出願人】(390040187)株式会社バッファロー (378)
【Fターム(参考)】