(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-12-02
(45)【発行日】2024-12-10
(54)【発明の名称】コンピュータ・プロセッサ・コアの部分的遮断
(51)【国際特許分類】
G06F 11/34 20060101AFI20241203BHJP
G06F 9/30 20180101ALI20241203BHJP
G06F 11/30 20060101ALI20241203BHJP
【FI】
G06F11/34 133
G06F9/30 330A
G06F11/30 140H
(21)【出願番号】P 2022554427
(86)(22)【出願日】2021-02-23
(86)【国際出願番号】 IB2021051503
(87)【国際公開番号】W WO2021198804
(87)【国際公開日】2021-10-07
【審査請求日】2023-07-21
(32)【優先日】2020-03-31
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】390009531
【氏名又は名称】インターナショナル・ビジネス・マシーンズ・コーポレーション
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MACHINES CORPORATION
【住所又は居所原語表記】New Orchard Road, Armonk, New York 10504, United States of America
(74)【代理人】
【識別番号】100112690
【氏名又は名称】太佐 種一
(74)【代理人】
【識別番号】100120710
【氏名又は名称】片岡 忠彦
(72)【発明者】
【氏名】マウラー、ティロ
(72)【発明者】
【氏名】ビューラー、マルクス
(72)【発明者】
【氏名】インギムンダーソン、アーニ
(72)【発明者】
【氏名】シュタインマッハ-ブロウ、ブルクハルト
【審査官】松平 英
(56)【参考文献】
【文献】米国特許出願公開第2013/0013911(US,A1)
【文献】国際公開第2014/002412(WO,A1)
【文献】特開2000-322259(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 9/30-9/38
9/455-9/54
11/07
11/28-11/36
(57)【特許請求の範囲】
【請求項1】
実行ユニットであって、前記実行ユニットに転送されたアプリケーションの1つまたは複数のコマンドを実行するための前記実行ユニットと、
前記実行ユニットに動作可能に結合された使用率コントローラ・ユニットであって、前記使用率コントローラ・ユニットは前記実行ユニットの使用率を制御し、前記使用率は、前記実行ユニットが前記アプリケーションの前記1つまたは複数のコマンドを実行している総観察期間の一部分に対応
し、前記使用率コントローラ・ユニットは、前記実行ユニットによって送信された準備完了信号から、修正された準備完了信号を生成する、前記使用率コントローラ・ユニットと
を備える、プロセッサ・コア。
【請求項2】
前記準備完了信号は、前記実行ユニットが前記1つまたは複数のコマンドを受信するための準備を完了していることを示す、請求項
1に記載のプロセッサ・コア。
【請求項3】
前記プロセッサ・コアは、前記修正された準備完了信号に基づいて前記1つまたは複数のコマンドを前記実行ユニットに転送するための発行ユニットを備える、請求項
1に記載のプロセッサ・コア。
【請求項4】
前記使用率コントローラ・ユニットは、
使用率リミッタ
を更に備える、請求項
1に記載のプロセッサ・コア。
【請求項5】
前記使用率リミッタは、前記実行ユニットが前記1つまたは複数のコマンドの実行を開始可能であることを前記準備完了信号が示す期間を制限する、請求項
4に記載のプロセッサ・コア。
【請求項6】
前記使用率コントローラ・ユニットは、
前記実行ユニットによって生成された前記準備完了信号をサンプリングするためのシフト・レジスタと、
前記シフト・レジスタの内容に基づいて、前記修正された準備完了信号を生成するための第1の回路と
を更に備える、請求項
1に記載のプロセッサ・コア。
【請求項7】
前記使用率コントローラ・ユニットは、
ランダム信号を生成するためのランダム生成器と、
前記ランダム信号に基づいて、前記修正された準備完了信号を生成するための第2の回路と
を更に備える、請求項
1に記載のプロセッサ・コア。
【請求項8】
前記実行ユニットは演算ユニットである、請求項1に記載のプロセッサ・コア。
【請求項9】
前記実行ユニットは、ロード・ストア・ユニット、ベクトル・ユニット、または2進化10進数ユニットの一部である、請求項1に記載のプロセッサ・コア。
【請求項10】
プロセッサ・コアにおけるボトルネックを検出するためのコンピュータによって実現される方法であって、前記コンピュータによって実現される方法は、
コンピュータによって、前記プロセッサ・コアの実行ユニットの使用率を制御することであって、前記実行ユニットは前記実行ユニットに転送されたアプリケーションの1つまたは複数のコマンドを実行する、前記制御することと、
前記コンピュータによって、前記使用率へのアプリケーション性能依存性を判定することであって、前記使用率は、前記実行ユニットが前記アプリケーションの前記1つまたは複数のコマンドを実行している総観察期間の一部分に対応する、前記判定することと
、
前記実行ユニットによって送信された準備完了信号から、修正された準備完了信号を生成すること
を含む、コンピュータによって実現される方法。
【請求項11】
前記準備完了信号は、前記実行ユニットが前記
1つまたは複数のコマンドを受信するための準備を完了していることを示す、請求項
10に記載の方法。
【請求項12】
前記修正された準備完了信号に基づいて前記1つまたは複数のコマンドを前記実行ユニットに転送するために発行ユニットを使用すること
を更に含む、請求項
10に記載の方法。
【請求項13】
前記実行ユニットが前記1つまたは複数のコマンドの実行を開始可能であることを前記準備完了信号が示す期間を制限すること
を更に含む、請求項
10に記載の方法。
【請求項14】
ランダム信号に基づいて、前記修正された準備完了信号を生成すること
を更に含む、請求項
10に記載の方法。
【請求項15】
使用率
リミッタに基づいて前記使用率を制御すること
を更に含む、請求項
10に記載の方法。
【請求項16】
第2の実行ユニットの第2の使用率を制御することと、
前記実行ユニットの前記使用率および前記第2の実行ユニットの前記第2の使用率へのアプリケーション性能依存性を判定することと
を更に含む、請求項
10に記載の方法。
【請求項17】
プロセッサ・コアにおけるボトルネックを検出するためのコンピュータ・システムであって、前記コンピュータ・システムは、
1つまたは複数のプロセッサと、1つまたは複数のコンピュータ可読メモリと、1つまたは複数のコンピュータ可読有形記憶デバイスと、前記1つまたは複数のメモリのうちの少なくとも1つを介した前記1つまたは複数のプロセッサのうちの少なくとも1つによる実行のために前記1つまたは複数の記憶デバイスのうちの少なくとも1つに記憶されたプログラム命令と
を備え、
前記コンピュータ・システムは、
コンピュータによって、前記プロセッサ・コアの実行ユニットの使用率を制御することであって、前記実行ユニットは前記実行ユニットに転送されたアプリケーションの1つまたは複数のコマンドを実行する、前記制御することと、
前記コンピュータによって、前記使用率へのアプリケーション性能依存性を判定することであって、前記使用率は、前記実行ユニットが前記アプリケーションの前記1つまたは複数のコマンドを実行している総観察期間の一部分に対応する、前記判定することと
、
前記実行ユニットによって送信された準備完了信号から、修正された準備完了信号を生成することであって、前記準備完了信号は、前記実行ユニットが前記1つまたは複数のコマンドを受信するための準備を完了していることを示す、前記生成すること
を含む方法を実施可能である、コンピュータ・システム。
【請求項18】
前記準備完了信号は、前記実行ユニットが前記1つまたは複数のコマンドを受信するための準備を完了していることを示す、請求項17に記載のコンピュータ・システム。
【請求項19】
前記コンピュータ・システムは、
前記修正された準備完了信号に基づいて前記1つまたは複数のコマンドを前記実行ユニットに転送するために発行ユニットを使用すること
を含む方法を更に実施可能である、請求項17に記載のコンピュータ・システム。
【請求項20】
前記コンピュータ・システムは、
前記実行ユニットが前記1つまたは複数のコマンドの実行を開始可能であることを前記準備完了信号が示す期間を制限すること
を含む方法を更に実施可能である、請求項17に記載のコンピュータ・システム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、一般に、コンピュータ・システムに関し、より詳細には、プロセッサ・コアに関する。
【背景技術】
【0002】
アプリケーション性能の向上は、かなりの程度までハードウェア性能の上昇の結果である。構造体のサイズが技術的および経済的限界に到達しただけでなく、基本的な物理的限界に到達したため、ハードウェアの発展による同等の性能向上は、もはや期待されない。
【0003】
しかしながら、ソフトウェアを最適化する可能性は残っている。例えば、ソフトウェア・アルゴリズム自体が向上され得る。おそらく、更に有望であるのは、ハードウェアを意識したソフトウェアのチューニングである。従来、アプリケーション性能を実際に制限しているハードウェア・ユニットの知識を有すること、すなわち、どのハードウェア・ユニットが所与のアプリケーションのボトルネックに相当するかの知識を有することが望ましいことがある。例えば、計算ユニットが利用されている間にメモリ・ユニットがアプリケーションのボトルネックに相当することがある。すると、メモリ・ユニットの使用を減らし、計算ユニットの使用を増やすようにソフトウェアを適合させることが可能であり得る。代替的にまたは追加的に、ボトルネックの知識は、アプリケーションの要求により適合された将来のハードウェアの開発を可能とし得る。従って、向上されたプロセッサ・コアのための方法およびシステムが望まれ得る。
【発明の概要】
【0004】
本開示の態様は、少なくとも1つの実行ユニットと使用率コントローラとを含むプロセッサ・コアに関する。実行ユニットは、実行ユニットに転送されたコマンドを実行するために動作可能である。使用率コントローラは、実行ユニットに動作可能に結合される。使用率コントローラは実行ユニットの使用率を制御するために動作可能である。これは、実行ユニットがコマンドを実行している総実行期間の一部分に対応する。
【0005】
本開示の他の態様は、所与のアプリケーションのためのプロセッサ・コアにおけるボトルネックを検出または分析するための方法に関する。所与のアプリケーションの実行は、プロセッサ・コアの実行ユニットによって実行されるコマンドの所与のセットに対応する。方法は、プロセッサ・コアの少なくとも1つの実行ユニットの使用率を制御することと、結果的なアプリケーション性能を測定することとを含む。
【0006】
上記の概要は、本開示の例示的な各実施形態または全ての実施態様を記載することを意図されるものではない。
【0007】
以下の詳細な記載は、例示として与えられるものであって、本発明をもっぱらそれにのみ限定するものと意図されるものではなく、添付の図面との併用によって最も良好に理解されよう。
【図面の簡単な説明】
【0008】
【
図1】本開示の実施形態に係る、例示的なコンピュータ・システムである。
【
図2】本開示の実施形態に係る、第1の例示的なプロセッサ・コアを表す。
【
図3】本開示の実施形態に係る、第2の例示的なプロセッサ・コアを表す。
【
図4】本開示の実施形態に係る、第3の例示的なプロセッサ・コアを表す。
【
図5】本開示の実施形態に係る、第4の例示的なプロセッサ・コアを表す。
【
図6】本開示の実施形態に係る、第5の例示的なプロセッサ・コアを表す。
【
図7】本開示の実施形態に係る、所与のアプリケーションのためのプロセッサ・コアにおけるボトルネックを検出するための例示的な方法を表すフローチャートである。
【発明を実施するための形態】
【0009】
図面は必ずしも縮尺通りではない。図面は単なる概略的表現であり、本発明の特定のパラメータを描写することを意図されるものではない。図面は、本発明の典型的な実施形態のみを表すものと意図される。図面において、類似の番号は類似の要素を表す。
【0010】
本明細書において、特許請求される構造体および方法の詳細な実施形態が開示される。しかしながら、開示される実施形態は、様々な形態において具現化され得る特許請求される構造体および方法の単なる例示であることが理解され得る。しかしながら、本発明は、多くの異なる形態において具現化され得、本明細書において述べられる例示的な実施形態に限定されるものと解釈されるべきではない。記載において、提示される実施形態を不必要に不明瞭にすることを回避するために、よく知られた特徴および技術の詳細は省略されることがある。
【0011】
本発明の実施形態は、一般に、コンピュータ・システムの分野に関し、より詳細には、プロセッサ・コアに関する。以下に記載される例示的な実施形態は、とりわけ、プロセッサ・コアの性能および性能限界を測定するためにデューティ・サイクル・コントローラを使用するシステム、方法、およびコンピュータ・プログラム製品を提供する。従って、本実施形態は、種々のパラメータの中でもとりわけ、システムのクリティカルなコンポーネントの判定、システムにおけるより多くのユニットの必要性、システムにおいて利用されているユニットの特定に基づいて、所与のアプリケーションのボトルネックを特定する手法を提供することによって、コンピュータ・システムの技術的分野を向上させる能力を有する。具体的には、本開示の実施形態は、複数の実行ユニットの使用率を制御し得、それぞれの使用率へのアプリケーション性能依存性を判定し得、このことは、アプリケーションの性能を制限しているプロセッサ・コアのボトルネックの特定を可能とし得る。
【0012】
次に
図1を参照すると、本開示の実施形態を実現するために適用可能な例示的なコンピュータ・システム/サーバ12が図示されている。コンピュータ・システム/サーバ12は単なる例示であって、本明細書おいて記載される本発明の実施形態の使用または機能の範囲に関して何らかの限定を示唆すると意図されるものではない。
【0013】
図1において図示されるように、コンピュータ・システム/サーバ12は、汎用コンピューティング・デバイスの形態で図示されている。コンピュータ・システム/サーバ12のコンポーネントとしては、これらに限定されるものではないが、1つもしくは複数のプロセッサまたは処理ユニット16、システム・メモリ28、およびシステム・メモリ28を含む様々なシステム・コンポーネントをプロセッサ16に結合するバス18などがあり得る。
【0014】
バス18は、多様なバス・アーキテクチャのうちの任意のものを使用したメモリ・バスもしくはメモリ・コントローラ、周辺機器用バス、アクセラレイテッド・グラフィックス・ポート、およびプロセッサもしくはローカル・バスなど、いくつかのタイプのバス構造の任意のもののうちの1つまたは複数を表す。例として、これらに限定されるものではないが、このようなアーキテクチャとしては、業界標準アーキテクチャ(ISA)バス、マイクロ・チャネル・アーキテクチャ(MCA)バス、拡張ISA(EISA)バス、ビデオ・エレクトロニクス規格協会(VESA)ローカル・バス、および周辺機器相互接続(PCI)バスなどがある。
【0015】
コンピュータ・システム/サーバ12は、典型的には、多様なコンピュータ・システム可読媒体を含む。このような媒体は、コンピュータ・システム/サーバ12によってアクセス可能な任意の利用可能な媒体であり得、揮発性および不揮発性媒体、リムーバブルおよび非リムーバブル媒体の両方を含む。
【0016】
システム・メモリ28は、ランダム・アクセス・メモリ(RAM)30またはキャッシュ・メモリ32あるいはその両方などの揮発性メモリの形態のコンピュータ・システム可読媒体を含み得る。コンピュータ・システム/サーバ12は、他のリムーバブル/非リムーバブル、揮発性/不揮発性コンピュータ・システム記憶媒体を更に含み得る。単なる例であるが、非リムーバブル、不揮発性磁気媒体(図示されていない。典型的には「ハード・ドライブ」と称される)からの読み込みおよびこれへの書き込みのための記憶システム34が提供され得る。図示されていないが、リムーバブル、不揮発性磁気ディスク(例えば、「フロッピー(R)・ディスク」)からの読み込みおよびこれへの書き込みのための磁気ディスク・ドライブ、ならびにCD-ROM、DVD-ROM、もしくは他の光学媒体などのリムーバブル、不揮発性光ディスクからの読み込みおよびこれへの書き込みのための光ディスク・ドライブが提供され得る。このような場合、これらの各々は、1つまたは複数のデータ媒体インタフェースによって、バス18に接続され得る。以下において更に図示および記載されるように、メモリ28は、本発明の実施形態の機能を実行するように構成された1セット(例えば、少なくとも1つ)のプログラム・モジュールを有する少なくとも1つのプログラム製品を含み得る。
【0017】
例として、これらに限定されるものではないが、1セット(例えば、少なくとも1つ)のプログラム・モジュール42を有するプログラム/ユーティリティ40、オペレーティング・システム、1つまたは複数のアプリケーション・プログラム、他のプログラム・モジュール、およびプログラム・データが、メモリ28に記憶され得る。オペレーティング・システム、1つもしく複数のアプリケーション・プログラム、他のプログラム・モジュール、およびプログラム・データ、またはこれらのいくつかの組合せは各々、ネットワーキング環境の実施態様を含み得る。プログラム・モジュール42は、概して、本明細書において記載される本発明の実施形態の機能または方法あるいはその両方を実行する。
【0018】
また、コンピュータ・システム/サーバ12は、キーボード、ポインティング・デバイス、ディスプレイ24などの1つまたは複数の外部デバイス14、ユーザがコンピュータ・システム/サーバ12と相互作用することを可能にする1つまたは複数のデバイス、またはコンピュータ・システム/サーバ12が1つまたは複数の他のコンピューティング・デバイスと通信することを可能とする任意のデバイス(例えば、ネットワーク・カード、モデムなど)、あるいはその組合せと通信し得る。このような通信は、入出力(I/O)インタフェース22を介して行われ得る。なおも更に、コンピュータ・システム/サーバ12は、ローカル・エリア・ネットワーク(LAN)、一般的なワイド・エリア・ネットワーク(WAN)、またはパブリック・ネットワーク(例えば、インターネット)、あるいはその組合せなどの1つまたは複数のネットワークと、ネットワーク・アダプタ20を介して通信し得る。図示されるように、ネットワーク・アダプタ20は、コンピュータ・システム/サーバ12の他のコンポーネントと、バス18を介して通信する。図示されていないが、コンピュータ・システム/サーバ12と併せて、他のハードウェア・コンポーネントまたはソフトウェア・コンポーネントあるいはその両方が使用され得ることが理解されるべきである。例としては、これらに限定されるものではないが、マイクロコード、デバイス・ドライバ、冗長処理ユニット、外部ディスク・ドライブ・アレイ、RAIDシステム、テープ・ドライブ、およびデータ・アーカイブ・記憶システムなどがある。
【0019】
本開示の実施形態は、
図1のプログラム/ユーティリティ40またはプログラム・モジュール42として実現され得ることが留意されるべきである。
【0020】
次に
図2を参照すると、本開示の実施形態に係る、第1の例示的なプロセッサ・コア100が図示されている。第1の例示的なプロセッサ・コア100は、コマンドを実行するために動作可能な実行ユニット120を含む。
図2の実施例において、実行ユニット120は、ユニットAとしても示される。第1の例示的なプロセッサ・コア100は、2つ以上の実行ユニット120を含み得る。例えば、第1の例示的なプロセッサ・コア100は、ユニットB、ユニットCなど(図においては図示されていない)を追加的に含み得る。発行コマンドとも称され得る、計算を開始させるためのコマンドCを受信するための入力部に加えて、実行ユニット120は更なる入力部121を含み得る。例えば、更なる入力部121は、実行ユニット120によって操作されるべきデータを受信するために使用され得る。所与のアプリケーションの実行は、プロセッサ・コアの実行ユニットによって実行されるコマンドの所与のセットに対応することが留意されるべきである。
【0021】
更には、第1の例示的なプロセッサ・コア100は、1つまたは複数の使用率コントローラ130を含む。使用率コントローラ130は、準備完了ブロッカ(Ready Blocker)と称されることもある。各使用率コントローラ130は、1つまたは複数の実行ユニット120に動作可能に結合される。各使用率コントローラ130は、それが結合された実行ユニット120の使用率を制御するために動作可能であり得る。当業者には知られているように、プロセッサ・コアの実行ユニットは、観察期間Tのうち時間tAだけしかアクティブでない場合がある。比率tA/Tは使用率と称される。
【0022】
実行ユニット120は、先行する計算が実施されたこと、および、実行ユニット120が次の計算を実行するための準備を完了していることを示す準備完了信号Rを送信し得る。図において示されるように、使用率コントローラ130は、準備完了信号Rから修正された準備完了信号R*を生成するために動作可能である。
【0023】
第1の例示的なプロセッサ・コア100は、修正された準備完了信号R*に基づいて、計算を開始するように実行ユニットをトリガする次のコマンドCを転送するために動作可能な発行ユニット110を更に含み得る。発行ユニット110は、更なる入力部111を含み得、発行ユニット110がコマンドCを発行する前に、この更なる入力部111を通って更なる信号が受信されなければならない。
【0024】
使用率コントローラ130は、あるパーセンテージの時間にわたって準備完了信号Rをマスクし得る。それ故、必ずしも使用率コントローラ130が実行ユニット120から準備完了信号Rを受信するたびごとではないが、修正された準備完了信号R*が発行ユニット110に送信され得る。故に、実行ユニット120の使用率が修正され得、特には減少され得る。準備完了信号Rまたは修正された準備完了信号R*あるいはその両方は、対応するユニットの間の静的な電気接続(static electrical connection)の静的な電圧(static voltage)(すなわち、ハイまたはロー)に対応し得る。しかしながら、準備完了信号Rおよび修正された準備完了信号R*をバス上のメッセージとして送信することも可能であり得る。
【0025】
個々の実行ユニットの使用率の個々の修正は、プロセッサ・コアの動作周波数を減少させることと比べて、所与のアプリケーションの性能を制限するボトルネックのより詳細な分析を可能とし得る。アプリケーション性能に対するハードウェアの影響を分析するための知られた方法における知られた副作用は、回避され得る。例えば、プロセッサ・コアの動作周波数の減少は、実行ユニットの使用率を減少させ得るだけではなく、プロセッサ・コアの電気的振る舞い、すなわち、電圧、電流、容量にも影響を与え得る。更には、本出願において提案される技術は、ハードウェア性能に影響を与える従来の方法と比べて、より細かい粒度を提供し得る。例えば、提案される方法および関連するシステムは、ソケットごとにより多くのまたはより少ないコアを単純に使用するよりも細かい粒度を提供し得る。更には、提案される使用率コントローラは、異なる実行ユニットのために使用され得るという追加的な利点を有し得る。例えば、同一のタイプの使用率コントローラが、算術計算を実施する実行ユニットおよびメモリ・アクセスを制御する実行ユニットのために使用され得る。
【0026】
これとは別に、複数の実行ユニットの使用率を制御し、それぞれの使用率へのアプリケーション性能依存性を判定することは、所与のアプリケーションの性能を制限するプロセッサ・コアのボトルネックを特定することを可能とし得る。
【0027】
使用率コントローラ130は、修正された準備完了信号R*を提供するためにフィードバック・シフト・レジスタ132およびANDゲート131を含み得る。ANDゲート131は、準備完了信号Rを第1の入力部において受信し、フィードバック・シフト・レジスタ132によって送信されたゲート信号Gを第2の入力部において受信する。フィードバック・シフト・レジスタ132は、第1の例示的なプロセッサ・コア100のクロック・サイクルごとにシフトし得る。フィードバック・シフト・レジスタおよびANDゲートは、集積回路に実装することが非常に容易である。特には、フィードバック・シフト・レジスタおよびANDゲートが半導体ダイ上に必要とする空間は非常に小さい。フィードバック・シフト・レジスタ132は、nビットのフィードバック・シフト・レジスタであり得る。フィードバック・シフト・レジスタ132には、jとkとの合計がnに等しいj個のゼロ(「0」)とk個の1(「1」)とが初期化時間に前もってロードされ得る。j(またはk)とnとの関係が、使用率コントローラ130が準備完了信号Rをマスクするクロック・サイクルの比率を決定し得る。フィードバック・シフト・レジスタ132のビット数nは、どのくらい細かにこの比率が選択され得るかを決定し得る。例えば、フィードバック・シフト・レジスタ132の長さは、100ビットよりも短くてよく、特には50ビットよりも短くてよく、5ビットよりも長くてよく、特には10ビットでよい。
【0028】
次に
図3を参照すると、本開示の実施形態に係る、入力部211を有する発行ユニット210と、入力部221を有する実行ユニット220と、使用率コントローラ・ユニット230とを含む第2の例示的なプロセッサ・コア200が図示されている。発行ユニット210、入力部211、実行ユニット220、入力部221、および使用率コントローラ・ユニット230の互いに対する相互作用に関しては、
図2の第1の例示的なプロセッサ・コア100およびその対応する要素、すなわち、発行ユニット110、更なる入力部111、実行ユニット120、更なる入力部121、および使用率コントローラ130に関する上記の説明が参照される。
【0029】
第2の例示的なプロセッサ・コア200は、使用率コントローラ・ユニット230の内部構造において第1の例示的なプロセッサ・コア100と異なる。使用率コントローラ130がANDゲート131を含むのと同様に使用率コントローラ・ユニット230はANDゲート231を含み、ANDゲート131、231のどちらも、それぞれの実行ユニット120、220からの準備完了信号Rを第1の入力部において受信し、修正された準備完了信号R*をそれぞれの発行ユニット110、210に送信する。比較器233は、ランダム数生成器、例えば擬似ランダム数生成器、235から受信されたランダム数Bを、リミット値レジスタ234に記憶されたリミット値Aと比較する。
【0030】
ランダム数生成器235は、ゼロとn-1との間のランダム数Bを生成し得る。これに対応して、リミット値レジスタ234は、ゼロとn-1との間のリミット値Aを記憶し得る。ランダム数Bがリミット値Aよりも小さいときだけ、比較器233は、ゲート信号GをANDゲート231に送信する。ランダム数に基づいてゲート信号を生成することで、プロセッサ・コアの電気回路内に、予期せぬ副作用を有し得る規則的ビート(regular beat)を生成することを回避し得る。
【0031】
次に
図4を参照すると、本開示の実施形態に係る、入力部311を有する発行ユニット310と、入力部321を有する実行ユニット320と、使用率コントローラ・ユニット330とを含む第3の例示的なプロセッサ・コア300が図示されている。発行ユニット310、入力部311、実行ユニット320、入力部321、および使用率コントローラ・ユニット330の互いに対する相互作用に関しては、
図2の第1の例示的なプロセッサ・コア100およびその対応する要素、すなわち、発行ユニット110、更なる入力部111、実行ユニット120、更なる入力部121、および使用率コントローラ130に関する上記の説明が参照される。
【0032】
第3の例示的なプロセッサ・コア300は、使用率コントローラ・ユニット330の内部構造において第1の例示的なプロセッサ・コア100および第2の例示的なプロセッサ・コア200と異なる。使用率コントローラ・ユニット230が、比較器233と、リミット値レジスタ234と、ランダム生成器235とを含むのと同様に、使用率コントローラ・ユニット330は、比較器333と、リミット値レジスタ334と、ランダム生成器335とを含む。しかしながら、比較器333は、ゲート信号GをANDゲート231ではなく有限状態機械(FSM)336に送信する。
【0033】
有限状態機械336は、準備完了信号Rを第1の入力として、ゲート信号Gを第2の入力として受信し、その現在の状態、すなわち1またはゼロ、を修正された準備完了信号R*として送信する。準備完了信号Rおよびゲート信号Gの両方が1、すなわちR/G=1/1、のとき、有限状態機械336は、状態1、すなわち「1」、になる。準備完了信号Rが1、すなわちR/G=1/-、である限り、有限状態機械336は、状態1、すなわち「1」、を維持する。準備完了信号Rがゼロ、すなわちR/G=0/-、になったときだけ、有限状態機械336は、状態ゼロ、すなわち「0」になる。準備完了信号Rが、ゼロ、すなわちR/G=0/-を維持する限り、または、ゲート信号Gが、ゼロ、すなわちR/G=-/0を維持する限り、有限状態機械336は、状態ゼロ、すなわち「0」を維持し、これは発行ユニット310に送信される。
【0034】
有限状態機械336を使用した提案される使用率コントローラ・ユニット330は、実行ユニット320の使用率を増加させることだけを可能とし、FSMがいったん状態1になり、実行ユニット320が新たなコマンドを待っているとき、追加的なビジー・サイクルを散在させることはない。
【0035】
これは、前の2つの実施態様はどんなに長く実行ユニットが既に新たなコマンドを待つようになっていてもビジー・サイクルを散在させるという問題を、100%解消するわけではないが改善する。更には、ランダム生成器335が、ビートの形成の回避を助け得る。
【0036】
使用率コントローラ・ユニット330の代替的な実施形態において、比較器333と、リミット値レジスタ334と、ランダム生成器335とを含む回路は、フィードバック・シフト・レジスタ132と同様のフィードバック・シフト・レジスタによって置き換えられてもよい。
【0037】
次に
図5を参照すると、本開示の実施形態に係る、入力部411を有する発行ユニット410と、入力部421を有する実行ユニット420と、使用率コントローラ・ユニット430とを含む第4の例示的なプロセッサ・コア400が図示されている。これらの要素、すなわち、発行ユニット410、入力部411、実行ユニット420、入力部421、および使用率コントローラ・ユニット430の互いに対する相互作用に関しては、
図2の第1の例示的なプロセッサ・コア100およびその対応する要素、すなわち、発行ユニット110、更なる入力部111、実行ユニット120、更なる入力部121、および使用率コントローラ130に関する上記の説明が参照される。
【0038】
第4の例示的なプロセッサ・コア400は、使用率コントローラ・ユニット430の内部構造において前述された例示的なプロセッサ・コア100、200および300と異なる。使用率コントローラ・ユニット130および230がANDゲート131および231をそれぞれ含むのと同様に、使用率コントローラ・ユニット430はANDゲート431を含む。ANDゲート131および231と同様に、ANDゲート431は、それぞれの実行ユニット420からの準備完了信号Rを第1の入力部において受信する。加えて、ANDゲート431は、使用率リミッタ436からのゲート信号Gを第2の入力部において受信する。
【0039】
使用率リミッタ436は、実行ユニット420の最近の使用率を測定する使用率回路440を含む。使用率回路440は、実行ユニット420からの準備完了信号を受信するシフト・レジスタ441と、カウンタ442とを含む。カウンタは、カウンタ442に記憶された値をデクリメントするシフト・レジスタ441からの信号を第1の入力部において受信し、カウンタ442に記憶された値をインクリメントする実行ユニット420からの準備完了信号Rを第2の入力部において受信する。カウンタ442は、シフト・レジスタ441における「1」の数をカウントし得る。代替的な実施形態において、使用率回路は、複数のN個の実行ユニットのために使用され得る。N個の実行ユニットは、同一の実行ユニットの複数の事例に対応し得る。この場合、使用率回路は、N個の実行ユニットからのN個の準備完了信号Rを受信し得る。本明細書において以前に記載されたように「0」および「1」をシフト・イン/加算する代わりに、「1」である準備完了信号Rの数がシフト・イン/加算される。
【0040】
カウンタ442に記憶された値は、実行ユニット420の使用率を表し得る。比較器433は、カウンタ442によって送信された値をリミット値レジスタ434に記憶されたリミット値と比較する。もしも使用率が所望の使用率よりも大きかったならば、比較器433はゲート信号GをANDゲート431に送信する。
【0041】
リミット値レジスタ434に記憶されたリミット値およびシフト・レジスタ441のビット数が、実行ユニットの所望の最大使用率を決定し得る。シフト・レジスタのビット数が大きいほど、使用率リミッタ436の粒度は細かくなり、測定ウィンドウは長くなる。例えば、シフト・レジスタのビット数は、5から100ビットに達し、特には、10から50ビットである。
【0042】
実行ユニットの最近の実際の使用率を測定することは、最近の実際の使用率が既に比較的高いときにだけ、明白な使用率の拡張を可能とし得る。既に非常に使用量の多い実行ユニットの使用率を増加させることは、非常に使用量の多い実行ユニットが所与のアプリケーションの性能のボトルネックを本当に表しているかどうかをより良好に検出することを可能とし得る。
【0043】
次に
図6を参照すると、本開示の実施形態に係る、入力部511を有する発行ユニット510と、入力部521を有する実行ユニット520と、使用率コントローラ・ユニット530とを含む第5の例示的なプロセッサ・コア500が図示されている。これらの要素、すなわち、発行ユニット510、入力部511、実行ユニット520、入力部521、および使用率コントローラ・ユニット530の互いに対する相互作用に関しては、
図2の第1の例示的なプロセッサ・コア100およびその対応する要素、すなわち、発行ユニット110、更なる入力部111、実行ユニット120、更なる入力部121、および使用率コントローラ130に関する上記の説明が参照される。
【0044】
使用率回路540は、使用率回路440に対応し、同様にシフト・レジスタ541とカウンタ542とを含む。特には、上に記載されたように、使用率回路540も複数の実行ユニットのために使用されるように修正され得る。
【0045】
マルチプレクサ550は、使用率リミッタ536からの信号を受信し、その値に応じて、上限リミット値レジスタ538に記憶された上限リミット値または下限リミット値レジスタ539に記憶された下限リミット値を比較器533に送信する。比較器533は、受信された値を、ランダム数生成器535から受信されたランダム数と比較し、比較の結果に応じて、ゲート信号GをANDゲート531に送信する。
【0046】
提案される使用率コントローラ・ユニット530は、測定された使用率と所望の使用率との比較に基づいて使用率を制御することを可能とし得る。もしも測定された使用率が所望の使用率よりも大きかったならば、ゲート信号を送信するために高い可能性が選択され得る。逆に、もしも測定された使用率が所望の使用率よりも小さかったならば、ゲート信号を送信するためにより低い可能性が選択され得る。
【0047】
次に
図7を参照すると、本開示の実施形態に係る、所与のアプリケーションのためのプロセッサ・コアにおけるボトルネックを検出するための方法のステップを説明するフローチャートが図示されている。ステップ702において、プロセッサ・コアの実行ユニットの使用率が制御され、実行ユニットは、実行ユニットに転送されたコマンドを実行する。ステップ704において、使用率に基づいてアプリケーション性能が測定され得る。使用率は、実行ユニットがコマンドを実行している総観察期間の一部分に対応する。
【0048】
いくつかの実施形態において、発行ユニットは、修正された準備完了信号に基づいてコマンドを実行ユニットに転送するために使用され得る。更に、いくつかの事例において、実行ユニットがコマンドの実行を開始可能であることを準備完了信号が示す期間が制限され得る。
【0049】
他の実施形態において、修正された準備完了信号はランダム信号に基づいて生成され得、使用率は(所望の)使用率リミッタに基づいて制御され得る。
【0050】
従って、本開示の実施形態は、プロセッサ・コアに関し、プロセッサ・コアは、実行ユニットであって、実行ユニットは、実行ユニットに転送されたコマンドを実行するために動作可能である、実行ユニットと、実行ユニットに動作可能に結合された使用率コントローラであって、使用率コントローラは実行ユニットの使用率を制御するために動作可能であり、使用率は、実行ユニットがコマンドを実行している総観察期間の一部分に対応する、使用率コントローラとを備える。
【0051】
実施形態によると、使用率コントローラは、実行ユニットによって送信された準備完了信号から、修正された準備完了信号を生成するために動作可能であり、準備完了信号は、実行ユニットがコマンドを受信するための準備を完了していることを示す。
【0052】
別の実施形態によると、プロセッサ・コアは、修正された準備完了信号に基づいてコマンドを実行ユニットに転送するために動作可能な発行ユニットを含む。
【0053】
別の実施形態において、使用率コントローラは、使用率リミッタを含み、使用率リミッタは、実行ユニットがコマンドの実行を開始可能であることを準備完了信号が示す期間を制限するために動作可能である。
【0054】
追加的な実施形態に従うと、使用率コントローラは、実行ユニットによって生成された準備完了信号をサンプリングするためのシフト・レジスタと、シフト・レジスタの内容に基づいて、修正された準備完了信号を生成するための回路とを含む。
【0055】
更なる実施形態によると、使用率コントローラは、ランダム信号を生成するためのランダム生成器と、ランダム信号に基づいて、修正された準備完了信号を生成するための回路とを含む。
【0056】
実施形態において、実行ユニットは、ロード・ストア・ユニットであるか、またはその一部である。実行ユニットは、ベクトル・ユニットまたは2進化10進数ユニット(BCDユニット)あるいはその両方であってもよい。
【0057】
更なる実施形態に従うと、実行ユニットは演算ユニットである。
【0058】
更には、本開示は、所与のアプリケーションのためのプロセッサ・コアにおけるボトルネックを検出または分析するための方法に関し、方法は、プロセッサ・コアの少なくとも1つの実行ユニットの使用率を制御することと、アプリケーション性能を測定することとを含む。
【0059】
実施形態において、方法は、実行ユニットによって送信された準備完了信号から、修正された準備完了信号を生成することを含み、準備完了信号は、実行ユニットがコマンドを受信するための準備を完了していることを示す。
【0060】
更なる実施形態によると、方法は、修正された準備完了信号に基づいてコマンドを実行ユニットに転送するために発行ユニットを使用することを含む。
【0061】
追加的な実施形態に従うと、方法は、実行ユニットがコマンドの実行を開始可能であることを準備完了信号が示す期間を制限することを含む。
【0062】
別の実施形態において、方法は、ランダム信号に基づいて、修正された準備完了信号を生成することを更に含む。
【0063】
更なる実施形態によると、方法は、所望の使用率に基づいて使用率を制御することを含む。
【0064】
別の実施形態に従うと、方法は、第2の実行ユニットの第2の使用率を制御することと、1つの実行ユニットの使用率および第2の実行ユニットの第2の使用率へのアプリケーション性能依存性を判定することとを更に含む。
【0065】
本発明は、任意の考え得る統合の技術的詳細レベルにおけるシステム、方法、またはコンピュータ・プログラム製品あるいはその組合せであり得る。コンピュータ・プログラム製品は、本発明の態様をプロセッサに実行させるためのコンピュータ可読プログラム命令をその上に有する1つ(または複数の)コンピュータ可読記憶媒体を含み得る。
【0066】
コンピュータ可読記憶媒体は、命令実行デバイスによる使用のための命令を保持および記憶し得る有形デバイスであり得る。コンピュータ可読記憶媒体は、これらに限定されるものではないが、例えば、電子記憶デバイス、磁気記憶デバイス、光学記憶デバイス、電磁記憶デバイス、半導体記憶デバイス、または前述のものの任意の適切な組合せであり得る。コンピュータ可読記憶媒体のより具体的な例の非網羅的な一覧には、携帯型コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM)、読み取り専用メモリ(ROM)、消去可能プログラム可能読み取り専用メモリ(EPROMまたはフラッシュ・メモリ)、静的ランダム・アクセス・メモリ(SRAM)、携帯型コンパクト・ディスク読み取り専用メモリ(CD-ROM)、デジタル・バーサタイル・ディスク(DVD)、メモリ・スティック、フロッピー(R)・ディスク、パンチカードもしくは命令が記録された溝における隆起された構造などの機械的に符号化されたデバイス、ならびに前述のものの任意の適切な組合せなどがある。本明細書において使用されるとき、コンピュータ可読記憶媒体は、それ自体が、電波もしくは他の自由に伝搬する電磁波、導波路もしくは他の送信媒体を通じて伝搬する電磁波(例えば、光ファイバ・ケーブルを通過する光パルス)、またはワイヤを通じて送信される電気信号などの一過性の信号であるとして解釈されるものではない。
【0067】
本明細書において記載されるコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体からそれぞれのコンピューティング/処理デバイスにダウンロードされ得、または、ネットワーク、例えばインターネット、ローカル・エリア・ネットワーク、ワイド・エリア・ネットワーク、または無線ネットワーク、あるいはその組合せを介して外部コンピュータまたは外部記憶デバイスにダウンロードされ得る。ネットワークとしては、銅送信ケーブル、光送信ファイバ、無線送信、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、またはエッジ・サーバ、あるいはその組合せなどがある。各コンピューティング/処理デバイスにおけるネットワーク・アダプタ・カードまたはネットワーク・インタフェースは、ネットワークからコンピュータ可読プログラム命令を受信し、コンピュータ可読プログラム命令を、それぞれのコンピューティング/処理デバイス内のコンピュータ可読記憶媒体における記憶のために転送する。
【0068】
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ(ISA)命令、マシン命令、マシン依存命令、マイクロコード、ファームウェア命令、状態設定データ、集積回路のための設定データ、あるいはSmalltalk(R)、C++などのオブジェクト指向プログラミング言語、ならびに「C」プログラミング言語もしくは類似のプログラミング言語などの手続き型プログラミング言語などの1つまたは複数のプログラミング言語の任意の組合せにおいて記述されたソース・コードまたはオブジェクト・コードであり得る。コンピュータ可読プログラム命令は、全体的にユーザのコンピュータ上で、スタンドアローンのソフトウェア・パッケージとして部分的にユーザのコンピュータ上で、部分的にユーザのコンピュータ上でおよび部分的にリモート・コンピュータ上で、あるいは全体的にリモート・コンピュータまたはサーバ上で実行し得る。後者のシナリオにおいて、リモート・コンピュータは、ローカル・エリア・ネットワーク(LAN)またはワイド・エリア・ネットワーク(WAN)などの任意のタイプのネットワークを通じてユーザのコンピュータに接続され得、または、外部コンピュータに対する接続が(例えば、インターネット・サービス・プロバイダを使用してインターネットを通じて)なされ得る。いくつかの実施形態において、本発明の態様を実行するために、コンピュータ可読プログラム命令の状態情報を利用して電子回路を個人化することによって、例えばプログラム可能論理回路、フィールド・プログラマブル・ゲート・アレイ(FPGA)、またはプログラム可能論理アレイ(PLA)などの電子回路がコンピュータ可読プログラム命令を実行し得る。
【0069】
本明細書において、本発明の態様は、本発明の実施形態に係る方法、装置(システム)、およびコンピュータ・プログラム製品のフローチャート図またはブロック図あるいはその両方を参照して記載されている。フローチャート図またはブロック図あるいはその両方の各ブロック、ならびにフローチャート図またはブロック図あるいはその両方におけるブロックの組合せは、コンピュータ可読プログラム命令により実現され得ることが理解されよう。
【0070】
これらのコンピュータ可読プログラム命令は、コンピュータまたは他のプログラム可能データ処理装置のプロセッサを介して実行する命令が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックに規定された機能/動作を実現する手段を作り出すように、汎用コンピュータ、専用コンピュータ、または他のプログラム可能データ処理装置のプロセッサに提供されて機械を生成し得る。これらのコンピュータ可読プログラム命令は、命令を記憶したコンピュータ可読記憶媒体が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックに規定された機能/動作の態様を実現する命令を含む製造物品を含むように、コンピュータ、プログラム可能データ処理装置、または他のデバイス、あるいはその組合せに対して特定の様態において機能するように指示し得るコンピュータ可読記憶媒体に記憶されてもよい。
【0071】
コンピュータ可読プログラム命令は、コンピュータ、他のプログラム可能装置、または他のデバイス上で実行する命令が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックに規定された機能/動作を実現するように、コンピュータ、他のプログラム可能データ処理装置、または他のデバイスにロードされて、一連の動作ステップがコンピュータ、他のプログラム可能装置、または他のデバイス上で実施されるようにし、コンピュータによって実現されるプロセスを生成するようにしてもよい。
【0072】
図におけるフローチャートおよびブロック図は、本発明の様々な実施形態に係るシステム、方法、およびコンピュータ・プログラム製品の考え得る実施態様のアーキテクチャ、機能、および動作を示す。この点に関して、フローチャートまたはブロック図における各ブロックは、規定された論理機能を実現するための1つまたは複数の実行可能命令を含む命令のモジュール、セグメント、または部分を表し得る。いくつかの代替的実施態様において、ブロックに記述された機能は、図面に記述された順序とは異なる順序で発生してよい。例えば、関連する機能に応じて、連続的に示される2つのブロックが実際には実質的に同時に実行されてよく、場合によってこれらのブロックが逆の順序で実行されてよい。また、ブロック図またはフローチャート図あるいはその両方の各ブロックならびにブロック図またはフローチャート図あるいはその両方におけるブロックの組合せは、規定された機能または動作を実施するか、または専用ハードウェアおよびコンピュータ命令の組合せを実行する専用ハードウェアに基づくシステムにより実現され得ることも留意されよう。
【0073】
開示される方法のステップならびに開示されるシステムおよび環境のコンポーネントは、数字または文字を使用して順次的にまたは連続的に特定されているが、これらの数字または文字の付加は、このようなステップが記載された順序で実施されるべきであることを示すものではなく、単に方法のステップの明瞭な参照を促進するために提供されている。更には、方法のステップは、それらの記載された機能の実施と並行して実施され得る。
【0074】
本発明の様々な実施形態の記載が例示を目的として提示されたが、網羅的であること、または開示される実施形態に限定されることが意図されるものではない。当業者には、記載される実施形態の範囲から逸脱することなく、多くの修正および変形が明らかであろう。本明細書において使用される用語は、実施形態の原理、実際的な適用、または市場に見られる技術に対する技術的向上を最も良好に説明するために、または、当業者が本明細書おいて開示される実施形態を理解することを可能とするために選ばれた。