(57)【特許請求の範囲】
【請求項１】
第１のシステムオンチップであって、
第１の非ホッピングバスインタフェース及び第２の非ホッピングバスインタフェースを含む複数の非ホッピングバスインタフェースであって、前記第１の非ホッピングバスインタフェースは、第１のプロトコルに基づいて情報を受信する、複数の非ホッピングバスインタフェースと、
複数のイントラチップアダプタを含むホッピングバスと、
ｉ）前記第１のシステムオンチップ及び第２のシステムオンチップのブートコードをロードアップし、ｉｉ）レディ信号を第１のイントラチップアダプタに送信する制御モジュールであって、前記レディ信号は、前記第２のシステムオンチップの前記ブートコードが準備完了であることを示し、前記複数のイントラチップアダプタは、前記第１のイントラチップアダプタを含む、制御モジュールと、
ｉ）前記レディ信号を、インターチップバスを介して前記第１のイントラチップアダプタから前記第２のシステムオンチップに転送し、ｉｉ）前記レディ信号に基づいて、前記第２のシステムオンチップからアクセス信号を受信し、ｉｉｉ）前記アクセス信号に基づいて、前記第２のシステムオンチップの前記ブートコードを前記第２のシステムオンチップに転送するインターチップアダプタであって、前記インターチップバスは、前記第１のシステムオンチップと前記第２のシステムオンチップとの間に延在する、インターチップアダプタと、
を備え、
前記複数のイントラチップアダプタは、直列に接続され、且つ、それぞれ前記複数の非ホッピングバスインタフェースに個別に接続され、
前記複数のイントラチップアダプタは、ｉ）第２のプロトコルに従って、１つ又は複数のパケットを生成するように前記情報をパケット化することを含め、前記ホッピングバスを介した送信のための第１のフォーマットに前記情報を変換し、ｉｉ）前記第１のフォーマットの前記情報を、前記ホッピングバスを介して、前記複数のイントラチップアダプタの間で転送し、
前記第２のプロトコルは、前記第１のプロトコルと異なり、
前記第２の非ホッピングバスインタフェースは、前記ホッピングバスを介した前記情報の前記送信に基づいて、前記ホッピングバスから前記情報を受信する、
第１のシステムオンチップ。
【請求項２】
第１のシステムオンチップであって、
第１の非ホッピングバスインタフェース及び第２の非ホッピングバスインタフェースを含む複数の非ホッピングバスインタフェースであって、前記第１の非ホッピングバスインタフェースは、第１のプロトコルに基づいて情報を受信する、複数の非ホッピングバスインタフェースと、
複数のイントラチップアダプタを含むホッピングバスと、
インターチップバスを介して第１のイントラチップアダプタに接続されるインターチップアダプタであって、前記インターチップアダプタは、ｉ）第２のシステムオンチップからレディ信号を受信し、ｉｉ）前記レディ信号を前記第１のイントラチップアダプタに転送し、前記複数のイントラチップアダプタは、前記第１のイントラチップアダプタを含む、インターチップアダプタと、
ｉ）前記レディ信号を前記第１のイントラチップアダプタから受信し、ｉｉ）前記レディ信号に基づいて、ｉ）前記インターチップバスを介してアクセスされ、前記第２のシステムオンチップ内のもしくは前記第２のシステムオンチップに接続されるメモリに格納されたブートコード、又はｉｉ）第１のシステムオンチップ内のもしくは前記第１のシステムオンチップに接続されるメモリに格納されるブートコードのいずれに基づいて前記第１のシステムオンチップをブートアップするかを決定する制御モジュールと、
を備え、
前記複数のイントラチップアダプタは、直列に接続され、且つ、それぞれ前記複数の非ホッピングバスインタフェースに個別に接続され、
前記複数のイントラチップアダプタは、ｉ）第２のプロトコルに従って、１つ又は複数のパケットを生成するように前記情報をパケット化することを含め、前記ホッピングバスを介した送信のための第１のフォーマットに前記情報を変換し、ｉｉ）前記第１のフォーマットの前記情報を、前記ホッピングバスを介して、前記複数のイントラチップアダプタの間で転送し、
前記第２のプロトコルは、前記第１のプロトコルと異なり、
前記第２の非ホッピングバスインタフェースは、前記ホッピングバスを介した前記情報の前記送信に基づいて、前記ホッピングバスから前記情報を受信する、
第１のシステムオンチップ。
【請求項３】
前記複数のイントラチップアダプタは、第１のイントラチップアダプタ及び第２のイントラチップアダプタを含み、
前記第１のイントラチップアダプタは、第３の非ホッピングバスインタフェース及びホッピングバスインタフェースを含み、
前記第３の非ホッピングバスインタフェースは、前記第１の非ホッピングバスインタフェースに接続され、前記第１のプロトコルに従って前記第１の非ホッピングバスインタフェースから前記情報を受信し、
前記ホッピングバスインタフェースは、前記第１のフォーマットの前記１つ又は複数のパケットを前記第２のイントラチップアダプタに転送する、
請求項１または２に記載の第１のシステムオンチップ。
【請求項４】
前記第２のイントラチップアダプタは、ｉ）前記第１のフォーマットの前記１つ又は複数のパケットを第３のプロトコルに従って第２のフォーマットに変換し、ｉｉ）前記第２のフォーマットの前記情報を前記第２の非ホッピングバスインタフェースに転送し、
前記第３のプロトコルは、前記第２のプロトコルと異なる、
請求項３に記載の第１のシステムオンチップ。
【請求項５】
前記第３のプロトコルは、前記第１のプロトコルと異なる、請求項４に記載の第１のシステムオンチップ。
【請求項６】
前記第１のイントラチップアダプタは、前記第１のイントラチップアダプタと前記第２のイントラチップアダプタとの間において、複数のチャネル又は複数の導電素子を介して、前記１つ又は複数のパケットの複数のビットを展開し、
前記第２のイントラチップアダプタは、ｉ）前記複数のチャネル又は前記複数の導電素子を介して前記１つ又は複数のパケットの前記複数のビットを受信し、ｉｉ）前記ホッピングバスのクロック信号に基づいて、前記１つ又は複数のパケットの前記複数のビットをサンプリングし、前記第２のイントラチップアダプタにおいて前記１つ又は複数のパケットの前記複数のビットの受信をスキュー制御する、
請求項３に記載の第１のシステムオンチップ。
【請求項７】
前記第１のプロトコルは、アドバンスドマイクロコントローラバスアーキテクチャである、請求項１から６のいずれか１項に記載の第１のシステムオンチップ。
【請求項８】
前記複数の非ホッピングバスインタフェースの各々は、前記第１のシステムオンチップ内のモジュール又は周辺デバイスに接続される、請求項１から７のいずれか１項に記載の第１のシステムオンチップ。
【請求項９】
前記第１の非ホッピングバスインタフェースは、第１のマスタポート及び第１のスレーブポートを含み、
前記第３の非ホッピングバスインタフェースは、第２のマスタポート及び第２のスレーブポートを含み、
前記第１のマスタポートは、前記第２のマスタポートに接続され、
前記第１のスレーブポートは、前記第２のスレーブポートに接続され、
前記情報は、ｉ）前記第１のマスタポートと前記第２のマスタポートとの間、又はｉｉ）前記第１のスレーブポートと前記第２のスレーブポートとの間で転送される、
請求項３に記載の第１のシステムオンチップ。
【請求項１０】
前記複数のイントラチップアダプタは、前記第１のイントラチップアダプタを含み、
前記第１のイントラチップアダプタは、ヘッダを有するパケットを生成するように前記情報をパケット化し、
前記ヘッダは、ローカルアドレスを含み、
前記インターチップアダプタは、ｉ）前記第１のシステムオンチップの固有識別子を決定し、ｉｉ）前記固有識別子に基づいて、前記ローカルアドレスをグローバルアドレスに変換し、ｉｉｉ）前記グローバルアドレスを有する前記１つ又は複数のパケットを第２のシステムオンチップに転送する、
請求項１から９のいずれか１項に記載の第１のシステムオンチップ。
【請求項１１】
前記インターチップアダプタは、前記１つ又は複数のパケットを前記第２のシステムオンチップに転送する前に、前記１つ又は複数のパケットをシリアライズする、請求項１０に記載の第１のシステムオンチップ。
【請求項１２】
前記制御モジュールは、ｉ）前記レディ信号に基づいてアクセス信号を生成し、ｉｉ）前記アクセス信号を、前記インターチップバスを介して前記第２のシステムオンチップに送信し、ｉｉｉ）前記第２のシステムオンチップ内の又は前記第２のシステムオンチップに接続されるメモリに格納された前記ブートコードを受信する、請求項２に記載の第１のシステムオンチップ。
【請求項１３】
請求項１または２に記載の第１のシステムオンチップであって、前記第１のシステムオンチップは、第１のイントラチップアダプタに接続される第１のインターチップアダプタを含み、前記複数のイントラチップアダプタは、前記第１のイントラチップアダプタを含む、請求項１または２に記載の第１のシステムオンチップと、
第２のホッピングバス及び第２のインターチップアダプタを含む第２のシステムオンチップと、
前記第１のインターチップアダプタを前記第２のインターチップアダプタに接続するインターチップバスと、
を含む、ホッピングバスシステム。
【請求項１４】
前記第１のシステムオンチップは、制御モジュールを含み、
前記制御モジュールは、ｉ）要求信号を生成し、ｉｉ）前記第１のプロトコルに基づいて、前記要求信号を前記第１のイントラチップアダプタに送信し、
前記第１のイントラチップアダプタは、ｉ）前記第２のプロトコルに従ってパケットを生成すべく、前記要求信号をパケット化し、ｉｉ）前記パケットを前記第１のインターチップアダプタに転送し、
前記第１のインターチップアダプタは、ｉ）前記パケットに固有識別子を追加し、ｉｉ）前記パケットをシリアライズし、ｉｉｉ）前記シリアライズされたパケットを前記インターチップバスに転送し、
前記第２のインターチップアダプタは、ｉ）前記パケットをデシリアライズし、ｉｉ）前記パケットを第３のイントラチップアダプタに転送し、
前記第３のイントラチップアダプタは、ｉ）前記パケットに基づいて、メモリに格納されたデータにアクセスし、ｉｉ）前記第２のインターチップアダプタ、前記インターチップバス、前記第１のインターチップアダプタ、及び前記第１のイントラチップアダプタを介して、前記データを前記制御モジュールに転送する、
請求項１３に記載のホッピングバスシステム。
【請求項１５】
第１のシステムオンチップにおいて情報を転送する方法であって、前記第１のシステムオンチップは、複数の非ホッピングバスインタフェース及びホッピングバスを含み、前記複数の非ホッピングバスインタフェースは、第１の非ホッピングバスインタフェース及び第２の非ホッピングバスインタフェースを含み、前記ホッピングバスは、複数のイントラチップアダプタを含み、前記複数のイントラチップアダプタは、直列に接続され、且つ、それぞれ前記複数の非ホッピングバスインタフェースに個別に接続され、前記方法は、
第１のプロトコルに基づいて、第１のシステムオンチップの前記第１の非ホッピングバスインタフェースにおいて情報を受信する段階と、
第２のプロトコルに従って、前記複数のイントラチップアダプタによって、１つ又は複数のパケットを生成するように前記情報をパケット化することを含め、前記ホッピングバスを介した送信のための第１のフォーマットに前記情報を変換する段階であって、前記第２のプロトコルは、前記第１のプロトコルと異なる、段階と、
前記複数のイントラチップアダプタによって、前記第１のフォーマットの前記情報を、前記ホッピングバスを介して前記複数のイントラチップアダプタの間で転送する段階と、
前記ホッピングバスを介した前記情報の前記送信に基づいて、前記第２の非ホッピングバスインタフェースにおいて前記ホッピングバスから前記情報を受信する段階と、
制御モジュールによって、ｉ）前記第１のシステムオンチップ及び第２のシステムオンチップのブートコードをロードアップし、ｉｉ）レディ信号を第１のイントラチップアダプタに送信する段階であって、前記レディ信号は、前記第２のシステムオンチップの前記ブートコードが準備完了であることを示し、前記複数のイントラチップアダプタは、前記第１のイントラチップアダプタを含む、送信する段階と、
インターチップアダプタによって、ｉ）前記レディ信号を、インターチップバスを介して前記第１のイントラチップアダプタから前記第２のシステムオンチップに転送し、ｉｉ）前記レディ信号に基づいて、前記第２のシステムオンチップからアクセス信号を受信し、ｉｉｉ）前記アクセス信号に基づいて、前記第２のシステムオンチップの前記ブートコードを前記第２のシステムオンチップに転送する段階であって、前記インターチップバスは、前記第１のシステムオンチップと前記第２のシステムオンチップとの間に延在する、転送する段階と、
を備える、
方法。
【請求項１６】
第１のシステムオンチップにおいて情報を転送する方法であって、前記第１のシステムオンチップは、複数の非ホッピングバスインタフェース及びホッピングバスを含み、前記複数の非ホッピングバスインタフェースは、第１の非ホッピングバスインタフェース及び第２の非ホッピングバスインタフェースを含み、前記ホッピングバスは、複数のイントラチップアダプタを含み、前記複数のイントラチップアダプタは、直列に接続され、且つ、それぞれ前記複数の非ホッピングバスインタフェースに個別に接続され、前記方法は、
第１のプロトコルに基づいて、第１のシステムオンチップの前記第１の非ホッピングバスインタフェースにおいて情報を受信する段階と、
第２のプロトコルに従って、前記複数のイントラチップアダプタによって、１つ又は複数のパケットを生成するように前記情報をパケット化することを含め、前記ホッピングバスを介した送信のための第１のフォーマットに前記情報を変換する段階であって、前記第２のプロトコルは、前記第１のプロトコルと異なる、段階と、
前記複数のイントラチップアダプタによって、前記第１のフォーマットの前記情報を、前記ホッピングバスを介して前記複数のイントラチップアダプタの間で転送する段階と、
前記ホッピングバスを介した前記情報の前記送信に基づいて、前記第２の非ホッピングバスインタフェースにおいて前記ホッピングバスから前記情報を受信する段階と、
インターチップバスを介して第１のイントラチップアダプタに接続されるインターチップアダプタによって、ｉ）第２のシステムオンチップからレディ信号を受信し、ｉｉ）前記レディ信号を前記第１のイントラチップアダプタに転送する段階であって、前記複数のイントラチップアダプタは、前記第１のイントラチップアダプタを含む、転送する段階と、
制御モジュールによって、ｉ）前記レディ信号を前記第１のイントラチップアダプタから受信し、ｉｉ）前記レディ信号に基づいて、ｉ）前記インターチップバスを介してアクセスされ、前記第２のシステムオンチップ内のもしくは前記第２のシステムオンチップに接続されるメモリに格納されたブートコード、又はｉｉ）前記第１のシステムオンチップ内のもしくは前記第１のシステムオンチップに接続されるメモリに格納されるブートコードのいずれに基づいて前記第１のシステムオンチップをブートアップするかを決定する段階と、を備える、方法。
【請求項１７】
前記第１のプロトコルに従って、第１のイントラチップアダプタの第３の非ホッピングバスインタフェースにおいて、前記第１の非ホッピングバスインタフェースから前記情報を受信する段階であって、前記複数のイントラチップアダプタは、前記第１のイントラチップアダプタ及び第２のイントラチップアダプタを含む、段階と、
前記第２のプロトコルに従って、前記ホッピングバスを介した送信のための前記第１のフォーマットに、前記第１のイントラチップアダプタによって前記情報を変換する段階であって、前記情報の前記変換は、１つ又は複数のパケットを生成するように前記情報をパケット化することを含む、段階と、
前記第１のフォーマットの前記１つ又は複数のパケットを、ホッピングバスインタフェースによって前記第２のイントラチップアダプタに転送する段階と、
をさらに備える、請求項１５または１６に記載の方法。
【請求項１８】
前記第１のフォーマットの前記１つ又は複数のパケットを、前記第２のイントラチップアダプタによって、第３のプロトコルに従って第２のフォーマットに変換する段階であって、前記第３のプロトコルは、前記第２のプロトコルと異なる、段階と、
前記第２のイントラチップアダプタによって、前記第２のフォーマットの前記情報を、前記第２の非ホッピングバスインタフェースに転送する段階と、
をさらに備える、請求項１７に記載の方法。
【請求項１９】
前記第３のプロトコルは、前記第１のプロトコルと異なる、請求項１８に記載の方法。
【請求項２０】
前記第１のイントラチップアダプタによって、前記第１のイントラチップアダプタと前記第２のイントラチップアダプタとの間において、複数のチャネル又は複数の導電素子を介して、前記１つ又は複数のパケットの複数のビットを展開する段階と、
前記１つ又は複数のパケットの前記複数のビットを、前記複数のチャネル又は前記複数の導電素子を介して、前記第２のイントラチップアダプタにおいて受信する段階と、
前記ホッピングバスのクロック信号に基づいて、前記１つ又は複数のパケットの前記複数のビットをサンプリングし、前記第２のイントラチップアダプタにおいて前記１つ又は複数のパケットの前記複数のビットの受信をスキュー制御する段階と、
をさらに備える、請求項１７から１９のいずれか１項に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
［関連出願への相互参照］
本願は、２０１４年１２月９日出願の米国特許出願第１４／５６４，４９９号に対する優先権を主張し、さらに、２０１３年１２月１２日出願の米国仮出願第６１／９１５，４１３号及び２０１４年３月１７日出願の米国仮出願第６１／９５４，４８６号に対する利益を主張する。上述された出願の開示全体は、参照によって本明細書に組み込まれる。
【０００２】
本開示は、情報のイントラチップ及びインターチップ転送に用いられるシステムオンチップ（ＳｏＣ）のアーキテクチャに関する。
【背景技術】
【０００３】
本明細書において提供される背景技術の説明は、概して、本開示の文脈を与えることを目的とする。ここに名を挙げられた発明者らの研究は、この背景技術の項において当該研究が説明される範囲において、出願時において先行技術として別途みなし得ない説明の複数の態様と共に、明示的にも暗示的にも本開示に対する先行技術としては認められない。
【０００４】
高度なシリコン製造処理により、ＳｏＣの所定面積に含まれるゲートの数は、増加の一途をたどっている。特定のバス（又はファブリック）アーキテクチャが導入され、ＳｏＣ内において、プロセッサモジュール及びインタフェース制御モジュールの間における情報の転送（例えば、データ、コマンド、パラメータ、アドレス等）を可能としている。例えば、アドバンスドマイクロコントローラバスアーキテクチャ（ＡＭＢＡ）は、ＳｏＣにおけるモジュールの接続及び管理のためのオンチップ相互接続の仕様である。ＡＭＢＡの１つのインタフェース世代は、アドバンスドエクステンシブルインタフェース（ＡＸＩ）と称される。
【０００５】
ＡＸＩベースのアーキテクチャを有するＳｏＣは、複数のプロセッサ（又はコア）モジュール、マスタＡＸＩ相互接続バス（又はマスタファブリック）、スレーブＡＸＩ相互接続バス（又はスレーブファブリック）、及び複数のインタフェースコントローラを含んでよい。複数のプロセッサモジュールは、複数の相互接続バスを介して複数のインタフェースコントローラに接続された複数の周辺機器を制御し、及び／又はこれらにアクセスする。ＡＸＩ相互接続バスは、マルチレベルＡＸＩファブリックと称されてよく、複数のプロセッサモジュール及びインタフェースコントローラ間の相互接続のメッシュを提供してよい。複数のインタフェースコントローラは、複数の周辺デバイス及び／又はネットワークにそれぞれ接続されてよい。複数の周辺デバイスは、ランダムアクセスメモリ（ＲＡＭ）又はリードオンリメモリ（ＲＯＭ）のような複数のメモリデバイスを含んでよい。複数の周辺デバイスは、ディスプレイ、フラッシュドライブ、ハードディスクドライブ、ハイブリッドドライブ、カメラ、組み込みマルチメディアカード（ｅＭＭＣ）、Ｅｔｈｅｒｎｅｔ（登録商標）デバイス、シリアルスモールコンピュータシステムインタフェース（ＳＣＳＩ）プロトコル（ＳＳＰ）デバイス、万能非同期送受信機（ＵＡＲＴ）インタフェースを介して通信を行うデバイス等を含んでよい。複数のネットワークは、無線又は有線ネットワークを含んでよい。無線ネットワークの例は、ＷｉＦｉネットワークのような無線ローカルエリアネットワーク（ＷＬＡＮ）である。
【０００６】
プロセッサモジュールは、バスマスタと称されてよい。複数のプロセッサモジュールは、ＳｏＣに接続された複数の周辺機器のオペレーションを制御し、及びこれらを開始させる。これは、マスタＡＸＩ相互接続バスを介して複数のインタフェースコントローラに複数のコマンドを送信する複数のプロセッサモジュール（又はマスタ）を含んでよい。複数のインタフェースコントローラの各々は、マスタポート（又はインタフェース）及びスレーブポート（又はインタフェース）を含む。複数のマスタポートは、複数のマスタＡＸＩ相互接続バスに接続される。複数のスレーブポートは、複数のスレーブＡＸＩ相互接続バスに接続される。複数のコマンドは、複数のマスタポートに送信されてよく、次に複数の周辺デバイスに転送されてよい。データは次に、複数のスレーブポートにおいて複数の周辺デバイスから受信されてよい。スレーブＡＸＩ相互接続バスは、複数のスレーブポートからのデータを複数のプロセッサモジュールに転送する。
【０００７】
ＡＸＩアーキテクチャを有するＳｏＣにおいて、複数のプロセッサモジュール及びインタフェースコントローラ間の各接続は、複数のチャネルを含む。複数のチャネルは、読み出しアドレスチャネル、読み出しデータチャネル、書き込みアドレスチャネル、書き込みデータチャネル、バッファ書き込み応答チャネル、及びクロックチャネルを含む。これらの接続は、複数のプロセッサモジュール及びインタフェースコントローラのＡＸＩバスインタフェースを介して提供される。複数のＡＸＩバスインタフェースは、（ｉ）複数のプロセッサモジュールとＡＸＩ相互接続バスとの間に、及び（ｉｉ）複数のＡＸＩ接続バスとインタフェース制御モジュールとの間に存在してよい。複数のＡＸＩバスインタフェース及びＡＸＩ相互接続バスは、多数のワイヤを含む。例えば、ＡＸＩバスインタフェースの複数の書き込みチャネルは、１２８ビットパラレル転送用の２２４ワイヤと同数のワイヤを含んでよい。ＡＸＩバスインタフェースの複数の読み出しチャネルは、１２８ビットパラレル転送用の２０８ワイヤと同数のワイヤを含んでよい。スレーブＡＸＩ相互接続バスは、３２ビットパラレル転送用の２００ワイヤを含んでよい。１０ポートＡＸＩ相互接続バスは、ポート毎に１２８ビットパラレル転送用の５０００ワイヤを含んでよい。他の例として、１０ポートＡＸＩ相互接続バスは、ポート毎に３２ビットパラレル転送用の３０００ワイヤを含んでよい。追加の複数のワイヤが、割り込み転送のためにさらに必要とされる。複数のＡＸＩ相互接続バスは、制限されたデータ転送速度（例えば、３１２メガヘルツ（ＭＨｚ）又はそれより低速）による相互接続の大規模メッシュのネットワークである。複数のメッシュネットワークにおける隣接ノード間のポイントツーポイント転送速度も、制限され（例えば４１６ＭＨｚ）又はより低速である。
【０００８】
ＡＸＩアーキテクチャＳｏＣにおける複数のモジュールは、一般に共有されるクロックに基づいて動作する。クロック信号は、複数のＡＸＩ相互接続バスにおいて、複数の分岐（又は相互接続）の大規模なクロックツリーを介して提供される。結果として、複数のモジュールの間における通信は同期している。複数のモジュールのうち２つが異なるプロトコル（例えば、ＡＸＩ及びＡＭＢＡ高性能バス（ＡＨＢ）のような異なるＡＭＢＡプロトコル）及び／又は異なるクロック（もしくは異なる周波数を有するクロック信号）に基づいて動作する場合、ブリッジは、典型的には、複数のモジュールの間に組み込まれる。ブリッジは、例えば、異なるバス幅（例えば、パラレル転送されたビット数）及びクロック周波数を有する２つの異なるドメインの間において、通信を可能にする。複数のモジュールの間における接続のために適切な帯域幅及びレイテンシを確保すべく、複数のインテグレータがＳｏＣに組み込まれてよいが、各モジュールに対する帯域幅の割り当て及びアクセスレイテンシの制御が困難である。この理由は、複数のモジュールの間により多数のワイヤ及び相互接続が存在することと、共有クロック信号が大規模メッシュネットワークにわたって分布することによる。
【０００９】
適切にクロックツリーを軽減するようにクロック信号の周波数を設定することは困難なことがある。適切なクロックツリーの軽減は、対応するＳｏＣのオペレーション及び／又は寿命に悪影響を与えることなく適用可能な最も高い周波数にクロック信号の周波数を設定することを指す。クロック信号の周波数を増加させると、ＳｏＣの処理、電圧、及び温度（ＰＶＴ）変動を増加させることがある。結果として、クロック周波数を増加させる可能性は、ＰＶＴ変動が増加する可能性により限定され得る。クロックツリーがより大規模になると、クロック信号の周波数はより低速になる。
【発明の概要】
【００１０】
第１のシステムオンチップが提供され、これは、複数の非ホッピングバスインタフェース及びホッピングバスを含む。複数の非ホッピングバスインタフェースは、第１の非ホッピングバスインタフェース及び第２の非ホッピングバスインタフェースを含む。第１の非ホッピングバスインタフェースは、第１のプロトコルに基づいて、情報を受信するように構成される。ホッピングバスは、複数のイントラチップアダプタを含む。複数のイントラチップアダプタは、直列にそれぞれ複数の非ホッピングバスインタフェースに接続される。複数のイントラチップアダプタは、（ｉ）第２のプロトコルに従って、ホッピングバスを介した送信のための第１のフォーマットに情報を変換し、（ｉｉ）ホッピングバスを介して、複数のイントラチップアダプタの間で第１のフォーマットの情報を転送するように構成される。第２のプロトコルは、第１のプロトコルと異なる。第２の非ホッピングバスインタフェースは、ホッピングバスを介した情報の送信に基づいて、ホッピングバスから情報を受信するように構成される。
【００１１】
他の複数の特徴において、第１のシステムオンチップにおいて情報を転送する方法では、第１のシステムオンチップは、複数の非ホッピングバスインタフェース及びホッピングバスを含む。複数の非ホッピングバスインタフェースは、第１の非ホッピングバスインタフェース及び第２の非ホッピングバスインタフェースを含む。ホッピングバスは、複数のイントラチップアダプタを含む。複数のイントラチップアダプタは、直列にそれぞれ複数の非ホッピングバスインタフェースに接続される。方法は、第１のプロトコルに基づいて、第１のシステムオンチップの第１の非ホッピングバスインタフェースにおいて情報を受信する段階と、第２のプロトコルに従って、複数のイントラチップアダプタを介して、ホッピングバスを介した送信のための第１のフォーマットに情報を変換する段階であって、第２のプロトコルは第１のプロトコルと異なる、段階と、第１のフォーマットの情報を、ホッピングバスを介して複数のイントラチップアダプタの間で転送する段階と、ホッピングバスを介した情報の送信に基づいて、第２の非ホッピングバスインタフェースにおいてホッピングバスから情報を受信する段階と、を含む。
【００１２】
本開示の適用可能性のさらなる領域が、詳細な説明、特許請求の範囲及び図面から明らかになろう。詳細な説明及び具体的な例は、例示のみを目的とすることが意図されており、本開示の範囲を限定することが意図されるものではない。
【図面の簡単な説明】
【００１３】
【図１】本開示の実施形態に係るシステムのホッピングバス（ＨＢ）の機能ブロック図である。
【００１４】
【図２】複数のＳｏＣを組み込む他のＨＢシステムの機能ブロック図であり、本開示の実施形態に係る複数のイントラチップＨＢアダプタモジュール及びインターチップＨＢアダプタモジュールを示す。
【００１５】
【図３】本開示の実施形態に係るアドレス変換モジュールの機能ブロック図である。
【００１６】
【図４】本開示の実施形態に係るＨＢシステムを動作させる方法を示す。
【００１７】
【図５】本開示の実施形態に係るクロスチップブートアップ制御のためのＨＢシステムの機能ブロック図である。
【００１８】
【図６】本開示の実施形態に係るブート方法を示す。
【００１９】
図面において、参照番号は、同様の及び／又は同一の要素を特定するために再利用されることがある。
【発明を実施するための形態】
【００２０】
以下に開示される複数の例は、複数のＳｏＣのための複数のホッピングバス（ＨＢ）アーキテクチャを導入する。複数のＳｏＣは、複数のイントラチップＨＢ、複数のイントラチップＨＢアダプタモジュール、及び複数のインターチップＨＢアダプタモジュールを含む。複数のイントラチップＨＢは、複数のイントラチップＨＢアダプタモジュールの間における接続を含み、これらを提供する。インターチップＨＢは、複数のＳｏＣの間に延在し、複数のインターチップＨＢアダプタモジュールを含み、複数のインターチップＨＢアダプタモジュールの間における接続を提供する。ＨＢは、複数のイントラチップＨＢアダプタモジュール及び／又はインターチップＨＢアダプタモジュール、ならびに本明細書に開示されるような複数の対応する導電素子及びバッファを含むバスを指す。ＨＢは、情報がデスティネーションに到達するまで、複数のＨＢアダプタモジュールから複数のＨＢアダプタモジュールにホップするためのパスを提供する。複数のＨＢアダプタモジュールは、プロトコル変換、パケット化、サンプリング、スキュー制御、固有の特定、シリアライズ、及び／又はデシリアライズを実行してよい。ＨＢは、さらに後述されるように、ＨＢプロトコルに従って、情報に対する動作及び転送を実行する。
【００２１】
複数のＨＢアーキテクチャは、システムパーティショニングの簡便性を向上させ、これにより、システム設計者は、ＳｏＣのレイアウトにフォーカスするのではなく、モジュール及び／又はＳｏＣの機能にフォーカスすることを可能とする。この理由は、各モジュールがＳｏＣの異なる領域に容易に配置可能であることによる。複数のモジュール及びＳｏＣは、単一のＨＢプロトコルを介して、互いに通信可能である。複数のモジュールは、異なるクロック信号に基づいて動作してよく、異なる転送速度、ポート又はインタフェース幅等を有してよい。各モジュールは、ＨＢアダプタモジュールを備え、１つ又はそれより多くのイントラチップＨＢと１つ又はそれより多くのインターチップＨＢとを介した情報の転送が可能である。複数のイントラチップＨＢ及びインターチップＨＢは、複数のモジュールとＳｏＣとの間における効率的な情報の転送のために、パラレル送信要素（例えば、導電素子）の１つ又は複数の「ハイウェイ」として機能する。
【００２２】
複数のＨＢアーキテクチャは、新たに設計された複数のモジュール及び／又はＳｏＣの容易な統合を可能にする。複数のＨＢアーキテクチャは、異なるモジュール及び／又は異なるタイプのＳｏＣにおける同じソフトウェアの容易な統合及び再利用をさらに可能にする。なぜなら、複数のモジュール及びＳｏＣの各々は、割り当てられたＨＢアダプタモジュールを介して、同じＨＢプロトコルを用いて通信可能だからである。複数のイントラチップＨＢアダプタモジュールは、割り込みを含む情報をパケット化し、これにより、情報及び割り込みの効率的な転送を可能にする。これは、割り込みのために追加の指定チャネル及び／又はワイヤを必要とすることなく実行される。複数のインターチップアダプタモジュールは、アドレスマッピングを提供し、同じＨＢプロトコルを用いた複数のＳｏＣの間における情報の転送を可能にする。
【００２３】
複数のＨＢアーキテクチャは、一方向の非同期相互接続を介して、情報の高速転送を可能にする。各ＨＢアダプタモジュールは、個別の送信及び受信接続を有する。各接続は、一方向である。複数のモジュール及び／又はＳｏＣは、異なるクロック周波数を有する異なるクロック信号に基づいて、動作してよい。複数のイントラチップＨＢ及びインターチップＨＢは、ＳｏＣのクロック信号に無関係な情報を転送する。複数のイントラチップＨＢ及びインターチップＨＢは、複数のタイミングモジュールを含み、これらは、ＨＢクロック周波数に基づいてスキュー制御を提供する。これは、複数のＨＢアダプタモジュールの間において、情報のパラレルな疑似同期転送を提供する。複数のＨＢシステムのオペレーション及び対応するＨＢアーキテクチャが、さらに詳細に後述される。
【００２４】
図１は、複数のＳｏＣ１２、１４を組み込むＨＢシステム１０を示す。ＳｏＣ１２、１４は、個別のイントラチップＨＢ１６、１８を含み、インターチップＨＢ２０を介して互いに接続される。イントラチップＨＢ１６、１８の各々は、複数のインターチップＨＢアダプタモジュール（以下、インターチップＨＢアダプタと称される）ＡＨＢＩｎｔｅｒのペアの間において直列に接続される複数のイントラチップＨＢアダプタモジュール（以下、イントラチップＨＢアダプタと称される）ＡＨＢＩｎｔｒａを含む。複数のインターチップＨＢアダプタＡＨＢＩｎｔｅｒは、対応するインターチップＨＢを介して他の複数のインターチップＨＢアダプタに接続するように構成される。例えば、インターチップＨＢアダプタ２２は、複数のインターチップＨＢ要素２６を介してインターチップＨＢアダプタ２４に接続される。示されるように、複数の導電素子は、ＨＢアダプタＡＨＢＩｎｔｒａ、ＡＨＢＩｎｔｅｒの連続する複数のペアの間に延在する。特定の数の導電素子が示されるが、任意の数の導電素子がＨＢ１６、１８、２０に含まれてよい。各イントラチップＨＢアダプタＡＨＢＩｎｔｒａは、ＳｏＣ制御モジュール２７、２８、セルラインタフェース２９、グラフィック処理モジュール（ＧＰＭ）３０、３２、ＷＬＡＮインタフェース３４、画像信号プロセッサ（ＩＳＰ）インタフェース３６、万能非同期送受信機（ＵＡＲＴ）インタフェース３８、メモリインタフェース４０、及びＥｔｈｅｒｎｅｔ（登録商標）インタフェース４２のようなモジュール及び／又はインタフェースに接続されてよい。インタフェース２９、３４、３６、３８、４０、４２は、ポート４４、４５、４６、４７、４８、４９を介して個別のデバイスに接続されてよい。
【００２５】
複数のイントラチップＨＢアダプタＡＨＢＩｎｔｒａは、特定の複数のモジュール及びインタフェースに接続されるものとして示されているが、複数のイントラチップＨＢアダプタＡＨＢＩｎｔｒａは、他の複数のモジュール及びインタフェースに接続されてよい。例えば、複数のイントラチップＨＢアダプタＡＨＢＩｎｔｒａは、ユニバーサルシリアルバス（ＵＳＢ）インタフェース、シリアルアドバンスドテクノロジアタッチメント（ＳＡＴＡ）インタフェース、及びペリフェラルコンポーネントインターコネクトエクスプレス（ＰＣＩｅ）インタフェースのようなシリアルインタフェースに接続されてよい。複数のモジュール及び／又はインタフェースの各々のうち１つ又は複数は、ＳｏＣ１２、１４の各々に含まれてよい。メモリインタフェース４０は、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）、ダブルデータレート（ＤＤＲ）メモリ、リードオンリメモリ（ＲＯＭ）、ソリッドステートドライブ（ＳＤＤ）、ハードディスクドライブ、ハイブリッドドライブ、組み込みマルチメディアカード（ｅＭＭＣ）等のような揮発性及び／又は不揮発性メモリに接続されてよい。
【００２６】
ＳｏＣ制御モジュール２７、２８は、各々、１つ又は複数の処理モジュール（又はマスタ）及びキャッシュを含んでよく、複数の他のモジュール及び／又はインタフェースのオペレーションを制御してよい。複数のインタフェースは、個別の無線及び／又は有線ネットワーク、周辺デバイス（例えば、カメラ、プリンタ、モデム、コピー機等）、及び／又は他の複数のデバイスと、個別のポートを介して通信を行ってよい。ＳｏＣ制御モジュール２７、２８の各々は、対応するイントラチップＨＢ１６、１８及びイントラチップＨＢアダプタＡＨＢＩｎｔｒａを介して、ＳｏＣ１２、１４のうち対応するもののモジュール及びインタフェースにアクセスする。ＳｏＣ制御モジュール２７、２８の各々は、イントラチップＨＢ１６、１８、インターチップＨＢ（例えばインターチップＨＢ２０）及びＨＢアダプタＡＨＢＩｎｔｒａ、ＡＨＢＩｎｔｅｒのうち対応するものを介して、複数の他のＳｏＣのモジュール及びインタフェースにアクセスする。例えば、ＳｏＣ制御モジュール２７、２８の１つは、コマンド（又は要求信号）をイントラチップＨＢ１６、１８の１つに送信してよい。コマンドは、複数のモジュール及び／又はインタフェースの１つに、インターチップＨＢ及び／又はインターチップＨＢ２０を介して転送されてよい。コマンドに応答して、データは、イントラチップＨＢ１６、１８及び／又はインターチップＨＢ２０の１つを介して、ＳｏＣ制御モジュールに戻されてよい。
【００２７】
ＳｏＣ１２、１４は、示されるようにポート５０、５２を介して、及び／又はインターチップＨＢアダプタ２２、２４を介して、互いに接続されてよい。ポート５０、５２は、インターチップＨＢアダプタ２２、２４に含まれてよい。複数のＨＢアダプタＡＨＢＩｎｔｒａ、ＡＨＢＩｎｔｅｒの各々は、２つ又はそれより多くのポートを含んでよく、各ポートは、送信ポート又は受信ポートである。各ポートは、情報が（ｉ）マスタデバイス、モジュール又はインタフェースとの間で送信及び受信されるか、又は（ｉｉ）スレーブデバイス、モジュール又はインタフェースとの間で送信及び受信されるかに応じて、マスタポート及び／又はスレーブポートと称されてよい。
【００２８】
図２は、複数のＳｏＣ７０、７２、７４を含むホッピングバスシステム６０を示す。第１のＳｏＣ７０は、イントラチップＨＢ７５を含む。イントラチップＨＢ７５は、イントラチップＨＢアダプタ７６、７８、８０を含み、これらは、インターチップＨＢアダプタ８２、８４のペアの間に直列に接続される。ＨＢアダプタ７６、７８、８０、８２、８４は、図１の対応するＨＢアダプタのいずれかを置換してよい。イントラチップＨＢアダプタ７６、７８、８０は、ＳｏＣ制御モジュール８６、周辺機器インタフェースモジュール８８、９０、及び／又は複数の他のモジュール及び／又は（上述されたもののいくつかである）インタフェースに接続されてよい。イントラチップＨＢアダプタ７６、７８、８０の各々は、複数の非ＨＢ及びＨＢインタフェース（例示的なインタフェース９２、９４、９６、９８が示される）、プロトコル変換モジュール（例示的なプロトコル変換モジュール９９が示される）、及びタイミングモジュール（例示的なタイミングモジュール１００が示される）を含んでよい。非ＨＢインタフェースは、非ＨＢプロトコルに従って、対応するＨＢアダプタとの間で情報を転送する。ＨＢインタフェースは、ＨＢプロトコルに従って、対応するＨＢアダプタとの間で情報を転送する。複数の非ＨＢ及びＨＢインタフェースは、個別のマスタ、スレーブ、送信及び／又は受信ポートを介して、ＳｏＣ制御モジュール８６、周辺機器インタフェースモジュール８８、９０、複数の隣接イントラチップＨＢアダプタのインタフェース、及び／又はインターチップＨＢアダプタ８２、８４のインタフェースに接続される。第１のイントラチップＨＢアダプタ７６は複数のインタフェース、プロトコル変換モジュール、及びタイミングモジュールを含むものとして示されるが、複数の他のイントラチップＨＢアダプタ（例えば、イントラチップＨＢアダプタ７８、８０）の各々は、個別のインタフェース、プロトコル変換モジュール、及びタイミングモジュールを含んでよい。
【００２９】
第１のイントラチップＨＢアダプタ７６は、ＳｏＣ制御モジュール８６に接続される第１のインタフェース９２と、複数の導電素子１０２及びバッファ１０４を介して第２のイントラチップＨＢアダプタ７８に接続される第２のインタフェース９４と、複数の導電素子１０６及びバッファ１０８を介してインターチップＨＢアダプタ８２に接続される第３のインタフェース９６と、第４のインタフェース９８とを含む。第１のインタフェース９２は、非ＨＢインタフェースであり、ＳｏＣ制御モジュール８６のインタフェース１１０のマスタ及びスレーブポートに対応するマスタ及びスレーブポートを含む。他のインタフェース９４、９６、９８は、ＨＢインタフェースである。第４のインタフェース９８は、他のイントラチップＨＢアダプタ、最後のイントラチップＨＢアダプタ（例えば、イントラチップＨＢアダプタ８０）、又は他のインターチップＨＢアダプタに接続されてよい。例として、バッファ１０２、１０６は、第１のＳｏＣ７０の複数の上部金属層に配置されてよく、ＳｏＣ制御モジュール８６、周辺機器インタフェースモジュール８８、９０、及び／又は複数の他のモジュールは、上部金属層より下部の（すなわち、第１のＳｏＣ７０の基板により近接する）複数の層に配置されてよい。周辺機器インタフェースモジュール８８、９０は、個別の周辺デバイス１１０、１１２に接続される個別のインタフェース１０７、１０９を含む。
【００３０】
イントラチップＨＢアダプタ７６、７８、８０は、示されるように、共にリンクされてよく、第１のイントラチップＨＢアダプタ７６を最後のイントラチップＨＢアダプタ８０に接続することによって、ループバックしてよい。イントラチップＨＢアダプタ７６、７８、８０の各々は、個別のインターチップＨＢアダプタ（例えば、インターチップＨＢアダプタ８２、８４）を介して、１つ又は複数のＳｏＣ（例えば、ＳｏＣ７２、７４）に接続されてよい。２つのインターチップＨＢアダプタが示されるが、追加の複数のインターチップＨＢアダプタが第１のＳｏＣ７０に組み込まれてよく、イントラチップＨＢアダプタ７６、７８、８０のいずれか１つに接続されてよい。イントラチップＨＢアダプタ７６、７８、８０の各々は、任意の数のモジュール、インタフェース、及び／又はＨＢアダプタに接続するための任意の数のインタフェースを含んでよい。
【００３１】
（ｉ）ＳｏＣ制御モジュール８６、（ｉｉ）周辺機器インタフェースモジュール８８、９０、及び／又は（ｉｉｉ）イントラチップＨＢ７５に接続される複数の他のモジュール及び／又はインタフェースに接続されるイントラチップＨＢアダプタモジュール７６、７８、８０のインタフェース（例えば、インタフェース９２）は、非ＨＢインタフェースと称されてよい。複数の非ＨＢインタフェースは、個別のマスタポート及びスレーブポートを含んでよい。複数のマスタポート及びスレーブポートは、同じ又は異なる非ＨＢプロトコルを介して、ＳｏＣ制御モジュール８６、周辺機器インタフェースモジュール８８、９０及び／又は複数の他のモジュール及び／又はインタフェースに対して動作してよく、及び／又はこれらとの間で情報を転送してよい。非ＨＢプロトコルは、同じクロック信号又は異なるクロック信号に基づいてよい。複数の非ＨＢプロトコルは、例えば、アドバンスドマイクロコントローラバスアーキテクチャ（ＡＭＢＡ）、アドバンスドエクステンシブルインタフェース（ＡＸＩ）プロトコル、及びＡＭＢＡ高性能バス（ＡＨＢ）であってよい。ＳｏＣ制御モジュール８６、周辺機器インタフェースモジュール８８、９０及び／又は複数の他のモジュール及び／又はインタフェースは、（ｉ）複数の非ＨＢプロトコルのうち１つ又は複数に従って、かつ（ｉｉ）複数のクロック信号のうち１つ又は複数に基づいて、イントラチップＨＢ７５との間で情報を転送してよい。イントラチップＨＢアダプタ７６、７８、８０の他のインタフェース（例えば、インタフェース９４、９６、９８）は、ＨＢインタフェースと称されてよく、ＨＢプロトコルに従って情報を転送してよい。イントラチップＨＢアダプタ７６、７８、８０は、情報の転送に用いられるクロック信号に関わらず、複数の非ＨＢインタフェースから情報を受信するように構成される。
【００３２】
プロトコル変換モジュール９９は、バッファ１２０及びパケット化モジュール１２２を含んでよい。プロトコル変換モジュール９９は、複数の非ＨＢプロトコルのうち１つ又は複数に従って受信された情報を、ＨＢプロトコルに従ったフォーマットの情報に変換する。受信された情報は、バッファ１２０に格納されてよく、次に、パケット化モジュール１２２によってパケット化されてよい。結果として、ヘッダ及びボディを有する複数のパケットが生成される。ヘッダは、ソースアドレス、デスティネーションアドレス、及び転送及び／又はアクセスされるべき多数のビットを含んでよい。ボディは、複数のコマンド、要求された情報、データ、及び／又は他の情報を含んでよい。パケット化モジュール１２２は、また、ＨＢアダプタ７６、７８、８０、８２、８４の間で、対応するＨＢインタフェース、バッファ、及び導電素子を介して、他の情報と同様の及び／又はこれらと共に、複数の割り込みをパケット化し、当該割り込みを送信してよい。これにより、割り込みのために複数のライン、導電素子、及び／又はチャネルを追加する必要がなくなる。
【００３３】
タイミングモジュール１００は、ＨＢクロック信号を生成するＨＢクロック１２４を含んでよい。タイミングモジュール１００及びＨＢクロック１２４は第１のイントラチップＨＢアダプタ７６の一部として示されるが、タイミングモジュール１００及び／又はＨＢクロック１２４は、ＨＢアダプタ７６、７８、８０、８２、８４のいずれかの一部であってよく、及び／又はＨＢアダプタ７６、７８、８０、８２、８４とは別個であって、かつ、ＨＢアダプタ７６、７８、８０、８２、８４にＨＢクロック信号を提供してよい。ＨＢアダプタ７６、７８、８０、８２、８４は、同じＨＢクロック信号を共有してよい。同じＨＢクロック信号は、ＳｏＣ７０、７２、７４のＨＢアダプタによって共有されてよい。ＨＢアダプタ７６、７８、８０、８２、８４の各々のタイミングモジュール及び／又はパケット化モジュールは、対応するＨＢアダプタから他の複数のＨＢアダプタの１つに転送される情報信号にＨＢクロック信号を組み込んでよい。
【００３４】
タイミングモジュール１００は、スキュー制御をさらに実行してよい。これは、ＨＢクロック信号に基づいて、イントラチップＨＢアダプタの対応インタフェースで、複数のパラレルチャネルにおいて受信された情報（又はパケット）をサンプリングすることを含んでよい。スキュー制御は、複数のＨＢアダプタの間で、パラレルチャネルにおいて転送された情報の複数のビットが、互いの予め定められた期間内に受信されることを確実にする。これは、情報のパラレル伝搬及び信号の整合を提供する。任意の数の受信チャネル及び送信チャネルと、複数のＨＢアダプタの間を並行に延在する複数の対応する導電素子と、複数の対応するバッファとが存在してよい。
【００３５】
インターチップＨＢアダプタ８２、８４は、イントラチップＨＢアダプタ７６、７８に接続されるＨＢインタフェース１３１、１３３と、インターチップＨＢ１５０、１５２に接続されるＨＢインタフェース１３５、１３７とを含む。インターチップＨＢアダプタ８２、８４は、アドレス変換モジュール１３０、１３２と、識別子（ＩＤ）モジュール１３４、１３６と、シリアライザ／デシリアライザ（ＳＥＲ／ＤＥＲ）モジュール１３８、１４０と、タイミングモジュール１４２、１４４とを含む。出力する情報に対して、複数のアドレス変換モジュールは、複数のイントラチップＨＢアダプタから受信された複数のパケットにおいて提供される複数のローカルアドレスを、複数のグローバルアドレスに変換してよい。ローカルアドレスは、ローカルチップには認識可能であり、複数の他のチップには認識可能でなくてよい。グローバルアドレスは、ローカルチップにも複数の他のチップにも認識可能であってよい。ローカルアドレスは、ローカルチップ及び／又はローカルチップに接続されるメモリデバイスにおけるメモリ位置のアドレスを指してよい。グローバルアドレスは、リモートチップにおける、及び／又はリモートチップに接続されるメモリデバイスにおけるメモリ位置のアドレスを指してよい。入力される情報に対して、アドレス変換モジュールは、リモートＳｏＣから受信されたグローバルアドレスを、アドレス変換モジュールのローカルＳｏＣのローカルアドレスに変換してよい。
【００３６】
ＩＤモジュール１３４、１３６は、１つ又は複数の固有ＩＤを、イントラチップＨＢアダプタ７６、７８、８０から受信されたパケットのヘッダに追加してよい。複数の固有ＩＤは、ＳｏＣ、ソースモジュール（情報を要求及び／又は提供するモジュール）、ソースインタフェース（情報を要求及び／又は提供するインタフェース）、及び／又はインターチップＨＢアダプタに固有であってよい。固有ＩＤは、例えば、ＩＤモジュールによって実行されるソフトウェアを介して割り当てられてよい。例として、アドレス変換モジュール１３０、１３２の１つは、ローカル４０ビットアドレスをイントラチップＨＢ７５から受信し、ＩＤモジュール１３４、１３６の１つによって提供される固有ＩＤに基づいて、グローバル４８ビットアドレスを生成してよい。
【００３７】
ＳＥＲ／ＤＥＲモジュール１３８、１４０は、それぞれインターチップＨＢ１５０、１５２においてインターチップＨＢアダプタ８２、８４から送信されている情報（又はパケット）をシリアライズし、インターチップＨＢ１５０、１５２を介してＳｏＣ７２、７４から受信されている情報（又はパケット）をデシリアライズしてよい。タイミングモジュール１４２、１４４は、ＨＢクロック信号の送信及びスキュー制御を含め、イントラチップＨＢアダプタ７６のタイミングモジュール１００と同様に動作してよい。
【００３８】
モジュール８６、８８、９０（及びイントラチップＨＢアダプタ７６、７８、８０に接続される複数の他のモジュール及び／又はインタフェース）は、個別のマクロに基づいて動作してよい。複数のマクロは、チップ固有であってよく、及び／又は、イントラチップＨＢアダプタ７６、７８、８０の構成及びオペレーションにより、異なるタイプのチップにおいて再利用されてよい。この理由は、各マクロに関連付けられたクロック信号が、対応するチップのクロック信号に一致する必要はなく、及び／又は一致するように修正される必要もないからである。イントラチップＨＢアダプタ７６、７８、８０は、情報がいつ受信されたかに関わらず動作可能であるので、クロックの一致は必要とされない。
【００３９】
イントラチップＨＢアダプタ７６、７８、８０は、複数のマクロのタイミングを認識してよい。これは、イントラチップＨＢアダプタ７６、７８、８０に予めプログラミングされてよく、及び／又はモジュール８６、８８、９０（及びイントラチップＨＢアダプタ７６、７８、８０に接続される複数の他のモジュール及び／又はインタフェース）との通信及び／又はこれらから受信された複数のクロック信号に基づいてよい。つまり、イントラチップアダプタ７６、７８、８０は、情報がモジュール８６、８８、９０（及びイントラチップＨＢアダプタ７６、７８、８０に接続される複数の他のモジュール及び／又はインタフェース）からいつ受信されるかを決定し、適宜応答可能であってよい。他の実施形態において、モジュール８６、８８、９０（及びイントラチップＨＢアダプタ７６、７８、８０に接続される複数の他のモジュール及び／又はインタフェース）から情報を受信することに関して、イントラチップＨＢアダプタ７６、７８、８０は、時間を認識せず、受信された情報をバッファ処理してよい。
【００４０】
イントラチップＨＢ７５は、複数の標準化された互換性接続ポイント（すなわち、イントラチップＨＢアダプタ７６、７８、８０）を提供し、これらは、複数の互換性接続ポイントの間で上位レベルのルーティング及びタイミングを伴う。情報の非同期転送が、（ｉ）モジュール８６、８８、９０とイントラチップＨＢアダプタ７６、７８、８０に接続される複数の他のモジュール及び／又はインタフェースとの間で、及び（ｉｉ）イントラチップＨＢアダプタ７６、７８、８０の間で、行われてよい。ＨＢアダプタ７６、７８、８０、８２、８４の間における情報の転送は、スキュー制御が実行されることにより、疑似同期と称されてよい。複数の互換性接続ポイントを組み込むことによって、複数の互換性接続ポイントの容易な検証及びシリコン注入が可能となる。
【００４１】
複数のＨＢインタフェースは、組み合わせられたマスタ及びスレーブインタフェースと称されてよく、個別の送信及び受信導電素子（例えば、導電素子１０２、１０６）を介してパラレルフォーマットで情報を転送してよい。送信及び受信導電素子の各々は、一方向であってよい。例として、複数の送信導電素子は、１２８データエレメント及び１６ストローブエレメントを含んでよい。複数の受信導電素子も、１２８データエレメント及び１６ストローブエレメントを含んでよい。これは、従来のＡＸＩクロスメッシュ構成、すなわち、例えばデバイスＡが、デバイスＡから延在するクロスメッシュ構成の個別の分岐を介してデバイスＢ−Ｄに接続される構成とは異なる。開示されるＨＢシステム６０は、デバイスＡ−ＤがシリアルＨＢを介して接続されることを可能にし、これにより、デバイスＡ−Ｄの各々は、ＨＢの複数のＨＢアダプタの間で情報をシリアルに転送することによって、他のデバイスＡ−Ｄの各々と通信可能となる。情報は、デスティネーションデバイス（例えばデスティネーションデバイスＤ）に最も近接するイントラチップＨＢアダプタに到達するまで、ソースデバイス（例えばデバイスＡ）から複数のＨＢアダプタの間で転送される。
【００４２】
ＳｏＣ制御モジュール８６は、ブートモジュール１６０を含んでよい。ブートモジュール１６０は、第１のＳｏＣ７０及び／又は複数の他のＳｏＣ（例えば、ＳｏＣ７２、７４）の複数のモジュール及びアダプタをブートアップしてよい。ブートモジュール１６０は、ブートアップをいつ実行し、複数のＳｏＣの個別のブートアップコードがどこに格納されるかを、複数の他のＳｏＣに指示してよい。複数のブートアップコードは、第１のＳｏＣ７２、複数の他のＳｏＣ、及び／又は第１のＳｏＣ７２及び／又は複数の他のＳｏＣとは別個のメモリに格納されてよい。複数の他のＳｏＣは、第１のＳｏＣ７２からの命令に基づいて、ブートアップしてよい。複数の他のＳｏＣは、個別の格納及びプリセットされた複数のビット、プリセットされた複数のピン、及び／又は自己ブートするか又は第１のＳｏＣ７２からの命令に基づいてブートアップするかを示す複数の他のＳｏＣのプリセットされた複数のヒューズに基づいて、ブートアップしてよい。複数の命令は、さらに後述されるように、インターチップＨＢ（ＩＨＢ）レディ信号において提供されてよい。ブートモジュール１６０のオペレーションは、図５及び６に関して、より詳細に説明される。
【００４３】
図３は、アドレス変換モジュール１７０を示す。アドレス変換モジュール１７０は、図２の複数のアドレス変換モジュールのいずれかを置換してよい。アドレス変換モジュール１７０は、ローカルアドレスマスキングモジュール１７２、第１のアドレス比較モジュール１７４、グローバルアドレスマスキングモジュール１７６、及び第２のアドレス比較モジュール１７８を含む。ローカルアドレスマスキングモジュール１７２は、ローカルアドレスの多数のビットを示してよく、予め定められた数のグローバルアドレスと比較してよい。第１のアドレス比較モジュール１７４は、ローカルアドレス又はその一部を１つ又は複数のグローバルアドレスと比較し、一致を見る。一致が見られた場合、一致したグローバルアドレスは、ローカルアドレスに代えて用いられる。
【００４４】
例えば、ローカルアドレスマスキングモジュール１７２は、ローカルアドレスの４８ビットのうち最初の３２ビットが、予め定められた数のグローバルアドレスの各々の最初の３２ビットと、一致が見られるまで比較されることを示してよい。予め定められた数のグローバルアドレスは、個別のレジスタに格納されてよく、ローカルアドレスと比較されてよい。これらの比較は、並行して（又は同じ期間内に）実行されてよい。ローカルアドレスは、次に、第１のアドレス比較モジュール１７４を介して、一致するグローバルアドレスに再マッピングされる。
【００４５】
グローバルアドレスマスキングモジュール１７６は、グローバルアドレスの多数のビットを示してよく、予め定められた数のローカルアドレスと比較してよい。第２のアドレス比較モジュール１７８は、グローバルアドレス又はその一部を１つ又は複数のローカルアドレスと比較し、一致を見る。一致が見られた場合、一致したローカルアドレスは、グローバルアドレスに代えて用いられる。
【００４６】
例えば、グローバルアドレスマスキングモジュール１７６は、グローバルアドレスの４８ビットのうち最初の３２ビットが、予め定められた数のローカルアドレスの各々の最初の３２ビットと、一致が見られるまで比較されることを示してよい。予め定められた数のローカルアドレスは、個別のレジスタに格納されてよく、グローバルアドレスと比較されてよい。これらの比較は、並行して（又は同じ期間内に）実行されてよい。グローバルアドレスは、次に、第２のアドレス比較モジュール１７８を介して、一致するローカルアドレスに再マッピングされる。
【００４７】
グローバルアドレスは、１つ又はそれより多くのイントラチップＨＢと１つ又はそれより多くのインターチップＨＢとを介して、現在のＳｏＣから他のＳｏＣに転送されている場合には、ローカルアドレスに再マッピングされなくてよい。再マッピングは、最終デスティネーションＳｏＣにおいて行われてよい。これは、１つ又は複数のチップの迂回と称される。
【００４８】
本明細書に開示される複数のシステムは、多数の方法を用いて動作させられてよく、例示的な方法は、図４に示される。図４において、ＨＢシステムを動作させる方法（例えば、図１−２のＨＢシステム１０、６０の１つ）が示される。複数の以下のタスクは、主として、図１−３の実装に関して説明されるが、これらのタスクは、本開示の複数の他の実装に適用するように、容易に修正され得る。これらのタスクは、反復的に実行されてよい。
【００４９】
方法は、２００において開始してよい。２０２において、第１のイントラチップＨＢアダプタ（例えばイントラチップＨＢアダプタ７６）は、情報（例えばコマンド）をモジュール（例えばＳｏＣ制御モジュール８６）から受信する。情報は、第１のイントラチップアダプタの非ＨＢインタフェースのマスタポートを介して受信されてよい。
【００５０】
２０４において、プロトコル変換モジュールは、受信された情報をＨＢプロトコルに変換する。受信された情報は、異なるタイプであってよく、異なる速度で受信されていてよく、及び／又は異なるクロック周波数に基づいて送信されていてよい。受信された情報のプロトコルに関わらず、プロトコル変換モジュールは、ＨＢプロトコルに従って、情報をＨＢフォーマットに変換する。これは、情報をパケット化し、１つ又は複数のパケットにヘッダを追加するパケット化モジュールを含んでよい。ヘッダは、ソースアドレス、デスティネーションアドレス、ソースチップ固有ＩＤ、デスティネーションチップ固有ＩＤ、ソースモジュール固有ＩＤ、及び／又はデスティネーションモジュール固有ＩＤを含んでよい。ソース及びデスティネーションアドレスは、複数のＳｏＣのアドレスでなくてよく、むしろ、複数のＳｏＣの内部又は外部のメモリ位置、及び／又は複数のＳｏＣに接続されるデバイスのアドレスを指してよい。
【００５１】
２０６において、第１のイントラチップＨＢアダプタは、ヘッダにおけるいずれか又は全ての情報に基づいて、２０４において生成された１つ又は複数のパケットが（ｉ）現在のイントラチップアダプタモジュールから現在のＳｏＣに内部転送されるべきか、又は（ｉｉ）他のＳｏＣに送信されるべきかを決定してよい。複数のパケットが現在のＳｏＣに残るべき場合、タスク２０８が実行され、そうでなければタスク２２２が実行される。
【００５２】
２０８において、第１のイントラチップＨＢアダプタは、ヘッダにおけるいずれか又は全ての情報に基づいて、２０４において生成された１つ又は複数のパケットが次のイントラチップＨＢアダプタモジュールに転送されるべきか否かを決定してよい。複数のパケットがイントラチップＨＢに沿って次のイントラチップＨＢアダプタモジュールに転送されるべき場合、タスク２１０が実行され、そうでなければタスク２１５が実行される。
【００５３】
２１０において、情報及びＨＢクロック信号は、現在の（又は前の）イントラチップＨＢアダプタモジュールから次のイントラチップＨＢアダプタモジュールに、イントラチップＨＢを介して転送される。複数のパケットは、複数のＨＢアダプタモジュールの間で、複数の適用可能なパラレルチャネルを介して展開される。２１２において、次のイントラチップＨＢアダプタモジュールにおいて受信される前に、情報は、前のイントラチップＨＢアダプタモジュールと次のイントラチップＨＢアダプタモジュールとの間で、複数のバッファ（例えばバッファ１０２）を介してバッファ処理される。２１４において、複数のパケットのビットは、複数のチャネルにおいて次のインターチップＨＢアダプタモジュールで受信されると、ＨＢクロック信号に基づいてサンプリングされる。サンプリングは、複数のビットが各チャネルにおいて受信される速度を調整するように、スキュー制御を実行すべく調整されてよい。これは、複数のパラレルチャネルを介して互いの第１の予め定められた期間内に送信される複数のビットが、互いの第２の予め定められた期間内に受信されることを確実にする助けとなる。第２の予め定められた期間は、第１の予め定められた期間と同じ長さであってよい。タスク２１４の後で、タスク２０６が実行されてよく、次のイントラチップＨＢアダプタモジュールは、ここで、現在のイントラチップＨＢアダプタモジュールとなる。
【００５４】
２１５において、パケットの形の情報は、次のイントラチップＨＢアダプタモジュールのプロトコル変換モジュールによって、デスティネーションデバイスに認識可能なフォーマットに変換される。情報は、ソースデバイスによって送信された情報と同じフォーマットで、及び／又は当該情報と同じプロトコルに基づいてよく、又は、異なるフォーマットで、及び／又は異なるプロトコルに基づいてよい。２１６において、変換された情報は、イントラチップＨＢからデスティネーションデバイス、モジュール及び／又はインタフェースに転送される。２１８において、最新のイントラチップＨＢアダプタモジュールは、デスティネーションデバイス、モジュール及び／又はインタフェースから応答を受信したか否かを、その情報に基づいて決定する。応答が受信されていた場合、タスク２２０が実行され、そうでなければ、方法が２３８において終了してよい。
【００５５】
２２０において、応答は、デスティネーションデバイス、モジュール及び／又はインタフェースから、最新のイントラチップＨＢアダプタモジュールにおいて受信され、イントラチップＨＢを介して情報のソースに転送される。応答は、例えば、メモリに格納されていたデータを含んでよい。応答の転送は、情報がデスティネーションデバイス、モジュール及び／又はインタフェースに送信された逆順序で行われてよい。
【００５６】
２２２において、情報は、現在のイントラチップＨＢアダプタモジュールからインターチップＨＢアダプタモジュール（例えばインターチップＨＢアダプタ８２）に転送される。２２４において、インターチップＨＢアダプタモジュールにおいて受信される前に、情報はバッファ処理される。２２６において、インターチップＨＢアダプタモジュールは、受信された情報をサンプリングする。これは、上述されたようにスキュー制御を含んでよく、最後のイントラチップＨＢアダプタモジュール（前は現在のイントラチップＨＢアダプタモジュールと称された）からインターチップＨＢアダプタモジュールにおいて受信されるＨＢクロック信号に基づいてよい。
【００５７】
２２８において、ＩＤモジュール（例えばＩＤモジュール）は、１つ又は複数の固有ＩＤを決定する。２３０において、アドレス変換モジュールは、１つ又は複数の固有ＩＤに基づいて、ローカルアドレスをグローバルアドレスに変換してよい。複数のパケットのヘッダは、１つ又は複数の固有ＩＤ及び決定されたグローバルアドレスに基づいて修正されてよい。２３１において、シリアライザ／デシリアライザモジュールは、複数のパケットのビットをシリアライズする。２３２において、インターチップＨＢアダプタモジュールは、インターチップＨＢを介して、複数のシリアライズされたビットを次のＳｏＣに転送する。複数のパケットがシリアライズされるが、複数のパケットは、前のＳｏＣと次のＳｏＣとの間の複数のパラレルチャネルを介して送信されてよく、各チャネルは、個別のパケットのシリアライズされたビットを含む。複数のパケットのビットは、１つ又は複数のチャネルを介して次のＳｏＣに送信されてよい。
【００５８】
２３４において、インターチップＨＢアダプタモジュールは、インターチップＨＢを介して送信された複数のパケットに基づいて、次のＳｏＣからの応答が受信されたか否かを決定する。応答は、例えば、次のチップ又は次のチップに接続されるデバイスに格納されていたデータ又はブートコードを含んでよい。応答が受信された場合、タスク２３６が実行され、そうでなければ、方法は２３８において終了してよい。２３６において、応答は、イントラチップＨＢを介して情報のソースに転送される。これは、情報が送信された逆順序で実行されてよい。
【００５９】
上述された複数のタスクは、説明のための例であると意図されており、複数のタスクは、用途に応じて、シーケンシャルに、同期的に、同時に、連続的に、重複する期間内に、又は異なる順序で、実行されてよい。また、複数のタスクのいずれかは、複数のイベントの実装及び／又はシーケンスに応じて、実行されなくてよく、又はスキップされてよい。
【００６０】
図５は、クロスチップブートアップ制御を実行するように構成されるＨＢシステム２５０を示す。ＨＢシステム２５０は、第１のＳｏＣ２５２及び第２のＳｏＣ２５４を含む。第１のＳｏＣ２５２は、「ベース」又は「マスタブート」チップと称されてよく、第２のＳｏＣ２５４は、「下位」チップと称されてよい。第１のＳｏＣ２５２は、ブートモジュール２５８を有するＳｏＣ制御モジュール２５６と、ＨＢ２６０と、ＲＯＭ及び／又はキャッシュ２６２と、メモリインタフェースモジュール２６４と、インターチップＨＢアダプタモジュール２６６とを含む。ＨＢ２６０は、複数のイントラチップＨＢアダプタモジュール２６８を含み、これらはそれぞれ、ＲＯＭ及び／又はキャッシュ２６２、メモリインタフェースモジュール２６４、及びインターチップＨＢアダプタモジュール２６６に接続される。複数のイントラチップＨＢアダプタモジュール２６８は、図２の複数のイントラチップＨＢアダプタモジュールと同様に構成されてよい。複数のメモリインタフェースモジュール２６４は、ｅＭＭＣ２７０、ＵＳＢモジュール２７２、ＤＤＲメモリ２７４及びＵＡＲＴモジュール２７６のようなメモリデバイスに接続される。インターチップＨＢアダプタモジュール２６６は、インターチップＨＢ２８０を介して第２のＳｏＣ２５４に接続され、これは、他のメモリデバイス（例えば第２のＤＤＲメモリ２７８）に接続されてよい。ＨＢシステム２５０は、図６に関してさらに説明される。
【００６１】
図６は、ブート方法を示す。複数の以下のタスクは、主として、図５の実装に関して説明されるが、これらのタスクは、本開示の複数の他の実装に適用するように、容易に修正され得る。これらのタスクは、反復的に実行されてよい。
【００６２】
方法は、３００において開始してよい。以下のタスク３０２−３０８は、ベースチップ（例えば第１のＳｏＣ２５２）に関連付けられる。３０２において、ベースチップが起動（例えば、電源オン）される。３０４において、ベースチップは、メモリデバイス２６２、２７０、２７２、２７４、２７６のうち１つ又は複数のような１つ又は複数のメモリ（又はメモリデバイス）におけるベースチップ及び／又は１つ又は複数の下位チップ（例えば第２のＳｏＣ２５４）のブートコードをロードする。これは、ブートコードをベースチップのキャッシュにロードすること、又はブートコードを複数のメモリデバイスのうち２つ又はそれより多くの間で転送することを含んでよい。３０６において、既に３０４において実行されていない場合には、複数の下位チップのブートコードがロードされてよい。
【００６３】
３０８において、ベースチップ及び／又は対応するブートモジュールは、インターチップＨＢ（ＩＨＢ）レディ信号を生成してよく、これは、ベースチップ、インターチップＨＢ、ベースチップのイントラチップＨＢ、及びブートコードが複数の下位チップに対して準備完了であることを示す。ＩＨＢレディ信号は、複数の下位チップ及び／又は下位チップのモジュールの各々に対するブートコードがどこに配置されるかを示してよい。ＩＨＢ信号は、インターチップＨＢを介して、ベースチップから複数の下位チップに送信される。１つより多くの下位チップがＩＨＢレディ信号を受信した場合、ＩＨＢレディ信号は、第１の下位チップから第２の下位チップに転送されてよく、又はベースチップから各下位チップに直接転送されてよい。
【００６４】
タスク３１０−３１４は、第１の下位チップに関連付けられる。３１０において、第１の下位チップは、第１の下位チップのインターチップＨＢアダプタモジュールにおいて、ＩＨＢ信号を受信する。３１２において、第１の下位チップのインターチップＨＢアダプタモジュールは、ＩＨＢ信号を第２の下位ＨＢチップに転送するか否かを決定する。ＩＨＢ信号が転送されない場合、タスク３１４が実行され、そうでなければタスク３１６が実行される。
【００６５】
３１４において、第１の下位チップは、ＩＨＢ信号に基づいて、ブートアップするか否かを決定する。これは、第１の下位チップの制御モジュールが、ＩＨＢ信号に従ってブートコードにアクセスするか否か、及び／又は第１の下位チップ及び／又は第１の下位チップに接続されるメモリデバイスに格納されるコードに基づいてブートアップするか否かを決定することを含んでよい。第１の下位チップは、（ｉ）ＩＨＢ信号に従ってブートコードをロードするアクセス要求信号を生成し、（ｉｉ）アクセス要求信号に基づいて、ベースＳｏＣ及び／又はベースＳｏＣ内部の及び／又はこれに接続されるメモリデバイスからブートコードを受信してよい。アクセス要求信号は、複数のイントラチップＨＢアダプタ、イントラチップＨＢ、インターチップＨＢアダプタ、及びインターチップＨＢを介して送信され、ベースＳｏＣの制御モジュール及び／又はベースＳｏＣ内の又はこれに接続されるメモリに戻されてよい。ブートコードは、次に、複数のイントラチップＨＢアダプタ、イントラチップＨＢ、インターチップＨＢアダプタ、及びインターチップＨＢを介して、第１の下位ＳｏＣの制御モジュールに送信されてよい。
【００６６】
３１６において、第２の下位ＳｏＣは、ＩＨＢ信号に従ってブートアップしてよい。タスク３１４、３１６の後、方法は、３１８において終了してよい。
【００６７】
本開示において説明される無線通信は、全て又は部分的に、ＩＥＥＥ規格８０２．１１−２０１２、ＩＥＥＥ規格８０２．１６−２００９、ＩＥＥＥ規格８０２．２０−２００８、及び／又はＢｌｕｅｔｏｏｔｈ（登録商標）コア仕様書ｖ４．０に準拠して実行されてよい。様々な実装において、Ｂｌｕｅｔｏｏｔｈ（登録商標）コア仕様書ｖ４．０は、Ｂｌｕｅｔｏｏｔｈ（登録商標）コア仕様書補遺２、３、又は４のうち１つ又は複数によって修正されることがある。様々な実装において、ＩＥＥＥ８０２．１１―２０１２は、ドラフトＩＥＥＥ規格８０２．１１ａｃ、ドラフトＩＥＥＥ規格８０２．１１ａｄ、及び／又はドラフトＩＥＥＥ規格８０２．１１ａｈにより補足されることがある。
【００６８】
前述の説明は、本質的に例示に過ぎず、本開示、その適用、又は用途を限定することを全く意図するものではない。本開示の複数の広範な教示は、様々な形態で実装されてよい。従って、図面、明細書、及び以下の特許請求の範囲を検討すれば他の複数の変形が明らかになるゆえ、本開示は複数の具体例を含むが、本開示の真の範囲はそのように限定されるべきではない。本明細書において用いられる際、Ａ、Ｂ、及びＣのうち少なくとも１つ、という表現は、非排他的論理ＯＲを使用して、論理（Ａ又はＢ又はＣ）を意味するものと解釈されるべきであり、「Ａのうち少なくとも１つ、Ｂのうち少なくとも１つ、及び、Ｃのうち少なくとも１つ」を意味するものと解釈されるべきではない。方法内の１つ又は複数の段階は、本開示の複数の原理を変更することなく異なる順序で（又は同時に）実行され得ることが理解されるべきである。
【００６９】
本願において、以下の定義を含む用語「モジュール」又は用語「コントローラ」は、用語「回路」に置換されてよい。用語「モジュール」は、システムオンチップにおけるような、特定用途向け集積回路（ＡＳＩＣ）、デジタル、アナログ、もしくは混成アナログ／デジタルディスクリート回路、デジタル、アナログ、もしくは混成アナログ／デジタル集積回路、組み合わせロジック回路、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、コードを実行するプロセッサ回路（共有、専用、もしくはグループ）、プロセッサ回路によって実行されるコードを格納するメモリ回路（共有、専用、もしくはグループ）、説明された機能を提供する他の適したハードウェアコンポーネント、又は上記のうちいくつかのもしくは全部の組み合わせを指してよく、これらの一部であってよく、又はこれらを含んでよい。
【００７０】
モジュールは、１つ又は複数のインタフェース回路を含んでよい。いくつかの例において、複数のインタフェース回路は、ローカルエリアネットワーク（ＬＡＮ）、インターネット、ワイドエリアネットワーク（ＷＡＮ）、もしくはこれらの組み合わせに接続される、有線又は無線のインタフェースを含んでよい。本開示のあらゆる所与のモジュールの機能は、インタフェース回路を介して接続される複数のモジュールの中で分散されてよい。例えば、複数のモジュールは、ロードバランシングを可能にしてよい。さらなる例において、サーバ（リモート、又はクラウドとしても知られる）モジュールは、クライアントモジュールに代わって、いくつかの機能を実現してよい。
【００７１】
コードという用語は、上記において使用されるように、ソフトウェア、ファームウェア、及び／又はマイクロコードを含んでよく、複数のプログラム、ルーチン、機能、クラス、データ構造、及び／又はオブジェクトを指してよい。共有プロセッサ回路という用語は、複数のモジュールからのいくつかの又は全てのコードを実行する単一のプロセッサ回路を包含する。グループプロセッサ回路という用語は、追加の複数のプロセッサ回路との組み合わせで、１つ又は複数のモジュールからのいくつかの又は全てのコードを実行するプロセッサ回路を包含する。複数のプロセッサ回路という記載は、複数の別個のダイ上の複数のプロセッサ回路、単一のダイ上の複数のプロセッサ回路、単一のプロセッサ回路の複数のコア、単一のプロセッサ回路の複数のスレッド、又は上記のものの組み合わせを包含する。共有メモリ回路という用語は、複数のモジュールからのいくつかの又は全てのコードを格納する単一のメモリ回路を包含する。グループメモリ回路という用語は、追加の複数のメモリとの組み合わせで、１つ又は複数のモジュールからのいくつかの又は全てのコードを格納するメモリ回路を包含する。
【００７２】
メモリ回路という用語は、コンピュータ可読媒体という用語のサブセットである。本明細書で用いられるコンピュータ可読媒体という用語は、（搬送波のような）媒体を通して伝播される一時的な電気又は電磁信号を包含しない。従って、コンピュータ可読媒体という用語は、有形で非一時的なものとみなされてよい。非一時的な有形のコンピュータ可読媒体の非限定的な例は、不揮発性メモリ回路（フラッシュメモリ回路又はマスクリードオンリメモリ回路のような）、揮発性メモリ回路（スタティックランダムアクセスメモリ回路及びダイナミックランダムアクセスメモリ回路のような）、ならびに磁気ストレージ（磁気テープ又はハードディスクドライブのような）及び光ストレージのような二次ストレージを含む。
【００７３】
本願において説明される複数の装置及び方法は、複数のコンピュータプログラムにおいて具現化される１つ又は複数の特定の機能を実行するように汎用コンピュータを構成することによって形成される特定用途向けコンピュータによって、部分的に又は完全に実装されてよい。複数のコンピュータプログラムは、少なくとも１つの非一時的な、有形のコンピュータ可読媒体上に格納される複数のプロセッサ実行可能命令を含む。複数のコンピュータプログラムは、格納されたデータをさらに含み、又は格納されたデータに依存してよい。複数のコンピュータプログラムは、特定用途向けコンピュータのハードウェアとインタラクトする基本入出力システム（ＢＩＯＳ）、特定用途向けコンピュータの複数の特定のデバイスとインタラクトする複数のデバイスドライバ、１つ又は複数のオペレーティングシステム、複数のユーザアプリケーション、複数のバックグラウンドサービス及びアプリケーション等を含んでよい。
【００７４】
複数のコンピュータプログラムは、（ｉ）アセンブリコード、（ｉｉ）コンパイラによってソースコードから生成されたオブジェクトコード、（ｉｉｉ）インタプリタによる実行のためのソースコード、（ｉｖ）ジャストインタイムコンパイラによって、コンパイル及び実行するためのソースコード、（ｖ）ＨＴＭＬ（ハイパーテキストマークアップ言語）又はＸＭＬ（拡張可能マークアップ言語）のような構文解析のための記述テキスト等を含んでよい。単なる例示として、ソースコードは、Ｃ、Ｃ＋＋、Ｃ＃、Ｏｂｊｅｃｔｉｖｅ−Ｃ、Ｈａｓｋｅｌｌ、Ｇｏ、ＳＱＬ、Ｌｉｓｐ、Ｊａｖａ（登録商標）、ＡＳＰ、Ｐｅｒｌ、Ｊａｖａｓｃｒｉｐｔ（登録商標）、ＨＴＭＬ５、Ａｄａ、ＡＳＰ（アクティブサーバページ）、Ｐｅｒｌ、Ｓｃａｌａ、Ｅｒｌａｎｇ、Ｒｕｂｙ、Ｆｌａｓｈ（登録商標）、Ｖｉｓｕａｌ  Ｂａｓｉｃ（登録商標）、Ｌｕａ、又はＰｙｔｈｏｎ（登録商標）で記述されてよい。
【００７５】
特許請求の範囲に記載された複数の要素はいずれも、要素が「のための手段」という表現を用いて、又は方法クレームの場合には「のためのオペレーション」もしくは「のためのステップ」という表現を用いて明示的に記載されない限り、米国特許法第１１２条（ｆ）が意味する範囲内にあるミーンズプラスファンクション要素であることを意図するものではない。
【図１】
0006541272.tif 000002
【図２】
0006541272.tif 000003
【図３】
0006541272.tif 000004
【図４】
0006541272.tif 000005
【図５】
0006541272.tif 000006
【図６】
0006541272.tif 000007