(57)【特許請求の範囲】
【請求項１】
ホストドライバ及び第１乃至第４ディスクリプタを記憶するシステムメモリと、
前記システムメモリにアクセスするＣＰＵと、
ホストコントローラとを備え、
前記ホストコントローラは、
デバイスへのコマンド発行を制御するレジスタセットと、
前記システムメモリにアクセスするダイレクトメモリアクセス（ＤＭＡ）回路とを含み、
前記ホストコントローラは、
前記システムメモリと前記デバイスとの間のデータ転送を制御し、前記システムメモリに記憶された、複数の前記第２ディスクリプタを示す複数のポインタの集まりを含む前記第１ディスクリプタをロードし、
複数の前記第３ディスクリプタの各々は、複数の前記第２ディスクリプタを構成し、前記デバイスへコマンドを発行するのに必要な情報としてのコマンド番号、コマンド動作モード及び引数、またはデータ転送に必要な情報としてのブロック長及びブロック数を含み、
複数の前記第４ディスクリプタの各々は、複数の前記第２ディスクリプタを構成し、前記第３ディスクリプタのコマンドがデータ転送コマンドの場合に必要となるディスクリプタで、前記システムメモリ内に配置された複数のデータのアドレスと大きさとを示す情報を含み、
前記ＤＭＡ回路は、
前記第３ディスクリプタの内容を前記レジスタセットに設定し、前記デバイスにコマンドを発行し（１）、
前記第３ディスクリプタのコマンドがライトコマンドの場合、それに対応する第４ディスクリプタにしたがって前記システムメモリからデータを読み込み、読み込んだデータを前記第３ディスクリプタの設定にしたがって前記デバイスに転送し、前記第３ディスクリプタのコマンドがリードコマンドの場合、前記第３ディスクリプタの設定にしたがって前記デバイスからデータを読み込み、読み込んだデータを前記第３ディスクリプタに対応する第４ディスクリプタにしたがって前記システムメモリに転送し（２）、
前記（１）と（２）を繰り返し、前記第１ディスクリプタ内の複数のポインタによって示された前記第３及び第４ディスクリプタの全ての実行を完了させ（３）、
前記ホストコントローラは、
前記第１ディスクリプタ内の複数のポインタを全てアクセスした場合、データ転送が終了したことを示す割り込み信号を発生し、
前記システムメモリはホストドライバを保持し、前記ホストドライバは、転送情報を含むディスクリプタを作成し、前記ＤＭＡ回路の起動のみを指示する機能を有し、割り込みによって、ＤＭＡデータ転送の終了、またはデータ転送エラーの検出を認識することを特徴とするホストシステム。
【請求項２】
前記ＤＭＡ回路は、
前記システムメモリのアドレスを制御し、前記第１乃至第４ディスクリプタの各々を読み出すシステムアドレス制御部と、
前記システムメモリから読み出された前記第３ディスクリプタの内容を前記ホストコントローラの前記レジスタセットに設定し、前記デバイスへコマンドを発行するコマンド制御部と、
前記システムメモリ及び前記デバイスから読み出したデータを記憶するデータバッファと、
を備えることを特徴とする請求項１に記載のホストシステム。
【請求項３】
前記第１乃至第４ディスクリプタの各々は、ディスクリプタの種類を識別するための情報、及びディスクリプタの終了位置を示す情報を含む属性情報を有することを特徴とする請求項１に記載のホストシステム。
【請求項４】
デバイスへのコマンド発行を制御するレジスタセットと、
システムメモリにアクセスするダイレクトメモリアクセス（ＤＭＡ）回路とを備え、
ホストコントローラは、前記システムメモリと前記デバイスとの間のデータ転送を制御し、
前記ホストコントローラは、前記システムメモリに記憶された、複数の第２ディスクリプタを示す複数のポインタの集まりを含む第１ディスクリプタをロードし、
複数の第３ディスクリプタの各々は、複数の前記第２ディスクリプタを構成し、前記デバイスへコマンドを発行するのに必要な情報としてのコマンド番号、コマンド動作モード及び引数、またはデータ転送に必要な情報としてのブロック長及びブロック数を含み、
複数の第４ディスクリプタの各々は、複数の前記第２ディスクリプタを構成し、前記システムメモリ内に配置された複数のデータのアドレスと大きさとを示す情報を含み、
前記ＤＭＡ回路は、
前記第３ディスクリプタの内容を前記レジスタセットに設定し、前記デバイスにコマンドを発行し（１）、
前記第３ディスクリプタのコマンドがライトコマンドの場合、それに対応する第４ディスクリプタにしたがって前記システムメモリからデータを読み込み、読み込んだデータを前記第３ディスクリプタの設定にしたがって前記デバイスに転送し、前記第３ディスクリプタのコマンドがリードコマンドの場合、前記第３ディスクリプタの設定にしたがって前記デバイスからデータを読み込み、読み込んだデータを前記第３ディスクリプタに対応する第４ディスクリプタにしたがって前記システムメモリに転送し（２）、
前記（１）と（２）を繰り返し、前記第１ディスクリプタ内の複数のポインタによって示された前記第３及び第４ディスクリプタの全ての実行を完了させ（３）、
前記ホストコントローラは、前記第１ディスクリプタ内の複数のポインタに全てアクセスした後、データ転送が終了したことを示す割り込み信号を発生し、
前記システムメモリはホストドライバを保持し、前記ホストドライバは、転送情報を含むディスクリプタを作成し、前記ＤＭＡ回路の起動のみを指示する機能を有し、割り込みによって、ＤＭＡデータ転送の終了、またはデータ転送エラーの検出を認識することを特徴とするホストコントローラ。
【請求項５】
前記ＤＭＡ回路は、
前記システムメモリのアドレスを制御し、前記第１乃至第４ディスクリプタの各々を読み出すシステムアドレス制御部と、
前記システムメモリから読み出された前記第３ディスクリプタの内容を前記ホストコントローラの前記レジスタセットに設定し、前記デバイスへコマンドを発行するコマンド制御部と、
前記システムメモリ及び前記デバイスから読み出したデータを記憶するデータバッファと、
を備えることを特徴とする請求項４に記載のホストコントローラ。
【請求項６】
前記第１乃至第４ディスクリプタの各々は、ディスクリプタの種類を識別するための情報、及びディスクリプタの終了位置を示す情報を含む属性情報を有することを特徴とする請求項４に記載のホストコントローラ。
【請求項７】
前記ＤＭＡ回路は、データ転送中にエラーが発生したとき、割り込み信号を発生することを特徴とする請求項４に記載のホストコントローラ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、例えばＳＤＴＭカードに適用され、ＡＤＭＡ（Advanced Direct Memory Access）を有するホストコントローラ及びメモリシステムに関する。
【背景技術】
【０００２】
近時、ＳＤカード例えばＳＤメモリカードは、ホスト機器としての携帯電話器やデジタルカメラ等に広く使用されている。このＳＤカードは、ホストコントローラを介してホスト機器に接続され、ホストコントローラにより、ホスト機器とＳＤメモリカードとの間のデータ伝送が制御されている。
【先行技術文献】
【非特許文献】
【０００３】
【非特許文献１】SD Host Controller Simplified Specification Version 2.00. Section 1.13 Advanced DMA, http://www.sdcard.org/developers/tech/host_controller/
【発明の概要】
【発明が解決しようとする課題】
【０００４】
データ転送中にホストドライバの処理が必要であった部分をＤＭＡで処理可能にすることにより、データ転送を高効率に実施することが可能なホストコントローラ及びメモリシステムを提供する。
【課題を解決するための手段】
【０００５】
実施形態のホストシステムは、ホストドライバ及び第１乃至第４ディスクリプタを記憶するシステムメモリと、前記システムメモリにアクセスするＣＰＵと、ホストコントローラとを備える。前記ホストコントローラは、デバイスへのコマンド発行を制御するレジスタセットと、前記システムメモリにアクセスするダイレクトメモリアクセス（ＤＭＡ）回路とを含む。前記ホストコントローラは、前記システムメモリと前記デバイスとの間のデータ転送を制御し、前記システムメモリ上に記憶された、複数の前記第２ディスクリプタを示す複数のポインタの集まりを含む前記第１ディスクリプタをロードする。複数の前記第３ディスクリプタの各々は、複数の前記第２ディスクリプタを構成し、前記デバイスへコマンドを発行するのに必要な情報としてのコマンド番号、コマンド動作モード及び引数、またはデータ転送に必要な情報としてのブロック長及びブロック数を含む。複数の前記第４ディスクリプタの各々は、複数の前記第２ディスクリプタを構成し、前記第３ディスクリプタのコマンドがデータ転送コマンドの場合に必要となるディスクリプタで、前記システムメモリ上に配置された複数のデータのアドレスと大きさとを示す情報を含む。前記ＤＭＡ回路は、前記第３ディスクリプタの内容を前記レジスタセットに設定し、前記デバイスにコマンドを発行し（１）、前記第３ディスクリプタのコマンドがライトコマンドの場合、それに対応する第４ディスクリプタにしたがって前記システムメモリからデータを読み込み、読み込んだデータを前記第３ディスクリプタの設定にしたがって前記デバイスに転送し、前記第３ディスクリプタのコマンドがリードコマンドの場合、前記第３ディスクリプタの設定にしたがって前記デバイスからデータを読み込み、読み込んだデータを前記第３ディスクリプタに対応する第４ディスクリプタにしたがって前記システムメモリに転送し（２）、前記（１）と（２）を繰り返し、前記第１ディスクリプタ内の複数のポインタによって示された前記第３及び第４ディスクリプタの全ての実行を完了させ（３）、前記ホストコントローラは、前記第１ディスクリプタ内の複数のポインタを全てアクセスした場合、データ転送が終了したことを示す割り込み信号を発生し、前記システムメモリはホストドライバを保持し、前記ホストドライバは、転送情報を含むディスクリプタを作成し、前記ＤＭＡ回路の起動のみを指示する機能を有し、割り込みによって、ＤＭＡデータ転送の終了、またはデータ転送エラーの検出を認識する。
【図面の簡単な説明】
【０００６】
【図１】実施形態に係るメモリシステムを概略的に示す構成図。
【図２】システムメモリとメモリカードのメモリマップを概略的に示す図。
【図３】実施形態に係るディスクリプタの構造を示す図。
【図４】図１に示すＡＤＭＡを概略的に示す構成図。
【図５】ＡＤＭＡの動作を示すフローチャート。
【発明を実施するための形態】
【０００７】
ホスト機器に設けられたシステムメモリは、ページングにより管理されているため、システムメモリ上のデータはページ単位で断片的に管理されている。
【０００８】
メモリカードに対するデータのリード／ライトを効率良く行うため、ホストコントローラはＤＭＡを有し、ＤＭＡはページ単位で管理されたデータ転送を可能としている。すなわち、システムメモリ上に断片化されたデータは、データ転送リストとしてのディスクリプタを用いることにより、ＤＭＡ転送が可能とされている。
【０００９】
しかし、従来のＤＭＡは、ページの境界において新たなシステムアドレスを生成するために割り込みを発生していた。このため、ＣＰＵの動作が乱されていた。これを解消するため、ＡＤＭＡが開発された。
【００１０】
ＡＤＭＡは、ＳＤカードの１つのリード/ライトコマンドに対応して、ページングによりシステムメモリ上に断片的に配置されたデータ領域に対してデータ転送を行う機能を有している。このため、ＡＤＭＡは、システムメモリ上にあるディスクリプタを読み込むことで、ＣＰＵに対する割り込みなしにホストコントローラとシステムメモリ間のデータ転送を制御している。ホストドライバは、ホストコントローラ内のレジスタセットを設定することにより、メモリカードへのコマンドの発行を制御し、ホストコントローラとメモリカード間のデータ転送を制御し、ＣＰＵに対する割り込みを使用していた。従来のように、バス性能が低い場合には、このような方法で問題はなかった。
【００１１】
しかし、近時、バスの性能が向上し、高速なデータ転送が可能となるに従い、ホストドライバの処理がオーバーヘッドとして現れるという問題がある。メモリカードの領域は必ずしも連続的に使用することができないため、複数のメモリコマンドに分割する必要がある。ホストドライバがメモリカードへのコマンドの発行を制御する方式では、データ転送の途中でホストＣＰＵに割り込みを発生させ、ホストドライバを実行させる必要があり、割り込みに応答するまでにある程度の時間がかかる。このため、高速バスを使用してもドライバ処理の待ち時間が影響して性能を低下させてしまう問題があった。
【００１２】
以下、実施の形態について、図面を参照して説明する。下記の説明の中のＡＤＭＡは、本提案による改良版ＡＤＭＡを示す。
【００１３】
図１は、本実施形態に係るメモリシステムを概略的に示している。
【００１４】
本実施形態は、システムメモリのデータ転送を可能とするディスクリプタを拡張し、複数のＳＤコマンドをＤＭＡ転送中にホストコントローラによって発行可能とすることにより、ホストドライバの処理によるオーバーヘッドを低減する。
【００１５】
図１に示すシステムコントローラ１１は、ＣＰＵ１２、システムメモリ１３、及びＳＤホストコントローラ１４とのインタフェースを制御する。
【００１６】
システムメモリ１３は、ホストドライバ２１、ディスクリプタテーブル２２、及びデータ２３を記憶する。これらホストドライバ２１、ディスクリプタテーブル２２、及びデータ２３を記憶するために必要な領域は、オペレーティングシステム（ＯＳ）によってシステムメモリ１３上に確保される。
【００１７】
ホストドライバ２１は、例えばＳＤホストコントローラ１４用のＯＳ固有のドライバであり、ＣＰＵ１２により実行される。ホストドライバ２１は、後述するＡＤＭＡを実行する前に、ディスクリプタテーブル２２を生成する。このディスクリプタテーブル２２は、システムメモリ１３とＳＤカードの間のデータ転送に必要な情報をリストにしたものであり、ＳＤホストコントローラ１４が解釈可能なフォーマットで記述されている。ディスクリプタテーブル２２の構造については後述する。
【００１８】
ＳＤホストコントローラ１４は、ＳＤコマンドを用いて、システムメモリ１３とＳＤカード間のデータ転送を双方向で行う機能を有している。ＳＤホストコントローラ１４は、主としてシステムバスインターフェース（Ｉ／Ｆ）回路３１、メモリカードＩ／Ｆ回路３２、複数のレジスタを含むレジスタセット３３、ＡＤＭＡ３４、タイマ３５により構成されている。
【００１９】
システムバスＩ／Ｆ回路３１は、システムバスを介してシステムコントローラ１１に接続される。メモリカードＩ／Ｆ回路３２は、図示せぬＳＤバスインタフェースを介してＳＤカード、例えばＳＤメモリカード１５、ＳＤＩＯカード１６に接続可能とされている。
【００２０】
ＳＤバスインタフェースは、従来の４ビットタイプには限定されず、LVDS(Low Voltage Difference Signaling)方式を用いたUHS-II(Ultra High Speed-II)などにも適用可能である。UHS-IIでは、コマンドはパケット形式で送られる。
【００２１】
ＳＤホストコントローラ１４のレジスタセット３３は、例えば図示せぬＳＤコマンド発生部、レスポンス部、バッファデータポート部、ホストコントロール部、割り込みコントロール部、ＡＤＭＡ部など、複数の部分に分類されている。ＳＤコマンドの発行に必要な情報、例えばコマンド番号、コマンドモード、及びアーギュメントやデータ転送に必要な情報 ブロック長、ブロック数は、レジスタセット３３のＳＤコマンド発生部に設定される。ＳＤコマンド発生部は、これらの情報が設定されることにより、ＳＤカードに対してコマンドを発行する。このコマンドに応じてＳＤカードから供給されるレスポンスは、レジスタセット３３内のレスポンス部で受信される。
【００２２】
ＡＤＭＡ３４は、ＣＰＵ１２を介さずに、ＳＤカードとシステムメモリ１３間において、データを転送する回路である。このＡＤＭＡ３４は、システムメモリ１３上のディスクリプタテーブル２２に記載された内容に従ってデータ転送を実行する。
【００２３】
タイマ３５は、タイムアウトエラーを検出するものである。例えばリードコマンドが発行されてから終了するまでに設定された時間内にリードコマンドの動作が完了しない場合、タイマ３５がタイムアウトエラーを検出する。このタイムアウトエラーは、ホストＣＰＵ１２に割り込みで通知され、ホストドライバによって処理される。
【００２４】
図２は、システムメモリ１３のページング管理とＳＤ物理アドレスの関係の例を示している。システムメモリ１３はページングにより、例えば４ｋＢｙｔｅ毎の小領域単位で管理される。ホストＣＰＵ１２が実行するアプリケーションからは、ホストＣＰＵ１２で管理されるページング機能によって、論理アドレスによりシステムメモリ１３がアクセスされる。このため、論理アドレスシステムメモリマップに示すように、データは連続したアドレス領域に配置されているように見える。しかし、システムメモリ１３に実際に記録されるデータの位置は、任意であり、物理アドレスシステムメモリマップに示すように断片的である。これらデータは、アドレスとデータ長（length）により管理されている。データ長は可変である。また、システムメモリ１３に記憶されたデータの物理アドレスと論理アドレスの関係は、図示せぬページテーブルで管理される。
【００２５】
一方、ＳＤメモリカード１３に記憶されるデータは、例えば５１２Ｂｙｔｅ〜数ＭＢｙｔｅのページ単位（ブロック単位）に管理されており、システムメモリ１３と完全に独立している。このため、システムメモリ１３上のデータをＳＤメモリカード１５に記憶させる場合、ＳＤ物理アドレスメモリマップに示すように、システムメモリ１３上のデータは、システムメモリ１３上とは異なるサイズにより記憶される。ＳＤメモリカード１５内のデータは、コマンド毎に指定される連続的な記憶領域に保持され、コマンドにより指定されたアドレスを有しており、データ長は可変であり別なコマンドで指定される。
【００２６】
ＤＭＡ転送は、物理アドレスによって直接システムメモリ１３をアクセスする。このため、システムメモリ１３上に転送リストとしてのディスクリプタを作成することにより、ＡＤＭＡの実行が可能となる。
【００２７】
図３は、本実施形態に係るディスクリプタを示している。このディスクリプタは、システムメモリ１３のディスクリプタテーブル２２内に作成される。
【００２８】
本実施形態のディスクリプタは、従来のディスクリプタを拡張するものであり、階層構造により構成されている。本実施形態のディスクリプタを用いることにより、ＡＤＭＡによるシステムメモリ１３とＳＤメモリカード１５間のデータ転送を、完全にハードウェアにより実行可能としている。したがって、データ転送中にホストＣＰＵ１２に割り込みを行う必要がなくなる。エラー処理要求は割り込みで通知されるが、発生確率が非常に小さいので問題はない。
【００２９】
図３に示すように、第１ディスクリプタ(Integrated Descriptor)は、複数の第２ディスクリプタ(Partial Descriptor)へのポインタの集まりによって構成されている。
【００３０】
各第２ディスクリプタ(Partial Descriptor)は、第３ディスクリプタ(SD Command Descriptor)と第４ディスクリプタ(System Memory Descriptor)のペアで構成される。
【００３１】
第３ディスクリプタの内容は、ＳＤコマンドを発行するための情報により構成されている。すなわち、第３ディスクリプタの内容は、例えばコマンド番号、コマンドモード、引数、データ転送に必要な情報としてのブロック長、ブロック数により構成されている。コマンドモードは、例えばリード／ライトを示すものである。この第３ディスクリプタをＳＤホストコントローラ１４のレジスタセット３３のうち、ＳＤコマンド発生部に書き込むことにより、１つのＳＤコマンドが発行される。
【００３２】
第４ディスクリプタ(System Memory Descriptor)の内容は、システムメモリ１３上の各データの位置を示すアドレスと、データ長を示すレングス（length）とにより構成され、断片的に配置された複数のデータの集まりを示している。
【００３３】
第３ディスクリプタは、１つのリード/ライトコマンドに対応しているため、ＳＤメモリカードのある１つの連続領域を指定できる。図２に示すように、複数領域が分かれている場合、それぞれの領域に対して第３ディスクリプタが必要となる。また、各第３ディスクリプタと同じデータ転送長になるように対応する第４ディスクリプタがプログラムされる。
【００３４】
第１乃至第４ディスクリプタは、それぞれ属性情報Ａｔｔを有している。各属性情報Ａｔｔは、例えばディクスリプタの種類を識別するための情報、及びディスクリプタの終了位置を示す終了ビットを含んでいる。
【００３５】
尚、第３ディスクリプタは、フォーマットが他のディスクリプタと相違するため、属性情報Ａｔｔは、少なくとも先頭のコマンド番号に対応して設けてもよいし、他のディスクリプタと同様に各ライン毎に持っていても良い。
【００３６】
図４は、ＡＤＭＡ３４の概略構成を示している。ＡＤＭＡ３４は、システムアドレス制御部３４ａ、データバッファ３４ｂ、ＳＤコマンド制御部３４ｃ、及びバッファメモリ３４ｄを有している。
【００３７】
システムアドレス制御部３４ａは、システムメモリ１３のアドレスを管理する。具体的には、システムメモリ１３に記憶された第１乃至第４のディスクリプタの読み込みを管理する。すなわち、システムアドレス制御部３４ａには、初期値として、第１ディスクリプタ（Integrated descriptor）の先頭アドレスが設定されている。これによりシステムメモリ１３から第１ディスクリプタ（Integrated descriptor）の情報を読み出すことができる。第１ディスクリプタには複数の第２ディスクリプタのポインタが書かれているため、各ポインタの指し示す第２ディスクリプタのアドレスを読み込み、このアドレスに従って第２ディスクリプタを読み込む。つまり、第２ディスクリプタを構成する第３ディスクリプタとしてのＳＤコマンドディスクリプタをＳＤコマンド制御部３４ｃに転送する。さらに、第２ディスクリプタを構成する第４ディスクリプタに記述されたデータのアドレス、及びデータ長を順次読み込み、このアドレス及びデータ長に従って、メモリライト時は、システムメモリ１３からデータを読み出し、データバッファ３４ｂに転送する。メモリリード時は、データバッファ３４ｂからシステムメモリ１３にデータを転送する。
【００３８】
これらの動作を実行するため、システムアドレス制御部３４ａは、第１ディスクリプタ（Integrated Descriptor）の先頭アドレス、第２ディスクリプタ（Partial Descriptor）のポインタ、データのアドレス及びデータ長を保持するため、複数のレジスタ３４ａ＿１〜３４ａ＿４、及びこれらレジスタの出力信号を選択するマルチプレクサ（ＭＰＸ）３４ａ＿５を有している。
【００３９】
ＳＤコマンド制御部３４ｃは、ＳＤコマンド発生部に値を設定するためのレジスタアドレスを順次発生するとともに、第３ディスクリプタとしてのSD Command Descriptorに含まれるレジスタ設定情報をホストコントローラ１４のレジスタセット３３のうちＳＤコマンド発生部に順次設定する。レジスタセット３３のＳＤコマンド発生部は、レジスタの設定が完了するとＳＤコマンドを発行する。
【００４０】
データバッファ３４ｂは、メモリライトの場合、システムアドレス制御部３４ａにより指定されたシステムメモリ１３上のデータを読み込み、供給されたデータを一時的に保持する。データバッファ３４ｂに保持されたデータは、発行されたＳＤコマンドに同期してＳＤメモリカード１５に転送される。
【００４１】
また、データバッファ３４ｂは、メモリリードの場合、発行されたＳＤコマンドに同期してメモリデバイスとしてのＳＤメモリカード１５から読み込んだデータを一時的に保持し、システムアドレス制御部３４ａにより指定されたシステムメモリ１３上の位置にデータを転送する。
【００４２】
上記構成において、図５を参照して拡張ディスクリプタを用いたＡＤＭＡ３４の動作について説明する。
【００４３】
ホストドライバ２１は、システムメモリ１３とＳＤメモリカード１５との間でデータ転送を行うため、図３に示すような拡張ディクスリプタをシステムメモリ１３上に作成する。第１ディスクリプタの先頭アドレスは、ホストドライバ２１により、システムアドレス制御部３４ａのレジスタ３４ａ＿１に設定される。
【００４４】
この後、ホストドライバ２１により、ＡＭＤＡ３４が起動されると、システムアドレス制御部３４ａは、レジスタ３４ａ＿１に保持された第１ディスクリプタの先頭アドレスに基づき、第１ディスクリプタ(Integrated Descriptor)の先頭に記載された第２ディスクリプタポインタ（Partial Descriptor Pointer）を読み込み、レジスタ３４ａ＿２に保持する。（ＳＴ１１）。
【００４５】
次いで、第２ディスクリプタポインタが示す場所にある第２ディスクリプタがシステムアドレス制御部３４ａにより読み込まれる（ＳＴ１２）。
【００４６】
第２ディクスリプタの先頭に記述された第３ディスクリプタ（SD Command Descriptor）は、ＳＤコマンド制御部３４ｃに供給される。ＳＤコマンド制御部３４ｃは、第３ディスクリプタに記述されているデータをＳＤホストコントローラ１４のレジスタセット３３を構成するＳＤコマンド発生部に書き込む。すると、ＳＤコマンド発生部によりＳＤメモリカード１５に対してマンドが発行される（ＳＴ１３）。
【００４７】
続いて、システムアドレス制御部３４ａにより、第４ディスクリプタ(System Memory Descriptor)が読み込まれる。システムアドレス制御部３４ａは、第４ディスクリプタに記述されているアドレス、及びデータ長をそれぞれレジスタ３４ａ＿３(Address)とレジスタ３４ａ＿４(Length)に保持する。システムアドレス制御部３４ａは、メモリライトの場合、レジスタ３４ａ＿３(Address)のアドレスを先頭アドレスとしてシステムメモリ１３からデータを読み出しデータバッファ３４ｂに転送する。また、システムアドレス制御部３４ａは、メモリリードの場合、レジスタ３４ａ＿３(Address)のアドレスを先頭アドレスとして、システムメモリ１３にデータバッファ３４ｂのデータを書き込む（ＳＴ１４）。
【００４８】
メモリライトの場合、データバッファ３４ｂ内において、システムメモリ１３から供給された断片的なデータが連続したデータとされる。第４ディスクリプタ(System Memory Descriptor)は、アドレスとデータ長のペアで構成される複数のデータで構成され、ＡＤＭＡは順次これを繰り返しシステムメモリとデータバッファ３４ｂ間のデータ転送を行う。
【００４９】
この後、ＡＤＭＡは、データバッファ３４ｂに保持されたデータをＳＤメモリカード１５に転送する（ＳＴ１５）。発行したコマンド（リード／ライトコマンド）に同期して、ＡＤＭＡはシステムメモリ１３上のデータをアクセスし、データバッファ３４ｂを介して両者のデータ転送は同期をとりながら実行される。総データ転送量は、メモリデバイス側もシステムメモリ側も、どちらも同じ値に設定されていなければならない。
【００５０】
１つの第２ディスクリプタに基づくデータの転送が完了すると、全ての第１ディスクリプタの実行が終了したかどうかが判別される（ＳＴ１６）。この結果、全ての第１ディスクリプタの実行が終了していない場合、制御がステップＳＴ１２に移行され、第１ディスクリプタに記述されたPartial Descriptor Pointerに従って、次の第２ディスクリプタが読み込まれ、上記の動作が実行される（ＳＴ１６−ＳＴ１２）。各ディスクリプタには前記属性情報Ａｔｔの中の終了ビットが設けられており、この終了ビットにより、ディスクリプタプログラムの終了位置を指定することができる。
【００５１】
次の第２ディスクリプタに対応して、第３ディスクリプタがＳＤホストコントローラ１４のレジスタに設定されると、ＳＤコマンドが発行され、第４ディスクリプタに従ってデータが転送される。例えばメモリリードの場合、最終データがデータバッファ３４ｂに読み込まれた後、次の第３ディスクリプタを読み込んでおくことにより、システムメモリへのＤＭＡ転送中に、次の転送のＳＤコマンドを発行することも可能である。この場合、コマンド発行時間が見えなくなるため、一層高速動作が可能となる。
【００５２】
一方、第１ディスクリプタに記述された内容の全てが実行された場合、ＳＤホストコントローラ１４は、ＡＤＭＡ完了割り込みを発生する（ＳＴ１７）。これにより、ＣＰＵ１２（ホストドラバ２１）は、ＡＤＭＡの処理が正常終了したことを知ることができる。エラーが発生しなかった場合、ホストＣＰＵ１２は、ＡＤＭＡの起動から終了まで転送に関わる必要がないため、ホストドライバによる性能低下は発生しない。また、データ転送中に次のディスクリプタを準備することができるため、ディスクリプタ作成時間は、転送性能に影響しない。
【００５３】
ホストドライバ２１は、転送が完了するとファイルシステムに対して、情報を更新するように指示する。これによりＳＤメモリカードに転送されたデータは確定する。
【００５４】
上記実施形態によれば、システムメモリ１３とＳＤメモリカード１５との間でデータ転送を行うため、ホストドライバ２１により、システムメモリ１３内に拡張ディスクリプタが生成される。この拡張ディスクリプタは、第２ディスクリプタの位置を示すポインタの集合としての第１ディスクリプタを含む。ホストドライバ２１により、ＡＤＭＡ３４が起動されると、第１ディスクリプタの先頭アドレスの内容に基づき、順次第２ディスクリプタの内容がＡＤＭＡ３４に取り込まれ、ＡＤＭＡ３４により第２ディスクリプタに記述された第３、第４ディスクリプタの内容に従って、システムメモリ１３とＳＤメモリカード１５との間でデータ転送が実行される。このため、ホストドライバ２１は、ＡＤＭＡ３４によるデータ転送中、データ転送に何ら関与しない。したがって、ＡＤＭＡ３４により高速なデータ転送が可能となる。
【００５５】
また、ＡＤＭＡ３４は、起動後、第３ディスクリプタをレジスタセット３３のＳＤコマンド発生部に設定することによりコマンドを発生させ、システムメモリ１３とＳＤメモリカード１５間のデータ転送を、ＡＤＭＡ３４によって、ハードウェアのみにより実行可能としている。したがって、ホストドライバ２１を介在する場合に比べて格段に高速化することが可能である。
【００５６】
さらに、データ転送中にホストドライバを動作させるためには、通常割り込みによって起動される。したがって、割り込み応答時間が無視できないとデータ転送性能の低下を引き起こしてしまう。しかし、本方式を用いることにより、そのような性能低下を回避することができる。
【００５７】
尚、本発明は上記各実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。
【符号の説明】
【００５８】
１２…ＣＰＵ、１３…システムメモリ、１４…ＳＤホストコントローラ、１５…ＳＤメモリカード、２１…ホストドライバ、２２…ディスクリプタテーブル、３３…レジスタセット、３４…ＡＤＭＡ、３４ａ…システムアドレス制御部、３４ｂ…データバッファ、３４ｃ…ＳＤコマンド制御部。
【図１】
0006046216.tif 000002
【図２】
0006046216.tif 000003
【図３】
0006046216.tif 000004
【図４】
0006046216.tif 000005
【図５】
0006046216.tif 000006