特許第6541272号(P6541272)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ マーベル ワールド トレード リミテッドの特許一覧

特許6541272イントラチップ及びインターチップホッピングバスを介してシステムオンチップ内で及びこれらの間で情報を転送する方法及び装置
<>
  • 特許6541272-イントラチップ及びインターチップホッピングバスを介してシステムオンチップ内で及びこれらの間で情報を転送する方法及び装置 図000002
  • 特許6541272-イントラチップ及びインターチップホッピングバスを介してシステムオンチップ内で及びこれらの間で情報を転送する方法及び装置 図000003
  • 特許6541272-イントラチップ及びインターチップホッピングバスを介してシステムオンチップ内で及びこれらの間で情報を転送する方法及び装置 図000004
  • 特許6541272-イントラチップ及びインターチップホッピングバスを介してシステムオンチップ内で及びこれらの間で情報を転送する方法及び装置 図000005
  • 特許6541272-イントラチップ及びインターチップホッピングバスを介してシステムオンチップ内で及びこれらの間で情報を転送する方法及び装置 図000006
  • 特許6541272-イントラチップ及びインターチップホッピングバスを介してシステムオンチップ内で及びこれらの間で情報を転送する方法及び装置 図000007
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6541272
(24)【登録日】2019年6月21日
(45)【発行日】2019年7月10日
(54)【発明の名称】イントラチップ及びインターチップホッピングバスを介してシステムオンチップ内で及びこれらの間で情報を転送する方法及び装置
(51)【国際特許分類】
   G06F 13/36 20060101AFI20190628BHJP
   G06F 15/17 20060101ALI20190628BHJP
【FI】
   G06F13/36 320A
   G06F15/17 620Z
【請求項の数】20
【全頁数】24
(21)【出願番号】特願2016-531042(P2016-531042)
(86)(22)【出願日】2014年12月9日
(65)【公表番号】特表2017-504862(P2017-504862A)
(43)【公表日】2017年2月9日
(86)【国際出願番号】US2014069322
(87)【国際公開番号】WO2015089058
(87)【国際公開日】20150618
【審査請求日】2017年11月7日
(31)【優先権主張番号】61/915,413
(32)【優先日】2013年12月12日
(33)【優先権主張国】US
(31)【優先権主張番号】61/954,486
(32)【優先日】2014年3月17日
(33)【優先権主張国】US
(31)【優先権主張番号】14/564,499
(32)【優先日】2014年12月9日
(33)【優先権主張国】US
(73)【特許権者】
【識別番号】502188642
【氏名又は名称】マーベル ワールド トレード リミテッド
(74)【代理人】
【識別番号】110000877
【氏名又は名称】龍華国際特許業務法人
(72)【発明者】
【氏名】ジェン、ホンミン
【審査官】 田中 啓介
(56)【参考文献】
【文献】 特開2009−110512(JP,A)
【文献】 特表2010−500641(JP,A)
【文献】 特開2010−152891(JP,A)
【文献】 LEE, Kangmin et al.,Low-Power Network-on-Chip for High-Performance SoC Design,IEEE TRANSACTIONS ON VERY LARGE SCALE INTEGRATION (VLSI) SYSTEMS,米国,IEEE,2006年 2月,VOL. 14, NO. 2,pp. 148-160
(58)【調査した分野】(Int.Cl.,DB名)
G06F13/10−13/14
G06F13/20−13/378
G06F15/16−15/177
(57)【特許請求の範囲】
【請求項1】
第1のシステムオンチップであって、
第1の非ホッピングバスインタフェース及び第2の非ホッピングバスインタフェースを含む複数の非ホッピングバスインタフェースであって、前記第1の非ホッピングバスインタフェースは、第1のプロトコルに基づいて情報を受信する、複数の非ホッピングバスインタフェースと、
複数のイントラチップアダプタを含むホッピングバスと、
i)前記第1のシステムオンチップ及び第2のシステムオンチップのブートコードをロードアップし、ii)レディ信号を第1のイントラチップアダプタに送信する制御モジュールであって、前記レディ信号は、前記第2のシステムオンチップの前記ブートコードが準備完了であることを示し、前記複数のイントラチップアダプタは、前記第1のイントラチップアダプタを含む、制御モジュールと、
i)前記レディ信号を、インターチップバスを介して前記第1のイントラチップアダプタから前記第2のシステムオンチップに転送し、ii)前記レディ信号に基づいて、前記第2のシステムオンチップからアクセス信号を受信し、iii)前記アクセス信号に基づいて、前記第2のシステムオンチップの前記ブートコードを前記第2のシステムオンチップに転送するインターチップアダプタであって、前記インターチップバスは、前記第1のシステムオンチップと前記第2のシステムオンチップとの間に延在する、インターチップアダプタと、
を備え、
前記複数のイントラチップアダプタは、直列に接続され、且つ、それぞれ前記複数の非ホッピングバスインタフェースに個別に接続され、
前記複数のイントラチップアダプタは、i)第2のプロトコルに従って、1つ又は複数のパケットを生成するように前記情報をパケット化することを含め、前記ホッピングバスを介した送信のための第1のフォーマットに前記情報を変換し、ii)前記第1のフォーマットの前記情報を、前記ホッピングバスを介して、前記複数のイントラチップアダプタの間で転送し、
前記第2のプロトコルは、前記第1のプロトコルと異なり、
前記第2の非ホッピングバスインタフェースは、前記ホッピングバスを介した前記情報の前記送信に基づいて、前記ホッピングバスから前記情報を受信する、
第1のシステムオンチップ。
【請求項2】
第1のシステムオンチップであって、
第1の非ホッピングバスインタフェース及び第2の非ホッピングバスインタフェースを含む複数の非ホッピングバスインタフェースであって、前記第1の非ホッピングバスインタフェースは、第1のプロトコルに基づいて情報を受信する、複数の非ホッピングバスインタフェースと、
複数のイントラチップアダプタを含むホッピングバスと、
インターチップバスを介して第1のイントラチップアダプタに接続されるインターチップアダプタであって、前記インターチップアダプタは、i)第2のシステムオンチップからレディ信号を受信し、ii)前記レディ信号を前記第1のイントラチップアダプタに転送し、前記複数のイントラチップアダプタは、前記第1のイントラチップアダプタを含む、インターチップアダプタと、
i)前記レディ信号を前記第1のイントラチップアダプタから受信し、ii)前記レディ信号に基づいて、i)前記インターチップバスを介してアクセスされ、前記第2のシステムオンチップ内のもしくは前記第2のシステムオンチップに接続されるメモリに格納されたブートコード、又はii)第1のシステムオンチップ内のもしくは前記第1のシステムオンチップに接続されるメモリに格納されるブートコードのいずれに基づいて前記第1のシステムオンチップをブートアップするかを決定する制御モジュールと、
を備え、
前記複数のイントラチップアダプタは、直列に接続され、且つ、それぞれ前記複数の非ホッピングバスインタフェースに個別に接続され、
前記複数のイントラチップアダプタは、i)第2のプロトコルに従って、1つ又は複数のパケットを生成するように前記情報をパケット化することを含め、前記ホッピングバスを介した送信のための第1のフォーマットに前記情報を変換し、ii)前記第1のフォーマットの前記情報を、前記ホッピングバスを介して、前記複数のイントラチップアダプタの間で転送し、
前記第2のプロトコルは、前記第1のプロトコルと異なり、
前記第2の非ホッピングバスインタフェースは、前記ホッピングバスを介した前記情報の前記送信に基づいて、前記ホッピングバスから前記情報を受信する、
第1のシステムオンチップ。
【請求項3】
前記複数のイントラチップアダプタは、第1のイントラチップアダプタ及び第2のイントラチップアダプタを含み、
前記第1のイントラチップアダプタは、第3の非ホッピングバスインタフェース及びホッピングバスインタフェースを含み、
前記第3の非ホッピングバスインタフェースは、前記第1の非ホッピングバスインタフェースに接続され、前記第1のプロトコルに従って前記第1の非ホッピングバスインタフェースから前記情報を受信し、
前記ッピングバスインタフェースは、前記第1のフォーマットの前記1つ又は複数のパケットを前記第2のイントラチップアダプタに転送する、
請求項1または2に記載の第1のシステムオンチップ。
【請求項4】
前記第2のイントラチップアダプタは、i)前記第1のフォーマットの前記1つ又は複数のパケットを第3のプロトコルに従って第2のフォーマットに変換し、ii)前記第2のフォーマットの前記情報を前記第2の非ホッピングバスインタフェースに転送し、
前記第3のプロトコルは、前記第2のプロトコルと異なる、
請求項に記載の第1のシステムオンチップ。
【請求項5】
前記第3のプロトコルは、前記第1のプロトコルと異なる、請求項に記載の第1のシステムオンチップ。
【請求項6】
前記第1のイントラチップアダプタは、前記第1のイントラチップアダプタと前記第2のイントラチップアダプタとの間において、複数のチャネル又は複数の導電素子を介して、前記1つ又は複数のパケットの複数のビットを展開し、
前記第2のイントラチップアダプタは、i)前記複数のチャネル又は前記複数の導電素子を介して前記1つ又は複数のパケットの前記複数のビットを受信し、ii)前記ホッピングバスのクロック信号に基づいて、前記1つ又は複数のパケットの前記複数のビットをサンプリングし、前記第2のイントラチップアダプタにおいて前記1つ又は複数のパケットの前記複数のビットの受信をスキュー制御する、
請求項に記載の第1のシステムオンチップ。
【請求項7】
前記第1のプロトコルは、アドバンスドマイクロコントローラバスアーキテクチャである、請求項1からのいずれか1項に記載の第1のシステムオンチップ。
【請求項8】
前記複数の非ホッピングバスインタフェースの各々は、前記第1のシステムオンチップ内のモジュール又は周辺デバイス接続される、請求項1からのいずれか1項に記載の第1のシステムオンチップ。
【請求項9】
前記第1の非ホッピングバスインタフェースは、第1のマスタポート及び第1のスレーブポートを含み、
前記第3の非ホッピングバスインタフェースは、第2のマスタポート及び第2のスレーブポートを含み、
前記第1のマスタポートは、前記第2のマスタポートに接続され、
前記第1のスレーブポートは、前記第2のスレーブポートに接続され、
前記情報は、i)前記第1のマスタポートと前記第2のマスタポートとの間、又はii)前記第1のスレーブポートと前記第2のスレーブポートとの間で転送される、
請求項に記載の第1のシステムオンチップ。
【請求項10】
記複数のイントラチップアダプタは、前記第1のイントラチップアダプタを含み、
前記第1のイントラチップアダプタは、ヘッダを有するパケットを生成するように前記情報をパケット化し、
前記ヘッダは、ローカルアドレスを含み、
前記インターチップアダプタは、i)前記第1のシステムオンチップの固有識別子を決定し、ii)前記固有識別子に基づいて、前記ローカルアドレスをグローバルアドレスに変換し、iii)前記グローバルアドレスを有する前記1つ又は複数のパケットを第2のシステムオンチップに転送する、
請求項1からのいずれか1項に記載の第1のシステムオンチップ。
【請求項11】
前記インターチップアダプタは、前記1つ又は複数のパケットを前記第2のシステムオンチップに転送する前に、前記1つ又は複数のパケットをシリアライズする、請求項10に記載の第1のシステムオンチップ。
【請求項12】
前記制御モジュールは、i)前記レディ信号に基づいてアクセス信号を生成し、ii)前記アクセス信号を、前記インターチップバスを介して前記第2のシステムオンチップに送信し、iii)前記第2のシステムオンチップ内の又は前記第2のシステムオンチップに接続されるメモリに格納された前記ブートコードを受信する、請求項に記載の第1のシステムオンチップ。
【請求項13】
請求項1または2に記載の第1のシステムオンチップあって、前記第1のシステムオンチップは、第1のイントラチップアダプタに接続される第1のインターチップアダプタを含み、前記複数のイントラチップアダプタは、前記第1のイントラチップアダプタを含む、請求項1または2に記載の第1のシステムオンチップと、
第2のホッピングバス及び第2のインターチップアダプタを含む第2のシステムオンチップと、
前記第1のインターチップアダプタを前記第2のインターチップアダプタに接続するインターチップバスと、
を含む、ホッピングバスシステム。
【請求項14】
前記第1のシステムオンチップは、制御モジュールを含み、
前記制御モジュールは、i)要求信号を生成し、ii)前記第1のプロトコルに基づいて、前記要求信号を前記第1のイントラチップアダプタに送信し、
前記第1のイントラチップアダプタは、i)前記第2のプロトコルに従ってパケットを生成すべく、前記要求信号をパケット化し、ii)前記パケットを前記第1のインターチップアダプタに転送し、
前記第1のインターチップアダプタは、i)前記パケットに固有識別子を追加し、ii)前記パケットをシリアライズし、iii)前記シリアライズされたパケットを前記インターチップバスに転送し、
前記第2のインターチップアダプタは、i)前記パケットをデシリアライズし、ii)前記パケットを第3のイントラチップアダプタに転送し、
前記第3のイントラチップアダプタは、i)前記パケットに基づいて、メモリに格納されたデータにアクセスし、ii)前記第2のインターチップアダプタ、前記インターチップバス、前記第1のインターチップアダプタ、及び前記第1のイントラチップアダプタを介して、前記データを前記制御モジュールに転送する、
請求項13に記載のホッピングバスシステム。
【請求項15】
第1のシステムオンチップにおいて情報を転送する方法であって、前記第1のシステムオンチップは、複数の非ホッピングバスインタフェース及びホッピングバスを含み、前記複数の非ホッピングバスインタフェースは、第1の非ホッピングバスインタフェース及び第2の非ホッピングバスインタフェースを含み、前記ホッピングバスは、複数のイントラチップアダプタを含み、前記複数のイントラチップアダプタは、直列に接続され、且つ、それぞれ前記複数の非ホッピングバスインタフェースに個別に接続され、前記方法は、
第1のプロトコルに基づいて、第1のシステムオンチップの前記第1の非ホッピングバスインタフェースにおいて情報を受信する段階と、
第2のプロトコルに従って、前記複数のイントラチップアダプタによって、1つ又は複数のパケットを生成するように前記情報をパケット化することを含め、前記ホッピングバスを介した送信のための第1のフォーマットに前記情報を変換する段階であって、前記第2のプロトコルは、前記第1のプロトコルと異なる、段階と、
前記複数のイントラチップアダプタによって、前記第1のフォーマットの前記情報を、前記ホッピングバスを介して前記複数のイントラチップアダプタの間で転送する段階と、
前記ホッピングバスを介した前記情報の前記送信に基づいて、前記第2の非ホッピングバスインタフェースにおいて前記ホッピングバスから前記情報を受信する段階と、
制御モジュールによって、i)前記第1のシステムオンチップ及び第2のシステムオンチップのブートコードをロードアップし、ii)レディ信号を第1のイントラチップアダプタに送信する段階であって、前記レディ信号は、前記第2のシステムオンチップの前記ブートコードが準備完了であることを示し、前記複数のイントラチップアダプタは、前記第1のイントラチップアダプタを含む、送信する段階と、
インターチップアダプタによって、i)前記レディ信号を、インターチップバスを介して前記第1のイントラチップアダプタから前記第2のシステムオンチップに転送し、ii)前記レディ信号に基づいて、前記第2のシステムオンチップからアクセス信号を受信し、iii)前記アクセス信号に基づいて、前記第2のシステムオンチップの前記ブートコードを前記第2のシステムオンチップに転送する段階であって、前記インターチップバスは、前記第1のシステムオンチップと前記第2のシステムオンチップとの間に延在する、転送する段階と、
を備える、
方法。
【請求項16】
第1のシステムオンチップにおいて情報を転送する方法であって、前記第1のシステムオンチップは、複数の非ホッピングバスインタフェース及びホッピングバスを含み、前記複数の非ホッピングバスインタフェースは、第1の非ホッピングバスインタフェース及び第2の非ホッピングバスインタフェースを含み、前記ホッピングバスは、複数のイントラチップアダプタを含み、前記複数のイントラチップアダプタは、直列に接続され、且つ、それぞれ前記複数の非ホッピングバスインタフェースに個別に接続され、前記方法は、
第1のプロトコルに基づいて、第1のシステムオンチップの前記第1の非ホッピングバスインタフェースにおいて情報を受信する段階と、
第2のプロトコルに従って、前記複数のイントラチップアダプタによって、1つ又は複数のパケットを生成するように前記情報をパケット化することを含め、前記ホッピングバスを介した送信のための第1のフォーマットに前記情報を変換する段階であって、前記第2のプロトコルは、前記第1のプロトコルと異なる、段階と、
前記複数のイントラチップアダプタによって、前記第1のフォーマットの前記情報を、前記ホッピングバスを介して前記複数のイントラチップアダプタの間で転送する段階と、
前記ホッピングバスを介した前記情報の前記送信に基づいて、前記第2の非ホッピングバスインタフェースにおいて前記ホッピングバスから前記情報を受信する段階と、
インターチップバスを介して第1のイントラチップアダプタに接続されるインターチップアダプタによって、i)第2のシステムオンチップからレディ信号を受信し、ii)前記レディ信号を前記第1のイントラチップアダプタに転送する段階であって、前記複数のイントラチップアダプタは、前記第1のイントラチップアダプタを含む、転送する段階と、
制御モジュールによって、i)前記レディ信号を前記第1のイントラチップアダプタから受信し、ii)前記レディ信号に基づいて、i)前記インターチップバスを介してアクセスされ、前記第2のシステムオンチップ内のもしくは前記第2のシステムオンチップに接続されるメモリに格納されたブートコード、又はii)前記第1のシステムオンチップ内のもしくは前記第1のシステムオンチップに接続されるメモリに格納されるブートコードのいずれに基づいて前記第1のシステムオンチップをブートアップするかを決定する段階と、を備える、方法。
【請求項17】
前記第1のプロトコルに従って、第1のイントラチップアダプタの第3の非ホッピングバスインタフェースにおいて、前記第1の非ホッピングバスインタフェースから前記情報を受信する段階であって、前記複数のイントラチップアダプタは、前記第1のイントラチップアダプタ及び第2のイントラチップアダプタを含む、段階と、
前記第2のプロトコルに従って、前記ホッピングバスを介した送信のための前記第1のフォーマットに、前記第1のイントラチップアダプタによって前記情報を変換する段階であって、前記情報の前記変換は、1つ又は複数のパケットを生成するように前記情報をパケット化することを含む、段階と、
前記第1のフォーマットの前記1つ又は複数のパケットを、ッピングバスインタフェースによって前記第2のイントラチップアダプタに転送する段階と、
をさらに備える、請求項15または16に記載の方法。
【請求項18】
前記第1のフォーマットの前記1つ又は複数のパケットを、前記第2のイントラチップアダプタによって、第3のプロトコルに従って第2のフォーマットに変換する段階であって、前記第3のプロトコルは、前記第2のプロトコルと異なる、段階と、
前記第2のイントラチップアダプタによって、前記第2のフォーマットの前記情報を、前記第2の非ホッピングバスインタフェースに転送する段階と、
をさらに備える、請求項17に記載の方法。
【請求項19】
前記第3のプロトコルは、前記第1のプロトコルと異なる、請求項18に記載の方法。
【請求項20】
前記第1のイントラチップアダプタによって、前記第1のイントラチップアダプタと前記第2のイントラチップアダプタとの間において、複数のチャネル又は複数の導電素子を介して、前記1つ又は複数のパケットの複数のビットを展開する段階と、
前記1つ又は複数のパケットの前記複数のビットを、前記複数のチャネル又は前記複数の導電素子を介して、前記第2のイントラチップアダプタにおいて受信する段階と、
前記ホッピングバスのクロック信号に基づいて、前記1つ又は複数のパケットの前記複数のビットをサンプリングし、前記第2のイントラチップアダプタにおいて前記1つ又は複数のパケットの前記複数のビットの受信をスキュー制御する段階と、
をさらに備える、請求項17から19のいずれか1項に記載の方法。
【発明の詳細な説明】
【技術分野】
【0001】
[関連出願への相互参照]
本願は、2014年12月9日出願の米国特許出願第14/564,499号に対する優先権を主張し、さらに、2013年12月12日出願の米国仮出願第61/915,413号及び2014年3月17日出願の米国仮出願第61/954,486号に対する利益を主張する。上述された出願の開示全体は、参照によって本明細書に組み込まれる。
【0002】
本開示は、情報のイントラチップ及びインターチップ転送に用いられるシステムオンチップ(SoC)のアーキテクチャに関する。
【背景技術】
【0003】
本明細書において提供される背景技術の説明は、概して、本開示の文脈を与えることを目的とする。ここに名を挙げられた発明者らの研究は、この背景技術の項において当該研究が説明される範囲において、出願時において先行技術として別途みなし得ない説明の複数の態様と共に、明示的にも暗示的にも本開示に対する先行技術としては認められない。
【0004】
高度なシリコン製造処理により、SoCの所定面積に含まれるゲートの数は、増加の一途をたどっている。特定のバス(又はファブリック)アーキテクチャが導入され、SoC内において、プロセッサモジュール及びインタフェース制御モジュールの間における情報の転送(例えば、データ、コマンド、パラメータ、アドレス等)を可能としている。例えば、アドバンスドマイクロコントローラバスアーキテクチャ(AMBA)は、SoCにおけるモジュールの接続及び管理のためのオンチップ相互接続の仕様である。AMBAの1つのインタフェース世代は、アドバンスドエクステンシブルインタフェース(AXI)と称される。
【0005】
AXIベースのアーキテクチャを有するSoCは、複数のプロセッサ(又はコア)モジュール、マスタAXI相互接続バス(又はマスタファブリック)、スレーブAXI相互接続バス(又はスレーブファブリック)、及び複数のインタフェースコントローラを含んでよい。複数のプロセッサモジュールは、複数の相互接続バスを介して複数のインタフェースコントローラに接続された複数の周辺機器を制御し、及び/又はこれらにアクセスする。AXI相互接続バスは、マルチレベルAXIファブリックと称されてよく、複数のプロセッサモジュール及びインタフェースコントローラ間の相互接続のメッシュを提供してよい。複数のインタフェースコントローラは、複数の周辺デバイス及び/又はネットワークにそれぞれ接続されてよい。複数の周辺デバイスは、ランダムアクセスメモリ(RAM)又はリードオンリメモリ(ROM)のような複数のメモリデバイスを含んでよい。複数の周辺デバイスは、ディスプレイ、フラッシュドライブ、ハードディスクドライブ、ハイブリッドドライブ、カメラ、組み込みマルチメディアカード(eMMC)、Ethernet(登録商標)デバイス、シリアルスモールコンピュータシステムインタフェース(SCSI)プロトコル(SSP)デバイス、万能非同期送受信機(UART)インタフェースを介して通信を行うデバイス等を含んでよい。複数のネットワークは、無線又は有線ネットワークを含んでよい。無線ネットワークの例は、WiFiネットワークのような無線ローカルエリアネットワーク(WLAN)である。
【0006】
プロセッサモジュールは、バスマスタと称されてよい。複数のプロセッサモジュールは、SoCに接続された複数の周辺機器のオペレーションを制御し、及びこれらを開始させる。これは、マスタAXI相互接続バスを介して複数のインタフェースコントローラに複数のコマンドを送信する複数のプロセッサモジュール(又はマスタ)を含んでよい。複数のインタフェースコントローラの各々は、マスタポート(又はインタフェース)及びスレーブポート(又はインタフェース)を含む。複数のマスタポートは、複数のマスタAXI相互接続バスに接続される。複数のスレーブポートは、複数のスレーブAXI相互接続バスに接続される。複数のコマンドは、複数のマスタポートに送信されてよく、次に複数の周辺デバイスに転送されてよい。データは次に、複数のスレーブポートにおいて複数の周辺デバイスから受信されてよい。スレーブAXI相互接続バスは、複数のスレーブポートからのデータを複数のプロセッサモジュールに転送する。
【0007】
AXIアーキテクチャを有するSoCにおいて、複数のプロセッサモジュール及びインタフェースコントローラ間の各接続は、複数のチャネルを含む。複数のチャネルは、読み出しアドレスチャネル、読み出しデータチャネル、書き込みアドレスチャネル、書き込みデータチャネル、バッファ書き込み応答チャネル、及びクロックチャネルを含む。これらの接続は、複数のプロセッサモジュール及びインタフェースコントローラのAXIバスインタフェースを介して提供される。複数のAXIバスインタフェースは、(i)複数のプロセッサモジュールとAXI相互接続バスとの間に、及び(ii)複数のAXI接続バスとインタフェース制御モジュールとの間に存在してよい。複数のAXIバスインタフェース及びAXI相互接続バスは、多数のワイヤを含む。例えば、AXIバスインタフェースの複数の書き込みチャネルは、128ビットパラレル転送用の224ワイヤと同数のワイヤを含んでよい。AXIバスインタフェースの複数の読み出しチャネルは、128ビットパラレル転送用の208ワイヤと同数のワイヤを含んでよい。スレーブAXI相互接続バスは、32ビットパラレル転送用の200ワイヤを含んでよい。10ポートAXI相互接続バスは、ポート毎に128ビットパラレル転送用の5000ワイヤを含んでよい。他の例として、10ポートAXI相互接続バスは、ポート毎に32ビットパラレル転送用の3000ワイヤを含んでよい。追加の複数のワイヤが、割り込み転送のためにさらに必要とされる。複数のAXI相互接続バスは、制限されたデータ転送速度(例えば、312メガヘルツ(MHz)又はそれより低速)による相互接続の大規模メッシュのネットワークである。複数のメッシュネットワークにおける隣接ノード間のポイントツーポイント転送速度も、制限され(例えば416MHz)又はより低速である。
【0008】
AXIアーキテクチャSoCにおける複数のモジュールは、一般に共有されるクロックに基づいて動作する。クロック信号は、複数のAXI相互接続バスにおいて、複数の分岐(又は相互接続)の大規模なクロックツリーを介して提供される。結果として、複数のモジュールの間における通信は同期している。複数のモジュールのうち2つが異なるプロトコル(例えば、AXI及びAMBA高性能バス(AHB)のような異なるAMBAプロトコル)及び/又は異なるクロック(もしくは異なる周波数を有するクロック信号)に基づいて動作する場合、ブリッジは、典型的には、複数のモジュールの間に組み込まれる。ブリッジは、例えば、異なるバス幅(例えば、パラレル転送されたビット数)及びクロック周波数を有する2つの異なるドメインの間において、通信を可能にする。複数のモジュールの間における接続のために適切な帯域幅及びレイテンシを確保すべく、複数のインテグレータがSoCに組み込まれてよいが、各モジュールに対する帯域幅の割り当て及びアクセスレイテンシの制御が困難である。この理由は、複数のモジュールの間により多数のワイヤ及び相互接続が存在することと、共有クロック信号が大規模メッシュネットワークにわたって分布することによる。
【0009】
適切にクロックツリーを軽減するようにクロック信号の周波数を設定することは困難なことがある。適切なクロックツリーの軽減は、対応するSoCのオペレーション及び/又は寿命に悪影響を与えることなく適用可能な最も高い周波数にクロック信号の周波数を設定することを指す。クロック信号の周波数を増加させると、SoCの処理、電圧、及び温度(PVT)変動を増加させることがある。結果として、クロック周波数を増加させる可能性は、PVT変動が増加する可能性により限定され得る。クロックツリーがより大規模になると、クロック信号の周波数はより低速になる。
【発明の概要】
【0010】
第1のシステムオンチップが提供され、これは、複数の非ホッピングバスインタフェース及びホッピングバスを含む。複数の非ホッピングバスインタフェースは、第1の非ホッピングバスインタフェース及び第2の非ホッピングバスインタフェースを含む。第1の非ホッピングバスインタフェースは、第1のプロトコルに基づいて、情報を受信するように構成される。ホッピングバスは、複数のイントラチップアダプタを含む。複数のイントラチップアダプタは、直列にそれぞれ複数の非ホッピングバスインタフェースに接続される。複数のイントラチップアダプタは、(i)第2のプロトコルに従って、ホッピングバスを介した送信のための第1のフォーマットに情報を変換し、(ii)ホッピングバスを介して、複数のイントラチップアダプタの間で第1のフォーマットの情報を転送するように構成される。第2のプロトコルは、第1のプロトコルと異なる。第2の非ホッピングバスインタフェースは、ホッピングバスを介した情報の送信に基づいて、ホッピングバスから情報を受信するように構成される。
【0011】
他の複数の特徴において、第1のシステムオンチップにおいて情報を転送する方法では、第1のシステムオンチップは、複数の非ホッピングバスインタフェース及びホッピングバスを含む。複数の非ホッピングバスインタフェースは、第1の非ホッピングバスインタフェース及び第2の非ホッピングバスインタフェースを含む。ホッピングバスは、複数のイントラチップアダプタを含む。複数のイントラチップアダプタは、直列にそれぞれ複数の非ホッピングバスインタフェースに接続される。方法は、第1のプロトコルに基づいて、第1のシステムオンチップの第1の非ホッピングバスインタフェースにおいて情報を受信する段階と、第2のプロトコルに従って、複数のイントラチップアダプタを介して、ホッピングバスを介した送信のための第1のフォーマットに情報を変換する段階であって、第2のプロトコルは第1のプロトコルと異なる、段階と、第1のフォーマットの情報を、ホッピングバスを介して複数のイントラチップアダプタの間で転送する段階と、ホッピングバスを介した情報の送信に基づいて、第2の非ホッピングバスインタフェースにおいてホッピングバスから情報を受信する段階と、を含む。
【0012】
本開示の適用可能性のさらなる領域が、詳細な説明、特許請求の範囲及び図面から明らかになろう。詳細な説明及び具体的な例は、例示のみを目的とすることが意図されており、本開示の範囲を限定することが意図されるものではない。
【図面の簡単な説明】
【0013】
図1】本開示の実施形態に係るシステムのホッピングバス(HB)の機能ブロック図である。
【0014】
図2】複数のSoCを組み込む他のHBシステムの機能ブロック図であり、本開示の実施形態に係る複数のイントラチップHBアダプタモジュール及びインターチップHBアダプタモジュールを示す。
【0015】
図3】本開示の実施形態に係るアドレス変換モジュールの機能ブロック図である。
【0016】
図4】本開示の実施形態に係るHBシステムを動作させる方法を示す。
【0017】
図5】本開示の実施形態に係るクロスチップブートアップ制御のためのHBシステムの機能ブロック図である。
【0018】
図6】本開示の実施形態に係るブート方法を示す。
【0019】
図面において、参照番号は、同様の及び/又は同一の要素を特定するために再利用されることがある。
【発明を実施するための形態】
【0020】
以下に開示される複数の例は、複数のSoCのための複数のホッピングバス(HB)アーキテクチャを導入する。複数のSoCは、複数のイントラチップHB、複数のイントラチップHBアダプタモジュール、及び複数のインターチップHBアダプタモジュールを含む。複数のイントラチップHBは、複数のイントラチップHBアダプタモジュールの間における接続を含み、これらを提供する。インターチップHBは、複数のSoCの間に延在し、複数のインターチップHBアダプタモジュールを含み、複数のインターチップHBアダプタモジュールの間における接続を提供する。HBは、複数のイントラチップHBアダプタモジュール及び/又はインターチップHBアダプタモジュール、ならびに本明細書に開示されるような複数の対応する導電素子及びバッファを含むバスを指す。HBは、情報がデスティネーションに到達するまで、複数のHBアダプタモジュールから複数のHBアダプタモジュールにホップするためのパスを提供する。複数のHBアダプタモジュールは、プロトコル変換、パケット化、サンプリング、スキュー制御、固有の特定、シリアライズ、及び/又はデシリアライズを実行してよい。HBは、さらに後述されるように、HBプロトコルに従って、情報に対する動作及び転送を実行する。
【0021】
複数のHBアーキテクチャは、システムパーティショニングの簡便性を向上させ、これにより、システム設計者は、SoCのレイアウトにフォーカスするのではなく、モジュール及び/又はSoCの機能にフォーカスすることを可能とする。この理由は、各モジュールがSoCの異なる領域に容易に配置可能であることによる。複数のモジュール及びSoCは、単一のHBプロトコルを介して、互いに通信可能である。複数のモジュールは、異なるクロック信号に基づいて動作してよく、異なる転送速度、ポート又はインタフェース幅等を有してよい。各モジュールは、HBアダプタモジュールを備え、1つ又はそれより多くのイントラチップHBと1つ又はそれより多くのインターチップHBとを介した情報の転送が可能である。複数のイントラチップHB及びインターチップHBは、複数のモジュールとSoCとの間における効率的な情報の転送のために、パラレル送信要素(例えば、導電素子)の1つ又は複数の「ハイウェイ」として機能する。
【0022】
複数のHBアーキテクチャは、新たに設計された複数のモジュール及び/又はSoCの容易な統合を可能にする。複数のHBアーキテクチャは、異なるモジュール及び/又は異なるタイプのSoCにおける同じソフトウェアの容易な統合及び再利用をさらに可能にする。なぜなら、複数のモジュール及びSoCの各々は、割り当てられたHBアダプタモジュールを介して、同じHBプロトコルを用いて通信可能だからである。複数のイントラチップHBアダプタモジュールは、割り込みを含む情報をパケット化し、これにより、情報及び割り込みの効率的な転送を可能にする。これは、割り込みのために追加の指定チャネル及び/又はワイヤを必要とすることなく実行される。複数のインターチップアダプタモジュールは、アドレスマッピングを提供し、同じHBプロトコルを用いた複数のSoCの間における情報の転送を可能にする。
【0023】
複数のHBアーキテクチャは、一方向の非同期相互接続を介して、情報の高速転送を可能にする。各HBアダプタモジュールは、個別の送信及び受信接続を有する。各接続は、一方向である。複数のモジュール及び/又はSoCは、異なるクロック周波数を有する異なるクロック信号に基づいて、動作してよい。複数のイントラチップHB及びインターチップHBは、SoCのクロック信号に無関係な情報を転送する。複数のイントラチップHB及びインターチップHBは、複数のタイミングモジュールを含み、これらは、HBクロック周波数に基づいてスキュー制御を提供する。これは、複数のHBアダプタモジュールの間において、情報のパラレルな疑似同期転送を提供する。複数のHBシステムのオペレーション及び対応するHBアーキテクチャが、さらに詳細に後述される。
【0024】
図1は、複数のSoC12、14を組み込むHBシステム10を示す。SoC12、14は、個別のイントラチップHB16、18を含み、インターチップHB20を介して互いに接続される。イントラチップHB16、18の各々は、複数のインターチップHBアダプタモジュール(以下、インターチップHBアダプタと称される)AHBInterのペアの間において直列に接続される複数のイントラチップHBアダプタモジュール(以下、イントラチップHBアダプタと称される)AHBIntraを含む。複数のインターチップHBアダプタAHBInterは、対応するインターチップHBを介して他の複数のインターチップHBアダプタに接続するように構成される。例えば、インターチップHBアダプタ22は、複数のインターチップHB要素26を介してインターチップHBアダプタ24に接続される。示されるように、複数の導電素子は、HBアダプタAHBIntra、AHBInterの連続する複数のペアの間に延在する。特定の数の導電素子が示されるが、任意の数の導電素子がHB16、18、20に含まれてよい。各イントラチップHBアダプタAHBIntraは、SoC制御モジュール27、28、セルラインタフェース29、グラフィック処理モジュール(GPM)30、32、WLANインタフェース34、画像信号プロセッサ(ISP)インタフェース36、万能非同期送受信機(UART)インタフェース38、メモリインタフェース40、及びEthernet(登録商標)インタフェース42のようなモジュール及び/又はインタフェースに接続されてよい。インタフェース29、34、36、38、40、42は、ポート44、45、46、47、48、49を介して個別のデバイスに接続されてよい。
【0025】
複数のイントラチップHBアダプタAHBIntraは、特定の複数のモジュール及びインタフェースに接続されるものとして示されているが、複数のイントラチップHBアダプタAHBIntraは、他の複数のモジュール及びインタフェースに接続されてよい。例えば、複数のイントラチップHBアダプタAHBIntraは、ユニバーサルシリアルバス(USB)インタフェース、シリアルアドバンスドテクノロジアタッチメント(SATA)インタフェース、及びペリフェラルコンポーネントインターコネクトエクスプレス(PCIe)インタフェースのようなシリアルインタフェースに接続されてよい。複数のモジュール及び/又はインタフェースの各々のうち1つ又は複数は、SoC12、14の各々に含まれてよい。メモリインタフェース40は、ダイナミックランダムアクセスメモリ(DRAM)、ダブルデータレート(DDR)メモリ、リードオンリメモリ(ROM)、ソリッドステートドライブ(SDD)、ハードディスクドライブ、ハイブリッドドライブ、組み込みマルチメディアカード(eMMC)等のような揮発性及び/又は不揮発性メモリに接続されてよい。
【0026】
SoC制御モジュール27、28は、各々、1つ又は複数の処理モジュール(又はマスタ)及びキャッシュを含んでよく、複数の他のモジュール及び/又はインタフェースのオペレーションを制御してよい。複数のインタフェースは、個別の無線及び/又は有線ネットワーク、周辺デバイス(例えば、カメラ、プリンタ、モデム、コピー機等)、及び/又は他の複数のデバイスと、個別のポートを介して通信を行ってよい。SoC制御モジュール27、28の各々は、対応するイントラチップHB16、18及びイントラチップHBアダプタAHBIntraを介して、SoC12、14のうち対応するもののモジュール及びインタフェースにアクセスする。SoC制御モジュール27、28の各々は、イントラチップHB16、18、インターチップHB(例えばインターチップHB20)及びHBアダプタAHBIntra、AHBInterのうち対応するものを介して、複数の他のSoCのモジュール及びインタフェースにアクセスする。例えば、SoC制御モジュール27、28の1つは、コマンド(又は要求信号)をイントラチップHB16、18の1つに送信してよい。コマンドは、複数のモジュール及び/又はインタフェースの1つに、インターチップHB及び/又はインターチップHB20を介して転送されてよい。コマンドに応答して、データは、イントラチップHB16、18及び/又はインターチップHB20の1つを介して、SoC制御モジュールに戻されてよい。
【0027】
SoC12、14は、示されるようにポート50、52を介して、及び/又はインターチップHBアダプタ22、24を介して、互いに接続されてよい。ポート50、52は、インターチップHBアダプタ22、24に含まれてよい。複数のHBアダプタAHBIntra、AHBInterの各々は、2つ又はそれより多くのポートを含んでよく、各ポートは、送信ポート又は受信ポートである。各ポートは、情報が(i)マスタデバイス、モジュール又はインタフェースとの間で送信及び受信されるか、又は(ii)スレーブデバイス、モジュール又はインタフェースとの間で送信及び受信されるかに応じて、マスタポート及び/又はスレーブポートと称されてよい。
【0028】
図2は、複数のSoC70、72、74を含むホッピングバスシステム60を示す。第1のSoC70は、イントラチップHB75を含む。イントラチップHB75は、イントラチップHBアダプタ76、78、80を含み、これらは、インターチップHBアダプタ82、84のペアの間に直列に接続される。HBアダプタ76、78、80、82、84は、図1の対応するHBアダプタのいずれかを置換してよい。イントラチップHBアダプタ76、78、80は、SoC制御モジュール86、周辺機器インタフェースモジュール88、90、及び/又は複数の他のモジュール及び/又は(上述されたもののいくつかである)インタフェースに接続されてよい。イントラチップHBアダプタ76、78、80の各々は、複数の非HB及びHBインタフェース(例示的なインタフェース92、94、96、98が示される)、プロトコル変換モジュール(例示的なプロトコル変換モジュール99が示される)、及びタイミングモジュール(例示的なタイミングモジュール100が示される)を含んでよい。非HBインタフェースは、非HBプロトコルに従って、対応するHBアダプタとの間で情報を転送する。HBインタフェースは、HBプロトコルに従って、対応するHBアダプタとの間で情報を転送する。複数の非HB及びHBインタフェースは、個別のマスタ、スレーブ、送信及び/又は受信ポートを介して、SoC制御モジュール86、周辺機器インタフェースモジュール88、90、複数の隣接イントラチップHBアダプタのインタフェース、及び/又はインターチップHBアダプタ82、84のインタフェースに接続される。第1のイントラチップHBアダプタ76は複数のインタフェース、プロトコル変換モジュール、及びタイミングモジュールを含むものとして示されるが、複数の他のイントラチップHBアダプタ(例えば、イントラチップHBアダプタ78、80)の各々は、個別のインタフェース、プロトコル変換モジュール、及びタイミングモジュールを含んでよい。
【0029】
第1のイントラチップHBアダプタ76は、SoC制御モジュール86に接続される第1のインタフェース92と、複数の導電素子102及びバッファ104を介して第2のイントラチップHBアダプタ78に接続される第2のインタフェース94と、複数の導電素子106及びバッファ108を介してインターチップHBアダプタ82に接続される第3のインタフェース96と、第4のインタフェース98とを含む。第1のインタフェース92は、非HBインタフェースであり、SoC制御モジュール86のインタフェース110のマスタ及びスレーブポートに対応するマスタ及びスレーブポートを含む。他のインタフェース94、96、98は、HBインタフェースである。第4のインタフェース98は、他のイントラチップHBアダプタ、最後のイントラチップHBアダプタ(例えば、イントラチップHBアダプタ80)、又は他のインターチップHBアダプタに接続されてよい。例として、バッファ102、106は、第1のSoC70の複数の上部金属層に配置されてよく、SoC制御モジュール86、周辺機器インタフェースモジュール88、90、及び/又は複数の他のモジュールは、上部金属層より下部の(すなわち、第1のSoC70の基板により近接する)複数の層に配置されてよい。周辺機器インタフェースモジュール88、90は、個別の周辺デバイス110、112に接続される個別のインタフェース107、109を含む。
【0030】
イントラチップHBアダプタ76、78、80は、示されるように、共にリンクされてよく、第1のイントラチップHBアダプタ76を最後のイントラチップHBアダプタ80に接続することによって、ループバックしてよい。イントラチップHBアダプタ76、78、80の各々は、個別のインターチップHBアダプタ(例えば、インターチップHBアダプタ82、84)を介して、1つ又は複数のSoC(例えば、SoC72、74)に接続されてよい。2つのインターチップHBアダプタが示されるが、追加の複数のインターチップHBアダプタが第1のSoC70に組み込まれてよく、イントラチップHBアダプタ76、78、80のいずれか1つに接続されてよい。イントラチップHBアダプタ76、78、80の各々は、任意の数のモジュール、インタフェース、及び/又はHBアダプタに接続するための任意の数のインタフェースを含んでよい。
【0031】
(i)SoC制御モジュール86、(ii)周辺機器インタフェースモジュール88、90、及び/又は(iii)イントラチップHB75に接続される複数の他のモジュール及び/又はインタフェースに接続されるイントラチップHBアダプタモジュール76、78、80のインタフェース(例えば、インタフェース92)は、非HBインタフェースと称されてよい。複数の非HBインタフェースは、個別のマスタポート及びスレーブポートを含んでよい。複数のマスタポート及びスレーブポートは、同じ又は異なる非HBプロトコルを介して、SoC制御モジュール86、周辺機器インタフェースモジュール88、90及び/又は複数の他のモジュール及び/又はインタフェースに対して動作してよく、及び/又はこれらとの間で情報を転送してよい。非HBプロトコルは、同じクロック信号又は異なるクロック信号に基づいてよい。複数の非HBプロトコルは、例えば、アドバンスドマイクロコントローラバスアーキテクチャ(AMBA)、アドバンスドエクステンシブルインタフェース(AXI)プロトコル、及びAMBA高性能バス(AHB)であってよい。SoC制御モジュール86、周辺機器インタフェースモジュール88、90及び/又は複数の他のモジュール及び/又はインタフェースは、(i)複数の非HBプロトコルのうち1つ又は複数に従って、かつ(ii)複数のクロック信号のうち1つ又は複数に基づいて、イントラチップHB75との間で情報を転送してよい。イントラチップHBアダプタ76、78、80の他のインタフェース(例えば、インタフェース94、96、98)は、HBインタフェースと称されてよく、HBプロトコルに従って情報を転送してよい。イントラチップHBアダプタ76、78、80は、情報の転送に用いられるクロック信号に関わらず、複数の非HBインタフェースから情報を受信するように構成される。
【0032】
プロトコル変換モジュール99は、バッファ120及びパケット化モジュール122を含んでよい。プロトコル変換モジュール99は、複数の非HBプロトコルのうち1つ又は複数に従って受信された情報を、HBプロトコルに従ったフォーマットの情報に変換する。受信された情報は、バッファ120に格納されてよく、次に、パケット化モジュール122によってパケット化されてよい。結果として、ヘッダ及びボディを有する複数のパケットが生成される。ヘッダは、ソースアドレス、デスティネーションアドレス、及び転送及び/又はアクセスされるべき多数のビットを含んでよい。ボディは、複数のコマンド、要求された情報、データ、及び/又は他の情報を含んでよい。パケット化モジュール122は、また、HBアダプタ76、78、80、82、84の間で、対応するHBインタフェース、バッファ、及び導電素子を介して、他の情報と同様の及び/又はこれらと共に、複数の割り込みをパケット化し、当該割り込みを送信してよい。これにより、割り込みのために複数のライン、導電素子、及び/又はチャネルを追加する必要がなくなる。
【0033】
タイミングモジュール100は、HBクロック信号を生成するHBクロック124を含んでよい。タイミングモジュール100及びHBクロック124は第1のイントラチップHBアダプタ76の一部として示されるが、タイミングモジュール100及び/又はHBクロック124は、HBアダプタ76、78、80、82、84のいずれかの一部であってよく、及び/又はHBアダプタ76、78、80、82、84とは別個であって、かつ、HBアダプタ76、78、80、82、84にHBクロック信号を提供してよい。HBアダプタ76、78、80、82、84は、同じHBクロック信号を共有してよい。同じHBクロック信号は、SoC70、72、74のHBアダプタによって共有されてよい。HBアダプタ76、78、80、82、84の各々のタイミングモジュール及び/又はパケット化モジュールは、対応するHBアダプタから他の複数のHBアダプタの1つに転送される情報信号にHBクロック信号を組み込んでよい。
【0034】
タイミングモジュール100は、スキュー制御をさらに実行してよい。これは、HBクロック信号に基づいて、イントラチップHBアダプタの対応インタフェースで、複数のパラレルチャネルにおいて受信された情報(又はパケット)をサンプリングすることを含んでよい。スキュー制御は、複数のHBアダプタの間で、パラレルチャネルにおいて転送された情報の複数のビットが、互いの予め定められた期間内に受信されることを確実にする。これは、情報のパラレル伝搬及び信号の整合を提供する。任意の数の受信チャネル及び送信チャネルと、複数のHBアダプタの間を並行に延在する複数の対応する導電素子と、複数の対応するバッファとが存在してよい。
【0035】
インターチップHBアダプタ82、84は、イントラチップHBアダプタ76、78に接続されるHBインタフェース131、133と、インターチップHB150、152に接続されるHBインタフェース135、137とを含む。インターチップHBアダプタ82、84は、アドレス変換モジュール130、132と、識別子(ID)モジュール134、136と、シリアライザ/デシリアライザ(SER/DER)モジュール138、140と、タイミングモジュール142、144とを含む。出力する情報に対して、複数のアドレス変換モジュールは、複数のイントラチップHBアダプタから受信された複数のパケットにおいて提供される複数のローカルアドレスを、複数のグローバルアドレスに変換してよい。ローカルアドレスは、ローカルチップには認識可能であり、複数の他のチップには認識可能でなくてよい。グローバルアドレスは、ローカルチップにも複数の他のチップにも認識可能であってよい。ローカルアドレスは、ローカルチップ及び/又はローカルチップに接続されるメモリデバイスにおけるメモリ位置のアドレスを指してよい。グローバルアドレスは、リモートチップにおける、及び/又はリモートチップに接続されるメモリデバイスにおけるメモリ位置のアドレスを指してよい。入力される情報に対して、アドレス変換モジュールは、リモートSoCから受信されたグローバルアドレスを、アドレス変換モジュールのローカルSoCのローカルアドレスに変換してよい。
【0036】
IDモジュール134、136は、1つ又は複数の固有IDを、イントラチップHBアダプタ76、78、80から受信されたパケットのヘッダに追加してよい。複数の固有IDは、SoC、ソースモジュール(情報を要求及び/又は提供するモジュール)、ソースインタフェース(情報を要求及び/又は提供するインタフェース)、及び/又はインターチップHBアダプタに固有であってよい。固有IDは、例えば、IDモジュールによって実行されるソフトウェアを介して割り当てられてよい。例として、アドレス変換モジュール130、132の1つは、ローカル40ビットアドレスをイントラチップHB75から受信し、IDモジュール134、136の1つによって提供される固有IDに基づいて、グローバル48ビットアドレスを生成してよい。
【0037】
SER/DERモジュール138、140は、それぞれインターチップHB150、152においてインターチップHBアダプタ82、84から送信されている情報(又はパケット)をシリアライズし、インターチップHB150、152を介してSoC72、74から受信されている情報(又はパケット)をデシリアライズしてよい。タイミングモジュール142、144は、HBクロック信号の送信及びスキュー制御を含め、イントラチップHBアダプタ76のタイミングモジュール100と同様に動作してよい。
【0038】
モジュール86、88、90(及びイントラチップHBアダプタ76、78、80に接続される複数の他のモジュール及び/又はインタフェース)は、個別のマクロに基づいて動作してよい。複数のマクロは、チップ固有であってよく、及び/又は、イントラチップHBアダプタ76、78、80の構成及びオペレーションにより、異なるタイプのチップにおいて再利用されてよい。この理由は、各マクロに関連付けられたクロック信号が、対応するチップのクロック信号に一致する必要はなく、及び/又は一致するように修正される必要もないからである。イントラチップHBアダプタ76、78、80は、情報がいつ受信されたかに関わらず動作可能であるので、クロックの一致は必要とされない。
【0039】
イントラチップHBアダプタ76、78、80は、複数のマクロのタイミングを認識してよい。これは、イントラチップHBアダプタ76、78、80に予めプログラミングされてよく、及び/又はモジュール86、88、90(及びイントラチップHBアダプタ76、78、80に接続される複数の他のモジュール及び/又はインタフェース)との通信及び/又はこれらから受信された複数のクロック信号に基づいてよい。つまり、イントラチップアダプタ76、78、80は、情報がモジュール86、88、90(及びイントラチップHBアダプタ76、78、80に接続される複数の他のモジュール及び/又はインタフェース)からいつ受信されるかを決定し、適宜応答可能であってよい。他の実施形態において、モジュール86、88、90(及びイントラチップHBアダプタ76、78、80に接続される複数の他のモジュール及び/又はインタフェース)から情報を受信することに関して、イントラチップHBアダプタ76、78、80は、時間を認識せず、受信された情報をバッファ処理してよい。
【0040】
イントラチップHB75は、複数の標準化された互換性接続ポイント(すなわち、イントラチップHBアダプタ76、78、80)を提供し、これらは、複数の互換性接続ポイントの間で上位レベルのルーティング及びタイミングを伴う。情報の非同期転送が、(i)モジュール86、88、90とイントラチップHBアダプタ76、78、80に接続される複数の他のモジュール及び/又はインタフェースとの間で、及び(ii)イントラチップHBアダプタ76、78、80の間で、行われてよい。HBアダプタ76、78、80、82、84の間における情報の転送は、スキュー制御が実行されることにより、疑似同期と称されてよい。複数の互換性接続ポイントを組み込むことによって、複数の互換性接続ポイントの容易な検証及びシリコン注入が可能となる。
【0041】
複数のHBインタフェースは、組み合わせられたマスタ及びスレーブインタフェースと称されてよく、個別の送信及び受信導電素子(例えば、導電素子102、106)を介してパラレルフォーマットで情報を転送してよい。送信及び受信導電素子の各々は、一方向であってよい。例として、複数の送信導電素子は、128データエレメント及び16ストローブエレメントを含んでよい。複数の受信導電素子も、128データエレメント及び16ストローブエレメントを含んでよい。これは、従来のAXIクロスメッシュ構成、すなわち、例えばデバイスAが、デバイスAから延在するクロスメッシュ構成の個別の分岐を介してデバイスB−Dに接続される構成とは異なる。開示されるHBシステム60は、デバイスA−DがシリアルHBを介して接続されることを可能にし、これにより、デバイスA−Dの各々は、HBの複数のHBアダプタの間で情報をシリアルに転送することによって、他のデバイスA−Dの各々と通信可能となる。情報は、デスティネーションデバイス(例えばデスティネーションデバイスD)に最も近接するイントラチップHBアダプタに到達するまで、ソースデバイス(例えばデバイスA)から複数のHBアダプタの間で転送される。
【0042】
SoC制御モジュール86は、ブートモジュール160を含んでよい。ブートモジュール160は、第1のSoC70及び/又は複数の他のSoC(例えば、SoC72、74)の複数のモジュール及びアダプタをブートアップしてよい。ブートモジュール160は、ブートアップをいつ実行し、複数のSoCの個別のブートアップコードがどこに格納されるかを、複数の他のSoCに指示してよい。複数のブートアップコードは、第1のSoC72、複数の他のSoC、及び/又は第1のSoC72及び/又は複数の他のSoCとは別個のメモリに格納されてよい。複数の他のSoCは、第1のSoC72からの命令に基づいて、ブートアップしてよい。複数の他のSoCは、個別の格納及びプリセットされた複数のビット、プリセットされた複数のピン、及び/又は自己ブートするか又は第1のSoC72からの命令に基づいてブートアップするかを示す複数の他のSoCのプリセットされた複数のヒューズに基づいて、ブートアップしてよい。複数の命令は、さらに後述されるように、インターチップHB(IHB)レディ信号において提供されてよい。ブートモジュール160のオペレーションは、図5及び6に関して、より詳細に説明される。
【0043】
図3は、アドレス変換モジュール170を示す。アドレス変換モジュール170は、図2の複数のアドレス変換モジュールのいずれかを置換してよい。アドレス変換モジュール170は、ローカルアドレスマスキングモジュール172、第1のアドレス比較モジュール174、グローバルアドレスマスキングモジュール176、及び第2のアドレス比較モジュール178を含む。ローカルアドレスマスキングモジュール172は、ローカルアドレスの多数のビットを示してよく、予め定められた数のグローバルアドレスと比較してよい。第1のアドレス比較モジュール174は、ローカルアドレス又はその一部を1つ又は複数のグローバルアドレスと比較し、一致を見る。一致が見られた場合、一致したグローバルアドレスは、ローカルアドレスに代えて用いられる。
【0044】
例えば、ローカルアドレスマスキングモジュール172は、ローカルアドレスの48ビットのうち最初の32ビットが、予め定められた数のグローバルアドレスの各々の最初の32ビットと、一致が見られるまで比較されることを示してよい。予め定められた数のグローバルアドレスは、個別のレジスタに格納されてよく、ローカルアドレスと比較されてよい。これらの比較は、並行して(又は同じ期間内に)実行されてよい。ローカルアドレスは、次に、第1のアドレス比較モジュール174を介して、一致するグローバルアドレスに再マッピングされる。
【0045】
グローバルアドレスマスキングモジュール176は、グローバルアドレスの多数のビットを示してよく、予め定められた数のローカルアドレスと比較してよい。第2のアドレス比較モジュール178は、グローバルアドレス又はその一部を1つ又は複数のローカルアドレスと比較し、一致を見る。一致が見られた場合、一致したローカルアドレスは、グローバルアドレスに代えて用いられる。
【0046】
例えば、グローバルアドレスマスキングモジュール176は、グローバルアドレスの48ビットのうち最初の32ビットが、予め定められた数のローカルアドレスの各々の最初の32ビットと、一致が見られるまで比較されることを示してよい。予め定められた数のローカルアドレスは、個別のレジスタに格納されてよく、グローバルアドレスと比較されてよい。これらの比較は、並行して(又は同じ期間内に)実行されてよい。グローバルアドレスは、次に、第2のアドレス比較モジュール178を介して、一致するローカルアドレスに再マッピングされる。
【0047】
グローバルアドレスは、1つ又はそれより多くのイントラチップHBと1つ又はそれより多くのインターチップHBとを介して、現在のSoCから他のSoCに転送されている場合には、ローカルアドレスに再マッピングされなくてよい。再マッピングは、最終デスティネーションSoCにおいて行われてよい。これは、1つ又は複数のチップの迂回と称される。
【0048】
本明細書に開示される複数のシステムは、多数の方法を用いて動作させられてよく、例示的な方法は、図4に示される。図4において、HBシステムを動作させる方法(例えば、図1−2のHBシステム10、60の1つ)が示される。複数の以下のタスクは、主として、図1−3の実装に関して説明されるが、これらのタスクは、本開示の複数の他の実装に適用するように、容易に修正され得る。これらのタスクは、反復的に実行されてよい。
【0049】
方法は、200において開始してよい。202において、第1のイントラチップHBアダプタ(例えばイントラチップHBアダプタ76)は、情報(例えばコマンド)をモジュール(例えばSoC制御モジュール86)から受信する。情報は、第1のイントラチップアダプタの非HBインタフェースのマスタポートを介して受信されてよい。
【0050】
204において、プロトコル変換モジュールは、受信された情報をHBプロトコルに変換する。受信された情報は、異なるタイプであってよく、異なる速度で受信されていてよく、及び/又は異なるクロック周波数に基づいて送信されていてよい。受信された情報のプロトコルに関わらず、プロトコル変換モジュールは、HBプロトコルに従って、情報をHBフォーマットに変換する。これは、情報をパケット化し、1つ又は複数のパケットにヘッダを追加するパケット化モジュールを含んでよい。ヘッダは、ソースアドレス、デスティネーションアドレス、ソースチップ固有ID、デスティネーションチップ固有ID、ソースモジュール固有ID、及び/又はデスティネーションモジュール固有IDを含んでよい。ソース及びデスティネーションアドレスは、複数のSoCのアドレスでなくてよく、むしろ、複数のSoCの内部又は外部のメモリ位置、及び/又は複数のSoCに接続されるデバイスのアドレスを指してよい。
【0051】
206において、第1のイントラチップHBアダプタは、ヘッダにおけるいずれか又は全ての情報に基づいて、204において生成された1つ又は複数のパケットが(i)現在のイントラチップアダプタモジュールから現在のSoCに内部転送されるべきか、又は(ii)他のSoCに送信されるべきかを決定してよい。複数のパケットが現在のSoCに残るべき場合、タスク208が実行され、そうでなければタスク222が実行される。
【0052】
208において、第1のイントラチップHBアダプタは、ヘッダにおけるいずれか又は全ての情報に基づいて、204において生成された1つ又は複数のパケットが次のイントラチップHBアダプタモジュールに転送されるべきか否かを決定してよい。複数のパケットがイントラチップHBに沿って次のイントラチップHBアダプタモジュールに転送されるべき場合、タスク210が実行され、そうでなければタスク215が実行される。
【0053】
210において、情報及びHBクロック信号は、現在の(又は前の)イントラチップHBアダプタモジュールから次のイントラチップHBアダプタモジュールに、イントラチップHBを介して転送される。複数のパケットは、複数のHBアダプタモジュールの間で、複数の適用可能なパラレルチャネルを介して展開される。212において、次のイントラチップHBアダプタモジュールにおいて受信される前に、情報は、前のイントラチップHBアダプタモジュールと次のイントラチップHBアダプタモジュールとの間で、複数のバッファ(例えばバッファ102)を介してバッファ処理される。214において、複数のパケットのビットは、複数のチャネルにおいて次のインターチップHBアダプタモジュールで受信されると、HBクロック信号に基づいてサンプリングされる。サンプリングは、複数のビットが各チャネルにおいて受信される速度を調整するように、スキュー制御を実行すべく調整されてよい。これは、複数のパラレルチャネルを介して互いの第1の予め定められた期間内に送信される複数のビットが、互いの第2の予め定められた期間内に受信されることを確実にする助けとなる。第2の予め定められた期間は、第1の予め定められた期間と同じ長さであってよい。タスク214の後で、タスク206が実行されてよく、次のイントラチップHBアダプタモジュールは、ここで、現在のイントラチップHBアダプタモジュールとなる。
【0054】
215において、パケットの形の情報は、次のイントラチップHBアダプタモジュールのプロトコル変換モジュールによって、デスティネーションデバイスに認識可能なフォーマットに変換される。情報は、ソースデバイスによって送信された情報と同じフォーマットで、及び/又は当該情報と同じプロトコルに基づいてよく、又は、異なるフォーマットで、及び/又は異なるプロトコルに基づいてよい。216において、変換された情報は、イントラチップHBからデスティネーションデバイス、モジュール及び/又はインタフェースに転送される。218において、最新のイントラチップHBアダプタモジュールは、デスティネーションデバイス、モジュール及び/又はインタフェースから応答を受信したか否かを、その情報に基づいて決定する。応答が受信されていた場合、タスク220が実行され、そうでなければ、方法が238において終了してよい。
【0055】
220において、応答は、デスティネーションデバイス、モジュール及び/又はインタフェースから、最新のイントラチップHBアダプタモジュールにおいて受信され、イントラチップHBを介して情報のソースに転送される。応答は、例えば、メモリに格納されていたデータを含んでよい。応答の転送は、情報がデスティネーションデバイス、モジュール及び/又はインタフェースに送信された逆順序で行われてよい。
【0056】
222において、情報は、現在のイントラチップHBアダプタモジュールからインターチップHBアダプタモジュール(例えばインターチップHBアダプタ82)に転送される。224において、インターチップHBアダプタモジュールにおいて受信される前に、情報はバッファ処理される。226において、インターチップHBアダプタモジュールは、受信された情報をサンプリングする。これは、上述されたようにスキュー制御を含んでよく、最後のイントラチップHBアダプタモジュール(前は現在のイントラチップHBアダプタモジュールと称された)からインターチップHBアダプタモジュールにおいて受信されるHBクロック信号に基づいてよい。
【0057】
228において、IDモジュール(例えばIDモジュール)は、1つ又は複数の固有IDを決定する。230において、アドレス変換モジュールは、1つ又は複数の固有IDに基づいて、ローカルアドレスをグローバルアドレスに変換してよい。複数のパケットのヘッダは、1つ又は複数の固有ID及び決定されたグローバルアドレスに基づいて修正されてよい。231において、シリアライザ/デシリアライザモジュールは、複数のパケットのビットをシリアライズする。232において、インターチップHBアダプタモジュールは、インターチップHBを介して、複数のシリアライズされたビットを次のSoCに転送する。複数のパケットがシリアライズされるが、複数のパケットは、前のSoCと次のSoCとの間の複数のパラレルチャネルを介して送信されてよく、各チャネルは、個別のパケットのシリアライズされたビットを含む。複数のパケットのビットは、1つ又は複数のチャネルを介して次のSoCに送信されてよい。
【0058】
234において、インターチップHBアダプタモジュールは、インターチップHBを介して送信された複数のパケットに基づいて、次のSoCからの応答が受信されたか否かを決定する。応答は、例えば、次のチップ又は次のチップに接続されるデバイスに格納されていたデータ又はブートコードを含んでよい。応答が受信された場合、タスク236が実行され、そうでなければ、方法は238において終了してよい。236において、応答は、イントラチップHBを介して情報のソースに転送される。これは、情報が送信された逆順序で実行されてよい。
【0059】
上述された複数のタスクは、説明のための例であると意図されており、複数のタスクは、用途に応じて、シーケンシャルに、同期的に、同時に、連続的に、重複する期間内に、又は異なる順序で、実行されてよい。また、複数のタスクのいずれかは、複数のイベントの実装及び/又はシーケンスに応じて、実行されなくてよく、又はスキップされてよい。
【0060】
図5は、クロスチップブートアップ制御を実行するように構成されるHBシステム250を示す。HBシステム250は、第1のSoC252及び第2のSoC254を含む。第1のSoC252は、「ベース」又は「マスタブート」チップと称されてよく、第2のSoC254は、「下位」チップと称されてよい。第1のSoC252は、ブートモジュール258を有するSoC制御モジュール256と、HB260と、ROM及び/又はキャッシュ262と、メモリインタフェースモジュール264と、インターチップHBアダプタモジュール266とを含む。HB260は、複数のイントラチップHBアダプタモジュール268を含み、これらはそれぞれ、ROM及び/又はキャッシュ262、メモリインタフェースモジュール264、及びインターチップHBアダプタモジュール266に接続される。複数のイントラチップHBアダプタモジュール268は、図2の複数のイントラチップHBアダプタモジュールと同様に構成されてよい。複数のメモリインタフェースモジュール264は、eMMC270、USBモジュール272、DDRメモリ274及びUARTモジュール276のようなメモリデバイスに接続される。インターチップHBアダプタモジュール266は、インターチップHB280を介して第2のSoC254に接続され、これは、他のメモリデバイス(例えば第2のDDRメモリ278)に接続されてよい。HBシステム250は、図6に関してさらに説明される。
【0061】
図6は、ブート方法を示す。複数の以下のタスクは、主として、図5の実装に関して説明されるが、これらのタスクは、本開示の複数の他の実装に適用するように、容易に修正され得る。これらのタスクは、反復的に実行されてよい。
【0062】
方法は、300において開始してよい。以下のタスク302−308は、ベースチップ(例えば第1のSoC252)に関連付けられる。302において、ベースチップが起動(例えば、電源オン)される。304において、ベースチップは、メモリデバイス262、270、272、274、276のうち1つ又は複数のような1つ又は複数のメモリ(又はメモリデバイス)におけるベースチップ及び/又は1つ又は複数の下位チップ(例えば第2のSoC254)のブートコードをロードする。これは、ブートコードをベースチップのキャッシュにロードすること、又はブートコードを複数のメモリデバイスのうち2つ又はそれより多くの間で転送することを含んでよい。306において、既に304において実行されていない場合には、複数の下位チップのブートコードがロードされてよい。
【0063】
308において、ベースチップ及び/又は対応するブートモジュールは、インターチップHB(IHB)レディ信号を生成してよく、これは、ベースチップ、インターチップHB、ベースチップのイントラチップHB、及びブートコードが複数の下位チップに対して準備完了であることを示す。IHBレディ信号は、複数の下位チップ及び/又は下位チップのモジュールの各々に対するブートコードがどこに配置されるかを示してよい。IHB信号は、インターチップHBを介して、ベースチップから複数の下位チップに送信される。1つより多くの下位チップがIHBレディ信号を受信した場合、IHBレディ信号は、第1の下位チップから第2の下位チップに転送されてよく、又はベースチップから各下位チップに直接転送されてよい。
【0064】
タスク310−314は、第1の下位チップに関連付けられる。310において、第1の下位チップは、第1の下位チップのインターチップHBアダプタモジュールにおいて、IHB信号を受信する。312において、第1の下位チップのインターチップHBアダプタモジュールは、IHB信号を第2の下位HBチップに転送するか否かを決定する。IHB信号が転送されない場合、タスク314が実行され、そうでなければタスク316が実行される。
【0065】
314において、第1の下位チップは、IHB信号に基づいて、ブートアップするか否かを決定する。これは、第1の下位チップの制御モジュールが、IHB信号に従ってブートコードにアクセスするか否か、及び/又は第1の下位チップ及び/又は第1の下位チップに接続されるメモリデバイスに格納されるコードに基づいてブートアップするか否かを決定することを含んでよい。第1の下位チップは、(i)IHB信号に従ってブートコードをロードするアクセス要求信号を生成し、(ii)アクセス要求信号に基づいて、ベースSoC及び/又はベースSoC内部の及び/又はこれに接続されるメモリデバイスからブートコードを受信してよい。アクセス要求信号は、複数のイントラチップHBアダプタ、イントラチップHB、インターチップHBアダプタ、及びインターチップHBを介して送信され、ベースSoCの制御モジュール及び/又はベースSoC内の又はこれに接続されるメモリに戻されてよい。ブートコードは、次に、複数のイントラチップHBアダプタ、イントラチップHB、インターチップHBアダプタ、及びインターチップHBを介して、第1の下位SoCの制御モジュールに送信されてよい。
【0066】
316において、第2の下位SoCは、IHB信号に従ってブートアップしてよい。タスク314、316の後、方法は、318において終了してよい。
【0067】
本開示において説明される無線通信は、全て又は部分的に、IEEE規格802.11−2012、IEEE規格802.16−2009、IEEE規格802.20−2008、及び/又はBluetooth(登録商標)コア仕様書v4.0に準拠して実行されてよい。様々な実装において、Bluetooth(登録商標)コア仕様書v4.0は、Bluetooth(登録商標)コア仕様書補遺2、3、又は4のうち1つ又は複数によって修正されることがある。様々な実装において、IEEE802.11―2012は、ドラフトIEEE規格802.11ac、ドラフトIEEE規格802.11ad、及び/又はドラフトIEEE規格802.11ahにより補足されることがある。
【0068】
前述の説明は、本質的に例示に過ぎず、本開示、その適用、又は用途を限定することを全く意図するものではない。本開示の複数の広範な教示は、様々な形態で実装されてよい。従って、図面、明細書、及び以下の特許請求の範囲を検討すれば他の複数の変形が明らかになるゆえ、本開示は複数の具体例を含むが、本開示の真の範囲はそのように限定されるべきではない。本明細書において用いられる際、A、B、及びCのうち少なくとも1つ、という表現は、非排他的論理ORを使用して、論理(A又はB又はC)を意味するものと解釈されるべきであり、「Aのうち少なくとも1つ、Bのうち少なくとも1つ、及び、Cのうち少なくとも1つ」を意味するものと解釈されるべきではない。方法内の1つ又は複数の段階は、本開示の複数の原理を変更することなく異なる順序で(又は同時に)実行され得ることが理解されるべきである。
【0069】
本願において、以下の定義を含む用語「モジュール」又は用語「コントローラ」は、用語「回路」に置換されてよい。用語「モジュール」は、システムオンチップにおけるような、特定用途向け集積回路(ASIC)、デジタル、アナログ、もしくは混成アナログ/デジタルディスクリート回路、デジタル、アナログ、もしくは混成アナログ/デジタル集積回路、組み合わせロジック回路、フィールドプログラマブルゲートアレイ(FPGA)、コードを実行するプロセッサ回路(共有、専用、もしくはグループ)、プロセッサ回路によって実行されるコードを格納するメモリ回路(共有、専用、もしくはグループ)、説明された機能を提供する他の適したハードウェアコンポーネント、又は上記のうちいくつかのもしくは全部の組み合わせを指してよく、これらの一部であってよく、又はこれらを含んでよい。
【0070】
モジュールは、1つ又は複数のインタフェース回路を含んでよい。いくつかの例において、複数のインタフェース回路は、ローカルエリアネットワーク(LAN)、インターネット、ワイドエリアネットワーク(WAN)、もしくはこれらの組み合わせに接続される、有線又は無線のインタフェースを含んでよい。本開示のあらゆる所与のモジュールの機能は、インタフェース回路を介して接続される複数のモジュールの中で分散されてよい。例えば、複数のモジュールは、ロードバランシングを可能にしてよい。さらなる例において、サーバ(リモート、又はクラウドとしても知られる)モジュールは、クライアントモジュールに代わって、いくつかの機能を実現してよい。
【0071】
コードという用語は、上記において使用されるように、ソフトウェア、ファームウェア、及び/又はマイクロコードを含んでよく、複数のプログラム、ルーチン、機能、クラス、データ構造、及び/又はオブジェクトを指してよい。共有プロセッサ回路という用語は、複数のモジュールからのいくつかの又は全てのコードを実行する単一のプロセッサ回路を包含する。グループプロセッサ回路という用語は、追加の複数のプロセッサ回路との組み合わせで、1つ又は複数のモジュールからのいくつかの又は全てのコードを実行するプロセッサ回路を包含する。複数のプロセッサ回路という記載は、複数の別個のダイ上の複数のプロセッサ回路、単一のダイ上の複数のプロセッサ回路、単一のプロセッサ回路の複数のコア、単一のプロセッサ回路の複数のスレッド、又は上記のものの組み合わせを包含する。共有メモリ回路という用語は、複数のモジュールからのいくつかの又は全てのコードを格納する単一のメモリ回路を包含する。グループメモリ回路という用語は、追加の複数のメモリとの組み合わせで、1つ又は複数のモジュールからのいくつかの又は全てのコードを格納するメモリ回路を包含する。
【0072】
メモリ回路という用語は、コンピュータ可読媒体という用語のサブセットである。本明細書で用いられるコンピュータ可読媒体という用語は、(搬送波のような)媒体を通して伝播される一時的な電気又は電磁信号を包含しない。従って、コンピュータ可読媒体という用語は、有形で非一時的なものとみなされてよい。非一時的な有形のコンピュータ可読媒体の非限定的な例は、不揮発性メモリ回路(フラッシュメモリ回路又はマスクリードオンリメモリ回路のような)、揮発性メモリ回路(スタティックランダムアクセスメモリ回路及びダイナミックランダムアクセスメモリ回路のような)、ならびに磁気ストレージ(磁気テープ又はハードディスクドライブのような)及び光ストレージのような二次ストレージを含む。
【0073】
本願において説明される複数の装置及び方法は、複数のコンピュータプログラムにおいて具現化される1つ又は複数の特定の機能を実行するように汎用コンピュータを構成することによって形成される特定用途向けコンピュータによって、部分的に又は完全に実装されてよい。複数のコンピュータプログラムは、少なくとも1つの非一時的な、有形のコンピュータ可読媒体上に格納される複数のプロセッサ実行可能命令を含む。複数のコンピュータプログラムは、格納されたデータをさらに含み、又は格納されたデータに依存してよい。複数のコンピュータプログラムは、特定用途向けコンピュータのハードウェアとインタラクトする基本入出力システム(BIOS)、特定用途向けコンピュータの複数の特定のデバイスとインタラクトする複数のデバイスドライバ、1つ又は複数のオペレーティングシステム、複数のユーザアプリケーション、複数のバックグラウンドサービス及びアプリケーション等を含んでよい。
【0074】
複数のコンピュータプログラムは、(i)アセンブリコード、(ii)コンパイラによってソースコードから生成されたオブジェクトコード、(iii)インタプリタによる実行のためのソースコード、(iv)ジャストインタイムコンパイラによって、コンパイル及び実行するためのソースコード、(v)HTML(ハイパーテキストマークアップ言語)又はXML(拡張可能マークアップ言語)のような構文解析のための記述テキスト等を含んでよい。単なる例示として、ソースコードは、C、C++、C#、Objective−C、Haskell、Go、SQL、Lisp、Java(登録商標)、ASP、Perl、Javascript(登録商標)、HTML5、Ada、ASP(アクティブサーバページ)、Perl、Scala、Erlang、Ruby、Flash(登録商標)、Visual Basic(登録商標)、Lua、又はPython(登録商標)で記述されてよい。
【0075】
特許請求の範囲に記載された複数の要素はいずれも、要素が「のための手段」という表現を用いて、又は方法クレームの場合には「のためのオペレーション」もしくは「のためのステップ」という表現を用いて明示的に記載されない限り、米国特許法第112条(f)が意味する範囲内にあるミーンズプラスファンクション要素であることを意図するものではない。
図1
図2
図3
図4
図5
図6