(57)【要約】少なくとも一つのＵＳＢデバイスとコンピュータシステムのシステムメモリとの間のデータトラフィックをハンドリングするＵＳＢホストコントローラを提供する。ＵＳＢホストコントローラは、システムメモリからデータエレメントをフェッチするデータフェッチユニット（５３０）と、前記フェッチされたデータエレメントを記憶する記憶ユニット（５３５）と、前記記憶ユニットに記憶された前記フェッチされたデータエレメントに応じて、前記ＵＳＢデバイスへ送信され、またはそれから受信されるトランザクションを処理するトランザクション処理ユニット（５７０）とを備え、前記データフェッチユニットと前記トランザクション処理ユニットとは非同期に動作するように構成されている。このホストコントローラはＵＳＢ２．０対応であってもよく、サウスブリッジに実装することもできる。
2005520248.tif 000002
【特許請求の範囲】
【請求項１】
少なくとも一つのＵＳＢデバイス（３３０）とコンピュータシステムのシステムメモリ（１１５）との間のデータトラフィックをハンドリングするＵＳＢ（ユニバーサルシリアルバス）ホストコントローラであって、
前記システムメモリからデータエレメントをフェッチするデータフェッチユニット（５３０）と、
前記フェッチされたデータエレメントを記憶する記憶ユニット（５３５，６０５）と、
前記記憶ユニットに接続され、前記記憶ユニットに記憶された前記フェッチされたデータエレメントに応じて、前記少なくとも一つのＵＳＢデバイスへ送信され、またはそれから受信されるトランザクションを処理するトランザクション処理ユニット（５７０）とを備え、
前記データフェッチユニットと前記トランザクション処理ユニットとは非同期に動作するように構成されている、ＵＳＢホストコントローラ。
【請求項２】
前記フェッチされたデータエレメントはディスクリプタであり、前記ＵＳＢホストコントローラは、前記記憶ユニットからディスクリプタを受信し、前記受信したディスクリプタをトランザクション項目に変換する変換ユニット（６１０）をさらに含み、
前記トランザクション処理ユニットは前記変換ユニットから前記トランザクション項目を受信して、前記受信したトランザクション項目に基づいて前記トランザクションを処理するように構成されている、請求項１記載のＵＳＢホストコントローラ。
【請求項３】
前記データフェッチユニットはデータエレメントを要求するリクエストを出力し、前記要求されたデータエレメントを受信するように構成されている、請求項１記載のＵＳＢホストコントローラ。
【請求項４】
前記システムメモリのメモリコントローラ（１０５）への、またはそれからのデータ転送をハンドリングするインターフェイスユニット（５００）をさらに備え、前記データフェッチユニットは前記リクエストを前記インターフェイスユニットに出力するように構成されている、請求項３記載のＵＳＢホストコントローラ。
【請求項５】
前記データフェッチユニットによる再アクセスのためにフェッチされたデータエレメントを記憶するキャッシュ（５４５）をさらに含み、前記データフェッチユニットは前記キャッシュに前記リクエストを出力するように構成されている、請求項３記載のＵＳＢホストコントローラ。
【請求項６】
システムメモリ（１１５）を有し、ＵＳＢデバイス（３３０）に接続可能であり、ＵＳＢ（ユニバーサルシリアルバス）ホストコントローラ統合チップを含む、コンピュータシステムであって、
前記システムメモリからデータエレメントをフェッチするデータフェッチ回路（５３０）と、
前記フェッチされたデータエレメントを記憶する記憶回路（５３５，６０５）と、
前記記憶回路に接続され、前記記憶回路に記憶された前記フェッチされたデータエレメントに応じて、前記少なくとも一つのＵＳＢデバイスへ送信され、またはそれから受信されるトランザクションを処理するトランザクション処理回路（５７０）とを備え、
前記データフェッチ回路と前記トランザクション処理回路とは非同期に動作するように構成されている、コンピュータシステム。
【請求項７】
ＵＳＢデバイス（３３０）に接続されたコンピュータシステムにおいて、ＵＳＢ（ユニバーサルシリアルバス）ホストコントローラを動作させる方法であって、
前記コンピュータシステムのシステムメモリからディスクリプタをフェッチするステップ（７００−７１０）と、
前記フェッチされたディスクリプタを記憶するステップ（７２０）と、
前記記憶されたディスクリプタを使用して生成されたトランザクション項目に基づいて、前記ＵＳＢデバイスへの、またはそれからのトランザクションを処理するステップ（７４５）とを含み、
前記フェッチするステップと、前記処理するステップとは非同期に実行される方法。
【請求項８】
前記ディスクリプタをフェッチするステップは、
ディスクリプタを要求するリクエストを出力するステップ（７０５）と、
前記要求したディスクリプタを受信するステップ（７１０）とを含む、
請求項７記載の方法。
【請求項９】
再アクセスのためにキャッシュ（５４５）に前記フェッチされたディスクリプタを記憶するステップ（７１５）をさらに含み、前記リクエストを出力する前記ステップは前記リクエストを前記キャッシュに出力することで実行される、請求項８記載の方法。
【請求項１０】
タイミング情報およびレジスタ設定に基づいて、どのディスクリプタをフェッチするかを決定するステップ（７００）をさらに含む、請求項７記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は一般にＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ、ユニバーサルシリアルバス）ホストコントローラに関し、さらに詳細にはＵＳＢデバイスとコンピュータシステムのシステムメモリの間のデータトラフィックの処理に関する。
【背景技術】
【０００２】
ユニバーサルシリアルバスは、コンピュータシステムに追加の周辺装置の接続を容易にする外部拡張バスの規格として、１９９５年に最初に開発された。ＵＳＢ技術はＰＣ（パーソナルコンピュータ）ホストコントローラハードウェアおよびソフトウェアならびに周辺装置に親和的なマスタ・スレーブプロトコルによって実装され、堅牢な接続およびケーブルアセンブリを実現している。ＵＳＢシステムはマルチポートハブを介して拡張可能である。
【０００３】
ＵＳＢシステムでは、システムソフトウェアの役割はハードウェア実装の詳細を隠すことによって、すべてのアプリケーションソフトウェアに対して、入出力アーキテクチャの統一された見え方を提供することにある。特に、それは周辺装置の動的な取り付けおよび取り外しを管理し、周辺装置と通信してその同一性を認識する。実行時には、ホストは特定の周辺装置に対するトランザクションを発し、各周辺装置はそのトランザクションを受け入れて適切に応答する。
【０００４】
ＵＳＢ周辺装置に対する追加的な接続性を設けるためにハブがシステムに導入され、接続されたデバイスに対して管理された電力を供給する。これらの周辺装置は、ホストから送信された要求トランザクションに応答しなければならないスレーブである。そのような要求トランザクションにはそのデバイスおよびその構成についての詳細な情報に対する要求も含まれる。
【０００５】
これらの機能およびプロトコルはすでにＵＳＢ１．１の規格に規定されているが、この機能はさらに高い性能のインターフェイスを提供するために改良されている。図１は、ホストコントローラ１００，複数のＵＳＢデバイス１１５，１２０，１２５，１３０および２つのハブ１０５，１１０を含むＵＳＢ２．０システムの一例を示している。図１のシステムでは、接続性を増加させるためにハブ１０５、１１０を導入したが、他のＵＳＢ２．０システムではＵＳＢデバイスはホストコントローラ１００に直接接続することができる。
【０００６】
上述のように、ＵＳＢ２．０はより高性能なインターフェイスを提供し、最大で約４０倍の高速化が実現されている。さらに、図１からあきらかなように、同じホストコントローラ１００によって駆動されるＵＳＢ１．１デバイス１２０，１２５，１３０を接続することができることから、ＵＳＢ２．０はＵＳＢ１．１との下方互換性を有する。ＵＳＢ１．１のハブ１１０をも使用することができる。
【０００７】
図１からわかるように、ＵＳＢ１．１のデバイス１２０はＵＳＢ２．０のハブ１０５に直接接続することができる。さらに、それはホストコントローラ１００に直接接続することもできる。これが可能なのは、ＵＳＢ２．０のホストコントローラおよびハブが、デバイス対デバイスの関係において、高速の伝送速度でも、低速の伝送速度でもネゴシエーションをする機能を持つからである。
【０００８】
図２に、ＵＳＢ２．０のシステムのシステムソフトウェアおよびハードウェアを示す。システムの構成要素は、図に示すように、いくつかの層を定義することによって階層的に編成することが可能である。
【０００９】
最上層では、クライアントドライバソフトウェア２００がホストＰＣ上で実施され、特定のＵＳＢデバイス２３０に対応する。このクライアントソフトウェアは通常オペレーティングシステムの一部であり、デバイスと一緒に提供される。
【００１０】
ＵＳＢドライバ２０５はシステムソフトウェア・バスドライバであって、特定のオペレーティングシステムのための特定のホストコントローラドライバ２１０，２１５の詳細を抜き出したものである。ホストコントローラドライバ２１０，２２０は、ドライバとハードウェアのインターフェイスを提供するために特定のハードウェア２１５，２２５，２３０とＵＳＢドライバ２０５との間のソフトウェア層を提供する。
【００１１】
これまで議論してきた層はソフトウェアによって実装されるものであるが、最上部のハードウェア部品層としてホストコントローラ２１５，２２５が含まれる。これらのコントローラはエンドユーザ機能を実行するＵＳＢデバイス２３０に接続される。
【００１２】
図面から明らかなように、高速なＵＳＢ２．０機能のための拡張ホストコントローラ（ＥＨＣ）である、ホストコントローラ２２５が設けられている。このホストコントローラはＵＳＢ２．０のＥＨＣＩ（Enhanced Host Controller Interface、拡張ホストコントローラインターフェイス）規格に従って動作する。ソフトウェア側では、ホストコントローラ２２５は、それに関連する特別のホストコントローラドライバ（ＥＨＣＤ）２２０を持つ。
【００１３】
さらに、最大速度および低速度の動作のためのホストコントローラ２１５が設けられている。ＵＨＣＩ（Universal Host Controller Interface）またはＯＨＣＩ（Open Host Controller Interface）は、ＵＳＢ１．１ホストコントローラインターフェイスを提供するためのユニバーサルな、またはオープンホストコントローラ（ＵＨＣ／ＯＨＣ）２１５において採用されている２つの業界標準である。ホストコントローラ２１５はその最下層のソフトウェアレベルにユニバーサル／オープンホストコントローラデバイス（ＵＨＣＤ／ＯＨＣＤ）２１０を割り当てている。
【００１４】
従って、ＵＳＢ２．０準拠のホストコントローラシステムは、必ずＥＨＣＩ規格に従ったドライバソフトウェアとホストコントローラハードウェアとを含む。この規格ではレジスタレベルのインターフェイスとそれに関連したメモリ常駐のデータ構造とを規定しているが、それに準拠したホストコントローラを構築するために必要なハードウェアアーキテクチャについては定義も説明もしていない。
【００１５】
図３に、一般的なマザーボードレイアウトにおけるハードウェア要素を示す。マザーボード上の基本的な構成要素には、ＣＰＵ（中央処理装置）３００，ノースブリッジ３０５，サウスブリッジ３１０およびシステムメモリ３１５が含まれる。ノースブリッジ３０５は一般に単一チップのコアロジックチップセットであって、プロセッサ３００をシステムメモリ３１５およびＡＧＰ（Accelerated Graphic Port）およびＰＣＩ（Peripheral Component Interface）バスに接続する。ＰＣＩバスはパーソナルコンピュータにおいて一般的に用いられ、プロセッサとビデオカード、サウンドカード、ネットワークインターフェイスカードおよびモデムなどの周辺デバイスとの間のデータパスを提供する。ＡＧＰバスは高速のグラフィック拡張バスであって、ディスプレイアダプタとシステムメモリ３１５とを直接接続する。ＡＧＰとＰＣＩバスとは独立して動作する。ノースブリッジを持たないような、またはＡＧＰまたはＰＣＩオプションがないノースブリッジを持つような他のマザーボードレイアウトが存在することに注意してもらいたい。
【００１６】
サウスブリッジ３１０は一般的にシステムコアロジックチップセット中のチップであって、ＩＤＥ（Integrated Drive Electronics）またはＥＩＤＥ（Enhanced IDE）バス、ＵＳＢバスを制御し、プラグアンドプレイサポートを提供し、ＰＣＩ−ＩＳＡ（Industry Standard Architecture）ブリッジを制御し、キーボード／マウスコントローラを管理し、電力管理機能を提供し、他の周辺装置を制御する。
【発明の開示】
【発明の概要】
【００１７】
入力／出力ハブチップ、例えばサウスブリッジに統合するためのＥＨＣＩ準拠のホストコントローラの実装に適したアーキテクチャを定義する改良されたＵＳＢホストコントローラ、コンピュータシステムおよび動作方法が提供される。
【００１８】
本発明の一実施形態において、少なくとも一つのＵＳＢデバイスとコンピュータシステムのシステムメモリとの間のデータトラフィックをハンドリングするＵＳＢホストコントローラが提供される。このＵＳＢホストコントローラはシステムメモリからデータエレメントをフェッチするデータフェッチユニットを備える。このUSBホストコントローラはさらにフェッチされたデータエレメントを記憶する記憶ユニットと、この記憶ユニットに結合され、少なくとも一つのUSBデバイスに送出され、またはそれから受信したトランザクションを、記憶ユニットに記憶されたフェッチされたデータエレメントに応じて処理するトランザクション処理ユニットとを備える。このデータフェッチユニットと、トランザクション処理ユニットとは非同期で動作するように構成されている。
【００１９】
他の実施形態では、USBホストコントローラは前記システムメモリのメモリコントローラへの、またはそれからのデータ転送をハンドリングするインターフェイスユニットをさらに含む。
【００２０】
他の実施形態では、このインターフェイスユニットはＨＴ  Ｉ／Ｏ（HyperTransport技術入出力）バスに対するインターフェイスを提供する。
【００２１】
他の実施形態では、ＵＳＢホストコントローラは前記データフェッチユニットによる再アクセスのためにフェッチされたデータエレメントを記憶するキャッシュをさらに含み、このキャッシュは前記インターフェイスユニットにデータエレメントを書き戻すことが可能であり、前記インターフェイスユニットは前記データフェッチユニットと前記キャッシュとの間を調停するように構成されている。
【００２２】
他の実施形態では、前記ＵＳＢホストコントローラは、前記インターフェイスユニットにデータを送信し、および／またはそれからデータを受信することができる少なくとも一つのＤＭＡ（ダイレクトメモリアクセス）エンジンをさらに含み、前記インターフェイスユニットは前記データフェッチユニットと前記少なくとも一つのＤＭＡエンジンとの間を調停するように構成されている。
【００２３】
他の実施形態では、前記ＵＳＢホストコントローラは、前記データフェッチユニットによる再アクセスのためにフェッチされたデータエレメントを記憶するキャッシュ（５４５）をさらに含む。
【００２４】
他の実施形態において、前記ＵＳＢホストコントローラは、前記キャッシュおよび前記データフェッチユニットに結合され、トランザクションが完了したときに前記キャッシュ中のデータエレメントを更新するトランザクション完了ユニットをさらに含む。
【００２５】
他の実施形態では、前記データフェッチユニットと前記トランザクション完了ユニットとは非同期で動作する。
【００２６】
他の実施形態では、前記キャッシュは前記システムメモリにデータエレメントを書き戻すために結合される。他の実施形態では、ＵＳＢホストコントローラは前記システムメモリにデータエレメントを書き戻すようにキャッシュを制御するために前記キャッシュに結合されるトランザクション完了ユニットをさらに含む。
【００２７】
他の実施形態では、前記キャッシュはライトスルー（write-through）キャッシュである。他の実施形態では、前記キャッシュはアソシアティブ（associative）キャッシュである。
【００２８】
他の実施形態では、前記データフェッチユニットと前記キャッシュとは非同期で動作する。
【００２９】
他の実施形態では、前記ＵＳＢホストコントローラは、前記システムメモリからデータをフェッチするためのＤＭＡリードバスマスタとして動作する送信ＤＭＡ（ダイレクトメモリアクセス）エンジンをさらに含む。
【００３０】
他の実施形態では、前記送信ＤＭＡエンジンは前記記憶ユニットに結合され、前記記憶されたデータエレメントを検査して、前記検査されたデータエレメントに基づいて前記システムメモリからどのデータをフェッチすべきかを決定する。他の実施形態では、前記送信ＤＭＡエンジンは、前記フェッチされたデータを記憶するためのＦＩＦＯ（First In First Out）データバッファを含む。他の実施形態では、ＵＳＢホストコントローラは、前記システムメモリへデータを書き込むためのＤＭＡライトバスマスタとして動作する受信ＤＭＡ（ダイレクトメモリアクセス）エンジンをさらに含む。他の実施形態では、前記受信ＤＭＡエンジンは、前記システムメモリに書き込まれるデータを記憶するためのＦＩＦＯ（First In First Out）データバッファを含む。
【００３１】
他の実施形態では、前記データフェッチユニットは、タイミング情報およびレジスタ設定に基づいて、どのデータエレメントをフェッチすべきかを決定するように構成されている。他の実施形態において、ＵＳＢホストコントローラは、ＥＨＣＩ（エンハンスド・ホスト・コントローラ・インターフェイス）規格に従った、ＵＳＢ−２（ユニバーサルシリアルバスリビジョン２）ホストコントローラである。他の実施形態では、ＵＳＢホストコントローラは前記システムメモリのメモリコントローラへの、またはそれからのデータ転送をハンドリングするインターフェイスユニットと、前記インターフェイスユニットに接続され、バス構成データ、ホストコントローラ性能データ、実行モードデータおよびホストコントローラ状態情報を記憶する複数のＥＨＣＩレジスタを有するレジスタユニットとをさらに含む。他の実施形態では、ＵＳＢホストコントローラは第１および第２クロックドメインを有し、前記データフェッチユニットおよび前記記憶ユニットは前記第１クロックドメインに位置し、前記トランザクション処理ユニットは前記第２クロックドメインに位置し、前記第２クロックドメインの周波数は前記第１クロックドメインの周波数よりも低い。
【００３２】
他の実施形態では、ＵＳＢホストコントローラは、前記少なくとも一つのＵＳＢデバイスへのデータ転送のクロックタイミングと同相（in-phase）の対応関係にあるタイミングユニットと、前記記憶ユニットからデータエレメントを取り出して、その取り出したデータエレメントをそれぞれのトランザクションを処理するために必要なトランザクション項目に変換する変換ユニットとをさらに備え、前記タイミングユニットは前記記憶ユニットおよび前記変換ユニットの制御ユニットに接続されている。
【００３３】
他の実施形態では、前記トランザクション処理ユニットは、データを送信して、前記少なくとも一つのＵＳＢデバイスとハンドシェイクするためにＵＳＢバスオペレーションを生成し、受信したＵＳＢパケットを分解するパケットハンドラユニットを有し、前記パケットハンドラユニットは前記タイミングユニットに接続されている。
【００３４】
他の実施形態において、ＵＳＢホストコントローラは第１および第２クロックドメインを有し、前記データフェッチユニット、記憶ユニットおよび変換ユニットは前記第１クロックドメインに位置し、前記トランザクション処理ユニットおよび前記タイミングユニットは前記第２クロックドメインに位置する。他の実施形態では、前記トランザクション処理ユニットは、データを送信して、前記少なくとも一つのＵＳＢデバイスとハンドシェイクするためにＵＳＢバスオペレーションを生成するパケット生成ユニットと、受信したＵＳＢパケットを分解するパケットデコーディングユニットを有する。
【００３５】
他の実施形態では、前記記憶ユニットからデータエレメントを受信して、その受信したデータエレメントをトランザクション項目に変換する変換ユニットをさらに備え、前記パケット生成ユニットは前記トランザクション項目を受信するために前記変換ユニットに接続されている。
【００３６】
他の実施形態では、ＵＳＢホストコントローラは、前記データフェッチユニットに接続され、前記システムメモリへのデータエレメントの書き戻しオペレーションを始動することができるトランザクション完了ユニットをさらに含み、前記パケットデコーディングユニットは前記トランザクション完了ユニットに接続されて、前記トランザクション完了ユニットに書き戻しオペレーションを開始するかどうかを決定するために必要なデータを提供する。
【００３７】
他の実施形態では、前記トランザクション処理ユニットは、前記パケット生成ユニットおよび前記パケットデコーディングユニットに結合され、送信されたデータ中および受信されたデータ中のエラーを検出するＣＲＣ（Cyclic Redundancy Check、周回冗長検査）ユニットをさらに備える。
【００３８】
本発明の別の実施形態において、システムメモリを有し、ＵＳＢデバイスに接続可能なコンピュータシステムが提供される。このコンピュータシステムは上述の実施形態の一つに従ったＵＳＢホストコントローラを含む統合チップを備える。
【００３９】
本発明の他の実施形態に従って、ＵＳＢデバイスに接続されたコンピュータシステムにおけるＵＳＢホストコントローラの制御方法が提供される。この方法は、コンピュータシステムのシステムメモリからディスクリプタをフェッチするステップと、フェッチされたディスクリプタを記憶するステップと、記憶されたディスクリプタを使用して生成されたトランザクション項目に基づいてＵＳＢデバイスに対する、および／またはそれからのトランザクションを処理するステップとを含む。このフェッチするステップと、処理するステップとは非同期に実行される。
【００４０】
他の実施形態において、この方法は前記システムメモリのメモリコントローラへのおよびそれからのデータ転送をハンドリングするステップをさらに含む。
【００４１】
他の実施形態において、前記データ転送をハンドリングするステップは、ＨＴ  Ｉ／Ｏ（HyperTransport technology Input/Output）バスへのインターフェイスによって実行される。
【００４２】
他の実施形態において、本方法は、前記インターフェイスに対してデータを送信し、および／またはそれからデータを受信するために少なくとも１つのＤＭＡ（ダイレクトメモリアクセス）エンジンを動作させるステップをさらに含む。
【００４３】
他の実施形態において、本方法は、再アクセスのためにキャッシュ（５４５）中にフェッチされたディスクリプタを記憶するステップをさらに含む。
【００４４】
他の実施形態では、本方法は、トランザクションを完了したときに、前記キャッシュ中のディスクリプタを更新するステップをさらに含む。
【００４５】
他の実施形態では、前記フェッチするステップと、前記更新するステップとは非同期で実行される。
【００４６】
他の実施形態では、本方法は、前記システムメモリにディスクリプタを書き戻すステップをさらに含む。
【００４７】
他の実施形態では、前記ディスクリプタをフェッチするステップと、前記フェッチしたディスクリプタをキャッシュに記憶するステップとは非同期に実行される。
【００４８】
他の実施形態では、本方法は、前記システムメモリからデータをフェッチするために送信ＤＭＡ（ダイレクトメモリアクセス）エンジンをＤＭＡリードバスマスタとして動作させるステップをさらに含む。
【００４９】
他の実施形態では、本方法は、前記記憶されたフェッチされたディスクリプタを検査し、前記システムメモリからどのデータをフェッチするべきかを前記検査されたディスクリプタに基づいて決定する前記送信ＤＭＡエンジンを動作させるステップをさらに含む。
【００５０】
他の実施形態では、本方法は、フェッチされたデータをＦＩＦＯ（先入れ先出し）データバッファに記憶するステップをさらに含む。
【００５１】
他の実施形態では、本方法は、前記システムメモリへデータを書き込むために受信ＤＭＡ（ダイレクトメモリアクセス）エンジンをＤＭＡライトバスマスタとして動作させるステップをさらに含む。
【００５２】
他の実施形態では、本方法は、前記システムメモリへ書き込まれるべきデータをＦＩＦＯ（先入れ先出し）データバッファに記憶するステップをさらに含む。
【００５３】
他の実施形態において、本方法は、前記システムメモリのメモリコントローラへのおよびそれからのデータ転送をハンドリングするステップと、複数のＥＨＣＩレジスタを含むレジスタユニットにバス構成データ、ホストコントローラ性能データ、実行モードデータおよびホストコントローラ状態情報を記憶するステップとをさらに含む。
【００５４】
他の実施形態において、前記ＵＳＢホストコントローラは第１および第２クロックドメインを有し、前記フェッチするステップおよび記憶するステップは前記第１クロックによって駆動され、前記処理するステップは前記第２クロックによって駆動され、前記第２クロックドメインの周波数は前記第１クロックドメインの周波数よりも低い。
【００５５】
他の実施形態では、本方法は、前記ＵＳＢデバイスへのデータ転送のクロックタイミングと同相（in-phase）の対応関係にあるクロック信号を供給するステップと、フェッチされ記憶されたディスクリプタを取り出すステップと、その受信したディスクリプタをそれぞれのトランザクションを処理するために必要なトランザクション項目に変換するステップとさらに含み、前記記憶するステップと前記変換するステップとは前記クロック信号によって制御される。
【００５６】
他の実施形態では、前記トランザクションを処理するステップは、前記ＵＳＢデバイスにデータを送信し、ハンドシェイクをするためにＵＳＢバスオペレーションを生成するステップと、受信したＵＳＢパケットを分解するステップとを含み、前記生成するステップと分解するステップとは前記クロック信号の制御下で実行される。
【００５７】
他の実施形態において、前記ＵＳＢホストコントローラは第１および第２クロックドメインを有し、前記フェッチするステップ、記憶するステップおよび変換するステップは前記第１クロックによって駆動され、前記処理するステップは前記第２クロックによって駆動される。
【００５８】
他の実施形態において、前記トランザクションを処理するステップは、前記ＵＳＢデバイスにデータを送信し、ハンドシェイクをするためにＵＳＢバスオペレーションを生成するステップと、受信したＵＳＢパケットを分解するステップとを含む。
【００５９】
他の実施形態では、本方法は、フェッチされ、記憶されたディスクリプタにアクセスするステップと、アクセスされたディスクリプタをトランザクション項目に変換するステップとをさらに含み、前記ＵＳＢバスオペレーションを生成するステップは前記トランザクション項目にアクセスするステップを含む。
【００６０】
他の実施形態では、本方法は、前記システムメモリに対するディスクリプタの書き戻しオペレーションを開始するステップをさらに含み、前記分解するステップは書き戻しオペレーションを開始するかどうかを決定するのに必要なデータを供給するステップを含む。
【００６１】
他の実施形態では、前記生成するステップと分解するステップとは送信されたデータ中および受信したデータ中のエラーを検出するためにＣＲＣ（巡回冗長検査）検査を実行するステップを含む。
【発明を実施するための最良の形態】
【００６２】
添付の図面は、本発明の原理を説明する目的において、本明細書に組み込まれ、その一部を構成する。これらの図面は本発明を限定するものと考えるべきではなく、本発明をいかに生産し、使用するかについて図解および説明された例であると考えるべきである。さらに、添付の図面に示されるように、後述のさらに詳細な説明から本発明の特徴および利点があきらかになるであろう。
【００６３】
図面を参照して、本発明の例としての実施形態を説明する。図面において、類似の要素および構造は類似の参照番号で示す。
【００６４】
図面、特に図４に、一実施形態に従ったＵＳＢ２．０対応ホストコントローラ４００の主要な構成要素を示す。一般的に、ホストコントローラは３つの主要な構成要素、拡張ホストコントローラ（ＥＨＣ）２２５，一以上の副ホストコントローラ２１５およびポートルータ４１５から構成される。
【００６５】
拡張ホストコントローラ２２５はＵＳＢ２．０の高速トラフィックをハンドルする。さらにそれはポートルータ４１５を制御する。
【００６６】
本実施形態の副ホストコントローラ２１５には、２つのＯＨＣＩ対応ホストコントローラ、ＯＨＣ０  ４０５およびＯＨＣ１  ４１０がある。これらのコントローラはすべてのＵＳＢ１．１対応トラフィックをハンドルし、ＵＳＢを認識しない環境のためのレガシーキーボードエミュレーションを含んでいてもよい。
【００６７】
ポートルータ４１５はそれぞれの持ち主に物理ポートインターフェイスを割り当てる。この所有権はＥＨＣレジスタによって制御され、省略時（per default）には、ＵＳＢ１．１認識のドライバのみが機能するようにシステムを許可するために、すべてのポートは副ホストコントローラにルーティングされる。もしＵＳＢ２．０認識のドライバがシステム上に存在しているならば、それはポートを低速度または全速度のデバイスまたはハブ（ＵＳＢ１．１のトラフィック）のために副ホストコントローラ４０５、４１０に割り当てるか、または高速度デバイスまたはハブのためにＥＨＣ２２５に割り当てる。
【００６８】
つまり、図４のＵＳＢ２．０ホストコントローラはＥＨＣＩ規格に従い、ＵＳＢ１．１物理デバイスの代わりに、ポートルータブロック４１５とインターフェイス接続するために必要な最小限の変更によって既存のＯＨＣＩ  ＵＳＢ１．１ホストコントローラを使用することを可能にしている。
【００６９】
プラグアンドプレイ構成は、各ホストコントローラ４０５，４１０，２２５によって別個にハンドルされる。ＯＨＣＩコントローラ２１５がＥＨＣＩコントローラ２２５よりも小さい機能番号（function number）を持たなければならないという、ＥＨＣＩによって課される制限が存在しうる。
【００７０】
図４のＵＳＢ２．０対応ホストコントローラは、ＥＨＣＩ対応ホストコントローラをサウスブリッジ３１０に統合して実装するためのハードウェアアーキテクチャとして定義することができる。次にホストコントローラは、ＵＳＢ−２アナログ入力／出力ピンとリンクインターフェイスモジュールの間に常駐して、システムメモリへのアップストリームのインターフェイスを実現、例えばシステムにノースブリッジが存在すれば、ノースブリッジへのインターフェイスを提供する。このインターフェイスは内部のHyperTransport（商標）インターフェイスである。このHyperTransport技術は高速、高性能のポイント間リンクであって、マザーボード上の集積回路同士を相互接続する。この技術は、同等のピン数で比べるとＰＣＩバスよりも相当高速である。HyperTransport技術は、現在の技術よりもずっと広いバンド幅を提供し、低レイテンシ応答を用いて、少ないピン数で、レガシーＰＣバスと互換性を持ち、新しいシステムネットワークアーキテクチャバスに対する拡張性を持ち、オペレーティングシステムに対して透過的であり、周辺装置のドライバに大きな影響を与えないように設計されている。
【００７１】
従って、図４の実施形態では、拡張ホストコントローラ２２５がすべての高速度ＵＳＢトラフィックをハンドリングするとともに、それ自身のポート所有権およびポートルータ４１５を介した副コントローラ２１５のポート所有権の制御に責任を持つ、HyperTransportベースのＵＳＢホストコントローラが提供される。ＥＨＣ２２５のパワーオンリセット、またはソフトウェア制御リセットの後、デフォルトでは、すべてのポートが副ホストコントローラ２１５によって所有、制御され、すべての実行レジスタはそれぞれのデフォルト値に設定され、ＥＨＣ２２５は停止し、つまりシステムメモリ３１５からのディスクリプタをフェッチもしないし、なんらのＵＳＢアクティビティをも発行しないことを宣言することができる。通常の動作では、ＥＨＣ２２５は等時性を処理し、周期リストからの転送、非同期リストからのバルクおよび制御をインタラプトする。いずれのリストも空であってよく、またはその処理はソフトウェアによってディスエーブルされる。
【００７２】
図５に、拡張ホストコントローラＥＨＣ２２５の構成要素をさらに詳細に示す。図からわかるように、拡張ホストコントローラ２２５は、１００ＭＨｚコアクロックドメインと、６０ＭＨｚクロックドメインとに分けられる。６０ＭＨｚクロックドメインはトランザクションを物理デバイスにルーティングするための回路を含んでおり、一方１００ＭＨｚクロックドメインは実際のディスクリプタ処理を行う。ここで、他の実施形態では、ドメインは上記１００ＭＨｚおよび６０ＭＨｚの値とは異なるクロック速度を有していてもよいことに注意してもらいたい。これらの実施形態では、ディスクリプタを処理するドメインのクロックは他のドメインのクロックよりも依然として高い周波数を有する。
【００７３】
１００ＭＨｚのドメインでは、システムメモリに対する、およびそれからのデータトラフィックのハンドリングはスタブ（stub）５００によって行われる。スタブ５００はHyperTransportストリームのそれぞれ、つまりポストされた要求、ポストされていない要求、応答に、内部ソースと受信部（sink）を割り当てる。スタブ５００は、すべての内部バスマスタ、つまり受信ＤＭＡ（ダイレクトメモリアクセス）エンジン５１０、ディスクリプタキャッシュ５４５、ディスクリプタ処理ユニット５２５、および送信ＤＭＡエンジン５５０の間の内部HyperTransportインターフェイスを調停する。従って、スタブ５００はディスクリプタフェッチ、ディスクリプタ書き戻し、データの受信および送信の間を調停する。
【００７４】
スタブ５００はＥＨＣＩレジスタを含むレジスタファイル５０５に接続される。本実施形態においては、ＥＨＣＩレジスタは、ＰＣＩ構成、ホストコントローラの性能およびホストコントローラ実行モードに関するデータを記憶する。
【００７５】
ディスクリプタ処理ユニット５２５はスタブ５００に接続され、３つのサブユニット、ディスクリプタフェッチングユニット（DescrFetch）５３０、ディスクリプタ記憶ユニット（DescrStore）５３５およびトランザクション完了マシン（TACM）５４０から構成される。ディスクリプタフェッチングユニット５３０は、タイミング情報およびレジスタ設定に基づいて、どのディスクリプタがフェッチされるべきか、または次にプリフェッチされるべきかを決定し、その要求をスタブ５００および／またはディスクリプタキャッシュ５４５に送る。それがディスクリプタを受信したとき、それはディスクリプタをディスクリプタ記憶ユニット５３５に送る。
【００７６】
ディスクリプタ記憶ユニット５３５はプリフェッチされたディスクリプタを記憶する。記憶管理を実行することによって、その主要な機能はディスクリプタのフェッチについての平均的なメモリアクセスレガシーに記憶容量を与えることである。
【００７７】
トランザクション完了マシン５４０はディスクリプタフェッチングユニット５３０に接続され、ディスクリプタへの状態書き戻し（status write-back）を管理する。この目的のためにトランザクション完了マシン５４０はディスクリプタキャッシュ５４５に接続される。
【００７８】
このキャッシュは、高速再アクセスのために、ディスクリプタフェッチングユニット５３０によってプリフェッチされたディスクリプタを記憶する。ディスクリプタキャッシュ５４５に記憶されたディスクリプタはトランザクション完了マシン５４０によって更新され、最終的にはスタブ５００を介してシステムメモリに書き戻される。ディスクリプタキャッシュ５４５はライトスルー（write-through）特性に関しては完全にアソシアティブとすることができる。それはさらに各マイクロフレームの内容置換を制御可能である。
【００７９】
図５から明らかなように、１００ＭＨｚのクロックドメインには、送信ＤＭＡエンジン５５０と受信ＤＭＡエンジン５１０とが存在する。この送信ＤＭＡエンジン５５０はデータフェッチングユニット（DataFetch）５５５と、データ送信バッファ（TxBuf）５６０とから構成される。このデータフェッチングユニット５５５はＤＭＡリードバスマスタであって、ディスクリプタ処理ユニット５２５のディスクリプタ記憶ユニット５３５内のエントリを検査する。データフェッチングユニット５５５は対応するデータをプリフェッチして、それをデータ送信バッファ５６０に転送する。
【００８０】
データ送信バッファ５６０はＦＩＦＯ（先入れ先出し）バッファとすることができ、その機能はメモリシステムレイテンシを補償するために出力されるトランザクションに対して十分なデータをプリフェッチすることを可能にするという点でディスクリプタ記憶ユニット５３５のそれに対応する。データ送信バッファ５６０はドメインの異なったクロックをハンドリングするためのクロックドメイン変換器としても機能する。
【００８１】
受信ＤＭＡエンジン５１０は、データ受信バッファ（RxBuf）５２０に記憶された受信データをシステムメモリ内のそれぞれの位置に移動させるＤＭＡライトバスマスタユニットとして機能するデータ書き込みユニット（DataWrite）５１５から構成される。データ受信バッファ５２０は単純なＦＩＦＯバッファでよく、クロックドメイン変換器としても機能することができる。
【００８２】
６０ＭＨｚクロックドメインには、マスタＵＳＢ時間基準（time reference）であるフレームタイミングユニット（Frame Timing）５６５が設けられている。このフレームタイミングユニットの１つのクロックティック（tick）はＵＳＢ高速ビット時間の整数（例えば８または１６）倍に対応する。このフレームタイミングユニット５６５はディスクリプタ記憶ユニット５３５およびパケットハンドラブロック５７０に接続される。
【００８３】
パケットハンドラブロック５７０は、データを送信し、ハンドシェイクを行うために必要なＵＳＢバスオペレーションを生成するパケット生成ユニット（PktBuild）５８５および受信したＵＳＢパケットを分解するパケットデコーダ（PktDecode）５７５から構成される。さらに、パケット生成ユニット５８５およびパケットデコーダ５７５を管理するトランザクションコントローラ（TaCtrl）５８０も設けられる。さらに、パケットハンドラ５７０は送信データおよび受信データのＣＲＣデータを生成し、チェックするためのＣＲＣ（巡回冗長検査）ユニット５９０を含む。
【００８４】
パケットハンドラ５７０のパケット生成ユニット５８５およびパケットデコーダ５７５はルートハブ５９５に接続される。ルートハブ５９５は、ポート特定制御レジスタ、接続検出ロジックおよびパケットハンドラ５７０とポートルータとの間のパケットのための分散／集中（scatter/gather）機能を含む。
【００８５】
上述のように、スタブ５００はＵＳＢコントローラの内部HyperTransportインターフェイスへの取り付けに関して責任を持つユニットである。HyperTransportインターフェイスを用いるいくつかの要求装置５１０，５４５，５２５，５５０が存在するため、異なるユニットがインターフェイスにアクセスするのを公平かつ効率的に許可するために調停（アービトレーション）ロジックを含む。HyperTransportソース要求を発行できる４つのバスマスタがある一方で、HyperTransportターゲット要求の宛先となるバススレーブは１つしかなく、それはレジスタファイルユニット５０５である。
【００８６】
内部HyperTransportインターフェイスそれ自体がすでにデバイスターゲットとデバイスソースインターフェイスとを区別しているので、ターゲットインターフェイス側では調停の必要はなく、これはレジスタファイルユニット５０５に直接マッピングできる。しかしながら、HyperTransportソースインターフェイスは調停を必要とする。本実施形態では、拡張ホストコントローラ２２５に割り当てられたHyperTransportバッファが多数あるので、任意の時点において最大６つの読み出し（リード）要求が競合しうる。つまり、内部HyperTransportインターフェイスは最初の要求への応答がある前に、６つの読み出し要求を受け付ける準備がある。他の実施形態では、未解決の要求の数は６以外の数であってもよい。内部HyperTransportインターフェイスは、書き込み要求を、それが生成されるのとおなじぐらい速く処理できると仮定する。スタブ５００はHyperTransport応答ソースタグを監視することによってそれぞれの目的地に応答を割り当てる。各ユニットは、最上位の２ビットがそれぞれのユニットについて一意に決められたソースタグの範囲を使用することができる。
【００８７】
図６に、ディスクリプタ記憶ユニット５３５をさらに詳細に示す。それは、フレームタイミングユニット５６５からタイミング信号を受信して、ディスクリプタフェッチングユニット５３０からの、およびそれへのデータトラフィックを制御する。さらに、制御ユニット６００は、メモリアクセスのために記憶されたディスクリプタを提供するために、送信ＤＭＡエンジン５５０、特にデータフェッチングユニット５５５に接続される。
【００８８】
ディスクリプタ記憶ユニット５３５は、ディスクリプタに対して実際にメモリを供給する記憶ユニット６０５をさらに含む。記憶ユニット６０５はさらに送信ＤＭＡエンジン５５０、そしてディスクリプタ記憶ユニット５３５の変換ユニット６１０に接続される。変換ユニット６１０は制御ユニット６００によって制御され、記憶ユニット６０５からディスクリプタを読み出し、受信したディスクリプタをそれぞれのトランザクションの処理に必要なトランザクション項目に変換する。この目的のために、変換ユニット６１０はパケットハンドラ５７０に接続される。
【００８９】
図５に戻って、ホストコントローラの構造および上記の議論から、ディスクリプタフェッチングユニット５３０、実際にトランザクションを処理するパケットハンドラ５７０そして送信および受信ＤＭＡエンジン５５０，５１０は非同期で動作することは明らかである。
【００９０】
一実施形態に従った送信プロセスを図７の流れ図を参照して説明する。ステップ７００で、ディスクリプタフェッチングユニット５３０がどのディスクリプタをフェッチするべきかを決定する。次に、ディスクリプタフェッチングユニット５３０はステップ７０５でその決定されたディスクリプタを要求し、ステップ７１０で要求したディスクリプタを受信する。要求したディスクリプタを受信したディスクリプタフェッチングユニット５３０は、ステップ７１５でそのディスクリプタをディスクリプタキャッシュ５４５に転送し、ステップ７２０でディスクリプタ記憶ユニット５３５に転送する。
【００９１】
データをフェッチするべきとき、送信ＤＭＡエンジン５５０のデータフェッチングユニット５５５は、ステップ７２５でディスクリプタ記憶ユニット５３５のエントリを検査し、ステップ７３０で対応するデータをフェッチする。次に、このフェッチされたデータは、ステップ７３５でデータ送信バッファ５６０にバッファリングされる。
【００９２】
ステップ７４０で、ディスクリプタ記憶ユニット５３５の変換ユニット６１０は記憶された各ディスクリプタを変換してトランザクション項目を生成する。ステップ７４５で、パケット組立器５８５は、この生成されたトランザクション項目およびデータ送信バッファ５６０に記憶されているフェッチされたデータに基づいてパケットを組み立てる。次にステップ７５０で、組み立てられたパケットはルートハブ５９５によって送信される。
【００９３】
図８は受信のプロセスを示し、ステップ８００において、パケットハンドラ５７０のパケットデコーダ５７５でパケットを受信する。ステップ８０５で、パケットデコーダ５７５は受信したパケットを分解し、データ受信バッファ５２０にデータを送信する。ステップ８１０において、データ受信バッファ５２０にデータが記憶される。データ書き込みユニット５１５の制御下で、ステップ８１５において、このバッファリングされたデータはメモリに書き込まれる。さらに、パケットデコーダ５７５からの通知を受けて、ステップ８２０において、トランザクション完了マシン５４０はディスクリプタ書き戻し動作を開始することができる。次に、ステップ８２５で、キャッシングされたディスクリプタが更新される。
【産業上の利用可能性】
【００９４】
明らかに、本発明は産業上のプロセスおよび製品に有利に応用することができる。
【図面の簡単な説明】
【００９５】
【図１】ＵＳＢ２．０対応のシステムの一例を示す図。
【図２】図１のシステムにおけるハードウェアおよびソフトウェア要素の層を示す図。
【図３】一般的なマザーボードのレイアウトを示す図。
【図４】一実施形態に従ったＵＳＢ２．０対応ホストコントローラの主要要素を示す図。
【図５】図４の構成の要素である拡張ホストコントローラの構成要素を示すブロック図。
【図６】図５の拡張ホストコントローラのディスクリプタ記憶ユニットを示す図。
【図７】一実施形態に従った送信プロセスを示す流れ図。
【図８】一実施例に従った受信プロセスを示す流れ図。
【図１】
2005520248.tif 000003
【図２】
2005520248.tif 000004
【図３】
2005520248.tif 000005
【図４】
2005520248.tif 000006
【図５】
2005520248.tif 000007
【図６】
2005520248.tif 000008
【図７】
2005520248.tif 000009
【図８】
2005520248.tif 000010
【国際調査報告】
2005520248.tif 000011
2005520248.tif 000012