(57)【要約】  ホストデバイスにP2Pリンクを通して接続されたスレーブデバイスに対するアドレスの事前割当てを必要としないエニュメレーション技術が提供される。デバイス間のあらゆるP2Pリンクとの関係において、1つのデバイスがマスターインターフェースを含み、残りのデバイスがスレーブインターフェースを含む。マスターインターフェースとスレーブインターフェースとの間で区別するために、マスター/スレーブ状態ビットが使用され得る。各P2Pリンクは、対応するインターフェース(スレーブまたはマスター)のための状態ビットと連結されてノードIDを形成し得るリンクIDをもつ。ホストデバイスは、各スレーブデバイスから、スレーブのためのノードIDと、スレーブデバイスとホストデバイスとの間に介在するすべてのインターフェースのためのノードIDとの連結情報を表す固有の連結されたアドレスを受信する。次いで、ホストデバイスは、各スレーブデバイスに固有デカルトアドレスを割り当てる。
2018509715.tif 000002
【特許請求の範囲】
【請求項１】
ホストデバイスであって、
対応する複数の第1のスレーブデバイスに結合するための複数のポイントツーポイント(P2P)リンクに対応する複数のマスターインターフェースであって、各第1のスレーブデバイスが、前記対応するP2Pリンクを通して前記ホストデバイスにおける前記対応するマスターインターフェースに結合するためのスレーブインターフェースを含む、複数のマスターインターフェースと、
前記複数の第1のスレーブデバイスのために、エニュメレーション処理の開始のときに、各P2Pリンクに固有リンクIDを割り当てるように構成されたノードアグリゲータであって、前記ノードアグリゲータが、各第1のスレーブデバイスのスレーブインターフェースから、前記対応するP2Pリンクのための前記固有リンクIDを含む固有の連結されたアドレスを受信するようにさらに構成され、前記ノードアグリゲータが、前記第1のスレーブデバイスの固有の連結されたアドレスを含むメッセージを使用して、前記対応するマスターインターフェースを通して各第1のスレーブデバイスをアドレス指定するようにさらに構成され、前記メッセージが、前記第1のスレーブデバイスに割り当てられるビット最適化されたアドレスを含み、各スレーブデバイスのための前記ビット最適化されたアドレスは、各第1のスレーブデバイスのための前記固有の連結されたアドレスよりも短い、ノードアグリゲータと
を備える、ホストデバイス。
【請求項２】
前記ノードアグリゲータが、各固有の連結されたアドレスが前記対応する第1のスレーブデバイス内の前記スレーブインターフェースに対応するかマスターインターフェースに対応するかを識別するようにさらに構成された、請求項1に記載のホストデバイス。
【請求項３】
前記ノードアグリゲータが、プロセッサを備える、請求項1に記載のホストデバイス。
【請求項４】
前記ノードアグリゲータが、状態機械を備える、請求項1に記載のホストデバイス。
【請求項５】
各マスターインターフェースが、
GPIO信号の対応する送信セットを仮想GPIO信号の少なくとも1つの第1のフレームにシリアル化するように構成された有限状態機械と、
オーバーサンプリングクロックのサイクルに応答して、UART送信ピンを通して前記少なくとも1つの第1のフレームを送信するように構成された汎用非同期送受信器(UART)インターフェースとを備え、前記プロセッサが、前記第1のスレーブデバイスのビット最適化されたアドレスを使用して、前記第1のスレーブデバイスと通信することによって、各第1のスレーブデバイスのスレーブインターフェースにフレーム長を割り当てるようにさらに構成され、各有限状態機械が、前記割り当てられたフレーム長に従って、前記GPIO信号の対応する送信セットを前記仮想GPIO信号の少なくとも1つのフレームにシリアル化するようにさらに構成された、
請求項3に記載のホストデバイス。
【請求項６】
前記第1のスレーブデバイスの少なくともいくつかの各々が、複数の第2のスレーブデバイスから、対応する第2のスレーブデバイス内のスレーブインターフェースに別のP2Pリンクを通して結合されたマスターインターフェースを含み、別のP2Pリンクの各々が、リンクIDをもち、前記ノードアグリゲータが、前記第2のスレーブデバイス内の前記スレーブインターフェースからノードIDの連結情報に等しい第2の連結されたノードIDを受信するようにさらに構成された、請求項3に記載のホストデバイス。
【請求項７】
前記有限状態機械が、複数のメッセージングレジスタを含み、前記プロセッサが、前記メッセージングレジスタに複数のメッセージング信号を書き込むように構成され、前記有限状態機械が、前記メッセージングレジスタからの前記メッセージング信号を少なくとも1つの第2のフレームにシリアル化するようにさらに構成され、前記UARTインターフェースが、前記オーバーサンプリングクロックのサイクルに応答して、前記UART送信ピンを通して前記少なくとも1つの第2のフレームを送信するようにさらに構成された、請求項5に記載のホストデバイス。
【請求項８】
各々が固有リンクIDをもつ対応する複数の第1のポイントツーポイント(P2P)リンクを通してホストデバイスに結合された複数の第1のスレーブデバイスを含むシステムであって、各第1のスレーブデバイスが、前記対応する第1のP2Pリンクに結合されたスレーブインターフェースを含む、システムのために、スレーブビットと前記対応する第1のP2Pリンクのための前記固有リンクIDとの連結情報に等しいノードIDを各スレーブインターフェースから前記ホストデバイスに送信するステップと、
ノードIDの数を計数して、各スレーブインターフェースを一意的に識別するために必要な最小ビット数を決定するステップと、
前記スレーブインターフェースのノードIDを含む第1のメッセージを使用して、各スレーブインターフェースをアドレス指定して、少なくとも前記最小ビット数幅であるビット最適化されたアドレスを前記スレーブインターフェースに割り当てるステップと、
前記スレーブインターフェースのビット最適化されたアドレスを含む第2のメッセージを使用して、各スレーブインターフェースをアドレス指定して、前記スレーブインターフェースをエニュメレーションするステップと
を含む、方法。
【請求項９】
前記システムが、前記第1のスレーブデバイスのうち介在する1つの第1のスレーブデバイス内のマスターインターフェースに第2のP2Pリンクを通して結合されたスレーブインターフェースを含む第2のスレーブデバイスを含み、前記方法が、前記第2のスレーブデバイス内の前記スレーブインターフェースから、前記第2のスレーブデバイス内の前記スレーブインターフェースのためのノードIDと、前記第1のスレーブデバイスのうちの前記介在する1つの第1のスレーブデバイス内のマスターインターフェースのためのノードIDと、前記第1のスレーブデバイスのうちの前記介在する1つの第1のスレーブデバイス内の前記スレーブインターフェースのための前記ノードIDとの連結情報に等しい連結されたアドレスを、前記ホストデバイスにおいて受信するステップをさらに含む、請求項8に記載の方法。
【請求項１０】
前記ホストデバイスから、前記連結されたアドレスを含む第3のメッセージを使用して、前記第2のスレーブデバイス内の前記スレーブインターフェースをアドレス指定して、前記第2のスレーブデバイス内の前記スレーブインターフェースにビット最適化されたアドレスを割り当てるステップをさらに含む、請求項9に記載の方法。
【請求項１１】
前記第2のスレーブデバイス内の前記スレーブインターフェースをアドレス指定するステップが、前記第2のスレーブデバイス内の前記スレーブインターフェースに、前記第1のスレーブデバイスのうちの前記介在する1つの第1のスレーブデバイス内の前記スレーブインターフェースとマスターインターフェースとを通して、前記第3のメッセージを送信するステップを含む、請求項10に記載の方法。
【請求項１２】
各スレーブインターフェースをエニュメレーションするステップが、各スレーブインターフェースのための仮想GPIOフレーム長を割り当てるステップを含む、請求項8に記載の方法。
【請求項１３】
各スレーブインターフェースをエニュメレーションするステップが、各スレーブインターフェースにフロー制御技術を割り当てるステップを含む、請求項8に記載の方法。
【請求項１４】
各スレーブインターフェースをエニュメレーションするステップが、各スレーブインターフェースにエラー訂正技術を割り当てるステップを含む、請求項8に記載の方法。
【請求項１５】
各ビット最適化されたアドレスが、2の累乗のビット幅である、請求項8に記載の方法。
【請求項１６】
ホストデバイスであって、
対応する複数のスレーブデバイスの各々内のスレーブインターフェースに結合するための複数のポイントツーポイント(P2P)リンクに対応する複数のマスターインターフェースと、
エニュメレーション処理の開始のときに、各P2Pリンクに固有リンクIDを割り当てるように構成されたノードアグリゲータであって、前記ノードアグリゲータが、各スレーブインターフェースから、前記対応するP2Pリンクのための前記固有リンクIDを含む固有の連結されたアドレスを受信するようにさらに構成された、ノードアグリゲータと
を備え、
前記ノードアグリゲータが、前記スレーブインターフェースの連結されたアドレスを含むメッセージを使用して、各スレーブインターフェースをアドレス指定して、各スレーブデバイスにデカルトアドレスを再割当てするようにさらに構成され、各デカルトアドレスが、XアドレスとYアドレスとを含み、各スレーブデバイスのための前記Yアドレスが、前記スレーブデバイスがすべての介在するスレーブデバイスを通して前記ホストデバイスに結合するために必要とされるホップの数に基づく、
ホストデバイス。
【請求項１７】
前記スレーブデバイスが、列に配置され、各スレーブデバイスのための前記Xアドレスが、前記スレーブデバイスを含む前記列を識別する、請求項16に記載のホストデバイス。
【請求項１８】
各ノードアグリゲータが、プロセッサを備える、請求項16に記載のホストデバイス。
【請求項１９】
各ノードアグリゲータが、状態機械を備える、請求項16に記載のホストデバイス。
【請求項２０】
各マスターインターフェースが、
GPIO信号の対応する送信セットを仮想GPIO信号の少なくとも1つの第1のフレームにシリアル化するように構成された有限状態機械と、
オーバーサンプリングクロックのサイクルに応答して、汎用非同期送受信器(UART)送信ピンを通して前記少なくとも1つの第1のフレームを送信するように構成されたUARTインターフェースとを備え、プロセッサが、前記第1のスレーブデバイスのデカルトアドレスを使用して前記第1のスレーブデバイスと通信することによって、各第1のスレーブデバイスのスレーブインターフェースにフレーム長を割り当てるようにさらに構成され、各有限状態機械が、前記割り当てられたフレーム長に従って、前記GPIO信号の対応する送信セットを前記仮想GPIO信号の少なくとも1つのフレームにシリアル化するようにさらに構成された、
請求項16に記載のホストデバイス。
【請求項２１】
各有限状態機械が、複数のメッセージングレジスタを含み、前記プロセッサが、前記メッセージングレジスタに複数のメッセージング信号を書き込むように構成され、前記有限状態機械が、前記メッセージングレジスタからの前記メッセージング信号を少なくとも1つの第2のフレームにシリアル化するようにさらに構成され、前記UARTインターフェースが、前記オーバーサンプリングクロックのサイクルに応答して、前記UART送信ピンを通して前記少なくとも1つの第2のフレームを送信するようにさらに構成された、請求項20に記載のホストデバイス。
【請求項２２】
前記プロセッサが、各スレーブデバイスのデカルトアドレスを使用して各スレーブデバイスをアドレス指定することによって、各スレーブデバイスをエニュメレーションして、前記スレーブデバイスに仮想GPIOフレーム長を割り当てるように構成された、請求項18に記載のホストデバイス。
【請求項２３】
前記プロセッサが、各スレーブデバイスのデカルトアドレスを使用して各スレーブデバイスをアドレス指定することによって、各スレーブデバイスをエニュメレーションして、各スレーブインターフェースにフロー制御技術を割り当てるように構成された、請求項18に記載のホストデバイス。
【請求項２４】
前記プロセッサが、各スレーブデバイスのデカルトアドレスを使用して各スレーブデバイスをアドレス指定することによって、各スレーブデバイスをエニュメレーションして、各スレーブインターフェースにエラー訂正技術を割り当てるように構成された、請求項18に記載のホストデバイス。
【請求項２５】
第1のポイントツーポイント(P2P)リンクを通してホストデバイスに結合された第1のスレーブデバイスを含むシステムであって、前記システムが、前記第1のスレーブデバイスを通して前記ホストデバイスに結合された複数の第2のスレーブデバイスをさらに含む、システムのために、前記第1のスレーブデバイスにデカルトアドレスを割り当てるステップであって、前記デカルトアドレスが、第1のXアドレスと第1のYアドレスとを含む、前記第1のスレーブデバイスにデカルトアドレスを割り当てるステップと、
各第2のスレーブデバイスに、前記第2のスレーブデバイスが前記第1のスレーブデバイスに結合するために通る、前記第2のスレーブデバイスのうちの介在する第2のスレーブデバイスの数に応じて、前記第1のYアドレスからインクリメントされるYアドレスを割り当てるステップであって、前記第2のスレーブデバイスのうちの介在する第2のスレーブデバイスの前記数が、各第2のスレーブデバイスについてゼロ以上である、Yアドレスを割り当てるステップと、前記第2のスレーブデバイスのうちの他の第2のスレーブデバイスが前記Xアドレスが割り当てられる前記第2のスレーブデバイスと同じYアドレスを共有するか否かに応じて、前記第1のXアドレスからインクリメントされるXアドレスを各第2のスレーブデバイスに割り当てるステップと、によって前記第2のスレーブデバイスの各々にデカルトアドレスを割り当てるステップと、
各第2のスレーブデバイスのデカルトアドレスを使用して各第2のスレーブデバイスをアドレス指定するステップによって、前記第2のスレーブデバイスをエニュメレーションするステップと
を含む、方法。
【請求項２６】
前記第2のスレーブデバイスのうちの第1の1つから前記第2のスレーブデバイスの第2の1つに、前記第2のスレーブデバイスの前記第2の1つのための前記デカルトアドレスに基づいて、メッセージを経路設定するステップをさらに含む、請求項25に記載の方法。
【請求項２７】
各第2のスレーブデバイスが、仮想汎用入出力(GPIO)インターフェースを含み、各第2のスレーブデバイスをエニュメレーションするステップが、前記第2のスレーブデバイスに仮想GPIOフレーム長を割り当てるステップを含む、請求項25に記載の方法。
【請求項２８】
P2Pリンクを通して前記ホストデバイスに結合された第3のスレーブデバイスにデカルトアドレスを割り当てるステップをさらに含み、前記第3のスレーブデバイスのための前記デカルトアドレスが、前記第2のスレーブデバイスのためのいずれのXアドレスよりも大きいインクリメントされたXアドレスを含み、さらに、前記第1のYアドレスを含む、請求項25に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の相互参照
本出願は、2016年3月22日に出願された米国特許出願第15/077,841号の利益を主張する。加えて、本出願は、2015年3月24日に出願された米国仮特許出願第62/137,687号、および、2015年8月21日に出願された米国仮特許出願第62/208,312号の利益を主張する。
【０００２】
本出願は、集積回路に関し、より詳細には、集積回路のエニュメレーションに関する。
【背景技術】
【０００３】
モバイルデバイスなどのシステム内の集積回路の間の通信をサポートするために、多くのデジタル信号伝達プロトコルが開発されている。そのようなデジタル信号伝達プロトコルの例として、汎用入力/出力(GPIO)および汎用非同期送受信器(UART)が挙げられる。技術の進歩に伴い、これらの様々なデジタル信号伝達プロトコルが改良されてきた。たとえば、本件の譲受人は、GPIO有限状態機械がGPIOインターフェースを通してプロセッサから受信されたGPIOデータをシリアル化して、シリアル化されたGPIOデータを専用の送信ピンを通して送信する「仮想」GPIOアーキテクチャを開発した。プロセッサが従来のGPIOピンを通してGPIOデータを送信するとき、プロセッサは従来の手法でGPIOインターフェースとインターフェースをとり続け得るという点でソフトウェアの変更を必要としないので、GPIOデータの仮想化は、プロセッサにとって透過的である。したがって、プロセッサは、仮想GPIOインターフェースを通した通信に関して、ソフトウェアまたはハードウェアの変更を必要としない。遠隔集積回路は、シリアル化された仮想GPIOデータを専用の受信ピンを通して受信する。加えて、各仮想GPIO集積回路は、VGPIOの送信と受信とを同期するクロックピンを含み得る。2ピンの仮想GPIOの実施形態と3ピンの仮想GPIOの実施形態との両方が存在することとなるように、他の実施形態においてクロックピンが使用されない。
【０００４】
異なるデジタル信号伝達プロトコル構成が存在するので、システム内のホストプロセッサまたはデバイスにとって、デバイスエニュメレーションと呼ばれる処理中、システム内の残りのデバイスによって使用される特定の構成を識別することが望ましい。しかし、知られたデバイスエニュメレーション技術には問題がある。たとえば、デバイスエニュメレーションのための従来の一手法は、システム内の様々なデバイスにおけるヒューズの燃焼、または同様の一度だけプログラム可能なメモリを使用する。電源投入のときに、システムのホストデバイスが様々な残りのデバイスにおけるヒューズ状態を読んで、様々な残りのデバイスのエニュメレーションデータを取得する。しかし、そのようなヒューズベースのエニュメレーションは、ヒューズのためのダイ面積の必要性に関する欠点がある。代替的に、I/Oブートストラップエニュメレーションはエニュメレーションデータをプログラムするために、電源またはグランドのいずれかへの専用ピンの結び付けを伴う。したがって、I/Oブートストラップは、パッケージングコストを増やし、回路基板に追加的な構成要素を必要とする。最後に、エニュメレーションのためにファームウェアが使用されるが、このこともダイの要求と複雑さを高める。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
したがって、エニュメレーション技術の改善がこの分野で必要とされる。
【課題を解決するための手段】
【０００６】
ホストデバイスにポイントツーポイント(P2P)リンクを通して接続されたスレーブデバイスへのアドレスの事前割当てを必要としないエニュメレーション技術が提供される。デバイス間のあらゆるP2Pリンクに関して、1つのデバイスがマスターインターフェースを含み、残りのデバイスがスレーブインターフェースを含む。マスターインターフェースとスレーブインターフェースとの間で区別をするために、マスター/スレーブ状態ビットが使用され得る。各P2Pリンクは、対応するインターフェース(スレーブまたはマスター)のための状態ビットと連結されてノードIDを形成し得るリンクIDをもつ。マスターインターフェースとスレーブインターフェースとの各々は、ノードのためのマスター/スレーブ状態と、ノードに結合されたP2PリンクのためのリンクIDとの連結情報である、対応するノードIDをもつ「ノード」を備えると見なされ得る。ホストデバイスは、ノードのためのノードIDと、ノードとホストデバイスとの間におけるあらゆる介在ノードのためのノードIDとの連結情報を表すスレーブデバイス内の各ノードからの固有の連結されたアドレスを受信する。この固有の連結されたアドレスは、以下の説明において、「ホスト向けノードID」と呼ばれる。
【０００７】
各P2Pリンクは、対応するスレーブインターフェースとマスターインターフェースとの間を結合する。1つを上回るマスターインターフェースを含むデバイス(ホストまたはスレーブ)のマスターインターフェースに結合したP2Pリンクは固有であるので、各ノードのためのホスト向けノードIDは固有であることが保証される。この点について、各P2Pリンクは、P2Pリンクに結合されたマスターインターフェースが、P2Pリンクに結合されたマスターインターフェースを含むデバイス内の唯一のマスターインターフェースである場合に変更されない、デフォルトリンクIDをもち得る。1つを上回るマスターインターフェースを含むデバイスは、複数のマスターインターフェースの1つに結合された各P2Pリンクに、固有リンクIDを割り当てるように構成された、本明細書において「ノードアグリゲータ」と呼ばれる状態機械を含む。たとえば、デバイスが2つ以上のマスターインターフェースを含む場合、デバイスのマスターインターフェースのP2Pリンクのための各リンクIDが固有であるように、ノードアグリゲータは、そのデフォルトリンクIDをもつマスターインターフェースのP2Pリンクの1つを残すが、固有の変更されたリンクIDを各々がもつように残りのマスターインターフェースのP2Pリンクを変更し得る。次いで、この固有性は、結果として、各ノードのためのホスト向けノードIDが固有であることを保証する。
【０００８】
固有ホスト向けノードIDが与えられると、次いで、ホストデバイスが、固有デカルトアドレスなどのビット最適化されたアドレスを各スレーブデバイスに割り当て、各デカルトアドレスは、XアドレスとYアドレスとを含む。スレーブデバイスの結果として得られるネットワークを通した経路設定は、経路表の複雑さを伴わずにデカルトアドレスを使用して実施され得る。
【図面の簡単な説明】
【０００９】
【図１Ａ】本開示の一態様に従った、いずれのデバイスも1つを上回るマスターインターフェースを含まない例示的なP2Pシステムのブロック図である。
【図１Ｂ】本開示の一態様に従った、ホストデバイス内のマスターインターフェースと、スレーブデバイス内の対応するスレーブインターフェースとのための回路図である。
【図２】本開示の一態様に従った、ホストデバイスといくつかのスレーブデバイスとの両方が1つを上回るマスターインターフェースを含む例示的なP2Pシステムのブロック図である。
【図３】本開示の一態様に従った、ビット最適化されたアドレスを使用して複数のスレーブデバイスをエニュメレーションする動作の例示的な方法のためのフローチャートである。
【図３】本開示の一態様に従った、各スレーブデバイスに固有デカルトアドレスが割り当てられる、スレーブデバイスとホストデバイスとの例示的なネットワークを示す図である。
【図４】各スレーブデバイスに固有デカルトアドレスが割り当てられる、スレーブデバイスとホストデバイスとの例示的なネットワークを示す図である。
【図５】本開示の一態様に従った、図4に示すネットワークにおいて固有デカルトアドレスを割り当てる方法のためのフローチャートの図である。
【発明を実施するための形態】
【００１０】
以下の詳細な説明を参照することによって、本開示の実施形態とそれらの利点とが、もっともよく理解される。1つまたは複数の図に示される同様な構成要素を識別するために同様な参照符号が使用されることが理解されなければならない。
【００１１】
いずれの所与のデバイスにもアドレスを事前割当てする必要のないエニュメレーションシステムと方法とが提供される。したがって、ヒューズ、I/Oブートストラップ、またはファームウェアの使用などの従来のエニュメレーション技術における複雑さとダイ面積の必要性とが、有益に低減または除去される。これらの有益な特徴を提供するために、ホストデバイスは、複数のスレーブデバイスと通信するための1つまたは複数のポイントツーポイント(P2P)インターフェースを含む。1つのホストデバイスしか存在しないが、対応するP2Pインターフェースを通した他のスレーブデバイスとの関係において、スレーブデバイス自体がサブホストであり得る。結果として得られるシステム内において、あらゆる2つのノード間における直接的で物理的な接続(P2P接続)は、他のいずれのノードとも共有されない。したがって、そのようなノード間のP2P接続は固有であるので、アドレスの事前割当ては必要とされない。
【００１２】
ホストデバイスによるスレーブデバイスのエニュメレーションは、2段階にわたって実行される。第1のエニュメレーション段階において、ホストは、スレーブデバイスの「生アドレス」を取得する。本明細書においてさらに説明されるように、生アドレスは、デバイス(スレーブまたはマスター)の状態とリンクIDとの連結情報を表す。スレーブデバイスは、ホストデバイスまたは集積回路(本明細書で使用される場合、「デバイス」および「集積回路」は同義に使用される)に、別のスレーブデバイスを通してリンクし得ることに留意されたい。たとえば、第1のスレーブデバイスは、ホストデバイスに、第2のスレーブデバイスを通してリンクし得る。第1のスレーブデバイスとの関係において、第2のスレーブデバイスはマスターデバイスであり、このことは、第1のスレーブデバイスと第2のスレーブデバイスとの間のP2Pリンクに関して、第2のスレーブデバイスが「ホスト向け」デバイスであることを意味するだけである。ホストデバイス自体は、もちろん、関係するスレーブデバイスにつながる、そのホストデバイスのP2Pリンクにおいて常にマスターデバイスであるので、根本の「ホスト向け」デバイスである。
【００１３】
マスターデバイスから、P2PリンクのスレーブへのP2Pリンクに関連して、各リンクが固有IDをもつ。各P2PリンクのためのデフォルトIDには、ゼロなどの何らかの2進値が与えられ得る。エニュメレーションの開始のときに、ホストデバイスは、ホストデバイスがいくつのP2Pリンクをもつか特定する。特定されたP2Pリンクの1つが、そのデフォルトIDを保持するのに対し、残りのリンクには、ホストデバイスによって、残りのリンク独自の固有2進IDが与えられる。次いで、スレーブデバイス内に経路表が必要とされないので特に有益である「デカルト」アドレス指定技術が、本明細書においてさらに説明される。「デカルト」という名称から示唆されるように、結果として割り当てられたアドレスの各々は、実際に1ペアのアドレスである。各ペア内のアドレスのうちの第1のアドレスは、「X」座標と見なされるのに対し、各ペア内の残りのアドレスは「Y」座標と見なされる。したがって、各デカルトアドレスは、(X,Y)ペアのアドレスによって構成される。ペア内の第1のアドレスがデカルト座標系におけるx座標と同等と見なされ得るのに対し、ペア内の第2のアドレスは、デカルト座標系におけるy座標と同等と見なされ得る。しかし、連続する2進値の割当てによるなど、代替的な実施形態において、各スレーブデバイスに単一のアドレスが割り当てられ得るが、ホストへの各P2Pリンクに固有リンクIDが割り当てられる限り、不連続な番号付けスキームが使用され得ることが理解される。他のスレーブデバイスを通してホストデバイスにリンクしなければならないスレーブデバイスと比較して、ホストデバイスとの直接的なP2Pリンクをもつスレーブデバイスを区別するために、ホストデバイスとの直接的なP2Pリンクをもつスレーブデバイスは、「第1のホップ」スレーブデバイスと呼ばれる。エニュメレーションの開始に応答して、ホストデバイスは、第1のホップスレーブデバイスとホストデバイスとの間のP2PリンクのためのリンクIDが何であるかを、各第1のホップスレーブデバイスに知らせる。
【００１４】
ホストデバイスと通信するため別のスレーブデバイスを通して結合されなければならないスレーブデバイスは、当然、第1のホップスレーブデバイスではない。非第1のホップスレーブデバイスとホストデバイスとの間に介在するスレーブデバイスは、非第1のホップスレーブデバイスとの関係において、マスターデバイスとして機能する。そのような「マスター」スレーブデバイスは、マスタースレーブデバイスへの直接的なP2Pリンクをもつ1つを上回るスレーブデバイスを含み得る。マスタースレーブデバイスは、次いで、エニュメレーションの開始によってトリガ操作されて、P2Pリンクのための対応するリンクIDを、マスタースレーブデバイスへのP2Pリンクをもつ各スレーブデバイスに通信する。あらゆる所与のスレーブデバイス(スレーブデバイスが別のスレーブデバイスに対してマスターデバイスとして機能するか否かは問わない)に関し、スレーブデバイスがP2Pリンクでつながるマスターデバイスは1つしか存在しない。各スレーブデバイスはスレーブインターフェースを含み、スレーブデバイスは、スレーブインターフェースを通し、対応するP2Pリンクを通してスレーブデバイスのマスターデバイスとインターフェースをとる。リンクIDがすべて割り当てられると、各スレーブデバイスは、次いで、スレーブとしてのスレーブデバイスの状態と、スレーブデバイスとマスターデバイスとの間のP2PリンクのためのリンクIDとの連結情報であるスレーブデバイスのスレーブインターフェースのための「ノードID」を、スレーブデバイスのマスターデバイスに報告し得る。たとえば、スレーブ状態は、2進値のゼロによって表され得、次いで、リンクIDと連結されてノードIDを形成し得る。
【００１５】
各マスタースレーブデバイスは、各P2Pリンクのためのインターフェースを含み、このインターフェースを通して他のスレーブデバイスに直接的に結合する。このインターフェースは、マスタースレーブデバイスが別のスレーブデバイスにサービス提供するので、マスターインターフェースと呼ばれ得る。そのようなマスターインターフェースには、対応するリンクIDとマスターとしてのマスターインターフェースの状態との連結情報であるノードIDが与えられ得る。たとえば、マスター状態は、2進値の1によって表され得、次いで、リンクIDと連結されてマスターインターフェースのためのノードIDを形成する。続いて、マスタースレーブデバイスは、P2Pリンクのためのスレーブインターフェースを含み、このスレーブインターフェースを通してマスタースレーブデバイスのマスターデバイスと通信する。たとえば、第1のホップスレーブデバイスに対するマスターデバイスは、ホストデバイス自体である。したがって、ホストデバイスへのP2Pリンクのための第1のホップスレーブデバイスにおけるインターフェースは、スレーブインターフェースであり、それに伴って、スレーブ状態が与えられる。
【００１６】
様々なノードIDの、結果として得られる構成は、図1Aに示される例示的なシステム100を参照して、よりよく理解され得る。ホストデバイス105は、第1のホップスレーブデバイス110内のスレーブインターフェース130へのP2Pリンク140のためのマスターインターフェース135を含む。スレーブデバイス115は、スレーブデバイス115のスレーブインターフェース120を通してP2Pリンク145に結合し、続いて、P2Pリンク145が、第1のホップスレーブデバイス110内のマスターインターフェース125に結合する。第1のホップスレーブデバイス110は、したがって、スレーブデバイス115に対するマスタースレーブデバイスである。システム100は、1つ以下のマスターインターフェースを含むデバイスはない例示的なネットワークである。デバイスが2つ以上のマスターインターフェースを含み得るネットワークは、後でさらに説明される。したがって、P2Pリンク140および145は、2進値のゼロ(または、何らかの他の適切な2進値)など、P2Pリンク140および145のデフォルトリンクIDによって表され得る。デバイスが2つ以上のマスターインターフェースを含む実施形態において、対応するP2Pリンクに、前述のように、固有リンクIDが割り当てられる必要がある。各デバイス内のマスターインターフェースの数にかかわらず、各リンクIDは、複数ビットワードを含み得る。以下の説明では、どのデバイスも128個を上回る異なるマスターインターフェースを含み得ないように、リンクIDが7ビットのリンクIDワードによって表されると仮定する。しかし、代替的な実施形態において、リンクIDの幅が拡張(または、縮小)され得ることが理解されると考えられる。7ビット幅のリンクIDなどの比較的幅の広いリンクIDを使用する利点は、たとえば、1デバイスあたり8個の固有マスターインターフェースしかサポートし得ない3ビット幅のリンクIDをもつ実施形態と比べて、生アドレスの結果としての割当てにおけるエラーの伝搬が減ることである。
【００１７】
リンクIDをこの7ビット幅とした場合、インターフェース135、130、125、および120の各々のためのノードIDの割当てが、次のように実行され得る。P2Pリンク140および145の各々のためのデフォルトリンクIDは、[0 00 00 00]である。各インターフェースのためのスレーブまたはマスターとしての1ビット状態は、このリンクIDと連結されて、結果として得られるノードIDを形成する。スレーブ状態が0というビットによって表されるのに対し、マスター状態は1というビットによって表される。たとえば、スレーブインターフェース130と120との両方のためのノードIDは[00 00 00 00]である。対称的に、マスターインターフェース135および125のためのホスト向けノードIDは、[10 00 00 00]である。各インターフェース(スレーブまたはマスター)のためのノードIDのこの割当てがされると、各インターフェースに対して「ホスト向けノードID」が決定される。ホスト向けノードIDは、所与のスレーブデバイスからホストデバイス105への各ノードIDの連結情報である。たとえば、第1のホップスレーブデバイス110のためのホスト向けノードIDは、[00 00 00 00 10 00 00 00]である。対称的にスレーブデバイス115のためのホスト向けノードIDは、[00 00 00 00 10 00 00 00 00 00 00 00 10 00 00 00]である。ヒューズまたはブートストラップI/Oの使用などによる、デバイスに対するIDの既存の割当てが存在しないにもかかわらず、ホスト向けノードIDは固有であることが保証されるので、各スレーブデバイスのためのホスト向けノードIDの構成は非常に有益である。したがって、システム100は、従来のエニュメレーションシステムと比較して、はるかに小型であり、より低価格である。
【００１８】
マスターインターフェースとスレーブインターフェースとの各々は、たとえば、図1Bに示されるように、ホスト集積回路(IC)101とスレーブIC106とを含むハイブリッド仮想GPIOシステム104のための仮想GPIO(VGI)インターフェースを備え得る。したがって、以下の説明は、各P2PリンクがVGIリンクである仮想GPIO(VGI)実装形態に関する。しかし、本明細書において開示される原理と技術とが、あらゆる適切なP2Pリンクに広く適用可能であることが理解されると考えられる。集積回路101および106の各々が、GPIOインターフェース103と、ハイブリッド仮想GPIO FSM117と、UARTインターフェース116とを含む。ホストIC101内のUARTインターフェース116は、回路基板配線などの送信線を通して、スレーブIC106内のUARTインターフェース116のための受信ピン112に結合する送信ピン111を駆動するように構成される。同様に、スレーブIC106内のUARTインターフェース116のための送信ピン111は、アプリケーションプロセッサIC100内のUARTインターフェース116のための受信ピン112に結合する。本明細書で使用される場合、「ピン」は、回路基板上の導線または他の適切な送信線に結合するために集積回路が使用するパッドまたは実際のピンなどの構造物を包含する総称的な用語である。
【００１９】
各ハイブリッド仮想GPIO FSM117は、後述のGPIO状態変化を監視する。対応する集積回路のための電源投入時リセット(POR)において、各UARTインターフェース116は、仮想GPIOフレーム長とメッセージング信号フレーム長とのために、同じボーレートと同じ設定とを使用するように構成され得る。さらに、各UARTインターフェース116は、各UARTインターフェース116へのCPUリンクによって示されるように、対応する集積回路のプロセッサ(CPU)102によって構成されたソフトウェアであり得る。
【００２０】
各プロセッサ102は、対応するGPIOインターフェース103を通してGPIO信号を送信および受信するように構成される。特に、各プロセッサ102は、遠隔プロセッサへの送信のため対応するGPIOインターフェース103にGPIO信号の送信セットを提示し得る。同様に、各プロセッサ102はGPIO信号の受信セットを、遠隔プロセッサから送信されたときに、対応するGPIOインターフェース103から受信し得る。GPIO信号の送信セットに関係して、GPIO信号の第1の部分が、GPIO信号131として従来のGPIOピン126において送信および受信され得る。図を明確にするため図1Bでは、各仮想GPIOインターフェース103に対して、第1のGPIO信号から第4のGPIO信号の範囲の4つのGPIO信号131のみに名称が付されている。GPIO信号131の実際の数は、4よりも大きいか、または4よりも少ない数であり得る。対応するプロセッサ102から各GPIOインターフェース103に提示されたGPIO信号の送信セットの残りの部分は、従来のGPIOピン126を通して送信も受信もされない。その代わり、各GPIOインターフェース103が、残りの部分を複数の仮想GPIO信号139として、対応するハイブリッド仮想GPIO FSM117に提供することによって、残りの部分がシリアル化され得、仮想GPIO信号の1つまたは複数のフレームにおいて、集積回路101および106のうちの受信側に送信され得る。システム104において、仮想GPIO信号139のセットは、第1の仮想GPIO信号(第1)から第mの仮想GPIO信号(第m)の範囲にわたる。正の整数mの値は、所与の実装形態の必要性に応じて変化し得る。
【００２１】
加えて、各プロセッサ102は、対応するハイブリッド仮想GPIO FSM117内の1セットのメッセージングレジスタ136に、メッセージング信号の送信セットを書き込み得る。各メッセージングレジスタ136は、対応するメッセージ信号138のための特定のアドレス137に対応する。システム104において、各ハイブリッド仮想GPIO FSM117は、第0のレジスタ136から第Mのレジスタ136の範囲にわたる複数の(M+1)個のメッセージングレジスタを含むように示される。正の整数Mの値は、所与の実装形態の必要性に応じて変化し得る。各ハイブリッド仮想GPIO FSM117は、後でさらに説明される対応するUARTインターフェース116に、各ハイブリッド仮想GPIO FSM117のメッセージング信号の送信セットと仮想GPIO信号の送信セットとを提示する。仮想GPIO信号139の各々は、従来のGPIO信号130の場合のように仮想GPIO信号139独自の専用ピンを含むわけではないことに留意されたい。これは、仮想GPIO信号139の各々が仮想GPIO信号139独自のGPIOピンを必要とする従来のGPIO実施形態と比較して、ハイブリッド仮想GPIOシステム104が、集積回路101および106のためのピンの大幅な削減を達成するという点で非常に有益である。
【００２２】
仮想GPIO信号139とメッセージング信号138とがハイブリッド仮想GPIO FSM117などの有限状態機械を通して送信および受信されるので、プロセッサ102は休止状態であり得るか、または、別の種類の停止状態でありながら、依然、仮想GPIO信号139およびメッセージング信号136を受信することが可能であり得る。この手法において、ハイブリッド仮想GPIOシステム104は、各GPIOインターフェース103のためのピンの数を有益に節減するだけでなく、低電力でもある。各プロセッサ102との関係において、GPIO信号130と仮想GPIO信号139との間に違いはない。すなわち、GPIO信号130と仮想GPIO信号139とは、いずれも、GPIOインターフェース103を通して必要に応じて送信および受信されるGPIO信号として取り扱われる。
【００２３】
プロセッサ102は、仮想GPIO信号139のうちの選択されたものにおける変化に応答して、割り込み信号を受信することを必要とし得る。たとえば、モデム電力管理装置(MPM)141は、割り込み設定レジスタ(図示せず)を通してプログラムなどされた、選択された仮想GPIO信号139の状態を監視し得る。各仮想GPIO信号139は、対応する割り込み設定レジスタを含み得る。仮想GPIO信号139が、仮想GPIO信号139の信号変化状態に応答して、割り込みを生成することを要求された場合、それに従って、対応する設定レジスタがプログラムされる。同様に、仮想GPIO信号139の信号が状態を変化させたか否かにかかわらず、仮想GPIO信号139が割り込みを生成しないものである場合、対応する割り込み設定レジスタもそれに従ってプログラムされる。MPM141は、有限状態機械をさらに備え得る。したがって、ハイブリッド仮想GPIO FSM117と同様に、MPM141は低電力であり、そのプロセッサ102がスリープモードまたは他の何らかの停止状態であるか否かにかかわらず有効である。
【００２４】
仮想GPIO信号139は、送信セットと受信セットとに再分割され得る。同様に、メッセージング信号136は、送信セットと受信セットとに再分割され得る。対称なシステムにおいて、各セットは同じ数となる。しかし、ハイブリッド仮想GPIOシステム104は、仮想GPIO信号139とメッセージング信号136との送信セットと受信セットとが異なるサイズをもつ非対称な信号伝達の実施形態に容易に対応し得るという点で有益であることが理解されると考えられる。システム104が対称であるか非対称であるかにかかわらず、送信セット内の各信号がGPIOインターフェース103と対応するハイブリッド仮想GPIO FSM117との間における各信号の独自の導線(図示せず)上で伝達されるという点で、各ハイブリッド仮想GPIO FSM117は、GPIOインターフェース103から並列に仮想GPIO信号139の送信セットを受信する。対称的に、ハイブリッド仮想GPIO FSM117による送信セットの結果としての送信が、単一の送信ピン111を通して実行される。
【００２５】
ネットワーク100をハイブリッド仮想GPIOシステム104と比較すると、ホストIC101内のマスターインターフェース135が、ハイブリッド仮想GPIO FSM117およびUART116、ならびに、MPM141によって形成されることが理解され得る。ハイブリッド仮想GPIO FSM117、UART116、およびMPM141の全体が、VGIインターフェースの一実装形態を形成する。同様に、同じ構成要素によって、スレーブIC106内のスレーブインターフェース130が形成される。各ハイブリッド仮想GPIO FSM117は、本明細書で説明されるエニュメレーション技術を実施するように構成され得る。ピン111とピン112との間の導線は、ホストIC101とスレーブIC106との間のP2Pリンク140を形成する。
【００２６】
図2に、別の例示的なシステム200が示される。システム200は、たとえば、ホストデバイス205が、第1のホップスレーブデバイス250、255、および265のそれぞれとの対応するP2Pリンク225、230、および240のための3つのマスターインターフェース210、215、および220を含むという点で、システム100またはシステム104よりも複雑である。ホストデバイス205は、ハイブリッド仮想GPIO FSM117との関係において説明されるものなどの有限状態機械を備え得るノードアグリゲータ202を含む。ノードアグリゲータ202は、システム200の電源投入(または、エニュメレーションをトリガ処理する何らかの他の適切な事象)のときに、ホストデバイス205内のマスターインターフェースの数を特定するように構成される。マスターインターフェースのこの計数値が与えられると、ノードアグリゲータ202は、次いで、ホストデバイス205内の各マスターインターフェースに対応するP2Pリンクのための固有リンクIDを割り当て得る。P2Pリンク225などの第1のP2Pリンクは、[00 00 00 0]という第1のP2PリンクのデフォルトリンクIDを保持し得る。このデフォルトリンクIDは、リンク0と表記される。次いで、P2Pリンク230および240などの、ホストデバイス205のための残りのP2Pリンクの各々に、2進値のゼロから始まる計数値などによって新しい固有リンクIDが割り当てられる。したがって、P2Pリンク230に、リンク1と表記される[00 00 00 1]というリンクIDが割り当てられるのに対し、P2Pリンク240に、リンク2と表記される[00 00 01 0]というリンクIDが割り当てられ得る。ヒューズまたはI/Oブートストラップの使用などによる既存のIDの割当てがまったくないにもかかわらず、すべてのスレーブデバイスのための、結果として得られるホスト向けノードIDが固有であることを保証するものが、ホストデバイス205への各P2Pリンクのための、この固有リンクIDである。次いで、ノードアグリゲータ202は、第1のホップスレーブデバイス255および265に対する、変更された固有リンクIDを識別する。次いで、スレーブデバイス250は、ホストアグリゲータ202から変更されたリンクIDを受信しないので、リンク0のための[00 00 00 0]というデフォルトリンクIDが有効であると推定し得る。
【００２７】
各デバイス内の各インターフェースは、インターフェースがマスターインターフェースであるかスレーブインターフェースであるか否かにかかわらず、「ノード」と呼ばれ得る。第1のホップスレーブデバイス250、255、および265は、したがって、第1のホップスレーブデバイス250、255、および265のスレーブインターフェースのための1つのノードIDと、第1のホップスレーブデバイス250、255、および265のマスターインターフェースのための別の1つのノードIDとの2つのノードIDをもつ。システム200において、第1のホップスレーブ250は、P2Pリンク225のためのスレーブインターフェース245を含む。したがって、スレーブインターフェース245のためのノードIDは、ゼロのビット[0]などによって示される、スレーブインターフェース245のスレーブ状態と、P2Pリンク225のためのリンク0の[00 00 00 0]というリンクIDとの連結情報である。スレーブインターフェース245のためのノードIDは、したがって、[00 00 00 00]である。第1のホップスレーブ250は、それぞれ、P2Pリンク275および206を通した、スレーブデバイス290およびスレーブデバイス201のためのマスタースレーブデバイスとして機能する。第1のホップスレーブ250は、P2Pリンク275のためのマスターインターフェース280とP2Pリンク206のためのマスターインターフェース282とを含む。第1のホップスレーブ250内に2つのマスターインターフェースが存在するので、第1のホップスレーブ250は、リンク0のIDをP2P 275に割り当て、リンク1のIDをP2Pリンク206に割り当てるために、ホストデバイス205との関係において説明されるノードアグリゲータ202などのノードアグリゲータ(図示せず)を含む。マスターインターフェース282のためのノードIDは、したがって、1のビット[1]などによって示されるマスターとしてのマスターインターフェース282の状態と、リンク1の[00 00 00 1]というリンクIDとの連結情報である。したがって、マスターインターフェース282のためのノードIDは、[00 00 00 11]である。同様に、マスターインターフェース280のためのノードIDは、[00 00 00 01]である。どのような順序で連結情報が形成されるかは、すべてのノードに対して形成順序が同じである限り、問題とならないことに留意されたい。
【００２８】
それらの向きにおいて、P2Pリンク275および206のためのリンクID(リンク0およびリンク1)は、それぞれ、P2Pリンク225および230に使用されるリンクIDと同一である。しかし、このことは、結果として得られるノードIDが、依然、システム200内で固有であるので問題とならない。スレーブデバイス290は、P2Pリンク275のためのスレーブインターフェース295を含む。同様に、スレーブデバイス201は、P2Pリンク206のためのスレーブインターフェース211を含む。
【００２９】
所与のノードのための最終的なホスト向けIDは、したがって、所与のノードのためのノードIDと、所与のノードとホストデバイスとの間におけるすべての介在ノードのノードIDとの連結情報である。たとえば、スレーブインターフェース295のためのホスト向けIDは、スレーブインターフェース295のノードIDと、マスターインターフェース280、スレーブインターフェース245、およびマスターインターフェース210のためのノードIDとの連結情報である。簡潔にするために、図2に示すマスターインターフェースまたはスレーブインターフェースの各々のためのノードIDは、16進数表記を使用して示される。スレーブインターフェース295のためのノードIDは、したがって、0x00と表される。したがって、スレーブインターフェース295のためのホスト向けIDは、0x00と、0x80(マスターインターフェース280のためのノードID)と、0x00(スレーブインターフェース245のためのノードID)と、0x80(マスターインターフェース210のためのノードID)との連結情報である。
【００３０】
それぞれ対応するP2Pリンク226および241のための2つのマスターインターフェース231および236を第1のホップスレーブ265が含むという点で、第1のホップスレーブ265は第1のホップスレーブ250に類似することに留意されたい。第1のホップスレーブ265は、ホストデバイス205へのP2Pリンク240のためのスレーブインターフェース270をさらに含む。第1のホップスレーブ265は、2つの別のスレーブデバイスに結合するので、第1のホップスレーブ265は、したがって、P2Pリンク226にリンク0のIDを割り当てるために、および、P2Pリンク241にリンク1のIDを割り当てるために、ノードアグリゲータ202との関係において説明されるものなどのノードアグリゲータをさらに含む(図示せず)。P2Pリンク226は、スレーブデバイス246内のスレーブインターフェース251に結合する。同様に、P2Pリンク241は、スレーブデバイス256内のスレーブインターフェース261に結合する。P2Pリンク226のためのリンクIDの割当ては、したがって、第1のホップデバイス265からスレーブインターフェース251に通信される。同様に、P2Pリンク241のためのリンクIDの割当ては、スレーブインターフェース261に通信される。
【００３１】
P2Pリンク226および241は、第1のホップスレーブ250に結合されたP2Pリンク275および206のために使用されるものと同じリンクIDをもつ。しかし、P2Pリンク225および240に割り当てられた異なるリンクIDによって、様々なノードに対するホスト向けIDの、結果としての割当てが固有であることが保証されるので、リンクIDのこの重なりは問題とならない。スレーブ246および290はいずれも、これらのスレーブデバイスが、別の下流のスレーブに対するマスターデバイスとして機能しないという点で「エンドポイント」スレーブデバイスである。第1のホップマスターインターフェース280および231のための、および、第1のホップスレーブデバイス255内の第1のホップマスターインターフェース216のためのノードIDの各々が、0x80であるのに対し、第1のホップマスターインターフェース282および236のためのノードIDは、0x81である。したがって、スレーブインターフェース295のためのノードIDとマスターインターフェース280のためのノードIDとの連結情報、および、スレーブインターフェース251のためのノードIDとマスターインターフェース231のためのノードIDとの連結情報はいずれも、0x00、0x80である。同様にスレーブインターフェース211のためのノードIDとマスターインターフェース282のためのノードIDとの連結情報、および、スレーブインターフェース261のためのノードIDとマスターインターフェース236のためのノードIDとの連結情報は、いずれも、0x01、0x81である。
【００３２】
しかし、そのような同一の部分連結結果は、別の連結情報において固有となる。たとえば、第1のホップスレーブデバイス250が、リンク0のIDを通してホストデバイス205に結合するのに対し、第1のホップスレーブデバイス265が、リンク2のIDを通してホストデバイス205に結合することに留意されたい。部分連結情報が同じであるにもかかわらず、スレーブインターフェース295および251のための最後のホスト向けノードIDは、したがって、異なる。特に、エンドポイントスレーブデバイス290内のスレーブインターフェース295のためのホスト向けノードIDは、0x00、0x80、0x00、0x80である。対称的に、エンドポイントスレーブデバイス246内のスレーブインターフェース251のためのホスト向けノードIDは、0x00、0x80、0x02、0x82である。同様に、スレーブデバイス201内のスレーブインターフェース211のためのホスト向けノードIDは、0x01、0x81、0x00、0x80であるのに対し、スレーブデバイス256内のスレーブインターフェース261のためのホスト向けノードIDは、0x01、0x81、0x02、0x82である。この手法において、すべてのノードが(ノードがマスターインターフェースであるかスレーブインターフェースであるかによらず)、固有ホスト向けノードIDを導く。スレーブデバイス256が複数のI/O端子266とインターフェースをとることに留意されたい。
【００３３】
第1のホップスレーブデバイス255は、マスタースレーブデバイス271内のノードID 0x00をもつスレーブインターフェース276に、P2Pリンク221上で、第1のホップマスターインターフェース216を通して結合する。続いて、マスタースレーブデバイス271は、ノードID 0x80をもつマスターインターフェース281を含み、マスターインターフェース281は、エンドポイントスレーブデバイス286内のノードID 0x00をもつスレーブインターフェース291にP2Pリンク289を通して結合する。所与のP2Pリンクの物理的な構成は、様々であり得る。たとえば、各P2Pリンクは、2ワイヤまたは3ワイヤのいずれかの仮想GPIOリンクを備え得る。代替的に、P2Pリンクは、P2Pリンク221に関して示されるものなどのケーブルを備え得る。
【００３４】
結果として得られるホスト向けノードIDは、すべて固有であるが、比較的長いので、そのような比較的長いアドレスを伴う信号伝達との関係において何らかの待ち時間を伴うことに留意されたい。したがって、ホストデバイス205内のノードアグリゲータ202(または、何らかの他の適切な状態機械)は、各スレーブデバイスに、ビット最適化されたアドレスを再割当てし得る。したがって、ホスト向けノードIDは、対応するビット最適化されたアドレスと置換され得るという点で、「中間」アドレスとも呼ばれ得る。再度、システム200を参照すると、上述の連結処理を通して特定された、対応する中間アドレスをもつ9つの独立したスレーブデバイスが存在する。9つのそのような中間アドレスが存在するので、様々なスレーブデバイスは、その代わり、少なくとも4ビット幅(以上)のビット最適化されたアドレスを使用して識別され得る。結果として得られるビット最適化されたアドレスの割当ては、I/Oブートストラップのヒューズが必要ではないように、事前に規定されたアドレスが必要とされないという点で、非常に有益である。加えて、ビット最適化されたアドレスの割当ては、ホストデバイス205とそのスレーブデバイスとの間で低待ち時間信号伝達をもたらす。
【００３５】
スレーブデバイス内の各ノード(マスターインターフェースまたはスレーブインターフェース)に、ホスト向けノードIDが割り当てられた後、ホストデバイス内のノードアグリゲータ202は、次いで、よりビット最適化されたアドレスが各ノードに割り当てられ得るように、各ノードのホスト向けノードIDを使用してノードに対するアドレス指定をするように進み得る。図1Bに示すホストIC101内のプロセッサ102は、ノードアグリゲータ202として機能するようにプログラムされ得る。代替的に、ノードアグリゲータ202は、専用の状態機械を備え得る。ノードのうちアドレス指定された1つのノードに向けて、スレーブ内のノードを通してメッセージを経路設定することに関係して、ノードアグリゲータ202は、アドレス指定されたノードのためのホスト向けノードIDを含むメッセージを送る。このメッセージは、介在ノードを通してアドレス指定されたノードに最終的に結合するホストデバイス205のマスターインターフェース(たとえば、マスターインターフェース210、215、220のうちの1つ)を通して、ホストデバイス205から送信される。たとえば、ホストデバイス205がスレーブインターフェース291をアドレス指定する場合、マスターインターフェース215を通して対応するメッセージが送信される。スレーブインターフェース291のためのホスト向けノードIDは、0x00、0x80、0x00、0x80、0x01、0x81である。このホスト向けノードIDは、スレーブインターフェース291に向けられたメッセージにヘッダとして付加され得る。マスターインターフェース215を含む各介在ノードは、受信されたホスト向けノードIDから、その介在ノードのノードIDを削除して、部分的なホスト向けノードIDを形成するように構成され、次いで、部分的なホスト向けノードIDが次の下流のノードに送信される。たとえば、マスターインターフェースは、ホスト向けノードIDから0x81というマスターインターフェースのノードIDを削除して、第1のホップスレーブ255内のスレーブインターフェース260に送信されるメッセージのために、ヘッダとして(または、何らかの他の既定の位置に)残る第1の部分的なノード向けIDを形成する。スレーブインターフェース260によって受信されたヘッダは、したがって、0x00、0x80、0x00、0x80、0x01である。スレーブインターフェース260は、ヘッダからスレーブインターフェース260のノードIDを削除して、0x00、0x80、0x00、0x80という第2の部分的なノード向けIDを形成し、第2の部分的なノード向けIDは、第1のホップスレーブ255内のマスターインターフェース216に、メッセージに付随する新しいヘッダとして送信される。次いで、マスターインターフェース216は、ヘッダからマスターインターフェース216のノードIDを削除して、0x00、0x80、0x00という第3の部分的なノード向けIDを形成し、第3の部分的なノード向けIDは、第2のホップスレーブデバイス271内のスレーブインターフェース276に、メッセージに付随する新しいヘッダとして送信される。スレーブインターフェース276は、ヘッダからスレーブインターフェース276のノードIDを削除して、0x00、0x80という第4の部分的なノード向けIDを形成し、第4の部分的なノード向けIDは、第2のホップスレーブデバイス271内のマスターインターフェース281に、メッセージに付随する新しいヘッダとして送信される。次いで、マスターインターフェ���ス281は、ヘッダからマスターインターフェース281のノードIDを削除して、0x00だけの新しいヘッダを形成し、新しいヘッダは、アドレス指定されたノード(スレーブインターフェース291)のためのノードIDである。次いで、マスターインターフェース281は、スレーブインターフェース291に、0x00というヘッダをもつメッセージを送信する。次いで、スレーブインターフェース291は、受信されたヘッダを調べ、ヘッダがスレーブインターフェース291自体のノードIDに一致する単一のノードIDだけであるか否かを検出し得る。こうして、スレーブインターフェース291は、適切なアクションが実行され得るように、対応するメッセージがスレーブインターフェース291に向けられたと判定し得る。たとえば、メッセージは、スレーブインターフェース291に対して、ノードアグリゲータ202からのビット最適化されたアドレスで、スレーブインターフェース291のノードIDを置換させる指令であり得る。加えて、メッセージは、スレーブノードを通したビット最適化されたアドレスの経路設定のための経路表などの規則を含み得る。
【００３６】
図1Aに示すネットワーク100におけるノードIDの割当ては、図2を参照して説明されるものと同様に実行される。ネットワーク100内の各デバイスは、1つ以下のP2Pリンクを通して下流のデバイスに結合するので、P2Pリンク140および145は、[00 00 00 0]など、P2Pリンク140および145のデフォルトリンクIDを保持し得る。7ビット未満(または、7ビットを上回る)リンクIDが、代替的な実施形態において使用され得ることが理解されると考えられる。この点について、[0]などの1ビットのデフォルトリンクIDが、ネットワーク100において使用され得る。そのような1ビットのデフォルトリンクIDが与えられると、エンドポイントスレーブ115内のスレーブインターフェース120は、[0]などによって表されるスレーブインターフェースとしてのスレーブインターフェース120の状態を、P2Pリンク145のための[0]というデフォルトリンクIDに連結して、[00]というノードIDを形成し得る。第1のホップスレーブ110内のマスターインターフェース125は、次いで、[01]というマスターインターフェース125のノードIDを、[00]というノードIDに連結して、[0001]という第1の部分連結結果を形成し得る。続いて、第1のホップスレーブ110内のスレーブインターフェース130は、[00]というスレーブインターフェース130のノードIDを、第1の部分連結結果に連結して、[000100]という第2の部分連結結果を形成する。ホストデバイス105内にマスターインターフェース135が1つしか存在しないので必要ではないが、マスターインターフェース135は、次いで、[01]というマスターインターフェース135のノードIDを第2の部分連結結果に連結して、[00010001]というスレーブインターフェース120のためのホスト向けノードIDを形成し得る。同様に、マスターインターフェース125のためのホスト向けノードIDは、[010001]であるのに対し、スレーブインターフェース130のためのホスト向けノードは、[0001]である。次いで、ノードアグリゲータ202に類似したノードアグリゲータ(図示せず)が、スレーブインターフェース130とマスターインターフェース125とスレーブインターフェース120とに、ビット最適化されたアドレスを割り当て得る。3つのそのようなノードが存在するので、2ビット幅のビット最適化されたアドレスが、ネットワーク100内でこれらのノードを一意的に識別する。
【００３７】
以下、図3に示すフローチャートを参照して、アドレス割当ての例示的な方法が説明される。本方法は、各々が固有リンクIDをもつ対応する複数の第1のP2Pリンクを通してホストデバイスに結合された複数の第1のスレーブデバイスを含むシステムとの関係において実行される動作300を含み、各第1のスレーブデバイスが、対応する第1のP2Pリンクに結合されたスレーブインターフェースを含む。動作300は、スレーブビットと、対応する第1のP2Pリンクのための固有リンクIDとの連結情報に等しいノードIDを、各スレーブインターフェースからホストデバイスに送信するステップを含む。システム200内の第1のホップスレーブ250、255、および265は、各々、第1のスレーブデバイスの一例である。最終的に、下流のノードにホスト向けノードIDが割り当てられた後、第1のホップスレーブ250、255、および265内のスレーブインターフェースは、スレーブインターフェースのノードIDをホストデバイス205内の対応するマスターインターフェースに送る。
【００３８】
本方法は、ノードIDの数を計数して、各スレーブインターフェースを一意的に識別するために必要な最小ビット数を決定する動作305をさらに含む。ホストデバイス205内のノードアグリゲータ202による計数が、動作305の一例である。次いで、最小ビット数は、log2(計数値)の整数値に等しく、計数値はノードIDの数である。代替的な実施形態において、ビット最適化されたアドレスは、log2(計数値)の整数値よりも多くのビットを含み得る。
【００３９】
本方法は、スレーブインターフェースのノードIDを含む第1のメッセージを使用して、各スレーブインターフェースをアドレス指定して、少なくとも最小ビット数幅をもつビット最適化されたアドレスをスレーブインターフェースに割り当てる動作310をさらに含む。ホストデバイス205のノードアグリゲータ202による、第1のホップスレーブデバイスへのビット最適化されたアドレスの割当てが、動作310の一例である。
【００４０】
最後に、本方法は、スレーブインターフェースのビット最適化されたアドレスを含む第2のメッセージを使用して、各スレーブインターフェースをアドレス指定して、スレーブインターフェースをエニュメレーションする動作315を含む。たとえば、各第1のホップスレーブデバイスのスレーブインターフェースは、仮想GPIO実装形態において、動作310におけるエニュメレーションの一部として、2ワイヤまたは3ワイヤの仮想GPIOインターフェースとして、スレーブインターフェースの状態を識別し得る。エニュメレーションの他の例は、スレーブデバイスのためのスレーブインターフェースおよびマスターインターフェースにおけるVGIインターフェースのためのフレーム長の割当てを含む。加えて、エニュメレーションは、各VGIインターフェースのためのエラー訂正アルゴリズムと、フロー制御技術とを割り当て得る。
【００４１】
デカルトアドレス割当て
各ノードへのビット最適化されたアドレスの割当ては、ノードを通したメッセージの経路設定を支援するように特化され得る。そのようなスレーブツースレーブ通信は、一般的には、各スレーブデバイスに記憶された経路表の使用を伴う。以下、ビット最適化されないが、結果として割り当てられたアドレスに関係するビット効率のわずかな低下という犠牲を伴って、スレーブデバイスを通して大幅に簡略化された経路設定をもたらす、スレーブデバイス内のノードのための「デカルト」アドレス割当てが説明される。単純なアドレス比較によって、各スレーブデバイスノードは、適切な宛先が常に達成されるように、別のスレーブデバイスから(または、ホストデバイスから)受信されたパケットを経路設定し得る。
【００４２】
「デカルト」という名称によって暗示されるように、デカルトアドレス割当てにおける各アドレスは、2つの順序付けられたアドレス(すなわち、2つの数)を含む。しかし、代替的な実施形態におけるデカルトアドレス指定は、Nを2よりも大きい整数としたとき、N次元空間におけるN個の座標に基づき得ることが理解されると考えられる。したがって、以下の説明は、普遍性を失わない2次元デカルトアドレス指定実装形態に関する。本明細書において、各アドレスペアにおける第1のアドレスがXアドレスと表記されるのに対し、各アドレスペアにおける残りの第2のアドレスがYアドレスと表記される。したがって、各デカルトアドレスペアは、(X,Y)ペアのアドレスを含む。デカルトアドレス指定は、ホストデバイス自体のための(0,0)などの何らかのルートアドレスから始まる。Yアドレスは、ホストデバイスからのホップの数を示す。たとえば、1というYアドレスをもつスレーブデバイスは、ホストへの直接的なP2Pリンクをもつ。これらのスレーブデバイスは、ホストデバイスに直接的に結合されるので、「レベル1」スレーブデバイスとも表記され得る。同様に、2というYアドレスをもつスレーブデバイスは、レベル1スレーブデバイスを通した接続によってスレーブから1ホップぶん離れている。2というYアドレスをもつスレーブデバイスは、したがって、「レベル2」スレーブデバイスと呼ばれ得る。Yアドレスのさらなるインクリメントは、ホストデバイスからのさらなるホップに対応する。すなわち、レベル3スレーブデバイスは3というYアドレスをもち、レベル4スレーブデバイスは4というYアドレスをもち、以降も同様である。
【００４３】
Xアドレスは、所与のクラスタ内におけるスレーブデバイスの位置に関係する。本明細書で使用される場合、スレーブデバイスの「クラスタ」は、同じレベル1スレーブデバイスを通してホストデバイスに間接的に結合したスレーブデバイスのすべてである。ネットワーク400のためのクラスタの例示的な構成が図4に示される。スレーブデバイスの第1のクラスタ(クラスタ1)は、すべて第1のレベル1スレーブデバイス405に直接的または間接的のいずれかで結合される。本明細書で使用される場合、スレーブデバイスが他のデバイスから1つまたは複数のホップぶん離れているとき、スレーブデバイスは別のデバイスに間接的に結合されると表現される。たとえば、レベル3スレーブデバイス410がレベル2スレーブデバイス415にP2Pリンクを通して直接的に結合し、さらにレベル2スレーブデバイス415が、対応するP2Pリンクを通してレベル1スレーブデバイス405に直接的に結合するので、レベル3スレーブデバイス410は、レベル1スレーブデバイス405から1ホップぶん離れている。
【００４４】
Xアドレスの割当てに関して、デバイス405などの第1のレベル1スレーブデバイスには、1というXアドレス(または、何らかの他の初期整数)が与えられ得る。この同じ初期Xアドレスは、次いで、スレーブデバイスが後続のYレベルにおける1つを上回るスレーブデバイスに結合するYレベルに達するまで、スレーブデバイス405に直接的または間接的に結合されたすべてのスレーブデバイスに与えられる。ネットワーク400において、レベル2スレーブデバイス415は、レベル3スレーブデバイス410に対する、および、別のレベル3スレーブデバイス420に対するマスターデバイスとして機能する。したがって、スレーブデバイス410には、レベル2スレーブデバイス415のために使用されるものと同じ初期Xアドレスが与えられるが、レベル3スレーブデバイス420は、初期アドレスに1を加えたもの(この場合、2)などのより大きいXアドレスを必要とする。したがって、レベル3スレーブデバイス410のためのデカルトアドレスは(1,3)であるのに対し、レベル3スレーブデバイス420のためのデカルトアドレスは(2,3)である。さらに、レベル3スレーブデバイス420は、第1のレベル4スレーブデバイス425と第2のレベル4スレーブデバイス430とに対するマスターデバイスとして機能する。スレーブデバイス425は、したがって、(2,4)というデカルトアドレスをもち得るのに対し、スレーブデバイス430は、(3,4)というデカルトアドレスをもち得る。スレーブデバイス425および430から先のホップは存在しない。
【００４５】
クラスタ1は、レベル1スレーブデバイス405に対する直接的なP2Pリンクをもつ別のレベル2スレーブデバイス435を含む。このスレーブデバイスのためのXアドレスは、クラスタ内の最大の既存のXアドレス(レベル4スレーブデバイス430に対する3)からインクリメントされる。したがって、レベル2スレーブデバイス435には、4というXアドレスが割り当てられ得る。したがって、レベル2スレーブデバイス435のためのデカルトアドレスは、(4,2)である。直接的に結合されたレベル3スレーブデバイス440とレベル4の間接的に結合されたスレーブデバイス445とに、4という同じXアドレスが与えられ得る。レベル3スレーブデバイス440は、別のレベル4スレーブデバイス455に対するマスターとしても機能するので、このスレーブデバイスは、スレーブデバイス440からインクリメントされたXアドレス(すなわち、5というXアドレス)をもつ。別のレベル3スレーブデバイス450が、対応するP2Pリンクを通してレベル2スレーブデバイス435に結合する。したがって、スレーブデバイス450のためのXアドレスが、6に等しいもの(スレーブデバイス455のための5というXアドレスに対する1ぶんのインクリメント)であり得るように、スレーブデバイス450のためのXアドレスは、クラスタ内における最大の既存のXアドレスに対して1ぶんインクリメントされる。
【００４６】
クラスタ1内のすべてのスレーブデバイスにデカルトアドレスが割り当てられると、第2のクラスタ(クラスタ2)は、レベル1スレーブデバイス460から始まってアドレス指定され得る。レベル1スレーブデバイス460のためのXアドレスは、先行するクラスタ内の最大のXアドレスからインクリメントされる。したがって、スレーブデバイス460のためのXアドレスは、7に等しいもの(クラスタ1のための6という最大のXアドレスに対する1ぶんのインクリメント)であり得る。さらに、2つの別のスレーブデバイス465および470は、スレーブデバイス460と同じXアドレスをもつが、スレーブデバイス465および470のそれぞれのレベルに対応するインクリメントされたYアドレスをもち得る。スレーブデバイス475とスレーブデバイス470との両方がスレーブデバイス465に直接的に結合するので、最後のスレーブデバイス475は、インクリメントされたXアドレスをもつ。
【００４７】
図1Aと図2を参照して説明されるノードIDとは対称的に、デカルトアドレスは、対応するスレーブデバイスのためのアドレスである。ホストデバイスは、スレーブデバイスにデカルトアドレスを割り当てる。加えて、各スレーブデバイスは、各スレーブデバイスのホスト向けポートを識別する。このホスト向けポートは、図1Aと図2とに示すネットワークにおいてスレーブインターフェースと表記される。たとえば、スレーブデバイス420におけるポート421が、スレーブデバイス420のホスト向けポートである。加えて、ホストデバイスは、所与のクラスタ内の各スレーブデバイスに、そのクラスタのためのXの次元の最小値と最大値とを知らせる。各スレーブデバイスは、これらの基本的な事実(そのクラスタの最小および最大のXアドレス、ならびに、そのホスト向けポート、および、そのデカルトアドレス)を知っているので、結果として得られる経路設定が非常に堅牢でありながら実装しやすいものとなる。たとえば、クラスタ1内のレベル3スレーブデバイス450が、クラスタ1内にさらに含まれるレベル4スレーブデバイス430のためのメッセージをもつと仮定する。スレーブデバイス450から先のホップが存在しないので、スレーブデバイス450は、デフォルト設定で、対応するP2Pリンクを通してレベル3スレーブデバイス440に結合するスレーブデバイス450のスレーブ向けポートを通してメッセージを経路設定する。レベル3スレーブデバイス430のためのデカルトアドレスが(3,4)であるのに対し、スレーブデバイス440のためのXアドレスは(4,3)である。すべての所与のスレーブより上流の分岐が、Xアドレスを小さくしないので、スレーブデバイス440は、レベル2スレーブデバイス435へのスレーブデバイス440のホスト向けポートを通してデカルトアドレス(3,4)のための受信されたメッセージを経路設定する。4というレベル2スレーブデバイス435のXアドレスが、経路設定される(3,4)というデカルトアドレスにおける3というXアドレスよりも大きいので、レベル2スレーブデバイス435は、同じ経路設定を行う結果となる。したがって、デカルトアドレス(3,4)のためのメッセージは、レベル1スレーブデバイス405へと経路設定される。経路設定されるメッセージのためのXアドレスが経路設定するスレーブデバイスのためのXアドレス以上である限り、経路設定するスレーブデバイスは、スレーブデバイスのホスト向けポートを通して下流にメッセージを送る場合と比較して上流に(より高いレベルに)メッセージを経路設定する。この経路設定の論理は、プロセッサ102などのプロセッサ、または有限状態機械において実行され得る。各スレーブデバイスは、スレーブデバイスのホスト向けポートを駆動するためのVGIインターフェースを含み得る。高レベルのスレーブデバイスに結合するスレーブデバイスは、高レベルのスレーブデバイスに結合するスレーブデバイスのスレーブ向けポートを駆動するための別のVGIインターフェースをさらに含む。
【００４８】
デカルトアドレスの割当ては、図4において各スレーブデバイス内に記載された整数によって示される順序に従い得る。レベル1スレーブデバイス405が最初に割り当てられるので、レベル1スレーブデバイス405は整数1と表記される。レベル1スレーブデバイス405などの所与のスレーブに、その所与のスレーブのデカルトアドレスが割り当てられると、次に、その所与のスレーブを通して結合した同じXアドレスをもつ次のスレーブに、そのスレーブのデカルトアドレスが割り当てられる。レベル2スレーブデバイス415は、同じXアドレスをもつがレベル2に存在するので、レベル2スレーブデバイス415は、デカルトアドレスが割り当てられる第2のスレーブである。同様に、レベル3スレーブデバイス410は、同じXアドレスをもつがレベル3に存在するので、レベル3スレーブデバイス410は、デカルトアドレスが割り当てられる第3のスレーブである。したがって、割当て順序は、デカルトアドレス割当てを受けることにおいて、レベル3スレーブデバイス420が第4のスレーブであり、レベル4スレーブデバイス425が第5のスレーブであり、レベル4スレーブデバイス430が第6のスレーブであり、レベル2スレーブデバイス435が第7のスレーブであり、レベル3スレーブデバイス440が第8のスレーブであり、レベル4スレーブデバイス445が第9のスレーブであり、レベル4スレーブデバイス455が第10のスレーブであり、レベル3スレーブデバイス450が第11のスレーブであり、レベル1スレーブデバイス460が第12のスレーブであり、レベル2スレーブデバイス465が第13のスレーブであり、レベル3スレーブデバイス470が第14のスレーブであり、レベル3スレーブデバイス475が第15のスレーブであるというように続く。
【００４９】
次いで、レベル1スレーブデバイスは、受信されたメッセージを、ホストデバイスに、または、レベル1スレーブデバイスのクラスタ内の上流に経路設定し得る。レベル1スレーブデバイスのためのこの上流または下流の判定は、Xアドレスが、対応するクラスタのための境界内であるか否かによって決まる。クラスタ1の場合、クラスタ1は、X=1からX=6まで延びる。したがって、レベル1スレーブデバイス405が7以上のX座標をもつメッセージを受信した場合、レベル1スレーブデバイス405が、ホストデバイスに向けて下流にメッセージを経路設定することによって、ホストデバイスは、X座標に基づいて、適切なクラスタにメッセージを経路設定し得る。前述の例において、レベル1スレーブデバイス405における受信されたメッセージのためのX座標は3であるので、レベル1スレーブデバイス405は、受信されたメッセージをレベル2スレーブデバイス415に経路設定する。レベル2スレーブデバイス415は、レベル3スレーブデバイス410またはレベル3スレーブデバイス420のいずれかに経路設定し得るので、レベル2スレーブデバイス415の上流への経路設定のための候補となる2つの選択肢をもつことに留意されたい。したがって、規則は、宛先デカルトアドレスにおけるXアドレス以下である最大のXアドレスをもつスレーブデバイスに向けて上流への経路設定が実行されるというものである。したがって、この規則に従って、スレーブデバイス415が、スレーブデバイス420へとメッセージを経路設定する。スレーブデバイス420も選択肢を含むが、経路設定規則に基づいて、レベル4スレーブデバイス430へと経路設定する。メッセージの受信のときに、各スレーブデバイスは、宛先デカルトアドレスが各スレーブデバイス自体のデカルトアドレスに一致するか否かを確認する。スレーブデバイス430において一致が確認され、どのスレーブデバイスにも経路表がないにもかかわらず、宛先とされたスレーブデバイスがそのメッセージを受信する。
【００５０】
図5は、第1のポイントツーポイント(P2P)リンクを通してホストデバイスに結合された第1のスレーブデバイスを含むシステムのための固有デカルトアドレスを割り当てる例示的な方法のためのフローチャートであり、システムは、第1のスレーブデバイスを通してホストデバイスに結合された複数の第2のスレーブデバイスをさらに含む。本方法は、第1のスレーブデバイスにデカルトアドレスを割り当てる動作500を含み、デカルトアドレスは、第1のXアドレスと第1のYアドレスとを含む。図4に示す第1のホップスレーブデバイス405に対するデカルトアドレス(1,1)の割当ては、第1のスレーブデバイスの一例である。
【００５１】
本方法は、第2のスレーブデバイスが第1のスレーブデバイスに結合するために通る、第2のスレーブデバイスのうちの介在する第2のスレーブデバイスの数に応じて、第1のYアドレスからインクリメントされるYアドレスを各第2のスレーブデバイスに割り当てるステップであって、第2のスレーブデバイスのうちの介在する第2のスレーブデバイスの数が、各第2のスレーブデバイスについてゼロ以上である、割り当てるステップと、第2のスレーブデバイスのうちの他の第2のスレーブデバイスが、Xアドレスが割り当てられる第2のスレーブデバイスと同じYアドレスを共有するか否かに応じて、第1のXアドレスからインクリメントされるXアドレスを各第2のスレーブデバイスに割り当てるステップと、によって、第2のスレーブデバイスの各々にデカルトアドレスを割り当てる動作505をさらに含む。図4に示すスレーブデバイス415、410、425、および430へのXアドレスとYアドレスとの割当てが、動作505の一例である。スレーブデバイス420および430の各々がそのレベルにおける第2のスレーブデバイスであるので、スレーブデバイス420および430に対するXアドレスがインクリメントされることに留意されたい。同様に、これらのスレーブのうちの所与の1つのスレーブためのYアドレスは、その所与の1つのスレーブと第1のホップスレーブデバイス405との間に何個のスレーブが介在するかに応じて、第1のホップスレーブ405のためのルートYアドレスからインクリメントされる。たとえば、スレーブデバイス430は、スレーブデバイス420および415を通して第1のホップスレーブデバイス405に結合する。したがって、スレーブデバイス430は、第1のホップスレーブデバイス405から3つのスレーブぶん離れている(自体を計数)。したがって、スレーブデバイス430のためのYアドレスは、第1のホップスレーブデバイス405のためのルートYアドレスであるので、スレーブデバイス430のためのYアドレスは、3+1=4となる。
【００５２】
最後に、本方法は、各第2のスレーブデバイスを、各第2のスレーブデバイスのデカルトアドレスを使用してアドレス指定するステップによって第2のスレーブデバイスをエニュメレーションする動作510を含む。図4に示すスレーブデバイスのエニュメレーションは、ビット最適化されたアドレス指定がデカルトアドレス指定によって置換されることを除いて、図2と図3を参照して説明されるように進み得る。
【００５３】
以上から当業者が理解するように、および、実際の特定の用途に応じて、本開示の材料、装置、構成、およびデバイスの使用方法において、および、本開示の材料、装置、構成、およびデバイスの使用方法に対して、その範囲から逸脱することなく、多くの変更、置換、および変形がなされ得る。これを踏まえ、本明細書において提示および説明される特定の実施形態は本開示の範囲のいくつかの例にすぎないので、本開示の範囲は、本明細書において提示および説明される特定の実施形態の範囲に限定されてはならず、むしろ、以下に記載される請求項の範囲と、それらの機能的に均等なものと同じ広がりをもたなければならない。
【符号の説明】
【００５４】
100  システム、アプリケーションプロセッサIC、ネットワーク
101  ホスト集積回路(IC)
102  プロセッサ(CPU)
103  GPIOインターフェース
104  ハイブリッド仮想GPIOシステム
105  ホストデバイス
106  スレーブIC、集積回路
110  第1のホップスレーブデバイス
111  ピン
112  ピン
115  スレーブデバイス
116  UARTインターフェース
117  ハイブリッド仮想GPIO FSM
112  受信ピン
111  送信ピン
120  スレーブインターフェース
125  マスターインターフェース
126  GPIOピン
130  スレーブインターフェース
131  GPIO信号
135  マスターインターフェース
136  メッセージングレジスタ、第0のレジスタ、第Mのレジスタ、メッセージング信号
137  アドレス
138  メッセージ信号、メッセージング信号
139  GPIO信号
140  P2Pリンク
141  モデム電力管理装置(MPM)
145  P2Pリンク
200  システム
201  スレーブデバイス
202  ノードアグリゲータ、ホストアグリゲータ
205  ホストデバイス
206  P2Pリンク
210  マスターインターフェース
211  スレーブインターフェース
215  マスターインターフェース
216  第1のホップマスターインターフェース
220  マスターインターフェース
221  P2Pリンク
225  P2Pリンク
226  P2Pリンク
230  P2Pリンク
231  マスターインターフェース
236  第1のホップマスターインターフェース
240  P2Pリンク
241  P2Pリンク
245  スレーブインターフェース
246  スレーブデバイス
250  第1のホップスレーブデバイス
251  スレーブインターフェース
255  第1のホップスレーブデバイス
256  スレーブデバイス
260  スレーブインターフェース
265  第1のホップスレーブデバイス
266  I/O端子
270  スレーブインターフェース
271  マスタースレーブデバイス、第2のホップスレーブデバイス
275  P2Pリンク
276  スレーブインターフェース
280  マスターインターフェース
281  マスターインターフェース
282  第1のホップマスターインターフェース
286  エンドポイントスレーブデバイス
289  P2Pリンク
290  スレーブデバイス
291  スレーブインターフェース
295  スレーブインターフェース
400  ネットワーク
405  第1のレベル1スレーブデバイス、第1のホップスレーブ
410  レベル3スレーブデバイス
415  レベル2スレーブデバイス
420  レベル3スレーブデバイス
421  ポート
425  第1のレベル4スレーブデバイス
430  第2のレベル4スレーブデバイス
435  レベル2スレーブデバイス
440  レベル3スレーブデバイス
445  スレーブデバイス
450  レベル3スレーブデバイス
455  レベル4スレーブデバイス
460  レベル1スレーブデバイス
465  レベル2スレーブデバイス
470  レベル3スレーブデバイス
475  レベル3スレーブデバイス
【図１Ａ】
2018509715.tif 000003
【図１Ｂ】
2018509715.tif 000004
【図２】
2018509715.tif 000005
【図３】
2018509715.tif 000006
【図４】
2018509715.tif 000007
【図５】
2018509715.tif 000008
【手続補正書】
【提出日】平成29年9月26日(2017.9.26)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】０００９
【補正方法】変更
【補正の内容】
【０００９】
【図１Ａ】本開示の一態様に従った、いずれのデバイスも1つを上回るマスターインターフェースを含まない例示的なP2Pシステムのブロック図である。
【図１Ｂ】本開示の一態様に従った、ホストデバイス内のマスターインターフェースと、スレーブデバイス内の対応するスレーブインターフェースとのための回路図である。
【図２】本開示の一態様に従った、ホストデバイスといくつかのスレーブデバイスとの両方が1つを上回るマスターインターフェースを含む例示的なP2Pシステムのブロック図である。
【図３】本開示の一態様に従った、ビット最適化されたアドレスを使用して複数のスレーブデバイスをエニュメレーションする動作の例示的な方法のためのフローチャートである。
【図４】本開示の一態様に従った、各スレーブデバイスに固有デカルトアドレスが割り当てられる、スレーブデバイスとホストデバイスとの例示的なネットワークを示す図である。
【図５】第1のポイントツーポイント(P2P)リンクを通してホストデバイスに結合された第1のスレーブデバイスを含むシステムのための、固有デカルトアドレスを割り当てる例示的な方法のためのフローチャートの図であり、システムが、第1のスレーブデバイスを通してホストデバイスに結合された複数の第2のスレーブデバイスをさらに含む図である。
【手続補正２】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
ホストデバイスであって、
対応する複数の第1のスレーブデバイスに結合するための複数のポイントツーポイント(P2P)リンクに対応する複数のマスターインターフェースであって、各第1のスレーブデバイスが、前記対応するP2Pリンクを通して前記ホストデバイスにおける前記対応するマスターインターフェースに結合するためのスレーブインターフェースを含む、複数のマスターインターフェースと、
前記複数の第1のスレーブデバイスのために、エニュメレーション処理の開始のときに、各P2Pリンクに固有リンクIDを割り当てるように構成されたノードアグリゲータであって、前記ノードアグリゲータが、各第1のスレーブデバイスのスレーブインターフェースから、スレーブビットと前記対応する第1のP2Pリンクのための前記固有リンクIDとの連結情報に等しい固有ノードIDを受信するようにさらに構成され、前記ノードアグリゲータが、前記第1のスレーブデバイスの固有ノードIDを含むメッセージを使用して、前記対応するマスターインターフェースを通して各第1のスレーブデバイスをアドレス指定するようにさらに構成され、前記メッセージが、前記第1のスレーブデバイスに割り当てられるビット最適化されたアドレスを含み、各スレーブデバイスのための前記ビット最適化されたアドレスは、各第1のスレーブデバイスのための前記固有ノードIDよりも短い、ノードアグリゲータと
を備える、ホストデバイス。
【請求項２】
前記ノードアグリゲータが、各固有ノードIDが前記対応する第1のスレーブデバイス内の前記スレーブインターフェースに対応するかマスターインターフェースに対応するかを識別するようにさらに構成された、請求項1に記載のホストデバイス。
【請求項３】
前記ノードアグリゲータが、プロセッサを備える、請求項1に記載のホストデバイス。
【請求項４】
前記ノードアグリゲータが、状態機械を備える、請求項1に記載のホストデバイス。
【請求項５】
各マスターインターフェースが、
GPIO信号の対応する送信セットを仮想GPIO信号の少なくとも1つの第1のフレームにシリアル化するように構成された有限状態機械と、
オーバーサンプリングクロックのサイクルに応答して、UART送信ピンを通して前記少なくとも1つの第1のフレームを送信するように構成された汎用非同期送受信器(UART)インターフェースとを備え、前記プロセッサが、前記第1のスレーブデバイスのビット最適化されたアドレスを使用して、前記第1のスレーブデバイスと通信することによって、各第1のスレーブデバイスのスレーブインターフェースにフレーム長を割り当てるようにさらに構成され、各有限状態機械が、前記割り当てられたフレーム長に従って、前記GPIO信号の対応する送信セットを前記仮想GPIO信号の少なくとも1つのフレームにシリアル化するようにさらに構成された、
請求項3に記載のホストデバイス。
【請求項６】
前記第1のスレーブデバイスの少なくともいくつかの各々が、複数の第2のスレーブデバイスから、対応する第2のスレーブデバイス内のスレーブインターフェースに別のP2Pリンクを通して結合されたマスターインターフェースを含み、別のP2Pリンクの各々が、リンクIDをもち、前記ノードアグリゲータが、前記第2のスレーブデバイス内の前記スレーブインターフェースからノードIDの連結情報に等しい第2のノードIDを受信するようにさらに構成された、請求項3に記載のホストデバイス。
【請求項７】
前記有限状態機械が、複数のメッセージングレジスタを含み、前記プロセッサが、前記メッセージングレジスタに複数のメッセージング信号を書き込むように構成され、前記有限状態機械が、前記メッセージングレジスタからの前記メッセージング信号を少なくとも1つの第2のフレームにシリアル化するようにさらに構成され、前記UARTインターフェースが、前記オーバーサンプリングクロックのサイクルに応答して、前記UART送信ピンを通して前記少なくとも1つの第2のフレームを送信するようにさらに構成された、請求項5に記載のホストデバイス。
【請求項８】
各々が固有リンクIDをもつ対応する複数の第1のポイントツーポイント(P2P)リンクを通してホストデバイスに結合された複数の第1のスレーブデバイスを含むシステムであって、各第1のスレーブデバイスが、前記対応する第1のP2Pリンクに結合されたスレーブインターフェースを含む、システムのために、スレーブビットと前記対応する第1のP2Pリンクのための前記固有リンクIDとの連結情報に等しいノードIDを各スレーブインターフェースから前記ホストデバイスに送信するステップと、
ノードIDの数を計数して、各スレーブインターフェースを一意的に識別するために必要な最小ビット数を決定するステップと、
前記スレーブインターフェースのノードIDを含む第1のメッセージを使用して、各スレーブインターフェースをアドレス指定して、少なくとも前記最小ビット数幅であるビット最適化されたアドレスを前記スレーブインターフェースに割り当てるステップと、
前記スレーブインターフェースのビット最適化されたアドレスを含む第2のメッセージを使用して、各スレーブインターフェースをアドレス指定して、前記スレーブインターフェースをエニュメレーションするステップと
を含む、方法。
【請求項９】
前記システムが、前記第1のスレーブデバイスのうち介在する1つの第1のスレーブデバイス内のマスターインターフェースに第2のP2Pリンクを通して結合されたスレーブインターフェースを含む第2のスレーブデバイスを含み、前記方法が、前記第2のスレーブデバイス内の前記スレーブインターフェースから、前記第2のスレーブデバイス内の前記スレーブインターフェースのためのノードIDと、前記第1のスレーブデバイスのうちの前記介在する1つの第1のスレーブデバイス内のマスターインターフェースのためのノードIDと、前記第1のスレーブデバイスのうちの前記介在する1つの第1のスレーブデバイス内の前記スレーブインターフェースのための前記ノードIDとの連結情報に等しい連結されたアドレスを、前記ホストデバイスにおいて受信するステップをさらに含む、請求項8に記載の方法。
【請求項１０】
前記ホストデバイスから、前記連結されたアドレスを含む第3のメッセージを使用して、前記第2のスレーブデバイス内の前記スレーブインターフェースをアドレス指定して、前記第2のスレーブデバイス内の前記スレーブインターフェースにビット最適化されたアドレスを割り当てるステップをさらに含む、請求項9に記載の方法。
【請求項１１】
前記第2のスレーブデバイス内の前記スレーブインターフェースをアドレス指定するステップが、前記第2のスレーブデバイス内の前記スレーブインターフェースに、前記第1のスレーブデバイスのうちの前記介在する1つの第1のスレーブデバイス内の前記スレーブインターフェースとマスターインターフェースとを通して、前記第3のメッセージを送信するステップを含む、請求項10に記載の方法。
【請求項１２】
各スレーブインターフェースをエニュメレーションするステップが、各スレーブインターフェースのための仮想GPIOフレーム長を割り当てるステップを含む、請求項8に記載の方法。
【請求項１３】
各スレーブインターフェースをエニュメレーションするステップが、各スレーブインターフェースにフロー制御技術を割り当てるステップを含む、請求項8に記載の方法。
【請求項１４】
各スレーブインターフェースをエニュメレーションするステップが、各スレーブインターフェースにエラー訂正技術を割り当てるステップを含む、請求項8に記載の方法。
【請求項１５】
各ビット最適化されたアドレスが、2の累乗のビット幅である、請求項8に記載の方法。
【請求項１６】
ホストデバイスであって、
対応する複数のスレーブデバイスの各々内のスレーブインターフェースに結合するための複数のポイントツーポイント(P2P)リンクに対応する複数のマスターインターフェースと、
エニュメレーション処理の開始のときに、各P2Pリンクに固有リンクIDを割り当てるように構成されたノードアグリゲータであって、前記ノードアグリゲータが、各スレーブインターフェースから、前記対応するP2Pリンクのための前記固有リンクIDを含む固有の連結されたアドレスを受信するようにさらに構成された、ノードアグリゲータと
を備え、
前記ノードアグリゲータが、前記スレーブインターフェースの連結されたアドレスを含むメッセージを使用して、各スレーブインターフェースをアドレス指定して、各スレーブデバイスにデカルトアドレスを再割当てするようにさらに構成され、各デカルトアドレスが、XアドレスとYアドレスとを含み、各スレーブデバイスのための前記Yアドレスが、前記スレーブデバイスがすべての介在するスレーブデバイスを通して前記ホストデバイスに結合するために必要とされるホップの数に基づく、
ホストデバイス。
【請求項１７】
前記スレーブデバイスが、列に配置され、各スレーブデバイスのための前記Xアドレスが、前記スレーブデバイスを含む前記列を識別する、請求項16に記載のホストデバイス。
【請求項１８】
各ノードアグリゲータが、プロセッサを備える、請求項16に記載のホストデバイス。
【請求項１９】
各ノードアグリゲータが、状態機械を備える、請求項16に記載のホストデバイス。
【請求項２０】
各マスターインターフェースが、
GPIO信号の対応する送信セットを仮想GPIO信号の少なくとも1つの第1のフレームにシリアル化するように構成された有限状態機械と、
オーバーサンプリングクロックのサイクルに応答して、汎用非同期送受信器(UART)送信ピンを通して前記少なくとも1つの第1のフレームを送信するように構成されたUARTインターフェースとを備え、プロセッサが、前記第1のスレーブデバイスのデカルトアドレスを使用して前記第1のスレーブデバイスと通信することによって、各第1のスレーブデバイスのスレーブインターフェースにフレーム長を割り当てるようにさらに構成され、各有限状態機械が、前記割り当てられたフレーム長に従って、前記GPIO信号の対応する送信セットを前記仮想GPIO信号の少なくとも1つのフレームにシリアル化するようにさらに構成された、
請求項16に記載のホストデバイス。
【請求項２１】
各有限状態機械が、複数のメッセージングレジスタを含み、前記プロセッサが、前記メッセージングレジスタに複数のメッセージング信号を書き込むように構成され、前記有限状態機械が、前記メッセージングレジスタからの前記メッセージング信号を少なくとも1つの第2のフレームにシリアル化するようにさらに構成され、前記UARTインターフェースが、前記オーバーサンプリングクロックのサイクルに応答して、前記UART送信ピンを通して前記少なくとも1つの第2のフレームを送信するようにさらに構成された、請求項20に記載のホストデバイス。
【請求項２２】
前記プロセッサが、各スレーブデバイスのデカルトアドレスを使用して各スレーブデバイスをアドレス指定することによって、各スレーブデバイスをエニュメレーションして、前記スレーブデバイスに仮想GPIOフレーム長を割り当てるように構成された、請求項18に記載のホストデバイス。
【請求項２３】
前記プロセッサが、各スレーブデバイスのデカルトアドレスを使用して各スレーブデバイスをアドレス指定することによって、各スレーブデバイスをエニュメレーションして、各スレーブインターフェースにフロー制御技術を割り当てるように構成された、請求項18に記載のホストデバイス。
【請求項２４】
前記プロセッサが、各スレーブデバイスのデカルトアドレスを使用して各スレーブデバイスをアドレス指定することによって、各スレーブデバイスをエニュメレーションして、各スレーブインターフェースにエラー訂正技術を割り当てるように構成された、請求項18に記載のホストデバイス。
【請求項２５】
第1のポイントツーポイント(P2P)リンクを通してホストデバイスに結合された第1のスレーブデバイスを含むシステムであって、前記システムが、前記第1のスレーブデバイスを通して前記ホストデバイスに結合された複数の第2のスレーブデバイスをさらに含む、システムのために、前記第1のスレーブデバイスにデカルトアドレスを割り当てるステップであって、前記デカルトアドレスが、第1のXアドレスと第1のYアドレスとを含む、前記第1のスレーブデバイスにデカルトアドレスを割り当てるステップと、
各第2のスレーブデバイスに、前記第2のスレーブデバイスが前記第1のスレーブデバイスに結合するために通る、前記第2のスレーブデバイスのうちの介在する第2のスレーブデバイスの数に応じて、前記第1のYアドレスからインクリメントされるYアドレスを割り当てるステップであって、前記第2のスレーブデバイスのうちの介在する第2のスレーブデバイスの前記数が、各第2のスレーブデバイスについてゼロ以上である、Yアドレスを割り当てるステップと、前記第2のスレーブデバイスのうちの他の第2のスレーブデバイスが前記Xアドレスが割り当てられる前記第2のスレーブデバイスと同じYアドレスを共有するか否かに応じて、前記第1のXアドレスからインクリメントされるXアドレスを各第2のスレーブデバイスに割り当てるステップと、によって前記第2のスレーブデバイスの各々にデカルトアドレスを割り当てるステップと、
各第2のスレーブデバイスのデカルトアドレスを使用して各第2のスレーブデバイスをアドレス指定するステップによって、前記第2のスレーブデバイスをエニュメレーションするステップと
を含む、方法。
【請求項２６】
前記第2のスレーブデバイスのうちの第1の1つから前記第2のスレーブデバイスの第2の1つに、前記第2のスレーブデバイスの前記第2の1つのための前記デカルトアドレスに基づいて、メッセージを経路設定するステップをさらに含む、請求項25に記載の方法。
【請求項２７】
各第2のスレーブデバイスが、仮想汎用入出力(GPIO)インターフェースを含み、各第2のスレーブデバイスをエニュメレーションするステップが、前記第2のスレーブデバイスに仮想GPIOフレーム長を割り当てるステップを含む、請求項25に記載の方法。
【請求項２８】
P2Pリンクを通して前記ホストデバイスに結合された第3のスレーブデバイスにデカルトアドレスを割り当てるステップをさらに含み、前記第3のスレーブデバイスのための前記デカルトアドレスが、前記第2のスレーブデバイスのためのいずれのXアドレスよりも大きいインクリメントされたXアドレスを含み、さらに、前記第1のYアドレスを含む、請求項25に記載の方法。
【国際調査報告】
2018509715.tif 000009
2018509715.tif 000010