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

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

▶ アドバンスト・マイクロ・ディバイシズ・インコーポレイテッドの特許一覧

特表2024-530868チップレット処理ユニットのための集中型割込み処理
<>
  • 特表-チップレット処理ユニットのための集中型割込み処理 図1
  • 特表-チップレット処理ユニットのための集中型割込み処理 図2
  • 特表-チップレット処理ユニットのための集中型割込み処理 図3
  • 特表-チップレット処理ユニットのための集中型割込み処理 図4
  • 特表-チップレット処理ユニットのための集中型割込み処理 図5
  • 特表-チップレット処理ユニットのための集中型割込み処理 図6
  • 特表-チップレット処理ユニットのための集中型割込み処理 図7
  • 特表-チップレット処理ユニットのための集中型割込み処理 図8
  • 特表-チップレット処理ユニットのための集中型割込み処理 図9
  • 特表-チップレット処理ユニットのための集中型割込み処理 図10
  • 特表-チップレット処理ユニットのための集中型割込み処理 図11
  • 特表-チップレット処理ユニットのための集中型割込み処理 図12
  • 特表-チップレット処理ユニットのための集中型割込み処理 図13
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-08-27
(54)【発明の名称】チップレット処理ユニットのための集中型割込み処理
(51)【国際特許分類】
   G06F 13/24 20060101AFI20240820BHJP
   G06F 13/12 20060101ALI20240820BHJP
   G06F 9/48 20060101ALI20240820BHJP
   G06F 9/455 20180101ALI20240820BHJP
【FI】
G06F13/24 310G
G06F13/12 340F
G06F9/48 110B
G06F9/455 150
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2024502023
(86)(22)【出願日】2022-07-13
(85)【翻訳文提出日】2024-02-13
(86)【国際出願番号】 US2022036995
(87)【国際公開番号】W WO2023009317
(87)【国際公開日】2023-02-02
(31)【優先権主張番号】17/389,994
(32)【優先日】2021-07-30
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.VERILOG
(71)【出願人】
【識別番号】591016172
【氏名又は名称】アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド
【氏名又は名称原語表記】ADVANCED MICRO DEVICES INCORPORATED
(74)【代理人】
【識別番号】100108833
【弁理士】
【氏名又は名称】早川 裕司
(74)【代理人】
【識別番号】100111615
【弁理士】
【氏名又は名称】佐野 良太
(74)【代理人】
【識別番号】100162156
【弁理士】
【氏名又は名称】村雨 圭介
(72)【発明者】
【氏名】ハイクン ドン
(72)【発明者】
【氏名】ゼンロン ファン
(72)【発明者】
【氏名】リンーリン ワン
(72)【発明者】
【氏名】ミンフア ウー
(72)【発明者】
【氏名】ジー ガオ
(72)【発明者】
【氏名】ルイホン リウ
(57)【要約】
複数の半導体ダイにわたって生成された割込みを集約するために集中型割込みコントローラを実装するためのシステム、装置及び方法が開示される。システムは、複数の半導体ダイ上に複数の割込みソースを含む。何れかの半導体ダイ上の集中型割込みコントローラは、複数の半導体ダイ上の複数の割込みソースから割込みを受信し、集約する。これは、割込みを処理する責任があるプロセッサ及びオペレーティングシステムに割込みを転送するための単一の送信ポイントを容易にする。各割込みソースは、割込みを割込みコントローラに伝達する場合にIDを埋め込む。これにより、割込みコントローラは割込みソース間を区別し、何れのソースが所定の割込みを生成したかを識別することができる。割込みコントローラは、割込みをプロセッサに転送する場合に、割込みのソースの指標をプロセッサに伝達する。
【選択図】図3
【特許請求の範囲】
【請求項1】
装置であって、
複数の半導体ダイのうち第1の半導体ダイにおけるマスタ割込みコントローラを備え、
前記マスタ割込みコントローラは、
通信リンクを介して、前記複数の半導体ダイのうち少なくとも前記第1の半導体ダイ内の第1の割込みソース及び第2の半導体ダイ内の第2の割込みソースから割込みを受信することと、
所定の割込みを受信することに応じて、何れのソースが前記所定の割込みを生成したかを決定することと、
何れのソースが前記所定の割込みを生成したかの指標とともに、プロセッサによる処理のために前記所定の割込みを前記プロセッサに伝達することと、
を行うように構成されている、
装置。
【請求項2】
前記第1の半導体ダイは、第1の識別子(ID)を有し、前記第2の半導体ダイは、前記第1のIDとは異なる第2のIDを有する、
請求項1の装置。
【請求項3】
前記マスタ割込みコントローラは、前記第1の割込みソースによって生成された割込みとともに、前記第1の割込みソースから前記第1のIDを受信する、
請求項2の装置。
【請求項4】
前記マスタ割込みコントローラは、物理イニシエータIDを論理イニシエータIDにマッピングするように構成されている、
請求項1の装置。
【請求項5】
前記マスタ割込みコントローラは、割込みとともに受信した物理イニシエータIDを用いてマッピングテーブルにアクセスすることによって、前記割込みを生成するソースの論理イニシエータIDを決定する、
請求項4の装置。
【請求項6】
前記第1の割込みソースは、第1の物理イニシエータ識別子(ID)を有し、前記第2の割込みソースは、前記第1の物理イニシエータIDとは異なる第2の物理イニシエータIDを有する、
請求項1の装置。
【請求項7】
前記プロセッサは、論理イニシエータIDをゲストオペレーティングシステムIDにマッピングするマッピングテーブルを含む、
請求項1の装置。
【請求項8】
方法であって、
マスタ割込みコントローラが、少なくとも第1の半導体ダイ上の第1の割込みソース及び第2の半導体ダイ上の第2の割込みソースから割込みを受信することと、
所定の割込みを受信することに応じて、何れのソースが前記所定の割込みを生成したかを決定することと、
何れのソースが前記所定の割込みを生成したかの指標とともに、プロセッサによる処理のために前記所定の割込みを前記プロセッサに伝達することと、を含む、
方法。
【請求項9】
前記第1の半導体ダイは、第1の識別子(ID)を有し、前記第2の半導体ダイは、前記第1のIDとは異なる第2のIDを有する、
請求項8の方法。
【請求項10】
前記第1の割込みソースが、前記第1の割込みソースによって生成された割込みとともに、前記第1のIDを前記マスタ割込みコントローラに送信することを含む、
請求項9の方法。
【請求項11】
前記マスタ割込みコントローラが、物理イニシエータIDを論理イニシエータIDにマッピングすることを含む、
請求項8の方法。
【請求項12】
前記マスタ割込みコントローラが、割込みとともに受信した物理イニシエータIDを用いてマッピングテーブルにアクセスすることによって、前記割込みを生成するソースの論理イニシエータIDを決定することを含む、
請求項11の方法。
【請求項13】
前記第1の半導体ダイは、第3の割込みソースを含み、前記第1の割込みソースは、第1の識別子(ID)を有し、前記第2の割込みソースは、前記第1のIDとは異なる第2のIDを有し、前記第3の割込みソースは、前記第2のID及び前記第1のIDとは異なる第3のIDを有する、
請求項8の方法。
【請求項14】
論理イニシエータIDをゲストオペレーティングシステムIDにマッピングするマッピングテーブルを維持することと、
前記所定の割込みに対応する所定の論理イニシエータIDを用いて前記マッピングテーブルにアクセスすることによって、前記所定の割込みに対応するゲストオペレーティングシステムを決定することと、を含む、
請求項8の方法。
【請求項15】
システムであって、
複数の半導体ダイと、
マスタ割込みコントローラと、を備え、
前記マスタ割込みコントローラは、
第1の半導体ダイ上の第1の割込みソース及び第2の半導体ダイ上の第2の割込みソースから割込みを受信することと、
所定の割込みを受信することに応じて、何れのソースが前記所定の割込みを生成したかを決定することと、
何れのソースが前記所定の割込みを生成したかの指標とともに、プロセッサによる処理のために前記所定の割込みを前記プロセッサに伝達することと、
を行うように構成されている、
システム。
【請求項16】
前記第1の半導体ダイは、第1の識別子(ID)を有し、前記第2の半導体ダイは、前記第1のIDとは異なる第2のIDを有する、
請求項15のシステム。
【請求項17】
前記第1の割込みソースは、前記第1の割込みソースによって生成された割込みとともに、前記第1のIDを前記マスタ割込みコントローラに送信するように構成されている、
請求項16のシステム。
【請求項18】
前記マスタ割込みコントローラは、物理イニシエータIDを論理イニシエータIDにマッピングするように構成されている、
請求項15のシステム。
【請求項19】
前記マスタ割込みコントローラは、割込みとともに受信した物理イニシエータIDを用いてマッピングテーブルにアクセスすることによって、前記割込みを生成するソースの論理イニシエータIDを決定するように構成されている、
請求項18のシステム。
【請求項20】
前記第1の半導体ダイは、第3の割込みソースを含み、前記第1の割込みソースは、第1の識別子(ID)を有し、前記第2の割込みソースは、前記第1のIDとは異なる第2のIDを有し、前記第3の割込みソースは、前記第2のID及び前記第1のIDとは異なる第3のIDを有する、
請求項15のシステム。
【発明の詳細な説明】
【背景技術】
【0001】
(関連技術の説明)
モバイルフォン、携帯情報端末(personal digital assistant、PDA)、デジタルカメラ、ポータブルプレーヤ、ゲーム機及び他のデバイス等のコンピューティングデバイスは、より多くの性能及び特徴をますます小さな空間に統合することを必要とする。その結果、プロセッサダイの密度及び単一の集積回路(integrated circuit、IC)パッケージ内に集積されるダイの数が増加した。いくつかの従来のマルチチップモジュールは、キャリア基板上に、又は、場合によっては、次にキャリア基板上に実装されるインターポーザ(いわゆる「2.5D」)上に並んで実装された2つ以上の半導体チップを含む。
【0002】
本明細書に記載の方法及び機構の利点は、添付の図面と併せて以下の説明を参照することによってより良く理解され得る。
【図面の簡単な説明】
【0003】
図1】コンピューティングシステムの一実施形態のブロック図である。
図2】いくつかの実施形態による、GPUチップレットを採用する処理システムのブロック図である。
図3】コンピューティングシステムの別の実施形態のブロック図である。
図4】割込みクライアントをパーティション、ダイ及びクライアントIDにマッピングするためのシングルパーティションモードテーブルを示す図である。
図5】割込みクライアントをパーティション、ダイ及びクライアントIDにマッピングするためのデュアルパーティションモードテーブルを示す図である。
図6】割込みクライアントをパーティション、ダイ及びクライアントIDにマッピングするためのクォータパーティションモードテーブルを示す図である。
図7】マスタ割込みコントローラマッピングテーブルの一実施形態を示す図である。
図8】CPUマッピングテーブルの一実施形態を示す図である。
図9】複数の半導体ダイのための集中型割込みコントローラを動作させるための方法の一実施形態を示す一般化されたフロー図である。
図10】複数のマッピング方式に従って割込みソースIDを変換するための方法の一実施形態を示す一般化されたフロー図である。
図11】クライアントからゲストOSへの割込みを変換するための方法の一実施形態を示す一般化されたフロー図である。
図12】特定のパーティションモード中に動作するようにチップレットGPUを構成するための方法の一実施形態を示す一般化されたフロー図である。
図13】異なるパーティションモードについて物理イニシエータIDを論理イニシエータIDにマッピングするための方法の一実施形態を示す一般化されたフロー図である。
【発明を実施するための形態】
【0004】
以下の説明では、本明細書に提示される方法及び機構の十分な理解を提供するために、多数の具体的な詳細が記載されている。しかしながら、当業者は、これらの具体的な詳細なしに様々な実施形態が実施され得ることを認識すべきである。いくつかの例では、本明細書において説明されるアプローチを不明瞭にすることを避けるために、周知の構造、構成要素、信号、コンピュータプログラム命令及び技術が詳細に示されていない。説明を簡単且つ明確にするために、図に示される要素は必ずしも縮尺通りに描かれているわけではないことが理解されよう。例えば、いくつかの要素の寸法は、他の要素に対して誇張されている場合がある。
【0005】
複数の半導体ダイにわたって生成された割込みを集約するために集中型割込みコントローラを実装するための様々なシステム、装置及び方法が本明細書で開示される。一実施形態では、システムは、複数の半導体ダイ上に複数の割込みソースを含む。何れかの半導体ダイ上の集中型割込みコントローラは、複数の半導体ダイ上の複数の割込みソースから割込みを受信し、集約する。これは、割込みを処理する責任があるプロセッサ及びオペレーティングシステムに割込みを転送するための単一の送信ポイントを容易にする。各割込みソースは、割込みを割込みコントローラに伝達する場合にIDを埋め込む。これにより、割込みコントローラは、割込みソース間を区別し、何れのソースが所定の割込みを生成したかを識別することができる。割込みコントローラは、割込みをプロセッサに転送する場合に、割込みのソースの指標をプロセッサに伝達する。
【0006】
図1を参照すると、コンピューティングシステム100の一実施形態のブロック図が示されている。一実施形態では、コンピューティングシステム100は、少なくともプロセッサ105A~105N、入力/出力(input/output、I/O)インターフェース120、バス125、メモリコントローラ130、ネットワークインターフェース135、メモリデバイス140、ディスプレイコントローラ150、及び、ディスプレイ155を含む。他の実施形態では、コンピューティングシステム100は、他の構成要素を含み、及び/又は、コンピューティングシステム100は、別様に構成される。プロセッサ105A~105Nは、システム100に含まれる任意の数のプロセッサを表す。
【0007】
一実施形態では、プロセッサ105Aは、中央処理ユニット(central processing unit、CPU)等の汎用プロセッサである。この実施形態では、プロセッサ105Aは、システム100内の他のプロセッサのうち1つ以上と通信するための、及び/又は、それらのプロセッサのうち1つ以上の動作を制御するためのドライバ110(例えば、グラフィックドライバ)を実行する。実施形態に応じて、ドライバ110は、ハードウェア、ソフトウェア及び/又はファームウェアの任意の好適な組み合わせを使用して実装することができることに留意されたい。一実施形態では、プロセッサ105Nは、データを処理し、並列処理作業負荷を実行し、ディスプレイコントローラ150がディスプレイ155を駆動するためのピクセルをレンダリングし、及び/又は、他の作業負荷を実行するチップレットグラフィックス処理ユニット(graphics processing unit、GPU)等の高度並列アーキテクチャを有するデータ並列プロセッサである。
【0008】
チップレットGPUは、複数の半導体ダイにわたってグラフィックス処理タスクを実行する複雑な集積回路である。例えば、GPUは、ビデオゲームアプリケーション等のように、エンドユーザアプリケーションによって必要とされるグラフィックス処理タスクを実行する。また、GPUは、グラフィックスに関連しない他のタスクを実行するためにますます使用されている。システム100に含まれ得る他のデータ並列プロセッサには、デジタル信号プロセッサ(digital signal processor、DSP)、フィールドプログラマブルゲートアレイ(field programmable gate array、FPGA)、及び、特定用途向け集積回路(application specific integrated circuit、ASIC)等が含まれる。いくつかの実施形態では、プロセッサ105A~105Nは、複数のデータ並列プロセッサを含む。
【0009】
メモリコントローラ130は、プロセッサ105A~105Nによってアクセス可能な任意の数及びタイプのメモリコントローラを表す。メモリコントローラ130は、プロセッサ105A~105Nから分離されているものとして示されているが、これは、単に1つの可能な実施形態を表すことを理解されたい。他の実施形態では、メモリコントローラ130は、プロセッサ105A~105Nのうち1つ以上の内部に埋め込むことができ、及び/又は、メモリコントローラ130は、プロセッサ105A~105Nのうち1つ以上と同じ半導体ダイ上に位置することができる。メモリコントローラ130は、任意の数及びタイプのメモリデバイス140に結合される。メモリデバイス140は、任意の数及びタイプのメモリデバイスを表す。例えば、メモリデバイス140内のメモリのタイプは、ダイナミックランダムアクセスメモリ(Dynamic Random Access Memory、DRAM)、スタティックランダムアクセスメモリ(Static Random Access Memory、SRAM)、NANDフラッシュメモリ、NORフラッシュメモリ、強誘電体ランダムアクセスメモリ(Ferroelectric Random Access Memory、FeRAM)等を含む。メモリデバイス(複数可)140は、メタアプリのためのプログラム命令の第1のセット、ドライバ構成要素のためのプログラム命令の第2のセット等を含むことができるプログラム命令145を記憶する。代替的に、プログラム命令145は、プロセッサ105A及び/又はプロセッサ105Nにローカルなメモリ又はキャッシュデバイスに記憶され得る。
【0010】
I/Oインターフェース120は、任意の数及びタイプのI/Oインターフェース(例えば、周辺構成要素相互接続(peripheral component interconnect、PCI)バス、PCI-Extended(PCI-X)、PCIE(PCI Express)バス、ギガビットイーサネット(登録商標)(gigabit Ethernet、GBE)バス、ユニバーサルシリアルバス(universal serial bus、USB))を表す。様々なタイプの周辺デバイス(図示せず)がI/Oインターフェース120に結合される。そのような周辺デバイスには、ディスプレイ、キーボード、マウス、プリンタ、スキャナ、ジョイスティック、他のタイプのゲームコントローラ、メディア記録デバイス、及び、外部記憶デバイス等が含まれる(が、これらに限定されない)。ネットワークインターフェース135は、ネットワークを介してネットワークメッセージを受信及び送信することができる。
【0011】
様々な実施形態では、コンピューティングシステム100は、コンピュータ、ラップトップ、モバイルデバイス、ゲームコンソール、サーバ、ストリーミングデバイス、ウェアラブルデバイス、又は、様々な他のタイプのコンピューティングシステム若しくはデバイスのうち何れかである。コンピューティングシステム100の構成要素の数は、実施形態ごとに変化することに留意されたい。例えば、他の実施形態では、図1に示される数よりも多い又は少ない各構成要素が存在する。また、他の実施形態では、コンピューティングシステム100は、図1に示されていない他の構成要素を含むことにも留意されたい。加えて、他の実施形態では、コンピューティングシステム100は、図1に示される以外の方法で構築される。
【0012】
図2を参照すると、いくつかの実施形態による、GPUチップレットを採用する処理システム200を示すブロック図が示されている。図示された例では、システム200は、命令を実行するための中央処理装置(central processing unit、CPU)205と、GPUチップレット250A、250B~250N(まとめてGPUチップレット250)等の1つ以上のGPUチップレットのアレイと、を含む。様々な実施形態では、本明細書で使用される場合、「チップレット」という用語は、限定するものではないが、以下の特性を含む任意のデバイスを指す。1)チップレットは、完全問題(full problem)を解くために使用される計算ロジックの一部を含むアクティブシリコンダイを含む(すなわち、計算作業負荷は、これらのアクティブシリコンダイの複数にわたって分散される)。2)チップレットは、同じ基板上にモノリシックユニットとして一緒にパッケージ化され、3)プログラミングモデルは、これらの個別の計算ダイが単一のモノリシックユニットであるという概念を維持する(すなわち、各チップレットは、計算作業負荷を処理するためにチップレットを使用するアプリケーションに個別のデバイスとして露出されない)。
【0013】
様々な実施形態では、CPU205は、バス240を介して、ダイナミックランダムアクセスメモリ(dynamic random access memory、DRAM)等のシステムメモリ230に接続される。様々な実施形態では、システムメモリ230は、スタティックランダムアクセスメモリ(static random access memory、SRAM)、不揮発性RAM等を含む他のタイプのメモリを使用して実装することもできる。一実施形態では、システムメモリ230は、割込みに関連付けられたデータを記憶するためのデータ構造235A~235Nを含む。図示した例では、構造は、リングバッファ235A~235Nであり、システム200の各ゲストOSに対して1つのリングバッファがある。換言すれば、各リングバッファ235A~235Nは、1つのゲストOSに割り当てられる。一実施形態では、各リングバッファ235A~235Nは、対応するゲストOSのためにマスタ割込みコントローラ(master interrupt controller、MIC)255から受信された割込みに関連付けられたメタデータを記憶する。構造235A~235Nは、リングバッファとして図2の実施形態に示されているが、他の構造も可能であり、企図される。次に、割込みは、MIC255から受信された順序で処理される。
【0014】
例示される実施形態では、CPU205は、周辺構成要素相互接続(peripheral component interconnect、PCI)バス、PCI-Eバス又は他のタイプのバスとして実装されるバス240を介して、システムメモリ230と、GPUチップレット250とも通信する。しかしながら、システム200のいくつかの実施形態は、直接接続を通じて、又は、他のバス、ブリッジ、スイッチ、ルータ等を介してCPU205と通信するGPUチップレット250を含む。
【0015】
例示されるように、CPU205は、グラフィックコマンド及びユーザモードドライバ220(又はカーネルモードドライバ等の他のドライバ)を生成するために1つ以上のアプリケーション210を実行する等のように、いくつかのプロセスを含む。様々な実施形態では、1つ以上のアプリケーション210は、システム200又はオペレーティングシステム(operating system、OS)において作業を生成するアプリケーション等のように、GPUチップレット250の機能を利用するアプリケーションを含む。アプリケーション210は、グラフィカルユーザインターフェース(graphical user interface、GUI)及び/又はグラフィックスシーンをレンダリングするようにGPUチップレット250に命令する1つ以上のグラフィックス命令を含むことができる。例えば、グラフィックス命令は、GPUチップレット250によってレンダリングされる1つ以上のグラフィックスプリミティブのセットを定義する命令を含み得る。
【0016】
いくつかの実施形態では、アプリケーション210は、グラフィックスアプリケーションプログラミングインターフェース(application programming interface、API)を利用して、ユーザモードドライバ220(又は同様のGPUドライバ)を呼び出す。ユーザモードドライバ220は、1つ以上のグラフィックスプリミティブを表示可能なグラフィックス画像にレンダリングするために、1つ以上のGPUチップレットのアレイに1つ以上のコマンドを発行する。ユーザモードドライバ220に対してアプリケーション210によって発行されたグラフィックス命令に基づいて、ユーザモードドライバ220は、グラフィックスのレンダリングを実行するためにGPUチップレットの1つ以上の動作を指定する1つ以上のグラフィックスコマンドを生成する。いくつかの実施形態では、ユーザモードドライバ220は、CPU205上で動作しているアプリケーション210のうち一部である。例えば、ユーザモードドライバ220は、CPU205上で動作しているゲームアプリケーションの一部であり得る。同様に、カーネルモードドライバ(図示せず)は、CPU205上で動作しているオペレーティングシステムの一部であり得る。
【0017】
図2の実施形態では、通信リンク260(例えば、クロスリンク260)が、GPUチップレット250(すなわち、GPUチップレット250A~250N)を互いに接続する。チップレットアレイ内のGPUチップレットの数は、設計上の選択の問題であり、実施形態ごとに異なり得ることに留意されたい。様々な実施形態では、クロスリンク260は、高密度クロスリンク(HDCL)ダイインターポーザ等の相互接続チップ、又は、チップレット間通信のための他の同様の技術を含む。一実施形態では、チップレット250Aは、チップレット250A~250Nにわたって生成された割込みを集約するMIC255を含む。MIC255は、OS215及び/又はドライバ220によって処理されるようにCPU205に割込みを転送する。MIC255の動作についての更なる詳細は、本開示の残りの部分を通して提供される。
【0018】
図3を参照すると、コンピューティングシステム300の別の実施形態のブロック図が示されている。図3に示されるように、コンピューティングシステム300は、中央処理装置(CPU)310、ルートコンプレックス320、スイッチ330、及び、グラフィックス処理装置(GPU)340を含む。一実施形態では、GPU340は、任意の数の半導体ダイを表すダイ350A~350Dを含むチップレットGPUである。コンピューティングシステム300は、図を不明瞭にすることを避けるために示されていない任意の数の他の構成要素(例えば、電圧レギュレータ、メモリデバイス、ネットワークインターフェース、周辺デバイス)を含み得る。コンピューティングシステム300は、コンピュータ、ラップトップ、サーバ、スーパーコンピュータ、モバイルデバイス等の先に列挙したデバイス又はシステムのうち何れかであり得る。コンピューティングシステム300は、他のデバイス又はシステムに組み込まれてもよい。任意の様々な他のタイプのデバイス又はシステムが可能であり、企図される。
【0019】
CPU310は、任意のタイプのCPU又は他のタイプのプロセッサを表す。実施形態に応じて、CPU310は、複数のコア又は単一のコアを含むことができる。一実施形態では、CPU310は、システム300の制御ソフトウェア(例えば、オペレーティングシステム(OS))を実行する。オペレーティングシステムは、システム300の動作を制御して、システムの所望の機能を達成する。オペレーティングシステムは、ドライバ、制御ソフトウェア等の様々なソフトウェアプログラムを含み、及び/又は、それらと相互作用することができる。ルートコンプレックス320は、スイッチ330をCPU310に接続するとともに、図を不明瞭にすることを避けるために図3には示されていない他の任意の数及びタイプの他の構成要素に接続する。一実施形態では、スイッチ330は、周辺構成要素相互接続エクスプレス(peripheral component interconnect express、PCIE)スイッチである。他の実施形態では、スイッチ330は、任意の様々な他のタイプのスイッチである。
【0020】
図3に示されるように、チップレットGPU340は、4つのダイ350A~350Dを含む。他の実施形態では、チップレットGPU340は、他の数(例えば、8、10、16、25、32)のダイを含むことができる。示されるように、各ダイ350A~350Dは、複数の割込みクライアントを含む。例えば、ダイ350Aは、割込みクライアント355A~355Bを含み、ダイ350Bは、割込みクライアント365A~365Bを含み、ダイ350Cは、割込みクライアント370A~370Bを含み、ダイ350Dは、割込みクライアント375A~375Bを含む。各ダイ350A~350Dは、2つの割込みクライアントを含むものとして示されているが、これは単に例示のためのものであることを理解されたい。他の実施形態では、各ダイ350A~350Dは、他の数の割込みクライアントを含むことができる。また、異なるダイは、異なる数の割込みクライアントを有することができることを理解されたい。例えば、第1のダイは、1つの割込みクライアントを有することができ、第2のダイは、2つの割込みクライアントを有することができ、第3のダイは、3つの割込みクライアントを有することができ、以下同様である。
【0021】
各ダイ350A~350Dは、複数の割込みクライアントを有するものとして示されているが、一実施形態では、ダイ350Aのみが有効化された割込みハンドラ360を有する。場合によっては、ダイ350B~350Dも割込みハンドラを有するが、これらの割込みハンドラは無効にされる。例えば、各ダイ350A~350Dは、一実施形態では同一であり、何れかのダイのみが有効化された割込みハンドラを有し、他のダイは無効化された割込みハンドラを有する。有効化された割込みハンドラは、全てのダイに対するマスタ割込みハンドラである。
【0022】
割込みハンドラ360は、チップレットGPU340のための集中型割込みハンドラとして機能する。割込みハンドラ360は、本明細書ではマスタ割込みハンドラ360又は集中型割込みハンドラ360と呼ばれ得ることに留意されたい。また、「割込みハンドラ」及び「割込みコントローラ」という用語は、本明細書において互換的に使用され得ることに留意されたい。一実施形態では、ダイ350A~350D上のクライアントからの全ての割込みは、割込みハンドラ360にルーティングされる。次いで、ダイ350A~350D上の割込みクライアントの何れかから割込みを受信すると、割込みハンドラ360は、CPU310上で実行される制御ソフトウェアに割込みを転送する。一実施形態では、割込みハンドラ360は、クライアントによって生成された割込みデータとともに転送するクッキーを生成する。クッキーは、クライアントの識別子(identifier、ID)、ダイのID、及び/又は、他のメタデータ等の情報を含むことができる。
【0023】
様々な実施形態では、マスタ割込みハンドラ360は、割込みイニシエータについてハードウェアIDをソフトウェアIDにマッピングするマッピングテーブル363を含む。一実施形態では、マッピングテーブル363は、いくつかのパーティションモードについて、物理ダイIDを論理ダイIDにマッピングする。図3に示される4ダイチップレットGPU340の構成は、一実施形態では、クォータパーティション使用に対応する。しかしながら、4ダイチップレットGPU340は、単一のOSに対応する2つのダイ又は4つ全てのダイを有するデュアルパーティションモード及びシングルパーティションモードもサポートすることができる。デュアルパーティションモード及びシングルパーティションモードでは、パーティションID+クライアントIDは割込みイニシエータを識別するのに十分ではなく、その場合、パーティションID+ダイID+クライアントIDが割込みイニシエータを識別するために使用される。一実施形態では、CPU310は、ソフトウェアIDを割込みイニシエータのゲストOSにマッピングするマッピングテーブル315を含む。一実施形態では、各ソフトウェアIDは、異なるゲストオペレーティングシステム(OS)に対応する。CPU310が割込みハンドラ360から割込みを受信すると、割込みは、CPU310によって認識可能なIDを使用して割込みイニシエータを識別するソフトウェアIDを含む。CPU310は、このソフトウェアIDを、この特定の割込みを開始した割込みイニシエータの関連ゲストOSにマッピングする。次いで、CPU310は、関連付けられたゲストOSと一貫した方法で割込みを処理することができる。
【0024】
例えば、シングルパーティションモードでは、1つのOSのみが存在する。このOSは、4つの物理ダイの全てを所有し、パーティションID(有効値:0)+ダイID(有効値:0、1、2、3)+クライアントIDは、割込みイニシエータを識別するために使用される。デュアルパーティションモードでは、各OSは2つの物理ダイ(別々に0/1及び2/3)を所有する。しかし、ソフトウェアの観点から、各OSは、それがダイ0/1を所有すると考える。デュアルパーティションモードでは、リマッピングテーブル363は、物理ダイID(2/3)を論理ダイID(0/1)にマッピングし、その結果、両方のOSは、ダイ0及びダイ1のみを論理的に見る。この場合、パーティションID(有効値:0、1)は、ゲストOSを選択するために使用することができ、リマッピングされたダイID(有効値:0、1)+クライアントIDは、各OSに割込みイニシエータ情報を伝えることができる。クォータパーティションモードでは、各OSが1つの物理ダイを所有する。ソフトウェアの観点から、各OSは、ダイ0を所有すると考える。したがって、クォータパーティションモードでは、マッピングテーブル363は、物理ダイID(1/2/3)を論理ダイID(0)にマッピングし、その結果、OSは、ダイ0のみを論理的に見ることができる。パーティションID(有効値:0、1、2、3)は、ゲストOSを選択するために使用することができ、リマッピングされたダイID(有効値:0)+クライアントIDは、各OSに割込みイニシエータ情報を伝えることができる。
【0025】
図4を参照すると、シングルパーティションモードにある場合に割込みクライアントをパーティション、ダイ及びクライアントIDにマッピングするためのテーブル400の一実施形態が示されている。表400は、シングルパーティションモードに対するシステム300(図3)の割込みクライアント構成に適用される。シングルパーティションモードでは、1つのOSのみが存在し、OSは4つの物理ダイ全てを所有する。割込みが何れのクライアントから来たかをOSが知るために、OSはダイID及びクライアントIDを使用する。シングルパーティションモードでは、パーティションが1つしかないので、パーティションIDは不要である。したがって、割込みハンドラ(例えば、図3の割込みハンドラ360)は、割込みをOSに転送する場合に、ダイID及びクライアントIDをOSに送信する。ダイIDフィールド430とクライアントIDフィールド440との組み合わせは、シングルパーティションモードのための論理イニシエータIDフィールド415である。一実施形態では、テーブル400は、シングルパーティションモードについて物理イニシエータIDを論理イニシエータIDにマッピングするために、割込みハンドラによって使用される。代替として、別の実施形態では、割込みハンドラは、テーブルを使用するのではなく、物理-論理マスクを使用して、イニシエータから受信された物理IDを、CPU及び/又はOSによって使用可能な論理IDに変換する。他の実施形態では、割込みハンドラは、他の技術を使用して、物理イニシエータIDを論理イニシエータIDにマッピングする。
【0026】
図5を参照すると、デュアルパーティションモードにある場合に割込みクライアントをパーティション、ダイ及びクライアントIDにマッピングするためのテーブル500の一実施形態が示されている。テーブル500は、デュアルパーティションモードのためのシステム300(図3)の割込みクライアント構成に適用される。デュアルパーティションモードでは、2つのOSが存在し、各OSは2つの物理ダイを所有する。一実施形態では、ダイ350A及びダイ350Bはパーティション0内にあり、ダイ350C及びダイ350Dはパーティション1内にある。各OSは1つのパーティションを所有する。デュアルパーティションモードでは、パーティション->論理ダイIDルックアップは、物理ダイID0/1/2/3を論理ダイID0/1/0/1にマッピングする。パーティションIDは、デュアルパーティションモードでゲストOSルックアップを実行するために使用される。割込みが何れのクライアントから来たかをOSが知るために、OSはダイID及びクライアントIDを使用する。デュアルパーティションモードでは、パーティションIDはOSを識別し、ダイID及びクライアントIDは、物理割込みイニシエータを識別するためにOSによって使用される。一実施形態では、パーティションIDフィールド520、ダイIDフィールド530及びクライアントIDフィールド540の組み合わせが、デュアルパーティションモードのための論理イニシエータIDフィールド515である。代替として、別の実施形態では、割込みハンドラは、パーティションIDフィールド520を使用してOSを識別し、次いで、ダイIDフィールド530とクライアントIDフィールド540との組み合わせを識別されたOSに送信する。この実施形態では、論理イニシエータIDフィールド515は、ダイIDフィールド530及びクライアントIDフィールド540のみである。
【0027】
図6を参照すると、クォータパーティションモードにある場合に割込みクライアントをパーティション、ダイ及びクライアントIDにマッピングするためのテーブル600の一実施形態が示されている。テーブル600は、クォータパーティションモードのためのシステム300(図3)の割込みクライアント構成に適用される。クォータパーティションモードでは、4つのOSが存在し、各OSは、1つの物理ダイを所有し、単一のパーティションに対応する。クォータパーティションモードでは、パーティション->論理ダイIDルックアップは、物理ダイID0/1/2/3を論理ダイID0/0/0/0にマッピングする。パーティションIDは、クォータパーティションモードでゲストOSルックアップを実行するために使用される。割込みが何れのクライアントから来たかをOSが知るために、OSはクライアントIDを使用する。クォータパーティションモードでは、パーティションIDはOSを識別し、クライアントIDは物理割込みイニシエータを識別するためにOSによって使用される。一実施形態では、パーティションIDフィールド620とクライアントIDフィールド640との組み合わせは、クォータパーティションモードのための論理イニシエータIDフィールド615である。代替として、別の実施形態では、割込みハンドラは、パーティションIDフィールド620を使用してOSを識別し、次いで、識別されたOSにクライアントIDフィールド640を送信する。この実施形態では、論理イニシエータIDフィールド615は、クライアントIDフィールド640だけである。
【0028】
図7を見ると、マスタ割込みコントローラマッピングテーブル700の一実施形態の図が示されている。一実施形態では、テーブル700のエントリは、(図3の)テーブル363に含まれる。一実施形態では、テーブル700のエントリは、2つのフィールド、すなわち、物理イニシエータ識別子(ID)フィールド710及び論理イニシエータIDフィールド720を含む。任意の数のエントリをテーブル700に含めることができ、エントリは、物理イニシエータID710A~710N及び論理イニシエータID720A~720Nについて示されている。他の実施形態では、テーブル700のエントリは、他の数及び/又はタイプのフィールドを含むことができ、他の適切な方法で構造化され得る。「物理イニシエータ」及び「ハードウェアイニシエータ」という用語は、本明細書において互換的に使用することができることに留意されたい。「論理イニシエータ」及び「ソフトウェアイニシエータ」という用語は、本明細書において互換的に使用することができることにも留意されたい。物理イニシエータIDフィールド710及びイニシエータIDフィールド720は、任意の数のビットで符号化することができ、ビット数は、実施形態、パーティションモード、チップレットGPUの構成等に応じて変化する。
【0029】
一実施形態では、マスタ割込みコントローラ(例えば、マスタ割込みコントローラ360)がクライアントから割込みを受信すると、マスタ割込みコントローラは、物理イニシエータIDを用いてテーブル700のルックアップを実行して、対応する論理イニシエータIDを決定する。次に、マスタ割込みコントローラは、論理イニシエータIDを割込みとともにソフトウェアに転送する。マスタ割込みコントローラは、割込みから物理イニシエータIDを破棄することができ、又は、マスタ割込みコントローラは、実施形態に応じて、ソフトウェアに転送される割込みに物理イニシエータIDの少なくとも一部を含めることができる。
【0030】
図8を参照すると、CPUマッピングテーブル800の一実施形態の図が示されている。一実施形態では、テーブル800のエントリは、(図3の)テーブル315に含まれる。一実施形態では、テーブル800のエントリは、論理イニシエータIDフィールド810及びゲストOS IDフィールド820という2つのフィールドを含む。任意の数のエントリをテーブル800に含めることができ、エントリは、論理イニシエータID810A~N及びゲストOS ID820A~820Nについて示されている。他の実施形態では、テーブル800のエントリは、他の数及び/又はタイプのフィールドを含むことができ、他の適切な方法で構造化され得る。論理イニシエータIDフィールド810及びゲストOS IDフィールド820は、実施形態に応じて任意の数のビットで符号化することができる。
【0031】
一実施形態では、制御ソフトウェア(例えば、図2のOS215、ドライバ220)がマスタ割込みコントローラを介してクライアントから割込みを受信すると、制御ソフトウェアは、論理イニシエータIDを用いてテーブル800のルックアップを実行して、対応するゲストOS IDを決定する。次いで、制御ソフトウェアは、適切なゲストOSプロトコルに従って割込みを処理することができる。
【0032】
図9を参照すると、複数の半導体ダイのための集中型割込みコントローラを動作させるための方法900の一実施形態が示されている。説明のために、この実施形態におけるステップ及び図10図13のステップが順番に示されている。しかしながら、記載された方法の様々な実施形態では、記載された要素のうち1つ以上が、示されたものとは異なる順序で同時に実行されるか、又は、完全に省略されることに留意されたい。必要に応じて、他の追加の要素も実行される。本明細書に記載の様々なシステム又は装置の何れも、方法900(及び方法1000~1300)を実施するように構成される。
【0033】
集中型割込みコントローラは、複数の半導体ダイ上に位置する複数の割込みソースから複数の割込みを受信する(ブロック905)。受信された割込みごとに、割込みコントローラは、何れのソースが割込みを生成したかを決定する(ブロック910)。一実施形態では、割込みコントローラは、物理イニシエータIDを論理イニシエータIDにマッピングするマッピングテーブル(例えば、図3のマッピングテーブル363)を維持する。この実施形態では、割込みコントローラは、受信された割込みから物理イニシエータIDを取り出し、テーブルのルックアップを実行して、取り出された物理イニシエータIDが何れの論理イニシエータIDにマッピングするかを決定する。他の実施形態では、割込みコントローラは、他の技術を使用して、所定の割込みを生成したソースを決定する。
【0034】
次に、各割込みに対して、割込みコントローラは、ソースの指標(指示)とともに割込みをプロセッサに転送する(ブロック915)。次いで、プロセッサは割込みを処理し、割込みの処理が完了した場合に割込みコントローラに応答を伝達する(ブロック920)。次に、割込みコントローラは、完了指標(表示)を割込みソースに転送する(ブロック925)。ブロック925の後、方法900は終了する。
【0035】
図10を参照すると、複数のマッピング方式に従って割込みソースIDを変換するための方法1000の一実施形態が示されている。集中型割込みコントローラは、第1のマッピング方式に従って割込みソースをマッピングする第1のマッピングテーブル(例えば、図3のテーブル363)を維持する(ブロック1005)。プロセッサは、第2のID方式に従って割込みソースをマッピングする第2のマッピングテーブル(例えば、テーブル315)を維持する(ブロック1010)。集中型割込みコントローラは、第1のマッピング方式に従って、第1の割込みソースの第1のIDを第2のIDに変換する(ブロック1015)。集中型割込みコントローラは、割込みとともに、第2のIDをプロセッサに転送する(ブロック1020)。プロセッサは、第2のマッピング方式に従って、第2のIDを第3のIDに変換する(ブロック1025)。次に、プロセッサは、第3のIDについて定義された規則に従って割込みを処理する(ブロック1030)。ブロック1030の後、方法1000は終了する。
【0036】
図11を参照すると、割込みをクライアントからゲストOSのものに変換するための方法1100の一実施形態が示されている。マスタ割込みコントローラは、所定のクライアントから割込みを受信する(ブロック1105)。この説明のために、マスタ割込みコントローラは、複数の異なるクライアントに(直接的又は間接的に)接続され、複数の異なるクライアントから割込みを受信すると仮定する。次に、マスタ割込みコントローラは、所定のクライアントの物理イニシエータIDに関連付けられた論理イニシエータIDを識別する(ブロック1110)。一実施形態では、マスタ割込みコントローラは、所定のクライアントの物理イニシエータIDを用いて、マッピングテーブル(例えば、図3のテーブル363)のルックアップを実行して、所定のクライアントの論理イニシエータIDを識別する。次いで、マスタ割込みコントローラは、所定のクライアントの論理イニシエータIDとともに割込みをプロセッサ(例えば、CPU310)に転送する(ブロック1115)。次に、プロセッサは、所定のクライアントに関連付けられたゲストOSを識別する(ブロック1120)。一実施形態では、マスタ割込みコントローラは、所定のクライアントの論理イニシエータIDを用いて、マッピングテーブル(例えば、テーブル315)のルックアップを実行して、パーティションに関連付けられたゲストOSを識別する。次いで、プロセッサは、識別されたゲストOSに対応する方法で割込みを処理する(ブロック1125)。ブロック1125の後、方法1100は終了する。
【0037】
図12を参照すると、特定のパーティションモード中に動作するように、チップレットGPUを構成するための方法1200の一実施形態が示されている。ハイパーバイザは、所定のパーティションモードで動作するように、チップレットGPUのマスタ割込みコントローラにコマンドを送信する(ブロック1205)。コマンドの受信に応じて、マスタ割込みコントローラは、所定のパーティションモードに従って物理イニシエータIDを論理イニシエータIDにマッピングするようにマッピングテーブルをプログラムする(ブロック1210)。図4図6は、異なるパーティションモードに従ってマッピングテーブルを構成する例を提供する。代替として、別の実施形態では、マスタ割込みコントローラは、所定のパーティションモードに従って物理イニシエータIDを論理イニシエータIDに変換するためのマスクをプログラムする。
【0038】
所定の物理イニシエータから割込みを受信したことに応じて、マスタ割込みコントローラは、所定の物理イニシエータのパーティションIDを使用して、所定の物理イニシエータに対応する所定のゲストOSを識別する(ブロック1215)。次に、マスタ割込みコントローラは、マッピングテーブルを使用して、所定の物理イニシエータの物理イニシエータIDを所定の論理イニシエータIDにマッピングする(ブロック1220)。次いで、マスタ割込みコントローラは、所定の論理イニシエータIDを有する所定のゲストOSに割込みを転送する(ブロック1225)。ブロック1225の後、方法1200は終了する。
【0039】
図13を参照すると、異なるパーティションモードについて物理イニシエータIDを論理イニシエータIDにマッピングするための方法1300の一実施形態が示されている。チップレットGPUのマスタ割込みコントローラが、所定のイニシエータから割込みを受信する(ブロック1305)。チップレットGPUが第1のパーティションモードにある場合(条件ブロック1310、「第1」)、マスタ割込みコントローラは、IDフィールドの第1のサブセットを使用して、所定のイニシエータのための論理イニシエータIDを生成する(ブロック1315)。例えば、一実施形態では、チップレットGPUがシングルパーティションモードにある場合、マスタ割込みコントローラは、所定のイニシエータのパーティションIDを無視しながら、ダイIDとクライアントIDとの組み合わせを論理イニシエータIDとして使用する。そうではなく、チップレットGPUが第2のパーティションモードにある場合(条件ブロック1310、「第2」)、マスタ割込みコントローラは、IDフィールドの第2のサブセットを使用して、所定のイニシエータの論理イニシエータIDを識別し、第2のサブセットは第1のサブセットとは異なる(ブロック1320)。例えば、一実施形態では、4ダイチップレットGPUがクォータパーティションモードにある場合、マスタ割込みコントローラは、所定のイニシエータのダイIDを無視しながら、パーティションIDとクライアントIDとの組み合わせを論理イニシエータIDとして使用する。ブロック1315及び1320の後、方法1300は終了し得る。方法1300は、2つの異なるパーティションモードがある場合の例を説明することに留意されたい。しかしながら、他の実施形態では、方法1300は、2つ以上の異なるタイプのパーティションモードについて実行されるように変更され得ることを理解されたい。これらの実施形態では、条件ブロック1310は、3つ以上の選択肢を有し、選択されるサブセットは、特定のパーティションモードに基づく。
【0040】
様々な実施形態では、ソフトウェアアプリケーションのプログラム命令を使用して、本明細書に記載の方法及び/又は機構を実装する。例えば、汎用又は専用プロセッサによって実行可能なプログラム命令が企図される。様々な実施形態では、そのようなプログラム命令は、高レベルプログラミング言語によって表される。他の実施形態では、プログラム命令は、高レベルプログラミング言語からバイナリ、中間又は他の形式にコンパイルされる。代替的に、ハードウェアの挙動又は設計を説明するプログラム命令が書かれる。そのようなプログラム命令は、C等の高レベルプログラミング言語によって表される。代替的に、Verilog等のハードウェア設計言語(hardware design language、HDL)が使用される。様々な実施形態では、プログラム命令は、様々な非一時的なコンピュータ可読記憶媒体のうち何れかに記憶される。記憶媒体は、プログラム実行のためにプログラム命令をコンピューティングシステムに提供するために、使用中にコンピューティングシステムによってアクセス可能である。一般的に言えば、そのようなコンピューティングシステムは、少なくとも1つ以上のメモリと、プログラム命令を実行するように構成された1つ以上のプロセッサと、を含む。
【0041】
上記の実施形態は、実施形態の非限定的な例にすぎないことを強調しておきたい。上記の開示が十分に理解されると、多数の変形及び修正が当業者に明らかになるであろう。以下の特許請求の範囲は、全てのそのような変形及び修正を包含すると解釈されることが意図されている。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
【国際調査報告】