(57)【要約】【課題】デバイスモデルと上層プロトコルを複数のバス実装に結びつけることができる抽象化システムを介して、バスプロトコルとネットワークの統合を容易にするシステムおよび方法を提供する。【解決手段】そのような抽象化システムは、優先度に従ってメッセージを転送するためのバス間の共通の言語を提供することができる。例えば、制御メッセージのためのメッセージング移送コンポーネント、高優先度のためのストリーミングコンポーネント、および低優先度のための大容量転送コンポーネントのセマンティックが提供される。また、発見コンポーネントは、バスまたはネットワーク上のデバイスを識別することができ、関連付けコンポーネントはデバイス間に確立された信頼を判定し、デバイスまたはサービスを認証する。【選択図】図１
2006190280.tif 000002
【特許請求の範囲】
【請求項１】
バスプロトコルまたはネットワークの統合を容易にするシステムであって、
デバイスモデルおよび上層プロトコルを複数のバス実装またはネットワークに結びつける抽象化システムであって、前記抽象化システムは、
デバイスがお互いを発見するためのシグナリング機構を備える発見コンポーネントと、
前記デバイスを制御するための制御メッセージを移送するメッセージング移送コンポーネントと、を含むこと、
を備えることを特徴とするシステム。
【請求項２】
前記抽象化システムは、前記デバイス間に確立された信頼の判定を容易にすることと、事前に設定された信用証明を用いることによって前記デバイスまたはサービスを認証すること、の少なくとも１つを行う関連付けコンポーネント、をさらに含むことを特徴とする請求項１に記載のシステム。
【請求項３】
前記抽象化システムは、前記デバイス間での時間が重要な情報の送達を容易にするストリーミングコンポーネントをさらに含むことを特徴とする請求項１に記載のシステム。
【請求項４】
前記抽象化システムは、低優先度の項目の送達を容易にする大容量転送コンポーネントをさらに含むことを特徴とする請求項１に記載のシステム。
【請求項５】
前記抽象化システムは、あるバスを知らないアプリケーションが前記バスを使用することを可能にすることを特徴とする請求項１に記載のシステム。
【請求項６】
前記バス抽象化システムは、複数の異種のバスにわたって１つのアプリケーションプログラムインタフェースを供給することを特徴とする請求項１に記載のシステム。
【請求項７】
前記バス抽象化システムは、プロトコルバスおよびインターネットプロトコル間のデバイスクラスのサポートの共有を容易にすることを特徴とする請求項１に記載のシステム。
【請求項８】
前記抽象化システムと対話する、バスの一部である適合コンポーネントをさらに含むことを特徴とする請求項１に記載のシステム。
【請求項９】
前記バス抽象化システムは、複数のバス技術にまたがってデバイスモデルを再使用することを特徴とする請求項１に記載のシステム。
【請求項１０】
バスプロトコルを統合する方法であって、
抽象化システムを介して、デバイスモデルおよび上層プロトコルを複数のバス実装またはネットワークに結びつけるステップと、
メッセージが宛先として転送されるデバイスを見つけるステップと、
を備えることを特徴とする方法。
【請求項１１】
ストリーミングコンポーネントを用いて時間が重要な情報を転送するステップをさらに備えることを特徴とする請求項１０に記載の方法。
【請求項１２】
大容量転送コンポーネントを用いて前記メッセージを転送するステップをさらに備えることを特徴とする請求項１０に記載の方法。
【請求項１３】
非同期式または等時式の少なくとも１つの方法で、前記メッセージを転送するステップをさらに備えることを特徴とする請求項１０に記載の方法。
【請求項１４】
請求項１０に記載の方法を実行するコンピュータ実行可能命令が記憶されたことを特徴とするコンピュータ読取り可能媒体。
【請求項１５】
データ構造が記憶されたコンピュータ読取り可能媒体であって、前記データ構造は、
デバイスモデルと上層プロトコルを、異なるバス技術を有する複数のバスに結び付けて、前記異なるバス技術の詳細を知らないアプリケーションが前記複数のバスを使用することを可能にするコンピュータ実行可能コンポーネントを備え、前記コンピュータ実行可能コンポーネントは、前記アプリケーションとデバイスが前記複数のバス上で相互を発見するためのシグナリング機構を提供するコンピュータ実行可能コンポーネントをさらに含むことを特徴とするコンピュータ読取り可能媒体。
【請求項１６】
前記コンピュータ実行可能コンポーネントは、前記デバイス間に確立された信頼の判定を容易にする追加的なコンピュータ実行可能コンポーネントを含むことを特徴とする請求項１５に記載のコンピュータ読取り可能媒体。
【請求項１７】
前記コンピュータ実行可能コンポーネントは、前記デバイス間での時間が重要な情報の送達を容易にする別のコンピュータ実行可能コンポーネントを含むことを特徴とする請求項１５に記載のコンピュータ読取り可能媒体。
【請求項１８】
前記コンピュータ実行可能コンポーネントは、プロトコルバスおよびインターネットプロトコル間のデバイスクラスのサポートの共有を容易にすることを特徴とする請求項１５に記載のコンピュータ読取り可能媒体。
【請求項１９】
前記コンピュータ実行可能コンポーネントは、複数のバス技術にまたがってデバイスモデルを再使用することを特徴とする請求項１５に記載のコンピュータ読取り可能媒体。
【請求項２０】
前記コンピュータ実行可能コンポーネントは、アプリケーションが前記複数のバス上のデバイスを参照する標準の方式を提供するアドレス指定方式を備えることを特徴とする請求項１５に記載のコンピュータ読取り可能媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般にはネットワークおよびバスシステムに関し、より詳細には、バスおよび／またはネットワークを統合するための、プロトコルバス間および／またはネットワーク間のバス抽象化のプログラミングモデルに関する。
【背景技術】
【０００２】
コンピュータ技術（マイクロプロセッサの速度、メモリ容量、データ転送の帯域幅、ソフトウェア機能など）の大きな進歩は、一般に、各種の産業におけるコンピュータ利用の増加の一因となっている。通例は、しばしばサーバアレイとして構成される、強力さを増し続けるサーバシステムが提供され、例えばワールドワイドウェブなどの外部ソースから発される要求に対応する。そのようなネットワーク環境では、周辺機器およびデバイスとコンピュータとのインタフェースをとるために複数のバス標準が用いられる場合がある。例えば、様々なデータ速度要件を有するＵＳＢデバイスには、１．５ｍｂｐｓ、１２ｍｂｐｓ、４８０ｍｂｐｓの３つの伝送速度をサポートする、独自のプロトコルを有するＵＳＢ（ユニバーサルシリアルバス）を用いることができる。また、ホストコンピュータ内の通信ソフトウェアとハードウェアが、通信ネットワークとＵＳＢとの間の接続を仲介することができる。多くの従来のプロトコルと同様に、ＵＳＢプロトコルは、複数の層からなる階層化プロトコルである。そのような層の１つは、ＵＳＢの電気的な仕様を定義する物理層である。もう１つの層は、ＵＳＢで許容されるトランザクションのタイプ（すなわちＵＳＢトランザクションのフォーマット）を定義するデータリンク層である。
【０００３】
別のバスプロトコルＩＥＥＥ１３９４は、現在我々がＵＳＢを介して接続するデバイスの多くが（そのデバイスがＩＥＥＥ１３９４をサポートすれば）ＩＥＥＥ１３９４を介しても接続することができる点で、現在のパーソナルコンピュータで利用できるＵＳＢ標準に類似している。また、ＩＥＥＥ１３９４の等時性（ｉｓｏｃｈｒｏｎｏｕｓ）トランザクションのサポートは、各トランザクションで固定された量のデータを送信するデバイスを接続するのに理想的であり、その場合トランザクションは、等しい間隔を空けられる。ＩＥＥＥ１３９４プロトコルモデルには、リンク層と多く対話する物理層などの複数の層があり、リンク層は、ソフトウェアドライバ要求を、配線を通じて送信される有効なＩＥＥＥ１３９４パケットとして設定する役割を担う。また、バス管理層は、適正な動作を物理層に大きくに依存し、バス管理層は、バスアービトレーションパケットを組み合わせて、バス上に複数のユーザがあるかどうか検出し、複数ユーザを防止すること、バス速度の調整、および、コントローラ等時性の転送時間の役割を担う。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
また、ＰＣＩエクスプレスやＵＷＢ（Ｕｌｔｒａ Ｗｉｄｅ Ｂａｎｄ）などの新しいネットワーキング技術を用いて、コンピュータ筐体の内部および外部に周辺機器を接続することが増えている。したがって、新しい接続技術のデータレートが増し続ける一方であることから、内部バスと外部バスの明確な区別が希薄になる可能性がある。容量の集約および確保を行うプロトコルや、無線環境における断続的な接続や変化するトポロジなどの新しい特性が、伝統的に発展の速度が遅く、既存のＡＰＩに依拠するアプリケーションであるミドルウェア層に新たな問題を課す。
【０００５】
さらに、バッテリを電源とする携帯型のデバイスを接続するには、ＢｌｕｅｔｏｏｔｈやＵＷＢなどの無線ネットワーク技術が通常用いられる。そのため、電力管理が、バス管理層によってサポートされなければならない重要な機能となっている。同様にデータは、リモートデバイスが起動（ｗａｋｅ  ｕｐ）するまでバッファされなければならない。
【０００６】
同時に、従来のバスプロトコルとインターネットプロトコル（ＩＰ）との間には不調和が存在する。例えば、一般に、そのようなバスプロトコルとそれに関連するプログラミングモデルは、通例はバスに固有のものであり、インターネットアクセスのようなサービスは提供しない。さらに、ＩＰは通例、等時性の転送、クロック同期、発見等のバスのシグナリング機能を利用する権限を与えられない。
【０００７】
したがって、従来のシステムおよびデバイスに伴う上述のような例示的な不備を克服する必要がある。
【課題を解決するための手段】
【０００８】
以下に、本発明の１つまたは複数の態様の基本的理解を提供するために簡略化した本発明の要約を述べる。この要約は、本発明の広範囲にわたる概要ではない。本発明の主要または不可欠な要素を明らかにするものでも、本発明の範囲を詳述するものでもない。この要約の唯一の目的は、その後に述べるより詳細な説明の前置きとして、簡略化した形で本発明の概念の一部を述べるものである。
【０００９】
本発明は、デバイスモデル（デバイスと通信するデバイス固有のアプリケーション）および／またはサービスと上層のプロトコルを複数のバス実装に結びつけることができる抽象化システムを介してバスプロトコルとネットワークの統合を促進するシステムおよび方法を提供する。本発明の抽象化は、既存のバスプロトコルのセマンティックを表すことができる。そのような抽象化の一部として、発見コンポーネント、メッセージング移送コンポーネント、および関連付けコンポーネントのセマンティックを含むプログラミングモデルが実装されることができる。
【００１０】
発見コンポーネントは、バスおよび／またはネットワークに接続されたデバイスが、そのようなデバイスを発見するためのシグナリング機構を備えることを可能にすることができる。メッセージング移送コンポーネントは、各種のデバイスの概ね良好な制御を維持するために通常は迅速に転送されることが必要とされる中程度の優先度の制御メッセージなど、メッセージを転送する能力を提供することができる。同様に、関連付けコンポーネントは、バスの各種デバイス間に確立された信頼と関係を判断することができる。関連付けコンポーネントはさらに、チャレンジ／レスポンスプロトコル方式や公開鍵インフラストラクチャなどの事前に設定された信用証明を用いることにより、デバイスおよび／またはサービスを認証することができる。さらに、メッセージング移送コンポーネントは、暗号化を行って通信のプライバシーを保証することができ、関連付けコンポーネントに動作的に接続されることができる。
【００１１】
本発明の関連する一態様では、アプリケーションプログラムインタフェース（ＡＰＩ）と、通信が要求されるデバイスを指定するためにアドレス指定方式も用いられることができる。その場合、バス抽象化システムは、インタフェースとして機能することができる。したがって、そのようなアドレス指定コンポーネントは、各種のアプリケーションがバスまたはネットワーク上のデバイスを参照する標準の方式を提供することができる。さらに、ストリーミングコンポーネント、大容量転送コンポーネント、およびクロック同期コンポーネントのセマンティックが提供されることができる。ストリーミングコンポーネントは、通常、待ち時間の要件および時間が重要な情報の送達を、確実に満たすことができる。同様に、大容量転送コンポーネントは、メッセージング移送コンポーネントとストリーミングコンポーネントの動作に影響を与えることなく、優先度の低い項目およびメッセージの転送を容易にすることができる。クロック同期コンポーネントは、例えば、各バスが当然に実装する個々のクロック同期を用いることにより、バス上にわたって高精度のクロックの配信を容易にすることができる。デバイスは、同期することができるか、あるいはそのバスに関して共有された何らかの時間基準を得ることができる。
【００１２】
本発明は、あるバス技術を知らないアプリケーションとそのバスとの対話を容易にすることができる。そのため、アプリケーションは、通常はそのバス技術の詳細を知ることなく、バスを用い、そのバスと対話することができる。関連する態様では、そのような抽象化は、ネットワークをバスとして扱うようにネットワーク上に配置されることができ、そのため、ネットワーク上のデバイスと対話するアプリケーションは、同じ抽象化を通信に用いることができる。例えば、抽象化システムは、各種のネットワークを通じて通信するデバイス間、アプリケーションとバス間、コンピュータのプロセス間などの共通の言語の役割を果たすことができる。
【００１３】
本発明のさらなる態様では、ＵＳＢやＩＥＥＥ１３９４などのプロトコルを基盤とするバス技術で、各バス技術に関連付けられた適合コンポーネントを介して抽象化システムを実装することができる。このような適合コンポーネントは、バスまたはネットワークが本発明の抽象化システムを実装できるようにすることができ、適合コンポーネントは特定のバス技術に対して異なる形で動作できるにも関わらず、アプリケーション側から見ると、バス抽象化システムは同一に見えることができる。このような構成は、複数のバス技術にまたがってデバイス固有のアプリケーションとデバイスドライバを再使用することを促進する。それにより、複数のそのようなバス技術にまたがって、１つのデバイスモデルにより知的な投資を利用することを可能にする。
【００１４】
本発明のさらなる態様では、そのようなデバイスは現在各自のバスに結びつけられているため、既存のバスのワイヤプロトコルへの変更は通常は必要とされず、例えば、本発明は、既存のデバイスモデルの実装のためのプログラミングモデルの役割を果たす。したがって、１つのＡＰＩ（アプリケーションプログラムインタフェース）が提供されて、バスタイプあるいはプロトコルに関係なく、複数の異種のバスを通じてメッセージを送信し、あるデバイスクラスをサポートすることができる。
【００１５】
さらに、本発明の別の態様により、バスドライバが、抽象化を公開することができる。階層化に関して、そのようなドライバは、特定のマシンに関連するバスハードウェアを理解するドライバの下に置かれることができる。そのようなモデルは、容易に使用することができるネットワークの抽象化と、ネットワークプロトコルがアプリケーションへの変更を必要とせずに発展することができる安定したプログラミングモデルを提供することができる。さらに、内部のプロセス通信に関連して、本発明は、クライアントとサービスが場所に関係なく、豊富な移送機能を利用できるようにすることができる。結果として、データレートの変化あるいはトポロジの変化をもたらす可能性がある変動するチャネル特性など、無線媒体の他の特性が、各種の接続間のリソースのバランスをとることによって補償されることができることを理解されたい。
【００１６】
本発明のさらなる態様では、バス抽象化がドライバモデルに適用されると、プロトコルバスおよびロード／ストアバス（例えばＣＰＩ）の統合を可能にする。したがって、ロード／ストアバス、プロトコルバス、ＩＰ（インターネットプロトコル）で接続されたデバイス間でデバイスクラスのサポートが共有されることができる。
【００１７】
前述の目的およびそれに関連する目的を達成するために、本発明は、以下に十分に説明する特徴を備えている。以下の説明と添付図面は、本発明の特定の例示的な態様を詳しく解説する。しかしながら、それらの態様は、本発明の原理が用いられることができる各種の方式の数例を示すに過ぎない。本発明の他の態様、利点、および新規の特徴は、図面と併せて以下の本発明の詳細な説明を検討することから明らかになろう。
【発明を実施するための最良の形態】
【００１８】
次いで、図面を参照しながら本発明を説明するが、すべての図面を通じて同じ要素は同じ参照符号を使用して示す。以下の説明では、説明の目的として、本発明の完全な理解を提供するために多数の具体的な詳細を述べる。しかし、本発明は、それらの具体的な詳細事項がなくとも実施できることは明らかであろう。他の事例では、本発明の説明を助けるために、周知の構造およびデバイスはブロック図の形態によって示す。
【００１９】
本願で使用される用語「コンポーネント」、「ハンドラ」、「モデル」、「システム」などは、ハードウェア、ハードウェアとソフトウェアの組み合わせ、ソフトウェア、実行中のソフトウェアを問わず、コンピュータに関連したエンティティを指すものとする。例えば、コンポーネントは、これらに限定しないが、プロセッサで実行されているプロセス、プロセッサ、オブジェクト、実行ファイル、実行中のスレッド、プログラム、および／またはコンピュータであり得る。例示として、サーバで実行されるアプリケーションとサーバの両方がコンポーネントとなることができる。プロセスおよび／または実行のスレッドには１つまたは複数のコンポーネントが存在することができ、コンポーネントは、１台のコンピュータに局在しても、および／または２台以上のコンピュータに分散していてもよい。また、そうしたコンポーネントは、各種のデータ構造が記憶された各種のコンピュータ読取り可能媒体から実行されることができる。コンポーネントは、１つまたは複数のデータパケットを有する信号に従って等、ローカルおよび／またはリモートのプロセスを介して通信することができる（例えば、ローカルシステム、分散システムで１つのコンポーネントのデータが別のコンポーネントと対話する、および／または例えばインターネットなどのネットワークを通じて信号を介して他のシステムと対話する）。
【００２０】
本発明は、デバイス固有のアプリケーションと上層のプロトコルを複数のバス実装に結びつけることができる抽象化システムを介して、バスプロトコルとネットワークの統合を容易にするシステムおよび方法を提供する。初めに図１を参照すると、抽象化システム１１０が図示されている。この抽象化システム１１０は、単一のアプリケーションプログラムインタフェース（ＡＰＩ）として機能して、バスタイプあるいはプロトコルに関係なく、複数の異なるバス１１５、１１７、１１９（１〜ｎ。ｎは整数）、またはネットワーク１２０、１２２、１２４（１〜Ｎ。Ｎは整数）を通じてメッセージを送信し、あるデバイスクラスをサポートすることができる。例えば、このような抽象化システム１１０は、バス技術１１５〜１１９を知らないアプリケーション１２６、１２８、１３０（１〜ｍ。ｍは整数）が、通例はバスあるいはネットワーク技術の詳細を知ることなく、バスおよび／またはネットワークを用いてバスおよび／またはネットワークと対話する方式を指定することができる。
【００２１】
図示するように、バス１１５〜１１９は、ＵＳＢ、ＩＥＥＥ１３９４等、プロトコルを用いるバス技術を使用することができ、例えばバスシステム１１５はＵＳＢバスとすることができる。通例、このようなＵＳＢ１１５は、例えば外部の周辺機器をホストコンピュータ（図示せず）に接続する外部バスアーキテクチャとすることができる。ＵＳＢバス１１５は、ホストシステムとＵＳＢ対応周辺機器との間のシリアルデータ転送をサポートする、通信対応周辺機器のためのプロトコルとして機能することができる。また、ＵＳＢシステムは、ホストサイドとデバイスサイドからなることができる。両サイドは、ＵＳＢケーブルがその一部をなす物理バスを介して接続される。通例、そのようなホストの基本的な役割は、データ転送のための制御インタフェースを供給することであり、一方、デバイスサイドは、ユーザに各種機能を提供することができる。ホストサイド自体は、ＵＳＢアダプタまたはＵＳＢホストコントローラのハードウェア層と、上層のシステムソフトウェア層とからなることができる。ホストコントローラは、例えば、ホストとＵＳＢデバイス間のデータストリームの転送を担うことができる。ホストコントローラは、例えば設定（configuration）が行われる時などに、ホストソフトウェアから提供されるパラメータに基づいてサービスを提供することができる。
【００２２】
例えば、ＵＳＢのためのシステムソフトウェアは、２つの層からなることができる。上の層は、ＵＳＢデバイスドライバからなることができる。そのようなドライバは、そのドライバが制御するデバイスとの接続を確立し、ＵＳＢのシステムソフトウェア機能を使用してデバイスを設定し、デバイスと通信することができる。同様に、下の層は、ＵＳＢデバイスドライバとホストコンピュータと間の通信の管理、適時のデバイスドライバのロードとアンロード、ＵＳＢのプロトコルフレームとパケットフォーマットの変換等の各種のタスクを行うＵＳＢシステムソフトウェアからなることができる。
【００２３】
同様に、図１に示すネットワーク１２０〜１２４は、システムエリアネットワークあるいは他のタイプのネットワークとすることができ、パーソナルコンピュータ、サーバ、他のタイプのコンピュータ等であるいくつかのホスト（図示せず）を含むことができる。そのようなホストは一般に、１つまたは複数のアプリケーションレベル（またはユーザレベル）のプログラムを実行することができ、またＩ／Ｏ要求（Ｉ／Ｏ読み出しまたは書き込み）を開始することができる。また、ネットワークはさらに、１つまたは複数のＩ／Ｏユニットを含むことができ、そのようなＩ／Ｏユニットは、そのユニットに接続された１つまたは複数のＩ／Ｏコントローラを含むことができ、各Ｉ／Ｏは、記憶装置（ハードディスクドライブ、テープドライブ）や他の入出力装置など数種のＩ／Ｏ装置のいずれでもよい。ホストとＩ／Ｏユニット、およびそれらに接続されたＩ／Ｏコントローラとデバイスは、クラスタなどのグループに編成することができる。各クラスタは、１つまたは複数のホストと、通例は１つまたは複数のＩ／Ｏユニット（各Ｉ／Ｏユニットは１つまたは複数のＩ／Ｏコントローラを含む）とを含む。ホストとＩ／Ｏユニットは、１つまたは複数のクラスタのノードのセットを接続する（例えばホストとＩ／Ｏユニットの集合を接続する）ルータ、スイッチ、通信リンク（配線、コネクタ、ケーブルなど）の集まりを介して相互に接続されることができる。そのため、抽象化システム１１０は、各種のネットワークを通じて通信するデバイス間、アプリケーションとバス間、コンピュータのプロセス間などの共通の言語の役割を果たすことができる。
【００２４】
図２に、適合コンポーネント２１０、２１２、２１４を介して、本発明の一態様により抽象化システム２２０と対話する複数のバス１〜ｎ（ｎは整数）を示す。本発明は主としてバスの動作の文脈において説明をするが、本発明の抽象化システムは、ネットワークをバスとして扱うようにネットワーク上に配置されることができ、そのため、ネットワーク上のデバイスが同じ抽象化システム２２０を通信に用いることができることは理解されよう。
【００２５】
そのような適合コンポーネント２１０〜２１４は、複数のバスが本発明の抽象化システム２２０を実施できるようにすることができ、適合コンポーネント２１０〜２１４が特定のバス技術について異なる形で動作できるにも関わらず、アプリケーション側から見るとバス抽象化システム２２０は同一に見えることができる。このような構成は、複数のバス技術にまたがってデバイスモデルを再使用することを促進することができ、その結果、メッセージバス、ＵＳＢバス、ＩＥＥＥ１３９４バスなど複数のバス技術にまたがって１つのデバイスモデルで知的な投資を活用することが可能になる。
【００２６】
メッセージバス２３０、２４０、２５０はそれぞれ、アプリケーション間のメッセージの移送に特化することができる。例えば、各メッセージバスは、合意されたメッセージスキーマのセット、共通のコマンドメッセージのセット、および受信者にバスメッセージを送信するための共有インフラストラクチャを含むことができる。そのような合意されたメッセージスキーマは、抽象化システム２２０を介して抽象化されて、各種のアプリケーションおよびバスを介して通信するデバイス間、コンピュータのプロセス間などに共通の言語を提供することができる。通例は、本発明の抽象化システムを用いると、メッセージを送信するアプリケーションは、もはや特定のデバイスにメッセージを送達するために用いられるバス技術を知っている必要がなくなる。代わりに、アプリケーションは、単に、抽象化システム２２０によって提供されるフォーマットを介して所望のメッセージバスにメッセージを渡し、メッセージバスが、共有インフラストラクチャまたはネットワークを通じてバスメッセージを聴いているすべての他のアプリケーションにそのメッセージを移送する。
【００２７】
メッセージバス環境においては、一般に、メッセージを送信するアプリケーションは、そのメッセージを受信しなければならないすべてのアプリケーションへの個々の接続は持たない。同様に、メッセージを受信するアプリケーションは、そのメッセージをメッセージバスから取り込む。そのような環境においては、内部の最適化、ルーティング、バッファリング、および基礎となる移送機構が、メッセージがどのように受信側のアプリケーションまで移動するかに影響する可能性がある。関係するアプリケーションの一部として追加的なロジックを組み込むことができる。例えば、送信側のアプリケーションは、送信メッセージに連続番号を挿入することができ、受信側はその番号を使用して受信メッセージを並べ替えることができる。通例、バスを通じてメッセージを送信するアプリケーションは、そのバスが予定するメッセージタイプにメッセージが準拠するように、そのメッセージを作成すべきである。
【００２８】
同様に、メッセージを受信するアプリケーションは、メッセージタイプを理解できなければならない。本発明の抽象化システム２２０は、バスタイプまたはプロトコルに関係なく、複数の異種のバスを通じてメッセージを送信し、あるデバイスクラスをサポートするための１つのＡＰＩ（アプリケーションプログラムインタフェース）を提供する。これは、アプリケーション側から抽象化システム２２０が同一に見えることができるプログラミングモデル、およびプロトコルは、アプリケーションに変更を加えることを必要とすることなく発展することができる、ということを意味する。
【００２９】
さらに、バス２３０、２４０、２５０はいずれもＩＥＥＥ１３９４ドライババスとすることができる。これは、デバイスがアクティブな状態でのデバイスの追加および／または除去を可能な高性能のシリアルバスである。このようなバスは、非同期のデータ転送と等時性のデータ転送の両方をサポートする。例えば、従来のメモリマップドのロードとストアを行うアプリケーションには非同期の転送が適する可能性があり、そのような転送は、確実な送達と信頼性を提供することができる。
【００３０】
また、等時性のデータ転送は、所定のレートでの通例保証されたデータ移送を提供することができる。これは、タイムクリティカルなデータの中断のない移送と、適時の送達が高コストのバッファリングの必要性を減らすマルチメディアアプリケーションにおいて、重要である場合がある。さらに、ＩＥＥＥ１３９４バスは、物理層、リンク層、トランザクション層を含む３つのプロトコル層を含むことができる。物理層は、ＩＥＥＥ１３９４コネクタに接続することができ、デバイス間の電気的な接続および機械的な接続を提供する。同様に、リンク層は、非同期および等時性のパケット送達のためのデータパケット送達サービスを提供することができる。
【００３１】
ＩＥＥＥ１３９４バスの場合も、トランザクション層は、非同期のプロトコル書き込み、読み取り、およびロックのコマンドをサポートすることができ、書き込みコマンドは、発信者から受信者にデータを送信し、読み取りコマンドは、発信者にデータを返し、ロックコマンドは、受信者による処理を含む、送信者と受信者間のデータの往復ルーティングを行わせることにより、書き込みコマンドと読み取りコマンドの機能を組み合わせる。本発明によれば、現在そのようなデバイスは個々のバスに結び付けられているため、通例は、既存のバスのワイヤプロトコルへの変更は必要とされない。例えば、本発明は、既存のデバイスモデルの実装のためのプログラミングモデルとして機能する。したがって、バス抽象化システム２２０は、バスタイプあるいはプロトコルに関係なく、複数の異なるバス２３０、２４０、２５０を通じてメッセージを送信し、あるデバイスクラスをサポートする単一のアプリケーションプログラムインタフェースとして機能することができる。
【００３２】
主としてＵＳＢおよびＩＥＥＥ１３９４バスとの関連で本発明を説明したが、ＰＣＩエクスプレス、ＵＷＢ、ブルートゥースなどの他のプロトコルに基づくバス技術を、本発明とともに組み込めることは理解されたい。簡潔に説明すると、ＰＣＩエクスプレスは、各種のコンピューティングプラットフォームおよび通信プラットフォームのために定義された、高性能の汎用Ｉ／Ｏ相互接続である。ＰＣＩエクスプレスアーキテクチャは、トランザクション層、データリンク層、物理層の３つの別個の論理層を含む。ＰＣＩエクスプレスは、パケットを使用してコンポーネント間で情報を通信する。パケットは、トランザクション層とデータリンク層で形成されて、送信側コンポーネントから受信側コンポーネントに情報を搬送する。メモリトランザクション（読み出しおよび／または書き込み）には、要求元のＩＤ（発信元識別子）、トランザクションタイプ（メモリの読み出しまたはメモリへの書き込み）、およびメモリアドレスを含むパケットが形成される。要求元ＩＤ（発信元識別子）は、メモリトランザクションの起点となるデバイスを識別する。パケットは、この他のフィールドを含むが、説明を簡潔にするためにその解説は省略する。同様に、一般に、ブルートゥースは、デバイス間の無線通信を可能にする、デバイス間の短距離（約１０メートル）の周波数ホッピング方式の無線リンクのプロトコルを表すために用いられる語である。ブルートゥースは、ガウシアン周波数偏移変調を用いてデータを２．４ＧＨｚ前後の周波数に変調し、２地点間または１対多地点間の通信が可能である。本発明は、そのようなバス技術を知らないアプリケーションとそのバスとの対話を容易にすることができ、アプリケーションは、通例はそのバス技術の詳細を知ることなく、バスを用いてそのバスと対話することができる。
【００３３】
図３に、発見コンポーネント、メッセージング移送コンポーネント、および関連付けコンポーネントのセマンティックを含むことができる、抽象化システムに関連付けられた各種のサブコンポーネントを示す。発見コンポーネント３２０は、バスおよび／またはネットワーク３５０に接続されたデバイスが、デバイスが相互を発見するためのシグナリング機能を備えることを可能とすることができる。例えば分散システムにおいては、しばしば、アプリケーション３６０はプロトコルへの参加者の識別を知ることが必要となる。例えば新しいクライアントが、ある問題に対応するサーバの集合を判定する必要がある；新しいサーバが、保留中の要求を有するクライアントがあるかどうかを判定する必要がある；複製されたサーバが、保留中の要求を有するクライアントがあるかどうかを判定する必要があるなどの場合がある。言い換えると、発見コンポーネント３２０は、バスおよび／またはネットワーク３５０への参加者（ｐａｒｔｉｃｉｐａｎｔｓ）を識別することができる。例えば、発見コンポーネントが、ある問題に対応できるサーバのセットを判定することを必要とする、あるいは、新しいサーバが、保留中の要求を有するクライアントがあるかどうかを判定する必要がある場合がある。そのため、発見プロトコルは、「誰がいるか（who is out there）」の形をとることができ、他の参加者が「私だ（I am）」を公開（ｐｕｂｌｉｓｈ）し、他の参加者が各自の状態を説明する。
【００３４】
同様に、メッセージング移送コンポーネント３３０は、メッセージの転送、例えば制御メッセージを転送する能力を提供することができる。そのような制御メッセージは、通例はデバイスを正しく制御するために直ちに送達される必要がある、優先度が中程度のメッセージの形をとることができる。
【００３５】
また、図３に示すように、関連付けコンポーネント３４０は、バスおよび／またはネットワーク３５０の各種のデバイス間の信頼および／または関係の確立を決定することができる。ネットワーク上では、セキュリティ要件が双方向の信頼の確立を必要とし、物理バス自体が十分に安全でない時に、関連付けコンポーネント３４０を介してデバイス間に双方向の信頼を確立することができる。例えば、プリンタ装置の場合、ユーザは、印刷ジョブがどこに現れるかを把握し、プリンタへの不正アクセスが拒絶されることを保証される必要がある。そのような信頼の確立が、関連付けコンポーネント３４０によって供給される。ＵＳＢなど一部のバスについては、各種のデバイス間の物理接続またはリンクが必要とされる関連付けを証明するので、そのような関連付けコンポーネントに要求されることが軽減され得る。例えば、プリンタが物理的にコンピュータに接続されているという事実が、ＵＳＢ環境でプリンタとコンピュータの間に関連付けが必要とされることの肯定の宣言となる。とは言え、これは、無線ネットワーク環境およびＩＰネットワーク環境では当てはまらない場合がある。関連付けコンポーネントはさらに、チャレンジ／レスポンスプロトコル方式や公開鍵インフラストラクチャなどの、事前に確立された信用証明を用いることにより、デバイスおよび／またはサービスを認証することができる。さらに、メッセージング移送コンポーネントは、暗号化を行って通信のプライバシーを保証することができ、関連付けコンポーネントに動作可能なように接続されることができる。
【００３６】
次いで図４を参照すると、抽象化システムに関連付けられたいくつかの追加的なサブコンポーネントが図示される。詳細には、本発明は、ストリーミングコンポーネント４１０、大容量転送コンポーネント４２０、およびクロック同期４３０のためのセマンティックを提供することができる。ストリーミングコンポーネント４１０は、通例、待ち時間の要件と、時間が重要な（ｔｉｍｅ  ｓｅｉｓｉｔｉｖｅ）情報の送達を確実に満たすことができる。通例、時間が重要でエラーが許容されるデータのストリーミングや、会話をリアルタイムで搬送するインターネット電話アプリケーションなど一定したデータ転送レートを必要とするリアルタイムアプリケーションにおいては、等時性（ｉｓｏｃｈｒｏｎｏｕｓ）の転送を用いることができる。
【００３７】
さらに、等時性のデータは一般に、保証された帯域幅量と保証された最大伝送時間を必要とする。例えば、バスを通じてオーディオとビデオを転送することができるＩＥＥＥ１３９４バスでは、バスが他の転送動作に関与しないように、そしてデータが損失なしに転送されることができるように、その転送のために必要とされる帯域幅を確保することができる。一般に、等時性の転送では、正確または完全なデータ転送よりも、タイムリーなデータ送達の方がはるかに重んじられる。
【００３８】
同様に、大容量転送コンポーネント４２０は、メッセージング移送コンポーネントとストリーミングコンポーネントの動作に影響を与えずに、低優先度の項目およびメッセージの転送を容易にすることができる。通例、大容量転送は、プリンタやスキャナなど、大量のデータを送受信し、保証された送達を必要とするが、しかし、特定の帯域幅や待ち時間の要件は持たないデバイスに用いられる。すべてのデータが最終的に送達されるのであれば、非常に低速の転送、あるいは著しく遅れた転送でさえそのようなタイプのデバイスでは一般に許容される。
【００３９】
また、クロック同期コンポーネント４３０は、例えば各バスが当然に実装する個々のクロック同期を用いることにより、バスを通じた高精度のクロックの配信を容易にすることができる。そのため、デバイスは同期することができ、あるいはそのバスに関して共有された時間基準を持つことができる。通例、各種のバスは、転送されるメッセージングのタイプに基づいて異なる方式でバス同期を適用する。デバイスとコンピュータ間で十分に同期された非常に高品質のクロックがある可能性がある。例えば、バスに速いトレードオフがあり、それが規則的な間隔で行われる場合は、その間隔をクロック同期に用いることができる。本発明は、例えばＩＥＥＥ１３９４バスの高いクロック同期機能など、既存の同期機能を活用することができる。
【００４０】
図５に、本発明の一態様による特定の階層化構成を示す。図示するように、ハードウェア層５１０が階層化構成の基盤をなすことができ、バスドライバ層５２０がその上に配置される。バスドライバ５２０は、バスタイプに固有なものであってよく、バス抽象化層５３０の下に置かれることができる。アプリケーション層５４０は、バス抽象化層５３０の上に置くことができる。そのため、本発明のバス抽象化は、ドライバモデルに適用されると、プロトコルバスおよびロード／ストリームバス（ＣＰＩなど）の統合を可能にする。したがって、ロード／ストアバス、プロトコルバス、およびインターネットプロトコル（ＩＰ）間でデバイスクラスのサポートが共有され得る。このように、１つのＡＰＩ（アプリケーションプログラムインタフェース）が提供されて、バスタイプあるいはプロトコルに関係なく、複数の異種のバスを通じてメッセージを送信し、あるデバイスクラスをサポートすることができる。
【００４１】
図６に、本発明の一態様によるバス抽象化の手順６００を示す。手順は６１０で開始し、バス抽象化が、アプリケーションが通信すべきデバイスを発見する能力を公開する。例えば、デバイスまたはその一部分のアドレスを指定する一部として文字列を用いることができる。次いで６２０で、デバイスまたはその一部との間で通信する必要があるコマンドのセットの重要度（criticality）について判定を行うことができる（例えばアプリケーションが明示的に大容量転送、ストリーミングなどを要求することができる）。６３０で、上記で詳細に説明した、メッセージ転送、ストリーミング、大容量転送などの適正なメッセージング移送コンポーネントが選択されて、デバイスまたはその一部にメッセージを転送することができる。次いで、その選択に基づいて、６４０で、選択されたバスのクロック同期機能を利用して所望のアドレスにメッセージを正しく送達することができる。このような構成は、複数のバス技術にまたがってデバイスモデルを再使用することを促進し、その結果、複数のバス技術にまたがって１つのデバイスモデルによって知的な投資を活用することが可能になる。したがって、アプリケーション側からは、バス抽象化は、バス技術またはネットワークに関係なく同一に見える。
【００４２】
ここでは各種のイベントおよび／または動作を表すブロックの連続として例示的方法を図示し、説明しているが、本発明は、そのブロックの図の順序に限定されない。例えば、一部の動作またはイベントは、本発明により、図の順序と異なる順序で行われても、および／または他の動作またはイベントと同時に行われてもよい。また、本発明による手順を実施するために図のブロック、イベント、または動作のすべてが必要とは限らない。さらに、本発明による例示的方法および他の方法は、ここで図示し説明する方法と関連して実装することができ、また、図示あるいは記載されない他のシステムおよび装置と関連して実装してもよいことは理解されよう。
【００４３】
次いで図７を参照して、本発明の各種態様を実施することができる適切なコンピューティング環境の簡単で概略的な説明をする。上記ではコンピュータで実行されるコンピュータプログラムのコンピュータ実行可能命令の一般的な文脈で本発明を説明したが、当業者は、本発明は、他のプログラムモジュールと組み合わせて実施することもできることを認識されよう。一般に、プログラムモジュールには、特定のタスクを行うか、および／または特定の抽象データ型を実装するルーチン、プログラム、コンポーネント、データ構造等が含まれる。さらに、当業者は理解されるように、本発明の方法は、単一プロセッサまたはマルチプロセッサのコンピュータシステム、ミニコンピュータ、メインフレームコンピュータ、パーソナルコンピュータ、ハンドヘルドコンピューティングデバイス、マイクロプロセッサを利用した、あるいはプログラム可能な家電製品などを含む他のコンピュータシステム構成とともに実施することができる。先に説明したように、ここで具体的に述べる本発明の態様は、通信ネットワークを通じてつながれた遠隔の処理装置によってタスクが行われる分散コンピューティング環境において実施することもできる。ただし、本発明のすべてではなくとも一部の態様は、独立型コンピュータで実施することができる。分散コンピューティング環境では、プログラムモジュールは、ローカルおよびリモート両方のメモリ記憶装置に置くことができる。例示的な環境は、コンピュータ７２０を含み、コンピュータ７２０は、処理装置７２１、システムメモリ７２２、およびシステムメモリを含む各種のシステム構成要素を処理装置７２１に結合するシステムバス７２３を含む。処理装置７２１は、各種の市販プロセッサでよい。デュアルマイクロプロセッサおよび他のマルチプロセッサアーキテクチャも処理装置７２１として使用されることができる。
【００４４】
システムバスは、各種の市販バスアーキテクチャを使用した、ＵＳＢ、ＩＥＥＥ１３９４、周辺機器バス、ローカルバスを含む数種のバス構造のいずれでもよい。システムメモリは、ＲＯＭ（読み取り専用メモリ）７２４とＲＡＭ（ランダムアクセスメモリ）７２５を含むことができる。起動時などにコンピュータ７２０内の要素間の情報転送を助ける基本ルーチンを含む基本入出力システム（ＢＩＯＳ）は、ＲＯＭ７２４に記憶される。
【００４５】
コンピュータ７２０はさらに、ハードディスクドライブ７２７、例えば取り外し可能ディスク７２９の読み取りまたは書き込みを行う磁気ディスクドライブ７２８、ＣＤ−ＲＯＭディスク７３１や他の光学媒体の読み取りまたは書き込みを行う光ディスクドライブ７３０を含む。ハードディスクドライブ７２７、磁気ディスクドライブ７２８、光ディスクドライブ７３０は、それぞれハードディスクドライブインタフェース７３２、磁気ディスクドライブインタフェース７３３、光ドライブインタフェース７３４でシステムバス７２３に接続される。これらのドライブとそれに関連付けられたコンピュータ読取り可能媒体は、データ、データ構造、コンピュータ実行可能命令等の不揮発性のメモリーをコンピュータ７２０に提供する。上記のコンピュータ読取り可能媒体の説明では、ハードディスク、取り外し可能磁気ディスク、およびＣＤを挙げたが、当業者には、磁気カセット、フラッシュメモリカード、デジタルビデオディスク、ベルヌーイカートリッジなど、コンピュータ可読の他のタイプの媒体も例示的な動作環境において使用することができる。さらに、そのような媒体は、本発明の方法を行うコンピュータ実行可能命令を保持することができることが理解されよう。
【００４６】
ドライブおよびＲＡＭ７２５には複数のプログラムモジュールが記憶されることができ、これには、オペレーティングシステム７３５、１つまたは複数のアプリケーションプログラム７３６、他のプログラムモジュール７３７、およびプログラムデータ７３８が含まれる。図のコンピュータのオペレーティングシステム７３５は、実質的にどの市販オペレーティングシステムでもよい。
【００４７】
ユーザは、キーボード７４０、およびマウス７４２などのポインティングデバイスを通じて、コンピュータ７２０にコマンドと情報を入力することができる。他の入力装置（図示せず）としては、マイクロフォン、ジョイスティック、ゲームパッド、衛星受信アンテナ、スキャナ等が挙げられる。上記および他の入力装置は、多くの場合、システムバスに結合されたシリアルポートインタフェース７４６を通じて処理装置７２１に接続されるが、パラレルポート、ゲームポート、ＵＳＢ等の他のインタフェースで接続してもよい。モニタ７４７あるいは他のタイプの表示装置も、ビデオアダプタ７４８などのインタフェースを介してシステムバス７２３に接続される。モニタに加えて、コンピュータは通例、スピーカやプリンタなどの他の周辺出力装置（図示せず）を含む。
【００４８】
コンピュータ７２０は、リモートコンピュータ７４７などの１つまたは複数のリモートコンピュータとの論理接続を使用するネットワーク環境において動作することができる。リモートコンピュータ７４９は、ワークステーション、サーバコンピュータ、ルータ、ピアデバイス、あるいは他の一般的なネットワークノードであり、図７にはメモリ記憶装置７５０のみを示すが、通例はコンピュータ７２０に関連して上述した要素の多くまたはすべてを含む。図7に示す論理接続は、ＬＡＮ（ローカルエリアネットワーク）７５１とＷＡＮ（ワイドエリアネットワーク）７５２を含むことができる。このようなネットワーク環境は、オフィス、企業内のコンピュータネットワーク、イントラネット、インターネットに一般的に見られる。
【００４９】
ＬＡＮネットワーク環境で用いられる場合、コンピュータ７２０は、ネットワークインタフェースあるいはアダプタ７５３を通じてローカルネットワーク７５１に接続され得る。ＷＡＮネットワーク環境で利用される場合、コンピュータ７２０は一般に、モデム７５４を含むことができるか、および／またはＬＡＮ上の通信サーバに接続されるか、および／または、インターネットなどのＷＡＮ７５２を通じて通信を確立するための他の手段を有する。モデム７５４は、内蔵型であっても外付け型であってもよく、シリアルポートインタフェース７４６を介してシステムバス７２３に接続されることができる。ネットワーク環境では、コンピュータ７２０との関連で図示するプログラムモジュールあるいはその一部は、遠隔のメモリ記憶装置に記憶されることができる。図のネットワーク接続は例示的なものであり、コンピュータ間に通信リンクを確立する他の手段を用いてよいことは理解されよう。
【００５０】
コンピュータプログラミングの分野の当業者の慣行に従って、特に指摘しない限りは、行為、およびコンピュータ７２０などのコンピュータによって行われる動作の記号的表現を参照して本発明を説明した。そうした行為および動作は、場合によってはコンピュータに実行されるものと言及される。この動作および記号的に表現される動作には、処理装置７２１による、結果として電気信号表現を変換または変形させるデータビットを表す電気信号の操作と、メモリシステム（システムメモリ７２２、ハードドライブ７２７、フロッピー（登録商標）ディスク７２８、ＣＤ−ＲＯＭ７３１を含む）内のメモリ位置におけるデータビットの保持が含まれ、それによりコンピュータシステムの動作と、その他の信号の処理を再設定するか、その他の形で変更することが理解されよう。そのようなデータビットが保持されるメモリ位置は、そのデータビットに対応する特定の電気的特性、磁気的特定、または光学的特性を有する物理的な位置である。
【００５１】
特定の例示的態様とともに本発明を図示し、説明したが、本明細書と添付図面を読み、理解すると、当業者には同等の変更形態と変形形態が着想されることが理解される。特に上述のコンポーネント（アセンブリ、デバイス、回路、システム等）によって行われる各種機能に関して、そのようなコンポーネントを説明するために使用した用語（「手段」を含む）は、特に断らない限りは、ここで具体的に説明される本発明の例示的態様の機能を行うここに開示される構造と構造的に同等でなくとも、記載されるそのコンポーネントの指定された機能を行うどのコンポーネントにも対応するものとする（すなわち機能的に同等）。この点で、本発明は、システムだけでなく、本発明の各種方法の動作および／またはイベントを行うコンピュータ実行可能命令を有するコンピュータ読取り可能媒体も含むことも認識されよう。さらに、用語「〜を含む」、「〜を含んでいること」「〜を有する」「〜を有していること」とその異形が詳細な説明または特許請求の範囲で用いられる限りでは、それらの語は、用語「〜を備える」と同様に包含的な意味とする。
【図面の簡単な説明】
【００５２】
【図１】本発明の一態様による、アプリケーションを複数のバス実装とネットワーキング技術に結びつけることができる抽象化システムの概略ブロック図である。
【図２】本発明の一態様により適合コンポーネントを介して抽象化システムと対話する複数のバスの図である。
【図３】発見コンポーネント、メッセージング移送コンポーネント、および関連付けコンポーネントのセマンティックを含むことができる抽象化システムに関連付けられた各種のサブコンポーネントの図である。
【図４】本発明の関連態様による抽象化システムに関連付けられた追加的なサブコンポーネントの図である。
【図５】本発明の一態様による特定の階層化構成を表す図である。
【図６】本発明の一態様によるバス抽象化の手順を説明する図である。
【図７】本発明の各種態様を実施することができる適切なコンピューティング環境を簡潔に概略的に説明する図である。
【符号の説明】
【００５３】
１１０、２２０、３１０  抽象化システム
１１５、１１７、１１９、２３０、２４０、２５０  バス
１２６、１２８、１３０、３６０  アプリケーション
【図１】
2006190280.tif 000003
【図２】
2006190280.tif 000004
【図３】
2006190280.tif 000005
【図４】
2006190280.tif 000006
【図５】
2006190280.tif 000007
【図６】
2006190280.tif 000008
【図７】
2006190280.tif 000009
【外国語明細書】
2006190280000001.pdf