JP2018509715A - デカルトアドレス指定を使用した低電力および低待ち時間デバイスのエニュメレーション - Google Patents

デカルトアドレス指定を使用した低電力および低待ち時間デバイスのエニュメレーション Download PDF

Info

Publication number
JP2018509715A
JP2018509715A JP2017548409A JP2017548409A JP2018509715A JP 2018509715 A JP2018509715 A JP 2018509715A JP 2017548409 A JP2017548409 A JP 2017548409A JP 2017548409 A JP2017548409 A JP 2017548409A JP 2018509715 A JP2018509715 A JP 2018509715A
Authority
JP
Japan
Prior art keywords
slave
interface
address
slave device
link
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2017548409A
Other languages
English (en)
Inventor
ララン・ジー・ミシュラ
ジェームズ・パニアン
リチャード・ウィートフェルト
Original Assignee
クアルコム,インコーポレイテッド
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by クアルコム,インコーポレイテッド filed Critical クアルコム,インコーポレイテッド
Publication of JP2018509715A publication Critical patent/JP2018509715A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/104Peer-to-peer [P2P] networks
    • H04L67/1087Peer-to-peer [P2P] networks using cross-functional networking aspects
    • H04L67/1091Interfacing with client-server systems or between P2P systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4265Bus transfer protocol, e.g. handshake; Synchronisation on a point to point bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4247Bus transfer protocol, e.g. handshake; Synchronisation on a daisy chain bus
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/50Address allocation
    • H04L61/5007Internet protocol [IP] addresses
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0052Assignment of addresses or identifiers to the modules of a bus system
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2101/00Indexing scheme associated with group H04L61/00
    • H04L2101/60Types of network addresses
    • H04L2101/618Details of network addresses
    • H04L2101/64Asynchronous transfer mode [ATM] addresses

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Small-Scale Networks (AREA)
  • Computer And Data Communications (AREA)

Abstract

ホストデバイスにP2Pリンクを通して接続されたスレーブデバイスに対するアドレスの事前割当てを必要としないエニュメレーション技術が提供される。デバイス間のあらゆるP2Pリンクとの関係において、1つのデバイスがマスターインターフェースを含み、残りのデバイスがスレーブインターフェースを含む。マスターインターフェースとスレーブインターフェースとの間で区別するために、マスター/スレーブ状態ビットが使用され得る。各P2Pリンクは、対応するインターフェース(スレーブまたはマスター)のための状態ビットと連結されてノードIDを形成し得るリンクIDをもつ。ホストデバイスは、各スレーブデバイスから、スレーブのためのノードIDと、スレーブデバイスとホストデバイスとの間に介在するすべてのインターフェースのためのノードIDとの連結情報を表す固有の連結されたアドレスを受信する。次いで、ホストデバイスは、各スレーブデバイスに固有デカルトアドレスを割り当てる。

Description

関連出願の相互参照
本出願は、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スレーブデバイス
本開示の一態様に従った、いずれのデバイスも1つを上回るマスターインターフェースを含まない例示的なP2Pシステムのブロック図である。 本開示の一態様に従った、ホストデバイス内のマスターインターフェースと、スレーブデバイス内の対応するスレーブインターフェースとのための回路図である。 本開示の一態様に従った、ホストデバイスといくつかのスレーブデバイスとの両方が1つを上回るマスターインターフェースを含む例示的なP2Pシステムのブロック図である。 本開示の一態様に従った、ビット最適化されたアドレスを使用して複数のスレーブデバイスをエニュメレーションする動作の例示的な方法のためのフローチャートである。 本開示の一態様に従った、各スレーブデバイスに固有デカルトアドレスが割り当てられる、スレーブデバイスとホストデバイスとの例示的なネットワークを示す図である。 第1のポイントツーポイント(P2P)リンクを通してホストデバイスに結合された 第1のスレーブデバイスを含むシステムのための、固有デカルトアドレスを割り当てる例示的な方法のためのフローチャートの図であり、システムが、第1のスレーブデバイスを通してホストデバイスに結合された複数の第2のスレーブデバイスをさらに含む図である。

Claims (28)

  1. ホストデバイスであって、
    対応する複数の第1のスレーブデバイスに結合するための複数のポイントツーポイント(P2P)リンクに対応する複数のマスターインターフェースであって、各第1のスレーブデバイスが、前記対応するP2Pリンクを通して前記ホストデバイスにおける前記対応するマスターインターフェースに結合するためのスレーブインターフェースを含む、複数のマスターインターフェースと、
    前記複数の第1のスレーブデバイスのために、エニュメレーション処理の開始のときに、各P2Pリンクに固有リンクIDを割り当てるように構成されたノードアグリゲータであって、前記ノードアグリゲータが、各第1のスレーブデバイスのスレーブインターフェースから、前記対応するP2Pリンクのための前記固有リンクIDを含む固有の連結されたアドレスを受信するようにさらに構成され、前記ノードアグリゲータが、前記第1のスレーブデバイスの固有の連結されたアドレスを含むメッセージを使用して、前記対応するマスターインターフェースを通して各第1のスレーブデバイスをアドレス指定するようにさらに構成され、前記メッセージが、前記第1のスレーブデバイスに割り当てられるビット最適化されたアドレスを含み、各スレーブデバイスのための前記ビット最適化されたアドレスは、各第1のスレーブデバイスのための前記固有の連結されたアドレスよりも短い、ノードアグリゲータと
    を備える、ホストデバイス。
  2. 前記ノードアグリゲータが、各固有の連結されたアドレスが前記対応する第1のスレーブデバイス内の前記スレーブインターフェースに対応するかマスターインターフェースに対応するかを識別するようにさらに構成された、請求項1に記載のホストデバイス。
  3. 前記ノードアグリゲータが、プロセッサを備える、請求項1に記載のホストデバイス。
  4. 前記ノードアグリゲータが、状態機械を備える、請求項1に記載のホストデバイス。
  5. 各マスターインターフェースが、
    GPIO信号の対応する送信セットを仮想GPIO信号の少なくとも1つの第1のフレームにシリアル化するように構成された有限状態機械と、
    オーバーサンプリングクロックのサイクルに応答して、UART送信ピンを通して前記少なくとも1つの第1のフレームを送信するように構成された汎用非同期送受信器(UART)インターフェースとを備え、前記プロセッサが、前記第1のスレーブデバイスのビット最適化されたアドレスを使用して、前記第1のスレーブデバイスと通信することによって、各第1のスレーブデバイスのスレーブインターフェースにフレーム長を割り当てるようにさらに構成され、各有限状態機械が、前記割り当てられたフレーム長に従って、前記GPIO信号の対応する送信セットを前記仮想GPIO信号の少なくとも1つのフレームにシリアル化するようにさらに構成された、
    請求項3に記載のホストデバイス。
  6. 前記第1のスレーブデバイスの少なくともいくつかの各々が、複数の第2のスレーブデバイスから、対応する第2のスレーブデバイス内のスレーブインターフェースに別のP2Pリンクを通して結合されたマスターインターフェースを含み、別のP2Pリンクの各々が、リンクIDをもち、前記ノードアグリゲータが、前記第2のスレーブデバイス内の前記スレーブインターフェースからノードIDの連結情報に等しい第2の連結されたノードIDを受信するようにさらに構成された、請求項3に記載のホストデバイス。
  7. 前記有限状態機械が、複数のメッセージングレジスタを含み、前記プロセッサが、前記メッセージングレジスタに複数のメッセージング信号を書き込むように構成され、前記有限状態機械が、前記メッセージングレジスタからの前記メッセージング信号を少なくとも1つの第2のフレームにシリアル化するようにさらに構成され、前記UARTインターフェースが、前記オーバーサンプリングクロックのサイクルに応答して、前記UART送信ピンを通して前記少なくとも1つの第2のフレームを送信するようにさらに構成された、請求項5に記載のホストデバイス。
  8. 各々が固有リンクIDをもつ対応する複数の第1のポイントツーポイント(P2P)リンクを通してホストデバイスに結合された複数の第1のスレーブデバイスを含むシステムであって、各第1のスレーブデバイスが、前記対応する第1のP2Pリンクに結合されたスレーブインターフェースを含む、システムのために、スレーブビットと前記対応する第1のP2Pリンクのための前記固有リンクIDとの連結情報に等しいノードIDを各スレーブインターフェースから前記ホストデバイスに送信するステップと、
    ノードIDの数を計数して、各スレーブインターフェースを一意的に識別するために必要な最小ビット数を決定するステップと、
    前記スレーブインターフェースのノードIDを含む第1のメッセージを使用して、各スレーブインターフェースをアドレス指定して、少なくとも前記最小ビット数幅であるビット最適化されたアドレスを前記スレーブインターフェースに割り当てるステップと、
    前記スレーブインターフェースのビット最適化されたアドレスを含む第2のメッセージを使用して、各スレーブインターフェースをアドレス指定して、前記スレーブインターフェースをエニュメレーションするステップと
    を含む、方法。
  9. 前記システムが、前記第1のスレーブデバイスのうち介在する1つの第1のスレーブデバイス内のマスターインターフェースに第2のP2Pリンクを通して結合されたスレーブインターフェースを含む第2のスレーブデバイスを含み、前記方法が、前記第2のスレーブデバイス内の前記スレーブインターフェースから、前記第2のスレーブデバイス内の前記スレーブインターフェースのためのノードIDと、前記第1のスレーブデバイスのうちの前記介在する1つの第1のスレーブデバイス内のマスターインターフェースのためのノードIDと、前記第1のスレーブデバイスのうちの前記介在する1つの第1のスレーブデバイス内の前記スレーブインターフェースのための前記ノードIDとの連結情報に等しい連結されたアドレスを、前記ホストデバイスにおいて受信するステップをさらに含む、請求項8に記載の方法。
  10. 前記ホストデバイスから、前記連結されたアドレスを含む第3のメッセージを使用して、前記第2のスレーブデバイス内の前記スレーブインターフェースをアドレス指定して、前記第2のスレーブデバイス内の前記スレーブインターフェースにビット最適化されたアドレスを割り当てるステップをさらに含む、請求項9に記載の方法。
  11. 前記第2のスレーブデバイス内の前記スレーブインターフェースをアドレス指定するステップが、前記第2のスレーブデバイス内の前記スレーブインターフェースに、前記第1のスレーブデバイスのうちの前記介在する1つの第1のスレーブデバイス内の前記スレーブインターフェースとマスターインターフェースとを通して、前記第3のメッセージを送信するステップを含む、請求項10に記載の方法。
  12. 各スレーブインターフェースをエニュメレーションするステップが、各スレーブインターフェースのための仮想GPIOフレーム長を割り当てるステップを含む、請求項8に記載の方法。
  13. 各スレーブインターフェースをエニュメレーションするステップが、各スレーブインターフェースにフロー制御技術を割り当てるステップを含む、請求項8に記載の方法。
  14. 各スレーブインターフェースをエニュメレーションするステップが、各スレーブインターフェースにエラー訂正技術を割り当てるステップを含む、請求項8に記載の方法。
  15. 各ビット最適化されたアドレスが、2の累乗のビット幅である、請求項8に記載の方法。
  16. ホストデバイスであって、
    対応する複数のスレーブデバイスの各々内のスレーブインターフェースに結合するための複数のポイントツーポイント(P2P)リンクに対応する複数のマスターインターフェースと、
    エニュメレーション処理の開始のときに、各P2Pリンクに固有リンクIDを割り当てるように構成されたノードアグリゲータであって、前記ノードアグリゲータが、各スレーブインターフェースから、前記対応するP2Pリンクのための前記固有リンクIDを含む固有の連結されたアドレスを受信するようにさらに構成された、ノードアグリゲータと
    を備え、
    前記ノードアグリゲータが、前記スレーブインターフェースの連結されたアドレスを含むメッセージを使用して、各スレーブインターフェースをアドレス指定して、各スレーブデバイスにデカルトアドレスを再割当てするようにさらに構成され、各デカルトアドレスが、XアドレスとYアドレスとを含み、各スレーブデバイスのための前記Yアドレスが、前記スレーブデバイスがすべての介在するスレーブデバイスを通して前記ホストデバイスに結合するために必要とされるホップの数に基づく、
    ホストデバイス。
  17. 前記スレーブデバイスが、列に配置され、各スレーブデバイスのための前記Xアドレスが、前記スレーブデバイスを含む前記列を識別する、請求項16に記載のホストデバイス。
  18. 各ノードアグリゲータが、プロセッサを備える、請求項16に記載のホストデバイス。
  19. 各ノードアグリゲータが、状態機械を備える、請求項16に記載のホストデバイス。
  20. 各マスターインターフェースが、
    GPIO信号の対応する送信セットを仮想GPIO信号の少なくとも1つの第1のフレームにシリアル化するように構成された有限状態機械と、
    オーバーサンプリングクロックのサイクルに応答して、汎用非同期送受信器(UART)送信ピンを通して前記少なくとも1つの第1のフレームを送信するように構成されたUARTインターフェースとを備え、プロセッサが、前記第1のスレーブデバイスのデカルトアドレスを使用して前記第1のスレーブデバイスと通信することによって、各第1のスレーブデバイスのスレーブインターフェースにフレーム長を割り当てるようにさらに構成され、各有限状態機械が、前記割り当てられたフレーム長に従って、前記GPIO信号の対応する送信セットを前記仮想GPIO信号の少なくとも1つのフレームにシリアル化するようにさらに構成された、
    請求項16に記載のホストデバイス。
  21. 各有限状態機械が、複数のメッセージングレジスタを含み、前記プロセッサが、前記メッセージングレジスタに複数のメッセージング信号を書き込むように構成され、前記有限状態機械が、前記メッセージングレジスタからの前記メッセージング信号を少なくとも1つの第2のフレームにシリアル化するようにさらに構成され、前記UARTインターフェースが、前記オーバーサンプリングクロックのサイクルに応答して、前記UART送信ピンを通して前記少なくとも1つの第2のフレームを送信するようにさらに構成された、請求項20に記載のホストデバイス。
  22. 前記プロセッサが、各スレーブデバイスのデカルトアドレスを使用して各スレーブデバイスをアドレス指定することによって、各スレーブデバイスをエニュメレーションして、前記スレーブデバイスに仮想GPIOフレーム長を割り当てるように構成された、請求項18に記載のホストデバイス。
  23. 前記プロセッサが、各スレーブデバイスのデカルトアドレスを使用して各スレーブデバイスをアドレス指定することによって、各スレーブデバイスをエニュメレーションして、各スレーブインターフェースにフロー制御技術を割り当てるように構成された、請求項18に記載のホストデバイス。
  24. 前記プロセッサが、各スレーブデバイスのデカルトアドレスを使用して各スレーブデバイスをアドレス指定することによって、各スレーブデバイスをエニュメレーションして、各スレーブインターフェースにエラー訂正技術を割り当てるように構成された、請求項18に記載のホストデバイス。
  25. 第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のスレーブデバイスをエニュメレーションするステップと
    を含む、方法。
  26. 前記第2のスレーブデバイスのうちの第1の1つから前記第2のスレーブデバイスの第2の1つに、前記第2のスレーブデバイスの前記第2の1つのための前記デカルトアドレスに基づいて、メッセージを経路設定するステップをさらに含む、請求項25に記載の方法。
  27. 各第2のスレーブデバイスが、仮想汎用入出力(GPIO)インターフェースを含み、各第2のスレーブデバイスをエニュメレーションするステップが、前記第2のスレーブデバイスに仮想GPIOフレーム長を割り当てるステップを含む、請求項25に記載の方法。
  28. P2Pリンクを通して前記ホストデバイスに結合された第3のスレーブデバイスにデカルトアドレスを割り当てるステップをさらに含み、前記第3のスレーブデバイスのための前記デカルトアドレスが、前記第2のスレーブデバイスのためのいずれのXアドレスよりも大きいインクリメントされたXアドレスを含み、さらに、前記第1のYアドレスを含む、請求項25に記載の方法。
JP2017548409A 2015-03-24 2016-03-23 デカルトアドレス指定を使用した低電力および低待ち時間デバイスのエニュメレーション Pending JP2018509715A (ja)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US201562137687P 2015-03-24 2015-03-24
US62/137,687 2015-03-24
US201562208312P 2015-08-21 2015-08-21
US62/208,312 2015-08-21
US15/077,841 US9979782B2 (en) 2015-03-24 2016-03-22 Low-power and low-latency device enumeration with cartesian addressing
US15/077,841 2016-03-22
PCT/US2016/023826 WO2016154347A1 (en) 2015-03-24 2016-03-23 Low-power and low-latency device enumeration with cartesian addressing

Publications (1)

Publication Number Publication Date
JP2018509715A true JP2018509715A (ja) 2018-04-05

Family

ID=56976690

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017548409A Pending JP2018509715A (ja) 2015-03-24 2016-03-23 デカルトアドレス指定を使用した低電力および低待ち時間デバイスのエニュメレーション

Country Status (6)

Country Link
US (2) US9979782B2 (ja)
EP (2) EP3690665A1 (ja)
JP (1) JP2018509715A (ja)
KR (1) KR20170129150A (ja)
CN (1) CN107430577B (ja)
WO (1) WO2016154347A1 (ja)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9979782B2 (en) 2015-03-24 2018-05-22 Qualcomm Incorporated Low-power and low-latency device enumeration with cartesian addressing
US10459868B1 (en) * 2016-09-20 2019-10-29 Marvell International Ltd. Modular chip expansion bridge and corresponding methods
US20180357076A1 (en) * 2017-06-12 2018-12-13 Qualcomm Incorporated Method to establish operating configuration in a vgmi interface
US10496562B1 (en) * 2018-08-13 2019-12-03 Qualcomm Incorporated Low latency virtual general purpose input/output over I3C
CN110247997B (zh) * 2019-06-26 2020-12-15 三维通信股份有限公司 Das系统中ip地址分配和拓扑管理的方法、装置和存储介质
CN111552658B (zh) * 2020-04-17 2022-05-06 北京中科银河芯科技有限公司 一种通信方法、通信控制装置及i2c总线系统

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5675811A (en) * 1995-08-18 1997-10-07 General Magic, Inc. Method for transmitting information over an intelligent low power serial bus
US6363077B1 (en) 1998-02-13 2002-03-26 Broadcom Corporation Load balancing in link aggregation and trunking
US6363520B1 (en) 1998-06-16 2002-03-26 Logicvision, Inc. Method for testability analysis and test point insertion at the RT-level of a hardware development language (HDL) specification
US7051078B1 (en) 2000-07-10 2006-05-23 Cisco Technology, Inc. Hierarchical associative memory-based classification system
US7245623B1 (en) 2002-01-08 2007-07-17 Cisco Technology, Inc. System and method using hierarchical parallel banks of associative memories
ATE504446T1 (de) 2002-12-02 2011-04-15 Silverbrook Res Pty Ltd Totdüsenausgleich
US7228373B2 (en) 2004-03-24 2007-06-05 Analog Devices, Inc. Serial digital communication system and method
US7457257B2 (en) * 2005-11-17 2008-11-25 International Business Machines Corporation Apparatus, system, and method for reliable, fast, and scalable multicast message delivery in service overlay networks
CN101432674A (zh) * 2006-04-25 2009-05-13 德克萨斯仪器股份有限公司 内置集成电路寻址的方法及用于执行该方法的装置
US7761633B2 (en) * 2007-01-29 2010-07-20 Microsemi Corp. - Analog Mixed Signal Group Ltd. Addressable serial peripheral interface
EP2494742B1 (en) 2009-10-29 2018-10-24 Precision Microdynamics Inc. Network control architecture and protocol for a distributed control, data acquisition and data distribution system and process
JP2011248564A (ja) * 2010-05-26 2011-12-08 Seiko Epson Corp 中継装置およびプロセッサーシステム
US8832238B2 (en) * 2011-09-12 2014-09-09 Microsoft Corporation Recording stateless IP addresses
US9979782B2 (en) 2015-03-24 2018-05-22 Qualcomm Incorporated Low-power and low-latency device enumeration with cartesian addressing

Also Published As

Publication number Publication date
US10924541B2 (en) 2021-02-16
WO2016154347A1 (en) 2016-09-29
US20160285968A1 (en) 2016-09-29
KR20170129150A (ko) 2017-11-24
EP3690665A1 (en) 2020-08-05
US20180241816A1 (en) 2018-08-23
US9979782B2 (en) 2018-05-22
CN107430577B (zh) 2020-04-24
EP3274856B1 (en) 2020-06-17
CN107430577A (zh) 2017-12-01
EP3274856A1 (en) 2018-01-31

Similar Documents

Publication Publication Date Title
JP2018509715A (ja) デカルトアドレス指定を使用した低電力および低待ち時間デバイスのエニュメレーション
US9025495B1 (en) Flexible routing engine for a PCI express switch and method of use
KR101689998B1 (ko) 고성능 인터커넥트 링크 계층
US8812758B2 (en) Mechanism to flexibly support multiple device numbers on point-to-point interconnect upstream ports
CN103117929B (zh) 一种基于PCIe数据交换的通信方法及系统
US7308523B1 (en) Flow-splitting and buffering PCI express switch to reduce head-of-line blocking
CN103023824B (zh) 基于周边组件接口快速通道PCIe的数据传输系统及方法
US9684530B2 (en) System and method for assigning virtual functions and management host thereof
US9268732B2 (en) Tunnel suitable for multi-segment communication links and method therefor
US11425101B2 (en) System, apparatus and method for tunneling and/or multiplexing via a multi-drop interconnect
WO2015057872A1 (en) Noc interface protocol adaptive to varied host interface protocols
US11921652B2 (en) Method, apparatus and system for device transparent grouping of devices on a bus
WO2019223333A1 (zh) 一种配置均衡时间的方法、芯片和通信系统
CN107622032B (zh) 一种i2c总线的三线扩展方法及电路
WO2017000848A1 (en) Method and system for aggregation-friendly address assignment to pcie devices
CN105138485A (zh) 一种串行总线地址管理装置
JP2005182485A (ja) シリアル伝送制御装置、コンピュータシステム、および、シリアル伝送制御方法
US20080263248A1 (en) Multi-drop extension for a communication protocol
JP2007529815A (ja) 信号送信装置及び信号送信のための方法
US9722702B2 (en) SATA host bus adapter using optical signal and method for connecting SATA storage using the same
CN113688091B (zh) 基于Tsi721的RapidIO动态枚举过程的实现方法及系统
CN213024170U (zh) 计算设备
JP2012238158A (ja) データ転送装置及びデータ転送方法
TWI649985B (zh) 結合快速周邊元件互連匯流排與乙太網路的網路通訊方法、系統及控制器
WO2024009633A1 (ja) コントローラ、制御方法及びプログラム

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170926