(57)【要約】【課題】  複数のファイルデータを平行してリアルタイムで記録可能なメモリデバイスを提供する。【解決手段】  メモリデバイスは、半導体メモリ３１と、メモリに書き込まれる書き込みデータを受け取り、開始コマンドを受け取るとシーケンシャル書き込みモードに移行するコントローラ３２を含む。コントローラは、シーケンシャル書き込みモードにおいて、書き込みコマンドの直前に受け取った制御コマンドを認識し、制御コマンドまたは論理アドレスにより対象とする書き込みデータが一部を構成するデータストリームを識別し、データストリーム毎に用意されたバッファに書き込みデータを書き込み、各バッファにおいて書き込みデータのアドレスの順序に従ってデータストリームを順次書き込み、終了コマンドを受け取ると該当するストリームについてのバッファに対して終了処理を行い、全てのデータストリームの終了処理が完了するとランダム書き込みモードに移行する。【選択図】      図１
2011175615.tif 000002
【特許請求の範囲】
【請求項１】
複数の記憶領域を有する不揮発性の半導体メモリと、
前記半導体メモリに書き込まれる書き込みデータを受け取り、ランダム書き込みモードとシーケンシャル書き込みモードとを有し、開始コマンドを受け取ると前記シーケンシャル書き込みモードに移行し、前記シーケンシャル書き込みモードにおいて、
書き込みコマンドの直前に受け取った制御コマンドを認識し、前記制御コマンドまたは論理アドレスにより対象とする書き込みデータが一部を構成するデータストリームを識別し、識別されたデータストリーム毎に前記半導体メモリ内に用意されたバッファに前記書き込みデータを書き込み、各バッファにおいて前記書き込みデータのアドレスの順序に従って前記データストリームを順次書き込み、終了コマンドを受け取ると該当するストリームについての前記バッファに対して書き込み終了処理を行い、全てのデータストリームの書き込み終了処理が完了すると前記ランダム書き込みモードに移行する、コントローラと、
を具備することを特徴とするメモリデバイス。
【請求項２】
複数の記憶領域を有する不揮発性の半導体メモリと、
前記半導体メモリに書き込まれる書き込みデータを受け取り、ランダム書き込みモードとシーケンシャル書き込みモードとを有し、開始コマンドを受け取ると前記シーケンシャル書き込みモードに移行し、前記シーケンシャル書き込みモードにおいて、
書き込みコマンドの直前に受け取った制御コマンドを認識し、前記制御コマンドまたは論理アドレスにより対象とする書き込みデータが一部を構成するデータストリームを識別し、識別されたデータストリーム毎に前記メモリ内に用意したバッファに書き込み、各バッファにおいて前記書き込みデータのアドレスの順序に従って前記データストリームを順次書き込み、ランダム書き込み要求を検出した場合は、全ての前記バッファに対する書き込み終了処理を待たずにランダム書き込みモードに移行する、コントローラと、
を具備することを特徴とするメモリデバイス。
【請求項３】
前記制御コマンドが、当該制御コマンドの直後のコマンドが対象とするストリームを特定する情報と、動作を指定する情報と、を有し、
前記動作を指定する情報に応じて、前記制御コマンドが、当該制御コマンドが特定するストリームについての、前記開始コマンド、前記終了コマンド、前記バッファに代えて新しいバッファを用意することを指示するコマンド、複数の前記書き込みデータ同士の連結の順序に関する情報を前記メモリデバイスに保持することを指示するコマンド、のいずれかとして機能する、
ことを特徴とする請求項１または２のメモリデバイス。
【請求項４】
複数の記憶領域を有する不揮発性の半導体メモリと、
前記メモリに書き込まれる書き込みデータを受け取り、ランダム書き込みモードとシーケンシャル書き込みモードとを有し、開始コマンドを受け取ると前記シーケンシャル書き込みモードに移行し、前記シーケンシャル書き込みモードにおいて、
制御コマンドを認識し、前記制御コマンドまたは論理アドレスにより対象とする書き込みデータが一部を構成するデータストリームを識別し、識別されたデータストリーム毎に所定数の前記複数の記憶領域からなり且つ外部からアクセス可能な単位領域または前記複数の記憶領域からなるバッファを用意し、前記単位領域または前記バッファにおいて前記書き込みデータを連続する前記複数の記憶領域に当該書き込みデータのアドレスと同じ順序で前記データストリームを書き込み、終了コマンドを受け取ると該当するストリームについての前記バッファに対して書き込み終了処理を行い、全てのデータストリームの書き込み終了処理が完了すると前記ランダム書き込みモードに移行するかランダム書き込み要求を検出するとランダム書き込みモードに移行する、コントローラと、
を具備することを特徴とするメモリデバイス。
【請求項５】
前記制御コマンドが、当該制御コマンドが対象とするストリームまたは当該制御コマンドの直後の書き込みコマンドが対象とするデータストリームを特定する情報と、動作を指定する情報と、を有し、
前記動作を指定する情報に応じて、前記制御コマンドが、当該制御コマンドが特定するストリームについての、前記開始コマンド、前記終了コマンド、前記バッファに代えて新しいバッファを用意することを指示するコマンド、複数の前記書き込みデータ同士の連結の順序に関する情報を前記メモリデバイスに保持することを指示するコマンド、のいずれかとして機能する、
ことを特徴とする請求項４のメモリデバイス。
【請求項６】
前記メモリデバイスが、１つのデータストリームのための書き込みデータを連続する前記複数の記憶領域に当該書き込みデータのアドレスと同じ順序で書き込む第２シーケンシャル書き込みモードをさらに有し、
前記制御コマンドが、前記シーケンシャル書き込みモードへの移行を指示するとともに当該制御コマンドが対象とするストリームを特定する情報または前記第２シーケンシャル書き込みモードへの移行を指示する情報を含む、
請求項５のメモリデバイス。
【請求項７】
前記コントローラが、アドレス比較部を具備し、
前記アドレス比較部が、
複数の前記データストリームの各々に専用の、前記制御コマンドの直後の書き込みコマンドが指定するデータの書き込み先アドレスを格納する複数のレジスタと、
前記複数のレジスタと一対一で対応し、受け取った書き込みコマンドが指定するデータの書き込み先アドレスと、対応する前記レジスタに格納されている前記書き込み先アドレスとが一致している場合に信号を出力する複数の比較器と、
を具備し、
前記コントローラが、前記受け取った書き込みコマンドと前記信号を出力した前記比較器が対応するデータストリームと前記バッファを関連付ける、
ことを特徴とする請求項１乃至６のいずれか１項のメモリデバイス。
【請求項８】
複数の記憶領域を有する不揮発性の半導体メモリと前記メモリを制御するコントローラとを有するメモリデバイスにデータを書き込むホスト装置であって、
前記メモリに書き込まれるデータを予め定められた大きさに分割して書き込みデータを用意するアプリケーションソフトウェアと、
前記書き込みデータを複数の前記記憶領域のアドレスの順序と前記記憶領域に書き込まれたデータの論理アドレスの順序とが同じとなるように書き込むシーケンシャル書き込みモードへの移行を指示する開始コマンド、および前記書き込みデータの書き込みを指示する書き込みコマンドの直前に相互に独立する複数のデータストリームのうちの当該書き込みコマンドが対象とするデータストリームを特定する制御コマンド、を発行する機能を有するインターフェースと、
を具備することを特徴とするホスト装置。
【請求項９】
前記開始コマンドが、前記シーケンシャル書き込みモードへの移行を指示するとともに当該開始コマンドが対象とするデータストリームを特定する情報か、１つのデータストリームのための書き込みデータを連続する前記複数の記憶領域に当該書き込みデータのアドレスと同じ順序で書き込む第２シーケンシャル書き込みモードへの移行を指示する情報を含む、
ことを特徴とする、請求項８のホスト装置。
【請求項１０】
前記メモリデバイスから前記メモリデバイスが保証する最低書き込み速度についての性能情報を受け取り、前記性能情報を用いて、平行して前記メモリデバイスに書き込み可能な複数の前記データストリームの数および複数の前記データストリームの各々についてのビットレートを決定するレート決定部をさらに具備する、フローコントローラをさらに具備する、
ことを特徴とする請求項８または９のホスト装置。
【請求項１１】
前記フローコントローラが、
複数の前記データストリームの各々に専用の、対応するデータストリームを構成する前記書き込みデータを保持する複数のデータバッファを具備し、
複数の前記データストリームの各々について決定された前記ビットレートを実現するように複数の前記データバッファ内の複数の前記書き込みデータを時分割の原理で送出する、
ことを特徴とする請求項１０のホスト装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、ホスト装置およびメモリデバイスに関し、特に不揮発性半導体メモリを用いたメモリデバイスおよびそのようなメモリデバイスを受け付けるホスト装置に関する。
【背景技術】
【０００２】
現在、音楽データや映像データの記録メディアとして、フラッシュメモリ等の不揮発性半導体メモリを用いたメモリデバイスが使われている。メモリデバイスは、多くの場合、メモリを制御するためのコントローラを内蔵している。コントローラは、このようなメモリデバイスを挿入されるホストのファイルシステムから依頼された、論理アドレスを割り当てられた書き込みデータを、フラッシュメモリの未書き込みの記憶領域に書き込む指示を出す。また、コントローラは、ファイルシステムによってデータに割り当てられた論理アドレスと、このデータを保存している、フラッシュメモリの記憶領域の位置との関係を管理しておく。メモリデバイスに使用されるフラッシュメモリの代表例としては、ＮＡＮＤ型フラッシュメモリが挙げられる。
【０００３】
ユーザがホスト装置を通じてメモリデバイスの性能を知ることが求められることがある。そのような性能には、メモリデバイスの記録速度、記録に要する時間、記録可能時間などが含まれる。これらの性能を予測するための技術が、特開２００６−１７８９２３（特許文献１）に記載されている。
【０００４】
メモリの容量増大や、メモリデバイスの性能向上や、ユーザが記録することを望むコンテンツの多様化によって、ユーザのメモリデバイスの使用形態が多様化している。例えば、２つのテレビ番組のような２つの動画を平行して録画することや、動画を撮影している最中に静止画を撮影することといった要望が出現している。ところが、フラッシュメモリにはデータの上書きができないため、データのコピーが必要になる場合がある。データのコピーは長時間を要するので、データのコピーを伴う書き込みは速度が遅い。このため、上記の要望に答えて複数のファイルデータ、特に複数のファイルデータを平行してリアルタイムでメモリデバイスに書き込むことができない。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開2006-178923号公報
【特許文献２】特開2010-140268号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
複数のファイルデータを平行してリアルタイムで記録可能なホスト装置およびメモリデバイスを提供しようとするものである。
【課題を解決するための手段】
【０００７】
本発明の一態様によるメモリデバイスは、複数の記憶領域を有する不揮発性の半導体メモリと、前記メモリに書き込まれる書き込みデータを受け取り、ランダム書き込みモードとシーケンシャル書き込みモードとを有し、開始コマンドを受け取ると前記シーケンシャル書き込みモードに移行し、シーケンシャル書き込みモードにおいて、書き込みコマンドの直前に受け取った制御コマンドを認識し、前記制御コマンドまたは論理アドレスにより対象とする書き込みデータが一部を構成するデータストリームを識別し、識別されたデータストリーム毎にメモリ内に用意されたバッファに前記書き込みデータを書き込み、各バッファにおいて前記書き込みデータのアドレスの順序に従って前記データストリームを順次書き込み、終了コマンドを受け取ると該当するストリームについての前記バッファに対して書き込み終了処理を行い、全てのデータストリームの書き込み終了処理が完了すると前記ランダム書き込みモードに移行する、コントローラと、を具備することを特徴とする。
【発明の効果】
【０００８】
本発明によれば、複数のファイルデータを平行してリアルタイムで記録可能なホスト装置およびメモリデバイスを提供できる。
【図面の簡単な説明】
【０００９】
【図１】第１実施形態に係るホスト装置およびメモリカードの機能ブロックを例示する図。
【図２】第１実施形態に係るフローコントローラを例示する図。
【図３】メモリカード内のレジスタの例を例示する図。
【図４】メモリカードのメモリ空間の構成を例示する図。
【図５】ホストが認識している記憶領域とメモリカードの記憶領域を例示する図。
【図６】メモリカード内のアドレス比較部を例示する図。
【図７】第１実施形態に係るコマンドの例を例示する図。
【図８】第１実施形態における、シーケンシャル書き込み制御コマンドとその後で授受される信号を例示する図。
【図９】ランダム書き込みモードにおけるメモリカードおよびホストの一状態を例示する図。
【図１０】図９に続く状態を例示する図。
【図１１】図１０に続く状態を例示する図。
【図１２】第１実施形態において、ホストからメモリカードに送られるコマンドを例示する図。
【図１３】シーケンシャル書き込みモードにあるメモリカードおよびホストの一状態を例示する図。
【図１４】図１３に続く状態を例示する図。
【図１５】図１４に続く状態を例示する図。
【図１６】図１５に続く状態を例示する図。
【図１７】図１６に続く状態を例示する図。
【図１８】図１７に続く状態を例示する図。
【図１９】図１８に続く状態を例示する図。
【図２０】図１９に続く状態を例示する図。
【図２１】図２０に続く状態を例示する図。
【図２２】図２１に続く状態を例示する図。
【図２３】図２２に続く状態を例示する図。
【図２４】図２３に続く状態を例示する図。
【図２５】図２４に続く状態を例示する図。
【図２６】図２５に続く状態を例示する図。
【図２７】図２６に続く状態を例示する図。
【図２８】図２７に続く状態を例示する図。
【図２９】４つのＡＵバッファが設けられている状態を例示する図。
【図３０】データ読み出し時のメモリカードおよびホストの一状態を例示する図。
【図３１】図３０に続く状態を例示する図。
【図３２】図３１に続く状態を例示する図。
【図３３】第２実施形態における、データ読み出し時のメモリカードおよびホストの一状態を例示する図。
【図３４】図３３に続く状態を例示する図。
【図３５】第３実施形態に係るコマンドの例を例示する図。
【図３６】第３実施形態における、シーケンシャル書き込み制御コマンドとその後で授受される信号を例示する図。
【図３７】第３実施形態における、シーケンシャル書き込み制御コマンドとその後で授受される信号を例示する図。
【図３８】第３実施形態における、シーケンシャル書き込み制御コマンドとその後で授受される信号を例示する図。
【図３９】第３実施形態に係るメモリカードによるモードの状態遷移を示している。
【図４０】第３実施形態に係るメモリカード内のレジスタの例を例示する図。
【図４１】第３実施形態において、ホストからメモリカードに送られるコマンドを例示する図。
【発明を実施するための形態】
【００１０】
以下に本発明の実施形態について図面を参照して説明する。なお、以下の説明において、略同一の機能及び構成を有する構成要素については、同一符号を付し、重複説明は必要な場合にのみ行う。参照符号の最後のアルファベットは、同様の要素を相互に識別するためのものであり、これらの要素を相互に識別する必要がない場合、アルファベットを省略する。
【００１１】
以下に示す各実施形態は、この発明の技術的思想を具体化するための装置や方法を例示するものであって、この発明の技術的思想は、構成部品の材質、形状、構造、配置等を下記のものに特定するものでない。この発明の技術的思想は、特許請求の範囲において、種々の変更を加えることができる。
【００１２】
各機能ブロックは、ハードウェア、コンピュータソフトウェアのいずれかまたは両者を組み合わせたものとして実現することができる。このため、各ブロックがこれらのいずれでもあることが明確となるように、概してそれらの機能の観点から以下に説明する。このような機能が、ハードウェアとして実行されるか、またはソフトウェアとして実行されるかは、具体的な実施態様またはシステム全体に課される設計制約に依存する。当業者は、具体的な実施態様ごとに、種々の方法でこれらの機能を実現し得るが、いずれの実現の手法も本発明の範疇に含まれる。
【００１３】
なお、以下、本発明の実施形態に係るメモリデバイスの一例としてメモリカード、特にＳＤカードを用いて説明を行う。しかしながら、以下に説明するようなメモリと、このメモリを制御するコントローラを有するあらゆるメモリデバイスが本発明の範疇に含まれる。
【００１４】
（第１実施形態）
［１］  構成
図１〜図６を参照して、本発明の第１実施形態に係るメモリカードの構成について説明する。図１は、第１実施形態に係るホスト装置１およびメモリカード２の主要な機能ブロックを例示している。ホスト装置（以下、ホストと称する）１は、ＭＰＵ（micro processing unit）１１、ソフトウェア１２、ファイルシステム１３、フローコントローラ１４、ＳＤインターフェース１５、ＲＯＭ（read only memory）１６、ＲＡＭ（random access memory）１７等を含んでいる。
【００１５】
ＭＰＵ１１は、ホスト１全体の動作を司る。ホスト１が電源供給を受けた際にＲＯＭ１６に格納されているファームウェア（制御プログラム（命令））がＲＡＭ１７上に読み出される。そして、ＭＰＵ１１は、このファームウェア（命令）に従って所定の処理を実行する。ソフトウェア１２およびファイルシステム１３は、ＲＯＭ１６やＲＡＭ１７上に位置し、ＭＰＵ１１に所定の処理を実行させるための命令を含んだプログラムを含んでいる。ソフトウェア１２は、アプリケーション、オペレーティング・システム等を含んでおり、ユーザからメモリカード２へのデータの書き込み、メモリカード２からのデータの読み出し等を指示される。ソフトウェア１２は、データの書き込みおよび読み出しをファイルシステム１３に指示する。ファイルシステム１３は、管理対象の記憶媒体に記録されているファイルデータを管理するための仕組みであり、記憶媒体の記憶領域内に管理情報を記録し、この管理情報を用いてファイルデータを管理する。
【００１６】
ＳＤインターフェース１５は、ホスト１とメモリカード２との間のインターフェース処を取るのに必要なハードウェア、ソフトウェアからなる。ホスト１は、ＳＤインターフェース１５を介してメモリカード２と通信を行う。ＳＤインターフェース１５は、ホスト１とメモリカード２とが通信するのに必要な様々な取り決めを規定し、後述のメモリカード２のＳＤインターフェース４１と相互に認識可能な各種のコマンドの組を備えている。また、ＳＤインターフェース１５は、ＳＤインターフェース４１と接続可能なハードウェア上の構成（ピンの配置、数等）も含む。
【００１７】
フローコントローラ１４は、ホスト１からメモリカード２に送出されるデータのフローを管理し、図２に例示するように、複数のバッファ２１ａ〜２１ｄ、ＣＩ（continuation information）用バッファ２２ａ〜２２ｄ、マルチプレクサ２３、ストリーム制御部２４を有する。ストリーム制御部２４は、少なくともレート決定部２５を含んでいる。バッファ２１ａ〜２１ｄの数は、ホスト１およびメモリカード２がサポートする、同時に書き込み可能なデータストリームの数と等しい。図１では、バッファの数は４であり、以下、この数４を例に用いて説明を行なう。各バッファ２１ａ〜２１ｄは、各ストリーム専用に設けられており、ストリーム１〜４のデータをそれぞれ一時的に保持する。ＣＩ用バッファ２２は、ＣＩ（continuation information）を一時的に保持する。ＣＩは、各ストリームについて、所定の大きさに分割された書き込みデータの連結の順序に関する情報である。ＣＩはストリームごとに管理され、このため、ＣＩ用バッファ２２は、ストリームごとに独立していてもよい。ホスト１は（プログラムに従ってＭＰＵ１１は）、書き込みデータを分割するのと平行して、分割された書き込みデータについてのＣＩを、随時ＣＩ用バッファ２２に保持する。
【００１８】
ストリーム制御部２４はフローコントローラ１４を制御する。レート決定部２５は、メモリカード１の性能情報（後述）および各ストリームに要求されている転送レートに基づいて、各ストリームのためのデータのメモリカード２への転送レートを決定する。ストリーム制御部２４は、決定された各ストリーム用の転送レート、ＣＩ用バッファ２２の空き容量等に基づいて、マルチプレクサ２３を制御する。マルチプレクサ２３は、ストリーム制御部２４の制御に基づいて、選択されたバッファ２１、２２内の書き込みデータ（書き込みデータの一部）、その他の管理用のデータを時分割の原理に従って、ＳＤインターフェース１５に送る。
【００１９】
メモリカード２は、ＮＡＮＤ型フラッシュメモリ３１、およびメモリ３１を制御するためのコントローラ３２を有する。メモリカード２は、ホスト１に接続されたとき、およびオフ状態のホスト１に挿入された状態でホスト１がオンされたときに電源供給を受けて初期化動作を行った後、ホスト１からのアクセスに応じた処理を行う。
【００２０】
メモリ３１は、データを不揮発に記憶し、複数のメモリセルからなるページと呼ばれる単位でデータの書き込みおよび読み出しを行い、例えばＮＡＮＤ型フラッシュメモリからなる。ページには、各ページに固有の物理アドレスが割り当てられている。また、メモリ３１は、複数のページからなる物理ブロック（消去ブロック）と呼ばれる単位でデータの消去を行う。なお、物理ブロック単位で物理アドレスが割り当てられていることもある。
【００２１】
コントローラ３２は、メモリ３１によるデータの記憶状態を管理する。記憶状態の管理とは、どの物理アドレスのページ（または物理ブロック）が、どの論理アドレスのデータを保持しているかの関係、およびどの物理アドレスのページ（または物理ブロック）が消去状態（何も書き込まれていない、または無効なデータを保持している状態）であるかを管理することを含んでいる。
【００２２】
コントローラ３２は、ＳＤインターフェース４１、ＭＰＵ４２、ＲＡＭ４４、ＲＯＭ４３、ＮＡＮＤインターフェース４５、アドレス比較部４６を含んでいる。
【００２３】
ＳＤインターフェース４１は、メモリカード２とホスト１との間のインターフェースを取るのに必要なハードウェア、ソフトウェアからなり、ＳＤインターフェース１５と同様に、両者の通信を可能とする取り決めを規定し、各種のコマンドの組を備え、ハードウェア上の構成（ピンの配置、数等）も含む。メモリカード２（コントローラ３２）は、ＳＤインターフェース４１を介してとホスト１と通信を行う。ＳＤインターフェース４１は、レジスタ４７を含んでいる。
【００２４】
ＭＰＵ４２は、メモリカード２全体の動作を司る。メモリカード２が電源供給を受けた際にＲＯＭ１６に格納されているファームウェア（制御プログラム（命令））がＲＡＭ１７上に読み出される。そして、ＭＰＵ４２は、このファームウェア（命令）に従って所定の処理を実行する。ＭＰＵ４２は、制御プログラムに従って各種のテーブル（後述）をＲＡＭ４４上で作成したり、ホスト１から受けたコマンドに従ってメモリ３１に対する所定の処理を実行したりする。
【００２５】
ＲＯＭ４３は、ＭＰＵ４２により制御される制御プログラムなどを格納する。ＲＡＭ４４は、ＭＰＵ４２の作業エリアとして使用され、制御プログラムや各種のテーブルを一時的に記憶する。このようなテーブルとして、ファイルシステム１３によってデータに割り当てられた論理アドレスを有するデータを格納しているページの物理アドレスの変換テーブル（論物テーブル）が含まれる。ＮＡＮＤインターフェース４５は、コントローラ３２とメモリ３１との間のインターフェース処理を行う。
【００２６】
メモリ３１内の記憶領域は、保存されるデータの種類に応じて、例えばシステムデータ領域、機密データ領域、保護データ領域、ユーザデータ領域等を含んでいる。システムデータ領域は、コントローラ３２が、その動作に必要なデータを保存するためにメモリ３１内で確保しておく領域である。機密データ領域は、暗号化に用いる鍵情報や認証時に使用する機密データを保存しており、ホスト１はアクセスできない。保護データ領域は、重要なデータ、セキュアなデータを格納する。ユーザデータ領域は、ホスト１が自由にアクセスおよび使用することが可能で、例えばＡＶコンテンツファイルや画像データ等のユーザデータを格納する。以下の説明で、メモリ３１のメモリ空間を指す意味でメモリ３１という記述を用いているとき、この記述はユーザデータ領域を指すものとする。コントローラ３２は、ユーザデータ領域の一部を確保し、自身の動作に必要な制御データ（論物テーブル等）を保存する。
【００２７】
レジスタ４７は、図３に例示するように、カードステータスレジスタ、ＣＩＤ、ＲＣＡ、ＤＳＲ、ＣＳＤ、ＳＣＲ、ＯＣＲの各種レジスタを有する。これらのレジスタは、エラー情報、メモリカード２の個体番号、相対カードアドレス、メモリカード２のバス駆動力、メモリカード２の特性パラメータ値、データ配置、メモリカード２の動作範囲電圧に制限のある場合の動作電圧等を格納している。
【００２８】
また、レジスタ４７（例えばＣＳＤ）は、メモリカード２のクラス、データのコピーに要する時間、ＡＵサイズ等を格納している。クラスは、あるクラスに属するメモリカードが保証する最低の書き込み速度によって規定されている。また、クラスによって最高の書き込み速度が定められている。したがって、ホスト１は、ＡＵサイズを示すデータをレジスタ４７から読み出して、この情報をメモリカード２の管理の際に利用でき、また、クラスを示すデータをレジスタ４７から読み出して、メモリカード２の最大の書き込み性能を知得することができる。その他、性能パフォーマンス情報、例えば、特開２００６−１７８９２３号公報に記載のパフォーマンス情報がＣＳＤに格納されていてもよい。
【００２９】
図４は、メモリ３１のメモリ空間の構成を例示している。図４に示すように、メモリ３１は、通常のメモリ領域４８とページバッファ４９とを有する。メモリ領域４８は、複数の物理ブロックＢＬＫを含んでいる。各物理ブロックＢＬＫは、複数のページＰＧから構成される。各ページＰＧは、直列接続された複数のメモリセルトランジスタが格納するビットの列から構成される。
【００３０】
各メモリセルは、いわゆる積層ゲート構造のＭＯＳＦＥＴ（metal oxide semiconductor field effect transistor）からなる。各セルトランジスタは、浮遊ゲート電極に蓄えられる電子の数に応じて閾値電圧が変化し、この閾値電圧の違いに応じた情報を記憶する。セルトランジスタが２つ以上の閾値電圧の異なる状態を取り得る、つまりメモリセルが多値（多ビット）を記憶できるように、メモリ３１が構成されていてもよい。
【００３１】
同じ行に属するセルトランジスタの制御ゲート電極は、同じワード線と接続される。同じ列に属し且つ直列接続されたセルトランジスタの両端には選択ゲートトランジスタが設けられる。一方の選択ゲートトランジスタは、ビット線と接続される。データの書き込みおよび読み出しは直列接続されたセルトランジスタの集合毎に行われ、このセルトランジスタの集合からなる記憶領域が１つのページに対応する。
【００３２】
各ページＰＧは、例えば２１１２Ｂを有しており、各ブロックＢＬＫは例えば１２８ページからなる。データの消去はブロックＢＬＫ単位で行われる。ページバッファ４９は、メモリ３１へのデータおよびメモリ３１からのデータを一時的に保持する。
【００３３】
図５に例示するとともに上記したように、メモリ３１は、ページＰＧ単位でデータを書き込んだり、読み出したりし、ブロックＢＬＫ単位でデータを消去する。一方、リアルタイム記録を行なうアプリケーションソフトウェア１２は、ＲＵ（recording unit）単位でデータを管理する。ＲＵは、１回のマルチブロック書き込みコマンドで書き込まれる単位に相当する。アプリケーションソフトウェア１２は、固有の論理アドレスを割り当てられたデータを、書き込みコマンドに続いてメモリカード２に送る。コントローラ３２は、書き込みデータを適当なページに書き込む。ＲＵの大きさはページの容量の大きさの整数倍である。したがって、ＲＵの大きさの書き込みデータをメモリカード２は、物理アドレスが連続する複数のページに書き込む。なお、各ＲＵは、ファイルシステムが管理する固有の論理アドレスに対応するので、ＲＵにデータを割り当てるということは、データに論理アドレスを割り当てるのと同義である。ファイルシステム１３は、表を用いて、分割されたデータの各部分の接続関係を管理して、この接続関係を用いてデータの部分を繋げることによって元のデータを復元する。また、コントローラ３２は、論理アドレスとこの論理アドレスのデータを格納しているページのアドレス（物理アドレス）との対応を変換テーブル（論物テーブル）で管理する。
【００３４】
また、アプリケーションソフトウェア１２は、所定の範囲に属する所定数の連続するＲＵの集合からなるＡＵ（allocation unit）という概念を用いて管理を行なう。コントローラ３２は、データの論理アドレスの高位ビットを見ることによってＡＵの区切りを認識できる。ＡＵの大きさはブロック（物理ブロック）の容量の大きさの整数倍である。このように、ＲＵは自然数個のページの大きさに一致し、ＡＵは自然数個のブロックの大きさに一致する。このため、以下の説明では、メモリカード２でのデータの読み出し／書き込みの単位としてＲＵ、ＡＵを用いて説明を行なう。すなわち、メモリカード２に関する記述において用いられるＲＵという文言は、ＲＵと同じ大きさの、連続する複数のページを意味し、メモリカード２に関する記述において用いられるＡＵという文言は、ＡＵと同じ大きさの、連続する複数のブロックを意味する。具体的には、アプリケーションソフトウェア１２がＲＵに割り当てたデータはメモリカード２のあるＲＵに書き込まれており、メモリカード２は、アプリケーションソフトウェア１２によってデータに割り当てられたＲＵ（論理アドレス）とこの書き込みデータを記憶しているメモリ３１内のＲＵを表によって管理している。以下の説明において、アプリケーションソフトウェア１２が認識するＡＵ、およびメモリ３１のＡＵを、それぞれ論理ＡＵ、および物理ＡＵと称する場合がある。
【００３５】
図６に例示するように、アドレス比較部４６は、レジスタ書き込み制御部５１、各ストリーム用のＡＵアドレスレジスタ５２ａ〜５２ｄ、各ストリーム用のＤＩＲアドレスレジスタ５３ａ〜５３ｄ、各ストリーム用ＡＵアドレスレジスタ用比較器５４ａ〜５４ｄ、各ストリーム用ＤＩＲアドレスレジスタ用比較器５５ａ〜５５ｄを含んでいる。図６の例は、ホスト１およびメモリカード２がサポートするストリームの数が４つである例に従っている。
【００３６】
レジスタ書き込み制御部は、ＳＤインターフェース４１から、ホスト１から供給されたコマンドを受け取る。ＡＵアドレスレジスタ５２ａ〜５２ｄ、ＤＩＲアドレスレジスタ５３ａ〜５３ｄは、アドレス比較器５４ａ〜５４ｄ、５５ａ〜５５ｄは、ＳＤインターフェース４１から書き込みコマンド内の、書き込みデータが格納されるべきＲＵアドレス（書き込み（ＲＵ）アドレス）を受け取る。ＡＵアドレスレジスタ５２ａ〜５２ｄ、ＤＩＲアドレスレジスタ５３ａ〜５３ｄのうちレジスタ書き込み制御部５１に指定されたものが、書き込みＲＵアドレスまたは書き込みＲＵアドレスが属するＡＵアドレスを保持する。上記のように、ＲＵアドレスのＡＵアドレスは、このＲＵアドレスから特定されることが可能である。レジスタ５２、５３は、自信が格納しているアドレスが有効か否かを示すフラグを含んでいる。
【００３７】
アドレス比較器５４ａ〜５４ｄ、５５ａ〜５５ｄは、アドレスレジスタ５２ａ〜５２ｄ、５３ａ〜５３ｄと、それぞれ対応し、それぞれ接続されている。アドレス比較器５４、５５は、対応するアドレスレジスタ５２、５３に保持されているアドレス（またはＡＵアドレス）と比較する。比較の結果、両者が一致する場合、アドレス比較器５４ａ〜５４ｄ、５５ａ〜５５ｄは、有効な論理レベルを有するＣＡ＿Ｓ１、ＣＡ＿Ｓ２、ＣＡ＿Ｓ３、ＣＡ＿Ｓ４、ＣＤ＿Ｓ１、ＣＤ＿Ｓ２、ＣＤ＿Ｓ３、ＣＤ＿Ｓ４をそれぞれ出力する。アドレス比較部４６のより具体的な動作は後に詳述する。
【００３８】
［２］  動作
図７〜図３２を参照してホストおよびメモリカードの動作について説明する。
【００３９】
ＳＤインターフェース１５、４１は、図７に示すコマンドを認識可能に構成されている。図７は、本実施形態に係るシーケンシャル書き込み制御コマンドを概略的に示している。図７に示すように、シーケンシャル書き込み制御コマンド（ＣＭＤ２０）は、少なくともインデックス部ｉｎｄｅｘ、動作指定部ＳＣＣ、ストリーム番号部ＳＮ、ＣＲＣ（cyclic redundancy check）部ＣＲＣを含んでいる。インデックス部は、コマンドがシーケンシャル書き込み制御コマンドであることを特定するための特定のビット列を有する。動作指定部ＳＣＣは、シーケンシャル書き込み制御コマンドが要求する動作の種類を特定するビット列を有する。動作指定部ＳＣＣ内の引数に応じて、シーケンシャル書き込み制御コマンドは、書き込み（記録）開始、ＤＩＲ（directory entry）作成、新ＡＵ書き込み、書き込み（記録）開始、ＣＩ更新のいずれかを命令するコマンドとして振舞う。ストリーム番号部ＳＮは、シーケンシャル書き込み制御コマンドが担う命令がストリーム１〜４のいずれに対するのかを特定する引数を含んでいる。各命令の意味は後述する。ＣＲＣ部は、ＣＲＣ符号を有する。
【００４０】
図８は、シーケンシャル書き込み制御コマンドとその後にホストとメモリカードとの間で授受される信号を例示している。図８に示すように、ＳＤインターフェース１５、４１において、少なくともコマンドライン（ＣＭＤ）およびデータライン（ＤＡＴ［０］）が定義されている。ホスト１がシーケンシャル書き込み制御コマンドをコマンドライン上で送ると、メモリカード２はコマンドライン上でレスポンスを送る。レスポンスは、シーケンシャル書き込み制御コマンドと同じ内容を有する。シーケンシャル書き込み制御コマンドが、このコマンドを認識しないメモリカードで受け取られた場合、このメモリカードはレスポンスを送出しない。メモリカードは、レスポンスの送出とともに、データライン上でビジー信号をホスト１に送る。ビジー状態がタイムアウトと判断されるまでに経過する時間ｔｂｕｓｙ（ｍａｘ）は、シーケンシャル書き込み制御コマンドの機能に応じて予め定められており、図７に例示されている。
【００４１】
ビジーの解除後、ホスト１は、コマンドライン上で書き込みコマンド（ＣＭＤ２４、２５）をメモリカード２に送る。ホスト１は、このように、シーケンシャル書き込み制御コマンドの後に、原則、書き込みコマンドを発行する。その理由については後述する。メモリカード２は、書き込みコマンドに対するレスポンスをコマンドライン上でホスト１に送る。この後、ホスト１は、データライン上で書き込みデータをメモリカード２に送る。
【００４２】
次に、ホスト１によるメモリカード２へのデータの書き込みについて説明する。
【００４３】
［２−１］ランダム書き込みモード
ホスト１は、通常、ランダム書き込みモードにある。まず、図９〜図１１を参照して、ランダム書き込みモードについて説明する。図９〜図１１は、ランダム書き込みモードにあるメモリカード２およびホスト１の一状態を例示している。
【００４４】
まず、メモリカード２は、ＡＵ１の第１〜第５ＲＵ、第８ＲＵに、データ１〜５、８をそれぞれ格納している。第６、７ＲＵには、データは割り当てられていない。この状態で、ホスト１は、ＡＵ１の第３〜第５ＲＵにデータ２０〜データ２２を書き込む（これは、上書きに相当する）ことを希望している。しかしながら、メモリ３１はデータの上書きによって直接的にこの更新命令を遂行することができないので、以下の動作を行なう。まず、図１０に示すように、メモリカード２（コントローラ３２）は、メモリカード２の内部処理用のＡＵバッファを用意する。ＡＵバッファは、メモリカード２に含まれるＡＵのうちで、ホスト１によって認識されるＡＵと未だ対応付けられていないものによって実現される。メモリカード２は、ＡＵバッファ内の、ＡＵ１の更新されないＲＵと同じ第１、第２ＲＵにデータ１、データ２をそれぞれコピーする。ＡＵバッファは、ランダム書き込みモードでの使用専用に設けられていてもよいし、後述のようにシーケンシャル書き込みモード時に設けられる各ストリーム専用のＡＵバッファのいずれかで代用されてもよい。シーケンシャル書き込みモードで使用されるＡＵバッファは、シーケンシャル書き込みモード以外では用途を持たないからである。
【００４５】
次に、図１１に示すように、メモリカード２は、ＡＵバッファ１内の、ＡＵ１の更新対象のＲＵと同じ第３〜第５ＲＵにデータ２０〜データ２２を書き込む。次に、メモリカード２は、ＡＵ１のデータ８を、ＡＵバッファ１内の、ＡＵ１の更新されないＲＵと同じ第８ＲＵにコピーする。次に、メモリカード２は、ＡＵバッファ１の確定処理を行なう。確定処理とは、ＡＵバッファを正式なＡＵに設定すること、すなわち、ＡＵバッファが、ファイルシステム１３が認識しているＡＵ内のデータを記憶するＡＵであることを反映するように論物テーブルを書き換えることである。同時に、確定処理前の論理ＡＵ１のデータを格納していた物理ＡＵは、無効のデータを有するものとして取り扱われるようになる。旧物理ＡＵは、その中のデータを所定のタイミングで消去され、次いで新たな消去済みＡＵとなる。
【００４６】
更新要求でない場合も、ここまで説明した更新要求に対する処理と同じである。すなわち、図９において、第３〜第５ＲＵが消去済みであり、それ以外のＲＵは図９と同じである例を説明する。この例では、ＡＵバッファの第１、第２ＲＵにデータ１、データ２がコピーされ、第３〜第５ＲＵにデータ２０〜データ２２が書き込まれ、第８ＲＵにデータ８がコピーされ、確定処理が行なわれる。
【００４７】
このように、ランダム書き込みモードでは、更新または書き込み要求に対して、更新または書き込み対象のＲＵ以外のＲＵ内のデータは、ＡＵバッファ内へのコピーを介して、ＡＵ内にコピーされる。
【００４８】
［２−２］シーケンシャル書き込みモード
メモリカード２は、シーケンシャル書き込みモードを有する。シーケンシャル書き込みモードでは、メモリカード２はランダム書き込みモードと異なる方式でデータを書き込む。シーケンシャル書き込みモードでは、メモリカード２は、常に消去済みのＡＵにデータを書き込み、データの論理アドレスの順序とデータを格納するＲＵのアドレスの順序とが一致するように、すなわちシーケンシャルに書き込みを行なう。
【００４９】
メモリカード２は、動作指定部ＳＣＣ内において書き込み開始を指示する引数を有するシーケンシャル書き込み制御コマンドを受け取ると、シーケンシャル書き込みモードに移行する。メモリカード２は、シーケンシャル書き込みモードにおいて、複数のストリームをメモリカードに書き込むことが可能に構成されている。シーケンシャル書き込みモードについて、図１２〜図２８を参照して説明する。図１２は、ホストからメモリカード２に送られるコマンドを時系列に沿って例示している。
【００５０】
以下の説明において、シーケンシャル書き込み制御コマンドの動作指定部ＳＣＣにおいて、ある機能を指定されているシーケンシャル書き込み制御コマンドを、この機能を持つコマンドとして引用する。すなわち、書き込み開始、ＤＩＲ作成、新ＡＵ書き込み、書き込み終了、ＣＩ更新を命令するシーケンシャル書き込み制御コマンドを、それぞれ、書き込み開始コマンド、ＤＩＲ作成コマンド、新ＡＵ書き込みコマンド、書き込み終了コマンド、ＣＩ更新コマンドと称する。
【００５１】
図１３に示すように、ホスト１は、シーケンシャル書き込みモードにおいて、ＡＵ１にストリーム１のためのデータＡ１〜Ａ６を書き込むことを要求する。そのために、ホスト１は、ストリーム１の書き込み開始準備を行なう（ステップＳ１）。具体的には、ホスト１は、まず、ＤＩＲ作成コマンド（Create DIR）を発行する。このＤＩＲ作成コマンドは、ストリーム番号は、１つ目のストリームの書き込みである故に、ストリーム１を示す引数を有している（ＳＮ＝１）。このコマンドを受けて、メモリカード２は、ストリーム１用のＤＩＲのための論理アドレスをメモリカード２内に確保する。
【００５２】
次に、ホスト１は、メモリカード２に、書き込みコマンドと書き込みデータ（両者は一体でコマンド「Write DIR」として図示されている）を送信する。この書き込みコマンドは、直前のＤＩＲ作成コマンドによってＤＩＲを書き込むための書き込みコマンドであると特定され、したがってＤＩＲ書き込みコマンドと称する。ＤＩＲデータは、ＤＩＲ作成コマンドに応答して用意された、メモリカード２の専用のＡＵバッファに書き込まれ、その後にこのＡＵバッファに対して確定処理（終了処理）が行われる。
【００５３】
ホスト１は、書き込みコマンドで指示されるデータがどのストリーム用のものかについて把握している。一方で、メモリカード２は、書き込みコマンドからストリーム番号を把握できない。書き込みコマンドは、ストリーム番号を特定する引数を有していないからである。このため、新たなストリームについての書き込みコマンド直前にシーケンシャル書き込み制御コマンドが発行され、このシーケンシャル書き込み制御コマンドにおいて、当該書き込みコマンドが対象としているストリーム番号が明示される。メモリカード２は、このストリーム番号から、書き込みコマンドにより書き込まれるデータがどのストリーム番号のためのものであるかを知得できる。この処理は、具体的には、アドレス比較部４６（図６）を用いて、以下の方法に従って実行される。
【００５４】
レジスタ書き込み制御部５１は、シーケンシャル書き込み制御コマンドを受け取ると、その直後の書き込みコマンドが対象とするストリームを、シーケンシャル書き込みコマンドから認識できる。さらに、レジスタ書き込み制御部５１は、シーケンシャル書き込み制御コマンド内の動作指定部内の引数から、当該シーケンシャル書き込みコマンドが要求する動作を認識できる。書き込みコマンドが、ＤＩＲ更新コマンドまたは書き込み開始コマンド（の意味のシーケンシャル書き込み制御コマンド）の直後である場合、当該書き込みコマンドは、ＤＩＲ書き込みコマンドまたはストリームのためのデータを書き込むためのコマンド（データ書き込みコマンド）である。レジスタ書き込み制御部５１は、ＤＩＲ書き込みコマンドを受け取ると、その中の書き込みアドレスの論理アドレスを、対応するストリームに基づいて、ＤＩＲアドレスレジスタ５２ａ〜５２ｄのいずれかに格納し、そのフラグを「有効」に設定する。同様に、レジスタ書き込み制御部５１は、データ書き込みコマンドを受け取ると、その中の書き込みアドレスのＡＵアドレスを、対応するストリームに基づいて、ＡＵアドレスレジスタ５３ａ〜５３ｄのいずれかに格納し、そのフラグを「有効」にする。そして、シーケンシャル書き込みモードにおいて新たな書き込みコマンドを受け取る度に、アドレス比較部５１は、当該書き込みコマンド内の書き込みアドレスまたはそのＡＵアドレスとレジスタ５２、５３に格納されているアドレスと、を比較する。この比較によって、メモリカード２は、書き込みコマンドが対象とするストリームを特定できる。この比較の詳細は、図１２の説明において比較が発生する時点で説明する。
【００５５】
図１２に戻って説明を続ける。ステップＳ２は、ストリーム１のためのデータを書き込むためのものである。まず、ホスト１は、ストリーム１を指定する引数を有する書き込み開始コマンド（Start Rec）をメモリカード２に送る。書き込み開始コマンドを受け取ると、メモリカード２はシーケンシャル書き込みモードに移行する。シーケンシャル書き込みモードでは、メモリカード２は、各ストリームに専用に用意されている未書き込みのＡＵバッファを用意し、用意されたＡＵバッファ内の低位アドレスのＲＵから高位アドレスのＲＵに向かって、書き込みデータを順次書き込む。したがって、メモリカード２は、書き込み開始コマンドを受け取ると、図１４に示すように、ストリーム１用のＡＵバッファ１をメモリカード２内に用意する。ここで用意されるＡＵバッファ１が直前のランダム書き込みモードで流用されていた等の理由により、ＡＵバッファ１内にデータが残っている場合があり得る。この場合、メモリカード２は、ＡＵバッファ１内で有効なデータのコピーを含めて、ＡＵバッファ１に対する確定処理を行なう。そして、メモリカード２は、確定処理前の旧ＡＵバッファ１を無効にした後で、新たな消去済みのＡＵを新たなＡＵバッファ１として、以降の処理で用いる。このように確定処理を経てＡＵバッファを用意する場合、ビジー時間は、ＡＵバッファが２つのモードの両方で用いられない場合やストリーム２〜４のためのデータの記録の開始準備よりも長い。
【００５６】
続いて、ホスト１は、書き込みコマンド（Write RU）を発行する。この書き込みコマンドは、書き込み開始コマンド直後に位置するので、実データ（ストリームデータ）を書き込むためのデータ書き込みコマンドである。メモリカード２は、このデータ書き込みコマンドがストリーム１を対象としていることを直前の書き込み開始コマンドから認識している。このため、レジスタ書き込み制御部５１（図６）は、当該データ書き込みコマンド内のアドレスのＡＵアドレスを、ストリーム１用ＡＵアドレスレジスタ５２ａに格納するとともに、フラグを「有効」にする。アドレス比較器５４、５５は、書き込みアドレスのＡＵアドレスを、対応するアドレスレジスタ５２、５３内で有効なアドレスと比較する。通常の動作では、全てのストリームに対して、ＤＩＲ書き込みアドレスが属するＡＵアドレスとデータ書き込みアドレスのＡＵアドレスとが一致することはない。ＤＩＲとデータが同じＡＵであると言うことは、シーケンシャル書き込みができないことを意味し、ホスト１が異常な処理を要求しているので、メモリカード２は、処理を停止する。
【００５７】
データ書き込みコマンドに続いて、ホスト１は、ストリーム１についての書き込みデータ（図では、書き込みコマンドと一体で表示されている）を順次メモリカードに送る。同じストリームについての書き込みが中断されることなく継続している場合、書き込みコマンドは、一連の書き込みデータの最初に発行されるのみでもよい。図１５に示すように、メモリカード２は、書き込みデータを受け取ると、ＡＵバッファ１の未書き込みの最低位アドレスのＲＵから高位アドレスのＲＵに向かって順次書き込む。
【００５８】
図１２および図１６に示すように、ホスト１は、ストリーム１の書き込みと平行して、ＡＵ２にストリーム２のためのデータＢ１を書き込むことを要求する。そのために、ホスト１は、ストリーム２の書き込みの開始準備を行なう（ステップＳ３）。具体的には、ホスト１は、ストリーム２用のＤＩＲ作成コマンドを発行する。このコマンドを受け取ると、メモリカード２は、その中の書き込み（論理）アドレスをストリーム２用ＤＩＲアドレスレジスタ５３ｂに格納するとともに、そのフラグを「有効」に設定する。また、メモリカード２は、ＤＩＲ書き込みコマンドを受け取ると、ストリーム２用のＤＩＲのためのＡＵをメモリカード２内に確保する。
【００５９】
ストリーム制御部２４は、メモリカード２から読み出されたクラス情報を用いて、ソフトウェア（アプリケーション）１２が要求しているビットレートでストリーム２を、ストリーム１と平行して書き込み可能かを判断する。現在書き込み中のストリーム１に加えてストリーム２の書き込みを受け付けられない場合、ホスト１は、例えば、ストリーム２の書き込みを行なわないとともに、その旨をユーザに知らせる。このように、新たなストリームの書き込み要求を受けると、ホスト１は、受付可能なストリームの数を決定する。ただし、個数の上限は、別の制約によって定められている。すなわち、受付可能なストリームの数は、ホスト１およびメモリカード２がサポートしている、バッファ２１、２２、レジスタ５２、５３の数によって決定される。以下の説明では、ストリーム２の書き込み要求が受け入れ可能であると仮定する。
【００６０】
ＤＩＲ作成コマンドに続いて、ホスト１は、ストリーム２についてのＤＩＲ書き込みコマンドおよびＤＩＲデータをメモリカード２に送る。全てのアドレス比較器５４、５５は、ストリーム２についてのＤＩＲ書き込みコマンド内の論理アドレスを、アドレスレジスタ５２、５３内の有効なアドレスと比較する。しかし、正常動作であれば、一致は生じないはずである。また、メモリカード２は、ストリーム２用ＤＩＲデータを、指示されたアドレスのＡＵまたはＡＵバッファに書き込む。
【００６１】
次に、図１２および図１６に示すように、ホスト１は、ＡＵ１にストリーム１のためのデータＡ７を書き込むことを要求する（ステップＳ４）。そのために、ホスト１は、ストリーム１についてのデータ書き込みコマンドおよびデータＡ７をメモリカード２に送る。上記のように、書き込みコマンドは引数にアドレス情報しか持たないため、シーケンシャル書き込み制御コマンドが先行しない書き込みコマンドがどのストリーム番号のためのものであるかを示す情報を有さない。そこで、メモリカード２は、アドレス比較部４６を用いて、このような書き込みコマンドが対応するストリーム番号を割り出す。すなわち、各アドレス比較器５４、５５は、書き込みアドレスと、対応するレジスタ５２、５３内のアドレスと、を比較する。比較の結果、書き込みアドレスと一致したアドレスを格納するアドレス比較器５４ａ〜５４ｄのいずれか（ここでは、比較器５４ａ）から、信号ＣＡ＿Ｓ１〜ＣＡ＿Ｓ４のいずれか（ここでは、信号ＣＡ＿Ｓ１）がＭＰＵ４２に出力される。この信号により、書き込みアドレス（またはそのＡＵアドレス）と一致するアドレスを保持するアドレスレジスタ５２に対応するストリーム（ここでは、ストリーム１）が、書き込みコマンドの対象のストリームであることを、メモリカード２は知得する。これに従い、コントローラ３２は、書き込みデータＡ７を、ストリーム１用のＡＵバッファ１内の未書き込みの最低位アドレスを有する第７ＲＵに書き込む。
【００６２】
次に、図１２および図１７に示すように、ホスト１は、ストリーム２のためのデータの書き込みを継続する（ステップＳ５）。そのために、ホスト１は、ストリーム２についての書き込み開始コマンドを発行する（ＳＮ＝２）。メモリカード２は、この書き込み開始コマンドを受け取ると、ストリーム２用のＡＵバッファ２をメモリカード２内に用意する。このように、ホスト１およびメモリカード２がサポートする、平行して書き込み可能なストリームの数と同じ数の各ストリーム用のＡＵバッファが用意される。続いて、ホスト１は、データ書き込みコマンドおよびストリーム２のためのデータＢ１をメモリカード２に送る。このデータ書き込みコマンドは、ストリーム番号を明示するデータ書き込み開始コマンドに後続する。このため、メモリカード２は、このデータ書き込みコマンドがストリーム２のためのデータを書き込むためのものであることを認識し、レジスタ書き込み制御部４６は書き込みアドレスのＡＵアドレスを、ストリーム２用ＡＵアドレスレジスタ５２ｂ（図６）内に格納する。なお、アドレス比較部４６においてＡＵアドレスの一致は生じない。続いて、メモリカード２は、データＢ１をＡＵバッファ２内の未書き込みの最低位アドレスを有する第１ＲＵに書き込む。
【００６３】
データＢ１の書き込みの開始によって、ストリーム１のためのデータの書き込みとストリーム２のためのデータの書き込みとが平行して発生することになる。このため、ホスト１は、ストリーム１のためのデータとストリーム２のためのデータとを時分割の原理に従ってメモリカード２に送る。この時分割の際の、ストリーム１のためのデータのビットレートおよびストリーム２のためのデータのビットレートは、フローコントローラ１４（図２）内のストリーム制御部２４が決定する。この決定に基づいた制御に従ってマルチプレクサ２３が、データを順次メモリカード２に送る。ストリーム制御部２４は、各ビットレートの決定を、レート決定部２５に従って実行する。レート決定部２５は、例えばメモリカード２の初期化時にメモリカード２からクラス情報、ＡＵサイズ等についての情報を読み出し、これを記憶しておく。そして、レート決定部２５は、アプリケーション（アプリケーションソフトウェア１２）に応じて各ストリームに要求されているビットレートとクラス情報（最低書き込み速度）とを用いて、各ストリームのためのデータをホスト１からメモリカード２に送る際のビットレートを決定する。すなわち、アプリケーションから要求されている各ストリームについてのビットレートを実現できるように、別々のストリームのためのデータの量および送出する順序を決定する。なお、ストリーム制御部２４は、このように条件判断が必要なため、通常はソフトウェアによって構成されるが、ハードウェアによる構成も可能である。
【００６４】
次に、図１２および図１８に示すように、ホスト１は、ＡＵ１にストリーム１のためのデータＡ８を書き込むことを要求する（ステップＳ６）。そのために、ホスト１は、データ書き込みコマンドとデータＡ８をメモリカード２に送る。図６を用いて説明したように、アドレス比較部４６は書き込みアドレスのＡＵアドレスを比較することによって、データＡ８がストリーム１のためのものであることを認識する。このため、メモリカード２は、図１８に示すように、データＡ８をＡＵバッファ１内の未書き込みの最低位アドレスを有する第８ＲＵに書き込む。
【００６５】
データＡ８の書き込みによって、ＡＵ１内の全ＲＵにデータが書き込まれたことになる。そこで、ホスト１は、ストリーム１のためのデータの書き込みを継続するために、ストリーム１のための新たなＡＵバッファを作成することを要求する（ステップＳ７）。そのために、図１２および図１９に示すように、ホスト１は、ストリーム１についての新ＡＵ書き込みコマンド（New AU）をメモリカード２に送る。この新ＡＵ書き込みコマンドを受け取ると、メモリカード２は、まず、ストリーム１のための現在のＡＵバッファ（ＡＵバッファ１）に対して確定処理を行なう。この結果、ＡＵバッファ１が論理ＡＵ１に対応することを反映するように論物テーブルが更新される。次いで、メモリカード２は、ストリーム１のための新たなＡＵバッファ（ＡＵバッファ３）を確保する。さらに、レジスタ書き込み制御部５１（図６）は、ストリーム１用ＡＵアドレスレジスタ５２ａに格納されているＡＵアドレスおよびそのフラグをクリアする。
【００６６】
続いて、ホスト１は、ＡＵ３にストリーム１のためのデータＡ９を書き込むことを要求する。そのために、ホスト１は、データ書き込みコマンドとデータＡ９をメモリカード２に送る。メモリカード２は、このデータ書き込みコマンドがストリーム１のためのデータを書き込むためのものであることを直前の新ＡＵ作成コマンドから認識する。このため、レジスタ書き込み制御部５１（図６）は、書き込みアドレスのＡＵアドレスを、ストリーム１用ＡＵアドレスレジスタ５２ａに格納するとともに、そのフラグを「有効」に設定する。アドレス比較器５４、５５は、比較を行なうが、一致は生じない。続いて、メモリカード２は、図２０に示すように、データＡ９をＡＵバッファ３の未書き込みの最低位アドレスを有する第１ＲＵに書き込む。
【００６７】
ホスト１は、引き続き、ストリーム１のためのデータＡ１０〜Ａ１５をＡＵ３に書き込み、ストリーム２のためのデータＢ２〜Ｂ５をＡＵ２に書き込むことを要求する。そのために、レート決定部２５は、例えばまずストリーム２のためのデータＢ２〜Ｂ５をメモリカード２に送ることを決定する。この決定に基づいて、図１２および図２１に示すように、ホスト１は、データ書き込みコマンドおよびデータＢ２〜Ｂ５をメモリカード２に送る（ステップＳ８）。図６を用いて説明したように、アドレス比較部４６は、書き込みアドレスのＡＵアドレスを比較することによって、データＢ２〜Ｂ５がストリーム２のためのものであることを認識する。このため、メモリカード２は、データＢ２〜Ｂ５を、ＡＵバッファ２内の未書き込みの最低位アドレス第２ＲＵ、第３ＲＵ〜第５ＲＵにそれぞれ書き込む。
【００６８】
次に、図１２および図２２に示すように、ホスト１は、データ書き込みコマンドとデータＡ１０〜Ａ１５をメモリカード２に送る。図６を用いて説明したように、アドレス比較部４６は、書き込みアドレスのＡＵアドレスを比較することによって、データＡ１０〜Ａ１５がストリーム１のためのものであることを認識する。このため、メモリカード２は、データＡ１０〜Ａ１５を、ＡＵバッファ３内の未書き込みの最低位アドレスを有する第２ＲＵ、第３ＲＵ〜第７ＲＵにそれぞれ書き込む。このように、データは各ストリーム専用のＡＵバッファへと振り分けられ、各ストリームについてシーケンシャルなデータの書き込みが維持される。このため、データの書き込みおよび読み出しに要する時間は、ランダム書き込みの場合よりも短い。
【００６９】
上記のように、ＣＩはＣＩ用バッファ２２に保持されている。しかし、ＣＩは、バッファのサイズとストリームの長さに応じて、ＣＩ用バッファ内に収まりきらないほどに大きくなることがある。このような場合、フローコントローラ１４のＣＩ用バッファが一杯になったことを検出して、これを受けて、ホスト１は、現時点でのＣＩの少なくとも一部をメモリカード２内のＣＩ用に確保されたバッファに書き込むことを要求する（ステップＳ９）。そのために、ホスト１は、特定のストリーム（ここでは、ストリーム１）についてのＣＩ更新コマンドをメモリカード２に送る。続いて、ホスト１は、書き込みコマンドとＣＩデータをメモリカード２に送る。メモリカード２は、この書き込みコマンドが、直前のＣＩ更新コマンドによってＣＩデータ書き込みのためのもの（ＣＩ書き込みコマンド）であることを認識する。一方で、アドレス比較部４６は、通例通り書き込みアドレス（またはそのＡＵアドレス）をレジスト５２、５３内のアドレスと比較するが、異常時以外、一致は生じないはずである。一致が生じた場合、ホスト１が誤った処理を要求しているので、メモリカード２は、処理を停止するとともにホスト１にエラー信号を送る。また、ＣＩ書き込みコマンド内のアドレスのＡＵアドレスは、アドレスレジスタに格納されない。
【００７０】
ＣＩデータを受け取ると、メモリカード２はＣＩデータをＣＩ用バッファに書き込む。シーケンシャル書き込みモード中のＣＩデータの書き込みは、時分割の原理に従って行なわれるので特定の大きさ以下の大きさでなければならない。このため、ＣＩデータの書き込みが完了しない場合であっても、ＣＩデータの書き込みは途中で中断される。残りのＣＩデータは、別のタイミングの次なるＣＩ更新コマンドで実行されるか、シーケンシャル書き込みモードの終了後に書き込まれる。
【００７１】
次に、図１２および図２３に示すように、ホスト１は、ＡＵ２内にストリーム２のためのデータＢ６を書き込むことを要求する。そのために、ホスト１は、データ書き込みコマンドとデータＢ６をメモリカード２に送る。図６を用いて説明したように、比較アドレス部４６は、書き込みアドレスのＡＵアドレスを比較することによって、データＢ６がストリーム２のためのものであることを認識する。このため、メモリカード２は、データＢ６を、ＡＵバッファ２内の未書き込みの最低位アドレスを有する第６ＲＵに書き込む。
【００７２】
例えばデータＢ６がストリーム２のための最後のデータであり、このため、ホスト１は、図１２および図２４に示すように、ストリーム２についての書き込み終了コマンド（End Rec）をメモリカード２に送る（ステップＳ１０）。メモリカード２は、新ＡＵ書き込みコマンドの場合と同じく書き込み終了コマンドを受け取った場合も、対象のストリームについて現在有効なＡＵバッファ（ＡＵバッファ２）に対する確定処理を行なう。この結果、ＡＵバッファ２が論理ＡＵ２に対応することを反映するように論物テーブルが更新される。確定処理の際、論理ＡＵ２内の最後に用いられたＲＵより高位のＲＵ（ここでの例では、第７、第８ＲＵ）にデータが割り当てられていたとしても、このデータは、ＡＵバッファ（ＡＵバッファ２）にはコピーされない。また、書き込み終了コマンドによって、レジスタ書き込み制御部５１は、対応するストリーム（ここでは、ストリーム２）用アドレスレジスタ（ここでは、アドレスレジスタ５２ｂ）に格納されているＡＵアドレスおよびそのフラグをクリアする。
【００７３】
また、書き込み終了コマンドに続いて、ホスト１は、この書き込み終了コマンドの対象のストリーム（ストリーム２）についてのＣＩ更新コマンドおよびＣＩデータをメモリカード２に送る。ただし、シーケンシャル書き込みモード中のＣＩデータの書き込みは、上記のように、時分割の枠組みの中で行なわれるため、完了しない場合がある。
【００７４】
次に、ホスト１は、ＡＵ３にストリーム１のためのデータＡ１６を書き込むことを要求する。そのために、ホスト１は、データ書き込みコマンドとデータＡ１６をメモリカード２に送る。図６を用いて説明したように、アドレス比較部４６は、書き込みアドレスのＡＵアドレスを比較することによって、データＡ１６がストリーム１のためのものであることを認識する。このため、メモリカード２は、データＡ１６をＡＵバッファ３内の未書き込みの最低位アドレスを有する第８ＲＵに書き込む。
【００７５】
ＡＵバッファ３内の全ＲＵにデータが書き込まれたので、ホスト１は、ストリーム１のための新たなＡＵバッファを作成することを要求する（ステップＳ１１）。そのために、図１２および図２５に示すように、ホスト１は、ストリーム１についての新ＡＵ書き込みコマンドをメモリカード２に送る。このコマンドを受け取ると、メモリカード２は、ストリーム１のための現在のＡＵバッファ（ＡＵバッファ３）に対して確定処理を行ない、ストリーム１のための新たなＡＵバッファ（ＡＵバッファ４）を用意する。さらに、レジスタ書き込み制御部５１（図６）は、ストリーム１用ＡＵアドレスレジスタに格納されているアドレスおよびその有効フラグをクリアする。
【００７６】
次に、図１２および図２６に示すように、ホスト１は、ＡＵ４にストリーム１のためのデータＡ１７〜Ａ１９を書き込むことを要求する。そのために、ホスト１は、データ書き込みコマンドとデータＡ１７〜Ａ１９をメモリカード２に送る。このデータ書き込みコマンドの直前の新ＡＵ作成コマンドによって、または比較アドレス部４６での比較によって、メモリカード２は、データＡ１７〜Ａ１９がストリーム１のためのものであることを認識する。このため、メモリカード２は、データＡ１７〜Ａ１９を、ＡＵバッファ４内の未書き込みの最低位アドレスを有する第１ＲＵ、第２ＲＵ、第３ＲＵにそれぞれ書き込む。
【００７７】
次に、図１２に示すように、ホスト１は、ＦＡＴデータの更新を要求する（ステップＳ１２）。そのために、ホスト１は、ＦＡＴ更新のための書き込みコマンド（Update FAT）およびＦＡＴデータをメモリカード２に送る（ステップＳ１２）。ＦＡＴ更新は、当業者によって知られているように、データの書き込みの最中に特定のタイミングで行なわれ、ＦＡＴ更新の時点までに書き込まれたデータについてのＦＡＴ情報を更新するために行なわれる。メモリカード２は、シーケンシャル書き込みモードの最中のＦＡＴ更新に対応しており、ＦＡＴの更新に影響されることなくシーケンシャル書き込みを維持できるように構成されている。メモリカード２は、ＦＡＴデータを、例えばＦＡＴを含む管理データ用のＡＵバッファ内で低位アドレスのＲＵから高位アドレスのＲＵに順次書き込む。なお、ＦＡＴ書き込みコマンド内のアドレスも、アドレスレジスタ５２、５３に格納されない。したがって、通常、このような書き込みコマンド内のアドレスは、アドレスレジスタ５２、５３内のいずれのアドレスとも一致しないはずである。一致が生じた場合、メモリカード２はホスト１にエラー信号を送る。
【００７８】
次に、図１２に示すように、ホスト１は、ストリーム２についてのＣＩの全体の少なくとも一部をメモリカード２内のＣＩ用ＡＵバッファに書き込むことを要求する（ステップＳ１３）。そのために、ホスト１は、ストリーム２についてのＣＩ更新コマンド、ＣＩ書き込みコマンド、ＣＩデータをメモリカード２に送る。
【００７９】
次に、図１２および図２７に示すように、ホスト１は、ＡＵ４にストリーム１のためのデータＡ２０〜Ａ２２を書き込むことを要求する。そのために、ホスト１は、データ書き込みコマンドとデータＡ２０〜Ａ２２をメモリカード２に送る。図６を用いて説明したように、アドレス比較部４６は、書き込みアドレスのＡＵアドレスを比較することによって、データＡ２０〜Ａ２２がストリーム１のためのものであることを認識する。このため、メモリカード２は、データＡ２０〜Ａ２２を、ＡＵバッファ４内の未書き込みの最低位アドレスを有する第４ＲＵ、第５ＲＵ、第６ＲＵにそれぞれ書き込む。
【００８０】
例えばデータＡ２２がストリーム１のための最後のデータであり、このため、ホスト１は、図１２および図２８に示すように、ストリーム１についての書き込み終了コマンドをメモリカード２に送る（ステップＳ１４）。このコマンドによって、メモリカード２は、ストリーム１のための現在のＡＵバッファ４に対する確定処理を行なう。この結果、ＡＵバッファ４が論理ＡＵ４に対応することを反映するように論物テーブルが更新される。
【００８１】
最後のストリームについての書き込み終了コマンドを受け取ると、メモリカード２は、ランダム書き込みモードに移行する。ランダム書き込みモードに移行したことに続いて、図１２に示すように、ホスト１は、ストリーム１についてのＣＩ書き込みコマンドおよびＣＩデータをメモリカード２に送る。メモリカード２がランダム書き込みモードにあるので、シーケンシャル書き込みモード時の書き込み時間に対する制約はメモリカード２に課されない。このため、メモリカード２は、当該ＣＩ書き込みコマンドおよびＣＩデータを受け取ると、ストリーム１についてのＣＩの書き込みを完了させる。この段階でのＣＩ書き込みコマンドは、ランダム書き込みモード内で行なわれるので、シーケンシャル書き込み制御コマンドに後続する必要はない。
【００８２】
なお、唯一のストリームのためのデータの書き込み完了後にメモリカード２をランダム書き込みモードに移行させるためには、上記の書き込み終了コマンドの発行は、必須ではない。すなわち、メモリカード２は、シーケンシャル書き込み制御コマンド無しに例えばＣＩ書き込みコマンド等のランダム書き込みを要求する書き込みコマンドを受け取ると、シーケンシャル書き込みコマンドの終了を認識する。そして、書き込み終了コマンド受領時と同じく、ＡＵバッファに対して確定処理を行なう。ただし、この場合、書き込まれなかったＲＵ内のデータは、これが維持されるようにコピーされるという違いがある。このように書き込み終了コマンド無しでランダム書き込みモードが指定された場合、記録が完了していないストリームについてのアドレスレジスタ５２内のデータおよびそのフラグがクリアされない制御が考えられる。この場合、メモリカード２は、このアドレス５２内のデータおよびフラグを、対応するストリームに対する書き込み終了コマンドを受け取った際にクリアする。
【００８３】
次に、図１２に示すように、ホスト１は、ストリーム２についてのＣＩ書き込みコマンドおよびＣＩデータをメモリカード２に送る。これらのコマンドおよびデータを受け取ると、メモリカード２は、ストリーム２についてのＣＩの書き込みを完了させる。
【００８４】
図１２〜図２８を用いた説明は、２つのストリームを記録する例を扱っている。しかしながら、３または４つのストリームの記録も、２つのストリームと同様の原理によって実現される。４つのストリームが平行して書き込まれる場合、図２９に示すように、４つのＡＵバッファが設けられる。
【００８５】
次に、ここまでの説明で触れなかった状況下でのホスト１およびメモリカード２の動作について説明する。
【００８６】
メモリカード２は、書き込み中の２つ以上のストリームが存在している間にランダム書き込みに該当する書き込みアドレスを指定する書き込みコマンドを受け取ると、ホスト１に対してエラー信号を送るようにすることもできる。複数のストリームの記録の終了は終了コマンドにより終了されるべきなので、このような要求はホスト１の誤った制御に起因すると考えられる。シーケンシャル書き込みモードにあるメモリカード２に対してホスト１が誤った（不正な）制御を行なうと、メモリカード２は、ランダム書き込みモードに移行する。誤った制御として、シーケンシャル書き込みを要求することや、ＲＵの整数倍の書き込みでない書き込みを要求することが該当する。なお、読み出しコマンドは、書き込みシーケンスに影響しない。
【００８７】
書き込みアドレスがルートディレクトリ領域を指している場合、この書き込みアドレスはアドレスレジスタ５２、５３のいずれにも格納されない。このため、アドレス比較部４６での比較の結果、アドレス比較器５４、５５が一致の旨の信号を出力することは通常ない。したがって、ルートディレクトリ領域への書き込みデータは、ストリーム記録用のＡＵバッファには書き込まれず、別の（例えばルートディレクトリ専用の）バッファに書き込まれる。
【００８８】
次に、読み出しについて図３０〜図３２を参照して説明する。図３０〜図３２は、データ読み出しの際のメモリカード２およびホスト１の一状態を順に例示している。
【００８９】
確定処理後のＡＵからの読み出しについては、確定処理後のＡＵは、ユーザ（ホスト１）が任意にアクセスできるので、通常のメモリカードと同じである。一方、あるストリームのためのデータがメモリカード２に記録されている最中に、このストリームの記録済みのデータを読み出すことが要求される場合がある。このような場合であっても確定処理前のＡＵからもデータが読み出されることが可能に、メモリカード２は構成されている。
【００９０】
図３０に示すように、論理アドレス群（論理ＡＵ）ＡＵ１に属する各論理アドレスを割り当てられたデータ１〜データ８が、メモリ３１中のＡＵ（物理ＡＵ）１中の第１ＲＵ〜第８ＲＵにそれぞれ格納されている。この状態で、論理ＡＵ１中の第１ＲＵ〜第５ＲＵに相当する各論理アドレスを割り当てられたストリームデータ１１〜データ１５の書き込みがホスト１からメモリカード２に要求されたとする。この結果、図３１のように、このストリーム（例えばストリーム１）用のＡＵバッファ１のＲＵ１から順にデータ１１〜データ１５が書き込まれる。この時点で、物理ＡＵ１の確定処理は完了していない。この状態で、論理ＡＵ１の第１〜第５ＲＵの読み出しの要求がホスト１からメモリカード２に出されると、メモリカード２は、これらの論理アドレス（論理ＡＵ１の第１〜第５ＲＵに対応している）にそれぞれ対応するデータ１１〜データ１５をＡＵバッファ１から読み出す。確定処理が行なわれていないので、この段階では論理ＡＵ１の第１〜第５ＲＵに対応する論理アドレスを割り当てられたデータはＡＵ１中のデータ１〜データ５であるが、メモリカード２はデータ１〜データ５を読み出さない。一方、論理ＡＵ１の第６〜第８ＲＵの読み出しの要求がホスト１からメモリカード２に出されると、メモリカード２は、これらの論理ＡＵ１の第６〜第８ＲＵの論理アドレスにそれぞれ対応するデータ６〜データ８を読み出す。
【００９１】
確定処理は、上記の説明と同様であり、図３２に示すように、メモリカード２はＡＵバッファ１が論理ＡＵ１に対応することを反映するように論物テーブルを更新する。次いで、しかるべき時点で物理ＡＵ１は消去される。このような制御とすることにより、確定処理前のＡＵのデータを読み出すことができる。
【００９２】
確定処理前に、何らかのエラーが生じた場合、ＡＵバッファ１は無効となる。すると、ＡＵバッファ１中のデータは読み出せない。しかしながら、論理ＡＵ１と物理ＡＵ１の対応付けが有効なままなので、書き込み開始前の状態（図３０の状態）を復旧できる。
【００９３】
以上述べたように、本実施形態に係るホストおよびメモリカードは、複数のストリームの１つを特定する情報を含んだシーケンシャル書き込みコマンドを認識可能に構成されており、これを用いて、ストリームごとに記録の開始や終了を特定できる。そして、メモリカードは、開始コマンドを受け取るとシーケンシャル書き込みモードに移行し、シーケンシャル書き込みモードでは未書き込みＡＵからなるＡＵバッファに書き込みデータの論理アドレスの順に書き込みデータを書き込む。ＡＵバッファはストリームごとに専用に設けられるので、書き込みデータは、対応するＡＵバッファ内でストリームごとに論理アドレス順に並べられることになる。このように、メモリカードは、書き込みデータのストリームを特定し、各ストリーム専用のＡＵバッファにシーケンシャルにデータを書き込むので、本実施形態に係るホストおよびメモリカードは、複数のストリームを平行して記録することができる。
【００９４】
（第２実施形態）
第１実施形態では、シーケンシャル書き込みモードにおいてＡＵバッファが用意される。これに対して、第２実施形態では、ＡＵバッファを用いずにシーケンシャル書き込みが行なわれる。
【００９５】
図３３〜図３４は、第２実施形態における、データ読み出しの際のメモリカード２およびホスト１の一状態を順に例示している。
【００９６】
まず、図３３に示すように、論理ＡＵ１に属する各論理アドレスを割り当てられたデータ１〜データ８が、メモリ３１中の物理ＡＵ１中の第１ＲＵ〜第８ＲＵにそれぞれ格納されている。この状態で、ホスト１は、論理ＡＵ１中の第１ＲＵ〜第５ＲＵに相当する各論理アドレスを割り当てられたストリームデータ１１〜データ１５の書き込みを希望している。この要求を実行するために、ホスト１は、新ＡＵ書き込みコマンドをメモリカード２に発行する。
【００９７】
新ＡＵ書き込みコマンドを受けて、図３４に示すように、メモリカード２は消去済みの新たなＡＵ（例えばＡＵ２）を用意する。また、メモリカード２は、このＡＵ２が論理ＡＵ１に対応することを反映するように論物テーブルを更新する。そして、ＡＵ２にデータ１１〜データ１５を書き込む。読み出しは、既に論物テーブルの反映が終了しているので、ホスト１からのデータ１１〜データ１５の読み出し要求に対して、メモリ２はＡＵ２からこれらのデータを読み出す。論理ＡＵ１中の残りの第６〜第８ＲＵに対応する論理アドレスを割り当てられたデータの読み出し要求に対しては、メモリカード２は、不定データを読み出す。不定データの代わりに、意味を成さないデータや、特定の固定値からなるデータが読み出されてもよい。
【００９８】
このような専用のバッファを用いない実施形態では、データ書き込み要求に対して、現在対応しているＡＵ（本例ではＡＵ１）を消去して、このＡＵにデータを書き込むことも考えられる。しかしながら、ＮＡＮＤ型フラッシュメモリでは、一般に、各ＡＵへの書き込み回数を平均化する（ウェアレベリング）ことが行なわれる。このため、上記のように、新たなＡＵ（本例ではＡＵ２）が用意される。なお、内部バッファを用いない書き込みの場合、置き換え後のＡＵ（ＡＵ２）への書き込みの最中にエラーが生じたとしても、書き込み開始前の状態（図３３の状態）を復元することはできない。
【００９９】
第２実施形態の上記した以外の点については、全て第１実施形態と同じである。
【０１００】
以上述べたように、第２実施形態によれば、第１実施形態と同様に、複数のストリームの１つを特定する情報を含んだシーケンシャル書き込みコマンドを認識可能に構成されており、これを用いて、ストリームごとに記録の開始や終了を特定できる。このため、第１実施形態と同じ利点を得られる。
【０１０１】
（第３実施形態）
第３実施形態では、シーケンシャル書き込みモードが、シングルストリームモードとマルチストリームモードとを含んでいる。さらに、第３実施形態では、第１実施形態ではホスト１がシーケンシャル書き込み制御コマンドの直後に書き込みコマンドを発行することになっているのに対して、この制限が緩和されている。
【０１０２】
図３５は、第３実施形態に係るシーケンシャル書き込み制御コマンドを概略的に示している。第３実施形態において、ＳＤインターフェース１５、４１は、図３５に示すコマンドを認識可能に構成されている。本実施形態に係るシーケンシャル書き込みコマンド（ＣＭＤ２０）は、第１実施形態に係るものと、ストリーム番号部ＳＮの引数の種類のみが異なる。図３５に示すように、第１実施形態と同じくストリーム番号部の引数にはシーケンシャル書き込み制御コマンドが担う命令がストリーム１〜４のいずれに対するのかを特定する引数が定義されている。さらに、ストリーム番号部の引数には、シングルストリームモードへの移行を指示する引数が定義されている。例えば、引数が「００００」であれば、シングルストリームモードが指定され、「００００」を超える数であれば、マルチストリームモードが指定されるとともにストリーム番号が特定される。
【０１０３】
図３６は、シーケンシャル書き込み制御コマンドとその後にホストとメモリカードとの間で授受される信号を例示している。図３６に示すように、ホスト１がシーケンシャル書き込み制御コマンドをコマンドライン上で送ると、メモリカード２はコマンドライン上でレスポンスを送る。レスポンスは、シーケンシャル書き込み制御コマンドと同じ内容を有する。シーケンシャル書き込み制御コマンドが、このコマンドを認識しないメモリカードで受け取られた場合、このメモリカードはレスポンスを送出しない。メモリカードは、レスポンスの送出とともに、データライン上でビジー信号をホスト１に送る。ビジー状態がタイムアウトと判断されるまでに経過する時間ｔｂｕｓｙ（ｍａｘ）は、第１実施形態と同様である。図３７、図３８は、ホスト１とメモリカード２とが単方向の信号線で接続された場合を示している。信号線ＤＩはホスト１からメモリカード２に向かう信号のためのものであり、信号線ＤＯはメモリカード２からホスト１に向かう信号のためのものである。図３７、図３８は、それぞれ、ＳＰＩとＵＨＳ−ＩＩに対応する。図３７では、ビジー期間が信号のレベルによって示されている。例えば、レスポンスの直後のローレベルによってビジーが示される。図３８では、ビジーを示すパケットがホストに送信される。ホスト１は、ビジーのパケットを待つことによってビジー時間を認識する。図３７、図３８についてのその他の点は、図３６と同じである。このように、コマンドを送るラインは、コマンドラインに限る必要はない。
【０１０４】
図３９は、第３実施形態に係るメモリカードのモードの状態遷移を示している。図３９に示すように、メモリカード２は、ランダム書き込みモード、シングルストリームモード、マルチストリームモードで動作が可能である。シングルストリームモードは、例えば特開２０１０−１４０２６８号公報（特許文献２）に記載のものに対応する。すなわち、シングルストリームモードに移行すると、メモリカード２は、未書き込みのＲＵのみからなるＡＵバッファを用意し、ＡＵバッファ内のＲＵに書き込みデータを書き込みデータの論理アドレスの順に従って書き込み、次いで所定のタイミングで確定処理を行なう。または、第２実施形態のように、ＡＵバッファを用いずに、消去済みの新たなＡＵの確定処理を待たずに旧ＡＵと置き換えるように論物テーブルを反映させて、この新ＡＵに順次書き込むようにしてもよい。また、シングルストリームモードにおいて、シーケンシャル書き込み制御コマンドのうち、書き込み開始コマンドは、複数のストリームのデータの記録の準備コマンドとしての役割を担い、さらにその後の書き込みコマンドがシーケンシャルライトを行うデータと認識される。シーケンシャル書き込み中のデータとは異なるＣＩデータを書き込むには、ＣＩ更新コマンドが用いられ、ＣＩデータとの区別がなされる。すなわち、シングルストリームモードにおいても、ＣＩ用バッファ２２が一杯になった際等に、ＣＩ更新コマンドおよびＣＩ書き込みコマンドが続けて発行される。
【０１０５】
マルチストリームモードは、第１実施形態のシーケンシャル書き込みモードにほぼ対応する。ただし、以下に述べる点が異なる。第３実施形態では、シーケンシャル書き込み制御コマンドのうち、書き込み開始コマンドおよび書き込み終了コマンド後は、書き込みコマンドが続くことを要求されない。例えば、書き込み開始コマンドおよび書き込み終了コマンドに、ディレクトリやファイル情報を作成するための処理が続いてもよい。この制限の緩和によって、マルチストリームモードは、第１実施形態のシーケンシャル書き込みモードと幾つかの点で異なる。本実施形態では、最初のストリームのためのデータの書き込みの際に発行される書き込み開始コマンドは、複数のストリームのデータの記録の準備コマンドとしての役割のみを担う。すなわち、このような書き込み開始コマンドは、ストリーム番号を特定しており、したがって、マルチストリームへの移行を指示する。マルチストリームモードでの動作については後に詳述する。
【０１０６】
ランダムアクセスモードにあるメモリカード２は、シングルストリームモードへの移行を指示する（ＳＮ＝０）シーケンシャル書き込み制御コマンドを受け取ると、シングルストリームモードに移行する。シングルストリームモードにあるメモリカード２は、シーケンシャル書き込みでない制御を要求するシーケンスのコマンドを受け取ると、ランダムアクセスモードに移行する。そのようなシーケンスは、論理アドレスの連続しない書き込みの要求を含む。シングルストリームモードからランダム書き込みモードへの以降の際、未書き込み部分のデータは保存される。
【０１０７】
ランダムアクセスモードにあるメモリカード２は、マルチストリームモードへの移行を指示する（ＳＮ＞０）シーケンシャル書き込み制御コマンドを受け取ると、マルチストリームモードに移行する。マルチストリームモードにあるメモリカード２は、最後のストリームについての書き込み終了コマンドを受け取るか、第１実施形態の説明において記載したような、ランダム書き込みを要求する意味の書き込みコマンドや、誤った（不正な）制御を要求するシーケンスのコマンドを受け取ると、ランダム書き込みモードに移行する。
【０１０８】
マルチストリームモードからランダム書き込みモードへの以降の際、新ＡＵ書き込みコマンドで指定されたＡＵは、必要なデータコピーのみ行なわれる。必要なデータコピーは、メモリカードの実装に依存する。例えば、ＡＵが複数の部分に分割して管理される形態で場合、ある論理ＡＵ中の１つの分割部分の一部のデータが更新された際に、この分割部分の残りの部分のデータがコピーされる必要がある場合がある。
【０１０９】
メモリカード２がいずれのモードであるかの情報は、レジスタ４７において保持されている。メモリカード２は、モードが遷移する度にレジスタ４７中のモード情報を更新する。モード情報は、図４０に示すように、カードステータスレジスタ内、またはメモリカードのメーカーが独自の用途で設けるメーカー独自レジスタ内に保持される。モード情報は、例えば、２ビットで表わされ、００、０１、１１が、それぞれ、ランダムモード、シングルストリームモード、マルチストリームモードを意味する。モード情報は、例えばステータス情報として扱われ、ホスト１はステータス情報を読み出す既存のコマンドを用いてモード情報をメモリカード２から読み出す。ホスト１が正常なシーケンスでコマンドを発行しないと、メモリカード２はランダムモードに移行する。そこで、モード情報を、ホスト１のデバッグ時のホスト１の制御に誤りが無いかの確認に使用できる。
【０１１０】
次に、マルチストリームモードでの動作について説明する。図４１は、ホストからメモリカード２に送られるコマンドを時系列に沿って例示している。まず、ホスト１は、図１３に示すように、最初のストリーム（ストリーム１）のためのデータを書き込むことを要求する。そのために、図４１に示すように、ホスト１は、書き込み開始コマンドを発行する（ステップＳ２１）。この書き込み開始コマンドは、ストリーム１を示す引数を有しており、したがってメモリカード２にマルチストリームモードへの移行を指示する。
【０１１１】
次に、図４１に示すように、ホスト１はストリーム１のためのディレクトリ情報を作成する。そのために、ホスト１は、第１実施形態のステップＳ１を実行する。すなわち、ホスト１は、ストリーム１用のＤＩＲ作成コマンド、およびＤＩＲ書き込みコマンドならびにＤＩＲデータを順次メモリカード２に送る。メモリカード２は、ストリーム１用ＤＩＲデータを、指示されたアドレスのＡＵまたはＡＵバッファに書き込む。
【０１１２】
次に、図４１に示すように、ホスト１は、ＡＵ１にストリーム１のためのデータＡ１〜Ａ６を書き込むことを要求する。そのために、ホスト１は、新ＡＵ書き込みコマンドを発行する（ステップＳ２２）。新ＡＵ書き込みコマンドに対するメモリカード２の動作自体は、第１実施形態とで同じである。この新ＡＵ書き込みコマンドは、ストリーム１を指定している。したがって、この新ＡＵ書き込みコマンドを受け取ると、図１４に示すように、ステップＳ７と同様に、メモリカード２はストリーム１のためのＡＵバッファ（ＡＵバッファ１）を確保し、レジスタ書き込み制御部５１（図６）は、ストリーム１用ＡＵアドレスレジスタ５２ａに格納されているＡＵアドレスおよびそのフラグをクリアする。このように、第３実施形態では、各ストリームについての書き込み開始コマンドの発行後、このストリームのためのデータの最初の書き込みコマンドの発行直前に、このストリームについての新ＡＵ書き込みコマンドが発行される。
【０１１３】
次に、ホスト１は、データ書き込みコマンドおよびストリーム１のためのデータＡ１〜Ａ６をメモリカード２に送る（ステップＳ２３）。ステップＳ２３は、第１実施形態のステップ２中の、書き込み開始コマンド以降の処理と同じである。すなわち、メモリカード２は、直前の新ＡＵ書き込みコマンドから、このデータ書き込みコマンドがストリーム１のデータのためのものであることを認識する。そして、レジスタ書き込み制御部４６は書き込みアドレスのＡＵアドレスを保持する。続いて、メモリカード２は、図１５に示すように、データＡ１〜Ａ６をＡＵバッファ１の第１ＲＵ〜第６ＲＵに書き込む。
【０１１４】
図１６および図４１に示すように、ホスト１は、ストリーム１の書き込みと平行して、ＡＵ２にストリーム２のためのデータＢ１を書き込むことを要求する。その準備として、ホスト１は、第１実施形態のステップＳ３を行なってストリーム２用のＤＩＲの作成および書き込みを行なう。続いて、ホスト１は、図１７に示すように、Ｓ４を行なってＡＵバッファ１にデータＡ７を書き込む。
【０１１５】
次に、図１７および図４１に示すように、ホスト１は、ストリーム２のためのデータの書き込みを継続する。そのために、ホスト１は、ステップＳ５と同じく、ストリーム２についての書き込み開始コマンドを発行する（ステップＳ２４）。次に、ホスト１は、新たなストリーム（ストリーム２）のためのデータを書き込むための最初の書き込みコマンドの発行の前に、ストリーム２を特定する新ＡＵ書き込みコマンドを発行する（ステップＳ２５）。この新ＡＵ書き込みコマンドを受け取ると、メモリカード２は、ストリーム２のためのＡＵバッファ（ＡＵバッファ２）を確保し、レジスタ書き込み制御部５１（図６）は、ストリーム２用ＡＵアドレスレジスタ５２ｂに格納されているＡＵアドレスおよびそのフラグをクリアする。
【０１１６】
次に、ホスト１は、データ書き込みコマンドおよびストリーム２のためのデータＢ１をメモリカード２に送る（ステップＳ２６）。ステップＳ２６は、第１実施形態のステップＳ５の後半の処理と同じである。すなわち、メモリカード２は、直前の新ＡＵ書き込みコマンドから、このデータ書き込みコマンドがストリーム２のデータのためのものであることを認識する。そして、レジスタ書き込み制御部４６は書き込みアドレスのＡＵアドレスを保持する。続いて、メモリカード２は、データＢ１をＡＵバッファ２の第１ＲＵに書き込む。その後の動作は、第１実施形態のステップＳ６〜Ｓ９の動作と同じである。
【０１１７】
ストリーム２のためのデータの書き込みを終了するために、ホスト１は、図４１に示すようにストリーム２についての書き込み終了コマンドをメモリカード２に送る（ステップＳ３１）。ステップＳ３１では、第１実施形態のステップＳ１０中の書き込み終了コマンド発行時の処理と同じ処理が行なわれる。すなわち、確定処理とアドレスレジスタ中のＡＵアドレスおよびそのフラグがクリアされる。
【０１１８】
また、書き込み終了コマンドに続いて、ホスト１は、書き込み終了したストリーム（ストリーム２）についてのＣＩデータの更新を要求している。上記のように、書き込み終了コマンドの直後も書き込みコマンドが来ることは必須ではない。そこで、ホスト１は、ストリーム２についてのＣＩ書き込みコマンドの発行直前に、このストリームについてのＣＩ更新コマンドをメモリカード２に発行する（ステップＳ３２）。続いて、ホスト１は、ＣＩ書き込みコマンドとＣＩデータをメモリカード２に送る。メモリカード２は、この書き込みコマンドが、直前のＣＩ更新コマンドによってＣＩデータ書き込みのためのものであることを認識し、ＣＩデータをＣＩ用バッファに書き込む。
【０１１９】
次に、ステップＳ１０の最後の部分と同じく、ＡＵバッファ３にストリーム１のためのデータＡ１６が書き込まれる（ステップＳ３３）。その後の動作は、第１実施形態のステップＳ１１〜Ｓ１５の動作と同じである。
【０１２０】
第３実施形態の、上記した以外の点については、全て第１実施形態と同じである。さらに、第３実施形態に第２実施形態を適用することもできる。すなわち、内部バッファが用いられることなくデータ書き込みが行なわれる。
【０１２１】
以上述べたように、第３実施形態では、第１実施形態と同様に、複数のストリームの１つを特定する情報を含んだシーケンシャル書き込みコマンドを認識可能に構成されており、これを用いて、ストリームごとに記録の開始や終了を特定できる。このため、第１実施形態と同じ利点を得られる。
【０１２２】
さらに、第３実施形態によれば、書き込み開始コマンドおよび書き込み終了コマンド後は、書き込みコマンドが続くことを要求されない。このため、ＣＩ更新やＤＩＲ更新等の管理データの書き込みおよび更新を任意のタイミングで実行できる。
【０１２３】
その他、本発明は、上記各実施形態に限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で、種々に変形することが可能である。さらに、上記実施形態には種々の段階の発明が含まれており、開示される複数の構成要件における適宜な組み合わせにより種々の発明が抽出され得る。例えば、上記各実施形態に示される全構成要件から幾つかの構成要件が削除されても、発明が解決しようとする課題の欄で述べた課題が解決でき、発明の効果の欄で述べられている効果が得られる場合には、この構成要件が削除された構成が発明として抽出され得る。
【符号の説明】
【０１２４】
１…ホスト装置、２…メモリカード、１１…ＭＰＵ、１２…ソフトウェア、１３…ファイルシステム、１４…ストリームコントローラ、１５…ＳＤインターフェース、１６…ＲＯＭ、１７…ＲＡＭ、３１…メモリ、３２…コントローラ、４１…ＳＤインターフェース、４２…ＭＰＵ、４３…ＲＯＭ、４４…ＲＡＭ、４５…ＮＡＮＤインターフェース、４６…アドレス比較部、４７…レジスタ。
【図１】
2011175615.tif 000003
【図２】
2011175615.tif 000004
【図３】
2011175615.tif 000005
【図４】
2011175615.tif 000006
【図５】
2011175615.tif 000007
【図６】
2011175615.tif 000008
【図７】
2011175615.tif 000009
【図８】
2011175615.tif 000010
【図９】
2011175615.tif 000011
【図１０】
2011175615.tif 000012
【図１１】
2011175615.tif 000013
【図１２】
2011175615.tif 000014
【図１３】
2011175615.tif 000015
【図１４】
2011175615.tif 000016
【図１５】
2011175615.tif 000017
【図１６】
2011175615.tif 000018
【図１７】
2011175615.tif 000019
【図１８】
2011175615.tif 000020
【図１９】
2011175615.tif 000021
【図２０】
2011175615.tif 000022
【図２１】
2011175615.tif 000023
【図２２】
2011175615.tif 000024
【図２３】
2011175615.tif 000025
【図２４】
2011175615.tif 000026
【図２５】
2011175615.tif 000027
【図２６】
2011175615.tif 000028
【図２７】
2011175615.tif 000029
【図２８】
2011175615.tif 000030
【図２９】
2011175615.tif 000031
【図３０】
2011175615.tif 000032
【図３１】
2011175615.tif 000033
【図３２】
2011175615.tif 000034
【図３３】
2011175615.tif 000035
【図３４】
2011175615.tif 000036
【図３５】
2011175615.tif 000037
【図３６】
2011175615.tif 000038
【図３７】
2011175615.tif 000039
【図３８】
2011175615.tif 000040
【図３９】
2011175615.tif 000041
【図４０】
2011175615.tif 000042
【図４１】
2011175615.tif 000043