説明

ポート群を動的に専用化するプロセッサ間通信ネットワーク

IPCプロトコル/ネットワークによりポート群の動的な専用化が可能になり、これにより、システムの待ち時間が短縮され消費電力が低減する。このIPCシステムにより、IPCサーバ又はIPCクライアントのいずれかが、ポート(単数又は複数)をリアルタイムデータなどのデータの転送専用に使うよう要求できる。ポートに対するこの要求は、例えばあるクライアントが制御メッセージを、特定のポートを自分専用にするよう要求しているサーバ/別のクライアントに送信することにより生ずる。サーバ及びクライアント(単数又は複数)はポート専用化を交渉し、専用化され次第、クライアントは専用のポートを使用して自身のデータをサーバ又は別のクライアントに転送する。ある実施形態では、そのポートをもっと重大な又はもっと優先権の高い別のデータ転送をサーバが行う為に必要だとサーバが判断した場合、サーバは専用のポートを取り上げる。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は一般に電子機器の分野に関し、より具体的にはポート群の動的な専用化を提供するプロセッサ間通信(IPC)のプロトコル/ネットワークに関する。
【背景技術】
【0002】
大部分の電子システムには、そのシステムを形成しているハードウェアやソフトウェアなどの多数のネットワーク要素(コンポーネント群)がある。大部分のシステムには、異なるネットワーク要素とシステム自身との間の通信に加えて、ネットワーク要素を形成する異なるコンポーネント間の通信を担当している層がある。この層は典型的にプロセッサ間通信(IPC)層と呼ばれている。
【0003】
この数年の間に、プロセッサ間通信(IPC)に対処する為に幾つかのプロトコルが導入された。IPC製品のある例は、ホスト‐PCIブリッジとDRAMの制御装置及びデータパスと、加速式グラフィックスポート(AGP)のインタフェースとを一体化するPCIのAGP制御装置(PAC)である。IPC製品の別の例はOMAP(登録商標)プラットフォームである。このどちらのプラットフォームも、より低いレベルのコンポーネントレベル又はチャネルレベル(物理層)では、サポートがあるとしてもハードウェアのレベルを上回るサポートを提供せず、設計の柔軟性もほとんどもたらさない。
【発明の開示】
【発明が解決しようとする課題】
【0004】
上述のプラットフォームはコンポーネントレベルまでは及ばず、加えて、ハードウェアのサポート能力や、マルチノードのルーティング等を考慮しておらず、しかもIPCリソースの動的な割り当てを考慮していない。低消費電力と短いシステムの待ち時間が必要性なので、当該分野では、IPCシステムでリアルタイムデータなどのデータを転送する際の無駄な時間を減らすために、ポート群の動的な専用化を提供できるIPCネットワークが必要とされている。
【課題を解決するための手段】
【0005】
本発明のIPCは、あるシステムで相互通信する異なるプロセッサに必要なサポートを提供する。例えば、アプリケーションプロセッサ(AP)やベースバンドプロセッサ(BP)を含む無線通信装置用のデュアルプロセッサ(又はマルチプロセッサ)の無線アーキテクチャで、このIPCは、効率的に通信しあう為にプロセッサ群が必要とするサポートを提供する。このIPCは、AP又はBPの設計に何の抑制も課すことなくこのサポートを提供する。
【0006】
概して、デュアルコアアーキテクチャは、APとBPとの間で仕事を分けることを表す。BPはリアルタイムの且つ無線によるデータを処理し、APはそのデータをパッケージし、それをユーザに呈示する。この2つはサービスの為に互いに依存しており、その動作をIPCメッセージ群の交換によって行う。この2つのサービスは変動するので、データの長さも速度も二地点間の交換も変動する。IPCの目的は、このサービス群が何であるかを定義することでもなければAP及びBPの設計に制約を課すことでもない。代わりに、このIPCは、このIPCをプロセッサ間通信のスタックとして採用したAP又はBPはどれでも、共存させなくてはならず、このIPCは、共通のOSとメモリとを共有している同一のコアでAPとBPとが実際に動いているかのように動作する。多数のプロセッサを通信装置で使用することが標準になってくると、本発明のIPCは異なるプロセッサ間の信頼性の高い通信を提供する。
【0007】
このIPCハードウェアは、異なるプロセッサをIPCネットワークに結び付けて物理的に接続する。本発明のある実施形態では、データパケット群が異なるホスト間で同期せずに移送されることが好ましい。このIPCネットワークに接続されたプロセッサ群は、統計的に又は動的に割り当てられた自身の物理アドレスと論理アドレス(例えば、IPCアドレス)とを持つ。更に、本発明のある実施形態では、データパケット群はこのIPCネットワーク内ではどの方向にも流れる可能性があるので、データパケット群は、自身が到着しようとしているプロセッサの宛先アドレスを持っていなくてはならない。このソースIPCアドレスは直接返答する為に用いられる。パケット群のルーティングが全ノード間でサポートされる。更にパケット群が、従来の巡回冗長検査(CRC)技術を用いてエラーを検査することが好ましい。
【発明を実施するための最良の形態】
【0008】
新規性がある本発明の特質を、添付の請求項で詳細に述べる。本発明を最も良く理解してもらうために、添付の図面を参照して以下の説明を行う。このうち幾つかの図では同じ参照数字が同じ要素を示す。
【0009】
本明細書は、新規性がある本発明の特質を定義する請求項で締めくくられているが、本発明は、図面を併用して以下の説明を検討することによって、より良く理解されると考えられる。
【0010】
ここで図1を参照すると、本発明のある実施形態に係るIPCネットワーク100が示されている。このIPCネットワーク100には、複数のIPCクライアント102〜106及びサブクライアント群(他のクライアント群に結合されたクライアント群)116〜118と、異なるIPC物理リンク群を用いてこのIPCクライアント群102〜106に結合されたIPCサーバ108とがあり、IPC物理リンク群とは、例えば、説明用の実例の、共有されているメモリ110や、汎用非同期送受信装置(UART)112や、ユニバーサルシリアルバス(USB)114などである。注目すべきは、本発明のIPCによって、あるIPCクライアント102〜106が、現在のIPCサーバ108と、役割の切り換えについて交渉できることである。あるIPCクライアント102〜106がIPCサーバになることを交渉し、新しいIPCサーバになることを現サーバが承諾した場合、残りのIPCクライアントの全てが、ネットワークに変更があったことを知らされる。
【0011】
図2には、本発明の実施形態に係るIPCサーバ108(又はIPCクライアント102〜106)のIPCスタック200が示されている。このIPCスタック200の設計は、オペレーティングシステム(OS)の下で一体化されるよう、コンポーネントのトラフィックのプロセッサ間通信のニーズをサポートするようになされている。このコンポーネント224と226とが自身のIPCネットワークのサービスをAPIサービス呼群によって請求する。コンポーネント同士間の物理的な通信の複雑な部分がIPCスタック200により処理され、従って同様にあらゆるハードウェア依存が抽出されつくす。このIPCスタック200は、OSに特有のAPI層220によって特定のOSに結合された状態で示されている。
【0012】
このIPCスタック200は下記の5つの主要な層によって構成されている。
(1)IPCプレゼンテーションマネージャ(202) この層は、異なるシステムコンポーネント(例えば、ソフトウェアスレッド)の間で異なるデータタイプを変換する為に使用される。異なるタイプのプロセッサコア同士間のそのデータ変換に伴う問題を克服するのに十分なハードウェアが提供されている場合には、この層を迂回してもよい。
【0013】
(2)IPCセッションマネージャ(204) この層は、IPCスタックとシステムコンポーネントの全てとの間の着信/発信のIPCトラフィック全てのセントラルリポジトリである。このIPCセッションマネージャ204には主要な機能が幾つかあり、その中には、参加するIPCコンポーネントへのコンポーネントIDの割り当て、IPCアドレスの割り当て、認証/登録と、コンポーネントの認証、コンポーネント群へのルーティング、他のIPCノード群へのルーティングなどがある。この層は、IPCサーバとクライアントとを区別する唯一の層である。このセッション層はIPCノード群を検出する。
【0014】
こういったクライアントのセッション層のサービスは、サーバのセッション層のサブセットである。クライアントにより提供されるこういったサービスに加え、サーバが下記の機能を処理する。
【0015】
1.IPCノード群の認証及び登録
2.IPCノードの特権を無効にする権限
3.DRTの同期
4.IPCアドレスブロックの割り当て
5.ネットワークセキュリティ
コンパイル時には、あるIPCノードがあるサーバの役割を割り当てられる。しかし、任意の(信頼できる)IPCノードが実行時間の交渉によってサーバの仕事を引き受ける方法が提供されたほうがよい。この方法は、通信を保持したままでネットワークからサーバのノードを正常に除去するよう柔軟性をもたらすはずである。
【0016】
(3)IPCルータ層(206) このIPCルータ層は、ネットワークルーティングやポート専用化テーブルなどの必要なルーティング情報の全てを保存する。このIPCルータ層は、割り当てられたアドレス群と、そのサーバ又はあるクライアント内の専用化されたあらゆるポートとを常時監視している。この層は、ネットワーク全体に亘る任意のQoSについてのエンドツーエンドの帯域幅の配分の確保も担当している。
【0017】
IPC制御チャネルによってあるIPCクライアントが最初に自身の構成要求をブロードキャストする。そのブロードキャストをIPCサーバが受信しそのクライアントへのIPCアドレスで応じる。このIPCアドレスがそのプロセッサ(AP又はBP)の動的なルーティングテーブルに関連付けられる。このIPCサーバによってのみIPCアドレス群が動的に割り当てられる。このサーバを含むある特定のネットワークの中ではIPCノードは最大255個である。このネットワークからあるノードが除去されたとき、そのノードのIPCアドレスは無効になり新しいIPCノードに割り当て可能になる。このルータ層はパケット群のブロードキャストとQoSのピアツーピアとをサポートしなければならない。ルータは、そのノードの認証/登録が済むまでは、どんなパケットもルーティングしてはならない。
【0018】
(4)IPCデバイスインタフェース層(208) このデバイス層は、あらゆるインバウンドトラフィックとアウトバウンドトラフィックの物理媒体を抽出する。このIPCスタックの上位層群は、制御及びコンポーネントを移送するIPCスタックのサービス群とこのリンク全体に亘るコンポーネントのトラフィックとに頼っている。このデバイス層に接続された物理的IPCリンクは2つ以上の場合がある。このデバイス層の主要な機能の中には、ハードウェアポート群の検出、ポート群の列挙、パケット群の多重化及び多重分離、コンポーネント群への論理チャネル群の割り当て、物理媒体の同期、割り当てられたチャネル毎の物理的な帯域幅の保証などがある。
【0019】
このデバイス層はAPIの一組のHALを介してハードウェアとインタフェース接続する。このデバイス層は、IPCの物理チャネルから論理チャネルへのマッピングの割り当てを管理する。この層は、あらゆるIPCハードウェアポートに亘るデータフローをサポートするようこのIPCリンク下部の物理的な帯域幅の管理を任されている。この層は、多数のポート接続をサポートすると同時にIPCノード群のデイジーチェーン接続もサポートする。このデバイス層は更に、専用の及び非専用のIPCチャネル群のQoSも管理する。この層は、IPCデータを送受信する為の多重化操作及び多重分離操作を提供する。メッセージ群が構築されたら、この層はそのメッセージ群をその後の処理に向けセッションマネージャ204に回送する。
【0020】
このデバイスインタフェース層は、IPCの物理IPCチャネルから論理IPCチャネルへの管理を担当している。その主要な機能は、このスタックIPCが独立したハードウェアになるよう、IPCハードウェアを完全に抽出することである。このデバイスインタフェース層は更に、IPC論理チャネル群の全てをサポートするようこのIPCリンク下部の物理的な帯域幅を管理する。着信パスでは、このデバイスインタフェース層が異なる物理チャネル群からデータを手に入れこのデータを残りのIPCスタックまで通過させる。発信パスでは、このデバイスインタフェース層が、そのデータを適切な物理チャネル群に送ることによりそのデータをIPC論理チャネル群がロードするのを管理する。このデバイスインタフェース層は更に、そのデータをIPCハードウェアに送る前に、同一のIPCチャネルに属するIPCパケット群の連結も処理する。チャネルの要求がIPCセッションマネージャとIPCデバイスインタフェース層との間で前もって交渉される。このデバイスインタフェース層は、ハードウェアポート群を提供し、このハードウェアポート群が次にデバイスインタフェースをあるIPCクライアントに提供する。
【0021】
このIPCスタックは、確保した制御チャネルを全ての参加するIPCノード間で通信する為に使用する。電源投入時に、このIPCセッションマネージャのサーバが、このリンクを使用してメッセージ群をIPCクライアント群にブロードキャストし、また逆の場合も同様である。通常操作の間、このチャネルを使用してあらゆるAP及びBPの間で制御情報が運ばれる。制御チャネルは、その真下のIPCリンクから独立して、デバイス層によって帯域幅を保証されている必要がある。
【0022】
(5)IPCハードウェアAPI層(210) この層は、物理層のハードウェアポート群と残りのIPCスタックとの間に必要なインタフェースを提供する。このハードウェアAPI層は更にこのハードウェアポート群とこのIPCスタックとOSとの間に任意のプロトコル変換をもたらす。
【0023】
このIPCネットワークは、一組の物理リンクを介して一緒に通信するIPCノード群から成っている。このIPCネットワークについては、ノードを、このネットワーク上でIPC制御メッセージ群とデータメッセージ群とを他のノード群へ又は他のノード群から送受信する能力がある完全にIPCスタックに準拠したエンティティと定義する。各IPCノードが多数のIPCリンクをデイジーチェーン接続操作の為にサポートする。このIPCサーバは単に、このIPCクライアント群の登録/認証及びIPCアドレス割り当てを担当しているノードである。どのネットワークにもIPCサーバは一つだけしかないが、IPCクライアントのノードは幾つかある。各IPCノードは、このネットワークへの「ホット接続」の間か電源投入中は、動的に自身に割り当てられた一つの固有なIPCアドレスを持っている。
【0024】
IPCデータパケット群及び制御パケット群は、固有なIPCオペコード群(例えば、オーディオ復号のオペコードや、充電の為のATコマンドのオペコード等)を持っている。このIPCオペコード群は、そのIPCパケットで受信するIPCデータのタイプを指定する。IPCノードタイプはそのIPCノードを識別する固有なものである。コンポーネント224や226などのIPCコンポーネントには、そのIPCノードタイプ群が何を意味するのかと各IPCオペコードが何のために用いられるのかについてのプリコンパイル済みの知識がある。
【0025】
IPCノードタイプの例には、iDEN(登録商標)のBP、GPRSのBP等がある。同様に、別個の文書もそのIPCオペコード群と自身のデータ構造群とを定義する。コンポーネントソフトウェアは、この2つの固有なデータ定義を知ってさえいればよい。通信の複雑な部分はこのIPCスタックに委ねられている。このスタックの一部がルータ群でありIPCノード同士間のメッセージフロー操作を処理する。フロー制御はこのIPCスタック自身の機能であり、セッション層で透かし群を用いて実施される。
IPCアドレス割り当て
IPCアドレス群がIPCサーバ108とピアノード群とによってのみ割り当てられる。このノードは常に、自身に割り当てられたアドレスの範囲から最上位のIPCアドレスを選び取る。よってこのノードはこのIPCアドレスによって分かる。ノードがもう使用不可能なとき、そのIPCの特権は無効になり、従ってそのIPCアドレスももう有効ではない。このIPCソフトウェアがこのIPCノードの情報を無効化しネットワークから除去する。除去されたIPCノードにメッセージ群が送られた場合、親ルータが不正な宛先アドレスと共にエラーメッセージを戻す。一つのノードが2つ以上のIPCアドレスを持つことはできない。IPCアドレス群は任意のIPCネットワーク内で固有である。サーバのIPCアドレスは常に254に設定されている。サービス群のブロードキャストの為にアドレス255が確保される。
【0026】
IPC制御チャネルによってあるIPCクライアントが最初に自身の構成要求をブロードキャストする。そのブロードキャストをIPCサーバが受信しそのクライアントへのIPCアドレスで応じる。このIPCアドレスがそのプロセッサ(AP又はBP)の動的なルーティングテーブルに関連付けられる。このIPCサーバによってのみIPCアドレス群が動的に割り当てられる。このネットワークからノードが除去されたとき、そのIPCアドレスは無効になり新しいIPCノードに割り当て可能になる。
IPCメッセージのルーティング
このIPCネットワークで何らかの通信を行うことを希望するIPCノードは全て、まずこのIPCセッションサーバに登録しなければならない。認証が無事終了した後で、要求しているIPCノードがそのIPCネットワークでの通信の資格を得る。どのIPCノードにもルータがある。その機能は、IPCメッセージ群を次の宛先ノードにルーティングするか、このルータがこのIPCアドレスを任意のハードウェアポートの宛先のどれにも変えられない場合にはIPCメッセージ群を解消させることである。このルータがIPCメッセージ群を別のノードに回送している場合、このルータはこのメッセージをセッションマネージャまで通過させない。多数のノードに亘る通信チャネルを必要とするコンポーネント群は、それぞれ各自のルータを介してその全てのノードに亘る終端間のQoSを要求する必要がある。その下のデバイス層からのチャネルのQoSをルータが要求してもよい。
IPCヘッダ
図3に示されているのはIPCヘッダ300である。このヘッダを全てのIPCパケットが持っている。ソースIPCアドレス及び宛先IPCアドレスをセッションマネージャが埋める。ソースコンポーネント識別番号(CID)はデータ要求の間に送られるものであり、宛先CIDは任意選択である。目標のCIDが書き込まれなかった場合、この宛先ノードはこのIPCメッセージを全ての加入しているコンポーネントに回送する。宛先CIDがソースコンポーネントにより書き込まれた場合には、このIPCメッセージはそのコンポーネントにのみルーティングされる。セッション層により最終のデータチェックサムが書き込まれ任意選択で作動させられたり作動させられなかったりする。ルータがIPCヘッダにルータの制御語を書き込んだ場合、このチェックサムは更新される必要がある。このチェックサムの計算にはIPCヘッダとメッセージのデータ部とが含まれる。デバイス層によりセッション層に向けてパケット群が受信側に送り届けられるとき、前者は、何らかのデータを上に向けて回送するより前に、チェックサムが検証されたことを確かめる。データチェックサムを任意選択で省いてもよいが、このIPCヘッダのチェックサムは常に含まれていなくてはならない。このチェックサムの最上位ビットは、このIPCパケットに属するデータがONかOFFかを示す。ONを「1」の状態が示し、OFFを「0」の状態が示す。このIPCヘッダは合計7バイトである。このIPCデータフィールドは単に図示の為に示されており、そのサイズはIPCパケットのデータ構造に依存している。
【0027】
IPC通信への参加を希望している新しいコンポーネントはみな、こういった動作を、まず、IPC識別番号(ID)をそのIPCセッションマネージャ(例えば、セッションマネージャ204など)に要求することによって行わなければならない。このローカルセッションマネージャ(例えば、そのコンポーネントが結合されているクライアントに設置されたセッションマネージャ)は次にIPCサーバのセッションマネージャにこの新しいIPCコンポーネント群について通告し、CIDの割り当てが提供される。本発明のある実施形態に従って、このCID群は動的であり、セッションマネージャ(例えば、サーバのセッションマネージャ)により再び割り当て可能である。このIPCサーバは主要なAP上にある可能性が最も高い。各IPCノードは固有なIPCノードIDを持っていることが好ましく、セッションマネージャはそのデータベースに下記の情報を参加しているIPCノード毎に保持する。
【0028】
IPCノードタイプ:例えば、特定のBP又はAP、無線ローカルエリアネットワーク(WLAN)のAPなど。
IPCアドレス:IPCノードのIPCアドレス。
【0029】
データタイプ:IPCノードのデータタイプ。
オペコードリスト:このリストは、コンポーネントが加入しているIPCメッセージオペコード全てのリストである。
【0030】
コンポーネントID:CID全てのリスト。
ここで図4を参照すると、IPCスタックが全ての主要なIPCテーブルと共に示されている。動的なルーティングテーブル(DRT)402には、ノードタイプ(プロセッサタイプ)、IPCアドレス情報、データタイプ、加入リストなどがある。この加入リストには、特定のノードのIPCにサポートされたメッセージオペコードの全てが含まれている。コンポーネントルーティングテーブル404には、オペコードの情報と各特定のオペコードに加入しているコンポーネントの全てとに関連している情報が含まれている。最後に、チャネルリソーステーブル406には各チャネルIDを物理チャネルIDのリストと関連させることが含まれている。
【0031】
このIPCスタックの幾つかの重要な機能とサービスとをセッション層(セッションマネージャ)が提供する。クライアントのこのIPCセッション層はサーバのIPCセッション層のサブセットである。IPCプロトコルをIPCノード群が全部サポートする。IPCサーバに登録され認証され次第、クライアントのIPCセッション層はこのIPCネットワークを介して通信可能になる。次にDRTがこのノードのセッション層で作成されサーバに送られる。そしてサーバはDRTのコピーをネットワークのそのIPCノード群に回送する。このコピーは活動中のIPCノードの各々にその他の参加しているノードについての十分な情報を提供する。
【0032】
IPCノードタイプとIPCオペコードには、各製造者が製造者自身の値を自由に選び割り当てることができる。IPCノードのタイプをDRT402の第1の入力が識別する。例えば、iDENのベースバンド(BP)が16進値の0x01を持つと仮定する。このIPCアドレスは、このノードがこのIPCネットワークに特定のハードウェアポートでつながれている限り、このノードに固有である。このアドレスは、本文書のルータの節で述べられたように、このノードのピアノード(より高いレベルで結合されたノード)により割り当てられている。このデータタイプがコア及びデータのアライメントのルールのタイプを記載する。このノードに登録され構成されたコンポーネント加入オペコードリスト全てをIPCオペコードリストが組み合わせる。このDRTのコピーが活動中のIPCノード全てにIPCサーバにより回送される。特定のノードについてこのIPCオペコードリストの変更があった場合、新しいコピーがサーバに送られる。するとサーバは新しい情報を活動中のIPCノード全てに回送する。
アウトバウンドデータの為のIPCノードアドレス検出
各IPCノードがこのIPCネットワークの活動中のDRT全ての最新のコピーを保有する。各IPCノードのDRTに変更があった場合、IPCサーバへの通告をセッション層が担当している。コンポーネントがそのパケットデータを送信の為にこのセッション層に回送するとき、コンポーネントは目標のノードの物理IPCアドレスについて何も知らない。代わりに、コンポーネントがそのIPCノードタイプにより目標のIPCノードを指定する。目標のIPCノードタイプに対応する目標のIPCアドレスを検出するのはセッション層にかかっている。目標のノードがこのIPCネットワークで使用可能な場合、このIPCアドレスはその対応するDRTからフェッチされる。他の場合には、このコンポーネントにエラーが戻される。よってこのコンポーネントは適切なAPIの機能を使用してネットワークの既存のIPCノードについての情報を知ることができる。
インバウンドデータの為のIPCコンポーネント検出
そのノードでIPCパケットが受信されたとき、IPCパケットの目標のIPCアドレスがルータにより検査される。そのIPCアドレスがノードのものだった場合、そのパケットはその後の処理に向けセッション層に回送される。このセッションは、登録されているコンポーネント群のオペコード加入リストに基づいて、そのメッセージをそのコンポーネント群に分配することを担当している。IPCパケット群は、加入リスト群とフィルタテーブル群とに依存して2つ以上のコンポーネントにより消費可能である。前述のように、コンポーネント群は、その構成プロセスの間に自身でIPCオペコード群又はサービス群に加入する。次に、セッション層がオペコード加入リスト(加入リスト)を構築して、インバウンドデータのIPCコンポーネントルーティングを助ける。
IPCコンポーネントルーティング層
セッションマネージャにはIPCコンポーネントルーティング層が備わっており、加入しているコンポーネント群と、データの完全な消費時にはバッファのないメモリとへのデータパケット群のブロードキャストと分配とを担当している。受信されたデータがどのコンポーネントによっても変えられない又は修正されないことが条件である。バッファデータへの上書きを希望するコンポーネント群は、まずローカルコピーを作り、IPCコンポーネントルーティング層に本来のバッファの解放の表示を送る。
【0033】
このIPCコンポーネントルーティング層の一部がフロー制御である。コンポーネント毎に透かしをプログラムできる。データパケット群が蓄積しており開放されてないとき、セッションマネージャは、IPCネットワークでフロー制御表示をブロードキャストする決定を下す。IPCノードが十分なパケット群を消費し透かしを下回るとき、データパケット群の受信を再開する為に別のフロー制御表示が送られる。コンポーネントのサービスがどれであるかを明らかにする又は単純に問題になっているIPCノードとの通信を遮断することで、情報を特定のコンポーネントに送るのを控えるようIPCノード群に通告する為にフロー制御を使用できる。
【0034】
図5には、本発明のある実施形態に係るIPCスタックがIPCチャネルをソフトウェアスレッド(例えば、オーディオ等)などのコンポーネントに提供する方法のブロック図が示されている。まず工程504でコンポーネント502がIPCチャネルを要求する。図5に示されているセッションマネージャが、定義されたAPIを用いて工程506でコンポーネントの要求をデバイス層と交渉する。それからデバイス層(デバイスインタフェース)が、データチャネル508などのハードウェアリソースを要求する。図5に示されているセッションマネージャが、工程510で、要求に応えて、その要求者にあるIPCチャネルを付与する。次にコンポーネント502が割り当てられたチャネル508で自身のデータを送る。それからデバイス層がそのデータをIPCネットワークに回送する。論理チャネルIDから物理チャネルIDへのマッピングはIPCデバイスインタフェースの役目である。
【0035】
ここで図6を参照すると、IPCクライアント初期化の第1の工程は、ローカルノードのルータによりIPCアドレス割り当て要求を送る工程である。ここでは全クライアントが、そのクライアントのピアノードからそのクライアントが肯定応答を受信するまで待機する。アドレス割り当てが受信されたとき、このクライアント群はまず、IPCクライアント602とIPCサーバ604との間で登録要求を送る(工程606)。すると工程608でIPCサーバ604はIPCクライアント602に対しその要求を認証する。これにより工程610で登録が完了する。工程612でこのIPCクライアントのセッションマンガーがその動的なルーティングテーブルのコピーをIPCサーバに送る。
【0036】
このIPCクライアント初期化のプロセスの間になされる工程がより詳しく図7に示されている。工程702で、クライアントセッションマネージャ(表ではセッション(クライアント)として示す)がIPCサーバのセッションマネージャ(表ではセッション(サーバ)として示す)に構成要求を送る。工程704では、このIPCサーバのセッションマネージャにより認証が要求される。よって工程706でIPCクライアントとIPCサーバとの間の認証が実行された。
【0037】
構成要求のパラメータには、ノードタイプ、データタイプ、そのノードの動的なルーティングテーブルなどがある。セッションサーバは工程702の構成要求に応えて要求側にIPCアドレスを割り当てる。このセッションサーバは更に、動的なルーティングテーブルがない場合、要求側の為に動的なルーティングテーブルをセットアップする。その後、工程708に見られるように、セッションサーバは要求側に構成表示を送る。
【0038】
この構成表示の受信に応えて、セッションクライアントに付随するコンポーネント群がクライアントのセッションマネージャに制御/データを要求する。すると工程710でセッションクライアントは構成表示確認メッセージをセッションサーバに送る。この「構成表示確認」メッセージにはパラメータがなく、工程710で構成表示確認メッセージを受信すると、セッションサーバは新たに構成されたセッションクライアントに対しIPCストリーム群を起動できる。それから工程712と工程714とでセッションサーバはセッションクライアント群に構成更新メッセージ群を送る。これにより、図7に示されているセッションクライアント両方がそれぞれの動的なルーティングテーブル(図示せず)を更新し、工程716と工程718とでセッションサーバに構成更新確認メッセージを送ることになる。この構成更新確認メッセージ群を受信したとき、セッションサーバはIPC参加者の全てが更新されたことを確かめる。
【0039】
別のノードのIPCセッションマネージャによりパケットが受信されたとき、これはデータの形になり、このデータの形には、ソースコンポーネントID、宛先ID、BP又はAPのタイプなどがある。このIPCセッションマネージャは、宛先IDが書き込まれなかった場合には宛先コンポーネントIDを追加する。このIPCセッションマネージャが、この宛先IDを、受信したメッセージオペコードに基づいて検出する。この宛先IDはあるルックアップテーブルに基づいている。このルックアップテーブルは、コンポーネントが新しいIPCメッセージオペコードに加入する(例えば、IPCセッションマネージャに要求を送ることによりあるオーディオコンポーネントがオーディオメッセージ群に加入する)たびに動的に更新される。
【0040】
IPCノード群がその構成要求をIPCサーバに送ると、そのIPCノード群は認証される。これがなされるのは、電源投入の際か、ネットワークへのそのIPCノードの「ホットプラグ」の際である。このIPCノードはそのノードタイプによって自身を識別する。このネットワークには複製のIPCノードタイプはないものとする。このネットワークに既に存在するタイプの別のIPCノードがネットワークに加わる場合、サーバは拒絶の表示をそのノードに送らなければならない。
【0041】
図8には、本発明のある実施形態に係る、あるコンポーネントとそのIPCセッションマネージャとの間での、一般的な宛先ID検出シーケンス中のイベント群のシーケンスが示されている。工程802では、このコンポーネントがそのソースID(宛先IDは送らない)と、宛先BP又はAPのタイプと、ヘッダとデータとを含むIPCデータとを送る。工程804では、このIPCセッションマネージャがIPCデータのヘッダのオペコードと宛先BP又はAPのタイプとを調べ、これによって、対応する動的なルーティングテーブルを捜して正しい宛先アドレスを見つける。工程806では、このIPCセッションマネージャがそのコンポーネントのIPCアドレスを書き込みそれをデバイス層まで送る。メッセージのブロードキャストが必要な場合、このIPCアドレスの宛先フィールドを0xFFに設定する。
【0042】
図9には、IPCコンポーネントの初期化の間になされる典型的な工程が示されている。図9に示されているIPCサーバによってBPが構成され次第、BPはコンポーネント902などのコンポーネント群を異なるサービス群に加入させる。工程904でコンポーネント群が自身でオーディオやビデオなどの機能に加入できる。次にこのコンポーネント加入情報が、コンポーネントID作成の為に(IDがまだ割り当てられていない場合)、そして特定のIPCアドレスの動的なルーティングテーブルの作成又は更新の為に、IPCセッションマネージャに送られる(工程906)。工程908では、このセッションマネージャが工程906の情報によってIPCサーバを更新する。工程912でこのIPCサーバにより動的なルーティングテーブルの確認がIPCクライアントに送られる。このサーバが通告され次第、工程910で新しい動的なルーティングテーブルの更新が参加するプロセッサ全てにブロードキャストされる。
【0043】
同様のコンポーネントの初期化プロセスが、図10では、コンポーネント(クライアント)1002と、クライアントセッションマネージャとも言うセッション(クライアント)1004と、サーバセッションマネージャとも言うセッション(サーバ)1006との間で示されている。工程1008でコンポーネント(クライアント)1002によりコンポーネントの構成要求が送られる。更にクライアントセッションマネージャ1004がコンポーネントIDを割り当て新しいオペコードのリストをその動的なルーティングテーブルに追加する(図示せず)。工程1010では、クライアントセッションマネージャ1004が、コンポーネントIDを含む構成返答を送る。この構成返答に応えて、コンポーネント(クライアント)1002がそのIDをクライアントのセッションマネージャ1004から受信する。
【0044】
工程1008の構成要求にクライアントセッションマネージャ1004が工程1010で返答し次第、工程1012でクライアントセッションマネージャ1004はセッションサーバ1006に構成更新要求を送る。構成更新要求のパラメータ群は、動的なルーティングテーブルでなされた任意の新しい変更である。そのIPCアドレスの動的なルーティングテーブルをセッションマネージャが更新する。それから工程1016でこのサーバセッションマネージャ1006が全IPCクライアントに構成更新を送り、同時に工程1014でIPCクライアントに構成更新表示も送る。サーバのセッションマネージャ1006は、IPCサーバがそのルーティングテーブルを送られた変更により更新したことを確かめる。
【0045】
動的なルーティングテーブル群をパラメータ(単数又は複数)として含む工程1016の構成更新メッセージでは、セッションサーバ1006は動的なルーティングテーブル群を更新し、工程1018で構成更新確認メッセージを送る。その後このセッションサーバ1006は、IPC参加者の全てが更新されたことを確かめる。
【0046】
このIPCセッションマネージャが発信IPCパケット群及び着信のIPCパケット群のルーティングパスを決定する。発信パケットのルートはコンポーネントのIPCアドレスにより決定される。その宛先アドレスがローカルプロセッサのものであることが判明した場合、IPCからオペレーティングシステム(OS)へのマッピングがこのセッションマネージャの内部で実行される。その宛先アドレスがあるローカルIPCクライアント用のものであることが判明した場合、このパケットはその後の処理(例えば、カプセル化)に向けIPCスタックに送られる。ここで留意すべきは、そのIPCパケットを送るコンポーネントと同一のプロセッサに宛先コンポーネントが設置されている場合、カプセル化は不要でありそのパケットは通常のOSのメッセージ呼び出し(例えば、マイクロソフトメッセージキュー等)により引き渡されることである。このようにコンポーネント群は自身のメッセージ入力方式の修正のことを考えなくてよい。コンポーネント群は自身のメッセージ記入方法論をOSに特有の設計の代わりにIPCの呼び出しに変更するだけでよく、このIPCの呼び出しはこの実施形態で指定したOSの層で抽出されつくす。
【0047】
着信パケット群については、メッセージの宛先アドレスがIPCサーバのものに等しくない場合、この着信パケット群はルータにより適正なIPCクライアントへとルーティングされる。着信パケット群のルーティングはIPCノードのルータマネージャにより処理される。他の場合には、このメッセージは、コンポーネントの宛先IDが有効なコンポーネントID又は0xFFに設定されているかどうかに依存して正当な単数又は複数のコンポーネントに回送される。
【0048】
このIPCルータのブロックはIPCデータを宛先コンポーネントに移送する。着信IPCメッセージ群が、中でも、オーディオやモデム等のものなどの発信者のコンポーネントIDとIPCメッセージオペコード群とを持っている。IPCセッションマネージャはそのコンポーネントルーティングテーブルに頼ってIPCデータを正当なコンポーネント(単数又は複数)に送る。この動的なルーティングテーブル及びコンポーネントルーティングテーブルの両方がIPCサーバ/クライアントによって更新される。
【0049】
電源投入の間、各コンポーネントが、IPCコンポーネントIDを得る為に自身をそのセッションマネージャに登録している必要がある。加えて、各コンポーネントは、オーディオやモデムなどの着信IPCメッセージ群に加入している必要もある。この情報は、IPCセッションマネージャにより使用できるよう、コンポーネントルーティングテーブル及び動的なルーティングテーブルに保存されている。
【0050】
図11に示されているように、コンポーネント1102が、工程1104に見られるようにそのデータ要求をIPCセッションマネージャに送り、宛先IPCノード(例えばBP)にある検査がなされる。このIPCノードがIPCメッセージオペコードをサポートしない場合、このコンポーネント1102にエラー応答が戻される。このエラー応答に加えて、IPCセッションマネージャは、その特定のオペコードを受信する能力があるIPCノード全ての更新を返す。このメッセージをIPCセッションマネージャがどのIPCノード(単数又は複数)にリダイレクトするかの決定は、このコンポーネントにかかっている。この宛先コンポーネントがIPCネットワークに設置されているがローカルプロセッサには設置されていないことをこのセッションマネージャが判断した場合、このデータがIPCネットワークに送られる前に、このデータをIPCセッションマネージャ1106はまずIPCヘッダ情報によってカプセル化する。
【0051】
IPCコンポーネント群は、IPCプロトコルのスタックを用いて一緒に通信するスレッド群又はタスク群である。同一のコアに備わっているコンポーネント群には、他のローカルコンポーネント群との通信用のIPCのAPIを迂回するという選択肢があるが、望ましくはない。ここで意図していることは、そのコンポーネントのソフトウェアを、そのコンポーネントの物理的な場所及び基礎をなしているOSから独立した状態に保持することである。IPCスタックとのコンポーネントのインタフェースは、サーバとクライアントとで違いはない。
IPCスタックを介したコンポーネントの通信
コンポーネント群は相互通信/内部通信メッセージングの標準的なAPI呼び出しを使用する。このAPI呼び出し群は、ひとつのOSのプラットフォームから次のものに変わらない。これにより、コンポーネントがどこで動いているかに関わらず、データメッセージ群の移送に対処するコンポーネントソフトウェアを同じ状態のままにしておける。加えて、コンポーネント群は、IPCセッションマネージャへのサービス呼を介して、要求しているサービス群の中に局所的に存在するもの又はIPCリンクを必要とするものがあるかどうかを検出できる。宛先コンポーネントが局所的に備わっている場合には、IPCセッションマネージャが、送信用のデバイス層にデータを回送することなく、このメッセージを正当なコンポーネントに回送する。
IPCコンポーネントIDの割り当て
何らかのIPC通信への参加を希望しているコンポーネントは全て、こういった動作を、まず自身をIPCスタックと一体となるよう構成することによって行わなければならない。ノードのセッションマネージャはコンポーネント群を認証しそのコンポーネント群にCIDを割り当てる。各コンポーネントはCIDを2つ以上持つことはできない。コンポーネント群がIPCノードからアンインストールされた場合には、コンポーネント群のCIDは除去されなくてはならずIPCネットワークに通告する必要がある。適切な除去のコマンドをIPCセッションマネージャに送るのは、アンインストーラ又は同等のソフトウェアの担当である。一般的な使用の場合には、コンポーネント群が、IPCメッセージを送るのに自身の目標のコンポーネントのCIDを知らなくてもよい。このコンポーネント群からのルーティング抽出を管理するのは、IPCソフトウェアの担当である。場合によっては受信したIPCメッセージに返答するようなコンポーネント群は、ソースCIDを目標にすることで返事をリダイレクトする。この場合はその目標のノードがメッセージをその特殊なコンポーネントに回送し、加入しているコンポーネント全てには回送しない。コンポーネント群のCIDはそのノード内で固有でありノード同士間では固有ではない。
論理的なIPCチャネル配分
コンポーネント群はIPCネットワークで通信するのに論理チャネル群を用いる。論理チャネル群は、各コンポーネントから要求されたQoSに基づいてデバイス層により割り当てられる。コンポーネント群には多数の論理チャネルが割り当てられる。本発明のある実施形態に従って、チャネルには専用と非専用の2つのタイプがある。コンポーネント群がチャネルのタイプを選ぶ。専用のチャネル群は、そのコンポーネントがそのチャネルを使用するときいつもコンポーネントのQoSが使用可能であることを保証する。異なるQoSのチャネルが2つ以上コンポーネント群に与えられる可能性があるので、IPCの帯域幅がなくなる恐れがある。
【0052】
コンポーネント群にこの通信リソース群を共有させ続ける為に、デバイス層が非専用のチャネル群を随意選択で提供する。非専用のチャネルのQoSは、その帯域幅が使用可能な場合には保証され、他の場合には合計のロードに依存してQoSは低下する。多数のノードに亘るQoSを専用のチャネル又は非専用のチャネルに付与することができる。
専用チャネルと非専用のチャネル
専用のチャネル群はコンポーネントから要求されたQoSを保証する。そのチャネルが解放されていない限り、そのチャネルのQoSは履行される。非専用のチャネル群はQoSを保証できないが、余分の帯域幅が使用可能になったときデータを送ろうと連続的に試みる。非専用のチャネル群には予想可能なリアルタイムの性能はないが、非同期の、低帯域幅のデータの為に使用できる。コンポーネント群は、2つ以上のチャネルを要求することにより、異なるQoSを同時に確保できる。コンポーネント群は、自身のチャネル群を解放すると決めるまで、自身のチャネル群を保持する。しかし、優先権の高いほかのものによりスタックが供給されて、ある専用のチャネルについてのあるコンポーネントの特権が除去される。この場合は、あるチャネルを所有しているコンポーネント群が通告され、そのチャネルを解放するかそのコンポーネント群のチャネルを非専用のモードへと変えるよう求められる。
QoSの割り当て及びコンポーネントの優先権
コンポーネント群が論理チャネル群をあるQoSに基づいて要求する。QoSの定義はデータ速度である。QoSがそのコンポーネントにより指定されデバイス層と交渉される。加えて、コンポーネント群が登録及び認証のプロセスの間に優先権を割り当てられる。この優先権はIPCセッションマネージャに用いられ、コンポーネントの特権が、特権の程度の低いコンポーネント群のチャネル群とサービス群とを無効にし要求する際に検証される。
IPCコンポーネントの加入リスト
IPCスタックとのコンポーネントの登録の一部は構成要求である。あるコンポーネントが認証されたとき、そのコンポーネントはセッションマネージャからあるCIDを受信する。ここで、このコンポーネントは、異なるIPCオペコードに加入することにより自身をIPCスタックと一体となるよう構成する場合がある。このコンポーネントは、対象となっているオペコード群を選びそのオペコード群をセッション層に登録する。コンポーネントが、別の構成要求をセッションマネージャに送ることにより、自身のオペコードのリストへの加入をやめることを決めたり変更したりしてもよい。
【0053】
図12には、IPCスタックとの典型的なコンポーネントの通信が示されている。示されているのは、あるコンポーネントとIPCスタックとの間の典型的な登録要求と構成要求と論理チャネル要求である。
【0054】
本発明のある実施形態に係る典型的なIPCデータ要求が図13に示されている。工程1302では、コンポーネントが更新要求を送る。コンポーネント更新パラメータには、好ましくはノードタイプとオペコードとが含まれる。このコンポーネントがその宛先オペコードをサポートするノードタイプ群を検索する。このノードタイプが0xFFに等しい場合、セッションマネージャはまず、このコンポーネントの情報をIPC参加者全員のノードテーブル全てに送る。このオペコードフィールドが0xFFに等しい場合、セッションマネージャはまず、このコンポーネントを指定のノードタイプに属するオペコードリストに送る。一方、オペコードが特殊な値を持っている場合、セッションマネージャはまず、このコンポーネントに、ノードタイプがその特定のオペコードをサポートするかサポートしないかに対応した真の値又は偽の値を送る。
【0055】
工程1304では、このコンポーネントにコンポーネント更新表示が送られる。このノードタイプが0xFFに等しい場合、ノードテーブル群はコンポーネントに戻される。このオペコードフィールドが0xFFに等しい場合、オペコードのリストはコンポーネントに戻される。しかし、このオペコードが特殊な値の場合、真のメッセージ又は偽のメッセージが返される。工程1306では、コンポーネントデータ要求がなされる。このコンポーネントデータ要求のパラメータには、ノードタイプ、IPCメッセージオペコード、IPCメッセージデータ、チャネルID、コンポーネントIDなどがある。コンポーネントデータ要求では、セッションマネージャはノードタイプを検査してこのオペコードがサポートされているかどうかを判断する。ノードタイプがこのオペコードをサポートしていない場合、工程1308でコンポーネント更新表示が送られる。しかし、ノードタイプがこのオペコードをサポートしている場合、工程1310でデータ要求がデバイス層に送られる。このデータ要求パラメータには、IPCメッセージ、チャネルID、IPCヘッダなどがある。
【0056】
デバイス層はこのデータ要求メッセージをチャネルIDに基づいて送ることになっている。デバイス層はIPCハードウェアをポートのヘッダ情報に基づいて選択する。データがコミットされ次第、1312でデータ確認メッセージがセッションマネージャに送られる。工程1314では、セッションマネージャはまずコンポーネントにコンポーネントデータ確認メッセージを送る。このコンポーネントは、更に多くのIPCメッセージを送る前にこの確認を待つことも可能である。このコンポーネントは、データ確認が受信され次第、続けて次のIPCメッセージを送ることも可能である。
【0057】
工程1316では、デバイス層が、IPCメッセージデータやIPCヘッダなどを含むデータ表示メッセージを送る。ルータマネージャはこのメッセージの宛先IPCヘッダを検査し、ローカルIPCアドレスと異なる場合、マネージャはこのメッセージを正当なIPCノードに送る(ルーティングする)。工程1310では、セッションマネージャは確保したチャネルIDと共にデータ要求をルータ層に送る。セッションマネージャは宛先コンポーネントIDを検査し、これが0xFFに等しい場合、このメッセージを、このオペコードに加入しているコンポーネント全てにルーティングする。工程1318では、セッションマネージャはコンポーネントデータ表示メッセージを送りコンポーネントはIPCデータを受信する。
【0058】
このIPCスタックは、確保した制御チャネルを全ての参加するIPCノードの間で通信する為に使用する。電源投入時に、IPCサーバのセッションマネージャは、このリンクを使用してメッセージ群をIPCクライアント群にブロードキャストし、また逆の場合も同様である。通常操作の間、この制御チャネルを使用してあらゆるAP及びBPの間で制御情報が運ばれる。
【0059】
図14には、IPCスタックとIPCハードウェアとの間に設置された制御チャネル1402〜1406が示されている。異なるIPCハードウェア間でデータを送る際に、データパケット群1410と共に制御チャネル情報1408も送信される。そのIPC制御チャネルによってあるIPCクライアントが最初に自身の構成要求をブロードキャストする。そのブロードキャストをIPCサーバが受信しそのクライアントへのIPCアドレスで応じる。このIPCアドレスはその特定のプロセッサ(AP又はBP)の動的なルーティングテーブルに関連付けられる。
IPCのAPI(APPLICATION PROGRAM INTERFACE)
以下に、本発明のIPCプロトコルの為の高いレベルのAPIを幾つかリストアップする。各々が定義された一組のAPIの呼び出しを持つ。
1)コンポーネント/セッションの高いレベルのAPI
コンポーネントの登録及び認証
これは、コンポーネント群とそのローカルセッションマネージャとの間の登録及び認証のプロセスである。
コンポーネントの構成及び管理
これは、コンポーネントのローカルセッションマネージャによるコンポーネントの構成のプロセスである。
コンポーネントチャネルの管理
これは、データを他のIPCノード群に送る為に論理チャネルを取得するプロセスである。
コンポーネントデータの管理
インバウンドIPCデータ及びアウトバウンドIPCデータに加えフロー制御もここで処理される。
コンポーネントルーティングのサービス
IPCパケット群のコンポーネントルーティングの複雑な部分がここで処理される。
2)デバイス/ルータのインタフェースの高いレベルのAPI
IPCパケットのルーティング
IPCパケット群のルーティングがここで処理される。
チャネル帯域幅の管理
論理チャネル/物理チャネルの管理がここで処理される。
ハードウェアポートのハードウェア検出
IPCリンクのハードウェア検出がここで処理される。
IPC物理チャネル管理
アドレス割り当てがここで処理される。
【0060】
図15には、無線通信装置(例えば携帯電話等)などの電子デバイス1500のブロック図が示されており、この電子デバイス1500には、あるIPCネットワークを用いて互いに通信しているベースバンドプロセッサ(BP)1502とアプリケーションプロセッサ(AP)1504とがある。本発明のIPCプロトコルは、通信装置などのシステムの多数のプロセッサ同士間の通信を提供する。このIPCは、移動通信応用(MA)クライアント(例えば、iDEN(登録商標)WLAN)をパーソナル通信システム(PCS)応用などのMAサーバに登録させ、それぞれが自身のMAの中ではそれに依存しているソフトウェアアーキテクチャやオペレーティングシステムやハードウェアなどのうち、どれにおいても、いかなる制限も受けずに2つのMAが自由に通信できる手段を提供する。
【0061】
このIPCプロトコルにより、任意のIPC適合のMAが通信の為にIPCリンクに動的に追加可能になる。よって、コンパイル時又はその他のソフトウェアの前提に全く依存せずにIPCネットワークが形成される。本発明のIPCは、IPCスタックと通信する為の標準的な方法をソフトウェアコンポーネント群に呈示し、そのスタックの下のハードウェアも抽出されるので、コンポーネント群が通信する為に異なるリンクを選べる。
【0062】
ここで図16を参照すると、ソフトウェアスレッド1602、1604、1606などの3つのコンポーネントと、このコンポーネント群がアウトバウンドストリーミングをどのように確立するかが示されている。ソフトウェアスレッド1602は、例えば、所定のQoS1608の要求1612を送り、自身のオペコード加入リスト1610を提出する。代わりに、メッセージ1618に応え、ソフトウェアスレッド1602はチャネルID1614とコンポーネントID1616とを割り当てられる。本発明のある実施形態に係るソフトウェアスレッド1602、1604、1606などのコンポーネントが、各自の要求に依存してIPCハードウェアリソース群を割り当てられる。このコンポーネント1602、1604、1606は、このシステム要求に依存して動的にインストール又はアンインストール可能である。
【0063】
図17では、コンポーネント1602、1604、1606が、各自の割り当てられたチャネル、例えばソフトウェアスレッド1602ならチャネル1702などでIPCデータを送る。このコンポーネント1602、1604、1606は各自のデータを目標のIPCノードと共に提出し、ノードが指定されていないときはコンポーネント群が更に各自のメッセージを全てのIPCノードにブロードキャストする。このコンポーネント1602、1604、1606は、宛先コンポーネント群のIDも、その関連付けられたチャネル群も、そのIPCアドレスも知らなくてよい。インバウンドストリーミングに関しては、メッセージオペコード群がコンポーネント群を識別する。例えば、図18では、コンポーネント1602、1604、1606がメッセージオペコード群により識別される。先に述べられたコンポーネントルーティングテーブルを介してコンポーネントID群が検出される。IPCセッションマネージャは、そのメッセージのIPCオペコードに加入済みのコンポーネント全てに着信データをルーティングする。
IPCポート群の動的な専用化
改善されたオーバーヘッド効率を提供しシステムの待ち時間を低減させる為に、本発明に係るIPCプロトコル/ネットワークがIPCネットワーク内でのポート群の動的な専用化を提供する。例えば、クライアントのプロセッサが音声のサンプル又は他のリアルタイムデータなどの大量のデータを送信する必要があるとき、本発明に従い、クライアント及びサーバは一つ以上のサーバのポート/クライアントのポートの専用化を交渉する。
【0064】
図19にはIPCネットワークが示されており、このIPCネットワークには、サーバ1902と、このサーバ1902に結合された第1のクライアント(クライアント2)1904と第2のクライアント(クライアント3)1906と第3のクライアント(クライアント4)1908とがある。第1のクライアント1904は、自身に結合された2つのサブクライアント、即ちクライアント(2.1)1910とクライアント(2.2)1912とを持っており、第2のクライアント1906は、自身に結合された1つのサブクライアント、即ちクライアント(3.1)1914を持っている。第3のクライアント(クライアント4)1908は、自身に結合されたカメラ1916を持っている。図19に示されているネットワークについて述べると、互いに直接的に結合されたノードをピアIPCノードと呼び、例えば、クライアント2〜4(1904〜1908)はサーバ1902のピアノードであり、クライアント2.1及び2.2(1910〜1912)はクライアント2(1904)のピアIPCノードである。あるIPCピアノードがある一定のノードより高いレベルでも低いレベルでもよく、例えば、サーバ1902はクライアント2(1904)のピアIPCノードであり、同時に、低いレベルのサブクライアント2.1及び2.2(1910〜1912)もクライアント2(1904)のピアIPCノードである。
【0065】
クライアント1904〜1914の各々はある範囲のアドレス群を割り当てられ、このクライアントの各々は、その範囲の他に、フローチャートに示されているように自身のポートアドレスとしてIPCアドレスを手に入れる。サーバ1902は自身が持っているハードウェアポートの総数に亘って全ての使用可能なIPCアドレスを分けるが、サーバ1902は自身の為にアドレス「254」を確保し、メッセージ群をIPCネットワークに亘りブロードキャストする為にアドレス「0xFF」が確保される。
【0066】
この説明用の実例では、サーバは8つのポートを持っているので、256(この例でのアドレスの総数)を8で除算しポート毎に32のアドレスが得られるものとする。よって第1のクライアント1904にアドレス0〜31が割り当てられ、第2のクライアント1906にアドレス32〜64が割り当てられる。サブクライアント1910〜1914を持つクライアント1904及び1906の各々は、図21に示されている続きのポート列挙フローチャートに更に示されているように、更に自身に割り当てられているIPCアドレスをそれぞれのサブクライアント群に細分する。
【0067】
クライアント1904〜1914の各々はそれぞれ、IPCアドレス対ハードウェアポートのマッピング情報を含む自身のネットワークルーティングテーブルを埋める。図19に示されているカメラ1916がハードウェアAPI層(HAL)を介してインタフェース接続しているので、このカメラ1916にはPCポートを割り当てない。このカメラ1916はコンポーネントに直接的にインタフェース接続する。そのコンポーネントはこのカメラのインタフェースに関するオペコード群を回送又は受信する。
【0068】
図22には、サーバ1902のネットワークルーティングテーブルが示されている。この特定の説明用の実例では、サーバのポート1がアドレス0〜31に関連しており、第1のクライアント1904(アドレス31を持つ)に結合されており、サーバの第2のポートがアドレス32〜64に関連しており、第2のクライアント1906(アドレス64)と関連している、といったようになる。クライアント及びサブクライアント1904〜1914の各々は更に、各自のポート対IPCアドレスに関連している同様のネットワークルーティングテーブルを持っている。
【0069】
本発明に従い、サブクライアント(2.1)1910が、音声のサンプルなどの情報を、音声のサンプルを復号できる第2のクライアント(クライアント3)1906に送信する為に専用のパスを必要とする場合、サブクライアント(2.1)1910はIPCネットワークを介して第1のクライアント(クライアント2)1904にメッセージを送る。このメッセージは、ノードタイプや必要なQoSを含む。クライアント1904は、そのQoSをクライアント1904がサポートできる場合、サブクライアント1910に結合されたポートを専用化する。クライアント1904はメッセージを前述のノードタイプ及びQoS要求と共にサーバ1902に回送する。サーバ1902は、その要求をサーバ1902がサポートできると判断した場合、サーバ1902のポート1及び2の両方を専用化する。それからサーバ1902は、そのノードタイプやQoS情報を含んだメッセージをクライアント1906に送る。更にまた、クライアント1906がその要求をサポートできる場合、クライアント1906は自身のポートをその要求の専用にする。ここで、サブクライアント1910はクライアント1906までずっと続く専用のパスを手に入れた。リンクを確立しなくてはならない、各IPCノードのルータ層は、このリンクの次のノードに必要なQoSに基づいてチャネル群の確保を処理する。ルータ層は、デバイス層にチャネルを要求することにより、適切なチャネルを要求し確保しなくてはならない。
【0070】
ここで図23を参照すると、サーバ1902のポート専用化テーブル2300が示されている。このポート専用化テーブル2300はIPCスタックのルータ層に保存されており、サーバのポートの各々をリンクさせ専用の状況又は非専用の状況にする。特定のポート(単数又は複数)が専用化されている場合、サーバ1902がその専用化の解除を望む場合(例えば、一つ以上の専用のポートを必要とするもっと優先権の高い要求が入ってきた場合)を除いては、サーバ1902はこのポート群を他のタスクには割り当てない。クライアント1904〜1908とサブクライアント1910〜1914の各々は、自身のポートと、自身のポートの各々の現在の専用化の状況とに関連するポート専用化テーブルを持つ。
【0071】
この確保のプロセスは、所望の動作モード毎に違うやり方を選択して実施できる。実例として、ノードのクライアント2.1から2へのパスを、必要なQoSにより専用化することができる場合、ルータはテーブルのポートを専用化する。ネクストホップ要求がリンク内の次のIPCノードに行く。この場合は、ノード2.1はクライアント3に向かうパスの次のリンクを専用化しようとする。クライアント2とクライアント1とがそのリンクを現時点で専用化できない場合には、当面のあいだ待つ為にタイマを始動することができる。タイマの満了時に、本来の要求側にメッセージが送られ、既に確立されたリンクが任意選択で中止されるか、クライアント2とクライアント3との間のタイマが更に延長される。このリンクが無事に確立された場合、OKステータスメッセージが送り返されて、本来の要求していたコンポーネント(単数又は複数)は通告される。
【0072】
サブクライアント1910、クライアント1904、サーバ1902、クライアント1906のそれぞれに専用のルータ層毎に、サブクライアント(クライアント2.1)1910はクライアント(クライアント3)1906への専用のパスを持っている。これにより、このパスが専用化され次第、パケット群の転送の際にヘッダ情報を含まなくてよいので、データ転送を簡略化しオーバーヘッドを少なくすることができる。
【0073】
図24には、コンポーネントチャネル要求シーケンスが示されており、これには、コンポーネントチャネル要求に加え、セッション層からルータ層へのチャネル要求、デバイスからセッション層へのチャネル返答、コンポーネントチャネル返答が含まれる。送信された変数(例えば、ノードIDやQoS等)の全てが示されている。図25には、チャネル返答やピアツーピア要求が含まれるルータ層のチャネル要求が示されており、ピアツーピア要求には、次のルータ層とのエンドツーエンドのパスでの通信が含まれ、このエンドツーエンドのパスは専用でなくてはならない。更に示されているのは、ピアツーピアタイムアウト要求であり、これは、パスに沿ったデバイス層の一つがチャネルを所定の期間内に配分できない場合、前もって確保されたチャネル全てを含むリンクを解消させる。このルータ層のチャネル要求は、専用である通信パスのリンク毎に(このパスのIPCクライアント/サーバ毎に)繰り返される。
【0074】
本発明の好適な実施形態が図示され記載されたが、本発明はそのように制限されてはいないことが明白である。当業者は、添付の請求項により規定された本発明から逸脱することなく、非常に多くの、修正、変更、変形、代用、同等物を考え付くであろう。
【図面の簡単な説明】
【0075】
【図1】本発明のある実施形態に係るIPCネットワークの図。
【図2】本発明のある実施形態に係るIPCスタック。
【図3】本発明のある実施形態に係るIPCコンポーネントのIPC割り当て。
【図4】本発明のある実施形態に係る主要なIPCテーブル群。
【図5】本発明のある実施形態に係るチャネル配分を示す図。
【図6】本発明のある実施形態に係るIPCクライアントの初期化ルーチンの間に伴う工程を強調表示する図。
【図7】本発明のある実施形態に係るIPCクライアントの初期化の間に伴う工程を強調表示する別の図。
【図8】本発明のある実施形態に係るIPCカプセル化の第1のレベルを強調表示する図。
【図9】本発明のある実施形態に係るIPCコンポーネントの初期化の間になされる工程を強調表示する図。
【図10】本発明のある実施形態に係るコンポーネントの初期化の間になされる工程を強調表示するチャート。
【図11】本発明のある実施形態に係るIPCクライアントとIPCサーバとの間のIPCデータの転送。
【図12】本発明のある実施形態に係るIPCデータのヘッダの図。
【図13】本発明のある実施形態に係るIPCデータ要求の間になされる工程の図。
【図14】本発明のある実施形態に係るIPCネットワーク。
【図15】本発明のある実施形態に係る無線通信装置などの電子デバイス。
【図16】本発明のある実施形態に係るアウトバウンドストリーミングの図。
【図17】本発明のある実施形態に係るアウトバウンドストリーミングの図。
【図18】本発明のある実施形態に係るインバウンドストリーミングの図。
【図19】本発明のある実施形態に係るIPCシステムの図。
【図20】本発明のある実施形態に係る図19に示されているシステムのハードウェアポート列挙フローチャート。
【図21】図20のハードウェアポート列挙フローチャートの続き。
【図22】本発明のある実施形態に係るネットワークルーティングテーブル。
【図23】本発明のある実施形態に係るポート専用化テーブル。
【図24】本発明のある実施形態に係るコンポーネントチャネル要求シーケンス。
【図25】本発明のある実施形態に係るピアツーピアのルータチャネル要求シーケンス。

【特許請求の範囲】
【請求項1】
IPCサーバと、
同IPCサーバに結合された一つ以上のIPCクライアントと、からなり、
同IPCサーバはポート専用化テーブルを含む、プロセッサ間通信(IPC)ネットワーク。
【請求項2】
前記IPCサーバが一つ以上のポートを含み、前記ポート専用化テーブルが、専用化されている前記一つ以上のポートを常時監視している請求項1に記載のIPCネットワーク。
【請求項3】
前記一つ以上のIPCクライアントがそれぞれ更に、前記IPCサーバのポートの各々にどのアドレスが割り当てられているかを示すネットワークルーティングテーブルを含む請求項2に記載のIPCネットワーク。
【請求項4】
前記一つ以上のIPCクライアントのうち一つ又は前記IPCサーバが、ピアIPCノードである一つ以上のIPCクライアントのうち一つからポート専用化メッセージを受信すると、前記ポート専用化メッセージを送ってきた前記IPCクライアントに、専用化に使用可能なポートを前記IPCサーバが持っているかどうかを通知する請求項3に記載のIPCネットワーク。
【請求項5】
ピアIPCノードである前記一つ以上のIPCクライアントのうち一つ又は前記IPCサーバが更に、前記ポート専用化メッセージを送ってきた前記IPCクライアントに、前記IPCサーバが持っている使用可能な前記ポート(単数又は複数)についての情報を通知する請求項4に記載のIPCネットワーク。
【請求項6】
前記一つ以上のIPCクライアントの各々がポート専用化テーブルを持っている請求項2に記載のIPCネットワーク。
【請求項7】
前記一つ以上のIPCクライアントの各々にある前記ポート専用化テーブルの各々が、前記IPCクライアント自身のポート(単数又は複数)についての情報を含んでいる請求項6に記載のIPCネットワーク。
【請求項8】
IPCサーバとIPCクライアントとを持つIPCネットワークのポートを専用化する方法であって、IPCサーバとIPCクライアントとがそれぞれのポート専用化テーブルを持ち、
(a)前記IPCクライアントから前記IPCサーバに、ポート専用化メッセージを送信する工程と、
(b)前記IPCサーバから前記IPCクライアントに、前記IPCサーバが持っている使用可能なポートについて前記IPCクライアントに通知する情報メッセージを戻す工程と、
(c)前記IPCクライアントから前記IPCサーバに、前記IPCクライアントが専用化を望むポートを選択するメッセージを送信する工程と、
(d)前記IPCサーバから前記IPCクライアントに、前記要求されたポートが前記クライアントの使用の為に専用化されたことを前記クライアントに通知する所定のメッセージを送る工程と、を含む方法。
【請求項9】
工程(d)に応えて、前記IPCクライアントが自身のポート専用化テーブルを更新する請求項8に記載の方法。
【請求項10】
(e)前記IPCサーバから、前記専用のポートを解消させるメッセージを送る工程を更に含む請求項8に記載の方法。
【請求項11】
(e)前記IPCクライアントから、前記専用のポートの解放を要求する所定のメッセージを送る工程を更に含む請求項8に記載の方法。
【請求項12】
工程(d)の後で、前記IPCサーバも自身のポート専用化テーブルを更新する請求項9に記載の方法。
【請求項13】
工程(d)で前記ポートが専用化され次第、前記所望のデータパスに沿った前記リンクの各々での他のチャネルのデータロードの総計に関わらず、前記専用のポートで送信されたデータがサービス品質(QoS)を保証される請求項8に記載の方法。


【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate

【図20】
image rotate

【図21】
image rotate

【図22】
image rotate

【図23】
image rotate

【図24】
image rotate

【図25】
image rotate


【公表番号】特表2007−521584(P2007−521584A)
【公表日】平成19年8月2日(2007.8.2)
【国際特許分類】
【出願番号】特願2006−547155(P2006−547155)
【出願日】平成16年12月16日(2004.12.16)
【国際出願番号】PCT/US2004/042402
【国際公開番号】WO2005/062787
【国際公開日】平成17年7月14日(2005.7.14)
【出願人】(390009597)モトローラ・インコーポレイテッド (649)
【氏名又は名称原語表記】MOTOROLA INCORPORATED
【Fターム(参考)】