(57)【要約】  不揮発性メモリシステムはメモリカード(102)とホスト機器(101)とを備える。メモリカード(102)は、複数の物理ブロックを含む不揮発性メモリ(106)と、不揮発性メモリ(106)にデータを書き込むメモリコントローラ(105)とを有する。ホスト機器(101)は、メモリカード(102)に対して論理アドレスとチャネル番号とを指定したアクセス指示を行う。メモリコントローラ(105)は、前記論理アドレスを不揮発性メモリ(106)の物理アドレスに変換するアドレス変換機能と、前記チャネル番号に応じて不揮発性メモリ(106)における書き込み先の物理アドレスを決定する書き込み先決定機能と、物理ブロックよりも容量の小さなデータの書き込み状況をチャネル番号別に独立して管理するチャネル管理機能とを有する。
2009013877.tif 000002
【特許請求の範囲】
【請求項１】
論理アドレスとチャネル番号とを指定した外部からのアクセス指示に従って不揮発性メモリにデータを書き込むメモリコントローラであって、
前記論理アドレスを前記不揮発性メモリの物理アドレスに変換するアドレス変換機能と、
前記チャネル番号に応じて前記不揮発性メモリにおける書き込み先の物理アドレスを決定する書き込み先決定機能とを有する、
ことを特徴とするメモリコントローラ。
【請求項２】
請求項１において、
前記不揮発性メモリは、消去単位である物理ブロックを複数備えており、
前記アドレス変換機能は、前記物理ブロック単位で前記論理アドレスを前記物理アドレスに変換する、
ことを特徴とするメモリコントローラ。
【請求項３】
請求項２において、
前記物理ブロックよりも容量の小さなデータの書き込み状況を前記チャネル番号別に独立して管理するチャネル管理機能をさらに有する、
ことを特徴とするメモリコントローラ。
【請求項４】
複数の物理ブロックを有する不揮発性メモリと、
請求項１から３のいずれか１つに記載のメモリコントローラとを有する、
ことを特徴とするメモリカード。
【請求項５】
複数の物理ブロックを含む不揮発性メモリと前記不揮発性メモリにデータを書き込むメモリコントローラとを有するメモリカードと、
前記メモリカードに対して論理アドレスとチャネル番号とを指定したアクセス指示を行うホスト機器とを備える、
ことを特徴とする不揮発性メモリシステム。
【請求項６】
請求項５において、
前記メモリコントローラは、
前記論理アドレスを前記不揮発性メモリの物理アドレスに変換するアドレス変換機能と、
前記チャネル番号に応じて前記不揮発性メモリにおける書き込み先の物理アドレスを決定する書き込み先決定機能とを有する、
ことを特徴とする不揮発性メモリシステム。
【請求項７】
請求項６において、
前記メモリコントローラはさらに、
前記物理ブロックよりも容量の小さなデータの書き込み状況を前記チャネル番号別に独立して管理するチャネル管理機能を有する、
ことを特徴とする不揮発性メモリシステム。
【請求項８】
請求項５において、
前記ホスト機器は、
同一のファイルに属するデータの書き込みについては同一のチャネル番号を指定する、
ことを特徴とする不揮発性メモリシステム。
【請求項９】
請求項５において、
前記ホスト機器は、
ファイルの管理情報であるファイルシステム情報の書き込みについては固有のチャネル番号を指定する、
ことを特徴とする不揮発性メモリシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、不揮発性メモリへ性能を低下させることなくデータの書き込みを行う技術に関する。
【背景技術】
【０００２】
近年、不揮発性メモリを搭載したメモリカードはデジタルカメラや携帯電話の記憶媒体としてその市場を拡大している。そして、メモリカードに使用されている不揮発性メモリであるNANDタイプのフラッシュメモリは、半導体プロセスの微細化に伴い、その容量を増加させている。【０００３】
容量の増加に伴い、メモリカードに記録されるファイルもより大容量のものを記録可能になっている。そのため、従来は使用されていなかったデジタルムービーにも使用されて動画ファイルのような大きなファイルが記録されるようになっている。ムービーにおける動画ファイルの記録は、動画を撮影しつつメモリカードに記録を行う必要があるので、１つのファイルでありながら一定の時間間隔をおいて複数回の書き込みによって大きなサイズのファイルを書き込むという動作が行われる。【０００４】
また、不揮発性メモリの容量の増加に伴い、NANDタイプのフラッシュメモリでは、消去単位である物理ブロックの容量を増加させる大ブロック化が進んでいる。【０００５】
この書き込むファイルの大サイズ化とNANDフラッシュメモリの大ブロック化とは互いに独立な事象であるため、メモリカードに対する書き込み性能の低下を引き起こすことになる。この性能低下の要因と性能低下を回避する方法については特許文献１に開示されている。【０００６】
また、カードの大容量化によって今後は種々の情報を単一のメモリカードに格納することを可能にし、その結果、複数種類のファイルを並列して書き込むようなシステムへのメモリカードの使用を可能にしている。例えば、動画ファイルを記録しつつ、音声は別のファイルでさらに記録しつつ、ユーザの任意のタイミングで静止画を記録したりするシステムが考えられる。また、別のシステムでは、複数の監視カメラからの動画ファイルを並列して複数のファイルに書き込むシステムも考えられる。これらのシステムは、メモリカードにデータを書き込むホスト機器側としては論理的な意味(種別)があるデータを並行して書き込んでいるだけであるが、メモリカード側としては複数のファイルがバラバラに混在して書き込まれることになる。特許文献１で示されている解ではこういったシステムに対しては性能を維持することができない。
【特許文献１】特開2002-366423号公報
【特許文献２】特開平9-128155号公報
【特許文献３】特開2001-325128号公報
【特許文献４】特開2006-65505号公報
【特許文献５】国際公開第2005/106673号パンフレット
【発明の開示】
【発明が解決しようとする課題】
【０００７】
以上のように、従来のホストとメモリカード間ではあまり発生しなかった複数ファイルを並列に記録するといった書き込みは、メモリカードの書き込み性能を極端に低下させることになる。【０００８】
つまり、複数のファイルを並列して書き込むとフラグメンテーションを発生させるため、読み出し時の性能低下につながる。また、このファイルのフラグメンテーションに対応するためにホスト側でファイルの書き込みアドレスが連続するように操作して書き込む場合には、メモリカードに書き込みを行うアドレスが連続ではなくなり、やはり性能低下につながる。また、特許文献１においては、書き込みを高速化するための仕組みの中で「ブロック併合処理」が必要なため、結果として一時的に処理時間がかかってしまう。これは、書き込むデータの種別とは無関係にメモリカード内部で発生する処理であるため、ホスト側が予測できないタイミングでの書き込み性能低下という新たな課題にもつながっている。【０００９】
本発明の目的は、複数のファイルを並列に書き込みしても書き込み性能が低下しない不揮発性メモリシステム、不揮発性メモリ、メモリコントローラを提供することである。
【課題を解決するための手段】
【００１０】
本発明によるメモリコントローラは、論理アドレスとチャネル番号とを指定した外部からのアクセス指示に従って不揮発性メモリにデータを書き込むメモリコントローラであって、前記論理アドレスを前記不揮発性メモリの物理アドレスに変換するアドレス変換機能と、前記チャネル番号に応じて前記不揮発性メモリにおける書き込み先の物理アドレスを決定する書き込み先決定機能とを有する、ことを特徴とする。【００１１】
また、前記不揮発性メモリは、消去単位である物理ブロックを複数備えており、前記アドレス変換機能は、前記物理ブロック単位で前記論理アドレスを前記物理アドレスに変換する、ことを特徴とする。【００１２】
また、前記物理ブロックよりも容量の小さなデータの書き込み状況を前記チャネル番号別に独立して管理するチャネル管理機能をさらに有する、ことを特徴とする。【００１３】
本発明によるメモリカードは、複数の物理ブロックを有する不揮発性メモリと、上記のメモリコントローラとを有する、ことを特徴とする。【００１４】
本発明による不揮発性メモリシステムは、複数の物理ブロックを含む不揮発性メモリと前記不揮発性メモリにデータを書き込むメモリコントローラとを有するメモリカードと、前記メモリカードに対して論理アドレスとチャネル番号とを指定したアクセス指示を行うホスト機器とを備える、ことを特徴とする。【００１５】
また、前記メモリコントローラは、前記論理アドレスを前記不揮発性メモリの物理アドレスに変換するアドレス変換機能と、前記チャネル番号に応じて前記不揮発性メモリにおける書き込み先の物理アドレスを決定する書き込み先決定機能とを有する、ことを特徴とする。【００１６】
また、前記メモリコントローラはさらに、前記物理ブロックよりも容量の小さなデータの書き込み状況を前記チャネル番号別に独立して管理するチャネル管理機能を有する、ことを特徴とする。【００１７】
また、前記ホスト機器は、同一のファイルに属するデータの書き込みについては同一のチャネル番号を指定する、ことを特徴とする。【００１８】
また、前記ホスト機器は、ファイルの管理情報であるファイルシステム情報の書き込みについては固有のチャネル番号を指定する、ことを特徴とする。
【発明の効果】
【００１９】
本発明では、ホストは、論理アドレスに加えてチャネル番号を指定してメモリカードに書き込みを行う。このチャネル番号を指定した書き込みに対してメモリコントローラは、不揮発性メモリの物理ブロック以下のサイズの書き込みの状況をチャネル番号別に管理し、ホストからの書き込みに対して、対応するチャネル番号の書き込み状況から書き込み先となる物理ブロックを決定してデータを書き込む。【００２０】
したがって、あるチャネル番号に着目したときに、データの書き込みが複数回に分割されていても論理アドレスの順に行われるものであれば、一連の書き込みの間に他のチャネル番号に対する書き込みがどのように行われていようと、性能低下の要因である集約処理は発生しない。あるチャネル番号に対する書き込みが物理ブロックの途中までの状態であったとして、別のチャネル番号に対してどのような書き込みがどれだけ行われようと、その物理ブロックの途中の状態は維持されたままであり、集約処理が行われることはない。【００２１】
このように本発明によれば、別々のチャネル同士での集約処理等の無駄な集約処理が発生することがないため、複数のファイルを並列に書き込んでも性能は低下しない。
【図面の簡単な説明】
【００２２】
【図１】図１は、本発明の実施形態による不揮発性記憶システムの構成を示したブロック図である。
【図２】図２は、書き込みのホストとメモリカード間のシーケンス図である。
【図３】図３は、メモリカードのチャネル識別のフローチャートである。
【図４】図４は、チャネル管理テーブルの構成例である。
【図５】図５は、メモリカードの書き込みのフローチャートである。
【図６】図６は、ドライバのチャネル変換テーブルである。
【図７】図７は、ホストのストリーム指定の論理チャネル割り当てのシーケンス図である。
【図８】図８は、ホストのストリーム指定をしない論理チャネル割り当てのシーケンス図である。
【図９】図９は、ドライバの書き込みのフローチャートである。
【符号の説明】
【００２３】
１０１  ホスト
１０２  メモリカード
１０３  アプリケーションソフト
１０４  ドライバ
１０５  メモリコントローラ
１０６  不揮発性メモリ
１０７  制御部
１０８  ホストＩ／Ｆ
１０９  バッファ
１１０  メモリＩ／Ｆ
１１１  アドレス変換テーブル
１１２  チャネル管理テーブル
１１３  チャネル保持部
【発明を実施するための最良の形態】
【００２４】
本発明の実施形態による不揮発性記憶システムおよび不揮発性記憶装置について説明する。【００２５】
図１は、本発明の実施形態による不揮発性記憶システムの構成を示したブロック図である。この不揮発性記憶システムは、ホスト１０１と、メモリカード１０２とを備えている。ホスト１０１は、メモリカード１０２に対してアドレスを指定してデータの読み出し・書き込みを行う。メモリカード１０２は、ホスト１０１から書き込まれたデータを不揮発に記憶することができるので、電源が印加されない状態になっても書き込まれたデータを記憶しており、再度電源が印加された後にメモリカード１０２からデータを読み出すことができる。なお、メモリカード１０２はホスト１０１に対して着脱可能な構成となっており、ホスト１０１はメモリカード１０２に対して電源を印加している。【００２６】
図１には、ホスト１０１内部のソフトウェアの構成を示している。１０３はアプリケーションソフトであり、アプリＡ〜ｎまでの複数のアプリケーションソフトウェアがホスト１０１内部で動作している。１０４はメモリカード１０２に対するインターフェースを制御するドライバであり、アプリケーションソフト１０３はドライバ１０４を経由してメモリカード１０２に対してデータの読み出し・書き込みを行うことができる。【００２７】
メモリカード１０２は、メモリコントローラ１０５と、不揮発性メモリ１０６とを備えている。不揮発性メモリ１０６内部のメモリセルアレイは複数の物理ブロック(図示せず)からなる。物理ブロックはデータの消去単位であり、複数の物理ページ(図示せず)からなる。物理ページは、データを同時に書き込むことのできる書き込み単位である。メモリコントローラ１０５は、メモリカード１０２内部においてホスト１０１から書き込みされるデータを不揮発性メモリ１０６に書き込むとともに、ホスト１０１へ読み出すデータを不揮発性メモリ１０６から読み出す。【００２８】
メモリコントローラ１０５内部においてメモリコントローラ１０５全体の動作を制御するのが制御部１０７である。ホスト１０１と不揮発性メモリ１０６の間で読み出し・書き込みのために転送されるデータは、ホストＩ／Ｆ１０８とバッファ１０９とメモリＩ／Ｆ１１０を経由する。ホストＩ／Ｆ１０８は、ホスト１０１とのインターフェースの制御を行うとともに、ホスト１０１がデータを読み出すときにバッファ１０９のデータをホスト１０１に転送し、ホスト１０１からの書き込みデータをバッファ１０９に転送する。バッファ１０９は、ホストＩ／Ｆ１０８とメモリＩ／Ｆ１１０との間に設けられ、ホスト１０１が読み出し・書き込みするデータを一時保持しておくための揮発性メモリからなる。メモリＩ／Ｆ１１０は、不揮発性メモリ１０６とのインターフェースの制御を行うとともに、不揮発性メモリ１０６への書き込みデータをバッファ１０９から不揮発性メモリ１０６に転送したり、不揮発性メモリ１０６からの読み出しデータをバッファ１０９へ転送したりする。ホストＩ／Ｆ１０８とバッファ１０９とメモリＩ／Ｆ１１０はいずれも制御部１０７によって制御される。【００２９】
制御部１０７は、アドレス変換テーブル１１１とチャネル管理テーブル１１２とチャネル保持部１１３を使用することによって、ホスト１０１からの書き込みデータを不揮発性メモリ１０６のどのアドレス位置に書き込むかを決定する。アドレス変換テーブル１１１は、ホスト１０１の指定する論理ブロックのアドレスと不揮発性メモリ１０６の物理ブロックのアドレスとの対応関係を示すテーブルである。本実施形態では、アドレス変換テーブル１１１に登録されている物理ブロックに既に書き込み済みであるデータと同じ論理ブロックアドレスに対して上書きされたデータを、アドレス変換テーブル１１１に登録されている物理ブロックとは別の物理ブロックに書き込むことを許容する。この上書きされたデータが書き込まれた物理ブロックについてはチャネル管理テーブル１１２で管理する。チャネル管理テーブル１１２の構成については後で説明する。チャネル保持部１１３は、ホスト１０１から発行されるチャネル指定コマンドで指定されるチャネル番号を保持しておく。【００３０】
図２は、継続的な書き込みが必要な大サイズのファイル(たとえば動画ファイル等)をホスト１０１からメモリカード１０２にチャネル指定して書き込む時の、ホスト１０１とメモリカード１０２との間のシーケンス図である。以下、図２を参照しつつ説明する。【００３１】
最初にステップ２０１で、ホスト１０１はメモリカード１０２に対してチャネル指定コマンドを発行する。このチャネル指定コマンドの発行は、従来は行われていない。ホスト１０１がメモリカード１０２に対して書き込むデータ種別(後で説明するがホスト１０１のアプリケーションソフト１０３の種類と関連付けられる)の情報をチャネルという形で通知する、本実施形態の効果を得るために欠くことのできない必要なステップである。【００３２】
次にステップ２０２で、ホスト１０１はメモリカード１０２に対して書き込みコマンドを発行する。【００３３】
次にステップ２０３で、ホスト１０１はメモリカード１０２に対して書き込みデータの転送を開始する。以降、ホスト１０１は必要な容量のデータをメモリカード１０２に対して転送する。このデータの転送開始を受けてメモリカード１０２では書き込みの処理２０４を開始する。【００３４】
ホスト１０１は、メモリカード１０２への書き込みデータを転送し終えたら、ステップ２０５でメモリカード１０２に対して書き込み終了コマンドを発行する。【００３５】
メモリカード１０２は、ホスト１０１からの書き込みデータをメモリカード１０２内部の不揮発性メモリ１０６に書き込む処理を行っているが、ステップ２０５の書き込み終了コマンドを受けて、書き込みデータの転送が終了したことを認識して、既に転送済みのデータの書き込みが終了するまで書き込みの処理２０４を行う。この書き込みの処理２０４の期間中はメモリカード１０２はホスト１０１に対してビジー信号を出力することで、書き込みの処理２０４を実行中であることをホスト１０１に対して通知する。【００３６】
メモリカード１０２は、書き込みの処理２０４を終了したら、ホスト１０１に対して出力しているビジー信号を解除する。そうすることによりステップ２０６でホスト１０１は、メモリカード１０２への書き込みが終了したことを認識する。【００３７】
次に、図３〜５を参照してメモリカード１０２側の処理を、図６〜９を参照してホスト１０１側の処理を説明する。【００３８】
図３は、図２のステップ２０１のチャネル指定コマンド発行時の、メモリコントローラ１０５内部の制御部１０７の処理を示したフローチャートである。【００３９】
状態３０１では制御部１０７は、ホスト１０１からのコマンド発行を待つコマンド待ちのステートである。【００４０】
判定３０２では、ホスト１０１からのコマンド入力があったかどうかを判定しているが、ホスト１０１からのコマンドが入力されない間は、制御部１０７はコマンド待ちのステート３０１の状態を保ち続ける。【００４１】
ホスト１０１からメモリカード１０２に対してコマンドが発行されると、判定３０２でコマンド入力ありと判定し、判定３０３へと遷移する。判定３０３ではコマンドの内容を判定する。ここでは図２のステップ２０１でチャネル指定コマンドが発行されたときの処理を示しているので状態３０４へと遷移する。チャネル指定コマンド以外のコマンドが発行された場合については図３では省略している。【００４２】
状態３０４では制御部１０７は、チャネル指定コマンドで指定されたチャネル番号をチャネル保持部１１３に保持する。【００４３】
その後、状態３０１へと遷移して、制御部１０７はまたコマンド待ちの状態になる。つまりメモリコントローラ１０５は、ホスト１０１からチャネル指定コマンドで指定されたチャネル番号を保持する機能を有する。【００４４】
図４はチャネル管理テーブル１１２の構成の一例を示したものである。【００４５】
チャネル管理テーブル１１２は複数のレコードから構成される。図４のテーブルのひとつの行がひとつのレコードに対応している。それぞれのチャネルに対してひとつずつレコードがあり、各レコードはチャネル番号のフィールドを必ず持つ。つまり、チャネル番号が決定されると、チャネル管理テーブル１１２のなかの１つのレコードを決定することができる。各レコードは、論理ブロックアドレス(論理アドレスのうちアドレス変換テーブル１１１で管理されている部分)と、物理ブロックアドレス(物理アドレスのうちアドレス変換テーブル１１１で管理されている部分)と、先頭論理ページ(物理ブロックアドレスで示される物理ブロックの先頭のページに書き込まれたデータの論理ページアドレス)と、次書き込みページ(物理ブロックアドレスで示される物理ブロックの次に書き込みを行う物理ページ)とを有している。チャネル管理テーブル１１２は、アドレス変換テーブル１１１とは異なり、チャネル変換テーブル１１２の物理ブロックアドレスで示される物理ブロックには未書き込みの物理ページが含まれる。次書き込みページでどの物理ページまでが書込みされているかを管理している。未書き込みの物理ページを含む物理ブロックの管理という点では、特許文献１に示されるログポインタテーブルに近い役割を担う。ただし、チャネル管理テーブル１１２では、メモリーカード１０１外部から指示されるチャネル番号に対してひとつのレコードを持つことが特徴である。なお、先頭論理ページや次書き込みページの概念は特許文献５に記載されている。【００４６】
図５は、図２の書き込みの処理２０４の詳細を示したフローチャートである。【００４７】
状態５０１、判定５０２はそれぞれ図３の状態３０１、判定３０２と同じである。【００４８】
判定５０３では、図３の判定３０３と同じくコマンドの内容を判定するが、ここでは書き込みコマンドの時に状態５０４へと遷移する。書き込みコマンド以外のコマンドが発行された場合については図５では省略している。【００４９】
状態５０４では、制御部１０７は、チャネル保持部１１３に保持されたチャネル番号を基にしてチャネル管理テーブル１１２の対応するレコードを検索して、判定５０５へ遷移する。【００５０】
判定５０５では書き込み判定を行う。この処理は、特許文献１に記載の「ブロック併合処理」を行うかどうかの判定と同じであり、ここでは「集約」と表現する。集約が必要な場合には状態５０６へと遷移して集約処理を行った後に状態５０７へと遷移してデータの書き込み処理を行う。判定５０５で集約が不要でありデータ書き込みが可能と判定された場合には、そのまま状態５０７へと遷移してデータの書き込み処理を行う。【００５１】
状態５０７でデータの書き込みを行った後は、判定５０８で、書き込みを終了できるか、つまり、ホスト１０１からの書き込みデータをすべて書き終えたかどうかを判定する。そして未書き込みのデータがあれば判定５０５へと遷移して書き込みの処理を継続する。【００５２】
書き込み終了コマンド２０５が発行された後で、ホスト１０１からの書き込みデータをすべて不揮発性メモリ１０６に書き終えたら、判定５０８で書き込み終了と判定して状態５０１へと戻る。【００５３】
本実施形態においては、以上のような方法でホスト１０１からのデータの書き込みを行うが、メモリカード１０２内部において図５に示すような書き込み処理、即ちホスト１０１が指定したチャネルのチャネル管理テーブル１１２に基づいてデータを書き込むというルールによって、ホスト１０１が指定していないチャネルに対応する書き込み状態は保持し続けることができる。つまり、従来例では、本実施形態のチャネルに相当する概念を用いていないため、別々のチャネル同士での集約処理が行われる等の無駄な集約処理が発生する可能性があったが、本実施形態では、チャネルに対応する集約処理が行われるため、無断な集約が発生する可能性がなく一定の性能を保証できることになる。【００５４】
次にホスト１０１側の処理について説明する。【００５５】
図６は、ドライバ１０４がアプリケーションソフト１０３からの読み出し・書き込みのタスク発行を受けて処理を行う際に使用するチャネル変換テーブルである。ドライバ１０４は、アプリケーションソフト１０３に対して０から３１の論理チャネル番号(ホスト１０１とメモリカード１０２との間で使用されるチャネルとは別である)を準備している。ドライバ１０４は、アプリケーションソフト１０３からの論理チャネル番号の指定に従いデータの読み出し・書き込みを行うことで、アプリケーションソフト１０３内の複数のアプリＡ〜アプリｎからの読み出し・書き込みのタスクが発行されてもそれぞれ適切に対応したアプリのデータの読み出し・書き込みを行うことができる。【００５６】
図６のテーブルは複数のレコードから構成され、論理チャネル毎に１つのレコードを持つ。各レコードは、論理チャネル番号のフィールド６０１と、論理チャネルの使用状況を示すフィールド６０２と、メモリカード１０２へのチャネル指定を行うチャネル番号のフィールド６０３とを持つ。フィールド６０１には、アプリケーションソフト１０３から指定される論理チャネル番号が保持されている。フィールド６０２には、当該論理チャネル番号がオープンされていて“使用中”であるか、それとも未使用またはクローズされている“空き”であるかを示す情報が保持されている。フィールド６０３には、当該論理チャネル番号を指定したデータの書き込みをメモリカード１０２に対して行うときに指定するメモリカード１０２へのチャネル番号が保持されている。フィールド６０３には、チャネル０を除き同じチャネル番号が複数箇所に存在することはない。チャネル０だけは複数設定することが可能な特別なチャネル番号である。【００５７】
図７は、継続的な書き込みが必要な大サイズのファイル(たとえば動画ファイル等)の書き込みにおけるアプリケーションソフト１０３とドライバ１０４との間の論理チャネルの割り当てを示すシーケンス図である。【００５８】
最初にステップ７０１で、アプリケーションソフト１０３の中の１つのアプリがドライバ１０４に対してストリーム指定の入出力オープンを行う。【００５９】
それを受けて処理７０２でドライバ１０４は、図６のチャネル変換テーブルのフィールド６０２の論理チャネル使用状況が“空き”のレコードを検索する。【００６０】
次に処理７０３でドライバ１０４は、チャネル変換テーブルのフィールド６０３のメモリカード１０２へのチャネル番号のチャネル番号から使用されていないチャネル番号を検索する。【００６１】
ドライバ１０４は、処理７０２で検索したフィールド６０２が“空き”のレコードに対応する論理チャネル番号をステップ７０４でアプリに通知するとともに、同レコードのフィールド６０３に、処理７０３で検索した使用されていないメモリカード１０２へのチャネル番号を記録する。【００６２】
アプリはステップ７０５では、ステップ７０４で通知された論理チャネル番号を指定してデータの書き込みを行う。【００６３】
処理７０６ではドライバ１０４は、アプリからステップ７０５で指定された論理チャネルに対応するチャネル変換テーブルレコードのフィールド６０３のメモリカード１０２へのチャネル番号を使用してメモリカード１０２にデータを書き込む。このチャネル番号を指定した書き込みは図２のシーケンス図で説明したものに相当する。【００６４】
ステップ７０７でアプリは、ドライバ１０４が書き込み終了したことを認識する。アプリは必要に応じて同じ論理チャネルを使用して書き込み(ステップ７０５,処理７０６,ステップ７０７)を複数回行うことによって、動画ファイル等の書き込みを行う。【００６５】
アプリはファイルの書き込みを終了するとステップ７０８で論理チャネルを指定して入出力をクローズする。【００６６】
ドライバ１０４は入出力のクローズを受けて、チャネル変換テーブルのステップ７０８で指定された論理チャネルに対応するレコードのフィールド６０２を“空き”に、フィールド６０３を“チャネル指定無し”にする処理７０９を行う。【００６７】
図８は、図７の場合よりも相対的に小サイズのファイル書き込みにおけるアプリケーションソフト１０３とドライバ１０４との間の論理チャネルの割り当てを示すシーケンス図である。【００６８】
最初にステップ８０１でアプリケーションソフト１０３の中の１つのアプリがドライバ１０４に対してストリーム指定しない入出力オープンを行う。【００６９】
それを受けて処理８０２ではドライバ１０４は、図６のチャネル変換テーブルのフィールド６０２の論理チャネル使用状況が“空き”のレコードを検索する。【００７０】
ドライバ１０４は、処理８０２で検索したフィールド６０２が“空き”のレコードに対応する論理チャネル番号をステップ８０３でアプリに通知するとともに、同レコードのフィールド６０３には特別なチャネル番号である“チャネル０(指定無し)”を記録する。【００７１】
アプリはステップ８０４では、ステップ８０３で通知された論理チャネル番号を指定してデータの書き込みを行う。【００７２】
処理８０５ではドライバ１０４は、チャネル指定を行わずにメモリカード１０２にデータを書き込む。【００７３】
ステップ８０６でアプリは、ドライバ１０４が書き込み終了したことを認識する。アプリは必要に応じて同じ論理チャネルを使用して書き込み(ステップ８０４,処理８０５,ステップ８０６)を複数回行う。【００７４】
アプリはファイルの書き込みを終了するとステップ８０７で論理チャネルを指定して入出力をクローズする。【００７５】
ドライバ１０４は入出力のクローズを受けて、チャネル変換テーブルのステップ８０７で指定された論理チャネルに対応するレコードのフィールド６０２を“空き”に、フィールド６０３を“チャネル指定無し”にする処理８０８を行う。【００７６】
図９は、図７のシーケンス図での論理チャネルを指定した書き込み(ステップ７０５,処理７０６,ステップ７０７)に対応するドライバ１０４の処理のフローチャートである。【００７７】
状態９０１ではドライバ１０４は、アプリケーションソフト１０３からのタスクが発行されるのを待つタスク待ちのステートである。【００７８】
判定９０２ではアプリケーションソフト１０３からのタスクがあったかどうかを判定しているが、アプリケーションソフト１０３からのタスクが入力されない間は、ドライバ１０４はタスク待ちのステート９０１の状態を保ち続ける。【００７９】
アプリケーションソフト１０３からドライバ１０４に対してタスクが発行されると、判定９０２でタスクありと判定されて判定９０３へと遷移し、判定９０３でそのタスクが書き込みテスクであると判定されると判定９０４へ遷移する。判定９０４でその書き込みタスクがストリーム指定の論理チャネルへの書き込みかストリーム指定でない論理チャネルへの書き込みかを判定し、ストリーム指定の書き込みと判定すると判定９０５へと遷移する。【００８０】
判定９０５で、ＦＡＴ上に既に予約領域があり書き込み可能かどうかを判定する。ストリーム指定の最初の書き込みでは予約領域は存在しないので、この場合は予約領域なしと判定されて状態９０６へ遷移する。【００８１】
状態９０６では、これから書き込みのタスクがアプリケーションソフト１０３から連続して発行されることが予想されるので、あらかじめＦＡＴ上に書き込み用の予約領域を確保しておく。予約領域の確保とは、本来はＦＡＴ上の情報が未書き込みの領域に対してデータを書き込んだ後に、データを書き込んだ領域に対応するＦＡＴ上の情報を書き込み済みとするところを、ＦＡＴ上の情報が未書き込みの領域の複数を、“予約領域の確保”として予め書き込み済みとしておき、その後対応する複数の領域にデータを書き込むことで、ＦＡＴ上での連続した領域に対してデータを書き込むための処理である。そして状態９０７へと遷移する。【００８２】
一方、判定９０５で予約領域ありと判定された場合は状態９０７へ遷移する。【００８３】
状態９０７ではドライバ１０４は、メモリカード１０２に対してチャネル指定のデータ書き込みを行う。この書き込みは図２のシーケンス図で説明したものに相当する。【００８４】
次に判定９０８で書き込みが終了したかどうかを判定し、終了していないと判定すれば判定９０５へと遷移し、書き込みが終了したと判定すれば状態９０９へと遷移する。【００８５】
状態９０９ではドライバ１０４は、メモリカード１０２に対して特別なチャネルであるチャネル０を指定した書き込みで、既に状態９０７で書き込んだデータに対応した管理情報(ＦＡＴ、ディレクトリエントリなど)を書き込み、状態９０１へと遷移する。【００８６】
以上説明してきたように、本実施形態の不揮発性記憶システムでは、アプリ１０３が継続的な書き込みが行われる大ファイルの書き込みであるか、小サイズのファイル書き込みであるかを区別してドライバ１０４に対する入出力オープンを切り替える(大ファイルはストリーム指定、小ファイルをストリーム指定をしない)ことによって、ホスト１０１は従来の論理アドレスに加えてチャネル番号を指定してメモリカード１０２に対して書き込みを行う。【００８７】
そういうチャネル番号を指定した書き込みに対してメモリコントローラ１０５は、不揮発性メモリ１０６の物理ブロック以下のサイズの書き込みの状況をチャネル別に管理して、ホスト１０１からの書き込みに対して、対応するチャネルの書き込み状況から書き込み先となる物理ブロックを決定してデータを書き込む。ホスト１０１からのデータの書き込みに対して集約処理が行われて書き込み性能が落ちることはあるが、それはあくまでもホスト１０１からのこれまでの書き込みに起因することである。つまり、あるチャネルに着目したときにデータの書き込みが複数回に分割されていても論理アドレスの順に行われるものであれば、一連の書き込みの間に他のチャネルに対する書き込みがどのように行われていようと、性能低下の要因である集約処理は発生しない。別の見方をすれば、あるチャネルの書き込みが物理ブロックの途中までの状態であったとして、別のチャネルに対してどのような書き込みがどれだけ行われようと、その物理ブロックの途中の状態は維持されたまま集約処理が行われることはない。
【産業上の利用可能性】
【００８８】
本発明は、複数のファイルの書き込みを、個々のファイルの書き込み性能を低下させることなく、並列に不揮発性記憶装置へ書き込む不揮発性メモリシステムに有用である。
【図１】
2009013877.tif 000003
【図２】
2009013877.tif 000004
【図３】
2009013877.tif 000005
【図４】
2009013877.tif 000006
【図５】
2009013877.tif 000007
【図６】
2009013877.tif 000008
【図７】
2009013877.tif 000009
【図８】
2009013877.tif 000010
【図９】
2009013877.tif 000011
【手続補正書】
【提出日】平成21年1月7日(2009.1.7)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
論理アドレスとチャネル番号とを指定した外部からのアクセス指示に従って不揮発性メモリにデータを書き込むメモリコントローラであって、
前記論理アドレスを前記不揮発性メモリの物理アドレスに変換するアドレス変換機能と、
前記チャネル番号に応じて前記不揮発性メモリにおける書き込み先の物理アドレスを決定する書き込み先決定機能とを有する、
ことを特徴とするメモリコントローラ。
【請求項２】
請求項１において、
前記不揮発性メモリは、消去単位である物理ブロックを複数備えており、
前記アドレス変換機能は、前記物理ブロック単位で前記論理アドレスを前記物理アドレスに変換する、
ことを特徴とするメモリコントローラ。
【請求項３】
請求項２において、
前記物理ブロックよりも容量の小さなデータの書き込み状況を前記チャネル番号別に独立して管理するチャネル管理機能をさらに有する、
ことを特徴とするメモリコントローラ。
【請求項４】
複数の物理ブロックを有する不揮発性メモリと、
請求項１から３のいずれか１つに記載のメモリコントローラとを有する、
ことを特徴とするメモリカード。
【請求項５】
複数の物理ブロックを含む不揮発性メモリと前記不揮発性メモリにデータを書き込むメモリコントローラとを有するメモリカードと、
前記メモリカードに対して論理アドレスとチャネル番号とを指定したアクセス指示を行うホスト機器とを備える、
ことを特徴とする不揮発性メモリシステム。
【請求項６】
請求項５において、
前記メモリコントローラは、
前記論理アドレスを前記不揮発性メモリの物理アドレスに変換するアドレス変換機能と、
前記チャネル番号に応じて前記不揮発性メモリにおける書き込み先の物理アドレスを決定する書き込み先決定機能とを有する、
ことを特徴とする不揮発性メモリシステム。
【請求項７】
請求項６において、
前記メモリコントローラはさらに、
前記物理ブロックよりも容量の小さなデータの書き込み状況を前記チャネル番号別に独立して管理するチャネル管理機能を有する、
ことを特徴とする不揮発性メモリシステム。
【請求項８】
請求項５において、
前記ホスト機器は、
同一のファイルに属するデータの書き込みについては同一のチャネル番号を指定する、
ことを特徴とする不揮発性メモリシステム。
【請求項９】
請求項５において、
前記ホスト機器は、
ファイルの管理情報であるファイルシステム情報の書き込みについては固有のチャネル番号を指定する、
ことを特徴とする不揮発性メモリシステム。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、不揮発性メモリへ性能を低下させることなくデータの書き込みを行う技術に関する。
【背景技術】
【０００２】
近年、不揮発性メモリを搭載したメモリカードはデジタルカメラや携帯電話の記憶媒体としてその市場を拡大している。そして、メモリカードに使用されている不揮発性メモリであるNANDタイプのフラッシュメモリは、半導体プロセスの微細化に伴い、その容量を増加させている。
【０００３】
容量の増加に伴い、メモリカードに記録されるファイルもより大容量のものを記録可能になっている。そのため、従来は使用されていなかったデジタルムービーにも使用されて動画ファイルのような大きなファイルが記録されるようになっている。ムービーにおける動画ファイルの記録は、動画を撮影しつつメモリカードに記録を行う必要があるので、１つのファイルでありながら一定の時間間隔をおいて複数回の書き込みによって大きなサイズのファイルを書き込むという動作が行われる。
【０００４】
また、不揮発性メモリの容量の増加に伴い、NANDタイプのフラッシュメモリでは、消去単位である物理ブロックの容量を増加させる大ブロック化が進んでいる。
【０００５】
この書き込むファイルの大サイズ化とNANDフラッシュメモリの大ブロック化とは互いに独立な事象であるため、メモリカードに対する書き込み性能の低下を引き起こすことになる。この性能低下の要因と性能低下を回避する方法については特許文献１に開示されている。
【０００６】
また、カードの大容量化によって今後は種々の情報を単一のメモリカードに格納することを可能にし、その結果、複数種類のファイルを並列して書き込むようなシステムへのメモリカードの使用を可能にしている。例えば、動画ファイルを記録しつつ、音声は別のファイルでさらに記録しつつ、ユーザの任意のタイミングで静止画を記録したりするシステムが考えられる。また、別のシステムでは、複数の監視カメラからの動画ファイルを並列して複数のファイルに書き込むシステムも考えられる。これらのシステムは、メモリカードにデータを書き込むホスト機器側としては論理的な意味(種別)があるデータを並行して書き込んでいるだけであるが、メモリカード側としては複数のファイルがバラバラに混在して書き込まれることになる。特許文献１で示されている解ではこういったシステムに対しては性能を維持することができない。
【特許文献１】特開2002-366423号公報
【特許文献２】特開平9-128155号公報
【特許文献３】特開2001-325128号公報
【特許文献４】特開2006-65505号公報
【特許文献５】国際公開第2005/106673号パンフレット
【発明の開示】
【発明が解決しようとする課題】
【０００７】
以上のように、従来のホストとメモリカード間ではあまり発生しなかった複数ファイルを並列に記録するといった書き込みは、メモリカードの書き込み性能を極端に低下させることになる。
【０００８】
つまり、複数のファイルを並列して書き込むとフラグメンテーションを発生させるため、読み出し時の性能低下につながる。また、このファイルのフラグメンテーションに対応するためにホスト側でファイルの書き込みアドレスが連続するように操作して書き込む場合には、メモリカードに書き込みを行うアドレスが連続ではなくなり、やはり性能低下につながる。また、特許文献１においては、書き込みを高速化するための仕組みの中で「ブロック併合処理」が必要なため、結果として一時的に処理時間がかかってしまう。これは、書き込むデータの種別とは無関係にメモリカード内部で発生する処理であるため、ホスト側が予測できないタイミングでの書き込み性能低下という新たな課題にもつながっている。
【０００９】
本発明の目的は、複数のファイルを並列に書き込みしても書き込み性能が低下しない不揮発性メモリシステム、不揮発性メモリ、メモリコントローラを提供することである。
【課題を解決するための手段】
【００１０】
本発明によるメモリコントローラは、論理アドレスとチャネル番号とを指定した外部からのアクセス指示に従って不揮発性メモリにデータを書き込むメモリコントローラであって、前記論理アドレスを前記不揮発性メモリの物理アドレスに変換するアドレス変換機能と、前記チャネル番号に応じて前記不揮発性メモリにおける書き込み先の物理アドレスを決定する書き込み先決定機能とを有する、ことを特徴とする。
【００１１】
また、前記不揮発性メモリは、消去単位である物理ブロックを複数備えており、前記アドレス変換機能は、前記物理ブロック単位で前記論理アドレスを前記物理アドレスに変換する、ことを特徴とする。
【００１２】
また、前記物理ブロックよりも容量の小さなデータの書き込み状況を前記チャネル番号別に独立して管理するチャネル管理機能をさらに有する、ことを特徴とする。
【００１３】
本発明によるメモリカードは、複数の物理ブロックを有する不揮発性メモリと、上記のメモリコントローラとを有する、ことを特徴とする。
【００１４】
本発明による不揮発性メモリシステムは、複数の物理ブロックを含む不揮発性メモリと前記不揮発性メモリにデータを書き込むメモリコントローラとを有するメモリカードと、前記メモリカードに対して論理アドレスとチャネル番号とを指定したアクセス指示を行うホスト機器とを備える、ことを特徴とする。
【００１５】
また、前記メモリコントローラは、前記論理アドレスを前記不揮発性メモリの物理アドレスに変換するアドレス変換機能と、前記チャネル番号に応じて前記不揮発性メモリにおける書き込み先の物理アドレスを決定する書き込み先決定機能とを有する、ことを特徴とする。
【００１６】
また、前記メモリコントローラはさらに、前記物理ブロックよりも容量の小さなデータの書き込み状況を前記チャネル番号別に独立して管理するチャネル管理機能を有する、ことを特徴とする。
【００１７】
また、前記ホスト機器は、同一のファイルに属するデータの書き込みについては同一のチャネル番号を指定する、ことを特徴とする。
【００１８】
また、前記ホスト機器は、ファイルの管理情報であるファイルシステム情報の書き込みについては固有のチャネル番号を指定する、ことを特徴とする。
【発明の効果】
【００１９】
本発明では、ホストは、論理アドレスに加えてチャネル番号を指定してメモリカードに書き込みを行う。このチャネル番号を指定した書き込みに対してメモリコントローラは、不揮発性メモリの物理ブロック以下のサイズの書き込みの状況をチャネル番号別に管理し、ホストからの書き込みに対して、対応するチャネル番号の書き込み状況から書き込み先となる物理ブロックを決定してデータを書き込む。
【００２０】
したがって、あるチャネル番号に着目したときに、データの書き込みが複数回に分割されていても論理アドレスの順に行われるものであれば、一連の書き込みの間に他のチャネル番号に対する書き込みがどのように行われていようと、性能低下の要因である集約処理は発生しない。あるチャネル番号に対する書き込みが物理ブロックの途中までの状態であったとして、別のチャネル番号に対してどのような書き込みがどれだけ行われようと、その物理ブロックの途中の状態は維持されたままであり、集約処理が行われることはない。
【００２１】
このように本発明によれば、別々のチャネル同士での集約処理等の無駄な集約処理が発生することがないため、複数のファイルを並列に書き込んでも性能は低下しない。
【発明を実施するための最良の形態】
【００２２】
本発明の実施形態による不揮発性記憶システムおよび不揮発性記憶装置について説明する。
【００２３】
図１は、本発明の実施形態による不揮発性記憶システムの構成を示したブロック図である。この不揮発性記憶システムは、ホスト１０１と、メモリカード１０２とを備えている。ホスト１０１は、メモリカード１０２に対してアドレスを指定してデータの読み出し・書き込みを行う。メモリカード１０２は、ホスト１０１から書き込まれたデータを不揮発に記憶することができるので、電源が印加されない状態になっても書き込まれたデータを記憶しており、再度電源が印加された後にメモリカード１０２からデータを読み出すことができる。なお、メモリカード１０２はホスト１０１に対して着脱可能な構成となっており、ホスト１０１はメモリカード１０２に対して電源を印加している。
【００２４】
図１には、ホスト１０１内部のソフトウェアの構成を示している。１０３はアプリケーションソフトであり、アプリＡ〜ｎまでの複数のアプリケーションソフトウェアがホスト１０１内部で動作している。１０４はメモリカード１０２に対するインターフェースを制御するドライバであり、アプリケーションソフト１０３はドライバ１０４を経由してメモリカード１０２に対してデータの読み出し・書き込みを行うことができる。
【００２５】
メモリカード１０２は、メモリコントローラ１０５と、不揮発性メモリ１０６とを備えている。不揮発性メモリ１０６内部のメモリセルアレイは複数の物理ブロック(図示せず)からなる。物理ブロックはデータの消去単位であり、複数の物理ページ(図示せず)からなる。物理ページは、データを同時に書き込むことのできる書き込み単位である。メモリコントローラ１０５は、メモリカード１０２内部においてホスト１０１から書き込みされるデータを不揮発性メモリ１０６に書き込むとともに、ホスト１０１へ読み出すデータを不揮発性メモリ１０６から読み出す。
【００２６】
メモリコントローラ１０５内部においてメモリコントローラ１０５全体の動作を制御するのが制御部１０７である。ホスト１０１と不揮発性メモリ１０６の間で読み出し・書き込みのために転送されるデータは、ホストＩ／Ｆ１０８とバッファ１０９とメモリＩ／Ｆ１１０を経由する。ホストＩ／Ｆ１０８は、ホスト１０１とのインターフェースの制御を行うとともに、ホスト１０１がデータを読み出すときにバッファ１０９のデータをホスト１０１に転送し、ホスト１０１からの書き込みデータをバッファ１０９に転送する。バッファ１０９は、ホストＩ／Ｆ１０８とメモリＩ／Ｆ１１０との間に設けられ、ホスト１０１が読み出し・書き込みするデータを一時保持しておくための揮発性メモリからなる。メモリＩ／Ｆ１１０は、不揮発性メモリ１０６とのインターフェースの制御を行うとともに、不揮発性メモリ１０６への書き込みデータをバッファ１０９から不揮発性メモリ１０６に転送したり、不揮発性メモリ１０６からの読み出しデータをバッファ１０９へ転送したりする。ホストＩ／Ｆ１０８とバッファ１０９とメモリＩ／Ｆ１１０はいずれも制御部１０７によって制御される。
【００２７】
制御部１０７は、アドレス変換テーブル１１１とチャネル管理テーブル１１２とチャネル保持部１１３を使用することによって、ホスト１０１からの書き込みデータを不揮発性メモリ１０６のどのアドレス位置に書き込むかを決定する。アドレス変換テーブル１１１は、ホスト１０１の指定する論理ブロックのアドレスと不揮発性メモリ１０６の物理ブロックのアドレスとの対応関係を示すテーブルである。本実施形態では、アドレス変換テーブル１１１に登録されている物理ブロックに既に書き込み済みであるデータと同じ論理ブロックアドレスに対して上書きされたデータを、アドレス変換テーブル１１１に登録されている物理ブロックとは別の物理ブロックに書き込むことを許容する。この上書きされたデータが書き込まれた物理ブロックについてはチャネル管理テーブル１１２で管理する。チャネル管理テーブル１１２の構成については後で説明する。チャネル保持部１１３は、ホスト１０１から発行されるチャネル指定コマンドで指定されるチャネル番号を保持しておく。
【００２８】
図２は、継続的な書き込みが必要な大サイズのファイル(たとえば動画ファイル等)をホスト１０１からメモリカード１０２にチャネル指定して書き込む時の、ホスト１０１とメモリカード１０２との間のシーケンス図である。以下、図２を参照しつつ説明する。
【００２９】
最初にステップ２０１で、ホスト１０１はメモリカード１０２に対してチャネル指定コマンドを発行する。このチャネル指定コマンドの発行は、従来は行われていない。ホスト１０１がメモリカード１０２に対して書き込むデータ種別(後で説明するがホスト１０１のアプリケーションソフト１０３の種類と関連付けられる)の情報をチャネルという形で通知する、本実施形態の効果を得るために欠くことのできない必要なステップである。
【００３０】
次にステップ２０２で、ホスト１０１はメモリカード１０２に対して書き込みコマンドを発行する。
【００３１】
次にステップ２０３で、ホスト１０１はメモリカード１０２に対して書き込みデータの転送を開始する。以降、ホスト１０１は必要な容量のデータをメモリカード１０２に対して転送する。このデータの転送開始を受けてメモリカード１０２では書き込みの処理２０４を開始する。
【００３２】
ホスト１０１は、メモリカード１０２への書き込みデータを転送し終えたら、ステップ２０５でメモリカード１０２に対して書き込み終了コマンドを発行する。
【００３３】
メモリカード１０２は、ホスト１０１からの書き込みデータをメモリカード１０２内部の不揮発性メモリ１０６に書き込む処理を行っているが、ステップ２０５の書き込み終了コマンドを受けて、書き込みデータの転送が終了したことを認識して、既に転送済みのデータの書き込みが終了するまで書き込みの処理２０４を行う。この書き込みの処理２０４の期間中はメモリカード１０２はホスト１０１に対してビジー信号を出力することで、書き込みの処理２０４を実行中であることをホスト１０１に対して通知する。
【００３４】
メモリカード１０２は、書き込みの処理２０４を終了したら、ホスト１０１に対して出力しているビジー信号を解除する。そうすることによりステップ２０６でホスト１０１は、メモリカード１０２への書き込みが終了したことを認識する。
【００３５】
次に、図３〜５を参照してメモリカード１０２側の処理を、図６〜９を参照してホスト１０１側の処理を説明する。
【００３６】
図３は、図２のステップ２０１のチャネル指定コマンド発行時の、メモリコントローラ１０５内部の制御部１０７の処理を示したフローチャートである。
【００３７】
状態３０１では制御部１０７は、ホスト１０１からのコマンド発行を待つコマンド待ちのステートである。
【００３８】
判定３０２では、ホスト１０１からのコマンド入力があったかどうかを判定しているが、ホスト１０１からのコマンドが入力されない間は、制御部１０７はコマンド待ちのステート３０１の状態を保ち続ける。
【００３９】
ホスト１０１からメモリカード１０２に対してコマンドが発行されると、判定３０２でコマンド入力ありと判定し、判定３０３へと遷移する。判定３０３ではコマンドの内容を判定する。ここでは図２のステップ２０１でチャネル指定コマンドが発行されたときの処理を示しているので状態３０４へと遷移する。チャネル指定コマンド以外のコマンドが発行された場合については図３では省略している。
【００４０】
状態３０４では制御部１０７は、チャネル指定コマンドで指定されたチャネル番号をチャネル保持部１１３に保持する。
【００４１】
その後、状態３０１へと遷移して、制御部１０７はまたコマンド待ちの状態になる。つまりメモリコントローラ１０５は、ホスト１０１からチャネル指定コマンドで指定されたチャネル番号を保持する機能を有する。
【００４２】
図４はチャネル管理テーブル１１２の構成の一例を示したものである。
【００４３】
チャネル管理テーブル１１２は複数のレコードから構成される。図４のテーブルのひとつの行がひとつのレコードに対応している。それぞれのチャネルに対してひとつずつレコードがあり、各レコードはチャネル番号のフィールドを必ず持つ。つまり、チャネル番号が決定されると、チャネル管理テーブル１１２のなかの１つのレコードを決定することができる。各レコードは、論理ブロックアドレス(論理アドレスのうちアドレス変換テーブル１１１で管理されている部分)と、物理ブロックアドレス(物理アドレスのうちアドレス変換テーブル１１１で管理されている部分)と、先頭論理ページ(物理ブロックアドレスで示される物理ブロックの先頭のページに書き込まれたデータの論理ページアドレス)と、次書き込みページ(物理ブロックアドレスで示される物理ブロックの次に書き込みを行う物理ページ)とを有している。チャネル管理テーブル１１２は、アドレス変換テーブル１１１とは異なり、チャネル変換テーブル１１２の物理ブロックアドレスで示される物理ブロックには未書き込みの物理ページが含まれる。次書き込みページでどの物理ページまでが書込みされているかを管理している。未書き込みの物理ページを含む物理ブロックの管理という点では、特許文献１に示されるログポインタテーブルに近い役割を担う。ただし、チャネル管理テーブル１１２では、メモリーカード１０１外部から指示されるチャネル番号に対してひとつのレコードを持つことが特徴である。なお、先頭論理ページや次書き込みページの概念は特許文献５に記載されている。
【００４４】
図５は、図２の書き込みの処理２０４の詳細を示したフローチャートである。
【００４５】
状態５０１、判定５０２はそれぞれ図３の状態３０１、判定３０２と同じである。
【００４６】
判定５０３では、図３の判定３０３と同じくコマンドの内容を判定するが、ここでは書き込みコマンドの時に状態５０４へと遷移する。書き込みコマンド以外のコマンドが発行された場合については図５では省略している。
【００４７】
状態５０４では、制御部１０７は、チャネル保持部１１３に保持されたチャネル番号を基にしてチャネル管理テーブル１１２の対応するレコードを検索して、判定５０５へ遷移する。
【００４８】
判定５０５では書き込み判定を行う。この処理は、特許文献１に記載の「ブロック併合処理」を行うかどうかの判定と同じであり、ここでは「集約」と表現する。集約が必要な場合には状態５０６へと遷移して集約処理を行った後に状態５０７へと遷移してデータの書き込み処理を行う。判定５０５で集約が不要でありデータ書き込みが可能と判定された場合には、そのまま状態５０７へと遷移してデータの書き込み処理を行う。
【００４９】
状態５０７でデータの書き込みを行った後は、判定５０８で、書き込みを終了できるか、つまり、ホスト１０１からの書き込みデータをすべて書き終えたかどうかを判定する。そして未書き込みのデータがあれば判定５０５へと遷移して書き込みの処理を継続する。
【００５０】
書き込み終了コマンド２０５が発行された後で、ホスト１０１からの書き込みデータをすべて不揮発性メモリ１０６に書き終えたら、判定５０８で書き込み終了と判定して状態５０１へと戻る。
【００５１】
本実施形態においては、以上のような方法でホスト１０１からのデータの書き込みを行うが、メモリカード１０２内部において図５に示すような書き込み処理、即ちホスト１０１が指定したチャネルのチャネル管理テーブル１１２に基づいてデータを書き込むというルールによって、ホスト１０１が指定していないチャネルに対応する書き込み状態は保持し続けることができる。つまり、従来例では、本実施形態のチャネルに相当する概念を用いていないため、別々のチャネル同士での集約処理が行われる等の無駄な集約処理が発生する可能性があったが、本実施形態では、チャネルに対応する集約処理が行われるため、無断な集約が発生する可能性がなく一定の性能を保証できることになる。
【００５２】
次にホスト１０１側の処理について説明する。
【００５３】
図６は、ドライバ１０４がアプリケーションソフト１０３からの読み出し・書き込みのタスク発行を受けて処理を行う際に使用するチャネル変換テーブルである。ドライバ１０４は、アプリケーションソフト１０３に対して０から３１の論理チャネル番号(ホスト１０１とメモリカード１０２との間で使用されるチャネルとは別である)を準備している。ドライバ１０４は、アプリケーションソフト１０３からの論理チャネル番号の指定に従いデータの読み出し・書き込みを行うことで、アプリケーションソフト１０３内の複数のアプリＡ〜アプリｎからの読み出し・書き込みのタスクが発行されてもそれぞれ適切に対応したアプリのデータの読み出し・書き込みを行うことができる。
【００５４】
図６のテーブルは複数のレコードから構成され、論理チャネル毎に１つのレコードを持つ。各レコードは、論理チャネル番号のフィールド６０１と、論理チャネルの使用状況を示すフィールド６０２と、メモリカード１０２へのチャネル指定を行うチャネル番号のフィールド６０３とを持つ。フィールド６０１には、アプリケーションソフト１０３から指定される論理チャネル番号が保持されている。フィールド６０２には、当該論理チャネル番号がオープンされていて“使用中”であるか、それとも未使用またはクローズされている“空き”であるかを示す情報が保持されている。フィールド６０３には、当該論理チャネル番号を指定したデータの書き込みをメモリカード１０２に対して行うときに指定するメモリカード１０２へのチャネル番号が保持されている。フィールド６０３には、チャネル０を除き同じチャネル番号が複数箇所に存在することはない。チャネル０だけは複数設定することが可能な特別なチャネル番号である。
【００５５】
図７は、継続的な書き込みが必要な大サイズのファイル(たとえば動画ファイル等)の書き込みにおけるアプリケーションソフト１０３とドライバ１０４との間の論理チャネルの割り当てを示すシーケンス図である。
【００５６】
最初にステップ７０１で、アプリケーションソフト１０３の中の１つのアプリがドライバ１０４に対してストリーム指定の入出力オープンを行う。
【００５７】
それを受けて処理７０２でドライバ１０４は、図６のチャネル変換テーブルのフィールド６０２の論理チャネル使用状況が“空き”のレコードを検索する。
【００５８】
次に処理７０３でドライバ１０４は、チャネル変換テーブルのフィールド６０３のメモリカード１０２へのチャネル番号のチャネル番号から使用されていないチャネル番号を検索する。
【００５９】
ドライバ１０４は、処理７０２で検索したフィールド６０２が“空き”のレコードに対応する論理チャネル番号をステップ７０４でアプリに通知するとともに、同レコードのフィールド６０３に、処理７０３で検索した使用されていないメモリカード１０２へのチャネル番号を記録する。
【００６０】
アプリはステップ７０５では、ステップ７０４で通知された論理チャネル番号を指定してデータの書き込みを行う。
【００６１】
処理７０６ではドライバ１０４は、アプリからステップ７０５で指定された論理チャネルに対応するチャネル変換テーブルレコードのフィールド６０３のメモリカード１０２へのチャネル番号を使用してメモリカード１０２にデータを書き込む。このチャネル番号を指定した書き込みは図２のシーケンス図で説明したものに相当する。
【００６２】
ステップ７０７でアプリは、ドライバ１０４が書き込み終了したことを認識する。アプリは必要に応じて同じ論理チャネルを使用して書き込み(ステップ７０５,処理７０６,ステップ７０７)を複数回行うことによって、動画ファイル等の書き込みを行う。
【００６３】
アプリはファイルの書き込みを終了するとステップ７０８で論理チャネルを指定して入出力をクローズする。
【００６４】
ドライバ１０４は入出力のクローズを受けて、チャネル変換テーブルのステップ７０８で指定された論理チャネルに対応するレコードのフィールド６０２を“空き”に、フィールド６０３を“チャネル指定無し”にする処理７０９を行う。
【００６５】
図８は、図７の場合よりも相対的に小サイズのファイル書き込みにおけるアプリケーションソフト１０３とドライバ１０４との間の論理チャネルの割り当てを示すシーケンス図である。
【００６６】
最初にステップ８０１でアプリケーションソフト１０３の中の１つのアプリがドライバ１０４に対してストリーム指定しない入出力オープンを行う。
【００６７】
それを受けて処理８０２ではドライバ１０４は、図６のチャネル変換テーブルのフィールド６０２の論理チャネル使用状況が“空き”のレコードを検索する。
【００６８】
ドライバ１０４は、処理８０２で検索したフィールド６０２が“空き”のレコードに対応する論理チャネル番号をステップ８０３でアプリに通知するとともに、同レコードのフィールド６０３には特別なチャネル番号である“チャネル０(指定無し)”を記録する。
【００６９】
アプリはステップ８０４では、ステップ８０３で通知された論理チャネル番号を指定してデータの書き込みを行う。
【００７０】
処理８０５ではドライバ１０４は、チャネル指定を行わずにメモリカード１０２にデータを書き込む。
【００７１】
ステップ８０６でアプリは、ドライバ１０４が書き込み終了したことを認識する。アプリは必要に応じて同じ論理チャネルを使用して書き込み(ステップ８０４,処理８０５,ステップ８０６)を複数回行う。
【００７２】
アプリはファイルの書き込みを終了するとステップ８０７で論理チャネルを指定して入出力をクローズする。
【００７３】
ドライバ１０４は入出力のクローズを受けて、チャネル変換テーブルのステップ８０７で指定された論理チャネルに対応するレコードのフィールド６０２を“空き”に、フィールド６０３を“チャネル指定無し”にする処理８０８を行う。
【００７４】
図９は、図７のシーケンス図での論理チャネルを指定した書き込み(ステップ７０５,処理７０６,ステップ７０７)に対応するドライバ１０４の処理のフローチャートである。
【００７５】
状態９０１ではドライバ１０４は、アプリケーションソフト１０３からのタスクが発行されるのを待つタスク待ちのステートである。
【００７６】
判定９０２ではアプリケーションソフト１０３からのタスクがあったかどうかを判定しているが、アプリケーションソフト１０３からのタスクが入力されない間は、ドライバ１０４はタスク待ちのステート９０１の状態を保ち続ける。
【００７７】
アプリケーションソフト１０３からドライバ１０４に対してタスクが発行されると、判定９０２でタスクありと判定されて判定９０３へと遷移し、判定９０３でそのタスクが書き込みテスクであると判定されると判定９０４へ遷移する。判定９０４でその書き込みタスクがストリーム指定の論理チャネルへの書き込みかストリーム指定でない論理チャネルへの書き込みかを判定し、ストリーム指定の書き込みと判定すると判定９０５へと遷移する。
【００７８】
判定９０５で、ＦＡＴ上に既に予約領域があり書き込み可能かどうかを判定する。ストリーム指定の最初の書き込みでは予約領域は存在しないので、この場合は予約領域なしと判定されて状態９０６へ遷移する。
【００７９】
状態９０６では、これから書き込みのタスクがアプリケーションソフト１０３から連続して発行されることが予想されるので、あらかじめＦＡＴ上に書き込み用の予約領域を確保しておく。予約領域の確保とは、本来はＦＡＴ上の情報が未書き込みの領域に対してデータを書き込んだ後に、データを書き込んだ領域に対応するＦＡＴ上の情報を書き込み済みとするところを、ＦＡＴ上の情報が未書き込みの領域の複数を、“予約領域の確保”として予め書き込み済みとしておき、その後対応する複数の領域にデータを書き込むことで、ＦＡＴ上での連続した領域に対してデータを書き込むための処理である。そして状態９０７へと遷移する。
【００８０】
一方、判定９０５で予約領域ありと判定された場合は状態９０７へ遷移する。
【００８１】
状態９０７ではドライバ１０４は、メモリカード１０２に対してチャネル指定のデータ書き込みを行う。この書き込みは図２のシーケンス図で説明したものに相当する。
【００８２】
次に判定９０８で書き込みが終了したかどうかを判定し、終了していないと判定すれば判定９０５へと遷移し、書き込みが終了したと判定すれば状態９０９へと遷移する。
【００８３】
状態９０９ではドライバ１０４は、メモリカード１０２に対して特別なチャネルであるチャネル０を指定した書き込みで、既に状態９０７で書き込んだデータに対応した管理情報(ＦＡＴ、ディレクトリエントリなど)を書き込み、状態９０１へと遷移する。
【００８４】
以上説明してきたように、本実施形態の不揮発性記憶システムでは、アプリ１０３が継続的な書き込みが行われる大ファイルの書き込みであるか、小サイズのファイル書き込みであるかを区別してドライバ１０４に対する入出力オープンを切り替える(大ファイルはストリーム指定、小ファイルをストリーム指定をしない)ことによって、ホスト１０１は従来の論理アドレスに加えてチャネル番号を指定してメモリカード１０２に対して書き込みを行う。
【００８５】
そういうチャネル番号を指定した書き込みに対してメモリコントローラ１０５は、不揮発性メモリ１０６の物理ブロック以下のサイズの書き込みの状況をチャネル別に管理して、ホスト１０１からの書き込みに対して、対応するチャネルの書き込み状況から書き込み先となる物理ブロックを決定してデータを書き込む。ホスト１０１からのデータの書き込みに対して集約処理が行われて書き込み性能が落ちることはあるが、それはあくまでもホスト１０１からのこれまでの書き込みに起因することである。つまり、あるチャネルに着目したときにデータの書き込みが複数回に分割されていても論理アドレスの順に行われるものであれば、一連の書き込みの間に他のチャネルに対する書き込みがどのように行われていようと、性能低下の要因である集約処理は発生しない。別の見方をすれば、あるチャネルの書き込みが物理ブロックの途中までの状態であったとして、別のチャネルに対してどのような書き込みがどれだけ行われようと、その物理ブロックの途中の状態は維持されたまま集約処理が行われることはない。
【産業上の利用可能性】
【００８６】
本発明は、複数のファイルの書き込みを、個々のファイルの書き込み性能を低下させることなく、並列に不揮発性記憶装置へ書き込む不揮発性メモリシステムに有用である。
【図面の簡単な説明】
【００８７】
【図１】図１は、本発明の実施形態による不揮発性記憶システムの構成を示したブロック図である。
【図２】図２は、書き込みのホストとメモリカード間のシーケンス図である。
【図３】図３は、メモリカードのチャネル識別のフローチャートである。
【図４】図４は、チャネル管理テーブルの構成例である。
【図５】図５は、メモリカードの書き込みのフローチャートである。
【図６】図６は、ドライバのチャネル変換テーブルである。
【図７】図７は、ホストのストリーム指定の論理チャネル割り当てのシーケンス図である。
【図８】図８は、ホストのストリーム指定をしない論理チャネル割り当てのシーケンス図である。
【図９】図９は、ドライバの書き込みのフローチャートである。
【符号の説明】
【００８８】
１０１  ホスト
１０２  メモリカード
１０３  アプリケーションソフト
１０４  ドライバ
１０５  メモリコントローラ
１０６  不揮発性メモリ
１０７  制御部
１０８  ホストＩ／Ｆ
１０９  バッファ
１１０  メモリＩ／Ｆ
１１１  アドレス変換テーブル
１１２  チャネル管理テーブル
１１３  チャネル保持部
【手続補正３】
【補正対象書類名】図面
【補正対象項目名】全図
【補正方法】変更
【補正の内容】
【図１】
2009013877.tif 000012
【図２】
2009013877.tif 000013
【図３】
2009013877.tif 000014
【図５】
2009013877.tif 000015
【図６】
2009013877.tif 000016
【図７】
2009013877.tif 000017
【図８】
2009013877.tif 000018
【図９】
2009013877.tif 000019
【図４】
2009013877.tif 000020
【国際調査報告】
2009013877.tif 000021
2009013877.tif 000022
2009013877.tif 000023
2009013877.tif 000024