(81)【指定国】
AP(BW,GH,GM,KE,LR,LS,MW,MZ,NA,RW,SD,SL,SZ,TZ,UG,ZM,ZW),EA(AM,AZ,BY,KG,KZ,RU,TJ,TM),EP(AL,AT,BE,BG,CH,CY,CZ,DE,DK,EE,ES,FI,FR,GB,GR,HR,HU,IE,IS,IT,LT,LU,LV,MC,MK,MT,NL,NO,PL,PT,RO,RS,SE,SI,SK,SM,TR),OA(BF,BJ,CF,CG,CI,CM,GA,GN,GQ,GW,ML,MR,NE,SN,TD,TG),AE,AG,AL,AM,AO,AT,AU,AZ,BA,BB,BG,BH,BN,BR,BW,BY,BZ,CA,CH,CL,CN,CO,CR,CU,CZ,DE,DK,DM,DO,DZ,EC,EE,EG,ES,FI,GB,GD,GE,GH,GM,GT,HN,HR,HU,ID,IL,IN,IS,JP,KE,KG,KM,KN,KP,KR,KZ,LA,LC,LK,LR,LS,LT,LU,LY,MA,MD,ME,MG,MK,MN,MW,MX,MY,MZ,NA,NG,NI,NO,NZ,OM,PA,PE,PG,PH,PL,PT,QA,RO,RS,RU,RW,SC,SD,SE,SG,SK,SL,SM,ST,SV,SY,TH,TJ,TM,TN,TR,TT,TZ,UA,UG,US,UZ,VC
不揮発性メモリ部、制御部およびインターフェースを有する。制御部は、書き込み要求を受信し、書き込みサイズが消去の管理単位より小さいサイズの受信データの場合に、シーケンシャル管理の書き込みの対象か否かを判定し、シーケンシャル管理の書き込み対象の場合に、消去の管理単位よりも小さいサイズの受信データをシーケンシャルに書き込む第1の書き込み処理を行い、シーケンシャル管理の書き込み対象とならない場合に、消去の管理単位よりも小さいサイズの受信データを書き込みの管理単位で書き込む第2の書き込み処理を行う。
前記シーケンシャル管理の書き込み対象か否かを、前記インターフェースを通してホスト機器に明示させ、書き込み領域の割り当て管理もホストが行う請求項1に記載の不揮発性メモリ装置。
不揮発性メモリ装置の特定領域に対して消去の管理単位より小さいサイズのデータをシーケンシャル管理で書き込むように指示するホスト側のコマンドが規定される不揮発性メモリ制御装置。
不揮発性メモリ装置の特定領域に対して消去の管理単位より小さいサイズのデータをシーケンシャル管理で書き込むように指示するホスト側のコマンドが規定される不揮発性メモリ制御方法。
【図面の簡単な説明】
【0012】
図1は、本開示を適用できるフラッシュメモリ装置の一例のブロック図である。
図2は、フラッシュメモリの記憶領域の説明のための略線図である。
図3は、並列化されたフラッシュメモリの記憶領域(Pブロックユニット)の説明のための略線図である。
図4は、並列化されたフラッシュメモリの記憶領域(Pページユニット)の説明のための略線図である。
図5は、フラッシュメモリの物理アドレス空間の説明のための略線図である。
図6は、論理アドレス空間の説明のための略線図である。
図7は、Pブロックユニット管理されたデータのデータ構造の説明のための略線図である。
図8は、シーケンシャル管理されたデータのデータ構造の説明のための略線図である。
図9は、Pページユニット管理されたデータのデータ構造の説明のための略線図である。
図10は、管理データを保持するPブロックユニットのデータ構造の説明のための略線図である。
図11は、Pブロックユニット管理に用いる管理データのデータ構造の説明のための略線図である。
図12は、シーケンシャル管理に用いる管理データのデータ構造の説明のための略線図である。
図13は、Pページユニット管理に用いる第1の管理データのデータ構造の説明のための略線図である。
図14は、Pページユニット管理に用いる第2の管理データのデータ構造の説明のための略線図である。
図15は、書き込み処理の全体の流れを示すフローチャートである。
図16は、Pブロックユニット内書き込みの説明のためのフローチャートである。
図17は、フラッシュメモリによってなされるシーケンシャル書き込みの対象の判定方法を説明するためのフローチャートである。
図18は、シーケンシャル管理登録コマンド用テーブルの一例の略線図である。
図19は、シーケンシャル管理登録コマンドの処理のフローチャートである。
図20は、書き込みのシーケンシャル性をホストに明示させる方法であって、ホスト機器がシーケンシャル管理登録コマンド用テーブルを管理しない場合の方法の処理のフローチャートである。
図21は、書き込みコマンドが過去のシーケンシャル管理登録コマンドと整合しているか否かを判定する処理のフローチャートである。
図22は、ホスト機器がシーケンシャル管理登録コマンド用テーブルを管理する場合の方法において、シーケンシャル管理登録コマンドの処理のフローチャートである。
図23は、ホスト機器がシーケンシャル管理登録コマンド用テーブルを管理する場合の方法において、シーケンシャル管理登録削除コマンドの処理のフローチャートである。
図24は、Pブロックユニット管理書き込みの処理のフローチャートである。
図25は、シーケンシャル管理書き込みの処理のフローチャートである。
図26は、Pページユニット管理書き込みの処理のフローチャートである。
図27は、各判定方法を比較するための表を示す略線図である。
図28は、従来の方法と本開示の判定方法を比較するための表を示す略線図である。
図29は、書き込み方法の例1を説明するための略線図である。
図30は、書き込み方法の例2を説明するための略線図である。
図31は、書き込み方法の例3を説明するための略線図である。
図32は、書き込み方法の例4を説明するための略線図である。
図33は、読み出し時のLブロックユニットの扱いの説明のための略線図である。
図34は、読み出し時のLブロックユニットの扱いの説明のための略線図である。
図35は、読み出し時のLブロックユニットの扱いの説明のための略線図である。
図36は、読み出し時のLブロックユニットの扱いの説明のための略線図である。
図37は、読み出し時のLブロックユニットの扱いの説明のための略線図である。
図38は、シーケンシャル書き込みを途中終了する場合のLブロックユニットの扱いの説明のための略線図である。
図39は、シーケンシャル書き込みを途中終了する場合のLブロックユニットの扱いの説明のための略線図である。
図40は、シーケンシャル書き込みを途中終了する場合のLブロックユニットの扱いの説明のための略線図である。
図41は、シーケンシャル書き込みを途中終了する場合のLブロックユニットの扱いの説明のための略線図である。
図42は、シーケンシャル管理登録コマンドテーブルの構成方法の説明のための略線図である。
【発明を実施するための形態】
【0013】
以下に説明する実施の形態は、本開示の好適な具体例であり、技術的に好ましい種々の限定が付されている。しかしながら、本開示の範囲は、以下の説明において、特に本開示を限定する旨の記載がない限り、これらの実施の形態に限定されないものとする。
以下の説明は、下記の順序にしたがってなされる。
<1.本開示の一実施の形態>
<2.その他応用について>
<3.変形例>
【0014】
<1.本開示の一実施の形態>
「概略」
以下、図面を参照して本開示の一実施の形態について説明する。
図1に示すように、本開示の一実施の形態において、フラッシュメモリ装置1は、フラッシュメモリ部2とメモリ制御部3と外部インターフェース4とを有する。フラッシュメモリ部2にシーケンシャル管理書き込み専用の特定領域が用意される。フラッシュメモリ部2のブロックサイズよりも小さい複数回のシーケンシャル管理書き込み要求をホスト機器11から外部インターフェース4が受信した場合に、特定領域に受信データをシーケンシャルに書き込む機構をメモリ制御部3が有する。
【0015】
一般的なフラッシュメモリ装置では、消去の管理単位として、ブロックによる管理単位(以下ブロックユニットと称する)が用いられ、書き込み管理単位として、ページによる管理単位(以下ページユニットと称する)が用いられる。ブロックユニット未満のサイズの書き込みは、ページユニットごとに管理される。通常、これらの管理は書き込みアクセス毎に独立して行われる。したがって、複数回の論理的に連続したブロックユニット未満の書き込み要求がホスト機器から発行されたとしても、これらのデータが同一のブロックユニットに連続的に書き込まれるとは限らない。すなわち、一般的なフラッシュメモリ装置においては、論理的なシーケンシャルアクセスが物理的なシーケンシャルアクセスになるとは限らない。したがって、ページユニットで管理されているこれらのデータをまとめてブロックユニットで管理する場合、断片化したデータをコピーして同一のブロックユニットに集める操作が必要となる。この操作をガベージコレクションという。ガベージコレクションの操作はホスト機器による要求とは独立して行われるため、ホスト機器からはアクセス速度の瞬間的な低下として観測される。
【0016】
しかしながら、もし複数回のコマンドに渡ってブロックユニットサイズ未満のデータがシーケンシャルに書き込まれるということがあらかじめ分かっていれば、それらの書き込みを同一のブロックユニットにシーケンシャル管理書き込みしておくことにより、後に書き込んだデータをブロックユニット管理に昇格させるときのガベージコレクションを回避することができる。本開示ではこのことに注目し、ホスト機器11からの書き込み要求のシーケンシャル性を判断して物理的な書き込み先を選択する機構をフラッシュメモリ装置1のメモリ制御部3に構成する。
【0017】
「データ構造」
・物理アドレス空間と論理アドレス空間
はじめに、本開示のフラッシュメモリ装置1で構成するフラッシュメモリ上のアドレス空間(物理アドレス空間)と、外部インターフェース4を通じたホスト機器11とのデータのやり取りに用いる仮想的なアドレス空間(論理アドレス空間)について説明する。
【0018】
図2に示すように、フラッシュメモリの記憶領域は複数の物理ブロックからなり、1つの物理ブロックは複数の物理ページからなる。物理ブロックは消去の最小単位、物理ページは書き込みの最小単位である。この物理構成を考慮して、フラッシュメモリのアドレシングには、物理ブロックに通し番号をつけた物理ブロックアドレスと、各物理ブロック内の物理ページに通し番号をつけた物理ページアドレスが用いられる。
【0019】
高速化のために複数のフラッシュが並列化される。このような並列動作を想定して、本開示では
図3に示すように、各フラッシュから1つずつ物理ブロックを選択してまとめたものを物理ブロックユニット(Pブロックユニットと適宜称する)とし、これに番号をつけたものを物理ブロックユニットアドレスとする。同様に、
図4に示すように、各フラッシュから同一Pブロックユニット内の物理ページを1つずつ集めたものを物理ページユニット(Pページユニットと適宜称する)とし、これに番号をつけたものを物理ページユニットアドレスとする。
【0020】
フラッシュメモリには個体差があり、特定のブロックの読み書き消去が機能しない場合がある(不良ブロック)。このようなブロックに操作を行うことを回避するために、Pブロックユニットは不良でない物理ブロックばかりを集めて構成するものとする。このため、同一Pブロックユニットに含まれる物理ブロック群の物理ブロックアドレスは互いに異なっていても良い。なお、並列数が1の場合、Pブロックユニットと物理ブロックとのそれぞれのサイズが一致し、Pページユニットと物理ページとのそれぞれのサイズが一致する。
【0021】
上述した要素を用いて物理アドレス空間を構成したものを
図5に示す。この空間は複数(b個)のPブロックユニットからなり、あるPブロックユニットは複数(p個)のPページユニットからなる。論理アドレス空間の最小サイズと対応を取るため、Pページユニットを複数(s個)の物理セクタ(Pセクタと適宜称する)に分割する。これらのアドレスを用いてフラッシュメモリ上の物理的な位置を特定するためには、Pブロックユニットアドレス、Pページユニットアドレス、Pセクタアドレスを指定すれば良い。
【0022】
図6に示すように、上述した物理アドレス空間と整合の取りやすいように論理アドレス空間が構成される。この空間は複数(b個)の論理ブロックユニット(Lブロックユニットと適宜称する)からなり、あるLブロックユニットは複数(p個)の論理ページユニット(Lページユニットと適宜称する)からなる。Lページユニットをアドレシングの最小サイズで分割したものを論理セクタ(Lセクタと適宜称する)とし、このLセクタに対してアドレシングを行う。
図6に示すように、ある論理アドレスを指定すると、対応するLセクタ、Lページユニット、Lブロックユニットの組が一意に定まる。
【0023】
・ユーザデータを保持するPブロックユニットのデータ構造
論理空間上のデータを物理空間上で保持するためのデータ構造について説明する。本開示では、このデータ構造として、Pブロックユニット管理、シーケンシャル管理、Pページユニット管理という3種類の構造を用意する。
【0024】
(1)Pブロックユニット管理されたデータのデータ構造
図7は、Pブロックユニット管理されたデータを保持する物理ブロックユニットを示す。特定のLブロックユニットがオフセット0から最後までデータで埋まっており、かつそのLブロックユニットのデータが全て同一のPブロックユニットに保持されている場合にこの管理が可能となる。
図7に示すように、このPブロックユニットに含まれる各物理ページはメタデータ、メタデータに対するECC(Error Correcting Code)情報、ユーザデータ、ユーザデータに対するECC情報を持つ。メタデータはPブロックユニット管理であることを示すブロックタイプ、自分の世代を示すリビジョン、自分に対応するLブロックユニットアドレスとLページユニットアドレスを持つ。上述したPブロックユニット管理の性質より、LブロックユニットアドレスはPブロックユニット内の全物理ページに渡って同一となり、Lページユニットアドレスは自分が属しているPページユニットアドレスと同一となる。
【0025】
(2)シーケンシャル管理されたデータのデータ構造
図8は、シーケンシャル管理されたデータを保持する物理ブロックユニットを示す。特定のLブロックユニットがオフセット0から途中までデータで埋まっており、かつそのデータが全て同一のPブロックユニットにオフセット0からシーケンシャルに保持されていて、さらにそれ以外のデータが同じPブロックユニットに存在しない場合にこの管理が可能となる。
図8に示すように、このPブロックユニットに含まれる書きこみ済の各物理ページはメタデータ、メタデータに対するECC情報、ユーザデータ、ユーザデータに対するECC情報を持つ。メタデータはシーケンシャル管理であることを示すブロックタイプ、自分の世代を示すリビジョン、自分に対応するLブロックユニットアドレスとLページユニットアドレスを持つ。上述したシーケンシャル管理の性質より、Pブロックユニット内の全書きこみ済物理ページに渡ってLブロックユニットアドレスは同一となり、Lページユニットアドレスは自分が属しているPページユニットアドレスと同一となる。また未書き込み物理ページは1で埋められる。
【0026】
(3)Pページユニット管理されたデータのデータ構造
図9は、Pページユニット管理されたデータを保持する物理ブロックユニットを示す。Pブロックユニット管理、シーケンシャル管理のいずれもできない場合にこの管理が行われる。
図9に示すように、このPブロックユニットに含まれる書きこみ済の各物理ページはメタデータ、メタデータに対するECC情報、ユーザデータ、ユーザデータに対するECC情報を持つ。メタデータはPページユニット管理であることを示すブロックタイプ、自分の世代を示すリビジョン、自分に対応するLブロックユニットアドレスとLページユニットアドレスを持つ。また未書き込み物理ページは1で埋められる。
【0027】
・管理データを保持するPブロックユニットのデータ構造
上述したユーザデータを管理するためのデータ(管理データ)を物理空間上で保持するためのデータ構造について説明する。まず、
図10は、管理データを保持するPブロックユニットを示す。
図10に示すように、このPブロックユニットに含まれる各物理ページはメタデータ、メタデータに対するECC情報、管理データ、管理データに対するECC情報を持つ。メタデータは管理データであることを示すブロックタイプ、自分の世代を示すリビジョンからなる。以下、上述した3種類のユーザデータを管理するための管理データ部の構成方法をそれぞれ示す。
【0028】
(1)Pブロックユニット管理に用いる管理データのデータ構造
図11は、Pブロックユニット管理のための管理データを示す。管理データは0からlb−1までのLブロックユニットアドレスと、それぞれのアドレスに対応するPブロックユニットアドレスの組から構成される。あるLブロックユニットがPブロックユニット管理されていない場合は、そのLブロックユニットに対応するPブロックユニットには0xFFFF(0xは、16進表記であることを表す)が格納される。
【0029】
(2)シーケンシャル管理に用いる管理データのデータ構造
図12は、シーケンシャル管理のための管理データを示す。管理データは最大e個のLブロックユニットアドレスと、それぞれのアドレスに対応するPブロックユニットアドレス、そのアドレスに対するシーケンシャル書き込み済最終Pページユニットアドレスの組から構成される。ガベージコレクション等によってシーケンシャル管理されなくなったエントリの各アドレスには0xFFFFが格納される。
【0030】
(3)Pページユニット管理に用いる管理データのデータ構造
図13および
図14は、Pページユニット管理のための管理データを示す。管理データは2種類に分かれている。第1の管理データは最大d個のLブロックユニットアドレスと、それぞれのアドレスに対応するPブロックユニットアドレス列の組からなる(Pページユニット管理においては単一のLブロックユニットアドレスのデータを保持するPブロックユニットが複数に渡る可能性があることに注意)。ガベージコレクション等によってPページユニット管理されなくなったエントリの各アドレスには0xFFFFが格納される。第2の管理データは同一のLブロックユニットに属する各Lページユニットアドレスと、それぞれのアドレスに対応するPブロックユニットアドレス、Pページユニットアドレスの組から構成される(この管理データは第1の管理データで管理されているそれぞれのLブロックユニットに対して1つ作られる)。データが存在しないエントリの各アドレスには0xFFFFが格納される。
【0031】
・各データ構造におけるブロックユニット数の制限とガベージコレクション
上述した(2)および(3)において、管理可能な最大ブロックユニットアドレス数をそれぞれe、d個と制限した理由について述べる。Pブロックユニット管理されたデータでは、LブロックユニットとPブロックユニットが一対一対応し、かつ中身がデータで埋まっているため、論理空間での書き込み量と物理空間の消費量がほぼ一致する(管理データが必要なため、完全には一致しない)。
【0032】
しかしながら、シーケンシャル管理やPページユニット管理においては、論理空間での書き込み量がPブロックユニットサイズに達していなくても1つのPブロックユニットが確保される。すなわち、論理空間での書き込み量よりも物理空間の消費量の方が大きくなる。その比は最大で(Lブロックユニットサイズ/Lセクタサイズ)程度である。
【0033】
したがって、ホスト機器がどのような論理空間の使い方をしても全データがフラッシュメモリ内に保持できることを保証するためには、保証する領域サイズに応じてシーケンシャル管理やPページユニット管理が可能なPブロックユニット数を制限する必要がある。これが上述した(2)および(3)において課した制限の由来である。
【0034】
この制限一杯まで管理データのエントリがあるときに、さらにPブロックユニットサイズ未満の書き込みを行う場合、すでにあるエントリをPブロックユニット管理に昇格する操作が必要となる。この操作をガベージコレクションという。本開示はPブロックユニット管理とPページユニット管理のみで構成された一般的なフラッシュメモリコントローラにシーケンシャル管理を加え、ガベージコレクションの頻度を削減することを目的としている。その具体的な内容に関しては、以下のアルゴリズムにおいて説明する。
【0035】
「アルゴリズム」
ここまでに説明したデータ構造を用いて書き込みを行うアルゴリズムを述べる。
図15のフローチャートを参照して、書き込み処理の全体の処理の流れについて説明する。
【0036】
ステップST1:フラッシュメモリ装置1はホスト機器11から書き込みコマンドを受信する。
ステップST2:書き込み先の論理アドレスから管理データを用いて書き込み先のPブロックユニット群を得る。
ステップST3:シーケンシャル管理登録コマンドを用いる制御方法(後述の判定方法2および3)の場合は得られたPブロックユニット群が過去のシーケンシャル管理登録コマンドと整合しているかを判断する。
ステップST4:Pブロックユニット群が過去のシーケンシャル管理登録コマンドと整合していない場合は書き込みコマンドを不受理として終了する。
【0037】
ステップST5:Pブロックユニット群が過去のシーケンシャル管理登録コマンドと整合している場合、またはシーケンシャル管理登録コマンドを用いない制御方法(後述の判定方法1)の場合は、取得したPブロックユニット群から未書き込みのPブロックユニットを一つ取り出す。
ステップST6:Pブロックユニット内の書き込み処理を行う。
ステップST7:全てのデータを書き終えたかどうかが判定される。書き終えていないと判定される場合には、処理がステップST5に戻り、Pブロックユニット内書き込み処理がなされる。
ステップST8:ステップST7において、全てのデータを書き終えたと判定されると、処理が終了する。
なお、シーケンシャル管理登録コマンドと整合性判定に関しては後述する。
【0038】
図16のフローチャートは、Pブロックユニット内書き込みの内容を示す。Pブロックユニット内書き込みはPブロックユニット管理書き込み、シーケンシャル書き込み、Pページユニット管理書き込みの三種類に分かれる。
【0039】
ステップST11:書きこみサイズがPブロックユニットサイズに一致しているかどうかを判定する。一致している場合、Pブロックユニット管理書き込みの処理を行う。
ステップST12:ステップST11において、一致していないと判定される場合、シーケンシャル管理の対象となる書き込みか否かが判定される。この判定方法については後述する。対象となると判定された場合、シーケンシャル管理書き込みを行う。それ以外の場合、Pページユニット管理書き込みを行う。
【0040】
本開示の一実施の形態では、シーケンシャル書き込みの対象判定方法を3種類提案する。これらはそれぞれに特有のメリットとデメリットがあり、制御の目的に応じて使い分けることが望ましい。
・判定方法1
フラッシュメモリ装置1が自動的に判断する方法である。
図17は、この方法の流れを示すフローチャートである。
ステップST13:まず管理テーブルより当該書き込みの対象Pブロックユニットが既にシーケンシャル管理されているか否かを判定する。
ステップST14:ステップST13において、管理されていると判定される場合、その続きにシーケンシャルにデータを追記可能かどうかの判定を行う。この判定方法には実装により任意性があるが、例えば最終書き込み済物理ページの次の物理ページから書き込みが始まっている場合に追記可能という判定が考えられる。
ステップST15:ステップST14における判定結果が可能であることを示す場合、シーケンシャル管理書き込み対象と判断し、肯定を返す。
【0041】
ステップST16:ステップST14において、追記可能でないと判定される場合はシーケンシャル管理の終了処理を行う。終了処理とは、当該書き込みの対象PブロックユニットをPページユニット管理に降格する処理である。すなわち、シーケンシャル管理テーブルから当該Pブロックユニットのエントリを消去し、Pページユニット管理テーブルに新しく当該Pブロックユニットのエントリを作成する。なお、ここでPページユニット管理テーブルに空きが無かった場合は、ガベージコレクションを用いてPページユニット管理ブロックをPブロックユニット管理に昇格し、空きを作る。ガベージコレクションの方法は後述する。
ステップST18:シーケンシャル管理書き込み対象でないと判断した場合には否定を返す。
【0042】
ステップST17:当該書き込みの対象Pブロックユニットがまだシーケンシャル管理されていなかった場合は、シーケンシャル管理可能な新規書き込みかどうかを判定する。この判定方法にも実装により任意性があるが、例えばPブロックユニットサイズの1/4以上の新規書き込みをシーケンシャル管理可能とするという判定が考えられる。
もし可能であった場合、シーケンシャル管理書き込み対象と判断し、ステップST15に処理が移行し、肯定を返す。そうでない場合はシーケンシャル管理書き込み対象でないと判断し、ステップST18に処理が移行し、否定を返す。
【0043】
・判定方法2
書き込みのシーケンシャル性をホストに明示させる方法である。この方法はシーケンシャル管理テーブルをホスト機器が管理するかどうかで2種類に分けられる。ホスト機器が管理しないものを方法2とし、ホスト機器が管理するものを方法3とする。最初に方法2について述べる。
【0044】
方法2では、シーケンシャル書き込みを行う前にLブロックユニットをシーケンシャル管理登録コマンドによってシーケンシャル管理登録コマンド用テーブルに登録する。
図18は、この管理テーブルを示す。このテーブルはデータ構造の管理テーブルの節で述べたものと同じ構造(
図10参照)で保持される。この管理テーブルはLブロックユニット0からlb−1のそれぞれに対して、それがシーケンシャル管理登録コマンドによって登録されたかどうかを示す。シーケンシャル管理登録コマンドによって登録されている場合には1、登録されていない場合には0がそれぞれ対応するエントリとして格納される。
【0045】
図19は、シーケンシャル管理登録コマンドの処理フローチャートを示す。
ステップST21:フラッシュメモリ装置1はホスト機器11から登録コマンドを受信する。
ステップST22:登録コマンドはパラメータとしてLブロックユニットをとり、そのLブロックユニットが未登録であるか否かが判定される。
ステップST23:Lブロックユニットが未登録であればシーケンシャル管理登録コマンド用テーブルに登録する。ステップST24で処理が終了する。
ステップST25:Lブロックユニットが既登録であればコマンドを不受理として終了する。
【0046】
図20は、方法2の判定の処理を示すフローチャートである。
ステップST26:シーケンシャル管理登録コマンド用テーブルを走査し、登録されているか否かが判定される。
ステップST27:登録されている場合はシーケンシャル管理書き込み対象と判断し、シーケンシャル管理書き込みの対象であるとの判定結果を返す。
ステップST28:登録されていない場合はシーケンシャル管理書き込み対象でないと判断し、否定の結果を返す。
【0047】
シーケンシャル管理登録コマンドを用いる場合、
図15におけるステップST3について説明したように、書き込みコマンド毎にその書き込みが過去のシーケンシャル管理登録コマンドと整合しているかを判定する必要がある。
図21は、判定のフローチャートを示す。
【0048】
ステップST31:書き込み対象となるPブロックユニット群から、シーケンシャル管理登録コマンド用テーブルに登録されているLブロックユニットに対応するPブロックユニットを一つ取り出す。
ステップST32:既にシーケンシャル管理されているPブロックユニットかどうかが判定される。
ステップST33:ステップST32の判定の結果が否定の場合にシーケンシャル管理可能な新規書き込みかどうかが判定される。
ステップST34:全ての登録済Pブロックユニットを調べ終えたかどうかが判定される。
ステップST35:調べ終えたと判定される場合には、整合性があると判定し、肯定を返す。
【0049】
ステップST36:ステップST32において、既にシーケンシャル管理されているPブロックユニットと判定されると、シーケンシャル管理のまま追記可能かどうかが判定される。追記可能と判定されると、ステップST34に処理が移る。
ステップST37:ステップST33において、シーケンシャル管理可能な新規書き込みでないと判定されると、整合性がないと判定され、否定を返す。同様に、ステップST36において、シーケンシャル管理のまま追記可能でないと判定されると、整合性がないと判定され、否定を返す。
【0050】
このように、書き込み対象となるPブロックユニット群から、シーケンシャル管理登録コマンド用テーブルに登録されているLブロックユニットに対応するPブロックユニットを一つずつ取り出し、それが引き続きシーケンシャル管理可能であるかを判定している。全ての調査対象が引き続きシーケンシャル管理可能な場合に整合性があると判断し、そうでない場合は整合性がないと判断する。
【0051】
・判定方法3
書き込みのシーケンシャル性をホストに明示させる方法のうち、シーケンシャル管理テーブルをホスト機器が管理するものである。判定方法2と判定方法3との違いは、シーケンシャル管理登録コマンド用テーブルに登録可能なエントリ数が
図12のe個に制限される点である。既にエントリがe個ある時点でさらにシーケンシャル管理登録コマンドを発行すると、コマンドを受理しない。
図22は判定方法3におけるシーケンシャル管理登録コマンドの処理フローチャートを示す。
ステップST41:登録コマンドを受信する。
ステップST42:未登録のLブロックユニットかどうかが判定される。
ステップST43:未登録のLブロックユニットでない場合には、コマンドが受理されない。
【0052】
ステップST44:未登録のLブロックユニットである場合には、シーケンシャル管理テーブルに空きがあるかどうかが調べられる。空きがないと判定されると、コマンドが受理されない(ステップST43)。
ステップST45:ステップST44において、シーケンシャル管理テーブルに空きがあると判定されると、シーケンシャル管理登録コマンドテーブルにLブロックユニットが登録される。
ステップST46:登録コマンドに対する処理が終了する。
【0053】
この方法を用いる場合、シーケンシャル管理登録削除コマンドをさらに設ける。
図23は、削除コマンドに関する処理の流れを示すフローチャートである。
ステップST51:削除コマンドを受信する。
ステップST52:登録済のLブロックユニットかどうかが判定される。
ステップST53:登録済のLブロックユニットでない場合には、コマンドが受理されない。
【0054】
ステップST54:最終物理ページまでデータが埋まっている(書き込み済み)かどうかが調べられる。
ステップST55:最終物理ページまでデータが埋まっていないと判定されると、Pブロックユニット管理への昇格処理がなされる。すなわち、昇格のためのガベージコレクションが必要となる。
ステップST56:ステップST54において、最終物理ページまでデータが埋まっていると判定されるか、またはステップST55の処理の後に、シーケンシャル管理登録コマンドテーブルからLブロックユニットが削除される。
ステップST57:登録削除コマンドに対する処理が終了する。
【0055】
・Pブロックユニット管理書き込み
上述した判定方法1乃至3の方法を用いることにより、対象の書き込みがPブロックユニット管理書き込み、シーケンシャル書き込み、Pページユニット管理書き込みのいずれであるかが判定できる。以下、これら三種類の書き込みの方法を述べる。最初にPブロックユニット管理書き込みの方法を述べる。
図24は、Pブロックユニット管理書き込みの方法の処理のフローチャートである。
【0056】
ステップST60:Pブロックユニット管理書き込みでは、新しく未書き込みのPブロックユニットを取得する。
ステップST61:取得したPブロックユニットに対してデータの書き込みを行う。
ステップST62:書き込みが終わると、Pブロックユニット管理テーブルに書き込み対象Pブロックユニットを登録して終了する。
【0057】
・シーケンシャル管理書き込み
図25は、シーケンシャル管理書き込みの処理の流れを示すフローチャートである。
ステップST70:既にシーケンシャル管理されているPブロックユニットかどうかが判定される。すなわち、書き込みが新規書き込みであるか追記書き込みであるかが判断される。
【0058】
ステップST71:もし新規書き込みであった場合はシーケンシャル管理テーブルを走査して空きを探す。
ステップST72:空きがない場合はガベージコレクションを用いてシーケンシャル管理ブロックをPブロックユニット管理に昇格し、空きを作る。なお、方法3を用いた場合、空きがない書き込みはコマンドの段階で弾かれるため、この段階では必ず空きが存在する。
ステップST73:以上の操作で取得した空きエントリに新しくPブロックユニットを登録する。
ステップST74:データを新規に書き込む。
ステップST75:書き込みを終えるとシーケンシャル管理テーブルを更新し、終了する。
【0059】
ステップST76:ステップST70において、追記書き込みと判定された場合、データをシーケンシャルに追記する。シーケンシャル管理テーブルを更新する。
ステップST77:最終物理ページまでデータが埋まったかどうかが判定される。
ステップST78:最終物理ページまでデータが埋まったと判定される場合は、Pブロックユニット管理への昇格処理を行い、終了する。すなわち、シーケンシャル管理テーブルの該当エントリを削除し、Pブロックユニット管理テーブルに書き込み済Pブロックユニットを登録する。
ステップST77において、最終物理ページまでデータが埋まっていないと判定される場合は、処理がステップST75に移り、シーケンシャル管理テーブルが更新されて終了する。
【0060】
・Pページユニット管理書き込み
図26は、Pページユニット管理書き込みの処理の流れを示すフローチャートである。
ステップST80:この書き込みでは、まず書き込み先が既にPページユニット管理されているかどうかを判定する。
ステップST81:もしPページユニット管理されていなかった場合はPページユニット管理テーブルを走査して空きを探す。
ステップST82:空きがない場合はガベージコレクションを用いてPページユニット管理ブロックをPブロックユニット管理に昇格し、空きを作る。
ステップST83:空きエントリに新しくPブロックユニットを登録する。
ステップST84:データを新規書き込む。
ステップST85:書き込みを終えるとPページユニット管理テーブルを更新し、終了する。
ステップST86:既に管理されている書き込みであった場合、データをさらに書き込み、Pページユニット管理テーブルを更新し、終了する。
【0061】
・ガベージコレクション
ガベージコレクションについて説明する。ガベージコレクションとはシーケンシャル管理およびPページユニット管理されているデータをPブロックユニット管理に昇格し、それらの管理テーブルに空きを作る操作である。この操作が必要となる理由はデータ構造の項で説明した。
【0062】
まずPページユニット管理をPブロックユニット管理に昇格するガベージコレクションを説明する。まずPページユニット管理テーブルから昇格するLブロックユニットを選択し、各管理テーブルを走査して対象のLブロックユニットのデータを保持しているPブロックユニット群を取得する。これらのPブロックユニット群から、新しいPブロックユニットに、昇格対象のLブロックユニットに対応するデータをコピーし、各管理テーブルを更新する。
【0063】
次にシーケンシャル管理をPブロックユニット管理に昇格するガベージコレクションを説明する。まずシーケンシャル管理テーブルから昇格するLブロックユニットを選択し、それに対応するPブロックユニットと書き込み済最終Pページユニットを得る。その後、各管理テーブルを走査して書き込み済最終Pページユニット以降の未書き込み領域にデータを保持しているPブロックユニット群を取得する。以上の操作によって得たPブロックユニット群から、新しいPブロックユニットに、昇格対象のLブロックユニットに対応するデータをコピーし、各管理テーブルを更新する。
【0064】
なお、この方法の構成から容易に推察されるように、昇格対象のLブロックユニットがデータで埋まっている場合(書き込み済最終Pページユニットが当該Pブロックユニットの最終Pページユニットに一致する場合)、コピー対象となるPブロックユニットはただひとつ、シーケンシャル管理されていた当のPブロックユニットに定まる。すなわち、昇格対象のLブロックユニットのデータを保持している他のPブロックユニットが存在しないため、ガベージコレクションが不要となる。この性質によりガベージコレクションを削減し、パフォーマンス低下を抑制することが本開示の狙いである。
【0065】
・方法1〜3の比較
上述した判定方法1〜3の違いを述べる。
図27は、比較の表である。従来手法とは、本開示におけるシーケンシャル管理を行わない場合である。まず、書き込みがシーケンシャルであるかどうかを判断する主体は方法1ではフラッシュメモリ装置であるのに対し、方法2および方法3ではホスト機器である。
【0066】
方法2ではホスト機器はシーケンシャル管理テーブルの登録のみを行い、その制御はフラッシュメモリ装置が行う。これに対して方法3では、シーケンシャル管理テーブルの削除(登録数の制御)までホスト機器が行う。すなわち、方法1および方法2ではシーケンシャル管理テーブルを制御できる主体はフラッシュメモリ装置のみであるのに対し、方法3ではホスト機器もシーケンシャル管理テーブルを制御できる。
【0067】
これら3種類の方法のいずれかを用いることにより、シーケンシャル書き込みに対するガベージコレクションを防ぐことができる。ただし、シーケンシャル書き込みが途中で破れた場合や、シーケンシャル管理テーブルに空きがない場合はこの限りではない。方法1では、いずれの場合においてもガベージコレクションを行う。方法2では、シーケンシャル性が破れるような書き込みをコマンドの段階で受理しないため、この場合のガベージコレクションも防ぐことができる。しかしながら、シーケンシャル管理テーブルに空きがない場合はガベージコレクションを行う。方法3では、シーケンシャル管理テーブルに空きがない場合もコマンドの段階で受理しないため、この場合におけるガベージコレクションも防ぐことができる。
【0068】
「一実施の形態の効果」
本開示を用いることにより、Pブロックユニット未満の書き込みに対しても、それがシーケンシャルなアクセスである限り、ガベージコレクションによる速度低下を回避することができる。よって、ホスト機器が小刻みに連続的にデータを書き込むような場合にも、アクセスパターンを変更せずに安定したパフォーマンスでのアクセスを提供することが可能になる。また、バッファサイズの制限されたホスト機器では、そもそもPブロックユニット単位でアクセスを行うことができない。このようなホスト機器に関しては従来連続書き込みでのガベージコレクションは不可避であった。しかしながら、本開示を用いることにより、こうしたホスト機器に対しても、安定したパフォーマンスでのアクセスを提供することが可能となる。
【0069】
さらに、本開示によれば、部分的にシーケンシャルなアクセスであっても、シーケンシャル部分に関して本手法を用いることにより、やはりこの部分のガベージコレクションを抑制できる。したがって、数回単位でデータとメタデータが交互に書き込まれるような、ファイルシステムに固有のアクセスに対しても、本手法は有効である。FATに代表される多くのファイルシステムは通常このようなアクセスパターンで書き込みを行うため、本開示を用いることでパフォーマンスの改善が期待できる。
【0070】
本開示は、シーケンシャル管理されるPブロックユニットの個数を1つに限定していない。したがって、複数のデータを交互にシーケンシャル書き込みするような局面にも適用可能である。このことを応用すると、データの他にメタデータもシーケンシャル書き込みするような制御を行って、メタデータ書き込みにおけるパフォーマンス低下を防ぐようなことも可能であると考えられる。
【0071】
本開示の方法3を用いると、ホスト機器が部分的にフラッシュメモリ装置のガベージコレクションを制御できる。これを応用すると、確実に速度低下が起こらないことが望まれる重要な書き込みに対してシーケンシャル指定を行うことによって、選択的にガベージコレクションを回避するような制御も可能である。
【0072】
本開示と従来手法との相違をより明らかにするために、この相違が現れるような書き込みの例について以下に説明する。例えば4種類の書き込み方法に対して従来手法と本開示の手法がどのように動作するかを説明する。以下に説明する動作例の一覧を
図28に示す。
【0073】
「各書き込み方法の説明」
以下、書き込み方法の例1〜例4について説明する。なお、簡単のため、以下の例1〜例4の書き込みは全て、過去に管理されたことのない新規Pブロックユニットへの書き込みと仮定する。また、シーケンシャル管理テーブル、Pページユニット管理テーブルは共に4つ以上のエントリを保持できるものと仮定する(d≧4、e≧4と仮定したことに相当する)。
【0074】
・書き込み方法の例1
図29は、書き込み方法の例1を示す。例1では、シーケンシャル管理テーブル(
図12参照)、Pページユニット管理テーブル(
図13参照)が共に空の状態で、あるLブロックユニットに対して(Lブロックユニット/4)のサイズの書き込みを4回、(1)、(2)、(3)、(4)の順に行う。
【0075】
・書き込み方法の例2
図30は、書き込み方法の例2を示す。例2では、シーケンシャル管理テーブル(
図12参照)が空、Pページユニット管理テーブル(
図13参照)が満たん(空きがない)状態で、あるLブロックユニットに対して(Lブロックユニット/4)のサイズの書き込みを4回、(1)、(2)、(3)、(4)の順に行う。
【0076】
・書き込み方法の例3
図31は、書き込み方法の例3を示す。例3では、シーケンシャル管理テーブル(
図12参照)が空、Pページユニット管理テーブル(
図13参照)が満たん(空きがない)状態で、あるLブロックユニットに対して(Lブロックユニット/4)のサイズの書き込みを2回、(1)、(2)の順に行う。書き込み方法の例1および例2と異なり、(1)、(2)はシーケンシャルな書き込みではない。
【0077】
・書き込み方法の例4
図32は、書き込み方法の例4を示す。例4では、シーケンシャル管理テーブル(
図12参照)およびPページユニット管理テーブル(
図13参照)が共に満たん(空きがない)状態で、あるLブロックユニットに対して(Lブロックユニット/4)のサイズの書き込みを4回、(1)、(2)、(3)、(4)の順に行う。
【0078】
・動作の説明
上述した各書き込み方法に対して従来手法および本手法を適用した場合の動作について説明する。
・書き込み方法1の場合
〔従来手法〕
1.書き込み(1)のコマンドを発行すると、
図15に示すフローチャートの処理に入る。従来手法ではシーケンシャル管理を行わないので、最初の分岐のステップST3(過去のシーケンシャルコマンドと整合性があるか?)の結果は、肯定となる。そして、
図15の諸動作を経てPブロック内書き込み処理に処理が移る。
【0079】
2.
図16がPブロック書き込み処理である。書き込み(1)はPブロックユニットサイズに満たないので、最初の分岐のステップST11(書き込みサイズがPブロックユニットサイズに一致)は否定である。さらに、従来手法ではシーケンシャル管理を行わないので、次の分岐のステップST12(シーケンシャル管理の対象となる書き込みか)の結果は否定である。よって、3のPページユニット管理書き込み処理に移る。
【0080】
3.
図26がPページユニット管理書き込みである。書き込み(1)は過去に管理されたことのない新規Pブロックユニットへの書き込みと仮定したため、最初の分岐のステップST80(既にPページユニット管理されているPブロックユニットか)の結果は否定である。Pページユニット管理テーブルは空なので、ステップST81(Pページユニット管理テーブルが空いているか)の結果が肯定であり、ガベージコレクションを行わずにPページユニット管理テーブルに書き込み(1)の内容を登録し(ステップST83)、その後の諸動作を経て書き込み(1)を終了する。
【0081】
4.書き込み(2)のコマンドを発行すると、再度
図15のフローチャートの処理に入る。以降、上述した1および2と同様の動作を経て
図26のPページユニット管理書き込みに移る。書き込み(2)が書き込み(1)と同じPブロックユニットに対して行われるかどうかは従来手法の実装方法に依存する。もし行われる場合は、最初の分岐のステップST80(既にPページユニット管理されているPブロックユニットか)の結果は肯定である。この場合、書き込み(1)と同じPブロックユニットに対して追加で書き込みを行い、その後の諸動作を経て書き込み(1)を終了する。
【0082】
もし書き込み(2)が書き込み(1)と同じPブロックユニットに対して行われない場合は、最初の分岐のステップST80(既にPページユニット管理されているPブロックユニットか)の結果は否定である。(d≧4)と仮定したため、ステップST81(Pページユニット管理テーブルが空いているか)の結果は肯定であり、ガベージコレクションを行わずにPページユニット管理テーブルに書き込み(2)の内容を登録し(ステップST83)、その後の諸動作を経て書き込み(2)を終了する。
【0083】
5.書き込み(3)のコマンドを発行すると、再度
図15のフローチャートの処理に入る。以降、上述した4と同様の動作を経て書き込み(3)を終了する。
6.書き込み(4)のコマンドを発行すると、再度
図15のフローチャートの処理に入る。以降、上述した4と同様の動作を経て書き込み(4)を終了する。
以上により、従来手法では、制御方法によりPページユニット管理テーブルを1〜4個消費して書き込みを終了する。
【0084】
〔手法1〕
1.書き込み(1)のコマンドを発行すると、
図15のフローチャートの処理に入る。手法1ではシーケンシャルコマンドを用いたシーケンシャル管理を行わないので、最初の分岐のステップST3(過去のシーケンシャルコマンドと整合性があるか?)の結果は肯定に入り、
図15の諸動作を経てPブロック内書き込み処理(ステップST6)に処理が移る。
【0085】
2.
図16がPブロック書き込み処理である。書き込み(1)はPブロックユニットサイズに満たないので、最初の分岐のステップST11(書き込みサイズがPブロックユニットサイズに一致)の結果は否定である。次の分岐のステップST12(シーケンシャル管理の対象となる書き込みか)の判定結果を得るため、
図17のフローチャートの処理に入る。
【0086】
3.書き込み(1)は過去に管理されたことのない新規Pブロックユニットへの書き込みと仮定したため、最初の分岐のステップST13(既にシーケンシャル管理されているPブロックユニットか)の結果は否定である。次の分岐のステップST17(シーケンシャル管理可能な書き込みか)の判定方法は実装により任意性があるが、例示した判定方法(Pブロックユニットサイズの1/4以上の新規書き込みをシーケンシャル管理対象とする)を用いることにする。よって、この分岐のステップST17の判定結果は肯定である。したがって、最終的に肯定を得て
図16に処理が戻る。これにより、
図16のステップST12(シーケンシャル管理の対象となる書き込みか)の結果は肯定となり、シーケンシャル管理書き込みに移行する。
【0087】
4.
図25のフローチャートがシーケンシャル管理書き込みのフローである。書き込み(1)は過去に管理されたことのない新規Pブロックユニットへの書き込みと仮定したため、最初の分岐のステップST70(既にシーケンシャル管理されているPブロックユニットか)の結果は否定である。シーケンシャル管理テーブルは空なので、ステップST71(シーケンシャル管理テーブルが空いているか)の結果は肯定であり、ガベージコレクションを行わずにシーケンシャル管理テーブルに書き込み(1)の内容を登録し(ステップST73)、その後の諸動作を経て書き込み(1)を終了する。
【0088】
5.書き込み(2)のコマンドを発行すると、再度
図15のフローチャートの処理に入る。上述の1、2と同様の動作を経て
図17のフローチャートの処理に入る。書き込み(2)は書き込み(1)と同じLブロックユニットの書き込みのため、シーケンシャル管理テーブルを参照すると、書き込み(2)を含むLブロックユニットが登録されていることが確認できる。よって、最初の分岐のステップST13(既にシーケンシャル管理されているPブロックユニットか)の結果は肯定である。
【0089】
書き込み(2)は書き込み(1)のシーケンシャルな続きのため、ステップST14(シーケンシャル管理のまま追記可能か)の結果も肯定である。したがって、最終的に肯定を得て
図16に処理が戻る。これにより、
図16のステップST12(シーケンシャル管理の対象となる書き込みか)の結果は肯定となり、
図25のシーケンシャル管理書き込みのフローチャートの処理に入る。
【0090】
書き込み(2)は書き込み(1)と同じLブロックユニットの書き込みのため、最初の分岐のステップST70(既にシーケンシャル管理されているPブロックユニットか)の結果は肯定である。したがって、書き込み(1)と同一のPブロックユニットにシーケンシャルに書き込み(2)を追記する(ステップST76)。書き込み(1)、(2)は合わせてもPブロックユニットサイズに満たないため、次の分岐のステップST77(最終物理ページまでデータが埋まったか)の結果は否定となり、その後の諸動作を経て書き込み(2)を終了する。
【0091】
6.書き込み(3)のコマンドを発行すると、再度
図15のフローチャートの処理に入る。以降、5と同様の動作を経て書き込み(3)を終了する。
【0092】
7.書き込み(4)のコマンドを発行すると、再度
図15のフローチャートの処理に入る。以降、5と同様の動作を経るが、書き込み(1)、(2)、(3)、(4)を合わせるとPブロックユニットサイズとなるため、5の最後の分岐のステップST77(最終物理ページまでデータが埋まったか)の結果は肯定となり、Pブロックユニット管理への昇格処理(ステップST78)を行なってから書き込み(4)を終了する。
以上により、この手法では、シーケンシャル管理テーブルを1個、書き込み(1)〜(4)の間に使用し、最後のPブロックユニット管理への昇格処理でシーケンシャル管理テーブルを開放して書き込みを終了する。
【0093】
〔手法2〕
前処理.この手法2では、書き込みを行う前にシーケンシャル管理登録コマンドを用いて書き込み(1)を含むLブロックユニットがシーケンシャル管理されることを明示する。
図19のフローチャートがシーケンシャル管理登録コマンドのフローである。書き込み(1)は過去に管理されたことのない新規Pブロックユニットへの書き込みと仮定したため、最初の分岐のステップST22(未登録のLブロックユニットか)の結果は肯定である。よって、シーケンシャル管理登録コマンドテーブル(
図18参照)にLブロックユニットを登録する(ステップST23)。
【0094】
1.書き込み(1)のコマンドを発行すると、
図15のフローチャートの処理に入る。最初の分岐のステップST3(過去のシーケンシャルコマンドと整合性があるか?)を判定するために
図21の判定フローの処理に入る。
【0095】
2.前処理で書き込み(1)を含むLブロックユニットをシーケンシャル管理登録コマンドテーブルに登録したため、書き込み(1)に対応するPブロックユニットが取り出される。書き込み(1)は過去に管理されたことのない新規Pブロックユニットへの書き込みと仮定したため、最初の分岐のステップST32(既にシーケンシャル管理されているPブロックユニットか)の結果は否定である。
【0096】
書き込み(1)はLブロックユニットの先頭から始まっているため、次の分岐のステップST33(シーケンシャル管理可能な新規書き込みか)の結果は肯定である。さらに書き込み(1)のサイズはPブロックユニットサイズ未満のため、書き込み(1)のアクセス先にこれ以外の登録済Pブロックユニットは存在しない。よって、ステップST34(全ての登録済Pブロックユニットを調べ終えた)の結果は肯定となり、最終的に肯定を返却する(ステップST35)。したがって、
図15のステップST3(過去のシーケンシャルコマンドと整合性があるか?)の結果は肯定となり、諸動作を経てPブロック内書き込み処理(ステップST6)に移行する。
【0097】
3.
図16がPブロック内書き込み処理である。書き込み(1)はPブロックユニットサイズに満たないので、最初の分岐のステップST11(書き込みサイズがPブロックユニットサイズに一致)の結果は否定である。書き込み(1)を含むLブロックユニットはシーケンシャル管理登録コマンドテーブルに登録されているため、次の分岐のステップST12(シーケンシャル管理の対象となる書き込みか)の結果は肯定となり、シーケンシャル管理書き込みに移行する。
【0098】
4.
図25がシーケンシャル管理書き込みのフローである。書き込み(1)は過去に管理されたことのない新規Pブロックユニットへの書き込みと仮定したため、最初の分岐のステップST70(既にシーケンシャル管理されているPブロックユニットか)の結果は否定である。シーケンシャル管理テーブルは空なので、ステップST71(シーケンシャル管理テーブルが空いているか)は肯定であり、ガベージコレクションを行わずにシーケンシャル管理テーブルに書き込み(1)の内容を登録し、その後の諸動作を経て書き込み(1)を終了する。
【0099】
5.書き込み(2)のコマンドを発行すると、再度
図15のフローチャートの処理に入り、最初の分岐のステップST3(過去のシーケンシャルコマンドと整合性があるか?)を判定するために
図21の判定フローチャートの処理に入る。前処理で書き込み(1)を含むLブロックユニットをシーケンシャル管理登録コマンドテーブルに登録したため、書き込み(1)に対応するPブロックユニットが取り出される。
【0100】
書き込み(1)でシーケンシャル管理テーブルへの登録を行ったため、最初の分岐のステップST32(既にシーケンシャル管理されているPブロックユニットか)の結果は肯定である。書き込み(2)は書き込み(1)の直後から始まっているため、ステップST36(シーケンシャル管理のまま追記可能か)の結果も肯定である。
【0101】
書き込み(2)のサイズはPブロックユニットサイズ未満のため、書き込み(2)のアクセス先にこれ以外の登録済Pブロックユニットは存在しない。よって、ステップST34(全ての登録済Pブロックユニットを調べ終えた)の結果は肯定となり、最終的に肯定を返却する。したがって、
図15のステップST3(過去のシーケンシャルコマンドと整合性があるか?)の結果は肯定となり、諸動作を経てPブロック内書き込み処理(ステップST6)に移行する。
【0102】
6.
図16がPブロック内書き込み処理である。書き込み(2)はPブロックユニットサイズに満たないので、最初の分岐のステップST11(書き込みサイズがPブロックユニットサイズに一致)の結果は否定である。書き込み(2)を含むLブロックユニットはシーケンシャル管理登録コマンドテーブルに登録されているため、次の分岐のステップST12(シーケンシャル管理の対象となる書き込みか)の結果は肯定となり、シーケンシャル管理書き込みに移行する。
【0103】
7.
図25がシーケンシャル管理書き込みのフローである。書き込み(2)は書き込み(1)と同じLブロックユニットの書き込みのため、最初の分岐のステップST70(既にシーケンシャル管理されているPブロックユニットか)の結果は肯定である。したがって、書き込み(1)と同一のPブロックユニットにシーケンシャルに書き込み(2)を追記する。書き込み(1)、(2)は合わせてもPブロックユニットサイズに満たないため、次の分岐のステップST77(最終物理ページまでデータが埋まったか)の結果は否定となり、その後の諸動作を経て書き込み(2)を終了する。
【0104】
8.書き込み(3)のコマンドを発行すると、再度
図15のフローチャートの処理に入る。以降、5、6、7と同様の動作を経て書き込み(3)を終了する。
9.書き込み(4)のコマンドを発行すると、再度
図15のフローチャートの処理に入る。以降、5、6、7と同様の動作を経るが、書き込み(1)、(2)、(3)、(4)を合わせるとPブロックユニットサイズとなるため、7の最後の分岐のステップST77(最終物理ページまでデータが埋まったか)の結果は肯定となり、Pブロックユニット管理への昇格処理を行なってから書き込み(4)を終了する。この昇格処理とは、シーケンシャル管理テーブルおよびシーケンシャル管理登録コマンドテーブルから、書き込み(1)を含むLブロックユニットを削除する操作のことである。
【0105】
以上により、この手法では、シーケンシャル管理テーブルを1個、書き込み(1)〜(4)の間に使用し、最後のPブロックユニット管理への昇格処理でシーケンシャル管理テーブルおよびシーケンシャル管理登録コマンドテーブルから、書き込み(1)を含むLブロックユニットを削除して書き込みを終了する。
【0106】
〔手法3〕
前処理.手法3では、書き込みを行う前にシーケンシャル管理登録コマンドを用いて書き込み(1)を含むLブロックユニットがシーケンシャル管理されることを明示する。
図22がシーケンシャル管理登録コマンドのフローである。書き込み(1)は過去に管理されたことのない新規Pブロックユニットへの書き込みと仮定したため、最初の分岐のステップST42(未登録のLブロックユニットか)の結果は肯定である。シーケンシャル管理テーブルは空なので、ステップST44(シーケンシャル管理テーブルに空きがあるか)の結果も肯定である。よって、シーケンシャル管理登録コマンドテーブルにLブロックユニットを登録する(ステップST45)。
【0107】
以降の書き込み処理は、手法2と全く同じである。ただし、シーケンシャル管理登録コマンドテーブルからのエントリ削除は後処理で行う。
【0108】
後処理.手法3では、書き込みを行った後、シーケンシャル管理登録コマンドテーブルから前処理で登録したLブロックユニットを削除する。
図23がシーケンシャル管理削除コマンドのフローである。書き込み(1)を含むLブロックユニットは前処理で登録したので最初の分岐のステップST52(登録済みのLブロックユニットか?)の結果は肯定である。書き込み(1)〜(4)でPブロックユニットサイズ分の書き込みを終えたので、ステップST54(最終物理ページまでデータが埋まっているか?)の結果は肯定である。よって昇格処理を行わずにシーケンシャル管理登録コマンドテーブルから書き込み(1)を含むLブロックユニットを削除する(ステップST56)。
【0109】
以上により、この手法では、シーケンシャル管理テーブルを1個、書き込み(1)〜(4)の間に使用し、最後のPブロックユニット管理への昇格処理でシーケンシャル管理テーブルから、書き込み(1)を含むLブロックユニットを削除し、後処理でシーケンシャル管理登録コマンドテーブルから書き込み(1)を含むLブロックユニットを削除して書き込みを終了する。
【0110】
・書き込み方法2の場合
〔従来手法〕
1.書き込み(1)のコマンドを発行すると、
図15のフローチャートの処理に入る。従来手法ではシーケンシャル管理を行わないので、最初の分岐のステップST3(過去のシーケンシャルコマンドと整合性があるか?)の結果は肯定に入り、
図15の諸動作を経てPブロック内書き込み処理(ステップST6)に移る。
【0111】
2.
図16がPブロック内書き込み処理である。書き込み(1)はPブロックユニットサイズに満たないので、最初の分岐ステップST11(書き込みサイズがPブロックユニットサイズに一致)の結果は否定である。さらに、従来手法ではシーケンシャル管理を行わないので、次の分岐のステップST12(シーケンシャル管理の対象となる書き込みか)の結果は否定である。よって、3のPページユニット管理書き込み処理に移る。
【0112】
3.
図26がPページユニット管理書き込みである。書き込み(1)は過去に管理されたことのない新規Pブロックユニットへの書き込みと仮定したため、最初の分岐のステップST80(既にPページユニット管理されているPブロックユニットか)の結果は否定である。書き込み方法2ではPページユニット管理テーブルは満たんなので、ステップST81(Pページユニット管理テーブルが空いているか)の結果は否定であり、ガベージコレクション(ステップST82)を行ってPページユニット管理テーブルに空きを作ってから、Pページユニット管理テーブルに書き込み(1)の内容を登録し、その後の諸動作を経て書き込み(1)を終了する。
【0113】
4.書き込み(2)のコマンドを発行すると、再度
図15のフローチャートの処理に入る。以降、1、2と同様の動作を経て
図26のPページユニット管理書き込みに移る。書き込み(2)が書き込み(1)と同じPブロックユニットに対して行われるかどうかは実装方法に依存する。もし行われる場合は、最初の分岐のステップST80(既にPページユニット管理されているPブロックユニットか)の結果は肯定である。この場合、書き込み(1)と同じPブロックユニットに対して追加で書き込みを行い、その後の諸動作を経て書き込み(1)を終了する。
【0114】
もし書き込み(2)が書き込み(1)と同じPブロックユニットに対して行われない場合は、分岐のステップST80(既にPページユニット管理されているPブロックユニットか)の結果は否定である。この場合、書き込み(1)によってPページユニット管理テーブルは再度満たんになっているので、ステップST81(Pページユニット管理テーブルが空いているか)の結果は否定であり、ガベージコレクション(ステップST82)を行ってPページユニット管理テーブルに空きを作ってから、Pページユニット管理テーブルに書き込み(2)の内容を登録し、その後の諸動作を経て書き込み(2)を終了する。
【0115】
5.書き込み(3)のコマンドを発行すると、再度
図15のフローチャートの処理に入る。以降、4と同様の動作を経て書き込み(3)を終了する。
6.書き込み(4)のコマンドを発行すると、再度
図15のフローチャートの処理に入る。以降、4と同様の動作を経て書き込み(4)を終了する。
以上により、この手法では、制御方法により1〜4回のガベージコレクションが発生する。
【0116】
〔手法1〕
手法1は書き込み方法1の場合と全く同じである。したがって、この手法では、シーケンシャル管理テーブルを1個、書き込み(1)〜(4)の間に使用し、最後のPブロックユニット管理への昇格処理でシーケンシャル管理テーブルを開放して書き込みを終了する。
【0117】
〔手法2〕
手法2は書き込み方法1の場合と全く同じである。したがって、この手法では、シーケンシャル管理テーブルを1個、書き込み(1)〜(4)の間に使用し、最後のPブロックユニット管理への昇格処理でシーケンシャル管理テーブルを開放して書き込みを終了する。
【0118】
〔手法3〕
手法3は書き込み方法1の場合と全く同じである。したがって、この手法では、シーケンシャル管理テーブルを1個、書き込み(1)〜(4)の間に使用し、最後のPブロックユニット管理への昇格処理でシーケンシャル管理テーブルを開放して書き込みを終了する。
【0119】
・書き込み方法3の場合
〔従来手法〕
1.書き込み(1)のコマンドを発行すると、
図15のフローチャートの処理に入る。従来手法ではシーケンシャル管理を行わないので、最初の分岐のステップST3(過去のシーケンシャルコマンドと整合性があるか?)の結果は肯定に入り、
図15の諸動作を経てPブロック内書き込み処理(ステップST16)に移る。
【0120】
2.
図16がPブロック内書き込み処理である。書き込み(1)はPブロックユニットサイズに満たないので、最初の分岐のステップST11(書き込みサイズがPブロックユニットサイズに一致)の結果は否定である。さらに、従来手法ではシーケンシャル管理を行わないので、次の分岐のステップST12(シーケンシャル管理の対象となる書き込みか)の結果は否定である。よって、3のPページユニット管理書き込み処理に移る。
【0121】
3.
図26がPページユニット管理書き込みである。書き込み(1)は過去に管理されたことのない新規Pブロックユニットへの書き込みと仮定したため、最初の分岐のステップST80(既にPページユニット管理されているPブロックユニットか)の結果は否定である。書き込み方法3ではPページユニット管理テーブルは満たんなので、ステップST81(Pページユニット管理テーブルが空いているか)の結果は否定であり、ガベージコレクション(ステップST82)を行ってPページユニット管理テーブルに空きを作ってから、Pページユニット管理テーブルに書き込み(1)の内容を登録し、その後の諸動作を経て書き込み(1)を終了する。
【0122】
4.書き込み(2)のコマンドを発行すると、再度
図15のフローチャートの処理に入る。以降、1、2と同様の動作を経て
図26のPページユニット管理書き込みに移る。書き込み(2)が書き込み(1)と同じPブロックユニットに対して行われるかどうかは実装方法に依存する。もし行われる場合は、最初の分岐のステップST80(既にPページユニット管理されているPブロックユニットか)の結果は肯定である。この場合、書き込み(1)と同じPブロックユニットに対して追加で書き込みを行い、その後の諸動作を経て書き込み(1)を終了する。
【0123】
もし書き込み(2)が書き込み(1)と同じPブロックユニットに対して行われない場合は、分岐のステップST80(既にPページユニット管理されているPブロックユニットか)の結果は否定である。この場合、書き込み(1)によってPページユニット管理テーブルは再度満たんになっているので、ステップST81(Pページユニット管理テーブルが空いているか)の結果は否定であり、ガベージコレクション(ステップST82)を行ってPページユニット管理テーブルに空きを作ってから、Pページユニット管理テーブルに書き込み(2)の内容を登録し、その後の諸動作を経て書き込み(2)を終了する。
以上により、この手法では、制御方法により1〜2回のガベージコレクションが発生する。
【0124】
〔手法1〕
1.書き込み(1)のコマンドを発行すると、
図15のフローチャートの処理に入る。手法1ではシーケンシャルコマンドを用いたシーケンシャル管理を行わないので、最初の分岐のステップST3(過去のシーケンシャルコマンドと整合性があるか?)の結果は肯定に入り、
図15の諸動作を経てPブロック内書き込み処理(ステップST6)に移る。
【0125】
2.
図16がPブロック内書き込み処理である。書き込み(1)はPブロックユニットサイズに満たないので、最初の分岐のステップST11(書き込みサイズがPブロックユニットサイズに一致)の結果は否定である。次の分岐のステップST12(シーケンシャル管理の対象となる書き込みか)の判定結果を得るため、
図17のフローチャートの処理に入る。
【0126】
3.書き込み(1)は過去に管理されたことのない新規Pブロックユニットへの書き込みと仮定したため、最初の分岐のステップST13(既にシーケンシャル管理されているPブロックユニットか)の結果は否定である。次の分岐のステップST17(シーケンシャル管理可能な書き込みか)の判定方法は実装により任意性があるが、例示した判定方法(Pブロックユニットサイズの1/4以上の新規書き込みをシーケンシャル管理対象とする)を用いることにする。よって、この分岐の結果は肯定である。したがって、最終的に肯定を得て
図16に戻る。これにより、
図16のステップST12(シーケンシャル管理の対象となる書き込みか)の結果は肯定となり、シーケンシャル管理書き込みに移行する。
【0127】
4.
図25がシーケンシャル管理書き込みのフローである。書き込み(1)は過去に管理されたことのない新規Pブロックユニットへの書き込みと仮定したため、最初の分岐のステップST70(既にシーケンシャル管理されているPブロックユニットか)の結果は否定である。シーケンシャル管理テーブルは空なので、ステップST71(シーケンシャル管理テーブルが空いているか)の結果は肯定であり、ガベージコレクションを行わずにシーケンシャル管理テーブルに書き込み(1)の内容を登録し、その後の諸動作を経て書き込み(1)を終了する。
【0128】
5.書き込み(2)のコマンドを発行すると、再度
図15のフローチャートの処理に入る。以降、1、2と同様の動作を経て
図17のフローチャートの処理に入る。書き込み(2)は書き込み(1)と同じLブロックユニットの書き込みのため(
図31参照)、シーケンシャル管理テーブルを参照すると、書き込み(2)を含むLブロックユニットが登録されていることが確認できる。よって、最初の分岐のステップST13(既にシーケンシャル管理されているPブロックユニットか)の結果は肯定である。
【0129】
書き込み(2)は書き込み(1)のシーケンシャルな続きではないため、ステップST14(シーケンシャル管理のまま追記可能か)の結果は否定である。したがって、シーケンシャル管理終了処理(ステップST16)を行う。この処理はシーケンシャル管理されている書き込み(1)をPページユニット管理に降格する処理である。シーケンシャル管理テーブルから書き込み(1)を含むLブロックユニットを削除し、Pページユニット管理テーブルに書き込み(1)を含むLブロックユニットを登録するが、書き込み方法3ではPページユニット管理テーブルは満たんなので、一旦ガベージコレクションを行ってPページユニット管理テーブルに空きを作ってからPページユニット管理テーブルに書き込み(1)の内容を登録する。その後、最終的に否定を得て
図16に戻る。これにより、
図16のステップST12(シーケンシャル管理の対象となる書き込みか)の結果は否定となり、
図26のPページユニット管理書き込みに移る。
【0130】
6.書き込み(2)が書き込み(1)と同じPブロックユニットに対して行われるかどうかは実装方法に依存する。もし行われる場合は、最初の分岐のステップST80(既にPページユニット管理されているPブロックユニットか)の結果は肯定である。この場合、書き込み(1)と同じPブロックユニットに対して追加で書き込みを行い、その後の諸動作を経て書き込み(1)を終了する。
【0131】
もし書き込み(2)が書き込み(1)と同じPブロックユニットに対して行われない場合は、分岐のステップST80(既にPページユニット管理されているPブロックユニットか)の結果は否定である。この場合、書き込み(1)によってPページユニット管理テーブルは再度満たんになっているので、ステップST81(Pページユニット管理テーブルが空いているか)の結果は否定であり、ガベージコレクション(ステップST82)を行ってPページユニット管理テーブルに空きを作ってから、Pページユニット管理テーブルに書き込み(2)の内容を登録し、その後の諸動作を経て書き込み(2)を終了する。
以上により、この手法では、制御方法により1〜2回のガベージコレクションが発生する。
【0132】
〔手法2〕
前処理.書き込み方法1の手法2における前処理とまったく同じである。
1.書き込み(1)は書き込み方法1の手法2における書き込み(1)とまったく同じである。
【0133】
2.書き込み(2)のコマンドを発行すると、再度
図15のフローに入り、最初の分岐のステップST3(過去のシーケンシャルコマンドと整合性があるか?)を判定するために
図21の判定フローチャートの処理に入る。前処理で書き込み(1)を含むLブロックユニットをシーケンシャル管理登録コマンドテーブルに登録したため、書き込み(1)に対応するPブロックユニットが取り出される。書き込み(1)でシーケンシャル管理テーブルへの登録を行ったため、最初の分岐のステップST32(既にシーケンシャル管理されているPブロックユニットか)の結果は肯定である。しかしながら、書き込み(2)は書き込み(1)の直後から始まっていないため、ステップST36(シーケンシャル管理のまま追記可能か)の結果は否定である。したがって、否定が返却されるため、
図15のステップST3(過去のシーケンシャルコマンドと整合性があるか?)の結果は否定となり、コマンドは非受理となる。
以上により、この手法では、コマンドは受理されない。
【0134】
〔手法3〕
前処理.書き込み方法1の手法3における前処理とまったく同じである。
1.書き込み(1)は書き込み方法1の手法3における書き込み(1)とまったく同じである。
【0135】
2.書き込み(2)のコマンドを発行すると、再度
図15のフローに入り、最初の分岐のステップST3(過去のシーケンシャルコマンドと整合性があるか?)を判定するために
図21の判定フローチャートの処理に入る。前処理で書き込み(1)を含むLブロックユニットをシーケンシャル管理登録コマンドテーブルに登録したため、書き込み(1)に対応するPブロックユニットが取り出される。書き込み(1)でシーケンシャル管理テーブルへの登録を行ったため、最初の分岐のステップST32(既にシーケンシャル管理されているPブロックユニットか)の結果は肯定である。しかしながら、書き込み(2)は書き込み(1)の直後から始まっていないため、ステップST36(シーケンシャル管理のまま追記可能か)の結果は否定である。したがって、否定が返却されるため、
図15のステップST3(過去のシーケンシャルコマンドと整合性があるか?)の結果は否定となり、コマンドは非受理となる。
以上により、この手法では、コマンドは受理されない。
【0136】
・書き込み方法4の場合
〔従来手法〕
従来手法は書き込み方法2の場合と全く同じである。よって、この手法では、制御方法により1〜4回のガベージコレクションが発生する。
【0137】
〔手法1〕
1〜3.書き込み方法1の手法1における1〜3とまったく同じである。
【0138】
4.
図25がシーケンシャル管理書き込みのフローである。書き込み(1)は過去に管理されたことのない新規Pブロックユニットへの書き込みと仮定したため、最初の分岐のステップST70(既にシーケンシャル管理されているPブロックユニットか)の結果は否定である。シーケンシャル管理テーブルは満たんなので、ステップST71(シーケンシャル管理テーブルが空いているか)の結果は否定であり、ガベージコレクション(ステップST72)を行ってシーケンシャル管理テーブルに空きを作ってから、書き込み(1)の内容を登録し、その後の諸動作を経て書き込み(1)を終了する。
5.以降は書き込み方法1の手法1とまったく同じである。
以上により、この手法では、1回のガベージコレクションが発生する。
【0139】
〔手法2〕
前処理.書き込み方法1の手法2における前処理とまったく同じである。
1〜3.書き込み方法1の手法2における1〜3とまったく同じである。
【0140】
4.
図25がシーケンシャル管理書き込みのフローである。書き込み(1)は過去に管理されたことのない新規Pブロックユニットへの書き込みと仮定したため、最初の分岐のステップST70(既にシーケンシャル管理されているPブロックユニットか)の結果は否定である。シーケンシャル管理テーブルは満たんなので、ステップST71(シーケンシャル管理テーブルが空いているか)の結果は否定であり、ガベージコレクション(ステップST72)を行ってシーケンシャル管理テーブルに空きを作ってから、書き込み(1)の内容を登録し、その後の諸動作を経て書き込み(1)を終了する。
5.以降は書き込み方法1の手法1とまったく同じである。
以上により、この手法では、1回のガベージコレクションが発生する。
【0141】
〔手法3〕
前処理.手法3では、書き込みを行う前にシーケンシャル管理登録コマンドを用いて書き込み(1)を含むLブロックユニットがシーケンシャル管理されることを明示する。
図22がシーケンシャル管理登録コマンドのフローである。書き込み(1)は過去に管理されたことのない新規Pブロックユニットへの書き込みと仮定したため、最初の分岐のステップST42(未登録のLブロックユニットか)の結果は肯定である。しかしながら、シーケンシャル管理テーブルは満たんなので、ステップST44(シーケンシャル管理テーブルに空きがあるか)の結果は否定である。したがって、コマンドは非受理となる(ステップST43)。以上により、この手法では、コマンドは受理されない。
【0142】
以上で
図28の全ての場合について説明した。以下、これらの効果について説明する。
書き込み方法1で従来手法を用いるとPページユニット管理テーブルが1〜4つ消費されるのに対し、手法1〜3ではシーケンシャル管理テーブルが一時的に使用されるだけで消費はされない。管理テーブルが満たんになるとガベージコレクションを誘発するため、書き込み方法1では本手法により、従来手法と比べてガベージコレクションが抑制されていると言える。
【0143】
なお、シーケンシャル管理テーブル(
図12参照)は自身で完結しているが、Pページユニット管理テーブル(
図13参照)は、テーブルの各エントリが
図14のテーブルを伴っており、保持するためにより大きな領域を必要とする。このため、シーケンシャル管理テーブルの方がエントリ数を大きくしやすい(一例として、d≧4、e≧4)と仮定したが、eの方が大きくしやすい)。このことを鑑みても、本手法により、従来手法と比べてガベージコレクションが抑制されていることがわかる。
【0144】
書き込み方法2で従来手法を用いるとガベージコレクションが発生するのに対し、手法1〜3ではシーケンシャル管理テーブルが一時的に使用されるだけで消費はされず、ガベージコレクションも起こらない。このため、書き込み方法2でも本手法により、従来手法と比べてガベージコレクションが抑制されていると言える。
【0145】
書き込み方法3で従来手法を用いるとガベージコレクションが発生する。書き込み方法3はシーケンシャルな書き込みではないため、手法1でもガベージコレクションが発生するが、手法2〜3を用いるとコマンドを非受理にすることができる。このため、書き込み方法3でも本手法は、ガベージコレクションを抑制する手段を提供可能である。
【0146】
書き込み方法4で従来手法を用いるとガベージコレクションが発生する。書き込み方法4ではシーケンシャル管理テーブルが埋まっているため、手法1、2でもガベージコレクションが発生するが、その回数は従来手法以下に抑えられる。また、手法3を用いるとコマンドを非受理にすることができる。このため、書き込み方法4でも本手法は、ガベージコレクションを抑制する手段を提供していると言える。
【0147】
<2.その他応用について>
書き込み方法3においては、特定のLブロックユニットがシーケンシャル書き込みを行なっている途中であるかどうかを、
図18のシーケンシャル管理登録コマンドテーブルによって判断可能である。シーケンシャル管理登録コマンドが行われたLブロックユニットは
図18のシーケンシャル管理登録コマンドテーブルに登録され、シーケンシャル書き込みが完了するとそのLブロックユニットは削除コマンドによって
図18のシーケンシャル管理登録コマンドテーブルから削除されるからである。
【0148】
したがって、シーケンシャル書き込み中のデータ領域をホスト機器が読み出そうとした場合、「シーケンシャル書き込みが完了するまでは、書き込み内容を確定させず、シーケンシャル書き込みを行う前に元々書かれていたデータを返す」という制御が可能である。このことを用いると、シーケンシャル書き込み中のLブロックユニットの扱いを、状況に応じて使い分けることができる。図を用いてこのことを説明する。
【0149】
まず、読み出し時のLブロックユニットの扱いについて説明する。
図33は、既にデータを書き込み済のあるLブロックユニットに対してシーケンシャル管理登録コマンドを発行し、シーケンシャル書き込み(1)、(2)を行った状況を表している。この状況で、シーケンシャル管理削除コマンドを発行せずに、同じLブロックユニットに対して
図34の読み出し要求を行った場合を考える。
【0150】
このとき、読み出し要求のあったLブロックユニットに対応するデータには、書き込み済みデータと、シーケンシャル書き込み中のデータの2種類が存在する。このため、フラッシュメモリ装置がホストに返すべきデータとしてその2種類をどのように用いるかには、任意性がある。
図35、
図36、
図37にその例を示す。
【0151】
図35はシーケンシャル書き込み中のデータが存在する部分に関してはシーケンシャル書き込み中のデータを返し、それ以外の部分に関しては書き込み済みのデータを返す方法である。
図36は、シーケンシャル書き込み中のデータを無視して書き込み済みのデータを返す方法である。
図37は、シーケンシャル書き込み中のデータが存在する部分に関してはシーケンシャル書き込み中のデータを返し、それ以外の部分に関しては空白データ(0xFF)を返す方法である。
【0152】
以上3種類の方法は、状況により適、不適が異なる。例えば、ファイルシステムの管理データをシーケンシャル書き込みする場合、書いたデータは常に最新であることが必要なため、シーケンシャル書き込みの完了を待たずに即座に反映されることが望ましく、
図35や
図37に示す制御が望ましい。一方で、本来一度に書かれるべき大サイズのデータを分割して書き込んでいるような状況では、分割されたデータが全て書き込まれて初めてそれらが反映されることが望ましく、
図36に示す制御が適している。
【0153】
次に、シーケンシャル書き込みを途中終了する場合のLブロックユニットの扱いについて説明する。
図38のように、シーケンシャル書き込みが完了していない状況でシーケンシャル管理削除コマンドを発行する場合について考える。この場合、
図23のシーケンシャル管理削除コマンドに示されている分岐のステップST54(最終物理ページまでデータが埋まっているか)の結果が否定となり、Pブロックユニット管理への昇格処理(ステップST55)が発生する。この昇格処理で、シーケンシャル書き込み中のLブロックユニットの内容を確定してPブロックユニット管理とするのであるが、その際に書き込み済みデータと、シーケンシャル書き込み中のデータの2種類をどのように用いるかには、やはり任意性がある。
図39、
図40、
図41にその例を示す。
【0154】
図39は、シーケンシャル書き込み中のデータが存在する部分に関してはシーケンシャル書き込み中のデータを用い、それ以外の部分に関しては書き込み済みのデータを用いて新しいLブロックユニットを構成し、これをPブロックユニット管理とする方法である。
図40は、シーケンシャル書き込み中のデータが存在する部分に関してはシーケンシャル書き込み中のデータを用い、それ以外の部分に関しては空白データ(0xFF)を用いて新しいLブロックユニットを構成し、これをPブロックユニット管理とする方法である。
図41は、シーケンシャル書き込み中のデータを無視して、書き込み済みのデータのみで新しいLブロックユニットを構成し、これをPブロックユニット管理とする方法である。
【0155】
以上3種類の方法は、やはり状況により適、不適が異なる。例えば、シーケンシャル書き込みの途中終了後に、できるだけデータを多く残したい場合には
図39の方法が適している。大サイズのデータを分割して書き込んでいるような状況では、シーケンシャル書き込み中のLブロックユニットに古いデータが混じると、書き込んでいた大サイズのデータと区別がつけにくくなり混乱するため、
図40の方法が適している。シーケンシャル書き込みが完了していない状況での半端なデータを一切残したくない場合には、
図41の方法が適している。
【0156】
以上に述べたように、シーケンシャル書き込み中のLブロックユニットの扱いには、読み出しおよび途中終了に関して任意性があり、本開示では、そのうち一つを実装時に選択し、運用時はそれを固定的に利用することを想定していた。しかしながら、方法3においては、シーケンシャル書き込み中のLブロックユニットの扱いを、シーケンシャル管理登録コマンドにパラメータとして与えることで、運用時に動的に制御することが可能である。
図42にその場合のシーケンシャル管理登録コマンドテーブルの構成方法を示す。
【0157】
図42は
図18を拡張したものである。「シーケンシャル管理登録コマンドによって登録されたか否か」を表す列の他に、読み出しの方法と途中終了の方法を与える2つのパラメータを表す列が追加されている。シーケンシャル管理登録コマンドを実行する際に、この2種類のパラメータを指定し、シーケンシャル管理登録コマンドテーブルに登録しておくことで、読み出し時および途中終了時に
図35、
図36、
図37および
図39、
図40、
図41のうちどの制御方法を使用するか、判定することができる。
【0158】
この判定方法を用いると、シーケンシャル書き込み中のLブロックユニットの扱いを、運用時に動的に制御することが可能である。例えば、ホスト機器としてビデオカメラを考え、このカメラで動画データを撮影して保存するような場合に、撮影データの部分は
図36の方法で制御し、撮影データを管理するためのファイルシステムの管理データは
図35の方法で制御するというような応用が可能となる。
【0159】
なお、本開示は、以下のような構成も取ることができる。
(1)
不揮発性メモリ部、制御部およびインターフェースを有し、
前記制御部は、
書き込み要求を受信し、書き込みサイズが消去の管理単位より小さいサイズの受信データの場合に、シーケンシャル管理の書き込みの対象か否かを判定し、
前記シーケンシャル管理の書き込み対象の場合に、前記消去の管理単位よりも小さいサイズの受信データをシーケンシャルに書き込む第1の書き込み処理を行い、
前記シーケンシャル管理の書き込み対象とならない場合に、前記消去の管理単位よりも小さいサイズの受信データを書き込みの管理単位で書き込む第2の書き込み処理を行う不揮発性メモリ装置。
(2)
前記第1の書き込み処理がなされる特定領域が予め設定される(1)に記載の不揮発性メモリ装置。
(3)
前記シーケンシャル管理の書き込み対象か否かは、書き込み要求のシーケンシャル性を過去の書き込みから判断する(1)に記載の不揮発性メモリ装置。
(4)
前記シーケンシャル管理の書き込み対象か否かを、前記インターフェースを通してホスト機器に明示させる(1)に記載の不揮発性メモリ装置。
(5)
前記シーケンシャル管理の書き込み対象か否かを、前記インターフェースを通してホスト機器に明示させ、書き込み領域の割り当て管理もホストが行う(1)に記載の不揮発性メモリ装置。
(6)
書き込み要求を受信し、書き込みサイズが消去の管理単位より小さいサイズの受信データの場合に、シーケンシャル管理の書き込み対象か否かが判定され、
前記シーケンシャル管理の書き込み対象の場合に、前記消去の管理単位よりも小さいサイズの受信データをシーケンシャルに書き込む第1の書き込み処理を行い、
前記シーケンシャル管理の書き込み対象とならない場合に、前記消去の管理単位よりも小さいサイズの受信データを書き込みの管理単位で書き込む第2の書き込み処理を行う不揮発性メモリ制御装置。
(7)
不揮発性メモリ装置の特定領域に対して消去の管理単位より小さいサイズのデータをシーケンシャル管理で書き込むように指示するホスト側のコマンドが規定される不揮発性メモリ制御装置。
(8)
前記シーケンシャル管理で書き込むように指示すると共に、書き込み領域の割り当て管理も前記ホスト側が行う(7)に記載の不揮発性メモリ制御装置。
(9)
書き込み要求を受信し、書き込みサイズが消去の管理単位より小さいサイズの受信データの場合に、シーケンシャル管理の書き込み対象か否かが判定され、
前記シーケンシャル管理の書き込み対象の場合に、前記消去の管理単位よりも小さいサイズの受信データをシーケンシャルに書き込む第1の書き込み処理を行い、
前記シーケンシャル管理の書き込み対象とならない場合に、前記消去の管理単位よりも小さいサイズの受信データを書き込みの管理単位で書き込む第2の書き込み処理を行う不揮発性メモリ制御方法。
(10)
不揮発性メモリ装置の特定領域に対して消去の管理単位より小さいサイズのデータをシーケンシャル管理で書き込むように指示するホスト側のコマンドが規定される不揮発性メモリ制御方法。
(11)
前記シーケンシャル管理で書き込むように指示すると共に、書き込み領域の割り当て管理も前記ホスト側が行う(10)に記載の不揮発性メモリ制御方法。
【0160】
<3.変形例>
以上、本開示の実施形態について具体的に説明したが、上述の各実施の形態に限定されるものではなく、本開示の技術的思想に基づく各種の変形が可能である。例えば、上述の実施の形態において挙げた構成、方法、工程、形状、材料および数値などはあくまでも例に過ぎず、必要に応じてこれと異なる構成、方法、工程、形状、材料および数値などを用いても良い。
【0161】
以上、本開示の実施の形態について、不揮発性メモリとしてフラッシュメモリを利用した場合の実施例を具体的に説明した。しかしながら、上述の不揮発性メモリはフラッシュメモリに限定されるものではなく、消去単位となるサイズが書き込み単位となるサイズ以上となるように物理アドレス空間を構成可能な全ての不揮発性メモリに適用可能である。本開示をフラッシュメモリ以外の不揮発性メモリに適用する場合、本開示におけるPブロックユニットを適用対象となる不揮発性メモリにおける消去単位、本開示におけるPページユニットを適用対象となる不揮発性メモリにおける書き込み単位で置き換えればよい。