JP2005520248A - Usbホストコントローラ - Google Patents
Usbホストコントローラ Download PDFInfo
- Publication number
- JP2005520248A JP2005520248A JP2003577132A JP2003577132A JP2005520248A JP 2005520248 A JP2005520248 A JP 2005520248A JP 2003577132 A JP2003577132 A JP 2003577132A JP 2003577132 A JP2003577132 A JP 2003577132A JP 2005520248 A JP2005520248 A JP 2005520248A
- Authority
- JP
- Japan
- Prior art keywords
- data
- usb
- unit
- host controller
- descriptor
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/382—Information transfer, e.g. on bus using universal interface adapter
- G06F13/387—Information transfer, e.g. on bus using universal interface adapter for adaptation of different data processing systems to different peripheral devices, e.g. protocol converters for incompatible systems, open system
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Transfer Systems (AREA)
- Bus Control (AREA)
- Small-Scale Networks (AREA)
Abstract
少なくとも一つのUSBデバイスとコンピュータシステムのシステムメモリとの間のデータトラフィックをハンドリングするUSBホストコントローラを提供する。USBホストコントローラは、システムメモリからデータエレメントをフェッチするデータフェッチユニット(530)と、前記フェッチされたデータエレメントを記憶する記憶ユニット(535)と、前記記憶ユニットに記憶された前記フェッチされたデータエレメントに応じて、前記USBデバイスへ送信され、またはそれから受信されるトランザクションを処理するトランザクション処理ユニット(570)とを備え、前記データフェッチユニットと前記トランザクション処理ユニットとは非同期に動作するように構成されている。このホストコントローラはUSB2.0対応であってもよく、サウスブリッジに実装することもできる。
Description
本発明は一般にUSB(Universal Serial Bus、ユニバーサルシリアルバス)ホストコントローラに関し、さらに詳細にはUSBデバイスとコンピュータシステムのシステムメモリの間のデータトラフィックの処理に関する。
ユニバーサルシリアルバスは、コンピュータシステムに追加の周辺装置の接続を容易にする外部拡張バスの規格として、1995年に最初に開発された。USB技術はPC(パーソナルコンピュータ)ホストコントローラハードウェアおよびソフトウェアならびに周辺装置に親和的なマスタ・スレーブプロトコルによって実装され、堅牢な接続およびケーブルアセンブリを実現している。USBシステムはマルチポートハブを介して拡張可能である。
USBシステムでは、システムソフトウェアの役割はハードウェア実装の詳細を隠すことによって、すべてのアプリケーションソフトウェアに対して、入出力アーキテクチャの統一された見え方を提供することにある。特に、それは周辺装置の動的な取り付けおよび取り外しを管理し、周辺装置と通信してその同一性を認識する。実行時には、ホストは特定の周辺装置に対するトランザクションを発し、各周辺装置はそのトランザクションを受け入れて適切に応答する。
USB周辺装置に対する追加的な接続性を設けるためにハブがシステムに導入され、接続されたデバイスに対して管理された電力を供給する。これらの周辺装置は、ホストから送信された要求トランザクションに応答しなければならないスレーブである。そのような要求トランザクションにはそのデバイスおよびその構成についての詳細な情報に対する要求も含まれる。
これらの機能およびプロトコルはすでにUSB1.1の規格に規定されているが、この機能はさらに高い性能のインターフェイスを提供するために改良されている。図1は、ホストコントローラ100,複数のUSBデバイス115,120,125,130および2つのハブ105,110を含むUSB2.0システムの一例を示している。図1のシステムでは、接続性を増加させるためにハブ105、110を導入したが、他のUSB2.0システムではUSBデバイスはホストコントローラ100に直接接続することができる。
上述のように、USB2.0はより高性能なインターフェイスを提供し、最大で約40倍の高速化が実現されている。さらに、図1からあきらかなように、同じホストコントローラ100によって駆動されるUSB1.1デバイス120,125,130を接続することができることから、USB2.0はUSB1.1との下方互換性を有する。USB1.1のハブ110をも使用することができる。
図1からわかるように、USB1.1のデバイス120はUSB2.0のハブ105に直接接続することができる。さらに、それはホストコントローラ100に直接接続することもできる。これが可能なのは、USB2.0のホストコントローラおよびハブが、デバイス対デバイスの関係において、高速の伝送速度でも、低速の伝送速度でもネゴシエーションをする機能を持つからである。
図2に、USB2.0のシステムのシステムソフトウェアおよびハードウェアを示す。システムの構成要素は、図に示すように、いくつかの層を定義することによって階層的に編成することが可能である。
最上層では、クライアントドライバソフトウェア200がホストPC上で実施され、特定のUSBデバイス230に対応する。このクライアントソフトウェアは通常オペレーティングシステムの一部であり、デバイスと一緒に提供される。
USBドライバ205はシステムソフトウェア・バスドライバであって、特定のオペレーティングシステムのための特定のホストコントローラドライバ210,215の詳細を抜き出したものである。ホストコントローラドライバ210,220は、ドライバとハードウェアのインターフェイスを提供するために特定のハードウェア215,225,230とUSBドライバ205との間のソフトウェア層を提供する。
これまで議論してきた層はソフトウェアによって実装されるものであるが、最上部のハードウェア部品層としてホストコントローラ215,225が含まれる。これらのコントローラはエンドユーザ機能を実行するUSBデバイス230に接続される。
図面から明らかなように、高速なUSB2.0機能のための拡張ホストコントローラ(EHC)である、ホストコントローラ225が設けられている。このホストコントローラはUSB2.0のEHCI(Enhanced Host Controller Interface、拡張ホストコントローラインターフェイス)規格に従って動作する。ソフトウェア側では、ホストコントローラ225は、それに関連する特別のホストコントローラドライバ(EHCD)220を持つ。
さらに、最大速度および低速度の動作のためのホストコントローラ215が設けられている。UHCI(Universal Host Controller Interface)またはOHCI(Open Host Controller Interface)は、USB1.1ホストコントローラインターフェイスを提供するためのユニバーサルな、またはオープンホストコントローラ(UHC/OHC)215において採用されている2つの業界標準である。ホストコントローラ215はその最下層のソフトウェアレベルにユニバーサル/オープンホストコントローラデバイス(UHCD/OHCD)210を割り当てている。
従って、USB2.0準拠のホストコントローラシステムは、必ずEHCI規格に従ったドライバソフトウェアとホストコントローラハードウェアとを含む。この規格ではレジスタレベルのインターフェイスとそれに関連したメモリ常駐のデータ構造とを規定しているが、それに準拠したホストコントローラを構築するために必要なハードウェアアーキテクチャについては定義も説明もしていない。
図3に、一般的なマザーボードレイアウトにおけるハードウェア要素を示す。マザーボード上の基本的な構成要素には、CPU(中央処理装置)300,ノースブリッジ305,サウスブリッジ310およびシステムメモリ315が含まれる。ノースブリッジ305は一般に単一チップのコアロジックチップセットであって、プロセッサ300をシステムメモリ315およびAGP(Accelerated Graphic Port)およびPCI(Peripheral Component Interface)バスに接続する。PCIバスはパーソナルコンピュータにおいて一般的に用いられ、プロセッサとビデオカード、サウンドカード、ネットワークインターフェイスカードおよびモデムなどの周辺デバイスとの間のデータパスを提供する。AGPバスは高速のグラフィック拡張バスであって、ディスプレイアダプタとシステムメモリ315とを直接接続する。AGPとPCIバスとは独立して動作する。ノースブリッジを持たないような、またはAGPまたはPCIオプションがないノースブリッジを持つような他のマザーボードレイアウトが存在することに注意してもらいたい。
サウスブリッジ310は一般的にシステムコアロジックチップセット中のチップであって、IDE(Integrated Drive Electronics)またはEIDE(Enhanced IDE)バス、USBバスを制御し、プラグアンドプレイサポートを提供し、PCI−ISA(Industry Standard Architecture)ブリッジを制御し、キーボード/マウスコントローラを管理し、電力管理機能を提供し、他の周辺装置を制御する。
入力/出力ハブチップ、例えばサウスブリッジに統合するためのEHCI準拠のホストコントローラの実装に適したアーキテクチャを定義する改良されたUSBホストコントローラ、コンピュータシステムおよび動作方法が提供される。
本発明の一実施形態において、少なくとも一つのUSBデバイスとコンピュータシステムのシステムメモリとの間のデータトラフィックをハンドリングするUSBホストコントローラが提供される。このUSBホストコントローラはシステムメモリからデータエレメントをフェッチするデータフェッチユニットを備える。このUSBホストコントローラはさらにフェッチされたデータエレメントを記憶する記憶ユニットと、この記憶ユニットに結合され、少なくとも一つのUSBデバイスに送出され、またはそれから受信したトランザクションを、記憶ユニットに記憶されたフェッチされたデータエレメントに応じて処理するトランザクション処理ユニットとを備える。このデータフェッチユニットと、トランザクション処理ユニットとは非同期で動作するように構成されている。
他の実施形態では、USBホストコントローラは前記システムメモリのメモリコントローラへの、またはそれからのデータ転送をハンドリングするインターフェイスユニットをさらに含む。
他の実施形態では、このインターフェイスユニットはHT I/O(HyperTransport技術入出力)バスに対するインターフェイスを提供する。
他の実施形態では、USBホストコントローラは前記データフェッチユニットによる再アクセスのためにフェッチされたデータエレメントを記憶するキャッシュをさらに含み、このキャッシュは前記インターフェイスユニットにデータエレメントを書き戻すことが可能であり、前記インターフェイスユニットは前記データフェッチユニットと前記キャッシュとの間を調停するように構成されている。
他の実施形態では、前記USBホストコントローラは、前記インターフェイスユニットにデータを送信し、および/またはそれからデータを受信することができる少なくとも一つのDMA(ダイレクトメモリアクセス)エンジンをさらに含み、前記インターフェイスユニットは前記データフェッチユニットと前記少なくとも一つのDMAエンジンとの間を調停するように構成されている。
他の実施形態では、前記USBホストコントローラは、前記データフェッチユニットによる再アクセスのためにフェッチされたデータエレメントを記憶するキャッシュ(545)をさらに含む。
他の実施形態において、前記USBホストコントローラは、前記キャッシュおよび前記データフェッチユニットに結合され、トランザクションが完了したときに前記キャッシュ中のデータエレメントを更新するトランザクション完了ユニットをさらに含む。
他の実施形態では、前記データフェッチユニットと前記トランザクション完了ユニットとは非同期で動作する。
他の実施形態では、前記キャッシュは前記システムメモリにデータエレメントを書き戻すために結合される。他の実施形態では、USBホストコントローラは前記システムメモリにデータエレメントを書き戻すようにキャッシュを制御するために前記キャッシュに結合されるトランザクション完了ユニットをさらに含む。
他の実施形態では、前記キャッシュはライトスルー(write-through)キャッシュである。他の実施形態では、前記キャッシュはアソシアティブ(associative)キャッシュである。
他の実施形態では、前記データフェッチユニットと前記キャッシュとは非同期で動作する。
他の実施形態では、前記USBホストコントローラは、前記システムメモリからデータをフェッチするためのDMAリードバスマスタとして動作する送信DMA(ダイレクトメモリアクセス)エンジンをさらに含む。
他の実施形態では、前記送信DMAエンジンは前記記憶ユニットに結合され、前記記憶されたデータエレメントを検査して、前記検査されたデータエレメントに基づいて前記システムメモリからどのデータをフェッチすべきかを決定する。他の実施形態では、前記送信DMAエンジンは、前記フェッチされたデータを記憶するためのFIFO(First In First Out)データバッファを含む。他の実施形態では、USBホストコントローラは、前記システムメモリへデータを書き込むためのDMAライトバスマスタとして動作する受信DMA(ダイレクトメモリアクセス)エンジンをさらに含む。他の実施形態では、前記受信DMAエンジンは、前記システムメモリに書き込まれるデータを記憶するためのFIFO(First In First Out)データバッファを含む。
他の実施形態では、前記データフェッチユニットは、タイミング情報およびレジスタ設定に基づいて、どのデータエレメントをフェッチすべきかを決定するように構成されている。他の実施形態において、USBホストコントローラは、EHCI(エンハンスド・ホスト・コントローラ・インターフェイス)規格に従った、USB−2(ユニバーサルシリアルバスリビジョン2)ホストコントローラである。他の実施形態では、USBホストコントローラは前記システムメモリのメモリコントローラへの、またはそれからのデータ転送をハンドリングするインターフェイスユニットと、前記インターフェイスユニットに接続され、バス構成データ、ホストコントローラ性能データ、実行モードデータおよびホストコントローラ状態情報を記憶する複数のEHCIレジスタを有するレジスタユニットとをさらに含む。他の実施形態では、USBホストコントローラは第1および第2クロックドメインを有し、前記データフェッチユニットおよび前記記憶ユニットは前記第1クロックドメインに位置し、前記トランザクション処理ユニットは前記第2クロックドメインに位置し、前記第2クロックドメインの周波数は前記第1クロックドメインの周波数よりも低い。
他の実施形態では、USBホストコントローラは、前記少なくとも一つのUSBデバイスへのデータ転送のクロックタイミングと同相(in-phase)の対応関係にあるタイミングユニットと、前記記憶ユニットからデータエレメントを取り出して、その取り出したデータエレメントをそれぞれのトランザクションを処理するために必要なトランザクション項目に変換する変換ユニットとをさらに備え、前記タイミングユニットは前記記憶ユニットおよび前記変換ユニットの制御ユニットに接続されている。
他の実施形態では、前記トランザクション処理ユニットは、データを送信して、前記少なくとも一つのUSBデバイスとハンドシェイクするためにUSBバスオペレーションを生成し、受信したUSBパケットを分解するパケットハンドラユニットを有し、前記パケットハンドラユニットは前記タイミングユニットに接続されている。
他の実施形態において、USBホストコントローラは第1および第2クロックドメインを有し、前記データフェッチユニット、記憶ユニットおよび変換ユニットは前記第1クロックドメインに位置し、前記トランザクション処理ユニットおよび前記タイミングユニットは前記第2クロックドメインに位置する。他の実施形態では、前記トランザクション処理ユニットは、データを送信して、前記少なくとも一つのUSBデバイスとハンドシェイクするためにUSBバスオペレーションを生成するパケット生成ユニットと、受信したUSBパケットを分解するパケットデコーディングユニットを有する。
他の実施形態では、前記記憶ユニットからデータエレメントを受信して、その受信したデータエレメントをトランザクション項目に変換する変換ユニットをさらに備え、前記パケット生成ユニットは前記トランザクション項目を受信するために前記変換ユニットに接続されている。
他の実施形態では、USBホストコントローラは、前記データフェッチユニットに接続され、前記システムメモリへのデータエレメントの書き戻しオペレーションを始動することができるトランザクション完了ユニットをさらに含み、前記パケットデコーディングユニットは前記トランザクション完了ユニットに接続されて、前記トランザクション完了ユニットに書き戻しオペレーションを開始するかどうかを決定するために必要なデータを提供する。
他の実施形態では、前記トランザクション処理ユニットは、前記パケット生成ユニットおよび前記パケットデコーディングユニットに結合され、送信されたデータ中および受信されたデータ中のエラーを検出するCRC(Cyclic Redundancy Check、周回冗長検査)ユニットをさらに備える。
本発明の別の実施形態において、システムメモリを有し、USBデバイスに接続可能なコンピュータシステムが提供される。このコンピュータシステムは上述の実施形態の一つに従ったUSBホストコントローラを含む統合チップを備える。
本発明の他の実施形態に従って、USBデバイスに接続されたコンピュータシステムにおけるUSBホストコントローラの制御方法が提供される。この方法は、コンピュータシステムのシステムメモリからディスクリプタをフェッチするステップと、フェッチされたディスクリプタを記憶するステップと、記憶されたディスクリプタを使用して生成されたトランザクション項目に基づいてUSBデバイスに対する、および/またはそれからのトランザクションを処理するステップとを含む。このフェッチするステップと、処理するステップとは非同期に実行される。
他の実施形態において、この方法は前記システムメモリのメモリコントローラへのおよびそれからのデータ転送をハンドリングするステップをさらに含む。
他の実施形態において、前記データ転送をハンドリングするステップは、HT I/O(HyperTransport technology Input/Output)バスへのインターフェイスによって実行される。
他の実施形態において、本方法は、前記インターフェイスに対してデータを送信し、および/またはそれからデータを受信するために少なくとも1つのDMA(ダイレクトメモリアクセス)エンジンを動作させるステップをさらに含む。
他の実施形態において、本方法は、再アクセスのためにキャッシュ(545)中にフェッチされたディスクリプタを記憶するステップをさらに含む。
他の実施形態では、本方法は、トランザクションを完了したときに、前記キャッシュ中のディスクリプタを更新するステップをさらに含む。
他の実施形態では、前記フェッチするステップと、前記更新するステップとは非同期で実行される。
他の実施形態では、本方法は、前記システムメモリにディスクリプタを書き戻すステップをさらに含む。
他の実施形態では、前記ディスクリプタをフェッチするステップと、前記フェッチしたディスクリプタをキャッシュに記憶するステップとは非同期に実行される。
他の実施形態では、本方法は、前記システムメモリからデータをフェッチするために送信DMA(ダイレクトメモリアクセス)エンジンをDMAリードバスマスタとして動作させるステップをさらに含む。
他の実施形態では、本方法は、前記記憶されたフェッチされたディスクリプタを検査し、前記システムメモリからどのデータをフェッチするべきかを前記検査されたディスクリプタに基づいて決定する前記送信DMAエンジンを動作させるステップをさらに含む。
他の実施形態では、本方法は、フェッチされたデータをFIFO(先入れ先出し)データバッファに記憶するステップをさらに含む。
他の実施形態では、本方法は、前記システムメモリへデータを書き込むために受信DMA(ダイレクトメモリアクセス)エンジンをDMAライトバスマスタとして動作させるステップをさらに含む。
他の実施形態では、本方法は、前記システムメモリへ書き込まれるべきデータをFIFO(先入れ先出し)データバッファに記憶するステップをさらに含む。
他の実施形態において、本方法は、前記システムメモリのメモリコントローラへのおよびそれからのデータ転送をハンドリングするステップと、複数のEHCIレジスタを含むレジスタユニットにバス構成データ、ホストコントローラ性能データ、実行モードデータおよびホストコントローラ状態情報を記憶するステップとをさらに含む。
他の実施形態において、前記USBホストコントローラは第1および第2クロックドメインを有し、前記フェッチするステップおよび記憶するステップは前記第1クロックによって駆動され、前記処理するステップは前記第2クロックによって駆動され、前記第2クロックドメインの周波数は前記第1クロックドメインの周波数よりも低い。
他の実施形態では、本方法は、前記USBデバイスへのデータ転送のクロックタイミングと同相(in-phase)の対応関係にあるクロック信号を供給するステップと、フェッチされ記憶されたディスクリプタを取り出すステップと、その受信したディスクリプタをそれぞれのトランザクションを処理するために必要なトランザクション項目に変換するステップとさらに含み、前記記憶するステップと前記変換するステップとは前記クロック信号によって制御される。
他の実施形態では、前記トランザクションを処理するステップは、前記USBデバイスにデータを送信し、ハンドシェイクをするためにUSBバスオペレーションを生成するステップと、受信したUSBパケットを分解するステップとを含み、前記生成するステップと分解するステップとは前記クロック信号の制御下で実行される。
他の実施形態において、前記USBホストコントローラは第1および第2クロックドメインを有し、前記フェッチするステップ、記憶するステップおよび変換するステップは前記第1クロックによって駆動され、前記処理するステップは前記第2クロックによって駆動される。
他の実施形態において、前記トランザクションを処理するステップは、前記USBデバイスにデータを送信し、ハンドシェイクをするためにUSBバスオペレーションを生成するステップと、受信したUSBパケットを分解するステップとを含む。
他の実施形態では、本方法は、フェッチされ、記憶されたディスクリプタにアクセスするステップと、アクセスされたディスクリプタをトランザクション項目に変換するステップとをさらに含み、前記USBバスオペレーションを生成するステップは前記トランザクション項目にアクセスするステップを含む。
他の実施形態では、本方法は、前記システムメモリに対するディスクリプタの書き戻しオペレーションを開始するステップをさらに含み、前記分解するステップは書き戻しオペレーションを開始するかどうかを決定するのに必要なデータを供給するステップを含む。
他の実施形態では、前記生成するステップと分解するステップとは送信されたデータ中および受信したデータ中のエラーを検出するためにCRC(巡回冗長検査)検査を実行するステップを含む。
添付の図面は、本発明の原理を説明する目的において、本明細書に組み込まれ、その一部を構成する。これらの図面は本発明を限定するものと考えるべきではなく、本発明をいかに生産し、使用するかについて図解および説明された例であると考えるべきである。さらに、添付の図面に示されるように、後述のさらに詳細な説明から本発明の特徴および利点があきらかになるであろう。
図面を参照して、本発明の例としての実施形態を説明する。図面において、類似の要素および構造は類似の参照番号で示す。
図面、特に図4に、一実施形態に従ったUSB2.0対応ホストコントローラ400の主要な構成要素を示す。一般的に、ホストコントローラは3つの主要な構成要素、拡張ホストコントローラ(EHC)225,一以上の副ホストコントローラ215およびポートルータ415から構成される。
拡張ホストコントローラ225はUSB2.0の高速トラフィックをハンドルする。さらにそれはポートルータ415を制御する。
本実施形態の副ホストコントローラ215には、2つのOHCI対応ホストコントローラ、OHC0 405およびOHC1 410がある。これらのコントローラはすべてのUSB1.1対応トラフィックをハンドルし、USBを認識しない環境のためのレガシーキーボードエミュレーションを含んでいてもよい。
ポートルータ415はそれぞれの持ち主に物理ポートインターフェイスを割り当てる。この所有権はEHCレジスタによって制御され、省略時(per default)には、USB1.1認識のドライバのみが機能するようにシステムを許可するために、すべてのポートは副ホストコントローラにルーティングされる。もしUSB2.0認識のドライバがシステム上に存在しているならば、それはポートを低速度または全速度のデバイスまたはハブ(USB1.1のトラフィック)のために副ホストコントローラ405、410に割り当てるか、または高速度デバイスまたはハブのためにEHC225に割り当てる。
つまり、図4のUSB2.0ホストコントローラはEHCI規格に従い、USB1.1物理デバイスの代わりに、ポートルータブロック415とインターフェイス接続するために必要な最小限の変更によって既存のOHCI USB1.1ホストコントローラを使用することを可能にしている。
プラグアンドプレイ構成は、各ホストコントローラ405,410,225によって別個にハンドルされる。OHCIコントローラ215がEHCIコントローラ225よりも小さい機能番号(function number)を持たなければならないという、EHCIによって課される制限が存在しうる。
図4のUSB2.0対応ホストコントローラは、EHCI対応ホストコントローラをサウスブリッジ310に統合して実装するためのハードウェアアーキテクチャとして定義することができる。次にホストコントローラは、USB−2アナログ入力/出力ピンとリンクインターフェイスモジュールの間に常駐して、システムメモリへのアップストリームのインターフェイスを実現、例えばシステムにノースブリッジが存在すれば、ノースブリッジへのインターフェイスを提供する。このインターフェイスは内部のHyperTransport(商標)インターフェイスである。このHyperTransport技術は高速、高性能のポイント間リンクであって、マザーボード上の集積回路同士を相互接続する。この技術は、同等のピン数で比べるとPCIバスよりも相当高速である。HyperTransport技術は、現在の技術よりもずっと広いバンド幅を提供し、低レイテンシ応答を用いて、少ないピン数で、レガシーPCバスと互換性を持ち、新しいシステムネットワークアーキテクチャバスに対する拡張性を持ち、オペレーティングシステムに対して透過的であり、周辺装置のドライバに大きな影響を与えないように設計されている。
従って、図4の実施形態では、拡張ホストコントローラ225がすべての高速度USBトラフィックをハンドリングするとともに、それ自身のポート所有権およびポートルータ415を介した副コントローラ215のポート所有権の制御に責任を持つ、HyperTransportベースのUSBホストコントローラが提供される。EHC225のパワーオンリセット、またはソフトウェア制御リセットの後、デフォルトでは、すべてのポートが副ホストコントローラ215によって所有、制御され、すべての実行レジスタはそれぞれのデフォルト値に設定され、EHC225は停止し、つまりシステムメモリ315からのディスクリプタをフェッチもしないし、なんらのUSBアクティビティをも発行しないことを宣言することができる。通常の動作では、EHC225は等時性を処理し、周期リストからの転送、非同期リストからのバルクおよび制御をインタラプトする。いずれのリストも空であってよく、またはその処理はソフトウェアによってディスエーブルされる。
図5に、拡張ホストコントローラEHC225の構成要素をさらに詳細に示す。図からわかるように、拡張ホストコントローラ225は、100MHzコアクロックドメインと、60MHzクロックドメインとに分けられる。60MHzクロックドメインはトランザクションを物理デバイスにルーティングするための回路を含んでおり、一方100MHzクロックドメインは実際のディスクリプタ処理を行う。ここで、他の実施形態では、ドメインは上記100MHzおよび60MHzの値とは異なるクロック速度を有していてもよいことに注意してもらいたい。これらの実施形態では、ディスクリプタを処理するドメインのクロックは他のドメインのクロックよりも依然として高い周波数を有する。
100MHzのドメインでは、システムメモリに対する、およびそれからのデータトラフィックのハンドリングはスタブ(stub)500によって行われる。スタブ500はHyperTransportストリームのそれぞれ、つまりポストされた要求、ポストされていない要求、応答に、内部ソースと受信部(sink)を割り当てる。スタブ500は、すべての内部バスマスタ、つまり受信DMA(ダイレクトメモリアクセス)エンジン510、ディスクリプタキャッシュ545、ディスクリプタ処理ユニット525、および送信DMAエンジン550の間の内部HyperTransportインターフェイスを調停する。従って、スタブ500はディスクリプタフェッチ、ディスクリプタ書き戻し、データの受信および送信の間を調停する。
スタブ500はEHCIレジスタを含むレジスタファイル505に接続される。本実施形態においては、EHCIレジスタは、PCI構成、ホストコントローラの性能およびホストコントローラ実行モードに関するデータを記憶する。
ディスクリプタ処理ユニット525はスタブ500に接続され、3つのサブユニット、ディスクリプタフェッチングユニット(DescrFetch)530、ディスクリプタ記憶ユニット(DescrStore)535およびトランザクション完了マシン(TACM)540から構成される。ディスクリプタフェッチングユニット530は、タイミング情報およびレジスタ設定に基づいて、どのディスクリプタがフェッチされるべきか、または次にプリフェッチされるべきかを決定し、その要求をスタブ500および/またはディスクリプタキャッシュ545に送る。それがディスクリプタを受信したとき、それはディスクリプタをディスクリプタ記憶ユニット535に送る。
ディスクリプタ記憶ユニット535はプリフェッチされたディスクリプタを記憶する。記憶管理を実行することによって、その主要な機能はディスクリプタのフェッチについての平均的なメモリアクセスレガシーに記憶容量を与えることである。
トランザクション完了マシン540はディスクリプタフェッチングユニット530に接続され、ディスクリプタへの状態書き戻し(status write-back)を管理する。この目的のためにトランザクション完了マシン540はディスクリプタキャッシュ545に接続される。
このキャッシュは、高速再アクセスのために、ディスクリプタフェッチングユニット530によってプリフェッチされたディスクリプタを記憶する。ディスクリプタキャッシュ545に記憶されたディスクリプタはトランザクション完了マシン540によって更新され、最終的にはスタブ500を介してシステムメモリに書き戻される。ディスクリプタキャッシュ545はライトスルー(write-through)特性に関しては完全にアソシアティブとすることができる。それはさらに各マイクロフレームの内容置換を制御可能である。
図5から明らかなように、100MHzのクロックドメインには、送信DMAエンジン550と受信DMAエンジン510とが存在する。この送信DMAエンジン550はデータフェッチングユニット(DataFetch)555と、データ送信バッファ(TxBuf)560とから構成される。このデータフェッチングユニット555はDMAリードバスマスタであって、ディスクリプタ処理ユニット525のディスクリプタ記憶ユニット535内のエントリを検査する。データフェッチングユニット555は対応するデータをプリフェッチして、それをデータ送信バッファ560に転送する。
データ送信バッファ560はFIFO(先入れ先出し)バッファとすることができ、その機能はメモリシステムレイテンシを補償するために出力されるトランザクションに対して十分なデータをプリフェッチすることを可能にするという点でディスクリプタ記憶ユニット535のそれに対応する。データ送信バッファ560はドメインの異なったクロックをハンドリングするためのクロックドメイン変換器としても機能する。
受信DMAエンジン510は、データ受信バッファ(RxBuf)520に記憶された受信データをシステムメモリ内のそれぞれの位置に移動させるDMAライトバスマスタユニットとして機能するデータ書き込みユニット(DataWrite)515から構成される。データ受信バッファ520は単純なFIFOバッファでよく、クロックドメイン変換器としても機能することができる。
60MHzクロックドメインには、マスタUSB時間基準(time reference)であるフレームタイミングユニット(Frame Timing)565が設けられている。このフレームタイミングユニットの1つのクロックティック(tick)はUSB高速ビット時間の整数(例えば8または16)倍に対応する。このフレームタイミングユニット565はディスクリプタ記憶ユニット535およびパケットハンドラブロック570に接続される。
パケットハンドラブロック570は、データを送信し、ハンドシェイクを行うために必要なUSBバスオペレーションを生成するパケット生成ユニット(PktBuild)585および受信したUSBパケットを分解するパケットデコーダ(PktDecode)575から構成される。さらに、パケット生成ユニット585およびパケットデコーダ575を管理するトランザクションコントローラ(TaCtrl)580も設けられる。さらに、パケットハンドラ570は送信データおよび受信データのCRCデータを生成し、チェックするためのCRC(巡回冗長検査)ユニット590を含む。
パケットハンドラ570のパケット生成ユニット585およびパケットデコーダ575はルートハブ595に接続される。ルートハブ595は、ポート特定制御レジスタ、接続検出ロジックおよびパケットハンドラ570とポートルータとの間のパケットのための分散/集中(scatter/gather)機能を含む。
上述のように、スタブ500はUSBコントローラの内部HyperTransportインターフェイスへの取り付けに関して責任を持つユニットである。HyperTransportインターフェイスを用いるいくつかの要求装置510,545,525,550が存在するため、異なるユニットがインターフェイスにアクセスするのを公平かつ効率的に許可するために調停(アービトレーション)ロジックを含む。HyperTransportソース要求を発行できる4つのバスマスタがある一方で、HyperTransportターゲット要求の宛先となるバススレーブは1つしかなく、それはレジスタファイルユニット505である。
内部HyperTransportインターフェイスそれ自体がすでにデバイスターゲットとデバイスソースインターフェイスとを区別しているので、ターゲットインターフェイス側では調停の必要はなく、これはレジスタファイルユニット505に直接マッピングできる。しかしながら、HyperTransportソースインターフェイスは調停を必要とする。本実施形態では、拡張ホストコントローラ225に割り当てられたHyperTransportバッファが多数あるので、任意の時点において最大6つの読み出し(リード)要求が競合しうる。つまり、内部HyperTransportインターフェイスは最初の要求への応答がある前に、6つの読み出し要求を受け付ける準備がある。他の実施形態では、未解決の要求の数は6以外の数であってもよい。内部HyperTransportインターフェイスは、書き込み要求を、それが生成されるのとおなじぐらい速く処理できると仮定する。スタブ500はHyperTransport応答ソースタグを監視することによってそれぞれの目的地に応答を割り当てる。各ユニットは、最上位の2ビットがそれぞれのユニットについて一意に決められたソースタグの範囲を使用することができる。
図6に、ディスクリプタ記憶ユニット535をさらに詳細に示す。それは、フレームタイミングユニット565からタイミング信号を受信して、ディスクリプタフェッチングユニット530からの、およびそれへのデータトラフィックを制御する。さらに、制御ユニット600は、メモリアクセスのために記憶されたディスクリプタを提供するために、送信DMAエンジン550、特にデータフェッチングユニット555に接続される。
ディスクリプタ記憶ユニット535は、ディスクリプタに対して実際にメモリを供給する記憶ユニット605をさらに含む。記憶ユニット605はさらに送信DMAエンジン550、そしてディスクリプタ記憶ユニット535の変換ユニット610に接続される。変換ユニット610は制御ユニット600によって制御され、記憶ユニット605からディスクリプタを読み出し、受信したディスクリプタをそれぞれのトランザクションの処理に必要なトランザクション項目に変換する。この目的のために、変換ユニット610はパケットハンドラ570に接続される。
図5に戻って、ホストコントローラの構造および上記の議論から、ディスクリプタフェッチングユニット530、実際にトランザクションを処理するパケットハンドラ570そして送信および受信DMAエンジン550,510は非同期で動作することは明らかである。
一実施形態に従った送信プロセスを図7の流れ図を参照して説明する。ステップ700で、ディスクリプタフェッチングユニット530がどのディスクリプタをフェッチするべきかを決定する。次に、ディスクリプタフェッチングユニット530はステップ705でその決定されたディスクリプタを要求し、ステップ710で要求したディスクリプタを受信する。要求したディスクリプタを受信したディスクリプタフェッチングユニット530は、ステップ715でそのディスクリプタをディスクリプタキャッシュ545に転送し、ステップ720でディスクリプタ記憶ユニット535に転送する。
データをフェッチするべきとき、送信DMAエンジン550のデータフェッチングユニット555は、ステップ725でディスクリプタ記憶ユニット535のエントリを検査し、ステップ730で対応するデータをフェッチする。次に、このフェッチされたデータは、ステップ735でデータ送信バッファ560にバッファリングされる。
ステップ740で、ディスクリプタ記憶ユニット535の変換ユニット610は記憶された各ディスクリプタを変換してトランザクション項目を生成する。ステップ745で、パケット組立器585は、この生成されたトランザクション項目およびデータ送信バッファ560に記憶されているフェッチされたデータに基づいてパケットを組み立てる。次にステップ750で、組み立てられたパケットはルートハブ595によって送信される。
図8は受信のプロセスを示し、ステップ800において、パケットハンドラ570のパケットデコーダ575でパケットを受信する。ステップ805で、パケットデコーダ575は受信したパケットを分解し、データ受信バッファ520にデータを送信する。ステップ810において、データ受信バッファ520にデータが記憶される。データ書き込みユニット515の制御下で、ステップ815において、このバッファリングされたデータはメモリに書き込まれる。さらに、パケットデコーダ575からの通知を受けて、ステップ820において、トランザクション完了マシン540はディスクリプタ書き戻し動作を開始することができる。次に、ステップ825で、キャッシングされたディスクリプタが更新される。
明らかに、本発明は産業上のプロセスおよび製品に有利に応用することができる。
Claims (10)
- 少なくとも一つのUSBデバイス(330)とコンピュータシステムのシステムメモリ(115)との間のデータトラフィックをハンドリングするUSB(ユニバーサルシリアルバス)ホストコントローラであって、
前記システムメモリからデータエレメントをフェッチするデータフェッチユニット(530)と、
前記フェッチされたデータエレメントを記憶する記憶ユニット(535,605)と、
前記記憶ユニットに接続され、前記記憶ユニットに記憶された前記フェッチされたデータエレメントに応じて、前記少なくとも一つのUSBデバイスへ送信され、またはそれから受信されるトランザクションを処理するトランザクション処理ユニット(570)とを備え、
前記データフェッチユニットと前記トランザクション処理ユニットとは非同期に動作するように構成されている、USBホストコントローラ。 - 前記フェッチされたデータエレメントはディスクリプタであり、前記USBホストコントローラは、前記記憶ユニットからディスクリプタを受信し、前記受信したディスクリプタをトランザクション項目に変換する変換ユニット(610)をさらに含み、
前記トランザクション処理ユニットは前記変換ユニットから前記トランザクション項目を受信して、前記受信したトランザクション項目に基づいて前記トランザクションを処理するように構成されている、請求項1記載のUSBホストコントローラ。 - 前記データフェッチユニットはデータエレメントを要求するリクエストを出力し、前記要求されたデータエレメントを受信するように構成されている、請求項1記載のUSBホストコントローラ。
- 前記システムメモリのメモリコントローラ(105)への、またはそれからのデータ転送をハンドリングするインターフェイスユニット(500)をさらに備え、前記データフェッチユニットは前記リクエストを前記インターフェイスユニットに出力するように構成されている、請求項3記載のUSBホストコントローラ。
- 前記データフェッチユニットによる再アクセスのためにフェッチされたデータエレメントを記憶するキャッシュ(545)をさらに含み、前記データフェッチユニットは前記キャッシュに前記リクエストを出力するように構成されている、請求項3記載のUSBホストコントローラ。
- システムメモリ(115)を有し、USBデバイス(330)に接続可能であり、USB(ユニバーサルシリアルバス)ホストコントローラ統合チップを含む、コンピュータシステムであって、
前記システムメモリからデータエレメントをフェッチするデータフェッチ回路(530)と、
前記フェッチされたデータエレメントを記憶する記憶回路(535,605)と、
前記記憶回路に接続され、前記記憶回路に記憶された前記フェッチされたデータエレメントに応じて、前記少なくとも一つのUSBデバイスへ送信され、またはそれから受信されるトランザクションを処理するトランザクション処理回路(570)とを備え、
前記データフェッチ回路と前記トランザクション処理回路とは非同期に動作するように構成されている、コンピュータシステム。 - USBデバイス(330)に接続されたコンピュータシステムにおいて、USB(ユニバーサルシリアルバス)ホストコントローラを動作させる方法であって、
前記コンピュータシステムのシステムメモリからディスクリプタをフェッチするステップ(700−710)と、
前記フェッチされたディスクリプタを記憶するステップ(720)と、
前記記憶されたディスクリプタを使用して生成されたトランザクション項目に基づいて、前記USBデバイスへの、またはそれからのトランザクションを処理するステップ(745)とを含み、
前記フェッチするステップと、前記処理するステップとは非同期に実行される方法。 - 前記ディスクリプタをフェッチするステップは、
ディスクリプタを要求するリクエストを出力するステップ(705)と、
前記要求したディスクリプタを受信するステップ(710)とを含む、
請求項7記載の方法。 - 再アクセスのためにキャッシュ(545)に前記フェッチされたディスクリプタを記憶するステップ(715)をさらに含み、前記リクエストを出力する前記ステップは前記リクエストを前記キャッシュに出力することで実行される、請求項8記載の方法。
- タイミング情報およびレジスタ設定に基づいて、どのディスクリプタをフェッチするかを決定するステップ(700)をさらに含む、請求項7記載の方法。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
DE10211054A DE10211054A1 (de) | 2002-03-13 | 2002-03-13 | USB-Hostcontroller |
US10/283,554 US20030177297A1 (en) | 2002-03-13 | 2002-10-30 | USB host controller |
PCT/US2003/006288 WO2003079200A2 (en) | 2002-03-13 | 2003-02-28 | Usb host controller |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2005520248A true JP2005520248A (ja) | 2005-07-07 |
Family
ID=28042830
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003577132A Pending JP2005520248A (ja) | 2002-03-13 | 2003-02-28 | Usbホストコントローラ |
Country Status (6)
Country | Link |
---|---|
EP (1) | EP1483674B1 (ja) |
JP (1) | JP2005520248A (ja) |
CN (1) | CN1310163C (ja) |
AU (1) | AU2003213650A1 (ja) |
TW (1) | TWI266992B (ja) |
WO (1) | WO2003079200A2 (ja) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009032243A (ja) * | 2007-07-30 | 2009-02-12 | Nvidia Corp | 取り出されたデータをメモリに直接に書き込むストレージコントローラによるバッファスペースの最適な使用 |
JP2010525628A (ja) * | 2007-04-04 | 2010-07-22 | ソニー エリクソン モバイル コミュニケーションズ, エービー | アクセサリデバイスと携帯デバイスとの間の通信方法およびシステム |
JP2011203788A (ja) * | 2010-03-24 | 2011-10-13 | Brother Industries Ltd | Usbホスト装置 |
JP2017516218A (ja) * | 2014-04-30 | 2017-06-15 | 華為技術有限公司Huawei Technologies Co.,Ltd. | 制御方法及び制御デバイス |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7315912B2 (en) * | 2004-04-01 | 2008-01-01 | Nvidia Corporation | Deadlock avoidance in a bus fabric |
GB2423165B (en) * | 2005-02-14 | 2007-01-10 | Elan Digital Systems Ltd | Host controller device and method |
JP2008299747A (ja) | 2007-06-01 | 2008-12-11 | Panasonic Corp | Usbホストシステム及び転送データの転送方法 |
TWI423037B (zh) * | 2009-05-15 | 2014-01-11 | Etron Technology Inc | 一種提升於通用串列匯流排協定中傳輸同時型傳輸類型的封包之效率之方法與裝置 |
WO2012140668A2 (en) * | 2011-04-11 | 2012-10-18 | Ineda Systems Pvt. Ltd | Usb virtualization |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5974486A (en) * | 1997-08-12 | 1999-10-26 | Atmel Corporation | Universal serial bus device controller comprising a FIFO associated with a plurality of endpoints and a memory for storing an identifier of a current endpoint |
EP1102173A3 (en) * | 1999-11-22 | 2005-01-19 | Texas Instruments Incorporated | Universal serial bus architecture |
-
2003
- 2003-02-28 AU AU2003213650A patent/AU2003213650A1/en not_active Abandoned
- 2003-02-28 WO PCT/US2003/006288 patent/WO2003079200A2/en active IP Right Grant
- 2003-02-28 EP EP03711337A patent/EP1483674B1/en not_active Expired - Lifetime
- 2003-02-28 JP JP2003577132A patent/JP2005520248A/ja active Pending
- 2003-02-28 CN CNB038050242A patent/CN1310163C/zh not_active Expired - Fee Related
- 2003-03-06 TW TW092104759A patent/TWI266992B/zh not_active IP Right Cessation
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2010525628A (ja) * | 2007-04-04 | 2010-07-22 | ソニー エリクソン モバイル コミュニケーションズ, エービー | アクセサリデバイスと携帯デバイスとの間の通信方法およびシステム |
JP2009032243A (ja) * | 2007-07-30 | 2009-02-12 | Nvidia Corp | 取り出されたデータをメモリに直接に書き込むストレージコントローラによるバッファスペースの最適な使用 |
JP2011203788A (ja) * | 2010-03-24 | 2011-10-13 | Brother Industries Ltd | Usbホスト装置 |
JP2017516218A (ja) * | 2014-04-30 | 2017-06-15 | 華為技術有限公司Huawei Technologies Co.,Ltd. | 制御方法及び制御デバイス |
US10579394B2 (en) | 2014-04-30 | 2020-03-03 | Huawei Technologies Co., Ltd. | Control method and control device |
Also Published As
Publication number | Publication date |
---|---|
TWI266992B (en) | 2006-11-21 |
AU2003213650A8 (en) | 2003-09-29 |
WO2003079200A3 (en) | 2004-03-25 |
AU2003213650A1 (en) | 2003-09-29 |
WO2003079200A2 (en) | 2003-09-25 |
CN1310163C (zh) | 2007-04-11 |
TW200304071A (en) | 2003-09-16 |
EP1483674B1 (en) | 2006-04-05 |
CN1639701A (zh) | 2005-07-13 |
EP1483674A2 (en) | 2004-12-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7131035B2 (en) | Serial bus host controller diagnosis | |
US11657015B2 (en) | Multiple uplink port devices | |
US20030177297A1 (en) | USB host controller | |
US7506077B2 (en) | Unified controller having host and device functionality | |
US7225288B2 (en) | Extended host controller test mode support for use with full-speed USB devices | |
US7543096B2 (en) | Safe message transfers on PCI-Express link from RAID controller to receiver-programmable window of partner RAID controller CPU memory | |
US5682512A (en) | Use of deferred bus access for address translation in a shared memory clustered computer system | |
US6295571B1 (en) | Shared memory apparatus and method for multiprocessor systems | |
JP5085334B2 (ja) | Usb・otgコントローラ | |
US5919254A (en) | Method and apparatus for switching between source-synchronous and common clock data transfer modes in a multiple processing system | |
US20080005446A1 (en) | Emulating a USB host controller | |
US7194583B2 (en) | Controlling the replacement of prefetched descriptors in a cache | |
US7752376B1 (en) | Flexible configuration space | |
WO2007005553A1 (en) | Serial ata port addressing | |
US6785760B2 (en) | Performance of a PCI-X to infiniband bridge | |
US20040139267A1 (en) | Accessing a primary bus messaging unit from a secondary bus through a pci bridge | |
US7383372B2 (en) | Bus system, station for use in a bus system, and bus interface | |
JP2003296267A (ja) | バスシステム及びバスシステムを含む情報処理システム | |
US6990550B2 (en) | Transaction duration management in a USB host controller | |
EP1483674B1 (en) | Usb host controller | |
US6425071B1 (en) | Subsystem bridge of AMBA's ASB bus to peripheral component interconnect (PCI) bus | |
US6954809B2 (en) | Apparatus and method for accessing computer system resources via serial bus | |
CN112597091A (zh) | 用于处理结构中非投递式存储器写入事务的方法、装置和系统 | |
US7930459B2 (en) | Coherent input output device | |
US7694004B2 (en) | Bit-granular writes of control registers |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20060110 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20081209 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20090714 |