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

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

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

特表2024-546867IOMMUにコロケート(collocated)されたリソースマネージャ
<>
  • 特表-IOMMUにコロケート(collocated)されたリソースマネージャ 図1
  • 特表-IOMMUにコロケート(collocated)されたリソースマネージャ 図2
  • 特表-IOMMUにコロケート(collocated)されたリソースマネージャ 図3
  • 特表-IOMMUにコロケート(collocated)されたリソースマネージャ 図4
  • 特表-IOMMUにコロケート(collocated)されたリソースマネージャ 図5
  • 特表-IOMMUにコロケート(collocated)されたリソースマネージャ 図6
  • 特表-IOMMUにコロケート(collocated)されたリソースマネージャ 図7
  • 特表-IOMMUにコロケート(collocated)されたリソースマネージャ 図8
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-12-26
(54)【発明の名称】IOMMUにコロケート(collocated)されたリソースマネージャ
(51)【国際特許分類】
   G06F 12/06 20060101AFI20241219BHJP
   G06F 12/1081 20160101ALI20241219BHJP
【FI】
G06F12/06 515J
G06F12/1081
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2024535500
(86)(22)【出願日】2022-11-18
(85)【翻訳文提出日】2024-07-09
(86)【国際出願番号】 US2022050488
(87)【国際公開番号】W WO2023129300
(87)【国際公開日】2023-07-06
(31)【優先権主張番号】17/565,336
(32)【優先日】2021-12-29
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】591016172
【氏名又は名称】アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド
【氏名又は名称原語表記】ADVANCED MICRO DEVICES INCORPORATED
(74)【代理人】
【識別番号】100108833
【弁理士】
【氏名又は名称】早川 裕司
(74)【代理人】
【識別番号】100111615
【弁理士】
【氏名又は名称】佐野 良太
(74)【代理人】
【識別番号】100162156
【弁理士】
【氏名又は名称】村雨 圭介
(72)【発明者】
【氏名】セルゲイ ブラゴドゥロフ
(72)【発明者】
【氏名】マサブ アーマッド
【テーマコード(参考)】
5B160
5B205
【Fターム(参考)】
5B160AA14
5B160MM03
5B205KK14
5B205MM03
5B205RR01
(57)【要約】
コンピューティングデバイス内のリソースを管理するためのデバイス、方法及びシステムが提供される。リソースの使用量に関する情報が取得される。情報に基づいて、プロセッサによるリソースの使用量が今後の期間中に閾値を超えるという予測が生成される。予測に基づいて、プロセッサの動作パラメータが調整される。いくつかの実施形態では、メモリ帯域幅に関する情報が取得される。情報に基づいて、第1のメモリデバイスに記憶されたメモリ領域が今後の期間中にメモリ集約型命令によってアドレス指定されるという予測が生成される。予測に基づいて、メモリ領域に記憶されたデータが第2のメモリデバイスに移動される。
【選択図】図3
【特許請求の範囲】
【請求項1】
リソースマネジメントデバイスであって、
メモリ帯域幅の利用率に関する情報を取得するように構成された回路と、
前記情報に基づいて、第1のメモリデバイスに記憶されたメモリ領域が今後の期間中にメモリ集約型命令によってアドレス指定されるという予測を生成するように構成された回路と、
前記予測に基づいて、前記メモリ領域に記憶されたデータを第2のメモリデバイスに移動するように構成された回路と、を備える、
リソースマネジメントデバイス。
【請求項2】
前記リソースマネジメントデバイスは、入出力メモリマネジメントユニット(IOMMU)、IOMMUと通信するプロセッサ、及び/又は、IOMMUと統合されたプロセッサを備える、
請求項1のリソースマネジメントデバイス。
【請求項3】
前記情報は、以前に実行された命令が、メモリ集約型命令であるかどうかを示す、
請求項1のリソースマネジメントデバイス。
【請求項4】
前記情報は、以前に実行された命令が、指定された命令であるかどうかを示す、
請求項1のリソースマネジメントデバイス。
【請求項5】
前記情報は、以前に実行された命令が、特定のタイプの命令であるか否かを示す、
請求項1のリソースマネジメントデバイス。
【請求項6】
前記情報に自己相関関数(ACF)を適用することによって前記予測を生成するように構成された回路を備える、
請求項1のリソースマネジメントデバイス。
【請求項7】
前記情報に人工ニューラルネットワーク(ANN)を適用することによって前記予測を生成するように構成された回路を備える、
請求項1のリソースマネジメントデバイス。
【請求項8】
前記第1のメモリデバイスは、相対的により低い帯域幅のメモリを備え、前記第2のメモリデバイスは、相対的により高い帯域幅のメモリを備える、
請求項1のリソースマネジメントデバイス。
【請求項9】
前記第1のメモリデバイスは、シンクロナスダイナミックランダムアクセスメモリ(SDRAM)、ダブルデータレート(DDR)SDRAM、及び/又は、低電力ダブルデータレート(LPDDR)SDRAMを備える、
請求項1のリソースマネジメントデバイス。
【請求項10】
前記第2のメモリデバイスは、高帯域幅メモリ(HBM)及び/又はキャッシュメモリを備える、
請求項1のリソースマネジメントデバイス。
【請求項11】
リソース管理デバイスであって、
リソースの使用量に関する情報を取得するように構成された回路と、
前記情報に基づいて、プロセッサによるリソースの使用量が今後の期間中に閾値を超えるという予測を生成するように構成された回路と、
前記予測に基づいて、前記プロセッサの動作パラメータを調整するように構成された回路と、を備える、
リソース管理デバイス。
【請求項12】
前記リソースは、電力を含む、
請求項11のリソース管理デバイス。
【請求項13】
前記リソースは、サーマルバジェットを含む、
請求項11のリソース管理デバイス。
【請求項14】
前記動作パラメータは、電圧又は電流を含む、
請求項11のリソース管理デバイス。
【請求項15】
前記動作パラメータは、クロック周波数を含む、
請求項11のリソース管理デバイス。
【請求項16】
前記動作パラメータは、前記プロセッサの一部に対して調整される、
請求項11のリソース管理デバイス。
【請求項17】
前記リソース管理デバイスは、入出力メモリマネジメントユニット(IOMMU)、IOMMUと通信するプロセッサ、及び/又は、IOMMUと統合されたプロセッサを備える、
請求項11のリソース管理デバイス。
【請求項18】
前記情報は、前記プロセッサによるリソースの使用量が以前の期間中に前記閾値を超えているかどうかを示す、
請求項11のリソース管理デバイス。
【請求項19】
前記予測は、前記情報に自己相関関数(ACF)を適用することによって生成される、
請求項11のリソース管理デバイス。
【請求項20】
前記予測は、前記情報に人工ニューラルネットワーク(ANN)を適用することによって生成される、
請求項11のリソース管理デバイス。
【請求項21】
リソースマネジメントデバイスにおいて実施される方法であって、
メモリ帯域幅に関する情報を取得することと、
前記情報に基づいて、第1のメモリデバイスに記憶されたメモリ領域が今後の期間中にメモリ集約型命令によってアドレス指定されるという予測を生成することと、
前記予測に基づいて、前記メモリ領域に記憶されたデータを第2のメモリデバイスに移動することと、を含む、
方法。
【請求項22】
前記リソースマネジメントデバイスは、入出力メモリマネジメントユニット(IOMMU)、IOMMUと通信するプロセッサ、及び/又は、IOMMUと統合されたプロセッサを備える、
請求項21の方法。
【請求項23】
前記情報は、以前に実行された命令が、メモリ集約型命令であるかどうかを示す、
請求項21の方法。
【請求項24】
前記情報は、以前に実行された命令が、指定された命令であるかどうかを示す、
請求項21の方法。
【請求項25】
前記情報は、以前に実行された命令が、特定のタイプの命令であるかどうかを示す、
請求項21の方法。
【請求項26】
前記予測は、前記情報に自己相関関数(ACF)を適用することによって生成される、
請求項21の方法。
【請求項27】
前記予測は、前記情報に人工ニューラルネットワーク(ANN)を適用することによって生成される、
請求項21の方法。
【請求項28】
前記第1のメモリデバイスは、相対的により低い帯域幅のメモリを備え、前記第2のメモリデバイスは、相対的により高い帯域幅のメモリを備える、
請求項21の方法。
【請求項29】
前記第1のメモリデバイスは、シンクロナスダイナミックランダムアクセスメモリ(SDRAM)、ダブルデータレート(DDR)SDRAM、及び/又は、低電力ダブルデータレート(LPDDR)SDRAMを備える、
請求項21の方法。
【請求項30】
前記第2のメモリデバイスは、高帯域幅メモリ(HBM)及び/又はキャッシュメモリを備える、
請求項21の方法。
【請求項31】
リソース管理デバイスにおいて実施される方法であって、
リソースの使用量に関する情報を取得することと、
前記情報に基づいて、プロセッサによるリソースの使用量が今後の期間中に閾値を超えるという予測を生成することと、
前記予測に基づいて、前記プロセッサの動作パラメータを調整することと、を含む、
方法。
【請求項32】
前記リソースは、電力を含む、
請求項31の方法。
【請求項33】
前記リソースは、サーマルバジェットを含む、
請求項31の方法。
【請求項34】
前記動作パラメータは、電圧又は電流を含む、
請求項31の方法。
【請求項35】
前記動作パラメータは、クロック周波数を含む、
請求項31の方法。
【請求項36】
前記動作パラメータは、前記プロセッサの一部に対して調整される、
請求項31の方法。
【請求項37】
前記リソース管理デバイスは、入出力メモリマネジメントユニット(IOMMU)、IOMMUと通信するプロセッサ、及び/又は、IOMMUと統合されたプロセッサを備える、
請求項31の方法。
【請求項38】
前記情報は、前記プロセッサによるリソースの使用量が以前の期間中に前記閾値を超えているかどうかを示す、
請求項31の方法。
【請求項39】
前記予測は、前記情報に自己相関関数(ACF)を適用することによって生成される、
請求項31の方法。
【請求項40】
前記予測は、前記情報に人工ニューラルネットワーク(ANN)を適用することによって生成される、
請求項31の方法。
【発明の詳細な説明】
【技術分野】
【0001】
(関連出願の相互参照)
本願は、2021年12月29日に出願された米国特許出願第17/565,336号の利益を主張するものであり、その内容は、参照により本明細書に組み込まれる。
【背景技術】
【0002】
現代のコンピューティングシステムは、典型的に、2つ以上のタイプのプロセッサを含む。例えば、パーソナルコンピュータは、CPUとGPUの両方を含むことが一般的である。また、そのようなシステムは、典型的に、2つ以上の種類のメモリも含む。例えば、パーソナルコンピュータは、メインメモリを含み、且つ、グラフィックスメモリを含み得る。パーソナルコンピュータのメインメモリは、典型的に、相対的に大きい容量と相対的により低い帯域幅とを提供するダイナミックランダムアクセスメモリ(dynamic random-access memory、DRAM)から構成され、グラフィックスメモリは、典型的に、相対的により小さい容量を有する高帯域幅メモリ(high bandwidth memory、HBM)から構成される。
【0003】
典型的には、CPUは、メインメモリに記憶されたデータに対して計算を行い、GPUは、グラフィックスメモリに記憶されたデータに対して計算を行う。しかしながら、ほとんどの場合、CPUは、グラフィックスメモリにアクセスすることもできる。更に、メモリバス速度によって許容できない量の帯域幅を失うことなく、CPUがグラフィックスメモリのより高いメモリ帯域幅を活用することができるようなメモリバス速度がより一般的になってきている。同様に、GPUは、場合によっては、計算のためにメインメモリにアクセスすることができる。このようにして、コンピュータシステム内の様々なタイプのメモリは、プロセッサ(例えば、CPU及びGPU)間で共有されるリソースとみなすことができる。メモリに加えて、電力及びサーマルバジェット等の他のタイプのリソースも、プロセッサ間で共有されるリソースとみなすことができる。
【0004】
添付の図面と共に例として与えられる以下の説明から、より詳細な理解を得ることができる。
【図面の簡単な説明】
【0005】
図1】本開示の1つ以上の特徴を実装することができる、例示的なデバイスのブロック図である。
図2】追加の詳細を示す図1のデバイスのブロック図である。
図3】本開示の1つ以上の特徴を実装することができる、例示的なデバイスを示すブロック図である。
図4図3に関して示され説明されたコンピューティングデバイス等のコンピューティングデバイス内のメモリ帯域幅を管理するための例示的な方法を示すフローチャートである。
図5】特定の時間期間中の帯域幅集約型命令(bandwidth intensive instruction)によるメモリの領域へのアクセスを予測するための例示的な方法を示すブロック図である。
図6】特定の時間期間中の帯域幅集約型命令によるメモリの領域へのアクセスを予測するための自己相関関数の適用を示す線グラフである。
図7図3に関して示され説明されたコンピューティングデバイス等のコンピューティングデバイス内のエネルギー消費を管理するための例示的な方法を示すフローチャートである。
図8図3に関して示され説明されたコンピューティングデバイス等のコンピューティングデバイス内の温度を管理するための例示的な方法を示すフローチャートである。
【発明を実施するための形態】
【0006】
いくつかの実施形態は、コンピューティングデバイス内のリソースを管理するためのデバイス、方法及びシステムを提供する。メモリ帯域幅利用率に関する情報が取り込まれる。情報に基づいて、第1のメモリデバイスに記憶されたメモリ領域が今後の時間期間中にメモリ集約型命令によってアドレス指定されるという予測が生成される。予測に基づいて、メモリ領域に記憶されたデータが第2のメモリデバイスに移動される。
【0007】
いくつかの実施形態では、方法は、リソース管理デバイスにおいて実施される。いくつかの実施形態では、リソース管理デバイスは、入出力メモリマネジメントユニット(input output memory management unit、IOMMU)、IOMMUと通信するプロセッサ、及び/又は、IOMMUと統合されたプロセッサを備える。いくつかの実施形態では、情報は、以前に実行された命令がメモリ集約型命令であるかどうか、以前に実行された命令が指定された命令であるかどうか、及び/又は、以前に実行された命令が特定のタイプの命令であるかどうかを示す。いくつかの実施形態では、予測は、情報に自己相関関数(autocorrelation function、ACF)及び/又は人工ニューラルネットワーク(artificial neural network、ANN)を適用することによって生成される。
【0008】
いくつかの実施形態では、第1のメモリデバイスは、相対的により低い帯域幅のメモリを備え、第2のメモリデバイスは、相対的により高い帯域幅のメモリを備える。いくつかの実施形態では、第1のメモリデバイスは、シンクロナスダイナミックランダムアクセスメモリ(synchronous dynamic random-access memory、SDRAM)、ダブルデータレート(double data rate、DDR)SDRAM、及び/又は、低電力ダブルデータレート(low power DDR、LPDDR)SDRAMを備える。いくつかの実施形態では、第2のメモリは、高帯域幅メモリ(HBM)及び/又はキャッシュメモリを備える。
【0009】
いくつかの実施形態は、コンピューティングデバイス内のリソースを管理するための更なるデバイス、方法及びシステムを提供する。リソース使用量に関する情報が取り込まれる。情報に基づいて、プロセッサによるリソース使用量が今後の時間の間に閾値を超えるという予測が生成される。予測に基づいて、プロセッサの動作パラメータが調整される。
【0010】
いくつかの実施形態では、リソース管理デバイスは、入出力メモリマネジメントユニット(IOMMU)、IOMMUと通信するプロセッサ、及び/又は、IOMMUと統合されたプロセッサを備える。いくつかの実施形態では、リソースは、電力及び/又はサーマルバジェットを含む。いくつかの実施形態では、動作パラメータは、電圧、電流及び/又はクロック周波数を含む。いくつかの実施形態では、動作パラメータは、プロセッサの一部に対して調整される。
【0011】
いくつかの実施形態では、情報は、プロセッサによるリソース使用量が以前の時間期間中に閾値を超えているかどうかを示す。いくつかの実施形態では、予測は、情報に自己相関関数(ACF)及び/又は人工ニューラルネットワーク(ANN)を適用することによって生成される。
【0012】
図1は、本開示の1つ以上の特徴を実装することができる例示的なデバイス100のブロック図である。デバイス100は、コンピュータ、ゲームデバイス、ハンドヘルドデバイス、セットトップボックス、テレビ、携帯電話、サーバ、タブレットコンピュータ、又は、他のタイプのコンピューティングデバイス等を含むことができる。デバイス100は、プロセッサ102、メモリ104、ストレージ106、1つ以上の入力デバイス108、及び、1つ以上の出力デバイス110を含む。また、デバイス100は、入力経路112と出力経路114とを含み得る。入力経路及び出力経路の態様は、限定しないが、ダイ内又はダイ間の回路及び電気接続、並びに、ドライバ等のソフトウェア構成要素を含み得る。デバイス100は、図1に示されていない追加の構成要素を含むことができることを理解されたい。
【0013】
様々な代替例では、プロセッサ102は、中央処理ユニット(central processing unit、CPU)、グラフィックス処理ユニット(graphics processing unit、GPU)、同じダイ上に位置するCPU及びGPU、又は、1つ以上のプロセッサコアを含み、各プロセッサコアは、CPU又はGPUとすることができる。様々な代替例では、メモリ104は、プロセッサ102と同じダイ上に位置するか、又は、プロセッサ102とは別に位置する。メモリ104は、揮発性又は不揮発性メモリ(例えば、ランダムアクセスメモリ(random access memory、RAM)、ダイナミックRAM、キャッシュ)を含む。
【0014】
ストレージ106は、固定又はリムーバブル記憶装置(例えば、ハードディスクドライブ、ソリッドステートドライブ、光ディスク、フラッシュドライブ)を含む。入力デバイス108は、キーボード、キーパッド、タッチスクリーン、タッチパッド、検出器、マイクロフォン、加速度計、ジャイロスコープ、生体認証スキャナ、又は、ネットワーク接続(例えば、無線IEEE802シグナルの送信及び/又は受信のための無線ローカルエリアネットワークカード)を含むが、これらに限定されない。出力デバイス110は、ディスプレイ、スピーカ、プリンタ、触覚フィードバックデバイス、1つ以上の光、アンテナ、又は、ネットワーク接続(例えば、無線IEEE802シグナルの送信及び/又は受信のための無線ローカルエリアネットワークカード)を含むが、これらに限定されない。
【0015】
入力経路112は、プロセッサ102と入力デバイス108とを接続し、プロセッサ102が入力デバイス108から入力を受信することを可能にする。出力経路114は、プロセッサ102及び出力デバイス110と通信し、プロセッサ102が出力デバイス110に出力を送信することを可能にする。出力経路116は、表示デバイス118に結合された加速処理デバイス(accelerated processing device、APD)116を含む。APDは、プロセッサ102から計算コマンド及びグラフィックスレンダリングコマンドを受け入れて、それらの計算コマンド及びグラフィックスレンダリングコマンドを処理し、表示のためにピクセル出力を表示デバイス118に提供する。以下で更に詳細に説明するように、APD116は、単一命令複数データ(single-instruction-multiple-data、SIMD)パラダイムに従って計算を行う1つ以上の並列処理ユニットを含む。したがって、様々な機能は、本明細書では、APD116によって又はAPD116と連動して行われるものとして説明されているが、様々な代替例では、APD116によって行われるものとして説明される機能は、追加的又は代替的に、ホストプロセッサ(例えば、プロセッサ102)によってドライブされず、表示デバイス118にグラフィック出力も提供しない、同様の能力を有する他のコンピューティングデバイスによって行われる。例えば、SIMDパラダイムに従って処理タスクを行う任意の処理システムが、本明細書に説明される機能を行い得ることが企図される。代替的に、SIMDパラダイムに従って処理タスクを行わないコンピューティングシステムが、本明細書に説明される機能を行い得ることが企図される。
【0016】
図2は、APD116上の処理タスクの実行に関する追加の詳細を示すデバイス100のブロック図である。プロセッサ102は、システムメモリ104内で、プロセッサ102による実行のための1つ以上の制御論理モジュールを維持する。制御論理モジュールは、オペレーティングシステム120、カーネルモードドライバ122、及び、アプリケーション126を含む。これらの制御論理モジュールは、プロセッサ102及びAPD116の動作の様々な特徴を制御する。例えば、オペレーティングシステム120は、ハードウェアと直接通信し、プロセッサ102上で実行される他のソフトウェアのためのハードウェアへのインターフェースを提供する。カーネルモードドライバ122は、例えば、プロセッサ102上で実行されるソフトウェア(例えば、アプリケーション126)にアプリケーションプログラミングインターフェース(application programming interface、API)を提供して、APD116の様々な機能にアクセスすることによって、APD116の動作を制御する。また、カーネルモードドライバ122は、APD116の処理構成要素(以下で更に詳細に説明されるSIMDユニット138等)によって実行するためのプログラムをコンパイルするジャストインタイムコンパイラを含んでもよい。
【0017】
APD116は、並列処理に適しているか、又は、並列処理に適し得るグラフィックス動作及び非グラフィックス動作等の選択された機能のためのコマンド及びプログラムを実行する。APD116は、プロセッサ102から受信したコマンドに基づいて、ピクセル動作、幾何学計算、及び、表示デバイス118への画像のレンダリング等のグラフィックスパイプライン動作を実行するために使用することができる。また、APD116は、プロセッサ102から受信したコマンドに基づいて、ビデオ、物理シミュレーション、計算流体力学、又は、他のタスクに関連する動作等のように、グラフィックス動作に直接関連しない計算処理動作を実行する。
【0018】
APD116は、プロセッサ102の要求で、SIMDパラダイムに従って並列の方式で動作を行う1つ以上のSIMDユニット138を含む計算ユニット132を含む。SIMDパラダイムは、複数の処理要素が単一のプログラム制御フローユニット及びプログラムカウンタを共有し、したがって同じプログラムを実行するが、そのプログラムを異なるデータで、又は異なるデータ使用して実行することができるものである。一例では、各SIMDユニット138は、16個のレーンを含み、各レーンは、SIMDユニット138内の他のレーンと同時に同じ命令を実行するが、その命令を異なるデータで実行することができる。レーンは、全てのレーンが所定の命令を実行する必要がない場合、予測でオフに切り替えることができる。また、予測は、分岐制御フローを有するプログラムを実行するために使用することができる。より具体的には、制御フローが個々のレーンによって行われる計算に基づいている条件付き分岐又は他の命令を有するプログラムについては、現在実行されていない制御フローパスに対応するレーンの予測及び異なる制御フローパスのシリアル実行が、任意の制御フローを可能にする。
【0019】
計算ユニット132内の実行の基本的単位は、ワークアイテムである。各ワークアイテムは、特定のレーンにおいて並列で実行されるプログラムの単一のインスタンス化を表す。ワークアイテムは、単一のSIMD処理ユニット138上の「ウェーブフロント(wavefront)」として同時に実行することができる。1つ以上のウェーブフロントが「ワークグループ」に含まれ、これは、同じプログラムを実行するように指定されたワークアイテムの集合体を含む。ワークグループは、ワークグループを構成するウェーブフロントの各々を実行することによって実行され得る。代替例では、ウェーブフロントは、単一のSIMDユニット138上で連続して、又は、異なるSIMDユニット138上で部分的に若しくは完全に並列で実行される。ウェーブフロントは、単一のSIMDユニット138上で同時に実行され得るワークアイテムの最大集合体と考えることができる。したがって、プロセッサ102から受信されたコマンドが、プログラムは単一のSIMDユニット138上で同時に実行させることができない程度に特定のプログラムが並列化されるべきであることを示す場合、そのプログラムは、2つ以上のSIMDユニット138上に並列化されるか、又は、同じSIMDユニット138上で直列化される(又は必要に応じて並列化及び直列化の両方)ウェーブフロントに分けられる。スケジューラ136は、異なる計算ユニット132及びSIMDユニット138上の様々なウェーブフロントのスケジューリングに関連する動作を行う。
【0020】
計算ユニット132によって与えられる並列処理は、ピクセル値計算、頂点変換及び他のグラフィックス動作等のグラフィックス関連動作に好適である。したがって、場合によっては、プロセッサ102からのグラフィックス処理コマンドを受け入れるグラフィックスパイプライン134は、並列で実行するために計算タスクを計算ユニット132に提供する。
【0021】
また、計算ユニット132は、グラフィックに関連しないか、又は、グラフィックスパイプライン134の「通常の」動作の一部(例えば、グラフィックスパイプライン134の動作に対して行われる処理を補足するために行われるカスタム動作)として行われない計算タスクを行うために使用される。プロセッサ102上で実行されるアプリケーション126又は他のソフトウェアは、そのような計算タスクを定義するプログラムを、実行のためにAPD116に送信する。
【0022】
図3は、本開示の1つ以上の特徴を実装することができる例示的なデバイス300のブロック図である。デバイス300は、コンピュータ、ゲームデバイス、ハンドヘルドデバイス、セットトップボックス、テレビ、携帯電話、サーバ、タブレットコンピュータ、又は、他のタイプのコンピューティングデバイス等を含むことができる。いくつかの実施形態では、デバイス300は、図1に関して示され説明されたデバイス100の態様の一部又は全部を使用して実装される。
【0023】
デバイス300は、CPU302、GPU304、メインメモリ306、グラフィックスメモリ308、メモリマネジメントユニット(memory management unit、MMU)310、入力/出力メモリマネジメントユニット(IOMMU)312、バス314、及び、リソースマネージャ316を含む。この例では、リソースマネージャ316は、メモリ帯域幅を管理する。
【0024】
CPU302は、任意の好適な処理デバイスを含む。いくつかの実施形態では、CPU302は、図1に関して示され説明されたように、プロセッサ102を使用して実装される。GPU304は、任意の好適なグラフィックス処理デバイスを含む。いくつかの実施形態では、GPU304は、図1に関して示され説明されたように、APD116を使用して実装される。
【0025】
メインメモリ306は、任意の好適なメモリデバイスを含む。いくつかの実施形態では、メインメモリ306は、図1に関して示され説明されたように、メモリ104を使用して実装される。この例では、メインメモリ306は、LPDDR又はグラフィックスメモリと比較して相対的に大量のストレージを提供し、且つ、グラフィックスメモリと比較して相対的に低速な任意の他の好適なメモリを使用して実装される。
【0026】
グラフィックスメモリ308は、任意の好適なグラフィックスメモリデバイスを含む。いくつかの実施形態では、グラフィックスメモリ308は、図1に関して示され説明されたように、メモリ104を使用して実装される。この例では、メインメモリ306は、HBM又はメインメモリと比較して相対的に高速であり、且つ、メインメモリと比較して相対的に少量のストレージを提供する任意の他の好適なメモリを使用して実装される。
【0027】
MMU310は、メインメモリ306へのアクセスを管理する。例えば、メインメモリ306から読み取るか又はメインメモリ306に書き込むためのCPU302又は他のデバイスからの要求は、MMU310によって管理されている。IOMMU312は、GPU304及びグラフィックスメモリ308へのアクセスを管理する。例えば、グラフィックスメモリ308から読み取るか又はグラフィックスメモリ308に書き込むためのGPU304(若しくはCPU302、又は、いくつかの実施形態では他のデバイス)からの要求は、IOMMU312によって管理されている。また、IOMMU312は、CPU302、GPU304、(及びいくつかの実施形態では、他の加速器デバイス)、メインメモリ306、及び、グラフィックスメモリ308をカバーする仮想アドレス空間を管理する(すなわち、仮想メモリアドレスと物理メモリアドレスとの間で変換する)。IOMMU312は、CPU302とGPU304(及びいくつかの実施形態では、他の加速器デバイス)との「間に」位置決めされるが、IOMMU312には2つ以上のアクセラレータが接続されてもよいことに留意されたい。IOMMU312は、GPU304(若しくはCPU302、又は、いくつかの実施形態では他のデバイス)からのアドレストランザクション要求を扱う。
【0028】
バス314は、デバイス300の構成要素間の通信のための好適な通信インフラストラクチャを含む。いくつかの実施形態では、バス314は、周辺構成要素相互接続(Peripheral Component Interconnect、PCI)バス、PCI拡張(PCI enhanced、PCIe)バス、アドバンストマイクロコントローラバスアーキテクチャ(Advanced Microcontroller Bus Architecture、AMBA)バス、加速グラフィックスポート(Accelerated Graphics Port、AGP)バス、又は、他の好適な通信インフラストラクチャのうち1つ以上を含む。CPU302は、MMU310を介してバス314を通じてメインメモリ306と通信し、IOMMU312を介してバス314を通じてGPU304と通信する。CPU302及びGPU304の各々は、バス314を介してメインメモリ306及びグラフィックスメモリ308へのアクセスを有する。
【0029】
CPU302は、メモリに記憶されたデータにアクセスする様々な命令を実行する。異なる命令を実行するには、他の命令よりも多くのメモリ帯域幅を必要とすることに留意されたい。例えば以下の命令ファミリは、高められたBW要件を提示する場合がある。すなわち、ストリーミングSIMD拡張(Streaming SIMD Extensions、SSE)、アドバンストベクトル拡張(Advanced Vector Extensions、AVX)、AVX2、AVX-512、及び、AVX-512BWは、帯域幅要件を変化させる結果となる場合がある。SSEは、x86アーキテクチャへの単一命令複数データ(single instruction, multiple data、SIMD)命令セット拡張である。AVXは、マイクロプロセッサ用のx86命令セットアーキテクチャの拡張である。AVX2は、ほとんどの整数コマンドを256ビットに拡張し、融合された乗算累算(multiply-accumulate、FMA)演算を導入する。AVX-512は、EVEXプレフィックス符号化を使用してAVXを512ビットサポートに拡張する。AVX-512BW等のAVX拡張は、ベクトルアクセスをマスクして、間隔にわたるデータ依存アクセスパターンとVGATHERDPD/VSCATTERDPD等の収集/分散命令とをもたらす。これらは、実行中に他の命令よりも大幅に多くのメモリ帯域幅(例えば、所望の閾値を上回るより多くのメモリ帯域幅)を占有し得る命令の例にすぎない。そのような命令は、本明細書では「帯域幅集約型」命令と呼ばれる。
【0030】
リソースマネージャ316は、GPU304(又はAPD304)からの作業負荷によって発行された要求のためのメモリ帯域幅を管理する処理要素である。いくつかの実施形態では、リソースマネージャ316は、IOMMU312の追加の実行経路であり、専用FPGA若しくはASIC処理要素、又は、他の好適なハードウェアを用いて実装されてもよい。いくつかの実施形態では、リソースマネージャ316は、代替的又は追加的にMMU310と通信するデバイスである。いくつかの実施形態では、リソースマネージャ316の態様は、オペレーティングシステムソフトウェアにおいて実装され得る。
【0031】
リソースマネージャ316は、CPU命令のデータ配置を決定する。例えば、いくつかの実施形態では、リソースマネージャ316は、今後の時間間隔(例えば、次の1分)において実行されるCPU命令に対応するデータを何処に配置するかを決定する。いくつかの実施形態では、リソースマネージャ316は、BW集約型命令から特定のサイズの複数の物理領域の各々へのアクセス数Aの時系列プロファイルを入力として取る。これは、図4に関してより詳細に説明される。概して、リソースマネージャ316は、時系列プロファイルに基づいて行われた予測を考慮して、今後の時間期間に記憶される共有アドレス空間の特定の領域に記憶されたデータに適したタイプのメモリを決定する。
【0032】
現在の例では、システム300は、LPDDR(低帯域幅メモリ)を使用して実装されるメインメモリ306を含み、且つ、HBM(高帯域幅メモリ)を使用して実装されるグラフィックスメモリ308を含む。したがって、リソースマネージャ316は、共有アドレス空間の特定の領域に記憶されたデータが今後の時間期間に低帯域幅メモリに記憶されるべきか又は高帯域幅メモリに記憶されるべきかを、今後の時間期間中に帯域幅集約型命令がその領域にアクセスするかどうか、及び/又は、いくつの帯域幅集約型命令がアクセスするかの予測を考慮して決定する。この決定に応じて、リソースマネージャ316は、例えばオペレーティングシステムコマンドを使用して、好適なメモリ帯域幅能力を有する新しい物理メモリロケーションにデータを移動する。
【0033】
デバイス300は、図3に示されていない追加の構成要素を含むことができることを理解されたい。
【0034】
図4は、図3に関して示され説明されたデバイス300等のコンピューティングデバイス内のメモリ帯域幅を管理するための例示的な方法400を示すフローチャートである。いくつかの実施形態では、方法400は、図3に関して示され説明されたリソースマネージャ316等のリソースマネージャによって実装される。
【0035】
ステップ402において、リソースマネージャは、ある時間期間(サンプル長さ)Yにわたって、システム内の仮想メモリのXサイズの領域にアクセスする命令に関する情報を取り込む。例えば、いくつかの実施形態では、リソースマネージャ316は、1分(minute、min)の時間期間にわたって、メモリ306及び308の1ギガバイト(gigabyte、GB)領域にアクセスする命令に関する情報を取り込む。ここで、値X=1GB、Y=1minは例示であり、他の実施形態では、X及びYの他の値が使用可能であり、並びに/又は、これらの値は動的に可変であり及び/若しくはユーザ構成可能である。
【0036】
この例では、各メモリ領域について、リソースマネージャは、その時間期間中にその領域が帯域幅集約型命令によってアクセスされるかどうか、及び/又は、アクセスされる回数Aを記録する。また、リソースマネージャは、Z個の時間期間のサンプルサイズにわたって、後続の時間期間中に帯域幅集約型命令によって各領域がアクセスされるかどうか、及び/又は、アクセス回数Aを記録し、したがって、帯域幅集約型命令が各メモリ領域にアクセスする頻度を反映する時系列のデータを蓄積する。
【0037】
リソースマネージャは、蓄積された時系列の情報に基づいて、メモリ領域ごとに、次の(又は後の)時間期間中に帯域幅集約型命令によってアクセスされる可能性が高いかどうかを予測する。予測は、時系列データに自己相関関数(ACF)又は人工ニューラルネットワーク(ANN)を適用すること等による、任意の好適な方法で行われる。
【0038】
各メモリ領域について、メモリ領域内のアドレスが帯域幅集約型命令によってアクセスされる(又は少なくとも閾値数の帯域幅集約型命令によってアクセスされる)ことが予測されるという条件404で、リソースマネージャは、仮想メモリ領域内のデータが未だHBM内にない場合、そのデータをHBM(すなわち、この例ではグラフィックスメモリ308)に移動する。メモリ領域内のアドレスが帯域幅集約型命令によってアクセスされない(又は閾値数より少ない帯域幅集約型命令によってアクセスされる)ことが予測されるという条件404で、リソースマネージャは、仮想メモリ領域内のデータが未だLBM内にない場合、そのデータをLBM(すなわち、この例ではメインメモリ306)に移動する。これらの特定のタイプのメモリは、例示にすぎない。いくつかの実施形態では、他の種類のメモリが使用され、3つ以上の異なるタイプのメモリが帯域幅集約性によって区別されてもよいことに留意されたい。
【0039】
リソースマネージャは、任意の好適な方法で、仮想メモリ領域内のデータを1つの物理メモリから別の物理メモリに移動する。例えば、いくつかの実施形態では、リソースマネージャは、データを移動するためにオペレーティングシステム(operating system、OS)を呼び出す。いくつかの実施形態では、リソースマネージャは、システム上で実行中のアプリケーションに対してデータを透過的に移動するために、MPOL_MF_MOVEフラグを有するLinux(登録商標) move_pages()又はmbind()等の標準OSコールを起動して、仮想アドレスの物理アドレスへのマッピングを変更する。いくつかの実施形態では、これは、アプリケーションのソースコードを変更する必要なくデータを移動させるという利点を有する。
【0040】
方法400は、図3に関して示され説明されたようなリソースマネージャ316と同様に置かれた(例えば、IOMMU312内にある、又は、IOMMU312と通信している)リソースマネージャを使用して実装されるものとして説明されているが、方法400は、帯域幅集約型命令による複数のメモリ領域(例えば、異種メモリタイプをカバーする統一アドレス空間にわたる)へのアクセスを追跡することが可能な任意の好適なハードウェアを使用して実装可能であることに留意されたい。
【0041】
図5は、特定の時間期間中に仮想メモリの領域が帯域幅集約型命令によってアクセスされる可能性が高いかどうか、及び/又は、何回アクセスされるかを予測するための例示的な方法500を示すブロック図である。予測は、自己相関関数(ACF)又は人工ニューラルネットワーク(ANN)を使用する等の任意の好適な方法で行われる。いくつかの実施形態では、方法500は、リソースマネージャ316又は任意の他の好適なハードウェアにおいて実施される。
【0042】
この例では、長さYを有する時間期間i中に、複数のメモリ領域(この例ではn、m)の各々内のアドレスが帯域幅集約型命令によってアクセスされるかどうか、及び/又は、アクセスされる回数Aが決定される。この情報は、予測への入力データとして使用するために記憶される。
【0043】
同様に長さYを有する後続の時間期間i+1中に、メモリ領域n、m内のアドレスが帯域幅集約型命令によってアクセスされるかどうか、及び/又は、アクセスされる回数Aが再び決定される。この情報も同様に、予測への入力データとして使用するために記憶される。
【0044】
メモリ領域への帯域幅命令アクセスに関する(サンプル数Zについての)好適な量の履歴データが蓄積された後、各メモリ領域内のアドレスが帯域幅集約型命令によってアクセスされるかどうか、及び/又は、アクセスされる回数に関する予測が生成される。示されている例では、時間期間i中及び時間期間i+1中(この例ではZ=2)に収集されたデータに基づいて、メモリ領域mが時間期間i+2中にy個の帯域幅集約型命令によってアクセスされるという予測が行われる。
【0045】
予測は、収集されたデータにACFを適用することによって、又は、適切にトレーニングされたANNに収集されたデータを入力することによって等の任意の好適な手法に基づいて行われる。予測に基づいて、リソースマネージャは、領域m内の仮想アドレスに記憶されたデータを、今後の時間期間中に予想されるy個の帯域幅集約型命令と一致する異なるタイプの物理メモリに移動し得る。
【0046】
異なる変数が、ユーザ選択可能であり、及び/又は、動的に制御可能であることに留意されたい。例えば、領域サイズX、サンプル長さY及びサンプルサイズZの全ては、例えば、ユーザによって、又は、動的機構によって調整可能である。いくつかの実施形態では、動的制御は、作業負荷特性が実行時に変化する場合に有利である。例えば、特定の作業負荷は、より小さい若しくはより大きいサンプル長さY、又は、より小さい若しくはより大きいサンプルサイズZを必要とする場合がある。マルチプログラムされた作業負荷が使用される場合等のいくつかの実施形態では、これらの変数は、例えば、実行時に各プロセスのためのリソース割り当てを調整するOSに起因して、動的に調整される。いくつかの実施形態では、そのような動的機構は、1つ以上の作業負荷の特性(例えば、帯域幅要件又はアクセス粒度)を入力し、これらの入力変数を出力変数(X、Y、Z)と相関させる。いくつかの実施形態では、相関は、回帰に基づいて、又は、別の他の相関機構によって生成される。
【0047】
図6は、収集されたデータに基づいて、帯域幅集約型命令が今後の時間期間中にメモリ領域にアクセスするかどうか、及び/又は、いくつの帯域幅集約型命令がアクセスするかを予測するための、収集されたデータへの自己相関関数の適用を示す線グラフを示している。
【0048】
自己相関は、ラグと呼ばれる遅延の関数として、信号とそれ自体の遅延コピーとの相関を測定する時系列分析のための方法である。自己相関の分析は、ノイズによって覆い隠された周期的信号の存在等の繰り返しパターンを見つけるための数学的ツールである。ラグによる時系列の自己相関のプロットは、自己相関関数(ACF)と呼ばれる。
【0049】
上のグラフは、メモリ領域内のアドレスが帯域幅集約型命令によってアクセスされる回数Aの100個のサンプルに対するピアソンの相関係数のプロットである。ピアソンの相関係数は、負又は正の相関をそれぞれ記述する-1と1の間の数である。0の値は相関がないことを示す。この例では、一連の100個のサンプルは正弦関数を隠している。
【0050】
データがある傾向に従う場合、時間的に近い観測値もサイズが近いので、小さいラグに対する自己相関は大きく正である傾向がある。したがって、傾向付けられた時系列のACFは、ラグが増加するにつれてゆっくりと減少する正の値を有する傾向がある。データが周期的である場合、自己相関は、他のラグよりも(周期的周波数の倍数での)季節的ラグ(seasonal lags)の方が大きくなる。
【0051】
この例では、1分(Y)時間間隔ごとに、CPUリソースマネージャは、1GB(X)のメモリ領域ごとに最新の100個(Z)の間隔で測定されたAの100個の値についてACF関数を生成する。
【0052】
下のグラフは、100個の時間間隔にわたって測定されたAの100個の値についてのACF関数のプロットである。いくつかの実施形態では、リソースマネージャは、ACFを分析して、次の間隔(すなわち、Z=100であるこの例では、101番目の間隔)におけるAの値を予測する。
【0053】
ラグが減少するにつれてACFが増加することは、継続する可能性が高い傾向を示す。上記の例の観点から、これは、ACF上の隣接するラグ間のデルタ(すなわち、変化)を測定することによって、リソースマネージャによって検出される。
【0054】
デルタが特定の範囲内にある(例えば、デフォルトでACF上の|0.1|等のように、リソースマネージャのメモリマップドレジスタを介して構成可能である)場合、漸進的な変化(したがって、傾向)が検出される。この例では、Aの現在の値が低い(例えば、発行されたCPU命令からの現在のBWが低い、例えば、BWが閾値BWを下回る)場合、リソースマネージャは、(この傾向が続くことを予想して)次の間隔のために領域をLPDDRに移動する。現在のAが高い場合、領域はHBMに移動される。これらのメモリタイプは単なる例であり、領域は、予測に基づいて、任意の好適なメモリタイプに移動される(又はそこに保持される)。
【0055】
ACFの「スカロップ状(scalloped)」又は周期的形状は、季節性(seasonality)を示す。いくつかの実施形態では、スカロップ状又は周期的形状は、スパイク(すなわち、いくつかの実施形態で構成可能である閾値を上回る値)を識別し、スパイク間の間隔を測定することによって識別される。間隔が、隣接するスパイクに対して一貫している場合(例えば、スパイク1と2との間が4、スパイク2と3との間も4、且つ、スパイク3と4との間の間隔も4である場合)、スカロップ状又は周期的形状が存在する。いくつかの実施形態では、リソースマネージャは周期的間隔を検出する。ここで、間隔は、相関における周期的なスパイク間の距離である。スパイクは、閾値(例えば、デフォルトでACF上の|0.5|等のように、リソースマネージャのメモリマップドレジスタを介して構成可能である)に基づいて検出される。
【0056】
いくつかの実施形態では、リソースマネージャは、次のスパイクが発生する前に、領域を好適なメモリに(例えば、Aが低い(例えば、閾値Aを下回る)場合はLPDDRに、及び/又は、Aが高い(例えば、閾値Aを下回る)場合はHBMに)プロアクティブに移動する。これらのメモリタイプは単なる例であり、領域は、予測に基づいて、任意の好適なメモリタイプに移動される(又はそこに保持される)。
【0057】
自己相関は、領域が特定の時間期間中に帯域幅集約型命令によってアクセスされる可能性が高いかどうかを予測するための例示的な技術にすぎないことに留意されたい。例えば、いくつかの実施形態では、履歴データはANNに入力され、ANNは、領域が特定の時間期間中に帯域幅集約型命令によってアクセスされる可能性が高い確率を推論として出力する。
【0058】
いくつかの実施形態では、本明細書で説明される技術は、共有メモリ以外のリソースに適用可能である。例えば、いくつかの実施形態では、リソースマネージャは、メモリ帯域幅を管理するための方法400と同様に、コンピューティングデバイス内の電力消費を管理するか、又は、コンピューティングデバイスのサーマルバジェットを管理する。いくつかの実装では、任意の好適なリソース(例えば、CPU及びGPUの両方によって、又は、2つ以上のプロセッサによって共有若しくは影響されるリソース)が、リソースマネージャによって管理可能である。
【0059】
図7は、図3に関して示され説明されたデバイス300等のコンピューティングデバイス内のエネルギー消費を管理するための例示的な方法700を示すフローチャートである。いくつかの実施形態では、方法700は、図3に関して示され説明されたリソースマネージャ316と同様に置かれたリソースマネージャによって実装される。
【0060】
ステップ702において、リソースマネージャは、時間期間Yにわたって、CPU302及びGPU304による電力消費に関するデータを取り込む。例えば、いくつかの実施形態では、リソースマネージャ316と同様に置かれたリソースマネージャは、1分(min)の時間期間にわたって、CPU302及びGPU304による電力消費を取り込む。ここで、値Y=1minは例示であり、他の実施形態では、Yの他の値が使用可能であり、並びに/又は、これらの値は動的に可変であり及び/若しくはユーザ構成可能である。
【0061】
各プロセッサ(例えば、CPU302、GPU304)について、リソースマネージャは、時間期間中の電力消費(例えば、平均、累積等)を記録する。また、リソースマネージャは、後続の時間期間中の各プロセッサの電力消費を記録し、したがって、各プロセッサの電力消費を反映する時系列のデータを蓄積する。
【0062】
蓄積された時系列のデータに基づいて、リソースマネージャは、各プロセッサについて、次の(又は後の)時間期間中に見込まれる電力消費を予測する。予測は、自己相関関数(ACF)又は人工ニューラルネットワーク(ANN)を使用する等の任意の好適な方法で行われる。
【0063】
プロセッサの総電力消費が閾値を超えることが予測されるという条件704で、リソースマネージャは、ステップ706において、供給電力が現在最小電力を上回っている場合、予測された時間期間の間、システムに供給される電力を低減する(例えば、電圧を下げる)。
【0064】
プロセッサの総電力消費が閾値を超えないことが予測されるという条件704で、リソースマネージャは、ステップ708において、供給電力が現在最大電力を下回っている場合、予測された時間期間の間、システムに供給される電力を増加させる(例えば、電圧を上げる)。
【0065】
これらの特定の電力介入(すなわち、例えば、システム全体、CPU及び/若しくはGPU、CPU及びCPUの個々のコア若しくは計算ユニット等を電力ゲーティング又はスケーリングすること)は、例示にすぎない。いくつかの実施形態では、他の種類の介入(例えば、クロック周波数の増加及び低減)が使用され、並びに/又は、周波数スケーリング及び/若しくは電力ゲーティング/スケーリングの3つ以上の異なるレベルが使用されてもよいことに留意されたい。
【0066】
方法700は、図3に関して示され説明されたようなリソースマネージャ316と同様に置かれた(例えば、IOMMU312内にある、又はIOMMU312と通信している)リソースマネージャを使用して実施されるものとして説明されているが、方法700は、複数のプロセッサの電力を追跡することが可能な任意の好適なハードウェアを使用して実施可能であることに留意されたい。
【0067】
別の例において、図8は、図3に関して示され説明されたデバイス300等のコンピューティングデバイス内の温度を管理するための例示的な方法800を示すフローチャートである。いくつかの実施形態では、方法800は、図3に関して示され説明されたリソースマネージャ316と同様に置かれた(例えば、IOMMU312内にある、又は、IOMMU312と通信している)リソースマネージャによって実施される。
【0068】
ステップ802において、リソースマネージャは、時間期間Yにわたって、CPU302及びGPU304の温度に関するデータを取り込む。例えば、いくつかの実施形態では、リソースマネージャ316と同様に置かれたリソースマネージャは、1分(min)の時間期間にわたって、CPU302及びGPU304の温度を取り込む。ここで、値Y=1minは例示であり、他の実施形態では、Yの他の値が使用可能であり、並びに/又は、これらの値は動的に可変であり及び/若しくはユーザ構成可能である。
【0069】
各プロセッサ(例えば、CPU302、GPU304)について、リソースマネージャは、時間期間中の温度(例えば、平均、累積等)を記録する。また、リソースマネージャは、後続の時間期間中の各プロセッサの温度を記録し、したがって、各プロセッサの温度を反映する時系列のデータを蓄積する。
【0070】
蓄積された時系列のデータに基づいて、リソースマネージャは、各プロセッサについて、次の(又は後の)時間期間中に見込まれる温度を予測する。予測は、自己相関関数(ACF)又は人工ニューラルネットワーク(ANN)を使用する等の任意の好適な方法で行われる。
【0071】
プロセッサの平均温度が閾値を超えることが予測されるという条件804で、リソースマネージャは、ステップ806において、システムのクロック周波数が現在最小周波数を上回っている場合、予測された時間期間の間、システムのクロック周波数を低減する。
【0072】
プロセッサの平均温度が閾値を超えないことが予測されるという条件804で、リソースマネージャは、ステップ808において、システムのクロック周波数が最大周波数を下回っている場合、予測された時間期間の間、システムのクロック周波数を増加させる。
【0073】
これらの特定の熱介入(すなわち、クロック周波数の増加及び低減)は、例示にすぎない。いくつかの実施形態では、他の種類の介入(例えば、システム全体、CPU及び/若しくはGPU、CPU及びCPUの個々のコア若しくは計算ユニット等を電力ゲーティング又はスケーリングすること)が使用され、並びに/又は、周波数スケーリング及び/若しくは電力ゲーティング/スケーリングの3つ以上の異なるレベルが使用されてもよいことに留意されたい。
【0074】
方法800は、図3に関して示され説明されたようなリソースマネージャ316と同様に置かれた(例えば、IOMMU312内にある、又は、IOMMU312と通信している)リソースマネージャを使用して実施されるものとして説明されているが、方法800は、複数のプロセッサの温度を追跡することが可能な任意の好適なハードウェアを使用して実施可能であることに留意されたい。
【0075】
本明細書の開示に基づいて、多くの変形が可能であることを理解されたい。特徴及び要素が特定の組み合わせで上述されているが、各特徴又は要素は、他の特徴及び要素を用いずに単独で、又は、他の特徴及び要素を用いて若しくは用いずに様々な組み合わせで使用することができる。
【0076】
プロセッサ102、入力経路112、入力デバイス108、出力経路114、出力デバイス110、加速処理デバイス116、スケジューラ136、グラフィックス処理パイプライン134、計算ユニット132、SIMDユニット138を含むが、これらに限定されない、図において示され及び/又は本明細書に記載される様々な機能ユニットは、汎用コンピュータ、プロセッサ若しくはプロセッサコアとして、又は、汎用コンピュータ、プロセッサ若しくはプロセッサコアによって実行可能な非一時的なコンピュータ可読記憶媒体若しくは別の媒体に記憶されているプログラム、ソフトウェア若しくはファームウェアとして実装され得る。提供される方法は、汎用コンピュータ、プロセッサ又はプロセッサコアにおいて実施することができる。好適なプロセッサとしては、例として、汎用プロセッサ、専用プロセッサ、従来型プロセッサ、デジタルシグナルプロセッサ(digital signal processor、DSP)、複数のマイクロプロセッサ、DSPコアに関連する1つ以上のマイクロプロセッサ、コントローラ、マイクロコントローラ、特定用途向け集積回路(Application Specific Integrated Circuit、ASIC)、フィールドプログラマブルゲートアレイ(Field Programmable Gate Array、FPGA)回路、任意の他のタイプの集積回路(integrated circuit、IC)、及び/又は、状態マシンが挙げられる。そのようなプロセッサは、処理されたハードウェア記述言語(hardware description language、HDL)命令及びネットリストを含む他の中間データ(コンピュータ可読媒体に記憶させることが可能な命令)の結果を使用して製造プロセスを構成することによって製造することができる。そのような処理の結果はマスクワークとすることができ、このマスクワークをその後の半導体製造プロセスにおいて使用して、本開示の特徴を実装するプロセッサを製造する。
【0077】
本明細書に提供される方法又はフローチャートは、汎用コンピュータ又はプロセッサによる実行のために非一時的なコンピュータ可読記憶媒体に組み込まれるコンピュータプログラム、ソフトウェア又はファームウェアにおいて実施することができる。非一時的なコンピュータ可読記憶媒体の例としては、読み取り専用メモリ(read only memory、ROM)、ランダムアクセスメモリ(random access memory、RAM)、レジスタ、キャッシュメモリ、半導体メモリデバイス、内蔵ハードディスク及びリムーバブルディスク等の磁気媒体、磁気光学媒体、並びに、CD-ROMディスク及びデジタル多用途ディスク(digital versatile disk、DVD)等の光学媒体が挙げられる。
図1
図2
図3
図4
図5
図6
図7
図8
【国際調査報告】