(57)【要約】アクセス装置がブロックの全データをブロックよりもサイズの小さい単位で書き込む場合に、ブロックへの書き込み途中で書き込み速度が一時的に著しく低下することを回避する。不揮発性記憶装置（１００）のメモリコントローラ（１１０）において、インターフェース部（１０１）は、データを書き込むための第１の書き込み範囲を識別する第１のコマンドと、第１の書き込み範囲の一部である第２の書き込み範囲を識別し第２の書き込み範囲へのデータの書き込みを指示する第２のコマンドと、を受信する。アドレス管理部（１０６）は、不揮発性メモリへのデータの書き込み前に、第１のコマンドに基づいて、第１の書き込み範囲に対してデータを書き込むための新たなブロックを選定する。読み書き制御部（１０３）は、第２のコマンドに応じて、新たなブロックにデータを記録する。
2010146767.tif 000002
【特許請求の範囲】
【請求項１】
不揮発性メモリと、
前記不揮発性メモリへのデータの書き込み及び読み出しを制御するメモリコントローラと、
を備える、不揮発性記憶装置であって、
前記メモリコントローラは、
データを書き込むための第１の書き込み範囲を識別する第１のコマンドと、前記第１の書き込み範囲の一部である第２の書き込み範囲を識別し前記第２の書き込み範囲へのデータの書き込みを指示する第２のコマンドと、を受信するインターフェース部と、
前記不揮発性メモリへのデータの書き込み前に、前記第１のコマンドに基づいて、前記第１の書き込み範囲に対してデータを書き込むための新たなブロックを選定するアドレス管理部と、
前記第２のコマンドに応じて、前記新たなブロックにデータを記録する読み書き制御部と、
有する、
不揮発性記憶装置。
【請求項２】
不揮発性メモリと、
前記不揮発性メモリへのデータの書き込み及び読み出しを制御するメモリコントローラと、
を備える、不揮発性記憶装置であって、
前記メモリコントローラは、
データの書き込みを通知する第１のコマンドと、前記データの書き込みを指示する第２のコマンドと、を受信するインターフェース部と、
前記不揮発性メモリへの前記データの書き込み前に、前記インターフェース部により第１のコマンドの次に受信される第２のコマンドに基づいて、前記データを書き込むための新たなブロックを選定するアドレス管理部と、
前記インターフェース部により受信される第２のコマンドに応じて、前記新たなブロックに前記データを記録する読み書き制御部と、
有し、
前記インターフェース部により第１のコマンドの次に受信される前記第２のコマンドは、前記データを書き込むための第１の書き込み範囲を識別する情報と、前記第１の書き込み範囲の一部である第２の書き込み範囲を識別する情報とを含み、前記第２の書き込み範囲へのデータの書き込みを指示する、
不揮発性記憶装置。
【請求項３】
前記アドレス管理部は、前記新たなブロックを選定する前に、
前記第１の書き込み範囲に対し選定されている一以上のブロックがあるかどうかを判断し、
前記一以上のブロックがあると判断した場合は、前記一以上のブロックを破棄する、
請求項１又は２に記載の不揮発性記憶装置。
【請求項４】
前記アドレス管理部は、前記新たなブロックを選定する前に、
前記第１の書き込み範囲に対し選定されている一以上のブロックがあるかどうかを判断し、
前記一以上のブロックがあると判断した場合は、前記一以上のブロックを消去する、
請求項１又は２に記載の不揮発性記憶装置。
【請求項５】
前記第１の書き込み範囲は、前記第２の書き込み範囲の整数倍である、
請求項１又は２に記載の不揮発性記憶装置。
【請求項６】
前記第１のコマンドは、前記第１の書き込み範囲を識別する第１の識別情報を含む、
請求項１に記載の不揮発性記憶装置。
【請求項７】
前記第１のコマンドは、ストリームデータを識別する第２の識別情報を含む、
請求項１又は２に記載の不揮発性記憶装置。
【請求項８】
前記アドレス管理部は、前記第２の識別情報毎に、前記新たなブロックを選定する、
請求項７に記載の不揮発性記憶装置。
【請求項９】
前記アドレス管理部は、複数の前記第２の識別情報を保持し、
前記読み書き制御部は、前記複数の第２の識別情報に対応する複数の前記新たなブロックに、並行してデータを記録する、
請求項８に記載の不揮発性記憶装置。
【請求項１０】
不揮発性記憶装置へのデータの書き込み及び読み出しを制御するアクセス装置あって、
データを書き込むための第１の書き込み範囲を識別する情報を含む第１のコマンドを前記不揮発性記憶装置に送信し、
前記第１のコマンドの送信後、前記第１の書き込み範囲の一部である第２の書き込み範囲を識別する情報を含み前記第２の書き込み範囲へのデータの書き込みを指示する第２のコマンドを、複数回、前記不揮発性記憶装置に送信する、
アクセス装置。
【請求項１１】
不揮発性記憶装置へのデータの書き込み及び読み出しを制御するアクセス装置あって、
データの書き込みを通知する第１のコマンドを前記不揮発性記憶装置に送信し、
前記第１のコマンドの送信後、それぞれが前記データの書き込みを指示する第２のコマンドを、複数回、前記不揮発性記憶装置に送信し、
前記第１のコマンドの次に送信される第２のコマンドは、前記データを書き込むための第１の書き込み範囲を識別する情報と、前記第１の書き込み範囲の一部である第２の書き込み範囲を識別する情報とを含み、前記第２の書き込み範囲へのデータの書き込みを指示する、
アクセス装置。
【請求項１２】
請求項１〜９のいずれか１項に記載の不揮発性記憶装置と、
請求項１０又は１１に記載のアクセス装置と、
を備える、
不揮発性記憶システム。
【請求項１３】
不揮発性メモリへのデータの書き込み及び読み出しを制御するメモリコントローラであって、
データを書き込むための第１の書き込み範囲を識別する第１のコマンドと、前記第１の書き込み範囲の一部である第２の書き込み範囲を識別し前記第２の書き込み範囲へのデータの書き込みを指示する第２のコマンドと、を受信するインターフェース部と、
前記不揮発性メモリへのデータの書き込み前に、前記第１のコマンドに基づいて、前記第１の書き込み範囲に対してデータを書き込むための新たなブロックを選定するアドレス管理部と、
前記第２のコマンドに応じて、前記新たなブロックにデータを記録する読み書き制御部と、
備える、
メモリコントローラ。
【請求項１４】
不揮発性メモリへのデータの書き込み及び読み出しを制御するメモリコントローラであって、
データの書き込みを通知する第１のコマンドと、前記データの書き込みを指示する第２のコマンドと、を受信するインターフェース部と、
前記不揮発性メモリへのデータの書き込み前に、前記インターフェース部により第１のコマンドの次に受信される第２のコマンドに基づいて、前記データを書き込むための新たなブロックを選定するアドレス管理部と、
前記インターフェース部により受信される第２のコマンドに応じて、前記新たなブロックにデータを記録する読み書き制御部と、
有し、
前記インターフェース部により第１のコマンドの次に受信される前記第２のコマンドは、前記データを書き込むための第１の書き込み範囲を識別する情報と、前記第１の書き込み範囲の一部である第２の書き込み範囲を識別する情報とを含み、第２の書き込み範囲へのデータの書き込みを指示する、
メモリコントローラ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、不揮発性メモリと不揮発性メモリを制御するメモリコントローラとを備えた半導体メモリカード等の不揮発性記憶装置、不揮発性記憶装置にアクセスするアクセス装置、不揮発性記憶装置とアクセス装置とを含む不揮発性記憶システム、及びメモリコントローラに関する。
【背景技術】
【０００２】
書き換え可能な不揮発性メモリを備える不揮発性記憶装置は、半導体メモリカードを中心にその需要が広まっている。半導体メモリカードは、光ディスクやテープメディア等と比較して高価格なものではある。しかし半導体メモリカードは、小型・軽量・耐震性・取り扱いの簡便さ等のメリットが大きいので、デジタルスチルカメラや携帯電話等、ポータブル機器の記録媒体としてその需要が広まっており、最近では民生用動画記録機器や放送局向けのプロ用動画記録機器の記録媒体としても利用されるようになってきた。加えて、ポータブル機器だけではなくデジタルテレビやＤＶＤレコーダ等の据え置き機器にも半導体メモリカード用のスロットが標準搭載されている。
この半導体メモリカードは、不揮発性の主記憶メモリとしてフラッシュメモリを備え、それを制御するメモリコントローラを有している。メモリコントローラは、デジタルスチルカメラ本体等、アクセス装置からのデータの読み書き指示に応じて、フラッシュメモリに対するデータの読み書き制御を行うものである。【０００３】
近年、半導体メモリカードに格納する静止画や動画等のＡＶコンテンツの高品質化、すなわち１コンテンツあたりのデータサイズの大容量化に対応するために、半導体メモリカードに使用するフラッシュメモリの大容量化のニーズが高まっている。それに伴い、フラッシュメモリを構成するブロック（データ消去単位）のサイズが増大している。
一方、アクセス装置は半導体メモリカードの記憶領域の管理をファイルシステムによって行うが、記録領域をできるだけ無駄なく使用するためにファイルシステムによる管理単位（クラスタ）は前記ブロックのサイズよりも小さいのが一般的である。そのため、１つのクラスタの書き換えで１つのブロック全体の書き換えを行うとデータ書き込み速度が著しく悪化する。そこで、メモリコントローラで、ブロック全体の書き換えが頻繁に発生するのを防ぎ、データ書き込み速度の低下を防止するものが知られている（例えば、特許文献１参照）。【０００４】
この従来技術では、データ消去単位である複数のブロックを１次ブロック群と２次ブロック群と予備ブロック群とに分け、前記１次ブロック群に属する１次ブロックへのデータ書き込み要求に対して、１次ブロックが完全に書き込み済みで追記できない場合に、前記２次ブロック群に属する２次ブロックを前記１次ブロックの拡張ブロックとして使用する。すなわち、前記２次ブロックに１次ブロックのデータの更新部分のデータのみを追記していく。そして、２次ブロックが完全に書き込み済みで追記できなくなった時点で、前記予備ブロック群に属する予備ブロックに１次ブロックと２次ブロックの有効データのみを整理して書き込み、コピー元である前記１次ブロックと前記２次ブロックの内容を消去して、それぞれ予備ブロック群及び２次ブロック群のブロックとする。これにより、ブロック全体の書き換え頻度を低減し、データ書き込み速度の低下を防止する。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００１−１５４９０９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、前記１次ブロックと前記２次ブロックの有効データを整理して予備ブロックに書き込む時点ではデータ書き込み速度が一時的に著しく低下することを避けられない。更に、このデータ書き込み速度が一時的に著しく低下するタイミングは、フラッシュメモリを制御するメモリコントローラは把握することができるが、半導体メモリカードのアクセス装置では把握できない。このことは、ある一定の書き込み速度が継続的に必要である動画記録装置等のアクセス装置にとって、設計が困難となるという点で課題である。
また、アクセス装置が動画等の大容量のコンテンツデータ（以降、ストリームデータと呼ぶ）の書き込みを行う場合、ブロックのサイズを超えるデータ更新が発生する。ブロックの全てのデータを更新する場合であっても、アクセス装置からのデータ書き込みはクラスタ単位で行われるため、メモリコントローラはブロックの全データが更新される予定であることを事前に知ることができない。よって、上記従来のメモリコントローラでは、２次ブロックの途中までデータが書き込まれた状態から、該ブロックの全データを更新するような書き込みが発生すると、メモリコントローラは１次ブロック及び２次ブロックに書き込み済みのデータを（最終的には全てが書き換えられるとは知らずに）保持したまま、２次ブロックの途中から追記を行う。その結果、１ブロック分のデータ書き込みの途中で前記整理の処理が発生し、書き込み速度が一時的に著しく低下することになる。【０００７】
本発明は、上記課題を解決すべくなされたものであり、その目的は、アクセス装置がブロックの全データをブロックよりもサイズの小さい単位で書き込む場合に、書き込み速度が一時的に著しく低下することのない、不揮発性記憶装置、アクセス装置、不揮発性記憶システム及びメモリコントローラを提供することにある。
【課題を解決するための手段】
【０００８】
第１の発明は、不揮発性メモリと、不揮発性メモリへのデータの書き込み及び読み出しを制御するメモリコントローラと、を備える不揮発性記憶装置であって、メモリコントローラは、インターフェース部と、アドレス管理部と、読み書き制御部と、を有する。
インターフェース部は、データを書き込むための第１の書き込み範囲を識別する第１のコマンドと、第１の書き込み範囲の一部である第２の書き込み範囲を識別し第２の書き込み範囲へのデータの書き込みを指示する第２のコマンドと、を受信する。
アドレス管理部は、不揮発性メモリへのデータの書き込み前に、第１のコマンドに基づいて、第１の書き込み範囲に対してデータを書き込むための新たなブロックを選定する。
読み書き制御部は、第２のコマンドに応じて、新たなブロックにデータを記録する。
ここで、データを書き込むための第１の書き込み範囲とは、例えば、不揮発性記憶装置がアクセス装置に提供するデータ読み書きのための論理空間をブロック単位で分割した範囲である。また、第２の書き込み範囲とは、例えば、アクセス装置によるデータ書き込み単位に相当する範囲である。ブロックとは、例えば、不揮発性メモリ内の物理的なブロックである。【０００９】
ここでは、不揮発性メモリへのデータの書き込み前に、第１のコマンドに基づいて、第１の書き込み範囲に対してデータを書き込むための新たなブロックを選定し、第２のコマンドに応じてデータを書き込む。これにより、ストリームデータ等の大きなサイズのデータを連続的に書き込む場合であっても、データの書き込み途中にブロックの書き換え処理が発生する頻度を低減でき、データ書き込み速度が一時的に著しく低下することを防ぐことができる。
第２の発明は、不揮発性メモリと、不揮発性メモリへのデータの書き込み及び読み出しを制御するメモリコントローラと、を備える不揮発性記憶装置であって、メモリコントローラは、インターフェース部と、アドレス管理部と、読み書き制御部と、を有する。
インターフェース部は、データの書き込みを通知する第１のコマンドと、同データの書き込みを指示する第２のコマンドと、を受信する。【００１０】
アドレス管理部は、不揮発性メモリへのデータの書き込み前に、インターフェース部により第１のコマンドの次に受信される第２のコマンドに基づいて、データを書き込むための新たなブロックを選定する。
読み書き制御部は、インターフェース部により受信される第２のコマンドに応じて、新たなブロックにデータを記録する。
インターフェース部により第１のコマンドの次に受信される第２のコマンドは、データを書き込むための第１の書き込み範囲を識別する情報と、第１の書き込み範囲の一部である第２の書き込み範囲を識別する情報とを含み、第２の書き込み範囲へのデータの書き込みを指示する。
ここでは、実際にデータの書き込みが指示される第２のコマンドに基づいて、新たなブロックを選定されるため、第1コマンドによる大きなデータの書き込み処理が中止された場合であっても、第２コマンドが受信されるまではデータは破棄等されずに保持することができる。【００１１】
第３の発明は、第１又は第２の発明であって、アドレス管理部は、新たなブロックを選定する前に、第１の書き込み範囲に対し選定されている一以上のブロックがあるかどうかを判断し、一以上のブロックがあると判断した場合は、一以上のブロックを破棄する。
ここで、ブロックを破棄するとは、例えば、第１の書き込み範囲に既に割り当てられたブロックを未割り当ての状態にし、論理上空のブロックとして管理することを含む。この場合、未割り当ての状態であるブロックに残されたデータは消去されてもよいし、新たなデータが書き込まれるまでそのまま残されていてもよい。つまり、どのような内容のデータであってもよく、データの状態も正常、異常を問わない。
第４の発明は、第１又は第２の発明であって、アドレス管理部は、新たなブロックを選定する前に、第１の書き込み範囲に対し選定されている一以上のブロックがあるかどうかを判断し、一以上のブロックがあると判断した場合は、一以上のブロックを消去する。【００１２】
ここで、ブロックを消去するとは、例えば、当該ブロックを、全ビット０または全ビット１等のダミーデータが読み出されるような状態にすることをいう。
ここでは、新たなブロックが選定される前に、すでに選定されているブロックがあるかどうかを判断し、その判断結果に応じてブロックを破棄又は消去するため、新たなブロックの選定をより確実に行うことができる。
第５の発明は、第１又は第２の発明であって第１の書き込み範囲は、第２の書き込み範囲の整数倍である。
第６の発明は、第１の発明であって、第１のコマンドは、第１の書き込み範囲を識別する第１の識別情報を含む。
ここで、識別情報とは、例えば、第１の書き込み範囲を特定するアドレス情報である。【００１３】
第７の発明は、第１又は第２の発明であって、第１のコマンドは、ストリームデータを識別する第２の識別情報を含む。
第８の発明は、第７の発明であって、アドレス管理部は、第２の識別情報毎に、新たなブロックを選定する。
ここでは、より大きな書き込み範囲を基準にして新たなブロックの選定を行うため、管理するアドレスの情報量等を削減することができ、メモリ資源を節約できる。
第９の発明は、第８の発明であって、アドレス管理部は、複数の第２の識別情報を保持し、読み書き制御部は、複数の第２の識別情報に対応する複数の新たなブロックに、並行してデータを記録する。
ここでは、並行して送信される複数の大容量のデータの書き込み制御を高速且つ効率的に行うことができる。【００１４】
第１０の発明は、不揮発性記憶装置へのデータの書き込み及び読み出しを制御するアクセス装置ある。このアクセス装置は、データを書き込むための第１の書き込み範囲を識別する情報を含む第１のコマンドを不揮発性記憶装置に送信し、第１のコマンドの送信後、第１の書き込み範囲の一部である第２の書き込み範囲を識別する情報を含み第２の書き込み範囲へのデータの書き込みを指示する第２のコマンドを、複数回、不揮発性記憶装置に送信する。
ここでは、第１の書き込み範囲を識別する情報を含む第１のコマンドの送信後、第１の書き込み範囲の一部である第２の書き込み範囲を識別する情報を含む第２のコマンドを、複数回、不揮発性記憶装置に送信する。
これにより、ストリームデータ等の大きなサイズのデータを連続的に書き込む場合であっても、不揮発性記憶装置側においてデータの書き込み途中にブロックの書き換え処理が発生する頻度を低減でき、データ書き込み速度が一時的に著しく低下することを防ぐことができる。【００１５】
第１１の発明は、不揮発性記憶装置へのデータの書き込み及び読み出しを制御するアクセス装置ある。このアクセス装置は、データの書き込みを通知する第１のコマンドを不揮発性記憶装置に送信し、第１のコマンドの送信後、それぞれがデータの書き込みを指示する第２のコマンドを、複数回、不揮発性記憶装置に送信する。第１のコマンドの次に送信される第２のコマンドは、データを書き込むための第１の書き込み範囲を識別する情報と、第１の書き込み範囲の一部である第２の書き込み範囲を識別する情報とを含み、第２の書き込み範囲へのデータの書き込みを指示する。
第１２の発明は、第１の発明〜第９の発明のいずれか１つの不揮発性記憶装置と、第１０又は第１１発明のアクセス装置と、を備える。
第１３の発明は、不揮発性メモリへのデータの書き込み及び読み出しを制御するメモリコントローラであって、インターフェース部と、アドレス管理部と、読み書き制御部と、備える。【００１６】
インターフェース部は、データを書き込むための第１の書き込み範囲を識別する第１のコマンドと、第１の書き込み範囲の一部である第２の書き込み範囲を識別し第２の書き込み範囲へのデータの書き込みを指示する第２のコマンドと、を受信する。
アドレス管理部は、不揮発性メモリへのデータの書き込み前に、第１のコマンドに基づいて、第１の書き込み範囲に対してデータを書き込むための新たなブロックを選定する。
読み書き制御部は、第２のコマンドに応じて、新たなブロックにデータを記録する。
第１４の発明は、不揮発性メモリへのデータの書き込み及び読み出しを制御するメモリコントローラであって、インターフェース部と、アドレス管理部と、読み書き制御部と、備える。
インターフェース部は、データの書き込みを通知する第１のコマンドと、データの書き込みを指示する第２のコマンドと、を受信する。【００１７】
アドレス管理部は、不揮発性メモリへのデータの書き込み前に、インターフェース部により第１のコマンドの次に受信される第２のコマンドに基づいて、データを書き込むための新たなブロックを選定する。
読み書き制御部は、インターフェース部により受信される第２のコマンドに応じて、新たなブロックにデータを記録する。
インターフェース部により第１のコマンドの次に受信される第２のコマンドは、データを書き込むための第１の書き込み範囲を識別する情報と、第１の書き込み範囲の一部である第２の書き込み範囲を識別する情報とを含み、第２の書き込み範囲へのデータの書き込みを指示する。
【発明の効果】
【００１８】
本発明によれば、アクセス装置がブロックの全データをブロックよりもサイズの小さい単位で書き込んだ場合に、書き込み速度が一時的に著しく低下することを回避することが可能となる。
従って、ある一定の書き込み速度を保ちつつ、ストリームデータ等の大容量のコンテンツデータを記録可能な不揮発性記憶装置、アクセス装置、不揮発性記憶システム及びメモリコントローラを提供することができる。
【図面の簡単な説明】
【００１９】
【図１】本発明の第１実施形態における不揮発性記憶システムを示すブロック図
【図２】フラッシュメモリとブロックの関係を示す図
【図３】ブロックとページの関係を示す図
【図４】ページの構成を示す図
【図５】第１実施形態における第１の論理物理変換テーブルを示す図
【図６】第１実施形態における第２の論理物理変換テーブルを示す図
【図７】第１実施形態における空きブロック管理テーブルを示す図
【図８】ファイルシステムによる論理空間の管理方法を示す図
【図９】ＡＵとＲＵとクラスタの関係を示す図
【図１０】第１実施形態におけるコマンドフォーマットを示す図
【図１１】第１実施形態におけるストリーム書き込み準備コマンドのフォーマットを示す図
【図１２】第１実施形態の不揮発性記憶装置による初期化コマンド受信時の処理を示すフローチャート
【図１３】第１実施形態の不揮発性記憶装置によるストリーム書き込み準備コマンド受信時の処理を示すフローチャート
【図１４】第１実施形態の不揮発性記憶装置による書き込みコマンド及び付随する書き込みデータ受信時の処理を示すフローチャート
【図１５】第１実施形態における第２のブロックの準備処理の前後の状態例を示す図
【図１６】第１実施形態の不揮発性記憶装置による読み出しコマンド受信時の処理を示すフローチャート
【図１７】第１実施形態のアクセス装置による初期化処理を示すフローチャート
【図１８】第１実施形態のアクセス装置によるストリーム書き込み処理を示すフローチャート
【図１９】第１実施形態の不揮発性記憶システムにおけるストリームデータ書き込み時のコマンド・レスポンス・データの転送シーケンスを示す図
【図２０】第１実施形態のアクセス装置による通常のデータ書き込み処理を示すフローチャート
【図２１】第１実施形態の不揮発性記憶システムにおける通常のデータ書き込み時のコマンド・レスポンス・データの転送シーケンスを示す図
【図２２】第１実施形態のアクセス装置によるデータ読み出し処理を示すフローチャート
【図２３】本発明の第２実施形態におけるストリーム管理テーブルを示す図
【図２４】第２実施形態におけるストリーム書き込み準備コマンドのフォーマットを示す図
【図２５】他の実施形態の不揮発性記憶装置によるストリーム書き込み準備コマンド受信時の処理を示すフローチャート
【図２６】他の実施形態の不揮発性記憶装置による書き込みコマンド及び付随する書き込みデータ受信時の処理を示すフローチャート
【発明を実施するための形態】
【００２０】
以下、本発明の実施形態について添付の図面を参照しながら説明する。
（第１実施形態）
＜１．不揮発性記憶システム１の構成＞
図１は、本発明の第１実施形態における不揮発性記憶システム１の構成を示している。
本実施形態の不揮発性記憶システム１は、不揮発性記憶装置１００と、不揮発性記憶装置１００が装着されるアクセス装置２００とを有する。
＜１．１．アクセス装置２００の構成＞
アクセス装置２００は、入力制御部２０１と、入力部２０２と、バッファ２０３と、カードインターフェース（カードＩＦ）２０４と、表示部２０５と、表示制御部２０６と、符号化部２０７と、システム制御部２０８とを含む。アクセス装置１００は、例えば、ビデオカメラ等の動画記録装置である。
【００２１】
入力部２０２は、動画等のストリームデータが入力される部分であり、入力制御部２０１によって制御される。
バッファ２０３は、入力部２０２から入力されたストリームデータを一時的に格納する部分であり、ＲＡＭ等で構成される。
カードＩＦ２０４は、不揮発性記憶装置１００にアクセスし、データの読み書きを行う部分である。
表示部２０５は、不揮発性記憶システム１に関する情報を表示する部分であり、表示制御部２０６によって制御される。
符号化部２０７は、バッファ２０３に格納されたストリームデータを符号化する部分である。
【００２２】
システム制御部２０８は、内部にプログラム用のＲＯＭや作業用のＲＡＭを含み、アクセス装置２００全体を制御するものである。
入力部２０２から入力されたストリームデータは一時的にバッファ２０３に格納され、符号化部２０７によって符号化された後、カードＩＦ２０４を介して不揮発性記憶装置１００に書き込まれる。
＜１．２．不揮発性記憶装置１００の構成＞
不揮発性記憶装置１００は、メモリコントローラ１１０と、フラッシュメモリ群である不揮発性メモリ１２０とを含む。
＜１．２．１．メモリコントローラ１１０＞
メモリコントローラ１１０は、アクセス装置２００との通信を行うホストインターフェース（ホストＩＦ）１０１と、バッファ１０２と、読み書き制御部１０３と、ＣＰＵ１０４と、レジスタ部１０５と、アドレス管理部１０６とを含む。
【００２３】
バッファ１０２は、ＲＡＭ等で構成され、アクセス装置２００から転送されたデータ、あるいは不揮発性メモリ１２０から読み出されたデータを一時的に保持するものである。バッファ１０２は、アクセス装置２００とメモリコントローラ１１０間のデータ転送と、メモリコントローラ１１０と不揮発性メモリ１２０間のデータ転送の単位やタイミングの違いを吸収するのに利用される。
読み書き制御部１０３は、アドレス管理部１０６が指定した物理アドレスに基づいてバッファ１０２に一時的に保持されたデータを不揮発性メモリ１２０に書き込む。更に、読み書き制御部１０３は、不揮発性メモリ１２０からデータを読み出し、該データを一時的にバッファ１０２に保持する。
ＣＰＵ１０４は、内部にプログラム用ＲＯＭや作業用のＲＡＭ等を含み、メモリコントローラ１１０全体を制御するものである。
【００２４】
レジスタ部１０５は、不揮発性記憶装置１００に関する各種のパラメータ情報を保持する部分である。
アドレス管理部１０６は、アクセス装置２００のアクセスに伴って転送された論理アドレスを不揮発性メモリ１２０内の物理アドレスに変換し、不揮発性メモリ１２０内の記録状態等を管理する部分である。
本実施形態におけるアドレス管理部１０６は、第１の論理物理変換テーブル１３１（図５）と、第２の論理物理変換テーブル１３２（図６）と、空きブロック管理テーブル１４０（図７）とをＲＡＭ上に構築し、使用する。詳細は後述する。
＜１．２．２．不揮発性メモリ１２０＞
図２に示すように、不揮発性メモリ１２０であるフラッシュメモリは複数のブロック１２１から構成される。ブロック１２１はフラッシュメモリにおけるデータ消去単位である。
【００２５】
更に、図３に示すように、各ブロック１２１は複数のページ１２２から構成される。ページ１２２はフラッシュメモリにおける書き込み単位である。ブロック１２１に対する書き込みは常に物理的に先頭のページから順に行われる。
また、図４に示すように、各ページ１２２は、アクセス装置２００から転送されたデータ等を格納するデータ格納領域１２３と、メモリコントローラ１１０が使用する管理情報を格納する管理情報格納領域１２４とを含む。管理情報格納領域１２４には、データ格納領域１２３に格納されたデータのページ単位の論理アドレス情報や、誤り訂正符号等の情報が格納される。
＜１．２．３．アドレス管理部１０６のテーブル＞
アドレス管理部１０６は、ブロック単位で論理アドレスと物理アドレスの対応を管理する第１の論理物理変換テーブル１３１と、第２の論理物理変換テーブル１３２とを含む。
【００２６】
≪第１の論理物理変換テーブル１３１≫
図５は、第１の論理物理変換テーブル１３１の構成例を示す。第１の論理物理変換テーブル１３１には、論理ブロック（不揮発性記憶装置１００がアクセス装置２００に提供するデータ読み書きのための論理空間をブロック単位で分割したもの）と物理ブロック（不揮発性メモリ１２０内の物理的なブロック）の対応を１対１で管理する。以下、第１の論理物理変換テーブル１３１に登録された物理ブロックを第１のブロックと呼ぶ。
本実施形態の特徴として、前記第１の論理物理変換テーブル１３１は、追記フラグを含む。追記フラグは、第１のブロックへの追記の可否に関する情報をＯＮ／ＯＦＦの２値で設定する。追記フラグがＯＦＦの場合とは、第１のブロックの書き込みが完結している場合や、第１のブロックが未だ割り当てられていない場合等である。追記フラグがＯＮの場合とは、第１のブロックに未書き込みのページが存在する場合である。
【００２７】
≪第２の論理物理変換テーブル１３２≫
図６は、第２の論理物理変換テーブル１３２の構成例を示す。第２の論理物理変換テーブル１３２では、特定の論理ブロックに対して、前記第１のブロックとは別の物理ブロックを割り当てる。以下、第２の論理物理変換テーブル１３２に登録された物理ブロックを第２のブロックと呼ぶ。
前記第２のブロックは、前記第１のブロックに書き込まれた１ブロック分のデータのうち、一部分のみを更新する場合に、更新データを書き込むためのブロックである。更新の最小単位は、ブロックへの書き込み単位であるページとなる。本実施形態では、第１の論理物理変換テーブル１３１において第１のブロックの追記フラグがＯＦＦ（すなわち追記不可）の場合にのみ、第２の論理物理変換テーブル１３２において第２のブロックを登録できるものとする。
【００２８】
図６の例では最大４つの論理ブロックに対して、第２のブロックの割り当てを可能としている。この第２のブロックが割り当て可能な論理ブロックの数は、不揮発性記憶装置１００の設計によって任意の値に設定してよい。第２のブロックの数を増加すると、ランダムな論理アドレスへの書き込みが発生した場合に、第２のブロックに追記できる確率が増加し、より効果的に書き込み速度の低下を防止できるというメリットがある。しかし、第１のブロックとは別のブロックの割り当てが必要となるので、不揮発性記憶装置１００がアクセス装置２００に提供できる論理空間を一定に保つためには、無制限に増加することはできない。
また、第２の論理物理変換テーブル１３２は、第２のブロックの書き込み状態を管理するための情報を含んでいてもよい。例えば、図６に示すように、第２のブロックにおける書き込み済みのページ数や、書き込んだデータの論理アドレスが連続なのかランダムなのかといった情報を含んでいてもよい。これらの情報は、第２のブロックの書き込み済みのページの管理情報格納領域１２２を読み出すことによっても取得もしくは作成することができるが、ＲＡＭ上に構成される第２の論理物理変換テーブル１３２の一部として保持することで、書き込み速度の高速化が期待できる。
【００２９】
更に、アドレス管理部１０６は、各物理ブロックの使用状況を管理するための空きブロック管理テーブル１４０を備えている。
図７は、空きブロック管理テーブル１４０の構成例を示す。空きブロック管理テーブル１４０は、不揮発性メモリ１２０内の全物理ブロックがそれぞれ使用中なのか空きなのかという情報を保持する。「空き」とは、有効なデータが登録されておらず、新しいデータの格納用として使用することができる物理ブロックであることを意味する。一方、「使用中」とは、それ以外の物理ブロックであり、前記第１の論理物理変換テーブル１３１に登録された第１のブロックや、前記第２の論理物理変換テーブル１３２に登録された第２のブロックや、メモリコントローラ１１０が内部的に使用するシステム情報を格納したブロック（以降、システム情報ブロックと呼ぶ）や、データ書き込みができない不良ブロック等が相当する。
【００３０】
＜１．３．アクセス装置２００による論理空間の管理＞
＜１．３．１．論理空間の管理の概要＞
次に、不揮発性記憶装置１００が提供する論理空間をアクセス装置２００が管理する方法について述べる。
本実施形態におけるアクセス装置２００は、前記論理空間をＦＡＴファイルシステムによって管理する。ＦＡＴファイルシステムには、ＦＡＴ１２、ＦＡＴ１６、ＦＡＴ３２、ｅｘＦＡＴ等の様々なバリエーションが存在するが、いずれも図８に示すように、ファイルシステムの管理情報を格納するファイルシステム管理情報格納領域と、ストリームデータ等のユーザーデータを格納するユーザーデータ領域とから構成される。ユーザーデータ領域は、複数のクラスタと呼ばれる単位に分割されて管理される。クラスタのサイズを超えるデータは複数のクラスタに分割して格納され、クラスタ間のつながりを表すリンク情報は前記ファイルシステム管理情報領域内のＦＡＴテーブルとして管理される。
【００３１】
従って、アクセス装置２００によるデータ書き込みの基本単位はクラスタとなる。但し、ストリームデータの書き込みにおいては、論理アドレスが連続する複数のクラスタから構成されるＲＵ（Ｒｅｃｏｒｄｉｎｇ  Ｕｎｉｔ）単位（図９）を基本単位とする。これにより、サイズの大きいストリームデータの書き込みにおいて、不揮発性記憶装置１００への書き込みコマンドを繰り返し発行することに伴うオーバーヘッドを削減することができる。
更に、アクセス装置２００が指定するストリームデータの書き込みアドレスは、前記ＲＵの整数倍のＡＵ（Ａｌｌｏｃａｔｉｏｎ  Ｕｎｉｔ）単位（図９）内で、先頭から順にインクリメントさせる。ＡＵを論理ブロックの整数倍のサイズとすることにより、ストリームデータが論理ブロックの先頭から連続的に書き込まれるため、不揮発性記憶装置１００のメモリコントローラ１１０はストリームデータを不揮発性メモリ１２０に効率的に書き込むことができる。なお、本実施形態ではＡＵを論理ブロックの１倍のサイズ（すなわち同じサイズ）として説明する。
【００３２】
図９にＡＵとＲＵとクラスタの関係を示す。
＜１．３．２．コマンドフォーマット＞
不揮発性記憶装置１００は、アクセス装置２００から転送される少なくとも４つのコマンドを処理する。
「書き込みコマンド」（第２のコマンド）は、データを不揮発性メモリ１２０に書き込むためのコマンドである。「読み出しコマンド」は、不揮発性メモリ１２０に格納されたデータを読み出してアクセス装置２００に転送するためのコマンドである。「初期化コマンド」は、不揮発性記憶装置１００への読み書きを開始するための初期化処理をするためのコマンドである。「ストリーム書き込み制御コマンド」は、ストリームデータを書き込むときの制御を行うためのコマンドである。
【００３３】
図１０にこれらのコマンドのフォーマット例を示す。図１０の例において、コマンド３００は、コマンドの開始を示すスタートビット３０１（１ビット）、コマンドであることを示すコマンドフラグ３０２（１ビット）、コマンドの種別を示すコマンドインデックス３０３（６ビット）、コマンドの種別に応じたパラメータを設定するアーギュメント３０４（３２ビット）、コマンド転送時のエラーを検出するためのＣＲＣ３０５（７ビット）、コマンドの終端を示すエンドビット３０６（１ビット）を含み、計４８ビット（すなわち、６バイト）で構成される。
前記書き込みコマンドの場合には、アーギュメント３０４に書き込み開始論理アドレスがセクタ単位（５１２バイト単位）で格納される。
前記読み出しコマンドの場合には、アーギュメント３０４に読み出し開始論理アドレスがセクタ単位（５１２バイト単位）で格納される。
【００３４】
前記ストリーム書き込み制御コマンドは、図１１に示すように、アーギュメント３０４内にサブコード３０７（４ビット）を設けることで制御の方法を拡張できるものとし、少なくともストリームデータを書き込むＡＵを指定するためのサブコードである「書き込みＡＵ指定」が定義されているものとする。
以下、サブコードに「書き込みＡＵ指定」が格納されたストリーム書き込み制御コマンドを「ストリーム書き込み準備コマンド」（第１のコマンド）と呼称する。
図１１にストリーム書き込み準備コマンドのフォーマット詳細例を示す。ストリーム書き込み準備コマンドのアーギュメント３０４は、「書き込みＡＵ指定」を示すサブコード３０７（４ビット）と、将来拡張用の予約ビット３０８（１ビット）と、ストリームを書き込むＡＵのアドレスであるＡＵアドレス３０９（２７ビット）とから構成される。
【００３５】
書き込みコマンドや読み出しコマンドでは、論理アドレスをセクタ単位で３２ビットで表現できるので最大２ＴＢ（テラバイト）の論理空間を管理できる。一方、ＡＵアドレスは２７ビットの表現となるが、１つのＡＵのサイズが１６ＫＢ以上であれば２ＴＢ以上の論理空間を管理できることになる。
＜１．４．不揮発性記憶装置１００の動作＞
まず、不揮発性記憶装置１００の動作を説明する。
＜１．４．１．初期化処理＞
図１２は、メモリコントローラ１１０による初期化コマンド受信時の処理を示すフローチャートである。
≪ステップＳ１０１〜Ｓ１０３≫
不揮発性記憶装置１００への電源投入後、メモリコントローラ１１０はハードウェアの初期化を行い、コマンドを受信可能な状態となる。その後、アクセス装置２００から前記「初期化コマンド」を受信すると、メモリコントローラ１１０が不揮発性メモリ１２０にアクセスを開始するために必要なハードウェアの初期化処理を行う。
【００３６】
その後、メモリコントローラ１１０は読み書き制御部１０３を介して不揮発性メモリ１２０にアクセスし、不揮発性メモリ１２０に格納されている、アドレス管理のためのシステム情報が格納されたシステム情報ブロックを読み出し、アドレス管理部１０６に第１の論理物理変換テーブル１３１、第２の論理物理変換テーブル１３２、空きブロック管理テーブル１４０等を作成する（Ｓ１０２）。
更に、前記システム情報ブロックやＣＰＵ１０４のＲＯＭに格納された情報を参照して、レジスタ部１０５に各種のパラメータ情報を設定する（Ｓ１０３）。パラメータ情報として、少なくともＡＵのサイズ情報を含むものとする。
＜１．４．２．ストリーム書き込み準備処理＞
図１３は、メモリコントローラ１１０によるストリーム書き込み準備コマンド受信時の処理を示すフローチャートである。
【００３７】
≪ステップＳ２０１〜Ｓ２０６≫
メモリコントローラ１１０は、アクセス装置２００から「ストリーム書き込み準備コマンド」を受信すると、ＡＵアドレス３０９の値とレジスタ部１０５に設定したＡＵのサイズ情報から、指定されたＡＵに対応する論理ブロック（以下、指定論理ブロックと呼ぶ。）を特定する（Ｓ２０１）。指定論理ブロックはアクセス装置２００がこれからストリーム書き込みを行う論理ブロックとして認知される。
その後、アドレス管理部１０６の第２の論理物理変換テーブル１３２を参照し、指定論理ブロックの登録があるかどうかを検索することで、第２のブロックが割り当てられているかを判断する（Ｓ２０２）。
登録があった場合には、第２の論理物理変換テーブル１３２を更新して未登録状態とすることで、第２のブロックを消去する（Ｓ２０３）。
【００３８】
本実施形態において、ブロックを消去するとは、当該ブロックを、全ビット０または全ビット１等のダミーデータが読み出されるような状態にする、つまり当該ブロックにおけるデータを論理上消去した状態にすることをいう。
同第２のブロックは空きブロック管理テーブル１４０において空きブロックとなり再利用されるが、同第２のブロックに書き込まれていたデータは上述のように論理上消去される。
更に、アドレス管理部１０６の第１の論理物理変換テーブル１３１を参照して指定論理ブロックに対応する第１のブロックの物理ブロックアドレスの登録があるかどうかを判断する（Ｓ２０４）。
登録があった場合には、第１の論理物理変換テーブル１３１を更新して第１のブロックを未割り当て（未アロケート）の状態とすることで、第１のブロックを消去する（Ｓ２０５）。消去された第１のブロックは空きブロック管理テーブル１４０において空きブロックとなり再利用されるが、書き込まれていたデータは上記と同様に論理上消去される。
【００３９】
空きブロック管理テーブル１４０を参照して空きブロックを取得してデータを論理上消去した後、第１の論理物理変換テーブル１３１の指定論理ブロックに対する第１のブロックとして消去済みの物理ブロックを登録し、その追記フラグをＯＮに設定する（Ｓ２０６）。
以上の処理によって、ストリーム書き込み準備処理コマンドによって指定されたＡＵに対応する物理ブロックの書き込み済みデータは論理上消去されるとともに、前記ＡＵには消去済みの物理ブロックが割り当てられ、先頭ページからの書き込みが可能な状態となる。
＜１．４．３．書き込み処理＞
図１４は、メモリコントローラ１１０による書き込みコマンド及び付随する書き込みデータ受信時の処理を示すフローチャートである。
【００４０】
≪ステップＳ３０１〜Ｓ３１２≫
メモリコントローラ１１０は、アクセス装置２００から上記「書き込みコマンド」を受信すると、アーギュメント３０４から書き込み開始論理アドレス（セクタ単位）を取得し（Ｓ３０１）、論理ブロックアドレスに変換する。
その後、アドレス管理部１０６の第１の論理物理変換テーブル１３１を参照して、論理ブロック（以下、指定論理ブロックと呼ぶ。）の追記フラグを参照する（Ｓ３０２）。
追記フラグがＯＦＦの場合は、更に第２の論理物理変換テーブル１３２を参照して第２のブロックが割り当てられているかを判断する（Ｓ３０３）。
第２のブロックが割り当てられている場合は、第２の論理物理変換テーブル１３２を参照し、該第２のブロックの書き込み状態を参照することで、アクセス装置２００から転送される書き込みデータを該第２のブロックの未書き込みページに追記できるか否かを判断する（Ｓ３０４）。
【００４１】
ステップＳ３０３で第２のブロックが割り当てられていない場合や、ステップＳ３０４で第２のブロックに追記できないと判断した場合には、アクセス装置２００から転送される書き込みデータを書き込むための第２のブロックを準備するための処理を行う（Ｓ３０５）。このとき、必要に応じて不揮発性メモリ１２０のシステム情報ブロックの更新を行う。
ステップＳ３０５の処理では、まず第２の論理物理変換テーブル１３２の空きエントリを準備する。空きエントリがない場合は、既に第２の論理物理変換テーブル１３２に登録済みの論理ブロックＸの登録を解消することで空きエントリを準備する。
この論理ブロックＸの登録解消の処理を図１５を用いて説明する。まず、空きブロック管理テーブル１４０から空きブロックを取得し、上記と同様にデータを論理上消去する。その後、論理ブロックＸを構成する第１のブロックと第２のブロックに書き込み済みのデータから、１論理ブロック分の有効なデータを前記データ消去済みの空きブロックにコピーする。有効なデータの検索は、第２の論理物理変換テーブル１３２の書き込み状態の情報や、第１のブロックや第２のブロックの書き込み済みページの管理情報格納領域１２２に格納されたページ単位の論理アドレス情報等を参照して行われる。そして、コピー先のブロックを論理ブロックＸの新たな第１のブロックとして第１の論理物理変換テーブル１３１に登録し、追記フラグはＯＦＦとする。これに伴い、コピー元の第１のブロックは第１の論理物理変換テーブル１３１において未割り当てとなるので、空きブロック管理テーブル１４０にて空きブロックとして登録され、再利用される。また、コピー元の第２のブロックは第２の論理物理変換テーブル１３２において未登録とされ、更に空きブロック管理テーブル１４０にて空きブロックとして登録され、再利用する。
【００４２】
以上により、論理ブロックＸの有効データを保持しつつ、第２の論理物理変換テーブル１３２に空きエントリを準備することができる。但し、１論理ブロック分の有効なデータのコピーには比較的長い時間が必要であり、フラッシュメモリの品種にもよるが、例えば２００ミリ秒〜３００ミリ秒を要する。
一方、ステップＳ３０３で第２のブロックが割り当てられていると判断し、更にステップＳ３０４で第２のブロックを追記できると判断した場合は、ステップＳ３０６の処理に進み、アクセス装置２００が転送する書き込みデータを第２のブロックに書き込む（Ｓ３０６）。
書き込みが完了すれば処理を終了し、続きの書き込みデータがある場合には次の論理ブロックに対してステップＳ３０２からの処理を実施する（Ｓ３０７）。
【００４３】
ステップＳ３０２において、アドレス管理部１０６の第１の論理物理変換テーブル１３１を参照して、指定論理ブロックの追記フラグがＯＮの場合は、第１の論理物理変換テーブル１３１に登録された第１のブロックの書き込み済みページの管理情報格納領域１２２に格納されたページ単位の論理アドレス情報等を参照して、アクセス装置２００が転送する書き込みデータを該第１のブロックに追記可能か否かを判断する（Ｓ３０８）。
追記可能であれば該第１のブロックの未書き込みページにアクセス装置２００が転送する書き込みデータを書き込んでいく（Ｓ３０９）。
なお、後述するが、アクセス装置２００が追記フラグＯＮの第１のブロックにストリームデータを書き込む場合は、常に論理アドレスが連続になるように制御するため、ステップＳ３０８の判断は常に追記可能となる。なんらかの異常によって、追記不可と判断された場合には異常系処理（Ｓ３１２）を行って処理を終了する。
【００４４】
ステップＳ３０９の処理後、該第１のブロックの未書き込みページが全て書き込み済みになったかどうかを判断する（Ｓ３１０）。全て書き込み済みになる前に書き込みが完了すれば処理を終了する。
全て書き込み済みになった場合には、第１の論理物理変換テーブル１３１の追記フラグをＯＮからＯＦＦに変更し、必要に応じて不揮発性メモリ１２０のシステム情報ブロックを更新する（Ｓ３１１）。
そして、書き込みが完了すれば処理を終了するが、続きの書き込みデータがある場合には次の論理ブロックに対してステップＳ３０２からの処理を実施する（Ｓ３０７）。
＜１．４．４．読み出し処理＞
図１６は、メモリコントローラ１１０による読み出しコマンド受信時の処理を示すフローチャートである。
【００４５】
≪ステップＳ４０１〜Ｓ４０７≫
メモリコントローラ１１０は、アクセス装置２００から前記「読み出しコマンド」を受信すると、アーギュメント３０４から読み出し開始論理アドレス（セクタ単位）を取得し（Ｓ４０１）、論理ブロックアドレスに変換する。
その後、アドレス管理部１０６の第１の論理物理変換テーブル１３１を参照して、論理ブロックの追記フラグを参照する（Ｓ４０２）。
追記フラグがＯＦＦの場合は、更に第２の論理物理変換テーブル１３２を参照して第２のブロックが割り当てられているかを判断する（Ｓ４０３）。
第２のブロックが割り当てられている場合は、第１の論理物理変換テーブル１３１に登録された第１のブロックと前記第２のブロックから有効なデータを検索して、読み出しデータとしてアクセス装置２００に転送する（Ｓ４０４）。
【００４６】
この有効なデータの検索は、第２の論理物理変換テーブル１３２の書き込み状態の情報や、第１のブロックや第２のブロックの書き込み済みページの管理情報格納領域１２２に格納されたページ単位の論理アドレス情報等を参照して行われる。
一方、ステップＳ４０３で第２のブロックが割り当てられていない場合には、第１のブロックから読み出したデータを読み出しデータとしてアクセス装置２００に転送する（Ｓ４０５）。
ステップＳ４０４及びＳ４０５の処理において、第１のブロックが未割り当てであり、読み出し対象のデータが存在しない場合には、全ビット０または全ビット１等のダミーデータを読み出しデータとして転送する。すなわち、本実施形態では、未割り当ての状態のブロックは、このようにデータが論理上消去された状態として管理されている。
【００４７】
ステップＳ４０２において追記フラグがＯＮの場合は、第１の論理物理変換テーブル１３１に登録された第１のブロックから読み出したデータを読み出しデータとしてアクセス装置２００に転送する（Ｓ４０６）。読み出し対象が未書き込みページに相当する場合には、全ビット０または全ビット１等のダミーデータを読み出しデータとして転送してもよい。
その後、読み出しが完了すれば処理を終了するが、次の論理ブロックに対して読み出しが必要な場合にはステップＳ４０２からの処理を実施する（Ｓ４０７）。
＜１．５．アクセス装置２００の動作＞
次に、アクセス装置２００の動作を説明する。
＜１．５．１．初期化処理＞
図１７は、アクセス装置２００による不揮発性記憶装置１００に関する初期化処理を示すフローチャートである。
【００４８】
≪ステップＳ５０１〜Ｓ５０３≫
アクセス装置２００は、カードＩＦ２０４等のハードウェアを初期化する（Ｓ５０１）。
不揮発性記憶装置１００の装着を検出すると、不揮発性記憶装置１００に電源を投入し、上述した「初期化コマンド」を発行する（Ｓ５０２）。
不揮発性記憶装置１００の初期化が完了すると、アクセス装置２００はカードＩＦ２０４を介して不揮発性記憶装置１００のレジスタ部１０５に格納されたＡＵのサイズ情報等を取得する（Ｓ５０３）。続けて、不揮発性記憶装置１００に格納されたファイルシステムの管理情報等を読み出してファイルシステムによる読み書きの準備を行う。
＜１．５．２．ストリーム書き込み処理＞
図１８は、アクセス装置２００によるストリーム書き込み処理を示すフローチャートである。アクセス装置２００の入力部２０２から入力されたストリームデータはバッファ２０３に一時的に格納され、符号化部２０７で符号化された後、カードＩＦ２０４を介して不揮発性記憶装置１００に書き込まれる。
【００４９】
≪ステップＳ６０１〜Ｓ６０９≫
まず、アクセス装置２００はファイルシステムの管理情報を参照して、ストリームデータを書き込むＡＵを決定する（Ｓ６０１）。本実施形態においてアクセス装置２００は、ストリームデータをＡＵ内の先頭ＲＵから順番にＲＵ単位で書き込んでいく。従って、書き込みＡＵの決定に伴い、書き込みＲＵも自動的に決定される。
次に、アクセス装置２００は、不揮発性記憶装置１００に対し上記「ストリーム書き込み準備コマンド」を発行する（Ｓ６０２）。アーギュメント３０４のＡＵアドレス３０９（図１１）にはステップＳ６０１で決定したＡＵのアドレスを指定する。これにより、不揮発性記憶装置１００では図１３のストリーム書き込み準備処理を行い、該ＡＵには消去済みの物理ブロックである第１のブロックが追記フラグＯＮの状態で割り当てられる。
【００５０】
バッファ２０３にＲＵのサイズ分のストリームデータが準備されているかどうかを判断する（Ｓ６０３）。
準備されている場合は、不揮発性記憶装置１００に上述の「書き込みコマンド」を発行し、バッファ２０３に格納されたＲＵのサイズ分のストリームデータを転送する（Ｓ６０４）。このとき、アーギュメント３０４で指定する書き込み開始論理アドレス（セクタ単位）は、上記「ストリーム書き込み準備コマンド」で指定したＡＵの先頭論理アドレスから順に指定する。これにより、不揮発性記憶装置１００では図１４の書き込み処理を行い、転送されたＲＵサイズのデータを追記フラグＯＮの第１のブロックの先頭から順に追記していく。
ステップＳ６０４の処理の後、アクセス装置２００はシステム制御部２０８の内部のＲＡＭ等に保持しているファイルシステム情報を、ＲＵ書き込み後の状態に更新する（Ｓ６０５）。
【００５１】
ストリームデータをＡＵの最後まで書き込まれたかどうかを判断する（Ｓ６０６）。
ストリームデータをＡＵの最後まで書き込まれていない場合は、ＡＵ内の未書き込みＲＵのうち先頭のＲＵを次の書き込み先に決定し（Ｓ６０７）、ステップＳ６０３の処理に戻る。ＡＵの最後までデータを書き込んだ場合には、次の書き込み先ＡＵを探すためにステップＳ６０１の処理に戻る。
一方、ステップＳ６０３の処理で、バッファ２０３にデータが準備される前である場合には、ストリームデータが終了した場合（Ｓ６０９）には、アクセス装置２００がシステム制御部２０８の内部のＲＡＭ等に保持しているファイルシステム情報を不揮発性記憶装置１００に書き込んで（Ｓ６０９）、ストリーム書き込み処理を終了する。
≪ストリーム書き込み処理の転送シーケンス≫
図１９は、上述したストリーム書き込み処理におけるコマンド・レスポンス・データの転送シーケンス例を示す。
【００５２】
図１９では、アクセス装置２００のカードＩＦ２０４と不揮発性記憶装置１００のホストＩＦ１０１の間で、少なくとも次の５本の信号線を備えている。１つはアクセス装置２００から不揮発性記憶装置１００へのコマンドや、不揮発性記憶装置１００からアクセス装置２００へのコマンドに対するレスポンスを転送する信号線（Ｃ／Ｒ）である。残りの４つは、書き込みや読み出しのデータをアクセス装置２００及び不揮発性記憶装置１００間で並列に転送するための信号線（Ｄ０、Ｄ１、Ｄ２、Ｄ３）である。
図１９において、水平方向は時間軸と表しており、左から右に時間の流れを表している。ストリーム書き込み処理は、最初にストリーム書き込み準備コマンドとそのレスポンスが送受信されて、ストリームデータを書き込むＡＵが共有される。その後、ＲＵ単位で、書き込みコマンド、レスポンス、及び付随する書き込みデータ転送の組が送受信されるのを繰り返すことで、前記ＡＵに対するストリームデータ書き込みが行われる。別のＡＵに書き込む場合には、ストリーム書き込み準備コマンドの送受信からの繰り返しとなる。
【００５３】
なお、図示は省略しているが、ＲＵ単位の書き込みデータ転送が終了したときは、アクセス装置２００側からストップコマンドが送信され、不揮発性記憶装置１００からストップコマンドに対するレスポンスが送信される。
＜１．５．３．通常のデータの書き込み処理＞
図２０は、アクセス装置２００による通常のデータの書き込み処理を示すフローチャートである。本実施形態における通常のデータとはストリームデータ以外のデータ、すなわちファイルシステムの管理情報やストリームデータに付随するメタデータや複数のストリームデータに関連するデータ（例えば、プレイリスト）等の、比較的サイズの小さいデータを指す。これらのデータはアクセス装置２００のシステム制御部２０８のＲＡＭ上等で管理され、カードＩＦ２０４を介して不揮発性記憶装置１００に書き込まれる。
【００５４】
≪ステップＳ７０１〜Ｓ７０５≫
まず、アクセス装置２００は、ファイルシステムの管理情報を参照して、通常のデータを書き込むクラスタを決定する（Ｓ７０１）。
次に、アクセス装置２００は、不揮発性記憶装置１００に上述した「書き込みコマンド」を発行し、システム制御部２０８のＲＡＭ等に格納されたクラスタサイズ分のデータを転送する（Ｓ７０２）。これにより、不揮発性記憶装置１００では図１４の書き込み処理を行い、転送されたクラスタサイズのデータを第２のブロックに書き込む。第２の論理物理変換テーブル１３２（図６）の状態によっては、ステップＳ３０５（図１４）の第２のブロックの準備処理が必要となる。この場合、例えば２００ミリ秒〜３００ミリ秒の待ち時間が発生する場合があるが、今回書き込むクラスタデータ以外のデータについては以前に書き込んだデータが保持される。
【００５５】
ステップＳ７０２の処理の後、アクセス装置２００はシステム制御部２０８の内部のＲＡＭ等に保持しているファイルシステム情報を、クラスタ書き込み後の状態に更新する（Ｓ７０３）。
次のクラスタへの書き込みデータがある場合には（Ｓ７０４）、ステップＳ７０１の処理に戻って書き込みを継続する。
次のクラスタへの書き込みデータがない場合、アクセス装置２００がシステム制御部２０８の内部のＲＡＭ等に保持しているファイルシステム情報を不揮発性記憶装置１００に書き込んで（Ｓ７０５）、通常のデータ書き込み処理を終了する。
≪通常の書き込み処理の転送シーケンス≫
図２１に通常の書き込み処理におけるコマンド・レスポンス・データの転送シーケンス例を示す。図２１において、アクセス装置２００と不揮発性記憶装置１００間の信号線の構成は図１９の場合と同様である。通常のデータ書き込み処理は、クラスタ単位で、書き込みコマンド、レスポンス、及び付随する書き込みデータ転送の組が送受信されるのを繰り返す。なお、図示は省略しているが、クラスタ単位の書き込みデータ転送が終了したときは、アクセス装置２００側からストップコマンドが送信され、不揮発性記憶装置１００からストップコマンドに対するレスポンスが送信される。
【００５６】
＜１．５．４．データ読み出し処理＞
図２２は、アクセス装置２００によるデータ読み出し処理を示すフローチャートである。データの読み出しはストリームデータもストリームデータ以外のデータも同様にクラスタ単位で行われる。
≪ステップＳ８０１〜Ｓ８０３≫
まず、アクセス装置２００は、ファイルシステムの管理情報を参照して、データを読み出すクラスタを決定する（Ｓ８０１）。
次に、アクセス装置２００は、不揮発性記憶装置１００に上述した「読み出しコマンド」を発行し、システム制御部２０８のＲＡＭまたはバッファ２０３等に不揮発性記憶装置１００から受信したデータを格納する（Ｓ８０２）。
【００５７】
アクセス装置２００は、次のクラスタの読み出し要求がある場合には（Ｓ８０３）、ステップＳ８０１の処理に戻って読み出しを継続し、なければ処理を終了する。
＜１．６．第１実施形態の効果＞
本実施形態によれば、アクセス装置２００がブロックの全データをブロックよりもサイズの小さい単位で書き込む場合には、予め、ストリーム書き込み準備コマンドを発行することで、該ブロックのアドレスに関する情報を不揮発性記憶装置１００に通知する。これにより、不揮発性記憶装置１００は無用な整理のためのデータコピーを行うことなく、消去済みのブロックの先頭からストリームデータを一定の速度で書き込むことが可能となる。
また、ストリーム書き込み準備処理（図１３）においては、取得したＡＵアドレスが割り当てられた第１又は第２のブロックがあるかどうかを判断し、割り当てられている場合はブロックを消去し、新たなブロックを割り当てるため、より確実に新たなブロックの割り当てが可能となる。
【００５８】
以上のように、本実施形態によれば、ある一定の書き込み速度を保ちつつ、ストリームデータ等の大容量のコンテンツデータを記録可能なメモリコントローラ、不揮発性記憶装置、アクセス装置、及び不揮発性記憶システムを提供することができる。
（第２実施形態）
＜２．不揮発性記憶システム１の構成＞
本発明の第２実施形態における不揮発性記憶システム１は、第１の論理物理変換テーブル１３１において論理ブロック毎に設けていた追記フラグを有さず、代わりにアドレス管理部１０６にストリーム管理テーブル１５０を備えている。それ以外の構成は第１実施形態のものと同様である。なお、第１実施形態と同様である構成については、同一の符号をもって参照し、詳細な説明は省略する。
【００５９】
＜２．１．ストリーム管理テーブル１５０＞
図２３にストリーム管理テーブル１５０の構成例を示す。
ストリーム管理テーブル１５０は、アクセス装置２００がストリームデータを書き込む論理ブロックのアドレスと、その論理ブロックに対応する第１のブロックの書き込み状態を管理するために用いる。ストリーム管理テーブル１５０に論理ブロックアドレスが登録されていることは、第１実施形態における追記フラグがＯＮに設定されることと等価な扱いとする。
図２３の例では、最大４個のストリームデータに対して、ストリームデータ書き込み先の論理ブロックのアドレス情報と、対応する第１のブロックへの書き込み状態に関する情報（例えば書き込み済みのページ数）を登録できる。
【００６０】
第１実施形態では、第１の論理物理変換テーブル１３１の全論理ブロックに対して追加フラグを用意していたが、第２実施形態では並列に書き込むストリームデータの数だけの論理ブロックアドレスをストリーム管理テーブル１５０に記憶するようにしている。従って、並列に書き込むストリームデータの数が少ない場合には、アドレス管理部１０６が使用するメモリを削減することができる。
更に、ストリーム管理テーブル１５０に第１のブロックの書き込み状態を保持することにより、不揮発性記憶装置１００による書き込み処理において、図１４のステップＳ３０８では、第１のブロックへの追記の可否の判定を不揮発性メモリ１２０へのアクセスなし行うことができ、高速化が図れる。
＜２．２．アクセス装置２００による論理空間の管理＞
不揮発性記憶装置１００が提供する論理空間をアクセス装置２００が管理する方法は第１実施形態と同様である。
【００６１】
＜２．２．１．コマンドフォーマット＞
「ストリーム書き込み準備コマンド」のフォーマットは、図２４に示すように、ストリーム番号３１０を含むことにより、アクセス装置２００がストリーム番号３１０を指定できるようにする。それ以外のフォーマットは図１１に示す第１実施形態と同様である。
＜２．３．不揮発性記憶装置１００の動作＞
本実施形態に係る不揮発性記憶装置１００の動作は、以下の点において第１実施形態と異なる。
＜２．３．１．ストリーム書き込み準備処理＞
メモリコントローラ１１０がストリーム書き込み準備コマンドを受信した場合の処理（図１３）においては、本実施形態は第１実施形態と次の点において異なる。
【００６２】
ステップＳ２０６において、追記フラグをＯＮにする代わりに、ストリーム管理テーブル１５０に論理ブロックアドレスを登録する。登録先のストリーム番号は、アーギュメント３０４のストリーム番号３１０で指定された番号とする。
＜２．３．２．書き込み処理＞
また、メモリコントローラ１１０が書き込みコマンド及び付随する書き込みデータを受信した場合の処理（図１４）においては、本実施形態は第１実施形態と次の点において異なる。
ステップＳ３０２では、追記フラグがＯＮか否かを判断する代わりに、ストリーム管理テーブル１５０に該論理ブロックアドレスの登録があるか否かを判断する。
ステップＳ３１１では、追記フラグをＯＦＦにする代わりに、ストリーム管理テーブル１５０から論理ブロックアドレスの登録を削除する。
【００６３】
＜２．３．３．読み出し処理＞
また、メモリコントローラ１１０が読み出しコマンドを受信した場合の処理（図１６）においては、本実施形態は第１実施形態と次の点において異なる。
ステップＳ４０２では、追記フラグがＯＮか否かを判断する代わりに、ストリーム管理テーブル１５０に該論理ブロックアドレスの登録があるか否かを判断する。
上記以外の不揮発性記憶装置１００の動作については、第１実施形態とほぼ同様である。
＜２．４．アクセス装置２００の動作＞
アクセス装置２００は、図１８のステップＳ６０２のストリーム書き込み準備コマンドの発行において、ストリームデータ毎に異なるストリーム番号をストリーム番号３１０として指定する。その他の動作については第１実施形態とほぼ同様である。
【００６４】
＜２．５．第２実施形態の効果＞
以上のように、本実施形態においては、第１実施形態と同様に、アクセス装置２００がブロックの全データをブロックよりもサイズの小さい単位で書き込む場合には、予め、ストリーム書き込み準備コマンドを発行することで該ブロックのアドレスに関する情報を不揮発性記憶装置１００に通知する。これにより、不揮発性記憶装置１００は無用な整理のためのデータコピーを行うことなく、消去ブロックの先頭からストリームデータを書き込むことが可能となる。従って、ある一定の書き込み速度を保ちつつ、ストリームデータ等の大容量のコンテンツデータを記録可能なメモリコントローラ、不揮発性記憶装置、アクセス装置、及び不揮発性記憶システムを提供する貴社ますますご清祥のこととお喜び申し上げます。平素は格別のご高配を賜り、厚くお礼申し上げます。ことができる。特に、本実施形態に係るメモリコントローラ、不揮発性記憶装置、及び不揮発性記憶システムは、大容量化に伴い大ブロック化が進むフラッシュメモリを用いた半導体記録媒体において有効である。
【００６５】
また、本実施形態においては、第１実施形態の効果に加えて、次の効果を有する。本実施形態によれば、並行して書き込むストリームデータの数だけの論理ブロックアドレスをストリーム管理テーブル１５０に記憶するようにしている。従って、並列に書き込むストリームデータの数が少ない場合には、アドレス管理部１０６が使用するメモリを削減することができる。また、ストリーム管理テーブル１５０に第１のブロックの書き込み状態を保持することにより、第１のブロックへの追記の可否の判定を不揮発性メモリ１２０へのアクセスなし行うことができ、高速化が図れる。
（その他実施形態）
（１）
上記実施形態又は下記の実施形態においては、第１及び第２ブロックを空きブロックにする場合、ブロックを消去するとしているが、ブロックを破棄してもよい。ブロックを破棄するとは、論理上、当該ブロックを空のブロックとして管理することを含む。例えば、第１又は第２のブロックを未割り当ての状態として管理することである。この場合、未割り当ての状態であるブロックに残されたデータは消去されていても、新たなデータが書き込まれるまでそのまま残されていても、それ以外の任意のデータ（例えば、一部または全部が元のデータと異なっているデータ）であっても、よい。つまりどのような内容のデータであってもよく、データの状態も正常、異常を問わない。破棄することにより読出し時には任意のデータが読み出されることになる。
【００６６】
（２）
上記第１及び第２実施形態においては、ストリーム書き込み準備コマンド（第１のコマンド）はＡＵ単位の書き込み範囲（第１の書き込み範囲）を識別するＡＵアドレス３０９を含んでいたが、本発明はこれに限定されない。ストリーム書き込み準備コマンドではＡＵアドレスを指定せず、次に受信される書き込みコマンド（第２のコマンド）がＡＵアドレスを含んでいてもよい。つまり、ストリーム書き込み準備コマンドはストリームデータの書き込みを通知するだけとし、その次に受信される書き込みコマンドは、ＡＵアドレスとＲＵアドレス（第２の書き込み範囲の識別情報）とを含むようにしてもよい。
この場合、図２５及び図２６に示すような処理が行われる。
≪ステップＳ１２０１〜Ｓ１２０２≫
まず、図２５に示すように、メモリコントローラ１１０は、アクセス装置２００から「ストリーム書き込み準備コマンド」を受信すると（Ｓ１２０１）、同コマンドを受信したことを示す受信フラグをＯＮにする（Ｓ１２０２）。
【００６７】
≪ステップＳ１３０１〜Ｓ１３０３≫
次に、図２６に示すように、メモリコントローラ１１０は、アクセス装置２００から「書き込みコマンド」を受信すると、アーギュメント３０４から書き込み開始論理アドレス（セクタ単位）を取得し（Ｓ１３０１）、論理ブロックアドレスに変換する。
次いで、メモリコントローラ１１０は、「ストリーム書き込み準備コマンド」の受信フラグがＯＮかどうかを判定する（Ｓ１３０２）。この判定の結果、受信フラグがＯＮである場合は、ストリーム書き込み準備処理（図１３のＳ２０１〜２０６の処理）を行う（Ｓ１３０３）。つまり、受信フラグがＯＮである場合は、受信された「書き込みコマンド」は、図２５の「ストリーム書き込み準備コマンド」の次に受信されたコマンドであり、ＡＵアドレスを含む。したがって、ここでは、メモリコントローラ１１０は、そのＡＵアドレスの値とレジスタ部１０５に設定したＡＵのサイズ情報から、指定されたＡＵに対応する論理ブロックを特定し、指定論理ブロックはアクセス装置２００がこれからストリーム書き込みを行う論理ブロックとして認知される。そして、受信フラグをＯＦＦにする（Ｓ１３０４）。
【００６８】
一方、受信フラグがＯＦＦである場合、図１４のステップＳ３０２〜３１２の処理を行う（Ｓ１３０５）。つまり、受信フラグがＯＦＦである場合、ストリーム書き込みを行う論理ブロックはすでに特定されているため、通常のＲＵ単位の書き込み処理が行われる。
以上の構成及び処理によれば、メモリコントローラ１１０は、ストリーム書き込み準備コマンドの受信時には論理ブロックの消去を行わす、書き込みコマンドが発生した時点で論理ブロックの消去を行うようにできる。これにより、ストリーム書き込み準備コマンド発行後にストリーム書き込み処理が中止された場合に、ストリーム書き込み準備コマンドで指定したＡＵのデータを保持することができる。
なお、上記実施形態において、ストリーム書き込み準備コマンドはストリーム番号を含み、第２実施形態と同様に処理を行ってもよい。
【００６９】
（３）
上記実施形態におけるコマンドフォーマットは一例である。適用する不揮発性記憶システムに応じて、コマンドフォーマットを変更したり、１つのコマンドを複数のコマンドに分割したり、複数のコマンドを１つに結合したりすること等が考えられるが、コマンドフォーマットに依存せず、同様の効果が期待できる。
（４）
上記実施形態において、ＡＵを論理ブロックサイズと同じとしたが、１つのＡＵを複数ブロックで構成してもよい。例えば、並列書込みが可能なブロックを組としたスーパーブロックをＡＵとし、論理アドレス管理テーブル等もスーパーブロック単位で管理してもよい。これにより、より高速な不揮発性記憶装置等を提供できる。
【００７０】
（５）
上記実施形態においては、図１３に示すストリーム書き込み準備コマンド受信時の処理であるステップＳ２０３やステップＳ２０５で、書き込み済みのデータを消去するものとして説明したが、ステップＳ２０３やステップＳ２０５の処理ではデータを消去する予約処理だけを行い、ＡＵへの書き込みコマンドが発生した時点でデータ消去を行ってもよい。これにより、ストリーム書き込み準備コマンド発行後にストリーム書き込み処理が中止された場合に、ストリーム書き込み準備コマンドで指定したＡＵのデータを保持することができる。
（６）
上記実施形態において、図１４のステップＳ３１２の異常系処理としてエラーを示すレスポンスを発行して処理を終了しているが、書き込みを継続するための処理として、次のような変形例も考えられる。
【００７１】
（変形例１）
該第１のブロックの未書込みページに全ビット０または全ビット１等のダミーデータを書き込んで該第１のブロックへの書込みを完結させてから追記フラグをＯＦＦとした後、ステップＳ３０２の処理に戻る。これにより、一時的に書き込み速度は低下するものの、書き込み済みのデータは保持することができる。
（変形例２）
該第１のブロックを消去し、別の空きブロックを消去して第１のブロックに割り当てて、書き込みを行う。これにより、書き込み済みのデータは消去されるが、一時的に書き込み速度が著しく低下することを回避できる。
（７）
上記第２実施形態において、ストリーム管理テーブル１５０が管理できるストリームデータの数の上限を４個としたが、これに限定されるものではなく、任意の個数での設計が可能である。
【００７２】
なお、本発明は上記の実施形態に限定されるべきでなく、本発明の趣旨を逸脱しない範囲で実施変更することができる。例えば、フローチャートで示した各処理はその順序は上述したものに限定されるべきでなく、本発明の趣旨を逸脱しない範囲で変更することができる。
【産業上の利用可能性】
【００７３】
本発明は、半導体メモリカードはいうまでもなく、半導体メモリカード等の不揮発性記憶装置を使用した静止画記録再生装置や動画記録再生装置、あるいは携帯電話においても有用である。
【符号の説明】
【００７４】
１      不揮発性記憶システム
１００  不揮発性記憶装置
１０１  ホストインターフェース（インターフェース部）
１０２  バッファ
１０３  読み書き制御部
１０４  ＣＰＵ
１０５  レジスタ部
１０６  アドレス管理部
１１０  メモリコントローラ
１２０  不揮発性メモリ
１２１  ブロック
１２２  ページ
１２３  データ格納領域
１２４  管理情報格納領域
１３１  第１の論理物理変換テーブル
１３２  第２の論理物理変換テーブル
１４０  空きブロック管理テーブル
１５０  ストリーム管理テーブル
２００  アクセス装置
２０１  入力制御部
２０２  入力部
２０３  バッファ
２０４  カードインターフェース
２０５  表示部
２０６  表示制御部
２０７  符号化部
２０８  システム制御部
【図１】
2010146767.tif 000003
【図２】
2010146767.tif 000004
【図３】
2010146767.tif 000005
【図４】
2010146767.tif 000006
【図５】
2010146767.tif 000007
【図６】
2010146767.tif 000008
【図７】
2010146767.tif 000009
【図８】
2010146767.tif 000010
【図９】
2010146767.tif 000011
【図１０】
2010146767.tif 000012
【図１１】
2010146767.tif 000013
【図１２】
2010146767.tif 000014
【図１３】
2010146767.tif 000015
【図１４】
2010146767.tif 000016
【図１５】
2010146767.tif 000017
【図１６】
2010146767.tif 000018
【図１７】
2010146767.tif 000019
【図１８】
2010146767.tif 000020
【図１９】
2010146767.tif 000021
【図２０】
2010146767.tif 000022
【図２１】
2010146767.tif 000023
【図２２】
2010146767.tif 000024
【図２３】
2010146767.tif 000025
【図２４】
2010146767.tif 000026
【図２５】
2010146767.tif 000027
【図２６】
2010146767.tif 000028
【手続補正書】
【提出日】平成22年10月7日(2010.10.7)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
不揮発性メモリと、
前記不揮発性メモリへのデータの書き込み及び読み出しを制御するメモリコントローラと、
を備える、不揮発性記憶装置であって、
前記メモリコントローラは、
データを書き込むための第１の書き込み範囲を識別する第１のコマンドと、前記第１の書き込み範囲の一部である第２の書き込み範囲を識別し前記第２の書き込み範囲へのデータの書き込みを指示する第２のコマンドと、を受信するインターフェース部と、
前記不揮発性メモリへのデータの書き込み前に、前記第１のコマンドに基づいて、前記第１の書き込み範囲に対してデータを書き込むための新たなブロックを選定するアドレス管理部と、
前記第２のコマンドに応じて、前記新たなブロックにデータを記録する読み書き制御部と、
有する、
不揮発性記憶装置。
【請求項２】
不揮発性メモリと、
前記不揮発性メモリへのデータの書き込み及び読み出しを制御するメモリコントローラと、
を備える、不揮発性記憶装置であって、
前記メモリコントローラは、
データの書き込みを通知する第１のコマンドと、前記データの書き込みを指示する第２のコマンドと、を受信するインターフェース部と、
前記不揮発性メモリへの前記データの書き込み前に、前記インターフェース部により第１のコマンドの次に受信される第２のコマンドに基づいて、前記データを書き込むための新たなブロックを選定するアドレス管理部と、
前記インターフェース部により受信される第２のコマンドに応じて、前記新たなブロックに前記データを記録する読み書き制御部と、
有し、
前記インターフェース部により第１のコマンドの次に受信される前記第２のコマンドは、前記データを書き込むための第１の書き込み範囲を識別する情報と、前記第１の書き込み範囲の一部である第２の書き込み範囲を識別する情報とを含み、前記第２の書き込み範囲へのデータの書き込みを指示する、
不揮発性記憶装置。
【請求項３】
前記アドレス管理部は、前記新たなブロックを選定する前に、
前記第１の書き込み範囲に対し選定されている一以上のブロックがあるかどうかを判断し、
前記一以上のブロックがあると判断した場合は、前記一以上のブロックを破棄する、
請求項１又は２に記載の不揮発性記憶装置。
【請求項４】
前記アドレス管理部は、前記新たなブロックを選定する前に、
前記第１の書き込み範囲に対し選定されている一以上のブロックがあるかどうかを判断し、
前記一以上のブロックがあると判断した場合は、前記一以上のブロックを消去する、
請求項１又は２に記載の不揮発性記憶装置。
【請求項５】
前記第１の書き込み範囲は、前記第２の書き込み範囲の整数倍である、
請求項１又は２に記載の不揮発性記憶装置。
【請求項６】
前記第１のコマンドは、前記第１の書き込み範囲を識別する第１の識別情報を含む、
請求項１に記載の不揮発性記憶装置。
【請求項７】
前記第１のコマンドは、ストリームデータを識別する第２の識別情報を含む、
請求項１又は２に記載の不揮発性記憶装置。
【請求項８】
前記アドレス管理部は、前記第２の識別情報毎に、前記新たなブロックを選定する、
請求項７に記載の不揮発性記憶装置。
【請求項９】
前記アドレス管理部は、複数の前記第２の識別情報を保持し、
前記読み書き制御部は、前記複数の第２の識別情報に対応する複数の前記新たなブロックに、並行してデータを記録する、
請求項８に記載の不揮発性記憶装置。
【請求項１０】
不揮発性記憶装置へのデータの書き込み及び読み出しを制御するアクセス装置あって、
データを書き込むための第１の書き込み範囲を識別する情報を含む第１のコマンドを前記不揮発性記憶装置に送信し、
前記第１のコマンドの送信後、前記第１の書き込み範囲の一部である第２の書き込み範囲を識別する情報を含み前記第２の書き込み範囲へのデータの書き込みを指示する第２のコマンドを、複数回、前記不揮発性記憶装置に送信する、
アクセス装置。
【請求項１１】
不揮発性記憶装置へのデータの書き込み及び読み出しを制御するアクセス装置あって、
データの書き込みを通知する第１のコマンドを前記不揮発性記憶装置に送信し、
前記第１のコマンドの送信後、それぞれが前記データの書き込みを指示する第２のコマンドを、複数回、前記不揮発性記憶装置に送信し、
前記第１のコマンドの次に送信される第２のコマンドは、前記データを書き込むための第１の書き込み範囲を識別する情報と、前記第１の書き込み範囲の一部である第２の書き込み範囲を識別する情報とを含み、前記第２の書き込み範囲へのデータの書き込みを指示する、
アクセス装置。
【請求項１２】
請求項１〜９のいずれか１項に記載の不揮発性記憶装置と、
請求項１０又は１１に記載のアクセス装置と、
を備える、
不揮発性記憶システム。
【請求項１３】
不揮発性メモリへのデータの書き込み及び読み出しを制御するメモリコントローラであって、
データを書き込むための第１の書き込み範囲を識別する第１のコマンドと、前記第１の書き込み範囲の一部である第２の書き込み範囲を識別し前記第２の書き込み範囲へのデータの書き込みを指示する第２のコマンドと、を受信するインターフェース部と、
前記不揮発性メモリへのデータの書き込み前に、前記第１のコマンドに基づいて、前記第１の書き込み範囲に対してデータを書き込むための新たなブロックを選定するアドレス管理部と、
前記第２のコマンドに応じて、前記新たなブロックにデータを記録する読み書き制御部と、
備える、
メモリコントローラ。
【請求項１４】
不揮発性メモリへのデータの書き込み及び読み出しを制御するメモリコントローラであって、
データの書き込みを通知する第１のコマンドと、前記データの書き込みを指示する第２のコマンドと、を受信するインターフェース部と、
前記不揮発性メモリへのデータの書き込み前に、前記インターフェース部により第１のコマンドの次に受信される第２のコマンドに基づいて、前記データを書き込むための新たなブロックを選定するアドレス管理部と、
前記インターフェース部により受信される第２のコマンドに応じて、前記新たなブロックにデータを記録する読み書き制御部と、
有し、
前記インターフェース部により第１のコマンドの次に受信される前記第２のコマンドは、前記データを書き込むための第１の書き込み範囲を識別する情報と、前記第１の書き込み範囲の一部である第２の書き込み範囲を識別する情報とを含み、第２の書き込み範囲へのデータの書き込みを指示する、
メモリコントローラ。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、不揮発性メモリと不揮発性メモリを制御するメモリコントローラとを備えた半導体メモリカード等の不揮発性記憶装置、不揮発性記憶装置にアクセスするアクセス装置、不揮発性記憶装置とアクセス装置とを含む不揮発性記憶システム、及びメモリコントローラに関する。
【背景技術】
【０００２】
書き換え可能な不揮発性メモリを備える不揮発性記憶装置は、半導体メモリカードを中心にその需要が広まっている。半導体メモリカードは、光ディスクやテープメディア等と比較して高価格なものではある。しかし半導体メモリカードは、小型・軽量・耐震性・取り扱いの簡便さ等のメリットが大きいので、デジタルスチルカメラや携帯電話等、ポータブル機器の記録媒体としてその需要が広まっており、最近では民生用動画記録機器や放送局向けのプロ用動画記録機器の記録媒体としても利用されるようになってきた。加えて、ポータブル機器だけではなくデジタルテレビやＤＶＤレコーダ等の据え置き機器にも半導体メモリカード用のスロットが標準搭載されている。
この半導体メモリカードは、不揮発性の主記憶メモリとしてフラッシュメモリを備え、それを制御するメモリコントローラを有している。メモリコントローラは、デジタルスチルカメラ本体等、アクセス装置からのデータの読み書き指示に応じて、フラッシュメモリに対するデータの読み書き制御を行うものである。
【０００３】
近年、半導体メモリカードに格納する静止画や動画等のＡＶコンテンツの高品質化、すなわち１コンテンツあたりのデータサイズの大容量化に対応するために、半導体メモリカードに使用するフラッシュメモリの大容量化のニーズが高まっている。それに伴い、フラッシュメモリを構成するブロック（データ消去単位）のサイズが増大している。
一方、アクセス装置は半導体メモリカードの記憶領域の管理をファイルシステムによって行うが、記録領域をできるだけ無駄なく使用するためにファイルシステムによる管理単位（クラスタ）は前記ブロックのサイズよりも小さいのが一般的である。そのため、１つのクラスタの書き換えで１つのブロック全体の書き換えを行うとデータ書き込み速度が著しく悪化する。そこで、メモリコントローラで、ブロック全体の書き換えが頻繁に発生するのを防ぎ、データ書き込み速度の低下を防止するものが知られている（例えば、特許文献１参照）。
【０００４】
この従来技術では、データ消去単位である複数のブロックを１次ブロック群と２次ブロック群と予備ブロック群とに分け、前記１次ブロック群に属する１次ブロックへのデータ書き込み要求に対して、１次ブロックが完全に書き込み済みで追記できない場合に、前記２次ブロック群に属する２次ブロックを前記１次ブロックの拡張ブロックとして使用する。すなわち、前記２次ブロックに１次ブロックのデータの更新部分のデータのみを追記していく。そして、２次ブロックが完全に書き込み済みで追記できなくなった時点で、前記予備ブロック群に属する予備ブロックに１次ブロックと２次ブロックの有効データのみを整理して書き込み、コピー元である前記１次ブロックと前記２次ブロックの内容を消去して、それぞれ予備ブロック群及び２次ブロック群のブロックとする。これにより、ブロック全体の書き換え頻度を低減し、データ書き込み速度の低下を防止する。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００１−１５４９０９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、前記１次ブロックと前記２次ブロックの有効データを整理して予備ブロックに書き込む時点ではデータ書き込み速度が一時的に著しく低下することを避けられない。更に、このデータ書き込み速度が一時的に著しく低下するタイミングは、フラッシュメモリを制御するメモリコントローラは把握することができるが、半導体メモリカードのアクセス装置では把握できない。このことは、ある一定の書き込み速度が継続的に必要である動画記録装置等のアクセス装置にとって、設計が困難となるという点で課題である。
また、アクセス装置が動画等の大容量のコンテンツデータ（以降、ストリームデータと呼ぶ）の書き込みを行う場合、ブロックのサイズを超えるデータ更新が発生する。ブロックの全てのデータを更新する場合であっても、アクセス装置からのデータ書き込みはクラスタ単位で行われるため、メモリコントローラはブロックの全データが更新される予定であることを事前に知ることができない。よって、上記従来のメモリコントローラでは、２次ブロックの途中までデータが書き込まれた状態から、該ブロックの全データを更新するような書き込みが発生すると、メモリコントローラは１次ブロック及び２次ブロックに書き込み済みのデータを（最終的には全てが書き換えられるとは知らずに）保持したまま、２次ブロックの途中から追記を行う。その結果、１ブロック分のデータ書き込みの途中で前記整理の処理が発生し、書き込み速度が一時的に著しく低下することになる。
【０００７】
本発明は、上記課題を解決すべくなされたものであり、その目的は、アクセス装置がブロックの全データをブロックよりもサイズの小さい単位で書き込む場合に、書き込み速度が一時的に著しく低下することのない、不揮発性記憶装置、アクセス装置、不揮発性記憶システム及びメモリコントローラを提供することにある。
【課題を解決するための手段】
【０００８】
第１の発明は、不揮発性メモリと、不揮発性メモリへのデータの書き込み及び読み出しを制御するメモリコントローラと、を備える不揮発性記憶装置であって、メモリコントローラは、インターフェース部と、アドレス管理部と、読み書き制御部と、を有する。
インターフェース部は、データを書き込むための第１の書き込み範囲を識別する第１のコマンドと、第１の書き込み範囲の一部である第２の書き込み範囲を識別し第２の書き込み範囲へのデータの書き込みを指示する第２のコマンドと、を受信する。
アドレス管理部は、不揮発性メモリへのデータの書き込み前に、第１のコマンドに基づいて、第１の書き込み範囲に対してデータを書き込むための新たなブロックを選定する。
読み書き制御部は、第２のコマンドに応じて、新たなブロックにデータを記録する。
ここで、データを書き込むための第１の書き込み範囲とは、例えば、不揮発性記憶装置がアクセス装置に提供するデータ読み書きのための論理空間をブロック単位で分割した範囲である。また、第２の書き込み範囲とは、例えば、アクセス装置によるデータ書き込み単位に相当する範囲である。ブロックとは、例えば、不揮発性メモリ内の物理的なブロックである。
【０００９】
ここでは、不揮発性メモリへのデータの書き込み前に、第１のコマンドに基づいて、第１の書き込み範囲に対してデータを書き込むための新たなブロックを選定し、第２のコマンドに応じてデータを書き込む。これにより、ストリームデータ等の大きなサイズのデータを連続的に書き込む場合であっても、データの書き込み途中にブロックの書き換え処理が発生する頻度を低減でき、データ書き込み速度が一時的に著しく低下することを防ぐことができる。
第２の発明は、不揮発性メモリと、不揮発性メモリへのデータの書き込み及び読み出しを制御するメモリコントローラと、を備える不揮発性記憶装置であって、メモリコントローラは、インターフェース部と、アドレス管理部と、読み書き制御部と、を有する。
インターフェース部は、データの書き込みを通知する第１のコマンドと、同データの書き込みを指示する第２のコマンドと、を受信する。
アドレス管理部は、不揮発性メモリへのデータの書き込み前に、インターフェース部により第１のコマンドの次に受信される第２のコマンドに基づいて、データを書き込むための新たなブロックを選定する。
読み書き制御部は、インターフェース部により受信される第２のコマンドに応じて、新たなブロックにデータを記録する。
インターフェース部により第１のコマンドの次に受信される第２のコマンドは、データを書き込むための第１の書き込み範囲を識別する情報と、第１の書き込み範囲の一部である第２の書き込み範囲を識別する情報とを含み、第２の書き込み範囲へのデータの書き込みを指示する。
ここでは、実際にデータの書き込みが指示される第２のコマンドに基づいて、新たなブロックを選定されるため、第1コマンドによる大きなデータの書き込み処理が中止された場合であっても、第２コマンドが受信されるまではデータは破棄等されずに保持することができる。
第３の発明は、第１又は第２の発明であって、アドレス管理部は、新たなブロックを選定する前に、第１の書き込み範囲に対し選定されている一以上のブロックがあるかどうかを判断し、一以上のブロックがあると判断した場合は、一以上のブロックを破棄する。
ここで、ブロックを破棄するとは、例えば、第１の書き込み範囲に既に割り当てられたブロックを未割り当ての状態にし、論理上空のブロックとして管理することを含む。この場合、未割り当ての状態であるブロックに残されたデータは消去されてもよいし、新たなデータが書き込まれるまでそのまま残されていてもよい。つまり、どのような内容のデータであってもよく、データの状態も正常、異常を問わない。
第４の発明は、第１又は第２の発明であって、アドレス管理部は、新たなブロックを選定する前に、第１の書き込み範囲に対し選定されている一以上のブロックがあるかどうかを判断し、一以上のブロックがあると判断した場合は、一以上のブロックを消去する。
ここで、ブロックを消去するとは、例えば、当該ブロックを、全ビット０または全ビット１等のダミーデータが読み出されるような状態にすることをいう。
【００１０】
ここでは、新たなブロックが選定される前に、すでに選定されているブロックがあるかどうかを判断し、その判断結果に応じてブロックを破棄又は消去するため、新たなブロックの選定をより確実に行うことができる。
第５の発明は、第１又は第２の発明であって第１の書き込み範囲は、第２の書き込み範囲の整数倍である。
第６の発明は、第１の発明であって、第１のコマンドは、第１の書き込み範囲を識別する第１の識別情報を含む。
ここで、識別情報とは、例えば、第１の書き込み範囲を特定するアドレス情報である。
第７の発明は、第１又は第２の発明であって、第１のコマンドは、ストリームデータを識別する第２の識別情報を含む。
【００１１】
第８の発明は、第７の発明であって、アドレス管理部は、第２の識別情報毎に、新たなブロックを選定する。
ここでは、より大きな書き込み範囲を基準にして新たなブロックの選定を行うため、管理するアドレスの情報量等を削減することができ、メモリ資源を節約できる。
第９の発明は、第８の発明であって、アドレス管理部は、複数の第２の識別情報を保持し、読み書き制御部は、複数の第２の識別情報に対応する複数の新たなブロックに、並行してデータを記録する。
ここでは、並行して送信される複数の大容量のデータの書き込み制御を高速且つ効率的に行うことができる。
第１０の発明は、不揮発性記憶装置へのデータの書き込み及び読み出しを制御するアクセス装置ある。このアクセス装置は、データを書き込むための第１の書き込み範囲を識別する情報を含む第１のコマンドを不揮発性記憶装置に送信し、第１のコマンドの送信後、第１の書き込み範囲の一部である第２の書き込み範囲を識別する情報を含み第２の書き込み範囲へのデータの書き込みを指示する第２のコマンドを、複数回、不揮発性記憶装置に送信する。
【００１２】
ここでは、第１の書き込み範囲を識別する情報を含む第１のコマンドの送信後、第１の書き込み範囲の一部である第２の書き込み範囲を識別する情報を含む第２のコマンドを、複数回、不揮発性記憶装置に送信する。
これにより、ストリームデータ等の大きなサイズのデータを連続的に書き込む場合であっても、不揮発性記憶装置側においてデータの書き込み途中にブロックの書き換え処理が発生する頻度を低減でき、データ書き込み速度が一時的に著しく低下することを防ぐことができる。
第１１の発明は、不揮発性記憶装置へのデータの書き込み及び読み出しを制御するアクセス装置ある。このアクセス装置は、データの書き込みを通知する第１のコマンドを不揮発性記憶装置に送信し、第１のコマンドの送信後、それぞれがデータの書き込みを指示する第２のコマンドを、複数回、不揮発性記憶装置に送信する。第１のコマンドの次に送信される第２のコマンドは、データを書き込むための第１の書き込み範囲を識別する情報と、第１の書き込み範囲の一部である第２の書き込み範囲を識別する情報とを含み、第２の書き込み範囲へのデータの書き込みを指示する。
第１２の発明は、第１の発明〜第９の発明のいずれか１つの不揮発性記憶装置と、第１０又は第１１発明のアクセス装置と、を備える。
第１３の発明は、不揮発性メモリへのデータの書き込み及び読み出しを制御するメモリコントローラであって、インターフェース部と、アドレス管理部と、読み書き制御部と、備える。
インターフェース部は、データを書き込むための第１の書き込み範囲を識別する第１のコマンドと、第１の書き込み範囲の一部である第２の書き込み範囲を識別し第２の書き込み範囲へのデータの書き込みを指示する第２のコマンドと、を受信する。
【００１３】
アドレス管理部は、不揮発性メモリへのデータの書き込み前に、第１のコマンドに基づいて、第１の書き込み範囲に対してデータを書き込むための新たなブロックを選定する。
読み書き制御部は、第２のコマンドに応じて、新たなブロックにデータを記録する。
第１４の発明は、不揮発性メモリへのデータの書き込み及び読み出しを制御するメモリコントローラであって、インターフェース部と、アドレス管理部と、読み書き制御部と、備える。
インターフェース部は、データの書き込みを通知する第１のコマンドと、データの書き込みを指示する第２のコマンドと、を受信する。
アドレス管理部は、不揮発性メモリへのデータの書き込み前に、インターフェース部により第１のコマンドの次に受信される第２のコマンドに基づいて、データを書き込むための新たなブロックを選定する。
読み書き制御部は、インターフェース部により受信される第２のコマンドに応じて、新たなブロックにデータを記録する。
インターフェース部により第１のコマンドの次に受信される第２のコマンドは、データを書き込むための第１の書き込み範囲を識別する情報と、第１の書き込み範囲の一部である第２の書き込み範囲を識別する情報とを含み、第２の書き込み範囲へのデータの書き込みを指示する。
【発明の効果】
【００１４】
本発明によれば、アクセス装置がブロックの全データをブロックよりもサイズの小さい単位で書き込んだ場合に、書き込み速度が一時的に著しく低下することを回避することが可能となる。
従って、ある一定の書き込み速度を保ちつつ、ストリームデータ等の大容量のコンテンツデータを記録可能な不揮発性記憶装置、アクセス装置、不揮発性記憶システム及びメモリコントローラを提供することができる。
【図面の簡単な説明】
【００１５】
【図１】本発明の第１実施形態における不揮発性記憶システムを示すブロック図
【図２】フラッシュメモリとブロックの関係を示す図
【図３】ブロックとページの関係を示す図
【図４】ページの構成を示す図
【図５】第１実施形態における第１の論理物理変換テーブルを示す図
【図６】第１実施形態における第２の論理物理変換テーブルを示す図
【図７】第１実施形態における空きブロック管理テーブルを示す図
【図８】ファイルシステムによる論理空間の管理方法を示す図
【図９】ＡＵとＲＵとクラスタの関係を示す図
【図１０】第１実施形態におけるコマンドフォーマットを示す図
【図１１】第１実施形態におけるストリーム書き込み準備コマンドのフォーマットを示す図
【図１２】第１実施形態の不揮発性記憶装置による初期化コマンド受信時の処理を示すフローチャート
【図１３】第１実施形態の不揮発性記憶装置によるストリーム書き込み準備コマンド受信時の処理を示すフローチャート
【図１４】第１実施形態の不揮発性記憶装置による書き込みコマンド及び付随する書き込みデータ受信時の処理を示すフローチャート
【図１５】第１実施形態における第２のブロックの準備処理の前後の状態例を示す図
【図１６】第１実施形態の不揮発性記憶装置による読み出しコマンド受信時の処理を示すフローチャート
【図１７】第１実施形態のアクセス装置による初期化処理を示すフローチャート
【図１８】第１実施形態のアクセス装置によるストリーム書き込み処理を示すフローチャート
【図１９】第１実施形態の不揮発性記憶システムにおけるストリームデータ書き込み時のコマンド・レスポンス・データの転送シーケンスを示す図
【図２０】第１実施形態のアクセス装置による通常のデータ書き込み処理を示すフローチャート
【図２１】第１実施形態の不揮発性記憶システムにおける通常のデータ書き込み時のコマンド・レスポンス・データの転送シーケンスを示す図
【図２２】第１実施形態のアクセス装置によるデータ読み出し処理を示すフローチャート
【図２３】本発明の第２実施形態におけるストリーム管理テーブルを示す図
【図２４】第２実施形態におけるストリーム書き込み準備コマンドのフォーマットを示す図
【図２５】他の実施形態の不揮発性記憶装置によるストリーム書き込み準備コマンド受信時の処理を示すフローチャート
【図２６】他の実施形態の不揮発性記憶装置による書き込みコマンド及び付随する書き込みデータ受信時の処理を示すフローチャート
【発明を実施するための形態】
【００１６】
以下、本発明の実施形態について添付の図面を参照しながら説明する。
（第１実施形態）
＜１．不揮発性記憶システム１の構成＞
図１は、本発明の第１実施形態における不揮発性記憶システム１の構成を示している。
本実施形態の不揮発性記憶システム１は、不揮発性記憶装置１００と、不揮発性記憶装置１００が装着されるアクセス装置２００とを有する。
＜１．１．アクセス装置２００の構成＞
アクセス装置２００は、入力制御部２０１と、入力部２０２と、バッファ２０３と、カードインターフェース（カードＩＦ）２０４と、表示部２０５と、表示制御部２０６と、符号化部２０７と、システム制御部２０８とを含む。アクセス装置１００は、例えば、ビデオカメラ等の動画記録装置である。
【００１７】
入力部２０２は、動画等のストリームデータが入力される部分であり、入力制御部２０１によって制御される。
バッファ２０３は、入力部２０２から入力されたストリームデータを一時的に格納する部分であり、ＲＡＭ等で構成される。
カードＩＦ２０４は、不揮発性記憶装置１００にアクセスし、データの読み書きを行う部分である。
表示部２０５は、不揮発性記憶システム１に関する情報を表示する部分であり、表示制御部２０６によって制御される。
符号化部２０７は、バッファ２０３に格納されたストリームデータを符号化する部分である。
【００１８】
システム制御部２０８は、内部にプログラム用のＲＯＭや作業用のＲＡＭを含み、アクセス装置２００全体を制御するものである。
入力部２０２から入力されたストリームデータは一時的にバッファ２０３に格納され、符号化部２０７によって符号化された後、カードＩＦ２０４を介して不揮発性記憶装置１００に書き込まれる。
＜１．２．不揮発性記憶装置１００の構成＞
不揮発性記憶装置１００は、メモリコントローラ１１０と、フラッシュメモリ群である不揮発性メモリ１２０とを含む。
＜１．２．１．メモリコントローラ１１０＞
メモリコントローラ１１０は、アクセス装置２００との通信を行うホストインターフェース（ホストＩＦ）１０１と、バッファ１０２と、読み書き制御部１０３と、ＣＰＵ１０４と、レジスタ部１０５と、アドレス管理部１０６とを含む。
【００１９】
バッファ１０２は、ＲＡＭ等で構成され、アクセス装置２００から転送されたデータ、あるいは不揮発性メモリ１２０から読み出されたデータを一時的に保持するものである。バッファ１０２は、アクセス装置２００とメモリコントローラ１１０間のデータ転送と、メモリコントローラ１１０と不揮発性メモリ１２０間のデータ転送の単位やタイミングの違いを吸収するのに利用される。
読み書き制御部１０３は、アドレス管理部１０６が指定した物理アドレスに基づいてバッファ１０２に一時的に保持されたデータを不揮発性メモリ１２０に書き込む。更に、読み書き制御部１０３は、不揮発性メモリ１２０からデータを読み出し、該データを一時的にバッファ１０２に保持する。
ＣＰＵ１０４は、内部にプログラム用ＲＯＭや作業用のＲＡＭ等を含み、メモリコントローラ１１０全体を制御するものである。
【００２０】
レジスタ部１０５は、不揮発性記憶装置１００に関する各種のパラメータ情報を保持する部分である。
アドレス管理部１０６は、アクセス装置２００のアクセスに伴って転送された論理アドレスを不揮発性メモリ１２０内の物理アドレスに変換し、不揮発性メモリ１２０内の記録状態等を管理する部分である。
本実施形態におけるアドレス管理部１０６は、第１の論理物理変換テーブル１３１（図５）と、第２の論理物理変換テーブル１３２（図６）と、空きブロック管理テーブル１４０（図７）とをＲＡＭ上に構築し、使用する。詳細は後述する。
＜１．２．２．不揮発性メモリ１２０＞
図２に示すように、不揮発性メモリ１２０であるフラッシュメモリは複数のブロック１２１から構成される。ブロック１２１はフラッシュメモリにおけるデータ消去単位である。
【００２１】
更に、図３に示すように、各ブロック１２１は複数のページ１２２から構成される。ページ１２２はフラッシュメモリにおける書き込み単位である。ブロック１２１に対する書き込みは常に物理的に先頭のページから順に行われる。
また、図４に示すように、各ページ１２２は、アクセス装置２００から転送されたデータ等を格納するデータ格納領域１２３と、メモリコントローラ１１０が使用する管理情報を格納する管理情報格納領域１２４とを含む。管理情報格納領域１２４には、データ格納領域１２３に格納されたデータのページ単位の論理アドレス情報や、誤り訂正符号等の情報が格納される。
＜１．２．３．アドレス管理部１０６のテーブル＞
アドレス管理部１０６は、ブロック単位で論理アドレスと物理アドレスの対応を管理する第１の論理物理変換テーブル１３１と、第２の論理物理変換テーブル１３２とを含む。
【００２２】
≪第１の論理物理変換テーブル１３１≫
図５は、第１の論理物理変換テーブル１３１の構成例を示す。第１の論理物理変換テーブル１３１には、論理ブロック（不揮発性記憶装置１００がアクセス装置２００に提供するデータ読み書きのための論理空間をブロック単位で分割したもの）と物理ブロック（不揮発性メモリ１２０内の物理的なブロック）の対応を１対１で管理する。以下、第１の論理物理変換テーブル１３１に登録された物理ブロックを第１のブロックと呼ぶ。
本実施形態の特徴として、前記第１の論理物理変換テーブル１３１は、追記フラグを含む。追記フラグは、第１のブロックへの追記の可否に関する情報をＯＮ／ＯＦＦの２値で設定する。追記フラグがＯＦＦの場合とは、第１のブロックの書き込みが完結している場合や、第１のブロックが未だ割り当てられていない場合等である。追記フラグがＯＮの場合とは、第１のブロックに未書き込みのページが存在する場合である。
【００２３】
≪第２の論理物理変換テーブル１３２≫
図６は、第２の論理物理変換テーブル１３２の構成例を示す。第２の論理物理変換テーブル１３２では、特定の論理ブロックに対して、前記第１のブロックとは別の物理ブロックを割り当てる。以下、第２の論理物理変換テーブル１３２に登録された物理ブロックを第２のブロックと呼ぶ。
前記第２のブロックは、前記第１のブロックに書き込まれた１ブロック分のデータのうち、一部分のみを更新する場合に、更新データを書き込むためのブロックである。更新の最小単位は、ブロックへの書き込み単位であるページとなる。本実施形態では、第１の論理物理変換テーブル１３１において第１のブロックの追記フラグがＯＦＦ（すなわち追記不可）の場合にのみ、第２の論理物理変換テーブル１３２において第２のブロックを登録できるものとする。
【００２４】
図６の例では最大４つの論理ブロックに対して、第２のブロックの割り当てを可能としている。この第２のブロックが割り当て可能な論理ブロックの数は、不揮発性記憶装置１００の設計によって任意の値に設定してよい。第２のブロックの数を増加すると、ランダムな論理アドレスへの書き込みが発生した場合に、第２のブロックに追記できる確率が増加し、より効果的に書き込み速度の低下を防止できるというメリットがある。しかし、第１のブロックとは別のブロックの割り当てが必要となるので、不揮発性記憶装置１００がアクセス装置２００に提供できる論理空間を一定に保つためには、無制限に増加することはできない。
また、第２の論理物理変換テーブル１３２は、第２のブロックの書き込み状態を管理するための情報を含んでいてもよい。例えば、図６に示すように、第２のブロックにおける書き込み済みのページ数や、書き込んだデータの論理アドレスが連続なのかランダムなのかといった情報を含んでいてもよい。これらの情報は、第２のブロックの書き込み済みのページの管理情報格納領域１２２を読み出すことによっても取得もしくは作成することができるが、ＲＡＭ上に構成される第２の論理物理変換テーブル１３２の一部として保持することで、書き込み速度の高速化が期待できる。
【００２５】
更に、アドレス管理部１０６は、各物理ブロックの使用状況を管理するための空きブロック管理テーブル１４０を備えている。
図７は、空きブロック管理テーブル１４０の構成例を示す。空きブロック管理テーブル１４０は、不揮発性メモリ１２０内の全物理ブロックがそれぞれ使用中なのか空きなのかという情報を保持する。「空き」とは、有効なデータが登録されておらず、新しいデータの格納用として使用することができる物理ブロックであることを意味する。一方、「使用中」とは、それ以外の物理ブロックであり、前記第１の論理物理変換テーブル１３１に登録された第１のブロックや、前記第２の論理物理変換テーブル１３２に登録された第２のブロックや、メモリコントローラ１１０が内部的に使用するシステム情報を格納したブロック（以降、システム情報ブロックと呼ぶ）や、データ書き込みができない不良ブロック等が相当する。
【００２６】
＜１．３．アクセス装置２００による論理空間の管理＞
＜１．３．１．論理空間の管理の概要＞
次に、不揮発性記憶装置１００が提供する論理空間をアクセス装置２００が管理する方法について述べる。
本実施形態におけるアクセス装置２００は、前記論理空間をＦＡＴファイルシステムによって管理する。ＦＡＴファイルシステムには、ＦＡＴ１２、ＦＡＴ１６、ＦＡＴ３２、ｅｘＦＡＴ等の様々なバリエーションが存在するが、いずれも図８に示すように、ファイルシステムの管理情報を格納するファイルシステム管理情報格納領域と、ストリームデータ等のユーザーデータを格納するユーザーデータ領域とから構成される。ユーザーデータ領域は、複数のクラスタと呼ばれる単位に分割されて管理される。クラスタのサイズを超えるデータは複数のクラスタに分割して格納され、クラスタ間のつながりを表すリンク情報は前記ファイルシステム管理情報領域内のＦＡＴテーブルとして管理される。
【００２７】
従って、アクセス装置２００によるデータ書き込みの基本単位はクラスタとなる。但し、ストリームデータの書き込みにおいては、論理アドレスが連続する複数のクラスタから構成されるＲＵ（Ｒｅｃｏｒｄｉｎｇ  Ｕｎｉｔ）単位（図９）を基本単位とする。これにより、サイズの大きいストリームデータの書き込みにおいて、不揮発性記憶装置１００への書き込みコマンドを繰り返し発行することに伴うオーバーヘッドを削減することができる。
更に、アクセス装置２００が指定するストリームデータの書き込みアドレスは、前記ＲＵの整数倍のＡＵ（Ａｌｌｏｃａｔｉｏｎ  Ｕｎｉｔ）単位（図９）内で、先頭から順にインクリメントさせる。ＡＵを論理ブロックの整数倍のサイズとすることにより、ストリームデータが論理ブロックの先頭から連続的に書き込まれるため、不揮発性記憶装置１００のメモリコントローラ１１０はストリームデータを不揮発性メモリ１２０に効率的に書き込むことができる。なお、本実施形態ではＡＵを論理ブロックの１倍のサイズ（すなわち同じサイズ）として説明する。
【００２８】
図９にＡＵとＲＵとクラスタの関係を示す。
＜１．３．２．コマンドフォーマット＞
不揮発性記憶装置１００は、アクセス装置２００から転送される少なくとも４つのコマンドを処理する。
「書き込みコマンド」（第２のコマンド）は、データを不揮発性メモリ１２０に書き込むためのコマンドである。「読み出しコマンド」は、不揮発性メモリ１２０に格納されたデータを読み出してアクセス装置２００に転送するためのコマンドである。「初期化コマンド」は、不揮発性記憶装置１００への読み書きを開始するための初期化処理をするためのコマンドである。「ストリーム書き込み制御コマンド」は、ストリームデータを書き込むときの制御を行うためのコマンドである。
【００２９】
図１０にこれらのコマンドのフォーマット例を示す。図１０の例において、コマンド３００は、コマンドの開始を示すスタートビット３０１（１ビット）、コマンドであることを示すコマンドフラグ３０２（１ビット）、コマンドの種別を示すコマンドインデックス３０３（６ビット）、コマンドの種別に応じたパラメータを設定するアーギュメント３０４（３２ビット）、コマンド転送時のエラーを検出するためのＣＲＣ３０５（７ビット）、コマンドの終端を示すエンドビット３０６（１ビット）を含み、計４８ビット（すなわち、６バイト）で構成される。
前記書き込みコマンドの場合には、アーギュメント３０４に書き込み開始論理アドレスがセクタ単位（５１２バイト単位）で格納される。
前記読み出しコマンドの場合には、アーギュメント３０４に読み出し開始論理アドレスがセクタ単位（５１２バイト単位）で格納される。
【００３０】
前記ストリーム書き込み制御コマンドは、図１１に示すように、アーギュメント３０４内にサブコード３０７（４ビット）を設けることで制御の方法を拡張できるものとし、少なくともストリームデータを書き込むＡＵを指定するためのサブコードである「書き込みＡＵ指定」が定義されているものとする。
以下、サブコードに「書き込みＡＵ指定」が格納されたストリーム書き込み制御コマンドを「ストリーム書き込み準備コマンド」（第１のコマンド）と呼称する。
図１１にストリーム書き込み準備コマンドのフォーマット詳細例を示す。ストリーム書き込み準備コマンドのアーギュメント３０４は、「書き込みＡＵ指定」を示すサブコード３０７（４ビット）と、将来拡張用の予約ビット３０８（１ビット）と、ストリームを書き込むＡＵのアドレスであるＡＵアドレス３０９（２７ビット）とから構成される。
【００３１】
書き込みコマンドや読み出しコマンドでは、論理アドレスをセクタ単位で３２ビットで表現できるので最大２ＴＢ（テラバイト）の論理空間を管理できる。一方、ＡＵアドレスは２７ビットの表現となるが、１つのＡＵのサイズが１６ＫＢ以上であれば２ＴＢ以上の論理空間を管理できることになる。
＜１．４．不揮発性記憶装置１００の動作＞
まず、不揮発性記憶装置１００の動作を説明する。
＜１．４．１．初期化処理＞
図１２は、メモリコントローラ１１０による初期化コマンド受信時の処理を示すフローチャートである。
≪ステップＳ１０１〜Ｓ１０３≫
不揮発性記憶装置１００への電源投入後、メモリコントローラ１１０はハードウェアの初期化を行い、コマンドを受信可能な状態となる。その後、アクセス装置２００から前記「初期化コマンド」を受信すると、メモリコントローラ１１０が不揮発性メモリ１２０にアクセスを開始するために必要なハードウェアの初期化処理を行う。
【００３２】
その後、メモリコントローラ１１０は読み書き制御部１０３を介して不揮発性メモリ１２０にアクセスし、不揮発性メモリ１２０に格納されている、アドレス管理のためのシステム情報が格納されたシステム情報ブロックを読み出し、アドレス管理部１０６に第１の論理物理変換テーブル１３１、第２の論理物理変換テーブル１３２、空きブロック管理テーブル１４０等を作成する（Ｓ１０２）。
更に、前記システム情報ブロックやＣＰＵ１０４のＲＯＭに格納された情報を参照して、レジスタ部１０５に各種のパラメータ情報を設定する（Ｓ１０３）。パラメータ情報として、少なくともＡＵのサイズ情報を含むものとする。
＜１．４．２．ストリーム書き込み準備処理＞
図１３は、メモリコントローラ１１０によるストリーム書き込み準備コマンド受信時の処理を示すフローチャートである。
【００３３】
≪ステップＳ２０１〜Ｓ２０６≫
メモリコントローラ１１０は、アクセス装置２００から「ストリーム書き込み準備コマンド」を受信すると、ＡＵアドレス３０９の値とレジスタ部１０５に設定したＡＵのサイズ情報から、指定されたＡＵに対応する論理ブロック（以下、指定論理ブロックと呼ぶ。）を特定する（Ｓ２０１）。指定論理ブロックはアクセス装置２００がこれからストリーム書き込みを行う論理ブロックとして認知される。
その後、アドレス管理部１０６の第２の論理物理変換テーブル１３２を参照し、指定論理ブロックの登録があるかどうかを検索することで、第２のブロックが割り当てられているかを判断する（Ｓ２０２）。
登録があった場合には、第２の論理物理変換テーブル１３２を更新して未登録状態とすることで、第２のブロックを消去する（Ｓ２０３）。
本実施形態において、ブロックを消去するとは、当該ブロックを、全ビット０または全ビット１等のダミーデータが読み出されるような状態にする、つまり当該ブロックにおけるデータを論理上消去した状態にすることをいう。
同第２のブロックは空きブロック管理テーブル１４０において空きブロックとなり再利用されるが、同第２のブロックに書き込まれていたデータは上述のように論理上消去される。
【００３４】
更に、アドレス管理部１０６の第１の論理物理変換テーブル１３１を参照して指定論理ブロックに対応する第１のブロックの物理ブロックアドレスの登録があるかどうかを判断する（Ｓ２０４）。
登録があった場合には、第１の論理物理変換テーブル１３１を更新して第１のブロックを未割り当て（未アロケート）の状態とすることで、第１のブロックを消去する（Ｓ２０５）。消去された第１のブロックは空きブロック管理テーブル１４０において空きブロックとなり再利用されるが、書き込まれていたデータは上記と同様に論理上消去される。
空きブロック管理テーブル１４０を参照して空きブロックを取得してデータを論理上消去した後、第１の論理物理変換テーブル１３１の指定論理ブロックに対する第１のブロックとして消去済みの物理ブロックを登録し、その追記フラグをＯＮに設定する（Ｓ２０６）。
【００３５】
以上の処理によって、ストリーム書き込み準備処理コマンドによって指定されたＡＵに対応する物理ブロックの書き込み済みデータは論理上消去されるとともに、前記ＡＵには消去済みの物理ブロックが割り当てられ、先頭ページからの書き込みが可能な状態となる。
＜１．４．３．書き込み処理＞
図１４は、メモリコントローラ１１０による書き込みコマンド及び付随する書き込みデータ受信時の処理を示すフローチャートである。
≪ステップＳ３０１〜Ｓ３１２≫
メモリコントローラ１１０は、アクセス装置２００から上記「書き込みコマンド」を受信すると、アーギュメント３０４から書き込み開始論理アドレス（セクタ単位）を取得し（Ｓ３０１）、論理ブロックアドレスに変換する。
【００３６】
その後、アドレス管理部１０６の第１の論理物理変換テーブル１３１を参照して、論理ブロック（以下、指定論理ブロックと呼ぶ。）の追記フラグを参照する（Ｓ３０２）。
追記フラグがＯＦＦの場合は、更に第２の論理物理変換テーブル１３２を参照して第２のブロックが割り当てられているかを判断する（Ｓ３０３）。
第２のブロックが割り当てられている場合は、第２の論理物理変換テーブル１３２を参照し、該第２のブロックの書き込み状態を参照することで、アクセス装置２００から転送される書き込みデータを該第２のブロックの未書き込みページに追記できるか否かを判断する（Ｓ３０４）。
ステップＳ３０３で第２のブロックが割り当てられていない場合や、ステップＳ３０４で第２のブロックに追記できないと判断した場合には、アクセス装置２００から転送される書き込みデータを書き込むための第２のブロックを準備するための処理を行う（Ｓ３０５）。このとき、必要に応じて不揮発性メモリ１２０のシステム情報ブロックの更新を行う。
【００３７】
ステップＳ３０５の処理では、まず第２の論理物理変換テーブル１３２の空きエントリを準備する。空きエントリがない場合は、既に第２の論理物理変換テーブル１３２に登録済みの論理ブロックＸの登録を解消することで空きエントリを準備する。
この論理ブロックＸの登録解消の処理を図１５を用いて説明する。まず、空きブロック管理テーブル１４０から空きブロックを取得し、上記と同様にデータを論理上消去する。その後、論理ブロックＸを構成する第１のブロックと第２のブロックに書き込み済みのデータから、１論理ブロック分の有効なデータを前記データ消去済みの空きブロックにコピーする。有効なデータの検索は、第２の論理物理変換テーブル１３２の書き込み状態の情報や、第１のブロックや第２のブロックの書き込み済みページの管理情報格納領域１２２に格納されたページ単位の論理アドレス情報等を参照して行われる。そして、コピー先のブロックを論理ブロックＸの新たな第１のブロックとして第１の論理物理変換テーブル１３１に登録し、追記フラグはＯＦＦとする。これに伴い、コピー元の第１のブロックは第１の論理物理変換テーブル１３１において未割り当てとなるので、空きブロック管理テーブル１４０にて空きブロックとして登録され、再利用される。また、コピー元の第２のブロックは第２の論理物理変換テーブル１３２において未登録とされ、更に空きブロック管理テーブル１４０にて空きブロックとして登録され、再利用する。
以上により、論理ブロックＸの有効データを保持しつつ、第２の論理物理変換テーブル１３２に空きエントリを準備することができる。但し、１論理ブロック分の有効なデータのコピーには比較的長い時間が必要であり、フラッシュメモリの品種にもよるが、例えば２００ミリ秒〜３００ミリ秒を要する。
【００３８】
一方、ステップＳ３０３で第２のブロックが割り当てられていると判断し、更にステップＳ３０４で第２のブロックを追記できると判断した場合は、ステップＳ３０６の処理に進み、アクセス装置２００が転送する書き込みデータを第２のブロックに書き込む（Ｓ３０６）。
書き込みが完了すれば処理を終了し、続きの書き込みデータがある場合には次の論理ブロックに対してステップＳ３０２からの処理を実施する（Ｓ３０７）。
ステップＳ３０２において、アドレス管理部１０６の第１の論理物理変換テーブル１３１を参照して、指定論理ブロックの追記フラグがＯＮの場合は、第１の論理物理変換テーブル１３１に登録された第１のブロックの書き込み済みページの管理情報格納領域１２２に格納されたページ単位の論理アドレス情報等を参照して、アクセス装置２００が転送する書き込みデータを該第１のブロックに追記可能か否かを判断する（Ｓ３０８）。
【００３９】
追記可能であれば該第１のブロックの未書き込みページにアクセス装置２００が転送する書き込みデータを書き込んでいく（Ｓ３０９）。
なお、後述するが、アクセス装置２００が追記フラグＯＮの第１のブロックにストリームデータを書き込む場合は、常に論理アドレスが連続になるように制御するため、ステップＳ３０８の判断は常に追記可能となる。なんらかの異常によって、追記不可と判断された場合には異常系処理（Ｓ３１２）を行って処理を終了する。
ステップＳ３０９の処理後、該第１のブロックの未書き込みページが全て書き込み済みになったかどうかを判断する（Ｓ３１０）。全て書き込み済みになる前に書き込みが完了すれば処理を終了する。
全て書き込み済みになった場合には、第１の論理物理変換テーブル１３１の追記フラグをＯＮからＯＦＦに変更し、必要に応じて不揮発性メモリ１２０のシステム情報ブロックを更新する（Ｓ３１１）。
【００４０】
そして、書き込みが完了すれば処理を終了するが、続きの書き込みデータがある場合には次の論理ブロックに対してステップＳ３０２からの処理を実施する（Ｓ３０７）。
＜１．４．４．読み出し処理＞
図１６は、メモリコントローラ１１０による読み出しコマンド受信時の処理を示すフローチャートである。
≪ステップＳ４０１〜Ｓ４０７≫
メモリコントローラ１１０は、アクセス装置２００から前記「読み出しコマンド」を受信すると、アーギュメント３０４から読み出し開始論理アドレス（セクタ単位）を取得し（Ｓ４０１）、論理ブロックアドレスに変換する。
その後、アドレス管理部１０６の第１の論理物理変換テーブル１３１を参照して、論理ブロックの追記フラグを参照する（Ｓ４０２）。
【００４１】
追記フラグがＯＦＦの場合は、更に第２の論理物理変換テーブル１３２を参照して第２のブロックが割り当てられているかを判断する（Ｓ４０３）。
第２のブロックが割り当てられている場合は、第１の論理物理変換テーブル１３１に登録された第１のブロックと前記第２のブロックから有効なデータを検索して、読み出しデータとしてアクセス装置２００に転送する（Ｓ４０４）。
この有効なデータの検索は、第２の論理物理変換テーブル１３２の書き込み状態の情報や、第１のブロックや第２のブロックの書き込み済みページの管理情報格納領域１２２に格納されたページ単位の論理アドレス情報等を参照して行われる。
一方、ステップＳ４０３で第２のブロックが割り当てられていない場合には、第１のブロックから読み出したデータを読み出しデータとしてアクセス装置２００に転送する（Ｓ４０５）。
【００４２】
ステップＳ４０４及びＳ４０５の処理において、第１のブロックが未割り当てであり、読み出し対象のデータが存在しない場合には、全ビット０または全ビット１等のダミーデータを読み出しデータとして転送する。すなわち、本実施形態では、未割り当ての状態のブロックは、このようにデータが論理上消去された状態として管理されている。
ステップＳ４０２において追記フラグがＯＮの場合は、第１の論理物理変換テーブル１３１に登録された第１のブロックから読み出したデータを読み出しデータとしてアクセス装置２００に転送する（Ｓ４０６）。読み出し対象が未書き込みページに相当する場合には、全ビット０または全ビット１等のダミーデータを読み出しデータとして転送してもよい。
その後、読み出しが完了すれば処理を終了するが、次の論理ブロックに対して読み出しが必要な場合にはステップＳ４０２からの処理を実施する（Ｓ４０７）。
【００４３】
＜１．５．アクセス装置２００の動作＞
次に、アクセス装置２００の動作を説明する。
＜１．５．１．初期化処理＞
図１７は、アクセス装置２００による不揮発性記憶装置１００に関する初期化処理を示すフローチャートである。
≪ステップＳ５０１〜Ｓ５０３≫
アクセス装置２００は、カードＩＦ２０４等のハードウェアを初期化する（Ｓ５０１）。
【００４４】
不揮発性記憶装置１００の装着を検出すると、不揮発性記憶装置１００に電源を投入し、上述した「初期化コマンド」を発行する（Ｓ５０２）。
不揮発性記憶装置１００の初期化が完了すると、アクセス装置２００はカードＩＦ２０４を介して不揮発性記憶装置１００のレジスタ部１０５に格納されたＡＵのサイズ情報等を取得する（Ｓ５０３）。続けて、不揮発性記憶装置１００に格納されたファイルシステムの管理情報等を読み出してファイルシステムによる読み書きの準備を行う。
＜１．５．２．ストリーム書き込み処理＞
図１８は、アクセス装置２００によるストリーム書き込み処理を示すフローチャートである。アクセス装置２００の入力部２０２から入力されたストリームデータはバッファ２０３に一時的に格納され、符号化部２０７で符号化された後、カードＩＦ２０４を介して不揮発性記憶装置１００に書き込まれる。
≪ステップＳ６０１〜Ｓ６０９≫
まず、アクセス装置２００はファイルシステムの管理情報を参照して、ストリームデータを書き込むＡＵを決定する（Ｓ６０１）。本実施形態においてアクセス装置２００は、ストリームデータをＡＵ内の先頭ＲＵから順番にＲＵ単位で書き込んでいく。従って、書き込みＡＵの決定に伴い、書き込みＲＵも自動的に決定される。
【００４５】
次に、アクセス装置２００は、不揮発性記憶装置１００に対し上記「ストリーム書き込み準備コマンド」を発行する（Ｓ６０２）。アーギュメント３０４のＡＵアドレス３０９（図１１）にはステップＳ６０１で決定したＡＵのアドレスを指定する。これにより、不揮発性記憶装置１００では図１３のストリーム書き込み準備処理を行い、該ＡＵには消去済みの物理ブロックである第１のブロックが追記フラグＯＮの状態で割り当てられる。
バッファ２０３にＲＵのサイズ分のストリームデータが準備されているかどうかを判断する（Ｓ６０３）。
準備されている場合は、不揮発性記憶装置１００に上述の「書き込みコマンド」を発行し、バッファ２０３に格納されたＲＵのサイズ分のストリームデータを転送する（Ｓ６０４）。このとき、アーギュメント３０４で指定する書き込み開始論理アドレス（セクタ単位）は、上記「ストリーム書き込み準備コマンド」で指定したＡＵの先頭論理アドレスから順に指定する。これにより、不揮発性記憶装置１００では図１４の書き込み処理を行い、転送されたＲＵサイズのデータを追記フラグＯＮの第１のブロックの先頭から順に追記していく。
【００４６】
ステップＳ６０４の処理の後、アクセス装置２００はシステム制御部２０８の内部のＲＡＭ等に保持しているファイルシステム情報を、ＲＵ書き込み後の状態に更新する（Ｓ６０５）。
ストリームデータをＡＵの最後まで書き込まれたかどうかを判断する（Ｓ６０６）。
ストリームデータをＡＵの最後まで書き込まれていない場合は、ＡＵ内の未書き込みＲＵのうち先頭のＲＵを次の書き込み先に決定し（Ｓ６０７）、ステップＳ６０３の処理に戻る。ＡＵの最後までデータを書き込んだ場合には、次の書き込み先ＡＵを探すためにステップＳ６０１の処理に戻る。
一方、ステップＳ６０３の処理で、バッファ２０３にデータが準備される前である場合には、ストリームデータが終了した場合（Ｓ６０９）には、アクセス装置２００がシステム制御部２０８の内部のＲＡＭ等に保持しているファイルシステム情報を不揮発性記憶装置１００に書き込んで（Ｓ６０９）、ストリーム書き込み処理を終了する。
【００４７】
≪ストリーム書き込み処理の転送シーケンス≫
図１９は、上述したストリーム書き込み処理におけるコマンド・レスポンス・データの転送シーケンス例を示す。
図１９では、アクセス装置２００のカードＩＦ２０４と不揮発性記憶装置１００のホストＩＦ１０１の間で、少なくとも次の５本の信号線を備えている。１つはアクセス装置２００から不揮発性記憶装置１００へのコマンドや、不揮発性記憶装置１００からアクセス装置２００へのコマンドに対するレスポンスを転送する信号線（Ｃ／Ｒ）である。残りの４つは、書き込みや読み出しのデータをアクセス装置２００及び不揮発性記憶装置１００間で並列に転送するための信号線（Ｄ０、Ｄ１、Ｄ２、Ｄ３）である。
図１９において、水平方向は時間軸と表しており、左から右に時間の流れを表している。ストリーム書き込み処理は、最初にストリーム書き込み準備コマンドとそのレスポンスが送受信されて、ストリームデータを書き込むＡＵが共有される。その後、ＲＵ単位で、書き込みコマンド、レスポンス、及び付随する書き込みデータ転送の組が送受信されるのを繰り返すことで、前記ＡＵに対するストリームデータ書き込みが行われる。別のＡＵに書き込む場合には、ストリーム書き込み準備コマンドの送受信からの繰り返しとなる。
【００４８】
なお、図示は省略しているが、ＲＵ単位の書き込みデータ転送が終了したときは、アクセス装置２００側からストップコマンドが送信され、不揮発性記憶装置１００からストップコマンドに対するレスポンスが送信される。
＜１．５．３．通常のデータの書き込み処理＞
図２０は、アクセス装置２００による通常のデータの書き込み処理を示すフローチャートである。本実施形態における通常のデータとはストリームデータ以外のデータ、すなわちファイルシステムの管理情報やストリームデータに付随するメタデータや複数のストリームデータに関連するデータ（例えば、プレイリスト）等の、比較的サイズの小さいデータを指す。これらのデータはアクセス装置２００のシステム制御部２０８のＲＡＭ上等で管理され、カードＩＦ２０４を介して不揮発性記憶装置１００に書き込まれる。
【００４９】
≪ステップＳ７０１〜Ｓ７０５≫
まず、アクセス装置２００は、ファイルシステムの管理情報を参照して、通常のデータを書き込むクラスタを決定する（Ｓ７０１）。
次に、アクセス装置２００は、不揮発性記憶装置１００に上述した「書き込みコマンド」を発行し、システム制御部２０８のＲＡＭ等に格納されたクラスタサイズ分のデータを転送する（Ｓ７０２）。これにより、不揮発性記憶装置１００では図１４の書き込み処理を行い、転送されたクラスタサイズのデータを第２のブロックに書き込む。第２の論理物理変換テーブル１３２（図６）の状態によっては、ステップＳ３０５（図１４）の第２のブロックの準備処理が必要となる。この場合、例えば２００ミリ秒〜３００ミリ秒の待ち時間が発生する場合があるが、今回書き込むクラスタデータ以外のデータについては以前に書き込んだデータが保持される。
【００５０】
ステップＳ７０２の処理の後、アクセス装置２００はシステム制御部２０８の内部のＲＡＭ等に保持しているファイルシステム情報を、クラスタ書き込み後の状態に更新する（Ｓ７０３）。
次のクラスタへの書き込みデータがある場合には（Ｓ７０４）、ステップＳ７０１の処理に戻って書き込みを継続する。
次のクラスタへの書き込みデータがない場合、アクセス装置２００がシステム制御部２０８の内部のＲＡＭ等に保持しているファイルシステム情報を不揮発性記憶装置１００に書き込んで（Ｓ７０５）、通常のデータ書き込み処理を終了する。
≪通常の書き込み処理の転送シーケンス≫
図２１に通常の書き込み処理におけるコマンド・レスポンス・データの転送シーケンス例を示す。図２１において、アクセス装置２００と不揮発性記憶装置１００間の信号線の構成は図１９の場合と同様である。通常のデータ書き込み処理は、クラスタ単位で、書き込みコマンド、レスポンス、及び付随する書き込みデータ転送の組が送受信されるのを繰り返す。なお、図示は省略しているが、クラスタ単位の書き込みデータ転送が終了したときは、アクセス装置２００側からストップコマンドが送信され、不揮発性記憶装置１００からストップコマンドに対するレスポンスが送信される。
【００５１】
＜１．５．４．データ読み出し処理＞
図２２は、アクセス装置２００によるデータ読み出し処理を示すフローチャートである。データの読み出しはストリームデータもストリームデータ以外のデータも同様にクラスタ単位で行われる。
≪ステップＳ８０１〜Ｓ８０３≫
まず、アクセス装置２００は、ファイルシステムの管理情報を参照して、データを読み出すクラスタを決定する（Ｓ８０１）。
次に、アクセス装置２００は、不揮発性記憶装置１００に上述した「読み出しコマンド」を発行し、システム制御部２０８のＲＡＭまたはバッファ２０３等に不揮発性記憶装置１００から受信したデータを格納する（Ｓ８０２）。
【００５２】
アクセス装置２００は、次のクラスタの読み出し要求がある場合には（Ｓ８０３）、ステップＳ８０１の処理に戻って読み出しを継続し、なければ処理を終了する。
＜１．６．第１実施形態の効果＞
本実施形態によれば、アクセス装置２００がブロックの全データをブロックよりもサイズの小さい単位で書き込む場合には、予め、ストリーム書き込み準備コマンドを発行することで、該ブロックのアドレスに関する情報を不揮発性記憶装置１００に通知する。これにより、不揮発性記憶装置１００は無用な整理のためのデータコピーを行うことなく、消去済みのブロックの先頭からストリームデータを一定の速度で書き込むことが可能となる。
また、ストリーム書き込み準備処理（図１３）においては、取得したＡＵアドレスが割り当てられた第１又は第２のブロックがあるかどうかを判断し、割り当てられている場合はブロックを消去し、新たなブロックを割り当てるため、より確実に新たなブロックの割り当てが可能となる。
【００５３】
以上のように、本実施形態によれば、ある一定の書き込み速度を保ちつつ、ストリームデータ等の大容量のコンテンツデータを記録可能なメモリコントローラ、不揮発性記憶装置、アクセス装置、及び不揮発性記憶システムを提供することができる。
（第２実施形態）
＜２．不揮発性記憶システム１の構成＞
本発明の第２実施形態における不揮発性記憶システム１は、第１の論理物理変換テーブル１３１において論理ブロック毎に設けていた追記フラグを有さず、代わりにアドレス管理部１０６にストリーム管理テーブル１５０を備えている。それ以外の構成は第１実施形態のものと同様である。なお、第１実施形態と同様である構成については、同一の符号をもって参照し、詳細な説明は省略する。
【００５４】
＜２．１．ストリーム管理テーブル１５０＞
図２３にストリーム管理テーブル１５０の構成例を示す。
ストリーム管理テーブル１５０は、アクセス装置２００がストリームデータを書き込む論理ブロックのアドレスと、その論理ブロックに対応する第１のブロックの書き込み状態を管理するために用いる。ストリーム管理テーブル１５０に論理ブロックアドレスが登録されていることは、第１実施形態における追記フラグがＯＮに設定されることと等価な扱いとする。
図２３の例では、最大４個のストリームデータに対して、ストリームデータ書き込み先の論理ブロックのアドレス情報と、対応する第１のブロックへの書き込み状態に関する情報（例えば書き込み済みのページ数）を登録できる。
【００５５】
第１実施形態では、第１の論理物理変換テーブル１３１の全論理ブロックに対して追加フラグを用意していたが、第２実施形態では並列に書き込むストリームデータの数だけの論理ブロックアドレスをストリーム管理テーブル１５０に記憶するようにしている。従って、並列に書き込むストリームデータの数が少ない場合には、アドレス管理部１０６が使用するメモリを削減することができる。
更に、ストリーム管理テーブル１５０に第１のブロックの書き込み状態を保持することにより、不揮発性記憶装置１００による書き込み処理において、図１４のステップＳ３０８では、第１のブロックへの追記の可否の判定を不揮発性メモリ１２０へのアクセスなし行うことができ、高速化が図れる。
＜２．２．アクセス装置２００による論理空間の管理＞
不揮発性記憶装置１００が提供する論理空間をアクセス装置２００が管理する方法は第１実施形態と同様である。
【００５６】
＜２．２．１．コマンドフォーマット＞
「ストリーム書き込み準備コマンド」のフォーマットは、図２４に示すように、ストリーム番号３１０を含むことにより、アクセス装置２００がストリーム番号３１０を指定できるようにする。それ以外のフォーマットは図１１に示す第１実施形態と同様である。
＜２．３．不揮発性記憶装置１００の動作＞
本実施形態に係る不揮発性記憶装置１００の動作は、以下の点において第１実施形態と異なる。
＜２．３．１．ストリーム書き込み準備処理＞
メモリコントローラ１１０がストリーム書き込み準備コマンドを受信した場合の処理（図１３）においては、本実施形態は第１実施形態と次の点において異なる。
【００５７】
ステップＳ２０６において、追記フラグをＯＮにする代わりに、ストリーム管理テーブル１５０に論理ブロックアドレスを登録する。登録先のストリーム番号は、アーギュメント３０４のストリーム番号３１０で指定された番号とする。
＜２．３．２．書き込み処理＞
また、メモリコントローラ１１０が書き込みコマンド及び付随する書き込みデータを受信した場合の処理（図１４）においては、本実施形態は第１実施形態と次の点において異なる。
ステップＳ３０２では、追記フラグがＯＮか否かを判断する代わりに、ストリーム管理テーブル１５０に該論理ブロックアドレスの登録があるか否かを判断する。
ステップＳ３１１では、追記フラグをＯＦＦにする代わりに、ストリーム管理テーブル１５０から論理ブロックアドレスの登録を削除する。
【００５８】
＜２．３．３．読み出し処理＞
また、メモリコントローラ１１０が読み出しコマンドを受信した場合の処理（図１６）においては、本実施形態は第１実施形態と次の点において異なる。
ステップＳ４０２では、追記フラグがＯＮか否かを判断する代わりに、ストリーム管理テーブル１５０に該論理ブロックアドレスの登録があるか否かを判断する。
上記以外の不揮発性記憶装置１００の動作については、第１実施形態とほぼ同様である。
＜２．４．アクセス装置２００の動作＞
アクセス装置２００は、図１８のステップＳ６０２のストリーム書き込み準備コマンドの発行において、ストリームデータ毎に異なるストリーム番号をストリーム番号３１０として指定する。その他の動作については第１実施形態とほぼ同様である。
【００５９】
＜２．５．第２実施形態の効果＞
以上のように、本実施形態においては、第１実施形態と同様に、アクセス装置２００がブロックの全データをブロックよりもサイズの小さい単位で書き込む場合には、予め、ストリーム書き込み準備コマンドを発行することで該ブロックのアドレスに関する情報を不揮発性記憶装置１００に通知する。これにより、不揮発性記憶装置１００は無用な整理のためのデータコピーを行うことなく、消去ブロックの先頭からストリームデータを書き込むことが可能となる。従って、ある一定の書き込み速度を保ちつつ、ストリームデータ等の大容量のコンテンツデータを記録可能なメモリコントローラ、不揮発性記憶装置、アクセス装置、及び不揮発性記憶システムを提供する貴社ますますご清祥のこととお喜び申し上げます。平素は格別のご高配を賜り、厚くお礼申し上げます。ことができる。特に、本実施形態に係るメモリコントローラ、不揮発性記憶装置、及び不揮発性記憶システムは、大容量化に伴い大ブロック化が進むフラッシュメモリを用いた半導体記録媒体において有効である。
【００６０】
また、本実施形態においては、第１実施形態の効果に加えて、次の効果を有する。本実施形態によれば、並行して書き込むストリームデータの数だけの論理ブロックアドレスをストリーム管理テーブル１５０に記憶するようにしている。従って、並列に書き込むストリームデータの数が少ない場合には、アドレス管理部１０６が使用するメモリを削減することができる。また、ストリーム管理テーブル１５０に第１のブロックの書き込み状態を保持することにより、第１のブロックへの追記の可否の判定を不揮発性メモリ１２０へのアクセスなし行うことができ、高速化が図れる。
（その他実施形態）
【００６１】
（１）
上記実施形態又は下記の実施形態においては、第１及び第２ブロックを空きブロックにする場合、ブロックを消去するとしているが、ブロックを破棄してもよい。ブロックを破棄するとは、論理上、当該ブロックを空のブロックとして管理することを含む。例えば、第１又は第２のブロックを未割り当ての状態として管理することである。この場合、未割り当ての状態であるブロックに残されたデータは消去されていても、新たなデータが書き込まれるまでそのまま残されていても、それ以外の任意のデータ（例えば、一部または全部が元のデータと異なっているデータ）であっても、よい。つまりどのような内容のデータであってもよく、データの状態も正常、異常を問わない。破棄することにより読出し時には任意のデータが読み出されることになる。
（２）
上記第１及び第２実施形態においては、ストリーム書き込み準備コマンド（第１のコマンド）はＡＵ単位の書き込み範囲（第１の書き込み範囲）を識別するＡＵアドレス３０９を含んでいたが、本発明はこれに限定されない。ストリーム書き込み準備コマンドではＡＵアドレスを指定せず、次に受信される書き込みコマンド（第２のコマンド）がＡＵアドレスを含んでいてもよい。つまり、ストリーム書き込み準備コマンドはストリームデータの書き込みを通知するだけとし、その次に受信される書き込みコマンドは、ＡＵアドレスとＲＵアドレス（第２の書き込み範囲の識別情報）とを含むようにしてもよい。
この場合、図２５及び図２６に示すような処理が行われる。
≪ステップＳ１２０１〜Ｓ１２０２≫
まず、図２５に示すように、メモリコントローラ１１０は、アクセス装置２００から「ストリーム書き込み準備コマンド」を受信すると（Ｓ１２０１）、同コマンドを受信したことを示す受信フラグをＯＮにする（Ｓ１２０２）。
≪ステップＳ１３０１〜Ｓ１３０３≫
次に、図２６に示すように、メモリコントローラ１１０は、アクセス装置２００から「書き込みコマンド」を受信すると、アーギュメント３０４から書き込み開始論理アドレス（セクタ単位）を取得し（Ｓ１３０１）、論理ブロックアドレスに変換する。
次いで、メモリコントローラ１１０は、「ストリーム書き込み準備コマンド」の受信フラグがＯＮかどうかを判定する（Ｓ１３０２）。この判定の結果、受信フラグがＯＮである場合は、ストリーム書き込み準備処理（図１３のＳ２０１〜２０６の処理）を行う（Ｓ１３０３）。つまり、受信フラグがＯＮである場合は、受信された「書き込みコマンド」は、図２５の「ストリーム書き込み準備コマンド」の次に受信されたコマンドであり、ＡＵアドレスを含む。したがって、ここでは、メモリコントローラ１１０は、そのＡＵアドレスの値とレジスタ部１０５に設定したＡＵのサイズ情報から、指定されたＡＵに対応する論理ブロックを特定し、指定論理ブロックはアクセス装置２００がこれからストリーム書き込みを行う論理ブロックとして認知される。そして、受信フラグをＯＦＦにする（Ｓ１３０４）。
一方、受信フラグがＯＦＦである場合、図１４のステップＳ３０２〜３１２の処理を行う（Ｓ１３０５）。つまり、受信フラグがＯＦＦである場合、ストリーム書き込みを行う論理ブロックはすでに特定されているため、通常のＲＵ単位の書き込み処理が行われる。
以上の構成及び処理によれば、メモリコントローラ１１０は、ストリーム書き込み準備コマンドの受信時には論理ブロックの消去を行わす、書き込みコマンドが発生した時点で論理ブロックの消去を行うようにできる。これにより、ストリーム書き込み準備コマンド発行後にストリーム書き込み処理が中止された場合に、ストリーム書き込み準備コマンドで指定したＡＵのデータを保持することができる。
なお、上記実施形態において、ストリーム書き込み準備コマンドはストリーム番号を含み、第２実施形態と同様に処理を行ってもよい。
（３）
上記実施形態におけるコマンドフォーマットは一例である。適用する不揮発性記憶システムに応じて、コマンドフォーマットを変更したり、１つのコマンドを複数のコマンドに分割したり、複数のコマンドを１つに結合したりすること等が考えられるが、コマンドフォーマットに依存せず、同様の効果が期待できる。
（４）
上記実施形態において、ＡＵを論理ブロックサイズと同じとしたが、１つのＡＵを複数ブロックで構成してもよい。例えば、並列書込みが可能なブロックを組としたスーパーブロックをＡＵとし、論理アドレス管理テーブル等もスーパーブロック単位で管理してもよい。これにより、より高速な不揮発性記憶装置等を提供できる。
【００６２】
（５）
上記実施形態においては、図１３に示すストリーム書き込み準備コマンド受信時の処理であるステップＳ２０３やステップＳ２０５で、書き込み済みのデータを消去するものとして説明したが、ステップＳ２０３やステップＳ２０５の処理ではデータを消去する予約処理だけを行い、ＡＵへの書き込みコマンドが発生した時点でデータ消去を行ってもよい。これにより、ストリーム書き込み準備コマンド発行後にストリーム書き込み処理が中止された場合に、ストリーム書き込み準備コマンドで指定したＡＵのデータを保持することができる。
（６）
上記実施形態において、図１４のステップＳ３１２の異常系処理としてエラーを示すレスポンスを発行して処理を終了しているが、書き込みを継続するための処理として、次のような変形例も考えられる。
【００６３】
（変形例１）
該第１のブロックの未書込みページに全ビット０または全ビット１等のダミーデータを書き込んで該第１のブロックへの書込みを完結させてから追記フラグをＯＦＦとした後、ステップＳ３０２の処理に戻る。これにより、一時的に書き込み速度は低下するものの、書き込み済みのデータは保持することができる。
（変形例２）
該第１のブロックを消去し、別の空きブロックを消去して第１のブロックに割り当てて、書き込みを行う。これにより、書き込み済みのデータは消去されるが、一時的に書き込み速度が著しく低下することを回避できる。
（７）
上記第２実施形態において、ストリーム管理テーブル１５０が管理できるストリームデータの数の上限を４個としたが、これに限定されるものではなく、任意の個数での設計が可能である。
なお、本発明は上記の実施形態に限定されるべきでなく、本発明の趣旨を逸脱しない範囲で実施変更することができる。例えば、フローチャートで示した各処理はその順序は上述したものに限定されるべきでなく、本発明の趣旨を逸脱しない範囲で変更することができる。
【産業上の利用可能性】
【００６４】
本発明は、半導体メモリカードはいうまでもなく、半導体メモリカード等の不揮発性記憶装置を使用した静止画記録再生装置や動画記録再生装置、あるいは携帯電話においても有用である。
【符号の説明】
【００６５】
１      不揮発性記憶システム
１００  不揮発性記憶装置
１０１  ホストインターフェース（インターフェース部）
１０２  バッファ
１０３  読み書き制御部
１０４  ＣＰＵ
１０５  レジスタ部
１０６  アドレス管理部
１１０  メモリコントローラ
１２０  不揮発性メモリ
１２１  ブロック
１２２  ページ
１２３  データ格納領域
１２４  管理情報格納領域
１３１  第１の論理物理変換テーブル
１３２  第２の論理物理変換テーブル
１４０  空きブロック管理テーブル
１５０  ストリーム管理テーブル
２００  アクセス装置
２０１  入力制御部
２０２  入力部
２０３  バッファ
２０４  カードインターフェース
２０５  表示部
２０６  表示制御部
２０７  符号化部
２０８  システム制御部
【手続補正３】
【補正対象書類名】図面
【補正対象項目名】全図
【補正方法】変更
【補正の内容】
【図１】
2010146767.tif 000029
【図２】
2010146767.tif 000030
【図３】
2010146767.tif 000031
【図４】
2010146767.tif 000032
【図５】
2010146767.tif 000033
【図６】
2010146767.tif 000034
【図７】
2010146767.tif 000035
【図８】
2010146767.tif 000036
【図９】
2010146767.tif 000037
【図１０】
2010146767.tif 000038
【図１１】
2010146767.tif 000039
【図１２】
2010146767.tif 000040
【図１３】
2010146767.tif 000041
【図１４】
2010146767.tif 000042
【図１５】
2010146767.tif 000043
【図１６】
2010146767.tif 000044
【図１７】
2010146767.tif 000045
【図１８】
2010146767.tif 000046
【図１９】
2010146767.tif 000047
【図２０】
2010146767.tif 000048
【図２１】
2010146767.tif 000049
【図２２】
2010146767.tif 000050
【図２３】
2010146767.tif 000051
【図２４】
2010146767.tif 000052
【図２５】
2010146767.tif 000053
【図２６】
2010146767.tif 000054
【手続補正書】
【提出日】平成22年11月30日(2010.11.30)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、不揮発性メモリと不揮発性メモリを制御するメモリコントローラとを備えた半導体メモリカード等の不揮発性記憶装置、不揮発性記憶装置にアクセスするアクセス装置、不揮発性記憶装置とアクセス装置とを含む不揮発性記憶システム、及びメモリコントローラに関する。
【背景技術】
【０００２】
書き換え可能な不揮発性メモリを備える不揮発性記憶装置は、半導体メモリカードを中心にその需要が広まっている。半導体メモリカードは、光ディスクやテープメディア等と比較して高価格なものではある。しかし半導体メモリカードは、小型・軽量・耐震性・取り扱いの簡便さ等のメリットが大きいので、デジタルスチルカメラや携帯電話等、ポータブル機器の記録媒体としてその需要が広まっており、最近では民生用動画記録機器や放送局向けのプロ用動画記録機器の記録媒体としても利用されるようになってきた。加えて、ポータブル機器だけではなくデジタルテレビやＤＶＤレコーダ等の据え置き機器にも半導体メモリカード用のスロットが標準搭載されている。
この半導体メモリカードは、不揮発性の主記憶メモリとしてフラッシュメモリを備え、それを制御するメモリコントローラを有している。メモリコントローラは、デジタルスチルカメラ本体等、アクセス装置からのデータの読み書き指示に応じて、フラッシュメモリに対するデータの読み書き制御を行うものである。
【０００３】
近年、半導体メモリカードに格納する静止画や動画等のＡＶコンテンツの高品質化、すなわち１コンテンツあたりのデータサイズの大容量化に対応するために、半導体メモリカードに使用するフラッシュメモリの大容量化のニーズが高まっている。それに伴い、フラッシュメモリを構成するブロック（データ消去単位）のサイズが増大している。
一方、アクセス装置は半導体メモリカードの記憶領域の管理をファイルシステムによって行うが、記録領域をできるだけ無駄なく使用するためにファイルシステムによる管理単位（クラスタ）は前記ブロックのサイズよりも小さいのが一般的である。そのため、１つのクラスタの書き換えで１つのブロック全体の書き換えを行うとデータ書き込み速度が著しく悪化する。そこで、メモリコントローラで、ブロック全体の書き換えが頻繁に発生するのを防ぎ、データ書き込み速度の低下を防止するものが知られている（例えば、特許文献１参照）。
【０００４】
この従来技術では、データ消去単位である複数のブロックを１次ブロック群と２次ブロック群と予備ブロック群とに分け、前記１次ブロック群に属する１次ブロックへのデータ書き込み要求に対して、１次ブロックが完全に書き込み済みで追記できない場合に、前記２次ブロック群に属する２次ブロックを前記１次ブロックの拡張ブロックとして使用する。すなわち、前記２次ブロックに１次ブロックのデータの更新部分のデータのみを追記していく。そして、２次ブロックが完全に書き込み済みで追記できなくなった時点で、前記予備ブロック群に属する予備ブロックに１次ブロックと２次ブロックの有効データのみを整理して書き込み、コピー元である前記１次ブロックと前記２次ブロックの内容を消去して、それぞれ予備ブロック群及び２次ブロック群のブロックとする。これにより、ブロック全体の書き換え頻度を低減し、データ書き込み速度の低下を防止する。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００１−１５４９０９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、前記１次ブロックと前記２次ブロックの有効データを整理して予備ブロックに書き込む時点ではデータ書き込み速度が一時的に著しく低下することを避けられない。更に、このデータ書き込み速度が一時的に著しく低下するタイミングは、フラッシュメモリを制御するメモリコントローラは把握することができるが、半導体メモリカードのアクセス装置では把握できない。このことは、ある一定の書き込み速度が継続的に必要である動画記録装置等のアクセス装置にとって、設計が困難となるという点で課題である。
また、アクセス装置が動画等の大容量のコンテンツデータ（以降、ストリームデータと呼ぶ）の書き込みを行う場合、ブロックのサイズを超えるデータ更新が発生する。ブロックの全てのデータを更新する場合であっても、アクセス装置からのデータ書き込みはクラスタ単位で行われるため、メモリコントローラはブロックの全データが更新される予定であることを事前に知ることができない。よって、上記従来のメモリコントローラでは、２次ブロックの途中までデータが書き込まれた状態から、該ブロックの全データを更新するような書き込みが発生すると、メモリコントローラは１次ブロック及び２次ブロックに書き込み済みのデータを（最終的には全てが書き換えられるとは知らずに）保持したまま、２次ブロックの途中から追記を行う。その結果、１ブロック分のデータ書き込みの途中で前記整理の処理が発生し、書き込み速度が一時的に著しく低下することになる。
【０００７】
本発明は、上記課題を解決すべくなされたものであり、その目的は、アクセス装置がブロックの全データをブロックよりもサイズの小さい単位で書き込む場合に、書き込み速度が一時的に著しく低下することのない、不揮発性記憶装置、アクセス装置、不揮発性記憶システム及びメモリコントローラを提供することにある。
【課題を解決するための手段】
【０００８】
第１の発明は、不揮発性メモリと、不揮発性メモリへのデータの書き込み及び読み出しを制御するメモリコントローラと、を備える不揮発性記憶装置であって、メモリコントローラは、インターフェース部と、アドレス管理部と、読み書き制御部と、を有する。
インターフェース部は、データを書き込むための第１の書き込み範囲を識別する第１のコマンドと、第１の書き込み範囲の一部である第２の書き込み範囲を識別し第２の書き込み範囲へのデータの書き込みを指示する第２のコマンドと、を受信する。
アドレス管理部は、不揮発性メモリへのデータの書き込み前に、第１のコマンドに基づいて、第１の書き込み範囲に対してデータを書き込むための新たなブロックを選定する。
読み書き制御部は、第２のコマンドに応じて、新たなブロックにデータを記録する。
ここで、データを書き込むための第１の書き込み範囲とは、例えば、不揮発性記憶装置がアクセス装置に提供するデータ読み書きのための論理空間をブロック単位で分割した範囲である。また、第２の書き込み範囲とは、例えば、アクセス装置によるデータ書き込み単位に相当する範囲である。ブロックとは、例えば、不揮発性メモリ内の物理的なブロックである。
【０００９】
ここでは、不揮発性メモリへのデータの書き込み前に、第１のコマンドに基づいて、第１の書き込み範囲に対してデータを書き込むための新たなブロックを選定し、第２のコマンドに応じてデータを書き込む。これにより、ストリームデータ等の大きなサイズのデータを連続的に書き込む場合であっても、データの書き込み途中にブロックの書き換え処理が発生する頻度を低減でき、データ書き込み速度が一時的に著しく低下することを防ぐことができる。
第２の発明は、不揮発性メモリと、不揮発性メモリへのデータの書き込み及び読み出しを制御するメモリコントローラと、を備える不揮発性記憶装置であって、メモリコントローラは、インターフェース部と、アドレス管理部と、読み書き制御部と、を有する。
インターフェース部は、データの書き込みを通知する第１のコマンドと、同データの書き込みを指示する第２のコマンドと、を受信する。
アドレス管理部は、不揮発性メモリへのデータの書き込み前に、インターフェース部により第１のコマンドの次に受信される第２のコマンドに基づいて、データを書き込むための新たなブロックを選定する。
読み書き制御部は、インターフェース部により受信される第２のコマンドに応じて、新たなブロックにデータを記録する。
インターフェース部により第１のコマンドの次に受信される第２のコマンドは、データを書き込むための第１の書き込み範囲を識別する情報と、第１の書き込み範囲の一部である第２の書き込み範囲を識別する情報とを含み、第２の書き込み範囲へのデータの書き込みを指示する。
ここでは、実際にデータの書き込みが指示される第２のコマンドに基づいて、新たなブロックを選定されるため、第1コマンドによる大きなデータの書き込み処理が中止された場合であっても、第２コマンドが受信されるまではデータは破棄等されずに保持することができる。
第３の発明は、第１又は第２の発明であって、アドレス管理部は、新たなブロックを選定する前に、第１の書き込み範囲に対し選定されている一以上のブロックがあるかどうかを判断し、一以上のブロックがあると判断した場合は、一以上のブロックを破棄する。
ここで、ブロックを破棄するとは、例えば、第１の書き込み範囲に既に割り当てられたブロックを未割り当ての状態にし、論理上空のブロックとして管理することを含む。この場合、未割り当ての状態であるブロックに残されたデータは消去されてもよいし、新たなデータが書き込まれるまでそのまま残されていてもよい。つまり、どのような内容のデータであってもよく、データの状態も正常、異常を問わない。
第４の発明は、第１又は第２の発明であって、アドレス管理部は、新たなブロックを選定する前に、第１の書き込み範囲に対し選定されている一以上のブロックがあるかどうかを判断し、一以上のブロックがあると判断した場合は、一以上のブロックを消去する。
ここで、ブロックを消去するとは、例えば、当該ブロックを、全ビット０または全ビット１等のダミーデータが読み出されるような状態にすることをいう。
【００１０】
ここでは、新たなブロックが選定される前に、すでに選定されているブロックがあるかどうかを判断し、その判断結果に応じてブロックを破棄又は消去するため、新たなブロックの選定をより確実に行うことができる。
第５の発明は、第１又は第２の発明であって第１の書き込み範囲は、第２の書き込み範囲の整数倍である。
第６の発明は、第１の発明であって、第１のコマンドは、第１の書き込み範囲を識別する第１の識別情報を含む。
ここで、識別情報とは、例えば、第１の書き込み範囲を特定するアドレス情報である。
第７の発明は、第１又は第２の発明であって、第１のコマンドは、ストリームデータを識別する第２の識別情報を含む。
【００１１】
第８の発明は、第７の発明であって、アドレス管理部は、第２の識別情報毎に、新たなブロックを選定する。
ここでは、より大きな書き込み範囲を基準にして新たなブロックの選定を行うため、管理するアドレスの情報量等を削減することができ、メモリ資源を節約できる。
第９の発明は、第８の発明であって、アドレス管理部は、複数の第２の識別情報を保持し、読み書き制御部は、複数の第２の識別情報に対応する複数の新たなブロックに、並行してデータを記録する。
ここでは、並行して送信される複数の大容量のデータの書き込み制御を高速且つ効率的に行うことができる。
第１０の発明は、不揮発性記憶装置へのデータの書き込み及び読み出しを制御するアクセス装置ある。このアクセス装置は、データを書き込むための第１の書き込み範囲を識別する情報を含む第１のコマンドを不揮発性記憶装置に送信し、第１のコマンドの送信後、第１の書き込み範囲の一部である第２の書き込み範囲を識別する情報を含み第２の書き込み範囲へのデータの書き込みを指示する第２のコマンドを、複数回、不揮発性記憶装置に送信する。
【００１２】
ここでは、第１の書き込み範囲を識別する情報を含む第１のコマンドの送信後、第１の書き込み範囲の一部である第２の書き込み範囲を識別する情報を含む第２のコマンドを、複数回、不揮発性記憶装置に送信する。
これにより、ストリームデータ等の大きなサイズのデータを連続的に書き込む場合であっても、不揮発性記憶装置側においてデータの書き込み途中にブロックの書き換え処理が発生する頻度を低減でき、データ書き込み速度が一時的に著しく低下することを防ぐことができる。
第１１の発明は、不揮発性記憶装置へのデータの書き込み及び読み出しを制御するアクセス装置ある。このアクセス装置は、データの書き込みを通知する第１のコマンドを不揮発性記憶装置に送信し、第１のコマンドの送信後、それぞれがデータの書き込みを指示する第２のコマンドを、複数回、不揮発性記憶装置に送信する。第１のコマンドの次に送信される第２のコマンドは、データを書き込むための第１の書き込み範囲を識別する情報と、第１の書き込み範囲の一部である第２の書き込み範囲を識別する情報とを含み、第２の書き込み範囲へのデータの書き込みを指示する。
第１２の発明は、第１の発明〜第９の発明のいずれか１つの不揮発性記憶装置と、第１０又は第１１発明のアクセス装置と、を備える不揮発性記憶システムである。
第１３の発明は、不揮発性メモリへのデータの書き込み及び読み出しを制御するメモリコントローラであって、インターフェース部と、アドレス管理部と、読み書き制御部と、備える。
インターフェース部は、データを書き込むための第１の書き込み範囲を識別する第１のコマンドと、第１の書き込み範囲の一部である第２の書き込み範囲を識別し第２の書き込み範囲へのデータの書き込みを指示する第２のコマンドと、を受信する。
【００１３】
アドレス管理部は、不揮発性メモリへのデータの書き込み前に、第１のコマンドに基づいて、第１の書き込み範囲に対してデータを書き込むための新たなブロックを選定する。
読み書き制御部は、第２のコマンドに応じて、新たなブロックにデータを記録する。
第１４の発明は、不揮発性メモリへのデータの書き込み及び読み出しを制御するメモリコントローラであって、インターフェース部と、アドレス管理部と、読み書き制御部と、備える。
インターフェース部は、データの書き込みを通知する第１のコマンドと、データの書き込みを指示する第２のコマンドと、を受信する。
アドレス管理部は、不揮発性メモリへのデータの書き込み前に、インターフェース部により第１のコマンドの次に受信される第２のコマンドに基づいて、データを書き込むための新たなブロックを選定する。
読み書き制御部は、インターフェース部により受信される第２のコマンドに応じて、新たなブロックにデータを記録する。
インターフェース部により第１のコマンドの次に受信される第２のコマンドは、データを書き込むための第１の書き込み範囲を識別する情報と、第１の書き込み範囲の一部である第２の書き込み範囲を識別する情報とを含み、第２の書き込み範囲へのデータの書き込みを指示する。
【発明の効果】
【００１４】
本発明によれば、アクセス装置がブロックの全データをブロックよりもサイズの小さい単位で書き込んだ場合に、書き込み速度が一時的に著しく低下することを回避することが可能となる。
従って、ある一定の書き込み速度を保ちつつ、ストリームデータ等の大容量のコンテンツデータを記録可能な不揮発性記憶装置、アクセス装置、不揮発性記憶システム及びメモリコントローラを提供することができる。
【図面の簡単な説明】
【００１５】
【図１】本発明の第１実施形態における不揮発性記憶システムを示すブロック図
【図２】フラッシュメモリとブロックの関係を示す図
【図３】ブロックとページの関係を示す図
【図４】ページの構成を示す図
【図５】第１実施形態における第１の論理物理変換テーブルを示す図
【図６】第１実施形態における第２の論理物理変換テーブルを示す図
【図７】第１実施形態における空きブロック管理テーブルを示す図
【図８】ファイルシステムによる論理空間の管理方法を示す図
【図９】ＡＵとＲＵとクラスタの関係を示す図
【図１０】第１実施形態におけるコマンドフォーマットを示す図
【図１１】第１実施形態におけるストリーム書き込み準備コマンドのフォーマットを示す図
【図１２】第１実施形態の不揮発性記憶装置による初期化コマンド受信時の処理を示すフローチャート
【図１３】第１実施形態の不揮発性記憶装置によるストリーム書き込み準備コマンド受信時の処理を示すフローチャート
【図１４】第１実施形態の不揮発性記憶装置による書き込みコマンド及び付随する書き込みデータ受信時の処理を示すフローチャート
【図１５】第１実施形態における第２のブロックの準備処理の前後の状態例を示す図
【図１６】第１実施形態の不揮発性記憶装置による読み出しコマンド受信時の処理を示すフローチャート
【図１７】第１実施形態のアクセス装置による初期化処理を示すフローチャート
【図１８】第１実施形態のアクセス装置によるストリーム書き込み処理を示すフローチャート
【図１９】第１実施形態の不揮発性記憶システムにおけるストリームデータ書き込み時のコマンド・レスポンス・データの転送シーケンスを示す図
【図２０】第１実施形態のアクセス装置による通常のデータ書き込み処理を示すフローチャート
【図２１】第１実施形態の不揮発性記憶システムにおける通常のデータ書き込み時のコマンド・レスポンス・データの転送シーケンスを示す図
【図２２】第１実施形態のアクセス装置によるデータ読み出し処理を示すフローチャート
【図２３】本発明の第２実施形態におけるストリーム管理テーブルを示す図
【図２４】第２実施形態におけるストリーム書き込み準備コマンドのフォーマットを示す図
【図２５】他の実施形態の不揮発性記憶装置によるストリーム書き込み準備コマンド受信時の処理を示すフローチャート
【図２６】他の実施形態の不揮発性記憶装置による書き込みコマンド及び付随する書き込みデータ受信時の処理を示すフローチャート
【発明を実施するための形態】
【００１６】
以下、本発明の実施形態について添付の図面を参照しながら説明する。
（第１実施形態）
＜１．不揮発性記憶システム１の構成＞
図１は、本発明の第１実施形態における不揮発性記憶システム１の構成を示している。
本実施形態の不揮発性記憶システム１は、不揮発性記憶装置１００と、不揮発性記憶装置１００が装着されるアクセス装置２００とを有する。
＜１．１．アクセス装置２００の構成＞
アクセス装置２００は、入力制御部２０１と、入力部２０２と、バッファ２０３と、カードインターフェース（カードＩＦ）２０４と、表示部２０５と、表示制御部２０６と、符号化部２０７と、システム制御部２０８とを含む。アクセス装置１００は、例えば、ビデオカメラ等の動画記録装置である。
【００１７】
入力部２０２は、動画等のストリームデータが入力される部分であり、入力制御部２０１によって制御される。
バッファ２０３は、入力部２０２から入力されたストリームデータを一時的に格納する部分であり、ＲＡＭ等で構成される。
カードＩＦ２０４は、不揮発性記憶装置１００にアクセスし、データの読み書きを行う部分である。
表示部２０５は、不揮発性記憶システム１に関する情報を表示する部分であり、表示制御部２０６によって制御される。
符号化部２０７は、バッファ２０３に格納されたストリームデータを符号化する部分である。
【００１８】
システム制御部２０８は、内部にプログラム用のＲＯＭや作業用のＲＡＭを含み、アクセス装置２００全体を制御するものである。
入力部２０２から入力されたストリームデータは一時的にバッファ２０３に格納され、符号化部２０７によって符号化された後、カードＩＦ２０４を介して不揮発性記憶装置１００に書き込まれる。
＜１．２．不揮発性記憶装置１００の構成＞
不揮発性記憶装置１００は、メモリコントローラ１１０と、フラッシュメモリ群である不揮発性メモリ１２０とを含む。
＜１．２．１．メモリコントローラ１１０＞
メモリコントローラ１１０は、アクセス装置２００との通信を行うホストインターフェース（ホストＩＦ）１０１と、バッファ１０２と、読み書き制御部１０３と、ＣＰＵ１０４と、レジスタ部１０５と、アドレス管理部１０６とを含む。
【００１９】
バッファ１０２は、ＲＡＭ等で構成され、アクセス装置２００から転送されたデータ、あるいは不揮発性メモリ１２０から読み出されたデータを一時的に保持するものである。バッファ１０２は、アクセス装置２００とメモリコントローラ１１０間のデータ転送と、メモリコントローラ１１０と不揮発性メモリ１２０間のデータ転送の単位やタイミングの違いを吸収するのに利用される。
読み書き制御部１０３は、アドレス管理部１０６が指定した物理アドレスに基づいてバッファ１０２に一時的に保持されたデータを不揮発性メモリ１２０に書き込む。更に、読み書き制御部１０３は、不揮発性メモリ１２０からデータを読み出し、該データを一時的にバッファ１０２に保持する。
ＣＰＵ１０４は、内部にプログラム用ＲＯＭや作業用のＲＡＭ等を含み、メモリコントローラ１１０全体を制御するものである。
【００２０】
レジスタ部１０５は、不揮発性記憶装置１００に関する各種のパラメータ情報を保持する部分である。
アドレス管理部１０６は、アクセス装置２００のアクセスに伴って転送された論理アドレスを不揮発性メモリ１２０内の物理アドレスに変換し、不揮発性メモリ１２０内の記録状態等を管理する部分である。
本実施形態におけるアドレス管理部１０６は、第１の論理物理変換テーブル１３１（図５）と、第２の論理物理変換テーブル１３２（図６）と、空きブロック管理テーブル１４０（図７）とをＲＡＭ上に構築し、使用する。詳細は後述する。
＜１．２．２．不揮発性メモリ１２０＞
図２に示すように、不揮発性メモリ１２０であるフラッシュメモリは複数のブロック１２１から構成される。ブロック１２１はフラッシュメモリにおけるデータ消去単位である。
【００２１】
更に、図３に示すように、各ブロック１２１は複数のページ１２２から構成される。ページ１２２はフラッシュメモリにおける書き込み単位である。ブロック１２１に対する書き込みは常に物理的に先頭のページから順に行われる。
また、図４に示すように、各ページ１２２は、アクセス装置２００から転送されたデータ等を格納するデータ格納領域１２３と、メモリコントローラ１１０が使用する管理情報を格納する管理情報格納領域１２４とを含む。管理情報格納領域１２４には、データ格納領域１２３に格納されたデータのページ単位の論理アドレス情報や、誤り訂正符号等の情報が格納される。
＜１．２．３．アドレス管理部１０６のテーブル＞
アドレス管理部１０６は、ブロック単位で論理アドレスと物理アドレスの対応を管理する第１の論理物理変換テーブル１３１と、第２の論理物理変換テーブル１３２とを含む。
【００２２】
≪第１の論理物理変換テーブル１３１≫
図５は、第１の論理物理変換テーブル１３１の構成例を示す。第１の論理物理変換テーブル１３１には、論理ブロック（不揮発性記憶装置１００がアクセス装置２００に提供するデータ読み書きのための論理空間をブロック単位で分割したもの）と物理ブロック（不揮発性メモリ１２０内の物理的なブロック）の対応を１対１で管理する。以下、第１の論理物理変換テーブル１３１に登録された物理ブロックを第１のブロックと呼ぶ。
本実施形態の特徴として、前記第１の論理物理変換テーブル１３１は、追記フラグを含む。追記フラグは、第１のブロックへの追記の可否に関する情報をＯＮ／ＯＦＦの２値で設定する。追記フラグがＯＦＦの場合とは、第１のブロックの書き込みが完結している場合や、第１のブロックが未だ割り当てられていない場合等である。追記フラグがＯＮの場合とは、第１のブロックに未書き込みのページが存在する場合である。
【００２３】
≪第２の論理物理変換テーブル１３２≫
図６は、第２の論理物理変換テーブル１３２の構成例を示す。第２の論理物理変換テーブル１３２では、特定の論理ブロックに対して、前記第１のブロックとは別の物理ブロックを割り当てる。以下、第２の論理物理変換テーブル１３２に登録された物理ブロックを第２のブロックと呼ぶ。
前記第２のブロックは、前記第１のブロックに書き込まれた１ブロック分のデータのうち、一部分のみを更新する場合に、更新データを書き込むためのブロックである。更新の最小単位は、ブロックへの書き込み単位であるページとなる。本実施形態では、第１の論理物理変換テーブル１３１において第１のブロックの追記フラグがＯＦＦ（すなわち追記不可）の場合にのみ、第２の論理物理変換テーブル１３２において第２のブロックを登録できるものとする。
【００２４】
図６の例では最大４つの論理ブロックに対して、第２のブロックの割り当てを可能としている。この第２のブロックが割り当て可能な論理ブロックの数は、不揮発性記憶装置１００の設計によって任意の値に設定してよい。第２のブロックの数を増加すると、ランダムな論理アドレスへの書き込みが発生した場合に、第２のブロックに追記できる確率が増加し、より効果的に書き込み速度の低下を防止できるというメリットがある。しかし、第１のブロックとは別のブロックの割り当てが必要となるので、不揮発性記憶装置１００がアクセス装置２００に提供できる論理空間を一定に保つためには、無制限に増加することはできない。
また、第２の論理物理変換テーブル１３２は、第２のブロックの書き込み状態を管理するための情報を含んでいてもよい。例えば、図６に示すように、第２のブロックにおける書き込み済みのページ数や、書き込んだデータの論理アドレスが連続なのかランダムなのかといった情報を含んでいてもよい。これらの情報は、第２のブロックの書き込み済みのページの管理情報格納領域１２４を読み出すことによっても取得もしくは作成することができるが、ＲＡＭ上に構成される第２の論理物理変換テーブル１３２の一部として保持することで、書き込み速度の高速化が期待できる。
【００２５】
更に、アドレス管理部１０６は、各物理ブロックの使用状況を管理するための空きブロック管理テーブル１４０を備えている。
図７は、空きブロック管理テーブル１４０の構成例を示す。空きブロック管理テーブル１４０は、不揮発性メモリ１２０内の全物理ブロックがそれぞれ使用中なのか空きなのかという情報を保持する。「空き」とは、有効なデータが登録されておらず、新しいデータの格納用として使用することができる物理ブロックであることを意味する。一方、「使用中」とは、それ以外の物理ブロックであり、前記第１の論理物理変換テーブル１３１に登録された第１のブロックや、前記第２の論理物理変換テーブル１３２に登録された第２のブロックや、メモリコントローラ１１０が内部的に使用するシステム情報を格納したブロック（以降、システム情報ブロックと呼ぶ）や、データ書き込みができない不良ブロック等が相当する。
【００２６】
＜１．３．アクセス装置２００による論理空間の管理＞
＜１．３．１．論理空間の管理の概要＞
次に、不揮発性記憶装置１００が提供する論理空間をアクセス装置２００が管理する方法について述べる。
本実施形態におけるアクセス装置２００は、前記論理空間をＦＡＴファイルシステムによって管理する。ＦＡＴファイルシステムには、ＦＡＴ１２、ＦＡＴ１６、ＦＡＴ３２、ｅｘＦＡＴ等の様々なバリエーションが存在するが、いずれも図８に示すように、ファイルシステムの管理情報を格納するファイルシステム管理情報格納領域と、ストリームデータ等のユーザーデータを格納するユーザーデータ領域とから構成される。ユーザーデータ領域は、複数のクラスタと呼ばれる単位に分割されて管理される。クラスタのサイズを超えるデータは複数のクラスタに分割して格納され、クラスタ間のつながりを表すリンク情報は前記ファイルシステム管理情報領域内のＦＡＴテーブルとして管理される。
【００２７】
従って、アクセス装置２００によるデータ書き込みの基本単位はクラスタとなる。但し、ストリームデータの書き込みにおいては、論理アドレスが連続する複数のクラスタから構成されるＲＵ（Ｒｅｃｏｒｄｉｎｇ  Ｕｎｉｔ）単位（図９）を基本単位とする。これにより、サイズの大きいストリームデータの書き込みにおいて、不揮発性記憶装置１００への書き込みコマンドを繰り返し発行することに伴うオーバーヘッドを削減することができる。
更に、アクセス装置２００が指定するストリームデータの書き込みアドレスは、前記ＲＵの整数倍のＡＵ（Ａｌｌｏｃａｔｉｏｎ  Ｕｎｉｔ）単位（図９）内で、先頭から順にインクリメントさせる。ＡＵを論理ブロックの整数倍のサイズとすることにより、ストリームデータが論理ブロックの先頭から連続的に書き込まれるため、不揮発性記憶装置１００のメモリコントローラ１１０はストリームデータを不揮発性メモリ１２０に効率的に書き込むことができる。なお、本実施形態ではＡＵを論理ブロックの１倍のサイズ（すなわち同じサイズ）として説明する。
【００２８】
図９にＡＵとＲＵとクラスタの関係を示す。
＜１．３．２．コマンドフォーマット＞
不揮発性記憶装置１００は、アクセス装置２００から転送される少なくとも４つのコマンドを処理する。
「書き込みコマンド」（第２のコマンド）は、データを不揮発性メモリ１２０に書き込むためのコマンドである。「読み出しコマンド」は、不揮発性メモリ１２０に格納されたデータを読み出してアクセス装置２００に転送するためのコマンドである。「初期化コマンド」は、不揮発性記憶装置１００への読み書きを開始するための初期化処理をするためのコマンドである。「ストリーム書き込み制御コマンド」は、ストリームデータを書き込むときの制御を行うためのコマンドである。
【００２９】
図１０にこれらのコマンドのフォーマット例を示す。図１０の例において、コマンド３００は、コマンドの開始を示すスタートビット３０１（１ビット）、コマンドであることを示すコマンドフラグ３０２（１ビット）、コマンドの種別を示すコマンドインデックス３０３（６ビット）、コマンドの種別に応じたパラメータを設定するアーギュメント３０４（３２ビット）、コマンド転送時のエラーを検出するためのＣＲＣ３０５（７ビット）、コマンドの終端を示すエンドビット３０６（１ビット）を含み、計４８ビット（すなわち、６バイト）で構成される。
前記書き込みコマンドの場合には、アーギュメント３０４に書き込み開始論理アドレスがセクタ単位（５１２バイト単位）で格納される。
前記読み出しコマンドの場合には、アーギュメント３０４に読み出し開始論理アドレスがセクタ単位（５１２バイト単位）で格納される。
【００３０】
前記ストリーム書き込み制御コマンドは、図１１に示すように、アーギュメント３０４内にサブコード３０７（４ビット）を設けることで制御の方法を拡張できるものとし、少なくともストリームデータを書き込むＡＵを指定するためのサブコードである「書き込みＡＵ指定」が定義されているものとする。
以下、サブコードに「書き込みＡＵ指定」が格納されたストリーム書き込み制御コマンドを「ストリーム書き込み準備コマンド」（第１のコマンド）と呼称する。
図１１にストリーム書き込み準備コマンドのフォーマット詳細例を示す。ストリーム書き込み準備コマンドのアーギュメント３０４は、「書き込みＡＵ指定」を示すサブコード３０７（４ビット）と、将来拡張用の予約ビット３０８（１ビット）と、ストリームを書き込むＡＵのアドレスであるＡＵアドレス３０９（２７ビット）とから構成される。
【００３１】
書き込みコマンドや読み出しコマンドでは、論理アドレスをセクタ単位で３２ビットで表現できるので最大２ＴＢ（テラバイト）の論理空間を管理できる。一方、ＡＵアドレスは２７ビットの表現となるが、１つのＡＵのサイズが１６ＫＢ以上であれば２ＴＢ以上の論理空間を管理できることになる。
＜１．４．不揮発性記憶装置１００の動作＞
まず、不揮発性記憶装置１００の動作を説明する。
＜１．４．１．初期化処理＞
図１２は、メモリコントローラ１１０による初期化コマンド受信時の処理を示すフローチャートである。
≪ステップＳ１０１〜Ｓ１０３≫
不揮発性記憶装置１００への電源投入後、メモリコントローラ１１０はハードウェアの初期化を行い、コマンドを受信可能な状態となる。その後、アクセス装置２００から前記「初期化コマンド」を受信すると、メモリコントローラ１１０が不揮発性メモリ１２０にアクセスを開始するために必要なハードウェアの初期化処理を行う。
【００３２】
その後、メモリコントローラ１１０は読み書き制御部１０３を介して不揮発性メモリ１２０にアクセスし、不揮発性メモリ１２０に格納されている、アドレス管理のためのシステム情報が格納されたシステム情報ブロックを読み出し、アドレス管理部１０６に第１の論理物理変換テーブル１３１、第２の論理物理変換テーブル１３２、空きブロック管理テーブル１４０等を作成する（Ｓ１０２）。
更に、前記システム情報ブロックやＣＰＵ１０４のＲＯＭに格納された情報を参照して、レジスタ部１０５に各種のパラメータ情報を設定する（Ｓ１０３）。パラメータ情報として、少なくともＡＵのサイズ情報を含むものとする。
＜１．４．２．ストリーム書き込み準備処理＞
図１３は、メモリコントローラ１１０によるストリーム書き込み準備コマンド受信時の処理を示すフローチャートである。
【００３３】
≪ステップＳ２０１〜Ｓ２０６≫
メモリコントローラ１１０は、アクセス装置２００から「ストリーム書き込み準備コマンド」を受信すると、ＡＵアドレス３０９の値とレジスタ部１０５に設定したＡＵのサイズ情報から、指定されたＡＵに対応する論理ブロック（以下、指定論理ブロックと呼ぶ。）を特定する（Ｓ２０１）。指定論理ブロックはアクセス装置２００がこれからストリーム書き込みを行う論理ブロックとして認知される。
その後、アドレス管理部１０６の第２の論理物理変換テーブル１３２を参照し、指定論理ブロックの登録があるかどうかを検索することで、第２のブロックが割り当てられているかを判断する（Ｓ２０２）。
登録があった場合には、第２の論理物理変換テーブル１３２を更新して未登録状態とすることで、第２のブロックを消去する（Ｓ２０３）。
本実施形態において、ブロックを消去するとは、当該ブロックを、全ビット０または全ビット１等のダミーデータが読み出されるような状態にする、つまり当該ブロックにおけるデータを論理上消去した状態にすることをいう。
同第２のブロックは空きブロック管理テーブル１４０において空きブロックとなり再利用されるが、同第２のブロックに書き込まれていたデータは上述のように論理上消去される。
【００３４】
更に、アドレス管理部１０６の第１の論理物理変換テーブル１３１を参照して指定論理ブロックに対応する第１のブロックの物理ブロックアドレスの登録があるかどうかを判断する（Ｓ２０４）。
登録があった場合には、第１の論理物理変換テーブル１３１を更新して第１のブロックを未割り当て（未アロケート）の状態とすることで、第１のブロックを消去する（Ｓ２０５）。消去された第１のブロックは空きブロック管理テーブル１４０において空きブロックとなり再利用されるが、書き込まれていたデータは上記と同様に論理上消去される。
空きブロック管理テーブル１４０を参照して空きブロックを取得してデータを論理上消去した後、第１の論理物理変換テーブル１３１の指定論理ブロックに対する第１のブロックとして消去済みの物理ブロックを登録し、その追記フラグをＯＮに設定する（Ｓ２０６）。
【００３５】
以上の処理によって、ストリーム書き込み準備処理コマンドによって指定されたＡＵに対応する物理ブロックの書き込み済みデータは論理上消去されるとともに、前記ＡＵには消去済みの物理ブロックが割り当てられ、先頭ページからの書き込みが可能な状態となる。
＜１．４．３．書き込み処理＞
図１４は、メモリコントローラ１１０による書き込みコマンド及び付随する書き込みデータ受信時の処理を示すフローチャートである。
≪ステップＳ３０１〜Ｓ３１２≫
メモリコントローラ１１０は、アクセス装置２００から上記「書き込みコマンド」を受信すると、アーギュメント３０４から書き込み開始論理アドレス（セクタ単位）を取得し（Ｓ３０１）、論理ブロックアドレスに変換する。
【００３６】
その後、アドレス管理部１０６の第１の論理物理変換テーブル１３１を参照して、論理ブロック（以下、指定論理ブロックと呼ぶ。）の追記フラグを参照する（Ｓ３０２）。
追記フラグがＯＦＦの場合は、更に第２の論理物理変換テーブル１３２を参照して第２のブロックが割り当てられているかを判断する（Ｓ３０３）。
第２のブロックが割り当てられている場合は、第２の論理物理変換テーブル１３２を参照し、該第２のブロックの書き込み状態を参照することで、アクセス装置２００から転送される書き込みデータを該第２のブロックの未書き込みページに追記できるか否かを判断する（Ｓ３０４）。
ステップＳ３０３で第２のブロックが割り当てられていない場合や、ステップＳ３０４で第２のブロックに追記できないと判断した場合には、アクセス装置２００から転送される書き込みデータを書き込むための第２のブロックを準備するための処理を行う（Ｓ３０５）。このとき、必要に応じて不揮発性メモリ１２０のシステム情報ブロックの更新を行う。
【００３７】
ステップＳ３０５の処理では、まず第２の論理物理変換テーブル１３２の空きエントリを準備する。空きエントリがない場合は、既に第２の論理物理変換テーブル１３２に登録済みの論理ブロックＸの登録を解消することで空きエントリを準備する。
この論理ブロックＸの登録解消の処理を図１５を用いて説明する。まず、空きブロック管理テーブル１４０から空きブロックを取得し、上記と同様にデータを論理上消去する。その後、論理ブロックＸを構成する第１のブロックと第２のブロックに書き込み済みのデータから、１論理ブロック分の有効なデータを前記データ消去済みの空きブロックにコピーする。有効なデータの検索は、第２の論理物理変換テーブル１３２の書き込み状態の情報や、第１のブロックや第２のブロックの書き込み済みページの管理情報格納領域１２４に格納されたページ単位の論理アドレス情報等を参照して行われる。そして、コピー先のブロックを論理ブロックＸの新たな第１のブロックとして第１の論理物理変換テーブル１３１に登録し、追記フラグはＯＦＦとする。これに伴い、コピー元の第１のブロックは第１の論理物理変換テーブル１３１において未割り当てとなるので、空きブロック管理テーブル１４０にて空きブロックとして登録され、再利用される。また、コピー元の第２のブロックは第２の論理物理変換テーブル１３２において未登録とされ、更に空きブロック管理テーブル１４０にて空きブロックとして登録され、再利用する。
以上により、論理ブロックＸの有効データを保持しつつ、第２の論理物理変換テーブル１３２に空きエントリを準備することができる。但し、１論理ブロック分の有効なデータのコピーには比較的長い時間が必要であり、フラッシュメモリの品種にもよるが、例えば２００ミリ秒〜３００ミリ秒を要する。
【００３８】
一方、ステップＳ３０３で第２のブロックが割り当てられていると判断し、更にステップＳ３０４で第２のブロックを追記できると判断した場合は、ステップＳ３０６の処理に進み、アクセス装置２００が転送する書き込みデータを第２のブロックに書き込む（Ｓ３０６）。
書き込みが完了すれば処理を終了し、続きの書き込みデータがある場合には次の論理ブロックに対してステップＳ３０２からの処理を実施する（Ｓ３０７）。
ステップＳ３０２において、アドレス管理部１０６の第１の論理物理変換テーブル１３１を参照して、指定論理ブロックの追記フラグがＯＮの場合は、第１の論理物理変換テーブル１３１に登録された第１のブロックの書き込み済みページの管理情報格納領域１２４に格納されたページ単位の論理アドレス情報等を参照して、アクセス装置２００が転送する書き込みデータを該第１のブロックに追記可能か否かを判断する（Ｓ３０８）。
【００３９】
追記可能であれば該第１のブロックの未書き込みページにアクセス装置２００が転送する書き込みデータを書き込んでいく（Ｓ３０９）。
なお、後述するが、アクセス装置２００が追記フラグＯＮの第１のブロックにストリームデータを書き込む場合は、常に論理アドレスが連続になるように制御するため、ステップＳ３０８の判断は常に追記可能となる。なんらかの異常によって、追記不可と判断された場合には異常系処理（Ｓ３１２）を行って処理を終了する。
ステップＳ３０９の処理後、該第１のブロックの未書き込みページが全て書き込み済みになったかどうかを判断する（Ｓ３１０）。全て書き込み済みになる前に書き込みが完了すれば処理を終了する。
全て書き込み済みになった場合には、第１の論理物理変換テーブル１３１の追記フラグをＯＮからＯＦＦに変更し、必要に応じて不揮発性メモリ１２０のシステム情報ブロックを更新する（Ｓ３１１）。
【００４０】
そして、書き込みが完了すれば処理を終了するが、続きの書き込みデータがある場合には次の論理ブロックに対してステップＳ３０２からの処理を実施する（Ｓ３０７）。
＜１．４．４．読み出し処理＞
図１６は、メモリコントローラ１１０による読み出しコマンド受信時の処理を示すフローチャートである。
≪ステップＳ４０１〜Ｓ４０７≫
メモリコントローラ１１０は、アクセス装置２００から前記「読み出しコマンド」を受信すると、アーギュメント３０４から読み出し開始論理アドレス（セクタ単位）を取得し（Ｓ４０１）、論理ブロックアドレスに変換する。
その後、アドレス管理部１０６の第１の論理物理変換テーブル１３１を参照して、論理ブロックの追記フラグを参照する（Ｓ４０２）。
【００４１】
追記フラグがＯＦＦの場合は、更に第２の論理物理変換テーブル１３２を参照して第２のブロックが割り当てられているかを判断する（Ｓ４０３）。
第２のブロックが割り当てられている場合は、第１の論理物理変換テーブル１３１に登録された第１のブロックと前記第２のブロックから有効なデータを検索して、読み出しデータとしてアクセス装置２００に転送する（Ｓ４０４）。
この有効なデータの検索は、第２の論理物理変換テーブル１３２の書き込み状態の情報や、第１のブロックや第２のブロックの書き込み済みページの管理情報格納領域１２４に格納されたページ単位の論理アドレス情報等を参照して行われる。
一方、ステップＳ４０３で第２のブロックが割り当てられていない場合には、第１のブロックから読み出したデータを読み出しデータとしてアクセス装置２００に転送する（Ｓ４０５）。
【００４２】
ステップＳ４０４及びＳ４０５の処理において、第１のブロックが未割り当てであり、読み出し対象のデータが存在しない場合には、全ビット０または全ビット１等のダミーデータを読み出しデータとして転送する。すなわち、本実施形態では、未割り当ての状態のブロックは、このようにデータが論理上消去された状態として管理されている。
ステップＳ４０２において追記フラグがＯＮの場合は、第１の論理物理変換テーブル１３１に登録された第１のブロックから読み出したデータを読み出しデータとしてアクセス装置２００に転送する（Ｓ４０６）。読み出し対象が未書き込みページに相当する場合には、全ビット０または全ビット１等のダミーデータを読み出しデータとして転送してもよい。
その後、読み出しが完了すれば処理を終了するが、次の論理ブロックに対して読み出しが必要な場合にはステップＳ４０２からの処理を実施する（Ｓ４０７）。
【００４３】
＜１．５．アクセス装置２００の動作＞
次に、アクセス装置２００の動作を説明する。
＜１．５．１．初期化処理＞
図１７は、アクセス装置２００による不揮発性記憶装置１００に関する初期化処理を示すフローチャートである。
≪ステップＳ５０１〜Ｓ５０３≫
アクセス装置２００は、カードＩＦ２０４等のハードウェアを初期化する（Ｓ５０１）。
【００４４】
不揮発性記憶装置１００の装着を検出すると、不揮発性記憶装置１００に電源を投入し、上述した「初期化コマンド」を発行する（Ｓ５０２）。
不揮発性記憶装置１００の初期化が完了すると、アクセス装置２００はカードＩＦ２０４を介して不揮発性記憶装置１００のレジスタ部１０５に格納されたＡＵのサイズ情報等を取得する（Ｓ５０３）。続けて、不揮発性記憶装置１００に格納されたファイルシステムの管理情報等を読み出してファイルシステムによる読み書きの準備を行う。
＜１．５．２．ストリーム書き込み処理＞
図１８は、アクセス装置２００によるストリーム書き込み処理を示すフローチャートである。アクセス装置２００の入力部２０２から入力されたストリームデータはバッファ２０３に一時的に格納され、符号化部２０７で符号化された後、カードＩＦ２０４を介して不揮発性記憶装置１００に書き込まれる。
≪ステップＳ６０１〜Ｓ６０９≫
まず、アクセス装置２００はファイルシステムの管理情報を参照して、ストリームデータを書き込むＡＵを決定する（Ｓ６０１）。本実施形態においてアクセス装置２００は、ストリームデータをＡＵ内の先頭ＲＵから順番にＲＵ単位で書き込んでいく。従って、書き込みＡＵの決定に伴い、書き込みＲＵも自動的に決定される。
【００４５】
次に、アクセス装置２００は、不揮発性記憶装置１００に対し上記「ストリーム書き込み準備コマンド」を発行する（Ｓ６０２）。アーギュメント３０４のＡＵアドレス３０９（図１１）にはステップＳ６０１で決定したＡＵのアドレスを指定する。これにより、不揮発性記憶装置１００では図１３のストリーム書き込み準備処理を行い、該ＡＵには消去済みの物理ブロックである第１のブロックが追記フラグＯＮの状態で割り当てられる。
バッファ２０３にＲＵのサイズ分のストリームデータが準備されているかどうかを判断する（Ｓ６０３）。
準備されている場合は、不揮発性記憶装置１００に上述の「書き込みコマンド」を発行し、バッファ２０３に格納されたＲＵのサイズ分のストリームデータを転送する（Ｓ６０４）。このとき、アーギュメント３０４で指定する書き込み開始論理アドレス（セクタ単位）は、上記「ストリーム書き込み準備コマンド」で指定したＡＵの先頭論理アドレスから順に指定する。これにより、不揮発性記憶装置１００では図１４の書き込み処理を行い、転送されたＲＵサイズのデータを追記フラグＯＮの第１のブロックの先頭から順に追記していく。
【００４６】
ステップＳ６０４の処理の後、アクセス装置２００はシステム制御部２０８の内部のＲＡＭ等に保持しているファイルシステム情報を、ＲＵ書き込み後の状態に更新する（Ｓ６０５）。
ストリームデータをＡＵの最後まで書き込まれたかどうかを判断する（Ｓ６０６）。
ストリームデータをＡＵの最後まで書き込まれていない場合は、ＡＵ内の未書き込みＲＵのうち先頭のＲＵを次の書き込み先に決定し（Ｓ６０７）、ステップＳ６０３の処理に戻る。ＡＵの最後までデータを書き込んだ場合には、次の書き込み先ＡＵを探すためにステップＳ６０１の処理に戻る。
一方、ステップＳ６０３の処理で、バッファ２０３にデータが準備される前である場合には、ストリームデータが終了した場合（Ｓ６０８）には、アクセス装置２００がシステム制御部２０８の内部のＲＡＭ等に保持しているファイルシステム情報を不揮発性記憶装置１００に書き込んで（Ｓ６０９）、ストリーム書き込み処理を終了する。
【００４７】
≪ストリーム書き込み処理の転送シーケンス≫
図１９は、上述したストリーム書き込み処理におけるコマンド・レスポンス・データの転送シーケンス例を示す。
図１９では、アクセス装置２００のカードＩＦ２０４と不揮発性記憶装置１００のホストＩＦ１０１の間で、少なくとも次の５本の信号線を備えている。１つはアクセス装置２００から不揮発性記憶装置１００へのコマンドや、不揮発性記憶装置１００からアクセス装置２００へのコマンドに対するレスポンスを転送する信号線（Ｃ／Ｒ）である。残りの４つは、書き込みや読み出しのデータをアクセス装置２００及び不揮発性記憶装置１００間で並列に転送するための信号線（Ｄ０、Ｄ１、Ｄ２、Ｄ３）である。
図１９において、水平方向は時間軸と表しており、左から右に時間の流れを表している。ストリーム書き込み処理は、最初にストリーム書き込み準備コマンドとそのレスポンスが送受信されて、ストリームデータを書き込むＡＵが共有される。その後、ＲＵ単位で、書き込みコマンド、レスポンス、及び付随する書き込みデータ転送の組が送受信されるのを繰り返すことで、前記ＡＵに対するストリームデータ書き込みが行われる。別のＡＵに書き込む場合には、ストリーム書き込み準備コマンドの送受信からの繰り返しとなる。
【００４８】
なお、図示は省略しているが、ＲＵ単位の書き込みデータ転送が終了したときは、アクセス装置２００側からストップコマンドが送信され、不揮発性記憶装置１００からストップコマンドに対するレスポンスが送信される。
＜１．５．３．通常のデータの書き込み処理＞
図２０は、アクセス装置２００による通常のデータの書き込み処理を示すフローチャートである。本実施形態における通常のデータとはストリームデータ以外のデータ、すなわちファイルシステムの管理情報やストリームデータに付随するメタデータや複数のストリームデータに関連するデータ（例えば、プレイリスト）等の、比較的サイズの小さいデータを指す。これらのデータはアクセス装置２００のシステム制御部２０８のＲＡＭ上等で管理され、カードＩＦ２０４を介して不揮発性記憶装置１００に書き込まれる。
【００４９】
≪ステップＳ７０１〜Ｓ７０５≫
まず、アクセス装置２００は、ファイルシステムの管理情報を参照して、通常のデータを書き込むクラスタを決定する（Ｓ７０１）。
次に、アクセス装置２００は、不揮発性記憶装置１００に上述した「書き込みコマンド」を発行し、システム制御部２０８のＲＡＭ等に格納されたクラスタサイズ分のデータを転送する（Ｓ７０２）。これにより、不揮発性記憶装置１００では図１４の書き込み処理を行い、転送されたクラスタサイズのデータを第２のブロックに書き込む。第２の論理物理変換テーブル１３２（図６）の状態によっては、ステップＳ３０５（図１４）の第２のブロックの準備処理が必要となる。この場合、例えば２００ミリ秒〜３００ミリ秒の待ち時間が発生する場合があるが、今回書き込むクラスタデータ以外のデータについては以前に書き込んだデータが保持される。
【００５０】
ステップＳ７０２の処理の後、アクセス装置２００はシステム制御部２０８の内部のＲＡＭ等に保持しているファイルシステム情報を、クラスタ書き込み後の状態に更新する（Ｓ７０３）。
次のクラスタへの書き込みデータがある場合には（Ｓ７０４）、ステップＳ７０１の処理に戻って書き込みを継続する。
次のクラスタへの書き込みデータがない場合、アクセス装置２００がシステム制御部２０８の内部のＲＡＭ等に保持しているファイルシステム情報を不揮発性記憶装置１００に書き込んで（Ｓ７０５）、通常のデータ書き込み処理を終了する。
≪通常の書き込み処理の転送シーケンス≫
図２１に通常の書き込み処理におけるコマンド・レスポンス・データの転送シーケンス例を示す。図２１において、アクセス装置２００と不揮発性記憶装置１００間の信号線の構成は図１９の場合と同様である。通常のデータ書き込み処理は、クラスタ単位で、書き込みコマンド、レスポンス、及び付随する書き込みデータ転送の組が送受信されるのを繰り返す。なお、図示は省略しているが、クラスタ単位の書き込みデータ転送が終了したときは、アクセス装置２００側からストップコマンドが送信され、不揮発性記憶装置１００からストップコマンドに対するレスポンスが送信される。
【００５１】
＜１．５．４．データ読み出し処理＞
図２２は、アクセス装置２００によるデータ読み出し処理を示すフローチャートである。データの読み出しはストリームデータもストリームデータ以外のデータも同様にクラスタ単位で行われる。
≪ステップＳ８０１〜Ｓ８０３≫
まず、アクセス装置２００は、ファイルシステムの管理情報を参照して、データを読み出すクラスタを決定する（Ｓ８０１）。
次に、アクセス装置２００は、不揮発性記憶装置１００に上述した「読み出しコマンド」を発行し、システム制御部２０８のＲＡＭまたはバッファ２０３等に不揮発性記憶装置１００から受信したデータを格納する（Ｓ８０２）。
【００５２】
アクセス装置２００は、次のクラスタの読み出し要求がある場合には（Ｓ８０３）、ステップＳ８０１の処理に戻って読み出しを継続し、なければ処理を終了する。
＜１．６．第１実施形態の効果＞
本実施形態によれば、アクセス装置２００がブロックの全データをブロックよりもサイズの小さい単位で書き込む場合には、予め、ストリーム書き込み準備コマンドを発行することで、該ブロックのアドレスに関する情報を不揮発性記憶装置１００に通知する。これにより、不揮発性記憶装置１００は無用な整理のためのデータコピーを行うことなく、消去済みのブロックの先頭からストリームデータを一定の速度で書き込むことが可能となる。
また、ストリーム書き込み準備処理（図１３）においては、取得したＡＵアドレスが割り当てられた第１又は第２のブロックがあるかどうかを判断し、割り当てられている場合はブロックを消去し、新たなブロックを割り当てるため、より確実に新たなブロックの割り当てが可能となる。
【００５３】
以上のように、本実施形態によれば、ある一定の書き込み速度を保ちつつ、ストリームデータ等の大容量のコンテンツデータを記録可能なメモリコントローラ、不揮発性記憶装置、アクセス装置、及び不揮発性記憶システムを提供することができる。
（第２実施形態）
＜２．不揮発性記憶システム１の構成＞
本発明の第２実施形態における不揮発性記憶システム１は、第１の論理物理変換テーブル１３１において論理ブロック毎に設けていた追記フラグを有さず、代わりにアドレス管理部１０６にストリーム管理テーブル１５０を備えている。それ以外の構成は第１実施形態のものと同様である。なお、第１実施形態と同様である構成については、同一の符号をもって参照し、詳細な説明は省略する。
【００５４】
＜２．１．ストリーム管理テーブル１５０＞
図２３にストリーム管理テーブル１５０の構成例を示す。
ストリーム管理テーブル１５０は、アクセス装置２００がストリームデータを書き込む論理ブロックのアドレスと、その論理ブロックに対応する第１のブロックの書き込み状態を管理するために用いる。ストリーム管理テーブル１５０に論理ブロックアドレスが登録されていることは、第１実施形態における追記フラグがＯＮに設定されることと等価な扱いとする。
図２３の例では、最大４個のストリームデータに対して、ストリームデータ書き込み先の論理ブロックのアドレス情報と、対応する第１のブロックへの書き込み状態に関する情報（例えば書き込み済みのページ数）を登録できる。
【００５５】
第１実施形態では、第１の論理物理変換テーブル１３１の全論理ブロックに対して追記フラグを用意していたが、第２実施形態では並列に書き込むストリームデータの数だけの論理ブロックアドレスをストリーム管理テーブル１５０に記憶するようにしている。従って、並列に書き込むストリームデータの数が少ない場合には、アドレス管理部１０６が使用するメモリを削減することができる。
更に、ストリーム管理テーブル１５０に第１のブロックの書き込み状態を保持することにより、不揮発性記憶装置１００による書き込み処理において、図１４のステップＳ３０８では、第１のブロックへの追記の可否の判定を不揮発性メモリ１２０へのアクセスなし行うことができ、高速化が図れる。
＜２．２．アクセス装置２００による論理空間の管理＞
不揮発性記憶装置１００が提供する論理空間をアクセス装置２００が管理する方法は第１実施形態と同様である。
【００５６】
＜２．２．１．コマンドフォーマット＞
「ストリーム書き込み準備コマンド」のフォーマットは、図２４に示すように、ストリーム番号３１０を含むことにより、アクセス装置２００がストリーム番号３１０を指定できるようにする。それ以外のフォーマットは図１１に示す第１実施形態と同様である。
＜２．３．不揮発性記憶装置１００の動作＞
本実施形態に係る不揮発性記憶装置１００の動作は、以下の点において第１実施形態と異なる。
＜２．３．１．ストリーム書き込み準備処理＞
メモリコントローラ１１０がストリーム書き込み準備コマンドを受信した場合の処理（図１３）においては、本実施形態は第１実施形態と次の点において異なる。
【００５７】
ステップＳ２０６において、追記フラグをＯＮにする代わりに、ストリーム管理テーブル１５０に論理ブロックアドレスを登録する。登録先のストリーム番号は、アーギュメント３０４のストリーム番号３１０で指定された番号とする。
＜２．３．２．書き込み処理＞
また、メモリコントローラ１１０が書き込みコマンド及び付随する書き込みデータを受信した場合の処理（図１４）においては、本実施形態は第１実施形態と次の点において異なる。
ステップＳ３０２では、追記フラグがＯＮか否かを判断する代わりに、ストリーム管理テーブル１５０に該論理ブロックアドレスの登録があるか否かを判断する。
ステップＳ３１１では、追記フラグをＯＦＦにする代わりに、ストリーム管理テーブル１５０から論理ブロックアドレスの登録を削除する。
【００５８】
＜２．３．３．読み出し処理＞
また、メモリコントローラ１１０が読み出しコマンドを受信した場合の処理（図１６）においては、本実施形態は第１実施形態と次の点において異なる。
ステップＳ４０２では、追記フラグがＯＮか否かを判断する代わりに、ストリーム管理テーブル１５０に該論理ブロックアドレスの登録があるか否かを判断する。
上記以外の不揮発性記憶装置１００の動作については、第１実施形態とほぼ同様である。
＜２．４．アクセス装置２００の動作＞
アクセス装置２００は、図１８のステップＳ６０２のストリーム書き込み準備コマンドの発行において、ストリームデータ毎に異なるストリーム番号をストリーム番号３１０として指定する。その他の動作については第１実施形態とほぼ同様である。
【００５９】
＜２．５．第２実施形態の効果＞
以上のように、本実施形態においては、第１実施形態と同様に、アクセス装置２００がブロックの全データをブロックよりもサイズの小さい単位で書き込む場合には、予め、ストリーム書き込み準備コマンドを発行することで該ブロックのアドレスに関する情報を不揮発性記憶装置１００に通知する。これにより、不揮発性記憶装置１００は無用な整理のためのデータコピーを行うことなく、消去ブロックの先頭からストリームデータを書き込むことが可能となる。従って、ある一定の書き込み速度を保ちつつ、ストリームデータ等の大容量のコンテンツデータを記録可能なメモリコントローラ、不揮発性記憶装置、アクセス装置、及び不揮発性記憶システムを提供することができる。特に、本実施形態に係るメモリコントローラ、不揮発性記憶装置、及び不揮発性記憶システムは、大容量化に伴い大ブロック化が進むフラッシュメモリを用いた半導体記録媒体において有効である。
【００６０】
また、本実施形態においては、第１実施形態の効果に加えて、次の効果を有する。本実施形態によれば、並行して書き込むストリームデータの数だけの論理ブロックアドレスをストリーム管理テーブル１５０に記憶するようにしている。従って、並列に書き込むストリームデータの数が少ない場合には、アドレス管理部１０６が使用するメモリを削減することができる。また、ストリーム管理テーブル１５０に第１のブロックの書き込み状態を保持することにより、第１のブロックへの追記の可否の判定を不揮発性メモリ１２０へのアクセスなし行うことができ、高速化が図れる。
（その他実施形態）
【００６１】
（１）
上記実施形態又は下記の実施形態においては、第１及び第２ブロックを空きブロックにする場合、ブロックを消去するとしているが、ブロックを破棄してもよい。ブロックを破棄するとは、論理上、当該ブロックを空のブロックとして管理することを含む。例えば、第１又は第２のブロックを未割り当ての状態として管理することである。この場合、未割り当ての状態であるブロックに残されたデータは消去されていても、新たなデータが書き込まれるまでそのまま残されていても、それ以外の任意のデータ（例えば、一部または全部が元のデータと異なっているデータ）であっても、よい。つまりどのような内容のデータであってもよく、データの状態も正常、異常を問わない。破棄することにより読出し時には任意のデータが読み出されることになる。
（２）
上記第１及び第２実施形態においては、ストリーム書き込み準備コマンド（第１のコマンド）はＡＵ単位の書き込み範囲（第１の書き込み範囲）を識別するＡＵアドレス３０９を含んでいたが、本発明はこれに限定されない。ストリーム書き込み準備コマンドではＡＵアドレスを指定せず、次に受信される書き込みコマンド（第２のコマンド）がＡＵアドレスを含んでいてもよい。つまり、ストリーム書き込み準備コマンドはストリームデータの書き込みを通知するだけとし、その次に受信される書き込みコマンドは、ＡＵアドレスとＲＵアドレス（第２の書き込み範囲の識別情報）とを含むようにしてもよい。
この場合、図２５及び図２６に示すような処理が行われる。
≪ステップＳ１２０１〜Ｓ１２０２≫
まず、図２５に示すように、メモリコントローラ１１０は、アクセス装置２００から「ストリーム書き込み準備コマンド」を受信すると（Ｓ１２０１）、同コマンドを受信したことを示す受信フラグをＯＮにする（Ｓ１２０２）。
≪ステップＳ１３０１〜Ｓ１３０３≫
次に、図２６に示すように、メモリコントローラ１１０は、アクセス装置２００から「書き込みコマンド」を受信すると、アーギュメント３０４から書き込み開始論理アドレス（セクタ単位）を取得し（Ｓ１３０１）、論理ブロックアドレスに変換する。
次いで、メモリコントローラ１１０は、「ストリーム書き込み準備コマンド」の受信フラグがＯＮかどうかを判定する（Ｓ１３０２）。この判定の結果、受信フラグがＯＮである場合は、ストリーム書き込み準備処理（図１３のＳ２０１〜２０６の処理）を行う（Ｓ１３０３）。つまり、受信フラグがＯＮである場合は、受信された「書き込みコマンド」は、図２５の「ストリーム書き込み準備コマンド」の次に受信されたコマンドであり、ＡＵアドレスを含む。したがって、ここでは、メモリコントローラ１１０は、そのＡＵアドレスの値とレジスタ部１０５に設定したＡＵのサイズ情報から、指定されたＡＵに対応する論理ブロックを特定し、指定論理ブロックはアクセス装置２００がこれからストリーム書き込みを行う論理ブロックとして認知される。そして、受信フラグをＯＦＦにする（Ｓ１３０４）。
一方、受信フラグがＯＦＦである場合、図１４のステップＳ３０２〜３１２の処理を行う（Ｓ１３０５）。つまり、受信フラグがＯＦＦである場合、ストリーム書き込みを行う論理ブロックはすでに特定されているため、通常のＲＵ単位の書き込み処理が行われる。
以上の構成及び処理によれば、メモリコントローラ１１０は、ストリーム書き込み準備コマンドの受信時には論理ブロックの消去を行わす、書き込みコマンドが発生した時点で論理ブロックの消去を行うようにできる。これにより、ストリーム書き込み準備コマンド発行後にストリーム書き込み処理が中止された場合に、ストリーム書き込み準備コマンドで指定したＡＵのデータを保持することができる。
なお、上記実施形態において、ストリーム書き込み準備コマンドはストリーム番号を含み、第２実施形態と同様に処理を行ってもよい。
（３）
上記実施形態におけるコマンドフォーマットは一例である。適用する不揮発性記憶システムに応じて、コマンドフォーマットを変更したり、１つのコマンドを複数のコマンドに分割したり、複数のコマンドを１つに結合したりすること等が考えられるが、コマンドフォーマットに依存せず、同様の効果が期待できる。
（４）
上記実施形態において、ＡＵを論理ブロックサイズと同じとしたが、１つのＡＵを複数ブロックで構成してもよい。例えば、並列書込みが可能なブロックを組としたスーパーブロックをＡＵとし、論理アドレス管理テーブル等もスーパーブロック単位で管理してもよい。これにより、より高速な不揮発性記憶装置等を提供できる。
【００６２】
（５）
上記実施形態においては、図１３に示すストリーム書き込み準備コマンド受信時の処理であるステップＳ２０３やステップＳ２０５で、書き込み済みのデータを消去するものとして説明したが、ステップＳ２０３やステップＳ２０５の処理ではデータを消去する予約処理だけを行い、ＡＵへの書き込みコマンドが発生した時点でデータ消去を行ってもよい。これにより、ストリーム書き込み準備コマンド発行後にストリーム書き込み処理が中止された場合に、ストリーム書き込み準備コマンドで指定したＡＵのデータを保持することができる。
（６）
上記実施形態において、図１４のステップＳ３１２の異常系処理としてエラーを示すレスポンスを発行して処理を終了しているが、書き込みを継続するための処理として、次のような変形例も考えられる。
【００６３】
（変形例１）
該第１のブロックの未書込みページに全ビット０または全ビット１等のダミーデータを書き込んで該第１のブロックへの書込みを完結させてから追記フラグをＯＦＦとした後、ステップＳ３０２の処理に戻る。これにより、一時的に書き込み速度は低下するものの、書き込み済みのデータは保持することができる。
（変形例２）
該第１のブロックを消去し、別の空きブロックを消去して第１のブロックに割り当てて、書き込みを行う。これにより、書き込み済みのデータは消去されるが、一時的に書き込み速度が著しく低下することを回避できる。
（７）
上記第２実施形態において、ストリーム管理テーブル１５０が管理できるストリームデータの数の上限を４個としたが、これに限定されるものではなく、任意の個数での設計が可能である。
なお、本発明は上記の実施形態に限定されるべきでなく、本発明の趣旨を逸脱しない範囲で実施変更することができる。例えば、フローチャートで示した各処理はその順序は上述したものに限定されるべきでなく、本発明の趣旨を逸脱しない範囲で変更することができる。
【産業上の利用可能性】
【００６４】
本発明は、半導体メモリカードはいうまでもなく、半導体メモリカード等の不揮発性記憶装置を使用した静止画記録再生装置や動画記録再生装置、あるいは携帯電話においても有用である。
【符号の説明】
【００６５】
１      不揮発性記憶システム
１００  不揮発性記憶装置
１０１  ホストインターフェース（インターフェース部）
１０２  バッファ
１０３  読み書き制御部
１０４  ＣＰＵ
１０５  レジスタ部
１０６  アドレス管理部
１１０  メモリコントローラ
１２０  不揮発性メモリ
１２１  ブロック
１２２  ページ
１２３  データ格納領域
１２４  管理情報格納領域
１３１  第１の論理物理変換テーブル
１３２  第２の論理物理変換テーブル
１４０  空きブロック管理テーブル
１５０  ストリーム管理テーブル
２００  アクセス装置
２０１  入力制御部
２０２  入力部
２０３  バッファ
２０４  カードインターフェース
２０５  表示部
２０６  表示制御部
２０７  符号化部
２０８  システム制御部
【手続補正書】
【提出日】平成23年2月24日(2011.2.24)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
不揮発性メモリと、
前記不揮発性メモリへのデータの書き込み及び読み出しを制御するメモリコントローラと、
を備える、不揮発性記憶装置であって、
前記メモリコントローラは、
データを書き込むための第１の書き込み範囲を識別する第１のコマンドと、前記第１の書き込み範囲の一部である第２の書き込み範囲を識別し前記第２の書き込み範囲へのデータの書き込みを指示する第２のコマンドと、を受信するインターフェース部と、
前記不揮発性メモリへのデータの書き込み前に、前記第１のコマンドに基づいて、前記第１の書き込み範囲に対してデータを書き込むための新たなブロックを選定するアドレス管理部と、
前記第２のコマンドに応じて、前記新たなブロックにデータを記録する読み書き制御部と、
有する、
不揮発性記憶装置。
【請求項２】
不揮発性メモリと、
前記不揮発性メモリへのデータの書き込み及び読み出しを制御するメモリコントローラと、
を備える、不揮発性記憶装置であって、
前記メモリコントローラは、
データの書き込みを通知する第１のコマンドと、前記データの書き込みを指示する第２のコマンドと、を受信するインターフェース部と、
前記不揮発性メモリへの前記データの書き込み前に、前記インターフェース部により第１のコマンドの次に受信される第２のコマンドに基づいて、前記データを書き込むための新たなブロックを選定するアドレス管理部と、
前記インターフェース部により受信される第２のコマンドに応じて、前記新たなブロックに前記データを記録する読み書き制御部と、
有し、
前記インターフェース部により第１のコマンドの次に受信される前記第２のコマンドは、前記データを書き込むための第１の書き込み範囲を識別する情報と、前記第１の書き込み範囲の一部である第２の書き込み範囲を識別する情報とを含み、前記第２の書き込み範囲へのデータの書き込みを指示し、
前記アドレス管理部は、前記第１のコマンドの次に前記第２のコマンドを受信すると、前記第１の書き込み範囲に対し選定されている一以上のブロックを破棄または消去する、
不揮発性記憶装置。
【請求項３】
前記アドレス管理部は、前記新たなブロックを選定する前に、
前記第１の書き込み範囲に対し選定されている一以上のブロックがあるかどうかを判断し、
前記一以上のブロックがあると判断した場合は、前記一以上のブロックを破棄する、
請求項１又は２に記載の不揮発性記憶装置。
【請求項４】
前記アドレス管理部は、前記新たなブロックを選定する前に、
前記第１の書き込み範囲に対し選定されている一以上のブロックがあるかどうかを判断し、
前記一以上のブロックがあると判断した場合は、前記一以上のブロックを消去する、
請求項１又は２に記載の不揮発性記憶装置。
【請求項５】
前記第１の書き込み範囲は、前記第２の書き込み範囲の整数倍である、
請求項１又は２に記載の不揮発性記憶装置。
【請求項６】
前記第１のコマンドは、前記第１の書き込み範囲を識別する第１の識別情報を含む、
請求項１に記載の不揮発性記憶装置。
【請求項７】
前記第１のコマンドは、ストリームデータを識別する第２の識別情報を含む、
請求項１又は２に記載の不揮発性記憶装置。
【請求項８】
前記アドレス管理部は、前記第２の識別情報毎に、前記新たなブロックを選定する、
請求項７に記載の不揮発性記憶装置。
【請求項９】
前記アドレス管理部は、複数の前記第２の識別情報を保持し、
前記読み書き制御部は、前記複数の第２の識別情報に対応する複数の前記新たなブロックに、並行してデータを記録する、
請求項８に記載の不揮発性記憶装置。
【請求項１０】
不揮発性記憶装置へのデータの書き込み及び読み出しを制御するアクセス装置あって、
データを書き込むための第１の書き込み範囲を識別する情報を含む第１のコマンドを前記不揮発性記憶装置に送信し、
前記第１のコマンドに基づいて、前記第１の書き込み範囲に対して、データを書き込むための新たなブロックを選定し、
前記第１のコマンドの送信後、前記第１の書き込み範囲の一部である第２の書き込み範囲を識別する情報を含み前記第２の書き込み範囲へのデータの書き込みを指示する第２のコマンドを、複数回、前記不揮発性記憶装置に送信する、
アクセス装置。
【請求項１１】
不揮発性記憶装置へのデータの書き込み及び読み出しを制御するアクセス装置あって、
データの書き込みを通知する第１のコマンドを前記不揮発性記憶装置に送信し、
前記第１のコマンドの送信後、それぞれが前記データの書き込みを指示する第２のコマンドを、複数回、前記不揮発性記憶装置に送信し、
前記第１のコマンドの次に送信される第２のコマンドは、前記データを書き込むための第１の書き込み範囲を識別する情報と、前記第１の書き込み範囲の一部である第２の書き込み範囲を識別する情報とを含み、前記第２の書き込み範囲へのデータの書き込みを指示し、
前記第１のコマンドの次に受信される前記第２のコマンドに基づいて、前記第１の書き込み範囲に対し選定されているブロックの破棄または消去と、データを書き込むための新たなブロックの選定を行う、
アクセス装置。
【請求項１２】
請求項１〜９のいずれか１項に記載の不揮発性記憶装置と、
請求項１０又は１１に記載のアクセス装置と、
を備える、
不揮発性記憶システム。
【請求項１３】
不揮発性メモリへのデータの書き込み及び読み出しを制御するメモリコントローラであって、
データを書き込むための第１の書き込み範囲を識別する第１のコマンドと、前記第１の書き込み範囲の一部である第２の書き込み範囲を識別し前記第２の書き込み範囲へのデータの書き込みを指示する第２のコマンドと、を受信するインターフェース部と、
前記不揮発性メモリへのデータの書き込み前に、前記第１のコマンドに基づいて、前記第１の書き込み範囲に対してデータを書き込むための新たなブロックを選定するアドレス管理部と、
前記第２のコマンドに応じて、前記新たなブロックにデータを記録する読み書き制御部と、
備える、
メモリコントローラ。
【請求項１４】
不揮発性メモリへのデータの書き込み及び読み出しを制御するメモリコントローラであって、
データの書き込みを通知する第１のコマンドと、前記データの書き込みを指示する第２のコマンドと、を受信するインターフェース部と、
前記不揮発性メモリへのデータの書き込み前に、前記インターフェース部により第１のコマンドの次に受信される第２のコマンドに基づいて、前記データを書き込むための新たなブロックを選定するアドレス管理部と、
前記インターフェース部により受信される第２のコマンドに応じて、前記新たなブロックにデータを記録する読み書き制御部と、
有し、
前記インターフェース部により第１のコマンドの次に受信される前記第２のコマンドは、前記データを書き込むための第１の書き込み範囲を識別する情報と、前記第１の書き込み範囲の一部である第２の書き込み範囲を識別する情報とを含み、第２の書き込み範囲へのデータの書き込みを指示し、
前記アドレス管理部は、前記第１のコマンドの次に前記第２のコマンドを受信すると、前記第１の書き込み範囲に対し選定されている一以上のブロックを破棄または消去する、
メモリコントローラ。
【国際調査報告】
2010146767.tif 000055
2010146767.tif 000056
2010146767.tif 000057
2010146767.tif 000058