説明

メモリカードコントローラ、メモリカードアダプタおよびメモリカードドライブ

【課題】エンベディッドクロック方式を採用したメモリカードにおいて、ホスト装置からの読み出し指示がデータ長の短い読み出しコマンドで行われる場合でも、転送速度を向上させる。
【解決手段】メモリカードコントローラのコマンド制御部は、受付部が第1リードコマンドを受け付けたときに、第1リードコマンドが指定する転送サイズよりも大きな所定の転送サイズを指定して転送コマンドをメモリカードに発行しデータの転送を開始させる。メモリカードからホスト装置に転送されたデータのサイズが、第1リードコマンドにより指定された転送サイズに達したときメモリカードの転送動作を一時停止させ、受付部が第2リードコマンドを受け付けたとき、第2リードコマンドが示す転送開始アドレスが第1リードコマンドによる終了アドレスと連続性を有すると判定された場合、メモリカードの転送動作を再開させる。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ホスト装置とメモリカードとの間のデータ転送を制御するメモリカードコントローラに関する。
【背景技術】
【0002】
フラッシュメモリの低価格化、高速化に伴い、民生機器の分野のみならず、プロフェッショナル用途の映像機器の分野においても、メモリカードに動画像データを記録するようになりつつある。
【0003】
メモリカードに記録した動画像データは、編集やアーカーブのために、メモリカードからサーバにアップロードされる。プロフェッショナル用途で使用する動画像データは大容量である。そのため、メモリカードからのデータのリード速度はライト速度よりも例えば数倍高速であることが要望されている。
【0004】
ここで、書き換え回数に制約があるフラッシュメモリ等を使用したメモリカードでは、書き換え回数を平均化するために、論理アドレスとメモリカード内部の不揮発性メモリの物理アドレスの対応が動的に制御される。そのため、論理アドレスと物理アドレスの対応を記録した論物変換テーブルが不揮発性メモリに記録される。このような構成においては、メモリカードのリード動作は、論物変換テーブルを参照して指定された論理アドレスに対応する物理アドレスを読み出す処理と、読み出された物理アドレスに基づいて実データを読み出す処理との2ステップを含む。
【0005】
ところで、汎用PCなどのホスト機器がメモリカードに発行するリードコマンドの読み出しサイズ(転送サイズ)は、比較的小さい。そのため、コマンドのオーバーヘッドや、論物変換テーブルにかかるオーバーヘッドが無視できない。
【0006】
特許文献1においては、メモリカードコントローラは、読み出したデータのデータ量がリードコマンドより指定されたデータ量に到達すると、リード動作を一時停止する。そして、後続するリードコマンドにより指定された先頭アドレスが、先行するコマンドにより指定された転送終了アドレスと連続であった場合に、リード動作を再開する。リード動作の停止および再開は、クロックの停止と供給により制御される。
【0007】
これにより、連続する領域に対してデータ転送を要求するコマンドが、ホスト装置から続けて発行される場合、コマンドを受け付ける度に転送開始命令を発行する必要がないので、より高速なデータ転送が実現される。
【先行技術文献】
【特許文献】
【0008】
【特許文献1】特許第4323476号公報
【発明の概要】
【発明が解決しようとする課題】
【0009】
近年、フラッシュメモリのインターフェイスの高速化に伴い、メモリカードの外部インターフェイスも高速なシリアルインターフェイスが採用されつつある。例えば、SDカードでは、転送速度が3Gbpsの高速インターフェイスUHS−IIが規格化された。
【0010】
このような高速インターフェイス規格では、従来のメモリカードのようにクロックとデータが別々に転送されるのではなく、クロックを、転送されるデータから再生して使用する(エンベディッドクロック方式)。
【0011】
よって、このような高速インターフェイス規格に対しては、特許文献1に開示の従来技術のように転送の一時停止のためにクロックを停止することにより、データ転送を制御する方法は適用できない。
【0012】
本発明は、エンベディッドクロック方式を採用したメモリカードにおいて、ホスト装置からの読み出し指示がデータ長の短い読み出しコマンドで行われる場合でも、データ読み出しの際の転送速度を向上させることができるメモリカードコントローラ、メモリカードアダプタおよびメモリカードドライブを提供することを目的とする。
【課題を解決するための手段】
【0013】
本発明の第1の態様において、リードコマンドを発行してデータ転送を要求するホスト装置と、メモリカードとの間のデータ転送を制御するメモリカードコントローラが提供される。このメモリカードコントローラは、ホスト装置から、データ転送に関する転送サイズ及び転送開始アドレスを指定したリードコマンドを受け付ける受付部と、メモリカードとの間のデータ転送を、メモリカードからの転送許可要求に対する応答によって制御するフロー制御部と、受付部を介して前記ホスト装置から連続して受け付けた2つのリードコマンドに対して、前に受け付けたリードコマンドによるデータ転送の終了アドレスと、次に受け付けたリードコマンドが指定する転送開始アドレスの連続性を判定する連続性照合部と、リードコマンドに応じてメモリカードに対して転送コマンドを発行するコマンド制御部と、を備る。コマンド制御部は、受付部が第1リードコマンドを受け付けたときに、第1リードコマンドが指定する転送開始アドレスと、第1リードコマンドが指定する転送サイズよりも大きな所定の転送サイズとを指定して転送コマンドをメモリカードに発行して、データの転送を開始させるとともに、転送コマンドに応答してメモリカードから前記ホスト装置に転送されたデータのサイズが、第1リードコマンドにより指定された転送サイズに達したときに、メモリカードからの転送許可要求に対して準備中を示す応答を送信するようにフロー制御部を制御して、メモリカードの転送動作を一時停止させ、メモリカードの転送動作を一時停止させた状態で受付部が第2リードコマンドを受け付けたときに、連続性照合部により第2リードコマンドが示す転送開始アドレスが第1リードコマンドによる終了アドレスと連続性を有すると判定されたときは、メモリカードからの転送許可要求に対して転送可能を示す応答を送信するようフロー制御部を制御して、メモリカードの転送動作を再開させる。
【0014】
本発明の第2の態様において、ホスト装置とメモリカードの間のデータ転送を制御するメモリカードアダプタが提供される。このメモリカードアダプタは、メモリカードを装着可能なカードスロットと、メモリカードからのデータの転送を制御する、第1の態様に記載のメモリカードコントローラと、ホスト装置に対するデータ及びコマンドの送受信を行う外部インターフェイス部と、を備える。
【0015】
本発明の第3の態様において、ホスト装置からの要求にしたがいデータの転送を行うメモリカードドライブが提供される。このメモリカードドライブは、データを格納するメモリカードと、メモリカードからのデータの転送を制御する、第1の態様に記載のメモリカードコントローラと、ホスト装置に対するデータ及びコマンドの送受信を行う外部インターフェイス部と、を備える。
【発明の効果】
【0016】
本発明の各態様にかかるメモリカードコントローラ、メモリカードアダプタ及びメモリカードドライブによれば、ホスト装置からリードコマンドが連続して発行された場合であっても、これらのリードコマンドが指定するアドレスが連続性を有しているときには、メモリカードへリードコマンドが発行されるのは、ホスト装置から最初のリードコマンドが発行されたときのみとなる。そのため、オーバーヘッド発生による読み出し処理の遅延を防止することができる。
【図面の簡単な説明】
【0017】
【図1】実施の形態に係るメモリカードアダプタを含む映像信号の記録再生システムの構成を示す図
【図2】実施の形態に係るメモリカードアダプタの構成を示す図
【図3】実施の形態に係るメモリカードコントローラによるフロー制御の説明図
【図4】実施の形態に係るメモリカードコントローラによる処理の流れを示す図
【図5】実施の形態に係るメモリカードコントローラによる処理のタイミングチャート
【図6】実施の形態に係るメモリカードコントローラによる処理のフローチャート
【発明を実施するための形態】
【0018】
1.構成
以降、本発明に係るメモリカードアダプタの実施形態について説明する。先ず始めに、実施の形態に係るメモリカードアダプタを含む映像信号の記録再生システムの構成を説明する。図1は、実施の形態に係るメモリカードアダプタを含む映像信号の記録再生システムの構成を示すブロック図である。図1に示すように、映像信号の記録再生システムは、ホスト装置1と、メモリカードアダプタ2と、メモリカード5とを含む。メモリカードアダプタ2は、映像信号の記録再生システムにおいて、メモリカードアダプタ2に挿入されたメモリカード5に映像信号を記録し、あるいはメモリカード5に記録された映像信号を再生するという用途に供される。なお、本実施形態では、メモリカード5としてSDカードを利用した場合について説明する。
【0019】
ホスト装置1は、映像信号入出力部1aと、信号処理部1bと、アダプタ制御部1cとを有する。信号処理部1bは、映像信号入出力部1aを介して送受信する映像信号の圧縮復元を行う。アダプタ制御部1cは、メモリカードアダプタ2を制御する。
【0020】
メモリカードアダプタ2は、カードスロット2aと、外部インターフェイス部3と、メモリカードコントローラ4とを有する。カードスロット2aには、メモリカード5を装着可能である。装着されたメモリカード5は、メモリカードアダプタ2に対して電気的に接続される。
【0021】
メモリカード5は、エンベディッドクロック方式のインターフェイスを有する高速メモリカードであり、2本のシリアルインターフェイスを有する。エンベディッドクロック方式とは、転送されたデータからクロックを抽出して再生する方式である。ここで、メモリカード5へのデータ入力インターフェイスをD0、メモリカード5からのデータ出力インターフェイスをD1とする。メモリカード5は内部に、論理アドレスと、メモリカード5に内蔵されている不揮発性メモリの物理アドレスとの対応関係が記録された論物変換テーブルを有している。
【0022】
2.動作
2−1.記録動作
メモリカード5の記録動作について説明する。データ記録時、ホスト装置1は、メモリカードアダプタ2に対して、メモリカード5における書き込み先頭の論理アドレスと書き込みサイズを指定したライトコマンドを発行する。ホスト装置1からライトコマンドを受けると、メモリカードコントローラ4は、ホスト装置1により指定された書き込み先頭の論理アドレスと書き込みサイズを、メモリカード5のプロトコルに対応した書き込み命令に変換して、メモリカード5に発行する。
【0023】
メモリカード5は、ホスト装置1から書き込み命令がアサートされると、論物変換テーブルを読み出す。メモリカード5は、論物変換テーブルを読み出すと、論物変換テーブルに従い、転送されてくるデータを不揮発性メモリに書き込んでいく。メモリカードコントローラ4は、指定した書き込みサイズのデータの書き込みが終了すると、論物変換テーブルの更新を行い、書込終了を示す転送終了割り込みをホスト装置1にアサートする。
【0024】
2−2.再生動作
メモリカード5の再生動作について説明する。再生時、ホスト装置1は、メモリカードアダプタ2に対して、メモリカード5における読み出し先頭論理アドレスと読み出しサイズを指定したリードコマンドを発行する。ホスト装置1からリードコマンドを受けると、メモリカードコントローラ4は、ホスト装置1から指定された読み出し先頭論理アドレスと読み出しサイズ(転送サイズ)を、メモリカード5のデータ読み出しプロトコルに対応した読み出し命令に変換する。読み出し命令を受信したメモリカード5は、読み出し先頭論理アドレスをメモリカード5内部の不揮発性メモリにおける物理アドレスに変換するために、論物変換テーブルを読み出す。論物変換テーブルを読み出すと、メモリカードコントローラ4は、論物変換テーブルに基づき、論理アドレスを物理アドレスに変換し、不揮発性メモリにおけるこの変換した物理アドレスから所望のデータを読み出す。メモリカード5から、指定された転送サイズのデータの読み出しが終了すると、メモリカードコントローラ4(メモリカードアダプタ2)は、読み出し処理を終了し、読み出し処理の終了を示す転送終了割り込みをホスト装置1にアサートする。
【0025】
ホスト装置1からコマンドを受信してからメモリカードコントローラ4(メモリカードアダプタ2)が転送終了割り込みをアサートするまでの一連の過程をプロセスという。1回のプロセスで論物変換テーブルの読み出しが1回発生する。そのため、プロセスの数が多くなると、オーバーヘッドの悪影響が顕著化する。
【0026】
ホスト装置1は、メモリカードアダプタ2に対してATA規格(Advanced Technology Attachment)に準拠したコマンドを発行することによりメモリカード5に対する読み書きを行う。本実施形態では、ホスト装置1として映像機器を想定しているが、上記のようにATAコマンドを利用することにより、パソコン等をホスト装置1とする場合にも適用可能である。ホスト装置1は、メモリカードアダプタ2に接続されたメモリカード5を仮想ドライブとして認識し、記録再生先のセクタの論理アドレスと、書き込むべきセクタ数(書き込みサイズ)とを定めてATAコマンドを発行する。ここでいう”セクタ”は、メモリカード5上の記録ブロックと1対1で対応している。ATAコマンドは本来ディスク媒体を対象としたコマンドである。そのため、書込先等を”セクタ”を用いて表現している。
【0027】
2−3.メモリカードアダプタの動作
2−3−1.メモリカードアダプタの構成
メモリカードアダプタの動作説明の前にまずメモリカードアダプタの構成について説明する。メモリカードアダプタ2の構成について、図2を参照しながら、さらに詳細に説明する。図2は、実施の形態に係るメモリカードアダプタの構成を示す図である。
【0028】
図2に示すように、外部インターフェイス部3は、PCIターゲット部3aと、PCIバスマスター部3bとを有する。外部インターフェイス部3は、カードバス規格に則ってホスト装置1とデータを送受信する。PCIターゲット部3aは、ホスト装置1とのコマンドの送受信を行う。PCIバスマスター部3bは、ホスト装置1とのデータの送受信を行う。PCIバスマスター部3bは、ホスト装置1とのデータの送受信の際、バスマスターとなって、ホスト装置1とDMA転送を行う。データの送受信においてDMA転送を行うのは転送速度を向上させるためである。
【0029】
メモリカードコントローラ4は、コマンド解析部4aと、コマンド格納部4bと、データメモリ4cと、コマンド制御部4dと、フロー制御部4gと、S/P(Serial/Parallel)変換部4hとを有する。コマンド解析部4aは、PCIターゲット部3aから伝送されるコマンドを解析する。コマンド格納部4bは、今回転送されたコマンドの直前に転送されたコマンドを格納する。データメモリ4cは、メモリカード5と、外部インターフェイス部3のPCIバスマスター部3bとの間でデータを転送する際にバッファーとして機能するバッファーメモリである。コマンド制御部4dは、連続性照合部4eとコマンド開始終了制御部4fを有する。連続性照合部4eは、今回転送されたコマンドが示す論理アドレスと、その直前に転送されたコマンドが示す論理アドレスの連続性を照合(判定)する。コマンド開始終了制御部4fは、連続性照合部4eの照合結果に基づき、フロー制御部4gに対してデータ転送に関する指示を出す。フロー制御部4gは、メモリカード5からのデータ転送許可要求パケットに対して、転送可能パケット、転送準備中パケットや強制終了パケットなどの応答を返す。S/P変換部4hは、フロー制御にかかる制御信号やユーザデータ等をメモリカード5に転送するためパケット化するシリアル化処理を行う。また、S/P変換部4hは、メモリカード5からメモリカードコントローラ4に転送されたシリアルデータから、フロー制御にかかる制御信号やユーザデータ等を抽出するパラレル化処理を実施する。
【0030】
2−3−2.フロー制御
フロー制御について、図3を参照しながら説明する。図3はメモリカードコントローラによるフロー制御の説明図である。フロー制御を実施するにあたり、フロー制御の処理単位は、メモリカード5およびメモリカードコントローラ4で使用可能なメモリ容量を参照して決定される。例えば、フロー制御の処理単位が1KBであれば、1KBの転送を実施する毎に、フロー制御関連パケットが送受信され、また、メモリカード5からの転送サイズが16KBであれば、16回分のフロー制御が実施される。
【0031】
まず、メモリカードコントローラ4はメモリカード5にリードコマンドを発行する。
【0032】
メモリカード5は、リードコマンドを受けると、リードの準備をおこない、転送単位(例えば1KB)のデータが転送可能となると、転送許可要求パケットをメモリカードコントローラ4に発行する。転送許可要求パケットに対して、メモリカードコントローラ4は以下の3パターンで応答する。
(パターン1) 転送可能パケットで応答(図3(a))
(パターン2) 転送準備中パケットで応答(図3(b))
(パターン3) 強制終了パケットで応答(図3(c))
なお、パターン2の転送準備中パケットでの応答は、応答しないことで転送準備中としてもよい。また、パターン3の強制終了パケットで応答された場合は、フロー制御のみならず、現転送にかかるメモリカードコマンドによる処理を強制終了してもよい。
【0033】
このようにフロー制御を実施し、1KBなどの予め定められた単位で転送を制御することで、メモリカード5及びメモリカードコントローラ4のデータメモリ4c等のメモリの容量の制約や転送速度の揺れに対応することができる。
【0034】
2−3−3.動作
以上のように構成されたメモリカードアダプタ2の動作について、図4及び図5を参照しながら詳細に説明する。図4はメモリカードコントローラ4の処理フローを示し、図5はメモリカードコントローラ4の主要部のタイミングチャートを示す。
【0035】
図4及び図5において、A[k](kは自然数)はk番目のATAコマンドを示し、DAT[k−m]は、k番目のATAコマンドにかかるデータ転送において、m番目のデータパケットであることを示す(mは0からカウント開始)。S[k]は、k番目のATAコマンドに対応するメモリカード5へのコマンドを示す。
【0036】
また、図5(a)は、ホスト装置1から発行されるATAコマンドのタイミングを示し、同図(b)はATAコマンドに対応した転送が終了したことを示す転送終了割り込みのタイミングを示す。同図(c)はメモリカードコマンドの発行タイミングを示す。同図(d1)はメモリカード5からの転送許可要求パケットに対するメモリカードコントローラ4の応答のタイミングを示す。同図(d2)はメモリカード5からの転送許可要求のタイミングを示す。同図(e)はメモリカードの内部処理のタイミングを示す。同図(f)はデータ転送のタイミングを示す。同図(e)のメモリカードの内部処理は、論物変換テーブルを用いて読み出し先の論理アドレスから物理アドレスを参照する処理を示す。
【0037】
図4及び図5において、A[1]は8セクタ分のデータのリード転送を要求するATAコマンドであり、A[2]およびA[3]は4セクタ分のデータのリード転送を要求するATAコマンドであり、転送にかかるフロー制御は4セクタ単位で実施するものとする。また、A[1]のリード転送コマンドにおける転送終了セクタ番号とA[2]のリード転送コマンドにおける転送開始セクタ番号(転送開始アドレス)は連続であるが、A[2]のリード転送コマンドにおける転送終了セクタ番号(転送終了アドレス)とA[3]のリード転送コマンドにおける転送開始セクタ番号は不連続であるものとする。
【0038】
ホスト装置1より発行された、リード命令と先頭論理アドレス及び読み出しセクタ数(転送セクタ数)によって構成されるATAコマンドA[1]を受信すると、コマンド解析部4aは、A[1]を解析し、リードコマンドであると判断する(S31)。コマンド制御部4dは、コマンド解析部4aの解析結果に基づいて、メモリカード5に対して、メモリカードコマンド(S[1]、転送コマンド)を発行する(S32)。メモリカードコマンドS[1]は、リード命令と先頭論理アドレスと転送セクタ数によって構成される。コマンド制御部4dは、S[1]を生成する際、S[1]の転送セクタ数を十分に大きい値、例えば無限長に変更する(S32)。A[1]はコマンド格納部4bに格納される。S[1]を受信したメモリカード5は、論物変換テーブルの参照等の内部処理終了後に、インターフェイスD1(図2参照)を介して、メモリカードコントローラ4に転送許可要求パケット(C1)を発行する。
【0039】
データの読み出し制御(S33)は、フロー制御部4gで行われる。まず、メモリカード5から転送された転送許可要求パケット(C1)に対し、メモリカードコントローラ4においてデータの転送が可能であれば、フロー制御部4gは、インターフェイスD0(図2参照)を介して転送可能パケット(B1)を発行する(S33)。転送可能パケット(B1)を受信したメモリカード5は、A[1]において指定された8セクタ分のデータのうち、まず、4セクタ分(所定サイズ)のデータDAT[1−0]を、メモリカードアダプタ2を介してホスト装置1に転送する。メモリカード5は、4セクタ分のデータDAT[1−0]を転送後、残りの4セクタ分のデータを転送するために、転送許可要求パケット(C2)を発行する。メモリカードコントローラ4がメモリカード5に対して転送可能パケット(B2)で応答すれば(S34)、メモリカード5から4セクタ分のデータDAT[1−1]が、メモリカードアダプタ2を介してホスト装置1に転送される。そして、DAT[1−1]のデータがホスト装置1に転送されると、メモリカードアダプタ2は割り込み(E1)をアサートし(S35)、A[1]にかかるデータ転送シーケンスを終了する。
【0040】
この時点で、ホスト装置1から送信されるコマンドA[1]における転送サイズは8セクタであるのに対して、メモリカードコントローラ4が発行するコマンドS[1]の転送サイズは無限長となっている。したがって、ホスト装置1とメモリカードアダプタ2間におけるA[1]にかかる転送シーケンスは終了しているが、メモリカードアダプタ2とメモリカード5間におけるS[1]にかかる転送シーケンスは終了していない。このため、メモリカード5は、DAT[1−1]の転送後、転送許可要求パケット(C3)を発行する。メモリカードアダプタ2は、ホスト装置1から指示がないため、転送許可要求パケット(C3)に対して転送準備中パケット(Busy)(B3)で応答する(S36)。本実施例では転送準備中パケット(B3)で応答しているが、応答しなくても良いし、定義されていればNOP(No Operation)パケットで応答してもよい。これらの応答手法はプロトコル次第である。
【0041】
割り込み(E1)を受信すると、ホスト装置1は、A[2]をメモリカードアダプタ2に発行する。A[2]はコマンド解析部4aでリードコマンドと判定され(S37)、連続性照合部4eに入力される。連続性照合部4eは、コマンド格納部4bに格納されているA[1]が指定する論理アドレスと、ホスト装置1から受信したA[2]が指定する論理アドレスの連続性を照合(判定)する(S37)。具体的には、A[2]が指定する先頭論理アドレスが、A[1]が指定する先頭論理アドレスと転送セクタ数の和に等しいかどうかを照合(判定)する。つまり、A[1]に関する最後のセクタの論理アドレスと、A[2]に関する最初のセクタの論理アドレスが連続性を有しているかを判定する。本実施形態では、前述のように、A[1]に関する最後のセクタの論理アドレスと、A[2]に関する最初のセクタの論理アドレスが連続性を有していることを前提としている。そのため、コマンド開始終了制御部4fは、フロー制御部4gに転送を継続することを指示する。転送継続を指示されたフロー制御部4gは、メモリカード5から発行されていた転送許可要求パケット(C3)に対して、転送可能パケット(Ready)(B4)で応答する(S38)。これにより、転送が継続される。
【0042】
この段階で、コマンド格納部4bに格納されていたA[1]は廃棄され、代わりにA[2]が格納される。転送可能パケット(B4)を受信したメモリカード5は、A[2]に対応した4セクタ分のデータDAT[2]を読み出して、メモリカードアダプタ2を介してホスト装置1に転送する。4セクタ分のDAT[2]の転送が終了すると、メモリカードアダプタ2はホスト装置1に割り込み(E2)をアサートする(S39)。
【0043】
この時点で、ホスト装置1から送信されるコマンドA[2]における転送サイズは4セクタであるのに対して、メモリカードコントローラ4が発行するコマンドS[1]の転送サイズは無限長となっている。よって、ホスト装置1とメモリカードアダプタ2間におけるA[1]にかかる転送シーケンスは終了しているが、メモリカードアダプタ2とメモリカード5間におけるS[1]にかかる転送シーケンスは終了していない。このため、メモリカード5は、転送許可要求パケット(C4)を発行する。メモリカードアダプタ2は、ホスト装置1から指示がないため、転送許可要求パケット(C4)に対して転送準備中パケット(Busy)(B5)で応答する(S40)。
【0044】
割り込み(E2)を受信した後、データ転送の必要性が生じると、ホスト装置1は、A[3]をメモリカードアダプタ2に発行する。A[3]はコマンド解析部4aでリードコマンドと判定され(S41)、連続性照合部4eに入力される。連続性照合部4eは、コマンド格納部4bにより参照されるA[2]が指定する論理アドレスと、ホスト装置1から受理したA[3]が指定する論理アドレスの連続性を照合(判定)する(S41)。具体的には、A[3]が指定する先頭論理アドレスが、A[2]が指定する先頭論理アドレスと転送セクタ数の和に等しいかどうかを照合(判定)する。本実施形態では、前述のように、A[2]に関する最後のセクタの論理アドレスと、A[3]に関する最初のセクタの論理アドレスが連続性を有していないことを前提としている。よって、コマンド開始終了制御部4fは、メモリカード5から発行済みの転送許可要求パケット(C4)に対し、強制終了(Abort)パケット(B6)の発行をフロー制御部4gに対して指示する。また、コマンド開始終了制御部4fは、S[1]の無限長転送を強制終了するため、強制終了のメモリカードコマンドD[1]を発行する(S41)。
【0045】
強制終了のメモリカードコマンドD[1]を発行した後(終了処理を行った後)、メモリカードアダプタ2は、A[3]に対応するメモリカードコマンドS[3]をメモリカード5に発行する(S42)。S[3]における転送サイズは、S[1]同様に、コマンド制御部4dにより無限長の転送サイズに変換される(S42)。この段階で、コマンド格納部4bに格納されていたA[2]は廃棄され、代わりにA[3]が格納される。S[3]を受信したメモリカード5は、論物変換テーブルの参照等の内部処理終了後、データDAT[3]の転送を行うために、転送許可要求パケット(C5)をメモリカード5に発行する。
【0046】
転送許可要求パケット(C5)を受信したメモリカードアダプタ2は、メモリカード5に対して転送可能パケット(B7)を発行する(S43)。転送可能パケット(B7)を受信したメモリカード5は、データDAT[3]を読み出して、メモリカードアダプタ2を介してホスト装置1に転送する。転送セクタ数分のデータDAT[3]の転送が終了すると、メモリカードアダプタ2はホスト装置1に割り込み(E3)をアサートする(S44)。
【0047】
ここで、ホスト装置1から送信されるコマンドA[3]における転送サイズは4セクタであるのに対して、メモリカードコントローラ4が発行するコマンドS[3]の転送サイズは無限長となっている。よって、ホスト装置1とメモリカードアダプタ2間におけるA[3]にかかる転送シーケンスは終了しているが、メモリカードアダプタ2とメモリカード5間におけるS[3]にかかる転送シーケンスは終了していない。このため、メモリカード5は、転送許可要求パケット(C6)を発行する(S45)。メモリカードアダプタ2は、ホスト装置1から指示がないため、転送許可要求パケット(C6)に対して転送準備中パケット(Busy)(B8)で応答する(S45)。
【0048】
A[3]の後にホスト装置1からコマンドが発行されないで所定時間が経過すると、メモリカードアダプタ2は、タイムアウト処理に入り、メモリカード5からの転送許可要求パケット(C6)に対して強制終了パケット(B9)を発行して、メモリカードコマンドに対する終了処理を実施するとともに、フロー制御(S45)を終了する。なお、メモリカードコマンドに対応する終了処理はフロー制御の強制終了パケット(B9)で実施するのではなく、メモリカードコマンドで実施してもよい。
【0049】
以上説明したように、本実施の形態ではメモリカードコントローラ4において、A[2]に対応する、メモリカード5への指示コマンドの発行が不要となる。また、これに伴って、メモリカード5において、論物変換テーブルの参照処理等の内部処理が不要となる。
【0050】
メモリカードコントローラ4において、ATAコマンドに対応して発行するメモリカード5への指示コマンドの生成時間(コマンド変換処理)とメモリカード5における論物変換テーブルの参照処理等の内部処理時間の合計時間をu、セクタ当たりのデータ転送時間をtとすると、A[1]の転送時間は(u+8*t)であるのに対して、A[2]の転送時間は4*tとなる。よって、A[1]〜A[2]の転送にかかる時間を以下のように短縮することができる。
【0051】
例えば、u=4*tとした場合
総転送時間は、4*t+8*t+4*t=16*tとなる。
【0052】
これに対し、A[2]に対応して従来のようにメモリカードコマンドS[2]を発行した場合、
総転送時間は、(4*t+8*t)+(4*t+4*t)=20*tとなる。
よって、本実施形態の転送速度と従来の転送速度を比較すると、その比は、20*t/16*tとなり、転送速度が25%向上する。
【0053】
さらに、(現コマンドの先頭リードセクタ番号)=(前コマンドの先頭リードセクタ番号+前コマンドの転送セクタ数)を満たす状態が連続しているほど転送速度の向上効果が大きくなる。例えば4セクタのリードコマンドが8個連続している場合、本実施形態の転送速度と従来の転送速度の比は、8*(4*t+4*t)/(4*t+8*4*t)=64/36となり、転送速度が78%向上する。
【0054】
2−3−4.メモリカードコントローラの動作
次に、メモリカードコントローラ4の動作について、図6のフローチャートを参照して説明する。メモリカードコントローラ4は専用ハードウェアで実現できるが、コンピュータ読み取り可能な言語で記述されたプログラムと、マイクロプロセッサとで構成してもよい。
【0055】
コマンド解析部4aは、ATAコマンドがホスト装置1より発行されるのを待っている(ステップS1)。コマンド解析部4aは、ホスト装置1からコマンドを受信すると(ステップS1でYes)、ATAコマンドの種類、開始アドレスX[I]及びセクタ数Y[I]を解読し(ステップS2)、次にメモリカード5の状態を検出する(ステップS3)。
【0056】
ステップS3で転送終了状態(No:転送準備中でない状態)(ステップS3でNo)の場合は、受信したコマンドがリードコマンドか否か判定する(ステップS4)。なお、リードコマンドでないコマンドとは、メモリカード5からのデータのリードを生じさせないコマンドであり、例えば、ホスト装置1がメモリカードアダプタ2の属性等を取得するためのコマンドつまりメモリカード5へのアクセスが不要なコマンドや、ライトコマンドである。受信したコマンドがリードコマンドであれば(ステップS4でYes)、転送サイズを無限長に変換したリードコマンドをメモリカード5に発行し(ステップS5)、転送セクタ数がY[I]に到達するまでデータを転送する(ステップS9)。転送セクタ数がY[I]に到達すると(ステップS9でYes)、メモリカード5の転送許可要求に対して、転送準備中として応答することをフロー制御部4gに指示するとともに、X[I]+Y[I]をX[J]に代入し(ステップS14)、ホスト装置1に対して転送終了割り込みを発生する(ステップS15)。他方、受信したコマンドがリードコマンドでない場合は(ステップS4でNo)、メモリカード5に対してメモリカード5用のプロトコルでコマンドを発行し(ステップS6)、このコマンドに対応する処理が終了すると(ステップS7)、ホスト装置1に転送終了割り込みを発生させる(ステップS8)。
【0057】
さらに、ステップS3で、フロー制御が転送準備中である場合は(Yes)、受信したコマンドがリードコマンドでかつ(X[I]=X[J])を満たすか判定する(ステップS10)。受理したコマンドがリードコマンドでかつ(X[I]=X[J])の条件を満たす場合は(ステップS10でYes)、転送許可のフロー制御を行うことでデータ転送を再開する(ステップS12)。転送セクタ数がY[I]に到達するまでの間はデータ転送を継続し(ステップS13でNo)、転送セクタ数がY[I]に到達すると(ステップS13でYes)、転送準備中のフロー制御を実施するとともに、X[I]+Y[I]をX[J]に代入し(ステップS14)、ホスト装置1に転送終了割り込みを発生させる(ステップS15)。他方、受信したコマンドがリードコマンドでかつ(X[I]=X[J])の条件を満たさない場合は(ステップS10でNo)、転送強制終了のフロー制御を実施した後(ステップS11)、ステップS4の判定を実行し、以後、この判定結果に従った処理を行う。
【0058】
なお、ステップS8において割り込みを発生させた場合(転送終了状態(状態A))と、ステップS15において割り込みを発生させた場合(転送準備中状態(状態B))とでは、異なるフロー制御が行われる。具体的には、ステップS1においてコマンドが受信されない場合(No)、現在のフロー制御状態が状態Aか状態Bかが判定される(ステップS18)。そして、判定結果が状態Aのときは、ステップ1を実行する。一方、判定結果が状態Bのときは、ステップS16を実行する。ステップS16では、ホスト装置1に割り込みを発生してから所定時間の間、ホスト装置1から次のコマンドが発行されていないか否かが判定される。次のコマンドが所定時間の間発行されていない場合(ステップS16でYes)、メモリカードコントローラ4はタイムアウトと判定し、転送強制終了のフロー制御を実施する(ステップS17)。一方、所定時間が経過していないときは、ステップ1を実行する。
【0059】
このように、メモリカード5に対するフロー制御の状態が転送準備中で、ホスト装置1から後続するコマンドがない場合は、タイムアウトを検出後、メモリカードアダプタ2から強制終了パケットを発行することにより、フロー制御の転送許可要求パケット並びにメモリカード5における現コマンドに対応する処理を終了させることができる。これにより、メモリカード5の安定した動作が可能となる。
【0060】
図6のフローの例では、フロー制御における転送準備中状態(ステップS3でYes)の後、強制終了パケットを発行(ステップS11)、または転送許可パケットを発行(ステップS12)する。しかしながら、コマンドをメモリカード5へのアクセスが発生するコマンドと発生しないコマンドに分類し、メモリカード5へのアクセスが発生しないコマンドの場合は、フロー制御における転送準備中状態のまま遷移してもよい。
【0061】
これにより、複数の読み出しコマンドが発行される合間に、ホスト装置1からIDENTIFY−DEVICEのようなコマンドが発行された場合も、転送準備中状態を保持できるため、次の読み出しコマンドのオーバーヘッドを除去することが可能である。
【0062】
なお、ステップS10及びステップS14で示したX[J]とX[I]の比較処理及びX[J]の作成処理は、マイコン処理遅延の影響が発生しないデータ転送中に実施したほうが、転送速度の点で有利である。
【0063】
3.まとめ
本実施形態のメモリカードコントローラ4(メモリカードアダプタ2)は、リードコマンドを発行してデータ転送を要求するホスト装置1と、メモリカード5との間のデータ転送を制御する。メモリカードコントローラ4(メモリカードアダプタ2)は、ホスト装置1からデータ転送に関する転送サイズ及び転送開始アドレスを指定したリードコマンドを受け付けるコマンド解析部4aと、メモリカード5との間のデータ転送を、メモリカード5からの転送許可要求に対する応答によって制御するフロー制御部4gと、コマンド解析部4aを介してホスト装置1から連続して受け付けた2つのリードコマンドに対して、前に受け付けた第1リードコマンドによるデータ転送の終了アドレスと、次に受け付けたリードコマンドが指定するテータ転送開始アドレスの連続性を判定する連続性照合部4eと、リードコマンドに応じてメモリカード5に対して転送コマンドを発行するコマンド開始終了制御部4fと、を備える。コマンド開始終了制御部4fは、コマンド解析部4aが第1リードコマンドを受け付けたときに、第1リードコマンドが指定する転送開始アドレスと、第1リードコマンドが指定する転送サイズよりも大きな所定の転送サイズとを指定して転送コマンドをメモリカード5に発行して、データの転送を開始させるとともに、前記転送コマンドに応答してメモリカード5から転送されたデータのサイズが、第1リードコマンドにより指定された転送サイズに達したときに、メモリカード5からの転送許可要求に対して準備中を示す応答を送信するようにフロー制御部4gを制御して、メモリカード5の転送動作を一時停止させ、メモリカード5の転送動作を一時停止させた状態でコマンド解析部4aが第2リードコマンドを受け付けたときに、連続性照合部4eにより第2リードコマンドが示す転送開始アドレスが、第1リードコマンドにおる終了アドレスと連続性を有すると判定されたときは、メモリカード5からの転送許可要求に対して転送可能を示す応答を送信するようフロー制御部4gを制御してメモリカード5の転送動作を再開させる。
【0064】
このような構成によれば、ホスト装置1からのリードコマンドが連続して発行された場合であっても、これらのリードコマンドが指定するアドレスが連続性を有しているときには、メモリカード5へリードコマンドが発行されるのは、ホスト装置1から最初のリードコマンドが発行されたときのみとなる。そのため、オーバーヘッド発生による読み出し処理の遅延を防止することができる。
【0065】
また、コマンド開始終了制御部4fは、メモリカード5の転送動作が一時停止状態にある場合において、コマンド解析部4aが第2のリードコマンドを受け付けた後、所定時間の間、ホスト装置1から第3のリードコマンドを受け付けないときは、メモリカード5からの転送許可要求に対して強制終了を示す応答を送信するようにフロー制御部4gを制御する。
【0066】
このような構成により、フロー制御の転送許可要求並びにメモリカード5の現コマンドを終了させることができるので、メモリカード5の安定した動作が可能となる。
【0067】
また、コマンド開始終了制御部4fは、第1のリードコマンドによるメモリカード5からのデータ読み出しが終了すると、メモリカード5からの転送許可要求に対して転送準備中を示す応答を送信するようにフロー制御部4gを制御し、メモリカード5からの読み出し動作を一時停止してホスト装置1に読み出し終了を通知し、第1のリードコマンドの受信後にホスト装置1から受信したコマンドがメモリカード5へのアクセスを実施しないコマンドであるときは、メモリカード5からの読み出しを一時停止した状態で維持する。
【0068】
このような構成により、次のリードコマンドが発行されたときに、当該リードコマンドによるコマンドオーバーヘッドの発生を防止することができる。
【0069】
また、コマンド開始終了制御部4fは、第1コマンドによるメモリカード5からのデータ読み出しが終了すると、メモリカード5からの転送許可要求に対して転送準備中を示す応答を送信するようにフロー制御部4gを制御し、メモリカード5からの読み出し動作を一時停止してホスト装置1に読み出し終了を通知し、第1のリードコマンドの受信後にホスト装置1から受信したコマンドがリードコマンドでない場合、または第1のリードコマンドの受信後にホスト装置1から受信した第2のリードコマンドの読み出し開始アドレスが第1のリードコマンドの読み出し終了アドレスと連続していない場合、フロー制御部4gに対してメモリカード5からの転送許可要求に対して強制終了を示す応答を送信するように前記フロー制御部4gを制御し、第1のリードコマンドによる処理に対する終了処理を行い、メモリカード5に対して第2のリードコマンドに対応するアクセスを再開する。
【0070】
このような構成により、第2のリードコマンドが読み出しコマンドでない場合における当該コマンドによる処理を確実に行うことができる。また、第2のリードコマンドの読み出し開始アドレスが第1のリードコマンドの読み出し終了アドレスと連続していない場合は、論物変換テーブルを参照する必要が生じるので、それに対応した処理を行うことができる。
【0071】
(その他の実施の形態)
本実施の形態ではメモリカードがSDカードである場合について説明したが、本発明は、これに限らず、例えば、リードコマンドによる読み出し時にオーバーヘッドが発生する性質を有する記録媒体に広く適用可能である。例えば、コンパクトフラッシュ(登録商標)カード、スマートメディア、メモリスティック、マルチメディアカードに適用可能である。
【0072】
また、本実施の形態では、メモリカードアダプタ2に本発明を適用した場合について説明したが、本発明は、データを格納する少なくとも1個のメモリカードを内蔵したメモリカードドライブに対しても適用可能である。
【0073】
また、本実施の形態のメモリカードアダプタ2では、ホスト装置1から発行されたリードコマンドが指定する転送サイズを、無限長サイズに変換してメモリカード5に発行するが、変換後の転送サイズはこれに限定されない。例えば、メモリカード5において設定可能な最大転送サイズであってもよい。また、所望の効果が得られるならば、変換後の転送サイズは最大転送サイズに限らず、比較的大きなブロックのサイズに設定してもよい。
【0074】
また、本実施の形態のメモリカードアダプタ2では、メモリカードコントローラ4と、外部インターフェイス部3とが分離した構成としたが、これらを統合した構成としてもよい。
【産業上の利用可能性】
【0075】
本実施の形態に係るメモリカードコントローラ、メモリカードアダプタ、メモリカードドライブは、メモリカードへの書き込み・読み出し時における転送速度を向上させることができる。したがって、例えば、動画データの記録再生という用途にメモリカードを用いる場合に好適に利用可能である。そのため、本発明に係るメモリカードコントローラ及びメモリカードアダプタ、メモリカードドライブは、映像機器の製造に関連する映像機器産業等において広く利用される可能性がある。
【符号の説明】
【0076】
1 ホスト装置
2 メモリカードアダプタ
3 外部インターフェイス部
4 メモリカードコントローラ
5 メモリカード
4a コマンド解析部
4b コマンド格納部
4d コマンド制御部
4e 連続性照合部
4f コマンド開始終了制御部
4g フロー制御部

【特許請求の範囲】
【請求項1】
リードコマンドを発行してデータ転送を要求するホスト装置と、メモリカードとの間のデータ転送を制御するメモリカードコントローラであって、
前記ホスト装置から、データ転送に関する転送サイズ及び転送開始アドレスを指定したリードコマンドを受け付ける受付部と、
前記メモリカードとの間のデータ転送を、前記メモリカードからの転送許可要求に対する応答によって制御するフロー制御部と、
前記受付部を介して前記ホスト装置から連続して受け付けた2つのリードコマンドに対して、前に受け付けたリードコマンドによるデータ転送の終了アドレスと、次に受け付けたリードコマンドが指定する転送開始アドレスの連続性を判定する連続性照合部と、
前記リードコマンドに応じて前記メモリカードに対して転送コマンドを発行するコマンド制御部と、を備え、
前記コマンド制御部は、
前記受付部が第1リードコマンドを受け付けたときに、前記第1リードコマンドが指定する転送開始アドレスと、前記第1リードコマンドが指定する転送サイズよりも大きな所定の転送サイズとを指定して前記転送コマンドを前記メモリカードに発行して、前記メモリカードからデータの転送を開始させるとともに、
前記転送コマンドに応答して前記メモリカードから前記ホスト装置に転送されたデータのサイズが、前記第1リードコマンドにより指定された転送サイズに達したときに、前記メモリカードからの転送許可要求に対して転送準備中を示す応答を送信するように前記フロー制御部を制御して、前記メモリカードの転送動作を一時停止させ、
前記メモリカードの転送動作を一時停止させた状態で前記受付部が第2リードコマンドを受け付けたときに、前記連続性照合部により前記第2リードコマンドが示す転送開始アドレスが前記第1リードコマンドによる終了アドレスと連続性を有すると判定されたときは、前記メモリカードからの転送許可要求に対して転送可能を示す応答を送信するよう前記フロー制御部を制御して、前記メモリカードの転送動作を再開させる、
メモリカードコントローラ。
【請求項2】
前記所定の転送サイズは無限長である、
請求項1に記載のメモリカードコントローラ。
【請求項3】
前記所定の転送サイズは、前記メモリカードにおける設定可能なデータ転送サイズの最大値である、
請求項1に記載のメモリカードコントローラ。
【請求項4】
前記コマンド制御部は、
前記メモリカードの転送動作が一時停止状態にある場合において、前記受付部が前記第2リードコマンドを受け付けた後、所定時間の間、前記ホスト装置から第3リードコマンドを受け付けないときは、前記メモリカードからの転送許可要求に対して強制終了を示す応答を送信するように前記フロー制御部を制御する、
請求項1から請求項3の何れかに記載のメモリカードコントローラ。
【請求項5】
前記コマンド制御部は、
前記第1リードコマンドによる前記メモリカードからのデータ読み出しが終了すると、前記メモリカードからの転送許可要求に対して転送準備中を示す応答を送信するように前記フロー制御部を制御し、前記メモリカードからの読み出し動作を一時停止して前記ホスト装置に読み出し終了を通知し、
前記第1リードコマンドの受信後に前記ホスト装置から受信したコマンドが前記メモリカードへのアクセスを生じさせないコマンドであるときは、前記メモリカードからの読み出しを一時停止した状態で維持する、
請求項1から請求項4の何れかに記載のメモリカードコントローラ。
【請求項6】
前記コマンド制御部は、
前記第1リードコマンドによる前記メモリカードからのデータ読み出しが終了すると、前記メモリカードからの転送許可要求に対して転送準備中を示す応答を送信させるように前記フロー制御部を制御し、前記メモリカードからの読み出し動作を一時停止して前記ホスト装置に読み出し終了を通知し、
前記第1リードコマンドの受信後に前記ホスト装置から受信したコマンドがリードコマンドでない場合、または前記第1のリードコマンドの受信後に前記ホスト装置から受信した前記第2リードコマンドの読み出し開始アドレスが前記第1リードコマンドの読み出し終了アドレスと連続していない場合、前記メモリカードからの転送許可要求に対して強制終了を示す応答を送信するように前記フロー制御部を制御し、前記第1リードコマンドによる処理に対する終了処理を行い、前記前記メモリカードに対して前記第2リードコマンドに対応するアクセスを再開する、
請求項1から請求項5の何れかに記載のメモリカードコントローラ。
【請求項7】
ホスト装置とメモリカードの間のデータ転送を制御するメモリカードアダプタであって、
前記メモリカードを装着可能なカードスロットと、
前記メモリカードからのデータの転送を制御する、請求項1から請求項6の何れかに記載のメモリカードコントローラと、
前記ホスト装置に対するデータ及びコマンドの送受信を行う外部インターフェイス部と、
を備える、
メモリカードアダプタ。
【請求項8】
ホスト装置からの要求にしたがいデータの転送を行うメモリカードドライブであって、
データを格納するメモリカードと、
前記メモリカードからのデータの転送を制御する、請求項1から請求項6の何れかに記載のメモリカードコントローラと、
前記ホスト装置に対するデータ及びコマンドの送受信を行う外部インターフェイス部と、
を備える、
メモリカードドライブ。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate


【公開番号】特開2013−30145(P2013−30145A)
【公開日】平成25年2月7日(2013.2.7)
【国際特許分類】
【出願番号】特願2011−244448(P2011−244448)
【出願日】平成23年11月8日(2011.11.8)
【出願人】(000005821)パナソニック株式会社 (73,050)
【Fターム(参考)】