(57)【要約】      （修正有）【課題】データブロックの転送パラメータが与えられるか、データブロックの転送状態が書き込まれる記憶装置内のメモリ位置を指定するアドレスが、ＤＭＡレジスタに書き込まれるＤＭＡ転送を実行するＤＭＡコントローラを提供する。【解決手段】送信元データ位置から送信先データ位置へのデータブロックの転送の状態を示す値を転送状態格納位置に書き込み、また、前記転送状態格納位置のベースアドレスレジスタを有し、前記転送状態格納位置のベースアドレスレジスタには、制御装置によって、各転送についての前記転送状態格納位置のベースアドレスを指定する値が書き込まれ、前記転送状態格納位置のベースアドレスは、前記転送の少なくとも一部について異なり、ある転送における転送状態格納位置のベースアドレスは、システムメモリ内のアドレスであり、他の転送における転送状態格納位置のベースアドレスは別の装置のメモリ内のアドレスである。【選択図】図１
2011204269.tif 000002
【特許請求の範囲】
【請求項１】
送信元データ位置が配置され、転送対象となるデータブロックを有する第１記憶装置と、
前記転送対象となるデータブロックに対する送信先データ位置が配置される第２記憶装置と、
前記第１記憶装置と第２記憶装置の両方に接続され、機械可読命令を実行可能な制御装置と、
前記制御装置及び前記第１記憶装置と第２記憶装置の両方に接続されるＤＭＡコントローラと、
から構成される装置であって、
前記ＤＭＡコントローラは、送信元データ位置から送信先データ位置への前記データブロックの転送の状態を示す値を転送状態格納位置に書き込み、
前記ＤＭＡコントローラは、前記転送状態格納位置のベースアドレスレジスタを有し、前記転送状態格納位置のベースアドレスレジスタには、前記制御装置によって、各転送についての前記転送状態格納位置のベースアドレスを指定する値が書き込まれ、
前記転送状態格納位置のベースアドレスは、前記転送の少なくとも一部について異なり、ある転送における転送状態格納位置のベースアドレスは、システムメモリ内のアドレスであり、他の転送における転送状態格納位置のベースアドレスは別の装置のメモリ内のアドレスであることを特徴とする装置。
【請求項２】
請求項１記載の装置であって、
前記ＤＭＡコントローラは、前記制御装置が少なくとも前記送信元データ位置のベースアドレス、前記送信先データ位置のベースアドレス、及び前記転送対象となるデータブロックを構成するデータ量を書き込むパラメータレジスタを有することを特徴とする装置。
【請求項３】
請求項１記載の装置であって、
前記ＤＭＡコントローラは、前記ＤＭＡコントローラが前記データブロックの転送パラメータを取得するパラメータ位置のベースアドレスを指定する値を前記制御装置が書き込む少なくとも１つの転送パラメータ位置ベースアドレスレジスタを有することを特徴とする装置。
【請求項４】
請求項３記載の装置であって、
前記ＤＭＡコントローラが前記転送パラメータを取得するパラメータ位置は、少なくとも前記送信元データ位置のベースアドレス、前記送信先データ位置のベースアドレス、及び前記転送対象となるデータブロックを構成するデータ量を格納することを特徴とする装置。
【請求項５】
請求項１記載の装置であって、
前記データブロックが、第１転送において前記送信元位置から前記送信先位置に転送され、
前記ＤＭＡコントローラは、前記ＤＭＡコントローラが転送時に前記第１転送のパラメータを取得する第１パラメータ位置のベースアドレスを指定する値を前記制御装置が書き込む転送パラメータ位置ベースアドレスレジスタを有することを特徴とする装置。
【請求項６】
請求項５記載の装置であって、
前記ＤＭＡコントローラが前記第１転送のパラメータを取得する第１パラメータ位置は、少なくとも前記送信元データ位置のベースアドレス、前記送信先データ位置のベースアドレス、及び前記第１転送において転送対象となるデータブロックを構成するデータ量を格納することを特徴とする装置。
【請求項７】
請求項６記載の装置であって、
前記ＤＭＡコントローラが前記第１転送のパラメータを取得する第１パラメータ位置はさらに、前記制御装置が前記第１転送の状態を示す値を書き込む第１転送状態格納位置のベースアドレスを格納することを特徴とする装置。
【請求項８】
請求項６記載の装置であって、
前記ＤＭＡコントローラが前記第１転送のパラメータを取得する第１パラメータ位置はさらに、前記ＤＭＡコントローラが第２転送のパラメータを取得する第２パラメータ位置のベースアドレスを格納することを特徴とする装置。
【請求項９】
請求項８記載の装置であって、
前記ＤＭＡコントローラが前記第２転送のパラメータを取得する第２パラメータ位置はさらに、前記制御装置が前記第２転送の状態を示す値を書き込む第２転送状態格納位置のベースアドレスを格納することを特徴とする装置。
【請求項１０】
第１転送状態格納位置のベースアドレスを含む、ＤＭＡコントローラにより実行される第１データブロックの転送のための第１パラメータ群を、記憶装置内に配置された第１転送パラメータ位置にプロセッサが書き込むステップと、
転送時に前記第１転送パラメータ位置のベースアドレスを前記ＤＭＡコントローラのレジスタに前記プロセッサが書き込むステップと、
前記実行される第１データブロックの転送のパラメータを取得するため前記第１転送パラメータ位置にアクセスすることによって、前記第１データブロックの転送の実行を開始するよう、前記プロセッサが前記ＤＭＡコントローラをトリガーするステップと、
前記ＤＭＡコントローラが前記第１データブロックの転送完了を示す値を前記第１転送状態格納位置に書き込んだか判断するため、前記プロセッサが前記第１転送状態格納位置にアクセスするステップと、
から構成され、
前記転送状態格納位置のベースアドレスは、前記転送の少なくとも一部について異なり、ある転送における転送状態格納位置のベースアドレスは、システムメモリ内のアドレスであり、他の転送における転送状態格納位置のベースアドレスは別の装置のメモリ内のアドレスであることを特徴とする方法。
【請求項１１】
請求項１０記載の方法であって、
前記ＤＭＡコントローラをトリガーするステップはさらに、
第１記憶装置内に配置され、前記第１データブロックが該第１データブロックの転送中に読み出される第１データ送信元位置のベースアドレスを前記第１転送パラメータ位置から取得するステップと、
第２記憶装置内に配置され、前記第１データブロックが該第１データブロックの転送中に書き込まれる第１データ送信先位置のベースアドレスを前記第１転送パラメータ位置から取得するステップと、
転送対象となる前記第１データブロックが構成されるデータ量を指定する値を前記第１転送パラメータ位置から取得するステップと、
から構成されることを特徴とする方法。
【請求項１２】
請求項１０記載の方法であって、さらに、
第２データブロックの転送のための第２パラメータ群を有する第２転送パラメータ位置のベースアドレスを取得するため、前記プロセッサが前記第１転送パラメータ位置にアクセスするステップを有することを特徴とする方法。
【請求項１３】
電子装置内のプロセッサによる実行時、
第１転送状態格納位置のベースアドレスを含む、ＤＭＡコントローラにより実行される第１データブロックの転送のための第１パラメータ群を、記憶装置内に配置された第１転送パラメータ位置に書き込むステップと、
転送時に前記第１転送パラメータ位置のベースアドレスを前記ＤＭＡコントローラのレジスタに書き込むステップと、
前記実行される第１データブロックの転送のパラメータを取得するため前記第１転送パラメータ位置にアクセスすることによって、前記第１データブロックの転送の実行を開始するよう、前記ＤＭＡコントローラをトリガーするステップと、
前記ＤＭＡコントローラが前記第１データブロックの転送完了を示す値を前記第１転送状態格納位置に書き込んだか判断するため、前記第１転送状態格納位置にアクセスするステップと、
を前記電子装置に実行させるコードから構成され、
前記転送状態格納位置のベースアドレスは、前記転送の少なくとも一部について異なり、ある転送における転送状態格納位置のベースアドレスは、システムメモリ内のアドレスであり、他の転送における転送状態格納位置のベースアドレスは別の装置のメモリ内のアドレスであることを特徴とする機械アクセス可能媒体。
【請求項１４】
請求項１３記載の機械アクセス可能媒体であって、
前記電子装置にさらに、
第１記憶装置内に配置され、前記第１データブロックが該第１データブロックの転送中に読み出される第１データ送信元位置のベースアドレスを前記第１転送パラメータ位置から取得するステップと、
第２記憶装置内に配置され、前記第１データブロックが該第１データブロックの転送中に書き込まれる第１データ送信先位置のベースアドレスを前記第１転送パラメータ位置から取得するステップと、
転送対象となる前記第１データブロックが構成されるデータ量を指定する値を前記第１転送パラメータ位置から取得するステップと、
を実行させることを特徴とする機械アクセス可能媒体。
【請求項１５】
請求項１３記載の機械アクセス可能媒体であって、さらに、
第２データブロックの転送のための第２パラメータ群を有する第２転送パラメータ位置のベースアドレスを取得するため、前記第１転送パラメータ位置にアクセスするステップを実行させることを特徴とする機械アクセス可能媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＤＭＡ転送状態の制御及び監視を行うため、メモリアドレススペースのバーチャルＤＭＡレジスタの規定に関する。
【背景技術】
【０００２】
各種コンピュータシステムアーキテクチャは、コンピュータシステム内部の装置（記憶装置、Ｉ／Ｏ装置などを含む）間及びバス間のデータブロックを効率的に転送するため、いくつかのアプローチを利用している。最もシンプルなアプローチの１つは、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）による１つの装置からのデータブロックの読出しと、他の装置への当該データブロックの書き込みを可能にするというものであった。しかしながら、この作業はしばしば、ＣＰＵがより複雑な計算及び他の計算タスクを実行するのにより十分に使用されるように、他の代替的機構への委任により適したタスクとしてみなされる。
【０００３】
広く利用されている１つの代替的機構は、コンピュータシステムのシステムメモリと他の装置との間のデータブロックの移動を引き継ぐため、上記のようなコンピュータシステムにＤＭＡ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）コントローラを追加することである。典型的には、当該ＤＭＡコントローラは、ＣＰＵが転送パラメータをＤＭＡコントローラ内のレジスタに直接書き込むことによって、データブロックの具体的転送を実行するようプログラムされる。このとき、データブロックの転送が実行されると、ＣＰＵは典型的には、転送状態を問い合わせるため、ＤＭＡコントローラ内の１以上のレジスタをポール処理（ｐｏｌｌ）するようプログラムされる。
【０００４】
しかしながら、このようなＤＭＡコントローラの利用は問題点を有する。ＣＰＵはデータブロックの転送を実際に実行する負担から解放されるが、転送状態を照会するためＤＭＡコントローラ内のＣＰＵポールレジスタを有することは、依然としてしばしば非効率であると考えられている。またコンピュータシステムの多くの実現形態では、ＤＭＡコントローラ内のレジスタをプログラムするようＣＰＵにより実行されるライト処理と、ＤＭＡコントローラ内のレジスタから状態を照会するようＣＰＵにより実行されるリード処理は、望ましいとされるものより多くの時間を要するかもしれない。
【０００５】
他の広く利用されている機構は、コンピュータシステム内の各種Ｉ／Ｏ装置がデータブロックの転送を自律的に実行できるように、バスマスタリング機能を各種Ｉ／Ｏ装置に実装するというものである。典型的には、このような転送は、ＣＰＵが転送パラメータを当該バスマスタリング装置内のレジスタに直接書き込むことにより行われるようプログラムされる。このとき、データブロックの転送が実行されると、ＣＰＵは、転送状態を照会するため、バスマスタリング装置内の１以上のレジスタをポール処理する。
【０００６】
しかしながら、バスマスタリング装置のそのような使用は問題点を有する。ＣＰＵはデータブロックの転送を実際に実行する負担から解放されるが、ＤＭＡコントローラ内のレジスタをＣＰＵがプログラムするのに実行されるライト処理と、ＤＭＡコントローラ内のレジスタから状態を照会するのにＣＰＵにより実行されるリード処理は、望ましいとされるものより多くの時間がかかるかもしれない。また、特にシステムメモリからデータブロックを読み出すためのバスマスタリング装置により実行されるリード処理は、望ましいとされるものより多くの時間がかかるかもしれない。
【発明の概要】
【発明が解決しようとする課題】
【０００７】
上記問題点に鑑み、本発明の課題は、ＤＭＡコントローラによって、データブロックの転送パラメータが与えられるか、あるいは、データブロックの転送状態が書き込まれる記憶装置内のメモリ位置を指定するアドレスが、ＤＭＡコントローラのＤＭＡレジスタに書き込まれるＤＭＡ転送を実行するための装置及び方法を提供することである。
【課題を解決するための手段】
【０００８】
上記課題を解決するため、本発明の一特徴は、送信元データ位置が配置され、転送対象となるデータブロックを有する第１記憶装置と、前記転送対象となるデータブロックに対する送信先データ位置が配置される第２記憶装置と、前記第１記憶装置と第２記憶装置の両方に接続され、機械可読命令を実行可能な制御装置と、前記制御装置及び前記第１記憶装置と第２記憶装置の両方に接続されるＤＭＡコントローラとから構成される装置であって、前記ＤＭＡコントローラは、送信元データ位置から送信先データ位置への前記データブロックの転送の状態を示す値を転送状態格納位置に書き込み、前記ＤＭＡコントローラは、前記転送状態格納位置のベースアドレスレジスタを有し、前記転送状態格納位置のベースアドレスレジスタには、前記制御装置によって、各転送についての前記転送状態格納位置のベースアドレスを指定する値が書き込まれ、前記転送状態格納位置のベースアドレスは、前記転送の少なくとも一部について異なり、ある転送における転送状態格納位置のベースアドレスは、システムメモリ内のアドレスであり、他の転送における転送状態格納位置のベースアドレスは別の装置のメモリ内のアドレスであることを特徴とする装置に関する。
【発明の効果】
【０００９】
本発明によると、ＤＭＡ転送状態の制御及び監視を行うのに効果的なメモリアドレススペースのバーチャルＤＭＡレジスタを提供することができる。
【図面の簡単な説明】
【００１０】
【図１】図１は、コンピュータシステムを用いた実施例のブロック図である。
【図２】図２は、コンピュータシステムを用いた他の実施例の他のブロック図である。
【図３】図３は、データブロックの転送に用いられる装置間のやりとりの実施例のブロック図である。
【図４】図４は、複数のデータブロックの転送に用いられる装置間のやりとりの実施例のブロック図である。
【図５】図５は、複数のデータブロックの転送に用いられる装置間のやりとりの実施例の他のブロック図である。
【図６】図６は、複数のデータブロックの転送に用いられる装置間のやりとりの実施例のさらなる他のブロック図である。
【図７】図７は、コンピュータシステムを用いた他の実施例のさらなる他のブロック図である。
【図８】図８は、実施例のフローチャートである。
【図９】図９は、他の実施例のフローチャートである。
【図１０】図１０は、さらなる他の実施例のフローチャートである。
【発明を実施するための形態】
【００１１】
以下の説明では、本発明の完全なる理解を提供するため多数の詳細が与えられる。しかしながら、これら具体的詳細は以降に請求されるように本発明を実現するのに必要とされるものではないということは、当業者に明らかであろう。
【００１２】
以降で請求される本発明は、コンピュータシステムの他の装置または他の類似の電子システム内の記憶領域におけるＤＭＡコントローラのバーチャルレジスタを維持するためのサポートの実装に関する。以下の説明はコンピュータシステム内のＤＭＡコントローラに着目しているが、以降に請求される本発明が、ＤＭＡコントローラや装置間のデータブロックの移動のための他の類似の専用論理を有する電子システムのサポートにおいて実現されるということは、当業者には理解されるであろう。
【００１３】
図１は、コンピュータシステムを用いた実施例のブロック図である。コンピュータシステム１００は、少なくとも部分的に、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１１０、バス１１９、論理１２０、バス１４９、システムメモリ１４０、バス１５９及び装置１５０から構成される。ＣＰＵ１１０、バス１１９、論理１２０、バス１４９及びシステムメモリ１４０は、システムメモリ１４０及び／またはコンピュータシステム１００の他の装置の内部に格納される機械可読命令を実行可能なコンピュータシステム１００の一形態のコアを構成する。しかしながら、当業者には容易に認識されるように、これはコンピュータシステム１００の多数の可能なコアの形態の１つであり、コンピュータシステム１００はさらに、図示されない装置及び他のバスから図示されない他のバス及び装置から構成されてもよい。
【００１４】
各種実施例において、ＣＰＵ１１０は、カリフォルニア州サンタクララにあるインテルコーポレイションからの広く知られ、利用されている「ｘ８６」命令セットの少なくとも一部を実行可能なＣＰＵを含む各種タイプのＣＰＵの何れかとすることができる。また可能な各種実施例では、複数のＣＰＵ（図示せず）に対するサポートを提供するための追加的なバス及び／または装置と共に複数のＣＰＵを設けることも可能である。論理１２０はバス１１９を介しＣＰＵ１１０に接続され、論理１２０がバス１４９を介しさらに接続されるシステムメモリ１４０とのアクセスのＣＰＵ１１０への提供及び制御を含むＣＰＵ１１０による命令の実行のサポートにおいて各種機能を実行する。論理１２０はまた、論理１２０がバス１５９を介し接続される装置１５０などのコンピュータシステム１００を構成する他の装置へのアクセスを提供する。
【００１５】
バス１１９、１４９及び１５９との接続、及びアドレス、コマンド及びデータが転送されるトランザクションを可能にするシステムメモリ１４０と装置１５０のそれぞれとのアクセスをＣＰＵ１１０に与えることにより、論理１２０は当該バス間の「ブリッジ」と通常呼ばれるものとして機能する。ブリッジとして機能することにより、論理１２０はまた、バス１４９を介したトランザクションを実行するのに用いられるメモリコントローラ１２２と、バス１５９を介し他のトランザクションを実行するのに用いられるバスインタフェース１２７とをコンピュータシステム１００に提供する。データブロックの一部の転送を実行する負担の一部からＣＰＵ１１０を解放するため、論理１２０はさらにＤＭＡコントローラ１３０を提供する。
【００１６】
各種実施例では、システムメモリ１４０は、ＦＰＭ（Ｆａｓｔ  Ｐａｇｅ  Ｍｏｄｅ）、ＥＤＯ（Ｅｘｔｅｎｄｅｄ  Ｄａｔａ  Ｏｕｔ）、ＳＤＲ（Ｓｉｎｇｌｅ  Ｄａｔａ  Ｒａｔｅ）またはＤＤＲ（Ｄｏｕｂｌｅ  Ｄａｔａ  Ｒａｔｅ）の形態によるＳＤＲＡＭ（Ｓｙｎｃｈｒｏｎｏｕｓ  Ｄｙｎａｍｉｃ  ＲＡＭ）、またはＲＡＭＢＵＳＴＭインタフェースや他のインタフェースを用いたＲＡＭなどを含む各種タイプのＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）の何れかとすることが可能である。メモリコントローラ１２２及びバス１４９は、１以上のタイプのメモリ及び／またはメモリインタフェースのタイミング及び／またはプロトコル要求をサポートするよう構成される。
【００１７】
各種実施例では、コンピュータシステム１００を構成するようなバス１５９及び／または他のバスは、ＥＩＳＡ（Ｅｘｔｅｎｄｅｄ  Ｉｎｄｕｓｔｒｙ  Ｓｔａｎｄａｒｄ  Ａｃｈｉｔｅｃｔｕｒｅ）、ＭＣＡ（Ｍｉｃｒｏ  ＣｈａｎｎｅｌＴＭ  Ａｒｃｈｉｔｅｃｔｕｒｅ）、ＰＣＩ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ）、ＰＣＩ−Ｘ、ＰＣＩ  Ｅｘｐｒｅｓｓなどのコンピュータ構成の技術分野において「標準化された」周知の各種形態の何れかの特徴及び／または仕様に従うよう構成されてもよい。バスインタフェース１２７及び１５７は、バス１５９のタイミング及び／またはプロトコル要求をサポートするよう構成される。
【００１８】
一実施例では、ＣＰＵ１１０は、システムメモリ１４０内のデータ格納位置１４６及び１４８の間のデータブロックの転送を実行するようＣＰＵ１１０にＤＭＡコントローラ１３０をプログラムさせる命令シーケンスを実行する。ＣＰＵ１１０は、以下に限定されるものではないが、データ格納位置１４６及び１４８の開始アドレス、転送状態がシステムメモリ１４０内に割当てられる状態格納位置１４４に設けられることを示す値、転送を実行させる１以上の制御ビットへの値などを含む転送を実行するための各種パラメータを指定する値により、パラメータレジスタ１３３の１以上を書き込む。このとき、ＤＭＡコントローラ１３０が転送を実行する。当該転送の実行中、ＣＰＵ１１０は、ＤＭＡコントローラ１３０が転送が完了したことを示す値を状態格納位置１４４に書き込んだか判断するため、１回以上状態格納位置１４４を読み出すことが可能である。コンピュータシステム１００などのコンピュータシステムの構成において、ＣＰＵとシステムメモリとの間の極めて低速の遅延パスを生成することが一般に実践されているということが与えられると、ＣＰＵ１１０は、ＤＭＡコントローラ１３０内のレジスタから読み出すという従来技術によるアプローチより、はるかに迅速にシステムメモリ１４０内の状態格納位置１４４を読み出すことにより転送状態を繰り返しチェックすることが可能となる可能性がある。
【００１９】
他の実施例では、ＣＰＵ１１０は、実行される転送の各種パラメータをシステムメモリ１４０内に割当てられた代替パラメータ格納位置１４３に書き込むことによって、システムメモリ１４０内のデータ格納位置１４６と１４８の間のデータブロックの転送を実行するようＤＭＡコントローラ１３０をＣＰＵにプログラムさせる命令シーケンスを実行する。このようなパラメータとして、以下に限定されるものではないが、データ格納位置１４６と１４８の開始アドレス、転送されるデータ量を示す値、転送状態が状態格納位置１４４に設けられることを示す値などがあげられる。ＣＰＵ１１０はまた、代替パラメータ格納位置１４３の開始アドレスを指定する値と、転送を実行させるトリガーとしての１以上の制御ビットへの値によりパラメータレジスタ１３３の１以上を書き込みさせる。当該トリガーに応答して、ＤＭＡコントローラ１３０転送を実行する。転送実行中、ＣＰＵ１１０は、ＤＭＡコントローラ１３０が転送の未完了を示す値を状態格納位置１４４に書き込んだか判断するため、１回以上状態格納位置１４４を読み出すことが可能である。
【００２０】
本実施例の一変形では、状態格納位置１４４は、代替パラメータ格納位置１４３の一部であるか、あるいは、代替パラメータ格納位置１４３のベースアドレスから所定のオフセットにあるシステムメモリ１４０内のアドレスに割当てられる。本実施例の他の変形では、ＤＭＡコントローラ１３０は、状態格納位置１４４のアドレスとは独立にプログラムされる（パラメータレジスタ１３３または代替パラメータ格納位置１４３の何れかを介し）。
【００２１】
本実施例のさらなる他の変形では、転送状態が装置１５０の装置ストレージ１６０内の代替状態格納位置１６４に書き込まれ、ＤＭＡコントローラ１３０が代替状態格納位置１６４のアドレスによりプログラムされる（パラメータレジスタ１３３または代替パラメータ格納位置１４３の何れかを介して）。代替状態格納位置１６４は、当業者には容易に理解されるように、装置１５０の性質に応じていくつかの可能な目的の何れかのため利用可能な装置１５０内のメモリバッファである装置ストレージ１６０内に割当てられた１以上のメモリ位置から構成される。転送状態の装置１５０の装置ストレージ１６０内の他の状態ストレージ位置１６４への書き込みの効果は、他のタスクを実行するための条件としてそのような状態を待機してもよく、状態が以降において装置１５０に転送される必要があるシステムメモリ１４０内の状態格納位置１４４に状態を書き込みしないことによって、望ましくない遅延が回避されうるということである。以降における状態格納位置１４４から代替状態格納位置１６４への状態の転送が、装置１５０が状態格納位置１４４を読み出すのに保持するバスマスタリング機能を装置１５０が使用することを要求した場合、上記効果はさらに増大されるかもしれない。当業者が理解するように、バス１５９などのバスを介したリード処理の実行は、ライト処理より完了するのに時間を要する可能性があり、一時的にバスをロックし得る。これは、まず転送状態などのデータを一部をバスを介しデータに対するリクエストがなされることを要求するリード処理と、次に要求されたデータが供給可能となるまで要求される待機期間による。バス１５９の構成に応じて、リード及びライト処理のオーダリングとコヒーレンシーのルールは、バス１５９が使用されていないか、あるいは、少なくとも装置１５０は、状態を受信するまでバス１５９を介し他の転送の少なくとも一部を実行しないことを要求するかもしれない。従ってリード処理の開始時における状況に応じて、システムメモリ１４０及び装置１５０と共に、バス１４９と１５９は、状態格納位置１４４から状態を読み出すリード処理に回答及び完了させることにより一時的に独占されてもよい。対照的に、ＤＭＡコントローラ１３０により状態が装置１５０に直接書き込まれる場合、コヒーレンシーを維持し、ライト処理がバスインタフェース１２７のライトバッファ１２８に与えられることを可能にし、その後、バス１５９がロック状態になる可能性を低くしながら可能であるときには、バス１５９を介し装置１５０に転送されるようオーダリングされるため、ライト処理に通常課される要求を緩和することが可能となる。
【００２２】
図２は、コンピュータシステムを用いた実施例の他のブロック図である。図２の番号付けされたアイテムは、図１の番号付けされたアイテムと一般に対応し、図１のコンピュータシステム１００と同様に、コンピュータシステム２００は少なくとも部分的に、ＣＰＵ２１０、バス２１９、論理２２０、バス２４９、システムメモリ２４０、バス２５９及び装置２５０から構成される。コンピュータシステム１００のケースと同様に、これはコンピュータシステム２００の多数の可能な形態のコアの一例であり、コンピュータシステム２００はまたさらに、図示されていない他のバス及び装置から構成されてもよい。論理２２０はバス２１９を介しＣＰＵ２１０に接続され、論理２２０が論理２２０内のメモリコントローラ２２２及びバス２４９を介しさらに接続されるシステムメモリ２４０へのアクセスをＣＰＵ２１０に提供し、ＣＰＵ２１０を制御することを含むＣＰＵ２１０による命令の実行のサポートにおいて各種機能を実行する。論理２２０はまた、論理２２０がそれの内部のバスインタフェース２２７及びバス２５９を介し接続される装置２５０などのコンピュータシステム２００を構成する他の装置とのアクセスを提供する。
【００２３】
一実施例では、ＣＰＵ２１０は、システムメモリ２４０内のデータ格納位置２４６と装置２５０内のデータ格納位置２６６との間のデータブロックの転送を実行するようＤＭＡコントローラ２３０をＣＰＵ２１０にプログラムさせる命令シーケンス（おそらく、システムメモリ２４０内に格納される）を実行する。ＣＰＵ２１０は、実行する転送に関する各種パラメータをシステムメモリ２４０内に割当てられるパラメータ格納位置２４３内のメモリ位置に書き込む。そのようなパラメータには、以下に限定するものではないが、データ格納位置２４６と２６６の開始アドレス、転送されるデータ量を示す値、及び転送状態がシステムメモリ２４０内に割当てられる状態格納位置２４４に与えられることを示す値があげられる。またＣＰＵ２１０は、パラメータ格納位置２４３の開始アドレスを示す値と、転送を実行させるトリガーとしての１以上の制御ビットへの値により、装置２５０内のパラメータレジスタ２３３の１以上に書き込みさせる。転送実行中、ＣＰＵ２１０は、ＤＭＡコントローラ２３０が、転送完了を示す値を状態格納位置２４４に書き込みしたか判断するため、１回以上状態格納位置２４４を読み出すことが可能である。
【００２４】
本実施例の一変形では、状態格納位置２４４は、パラメータ格納位置２４３の一部であるか、あるいは、パラメータ格納位置２４３のベースアドレスからの所定のオフセットにあるシステムメモリ２４０内のアドレスに割当される。本実施例の他の変形では、ＤＭＡコントローラ２３０は、状態格納位置２４４のアドレスにより独立にプログラムされる（パラメータレジスタ２３３またはパラメータ格納位置２４３の何れかの内部）。本実施例のさらなる他の変形では、転送状態は装置２５０の装置ストレージ２６０内の代替状態格納位置２６４に書き込まれ、ＤＭＡコントローラ２３０は、代替状態格納位置２６４のアドレスによりプログラムされ、これにより、所望の場合、装置２５０に転送状態がより迅速に与えることが可能となる。
【００２５】
他の実施例では、ＣＰＵ２１０は、装置２５０の装置ストレージ２６０内に割当てられる代替パラメータ格納位置２６３に実行される転送の各種パラメータを書き込むことによって、データ格納位置２４６と２６６との間のデータブロックの転送を実行するようＤＭＡコントローラ２３０をＣＰＵ２１０にプログラムさせる命令シーケンスを実行する。以前のように、このようなパラメータとして、以下に限定されるものではないが、データ格納位置２４６と２６６の開始アドレス、転送されるデータ量を示す値、及び転送状態が代替状態格納位置２６４に与えられることを示す値があげられる。ＣＰＵ２１０はまた、代替パラメータ格納位置２６３の開始アドレスを指定する値と、転送を実行させるトリガーとしての１以上の制御ビットの値により、パラメータレジスタ２３３の１以上を書き込みさせる。その後、ＤＭＡコントローラ２３０は、当該トリガーに応答して転送を実行する。当該転送実行中、装置２５０またはＣＰＵ２１０の何れかは、ＤＭＡコントローラ２３０が、転送完了を示す値を状態格納位置２６４に書き込んだか判断するため、１回以上状態格納位置２６４を読み出すことができる。
【００２６】
図３は、データブロックの転送において用いられる装置間のやりとりの実施例のブロック図である。具体的には、図３は、制御装置３１０、ＤＭＡコントローラ３３０、及び送信元データ格納位置３４６から送信先データ格納位置３４８へのデータブロックの転送の実行においてストレージを提供する１以上の記憶装置及び／または装置のやりとりを示す。制御装置３１０は、制御装置３１０が接続されるＤＭＡコントローラ３３０内のレジスタを制御装置３１０にプログラムさせることによって、データブロックの転送を実行させる命令３１２を実行可能なＣＰＵ（コンピュータシステムまたは他の電子システムの）、マイクロコントローラ、シーケンサなどとすることが可能である。アドレス可能スペース３４０は、制御装置３１０とＤＭＡコントローラ３３０の両方にアクセス可能なアドレス位置のマップである。
【００２７】
一部の実施例では、アドレス可能スペース３４０は、制御装置３１０とＤＭＡコントローラ３３０の両方が接続される信号システム記憶装置（図示せず）から全体的に構成されてもよい。このような実施例は、データ格納位置１４６と１４８と同様に、送信元データ格納位置３４６と送信先データ格納位置３４８の両方がシステムメモリ１４０などのシステムメモリ装置内にある図１の実施例と大きく類似したものとすることができる。他の実施例では、アドレス可能スペース３４０は、制御装置３１０とＤＭＡコントローラ３３０の両方が接続される他の装置内の記憶装置及び／またはバッファの組み合わせから構成されるようにしてもよい。このような実施例は、データ格納位置２４６がシステムメモリ２４０内に割当てられ、データ格納位置２６６が装置２５０の装置ストレージ２６０内に割当されることと同様に、送信元データ格納位置３４６と送信先データ格納位置３４８が異なる装置内に割当される図２の実施例と大きく類似したものとすることができる。より正確には、例えば、送信元データ格納位置３４６はシステムメモリ内に配置され、送信先データ格納位置３４８は他の装置内のバッファ内に配置されてもよい。
【００２８】
制御装置３１０は、転送されるデータ量とパラメータ格納位置３４３への状態格納位置３４４のアドレスと共に、送信元データ格納位置３４６と送信先データ格納位置３４８の両方のベースアドレスを書き込むことによって、送信元データ格納位置３４６から送信先データ格納位置３４８へのデータブロックの転送の実行を準備させる。制御装置３１０はまた、データ転送を実行するようＤＭＡコントローラ３３０をトリガーする１以上のビットと共に、パラメータ格納位置３４３のベースアドレスをＤＭＡコントローラ３３０内のパラメータレジスタ３３３に書き込む。
【００２９】
当該トリガーに応答して、ＤＭＡコントローラ３３０は、送信元データ格納位置３４６と送信先データ格納位置３４８の両方のベースアドレス、転送されるデータ量、及び状態格納位置３４４のベースアドレスを取得するため、パラメータレジスタ３３３にプログラムされたベースアドレスにおいてパラメータ格納位置３４３にアクセスする。ＤＭＡコントローラ３３０は、送信元データ格納位置３４６から送信先データ格納位置３４８へのデータブロックの転送を実行し、当該転送の状態を状態格納位置３４４に書き込む。制御装置３１０は、ＤＭＡコントローラ３３０がデータ転送の完了を示す値を状態格納位置３４４に書き込んだか判断するため、状態格納位置３４４から転送状態を読み出す。
【００３０】
図４は、複数のデータブロックを転送するのに用いられる装置間のやりとりの実施例のブロック図である。具体的には、図４は、制御装置４１０、ＤＭＡコントローラ４３０及び送信元データ格納位置４４６ａから送信先データ格納位置４４８ａへのデータブロックの転送を実行し、その後、送信元データ格納位置４４６ｂから送信先データ格納位置４４８ｂへの他のデータブロックの転送を実行するのにストレージを提供する１以上の記憶装置及び／または装置のやりとりを示す。図４の番号付けされたアイテムは、一般に図３の番号付けされたアイテムと対応し、図３の制御装置３１０と同様に、制御装置４１０は、制御装置４１０が接続されるＤＭＡコントローラ４３０内のレジスタをプログラムすることによりデータブロックの転送を実行させる命令４１２を実行可能なＣＰＵ（コンピュータシステムまたは他の電子システムの何れかの）、マイクロコントローラ、シーケンサなどとすることが可能である。アドレス可能スペース４４０は、制御装置４１０とＤＭＡコントローラ４３０の両方にアクセス可能なアドレス位置のマップである。
【００３１】
一部の実施例では、アドレス可能スペース４４０は、制御装置４１０とＤＭＡコントローラ４３０の両方が接続される単一のシステムメモリ装置（図示せず）から全体的に構成さされてもよい。他の実施例では、アドレス可能スペース４４０は、制御装置４１０とＤＭＡコントローラ４３０が接続される他の装置内のバッファ及び／または記憶装置の組み合わせから構成されてもよい。例えば、送信元データ格納位置４４６ａと送信先データ格納位置４４８ｂの両方がシステムメモリの内部に配置されてもよく、送信元データ格納位置４４６ｂと送信先データ格納位置４４８ａの両方が、他の装置内のバッファ内に配置されてもよい。
【００３２】
制御装置４１０は、送信元データ格納位置４４６ａと４４６ｂ及び送信先データ格納位置４４８ａと４４８ｂのベースアドレスを、転送される対応するデータ量と状態格納位置４４４ａと４４４ｂの対応するパラメータ格納位置４４３ａと４４３ｂへの対応するアドレスと共に書き込むことによって、データブロックの複数の転送の実行を準備させる。制御装置４１０はまた、データブロックの転送を開始するようＤＭＡコントローラ４３０をトリガーするための１以上のビットと共に、パラメータ格納位置４４３ａのベースアドレスをＤＭＡコントローラ４３０内のパラメータレジスタ４３３に書き込む。
【００３３】
当該トリガーに応答して、ＤＭＡコントローラ４３０は、送信元データ格納位置４４６ａと送信先データ格納位置４４８ａの両方のベースアドレス、転送されるデータ量、及び状態格納位置４４４ａのベースアドレスを取得するため、パラメータレジスタ４３３にプログラムされるベースアドレスにおいてパラメータ格納位置４４３ａにアクセスする。ＤＭＡコントローラ４３０は、送信元データ格納位置４４６ａから送信先データ格納位置４４８ａへのデータブロックの転送を実行し、当該転送の状態を状態格納位置４４４ａに書き込む。このとき、ＤＭＡコントローラ４３０は、送信元データ格納位置４４６ｂと送信先データ格納位置４４８ｂの両方のベースアドレス、転送されるデータ量及び状態格納位置４４４ｂのベースアドレスを取得するため、パラメータ格納位置４４３ｂにアクセスする。ＤＭＡコントローラ４３０は、その後、送信元データ格納位置４４６ｂから送信先データ格納位置４４８ｂへのデータブロックの転送を実行し、当該転送の状態を状態格納位置４４４ｂに書き込む。制御装置１０は、ＤＭＡコントローラ４３０がデータ転送の完了を示す値を状態格納位置４４４ａと４４４ｂに書き込んだか判断するため、状態格納位置４４４ａと４４４ｂから転送状態を読み出す。
【００３４】
一実施例では、パラメータレジスタ４３３に書き込まれたパラメータ格納位置４４３ａのベースアドレスは、ＤＭＡコントローラ４３０がチェーンの第１パラメータ格納位置のベースアドレスのみを要求するように、チェーンの所定のインターバル（ＤＭＡコントローラ４３０にプログラムまたは配線されるインターバルの長さ）で配置される１以上のパラメータ格納位置（パラメータ格納位置４４３ａなど）のベースへのポインタとして機能し、ＤＭＡコントローラ４３０は、データブロックの転送のためのパラメータを有する最後のそのようなパラメータ格納位置に遭遇するまで、チェーンを繰り返すことができる。そのような実施例では、制御装置４１０はまた、当該チェーンのパラメータ格納位置の値を示す値をパラメータレジスタ４３３に書き込むようにしてもよい。しかしながら他の実施例では、各パラメータ格納位置は、パラメータ格納位置のチェーンにおける次のパラメータ格納位置のベースアドレスを提供し、これにより、パラメータ格納位置のチェーンにおける各パラメータ格納位置がアドレス可能スペース４４０内の所定のインターバルに配置される必要がなくなる。このような実施例では、当該チェーンの最後のパラメータ格納位置は、当該チェーンの最後のパラメータ格納位置に到達したことを示す値をベースアドレスの代わりに提供してもよい。
【００３５】
図５は、複数のデータブロックの転送に用いられる装置間のやりとりの実施例の他のブロック図である。具体的には、図５は、複数のデータブロック（簡単化のため、実際には図示されないデータブロック）の転送に用いられる１以上の記憶装置及び／またはストレージを提供する装置とＤＭＡコントローラとのやりとりを示す。図５の番号付けされたアイテムは、図４の番号付けされたアイテムと一般には対応しているが、図４と同様に、アドレス可能スペース５４０は、制御装置（図示せず）とＤＭＡコントローラ５３０の両方にアクセス可能なアドレス位置のマップである。
【００３６】
図４と同様に、複数のパラメータ格納位置（５４３ａ〜５４３ｄ）がアドレス可能スペース５４０内に配置され、図４に関する詳細な説明と同様に、ＤＭＡコントローラ５３０は、送信元データ格納位置及び送信先データ格納位置のベースアドレスと共に、転送されるデータ量と各転送の状態を示す値を書き込む状態格納位置の対応するベースアドレスを取得するため、パラメータ格納位置５４３ａ〜５４３ｄのそれぞれにアクセスする。しかしながら、図４に関して説明された実施例とは異なり、図５は、同一位置、すなわち、状態格納位置５４４がＤＭＡコントローラ５３０により各転送の状態が書き込まれる単一の共通の位置としてパラメータ格納位置５４３ａ〜５４３ｄ内からポインタ指定される実施例を示す。このような単一の状態格納位置の利用は、制御装置がアドレス可能スペース５４０による１つのみの位置への繰り返しのアクセスにより複数の転送の状態を監視することを可能にする。このような実施例では、状態格納位置５４４にＤＭＡコントローラ５３０により書き込まれる値は、どの転送が完了したか、及び／またはどの転送が現在行われているか制御装置が区別するのを可能にするある形式の識別値を追加的に含むものであってもよい。
【００３７】
図５はまた、１以上のデータブロックの転送の開始と転送チェーンに存在する転送の個数の計数の両方をトリガーするための方法として、最初と最後の両方のパラメータ格納位置のベースアドレスを供給するため、パラメータレジスタ５３３のしようすることを示す。前述のように、一部の実施例は、各パラメータ格納位置がアドレス可能スペース５４０内で配置されるベースアドレスの間の所定のインターバルのアドレススペースを利用し、他の実施例は、対応する複数の転送が実行されるように、パラメータ格納位置のチェーンの次のパラメータ格納位置のベースアドレスを提供する各パラメータ格納位置内のポインタを利用するようにしてもよい。
【００３８】
図６は、複数のデータブロックの転送に用いられる装置間のやりとりの実施例のさらなる他のブロック図である。具体的には、図６は、複数のデータブロック（簡単化のため、実際には図示されないデータブロック）の転送の実行において、１以上の記憶装置及び／またはストレージを提供する装置とＤＭＡコントローラのやりとりを示す。図６の番号付けされたアイテムは、図５の番号付けされたアイテムに一般に対応し、図５と同様に、アドレス可能スペース６４０は、制御装置（図示せず）とＤＭＡコントローラ６３０の両方にアクセス可能なアドレス位置のマップである。図５と同様に、複数のパラメータ格納位置（６４３ａ〜６４３ｃ）がアドレス可能スペース６４０内で割当てされ、図５に関する詳細な説明と同様に、ＤＭＡコントローラ６３０は、送信元データ格納位置と送信先データ格納位置のベースアドレスと共に、転送されるデータ量と各転送の状態を示す値を書き込む状態格納位置の対応するベースアドレスを取得するため、パラメータ格納位置６４３ａ〜６４３ｃのそれぞれにアクセスする。しかしながら、図５に関して説明された実施例とは異なり、図６は、通常のインターバルにはなく、各パラメータ格納位置内に与えられる次のパラメータ格納位置に対するポインタを有するアドレス可能スペース６４０内に割当てられたパラメータ格納位置６４３ａ〜６４３ｃを示す。各転送の実行において、ＤＭＡコントローラ６３０は、代替パラメータ格納位置のベースアドレスを取得するためパラメータ格納位置６４３ｃ内のポインタへのアクセスが、ＤＭＡコントローラ６３０によるデータブロックの転送の実行が終了される、データブロックの転送のためのパラメータを有するパラメータ格納位置がもはや存在しないことを示すポインタを提供するまで、次のパラメータ格納位置のベースアドレスを取得するため、次のパラメータ格納位置へのポインタにアクセスする。
【００３９】
図６はまた、パラメータ格納位置６４３ａと６４３ｃに対応するデータ転送の状態を共通の状態格納位置（すなわち、状態格納位置６４４ａとｃ）に提供し、パラメータ格納位置６４３ｂに対応するデータ転送の状態を異なる状態格納位置（すなわち、状態格納位置６４４ｂ）に提供するための状態格納位置へのポインタの利用を示す。このような個別及び共通の状態格納位置の使用は、複数の転送が一部にＤＭＡコントローラ６３０を有するコンピュータシステムによる１つの機能の実行に関連し、他の転送が同一のコンピュータシステム内の異なる機能の実行に関する場合に効果的であるとわかるかもしれない。より詳細には、状態格納位置６４４ａ及びｃと６４４ｂは、異なる記憶装置及び／またはメモリバッファを有する装置内に割当されてもよい。例えば、状態格納位置６４４ａ及びｃは、ＣＰＵが対応する転送の状態を効率的に監視することができるようにシステムメモリ内に割当てされ、状態格納位置６４４ｂは、他方の装置が対応する転送の状態を効率的に監視することができるように、他の装置により与えられるメモリバッファ内に割当されてもよい。
【００４０】
図７は、コンピュータシステムを用いた実施例の他のブロック図である。図７において番号付けされたアイテムは、図２の番号付けされたアイテムに一般に対応し、図２のコンピュータシステムと同様に、コンピュータシステム７００は、少なくとも部分的に、ＣＰＵ７１０、バス７１９、論理７２０、バス７４９、システムメモリ７４０、バス７５９及び装置７５０から構成される。コンピュータシステム２００と同様に、これはコンピュータシステム２００のコアの多数の可能な形態の一例であり、コンピュータシステム２００はまたさらに、図示されない他のバス及び装置から構成されてもよいということが当業者に容易に理解されるであろう。論理７２０がバス７１９を介しＣＰＵ７１０に接続され、論理７２０が論理７２０内のメモリコントローラ７２２及びバス７４９を介し接続されるシステムメモリ７４０とのアクセスをＣＰＵ７１０に提供し、それを制御することを含むＣＰＵ７１０のサポートにおける各種機能を実行する。論理７２０はまた、論理７２０が論理７２０内のバスインタフェース７２７とバス７５９と共に、装置７５０内のバスインタフェース７５７を介し接続される装置７５０などのコンピュータシステム７００を構成する他の装置へのアクセスを提供する。
【００４１】
ＣＰＵ７１０は、システムメモリ７４０内に割当てられたデータ格納位置７４６から装置７５０の装置ストレージ７６０内に割当てられたデータ格納位置７６６へのデータブロックの転送を実行するようＤＭＡコントローラ７３０をＣＰＵ７１０にプログラムさせるシステムメモリ７４０内に格納されている命令シーケンス７１２を実行する。ＣＰＵ７１０は、システムメモリ７４０内に割当てられたＤＭＡ転送パラメータ格納位置７４３内のメモリ位置に実行される転送の各種パラメータを書き込む。このようなパラメータには、以下に限定するものではないが、データ格納位置７４６と７６６の開始アドレス、転送されるデータ量を示す値、及び転送状態が装置ストレージ７６０内に割当てられるＤＭＡ転送状態格納位置７４６に与えられることを示す値があげられる。ＣＰＵ７１０はまた、ＤＭＡ転送パラメータ格納位置７４３の開始アドレスを示す値と、当該転送を実行させるトリガーとしての１以上の制御ビットの値により、ＤＭＡコントローラ７３０内の１以上のパラメータレジスタ７３３を書き込みさせる。その後、ＤＭＡコントローラ７３０が当該転送を実行する。当該転送の実行中、ＣＰＵ７１０及び／または装置７５０は、ＤＭＡコントローラ７３０が転送完了を示す値をＤＭＡ転送状態格納位置７６４に書き込んだか判断するため、１回以上ＤＭＡ転送状態格納位置７６４を読み出すことが可能である。
【００４２】
ＣＰＵ７１０はまた、装置７５０内の装置ストレージ７６０内に割当てされたデータ格納位置７６８からシステムメモリ７４０内に割当てされたデータ格納位置７４８へのデータブロックの転送を実行するよう装置７５０をＣＰＵ７１０にプログラムさせる命令シーケンス７１２の多くを実行する。ＣＰＵ７１０は、実行される転送の各種パラメータを装置転送パラメータレジスタ７６８に書き込む。そのようなパラメータとして、以下に限定されるものではないが、データ格納位置７６８と７４８の開始アドレスや、転送されるデータ量を示す値があげられる。このとき、装置７５０が当該転送を実行する。
【００４３】
ＤＭＡコントローラ７３０を用いてシステムメモリ７４０から装置７５０にデータを転送し、装置７５０のマスタリング機能を用いて装置７５０からシステムメモリ７４０にデータを転送することは、ＤＭＡコントローラ７３０または装置７５０の何れかのみを用いることにより両方の転送を実行することにより可能になる場合より、データブロックの移動におけるより高い効率性を提供するかもしれない。このように、各転送は対応するバスインタフェース７２７と７５７が提供するライトバッファ７２８と７５８を利用して、バス７５９を介し１以上のライト処理として実行される。ライトバッファ７２８の利用は、ＤＭＡコントローラ７３０によるバス７５９を介した装置ストレージ７６０へのデータの書き込みが、ライトバッファ７２８から装置ストレージ７６０にバス７５９を介しデータの一部が伝搬されるに従い、ＤＭＡコントローラ７３０がシステムメモリ７４０から他のデータ部分を読み出すことが可能となるように、バッファリングまたは「ポスト処理」されることを可能にする。このため、装置７５０のバスマスタリング機能によるライトバッファ７５８の利用は、データの一部がバス７５９を介しライトバッファ７５８からシステムメモリ７４０に伝搬するに従い、装置７５０が装置ストレージ７６０から他のデータ部分を読み出すことができるように、バス７５９を介したシステムメモリ７４０への装置７５０によるデータの書き込みもまた「ポスト処理」されることを可能にする。
【００４４】
一部の実施例では、装置７５０のバスマスタリング機能とＤＭＡコントローラ７３０の組み合わせの上記利用は、装置７５０に対応する装置ドライバにより与えられる命令シーケンスをＣＰＵ７１０が実行することによりもたらされるようにしてもよい。このような装置ドライバは、システムメモリ７４０からデータを読み出すのに装置７５０のバスマスタリング機能の利用を回避し、装置ストレージ７６０からデータを読み出すのにＤＭＡコントローラ７３０の利用を回避することによって、装置７５０内の装置ストレージ７６０とシステムメモリ７４０との間のデータ転送の効率性を向上させるため、コンピュータ７００の通常処理中にＣＰＵ７１０により実行されるオペレーティングシステムとやりとりするようにしてもよい。
【００４５】
図８は、一実施例のフローチャートである。８１０において、転送されるデータの送信元位置及び送信先位置のベースアドレス、転送されるデータ量、及び転送状態が書き込まれる状態位置のベースアドレスのすべてが、ＤＭＡレジスタまたは他の機構を介しＤＭＡコントローラに提供される。ＤＭＡコントローラは、ＤＭＡ転送の実行を開始するよう通知され、８２０でこれを行う。８３０において、転送が実行されると、ＣＰＵまたは他の装置は、ＤＭＡコントローラが状態を書き込む状態位置から転送状態を読み出す。８４０において、ＤＭＡコントローラが転送完了を示す値を状態が書き込まれる状態位置にまだ書き込んでいない場合、８３０において他の状態読み出しが行われる。そうでない場合、ＤＭＡコントローラが転送完了を示す値を状態が書き込まれる状態位置に書き込んだ場合には、エンドに到達する。
【００４６】
図９は、データブロックの転送の他の実施例のフローチャートである。９１０において、以下に限定されるものではないが、転送されるデータのデータ送信元位置及び送信先位置のベースアドレス、転送されるデータ量、及び転送状態が書き込まれる状態位置のベースアドレスを含む転送パラメータのすべてが、システムメモリ、他の記憶装置またはバッファなどのアドレス可能メモリを有する装置内のパラメータ位置に書き込みされる。９２０において、９１０において当該転送のパラメータが書き込まれたパラメータ位置のベースアドレスが、ＤＭＡレジスタまたは他の機構を介しＤＭＡコントローラに与えられる。ＤＭＡコントローラは、転送の実行を開始するよう通知され、９３０においてこれを実行する。９４０において、転送が実行されると、ＣＰＵまたは他の装置は、ＤＭＡコントローラが状態を書き込むアドレス可能状態位置からＤＭＡ転送の状態を読み出す。９５０において、ＤＭＡコントローラがＤＭＡ転送の完了を示す値を状態が書き込みされる状態位置にまだ書き込んでいない場合、９４０において他の状態の書き込みが実行される。そうでない場合、ＤＭＡコントローラが転送完了を示す値を状態が書き込まれる状態位置に書き込んだ場合、エンドに到達する。
【００４７】
図１０は、実施例のフローチャートである。１０１０において、データ送信元位置とデータ送信先位置のベースアドレス、データ量及び状態位置のベースアドレスなどのパラメータ群が、複数の転送のための複数のパラメータ位置に書き込みされ、複数の転送のそれぞれに対応する複数の転送位置のそれぞれが実行される。１０２０において、転送パラメータが書き込みされる複数のパラメータ位置の第１のベースアドレスが、ＤＭＡレジスタまたは他の機構を介しＤＭＡコントローラに提供される。ＤＭＡコントローラは、ＤＭＡ転送の実行を通知され、１０３０においてこれを行い、１０３０において実行されたＤＭＡ転送が完了すると、１０４０において、当該ＤＭＡ転送の完了を示す状態が、当該転送に対応する状態位置に書き込みされる。７５０においてさらに実行されるべき他の転送のパラメータを有する他のパラメータ位置が表示されている場合、当該転送が１０３０において実行される。そうでない場合、さらに実行される転送に対応するパラメータ位置がもはや存在しない場合には、エンドに到達する。
【００４８】
複数の転送パラメータ位置が複数の転送を実行するサポートにおいて割当てられる上述の実施例のそれぞれにおいて、新たな転送に繰り返し再利用されるように、パラメータ位置がループとして利用される循環的または「ＦＩＦＯ的な」方法により転送パラメータ位置が利用される実施例の変形が存在するかもしれない。転送パラメータ位置がポインタを用いて、次の転送パラメータ位置が検出されるベースアドレスにＤＭＡコントローラを指示する場合、当該ポインタは、そうでない場合には「最後の」転送パラメータ位置であったかもしれないもののポインタが、そうでない場合には「最初の」転送パラメータ位置であったものにポインタ指定するように利用されてもよい。転送パラメータ位置がポインタを利用せず、所定のインターバルで記憶装置（またはストレージ位置を提供する他の装置）のアドレス可能スペース内に位置することに依存する場合、ＤＭＡコントローラには、それが最初のものに「ループバック」できるように、転送パラメータ位置のチェーンにおける最後のものとなる転送パラメータ位置の表示が与えられる。
【００４９】
本発明が、好適な実施例に関して説明された。多数の代替、改良、変形及び使用が上記説明に基づき当業者に明らかであることは明白である。また、本発明が音声／映像娯楽装置、自動車のコントローラ装置、電子回路により制御される家電機器などのコンピュータシステム以外の電子装置のサポートにおいて実現可能であるということは、当業者には理解されるであろう。
【符号の説明】
【００５０】
１００  コンピュータシステム
１１０  ＣＰＵ
１２０  論理
１４０  システムメモリ
【図１】
2011204269.tif 000003
【図２】
2011204269.tif 000004
【図３】
2011204269.tif 000005
【図４】
2011204269.tif 000006
【図５】
2011204269.tif 000007
【図６】
2011204269.tif 000008
【図７】
2011204269.tif 000009
【図８】
2011204269.tif 000010
【図９】
2011204269.tif 000011
【図１０】
2011204269.tif 000012