(57)【要約】【課題】複数個のＮＡＮＤフラッシュメモリに対して並列に書込みをする場合に書込みにかかる処理時間を短縮し、データの欠損を生じないデータ記録装置を得ること。【解決手段】同一バス上に接続された複数の記録媒体にデータを並列に書込む書込み機能部と、複数の記録媒体をそれぞれ分割した複数のブロックについてデータ書込み可能な空きブロックかどうかを空きブロック管理テーブルに登録する空きブロック管理部と、空きブロック管理部から通知された空きブロックについて並列書込み数分を１つの組として並列書込み用空きブロック管理テーブルに登録し、書込み機能部からの要求に応じて並列書込み用空きブロック管理テーブルから並列書込み数分の空きブロックを取得して、通知する並列書込み用空きブロック管理部と、を備えた。【選択図】          図６
2014134998.tif 000002
【特許請求の範囲】
【請求項１】
同一バス上に接続された複数の記録媒体にデータを並列に書込む書込み機能部と、
複数の記録媒体をそれぞれ分割した複数のブロックについてデータ書込み可能な空きブロックかどうかを空きブロック管理テーブルに登録する空きブロック管理部と、
前記空きブロック管理部から通知された空きブロックについて並列書込み数分を１つの組として並列書込み用空きブロック管理テーブルに登録し、前記書込み機能部からの要求に応じて前記並列書込み用空きブロック管理テーブルから並列書込み数分の空きブロックを取得して、通知する並列書込み用空きブロック管理部と、
を備えることを特徴とするデータ記録装置。
【請求項２】
前記並列書込み用空きブロック管理部は、記録媒体の識別子とブロックを識別するブロック番号とを対応付け、並列書込み数分の異なる記録媒体の空きブロックを１つの組として前記並列書込み用空きブロック管理テーブルに登録し、
前記空きブロック管理部より空きブロックが通知されると、前記並列書込み用空きブロック管理テーブルの並列書込み数分の空きブロックが登録されていない組に、当該空きブロックと同じ記録媒体のブロックが登録されていない場合、当該空きブロックを登録することを特徴とする請求項１に記載のデータ記録装置。
【請求項３】
前記並列書込み用空きブロック管理部は、記録媒体の識別子及びブロック番号と、１つの組に割当てられた割当て済みブロック数とを対応付け、並列書込み数分の異なる記録媒体の空きブロックを１つの組として前記並列書込み用空きブロック管理テーブルに登録し、
前記空きブロック管理部より空きブロックが通知されると、前記割当て済みブロック数が並列書込み数より小さい組に、当該空きブロックと同じ記録媒体のブロックが登録されていない場合、当該空きブロックを登録することを特徴とする請求項２に記載のデータ記録装置。
【請求項４】
前記並列書込み用空きブロック管理部は、記録媒体の識別子、ブロック番号、及び１つの組に割当てられた割当て済みブロック数に、さらにブロックの消去回数と１つの組に割当てられたブロックの消去回数の平均値とを対応付け、並列書込み数分の異なる記録媒体の空きブロックを１つの組として前記並列書込み用空きブロック管理テーブルに登録し、
前記空きブロック管理部より空きブロックが通知されると、割当て済みブロック数が並列書込み数と等しい組に、前記消去回数の平均値が当該空きブロックの消去回数より大きく、当該空きブロックと同じ記録媒体のブロックが登録されており、その消去回数が当該空きブロックの消去回数より大きい場合、登録されているブロックを当該空きブロックと入れ替えることを特徴とする請求項３に記載のデータ記録装置。
【請求項５】
前記並列書込み用空きブロック管理部は、登録から空きへと入れ替えられたブロックを、前記並列書込み用空きブロック管理テーブルの割当て済みブロック数が並列書込み数より小さい組に、登録から空きへと入れ替えられたブロックと同じ記録媒体のブロックが登録されていない場合、登録することを特徴とする請求項４に記載のデータ記録装置。
【請求項６】
前記並列書込み用空きブロック管理部は、前記空きブロック管理部から通知された空きブロックを前記並列書込み用空きブロック管理テーブルに登録する場合、空きブロック管理部へ当該ブロックを使用することを通知し、
前記空きブロック管理部は、当該ブロックを使用中として空きブロック管理テーブルに登録することを特徴とする請求項１から５のいずれかに記載のデータ記録装置。
【請求項７】
前記並列書込み用空きブロック管理部は、前記並列書込み用空きブロック管理テーブルに登録しない空きブロックがある場合、空きブロック管理部へ当該ブロックを使用しないことを通知し、
前記空きブロック管理部は、当該ブロックを空きとして空きブロック管理テーブルに登録することを特徴とする請求項１から６のいずれかに記載のデータ記録装置。
【請求項８】
記録媒体からデータを消去し、当該データを記録していた記録媒体のブロックを空きブロックとして前記空きブロック管理部へ通知する消去機能部と、
記録媒体からデータを読出す読出し機能部と、を備え、
前記書込み機能部は、データを並列に書込む場合は並列書込み用空きブロック管理部から並列書込み数分の空きブロックを取得してデータを書込み、１ブロックずつデータを書込む場合は空きブロック管理部から空きブロックを取得してデータを書込むことを特徴とする請求項１から７のいずれかに記載のデータ記録装置。
【請求項９】
並列書込み数の異なる複数の並列書込み用空きブロック管理部を備え、
前記書込み機能部は、並列書込み数に応じて異なる並列書込み用空きブロック管理部から並列書込み数分の空きブロックを取得することを特徴とする請求項１から８のいずれかに記載のデータ記録装置。
【請求項１０】
同一バス上に接続された複数の記録媒体にデータを並列に書込む書込み機能ステップと、
複数の記録媒体をそれぞれ分割した複数のブロックについてデータ書込み可能な空きブロックかどうかを空きブロック管理テーブルに登録する空きブロック管理ステップと、
前記空きブロック管理部から通知された空きブロックについて並列書込み数分を１つの組として並列書込み用空きブロック管理テーブルに登録し、前記書込み機能部からの要求に応じて前記並列書込み用空きブロック管理テーブルから並列書込み数分の空きブロックを取得して、通知する並列書込み用空きブロック管理ステップと、
を有するデータ記録方法。
【発明の詳細な説明】
【技術分野】
【０００１】
同一バスに接続された複数の記憶媒体に並列書き込みするデータ記録装置に関する。
【背景技術】
【０００２】
例えば、人工衛星は、地上局と通信できない範囲を飛行中に、観測機器が生成した観測データを人工衛星内に保持しておく必要があるため、データ記録装置を搭載している。地上局と通信できない範囲とは、例えば、地上局の位置に対して地球の裏側である。観測機器は観測データを機器内部に蓄えることはできないため、データ記録装置との間でデータ伝送のためのフロー制御を実現することは困難である。また、観測機器の高精細化に伴い、データ記録装置に入力される観測データはサイズが大きくなり、単位時間当たりのデータ量も増大している。しかし、宇宙環境で正常動作可能なメモリは限られているため、データ記録装置は大容量のバッファメモリを保持することができない。また、真空であるために放熱手段が乏しく、電子機器を高速動作させることができない、という制約もある。
【０００３】
そこで、データ記録装置には、ＮＡＮＤフラッシュメモリのような大容量かつ低消費電力な不揮発メモリが搭載されつつある。しかし、ＮＡＮＤフラッシュメモリは、データの読出しに比べ、データの書込みに時間を要する。そのため、観測機器から伝送される単位時間当たりのデータ量の増大に伴い、１つのデバイスチップではデータ記録時間が間に合わなくなっている。そこで、同一のメモリバスに複数のＮＡＮＤフラッシュメモリを接続し、その中の複数個のＮＡＮＤフラッシュメモリに対して並列に書込みをすることにより、データ記録性能の向上を図っている。
【０００４】
一方、ファイルシステムは、ＮＡＮＤフラッシュメモリに対してデータの書込み及び読出しを行う。ファイルシステムは、ファイルを削除する際にファイル管理情報の上でファイルを削除済みとするだけで、ＮＡＮＤフラッシュメモリに書き込まれている実際のデータそのものを消去しない。ＮＡＮＤフラッシュメモリは、不要なデータであることを認識しないまま処理を行うため、書込み速度が低下したり、書換え回数が増加したりしていた。
【０００５】
特許文献１では、ファイルシステムとＮＡＮＤフラッシュメモリはデータの管理単位を互いに認識するようにしている。よって、データの書込みの際に、ファイルシステムがＮＡＮＤフラッシュメモリに対して破棄してよいデータを通知し、不要なデータのコピー処理を抑制することにより、書込み速度を向上させていた。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】国際公開第２００９／００１５１４号
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、複数個のＮＡＮＤフラッシュメモリに対して並列に書込みをする場合、ＮＡＮＤフラッシュメモリ内の空きブロックを並列書込み数分探索する必要があり、処理時間が増加する。特許文献１においても、複数個のＮＡＮＤフラッシュメモリに対し並列に書込みをする場合には処理時間が増加する。したがって、データの書込み中に次のデータの書込みが要求されると、十分なバッファメモリがなければデータの欠損を生じるという問題があった。
【０００８】
本発明は上記のような問題点を解決するためになされたもので、複数個のＮＡＮＤフラッシュメモリに対して並列に書込みをする場合に書込みにかかる処理時間を短縮し、データの欠損を生じないデータ記録装置を得ることを目的としている。
【課題を解決するための手段】
【０００９】
同一バス上に接続された複数の記録媒体にデータを並列に書込む書込み機能部と、複数の記録媒体をそれぞれ分割した複数のブロックについてデータ書込み可能な空きブロックかどうかを空きブロック管理テーブルに登録する空きブロック管理部と、空きブロック管理部から通知された空きブロックについて並列書込み数分を１つの組として並列書込み用空きブロック管理テーブルに登録し、書込み機能部からの要求に応じて並列書込み用空きブロック管理テーブルから並列書込み数分の空きブロックを取得して、通知する並列書込み用空きブロック管理部と、を備えた。
【発明の効果】
【００１０】
本発明によれば、複数個のＮＡＮＤフラッシュメモリに対し並列に書込みをする場合に書込みにかかる処理時間を短縮し、データの欠損を生じないようにすることができる。
【図面の簡単な説明】
【００１１】
【図１】ＮＡＮＤフラッシュメモリのデバイスチップの基本的な構成と接続形態を示すブロック図。
【図２】ＮＡＮＤフラッシュメモリの基本的な構成を示すブロック図。
【図３】データ記録装置からデバイスチップへのデータの書込み処理の順序を示す図。
【図４】データ記録装置に複数のデバイスチップを接続した形態を示すブロック図。
【図５】データ記録装置から複数のデバイスチップへのデータの書込み処理の順序を示す図。
【図６】実施の形態１に係るデータ記録装置の構成を示すブロック図。
【図７】実施の形態１に係る並列書込み用空きブロック管理テーブルを示す図。
【図８】実施の形態１に係る空きブロック管理部及び並列書込み用空きブロック管理部における処理の流れを示すフローチャート。
【図９】実施の形態１に係る並列書込み用空きブロック管理部における並列書込み用空きブロック管理テーブルの探索処理の流れを示すフローチャート。
【図１０】実施の形態１に係る並列書込み用空きブロック管理テーブルを示す図。
【図１１】実施の形態２に係る並列書込み用空きブロック管理テーブルを示す図。
【図１２】実施の形態２に係る並列書込み用空きブロック管理部における並列書込み用空きブロック管理テーブルの探索処理の流れを示すフローチャート。
【図１３】実施の形態２に係る並列書込み用空きブロック管理テーブルを示す図。
【図１４】実施の形態３に係る並列書込み用空きブロック管理テーブルを示す図。
【図１５】実施の形態３に係る空きブロック管理部及び並列書込み用空きブロック管理部における処理の流れを示すフローチャート。
【図１６】実施の形態３に係る並列書込み用空きブロック管理部における並列書込み用空きブロック管理テーブルの探索処理の流れを示すフローチャート。
【図１７】実施の形態３に係る並列書込み用空きブロック管理テーブルを示す図。
【発明を実施するための形態】
【００１２】
実施の形態１．
まず、ＮＡＮＤフラッシュメモリの基本的な構造や制御方法について説明する。
【００１３】
図１は、ＮＡＮＤフラッシュメモリのデバイスチップ１１の基本的な構成と接続形態を示すブロック図である。デバイスチップ１１は、メモリバス１２を介してデータ記録装置１３と接続している。データ記録装置１３は、デバイスチップ１１にデータを記録する。また、データ記録装置１３は、デバイスチップ１１からデータを読出し、データが不要な場合は消去する。
【００１４】
デバイスチップ１１は、メモリインタフェース部１４、コマンド処理部１５、ページバッファ１６、ＮＡＮＤフラッシュメモリ１７から構成されている。メモリインタフェース部１４は、メモリバス１２を介してデータ記録装置１３と接続し、入出力のインタフェースとなっている。コマンド処理部１５は、コマンドを処理する。ページバッファ１６は、データを一時的に保持する。ＮＡＮＤフラッシュメモリ１７は、実際にデータを保持するメモリ素子が配列されている。
【００１５】
メモリインタフェース部１４は、データ記録装置１３からコマンドが入力されるとコマンドをコマンド処理部１５に出力する。コマンドは、書込み、消去又は読込みである。コマンド処理部１５は、入力されたコマンドの内容に応じてページバッファ１６を制御する。これにより、ページバッファ１６とＮＡＮＤフラッシュメモリ１７との間のデータ転送が制御される。
【００１６】
コマンドが書込みの場合、メモリインタフェース部１４はコマンドをコマンド処理部１５に出力し、コマンドに付加されているデータをページバッファ１６に出力する。ページバッファ１６は、データを一時保存した後、コマンド処理部１５からの指示により、ＮＡＮＤフラッシュメモリ１７にデータを書込む。コマンドが消去の場合、ページバッファ１６は、コマンド処理部１５からの指示により、ＮＡＮＤフラッシュメモリ１７からデータを消去する。
【００１７】
コマンドが読込みの場合、ページバッファ１６はコマンド処理部１５からの指示により、ＮＡＮＤフラッシュメモリ１７からデータを読出す。ページバッファ１６は、データを一時保存した後、メモリインタフェース部１４に出力する。メモリインタフェース部１４は、ページバッファ１６から入力されたデータをメモリバス１２へ出力する。
【００１８】
図２は、ＮＡＮＤフラッシュメモリ１７の基本的な構成を示すブロック図である。ＮＡＮＤフラッシュメモリ１７は、複数のブロック２１ａ〜ｊで構成されている。ブロック２１ａ〜ｊは、それぞれ複数のページから構成されている。例えば、ブロック２１ａはｋ個のページ２２ａ１〜ａｋから構成されている。
【００１９】
現在、ブロックの一般的な記録容量は６４〜２５６キロバイト程度である。また、ページの一般的な記録容量は１〜４キロバイト程度である。データの書込み及び読出しはページ単位で行われる。データの消去は、ブロック単位で行われる。ＮＡＮＤフラッシュメモリ１７では、新しいデータを記録する場合、すでに書込まれているデータを消去する必要がある。
【００２０】
図３は、データ記録装置１３からデバイスチップ１１へのデータの書込み処理の順序を示す図である。図３において、左から右へ時間が進み、３１〜３４はそれぞれ処理を示す。３１〜３４の処理の長さは時間を表す。ただし、処理にかかる時間は一例である。処理は、第１コマンド送信３１、書込みデータ転送３２、第２コマンド送信３３、チップ内書込み処理３４の順に行われる。
【００２１】
最初に、データ記録装置１３はデバイスチップ１１に第１コマンド３１を送信する。通常、第１コマンド３１には書込み先であるデバイスチップ１１のＮＡＮＤフラッシュメモリ１７のブロック番号が含まれている。次にデータ記録装置１３はデバイスチップ１１に１ページ分のデータを転送する。デバイスチップ１１は、転送されたデータをページバッファ１６に一時保存する。
【００２２】
次に、データ記録装置１３はデバイスチップ１１に第２コマンド３３を送信する。デバイスチップ１１は、第２コマンド３３を受信したことを契機としてチップ内書込み処理３４を行う。デバイスチップ１１は、ページバッファ１６に保存されたデータをＮＡＮＤフラッシュメモリ１７に転送し、書込む。データは、第１コマンドで指定されたブロックに書込まれる。データ記録装置１３は、デバイスチップ１１におけるチップ内書込み処理３４の完了を待って、別の処理を開始する必要がある。
【００２３】
図４は、データ記録装置１３に複数のデバイスチップを接続した形態を示すブロック図である。データ記録装置１３は、メモリバス４１を介して複数のデバイスチップ１１ａ〜ｎと接続している。
図５は、データ記録装置１３から複数のデバイスチップ１１ａ〜ｂへのデータの書込み処理の順序を示す図である。図５において、左から右へ時間が進む。３１ａ〜３４ａはデバイスチップ１１ａに対する処理を示す。３１ｂ〜３４ｂはデバイスチップ１１ｂに対する処理を示す。
【００２４】
デバイスチップ１１ａに対するチップ内書込み処理３４ａが行われている間、メモリバス４１は空き状態となる。データ記録装置１３は、この間に同一のメモリバス４１に接続されたデバイスチップ１１ｂに対する処理３１ｂ〜３３ｂを実施する。このようにデバイスチップ１１ａに対する処理とデバイスチップ１１ｂに対する処理を並列に行うことにより、全体として書込み性能を向上させることができる。
【００２５】
例えば、デバイスチップ１１ａへの第１コマンド送信３１ａから第２コマンド送信３３ａにかかる時間、デバイスチップ１１ａに対するチップ内書込み処理３４ａにかかる時間、デバイスチップ１１ｂへの第１コマンド送信３１ｂから第２コマンド送信３３ｂにかかる時間、及び、デバイスチップ１１ｂに対するチップ内書込み処理３４ｂにかかる時間が等しい場合、データ記録装置１３は、並列処理を行わない場合の３／４の時間でデータを書込むことができる。なお、通常は、第１コマンド送信３１ａ〜ｂから第２コマンド送信３３ａ〜ｂまでにかかる時間よりも、チップ内書込み処理３４ａ〜ｂにかかる時間のほうが長い。
【００２６】
以下に、本実施の形態について説明する。
図６は、実施の形態１に係るデータ記録装置６０の構成を示すブロック図である。データ記録装置６０はメモリバス６１を介して複数のＮＡＮＤフラッシュメモリのデバイスチップ１１ａ〜ｎに接続している。データ記録装置６０は、コマンドインタフェース部６２、書込み機能部６３、消去機能部６４、読出し機能部６５、空きブロック管理部６６、並列書込み用空きブロック管理部６７、アドレス変換部６８、及びメモリインタフェース部６９から構成されている。
【００２７】
コマンドインタフェース部６２は、データ記録装置６０内の図示しない上位システムからのコマンドを書込み機能部６３、消去機能部６４又は読出し機能部６５に振り分ける。また、コマンドインタフェース部６２は、書込み機能部６３、消去機能部６４、又は読出し機能部６５の処理結果を上位システムへ出力する。
【００２８】
書込み機能部６３は、デバイスチップ１１ａ〜ｎにデータの書込みを行う。消去機能部６４は、デバイスチップ１１ａ〜ｎに保持されているデータの消去を行う。読出し機能部６５は、デバイスチップ１１ａ〜ｎに保持されているデータの読出しを行う。
【００２９】
空きブロック管理部６６は、デバイスチップ１１ａ〜ｎのＮＡＮＤフラッシュメモリの全てのブロックの状態を管理している。ブロックの状態とは、データ書込み済みで使用中又はデータ消去済みで空きのどちらかである。並列書込み用空きブロック管理部６７は、並列書込み用空きブロック管理テーブルを保持し、並列書き込み数分のブロックを１つの組にして空きブロックを管理する。アドレス変換部６８は、上位システムが認識する論理アドレスと、デバイスチップ１１ａ〜ｎのＮＡＮＤフラッシュメモリのブロック番号との対応付けを保存している。
【００３０】
メモリインタフェース部６９は、書込み機能部６３、消去機能部６４又は読出し機能部６５からのコマンドをデバイスチップ１１ａ〜ｎに出力する。また、メモリインタフェース部６９は、ＮＡＮＤフラッシュメモリのデバイスチップ１１ａ〜ｎから入力される処理結果を書込み機能部６３、消去機能部６４又は読出し機能部６５に出力する。
【００３１】
次に、データ書込みの動作について説明する。
書込み機能部６３は、コマンドインタフェース部６２から書込みコマンドを受信すると、並列書込み用空きブロック管理部６７に並列書込み数分の空きブロックを要求する。並列書込み用空きブロック管理部６７は並列書込み用空きブロック管理テーブルから並列書込み数分の空きブロックの番号を取得し、書込み機能部６３に通知する。
【００３２】
書込み機能部６３は、書込みデータを並列書込み数分に分割し、それぞれ空きブロック番号とともにメモリインタフェース部６９に書込みコマンドを通知する。メモリインタフェース部６９は、並列書込み数分のデバイスチップそれぞれに書込みコマンドを送信する。インタフェース部６９は、デバイスチップへの書込み処理中でメモリバスの空いているときは他のデバイスチップへ書き込みコマンドを送信するように制御し、複数のデバイスチップへの書込みを並列に行う。デバイスチップは、指定されたＮＡＮＤフラッシュメモリのブロックに書込み処理を行い、処理が完了するとメモリインタフェース部６９に通知する。
【００３３】
なお、１つのデバイスチップへ書込みする場合、書込み機能部６３は、空きブロック管理部６６に空きブロックを要求し、取得する。書込み機能部６３は、空きブロック番号とともにメモリインタフェース部６９に書込みコマンドを通知する。メモリインタフェース部６９は、デバイスチップに書込みコマンドを送信する。複数のデバイスチップに並列書込みするのか、あるいは１つのデバイスチップに書込みするのかは、上位システムからの指示に従って処理を行ってもよいし、書込み機能部６３がどちらの処理を行うか判断してもよい。
【００３４】
メモリインタフェース部６９は、デバイスチップへの書込み処理が完了したことを書込み機能部６３に通知する。書込み機能部６３は、書込みが行われたデバイスチップのブロック番号と上位システムが認識している論理アドレスをアドレス変換部６８へ通知する。アドレス変換部６８は、通知されたデバイスチップのブロック番号と論理アドレスを対応付けて保存する。書込み機能部６３は、書込み処理が完了したことをコマンドインタフェース部６２に通知する。コマンドインタフェース部６２は、書込み処理が完了したことを上位システムに通知し、書込み処理が完了する。
【００３５】
次に、データ消去の動作について説明する。
消去機能部６４は、コマンドインタフェース部６２から消去コマンドを受信すると、指定された論理アドレスをアドレス変換部６８に通知する。アドレス変換部６８は指定された論理アドレスに対応するデバイスチップのブロック番号を消去機能部６４に通知する。消去機能部６４は、デバイスチップのブロック番号を指定して消去コマンドをメモリインタフェース部６９に送信する。
【００３６】
メモリインタフェース部６９は消去コマンドをデバイスチップに送信する。消去コマンドを受信したデバイスチップは、指定されたブロックのデータを消去し、処理が完了するとメモリインタフェース部６９へ通知する。メモリインタフェース部６９は、デバイスチップの消去処理が完了したことを消去機能部６４に通知する。
【００３７】
消去機能部６４は、当該ブロックと論理アドレスとの対応付けを削除するようにアドレス変換部６８に通知する。また、消去機能部６４は、空きブロック管理部６６に当該ブロックが空きであることを通知する。空きブロック管理部６６は消去処理が完了した空きブロックを並列書込み用空きブロック管理部６７に通知する。消去機能部６４は、消去処理が完了したことをコマンドインタフェース部６２に通知する。コマンドインタフェース部６２は、消去処理が完了したことを上位システムに通知する。
【００３８】
次に、データ読出しの動作について説明する。
読出し機能部６５は、コマンドインタフェース部６２から読出しコマンドを受信すると、指定された論理アドレスをアドレス変換部６８に通知する。アドレス変換部６８は指定された論理アドレスをデバイスチップのブロック番号に変換し、読出し機能部６５に通知する。読出し機能部６５は、デバイスチップのブロック番号を指定して読出しコマンドをメモリインタフェース部６９に送信する。
【００３９】
メモリインタフェース部６９は読出しコマンドをデバイスチップに送信する。読出しコマンドを受信したデバイスチップは、指定されたブロックのデータを読出し、メモリインタフェース部６９へ通知する。メモリインタフェース部６９は、デバイスチップの読出し処理が完了したことを読出し機能部６５に通知する。読出し機能部６５は、読出し処理が完了したことをコマンドインタフェース部６２に通知する。コマンドインタフェース部６２は、読出したデータを上位システムに通知する。
【００４０】
次に、空きブロック管理部６６及び並列書込み用空きブロック管理部６７における動作について説明する。
【００４１】
図７は、実施の形態１に係る並列書込み用空きブロック管理テーブル７１を示す図である。並列書込み用空きブロック管理テーブル７１は、並列書込み数分のデバイスチップとそのブロック番号を１つの組として１以上の組を保存するテーブルである。並列書込み用空きブロック管理テーブル７１の左端の番号７２は、組の番号を示すインデックスである。各インデックスには、並列書込み数分のエントリが保存される。本実施の形態においては、並列書込み数が３のため、３個のエントリ７３ａ〜ｃが保存されている。各エントリには、デバイスチップ番号７４ａ〜ｃとブロック番号７５ａ〜ｃが保存されている。デバイスチップ番号７４ａ〜ｃは、デバイスチップを識別する識別子、ブロック番号７５ａ〜ｃはブロックを識別する識別子である。
【００４２】
並列書込み用空きブロック管理テーブル７１において、デバイスチップ番号７４ｂ〜ｃ及びブロック番号７５ｂ〜ｃが「−」となっているのは、未登録であることを示す。例えば、インデックス７のエントリ１のデバイスチップ番号は１、ブロック番号は５０が登録され、エントリ２及びエントリ３のデバイスチップ番号及びブロック番号は未登録である。なお、同じインデックスのエントリに同じデバイスチップの異なるブロック番号を登録することはできない。
【００４３】
図８は、実施の形態１に係る空きブロック管理部６６及び並列書込み用空きブロック管理部６７における処理の流れを示すフローチャートである。
空きブロック管理部６６は、消去機能部６４から消去を完了したブロックが通知されるとステップＳ８１より処理を開始する。ステップＳ８１において、空きブロック管理部６６は、当該ブロックを並列書込み用空きブロック管理部６７に通知し、ステップＳ８２へ進む。
【００４４】
ステップＳ８２において、並列書込み用空きブロック管理部６７は、並列書込み用空きブロック管理テーブル７１に当該ブロックを登録することができる空きエントリがあるか探索する。ステップＳ８２の詳細は、後述する。処理は、ステップＳ８３へ進む。ステップＳ８３において、並列書込み用空きブロック管理部６７は、当該ブロックを並列書込み用空きブロック管理テーブル７１に登録することができる場合、ステップＳ８４へ進む。
【００４５】
ステップＳ８４において、並列書込み用空きブロック管理部６７は、当該ブロックを並列書込み用空きブロック管理テーブル７１に登録し、ステップＳ８５へ進む。ステップＳ８５において、並列書込み用空きブロック管理部６７は、当該ブロックを並列書込み用として使用するため、「使用」を空きブロック管理部６６に通知する。ステップＳ８７において、空きブロック管理部６６は、ブロック管理テーブルにおいて当該ブロックを使用中として登録し、処理を終了する。
【００４６】
ステップＳ８３において、並列書込み用空きブロック管理部６７は、当該ブロックを並列書込み用空きブロック管理テーブル７１に登録することができない場合、ステップＳ８６へ進む。ステップＳ８６において、並列書込み用空きブロック管理部６７は、当該ブロックを並列書込み用として使用しないため、「不使用」を空きブロック管理部６６に通知する。ステップＳ８８において、空きブロック管理部６６は、空きブロック管理テーブルにおいて当該ブロックを空きとして登録し、処理を終了する。
【００４７】
図９は、実施の形態１に係る並列書込み用空きブロック管理部６７における並列書込み用空きブロック管理テーブル７１の探索処理の流れを示すフローチャートである。図９のフローチャートは、図８のステップＳ８２の処理の詳細を示す。並列書込み用空きブロック管理部６７は、空きブロック管理部６６から空きブロックを通知されると、ステップＳ９１より処理を開始する。
【００４８】
通知された空きブロックがデバイスチップ＃２のブロック番号８０の場合の処理を説明する。ステップＳ９１において、並列書込み用空きブロック管理部６７は、並列書込み用空きブロック管理テーブル７１のインデックス１を参照する。並列書込み用空きブロック管理部６７は、並列書込み用空きブロック管理テーブル７１のインデックス１には空きエントリがないため、処理はステップＳ９３へ進む。ステップＳ９３において、並列書込み用空きブロック管理部６７は、全てのインデックスを探索済みではないため、ステップＳ９４へ進む。
【００４９】
ステップＳ９４において、並列書込み用空きブロック管理部６７は、参照するインデックスをインクリメントし、ステップＳ９１へ進む。ステップＳ９１において、並列書込み用空きブロック管理部６７は、並列書込み用空きブロック管理テーブル７１のインデックス２を参照する。インデックス２からインデックス５まで空きエントリがないため、並列書込み用空きブロック管理部６７は、インデックス１の場合と同様にステップＳ９１、ステップＳ９３及びステップＳ９４の処理を繰り返す。
【００５０】
ステップＳ９１において、並列書込み用空きブロック管理部６７は、並列書込み用空きブロック管理テーブル７１のインデックス６を参照する。インデックス６は空きエントリがあるため、処理はステップＳ９２へ進む。ステップＳ９２において、デバイスチップ＃２はインデックス６のエントリ２に登録されているため、処理はステップＳ９３へ進む。ステップＳ９３において、並列書込み用空きブロック管理部６７は、全てのインデックスを探索済みではないため、ステップＳ９４へ進む。ステップＳ９４において、並列書込み用空きブロック管理部６７は、参照するインデックスをインクリメントし、ステップＳ９１へ進む。
【００５１】
ステップＳ９１において、並列書込み用空きブロック管理部６７は、並列書込み用空きブロック管理テーブル７１のインデックス７を参照する。インデックス７には空きエントリがあるため、処理はステップＳ９２へ進む。ステップＳ９２において、デバイスチップ＃２はインデックス７には登録されていないため、並列書込み用空きブロック管理部６７は、インデックス７のエントリ２に空きブロックを登録可能である。並列書込み用空きブロック管理部６７は、処理を終了する。
【００５２】
図１０は、実施の形態１に係る並列書込み用空きブロック管理テーブル１０１を示す図である。登録並列書込み用空きブロック管理テーブル１０１は、並列書込み用空きブロック管理テーブル７１のインデックス７のエントリ２にデバイスチップ＃２のブロック番号８０を登録したテーブルである。図１０において、網掛けで示した箇所がインデックス７のエントリ２である。デバイスチップ＃２のブロック番号８０は、並列書込み用の空きブロックとして利用されることとなる。
【００５３】
次に、図９のフローチャートについて、通知された空きブロックがデバイスチップ＃１のブロック番号３０の場合の処理を説明する。
ステップＳ９１において、並列書込み用空きブロック管理部６７は、並列書込み用空きブロック管理テーブル７１のインデックス１を参照する。並列書込み用空きブロック管理部６７は、並列書込み用空きブロック管理テーブル７１のインデックス１には空きエントリがないため、処理はステップＳ９３へ進む。ステップＳ９３において、並列書込み用空きブロック管理部６７は、全てのインデックスを探索済みではないため、ステップＳ９４へ進む。
【００５４】
ステップＳ９４において、並列書込み用空きブロック管理部６７は、参照するインデックスをインクリメントし、ステップＳ９１へ進む。ステップＳ９１において、並列書込み用空きブロック管理部６７は、並列書込み用空きブロック管理テーブル７１のインデックス２を参照する。インデックス２からインデックス５まで空きエントリがないため、並列書込み用空きブロック管理部６７は、インデックス１の場合と同様にステップＳ９１、ステップＳ９３及びステップＳ９４の処理を繰り返す。
【００５５】
ステップＳ９１において、並列書込み用空きブロック管理部６７は、並列書込み用空きブロック管理テーブル７１のインデックス６を参照する。インデックス６は空きエントリがあるため、処理はステップＳ９２へ進む。ステップＳ９２において、デバイスチップ＃１はインデックス６のエントリ１に登録されているため、処理はステップＳ９３へ進む。ステップＳ９３において、並列書込み用空きブロック管理部６７は、全てのインデックスを探索済みではないため、ステップＳ９４へ進む。ステップＳ９４において、並列書込み用空きブロック管理部６７は、参照するインデックスをインクリメントし、ステップＳ９１へ進む。
【００５６】
ステップＳ９１において、並列書込み用空きブロック管理部６７は、並列書込み用空きブロック管理テーブル７１のインデックス７を参照する。インデックス７には空きエントリがあるため、処理はステップＳ９２へ進む。ステップＳ９２において、デバイスチップ＃１はインデックス７のエントリ１に登録されているため、処理はステップＳ９３へ進む。ステップＳ９３において、並列書込み用空きブロック管理部６７は、全てのインデックスを探索済みのため、処理を終了する。
【００５７】
デバイスチップ＃１のブロック番号３０は、並列書込み用空きブロック管理テーブル７１には登録されない。デバイスチップ＃１のブロック番号３０は、空きブロック管理部６６においてブロック毎に割当てられる空きブロックとして利用されることとなる。
【００５８】
本実施の形態においては、並列書込み数が３の場合を示したが、並列書込み数は他の値でもよい。デバイスチップ数をＮとした場合、並列書込み数はＮ以下の自然数である。並列書込み用空きブロック管理テーブルのエントリ数は並列書込み数と同じ値とすればよい。
【００５９】
また、本実施の形態においては、並列書込み用空きブロック管理テーブル７１のインデックス数を７としたが、他の値でもよい。並列書込みを要する入力データの通信頻度、及び１ブロック毎の割当てに必要なブロック数との比率を考慮し、データ記録装置６０が予め決めておいてもよい。また、データ記録装置６０がインデックス数の上限値及び下限値を決め、並列書込みを要する入力データの通信頻度、及び１ブロック毎の割当てに必要なブロック数との比率の変化に応じて変化させてもよい。
【００６０】
さらに、データ記録装置６０は、並列書込み数が異なる複数の並列書込み用空きブロック管理部を保持し、デバイスチップに対して異なる並列書込み数でデータの書込みをするようにしてもよい。
【００６１】
したがって、本実施の形態では、同一バス上に接続された複数の記録媒体にデータを並列に書込む書込み機能部６３と、複数の記録媒体をそれぞれ分割した複数のブロックについてデータ書込み可能な空きブロックかどうかを空きブロック管理テーブルに登録する空きブロック管理部６６と、空きブロック管理部６６から通知された空きブロックについて並列書込み数分を１つの組として並列書込み用空きブロック管理テーブル７１に登録し、書込み機能部６３からの要求に応じて並列書込み用空きブロック管理テーブル７１から並列書込み数分の空きブロックを取得して、通知する並列書込み用空きブロック管理部６７と、を備え、並列書込み用空きブロック管理部６７は、記録媒体の識別子とブロックを識別するブロック番号とを対応付け、並列書込み数分の異なる記録媒体の空きブロックを１つの組として並列書込み用空きブロック管理テーブル７１に登録し、空きブロック管理部６６より空きブロックが通知されると、並列書込み用空きブロック管理テーブル７１の並列書込み数分の空きブロックが登録されていない組に当該空きブロックと同じ記録媒体のブロックが登録されていない場合、当該空きブロックを登録するので、複数個のＮＡＮＤフラッシュメモリに対し並列にデータを書込む場合に処理時間を短縮し、データの欠損を生じさせないようにすることができる。
【００６２】
並列書込み用空きブロック管理テーブル７１を１度探索すれば並列書込みに適した空きブロックの組を取出すことができるため、従来の空きブロック管理部６６から１つの空きブロックを取出すのと同じ処理量で並列書込み処理を行うことができる。よって、連続する入力データを欠損なく記録することができる。
【００６３】
実施の形態２．
以上の実施の形態１では、並列書込み用空きブロック管理部６７が並列書込み用空きブロック管理テーブルに空きエントリがあるか各インデックスの各エントリを探索するようにしたものであるが、本実施の形態においては、並列書込み用空きブロック管理テーブルに割当て済みブロック数を付与し、空きエントリがあるか探索する実施の形態を示す。
なお、本実施の形態において、並列書込み用空きブロック管理部６７以外は実施の形態１と同じであるため、説明を割愛する。
本実施の形態において、メモリバス６１に接続された全てのＮＡＮＤフラッシュメモリのデバイスチップは５個、並列書込み数は３とする。
【００６４】
図１１は、実施の形態２に係る並列書込み用空きブロック管理テーブル１１１を示す図である。１１２はインデックスを示す。１１３は、各インデックス内での割当て済みブロック数を示す。１１４ａ〜ｅは各デバイスチップに対応したエントリである。エントリの数は、メモリバス６１に接続されたデバイスチップの個数に対応し、５個である。１１４ａはデバイスチップ＃１用のエントリを示す。１１４ｂはデバイスチップ＃２用のエントリを示す。１１４ｃはデバイスチップ＃３用のエントリを示す。１１４ｄはデバイスチップ＃４用のエントリを示す。１１４ｅはデバイスチップ＃５用のエントリを示す。
【００６５】
割当て済みブロック数は、各インデックスにおいてブロック番号が登録されたエントリ数を示す。割当て済みブロック数は、並列書込み数以下の自然数である。各エントリには、空きブロックの番号が登録される。ブロック番号が「−」の場合、未登録であることを示す。
【００６６】
図１２は、実施の形態２に係る並列書込み用空きブロック管理部６７における並列書込み用空きブロック管理テーブル１１１の探索処理の流れを示すフローチャートである。図１２のフローチャートは、図８のステップＳ８２の処理の詳細を示す。並列書込み用空きブロック管理部６７は、空きブロック管理部６６から空きブロックを通知されると、ステップＳ１２１より処理を開始する。
【００６７】
通知された空きブロックがデバイスチップ＃２のブロック番号８０の場合の処理を説明する。ステップＳ１２１において、並列書込み用空きブロック管理部６７は、並列書込み用空きブロック管理テーブル１１１のインデックス１を参照する。インデックス１の割当て済みブロック数は３である。並列書込み用空きブロック管理部６７は、インデックス１の割当て済みブロック数が並列書込み数より小さくないため、処理はステップＳ１２３へ進む。ステップＳ１２３において、並列書込み用空きブロック管理部６７は、全てのインデックスを探索済みではないため、ステップＳ１２４へ進む。
【００６８】
ステップＳ１２４において、並列書込み用空きブロック管理部６７は、参照するインデックスをインクリメントし、ステップＳ１２１へ進む。ステップＳ１２１において、並列書込み用空きブロック管理部６７は、並列書込み用空きブロック管理テーブル１１１のインデックス２を参照する。インデックス２からインデックス５まで、割当て済みブロック数が並列書込み数より小さくないため、並列書込み用空きブロック管理部６７は、インデックス１の場合と同様にステップＳ１２１、ステップＳ１２３及びステップＳ１２４の処理を繰り返す。
【００６９】
ステップＳ１２１において、並列書込み用空きブロック管理部６７は、並列書込み用空きブロック管理テーブル７１のインデックス６を参照する。インデックス６の割当て済みブロック数は並列書込み数より小さいため、処理はステップＳ１２２へ進む。ステップＳ１２２において、デバイスチップ＃２用のエントリ２にはすでに他のブロック番号が登録されているため、処理はステップＳ１２３へ進む。ステップＳ１２３において、並列書込み用空きブロック管理部６７は、全てのインデックスを探索済みではないため、ステップＳ１２４へ進む。ステップＳ１２４において、並列書込み用空きブロック管理部６７は、参照するインデックスをインクリメントし、ステップＳ１２１へ進む。
【００７０】
ステップＳ１２１において、並列書込み用空きブロック管理部６７は、並列書込み用空きブロック管理テーブル７１のインデックス７を参照する。インデックス７の割当て済みブロック数は並列書込み数より小さいため、処理はステップＳ１２２へ進む。ステップＳ１２２において、デバイスチップ＃２用のエントリ２は空いているため、並列書込み用空きブロック管理部６７は、インデックス７のエントリ２に空きブロックを登録可能である。並列書込み用空きブロック管理部６７は、処理を終了する。
【００７１】
図１３は、実施の形態２に係る並列書込み用空きブロック管理テーブル１３１を示す図である。並列書込み用空きブロック管理テーブル１３１は、並列書込み用空きブロック管理テーブル１１１のインデックス７のエントリ２にデバイスチップ＃２のブロック番号８０が登録されたテーブルである。図１３において、網掛けした箇所がインデックス７のエントリ２である。デバイスチップ＃２のブロック番号８０は、並列書込み用の空きブロックとして利用されることとなる。
【００７２】
次に、図１２のフローチャートについて、通知された空きブロックがデバイスチップ＃１のブロック番号３０の場合の処理を説明する。
ステップＳ１２１において、並列書込み用空きブロック管理部６７は、並列書込み用空きブロック管理テーブル１１１のインデックス１を参照する。インデックス１の割当て済みブロック数は３である。並列書込み用空きブロック管理部６７は、インデックス１の割当て済みブロック数が並列書込み数より小さくないため、処理はステップＳ１２３へ進む。ステップＳ１２３において、並列書込み用空きブロック管理部６７は、全てのインデックスを探索済みではないため、ステップＳ１２４へ進む。
【００７３】
ステップＳ１２４において、並列書込み用空きブロック管理部６７は、参照するインデックスをインクリメントし、ステップＳ１２１へ進む。ステップＳ１２１において、並列書込み用空きブロック管理部６７は、並列書込み用空きブロック管理テーブル１１１のインデックス２を参照する。インデックス２からインデックス５まで、割当て済みブロック数が並列書込み数より小さくないため、並列書込み用空きブロック管理部６７は、インデックス１の場合と同様にステップＳ１２１、ステップＳ１２３及びステップＳ１２４の処理を繰り返す。
【００７４】
ステップＳ１２１において、並列書込み用空きブロック管理部６７は、並列書込み用空きブロック管理テーブル１１１のインデックス６を参照する。インデックス６の割当て済みブロック数は並列書込み数より小さいため、処理はステップＳ１２２へ進む。ステップＳ１２２において、デバイスチップ＃１用のエントリ１にはすでに他のブロック番号が登録されているため、処理はステップＳ１２３へ進む。ステップＳ１２３において、並列書込み用空きブロック管理部６７は、全てのインデックスを探索済みではないため、ステップＳ１２４へ進む。ステップＳ１２４において、並列書込み用空きブロック管理部６７は、参照するインデックスをインクリメントし、ステップＳ１２１へ進む。
【００７５】
ステップＳ１２１において、並列書込み用空きブロック管理部６７は、並列書込み用空きブロック管理テーブル１１１のインデックス７を参照する。インデックス７の割当て済みブロック数は並列書込み数より小さいため、処理はステップＳ１２２へ進む。ステップＳ１２２において、デバイスチップ＃１用のエントリ１にはすでに他のブロック番号が登録されているため、処理はステップＳ１２３へ進む。ステップＳ１２３において、並列書込み用空きブロック管理部６７は、全てのインデックスを探索済みのため、処理を終了する。
【００７６】
デバイスチップ＃１のブロック番号３０は、並列書込み用空きブロック管理テーブル１１１には登録されない。デバイスチップ＃１のブロック番号３０は、空きブロック管理部６６においてブロック毎に割当てられる空きブロックとして利用されることとなる。
【００７７】
したがって、本実施の形態では、同一バス上に接続された複数の記録媒体にデータを並列に書込む書込み機能部６３と、複数の記録媒体をそれぞれ分割した複数のブロックについてデータ書込み可能な空きブロックかどうかを空きブロック管理テーブルに登録する空きブロック管理部６６と、空きブロック管理部６６から通知された空きブロックについて並列書込み数分を１つの組として並列書込み用空きブロック管理テーブル１１１に登録し、書込み機能部６３からの要求に応じて並列書込み用空きブロック管理テーブル１１１から並列書込み数分の空きブロックを取得して、通知する並列書込み用空きブロック管理部６７と、を備え、並列書込み用空きブロック管理部６７は、記録媒体の識別子及びブロック番号と、１つの組に割当てられた割当て済みブロック数とを対応付け、並列書込み数分の異なる記録媒体の空きブロックを１つの組として並列書込み用空きブロック管理テーブル１１１に登録し、空きブロック管理部６６より空きブロックが通知されると、割当て済みブロック数が並列書込み数より小さい組に、当該空きブロックと同じ記録媒体のブロックが登録されていない場合、当該空きブロックを登録するので、並列書込み用空きブロック管理部６７は、並列書込み用空きブロック管理テーブル１１１の各インデックスの割当て済みブロック数とデバイスチップ番号に対応したエントリのみ参照すれば、空きブロックを登録することができるか判断することができる。よって、並列書込み用空きブロック管理部６７の処理量を抑制することができる。
【００７８】
実施の形態３．
以上の実施の形態２では、並列書込み用空きブロック管理テーブルに割当て済みブロック数を付与し、空きエントリがあるか探索するようにしたものであるが、本実施の形態においては、ウェアレベリングを行う実施の形態を示す。ウェアレベリングとは、消去回数を均等化することである。メモリ素子は、データの書込み及び消去を繰り返すと劣化し、データを書込むことができなくなる。特定のブロックにデータの書込み及び消去が集中して書込みができなくなってしまうことを防ぐため、消去回数を均等化することが行われている。
【００７９】
本実施の形態において、メモリバス６１に接続された全てのＮＡＮＤフラッシュメモリのデバイスチップは５個、並列書込み数は３とする。
【００８０】
図１４は、実施の形態３に係る並列書込み用空きブロック管理テーブル１４１を示す図である。１４２は、並列書込み用空きブロック管理テーブル１４１のインデックスを示す。１４３は、各インデックス内における割当て済みブロック数を示す。割当て済みブロック数は、並列書込み数以下の自然数である。１４４は、各インデックス内に登録されている空きブロックの消去回数の平均値である。割当て済みブロック数が並列書込み数と等しい場合のみ、消去回数の平均値に値が登録される。
【００８１】
１４５ａ〜ｅは各デバイスチップに対応したエントリである。エントリの数は、メモリバス６１に接続されたデバイスチップの個数に対応し、５個である。１４５ａはデバイスチップ＃１用のエントリを示す。１４５ｂはデバイスチップ＃２用のエントリを示す。１４５ｃはデバイスチップ＃３用のエントリを示す。１４５ｄはデバイスチップ＃４用のエントリを示す。１４５ｅはデバイスチップ＃５用のエントリを示す。
【００８２】
各エントリには、それぞれ対応したデバイスチップの空きブロック番号及び当該ブロックの消去回数が登録される。１４６ａ〜ｅは、各エントリの空きブロック番号を示す。１４７ａ〜ｅは、各エントリの当該ブロックの消去回数を示す。「−」は値が登録されていないことを示す。
【００８３】
図１５は、実施の形態３に係る空きブロック管理部６６及び並列書込み用空きブロック管理部６７における処理の流れを示すフローチャートである。
空きブロック管理部６６は、消去機能部６４から消去を完了したブロックが通知されるとステップＳ１５０より処理を開始する。通知されたブロックをブロックＸとする。ステップＳ１５０において、空きブロック管理部６６は、ブロックＸを並列書込み用空きブロック管理部６７に通知し、ステップＳ１５１へ進む。
【００８４】
ステップＳ１５１において、並列書込み用空きブロック管理部６７は、並列書込み用空きブロック管理テーブル１４１にブロックＸを登録することができるエントリがあるか探索し、登録可能であれば登録する。ステップＳ１５１の処理の詳細は、後述する。ステップＳ１５１の処理の結果、並列書込み用空きブロック管理テーブル１４１に登録できない空きブロックが残る場合がある。処理は、ステップＳ１５２へ進む。ステップＳ１５２において、並列書込み用空きブロック管理部６７は、並列書込み用空きブロック管理テーブル１４１に登録できない空きブロックがある場合、ステップＳ１５３へ進む。
【００８５】
ステップＳ１５３において、並列書込み用空きブロック管理部６７は、空きブロックがブロックＸの場合、ステップＳ１５４へ進む。ステップＳ１５４において、並列書込み用空きブロック管理部６７は、ブロックＸを並列書込み用として使用しないため、「不使用」を空きブロック管理部６６に通知し、ステップＳ１５５へ進む。ステップＳ１５５において、空きブロック管理部６６は、空きブロック管理テーブルにおいてブロックＸを空きとして登録し、処理を終了する。
【００８６】
ステップＳ１５３において、並列書込み用空きブロック管理部６７は、空きブロックが空きブロックＸでない場合、ステップＳ１５６へ進む。空きブロックをブロックＹとする。ステップＳ１５６において、並列書込み用空きブロック管理部６７は、ブロックＹを並列書込み用として使用しないため、「不使用」を空きブロック管理部６６に通知する。また、並列書込み用空きブロック管理部６７は、ブロックＸを並列書込み用として使用するため、「使用」を空きブロック管理部６６に通知し、ステップＳ１５７へ進む。
【００８７】
ステップＳ１５７において、空きブロック管理部６６は、ブロック管理テーブルにおいてブロックＹを空きとして登録し、ステップＳ１５８へ進む。ステップＳ１５８において、空きブロック管理部６６は、空きブロック管理テーブルにおいてブロックＸを使用中として登録し、処理を終了する。
【００８８】
ステップＳ１５２において、並列書込み用空きブロック管理部６７は、空きブロックがない場合、ステップＳ１５９へ進む。ステップＳ１５９において、並列書込み用空きブロック管理部６７は、ブロックＸを並列書込み用として使用するため、「使用」を空きブロック管理部６６に通知し、ステップＳ１５８へ進む。ステップＳ１５８において、空きブロック管理部６６は、空きブロック管理テーブルにおいてブロックＸを使用中として登録し、処理を終了する。
【００８９】
図１６は、実施の形態３に係る並列書込み用空きブロック管理部６７における並列書込み用空きブロック管理テーブル１４１の探索処理の流れを示すフローチャートである。図１６のフローチャートは、図１５のステップＳ１５１の処理の詳細を示す。並列書込み用空きブロック管理部６７は、空きブロック管理部６６から空きブロックを通知されると、ステップＳ１６１より処理を開始する。
【００９０】
ステップＳ１６１において、並列書込み用空きブロック管理部６７は、並列書込み用空きブロック管理テーブル１４１のインデックス１を参照する。並列書込み用空きブロック管理部６７は、インデックス１の割当て済みブロック数と並列書込み数が等しい場合、ステップＳ１６２へ進む。並列書込み用空きブロック管理部６７は、インデックス１の割当て済みブロック数と並列書込み数が等しくない場合、ステップＳ１６３へ進む。
【００９１】
ステップＳ１６２において、並列書込み用空きブロック管理部６７は、消去回数の平均値を参照する。消去回数の平均値が空きブロックの消去回数より大きい場合、ステップＳ１６３へ進む。消去回数の平均値が空きブロックの消去回数より大きくない場合、ステップＳ１６６へ進む。ステップＳ１６３において、並列書込み用空きブロック管理部６７は、空きブロックのデバイスチップ用のエントリにすでに登録されている場合、ステップＳ１６４へ進む。
【００９２】
ステップＳ１６４において、並列書込み用空きブロック管理部６７は、登録済みのブロックの消去回数が空きブロックの消去回数より大きい場合、ステップＳ１６５へ進む。登録済みのブロックの消去回数が空きブロックの消去回数より大きくない場合、ステップＳ１６６へ進む。ステップＳ１６５において、並列書込み用空きブロック管理部６７は、登録済みのブロックと空きブロックを入れ替え、ステップＳ１６６へ進む。ステップＳ１６６において、並列書込み用空きブロック管理部６７は、全てのインデックスを探索済みの場合、処理を終了する。
【００９３】
ステップＳ１６６において、並列書込み用空きブロック管理部６７は、全てのインデックスを探索済みでない場合、ステップＳ１６７へ進む。ステップＳ１６７において、並列書込み用空きブロック管理部６７は、参照するインデックスをインクリメントし、ステップＳ１６１へ進む。
【００９４】
ステップＳ１６３において、並列書込み用空きブロック管理部６７は、空きブロックのデバイスチップ用のエントリにすでに登録されていない場合、空きブロックを登録し、処理を終了する。
【００９５】
通知された空きブロックがデバイスチップ＃１のブロック番号３０の場合の処理を説明する。消去回数は４５回とする。ステップＳ１６１において、並列書込み用空きブロック管理部６７は、並列書込み用空きブロック管理テーブル１４１のインデックス１を参照する。インデックス１の割当て済みブロック数は３である。並列書込み用空きブロック管理部６７は、インデックス１の割当て済みブロック数が並列書込み数と等しいため、処理はステップＳ１６２へ進む。
【００９６】
ステップＳ１６２において、並列書込み用空きブロック管理部６７は、消去回数の平均値を参照する。消去回数の平均値４１は、空きブロックの消去回数４５より大きくないため、処理はステップＳ１６６へ進む。ステップＳ１６６において、並列書込み用空きブロック管理部６７は、全てのインデックスを探索済みではないため、ステップＳ１６７へ進む。ステップＳ１６７において、並列書込み用空きブロック管理部６７は、参照するインデックスをインクリメントし、ステップＳ１６１へ進む。
【００９７】
ステップＳ１６１において、並列書込み用空きブロック管理部６７は、並列書込み用空きブロック管理テーブル１４１のインデックス２を参照する。インデックス２の割当て済みブロック数は３である。並列書込み用空きブロック管理部６７は、インデックス２の割当て済みブロック数が並列書込み数と等しいため、処理はステップＳ１６２へ進む。ステップＳ１６２において、並列書込み用空きブロック管理部６７は、消去回数の平均値を参照する。消去回数の平均値５９は、空きブロックの消去回数４５より大きいため、処理はステップＳ１６３へ進む。
【００９８】
ステップＳ１６３において、並列書込み用空きブロック管理部６７は、インデックス２のエントリ１に登録があるため、ステップＳ１６４へ進む。ステップＳ１６４において、並列書込み用空きブロック管理部６７は、デバイスチップ＃１用のエントリ１の消去回数を参照する。エントリ１の消去回数４５は、空きブロックの消去回数４５より大きくないため、処理はステップＳ１６６へ進む。ステップＳ１６６において、並列書込み用空きブロック管理部６７は、全てのインデックスを探索済みではないため、ステップＳ１６７へ進む。ステップＳ１６７において、並列書込み用空きブロック管理部６７は、参照するインデックスをインクリメントし、ステップＳ１６１へ進む。
【００９９】
ステップＳ１６１において、並列書込み用空きブロック管理部６７は、並列書込み用空きブロック管理テーブル１３１のインデックス３を参照する。インデックス３の割当て済みブロック数は３である。並列書込み用空きブロック管理部６７は、インデックス３の割当て済みブロック数が並列書込み数と等しいため、処理はステップＳ１６２へ進む。
【０１００】
ステップＳ１６２において、並列書込み用空きブロック管理部６７は、消去回数の平均値を参照する。消去回数の平均値５０は、空きブロックの消去回数４５より大きいため、処理はステップＳ１６３へ進む。ステップＳ１６３において、並列書込み用空きブロック管理部６７は、インデックス３のエントリ１に登録があるため、ステップＳ１６４へ進む。ステップＳ１６４において、並列書込み用空きブロック管理部６７は、デバイスチップ＃１用のエントリ１の消去回数を参照する。エントリ１の消去回数６０は、空きブロックの消去回数４５より大きいため、ステップＳ１６５へ進む。
【０１０１】
ステップＳ１６５において、並列書込み用空きブロック管理部６７は、インデックス３のエントリ１に登録されているブロック番号３５と通知された空きブロックを入れ替える。また、並列書込み用空きブロック管理部６７は、エントリ３とエントリ５とブロック番号３０の消去回数の平均値を算出する。並列書込み用空きブロック管理部６７は、算出した消去回数の平均値４５を登録し、ステップＳ１６６へ進む。ステップＳ１６６において、並列書込み用空きブロック管理部６７は、全てのインデックスを探索済みではないため、ステップＳ１６７へ進む。ステップＳ１６７において、並列書込み用空きブロック管理部６７は、参照するインデックスをインクリメントし、ステップＳ１６１へ進む。
【０１０２】
並列書込み用空きブロック管理部６７は、空きブロックをデバイスチップ＃１のブロック番号３５、消去回数６０として、処理を続ける。ステップＳ１６１において、並列書込み用空きブロック管理部６７は、並列書込み用空きブロック管理テーブル１３１のインデックス４を参照する。インデックス４の割当て済みブロック数は３である。並列書込み用空きブロック管理部６７は、インデックス４の割当て済みブロック数が並列書込み数と等しいため、処理はステップＳ１６２へ進む。
【０１０３】
ステップＳ１６２において、並列書込み用空きブロック管理部６７は、消去回数の平均値を参照する。消去回数の平均値３３は、空きブロックの消去回数６０より大きくないため、処理はステップＳ１６６へ進む。ステップＳ１６６において、並列書込み用空きブロック管理部６７は、全てのインデックスを探索済みではないため、ステップＳ１６７へ進む。ステップＳ１６７において、並列書込み用空きブロック管理部６７は、参照するインデックスをインクリメントし、ステップＳ１６１へ進む。
【０１０４】
ステップＳ１６１において、並列書込み用空きブロック管理部６７は、並列書込み用空きブロック管理テーブル１４１のインデックス５を参照する。インデックス５の割当て済みブロック数は３である。並列書込み用空きブロック管理部６７は、インデックス５の割当て済みブロック数が並列書込み数と等しいため、処理はステップＳ１６２へ進む。
【０１０５】
ステップＳ１６２において、並列書込み用空きブロック管理部６７は、消去回数の平均値を参照する。消去回数の平均値４２は、空きブロックの消去回数６０より大きくないため、処理はステップＳ１６６へ進む。ステップＳ１６６において、並列書込み用空きブロック管理部６７は、全てのインデックスを探索済みではないため、ステップＳ１６７へ進む。ステップＳ１６７において、並列書込み用空きブロック管理部６７は、参照するインデックスをインクリメントし、ステップＳ１６１へ進む。
【０１０６】
ステップＳ１６１において、並列書込み用空きブロック管理部６７は、並列書込み用空きブロック管理テーブル１４１のインデックス６を参照する。インデックス６の割当て済みブロック数は２である。並列書込み用空きブロック管理部６７は、インデックス６の割当て済みブロック数が並列書込み数と等しくないため、処理はステップＳ１６３へ進む。
【０１０７】
ステップＳ１６３において、並列書込み用空きブロック管理部６７は、並列書込み用空きブロック管理テーブル１４１のインデックス６のエントリ１に登録があるため、ステップＳ１６４へ進む。ステップＳ１６４において、並列書込み用空きブロック管理部６７は、デバイスチップ＃１用のエントリ１の消去回数を参照する。エントリ１の消去回数７０は、空きブロックの消去回数６０より大きいため、ステップＳ１６５へ進む。
【０１０８】
ステップＳ１６５において、並列書込み用空きブロック管理部６７は、インデックス６のエントリ１に登録されているブロック番号２２と空きブロックを入れ替え、ステップＳ１６６へ進む。ステップＳ１６６において、並列書込み用空きブロック管理部６７は、全てのインデックスを探索済みではないため、ステップＳ１６７へ進む。ステップＳ１６７において、並列書込み用空きブロック管理部６７は、参照するインデックスをインクリメントし、ステップＳ１６１へ進む。
【０１０９】
並列書込み用空きブロック管理部６７は、空きブロックをデバイスチップ＃１のブロック番号２２、消去回数７０として、処理を続ける。ステップＳ１６１において、並列書込み用空きブロック管理部６７は、並列書込み用空きブロック管理テーブル１４１のインデックス７を参照する。インデックス７の割当て済みブロック数は１である。並列書込み用空きブロック管理部６７は、インデックス７の割当て済みブロック数が並列書込み数と等しくないため、処理はステップＳ１６３へ進む。
【０１１０】
ステップＳ１６３において、並列書込み用空きブロック管理部６７は、並列書込み用空きブロック管理テーブル１４１のインデックス７のエントリ１に登録があるため、ステップＳ１６４へ進む。ステップＳ１６４において、並列書込み用空きブロック管理部６７は、デバイスチップ＃１用のエントリ１の消去回数を参照する。エントリ１の消去回数５０は、空きブロックの消去回数７０より大きくないため、ステップＳ１６６へ進む。ステップＳ１６６において、並列書込み用空きブロック管理部６７は、全てのインデックスを探索済みのため、処理を終了する。
【０１１１】
図１７は、実施の形態３に係る並列書込み用空きブロック管理テーブル１７１を示す図である。登録並列書込み用空きブロック管理テーブル１７１は、並列書込み用空きブロック管理テーブル１４１のインデックス３の消去回数の平均値、並びにエントリ１、及びインデックス６のエントリ１に新たな値が登録されたテーブルである。図１７において、網掛けした箇所がインデックス３の消去回数の平均値、並びにエントリ１、及びインデックス６のエントリ１である。
【０１１２】
デバイスチップ＃１のブロック番号３０は、並列書込み用の空きブロックとして利用されることとなる。また、デバイスチップ＃１のブロック番号２２は、空きブロック管理部６６においてブロック毎に割当てられる空きブロックとして利用されることとなる。
【０１１３】
したがって、本実施の形態では、同一バス上に接続された複数の記録媒体にデータを並列に書込む書込み機能部６３と、複数の記録媒体をそれぞれ分割した複数のブロックについてデータ書込み可能な空きブロックかどうかを空きブロック管理テーブルに登録する空きブロック管理部６６と、空きブロック管理部６６から通知された空きブロックについて並列書込み数分を１つの組として並列書込み用空きブロック管理テーブル１４１に登録し、書込み機能部６３からの要求に応じて並列書込み用空きブロック管理テーブル１４１から並列書込み数分の空きブロックを取得して、通知する並列書込み用空きブロック管理部６７と、を備え、並列書込み用空きブロック管理部６７は、記録媒体の識別子、ブロック番号、及び１つの組に割当てられた割当て済みブロック数に、さらに当該ブロックの消去回数と１つの組に割当てられたブロックの消去回数の平均値とを対応付け、並列書込み数分の異なる記録媒体の空きブロックを１つの組として並列書込み用空きブロック管理テーブル１４１に登録し、空きブロック管理部６６より空きブロックが通知されると、割当て済みブロック数が並列書込み数と等しい組に、消去回数の平均値が当該空きブロックの消去回数より小さく、当該空きブロックと同じ記録媒体のブロックが登録されており、その消去回数が当該空きブロックの消去回数より大きい場合、登録されているブロックを当該空きブロックと入れ替えるので、消去回数の少ないブロックが並列書込み用空きブロックとして使用されやすくなる。よって、各ブロックの消去回数を均等化することができる。
【符号の説明】
【０１１４】
１１  デバイスチップ
１２、４１  メモリバス
１３、６０  データ記録装置
１４、６９  メモリインタフェース部
１５  コマンド処理部
１６  ページバッファ
１７  ＮＡＮＤフラッシュメモリ
２１  ブロック
２２  ページ
３１  第１コマンド送信
３２  書込みデータ転送
３３  第２コマンド送信
３４  チップ内書込み処理
６２  コマンドインタフェース部
６３  書込み機能部
６４  消去機能部
６５  読出し機能部
６６  空きブロック管理部
６７  並列書込み用空きブロック管理部
６８  アドレス変換部
７１、１０１、１１１、１３１、１４１、１７１  並列書込み用空きブロック管理テーブル
７２、１１２、１４２  インデックス
７３、１４５  エントリ
７４  デバイスチップ番号
７５、１１４、１４６  ブロック番号
１１３、１４３  割当て済みブロック数
１４４  消去回数の平均値
１４７  消去回数
【図１】
2014134998.tif 000003
【図２】
2014134998.tif 000004
【図３】
2014134998.tif 000005
【図４】
2014134998.tif 000006
【図５】
2014134998.tif 000007
【図６】
2014134998.tif 000008
【図７】
2014134998.tif 000009
【図８】
2014134998.tif 000010
【図９】
2014134998.tif 000011
【図１０】
2014134998.tif 000012
【図１１】
2014134998.tif 000013
【図１２】
2014134998.tif 000014
【図１３】
2014134998.tif 000015
【図１４】
2014134998.tif 000016
【図１５】
2014134998.tif 000017
【図１６】
2014134998.tif 000018
【図１７】
2014134998.tif 000019