(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-11-19
(54)【発明の名称】階層非対称コア属性検出
(51)【国際特許分類】
G06F 9/50 20060101AFI20241112BHJP
【FI】
G06F9/50 150A
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2024527777
(86)(22)【出願日】2022-11-16
(85)【翻訳文提出日】2024-06-17
(86)【国際出願番号】 US2022050061
(87)【国際公開番号】W WO2023091459
(87)【国際公開日】2023-05-25
(32)【優先日】2021-11-19
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】591016172
【氏名又は名称】アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド
【氏名又は名称原語表記】ADVANCED MICRO DEVICES INCORPORATED
(74)【代理人】
【識別番号】100108833
【氏名又は名称】早川 裕司
(74)【代理人】
【識別番号】100111615
【氏名又は名称】佐野 良太
(74)【代理人】
【識別番号】100162156
【氏名又は名称】村雨 圭介
(72)【発明者】
【氏名】マイケル ゴールデン
(72)【発明者】
【氏名】ポール ブリンザー
(72)【発明者】
【氏名】マジティング タリサヤン
(72)【発明者】
【氏名】スリカーント マサナム
(72)【発明者】
【氏名】リパル ブタニ
(72)【発明者】
【氏名】ウパーサナ スワミナサン
(57)【要約】
処理システム内で、スレッドカウントの非対称性は、処理デバイスの1つ以上のコアが無効化される場合に現れる。そのようなスレッドカウントの非対称性を判定するために、発見動作が実施され、階層レベル内の列挙インスタンスごとのスレッドの数に基づいて、処理デバイスの1つ以上の階層レベルについてのスレッドカウントの非対称性が判定される。スレッドカウントの非対称性の判定に応じて、非対称性の表現を判定するために、非対称性階層レベル内の列挙インスタンスごとの1つのスレッド識別子が定義される。非対称性の表現を使用して、処理システム内の1つ以上のアプリケーションに関連付けられたソフトウェアタスクが実施される。
【選択図】
図2
【特許請求の範囲】
【請求項1】
方法であって、
処理デバイスの階層レベルにおけるスレッドカウントの非対称性を判定したことに応じて、前記階層レベルにおける非対称性の表現を生成するために、前記階層レベルにおける列挙インスタンスごとのスレッド識別子を定義することと、
前記階層レベルにおける非対称性の表現に基づいて、1つ以上のタスクをスケジュールすることと、を含む、
方法。
【請求項2】
前記処理デバイスの第2の階層レベルであって、前記第2の階層レベルは、前記階層レベルにおける列挙インスタンスを含む1つ以上のダイを含む、第2の階層レベルにおける第2のスレッドカウントの非対称性を判定することと、
前記処理デバイスの第2の階層レベル内の各ダイに対して1つのスレッド識別子のみを定義することと、を含む、
請求項1の方法。
【請求項3】
前記処理デバイスの階層レベル内の列挙インスタンスごとの1つのスレッド識別子のみが、前記階層レベルにおける非対称性の表現を生成するために定義される、
請求項1又は2の方法。
【請求項4】
前記処理デバイスの第2の階層レベルにおいてスレッドカウントの対称性を判定することを含む、請求項1の方法。
【請求項5】
前記階層レベルの第1の列挙インスタンスに関連付けられたスレッド識別子を記憶するように構成されたレジスタの第1の部分と、前記階層レベルの第2の列挙インスタンスに関連付けられたスレッド識別子を記憶するように構成された前記レジスタの第2の部分と、にアクセスすることを含む、
請求項1の方法。
【請求項6】
前記列挙インスタンスごとのスレッド識別子は、レジスタに記憶されたシフト値に基づいている、
請求項1の方法。
【請求項7】
無効化されたコアを生成するために前記処理デバイスの第1のコアを無効化することを含み、
前記スレッドカウントの非対称性は、前記無効化されたコアに基づいている、
請求項1の方法。
【請求項8】
前記無効化されたコアは、ヒューズ無効化されている、
請求項7の方法。
【請求項9】
前記無効化されたコアは、ソフトウェア無効化されている、
請求項7の方法。
【請求項10】
システムであって、
メモリと、
1つ以上の処理コアを含む処理デバイスと、を備え
前記処理コアは、
前記処理デバイスの階層レベルにおけるスレッドカウントの非対称性を判定することと、
前記スレッドカウントの非対称性に基づいて、アプリケーションのタスクを実施することと、
を行うように構成されている、
システム。
【請求項11】
前記1つ以上の処理コアは、
前記階層レベルの列挙インスタンスごとのスレッドカウントを判定するように構成されている、
請求項10のシステム。
【請求項12】
前記1つ以上の処理コアは、
前記処理デバイスの第2の階層レベルにおけるスレッドカウントの対称性を判定するように構成されている、
請求項10又は11のシステム。
【請求項13】
前記1つ以上の処理コアは、
レジスタに記憶されたビットに基づいて、前記階層レベルの列挙インスタンスごとのスレッド識別子を判定するように構成されている、
請求項10のシステム。
【請求項14】
前記1つ以上の処理コアは、
無効化されたコアを生成するために前記処理デバイスの処理コアを無効化するように構成されており、
前記スレッドカウントの非対称性は、前記無効化されたコアに基づいている、
請求項10のシステム。
【請求項15】
前記階層レベルは、前記処理デバイスのダイレベルを含む、
請求項10のシステム。
【請求項16】
前記階層レベルは、前記処理デバイスのコア複合体レベルを含む、
請求項10のシステム。
【請求項17】
システムであって、
メモリと、
1つ以上の処理コアを含む処理デバイスと、を備え、
前記処理コアは、
前記処理デバイスの階層レベルにおける電力効率の非対称性を、前記階層レベルにおける動作モードで動作するコアの数に基づいて判定することと、
前記処理デバイスの階層レベルにおける電力効率の非対称性に基づいて、アプリケーションのタスクを実施することと、
を行うように構成されている、
システム。
【請求項18】
前記1つ以上の処理コアは、
前記処理デバイスの処理コアを、前記動作モードから第2の動作モードに変更するように構成されている、
請求項17のシステム。
【請求項19】
前記1つ以上の処理コアは、
前記処理デバイスの階層レベルにおける電力効率の非対称性を、前記階層レベルにおいて前記第2の動作モードで動作するコアの数に基づいて判定するように構成されている、
請求項18のシステム。
【請求項20】
前記動作モードは電力効率モードを含み、前記第2の動作モードは性能モードを含む、
請求項18のシステム。
【発明の詳細な説明】
【背景技術】
【0001】
処理システム内で、オペレーティングシステムは、アプリケーションに関連付けられたソフトウェアタスクを実施するために、1つ以上のプロセッサのプロセッサトポロジ情報を使用する。例えば、オペレーティングシステムは、プロセッサトポロジ情報を使用して、アプリケーションに関連付けられたソフトウェアタスクのタスク及びスレッドのスケジューリング等のように、いくつかのプロセッサリソース管理業務を実施する。プロセッサのプロセッサトポロジ情報は、アプリケーションのソフトウェアタスクを実施するために使用される処理システム内のハードウェアリソース及びソフトウェアリソースの階層的配置を識別する。しかしながら、処理システム内のコア属性非対称性は、オペレーティングシステムに、プロセッサのハードウェアリソース及びソフトウェアリソースを非効率的に又は不正確に管理させる可能性があり、これは、アプリケーションの処理効率及び処理時間に悪影響を及ぼす可能性がある。加えて、そのような非対称性は、非対称性を補償する場合に、オペレーティングシステムに、追加のメモリ及び処理リソースを使用させる可能性がある。
【0002】
本開示は、添付の図面を参照することによってより良好に理解され、その数々の特徴及び利点が当業者に明らかになり得る。異なる図面における同じ符号の使用は、類似又は同一のアイテムを示す。
【図面の簡単な説明】
【0003】
【
図1】いくつかの実施形態による、階層非対称コア属性検出のための処理システムのブロック図である。
【
図2】いくつかの実施形態による、1つ以上の階層レベルにおける1つ以上のコア属性非対称性を判定するように構成された処理デバイスのブロック図である。
【
図3】いくつかの実施形態による、1つ以上の階層レベルにおけるスレッドカウント非対称性を判定するための方法を示すフロー図である。
【
図4】いくつかの実施形態による、1つ以上の階層レベルにおける電力効率非対称性を判定するための方法を示すフロー図である。
【発明を実施するための形態】
【0004】
本明細書で説明される技術及びシステムは、処理デバイスのトポロジ内のスレッドカウント非対称性を判定することと、相対的に少数のスレッド識別子によって(例えば、処理デバイスの所定の列挙インスタンス(enumerated instance)に対する単一のスレッド識別子によって)識別された非対称性を報告することと、に対処する。それによって、説明される技術及びシステムは、非対称性の効率的な報告を支援し、処理デバイスにおいて実行されるスレッドのより効率的なスケジューリング等のように、より効率的な非対称性管理を可能にする。
【0005】
説明するにあたって、本明細書で使用される場合、処理デバイスの「トポロジ」は、処理デバイスのハードウェアリソース及びソフトウェアリソースの1つ以上の階層レベルへの配置を含む。本明細書で使用される場合、「階層レベル」は、処理デバイスの同様のハードウェアリソース又はソフトウェアリソース(本明細書では「列挙インスタンス」とも呼ばれる)を含む、処理デバイスの1つ以上の部分を含む。例えば、処理デバイスは、1つ以上のダイを含むダイ階層レベルを含む。別の例として、処理デバイスは、1つ以上のコア複合体を含むコア複合体階層レベルを含む。処理デバイスのより大きな部分を含む階層レベル(例えば、ダイレベル)が、処理デバイスのより小さな部分を含む階層レベル(例えば、コア複合体レベル、コアレベル)よりも「高い」レベルであるという点で、各レベルは「階層的」である。階層レベルの列挙インスタンスは、他の(例えば、より低い)階層レベルからの1つ以上のハードウェアリソース又はソフトウェアリソースを含む。例えば、ダイレベルのダイは、コア複合体レベルからの1つ以上のコア複合体を含む。
【0006】
いくつかの実施形態では、処理デバイスは、階層レベルの列挙インスタンスごとのスレッドの数(すなわち、各列挙インスタンスが、階層レベル内にいくつのスレッドを有するか)に基づいて、プロセッサの1つ以上の階層レベルについてのスレッドカウント非対称性を判定するように構成されている。処理システム内の処理デバイスの1つ以上のコアがダウンコアされている(例えば、無効化されている)場合、スレッドカウント非対称性は、階層レベルの列挙インスタンス間の処理デバイスの1つ以上の階層レベルにおいて現れることがある。すなわち、階層レベル内の列挙インスタンスごとのスレッドの数は、ダウンコアされたコアの結果として異なる。処理デバイス上で実行中又は実行しようとしている1つ以上のアプリケーションを管理するオペレーティングシステムにこれらのスレッドカウント非対称性の表現を提供するために、処理システムのオペレーティングシステムは、処理デバイスの任意の階層レベルにおいてスレッドカウント非対称性があるかどうかを判定するための発見動作(discovery operations)を実施する。発見動作に基づいて、オペレーティングシステムは、処理デバイスの各階層レベルについて1つ以上のスレッドカウント非対称性があるかどうかを判定する。すなわち、オペレーティングシステムは、各階層レベルが、スレッドカウントに関して対称であるか非対称であるかを判定する。
【0007】
階層レベルについてのスレッドカウント非対称性の判定に応じて、オペレーティングシステムは、非対称性の表現を判定するために、階層レベルの列挙インスタンスごとに1つのスレッド識別子を定義する。スレッド識別子を定義するために、オペレーティングシステムは、列挙インスタンスごとに1つのスレッド識別子をレジスタから読み出すだけである。各スレッド識別子が、その列挙インスタンスのためのいくつかのスレッドを含むので、スレッドカウント非対称性の表現を判定するためには、各列挙インスタンスから1つのスレッド識別子のみを読み出せばよい。このようにして、オペレーティングシステムは、階層レベルの全てのスレッド識別子を読み出す必要がなく、非対称性の表現を判定するのに必要な処理時間及びリソースを低減する。
【0008】
本明細書で説明する技術及びシステムは、それぞれの動作モード、例えば、電力効率モード及び性能モードで動作する列挙インスタンスごとのコアの数に基づいて、処理デバイスの1つ以上の階層レベルに関する電力効率非対称性を判定することに対処する。電力効率モードで動作する処理デバイスのコアの数が、性能モードで動作するコアの数と異なる場合に、電力効率非対称性は、処理デバイスの1つ以上の階層レベルにおいて、階層レベルの列挙インスタンス間で現れることがある。処理デバイスは、例えば、階層レベルの列挙インスタンスごとに第1又は第2の動作モードで動作するコアの数を比較することによって、処理デバイスの1つ以上の階層レベルにおけるそのような電力効率非対称性を判定する。処理デバイス上で実行中又は動作しようとしているアプリケーションにこれらの電力効率非対称性の表現を提供するために、処理システムのオペレーティングシステムは、処理デバイスの任意の階層レベルにおいて電力効率非対称性があるかどうかを判定するために発見動作を実施する。例えば、オペレーティングシステムは、処理デバイスに、それぞれの階層レベルにおける電力効率非対称性を表すデータを1つ以上のレジスタに記憶させる命令を、処理デバイスに提供する。次いで、オペレーティングシステムは、レジスタ内のデータを読み出して、1つ以上の階層レベルについて、電力効率非対称性が存在するかどうかを判定する。
【0009】
図1は、いくつかの実施形態による、非対称コア属性検出のための処理システム100のブロック図である。処理システム100は、例えば、ダイナミックランダムアクセスメモリ(dynamic random-access memory、DRAM)の非一時的なコンピュータ可読記憶媒体を使用して実装されるメモリ106又は他の記憶コンポーネントを含むか、又は、それらへのアクセスを有する。しかしながら、実施形態では、メモリ106は、スタティックランダムアクセスメモリ(static random-access memory、SRAM)、不揮発性RAM等を含む他のタイプのメモリを使用して実装される。実施形態によれば、メモリ106は、処理システム100において実装される処理ユニットの外部に実装されるために外部メモリを含む。また、処理システム100は、メモリ106等のような、処理システム100において実装されるエンティティ間の通信をサポートするためのバス112を含む。処理システム100のいくつかの実施形態は、他のバス、ブリッジ、スイッチ、ルータ等を含むが、これらは明確にするために
図1には示されていない。
【0010】
本明細書で説明される技術は、様々な実施形態では、様々な並列プロセッサ(例えば、ベクトルプロセッサ、グラフィックス処理ユニット(graphics processing unit、GPU)、汎用GPU(general-purpose GPU、GPGPU)、非スカラプロセッサ、高並列プロセッサ、人工知能(artificial intelligence、AI)プロセッサ、推論エンジン、機械学習プロセッサ、他のマルチスレッド処理ユニット等)、スカラプロセッサ、直列プロセッサ、又は、それらの任意の組み合わせの何れかで利用される。
図1は、いくつかの実施形態による、並列プロセッサ、特に、グラフィックス処理ユニット(GPU)114の一例を示す。GPU114は、ディスプレイ120上に提示するための画像をレンダリングする。例えば、GPU114は、オブジェクトをレンダリングして、ディスプレイ120に提供されるピクセルの値を生成し、ディスプレイ120は、ピクセル値を使用して、レンダリングされたオブジェクトを表す画像を表示する。GPU114は、命令を同時に又は並列に実行する複数のプロセッサコア116-1~116-Nを実装する。実施形態によれば、1つ以上のプロセッサコア116は、異なるデータセットに対して同じ演算を実施するSIMDユニットとして動作する。
図1に示す例示的な実施形態では、N個のコアを表す3つのコア(116-1、116-2、116-N)が提示されているが、GPU114内に実装されるプロセッサコア116の数は、設計上の選択の問題である。したがって、他の実施形態では、GPU114は、任意の数のコア116を含むことができる。GPU114のいくつかの実施形態は、汎用コンピューティングのために使用される。GPU114は、メモリ106に記憶されたプログラムコード108等の命令を実行し、GPU114は、実行された命令の結果等の情報をメモリ106に記憶する。
【0011】
また、処理システム100は、バス112に接続され、したがってバス112を介してGPU114及びメモリ106と通信する中央処理ユニット(central processing unit、CPU)102を含む。CPU102は、命令を同時に又は並列に実行する複数のプロセッサコア104-1~104-Nを実装する。実施形態では、プロセッサコア104のうちの1つ以上は、異なるデータセットに対して同じ演算を実施するSIMDユニットとして動作する。
図1に示す例示的な実施形態では、M個のコアを表す3つのコア(104-1、104-2、104-M)が提示されているが、CPU102内に実装されるプロセッサコア104の数は、設計上の選択の問題である。したがって、他の実施形態では、CPU102は、任意の数のコア104を含むことができる。いくつかの実施形態では、CPU102及びGPU114は、等しい数のコア104、116を有するが、他の実施形態では、CPU102及びGPU114は、異なる数のコア104、116を有する。プロセッサコア104は、メモリ106に記憶されたプログラムコード110等の命令を実行し、CPU102は、実行された命令の結果等の情報をメモリ106に記憶する。また、CPU102は、GPU114にドローコールを発行することによって、グラフィックス処理を開始することができる。実施形態では、CPU102は、同時に又は並列に命令を独立して実行する複数のプロセッサコア(明確化のために
図1には示さず)を実装する。
【0012】
入力/出力(input/output、I/O)エンジン118は、ディスプレイ120に関連付けられた入力又は出力動作、及び、キーボード、マウス、プリンタ、外部ディスク等のような処理システム100の他の要素を扱うハードウェア及びソフトウェアを含む。I/Oエンジン118は、I/Oエンジン118がメモリ106、GPU114又はCPU102と通信するようにバス112に結合される。図示される実施形態では、I/Oエンジン118は、コンパクトディスク(compact disk、CD)、デジタルビデオディスク(digital video disc、DVD)等の非一時的なコンピュータ可読記憶媒体を使用して実装される、外部記憶コンポーネント122上に記憶される情報を読み取る。また、I/Oエンジン118は、GPU114又はCPU102による処理の結果等の情報を外部記憶コンポーネント122に書き込むことができる。
【0013】
実施形態では、メモリ106は、システム100のハードウェアリソース及びソフトウェアリソースを管理するように構成されたソフトウェアを各々含む1つ以上のオペレーティングシステム124を含む。オペレーティングシステム124は、1つ以上のアプリケーション(明確にするために図示せず)がシステム100のハードウェアリソース及びソフトウェアリソースにアクセスできるように、システム100のハードウェアリソース及びソフトウェアリソースと対話する。例えば、オペレーティングシステム124は、いくつか例を挙げると、1つ以上のアプリケーションの代わりに1つ以上のシステムコールを実行し、1つ以上のアプリケーションに割り込み、1つ以上のアプリケーションに対して1つ以上のハードウェア機能(例えば、メモリ割り当て、入力、出力)を実施し、又は、それらの任意の組み合わせを実施する。実施形態では、オペレーティングシステム124は、システム100の1つ以上のハードウェアリソース及びソフトウェアリソースを判定するために、1つ以上の発見動作を実施するように構成されている。そのようなハードウェアリソース及びソフトウェアリソースは、いくつか例を挙げると、例えば、処理デバイス(例えば、CPU102、GPU114)、デバイス階層、処理コア(例えば、コア104、116)、スレッド、ソケット、ダイ、複合体、又は、それらの任意の組み合わせを含む。実施形態によれば、オペレーティングシステム124は、システム100のハードウェアリソース及びソフトウェアリソースの1つ以上のハードウェアリソース属性及びソフトウェアリソース属性を判定するために、1つ以上の発見動作を実施するように更に構成されている。そのような属性は、いくつか例を挙げると、例えば、リソースの量(例えば、スレッドカウント)、リソースの動作モード(例えば、アクティブ、非アクティブ、電力効率モード、性能モード)、リソースの電力効率、又は、それらの任意の組み合わせを含む。実施形態では、システム100の1つ以上のハードウェアリソース及びソフトウェアリソースは、1つ以上の階層レベルを含む。例えば、処理デバイスの1つ以上の部分は、1つ以上の階層レベルに配置される。実施形態では、階層レベルは、デバイスの1つ以上の同様の列挙インスタンス(すなわち、同様の部分)、例えば、いくつか例を挙げると、コア、コア複合体、ダイ、及び、ソケットを含む。一例として、処理デバイス(例えば、CPU102、GPU114)は、例えば、いくつか例を挙げると、コアレベル、コア複合体レベル、ダイレベル、及び、ソケットレベルを含む4つ以上の階層レベルを含む。実施形態では、階層レベルの各列挙インスタンスは、異なる階層レベル、例えば、より低い階層レベルからのデバイスの何れか又は部分を含む。一例として、ダイレベルは、各々が1つ以上のコアを含む1つ以上のコア複合体を含む。実施形態によれば、発見動作は、処理デバイスが、1つ以上のハードウェアリソース及びソフトウェアリソース、ハードウェアリソース属性及びソフトウェアリソース属性、階層レベル、又は、それらの任意の組み合わせを表すデータを1つ以上のメモリレジスタに記憶するための命令を含む。
【0014】
実施形態によれば、オペレーティングシステム124は、システム100のハードウェアリソースの1つ以上の階層レベルに対する1つ以上の非対称性を判定するために、1つ以上の発見動作を実施する。「非対称性」は、本明細書で使用される場合、階層レベル内の1つ以上の列挙インスタンス(例えば、コア、コア複合体、ダイ)が1つ以上の異なるハードウェア属性(例えば、動作モード、スレッドカウント)を有することを含む。例えば、2つのコア複合体を含むコア複合体レベルでは、非対称性は、2つのコア複合体間で異なるスレッドカウント(すなわち、スレッドの量)を含む。別の例として、2つのダイを含むダイレベルにおいて、非対称性は、第1のダイにおいて電力効率モードで動作する第1の数のコアと、第2のダイにおいて電力効率モードで動作する第2の異なる数のコアと、を含む。実施形態では、発見動作は、処理デバイスに、1つ以上の非対称性及び1つ以上の階層レベルを表すデータを1つ以上のレジスタにロードさせる命令を含む。次に、オペレーティングシステムは、レジスタに記憶されたデータの少なくとも一部を読み出すことによって、1つ以上の階層レベルに対する1つ以上の非対称性を判定する。
【0015】
1つ以上の非対称性を判定したことに応じて、オペレーティングシステム124は、階層レベルの各列挙インスタンス(例えば、各離散部分)について1つのスレッド識別子を定義するように構成されている。例えば、コア複合体レベルで1つ以上の非対称性を判定したことに応じて、オペレーティングシステム124は、処理デバイスに、階層レベル内の各スレッドのスレッド識別子を表すデータを記憶させる命令を送るように構成されている。「スレッド識別子」は、本明細書で使用される場合、例えば、スレッド、スレッドを含む階層の各レベルにおける列挙インスタンス、スレッドを含む各列挙インスタンス内のスレッドの数、又は、それらの任意の組み合わせを識別する一意のキーを示すデータを含む。例えば、各スレッド識別子は、列挙インスタンス内の他のスレッドの数を示す。実施形態では、オペレーティングシステム124は、処理デバイスに、1つ以上のレジスタに記憶された1つ以上のシフト値に基づいて、階層レベルの各スレッドに対するスレッド識別子を生成及び記憶させる命令を送る。例えば、オペレーティングシステム124は、処理デバイスに、各スレッドを識別する一意のキー(例えば、APICID)を表すデータを第1のレジスタに記憶させ、スレッドを識別する一意のキーに適用される場合に、より高いレベルのトポロジ、例えば、コア、コア複合体、ダイ、ソケット、又は、それらの任意の組み合わせを識別する一意のキーを返すビットシフトを示す値を第2のレジスタに記憶させる命令を送る。実施形態によれば、オペレーティングシステム124は、階層レベルにおける非対称性の表現を判定するために、階層レベルの列挙インスタンスごとに1つのスレッド識別子のみを読み出すように構成されている。例えば、シフト値に基づいて、オペレーティングシステムは、読み出すレジスタ内の列挙インスタンスごとに1つのスレッド識別子を判定する。このようにして、オペレーティングシステム124は、階層レベルの各スレッドについてのスレッド属性を読み出す必要なしに、非対称性の表現(例えば、非対称性がスレッドにどのように影響するか)を判定し、非対称性の表現を判定するのに必要な処理時間を短縮する。すなわち、各スレッド識別子は、列挙インスタンスごとのスレッドの数を示すので、オペレーティングシステム124は、列挙インスタンスごとに1つのスレッド識別子を読み出すだけでよく、非対称性の表現を判定するのに必要な処理時間を短縮する。実施形態によれば、次いで、オペレーティングシステム124は、非対称性の表現に基づいて、1つ以上のアプリケーションが、システム100のハードウェアの少なくとも一部にアクセスすることを可能にする。例えば、オペレーティングシステム124は、非対称性の表現に基づいて、システム100の1つ以上のスレッドへのアクセスを可能にする。一例として、オペレーティングシステム124は、非対称性の表現において示されるスレッドカウントに基づいて、アプリケーションのためのソフトウェアタスクをスケジュールする。
【0016】
次に、
図2を参照すると、1つ以上のハードウェア階層レベル及び1つ以上の非対称性を有する処理デバイス200のブロック図が示されている。実施形態では、処理デバイス200は、
図1で説明されるような処理システム100の態様を実装する。例えば、処理デバイス200は、
図1で説明されるようなCPU102、GPU114又はその両方と同様又は同じであってもよい。実施形態では、処理デバイス200は、例えば、各々がコア104、116と同様又は同じである1つ以上のコア234を含む第1の階層レベルを含む。例えば、
図2に示される例示的な実施形態では、処理デバイス200は、コア0 234-1~コア15 234-16を含む第1の階層レベル(例えば、コアレベル)を含む。
図2の例示的な実施形態では、処理デバイス200の第1の階層レベルは、16個のコア(234-1、234-2、234-3、234-4、234-5、234-6、234-7、234-8、234-9、234-10、234-11、234-12、234-13、234-14、及び234-15)を有するものとして提示されているが、他の実施形態では、処理デバイス200の第1の階層レベルは、いくつか例を挙げると、例えば、4、8、32、64、128又は256個のコア等のように、任意の数のコアを有することができる。
【0017】
実施形態によれば、処理デバイス200は、例えば、1つ以上のコア複合体(core complex、CCX)を含む第2の階層レベル(例えば、コア複合体レベル)を含む。「コア複合体」は、本明細書で使用される場合、コア234の1つ以上のペアと、1つ以上のキャッシュ(明確にするために図示せず)と、を含む。実施形態では、CCX内のコア234は、1つ以上のキャッシュによって互いに接続されている。すなわち、CCX内のコア234は、CCXの1つ以上のキャッシュを共有する。例えば、
図2の例示的な実施形態では、処理デバイス200は、CCX0 232-1(コア234-1~234-4を含む)、CCX1 232-2(コア234-5~234-8を含む)、CCX2(コア234-9~234-12を含む)、及び、CCX3 232-4(コア234-13~234-16を含む)を含む第2の階層レベル(例えば、CCXレベル)を含む。
図2の例示的な実施形態では、処理デバイス200の第2の階層レベルは、各々が4つのコアを有する4つのCCXを有するものとして提示されているが、他の実施形態では、処理デバイス200の第2の階層レベルは、各々が任意のそれぞれの数のコアを有する任意の数のCCXを含むことができる。
【0018】
実施形態によれば、処理デバイス200は、例えば、1つ以上のダイ(例えば、コア複合体ダイ(core complex die、CCD))を含む第3の階層レベル(例えば、ダイレベル)を含む。各ダイ又はCCD230は、各々が1つ以上のコア234を含む1つ以上のCCX232を含む回路を含む。例えば、
図2の例示的な実施形態では、処理デバイス200は、CCD0 230-1(CCX0 232-1及びCCX1 232-2を含む)及びCCD1 230-2(CCX2 232-3及びCCX3 232-4を含む)を含む第3の階層レベル(例えば、CCDレベル又はダイレベル)を含む。
図2の例示的な実施形態では、処理デバイス200の第3の階層レベルは、各々が2つのCCXを有する2つのCCDを有するものとして提示されているが、他の実施形態では、処理デバイス200の第3の階層レベルは、各々が任意のそれぞれの数のCCXを有する任意の数のCCDを含むことができる。実施形態では、CCD230内の1つ以上のCCX232は、1つ以上のキャッシュ、データファブリック、又は、それらの任意の組み合わせによって互いに接続されている。例えば、CCD0 23-1内で、CCX0 232-1及びCCX1 232-2は、データファブリックによって接続されている。
【0019】
実施形態では、処理デバイス200は、例えば、1つ以上のソケットを含む第4の階層レベル(例えば、ソケットレベル)を含む。「ソケット」は、本明細書で使用される場合、処理デバイス200と1つ以上の他の回路(例えば、マザーボード)との間のインターフェース、例えば、1つ以上のピンを含む。実施形態によれば、ソケットは、1つ以上のキャッシュ、データファブリック、又は、それらの任意の組み合わせによって互いに接続された1つ以上のCCD230を含む。例えば、
図2の例示的な実施形態では、処理デバイス200は、データファブリック(明確にするために図示せず)によって接続されたCCD0 230-1及びCCD1 230-2を含むソケット(明確にするために図示せず)を含む第4の階層レベル(例えば、ソケットレベル)を含む。
図2の例示的な実施形態では、処理デバイス200の第4の階層レベルは、2つのCCDを含む1つのソケットを有するものとして提示されているが、他の実施形態では、処理デバイス200の第4の階層は、各々が任意の数のCCDを含む任意の数のソケットを含むことができる。
【0020】
実施形態によれば、処理デバイス200は、処理デバイス200の1つ以上のコア234をダウンコアするように構成されている。「ダウンコア」は、本明細書で使用される場合、例えば、ヒューズ無効化、ソフトウェア無効化、又は、その両方によって1つ以上のコア234を無効化して、無効化されたコアを生成することを含む。実施形態によれば、1つ以上のコア234がダウンコアされたことに応じて、処理デバイス200の1つ以上の階層におけるスレッドカウント非対称性(すなわち、階層レベルの列挙インスタンス間で異なるスレッドカウント)が現れることがある。例えば、1つ以上のコア234をダウンコアすることによって、1つ以上の階層レベル(例えば、コアレベル、CCXレベル、CDDレベル、ソケットレベル)の1つ以上の列挙インスタンス(例えば、コア、CCX、CCD)は、同じ階層レベルにおける別の列挙インスタンスとは異なるスレッドカウントを有する場合がある。当業者は、ダウンコアされている列挙インスタンス内のコアの数が増加するにつれて、その列挙インスタンス内のスレッドの数が減少することを理解するであろう。一例として、
図2の例示的な実施形態では、コア2 234-3及びコア3 234-4をダウンコアしたことに応じて、CCX0 232-1は、CCX1 232-2とは異なる数のスレッドを有することになる。言い換えれば、CCXごとに異なる数のスレッドが存在するので、CCX階層レベルにおいてスレッドカウント非対称性が存在する。別の例として、
図2の例示的な実施形態では、コア4 234-5、コア12 234-13、コア13 234-14、及び、コア14 234-15をダウンコアしたことに応じて、CCDごとに異なる数のスレッドが存在するので、CCDレベルでスレッドカウント非対称性が存在し、CCXごとに異なる数のスレッドがあるので、CCXレベルでスレッドカウント非対称性が存在する。
【0021】
実施形態では、処理デバイス200は、1つ以上のコア234の動作モードを、例えば、電力効率モードと性能モードとの間で変更するように構成されている。「電力効率モード」は、本明細書で使用される場合、電力消費がコアによって最小化される(すなわち、電力効率が最大化される)ようにコア234が動作するための1つ以上の命令を含み、「性能モード」は、本明細書で使用される場合、コンピューティング性能がコアについて最大化されるようにコア234が動作するための1つ以上の命令を含む。いくつかの実施形態では、1つ以上のコアは、電力効率モード又は性能モードでのみ動作するように設計されている。1つ以上のコアを電力効率モードから性能モードに、性能モードから電力効率モードに、又は、その両方に変更することに応じて、1つ以上の階層レベルにおける電力効率非対称性が現れることがある。加えて、処理デバイスが、電力効率モードでのみ動作するように設計された第1の数のコアと、性能モードでのみ動作するように設計された第2の数のコアと、を含むことに応じて、1つ以上の階層レベルにおける電力効率非対称性が現れることがある。例えば、列挙インスタンス(例えば、コア、CCX、CCD)内の性能モードにあるコアの数が、同じ階層レベルにおける別の列挙インスタンス内の性能モードにあるコアの数と異なることに応じて、その階層レベルに対する電力効率非対称性が現れる。同様に、列挙インスタンス(例えば、コア、CCX、CCD)内の電力効率モードにあるコアの数が、同じ階層レベルにおける別の列挙インスタンス内の電力効率モードにあるコアの数と異なることに応じて、その階層レベルに対する電力効率非対称性が現れる。一例として、CCX0 232-1が電力効率モードにある4つのコア(234-1~234-4)を有し、CCX1 232-2が性能モードにある4つのコア(234-5~234-8)を有することに応じて、CCX0及びCCX1が非対称電力効率を有するので、電力効率非対称性がCCX階層レベルに対して現れる。
【0022】
実施形態では、処理デバイス200は、処理デバイス200の1つ以上の階層レベルについて、1つ以上のハードウェアリソース及びソフトウェアリソース、ハードウェアリソース属性及びソフトウェアリソース属性、非対称性(例えば、スレッドカウント非対称性、電力効率非対称性)、又は、それらの任意の組み合わせを判定するように構成されている。例えば、処理デバイス200は、マイクロコードを使用して、1つ以上1つ以上のスレッドカウント、スレッドカウント非対称性、電力効率非対称性、又は、それらの任意の組み合わせを判定する。実施形態によれば、処理デバイス200は、処理デバイス200の起動中に、1つ以上のハードウェアリソース及びソフトウェアリソース、ハードウェアリソース属性及びソフトウェアリソース属性、非対称性、又は、それらの任意の組み合わせを判定するように構成されている。一例として、起動時に、処理デバイス200は、処理デバイス200内の列挙インスタンス(例えば、コア、CCX、CCD)ごとにスレッドの数を判定するように構成されている。別の例として、処理デバイス200は、1つ以上の命令、マイクロコード、又は、それらの任意の組み合わせを実施して、列挙インスタンス(例えば、コア、CCX、CCD、ソケット)ごとのスレッドの数を比較して、列挙インスタンスごとのスレッドの数が階層レベル内で異なるかどうかを判定することによって、階層レベルにおける1つ以上のスレッドカウント非対称性を判定するように構成されている。すなわち、階層レベルの1つ以上の列挙インスタンスが、その階層レベルの1つ以上の他の列挙インスタンスとは異なる数のスレッドを有するかどうかを判定するように構成されている。別の例では、処理デバイス200は、マイクロコードを使用して、起動時に1つ以上の階層レベルにおける1つ以上の電力効率非対称性を判定するように構成されている。実施形態によれば、処理デバイス200は、1つ以上の判定されたハードウェアリソース及びソフトウェアリソース、ハードウェアリソース属性及びソフトウェアリソース属性、非対称性、又は、それらの任意の組み合わせを、いくつか例を挙げると、例えば、CMOSメモリ、フラッシュメモリ、プログラマブル読み出し専用メモリ(programmable read-only memory、PROM)、電子的消去可能PROM(electronically erasable PROM、EEPROM)、RAM、キャッシュ、又は、それらの任意の組み合わせを含むメモリに記憶するように構成されている。
【0023】
実施形態によれば、処理デバイス200は、メモリ106と同様又は同一のメモリ206を含むか、又は、それに接続されている。実施形態では、メモリ206は、オペレーティングシステム124と同様又は同じ1つ以上のオペレーティングシステム224と、1つ以上のレジスタ226-1~226-Nと、を含む。
図2に示される実施形態では、N個のレジスタを表す3つのレジスタ(226-1、226-2、226-N)が提示されているが、他の実施形態では、メモリ206は、任意の数のレジスタを含むことができる。実施形態によれば、1つ以上のオペレーティングシステム224は、処理デバイス200とインターフェース接続するか又は対話するように構成された1つ以上のカーネル236を各々含む。例えば、オペレーティングシステム224は、1つ以上のアプリケーションの代わりに、処理デバイス200と対話するように構成されたカーネル236を含む。
【0024】
実施形態では、オペレーティングシステム224は、処理デバイス200の1つ以上のハードウェアリソース、ハードウェア属性、非対称性、又は、それらの任意の組み合わせを判定するために、1つ以上の発見動作228、例えば、CPUID動作、読み出しモデル固有レジスタ(read model-specific register、RDMSR)動作、メモリ206に記憶されたテーブルの読み出し動作、又は、それらの任意の組み合わせを実施するように構成されている。実施形態では、1つ以上の発見動作228は、発見動作の1つ以上のリーフ、例えば、1つ以上のCPUIDリーフを含む。実施形態によれば、1つ以上の発見動作228は、処理デバイス200が、要求されたハードウェアリソース及びソフトウェアリソース、ハードウェアリソース属性及びソフトウェアリソース属性、非対称性(例えば、スレッドカウント非対称性、電力効率非対称性)、又は、それらの任意の組み合わせを表すデータをレジスタ226の1つ以上のビットに記憶するための命令を含む。例えば、発見動作228は、処理デバイス200が、階層レベルについてのスレッドカウント非対称性を表すデータを生成する、記憶する、又は、その両方を行うための命令を含む。実施形態では、発見動作228において要求されるハードウェアリソース及びソフトウェアリソース、ハードウェアリソース属性及びソフトウェアリソース属性、非対称性、又は、それらの任意の組み合わせは、レジスタ226の1つ以上のビットに記憶されたデータによって判定される。すなわち、レジスタ226の1つ以上のビットに記憶されたデータは、処理デバイス200が、データをレジスタ226に記憶することによって、何れのハードウェアリソース及びソフトウェアリソース、ハードウェアリソース属性及びソフトウェアリソース属性、非対称性、又は、それらの任意の組み合わせを識別するかを判定させる。例えば、第1のレジスタ226-2内の1つ以上のビットに基づいて、発見動作228は、処理デバイス200が、階層レベルの電力効率非対称性を表すデータを第2のレジスタ226-1内に記憶するための命令を含む。実施形態によれば、1つ以上のレジスタ226は、1つ以上のシフト値、例えば、1つ以上のビットシフト値を記憶する。レジスタ226に記憶されたシフト値に基づいて、発見動作228は、処理デバイス200が、シフト値に基づいてレジスタ226の1つ以上のビットに、階層レベルの各列挙インスタンスについての1つ以上のスレッド識別子238を記憶するための1つ以上の命令を含む。例えば、このシフト値は、処理デバイス200がスレッド識別子238を記憶するレジスタ226のビットを示す。一例として、第1のレジスタ226-1に記憶された4のビットシフト値を示すシフト値に基づいて、発見動作228は、処理デバイスが、1つ以上のスレッド識別子238(例えば、APICID)を第2のレジスタ226-2に記憶するための1つ以上の命令を含む。記憶されたスレッド識別子238は、16ビットだけシフト可能であり、より高いレベルのトポロジ、例えば、コア、コア複合体、ダイ又はソケットのための一意のキーを提供する。
【0025】
実施形態では、オペレーティングシステム224は、レジスタ226に記憶された1つ以上のビットからデータを読み出すことによって、処理デバイス200の1つ以上のハードウェアリソース、ハードウェア属性、非対称性、又は、それらの任意の組み合わせを判定するように構成されている。例えば、オペレーティングシステム224は、発見動作228中に処理デバイス200によって記憶されたレジスタ226-1の1つ以上のビット内のデータを読み出すことによって、処理デバイス200の1つ以上のハードウェアリソース属性及びソフトウェアリソース属性を判定する。実施形態によれば、オペレーティングシステム224は、1つ以上の判定されたハードウェアリソース及びソフトウェアリソース、ハードウェアリソース属性及びソフトウェアリソース属性、非対称性、又は、それらの任意の組み合わせを、アプリケーションが処理デバイス200の少なくとも一部上で実行されるように、1つ以上のアプリケーションに提供する。例えば、オペレーティングシステム224は、処理デバイス200の1つ以上のハードウェアリソース及びソフトウェアリソースを使用して、アプリケーションのためのソフトウェアタスクをスケジュールする。
【0026】
実施形態によれば、オペレーティングシステム224は、処理デバイス200の1つ以上の階層レベルにおける1つ以上のスレッドカウント非対称性の判定に応じて、処理デバイス200の各階層レベルにおけるスレッドカウント非対称性の表現を判定するように構成されている。スレッドカウント非対称性の表現は、例えば、階層レベルの列挙インスタンスごとのスレッドの数を含む。各階層レベルについてスレッドカウント非対称性の表現を判定することは、例えば、各階層レベルにおける列挙インスタンスごとのスレッドの数を識別するスレッド識別子238を示す1つ以上のレジスタ226からデータを読み出すことを含む。一例として、CCX階層レベルにおけるCCXごとのスレッド数及びCCD階層レベルにおけるCCDごとのスレッド数を示すスレッド識別子238を、1つ以上のレジスタ226から読み出す。非対称性の表現を判定するために、オペレーティングシステム224は、階層レベルにおいて列挙インスタンスごとに1つのスレッド識別子238を表すデータのみをレジスタ226から読み出すように構成されている。例えば、CCX階層レベルの場合、オペレーティングシステム224は、CCXごとに1つのスレッド識別子238を表すデータをレジスタ226から読み出すだけである。実施形態によれば、オペレーティングシステム224は、1つ以上のレジスタ226に記憶されたシフト値に基づいて、レジスタ226から、階層レベル内の列挙インスタンスごとに1つのスレッド識別子238を表すデータを読み出すように構成されている。例えば、4のビットシフトを示すシフト値(例えば、16の偶数倍であるスレッド識別子をもたらす4の値を有する論理ビット右シフト演算)に基づいて、オペレーティングシステム224は、それぞれの列挙インスタンスごとの第1のスレッド識別子238が、各スレッドの一意のキー内のシフトされた場所(例えば、APICID内のシフトされた場所)に記憶されていると判定する。すなわち、それぞれの列挙インスタンスについての第1のスレッド識別子238は、レジスタ226内のスレッドの一意のキー(例えば、APICID)0、16、32、48等に見出される。このようにして、オペレーティングシステム224は、階層レベルの全てのスレッド識別子238ではなく、階層レベル内の列挙インスタンスごとに1つのスレッド識別子238を表すデータのみをレジスタ226から読み出す。したがって、非対称性の表現を判定するのに必要な処理時間及びメモリリソースが低減される。実施形態では、オペレーティングシステム224は、非対称性の表現を使用して、処理デバイス200のハードウェアリソース及びソフトウェアリソースへのアクセスを1つ以上のアプリケーションに提供し、それによって、アプリケーションは、処理デバイス200の1つ以上のハードウェアリソースを使用して1つ以上の動作、計算又は命令を実施する。例えば、オペレーティングシステム224は、非対称性の表現において示されるスレッドカウントに基づいて、アプリケーションのためのソフトウェアタスクをスケジュールする。
【0027】
次に、
図3を参照すると、1つ以上の階層レベルにおけるスレッドカウント非対称性を判定するための例示的な方法300のフロー図が示されている。ステップ305において、処理デバイスは、無効化されたコアを生成するために、処理デバイス200と同様又は同じ処理デバイスの1つ以上のコアをダウンコアする。例えば、処理デバイスの1つ以上のコアは、ヒューズ無効化、ソフトウェア無効化、又は、その両方が行われる。ステップ310において、処理デバイスは、処理デバイスの1つ以上の階層レベルにおける1つ以上のスレッドカウント非対称性を判定する。例えば、起動時に、処理デバイスは、階層レベル(例えば、コアレベル、CCXレベル、CCDレベル、ソケットレベル)のデバイスにおける列挙インスタンス(例えば、コア、CCX、CCD)の1つ以上のそれぞれのスレッドカウントが、階層レベルにおける別の列挙インスタンスの1つ以上のそれぞれのスレッドカウントと異なることを判定する。すなわち、処理デバイスは、階層レベルの1つ以上の列挙インスタンスが、その階層レベルの1つ以上の他の列挙インスタンスとは異なる数のスレッドを有すると判定する。実施形態では、処理デバイスは、マイクロコードを使用して、階層レベルにおける列挙インスタンスごとのスレッドの数を判定し、列挙インスタンスごとのスレッドの数を比較して、1つ以上のスレッドカウント非対称性を判定する。更に、ステップ310で、処理デバイスは、各階層レベルの各スレッドについて、スレッド識別子238と同様又は同じスレッド識別子を判定する。実施形態によれば、処理デバイスは、いくつか例を挙げると、例えば、CMOSメモリ、フラッシュメモリ、PROM、EEPROM、RAM、キャッシュ、又は、それらの任意の組み合わせを含むメモリに、判定された非対称性及びスレッドカウントを記憶する。
【0028】
ステップ315で、オペレーティングシステム224と同様又は同じ1つ以上のオペレーティングシステムが、発見動作228と同様又は同じ1つ以上の発見動作を実施する。実施形態では、発見動作は、処理デバイスが、要求されたデータを、レジスタ226と同様又は同じ1つ以上のレジスタ内に生成、記憶、又は、その両方を行うための命令を各々含む。例えば、発見動作は、処理デバイスが、任意の判定された非対称性、スレッドカウント及びスレッド識別子を表すデータを、レジスタの1つ以上のビットにロードする(すなわち、報告する)ための命令を含む。例えば、発見動作は、処理デバイスが、それぞれの階層レベルにおけるスレッドカウント非対称性の有無を示す各階層レベルのそれぞれのビット(すなわち、それぞれの階層レベルがスレッドカウントに関して対称であるか非対称であるかを示すビット)をロードするための命令を含む。実施形態では、発見動作は、レジスタに記憶された1つ以上の値、例えばレジスタに記憶されたシフト値に従って、1つ以上のレジスタにデータを記憶するための命令を含む。一例として、発見動作は、処理デバイスが、4のビットシフト(例えば、16の偶数倍であるスレッド識別子をもたらす4の値を有する論理ビット右シフト演算)を示す第2のレジスタに記憶されたシフト値に基づいて、それぞれの階層レベルについてのスレッド識別子(例えば、APICID)を第1のレジスタに記憶するための命令を含む。4のビットシフトに基づいて、処理デバイスは、階層レベルの各列挙インスタンスについての第1のスレッド識別子が第1のレジスタのスレッド識別子(例えば、APICID0、16、32、48等)にあることを示す。ステップ320で、オペレーティングシステムは、処理デバイスの1つ以上の階層レベルに対する1つ以上のスレッドカウント非対称性が、処理デバイスによってレジスタに報告された(すなわち、ロードされた)かどうかを判定する。すなわち、各階層レベルが、スレッドカウントに関して対称であるか非対称であるかを判定する。例えば、オペレーティングシステムは、1つ以上の非対称性が処理デバイスによって報告されたかどうかを判定するために、オペレーティングシステム内の1つ以上のビットを読み出す。処理デバイスの何れの階層レベルにも非対称性が存在しない(すなわち、階層レベルがスレッドカウントに関して対称である)と判定したことに応じて、システムはステップ325に進み、発見動作を終了する。1つ以上の非対称性が1つ以上の階層レベルについて報告されたと判定したことに応じて、システムは、ステップ330に進む。
【0029】
ステップ330で、1つ以上の階層レベルに対する1つ以上の非対称性を判定したことに応じて、オペレーティングシステムは、非対称性が報告された階層レベルにおける各列挙インスタンス(例えば、コア、CCX、CCD)に対して1つのスレッド識別子を定義する。例えば、CCD階層レベルにおける非対称性を判定したことに応じて、オペレーティングシステムは、CCD階層レベルの全てのCCXについて1つのスレッド識別子を判定する。実施形態では、オペレーティングシステムは、レジスタに記憶されたスレッド識別子を示す1つ以上のビットを読み出すことによって、スレッド識別子を判定するように構成されている。実施形態によれば、オペレーティングシステムは、レジスタに記憶された階層レベルの各列挙インスタンスについて、第1のスレッド識別子を示すビットのみを読み出すことによって、スレッド識別子を定義するように構成されている。オペレーティングシステムは、レジスタに記憶された1つ以上のシフト値に基づいて、各列挙インスタンスについて第1のスレッド識別子の場所を判定する。一例として、4のビットシフト(例えば、16の偶数倍であるスレッド識別子をもたらす4の値を有する論理ビット右シフト演算)に基づいて、オペレーティングシステムは、階層レベルの各列挙インスタンスについての第1のスレッド識別子が、レジスタ内のスレッド識別子(例えば、APICID)0、16、32、48等にあることを判定する。レジスタ内の各列挙インスタンスについての第1のスレッド識別子の場所を判定した後、オペレーティングシステムは、各列挙インスタンスについての第1のスレッド識別子のみを読み出して、非対称性の表現(例えば、列挙インスタンスごとのスレッドカウント)を判定する。各列挙されたものについての第1のスレッド識別子は、それぞれの列挙インスタンス内のスレッドの数を示すので、オペレーティングシステムは、階層レベルの全てのスレッド識別子を読み出すことなく、階層レベルの各列挙インスタンスについてのスレッドカウントを判定する。したがって、各列挙インスタンスについてスレッドカウントを判定するための処理時間及びメモリリソースが低減される。
【0030】
ステップ335で、オペレーティングシステムは、非対称性の表現(例えば、階層レベルごとのスレッド数、又は、列挙インスタンスごとのスレッド数)を判定し、その非対称性の表現に基づいて、処理デバイスの1つ以上のハードウェアリソース及びソフトウェアリソースへのアクセスを1つ以上のアプリケーションに提供する。例えば、オペレーティングシステムは、非対称性の表現において示されるスレッドカウントに基づいて、1つ以上のアプリケーションのための1つ以上のタスクをスケジュールする。アプリケーションは、その非対称性の表現に基づいて、処理デバイスのハードウェア及びソフトウェアリソースを使用して、1つ以上の動作を実行又は実施するように構成されている。例えば、アプリケーションは、オペレーティングシステムによってスケジュールされるように、処理デバイスの1つ以上のスレッドを使用して1つ以上の動作を実施する。
【0031】
次に、
図4を参照すると、1つ以上の階層レベルにおける電力効率非対称性を判定するための例示的な方法400のフロー図が示されている。ステップ405で、処理デバイス200と類似又は同一の処理デバイスが起動し、起動後に一定時間待機し、処理デバイスの1つ以上のコアの動作モードを変更し、又は、それらの任意の組み合わせを行う。例えば、処理デバイスは、電力効率モードで動作している1つ以上のコアを性能モードに変更するか、性能モードで動作している1つ以上のコアを電力効率モードに変更するか、又は、その両方を行う。別の例として、処理デバイスは、電力効率モードで動作している第1の数のコアと、性能モードで動作している第2の異なる数のコアと、で起動する。ステップ410において、処理デバイスは、処理デバイスの1つ以上の階層レベルにおける1つ以上の電力効率非対称性を判定する。例えば、起動時に、処理デバイスは、階層レベルの列挙インスタンス(例えば、コア、CCX、CCD)内の第1の動作モード(例えば、性能モード、電力効率モード、密度モード)を有するコアの数が、その階層レベルの異なる列挙インスタンス内の同じ動作モードを有するコアの数と異なることを判定する。すなわち、処理デバイスは、階層レベルの1つ以上の列挙インスタンスが、第1の動作モード(例えば、性能モード、電力効率モード、密度モード)において、その階層レベルの1つ以上の他の列挙インスタンスとは異なる数のコアを有すると判定する。
【0032】
ステップ415で、オペレーティングシステム224と同様又は同じ1つ以上のオペレーティングシステムが、発見動作228と同様又は同じ1つ以上の発見動作を実施する。実施形態では、発見動作は、処理デバイスが、要求されたデータを、レジスタ226と同様又は同じ1つ以上のレジスタ内に生成、記憶、又は、その両方を行うための命令を各々含む。例えば、発見動作は、処理デバイスが、任意の判定された電力効率非対称性を表すデータを、レジスタの1つ以上のビットにロードする(すなわち、報告する)ための命令を含む。例えば、発見動作は、処理デバイスが、それぞれの階層レベルにおける電力効率非対称性の有無を示す各階層レベルのそれぞれのビット(すなわち、それぞれの階層レベルが電力効率に関して対称であるか非対称であるか)をロードするための命令を含む。ステップ420で、オペレーティングシステムは、処理デバイスの1つ以上の階層レベルに対する1つ以上の電力効率非対称性が、処理デバイスによってレジスタに報告されたか(すなわち、ロードされたか)どうかを判定する。例えば、オペレーティングシステムは、1つ以上の電力効率非対称性が処理デバイスによって報告されたかどうかを判定するために、オペレーティングシステム内の1つ以上のビットを読み出す。処理デバイスの何れの階層レベルにも電力効率非対称性が存在しない(すなわち、全階層レベルが電力効率に関して対称である)と判定したことに応じて、システムはステップ425に進み、発見動作を終了する。1つ以上の電力効率非対称性が1つ以上の階層レベルについて報告されたと判定したことに応じて、システムは、ステップ430に進む。
【0033】
ステップ430で、1つ以上の階層レベルについて1つ以上の電力効率非対称性を判定したことに応じて、オペレーティングシステムは、非対称性の表現を判定する。例えば、オペレーティングシステムは、非対称階層レベル内の1つ以上のコアの動作モードを判定する。実施形態によれば、オペレーティングシステムは、電力効率非対称性の1つ以上の判定された表現に基づいて、処理デバイスの1つ以上のハードウェアリソース及びソフトウェアリソースへのアクセスを提供する。例えば、オペレーティングシステムは、電力効率非対称性の表現において示されるそれぞれのコアについての1つ以上の動作モードに基づいて、1つ以上のアプリケーションの1つ以上のソフトウェアタスクをスケジュールする。実施形態では、アプリケーションは、電力効率非対称性の表現に基づいて、処理デバイスのハードウェアを使用して、1つ以上の動作を実行又は実施するように構成されている。例えば、アプリケーションは、アプリケーションの必要性に基づいて、第1のモード(例えば、電力効率モード)で処理デバイスの1つ以上のコアを使用し、第2のモード(性能モード)で処理デバイスの1つ以上のコアを使用して、1つ以上の動作を実施する。
【0034】
本明細書で開示されるように、いくつかの実施形態では、方法は、処理デバイスの階層レベルにおけるスレッドカウント非対称性を判定したことに応じて、階層レベルにおける非対称性の表現を生成するために、階層レベルにおける各列挙インスタンスのスレッド識別子を定義することと、階層レベルにおける非対称性の表現に基づいて、1つ以上のタスクをスケジュールすることと、を含む。一態様では、本方法は、処理デバイスの第2の階層レベルであって、第2の階層レベルが、その階層レベルにおける列挙インスタンスを含む1つ以上のダイを含む、第2の階層レベルにおける第2のスレッドカウント非対称性を判定することと、処理デバイスの第2の階層レベル内の各ダイに対して1つのスレッド識別子のみを定義することと、を含む。別の態様では、処理デバイスの階層レベル内の各列挙インスタンスに対する1つのスレッド識別子のみが、階層レベルにおける非対称性の表現を生成するために定義される。
【0035】
一態様では、本方法は、処理デバイスの第2の階層レベルにおいてスレッドカウント対称性を判定することを含む。別の態様では、方法は、階層レベルの第1の列挙インスタンスに関連付けられたスレッド識別子を記憶するように構成されたレジスタの第1の部分と、階層レベルの第2の列挙インスタンスに関連付けられたスレッド識別子を記憶するように構成されたレジスタの第2の部分と、にアクセスすることを含む。更に別の態様では、各列挙インスタンスに対するスレッド識別子は、レジスタに記憶されたシフト値に基づいている。更に別の態様では、方法は、無効化されたコアを生成するために処理デバイスの第1のコアを無効化することを含み、スレッドカウント非対称性は、無効化されたコアに基づいている。別の態様では、無効化されたコアがヒューズ無効化される。更に別の態様では、無効化されたコアがソフトウェア無効化される。
【0036】
いくつかの実施形態では、システムは、メモリと、1つ以上の処理コアを含む処理デバイスであって、処理コアが、処理デバイスの階層レベルにおいてスレッドカウント非対称性を判定し、スレッドカウント非対称性に基づいてアプリケーションのタスクを実施するように構成されている処理デバイスと、を含む。一態様では、1つ以上の処理コアが、階層レベルの各列挙インスタンスに対するスレッドカウントを判定するように更に構成されている。別の態様では、1つ以上の処理コアが、処理デバイスの第2の階層レベルにおいてスレッドカウント対称性を判定するように更に構成されている。更に別の態様では、1つ以上の処理コアは、レジスタに記憶されたビットに基づいて、階層レベルの各列挙インスタンスに対するスレッド識別子を判定するように更に構成されている。
【0037】
一態様では、1つ以上の処理コアは、無効化されたコアを生成するために処理デバイスの処理コアを無効化するように更に構成されており、スレッドカウント非対称性は、無効化されたコアに基づいている。別の態様では、階層レベルが、処理デバイスのダイレベルを含む。更に別の態様では、階層レベルが、処理デバイスのコア複合体レベルを含む。
【0038】
いくつかの実施形態では、システムは、メモリと、1つ以上の処理コアを含む処理デバイスであって、処理コアは、階層レベルにおける動作モードで動作しているコアの数に基づいて、処理デバイスの階層レベルにおける電力効率非対称性を判定し、処理デバイスの階層レベルにおける電力効率非対称性に基づいてアプリケーションのタスクを実施するように構成されている、処理デバイスと、を含む。別の態様では、1つ以上の処理コアが、処理デバイスの処理コアを、その動作モードから第2の動作モードに変更するように更に構成されている。更に別の態様では、1つ以上の処理コアは、処理デバイスの階層レベルにおける電力効率非対称性を、階層レベルにおける第2の動作モードで動作するコアの数に基づいて判定するように更に構成されている。別の態様では、動作モードが電力効率モードを含み、第2の動作モードが性能モードを含む。
【0039】
いくつかの実施形態では、上述した装置及び技術は、
図1~
図4を参照して上述したシステム等の1つ以上の集積回路(integrated circuit、IC)デバイス(集積回路パッケージ又はマイクロチップとも称される)を含むシステムに実装される。電子設計自動化(electronic design automation、EDA)及びコンピュータ支援設計(computer aided design、CAD)ソフトウェアツールは、これらのICデバイスの設計及び製造に使用することができる。これらの設計ツールは、典型的には、1つ以上のソフトウェアプログラムとして表される。1つ以上のソフトウェアプログラムは、回路を製造するための製造システムを設計するか又は適応させるためのプロセスの少なくとも一部を実行するために、1つ以上のICデバイスの回路を表すコードで動作するようにコンピュータシステムを操作するための、コンピュータシステムによって実行可能なコードを含む。このコードは、命令、データ、又は、命令及びデータの組み合わせを含み得る。設計ツール又は製造ツールを表すソフトウェア命令は、典型的には、コンピューティングシステムにアクセス可能なコンピュータ可読記憶媒体に記憶される。同様に、ICデバイスの設計又は製造の1つ以上の段階を表すコードは、同じコンピュータ可読記憶媒体又は異なるコンピュータ可読記憶媒体に記憶され、そこからアクセスされる。
【0040】
コンピュータ可読記憶媒体は、命令及び/又はデータをコンピュータシステムに提供するために、使用中にコンピュータシステムによってアクセス可能な任意の非一時的な記憶媒体又は非一時的な記憶媒体の組み合わせを含む。このような記憶媒体には、限定されないが、光学媒体(例えば、コンパクトディスク(CD)、デジタル多用途ディスク(DVD)、ブルーレイ(登録商標)ディスク)、磁気媒体(例えば、フロッピー(登録商標)ディスク、磁気テープ、磁気ハードドライブ)、揮発性メモリ(例えば、ランダムアクセスメモリ(RAM)若しくはキャッシュ)、不揮発性メモリ(例えば、読取専用メモリ(ROM)若しくはフラッシュメモリ)、又は、微小電気機械システム(MEMS)ベースの記憶媒体が含まれ得る。コンピュータ可読記憶媒体(例えば、システムRAM又はROM)はコンピューティングシステムに内蔵されてもよいし、コンピュータ可読記憶媒体(例えば、磁気ハードドライブ)はコンピューティングシステムに固定的に取り付けられてもよいし、コンピュータ可読記憶媒体(例えば、光学ディスク又はユニバーサルシリアルバス(USB)ベースのフラッシュメモリ)はコンピューティングシステムに着脱可能に取り付けられてもよいし、コンピュータ可読記憶媒体(例えば、ネットワークアクセス可能ストレージ(NAS))は有線又は無線ネットワークを介してコンピュータシステムに結合されてもよい。
【0041】
いくつかの実施形態では、上述した技術の特定の態様は、ソフトウェアを実行する処理システムの1つ以上のプロセッサによって実装される。ソフトウェアは、非一時的なコンピュータ可読記憶媒体に記憶されるか、別の方法で明確に具体化された実行可能命令の1つ以上のセットを含む。ソフトウェアは、命令及び特定のデータを含んでもよく、当該命令及び特定のデータは、1つ以上のプロセッサによって実行されると、上述した技術の1つ以上の態様を実行するように1つ以上のプロセッサを操作する。非一時的なコンピュータ可読記憶媒体は、例えば、磁気又は光ディスク記憶デバイス、フラッシュメモリ等のソリッドステート記憶デバイス、キャッシュ、ランダムアクセスメモリ(RAM)、又は、他の不揮発性メモリデバイス(単数又は複数)等を含み得る。非一時的なコンピュータ可読記憶媒体に記憶された実行可能命令は、ソースコード、アセンブリ言語コード、オブジェクトコード、又は、1つ以上のプロセッサによって解釈され若しくは別の方法で実行可能な他の命令形式で実装可能である。
【0042】
上述したものに加えて、概要説明において説明した全てのアクティビティ又は要素が必要とされているわけではなく、特定のアクティビティ又はデバイスの一部が必要とされない場合があり、1つ以上のさらなるアクティビティが実行される場合があり、1つ以上のさらなる要素が含まれる場合があることに留意されたい。さらに、アクティビティが列挙された順序は、必ずしもそれらが実行される順序ではない。また、概念は、特定の実施形態を参照して説明された。しかしながら、当業者であれば、特許請求の範囲に記載されているような本発明の範囲から逸脱することなく、様々な変更及び変形を行うことができるのを理解するであろう。したがって、明細書及び図面は、限定的な意味ではなく例示的な意味で考慮されるべきであり、これらの変更形態の全ては、本発明の範囲内に含まれることが意図される。
【0043】
「A、B又はCのうち少なくとも1つ」のコンテキストで使用される前置詞「又は」は、本明細書では、「包括的な又は」を意味するために使用される。すなわち、上記及び同様のコンテキストにおいて、「又は」は、「~のうち少なくとも1つ、又は、それらの任意の組み合わせ」を意味するために使用される。例えば、「A、B及びCのうち少なくとも1つ」は、「A、B、C、又は、それらの任意の組み合わせのうち少なくとも1つ」を意味するために使用される。
【0044】
利益、他の利点及び問題に対する解決手段を、特定の実施形態に関して上述した。しかし、利益、利点、問題に対する解決手段、及び、何かしらの利益、利点若しくは解決手段が発生又は顕在化する可能性のある特徴は、何れか若しくは全ての請求項に重要な、必須の、又は、不可欠な特徴と解釈されない。さらに、開示された発明は、本明細書の教示の利益を有する当業者には明らかな方法であって、異なっているが同様の方法で修正され実施され得ることから、上述した特定の実施形態は例示にすぎない。添付の特許請求の範囲に記載されている以外に本明細書に示されている構成又は設計の詳細については限定がない。したがって、上述した特定の実施形態は、変更又は修正されてもよく、かかる変更形態の全ては、開示された発明の範囲内にあると考えられることが明らかである。したがって、ここで要求される保護は、添付の特許請求の範囲に記載されている。
【手続補正書】
【提出日】2024-07-17
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
方法であって、
処理デバイスの階層レベルにおけるスレッドカウントの非対称性を判定したことに応じて、前記階層レベルにおける非対称性の表現を生成するために、前記階層レベルにおける列挙インスタンスごとのスレッド識別子を定義することと、
前記階層レベルにおける非対称性の表現に基づいて、1つ以上のタスクをスケジュールすることと、を含む、
方法。
【請求項2】
前記処理デバイスの第2の階層レベルであって、前記第2の階層レベルは、前記階層レベルにおける列挙インスタンスを含む1つ以上のダイを含む、第2の階層レベルにおける第2のスレッドカウントの非対称性を判定することと、
前記処理デバイスの第2の階層レベル内の各ダイに対して1つのスレッド識別子のみを定義することと、を含む、
請求項1の方法。
【請求項3】
前記処理デバイスの階層レベル内の列挙インスタンスごとの1つのスレッド識別子のみが、前記階層レベルにおける非対称性の表現を生成するために定義される、
請求項1又は2の方法。
【請求項4】
前記処理デバイスの第2の階層レベルにおいてスレッドカウントの対称性を判定することを含む、請求項1の方法。
【請求項5】
前記階層レベルの第1の列挙インスタンスに関連付けられたスレッド識別子を記憶するように構成されたレジスタの第1の部分と、前記階層レベルの第2の列挙インスタンスに関連付けられたスレッド識別子を記憶するように構成された前記レジスタの第2の部分と、にアクセスすることを含む、
請求項1の方法。
【請求項6】
前記列挙インスタンスごとのスレッド識別子は、レジスタに記憶されたシフト値に基づいている、
請求項1の方法。
【請求項7】
無効化されたコアを生成するために前記処理デバイスの第1のコアを無効化することを含み、
前記スレッドカウントの非対称性は、前記無効化されたコアに基づいている、
請求項1の方法。
【請求項8】
前記無効化されたコアは、ヒューズ無効化されている、
請求項7の方法。
【請求項9】
前記無効化されたコアは、ソフトウェア無効化されている、
請求項7の方法。
【請求項10】
システムであって、
メモリと、
1つ以上の処理コアを含む処理デバイスと、を備え
前記処理コアは、
前記処理デバイスの階層レベルにおけるスレッドカウントの非対称性を判定することと、
前記スレッドカウントの非対称性に基づいて、アプリケーションのタスクを実施することと、
を行うように構成されている、
システム。
【請求項11】
前記1つ以上の処理コアは、
前記階層レベルの列挙インスタンスごとのスレッドカウントを判定するように構成されている、
請求項10のシステム。
【請求項12】
前記1つ以上の処理コアは、
前記処理デバイスの第2の階層レベルにおけるスレッドカウントの対称性を判定するように構成されている、
請求項10又は11のシステム。
【請求項13】
前記1つ以上の処理コアは、
レジスタに記憶されたビットに基づいて、前記階層レベルの列挙インスタンスごとのスレッド識別子を判定するように構成されている、
請求項10のシステム。
【請求項14】
前記1つ以上の処理コアは、
無効化されたコアを生成するために前記処理デバイスの処理コアを無効化するように構成されており、
前記スレッドカウントの非対称性は、前記無効化されたコアに基づいている、
請求項10のシステム。
【請求項15】
前記階層レベルは、前記処理デバイスのダイレベルを含む、
請求項10のシステム。
【国際調査報告】