(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-10-04
(54)【発明の名称】チップレット処理ユニット内の重複レジスタ
(51)【国際特許分類】
G06F 13/10 20060101AFI20240927BHJP
G06F 13/12 20060101ALI20240927BHJP
G06F 15/167 20060101ALI20240927BHJP
【FI】
G06F13/10 310B
G06F13/12 340F
G06F15/167 610Z
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2024518989
(86)(22)【出願日】2022-10-10
(85)【翻訳文提出日】2024-05-08
(86)【国際出願番号】 US2022077848
(87)【国際公開番号】W WO2023064728
(87)【国際公開日】2023-04-20
(32)【優先日】2021-10-12
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】591016172
【氏名又は名称】アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド
【氏名又は名称原語表記】ADVANCED MICRO DEVICES INCORPORATED
(71)【出願人】
【識別番号】508301087
【氏名又は名称】エーティーアイ・テクノロジーズ・ユーエルシー
【氏名又は名称原語表記】ATI TECHNOLOGIES ULC
【住所又は居所原語表記】One Commerce Valley Drive East, Markham, Ontario, L3T 7X6 Canada
(74)【代理人】
【識別番号】100108833
【氏名又は名称】早川 裕司
(74)【代理人】
【識別番号】100111615
【氏名又は名称】佐野 良太
(74)【代理人】
【識別番号】100162156
【氏名又は名称】村雨 圭介
(72)【発明者】
【氏名】ハイクン ドン
(72)【発明者】
【氏名】コスタンティノス ダニー クリスティディス
(72)【発明者】
【氏名】リンーリン ワン
(72)【発明者】
【氏名】ミンフア ウー
(72)【発明者】
【氏名】ガオジャン コン
(72)【発明者】
【氏名】ルイ ワン
【テーマコード(参考)】
5B045
【Fターム(参考)】
5B045DD03
5B045EE25
(57)【要約】
複数の半導体ダイにまたがるイニシエータによるアクセス用の重複レジスタを実装するためシステム、装置及び方法が開示されている。システムは、チップレットプロセッサの複数の半導体ダイ上に複数のイニシエータを含む。1つの半導体ダイはマスタダイであり、マスタダイは、複数の半導体ダイ上の複数のイニシエータによってアクセス可能なレジスタのコピーを有する。所定の二次ダイ上の所定のイニシエータがレジスタアクセスを生成する際、レジスタアクセスはマスタダイにルーティングされ、レジスタの特定の重複コピーが所定の二次ダイ用に保持される。ソフトウェアの視点からすれば、複数の半導体ダイは単一のダイに見え、複数のイニシエータは単一のイニシエータに見える。複数の種類のレジスタをマスタダイが保持することができ、フラッシュレジスタは、1つの種類のレジスタである。
【選択図】
図10
【特許請求の範囲】
【請求項1】
装置であって、
通信リンクを介して1つ以上の半導体ダイと通信するように構成されたインターフェイスと、
第1制御ユニットと、を備え、
前記第1制御ユニットは、
前記インターフェイスを介して、レジスタをターゲットとするレジスタアクセスを受信することと、
第1イニシエータが前記レジスタアクセスを生成したという決定に応じて、前記レジスタの第1コピーへの前記レジスタアクセスを実行することと、
第2イニシエータが前記レジスタアクセスを生成したという決定に応じて、前記第1コピーとは異なる前記レジスタの第2コピーへの前記レジスタアクセスを実行することと、を行うように構成されている、
装置。
【請求項2】
前記第1制御ユニットは、前記レジスタアクセスと共に受信された識別子(ID)に基づいて、前記レジスタの何れコピーにアクセスするかを決定するように構成されている、
請求項1の装置。
【請求項3】
前記IDは半導体ダイIDである、
請求項2の装置。
【請求項4】
前記IDは、前記レジスタアクセスを生成した半導体ダイによってアクセス要求に追加されている、
請求項1の装置。
【請求項5】
前記制御ユニットは、前記IDに基づいて、前記第1イニシエータ及び前記第2イニシエータのうち何れが前記アクセス要求を生成したかを決定するように構成されている、
請求項4の装置。
【請求項6】
前記制御ユニットは、前記レジスタアクセスを実行することに応じて、メモリサブシステムに対する未処理のメモリ要求をフラッシュさせるように構成されている、
請求項1の装置。
【請求項7】
前記第1制御ユニットは、前記レジスタの複数のコピーを保持するように構成されており、各コピーは別々の半導体ダイに対応する、
請求項1の装置。
【請求項8】
方法であって、
制御ユニットが、ターゲットレジスタを対象とするレジスタアクセスを受信することと、
第1イニシエータが所定のレジスタアクセスを生成したという決定に応じて、前記レジスタの第1コピーへの前記レジスタアクセスを実行することと、
第2イニシエータが前記所定のレジスタアクセスを生成したという決定に応じて、前記レジスタの第2コピーへの前記レジスタアクセスを実行することであって、前記第2コピーは前記第1コピーとは異なる、ことと、を含む、
方法。
【請求項9】
前記所定のレジスタアクセスと共に伝達された所定の識別子(ID)に基づいて、前記レジスタの何れのコピーにアクセスするかを決定することを含む、
請求項8の方法。
【請求項10】
前記所定のIDは半導体ダイIDである、
請求項9の方法。
【請求項11】
前記第2半導体ダイ上の第2制御ユニットが、前記レジスタアクセスを前記通信リンク上で前記第1半導体ダイに伝達する前に、前記第2半導体IDの識別子(ID)を、前記第2イニシエータによって生成された前記レジスタアクセスに追加することを含む、
請求項8の方法。
【請求項12】
第1アクセス要求は、前記第1イニシエータを識別する第1識別子(ID)を含み、第2アクセス要求は、前記第2イニシエータを識別する第2IDを含み、前記方法は、前記第1ID及び第2IDに基づいて、前記第1アクセス要求と前記第2アクセス要求とを区別することを含む、
請求項8の方法。
【請求項13】
前記所定のレジスタアクセスを実行することに応じて、メモリサブシステムに対する未処理のメモリ要求をフラッシュさせることを含む、
請求項8の方法。
【請求項14】
前記所定のレジスタの複数のコピーを保持することを含み、各コピーは別々の半導体ダイに対応する、
請求項8の方法。
【請求項15】
システムであって、
複数の半導体ダイと、
メモリサブシステムと
前記複数の半導体ダイのうち第1半導体ダイの第1制御ユニットと、を備え、
前記第1制御ユニットは、
ターゲットレジスタを対象とするレジスタアクセスを受信することと、
第1イニシエータが所定のレジスタアクセスを生成したという決定に応じて、前記レジスタの第1コピーへの前記レジスタアクセスを実行することと、
第2イニシエータが前記所定のレジスタアクセスを生成したという決定に応じて、前記レジスタの第2コピーへの前記レジスタアクセスを実行することであって、前記第2コピーは前記第1コピーとは異なる、ことと、
を行うように構成されている、
システム。
【請求項16】
前記第1制御ユニットは、前記所定のレジスタアクセスと共に伝達された所定の識別子(ID)に基づいて、前記レジスタの何れのコピーにアクセスするかを決定するように構成されている、
請求項15のシステム。
【請求項17】
前記所定のIDは半導体ダイIDである、
請求項16のシステム。
【請求項18】
前記第2半導体ダイ上の第2制御ユニットを備え、
前記第2制御ユニットは、前記レジスタアクセスを前記通信リンク上で前記第1半導体ダイに伝達する前に、前記第2半導体IDの識別子(ID)を、前記第2イニシエータによって生成された前記レジスタアクセスに追加するように構成されている、
請求項15のシステム。
【請求項19】
第1アクセス要求は、前記第1イニシエータを識別する第1識別子(ID)を含み、第2アクセス要求は、前記第2イニシエータを識別する第2IDを含み、前記第1制御ユニットは、前記第1ID及び第2IDに基づいて、前記第1アクセス要求と前記第2アクセス要求とを区別するように構成されている、
請求項15のシステム。
【請求項20】
前記第1制御ユニットは、前記所定のレジスタアクセスを実行することに応じて、前記メモリサブシステムに対する未処理のメモリ要求をフラッシュさせるように構成されている、
請求項15のシステム。
【発明の詳細な説明】
【背景技術】
【0001】
(関連技術の説明)
携帯電話、タブレット、携帯情報端末(PDA)、デジタルカメラ、ポータブルプレーヤ、ゲームデバイス、ノートパソコン及び他のデバイス等のコンピューティングデバイスは、スペースをより抑えて、更に多くの性能と機能を統合する必要がある。これにより、プロセッサダイの密度及び単一集積回路(IC)パッケージ内に集積されるダイの数が増加した。いくつかの従来のマルチチップモジュールは、キャリア基板上に、又は、場合によっては、キャリア基板上に実装されるインターポーザ(いわゆる「2.5D」)上に、順番に並んで実装された2つ以上の半導体チップを含む。
【0002】
本明細書に記載の方法及び機構の利点は、添付の図面と併せて以下の説明を参照することによってより良く理解され得る。
【図面の簡単な説明】
【0003】
【
図1】コンピューティングシステムの一実施形態のブロック図である。
【
図2】いくつかの実施形態に係る、GPUチップレットを採用する処理システムのブロック図である。
【
図3】コンピューティングシステムの別の実施形態のブロック図である。
【
図4】チップレットGPUを備えたコンピューティングシステムの別の実施形態のブロック図である。
【
図5】マスタダイの一実施形態のブロック図である。
【
図6】マスタダイ上の制御ユニットの一実施形態のブロック図である。
【
図8】レジスタ・コピー・マッピング・テーブルの一実施形態の図である。
【
図9】イニシエータインデックスに基づいてアクセスするレジスタのコピーを決定する方法に関する一実施形態を例示する一般化されたフロー図である。
【
図10】複数の半導体ダイからのイニシエータ用のレジスタの複数のコピーを保持する方法の一実施形態を例示する一般化されたフロー図である。
【
図11】レジスタアクセスを半導体IDでタグ付けする方法の一実施形態を例示する一般化されたフロー図である。
【発明を実施するための形態】
【0004】
以下の説明では、本明細書に提示される方法及び機構の十分な理解を提供するために、多数の具体的な詳細が記載されている。しかしながら、当業者は、これらの具体的な詳細なしに様々な実施形態を実施し得ることを認識すべきである。いくつかの場合では、本明細書において説明されるアプローチを不明瞭にすることを避けるために、周知の構造、構成要素、信号、コンピュータプログラム命令及び技術が詳細に示されていない。説明を簡単且つ明確にするために、図に示される要素は必ずしも縮尺どおりに描かれているわけではないことが理解されよう。例えば、いくつかの要素の寸法は、他の要素に対して誇張されている場合がある。
【0005】
本明細書では、複数の半導体ダイにまたがるイニシエータによるアクセス用の重複レジスタを実装するための様々なシステム、装置及び方法を開示する。一実施形態では、システムは、複数の半導体ダイ上に複数のイニシエータを含む。この実施形態では、何れかの半導体ダイがマスタダイであり、このマスタダイが、各レジスタの複数のコピーを保持し、対応する半導体ダイ上のイニシエータが各コピーにアクセスできる。つまり、各半導体ダイには、アクセスする所定のレジスタの独自のコピーがある。例えば、4ダイ型チップレットグラフィック処理ユニット(GPU)を備えるシステムでは、マスタダイは、所定のレジスタの4つの個別のコピーを、ダイごとに1つずつ保持する。これにより、複数のダイ上の複数のイニシエータが、互いに競合することなく、所定のレジスタにアクセスできる。二次ダイ上の特定のイニシエータの視点からすれば、このイニシエータのみが所定のレジスタにアクセスできる。ソフトウェアの視点からすれば、複数の半導体ダイが単一のダイに見え、複数のイニシエータが単一のイニシエータに見える。
【0006】
イニシエータは、演算ユニット、コマンドプロセッサ、ダイレクトメモリアクセス(DMA)エンジン、あるいは、他の種類のハードウェア又はソフトウェアエージェントであり得る。所定の二次ダイ上の所定のイニシエータがレジスタアクセスを生成すると、このアクセスがマスタダイにルーティングされ、所定の二次ダイに対応するレジスタのコピーに対して、このアクセスが実行される。複数の種類のレジスタをマスタダイが保持することができ、ここで、フラッシュレジスタは、何れかの種類のレジスタである。フラッシュレジスタのコピーの何れかに対して書き込みが実行されると、未処理のメモリトランザクションがフラッシュされる(つまり、実行されずに破棄される)。マスタダイは、他の種類のレジスタのコピーを保持することもできる。
【0007】
図1を参照すると、コンピューティングシステム100の一実施形態のブロック図が示されている。一実施形態では、コンピューティングシステム100は、少なくともプロセッサ105A~105N、入力/出力(I/O)インターフェイス120、バス125、メモリコントローラ130、ネットワークインターフェイス135、メモリデバイス(複数)140、ディスプレイコントローラ150、及び、ディスプレイ155を含む。他の実施形態では、コンピューティングシステム100は、他の構成要素を含み、且つ/又は、コンピューティングシステム100は、別様に配置される。プロセッサ105A~105Nは、システム100に含まれる任意の数のプロセッサを表す。
【0008】
一実施形態では、プロセッサ105Aは、中央処理ユニット(CPU)等の汎用プロセッサである。この実施形態では、プロセッサ105Aは、システム100内の他のプロセッサの1つ以上と通信するための、且つ/又は、それらのプロセッサの1つ以上の動作を制御するためのドライバ110(例えば、グラフィックドライバ)を実行する。実施形態に応じて、ドライバ110は、ハードウェア、ソフトウェア及び/又はファームウェアの任意の好適な組み合わせを使用して実装することができることに留意されたい。一実施形態では、プロセッサ105Nは、データを処理し、ワークロードの並列処理を実行し、ディスプレイコントローラ150がディスプレイ155を駆動するためのピクセルをレンダリングし、且つ/又は、他のワークロードを実行する、チップレットグラフィック処理ユニット(GPU)等の高度並列アーキテクチャを有するデータ並列プロセッサである。
【0009】
チップレットGPUは、複数の半導体ダイにわたってグラフィック処理タスクを実行する複雑な集積回路である。GPUは、ビデオゲームアプリケーション等のように、エンドユーザアプリケーションから必要とされるグラフィック処理タスクを実行する。また、GPUは、グラフィックに関連しない他のタスクを実行するためにも使用される機会が増えている。システム100に含まれ得る他のデータ並列プロセッサには、デジタル信号プロセッサ(DSP)、フィールドプログラマブルゲートアレイ(FPGA)及び特定用途向け集積回路(ASIC)等が含まれる。いくつかの実施形態では、プロセッサ105A~105Nは、複数のデータ並列プロセッサを含む。
【0010】
メモリコントローラ(複数)130は、プロセッサ105A~105Nによってアクセス可能な任意の数及び種類のメモリコントローラを表す。メモリコントローラ130は、プロセッサ105A~105Nから分離されているものとして示されているが、これは、あくまで想定される一実施形態を表すことを理解されたい。他の実施形態では、メモリコントローラ130は、プロセッサ105A~105Nのうち1つ以上に組み込むことができ、且つ/又は、メモリコントローラ130は、プロセッサ105A~105Nのうち1つ以上と同じ半導体ダイ上に配置することができる。メモリコントローラ(複数)130は、任意の数及び種類のメモリデバイス(複数)140に結合する。
【0011】
メモリデバイス(複数)140は、任意の数及び種類のメモリデバイスを表す。例えば、メモリデバイス(複数)140内のメモリの種類は、ダイナミックランダムアクセスメモリ(DRAM)、スタティックランダムアクセスメモリ(SRAM)、NANDフラッシュメモリ、NORフラッシュメモリ、強誘電体ランダムアクセスメモリ(FeRAM)等を含む。メモリデバイス(複数)140は、アプリケーション用のプログラム命令の第1セット、ドライバ構成要素用のプログラム命令の第2セット等を含むことができる、プログラム命令145を記憶する。あるいは、プログラム命令145又はその一部を、プロセッサ105A及び/又はプロセッサ105Nの近くにあるメモリ又はキャッシュデバイスに記憶できる。
【0012】
I/Oインターフェイス120は、任意の数及び種類のI/Oインターフェイス(例えば、周辺構成要素相互接続(PCI)バス、PCI-Extended(PCI-X)、PCIE(PCI Express)バス、ギガビットイーサネット(登録商標)(GBE)バス、ユニバーサルシリアルバス(USB)を表す。様々な種類の周辺デバイス(図示せず)がI/Oインターフェイス120に結合される。かかる周辺デバイスには、ディスプレイ、キーボード、マウス、プリンタ、スキャナ、ジョイスティック、他の種類のゲームコントローラ、メディア記録デバイス、及び、外部記憶デバイス等が含まれる(ただし、これらに限定されない)。ネットワークインターフェイス135は、ネットワークを介してネットワークメッセージを受信及び送信することができる。
【0013】
様々な実施形態では、コンピューティングシステム100は、コンピュータ、ラップトップ、モバイルデバイス、ゲームコンソール、サーバ、ストリーミングデバイス、ウェアラブルデバイス、又は、様々な他の種類のコンピューティングシステム若しくはデバイスの何れかである。コンピューティングシステム100の構成要素の数は、実施形態ごとに異なることに留意されたい。例えば、他の実施形態では、
図1で示される数よりも多い又は少ない各構成要素が存在する。また、他の実施形態では、コンピューティングシステム100は、
図1に示されていない他の構成要素を含むことにも留意されたい。加えて、他の実施形態では、コンピューティングシステム100は、
図1に示される以外の方法で構築される。
【0014】
図2を参照すると、いくつかの実施形態に係るGPUチップレットを採用する処理システム200を示すブロック図が示されている。図示した例では、システム200は、命令を実行するための中央処理装置(CPU)205と、GPUチップレット250A、250B~250N(総合して、GPUチップレット250)等の1つ以上のGPUチップレットのアレイと、を含む。様々な実施形態において、本明細書で使用される場合、「チップレット」という用語は、限定されないが、以下の特性を含む任意のデバイスを指す。1)チップレットは、完全問題を解くために使用される演算ロジックの一部を含むアクティブ・シリコン・ダイを含む(すなわち、演算ワークロードはこれらのアクティブ・シリコン・ダイの複数に分散される)。2)チップレットは、同じ基板上に一体型ユニットとしてまとめてパッケージ化される。3)プログラミングモデルは、これらの別個の演算ダイが単一の一体型ユニットであるという概念を損なわない(すなわち、各チップレットは、演算ワークロードを処理するためにチップレットを使用するアプリケーションに個別のデバイスとして現れない)。
【0015】
様々な実施形態では、CPU205は、バス240を介して、ダイナミック・ランダム・アクセスメモリ(DRAM)等のシステムメモリ230に接続する。様々な実施形態では、システムメモリ230は、スタティックランダムアクセスメモリ(SRAM)、不揮発性RAM等を含む他の種類のメモリを使用して実装することもできる。例示した実施形態では、CPU205は、周辺構成要素相互接続(PCI)バス、PCI-Eバス又は他の種類のバスとして実装されるバス240を介して、システムメモリ230と、またGPUチップレット250とも通信する。しかしながら、システム200のいくつかの実施形態は、直接接続を通じて又は他のバス、ブリッジ、スイッチ、ルータ等を介してCPU205と通信するGPUチップレット250を含む。
【0016】
例示のとおり、CPU205は、グラフィックコマンド及びユーザ・モード・ドライバ220(又は、カーネル・モード・ドライバ等の他のドライバ)を生成するために1つ以上のアプリケーション(複数)210を実行する等の複数のプロセスを含む。様々な実施形態では、1つ以上のアプリケーション210は、システム200又はオペレーティングシステム(OS)215においてワークロードを生成するアプリケーション等のように、GPUチップレット250の機能を利用するアプリケーションを含む。アプリケーション210は、GPUチップレット250にグラフィカル・ユーザ・インターフェイス(GUI)及び/又はグラフィックシーンのレンダリングを指示する1つ以上のグラフィック命令を含むことができる。例えば、グラフィック命令は、GPUチップレット250によってレンダリングされる1つ以上のグラフィックプリミティブのセットを定義する命令を含み得る。
【0017】
いくつかの実施形態では、アプリケーション210は、グラフィック・アプリケーション・プログラミング・インターフェイス(API)を利用して、ユーザ・モード・ドライバ220(又は、同様のGPUドライバ)を呼び出す。一実施形態において、ユーザ・モード・ドライバ220は、表示可能なグラフィック画像に1つ以上のグラフィックプリミティブをレンダリングするために、1つ以上のGPUチップレットのアレイに1つ以上のコマンドを出す。アプリケーション210によってユーザ・モード・ドライバ220に出されたグラフィック命令に基づいて、ユーザ・モード・ドライバ220は、グラフィックのレンダリングを実行するためにGPUチップレットの1つ以上の動作を指定する1つ以上のグラフィックコマンドを生成する。いくつかの実施形態では、ユーザ・モード・ドライバ220は、CPU205上で動作しているアプリケーション210の一部である。例えば、ユーザ・モード・ドライバ220は、CPU205上で動作しているゲームアプリケーションの一部であり得る。同様に、カーネル・モード・ドライバ(図示せず)は、CPU205上で動作しているOS215の一部であり得る。
【0018】
図2に示した実施形態では、通信リンク260(例えば、クロスリンク260)が、GPUチップレット250(すなわち、GPUチップレット250A~250N)を互いに接続する。かかる実施形態では、各チップレット(250)は、リンク260を介してチップレットが通信できるように構成されたインターフェイス(252A~252N)を含む。チップレットアレイ内のGPUチップレットの数は、設計上の選択の問題であり、実施形態ごとに異なり得ることに留意されたい。様々な実施形態において、リンク260は、バス、高密度リンク(HDCL)ダイインターポーザ等の相互接続チップ、又は、他のチップレット間通信機構である。
【0019】
図3を参照すると、コンピューティングシステム300の別の実施形態のブロック図が示されている。
図3で見られるように、コンピューティングシステム300は、中央処理装置(CPU)310、ルートコンプレックス320、スイッチ330、及び、グラフィック処理ユニット(GPU)340を含む。一実施形態では、GPU340は、任意の数の半導体ダイを表すダイ350A~350Dを含むチップレットGPUである。コンピューティングシステム300は、図の不明瞭さを避けるために図示されていない任意の数の他の構成要素(例えば、電圧レギュレータ(複数)、メモリデバイス(複数)、ネットワークインターフェイス(複数)、周辺デバイス(複数))を含み得ることに留意されたい。コンピューティングシステム300は、コンピュータ、ラップトップ、サーバ、スーパーコンピュータ、モバイルデバイス等のように、先に列挙したデバイス又はシステムの何れかであり得る。コンピューティングシステム300は、他のデバイス又はシステムに組み込まれるサブシステムであり得る。その他、様々な種類のデバイス、システム又はサブシステムが想定され、企図される。
【0020】
CPU310は、任意の種類のCPU又は他の種類のプロセッサを表す。実施形態に応じて、CPU310は、複数のコア又は単一のコアを含むことができる。一実施形態では、CPU310は、システム300の制御ソフトウェア(例えば、オペレーティングシステム(OS))を実行する。オペレーティングシステムは、システム300の動作を制御して、システムの所望の機能を達成する。オペレーティングシステムは、ドライバ、制御ソフトウェア等の様々なソフトウェアプログラムを含み得る、且つ/又は、それらと相互作用し得る。ルートコンプレックス320は、スイッチ330をCPU310に接続する他に、図の不明瞭さを避けるために
図3で示されていない他の任意の数及び種類の他の構成要素に接続する。一実施形態では、スイッチ330は、周辺構成要素相互接続エクスプレス(PCIE)スイッチである。他の実施形態では、スイッチ330は、任意の様々な他の種類のスイッチである。
【0021】
図3で見られるように、チップレットGPU340は、4つのダイ350A~350Dを含む。他の実施形態では、チップレットGPU340は、他の数(例えば、8、10、16、25、32)のダイを含むことができる。図示したように、各ダイ350A~Dは、それぞれ、イニシエータ365A~Dを含み、このイニシエータは、レジスタ355Aをターゲットとするレジスタアクセスを生成する任意の数及び種類のエージェント、構成要素、あるいは他のユニットを表す。各ダイ350A~Dは、1つのイニシエータを含むものとして示されているが、これは、あくまで例示目的であることを理解されたい。他の実施形態では、各ダイ350A~350Dは、他の個数のイニシエータを含むことができる。また、様々なダイは、様々な数のイニシエータを有することができることを理解されたい。例えば、第1ダイは、1つのイニシエータを有することができ、第2ダイは、2つのイニシエータを有することができ、第3ダイは、3つのイニシエータを有することができる等である。
【0022】
各ダイ350A~350Dは、対応するレジスタ355A~350Dを有するものとして示されているが、一実施形態では、ダイ350Aのみが、有効化されたレジスタ355Aを有する。場合によっては、ダイ350B~350Dもそれぞれレジスタ355B~355Dを有するが、これらのレジスタは無効化される。例えば、一実施形態では、各ダイ350A~350Dは同一であり、ダイの1つだけが有効化されたレジスタ及びそのコピーを有し、他のダイは無効化されたレジスタ及び無効化されたコピーを有する。マスタダイ350A上の有効化されたレジスタ及びコピーは、全てのダイ350A~Dからのアクセスを提供するように意図されている。
【0023】
イニシエータ365B~365Dからレジスタ355Aへのレジスタアクセスは、ダイ350B~350Dからコピー360B~360Dへとそれぞれルーティングされる。つまり、様々なダイからのレジスタアクセスが互いに競合するのを防ぐために、各ダイ350B~350Dについて、それぞれコピー360B~360Dが存在する。一実施形態では、レジスタアクセスが二次ダイ(例えば、ダイ350B~350D)上のイニシエータによって生成される際、レジスタアクセスは、マスタダイ350Aへのリンク(例えば、
図2の通信リンク260)を走査する。一実施形態では、レジスタアクセスの起点を識別するために、ダイIDがレジスタアクセスに追加される。このダイIDによって、ダイ350Aがレジスタアクセスを適切なコピー360B~360Dにルーティングすることが可能となる。
【0024】
一実施形態では、レジスタ355Aは、メモリトランザクションがフラッシュされるタイミングを制御するフラッシュレジスタである。例えば、この実施形態では、イニシエータがレジスタ355Aに書き込む場合、これによって、全ての未処理のメモリトランザクションがメモリサブシステム(例えば、
図2のシステムメモリ230)からフラッシュされる。イニシエータ365Bがレジスタ355Aへの書き込みアクセスを生成する場合、この書き込みアクセスは、ダイ350BのダイIDでタグ付けされてから、次に、ダイ350BのダイIDを有する書き込みアクセスがダイ350Aに送信される。アクセスがダイ350BのダイIDを含むので、書き込みアクセスは、コピー360Bに対して実行される。後の時点で、イニシエータ365Cがレジスタ355Aをターゲットとする書き込みアクセスを生成する場合、この書き込みアクセスは、ダイ350C用のダイIDでタグ付けされ、ダイ350Aに送信される。ダイ350Aがこの書き込みアクセスを受信すると、コピー360C対して書き込みが実行される。イニシエータ365B及び365Cの書き込みアクセスが共に、レジスタ355Aの同じレジスタアドレスを含むことに留意されたい。ダイ350Aは、こうした書き込みアクセスを、それらの対応するダイIDに基づいて区別する。他の実施形態では、レジスタ355Aは、フラッシュレジスタ以外の他の種類のレジスタであり得ることに留意されたい。
【0025】
図4を参照すると、チップレットGPU440を備えたコンピューティングシステム400に関する別の実施形態のブロック図が示されている。チップレットGPU440が4つのダイ450A~450Dを含み、ダイ450Aがマスタダイであるという点で、チップレットGPU440は、(
図3の)チップレットGPU340と同様である。ダイ450A~450Dは、任意の数のダイを表しており、4つのダイ450A~450Dの例は、あくまで1つの特定の実施形態を示しているにすぎないことを理解されたい。他の実施形態は、チップレットGPU内に他の個数のダイを有することができる。ダイ450Aは、スイッチ430及びルートコンプレックス420を介してCPU410に接続する。システム400は、図の不明瞭さを避けるために図示されていない任意の数及び種類の他の構成要素を含むことができることに留意されたい。
【0026】
チップレットGPU340は同種ダイ350A~350Dを有するが、チップレットGPU440は異種ダイ450A~450Dを有する。したがって、ダイ450Aは、レジスタ455A及びレジスタコピー460A~460Dを有するが、ダイ450B~450Dは、対応するレジスタ及びレジスタコピーを有さない。チップレットGPU340と同様に、マスタダイ450A上のイニシエータ465Aはコピー460Aに結合し、二次ダイ450B上のイニシエータ465Bはコピー460Bに結合し、二次ダイ450C上のイニシエータ465Cはコピー460Cに結合し、更に、二次ダイ450D上のイニシエータ465Dはコピー460Dに結合する。マスタダイ450Aの機能は、チップレットGPU340のマスタダイ350Aについて説明したものと同様である。
【0027】
図5を参照すると、マスタダイ500の一実施形態のブロック図が示されている。マスタダイ500は、任意の数の他の半導体ダイを有するチップレットGPU(例えば、
図4のチップレットGPU440)の一部とすることができることに留意されたい。制御ユニット530は、オフダイイニシエータ(図示せず)によるレジスタ510のコピー520B~520Nへのアクセスを処理する。レジスタ510のコピー520A~520Nは、個別のダイがレジスタ510の個別のコピーにアクセスすることを可能にする。これは、他のダイからのイニシエータを阻害することなく、様々なダイ上のイニシエータが、同じアドレスを使用して、レジスタ510をターゲティングすることも可能にする。
【0028】
一実施形態では、イニシエータ550は、制御ユニット530の介入なしに、レジスタ510のコピー520Aにアクセスするようにハードワイヤ接続されている。他の実施形態では、制御ユニット530は、イニシエータ550によるアクセスをコピー520Aにルーティングする。この検討の意図するところでは、イニシエータ550は、制御ユニット530と同じマスタダイ上に位置するものと仮定する。一実施形態では、制御ユニット530は、オフダイイニシエータをコピー520B~520Nにマッピングするためのマッピングテーブル540を含む。この実施形態では、制御ユニット530は、マッピングテーブル540へのインデックスとして使用するために、レジスタアクセスからダイID又は他の識別特性を取得する。他の実施形態では、制御ユニット530は、他の技術を使用して、オフダイイニシエータをコピー520B~520Nへとマッピングする。
【0029】
図6を参照すると、マスタダイ600上の制御ユニット650の一実施形態のブロック図が示されている。マスタダイの上述した例では、複数のコピーを有する単一レジスタを示していたが、マスタダイ600は、複数のレジスタ610A~610Nを含み、各レジスタは、チップレットGPU(例えば、
図4のチップレットGPU440)の他の二次ダイ(図示せず)上の異なるイニシエータ用のコピーの独自のセットを有する。一実施形態では、マスタダイ600は、コピー620A~620N、630A~630N及び640A~640Nの所定のコピーに直接結合されたイニシエータ670を含む。別の実施形態では、イニシエータ670は、コピー620A~620N、630A~630N及び640A~640Nの適切なコピーへのアクセスをルーティングする制御ユニット650に結合する。イニシエータ670は、任意の数及び種類のイニシエータを表す。
【0030】
例えば、コピー620A~620Nは、他のダイからのイニシエータによってアクセスされるレジスタ610A用に保持され、コピー630A~630Nは、他のダイからのイニシエータによってアクセスされるレジスタ610B用に保持され、更に、コピー640A~640Nは、他のダイ上のイニシエータによってアクセスされるレジスタ610N用に保持される。一実施形態では、コピーの数は、異なる半導体ダイの数に基づいてもよい。他の実施形態では、コピーの数は、ダイごとに2つのコピー、ダイごとに3つのコピーを有する等のように、変化し得る。こうした実施形態では、ダイ上の異なるイニシエータは、同じダイ上の他のイニシエータとは別の独自のコピーを有することができる。制御ユニット650は、他のダイ上の異なるイニシエータをコピー620A~620N、630A~630N及び640A~640Nにマッピングするために、マッピングテーブル(複数)660を保持する。一実施形態では、個別のレジスタ610A~610Nについて、個別のマッピングテーブル660が存在する。
【0031】
図7を参照すると、二次ダイ700の一実施形態のブロック図が示されている。一実施形態では、二次ダイ700は、マルチダイ・チップレット・プロセッサ(例えば、
図4のチップレットGPU440)の一部である。図示したように、二次ダイ700は、通信リンク720に結合する制御ユニット710を含む。通信リンク720は、チップレットの複数のダイを互いに接続するためのリンク、バス又は他の通信チャネルを表す。制御ユニット710が1つのオンダイイニシエータ(図示せず)によるレジスタアクセスを検出すると、制御ユニット710は、レジスタアクセスに半導体ID730をタグ付けし、通信リンク720を介してレジスタアクセスをマスタダイ(図示せず)に転送する。制御ユニット710は、回路、処理要素及び/又は実行可能プログラム命令の任意の適切な組み合わせを使用して、実装することができる。レジスタアクセスに半導体ID730をタグ付けすることによって、レジスタアクセスは、マスタダイにより、ターゲットレジスタの適切なコピーについて実行可能である。これにより、二次ダイ700は、ターゲットレジスタへの排他的アクセスがある場合と同様の動作が可能となる。
【0032】
図8を参照すると、レジスタ・コピー・マッピング・テーブル800の一実施形態の図が示されている。一実施形態では、テーブル800のエントリは、(
図5の)テーブル540に含まれる。一実施形態では、テーブル800のエントリは、イニシエータIDフィールド810及びレジスタコピーIDフィールド820という、2つのフィールドを含む。任意の数のエントリをテーブル800に含めることができ、エントリは、それぞれ、イニシエータID「001」及び「111」、並びに、レジスタコピー520B及び520Nについて図示されている。他の実施形態では、テーブル800のエントリは、他の数及び/又は種類のフィールドを含むことができ、他の適切な方法で構造化可能である。3ビットを有するイニシエータIDフィールド810は、あくまで一実施形態を示しているにすぎないことを理解されたい。イニシエータIDフィールド810及びレジスタ・コピー・フィールド820は、任意の数のビットで符号化可能であり、実施形態に応じて、その数は変化する。更に、イニシエータIDフィールド810は、半導体ダイIDフィールド810と称することも可能であり、1つの特定の実施形態では、半導体ダイIDは、イニシエータIDとして作用することに留意されたい。一実施形態では、制御ユニット(例えば、制御ユニット530)がイニシエータからレジスタアクセスを受信すると、制御ユニットは、イニシエータIDでテーブル800のルックアップを実行して、アクセスするレジスタコピーを決定する。次に、制御ユニットは、イニシエータに代わって、識別されたレジスタコピーにアクセスする。
【0033】
図9を参照すると、イニシエータインデックスに基づいてアクセスするレジスタのコピーを決定する方法900の一実施形態が示されている。説明のために、この実施形態におけるステップ及び
図10~
図11のステップが順番に示されている。しかしながら、記載された方法の様々な実施形態では、記載された要素の1つ以上が、示された順序とは異なる順序で同時に実行されるか、又は、完全に省略されることに留意されたい。必要に応じて、他の追加の要素も実行される。本明細書に記載の様々なシステム又は装置の何れも、方法900(及び、方法1000~1100)を実施するように構成されている。
【0034】
マルチダイ・チップレット・プロセッサのマスタ半導体ダイ上の制御ユニット(例えば、
図5の制御ユニット530)は、所定のイニシエータから、所定のレジスタをターゲットとするレジスタアクセスを受信する(ブロック905)。制御ユニットは、レジスタアクセスからイニシエータIDを取得する(ブロック910)。次に、制御ユニットは、取得されたイニシエータIDに基づいて、アクセスする所定のレジスタのコピーを識別する(ブロック915)。次いで、制御ユニットは、所定のレジスタの識別されたコピーへのアクセスを実行する(ブロック920)。ブロック920の後、方法900は終了する。あるいは、ブロック920の後、マルチダイ・チップレット・プロセッサは、所定のレジスタへのアクセスの結果として、1つ以上の動作を実行する(任意でのブロック925)。例えば、一実施形態では、所定のレジスタはフラッシュレジスタであり、マスタダイ上の制御ユニット又は他のエージェントは、フラッシュレジスタへの書き込みの結果として、メモリサブシステムをターゲットとするメモリ要求をフラッシュさせる。他の実施形態では、所定のレジスタへのアクセスの結果として、他の種類の動作を取ることができる。
【0035】
図10を参照すると、複数の半導体ダイからのイニシエータ用のレジスタの複数のコピーを保持する方法1000の一実施形態が示されている。マスタ半導体ダイは、所定のレジスタの複数のコピーを保持する(ブロック1005)。マスタ半導体ダイが所定のレジスタをターゲットとするレジスタアクセスを受信すると、マスタ半導体ダイは、レジスタアクセスからイニシエータIDを取得する(ブロック1010)。次に、マスタ半導体ダイは、取得されたイニシエータIDに基づいて、アクセスするコピーを決定する(ブロック1015)。次いで、マスタ半導体ダイは、識別されたコピーへのレジスタアクセスを実行する(ブロック1020)。ブロック1020の後、方法1000は終了する。
【0036】
図11を参照すると、レジスタアクセスに半導体IDをタグ付けする方法1100の一実施形態が示されている。チップレットプロセッサ(例えば、
図3のチップレットGPU340)の二次半導体ダイ上の制御ユニット(例えば、
図7の制御ユニット710)は、所定のレジスタをターゲットとするレジスタアクセスを検出する(ブロック1105)。制御ユニットは、レジスタアクセスに二次半導体ダイの半導体IDをタグ付けする(ブロック1110)。別の実施形態では、制御ユニットは、レジスタアクセスに、レジスタアクセスを生成したイニシエータのイニシエータIDをタグ付けする。次に、制御ユニットは、マスタ半導体ダイへの通信リンク上で、半導体IDでタグ付けされたレジスタアクセスを送信する(ブロック1115)。次いで、マスタ半導体ダイは、所定のレジスタの所定のコピーにアクセスし、所定のコピーは、二次半導体ダイの半導体IDに基づいて識別される(ブロック1120)。ブロック1120の後、方法1100は終了する。
【0037】
様々な実施形態では、ソフトウェアアプリケーションのプログラム命令を使用して、本明細書に記載の方法及び/又は機構を実施する。例えば、汎用又は専用プロセッサによって実行可能なプログラム命令が企図される。様々な実施形態では、そのようなプログラム命令は、高レベルプログラミング言語によって表される。他の実施形態では、プログラム命令は、高レベルプログラミング言語からバイナリ、中間又は他の形式にコンパイルされる。代替的に、ハードウェアの挙動又は設計を説明するプログラム命令が書かれる。そのようなプログラム命令は、C等の高レベルプログラミング言語によって表される。代替的に、Verilog(登録商標)等のハードウェア設計言語(HDL)が使用される。様々な実施形態では、プログラム命令は、様々な非一時的なコンピュータ可読記憶媒体の何れかに記憶される。記憶媒体は、プログラム実行のためにプログラム命令をコンピューティングシステムに提供するために、使用中にコンピューティングシステムによってアクセス可能である。一般的に言えば、そのようなコンピューティングシステムは、少なくとも1つ以上のメモリと、プログラム命令を実行するように構成された1つ以上のプロセッサと、を含む。
【0038】
上記の実施形態は、実施形態の非限定的な例にすぎないことを強調しておきたい。上記の開示が十分に理解されると、多数の変形及び修正が当業者に明らかになるであろう。以下の特許請求の範囲は、全てのそのような変形及び修正を包含すると解釈されることが意図されている。
【国際調査報告】