(58)【調査した分野】(Int.Cl.,DB名)
前記制御手段は、前記ホスト装置からのデータ読出し要求に応じて、前記ブロック集合の構成要素のうち最後に前記書込みデータの書込みが実行されたブロックに書込まれていた前記書込みデータを読み出す読出し処理を実行する
ことを特徴とする請求項1に記載の記憶装置。
前記制御手段が前記第3書込み処理を開始してから前記第2書込み処理を終了するまでの期間を除く所定のタイミングにおいて、前記書込みフラグが書込まれておらず、かつ前記消去中フラグが書込まれている前記ブロックである消去中示唆ブロックを検出する検出手段(11)を備え、
前記制御手段は、前記検出手段により前記ブロックが検出されたときには、該検出されたブロックをブロックBRp(pは1以上n以下の整数)としたときに、該ブロックBRpの前記対象ブロックであるブロックBRqに書込まれていた前記書込みデータ及び前記書込みフラグを含むデータを消去する処理を実行し、該処理の後に前記ブロック集合の構成要素である各ブロックのうち前記ブロックBRqを除く前記ブロックのいずれかに書込まれている前記書込みデータを前記ブロックBRqに書込み、その後に前記ブロックBRpに前記書込みフラグを書込む処理を実行する
ことを特徴とする請求項3に記載の記憶装置。
ブロック単位でデータの消去が行われ、該ブロックよりも小さい単位でデータの書込みが行われるブロック(31)を複数備えるフラッシュメモリ(21)における前記ブロックに書込まれたデータの読出しと、前記ブロックへのデータの書込みと、を実行する制御手段(11)と、
前記フラッシュメモリの備える前記複数のブロックを、n個(nは2以上の整数)の前記ブロックBR1〜BRnを構成要素とするブロック集合として少なくとも1つ設定する設定手段(11)と、を備え、
前記制御手段は、前記ブロック集合の構成要素である各ブロックBRi(iは1以上n以下の各整数)に対してホスト装置からの要求に応じて書込まれるデータである書込みデータを書込む第1書込み処理(S6)と、前記ブロックBRiに対して、前記ブロック集合の構成要素のうちブロックBRiに予め対応付けられたブロックである対象ブロックBRj(jは1以上n以下のi以外の整数であって、iの値ごとに異なる整数)にて前記書込みデータの書込みが実行されたことを示す書込みフラグを書込む第2書込み処理(S7)と、が実行可能であり、
また前記制御手段は、前記ホスト装置からの新たな書込みデータの書込み要求に応じて、前記ブロック集合の構成要素のうち最後に前記書込みデータの書込みが実行されたブロックをブロックBRk(kは1以上n以下の整数)としたときに、該ブロックBRkの次に前記書込みデータの書込みを実行するブロックとして設定されているブロックBRl(lは1以上n以下の整数)に書込まれていた前記書込みデータ及び前記書込みフラグを含むデータを消去する消去処理(S5)と、前記ブロックBRlに対する前記第1書込み処理と、前記対象ブロックとして前記ブロックBRlが対応付けされているブロックBRmに対する前記第2書込み処理と、を実行する
ことを特徴とするフラッシュメモリ制御装置。
【発明の概要】
【発明が解決しようとする課題】
【0007】
上記特許文献1の装置は、再編処理自体は必要となるため、再編処理によって処理負荷が増大する期間が長くなるとシステム全体としてのパフォーマンスを低下させてしまう可能性がある。
【0008】
本発明の目的は、処理負荷の増大を抑制できる記憶装置、フラッシュメモリ制御装置、及びプログラムを提供することである。
【課題を解決するための手段】
【0009】
上述した課題を解決するためになされた請求項1に記載の発明は、ブロック単位でデータの消去が行われ、該ブロックよりも小さい単位でデータの書込みが行われるブロック(31)を複数備えるフラッシュメモリ(21)と、上記ブロックに書込まれたデータの読出しと、上記ブロックへのデータの書込みと、を実行する制御手段(11)と、を備える記憶装置(1)である。
【0010】
この記憶装置における上記フラッシュメモリには、n個(nは2以上の整数)のブロックBR
1〜BR
nを構成要素とするブロック集合(37)が少なくとも1つ設定されている。
【0011】
またブロック集合の構成要素である各ブロックBR
i(iは1以上n以下の各整数)には、書込みデータと、書込みフラグと、が書込み可能である。書込みデータとは、ホスト装置(3)からの要求に応じて書込まれるデータである。書込みフラグとは、ブロック集合の構成要素のうちブロックBR
iに予め対応付けられたブロックである対象ブロックBR
j(jは1以上n以下のi以外の整数であって、iの値ごとに異なる整数)にて上記書込みデータの書込みが実行されたことを示すフラグである。
【0012】
そして上記制御手段は、ホスト装置からの新たな書込みデータの書込み要求に応じて、ブロック集合の構成要素のうち最後に書込みデータの書込みが実行されたブロックをブロックBR
k(kは1以上n以下の整数)としたときに、該ブロックBR
kの次に前記書込みデータの書込みを実行するブロックとして設定されているブロックBR
l(lは1以上n以下の整数)に書込まれていた書込みデータ及び書込みフラグを含むデータを消去する消去処理(S5)と、ブロックBR
lに新たな書込みデータを書込む第1書込み処理(S6)と、対象ブロックとしてブロックBR
lが対応付けされているブロックBR
mに上記書込みフラグを書込む第2書込み処理(S7)と、を実行する。
【0013】
このように構成された記憶装置は、ホスト装置から書込み要求を受けるとブロック集合内において最も書込みタイミングの古いブロックに書込まれたデータを消去してそのブロックに新しい書込みデータを書込む。
【0014】
ここで、消去及び書込みを実行すべきブロックがどのブロックであるかは、ブロック集合の構成要素である各ブロックの書込みフラグをチェックすることで確認が可能である。最後に書込まれたブロックがどのブロックであるかによって、当該ブロック集合における書込みフラグの書込まれた状況が変化するためである。
【0015】
よって上記記憶装置では、再編処理にて行われるコピー処理が不要になり、再編処理に伴う処理負荷の増大、いわゆるオーバーヘッドの発生を抑制できる。それにより、オーバーヘッドの発生に伴うシステム全体のパフォーマンス低下やデータアクセスのレスポンス低下の発生を抑制できる。
【0016】
上述した対象ブロックBR
jについて、jは1以上n以下のi以外の整数であって、iの値ごとに異なる整数であるが、これは即ち、ブロック集合の各ブロックは、ブロック集合における他のいずれかのブロックに対象ブロックとして対応付けられているということになる。
【0017】
対象ブロックのより具体的な例としては、変数jはi+aをnで除算したときの剰余に1を加算した整数とすることができる。aとは0以上n−2以下の整数である。
なお本発明においては、ブロックの関係をi,j,k,l,m,p,qなどの変数を用いて説明しているが、数値自体は発明の説明のために用いているものであり、各ブロックが実質的に上記変数を用いて説明される関係を満たしていればよい。
【0018】
また上述した課題を解決するためになされた請求項5に記載の発明は、ブロック単位でデータの消去が行われ、該ブロックよりも小さい単位でデータの書込みが行われるブロック(31)を複数備えるフラッシュメモリ(21)における上記ブロックに書込まれたデータの読出しと、上記ブロックへのデータの書込みと、を実行する制御手段(11)と、フラッシュメモリの備える複数のブロックを、n個(nは2以上の整数)のブロックBR
1〜BR
nを構成要素とするブロック集合(37)として少なくとも1つ設定する設定手段(11)と、を備えるフラッシュメモリ制御装置である。
【0019】
このフラッシュメモリ制御装置において、上記制御手段は、上記ブロック集合の構成要素である各ブロックBR
i(iは1以上n以下の各整数)に対してホスト装置(3)からの要求に応じて書込まれるデータである書込みデータを書込む第1書込み処理(S6)と、ブロックBR
iに対して、ブロック集合の構成要素のうちブロックBR
iに予め対応付けられたブロックである対象ブロックBR
j(jは1以上n以下のi以外の整数であって、iの値ごとに異なる整数)にて上記書込みデータの書込みが実行されたことを示す書込みフラグを書込む第2書込み処理(S7)と、が実行可能である。
【0020】
また上記制御手段は、ホスト装置からの新たな書込みデータの書込み要求に応じて、ブロック集合の構成要素のうち最後に書込みデータの書込みが実行されたブロックをブロックBR
k(kは1以上n以下の整数)としたときに、該ブロックBR
kの次に前記書込みデータの書込みを実行するブロックとして設定されているブロックBR
l(lは1以上n以下の整数)に書込まれていた書込みデータ及び書込みフラグを含むデータを消去する消去処理(S5)と、ブロックBR
lに対する上記第1書込み処理と、対象ブロックとしてブロックBR
lが対応付けされているブロックBR
mに対する上記第2書込み処理と、を実行する。
【0021】
このように構成されたフラッシュメモリ制御装置では、上述した請求項1の記憶装置と同様に、再編処理にて行われるコピー処理が不要になり、再編処理に伴う処理負荷の増大、いわゆるオーバーヘッドの発生を抑制でき、それに伴うシステム全体のパフォーマンス低下やデータアクセスのレスポンス低下の発生を抑制できる。
【0022】
また上述した課題を解決するためになされた請求項6に記載の発明は、上述した請求項5に記載のフラッシュメモリ制御装置の制御手段及び設定手段としてコンピュータを機能させるためのプログラム(15a)である。
【0023】
このようなプログラムであれば、コンピュータを請求項5に記載のフラッシュメモリ制御装置として機能させることができる。
なお、この欄及び特許請求の範囲に記載した括弧内の符号は、一つの態様として後述する実施形態に記載の具体的手段との対応関係を示すものであって、本発明の技術的範囲を限定するものではない。
【発明を実施するための形態】
【0025】
以下に本発明の実施形態を図面と共に説明する。
[実施形態]
(1)全体構成
図1は、フラッシュメモリを搭載してなる記憶装置1の全体構成を示すブロック図である。記憶装置1は、CPU11、RAM13、ROM15、フラッシュ(Flash)コントローラ17、入出力インターフェース(I/O)19、フラッシュメモリ21を備え、内部バス23を介してデータの送受信を行う。また電源25より各部に電力が供給される。
【0026】
記憶装置1は車両に搭載されて用いられる情報処理システムの一部を構成する装置であり、ホスト装置3の一例である車両のドアECUからのアクセス(データの書込み又は読出し)要求に応じて、ドアの開閉回数を示すデータをドアECUから取得して書込む。なおホスト装置3としては車両の様々なECUを採用できる。もちろん記憶装置1が車両に搭載されて用いられる装置である必要はなく、車載機器以外でも様々な情報処理装置がホスト装置3となりうる。
【0027】
CPU11は、ROM15に記憶されている複数のプログラム15a(Flashドライバソフト及び複数のアプリケーションソフト)に従って、記憶装置1を統括制御するものであり、ホスト装置3からのフラッシュメモリ21へのアクセス要求に応じて、フラッシュメモリ21に対するデータの書込み及び読出しを制御する。
【0028】
ホスト装置3からの要求に応じてフラッシュメモリ21に書込まれるデータを、便宜上、書込みデータと記載する。書込みデータはホスト装置3からの要求に応じて読み出されるデータでもある。なお書込みを要求するホスト装置と読出しを要求するホスト装置は同一の装置でなくともよい。
【0029】
RAM13はCPU11により使用される作業領域である。またRAM13はフラッシュメモリ21から読み出された書込みデータ及びフラッシュメモリ21に書込むべき書込みデータを一時的に保持するバッファとして機能する。
【0030】
フラッシュコントローラ17は、CPU11から与えられる指令に基づいてフラッシュメモリ21に対する書込み処理、読出し処理、消去処理等の処理を実行する。
フラッシュメモリ21は、最小消去単位であるブロック31を1024個有している。
【0031】
ブロック31は、1ブロックあたりの容量が32バイトである比較的小さいブロックであり、追記書込みによるデータの記憶の最小単位は2バイトである。またブロックの個数が1024であるため総記憶領域は32キロバイトとなる。なお、ブロック31の記憶容量、書込みのサイズ及びフラッシュメモリ21に設けられる個数は上述したものに限定されない。
【0032】
本実施形態におけるフラッシュメモリ21への書込み制御の方法を、ブロック31を模式的に示す
図2を用いて説明する。
フラッシュメモリ21には、3つのブロック31(BR
1〜BR
3)を構成要素とするブロック集合37が複数設定されている。なおブロックBR
1〜BR
3はブロック集合37内の各ブロック31を識別する符号であり、複数のブロック集合37それぞれにブロックBR
1〜BR
3が含まれる。
【0033】
ブロック集合37の構成要素である各ブロックBR
i(iは1以上3以下の各整数)は、上述した書込みデータを書込み可能な記憶領域であるデータ部33と、書込みフラグ及び消去中フラグを書込み可能な記憶領域であるフラグ部35と、を有している。
【0034】
書込みフラグとは、ブロック集合37の構成要素のうちブロックBR
iに予め対応付けられたブロックである対象ブロックBR
j(jはiを3で除算したときの剰余に1を加算した整数)にて書込みデータの書込みが実行されたことを示すフラグである。また消去中フラグとは、対象ブロックBR
j(以降、単に対象ブロックとも記載する)に書込まれたデータを消去する処理が開始されたことを示すフラグである。以降、書込みフラグ及び消去中フラグを合せて管理フラグと記載する。
【0035】
次に、ブロックBR
iに書込まれた管理フラグが示す対象ブロックBR
jの情報について説明する。
図2に示すIDxのブロック集合37において矢印で示すように、ブロックBR
iのフラグ部35に書込まれる管理フラグは対象ブロックBR
jに関する情報を示している(対象ブロックBR
jの状態を監視している)。ブロックBR
iはそれぞれ異なる対象ブロックBR
jに関する情報を示す管理フラグが書込み可能であり、それらが順番にローテーションして循環するようになっている。
【0036】
ブロック31には、
図3に示すように、フラグ部35として書込みフラグ(F)及び消去中フラグ(M)を書込むデータ領域が設けられている。対象ブロックの書込みデータの情報はこれらのフラグの組み合わせにより示される。なおブロック31は上書きすることができない特徴を有しているため、フラグのみを更新することはできない。各ブロックが最小消去単位であるため、ブロックに記憶されたデータを消去することでフラグも消去される。
【0037】
管理フラグにより示される情報は、管理フラグが書込まれていない初期状態(以降「−」と記載する)と、対象ブロックの消去処理が開始されてから書込みデータの書込みが完了する前の状態である「消去中」と、対象ブロックへの書込みデータの書込みが完了した状態である「書込み済」と、の3つである。
【0038】
具体的には、M=blank,F=blank(blankは、フラッシュコントローラ17によりブロックの消去が実行された状態の初期値)のときは「−」であり、消去中フラグ(M)のみが書込まれた状態、即ちM=非blank,F=blankのときは「消去中」である。
【0039】
また、消去中フラグ(M)と書込みフラグ(F)の両方が書込まれた状態、即ちM=非blank,F=非blankのときは「書込み済」である。なお、少なくともM,Fそれぞれの1書込み単位分の合計4バイト(2バイト+2バイト)で管理フラグを示すことができる。
【0040】
説明を
図2に戻る。各ブロック集合37にはIDが与えられており、ブロック集合37の構成要素である3つのブロック31がそのIDに紐付けられている。例えば
図2では、ID1〜IDxまでのブロック集合37が存在しており、各ブロック集合37は3つのブロック31により構成される。
【0041】
1つのブロック集合37には3つのブロック31が存在するため、データ部33も3つ存在する。ホスト装置3は、1つのブロック集合37を1つのブロック31と同じ容量の書込みデータが書込み可能である記憶領域として扱う。CPU11は、ホスト装置3からの書込み又は読出しの要求に含まれるID情報に基づいてブロック集合37を特定し、そのブロック集合37のいずれかのブロック31を対象とした書込みデータの書込み又は読出しを実行する。
【0042】
なお、各ブロック31の識別情報(各ブロック31の属するブロック集合37のID情報及びブロック集合内で該ブロックを識別するための情報)と、各ブロック31の物理アドレスと、の関係は、図示しない変換テーブルに記憶されている。なお識別情報と物理アドレスの関係は例えばブロックの状態に応じて変更可能に構成されていてもよい。
【0043】
(2)CPU11による処理
(2.1)データ書込み処理
図4に示すフローチャートに基づいて、CPU11によるブロック集合37へのデータ書込み処理の処理手順を説明する。
【0044】
まずステップ1(以降ステップをSと記載する)では、CPU11は更新要求が発生したか否かを判断する。具体的には、ホスト装置3からデータの書込みを要求するコマンドを受信したとき、いわゆる書込みのアクセスがあったときに更新要求が発生したと判断する。
【0045】
次のS2では、CPU11はS1にて発生した更新要求のID(例えばIDx)と紐づくブロック集合37を検索する。ホスト装置3からのデータ書込み要求のコマンドにはID情報が含まれており、CPU11はそのIDのブロック集合37を検索する。なお上記コマンドにはID情報は含まれておらず、CPU11は書込み要求の種類(ホスト装置の種類、又は書込みデータの種類)に応じて予め定められたIDのブロック集合を検索する構成であってもよい。
【0046】
次のS3では、S2で検索したブロック集合37内の更新最古のブロック31を特定する。ブロック集合37内の全てのブロック31に書込まれた管理フラグをチェックすることで、更新最古のブロック、即ち書込みデータが書込まれたタイミングが最も古いブロックを特定することができる。
【0047】
図5及び
図6における(i)は更新要求が発生していない状態である通常状態を示している。また(ii)〜(vi)は上記(i)の時間経過に伴う変化を示している。
図5と
図6とで同一の番号(i)〜(vi)が付いている図は同一の状態を示している。
【0048】
図5の(i)において、ブロックBR
1,ブロックBR
2に書込まれた管理フラグは「書込み済」を示しており、ブロックBR
3に書込まれた管理フラグは「−」を示している。管理フラグが「−」を示しているブロックが更新最新のブロック、即ち書込みデータが書込まれたタイミングが最も新しいブロックであり、更新最新のブロックBR
3のローテーションに従った次のブロックBR
1がブロック集合37のうち更新最古のブロック(即ち、ブロックBR
3の次に書込みデータの書込みを実行するブロックとして設定されているブロック)である。このように判断できる理由は後述する。
【0049】
以下の処理については、説明の便宜上、
図5及び
図6に示す状態を例として説明する。
次のS4では、
図5における(ii)のように、ブロックBR
3に書込まれた管理フラグが「消去中」に更新される。具体的には
図6の(ii)のように消去中フラグ(M)が書込まれてM=非blankとなる。
【0050】
次のS5では、
図5及び
図6における(iii)のようにブロックBR
3に書込まれた管理フラグの対象ブロックであるブロックBR
1に記憶されたデータが消去される。ブロックBR
1には書込みデータ及び管理フラグが記憶されているため、これらが削除される。
【0051】
次のS6では、ブロックBR
1にデータ書込みが行われる。具体的には、
図5及び
図6における(iv)のように、新たな書込みデータが書込まれる。管理フラグは未だ書込まれていないため「−」となる。
【0052】
次のS7では、
図5の(v)に示すように、ブロックBR
3に書込まれた管理フラグが「書込み済」に更新される。具体的には
図6の(v)のように書込みフラグ(F)が書込まれてF=非blankとなる。
【0053】
以上の手順によりIDxのブロック集合に対するデータの書込み処理が終了する。上述したようにブロックBR
1は(iii)にてデータが消去されることで管理フラグが初期状態「−」となる。よって、管理フラグが「−」を示すブロックが最も新しくデータが書込まれたブロックであると判断できる。また書込みの順番はブロックBR
1,ブロックBR
2,ブロックBR
3,ブロックBR
1・・・とローテーションすることから、ブロックBR
1が最新であるときにはブロックBR
2が更新最古のブロックであると判断できる。
【0054】
次回のデータ書込み処理においてはブロックBR
2がデータ書込みの対象となり、処理実行後は(vi)に示す状態となる。
なお、上記S7における管理フラグを「書込み済」へ変更する処理、即ち書込みフラグ(F)の書込みが正常に完了することは、データを正常に管理する上で重要である。従って、書込みフラグ(F)への書込み時間中の電圧保持を行う保持手段を有することが考えられる。保持手段の一例としてコンデンサを用いることが考えられるが、他の装置により電圧保持がなされてもよい。
【0055】
ところで、例えばフラッシュメモリ21を初期化した後など、ブロック集合37のいずれのブロック31にも管理フラグが存在しない場合には、いずれかのブロック31のデータを消去して書込みデータを書込むと共に、他のブロック31に「書込み済」を示す管理フラグを書込む。それにより、書込みデータを書込んだブロック31のみが管理フラグとして「−」を示すブロックとなるため、次回の書込み要求が発生したときから上述した書込み処理を実行できる。
【0056】
(2.2)データ復旧処理
図7に示すフローチャートに基づいて、CPU11によるデータ復旧処理の処理手順を説明する。本処理は、電源喪失から復帰したタイミング、つまり電源が再投入されて装置が起動し、CPU11が本処理を実行できるようになったタイミングで開始される。
【0057】
まずS11では、CPU11は全てのIDに対応するブロック集合37内の各ブロック31の各管理フラグを確認する。
次のS12では、S11の確認の結果「消去中」を示す管理フラグが存在するか否かを判断する。上述したように、管理フラグが「消去中」を示すのは、消去中フラグ(M)=非blank,かつ書込みフラグ(F)=blankのときである。即ちS12では書込みフラグが書込まれておらず消去中フラグが書込まれているブロック(消去中示唆ブロック)を検出する。このような管理フラグが無ければ(S12:NO)、即ち消去中示唆ブロックが検出されなければ、全てのブロック集合37は通常状態であると考えられるため、特別な処理を行わず本処理を終了する。
【0058】
一方、S12にて「消去中」を示す管理フラグが存在する場合(S12:YES)、即ち消去中示唆ブロックが検出された場合、例えば
図8の(vii)〜(ix)の状態のときには、データ書込み処理の中断があったと考えられるため、続くS13以降の処理を行う。なお
図8の(vii)〜(ix)は
図5の(ii)〜(iv)とそれぞれ同じ管理フラグの状態である。
【0059】
以下の処理については、説明の便宜上、
図8に示す状態を例として説明する。
S13では、
図8の(x)に示すように、「消去中」を示すブロックBR
3に書込まれた管理フラグが監視する対象ブロックBR
1のデータを消去する。
【0060】
そして次のS14において、
図8の(xi)に示すように、S13にてデータを消去した対象ブロックBR
1に当該ブロック集合37における最新データを書込むことにより、データを復旧する。最新データとは、「消去中」を示す管理フラグが書込まれたブロックBR
3に書込まれた書込みデータである。
【0061】
次のS15では、
図8の(xii)に示すように、ブロックBR
3に書込まれた管理フラグが「書込み済」に更新される。具体的にはブロックBR
3に書込みフラグ(F)を書込む。その後、本処理を終了する。
【0062】
ところで、S12において「消去中」を示す管理フラグが存在すると判断される場合は
図8に示す場合に限られず、
図9に示す表の場合が考えられる。
図9の表に示される状態の組み合わせの項目において、Fとは書込みフラグ(F)及び消去中フラグ(M)の両方が書込まれている「書込み済」を示す状態であり、Mとは消去中フラグ(M)のみが書込まれている「消去中」を示す状態である。
【0063】
状態番号1,5,9のときは、通常状態であるため、データ復旧処理を行うことはない。一方その他の状態番号のとき、つまり状態にMが存在するときは、上記S13〜S15の処理を実行して書込みデータを復旧させる。
【0064】
ここで、状態番号3,7,11ではMが2つ存在する。
図5及び
図6に示すように、「消去中」を示す管理フラグが2つ存在する状態は想定されるシーケンスからは起こり得ないが、ブロック31の消去処理中に電源が遮断された場合にはデータが不安定になり、例えば書込みフラグ(F)のみが削除されることで偶然にMの状態となる可能性ある。従って、Mが2つ存在する状態も表中に示される。
【0065】
(2.3)データ読出し処理
CPU11は、ホスト装置3からデータの読出しを要求するコマンドを受信したとき、いわゆる読出しのアクセスがあったときに、読出しを要求されたブロック集合37内の全てのブロック31に書込まれた管理フラグをチェックして、書込みフラグが書込まれておらず、管理フラグが「−」を示しているブロックを検出する。そして、当該ブロックに書込まれた書込みデータを読み出し、ホスト装置3に出力する。
【0066】
なおここでいうホスト装置3とは、例えば記憶装置1から車両情報を取得するコンピュータシステムが想定される。つまり、記憶装置1に対して書込みデータの書込み要求を行うホスト装置3と、記憶装置3のフラッシュメモリ21に書込まれた書込みデータの読出し要求を行うホスト装置3と、は同一の装置である必要はなく、異なる装置であってもよい。
【0067】
(3)効果
本実施形態の記憶装置1は、ブロック単位でデータの消去が行われ、該ブロックよりも小さい単位でデータの書込みが行われるブロック31を複数備えるフラッシュメモリ21を備えており、CPU11(本発明における制御手段の一例)がフラッシュコントローラ17を制御して、ブロック31に書込まれたデータの読出しと、ブロック31へのデータの書込みと、を実行する。
【0068】
フラッシュメモリ21には、n個(本実施形態においてはn=3)のブロックBR
1〜BR
nを構成要素とするブロック集合37が少なくとも1つ設定されている。より具体的には、CPU11(本発明における設定手段の一例)が各ブロック31を、各ブロック31の識別情報と各ブロック31の物理アドレスとの関係を示す変換テーブルに基づいてブロック集合37として設定する。
【0069】
ブロック集合37の構成要素である各ブロックBR
i(iは1以上n以下の各整数)には、ホスト装置3からの要求に応じて書込まれるデータである書込みデータと、対象ブロックBR
j(jはiをnで除算したときの剰余に1を加算した整数)にて書込みデータの書込みが実行されたことを示す書込みフラグと、が書込み可能である。
【0070】
そしてCPU11は、ホスト装置3からの新たな書込みデータの書込み要求に応じて、ブロック集合37の構成要素のうち最後に書込みデータの書込みが実行されたブロック31をブロックBR
k(kは1以上n以下の整数)としたときに、該ブロックBR
kの次に前記書込みデータの書込みを実行するブロックとして設定されているブロックBR
l(lは1以上n以下の整数)に書込まれていた書込みデータ及び書込みフラグを含むデータを消去する消去処理(S5)と、ブロックBR
lに新たな書込みデータを書込む第1書込み処理(S6)と、対象ブロックとしてブロックBR
lが対応付けされているブロックBR
mに書込みフラグを書込む第2書込み処理(S7)と、を実行する。
【0071】
なお本実施形態において、ブロックBR
lの変数lはより詳細にはkをnで除算したときの剰余に1を加算した整数である。
またブロックBR
mは、上述した“次に書込みを行うブロック”を対象ブロックとするブロックである。
【0072】
このように構成された本実施形態の記憶装置1は、ブロック集合37に対して新たな書込みデータを書込むときには、ブロック集合37内において最も書込みタイミングの古いブロック31に書込まれたデータを消去して新しい書込みデータを書込む。
【0073】
よって、他のブロックへのデータのコピー処理を伴う再編処理を実行する従来の記憶装置と比較すると、再編処理にて実行されるコピー処理が不要となるため、再編処理に伴う処理負荷の増大、いわゆるオーバーヘッドの発生を抑制でき、それに伴うシステム全体のパフォーマンス低下やデータアクセスのレスポンス低下の発生を抑制できる。
【0074】
なお、消去及び書込みを実行するブロックがどのブロックであるかは、ブロック集合37を構成する各ブロックの管理フラグをチェックすることで確認が可能である。上記実施形態では、ローテーション順序により管理フラグに書込みがないブロックの次のブロックが消去及び書込みの対象となる。
【0075】
またCPU11は、ホスト装置3からのデータ読出し要求に応じて、最後に書込みデータの書込みが実行されたブロックBR
kに書込まれていた書込みデータを読み出す読出し処理を実行するので、最新のデータをホスト装置3に出力することができる。
【0076】
また本実施形態の記憶装置1では、ブロック集合37の構成要素である各ブロックBR
iには、上記対象ブロックBR
jに対して上述した消去処理が開始されたことを示す消去中フラグが書込み可能である。
【0077】
CPU11は、ホスト装置3からの新たな書込みデータの書込み要求に応じてブロックBR
lに消去処理が開始されたときに、ブロックBR
mに消去中フラグを書込む第3書込み処理(S4)を実行し、該第3書込み処理の後にブロックBR
lに消去処理(S5)を実行し、該消去処理の後にブロックBR
lに第1書込み処理(S6)を実行し、該第1書込み処理の後にブロックBR
mに第2書込み処理(S7)を実行する。
【0078】
即ち本実施形態の記憶装置1は、消去フラグと書込みフラグとをチェックすることでホスト装置からの書込み要求に対する処理の経過を把握することができる。具体的には、消去中フラグのみが書込まれていれば書込み処理の途中であると判断でき、消去中フラグと書込みフラグとの両方が記載されていれば書込み処理が完了していると判断できる。
【0079】
そして、書込み処理の実行中でないときに書込み処理の途中であると判断されたとすると、書込み処理が正しく完了していない可能性があり、そのようなブロックを検出することで、正常でない可能性のあるデータの存在を知ることができる。
【0080】
また本実施形態の記憶装置1において、CPU11(本発明における検出手段の一例)は、電源を再投入されたときに、書込みフラグが書込まれておらず、かつ消去中フラグが書込まれているブロック31(本発明における消去中示唆ブロックの一例)を検出する(S11、S12)。
【0081】
そしてCPU11は、上述した消去中示唆ブロックであるブロック31が検出されたときには、該検出されたブロックをブロックBR
p(pは1以上3以下の整数)としたときに、該ブロックBR
pの対象ブロックであるブロックBR
qに書込まれていた書込みデータ、書込みフラグ、及び消去中フラグを含むデータを消去する処理(S13)を実行し、該処理の後に、ブロック集合のうちブロックBR
qを除くいずれかのブロックに書込まれている書込みデータをブロックBR
qに書込み(S14)、その後にブロックBR
pに第2書込み処理(S15)を実行する。本実施形態では、S14において、消去中示唆ブロックに書込まれた書込みデータ、即ち最も新しい書込みデータをブロックBR
qに書込む。
【0082】
即ち本実施形態の記憶装置1は、電源が再投入されたときに管理フラグが「消去中」を示すブロックの有無を判定する。そしてそのようなブロックが存在する場合には、上記「消去中」を示す管理フラグが書込まれたブロックに書込まれている書込みデータを、対象ブロックに置き換える。これにより、書込み処理が例えば電源喪失により中断したとしても、中断した書込み処理にて書込みを実行していた新しい書込みデータを得ることはできないものの、書込みデータ自体を損失してしまうことを抑制できる。
【0083】
また、電源再投入をトリガに上述した処理を行うことから、正常でないデータが利用される可能性が低く、都合がよい。
なお、S14においては、ブロックBR
q(消去中示唆ブロック)以外のいずれかのブロックに書込まれている書込みデータをブロックBR
qに書込む構成としてもよい。但し、上述したようにブロックBR
pに書込まれている書込みデータを用いることで、より新しく書込まれた書込みデータをBR
qに復旧させることができる。
【0084】
[その他の実施形態]
以上本発明の実施形態について説明したが、本発明は、上記実施形態に何ら限定されることはなく、本発明の技術的範囲に属する限り種々の形態をとり得ることはいうまでもない。
【0085】
例えば、上記実施形態においては3つのブロック31からブロック集合37がなる構成を例示したが、ブロック集合は2つ以上のブロックによって構成されていればよく、3つに限定されることはない。
【0086】
なお、2つのブロック31によりブロック集合37を構成する場合には、3つ以上のブロック31によりブロック集合37を構成する場合と比較して書込み処理が中断したことの検出の精度が低下する。その理由を以下に説明する。
【0087】
図4のS4にてブロックBR
kの管理フラグを「消去中」に更新した後、S5にて対象ブロックBR
lの消去処理の実行中に電源喪失等により処理が中断した場合において、ブロックBR
lの書込みフラグ(F)のみが消去され消去中フラグ(M)が消去されずに残る可能性がある。その場合、ブロックBR
lに書込まれた管理フラグは「消去中」を示すこととなる。
【0088】
ここで、ブロック集合37を構成するブロック31が2つであると、いずれものブロックに書込まれた管理フラグも「消去中」となるためどのブロックのデータが正常であるかの判断が困難になる。
【0089】
一方、ブロック集合37を構成するブロック31が3つ以上あれば、少なくとも1つは管理フラグが「書込み済」となるブロック31が存在することとなる。そしてローテーションに従ってブロックを順番にチェックしたときに管理フラグが「書込み済」から「消去中」に変化したブロックが、中断された書込み処理を行う以前の最新のデータが記憶されたブロックと判断できる。
【0090】
また上記実施形態においては、ブロック集合37の構成要素である各ブロックBR
iには、書込みフラグとして、対象ブロックBR
j(jはiをnで除算したときの剰余に1を加算した整数)にて書込みデータの書込みが実行されたことを示すフラグを書込む構成を例示した。
【0091】
しかしながら、対象ブロックBR
jは上述した規則に限られず、jが1以上n以下のi以外の整数であって、iの値ごとに異なる整数であれよい。このように構成されていれば、ブロック集合の各ブロックは、ブロック集合における他のいずれかのブロックに対象ブロックとして対応付けられているということになる。その結果、各ブロックの書込み状態を把握することができる。
【0092】
上述した対象ブロックBR
jは、例えば、jをi+aをnで除算したときの剰余に1を加算した整数とすることができる。aとは0以上n−2以下の整数であり、上記実施形態においては、a=0となる。また、a=1とした場合のフラッシュメモリへの書込み制御の方法を、
図10を用いて説明する。
【0093】
フラッシュメモリには、5つのブロック31a(BR
1〜BR
5)を構成要素とするブロック集合37aが複数設定されている。各ブロックはデータ部33aとフラグ部35aとを有している。
【0094】
図10の(i)において、ブロックBR
3,ブロックBR
4に書込まれた管理フラグは「−」を示している。次のデータ書込みを行う対象はブロックBR
5であり、ブロックBR
5を対象ブロックとするブロック(ブロックBR
5を監視する管理フラグが書込まれるブロック)はブロックBR
3であり、最新の書込みが行われたブロックはブロックBR
4である。
【0095】
書込みを行うときには、まず(ii)のように、ブロックBR
3に書込まれた管理フラグが「消去中」に更新される。次に、(iii)のようにブロックBR
3に書込まれた管理フラグの対象ブロックであるブロックBR
5に記憶されたデータが消去される。次に、(iv)のように、新たな書込みデータが書込まれる。管理フラグは未だ書込まれていないため「−」となる。
【0096】
そして、(v)に示すように、ブロックBR
3に書込まれた管理フラグが「書込み済」に更新される。以上の手順によりブロック集合に対するデータの書込み処理が終了する。上記(v)のとき、次のデータ書込みを行う対象はブロックBR
1であり、ブロックBR
1を対象ブロックとするブロックはブロックBR
4であり、最新の書込みが行われたブロックはブロックBR
5である。
【0097】
このように、対象ブロックBR
jを、jがi+aをnで除算したときの剰余に1を加算した整数とするブロックとすることで、ブロック集合内のブロックに順番に書込みを実現することができる。
【0098】
また上記実施形態においては消去中フラグと書込みフラグとを用いてデータ書込みの完了を判断し、完了していない場合にはデータ復旧処理を行う構成を例示したが、消去中フラグを用いず、データ復旧処理を行わない構成であってもよい。その場合には、書込みデータをブロックBR
lに書込むタイミングとブロックBR
mに書込みフラグを書込むタイミングとはどちらが先であってもよい。
【0099】
また上記実施形態においては、CPU11は電源を再投入したタイミングで管理フラグが「消去中」を示すブロックの有無を判定する構成を例示したが、そのタイミングは電源再投入時に限定されず、様々なタイミングにおいて上記判定を行うことが可能である。なお、第3書込み処理(S4)を開始してから第2書込み処理(S7)を終了するまでの期間は、書込み処理が中断されていなくても「消去中」という管理フラグが発生するため、その期間は除くタイミングとすることが考えられる。
【0100】
また上記実施形態においては、ブロック集合37を構成するブロックの数nは、ブロック集合37ごとに異なっていてもよい。例えば、ID1に紐付けられたブロック集合37はn=3、ID2に紐付けられたブロック集合はn=5とする構成であってもよい。
【0101】
また、ブロック集合ごとにBR
i,BR
j,BR
kなどの関係性が共通である必要はなく、ブロック集合ごとに異なる関係性を有していてもよい。例えば、ID1及びID2に紐付けられたブロック集合37はいずれもn=5であり、ID1に紐付けられたブロック集合37は
図10のように変数a=1として書込み制御され、ID2に紐付けられたブロック集合37は変数a=0として書込み制御されるように構成されていてもよい。
【0102】
またホスト装置3は記憶装置1の外部に存在する装置である必要はなく、記憶装置1に含まれている装置であってもよい。また記憶装置1自身がホスト装置として機能する構成であってもよい。つまり、CPU11がフラッシュメモリ21の制御とは無関係の処理を実行して書込みデータを取得または生成し、その書込みデータをフラッシュメモリ21へ書込む構成や、CPU11が書込まれた書込みデータを読み出して、CPU11が別の処理に利用する構成であってもよい。
【0103】
ところで、上述した記憶装置1が備える各機能は、CPU11、RAM13、ROM15、フラッシュコントローラ17、I/O19等を有するフラッシュメモリ制御装置によって実現することができる。
【0104】
また、上述した記憶装置1が備える各機能は、プログラムによりコンピュータに実現させることができる。
上記プログラムは、コンピュータによる処理に適した命令の順番付けられた列からなるものであって、コンピュータに組み込まれるROMやRAMなどに記憶され、これらからコンピュータにロードされて用いられてもよいし、各種記録媒体や通信回線を介してコンピュータにロードされ用いられるものであってもよい。
【0105】
コンピュータにプログラムをロードするための上述した記録媒体としては、CD−ROMやDVD−ROM等の光ディスク、磁気ディスク、半導体製メモリ等が挙げられる。