IP Force 特許公報掲載プロジェクト 2022.1.31 β版

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

▶ アプライド マテリアルズ インコーポレイテッドの特許一覧

特表2024-518166チップレットベースの設計を接続するためのスケーラブルなネットワーク・オン・パッケージ
<>
  • 特表-チップレットベースの設計を接続するためのスケーラブルなネットワーク・オン・パッケージ 図1
  • 特表-チップレットベースの設計を接続するためのスケーラブルなネットワーク・オン・パッケージ 図2A
  • 特表-チップレットベースの設計を接続するためのスケーラブルなネットワーク・オン・パッケージ 図2B
  • 特表-チップレットベースの設計を接続するためのスケーラブルなネットワーク・オン・パッケージ 図3A
  • 特表-チップレットベースの設計を接続するためのスケーラブルなネットワーク・オン・パッケージ 図3B
  • 特表-チップレットベースの設計を接続するためのスケーラブルなネットワーク・オン・パッケージ 図4
  • 特表-チップレットベースの設計を接続するためのスケーラブルなネットワーク・オン・パッケージ 図5
  • 特表-チップレットベースの設計を接続するためのスケーラブルなネットワーク・オン・パッケージ 図6
  • 特表-チップレットベースの設計を接続するためのスケーラブルなネットワーク・オン・パッケージ 図7
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-04-25
(54)【発明の名称】チップレットベースの設計を接続するためのスケーラブルなネットワーク・オン・パッケージ
(51)【国際特許分類】
   G06F 15/173 20060101AFI20240418BHJP
【FI】
G06F15/173 660Z
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2023568503
(86)(22)【出願日】2022-04-12
(85)【翻訳文提出日】2023-12-28
(86)【国際出願番号】 US2022024475
(87)【国際公開番号】W WO2022235401
(87)【国際公開日】2022-11-10
(31)【優先権主張番号】17/314,857
(32)【優先日】2021-05-07
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.リナックス
2.iOS
(71)【出願人】
【識別番号】390040660
【氏名又は名称】アプライド マテリアルズ インコーポレイテッド
【氏名又は名称原語表記】APPLIED MATERIALS,INCORPORATED
【住所又は居所原語表記】3050 Bowers Avenue Santa Clara CA 95054 U.S.A.
(74)【代理人】
【識別番号】110002077
【氏名又は名称】園田・小林弁理士法人
(72)【発明者】
【氏名】ザーマン, ナヴィード
(72)【発明者】
【氏名】シャック, マイロン
(72)【発明者】
【氏名】スリ, タミッシュ
(72)【発明者】
【氏名】シャイフ, ビラル シャーフィ
【テーマコード(参考)】
5B045
【Fターム(参考)】
5B045BB17
5B045BB23
5B045CC02
5B045DD10
5B045DD12
5B045EE12
5B045KK02
(57)【要約】
複数のチップレットを接続するためのネットワーク・オン・パッケージ(NoPK)が、複数のチップレットによって使用される複数のプロトコルを共通プロトコルに変換するように設定された複数のインターフェースブリッジ、共通プロトコルを使用して複数のインターフェースブリッジ間でトラフィックをルーティングするように設定されたルーティングネットワーク、及び、NoPKに接続される複数のチップレットの種類に基づいて、複数のインターフェースブリッジとルーティングネットワークとをプログラムするように設定されたコントローラを含み得る。NoPKは、異なる通信プロトコルを使用する異なるエコシステムからの任意の数のチップレットに対して、スケーラブルな接続を提供することができる。
【選択図】図3B
【特許請求の範囲】
【請求項1】
複数のチップレットを接続するためのネットワーク・オン・パッケージ(NoPK)であって、
前記複数のチップレットによって使用される複数のプロトコルを共通プロトコルに変換するように設定された複数のインターフェースブリッジ、
前記共通プロトコルを使用して前記複数のインターフェースブリッジ間でトラフィックをルーティングするように設定されたルーティングネットワーク、及び
前記NoPKに接続される前記複数のチップレットの種類に基づいて、前記複数のインターフェースブリッジと前記ルーティングネットワークとをプログラムするように設定されたコントローラを備える、NoPK。
【請求項2】
前記ルーティングネットワークのレーン間のスペース内に位置付けられた複数の分散型スタティックランダムアクセスメモリ(SRAM)モジュールを更に備え、前記分散型SRAMモジュールは、キャッシュ又はソフトウェア管理型バッファーとして設定可能である、請求項1に記載のNoPK。
【請求項3】
前記コントローラは、前記NoPKが前記複数のチップレットに物理的に接続された後で、プログラム可能である、請求項1に記載のNoPK。
【請求項4】
前記コントローラは、前記ルーティングネットワークを介してルーティングされた前記トラフィックを監視するテレメトリエンジンであって、前記複数のチップレットのパフォーマンスレジスタを読み取るテレメトリエンジンを備える、請求項1に記載のNoPK。
【請求項5】
前記NoPKの外部にあるメモリデバイスに通信可能に結合されるように設定されたメモリコントローラを更に備える、請求項1に記載のNoPK。
【請求項6】
前記NoPKと相互作用するときの前記複数のチップレット用の動的電圧及び周波数スケーリング(DVFS)値を設定するように、前記コントローラはプログラム可能である、請求項1に記載のNoPK。
【請求項7】
前記コントローラは、前記複数のチップレット内の第1の対のチップレット間のトラフィックを優先するように、前記ルーティングネットワークをプログラムするよう更に設定されている、請求項1に記載のNoPK。
【請求項8】
前記NoPKは、専用チップレットダイに実装されている、請求項1に記載のNoPK。
【請求項9】
複数のチップレット間のトラフィックをルーティングする方法であって、
前記複数のチップレットを接続するように、複数のインターフェースブリッジとルーティングネットワークとをプログラムすること、
前記複数のインターフェースブリッジにおいて前記複数のチップレットから前記トラフィックを受け取ることであって、前記複数のチップレットは複数のプロトコルを使用する、前記複数のチップレットから前記トラフィックを受け取ること、
前記トラフィックを前記複数のインターフェースブリッジにおいて共通プロトコルに変換すること、及び
前記共通プロトコルを使用して、前記複数のインターフェースブリッジ間で前記ルーティングネットワークを介して前記トラフィックをルーティングすることを含む、方法。
【請求項10】
前記複数のチップレットは、異なるメーカーからのプロセッサを備える、請求項9に記載の方法。
【請求項11】
前記複数のプロトコルは、前記複数のチップレットによって使用される複数の異なるバス通信プロトコルを含む、請求項9に記載の方法。
【請求項12】
前記共通プロトコルは、前記複数のチップレットによって使用される前記複数のプロトコルのうちの1つを含む、請求項9に記載の方法。
【請求項13】
前記共通プロトコルは、前記複数のチップレットによって使用されない汎用パケットプロトコルを含む、請求項9に記載の方法。
【請求項14】
前記複数のチップレット内のチップレットの数が、チップレットの閾値数よりも少ないときに、前記ルーティングネットワークの部分を停止することを更に含む、請求項9に記載の方法。
【請求項15】
第1のインターポーザ層上に配置された第1の複数のチップレット、
第2のインターポーザ層上に配置された第2の複数のチップレット、及び
第3のインターポーザ層上のルーティングネットワークを含むパッケージを備える、システムであって、
前記第3のインターポーザ層は、前記第1のインターポーザ層と前記第2のインターポーザ層との間にあり、
前記第1のインターポーザ層は、第1の組の相互接続によって前記第3のインターポーザ層に接続され、
前記第2のインターポーザ層は、第2の組の相互接続によって前記第3のインターポーザ層に接続され、
前記ルーティングネットワークは、前記第1の複数のチップレットと前記第2の複数のチップレットとの間でトラフィックをルーティングするようにプログラム可能である、システム。
【請求項16】
前記組の相互接続は、前記第1のインターポーザ層、前記第2のインターポーザ層、及び前記第3のインターポーザ層を物理的に分離する、垂直相互接続を含む、請求項15に記載のシステム。
【請求項17】
前記組の相互接続は、シリコン貫通ビア(TSV)を備える、請求項15に記載のシステム。
【請求項18】
前記第1の複数のチップレットは、前記第1のインターポーザ層を介して互いに通信し、前記第2の複数のチップレットは、前記第2のインターポーザ層を介して互いに通信し、前記第1の複数のチップレットは、前記ルーティングネットワークを含む前記パッケージを介して前記第2の複数のチップレットと通信する、請求項15に記載のシステム。
【請求項19】
前記第3のインターポーザ層は、有機、ガラス、又はシリコンのインターポーザ基板を備える、請求項15に記載のシステム。
【請求項20】
前記第1の複数のチップレットは、第1の電力量を使用し、
前記第2の複数のチップレットは、前記第1の電力量よりも少ない第2の電力量を使用し、
前記システムは、前記第1の複数のチップレットに結合されたヒートシンクを更に備える、請求項15に記載のシステム。
【発明の詳細な説明】
【技術分野】
【0001】
関連出願の相互参照
[0001] 本出願は、2021年5月7日に出願された「SCALABLE NETWORK-ON-PACKAGE FOR CONNECTING CHIPLET-BASED DESIGNS」という題目の米国非仮特許出願第17/314,857号の利益及び優先権を主張し、当該非仮特許出願の内容は、その全体があらゆる目的のために参照によって本明細書に援用される。
【0002】
[0002] 本開示は、広くは、異なるプロトコルを使用する異なるエコシステムからのチップレットを接続するためのパッケージ上のルーティングネットワークに関する。特に、本開示は、2D、2.5D、3Dトポロジーにおけるチップレット間のトラフィックをルーティングするための、プログラム可能な相互接続ブリッジと、ルーティングネットワークと、を有するスケーラブルなネットワーク・オン・パッケージ(NoPK)を説明する。
【背景技術】
【0003】
[0003] チップレットは、他の同様なモジュール型チップレットと連携して、より大規模でより複雑な処理システムを形成するように特別に設計されたモジュール型集積回路である。これにより、機能ブロックを設計において異なるチップレットに分割し、設計プロセス中の柔軟性及びモジュール性を高めることができる。従来のモノリシック集積回路(IC)の設計とは対照的に、チップレットベースの設計では、より小さな独立したダイを接続して使用する。各チップレットは、処理コア、グラフィック処理ユニット、数値演算コプロセッサ、ハードウェアアクセラレータなどの、個々の機能を実行するように特別に設計され得る。チップレットベースの設計では、歩留まりとビニングを改善するために、より大きなダイをより小さなチップレットに分割することができるので、製造コストも削減される。チップレットが、より安価であり、市場投入までの時間が短縮されるため、コストの上昇とムーアの法則の鈍化により、従来のモノリシックチップの開発もまた、魅力的ではなくなりつつある。比較的新しいチップレットベースのエコシステムの出現により、テスト済みのチップレットダイをより大きなパッケージに統合することで、複雑なシステムを設計する代替的な方法が可能になり始めている。
【0004】
[0004] システム・オン・チップ(SoC)のような従来のモノリシックIC設計は、異なる機能ブロックにわたる通信を可能にするために、典型的にはオンチップファブリックのネットワークを採用している。しかし、この方法は、市販のチップレットを統合するときには上手くいかない。モノリシックICは、コンセプトから製造まで一貫して設計されるため、集積ファブリックは常に、既知の機能を有する既知のトポロジーで配置されたチップレットの特定のセットに対応するよう特別に設計されている。チップレットベースのアーキテクチャを接続するための現在のソリューションでは、様々なチップレットと通信フレームワークとを共同設計する必要がある。現在のところ、効率的な、スケーラブルな、又はユニバーサルな市販のチップレット構成用の相互接続ソリューションは存在しない。
【発明の概要】
【0005】
[0005] 幾つかの実施形態では、複数のチップレットを接続するためのネットワーク・オン・パッケージ(NoPK)が、複数のチップレットによって使用される複数のプロトコルを共通プロトコルに変換するように設定された複数のインターフェースブリッジ、共通プロトコルを使用して複数のインターフェースブリッジ間でトラフィックをルーティングするように設定されたルーティングネットワーク、及び、NoPKに接続される複数のチップレットの種類に基づいて、複数のインターフェースブリッジとルーティングネットワークとをプログラムするように設定されたコントローラを含み得る。
【0006】
[0006] 幾つかの実施形態では、複数のチップレット間のトラフィックをルーティングする方法が、複数のチップレットを接続するように、複数のインターフェースブリッジとルーティングネットワークとをプログラムすること、複数のインターフェースブリッジにおいて複数のチップレットからトラフィックを受け取ることであって、複数のチップレットは複数のプロトコルを使用する、複数のチップレットからトラフィックを受け取ること、トラフィックを複数のインターフェースブリッジにおいて共通プロトコルに変換すること、及び、共通プロトコルを使用して、複数のインターフェースブリッジ間でルーティングネットワークを介してトラフィックをルーティングすることを含み得る。
【0007】
[0007] 幾つかの実施形態では、システムが、第1のインターポーザ層上に配置された第1の複数のチップレット、第2のインターポーザ層上に配置された第2の複数のチップレット、及び第3のインターポーザ層上のルーティングネットワークを含むパッケージを含み得る。第3のインターポーザ層は、第1のインターポーザ層と第2のインターポーザ層との間にあり得る。第1のインターポーザ層は、第1の組の相互接続によって第3のインターポーザ層に接続され得る。第2のインターポーザ層は、第2の組の相互接続によって第3のインターポーザ層に接続され得る。ルーティングネットワークは、第1の複数のチップレットと第2の複数のチップレットとの間でトラフィックをルーティングするようにプログラム可能であり得る。
【0008】
[0008] 任意の複数の実施形態では、以下の特徴のうちのいずれか及び全てが、任意の組み合わせで限定なしに実装され得る。NoPKはまた、ルーティングネットワークのレーン間のスペース内に位置付けられた複数の分散型スタティックランダムアクセスメモリ(SRAM)モジュールも含み得る。その場合、分散型SRAMモジュールは、キャッシュ又はソフトウェア管理型バッファーとして設定可能であり得る。コントローラは、NoPKが複数のチップレットに物理的に接続された後で、プログラム可能であり得る。コントローラは、ルーティングネットワークを介してルーティングされたトラフィックを監視するテレメトリエンジンであって、複数のチップレットのパフォーマンスレジスタを読み取るテレメトリエンジンを含み得る。NoPKはまた、NoPKの外部にあるメモリデバイスに通信可能に結合されるように設定されたメモリコントローラも含み得る。コントローラは、NoPKと相互作用するときの複数のチップレット用の動的電圧及び周波数スケーリング(DVFS)値を設定するようにプログラム可能であり得る。コントローラは、複数のチップレット内の第1の対のチップレット間のトラフィックを優先するように、ルーティングネットワークをプログラムするよう更に設定され得る。NoPKは、専用のチップレットダイ内に実装され得る。複数のチップレットは、異なるメーカーからのプロセッサを含み得る。複数のプロトコルは、複数のチップレットによって使用される複数の異なるバス通信プロトコルを含み得る。共通プロトコルは、複数のチップレットによって使用される複数のプロトコルのうちの1つを含み得る。共通プロトコルは、複数のチップレットによって使用されない汎用パケットプロトコルを含み得る。複数のチップレット内のチップレットの数が、チップレットの閾値数よりも少ないときに、ルーティングネットワークの部分が停止され得る。一組の相互接続(第1の組の相互接続及び/又は第2の組の相互接続)が、垂直相互接続を含み得る。垂直相互接続は、第1のインターポーザ層、第2のインターポーザ層、及び第3のインターポーザ層を物理的に分離する。一組の相互接続は、シリコン貫通ビア(TSV)を含み得る。第1の複数のチップレットは、第1のインターポーザ層を介して互いに通信し、第2の複数のチップレットは、第2のインターポーザ層を介して互いに通信し、第1の複数のチップレットは、ルーティングネットワークを含むパッケージを介して第2の複数のチップレットと通信し得る。第3のインターポーザ層は、有機、ガラス、又はシリコンのインターポーザ基板を含み得る。第1の複数のチップレットは、第1の電力量を使用してよく、第2の複数のチップレットは、第1の電力量よりも少ない第2の電力量を使用してよく、システムは、第1の複数のチップレットに結合されたヒートシンクを更に備える。
【0009】
[0009] 様々な実施形態の性質及び利点は、本明細書及び図面の残りの部分を参照することによって更に理解することができ、その場合、類似する設定要素を指すために同様な参照番号が幾つかの図面を通して使用される。幾つかの事例では、複数の同様の設定要素のうちの1つを示すために、サブラベルが参照番号に関連付けられる。既存の1つのサブラベルを特定せずに、参照番号への言及がなされるときに、全てのそのような複数の類似の設定要素への言及が意図される。
【図面の簡単な説明】
【0010】
図1】[0010] 幾つかの実施形態によるチップレットベースの設計を示す。
図2A】[0011] 幾つかの実施形態によるNoPKの簡略化されたブロック図を示す。
図2B】[0012] 幾つかの実施形態による設定可能なメモリ階層を使用するNoPKの一実施態様を示す。
図3A】[0013] 幾つかの実施形態による垂直相互接続構成にあるNoPKを使用するチップレットベースの設計を示す。
図3B】[0014] 幾つかの実施形態による垂直相互接続構成にあるNoPKを使用するチップレットベースの設計の3Dビューを示す。
図4】[0015] 幾つかの実施形態による2D設計を利用するNoPKを有するチップレットベースのシステムを示す。
図5】[0016] 幾つかの実施形態によるチップレットをNoPK200に接続するためにTSVを使用するチップレットベースのシステムを示す。
図6】[0017] 幾つかの実施形態によるNoPKを使用して複数のチップレット間のトラフィックをルーティングする方法のフローチャートを示す。
図7】[0018] 様々な実施形態が実装され得る例示的なコンピュータシステム及びプロセッサを示す。
【発明を実施するための形態】
【0011】
[0019] 従来のモノリシックベースの設計が、製造することがますます高価になるにつれて、歩留まりを改善し、製造コストを削減し、設計のモジュール性を向上させるための、システムアーキテクチャにおける成功した代替手段として、チップレットが出現した。概して、チップレットは、パッケージタイプではなく、むしろパッケージングアーキテクチャの一部である。各チップレットは、シリコンウエハから製造された個別のダイを含み得る。システムの全ての機能性(例えば、中央処理装置(CPU)、メモリ、グラフィック処理ユニット(GPU)、様々な周辺機器など)を、1つの大きなモノリシックダイ上に製造する代わりに、チップレットベースのシステムは、これらの機能性を別個のダイの中に分離する。次いで、別個のダイは、同じ機能性を実行するために共にパッケージングされ得る。個々のダイをより小さくすることによって、システム全体の歩留まり及び製造コストが改善される。
【0012】
[0020] 図1は、幾つかの実施形態によるチップレットベースのシステム100を示す。複数のチップレット104は、1以上のシリコンウエハから別々のダイとして製造され得る。チップレット104は、特定用途向けシステム・オン・チップ(SOC)、GPU、デジタルシグナルプロセッサ(DPS)、人工知能(AI)アクセラレータ、様々なコーデック、Wi-Fi通信モジュール、メモリコントローラ、キャッシュ、入/出力(I/O)周辺機器などの、複数の異なる機能を含み得る。これらのチップレット104の各々は、別々のダイ上に製造されるが、分散されたやり方ではあるが、同様なモノリシック設計によって実行され得るのと実質的に同じ機能を実行するように、様々なオプションを使用して共に接続され得る。
【0013】
[0021] チップレットベースのシステムは歩留まり及び製造コストを改善するが、このような設計はまた、異なるサブシステム間の通信を大幅に複雑にする。モノリシック設計では、これらのサブシステムが、統一されたバスアーキテクチャを使用して通信し得るか、又はサブシステム間で情報を渡すためのネットワークオンチップ(NoC)ファブリックを使用して通信し得る。しかし、これらのサブシステムを個別のチップレット104に分離したときに、チップレット104間のルーティングは、チップレットの各設計及び配置ごとに個別に考慮される必要がある。様々なチップレット104を共にネットワーク化するために、チップレットベースのシステム100は、典型的には、統一された設計として共同設計され、製造されなければならない。言い換えると、ルーティングネットワークが、設計及び実装され得る前に、チップレット104の種類及び物理的配置が、先ず確立されなければならない。これは、チップレットベースの設計の範囲を大幅に制限する。結果として、最近のチップレットベースの設計のほとんどは、単一のチップエコシステム(例えば、ARM、ARC、x86)からのアーキテクチャを使用して、統一された通信プロトコル(例えば、PCIe、CCIX/CXL、AXI、AMBAなど)を用いて、単一の事業体によって設計及び製造されている。したがって、現在のチップレットベースの設計は、典型的には、異なるチップレットエコシステム及び異なるプロトコル間の相互運用性を容易に実現できず、システム設計者が、設計を実施するために利用可能であり得るフルレンジのチップレットを使用することを妨げる。その代わりに、システム設計者は、単一の通信フレームワーク及びエコシステム内で共同設計されたチップレットに制限される。
【0014】
[0022] 例えば、あるチップメーカーは、チップレットベースのアーキテクチャ全体にわたってデータ及び制御の伝送を容易にする独自のシステム相互接続アーキテクチャを使用している。しかし、このファブリックは、最大8つのCPU複合体をサポートし、2Dパッケージングで実装され得るが、市販のチップレットとは互換性がない。更に、このファブリックは、単一の調停ポイント(arbitration point)を含むため、様々なサイズのチップレットシステムに対応するようスケーリングできない。別の1つのチップメーカーは、シリコン貫通ビア(TSV)を使用する3Dベースのチップレットアーキテクチャを実装している。この設計では、トップレベルのダイが、CPU、GPU、メモリコントローラなどを含む幾つかの機能ブロックを有するモノリシックコンピュートダイを含む。ボトムダイは、PCIeを使用するI/Oブロックを含む。トップ及びボトムダイは、TSVを使用して接続されている。これらのアーキテクチャは、2D手法に比べて配線長が短縮され、消費電力が低減される一方で、TSVが正しい機能ブロックに整列して接続されるように、ボトムダイとトップダイとが共同設計される必要がある。このため、これらのダイを独立して使用することができず、システムの反復ごとに特定のTSVベースの相互接続を設計する必要がある。これらのソリューションのいずれも、様々なソースからのチップレットを使用するスケーラブルな市販の設計とは互換性がない。
【0015】
[0023] 本明細書で説明される複数の実施形態は、それ自体のダイ上で独立して製造されるスケーラブルな相互接続を使用することにより、これらの技術的課題及び他の技術的課題を解決する。このソリューションは、本明細書では「ネットワーク・オン・パッケージ」(NoPK)と呼ばれ、専用のダイ、パッケージ、又はチップレットとして設計され、スケーラブルなシステムにおいて他のチップレットと統合され得る。NoPKは、様々な市販のチップレットを接続し、それらにわたる通信を容易にする。既存の設計と比較すると、NoPK層は、様々なエコシステムからの市販のチップレットで働き得る汎用スケーラブルファブリックである。NoPKは、TSVを使用して、2D手法を使用して、及び垂直相互接続を用いた3D手法を使用して実装され得る。更に、NoPKは、異なるチップレットタイプ間の通信を容易にするために、インターフェースブリッジを使用して複数のプロトコルをサポートする。
【0016】
[0024] 図2Aは、幾つかの実施形態によるNoPK200の簡略化されたブロック図を示す。NoPK200は、チップレットの任意の組み合わせに対応するように実装され得るデジタルアーキテクチャであり得る。このデジタルアーキテクチャは、専用のダイ上に実装され、それ自体のチップレット又はパッケージと見做され得る。したがって、NoPK200は、チップレットベースのシステムを作り上げる周囲のチップレットのいずれからも物理的に分離し得る。図2Aで示されているNoPK200のブロック図は、任意のサイズのチップレットベースのシステムの要求を満たすために、必要に応じてスケーリングされ得る。たとえば、NoPK200が「テープアウト(tape out)」される前に、設計は、特定の設計によって必要とされ得るように、更なるルーティングホップ、インターフェースブリッジ、マイクロコントローラ、メモリモジュール、メモリコントローラなどを追加し得る。したがって、図2Aで示されているNoPK200は、例示としてのみ提供され、限定を意図するものではない。他の複数の実施態様は、限定なしに、より多い又はより少ないインターフェースブリッジ、コントローラ、ルーターホップ、メモリなどを含み得ることが理解されよう。以下で説明される特徴は、任意のサイズ又は構成要素数のNoPK200の複数の実施態様に適用され得る。
【0017】
[0025] NoPK200は、1以上のインターフェースブリッジ204を含み得る。インターフェースブリッジは、周囲のチップレットによって使用され得る様々なプロトコルを共通プロトコルに変換するために設けられている。それによって、異なるメーカーからのチップレットが、互いに通信し得る。インターフェースブリッジ204の各々は、チップレット市場で入手可能であり得る利用可能な通信プロトコル又はバスプロトコルのいずれかを受け取るようにプログラムされ得る。概して、インターフェースブリッジ204は、異なるプロトコルをサポートし、異なるエコシステム及びメーカーからのダイ又はチップレットが、単一の統一された設計で使用されることを可能にし得る。例えば、これらのプロトコルは、PCIe、CCIX、CXL、AXI、AMBAなどを含み得る。
【0018】
[0026] インターフェースブリッジ204は、利用可能なプロトコルのいずれかを受け取り、そのプロトコルをNoPK200によって使用される統一されたプロトコルに変換するようにプログラムされ得る。本明細書で使用されるときに、NoPK200を介して受け取られ及び/又はルーティングされるチップレット間の通信及び伝送は、概して、「トラフィック」と呼ばれる。トラフィックは、NoPK200によって受け取られ得る、電力信号、通信信号、データ信号、メモリ要求、及び/又は他の電子的伝送を含む、任意の信号を含み得る。例えば、インターフェースブリッジ204は、インターフェースブリッジ204‐1においてマイクロプロセッサからPCIeトラフィックを受け取り得る。インターフェースブリッジ204‐1は、PCIeトラフィックを汎用パケット化フォーマットに変換し、変換されたパケットをNoPK200のルーティングネットワークを介してインターフェースブリッジ204‐3にルーティングし得る。これは、設計内の他のチップレットのいずれかによって使用されない汎用パケットプロトコルを含み得る。次いで、インターフェースブリッジ204‐3は、汎用パケット化フォーマットをAXIフォーマットに変換して、別のチップレットのWi-Fiモジュールと通信し得る。
【0019】
[0027] 幾つかの実施形態では、インターフェースブリッジ204が、入って来るトラフィックを、入って来るトラフィックによって使用されるプロトコルのうちの1つに変換し得る。上の一実施例では、インターフェースブリッジ204‐1が、マイクロプロセッサからPCIeトラフィックを受け取り、PCIeトラフィックをルーティングネットワークに単に渡し得る。NoPK200のルーティングネットワークは、PCIeをその内部通信プロトコルとして使用し得る。PCIeトラフィックが、インターフェースブリッジ204‐3によって受け取られたときに、それはAXIフォーマットに変換されて、他のチップレットのWi-Fiモジュールと通信し得る。これらの実施形態は、任意の専用又は汎用パケットフォーマット又はプロトコルを必要としないが、その代わりに、周囲のチップレットのプロトコルのうちの1つを使用し得る。
【0020】
[0028] 図2Aの一実施例では、インターフェースブリッジ204が、NoPK200の3つの側部に配置されている。他の実施形態では、更に、周囲のチップレットの接続要件及び配向に応じて、NoPK200の1つ、2つ、又は4つの側部に沿って、インターフェースブリッジ204を配置し得る。以下で説明されることとなるように、NoPK200の外周に沿ってインターフェースブリッジ204を配向することにより、NoPK層の上方及び/又は下方からの垂直相互接続が可能になる。代替的に、2D実装はまた、インターフェースブリッジ204を介してNoPK200の周囲にある隣接するチップレットからの配線を受容することもできる。
【0021】
[0029] NoPK200は、インターフェースブリッジ204から受け取られたトラフィックを導く複数の内部ルーター又はホップを含む、内部ルーティングネットワークを含み得る。上の一実施例を続けると、PCIeトラフィックが、インターフェースブリッジ204‐1で受け取られて、汎用パケットフォーマットに変換されたときに、これらのパケットは、ルーターホップ202を介して内部ルーティングネットワークを通して渡され得る。それは、トラフィックが、インターフェースブリッジ204‐3に到達するまでである。インターフェースブリッジ204‐3で、トラフィックは、AXIに変換されて、Wi-Fiチップに渡され得る。
【0022】
[0030] NoPK200はまた、コントローラ211も含み得る。コントローラ211は、マイクロコントローラ、マイクロプロセッサ、及び/又は指示命令を実行するように設定されたプログラム可能な論理デバイス若しくはプロセッサを使用して実装され得る。コントローラ211は、周囲のチップレットの必要に応じて、インターフェースブリッジ204及び/又はルーティングネットワークをプログラムし得る。これにより、NoPKアーキテクチャは、異なるチップレットエコシステムや通信プロトコルに適応するのに十分な柔軟性を有することができる。これによりまた、NoPKアーキテクチャは、任意の数のチップレットの必要を満たすためにスケーリングが可能になる。例えば、コントローラ211は、プロトコル変換を制御するインターフェースブリッジ204内の設定レジスタに読み書きすることができる。コントローラ211はまた、インターフェースブリッジ204間の接続を制御するルーティングネットワーク内の設定レジスタにも読み書きすることができる。
【0023】
[0031] 上の一実施例を続けると、コントローラ211は、インターフェースブリッジ204‐1内の設定レジスタに設定値を書き込むことができる。これにより、インターフェースブリッジ204‐1は、マイクロプロセッサから受け取ったトラフィックを、PCIeからルーティングネットワーク内で使用される共通プロトコルに変換することができる。コントローラ211はまた、マイクロプロセッサからインターフェースブリッジ204‐1で受け取ったトラフィックをインターフェースブリッジ204‐3にルーティングする設定レジスタに値を書き込むこともできる。これにより、インターフェースブリッジ204‐1から送られたパケットを、インターフェースブリッジ204‐3の特定のポート又は位置にアドレス指定することができる。コントローラ204は、更に、インターフェースブリッジ204‐1から内的に受け取ったトラフィックをAXIに変換して外部チップレットのWi-Fiモジュールに送らせるインターフェースブリッジ204‐3に設定値を書き込むことができる。
【0024】
[0032] NoPK200に接続されたチップレットの種類に基づいて、インターフェースブリッジ及び/又はルーティングネットワークをプログラムすることに加えて、コントローラ211はまた、ルーティングネットワークを通るトラフィックにQoSポリシーを適用するために、ルーターホップ202における設定レジスタにも読み書きすることができる。例えば、コントローラ211によって提供される設定可能性によって、ルーターホップ202は、指定された外部チップレットとの間のトラフィックを優先させることができる。上の一実施例を続けると、マイクロプロセッサチップレットからNoPK200を介してWi-Fiモジュールチップレットにルーティングされるトラフィックは、GPUを実装するチップレットとディスプレイドライバを実装するチップレットとの間の通信よりも、ルーターホップ202によって優先され得る。したがって、コントローラ211は、設計内の一対のチップレット間のトラフィック、設計内の特定のチップレットとの間のトラフィック、設計内の任意のチップレット間の特定の種類のトラフィックなどを優先するように、ルーティングネットワークをプログラムし得る。
【0025】
[0033] したがって、コントローラ211は、NoPK200に接続されたチップレットの種類に基づいて、NoPK200の設定レジスタをプログラムし得る。チップレットの種類は、インターフェースブリッジによって使用されるプロトコル、及びインターフェースブリッジが様々な利用可能なプロトコルを変換する方法を制御する対応する設定値を決定し得る。チップレットの種類はまた、チップレットによって使用される周波数/電圧も決定し得る。設定レジスタは、インターフェースブリッジがチップレットと適正に相互作用するようにプログラムされ得る。更に、チップレットの種類とNoPKへのそれらの個々の接続とを使用して、ルーティングネットワークがシステム内の異なるチップレット間のトラフィックをルーティングするための設定レジスタをプログラムすることができる。
【0026】
[0034] コントローラ211はまた、チップレットによって実行されるトラフィック及び動作を監視するテレメトリエンジンであって、チップレットベースのシステムによって処理されるデータの統一されたビューを報告し戻すテレメトリエンジンも含み得る。コントローラ211は、ルーティングネットワークを通して渡されるトラフィックのいずれかをサンプリング及び/又は記録し得る。コントローラ211はまた、例えば、プラットフォームパッケージ内のチップレットのいずれかに関連付けられたパフォーマンスレジスタを読み取ることによって、チップレットのいずれかからのデータを捕捉することもできる。次いで、コントローラ211は、テレメトリデータをオンボードメモリ内に、メモリコントローラ213を介してオフボードメモリ内に記憶し、又はそのテレメトリデータを外部デバイスに送信することができる。例えば、コントローラ211は、インターフェースブリッジ204を介して、バス接続を介して、テレメトリデータをチップレットベースのシステムの外側の監視コンピュータシステムに送信し得る。代替的に、コントローラ211は、インターフェースブリッジ204を介して、テレメトリデータをWi-Fiモジュールを有するチップレットに送信し得る。Wi-Fiモジュールを有するチップレットは、テレメトリデータを監視システムに送信する。他の実施形態は、テレメトリデータをNoPK200のSRAMモジュール内に記憶し得る。それによって、テレメトリデータは、必要とされるときにダウンロード及び/又は送信され得る。これにより、エンドユーザは、データの統一されたビューを得ることができ、NoPK200を通過するトラフィックにおいて及び/又は周囲のチップレットの動作において生じ得る任意のボトルネックを理解し/それに対処することができる。
【0027】
[0035] 幾つかの実施形態では、コントローラ211がまた、NoPK200の電力管理を制御するために、追加の設定レジスタをプログラムすることもできる。例えば、コントローラ211は、ルーティングネットワークにおいてトラフィックが閾値レベルを下回ったときに、ルーターホップ202のうちの1以上をシャットダウンし得る。コントローラ211はまた、閾値数よりも少ない外部チップレットを使用する設計について、ルーターホップ202のうちの1以上をシャットダウンすることもできる。これにより、コントローラ211は、NoPK200によって使用される電力を最適化し、この電力消費をチップレットベースのシステム全体の必要に合わせることが可能になる。コントローラ211はまた、周囲のチップレットのリアルタイムの要求に基づいて、必要に応じてインターフェースブリッジ204及び/又はインターフェースブリッジ204の一部をオン/オフするように設定され得る。例えば、Wi-Fiチップレットが、5秒ごとに100msのウインドウの期間だけアクティブである場合、Wi-Fiチップレットに接続された対応するインターフェースブリッジ204‐3は、送信ウインドウと送信ウインドウとの間にシャットダウンされ得る。
【0028】
[0036] コントローラ211はまた、チップレットベースのシステム内の異なるチップレットによって使用される異なるレベルの動的電圧及び周波数スケーリング(DVFS)に適合するように、インターフェースブリッジ204及び/又はルーティングネットワークをプログラムすることもできる。例えば、様々なチップレットは、個々のチップレットによって使用される電力量及び速度設定を調整するために、異なる電圧及び/又は周波数スケーリングを使用し得る。コントローラ211は、接続されたチップレットのDVFS設定に対応するために、異なる周波数で及び/又は異なる電圧で動作するようにインターフェースブリッジ204をプログラムし得る。チップレットは、動作中にそれらのDVFS設定を調整し得るので、コントローラ211は、動作中にインターフェースブリッジ204及び/又はルーティングネットワークをプログラムし得ることを理解されたい。例えば、コントローラ211は、NoPK200が製造中に複数のチップレットに物理的に接続された後で、最初にインターフェースブリッジ204及び/又はルーティングネットワークをプログラムし得る。コントローラ211はまた、NoPK200がチップレットからトラフィックを受け取っている及びルーティングしているときに、動作中にインターフェースブリッジ204及び/又はルーティングネットワークを動的にプログラムすることもできる。
【0029】
[0037] 図2Bは、幾つかの実施形態による設定可能なメモリ階層を使用するNoPK200の一実施態様を示す。この実施態様は、上述されたように、NoPK200の特徴の全てを含んでよく、メモリコントローラ213を更に含んでよい。メモリコントローラ213は、NoPK200を介してアクセス可能であり、接続されたチップレットのいずれについても利用可能であり得る。メモリコントローラ213は、NoPK200の外部にあるメモリデバイスに通信可能に結合され得る。例えば、周囲のチップレットの1つは、メモリコントローラ213を介してアクセス可能なSRAMに含まれ得る。
【0030】
[0038] 更に、NoPK200は、図2Bで示されているように、ルーティングネットワークのレーン間のスペース内に位置付けられた分散型SRAMモジュール220を含み得る。これらのSRAMモジュール220は、キャッシュとして又はソフトウェア管理型バッファーとして設定され得る。SRAMモジュール220は、コントローラ211によって設定可能であり得る。SRAMモジュール220は、キャッシュとしてチップレットベースのシステムをサポートし得る。キャッシュは、直接的にメモリマッピングされてもよい。コントローラ211は、最近使用された(Least Recently Used:LRE)、先入れ先出し(First In First Out:FIFO)、及び/又は任意の他のキャッシュポリシーなどの、様々な退避/置換ポリシーを実装するように、SRAMモジュール220を設定し得る。これにより、コントローラ211は、適応可能なメモリ階層としてSRAMモジュール200を使用することができる。適応可能なメモリ階層は、チップレットによって提供される種々の使用事例及びワークロードに合わせて使用中に設定され得る。
【0031】
[0039] 図3Aは、幾つかの実施形態による垂直相互接続構成にあるNoPK200を使用するチップレットベースの設計を示す。この実施例では、NoPK200が、高密度インターポーザ層308上に配置され得る。高密度インターポーザ層308は、NoPK200のパッケージの下側のパッドに接続する、インターポーザの内側の高密度ルーティングを含み得る。高密度インターポーザ層308は、有機材料、ガラス、シリコン、及び/又は任意の他のインターポーザ材料を使用して製作され得る。したがって、NoPK200は、独自のチップレット設計においてしばしば必要とされる特定の種類のインターポーザ材料に制限されない。
【0032】
[0040] システムは、互いに垂直方向に積み重ねられた複数の層を含み得る。この実施例では、最上層が、複数のチップレット304を有する別の高密度インターポーザ層306を含み得る。これらの層を区別するために、最上層は、第1の複数のチップレット304を有する第1のインターポーザ層を有する第1の層と呼ばれ得る。同様に、最下層は、第2のインターポーザ層310上に配置された第2の複数のチップレット302を含み得る。第2のインターポーザ層310は、システム300の下部上のBGA表面実装パッド314に接続する貫通ビアを有する高密度インターポーザを含み得る。図3Aで示されているこれらの3つの層は、例示としてのみ提供され、限定を意図していないことに留意されたい。他の実施形態は、対応するインターポーザ層上に配置されたより多い又はより少ないチップレットを有するより多い又はより少ない層を含み得る。
【0033】
[0041] 様々な層間の相互接続は、層間のトラフィックがルーティングされ得る垂直相互接続312を含み得る。例えば、第1の複数のチップレット304は、トラフィックが垂直相互接続312を通過することを必要とすることなしに、第1のインターポーザ層を介して互いに通信し得る。同様に、第2の複数のチップレット302は、第2のインターポーザ層310を介して互いに通信し得る。しかし、第1の複数のチップレット304及び/又は第2の複数のチップレット302からのトラフィックは、垂直相互接続312を通過して、第3のインターポーザ層308の中へ、及びNoPK200の中へ入り得る。次いで、NoPK200は、上述されたように、異なる通信プロトコルを変換し、その内部ルーティングネットワークを通して信号をルーティングし得る。幾つかの実施形態では、チップレット302、304の全てが、それらのそれぞれのインターポーザ層310、306を介して互いに直接通信することなしに、NoPK200を介して互いに通信し得る。この多用途性により、2D平面内の全てのチップレットが、同じ2D平面内の他のチップレットと通信できるのみならず、オンチップメモリやオフチップメモリと通信できる。この手法の重要な利点は、そのスケーラビリティとプログラム可能性がチップレット302、304の任意の配置に対応できるので、NoPK200と共にあらゆる既存の又は将来のダイ又はチップレットを使用できることである。図示されているように、垂直相互接続は、第1のインターポーザ層306、第2のインターポーザ層310、及び第3のインターポーザ層308を物理的に分離し得る。
【0034】
[0042] 図3Bは、幾つかの実施形態による垂直相互接続構成にあるNoPK200を使用するチップレットベースの設計の3Dビューを示す。3D設定を使用すると、最上層上の第1の複数のチップレット304は、電力消費に従ってグループ化され得る。例えば、比較的電力の高いチップレットを、第1のインターポーザ層306上に配置することができる。これらの高電力チップレットは、DSP304‐1、各種SoC304‐2、GPU304‐3、ハードウェアアクセラレータ304‐4、プロセッサ、及び/又は他の高電力チップレットを含み得る。逆に、ボトムレベルの第2のインターポーザ層310上に配置される第2の複数のチップレット302は、CODEC302‐1、無線通信モジュール302‐2、通信インターフェース302‐3、周辺機器インターフェースなどの、より低い電力のチップレットを含み得る。概して、第1の複数のチップレット304のいずれかによって使用される電力は、第2の複数のチップレットのいずれかによって使用される電力と比較されてよく、第1の複数のチップレットは、より多くの電力を使用すると判断されてよい。特に電力を限定する必要はない。明示的には図示されていないが、システム300の最上層は、第1の複数のチップレット304のうちの1以上に結合され得る外部ヒートシンクを含み得る。
【0035】
[0043] NoPK200を使用するチップレットの垂直3Dスタックは、従来のNoCモノリシック設計と比較して特定の利点をもたらし得る。具体的には、この配置が、既存の市販のダイ又はチップレットを用いた3Dトポロジーを実現できる。それはまた、種々の使用事例、種々のワークロード、及び種々の用途要件をサポートするために、必要に応じて様々な設定を構築することを可能にする、非常に広い帯域幅で低レイテンシーの接続ファブリックを実現できる。インターフェースブリッジは、異なるプロトコルをサポートしてよく、異なるエコシステムからのダイ又はチップレットが、様々なプロトコルと共に使用されることを可能にし得る。システムはまた、異なる電力要件や異なるシステムサイズを満たすためにスケーリングされ得る。
【0036】
[0044] 図4は、幾つかの実施形態による2D設計を利用するNoPKを有するチップレットベースのシステムを示す。NoPK200は、上述された3D垂直スタック以外にも、多くの異なる設計トポロジーに対応する。この実施例では、NoPK200が、システム内で使用されるチップレットと同じ基板420上に実装され得る。基板420は、上述されたインターポーザ層、シリコン基板、及び/又は任意の他の種類の基板であり得る。垂直相互接続を通過する代わりに、チップレット間の接続が、基板420を通してNoPK200のインターフェースブリッジの中に直接ルーティングされ得る。例えば、プロセッサチップレット408、Wi-Fiチップレット402、周辺ドライバチップレット404、メモリチップレット406、AIアクセラレータチップレット410などは、全て同じ基板420上に実装され、基板420内の配線を介してNoPK200のインターフェースブリッジに接続され得る。
【0037】
[0045] 図5は、幾つかの実施形態によるチップレットをNoPK200に接続するためにTSVを使用するチップレットベースのシステム500を示す。この実施例では、最上層上の第1の複数のチップレット304が、TSVを使用してNoPK200のインターフェースブリッジに直接接続され得る。同様に、第2の複数のチップレット302は、TSVを使用してNoPK200に直接接続されてよく、ならびにインターポーザ又は基板510に接続されてよい。TSV設計は、チップレットとNoPK200との間に高レベルの集積化を提供し得る。しかし、これは、次の点でトレードオフを必要とする。すなわち、チップレットのTSVが、NoPK200の対応するTSVと位置合わされることを確実にするために、チップレットとNoPK200とは、共同設計される必要があり得る。垂直相互接続を使用する3D手法とは異なり、2D平面内のチップレットの各々は、NoPK200内のその個々のルーティングストップにTSVベースで直接接続される可能性があり得る。このトレードオフにより、NoPK200と周辺のチップレットとの間の通信のレイテンシーを最低限に抑えることが可能になる。
【0038】
[0046] 図6は、幾つかの実施形態によるNoPKを使用して複数のチップレット間のトラフィックをルーティングする方法のフローチャート600を示す。この方法は、上述されたように、NoPKによって実施され得る。例えば、この方法の動作は、NoPKのルーティングネットワーク内のコントローラ、インターフェースブリッジ、及び/又はルーターホップによって実行され得る。NoPKに関連する上述された特徴のいずれも、該方法の以下の動作と併せて使用され得る。
【0039】
[0047] 該方法は、複数のチップレットを接続するために、複数のインターフェースブリッジとルーティングネットワークとをプログラムすることを含み得る(602)。上述されたように、NoPKのコントローラは、ルーターホップ及び/又はインターフェースブリッジ内の設定レジスタに読み書きして、それらの動作を指定し得る。例えば、コントローラは、入って来る通信プロトコルならびに出て行く通信プロトコルを決定するために、インターフェースブリッジ内のレジスタに設定値を書き込み得る。コントローラは、あるチップレットから別のチップレットへのトラフィックを優先するために、ルーターホップに設定値を書き込み得る。コントローラはまた、図2に関連して上述されたように、トラフィックがシステム内のあるチップレットから別のチップレットにルーティングされる方法を指定するために、インターフェースブリッジ及び/又はルーターホップに設定値を書き込み得る。
【0040】
[0048] 該方法はまた、複数のインターフェースブリッジにおいて複数のチップレットからトラフィックを受け取ることも含み得る(604)。複数のチップレットは、複数の異なるプロトコルを使用することができる。上で詳細に説明されたように、これにより、NoPKは、任意の異なるエコシステムからのチップレットと相互作用することができ、任意の異なるアーキテクチャを使用し、任意の異なるプロトコルを用いて通信する。該方法は、更に、複数のインターフェースブリッジにおいてトラフィックを共通プロトコルに変換することも含み得る(606)。共通プロトコルは、NoPKによって内的に使用される汎用の、独自の、及び/又は単純なパケット化されたプロトコルであり得る。代替的に、共通プロトコルは、周囲のチップレットのうちの1つによって使用されるプロトコルのうちの1つであり得る。
【0041】
[0049] 該方法は、更に、共通プロトコルを使用して複数のインターフェースブリッジ間でルーティングネットワークを介してトラフィックをルーティングすることを含み得る(608)。インターフェースブリッジからのパケットは、NoPKのルーティングネットワークを介して、他のチップレットに接続された他のインターフェースブリッジへ送信され得る。これにより、システム内の全てのチップレットがNoPKを介して互いに通信できるようになる。
【0042】
[0050] 図6で示されている特定のステップは、様々な実施形態によるスケーラブルなネットワーク・オン・パッケージ内の複数のチップレット間でトラフィックをルーティングする特定の方法を提供することを理解されたい。ステップの他のシーケンスも、代替的な実施形態に従って実行されてよい。例えば、代替的な実施形態は、上述のステップを異なる順序で実施し得る。更に、図6で示されている個々のステップは、個々のステップに適するように様々なシーケンスで実行され得る複数のサブステップを含み得る。更に、特定の用途に応じて、更なるステップが追加されるか、又は取り除かれてもよい。多くの変形、修正、及び代替案も、本開示の範囲内にある。
【0043】
[0051] 上述されたNoPKのコントローラは、プロセッサを使用して実装され得る。更に、コントローラは、汎用コンピューティングシステムなどの外部システムと通信し得る。例えば、コントローラは、ユーザによる又は自動化されたプログラムによる表示及び/又は分析のために、テレメトリ情報をコンピュータシステムに通信し得る。以下では、汎用コンピューティングシステムにおいて及び/又はNoPKにおいて制限なく使用され得るプロセッサの実現可能な説明を提供する。
【0044】
[0052] 図7は、様々な実施形態が実装され得る例示的なコンピュータシステム700を示す。システム700を使用して、上述されたコンピュータシステムのいずれをも実装することができる。図面で示されているように、コンピュータシステム700は、バスサブシステム702を介して幾つかの周辺サブシステムと通信する処理ユニット704を含む。これらの周辺サブシステムは、処理加速ユニット706、I/Oサブシステム708、ストレージサブシステム718、及び通信サブシステム724を含み得る。ストレージサブシステム718は、有形なコンピュータ可読ストレージ媒体722及びシステムメモリ710を含む。
【0045】
[0053] バスサブシステム702は、コンピュータシステム700の様々な構成要素及びサブシステムを、意図されたように互いに通信させるための機構を提供する。バスサブシステム702は、単一のバスとして概略的に図示されているが、バスサブシステムの代替的な複数の実施形態は、複数のバスを利用し得る。バスサブシステム702は、メモリバス又はメモリコントローラ、周辺バス、及び様々なバスアーキテクチャのいずれかを使用するローカルバスを含む、幾つかの種類のバス構造のうちのいずれかであり得る。例えば、このようなアーキテクチャは、業界標準アーキテクチャ(ISA)バス、マイクロチャネルアーキテクチャ(MCA)バス、改良された業界標準アーキテクチャ(EISA)バス、ベサ(VESA)ローカルバス、及び周辺構成要素相互接続(PCI)バスを含み得る。これらは、IEEE P1386.1規格に準拠したメザニンバスとして実装され得る。
【0046】
[0054] 処理ユニット704は、1以上の集積回路(例えば、従来のマイクロプロセッサ又はマイクロコントローラ)として実装することができ、コンピュータシステム700の動作を制御する。1以上のプロセッサが、処理ユニット704内に含まれ得る。これらのプロセッサは、シングルコア又はマルチコアプロセッサを含み得る。特定の複数の実施形態では、処理ユニット704が、各処理ユニット内に含まれるシングル又はマルチコアプロセッサを有する1以上の独立した処理ユニット732及び/又は734として実装され得る。他の実施形態では、処理ユニット704がまた、2つのデュアルコアプロセッサを単一のチップに統合することによって形成されるクアッドコア処理ユニットとしても実装され得る。
【0047】
[0055] 様々な実施形態では、処理ユニット704が、プログラムコードに応じて様々なプログラムを実行し、複数の同時実行プログラム又はプロセスを維持し得る。所与の時点で、実行されるプログラムコードの一部又は全部は、(1以上の)プロセッサ704内及び/又はストレージサブシステム718内に常駐し得る。適切なプログラミングにより、(1以上の)プロセッサ704は、上述された様々な機能性を提供し得る。コンピュータシステム700は、更に、処理加速ユニット706を含み得る。処理加速ユニット706は、デジタル信号プロセッサ(DPS)や専用プロセッサなどを含み得る。
【0048】
[0056] I/Oサブシステム708は、ユーザインターフェース入力デバイス及びユーザインターフェース出力デバイスを含み得る。ユーザインターフェース入力デバイスは、キーボード、マウスやトラックボールなどのポインティングデバイス、ディスプレイの中に組み込まれたタッチパッドやタッチスクリーン、スクロールホイール、クリックホイール、ダイヤル、ボタン、スイッチ、キーパッド、音声コマンド認識システムを有する音声入力デバイス、マイクロホン、及び他の種類の入力デバイスを含み得る。ユーザインターフェース入力デバイスは、例えば、ジェスチャーや音声コマンドを使用した自然なユーザインターフェースを介して、ユーザがマイクロソフトXbox(登録商標)360ゲームコントローラなどの入力デバイスを制御し、それと相互作用することを可能にするマイクロソフトKinect(登録商標)モーションセンサなどの、モーションセンシング及び/又はジェスチャー認識デバイスを含み得る。ユーザインターフェース入力デバイスはまた、ユーザからの目の活動(例えば、写真撮影中やメニュー選択中の「まばたき」)を検出し、目のジェスチャーを入力として入力デバイス(例えば、Google Glass(登録商標))の中に変換する、Google Glass(登録商標)まばたき検出器などの目のジェスチャー認識デバイスも含み得る。更に、ユーザインターフェース入力デバイスは、ユーザが音声コマンドを介して音声認識システム(例えば、Siri(登録商標)ナビゲーター)と対話することを可能にする、音声認識センシングデバイスを含み得る。
【0049】
[0057] ユーザインターフェース入力デバイスはまた、非限定的に、三次元(3D)マウス、ジョイスティック又はポインティングスティック、ゲームパッド及びグラフィックタブレット、並びに、スピーカー、デジタルカメラ、デジタルビデオカメラ、ポータブルメディアプレーヤー、ウェブカメラ、画像スキャナ、指紋スキャナ、バーコードリーダ3Dスキャナ、3Dプリンター、レーザ距離計、及び視線追跡デバイスなどのオーディオ/ビジュアルデバイスも含み得る。更に、ユーザインターフェース入力デバイスは、例えば、コンピュータ断層撮影装置、磁気共鳴画像装置、ポジトロン断層法(PET)、医療用超音波検査装置などの、医療用画像入力装置を含み得る。ユーザインターフェース入力デバイスはまた、例えば、MIDIキーボードやデジタル楽器などの音声入力デバイスも含み得る。
【0050】
[0058] ユーザインターフェース出力デバイスは、ディスプレイサブシステム、インジケータライト、又は音声出力デバイスなどの非視覚ディスプレイを含み得る。ディスプレイサブシステムは、ブラウン管(CRT)、液晶ディスプレイ(LCD)やプラズマディスプレイを使用するものなどのフラットパネルデバイス、投影デバイス、タッチスクリーンであり得る。概して、「出力デバイス」という用語の使用は、コンピュータシステム700からユーザや他のコンピュータへ情報を出力するための全ての可能な種類のデバイス及び機構を含むことを意図している。例えば、ユーザ出力デバイスは、非限定的に、モニタなどのテキスト、グラフィック、音声/動画情報を視覚的に伝える様々なディスプレイデバイス、プリンター、スピーカー、ヘッドフォン、カーナビゲーションシステム、プロッター、音声出力デバイス、モデムを含み得る。
【0051】
[0059] コンピュータシステム700は、目下システムメモリ710内に位置付けられるように図示されているソフトウェアを含む、ストレージサブシステム718を備え得る。システムメモリ710は、処理ユニット704でロード可能及び実行可能なプログラム指示命令、ならびにこれらのプログラムの実行中に生成されるデータを記憶し得る。
【0052】
[0060] コンピュータシステム700の設定及び種類に応じて、システムメモリ710は、揮発性(ランダムアクセスメモリ(RAM))及び/又は不揮発性(読み取り専用メモリ(ROM)やフラッシュメモリなど)であり得る。RAMは、典型的には、処理ユニット704によって直ちにアクセス可能な並びに/又は処理ユニット704によって動作され及び実行されているデータ及び/又はプログラムモジュールを含む。幾つかの実施態様では、システムメモリ710が、スタティックランダムアクセスメモリ(SRAM)やダイナミックランダムアクセスメモリ(DRAM)などの複数の異なるタイプのメモリを含み得る。幾つかの実施態様では、起動中などに、コンピュータシステム700内の要素間で情報を転送するのに役立つ基本ルーチンを含む、基本入/出力システム(BIOS)が、典型的にはROM内に記憶され得る。限定ではなく例示として、システムメモリ710はまた、アプリケーションプログラム712、プログラムデータ714、及びオペレーティングシステム716も図示している。アプリケーションプログラム712は、クライアントアプリケーション、ウェブブラウザ、ミッドティアアプリケーション、リレーショナルデータベース管理システム(RDBMS)などを含み得る。例示として、オペレーティングシステム716は、マイクロソフトWindows(登録商標)、アップルMacintosh(登録商標)、及び/又はリナックスオペレーティングシステムの様々なバージョン、様々な市販のUNIX(登録商標)又はUNIXのようなオペレーティングシステム(様々なGNU/Linuxオペレーティングシステム、グーグルChrome(登録商標)OSなどを含むが、これらに限定されない)、並びに/又は、iOS、Windows(登録商標)Phone、Android(登録商標)OS、BlackBerry(登録商標)10 OS、及びPalm(登録商標)OSオペレーティングシステムなどの、モバイルオペレーティングシステムを含み得る。
【0053】
[0061] ストレージサブシステム718はまた、幾つかの実施形態の機能性を提供する基本プログラミング及びデータ構造を記憶するための、有形なコンピュータ可読ストレージ媒体も提供し得る。プロセッサによって実行されたときに上述された機能性を提供するソフトウェア(プログラム、コードモジュール、指示命令)は、ストレージサブシステム718内に記憶され得る。これらのソフトウェアモジュール又は指示命令は、処理ユニット704によって実行され得る。ストレージサブシステム718はまた、幾つかの実施形態に従って使用されるデータを記憶するためのリポジトリも提供し得る。
【0054】
[0062] ストレージサブシステム700はまた、コンピュータ可読ストレージ媒体722に更に接続され得るコンピュータ可読ストレージ媒体リーダー720も含み得る。それと共に、任意選択的に、システムメモリ710と組み合わせて、コンピュータ可読ストレージ媒体722は、リモート、ローカル、固定、及び/又は取り外し可能なストレージデバイスに加えて、コンピュータ可読情報を一時的及び/又はより永続的に格納、記憶、送信、及び検索するためのストレージ媒体を包括的に表し得る。
【0055】
[0063] コード又はコードの一部を含むコンピュータ可読ストレージ媒体722はまた、非限定的に、情報の記憶及び/又は伝送のための任意の方法又は技術において実装され得る、揮発性及び不揮発性、取り外し可能及び取り外し不可能な媒体などの、ストレージ媒体及び通信媒体を含む任意の適切な媒体も含み得る。これは、RAM、ROM、電子的に消去可能なプログラマブルROM(EEPROM)、フラッシュメモリ若しくは他のメモリ技術、CD-ROM、デジタル多用途ディスク(DVD)、若しくは他の光学ストレージ、磁気カセット、磁気テープ、磁気ディスクストレージ若しくは他の磁気ストレージデバイス、又は他の有形なコンピュータ可読媒体などの、有形なコンピュータ可読ストレージ媒体を含み得る。これはまた、データ信号媒体、データ伝送媒体、又は所望の情報を伝送するために使用され得る、コンピューティングシステム700によってアクセスされ得る任意の他の媒体などの、非有形なコンピュータ可読媒体も含み得る。
【0056】
[0064] 例示として、コンピュータ可読ストレージ媒体722は、取り外し不可能な不揮発性磁気媒体から読み取るか又はそれに書き込むハードディスクドライブ、取り外し可能な不揮発性磁気ディスクから読み取るか又はそれに書き込む磁気ディスクドライブ、及び、CD ROM、DVD、Blu-Ray(登録商標)ディスクなどの取り外し可能な不揮発性光ディスク又は他の光学媒体から読み取るか又はそれに書き込む光ディスクドライブを含み得る。コンピュータ可読ストレージ媒体722は、非限定的に、Zip(登録商標)ドライブ、フラッシュメモリカード、ユニバーサルシリアルバス(USB)フラッシュドライブ、セキュアデジタル(SD)カード、DVDディスク、デジタルビデオテープなどを含み得る。コンピュータ可読ストレージ媒体722はまた、フラッシュメモリベースのソリッドステートドライブ(SSD)、エンタープライズフラッシュドライブ、ソリッドステートROMなどの不揮発性メモリに基づくソリッドステートドライブ、ソリッドステートRAM、ダイナミックRAM、スタティックRAM、DRAMベースのSSD、磁気抵抗RAM(MRAM)SSD、及びDRAMとフラッシュメモリベースのSSDとの組み合わせを使用するハイブリッドSSDなどの揮発性メモリに基づくSSDも含み得る。ディスクドライブ及びそれらの関連付けられたコンピュータ可読媒体は、コンピュータ可読指示命令、データ構造、プログラムモジュール、及びコンピュータシステム700用の他のデータの不揮発性ストレージを提供し得る。
【0057】
[0065] 通信サブシステム724は、他のコンピュータシステム及びネットワークへのインターフェースを提供する。通信サブシステム724は、コンピュータシステム700からデータを受け取り、他のシステムにデータを送信するためのインターフェースとして働く。例えば、通信サブシステム724は、コンピュータシステム700がインターネットを介して1以上のデバイスに接続することを可能にし得る。幾つかの実施形態では、通信サブシステム724が、無線音声及び/又はデータネットワーク(例えば、セルラー電話技術、3G、4G、若しくはエッジ(enhanced data rates for global evolution)などの高度データネットワーク技術、WiFi(IEEE 802.11ファミリー規格、若しくは他のモバイル通信技術、又はそれらの任意の組み合わせを使用する)にアクセスするための無線周波数(RF)トランシーバ構成要素、全地球測位システム(GPS)受信器構成要素、並びに/又は他の構成要素を含み得る。幾つかの実施形態では、通信サブシステム724が、無線インターフェースに加えて又は代えて、有線ネットワーク接続性(例えば、イーサネット)を提供し得る。
【0058】
[0066] 幾つかの実施形態では、通信サブシステム724がまた、コンピュータシステム700を使用し得る1以上のユーザに代わって、構造化及び/又は非構造化データフィード726、イベントストリーム728、イベント更新730などの形態を採る入力通信も受け取り得る。
【0059】
[0067] 例示として、通信サブシステム724は、Twitter(登録商標)フィード、Facebook(登録商標)更新、リッチサイトサマリー(RSS)フィードなどのウェブフィード、及び/又は1以上のサードパーティの情報源からのリアルタイムの更新などの、ソーシャルネットワーク及び/又は他の通信サービスのユーザからデータフィード726をリアルタイムで受け取るように設定され得る。
【0060】
[0068] 更に、通信サブシステム724はまた、連続的なデータストリームの形態を採るデータを受け取るようにも設定され得る。この連続的なデータストリームは、リアルタイムイベントのイベントストリーム728及び/又はイベント更新730を含み得る。これは、本質的に連続的であり得るか又は無制限であり得、明示的な終了を伴なわない。連続的なデータを生成するアプリケーションの複数の例は、例えば、センサデータアプリケーション、ファイナンシャルティッカー、ネットワーク性能測定ツール(例えば、ネットワーク監視やトラフィック管理アプリケーション)、クリックストリーム解析ツール、自動車トラフィック監視などを含み得る。
【0061】
[0069] 通信サブシステム724はまた、構造化及び/又は非構造化データフィード726、イベントストリーム728、イベント更新730などを、コンピュータシステム700に結合された1以上のストリーミングデータソースコンピュータに通信し得る1以上のデータベースに出力するようにも設定され得る。
【0062】
[0070] コンピュータシステム700は、ハンドヘルド携帯デバイス(例えば、iPhone(登録商標)携帯電話、iPad(登録商標)コンピューティングタブレット、PDA)、ウェアラブルデバイス(例えば、Google Glass(登録商標)ヘッドマウントディスプレイ)、PC、ワークステーション、メインフレーム、キオスク、サーバラック、又は任意の他のデータ処理システムを含む、様々な種類のうちの1つであり得る。
【0063】
[0071] コンピュータ及びネットワークの性質は常に変化するため、図示されているコンピュータシステム700の説明は、特定の一実施例としてのみ企図される。図示されているよりも多い又は少ない構成要素を有する多くの他の設定が可能である。例えば、カスタマイズされたハードウェアも使用されるかもしれないし、及び/又は、特定の要素が、ハードウェア、ファームウェア、ソフトウェア(アプレットを含む)、若しくはそれらの組み合わせとして実装されるかもしれない。更に、ネットワーク入/出力デバイスなどの他のコンピューティングデバイスとの接続も採用され得る。本明細書で提供される開示及び教示に基づいて、様々な実施形態を実装するための他のやり方及び/又は方法が明らかになるはずである。
【0064】
[0072] 前述の説明では、説明の目的のために、様々な実施形態の完全な理解を提供するために、多数の特定の詳細が説明された。しかし、当業者には、これらの特定の詳細の一部がなくても、幾つかの実施形態が実施され得ることが明らかであろう。他の事例では、周知の構造及びデバイスがブロックダイアグラム形式で示される。
【0065】
[0073] 前述の説明は、例示的な実施形態のみを提供し、本開示の範囲、適用可能性、又は構成を限定することを意図しない。むしろ、様々な実施形態の前述の説明は、少なくとも1つの実施形態を実施するための実現可能な開示を提供することになる。添付の特許請求の範囲で説明される様々な実施形態の精神及び範囲から逸脱することなしに、要素の機能及び配置に様々な変更を加えることができることを理解されたい。
【0066】
[0074] 具体的な詳細は、実施形態の完全な理解を提供するために、前述の説明において与えられる。しかし、複数の実施形態は、これら具体的な詳細なしに実施可能であることが理解されるだろう。例えば、回路、システム、ネットワーク、プロセス、及び他の構成要素は、不必要な詳細で実施形態を不明瞭にしないために、ブロック図形式で構成要素として示されている。他の実施例では、周知の回路、プロセス、アルゴリズム、構造、及び技法が、実施形態を曖昧にすることを避けるために、不必要な詳細なしに示されている。
【0067】
[0075] また、個々の実施形態は、フローチャート、フロー図、データフロー図、構造図、又はブロック図として描かれるプロセスとして説明され得ることに留意されたい。フローチャートは、動作を順次プロセスとして説明してきたが、動作の多くは、並行して又は同時に実行することができる。更に、動作の順序は再配置されてもよい。プロセスは、その動作が完了したときに終了するが、図に含まれていない更なるステップを有することができる。プロセスは、メソッド、関数、プロシージャ、サブルーチン、サブプログラムなどに対応することができる。プロセスが関数に対応する場合、その終了は、呼び出し元の関数又はmain関数への関数の戻り値に対応することができる。
【0068】
[0076] 「コンピュータ可読媒体」という用語は、非限定的に、可搬型又は固定型のストレージデバイス、光学ストレージデバイス、無線チャネル、並びに、(1以上の)指示命令及び/又はデータを記憶、格納、又は搬送することができる他の様々な媒体を含む。コードセグメント又は機械実行可能な指示命令は、プロシージャ、関数、サブプログラム、プログラム、ルーチン、サブルーチン、モジュール、ソフトウェアパッケージ、クラス、又は、指示命令、データ構造、若しくはプログラムステートメントの任意の組み合わせを表し得る。コードセグメントは、情報、データ、引数、パラメータ、又はメモリコンテンツの受け渡しによって、別のコードセグメント又はハードウェア回路に結合され得る。情報、引数、パラメータ、データなどは、メモリ共有、メッセージパッシング、トークンパッシング、ネットワーク伝送などを含む、任意の適切な手段を介して渡され、転送され、又は伝送される。
【0069】
[0077] 更に、複数の実施形態は、ハードウェア、ソフトウェア、ファームウェア、ミドルウェア、マイクロコード、ハードウェア記述言語、又はそれらの任意の組み合わせによって実装され得る。ソフトウェア、ファームウェア、ミドルウェア、又はマイクロコードで実装されるときに、必要なタスクを実行するためのプログラムコード又はコードセグメントは、機械可読媒体内に記憶され得る。(1以上の)プロセッサが、必要なタスクを実行し得る。
【0070】
[0078] 前述の明細書では、特徴がその特定の複数の実施形態を参照しながら説明されたが、全ての実施形態がそれに限定されるわけではないことを認識されたい。幾つかの実施形態の様々な特徴及び態様は、個別に又は一緒に使用され得る。更に、実施形態は、本明細書のより広い精神及び範囲から逸脱することなく、本明細書に記載されたものを超える任意の数の環境及び用途において利用することができる。したがって、本明細書及び図面は、限定ではなく例示とみなされるべきである。
【0071】
[0079] 更に、例示目的で、方法は特定の順序で説明された。代替的な複数の実施形態では、方法が説明されたのとは異なる順序で実行され得ることを理解されたい。また、上述された方法は、ハードウェア構成要素によって実行され得るか、又は機械実行可能な指示命令のシーケンスとして具現化され得ることを理解されたい。該シーケンスを使用して、汎用又は専用プロセッサや、指示命令でプログラムされた論理回路などの機械に、方法を実行させることができる。これらの機械実行可能な指示命令は、CD-ROM若しくは他の種類の光ディスク、フロッピーディスク、ROM、RAM、EPROM、EEPROM、磁気カード若しくは光カード、フラッシュメモリ、又は電子指示命令を記憶するのに適した他の種類の機械可読媒体などの、1以上の機械可読媒体に記憶され得る。代替的に、方法は、ハードウェアとソフトウェアとの組み合わせによって実行され得る。
図1
図2A
図2B
図3A
図3B
図4
図5
図6
図7
【国際調査報告】