(57)【要約】第一のデバイスが第二のデバイスに該第二のデバイス中のハードウェア機能の利用可能性についての問い合わせをし、第二のデバイスが問い合わせを受信して応答するかどうかを求められているハードウェア機能のバージョン、ベンダーを同定するコードなどに依存して決定するために解析し、返答すると決定された場合には、前記ハードウェア機能の利用可能性の指標および／または前記ハードウェア機能がアクセスされうるアドレスを提供する返答をもって応答するための装置および方法。
2007519998.tif 000002
【特許請求の範囲】
【請求項１】
集積回路であって、
バスへのインターフェースと、
前記バスを通じ、別の集積回路に向けて、前記別の集積回路内のハードウェア機能の利用可能性について問い合わせるための問い合わせメッセージを送信し、前記別の集積回路から該別の集積回路内の前記ハードウェア機能の利用可能の指標を提供する返答メッセージが受信された場合に前記別の集積回路内の前記ハードウェア機能にアクセスするための構成設定論理、
とを有することを特徴とする集積回路。
【請求項２】
前記インターフェースが、前記問い合わせメッセージがパケット化された形で転送される少なくとも一つのシリアル・データ・リンクを有するポイントツーポイント・バスに結合されることができることを特徴とする、請求項１記載の集積回路。
【請求項３】
前記構成設定論理によって送信される問い合わせメッセージが、ベンダー固有メッセージの送信のために前記バスによって提供されているサポートに従うベンダー固有メッセージであることを特徴とする、請求項２記載の集積回路。
【請求項４】
当該集積回路が利用可能性について問い合わせをする前記ハードウェア機能がDMAコントローラであることを特徴とする、請求項１記載の集積回路。
【請求項５】
前記構成設定論理が前記別の集積回路内の前記ハードウェア機能に、前記別の集積回路によって前記返答メッセージ内において提供されたアドレスを使ってアクセスすることを特徴とする、請求項１記載の集積回路。
【請求項６】
前記構成設定論理が前記ハードウェア機能と対話する機会を求めて調停するために前記ハードウェア機能にアクセスすることを特徴とする、請求項５記載の集積回路。
【請求項７】
前記構成設定論理が、前記問い合わせメッセージ内において当該集積回路のバージョンを同定するバージョン番号を送信することを特徴とする、請求項１記載の集積回路。
【請求項８】
前記構成設定論理が、前記問い合わせメッセージ内において当該集積回路が求めているハードウェア機能のバージョンを同定するバージョン番号を送信することを特徴とする、請求項１記載の集積回路。
【請求項９】
集積回路であって、
バスへのインターフェースと、
前記バスを通じて別の集積回路内と対話するためのハードウェア機能と、
前記バスを通じ、当該集積回路に向けられた、前記ハードウェア機能の利用可能性について問い合わせるための問い合わせメッセージを受信し、前記ハードウェア機能の利用可能性の指標を提供する返答メッセージを送信することによって前記問い合わせメッセージに選択的に返答するための構成設定論理、
とを有することを特徴とする集積回路。
【請求項１０】
前記インターフェースが、前記問い合わせメッセージおよび前記返答メッセージがパケット化された形で転送される少なくとも一つのシリアル・データ・リンクを有するポイントツーポイント・バスに結合されることができることを特徴とする、請求項９記載の集積回路。
【請求項１１】
前記構成設定論理によって送信される返答メッセージが、ベンダー固有メッセージの送信のために前記バスによって提供されているサポートに従うベンダー固有メッセージであることを特徴とする、請求項１０記載の集積回路。
【請求項１２】
前記別の集積回路が利用可能性について問い合わせをする前記ハードウェア機能がDMAコントローラであることを特徴とする、請求項９記載の集積回路。
【請求項１３】
前記構成設定論理が前記返答メッセージ内において、前記別の集積回路が前記ハードウェア機能にアクセスするために使用できるアドレスを提供することを特徴とする、請求項９記載の集積回路。
【請求項１４】
前記ハードウェア機能が該ハードウェア機能と対話する機会について調停するために前記別の集積回路によってアクセスされることをサポートしていることを特徴とする、請求項１３記載の集積回路。
【請求項１５】
前記構成設定論理が、前記返答メッセージ内において前記ハードウェア機能のバージョンを同定するバージョン番号を送信することを特徴とする、請求項９記載の集積回路。
【請求項１６】
前記構成設定論理が、前記返答メッセージ内において、当該集積回路内の前記ハードウェア機能が模倣するハードウェア機能のバージョンを同定するバージョン番号を送信することを特徴とする、請求項９記載の集積回路。
【請求項１７】
バスと、
ハードウェア機能の利用可能性について問い合わせるための問い合わせトランザクションを前記バス上で実行するための第一の構成設定論理を有する、前記バスに結合されたデバイスと、
前記ハードウェア機能を有し、前記問い合わせトランザクションを受信して前記ハードウェア機能の利用可能性の指標をもって選択的に応答するための第二の構成設定論理を有するシステム論理と、
前記システム論理に結合されたプロセッサ、
とを有することを特徴とする電子システム。
【請求項１８】
前記バスがベンダー定義メッセージの転送をサポートしており、前記問い合わせトランザクションが前記バスを介して送信されるベンダー定義問い合わせメッセージであることを特徴とする、請求項１７記載の電子システム。
【請求項１９】
前記バスが、前記問い合わせメッセージがパケット化された形で転送される少なくとも一つのシリアル・データ・リンクを有するポイントツーポイント・バスであることを特徴とする、請求項１８記載の電子システム。
【請求項２０】
前記第一の構成設定論理が、前記問い合わせメッセージ内において、前記デバイスが対話できるハードウェア機能のバージョンを示すバージョン番号を送信することを特徴とする、請求項１８記載の電子システム。
【請求項２１】
前記第二の構成設定論理が、前記第一の構成設定論理からの前記問い合わせメッセージ内のバージョン番号を受信し、それを解析して前記問い合わせメッセージに応答するかどうかを決定することを特徴とする、請求項１８記載の電子システム。
【請求項２２】
前記第一の構成設定論理が、該第一の構成設定論理からの前記問い合わせメッセージ内においてベンダーを同定するコードを送信し、前記第二の構成設定論理は前記コードを解析して前記問い合わせメッセージに応答するかどうかを決定することを特徴とする、請求項１８記載の電子システム。
【請求項２３】
前記バスがベンダー定義メッセージの転送をサポートしており、前記第二の構成設定論理が前記問い合わせトランザクションに対して、前記バスを介して送信されるベンダー定義返答メッセージをもって応答することを特徴とする、請求項１７記載の電子システム。
【請求項２４】
前記バスが、前記返答メッセージがパケット化された形で転送される少なくとも一つのシリアル・データ・リンクを有するポイントツーポイント・バスであることを特徴とする、請求項２３記載の電子システム。
【請求項２５】
前記第二の構成設定論理が、前記返答メッセージ内において前記システム論理が有するハードウェア機能のバージョンを示すバージョン番号を送信することを特徴とする、請求項２３記載の電子システム。
【請求項２６】
前記第一の構成設定論理が、前記第二の構成設定論理からの返答内のバージョン番号を受信し、それを解析して前記ハードウェア機能と対話するかどうかを決定することを特徴とする、請求項２３記載の電子システム。
【請求項２７】
請求項１７記載の電子システムであって、前記バスが分岐樹状構造に編成された複数のバスの一つであり、前記システム論理が基底樹にあってルート複合体と称されることを特徴とする電子システム。
【請求項２８】
請求項２７記載の電子システムであって、前記システム論理が前記バスに結合されており、前記バスが前記ハードウェア機能について問い合わせをするための前記問い合わせトランザクションとしてのメッセージの転送をサポートしており、前記メッセージが前記システム論理に向かわされるのが、該メッセージは前記デバイスに結合され、ルート複合体に向かう任意のバスの反対側にあるデバイスに向けられているという該メッセージ内において与えられる指標を通じてであることを特徴とする電子システム。
【請求項２９】
請求項２７記載の電子システムであって、前記バスが前記ハードウェア機能について問い合わせをするための前記問い合わせトランザクションとしてのメッセージの転送をサポートしており、前記メッセージが前記システム論理に向かわされるのが、該メッセージはルート複合体にあるデバイスに向けられているという該メッセージ内において与えられる指標を通じてであることを特徴とする電子システム。
【請求項３０】
第一のデバイス内の論理によってバスを通じて第二のデバイスに、前記第二のデバイス内のハードウェア機能の利用可能性について問い合わせるための問い合わせメッセージを送信し、
前記第二のデバイス内の論理によって前記問い合わせメッセージを受信し、
前記第二のデバイス内の論理によって前記問い合わせメッセージに対して、前記第二のデバイス内の前記ハードウェア機能の利用可能性の指標を提供する返答メッセージを送信することによって選択的に応答する、
ことを含むことを特徴とする方法。
【請求項３１】
前記問い合わせメッセージ内において、前記第一のデバイスが対話しようと求めるハードウェア機能のバージョンを示すバージョン番号を送信し、
前記第二のデバイス内の論理によって、前記問い合わせメッセージ内において送信されたバージョン番号を解析して返答メッセージを応答として送信するかどうかを決定する、
ことをさらに含むことを特徴とする、請求項３０記載の方法。
【請求項３２】
前記問い合わせメッセージ内において前記第一のデバイスが対話しようと求めるハードウェア機能のバージョンを示すベンダーを同定するコードを送信し、
前記第二のデバイス内の論理によって、前記問い合わせメッセージ内において送信されたベンダーを同定するコードを解析して返答メッセージを応答として送信するかどうかを決定する、
ことをさらに含むことを特徴とする、請求項３０記載の方法。
【請求項３３】
前記返答メッセージ内において、前記第二のデバイスが有しているハードウェア機能のバージョンを示すバージョン番号を送信し、
前記第一のデバイス内の論理によって、前記返答メッセージ内において送信されたバージョン番号を解析して前記ハードウェア機能と対話するかどうかを決定する、
ことをさらに含むことを特徴とする、請求項３０記載の方法。
【請求項３４】
前記第二のデバイス内の論理によって、前記第一のデバイス内の論理への前記返答メッセージ内において、前記ハードウェア機能がアクセス可能であるアドレス位置を指定するアドレスを送信することをさらに含むことを特徴とする、請求項３０記載の方法。
【請求項３５】
請求項３３記載の方法であって、前記ハードウェア機能と対話する決定がなされた場合に、前記第二のデバイス内の前記ハードウェア機能と対話する機会を獲得するために前記第一のデバイス内の論理によって調停することをさらに含むことを特徴とする方法。
【発明の詳細な説明】
【背景技術】
【０００１】
さまざまなコンピュータ・システム・アーキテクチャにより、コンピュータ・システム内の装置間の対話、特にプロセッサの基盤となるチップセット内のI/Oデバイスとコア論理との間の対話を構成設定することに対し、いくつものアプローチが用いられてきた。これまでのいくつかのアプローチは、チップセットおよび／またはチップセットとI/Oデバイスとの間のバスの機能を検出および構成設定するためのさまざまな機能を実行するためにプロセッサによって実行されるファームウェア（不揮発性記憶装置に保存されるソフトウェア）の使用を含んでいる。これまでのいくつかのアプローチはまた、やはりチップセットの機能および／またはそれらの機能と所与のI/Oデバイスとの間の対話を検出および／または構成設定するためのオペレーティング・システムを作り上げるコードの実行の一部としてプロセッサによって実行されるべきデバイスドライバの提供を含んでいる。
【発明の開示】
【発明が解決しようとする課題】
【０００２】
これらのさまざまなアプローチには、コンピュータ・システムが最初に電源投入またはリセットされるときに実行されるファームウェア内のものだろうとオペレーティング・システムに付随するデバイスドライバ・ソフトウェア内のものだろうと、ソフトウェアに依存することから生じるさまざまな欠点がある。何らかのハードウェアの機能を検出および／または構成設定するためにソフトウェアが使われるときは常に、ソフトウェアの選択はハードウェアの選択と組み合わされ、整合しなければならない。これはデバイスドライバの場合には特にエンドユーザーにとっては面倒で混乱のもととなりうる。コンピュータ・システムの典型的なエンドユーザーは自分が使っているコンピュータ・システムがどんなハードウェアで構成されているかを、ましてやそれらのハードウェアにどんなソフトウェアが付随するべきかをほとんど理解していないからである。この難題は、コンピュータ・システムのファームウェア内のハードウェア機能（hardware  feature）を検出（detect）および／または構成設定（configure）するためのソフトウェアの提供によって、エンドユーザーにとっていくぶん緩和される。ファームウェアは典型的にはコンピュータ・システムの製造者によってそのコンピュータ・システムを構成する部品に整合させられているからである。しかし、ハードウェアとソフトウェアとの間でひとたびこの整合が確立され、ソフトウェアがファームウェア内に格納されてしまうと、新しいハードウェアの追加を受け入れるためにそのファームウェアに変更を施すのは面倒なことになりうる（しばしばデバイスドライバの場合よりも面倒である）。しばしば、不揮発性記憶装置にファームウェアの新しい版を「フラッシュする」または「焼き込む」ために特別なユーティリティが必要になるのであるが、ユーティリティの使用をエンドユーザーにとってより簡単にするさまざまな機能を提供してくれるオペレーティング・システムの恩恵なしで使わなければならないというよくある必要性のために、ファームウェアの変更というこの作業はエンドユーザーによって一層難しいものとなりうる。ファームウェアのフラッシュ／焼き込みまたはオペレーティング・システムのデバイスドライバの変更を扱う困難は、ある程度は、コンピュータ・システムに追加される新しいハードウェアに付随して追加的な不揮発性メモリ・デバイスに格納した「オプションROM」ファームウェアを提供することで対処されてきた。しかし、このアプローチは新しいハードウェアに不揮発性メモリデバイスが付随することを必要とし、追加されるハードウェアの性質によってはこれは必ずしも可能ではないこともある。
【０００３】
どのように提供されるかによらずソフトウェアに依存することのさらなる欠点は、ソフトウェアを実行するためには完全に初期化されたプロセッサおよびメモリが必要とされることである。プロセッサおよび／またはメモリが、全くあるいは電源投入またはリセットのあと少なくとも一定期間、利用可能でない電子装置（コンピュータ・システムまたはコンピュータ・システムの部分を含む）の構成もありうるのである。それでも、プロセッサまたはメモリが利用可能でないにもかかわらずハードウェア機能の検出および／または構成設定を進めることができることが望まれることがある。
【０００４】
本発明の目的、特徴および効果は以下の詳細な記述に照らして当業者には明らかとなるであろう。
【発明を実施するための最良の形態】
【０００５】
以下の記述では、説明のため、本発明の完全な理解を与えるために数多くの詳細が述べられる。しかし、特許請求される本発明を実施するためにこれらの個別的な詳細が必要とされないことは当業者には明らかであろう。
【０００６】
特許請求される本発明は、機能性向上のために提供される一つまたは複数のハードウェア機能の利用可能性に関わる問い合わせの作成および回答をするための電子システムのコンポーネントのサポートと、もし存在すればそのようなハードウェア機能のある程度の調停および／または構成設定のサポートとを組み込むことに関わる。以下の議論はハードウェア機能としてたびたびDMAコントローラに言及するが、このハードウェア機能の選択は問い合わせ、調停および／または構成設定が行われる一つの可能なハードウェア機能の例として意図されているのみであり、DMAコントローラへの追加またはその代替として他のハードウェア機能も可能である。さらに、以下の議論はコンピュータ・システムを中心としているが、特許請求される本発明は他の形の電子システムの基盤においても実施されうることが当業者には理解されるであろう。
【０００７】
図１は、あるコンピュータ・システムを用いる実施形態のブロック図である。コンピュータ・システム１００は少なくとも部分的には、プロセッサ１１０、バス１１９、論理１２０、バス１４９およびシステム・メモリ１４０からなる。プロセッサ１１０、バス１１９、論理１２０、バス１４９およびシステム・メモリ１４０は、システム・メモリ１４０内および／またはコンピュータ・システム１００の他のデバイス内などに保存されている機械可読命令を実行することができる、コンピュータ・システム１００のコアの形をなす。しかし、当業者はすぐ認識するであろうように、これはコンピュータ・システム１００の多くの可能なコアの形のほんの一例でしかなく、図示されていない他のバスおよびデバイスをさらに含んでいることもありうる。
【０００８】
さまざまな実施形態において、プロセッサ１１０は多様なタイプのプロセッサのうちのいかなるものでもよく、そのうちには、米国カリフォルニア州サンタクララの会社であるインテル・コーポレーションによって創生された、広く知られ、使用されている「ｘ８６」命令セットの少なくとも一部分を実行することのできるプロセッサも含まれる。また、さまざまな可能な実施形態においては、二つ以上のプロセッサが、二つ以上のプロセッサのサポートを提供するための追加的なバスおよび／またはデバイス（図示せず）とともに存在していてもよい。
【０００９】
論理１２０はバス１１９を介してプロセッサ１１０に結合されており、プロセッサ１１０による命令の実行をサポートするさまざまな機能を実行する。それには、プロセッサ１１０を制御すること、該プロセッサ１１０に、バス１４９を介してやはり論理１２０に結合されているシステム・メモリ１４０へのアクセスを提供することが含まれる。論理１２０はまた、該論理１２０がバス１６９を介して結合されている、コンピュータ・システム１００を構成するその他のデバイスへのアクセスをも提供する。バス１１９、１４９および１６９に結合され、プロセッサ１１０にシステム・メモリ１４０およびバス１６９を介したその他のデバイスへのアクセスを提供することで、論理１２０はこれらのバスの間で一般に「ブリッジ」と称されるものとしてはたらく。ブリッジとしてはたらくことで論理１２０はコンピュータ・システム１００に、バス１４９上でのトランザクション実行における支援のためのメモリ・コントローラ１２２、ならびに、バス１１９および／またはバス１６９を介したトランザクション実行において支援することを含む、論理１２０内のさまざまなハードウェア機能をコンピュータ・システム１００の通常の動作中の使用のために構成設定することにおいて支援するための構成設定論理１２７をも提供する。データのブロックの一部の転送を実行する負担の一部からプロセッサ１１０を解放するため、論理１２０の例示的なハードウェア機能はいくつかの実施例ではDMAコントローラ１３０でありうる。
【００１０】
さまざまな実施形態において、システム・メモリ１４０は多様なタイプのランダムアクセスメモリ（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が含まれる。メモリ・コントローラ１２２およびバス１４９は、一つまたは複数の種類のメモリおよび／またはメモリ・インターフェースのタイミングおよび／またはプロトコル要件をサポートするよう構成される。
【００１１】
図１にも描かれているように、バス１６９は論理１２０をデバイス１７０および１８０に結合する。デバイス１７０および１８０は、多様なタイプのデバイスのうちのいかなるものであってもよく、それにはディスク・コントローラ、コンピュータ・システム１００の外部のデバイスと通信するためのいくつかあるプロトコルのいずれかを使うパラレルまたはシリアルのインターフェース・ポート、グラフィック・コントローラ、リムーバブル固体メディアの接続のためのインターフェース、ブリッジ・デバイス、試験デバイスなどが含まれる。論理１２０と似ていなくもないが、デバイス１７０および１８０は、該デバイス１７０および１８０内のさまざまなハードウェア機能を構成設定することにおいて支援するための構成設定論理１７７および１８７をそれぞれ有する。
【００１２】
可能性としてはコンピュータ・システム１００が電源投入された結果として、あるいは可能性としてはコンピュータ・システムのユーザーがリセットボタンを押すか可能なさまざまな形のソフトウェアを通じてコンピュータ・システム１００の再起動を起こさせることによってコンピュータ・システム１００が「リセット」された結果としてコンピュータ・システム１００が初期化される時点において、プロセッサ１１０は、システム・メモリ１４０（または他のどこか）内に保存されている一連の命令（ソフトウェア）を実行して、プロセッサ１１０をして、構成設定論理１２７、１７７および／または１８７のうちの一つまたは複数にアクセスして論理１２０、デバイス１７０および／またはデバイス１８０を使用のために構成設定するようにさせることができる。構成設定論理１２７、１７７および／または１８７のうちの一つまたは複数へのそのようなアクセスの間、さまざまな構成設定レジスタは、さまざまなハードウェア機能を有効にし、ポートおよびバッファにアドレス範囲を割り当て、バスIDおよびデバイスID番号を割り当てるなどする値をプログラムされうる。いくつかの実施形態では、こうしたレジスタへのアドレス範囲などのプログラミングは、論理１２０、デバイス１７０およびデバイス１８０のそれぞれについて一意的なID値を形成するために必要とされる情報を、構成設定論理１２７、１７７および１８７のそれぞれに提供しうる。他の実施形態では、このレジスタのプログラミングは、論理デバイス１２０、デバイス１７０およびデバイス１８０のそれぞれが、プロセッサ１１０による構成設定論理１２７、１７７および／または１８７へのアクセスを許容するための対話を超えてバス１６９および／またはその他のバスと対話することを許可されるための必須条件であってもよい。
【００１３】
プロセッサ１１０による構成設定論理１２７、１７７および１８７へのアクセスに続いて、デバイス１７０の構成設定論理１７７は、論理１２０のハードウェア機能、可能性としてはDMAコントローラ１３０をデバイス１７０との使用のために検出および構成設定するために構成設定論理１２７にアクセスすることを試みる。そのような試行アクセスをすることにおいて、構成設定論理１７７は、デバイス１７０が実際に論理１２０に接続されていることを確認すべくテストしている。これは可能性としては、論理１２０とデバイス１７０はコンピュータ・システム１００の構築のために同じベンダーから提供されており、したがってデバイス１７０が論理１２０へのこのアクセスを試みるのは、論理１２０に特有でありうる特定のハードウェア機能がデバイス１７０とともに使用するために利用可能かどうかを決定することの一部として、論理１２０が存在していてデバイス１７０に取り付けられているかどうかを判別するために行われる。そのような実施形態では、デバイス１７０がバス１６９を介して論理１２０に結合されていないと判定された場合には（すなわち、図１のデバイス１２０が他の何らかのデバイスでおきかわっていた場合）、いくつかの変形では、構成設定論理１７７は、デバイス１７０の少なくとも一部分を、論理１２０の所望のハードウェア機能の恩恵なしで機能するよう構成設定しうる。あるいは、論理１２０の所望のハードウェア機能なしにデバイス１７０の何らかの部分を動作させるのが不可能であるような他の変形では、構成設定論理１７７はデバイス１７０の少なくとも一部分を無効にしうる。たとえば、デバイス１７０の機能性がデバイス１７０と論理１２０内にあってデータのブロックの転送を支援するDMAコントローラ１３０との間の対話によって向上されるならば、構成設定論理１７７は構成設定論理１２７へのアクセスを試みて、論理１２０がデバイス１７０に結合されていることおよび／またはDMAコントローラ１３０が存在してデバイス１７０との使用のために利用可能であることを判別しようとする。
【００１４】
構成設定論理１２７へのアクセスを試みることにおいて、構成設定論理１７７は、デバイス１７０のベンダーを同定する値および／またはデバイス１７０そのものの識別情報を送信しうる。構成設定論理１７７はまた、該構成設定論理１７７内の一つまたは複数の構成設定レジスタにプログラムされた一つまたは複数のデータを送信することもできる。そのデータは可能性としてはデバイス１７０に、および／またはデバイス１７０にアクセスするためのバス１６９に与えられた識別番号である。構成設定論理１２７は、構成設定論理１７７によって試行アクセスにおいて送られた一つまたは複数の値を調べることで、該試行アクセスをしているデバイスおよび／または該試行アクセスをしているデバイスのベンダーのIDを同定し、それにより構成設定論理１７７による試行アクセスが構成設定論理１２７が応答すべきトランザクションであるかどうかを判定し、および／または構成設定論理１２７がどのように応答すべきかを判定しようとすることができる。たとえば、構成設定論理１７７によって送られた、たとえばデバイス１７０のベンダーを同定する値が構成設定論理１２７が応答すべきベンダーを同定していない場合には、構成設定論理１７７は単に構成設定論理１７７が存在しないかのように試行アクセスを無視してもよい。あるいはまた、構成設定論理１２７は、値の同定におけるそのような不一致に対して可能性としては、バス１６９によって提供される、エラーが起こったことを示すためのプロトコルを使ってエラー信号を出すことによって応答してもよい。しかし、構成設定論理１７７が、構成設定論理１２７によって受容されるべきと判定される何らかの形の同定情報を与える値を伝えてきた場合には、構成設定論理１２７は、求められているハードウェア機能に関して論理１７７にさらなる情報が提供されうる場所へのポインタを提供するアドレスをもって、ならびに／またはデバイス１７０が論理１２０内の求められているハードウェア機能との対話を開始するのに使いうるレジスタおよび／もしくはバッファが見出されうる場所を提供するアドレスをもって応答しうる。二つ以上のデバイス（たとえばデバイス１７０および１８０）が論理１２０内の同じハードウェア機能を利用しようとしうる実施形態においては、複数のデバイスのうちのどれが求められているハードウェア機能の使用を認められるかのある形の調停が、それらの複数のデバイスのうちのどれが最初に構成設定論理１２７にアクセスする試みをしたかに基づいてされうる。そのような実施形態では、たとえば、そのような試行アクセスを行った最初のデバイスのみが構成設定論理１２７によって求められているハードウェア機能の使用を得ることに成功したことを示す仕方で応答され、他のすべてのデバイスは全く応答されない。あるいはまた、そのような実施形態において、求められているハードウェア機能を使用しようとするすべてのデバイスによるそのような試行アクセスのすべてが応答されるが、そうした応答の一つだけがハードウェア機能の使用が成功裏に認可された指標を含んでいるというのでもよい。いずれにせよ、構成設定論理１２７内のレジスタおよび／またはバス１６９に結合されたデバイスによって可読なシス���ム・メモリ１４０内のメモリ位置が与えるビットは、初期にはそのレジスタまたはメモリ位置を最初に読むいかなるデバイスにもそのハードウェア機能が利用可能であることを示すが、その後そのビットは異なる値にセットされ、そのレジスタまたはメモリ位置のその後のすべての読み取り（そのハードウェア機能が利用可能とされたもの以外のデバイスによるものと想定される）は、そのハードウェア機能が利用可能でないことを示すようにできる。すなわち、調停の単純な形として、レジスタまたはメモリ位置において「読まれたらセット」ビットと呼ばれたことのあるものである。
【００１５】
別のデバイスの所与のハードウェア機能を求めるデバイスに与えられうる可能な応答の形のさらなる詳細については、のちに所与のハードウェア機能へのアクセスのためのデバイスどうしの間の可能な調停の形のさらなる詳細とともに議論する。構成設定論理１２７に対してなされる試行アクセスに関しては、さまざまなタイプの試行アクセスが可能である。試行読み取りもしくは書き込みトランザクション、または試行メッセージ送信などである。
【００１６】
いくつかの実施形態では、構成設定論理１７７は、バス１６９を介して可能性としては構成設定論理１２７内の所定のアドレス位置への読み取りトランザクションを試みることによって、構成設定論理１２７へのアクセスを試みる。構成設定論理１７７は、読み取りトランザクションが成功した、すなわち構成設定論理１２７が成功裏にアクセスされた、および／または試行読み取りトランザクションが受け入れられた（あるいは少なくとも拒否されなかった）という指標があるかどうか調べうる（バス１６９が試行トランザクションの成功または失敗を示すフィードバックの提供をサポートしていれば）。構成設定論理１２７へのアクセスの成功がないことは、論理１２０はデバイス１７０がみつけようと試みていたデバイスではない（すなわち、構成設定論理１２７がそもそも存在していないかもしれない）こと、あるいは論理１２０がデバイス１７０がみつけようと試みていたハードウェア機能を有していないこと、あるいは可能性としてはデバイス１７０が論理１２０内にみつけようと試みていたハードウェア機能が論理１２０内に存在してはいるが、デバイス１７０による使用のために利用可能ではない（可能性としては、ハードウェア機能がデバイス１８０のような別のデバイスによる使用のためにすでに予約されていた）ということを示しうる。構成設定論理１２７が試行読み取りトランザクションに対してデータを提供することによって応答するといった構成設定論理１２７へのアクセスの成功は、それ自体が、いくつかの実施形態では、デバイス１７０が実際に論理１２０に接続されていて構成設定論理１２７によって求められているハードウェア機能が論理１２０内に存在していてデバイス１７０による使用のために利用可能であるということの構成設定論理１７７への指標として受け止められうる。あるいはまた、構成設定論理１２７によるデータの提供の成功は、構成設定論理１２７が存在しており、構成設定論理１７７が返されたデータを解析して論理１２０についての特性を決定しうるということ以外のほとんど何ももたらさないのでもよい。該特性には、可能性としては論理１２０のベンダー、論理１２０が構成設定論理１７７によって求められているハードウェア機能、および／または求められているハードウェア機能に関してデバイス１７０がそのハードウェア機能と対話できるようにするために必要とされる諸側面を提供するかどうかが含まれる。
【００１７】
他の実施形態では、構成設定論理１７７は、バス１６９を介してやはり可能性としては構成設定論理１２７内の所定のアドレス位置への書き込みトランザクションを試みることによって、構成設定論理１２７へのアクセスを試みる。ここでもまた、構成設定論理１７７は、書き込みトランザクションが成功した、すなわち構成設定論理１２７が成功裏にアクセスされた、および／または試行書き込みトランザクションが受け入れられた（あるいは少なくとも拒否されなかった）という指標があるかどうか調べうる。構成設定論理１２７へのアクセスの成功がないことは、論理１２０はデバイス１７０がみつけようと試みていたデバイスではない（すなわち、構成設定論理１２７がそもそも存在していないかもしれない）こと、あるいは論理１２０がデバイス１７０がみつけようと試みていたハードウェア機能を有していないこと、あるいは可能性としてはデバイス１７０が論理１２０内にみつけようと試みていたハードウェア機能が論理１２０内に存在してはいるが、デバイス１７０による使用のために利用可能ではない（可能性としては、ハードウェア機能がデバイス１８０のような別のデバイスによる使用のためにすでに予約されていた）ということを示しうる。構成設定論理１２７が試行読み取りトランザクションを受け入れるといった構成設定論理１２７へのアクセスの成功は、それ自体が、いくつかの実施形態では、デバイス１７０が実際に論理１２０に接続されていて構成設定論理１２７によって求められているハードウェア機能が論理１２０内に存在していてデバイス１７０による使用のために利用可能であるということの構成設定論理１７７への指標として受け止められうる。試行書き込み動作は、（いくぶん鍵またはシグネチャ値のように）論理１２０内のハードウェア機能の使用を調整しようと試みている論理１２０に結合されたデバイス（すなわちデバイス１７０）があるということを構成設定論理１２７に示すデータ値を構成設定論理１２７に通信したのでもよい。試行書き込み動作の成功裏の受け入れだけでは、所望のハードウェア機能がみつかり、および／またはデバイス１７０との使用のために利用可能であるということを構成設定論理１７７に示すには十分でないとしてもよく、そのような実施形態では論理１７７は、これらのことの確証を与えるデータが構成設定論理１２７によって提供されるのを待ちうる。その提供は、構成設定論理１２７が逆に構成設定論理１７７に応答として行う書き込み動作を通じてでもよいし、あるいは試行書き込みトランザクションに続いて構成設定論理１７７が実行する読み取りトランザクションにおいて構成設定論理１２７によって返されるデータ値を通じてでもよい。
【００１８】
さらに別の実施形態では、構成設定論理１７７は、バス１６９を通じてメッセージを送信しようと試みることによって構成設定論理１２７にアクセスしようと試みる。ここで、バス１６９はデバイス間のメッセージの送信をサポートしている。構成設定論理１７７は、メッセージ送信が成功した、すなわち構成設定論理１２７が少なくともメッセージを拒否しなかったという指標があるかどうか調べうる（バス１６９がメッセージの試行送信が成功したことを示す指標の提供をサポートしていれば）。構成設定論理１２７へのメッセージ送信の成功がないことは、論理１２０はデバイス１７０がみつけようと試みていたデバイスではない（すなわち、構成設定論理１２７がそもそも存在していないかもしれない）こと、あるいは論理１２０がデバイス１７０がみつけようと試みていたハードウェア機能を有していないこと、あるいは可能性としてはデバイス１７０が論理１２０内にみつけようと試みていたハードウェア機能が論理１２０内に存在してはいるが、デバイス１７０による使用のために利用可能ではない（可能性としては、ハードウェア機能がデバイス１８０のような別のデバイスによる使用のためにすでに予約されていた）ということを示しうる。メッセージ送信の成功を判定することが可能な実施形態では、メッセージ送信の成功は、それ自体が、いくつかの実施形態では、デバイス１７０が実際に論理１２０に接続されていて構成設定論理１２７によって求められているハードウェア機能が論理１２０内に存在していてデバイス１７０による使用のために利用可能であるということの構成設定論理１７７への指標として受け止められうる。あるいはまた、構成設定論理１２７へのメッセージの試行送信は、論理１２０内のハードウェア機能の使用を調整しようと試みている論理１２０に結合されたデバイス（すなわちデバイス１７０）があるということを構成設定論理１２７に示す指標であるか、あるいは指標を伝達した。送信されたメッセージの成功裏の受け入れだけでは、所望のハードウェア機能がみつかり、および／またはデバイス１７０との使用のために利用可能であるということを構成設定論理１７７に示すには十分でないとしてもよく、そのような実施形態では論理１７７は、これらのことの確証を与えるデータが構成設定論理１２７によって提供されるのを待ちうる。その提供は、構成設定論理１２７による構成設定論理１７７への逆のメッセージの送信を通じてでもよい。
【００１９】
図２は、コンピュータ・システムを用いる実施形態のもう一つのブロック図である。図２の番号を振った項目は概して図１の番号項目に対応することが意図されており、図１のコンピュータ・システム１００に似ていなくもない仕方で、コンピュータ・システム２００は少なくとも部分的には、プロセッサ２１０、バス２１９、論理２２０、バス２４９およびシステム・メモリ２４０からなる。コンピュータ・システム１００の場合と同様、当業者は、これがコンピュータ・システム２００の多くの可能なコアの形のほんの一例でしかなく、コンピュータ・システム２００は図示されていない他のバスおよびデバイスをさらに含んでいることもありうることを容易に認識するであろう。
【００２０】
図１の論理１２０と同様に、論理２２０はバス２１９、２４９および２６９を介してそれぞれプロセッサ２１０、システム・メモリ２４０および可能性のある他の諸デバイスに結合されており、プロセッサ２１０による命令の実行をサポートするさまざまな機能を実行する。それには、プロセッサ２１０を制御し、該プロセッサ２１０にシステム・メモリ２４０へのアクセスを提供すること、ブリッジとしてはたらくことが含まれる。さらに、データのブロックの一部の転送を実行する負担の一部からプロセッサ２１０を解放するため、論理２２０の例示的なハードウェア機能はいくつかの実施例ではDMAコントローラ２３０でありうる。
【００２１】
図１のコンピュータ・システム１００を参照して議論した実施形態といくぶん似ているが、コンピュータ・システム２００において、バス２６９は論理２２０をデバイス２７０および２８０に結合している。しかし、コンピュータ・システム１００とは異なり、デバイス２７０および２８０が論理２２０に結合されるのは、バス２６９を通じて直接にではなく、それぞれバス２７９および２８９を通じて、次いで介在デバイス２６０およびバス２６９を通じてである。コンピュータ・システム１００で論理１２０、デバイス１７０およびデバイス１８０の３つすべてを結合するためにバス１６９を使ったのは、「マルチドロップ（multi-drop）」バス構成の例を示していた。そこでは、バス１６９の信号は、多くの広く使われているバス形態の場合に一般的な慣行であるように、３つ以上のデバイスに結合されていた。介在デバイス２６０を使用して３つの異なるバスが実効的に単一のバスの代わりとなるようにすることは、バス２６９、２７９および２８９がポイントツーポイント・バスとされている場合に実施されうる。ただし、そのような変更に対するその他の動機もありえ、それには２つ以上のバス２６９、２７９および２８９の間でのバスおよび／またはバス・プロトコルのタイプの間の変換をする必要性が含まれる。バス２６９、２７９および２８９のうちの一つまたは複数が実際にポイントツーポイント・バスであるような実施形態では、それらの特定のバスのそれぞれの特性に依存して、アドレスおよび／またはデータのさまざまな形の差動信号および／またはシリアル伝送が起こりうる。また、バス２６９、２７９および２８９のうちの一つまたは複数のような実施形態では、介在デバイス２６０を設けることが、複数のポイントツーポイント・バスを論理２２０とのインターフェースをもつ単一のポイントツーポイント・バスに集線するための「スイッチ」としての機能を果たすことが要求されうる。なお、デバイス２６９、２７９および２８９は多様なタイプのデバイスのうちのいかなるものであってもよい。
【００２２】
また、コンピュータ・システム１００の論理１２０、デバイス１７０およびデバイス１８０にいくぶん似て、コンピュータ・システム２００の論理２２０、介在デバイス２６０、デバイス２７０およびデバイス２８０はそれぞれ構成設定論理２２７、２６７、２７７および２８７を具備している。コンピュータ・システム２００が電源投入および／またはリセットされる時点で、ソフトウェアを実行するプロセッサ２１０を通じて機能性および／または構成設定の有効化を許容するためである。ここでもまた、さまざまな実施形態において、構成設定論理２２７、２６７、２７７および／または２８７へのアクセスは、論理２２０、介在デバイス２６０、デバイス２７０およびデバイス２８０の一つまたは複数が、構成設定を実行するために必要とされうるよりも完全にバス２６９、２７９および／または２８９と対話することを許容することへの必須条件であってもよい。
【００２３】
ここでもまた、コンピュータ・システム１００といくぶん似て、コンピュータ・システム２００において、構成設定機能を実行するために構成設定論理２２７、２６７、２７７および／または２８７のそれぞれに対してプロセッサ２１０によるアクセスがなされたのち、デバイス２７０の構成設定論理２７７は、論理２２０のハードウェア機能、可能性としてはDMAコントローラ２３０を検出し、デバイス２７０との使用のために構成設定するために構成設定論理２２７にアクセスしようと試みる。ところが、デバイス２７０とバス２６９および論理２２０の両者との間の介在デバイス２６０およびバス２７９の存在のため、デバイス２７０内の構成設定論理２７７が論理２２０内の構成設定論理２２７にどのようにしてアクセスを試みるかにおいてさまざまな可能な実施形態で若干の相違が生じうる。構成設定論理２７７が構成設定論理２２７へのアクセスを試みるためには、試行アクセスは、構成設定論理２６７または介在デバイス２６０の他の何らかの部分に対して、その試行アクセスが構成設定論理２６７によって返答または応答されることを意図したものではなく、その試行アクセスは何らかの方法で論理２２０内の構成設定論理２２７に渡されるべきであるという何らかの形の指標を組み込んでいる必要がある。図１は、そのような指標が必要でなくてもよい状況を描いていた。いくつかの実施形態では、そのような指標は、そのアクセスのプロトコル内に埋め込まれるアドレスであることができ、そのアドレスが介在デバイス２６０内に存在するものでないと判別されることによってその試行アクセスをさらに論理２２０に中継されるようにすることができる。他の実施形態では、そのような指標は、そのアクセスが特定のデバイス、つまり論理２２０による受信のために意図されていることを同定する値の形であってもよい。試行アクセスをあるデバイスに別のデバイスを通して向かわせるためのさらに別の機構を用いることも、特許請求される本発明の精神および範囲から外れることなく可能である。そのことは当業者は容易に認識するであろう。
【００２４】
図３ａ、３ｂ、３ｃ、３ｄ、３ｅは、試行メッセージトランザクションおよび可能な応答を用いる実施形態を描いている。先に議論したように、いくつかの実施形態では、別のデバイスにある所与のハードウェア機能を検出および／または構成設定しようとするデバイスは、該所与のハードウェア機能を求めることを、前記別のデバイスの論理の一部分にメッセージ送信をサポートするバスを介して前記別のデバイスへのメッセージの試行送信を通じてアクセスしようと試みることによって行う。図３ａ〜ｄを合わせたものは、所与のハードウェア機能を検出および／または構成設定しようとするデバイスが送ろうと試みるパケット化メッセージの少なくともヘッダ部分において伝達される情報の可能なビット編成の特徴を描いている。図３ａ〜ｃおよびｅを合わせたものは、前記試行メッセージへの応答において前記別のデバイスによって送られうるパケット化メッセージの同様な特徴を描いている。いずれの場合にも、描かれたビット編成は、分岐樹状構成に編成された複数のポイントツーポイント・バスを用いるバス・アーキテクチャとともに動作できるよう意図されている。そこを介してアドレス、コマンド、データおよびその他の情報がデジタル・シリアル接続を通じてパケット化された形で転送される。情報のビットの個別の割り当ては特許請求される本発明の精神および範囲内であるためにいかなる一つの標準または慣用に準拠することも必要ではないが、描かれている情報のビットの配列は現在登場してきているPCIエクスプレス・バス規格（この仕様書は現在、米国オレゴン州ポートランドの周辺コンポーネント相互接続特別利益団体（Peripheral  Component  Interconnect  Special  Interest  Group）に注文できる）の要件に準拠することを意図したものである。
【００２５】
倍長語３１０、３２０、３３０および３４０ａは、所与のハードウェア機能を求めているデバイス（すなわち「要求側デバイス」）が前記所与のハードウェア機能が存在しうる別のデバイス（すなわち「目的デバイス」）を試験しようとして送信を試みうるパケット化メッセージの少なくとも最初の４つの倍長語（４バイトのブロック）を構成する。同様に、倍長語３１０、３２０、３３０および３４０ｂは、前記別のデバイスが応答において送信しうるパケット化されたメッセージの少なくとも最初の４つの倍長語を構成する。以下の議論の明確のため、「要求側デバイス」の用語はメッセージを送信するデバイスを表すことを意図されており、「目的デバイス」はそのメッセージが向けられているデバイスを表すことを意図されることに注意しておくべきである。したがって、一方のデバイスによる試行メッセージが他方のデバイスから応答として別のメッセージを引き出すことに成功する場合、「要求側デバイス」および「目的デバイス」の呼称は実際には試行送信および可能な応答送信との間で変わる。
【００２６】
倍長語３１０が送信されるべき４つの倍長語の最初のもので、そのあとに順に倍長語３２０、３３０、そして３４０ａもしくは３４０ｂのどちらかが続く。バイト０内では、そのメッセージのフォーマットが、より多くのデータを伝達するスペースを作るために４つの倍長語からなるヘッダのあとにさらなる倍長語が付加されているものかどうかを示す指標がある（付加されていなければ、４つの倍長語のヘッダがメッセージ全体になりうる）。しかし、やがて見るように、何ら追加的な倍長語を付加することなく、倍長語３４０ａまたは３４０ｂがそのような情報を伝達するために必要とされる全スペースを提供できるかもしれない。また、バイト０内には、そのメッセージが目的デバイスにルーティングされるべき機構の指標もある。一つの選択肢は、コンピュータ・システム内のこれらのバスの分岐樹状構成の基底にあるデバイス（すなわち、「ルート複合体（root  complex）」にあるデバイス）を目的デバイスとして指定することである。もう一つの選択肢は、目的デバイスを、倍長語３３０内に与えられる１６ビットの識別値を用いて指定することである。さらにもう一つの選択肢は、要求側デバイスよりもバスの樹状構成の基底に近い、要求側デバイスに直接接続されたデバイスを目的デバイス（すなわち、ルート複合体のほうの「ローカル受信者（local  receiver）」）として指定することである。別のデバイスにある所与のハードウェア機能を求めるI/Oデバイスが、そのハードウェア機能を求める試行メッセージ中で、ルート複合体を目的デバイスとして指定しうる（求められているハードウェア機能がルート複合体のデバイスの中にありそうだという想定に基づいている）一方、ルート複合体内のデバイスは前記I/Oデバイスの１６ビットの識別値（これはI/Oデバイスからの当初の試行メッセージとともに受信されなければならないはずである）を前記I/Oデバイスを目的デバイスとして指定するために使ったメッセージを用いて応答しうるのでもよい。バイト１内には、このメッセージの他のメッセージに対しての優先度レベル（「トラフィック・クラス」）の指標がある。バイト２内のビットでは、誤り検出および訂正を含む種々のオプションが選択されうる。バイト３全体およびバイト２の一部を埋めるのが、バイト０でこのメッセージのフォーマットがこのヘッダに付加された倍長語を有すると示されている場合に、このヘッダに付加されているデータの倍長語数を示すバイナリー値である。付加される倍長語がなければ、４倍長語のヘッダがメッセージ全体をなす。
【００２７】
倍長語３２０は、倍長語３１０に続いて送信されるべき第二の倍長語である。バイト４内にあるのは、要求側デバイスが結合されているルート複合体のほうに導くバスを同定する値である（バスの分岐樹状構成における各バスは一意的な番号で識別される）。バイト５内にあるのは、要求側デバイスの同定を示す値と、要求側デバイスの当該メッセージを送信している部分（すなわち、要求側デバイス内の「関数（function）」）を示す値である。バイト４および５は合わせて、要求側デバイス（すなわち、当該メッセージを送信するデバイス）を一意的に同定するための要求者IDをなす。バイト６内にあるのは、このメッセージを要求側デバイスによって開始された他のトランザクションから区別するために要求側デバイスによって生成される値である。バイト４、５、６が一緒になって、要求側デバイスと目的デバイスとが一部をなしているコンピュータ・システム内で起こっている他のすべてのトランザクションからこのメッセージを区別するための、このメッセージを一意的に同定するトランザクションIDをなす。バイト７内には、メッセージをベンダーが定義したメッセージ（すなわち、要求側デバイスのベンダーが選んだ目的を果たすメッセージ）として同定する２つの可能な値のうちの一つがある。その２つの値は、このメッセージが目的デバイスによってサポートされていない場合に、目的デバイスがエラーを報告すべきかどうかの選択を提供するものである。いくつかの実施形態では、所与のハードウェア機能を求める要求側デバイスは、目的デバイスがI/Oデバイスによって送信されるベンダー固有メッセージをサポートしていない場合に該目的デバイスがエラーを報告すべきということを指定するこの機構を、所与のハードウェア機能を検出する試みが成功であったかどうかを判定する方法として使用してもよい。あるいはまた、他の実施形態では、目的デバイスがこのベンダー固有メッセージをサポートしていない場合に該目的デバイスがエラーを報告すべきでないということを指定することが望ましいと見なされることもあり、所与のハードウェア機能を求める要求側デバイスは、この販売元固有メッセージに何の応答もないことを、目的デバイス内に所与のハードウェア機能をみつけようとした試みが不成功であったという指標として解釈してもよい。
【００２８】
倍長語３３０は、倍長語３２０に続く、送信されるべき第三の倍長語である。バイト８および９は一緒になって、目的デバイスを一意的に同定するために使用できる目的IDを構成する。これは、要求側デバイスを同定するための倍長語３２０のバイト４および５において使われていたものと同様の編成および解釈をもつビット値を使っている。バイト８および９は、倍長語３１０のバイト０において先に議論されたビットが目的デバイスをバスの分岐樹状集合における「ルート複合体」またはルート複合体に向かうバスの反対側にある「ローカル受信者」を指定するために使われていれば、すべて０で埋めることができる。別のデバイスにある所与のハードウェア機能を検出しようと試みるデバイスが自らの同定を倍長語３２０のバイト４および５で与えなければならないことから、問い合わせをするために送信されたそのメッセージを受信する相手のデバイスは、その同定情報を、応答として返送するメッセージ中において、問い合わせをしているそのデバイスを目的デバイスとして同定するのに使用しうる。バイト１０および１１の両バイトのすべてを占めているのがPCI-SIGによってデバイスのベンダーに割り当てられており、要求側デバイスのベンダーを同定するのに使用できる単一の１６ビット値である。
【００２９】
倍長語３４０ａは、別のデバイス中の所与のハードウェア機能を検出しようとしているデバイスによって送信されるメッセージのヘッダを構成する４つの倍長語の最後のものであり、このメッセージの部分としてこれら４つの倍長語のうち最後に送信されるべきのものである。同様に、倍長語３４０ｂは、所与のハードウェア機能を検出しようとするメッセージの受信への応答としてもう一方のデバイスによって送信されうるメッセージのヘッダを構成する４つの倍長語の最後のものである。所与のハードウェア機能を求めるもとのメッセージと応答として送られうるメッセージは両方ともベンダー固有メッセージであるので、４番目の倍長語（すなわち倍長語３４０ａおよび３４０ｂ）内に置かれるいかなる内容の使用、特性および編成も指定されておらず、ベンダーがこの４番目の倍長語を、該ベンダーに望ましいと見なされるいかなる使用にも供することを許容するようになっている。このベンダー固有型メッセージの非常に非体系的な性質のため、要求側デバイスと目的デバイスの両者とも、送信されるあらゆるベンダー固有メッセージの生成およびその意味の正しい解釈の両方をサポートするよう設計され（あるいは別の何らかの形でとにかく構成され）なければならない。要するに、要求側デバイスと目的デバイスの両方が何らかの形で全く同じ形のベンダー固有メッセージを扱うよう構成または準備されていなければ、目的デバイスが要求側デバイスによって送信されたメッセージを誤って解釈したり、あるいは目的デバイスがメッセージを該目的デバイスによってサポートされていないメッセージとして完全に無視および／または拒否したりすることが起こりうる。したがって、要求側デバイスがこのベンダー固有メッセージを目的デバイス内で所与のハードウェア機能を求めるために使うようにする目的のためには、要求側デバイスは、目的デバイスが受信し、該目的デバイス内で所与のハードウェア機能を特定しようとする試みであると解釈する用意がなければならないようなメッセージを生成し、送信する用意がなければならず、目的デバイスは、要求側デバイスが、前記所与のハードウェア機能が目的デバイス内に成功裏に特定されたという指標として、および可能性としては前記所与のハードウェア機能が要求側デバイスとの使用のために利用可能であるかどうかの指標として解釈する用意のある応答を要求側デバイスに与える用意がなければならない。
【００３０】
あるデバイスが別のデバイス内の所与のハードウェア機能を求める努力を伝えるための値の配列のある可能な実施例が図３ｄに、倍長語３４０ａ内で伝達されるものとして描かれている。ただし、代替的な諸実施例では、そのような値の一部または全部をもう一方のデバイスに伝達するために、倍長語３１０、３２０、３３０および３４０ａから構成されるヘッダに付加される一つまたは複数の倍長語を用いてもよい。図３ｄに描かれるように、バイト１２内には、要求側デバイスから目的デバイスにこのメッセージが要求側デバイスが目的デバイス内に所与のハードウェア機能を求める試みの一部であることを伝えるための、ベンダーによって策定されたコードのための位置が割り当てられる。バイト１３内には、どのハードウェア機能が求められている所与のハードウェア機能であるかを示すための、ベンダーによって策定されたコードのための位置が割り当てられる。
【００３１】
前記あるデバイスが相手デバイス内に所与のハードウェア機能を求める努力に対する相手デバイスによる応答を伝えるための値の配列のある可能な実施例が図３ｅに、倍長語３４０ｂ内で伝達されるものとして描かれている。ただし、代替的な諸実施例では、そのような値の一部または全部を相手デバイスに伝達するために、倍長語３１０、３２０、３３０および３４０ｂから構成されるヘッダに付加される一つまたは複数の倍長語を用いてもよい。図３ｅに描かれるように、バイト１２、１３、１４、１５のすべてを占めているのは、前記あるデバイスによって該あるデバイスによって相手デバイス内に求められている前記所与のハードウェア機能を制御するためにアクセスされうる一つまたは複数のレジスタ（あるいは可能性としては、メモリ・デバイス内で予約されている、可能性としては「仮想」レジスタとしてはたらく一つまたは複数のメモリ位置）の開始アドレスをポイントするアドレスの少なくとも一部分である。そのような実施例において、このアドレスの受信は、前記あるデバイスによって、相手デバイス内の前記所与のハードウェア機能の検出の成功の指標として解釈されうる。
【００３２】
図４は、コンピュータ・システムを用いる実施形態のさらにもう一つのブロック図である。図４の番号を振った項目は概して図１および図２の番号項目に対応することが意図されており、コンピュータ・システム１００および２００に似ていなくもない仕方で、コンピュータ・システム４００は少なくとも部分的には、プロセッサ４１０、バス４１９、論理４２０、バス４４９およびシステム・メモリ４４０からなる。コンピュータ・システム１００および２００の場合と同様、当業者は、これがコンピュータ・システム４００の多くの可能なコアの形のほんの一例でしかなく、コンピュータ・システム４００は図示されていない他のバスおよびデバイスをさらに含んでいることもありうることを容易に認識するであろう。
【００３３】
論理１２０および２２０と同様に、論理４２０はバス４１９、４４９および４６９ならびにバス４８９を介してそれぞれプロセッサ４１０、システム・メモリ４４０および可能性のある他の諸デバイスに結合されており、プロセッサ４１０による命令の実行をサポートするさまざまな機能を実行する。それには、プロセッサ４１０を制御すること、該プロセッサ４１０に、システム・メモリ４４０へのアクセスを提供すること、ブリッジとしてはたらくことが含まれる。さらに、データのブロックの一部の転送を実行する負担の一部からプロセッサ４１０を解放するため、論理４２０の例示的なハードウェア機能はいくつかの実施例ではDMAコントローラ４３０でありうる。
【００３４】
コンピュータ・システム１００および２００を参照して議論した実施形態といくぶん似ているが、コンピュータ・システム４００において、バス４６９および４８９は論理４２０をデバイス４７０および４８０に結合している。しかし、デバイス４８０と論理４２０との結合はバス４８９を通じて直接であり、デバイス４７０との結合はバス４６９のほかに介在論理４６０およびバス４７９を通じた間接的なものである。なお、デバイス２６９、２７９および２８９は多様なタイプのデバイスのうちのいかなるものであってもよい。
【００３５】
また、コンピュータ・システム１００および２００にいくぶん似て、コンピュータ・システム４００の論理４２０、介在デバイス４６０、デバイス４７０およびデバイス４８０はそれぞれ構成設定論理４２７、４６７、４７７および４８７を具備している。コンピュータ・システム４００が電源投入および／またはリセットされる時点で、ソフトウェアを実行するプロセッサ４１０を通じて機能性および／または構成設定の有効化を許容するためである。ここでもまた、さまざまな実施形態において、構成設定論理４２７、４６７、４７７および／または４８７へのアクセスは、論理４２０、介在デバイス４６０、デバイス４７０およびデバイス４８０の一つまたは複数が、構成設定を実行するために必要とされうるよりも完全にバス４６９、４７９および／または４８９と対話することを許容することへの必須条件であってもよい。
【００３６】
いくつかの実施例では、構成設定機能を実行するために構成設定論理４２７、４６７、４７７および／または４８７に対してプロセッサ４１０によるアクセスがなされたのち、デバイス４８０の構成設定論理４８７のメッセージ生成器４８６が、図３ａ〜ｄにおいて描かれたのと同様のヘッダを有するメッセージを、バス４８９を介して、論理４２０の構成設定論理４２７に送信しようと試みる。DMAコントローラ４３０のデバイス４８０との使用を可能にしようとしてである。そのメッセージが提供しうるのは、ベンダーID、デバイスID、デバイス４８０によって実行される単数または複数の関数の指示子および／またはその他のデータであり、メッセージ検出器４２５はこれらを受信し、当該メッセージが論理４２０によってサポートされているかどうかを判定するのに使用しうる。いくつかの変形では、メッセージは、該メッセージに応答すべきかどうかを決めるためのメッセージ検出器４２５使用鍵の形としてメッセージ検出器４２５によって使用されるベンダーIDと、DMAコントローラ４３０のようなハードウェア機能が求められていることをメッセージ検出器４２５に知らせるコードとを与える。いくつかの変形では、メッセージ検出器がそのメッセージがサポートされていないと判定した場合には、メッセージ検出器４２５はそのメッセージを完全に無視しうる。別の変形では、メッセージ検出器４２５はエラー信号を出しうる。この応答の選択はメッセージ内にセットされるフラグ・ビットによって決定されてもよい。
【００３７】
メッセージ検出器４２５がそのメッセージがサポートされているメッセージであると判定した場合、いくつかの変形では、やはり構成設定論理４２７内にあるメッセージ生成器４２６は、デバイス４８０の構成設定論理４８７に、DMAコントローラ４３０の利用可能性を示すメッセージを返送する。あるいはまた、メッセージ検出器４２５によりメッセージがサポートされていると判定されたとき、別の変形では、メッセージ生成器４２６は、DMAコントローラ４３０の状態および／または利用可能性に関するデータを読み取れるDMAコントローラ４３０内のDMAレジスタ４３１および／またはシステム・メモリ４４０内の仮想DMAレジスタ４３２への一つまたは複数のアドレスを提供するメッセージを構成設定論理４８７に送信する。送信されるアドレスはいくつかの変形では連結リスト型のデータ構造へのポインタであってもよい。連結リスト型のデータ構造では複数のデータ項目がさまざまな情報項目を与えることができ、その情報項目が可能性としてはDMAコントローラ４３０の複数の割り当て可能部分であることができ、その一つが構成設定論理４８７によって送信されたもとのメッセージへの応答としてデバイス４８０との使用のために割り当てられうる。さらに別の変形では、アドレスの代わりにデータ構造（可能性としては連結リスト構成の）が構成設定論理４８７に直接送信され、DMAコントローラ４３０のデバイス４８０との使用のための利用可能性に関する指標が構成設定論理４８７に直接提供されてもよい。
【００３８】
他の実施形態では、構成設定機能を実行するために構成設定論理４２７、４６７、４７７および／または４８７に対してプロセッサ４１０によるアクセスがなされたのち、デバイス４７０の構成設定論理４７７のメッセージ生成器４７６が、図３ａ〜ｄにおいて描かれたのと同様のヘッダを有するメッセージを、バス４７９を介して送信しようと試みる。DMAコントローラ４３０のデバイス４８０との使用を可能にしようとしてである。構成設定論理４７７が何らかの方法でコンピュータ・システム４００内のバスおよびデバイスの構成設定および素性に関わる情報を与えられるこうした実施例のいくつかでは、一意的な識別子を用いて論理４２０を指定するメッセージがメッセージ生成器４７６によって生成されることができ、メッセージ生成器４７６はそのような情報をまさにそれを行うために利用しうる。しかし、こうした実施例の他のものでは、構成設定論理４７７には何の指標も与えられず、介在デバイス４６０がデバイス４７０と論理４２０の間に存在して、DMAコントローラ４３０を求めるのに使われるいかなるメッセージも介在デバイス４６０を通して転送される必要があるようにしてもよい。
【００３９】
いくつかの変形では、メッセージ生成器４７６によって送信されるメッセージが介在デバイス４６０を通過して送信されることを保証するため、メッセージは、該メッセージが中継される先の目的デバイスはコンピュータ・システム４００内でルート複合体デバイス（すなわち、バス４６９および４７９が一部をなすコンピュータ・システム４００内のバスの分岐樹状構成の基底にあるデバイス）であるとして指定されたデバイスであるという指標を含んでいてもよい。これは、求められているDMAコントローラ４３０のようなハードウェア機能がルート複合体デバイス内に存在していそうだということが知られている（そして論理４２０がコンピュータ・システム４００のルート複合体の少なくとも一部であると考えられると想定した）場合のことである。ルート複合体デバイスが目的デバイスとして指定されていれば、介在デバイス４６０の構成設定論理４６７内のメッセージ検出器４６５およびメッセージ生成器４６６は、デバイス４７０からバス４７９を介して受信されたメッセージをさらにバス４６９を介して論理４２０に再送信するのに協力しうる。
【００４０】
他の変形では、メッセージは、バス４６９の反対側に存在しているデバイスが何であれそれが目的デバイスであるという指標を含んでいてもよい。その結果、メッセージはメッセージ検出器４６５によって受信され、メッセージ検出器４６５はメッセージ生成器４６６と協力してそのメッセージをさらにバスの分岐樹状構成の基底の方向に送り、その結果、そのメッセージはバス４６９を通って論理４２０へと渡される。このようにメッセージを先に送るのにデバイス４６０の構成設定論理４６７内の論理に頼ることは、デバイス４７０と同じベンダーによって介在デバイス４６０が提供され、介在デバイス４６０に送信されたメッセージ（可能性としては特定のベンダーIDを有するメッセージ）であって介在デバイス４６０によってサポートされていないものは確実に別のデバイスに転送されるようになることを必要としうる。
【００４１】
いかにして構成設定論理４７７によって論理４２０の構成設定論理４２７に向けて送信されたメッセージが最終的にメッセージ検出器４２５によって受信されようとも、デバイス４７０の構成設定論理４７７への返答としてメッセージ生成器４２６が送りうるいかなるメッセージにおいても、メッセージ生成器４７６は、メッセージ生成器４７６からのメッセージによって伝えられる、デバイス４７０を当該メッセージの元来のソースであると一意的に同定する情報を利用して、デバイス４７０を目的デバイスとして一意的に指定する識別子を与えることができる。
【００４２】
さらに別の実施例では、構成設定論理４７７および４８７のそれぞれのメッセージ生成器４７６および４８６の両方が、DMAコントローラ４３０のそれぞれデバイス４７０および４８０との使用を有効にするために論理４２０の構成設定論理４２７に向けてメッセージを送ることを試みることもありうる。DMAコントローラ４３０をデバイス４７０および４８０の両方に利用可能にすることが可能でないようないくつかの変形では、構成設定論理４２７はある形の調停を実行して、DMAコントローラ４３０の少なくとも一部分がそのデバイスとの使用のために割り当てられたという指標をもって応答されるのが前記二つのメッセージのうちの一つだけであるようにすることができる。あるいはまた、両方のデバイス４７０および４８０が、DMAレジスタ４３１または仮想DMAレジスタ４３２内の位置へのポインタとしてのアドレスを与えるメッセージをもって応答され、両方のデバイスがDMAコントローラ４３０の状態および／または利用可能性に関する情報を得ることができるのでもよい。このとき、可能性としては、一つまたは複数の状態ビットが設けられ、それがデバイス４７０および４８０がDMAコントローラ４３０へのアクセスのために互いの間で直接に調整することを許容する。
【００４３】
しかしながら、メッセージ生成器４７６および４８６の両方がDMAコントローラ４３０のそれぞれデバイス４７０および４８０との使用を獲得するためにメッセージの送信を試み、両方のデバイス４７０および４８０にDMAコントローラ４３０と協働する（おそらくはDMAコントローラ４３０の複数の異なる部分を用いて）能力を提供する可能性が存在する場合には、メッセージ生成器４２６は構成設定論理４７７および４８７のそれぞれにメッセージを送り、DMAレジスタ４３１または仮想DMAレジスタ４３２のいずれかの異なる部分へのポインタとしてはたらく異なるアドレスを提供しうる。あるいはまた、構成設定論理４７７および４８７の両方に送られるメッセージは、DMAレジスタ４３１または仮想DMAレジスタ４３２内のデバイス４７０および４８０の両方がアクセスできる単一のデータ構造（可能性としては連結リストの形のデータ構造）をポイントする同じアドレスを含みうる。ただし、前記単一のデータ構造は、その単一のデータ構造の別個の諸部分におけるDMAコントローラ４３０の各デバイスとの使用を調整するための別個のデータを含んでいる。
【００４４】
さらに、デバイス４７０および４８０の両者がDMAコントローラ４３０（あるいは論理４２０によって提供される他のいかなるハードウェア機能でもよい）の少なくとも一部の使用について互いの間で直接に調停することが求められる実施形態または変形においては、デバイス４７０および４８０は、コンピュータ・システム４００の通常の運転中に、論理４２０のそのようなハードウェア機能を共有するために互いの間での調停を選択的に放棄および／または再開することができる。デバイス４７０および４８０の一方または他方が、コンピュータ・システム４００の初期化の一部として限られた時間の間論理４２０の所与のハードウェア機能を要求するだけであり、それ以後はそのハードウェア機能がその後の使用のために別のデバイスに割り当てられることを許容してもよい。
【００４５】
図５は、コンピュータ・システム４００を用いるある実施形態のブロック図である。コンピュータ・システム５００は少なくとも部分的には、プロセッサ５１０、システム論理５２０およびメモリ・デバイス５４０からなる。システム論理５２０はプロセッサ５１０に結合されており、プロセッサ５１０をサポートするさまざまな機能を実行する。それには、該プロセッサ５１０に、やはり論理５２０が結合されているメモリ・デバイス５４０へのアクセスをシステム論理５２０内のメモリ・コントローラ５２２を使って提供することが含まれる。プロセッサ５１０、システム論理５２０およびメモリ・デバイス５４０は、プロセッサ５１０による機械可読命令の実行ならびにメモリ・デバイス５４０内におけるデータおよび命令の記憶をサポートすることができるコンピュータ・システム５００のためのコアの形をなす。あるいはまた、他の実施形態では、メモリ・コントローラ５２２は部分的または完全にプロセッサ５１０内に統合されていてもよい。その結果可能性としては、プロセッサ５１０はメモリ・デバイス５４０に直接結合され、これに直接アクセスできることになる。
【００４６】
いくつかの実施形態では、システム論理５２０はプロセッサ５１０に結合され、プロセッサ５１０に、記憶媒体５９１に担持されているデータおよび／または命令にアクセスするための記憶装置５９０へのアクセスを提供する。記憶媒体５９１は、当業者は理解するであろうように、多様なタイプおよび技術のもののうちいかなるものでもよい。それには、CDもしくはDVD  ROM、磁気もしくは光学式ディスケット、光磁気ディスク、テープ、半導体メモリ、紙上の文字もしくは穿孔またはその他の材料などが含まれる。いくつかの実施形態では、不揮発性記憶装置５４５がシステム論理５２０（またはコンピュータ・システム５００の他の部分）に結合されており、コンピュータ・システム５００が「リセット」または初期化される（たとえばコンピュータ・システム５００が「スイッチオン」または「電源投入」されるときに）時点でコンピュータ・システム５００を通常の使用のために準備するために必要とされる処理を行うために実行される一連の初期命令のための記憶を提供する。そのような実施形態のいくつかの変形では、コンピュータ・システム５００の初期化またはリセットに際して、プロセッサ５１０は不揮発性記憶装置５４５にアクセスして、メモリ・コントローラ５２２をCPU５１０に対するメモリ・デバイス５４０へのアクセス提供という通常の使用のために準備するために実行されるべき命令を取得し、ならびに／または構成設定論理５２７および５７７を介してシステム論理５２０および５７０を構成設定する。これらの同じ取得された命令がシステム論理５２０を記憶装置５９０および該記憶装置５９０によって使用されうる任意の形の記憶媒体５９１へのアクセス提供という通常の使用のために準備するために実行されるのでもよい。
【００４７】
プロセッサ５１０はさらに、記憶媒体５９１または不揮発性記憶装置５４５のいずれかに保存され、プロセッサ５１０によって実行される命令によって、構成設定論理５２７および５７７の一方または両方の中に担持されるソフトウェアの一部、データ構造、ゲートアレイ設定および／またはマイクロコードをインストールするようにさせられうる。これらが構成設定論理５２７をしてシステム論理内のハードウェア機能のデバイス５７０との使用を獲得するためにバス５７９を介したトランザクションを試みさせ、および／または、構成設定論理５７７をしてそのようなトランザクションの試みに対して、求められているハードウェア機能の使用をデバイス５７０に提供することによって応答させる。
【００４８】
図６はある実施形態のフローチャートである。６１０において、ある特定のハードウェア機能を求めるデバイスが、そのハードウェア機能を有するかもしれないデバイスとのトランザクションを試みる。６２０において、所与のハードウェア機能を求めるデバイスからのその試行トランザクションが、そのハードウェア機能を有するかもしれないデバイスによって受信される。６２２において、そのハードウェア機能を有するかもしれないデバイス内の論理が試行トランザクションがサポートされていない、すなわち、そのハードウェア機能を有するかもしれないデバイスがそのハードウェア機能を有していないと判定した場合、６２４でエラー信号が出される。しかし、もし６２２でそのハードウェア機能を有するかもしれないデバイスが実際にそのハードウェア機能を有しており、したがって試行トランザクションがサポートされていると判定された場合、６３０において、そのハードウェア機能が、そのハードウェア機能を求めるデバイスとの使用のために利用可能であるかどうかを判定するための検査が行われる。６３０において、そのハードウェア機能がそのハードウェア機能を求めるデバイスとの使用のために利用可能でない場合、６３２において、そのハードウェア機能が利用可能でないという指標がそのハードウェア機能を求めるデバイスに送られる。しかし、もし６３０において、そのハードウェア機能がそのハードウェア機能を求めるデバイスとの使用のために利用可能であると判定された場合、６３４において、そのハードウェア機能が利用可能であるという指標がそのハードウェア機能を求めるデバイスに送られる。
【００４９】
代替的な諸実施形態では、６２２での試行トランザクションがサポートされていないという判定の結果、６２４においてエラー信号を出す代わりに、試行トランザクションが単に無視されるのでもよい。また、他の諸実施形態では、６３４で送られるハードウェア機能利用可能の指標に、ハードウェア機能を求めるデバイスがそのハードウェア機能を構成設定および／または使用できるようにするのを支援するための、データまたはレジスタもしくはメモリ位置をポイントするアドレスが付随していてもよい。
【００５０】
図７はある実施形態のフローチャートである。７１０において、ある特定のハードウェア機能を求めるデバイスが、そのハードウェア機能を有するかもしれない目的デバイスにメッセージを送信することを試みる。７２０において、そのメッセージが目的デバイスによって受信される。７２２において、目的デバイス内の論理が試行トランザクションがサポートされていない、すなわち、目的デバイスがそのハードウェア機能を有していないと判定した場合、そのメッセージは７３０において、目的デバイスがさらなるサポートを提供するベンダー用IDを含んでいるかどうかを決める検査がされる。７３０においてベンダーIDがサポートされていれば、７３２においてメッセージは要求側デバイスによって求められているハードウェア機能を有するかもしれない別のデバイスに渡される（前記目的デバイスがバスの階層構造中、メッセージを渡せる別のデバイスがないような位置にあるのでない限り）。しかし、もし７２２において、目的デバイスが確かにそのハードウェア機能を有しており、よってその試行トランザクションがサポートされていると判定された場合、７４０において、そのハードウェア機能が要求側デバイスとの使用のために利用可能であるかどうかを決める検査がなされる。７４０においてそのハードウェア機能が要求側デバイスとの使用のために利用可能でなければ、７４２においてそのハードウェア機能が利用可能でないことを示すメッセージが要求側デバイスに送られる。しかし、もし７４０においてそのハードウェア機能が要求側デバイスとの使用のために利用可能であると判定されれば、７４４においてそのハードウェア機能が利用可能であることを示し、そのハードウェア機能に関するデータにアクセスするためのポインタのはたらきをするアドレスを提供するメッセージが送られる。
【００５１】
図８ａ、８ｂ、８ｃは、メッセージの送信をサポートするバスを介した試行メッセージトランザクションおよび可能な応答を用いるもう一つの実施形態を描いている。図８ａと８ｂは合わせて、所与のハードウェア機能を検出および／または構成設定しようとするデバイスが送ることを試みるパケット化メッセージの少なくともヘッダ部分において伝達される情報の可能なビット編成の特徴を描いている。図８ａと８ｃは合わせて、前記試行メッセージへの応答において他方のデバイスから送られうるパケット化メッセージの同様な特徴を描いている。いずれの場合にも、描かれたビット編成は、分岐樹状構成に編成された複数のポイントツーポイント・バスを用いるバス・アーキテクチャとともに動作できることが意図されている。そこを介してアドレス、コマンド、データおよびその他の情報がデジタル・シリアル接続を通じてパケット化された形で転送される。図３ａ〜ｅの場合と同様、情報のビットの個別の割り当ては特許請求される本発明の精神および範囲内であるためにいかなる一つの標準または慣用に準拠することも必要ではないが、描かれている情報のビットの配列は現在登場してきているPCIエクスプレス・バス規格の要件に準拠することを意図したものである。
【００５２】
倍長語８１０、８２０、８３０および８４０は、所与のハードウェア機能を求めているデバイスが前記所与のハードウェア機能が存在しうる別のデバイスを試験しようとして送信を試みうるパケット化メッセージ、前記別のデバイスが応答において送信しうるパケット化メッセージの両方の、少なくとも最初の４つの倍長語（４バイトのブロック）を構成する。明快のため、図８ａの倍長語８１０、８２０、８３０はそれぞれ図３ａ〜ｃの倍長語３１０、３２０、３３０とほぼ同一である。顕著な違いは倍長語８４０に始まる後半の倍長語により多い傾向がある。そこで、以下の議論はどのような面が倍長語３１０、３２０、３３０、３４０ａおよび３４０ｂと異なっているかにより焦点を当てるようにする。ほとんど同じ面については、読者は図３ａ〜ｅに対応する先の記述を参照されたい。
【００５３】
倍長語８１０が送信されるべき最初の倍長語で、そのあとに順に倍長語８２０、８３０などが続く。倍長語８１０についての多くは倍長語３１０と同一であるが、倍長語８１０が一部をなしているメッセージには、データのための追加的なスペースを与えるために追加的な倍長語が付加されている。よって、倍長語８１０のバイト０のビット６および５はそれぞれ、追加的な倍長語があることを示すためのバイナリーの１の値を含んでいる。バイト３全体およびバイト２の一部を埋めるのが、バイト０でこのメッセージのフォーマットがこのヘッダに付加された倍長語を有すると示されている場合に、所与のメッセージのヘッダに付加されるデータの倍長語数を示す１０ビットのバイナリー値である。のちにより詳しく議論するように、付加される倍長語がないヘッダの一部であり、結果としてこの１０ビット値が０で埋められる倍長語３１０とは異なり、倍長語８１０については、別のデバイスにあるハードウェア機能を検出しようとするデバイスによって送られるメッセージには１つの付加された倍長語があり、前記別のデバイスによって応答として送られうるメッセージには４つの付加された倍長語がある。よって、ハードウェア機能を検出しようとするメッセージの場合、この１０ビット値はバイナリーで00:0000:0001となり、他方、ありうる返答メッセージの場合、この１０ビット値はバイナリーで00:0000:0100となる。
【００５４】
倍長語８２０は倍長語３１０に続いて送信されるべき第２の倍長語であり、ほぼ倍長語３２０と同一である。また、倍長語３３０は倍長語３２０に続いて送信されるべき第３の倍長語であり、倍長語８３０とほぼ同一である。
【００５５】
倍長語８４０は別のデバイス内に所与のハードウェア機能を検出しようとするデバイスによって送信されるメッセージ両方のヘッダを構成する４つの倍長語の最後のものであり、このメッセージの部分としてこれら４つの倍長語のうち最後に送信されるべきものである。よって、倍長語３４０ａと３４０ｂのどちらとも非常に異なっている。倍長語８４０のバイト１２、１３、１４は不使用であり、倍長語８４０のバイト１５は８ビットのベンダー定義メッセージコードを伝えうる。ある実施例では、この８ビットコードは、当該メッセージが一般的に目的装置内にあるハードウェア機能を検出しようとしてあるデバイスによって送られているという指標を与えるためのバイナリー値の0000:0010でありうる。あるいは別の実施例では、この同じ８ビットコードが、当該メッセージが目的装置内の（単数または複数の）特定のハードウェア機能を検出しようとしてあるデバイスによって送られているという指標を与えることもありうる。もう一つの実施例では、この８ビットコードは、当該メッセージが前記別のデバイス内の一つまたは複数のハードウェア機能を求める前記あるデバイスによって送信されたメッセージへの応答として前記あるデバイスに前記別のデバイスによって返送されているメッセージであるという、および／または応答として送られている当該メッセージが前記あるデバイスが一つまたは複数のハードウェア機能にアクセスしうるアドレスを伝達するものであるという指標を与えるためのバイナリー値0000:0011でありうる。
【００５６】
倍長語８５０ａは別のデバイス内のハードウェア機能を検出しようとするデバイスによって送信されるメッセージに属する一つの付加された倍長語である。倍長語８５０ａのバイト１６は一組の４ビット値を有しており、それらは大小のバージョン番号を示している。ある実施例では、大小のバージョン番号は、前記あるデバイスが求めているハードウェア機能のバージョン（より正確には、おそらくはどの実装版か）を示す。これは前記あるデバイスが前記ハードウェア機能のどのバージョンと相互運用可能（あるいはコンピュータ業界において使われる一般的な用語では「互換」）かを前記別のデバイスに示す方法として使われる。別の実施例では、大小のバージョン番号は前記あるデバイス自身のバージョン（おそらくは実装版）を示す。前記別のデバイスはこの大小バージョン番号を、応答としてメッセージを送信するかどうかを決定するのに使用するのでもよい。これは、前記あるデバイスと前記ハードウェア機能との間の相互運用性がないような場合に応答の不在を提供し、当該ハードウェア機能が単に前記別のデバイスに存在していない状況を可能性として模倣するために、あるいは前記別のデバイスが前記ハードウェア機能を検出しようとする前記あるデバイスによって送られたメッセージを単にサポートしていない状況を模倣するために望ましいとされうることである。
【００５７】
倍長語８５０ｂおよび８６０は、対話しようと求めるハードウェア機能を検出しようとしてあるデバイスによって送信されたメッセージを受信するのに応答して別のデバイスによって送信されうるメッセージに属する４つの付加された倍長語のうちの最初の２つである。倍長語８５０ｂおよび８６０は合わせて、前記ハードウェア機能を検出しようと求める前記あるデバイスによって前記ハードウェア機能との対話のためにアクセスされうるレジスタおよび／またはメモリ位置（可能性としては仮想レジスタのはたらきをするメモリ位置）のアドレス位置を指定する最大６４ビット幅の少なくとも一つのアドレスを含んでいる。いくつかの実施例では、倍長語８５０ｂおよび８６０の両者によって与えられる６４ビット内で伝達される値は、アドレスの代わりに、またはアドレスに加えて他の情報を伝達してもよい。たとえば、これらの６４ビットのうちの少なくとも部分集合における全部０，全部１または他の何らかの特定のバイナリー値がハードウェア機能の状態の指標を伝達しうる。ハードウェア機能の状態とはたとえば、利用可能性の不在（可能性としては単に一時的なものであり、これは前記あるデバイスは、後刻前記ハードウェア機能へのアクセスを獲得するためにもう一度試行をするべきであるということを含意している）、あるいは前記ハードウェア機能へのアクセスを与えられたさらにもう一つのデバイスとの調停に勝つことに成功しなかったこと、などである。
【００５８】
倍長語８７０は、倍長語８５０ｂおよび８６０に続いて、対話しようと求めるハードウェア機能を検出しようとしてあるデバイスによって送信されたメッセージを受信するのに応答して別のデバイスによって送信されうるメッセージに属する４つの付加された倍長語のうちの第３のものである。倍長語８７０のバイト２４、２５、２７はリザーブされている。可能性としては他の目的のため、あるいは全く不使用とするためである。倍長語８７０のバイト２６は大小のバージョン番号を示す一対の４ビット値を含んでいる。ある実施例では、大小のバージョン番号は、前記別のデバイスが提供するハードウェア機能のバージョン（より正確には、おそらくはどの実装版か）を示す。これは前記ハードウェア機能を求めている前記あるデバイスに対して、前記ハードウェア機能のどのバージョンが使用のために利用可能であるかを示す方法として使われる。別の実施例では、大小のバージョン番号は前記別のデバイス自身のバージョンを示す。さらに別の実施例では、大小のバージョン番号は、前記別のデバイスが何らかの仕方で模倣できるハードウェア機能のバージョンを指定してもよい。そのハードウェア機能を求めている前記あるデバイスは、該別のデバイスによって与えられるその大小のバージョン番号を、そのハードウェア機能と正しく対話することが可能であるかどうかを判定するのに用いることができるのでもよい。さらに別の実施例では、前記あるデバイスと前記別のデバイス内の前記ハードウェア機能との間の対話が可能であるかどうかの判定が、前記あるデバイスおよび別のデバイスの両者によってなされうるのでもよい。各デバイスが受け取った大小のバージョン番号を検査して、前記のような対話に従事するために必要とされる（あるいは所望の）相互運用性（またはその欠如）の指標があるかどうかを検査するのである。そのような大および／または小のバージョン番号の検査は、一方のデバイスによって実行されようと両方のデバイスによって実行されようと、エンドユーザーが相互運用性やその欠如についての理解がなくても異なるデバイスの対の組み合わせを選べる、よってデバイス自身が自律的にこの決定を行うことができるようになっている場合に望ましいと見なされうる。
【００５９】
所与のハードウェア機能を検出しようとするもとのメッセージおよび応答として送られうるメッセージは両方ともベンダー固有メッセージであるので、ヘッダに付加される倍長語（すなわち、倍長語８５０ａまたは諸倍長語８５０ｂ、８６０、８７０、８８０）内に置かれるいかなる内容の使用、特性および編成も指定されておらず、ベンダーがこの４番目の倍長語を、該ベンダーに望ましいと見なされるいかなる使用にも供することを許容するようになっている。図３ａ〜ｅのメッセージと同様、このベンダー固有型メッセージの非常に非体系的な性質のため、要求側デバイスと目的デバイスの両者とも、送信されるあらゆるベンダー固有メッセージの生成およびその意味の正しい解釈の両方をサポートするよう設計され（あるいは別の何らかの形でとにかく構成され）なければならない。要するに、要求側デバイスと目的デバイスの両方が何らかの形で全く同じ形のベンダー固有メッセージを扱うよう構成または準備されていなければ、目的デバイスが要求側デバイスによって送信されたメッセージを誤って解釈したり、あるいは目的デバイスがメッセージを該目的デバイスによってサポートされていないメッセージとして完全に無視および／または拒否したりすることが起こりうる。したがって、要求側デバイスがこのベンダー固有メッセージを目的デバイス内で所与のハードウェア機能を求めるために使うようにする目的のためには、要求側デバイスは、目的デバイスが受信し、該目的デバイス内で所与のハードウェア機能を特定しようとする試みであると解釈する用意がなければならないようなメッセージを生成し、送信する用意がなければならず、目的デバイスは、要求側デバイスが、前記所与のハードウェア機能が目的デバイス内に成功裏に特定されたという指標として、および可能性としては前記所与のハードウェア機能が要求側デバイスとの使用のために利用可能であるかどうかの指標として解釈する用意のある応答を要求側デバイスに与える用意がなければならない。
【００６０】
倍長語８８０は、倍長語８５０ｂ、８６０および８７０に続いて、対話しようと求めるハードウェア機能を検出しようとしてあるデバイスによって送信されたメッセージを受信するのに応答して別のデバイスによって送信されうるメッセージに属する４つの付加された倍長語のうちの第４のものである。バイト２８から３１のすべてはリザーブされている。可能性としては将来ありうる他の用途のためである。
【００６１】
図９は、さらに一つの実施形態のフローチャートである。９１０において、ある特定のハードウェア機能を求める要求側デバイスが、そのハードウェア機能を有するかもしれない目的デバイスにメッセージを送信することを試みる。９２０において、そのメッセージが目的デバイスによって受信される。９３０において、そのハードウェア機能がその要求側デバイスとの使用のために利用可能であるかどうかを判定するための検査が行われる。９３０においてそのハードウェア機能がその要求側デバイスとの使用のために利用可能でなければ、９４０においてそのハードウェア機能が利用可能でないことを示すメッセージが要求側デバイスに送られる。しかし、もし９３０において、そのハードウェア機能が要求側デバイスとの使用のために利用可能であると判定された場合、要求側デバイスによって前記試みのうちに送られたメッセージとともに受信されたバージョン番号が９５０において検査される。要求側デバイスが問い合わせをしているハードウェア機能のバージョンが目的デバイスが包有しているものと同じであるか、あるいは少なくとも目的デバイスが包有しているバージョンと相互運用可能であり、要求側デバイスが目的デバイス内のハードウェア機能のバージョンと正しく対話できるかどうかを判定するためである。９５０においてハードウェア機能のバージョンがもとの試行メッセージにおいて示されているバージョンと同じでもなく、要求側デバイスと相互運用可能でもないと見出された場合には、９４０においてそのハードウェア機能が利用可能でないことを示すメッセージが送られる。そうでない場合には、そのハードウェア機能が利用可能であることを示し、そのハードウェア機能に関するデータにアクセスするためのポインタのはたらきをするアドレスを提供するメッセージが９６０において送られる。
【００６２】
本発明は、さまざまな可能な実施形態に関連して記載されてきた。以上の記述に照らして、当業者には数多くの代替、修正、変形および用途が明らかとなることは明白である。本発明がコンピュータ・システム以外の、オーディオ／ビデオ娯楽装置、乗り物の制御装置、電子回路によって制御される機器などといった電子装置の基盤において実施されうることも、当業者には理解されるであろう。
【図面の簡単な説明】
【００６３】
【図１】コンピュータ・システムを用いる実施形態のブロック図である。
【図２】コンピュータ・システムを用いる他の実施形態のもう一つのブロック図である。
【図３ａ】ハードウェア機能を求めるメッセージの試行送信を用いる実施形態のメッセージの詳細を描く図の一部である。
【図３ｂ】ハードウェア機能を求めるメッセージの試行送信を用いる実施形態のメッセージの詳細を描く図の一部である。
【図３ｃ】ハードウェア機能を求めるメッセージの試行送信を用いる実施形態のメッセージの詳細を描く図の一部である。
【図３ｄ】ハードウェア機能を求めるメッセージの試行送信を用いる実施形態のメッセージの詳細を描く図の一部である。
【図３ｅ】ハードウェア機能を求めるメッセージの試行送信を用いる実施形態のメッセージの詳細を描く図の一部である。
【図４】コンピュータ・システムを用いる他の実施形態のさらにもう一つのブロック図である。
【図５】コンピュータ・システムを用いる他の実施形態のさらにもう一つのブロック図である。
【図６】ある実施形態のフローチャートである。
【図７】別の実施形態のフローチャートである。
【図８ａ】ハードウェア機能を求めるメッセージの試行送信を用いるもう一つの実施形態のメッセージの詳細を描く図の一部である。
【図８ｂ】ハードウェア機能を求めるメッセージの試行送信を用いるもう一つの実施形態のメッセージの詳細を描く図の一部である。
【図８ｃ】ハードウェア機能を求めるメッセージの試行送信を用いるもう一つの実施形態のメッセージの詳細を描く図の一部である。
【図９】さらに別の実施形態のフローチャートである。
【図１】
2007519998.tif 000003
【図２】
2007519998.tif 000004
【図３ａ】
2007519998.tif 000005
【図３ｂ】
2007519998.tif 000006
【図３ｃ】
2007519998.tif 000007
【図３ｄ】
2007519998.tif 000008
【図３ｅ】
2007519998.tif 000009
【図４】
2007519998.tif 000010
【図５】
2007519998.tif 000011
【図６】
2007519998.tif 000012
【図７】
2007519998.tif 000013
【図８ａ】
2007519998.tif 000014
【図８ｂ】
2007519998.tif 000015
【図８ｃ】
2007519998.tif 000016
【図９】
2007519998.tif 000017
【国際調査報告】
2007519998.tif 000018
2007519998.tif 000019
2007519998.tif 000020