JP2007519998A5 - - Google Patents

Download PDF

Info

Publication number
JP2007519998A5
JP2007519998A5 JP2006547485A JP2006547485A JP2007519998A5 JP 2007519998 A5 JP2007519998 A5 JP 2007519998A5 JP 2006547485 A JP2006547485 A JP 2006547485A JP 2006547485 A JP2006547485 A JP 2006547485A JP 2007519998 A5 JP2007519998 A5 JP 2007519998A5
Authority
JP
Japan
Prior art keywords
message
logic
bus
integrated circuit
hardware function
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.)
Granted
Application number
JP2006547485A
Other languages
English (en)
Other versions
JP4493661B2 (ja
JP2007519998A (ja
Filing date
Publication date
Priority claimed from US10/750,060 external-priority patent/US7363393B2/en
Application filed filed Critical
Publication of JP2007519998A publication Critical patent/JP2007519998A/ja
Publication of JP2007519998A5 publication Critical patent/JP2007519998A5/ja
Application granted granted Critical
Publication of JP4493661B2 publication Critical patent/JP4493661B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Description

I/Oデバイスによるチップセット機能検出および構成設定
さまざまなコンピュータ・システム・アーキテクチャにより、コンピュータ・システム内の装置間の対話、特にプロセッサの基盤となるチップセット内のI/Oデバイスとコア論理との間の対話を構成設定することに対し、いくつものアプローチが用いられてきた。これまでのいくつかのアプローチは、チップセットおよび/またはチップセットとI/Oデバイスとの間のバスの機能を検出および構成設定するためのさまざまな機能を実行するためにプロセッサによって実行されるファームウェア(不揮発性記憶装置に保存されるソフトウェア)の使用を含んでいる。これまでのいくつかのアプローチはまた、やはりチップセットの機能および/またはそれらの機能と所与のI/Oデバイスとの間の対話を検出および/または構成設定するためのオペレーティング・システムを作り上げるコードの実行の一部としてプロセッサによって実行されるべきデバイスドライバの提供を含んでいる。
これらのさまざまなアプローチには、コンピュータ・システムが最初に電源投入またはリセットされるときに実行されるファームウェア内のものだろうとオペレーティング・システムに付随するデバイスドライバ・ソフトウェア内のものだろうと、ソフトウェアに依存することから生じるさまざまな欠点がある。何らかのハードウェアの機能を検出および/または構成設定するためにソフトウェアが使われるときは常に、ソフトウェアの選択はハードウェアの選択と組み合わされ、整合しなければならない。これはデバイスドライバの場合には特にエンドユーザーにとっては面倒で混乱のもととなりうる。コンピュータ・システムの典型的なエンドユーザーは自分が使っているコンピュータ・システムがどんなハードウェアで構成されているかを、ましてやそれらのハードウェアにどんなソフトウェアが付随するべきかをほとんど理解していないからである。この難題は、コンピュータ・システムのファームウェア内のハードウェア機能(hardware feature)を検出(detect)および/または構成設定(configure)するためのソフトウェアの提供によって、エンドユーザーにとっていくぶん緩和される。ファームウェアは典型的にはコンピュータ・システムの製造者によってそのコンピュータ・システムを構成する部品に整合させられているからである。しかし、ハードウェアとソフトウェアとの間でひとたびこの整合が確立され、ソフトウェアがファームウェア内に格納されてしまうと、新しいハードウェアの追加を受け入れるためにそのファームウェアに変更を施すのは面倒なことになりうる(しばしばデバイスドライバの場合よりも面倒である)。しばしば、不揮発性記憶装置にファームウェアの新しい版を「フラッシュする」または「焼き込む」ために特別なユーティリティが必要になるのであるが、ユーティリティの使用をエンドユーザーにとってより簡単にするさまざまな機能を提供してくれるオペレーティング・システムの恩恵なしで使わなければならないというよくある必要性のために、ファームウェアの変更というこの作業はエンドユーザーによって一層難しいものとなりうる。ファームウェアのフラッシュ/焼き込みまたはオペレーティング・システムのデバイスドライバの変更を扱う困難は、ある程度は、コンピュータ・システムに追加される新しいハードウェアに付随して追加的な不揮発性メモリ・デバイスに格納した「オプションROM」ファームウェアを提供することで対処されてきた。しかし、このアプローチは新しいハードウェアに不揮発性メモリデバイスが付随することを必要とし、追加されるハードウェアの性質によってはこれは必ずしも可能ではないこともある。
どのように提供されるかによらずソフトウェアに依存することのさらなる欠点は、ソフトウェアを実行するためには完全に初期化されたプロセッサおよびメモリが必要とされることである。プロセッサおよび/またはメモリが、全くあるいは電源投入またはリセットのあと少なくとも一定期間、利用可能でない電子装置(コンピュータ・システムまたはコンピュータ・システムの部分を含む)の構成もありうるのである。それでも、プロセッサまたはメモリが利用可能でないにもかかわらずハードウェア機能の検出および/または構成設定を進めることができることが望まれることがある。
本発明の目的、特徴および効果は以下の詳細な記述に照らして当業者には明らかとなるであろう。
以下の記述では、説明のため、本発明の完全な理解を与えるために数多くの詳細が述べられる。しかし、特許請求される本発明を実施するためにこれらの個別的な詳細が必要とされないことは当業者には明らかであろう。
特許請求される本発明は、機能性向上のために提供される一つまたは複数のハードウェア機能の利用可能性に関わる問い合わせの作成および回答をするための電子システムのコンポーネントのサポートと、もし存在すればそのようなハードウェア機能のある程度の調停および/または構成設定のサポートとを組み込むことに関わる。以下の議論はハードウェア機能としてたびたびDMAコントローラに言及するが、このハードウェア機能の選択は問い合わせ、調停および/または構成設定が行われる一つの可能なハードウェア機能の例として意図されているのみであり、DMAコントローラへの追加またはその代替として他のハードウェア機能も可能である。さらに、以下の議論はコンピュータ・システムを中心としているが、特許請求される本発明は他の形の電子システムの基盤においても実施されうることが当業者には理解されるであろう。
図1は、あるコンピュータ・システムを用いる実施形態のブロック図である。コンピュータ・システム100は少なくとも部分的には、プロセッサ110、バス119、論理120、バス149およびシステム・メモリ140からなる。プロセッサ110、バス119、論理120、バス149およびシステム・メモリ140は、システム・メモリ140内および/またはコンピュータ・システム100の他のデバイス内などに保存されている機械可読命令を実行することができる、コンピュータ・システム100のコアの形をなす。しかし、当業者はすぐ認識するであろうように、これはコンピュータ・システム100の多くの可能なコアの形のほんの一例でしかなく、図示されていない他のバスおよびデバイスをさらに含んでいることもありうる。
さまざまな実施形態において、プロセッサ110は多様なタイプのプロセッサのうちのいかなるものでもよく、そのうちには、米国カリフォルニア州サンタクララの会社であるインテル・コーポレーションによって創生された、広く知られ、使用されている「x86」命令セットの少なくとも一部分を実行することのできるプロセッサも含まれる。また、さまざまな可能な実施形態においては、二つ以上のプロセッサが、二つ以上のプロセッサのサポートを提供するための追加的なバスおよび/またはデバイス(図示せず)とともに存在していてもよい。
論理120はバス119を介してプロセッサ110に結合されており、プロセッサ110による命令の実行をサポートするさまざまな機能を実行する。それには、プロセッサ110を制御すること、該プロセッサ110に、バス149を介してやはり論理120に結合されているシステム・メモリ140へのアクセスを提供することが含まれる。論理120はまた、該論理120がバス169を介して結合されている、コンピュータ・システム100を構成するその他のデバイスへのアクセスをも提供する。バス119、149および169に結合され、プロセッサ110にシステム・メモリ140およびバス169を介したその他のデバイスへのアクセスを提供することで、論理120はこれらのバスの間で一般に「ブリッジ」と称されるものとしてはたらく。ブリッジとしてはたらくことで論理120はコンピュータ・システム100に、バス149上でのトランザクション実行における支援のためのメモリ・コントローラ122、ならびに、バス119および/またはバス169を介したトランザクション実行において支援することを含む、論理120内のさまざまなハードウェア機能をコンピュータ・システム100の通常の動作中の使用のために構成設定することにおいて支援するための構成設定論理127をも提供する。データのブロックの一部の転送を実行する負担の一部からプロセッサ110を解放するため、論理120の例示的なハードウェア機能はいくつかの実施例ではDMAコントローラ130でありうる。
さまざまな実施形態において、システム・メモリ140は多様なタイプのランダムアクセスメモリ(RAM: random access memory)のうちのいかなるものであってもよく、それにはファースト・ページ・モード(FPM: fast page mode)、拡張データ出力(EDO: extended data out)、シングル・データ・レート(SDR: single data rate)またはダブル・データ・レート(DDR: double data rate)の形の同期ダイナミックRAM(SDRAM: synchronous dynamic RAM)またはRAMBUS(商標)インターフェースもしくはその他のインターフェースを用いるRAMが含まれる。メモリ・コントローラ122およびバス149は、一つまたは複数の種類のメモリおよび/またはメモリ・インターフェースのタイミングおよび/またはプロトコル要件をサポートするよう構成される。
図1にも描かれているように、バス169は論理120をデバイス170および180に結合する。デバイス170および180は、多様なタイプのデバイスのうちのいかなるものであってもよく、それにはディスク・コントローラ、コンピュータ・システム100の外部のデバイスと通信するためのいくつかあるプロトコルのいずれかを使うパラレルまたはシリアルのインターフェース・ポート、グラフィック・コントローラ、リムーバブル固体メディアの接続のためのインターフェース、ブリッジ・デバイス、試験デバイスなどが含まれる。論理120と似ていなくもないが、デバイス170および180は、該デバイス170および180内のさまざまなハードウェア機能を構成設定することにおいて支援するための構成設定論理177および187をそれぞれ有する。
可能性としてはコンピュータ・システム100が電源投入された結果として、あるいは可能性としてはコンピュータ・システムのユーザーがリセットボタンを押すか可能なさまざまな形のソフトウェアを通じてコンピュータ・システム100の再起動を起こさせることによってコンピュータ・システム100が「リセット」された結果としてコンピュータ・システム100が初期化される時点において、プロセッサ110は、システム・メモリ140(または他のどこか)内に保存されている一連の命令(ソフトウェア)を実行して、プロセッサ110をして、構成設定論理127、177および/または187のうちの一つまたは複数にアクセスして論理120、デバイス170および/またはデバイス180を使用のために構成設定するようにさせることができる。構成設定論理127、177および/または187のうちの一つまたは複数へのそのようなアクセスの間、さまざまな構成設定レジスタは、さまざまなハードウェア機能を有効にし、ポートおよびバッファにアドレス範囲を割り当て、バスIDおよびデバイスID番号を割り当てるなどする値をプログラムされうる。いくつかの実施形態では、こうしたレジスタへのアドレス範囲などのプログラミングは、論理120、デバイス170およびデバイス180のそれぞれについて一意的なID値を形成するために必要とされる情報を、構成設定論理127、177および187のそれぞれに提供しうる。他の実施形態では、このレジスタのプログラミングは、論理デバイス120、デバイス170およびデバイス180のそれぞれが、プロセッサ110による構成設定論理127、177および/または187へのアクセスを許容するための対話を超えてバス169および/またはその他のバスと対話することを許可されるための必須条件であってもよい。
プロセッサ110による構成設定論理127、177および187へのアクセスに続いて、デバイス170の構成設定論理177は、論理120のハードウェア機能、可能性としてはDMAコントローラ130をデバイス170との使用のために検出および構成設定するために構成設定論理127にアクセスすることを試みる。そのような試行アクセスをすることにおいて、構成設定論理177は、デバイス170が実際に論理120に接続されていることを確認すべくテストしている。これは可能性としては、論理120とデバイス170はコンピュータ・システム100の構築のために同じベンダーから提供されており、したがってデバイス170が論理120へのこのアクセスを試みるのは、論理120に特有でありうる特定のハードウェア機能がデバイス170とともに使用するために利用可能かどうかを決定することの一部として、論理120が存在していてデバイス170に取り付けられているかどうかを判別するために行われる。そのような実施形態では、デバイス170がバス169を介して論理120に結合されていないと判定された場合には(すなわち、図1のデバイス120が他の何らかのデバイスでおきかわっていた場合)、いくつかの変形では、構成設定論理177は、デバイス170の少なくとも一部分を、論理120の所望のハードウェア機能の恩恵なしで機能するよう構成設定しうる。あるいは、論理120の所望のハードウェア機能なしにデバイス170の何らかの部分を動作させるのが不可能であるような他の変形では、構成設定論理177はデバイス170の少なくとも一部分を無効にしうる。たとえば、デバイス170の機能性がデバイス170と論理120内にあってデータのブロックの転送を支援するDMAコントローラ130との間の対話によって向上されるならば、構成設定論理177は構成設定論理127へのアクセスを試みて、論理120がデバイス170に結合されていることおよび/またはDMAコントローラ130が存在してデバイス170との使用のために利用可能であることを判別しようとする。
構成設定論理127へのアクセスを試みることにおいて、構成設定論理177は、デバイス170のベンダーを同定する値および/またはデバイス170そのものの識別情報を送信しうる。構成設定論理177はまた、該構成設定論理177内の一つまたは複数の構成設定レジスタにプログラムされた一つまたは複数のデータを送信することもできる。そのデータは可能性としてはデバイス170に、および/またはデバイス170にアクセスするためのバス169に与えられた識別番号である。構成設定論理127は、構成設定論理177によって試行アクセスにおいて送られた一つまたは複数の値を調べることで、該試行アクセスをしているデバイスおよび/または該試行アクセスをしているデバイスのベンダーのIDを同定し、それにより構成設定論理177による試行アクセスが構成設定論理127が応答すべきトランザクションであるかどうかを判定し、および/または構成設定論理127がどのように応答すべきかを判定しようとすることができる。たとえば、構成設定論理177によって送られた、たとえばデバイス170のベンダーを同定する値が構成設定論理127が応答すべきベンダーを同定していない場合には、構成設定論理177は単に構成設定論理177が存在しないかのように試行アクセスを無視してもよい。あるいはまた、構成設定論理127は、値の同定におけるそのような不一致に対して可能性としては、バス169によって提供される、エラーが起こったことを示すためのプロトコルを使ってエラー信号を出すことによって応答してもよい。しかし、構成設定論理177が、構成設定論理127によって受容されるべきと判定される何らかの形の同定情報を与える値を伝えてきた場合には、構成設定論理127は、求められているハードウェア機能に関して論理177にさらなる情報が提供されうる場所へのポインタを提供するアドレスをもって、ならびに/またはデバイス170が論理120内の求められているハードウェア機能との対話を開始するのに使いうるレジスタおよび/もしくはバッファが見出されうる場所を提供するアドレスをもって応答しうる。二つ以上のデバイス(たとえばデバイス170および180)が論理120内の同じハードウェア機能を利用しようとしうる実施形態においては、複数のデバイスのうちのどれが求められているハードウェア機能の使用を認められるかのある形の調停が、それらの複数のデバイスのうちのどれが最初に構成設定論理127にアクセスする試みをしたかに基づいてされうる。そのような実施形態では、たとえば、そのような試行アクセスを行った最初のデバイスのみが構成設定論理127によって求められているハードウェア機能の使用を得ることに成功したことを示す仕方で応答され、他のすべてのデバイスは全く応答されない。あるいはまた、そのような実施形態において、求められているハードウェア機能を使用しようとするすべてのデバイスによるそのような試行アクセスのすべてが応答されるが、そうした応答の一つだけがハードウェア機能の使用が成功裏に認可された指標を含んでいるというのでもよい。いずれにせよ、構成設定論理127内のレジスタおよび/またはバス169に結合されたデバイスによって可読なシステム・メモリ140内のメモリ位置が与えるビットは、初期にはそのレジスタまたはメモリ位置を最初に読むいかなるデバイスにもそのハードウェア機能が利用可能であることを示すが、その後そのビットは異なる値にセットされ、そのレジスタまたはメモリ位置のその後のすべての読み取り(そのハードウェア機能が利用可能とされたもの以外のデバイスによるものと想定される)は、そのハードウェア機能が利用可能でないことを示すようにできる。すなわち、調停の単純な形として、レジスタまたはメモリ位置において「読まれたらセット」ビットと呼ばれたことのあるものである。
別のデバイスの所与のハードウェア機能を求めるデバイスに与えられうる可能な応答の形のさらなる詳細については、のちに所与のハードウェア機能へのアクセスのためのデバイスどうしの間の可能な調停の形のさらなる詳細とともに議論する。構成設定論理127に対してなされる試行アクセスに関しては、さまざまなタイプの試行アクセスが可能である。試行読み取りもしくは書き込みトランザクション、または試行メッセージ送信などである。
いくつかの実施形態では、構成設定論理177は、バス169を介して可能性としては構成設定論理127内の所定のアドレス位置への読み取りトランザクションを試みることによって、構成設定論理127へのアクセスを試みる。構成設定論理177は、読み取りトランザクションが成功した、すなわち構成設定論理127が成功裏にアクセスされた、および/または試行読み取りトランザクションが受け入れられた(あるいは少なくとも拒否されなかった)という指標があるかどうか調べうる(バス169が試行トランザクションの成功または失敗を示すフィードバックの提供をサポートしていれば)。構成設定論理127へのアクセスの成功がないことは、論理120はデバイス170がみつけようと試みていたデバイスではない(すなわち、構成設定論理127がそもそも存在していないかもしれない)こと、あるいは論理120がデバイス170がみつけようと試みていたハードウェア機能を有していないこと、あるいは可能性としてはデバイス170が論理120内にみつけようと試みていたハードウェア機能が論理120内に存在してはいるが、デバイス170による使用のために利用可能ではない(可能性としては、ハードウェア機能がデバイス180のような別のデバイスによる使用のためにすでに予約されていた)ということを示しうる。構成設定論理127が試行読み取りトランザクションに対してデータを提供することによって応答するといった構成設定論理127へのアクセスの成功は、それ自体が、いくつかの実施形態では、デバイス170が実際に論理120に接続されていて構成設定論理17によって求められているハードウェア機能が論理120内に存在していてデバイス170による使用のために利用可能であるということの構成設定論理177への指標として受け止められうる。あるいはまた、構成設定論理127によるデータの提供の成功は、構成設定論理127が存在しており、構成設定論理177が返されたデータを解析して論理120についての特性を決定しうるということ以外のほとんど何ももたらさないのでもよい。該特性には、可能性としては論理120のベンダー、論理120が構成設定論理177によって求められているハードウェア機能、および/または求められているハードウェア機能に関してデバイス170がそのハードウェア機能と対話できるようにするために必要とされる諸側面を提供するかどうかが含まれる。
他の実施形態では、構成設定論理177は、バス169を介してやはり可能性としては構成設定論理127内の所定のアドレス位置への書き込みトランザクションを試みることによって、構成設定論理127へのアクセスを試みる。ここでもまた、構成設定論理177は、書き込みトランザクションが成功した、すなわち構成設定論理127が成功裏にアクセスされた、および/または試行書き込みトランザクションが受け入れられた(あるいは少なくとも拒否されなかった)という指標があるかどうか調べうる。構成設定論理127へのアクセスの成功がないことは、論理120はデバイス170がみつけようと試みていたデバイスではない(すなわち、構成設定論理127がそもそも存在していないかもしれない)こと、あるいは論理120がデバイス170がみつけようと試みていたハードウェア機能を有していないこと、あるいは可能性としてはデバイス170が論理120内にみつけようと試みていたハードウェア機能が論理120内に存在してはいるが、デバイス170による使用のために利用可能ではない(可能性としては、ハードウェア機能がデバイス180のような別のデバイスによる使用のためにすでに予約されていた)ということを示しうる。構成設定論理127が試行書き込みトランザクションを受け入れるといった構成設定論理127へのアクセスの成功は、それ自体が、いくつかの実施形態では、デバイス170が実際に論理120に接続されていて構成設定論理17によって求められているハードウェア機能が論理120内に存在していてデバイス170による使用のために利用可能であるということの構成設定論理177への指標として受け止められうる。試行書き込み動作は、(いくぶん鍵またはシグネチャ値のように)論理120内のハードウェア機能の使用を調整しようと試みている論理120に結合されたデバイス(すなわちデバイス170)があるということを構成設定論理127に示すデータ値を構成設定論理127に通信したのでもよい。試行書き込み動作の成功裏の受け入れだけでは、所望のハードウェア機能がみつかり、および/またはデバイス170との使用のために利用可能であるということを構成設定論理177に示すには十分でないとしてもよく、そのような実施形態では論理177は、これらのことの確証を与えるデータが構成設定論理127によって提供されるのを待ちうる。その提供は、構成設定論理127が逆に構成設定論理177に応答として行う書き込み動作を通じてでもよいし、あるいは試行書き込みトランザクションに続いて構成設定論理177が実行する読み取りトランザクションにおいて構成設定論理127によって返されるデータ値を通じてでもよい。
さらに別の実施形態では、構成設定論理177は、バス169を通じてメッセージを送信しようと試みることによって構成設定論理127にアクセスしようと試みる。ここで、バス169はデバイス間のメッセージの送信をサポートしている。構成設定論理177は、メッセージ送信が成功した、すなわち構成設定論理127が少なくともメッセージを拒否しなかったという指標があるかどうか調べうる(バス169がメッセージの試行送信が成功したことを示す指標の提供をサポートしていれば)。構成設定論理127へのメッセージ送信の成功がないことは、論理120はデバイス170がみつけようと試みていたデバイスではない(すなわち、構成設定論理127がそもそも存在していないかもしれない)こと、あるいは論理120がデバイス170がみつけようと試みていたハードウェア機能を有していないこと、あるいは可能性としてはデバイス170が論理120内にみつけようと試みていたハードウェア機能が論理120内に存在してはいるが、デバイス170による使用のために利用可能ではない(可能性としては、ハードウェア機能がデバイス180のような別のデバイスによる使用のためにすでに予約されていた)ということを示しうる。メッセージ送信の成功を判定することが可能な実施形態では、メッセージ送信の成功は、それ自体が、いくつかの実施形態では、デバイス170が実際に論理120に接続されていて構成設定論理127によって求められているハードウェア機能が論理120内に存在していてデバイス170による使用のために利用可能であるということの構成設定論理177への指標として受け止められうる。あるいはまた、構成設定論理127へのメッセージの試行送信は、論理120内のハードウェア機能の使用を調整しようと試みている論理120に結合されたデバイス(すなわちデバイス170)があるということを構成設定論理127に示す指標であるか、あるいは指標を伝達した。送信されたメッセージの成功裏の受け入れだけでは、所望のハードウェア機能がみつかり、および/またはデバイス170との使用のために利用可能であるということを構成設定論理177に示すには十分でないとしてもよく、そのような実施形態では論理177は、これらのことの確証を与えるデータが構成設定論理127によって提供されるのを待ちうる。その提供は、構成設定論理127による構成設定論理177への逆のメッセージの送信を通じてでもよい。
図2は、コンピュータ・システムを用いる実施形態のもう一つのブロック図である。図2の番号を振った項目は概して図1の番号項目に対応することが意図されており、図1のコンピュータ・システム100に似ていなくもない仕方で、コンピュータ・システム200は少なくとも部分的には、プロセッサ210、バス219、論理220、バス249およびシステム・メモリ240からなる。コンピュータ・システム100の場合と同様、当業者は、これがコンピュータ・システム200の多くの可能なコアの形のほんの一例でしかなく、コンピュータ・システム200は図示されていない他のバスおよびデバイスをさらに含んでいることもありうることを容易に認識するであろう。
図1の論理120と同様に、論理220はバス219、249および269を介してそれぞれプロセッサ210、システム・メモリ240および可能性のある他の諸デバイスに結合されており、プロセッサ210による命令の実行をサポートするさまざまな機能を実行する。それには、プロセッサ210を制御し、該プロセッサ210にシステム・メモリ240へのアクセスを提供すること、ブリッジとしてはたらくことが含まれる。さらに、データのブロックの一部の転送を実行する負担の一部からプロセッサ210を解放するため、論理220の例示的なハードウェア機能はいくつかの実施例ではDMAコントローラ230でありうる。
図1のコンピュータ・システム100を参照して議論した実施形態といくぶん似ているが、コンピュータ・システム200において、バス269は論理220をデバイス270および280に結合している。しかし、コンピュータ・システム100とは異なり、デバイス270および280が論理220に結合されるのは、バス269を通じて直接にではなく、それぞれバス279および289を通じて、次いで介在デバイス260およびバス269を通じてである。コンピュータ・システム100で論理120、デバイス170およびデバイス180の3つすべてを結合するためにバス169を使ったのは、「マルチドロップ(multi-drop)」バス構成の例を示していた。そこでは、バス169の信号は、多くの広く使われているバス形態の場合に一般的な慣行であるように、3つ以上のデバイスに結合されていた。介在デバイス260を使用して3つの異なるバスが実効的に単一のバスの代わりとなるようにすることは、バス269、279および289がポイントツーポイント・バスとされている場合に実施されうる。ただし、そのような変更に対するその他の動機もありえ、それには2つ以上のバス269、279および289の間でのバスおよび/またはバス・プロトコルのタイプの間の変換をする必要性が含まれる。バス269、279および289のうちの一つまたは複数が実際にポイントツーポイント・バスであるような実施形態では、それらの特定のバスのそれぞれの特性に依存して、アドレスおよび/またはデータのさまざまな形の差動信号および/またはシリアル伝送が起こりうる。また、バス269、279および289のうちの一つまたは複数がポイントツーポイント・バスであるような実施形態では、介在デバイス260を設けることが、複数のポイントツーポイント・バスを論理220とのインターフェースをもつ単一のポイントツーポイント・バスに集線するための「スイッチ」としての機能を果たすことが要求されうる。なお、デバイス26、27および28は多様なタイプのデバイスのうちのいかなるものであってもよい。
また、コンピュータ・システム100の論理120、デバイス170およびデバイス180にいくぶん似て、コンピュータ・システム200の論理220、介在デバイス260、デバイス270およびデバイス280はそれぞれ構成設定論理227、267、277および287を具備している。コンピュータ・システム200が電源投入および/またはリセットされる時点で、ソフトウェアを実行するプロセッサ210を通じて機能性および/または構成設定の有効化を許容するためである。ここでもまた、さまざまな実施形態において、構成設定論理227、267、277および/または287へのアクセスは、論理220、介在デバイス260、デバイス270およびデバイス280の一つまたは複数が、構成設定を実行するために必要とされうるよりも完全にバス269、279および/または289と対話することを許容することへの必須条件であってもよい。
ここでもまた、コンピュータ・システム100といくぶん似て、コンピュータ・システム200において、構成設定機能を実行するために構成設定論理227、267、277および/または287のそれぞれに対してプロセッサ210によるアクセスがなされたのち、デバイス270の構成設定論理277は、論理220のハードウェア機能、可能性としてはDMAコントローラ230を検出し、デバイス270との使用のために構成設定するために構成設定論理227にアクセスしようと試みる。ところが、デバイス270とバス269および論理220の両者との間の介在デバイス260およびバス279の存在のため、デバイス270内の構成設定論理277が論理220内の構成設定論理227にどのようにしてアクセスを試みるかにおいてさまざまな可能な実施形態で若干の相違が生じうる。構成設定論理277が構成設定論理227へのアクセスを試みるためには、試行アクセスは、構成設定論理267または介在デバイス260の他の何らかの部分に対して、その試行アクセスが構成設定論理267によって返答または応答されることを意図したものではなく、その試行アクセスは何らかの方法で論理220内の構成設定論理227に渡されるべきであるという何らかの形の指標を組み込んでいる必要がある。図1は、そのような指標が必要でなくてもよい状況を描いていた。いくつかの実施形態では、そのような指標は、そのアクセスのプロトコル内に埋め込まれるアドレスであることができ、そのアドレスが介在デバイス260内に存在するものでないと判別されることによってその試行アクセスをさらに論理220に中継されるようにすることができる。他の実施形態では、そのような指標は、そのアクセスが特定のデバイス、つまり論理220による受信のために意図されていることを同定する値の形であってもよい。試行アクセスをあるデバイスに別のデバイスを通して向かわせるためのさらに別の機構を用いることも、特許請求される本発明の精神および範囲から外れることなく可能である。そのことは当業者は容易に認識するであろう。
図3a、3b、3c、3d、3eは、試行メッセージトランザクションおよび可能な応答を用いる実施形態を描いている。先に議論したように、いくつかの実施形態では、別のデバイスにある所与のハードウェア機能を検出および/または構成設定しようとするデバイスは、該所与のハードウェア機能を求めることを、前記別のデバイスの論理の一部分にメッセージ送信をサポートするバスを介して前記別のデバイスへのメッセージの試行送信を通じてアクセスしようと試みることによって行う。図3a〜dを合わせたものは、所与のハードウェア機能を検出および/または構成設定しようとするデバイスが送ろうと試みるパケット化メッセージの少なくともヘッダ部分において伝達される情報の可能なビット編成の特徴を描いている。図3a〜cおよびeを合わせたものは、前記試行メッセージへの応答において前記別のデバイスによって送られうるパケット化メッセージの同様な特徴を描いている。いずれの場合にも、描かれたビット編成は、分岐樹状構成に編成された複数のポイントツーポイント・バスを用いるバス・アーキテクチャとともに動作できるよう意図されている。そこを介してアドレス、コマンド、データおよびその他の情報がデジタル・シリアル接続を通じてパケット化された形で転送される。情報のビットの個別の割り当ては特許請求される本発明の精神および範囲内であるためにいかなる一つの標準または慣用に準拠することも必要ではないが、描かれている情報のビットの配列は現在登場してきているPCIエクスプレス・バス規格(この仕様書は現在、米国オレゴン州ポートランドの周辺コンポーネント相互接続特別利益団体(Peripheral Component Interconnect Special Interest Group)に注文できる)の要件に準拠することを意図したものである。
倍長語310、320、330および340aは、所与のハードウェア機能を求めているデバイス(すなわち「要求側デバイス」)が前記所与のハードウェア機能が存在しうる別のデバイス(すなわち「目的デバイス」)を試験しようとして送信を試みうるパケット化メッセージの少なくとも最初の4つの倍長語(4バイトのブロック)を構成する。同様に、倍長語310、320、330および340bは、前記別のデバイスが応答において送信しうるパケット化されたメッセージの少なくとも最初の4つの倍長語を構成する。以下の議論の明確のため、「要求側デバイス」の用語はメッセージを送信するデバイスを表すことを意図されており、「目的デバイス」はそのメッセージが向けられているデバイスを表すことを意図されることに注意しておくべきである。したがって、一方のデバイスによる試行メッセージが他方のデバイスから応答として別のメッセージを引き出すことに成功する場合、「要求側デバイス」および「目的デバイス」の呼称は実際には試行送信および可能な応答送信との間で変わる。
倍長語310が送信されるべき4つの倍長語の最初のもので、そのあとに順に倍長語320、330、そして340aもしくは340bのどちらかが続く。バイト0内では、そのメッセージのフォーマットが、より多くのデータを伝達するスペースを作るために4つの倍長語からなるヘッダのあとにさらなる倍長語が付加されているものかどうかを示す指標がある(付加されていなければ、4つの倍長語のヘッダがメッセージ全体になりうる)。しかし、やがて見るように、何ら追加的な倍長語を付加することなく、倍長語340aまたは340bがそのような情報を伝達するために必要とされる全スペースを提供できるかもしれない。また、バイト0内には、そのメッセージが目的デバイスにルーティングされるべき機構の指標もある。一つの選択肢は、コンピュータ・システム内のこれらのバスの分岐樹状構成の基底にあるデバイス(すなわち、「ルート複合体(root complex)」にあるデバイス)を目的デバイスとして指定することである。もう一つの選択肢は、目的デバイスを、倍長語330内に与えられる16ビットの識別値を用いて指定することである。さらにもう一つの選択肢は、要求側デバイスよりもバスの樹状構成の基底に近い、要求側デバイスに直接接続されたデバイスを目的デバイス(すなわち、ルート複合体のほうの「ローカル受信者(local receiver)」)として指定することである。別のデバイスにある所与のハードウェア機能を求めるI/Oデバイスが、そのハードウェア機能を求める試行メッセージ中で、ルート複合体を目的デバイスとして指定しうる(求められているハードウェア機能がルート複合体のデバイスの中にありそうだという想定に基づいている)一方、ルート複合体内のデバイスは前記I/Oデバイスの16ビットの識別値(これはI/Oデバイスからの当初の試行メッセージとともに受信されなければならないはずである)を前記I/Oデバイスを目的デバイスとして指定するために使ったメッセージを用いて応答しうるのでもよい。バイト1内には、このメッセージの他のメッセージに対しての優先度レベル(「トラフィック・クラス」)の指標がある。バイト2内のビットでは、誤り検出および訂正を含む種々のオプションが選択されうる。バイト3全体およびバイト2の一部を埋めるのが、バイト0でこのメッセージのフォーマットがこのヘッダに付加された倍長語を有すると示されている場合に、このヘッダに付加されているデータの倍長語数を示すバイナリー値である。付加される倍長語がなければ、4倍長語のヘッダがメッセージ全体をなす。
倍長語320は、倍長語310に続いて送信されるべき第二の倍長語である。バイト4内にあるのは、要求側デバイスが結合されているルート複合体のほうに導くバスを同定する値である(バスの分岐樹状構成における各バスは一意的な番号で識別される)。バイト5内にあるのは、要求側デバイスの同定を示す値と、要求側デバイスの当該メッセージを送信している部分(すなわち、要求側デバイス内の「関数(function)」)を示す値である。バイト4および5は合わせて、要求側デバイス(すなわち、当該メッセージを送信するデバイス)を一意的に同定するための要求者IDをなす。バイト6内にあるのは、このメッセージを要求側デバイスによって開始された他のトランザクションから区別するために要求側デバイスによって生成される値である。バイト4、5、6が一緒になって、要求側デバイスと目的デバイスとが一部をなしているコンピュータ・システム内で起こっている他のすべてのトランザクションからこのメッセージを区別するための、このメッセージを一意的に同定するトランザクションIDをなす。バイト7内には、メッセージをベンダーが定義したメッセージ(すなわち、要求側デバイスのベンダーが選んだ目的を果たすメッセージ)として同定する2つの可能な値のうちの一つがある。その2つの値は、このメッセージが目的デバイスによってサポートされていない場合に、目的デバイスがエラーを報告すべきかどうかの選択を提供するものである。いくつかの実施形態では、所与のハードウェア機能を求める要求側デバイスは、目的デバイスがI/Oデバイスによって送信されるベンダー固有メッセージをサポートしていない場合に該目的デバイスがエラーを報告すべきということを指定するこの機構を、所与のハードウェア機能を検出する試みが成功であったかどうかを判定する方法として使用してもよい。あるいはまた、他の実施形態では、目的デバイスがこのベンダー固有メッセージをサポートしていない場合に該目的デバイスがエラーを報告すべきでないということを指定することが望ましいと見なされることもあり、所与のハードウェア機能を求める要求側デバイスは、この販売元固有メッセージに何の応答もないことを、目的デバイス内に所与のハードウェア機能をみつけようとした試みが不成功であったという指標として解釈してもよい。
倍長語330は、倍長語320に続く、送信されるべき第三の倍長語である。バイト8および9は一緒になって、目的デバイスを一意的に同定するために使用できる目的IDを構成する。これは、要求側デバイスを同定するための倍長語320のバイト4および5において使われていたものと同様の編成および解釈をもつビット値を使っている。バイト8および9は、倍長語310のバイト0において先に議論されたビットが目的デバイスをバスの分岐樹状集合における「ルート複合体」またはルート複合体に向かうバスの反対側にある「ローカル受信者」を指定するために使われていれば、すべて0で埋めることができる。別のデバイスにある所与のハードウェア機能を検出しようと試みるデバイスが自らの同定を倍長語320のバイト4および5で与えなければならないことから、問い合わせをするために送信されたそのメッセージを受信する相手のデバイスは、その同定情報を、応答として返送するメッセージ中において、問い合わせをしているそのデバイスを目的デバイスとして同定するのに使用しうる。バイト10および11の両バイトのすべてを占めているのがPCI-SIGによってデバイスのベンダーに割り当てられており、要求側デバイスのベンダーを同定するのに使用できる単一の16ビット値である。
倍長語340aは、別のデバイス中の所与のハードウェア機能を検出しようとしているデバイスによって送信されるメッセージのヘッダを構成する4つの倍長語の最後のものであり、このメッセージの部分としてこれら4つの倍長語のうち最後に送信されるべきのものである。同様に、倍長語340bは、所与のハードウェア機能を検出しようとするメッセージの受信への応答としてもう一方のデバイスによって送信されうるメッセージのヘッダを構成する4つの倍長語の最後のものである。所与のハードウェア機能を求めるもとのメッセージと応答として送られうるメッセージは両方ともベンダー固有メッセージであるので、4番目の倍長語(すなわち倍長語340aおよび340b)内に置かれるいかなる内容の使用、特性および編成も指定されておらず、ベンダーがこの4番目の倍長語を、該ベンダーに望ましいと見なされるいかなる使用にも供することを許容するようになっている。このベンダー固有型メッセージの非常に非体系的な性質のため、要求側デバイスと目的デバイスの両者とも、送信されるあらゆるベンダー固有メッセージの生成およびその意味の正しい解釈の両方をサポートするよう設計され(あるいは別の何らかの形でとにかく構成され)なければならない。要するに、要求側デバイスと目的デバイスの両方が何らかの形で全く同じ形のベンダー固有メッセージを扱うよう構成または準備されていなければ、目的デバイスが要求側デバイスによって送信されたメッセージを誤って解釈したり、あるいは目的デバイスがメッセージを該目的デバイスによってサポートされていないメッセージとして完全に無視および/または拒否したりすることが起こりうる。したがって、要求側デバイスがこのベンダー固有メッセージを目的デバイス内で所与のハードウェア機能を求めるために使うようにする目的のためには、要求側デバイスは、目的デバイスが受信し、該目的デバイス内で所与のハードウェア機能を特定しようとする試みであると解釈する用意がなければならないようなメッセージを生成し、送信する用意がなければならず、目的デバイスは、要求側デバイスが、前記所与のハードウェア機能が目的デバイス内に成功裏に特定されたという指標として、および可能性としては前記所与のハードウェア機能が要求側デバイスとの使用のために利用可能であるかどうかの指標として解釈する用意のある応答を要求側デバイスに与える用意がなければならない。
あるデバイスが別のデバイス内の所与のハードウェア機能を求める努力を伝えるための値の配列のある可能な実施例が図3dに、倍長語340a内で伝達されるものとして描かれている。ただし、代替的な諸実施例では、そのような値の一部または全部をもう一方のデバイスに伝達するために、倍長語310、320、330および340aから構成されるヘッダに付加される一つまたは複数の倍長語を用いてもよい。図3dに描かれるように、バイト12内には、要求側デバイスから目的デバイスにこのメッセージが要求側デバイスが目的デバイス内に所与のハードウェア機能を求める試みの一部であることを伝えるための、ベンダーによって策定されたコードのための位置が割り当てられる。バイト13内には、どのハードウェア機能が求められている所与のハードウェア機能であるかを示すための、ベンダーによって策定されたコードのための位置が割り当てられる。
前記あるデバイスが相手デバイス内に所与のハードウェア機能を求める努力に対する相手デバイスによる応答を伝えるための値の配列のある可能な実施例が図3eに、倍長語340b内で伝達されるものとして描かれている。ただし、代替的な諸実施例では、そのような値の一部または全部を相手デバイスに伝達するために、倍長語310、320、330および340bから構成されるヘッダに付加される一つまたは複数の倍長語を用いてもよい。図3eに描かれるように、バイト12、13、14、15のすべてを占めているのは、前記あるデバイスによって該あるデバイスによって相手デバイス内に求められている前記所与のハードウェア機能を制御するためにアクセスされうる一つまたは複数のレジスタ(あるいは可能性としては、メモリ・デバイス内で予約されている、可能性としては「仮想」レジスタとしてはたらく一つまたは複数のメモリ位置)の開始アドレスをポイントするアドレスの少なくとも一部分である。そのような実施例において、このアドレスの受信は、前記あるデバイスによって、相手デバイス内の前記所与のハードウェア機能の検出の成功の指標として解釈されうる。
図4は、コンピュータ・システムを用いる実施形態のさらにもう一つのブロック図である。図4の番号を振った項目は概して図1および図2の番号項目に対応することが意図されており、コンピュータ・システム100および200に似ていなくもない仕方で、コンピュータ・システム400は少なくとも部分的には、プロセッサ410、バス419、論理420、バス449およびシステム・メモリ440からなる。コンピュータ・システム100および200の場合と同様、当業者は、これがコンピュータ・システム400の多くの可能なコアの形のほんの一例でしかなく、コンピュータ・システム400は図示されていない他のバスおよびデバイスをさらに含んでいることもありうることを容易に認識するであろう。
論理120および220と同様に、論理420はバス419、449および469ならびにバス489を介してそれぞれプロセッサ410、システム・メモリ440および可能性のある他の諸デバイスに結合されており、プロセッサ410による命令の実行をサポートするさまざまな機能を実行する。それには、プロセッサ410を制御すること、該プロセッサ410に、システム・メモリ440へのアクセスを提供すること、ブリッジとしてはたらくことが含まれる。さらに、データのブロックの一部の転送を実行する負担の一部からプロセッサ410を解放するため、論理420の例示的なハードウェア機能はいくつかの実施例ではDMAコントローラ430でありうる。
コンピュータ・システム100および200を参照して議論した実施形態といくぶん似ているが、コンピュータ・システム400において、バス469および489は論理420をデバイス470および480に結合している。しかし、デバイス480と論理420との結合はバス489を通じて直接であり、デバイス470との結合はバス469のほかに介在論理460およびバス479を通じた間接的なものである。なお、デバイス460470および480は多様なタイプのデバイスのうちのいかなるものであってもよい。
また、コンピュータ・システム100および200にいくぶん似て、コンピュータ・システム400の論理420、介在デバイス460、デバイス470およびデバイス480はそれぞれ構成設定論理427、467、477および487を具備している。コンピュータ・システム400が電源投入および/またはリセットされる時点で、ソフトウェアを実行するプロセッサ410を通じて機能性および/または構成設定の有効化を許容するためである。ここでもまた、さまざまな実施形態において、構成設定論理427、467、477および/または487へのアクセスは、論理420、介在デバイス460、デバイス470およびデバイス480の一つまたは複数が、構成設定を実行するために必要とされうるよりも完全にバス469、479および/または489と対話することを許容することへの必須条件であってもよい。
いくつかの実施例では、構成設定機能を実行するために構成設定論理427、467、477および/または487に対してプロセッサ410によるアクセスがなされたのち、デバイス480の構成設定論理487のメッセージ生成器486が、図3a〜dにおいて描かれたのと同様のヘッダを有するメッセージを、バス489を介して、論理420の構成設定論理427に送信しようと試みる。DMAコントローラ430のデバイス480との使用を可能にしようとしてである。そのメッセージが提供しうるのは、ベンダーID、デバイスID、デバイス480によって実行される単数または複数の関数の指示子および/またはその他のデータであり、メッセージ検出器425はこれらを受信し、当該メッセージが論理420によってサポートされているかどうかを判定するのに使用しうる。いくつかの変形では、メッセージは、該メッセージに応答すべきかどうかを決めるためのメッセージ検出器425使用鍵の形としてメッセージ検出器425によって使用されるベンダーIDと、DMAコントローラ430のようなハードウェア機能が求められていることをメッセージ検出器425に知らせるコードとを与える。いくつかの変形では、メッセージ検出器がそのメッセージがサポートされていないと判定した場合には、メッセージ検出器425はそのメッセージを完全に無視しうる。別の変形では、メッセージ検出器425はエラー信号を出しうる。この応答の選択はメッセージ内にセットされるフラグ・ビットによって決定されてもよい。
メッセージ検出器425がそのメッセージがサポートされているメッセージであると判定した場合、いくつかの変形では、やはり構成設定論理427内にあるメッセージ生成器426は、デバイス480の構成設定論理487に、DMAコントローラ430の利用可能性を示すメッセージを返送する。あるいはまた、メッセージ検出器425によりメッセージがサポートされていると判定されたとき、別の変形では、メッセージ生成器426は、DMAコントローラ430の状態および/または利用可能性に関するデータを読み取れるDMAコントローラ430内のDMAレジスタ431および/またはシステム・メモリ440内の仮想DMAレジスタ432への一つまたは複数のアドレスを提供するメッセージを構成設定論理487に送信する。送信されるアドレスはいくつかの変形では連結リスト型のデータ構造へのポインタであってもよい。連結リスト型のデータ構造では複数のデータ項目がさまざまな情報項目を与えることができ、その情報項目が可能性としてはDMAコントローラ430の複数の割り当て可能部分であることができ、その一つが構成設定論理487によって送信されたもとのメッセージへの応答としてデバイス480との使用のために割り当てられうる。さらに別の変形では、アドレスの代わりにデータ構造(可能性としては連結リスト構成の)が構成設定論理487に直接送信され、DMAコントローラ430のデバイス480との使用のための利用可能性に関する指標が構成設定論理487に直接提供されてもよい。
他の実施形態では、構成設定機能を実行するために構成設定論理427、467、477および/または487に対してプロセッサ410によるアクセスがなされたのち、デバイス470の構成設定論理477のメッセージ生成器476が、図3a〜dにおいて描かれたのと同様のヘッダを有するメッセージを、バス479を介して送信しようと試みる。DMAコントローラ430のデバイス40との使用を可能にしようとしてである。構成設定論理477が何らかの方法でコンピュータ・システム400内のバスおよびデバイスの構成設定および素性に関わる情報を与えられるこうした実施例のいくつかでは、一意的な識別子を用いて論理420を指定するメッセージがメッセージ生成器476によって生成されることができ、メッセージ生成器476はそのような情報をまさにそれを行うために利用しうる。しかし、こうした実施例の他のものでは、構成設定論理477には何の指標も与えられず、介在デバイス460がデバイス470と論理420の間に存在して、DMAコントローラ430を求めるのに使われるいかなるメッセージも介在デバイス460を通して転送される必要があるようにしてもよい。
いくつかの変形では、メッセージ生成器476によって送信されるメッセージが介在デバイス460を通過して送信されることを保証するため、メッセージは、該メッセージが中継される先の目的デバイスはコンピュータ・システム400内でルート複合体デバイス(すなわち、バス469および479が一部をなすコンピュータ・システム400内のバスの分岐樹状構成の基底にあるデバイス)であるとして指定されたデバイスであるという指標を含んでいてもよい。これは、求められているDMAコントローラ430のようなハードウェア機能がルート複合体デバイス内に存在していそうだということが知られている(そして論理420がコンピュータ・システム400のルート複合体の少なくとも一部であると考えられると想定した)場合のことである。ルート複合体デバイスが目的デバイスとして指定されていれば、介在デバイス460の構成設定論理467内のメッセージ検出器465およびメッセージ生成器466は、デバイス470からバス479を介して受信されたメッセージをさらにバス469を介して論理420に再送信するのに協力しうる。
他の変形では、メッセージは、バス469の反対側に存在しているデバイスが何であれそれが目的デバイスであるという指標を含んでいてもよい。その結果、メッセージはメッセージ検出器465によって受信され、メッセージ検出器465はメッセージ生成器466と協力してそのメッセージをさらにバスの分岐樹状構成の基底の方向に送り、その結果、そのメッセージはバス469を通って論理420へと渡される。このようにメッセージを先に送るのにデバイス460の構成設定論理467内の論理に頼ることは、デバイス470と同じベンダーによって介在デバイス460が提供され、介在デバイス460に送信されたメッセージ(可能性としては特定のベンダーIDを有するメッセージ)であって介在デバイス460によってサポートされていないものは確実に別のデバイスに転送されるようになることを必要としうる。
いかにして構成設定論理477によって論理420の構成設定論理427に向けて送信されたメッセージが最終的にメッセージ検出器425によって受信されようとも、デバイス470の構成設定論理477への返答としてメッセージ生成器426が送りうるいかなるメッセージにおいても、メッセージ生成器46は、メッセージ生成器476からのメッセージによって伝えられる、デバイス470を当該メッセージの元来のソースであると一意的に同定する情報を利用して、デバイス470を目的デバイスとして一意的に指定する識別子を与えることができる。
さらに別の実施例では、構成設定論理477および487のそれぞれのメッセージ生成器476および486の両方が、DMAコントローラ430のそれぞれデバイス470および480との使用を有効にするために論理420の構成設定論理427に向けてメッセージを送ることを試みることもありうる。DMAコントローラ430をデバイス470および480の両方に利用可能にすることが可能でないようないくつかの変形では、構成設定論理427はある形の調停を実行して、DMAコントローラ430の少なくとも一部分がそのデバイスとの使用のために割り当てられたという指標をもって応答されるのが前記二つのメッセージのうちの一つだけであるようにすることができる。あるいはまた、両方のデバイス470および480が、DMAレジスタ431または仮想DMAレジスタ432内の位置へのポインタとしてのアドレスを与えるメッセージをもって応答され、両方のデバイスがDMAコントローラ430の状態および/または利用可能性に関する情報を得ることができるのでもよい。このとき、可能性としては、一つまたは複数の状態ビットが設けられ、それがデバイス470および480がDMAコントローラ430へのアクセスのために互いの間で直接に調整することを許容する。
しかしながら、メッセージ生成器476および486の両方がDMAコントローラ430のそれぞれデバイス470および480との使用を獲得するためにメッセージの送信を試み、両方のデバイス470および480にDMAコントローラ430と協働する(おそらくはDMAコントローラ430の複数の異なる部分を用いて)能力を提供する可能性が存在する場合には、メッセージ生成器426は構成設定論理477および487のそれぞれにメッセージを送り、DMAレジスタ431または仮想DMAレジスタ432のいずれかの異なる部分へのポインタとしてはたらく異なるアドレスを提供しうる。あるいはまた、構成設定論理477および487の両方に送られるメッセージは、DMAレジスタ431または仮想DMAレジスタ432内のデバイス470および480の両方がアクセスできる単一のデータ構造(可能性としては連結リストの形のデータ構造)をポイントする同じアドレスを含みうる。ただし、前記単一のデータ構造は、その単一のデータ構造の別個の諸部分におけるDMAコントローラ430の各デバイスとの使用を調整するための別個のデータを含んでいる。
さらに、デバイス470および480の両者がDMAコントローラ430(あるいは論理420によって提供される他のいかなるハードウェア機能でもよい)の少なくとも一部の使用について互いの間で直接に調停することが求められる実施形態または変形においては、デバイス470および480は、コンピュータ・システム400の通常の運転中に、論理420のそのようなハードウェア機能を共有するために互いの間での調停を選択的に放棄および/または再開することができる。デバイス470および480の一方または他方が、コンピュータ・システム400の初期化の一部として限られた時間の間論理420の所与のハードウェア機能を要求するだけであり、それ以後はそのハードウェア機能がその後の使用のために別のデバイスに割り当てられることを許容してもよい。
図5は、コンピュータ・システム400を用いるある実施形態のブロック図である。コンピュータ・システム500は少なくとも部分的には、プロセッサ510、システム論理520およびメモリ・デバイス540からなる。システム論理520はプロセッサ510に結合されており、プロセッサ510をサポートするさまざまな機能を実行する。それには、該プロセッサ510に、やはり論理520が結合されているメモリ・デバイス540へのアクセスをシステム論理520内のメモリ・コントローラ522を使って提供することが含まれる。プロセッサ510、システム論理520およびメモリ・デバイス540は、プロセッサ510による機械可読命令の実行ならびにメモリ・デバイス540内におけるデータおよび命令の記憶をサポートすることができるコンピュータ・システム500のためのコアの形をなす。あるいはまた、他の実施形態では、メモリ・コントローラ522は部分的または完全にプロセッサ510内に統合されていてもよい。その結果可能性としては、プロセッサ510はメモリ・デバイス540に直接結合され、これに直接アクセスできることになる。
いくつかの実施形態では、システム論理520はプロセッサ510に結合され、プロセッサ510に、記憶媒体591に担持されているデータおよび/または命令にアクセスするための記憶装置590へのアクセスを提供する。記憶媒体591は、当業者は理解するであろうように、多様なタイプおよび技術のもののうちいかなるものでもよい。それには、CDもしくはDVD ROM、磁気もしくは光学式ディスケット、光磁気ディスク、テープ、半導体メモリ、紙上の文字もしくは穿孔またはその他の材料などが含まれる。いくつかの実施形態では、不揮発性記憶装置545がシステム論理520(またはコンピュータ・システム500の他の部分)に結合されており、コンピュータ・システム500が「リセット」または初期化される(たとえばコンピュータ・システム500が「スイッチオン」または「電源投入」されるときに)時点でコンピュータ・システム500を通常の使用のために準備するために必要とされる処理を行うために実行される一連の初期命令のための記憶を提供する。そのような実施形態のいくつかの変形では、コンピュータ・システム500の初期化またはリセットに際して、プロセッサ510は不揮発性記憶装置545にアクセスして、メモリ・コントローラ522をCPU510に対するメモリ・デバイス540へのアクセス提供という通常の使用のために準備するために実行されるべき命令を取得し、ならびに/または構成設定論理527および577を介してシステム論理520および570を構成設定する。これらの同じ取得された命令がシステム論理520を記憶装置590および該記憶装置590によって使用されうる任意の形の記憶媒体591へのアクセス提供という通常の使用のために準備するために実行されるのでもよい。
プロセッサ510はさらに、記憶媒体591または不揮発性記憶装置545のいずれかに保存され、プロセッサ510によって実行される命令によって、構成設定論理527および577の一方または両方の中に担持されるソフトウェアの一部、データ構造、ゲートアレイ設定および/またはマイクロコードをインストールするようにさせられうる。これらが構成設定論理527をしてシステム論理内のハードウェア機能のデバイス570との使用を獲得するためにバス579を介したトランザクションを試みさせ、および/または、構成設定論理577をしてそのようなトランザクションの試みに対して、求められているハードウェア機能の使用をデバイス570に提供することによって応答させる。
図6はある実施形態のフローチャートである。610において、ある特定のハードウェア機能を求めるデバイスが、そのハードウェア機能を有するかもしれないデバイスとのトランザクションを試みる。620において、所与のハードウェア機能を求めるデバイスからのその試行トランザクションが、そのハードウェア機能を有するかもしれないデバイスによって受信される。622において、そのハードウェア機能を有するかもしれないデバイス内の論理が試行トランザクションがサポートされていない、すなわち、そのハードウェア機能を有するかもしれないデバイスがそのハードウェア機能を有していないと判定した場合、624でエラー信号が出される。しかし、もし622でそのハードウェア機能を有するかもしれないデバイスが実際にそのハードウェア機能を有しており、したがって試行トランザクションがサポートされていると判定された場合、630において、そのハードウェア機能が、そのハードウェア機能を求めるデバイスとの使用のために利用可能であるかどうかを判定するための検査が行われる。630において、そのハードウェア機能がそのハードウェア機能を求めるデバイスとの使用のために利用可能でない場合、632において、そのハードウェア機能が利用可能でないという指標がそのハードウェア機能を求めるデバイスに送られる。しかし、もし630において、そのハードウェア機能がそのハードウェア機能を求めるデバイスとの使用のために利用可能であると判定された場合、634において、そのハードウェア機能が利用可能であるという指標がそのハードウェア機能を求めるデバイスに送られる。
代替的な諸実施形態では、622での試行トランザクションがサポートされていないという判定の結果、624においてエラー信号を出す代わりに、試行トランザクションが単に無視されるのでもよい。また、他の諸実施形態では、634で送られるハードウェア機能利用可能の指標に、ハードウェア機能を求めるデバイスがそのハードウェア機能を構成設定および/または使用できるようにするのを支援するための、データまたはレジスタもしくはメモリ位置をポイントするアドレスが付随していてもよい。
図7はある実施形態のフローチャートである。710において、ある特定のハードウェア機能を求めるデバイスが、そのハードウェア機能を有するかもしれない目的デバイスにメッセージを送信することを試みる。720において、そのメッセージが目的デバイスによって受信される。722において、目的デバイス内の論理が試行トランザクションがサポートされていない、すなわち、目的デバイスがそのハードウェア機能を有していないと判定した場合、そのメッセージは730において、目的デバイスがさらなるサポートを提供するベンダー用IDを含んでいるかどうかを決める検査がされる。730においてベンダーIDがサポートされていれば、732においてメッセージは要求側デバイスによって求められているハードウェア機能を有するかもしれない別のデバイスに渡される(前記目的デバイスがバスの階層構造中、メッセージを渡せる別のデバイスがないような位置にあるのでない限り)。しかし、もし722において、目的デバイスが確かにそのハードウェア機能を有しており、よってその試行トランザクションがサポートされていると判定された場合、740において、そのハードウェア機能が要求側デバイスとの使用のために利用可能であるかどうかを決める検査がなされる。740においてそのハードウェア機能が要求側デバイスとの使用のために利用可能でなければ、742においてそのハードウェア機能が利用可能でないことを示すメッセージが要求側デバイスに送られる。しかし、もし740においてそのハードウェア機能が要求側デバイスとの使用のために利用可能であると判定されれば、744においてそのハードウェア機能が利用可能であることを示し、そのハードウェア機能に関するデータにアクセスするためのポインタのはたらきをするアドレスを提供するメッセージが送られる。
図8a、8b、8cは、メッセージの送信をサポートするバスを介した試行メッセージトランザクションおよび可能な応答を用いるもう一つの実施形態を描いている。図8aと8bは合わせて、所与のハードウェア機能を検出および/または構成設定しようとするデバイスが送ることを試みるパケット化メッセージの少なくともヘッダ部分において伝達される情報の可能なビット編成の特徴を描いている。図8aと8cは合わせて、前記試行メッセージへの応答において他方のデバイスから送られうるパケット化メッセージの同様な特徴を描いている。いずれの場合にも、描かれたビット編成は、分岐樹状構成に編成された複数のポイントツーポイント・バスを用いるバス・アーキテクチャとともに動作できることが意図されている。そこを介してアドレス、コマンド、データおよびその他の情報がデジタル・シリアル接続を通じてパケット化された形で転送される。図3a〜eの場合と同様、情報のビットの個別の割り当ては特許請求される本発明の精神および範囲内であるためにいかなる一つの標準または慣用に準拠することも必要ではないが、描かれている情報のビットの配列は現在登場してきているPCIエクスプレス・バス規格の要件に準拠することを意図したものである。
倍長語810、820、830および840は、所与のハードウェア機能を求めているデバイスが前記所与のハードウェア機能が存在しうる別のデバイスを試験しようとして送信を試みうるパケット化メッセージ、前記別のデバイスが応答において送信しうるパケット化メッセージの両方の、少なくとも最初の4つの倍長語(4バイトのブロック)を構成する。明快のため、図8aの倍長語810、820、830はそれぞれ図3a〜cの倍長語310、320、330とほぼ同一である。顕著な違いは倍長語840に始まる後半の倍長語により多い傾向がある。そこで、以下の議論はどのような面が倍長語310、320、330、340aおよび340bと異なっているかにより焦点を当てるようにする。ほとんど同じ面については、読者は図3a〜eに対応する先の記述を参照されたい。
倍長語810が送信されるべき最初の倍長語で、そのあとに順に倍長語820、830などが続く。倍長語810についての多くは倍長語310と同一であるが、倍長語810が一部をなしているメッセージには、データのための追加的なスペースを与えるために追加的な倍長語が付加されている。よって、倍長語810のバイト0のビット6および5はそれぞれ、追加的な倍長語があることを示すためのバイナリーの1の値を含んでいる。バイト3全体およびバイト2の一部を埋めるのが、バイト0でこのメッセージのフォーマットがこのヘッダに付加された倍長語を有すると示されている場合に、所与のメッセージのヘッダに付加されるデータの倍長語数を示す10ビットのバイナリー値である。のちにより詳しく議論するように、付加される倍長語がないヘッダの一部であり、結果としてこの10ビット値が0で埋められる倍長語310とは異なり、倍長語810については、別のデバイスにあるハードウェア機能を検出しようとするデバイスによって送られるメッセージには1つの付加された倍長語があり、前記別のデバイスによって応答として送られうるメッセージには4つの付加された倍長語がある。よって、ハードウェア機能を検出しようとするメッセージの場合、この10ビット値はバイナリーで00:0000:0001となり、他方、ありうる返答メッセージの場合、この10ビット値はバイナリーで00:0000:0100となる。
倍長語820は倍長語10に続いて送信されるべき第2の倍長語であり、ほぼ倍長語320と同一である。また、倍長語30は倍長語20に続いて送信されるべき第3の倍長語であり、倍長語30とほぼ同一である。
倍長語840は別のデバイス内に所与のハードウェア機能を検出しようとするデバイスによって送信されるメッセージ両方のヘッダを構成する4つの倍長語の最後のものであり、このメッセージの部分としてこれら4つの倍長語のうち最後に送信されるべきものである。よって、倍長語340aと340bのどちらとも非常に異なっている。倍長語840のバイト12、13、14は不使用であり、倍長語840のバイト15は8ビットのベンダー定義メッセージコードを伝えうる。ある実施例では、この8ビットコードは、当該メッセージが一般的に目的装置内にあるハードウェア機能を検出しようとしてあるデバイスによって送られているという指標を与えるためのバイナリー値の0000:0010でありうる。あるいは別の実施例では、この同じ8ビットコードが、当該メッセージが目的装置内の(単数または複数の)特定のハードウェア機能を検出しようとしてあるデバイスによって送られているという指標を与えることもありうる。もう一つの実施例では、この8ビットコードは、当該メッセージが前記別のデバイス内の一つまたは複数のハードウェア機能を求める前記あるデバイスによって送信されたメッセージへの応答として前記あるデバイスに前記別のデバイスによって返送されているメッセージであるという、および/または応答として送られている当該メッセージが前記あるデバイスが一つまたは複数のハードウェア機能にアクセスしうるアドレスを伝達するものであるという指標を与えるためのバイナリー値0000:0011でありうる。
倍長語850aは別のデバイス内のハードウェア機能を検出しようとするデバイスによって送信されるメッセージに属する一つの付加された倍長語である。倍長語850aのバイト16は一組の4ビット値を有しており、それらは大小のバージョン番号を示している。ある実施例では、大小のバージョン番号は、前記あるデバイスが求めているハードウェア機能のバージョン(より正確には、おそらくはどの実装版か)を示す。これは前記あるデバイスが前記ハードウェア機能のどのバージョンと相互運用可能(あるいはコンピュータ業界において使われる一般的な用語では「互換」)かを前記別のデバイスに示す方法として使われる。別の実施例では、大小のバージョン番号は前記あるデバイス自身のバージョン(おそらくは実装版)を示す。前記別のデバイスはこの大小バージョン番号を、応答としてメッセージを送信するかどうかを決定するのに使用するのでもよい。これは、前記あるデバイスと前記ハードウェア機能との間の相互運用性がないような場合に応答の不在を提供し、当該ハードウェア機能が単に前記別のデバイスに存在していない状況を可能性として模倣するために、あるいは前記別のデバイスが前記ハードウェア機能を検出しようとする前記あるデバイスによって送られたメッセージを単にサポートしていない状況を模倣するために望ましいとされうることである。
倍長語850bおよび860は、対話しようと求めるハードウェア機能を検出しようとしてあるデバイスによって送信されたメッセージを受信するのに応答して別のデバイスによって送信されうるメッセージに属する4つの付加された倍長語のうちの最初の2つである。倍長語850bおよび860は合わせて、前記ハードウェア機能を検出しようと求める前記あるデバイスによって前記ハードウェア機能との対話のためにアクセスされうるレジスタおよび/またはメモリ位置(可能性としては仮想レジスタのはたらきをするメモリ位置)のアドレス位置を指定する最大64ビット幅の少なくとも一つのアドレスを含んでいる。いくつかの実施例では、倍長語850bおよび860の両者によって与えられる64ビット内で伝達される値は、アドレスの代わりに、またはアドレスに加えて他の情報を伝達してもよい。たとえば、これらの64ビットのうちの少なくとも部分集合における全部0,全部1または他の何らかの特定のバイナリー値がハードウェア機能の状態の指標を伝達しうる。ハードウェア機能の状態とはたとえば、利用可能性の不在(可能性としては単に一時的なものであり、これは前記あるデバイスは、後刻前記ハードウェア機能へのアクセスを獲得するためにもう一度試行をするべきであるということを含意している)、あるいは前記ハードウェア機能へのアクセスを与えられたさらにもう一つのデバイスとの調停に勝つことに成功しなかったこと、などである。
倍長語870は、倍長語850bおよび860に続いて、対話しようと求めるハードウェア機能を検出しようとしてあるデバイスによって送信されたメッセージを受信するのに応答して別のデバイスによって送信されうるメッセージに属する4つの付加された倍長語のうちの第3のものである。倍長語870のバイト24、25、27はリザーブされている。可能性としては他の目的のため、あるいは全く不使用とするためである。倍長語870のバイト26は大小のバージョン番号を示す一対の4ビット値を含んでいる。ある実施例では、大小のバージョン番号は、前記別のデバイスが提供するハードウェア機能のバージョン(より正確には、おそらくはどの実装版か)を示す。これは前記ハードウェア機能を求めている前記あるデバイスに対して、前記ハードウェア機能のどのバージョンが使用のために利用可能であるかを示す方法として使われる。別の実施例では、大小のバージョン番号は前記別のデバイス自身のバージョンを示す。さらに別の実施例では、大小のバージョン番号は、前記別のデバイスが何らかの仕方で模倣できるハードウェア機能のバージョンを指定してもよい。そのハードウェア機能を求めている前記あるデバイスは、該別のデバイスによって与えられるその大小のバージョン番号を、そのハードウェア機能と正しく対話することが可能であるかどうかを判定するのに用いることができるのでもよい。さらに別の実施例では、前記あるデバイスと前記別のデバイス内の前記ハードウェア機能との間の対話が可能であるかどうかの判定が、前記あるデバイスおよび別のデバイスの両者によってなされうるのでもよい。各デバイスが受け取った大小のバージョン番号を検査して、前記のような対話に従事するために必要とされる(あるいは所望の)相互運用性(またはその欠如)の指標があるかどうかを検査するのである。そのような大および/または小のバージョン番号の検査は、一方のデバイスによって実行されようと両方のデバイスによって実行されようと、エンドユーザーが相互運用性やその欠如についての理解がなくても異なるデバイスの対の組み合わせを選べる、よってデバイス自身が自律的にこの決定を行うことができるようになっている場合に望ましいと見なされうる。
所与のハードウェア機能を検出しようとするもとのメッセージおよび応答として送られうるメッセージは両方ともベンダー固有メッセージであるので、ヘッダに付加される倍長語(すなわち、倍長語850aまたは諸倍長語850b、860、870、880)内に置かれるいかなる内容の使用、特性および編成も指定されておらず、ベンダーがこのさらなる倍長語を、該ベンダーに望ましいと見なされるいかなる使用にも供することを許容するようになっている。図3a〜eのメッセージと同様、このベンダー固有型メッセージの非常に非体系的な性質のため、要求側デバイスと目的デバイスの両者とも、送信されるあらゆるベンダー固有メッセージの生成およびその意味の正しい解釈の両方をサポートするよう設計され(あるいは別の何らかの形でとにかく構成され)なければならない。要するに、要求側デバイスと目的デバイスの両方が何らかの形で全く同じ形のベンダー固有メッセージを扱うよう構成または準備されていなければ、目的デバイスが要求側デバイスによって送信されたメッセージを誤って解釈したり、あるいは目的デバイスがメッセージを該目的デバイスによってサポートされていないメッセージとして完全に無視および/または拒否したりすることが起こりうる。したがって、要求側デバイスがこのベンダー固有メッセージを目的デバイス内で所与のハードウェア機能を求めるために使うようにする目的のためには、要求側デバイスは、目的デバイスが受信し、該目的デバイス内で所与のハードウェア機能を特定しようとする試みであると解釈する用意がなければならないようなメッセージを生成し、送信する用意がなければならず、目的デバイスは、要求側デバイスが、前記所与のハードウェア機能が目的デバイス内に成功裏に特定されたという指標として、および可能性としては前記所与のハードウェア機能が要求側デバイスとの使用のために利用可能であるかどうかの指標として解釈する用意のある応答を要求側デバイスに与える用意がなければならない。
倍長語880は、倍長語850b、860および870に続いて、対話しようと求めるハードウェア機能を検出しようとしてあるデバイスによって送信されたメッセージを受信するのに応答して別のデバイスによって送信されうるメッセージに属する4つの付加された倍長語のうちの第4のものである。バイト28から31のすべてはリザーブされている。可能性としては将来ありうる他の用途のためである。
図9は、さらに一つの実施形態のフローチャートである。910において、ある特定のハードウェア機能を求める要求側デバイスが、そのハードウェア機能を有するかもしれない目的デバイスにメッセージを送信することを試みる。920において、そのメッセージが目的デバイスによって受信される。930において、そのハードウェア機能がその要求側デバイスとの使用のために利用可能であるかどうかを判定するための検査が行われる。930においてそのハードウェア機能がその要求側デバイスとの使用のために利用可能でなければ、940においてそのハードウェア機能が利用可能でないことを示すメッセージが要求側デバイスに送られる。しかし、もし930において、そのハードウェア機能が要求側デバイスとの使用のために利用可能であると判定された場合、要求側デバイスによって前記試みのうちに送られたメッセージとともに受信されたバージョン番号が950において検査される。要求側デバイスが問い合わせをしているハードウェア機能のバージョンが目的デバイスが包有しているものと同じであるか、あるいは少なくとも目的デバイスが包有しているバージョンと相互運用可能であり、要求側デバイスが目的デバイス内のハードウェア機能のバージョンと正しく対話できるかどうかを判定するためである。950においてハードウェア機能のバージョンがもとの試行メッセージにおいて示されているバージョンと同じでもなく、要求側デバイスと相互運用可能でもないと見出された場合には、940においてそのハードウェア機能が利用可能でないことを示すメッセージが送られる。そうでない場合には、そのハードウェア機能が利用可能であることを示し、そのハードウェア機能に関するデータにアクセスするためのポインタのはたらきをするアドレスを提供するメッセージが960において送られる。
本発明は、さまざまな可能な実施形態に関連して記載されてきた。以上の記述に照らして、当業者には数多くの代替、修正、変形および用途が明らかとなることは明白である。本発明がコンピュータ・システム以外の、オーディオ/ビデオ娯楽装置、乗り物の制御装置、電子回路によって制御される機器などといった電子装置の基盤において実施されうることも、当業者には理解されるであろう。
コンピュータ・システムを用いる実施形態のブロック図である。 コンピュータ・システムを用いる他の実施形態のもう一つのブロック図である。 ハードウェア機能を求めるメッセージの試行送信を用いる実施形態のメッセージの詳細を描く図の一部である。 ハードウェア機能を求めるメッセージの試行送信を用いる実施形態のメッセージの詳細を描く図の一部である。 ハードウェア機能を求めるメッセージの試行送信を用いる実施形態のメッセージの詳細を描く図の一部である。 ハードウェア機能を求めるメッセージの試行送信を用いる実施形態のメッセージの詳細を描く図の一部である。 ハードウェア機能を求めるメッセージの試行送信を用いる実施形態のメッセージの詳細を描く図の一部である。 コンピュータ・システムを用いる他の実施形態のさらにもう一つのブロック図である。 コンピュータ・システムを用いる他の実施形態のさらにもう一つのブロック図である。 ある実施形態のフローチャートである。 別の実施形態のフローチャートである。 ハードウェア機能を求めるメッセージの試行送信を用いるもう一つの実施形態のメッセージの詳細を描く図の一部である。 ハードウェア機能を求めるメッセージの試行送信を用いるもう一つの実施形態のメッセージの詳細を描く図の一部である。 ハードウェア機能を求めるメッセージの試行送信を用いるもう一つの実施形態のメッセージの詳細を描く図の一部である。 さらに別の実施形態のフローチャートである。

Claims (35)

  1. 集積回路であって、
    バスへのインターフェースと、
    前記バスを通じ、別の集積回路に向けて、前記別の集積回路内のハードウェア機能の利用可能性について問い合わせるための問い合わせメッセージを送信し、前記別の集積回路から該別の集積回路内の前記ハードウェア機能の利用可能の指標を提供する返答メッセージが受信された場合に前記別の集積回路内の前記ハードウェア機能にアクセスするための構成設定論理、
    とを有することを特徴とする集積回路。
  2. 前記インターフェースが、前記問い合わせメッセージがパケット化された形で転送される少なくとも一つのシリアル・データ・リンクを有するポイントツーポイント・バスに結合されることができることを特徴とする、請求項1記載の集積回路。
  3. 前記構成設定論理によって送信される問い合わせメッセージが、ベンダー固有メッセージの送信のために前記バスによって提供されているサポートに従うベンダー固有メッセージであることを特徴とする、請求項2記載の集積回路。
  4. 当該集積回路が利用可能性について問い合わせをする前記ハードウェア機能がDMAコントローラであることを特徴とする、請求項1記載の集積回路。
  5. 前記構成設定論理が前記別の集積回路内の前記ハードウェア機能に、前記別の集積回路によって前記返答メッセージ内において提供されたアドレスを使ってアクセスすることを特徴とする、請求項1記載の集積回路。
  6. 前記構成設定論理が前記ハードウェア機能と対話する機会を求めて調停するために前記ハードウェア機能にアクセスすることを特徴とする、請求項5記載の集積回路。
  7. 前記構成設定論理が、前記問い合わせメッセージ内において当該集積回路のバージョンを同定するバージョン番号を送信することを特徴とする、請求項1記載の集積回路。
  8. 前記構成設定論理が、前記問い合わせメッセージ内において当該集積回路が求めているハードウェア機能のバージョンを同定するバージョン番号を送信することを特徴とする、請求項1記載の集積回路。
  9. 集積回路であって、
    バスへのインターフェースと、
    前記バスを通じて別の集積回路内と対話するためのハードウェア機能と、
    前記バスを通じ、当該集積回路に向けられた、前記ハードウェア機能の利用可能性について問い合わせるための問い合わせメッセージを受信し、前記ハードウェア機能の利用可能性の指標を提供する返答メッセージを送信することによって前記問い合わせメッセージに選択的に返答するための構成設定論理、
    とを有することを特徴とする集積回路。
  10. 前記インターフェースが、前記問い合わせメッセージおよび前記返答メッセージがパケット化された形で転送される少なくとも一つのシリアル・データ・リンクを有するポイントツーポイント・バスに結合されることができることを特徴とする、請求項9記載の集積回路。
  11. 前記構成設定論理によって送信される返答メッセージが、ベンダー固有メッセージの送信のために前記バスによって提供されているサポートに従うベンダー固有メッセージであることを特徴とする、請求項10記載の集積回路。
  12. 前記別の集積回路が利用可能性について問い合わせをする前記ハードウェア機能がDMAコントローラであることを特徴とする、請求項9記載の集積回路。
  13. 前記構成設定論理が前記返答メッセージ内において、前記別の集積回路が前記ハードウェア機能にアクセスするために使用できるアドレスを提供することを特徴とする、請求項9記載の集積回路。
  14. 前記ハードウェア機能が該ハードウェア機能と対話する機会について調停するために前記別の集積回路によってアクセスされることをサポートしていることを特徴とする、請求項13記載の集積回路。
  15. 前記構成設定論理が、前記返答メッセージ内において前記ハードウェア機能のバージョンを同定するバージョン番号を送信することを特徴とする、請求項9記載の集積回路。
  16. 前記構成設定論理が、前記返答メッセージ内において、当該集積回路内の前記ハードウェア機能が模倣するハードウェア機能のバージョンを同定するバージョン番号を送信することを特徴とする、請求項9記載の集積回路。
  17. バスと、
    ハードウェア機能の利用可能性について問い合わせるための問い合わせトランザクションを前記バス上で実行するための第一の構成設定論理を有する、前記バスに結合されたデバイスと、
    前記ハードウェア機能を有し、前記問い合わせトランザクションを受信して前記ハードウェア機能の利用可能性の指標をもって選択的に応答するための第二の構成設定論理を有するシステム論理と、
    前記システム論理に結合されたプロセッサ、
    とを有することを特徴とする電子システム。
  18. 前記バスがベンダー定義メッセージの転送をサポートしており、前記問い合わせトランザクションが前記バスを介して送信されるベンダー定義問い合わせメッセージであることを特徴とする、請求項17記載の電子システム。
  19. 前記バスが、前記問い合わせメッセージがパケット化された形で転送される少なくとも一つのシリアル・データ・リンクを有するポイントツーポイント・バスであることを特徴とする、請求項18記載の電子システム。
  20. 前記第一の構成設定論理が、前記問い合わせメッセージ内において、前記デバイスが対話できるハードウェア機能のバージョンを示すバージョン番号を送信することを特徴とする、請求項18記載の電子システム。
  21. 前記第二の構成設定論理が、前記第一の構成設定論理からの前記問い合わせメッセージ内のバージョン番号を受信し、それを解析して前記問い合わせメッセージに応答するかどうかを決定することを特徴とする、請求項18記載の電子システム。
  22. 前記第一の構成設定論理が、該第一の構成設定論理からの前記問い合わせメッセージ内においてベンダーを同定するコードを送信し、前記第二の構成設定論理は前記コードを解析して前記問い合わせメッセージに応答するかどうかを決定することを特徴とする、請求項18記載の電子システム。
  23. 前記バスがベンダー定義メッセージの転送をサポートしており、前記第二の構成設定論理が前記問い合わせトランザクションに対して、前記バスを介して送信されるベンダー定義返答メッセージをもって応答することを特徴とする、請求項17記載の電子システム。
  24. 前記バスが、前記返答メッセージがパケット化された形で転送される少なくとも一つのシリアル・データ・リンクを有するポイントツーポイント・バスであることを特徴とする、請求項23記載の電子システム。
  25. 前記第二の構成設定論理が、前記返答メッセージ内において前記システム論理が有するハードウェア機能のバージョンを示すバージョン番号を送信することを特徴とする、請求項23記載の電子システム。
  26. 前記第一の構成設定論理が、前記第二の構成設定論理からの返答内のバージョン番号を受信し、それを解析して前記ハードウェア機能と対話するかどうかを決定することを特徴とする、請求項23記載の電子システム。
  27. 請求項17記載の電子システムであって、前記バスが分岐樹状構造に編成された複数のバスの一つであり、前記システム論理が該樹状構造の底にあってルート複合体として指定されることを特徴とする電子システム。
  28. 請求項27記載の電子システムであって、前記システム論理が前記バスに結合されており、前記バスが前記ハードウェア機能について問い合わせをするための前記問い合わせトランザクションとしてのメッセージの転送をサポートしており、前記メッセージが前記システム論理に向かわされるのが、該メッセージは前記デバイスに結合され、ルート複合体に向かう任意のバスの反対側にあるデバイスに向けられているという該メッセージ内において与えられる指標を通じてであることを特徴とする電子システム。
  29. 請求項27記載の電子システムであって、前記バスが前記ハードウェア機能について問い合わせをするための前記問い合わせトランザクションとしてのメッセージの転送をサポートしており、前記メッセージが前記システム論理に向かわされるのが、該メッセージはルート複合体にあるデバイスに向けられているという該メッセージ内において与えられる指標を通じてであることを特徴とする電子システム。
  30. 第一のデバイス内の論理によってバスを通じて第二のデバイスに、前記第二のデバイス内のハードウェア機能の利用可能性について問い合わせるための問い合わせメッセージを送信し、
    前記第二のデバイス内の論理によって前記問い合わせメッセージを受信し、
    前記第二のデバイス内の論理によって前記問い合わせメッセージに対して、前記第二のデバイス内の前記ハードウェア機能の利用可能性の指標を提供する返答メッセージを送信することによって選択的に応答する、
    ことを含むことを特徴とする方法。
  31. 前記問い合わせメッセージ内において、前記第一のデバイスが対話しようと求めるハードウェア機能のバージョンを示すバージョン番号を送信し、
    前記第二のデバイス内の論理によって、前記問い合わせメッセージ内において送信されたバージョン番号を解析して返答メッセージを応答として送信するかどうかを決定する、
    ことをさらに含むことを特徴とする、請求項30記載の方法。
  32. 前記問い合わせメッセージ内においてベンダーを同定するコードを送信し、
    前記第二のデバイス内の論理によって、前記問い合わせメッセージ内において送信されたベンダーを同定するコードを解析して返答メッセージを応答として送信するかどうかを決定する、
    ことをさらに含むことを特徴とする、請求項30記載の方法。
  33. 前記返答メッセージ内において、前記第二のデバイスが有しているハードウェア機能のバージョンを示すバージョン番号を送信し、
    前記第一のデバイス内の論理によって、前記返答メッセージ内において送信されたバージョン番号を解析して前記ハードウェア機能と対話するかどうかを決定する、
    ことをさらに含むことを特徴とする、請求項30記載の方法。
  34. 前記第二のデバイス内の論理によって、前記第一のデバイス内の論理への前記返答メッセージ内において、前記ハードウェア機能がアクセス可能であるアドレス位置を指定するアドレスを送信することをさらに含むことを特徴とする、請求項30記載の方法。
  35. 請求項33記載の方法であって、前記ハードウェア機能と対話する決定がなされた場合に、前記第二のデバイス内の前記ハードウェア機能と対話する機会を獲得するために前記第一のデバイス内の論理によって調停することをさらに含むことを特徴とする方法。
JP2006547485A 2003-12-30 2004-12-23 I/oデバイスによるチップセット機能検出および構成設定 Active JP4493661B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/750,060 US7363393B2 (en) 2003-12-30 2003-12-30 Chipset feature detection and configuration by an I/O device
PCT/US2004/043676 WO2005066814A1 (en) 2003-12-30 2004-12-23 Chipset feature detection and configuration by an i/o device

Publications (3)

Publication Number Publication Date
JP2007519998A JP2007519998A (ja) 2007-07-19
JP2007519998A5 true JP2007519998A5 (ja) 2008-07-10
JP4493661B2 JP4493661B2 (ja) 2010-06-30

Family

ID=34749315

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006547485A Active JP4493661B2 (ja) 2003-12-30 2004-12-23 I/oデバイスによるチップセット機能検出および構成設定

Country Status (6)

Country Link
US (1) US7363393B2 (ja)
EP (1) EP1700223B1 (ja)
JP (1) JP4493661B2 (ja)
CN (1) CN1922595B (ja)
TW (1) TWI297836B (ja)
WO (1) WO2005066814A1 (ja)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7581042B2 (en) * 2004-12-29 2009-08-25 Intel Corporation I/O hub resident cache line monitor and device register update
JP4810349B2 (ja) * 2006-08-11 2011-11-09 日本電気株式会社 I/o装置及び方法
US8166207B2 (en) * 2008-09-29 2012-04-24 Intel Corporation Querying a device for information
WO2016130114A1 (en) * 2015-02-10 2016-08-18 Hewlett Packard Enterprise Development Lp Chipset reconfiguration based on device detection
KR102367359B1 (ko) * 2017-04-17 2022-02-25 에스케이하이닉스 주식회사 직렬 시스템 버스 인터페이스 및 직접메모리액세스 컨트롤러를 갖는 전자 시스템 및 그 동작 방법
US11106624B2 (en) * 2019-05-01 2021-08-31 Dell Products L.P. System and method for generation of configuration descriptors for a chipset

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4814973A (en) * 1983-05-31 1989-03-21 Hillis W Daniel Parallel processor
US4805091A (en) * 1985-06-04 1989-02-14 Thinking Machines Corporation Method and apparatus for interconnecting processors in a hyper-dimensional array
JPH05250239A (ja) * 1992-03-10 1993-09-28 Sharp Corp コンピュータネットワークシステム
US5405166A (en) * 1993-07-30 1995-04-11 Alliedsignal Inc. Air bag with inflation limiter
DE69625597D1 (de) 1995-06-15 2003-02-06 Intel Corp I/o-prozessor architektur mit integrierter pci-pci brücke
US6275888B1 (en) 1997-11-19 2001-08-14 Micron Technology, Inc. Method for configuring peer-to-peer bus bridges in a computer system using shadow configuration registers
JP3704533B2 (ja) * 1998-11-10 2005-10-12 株式会社東芝 通信方法、携帯端末装置及び計算機装置
US6253076B1 (en) * 1999-02-25 2001-06-26 Ericsson Inc. Manufacturing method for wireless communications devices employing potentially different versions of integrated circuits
JP2000259405A (ja) * 1999-03-12 2000-09-22 Matsushita Electric Ind Co Ltd 情報処理装置及びそのプログラム更新方法
JP2001117834A (ja) * 1999-10-19 2001-04-27 Fuji Xerox Co Ltd ネットワーク通信環境設定システム、ネットワーク通信環境設定方法、及び、ネットワーク通信環境設定プログラムを記録したコンピュータ読取可能な記録媒体
JP2001253517A (ja) * 2000-03-15 2001-09-18 Yokohama Rubber Co Ltd:The 荷物管理システム
JP2001326766A (ja) * 2000-05-16 2001-11-22 Canon Inc 画像処理システム、画像データ処理方法及び記憶媒体
JP2002077211A (ja) * 2000-08-29 2002-03-15 Canon Inc 情報処理装置およびその方法、並びに、記録媒体
JP2002203087A (ja) * 2000-11-06 2002-07-19 Fujitsu Ltd データ交換システム、データ交換装置、および交換方法
US6892266B2 (en) * 2000-11-15 2005-05-10 Texas Instruments Incorporated Multicore DSP device having coupled subsystem memory buses for global DMA access
JP4177040B2 (ja) * 2001-07-17 2008-11-05 松下電器産業株式会社 コンテンツ利用装置及びネットワークシステム並びにライセンス情報取得方法
JP4295932B2 (ja) * 2001-09-04 2009-07-15 Hoya株式会社 電子内視鏡装置のプロセッサ、内視鏡用基板の版管理システムおよび内視鏡用基板の版管理方法
JP2003218315A (ja) * 2002-01-21 2003-07-31 Denso Corp 半導体装置
US6915365B2 (en) 2002-03-22 2005-07-05 Intel Corporation Mechanism for PCI I/O-initiated configuration cycles
US7961682B2 (en) * 2002-04-11 2011-06-14 Qualcomm Incorporated Handoff between base stations of different protocol revisions in a CDMA system
AU2003227210A1 (en) * 2002-04-30 2003-11-17 Ntt Data Corporation Mobile terminal server
US7043667B2 (en) 2002-05-14 2006-05-09 Intel Corporation Debug information provided through tag space
US7363407B2 (en) * 2003-09-29 2008-04-22 Microsoft Corporation Concurrent arbitration of multidimensional requests for interrupt resources

Similar Documents

Publication Publication Date Title
TWI244000B (en) Virtual PCI device apparatus and method
US8291141B2 (en) Mechanism to flexibly support multiple device numbers on point-to-point interconnect upstream ports
CN111258930B (zh) 仿真端点配置
US20090198863A1 (en) Transparent pci-based multi-host switch
JP4447892B2 (ja) マルチコア通信モジュールを組み入れたデータ通信システム及び方法
US5682512A (en) Use of deferred bus access for address translation in a shared memory clustered computer system
WO2021051919A1 (zh) 一种数据转发芯片及服务器
US6427198B1 (en) Method, system, and program for determining system configuration
US6553439B1 (en) Remote configuration access for integrated circuit devices
US6915365B2 (en) Mechanism for PCI I/O-initiated configuration cycles
US7689679B2 (en) Method to enable infiniband network bootstrap
JP4493661B2 (ja) I/oデバイスによるチップセット機能検出および構成設定
JP2007519998A5 (ja)
US7734743B2 (en) Method to enable infiniband network bootstrap
EP1537700B1 (en) Protocol for accessing a local device of a remote node via infiniband
JP4001511B2 (ja) Icカード及びその制御方法
US6230216B1 (en) Method for eliminating dual address cycles in a peripheral component interconnect environment
CN116483259A (zh) 一种数据处理方法以及相关装置
JPH0697449B2 (ja) 多重化共有メモリ制御方法、多重化共有メモリシステムおよび共有メモリ拡張方法
JP4684577B2 (ja) 高速の帯域幅のシステムバスを仲裁するためのバスシステム及びその方法
JP2004062347A (ja) Usbデバイスおよびusbシステム
JP7109225B2 (ja) 通信システム