制御装置、記憶装置、制御方法
【課題】不揮発性メモリのデータ信頼性向上と読出アクセス時間の高速化及び安定化
【解決手段】不揮発性メモリに記憶されたデータについて、近い将来リフレッシュが必要となるか否か、つまりリフレッシュ機会が近接しているか否かを推測する。この推測にはアクセス時のビットエラー数などを記憶した評価用情報を用いる。そしてリフレッシュ機会が近接していると判定されるデータについて、そのデータをオリジナルデータとして、オリジナルデータと同一のクローンデータを、不揮発性メモリ内に生成する。その場合、アクセス実行の際にオリジナルデータとクローンデータのいずれか一方がアクセス対象となるように、管理情報を更新する。
【解決手段】不揮発性メモリに記憶されたデータについて、近い将来リフレッシュが必要となるか否か、つまりリフレッシュ機会が近接しているか否かを推測する。この推測にはアクセス時のビットエラー数などを記憶した評価用情報を用いる。そしてリフレッシュ機会が近接していると判定されるデータについて、そのデータをオリジナルデータとして、オリジナルデータと同一のクローンデータを、不揮発性メモリ内に生成する。その場合、アクセス実行の際にオリジナルデータとクローンデータのいずれか一方がアクセス対象となるように、管理情報を更新する。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、制御装置、記憶装置、読出制御方法に関し、特に不揮発性メモリの信頼性向上やアクセスタイムの高速化、安定化を実現する技術に関する。
【先行技術文献】
【特許文献】
【0002】
【特許文献1】特開2009−70098号公報
【特許文献2】特開2007−334852号公報
【特許文献3】特開2007−193838号公報
【特許文献4】特開2007−58840号公報
【背景技術】
【0003】
例えばNAND型フラッシュメモリなどの不揮発性メモリを用いた記憶装置が普及している。不揮発性メモリは、例えば各種電子機器、情報処理装置などで使用されるメモリカード、SSD(Solid State Drive)、eMMC(Embedded MultiMedia Card)などで利用されている。
上記特許文献1〜4にはフラッシュメモリを用いた記憶装置が開示されている。
【0004】
不揮発性メモリでは、物理的な記憶領域のアドレスとして物理アドレスが使用される。これにより物理ブロック、物理ページ、物理セクタが設定されている。複数の物理セクタで物理ページが構成され、また複数の物理ページで物理ブロックが構成される。
消去(イレーズ)は物理ブロック単位で行われ、書込(プログラム)及び読出(リード)は物理ページ単位で可能とされる。
ホスト側やメモリ制御部側からのアドレス指定は、論理アドレスが用いられる。論理アドレスによる論理ブロック、論理ページ、論理セクタが、上記の物理アドレスに対応づけられる。これによりアクセス要求時には論理アドレスが物理アドレスに変換されて、実際のフラッシュメモリへのアクセスが実行される。
【発明の概要】
【発明が解決しようとする課題】
【0005】
ところでNAND型フラッシュメモリでは、書き込まれたデータを読み出した際に、ビット化け(ビットエラー)などが発生した場合に備えて、誤り訂正符号を用いて、データの信頼性を高めてきた。
しかし、近年、NAND型フラッシュメモリのプロセス微細化により、書き込まれたデータを繰り返し読み出し続けるとデータのビット化けが発生する現象が発生しやすくなっており、訂正しきれないほどのビット化けが発生しやすくなってきている。
【0006】
こうした状況に対して、ビット化けが発生したものを訂正するだけではなく、訂正が可能なうちにデータのリフレッシュ動作を行うことにより、ビット化けが発生しにくい状況にする手法が知られている。
従来のリフレッシュ手法は、ビット化けの発生数や、読み出しや書き換えの回数などが、一定の閾値を超えたら、リフレッシュ機会に至ったと判断し、リフレッシュ動作を行うものである。
【0007】
ところがこうした従来手法を用いると、閾値を超える状態が発生すると、すぐにリフレッシュ動作を開始するため、読出アクセスの際の処理速度を低下させてしまうという問題がある。またリフレッシュ動作が起きる場合と起きない場合とで処理速度にバラつきが生じる。
【0008】
本開示ではこのような問題に鑑みて、不揮発性メモリに記憶されたデータの信頼性を高めるとともに、アクセスの際の処理速度の高速化、安定化を実現することを目的とする。
【課題を解決するための手段】
【0009】
本開示の制御装置は、不揮発性メモリに記憶されたデータであって、リフレッシュ必要性に関する評価用情報に基づいてリフレッシュ機会が近接していると判定されるデータについて、該データをオリジナルデータとして、オリジナルデータと同一のクローンデータを、上記不揮発性メモリ内に生成する処理を行うクローン生成処理部と、上記オリジナルデータと上記クローンデータのいずれか一方が、アクセス実行の際のアクセス対象となるように、管理情報を更新する管理情報処理部と、上記不揮発性メモリに記憶されたデータのアクセス時に、該データについての上記評価用情報を生成する評価用情報処理部とを備える。
【0010】
本開示の記憶装置は、不揮発性メモリと、上記不揮発性メモリに記憶されたデータであって、リフレッシュ必要性に関する評価用情報に基づいてリフレッシュ機会が近接していると判定されるデータについて、該データをオリジナルデータとして、オリジナルデータと同一のクローンデータを、上記不揮発性メモリ内に生成する処理を行うクローン生成処理部と、上記オリジナルデータと上記クローンデータのいずれか一方が、アクセス実行の際のアクセス対象となるように、管理情報を更新する管理情報処理部と、上記不揮発性メモリに記憶されたデータのアクセス時に、該データについての上記評価用情報を生成する評価用情報処理部とを備える。
【0011】
本開示の制御方法は、不揮発性メモリに記憶されたデータであって、リフレッシュ必要性に関する評価用情報に基づいてリフレッシュ機会が近接していると判定されるデータについて、該データをオリジナルデータとして、オリジナルデータと同一のクローンデータを、上記不揮発性メモリ内に生成する処理を行うクローン生成ステップと、上記オリジナルデータと上記クローンデータのいずれか一方が、アクセス実行の際のアクセス対象となるように、管理情報を更新する管理情報処理ステップと、上記不揮発性メモリに記憶されたデータのアクセス時に、該データについての上記評価用情報を生成する評価用情報処理ステップとを備える。
【0012】
これらの本開示の技術では、記憶されたデータについての信頼性を表す値が一定の閾値を超えた時などのリフレッシュ動作が必要に迫られた場合(リフレッシュ機会に至った場合)ではなく、信頼性を示す値を記憶した評価用情報を用いて、リフレッシュ動作がいずれ必要となる可能性が高いデータを推測する。そして事前にそのデータについてクローンデータを複製することで、読み出し時の処理速度の低下させることなく信頼性低下を防ぐ。
即ち、リフレッシュ動作が近いうちに必要となると推測されるデータについてクローンデータを複製し、同一内容のデータを2重に保持する。そしてオリジナルデータとクローンデータのいずれか一方をアクセス対象の主データとして管理し、他方をアクセス対象でない副データとする。そのデータを読み出す際には、主データ(例えばクローンデータ)から読み出しを行い、繰り返しの読出により信頼性の低下が起こった場合、その時点でリフレッシュを行うことなく、論理的な管理情報において主データと副データを入れ替えたうえで新たな主データ(例えばオリジナルデータ)から読出が行われるようにする。
これにより、読出時に信頼性低下が起きた場合でも、即時のリフレッシュ動作が不要となる。
【発明の効果】
【0013】
本開示の技術によれば、信頼性が比較的低下傾向にあるデータについて、クローンデータを生成し、データ内容を2重に保持するため、データの信頼性を向上できる。特にクローンデータ側を主データとして読出アクセスの対象とすれば、リフレッシュと同様の新たなデータであるため、信頼性が回復した状態となる。
さらにその上で、読み出していた方の主データについてリフレッシュ機会に至ったら、主データと副データを入れ替えて、以降は新たな主データに対して読出を行うようにする。これらのことにより、リフレッシュ動作を実行する機会を非常に希とすることができ、殆どの場合で、リフレッシュを伴わないことで、アクセス速度の高速化、安定化を実現できる。
【図面の簡単な説明】
【0014】
【図1】本開示の実施の形態のメモリカードの構成のブロック図である。
【図2】実施の形態の制御部の機能構成の説明図である。
【図3】従来手法でリフレッシュが実行される場合、及び信頼性低下の説明図である。
【図4】リフレッシュの実行によるアクセス時間の変動の説明図である。
【図5】実施の形態でのアクセス時間の安定化の説明図である。
【図6】第1、第2の実施の形態のクローンデータ生成に伴う動作の説明図である。
【図7】実施の形態の評価用情報の一例の説明図である。
【図8】第1の実施の形態の起動時の処理のフローチャートである。
【図9】第1の実施の形態のリード時の処理のフローチャートである。
【図10】実施の形態のリフレッシュ機会近接推定の説明図である。
【図11】実施の形態の動作によるデータ読出回数の説明図である。
【図12】第2の実施の形態の評価用情報の更新の説明図である。
【図13】第2の実施の形態の起動時の処理のフローチャートである。
【図14】第2の実施の形態のリード時の処理のフローチャートである。
【図15】第3の実施の形態のクローンデータ生成に伴う動作の説明図である。
【発明を実施するための形態】
【0015】
以下、実施の形態について次の順序で説明する。なお、実施の形態で示すメモリカード1が請求項でいう記憶装置の実施の形態となる。またメモリカード1内の制御部11が、請求項でいう制御装置の実施の形態であり、制御部11による処理が請求項でいう制御方法の実施の形態となる。
<1.メモリカード構成>
<2.リフレッシュによる処理速度の低下及びバラツキの解消>
<3.第1の実施の形態>
[3−1:動作概要]
[3−2:評価用情報]
[3−3:処理例]
<4.第2の実施の形態>
<5.第3の実施の形態>
<6.変形例>
【0016】
<1.メモリカード構成>
図1に実施の形態のメモリカード1の構成例を示す。
メモリカード1はホスト機器2に接続され、記憶装置として用いられる。ホスト機器2とは、例えばパーソナルコンピュータ、デジタルスチルカメラ、ビデオカメラ、オーディオプレーヤ、ビデオプレーヤ、ゲーム機器、携帯電話機、PDA(Personal Digital Assistant)等の情報端末など、各種の電子機器、情報処理装置が想定される。
【0017】
メモリカード1は、制御部(CPU:Central Processing Unit)11、SRAM(Static Random Access Memory)12、デバイスインターフェース13、バッファRAM、及び不揮発性メモリ(Non-Volatile Memory)15を備える。
【0018】
制御部11はメモリカード1の全体を制御する。このため制御部11はSRAM12に置かれた命令コードを逐次実行する。主に制御部11は、ホスト機器2からのコマンドに応じたデータの書込や読出を実行させる。このため制御部11は、デバイスインターフェース13のホスト機器2とのデータ送受信動作制御、バッファRAM14の書込/読出動作の制御、不揮発性メモリ15へのアクセス動作の制御を行う。
SRAM12は、制御部11が実行するプログラム(ファームウェア)の記憶や、ワーク領域として使用される。
デバイスインターフェース13はホスト機器2との間の通信を行う。
バッファRAM14はホスト機器2との間の転送データ(書込データや読出データ)のバッファリングに用いられる。
不揮発性メモリ15は、例えばNAND型フラッシュメモリである。
【0019】
メモリカード1の基本的な動作としては、データ書込時には、ホスト機器2から書込要求とともに、書込アドレス、データサイズ、さらに書き込むべきデータが送られてくる。
ホスト機器2から送られてくる書き込むデータは、デバイスインターフェース13で受信されてバッファRAM14にバッファリングされる。そして制御部11の制御の元、データが不揮発性メモリ15に書き込まれる。制御部11は書込要求、書込アドレス、データサイズに応じてこれらの動作を制御する。
データ読出時にはホスト機器2から読出要求とともに、読出アドレス、データサイズが送られてくる。制御部11は、読出アドレス、データサイズに基づいて不揮発性メモリ15から指示されたデータの読出を行い、バッファRAM14にバッファリングする。また制御部11はバッファリングされた読出データに対してエラー訂正処理等を行う。そして読出データはバッファRAM14からデバイスインターフェース13に転送され、ホスト機器2に送信される。
【0020】
ところで不揮発性メモリ15は、物理的な記憶領域のアドレスとして物理アドレスが使用される。これにより物理ブロック(Physical Block)、物理ページ(Physical Page)、物理セクタ(Physical Sector)が設定されている。複数の物理セクタで物理ページが構成され、また複数の物理ページで物理ブロックが構成される。
消去(イレーズ)は物理ブロック単位で行われ、書込(プログラム)及び読出(リード)は物理ページ単位で可能とされる。
ホスト機器2側からのアドレス指定は、論理アドレスが用いられる。論理アドレスによる論理ブロック、論理ページ、論理セクタが、上記の物理アドレスに対応づけられる。即ち制御部11は論理アドレスと物理アドレスを対応づける管理情報を有し、ホスト機器2からのアクセス要求時には、指定される論理アドレスを管理情報を参照して物理アドレスに変換する。そして物理アドレスにより、実際の不揮発性メモリ15へのアクセスを実行する。
【0021】
ここで本実施の形態の場合、後述する動作を実行するための機能(ソフトウエアにより実現される処理機能)として、図2に示すようにアクセス制御部31、クローン生成処理部32、管理情報処理部33、評価用情報処理部34、リフレッシュ制御部35を備える。
なお、ここではこれらの機能部位がCPU11の処理として発現するソフトウエア機能として設けられているとするが、これらがハードウエアにより形成されてもかまわない。
また制御部11の管理のもと、例えばSRAM12に、管理情報部41、評価用情報テーブル42としての領域が用意され、管理情報や評価用情報が記憶される。
【0022】
管理情報部41は、上述の論理アドレスと物理アドレスの変換情報や、不揮発性メモリ15に記憶されているデータのディレクトリ情報等の管理情報を記憶する。即ち、ホスト機器2からのコマンドに応じて、制御部11が不揮発性メモリ15への書込や読出を実行させるために必要となる情報である。
なお、管理情報では、後述するクローンデータが生成されたデータについては、オリジナルデータとクローンデータの一方をアクセス対象として管理する。つまり或る論理アドレスに対応して、オリジナルデータとクローンデータの一方の物理アドレスが導かれる状態とする。他方のデータについては、アクセス対象ではないデータであって、アクセス対象のデータと同一のデータであるものとして管理する。
【0023】
評価用情報テーブル42は、詳しくは後述するが、各データ単位(一例としては物理ブロック単位)について、信頼性の度合いを評価するための情報としての評価用情報を記憶する。本実施の形態の場合、評価用情報は、各データ単位について、近い将来にリフレッシュ機会に至るか否かを推定するための情報となる。例えば所定のデータ単位毎についての、ビットエラー発生数、読出回数、消去回数の、少なくとも1つを含む情報である。
【0024】
なお、管理情報,評価用情報の一方又は両方は、不揮発性メモリ15に常時格納されても良いし、不揮発性メモリ15内に記憶され、起動時にSRAM12に展開されて制御部11によって参照・更新されるようにしてもよい。或いは不揮発性メモリ15以外に不揮発的な記憶領域を用意して、そこに格納してもよい。
即ち管理情報、評価用情報は、不揮発的に保持され、メモリカード1の起動中に制御部11が参照・更新できるようにされていれば、どのような形態で保持されていても良い。
【0025】
制御部11におけるアクセス制御部31は、ホスト機器2からのコマンドに応じて不揮発性メモリ15へのデータ書込アクセス又はデータ読出アクセスを実行制御する機能である。アクセス制御部31は管理情報部41の管理情報を参照して、ホスト機器2からのコマンドに対応した不揮発性メモリ15へのアクセスを実行する。
【0026】
クローン生成処理部32は、不揮発性メモリ15に記憶されたデータであって、リフレッシュ必要性に関する評価用情報テーブル42の評価用情報に基づいてリフレッシュ機会が近接していると判定されるデータについて、該データをオリジナルデータとして、オリジナルデータと同一のクローンデータを、不揮発性メモリ15内に生成する処理を行う機能である。
例えば後述する第1、第3の実施の形態では、クローン生成処理部32は、メモリカード1の起動時に、不揮発性メモリ15に記憶されたデータについて、評価用情報に基づいてリフレッシュ機会が近接しているか否かを判定する。そしてリフレッシュ機会が近接していると判定したデータについて、クローンデータの生成処理を行う。
また第2の実施の形態では、メモリカード1の起動時に、既にリフレッシュ機会が近接しているデータ単位について記憶された評価用情報を参照し、そのデータについてクローンデータの生成処理を行う。
【0027】
管理情報処理部33は、管理情報部41の内容(管理情報)の更新を行う。特にクローン生成処理部32によってクローンデータが生成された場合は、オリジナルデータとクローンデータのいずれか一方がアクセス対象となるように、管理情報を更新する。
例えば第1、第2の実施の形態では、管理情報処理部33は、クローンデータが生成されたデータについては、クローンデータがアクセス対象となる主データとし、オリジナルデータがアクセス対象とはならない副データとして管理されるように、管理情報を更新する。
さらにその場合において、主データがリフレッシュ機会に至ったと判断される場合、管理情報処理部33は、主副データを入れ替える。つまりオリジナルデータがアクセス対象の主データとして管理されるように、管理情報を更新する。
また管理情報処理部33は、起動時において、クローンデータが生成されているデータについて、主データ又は副データの一方が破棄されるように、管理情報を更新する。
【0028】
また第3の実施の形態では、管理情報処理部33は、クローンデータが生成されたデータについては、オリジナルデータがアクセス対象となる主データとし、クローンデータがアクセス対象とはならない副データとして管理されるように、管理情報を更新する。
その場合において主データがリフレッシュ機会に至った場合、管理情報処理部33は主副データを入れ替える。つまり、クローンデータがアクセス対象の主データとして管理されるように管理情報を更新する。この場合も管理情報処理部33は、起動時において、クローンデータが生成されているデータについて、主データ又は副データの一方が破棄されるように、管理情報を更新する。
【0029】
評価用情報処理部34は、不揮発性メモリ15に記憶されたデータのアクセス時に、該データについての信頼性の評価用情報(ビットエラー数等の値)を検出或いは生成し、評価用情報テーブル42に追加・更新を行う。
また評価用情報処理部34は、クローン生成処理部32がクローンデータの生成処理を行ったデータに関する評価用情報を、評価用情報テーブル42からクリアする処理も行う。
また第2の実施の形態の場合、評価用情報処理部34は、不揮発性メモリ15に記憶されたデータのアクセス時に、該データについて、リフレッシュ機会が近接しているか否かを判定し、リフレッシュ機会が近接していると判定した場合に、該データについての上記評価用情報を生成し、評価用情報テーブル42に追加する処理を行う。
【0030】
リフレッシュ制御部35は、不揮発性メモリ15に記憶されているデータのリフレッシュ動作の実行を制御する機能である。リフレッシュ動作は、簡単に言えば、或るデータ単位で、当該データについて、不揮発性メモリ15内の他の領域にコピーする動作である。実質的には、上述のクローンデータ生成と同様の動作となる。本実施の形態の場合、リフレッシュ動作に至ることは希となるが、リフレッシュを行う場合は、リフレッシュ制御部35が不揮発性メモリ15上でのデータコピーによるリフレッシュの実行を制御することになる。
【0031】
<2.リフレッシュによる処理速度の低下及びバラツキの解消>
ここで、本実施の形態に至る従前のアクセスの場合の処理速度に関して説明した上で、本実施の形態で処理速度の低下及び速度バラツキを解消する手法の概要について説明する。
【0032】
まず図3で、従前の方式でリフレッシュが行われる場合を説明する。
先にも述べたように、近年、NAND型フラッシュメモリのプロセス微細化により、書き込まれたデータを繰り返し読み出し続けるとデータのビット化けが発生する現象が発生しやすくなっており、訂正しきれないほどのビット化けが発生しやすくなってきている。
図3Bには、半導体不揮発性メモリに対するリード/ライト回数と信頼性の関係を示している。図示のように、半導体不揮発性メモリは、読み出し処理や書き換え処理を繰り返し行うことによりデータの信頼性が低下する特性を持つ。
こうした半導体不揮発性メモリを用いた記憶システムにおいて、データの信頼性低下を防ぐ方法として、信頼性を表す値が一定の閾値を超えた場合に、不揮発性メモリ上のデータのリフレッシュを行う手法が用いられている。
具体的には、リード時等にビット化けの発生数や、読み出しや書き換えの回数などが、一定の閾値を超えた場合に即座にリフレッシュ動作を行うようにしていた。
【0033】
図3Aにその動作を示す。図3では、ホスト機器3、制御部11、不揮発性メモリ15の動作として、従来手法を実行する場合を示している。
ホスト機器2からリードコマンドが送信されると、制御部11は不揮発性メモリ15に対してのリードオペレーションを実行する。これにより不揮発性メモリ15からバッファRAM14にデータが読み出される。この間、不揮発性メモリ15はビジー状態となる。
制御部11はバッファRAM14に読み出したデータに対して、エラー検出、エラー訂正を行い、またエラー検出の結果としてのビット化け数等を判定する。即ち今回読み出したデータについてリフレッシュが必要か否かを判定する。
そしてリフレッシュが必要と判定したら、制御部11はリフレッシュオペレーションを実行する。即ち不揮発性メモリ15において、今回のデータを、不揮発性メモリ15内の他の領域にコピーして、元のデータをコピーデータに置き換える処理を行う。この間、不揮発性メモリ15はビジー状態となる。
リフレッシュが完了したら、読み出したデータを、ホスト機器2に転送する。
【0034】
このように、ビット化け数等の評価指標を用い、それが閾値を超えたら直ぐにリフレッシュを行うことで、訂正しきれないほどのエラーが生じることとなる前にデータを置き換え、信頼性を回復させる。
ところが、このようにリフレッシュ動作を行うと、ホスト機器2からみての処理速度が低下することになる。つまりコマンド発行からリードデータ受信までの時間が長くなる。
【0035】
また、リフレッシュ動作が起きる場合と起きない場合とで処理速度にバラつきが生じるということもある。
図4は、リフレッシュ動作が行われない場合と行われる場合の処理時間を示している。
ホスト機器2が時点ts1にリードコマンドを送信して、制御部11がリードオペレーションを実行したとする。この場合は、リフレッシュが必要とは判断されず、時点ts2でリードデータがホスト機器2に転送されたとしている。
一方、ホスト機器2が時点ts3にもリードコマンドを送信して、制御部11がリードオペレーションを実行したとする。この場合は、リフレッシュが必要と判断され、リフレッシュオペレーションが実行され、その後、時点ts4でリードデータがホスト機器2に転送されたとしている。
この各場合のように、リフレッシュ動作が実行されるか否かで、ホスト機器2からみての処理時間は、時間T1、T2と大きく異なる。
【0036】
これらの状況に対し、本実施の形態では、不揮発性メモリ15のデータの信頼性を維持しつつ、リフレッシュ動作が行われる機会を最小限とし、処理速度低下の防止や処理時間のバラツキを殆ど発生しなくなるようにする。
このため本実施の形態では、データの信頼性を表す値が一定の閾値を超えた時など、リフレッシュ動作が必要に迫られた場合ではなく、信頼性を示す値(評価用情報)を用いてリフレッシュ動作がいずれ必要となる可能性が高いデータを推測し、事前にそのデータをクローンデータとして複製する。これにより読み出し時の処理速度を低下させることなく信頼性低下を防ぐ。
【0037】
具体例は第1〜第3の実施の形態として後述するが、本例の場合、処理時間に関しては殆どの場合、図5に示すようになる。
図5において、ホスト機器2が時点ts11にリードコマンドを送信して、制御部11がリードオペレーションを実行したとする。この場合は、リフレッシュが必要とは判断されず、時点ts12でリードデータがホスト機器2に転送されたとしている。
一方、ホスト機器2が時点ts13にもリードコマンドを送信して、制御部11がリードオペレーションを実行したとする。この場合は、リフレッシュが必要と判断される状況だったとする。しかしこの場合、リフレッシュオペレーションは実行せず、管理情報を更新する。これは、それまでクローンデータとオリジナルデータの一方が、管理情報上でアクセス対象のデータとされていたところ、これを入れ替えて、他方をアクセス対象のデータとする処理である。
この処理を行って、時点ts14でリードデータをホスト機器2に転送する。
【0038】
管理情報の更新は、リフレッシュ動作に比べて極めて短い時間で完了できる。この結果、リフレッシュ必要性の判定に関わらず、ホスト機器2からみての処理時間は、時間T3、T4で殆ど変わらない。
また、リフレッシュ必要性の判定がなされたとしても、その後は、アクセス対象がクローンデータとオリジナルデータの間で置き換えられているため、次回のアクセス時からのデータの信頼性は回復されている。
【0039】
<3.第1の実施の形態>
[3−1:動作概要]
以下、具体的な処理例として第1の実施の形態を説明する。
第1の実施の形態は、メモリカード1の起動時に、信頼性を表す値をもとに記録した評価用情報を用いて、不揮発性メモリ15に記憶されている各データにつき、リフレッシュ動作が近い将来に必要となるか否かを推測する。
この判定の対象の各データとは、例えば物理ブロック単位のデータとして説明するが、これに限られない。消去単位が物理ブロックであるため、少なくとも物理ブロック単位の以上の単位のデータであればよい。例えば管理情報上で、1つのデータファイルとして管理される単位でもよいし、データファイルをいくつかに分割した単位でもよい。また複数の物理ブロックの単位でもよい。
【0040】
リフレッシュ動作が近く必要になると判定されたデータについては、事前に(起動時に)クローンデータを複製する。即ち該当データを、不揮発性メモリ15内でオリジナルデータとクローンデータという形で2重に保持する。管理情報上では、クローンデータとオリジナルデータの一方をアクセス対象のデータとして管理する。
なお、管理情報において、アクセス対象として管理されるデータ、つまりホストからのコマンドに応じてアクセスされるデータを説明上「主データ」とし、他方を「副データ」ということとする。
第1の実施の形態では、クローンデータ側を主データとする。
【0041】
実際に、ホスト機器2からのアクセス要求があった場合は、制御部11は管理情報に基づいて主データのアクセスを行い、読み出されたデータをホスト機器2に転送する。
この場合に、読み出したデータが、即時リフレッシュが必要な状態になっていたら、主データと副データを入れ替える。これによりデータ信頼性を回復させる。
【0042】
このような動作を、図6で、不揮発性メモリ15内の或るデータDTを代表例として、その変遷を模式的に示す。状態ST0〜ST6として、各時点での不揮発性メモリ15内でのデータDTに関する状態を示している。データDTとは、例えば1つの物理ブロック単位などである。
【0043】
例えば起動時に、図6の状態ST0であるとする。即ち不揮発性メモリ15内にあるデータDTが記憶されているとする。ここでデータDTについて、図6では「DTm」「DTs」の表記をしているが、「DTm」は、上記の主データ、つまり管理情報において、リードコマンドに応じたアクセス対象として管理されているデータを意味する。一方、「DTs」は、アクセス対象としては管理されていない副データを意味する。クローンデータが形成されていないデータDTについては、当然「DTm]となる。
【0044】
まず起動時に、制御部11は各データ単位について、リフレッシュ動作が近く必要になるか否かを判定する。状態ST0におけるデータDTmが、リフレッシュ動作が近く必要に成るデータでは無いと判断したときは、そのままである。即ち状態ST1として、その後のリードコマンドに対しては、データDTmがアクセス対象となる。
【0045】
一方、データDTmについて、リフレッシュ機会が近接していると判断される場合は、状態ST2に示すように、クローンデータを生成する。
さらに、状態ST3として、生成したクローンデータを主データ、オリジナルデータを副データとするように管理情報の更新を行う。
従ってその後のリードコマンドに対しては、クローンデータであるデータDTmがアクセス対象となる。クローンデータは、この時点でフレッシュなデータであり、オリジナルデータに比して信頼性が回復されたものとなっている。そのため、その後のリード機会があっても、かなりのリード回数までは、即時リフレッシュ必要と判定されることは、殆ど無い。
【0046】
この状態ST3で通常のメモリカード1の動作が継続して行われた後、一旦、ホスト機器2からの接続が解消、或いはホスト機器2電源オフなどに伴って、メモリカード1の動作がオフとされたとする。そしてその後、ホスト機器2との接続、或いはホスト機器2の電源オンなどに伴って、メモリカード1が起動されたとする。
その場合の起動時は、状態ST5となっている。この場合には、主データと副データの一方、例えば副データDTsを破棄(消去)する。そして状態ST0に戻り、上記同様の処理を行う。副データ(オリジナルデータ側)を破棄するのは、そのオリジナルデータが、前回の起動時においてリフレッシュ機会近接と判断され、信頼性が比較的低下しているためである。つまり主データ(クローンデータ側)を残した方が、信頼性の点で好適と考えられるためである。
なお、クローンデータ側も、前回の起動中に非常に多数回アクセスされるなどして、信頼性が低下し、リフレッシュ機会が近接している場合もある。ところがその場合は、今回の起動時に状態ST0→ST2として、前回のクローンデータをオリジナルとして、新たにクローンデータが生成されることとなるため、信頼性は回復される。
【0047】
ところで、上記のように状態ST3で通常のメモリカード1の動作が継続して行われた場合において、或る時点でのデータDTmのリードの際に、即時リフレッシュが必要と判断されることがある。
その場合は、状態ST4として示すように、主データと副データを入れ替えるように管理情報を更新する。この場合、クローンデータが主データとされていたところを、オリジナルデータが主データとされるように管理情報を更新する。
従って、その後のリード機会が発生すると、オリジナルデータ側がアクセスされることとなる。
【0048】
オリジナルデータ側は起動時に、リフレッシュ機会近接と判断されたデータであるが、これは、即時リフレッシュが必要とされるレベルではない。従って、まだ正常なデータ読出は十分に可能である。
従ってこの場合は、もしもクローンデータ側がリフレッシュ必要の状態までも信頼性が悪化したとしても、オリジナルデータ側で伴うことで、そのリード時点で即時のリフレッシュを行う必要性を解消するという意味を持つ。
そもそも、状態ST3においてはフレッシュなデータであるクローンデータ側が主データとされているため、継続起動中に、そのクローンデータ側が即時リフレッシュ必要と判定されることは希である。起動中によほどの回数のリードが、同一のデータに集中したような場合である。このような希な場合であったとしても、もしデータDTm(クローンデータ側)が即時リフレッシュ必要とされた場合は、オリジナルデータ側を用いることで、即時のリフレッシュ動作を不要とできるということである。
【0049】
この状態ST4で通常のメモリカード1の動作が継続して行われた後、オフとされ、さらにその後メモリカード1が起動された場合は、状態ST6となっている。この場合も、主データと副データの一方、例えば副データDTsを破棄(消去)する。そして状態ST0に戻り、上記同様の処理を行う。
ここで副データ(この場合はクローンデータ側)を破棄するのは、そのクローンデータが、既に即時リフレッシュ必要と判断され、信頼性が低下しているためである。つまり主データ(オリジナルデータ側)を残した方が、まだ信頼性の点で好適と考えられるためである。
なお、この場合のオリジナルデータ側は、前回の起動時にリフレッシュ機会近接と判断されているため、信頼性はさほど高くない。ところが、今回の起動時に状態ST0→ST2として、再び当該オリジナルデータ側をオリジナルとして、新たにクローンデータが生成されることとなるため、信頼性は回復される。
【0050】
上記の状態ST4で、通常のメモリカード1の動作が継続して行われた場合において、或る時点でのデータDTm(この場合オリジナルデータ側)のリードの際に、即時リフレッシュが必要と判断されることがある。
その場合は、信頼性低下に対処するため、データDTmについてのリフレッシュ動作を行う。
上述のようにそもそも状態ST4に至ること(クローンデータ側が即時リフレッシュ必要となること)ことが希である。その上で、状態ST4において動作が継続され、オリジナルデータ側も即時リフレッシュ必要となるのは、さらに希である。従って、実際上、リフレッシュ動作を実行する機会は殆ど無いと言える。但し、皆無とは言えないため、その場合の補償として、リフレッシュ動作が用意される。
【0051】
リフレッシュ動作が行われた後は、状態ST4に戻ると考えれば良い。但しその場合のデータDTmは、信頼性が回復されている。
その後、メモリカード1の動作がオフとされ、さらにその後メモリカード1が起動された場合は、状態ST6となっている。この場合も、主データと副データの一方、例えば副データDTsを破棄(消去)する。そして状態ST0に戻り、上記同様の処理を行う。
ここで副データ(この場合はクローンデータ側)を破棄するのは、そのクローンデータが、既に即時リフレッシュ必要と判断され、信頼性が低下しているためである。一方、この場合の主データは、リフレッシュデータであり、信頼性が回復されているためである。
なお、リフレッシュデータ側も、前回の起動中のリフレッシュ後に非常に多数回アクセスされるなどして、信頼性が低下し、リフレッシュ機会が近接している場合もある。ところがその場合は、今回の起動時に状態ST0→ST2として、前回のリフレッシュデータをオリジナルとして、新たにクローンデータが生成されることとなるため、信頼性は回復される。
【0052】
第1の実施の形態では、概略以上のようにデータDTが変遷し、これによって信頼性の維持と、リフレッシュ動作の最小限化によるアクセス時間の減少、安定化が実現できる。
【0053】
[3−2:評価用情報]
ここで、制御部11が起動時に行うリフレッシュ機会近接の判断のための評価用情報について説明する。
上記の図6で例示したデータDT(DTm、DTs)とは、一例としては物理ブロック単位のデータである。その場合、不揮発性メモリ15に記憶されているデータについて、リフレッシュ機会近接の判断を行うには、評価用情報が、物理ブロック毎に、信頼性を評価できる情報となっていればよい。
【0054】
消去単位とされる物理ブロックは、図7Aのように複数の物理ページPUで構成される(ページナンバ0〜nの物理ページ)。
1つの物理ブロックに対する評価用情報としては、物理ブロック全体に対して各種の値を記憶しても良いし、物理ページ毎に各種の値を記憶してもよい。
【0055】
図7Bに、或る1つの物理ブロックPBxに対応する評価用情報の例を示す。
この例では、物理ページ毎に、エマージェンシーレベル、前回のエマージェンシーレベル、前々回のエマージェンシーレベル、エマージェンシーレベルの累積数、エマージェンシーレベルの最大数、リード回数、消去(書換)回数の各値を、評価用情報とするものとしている。
また、この物理ブロックPBx全体としての、エマージェンシーレベルの累積数、エマージェンシーレベルの最大数、リード回数、消去(書換)回数も記憶するものとしている。
【0056】
エマージェンシーレベルとは、例えばリード時のビットエラー(ビット化け)数をそのまま用いてもよい。或いは、ビットエラー数を複数の範囲に区切って、該当する緊急レベルの値を形成するようにしてもよい。いずれにしてもエマージェンシーレベルとは、リフレッシュの必要性が推測できる情報であればよい。
そしてエマージェンシーレベルとしては、例えば各物理ページでのリード時のビットエラー数として、今回(リード時)と、前回、前々回の数を記憶する。もちろん、さらに過去のリード時にさかのぼって記憶しておいてもよい。
またビットエラーの累積数、これまでの最大数も、信頼性の推測に利用できる。
また、各物理ページ毎のリード回数、消去回数も、信頼性の推測に利用できる。
【0057】
この図7Bは、あくまでも評価用情報の内容の一例に過ぎない。
例えばあくまでも物理ブロック単位で、データの信頼性を評価できれば良いため、物理ページ毎の情報を評価用情報に含めなくても良い。即ち図7Bの右端の物理ブロックPBx全体についてのエマージェンシーレベルの累積数、エマージェンシーレベルの最大数、リード回数、消去(書換)回数のみを、評価用情報の内容としてもよい。
或いは、各物理ページ毎の情報を記憶しておけば、物理ブロック単位での各情報の値は算出できるため、各物理ページ毎の情報のみを評価用情報の内容としてもよい。
また、例えばページナンバ0の物理ページなど、1つ(或いは複数)の物理ページのみのビットエラー数等を記憶し、それを物理ブロックを代表する評価値として扱っても良い。
また、評価用情報に含める情報内容は、上記以外にも考えられる。エマージェンシーレベルのみでも良いし、リード回数のみでもよい。また消去回数のみでもよい。
【0058】
ここでは上述のクローンデータ生成を物理ブロック単位で行う場合を想定して、評価用情報は物理ブロック単位で持つ必要としたが、例えばクローンデータ生成を複数物理ブロックの単位や、データファイル単位などとすることも考えられる。その場合、その複数物理ブロック単位であったり、データファイル単位毎に、評価用情報が設けられれば良い。それらの場合は、各物理ブロックのエマージェンシーレベル等が記憶されても良いし、代表する一部の物理ブロックのエマージェンシーレベル等が記憶されても良い。もちろんその場合に物理ページでのエマージェンシーレベル等の情報が記憶されても良い。
【0059】
第1の実施の形態では、このような評価用情報の各値を、リード時やライト(消去/書換)時に、追加又は更新して記憶していく。
或る物理ブロックPBxや物理ページPUに対しての、リード或いはライトの際に毎回、その物理ブロックPBx或いは物理ページPUに対しての情報内容を更新していってもよいし、所定アクセス回数おきに更新するようにしてもよい。またリード回数が所定値mで割り切れる場合のみエマージェンシーレベルを記憶するなどとしてもよいし、或いはリード回数や消去(書換/ライト回数が所定の回数(例えば1回目、10回目、50回目、100回目・・・など)となったときに、エマージェンシーレベルを記憶するような例も考えられる。これらのように或る条件に合致した場合のみ、評価用情報を更新記録するようにしても良い。
【0060】
また、保持しておく情報数は、物理ページ単位或いは物理ブロック単位ごとに1つと限定しない。
例えば1つの物理ブロックPBxについて、今回のエマージェンシーレベルを時点k0の評価用情報として記憶するとしたときに、時点k1,k2・・・という各時点で、物理ブロックPBxに対する評価用情報を追加的に記憶保持していくことも考えられる。
【0061】
評価用情報のリセット(クリア)は、起動時、クローンデータ生成時、または、対応するデータ単位(物理ブロック等)の書き換え(消去)時などとするとよい。但し、書き換え(消去)回数の情報を含める場合は、書換回数の値は原則リセット(クリア)しないものとすることが適切である。
【0062】
このような評価用情報は、情報を更新するたびに不揮発性メモリ15上に記録しても良いし、システム内のSRAM12などに一時的に記録し、一定のタイミングで、不揮発性メモリ15に記録するようにしても良い。
【0063】
起動時のリフレッシュ機会近接の判断の際には、その時点で記憶されている各物理ブロックについてのエマージェンシーレベル、リード回数、消去回数等から、各物理ブロックが、近い将来にリフレッシュが必要となるか否かを推定する情報(信頼性の情報)を算出する。或いは、記憶されている各情報を、そのまま信頼性の情報として用いても良い。
【0064】
[3−3:処理例]
第1の実施の形態として、図6で説明した動作を実現するための制御部11の処理を説明する。以下説明する処理は、制御部11が図2で説明した各機能を備えることで実行されるものである。
【0065】
図8はメモリカード1の起動時に制御部11が実行する処理を示している。図2の機能構成に沿っていえば、ステップF101は管理情報処理部33の機能、ステップF102〜F104はクローン生成処理部32の機能、ステップF105は管理情報処理部33と評価用情報処理部34の機能により実行される。
【0066】
ステップF101で制御部11は、主副データの一方を破棄する処理を行う。不揮発性メモリ15に記憶されている各データ単位については、過去にクローンデータ生成が行われ、管理情報上で主データと副データが存在するものがある。そのため、起動時には一旦この状態を解消する目的で、主副データが存在するデータ単位を管理情報から検索し、該当するデータ単位について、主副データの一方を破棄する。
具体的には、主データ又は副データの一方の管理状態を解消するように管理情報を更新すればよく、実際にこの時点で、不揮発性メモリ15上でデータ消去を行う必要は無い。
第1の実施の形態の場合、図6の状態ST5,ST6で説明したように、副データを破棄することとなる。
このステップF101の処理により、不揮発性メモリ15に記憶された全てのデータは、起動時に図6の状態ST0のようになる。
【0067】
ステップF102で制御部11は、各データについて評価用情報の解析を行う。例えばデータ記憶が為されている各物理ブロックについて、それぞれ評価用情報を解析し、その物理ブロックが、近い将来にリフレッシュ機会となるであろう程度に信頼性が低下しているか否かを判定する。判定の具体例は後述する。
【0068】
全てのデータについて、リフレッシュ機会近接ではないと判断した場合は、ステップF103から図8の処理を終える。これは全てのデータが図6の状態ST1となる場合である。
【0069】
少なくとも1つ以上のデータについて、リフレッシュ機会近接と判断した場合、制御部11はステップF103からF104に進み、クローンデータ生成を行う。即ちそのリフレッシュ機会近接と判断したデータについて、コピーデータを不揮発性メモリ15内の他の領域に生成する。当該データは図6の状態ST2となる。
さらに制御部11は、ステップF105で管理情報の更新及び不要な評価用情報のクリアを行う。
管理情報については、生成したクローンデータをアクセス対象の主データとし、オリジナルデータを副データとするように更新する。即ち図6の状態ST3とする。
評価用情報としては、クローンデータを生成したデータについては、その時点ではオリジナルデータの物理ブロックの、それまでの評価用情報であり、現時点以降はクローンデータがアクセスされることから、不要としてクリアする。
但し、図6で状態ST4においてオリジナルデータ側がアクセスされ、その後、状態ST0に至ることもあり、その際に必要として、クリアしないような処理も考えられる。(付言すれば、この場合でも、実際にオリジナルデータ側がアクセスされることで新たに評価用情報が生成されるため、必ずしもクリアしないで保存しておく必要は無い。)
【0070】
以上のように、クローンデータ生成が行われた場合、リフレッシュ機会近接と判断されたデータ(例えば物理ブロック単位)は図6の状態ST3となり、他のデータは状態ST1となる。
制御部11は以上の処理を起動時に行った後、ホスト機器2からのコマンドを待機する。
【0071】
図9は、ホスト機器2からのリードコマンドが送信された際の制御部11の処理を示している。
図2の機能構成に即していえば、ステップF151、F158はアクセス制御部31の機能、ステップF152は評価用情報処理部34の機能、ステップF153→F154→F156はリフレッシュ制御部35の機能、ステップF153→F154→F155は管理情報処理部33の機能、ステップF157は管理情報処理部33及び評価用情報処理部34の機能として実行される。
【0072】
ホスト機器2からのリードコマンドがあると、制御部11はステップF151で不揮発性メモリ15へのリードオペレーションを実行する。即ちリードコマンドにおいて論理アドで指定されたデータについて管理情報を参照して物理アドレスに変換し、不揮発性メモリ15の当該物理アドのデータを読み出してバッファRAM14に転送させる。また、制御部11はバッファRAM14に取り込んだデータについて、エラー検出・エラー訂正処理を行う。
【0073】
ステップF152で制御部11は、評価用情報の更新を行う。例えば今回のリードにおけるビットエラー数を、評価用情報に追加し、またリード回数を+1するように評価用情報を更新する。
【0074】
ここで制御部11はステップF153で、例えばビットエラー数が所定の閾値を超えた数値であったか否か、或いはリード回数が閾値以上となったか否かなどとして、今回のリードデータについて信頼性判断を行う。ここでいう信頼性判断とは、即時リフレッシュが必要な程度にまで信頼性が低下しているか否かの判断である。
それらの条件に該当せず、信頼性が維持されていると判断された場合は、そのままステップF158に進んで、リードデータをホスト機器2に送信させる。つまりバッファRAM14に取り込み、エラー訂正をしたデータを、デバイスインターフェース13を介してホスト機器2に送信させる。
【0075】
一方、ステップF153の時点で信頼性低下、即ち今後の信頼性維持のためにはリフレッシュが必要な状況と判断された場合は、制御部11はステップF154で、現在の主データ、つまり今回読み出したデータが、起動時にクローンデータとして生成したものか、オリジナルデータであるかにより、処理を分岐する。
【0076】
ステップF154の時点で、主データがクローンデータであるのは、図6の状態ST3の場合である。この場合は、制御部11はステップF155に進み、管理情報の更新を行う。この場合は、主データと副データを入れ替えるように管理情報を更新する。従って、起動時のオリジナルデータ側を主データとし、クローンデータ側を副データとする。即ち図6の状態ST4とする。
そしてステップF158でリードデータを転送してアクセスコマンドに対応した処理を終える。
この場合、次のリードコマンド発生時には、起動時のオリジナルデータ側が主データとして読み出されることになる。
【0077】
またステップF154で、主データがクローンデータでないのは、図6の状態ST4、又は状態ST1の場合である。
ここで状態ST4となっている場合とは、クローンデータがリフレッシュ必要となった後、さらにオリジナルデータ側までもがリフレッシュ必要な状況に至った場合となる。
そこで、制御部11はステップF156でデータのリフレッシュ動作を実行させる。
そしてリフレッシュ動作に伴って、ステップF157で管理情報と評価用情報を更新する。管理情報については、リフレッシュ動作でコピーした新たなデータを、主データとするように更新する。評価用情報については、今回のリフレッシュ動作により、これまでの評価用情報は不要となるため、これをクリアする。
そしてステップF158でリードデータを転送してアクセスコマンドに対応した処理を終える。
【0078】
なお、ステップF154で状態ST1であって、主データがクローンデータでないと判断される場合もリフレッシュ動作、及び管理情報の更新と評価用情報のクリアが行われる。ただし、状態ST1となっているのは、起動時にリフレッシュ機会が未だ遠いと判断されたデータであるので、このような事態は希である。
【0079】
制御部11が以上の図8,図9の処理を行うことで、図6で説明した動作が実現されることとなる。
【0080】
ここで、図8のステップF102での評価用情報を用いたリフレッシュ機会近接の判定処理の例を述べておく。
ここでは、ビットエラー発生数、リード回数、書換(消去)回数を含む評価用情報を用いて、リフレッシュ動作が近く必要となるか否かを推測するのに用いる判断基準値を導きだす例を3例示す。
第1例と第2例では、記録したビットエラー発生数、リード回数をもとに一次方程式を求め、不揮発性メモリ15から読み出しができなくなる限界を迎えるまでの読み出し回数を逆算する。そして限界を迎えるまでの残り読み出し回数が少ないデータ(物理ブロック等)を、リフレッシュ機会近接と判断するものである。
第3例は、ビットエラー発生数、リード回数をそのまま判断基準値とするものである。
【0081】
・第1例
データ毎(例えば物理ブロック毎)に、当該データ内のリード回数(x)の時のビットエラー累積数(y)と、その後の時点のリード回数(x+n)の時のビットエラー発生数の累積数(y+m)の2点の値から一次方程式を導き出す。このとき、上記2点の間隔(n)は、書換(消去)回数の累積数をもとに決定するとする。但し任意の間隔でもよい。例えばn=50とした場合、例えばリード回数50回目と100回目の値となる。実際の判定の際には、どのリード回数時点での評価用情報が保存されているかにも依存するが、例えば最も新しいリード回数時点と、それよりもn回前のリード回数時点の値とすればよい。
【0082】
図10Aに、リード回数とエマージェンシーレベルの座標上の一次方程式を破線で示している。エマージェンシーレベルとは、この場合ビットエラー累積数に相当する。
導き出した一次方程式を用いて、不揮発性メモリ15から読み出しできなくなる限界を迎える読み出し回数を算出する。例えばビットエラー累積数E1が、信頼性限度とすると、一次方程式から、リード回数の限界はN1回となる。
ここで、限界を迎える迄の残りのリード回数はN1−N2のNR回となる。このNR回を、或る閾値と比較し、残り回数が少ないか否かを判定することで、リフレッシュ機会近接か否かを判定できる。
【0083】
・第2例
各データについて、リード回数が一定の回数に達するごとに、その時のビットエラー発生数の最大数をもとに、最小二乗法を用いて一次方程式の近似式を算出する。図10Bに近似式で求めた一次方程式を破線で示している。
導き出した一次方程式(近似式)を用いて、上記の第1例と同様、不揮発性メモリ15が読み出しできなくなる限界を迎える読み出し回数を逆算する。例えばリード回数の限界数N1回を求める。そして、限界を迎える迄の残りのリード回数はN1−N2のNR回を求め、このNR回を、或る閾値と比較し、残り回数が少ないか否かを判定する。これによりリフレッシュ機会近接か否かを判定できる。
【0084】
なお、第1例、第2例のどちらの場合も、必要に応じて、一次方程式の傾きに書換(消去)回数の累積回数を係数として考慮しても良い。
【0085】
・第3例
各データ(例えば各物理ブロック)でのビットエラー発生数の最大数を判断基準値とし、最大数が多い上位一定数のデータ(例えば物理ブロック)を、リフレッシュ機会近接と判断する。つまり、各物理ブロックのうちで、相対的にビットエラー発生数の多い物理ブロックを抽出し、それを、リフレッシュ機会近接の物理ブロックとする。
最大数が同数となる物理ブロックが、複数存在する場合には、物理ブロックでのリード回数も併せて判断基準値として用い、リード回数が多い方を優先とするものとする。
なお、ビットエラー発生数の最大数は少ないが、物理ブロックでのリード回数は一定の基準値以上あるような場合、上記の別枠として、リフレッシュ機会近接の物理ブロックと判断するようにしてもよい。
【0086】
以上、第1の実施の形態について説明してきたが、第1の実施の形態により次のような効果が得られる。
従来手法では、リフレッシュ動作が必要となった場合には即座にリフレッシュ動作を行ってしまうため、リード時のパフォーマンスの低下を引き起こす。また、対象のデータのビットエラーの発生数がある閾値を超えたか否かなど内部的な要因によってリフレッシュ動作を開始するため、リード時のパフォーマンスにバラつきが起こる。
これに対して本実施の形態の手法では、まず図6の状態ST3の場合には、主データ(クローンデータ側)について、読出限界の回数まで繰り返しリードできる。つまり図11で信頼性限度E1となるようなリード回数N1まで、リードし続けることができる。さらに繰り返し読み出し続けたことによりデータのビット化けが多くなるなどでリフレッシュ必要となった場合でも、状態ST4に移行して、主データ(オリジナルデータ側)について、さらに読出限界の回数まで繰り返しリードできる。
結局、データの信頼性を維持したままで、リード時にリフレッシュ動作を行うという機会を殆ど無くすことができ、リード時のパフォーマンス(読出処理時間)の低下やバラツキは殆どなくなる。
【0087】
また、起動時に複製したクローンデータを主データとして管理し、オリジナルデータ側を副データとすることで、クローンデータを複製するごとに評価用情報もリセット(クリア)できる。このため、次回の起動時には、リフレッシュ動作がいずれ必要となると推測される可能性が下がる。
このため、1起動内において特定のデータへの読み出し回数が著しく多い場合を除き、起動するたびに、前回の起動時のオリジナルデータとは別のデータ(前回のクローンデータ)からのクローンデータが必要であれば複製される。よって、起動をくり返すような使用状況下においては、リフレッシュ動作が近く必要となるようなデータが存在しない、データとしての信頼性が高い状態を維持することができる。
【0088】
また、クローンデータを複製する前提条件としてのリフレッシュ機会近接の判定において、上記の第1例、第2例では、限界を迎える迄の残りリード回数が一定の基準回数以上に満たないデータをリフレッシュ機会近接とする。これにより、近々にリフレッシュ動作の必要となる対象データがないような場合に、無駄に不揮発性メモリ15の記憶領域を使用してのクローンデータ複製をしないようにすることができる。これは不揮発性メモリ15の各領域の使用頻度を必要以上に多くしないことになり好適である。
第3例のように、ビットエラー発生数の最大数が一定の基準数以上あるものをリフレッシュ機会近接と判断してクローンデータ生成対象とする場合も、同様である。
【0089】
<4.第2の実施の形態>
続いて第2の実施の形態について説明する。
第2の実施の形態は、制御部11(評価用情報処理部34)が、不揮発性メモリ15に記憶されたデータのアクセス時に、該データについて、リフレッシュ機会が近接しているか否かを判定し、リフレッシュ機会が近接していると判定した場合に、該データについての評価用情報を生成するようにするものである。そして制御部11(クローン生成処理部32)は、起動時に、評価用情報に基づいて、リフレッシュ機会が近接していると判定されたデータについて、クローンデータの生成処理を行う
【0090】
例えば図12Aに示すように、評価用情報テーブル42として、x個の記憶枠を設定しておく。ここでは物理ブロック単位で評価用情報を記憶するとした場合に、物理ブロックナンバと、その物理ブロックのリード時に発生したビットエラー数を、必要に応じて評価用情報として各記憶枠に記憶するものとする。
例えば或る物理ブロックに対してリードを行った場合に、その物理ブロックから読み出したデータにおいて発生したビットエラー数が所定数以上の場合に、リフレッシュ機会近接と判定し、当該物理ブロックのナンバ(物理ブロックアドレス)と、ビットエラー数を、評価用情報テーブル42に追加する。
【0091】
図12に示しているのは、一例として、ビットエラー数が4個以上の場合に、リフレッシュ機会近接と判断して、評価用情報テーブル42を更新する例である。
図12Aは、起動後に行われたアクセスにおいて、物理ブロックPB105、PB8、PB35、PB36において、ビットエラー数が4以上だった場合に、その時点で評価用情報テーブル42に記憶された評価用情報の内容を示している。
その後も、ホスト機器2からのリードコマンドに応じてデータ読出が行われるが、例えば物理ブロックPB210のリード時にビットエラー数が6であったとしたら、その情報が図12Bの斜線部のように評価用情報テーブル42に追加される。以降も同様にビットエラー数の多い物理ブロックの情報が評価用情報として追加される。
【0092】
図12Cは、さらに斜線部の評価用情報が追加され、評価用情報テーブル42のx個の記憶枠が全て埋まった状態を示している。
このような状態になった後のアクセスにより、例えばビットエラー数の多い、物理ブロックが発見されたら、例えば記憶されている評価用情報においてビットエラー数の少ない物理ブロックの内容を書き換えるようにするとよい。
例えば新たに物理ブロックPB511のアクセス時にビットエラー数が6であったとしたら、図12Cの時点の評価用情報テーブル内でビットエラー数が最小の4である物理ブロックPB36を削除し、図12Dの斜線部のように、物理ブロックPB511の評価用情報を記憶させる。
【0093】
このようにすることで評価用情報テーブル42は、リフレッシュ機会近接と推定されるx個以下の物理ブロックが示されることとなる。
起動時には、制御部11は評価用情報テーブル42に挙げられている物理ブロックは、自動的にリフレッシュ機会近接の物理ブロックと判断すれば良い。
なお、ここでは物理ブロックを単位として評価用情報を記憶することとしたが、もちろん評価用情報を生成する単位の「データ」としては、データファイル単位、複数の物理ブロック単位などでもよい。
【0094】
図13、図14で第2の実施の形態の処理を説明する。
なお第2の実施の形態においてデータ状態の変遷は、図6で説明した第1の実施の形態のものと同様であるため、図6を参照しながら説明する。
【0095】
図13はメモリカード1の起動時に制御部11が実行する処理を示している。図2の機能構成に沿っていえば、ステップF201は管理情報処理部33の機能、ステップF202、F203はクローン生成処理部32の機能、ステップF204は管理情報処理部33と評価用情報処理部34の機能により実行される。
【0096】
ステップF201で制御部11は、主副データの一方を破棄する処理を行う。第1の実施の形態の場合と同様、図6の状態ST5,ST6で説明したように副データを破棄する。
このステップF201の処理により、不揮発性メモリ15に記憶された全てのデータは、起動時に図6の状態ST0となる。
【0097】
ステップF202で制御部11は、クローンデータ生成の必要性により、処理を分岐する。この第2の実施の形態の場合、上述したように、評価用情報テーブル42に挙げられているデータ(物理ブロック単位等)があれば、それがリフレッシュ機会近接のデータとされる。即ちステップF202では、制御部11は評価用情報テーブル42に1以上のデータが記憶されているか否かを判定する。
評価用情報テーブル42に1つもデータが挙げられていなければ、ステップF202から図13の処理を終える。これは全てのデータが図6の状態ST1となる場合である。
【0098】
少なくとも1つ以上のデータが評価用情報テーブル42に挙げられていた場合、制御部11はステップF202からF203に進み、クローンデータ生成を行う。即ちリフレッシュ機会近接と判断されていたデータについて、コピーデータを不揮発性メモリ15内の他の領域に生成する。当該データは図6の状態ST2となる。
さらに制御部11は、ステップF204で管理情報の更新及び不要な評価用情報のクリアを行う。第1の実施の形態の図8のステップF105と同様の処理である。
結果として、クローンデータ生成が行われたデータ(例えば物理ブロック単位)は図6の状態ST3となり、他のデータは状態ST1となる。
制御部11は以上の処理を起動時に行った後、ホスト機器2からのコマンドを待機する。
【0099】
図14は、ホスト機器2からのリードコマンドが送信された際の制御部11の処理を示している。
図2の機能構成に即していえば、ステップF251、F259はアクセス制御部31の機能、ステップF252→F255→F257はリフレッシュ制御部35の機能、ステップF252→F255→F256は管理情報処理部33の機能、ステップF253,F254は評価用情報処理部34の機能、ステップF258は管理情報処理部33及び評価用情報処理部34の機能として実行される。
【0100】
ホスト機器2からのリードコマンドがあると、制御部11はステップF251で不揮発性メモリ15へのリードオペレーションを実行する。即ちリードコマンドにおいて論理アドで指定されたデータについて管理情報を参照して物理アドレスに変換し、不揮発性メモリ15の当該物理アドのデータを読み出してバッファRAM14に転送させる。また、制御部11はバッファRAM14に取り込んだデータについて、エラー検出・エラー訂正処理を行う。
【0101】
ここで制御部11はステップF252で、例えばビットエラー数が所定の閾値を超えた数値であったか否か、或いはリード回数が閾値以上となったか否かなどとして、今回のリードデータについて信頼性判断を行う。即ち、即時リフレッシュが必要な程度にまで信頼性が低下しているか否かの判断である。
【0102】
それらの条件に該当せず、信頼性が維持されていると判断された場合は、ステップF253に進む。ここで制御部11は、当該アクセス対象のデータが、近い将来にリフレッシュ機会となるであろう程度に信頼性が低下しているか否かを判定する。
この場合、例えばステップF252の信頼性判断より緩い条件で、信頼性が低下傾向にあるか否かを判断することなどが考えられる。
例えばビットエラー数がp回というのを第1の閾値として、ステップF252の信頼性判断に用いる場合に、q回(但しq<p)というのをリフレッシュ機会近接の判断のための第2の閾値とする。
リード回数や書換回数なども管理しておき、それらについて、即時リフレッシュ必要か否かの信頼性判断よりも緩やかな条件でリフレッシュ機会近接判断にもちいてもよい。
【0103】
アクセス対象のデータについて、リフレッシュ機会近接ではないと判断した場合は、制御部11はそのままステップF259に進み、リードデータをホスト機器2に送信させる。つまりバッファRAM14に取り込み、エラー訂正をしたデータを、デバイスインターフェース13を介してホスト機器2に送信させる。
【0104】
一方、ステップF253でリフレッシュ機会近接と判断した場合は、制御部11は、そのデータに関する評価用情報を評価用情報テーブル42に追加するように、評価用情報テーブル42の更新を行う。即ち、図12で説明した処理である。このステップF254で追加され、その後も評価用情報テーブル42に評価用情報が保持されたデータが、次の起動時に図13のステップF203でのクローンデータ生成対象のデータとなる。
【0105】
一方、ステップF252の時点で信頼性低下、即ち今後の信頼性維持のためにはリフレッシュが必要な状況と判断された場合は、制御部11はステップF255で、現在の主データ、つまり今回読み出したデータが、起動時にクローンデータとして生成したものか、オリジナルデータであるかにより、処理を分岐する。
【0106】
ステップF255の時点で、主データがクローンデータであるのは、図6の状態ST3の場合である。この場合は、制御部11はステップF256に進み、管理情報の更新を行う。この場合は、主データと副データを入れ替えるように管理情報を更新する。従って、起動時のオリジナルデータ側を主データとし、クローンデータ側を副データとする。即ち図6の状態ST4とする。
そしてステップF259でリードデータを転送してアクセスコマンドに対応した処理を終える。この場合、次のリードコマンド発生時には、起動時のオリジナルデータ側が主データとして読み出されることになる。
【0107】
またステップF255で、主データがクローンデータでないのは、図6の状態ST4、又は状態ST1の場合である。
ここで状態ST4となっている場合とは、クローンデータがリフレッシュ必要となった後、さらにオリジナルデータ側までもがリフレッシュ必要な状況に至った場合となる。
そこで、制御部11はステップF257でデータのリフレッシュ動作を実行させる。
そしてリフレッシュ動作に伴って、ステップF258で管理情報と評価用情報を更新する。管理情報については、リフレッシュ動作でコピーした新たなデータを、主データとするように更新する。評価用情報については、今回のリフレッシュ動作により、これまでの評価用情報は不要となるため、これをクリアする。
そしてステップF259でリードデータを転送してアクセスコマンドに対応した処理を終える。
なお、ステップF255の時点で状態ST1であって、主データがクローンデータでないと判断される場合もリフレッシュ動作、及び管理情報の更新と評価用情報のクリアが行われる。
【0108】
制御部11が以上の図13,図14の処理を行うことで、図6で説明した動作であって、かつ評価用情報に追加更新時にリフレッシュ機会近接の判断が行われる第2の実施の形態の動作が実現されることとなる。
【0109】
このような第2の実施の形態では、第1の実施の形態の効果に加え、次の効果が得られる。即ち。第1の実施の形態では、起動時に評価用情報をもとに判断基準値を導き、リフレッシュ機会近接判断を行う例を示したが、第2の実施の形態では、起動時にはこのような判断を全データについて行う必要は無い。従って起動時の制御部11の処理負担が軽減される。
また、リフレッシュ動作が近い将来に必要となる判断(推測)されるデータが存在しない場合には、評価用情報テーブル42には何も評価用情報が記録されない。従って、評価用情報の記録量(サイズ)を絞ることができる。
【0110】
なお、図12では、評価用情報テーブル42において保存する評価用情報の記憶枠をx個としたが、特に制限を設けず、ステップF253でリフレッシュ機会近接と判断されるデータは全て(容量的に可能な限り)評価用情報を保存するようにしてもよい。
また評価用情報の内容としては、図12のような物理ブロックに対応するビットエラー数だけでなく、リード回数、書換回数を用いても良いし、これらを併用してもよい。
さらに、結果的に評価用情報テーブル42に挙げられたデータ(物理ブロック等)を全てクローンデータ生成対象とするのであれば、評価用情報テーブル42には、リード時にリフレッシュ機会近接と判断されたデータの識別情報(例えば物理ブロックアドレス)のみを記憶するようにしても良い。
【0111】
また、アクセス実行毎に、アクセス対象のデータの評価用情報を評価用情報テーブル42に追加することも考えられる。但し、その場合に評価用情報テーブル42に図12のようにx個の記憶枠を設定しておき、図12C→図12Dで説明したように、例えばビットエラー数が多いものが残るように更新していく。もちろんリード回数や書換回数を用いても良い。
すると、評価用情報テーブル42には、アクセス対象となったデータの中で、ビットエラー数が多かったx個のデータが残ることになり、結果的にアクセス時にリフレッシュ機会近接の判断が行われたこととなる。その場合も起動時は、評価用情報テーブル42に挙げられているデータ(物理ブロック)をクローンデータ生成対象とすればよい。
【0112】
もちろん、その場合に、評価用情報テーブル42に残されたデータの内で、所定のビットエラー数以上のデータをクローンデータ生成対象としたり、上位所定数個のデータをクローンデータ生成対象とするなど、評価用情報テーブル42に挙げられた内の一部をクローンデータ生成対象としてもよい。
【0113】
<5.第3の実施の形態>
第3の実施の形態を図15で説明する。図15は図6と同様にデータの変遷を示したものである。
第3の実施の形態は、起動時にクローンデータが生成されたデータについては、当初は、オリジナルデータがアクセス対象となる主データとし、クローンデータがアクセス対象とはならない副データとして管理されるようにする例である。
そして主データ(オリジナルデータ側)がリフレッシュ機会に至った場合、クローンデータがアクセス対象の主データとして管理されるように、上記管理情報を更新する。
【0114】
起動時を状態ST10とする。起動時に、制御部11は各データ単位について、リフレッシュ動作が近く必要になるか否かを判定する。状態ST0におけるデータDTmが、リフレッシュ動作が近く必要に成るデータでは無いと判断したときは、そのまま状態ST11として、その後のリードコマンドに対しては、データDTmがアクセス対象となる。
【0115】
一方、データDTmについて、リフレッシュ機会が近接していると判断される場合は、状態ST12に示すように、クローンデータを生成する。
この第3の実施の形態では、生成したクローンデータを副データとして管理し、主データはオリジナルデータのままである。
従ってその後のリードコマンドに対しては、オリジナルデータであるデータDTmがアクセス対象となる。
オリジナルデータ側は起動時に、リフレッシュ機会近接と判断されたデータであるが、これは、即時リフレッシュが必要とされるレベルではない。従って、まだ正常なデータ読出は十分に可能である。
【0116】
この状態ST12で通常のメモリカード1の動作が継続して行われた後、一旦、メモリカード1の動作がオフとされ、その後起動されたとする。
その場合の起動時は、状態ST14となっている。この場合に、主データと副データの一方を破棄する。
この場合は、主データDTm(オリジナルデータ側)を破棄し、同時に副データDTs(クローンデータ側)を主データDTmに変更するように管理情報を更新することが好ましい。なぜならこの場合では、主データDTm(オリジナルデータ側)は、前回の起動時にリフレッシュ機会近接と判断され、比較的信頼性が低くなっており、一方、副データDTs(クローンデータ側)はフレッシュなデータである。従って、クローンデータ側を残した方が、信頼性の点でも、また当該データについてリフレッシュ機会を遠ざけるためにも、好適と考えられるためである。換言すれば、この場合の管理情報の更新は、リフレッシュを行ったのと同等な状態となる。
【0117】
なお、この場合に副データDTs(クローンデータ側)を破棄することとすることも考えられないわけではない。その場合は、今回の起動時に、主データDTm(オリジナルデータ側)はリフレッシュ機会近接としてクローンデータ生成対象となる。
【0118】
ところで、上記のように状態ST12で通常のメモリカード1の動作が継続して行われた場合において、或る時点でのデータDTm(オリジナルデータ側)のリードの際に、即時リフレッシュが必要と判断されることがある。
その場合は、状態ST13として示すように、主データと副データを入れ替えるように管理情報を更新する。この場合、オリジナルデータが主データとされていたところを、クローンデータが主データとされるように管理情報を更新する。
従って、その後のリード機会が発生すると、クローンデータ側がアクセスされることとなる。
即ち、この場合、オリジナルデータが、フレッシュ必要の状態にまで信頼性が悪化したときに、リード対象をクローンデータに置き換えることで、即時のリフレッシュを行う必要性を解消するという意味を持つ。
【0119】
この状態ST13で通常のメモリカード1の動作が継続して行われた後、オフとされ、さらにその後メモリカード1が起動された場合は、状態ST15となっている。この場合も、主データと副データの一方を破棄(消去)する。そして状態ST0に戻り、上記同様の処理を行う。
この場合は、この時点での副データ(オリジナルデータ側)を破棄することが適切である。オリジナルデータ側は、前回の起動中にリフレッシュ必要と判断されたデータだからである。
【0120】
上記の状態ST13で、通常のメモリカード1の動作が継続して行われた場合において、或る時点でのデータDTm(この場合クローンデータ側)のリードの際に、即時リフレッシュが必要と判断されることがある。
その場合は、信頼性低下に対処するため、データDTmについてのリフレッシュ動作を行う。
状態ST13としては、フレッシュなクローンデータ側が主データDTmとされたものであるため、状態ST13において即時リフレッシュ必要となることは希である。従って、実際上、リフレッシュ動作を実行する機会は殆ど無いと言える。但し、皆無では無いため、その場合の補償として、リフレッシュ動作が用意される。
【0121】
リフレッシュ動作が行われた後は、状態ST13に戻ると考えれば良い。但しその場合のデータDTmは、信頼性が回復されている。
その後、メモリカード1の動作がオフとされ、さらにその後メモリカード1が起動された場合は、状態ST15となっている。この場合も、副データDTsを破棄(消去)することが適切である。この場合の副データDTsとは、前回の起動中にリフレッシュ必要と判断されたオリジナルデータ側のデータだからである。
そして状態ST0に戻り、上記同様の処理を行う。
【0122】
第3の実施の形態では、概略以上のようにデータDTが変遷し、これによって信頼性の維持と、リフレッシュ動作の最小限化によるアクセス時間の減少、安定化が実現できる。
この第3の実施の形態のための制御部11の処理は、基本的には図8,図9のとおりであるが、詳細な点として、以下の点を異なるようにすればよい。
【0123】
まず図8のステップF101では、図15の状態ST14の場合は主データDTmを破棄し、状態ST15の場合は副データDTsを破棄することとする。
ステップF105では、管理情報の更新は、生成したクローンデータを副データDTsとして管理するように更新すればよい。
また評価用情報については次のようにする。
状態ST14→ST10と遷移した場合は、主データDTmは前回起動時に作成されたクローンデータであり、そのクローンデータについてはまだリードされていない。従って、当該データに関してはそれまでの評価用情報はクリアすれば良い。
状態ST15→ST10と遷移した場合であって、リフレッシュが行われていない場合は、主データDTmは、前回起動時に作成されたクローンデータである。しかしそのクローンデータについてはリードされている可能性がある。従って、当該データに関してはそれまでの評価用情報は維持するとよい。
【0124】
図9のステップF155では、図15の状態ST12からST13に遷移する処理となるが、従って管理情報の更新とは、オリジナルデータ側を副データDTsとし、クローンデータ側を主データDTmとする処理とすればよい。
【0125】
<6.変形例>
以上、実施の形態について説明してきたが、本開示の技術には次のような変形例も考えられる。
第3の実施の形態では、第1の実施の形態と同様に、起動時に各データについてリフレッシュ機会近接の判断を行うようにしたが、第2の実施の形態のように、リード時に、そのデータについてのリフレッシュ機会近接の判断を行って評価用情報を記憶するような処理を適用することもできる。
【0126】
評価用情報の内容としては、ビットエラー数、リード回数、書換回数などとしたが、他の例も考えられる。
またビットエラー数、リード回数、書換回数などのそれぞれに異なる重みづけを与えたうえで、それらのデータから、リフレッシュ機会近接の判断の指標を求めてもよい。
【0127】
実施の形態では、クローンデータ生成を起動時に行うとしたが、起動時以外に行うことも考えられる。例えば動作をオフとする際や、メモリカード1の取り外し時などに行うことも可能である。
【0128】
また実施の形態ではメモリカード1の例を挙げたが、不揮発性メモリ15と、制御部11が別体の構成の場合でも本開示の技術は適用可能である。例えば不揮発性メモリに対しての読出・書込アクセスを制御する制御装置としても実現できる。
本開示の技術は、各種メモリカード、SSD、eMMCなどに適用できる。
【0129】
なお本技術は以下のような構成も採ることができる。
(1)不揮発性メモリに記憶されたデータであって、リフレッシュ必要性に関する評価用情報に基づいてリフレッシュ機会が近接していると判定されるデータについて、該データをオリジナルデータとして、オリジナルデータと同一のクローンデータを、上記不揮発性メモリ内に生成する処理を行うクローン生成処理部と、
上記オリジナルデータと上記クローンデータのいずれか一方が、アクセス実行の際のアクセス対象となるように、管理情報を更新する管理情報処理部と、
上記不揮発性メモリに記憶されたデータのアクセス時に、該データについての上記評価用情報を生成する評価用情報処理部と、
を備えた制御装置。
(2)上記管理情報処理部は、上記クローンデータが生成されたデータについては、上記クローンデータがアクセス対象となる主データとし、上記オリジナルデータがアクセス対象とはならない副データとして管理されるように、上記管理情報を更新する上記(1)に記載の制御装置。
(3)上記主データがリフレッシュ機会に至ったと判断される場合、上記管理情報処理部は、上記オリジナルデータがアクセス対象の主データとして管理されるように、上記管理情報を更新する上記(2)に記載の制御装置。
(4)上記オリジナルデータが上記主データとされた後、該主データがリフレッシュ機会に至ったと判断される場合に、上記オリジナルデータについてのリフレッシュ動作制御を行うリフレッシュ制御部を、さらに備える上記(3)に記載の制御装置。
(5)上記管理情報処理部は、上記不揮発性メモリの起動時において、上記クローンデータが生成されているデータについて、上記主データ又は上記副データの一方が破棄されるように、上記管理情報を更新する上記(2)乃至(4)のいずれかに記載の制御装置。
(6)上記評価用情報処理部は、上記クローン生成処理部が上記クローンデータの生成処理を行ったデータに関する上記評価用情報をクリアする上記(2)乃至(5)のいずれかに記載の制御装置。
(7)上記クローン生成処理部は、上記不揮発性メモリの起動時に、不揮発性メモリに記憶されたデータについて、上記評価用情報に基づいてリフレッシュ機会が近接しているか否かを判定し、リフレッシュ機会が近接していると判定したデータについて、上記クローンデータの生成処理を行う上記(1)乃至(6)のいずれかに記載の制御装置。
(8)上記評価用情報処理部は、上記不揮発性メモリに記憶されたデータのアクセス時に、該データについて、リフレッシュ機会が近接しているか否かを判定し、リフレッシュ機会が近接していると判定した場合に、該データについての上記評価用情報を生成し、
上記クローン生成処理部は、上記不揮発性メモリの起動時に、上記評価用情報に基づいて、リフレッシュ機会が近接していると判定されたデータについて、上記クローンデータの生成処理を行う上記(1)乃至(6)のいずれかに記載の制御装置。
(9)上記管理情報処理部は、上記クローンデータが生成されたデータについては、上記オリジナルデータがアクセス対象となる主データとし、上記クローンデータがアクセス対象とはならない副データとして管理されるように、上記管理情報を更新する上記(1)に記載の制御装置。
(10)上記主データがリフレッシュ機会に至った場合、上記管理情報処理部は、上記クローンデータがアクセス対象の主データとして管理されるように、上記管理情報を更新する上記(9)に記載の制御装置。
(11)上記管理情報処理部は、上記不揮発性メモリの起動時において、上記クローンデータが生成されているデータについて、上記主データ又は上記副データの一方が破棄されるように、上記管理情報を更新する上記(9)又は(10)に記載の制御装置。
(12)上記評価用情報は、所定データ単位についての、ビットエラー発生数、読出回数、消去回数の、少なくとも1つを含む上記(1)乃至(11)のいずれかに記載の制御装置。
【符号の説明】
【0130】
1 メモリカード、2 ホスト機器、11 制御部、12 SRAM、13 デバイスインターフェース、14 バッファRAM、15 不揮発性メモリ
【技術分野】
【0001】
本開示は、制御装置、記憶装置、読出制御方法に関し、特に不揮発性メモリの信頼性向上やアクセスタイムの高速化、安定化を実現する技術に関する。
【先行技術文献】
【特許文献】
【0002】
【特許文献1】特開2009−70098号公報
【特許文献2】特開2007−334852号公報
【特許文献3】特開2007−193838号公報
【特許文献4】特開2007−58840号公報
【背景技術】
【0003】
例えばNAND型フラッシュメモリなどの不揮発性メモリを用いた記憶装置が普及している。不揮発性メモリは、例えば各種電子機器、情報処理装置などで使用されるメモリカード、SSD(Solid State Drive)、eMMC(Embedded MultiMedia Card)などで利用されている。
上記特許文献1〜4にはフラッシュメモリを用いた記憶装置が開示されている。
【0004】
不揮発性メモリでは、物理的な記憶領域のアドレスとして物理アドレスが使用される。これにより物理ブロック、物理ページ、物理セクタが設定されている。複数の物理セクタで物理ページが構成され、また複数の物理ページで物理ブロックが構成される。
消去(イレーズ)は物理ブロック単位で行われ、書込(プログラム)及び読出(リード)は物理ページ単位で可能とされる。
ホスト側やメモリ制御部側からのアドレス指定は、論理アドレスが用いられる。論理アドレスによる論理ブロック、論理ページ、論理セクタが、上記の物理アドレスに対応づけられる。これによりアクセス要求時には論理アドレスが物理アドレスに変換されて、実際のフラッシュメモリへのアクセスが実行される。
【発明の概要】
【発明が解決しようとする課題】
【0005】
ところでNAND型フラッシュメモリでは、書き込まれたデータを読み出した際に、ビット化け(ビットエラー)などが発生した場合に備えて、誤り訂正符号を用いて、データの信頼性を高めてきた。
しかし、近年、NAND型フラッシュメモリのプロセス微細化により、書き込まれたデータを繰り返し読み出し続けるとデータのビット化けが発生する現象が発生しやすくなっており、訂正しきれないほどのビット化けが発生しやすくなってきている。
【0006】
こうした状況に対して、ビット化けが発生したものを訂正するだけではなく、訂正が可能なうちにデータのリフレッシュ動作を行うことにより、ビット化けが発生しにくい状況にする手法が知られている。
従来のリフレッシュ手法は、ビット化けの発生数や、読み出しや書き換えの回数などが、一定の閾値を超えたら、リフレッシュ機会に至ったと判断し、リフレッシュ動作を行うものである。
【0007】
ところがこうした従来手法を用いると、閾値を超える状態が発生すると、すぐにリフレッシュ動作を開始するため、読出アクセスの際の処理速度を低下させてしまうという問題がある。またリフレッシュ動作が起きる場合と起きない場合とで処理速度にバラつきが生じる。
【0008】
本開示ではこのような問題に鑑みて、不揮発性メモリに記憶されたデータの信頼性を高めるとともに、アクセスの際の処理速度の高速化、安定化を実現することを目的とする。
【課題を解決するための手段】
【0009】
本開示の制御装置は、不揮発性メモリに記憶されたデータであって、リフレッシュ必要性に関する評価用情報に基づいてリフレッシュ機会が近接していると判定されるデータについて、該データをオリジナルデータとして、オリジナルデータと同一のクローンデータを、上記不揮発性メモリ内に生成する処理を行うクローン生成処理部と、上記オリジナルデータと上記クローンデータのいずれか一方が、アクセス実行の際のアクセス対象となるように、管理情報を更新する管理情報処理部と、上記不揮発性メモリに記憶されたデータのアクセス時に、該データについての上記評価用情報を生成する評価用情報処理部とを備える。
【0010】
本開示の記憶装置は、不揮発性メモリと、上記不揮発性メモリに記憶されたデータであって、リフレッシュ必要性に関する評価用情報に基づいてリフレッシュ機会が近接していると判定されるデータについて、該データをオリジナルデータとして、オリジナルデータと同一のクローンデータを、上記不揮発性メモリ内に生成する処理を行うクローン生成処理部と、上記オリジナルデータと上記クローンデータのいずれか一方が、アクセス実行の際のアクセス対象となるように、管理情報を更新する管理情報処理部と、上記不揮発性メモリに記憶されたデータのアクセス時に、該データについての上記評価用情報を生成する評価用情報処理部とを備える。
【0011】
本開示の制御方法は、不揮発性メモリに記憶されたデータであって、リフレッシュ必要性に関する評価用情報に基づいてリフレッシュ機会が近接していると判定されるデータについて、該データをオリジナルデータとして、オリジナルデータと同一のクローンデータを、上記不揮発性メモリ内に生成する処理を行うクローン生成ステップと、上記オリジナルデータと上記クローンデータのいずれか一方が、アクセス実行の際のアクセス対象となるように、管理情報を更新する管理情報処理ステップと、上記不揮発性メモリに記憶されたデータのアクセス時に、該データについての上記評価用情報を生成する評価用情報処理ステップとを備える。
【0012】
これらの本開示の技術では、記憶されたデータについての信頼性を表す値が一定の閾値を超えた時などのリフレッシュ動作が必要に迫られた場合(リフレッシュ機会に至った場合)ではなく、信頼性を示す値を記憶した評価用情報を用いて、リフレッシュ動作がいずれ必要となる可能性が高いデータを推測する。そして事前にそのデータについてクローンデータを複製することで、読み出し時の処理速度の低下させることなく信頼性低下を防ぐ。
即ち、リフレッシュ動作が近いうちに必要となると推測されるデータについてクローンデータを複製し、同一内容のデータを2重に保持する。そしてオリジナルデータとクローンデータのいずれか一方をアクセス対象の主データとして管理し、他方をアクセス対象でない副データとする。そのデータを読み出す際には、主データ(例えばクローンデータ)から読み出しを行い、繰り返しの読出により信頼性の低下が起こった場合、その時点でリフレッシュを行うことなく、論理的な管理情報において主データと副データを入れ替えたうえで新たな主データ(例えばオリジナルデータ)から読出が行われるようにする。
これにより、読出時に信頼性低下が起きた場合でも、即時のリフレッシュ動作が不要となる。
【発明の効果】
【0013】
本開示の技術によれば、信頼性が比較的低下傾向にあるデータについて、クローンデータを生成し、データ内容を2重に保持するため、データの信頼性を向上できる。特にクローンデータ側を主データとして読出アクセスの対象とすれば、リフレッシュと同様の新たなデータであるため、信頼性が回復した状態となる。
さらにその上で、読み出していた方の主データについてリフレッシュ機会に至ったら、主データと副データを入れ替えて、以降は新たな主データに対して読出を行うようにする。これらのことにより、リフレッシュ動作を実行する機会を非常に希とすることができ、殆どの場合で、リフレッシュを伴わないことで、アクセス速度の高速化、安定化を実現できる。
【図面の簡単な説明】
【0014】
【図1】本開示の実施の形態のメモリカードの構成のブロック図である。
【図2】実施の形態の制御部の機能構成の説明図である。
【図3】従来手法でリフレッシュが実行される場合、及び信頼性低下の説明図である。
【図4】リフレッシュの実行によるアクセス時間の変動の説明図である。
【図5】実施の形態でのアクセス時間の安定化の説明図である。
【図6】第1、第2の実施の形態のクローンデータ生成に伴う動作の説明図である。
【図7】実施の形態の評価用情報の一例の説明図である。
【図8】第1の実施の形態の起動時の処理のフローチャートである。
【図9】第1の実施の形態のリード時の処理のフローチャートである。
【図10】実施の形態のリフレッシュ機会近接推定の説明図である。
【図11】実施の形態の動作によるデータ読出回数の説明図である。
【図12】第2の実施の形態の評価用情報の更新の説明図である。
【図13】第2の実施の形態の起動時の処理のフローチャートである。
【図14】第2の実施の形態のリード時の処理のフローチャートである。
【図15】第3の実施の形態のクローンデータ生成に伴う動作の説明図である。
【発明を実施するための形態】
【0015】
以下、実施の形態について次の順序で説明する。なお、実施の形態で示すメモリカード1が請求項でいう記憶装置の実施の形態となる。またメモリカード1内の制御部11が、請求項でいう制御装置の実施の形態であり、制御部11による処理が請求項でいう制御方法の実施の形態となる。
<1.メモリカード構成>
<2.リフレッシュによる処理速度の低下及びバラツキの解消>
<3.第1の実施の形態>
[3−1:動作概要]
[3−2:評価用情報]
[3−3:処理例]
<4.第2の実施の形態>
<5.第3の実施の形態>
<6.変形例>
【0016】
<1.メモリカード構成>
図1に実施の形態のメモリカード1の構成例を示す。
メモリカード1はホスト機器2に接続され、記憶装置として用いられる。ホスト機器2とは、例えばパーソナルコンピュータ、デジタルスチルカメラ、ビデオカメラ、オーディオプレーヤ、ビデオプレーヤ、ゲーム機器、携帯電話機、PDA(Personal Digital Assistant)等の情報端末など、各種の電子機器、情報処理装置が想定される。
【0017】
メモリカード1は、制御部(CPU:Central Processing Unit)11、SRAM(Static Random Access Memory)12、デバイスインターフェース13、バッファRAM、及び不揮発性メモリ(Non-Volatile Memory)15を備える。
【0018】
制御部11はメモリカード1の全体を制御する。このため制御部11はSRAM12に置かれた命令コードを逐次実行する。主に制御部11は、ホスト機器2からのコマンドに応じたデータの書込や読出を実行させる。このため制御部11は、デバイスインターフェース13のホスト機器2とのデータ送受信動作制御、バッファRAM14の書込/読出動作の制御、不揮発性メモリ15へのアクセス動作の制御を行う。
SRAM12は、制御部11が実行するプログラム(ファームウェア)の記憶や、ワーク領域として使用される。
デバイスインターフェース13はホスト機器2との間の通信を行う。
バッファRAM14はホスト機器2との間の転送データ(書込データや読出データ)のバッファリングに用いられる。
不揮発性メモリ15は、例えばNAND型フラッシュメモリである。
【0019】
メモリカード1の基本的な動作としては、データ書込時には、ホスト機器2から書込要求とともに、書込アドレス、データサイズ、さらに書き込むべきデータが送られてくる。
ホスト機器2から送られてくる書き込むデータは、デバイスインターフェース13で受信されてバッファRAM14にバッファリングされる。そして制御部11の制御の元、データが不揮発性メモリ15に書き込まれる。制御部11は書込要求、書込アドレス、データサイズに応じてこれらの動作を制御する。
データ読出時にはホスト機器2から読出要求とともに、読出アドレス、データサイズが送られてくる。制御部11は、読出アドレス、データサイズに基づいて不揮発性メモリ15から指示されたデータの読出を行い、バッファRAM14にバッファリングする。また制御部11はバッファリングされた読出データに対してエラー訂正処理等を行う。そして読出データはバッファRAM14からデバイスインターフェース13に転送され、ホスト機器2に送信される。
【0020】
ところで不揮発性メモリ15は、物理的な記憶領域のアドレスとして物理アドレスが使用される。これにより物理ブロック(Physical Block)、物理ページ(Physical Page)、物理セクタ(Physical Sector)が設定されている。複数の物理セクタで物理ページが構成され、また複数の物理ページで物理ブロックが構成される。
消去(イレーズ)は物理ブロック単位で行われ、書込(プログラム)及び読出(リード)は物理ページ単位で可能とされる。
ホスト機器2側からのアドレス指定は、論理アドレスが用いられる。論理アドレスによる論理ブロック、論理ページ、論理セクタが、上記の物理アドレスに対応づけられる。即ち制御部11は論理アドレスと物理アドレスを対応づける管理情報を有し、ホスト機器2からのアクセス要求時には、指定される論理アドレスを管理情報を参照して物理アドレスに変換する。そして物理アドレスにより、実際の不揮発性メモリ15へのアクセスを実行する。
【0021】
ここで本実施の形態の場合、後述する動作を実行するための機能(ソフトウエアにより実現される処理機能)として、図2に示すようにアクセス制御部31、クローン生成処理部32、管理情報処理部33、評価用情報処理部34、リフレッシュ制御部35を備える。
なお、ここではこれらの機能部位がCPU11の処理として発現するソフトウエア機能として設けられているとするが、これらがハードウエアにより形成されてもかまわない。
また制御部11の管理のもと、例えばSRAM12に、管理情報部41、評価用情報テーブル42としての領域が用意され、管理情報や評価用情報が記憶される。
【0022】
管理情報部41は、上述の論理アドレスと物理アドレスの変換情報や、不揮発性メモリ15に記憶されているデータのディレクトリ情報等の管理情報を記憶する。即ち、ホスト機器2からのコマンドに応じて、制御部11が不揮発性メモリ15への書込や読出を実行させるために必要となる情報である。
なお、管理情報では、後述するクローンデータが生成されたデータについては、オリジナルデータとクローンデータの一方をアクセス対象として管理する。つまり或る論理アドレスに対応して、オリジナルデータとクローンデータの一方の物理アドレスが導かれる状態とする。他方のデータについては、アクセス対象ではないデータであって、アクセス対象のデータと同一のデータであるものとして管理する。
【0023】
評価用情報テーブル42は、詳しくは後述するが、各データ単位(一例としては物理ブロック単位)について、信頼性の度合いを評価するための情報としての評価用情報を記憶する。本実施の形態の場合、評価用情報は、各データ単位について、近い将来にリフレッシュ機会に至るか否かを推定するための情報となる。例えば所定のデータ単位毎についての、ビットエラー発生数、読出回数、消去回数の、少なくとも1つを含む情報である。
【0024】
なお、管理情報,評価用情報の一方又は両方は、不揮発性メモリ15に常時格納されても良いし、不揮発性メモリ15内に記憶され、起動時にSRAM12に展開されて制御部11によって参照・更新されるようにしてもよい。或いは不揮発性メモリ15以外に不揮発的な記憶領域を用意して、そこに格納してもよい。
即ち管理情報、評価用情報は、不揮発的に保持され、メモリカード1の起動中に制御部11が参照・更新できるようにされていれば、どのような形態で保持されていても良い。
【0025】
制御部11におけるアクセス制御部31は、ホスト機器2からのコマンドに応じて不揮発性メモリ15へのデータ書込アクセス又はデータ読出アクセスを実行制御する機能である。アクセス制御部31は管理情報部41の管理情報を参照して、ホスト機器2からのコマンドに対応した不揮発性メモリ15へのアクセスを実行する。
【0026】
クローン生成処理部32は、不揮発性メモリ15に記憶されたデータであって、リフレッシュ必要性に関する評価用情報テーブル42の評価用情報に基づいてリフレッシュ機会が近接していると判定されるデータについて、該データをオリジナルデータとして、オリジナルデータと同一のクローンデータを、不揮発性メモリ15内に生成する処理を行う機能である。
例えば後述する第1、第3の実施の形態では、クローン生成処理部32は、メモリカード1の起動時に、不揮発性メモリ15に記憶されたデータについて、評価用情報に基づいてリフレッシュ機会が近接しているか否かを判定する。そしてリフレッシュ機会が近接していると判定したデータについて、クローンデータの生成処理を行う。
また第2の実施の形態では、メモリカード1の起動時に、既にリフレッシュ機会が近接しているデータ単位について記憶された評価用情報を参照し、そのデータについてクローンデータの生成処理を行う。
【0027】
管理情報処理部33は、管理情報部41の内容(管理情報)の更新を行う。特にクローン生成処理部32によってクローンデータが生成された場合は、オリジナルデータとクローンデータのいずれか一方がアクセス対象となるように、管理情報を更新する。
例えば第1、第2の実施の形態では、管理情報処理部33は、クローンデータが生成されたデータについては、クローンデータがアクセス対象となる主データとし、オリジナルデータがアクセス対象とはならない副データとして管理されるように、管理情報を更新する。
さらにその場合において、主データがリフレッシュ機会に至ったと判断される場合、管理情報処理部33は、主副データを入れ替える。つまりオリジナルデータがアクセス対象の主データとして管理されるように、管理情報を更新する。
また管理情報処理部33は、起動時において、クローンデータが生成されているデータについて、主データ又は副データの一方が破棄されるように、管理情報を更新する。
【0028】
また第3の実施の形態では、管理情報処理部33は、クローンデータが生成されたデータについては、オリジナルデータがアクセス対象となる主データとし、クローンデータがアクセス対象とはならない副データとして管理されるように、管理情報を更新する。
その場合において主データがリフレッシュ機会に至った場合、管理情報処理部33は主副データを入れ替える。つまり、クローンデータがアクセス対象の主データとして管理されるように管理情報を更新する。この場合も管理情報処理部33は、起動時において、クローンデータが生成されているデータについて、主データ又は副データの一方が破棄されるように、管理情報を更新する。
【0029】
評価用情報処理部34は、不揮発性メモリ15に記憶されたデータのアクセス時に、該データについての信頼性の評価用情報(ビットエラー数等の値)を検出或いは生成し、評価用情報テーブル42に追加・更新を行う。
また評価用情報処理部34は、クローン生成処理部32がクローンデータの生成処理を行ったデータに関する評価用情報を、評価用情報テーブル42からクリアする処理も行う。
また第2の実施の形態の場合、評価用情報処理部34は、不揮発性メモリ15に記憶されたデータのアクセス時に、該データについて、リフレッシュ機会が近接しているか否かを判定し、リフレッシュ機会が近接していると判定した場合に、該データについての上記評価用情報を生成し、評価用情報テーブル42に追加する処理を行う。
【0030】
リフレッシュ制御部35は、不揮発性メモリ15に記憶されているデータのリフレッシュ動作の実行を制御する機能である。リフレッシュ動作は、簡単に言えば、或るデータ単位で、当該データについて、不揮発性メモリ15内の他の領域にコピーする動作である。実質的には、上述のクローンデータ生成と同様の動作となる。本実施の形態の場合、リフレッシュ動作に至ることは希となるが、リフレッシュを行う場合は、リフレッシュ制御部35が不揮発性メモリ15上でのデータコピーによるリフレッシュの実行を制御することになる。
【0031】
<2.リフレッシュによる処理速度の低下及びバラツキの解消>
ここで、本実施の形態に至る従前のアクセスの場合の処理速度に関して説明した上で、本実施の形態で処理速度の低下及び速度バラツキを解消する手法の概要について説明する。
【0032】
まず図3で、従前の方式でリフレッシュが行われる場合を説明する。
先にも述べたように、近年、NAND型フラッシュメモリのプロセス微細化により、書き込まれたデータを繰り返し読み出し続けるとデータのビット化けが発生する現象が発生しやすくなっており、訂正しきれないほどのビット化けが発生しやすくなってきている。
図3Bには、半導体不揮発性メモリに対するリード/ライト回数と信頼性の関係を示している。図示のように、半導体不揮発性メモリは、読み出し処理や書き換え処理を繰り返し行うことによりデータの信頼性が低下する特性を持つ。
こうした半導体不揮発性メモリを用いた記憶システムにおいて、データの信頼性低下を防ぐ方法として、信頼性を表す値が一定の閾値を超えた場合に、不揮発性メモリ上のデータのリフレッシュを行う手法が用いられている。
具体的には、リード時等にビット化けの発生数や、読み出しや書き換えの回数などが、一定の閾値を超えた場合に即座にリフレッシュ動作を行うようにしていた。
【0033】
図3Aにその動作を示す。図3では、ホスト機器3、制御部11、不揮発性メモリ15の動作として、従来手法を実行する場合を示している。
ホスト機器2からリードコマンドが送信されると、制御部11は不揮発性メモリ15に対してのリードオペレーションを実行する。これにより不揮発性メモリ15からバッファRAM14にデータが読み出される。この間、不揮発性メモリ15はビジー状態となる。
制御部11はバッファRAM14に読み出したデータに対して、エラー検出、エラー訂正を行い、またエラー検出の結果としてのビット化け数等を判定する。即ち今回読み出したデータについてリフレッシュが必要か否かを判定する。
そしてリフレッシュが必要と判定したら、制御部11はリフレッシュオペレーションを実行する。即ち不揮発性メモリ15において、今回のデータを、不揮発性メモリ15内の他の領域にコピーして、元のデータをコピーデータに置き換える処理を行う。この間、不揮発性メモリ15はビジー状態となる。
リフレッシュが完了したら、読み出したデータを、ホスト機器2に転送する。
【0034】
このように、ビット化け数等の評価指標を用い、それが閾値を超えたら直ぐにリフレッシュを行うことで、訂正しきれないほどのエラーが生じることとなる前にデータを置き換え、信頼性を回復させる。
ところが、このようにリフレッシュ動作を行うと、ホスト機器2からみての処理速度が低下することになる。つまりコマンド発行からリードデータ受信までの時間が長くなる。
【0035】
また、リフレッシュ動作が起きる場合と起きない場合とで処理速度にバラつきが生じるということもある。
図4は、リフレッシュ動作が行われない場合と行われる場合の処理時間を示している。
ホスト機器2が時点ts1にリードコマンドを送信して、制御部11がリードオペレーションを実行したとする。この場合は、リフレッシュが必要とは判断されず、時点ts2でリードデータがホスト機器2に転送されたとしている。
一方、ホスト機器2が時点ts3にもリードコマンドを送信して、制御部11がリードオペレーションを実行したとする。この場合は、リフレッシュが必要と判断され、リフレッシュオペレーションが実行され、その後、時点ts4でリードデータがホスト機器2に転送されたとしている。
この各場合のように、リフレッシュ動作が実行されるか否かで、ホスト機器2からみての処理時間は、時間T1、T2と大きく異なる。
【0036】
これらの状況に対し、本実施の形態では、不揮発性メモリ15のデータの信頼性を維持しつつ、リフレッシュ動作が行われる機会を最小限とし、処理速度低下の防止や処理時間のバラツキを殆ど発生しなくなるようにする。
このため本実施の形態では、データの信頼性を表す値が一定の閾値を超えた時など、リフレッシュ動作が必要に迫られた場合ではなく、信頼性を示す値(評価用情報)を用いてリフレッシュ動作がいずれ必要となる可能性が高いデータを推測し、事前にそのデータをクローンデータとして複製する。これにより読み出し時の処理速度を低下させることなく信頼性低下を防ぐ。
【0037】
具体例は第1〜第3の実施の形態として後述するが、本例の場合、処理時間に関しては殆どの場合、図5に示すようになる。
図5において、ホスト機器2が時点ts11にリードコマンドを送信して、制御部11がリードオペレーションを実行したとする。この場合は、リフレッシュが必要とは判断されず、時点ts12でリードデータがホスト機器2に転送されたとしている。
一方、ホスト機器2が時点ts13にもリードコマンドを送信して、制御部11がリードオペレーションを実行したとする。この場合は、リフレッシュが必要と判断される状況だったとする。しかしこの場合、リフレッシュオペレーションは実行せず、管理情報を更新する。これは、それまでクローンデータとオリジナルデータの一方が、管理情報上でアクセス対象のデータとされていたところ、これを入れ替えて、他方をアクセス対象のデータとする処理である。
この処理を行って、時点ts14でリードデータをホスト機器2に転送する。
【0038】
管理情報の更新は、リフレッシュ動作に比べて極めて短い時間で完了できる。この結果、リフレッシュ必要性の判定に関わらず、ホスト機器2からみての処理時間は、時間T3、T4で殆ど変わらない。
また、リフレッシュ必要性の判定がなされたとしても、その後は、アクセス対象がクローンデータとオリジナルデータの間で置き換えられているため、次回のアクセス時からのデータの信頼性は回復されている。
【0039】
<3.第1の実施の形態>
[3−1:動作概要]
以下、具体的な処理例として第1の実施の形態を説明する。
第1の実施の形態は、メモリカード1の起動時に、信頼性を表す値をもとに記録した評価用情報を用いて、不揮発性メモリ15に記憶されている各データにつき、リフレッシュ動作が近い将来に必要となるか否かを推測する。
この判定の対象の各データとは、例えば物理ブロック単位のデータとして説明するが、これに限られない。消去単位が物理ブロックであるため、少なくとも物理ブロック単位の以上の単位のデータであればよい。例えば管理情報上で、1つのデータファイルとして管理される単位でもよいし、データファイルをいくつかに分割した単位でもよい。また複数の物理ブロックの単位でもよい。
【0040】
リフレッシュ動作が近く必要になると判定されたデータについては、事前に(起動時に)クローンデータを複製する。即ち該当データを、不揮発性メモリ15内でオリジナルデータとクローンデータという形で2重に保持する。管理情報上では、クローンデータとオリジナルデータの一方をアクセス対象のデータとして管理する。
なお、管理情報において、アクセス対象として管理されるデータ、つまりホストからのコマンドに応じてアクセスされるデータを説明上「主データ」とし、他方を「副データ」ということとする。
第1の実施の形態では、クローンデータ側を主データとする。
【0041】
実際に、ホスト機器2からのアクセス要求があった場合は、制御部11は管理情報に基づいて主データのアクセスを行い、読み出されたデータをホスト機器2に転送する。
この場合に、読み出したデータが、即時リフレッシュが必要な状態になっていたら、主データと副データを入れ替える。これによりデータ信頼性を回復させる。
【0042】
このような動作を、図6で、不揮発性メモリ15内の或るデータDTを代表例として、その変遷を模式的に示す。状態ST0〜ST6として、各時点での不揮発性メモリ15内でのデータDTに関する状態を示している。データDTとは、例えば1つの物理ブロック単位などである。
【0043】
例えば起動時に、図6の状態ST0であるとする。即ち不揮発性メモリ15内にあるデータDTが記憶されているとする。ここでデータDTについて、図6では「DTm」「DTs」の表記をしているが、「DTm」は、上記の主データ、つまり管理情報において、リードコマンドに応じたアクセス対象として管理されているデータを意味する。一方、「DTs」は、アクセス対象としては管理されていない副データを意味する。クローンデータが形成されていないデータDTについては、当然「DTm]となる。
【0044】
まず起動時に、制御部11は各データ単位について、リフレッシュ動作が近く必要になるか否かを判定する。状態ST0におけるデータDTmが、リフレッシュ動作が近く必要に成るデータでは無いと判断したときは、そのままである。即ち状態ST1として、その後のリードコマンドに対しては、データDTmがアクセス対象となる。
【0045】
一方、データDTmについて、リフレッシュ機会が近接していると判断される場合は、状態ST2に示すように、クローンデータを生成する。
さらに、状態ST3として、生成したクローンデータを主データ、オリジナルデータを副データとするように管理情報の更新を行う。
従ってその後のリードコマンドに対しては、クローンデータであるデータDTmがアクセス対象となる。クローンデータは、この時点でフレッシュなデータであり、オリジナルデータに比して信頼性が回復されたものとなっている。そのため、その後のリード機会があっても、かなりのリード回数までは、即時リフレッシュ必要と判定されることは、殆ど無い。
【0046】
この状態ST3で通常のメモリカード1の動作が継続して行われた後、一旦、ホスト機器2からの接続が解消、或いはホスト機器2電源オフなどに伴って、メモリカード1の動作がオフとされたとする。そしてその後、ホスト機器2との接続、或いはホスト機器2の電源オンなどに伴って、メモリカード1が起動されたとする。
その場合の起動時は、状態ST5となっている。この場合には、主データと副データの一方、例えば副データDTsを破棄(消去)する。そして状態ST0に戻り、上記同様の処理を行う。副データ(オリジナルデータ側)を破棄するのは、そのオリジナルデータが、前回の起動時においてリフレッシュ機会近接と判断され、信頼性が比較的低下しているためである。つまり主データ(クローンデータ側)を残した方が、信頼性の点で好適と考えられるためである。
なお、クローンデータ側も、前回の起動中に非常に多数回アクセスされるなどして、信頼性が低下し、リフレッシュ機会が近接している場合もある。ところがその場合は、今回の起動時に状態ST0→ST2として、前回のクローンデータをオリジナルとして、新たにクローンデータが生成されることとなるため、信頼性は回復される。
【0047】
ところで、上記のように状態ST3で通常のメモリカード1の動作が継続して行われた場合において、或る時点でのデータDTmのリードの際に、即時リフレッシュが必要と判断されることがある。
その場合は、状態ST4として示すように、主データと副データを入れ替えるように管理情報を更新する。この場合、クローンデータが主データとされていたところを、オリジナルデータが主データとされるように管理情報を更新する。
従って、その後のリード機会が発生すると、オリジナルデータ側がアクセスされることとなる。
【0048】
オリジナルデータ側は起動時に、リフレッシュ機会近接と判断されたデータであるが、これは、即時リフレッシュが必要とされるレベルではない。従って、まだ正常なデータ読出は十分に可能である。
従ってこの場合は、もしもクローンデータ側がリフレッシュ必要の状態までも信頼性が悪化したとしても、オリジナルデータ側で伴うことで、そのリード時点で即時のリフレッシュを行う必要性を解消するという意味を持つ。
そもそも、状態ST3においてはフレッシュなデータであるクローンデータ側が主データとされているため、継続起動中に、そのクローンデータ側が即時リフレッシュ必要と判定されることは希である。起動中によほどの回数のリードが、同一のデータに集中したような場合である。このような希な場合であったとしても、もしデータDTm(クローンデータ側)が即時リフレッシュ必要とされた場合は、オリジナルデータ側を用いることで、即時のリフレッシュ動作を不要とできるということである。
【0049】
この状態ST4で通常のメモリカード1の動作が継続して行われた後、オフとされ、さらにその後メモリカード1が起動された場合は、状態ST6となっている。この場合も、主データと副データの一方、例えば副データDTsを破棄(消去)する。そして状態ST0に戻り、上記同様の処理を行う。
ここで副データ(この場合はクローンデータ側)を破棄するのは、そのクローンデータが、既に即時リフレッシュ必要と判断され、信頼性が低下しているためである。つまり主データ(オリジナルデータ側)を残した方が、まだ信頼性の点で好適と考えられるためである。
なお、この場合のオリジナルデータ側は、前回の起動時にリフレッシュ機会近接と判断されているため、信頼性はさほど高くない。ところが、今回の起動時に状態ST0→ST2として、再び当該オリジナルデータ側をオリジナルとして、新たにクローンデータが生成されることとなるため、信頼性は回復される。
【0050】
上記の状態ST4で、通常のメモリカード1の動作が継続して行われた場合において、或る時点でのデータDTm(この場合オリジナルデータ側)のリードの際に、即時リフレッシュが必要と判断されることがある。
その場合は、信頼性低下に対処するため、データDTmについてのリフレッシュ動作を行う。
上述のようにそもそも状態ST4に至ること(クローンデータ側が即時リフレッシュ必要となること)ことが希である。その上で、状態ST4において動作が継続され、オリジナルデータ側も即時リフレッシュ必要となるのは、さらに希である。従って、実際上、リフレッシュ動作を実行する機会は殆ど無いと言える。但し、皆無とは言えないため、その場合の補償として、リフレッシュ動作が用意される。
【0051】
リフレッシュ動作が行われた後は、状態ST4に戻ると考えれば良い。但しその場合のデータDTmは、信頼性が回復されている。
その後、メモリカード1の動作がオフとされ、さらにその後メモリカード1が起動された場合は、状態ST6となっている。この場合も、主データと副データの一方、例えば副データDTsを破棄(消去)する。そして状態ST0に戻り、上記同様の処理を行う。
ここで副データ(この場合はクローンデータ側)を破棄するのは、そのクローンデータが、既に即時リフレッシュ必要と判断され、信頼性が低下しているためである。一方、この場合の主データは、リフレッシュデータであり、信頼性が回復されているためである。
なお、リフレッシュデータ側も、前回の起動中のリフレッシュ後に非常に多数回アクセスされるなどして、信頼性が低下し、リフレッシュ機会が近接している場合もある。ところがその場合は、今回の起動時に状態ST0→ST2として、前回のリフレッシュデータをオリジナルとして、新たにクローンデータが生成されることとなるため、信頼性は回復される。
【0052】
第1の実施の形態では、概略以上のようにデータDTが変遷し、これによって信頼性の維持と、リフレッシュ動作の最小限化によるアクセス時間の減少、安定化が実現できる。
【0053】
[3−2:評価用情報]
ここで、制御部11が起動時に行うリフレッシュ機会近接の判断のための評価用情報について説明する。
上記の図6で例示したデータDT(DTm、DTs)とは、一例としては物理ブロック単位のデータである。その場合、不揮発性メモリ15に記憶されているデータについて、リフレッシュ機会近接の判断を行うには、評価用情報が、物理ブロック毎に、信頼性を評価できる情報となっていればよい。
【0054】
消去単位とされる物理ブロックは、図7Aのように複数の物理ページPUで構成される(ページナンバ0〜nの物理ページ)。
1つの物理ブロックに対する評価用情報としては、物理ブロック全体に対して各種の値を記憶しても良いし、物理ページ毎に各種の値を記憶してもよい。
【0055】
図7Bに、或る1つの物理ブロックPBxに対応する評価用情報の例を示す。
この例では、物理ページ毎に、エマージェンシーレベル、前回のエマージェンシーレベル、前々回のエマージェンシーレベル、エマージェンシーレベルの累積数、エマージェンシーレベルの最大数、リード回数、消去(書換)回数の各値を、評価用情報とするものとしている。
また、この物理ブロックPBx全体としての、エマージェンシーレベルの累積数、エマージェンシーレベルの最大数、リード回数、消去(書換)回数も記憶するものとしている。
【0056】
エマージェンシーレベルとは、例えばリード時のビットエラー(ビット化け)数をそのまま用いてもよい。或いは、ビットエラー数を複数の範囲に区切って、該当する緊急レベルの値を形成するようにしてもよい。いずれにしてもエマージェンシーレベルとは、リフレッシュの必要性が推測できる情報であればよい。
そしてエマージェンシーレベルとしては、例えば各物理ページでのリード時のビットエラー数として、今回(リード時)と、前回、前々回の数を記憶する。もちろん、さらに過去のリード時にさかのぼって記憶しておいてもよい。
またビットエラーの累積数、これまでの最大数も、信頼性の推測に利用できる。
また、各物理ページ毎のリード回数、消去回数も、信頼性の推測に利用できる。
【0057】
この図7Bは、あくまでも評価用情報の内容の一例に過ぎない。
例えばあくまでも物理ブロック単位で、データの信頼性を評価できれば良いため、物理ページ毎の情報を評価用情報に含めなくても良い。即ち図7Bの右端の物理ブロックPBx全体についてのエマージェンシーレベルの累積数、エマージェンシーレベルの最大数、リード回数、消去(書換)回数のみを、評価用情報の内容としてもよい。
或いは、各物理ページ毎の情報を記憶しておけば、物理ブロック単位での各情報の値は算出できるため、各物理ページ毎の情報のみを評価用情報の内容としてもよい。
また、例えばページナンバ0の物理ページなど、1つ(或いは複数)の物理ページのみのビットエラー数等を記憶し、それを物理ブロックを代表する評価値として扱っても良い。
また、評価用情報に含める情報内容は、上記以外にも考えられる。エマージェンシーレベルのみでも良いし、リード回数のみでもよい。また消去回数のみでもよい。
【0058】
ここでは上述のクローンデータ生成を物理ブロック単位で行う場合を想定して、評価用情報は物理ブロック単位で持つ必要としたが、例えばクローンデータ生成を複数物理ブロックの単位や、データファイル単位などとすることも考えられる。その場合、その複数物理ブロック単位であったり、データファイル単位毎に、評価用情報が設けられれば良い。それらの場合は、各物理ブロックのエマージェンシーレベル等が記憶されても良いし、代表する一部の物理ブロックのエマージェンシーレベル等が記憶されても良い。もちろんその場合に物理ページでのエマージェンシーレベル等の情報が記憶されても良い。
【0059】
第1の実施の形態では、このような評価用情報の各値を、リード時やライト(消去/書換)時に、追加又は更新して記憶していく。
或る物理ブロックPBxや物理ページPUに対しての、リード或いはライトの際に毎回、その物理ブロックPBx或いは物理ページPUに対しての情報内容を更新していってもよいし、所定アクセス回数おきに更新するようにしてもよい。またリード回数が所定値mで割り切れる場合のみエマージェンシーレベルを記憶するなどとしてもよいし、或いはリード回数や消去(書換/ライト回数が所定の回数(例えば1回目、10回目、50回目、100回目・・・など)となったときに、エマージェンシーレベルを記憶するような例も考えられる。これらのように或る条件に合致した場合のみ、評価用情報を更新記録するようにしても良い。
【0060】
また、保持しておく情報数は、物理ページ単位或いは物理ブロック単位ごとに1つと限定しない。
例えば1つの物理ブロックPBxについて、今回のエマージェンシーレベルを時点k0の評価用情報として記憶するとしたときに、時点k1,k2・・・という各時点で、物理ブロックPBxに対する評価用情報を追加的に記憶保持していくことも考えられる。
【0061】
評価用情報のリセット(クリア)は、起動時、クローンデータ生成時、または、対応するデータ単位(物理ブロック等)の書き換え(消去)時などとするとよい。但し、書き換え(消去)回数の情報を含める場合は、書換回数の値は原則リセット(クリア)しないものとすることが適切である。
【0062】
このような評価用情報は、情報を更新するたびに不揮発性メモリ15上に記録しても良いし、システム内のSRAM12などに一時的に記録し、一定のタイミングで、不揮発性メモリ15に記録するようにしても良い。
【0063】
起動時のリフレッシュ機会近接の判断の際には、その時点で記憶されている各物理ブロックについてのエマージェンシーレベル、リード回数、消去回数等から、各物理ブロックが、近い将来にリフレッシュが必要となるか否かを推定する情報(信頼性の情報)を算出する。或いは、記憶されている各情報を、そのまま信頼性の情報として用いても良い。
【0064】
[3−3:処理例]
第1の実施の形態として、図6で説明した動作を実現するための制御部11の処理を説明する。以下説明する処理は、制御部11が図2で説明した各機能を備えることで実行されるものである。
【0065】
図8はメモリカード1の起動時に制御部11が実行する処理を示している。図2の機能構成に沿っていえば、ステップF101は管理情報処理部33の機能、ステップF102〜F104はクローン生成処理部32の機能、ステップF105は管理情報処理部33と評価用情報処理部34の機能により実行される。
【0066】
ステップF101で制御部11は、主副データの一方を破棄する処理を行う。不揮発性メモリ15に記憶されている各データ単位については、過去にクローンデータ生成が行われ、管理情報上で主データと副データが存在するものがある。そのため、起動時には一旦この状態を解消する目的で、主副データが存在するデータ単位を管理情報から検索し、該当するデータ単位について、主副データの一方を破棄する。
具体的には、主データ又は副データの一方の管理状態を解消するように管理情報を更新すればよく、実際にこの時点で、不揮発性メモリ15上でデータ消去を行う必要は無い。
第1の実施の形態の場合、図6の状態ST5,ST6で説明したように、副データを破棄することとなる。
このステップF101の処理により、不揮発性メモリ15に記憶された全てのデータは、起動時に図6の状態ST0のようになる。
【0067】
ステップF102で制御部11は、各データについて評価用情報の解析を行う。例えばデータ記憶が為されている各物理ブロックについて、それぞれ評価用情報を解析し、その物理ブロックが、近い将来にリフレッシュ機会となるであろう程度に信頼性が低下しているか否かを判定する。判定の具体例は後述する。
【0068】
全てのデータについて、リフレッシュ機会近接ではないと判断した場合は、ステップF103から図8の処理を終える。これは全てのデータが図6の状態ST1となる場合である。
【0069】
少なくとも1つ以上のデータについて、リフレッシュ機会近接と判断した場合、制御部11はステップF103からF104に進み、クローンデータ生成を行う。即ちそのリフレッシュ機会近接と判断したデータについて、コピーデータを不揮発性メモリ15内の他の領域に生成する。当該データは図6の状態ST2となる。
さらに制御部11は、ステップF105で管理情報の更新及び不要な評価用情報のクリアを行う。
管理情報については、生成したクローンデータをアクセス対象の主データとし、オリジナルデータを副データとするように更新する。即ち図6の状態ST3とする。
評価用情報としては、クローンデータを生成したデータについては、その時点ではオリジナルデータの物理ブロックの、それまでの評価用情報であり、現時点以降はクローンデータがアクセスされることから、不要としてクリアする。
但し、図6で状態ST4においてオリジナルデータ側がアクセスされ、その後、状態ST0に至ることもあり、その際に必要として、クリアしないような処理も考えられる。(付言すれば、この場合でも、実際にオリジナルデータ側がアクセスされることで新たに評価用情報が生成されるため、必ずしもクリアしないで保存しておく必要は無い。)
【0070】
以上のように、クローンデータ生成が行われた場合、リフレッシュ機会近接と判断されたデータ(例えば物理ブロック単位)は図6の状態ST3となり、他のデータは状態ST1となる。
制御部11は以上の処理を起動時に行った後、ホスト機器2からのコマンドを待機する。
【0071】
図9は、ホスト機器2からのリードコマンドが送信された際の制御部11の処理を示している。
図2の機能構成に即していえば、ステップF151、F158はアクセス制御部31の機能、ステップF152は評価用情報処理部34の機能、ステップF153→F154→F156はリフレッシュ制御部35の機能、ステップF153→F154→F155は管理情報処理部33の機能、ステップF157は管理情報処理部33及び評価用情報処理部34の機能として実行される。
【0072】
ホスト機器2からのリードコマンドがあると、制御部11はステップF151で不揮発性メモリ15へのリードオペレーションを実行する。即ちリードコマンドにおいて論理アドで指定されたデータについて管理情報を参照して物理アドレスに変換し、不揮発性メモリ15の当該物理アドのデータを読み出してバッファRAM14に転送させる。また、制御部11はバッファRAM14に取り込んだデータについて、エラー検出・エラー訂正処理を行う。
【0073】
ステップF152で制御部11は、評価用情報の更新を行う。例えば今回のリードにおけるビットエラー数を、評価用情報に追加し、またリード回数を+1するように評価用情報を更新する。
【0074】
ここで制御部11はステップF153で、例えばビットエラー数が所定の閾値を超えた数値であったか否か、或いはリード回数が閾値以上となったか否かなどとして、今回のリードデータについて信頼性判断を行う。ここでいう信頼性判断とは、即時リフレッシュが必要な程度にまで信頼性が低下しているか否かの判断である。
それらの条件に該当せず、信頼性が維持されていると判断された場合は、そのままステップF158に進んで、リードデータをホスト機器2に送信させる。つまりバッファRAM14に取り込み、エラー訂正をしたデータを、デバイスインターフェース13を介してホスト機器2に送信させる。
【0075】
一方、ステップF153の時点で信頼性低下、即ち今後の信頼性維持のためにはリフレッシュが必要な状況と判断された場合は、制御部11はステップF154で、現在の主データ、つまり今回読み出したデータが、起動時にクローンデータとして生成したものか、オリジナルデータであるかにより、処理を分岐する。
【0076】
ステップF154の時点で、主データがクローンデータであるのは、図6の状態ST3の場合である。この場合は、制御部11はステップF155に進み、管理情報の更新を行う。この場合は、主データと副データを入れ替えるように管理情報を更新する。従って、起動時のオリジナルデータ側を主データとし、クローンデータ側を副データとする。即ち図6の状態ST4とする。
そしてステップF158でリードデータを転送してアクセスコマンドに対応した処理を終える。
この場合、次のリードコマンド発生時には、起動時のオリジナルデータ側が主データとして読み出されることになる。
【0077】
またステップF154で、主データがクローンデータでないのは、図6の状態ST4、又は状態ST1の場合である。
ここで状態ST4となっている場合とは、クローンデータがリフレッシュ必要となった後、さらにオリジナルデータ側までもがリフレッシュ必要な状況に至った場合となる。
そこで、制御部11はステップF156でデータのリフレッシュ動作を実行させる。
そしてリフレッシュ動作に伴って、ステップF157で管理情報と評価用情報を更新する。管理情報については、リフレッシュ動作でコピーした新たなデータを、主データとするように更新する。評価用情報については、今回のリフレッシュ動作により、これまでの評価用情報は不要となるため、これをクリアする。
そしてステップF158でリードデータを転送してアクセスコマンドに対応した処理を終える。
【0078】
なお、ステップF154で状態ST1であって、主データがクローンデータでないと判断される場合もリフレッシュ動作、及び管理情報の更新と評価用情報のクリアが行われる。ただし、状態ST1となっているのは、起動時にリフレッシュ機会が未だ遠いと判断されたデータであるので、このような事態は希である。
【0079】
制御部11が以上の図8,図9の処理を行うことで、図6で説明した動作が実現されることとなる。
【0080】
ここで、図8のステップF102での評価用情報を用いたリフレッシュ機会近接の判定処理の例を述べておく。
ここでは、ビットエラー発生数、リード回数、書換(消去)回数を含む評価用情報を用いて、リフレッシュ動作が近く必要となるか否かを推測するのに用いる判断基準値を導きだす例を3例示す。
第1例と第2例では、記録したビットエラー発生数、リード回数をもとに一次方程式を求め、不揮発性メモリ15から読み出しができなくなる限界を迎えるまでの読み出し回数を逆算する。そして限界を迎えるまでの残り読み出し回数が少ないデータ(物理ブロック等)を、リフレッシュ機会近接と判断するものである。
第3例は、ビットエラー発生数、リード回数をそのまま判断基準値とするものである。
【0081】
・第1例
データ毎(例えば物理ブロック毎)に、当該データ内のリード回数(x)の時のビットエラー累積数(y)と、その後の時点のリード回数(x+n)の時のビットエラー発生数の累積数(y+m)の2点の値から一次方程式を導き出す。このとき、上記2点の間隔(n)は、書換(消去)回数の累積数をもとに決定するとする。但し任意の間隔でもよい。例えばn=50とした場合、例えばリード回数50回目と100回目の値となる。実際の判定の際には、どのリード回数時点での評価用情報が保存されているかにも依存するが、例えば最も新しいリード回数時点と、それよりもn回前のリード回数時点の値とすればよい。
【0082】
図10Aに、リード回数とエマージェンシーレベルの座標上の一次方程式を破線で示している。エマージェンシーレベルとは、この場合ビットエラー累積数に相当する。
導き出した一次方程式を用いて、不揮発性メモリ15から読み出しできなくなる限界を迎える読み出し回数を算出する。例えばビットエラー累積数E1が、信頼性限度とすると、一次方程式から、リード回数の限界はN1回となる。
ここで、限界を迎える迄の残りのリード回数はN1−N2のNR回となる。このNR回を、或る閾値と比較し、残り回数が少ないか否かを判定することで、リフレッシュ機会近接か否かを判定できる。
【0083】
・第2例
各データについて、リード回数が一定の回数に達するごとに、その時のビットエラー発生数の最大数をもとに、最小二乗法を用いて一次方程式の近似式を算出する。図10Bに近似式で求めた一次方程式を破線で示している。
導き出した一次方程式(近似式)を用いて、上記の第1例と同様、不揮発性メモリ15が読み出しできなくなる限界を迎える読み出し回数を逆算する。例えばリード回数の限界数N1回を求める。そして、限界を迎える迄の残りのリード回数はN1−N2のNR回を求め、このNR回を、或る閾値と比較し、残り回数が少ないか否かを判定する。これによりリフレッシュ機会近接か否かを判定できる。
【0084】
なお、第1例、第2例のどちらの場合も、必要に応じて、一次方程式の傾きに書換(消去)回数の累積回数を係数として考慮しても良い。
【0085】
・第3例
各データ(例えば各物理ブロック)でのビットエラー発生数の最大数を判断基準値とし、最大数が多い上位一定数のデータ(例えば物理ブロック)を、リフレッシュ機会近接と判断する。つまり、各物理ブロックのうちで、相対的にビットエラー発生数の多い物理ブロックを抽出し、それを、リフレッシュ機会近接の物理ブロックとする。
最大数が同数となる物理ブロックが、複数存在する場合には、物理ブロックでのリード回数も併せて判断基準値として用い、リード回数が多い方を優先とするものとする。
なお、ビットエラー発生数の最大数は少ないが、物理ブロックでのリード回数は一定の基準値以上あるような場合、上記の別枠として、リフレッシュ機会近接の物理ブロックと判断するようにしてもよい。
【0086】
以上、第1の実施の形態について説明してきたが、第1の実施の形態により次のような効果が得られる。
従来手法では、リフレッシュ動作が必要となった場合には即座にリフレッシュ動作を行ってしまうため、リード時のパフォーマンスの低下を引き起こす。また、対象のデータのビットエラーの発生数がある閾値を超えたか否かなど内部的な要因によってリフレッシュ動作を開始するため、リード時のパフォーマンスにバラつきが起こる。
これに対して本実施の形態の手法では、まず図6の状態ST3の場合には、主データ(クローンデータ側)について、読出限界の回数まで繰り返しリードできる。つまり図11で信頼性限度E1となるようなリード回数N1まで、リードし続けることができる。さらに繰り返し読み出し続けたことによりデータのビット化けが多くなるなどでリフレッシュ必要となった場合でも、状態ST4に移行して、主データ(オリジナルデータ側)について、さらに読出限界の回数まで繰り返しリードできる。
結局、データの信頼性を維持したままで、リード時にリフレッシュ動作を行うという機会を殆ど無くすことができ、リード時のパフォーマンス(読出処理時間)の低下やバラツキは殆どなくなる。
【0087】
また、起動時に複製したクローンデータを主データとして管理し、オリジナルデータ側を副データとすることで、クローンデータを複製するごとに評価用情報もリセット(クリア)できる。このため、次回の起動時には、リフレッシュ動作がいずれ必要となると推測される可能性が下がる。
このため、1起動内において特定のデータへの読み出し回数が著しく多い場合を除き、起動するたびに、前回の起動時のオリジナルデータとは別のデータ(前回のクローンデータ)からのクローンデータが必要であれば複製される。よって、起動をくり返すような使用状況下においては、リフレッシュ動作が近く必要となるようなデータが存在しない、データとしての信頼性が高い状態を維持することができる。
【0088】
また、クローンデータを複製する前提条件としてのリフレッシュ機会近接の判定において、上記の第1例、第2例では、限界を迎える迄の残りリード回数が一定の基準回数以上に満たないデータをリフレッシュ機会近接とする。これにより、近々にリフレッシュ動作の必要となる対象データがないような場合に、無駄に不揮発性メモリ15の記憶領域を使用してのクローンデータ複製をしないようにすることができる。これは不揮発性メモリ15の各領域の使用頻度を必要以上に多くしないことになり好適である。
第3例のように、ビットエラー発生数の最大数が一定の基準数以上あるものをリフレッシュ機会近接と判断してクローンデータ生成対象とする場合も、同様である。
【0089】
<4.第2の実施の形態>
続いて第2の実施の形態について説明する。
第2の実施の形態は、制御部11(評価用情報処理部34)が、不揮発性メモリ15に記憶されたデータのアクセス時に、該データについて、リフレッシュ機会が近接しているか否かを判定し、リフレッシュ機会が近接していると判定した場合に、該データについての評価用情報を生成するようにするものである。そして制御部11(クローン生成処理部32)は、起動時に、評価用情報に基づいて、リフレッシュ機会が近接していると判定されたデータについて、クローンデータの生成処理を行う
【0090】
例えば図12Aに示すように、評価用情報テーブル42として、x個の記憶枠を設定しておく。ここでは物理ブロック単位で評価用情報を記憶するとした場合に、物理ブロックナンバと、その物理ブロックのリード時に発生したビットエラー数を、必要に応じて評価用情報として各記憶枠に記憶するものとする。
例えば或る物理ブロックに対してリードを行った場合に、その物理ブロックから読み出したデータにおいて発生したビットエラー数が所定数以上の場合に、リフレッシュ機会近接と判定し、当該物理ブロックのナンバ(物理ブロックアドレス)と、ビットエラー数を、評価用情報テーブル42に追加する。
【0091】
図12に示しているのは、一例として、ビットエラー数が4個以上の場合に、リフレッシュ機会近接と判断して、評価用情報テーブル42を更新する例である。
図12Aは、起動後に行われたアクセスにおいて、物理ブロックPB105、PB8、PB35、PB36において、ビットエラー数が4以上だった場合に、その時点で評価用情報テーブル42に記憶された評価用情報の内容を示している。
その後も、ホスト機器2からのリードコマンドに応じてデータ読出が行われるが、例えば物理ブロックPB210のリード時にビットエラー数が6であったとしたら、その情報が図12Bの斜線部のように評価用情報テーブル42に追加される。以降も同様にビットエラー数の多い物理ブロックの情報が評価用情報として追加される。
【0092】
図12Cは、さらに斜線部の評価用情報が追加され、評価用情報テーブル42のx個の記憶枠が全て埋まった状態を示している。
このような状態になった後のアクセスにより、例えばビットエラー数の多い、物理ブロックが発見されたら、例えば記憶されている評価用情報においてビットエラー数の少ない物理ブロックの内容を書き換えるようにするとよい。
例えば新たに物理ブロックPB511のアクセス時にビットエラー数が6であったとしたら、図12Cの時点の評価用情報テーブル内でビットエラー数が最小の4である物理ブロックPB36を削除し、図12Dの斜線部のように、物理ブロックPB511の評価用情報を記憶させる。
【0093】
このようにすることで評価用情報テーブル42は、リフレッシュ機会近接と推定されるx個以下の物理ブロックが示されることとなる。
起動時には、制御部11は評価用情報テーブル42に挙げられている物理ブロックは、自動的にリフレッシュ機会近接の物理ブロックと判断すれば良い。
なお、ここでは物理ブロックを単位として評価用情報を記憶することとしたが、もちろん評価用情報を生成する単位の「データ」としては、データファイル単位、複数の物理ブロック単位などでもよい。
【0094】
図13、図14で第2の実施の形態の処理を説明する。
なお第2の実施の形態においてデータ状態の変遷は、図6で説明した第1の実施の形態のものと同様であるため、図6を参照しながら説明する。
【0095】
図13はメモリカード1の起動時に制御部11が実行する処理を示している。図2の機能構成に沿っていえば、ステップF201は管理情報処理部33の機能、ステップF202、F203はクローン生成処理部32の機能、ステップF204は管理情報処理部33と評価用情報処理部34の機能により実行される。
【0096】
ステップF201で制御部11は、主副データの一方を破棄する処理を行う。第1の実施の形態の場合と同様、図6の状態ST5,ST6で説明したように副データを破棄する。
このステップF201の処理により、不揮発性メモリ15に記憶された全てのデータは、起動時に図6の状態ST0となる。
【0097】
ステップF202で制御部11は、クローンデータ生成の必要性により、処理を分岐する。この第2の実施の形態の場合、上述したように、評価用情報テーブル42に挙げられているデータ(物理ブロック単位等)があれば、それがリフレッシュ機会近接のデータとされる。即ちステップF202では、制御部11は評価用情報テーブル42に1以上のデータが記憶されているか否かを判定する。
評価用情報テーブル42に1つもデータが挙げられていなければ、ステップF202から図13の処理を終える。これは全てのデータが図6の状態ST1となる場合である。
【0098】
少なくとも1つ以上のデータが評価用情報テーブル42に挙げられていた場合、制御部11はステップF202からF203に進み、クローンデータ生成を行う。即ちリフレッシュ機会近接と判断されていたデータについて、コピーデータを不揮発性メモリ15内の他の領域に生成する。当該データは図6の状態ST2となる。
さらに制御部11は、ステップF204で管理情報の更新及び不要な評価用情報のクリアを行う。第1の実施の形態の図8のステップF105と同様の処理である。
結果として、クローンデータ生成が行われたデータ(例えば物理ブロック単位)は図6の状態ST3となり、他のデータは状態ST1となる。
制御部11は以上の処理を起動時に行った後、ホスト機器2からのコマンドを待機する。
【0099】
図14は、ホスト機器2からのリードコマンドが送信された際の制御部11の処理を示している。
図2の機能構成に即していえば、ステップF251、F259はアクセス制御部31の機能、ステップF252→F255→F257はリフレッシュ制御部35の機能、ステップF252→F255→F256は管理情報処理部33の機能、ステップF253,F254は評価用情報処理部34の機能、ステップF258は管理情報処理部33及び評価用情報処理部34の機能として実行される。
【0100】
ホスト機器2からのリードコマンドがあると、制御部11はステップF251で不揮発性メモリ15へのリードオペレーションを実行する。即ちリードコマンドにおいて論理アドで指定されたデータについて管理情報を参照して物理アドレスに変換し、不揮発性メモリ15の当該物理アドのデータを読み出してバッファRAM14に転送させる。また、制御部11はバッファRAM14に取り込んだデータについて、エラー検出・エラー訂正処理を行う。
【0101】
ここで制御部11はステップF252で、例えばビットエラー数が所定の閾値を超えた数値であったか否か、或いはリード回数が閾値以上となったか否かなどとして、今回のリードデータについて信頼性判断を行う。即ち、即時リフレッシュが必要な程度にまで信頼性が低下しているか否かの判断である。
【0102】
それらの条件に該当せず、信頼性が維持されていると判断された場合は、ステップF253に進む。ここで制御部11は、当該アクセス対象のデータが、近い将来にリフレッシュ機会となるであろう程度に信頼性が低下しているか否かを判定する。
この場合、例えばステップF252の信頼性判断より緩い条件で、信頼性が低下傾向にあるか否かを判断することなどが考えられる。
例えばビットエラー数がp回というのを第1の閾値として、ステップF252の信頼性判断に用いる場合に、q回(但しq<p)というのをリフレッシュ機会近接の判断のための第2の閾値とする。
リード回数や書換回数なども管理しておき、それらについて、即時リフレッシュ必要か否かの信頼性判断よりも緩やかな条件でリフレッシュ機会近接判断にもちいてもよい。
【0103】
アクセス対象のデータについて、リフレッシュ機会近接ではないと判断した場合は、制御部11はそのままステップF259に進み、リードデータをホスト機器2に送信させる。つまりバッファRAM14に取り込み、エラー訂正をしたデータを、デバイスインターフェース13を介してホスト機器2に送信させる。
【0104】
一方、ステップF253でリフレッシュ機会近接と判断した場合は、制御部11は、そのデータに関する評価用情報を評価用情報テーブル42に追加するように、評価用情報テーブル42の更新を行う。即ち、図12で説明した処理である。このステップF254で追加され、その後も評価用情報テーブル42に評価用情報が保持されたデータが、次の起動時に図13のステップF203でのクローンデータ生成対象のデータとなる。
【0105】
一方、ステップF252の時点で信頼性低下、即ち今後の信頼性維持のためにはリフレッシュが必要な状況と判断された場合は、制御部11はステップF255で、現在の主データ、つまり今回読み出したデータが、起動時にクローンデータとして生成したものか、オリジナルデータであるかにより、処理を分岐する。
【0106】
ステップF255の時点で、主データがクローンデータであるのは、図6の状態ST3の場合である。この場合は、制御部11はステップF256に進み、管理情報の更新を行う。この場合は、主データと副データを入れ替えるように管理情報を更新する。従って、起動時のオリジナルデータ側を主データとし、クローンデータ側を副データとする。即ち図6の状態ST4とする。
そしてステップF259でリードデータを転送してアクセスコマンドに対応した処理を終える。この場合、次のリードコマンド発生時には、起動時のオリジナルデータ側が主データとして読み出されることになる。
【0107】
またステップF255で、主データがクローンデータでないのは、図6の状態ST4、又は状態ST1の場合である。
ここで状態ST4となっている場合とは、クローンデータがリフレッシュ必要となった後、さらにオリジナルデータ側までもがリフレッシュ必要な状況に至った場合となる。
そこで、制御部11はステップF257でデータのリフレッシュ動作を実行させる。
そしてリフレッシュ動作に伴って、ステップF258で管理情報と評価用情報を更新する。管理情報については、リフレッシュ動作でコピーした新たなデータを、主データとするように更新する。評価用情報については、今回のリフレッシュ動作により、これまでの評価用情報は不要となるため、これをクリアする。
そしてステップF259でリードデータを転送してアクセスコマンドに対応した処理を終える。
なお、ステップF255の時点で状態ST1であって、主データがクローンデータでないと判断される場合もリフレッシュ動作、及び管理情報の更新と評価用情報のクリアが行われる。
【0108】
制御部11が以上の図13,図14の処理を行うことで、図6で説明した動作であって、かつ評価用情報に追加更新時にリフレッシュ機会近接の判断が行われる第2の実施の形態の動作が実現されることとなる。
【0109】
このような第2の実施の形態では、第1の実施の形態の効果に加え、次の効果が得られる。即ち。第1の実施の形態では、起動時に評価用情報をもとに判断基準値を導き、リフレッシュ機会近接判断を行う例を示したが、第2の実施の形態では、起動時にはこのような判断を全データについて行う必要は無い。従って起動時の制御部11の処理負担が軽減される。
また、リフレッシュ動作が近い将来に必要となる判断(推測)されるデータが存在しない場合には、評価用情報テーブル42には何も評価用情報が記録されない。従って、評価用情報の記録量(サイズ)を絞ることができる。
【0110】
なお、図12では、評価用情報テーブル42において保存する評価用情報の記憶枠をx個としたが、特に制限を設けず、ステップF253でリフレッシュ機会近接と判断されるデータは全て(容量的に可能な限り)評価用情報を保存するようにしてもよい。
また評価用情報の内容としては、図12のような物理ブロックに対応するビットエラー数だけでなく、リード回数、書換回数を用いても良いし、これらを併用してもよい。
さらに、結果的に評価用情報テーブル42に挙げられたデータ(物理ブロック等)を全てクローンデータ生成対象とするのであれば、評価用情報テーブル42には、リード時にリフレッシュ機会近接と判断されたデータの識別情報(例えば物理ブロックアドレス)のみを記憶するようにしても良い。
【0111】
また、アクセス実行毎に、アクセス対象のデータの評価用情報を評価用情報テーブル42に追加することも考えられる。但し、その場合に評価用情報テーブル42に図12のようにx個の記憶枠を設定しておき、図12C→図12Dで説明したように、例えばビットエラー数が多いものが残るように更新していく。もちろんリード回数や書換回数を用いても良い。
すると、評価用情報テーブル42には、アクセス対象となったデータの中で、ビットエラー数が多かったx個のデータが残ることになり、結果的にアクセス時にリフレッシュ機会近接の判断が行われたこととなる。その場合も起動時は、評価用情報テーブル42に挙げられているデータ(物理ブロック)をクローンデータ生成対象とすればよい。
【0112】
もちろん、その場合に、評価用情報テーブル42に残されたデータの内で、所定のビットエラー数以上のデータをクローンデータ生成対象としたり、上位所定数個のデータをクローンデータ生成対象とするなど、評価用情報テーブル42に挙げられた内の一部をクローンデータ生成対象としてもよい。
【0113】
<5.第3の実施の形態>
第3の実施の形態を図15で説明する。図15は図6と同様にデータの変遷を示したものである。
第3の実施の形態は、起動時にクローンデータが生成されたデータについては、当初は、オリジナルデータがアクセス対象となる主データとし、クローンデータがアクセス対象とはならない副データとして管理されるようにする例である。
そして主データ(オリジナルデータ側)がリフレッシュ機会に至った場合、クローンデータがアクセス対象の主データとして管理されるように、上記管理情報を更新する。
【0114】
起動時を状態ST10とする。起動時に、制御部11は各データ単位について、リフレッシュ動作が近く必要になるか否かを判定する。状態ST0におけるデータDTmが、リフレッシュ動作が近く必要に成るデータでは無いと判断したときは、そのまま状態ST11として、その後のリードコマンドに対しては、データDTmがアクセス対象となる。
【0115】
一方、データDTmについて、リフレッシュ機会が近接していると判断される場合は、状態ST12に示すように、クローンデータを生成する。
この第3の実施の形態では、生成したクローンデータを副データとして管理し、主データはオリジナルデータのままである。
従ってその後のリードコマンドに対しては、オリジナルデータであるデータDTmがアクセス対象となる。
オリジナルデータ側は起動時に、リフレッシュ機会近接と判断されたデータであるが、これは、即時リフレッシュが必要とされるレベルではない。従って、まだ正常なデータ読出は十分に可能である。
【0116】
この状態ST12で通常のメモリカード1の動作が継続して行われた後、一旦、メモリカード1の動作がオフとされ、その後起動されたとする。
その場合の起動時は、状態ST14となっている。この場合に、主データと副データの一方を破棄する。
この場合は、主データDTm(オリジナルデータ側)を破棄し、同時に副データDTs(クローンデータ側)を主データDTmに変更するように管理情報を更新することが好ましい。なぜならこの場合では、主データDTm(オリジナルデータ側)は、前回の起動時にリフレッシュ機会近接と判断され、比較的信頼性が低くなっており、一方、副データDTs(クローンデータ側)はフレッシュなデータである。従って、クローンデータ側を残した方が、信頼性の点でも、また当該データについてリフレッシュ機会を遠ざけるためにも、好適と考えられるためである。換言すれば、この場合の管理情報の更新は、リフレッシュを行ったのと同等な状態となる。
【0117】
なお、この場合に副データDTs(クローンデータ側)を破棄することとすることも考えられないわけではない。その場合は、今回の起動時に、主データDTm(オリジナルデータ側)はリフレッシュ機会近接としてクローンデータ生成対象となる。
【0118】
ところで、上記のように状態ST12で通常のメモリカード1の動作が継続して行われた場合において、或る時点でのデータDTm(オリジナルデータ側)のリードの際に、即時リフレッシュが必要と判断されることがある。
その場合は、状態ST13として示すように、主データと副データを入れ替えるように管理情報を更新する。この場合、オリジナルデータが主データとされていたところを、クローンデータが主データとされるように管理情報を更新する。
従って、その後のリード機会が発生すると、クローンデータ側がアクセスされることとなる。
即ち、この場合、オリジナルデータが、フレッシュ必要の状態にまで信頼性が悪化したときに、リード対象をクローンデータに置き換えることで、即時のリフレッシュを行う必要性を解消するという意味を持つ。
【0119】
この状態ST13で通常のメモリカード1の動作が継続して行われた後、オフとされ、さらにその後メモリカード1が起動された場合は、状態ST15となっている。この場合も、主データと副データの一方を破棄(消去)する。そして状態ST0に戻り、上記同様の処理を行う。
この場合は、この時点での副データ(オリジナルデータ側)を破棄することが適切である。オリジナルデータ側は、前回の起動中にリフレッシュ必要と判断されたデータだからである。
【0120】
上記の状態ST13で、通常のメモリカード1の動作が継続して行われた場合において、或る時点でのデータDTm(この場合クローンデータ側)のリードの際に、即時リフレッシュが必要と判断されることがある。
その場合は、信頼性低下に対処するため、データDTmについてのリフレッシュ動作を行う。
状態ST13としては、フレッシュなクローンデータ側が主データDTmとされたものであるため、状態ST13において即時リフレッシュ必要となることは希である。従って、実際上、リフレッシュ動作を実行する機会は殆ど無いと言える。但し、皆無では無いため、その場合の補償として、リフレッシュ動作が用意される。
【0121】
リフレッシュ動作が行われた後は、状態ST13に戻ると考えれば良い。但しその場合のデータDTmは、信頼性が回復されている。
その後、メモリカード1の動作がオフとされ、さらにその後メモリカード1が起動された場合は、状態ST15となっている。この場合も、副データDTsを破棄(消去)することが適切である。この場合の副データDTsとは、前回の起動中にリフレッシュ必要と判断されたオリジナルデータ側のデータだからである。
そして状態ST0に戻り、上記同様の処理を行う。
【0122】
第3の実施の形態では、概略以上のようにデータDTが変遷し、これによって信頼性の維持と、リフレッシュ動作の最小限化によるアクセス時間の減少、安定化が実現できる。
この第3の実施の形態のための制御部11の処理は、基本的には図8,図9のとおりであるが、詳細な点として、以下の点を異なるようにすればよい。
【0123】
まず図8のステップF101では、図15の状態ST14の場合は主データDTmを破棄し、状態ST15の場合は副データDTsを破棄することとする。
ステップF105では、管理情報の更新は、生成したクローンデータを副データDTsとして管理するように更新すればよい。
また評価用情報については次のようにする。
状態ST14→ST10と遷移した場合は、主データDTmは前回起動時に作成されたクローンデータであり、そのクローンデータについてはまだリードされていない。従って、当該データに関してはそれまでの評価用情報はクリアすれば良い。
状態ST15→ST10と遷移した場合であって、リフレッシュが行われていない場合は、主データDTmは、前回起動時に作成されたクローンデータである。しかしそのクローンデータについてはリードされている可能性がある。従って、当該データに関してはそれまでの評価用情報は維持するとよい。
【0124】
図9のステップF155では、図15の状態ST12からST13に遷移する処理となるが、従って管理情報の更新とは、オリジナルデータ側を副データDTsとし、クローンデータ側を主データDTmとする処理とすればよい。
【0125】
<6.変形例>
以上、実施の形態について説明してきたが、本開示の技術には次のような変形例も考えられる。
第3の実施の形態では、第1の実施の形態と同様に、起動時に各データについてリフレッシュ機会近接の判断を行うようにしたが、第2の実施の形態のように、リード時に、そのデータについてのリフレッシュ機会近接の判断を行って評価用情報を記憶するような処理を適用することもできる。
【0126】
評価用情報の内容としては、ビットエラー数、リード回数、書換回数などとしたが、他の例も考えられる。
またビットエラー数、リード回数、書換回数などのそれぞれに異なる重みづけを与えたうえで、それらのデータから、リフレッシュ機会近接の判断の指標を求めてもよい。
【0127】
実施の形態では、クローンデータ生成を起動時に行うとしたが、起動時以外に行うことも考えられる。例えば動作をオフとする際や、メモリカード1の取り外し時などに行うことも可能である。
【0128】
また実施の形態ではメモリカード1の例を挙げたが、不揮発性メモリ15と、制御部11が別体の構成の場合でも本開示の技術は適用可能である。例えば不揮発性メモリに対しての読出・書込アクセスを制御する制御装置としても実現できる。
本開示の技術は、各種メモリカード、SSD、eMMCなどに適用できる。
【0129】
なお本技術は以下のような構成も採ることができる。
(1)不揮発性メモリに記憶されたデータであって、リフレッシュ必要性に関する評価用情報に基づいてリフレッシュ機会が近接していると判定されるデータについて、該データをオリジナルデータとして、オリジナルデータと同一のクローンデータを、上記不揮発性メモリ内に生成する処理を行うクローン生成処理部と、
上記オリジナルデータと上記クローンデータのいずれか一方が、アクセス実行の際のアクセス対象となるように、管理情報を更新する管理情報処理部と、
上記不揮発性メモリに記憶されたデータのアクセス時に、該データについての上記評価用情報を生成する評価用情報処理部と、
を備えた制御装置。
(2)上記管理情報処理部は、上記クローンデータが生成されたデータについては、上記クローンデータがアクセス対象となる主データとし、上記オリジナルデータがアクセス対象とはならない副データとして管理されるように、上記管理情報を更新する上記(1)に記載の制御装置。
(3)上記主データがリフレッシュ機会に至ったと判断される場合、上記管理情報処理部は、上記オリジナルデータがアクセス対象の主データとして管理されるように、上記管理情報を更新する上記(2)に記載の制御装置。
(4)上記オリジナルデータが上記主データとされた後、該主データがリフレッシュ機会に至ったと判断される場合に、上記オリジナルデータについてのリフレッシュ動作制御を行うリフレッシュ制御部を、さらに備える上記(3)に記載の制御装置。
(5)上記管理情報処理部は、上記不揮発性メモリの起動時において、上記クローンデータが生成されているデータについて、上記主データ又は上記副データの一方が破棄されるように、上記管理情報を更新する上記(2)乃至(4)のいずれかに記載の制御装置。
(6)上記評価用情報処理部は、上記クローン生成処理部が上記クローンデータの生成処理を行ったデータに関する上記評価用情報をクリアする上記(2)乃至(5)のいずれかに記載の制御装置。
(7)上記クローン生成処理部は、上記不揮発性メモリの起動時に、不揮発性メモリに記憶されたデータについて、上記評価用情報に基づいてリフレッシュ機会が近接しているか否かを判定し、リフレッシュ機会が近接していると判定したデータについて、上記クローンデータの生成処理を行う上記(1)乃至(6)のいずれかに記載の制御装置。
(8)上記評価用情報処理部は、上記不揮発性メモリに記憶されたデータのアクセス時に、該データについて、リフレッシュ機会が近接しているか否かを判定し、リフレッシュ機会が近接していると判定した場合に、該データについての上記評価用情報を生成し、
上記クローン生成処理部は、上記不揮発性メモリの起動時に、上記評価用情報に基づいて、リフレッシュ機会が近接していると判定されたデータについて、上記クローンデータの生成処理を行う上記(1)乃至(6)のいずれかに記載の制御装置。
(9)上記管理情報処理部は、上記クローンデータが生成されたデータについては、上記オリジナルデータがアクセス対象となる主データとし、上記クローンデータがアクセス対象とはならない副データとして管理されるように、上記管理情報を更新する上記(1)に記載の制御装置。
(10)上記主データがリフレッシュ機会に至った場合、上記管理情報処理部は、上記クローンデータがアクセス対象の主データとして管理されるように、上記管理情報を更新する上記(9)に記載の制御装置。
(11)上記管理情報処理部は、上記不揮発性メモリの起動時において、上記クローンデータが生成されているデータについて、上記主データ又は上記副データの一方が破棄されるように、上記管理情報を更新する上記(9)又は(10)に記載の制御装置。
(12)上記評価用情報は、所定データ単位についての、ビットエラー発生数、読出回数、消去回数の、少なくとも1つを含む上記(1)乃至(11)のいずれかに記載の制御装置。
【符号の説明】
【0130】
1 メモリカード、2 ホスト機器、11 制御部、12 SRAM、13 デバイスインターフェース、14 バッファRAM、15 不揮発性メモリ
【特許請求の範囲】
【請求項1】
不揮発性メモリに記憶されたデータであって、リフレッシュ必要性に関する評価用情報に基づいてリフレッシュ機会が近接していると判定されるデータについて、該データをオリジナルデータとして、オリジナルデータと同一のクローンデータを、上記不揮発性メモリ内に生成する処理を行うクローン生成処理部と、
上記オリジナルデータと上記クローンデータのいずれか一方が、アクセス実行の際のアクセス対象となるように、管理情報を更新する管理情報処理部と、
上記不揮発性メモリに記憶されたデータのアクセス時に、該データについての上記評価用情報を生成する評価用情報処理部と、
を備えた制御装置。
【請求項2】
上記管理情報処理部は、上記クローンデータが生成されたデータについては、上記クローンデータがアクセス対象となる主データとし、上記オリジナルデータがアクセス対象とはならない副データとして管理されるように、上記管理情報を更新する請求項1に記載の制御装置。
【請求項3】
上記主データがリフレッシュ機会に至ったと判断される場合、上記管理情報処理部は、上記オリジナルデータがアクセス対象の主データとして管理されるように、上記管理情報を更新する請求項2に記載の制御装置。
【請求項4】
上記オリジナルデータが上記主データとされた後、該主データがリフレッシュ機会に至ったと判断される場合に、上記オリジナルデータについてのリフレッシュ動作制御を行うリフレッシュ制御部を、さらに備える請求項3に記載の制御装置。
【請求項5】
上記管理情報処理部は、上記不揮発性メモリの起動時において、上記クローンデータが生成されているデータについて、上記主データ又は上記副データの一方が破棄されるように、上記管理情報を更新する請求項2に記載の制御装置。
【請求項6】
上記評価用情報処理部は、上記クローン生成処理部が上記クローンデータの生成処理を行ったデータに関する上記評価用情報をクリアする請求項2に記載の制御装置。
【請求項7】
上記クローン生成処理部は、上記不揮発性メモリの起動時に、不揮発性メモリに記憶されたデータについて、上記評価用情報に基づいてリフレッシュ機会が近接しているか否かを判定し、リフレッシュ機会が近接していると判定したデータについて、上記クローンデータの生成処理を行う請求項1に記載の制御装置。
【請求項8】
上記評価用情報処理部は、上記不揮発性メモリに記憶されたデータのアクセス時に、該データについて、リフレッシュ機会が近接しているか否かを判定し、リフレッシュ機会が近接していると判定した場合に、該データについての上記評価用情報を生成し、
上記クローン生成処理部は、上記不揮発性メモリの起動時に、上記評価用情報に基づいて、リフレッシュ機会が近接していると判定されたデータについて、上記クローンデータの生成処理を行う請求項1に記載の制御装置。
【請求項9】
上記管理情報処理部は、上記クローンデータが生成されたデータについては、上記オリジナルデータがアクセス対象となる主データとし、上記クローンデータがアクセス対象とはならない副データとして管理されるように、上記管理情報を更新する請求項1に記載の制御装置。
【請求項10】
上記主データがリフレッシュ機会に至った場合、上記管理情報処理部は、上記クローンデータがアクセス対象の主データとして管理されるように、上記管理情報を更新する請求項9に記載の制御装置。
【請求項11】
上記管理情報処理部は、上記不揮発性メモリの起動時において、上記クローンデータが生成されているデータについて、上記主データ又は上記副データの一方が破棄されるように、上記管理情報を更新する請求項8に記載の制御装置。
【請求項12】
上記評価用情報は、所定データ単位についての、ビットエラー発生数、読出回数、消去回数の、少なくとも1つを含む請求項1に記載の制御装置。
【請求項13】
不揮発性メモリと、
上記不揮発性メモリに記憶されたデータであって、リフレッシュ必要性に関する評価用情報に基づいてリフレッシュ機会が近接していると判定されるデータについて、該データをオリジナルデータとして、オリジナルデータと同一のクローンデータを、上記不揮発性メモリ内に生成する処理を行うクローン生成処理部と、
上記オリジナルデータと上記クローンデータのいずれか一方が、アクセス実行の際のアクセス対象となるように、管理情報を更新する管理情報処理部と、
上記不揮発性メモリに記憶されたデータのアクセス時に、該データについての上記評価用情報を生成する評価用情報処理部と、
を備えた記憶装置。
【請求項14】
不揮発性メモリに記憶されたデータであって、リフレッシュ必要性に関する評価用情報に基づいてリフレッシュ機会が近接していると判定されるデータについて、該データをオリジナルデータとして、オリジナルデータと同一のクローンデータを、上記不揮発性メモリ内に生成する処理を行うクローン生成ステップと、
上記オリジナルデータと上記クローンデータのいずれか一方が、アクセス実行の際のアクセス対象となるように、管理情報を更新する管理情報処理ステップと、
上記不揮発性メモリに記憶されたデータのアクセス時に、該データについての上記評価用情報を生成する評価用情報処理ステップと、
を備えた制御方法。
【請求項1】
不揮発性メモリに記憶されたデータであって、リフレッシュ必要性に関する評価用情報に基づいてリフレッシュ機会が近接していると判定されるデータについて、該データをオリジナルデータとして、オリジナルデータと同一のクローンデータを、上記不揮発性メモリ内に生成する処理を行うクローン生成処理部と、
上記オリジナルデータと上記クローンデータのいずれか一方が、アクセス実行の際のアクセス対象となるように、管理情報を更新する管理情報処理部と、
上記不揮発性メモリに記憶されたデータのアクセス時に、該データについての上記評価用情報を生成する評価用情報処理部と、
を備えた制御装置。
【請求項2】
上記管理情報処理部は、上記クローンデータが生成されたデータについては、上記クローンデータがアクセス対象となる主データとし、上記オリジナルデータがアクセス対象とはならない副データとして管理されるように、上記管理情報を更新する請求項1に記載の制御装置。
【請求項3】
上記主データがリフレッシュ機会に至ったと判断される場合、上記管理情報処理部は、上記オリジナルデータがアクセス対象の主データとして管理されるように、上記管理情報を更新する請求項2に記載の制御装置。
【請求項4】
上記オリジナルデータが上記主データとされた後、該主データがリフレッシュ機会に至ったと判断される場合に、上記オリジナルデータについてのリフレッシュ動作制御を行うリフレッシュ制御部を、さらに備える請求項3に記載の制御装置。
【請求項5】
上記管理情報処理部は、上記不揮発性メモリの起動時において、上記クローンデータが生成されているデータについて、上記主データ又は上記副データの一方が破棄されるように、上記管理情報を更新する請求項2に記載の制御装置。
【請求項6】
上記評価用情報処理部は、上記クローン生成処理部が上記クローンデータの生成処理を行ったデータに関する上記評価用情報をクリアする請求項2に記載の制御装置。
【請求項7】
上記クローン生成処理部は、上記不揮発性メモリの起動時に、不揮発性メモリに記憶されたデータについて、上記評価用情報に基づいてリフレッシュ機会が近接しているか否かを判定し、リフレッシュ機会が近接していると判定したデータについて、上記クローンデータの生成処理を行う請求項1に記載の制御装置。
【請求項8】
上記評価用情報処理部は、上記不揮発性メモリに記憶されたデータのアクセス時に、該データについて、リフレッシュ機会が近接しているか否かを判定し、リフレッシュ機会が近接していると判定した場合に、該データについての上記評価用情報を生成し、
上記クローン生成処理部は、上記不揮発性メモリの起動時に、上記評価用情報に基づいて、リフレッシュ機会が近接していると判定されたデータについて、上記クローンデータの生成処理を行う請求項1に記載の制御装置。
【請求項9】
上記管理情報処理部は、上記クローンデータが生成されたデータについては、上記オリジナルデータがアクセス対象となる主データとし、上記クローンデータがアクセス対象とはならない副データとして管理されるように、上記管理情報を更新する請求項1に記載の制御装置。
【請求項10】
上記主データがリフレッシュ機会に至った場合、上記管理情報処理部は、上記クローンデータがアクセス対象の主データとして管理されるように、上記管理情報を更新する請求項9に記載の制御装置。
【請求項11】
上記管理情報処理部は、上記不揮発性メモリの起動時において、上記クローンデータが生成されているデータについて、上記主データ又は上記副データの一方が破棄されるように、上記管理情報を更新する請求項8に記載の制御装置。
【請求項12】
上記評価用情報は、所定データ単位についての、ビットエラー発生数、読出回数、消去回数の、少なくとも1つを含む請求項1に記載の制御装置。
【請求項13】
不揮発性メモリと、
上記不揮発性メモリに記憶されたデータであって、リフレッシュ必要性に関する評価用情報に基づいてリフレッシュ機会が近接していると判定されるデータについて、該データをオリジナルデータとして、オリジナルデータと同一のクローンデータを、上記不揮発性メモリ内に生成する処理を行うクローン生成処理部と、
上記オリジナルデータと上記クローンデータのいずれか一方が、アクセス実行の際のアクセス対象となるように、管理情報を更新する管理情報処理部と、
上記不揮発性メモリに記憶されたデータのアクセス時に、該データについての上記評価用情報を生成する評価用情報処理部と、
を備えた記憶装置。
【請求項14】
不揮発性メモリに記憶されたデータであって、リフレッシュ必要性に関する評価用情報に基づいてリフレッシュ機会が近接していると判定されるデータについて、該データをオリジナルデータとして、オリジナルデータと同一のクローンデータを、上記不揮発性メモリ内に生成する処理を行うクローン生成ステップと、
上記オリジナルデータと上記クローンデータのいずれか一方が、アクセス実行の際のアクセス対象となるように、管理情報を更新する管理情報処理ステップと、
上記不揮発性メモリに記憶されたデータのアクセス時に、該データについての上記評価用情報を生成する評価用情報処理ステップと、
を備えた制御方法。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【公開番号】特開2012−238259(P2012−238259A)
【公開日】平成24年12月6日(2012.12.6)
【国際特許分類】
【出願番号】特願2011−108095(P2011−108095)
【出願日】平成23年5月13日(2011.5.13)
【出願人】(000002185)ソニー株式会社 (34,172)
【Fターム(参考)】
【公開日】平成24年12月6日(2012.12.6)
【国際特許分類】
【出願日】平成23年5月13日(2011.5.13)
【出願人】(000002185)ソニー株式会社 (34,172)
【Fターム(参考)】
[ Back to top ]