ホスト装置およびメモリデバイス
【課題】 複数のファイルデータを平行してリアルタイムで記録可能なメモリデバイスを提供する。
【解決手段】 メモリデバイスは、半導体メモリ31と、メモリに書き込まれる書き込みデータを受け取り、開始コマンドを受け取るとシーケンシャル書き込みモードに移行するコントローラ32を含む。コントローラは、シーケンシャル書き込みモードにおいて、書き込みコマンドの直前に受け取った制御コマンドを認識し、制御コマンドまたは論理アドレスにより対象とする書き込みデータが一部を構成するデータストリームを識別し、データストリーム毎に用意されたバッファに書き込みデータを書き込み、各バッファにおいて書き込みデータのアドレスの順序に従ってデータストリームを順次書き込み、終了コマンドを受け取ると該当するストリームについてのバッファに対して終了処理を行い、全てのデータストリームの終了処理が完了するとランダム書き込みモードに移行する。
【解決手段】 メモリデバイスは、半導体メモリ31と、メモリに書き込まれる書き込みデータを受け取り、開始コマンドを受け取るとシーケンシャル書き込みモードに移行するコントローラ32を含む。コントローラは、シーケンシャル書き込みモードにおいて、書き込みコマンドの直前に受け取った制御コマンドを認識し、制御コマンドまたは論理アドレスにより対象とする書き込みデータが一部を構成するデータストリームを識別し、データストリーム毎に用意されたバッファに書き込みデータを書き込み、各バッファにおいて書き込みデータのアドレスの順序に従ってデータストリームを順次書き込み、終了コマンドを受け取ると該当するストリームについてのバッファに対して終了処理を行い、全てのデータストリームの終了処理が完了するとランダム書き込みモードに移行する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は、ホスト装置およびメモリデバイスに関し、特に不揮発性半導体メモリを用いたメモリデバイスおよびそのようなメモリデバイスを受け付けるホスト装置に関する。
【背景技術】
【0002】
現在、音楽データや映像データの記録メディアとして、フラッシュメモリ等の不揮発性半導体メモリを用いたメモリデバイスが使われている。メモリデバイスは、多くの場合、メモリを制御するためのコントローラを内蔵している。コントローラは、このようなメモリデバイスを挿入されるホストのファイルシステムから依頼された、論理アドレスを割り当てられた書き込みデータを、フラッシュメモリの未書き込みの記憶領域に書き込む指示を出す。また、コントローラは、ファイルシステムによってデータに割り当てられた論理アドレスと、このデータを保存している、フラッシュメモリの記憶領域の位置との関係を管理しておく。メモリデバイスに使用されるフラッシュメモリの代表例としては、NAND型フラッシュメモリが挙げられる。
【0003】
ユーザがホスト装置を通じてメモリデバイスの性能を知ることが求められることがある。そのような性能には、メモリデバイスの記録速度、記録に要する時間、記録可能時間などが含まれる。これらの性能を予測するための技術が、特開2006−178923(特許文献1)に記載されている。
【0004】
メモリの容量増大や、メモリデバイスの性能向上や、ユーザが記録することを望むコンテンツの多様化によって、ユーザのメモリデバイスの使用形態が多様化している。例えば、2つのテレビ番組のような2つの動画を平行して録画することや、動画を撮影している最中に静止画を撮影することといった要望が出現している。ところが、フラッシュメモリにはデータの上書きができないため、データのコピーが必要になる場合がある。データのコピーは長時間を要するので、データのコピーを伴う書き込みは速度が遅い。このため、上記の要望に答えて複数のファイルデータ、特に複数のファイルデータを平行してリアルタイムでメモリデバイスに書き込むことができない。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2006-178923号公報
【特許文献2】特開2010-140268号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
複数のファイルデータを平行してリアルタイムで記録可能なホスト装置およびメモリデバイスを提供しようとするものである。
【課題を解決するための手段】
【0007】
本発明の一態様によるメモリデバイスは、複数の記憶領域を有する不揮発性の半導体メモリと、前記メモリに書き込まれる書き込みデータを受け取り、ランダム書き込みモードとシーケンシャル書き込みモードとを有し、開始コマンドを受け取ると前記シーケンシャル書き込みモードに移行し、シーケンシャル書き込みモードにおいて、書き込みコマンドの直前に受け取った制御コマンドを認識し、前記制御コマンドまたは論理アドレスにより対象とする書き込みデータが一部を構成するデータストリームを識別し、識別されたデータストリーム毎にメモリ内に用意されたバッファに前記書き込みデータを書き込み、各バッファにおいて前記書き込みデータのアドレスの順序に従って前記データストリームを順次書き込み、終了コマンドを受け取ると該当するストリームについての前記バッファに対して書き込み終了処理を行い、全てのデータストリームの書き込み終了処理が完了すると前記ランダム書き込みモードに移行する、コントローラと、を具備することを特徴とする。
【発明の効果】
【0008】
本発明によれば、複数のファイルデータを平行してリアルタイムで記録可能なホスト装置およびメモリデバイスを提供できる。
【図面の簡単な説明】
【0009】
【図1】第1実施形態に係るホスト装置およびメモリカードの機能ブロックを例示する図。
【図2】第1実施形態に係るフローコントローラを例示する図。
【図3】メモリカード内のレジスタの例を例示する図。
【図4】メモリカードのメモリ空間の構成を例示する図。
【図5】ホストが認識している記憶領域とメモリカードの記憶領域を例示する図。
【図6】メモリカード内のアドレス比較部を例示する図。
【図7】第1実施形態に係るコマンドの例を例示する図。
【図8】第1実施形態における、シーケンシャル書き込み制御コマンドとその後で授受される信号を例示する図。
【図9】ランダム書き込みモードにおけるメモリカードおよびホストの一状態を例示する図。
【図10】図9に続く状態を例示する図。
【図11】図10に続く状態を例示する図。
【図12】第1実施形態において、ホストからメモリカードに送られるコマンドを例示する図。
【図13】シーケンシャル書き込みモードにあるメモリカードおよびホストの一状態を例示する図。
【図14】図13に続く状態を例示する図。
【図15】図14に続く状態を例示する図。
【図16】図15に続く状態を例示する図。
【図17】図16に続く状態を例示する図。
【図18】図17に続く状態を例示する図。
【図19】図18に続く状態を例示する図。
【図20】図19に続く状態を例示する図。
【図21】図20に続く状態を例示する図。
【図22】図21に続く状態を例示する図。
【図23】図22に続く状態を例示する図。
【図24】図23に続く状態を例示する図。
【図25】図24に続く状態を例示する図。
【図26】図25に続く状態を例示する図。
【図27】図26に続く状態を例示する図。
【図28】図27に続く状態を例示する図。
【図29】4つのAUバッファが設けられている状態を例示する図。
【図30】データ読み出し時のメモリカードおよびホストの一状態を例示する図。
【図31】図30に続く状態を例示する図。
【図32】図31に続く状態を例示する図。
【図33】第2実施形態における、データ読み出し時のメモリカードおよびホストの一状態を例示する図。
【図34】図33に続く状態を例示する図。
【図35】第3実施形態に係るコマンドの例を例示する図。
【図36】第3実施形態における、シーケンシャル書き込み制御コマンドとその後で授受される信号を例示する図。
【図37】第3実施形態における、シーケンシャル書き込み制御コマンドとその後で授受される信号を例示する図。
【図38】第3実施形態における、シーケンシャル書き込み制御コマンドとその後で授受される信号を例示する図。
【図39】第3実施形態に係るメモリカードによるモードの状態遷移を示している。
【図40】第3実施形態に係るメモリカード内のレジスタの例を例示する図。
【図41】第3実施形態において、ホストからメモリカードに送られるコマンドを例示する図。
【発明を実施するための形態】
【0010】
以下に本発明の実施形態について図面を参照して説明する。なお、以下の説明において、略同一の機能及び構成を有する構成要素については、同一符号を付し、重複説明は必要な場合にのみ行う。参照符号の最後のアルファベットは、同様の要素を相互に識別するためのものであり、これらの要素を相互に識別する必要がない場合、アルファベットを省略する。
【0011】
以下に示す各実施形態は、この発明の技術的思想を具体化するための装置や方法を例示するものであって、この発明の技術的思想は、構成部品の材質、形状、構造、配置等を下記のものに特定するものでない。この発明の技術的思想は、特許請求の範囲において、種々の変更を加えることができる。
【0012】
各機能ブロックは、ハードウェア、コンピュータソフトウェアのいずれかまたは両者を組み合わせたものとして実現することができる。このため、各ブロックがこれらのいずれでもあることが明確となるように、概してそれらの機能の観点から以下に説明する。このような機能が、ハードウェアとして実行されるか、またはソフトウェアとして実行されるかは、具体的な実施態様またはシステム全体に課される設計制約に依存する。当業者は、具体的な実施態様ごとに、種々の方法でこれらの機能を実現し得るが、いずれの実現の手法も本発明の範疇に含まれる。
【0013】
なお、以下、本発明の実施形態に係るメモリデバイスの一例としてメモリカード、特にSDカードを用いて説明を行う。しかしながら、以下に説明するようなメモリと、このメモリを制御するコントローラを有するあらゆるメモリデバイスが本発明の範疇に含まれる。
【0014】
(第1実施形態)
[1] 構成
図1〜図6を参照して、本発明の第1実施形態に係るメモリカードの構成について説明する。図1は、第1実施形態に係るホスト装置1およびメモリカード2の主要な機能ブロックを例示している。ホスト装置(以下、ホストと称する)1は、MPU(micro processing unit)11、ソフトウェア12、ファイルシステム13、フローコントローラ14、SDインターフェース15、ROM(read only memory)16、RAM(random access memory)17等を含んでいる。
【0015】
MPU11は、ホスト1全体の動作を司る。ホスト1が電源供給を受けた際にROM16に格納されているファームウェア(制御プログラム(命令))がRAM17上に読み出される。そして、MPU11は、このファームウェア(命令)に従って所定の処理を実行する。ソフトウェア12およびファイルシステム13は、ROM16やRAM17上に位置し、MPU11に所定の処理を実行させるための命令を含んだプログラムを含んでいる。ソフトウェア12は、アプリケーション、オペレーティング・システム等を含んでおり、ユーザからメモリカード2へのデータの書き込み、メモリカード2からのデータの読み出し等を指示される。ソフトウェア12は、データの書き込みおよび読み出しをファイルシステム13に指示する。ファイルシステム13は、管理対象の記憶媒体に記録されているファイルデータを管理するための仕組みであり、記憶媒体の記憶領域内に管理情報を記録し、この管理情報を用いてファイルデータを管理する。
【0016】
SDインターフェース15は、ホスト1とメモリカード2との間のインターフェース処を取るのに必要なハードウェア、ソフトウェアからなる。ホスト1は、SDインターフェース15を介してメモリカード2と通信を行う。SDインターフェース15は、ホスト1とメモリカード2とが通信するのに必要な様々な取り決めを規定し、後述のメモリカード2のSDインターフェース41と相互に認識可能な各種のコマンドの組を備えている。また、SDインターフェース15は、SDインターフェース41と接続可能なハードウェア上の構成(ピンの配置、数等)も含む。
【0017】
フローコントローラ14は、ホスト1からメモリカード2に送出されるデータのフローを管理し、図2に例示するように、複数のバッファ21a〜21d、CI(continuation information)用バッファ22a〜22d、マルチプレクサ23、ストリーム制御部24を有する。ストリーム制御部24は、少なくともレート決定部25を含んでいる。バッファ21a〜21dの数は、ホスト1およびメモリカード2がサポートする、同時に書き込み可能なデータストリームの数と等しい。図1では、バッファの数は4であり、以下、この数4を例に用いて説明を行なう。各バッファ21a〜21dは、各ストリーム専用に設けられており、ストリーム1〜4のデータをそれぞれ一時的に保持する。CI用バッファ22は、CI(continuation information)を一時的に保持する。CIは、各ストリームについて、所定の大きさに分割された書き込みデータの連結の順序に関する情報である。CIはストリームごとに管理され、このため、CI用バッファ22は、ストリームごとに独立していてもよい。ホスト1は(プログラムに従ってMPU11は)、書き込みデータを分割するのと平行して、分割された書き込みデータについてのCIを、随時CI用バッファ22に保持する。
【0018】
ストリーム制御部24はフローコントローラ14を制御する。レート決定部25は、メモリカード1の性能情報(後述)および各ストリームに要求されている転送レートに基づいて、各ストリームのためのデータのメモリカード2への転送レートを決定する。ストリーム制御部24は、決定された各ストリーム用の転送レート、CI用バッファ22の空き容量等に基づいて、マルチプレクサ23を制御する。マルチプレクサ23は、ストリーム制御部24の制御に基づいて、選択されたバッファ21、22内の書き込みデータ(書き込みデータの一部)、その他の管理用のデータを時分割の原理に従って、SDインターフェース15に送る。
【0019】
メモリカード2は、NAND型フラッシュメモリ31、およびメモリ31を制御するためのコントローラ32を有する。メモリカード2は、ホスト1に接続されたとき、およびオフ状態のホスト1に挿入された状態でホスト1がオンされたときに電源供給を受けて初期化動作を行った後、ホスト1からのアクセスに応じた処理を行う。
【0020】
メモリ31は、データを不揮発に記憶し、複数のメモリセルからなるページと呼ばれる単位でデータの書き込みおよび読み出しを行い、例えばNAND型フラッシュメモリからなる。ページには、各ページに固有の物理アドレスが割り当てられている。また、メモリ31は、複数のページからなる物理ブロック(消去ブロック)と呼ばれる単位でデータの消去を行う。なお、物理ブロック単位で物理アドレスが割り当てられていることもある。
【0021】
コントローラ32は、メモリ31によるデータの記憶状態を管理する。記憶状態の管理とは、どの物理アドレスのページ(または物理ブロック)が、どの論理アドレスのデータを保持しているかの関係、およびどの物理アドレスのページ(または物理ブロック)が消去状態(何も書き込まれていない、または無効なデータを保持している状態)であるかを管理することを含んでいる。
【0022】
コントローラ32は、SDインターフェース41、MPU42、RAM44、ROM43、NANDインターフェース45、アドレス比較部46を含んでいる。
【0023】
SDインターフェース41は、メモリカード2とホスト1との間のインターフェースを取るのに必要なハードウェア、ソフトウェアからなり、SDインターフェース15と同様に、両者の通信を可能とする取り決めを規定し、各種のコマンドの組を備え、ハードウェア上の構成(ピンの配置、数等)も含む。メモリカード2(コントローラ32)は、SDインターフェース41を介してとホスト1と通信を行う。SDインターフェース41は、レジスタ47を含んでいる。
【0024】
MPU42は、メモリカード2全体の動作を司る。メモリカード2が電源供給を受けた際にROM16に格納されているファームウェア(制御プログラム(命令))がRAM17上に読み出される。そして、MPU42は、このファームウェア(命令)に従って所定の処理を実行する。MPU42は、制御プログラムに従って各種のテーブル(後述)をRAM44上で作成したり、ホスト1から受けたコマンドに従ってメモリ31に対する所定の処理を実行したりする。
【0025】
ROM43は、MPU42により制御される制御プログラムなどを格納する。RAM44は、MPU42の作業エリアとして使用され、制御プログラムや各種のテーブルを一時的に記憶する。このようなテーブルとして、ファイルシステム13によってデータに割り当てられた論理アドレスを有するデータを格納しているページの物理アドレスの変換テーブル(論物テーブル)が含まれる。NANDインターフェース45は、コントローラ32とメモリ31との間のインターフェース処理を行う。
【0026】
メモリ31内の記憶領域は、保存されるデータの種類に応じて、例えばシステムデータ領域、機密データ領域、保護データ領域、ユーザデータ領域等を含んでいる。システムデータ領域は、コントローラ32が、その動作に必要なデータを保存するためにメモリ31内で確保しておく領域である。機密データ領域は、暗号化に用いる鍵情報や認証時に使用する機密データを保存しており、ホスト1はアクセスできない。保護データ領域は、重要なデータ、セキュアなデータを格納する。ユーザデータ領域は、ホスト1が自由にアクセスおよび使用することが可能で、例えばAVコンテンツファイルや画像データ等のユーザデータを格納する。以下の説明で、メモリ31のメモリ空間を指す意味でメモリ31という記述を用いているとき、この記述はユーザデータ領域を指すものとする。コントローラ32は、ユーザデータ領域の一部を確保し、自身の動作に必要な制御データ(論物テーブル等)を保存する。
【0027】
レジスタ47は、図3に例示するように、カードステータスレジスタ、CID、RCA、DSR、CSD、SCR、OCRの各種レジスタを有する。これらのレジスタは、エラー情報、メモリカード2の個体番号、相対カードアドレス、メモリカード2のバス駆動力、メモリカード2の特性パラメータ値、データ配置、メモリカード2の動作範囲電圧に制限のある場合の動作電圧等を格納している。
【0028】
また、レジスタ47(例えばCSD)は、メモリカード2のクラス、データのコピーに要する時間、AUサイズ等を格納している。クラスは、あるクラスに属するメモリカードが保証する最低の書き込み速度によって規定されている。また、クラスによって最高の書き込み速度が定められている。したがって、ホスト1は、AUサイズを示すデータをレジスタ47から読み出して、この情報をメモリカード2の管理の際に利用でき、また、クラスを示すデータをレジスタ47から読み出して、メモリカード2の最大の書き込み性能を知得することができる。その他、性能パフォーマンス情報、例えば、特開2006−178923号公報に記載のパフォーマンス情報がCSDに格納されていてもよい。
【0029】
図4は、メモリ31のメモリ空間の構成を例示している。図4に示すように、メモリ31は、通常のメモリ領域48とページバッファ49とを有する。メモリ領域48は、複数の物理ブロックBLKを含んでいる。各物理ブロックBLKは、複数のページPGから構成される。各ページPGは、直列接続された複数のメモリセルトランジスタが格納するビットの列から構成される。
【0030】
各メモリセルは、いわゆる積層ゲート構造のMOSFET(metal oxide semiconductor field effect transistor)からなる。各セルトランジスタは、浮遊ゲート電極に蓄えられる電子の数に応じて閾値電圧が変化し、この閾値電圧の違いに応じた情報を記憶する。セルトランジスタが2つ以上の閾値電圧の異なる状態を取り得る、つまりメモリセルが多値(多ビット)を記憶できるように、メモリ31が構成されていてもよい。
【0031】
同じ行に属するセルトランジスタの制御ゲート電極は、同じワード線と接続される。同じ列に属し且つ直列接続されたセルトランジスタの両端には選択ゲートトランジスタが設けられる。一方の選択ゲートトランジスタは、ビット線と接続される。データの書き込みおよび読み出しは直列接続されたセルトランジスタの集合毎に行われ、このセルトランジスタの集合からなる記憶領域が1つのページに対応する。
【0032】
各ページPGは、例えば2112Bを有しており、各ブロックBLKは例えば128ページからなる。データの消去はブロックBLK単位で行われる。ページバッファ49は、メモリ31へのデータおよびメモリ31からのデータを一時的に保持する。
【0033】
図5に例示するとともに上記したように、メモリ31は、ページPG単位でデータを書き込んだり、読み出したりし、ブロックBLK単位でデータを消去する。一方、リアルタイム記録を行なうアプリケーションソフトウェア12は、RU(recording unit)単位でデータを管理する。RUは、1回のマルチブロック書き込みコマンドで書き込まれる単位に相当する。アプリケーションソフトウェア12は、固有の論理アドレスを割り当てられたデータを、書き込みコマンドに続いてメモリカード2に送る。コントローラ32は、書き込みデータを適当なページに書き込む。RUの大きさはページの容量の大きさの整数倍である。したがって、RUの大きさの書き込みデータをメモリカード2は、物理アドレスが連続する複数のページに書き込む。なお、各RUは、ファイルシステムが管理する固有の論理アドレスに対応するので、RUにデータを割り当てるということは、データに論理アドレスを割り当てるのと同義である。ファイルシステム13は、表を用いて、分割されたデータの各部分の接続関係を管理して、この接続関係を用いてデータの部分を繋げることによって元のデータを復元する。また、コントローラ32は、論理アドレスとこの論理アドレスのデータを格納しているページのアドレス(物理アドレス)との対応を変換テーブル(論物テーブル)で管理する。
【0034】
また、アプリケーションソフトウェア12は、所定の範囲に属する所定数の連続するRUの集合からなるAU(allocation unit)という概念を用いて管理を行なう。コントローラ32は、データの論理アドレスの高位ビットを見ることによってAUの区切りを認識できる。AUの大きさはブロック(物理ブロック)の容量の大きさの整数倍である。このように、RUは自然数個のページの大きさに一致し、AUは自然数個のブロックの大きさに一致する。このため、以下の説明では、メモリカード2でのデータの読み出し/書き込みの単位としてRU、AUを用いて説明を行なう。すなわち、メモリカード2に関する記述において用いられるRUという文言は、RUと同じ大きさの、連続する複数のページを意味し、メモリカード2に関する記述において用いられるAUという文言は、AUと同じ大きさの、連続する複数のブロックを意味する。具体的には、アプリケーションソフトウェア12がRUに割り当てたデータはメモリカード2のあるRUに書き込まれており、メモリカード2は、アプリケーションソフトウェア12によってデータに割り当てられたRU(論理アドレス)とこの書き込みデータを記憶しているメモリ31内のRUを表によって管理している。以下の説明において、アプリケーションソフトウェア12が認識するAU、およびメモリ31のAUを、それぞれ論理AU、および物理AUと称する場合がある。
【0035】
図6に例示するように、アドレス比較部46は、レジスタ書き込み制御部51、各ストリーム用のAUアドレスレジスタ52a〜52d、各ストリーム用のDIRアドレスレジスタ53a〜53d、各ストリーム用AUアドレスレジスタ用比較器54a〜54d、各ストリーム用DIRアドレスレジスタ用比較器55a〜55dを含んでいる。図6の例は、ホスト1およびメモリカード2がサポートするストリームの数が4つである例に従っている。
【0036】
レジスタ書き込み制御部は、SDインターフェース41から、ホスト1から供給されたコマンドを受け取る。AUアドレスレジスタ52a〜52d、DIRアドレスレジスタ53a〜53dは、アドレス比較器54a〜54d、55a〜55dは、SDインターフェース41から書き込みコマンド内の、書き込みデータが格納されるべきRUアドレス(書き込み(RU)アドレス)を受け取る。AUアドレスレジスタ52a〜52d、DIRアドレスレジスタ53a〜53dのうちレジスタ書き込み制御部51に指定されたものが、書き込みRUアドレスまたは書き込みRUアドレスが属するAUアドレスを保持する。上記のように、RUアドレスのAUアドレスは、このRUアドレスから特定されることが可能である。レジスタ52、53は、自信が格納しているアドレスが有効か否かを示すフラグを含んでいる。
【0037】
アドレス比較器54a〜54d、55a〜55dは、アドレスレジスタ52a〜52d、53a〜53dと、それぞれ対応し、それぞれ接続されている。アドレス比較器54、55は、対応するアドレスレジスタ52、53に保持されているアドレス(またはAUアドレス)と比較する。比較の結果、両者が一致する場合、アドレス比較器54a〜54d、55a〜55dは、有効な論理レベルを有するCA_S1、CA_S2、CA_S3、CA_S4、CD_S1、CD_S2、CD_S3、CD_S4をそれぞれ出力する。アドレス比較部46のより具体的な動作は後に詳述する。
【0038】
[2] 動作
図7〜図32を参照してホストおよびメモリカードの動作について説明する。
【0039】
SDインターフェース15、41は、図7に示すコマンドを認識可能に構成されている。図7は、本実施形態に係るシーケンシャル書き込み制御コマンドを概略的に示している。図7に示すように、シーケンシャル書き込み制御コマンド(CMD20)は、少なくともインデックス部index、動作指定部SCC、ストリーム番号部SN、CRC(cyclic redundancy check)部CRCを含んでいる。インデックス部は、コマンドがシーケンシャル書き込み制御コマンドであることを特定するための特定のビット列を有する。動作指定部SCCは、シーケンシャル書き込み制御コマンドが要求する動作の種類を特定するビット列を有する。動作指定部SCC内の引数に応じて、シーケンシャル書き込み制御コマンドは、書き込み(記録)開始、DIR(directory entry)作成、新AU書き込み、書き込み(記録)開始、CI更新のいずれかを命令するコマンドとして振舞う。ストリーム番号部SNは、シーケンシャル書き込み制御コマンドが担う命令がストリーム1〜4のいずれに対するのかを特定する引数を含んでいる。各命令の意味は後述する。CRC部は、CRC符号を有する。
【0040】
図8は、シーケンシャル書き込み制御コマンドとその後にホストとメモリカードとの間で授受される信号を例示している。図8に示すように、SDインターフェース15、41において、少なくともコマンドライン(CMD)およびデータライン(DAT[0])が定義されている。ホスト1がシーケンシャル書き込み制御コマンドをコマンドライン上で送ると、メモリカード2はコマンドライン上でレスポンスを送る。レスポンスは、シーケンシャル書き込み制御コマンドと同じ内容を有する。シーケンシャル書き込み制御コマンドが、このコマンドを認識しないメモリカードで受け取られた場合、このメモリカードはレスポンスを送出しない。メモリカードは、レスポンスの送出とともに、データライン上でビジー信号をホスト1に送る。ビジー状態がタイムアウトと判断されるまでに経過する時間tbusy(max)は、シーケンシャル書き込み制御コマンドの機能に応じて予め定められており、図7に例示されている。
【0041】
ビジーの解除後、ホスト1は、コマンドライン上で書き込みコマンド(CMD24、25)をメモリカード2に送る。ホスト1は、このように、シーケンシャル書き込み制御コマンドの後に、原則、書き込みコマンドを発行する。その理由については後述する。メモリカード2は、書き込みコマンドに対するレスポンスをコマンドライン上でホスト1に送る。この後、ホスト1は、データライン上で書き込みデータをメモリカード2に送る。
【0042】
次に、ホスト1によるメモリカード2へのデータの書き込みについて説明する。
【0043】
[2−1]ランダム書き込みモード
ホスト1は、通常、ランダム書き込みモードにある。まず、図9〜図11を参照して、ランダム書き込みモードについて説明する。図9〜図11は、ランダム書き込みモードにあるメモリカード2およびホスト1の一状態を例示している。
【0044】
まず、メモリカード2は、AU1の第1〜第5RU、第8RUに、データ1〜5、8をそれぞれ格納している。第6、7RUには、データは割り当てられていない。この状態で、ホスト1は、AU1の第3〜第5RUにデータ20〜データ22を書き込む(これは、上書きに相当する)ことを希望している。しかしながら、メモリ31はデータの上書きによって直接的にこの更新命令を遂行することができないので、以下の動作を行なう。まず、図10に示すように、メモリカード2(コントローラ32)は、メモリカード2の内部処理用のAUバッファを用意する。AUバッファは、メモリカード2に含まれるAUのうちで、ホスト1によって認識されるAUと未だ対応付けられていないものによって実現される。メモリカード2は、AUバッファ内の、AU1の更新されないRUと同じ第1、第2RUにデータ1、データ2をそれぞれコピーする。AUバッファは、ランダム書き込みモードでの使用専用に設けられていてもよいし、後述のようにシーケンシャル書き込みモード時に設けられる各ストリーム専用のAUバッファのいずれかで代用されてもよい。シーケンシャル書き込みモードで使用されるAUバッファは、シーケンシャル書き込みモード以外では用途を持たないからである。
【0045】
次に、図11に示すように、メモリカード2は、AUバッファ1内の、AU1の更新対象のRUと同じ第3〜第5RUにデータ20〜データ22を書き込む。次に、メモリカード2は、AU1のデータ8を、AUバッファ1内の、AU1の更新されないRUと同じ第8RUにコピーする。次に、メモリカード2は、AUバッファ1の確定処理を行なう。確定処理とは、AUバッファを正式なAUに設定すること、すなわち、AUバッファが、ファイルシステム13が認識しているAU内のデータを記憶するAUであることを反映するように論物テーブルを書き換えることである。同時に、確定処理前の論理AU1のデータを格納していた物理AUは、無効のデータを有するものとして取り扱われるようになる。旧物理AUは、その中のデータを所定のタイミングで消去され、次いで新たな消去済みAUとなる。
【0046】
更新要求でない場合も、ここまで説明した更新要求に対する処理と同じである。すなわち、図9において、第3〜第5RUが消去済みであり、それ以外のRUは図9と同じである例を説明する。この例では、AUバッファの第1、第2RUにデータ1、データ2がコピーされ、第3〜第5RUにデータ20〜データ22が書き込まれ、第8RUにデータ8がコピーされ、確定処理が行なわれる。
【0047】
このように、ランダム書き込みモードでは、更新または書き込み要求に対して、更新または書き込み対象のRU以外のRU内のデータは、AUバッファ内へのコピーを介して、AU内にコピーされる。
【0048】
[2−2]シーケンシャル書き込みモード
メモリカード2は、シーケンシャル書き込みモードを有する。シーケンシャル書き込みモードでは、メモリカード2はランダム書き込みモードと異なる方式でデータを書き込む。シーケンシャル書き込みモードでは、メモリカード2は、常に消去済みのAUにデータを書き込み、データの論理アドレスの順序とデータを格納するRUのアドレスの順序とが一致するように、すなわちシーケンシャルに書き込みを行なう。
【0049】
メモリカード2は、動作指定部SCC内において書き込み開始を指示する引数を有するシーケンシャル書き込み制御コマンドを受け取ると、シーケンシャル書き込みモードに移行する。メモリカード2は、シーケンシャル書き込みモードにおいて、複数のストリームをメモリカードに書き込むことが可能に構成されている。シーケンシャル書き込みモードについて、図12〜図28を参照して説明する。図12は、ホストからメモリカード2に送られるコマンドを時系列に沿って例示している。
【0050】
以下の説明において、シーケンシャル書き込み制御コマンドの動作指定部SCCにおいて、ある機能を指定されているシーケンシャル書き込み制御コマンドを、この機能を持つコマンドとして引用する。すなわち、書き込み開始、DIR作成、新AU書き込み、書き込み終了、CI更新を命令するシーケンシャル書き込み制御コマンドを、それぞれ、書き込み開始コマンド、DIR作成コマンド、新AU書き込みコマンド、書き込み終了コマンド、CI更新コマンドと称する。
【0051】
図13に示すように、ホスト1は、シーケンシャル書き込みモードにおいて、AU1にストリーム1のためのデータA1〜A6を書き込むことを要求する。そのために、ホスト1は、ストリーム1の書き込み開始準備を行なう(ステップS1)。具体的には、ホスト1は、まず、DIR作成コマンド(Create DIR)を発行する。このDIR作成コマンドは、ストリーム番号は、1つ目のストリームの書き込みである故に、ストリーム1を示す引数を有している(SN=1)。このコマンドを受けて、メモリカード2は、ストリーム1用のDIRのための論理アドレスをメモリカード2内に確保する。
【0052】
次に、ホスト1は、メモリカード2に、書き込みコマンドと書き込みデータ(両者は一体でコマンド「Write DIR」として図示されている)を送信する。この書き込みコマンドは、直前のDIR作成コマンドによってDIRを書き込むための書き込みコマンドであると特定され、したがってDIR書き込みコマンドと称する。DIRデータは、DIR作成コマンドに応答して用意された、メモリカード2の専用のAUバッファに書き込まれ、その後にこのAUバッファに対して確定処理(終了処理)が行われる。
【0053】
ホスト1は、書き込みコマンドで指示されるデータがどのストリーム用のものかについて把握している。一方で、メモリカード2は、書き込みコマンドからストリーム番号を把握できない。書き込みコマンドは、ストリーム番号を特定する引数を有していないからである。このため、新たなストリームについての書き込みコマンド直前にシーケンシャル書き込み制御コマンドが発行され、このシーケンシャル書き込み制御コマンドにおいて、当該書き込みコマンドが対象としているストリーム番号が明示される。メモリカード2は、このストリーム番号から、書き込みコマンドにより書き込まれるデータがどのストリーム番号のためのものであるかを知得できる。この処理は、具体的には、アドレス比較部46(図6)を用いて、以下の方法に従って実行される。
【0054】
レジスタ書き込み制御部51は、シーケンシャル書き込み制御コマンドを受け取ると、その直後の書き込みコマンドが対象とするストリームを、シーケンシャル書き込みコマンドから認識できる。さらに、レジスタ書き込み制御部51は、シーケンシャル書き込み制御コマンド内の動作指定部内の引数から、当該シーケンシャル書き込みコマンドが要求する動作を認識できる。書き込みコマンドが、DIR更新コマンドまたは書き込み開始コマンド(の意味のシーケンシャル書き込み制御コマンド)の直後である場合、当該書き込みコマンドは、DIR書き込みコマンドまたはストリームのためのデータを書き込むためのコマンド(データ書き込みコマンド)である。レジスタ書き込み制御部51は、DIR書き込みコマンドを受け取ると、その中の書き込みアドレスの論理アドレスを、対応するストリームに基づいて、DIRアドレスレジスタ52a〜52dのいずれかに格納し、そのフラグを「有効」に設定する。同様に、レジスタ書き込み制御部51は、データ書き込みコマンドを受け取ると、その中の書き込みアドレスのAUアドレスを、対応するストリームに基づいて、AUアドレスレジスタ53a〜53dのいずれかに格納し、そのフラグを「有効」にする。そして、シーケンシャル書き込みモードにおいて新たな書き込みコマンドを受け取る度に、アドレス比較部51は、当該書き込みコマンド内の書き込みアドレスまたはそのAUアドレスとレジスタ52、53に格納されているアドレスと、を比較する。この比較によって、メモリカード2は、書き込みコマンドが対象とするストリームを特定できる。この比較の詳細は、図12の説明において比較が発生する時点で説明する。
【0055】
図12に戻って説明を続ける。ステップS2は、ストリーム1のためのデータを書き込むためのものである。まず、ホスト1は、ストリーム1を指定する引数を有する書き込み開始コマンド(Start Rec)をメモリカード2に送る。書き込み開始コマンドを受け取ると、メモリカード2はシーケンシャル書き込みモードに移行する。シーケンシャル書き込みモードでは、メモリカード2は、各ストリームに専用に用意されている未書き込みのAUバッファを用意し、用意されたAUバッファ内の低位アドレスのRUから高位アドレスのRUに向かって、書き込みデータを順次書き込む。したがって、メモリカード2は、書き込み開始コマンドを受け取ると、図14に示すように、ストリーム1用のAUバッファ1をメモリカード2内に用意する。ここで用意されるAUバッファ1が直前のランダム書き込みモードで流用されていた等の理由により、AUバッファ1内にデータが残っている場合があり得る。この場合、メモリカード2は、AUバッファ1内で有効なデータのコピーを含めて、AUバッファ1に対する確定処理を行なう。そして、メモリカード2は、確定処理前の旧AUバッファ1を無効にした後で、新たな消去済みのAUを新たなAUバッファ1として、以降の処理で用いる。このように確定処理を経てAUバッファを用意する場合、ビジー時間は、AUバッファが2つのモードの両方で用いられない場合やストリーム2〜4のためのデータの記録の開始準備よりも長い。
【0056】
続いて、ホスト1は、書き込みコマンド(Write RU)を発行する。この書き込みコマンドは、書き込み開始コマンド直後に位置するので、実データ(ストリームデータ)を書き込むためのデータ書き込みコマンドである。メモリカード2は、このデータ書き込みコマンドがストリーム1を対象としていることを直前の書き込み開始コマンドから認識している。このため、レジスタ書き込み制御部51(図6)は、当該データ書き込みコマンド内のアドレスのAUアドレスを、ストリーム1用AUアドレスレジスタ52aに格納するとともに、フラグを「有効」にする。アドレス比較器54、55は、書き込みアドレスのAUアドレスを、対応するアドレスレジスタ52、53内で有効なアドレスと比較する。通常の動作では、全てのストリームに対して、DIR書き込みアドレスが属するAUアドレスとデータ書き込みアドレスのAUアドレスとが一致することはない。DIRとデータが同じAUであると言うことは、シーケンシャル書き込みができないことを意味し、ホスト1が異常な処理を要求しているので、メモリカード2は、処理を停止する。
【0057】
データ書き込みコマンドに続いて、ホスト1は、ストリーム1についての書き込みデータ(図では、書き込みコマンドと一体で表示されている)を順次メモリカードに送る。同じストリームについての書き込みが中断されることなく継続している場合、書き込みコマンドは、一連の書き込みデータの最初に発行されるのみでもよい。図15に示すように、メモリカード2は、書き込みデータを受け取ると、AUバッファ1の未書き込みの最低位アドレスのRUから高位アドレスのRUに向かって順次書き込む。
【0058】
図12および図16に示すように、ホスト1は、ストリーム1の書き込みと平行して、AU2にストリーム2のためのデータB1を書き込むことを要求する。そのために、ホスト1は、ストリーム2の書き込みの開始準備を行なう(ステップS3)。具体的には、ホスト1は、ストリーム2用のDIR作成コマンドを発行する。このコマンドを受け取ると、メモリカード2は、その中の書き込み(論理)アドレスをストリーム2用DIRアドレスレジスタ53bに格納するとともに、そのフラグを「有効」に設定する。また、メモリカード2は、DIR書き込みコマンドを受け取ると、ストリーム2用のDIRのためのAUをメモリカード2内に確保する。
【0059】
ストリーム制御部24は、メモリカード2から読み出されたクラス情報を用いて、ソフトウェア(アプリケーション)12が要求しているビットレートでストリーム2を、ストリーム1と平行して書き込み可能かを判断する。現在書き込み中のストリーム1に加えてストリーム2の書き込みを受け付けられない場合、ホスト1は、例えば、ストリーム2の書き込みを行なわないとともに、その旨をユーザに知らせる。このように、新たなストリームの書き込み要求を受けると、ホスト1は、受付可能なストリームの数を決定する。ただし、個数の上限は、別の制約によって定められている。すなわち、受付可能なストリームの数は、ホスト1およびメモリカード2がサポートしている、バッファ21、22、レジスタ52、53の数によって決定される。以下の説明では、ストリーム2の書き込み要求が受け入れ可能であると仮定する。
【0060】
DIR作成コマンドに続いて、ホスト1は、ストリーム2についてのDIR書き込みコマンドおよびDIRデータをメモリカード2に送る。全てのアドレス比較器54、55は、ストリーム2についてのDIR書き込みコマンド内の論理アドレスを、アドレスレジスタ52、53内の有効なアドレスと比較する。しかし、正常動作であれば、一致は生じないはずである。また、メモリカード2は、ストリーム2用DIRデータを、指示されたアドレスのAUまたはAUバッファに書き込む。
【0061】
次に、図12および図16に示すように、ホスト1は、AU1にストリーム1のためのデータA7を書き込むことを要求する(ステップS4)。そのために、ホスト1は、ストリーム1についてのデータ書き込みコマンドおよびデータA7をメモリカード2に送る。上記のように、書き込みコマンドは引数にアドレス情報しか持たないため、シーケンシャル書き込み制御コマンドが先行しない書き込みコマンドがどのストリーム番号のためのものであるかを示す情報を有さない。そこで、メモリカード2は、アドレス比較部46を用いて、このような書き込みコマンドが対応するストリーム番号を割り出す。すなわち、各アドレス比較器54、55は、書き込みアドレスと、対応するレジスタ52、53内のアドレスと、を比較する。比較の結果、書き込みアドレスと一致したアドレスを格納するアドレス比較器54a〜54dのいずれか(ここでは、比較器54a)から、信号CA_S1〜CA_S4のいずれか(ここでは、信号CA_S1)がMPU42に出力される。この信号により、書き込みアドレス(またはそのAUアドレス)と一致するアドレスを保持するアドレスレジスタ52に対応するストリーム(ここでは、ストリーム1)が、書き込みコマンドの対象のストリームであることを、メモリカード2は知得する。これに従い、コントローラ32は、書き込みデータA7を、ストリーム1用のAUバッファ1内の未書き込みの最低位アドレスを有する第7RUに書き込む。
【0062】
次に、図12および図17に示すように、ホスト1は、ストリーム2のためのデータの書き込みを継続する(ステップS5)。そのために、ホスト1は、ストリーム2についての書き込み開始コマンドを発行する(SN=2)。メモリカード2は、この書き込み開始コマンドを受け取ると、ストリーム2用のAUバッファ2をメモリカード2内に用意する。このように、ホスト1およびメモリカード2がサポートする、平行して書き込み可能なストリームの数と同じ数の各ストリーム用のAUバッファが用意される。続いて、ホスト1は、データ書き込みコマンドおよびストリーム2のためのデータB1をメモリカード2に送る。このデータ書き込みコマンドは、ストリーム番号を明示するデータ書き込み開始コマンドに後続する。このため、メモリカード2は、このデータ書き込みコマンドがストリーム2のためのデータを書き込むためのものであることを認識し、レジスタ書き込み制御部46は書き込みアドレスのAUアドレスを、ストリーム2用AUアドレスレジスタ52b(図6)内に格納する。なお、アドレス比較部46においてAUアドレスの一致は生じない。続いて、メモリカード2は、データB1をAUバッファ2内の未書き込みの最低位アドレスを有する第1RUに書き込む。
【0063】
データB1の書き込みの開始によって、ストリーム1のためのデータの書き込みとストリーム2のためのデータの書き込みとが平行して発生することになる。このため、ホスト1は、ストリーム1のためのデータとストリーム2のためのデータとを時分割の原理に従ってメモリカード2に送る。この時分割の際の、ストリーム1のためのデータのビットレートおよびストリーム2のためのデータのビットレートは、フローコントローラ14(図2)内のストリーム制御部24が決定する。この決定に基づいた制御に従ってマルチプレクサ23が、データを順次メモリカード2に送る。ストリーム制御部24は、各ビットレートの決定を、レート決定部25に従って実行する。レート決定部25は、例えばメモリカード2の初期化時にメモリカード2からクラス情報、AUサイズ等についての情報を読み出し、これを記憶しておく。そして、レート決定部25は、アプリケーション(アプリケーションソフトウェア12)に応じて各ストリームに要求されているビットレートとクラス情報(最低書き込み速度)とを用いて、各ストリームのためのデータをホスト1からメモリカード2に送る際のビットレートを決定する。すなわち、アプリケーションから要求されている各ストリームについてのビットレートを実現できるように、別々のストリームのためのデータの量および送出する順序を決定する。なお、ストリーム制御部24は、このように条件判断が必要なため、通常はソフトウェアによって構成されるが、ハードウェアによる構成も可能である。
【0064】
次に、図12および図18に示すように、ホスト1は、AU1にストリーム1のためのデータA8を書き込むことを要求する(ステップS6)。そのために、ホスト1は、データ書き込みコマンドとデータA8をメモリカード2に送る。図6を用いて説明したように、アドレス比較部46は書き込みアドレスのAUアドレスを比較することによって、データA8がストリーム1のためのものであることを認識する。このため、メモリカード2は、図18に示すように、データA8をAUバッファ1内の未書き込みの最低位アドレスを有する第8RUに書き込む。
【0065】
データA8の書き込みによって、AU1内の全RUにデータが書き込まれたことになる。そこで、ホスト1は、ストリーム1のためのデータの書き込みを継続するために、ストリーム1のための新たなAUバッファを作成することを要求する(ステップS7)。そのために、図12および図19に示すように、ホスト1は、ストリーム1についての新AU書き込みコマンド(New AU)をメモリカード2に送る。この新AU書き込みコマンドを受け取ると、メモリカード2は、まず、ストリーム1のための現在のAUバッファ(AUバッファ1)に対して確定処理を行なう。この結果、AUバッファ1が論理AU1に対応することを反映するように論物テーブルが更新される。次いで、メモリカード2は、ストリーム1のための新たなAUバッファ(AUバッファ3)を確保する。さらに、レジスタ書き込み制御部51(図6)は、ストリーム1用AUアドレスレジスタ52aに格納されているAUアドレスおよびそのフラグをクリアする。
【0066】
続いて、ホスト1は、AU3にストリーム1のためのデータA9を書き込むことを要求する。そのために、ホスト1は、データ書き込みコマンドとデータA9をメモリカード2に送る。メモリカード2は、このデータ書き込みコマンドがストリーム1のためのデータを書き込むためのものであることを直前の新AU作成コマンドから認識する。このため、レジスタ書き込み制御部51(図6)は、書き込みアドレスのAUアドレスを、ストリーム1用AUアドレスレジスタ52aに格納するとともに、そのフラグを「有効」に設定する。アドレス比較器54、55は、比較を行なうが、一致は生じない。続いて、メモリカード2は、図20に示すように、データA9をAUバッファ3の未書き込みの最低位アドレスを有する第1RUに書き込む。
【0067】
ホスト1は、引き続き、ストリーム1のためのデータA10〜A15をAU3に書き込み、ストリーム2のためのデータB2〜B5をAU2に書き込むことを要求する。そのために、レート決定部25は、例えばまずストリーム2のためのデータB2〜B5をメモリカード2に送ることを決定する。この決定に基づいて、図12および図21に示すように、ホスト1は、データ書き込みコマンドおよびデータB2〜B5をメモリカード2に送る(ステップS8)。図6を用いて説明したように、アドレス比較部46は、書き込みアドレスのAUアドレスを比較することによって、データB2〜B5がストリーム2のためのものであることを認識する。このため、メモリカード2は、データB2〜B5を、AUバッファ2内の未書き込みの最低位アドレス第2RU、第3RU〜第5RUにそれぞれ書き込む。
【0068】
次に、図12および図22に示すように、ホスト1は、データ書き込みコマンドとデータA10〜A15をメモリカード2に送る。図6を用いて説明したように、アドレス比較部46は、書き込みアドレスのAUアドレスを比較することによって、データA10〜A15がストリーム1のためのものであることを認識する。このため、メモリカード2は、データA10〜A15を、AUバッファ3内の未書き込みの最低位アドレスを有する第2RU、第3RU〜第7RUにそれぞれ書き込む。このように、データは各ストリーム専用のAUバッファへと振り分けられ、各ストリームについてシーケンシャルなデータの書き込みが維持される。このため、データの書き込みおよび読み出しに要する時間は、ランダム書き込みの場合よりも短い。
【0069】
上記のように、CIはCI用バッファ22に保持されている。しかし、CIは、バッファのサイズとストリームの長さに応じて、CI用バッファ内に収まりきらないほどに大きくなることがある。このような場合、フローコントローラ14のCI用バッファが一杯になったことを検出して、これを受けて、ホスト1は、現時点でのCIの少なくとも一部をメモリカード2内のCI用に確保されたバッファに書き込むことを要求する(ステップS9)。そのために、ホスト1は、特定のストリーム(ここでは、ストリーム1)についてのCI更新コマンドをメモリカード2に送る。続いて、ホスト1は、書き込みコマンドとCIデータをメモリカード2に送る。メモリカード2は、この書き込みコマンドが、直前のCI更新コマンドによってCIデータ書き込みのためのもの(CI書き込みコマンド)であることを認識する。一方で、アドレス比較部46は、通例通り書き込みアドレス(またはそのAUアドレス)をレジスト52、53内のアドレスと比較するが、異常時以外、一致は生じないはずである。一致が生じた場合、ホスト1が誤った処理を要求しているので、メモリカード2は、処理を停止するとともにホスト1にエラー信号を送る。また、CI書き込みコマンド内のアドレスのAUアドレスは、アドレスレジスタに格納されない。
【0070】
CIデータを受け取ると、メモリカード2はCIデータをCI用バッファに書き込む。シーケンシャル書き込みモード中のCIデータの書き込みは、時分割の原理に従って行なわれるので特定の大きさ以下の大きさでなければならない。このため、CIデータの書き込みが完了しない場合であっても、CIデータの書き込みは途中で中断される。残りのCIデータは、別のタイミングの次なるCI更新コマンドで実行されるか、シーケンシャル書き込みモードの終了後に書き込まれる。
【0071】
次に、図12および図23に示すように、ホスト1は、AU2内にストリーム2のためのデータB6を書き込むことを要求する。そのために、ホスト1は、データ書き込みコマンドとデータB6をメモリカード2に送る。図6を用いて説明したように、比較アドレス部46は、書き込みアドレスのAUアドレスを比較することによって、データB6がストリーム2のためのものであることを認識する。このため、メモリカード2は、データB6を、AUバッファ2内の未書き込みの最低位アドレスを有する第6RUに書き込む。
【0072】
例えばデータB6がストリーム2のための最後のデータであり、このため、ホスト1は、図12および図24に示すように、ストリーム2についての書き込み終了コマンド(End Rec)をメモリカード2に送る(ステップS10)。メモリカード2は、新AU書き込みコマンドの場合と同じく書き込み終了コマンドを受け取った場合も、対象のストリームについて現在有効なAUバッファ(AUバッファ2)に対する確定処理を行なう。この結果、AUバッファ2が論理AU2に対応することを反映するように論物テーブルが更新される。確定処理の際、論理AU2内の最後に用いられたRUより高位のRU(ここでの例では、第7、第8RU)にデータが割り当てられていたとしても、このデータは、AUバッファ(AUバッファ2)にはコピーされない。また、書き込み終了コマンドによって、レジスタ書き込み制御部51は、対応するストリーム(ここでは、ストリーム2)用アドレスレジスタ(ここでは、アドレスレジスタ52b)に格納されているAUアドレスおよびそのフラグをクリアする。
【0073】
また、書き込み終了コマンドに続いて、ホスト1は、この書き込み終了コマンドの対象のストリーム(ストリーム2)についてのCI更新コマンドおよびCIデータをメモリカード2に送る。ただし、シーケンシャル書き込みモード中のCIデータの書き込みは、上記のように、時分割の枠組みの中で行なわれるため、完了しない場合がある。
【0074】
次に、ホスト1は、AU3にストリーム1のためのデータA16を書き込むことを要求する。そのために、ホスト1は、データ書き込みコマンドとデータA16をメモリカード2に送る。図6を用いて説明したように、アドレス比較部46は、書き込みアドレスのAUアドレスを比較することによって、データA16がストリーム1のためのものであることを認識する。このため、メモリカード2は、データA16をAUバッファ3内の未書き込みの最低位アドレスを有する第8RUに書き込む。
【0075】
AUバッファ3内の全RUにデータが書き込まれたので、ホスト1は、ストリーム1のための新たなAUバッファを作成することを要求する(ステップS11)。そのために、図12および図25に示すように、ホスト1は、ストリーム1についての新AU書き込みコマンドをメモリカード2に送る。このコマンドを受け取ると、メモリカード2は、ストリーム1のための現在のAUバッファ(AUバッファ3)に対して確定処理を行ない、ストリーム1のための新たなAUバッファ(AUバッファ4)を用意する。さらに、レジスタ書き込み制御部51(図6)は、ストリーム1用AUアドレスレジスタに格納されているアドレスおよびその有効フラグをクリアする。
【0076】
次に、図12および図26に示すように、ホスト1は、AU4にストリーム1のためのデータA17〜A19を書き込むことを要求する。そのために、ホスト1は、データ書き込みコマンドとデータA17〜A19をメモリカード2に送る。このデータ書き込みコマンドの直前の新AU作成コマンドによって、または比較アドレス部46での比較によって、メモリカード2は、データA17〜A19がストリーム1のためのものであることを認識する。このため、メモリカード2は、データA17〜A19を、AUバッファ4内の未書き込みの最低位アドレスを有する第1RU、第2RU、第3RUにそれぞれ書き込む。
【0077】
次に、図12に示すように、ホスト1は、FATデータの更新を要求する(ステップS12)。そのために、ホスト1は、FAT更新のための書き込みコマンド(Update FAT)およびFATデータをメモリカード2に送る(ステップS12)。FAT更新は、当業者によって知られているように、データの書き込みの最中に特定のタイミングで行なわれ、FAT更新の時点までに書き込まれたデータについてのFAT情報を更新するために行なわれる。メモリカード2は、シーケンシャル書き込みモードの最中のFAT更新に対応しており、FATの更新に影響されることなくシーケンシャル書き込みを維持できるように構成されている。メモリカード2は、FATデータを、例えばFATを含む管理データ用のAUバッファ内で低位アドレスのRUから高位アドレスのRUに順次書き込む。なお、FAT書き込みコマンド内のアドレスも、アドレスレジスタ52、53に格納されない。したがって、通常、このような書き込みコマンド内のアドレスは、アドレスレジスタ52、53内のいずれのアドレスとも一致しないはずである。一致が生じた場合、メモリカード2はホスト1にエラー信号を送る。
【0078】
次に、図12に示すように、ホスト1は、ストリーム2についてのCIの全体の少なくとも一部をメモリカード2内のCI用AUバッファに書き込むことを要求する(ステップS13)。そのために、ホスト1は、ストリーム2についてのCI更新コマンド、CI書き込みコマンド、CIデータをメモリカード2に送る。
【0079】
次に、図12および図27に示すように、ホスト1は、AU4にストリーム1のためのデータA20〜A22を書き込むことを要求する。そのために、ホスト1は、データ書き込みコマンドとデータA20〜A22をメモリカード2に送る。図6を用いて説明したように、アドレス比較部46は、書き込みアドレスのAUアドレスを比較することによって、データA20〜A22がストリーム1のためのものであることを認識する。このため、メモリカード2は、データA20〜A22を、AUバッファ4内の未書き込みの最低位アドレスを有する第4RU、第5RU、第6RUにそれぞれ書き込む。
【0080】
例えばデータA22がストリーム1のための最後のデータであり、このため、ホスト1は、図12および図28に示すように、ストリーム1についての書き込み終了コマンドをメモリカード2に送る(ステップS14)。このコマンドによって、メモリカード2は、ストリーム1のための現在のAUバッファ4に対する確定処理を行なう。この結果、AUバッファ4が論理AU4に対応することを反映するように論物テーブルが更新される。
【0081】
最後のストリームについての書き込み終了コマンドを受け取ると、メモリカード2は、ランダム書き込みモードに移行する。ランダム書き込みモードに移行したことに続いて、図12に示すように、ホスト1は、ストリーム1についてのCI書き込みコマンドおよびCIデータをメモリカード2に送る。メモリカード2がランダム書き込みモードにあるので、シーケンシャル書き込みモード時の書き込み時間に対する制約はメモリカード2に課されない。このため、メモリカード2は、当該CI書き込みコマンドおよびCIデータを受け取ると、ストリーム1についてのCIの書き込みを完了させる。この段階でのCI書き込みコマンドは、ランダム書き込みモード内で行なわれるので、シーケンシャル書き込み制御コマンドに後続する必要はない。
【0082】
なお、唯一のストリームのためのデータの書き込み完了後にメモリカード2をランダム書き込みモードに移行させるためには、上記の書き込み終了コマンドの発行は、必須ではない。すなわち、メモリカード2は、シーケンシャル書き込み制御コマンド無しに例えばCI書き込みコマンド等のランダム書き込みを要求する書き込みコマンドを受け取ると、シーケンシャル書き込みコマンドの終了を認識する。そして、書き込み終了コマンド受領時と同じく、AUバッファに対して確定処理を行なう。ただし、この場合、書き込まれなかったRU内のデータは、これが維持されるようにコピーされるという違いがある。このように書き込み終了コマンド無しでランダム書き込みモードが指定された場合、記録が完了していないストリームについてのアドレスレジスタ52内のデータおよびそのフラグがクリアされない制御が考えられる。この場合、メモリカード2は、このアドレス52内のデータおよびフラグを、対応するストリームに対する書き込み終了コマンドを受け取った際にクリアする。
【0083】
次に、図12に示すように、ホスト1は、ストリーム2についてのCI書き込みコマンドおよびCIデータをメモリカード2に送る。これらのコマンドおよびデータを受け取ると、メモリカード2は、ストリーム2についてのCIの書き込みを完了させる。
【0084】
図12〜図28を用いた説明は、2つのストリームを記録する例を扱っている。しかしながら、3または4つのストリームの記録も、2つのストリームと同様の原理によって実現される。4つのストリームが平行して書き込まれる場合、図29に示すように、4つのAUバッファが設けられる。
【0085】
次に、ここまでの説明で触れなかった状況下でのホスト1およびメモリカード2の動作について説明する。
【0086】
メモリカード2は、書き込み中の2つ以上のストリームが存在している間にランダム書き込みに該当する書き込みアドレスを指定する書き込みコマンドを受け取ると、ホスト1に対してエラー信号を送るようにすることもできる。複数のストリームの記録の終了は終了コマンドにより終了されるべきなので、このような要求はホスト1の誤った制御に起因すると考えられる。シーケンシャル書き込みモードにあるメモリカード2に対してホスト1が誤った(不正な)制御を行なうと、メモリカード2は、ランダム書き込みモードに移行する。誤った制御として、シーケンシャル書き込みを要求することや、RUの整数倍の書き込みでない書き込みを要求することが該当する。なお、読み出しコマンドは、書き込みシーケンスに影響しない。
【0087】
書き込みアドレスがルートディレクトリ領域を指している場合、この書き込みアドレスはアドレスレジスタ52、53のいずれにも格納されない。このため、アドレス比較部46での比較の結果、アドレス比較器54、55が一致の旨の信号を出力することは通常ない。したがって、ルートディレクトリ領域への書き込みデータは、ストリーム記録用のAUバッファには書き込まれず、別の(例えばルートディレクトリ専用の)バッファに書き込まれる。
【0088】
次に、読み出しについて図30〜図32を参照して説明する。図30〜図32は、データ読み出しの際のメモリカード2およびホスト1の一状態を順に例示している。
【0089】
確定処理後のAUからの読み出しについては、確定処理後のAUは、ユーザ(ホスト1)が任意にアクセスできるので、通常のメモリカードと同じである。一方、あるストリームのためのデータがメモリカード2に記録されている最中に、このストリームの記録済みのデータを読み出すことが要求される場合がある。このような場合であっても確定処理前のAUからもデータが読み出されることが可能に、メモリカード2は構成されている。
【0090】
図30に示すように、論理アドレス群(論理AU)AU1に属する各論理アドレスを割り当てられたデータ1〜データ8が、メモリ31中のAU(物理AU)1中の第1RU〜第8RUにそれぞれ格納されている。この状態で、論理AU1中の第1RU〜第5RUに相当する各論理アドレスを割り当てられたストリームデータ11〜データ15の書き込みがホスト1からメモリカード2に要求されたとする。この結果、図31のように、このストリーム(例えばストリーム1)用のAUバッファ1のRU1から順にデータ11〜データ15が書き込まれる。この時点で、物理AU1の確定処理は完了していない。この状態で、論理AU1の第1〜第5RUの読み出しの要求がホスト1からメモリカード2に出されると、メモリカード2は、これらの論理アドレス(論理AU1の第1〜第5RUに対応している)にそれぞれ対応するデータ11〜データ15をAUバッファ1から読み出す。確定処理が行なわれていないので、この段階では論理AU1の第1〜第5RUに対応する論理アドレスを割り当てられたデータはAU1中のデータ1〜データ5であるが、メモリカード2はデータ1〜データ5を読み出さない。一方、論理AU1の第6〜第8RUの読み出しの要求がホスト1からメモリカード2に出されると、メモリカード2は、これらの論理AU1の第6〜第8RUの論理アドレスにそれぞれ対応するデータ6〜データ8を読み出す。
【0091】
確定処理は、上記の説明と同様であり、図32に示すように、メモリカード2はAUバッファ1が論理AU1に対応することを反映するように論物テーブルを更新する。次いで、しかるべき時点で物理AU1は消去される。このような制御とすることにより、確定処理前のAUのデータを読み出すことができる。
【0092】
確定処理前に、何らかのエラーが生じた場合、AUバッファ1は無効となる。すると、AUバッファ1中のデータは読み出せない。しかしながら、論理AU1と物理AU1の対応付けが有効なままなので、書き込み開始前の状態(図30の状態)を復旧できる。
【0093】
以上述べたように、本実施形態に係るホストおよびメモリカードは、複数のストリームの1つを特定する情報を含んだシーケンシャル書き込みコマンドを認識可能に構成されており、これを用いて、ストリームごとに記録の開始や終了を特定できる。そして、メモリカードは、開始コマンドを受け取るとシーケンシャル書き込みモードに移行し、シーケンシャル書き込みモードでは未書き込みAUからなるAUバッファに書き込みデータの論理アドレスの順に書き込みデータを書き込む。AUバッファはストリームごとに専用に設けられるので、書き込みデータは、対応するAUバッファ内でストリームごとに論理アドレス順に並べられることになる。このように、メモリカードは、書き込みデータのストリームを特定し、各ストリーム専用のAUバッファにシーケンシャルにデータを書き込むので、本実施形態に係るホストおよびメモリカードは、複数のストリームを平行して記録することができる。
【0094】
(第2実施形態)
第1実施形態では、シーケンシャル書き込みモードにおいてAUバッファが用意される。これに対して、第2実施形態では、AUバッファを用いずにシーケンシャル書き込みが行なわれる。
【0095】
図33〜図34は、第2実施形態における、データ読み出しの際のメモリカード2およびホスト1の一状態を順に例示している。
【0096】
まず、図33に示すように、論理AU1に属する各論理アドレスを割り当てられたデータ1〜データ8が、メモリ31中の物理AU1中の第1RU〜第8RUにそれぞれ格納されている。この状態で、ホスト1は、論理AU1中の第1RU〜第5RUに相当する各論理アドレスを割り当てられたストリームデータ11〜データ15の書き込みを希望している。この要求を実行するために、ホスト1は、新AU書き込みコマンドをメモリカード2に発行する。
【0097】
新AU書き込みコマンドを受けて、図34に示すように、メモリカード2は消去済みの新たなAU(例えばAU2)を用意する。また、メモリカード2は、このAU2が論理AU1に対応することを反映するように論物テーブルを更新する。そして、AU2にデータ11〜データ15を書き込む。読み出しは、既に論物テーブルの反映が終了しているので、ホスト1からのデータ11〜データ15の読み出し要求に対して、メモリ2はAU2からこれらのデータを読み出す。論理AU1中の残りの第6〜第8RUに対応する論理アドレスを割り当てられたデータの読み出し要求に対しては、メモリカード2は、不定データを読み出す。不定データの代わりに、意味を成さないデータや、特定の固定値からなるデータが読み出されてもよい。
【0098】
このような専用のバッファを用いない実施形態では、データ書き込み要求に対して、現在対応しているAU(本例ではAU1)を消去して、このAUにデータを書き込むことも考えられる。しかしながら、NAND型フラッシュメモリでは、一般に、各AUへの書き込み回数を平均化する(ウェアレベリング)ことが行なわれる。このため、上記のように、新たなAU(本例ではAU2)が用意される。なお、内部バッファを用いない書き込みの場合、置き換え後のAU(AU2)への書き込みの最中にエラーが生じたとしても、書き込み開始前の状態(図33の状態)を復元することはできない。
【0099】
第2実施形態の上記した以外の点については、全て第1実施形態と同じである。
【0100】
以上述べたように、第2実施形態によれば、第1実施形態と同様に、複数のストリームの1つを特定する情報を含んだシーケンシャル書き込みコマンドを認識可能に構成されており、これを用いて、ストリームごとに記録の開始や終了を特定できる。このため、第1実施形態と同じ利点を得られる。
【0101】
(第3実施形態)
第3実施形態では、シーケンシャル書き込みモードが、シングルストリームモードとマルチストリームモードとを含んでいる。さらに、第3実施形態では、第1実施形態ではホスト1がシーケンシャル書き込み制御コマンドの直後に書き込みコマンドを発行することになっているのに対して、この制限が緩和されている。
【0102】
図35は、第3実施形態に係るシーケンシャル書き込み制御コマンドを概略的に示している。第3実施形態において、SDインターフェース15、41は、図35に示すコマンドを認識可能に構成されている。本実施形態に係るシーケンシャル書き込みコマンド(CMD20)は、第1実施形態に係るものと、ストリーム番号部SNの引数の種類のみが異なる。図35に示すように、第1実施形態と同じくストリーム番号部の引数にはシーケンシャル書き込み制御コマンドが担う命令がストリーム1〜4のいずれに対するのかを特定する引数が定義されている。さらに、ストリーム番号部の引数には、シングルストリームモードへの移行を指示する引数が定義されている。例えば、引数が「0000」であれば、シングルストリームモードが指定され、「0000」を超える数であれば、マルチストリームモードが指定されるとともにストリーム番号が特定される。
【0103】
図36は、シーケンシャル書き込み制御コマンドとその後にホストとメモリカードとの間で授受される信号を例示している。図36に示すように、ホスト1がシーケンシャル書き込み制御コマンドをコマンドライン上で送ると、メモリカード2はコマンドライン上でレスポンスを送る。レスポンスは、シーケンシャル書き込み制御コマンドと同じ内容を有する。シーケンシャル書き込み制御コマンドが、このコマンドを認識しないメモリカードで受け取られた場合、このメモリカードはレスポンスを送出しない。メモリカードは、レスポンスの送出とともに、データライン上でビジー信号をホスト1に送る。ビジー状態がタイムアウトと判断されるまでに経過する時間tbusy(max)は、第1実施形態と同様である。図37、図38は、ホスト1とメモリカード2とが単方向の信号線で接続された場合を示している。信号線DIはホスト1からメモリカード2に向かう信号のためのものであり、信号線DOはメモリカード2からホスト1に向かう信号のためのものである。図37、図38は、それぞれ、SPIとUHS−IIに対応する。図37では、ビジー期間が信号のレベルによって示されている。例えば、レスポンスの直後のローレベルによってビジーが示される。図38では、ビジーを示すパケットがホストに送信される。ホスト1は、ビジーのパケットを待つことによってビジー時間を認識する。図37、図38についてのその他の点は、図36と同じである。このように、コマンドを送るラインは、コマンドラインに限る必要はない。
【0104】
図39は、第3実施形態に係るメモリカードのモードの状態遷移を示している。図39に示すように、メモリカード2は、ランダム書き込みモード、シングルストリームモード、マルチストリームモードで動作が可能である。シングルストリームモードは、例えば特開2010−140268号公報(特許文献2)に記載のものに対応する。すなわち、シングルストリームモードに移行すると、メモリカード2は、未書き込みのRUのみからなるAUバッファを用意し、AUバッファ内のRUに書き込みデータを書き込みデータの論理アドレスの順に従って書き込み、次いで所定のタイミングで確定処理を行なう。または、第2実施形態のように、AUバッファを用いずに、消去済みの新たなAUの確定処理を待たずに旧AUと置き換えるように論物テーブルを反映させて、この新AUに順次書き込むようにしてもよい。また、シングルストリームモードにおいて、シーケンシャル書き込み制御コマンドのうち、書き込み開始コマンドは、複数のストリームのデータの記録の準備コマンドとしての役割を担い、さらにその後の書き込みコマンドがシーケンシャルライトを行うデータと認識される。シーケンシャル書き込み中のデータとは異なるCIデータを書き込むには、CI更新コマンドが用いられ、CIデータとの区別がなされる。すなわち、シングルストリームモードにおいても、CI用バッファ22が一杯になった際等に、CI更新コマンドおよびCI書き込みコマンドが続けて発行される。
【0105】
マルチストリームモードは、第1実施形態のシーケンシャル書き込みモードにほぼ対応する。ただし、以下に述べる点が異なる。第3実施形態では、シーケンシャル書き込み制御コマンドのうち、書き込み開始コマンドおよび書き込み終了コマンド後は、書き込みコマンドが続くことを要求されない。例えば、書き込み開始コマンドおよび書き込み終了コマンドに、ディレクトリやファイル情報を作成するための処理が続いてもよい。この制限の緩和によって、マルチストリームモードは、第1実施形態のシーケンシャル書き込みモードと幾つかの点で異なる。本実施形態では、最初のストリームのためのデータの書き込みの際に発行される書き込み開始コマンドは、複数のストリームのデータの記録の準備コマンドとしての役割のみを担う。すなわち、このような書き込み開始コマンドは、ストリーム番号を特定しており、したがって、マルチストリームへの移行を指示する。マルチストリームモードでの動作については後に詳述する。
【0106】
ランダムアクセスモードにあるメモリカード2は、シングルストリームモードへの移行を指示する(SN=0)シーケンシャル書き込み制御コマンドを受け取ると、シングルストリームモードに移行する。シングルストリームモードにあるメモリカード2は、シーケンシャル書き込みでない制御を要求するシーケンスのコマンドを受け取ると、ランダムアクセスモードに移行する。そのようなシーケンスは、論理アドレスの連続しない書き込みの要求を含む。シングルストリームモードからランダム書き込みモードへの以降の際、未書き込み部分のデータは保存される。
【0107】
ランダムアクセスモードにあるメモリカード2は、マルチストリームモードへの移行を指示する(SN>0)シーケンシャル書き込み制御コマンドを受け取ると、マルチストリームモードに移行する。マルチストリームモードにあるメモリカード2は、最後のストリームについての書き込み終了コマンドを受け取るか、第1実施形態の説明において記載したような、ランダム書き込みを要求する意味の書き込みコマンドや、誤った(不正な)制御を要求するシーケンスのコマンドを受け取ると、ランダム書き込みモードに移行する。
【0108】
マルチストリームモードからランダム書き込みモードへの以降の際、新AU書き込みコマンドで指定されたAUは、必要なデータコピーのみ行なわれる。必要なデータコピーは、メモリカードの実装に依存する。例えば、AUが複数の部分に分割して管理される形態で場合、ある論理AU中の1つの分割部分の一部のデータが更新された際に、この分割部分の残りの部分のデータがコピーされる必要がある場合がある。
【0109】
メモリカード2がいずれのモードであるかの情報は、レジスタ47において保持されている。メモリカード2は、モードが遷移する度にレジスタ47中のモード情報を更新する。モード情報は、図40に示すように、カードステータスレジスタ内、またはメモリカードのメーカーが独自の用途で設けるメーカー独自レジスタ内に保持される。モード情報は、例えば、2ビットで表わされ、00、01、11が、それぞれ、ランダムモード、シングルストリームモード、マルチストリームモードを意味する。モード情報は、例えばステータス情報として扱われ、ホスト1はステータス情報を読み出す既存のコマンドを用いてモード情報をメモリカード2から読み出す。ホスト1が正常なシーケンスでコマンドを発行しないと、メモリカード2はランダムモードに移行する。そこで、モード情報を、ホスト1のデバッグ時のホスト1の制御に誤りが無いかの確認に使用できる。
【0110】
次に、マルチストリームモードでの動作について説明する。図41は、ホストからメモリカード2に送られるコマンドを時系列に沿って例示している。まず、ホスト1は、図13に示すように、最初のストリーム(ストリーム1)のためのデータを書き込むことを要求する。そのために、図41に示すように、ホスト1は、書き込み開始コマンドを発行する(ステップS21)。この書き込み開始コマンドは、ストリーム1を示す引数を有しており、したがってメモリカード2にマルチストリームモードへの移行を指示する。
【0111】
次に、図41に示すように、ホスト1はストリーム1のためのディレクトリ情報を作成する。そのために、ホスト1は、第1実施形態のステップS1を実行する。すなわち、ホスト1は、ストリーム1用のDIR作成コマンド、およびDIR書き込みコマンドならびにDIRデータを順次メモリカード2に送る。メモリカード2は、ストリーム1用DIRデータを、指示されたアドレスのAUまたはAUバッファに書き込む。
【0112】
次に、図41に示すように、ホスト1は、AU1にストリーム1のためのデータA1〜A6を書き込むことを要求する。そのために、ホスト1は、新AU書き込みコマンドを発行する(ステップS22)。新AU書き込みコマンドに対するメモリカード2の動作自体は、第1実施形態とで同じである。この新AU書き込みコマンドは、ストリーム1を指定している。したがって、この新AU書き込みコマンドを受け取ると、図14に示すように、ステップS7と同様に、メモリカード2はストリーム1のためのAUバッファ(AUバッファ1)を確保し、レジスタ書き込み制御部51(図6)は、ストリーム1用AUアドレスレジスタ52aに格納されているAUアドレスおよびそのフラグをクリアする。このように、第3実施形態では、各ストリームについての書き込み開始コマンドの発行後、このストリームのためのデータの最初の書き込みコマンドの発行直前に、このストリームについての新AU書き込みコマンドが発行される。
【0113】
次に、ホスト1は、データ書き込みコマンドおよびストリーム1のためのデータA1〜A6をメモリカード2に送る(ステップS23)。ステップS23は、第1実施形態のステップ2中の、書き込み開始コマンド以降の処理と同じである。すなわち、メモリカード2は、直前の新AU書き込みコマンドから、このデータ書き込みコマンドがストリーム1のデータのためのものであることを認識する。そして、レジスタ書き込み制御部46は書き込みアドレスのAUアドレスを保持する。続いて、メモリカード2は、図15に示すように、データA1〜A6をAUバッファ1の第1RU〜第6RUに書き込む。
【0114】
図16および図41に示すように、ホスト1は、ストリーム1の書き込みと平行して、AU2にストリーム2のためのデータB1を書き込むことを要求する。その準備として、ホスト1は、第1実施形態のステップS3を行なってストリーム2用のDIRの作成および書き込みを行なう。続いて、ホスト1は、図17に示すように、S4を行なってAUバッファ1にデータA7を書き込む。
【0115】
次に、図17および図41に示すように、ホスト1は、ストリーム2のためのデータの書き込みを継続する。そのために、ホスト1は、ステップS5と同じく、ストリーム2についての書き込み開始コマンドを発行する(ステップS24)。次に、ホスト1は、新たなストリーム(ストリーム2)のためのデータを書き込むための最初の書き込みコマンドの発行の前に、ストリーム2を特定する新AU書き込みコマンドを発行する(ステップS25)。この新AU書き込みコマンドを受け取ると、メモリカード2は、ストリーム2のためのAUバッファ(AUバッファ2)を確保し、レジスタ書き込み制御部51(図6)は、ストリーム2用AUアドレスレジスタ52bに格納されているAUアドレスおよびそのフラグをクリアする。
【0116】
次に、ホスト1は、データ書き込みコマンドおよびストリーム2のためのデータB1をメモリカード2に送る(ステップS26)。ステップS26は、第1実施形態のステップS5の後半の処理と同じである。すなわち、メモリカード2は、直前の新AU書き込みコマンドから、このデータ書き込みコマンドがストリーム2のデータのためのものであることを認識する。そして、レジスタ書き込み制御部46は書き込みアドレスのAUアドレスを保持する。続いて、メモリカード2は、データB1をAUバッファ2の第1RUに書き込む。その後の動作は、第1実施形態のステップS6〜S9の動作と同じである。
【0117】
ストリーム2のためのデータの書き込みを終了するために、ホスト1は、図41に示すようにストリーム2についての書き込み終了コマンドをメモリカード2に送る(ステップS31)。ステップS31では、第1実施形態のステップS10中の書き込み終了コマンド発行時の処理と同じ処理が行なわれる。すなわち、確定処理とアドレスレジスタ中のAUアドレスおよびそのフラグがクリアされる。
【0118】
また、書き込み終了コマンドに続いて、ホスト1は、書き込み終了したストリーム(ストリーム2)についてのCIデータの更新を要求している。上記のように、書き込み終了コマンドの直後も書き込みコマンドが来ることは必須ではない。そこで、ホスト1は、ストリーム2についてのCI書き込みコマンドの発行直前に、このストリームについてのCI更新コマンドをメモリカード2に発行する(ステップS32)。続いて、ホスト1は、CI書き込みコマンドとCIデータをメモリカード2に送る。メモリカード2は、この書き込みコマンドが、直前のCI更新コマンドによってCIデータ書き込みのためのものであることを認識し、CIデータをCI用バッファに書き込む。
【0119】
次に、ステップS10の最後の部分と同じく、AUバッファ3にストリーム1のためのデータA16が書き込まれる(ステップS33)。その後の動作は、第1実施形態のステップS11〜S15の動作と同じである。
【0120】
第3実施形態の、上記した以外の点については、全て第1実施形態と同じである。さらに、第3実施形態に第2実施形態を適用することもできる。すなわち、内部バッファが用いられることなくデータ書き込みが行なわれる。
【0121】
以上述べたように、第3実施形態では、第1実施形態と同様に、複数のストリームの1つを特定する情報を含んだシーケンシャル書き込みコマンドを認識可能に構成されており、これを用いて、ストリームごとに記録の開始や終了を特定できる。このため、第1実施形態と同じ利点を得られる。
【0122】
さらに、第3実施形態によれば、書き込み開始コマンドおよび書き込み終了コマンド後は、書き込みコマンドが続くことを要求されない。このため、CI更新やDIR更新等の管理データの書き込みおよび更新を任意のタイミングで実行できる。
【0123】
その他、本発明は、上記各実施形態に限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で、種々に変形することが可能である。さらに、上記実施形態には種々の段階の発明が含まれており、開示される複数の構成要件における適宜な組み合わせにより種々の発明が抽出され得る。例えば、上記各実施形態に示される全構成要件から幾つかの構成要件が削除されても、発明が解決しようとする課題の欄で述べた課題が解決でき、発明の効果の欄で述べられている効果が得られる場合には、この構成要件が削除された構成が発明として抽出され得る。
【符号の説明】
【0124】
1…ホスト装置、2…メモリカード、11…MPU、12…ソフトウェア、13…ファイルシステム、14…ストリームコントローラ、15…SDインターフェース、16…ROM、17…RAM、31…メモリ、32…コントローラ、41…SDインターフェース、42…MPU、43…ROM、44…RAM、45…NANDインターフェース、46…アドレス比較部、47…レジスタ。
【技術分野】
【0001】
本発明の実施形態は、ホスト装置およびメモリデバイスに関し、特に不揮発性半導体メモリを用いたメモリデバイスおよびそのようなメモリデバイスを受け付けるホスト装置に関する。
【背景技術】
【0002】
現在、音楽データや映像データの記録メディアとして、フラッシュメモリ等の不揮発性半導体メモリを用いたメモリデバイスが使われている。メモリデバイスは、多くの場合、メモリを制御するためのコントローラを内蔵している。コントローラは、このようなメモリデバイスを挿入されるホストのファイルシステムから依頼された、論理アドレスを割り当てられた書き込みデータを、フラッシュメモリの未書き込みの記憶領域に書き込む指示を出す。また、コントローラは、ファイルシステムによってデータに割り当てられた論理アドレスと、このデータを保存している、フラッシュメモリの記憶領域の位置との関係を管理しておく。メモリデバイスに使用されるフラッシュメモリの代表例としては、NAND型フラッシュメモリが挙げられる。
【0003】
ユーザがホスト装置を通じてメモリデバイスの性能を知ることが求められることがある。そのような性能には、メモリデバイスの記録速度、記録に要する時間、記録可能時間などが含まれる。これらの性能を予測するための技術が、特開2006−178923(特許文献1)に記載されている。
【0004】
メモリの容量増大や、メモリデバイスの性能向上や、ユーザが記録することを望むコンテンツの多様化によって、ユーザのメモリデバイスの使用形態が多様化している。例えば、2つのテレビ番組のような2つの動画を平行して録画することや、動画を撮影している最中に静止画を撮影することといった要望が出現している。ところが、フラッシュメモリにはデータの上書きができないため、データのコピーが必要になる場合がある。データのコピーは長時間を要するので、データのコピーを伴う書き込みは速度が遅い。このため、上記の要望に答えて複数のファイルデータ、特に複数のファイルデータを平行してリアルタイムでメモリデバイスに書き込むことができない。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2006-178923号公報
【特許文献2】特開2010-140268号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
複数のファイルデータを平行してリアルタイムで記録可能なホスト装置およびメモリデバイスを提供しようとするものである。
【課題を解決するための手段】
【0007】
本発明の一態様によるメモリデバイスは、複数の記憶領域を有する不揮発性の半導体メモリと、前記メモリに書き込まれる書き込みデータを受け取り、ランダム書き込みモードとシーケンシャル書き込みモードとを有し、開始コマンドを受け取ると前記シーケンシャル書き込みモードに移行し、シーケンシャル書き込みモードにおいて、書き込みコマンドの直前に受け取った制御コマンドを認識し、前記制御コマンドまたは論理アドレスにより対象とする書き込みデータが一部を構成するデータストリームを識別し、識別されたデータストリーム毎にメモリ内に用意されたバッファに前記書き込みデータを書き込み、各バッファにおいて前記書き込みデータのアドレスの順序に従って前記データストリームを順次書き込み、終了コマンドを受け取ると該当するストリームについての前記バッファに対して書き込み終了処理を行い、全てのデータストリームの書き込み終了処理が完了すると前記ランダム書き込みモードに移行する、コントローラと、を具備することを特徴とする。
【発明の効果】
【0008】
本発明によれば、複数のファイルデータを平行してリアルタイムで記録可能なホスト装置およびメモリデバイスを提供できる。
【図面の簡単な説明】
【0009】
【図1】第1実施形態に係るホスト装置およびメモリカードの機能ブロックを例示する図。
【図2】第1実施形態に係るフローコントローラを例示する図。
【図3】メモリカード内のレジスタの例を例示する図。
【図4】メモリカードのメモリ空間の構成を例示する図。
【図5】ホストが認識している記憶領域とメモリカードの記憶領域を例示する図。
【図6】メモリカード内のアドレス比較部を例示する図。
【図7】第1実施形態に係るコマンドの例を例示する図。
【図8】第1実施形態における、シーケンシャル書き込み制御コマンドとその後で授受される信号を例示する図。
【図9】ランダム書き込みモードにおけるメモリカードおよびホストの一状態を例示する図。
【図10】図9に続く状態を例示する図。
【図11】図10に続く状態を例示する図。
【図12】第1実施形態において、ホストからメモリカードに送られるコマンドを例示する図。
【図13】シーケンシャル書き込みモードにあるメモリカードおよびホストの一状態を例示する図。
【図14】図13に続く状態を例示する図。
【図15】図14に続く状態を例示する図。
【図16】図15に続く状態を例示する図。
【図17】図16に続く状態を例示する図。
【図18】図17に続く状態を例示する図。
【図19】図18に続く状態を例示する図。
【図20】図19に続く状態を例示する図。
【図21】図20に続く状態を例示する図。
【図22】図21に続く状態を例示する図。
【図23】図22に続く状態を例示する図。
【図24】図23に続く状態を例示する図。
【図25】図24に続く状態を例示する図。
【図26】図25に続く状態を例示する図。
【図27】図26に続く状態を例示する図。
【図28】図27に続く状態を例示する図。
【図29】4つのAUバッファが設けられている状態を例示する図。
【図30】データ読み出し時のメモリカードおよびホストの一状態を例示する図。
【図31】図30に続く状態を例示する図。
【図32】図31に続く状態を例示する図。
【図33】第2実施形態における、データ読み出し時のメモリカードおよびホストの一状態を例示する図。
【図34】図33に続く状態を例示する図。
【図35】第3実施形態に係るコマンドの例を例示する図。
【図36】第3実施形態における、シーケンシャル書き込み制御コマンドとその後で授受される信号を例示する図。
【図37】第3実施形態における、シーケンシャル書き込み制御コマンドとその後で授受される信号を例示する図。
【図38】第3実施形態における、シーケンシャル書き込み制御コマンドとその後で授受される信号を例示する図。
【図39】第3実施形態に係るメモリカードによるモードの状態遷移を示している。
【図40】第3実施形態に係るメモリカード内のレジスタの例を例示する図。
【図41】第3実施形態において、ホストからメモリカードに送られるコマンドを例示する図。
【発明を実施するための形態】
【0010】
以下に本発明の実施形態について図面を参照して説明する。なお、以下の説明において、略同一の機能及び構成を有する構成要素については、同一符号を付し、重複説明は必要な場合にのみ行う。参照符号の最後のアルファベットは、同様の要素を相互に識別するためのものであり、これらの要素を相互に識別する必要がない場合、アルファベットを省略する。
【0011】
以下に示す各実施形態は、この発明の技術的思想を具体化するための装置や方法を例示するものであって、この発明の技術的思想は、構成部品の材質、形状、構造、配置等を下記のものに特定するものでない。この発明の技術的思想は、特許請求の範囲において、種々の変更を加えることができる。
【0012】
各機能ブロックは、ハードウェア、コンピュータソフトウェアのいずれかまたは両者を組み合わせたものとして実現することができる。このため、各ブロックがこれらのいずれでもあることが明確となるように、概してそれらの機能の観点から以下に説明する。このような機能が、ハードウェアとして実行されるか、またはソフトウェアとして実行されるかは、具体的な実施態様またはシステム全体に課される設計制約に依存する。当業者は、具体的な実施態様ごとに、種々の方法でこれらの機能を実現し得るが、いずれの実現の手法も本発明の範疇に含まれる。
【0013】
なお、以下、本発明の実施形態に係るメモリデバイスの一例としてメモリカード、特にSDカードを用いて説明を行う。しかしながら、以下に説明するようなメモリと、このメモリを制御するコントローラを有するあらゆるメモリデバイスが本発明の範疇に含まれる。
【0014】
(第1実施形態)
[1] 構成
図1〜図6を参照して、本発明の第1実施形態に係るメモリカードの構成について説明する。図1は、第1実施形態に係るホスト装置1およびメモリカード2の主要な機能ブロックを例示している。ホスト装置(以下、ホストと称する)1は、MPU(micro processing unit)11、ソフトウェア12、ファイルシステム13、フローコントローラ14、SDインターフェース15、ROM(read only memory)16、RAM(random access memory)17等を含んでいる。
【0015】
MPU11は、ホスト1全体の動作を司る。ホスト1が電源供給を受けた際にROM16に格納されているファームウェア(制御プログラム(命令))がRAM17上に読み出される。そして、MPU11は、このファームウェア(命令)に従って所定の処理を実行する。ソフトウェア12およびファイルシステム13は、ROM16やRAM17上に位置し、MPU11に所定の処理を実行させるための命令を含んだプログラムを含んでいる。ソフトウェア12は、アプリケーション、オペレーティング・システム等を含んでおり、ユーザからメモリカード2へのデータの書き込み、メモリカード2からのデータの読み出し等を指示される。ソフトウェア12は、データの書き込みおよび読み出しをファイルシステム13に指示する。ファイルシステム13は、管理対象の記憶媒体に記録されているファイルデータを管理するための仕組みであり、記憶媒体の記憶領域内に管理情報を記録し、この管理情報を用いてファイルデータを管理する。
【0016】
SDインターフェース15は、ホスト1とメモリカード2との間のインターフェース処を取るのに必要なハードウェア、ソフトウェアからなる。ホスト1は、SDインターフェース15を介してメモリカード2と通信を行う。SDインターフェース15は、ホスト1とメモリカード2とが通信するのに必要な様々な取り決めを規定し、後述のメモリカード2のSDインターフェース41と相互に認識可能な各種のコマンドの組を備えている。また、SDインターフェース15は、SDインターフェース41と接続可能なハードウェア上の構成(ピンの配置、数等)も含む。
【0017】
フローコントローラ14は、ホスト1からメモリカード2に送出されるデータのフローを管理し、図2に例示するように、複数のバッファ21a〜21d、CI(continuation information)用バッファ22a〜22d、マルチプレクサ23、ストリーム制御部24を有する。ストリーム制御部24は、少なくともレート決定部25を含んでいる。バッファ21a〜21dの数は、ホスト1およびメモリカード2がサポートする、同時に書き込み可能なデータストリームの数と等しい。図1では、バッファの数は4であり、以下、この数4を例に用いて説明を行なう。各バッファ21a〜21dは、各ストリーム専用に設けられており、ストリーム1〜4のデータをそれぞれ一時的に保持する。CI用バッファ22は、CI(continuation information)を一時的に保持する。CIは、各ストリームについて、所定の大きさに分割された書き込みデータの連結の順序に関する情報である。CIはストリームごとに管理され、このため、CI用バッファ22は、ストリームごとに独立していてもよい。ホスト1は(プログラムに従ってMPU11は)、書き込みデータを分割するのと平行して、分割された書き込みデータについてのCIを、随時CI用バッファ22に保持する。
【0018】
ストリーム制御部24はフローコントローラ14を制御する。レート決定部25は、メモリカード1の性能情報(後述)および各ストリームに要求されている転送レートに基づいて、各ストリームのためのデータのメモリカード2への転送レートを決定する。ストリーム制御部24は、決定された各ストリーム用の転送レート、CI用バッファ22の空き容量等に基づいて、マルチプレクサ23を制御する。マルチプレクサ23は、ストリーム制御部24の制御に基づいて、選択されたバッファ21、22内の書き込みデータ(書き込みデータの一部)、その他の管理用のデータを時分割の原理に従って、SDインターフェース15に送る。
【0019】
メモリカード2は、NAND型フラッシュメモリ31、およびメモリ31を制御するためのコントローラ32を有する。メモリカード2は、ホスト1に接続されたとき、およびオフ状態のホスト1に挿入された状態でホスト1がオンされたときに電源供給を受けて初期化動作を行った後、ホスト1からのアクセスに応じた処理を行う。
【0020】
メモリ31は、データを不揮発に記憶し、複数のメモリセルからなるページと呼ばれる単位でデータの書き込みおよび読み出しを行い、例えばNAND型フラッシュメモリからなる。ページには、各ページに固有の物理アドレスが割り当てられている。また、メモリ31は、複数のページからなる物理ブロック(消去ブロック)と呼ばれる単位でデータの消去を行う。なお、物理ブロック単位で物理アドレスが割り当てられていることもある。
【0021】
コントローラ32は、メモリ31によるデータの記憶状態を管理する。記憶状態の管理とは、どの物理アドレスのページ(または物理ブロック)が、どの論理アドレスのデータを保持しているかの関係、およびどの物理アドレスのページ(または物理ブロック)が消去状態(何も書き込まれていない、または無効なデータを保持している状態)であるかを管理することを含んでいる。
【0022】
コントローラ32は、SDインターフェース41、MPU42、RAM44、ROM43、NANDインターフェース45、アドレス比較部46を含んでいる。
【0023】
SDインターフェース41は、メモリカード2とホスト1との間のインターフェースを取るのに必要なハードウェア、ソフトウェアからなり、SDインターフェース15と同様に、両者の通信を可能とする取り決めを規定し、各種のコマンドの組を備え、ハードウェア上の構成(ピンの配置、数等)も含む。メモリカード2(コントローラ32)は、SDインターフェース41を介してとホスト1と通信を行う。SDインターフェース41は、レジスタ47を含んでいる。
【0024】
MPU42は、メモリカード2全体の動作を司る。メモリカード2が電源供給を受けた際にROM16に格納されているファームウェア(制御プログラム(命令))がRAM17上に読み出される。そして、MPU42は、このファームウェア(命令)に従って所定の処理を実行する。MPU42は、制御プログラムに従って各種のテーブル(後述)をRAM44上で作成したり、ホスト1から受けたコマンドに従ってメモリ31に対する所定の処理を実行したりする。
【0025】
ROM43は、MPU42により制御される制御プログラムなどを格納する。RAM44は、MPU42の作業エリアとして使用され、制御プログラムや各種のテーブルを一時的に記憶する。このようなテーブルとして、ファイルシステム13によってデータに割り当てられた論理アドレスを有するデータを格納しているページの物理アドレスの変換テーブル(論物テーブル)が含まれる。NANDインターフェース45は、コントローラ32とメモリ31との間のインターフェース処理を行う。
【0026】
メモリ31内の記憶領域は、保存されるデータの種類に応じて、例えばシステムデータ領域、機密データ領域、保護データ領域、ユーザデータ領域等を含んでいる。システムデータ領域は、コントローラ32が、その動作に必要なデータを保存するためにメモリ31内で確保しておく領域である。機密データ領域は、暗号化に用いる鍵情報や認証時に使用する機密データを保存しており、ホスト1はアクセスできない。保護データ領域は、重要なデータ、セキュアなデータを格納する。ユーザデータ領域は、ホスト1が自由にアクセスおよび使用することが可能で、例えばAVコンテンツファイルや画像データ等のユーザデータを格納する。以下の説明で、メモリ31のメモリ空間を指す意味でメモリ31という記述を用いているとき、この記述はユーザデータ領域を指すものとする。コントローラ32は、ユーザデータ領域の一部を確保し、自身の動作に必要な制御データ(論物テーブル等)を保存する。
【0027】
レジスタ47は、図3に例示するように、カードステータスレジスタ、CID、RCA、DSR、CSD、SCR、OCRの各種レジスタを有する。これらのレジスタは、エラー情報、メモリカード2の個体番号、相対カードアドレス、メモリカード2のバス駆動力、メモリカード2の特性パラメータ値、データ配置、メモリカード2の動作範囲電圧に制限のある場合の動作電圧等を格納している。
【0028】
また、レジスタ47(例えばCSD)は、メモリカード2のクラス、データのコピーに要する時間、AUサイズ等を格納している。クラスは、あるクラスに属するメモリカードが保証する最低の書き込み速度によって規定されている。また、クラスによって最高の書き込み速度が定められている。したがって、ホスト1は、AUサイズを示すデータをレジスタ47から読み出して、この情報をメモリカード2の管理の際に利用でき、また、クラスを示すデータをレジスタ47から読み出して、メモリカード2の最大の書き込み性能を知得することができる。その他、性能パフォーマンス情報、例えば、特開2006−178923号公報に記載のパフォーマンス情報がCSDに格納されていてもよい。
【0029】
図4は、メモリ31のメモリ空間の構成を例示している。図4に示すように、メモリ31は、通常のメモリ領域48とページバッファ49とを有する。メモリ領域48は、複数の物理ブロックBLKを含んでいる。各物理ブロックBLKは、複数のページPGから構成される。各ページPGは、直列接続された複数のメモリセルトランジスタが格納するビットの列から構成される。
【0030】
各メモリセルは、いわゆる積層ゲート構造のMOSFET(metal oxide semiconductor field effect transistor)からなる。各セルトランジスタは、浮遊ゲート電極に蓄えられる電子の数に応じて閾値電圧が変化し、この閾値電圧の違いに応じた情報を記憶する。セルトランジスタが2つ以上の閾値電圧の異なる状態を取り得る、つまりメモリセルが多値(多ビット)を記憶できるように、メモリ31が構成されていてもよい。
【0031】
同じ行に属するセルトランジスタの制御ゲート電極は、同じワード線と接続される。同じ列に属し且つ直列接続されたセルトランジスタの両端には選択ゲートトランジスタが設けられる。一方の選択ゲートトランジスタは、ビット線と接続される。データの書き込みおよび読み出しは直列接続されたセルトランジスタの集合毎に行われ、このセルトランジスタの集合からなる記憶領域が1つのページに対応する。
【0032】
各ページPGは、例えば2112Bを有しており、各ブロックBLKは例えば128ページからなる。データの消去はブロックBLK単位で行われる。ページバッファ49は、メモリ31へのデータおよびメモリ31からのデータを一時的に保持する。
【0033】
図5に例示するとともに上記したように、メモリ31は、ページPG単位でデータを書き込んだり、読み出したりし、ブロックBLK単位でデータを消去する。一方、リアルタイム記録を行なうアプリケーションソフトウェア12は、RU(recording unit)単位でデータを管理する。RUは、1回のマルチブロック書き込みコマンドで書き込まれる単位に相当する。アプリケーションソフトウェア12は、固有の論理アドレスを割り当てられたデータを、書き込みコマンドに続いてメモリカード2に送る。コントローラ32は、書き込みデータを適当なページに書き込む。RUの大きさはページの容量の大きさの整数倍である。したがって、RUの大きさの書き込みデータをメモリカード2は、物理アドレスが連続する複数のページに書き込む。なお、各RUは、ファイルシステムが管理する固有の論理アドレスに対応するので、RUにデータを割り当てるということは、データに論理アドレスを割り当てるのと同義である。ファイルシステム13は、表を用いて、分割されたデータの各部分の接続関係を管理して、この接続関係を用いてデータの部分を繋げることによって元のデータを復元する。また、コントローラ32は、論理アドレスとこの論理アドレスのデータを格納しているページのアドレス(物理アドレス)との対応を変換テーブル(論物テーブル)で管理する。
【0034】
また、アプリケーションソフトウェア12は、所定の範囲に属する所定数の連続するRUの集合からなるAU(allocation unit)という概念を用いて管理を行なう。コントローラ32は、データの論理アドレスの高位ビットを見ることによってAUの区切りを認識できる。AUの大きさはブロック(物理ブロック)の容量の大きさの整数倍である。このように、RUは自然数個のページの大きさに一致し、AUは自然数個のブロックの大きさに一致する。このため、以下の説明では、メモリカード2でのデータの読み出し/書き込みの単位としてRU、AUを用いて説明を行なう。すなわち、メモリカード2に関する記述において用いられるRUという文言は、RUと同じ大きさの、連続する複数のページを意味し、メモリカード2に関する記述において用いられるAUという文言は、AUと同じ大きさの、連続する複数のブロックを意味する。具体的には、アプリケーションソフトウェア12がRUに割り当てたデータはメモリカード2のあるRUに書き込まれており、メモリカード2は、アプリケーションソフトウェア12によってデータに割り当てられたRU(論理アドレス)とこの書き込みデータを記憶しているメモリ31内のRUを表によって管理している。以下の説明において、アプリケーションソフトウェア12が認識するAU、およびメモリ31のAUを、それぞれ論理AU、および物理AUと称する場合がある。
【0035】
図6に例示するように、アドレス比較部46は、レジスタ書き込み制御部51、各ストリーム用のAUアドレスレジスタ52a〜52d、各ストリーム用のDIRアドレスレジスタ53a〜53d、各ストリーム用AUアドレスレジスタ用比較器54a〜54d、各ストリーム用DIRアドレスレジスタ用比較器55a〜55dを含んでいる。図6の例は、ホスト1およびメモリカード2がサポートするストリームの数が4つである例に従っている。
【0036】
レジスタ書き込み制御部は、SDインターフェース41から、ホスト1から供給されたコマンドを受け取る。AUアドレスレジスタ52a〜52d、DIRアドレスレジスタ53a〜53dは、アドレス比較器54a〜54d、55a〜55dは、SDインターフェース41から書き込みコマンド内の、書き込みデータが格納されるべきRUアドレス(書き込み(RU)アドレス)を受け取る。AUアドレスレジスタ52a〜52d、DIRアドレスレジスタ53a〜53dのうちレジスタ書き込み制御部51に指定されたものが、書き込みRUアドレスまたは書き込みRUアドレスが属するAUアドレスを保持する。上記のように、RUアドレスのAUアドレスは、このRUアドレスから特定されることが可能である。レジスタ52、53は、自信が格納しているアドレスが有効か否かを示すフラグを含んでいる。
【0037】
アドレス比較器54a〜54d、55a〜55dは、アドレスレジスタ52a〜52d、53a〜53dと、それぞれ対応し、それぞれ接続されている。アドレス比較器54、55は、対応するアドレスレジスタ52、53に保持されているアドレス(またはAUアドレス)と比較する。比較の結果、両者が一致する場合、アドレス比較器54a〜54d、55a〜55dは、有効な論理レベルを有するCA_S1、CA_S2、CA_S3、CA_S4、CD_S1、CD_S2、CD_S3、CD_S4をそれぞれ出力する。アドレス比較部46のより具体的な動作は後に詳述する。
【0038】
[2] 動作
図7〜図32を参照してホストおよびメモリカードの動作について説明する。
【0039】
SDインターフェース15、41は、図7に示すコマンドを認識可能に構成されている。図7は、本実施形態に係るシーケンシャル書き込み制御コマンドを概略的に示している。図7に示すように、シーケンシャル書き込み制御コマンド(CMD20)は、少なくともインデックス部index、動作指定部SCC、ストリーム番号部SN、CRC(cyclic redundancy check)部CRCを含んでいる。インデックス部は、コマンドがシーケンシャル書き込み制御コマンドであることを特定するための特定のビット列を有する。動作指定部SCCは、シーケンシャル書き込み制御コマンドが要求する動作の種類を特定するビット列を有する。動作指定部SCC内の引数に応じて、シーケンシャル書き込み制御コマンドは、書き込み(記録)開始、DIR(directory entry)作成、新AU書き込み、書き込み(記録)開始、CI更新のいずれかを命令するコマンドとして振舞う。ストリーム番号部SNは、シーケンシャル書き込み制御コマンドが担う命令がストリーム1〜4のいずれに対するのかを特定する引数を含んでいる。各命令の意味は後述する。CRC部は、CRC符号を有する。
【0040】
図8は、シーケンシャル書き込み制御コマンドとその後にホストとメモリカードとの間で授受される信号を例示している。図8に示すように、SDインターフェース15、41において、少なくともコマンドライン(CMD)およびデータライン(DAT[0])が定義されている。ホスト1がシーケンシャル書き込み制御コマンドをコマンドライン上で送ると、メモリカード2はコマンドライン上でレスポンスを送る。レスポンスは、シーケンシャル書き込み制御コマンドと同じ内容を有する。シーケンシャル書き込み制御コマンドが、このコマンドを認識しないメモリカードで受け取られた場合、このメモリカードはレスポンスを送出しない。メモリカードは、レスポンスの送出とともに、データライン上でビジー信号をホスト1に送る。ビジー状態がタイムアウトと判断されるまでに経過する時間tbusy(max)は、シーケンシャル書き込み制御コマンドの機能に応じて予め定められており、図7に例示されている。
【0041】
ビジーの解除後、ホスト1は、コマンドライン上で書き込みコマンド(CMD24、25)をメモリカード2に送る。ホスト1は、このように、シーケンシャル書き込み制御コマンドの後に、原則、書き込みコマンドを発行する。その理由については後述する。メモリカード2は、書き込みコマンドに対するレスポンスをコマンドライン上でホスト1に送る。この後、ホスト1は、データライン上で書き込みデータをメモリカード2に送る。
【0042】
次に、ホスト1によるメモリカード2へのデータの書き込みについて説明する。
【0043】
[2−1]ランダム書き込みモード
ホスト1は、通常、ランダム書き込みモードにある。まず、図9〜図11を参照して、ランダム書き込みモードについて説明する。図9〜図11は、ランダム書き込みモードにあるメモリカード2およびホスト1の一状態を例示している。
【0044】
まず、メモリカード2は、AU1の第1〜第5RU、第8RUに、データ1〜5、8をそれぞれ格納している。第6、7RUには、データは割り当てられていない。この状態で、ホスト1は、AU1の第3〜第5RUにデータ20〜データ22を書き込む(これは、上書きに相当する)ことを希望している。しかしながら、メモリ31はデータの上書きによって直接的にこの更新命令を遂行することができないので、以下の動作を行なう。まず、図10に示すように、メモリカード2(コントローラ32)は、メモリカード2の内部処理用のAUバッファを用意する。AUバッファは、メモリカード2に含まれるAUのうちで、ホスト1によって認識されるAUと未だ対応付けられていないものによって実現される。メモリカード2は、AUバッファ内の、AU1の更新されないRUと同じ第1、第2RUにデータ1、データ2をそれぞれコピーする。AUバッファは、ランダム書き込みモードでの使用専用に設けられていてもよいし、後述のようにシーケンシャル書き込みモード時に設けられる各ストリーム専用のAUバッファのいずれかで代用されてもよい。シーケンシャル書き込みモードで使用されるAUバッファは、シーケンシャル書き込みモード以外では用途を持たないからである。
【0045】
次に、図11に示すように、メモリカード2は、AUバッファ1内の、AU1の更新対象のRUと同じ第3〜第5RUにデータ20〜データ22を書き込む。次に、メモリカード2は、AU1のデータ8を、AUバッファ1内の、AU1の更新されないRUと同じ第8RUにコピーする。次に、メモリカード2は、AUバッファ1の確定処理を行なう。確定処理とは、AUバッファを正式なAUに設定すること、すなわち、AUバッファが、ファイルシステム13が認識しているAU内のデータを記憶するAUであることを反映するように論物テーブルを書き換えることである。同時に、確定処理前の論理AU1のデータを格納していた物理AUは、無効のデータを有するものとして取り扱われるようになる。旧物理AUは、その中のデータを所定のタイミングで消去され、次いで新たな消去済みAUとなる。
【0046】
更新要求でない場合も、ここまで説明した更新要求に対する処理と同じである。すなわち、図9において、第3〜第5RUが消去済みであり、それ以外のRUは図9と同じである例を説明する。この例では、AUバッファの第1、第2RUにデータ1、データ2がコピーされ、第3〜第5RUにデータ20〜データ22が書き込まれ、第8RUにデータ8がコピーされ、確定処理が行なわれる。
【0047】
このように、ランダム書き込みモードでは、更新または書き込み要求に対して、更新または書き込み対象のRU以外のRU内のデータは、AUバッファ内へのコピーを介して、AU内にコピーされる。
【0048】
[2−2]シーケンシャル書き込みモード
メモリカード2は、シーケンシャル書き込みモードを有する。シーケンシャル書き込みモードでは、メモリカード2はランダム書き込みモードと異なる方式でデータを書き込む。シーケンシャル書き込みモードでは、メモリカード2は、常に消去済みのAUにデータを書き込み、データの論理アドレスの順序とデータを格納するRUのアドレスの順序とが一致するように、すなわちシーケンシャルに書き込みを行なう。
【0049】
メモリカード2は、動作指定部SCC内において書き込み開始を指示する引数を有するシーケンシャル書き込み制御コマンドを受け取ると、シーケンシャル書き込みモードに移行する。メモリカード2は、シーケンシャル書き込みモードにおいて、複数のストリームをメモリカードに書き込むことが可能に構成されている。シーケンシャル書き込みモードについて、図12〜図28を参照して説明する。図12は、ホストからメモリカード2に送られるコマンドを時系列に沿って例示している。
【0050】
以下の説明において、シーケンシャル書き込み制御コマンドの動作指定部SCCにおいて、ある機能を指定されているシーケンシャル書き込み制御コマンドを、この機能を持つコマンドとして引用する。すなわち、書き込み開始、DIR作成、新AU書き込み、書き込み終了、CI更新を命令するシーケンシャル書き込み制御コマンドを、それぞれ、書き込み開始コマンド、DIR作成コマンド、新AU書き込みコマンド、書き込み終了コマンド、CI更新コマンドと称する。
【0051】
図13に示すように、ホスト1は、シーケンシャル書き込みモードにおいて、AU1にストリーム1のためのデータA1〜A6を書き込むことを要求する。そのために、ホスト1は、ストリーム1の書き込み開始準備を行なう(ステップS1)。具体的には、ホスト1は、まず、DIR作成コマンド(Create DIR)を発行する。このDIR作成コマンドは、ストリーム番号は、1つ目のストリームの書き込みである故に、ストリーム1を示す引数を有している(SN=1)。このコマンドを受けて、メモリカード2は、ストリーム1用のDIRのための論理アドレスをメモリカード2内に確保する。
【0052】
次に、ホスト1は、メモリカード2に、書き込みコマンドと書き込みデータ(両者は一体でコマンド「Write DIR」として図示されている)を送信する。この書き込みコマンドは、直前のDIR作成コマンドによってDIRを書き込むための書き込みコマンドであると特定され、したがってDIR書き込みコマンドと称する。DIRデータは、DIR作成コマンドに応答して用意された、メモリカード2の専用のAUバッファに書き込まれ、その後にこのAUバッファに対して確定処理(終了処理)が行われる。
【0053】
ホスト1は、書き込みコマンドで指示されるデータがどのストリーム用のものかについて把握している。一方で、メモリカード2は、書き込みコマンドからストリーム番号を把握できない。書き込みコマンドは、ストリーム番号を特定する引数を有していないからである。このため、新たなストリームについての書き込みコマンド直前にシーケンシャル書き込み制御コマンドが発行され、このシーケンシャル書き込み制御コマンドにおいて、当該書き込みコマンドが対象としているストリーム番号が明示される。メモリカード2は、このストリーム番号から、書き込みコマンドにより書き込まれるデータがどのストリーム番号のためのものであるかを知得できる。この処理は、具体的には、アドレス比較部46(図6)を用いて、以下の方法に従って実行される。
【0054】
レジスタ書き込み制御部51は、シーケンシャル書き込み制御コマンドを受け取ると、その直後の書き込みコマンドが対象とするストリームを、シーケンシャル書き込みコマンドから認識できる。さらに、レジスタ書き込み制御部51は、シーケンシャル書き込み制御コマンド内の動作指定部内の引数から、当該シーケンシャル書き込みコマンドが要求する動作を認識できる。書き込みコマンドが、DIR更新コマンドまたは書き込み開始コマンド(の意味のシーケンシャル書き込み制御コマンド)の直後である場合、当該書き込みコマンドは、DIR書き込みコマンドまたはストリームのためのデータを書き込むためのコマンド(データ書き込みコマンド)である。レジスタ書き込み制御部51は、DIR書き込みコマンドを受け取ると、その中の書き込みアドレスの論理アドレスを、対応するストリームに基づいて、DIRアドレスレジスタ52a〜52dのいずれかに格納し、そのフラグを「有効」に設定する。同様に、レジスタ書き込み制御部51は、データ書き込みコマンドを受け取ると、その中の書き込みアドレスのAUアドレスを、対応するストリームに基づいて、AUアドレスレジスタ53a〜53dのいずれかに格納し、そのフラグを「有効」にする。そして、シーケンシャル書き込みモードにおいて新たな書き込みコマンドを受け取る度に、アドレス比較部51は、当該書き込みコマンド内の書き込みアドレスまたはそのAUアドレスとレジスタ52、53に格納されているアドレスと、を比較する。この比較によって、メモリカード2は、書き込みコマンドが対象とするストリームを特定できる。この比較の詳細は、図12の説明において比較が発生する時点で説明する。
【0055】
図12に戻って説明を続ける。ステップS2は、ストリーム1のためのデータを書き込むためのものである。まず、ホスト1は、ストリーム1を指定する引数を有する書き込み開始コマンド(Start Rec)をメモリカード2に送る。書き込み開始コマンドを受け取ると、メモリカード2はシーケンシャル書き込みモードに移行する。シーケンシャル書き込みモードでは、メモリカード2は、各ストリームに専用に用意されている未書き込みのAUバッファを用意し、用意されたAUバッファ内の低位アドレスのRUから高位アドレスのRUに向かって、書き込みデータを順次書き込む。したがって、メモリカード2は、書き込み開始コマンドを受け取ると、図14に示すように、ストリーム1用のAUバッファ1をメモリカード2内に用意する。ここで用意されるAUバッファ1が直前のランダム書き込みモードで流用されていた等の理由により、AUバッファ1内にデータが残っている場合があり得る。この場合、メモリカード2は、AUバッファ1内で有効なデータのコピーを含めて、AUバッファ1に対する確定処理を行なう。そして、メモリカード2は、確定処理前の旧AUバッファ1を無効にした後で、新たな消去済みのAUを新たなAUバッファ1として、以降の処理で用いる。このように確定処理を経てAUバッファを用意する場合、ビジー時間は、AUバッファが2つのモードの両方で用いられない場合やストリーム2〜4のためのデータの記録の開始準備よりも長い。
【0056】
続いて、ホスト1は、書き込みコマンド(Write RU)を発行する。この書き込みコマンドは、書き込み開始コマンド直後に位置するので、実データ(ストリームデータ)を書き込むためのデータ書き込みコマンドである。メモリカード2は、このデータ書き込みコマンドがストリーム1を対象としていることを直前の書き込み開始コマンドから認識している。このため、レジスタ書き込み制御部51(図6)は、当該データ書き込みコマンド内のアドレスのAUアドレスを、ストリーム1用AUアドレスレジスタ52aに格納するとともに、フラグを「有効」にする。アドレス比較器54、55は、書き込みアドレスのAUアドレスを、対応するアドレスレジスタ52、53内で有効なアドレスと比較する。通常の動作では、全てのストリームに対して、DIR書き込みアドレスが属するAUアドレスとデータ書き込みアドレスのAUアドレスとが一致することはない。DIRとデータが同じAUであると言うことは、シーケンシャル書き込みができないことを意味し、ホスト1が異常な処理を要求しているので、メモリカード2は、処理を停止する。
【0057】
データ書き込みコマンドに続いて、ホスト1は、ストリーム1についての書き込みデータ(図では、書き込みコマンドと一体で表示されている)を順次メモリカードに送る。同じストリームについての書き込みが中断されることなく継続している場合、書き込みコマンドは、一連の書き込みデータの最初に発行されるのみでもよい。図15に示すように、メモリカード2は、書き込みデータを受け取ると、AUバッファ1の未書き込みの最低位アドレスのRUから高位アドレスのRUに向かって順次書き込む。
【0058】
図12および図16に示すように、ホスト1は、ストリーム1の書き込みと平行して、AU2にストリーム2のためのデータB1を書き込むことを要求する。そのために、ホスト1は、ストリーム2の書き込みの開始準備を行なう(ステップS3)。具体的には、ホスト1は、ストリーム2用のDIR作成コマンドを発行する。このコマンドを受け取ると、メモリカード2は、その中の書き込み(論理)アドレスをストリーム2用DIRアドレスレジスタ53bに格納するとともに、そのフラグを「有効」に設定する。また、メモリカード2は、DIR書き込みコマンドを受け取ると、ストリーム2用のDIRのためのAUをメモリカード2内に確保する。
【0059】
ストリーム制御部24は、メモリカード2から読み出されたクラス情報を用いて、ソフトウェア(アプリケーション)12が要求しているビットレートでストリーム2を、ストリーム1と平行して書き込み可能かを判断する。現在書き込み中のストリーム1に加えてストリーム2の書き込みを受け付けられない場合、ホスト1は、例えば、ストリーム2の書き込みを行なわないとともに、その旨をユーザに知らせる。このように、新たなストリームの書き込み要求を受けると、ホスト1は、受付可能なストリームの数を決定する。ただし、個数の上限は、別の制約によって定められている。すなわち、受付可能なストリームの数は、ホスト1およびメモリカード2がサポートしている、バッファ21、22、レジスタ52、53の数によって決定される。以下の説明では、ストリーム2の書き込み要求が受け入れ可能であると仮定する。
【0060】
DIR作成コマンドに続いて、ホスト1は、ストリーム2についてのDIR書き込みコマンドおよびDIRデータをメモリカード2に送る。全てのアドレス比較器54、55は、ストリーム2についてのDIR書き込みコマンド内の論理アドレスを、アドレスレジスタ52、53内の有効なアドレスと比較する。しかし、正常動作であれば、一致は生じないはずである。また、メモリカード2は、ストリーム2用DIRデータを、指示されたアドレスのAUまたはAUバッファに書き込む。
【0061】
次に、図12および図16に示すように、ホスト1は、AU1にストリーム1のためのデータA7を書き込むことを要求する(ステップS4)。そのために、ホスト1は、ストリーム1についてのデータ書き込みコマンドおよびデータA7をメモリカード2に送る。上記のように、書き込みコマンドは引数にアドレス情報しか持たないため、シーケンシャル書き込み制御コマンドが先行しない書き込みコマンドがどのストリーム番号のためのものであるかを示す情報を有さない。そこで、メモリカード2は、アドレス比較部46を用いて、このような書き込みコマンドが対応するストリーム番号を割り出す。すなわち、各アドレス比較器54、55は、書き込みアドレスと、対応するレジスタ52、53内のアドレスと、を比較する。比較の結果、書き込みアドレスと一致したアドレスを格納するアドレス比較器54a〜54dのいずれか(ここでは、比較器54a)から、信号CA_S1〜CA_S4のいずれか(ここでは、信号CA_S1)がMPU42に出力される。この信号により、書き込みアドレス(またはそのAUアドレス)と一致するアドレスを保持するアドレスレジスタ52に対応するストリーム(ここでは、ストリーム1)が、書き込みコマンドの対象のストリームであることを、メモリカード2は知得する。これに従い、コントローラ32は、書き込みデータA7を、ストリーム1用のAUバッファ1内の未書き込みの最低位アドレスを有する第7RUに書き込む。
【0062】
次に、図12および図17に示すように、ホスト1は、ストリーム2のためのデータの書き込みを継続する(ステップS5)。そのために、ホスト1は、ストリーム2についての書き込み開始コマンドを発行する(SN=2)。メモリカード2は、この書き込み開始コマンドを受け取ると、ストリーム2用のAUバッファ2をメモリカード2内に用意する。このように、ホスト1およびメモリカード2がサポートする、平行して書き込み可能なストリームの数と同じ数の各ストリーム用のAUバッファが用意される。続いて、ホスト1は、データ書き込みコマンドおよびストリーム2のためのデータB1をメモリカード2に送る。このデータ書き込みコマンドは、ストリーム番号を明示するデータ書き込み開始コマンドに後続する。このため、メモリカード2は、このデータ書き込みコマンドがストリーム2のためのデータを書き込むためのものであることを認識し、レジスタ書き込み制御部46は書き込みアドレスのAUアドレスを、ストリーム2用AUアドレスレジスタ52b(図6)内に格納する。なお、アドレス比較部46においてAUアドレスの一致は生じない。続いて、メモリカード2は、データB1をAUバッファ2内の未書き込みの最低位アドレスを有する第1RUに書き込む。
【0063】
データB1の書き込みの開始によって、ストリーム1のためのデータの書き込みとストリーム2のためのデータの書き込みとが平行して発生することになる。このため、ホスト1は、ストリーム1のためのデータとストリーム2のためのデータとを時分割の原理に従ってメモリカード2に送る。この時分割の際の、ストリーム1のためのデータのビットレートおよびストリーム2のためのデータのビットレートは、フローコントローラ14(図2)内のストリーム制御部24が決定する。この決定に基づいた制御に従ってマルチプレクサ23が、データを順次メモリカード2に送る。ストリーム制御部24は、各ビットレートの決定を、レート決定部25に従って実行する。レート決定部25は、例えばメモリカード2の初期化時にメモリカード2からクラス情報、AUサイズ等についての情報を読み出し、これを記憶しておく。そして、レート決定部25は、アプリケーション(アプリケーションソフトウェア12)に応じて各ストリームに要求されているビットレートとクラス情報(最低書き込み速度)とを用いて、各ストリームのためのデータをホスト1からメモリカード2に送る際のビットレートを決定する。すなわち、アプリケーションから要求されている各ストリームについてのビットレートを実現できるように、別々のストリームのためのデータの量および送出する順序を決定する。なお、ストリーム制御部24は、このように条件判断が必要なため、通常はソフトウェアによって構成されるが、ハードウェアによる構成も可能である。
【0064】
次に、図12および図18に示すように、ホスト1は、AU1にストリーム1のためのデータA8を書き込むことを要求する(ステップS6)。そのために、ホスト1は、データ書き込みコマンドとデータA8をメモリカード2に送る。図6を用いて説明したように、アドレス比較部46は書き込みアドレスのAUアドレスを比較することによって、データA8がストリーム1のためのものであることを認識する。このため、メモリカード2は、図18に示すように、データA8をAUバッファ1内の未書き込みの最低位アドレスを有する第8RUに書き込む。
【0065】
データA8の書き込みによって、AU1内の全RUにデータが書き込まれたことになる。そこで、ホスト1は、ストリーム1のためのデータの書き込みを継続するために、ストリーム1のための新たなAUバッファを作成することを要求する(ステップS7)。そのために、図12および図19に示すように、ホスト1は、ストリーム1についての新AU書き込みコマンド(New AU)をメモリカード2に送る。この新AU書き込みコマンドを受け取ると、メモリカード2は、まず、ストリーム1のための現在のAUバッファ(AUバッファ1)に対して確定処理を行なう。この結果、AUバッファ1が論理AU1に対応することを反映するように論物テーブルが更新される。次いで、メモリカード2は、ストリーム1のための新たなAUバッファ(AUバッファ3)を確保する。さらに、レジスタ書き込み制御部51(図6)は、ストリーム1用AUアドレスレジスタ52aに格納されているAUアドレスおよびそのフラグをクリアする。
【0066】
続いて、ホスト1は、AU3にストリーム1のためのデータA9を書き込むことを要求する。そのために、ホスト1は、データ書き込みコマンドとデータA9をメモリカード2に送る。メモリカード2は、このデータ書き込みコマンドがストリーム1のためのデータを書き込むためのものであることを直前の新AU作成コマンドから認識する。このため、レジスタ書き込み制御部51(図6)は、書き込みアドレスのAUアドレスを、ストリーム1用AUアドレスレジスタ52aに格納するとともに、そのフラグを「有効」に設定する。アドレス比較器54、55は、比較を行なうが、一致は生じない。続いて、メモリカード2は、図20に示すように、データA9をAUバッファ3の未書き込みの最低位アドレスを有する第1RUに書き込む。
【0067】
ホスト1は、引き続き、ストリーム1のためのデータA10〜A15をAU3に書き込み、ストリーム2のためのデータB2〜B5をAU2に書き込むことを要求する。そのために、レート決定部25は、例えばまずストリーム2のためのデータB2〜B5をメモリカード2に送ることを決定する。この決定に基づいて、図12および図21に示すように、ホスト1は、データ書き込みコマンドおよびデータB2〜B5をメモリカード2に送る(ステップS8)。図6を用いて説明したように、アドレス比較部46は、書き込みアドレスのAUアドレスを比較することによって、データB2〜B5がストリーム2のためのものであることを認識する。このため、メモリカード2は、データB2〜B5を、AUバッファ2内の未書き込みの最低位アドレス第2RU、第3RU〜第5RUにそれぞれ書き込む。
【0068】
次に、図12および図22に示すように、ホスト1は、データ書き込みコマンドとデータA10〜A15をメモリカード2に送る。図6を用いて説明したように、アドレス比較部46は、書き込みアドレスのAUアドレスを比較することによって、データA10〜A15がストリーム1のためのものであることを認識する。このため、メモリカード2は、データA10〜A15を、AUバッファ3内の未書き込みの最低位アドレスを有する第2RU、第3RU〜第7RUにそれぞれ書き込む。このように、データは各ストリーム専用のAUバッファへと振り分けられ、各ストリームについてシーケンシャルなデータの書き込みが維持される。このため、データの書き込みおよび読み出しに要する時間は、ランダム書き込みの場合よりも短い。
【0069】
上記のように、CIはCI用バッファ22に保持されている。しかし、CIは、バッファのサイズとストリームの長さに応じて、CI用バッファ内に収まりきらないほどに大きくなることがある。このような場合、フローコントローラ14のCI用バッファが一杯になったことを検出して、これを受けて、ホスト1は、現時点でのCIの少なくとも一部をメモリカード2内のCI用に確保されたバッファに書き込むことを要求する(ステップS9)。そのために、ホスト1は、特定のストリーム(ここでは、ストリーム1)についてのCI更新コマンドをメモリカード2に送る。続いて、ホスト1は、書き込みコマンドとCIデータをメモリカード2に送る。メモリカード2は、この書き込みコマンドが、直前のCI更新コマンドによってCIデータ書き込みのためのもの(CI書き込みコマンド)であることを認識する。一方で、アドレス比較部46は、通例通り書き込みアドレス(またはそのAUアドレス)をレジスト52、53内のアドレスと比較するが、異常時以外、一致は生じないはずである。一致が生じた場合、ホスト1が誤った処理を要求しているので、メモリカード2は、処理を停止するとともにホスト1にエラー信号を送る。また、CI書き込みコマンド内のアドレスのAUアドレスは、アドレスレジスタに格納されない。
【0070】
CIデータを受け取ると、メモリカード2はCIデータをCI用バッファに書き込む。シーケンシャル書き込みモード中のCIデータの書き込みは、時分割の原理に従って行なわれるので特定の大きさ以下の大きさでなければならない。このため、CIデータの書き込みが完了しない場合であっても、CIデータの書き込みは途中で中断される。残りのCIデータは、別のタイミングの次なるCI更新コマンドで実行されるか、シーケンシャル書き込みモードの終了後に書き込まれる。
【0071】
次に、図12および図23に示すように、ホスト1は、AU2内にストリーム2のためのデータB6を書き込むことを要求する。そのために、ホスト1は、データ書き込みコマンドとデータB6をメモリカード2に送る。図6を用いて説明したように、比較アドレス部46は、書き込みアドレスのAUアドレスを比較することによって、データB6がストリーム2のためのものであることを認識する。このため、メモリカード2は、データB6を、AUバッファ2内の未書き込みの最低位アドレスを有する第6RUに書き込む。
【0072】
例えばデータB6がストリーム2のための最後のデータであり、このため、ホスト1は、図12および図24に示すように、ストリーム2についての書き込み終了コマンド(End Rec)をメモリカード2に送る(ステップS10)。メモリカード2は、新AU書き込みコマンドの場合と同じく書き込み終了コマンドを受け取った場合も、対象のストリームについて現在有効なAUバッファ(AUバッファ2)に対する確定処理を行なう。この結果、AUバッファ2が論理AU2に対応することを反映するように論物テーブルが更新される。確定処理の際、論理AU2内の最後に用いられたRUより高位のRU(ここでの例では、第7、第8RU)にデータが割り当てられていたとしても、このデータは、AUバッファ(AUバッファ2)にはコピーされない。また、書き込み終了コマンドによって、レジスタ書き込み制御部51は、対応するストリーム(ここでは、ストリーム2)用アドレスレジスタ(ここでは、アドレスレジスタ52b)に格納されているAUアドレスおよびそのフラグをクリアする。
【0073】
また、書き込み終了コマンドに続いて、ホスト1は、この書き込み終了コマンドの対象のストリーム(ストリーム2)についてのCI更新コマンドおよびCIデータをメモリカード2に送る。ただし、シーケンシャル書き込みモード中のCIデータの書き込みは、上記のように、時分割の枠組みの中で行なわれるため、完了しない場合がある。
【0074】
次に、ホスト1は、AU3にストリーム1のためのデータA16を書き込むことを要求する。そのために、ホスト1は、データ書き込みコマンドとデータA16をメモリカード2に送る。図6を用いて説明したように、アドレス比較部46は、書き込みアドレスのAUアドレスを比較することによって、データA16がストリーム1のためのものであることを認識する。このため、メモリカード2は、データA16をAUバッファ3内の未書き込みの最低位アドレスを有する第8RUに書き込む。
【0075】
AUバッファ3内の全RUにデータが書き込まれたので、ホスト1は、ストリーム1のための新たなAUバッファを作成することを要求する(ステップS11)。そのために、図12および図25に示すように、ホスト1は、ストリーム1についての新AU書き込みコマンドをメモリカード2に送る。このコマンドを受け取ると、メモリカード2は、ストリーム1のための現在のAUバッファ(AUバッファ3)に対して確定処理を行ない、ストリーム1のための新たなAUバッファ(AUバッファ4)を用意する。さらに、レジスタ書き込み制御部51(図6)は、ストリーム1用AUアドレスレジスタに格納されているアドレスおよびその有効フラグをクリアする。
【0076】
次に、図12および図26に示すように、ホスト1は、AU4にストリーム1のためのデータA17〜A19を書き込むことを要求する。そのために、ホスト1は、データ書き込みコマンドとデータA17〜A19をメモリカード2に送る。このデータ書き込みコマンドの直前の新AU作成コマンドによって、または比較アドレス部46での比較によって、メモリカード2は、データA17〜A19がストリーム1のためのものであることを認識する。このため、メモリカード2は、データA17〜A19を、AUバッファ4内の未書き込みの最低位アドレスを有する第1RU、第2RU、第3RUにそれぞれ書き込む。
【0077】
次に、図12に示すように、ホスト1は、FATデータの更新を要求する(ステップS12)。そのために、ホスト1は、FAT更新のための書き込みコマンド(Update FAT)およびFATデータをメモリカード2に送る(ステップS12)。FAT更新は、当業者によって知られているように、データの書き込みの最中に特定のタイミングで行なわれ、FAT更新の時点までに書き込まれたデータについてのFAT情報を更新するために行なわれる。メモリカード2は、シーケンシャル書き込みモードの最中のFAT更新に対応しており、FATの更新に影響されることなくシーケンシャル書き込みを維持できるように構成されている。メモリカード2は、FATデータを、例えばFATを含む管理データ用のAUバッファ内で低位アドレスのRUから高位アドレスのRUに順次書き込む。なお、FAT書き込みコマンド内のアドレスも、アドレスレジスタ52、53に格納されない。したがって、通常、このような書き込みコマンド内のアドレスは、アドレスレジスタ52、53内のいずれのアドレスとも一致しないはずである。一致が生じた場合、メモリカード2はホスト1にエラー信号を送る。
【0078】
次に、図12に示すように、ホスト1は、ストリーム2についてのCIの全体の少なくとも一部をメモリカード2内のCI用AUバッファに書き込むことを要求する(ステップS13)。そのために、ホスト1は、ストリーム2についてのCI更新コマンド、CI書き込みコマンド、CIデータをメモリカード2に送る。
【0079】
次に、図12および図27に示すように、ホスト1は、AU4にストリーム1のためのデータA20〜A22を書き込むことを要求する。そのために、ホスト1は、データ書き込みコマンドとデータA20〜A22をメモリカード2に送る。図6を用いて説明したように、アドレス比較部46は、書き込みアドレスのAUアドレスを比較することによって、データA20〜A22がストリーム1のためのものであることを認識する。このため、メモリカード2は、データA20〜A22を、AUバッファ4内の未書き込みの最低位アドレスを有する第4RU、第5RU、第6RUにそれぞれ書き込む。
【0080】
例えばデータA22がストリーム1のための最後のデータであり、このため、ホスト1は、図12および図28に示すように、ストリーム1についての書き込み終了コマンドをメモリカード2に送る(ステップS14)。このコマンドによって、メモリカード2は、ストリーム1のための現在のAUバッファ4に対する確定処理を行なう。この結果、AUバッファ4が論理AU4に対応することを反映するように論物テーブルが更新される。
【0081】
最後のストリームについての書き込み終了コマンドを受け取ると、メモリカード2は、ランダム書き込みモードに移行する。ランダム書き込みモードに移行したことに続いて、図12に示すように、ホスト1は、ストリーム1についてのCI書き込みコマンドおよびCIデータをメモリカード2に送る。メモリカード2がランダム書き込みモードにあるので、シーケンシャル書き込みモード時の書き込み時間に対する制約はメモリカード2に課されない。このため、メモリカード2は、当該CI書き込みコマンドおよびCIデータを受け取ると、ストリーム1についてのCIの書き込みを完了させる。この段階でのCI書き込みコマンドは、ランダム書き込みモード内で行なわれるので、シーケンシャル書き込み制御コマンドに後続する必要はない。
【0082】
なお、唯一のストリームのためのデータの書き込み完了後にメモリカード2をランダム書き込みモードに移行させるためには、上記の書き込み終了コマンドの発行は、必須ではない。すなわち、メモリカード2は、シーケンシャル書き込み制御コマンド無しに例えばCI書き込みコマンド等のランダム書き込みを要求する書き込みコマンドを受け取ると、シーケンシャル書き込みコマンドの終了を認識する。そして、書き込み終了コマンド受領時と同じく、AUバッファに対して確定処理を行なう。ただし、この場合、書き込まれなかったRU内のデータは、これが維持されるようにコピーされるという違いがある。このように書き込み終了コマンド無しでランダム書き込みモードが指定された場合、記録が完了していないストリームについてのアドレスレジスタ52内のデータおよびそのフラグがクリアされない制御が考えられる。この場合、メモリカード2は、このアドレス52内のデータおよびフラグを、対応するストリームに対する書き込み終了コマンドを受け取った際にクリアする。
【0083】
次に、図12に示すように、ホスト1は、ストリーム2についてのCI書き込みコマンドおよびCIデータをメモリカード2に送る。これらのコマンドおよびデータを受け取ると、メモリカード2は、ストリーム2についてのCIの書き込みを完了させる。
【0084】
図12〜図28を用いた説明は、2つのストリームを記録する例を扱っている。しかしながら、3または4つのストリームの記録も、2つのストリームと同様の原理によって実現される。4つのストリームが平行して書き込まれる場合、図29に示すように、4つのAUバッファが設けられる。
【0085】
次に、ここまでの説明で触れなかった状況下でのホスト1およびメモリカード2の動作について説明する。
【0086】
メモリカード2は、書き込み中の2つ以上のストリームが存在している間にランダム書き込みに該当する書き込みアドレスを指定する書き込みコマンドを受け取ると、ホスト1に対してエラー信号を送るようにすることもできる。複数のストリームの記録の終了は終了コマンドにより終了されるべきなので、このような要求はホスト1の誤った制御に起因すると考えられる。シーケンシャル書き込みモードにあるメモリカード2に対してホスト1が誤った(不正な)制御を行なうと、メモリカード2は、ランダム書き込みモードに移行する。誤った制御として、シーケンシャル書き込みを要求することや、RUの整数倍の書き込みでない書き込みを要求することが該当する。なお、読み出しコマンドは、書き込みシーケンスに影響しない。
【0087】
書き込みアドレスがルートディレクトリ領域を指している場合、この書き込みアドレスはアドレスレジスタ52、53のいずれにも格納されない。このため、アドレス比較部46での比較の結果、アドレス比較器54、55が一致の旨の信号を出力することは通常ない。したがって、ルートディレクトリ領域への書き込みデータは、ストリーム記録用のAUバッファには書き込まれず、別の(例えばルートディレクトリ専用の)バッファに書き込まれる。
【0088】
次に、読み出しについて図30〜図32を参照して説明する。図30〜図32は、データ読み出しの際のメモリカード2およびホスト1の一状態を順に例示している。
【0089】
確定処理後のAUからの読み出しについては、確定処理後のAUは、ユーザ(ホスト1)が任意にアクセスできるので、通常のメモリカードと同じである。一方、あるストリームのためのデータがメモリカード2に記録されている最中に、このストリームの記録済みのデータを読み出すことが要求される場合がある。このような場合であっても確定処理前のAUからもデータが読み出されることが可能に、メモリカード2は構成されている。
【0090】
図30に示すように、論理アドレス群(論理AU)AU1に属する各論理アドレスを割り当てられたデータ1〜データ8が、メモリ31中のAU(物理AU)1中の第1RU〜第8RUにそれぞれ格納されている。この状態で、論理AU1中の第1RU〜第5RUに相当する各論理アドレスを割り当てられたストリームデータ11〜データ15の書き込みがホスト1からメモリカード2に要求されたとする。この結果、図31のように、このストリーム(例えばストリーム1)用のAUバッファ1のRU1から順にデータ11〜データ15が書き込まれる。この時点で、物理AU1の確定処理は完了していない。この状態で、論理AU1の第1〜第5RUの読み出しの要求がホスト1からメモリカード2に出されると、メモリカード2は、これらの論理アドレス(論理AU1の第1〜第5RUに対応している)にそれぞれ対応するデータ11〜データ15をAUバッファ1から読み出す。確定処理が行なわれていないので、この段階では論理AU1の第1〜第5RUに対応する論理アドレスを割り当てられたデータはAU1中のデータ1〜データ5であるが、メモリカード2はデータ1〜データ5を読み出さない。一方、論理AU1の第6〜第8RUの読み出しの要求がホスト1からメモリカード2に出されると、メモリカード2は、これらの論理AU1の第6〜第8RUの論理アドレスにそれぞれ対応するデータ6〜データ8を読み出す。
【0091】
確定処理は、上記の説明と同様であり、図32に示すように、メモリカード2はAUバッファ1が論理AU1に対応することを反映するように論物テーブルを更新する。次いで、しかるべき時点で物理AU1は消去される。このような制御とすることにより、確定処理前のAUのデータを読み出すことができる。
【0092】
確定処理前に、何らかのエラーが生じた場合、AUバッファ1は無効となる。すると、AUバッファ1中のデータは読み出せない。しかしながら、論理AU1と物理AU1の対応付けが有効なままなので、書き込み開始前の状態(図30の状態)を復旧できる。
【0093】
以上述べたように、本実施形態に係るホストおよびメモリカードは、複数のストリームの1つを特定する情報を含んだシーケンシャル書き込みコマンドを認識可能に構成されており、これを用いて、ストリームごとに記録の開始や終了を特定できる。そして、メモリカードは、開始コマンドを受け取るとシーケンシャル書き込みモードに移行し、シーケンシャル書き込みモードでは未書き込みAUからなるAUバッファに書き込みデータの論理アドレスの順に書き込みデータを書き込む。AUバッファはストリームごとに専用に設けられるので、書き込みデータは、対応するAUバッファ内でストリームごとに論理アドレス順に並べられることになる。このように、メモリカードは、書き込みデータのストリームを特定し、各ストリーム専用のAUバッファにシーケンシャルにデータを書き込むので、本実施形態に係るホストおよびメモリカードは、複数のストリームを平行して記録することができる。
【0094】
(第2実施形態)
第1実施形態では、シーケンシャル書き込みモードにおいてAUバッファが用意される。これに対して、第2実施形態では、AUバッファを用いずにシーケンシャル書き込みが行なわれる。
【0095】
図33〜図34は、第2実施形態における、データ読み出しの際のメモリカード2およびホスト1の一状態を順に例示している。
【0096】
まず、図33に示すように、論理AU1に属する各論理アドレスを割り当てられたデータ1〜データ8が、メモリ31中の物理AU1中の第1RU〜第8RUにそれぞれ格納されている。この状態で、ホスト1は、論理AU1中の第1RU〜第5RUに相当する各論理アドレスを割り当てられたストリームデータ11〜データ15の書き込みを希望している。この要求を実行するために、ホスト1は、新AU書き込みコマンドをメモリカード2に発行する。
【0097】
新AU書き込みコマンドを受けて、図34に示すように、メモリカード2は消去済みの新たなAU(例えばAU2)を用意する。また、メモリカード2は、このAU2が論理AU1に対応することを反映するように論物テーブルを更新する。そして、AU2にデータ11〜データ15を書き込む。読み出しは、既に論物テーブルの反映が終了しているので、ホスト1からのデータ11〜データ15の読み出し要求に対して、メモリ2はAU2からこれらのデータを読み出す。論理AU1中の残りの第6〜第8RUに対応する論理アドレスを割り当てられたデータの読み出し要求に対しては、メモリカード2は、不定データを読み出す。不定データの代わりに、意味を成さないデータや、特定の固定値からなるデータが読み出されてもよい。
【0098】
このような専用のバッファを用いない実施形態では、データ書き込み要求に対して、現在対応しているAU(本例ではAU1)を消去して、このAUにデータを書き込むことも考えられる。しかしながら、NAND型フラッシュメモリでは、一般に、各AUへの書き込み回数を平均化する(ウェアレベリング)ことが行なわれる。このため、上記のように、新たなAU(本例ではAU2)が用意される。なお、内部バッファを用いない書き込みの場合、置き換え後のAU(AU2)への書き込みの最中にエラーが生じたとしても、書き込み開始前の状態(図33の状態)を復元することはできない。
【0099】
第2実施形態の上記した以外の点については、全て第1実施形態と同じである。
【0100】
以上述べたように、第2実施形態によれば、第1実施形態と同様に、複数のストリームの1つを特定する情報を含んだシーケンシャル書き込みコマンドを認識可能に構成されており、これを用いて、ストリームごとに記録の開始や終了を特定できる。このため、第1実施形態と同じ利点を得られる。
【0101】
(第3実施形態)
第3実施形態では、シーケンシャル書き込みモードが、シングルストリームモードとマルチストリームモードとを含んでいる。さらに、第3実施形態では、第1実施形態ではホスト1がシーケンシャル書き込み制御コマンドの直後に書き込みコマンドを発行することになっているのに対して、この制限が緩和されている。
【0102】
図35は、第3実施形態に係るシーケンシャル書き込み制御コマンドを概略的に示している。第3実施形態において、SDインターフェース15、41は、図35に示すコマンドを認識可能に構成されている。本実施形態に係るシーケンシャル書き込みコマンド(CMD20)は、第1実施形態に係るものと、ストリーム番号部SNの引数の種類のみが異なる。図35に示すように、第1実施形態と同じくストリーム番号部の引数にはシーケンシャル書き込み制御コマンドが担う命令がストリーム1〜4のいずれに対するのかを特定する引数が定義されている。さらに、ストリーム番号部の引数には、シングルストリームモードへの移行を指示する引数が定義されている。例えば、引数が「0000」であれば、シングルストリームモードが指定され、「0000」を超える数であれば、マルチストリームモードが指定されるとともにストリーム番号が特定される。
【0103】
図36は、シーケンシャル書き込み制御コマンドとその後にホストとメモリカードとの間で授受される信号を例示している。図36に示すように、ホスト1がシーケンシャル書き込み制御コマンドをコマンドライン上で送ると、メモリカード2はコマンドライン上でレスポンスを送る。レスポンスは、シーケンシャル書き込み制御コマンドと同じ内容を有する。シーケンシャル書き込み制御コマンドが、このコマンドを認識しないメモリカードで受け取られた場合、このメモリカードはレスポンスを送出しない。メモリカードは、レスポンスの送出とともに、データライン上でビジー信号をホスト1に送る。ビジー状態がタイムアウトと判断されるまでに経過する時間tbusy(max)は、第1実施形態と同様である。図37、図38は、ホスト1とメモリカード2とが単方向の信号線で接続された場合を示している。信号線DIはホスト1からメモリカード2に向かう信号のためのものであり、信号線DOはメモリカード2からホスト1に向かう信号のためのものである。図37、図38は、それぞれ、SPIとUHS−IIに対応する。図37では、ビジー期間が信号のレベルによって示されている。例えば、レスポンスの直後のローレベルによってビジーが示される。図38では、ビジーを示すパケットがホストに送信される。ホスト1は、ビジーのパケットを待つことによってビジー時間を認識する。図37、図38についてのその他の点は、図36と同じである。このように、コマンドを送るラインは、コマンドラインに限る必要はない。
【0104】
図39は、第3実施形態に係るメモリカードのモードの状態遷移を示している。図39に示すように、メモリカード2は、ランダム書き込みモード、シングルストリームモード、マルチストリームモードで動作が可能である。シングルストリームモードは、例えば特開2010−140268号公報(特許文献2)に記載のものに対応する。すなわち、シングルストリームモードに移行すると、メモリカード2は、未書き込みのRUのみからなるAUバッファを用意し、AUバッファ内のRUに書き込みデータを書き込みデータの論理アドレスの順に従って書き込み、次いで所定のタイミングで確定処理を行なう。または、第2実施形態のように、AUバッファを用いずに、消去済みの新たなAUの確定処理を待たずに旧AUと置き換えるように論物テーブルを反映させて、この新AUに順次書き込むようにしてもよい。また、シングルストリームモードにおいて、シーケンシャル書き込み制御コマンドのうち、書き込み開始コマンドは、複数のストリームのデータの記録の準備コマンドとしての役割を担い、さらにその後の書き込みコマンドがシーケンシャルライトを行うデータと認識される。シーケンシャル書き込み中のデータとは異なるCIデータを書き込むには、CI更新コマンドが用いられ、CIデータとの区別がなされる。すなわち、シングルストリームモードにおいても、CI用バッファ22が一杯になった際等に、CI更新コマンドおよびCI書き込みコマンドが続けて発行される。
【0105】
マルチストリームモードは、第1実施形態のシーケンシャル書き込みモードにほぼ対応する。ただし、以下に述べる点が異なる。第3実施形態では、シーケンシャル書き込み制御コマンドのうち、書き込み開始コマンドおよび書き込み終了コマンド後は、書き込みコマンドが続くことを要求されない。例えば、書き込み開始コマンドおよび書き込み終了コマンドに、ディレクトリやファイル情報を作成するための処理が続いてもよい。この制限の緩和によって、マルチストリームモードは、第1実施形態のシーケンシャル書き込みモードと幾つかの点で異なる。本実施形態では、最初のストリームのためのデータの書き込みの際に発行される書き込み開始コマンドは、複数のストリームのデータの記録の準備コマンドとしての役割のみを担う。すなわち、このような書き込み開始コマンドは、ストリーム番号を特定しており、したがって、マルチストリームへの移行を指示する。マルチストリームモードでの動作については後に詳述する。
【0106】
ランダムアクセスモードにあるメモリカード2は、シングルストリームモードへの移行を指示する(SN=0)シーケンシャル書き込み制御コマンドを受け取ると、シングルストリームモードに移行する。シングルストリームモードにあるメモリカード2は、シーケンシャル書き込みでない制御を要求するシーケンスのコマンドを受け取ると、ランダムアクセスモードに移行する。そのようなシーケンスは、論理アドレスの連続しない書き込みの要求を含む。シングルストリームモードからランダム書き込みモードへの以降の際、未書き込み部分のデータは保存される。
【0107】
ランダムアクセスモードにあるメモリカード2は、マルチストリームモードへの移行を指示する(SN>0)シーケンシャル書き込み制御コマンドを受け取ると、マルチストリームモードに移行する。マルチストリームモードにあるメモリカード2は、最後のストリームについての書き込み終了コマンドを受け取るか、第1実施形態の説明において記載したような、ランダム書き込みを要求する意味の書き込みコマンドや、誤った(不正な)制御を要求するシーケンスのコマンドを受け取ると、ランダム書き込みモードに移行する。
【0108】
マルチストリームモードからランダム書き込みモードへの以降の際、新AU書き込みコマンドで指定されたAUは、必要なデータコピーのみ行なわれる。必要なデータコピーは、メモリカードの実装に依存する。例えば、AUが複数の部分に分割して管理される形態で場合、ある論理AU中の1つの分割部分の一部のデータが更新された際に、この分割部分の残りの部分のデータがコピーされる必要がある場合がある。
【0109】
メモリカード2がいずれのモードであるかの情報は、レジスタ47において保持されている。メモリカード2は、モードが遷移する度にレジスタ47中のモード情報を更新する。モード情報は、図40に示すように、カードステータスレジスタ内、またはメモリカードのメーカーが独自の用途で設けるメーカー独自レジスタ内に保持される。モード情報は、例えば、2ビットで表わされ、00、01、11が、それぞれ、ランダムモード、シングルストリームモード、マルチストリームモードを意味する。モード情報は、例えばステータス情報として扱われ、ホスト1はステータス情報を読み出す既存のコマンドを用いてモード情報をメモリカード2から読み出す。ホスト1が正常なシーケンスでコマンドを発行しないと、メモリカード2はランダムモードに移行する。そこで、モード情報を、ホスト1のデバッグ時のホスト1の制御に誤りが無いかの確認に使用できる。
【0110】
次に、マルチストリームモードでの動作について説明する。図41は、ホストからメモリカード2に送られるコマンドを時系列に沿って例示している。まず、ホスト1は、図13に示すように、最初のストリーム(ストリーム1)のためのデータを書き込むことを要求する。そのために、図41に示すように、ホスト1は、書き込み開始コマンドを発行する(ステップS21)。この書き込み開始コマンドは、ストリーム1を示す引数を有しており、したがってメモリカード2にマルチストリームモードへの移行を指示する。
【0111】
次に、図41に示すように、ホスト1はストリーム1のためのディレクトリ情報を作成する。そのために、ホスト1は、第1実施形態のステップS1を実行する。すなわち、ホスト1は、ストリーム1用のDIR作成コマンド、およびDIR書き込みコマンドならびにDIRデータを順次メモリカード2に送る。メモリカード2は、ストリーム1用DIRデータを、指示されたアドレスのAUまたはAUバッファに書き込む。
【0112】
次に、図41に示すように、ホスト1は、AU1にストリーム1のためのデータA1〜A6を書き込むことを要求する。そのために、ホスト1は、新AU書き込みコマンドを発行する(ステップS22)。新AU書き込みコマンドに対するメモリカード2の動作自体は、第1実施形態とで同じである。この新AU書き込みコマンドは、ストリーム1を指定している。したがって、この新AU書き込みコマンドを受け取ると、図14に示すように、ステップS7と同様に、メモリカード2はストリーム1のためのAUバッファ(AUバッファ1)を確保し、レジスタ書き込み制御部51(図6)は、ストリーム1用AUアドレスレジスタ52aに格納されているAUアドレスおよびそのフラグをクリアする。このように、第3実施形態では、各ストリームについての書き込み開始コマンドの発行後、このストリームのためのデータの最初の書き込みコマンドの発行直前に、このストリームについての新AU書き込みコマンドが発行される。
【0113】
次に、ホスト1は、データ書き込みコマンドおよびストリーム1のためのデータA1〜A6をメモリカード2に送る(ステップS23)。ステップS23は、第1実施形態のステップ2中の、書き込み開始コマンド以降の処理と同じである。すなわち、メモリカード2は、直前の新AU書き込みコマンドから、このデータ書き込みコマンドがストリーム1のデータのためのものであることを認識する。そして、レジスタ書き込み制御部46は書き込みアドレスのAUアドレスを保持する。続いて、メモリカード2は、図15に示すように、データA1〜A6をAUバッファ1の第1RU〜第6RUに書き込む。
【0114】
図16および図41に示すように、ホスト1は、ストリーム1の書き込みと平行して、AU2にストリーム2のためのデータB1を書き込むことを要求する。その準備として、ホスト1は、第1実施形態のステップS3を行なってストリーム2用のDIRの作成および書き込みを行なう。続いて、ホスト1は、図17に示すように、S4を行なってAUバッファ1にデータA7を書き込む。
【0115】
次に、図17および図41に示すように、ホスト1は、ストリーム2のためのデータの書き込みを継続する。そのために、ホスト1は、ステップS5と同じく、ストリーム2についての書き込み開始コマンドを発行する(ステップS24)。次に、ホスト1は、新たなストリーム(ストリーム2)のためのデータを書き込むための最初の書き込みコマンドの発行の前に、ストリーム2を特定する新AU書き込みコマンドを発行する(ステップS25)。この新AU書き込みコマンドを受け取ると、メモリカード2は、ストリーム2のためのAUバッファ(AUバッファ2)を確保し、レジスタ書き込み制御部51(図6)は、ストリーム2用AUアドレスレジスタ52bに格納されているAUアドレスおよびそのフラグをクリアする。
【0116】
次に、ホスト1は、データ書き込みコマンドおよびストリーム2のためのデータB1をメモリカード2に送る(ステップS26)。ステップS26は、第1実施形態のステップS5の後半の処理と同じである。すなわち、メモリカード2は、直前の新AU書き込みコマンドから、このデータ書き込みコマンドがストリーム2のデータのためのものであることを認識する。そして、レジスタ書き込み制御部46は書き込みアドレスのAUアドレスを保持する。続いて、メモリカード2は、データB1をAUバッファ2の第1RUに書き込む。その後の動作は、第1実施形態のステップS6〜S9の動作と同じである。
【0117】
ストリーム2のためのデータの書き込みを終了するために、ホスト1は、図41に示すようにストリーム2についての書き込み終了コマンドをメモリカード2に送る(ステップS31)。ステップS31では、第1実施形態のステップS10中の書き込み終了コマンド発行時の処理と同じ処理が行なわれる。すなわち、確定処理とアドレスレジスタ中のAUアドレスおよびそのフラグがクリアされる。
【0118】
また、書き込み終了コマンドに続いて、ホスト1は、書き込み終了したストリーム(ストリーム2)についてのCIデータの更新を要求している。上記のように、書き込み終了コマンドの直後も書き込みコマンドが来ることは必須ではない。そこで、ホスト1は、ストリーム2についてのCI書き込みコマンドの発行直前に、このストリームについてのCI更新コマンドをメモリカード2に発行する(ステップS32)。続いて、ホスト1は、CI書き込みコマンドとCIデータをメモリカード2に送る。メモリカード2は、この書き込みコマンドが、直前のCI更新コマンドによってCIデータ書き込みのためのものであることを認識し、CIデータをCI用バッファに書き込む。
【0119】
次に、ステップS10の最後の部分と同じく、AUバッファ3にストリーム1のためのデータA16が書き込まれる(ステップS33)。その後の動作は、第1実施形態のステップS11〜S15の動作と同じである。
【0120】
第3実施形態の、上記した以外の点については、全て第1実施形態と同じである。さらに、第3実施形態に第2実施形態を適用することもできる。すなわち、内部バッファが用いられることなくデータ書き込みが行なわれる。
【0121】
以上述べたように、第3実施形態では、第1実施形態と同様に、複数のストリームの1つを特定する情報を含んだシーケンシャル書き込みコマンドを認識可能に構成されており、これを用いて、ストリームごとに記録の開始や終了を特定できる。このため、第1実施形態と同じ利点を得られる。
【0122】
さらに、第3実施形態によれば、書き込み開始コマンドおよび書き込み終了コマンド後は、書き込みコマンドが続くことを要求されない。このため、CI更新やDIR更新等の管理データの書き込みおよび更新を任意のタイミングで実行できる。
【0123】
その他、本発明は、上記各実施形態に限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で、種々に変形することが可能である。さらに、上記実施形態には種々の段階の発明が含まれており、開示される複数の構成要件における適宜な組み合わせにより種々の発明が抽出され得る。例えば、上記各実施形態に示される全構成要件から幾つかの構成要件が削除されても、発明が解決しようとする課題の欄で述べた課題が解決でき、発明の効果の欄で述べられている効果が得られる場合には、この構成要件が削除された構成が発明として抽出され得る。
【符号の説明】
【0124】
1…ホスト装置、2…メモリカード、11…MPU、12…ソフトウェア、13…ファイルシステム、14…ストリームコントローラ、15…SDインターフェース、16…ROM、17…RAM、31…メモリ、32…コントローラ、41…SDインターフェース、42…MPU、43…ROM、44…RAM、45…NANDインターフェース、46…アドレス比較部、47…レジスタ。
【特許請求の範囲】
【請求項1】
複数の記憶領域を有する不揮発性の半導体メモリと、
前記半導体メモリに書き込まれる書き込みデータを受け取り、ランダム書き込みモードとシーケンシャル書き込みモードとを有し、開始コマンドを受け取ると前記シーケンシャル書き込みモードに移行し、前記シーケンシャル書き込みモードにおいて、
書き込みコマンドの直前に受け取った制御コマンドを認識し、前記制御コマンドまたは論理アドレスにより対象とする書き込みデータが一部を構成するデータストリームを識別し、識別されたデータストリーム毎に前記半導体メモリ内に用意されたバッファに前記書き込みデータを書き込み、各バッファにおいて前記書き込みデータのアドレスの順序に従って前記データストリームを順次書き込み、終了コマンドを受け取ると該当するストリームについての前記バッファに対して書き込み終了処理を行い、全てのデータストリームの書き込み終了処理が完了すると前記ランダム書き込みモードに移行する、コントローラと、
を具備することを特徴とするメモリデバイス。
【請求項2】
複数の記憶領域を有する不揮発性の半導体メモリと、
前記半導体メモリに書き込まれる書き込みデータを受け取り、ランダム書き込みモードとシーケンシャル書き込みモードとを有し、開始コマンドを受け取ると前記シーケンシャル書き込みモードに移行し、前記シーケンシャル書き込みモードにおいて、
書き込みコマンドの直前に受け取った制御コマンドを認識し、前記制御コマンドまたは論理アドレスにより対象とする書き込みデータが一部を構成するデータストリームを識別し、識別されたデータストリーム毎に前記メモリ内に用意したバッファに書き込み、各バッファにおいて前記書き込みデータのアドレスの順序に従って前記データストリームを順次書き込み、ランダム書き込み要求を検出した場合は、全ての前記バッファに対する書き込み終了処理を待たずにランダム書き込みモードに移行する、コントローラと、
を具備することを特徴とするメモリデバイス。
【請求項3】
前記制御コマンドが、当該制御コマンドの直後のコマンドが対象とするストリームを特定する情報と、動作を指定する情報と、を有し、
前記動作を指定する情報に応じて、前記制御コマンドが、当該制御コマンドが特定するストリームについての、前記開始コマンド、前記終了コマンド、前記バッファに代えて新しいバッファを用意することを指示するコマンド、複数の前記書き込みデータ同士の連結の順序に関する情報を前記メモリデバイスに保持することを指示するコマンド、のいずれかとして機能する、
ことを特徴とする請求項1または2のメモリデバイス。
【請求項4】
複数の記憶領域を有する不揮発性の半導体メモリと、
前記メモリに書き込まれる書き込みデータを受け取り、ランダム書き込みモードとシーケンシャル書き込みモードとを有し、開始コマンドを受け取ると前記シーケンシャル書き込みモードに移行し、前記シーケンシャル書き込みモードにおいて、
制御コマンドを認識し、前記制御コマンドまたは論理アドレスにより対象とする書き込みデータが一部を構成するデータストリームを識別し、識別されたデータストリーム毎に所定数の前記複数の記憶領域からなり且つ外部からアクセス可能な単位領域または前記複数の記憶領域からなるバッファを用意し、前記単位領域または前記バッファにおいて前記書き込みデータを連続する前記複数の記憶領域に当該書き込みデータのアドレスと同じ順序で前記データストリームを書き込み、終了コマンドを受け取ると該当するストリームについての前記バッファに対して書き込み終了処理を行い、全てのデータストリームの書き込み終了処理が完了すると前記ランダム書き込みモードに移行するかランダム書き込み要求を検出するとランダム書き込みモードに移行する、コントローラと、
を具備することを特徴とするメモリデバイス。
【請求項5】
前記制御コマンドが、当該制御コマンドが対象とするストリームまたは当該制御コマンドの直後の書き込みコマンドが対象とするデータストリームを特定する情報と、動作を指定する情報と、を有し、
前記動作を指定する情報に応じて、前記制御コマンドが、当該制御コマンドが特定するストリームについての、前記開始コマンド、前記終了コマンド、前記バッファに代えて新しいバッファを用意することを指示するコマンド、複数の前記書き込みデータ同士の連結の順序に関する情報を前記メモリデバイスに保持することを指示するコマンド、のいずれかとして機能する、
ことを特徴とする請求項4のメモリデバイス。
【請求項6】
前記メモリデバイスが、1つのデータストリームのための書き込みデータを連続する前記複数の記憶領域に当該書き込みデータのアドレスと同じ順序で書き込む第2シーケンシャル書き込みモードをさらに有し、
前記制御コマンドが、前記シーケンシャル書き込みモードへの移行を指示するとともに当該制御コマンドが対象とするストリームを特定する情報または前記第2シーケンシャル書き込みモードへの移行を指示する情報を含む、
請求項5のメモリデバイス。
【請求項7】
前記コントローラが、アドレス比較部を具備し、
前記アドレス比較部が、
複数の前記データストリームの各々に専用の、前記制御コマンドの直後の書き込みコマンドが指定するデータの書き込み先アドレスを格納する複数のレジスタと、
前記複数のレジスタと一対一で対応し、受け取った書き込みコマンドが指定するデータの書き込み先アドレスと、対応する前記レジスタに格納されている前記書き込み先アドレスとが一致している場合に信号を出力する複数の比較器と、
を具備し、
前記コントローラが、前記受け取った書き込みコマンドと前記信号を出力した前記比較器が対応するデータストリームと前記バッファを関連付ける、
ことを特徴とする請求項1乃至6のいずれか1項のメモリデバイス。
【請求項8】
複数の記憶領域を有する不揮発性の半導体メモリと前記メモリを制御するコントローラとを有するメモリデバイスにデータを書き込むホスト装置であって、
前記メモリに書き込まれるデータを予め定められた大きさに分割して書き込みデータを用意するアプリケーションソフトウェアと、
前記書き込みデータを複数の前記記憶領域のアドレスの順序と前記記憶領域に書き込まれたデータの論理アドレスの順序とが同じとなるように書き込むシーケンシャル書き込みモードへの移行を指示する開始コマンド、および前記書き込みデータの書き込みを指示する書き込みコマンドの直前に相互に独立する複数のデータストリームのうちの当該書き込みコマンドが対象とするデータストリームを特定する制御コマンド、を発行する機能を有するインターフェースと、
を具備することを特徴とするホスト装置。
【請求項9】
前記開始コマンドが、前記シーケンシャル書き込みモードへの移行を指示するとともに当該開始コマンドが対象とするデータストリームを特定する情報か、1つのデータストリームのための書き込みデータを連続する前記複数の記憶領域に当該書き込みデータのアドレスと同じ順序で書き込む第2シーケンシャル書き込みモードへの移行を指示する情報を含む、
ことを特徴とする、請求項8のホスト装置。
【請求項10】
前記メモリデバイスから前記メモリデバイスが保証する最低書き込み速度についての性能情報を受け取り、前記性能情報を用いて、平行して前記メモリデバイスに書き込み可能な複数の前記データストリームの数および複数の前記データストリームの各々についてのビットレートを決定するレート決定部をさらに具備する、フローコントローラをさらに具備する、
ことを特徴とする請求項8または9のホスト装置。
【請求項11】
前記フローコントローラが、
複数の前記データストリームの各々に専用の、対応するデータストリームを構成する前記書き込みデータを保持する複数のデータバッファを具備し、
複数の前記データストリームの各々について決定された前記ビットレートを実現するように複数の前記データバッファ内の複数の前記書き込みデータを時分割の原理で送出する、
ことを特徴とする請求項10のホスト装置。
【請求項1】
複数の記憶領域を有する不揮発性の半導体メモリと、
前記半導体メモリに書き込まれる書き込みデータを受け取り、ランダム書き込みモードとシーケンシャル書き込みモードとを有し、開始コマンドを受け取ると前記シーケンシャル書き込みモードに移行し、前記シーケンシャル書き込みモードにおいて、
書き込みコマンドの直前に受け取った制御コマンドを認識し、前記制御コマンドまたは論理アドレスにより対象とする書き込みデータが一部を構成するデータストリームを識別し、識別されたデータストリーム毎に前記半導体メモリ内に用意されたバッファに前記書き込みデータを書き込み、各バッファにおいて前記書き込みデータのアドレスの順序に従って前記データストリームを順次書き込み、終了コマンドを受け取ると該当するストリームについての前記バッファに対して書き込み終了処理を行い、全てのデータストリームの書き込み終了処理が完了すると前記ランダム書き込みモードに移行する、コントローラと、
を具備することを特徴とするメモリデバイス。
【請求項2】
複数の記憶領域を有する不揮発性の半導体メモリと、
前記半導体メモリに書き込まれる書き込みデータを受け取り、ランダム書き込みモードとシーケンシャル書き込みモードとを有し、開始コマンドを受け取ると前記シーケンシャル書き込みモードに移行し、前記シーケンシャル書き込みモードにおいて、
書き込みコマンドの直前に受け取った制御コマンドを認識し、前記制御コマンドまたは論理アドレスにより対象とする書き込みデータが一部を構成するデータストリームを識別し、識別されたデータストリーム毎に前記メモリ内に用意したバッファに書き込み、各バッファにおいて前記書き込みデータのアドレスの順序に従って前記データストリームを順次書き込み、ランダム書き込み要求を検出した場合は、全ての前記バッファに対する書き込み終了処理を待たずにランダム書き込みモードに移行する、コントローラと、
を具備することを特徴とするメモリデバイス。
【請求項3】
前記制御コマンドが、当該制御コマンドの直後のコマンドが対象とするストリームを特定する情報と、動作を指定する情報と、を有し、
前記動作を指定する情報に応じて、前記制御コマンドが、当該制御コマンドが特定するストリームについての、前記開始コマンド、前記終了コマンド、前記バッファに代えて新しいバッファを用意することを指示するコマンド、複数の前記書き込みデータ同士の連結の順序に関する情報を前記メモリデバイスに保持することを指示するコマンド、のいずれかとして機能する、
ことを特徴とする請求項1または2のメモリデバイス。
【請求項4】
複数の記憶領域を有する不揮発性の半導体メモリと、
前記メモリに書き込まれる書き込みデータを受け取り、ランダム書き込みモードとシーケンシャル書き込みモードとを有し、開始コマンドを受け取ると前記シーケンシャル書き込みモードに移行し、前記シーケンシャル書き込みモードにおいて、
制御コマンドを認識し、前記制御コマンドまたは論理アドレスにより対象とする書き込みデータが一部を構成するデータストリームを識別し、識別されたデータストリーム毎に所定数の前記複数の記憶領域からなり且つ外部からアクセス可能な単位領域または前記複数の記憶領域からなるバッファを用意し、前記単位領域または前記バッファにおいて前記書き込みデータを連続する前記複数の記憶領域に当該書き込みデータのアドレスと同じ順序で前記データストリームを書き込み、終了コマンドを受け取ると該当するストリームについての前記バッファに対して書き込み終了処理を行い、全てのデータストリームの書き込み終了処理が完了すると前記ランダム書き込みモードに移行するかランダム書き込み要求を検出するとランダム書き込みモードに移行する、コントローラと、
を具備することを特徴とするメモリデバイス。
【請求項5】
前記制御コマンドが、当該制御コマンドが対象とするストリームまたは当該制御コマンドの直後の書き込みコマンドが対象とするデータストリームを特定する情報と、動作を指定する情報と、を有し、
前記動作を指定する情報に応じて、前記制御コマンドが、当該制御コマンドが特定するストリームについての、前記開始コマンド、前記終了コマンド、前記バッファに代えて新しいバッファを用意することを指示するコマンド、複数の前記書き込みデータ同士の連結の順序に関する情報を前記メモリデバイスに保持することを指示するコマンド、のいずれかとして機能する、
ことを特徴とする請求項4のメモリデバイス。
【請求項6】
前記メモリデバイスが、1つのデータストリームのための書き込みデータを連続する前記複数の記憶領域に当該書き込みデータのアドレスと同じ順序で書き込む第2シーケンシャル書き込みモードをさらに有し、
前記制御コマンドが、前記シーケンシャル書き込みモードへの移行を指示するとともに当該制御コマンドが対象とするストリームを特定する情報または前記第2シーケンシャル書き込みモードへの移行を指示する情報を含む、
請求項5のメモリデバイス。
【請求項7】
前記コントローラが、アドレス比較部を具備し、
前記アドレス比較部が、
複数の前記データストリームの各々に専用の、前記制御コマンドの直後の書き込みコマンドが指定するデータの書き込み先アドレスを格納する複数のレジスタと、
前記複数のレジスタと一対一で対応し、受け取った書き込みコマンドが指定するデータの書き込み先アドレスと、対応する前記レジスタに格納されている前記書き込み先アドレスとが一致している場合に信号を出力する複数の比較器と、
を具備し、
前記コントローラが、前記受け取った書き込みコマンドと前記信号を出力した前記比較器が対応するデータストリームと前記バッファを関連付ける、
ことを特徴とする請求項1乃至6のいずれか1項のメモリデバイス。
【請求項8】
複数の記憶領域を有する不揮発性の半導体メモリと前記メモリを制御するコントローラとを有するメモリデバイスにデータを書き込むホスト装置であって、
前記メモリに書き込まれるデータを予め定められた大きさに分割して書き込みデータを用意するアプリケーションソフトウェアと、
前記書き込みデータを複数の前記記憶領域のアドレスの順序と前記記憶領域に書き込まれたデータの論理アドレスの順序とが同じとなるように書き込むシーケンシャル書き込みモードへの移行を指示する開始コマンド、および前記書き込みデータの書き込みを指示する書き込みコマンドの直前に相互に独立する複数のデータストリームのうちの当該書き込みコマンドが対象とするデータストリームを特定する制御コマンド、を発行する機能を有するインターフェースと、
を具備することを特徴とするホスト装置。
【請求項9】
前記開始コマンドが、前記シーケンシャル書き込みモードへの移行を指示するとともに当該開始コマンドが対象とするデータストリームを特定する情報か、1つのデータストリームのための書き込みデータを連続する前記複数の記憶領域に当該書き込みデータのアドレスと同じ順序で書き込む第2シーケンシャル書き込みモードへの移行を指示する情報を含む、
ことを特徴とする、請求項8のホスト装置。
【請求項10】
前記メモリデバイスから前記メモリデバイスが保証する最低書き込み速度についての性能情報を受け取り、前記性能情報を用いて、平行して前記メモリデバイスに書き込み可能な複数の前記データストリームの数および複数の前記データストリームの各々についてのビットレートを決定するレート決定部をさらに具備する、フローコントローラをさらに具備する、
ことを特徴とする請求項8または9のホスト装置。
【請求項11】
前記フローコントローラが、
複数の前記データストリームの各々に専用の、対応するデータストリームを構成する前記書き込みデータを保持する複数のデータバッファを具備し、
複数の前記データストリームの各々について決定された前記ビットレートを実現するように複数の前記データバッファ内の複数の前記書き込みデータを時分割の原理で送出する、
ことを特徴とする請求項10のホスト装置。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22】
【図23】
【図24】
【図25】
【図26】
【図27】
【図28】
【図29】
【図30】
【図31】
【図32】
【図33】
【図34】
【図35】
【図36】
【図37】
【図38】
【図39】
【図40】
【図41】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22】
【図23】
【図24】
【図25】
【図26】
【図27】
【図28】
【図29】
【図30】
【図31】
【図32】
【図33】
【図34】
【図35】
【図36】
【図37】
【図38】
【図39】
【図40】
【図41】
【公開番号】特開2011−175615(P2011−175615A)
【公開日】平成23年9月8日(2011.9.8)
【国際特許分類】
【出願番号】特願2010−186481(P2010−186481)
【出願日】平成22年8月23日(2010.8.23)
【出願人】(000003078)株式会社東芝 (54,554)
【Fターム(参考)】
【公開日】平成23年9月8日(2011.9.8)
【国際特許分類】
【出願日】平成22年8月23日(2010.8.23)
【出願人】(000003078)株式会社東芝 (54,554)
【Fターム(参考)】
[ Back to top ]