(57)【要約】様々な強化策をＤＭＡコントローラ（３４）に施し、ユニバーサル・シリアル・バス（ＵＳＢ）アプリケーションなど多様なＤＭＡアプリケーションで使用するためにＤＭＡコントローラ（３４）を最適化することができる。まず、ＤＭＡチャネル（２４）を介したデータ転送の長さを制御するカウント値を格納するために使用されるＤＭＡカウント・レジスタ（５４）は、選択的にディセイブルにされ、したがってＤＭＡカウント・レジスタ（５４）がディセイブルにされているとき、ＤＭＡ制御回路（３８）は、ＤＭＡカウント・レジスタ（５４）とは独立にデータ転送を実行することができる。エンドポイント・ウォッチドッグ・タイマ（４０）は、ＤＭＡ制御回路（３８）に接続され、所定の時間内にＤＭＡチャネル（２４）が１つもデータを受け取らなかったとき、割込みを発生するように構成することもできる。さらに、最終ワードが部分的なワードである場合、ＤＭＡ制御回路（３８）に、データ・パケットからのデータの最終ワードの伝送を遅延させるための部分的ワード遅延機能を組み込むことができる。さらに、ＵＳＢプロフィール回路（２６）は、ＤＭＡ制御回路（３８）に接続され、ＵＳＢプロフィール回路（２６）によってサポートされている複数のＵＳＢプロトコルのうちから選択されたＵＳＢプロトコルと共に使用するために、少なくとも１つのＤＭＡ制御回路（３８）の動作パラメータを制御し、選択的にＤＭＡ制御回路（３８）を最適化することができる。
2006502491.tif 000002
【特許請求の範囲】
【請求項１】
（ａ）少なくとも１つのダイレクト・メモリ・アクセス（ＤＭＡ）チャネルを介してデータを通信するように構成されたＤＭＡ制御回路と、
（ｂ）前記ＤＭＡチャネルを介したデータ転送の長さを制御するカウント値を格納するように構成されたＤＭＡカウント・レジスタと
を含み、
前記ＤＭＡ制御回路が、前記ＤＭＡカウント・レジスタを選択的にディセイブルにし、前記ＤＭＡカウント・レジスタとは独立にデータ転送を実施するように構成されることを特徴とする回路装置。
【請求項２】
前記ＤＭＡ制御回路に結合され、前記ＤＭＡチャネルによって所定の時間内に１つもデータが受信されない場合、割込みを発生するように構成されたエンドポイント・ウォッチドッグ・タイマをさらに含むことを特徴とする請求項１記載の回路装置。
【請求項３】
前記ＤＭＡ制御回路は、前記ＤＭＡチャネルを介してデータ・パケットを通信するとき、最終ワードが部分的なワードである場合、前記データ・パケットからのデータの前記最終ワードの伝送を遅延させるように構成されることを特徴とする請求項１記載の回路装置。
【請求項４】
前記ＤＭＡ制御回路は、前記ＤＭＡ制御回路に部分的ワード遅延モードが選択されているときだけ、データの前記最終ワードの伝送を遅延させるように構成されることを特徴とする請求項３記載の回路装置。
【請求項５】
前記ＤＭＡチャネルを介したデータ転送中に検出されたエラーをロギングするように構成されたエラー・カウンタ・レジスタをさらに含むことを特徴とする請求項１記載の回路装置。
【請求項６】
前記ＤＭＡ制御回路は、前記ＤＭＡチャネルのシャット・オフ要求の受信に応答して前記ＤＭＡチャネルをシャット・オフするのに先立ち、前記ＤＭＡチャネルを介したデータ・パケットからのデータの進行中の転送を完了するように構成されることを特徴とする請求項１記載の回路装置。
【請求項７】
前記ＤＭＡチャネルのシャット・オフ要求は、条件付停止要求であることを特徴とする請求項６記載の回路装置。
【請求項８】
前記ＤＭＡチャネルを介して伝送されるデータ量を累積するように構成されたバイト・カウンタをさらに含むことを特徴とする請求項１記載の回路装置。
【請求項９】
前記ＤＭＡ制御回路は、カウント・モードおよび連続モードで選択的に動作可能であり、
前記カウント・モードでは、前記ＤＭＡ制御回路は、前記ＤＭＡカウント・レジスタをイネーブルにし、
前記連続モードでは、前記ＤＭＡ制御回路は、前記ＤＭＡカウント・レジスタをディセイブルにすることを特徴とする請求項１記載の回路装置。
【請求項１０】
前記ＤＭＡ制御回路は、パケット・エンド・モードで選択的に動作可能であり、
前記パケット・エンド・モードでは、前記ＤＭＡ制御回路は、前記ＤＭＡカウント・レジスタをディセイブルにし、データ・パケット・エンドの検出に応答して前記ＤＭＡチャネルを介したデータ転送を完了することを特徴とする請求項９記載の回路装置。
【請求項１１】
前記ＤＭＡ制御回路に結合されたユニバーサル・シリアル・バス（ＵＳＢ）プロフィール回路をさらに含み、前記ＵＳＢプロフィール回路はこのＵＳＢプロフィール回路によってサポートされている複数のＵＳＢプロトコルのうちから選択されたＵＳＢプロトコルと共に使用するために、少なくとも１つの前記ＤＭＡ制御回路の動作パラメータを制御し、選択的に前記ＤＭＡ制御回路を最適化するように構成されたことを特徴とする請求項１記載の回路装置。
【請求項１２】
前記ＤＭＡ制御回路に結合されたユニバーサル・シリアル・バス（ＵＳＢ）エンドポイントをさらに含み、
前記ＤＭＡ制御回路が、前記ＵＳＢエンドポイントとプログラム可能な電子装置の間のデータ転送を制御するように構成されることを特徴とする請求項１記載の回路装置。
【請求項１３】
前記ＤＭＡ制御回路は、複数のＤＭＡチャネルを介してデータを通信するように構成され、
前記回路装置が、それぞれ前記複数のＤＭＡチャネルと関連付けられた複数のＤＭＡカウント・レジスタを含み、
前記ＤＭＡカウント・レジスタのそれぞれが、前記関連付けられたＤＭＡチャネルを介したデータ転送の実行中、前記ＤＭＡ制御回路によって選択的にディセイブルにされるように構成されることを特徴とする請求項１記載の回路装置。
【請求項１４】
請求項１記載の前記回路装置を含むことを特徴とするＤＭＡコントローラ。
【請求項１５】
請求項１記載の前記回路装置を含むことを特徴とするＵＳＢコントローラ。
【請求項１６】
請求項１記載の前記回路装置を含むことを特徴とする集積回路。
【請求項１７】
請求項１記載の前記回路装置を定義するためのハードウェア定義プログラムと、
前記ハードウェア定義プログラムを記録するための信号記録媒体とを含み、
前記信号記録媒体が、少なくとも１つの記録可能な媒体と、伝送媒体とを含むことを特徴とするプログラム製品。
【請求項１８】
ダイレクト・メモリ・アクセス（ＤＭＡ）制御回路を有するＤＭＡチャネルを介してデータを転送する方法であって、
（ａ）第１のデータ転送動作の長さを制御するＤＭＡカウント・レジスタにカウント値を格納することによって、前記ＤＭＡチャネルを介した前記第１のデータ転送動作を実行するステップと、
（ｂ）第２のデータ転送動作が、前記ＤＭＡカウント・レジスタとは独立に実行されるように前記ＤＭＡカウント・レジスタをディセイブルにすることによって、前記ＤＭＡチャネルを介した前記第２のデータ転送動作を実行するステップと、
を含むことを特徴とする方法。
【請求項１９】
前記第２のデータ転送動作を実行するステップは、前記ＤＭＡチャネルによって所定の時間内に１つもデータが受信されなかったとき、前記ＤＭＡ制御回路に結合されたエンドポイント・ウォッチドッグ・タイマを用いて割込みを発生するステップを含むことを特徴とする請求項１８記載の方法。
【請求項２０】
前記第２のデータ転送動作を実行することが、前記ＤＭＡチャネルを介してデータ・パケットを転送し、最終ワードが部分的なワードである場合、前記データ・パケットからのデータの前記最終ワードの伝送を遅延させることを含むことを特徴とする請求項１８記載の方法。
【請求項２１】
前記第２のデータ転送動作を実行するステップは、前記ＤＭＡチャネルを介したデータ転送中に検出されたエラーをエラー・カウンタ・レジスタにロギングするステップを含むことを特徴とする請求項１８記載の方法。
【請求項２２】
前記第２のデータ転送動作を実行するステップは、データ・パケットのデータ転送の完了に先立ち、受け取った前記ＤＭＡチャネルのシャット・オフ要求の受信に応答して前記ＤＭＡチャネルをシャット・オフするのに先立ち、前記ＤＭＡチャネルを介した前記データ・パケットからのデータの転送を完了するステップを含むことを特徴とする請求項１８記載の方法。
【請求項２３】
前記第１および第２のデータ転送動作の実行中、前記ＤＭＡチャネルを介して転送されるデータ量をバイト・カウンタに累積するステップをさらに含むことを特徴とする請求項１８記載の方法。
【請求項２４】
前記第１のデータ転送動作を実行するステップは、カウント・モードで動作するように前記ＤＭＡ制御回路を構成するステップを含み、
前記第２のデータ転送動作を実行するスッテプは、連続モードで動作するように前記ＤＭＡ制御回路を構成するステップを含むことを特徴とする請求項１８記載の方法。
【請求項２５】
パケット・エンド・モードで動作するように前記ＤＭＡ制御回路を構成するステップと、
データ・パケット・エンドの検出に応答して第３のデータ転送動作を完了するステップとを含む、第３のデータ転送動作を実行するステップをさらに含むことを特徴とする請求項２４記載の方法。
【請求項２６】
前記第１および第２のデータ転送動作を実行するステップは、それぞれＵＳＢエンドポイントとの間でユニバーサル・シリアル・バス（ＵＳＢ）データを転送するステップを含み、
ＵＳＢプロフィール回路によってサポートされている複数のＵＳＢプロトコルのうちから選択されたＵＳＢプロトコルと共に使用するために、前記ＵＳＢプロフィール回路を使用して少なくとも１つの前記ＤＭＡ制御回路の動作パラメータを制御し、選択的に前記ＤＭＡ制御回路を最適化するステップをさらに含むことを特徴とする請求項１８記載の方法。
【請求項２７】
（ａ）少なくとも１つのダイレクト・メモリ・アクセス（ＤＭＡ）チャネルを介してデータを通信するように構成されたＤＭＡ制御回路と、
（ｂ）前記ＤＭＡ制御回路に結合され、前記ＤＭＡチャネルによって所定の時間内に一つもデータが受信されない場合、割込みを発生するように構成されたエンドポイント・ウォッチドッグ・タイマと、
を含むことを特徴とする回路装置。
【請求項２８】
前記エンドポイント・ウォッチドッグ・タイマは、前記ＤＭＡ制御回路がデータの受信に応答してリセットされるように構成されることを特徴とする請求項２７記載の回路装置。
【請求項２９】
前記ＤＭＡ制御回路は、前記エンドポイント・ウォッチドッグ・タイマを選択的にイネーブルにするように構成されることを特徴とする請求項２７記載の回路装置。
【請求項３０】
ダイレクト・メモリ・アクセス（ＤＭＡ）制御回路を有するＤＭＡチャネルを介してデータを転送する方法であって、
（ａ）前記ＤＭＡチャネルを介してデータを転送するステップと、
（ｂ）前記ＤＭＡチャネルのデータ受け取りに応答して、エンドポイント・ウォッチドッグ・タイマをリセットするステップと、
（ｃ）前記ＤＭＡチャネルによって所定の時間内に１つもデータが受信されていない場合、前記エンドポイント・ウォッチドッグ・タイマを用いて割込みを発生するステップと、  
を含むことを特徴とする方法。
【請求項３１】
前記エンドポイント・ウォッチドッグ・タイマの時間切れに応答して、データの部分的なワードの転送を完了するステップをさらに含むことを特徴とする請求項３０記載の方法。
【請求項３２】
少なくとも１つのダイレクト・メモリ・アクセス（ＤＭＡ）チャネルを介してデータを通信するように構成されたＤＭＡ制御回路を含み、
前記ＤＭＡ制御回路は、前記ＤＭＡチャネルを介してデータ・パケットを通信するとき、最終ワードが部分的なワードである場合、前記データ・パケットからのデータの前記最終ワードの伝送を遅延させるように構成されることを特徴とするダイレクト・メモリ・アクセス回路装置。
【請求項３３】
前記ＤＭＡ制御回路は、前記ＤＭＡ制御回路に部分的ワード遅延モードが使用可能にされている場合だけ、データの前記最終ワードの伝送を遅延させるように構成されることを特徴とする請求項３２記載の回路装置。
【請求項３４】
前記ＤＭＡ制御回路は、前記ＤＭＡチャネルを介した前記最終ワードの伝送に先立ち、その後のデータ・パケットからのデータを前記最終ワード中に格納するように構成されることを特徴とする請求項３２記載の回路装置。
【請求項３５】
ダイレクト・メモリ・アクセス（ＤＭＡ）制御回路を有するＤＭＡチャネルを介してデータを転送する方法であって、
（ａ）前記ＤＭＡチャネルを介してデータ・パケットを転送するステップと、
（ｂ）最終ワードが部分的なワードである場合、前記データ・パケットからのデータの前記最終ワードの伝送を遅延させるステップと、
を含むことを特徴とする方法。
【請求項３６】
（ａ）少なくとも１つのダイレクト・メモリ・アクセス（ＤＭＡ）チャネルを介してデータを通信するように構成されたＤＭＡ制御回路と、
（ｂ）前記ＤＭＡ制御回路に結合されたユニバーサル・シリアル・バス（ＵＳＢ）プロフィール回路と、
を含み、前記ＵＳＢプロフィール回路は、このＵＳＢプロフィール回路によってサポートされている複数のＵＳＢプロトコルのうちから選択されたＵＳＢプロトコルと共に使用するために、少なくとも１つの前記ＤＭＡ制御回路の動作パラメータを制御し、選択的に前記ＤＭＡ制御回路を最適化するように構成されたことを特徴とする回路装置。
【請求項３７】
前記ＤＭＡチャネルを介したデータ転送の長さを制御するカウント値を格納するように構成されたＤＭＡカウント・レジスタをさらに含み、
前記ＵＳＢプロフィール回路によって制御される前記少なくとも１つの動作パラメータが、前記ＤＭＡカウント・レジスタについてのイネーブル／ディセイブル状況を含むことを特徴とする請求項３６記載の回路装置。
【請求項３８】
前記ＤＭＡ制御回路は、選択的にカウント・モードおよび連続モードで動作可能であり、
前記カウント・モードでは、前記ＤＭＡ制御回路は、前記ＤＭＡカウント・レジスタをイネーブルにし、
前記連続モードでは、前記ＤＭＡ制御回路は、前記ＤＭＡカウント・レジスタをディセイブルにし、
前記ＵＳＢプロフィール回路によって制御される前記少なくとも１つの動作パラメータは、前記カウント・モードと前記連続モードの間で選択することを特徴とする請求項３７記載の回路装置。
【請求項３９】
前記ＤＭＡ制御回路は、選択的にパケット・エンド・モードで動作可能であり、
前記パケット・エンド・モードでは、前記ＤＭＡ制御回路は、前記ＤＭＡカウント・レジスタをディセイブルにし、データ・パケット・エンドの検出に応答して前記ＤＭＡチャネルを介したデータ転送を完了し、
前記ＵＳＢプロフィール回路によって制御される前記少なくとも１つの動作パラメータは、前記パケット・エンド・モード、前記カウント・モードと前記連続モードの間で選択することを特徴とする請求項３８記載の回路装置。
【請求項４０】
前記ＤＭＡ制御回路に結合され、前記ＤＭＡチャネルによって所定の時間内に１つもデータが受信されていない場合、割込みを発生するように構成されたエンドポイント・ウォッチドッグ・タイマをさらに含み、
前記ＵＳＢプロフィール回路によって制御される前記少なくとも１つの動作パラメータは、前記エンドポイント・ウォッチドッグ・タイマについてのイネーブル／ディセイブル状況を含むことを特徴とする請求項３６記載の回路装置。
【請求項４１】
前記ＵＳＢプロフィール回路によって制御される前記少なくとも１つの動作パラメータは、前記ＤＭＡ制御回路用の部分的ワード遅延モードについてのイネーブル／ディセイブル状況を含み、
前記部分的ワード遅延モードが使用可能にされているとき、前記ＤＭＡ制御回路は、前記ＤＭＡチャネルを介してデータ・パケットを通信するときに最終ワードが部分的なワードである場合、データ・パケットからのデータの前記最終ワード伝送を遅延させるように構成されることを特徴とする請求項３６記載の回路装置。
【請求項４２】
前記ＤＭＡチャネルを介したデータ転送中に検出されたエラーをロギングするように構成されたエラー・カウンタ・レジスタをさらに含み、
前記ＵＳＢプロフィール回路によって制御される前記少なくとも１つの動作パラメータは、前記エラー・カウンタ・レジスタについてのイネーブル／ディセイブル状況を含むことを特徴とする請求項３６記載の回路装置。
【請求項４３】
前記ＤＭＡチャネルを介して伝送されるデータ量を累積するように構成されたバイト・カウンタをさらに含み、
前記ＵＳＢプロフィール回路によって制御される前記少なくとも１つの動作パラメータは、前記バイト・カウンタについてのイネーブル／ディセイブル状況を含むことを特徴とする請求項３６記載の回路装置。
【請求項４４】
前記ＵＳＢプロフィール回路によってサポートされている複数のＵＳＢプロトコルは、制御プロトコル、割込みプロトコル、アイソクロナス・プロトコルおよびバルク・プロトコルのうちの少なくとも１つを含むことを特徴とする請求項３６記載の回路装置。
【請求項４５】
前記ＵＳＢプロフィール回路は、少なくとも１つの前記ＤＭＡ制御回路の動作パラメータを制御し、選択されたアプリケーション・インターフェースと共に使用するために選択的に前記ＤＭＡ制御回路を最適化するようにさらに構成され、
前記選択されたアプリケーション・インターフェースが、メモリ・インターフェースおよびレジスタ・インターフェースのうちから選択されることを特徴とする請求項３６記載の回路装置。
【請求項４６】
前記ＤＭＡ制御回路に結合されたユニバーサル・シリアル・バス（ＵＳＢ）エンドポイントをさらに含み、
前記ＤＭＡ制御回路は、前記ＵＳＢエンドポイントとプログラム可能な電子装置の間のデータ転送を制御するように構成され、
前記ＵＳＢプロフィール回路は、前記ＵＳＢエンドポイントを最適化するように構成されることを特徴とする請求項３６記載の回路装置。
【請求項４７】
前記ＤＭＡ制御回路は、複数のＤＭＡチャネルを介してデータを通信するように構成され、
前記ＵＳＢプロフィール回路は、複数のプロフィール・レジスタを含み、
各前記プロフィール・レジスタは、前記複数のＤＭＡチャネルのうちの関連付けられたＤＭＡチャネルと関連付けられた少なくとも１つの動作パラメータを制御するように構成されることを特徴とする請求項３６記載の回路装置。
【請求項４８】
前記ＵＳＢプロフィール回路は、プロフィール・レジスタを含むことを特徴とする請求項３６記載の回路装置。
【請求項４９】
請求項３６記載の前記回路装置を含むＤＭＡコントローラ。
【請求項５０】
請求項３６記載の前記回路装置を含むＵＳＢコントローラ。
【請求項５１】
請求項３６記載の前記回路装置を含む集積回路。
【請求項５２】
請求項３６記載の前記回路装置を定義するためのハードウェア定義プログラムと、
前記ハードウェア定義プログラムを記録するための信号記録媒体とを含み、
前記信号記録媒体は、少なくとも１つの記録可能な媒体と、伝送媒体とを含むことを特徴とするプログラム製品。
【請求項５３】
ＤＭＡ制御回路を有するダイレクト・メモリ・アクセス（ＤＭＡ）チャネルを介してデータを転送する方法であって、
（ａ）前記ＤＭＡ制御回路に結合されたユニバーサル・シリアル・バス（ＵＳＢ）プロフィール回路を用いて、少なくとも１つの前記ＤＭＡ制御回路の動作パラメータを動的に構成し、複数のＵＳＢプロトコルのうちから選択されたＵＳＢプロトコルと共に使用するために前記ＤＭＡ制御回路を最適化するステップと、
（ｂ）前記ＵＳＢプロフィール回路は前記ＤＭＡチャネルを動的に構成しながら、前記ＤＭＡチャネルを介してＵＳＢデータを転送するためのデータ転送動作を実行するステップと
を含むことを特徴とする方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般にメモリのアクセスおよび転送に関し、詳細にはダイレクト・メモリ・アクセス（ＤＭＡ）コントローラに関する。
【背景技術】
【０００２】
コンピュータまたは他の電子システム内でのデータ転送は、そのシステムの性能における不可欠な要因であることがしばしばである。コンピュータまたは他の電子システムの中央処理装置（ＣＰＵ）が、いかに速くデータを処理できるかにかかわらず、ＣＰＵとの間で十分速くデータを通信できない場合、システム性能は、必ず影響を受けることになる。
【０００３】
データ転送性能を向上させるために使用されてきた一技法は、ダイレクト・メモリ・アクセス（ＤＭＡ）として知られている。ＤＭＡは、ＣＰＵとは独立してデータ転送を扱うための専用のコントローラまたは回路を利用し、したがってＣＰＵを開放してデータ転送動作中他のタスクを扱うことができるようにする。通常、ＤＭＡを使用してメモリと、拡張カード、ネットワーク用ポート、記憶装置など周辺または入出力（Ｉ／Ｏ）装置との間でデータを転送する。
【０００４】
従来のＤＭＡコントローラは、データ転送動作を扱うためのＣＰＵの働きをほとんど必要としないことがしばしばである。通常、たとえば動作のソースおよび宛先、ならびに転送するデータ量を指定することによって、特定の転送動作を処理するためにＤＭＡコントローラを初期化することがＣＰＵに要求される。ＤＭＡ制御ロジックには、従来、所与の動作で転送するデータの全バイト数でＣＰＵによって初期化されるバイト・カウンタが含まれる。
【０００５】
一度ＣＰＵがデータ転送動作を開始すると、ＤＭＡ制御ロジックは、もうそれ以上ＣＰＵの介在なしで、データの転送を開始することになる。データ転送動作中、ＤＭＡ制御ロジックは、データ・バイトを転送する毎に、バイト・カウンタがゼロになるまで、バイト・カウンタを１だけ減らす。ゼロになったとき、ＤＭＡ制御ロジックは、ＣＰＵに割込み信号を送り、ＣＰＵにデータ転送動作が完了したことを通知することができる。
【０００６】
ＤＭＡがしばしば共に使用される多くの周辺装置は、比較的簡単なプロトコルに依拠している。いくつかの装置として、たとえば、利用可能なキャラクタを有する場合はいつでもＤＭＡ制御ロジックに信号を送るキャラクタ・ベースの装置がある。このような例では、転送する入力キャラクタ数は、通常ルール・ベース（すなわち、定数またはプロトコルによって動的に定義される数）である。他の装置として、固定ブロック・サイズを使用して、ＤＭＡ制御ロジック中のバイト・カウンタをプログラムするブロック装置がある。
【０００７】
他の周辺装置は、そのように簡単ではない。たとえば、ユニバーサル・シリアル・バス（ＵＳＢ）仕様書は、周辺装置をコンピュータに接続するためのシリアル・データ転送プロトコルを定義している。ＵＳＢ仕様書は、表示装置、オーディオ・スピーカ、プリンタ、キーボード、マウス、ネットワーク・アダプタ、モデムなどを含め、広範囲の周辺装置をサポートするために開発された。これらの装置は、すべて異なる機能およびデータ伝送特性を有し、したがってＵＳＢ仕様書は、標準化してデータを包むようにパケット・ベースのインターフェースを定義しており、実際どんなタイプの周辺装置もサポートする。しかし、ＵＳＢバスによって送受信されるすべてのデータ・パケット内に含まれた情報量は、首尾一貫したものでないし予測可能でもないことに留意されたい。
【０００８】
さらに、基礎をなすＵＳＢプロトコルは、簡単ではない。ＵＳＢ仕様書２．０によると、たとえば、制御、バルク、割込みおよびアイソクロナスとして呼ばれる、４つの通信プロトコルがある。制御プロトコルは、双方向データ転送をサポートする。割込みプロトコルおよびアイソクロナス・プロトコルは、本質的に周期的であり、保証付き送出スケジュールを有し、アイソクロナス・プロトコルは、転送速度を落とすことができない（すなわち、リアルタイム・プロトコルである）。個々のエンドポイント上で１９２Ｍｂ／ｓのデータ転送速度を持続することが可能である。
【０００９】
ＵＳＢ仕様書のいくつかの特定のニュアンスに起因して、従来のＤＭＡ制御ロジック設計は、ＵＳＢ装置用のコントローラ中に組み込むには十分適していない。
【００１０】
第１に、ＵＳＢ装置は、ＤＭＡバイト・カウンタ中にバイト・カウントをロードし、次いで、バイト・カウントがゼロになったとき、自動的にＤＭＡ制御ロジックをオフにし、データ転送動作を完了させるというパラダイムに容易に適応しない。ＵＳＢ仕様書では、単一データ・パケット中で受け取ることになるバイト数は、保証されていない。さらに、リアルタイムのアイソクロナス・プロトコルでは、メッセージ長は、無関係であり、周期的な割込みプロトコルまたは非周期的なバルク・プロトコルおよび制御プロトコルでは、メッセージ長は、データが受信されつつあるとき既知でないことがしばしばである。
【００１１】
メッセージ中のデータ・バイトの全数も、メッセージの単一パケット中のバイト数も一貫して予測可能でなく、従来のＵＳＢ実装形態では、通常パケット・ベースでＤＭＡ制御ロジックをターン・オフするという単純化した仮定を行う。しかし、そうすることによって、ＣＰＵが要求する監視量が、しばしば増加し、したがってシステム性能が低下する。
【００１２】
第２に、多数のＣＰＵは、いくつかのＵＳＢ関連ＤＭＡ転送に介在するには、あまりにも遅い。上記で述べたように、リアルタイムのアイソクロナス・プロトコルは、転送速度を落とすことができず、１９２Ｍｂ／ｓまでの持続したデータ転送速度をサポートする。単一ＵＳＢデータ・パケット中で転送できるバイトの最大数は、１０２４バイトであり、したがって最大持続速度において、ＵＳＢコントローラ内の従来のＤＭＡ制御ロジックは、それが転送サービスを実施する高バンド幅のエンドポイント毎に、平均して４３μｓ毎にターン・オフすることができる。一方、リナックス・オペレーティング・システムの組み込み型リアルタイム版は、割込み処理ルーチンにプログラム制御を渡しそれから戻るために、約１００命令およびスタックへの５０アクセスを実行する。プロセッサおよびメモリのバス速度およびキャッシュ・サイズに依存して、このシステム・オーバーヘッドは、通常２μｓ〜５μｓの範囲にあり、実際に割込みハンドラが実行するための時間を含んでさえいない。このオーバーヘッドは、一エンドポイントだけを表し、ダブル・バッファのエンドポイントの場合でさえ、従来のＤＭＡ制御ロジックは、１７μｓ以内に再スタートし、１０２４バイトの転送を完了できることが必要になり、そうできない場合、データが、失われることがある。その結果、多数のＣＰＵは、確実には高バンド幅アイソクロナス転送中に介在することができない。
【００１３】
第３に、現在のバス・アーキテクチャは、ＵＳＢ関連ＤＭＡデータ・コンテンツをしばしば損なうことがある。具体的には、従来のＤＭＡコントローラは、バイト指向型であり、一方大部分の現在のバス・アーキテクチャは、ワード指向型である。その結果、データ・パケット中で受け取ったバイト数が、バス・ワード・サイズの倍数でない場合、従来のＤＭＡコントローラは、一部が有効なだけのデータによって最終ワードの転送を行う。最終ワード転送の残りのデータは、無効であり、したがってデータが、大容量記憶装置などのブロック装置宛である場合、ＣＰＵ上で実行するソフトウェアは、データ転送動作が完了したとき、受け取ったパケットのサイズをセーブし、ワードを部分的に調整し（非常に重荷になることがある）、必要になるすべてのブロック・オーバーフロー調整を実施し、ＤＭＡコントローラを再使用可能にすることが必要になるはずである。そのようなオーバーヘッドは、ＤＭＡが対処しようと企図するまさにそのようなＣＰＵオーバーヘッドのタイプであり、したがってＵＳＢ関連ＤＭＡ転送を扱うために必要なＣＰＵ監視のその度合いは、望ましくない。
【発明の開示】
【発明が解決しようとする課題】
【００１４】
したがって、従来のＤＭＡコントローラ設計が有する前述の限界に対処し、具体的には、そのようなＤＭＡ制御ロジックが、ＵＳＢ関連データ転送および他に関して利用されるときいつも生じる欠点に対処する、ＤＭＡ制御ロジックが、当業界に大いに必要である。
【課題を解決するための手段】
【００１５】
本発明は、ＤＭＡコントローラをいくつか強化するための従来の技術に関連したこれらおよび他の問題に対処し、ＵＳＢ互換用途などの多様なＤＭＡ用途で使用する目的で、独立してまたは協同でＤＭＡコントローラを最適化するために使用することができる。これから述べる様々な方法でＤＭＡ制御ロジックを強化することによって、ＣＰＵに要求する監視の量とその程度が、実質的に減少し、それによってＣＰＵを開放してＤＭＡ転送動作と同時に他の動作を実行させ、したがってシステム性能の全体が向上する。
【００１６】
本発明の一態様によれば、例えばＤＭＡチャネルを介するデータ転送の長さを制御するカウント値を格納するために使用されるＤＭＡカウント・レジスタは、ＤＭＡカウント・レジスタがディセイブルにされているとき、ＤＭＡ制御回路がＤＭＡカウント・レジスタとは独立にデータ転送を実施できるように、選択的にディセイブルにされうる。本発明の他の態様によれば、エンドポイント・ウォッチドッグ・タイマは、ＤＭＡ制御回路に結合され、所定の時間内にＤＭＡチャネルによって１つもデータが受信されていない場合、割込みを発生するように構成することができる。さらに、本発明の他の態様によれば、ＤＭＡ制御回路は、部分的にしか有効でないワードを遅延させる機能を組み込み、最終ワードが部分的なワードである場合、データ・パケットからのデータの最終ワードの転送を遅らせることができる。
【００１７】
さらに、ＤＭＡ制御回路がＵＳＢ用途で利用される場合、ＵＳＢプロフィール回路は、ＤＭＡ制御回路に結合され、ＵＳＢプロフィール回路によってサポートされている複数のＵＳＢプロトコルのうちから選択されたＵＳＢプロトコルと共に使用するために、少なくとも１つのＤＭＡ制御回路の動作パラメータを制御し、選択的にＤＭＡ制御回路を最適化するように構成することができる。
【００１８】
これらおよび他の利点および特徴は、本発明を特徴づけるもので、本明細書に添付の特許請求の範囲中に述べてあり、さらにその一部分を形成する。しかし、本発明を、ならびにそれを使用することによって達成される利点および目的をよりよく理解するために、本発明の例示的実施形態が説明された図面、および添付の説明資料を参照されたい。
【００１９】
本明細書で説明する実施形態は、ＤＭＡコントローラに対して１つまたは複数の強化策を活用して、ＵＳＢ関連用途および具体的にはＵＳＢ仕様書２．０と互換性のある用途など多様なＤＭＡ用途において、ＤＭＡ転送動作の性能を最適化する。しかし、以降に述べる様々な強化策は、互いに別々に利用することができることを理解されたい。さらに、本明細書に述べる強化策は、ＵＳＢ互換の用途ではない用途に利用することができる。したがって、本発明は、本明細書に議論される具体的な実装形態に限定されるものでない。
【発明を実施するための最良の形態】
【００２０】
ここで、図面を参照すると、いくつかの図面を通して同じ参照番号は、同じ構成部品を表し、図１に、本発明によるＤＭＡコントローラを組み込んだ装置１０用の例示的なハードウェアおよびソフトウェアの環境が示されている。本発明の目的のために、装置１０は、クライアント・コンピュータ、サーバ・コンピュータ、可搬型コンピュータ、携帯型コンピュータ、組み込み型コントローラなど含め、ＵＳＢホスト装置として働くことができる、実際すべてのタイプのコンピュータ、コンピュータ・システムまたは他のプログラム可能な電子装置を代表することができる。装置１０は、以降「コンピュータ」として呼ぶこともあるが、用語「装置」は、本発明による適切な他のプログラム可能な電子装置も含むことがあることを理解されたい。
【００２１】
さらに、本発明によるＤＭＡコントローラは、ＵＳＢスレーブ装置内で利用することもできることを理解されたい。さらに、本明細書に述べる多数の特徴は、他のＵＳＢ仕様書版を含む他のメモリ転送用途、ならびに多数の非ＵＳＢ用途で利用されるＤＭＡコントローラ中に実装することもできる。したがって、本発明は、以降に述べる具体的なＵＳＢホストの実施に限定されるものでない。
【００２２】
通常、コンピュータ１０は、メモリ１６に結合された１つまたは複数のマイクロプロセッサを含む中央処理装置（ＣＰＵ）１４に結合されたシステム・バス１２を含む。メモリ１６は、コンピュータ１０のメイン・メモリを含むランダム・アクセス・メモリ（ＲＡＭ）装置、ならびに例えばキャッシュ・メモリ、不揮発性メモリまたはバックアップ・メモリ（例えば、プログラム可能なメモリまたはフラッシュ・メモリ）、リード・オンリー・メモリなど、どんな補助的なレベルのメモリも代表することができる。さらに、メモリ１６は、コンピュータ１０中のどこにでも物理的に位置するメモリ装置、例えばＣＰＵ１４中のプロセッサ中のすべてのキャッシュ・メモリ、ならびに、例えば大容量記憶装置上に、またはコンピュータ１０に結合された他のコンピュータ上に格納するようなバーチャル・メモリとして使用されるすべての記憶機能を含むと考えることができる。
【００２３】
ＵＳＢ接続性を提供するために、ＵＳＢコントローラ１８は、システム・バス１２に追加して結合される。さらに、コンピュータ１０中で利用できる他の入出力（Ｉ／Ｏ）機能、たとえば大容量記憶装置、ネットワーク・アダプタ、ワークステーション・アダプタ、マウスおよびキーボードなどの周辺入力装置、ビデオ表示装置およびアダプタなどは、総称的にＩ／Ｏブロック２０によって代表され、それらもシステム・バス１２に結合されていることが示されている。
【００２４】
ＵＳＢコントローラ１８は、ＵＳＢ仕様書２．０と互換性があるものとして示され、一般にシステム・バスとインターフェースし、ＵＳＢワイヤ２２を有する、１つまたは複数のＵＳＢネットワークを代表する。ＵＳＢコントローラ１８は、通常１つまたは複数のＵＳＢチャネル２４（チャネル０からＮとしても示される）をサポートするデバイス・ポートを定義する。さらに、各チャネル２４と関連付けられるのは、プロフィール・レジスタ２６であり、それは、以降議論するように、チャネルを介して転送される具体的なデータ・タイプに依存して最適な性能を引き出すように、各チャネルを構成するために使用される。
【００２５】
各チャネル２４は、エンドポイント２８を含み、そのなかに制御ロジック回路３２の制御下にある先入れ先出し（ＦＩＦＯ）バッファ３０が、組み込まれている。各チャネル２４は、ＤＭＡ制御ロジック回路３８の制御下にあるＦＩＦＯバッファ３６を含むＤＭＡコントローラ３４も含む。制御ロジック回路３８は、関連付けられたウォッチドッグ・タイマ４０の動作も制御し、ウォッチドッグ・タイマ４０は、タイムアウト条件の結果としてシステム・バス１２上に割込み（割込み０）を発行するように構成される。
【００２６】
各チャネル中の制御ロジック回路３２、３８の動作は、チャネル２４と関連付けられたプロフィール・レジスタ２６中に格納されたプロフィール情報に基づき、カスタマイズされる。一度構成されると、回路３２、３８は、転送経路４２によって示されているように、ＵＳＢ仕様書２．０に一致する方法で、ＵＳＢワイヤ２２と、システム・バス１２を介してアクセス可能なレジスタまたはメモリとの間でデータを転送する。
【００２７】
ＵＳＢコントローラ２０は、通常、１つまたは複数の集積回路デバイス、ならびに追加のサポートする電子構成要素を組み込んだ回路装置で実装されることを理解されよう。たとえば、各ＤＭＡコントローラ３４は、各エンドポイント２８と同じまたは異なる集積回路デバイス中に実装でき、各チャネルの制御回路は、同じまたは異なる集積回路上に実装することができる。ＵＳＢコントローラは、たとえばシステム・オン・チップ（ＳＯＣ）実装の形で、追加の回路、たとえばシステム・バス１２、ＣＰＵ１４、メモリ１６および／またはＩ／Ｏブロック１８と集積化することもできる。
【００２８】
さらに、各チャネル２４のＤＭＡコントローラは、別々のＤＭＡコントローラまたは単一ＤＭＡコントローラ内のロジック回路と考えることができる。
【００２９】
当業界では周知のように、集積回路デバイスは、通常、１つまたは複数のコンピュータ・データ・ファイルを使用して設計され、製作され、このデータ・ファイルは、本明細書でデバイス上の回路装置のレイアウトを画定するハードウェア定義プログラムとして呼ばれる。このプログラムは、通常、設計ツールによって生成され、その後製造中に使用されて、回路装置を画定し半導体ウェハに適用されるレイアウト・マスクを作成する。通常、プログラムは、ＶＨＤＬ、ｖｅｒｉｌｏｇ、ＥＤＩＦなどのハードウェア定義言語（ＨＤＬ）を使用して所定のフォーマットで提供される。本発明について、完全に機能する集積回路デバイスおよびそのようなデバイスを使用したデータ処理システムの形で実装された回路装置の文脈で述べてきたし以降も述べるが、本発明による回路装置は、様々な形のプログラム製品として流通させることもでき、本発明を実際に流通に供するために使用する具体的なタイプの信号記憶媒体がどうであろうとも、等しく適用できることを、当業者は理解されたい。信号記憶媒体の例に含まれるものには、ただしこれに限定されるものではないが、数あるなかで、揮発性および不揮発性のメモリ装置、フロッピー・ディスクおよび他の取り外し可能なディスク、ハード・ディスク装置、磁気テープ、光ディスク（たとえば、ＣＤ−ＲＯＭ、ＤＶＤなど）など記録可能な媒体と、ディジタルまたはアナログの通信リンクなど伝送タイプの媒体とがある。
【００３０】
ソフトウェアの観点から、ＵＳＢデバイス機能をサポートするものは、通常、ＵＳＢドライバ４４内に実装され、オペレーティング・システム４６の構成要素としてメモリ１６に常駐していることを示してある。ＵＳＢデータは、通常、当業者に周知のように、様々なアプリケーション・ソフトウェア４８が使用する。他の機能の中で、ＵＳＢドライバ４４は、様々なタイプのＵＳＢデータの転送に使用するために、最適の性能を発揮させるように各ＤＭＡコントローラ３４を構成することを含め、ＵＳＢコントローラ２０の各チャネル２４を構成することができる。
【００３１】
本発明の様々な実施形態中に使用される任意の機能を実装するために実行される任意のルーチンは、オペレーティング・システムの一部、または特定のアプリケーション、構成要素、プログラム、オブジェクト、モジュールあるいは一連の命令、あるいはさらにそのサブセットのいずれとして実装されているかにかかわらず、本明細書では「コンピュータ・プログラム・コード」または簡単に「プログラム・コード」として呼ぶこととする。プログラム・コードは、通常、コンピュータ内の様々なメモリおよび記憶装置内に様々な時間常駐し、コンピュータ中の１つまたは複数のプロセッサ、またはプログラム可能な電子装置中の他のどんなプログラム可能なロジックによって読み出され実行されたとき、本発明の様々な態様を実施するためのステップまたは要素を実行するのに必要なステップをそのコンピュータまたは装置に行わせる、１つまたは複数の命令を含む。さらに、本発明は、完全に機能するコンピュータおよび電子装置の文脈で述べてきたし以降も述べるが、本発明の様々な実施例は、様々な形のプログラム製品として流通させることができ、本発明を実際に流通させるために使用する具体的なタイプの信号記録媒体にかかわりなく、等しく適用できることを当業者は理解されよう。
【００３２】
さらに、ルーチン、手順、方法、モジュール、オブジェクトおよびその他にプログラム機能を編成できる通常無数の方法、ならびに典型的なコンピュータまたは電子装置内に常駐する様々なソフトウェア・レイヤ（たとえば、オペレーティング・システム、ライブラリ、ＡＰＩ、アプリケーション、アプレット他）内にプログラム機能を割り当てることができる様々な方法を考えると、本発明は、本明細書で述べるプログラム機能の具体的な構成および割り当てに限定されるものでないことを理解されたい。さらに、異なる割り当てが他の実装形態中で使用できるので、ハードウェアとソフトウェアの間で本明細書に述べるプログラム機能の明確な割り当ては、本発明を限定するものでない。
【００３３】
図１に示す例示的環境は、本発明を限定するように企図されていないことを当業者は認識されよう。実際に、代替の他のハードウェアおよび／またはソフトウェアの環境は、本発明の範囲から逸脱せずに使用することができることを当業者は認識されよう。
【００３４】
ＵＳＢ環境中で最適の性能を発揮するために、ＵＳＢコントローラ、具体的にはその中にある各ＤＭＡ制御ロジックが、高帯域幅のデータ転送速度（たとえば、ＵＳＢ仕様書２．０でサポートする１９２Ｍｂ／ｓの帯域幅）を容易に実現し、それのみならずソフトウェアのオーバーヘッドの単純化および最小化をともに行うためのいくつかの強化策をサポートする。いくつかのこれらの強化策は、図１のＤＭＡチャネルの１つについてのＤＭＡコントローラ制御ロジック３８の例示的構成を示す図２に、非常に詳細に示してある。ＦＩＦＯおよびＤＭＡチャネルを通るデータ・フロー全体は、図２から省略されていることに留意されたい。
【００３５】
具体的には、各ＤＭＡ制御ロジック回路は、そのＤＭＡチャネル用に関連付けられたプロフィール・レジスタ２６からプロフィール識別子を供給されるプロフィール・デコーダ５２によって、動的に構成可能な状態機械５０を含む。プロフィール・デコーダは、イネーブル・カウント・レジスタ信号、イネーブル・パケット・エンド信号、イネーブル・バイト・カウント信号、イネーブル・エラー・カウント信号、イネーブル・ウォッチドッグ信号および部分的ワード遅延信号を含め、複数の構成信号を発生する。代替では、デコーダが提供する様々な信号は、プロフィール・レジスタ２６中の個々のビットに直接マッピングでき、それによってプロフィール・デコーダ５２は、必要でなくなる。その場合、プロフィール・レジスタ２６中に適切なビットを設定することは、ＵＳＢドライバの責任となるはずである。
【００３６】
従来のＤＭＡコントローラへの１つの強化策は、たとえばデコーダ５２からのイネーブル・カウント・レジスタ信号に応答して、選択的にディセイブルにすることができるＤＭＡカウント・レジスタ５４である。別の強化策は、上記で述べたように、たとえばデコーダ５２からのイネーブル・ウォッチドッグ信号に応答して、選択的にイネーブルにすることができるエンドポイント・ウォッチドッグ・タイマ４０である。イネーブルにされたとき（たとえば、状態機械５０からのイネーブル信号によって）、エンドポイント・ウォッチドッグ・タイマは、関連付けられたＤＭＡチャネルを介してのデータ・パケットを受け取ったことに応答してリセットされ（たとえば、状態機械５０が発生したリセット信号に応答して）、指定時間経過してもパケットを受け取らなかった場合、割込みを起動し、保留されていた部分的なワードが、もしあれば任意選択で転送するようにさせる。代替の実装形態では、ウォッチドッグ・タイマ４０は、デコーダ５２からのイネーブル・ウォッチドッグ信号によって直接イネーブルにすることができ、タイマが、直接ＤＭＡチャネルのデータ・トラフィックを監視することができる。
【００３７】
さらに、選択的にディセイブルにされるカウント・レジスタ、エンドポイント・ウォッチドッグ・タイマおよび状態機械５０中のパケット・エンド検出回路の組み合わせによって、各ＤＭＡ制御ロジック回路が複数のＤＭＡ動作モードをサポートすることができる。さらに、動作モードは、たとえばイネーブル・カウント・レジスタ、デコーダ５２からのイネーブル・パケット・エンド信号および／またはイネーブル・ウォッチドッグ信号によって、選択することができる。利用できるモードは、以下の通りである。
【００３８】
レガシー・モード：ＤＭＡカウント・レジスタ５４が、転送するバイト数をロードされる。カウントがゼロになったとき、ＤＭＡ制御ロジック回路が、自動的にディセイブルにされる。
【００３９】
パケット・エンド・モード：ＤＭＡ制御ロジック回路が、一度イネーブルにされると、入力データ・パケットの全コンテンツを転送する。ＤＭＡカウント・レジスタ５４は、ディセイブルにされ、したがって実質的に無視される。パケット・エンド信号をＵＳＢバス上から受け取ったとき、パケット・エンド検出回路（たとえば、状態機械５０中にある）を使用して割込み信号を送る。
【００４０】
連続モード：一度ＤＭＡ制御ロジック回路が、イネーブルにされると、それは、ソフトウェアによってディセイブルにされるまで入力データを転送する。やはりＤＭＡカウント・レジスタは、ディセイブルにされる。さらに、データ転送の完了は、エンドポイント・ウォッチドッグ・タイマ４０の時間切れによって検出することができる。
【００４１】
各ＤＭＡ制御ロジック回路によってサポートされている別の機能は、デコーダ５２からの部分的ワード遅延信号によってイネーブルにされ、入力データ・パケット中のバイト数がＤＭＡワード長の倍数であるかどうかを判定する部分的ワード遅延機能である。倍数でない場合、この機能によって、さらにデータを受け取るまで最後の１ワードのＤＭＡ転送が延ばされ、したがって無効なデータを、ＤＭＡ転送動作の最終ワード中で転送することが防止される。
【００４２】
サポートできる追加の機能には、パケット間境界バイト・カウンタ、条件付停止およびエラー・カウンタ・レジスタが含まれる。具体的には、各ＤＭＡチャネルは、ソフトウェア制御のもとでリセットすることができ、受信データ・パケット毎に受信されたバイト数を累積するために使用される関連付けられたパケット間境界バイト・カウンタ５６を含むことができる。このカウンタは、ソフトウェアによってリセットされるまで累積をし続け、たとえば複数パケットのメッセージ長を常時監視できるようにするはずである。バイト・カウンタ５６は、デコーダ５２が発生したイネーブル・バイト・カウント信号によってイネーブルにすることができる。
【００４３】
各ＤＭＡ制御ロジック回路は、条件付停止もサポートし、それによって、条件付停止機能を設定すると（たとえば、状態機械５０が受け取った条件付停止信号を介して）ＤＭＡチャネルをソフトウェア制御で動的にオフにすることができる。しかし、ソフトウェアが条件付停止機能を設定したときＤＭＡ転送が進行中の場合、制御ロジックがシャット・オフされる前に、活動中の転送機能によって現在のパケットが完了されることになる。そのような機能は、例えば連続動作モードとあいまって役立つことができ、それによってＤＭＡチャネル用のエンドポイント・ウォッチドッグ・タイマが割込みを発生した場合、ソフトウェアがその割込みを処理してＤＭＡ制御回路をシャット・オフすることができる前に到着した、どんな新しいデータ・パケットもすべて転送されることになる。
【００４４】
エラー・カウンタ・レジスタ５８は、各ＤＭＡチャネルと関連付けることもできる。そのレジスタは、ＤＭＡ制御ロジックがエラーを検出したときはいつも、更新されるように構成される。カウンタをリセットするためにソフトウェアを使用でき、カウンタは、リセットされるまでカウントし続けることができる。検出されるエラーには、たとえばＵＳＢアイソクロナス・プロトコルと関連して起こり得るオーバーラン・エラーを含め、データのＤＭＡ転送に関するどんな問題もすべて含まれる。エラー・カウンタ５８は、デコーダ５２が発生するイネーブル・エラー・カウント信号によってイネーブルにされる。
【００４５】
さらに、各ＤＭＡ制御ロジック回路は、前述のＵＳＢプロフィール・レジスタ２６を含むＵＳＢプロフィール回路によって構成されることが望ましい。各プロフィール・レジスタに格納されたプロフィール情報は、主に、関連付けられたＤＭＡチャネルが処理することになるＵＳＢプロトコルに基づいており、それによってＤＭＡチャネル全体は、そのレジスタに格納されたプロフィール・データに基づき適切に構成することができる。
【００４６】
したがって、通常、ＤＭＡチャネル中のＤＭＡ制御ロジックを利用するソフトウェアは、ＵＳＢ仕様書によってサポートされている様々な通信プロトコルを設定し処理する複雑な事項を理解する必要がない。ソフトウェアは、装置のインターフェースのタイプ（メモリ・ベースまたはレジスタ・ベース）に加えて、エンドポイントによってサポートされているプロトコルに適合するプロフィールだけを指定する必要がある。次いで、ハードウェアを、このある選択によって自動的に構成することができる。
【００４７】
例えば、プロフィール・レジスタは、以下の表Ｉに示すプロフィールをサポートすることができる。他のプロフィールのマッピングも代替として使用することができることを理解されたい。さらに、レジスタ中にプロフィール情報を符号化する様々な方法を使用することができることを理解されたい。たとえば、１１個のサポートされたプロフィールは、４ビット・レジスタで符号化することができる。代替としては、各任意選択の機能は、レジスタ中の１つまたは複数のビットに割り当てることができ、それによってソフトウェアが、符号化された値をプロフィール・レジスタ中に書き込むことができ、それによって上記で述べたような必要なプロフィールの任意選択をすべて設定することになるはずである。
【００４８】
【表１】
2006502491.tif 000003
【００４９】
各プロフィールに関して、「エラー・カウンタ」は、エラー・カウンタがイネーブルにされていることを示し、「エラー・カウンタ・レジスタ割込み」は、エラー・カウンタがイネーブルにされ、エラー・カウンタが更新されたときはいつも、割込みが起動されることを示す。
【００５０】
例示している実施形態では、必要なとき、ＤＭＡアドレス・レジスタおよびＤＭＡカウント・レジスタは、プロフィール・レジスタとは別にプログラムされる。さらに、いくつかの実装形態では、ＤＭＡチャネル・スペース中の任意またはすべてのレジスタは、ソフトウェア制御によって具体的なプロフィールがカスタマイズできるように、プロフィール・レジスタによるプロフィール印加後、上書きが可能になることが望ましい。他の実装形態では、特定のＵＳＢプロトコルに適するように設定された各関連付けられた機能およびレジスタに関して、プロフィール・レジスタを使用しないことがある。
【００５１】
上記の表から、ＤＭＡ連続モードは、エンドポイントがアイソクロナス・プロトコルをサポートし、データがエンドポイントＦＩＦＯと装置ＦＩＦＯの間を直接行き来するとき、主に使用される。このモードでは、ＤＭＡカウント・レジスタは、ディセイブルにされ、どんなエラーもエラー・カウンタ・レジスタ中に累積される。ソフトウェアは、周期的にエラー・カウンタ・レジスタをポーリングする、またはそのレジスタが１増加されたとき、割込みを発生させるかどちらかを行うことができる。しかし、このモードでは、エラーによってＤＭＡ制御ロジック回路がターン・オフされないことが望ましい。装置のＦＩＦＯが部分的なワードの転送に適応することができない場合、部分的ワード遅延機能が使用されることも望ましい。さらに、モード９で述べているように、エンドポイント・ウォッチドッグ・タイマを使用してリアルタイムのトラフィック中の切断を検出することが望ましいことがある。
【００５２】
上記から、ＤＭＡパケット・エンド・モードは、制御プロトコルをサポートするために、主に使用されることもお分かりになろう。この環境では、長さがしばしば不確かな非リアルタイム情報の小さいパケットを散発的に受け取る。ＤＭＡ制御ロジック回路は、任意の長さの単一パケットを受け取った後、シャット・オフする。部分的ワード遅延機能、またはエンドポイント・ウォッチドッグ・タイマ、あるいはＤＭＡカウント・レジスタも、どれも必要でないまたは使用されない。パケット間境界バイト・カウンタは、受け取ったパケット中のバイト数を判定するために任意選択で使用することができ、エラー・カウンタ・レジスタは、周期的にポーリングされる、またはデータ・パケットの伝送中に受け取ったエラーに応答して割込みを発生することができる。
【００５３】
他のすべてのモードには、ＤＭＡレガシー・モードを使用することができる。たとえば、ＤＭＡレガシー・モードは、大容量記憶（ブロック）装置が、バルク転送プロトコルをサポートするエンドポイントからデータを受け取ったとき、役立つことができる。ＤＭＡカウント・レジスタにブロック・サイズの倍数をロードすることができ、個々のパケットからのデータがそのメモリ・ブロックに書き込まれる。しかし、メモリ・ブロックを満たすのに必要なパケット数は、トランスペアレントである。ブロックの指定された数が満たされたとき（すなわち、カウンタ・レジスタがゼロになったとき）、ＤＭＡ制御ロジック回路は、シャット・オフすることができる。部分的ワード遅延機能を使用して、無効データ・ギャップがメモリ・ブロック中に発生しないように保証することが望ましいことがある。さらに、エンドポイント・ウォッチドッグ・タイマを使用して、データの受け取りが不十分であったことを検出するのが望ましいことがある。
【００５４】
本明細書で述べる、ＤＭＡ制御ロジック内の強化策を実施することは、本実施例の開示のおかげを被ることになる普通のどんな当業者の能力範囲にも十分入るはずである。
【００５５】
本明細書で述べる、強化されるＤＭＡコントローラのソフトウェア制御は、通常、しかし必ずしもそうでないが、上記のようにＵＳＢドライバによって管理される。例えば、図２に、ＵＳＢドライバによって実行され、ＵＳＢ装置に最適なプロトコルを使用して、各ＵＳＢコントローラのエンドポイントがその特定のＵＳＢ装置と対話するように、各エンドポイントを適切に構成することができる、例示的エンドポイント初期化ルーチン６０を示す。
【００５６】
ブロック６２で、ルーチン６０は、コントローラによってサポートされている第１のエンドポイントを選択するために、エンドポイント変数をリセットすることによって開始される。次いでブロック６４で、そのエンドポイントに関連付けられたＵＳＢプロフィール・レジスタを選択するために、インデックス変数を初期化する。
【００５７】
次にブロック６６で、第１のエンドポイントを制御エンドポイントとして構成すべきかどうか、例えばＵＳＢ制御プロトコルを使用してそのエンドポイントを介してデータを転送することが予想されるかどうかに基づき、判定する。その場合、ブロック６８にプログラムが進み、そのエンドポイント用のプロフィール・レジスタ（インデックス変数によって選択された）に、適切なプロフィールを識別する制御識別値をセットする。一度セットされると、次いで、ブロック７０および７２にプログラムが進み、インデックス変数およびエンドポイント変数を１だけ増加する。次いで、ブロック７４にプログラムが進み、ＵＳＢコントローラ用の最後のエンドポイントが処理されたかどうかを判定する。そうでない場合、ブロック６６にプログラムが戻り、さらにエンドポイントを処理する。最後のエンドポイントが処理されていた場合、ルーチン６０は、完了する。
【００５８】
ブロック６６に戻り、次のエンドポイントが制御エンドポイントとして構成すべきでないと判定されると、ブロック７６にプログラムが進み、エンドポイントをバルク・エンドポイントとして構成すべきかどうか、たとえばＵＳＢバルク・プロトコルを使用してそのエンドポイントを介してデータを転送することが予想されるかどうかに基づき、判定する。その場合、ブロック７８にプログラムが進み、そのエンドポイント用のプロフィール・レジスタに、適切なプロフィールを識別するバルク識別値をセットする。一度セットされると、次いで、ブロック７０および７２にプログラムが進み、インデックス変数およびエンドポイント変数を１だけ増加し、次いでブロック７４にプログラムが進み、まだあれば残りのエンドポイントをすべて処理する。
【００５９】
次に、ブロック７６に戻り、次のエンドポイントがバルク・エンドポイントとして構成すべきでないと判定されると、ブロック８０にプログラムが進み、エンドポイントを割込みエンドポイントとして構成すべきかどうか、たとえばＵＳＢ割込みプロトコルを使用してそのエンドポイントを介してデータを転送することが予想されるかどうかに基づき、判定する。その場合、ブロック８２にプログラムが進み、そのエンドポイント用のプロフィール・レジスタに、適切なプロフィールを識別する割込み識別値をセットする。一度セットされると、次いで、ブロック７０および７２にプログラムが進み、インデックス変数およびエンドポイント変数を１だけ増加し、次いでブロック７４にプログラムが進み、まだあれば残りのエンドポイントをすべて処理する。
【００６０】
次に、ブロック８０に戻り、次のエンドポイントが割込みエンドポイントとして構成すべきでないと判定されると、ブロック８４にプログラムが進み、エンドポイントをアイソクロナス・エンドポイントとして構成すべきかどうか、例えばＵＳＢアイソクロナス・プロトコルを使用してそのエンドポイントを介してデータを転送することが予想されるかどうかに基づき、判定する。その場合、ブロック８６にプログラムが進み、そのエンドポイント用のプロフィール・レジスタに、適切なプロフィールを識別するアイソクロナス識別値をセットする。一度セットされると、次いで、ブロック７０および７２にプログラムが進み、インデックス変数およびエンドポイント変数を１だけ増加し、次いでブロック７４にプログラムが進み、まだあれば残りのエンドポイントをすべて処理する。
【００６１】
ＤＭＡ転送用のエンドポイントをさらに初期化するために、上記で述べたように、ＵＳＢドライバは、ＤＭＡアドレス・レジスタを別々に構成し、ＤＭＡチャネルを介してＤＭＡ転送する適切なソースおよび／または宛先を識別する。さらに、レガシー・モードが選択されている場合、ＤＭＡカウント・レジスタも適切にセットされる。一度構成されると、ＤＭＡチャネル用のＤＭＡコントローラが、従来のＤＭＡコントローラと同様に、ソフトウェアから独立してデータの転送を管理する。
【００６２】
次に、図４に、ＵＳＢコントローラ中の個々のエンドポイントが発生した割込みに応答して、ＵＳＢドライバが処理できる例示的割込み処理ルーチン１００を示す。ブロック１０２で、ルーチン１００は、割込みを発生したエンドポイントの識別情報を得ることによって開始される。次に、ブロック１０４で、エラーが検出されたかどうか、たとえばＤＭＡコントローラ中のエラー・カウンタ・レジスタをポーリングすることによって、判定する。その場合、プログラムはブロック１０６に進み、エラーが適切に処理されるようにエラーを報告する。次いで、ルーチン１００は、終了する。
【００６３】
ブロック１０４に戻り、エラーが検出されていない場合、プログラムはブロック１０８に進み、ＵＳＢメッセージの最後のデータ・パケットが受け取られているかどうかを判定する。詳しくいうと、ルーチン１００は、ＤＭＡコントローラ中の適切なバイト・カウンタをポーリングして、ＵＳＢメッセージのデータがすべて受け取られているかどうか（例えば、ドライバが入力メッセージを監視した結果として）判定することができる。最後のパケットが受け取られていない場合、ルーチン１００は、終了する。最後のパケットが受け取られている場合、プログラムはブロック１０８からブロック１１０に進み、エンドポイント用のＤＭＡコントローラがまだイネーブルになっているかどうかを判定する。その場合、プログラムはブロック１１０からブロック１１２に進み、ＤＭＡコントローラをターン・オフする（たとえば、条件付停止信号をアサートすることによって）。次いで、プログラムはブロック１１４に進み、ＵＳＢドライバ中の他のプログラム・コードが、メッセージの従来の方法による処理に着手するように「メッセージ完了」ステータスを通知する。次いで、ルーチン１００は、終了する。ブロック１１０に戻り、エンドポイント用のＤＭＡコントローラが現在イネーブルになっていない場合、プログラムは直接ブロック１１４に進み、「メッセージ完了」ステータスを通知し、ルーチン１００を終了させる。
【００６４】
本発明の精神および範囲から逸脱せずに、例示した実施形態に様々な修正を加えることができる。したがって、本発明は、添付の特許請求の範囲の記載中にある。
【図面の簡単な説明】
【００６５】
【図１】本発明によるＤＭＡコントローラを組み込んだ装置のブロック図である。
【図２】図１で参照した、一ＤＭＡチャネル用のＤＭＡコントローラ制御ロジック中の主なＵＳＢ固有構成要素のブロック図である。
【図３】図１の装置のＵＳＢドライバによって実行されるエンドポイント初期化ルーチンのプログラム・フローを示すフローチャートの図である。
【図４】図１の装置のＵＳＢドライバによって実行される割込み処理ルーチンのプログラム・フローを示すフローチャートの図である。
【図１】
2006502491.tif 000004
【図２】
2006502491.tif 000005
【図３】
2006502491.tif 000006
【図４】
2006502491.tif 000007
【国際調査報告】
2006502491.tif 000008
2006502491.tif 000009
2006502491.tif 000010
2006502491.tif 000011