以下、本発明の実施の形態について、図面を用いて詳細に説明する。なお、異なる図面において同一の符号を付した要素は、同一又は相応する要素を示すものとする。
図1は、半導体記憶装置1のシステム構成を簡略化して示す図である。図1に示すように半導体記憶装置1は、制御部2と、制御部2によって制御される記憶部3とを備えている。記憶部3は、例えばNAND型のフラッシュメモリによって構成されている。記憶部3は複数のブロックに分割されており、各ブロックには複数のページ(例えば64ページ)が含まれている。1ページのデータサイズは、例えば4224バイトである。NAND型フラッシュメモリにおいて、ページはデータの書き込み及び読み出しの最小単位であり、ブロックはデータの消去の最小単位である。
記憶部3には、ユーザが使用するユーザデータ11が格納される。また、記憶部3内の特定のブロックには、制御部2が記憶部3を管理するために必要な情報である管理情報12が格納される。また、記憶部3には、各ブロックに関する書き込みアクセスの履歴を示す情報である履歴情報13(詳細は後述する)が格納される。履歴情報13は、ユーザデータ11が格納されている領域のサイドバンド(冗長領域)に格納しても良いし、管理情報12が格納されている特定のブロック内に格納しても良い。また、履歴情報13は、記憶部3とは別の不揮発性の記憶媒体(ROM等)に格納しても良い。
<実施の形態1>
図2は、本発明の実施の形態1に係る制御部2の構成を示すブロック図である。図2に示すように制御部2は、メモリコントローラ21、ログ解析回路22、SRAM23、合計カウンタ24、順方向カウンタ25、逆方向カウンタ26、及び同一カウンタ27を備えて構成されている。なお、カウンタ24〜27は、ログ解析回路22内に設けても良い。また、カウンタ24〜27及びログ解析回路22は、メモリコントローラ21内に設けても良い。
SRAM23内には、記憶部3から読み出された履歴情報13が格納されている。
メモリコントローラ21は、記憶部3内に格納されるデータを管理するためのデータ管理方法(ファイルシステム)として、第1ファイルシステム31と第2ファイルシステム32とを有している。
NAND型のフラッシュメモリに適用されるファイルシステムとしては様々なファイルシステムが知られているが、本実施の形態に係る半導体記憶装置1において、第1ファイルシステム31はページ単位で論物変換を行う任意のファイルシステムであり、第2ファイルシステム32はブロック単位で論物変換を行う任意のファイルシステムである。
第1ファイルシステム31は、ページ単位で論物変換を行うため、ページ単位でのデータの書き込みが可能である。従って、第1ファイルシステム31は、データサイズが小さいデータ(例えば1ページ未満のデータ)を書き込む使用態様や、連続しない複数のページへのランダムアクセスによってデータを書き込む使用態様において有利である。また、第1ファイルシステム31では、ブロックサイズと同等のキャッシュ領域が記憶部3内(又は制御部2内)に確保され、キャッシュ領域のデータサイズが大きいため、同一のページに連続して書き込みアクセスを行う場合でも不要な消去は発生しない。従って、第1ファイルシステム31は、データサイズの大きいデータ(例えばページ境界を跨ぐようなデータ)を同一のページに連続して書き込む使用態様においても有利である。
第2ファイルシステム32は、ブロック単位で論物変換を行うため、ブロック単位でのデータの書き込みが可能である。従って、第2ファイルシステム32は、データサイズが大きいデータ(例えば1ページ以上のデータ)を書き込む使用態様や、連続する複数のページへのシーケンシャルアクセスによってデータを書き込む使用態様において有利である。また、第2ファイルシステム32では、ページサイズと同等のキャッシュ領域が記憶部3内(又は制御部2内)に確保され、キャッシュ領域のデータサイズが小さいため、データサイズの大きいデータを同一のページに連続して書き込む使用態様においては、消去回数が多くなるため不利である。
図3は、本発明の実施の形態1に係る履歴情報13のフォーマットを示す図である。図3に示すように本実施の形態に係る履歴情報13には、論理ブロックアドレスで区別される複数のブロックの各々に関して、平均データ長、アクセス回数、前回のアクセスページ、及びアクセス回数の内訳が記述されている。履歴情報13は、半導体記憶装置1の電源が投入された直後のタイミングで、記憶部3からSRAM23に読み出される。また、SRAM23に格納されている履歴情報13は、外部のホストコンピュータ等から半導体記憶装置1に対して書き込みアクセスが行われる度に、ログ解析回路22又はメモリコントローラ2によって最新の情報に更新され、最新の履歴情報13がSRAM23内に保持される。また、SRAM23内に保持されている最新の履歴情報13は、(1)半導体記憶装置1の電源がオフされる直前のタイミング、(2)記憶部3内の履歴情報13を前回更新してから一定時間が経過したタイミング、(3)記憶部3内の履歴情報13を更新する旨の特定のコマンドが外部のホストコンピュータ等から入力されたタイミング、(4)特定の論物変換が実行されたタイミング、等の所定のタイミングで、SRAM23から記憶部3に転送され、記憶部3内に格納されている履歴情報13が最新の情報に更新される。
平均データ長は、これまでに対象ブロックに書き込まれたデータのデータ長の平均値である。なお、記憶部3の記憶容量に余裕がある場合には、これまでに対象ブロックに書き込まれた各データのデータ長自体を履歴情報13に記述しておき、これらの情報に基づいて平均データ長を算出しても良い。
アクセス回数は、これまでに対象ブロックに対して実行された書き込みアクセスの合計回数である。
前回のアクセスページは、対象ブロックに対する前回の書き込みアクセスにおいてアクセスされたページのアドレスである。
アクセス回数の内訳は、順方向、逆方向、及び同一に分類されている。対象ブロックに対する今回の書き込みアクセスによってアクセスするページのアドレスが、同一ブロックに対する前回の書き込みアクセスにおいてアクセスされたページのアドレスより大きい場合には、「順方向」のアクセス回数が「1」だけインクリメントされる。また、対象ブロックに対する今回の書き込みアクセスによってアクセスするページのアドレスが、同一ブロックに対する前回の書き込みアクセスにおいてアクセスされたページのアドレスより小さい場合には、「逆方向」のアクセス回数が「1」だけインクリメントされる。また、対象ブロックに対する今回の書き込みアクセスによってアクセスするページのアドレスが、同一ブロックに対する前回の書き込みアクセスにおいてアクセスされたページのアドレスに等しい場合には、「同一」のアクセス回数が「1」だけインクリメントされる。
図2を参照して、外部のホストコンピュータ等からあるブロックを対象とする書き込みアクセスが行われた場合には、ログ解析回路22は、SRAM23が保持している最新の履歴情報13を参照することにより、その対象ブロックに適用するファイルシステムとして、第1ファイルシステム31及び第2ファイルシステム32の一方を選択する。
図4は、本発明の実施の形態1に係る制御部2に関して、ログ解析回路22によるファイルシステムの選択手法を示すフローチャートである。
外部のホストコンピュータ等から書き込みコマンドを受信すると、ログ解析回路22は、SRAM23が保持している最新の履歴情報13を、SRAM23から取得する。その後、ログ解析回路22は、対象ブロックに関する「アクセス回数」の情報を履歴情報13から抽出して、その回数を合計カウンタ24に設定する。また、対象ブロックに関する「順方向」のアクセス回数の情報を履歴情報13から抽出して、その回数を順方向カウンタ25に設定する。また、対象ブロックに関する「逆方向」のアクセス回数の情報を履歴情報13から抽出して、その回数を逆方向カウンタ26に設定する。また、対象ブロックに関する「同一」のアクセス回数の情報を履歴情報13から抽出して、その回数を同一カウンタ27に設定する。
次にステップSP101においてログ解析回路22は、履歴情報13に記述されている対象ブロックに関する情報と、書き込みコマンドに含まれている書き込みデータのデータ長とに基づいて、今回の書き込みアクセスを反映した対象ブロックの平均データ長を算出する。具体的には、
AveragePC1=((AveragePC0*AccessCount)+PC)/(AccessCount+1) ・・・(1)
なる演算を実行することにより、最新の平均データ長を算出する。
式(1)において、「AveragePC1」は、今回の書き込みアクセスを反映した対象ブロックの平均データ長(つまり最新の平均データ長)である。「AveragePC0」は、履歴情報13に記述されている平均データ長(つまり前回までの書き込みアクセスが反映された平均データ長)である。「AccessCount」は、履歴情報13に記述されているアクセス回数である。「PC」は、今回の書き込みアクセスにおいて書き込まれるデータのデータ長である。
次にステップSP102においてログ解析回路22は、合計カウンタ24のカウンタ値を「1」だけインクリメントする。
次にステップSP103においてログ解析回路22は、今回の書き込みアクセスによってアクセスするページのアドレスが、前回の書き込みアクセスによってアクセスされたページのアドレスと同一であるか否かを判定する。
両アドレスが一致する場合(つまりステップSP103における判定の結果が「YES」である場合)には、次にステップSP105においてログ解析回路22は、同一カウンタ27のカウンタ値を「1」だけインクリメントする。
一方、両アドレスが一致しない場合(つまりステップSP103における判定の結果が「NO」である場合)には、次にステップSP104においてログ解析回路22は、今回の書き込みアクセスによってアクセスするページのアドレスが、前回の書き込みアクセスによってアクセスされたページのアドレスより大きいか否かを判定する。
今回のアドレスが前回のアドレスより大きい場合(つまりステップSP104における判定の結果が「YES」である場合)には、次にステップSP106においてログ解析回路22は、順方向カウンタ25のカウンタ値を「1」だけインクリメントする。
一方、今回のアドレスが前回のアドレスより小さい場合(つまりステップSP104における判定の結果が「NO」である場合)には、次にステップSP107においてログ解析回路22は、逆方向カウンタ26のカウンタ値を「1」だけインクリメントする。
ステップSP105〜SP107に引き続き、次にステップSP108においてログ解析回路22は、ステップSP101で算出した平均データ長が、予め設定した所定のしきい値TH1より大きいか否かを判定する。しきい値TH1の値としては、ページサイズ又はブロックサイズ等に応じて最適な値を設定することができる。例えば、ページサイズに等しい値を、しきい値TH1として設定することができる。あるいは、所望のデータに対して所望のファイルシステムが適用される値を解析によって求めて、その値をしきい値TH1として設定することができる。例えば、図1に示した管理情報12に対しては第1ファイルシステム31を適用し、ユーザデータ11に対しては第2ファイルシステム32を適用したい場合には、管理情報12のデータサイズより大きく、ユーザデータ11の転送データサイズより小さい値を、しきい値TH1として設定することができる。しきい値TH1に関する設定情報は、記憶部3内に格納しても良いし、記憶部3とは別の不揮発性の記憶媒体(ROM等)に格納しても良い。
平均データ長がしきい値TH1以下である場合(つまりステップSP108における判定の結果が「NO」である場合)には、次にステップSP112においてログ解析回路22は、その対象ブロックに関しては第1ファイルシステム31の適用を選択する。
一方、平均データ長がしきい値TH1より大きい場合(つまりステップSP108における判定の結果が「YES」である場合)には、次にステップSP109においてログ解析回路22は、順方向カウンタ25、逆方向カウンタ26、及び同一カウンタ27の各カウンタ値を比較することにより、カウンタ値が最大であるカウンタを特定する。
カウンタ値が最大であるカウンタが逆方向カウンタ26である場合には、次にステップSP112においてログ解析回路22は、その対象ブロックに関しては第1ファイルシステム31の適用を選択する。
カウンタ値が最大であるカウンタが順方向カウンタ25である場合には、次にステップSP111においてログ解析回路22は、その対象ブロックに関しては第2ファイルシステム32の適用を選択する。
カウンタ値が最大であるカウンタが同一カウンタ27である場合には、次にステップSP110においてログ解析回路22は、今回の書き込みアクセスがページの境界を跨ぐか否かを判定する。具体的には、
RoundDown((Offset+PC)/NSector)≧1 ・・・(2)
なる演算を行うことにより、式(2)の関係を満たす場合には書き込みアクセスがページの境界を跨ぐと判定し、式(2)の関係を満たさない場合には書き込みアクセスがページの境界を跨がないと判定する。
式(2)において、「RoundDown」は、小数点以下の切り捨てを意味する。「Offset」は、ページの先頭アドレスと、ページ内において書き込みが開始される先頭アドレスとの差である。「PC」は、今回の書き込みアクセスにおいて書き込まれるデータのデータ長である。「NSector」は、1ページ内に含まれるセクタ数である。
今回の書き込みアクセスがページの境界を跨ぐ場合(つまりステップSP110における判定の結果が「YES」である場合)には、次にステップSP112においてログ解析回路22は、その対象ブロックに関しては第1ファイルシステム31の適用を選択する。
一方、今回の書き込みアクセスがページの境界を跨がない場合(つまりステップSP110における判定の結果が「NO」である場合)には、次にステップSP111においてログ解析回路22は、その対象ブロックに関しては第2ファイルシステム32の適用を選択する。
なお、ステップSP109の判定において、カウンタ値が最大であるカウンタが複数存在する場合には、ログ解析回路22は、その対象ブロックに関して現在選択されているファイルシステム(つまり前回の書き込みアクセスに対応して選択されたファイルシステム)を維持する。今回のアクセスにおいてファイルシステムの選択を行うよりも、次回のアクセス時に、インクリメント後のカウンタ値やその他の条件(アクセスがページの境界を跨ぐか否か等)に基づいてファイルシステムの選択を行った方が、より適切な選択を実現できるためである。
但し、カウンタ値が最大であるカウンタが複数存在する場合に、今回のアクセスにおいて以下のように処理しても良い。カウンタ値が最も大きいカウンタが順方向カウンタ25及び逆方向カウンタ26の双方である場合には、ログ解析回路22は、その対象ブロックに関して現在選択されているファイルシステムを維持する。このように、選択すべき最適なファイルシステムが異なる結果となる場合には、ファイルシステムの選択を行わず、現在選択されているファイルシステムを維持することにより、適用されるファイルシステムが頻繁に変更されるという事態を回避することが可能となる。
また、カウンタ値が最も大きいカウンタが順方向カウンタ25及び同一カウンタ27の双方である場合であって、かつ、ステップSP110の判定において今回の書き込みアクセスがページの境界を跨ぐ場合には、ログ解析回路22は、その対象ブロックに関して現在選択されているファイルシステムを維持する。このように、選択すべき最適なファイルシステムが異なる結果となる場合には、ファイルシステムの選択を行わず、現在選択されているファイルシステムを維持することにより、適用されるファイルシステムが頻繁に変更されるという事態を回避することが可能となる。一方、カウンタ値が最も大きいカウンタが順方向カウンタ25及び同一カウンタ27の双方である場合であって、かつ、ステップSP110の判定において今回の書き込みアクセスがページの境界を跨がない場合には、ログ解析回路22は、その対象ブロックに関しては第2ファイルシステム32の適用を選択する。このように、選択すべき最適なファイルシステムが等しい結果となる場合には、その最適なファイルシステムを選択することにより、不要な書き込みや消去の発生を回避又は抑制することが可能となる。
また、カウンタ値が最も大きいカウンタが逆方向カウンタ26及び同一カウンタ27の双方である場合であって、かつ、ステップSP110の判定において今回の書き込みアクセスがページの境界を跨ぐ場合には、ログ解析回路22は、その対象ブロックに関しては第1ファイルシステム31の適用を選択する。このように、選択すべき最適なファイルシステムが等しい結果となる場合には、その最適なファイルシステムを選択することにより、不要な書き込みや消去の発生を回避又は抑制することが可能となる。一方、カウンタ値が最も大きいカウンタが逆方向カウンタ26及び同一カウンタ27の双方である場合であって、かつ、ステップSP110の判定において今回の書き込みアクセスがページの境界を跨がない場合には、ログ解析回路22は、その対象ブロックに関して現在選択されているファイルシステムを維持する。このように、選択すべき最適なファイルシステムが異なる結果となる場合には、ファイルシステムの選択を行わず、現在選択されているファイルシステムを維持することにより、適用されるファイルシステムが頻繁に変更されるという事態を回避することが可能となる。
<実施の形態1の変形例>
図5は、上記実施の形態1の変形例に係る制御部2の構成を示すブロック図である。本変形例では、図2に示した逆方向カウンタ26及び同一カウンタ27が、非順方向カウンタ28としてまとめられている。
図6は、本変形例に係る履歴情報13のフォーマットを示す図である。本変形例では、図3に示した逆方向及び同一の項目が、非順方向の項目としてまとめられている。
図7は、本変形例に係る制御部2に関して、ログ解析回路22によるファイルシステムの選択手法を示すフローチャートである。
外部のホストコンピュータ等から書き込みコマンドを受信すると、ログ解析回路22は、SRAM23が保持している最新の履歴情報13を、SRAM23から取得する。その後、ログ解析回路22は、対象ブロックに関する「アクセス回数」の情報を履歴情報13から抽出して、その回数を合計カウンタ24に設定する。また、対象ブロックに関する「順方向」のアクセス回数の情報を履歴情報13から抽出して、その回数を順方向カウンタ25に設定する。また、対象ブロックに関する「非順方向」のアクセス回数の情報を履歴情報13から抽出して、その回数を非順方向カウンタ28に設定する。
次にステップSP501においてログ解析回路22は、履歴情報13に記述されている対象ブロックに関する情報と、書き込みコマンドに含まれている書き込みデータのデータ長とに基づいて、今回の書き込みアクセスを反映した対象ブロックの平均データ長を算出する。具体的には、上述の式(1)で示した演算を実行することにより、最新の平均データ長を算出する。
次にステップSP502においてログ解析回路22は、合計カウンタ24のカウンタ値を「1」だけインクリメントする。
次にステップSP503においてログ解析回路22は、今回の書き込みアクセスによってアクセスするページのアドレスが、前回の書き込みアクセスによってアクセスされたページのアドレスより大きいか否かを判定する。
今回のアドレスが前回のアドレスより大きい場合(つまりステップSP503における判定の結果が「YES」である場合)には、次にステップSP504においてログ解析回路22は、順方向カウンタ25のカウンタ値を「1」だけインクリメントする。
一方、今回のアドレスが前回のアドレス以下である場合(つまりステップSP503における判定の結果が「NO」である場合)には、次にステップSP505においてログ解析回路22は、非順方向カウンタ28のカウンタ値を「1」だけインクリメントする。
ステップSP504,SP505に引き続き、次にステップSP506においてログ解析回路22は、ステップSP501で算出した平均データ長が、予め設定した所定のしきい値TH1より大きいか否かを判定する。
平均データ長がしきい値TH1以下である場合(つまりステップSP506における判定の結果が「NO」である場合)には、次にステップSP509においてログ解析回路22は、その対象ブロックに関しては第1ファイルシステム31の適用を選択する。
一方、平均データ長がしきい値TH1より大きい場合(つまりステップSP506における判定の結果が「YES」である場合)には、次にステップSP507においてログ解析回路22は、順方向カウンタ25及び非順方向カウンタ28の各カウンタ値を比較することにより、カウンタ値が最大であるカウンタを特定する。
カウンタ値が最大であるカウンタが順方向カウンタ25である場合(つまり順方向カウンタ25のカウンタ値が非順方向カウンタ28のカウンタ値より大きい場合)には、次にステップSP508においてログ解析回路22は、その対象ブロックに関しては第2ファイルシステム32の適用を選択する。
一方、カウンタ値が最大であるカウンタが非順方向カウンタ28である場合(つまり順方向カウンタ25のカウンタ値が非順方向カウンタ28のカウンタ値より小さい場合)には、次にステップSP509においてログ解析回路22は、その対象ブロックに関しては第1ファイルシステム31の適用を選択する。
なお、ステップSP507の判定において、順方向カウンタ25のカウンタ値が非順方向カウンタ28のカウンタ値に等しい場合には、ログ解析回路22は、その対象ブロックに関して現在選択されているファイルシステムを維持する。今回のアクセスにおいてファイルシステムの選択を行うよりも、次回のアクセス時に、インクリメント後のカウンタ値やその他の条件(アクセスがページの境界を跨ぐか否か等)に基づいてファイルシステムの選択を行った方が、より適切な選択を実現できるためである。
但し、ページ単位で論物変換を行う第1ファイルシステム31は全てのアクセスパターンに対応可能であるため、順方向カウンタ25のカウンタ値が非順方向カウンタ28のカウンタ値に等しい場合には、ログ解析回路22は第1ファイルシステム31の適用を選択しても良い。第1ファイルシステム31を選択することにより、無駄なブロック消去の発生を抑制することができる。
<実施の形態2>
図8は、本発明の実施の形態2に係る制御部2の構成を示すブロック図である。本実施の形態2に係る制御部2は、図2に示した上記実施の形態1に係る制御部2の構成から、順方向カウンタ25、逆方向カウンタ26、及び同一カウンタ27を省略したものである。
図9は、本発明の実施の形態2に係る履歴情報13のフォーマットを示す図である。本実施の形態2に係る履歴情報13は、図3に示した上記実施の形態1に係る履歴情報13のフォーマットから、前回のアクセスページ、及びアクセス回数の内訳の項目を省略したものである。
図8を参照して、外部のホストコンピュータ等からあるブロックを対象とする書き込みアクセスが行われた場合には、ログ解析回路22は、SRAM23が保持している最新の履歴情報13を参照することにより、その対象ブロックに適用するファイルシステムとして、第1ファイルシステム31及び第2ファイルシステム32の一方を選択する。
図10は、本発明の実施の形態2に係る制御部2に関して、ログ解析回路22によるファイルシステムの選択手法を示すフローチャートである。
外部のホストコンピュータ等から書き込みコマンドを受信すると、ログ解析回路22は、SRAM23が保持している最新の履歴情報13を、SRAM23から取得する。その後、ログ解析回路22は、対象ブロックに関する「アクセス回数」の情報を履歴情報13から抽出して、その回数を合計カウンタ24に設定する。
次にステップSP201においてログ解析回路22は、履歴情報13に記述されている対象ブロックに関する情報と、書き込みコマンドに含まれている書き込みデータのデータ長とに基づいて、今回の書き込みアクセスを反映した対象ブロックの平均データ長を算出する。具体的には、上述の式(1)で示した演算を実行することにより、最新の平均データ長を算出する。
次にステップSP202においてログ解析回路22は、合計カウンタ24のカウンタ値を「1」だけインクリメントする。
次にステップSP203においてログ解析回路22は、ステップSP201で算出した平均データ長が、予め設定した所定のしきい値TH1より大きいか否かを判定する。
平均データ長がしきい値TH1以下である場合(つまりステップSP203おける判定の結果が「NO」である場合)には、次にステップSP205においてログ解析回路22は、その対象ブロックに関しては第1ファイルシステム31の適用を選択する。
一方、平均データ長がしきい値TH1より大きい場合(つまりステップSP203における判定の結果が「YES」である場合)には、次にステップSP204においてログ解析回路22は、その対象ブロックに関しては第2ファイルシステム32の適用を選択する。
<実施の形態3>
図11は、本発明の実施の形態3に係る制御部2の構成を示すブロック図である。本実施の形態3に係る制御部2は、図2に示した上記実施の形態1に係る制御部2の構成から、合計カウンタ24を省略したものである。
図12は、本発明の実施の形態3に係る履歴情報13のフォーマットを示す図である。本実施の形態3に係る履歴情報13は、図3に示した上記実施の形態1に係る履歴情報13のフォーマットから、平均データ長、及びアクセス回数の項目を省略したものである。
図11を参照して、外部のホストコンピュータ等からあるブロックを対象とする書き込みアクセスが行われた場合には、ログ解析回路22は、SRAM23が保持している最新の履歴情報13を参照することにより、その対象ブロックに適用するファイルシステムとして、第1ファイルシステム31及び第2ファイルシステム32の一方を選択する。
図13は、本発明の実施の形態3に係る制御部2に関して、ログ解析回路22によるファイルシステムの選択手法を示すフローチャートである。
外部のホストコンピュータ等から書き込みコマンドを受信すると、ログ解析回路22は、SRAM23が保持している最新の履歴情報13を、SRAM23から取得する。その後、ログ解析回路22は、対象ブロックに関する「順方向」のアクセス回数の情報を履歴情報13から抽出して、その回数を順方向カウンタ25に設定する。また、対象ブロックに関する「逆方向」のアクセス回数の情報を履歴情報13から抽出して、その回数を逆方向カウンタ26に設定する。また、対象ブロックに関する「同一」のアクセス回数の情報を履歴情報13から抽出して、その回数を同一カウンタ27に設定する。
次にステップSP301においてログ解析回路22は、今回の書き込みアクセスによってアクセスするページのアドレスが、前回の書き込みアクセスによってアクセスされたページのアドレスと同一であるか否かを判定する。
両アドレスが一致する場合(つまりステップSP301における判定の結果が「YES」である場合)には、次にステップSP303においてログ解析回路22は、同一カウンタ27のカウンタ値を「1」だけインクリメントする。
一方、両アドレスが一致しない場合(つまりステップSP301における判定の結果が「NO」である場合)には、次にステップSP302においてログ解析回路22は、今回の書き込みアクセスによってアクセスするページのアドレスが、前回の書き込みアクセスによってアクセスされたページのアドレスより大きいか否かを判定する。
今回のアドレスが前回のアドレスより大きい場合(つまりステップSP302における判定の結果が「YES」である場合)には、次にステップSP304においてログ解析回路22は、順方向カウンタ25のカウンタ値を「1」だけインクリメントする。
一方、今回のアドレスが前回のアドレスより小さい場合(つまりステップSP302における判定の結果が「NO」である場合)には、次にステップSP305においてログ解析回路22は、逆方向カウンタ26のカウンタ値を「1」だけインクリメントする。
ステップSP303〜SP305に引き続き、次にステップSP306においてログ解析回路22は、順方向カウンタ25、逆方向カウンタ26、及び同一カウンタ27の各カウンタ値を比較することにより、カウンタ値が最大であるカウンタを特定する。
カウンタ値が最大であるカウンタが逆方向カウンタ26である場合には、次にステップSP309においてログ解析回路22は、その対象ブロックに関しては第1ファイルシステム31の適用を選択する。
カウンタ値が最大であるカウンタが順方向カウンタ25である場合には、次にステップSP308においてログ解析回路22は、その対象ブロックに関しては第2ファイルシステム32の適用を選択する。
カウンタ値が最大であるカウンタが同一カウンタ27である場合には、次にステップSP307においてログ解析回路22は、今回の書き込みアクセスがページの境界を跨ぐか否かを判定する。具体的には、上述の式(2)で示した演算を行うことにより、式(2)の関係を満たす場合には書き込みアクセスがページの境界を跨ぐと判定し、式(2)の関係を満たさない場合には書き込みアクセスがページの境界を跨がないと判定する。
今回の書き込みアクセスがページの境界を跨ぐ場合(つまりステップSP307における判定の結果が「YES」である場合)には、次にステップSP309においてログ解析回路22は、その対象ブロックに関しては第1ファイルシステム31の適用を選択する。
一方、今回の書き込みアクセスがページの境界を跨がない場合(つまりステップSP307における判定の結果が「NO」である場合)には、次にステップSP308においてログ解析回路22は、その対象ブロックに関しては第2ファイルシステム32の適用を選択する。
なお、ステップSP306の判定において、カウンタ値が最大であるカウンタが複数存在する場合には、ログ解析回路22は、その対象ブロックに関して現在選択されているファイルシステムを維持する。今回のアクセスにおいてファイルシステムの選択を行うよりも、次回のアクセス時に、インクリメント後のカウンタ値やその他の条件(アクセスがページの境界を跨ぐか否か等)に基づいてファイルシステムの選択を行った方が、より適切な選択を実現できるためである。
但し、カウンタ値が最大であるカウンタが複数存在する場合に、今回のアクセスにおいて以下のように処理しても良い。カウンタ値が最も大きいカウンタが順方向カウンタ25及び逆方向カウンタ26の双方である場合には、ログ解析回路22は、その対象ブロックに関して現在選択されているファイルシステムを維持する。このように、選択すべき最適なファイルシステムが異なる結果となる場合には、ファイルシステムの選択を行わず、現在選択されているファイルシステムを維持することにより、適用されるファイルシステムが頻繁に変更されるという事態を回避することが可能となる。
また、カウンタ値が最も大きいカウンタが順方向カウンタ25及び同一カウンタ27の双方である場合であって、かつ、ステップSP307の判定において今回の書き込みアクセスがページの境界を跨ぐ場合には、ログ解析回路22は、その対象ブロックに関して現在選択されているファイルシステムを維持する。このように、選択すべき最適なファイルシステムが異なる結果となる場合には、ファイルシステムの選択を行わず、現在選択されているファイルシステムを維持することにより、適用されるファイルシステムが頻繁に変更されるという事態を回避することが可能となる。一方、カウンタ値が最も大きいカウンタが順方向カウンタ25及び同一カウンタ27の双方である場合であって、かつ、ステップSP307の判定において今回の書き込みアクセスがページの境界を跨がない場合には、ログ解析回路22は、その対象ブロックに関しては第2ファイルシステム32の適用を選択する。このように、選択すべき最適なファイルシステムが等しい結果となる場合には、その最適なファイルシステムを選択することにより、不要な書き込みや消去の発生を回避又は抑制することが可能となる。
また、カウンタ値が最も大きいカウンタが逆方向カウンタ26及び同一カウンタ27の双方である場合であって、かつ、ステップSP307の判定において今回の書き込みアクセスがページの境界を跨ぐ場合には、ログ解析回路22は、その対象ブロックに関しては第1ファイルシステム31の適用を選択する。このように、選択すべき最適なファイルシステムが等しい結果となる場合には、その最適なファイルシステムを選択することにより、不要な書き込みや消去の発生を回避又は抑制することが可能となる。一方、カウンタ値が最も大きいカウンタが逆方向カウンタ26及び同一カウンタ27の双方である場合であって、かつ、ステップSP307の判定において今回の書き込みアクセスがページの境界を跨がない場合には、ログ解析回路22は、その対象ブロックに関して現在選択されているファイルシステムを維持する。このように、選択すべき最適なファイルシステムが異なる結果となる場合には、ファイルシステムの選択を行わず、現在選択されているファイルシステムを維持することにより、適用されるファイルシステムが頻繁に変更されるという事態を回避することが可能となる。
<実施の形態3の変形例>
図14は、上記実施の形態3の変形例に係る制御部2の構成を示すブロック図である。本変形例では、図11に示した逆方向カウンタ26及び同一カウンタ27が、非順方向カウンタ28としてまとめられている。
図15は、本変形例に係る履歴情報13のフォーマットを示す図である。本変形例では、図12に示した逆方向及び同一の項目が、非順方向の項目としてまとめられている。
図16は、本変形例に係る制御部2に関して、ログ解析回路22によるファイルシステムの選択手法を示すフローチャートである。
外部のホストコンピュータ等から書き込みコマンドを受信すると、ログ解析回路22は、SRAM23が保持している最新の履歴情報13を、SRAM23から取得する。その後、ログ解析回路22は、対象ブロックに関する「順方向」のアクセス回数の情報を履歴情報13から抽出して、その回数を順方向カウンタ25に設定する。また、対象ブロックに関する「非順方向」のアクセス回数の情報を履歴情報13から抽出して、その回数を非順方向カウンタ28に設定する。
次にステップSP601においてログ解析回路22は、今回の書き込みアクセスによってアクセスするページのアドレスが、前回の書き込みアクセスによってアクセスされたページのアドレスより大きいか否かを判定する。
今回のアドレスが前回のアドレスより大きい場合(つまりステップSP601における判定の結果が「YES」である場合)には、次にステップSP602においてログ解析回路22は、順方向カウンタ25のカウンタ値を「1」だけインクリメントする。
一方、今回のアドレスが前回のアドレス以下である場合(つまりステップSP601における判定の結果が「NO」である場合)には、次にステップSP603においてログ解析回路22は、非順方向カウンタ28のカウンタ値を「1」だけインクリメントする。
ステップSP602,SP603に引き続き、次にステップSP604においてログ解析回路22は、順方向カウンタ25及び非順方向カウンタ28の各カウンタ値を比較することにより、カウンタ値が最大であるカウンタを特定する。
カウンタ値が最大であるカウンタが順方向カウンタ25である場合(つまり順方向カウンタ25のカウンタ値が非順方向カウンタ28のカウンタ値より大きい場合)には、次にステップSP605においてログ解析回路22は、その対象ブロックに関しては第2ファイルシステム32の適用を選択する。
一方、カウンタ値が最大であるカウンタが非順方向カウンタ28である場合(つまり順方向カウンタ25のカウンタ値が非順方向カウンタ28のカウンタ値より小さい場合)には、次にステップSP606においてログ解析回路22は、その対象ブロックに関しては第1ファイルシステム31の適用を選択する。
なお、ステップSP604の判定において、順方向カウンタ25のカウンタ値が非順方向カウンタ28のカウンタ値に等しい場合には、ログ解析回路22は、その対象ブロックに関して現在選択されているファイルシステムを維持する。今回のアクセスにおいてファイルシステムの選択を行うよりも、次回のアクセス時に、インクリメント後のカウンタ値やその他の条件(アクセスがページの境界を跨ぐか否か等)に基づいてファイルシステムの選択を行った方が、より適切な選択を実現できるためである。
但し、ページ単位で論物変換を行う第1ファイルシステム31は全てのアクセスパターンに対応可能であるため、順方向カウンタ25のカウンタ値が非順方向カウンタ28のカウンタ値に等しい場合には、ログ解析回路22は第1ファイルシステム31の適用を選択しても良い。第1ファイルシステム31を選択することにより、無駄なブロック消去の発生を抑制することができる。
<実施の形態4>
図17は、本発明の実施の形態4に係る制御部2の構成を示すブロック図である。本実施の形態4に係る制御部2は、図2に示した上記実施の形態1に係る制御部2の構成から、合計カウンタ24、順方向カウンタ25、逆方向カウンタ26、及び同一カウンタ27を省略し、その代わりに合計カウンタ40を追加したものである。
図18は、本発明の実施の形態4に係る履歴情報13のフォーマットを示す図である。本実施の形態4に係る履歴情報13は、図3に示した上記実施の形態1に係る履歴情報13のフォーマットから、平均データ長、アクセス回数、前回のアクセスページ、及びアクセス回数の内訳の項目を省略し、その代わりに、ページ境界を跨ぐアクセス回数の項目を追加したものである。ページ境界を跨ぐアクセス回数は、これまでに対象ブロックに対して実行された、ページ境界を跨ぐ書き込みアクセスの合計回数である。
図17を参照して、外部のホストコンピュータ等からあるブロックを対象とする書き込みアクセスが行われた場合には、ログ解析回路22は、SRAM23が保持している最新の履歴情報13を参照することにより、その対象ブロックに適用するファイルシステムとして、第1ファイルシステム31及び第2ファイルシステム32の一方を選択する。
図19は、本発明の実施の形態4に係る制御部2に関して、ログ解析回路22によるファイルシステムの選択手法を示すフローチャートである。
外部のホストコンピュータ等から書き込みコマンドを受信すると、ログ解析回路22は、SRAM23が保持している最新の履歴情報13を、SRAM23から取得する。その後、ログ解析回路22は、対象ブロックに関する「ページ境界を跨ぐアクセス回数」の情報を履歴情報13から抽出して、その回数を合計カウンタ40に設定する。
次にステップSP401においてログ解析回路22は、今回の書き込みアクセスがページ境界を跨ぐか否かを判定する。書き込みアクセスがページ境界を跨ぐか否かは、上述の式(2)を用いたステップSP110と同様の手法によって判定することができる。
今回の書き込みアクセスがページ境界を跨ぐ場合(つまりステップSP401における判定の結果が「YES」である場合)には、次にステップSP402においてログ解析回路22は、合計カウンタ40のカウンタ値を「1」だけインクリメントする。
一方、今回の書き込みアクセスがページ境界を跨がない場合(つまりステップSP401における判定の結果が「NO」である場合)には、ステップSP402がスキップされることにより、合計カウンタ40の更新は行われない。
次にステップSP403においてログ解析回路22は、合計カウンタ40のカウンタ値が、予め設定した所定のしきい値TH2より大きいか否かを判定する。しきい値TH2の値としては、ページサイズ、ブロックサイズ、又は取り扱うコンテンツ等に応じて最適な値を設定することができる。例えば、ページサイズに等しい値を、しきい値TH2として設定することができる。あるいは、所望のデータに対して所望のファイルシステムが適用される値を解析によって求めて、その値をしきい値TH2として設定することができる。しきい値TH2に関する設定情報は、記憶部3内に格納しても良いし、記憶部3とは別の不揮発性の記憶媒体(ROM等)に格納しても良い。
合計カウンタ40のカウンタ値がしきい値TH2以下である場合(つまりステップSP403における判定の結果が「NO」である場合)には、次にステップSP405においてログ解析回路22は、その対象ブロックに関しては第1ファイルシステム31の適用を選択する。
一方、合計カウンタ40のカウンタ値がしきい値TH2より大きい場合(つまりステップSP403における判定の結果が「YES」である場合)には、次にステップSP404においてログ解析回路22は、その対象ブロックに関しては第2ファイルシステム32の適用を選択する。
<実施の形態1〜4の変形例>
上記実施の形態1〜4では、半導体記憶装置1が外部のホストコンピュータ等から書き込みコマンドを1回受信する毎に、ログ解析回路22によってファイルシステムの選択処理が実行された。この例に限らず、書き込みコマンドを複数回受信したことを条件として、ファイルシステムの選択処理を実行しても良い。これにより、適用されるファイルシステムが頻繁に変更されるという事態を回避することが可能となる。但し、この場合であっても、履歴情報13の更新は、書き込みコマンドを1回受信する毎に実行する必要がある。
<まとめ>
上記実施の形態1〜4に係る半導体記憶装置1によれば、制御部2は、ページ単位で論物変換を行う第1ファイルシステム31と、ブロック単位で論物変換を行う第2ファイルシステム32とを有している。そして、各ブロックに関する書き込みアクセスの履歴情報13を保持し、当該履歴情報13に基づいて、各ブロックに関して第1ファイルシステム31及び第2ファイルシステム32の一方を選択する。従って、履歴情報13に基づき、データサイズやアクセスパターンに応じて最適なファイルシステムをブロック毎に選択することができ、その結果、不要な書き込みや消去の発生を回避又は抑制することが可能となる。
また、上記実施の形態1に係る半導体記憶装置1によれば、制御部2は、書き込みデータ長の平均値がしきい値TH1以下である場合には、第1ファイルシステム31を選択する。このように、データサイズが小さいデータを書き込む態様の書き込みアクセスが頻発するブロックに関しては、ページ単位で論物変換を行う第1ファイルシステム31を適用することにより、不要な書き込みや消去の発生を回避又は抑制することが可能となる。また、制御部2は、書き込みデータ長の平均値がしきい値TH1を超える場合において、カウンタ25〜27の中で順方向カウンタ25(第1のカウンタ)のカウンタ値が最も大きい場合には、第2ファイルシステム32を選択する。このように、データサイズが大きいデータをシーケンシャルアクセスによって書き込む態様の書き込みアクセスが頻発するブロックに関しては、ブロック単位で論物変換を行う第2ファイルシステム32を適用することにより、不要な書き込みや消去の発生を回避又は抑制することが可能となる。また、制御部2は、書き込みデータ長の平均値がしきい値TH1を超える場合において、カウンタ25〜27の中で逆方向カウンタ25(第2のカウンタ)のカウンタ値が最も大きい場合には、第1ファイルシステム31を選択する。このように、データサイズが大きいデータをランダムアクセスによって書き込む態様の書き込みアクセスが頻発するブロックに関しては、ページ単位で論物変換を行う第1ファイルシステム31を適用することにより、不要な書き込みや消去の発生を回避又は抑制することが可能となる。
また、上記実施の形態1に係る半導体記憶装置1によれば、制御部2は、書き込みデータ長の平均値がしきい値TH1を超え、かつ、カウンタ25〜27の中で同一カウンタ27(第3のカウンタ)のカウンタ値が最も大きい場合において、今回の書き込みアクセスがページの境界を跨ぐ場合には、第1ファイルシステム31を選択する。このように、データサイズが大きいデータを前回にアクセスしたページと同一のページに書き込む態様の書き込みアクセスが頻発するブロックに関して、今回の書き込みアクセスがページの境界を跨ぐ場合には、ページ単位で論物変換を行う第1ファイルシステム31を適用することにより、不要な書き込みや消去の発生を回避又は抑制することが可能となる。また、制御部2は、書き込みデータ長の平均値がしきい値TH1を超え、かつ、カウンタ25〜27の中で同一カウンタ27のカウンタ値が最も大きい場合において、今回の書き込みアクセスがページの境界を跨がない場合には、第2ファイルシステム32を選択する。このように、データサイズが大きいデータを前回にアクセスしたページと同一のページに書き込む態様の書き込みアクセスが頻発するブロックに関して、今回の書き込みアクセスがページの境界を跨がない場合には、ブロック単位で論物変換を行う第2ファイルシステム32を適用することにより、不要な書き込みや消去の発生を回避又は抑制することが可能となる。
また、上記実施の形態1に係る半導体記憶装置1によれば、制御部2は、書き込みデータ長の平均値がしきい値TH1を超える場合において、カウンタ25〜27の中でカウンタ値が最も大きいカウンタが複数存在する場合には、現在選択されているファイルシステムを維持する。このように、カウンタ値が最も大きいカウンタが複数存在する場合には、今回のアクセスにおいてはファイルシステムの選択を行わず、現在選択されているファイルシステムを維持することにより、適用されるファイルシステムが頻繁に変更されるという事態を回避することが可能となる。
また、上記実施の形態1の変形例に係る半導体記憶装置1によれば、制御部2は、書き込みデータ長の平均値がしきい値TH1以下である場合には、第1ファイルシステム31を選択する。このように、データサイズが小さいデータを書き込む態様の書き込みアクセスが頻発するブロックに関しては、ページ単位で論物変換を行う第1ファイルシステム31を適用することにより、不要な書き込みや消去の発生を回避又は抑制することが可能となる。また、制御部2は、書き込みデータ長の平均値がしきい値TH1を超える場合において、順方向カウンタ25(第1のカウンタ)のカウンタ値が非順方向カウンタ28(第2のカウンタ)のカウンタ値より大きい場合には、第2ファイルシステム32を選択する。このように、データサイズが大きいデータをシーケンシャルアクセスによって書き込む態様の書き込みアクセスが頻発するブロックに関しては、ブロック単位で論物変換を行う第2ファイルシステム32を適用することにより、不要な書き込みや消去の発生を回避又は抑制することが可能となる。また、制御部2は、書き込みデータ長の平均値がしきい値TH1を超える場合において、順方向カウンタ25のカウンタ値が非順方向カウンタ28のカウンタ値より小さい場合には、第1ファイルシステム31を選択する。このように、データサイズが大きいデータをランダムアクセスによって書き込む態様の書き込みアクセスが頻発するブロックに関しては、ページ単位で論物変換を行う第1ファイルシステム31を適用することにより、不要な書き込みや消去の発生を回避又は抑制することが可能となる。
また、上記実施の形態1の変形例に係る半導体記憶装置1によれば、制御部2は、書き込みデータ長の平均値がしきい値TH1を超える場合において、順方向カウンタ25のカウンタ値が非順方向カウンタ28のカウンタ値に等しい場合には、現在選択されているファイルシステムを維持する。このように、順方向カウンタ25のカウンタ値が非順方向カウンタ28のカウンタ値に等しい場合には、今回のアクセスにおいてはファイルシステムの選択を行わず、現在選択されているファイルシステムを維持することにより、適用されるファイルシステムが頻繁に変更されるという事態を回避することが可能となる。
また、上記実施の形態2に係る半導体記憶装置1によれば、制御部2は、書き込みデータ長の平均値がしきい値TH1以下である場合には、第1ファイルシステム31を選択する。このように、データサイズが小さいデータを書き込む態様の書き込みアクセスが頻発するブロックに関しては、ページ単位で論物変換を行う第1ファイルシステム31を適用することにより、不要な書き込みや消去の発生を回避又は抑制することが可能となる。また、制御部2は、書き込みデータ長の平均値がしきい値TH1を超える場合には、第2ファイルシステム32を選択する。このように、データサイズが大きいデータを書き込む態様の書き込みアクセスが頻発するブロックに関しては、ブロック単位で論物変換を行う第2ファイルシステム32を適用することにより、不要な書き込みや消去の発生を回避又は抑制することが可能となる。
また、上記実施の形態3に係る半導体記憶装置1によれば、制御部2は、カウンタ25〜27の中で順方向カウンタ25(第1のカウンタ)のカウンタ値が最も大きい場合には、第2ファイルシステム32を選択する。このように、データをシーケンシャルアクセスによって書き込む態様の書き込みアクセスが頻発するブロックに関しては、ブロック単位で論物変換を行う第2ファイルシステム32を適用することにより、不要な書き込みや消去の発生を回避又は抑制することが可能となる。また、制御部2は、カウンタ25〜27の中で逆方向カウンタ26(第2のカウンタ)のカウンタ値が最も大きい場合には、第1ファイルシステム31を選択する。このように、データをランダムアクセスによって書き込む態様の書き込みアクセスが頻発するブロックに関しては、ページ単位で論物変換を行う第1ファイルシステム31を適用することにより、不要な書き込みや消去の発生を回避又は抑制することが可能となる。
また、上記実施の形態3に係る半導体記憶装置1によれば、制御部2は、カウンタ25〜27の中で同一カウンタ27(第3のカウンタ)のカウンタ値が最も大きい場合において、今回の書き込みアクセスがページの境界を跨ぐ場合には、第1ファイルシステム31を選択する。このように、前回にアクセスしたページと同一のページにデータを書き込む態様の書き込みアクセスが頻発するブロックに関して、今回の書き込みアクセスがページの境界を跨ぐ場合には、ページ単位で論物変換を行う第1ファイルシステム31を適用することにより、不要な書き込みや消去の発生を回避又は抑制することが可能となる。また、制御部2は、カウンタ25〜27の中で同一カウンタ27のカウンタ値が最も大きい場合において、今回の書き込みアクセスがページの境界を跨がない場合には、第2ファイルシステム32を選択する。このように、前回にアクセスしたページと同一のページにデータを書き込む態様の書き込みアクセスが頻発するブロックに関して、今回の書き込みアクセスがページの境界を跨がない場合には、ブロック単位で論物変換を行う第2ファイルシステム32を適用することにより、不要な書き込みや消去の発生を回避又は抑制することが可能となる。
また、上記実施の形態3に係る半導体記憶装置1によれば、制御部2は、カウンタ25〜27の中でカウンタ値が最も大きいカウンタが複数存在する場合には、現在選択されているファイルシステムを維持する。このように、カウンタ値が最も大きいカウンタが複数存在する場合には、今回のアクセスにおいてはファイルシステムの選択を行わず、現在選択されているファイルシステムを維持することにより、適用されるファイルシステムが頻繁に変更されるという事態を回避することが可能となる。
また、上記実施の形態3の変形例に係る半導体記憶装置1によれば、制御部2は、順方向カウンタ25(第1のカウンタ)のカウンタ値が非順方向カウンタ28(第2のカウンタ)のカウンタ値より大きい場合には、第2ファイルシステム32を選択する。このように、データをシーケンシャルアクセスによって書き込む態様の書き込みアクセスが頻発するブロックに関しては、ブロック単位で論物変換を行う第2ファイルシステム32を適用することにより、不要な書き込みや消去の発生を回避又は抑制することが可能となる。また、制御部2は、順方向カウンタ25のカウンタ値が非順方向カウンタ28のカウンタ値より小さい場合には、第1ファイルシステム31を選択する。このように、データをランダムアクセスによって書き込む態様の書き込みアクセスが頻発するブロックに関しては、ページ単位で論物変換を行う第1ファイルシステム31を適用することにより、不要な書き込みや消去の発生を回避又は抑制することが可能となる。
また、上記実施の形態3の変形例に係る半導体記憶装置1によれば、制御部2は、順方向カウンタ25のカウンタ値が非順方向カウンタ28のカウンタ値に等しい場合には、現在選択されているファイルシステムを維持する。このように、順方向カウンタ25のカウンタ値が非順方向カウンタ28のカウンタ値に等しい場合には、今回のアクセスにおいてはファイルシステムの選択を行わず、現在選択されているファイルシステムを維持することにより、適用されるファイルシステムが頻繁に変更されるという事態を回避することが可能となる。
また、上記実施の形態4に係る半導体記憶装置1によれば、制御部2は、ページの境界を跨ぐ書き込みアクセスが行われた回数がしきい値TH2以下である場合には、第1ファイルシステム31を選択する。このように、ページの境界を跨ぐ書き込みアクセスが頻発しないブロックに関しては、ページ単位で論物変換を行う第1ファイルシステム31を適用することにより、不要な書き込みや消去の発生を回避又は抑制することが可能となる。また、制御部2は、ページの境界を跨ぐ書き込みアクセスが行われた回数がしきい値TH2を超える場合には、第2ファイルシステム32を選択する。このように、ページの境界を跨ぐ書き込みアクセスが頻発するブロックに関しては、ブロック単位で論物変換を行う第2ファイルシステム32を適用することにより、不要な書き込みや消去の発生を回避又は抑制することが可能となる。