(57)【要約】      （修正有）【課題】連続して入力されるデータを、同一バスに接続された複数のメモリへ並列書込みを行う場合、未使用のブロックの探索を効率的に行って、並列書込み時のブロック探索時間を短縮する。【解決手段】ブロック番号別ビットマップ情報記憶部１０７は、ブロック番号別に、ブロック番号が共通するブロックがそれぞれ使用済みであるか未使用であるかをビットマップで表すブロック番号別ビットマップ情報を記憶している。空きブロック管理部１０６は、並列書込みが行われる場合に、ブロック番号別ビットマップ情報のブロック番号別のビットマップを順次解析して、未使用のブロックを探索する。【選択図】図１
2014160335.tif 000002
【特許請求の範囲】
【請求項１】
それぞれのメモリサイズが共通し、それぞれが共通にＸ個（Ｘ≧２）のブロックに等分されているＮ個（Ｎ≧２）のメモリであって、各メモリのｉ番目（１≦ｉ≦Ｘ）のブロックのブロック番号がメモリ間で共通しているＮ個のメモリに接続され、
ブロック番号別に、ブロック番号が共通するＮ個のブロックがそれぞれ使用済みであるか未使用であるかをビットマップで表すブロック番号別ビットマップ情報を記憶しているブロック番号別ビットマップ情報記憶部と、
Ｍ個（１≦Ｍ≦Ｎ）のメモリのＭ個のブロックへ並列にデータの書込みが行われる場合に、前記ブロック番号別ビットマップ情報のブロック番号別のビットマップを順次解析して、Ｍ個の未使用のブロックを探索する空きブロック管理部とを有することを特徴とするメモリ管理装置。
【請求項２】
前記ブロック番号別ビットマップ情報記憶部は、
ブロック番号別に、ブロック番号が共通するＮ個のブロックがそれぞれ使用済みであるか未使用であるかをビットマップで表すとともに、Ｎ個のブロックのうちの未使用のブロックの個数を表すブロック番号別ビットマップ情報を記憶していることを特徴とする請求項１に記載のメモリ管理装置。
【請求項３】
前記空きブロック管理部は、
いずれかのブロック番号において未使用のブロックがＭ個以上存在する場合に、当該ブロック番号でＭ個のブロックが新たに使用済みとなったことが表されるように当該ブロック番号のビットマップを変更することを特徴とする請求項１に記載のメモリ管理装置。
【請求項４】
前記空きブロック管理部は、
いずれかのブロック番号において未使用のブロックがＭ個以上存在する場合に、当該ブロック番号でＭ個のブロックが新たに使用済みとなったことが表されるように当該ブロック番号のビットマップを変更するとともに、当該ブロック番号の未使用のブロックの個数をＭ個分減じることを特徴とする請求項２に記載のメモリ管理装置。
【請求項５】
前記メモリ管理装置は、
Ｎ個のＮＡＮＤフラッシュメモリと接続されていることを特徴とする請求項１〜４のいずれかに記載のメモリ管理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一定速度で入力されるデータを、同一バスに接続された複数の記憶媒体へ並列に記録する技術に関する。
【背景技術】
【０００２】
例えば、人工衛星では、地上（例えば日本）と通信できない範囲（例えば地球の裏側）を飛行中は、観測機器（カメラやセンサ）が生成した観測データを、衛星内に保持していないといけないため、データ記録装置を搭載している。
一方、観測機器は低機能な装置であり、観測データを機器内部に蓄えることはできないため、データ記録装置との間でデータ伝送のためのフロー制御を実現することは困難である。
また、観測機器（カメラやセンサ）の高精細化に伴い、データ記録装置に入力される観測データは、巨大化かつ高速化されてきている。
しかし、データ記録装置においても、宇宙環境で正常動作可能なメモリが限られているために巨大なバッファメモリを保持できない、真空であるため放出手段が乏しく、電子機器を高速動作させられない、という事情がある。
【０００３】
データ記録装置では、観測機器からの観測データの巨大化に伴い、ＮＡＮＤフラッシュメモリのような大容量かつ低消費電力な不揮発メモリの搭載が行われつつあるが、ＮＡＮＤフラッシュメモリは、データ読出しに比しデータ記録に時間を要する特性を持つ記憶媒体で、そのために観測機器からの観測データの高速化に伴い、１つのデバイスチップではデータ記録時間が間に合わなくなっている。
【０００４】
ＮＡＮＤフラッシュメモリのデータ記録性能の向上として、同一のメモリバスに複数のＮＡＮＤフラッシュメモリを接続し、その中の複数個のＮＡＮＤフラッシュメモリに対し並列書込みを行う方法がある。
【０００５】
図７において、まずＮＡＮＤフラッシュメモリのデバイスチップの構造を簡単に紹介する。
なお、以下では、ＮＡＮＤフラッシュメモリのデバイスチップを、ＮＡＮＤフラッシュメモリチップともいう。
【０００６】
ＮＡＮＤフラッシュメモリチップ２００は、１つのデバイスチップ内に、メモリインタフェース部２０１、コマンド処理部２０２、ページバッファ２０３及びＮＡＮＤフラッシュメモリ２０４が構成されている。
メモリインタフェース部２０１は、メモリバスとのインタフェースである。
コマンド処理部２０２は、メモリインタフェース部２０１経由でホストコンピュータから送られてきた、Ｒｅａｄ／Ｗｒｉｔｅ／Ｅｒａｓｅ等のコマンドを処理する。
ページバッファ２０３は、Ｒｅａｄ／Ｗｒｉｔｅするデータを一時的に保持する。
ＮＡＮＤフラッシュメモリ２０４には、実際にデータを保持するメモリ素子が配列されている。
【０００７】
ＮＡＮＤフラッシュメモリ２０４は、複数個のブロックに分けられており、１つのブロックは更に複数のページに分けられている。
新しいデータを記録するためには、一旦データの消去を行わないといけないが、その消去単位がブロックと呼ばれている。
一方、データの書込み（Ｗｒｉｔｅ）／読出し（Ｒｅａｄ）は、ページ単位で行うことができる。
図７では、１つのＮＡＮＤフラッシュメモリ２０４が、（ｙ）個のブロックで構成され、１つのブロックは（ｘ）個のページで構成されていることを示す。
現在、一般的には、ページは１〜４Ｋバイト、ブロックは６４〜２５６Ｋバイト程度の記録容量を持つ。
【０００８】
図８に、このようなＮＡＮＤフラッシュメモリ２０４に対する書込みシーケンスを示す。
最初にホストコンピュータから第一コマンドを送出する。
第一コマンドには通常、書込み対象となるブロック番号及び同ブロック内のページ番号を示すアドレス情報が含まれている。
次に、ホストコンピュータから１ページ分のデータを転送する。
この転送したデータは、図７におけるページバッファ２０３へ一旦保持される。
つぎにホストコンピュータから第二コマンドを送出する。
ＮＡＮＤフラッシュメモリチップ２００では、第二コマンドを契機に、図７におけるページバッファ２０３に保持されたデータを、図７におけるＮＡＮＤフラッシュメモリ２０４の第一コマンド内のアドレス情報に示された所定のブロック、ページへの転送を行うチップ内書込み処理を開始する。
ホストコンピュータでは、ＮＡＮＤフラッシュメモリチップ２００でのチップ内書込み処理の完了を待ち合わせてから、別の処理シーケンスを開始する必要がある。
【０００９】
ホストコンピュータからのＮＡＮＤフラッシュメモリ２０４への書込みは、以上のシーケンスで処理されるが、チップ内書込み処理中は、ホストコンピュータとＮＡＮＤフラッシュメモリチップ２００をつなぐメモリバスが空き状態となるため、この間に同一バスに接続された別のＮＡＮＤフラッシュメモリチップへのシーケンス（図８における、第一コマンド送出から第二コマンド送出まで）を実施することで、装置全体としての書込み性能を向上させることができる。
この様子を図９に示す。
【００１０】
図９では、ＮＡＮＤフラッシュメモリチップ＃１（以下、単にチップ＃１という）とＮＡＮＤフラッシュメモリチップ＃２（以下、単にチップ＃２という）に対する並列書込みの様子を時系列で示している。
【００１１】
まず、ホストコンピュータからはチップ＃１に対する書込みシーケンスをメモリバス上に送出する。
次に、チップ＃１がチップ内書込み処理状態になったら、チップ＃２に対する書込みシーケンスをメモリバス上へ送出する。
図９でも判るとおり、以上の並列書込みを行うことにより、２ページ分のデータを書込んでいるが、時間軸上ではチップ＃１のチップ内書込み処理が隠蔽される結果となる（または、チップ＃１のチップ書込み処理が短縮される結果となる）。
仮に第一コマンド送出から第二コマンド送出までの時間（通常は書込みデータ転送の時間が支配的である）と、チップ内書込み処理の時間が等しいとすると、図９に示す２つのデバイスチップに対する並列書込みを行うと、通常の書込みで２ページを書込む時間に比べて、３／４の時間で書込むことができる（つまり書込み性能が約３３％アップしたことになる）。
【００１２】
従来、図７に示すＮＡＮＤフラッシュメモリの制御方法としては、特許文献１に開示の方法がある。
特許文献１では、図６のような方法が用いられている。
【００１３】
図６において、ＮＡＮＤフラッシュメモリチップ２００は、図７の内部構造を持つデバイスチップであり、メモリバス３００を介してホストコンピュータ４００と接続されている。
ホストコンピュータ４００において、コマンドインタフェース部４０１は、より上位のシステム、例えばオペレーティングシステムのファイルシステム等とのインタフェースである。
読出し機能部４０２は、コマンドインタフェース部４０１経由で上位システムから指示された読み出しコマンドを処理する。
書込み機能部４０３は、コマンドインタフェース部４０１経由で上位システムから指示された書込みコマンドを処理する。
消去機能部４０４は、コマンドインタフェース部４０１経由で上位システムから指示された消去コマンドを処理する。
アドレス変換機能部４０５は、上位システムから指定される論理アドレスをＮＡＮＤフラッシュメモリ２０４内のブロック番号、ページ番号に変換する。
空きブロック管理部４０６は、ＮＡＮＤフラッシュメモリ２０４内の各ブロックの状態を管理する。
メモリ別ビットマップ情報記憶部４０７は、各ＮＡＮＤフラッシュメモリ２０４のブロックごとの状態をビットマップで表すメモリ別ビットマップ情報を記憶している。
メモリインタフェース部４０８は、各機能部からの指示に基づき、図８に示すようなＮＡＮＤフラッシュメモリチップ２００とのシーケンスを実施する。
【００１４】
図６において、ＮＡＮＤフラッシュメモリ２０４の１ページへのデータ書込みは、次のように処理される。
【００１５】
まず、上位システムよりコマンドインタフェース部４０１に対して、論理アドレスを指定したデータの書込みが指示される。
コマンドインタフェース部４０１では、指示されたコマンドが書込みであるため、書込み機能部４０３を呼び出す。
書込み機能部４０３は、空きブロック管理部４０６を呼び出して、データを書込み可能なブロック、即ち消去済みの空きブロックを１つ求める。
次に、書込み機能部４０３は、メモリインタフェース部４０８へ、求めた空きブロックを指定して、メモリインタフェース部４０８へ書込みシーケンスの実行を指示する。
メモリインタフェース部４０８では、メモリバス３０５を介して図８に示す書込みシーケンスを実行し、チップ内書込み処理が完了したら書込み機能部４０３へ制御を戻す。
書込み制御部４０３は、アドレス変換機能部４０５を呼び出して、上位システムから指定された論理アドレスと実際にデータを書込んだブロック番号の対応付けを記憶させる。
【００１６】
書込まれたデータは、読出し機能部４０２よりアドレス変換機能部４０５で変換したデバイスチップ内のブロック番号を指定して読み出され、不要になったら消去機能部４０４にて消去された後に空きブロック管理部４０６へ通知されて、消去済み、即ち空きブロックとして管理し、次のデータ書込みに備えられる。
【００１７】
次に、従来の空きブロック管理部４０６での空きブロックの探索方法を、図１０、図１１を用いて説明する。
図１０は、各ブロックの空き／使用中を１ビットで表現したメモリ別ビットマップ情報の構成を示したものである。
メモリ別ビットマップ情報は、ＮＡＮＤフラッシュメモリチップ２００毎にブロックの空き状況をビットマップで表す。
より具体的には、チップ＃１のブロック＃１の状態をチップ＃１用ビットマップのビット１番で、ブロック＃２の状態をビット２番で表し、チップ＃Ｎのブロック＃Ｘの状態はチップ＃Ｎ用ビットマップのビットＸ番で表す。
通常は、ビットの値が‘０’なら対応するブロックは使用中、‘１’なら空きを示す。
【００１８】
図１１は、メモリ別ビットマップ情報のビットマップを用いた空きブロックの探索処理フローである。
【００１９】
空きブロック管理部４０６は、チップ＃１から空きブロックを探索するためにステップＳ１１１で変数ｃｈｉｐｎｏに‘１’を入れる。
ステップＳ１１２は全チップ用のビットマップを探索したかをチェックするためのもので、空きブロック管理部４０６は、変数ｃｈｉｐｎｏと同一バスに接続されたＮＡＮＤフラッシュメモリのチップ数Ｎと比較する。
全ビットマップを探索していない場合はステップＳ１１３へ進み、空きブロック管理部４０６は、変数ｃｈｉｐｎｏの値で示されたチップに対応したビットマップ情報をビット１番から探索し、ビットの値‘１’が有るか探索する。
ステップＳ１１４ではビットマップの探索の結果、ビット値‘１’の有無を判定し、‘１’があった場合は空きブロックを検出したためステップＳ１１６へ進み、該ビットマップの更新（探索で‘１’のビットを‘０’に変更する）を行った後、空きブロックの探索を終了する。
【００２０】
ステップＳ１１４にて該ビットマップ内に値‘１’のビットが検出できなかった場合はステップＳ１１５へ進み、空きブロック管理部４０６は、変数ｃｈｉｐｎｏを１足した後、ステップＳ１１２へ戻る。
ステップＳ１１２にて全ビットマップを探索し終わったと判断された場合は、どのチップにも空きブロックが存在しないことになるため、空きブロック探索は失敗として終了する。
【先行技術文献】
【特許文献】
【００２１】
【特許文献１】国際公開ＷＯ２００９−００１５１４号公報
【発明の概要】
【発明が解決しようとする課題】
【００２２】
従来は、以上のようにＮＡＮＤフラッシュメモリを制御しているため、Ｍ個のＮＡＮＤフラッシュメモリへ並列書込みを行う場合には、同一メモリバスに接続されたＮ個のＮＡＮＤフラッシュメモリチップに対して、図１１に示す処理を実施し、並列書込み数分のＭ個の空きブロックを求める必要があるとともに、空きブロック管理部では、同一メモリバスに接続されたＮＡＮＤフラッシュメモリチップの番号を指定して空きブロックを求める機能追加が必要である。
【００２３】
パーソナルコンピュータ等での利用のような、上位システムで巨大なバッファを持つことが可能で、かつ書込みが完了するまで次の書込みコマンドの発行を待たせることができるシステムでは問題なく動作するが、衛星システムのように、記録すべきデータが連続データであり、巨大なバッファを持てない場合には、空きブロック管理部を繰返し（並列書込み個数分だけ）呼び出すことによる処理時間の増加により、入力データの欠損が生じるという課題がある。
【００２４】
または、本課題を回避するために、従来ではブロックへの書込み中は、上位システムに対して、次のデータ入力を待たせるようなフロー制御または、データ記録装置内に十分に大きなバッファメモリを搭載しなければならない、という課題がある。
【００２５】
本発明は、このような課題を解決することを主な目的とし、未使用のブロックの探索を効率的に行って、並列書込み時のブロック探索時間を短縮することを主な目的とする。
【課題を解決するための手段】
【００２６】
本発明に係るメモリ管理装置は、
それぞれのメモリサイズが共通し、それぞれが共通にＸ個（Ｘ≧２）のブロックに等分されているＮ個（Ｎ≧２）のメモリであって、各メモリのｉ番目（１≦ｉ≦Ｘ）のブロックのブロック番号がメモリ間で共通しているＮ個のメモリに接続され、
ブロック番号別に、ブロック番号が共通するＮ個のブロックがそれぞれ使用済みであるか未使用であるかをビットマップで表すブロック番号別ビットマップ情報を記憶しているブロック番号別ビットマップ情報記憶部と、
Ｍ個（１≦Ｍ≦Ｎ）のメモリのＭ個のブロックへ並列にデータの書込みが行われる場合に、前記ブロック番号別ビットマップ情報のブロック番号別のビットマップを順次解析して、Ｍ個の未使用のブロックを探索する空きブロック管理部とを有することを特徴とする。
【発明の効果】
【００２７】
本発明では、ブロック番号別に、ブロック番号が共通するＮ個のブロックがそれぞれ使用済みであるか未使用であるかをビットマップで表すブロック番号別ビットマップ情報を用い、ブロック番号別のビットマップを順次解析して、Ｍ個の未使用のブロックを探索する。
このため、未使用のブロックの探索を効率的に行うことができ、並列書込み時のブロック探索時間を短縮することができる。
【図面の簡単な説明】
【００２８】
【図１】実施の形態１及び実施の形態２でのＮＡＮＤフラッシュ制御装置の構成例を示す図。
【図２】実施の形態１のブロック番号別ビットマップ情報を説明する図。
【図３】実施の形態１の空きブロック管理部の空きブロック探索処理フロー図。
【図４】実施の形態２のブロック番号別ビットマップ情報を説明する図。
【図５】実施の形態２の空きブロック管理部の空きブロック探索処理フロー図。
【図６】同一メモリバスに複数のＮＡＮＤフラッシュメモリを接続した装置構成を示す図。
【図７】ＮＡＮＤフラッシュメモリのデバイスチップの一般的な内部構造を示す図。
【図８】ＮＡＮＤフラッシュメモリのデバイスチップに対する外部からの書込みシーケンスを示す図。
【図９】並列書込みの方法を示す図。
【図１０】従来のメモリ別ビットマップ情報を説明する図。
【図１１】従来の空きブロック管理部の空きブロック探索処理フロー図。
【発明を実施するための形態】
【００２９】
実施の形態１．
本実施の形態では、従来、ＮＡＮＤフラッシュメモリのチップ毎に保持していた空きブロック管理用のビットマップ情報を、各チップの同一ブロック番号の空き状態を１つのビットマップ情報として保持することにより、データ書込み処理での空きブロック確保において、チップ毎の巨大なビットマップ情報を繰返し探索する処理を不要とし、並列書込み時の空きブロック探索時間の増大を回避し、データ欠損無く連続データを記録できる、データ記録装置を提供する。
【００３０】
図１は、本実施の形態に係る、データ記録装置であるＮＡＮＤフラッシュ制御装置の構成例を示す。
【００３１】
図１において、Ｎ（Ｎ≧２）個のＮＡＮＤフラッシュメモリチップ２００は、図６に示したものと同様であり、図７に示した内部構成を持つ。
ホストコンピュータ１００は、図６に示したホストコンピュータ４００に対応する。
本実施の形態でも、ホストコンピュータ１００と、Ｎ個のＮＡＮＤフラッシュメモリチップ２００はメモリバス３００で接続されている。
ホストコンピュータ１００は、メモリ管理装置の例に相当する。
【００３２】
ホストコンピュータ１００において、コマンドインタフェース部１０１、読出し機能部１０２、書込み機能部１０３、消去機能部１０４、アドレス変換機能部１０５、メモリインタフェース部１０８は、図６に示したコマンドインタフェース部４０１、読出し機能部４０２、書込み機能部４０３、消去機能部４０４、アドレス変換機能部４０５、メモリインタフェース部４０８と同じである。
本実施の形態では、図６のメモリ別ビットマップ情報記憶部４０７の代わりに、ブロック番号別ビットマップ情報記憶部１０７を設けている。
ブロック番号別ビットマップ情報記憶部１０７は、ブロック番号別ビットマップ情報を記憶している。
メモリ別ビットマップ情報は、図１０のように、ＮＡＮＤフラッシュメモリチップ２００の単位で同じＮＡＮＤフラッシュメモリチップ２００内のＸ個のブロックがそれぞれ使用済みであるか未使用であるかをビットマップで表す情報である。
これに対して、ブロック番号別ビットマップ情報は、ブロック番号別に、ブロック番号が共通するＮ個のブロックがそれぞれ使用済みであるか未使用であるかをビットマップで表す情報である。
ブロック番号別ビットマップ情報の詳細は後述する。
また、本実施の形態では、メモリ別ビットマップ情報に代えてブロック番号別ビットマップ情報を用いることから、空きブロック管理部１０６による空きブロック探索アルゴリズムが図６の空きブロック管理部４０６とは異なる。
空きブロック管理部１０６は、ブロック番号別ビットマップ情報のブロック番号別のビットマップを順次解析して空きブロックを探索する。
空きブロック管理部１０６による空きブロック探索アルゴリズムの詳細は後述する。
【００３３】
ホストコンピュータ１００は、例えば、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）を備えたメモリコントローラである。
また、コマンドインタフェース部１０１及びメモリインタフェース部１０８は、例えば、インタフェース回路で実現される。
読出し機能部１０２、書込み機能部１０３、消去機能部１０４、アドレス変換機能部１０５、空きブロック管理部１０６は、例えば、ＣＰＵがプログラムを実行することで実現される。
読出し機能部１０２、書込み機能部１０３、消去機能部１０４、アドレス変換機能部１０５、空きブロック管理部１０６の機能を実現するためのプログラムは例えばＲＯＭに格納されており、ＣＰＵが順次これらプログラムを読み込んで実行する。
読出し機能部１０２、書込み機能部１０３、消去機能部１０４、アドレス変換機能部１０５、空きブロック管理部１０６の機能の少なくとも一部をファームウェアや回路等のハードウェアで実現してもよい。
また、ブロック番号別ビットマップ情報記憶部１０７は、例えば、ＣＰＵ内のレジスタ又はＲＡＭにより実現される。
なお、以下では、従来技術との差異を説明し、従来技術と共通する処理の説明は省略する。
【００３４】
図２は、実施の形態１におけるブロック番号別ビットマップ情報の構成を示す。
【００３５】
図２に示すように、各ＮＡＮＤフラッシュメモリチップ２００はブロック＃１からブロック＃ＸのＸ（Ｘ≧２）個のブロックに等分されており、各ＮＡＮＤフラッシュメモリチップ２００のｉ番目（１≦ｉ≦Ｘ）のブロックのブロック番号がＮ個のＮＡＮＤフラッシュメモリチップ２００間で共通している。
そして、ブロック番号別ビットマップ情報は、同一のブロック番号毎に１つ、つまりＸ個のビットマップで構成される。
すなわち、ブロック＃１用ビットマップは、チップ＃１のブロック＃１の空き状態をビット１番で、チップ＃Ｎのブロック＃１の空き状態をビットＮ番で示す。
また、ブロック＃Ｘ用のビットマップは、チップ＃１のブロック＃Ｘからチップ＃Ｎのブロック＃Ｘの空き状態を、それぞれビット１番からビットＮ番で表している。
本実施の形態に係るブロック番号別ビットマップ情報でも、未使用のブロック、すなわち空きブロックを‘１’で表すものとする。
【００３６】
図３は、実施の形態１における、図２で示すブロック番号別ビットマップ情報を用いた、空きブロック管理部１０６の動作例を示すフローチャート図である。
【００３７】
図３では、並列書き込みするチップ数のＭ（１≦Ｍ≦Ｎ）が与えられて空きブロックの探索が開始され、ブロック＃１用ビットマップから空きブロックを探索するために、ステップＳ３１で変数ｂｌｋｎｏに‘１’を入れる。
ステップＳ３２は、全ビットマップを探索したかをチェックするためのもので、空きブロック管理部１０６は、変数ｂｌｋｎｏと各ＮＡＮＤフラッシュメモリの全ブロック数Ｘと比較する。
全ビットマップを探索していない場合はステップＳ３３へ進み、変数ｂｌｋｎｏの値で示されたブロック番号に対応したビットマップを探索し、ビットの値が‘１’の個数を探索する。
ステップＳ３４では探索の結果、空きブロック管理部１０６は、ビット値‘１’の個数を判定し、Ｍ個以上の‘１’があった場合は必要個数の空きブロックを検出したためステップＳ３６へ進み、該ビットマップの更新（探索で‘１’のビットを先頭からＭ個分‘０’に変更する）を行った後、空きブロックの探索を終了する。
ステップＳ３４にて該ビットマップ内に値‘１’のビットがＭ個以上検出できなかった場合はステップＳ３５へ進み変数ｂｌｋｎｏを１足した後、ステップＳ３２へ戻る。
ステップＳ３２にて全ビットマップを探索し終わったと判断された場合は、どのブロック番号にもＭ個の空きブロックが存在しないことになるため、空きブロック探索は失敗として終了する。
【００３８】
以上により、従来１つのチップに対するビット探索に要するループ回数に等しい回数の小規模なビットマップを探索することで並列書込みに適した空きブロックの組を取出すことができ、従来の空きブロック管理部から１つの空きブロックを取出すのと同程度の処理量で並列書込み処理を行え、結果として連続する入力データを欠損なく記録することができる。
従来技術では、Ｍ個の空きブロックを探索するためには、図１１のループを少なくともＭ回繰り返す必要がある。
これに対して、本実施の形態では、図３の処理を１回実施するだけで、Ｍ個の空きブロックを探索できる場合がある。
【００３９】
なお、図３では、Ｍ及びＮは（Ｎ≧Ｍ）の条件を満たす限り任意の値でよく、Ｍ＝１、すなわち従来例と同じ空きブロック確保にも使用できる。
【００４０】
以上、本実施の形態では、
連続した入力データを、同一バス上に接続された複数の記憶媒体へ並列記録するデータ記録装置であって、
（１）記録媒体を固定サイズに分割したブロック毎に、ブロックの状態やデータの記録状態を保持する、空きブロック管理部と、
（２）前記空きブロック管理部に、同一のブロック番号毎に同一バス上に接続された複数の記憶媒体の前記ブロックの空き状態を示すビットマップ情報とを備え、
（３）前記ビットマップ情報をブロック番号順に探索し、並列記録するブロック数に等しい空きブロックを確保するデータ記録装置を説明した。
【００４１】
実施の形態２．
実施の形態２では、実施の形態１でのブロック番号別ビットマップ情報の各ビットマップにビット値‘１’の個数を追加したブロック番号別ビットマップ情報を用い、図３のステップ（Ｓ３３）でのビットマップ探索に相当する処理をより高速に行う方式を説明する。
なお、本実施の形態に係るＮＡＮＤフラッシュ制御装置の構成例も、図１に示したものと同様である。
実施の形態１との違いは、ブロック番号別ビットマップ情報にビット値‘１’の個数が追加されていることと、空きブロック管理部１０６の動作例が異なることのみである。
【００４２】
図４は、実施の形態２におけるブロック番号別ビットマップ情報の構成を示す。
【００４３】
図４において、ブロック＃１用ビットマップからブロック＃Ｘ用ビットマップは、図２のものと同じである。
各ビットマップには、各々のビットマップ内のビット値‘１’のビット個数、すなわち空きブロック数を保持する領域を追加している。
【００４４】
図５は、実施の形態２における、図４で示すブロック番号別ビットマップ情報を用いた、空きブロック管理部１０６の動作例を示すフローチャート図である。
【００４５】
図５では、並列書き込みするチップ数のＭ（１≦Ｍ≦Ｎ）が与えられて空きブロックの探索が開始され、ブロック＃１用ビットマップから空きブロックを探索するために、ステップＳ５１で変数ｂｌｋｎｏに‘１’を入れる。
ステップＳ５２は、全ビットマップを探索したかをチェックするためのもので、空きブロック管理部１０６は、変数ｂｌｋｎｏと各ＮＡＮＤフラッシュメモリの全ブロック数Ｘと比較する。
全ビットマップを探索していない場合はステップＳ５３へ進み、空きブロック管理部１０６は、変数ｂｌｋｎｏの値で示されたブロック番号に対応したビットマップに付加されている空きブロック数ｆｒｅｅｎｏを得る。
ステップＳ５４では空きブロック管理部１０６は、ｆｒｅｅｎｏの値を調べ、Ｍ以上であった場合は必要個数の空きブロック確保可能と判断しステップＳ５６へ進み、ｂｌｋｎｏ番目のビットマップからビット値‘１’、すなわち空きブロックを探索した後、ステップＳ５７で該ビットマップの更新（探索で‘１’のビットを先頭からＭ個分‘０’に変更し、空きブロック数からＭを減算する）を行い、空きブロックの探索を終了する。
ステップＳ５４にてｆｒｅｅｎｏがＭより小さかった場合は、対応するビットマップからは必要個数Ｍ個の空きブロックは確保できないと判断してステップＳ５５へ進み、変数ｂｌｋｎｏを１足した後、ステップＳ５２へ戻る。
ステップＳ５２にて全ビットマップを探索し終わったと判断された場合は、どのブロック番号にもＭ個の空きブロックを持つチップが存在しないことになるため、空きブロック探索は失敗として終了する。
【００４６】
以上により、実施の形態１における図３のステップＳ３３のビットマップ探索を変数の取り出しで代替することで、実施の形態１でのＭ個の空きブロック探索をより高速に処理することができ、結果としてより高速な連続する入力データを欠損なく記録することができる。
つまり、本実施の形態では、空きブロック数が足りないブロック番号についてはビットマップの解析を省略できるので、空きブロック探索をより高速に処理することができる。
【００４７】
なお、図５では、Ｍ及びＮは（Ｎ≧Ｍ）の条件を満たす限り任意の値でよく、Ｍ＝１、すなわち従来例と同じ空きブロック確保にも使用できる。
【００４８】
本実施の形態では、同一のブロック番号毎のビットマップ情報に、ビットマップ情報内の空きブロックを示す数を保持したデータ記録装置を説明した。
【００４９】
なお、実施の形態１及び実施の形態２では、ＮＡＮＤフラッシュメモリを対象として説明を進めたが、複数のブロックに等分されているメモリであれば、本発明が対象とするメモリはＮＡＮＤフラッシュメモリに限らない。
【符号の説明】
【００５０】
１００  ホストコンピュータ、１０１  コマンドインタフェース部、１０２  読出し機能部、１０３  書込み機能部、１０４  消去機能部、１０５  アドレス変換機能部、１０６  空きブロック管理部、１０７  ブロック番号別ビットマップ情報記憶部、１０８  メモリインタフェース部、２００  ＮＡＮＤフラッシュメモリチップ、３００  メモリバス。
【図１】
2014160335.tif 000003
【図２】
2014160335.tif 000004
【図３】
2014160335.tif 000005
【図４】
2014160335.tif 000006
【図５】
2014160335.tif 000007
【図６】
2014160335.tif 000008
【図７】
2014160335.tif 000009
【図８】
2014160335.tif 000010
【図９】
2014160335.tif 000011
【図１０】
2014160335.tif 000012
【図１１】
2014160335.tif 000013