JP2021047844A - プロセッサ機構をダイナミックにチューニングするための技術 - Google Patents

プロセッサ機構をダイナミックにチューニングするための技術 Download PDF

Info

Publication number
JP2021047844A
JP2021047844A JP2020105533A JP2020105533A JP2021047844A JP 2021047844 A JP2021047844 A JP 2021047844A JP 2020105533 A JP2020105533 A JP 2020105533A JP 2020105533 A JP2020105533 A JP 2020105533A JP 2021047844 A JP2021047844 A JP 2021047844A
Authority
JP
Japan
Prior art keywords
state
microarchitecture
circuit
processor
selected address
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2020105533A
Other languages
English (en)
Inventor
ショーハン アダーシュ
Chauhan Adarsh
ショーハン アダーシュ
ガウル ジャイエシュ
Gaur Jayesh
ガウル ジャイエシュ
サラ フランク
Sala Franck
サラ フランク
ラパポート リフ
Rappoport Lihu
ラパポート リフ
スペルバー ジーヴ
Sperber Zeev
スペルバー ジーヴ
ヨアズ アディ
Yoaz Adi
ヨアズ アディ
サブラモニー スリーニバス
Subramoney Sreenivas
サブラモニー スリーニバス
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of JP2021047844A publication Critical patent/JP2021047844A/ja
Priority to JP2022114213A priority Critical patent/JP2022153488A/ja
Priority to JP2022132858A priority patent/JP2022172197A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/485Task life-cycle, e.g. stopping, restarting, resuming execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • G06F11/3476Data logging
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • G06F11/348Circuit details, i.e. tracer hardware
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3024Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a central processing unit [CPU]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3055Monitoring arrangements for monitoring the status of the computing system or of the computing system component, e.g. monitoring if the computing system is on, off, available, not available
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3409Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
    • G06F11/3419Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment by assessing time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7867Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
    • G06F15/7871Reconfiguration support, e.g. configuration loading, configuration switching, or hardware OS
    • G06F15/7875Reconfiguration support, e.g. configuration loading, configuration switching, or hardware OS for multiple contexts
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/22Microcontrol or microprogram arrangements
    • G06F9/24Loading of the microprogram
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/88Monitoring involving counting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/885Monitoring specific for caches

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Quality & Reliability (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Executing Machine-Instructions (AREA)
  • Microcomputers (AREA)
  • Advance Control (AREA)
  • Debugging And Monitoring (AREA)

Abstract

【課題】データ処理システム内のプロセッサをダイナミックにチューニングする方法を提供する。【解決手段】マイクロアーキテクチャ機構及びダイナミックチューニングユニット(DTU)回路を備えるプロセッサは、マイクロアーキテクチャ機構を無効にした状態と有効にした状態でプログラムをそれぞれ実行する。DTU回路は、プロセッサがそれぞれの実行ウィンドウでより不良なパフォーマンスを実現したか否かを自動的に判定し、プログラムの選択されたアドレスに対する有用性状態を更新する。プロセッサがマイクロアーキテクチャ機構を有効にした状態でより不良なパフォーマンスを実現したという複数の連続的な判定に応じて、DTU回路は確定した不良状態を示すべく、有用性状態を自動的に更新する。確定した不良状態を示す有用性状態に応じて、DTU回路は、実行ウィンドウの選択されたアドレスに対するマイクロアーキテクチャ機構を自動的に無効にする。【選択図】図2

Description

本開示は、概して、データ処理システムに関し、特に、データ処理システム内のプロセッサをダイナミックにチューニングする技術に関する。
データ処理システム内の中央処理装置(CPU)は、状況次第で、機能を有していないCPUと比較してCPUのパフォーマンスを改善する様々な異なる機能を含み得る。例えば、状況次第で、投機的実行の機能を有するCPUは、投機的実行の機能を有していない同等のCPUより良好に実行し得る。
CPUの機能はまた、機能が1つより多くの設定をサポートするという点で、チューニング可能又は設定可能であり得る。本開示の目的のために、CPUの設定可能な機能が、「マイクロアーキテクチャ機構(microarchitectural feature)」と称され得る。例えば、CPUは、マイクロアーキテクチャ機構を有効及び無効にすることができ得る。さらに又は代替的に、CPUは、マイクロアーキテクチャ機構が有効にされるとき、マイクロアーキテクチャ機構に異なる設定を適用することができ得る。言い変えれば、マイクロアーキテクチャ機構は、設定範囲をサポートし得る。
しかしながら、有効にされる(すなわち、オンにされる)マイクロアーキテクチャ機構が、アプリケーションの一部のパフォーマンスの改善をもたらし得る一方で、アプリケーションの他の一部のパフォーマンスの低下をもたらす。さらに、マイクロアーキテクチャ機構がアプリケーション(又はアプリケーションの一部)のパフォーマンスの改善又はパフォーマンスの低下をもたらすかどうかは、アプリケーション(又はアプリケーションの一部)の実行と関連している他の状況に依存し得る。
例えば、マイクロアーキテクチャ機構は、アプリケーションにいくつかのデータのタイプ及び/又は量でより良好なパフォーマンスを実現させ得るが、データの他のタイプ及び/又は量でより不良なパフォーマンスを実現させる。また、データ処理システムは、複数のアプリケーションを同時に実行し得、1つのアプリケーションのパフォーマンスは、他のアプリケーションによって処理されているデータのタイプ及び/又は量だけでなく、データ処理システム上で実行している他のアプリケーションのタイプ及び数に依存して異なり得る。さらに、最新のプロセッサは、多くの異なるマイクロアーキテクチャ機構を有し得、これらの機能が、異なる状況でパフォーマンスにおける差をもたらす複雑な相互作用を有し得る。
少なくとも上述の理由のため、多種多様の異なる状況で改善したパフォーマンスを実現する方法でマイクロアーキテクチャ機構をチューニングすることは、困難である。
本発明の特徴及び利点は、添付の特許請求の範囲、1又は複数の例示的な実施形態の以下の詳細な説明、及び対応する図から明らかとなるだろう。
データ処理システム内のプロセッサをダイナミックにチューニングする技術を有するデータ処理システムの例示的な実施形態を示すブロック図である。
図1のプロセッサをダイナミックにチューニングする例示的な処理のフローチャートである。
図1のプロセッサ内の有限状態マシンの動作を示すブロック図である。
図1のプロセッサをダイナミックにチューニングする動作の疑似コードの記述である。
1又は複数の実施形態による、1つより多くのコアを有し得、統合メモリコントローラを有し得、統合グラフィックスを有し得るプロセッサのブロック図である。
1又は複数の実施形態による、システムおブロック図である。
1又は複数の実施形態による、より具体的で例示的なシステムのブロック図である。 1又は複数の実施形態による、より具体的で例示的なシステムのブロック図である。
1又は複数の実施形態による、システムオンチップのブロック図である。
上述のとおり、本開示は、データ処理システム内のプロセッサをダイナミックにチューニングする技術を導入する。特に、本開示は、1又は複数のマイクロアーキテクチャ機構が現在の条件の望ましい設定を判定すべく、異なる設定のランタイム評価を提供し、その望ましい設定のダイナミックな適用を提供する。さらに、評価が時間とともに繰り返され得、変更された条件の望ましい設定を判定して適用する。
以下でより詳細に説明されるように、1つの実施形態において、プロセッサ内のダイナミックチューニングユニットは、第1の実行ウィンドウに対する第1の設定(例えば、無効にする)におけるプロセッサのマイクロアーキテクチャ機構を用いて、及び第2の実行ウィンドウに対する第2の設定(例えば、有効にする)におけるマイクロアーキテクチャ機構を用いてプロセッサにソフトウェアを実行させる。ここで、ウィンドウは、同じサイズである。ダイナミックチューニングユニットは、これらのウィンドウのそれぞれを完了するのに必要なサイクル数に基づいて、パフォーマンスが改善したか低下したかを判定する。例えば、第2のウィンドウが第1のウィンドウより著しく少ないサイクル数で完了した場合、ダイナミックチューニングユニットは、マイクロアーキテクチャ機構の第2の設定が改善したパフォーマンスをもたらしたと判定し得る。また、プロセッサが第2のウィンドウを第1のウィンドウより少ないサイクル数で完了した場合、プロセッサは、平均して、第2のウィンドウではより多くのサイクルあたりの命令(IPC)を実行することができた。したがって、改善したパフォーマンスが高い効率のサイクルあたりの命令(IPC)の観点から評価され得、パフォーマンスの改善がより高い効率のIPCに反映される。
ダイナミックチューニングユニットは、有限状態マシンと一緒にそのような評価を用い得、マイクロアーキテクチャ機構の望ましい設定を判定する。さらに、ダイナミックチューニングユニットは実行されているソフトウェアの異なる部分を評価し得、ダイナミックチューニングユニットはソフトウェアのこれらの異なる部分にマイクロアーキテクチャ機構の異なる望ましい設定を判定して適用し得る。例えば、ダイナミックチューニングユニットは、ワークロードのいくつかの部分についてマイクロアーキテクチャ機構を有効にし得、ワークロードの他の部分についてマイクロアーキテクチャ機構を無効にし得る。本開示の目的のために、プロセッサのマイクロアーキテクチャ機構にワークロードの異なる一部について異なる設定(例えば、有効にする又は無効にする)を用いさせる処理が、このマイクロアーキテクチャ機構の「選択的なスロットル(selective throttling)」と称され得る。
図1は、データ処理システム10内のプロセッサ12をダイナミックにチューニングする技術を有するデータ処理システム10の例示的な実施形態を示すブロック図である。データ処理システム10は、本明細書で導入された技術を示す様々な仮想構成要素及び機能を有する仮想システムである。
図に示されるように、CPU又はプロセッサ12に加えて、データ処理システム10は、ランダムアクセスメモリ(RAM)14、不揮発性ストレージ(NVS)16、ネットワークインタフェースコントローラ(NIC)18等のような、他のハードウェアリソースを含む。また、図1の実施形態において、プロセッサ12は、2つのコア20A−20B、及びクロック22等のような他のモジュールを含む。図に示されるように、コア20Aは、算術論理ユニット(ALU)24、汎用レジスタ26のセット、プリフェッチユニット28等のような、様々な処理リソースを含む。コア20Bはまた、同じ又は類似のタイプの構成要素を含み得る。
また、他の実施形態において、プロセッサは、より少ないコア又はより多くのコアを含み得る。例えば、プロセッサは、シングルコア、又は数十若しくは数百のコアを含み得る。また、プロセッサは、基板に取り付けられてパッケージを形成する集積回路又は「チップ」として実装され得る。代替的に、プロセッサは、1つより多くのチップを含むパッケージとして実装され得る。
図1の実施形態において、NV16は、オペレーティングシステム(OS)52及びアプリケーション54のような、ソフトウェアを含む。データ処理システム10は、実行のためにソフトウェアをRAM14にコピーし得る。また、データ処理システム10は、複数のコア上でソフトウェアを同時に実行し得る。さらに、各コアは複数の論理プロセッサ(LP)含み得、各コアは複数のLP上でソフトウェアを同時に実行し得る。例えば、コアごとに2つのLPを有する4つのコアを含むCPUを有するデータ処理システムにおいて、データ処理システムは、8つの異なるアプリケーション又は単一アプリケーションの8つのインスタンス等を同時に実行し得る。
また、図1の実施形態において、プロセッサ12がプリフェッチユニット28をオン若しくはオフにできる、及び/又は、プリフェッチユニット28がオンにされるとき、プロセッサ12がプリフェッチユニット28に異なる設定を適用できるという点で、プリフェッチユニット28はチューニング可能である。言い変えれば、プリフェッチユニット28は、マイクロアーキテクチャ機構である。特に、プリフェッチユニット28は、プリフェッチユニット28が動作するかどうか、及び/又は、どのようにプリフェッチユニット28が動作するかに影響を与えるべく更新され得る機能設定29を含む。
さらに、以下でより詳細に説明されるように、プリフェッチユニット28は、(例えば、機能設定29をダイナミックに調節することによって)プリフェッチユニット28をダイナミックにチューニングするための制御ロジックを有するダイナミックチューニングユニット30を含む。さらに、データ処理システムは、複数のマイクロアーキテクチャ機構、及びこれらのマイクロアーキテクチャ機構のそれぞれに別個のダイナミックチューニングユニットを含み得る。本開示の目的のために、ダイナミックチューニングユニットの制御ロジックの一部又は全部が、「チューニング制御ロジック(tuning control logic)」と称され得る。
図1の実施形態において、ダイナミックチューニングユニット30内の制御ロジックは、以下でより詳細に説明されるように、リタイアした命令のカウンタ32、グローバル有効フラグ34、現サイクルのカウンタ36、前サイクルのカウンタ38、リフレッシュカウンタ31、及び有用性有限状態マシン(FSM)42を含む。制御ロジックはまた、どのようにダイナミックチューニングユニット30が動作するかを調節するための様々なチューニングパラメータ40を含む。図1の実施形態において、チューニングパラメータ40は、以下でより詳細に説明されるように、ウィンドウサイズ、関与閾値、重要性閾値、選択されたアドレスリスト、選択されたアドレスカウント、及びリフレッシュ閾値のパラメータを含む。制御ロジックはまた、以下でより詳細に説明されるように、プリフェッチユニット28を有効にすることがより良好なパフォーマンスをもたらすのか又はより不良なパフォーマンスをもたらすのかを判定するパフォーマンス評価ユニット(PEU)33、及び、選択されたアドレスに対する有用性状態が確定した良好な状態又は確定した不良状態に到達した後、選択されたアドレスに対してプリフェッチユニット28のプリフェッチ機能を有効又は無効にすることによってチューニング決定を実装するチューニング実施ユニット(TIU)35をそれぞれ含む。
プリフェッチユニット28はまた、評価テーブル50を含み、ダイナミックチューニングユニット30は、プリフェッチユニット28の異なる機能設定のパフォーマンスを評価するのに評価テーブル50を用いる。図1の実施形態において、評価テーブル50はアプリケーション54における選択されたアドレス(SA)ごとに行又はエントリ51を含み、行はSAの関与カウンタ(IC)、機能設定(FS)、及び有用性状態(US)を含む。図1において、下付き文字が所与のSAに対応する変数又は値を識別するのに用いられる。評価テーブル50を用いる処理の例示的な実施形態に対するさらなる詳細が、以下に提供される。SAはまた、命令ポインタ(IP)と称され得る。
したがって、ダイナミックチューニングユニット30内の制御ロジックは、様々な制御構造(例えば、PEU33、TIU35、及び有用性FSM42)、及び様々なデータストレージ構造(例えば、リフレッシュカウンタ31、リタイアした命令のカウンタ32等)を含む。これらのデータストレージ構造は、1又は複数のレジスタとして、1又は複数のレジスタの一部として、又は、その他の適切なタイプ若しくは複数のタイプのデータストレージ構造として実装され得る。同様に、制御構造は、任意の適切なタイプ又は複数のタイプのハードウェア構造を用いて実装され得る。例えば、以下で示されるように、ダイナミックチューニングユニット30の動作の一部又は全部を実装する制御ロジックの一部又は全部が、チップ内のハードウェア回路に実装され得る。したがって、ダイナミックチューニングユニット(DTU)はまた、DTU回路(DTU circuit)(又はDTU回路(DTU circuitry))と称され得、PEUはPEU回路(PEU circuit)(又はPEU回路(PEU circuitry))と称され得、TIUはTIU回路(TIU circuit)(又はTIU回路(TIU circuitry))等と称され得る。また、「ロジック(logic)」等の用語が、ハードウェア論理回路、他のタイプのハードウェア構成要素、又はハードウェア構成要素の組み合わせを指すのに用いられ得る。
図2は、プロセッサ12をダイナミックにチューニングする例示的な処理のフローチャートである。特に、図2の処理は、どのようにダイナミックチューニングユニット30がプリフェッチユニット28の異なる設定を有するプロセッサ12のパフォーマンスを評価し、改善したパフォーマンスのためにプリフェッチユニット28をダイナミックにチューニングするかを示す。例示の目的のために、アプリケーション54を実行している間にプロセッサ12を有効にしてより良好なパフォーマンスを実現すべく、その処理が、プロセッサがアプリケーション54を実行している間にプロセッサ12のパフォーマンスを評価して調節するダイナミックチューニングユニット30との関係において説明される。したがって、アプリケーション54は、「ダイナミックにチューニング可能なソフトウェア(dynamically−tunable software)」と称され得る。しかしながら、ダイナミックチューニングユニット30は、他のダイナミックにチューニング可能なソフトウェアのパフォーマンスを改善するのに同じ種類の工程を用い得る。
図2の処理は、ブロック110で示されるように、ダイナミックチューニングユニット30が、(アプリケーション54のような)ダイナミックにチューニング可能なソフトウェアが開始又は起動したか否かを判定することから開始し得る。そのようなソフトウェアが起動していない場合、ダイナミックチューニングユニット30は、ダイナミックにチューニング可能なソフトウェアが起動するのを待機し得る。
しかしながら、アプリケーション54が起動した場合、ブロック112に示されるように、ダイナミックチューニングユニット30は、アプリケーション54内の命令のアドレスのリストをチューニングパラメータ40内の「選択されたアドレスリスト」パラメータにロードし得る。特に、このアドレスのリストは、プリフェッチユニット28の異なる設定でパフォーマンスについて評価されるアプリケーション54内の全ての命令を識別する。以下でより詳細に説明されるように、ダイナミックチューニングユニット30は、続いて、選択されたアドレスリストを用いてアプリケーション54の異なる部分を評価し、この評価に基づいてこれらの異なる部分についてプリフェッチユニット28をダイナミックにチューニングするだろう。ダイナミックチューニングユニット30はまた、SAのカウントを「選択されたアドレスカウント」パラメータにロードし得る。特に、1つの実施形態において、ダイナミックチューニングユニット30は、アプリケーション54内のどの命令がプリフェッチユニット28の選択的なスロットルに起因してパフォーマンスの改善を可能にする可能性が最も高いかに関する評価に基づいて、アプリケーション54を自動的に分析して、選択されたアドレスリスト(及び選択されたアドレスカウント)を生成するヒューリスティックな制御ロジックを含む。選択されたアドレスリスト及び選択されたアドレスカウントを生成した後又は生成している間に、ダイナミックチューニングユニット30は、これらの値をチューニングパラメータ40にロードし得る。
ブロック114で示されるように、ダイナミックチューニングユニット30は、次に、いくつかの初期化動作を実行してそれ自体を準備し得る。例えば、ダイナミックチューニングユニット30は、アプリケーション54内の各SAの行又はエントリを含み、各SAの有用性状態を中立の初期状態に初期化する、アプリケーション54の評価テーブル50を作成し得る。本開示の目的のために、選択されていない命令のアドレスは、「未選択のアドレス」(UA)と称され得る。例えば、図4は、SAのリタイアによってトリガされた動作及びUAのリタイアによってトリガされた動作を示す。
図1を再び参照すると、以下でより詳細に説明されるように、ダイナミックチューニングユニット30は、続いて、各SAの状態を調節するのに有用性FSM42を用い得る。
図3は、有用性FSM42の動作を示すブロック図である。図に示されるように、このFSMは、3つの中間状態及び2つの最終状態を含む。中間状態は、「中立(neutral)」の初期状態、並びに「不良の可能性がある(likely bad)」状態及び「良好の可能性がある(likely good)」状態を含む。最終状態は、「不良(bad)」及び「良好(good)」である。ラベル「より良好(Better)」を有する矢印の上部のセットによって示されるように、有用性FSM42は、プリフェッチユニット28の特定の設定がデフォルト又は以前の設定より良好なパフォーマンスをもたらしたという判定に応じて、SAの有用性状態を中間状態から右の次の状態に変更する。同様に、ラベル「より不良(Worse)」を有する矢印の下部のセットによって示されるように、有用性FSM42は、プリフェッチユニット28の特定の設定がデフォルト又は以前の設定より不良なパフォーマンスをもたらしたという判定に応じて、SAの有用性状態を中間状態から左の次の状態に変更する。本開示の目的のために、「不良(bad)」、「不良の可能性がある(likely bad)」、「中立(neutral)」、「良好の可能性がある(likely good)」、及び「良好(good)」の有用性状態が、それぞれ値1−5を用いて示され得る。また、有用性FSM42内の特定の位置における矢印の欠如は、一旦SAの状態が最終状態に到達すると、後続のパフォーマンスの結果に関わらず、SAが(リセットされるまで)その状態のままでいることを示す。しかしながら、他の実施形態において、有用性FSMは、3つより多くの中間状態を含み得る。それでもなお、最終状態に到達すべく、SAは、同じ方向に少なくとも2つの連続的な変更(すなわち、少なくとも2つの連続的なインクリメント又はデクリメント)を有していなければならない。
FSM42の1つの重要な態様は、それがSAの有用性状態が2つの異なる方向に移動することを可能にするという点で、それが二峰性を提供することである。例えば、SAは、複数の異なるウィンドウの「不良の可能性がある」及び「良好の可能性がある」のような状態間を前後に変動し得、その結果、(アプリケーション54がプログラムの相転移を実行したときに発生し得るような)改善したパフォーマンス又は低下したパフォーマンスの短時間の状態では、ダイナミックチューニングユニット30にマイクロアーキテクチャ機構の特定の設定を固定させない。その代わりに、上述のとおり、最終状態に到達すべく、SAは、同じ方向に少なくとも2つの連続的な変更を有していなければならない。
図3はまた、例示的なSAの有用性状態をダイナミックに評価して調節するのにダイナミックチューニングユニット30が有用性FSM42に関連して用いるいくつかの変数を示す。特に、図3は、ICに少なくとも部分的に基づいて、SAのUS(これらの変数はまた、図1の評価テーブル50の第1の行51に示される)を評価して調節する例示的な処理を反映する。特に、図3は、グローバル有効フラグ34が設定された状態で実行された「現サイクル(current cycle)」の完了に応じて、ダイナミックチューニングユニット30がパフォーマンスを評価することを示す。図3はまた、特定の状況において、ダイナミックチューニングユニット30が有用性FSM42を用いてSAの中間の有用性状態を「より良好」な有用性状態又は「より不良」な有用性状態に調節することを示す。特に、任意の調節は、(a)重要性閾値より大きい又はこれに等しいサイクル差39、及び(b)関与閾値より大きい又はこれに等しいICに依存する。これらの予備の条件が満たされて、かつ、現サイクルのカウンタ36が前サイクルのカウンタ38より小さい場合、ダイナミックチューニングユニット30は、FSM42の「より良好」な機能を用いて中間の有用性状態から右の次の有用性状態にUSを変更する。また、これらの予備の条件が満たされて、かつ、現サイクルのカウンタ36が前サイクルのカウンタ38より大きい場合、ダイナミックチューニングユニット30は、FSM42の「より不良」な機能を用いて中間の有用性状態から左の次の有用性状態にUSを変更する。有用性状態を評価して調節する処理が、以下でより完全に説明される。
再び図2のブロック114を参照すると、ダイナミックチューニングユニット30を準備する動作はまた、リタイアした命令のカウンタ32、グローバル有効フラグ34、現サイクルのカウンタ36、前サイクルのカウンタ38、及びリフレッシュカウンタ31のような変数のクリアを含み得る。以下でより詳細に説明されるように、ダイナミックチューニングユニット30は、実行ウィンドウ内でリタイアした命令数をカウントするのにリタイアした命令のカウンタ32を用いる。リタイアした命令カウンタはまた、「ウィンドウ長カウンタ(window−length counter)」と称され得る。
また、ダイナミックチューニングユニット30は、プリフェッチユニット28が実行ウィンドウに対して有効にされたか否かを示すのにグローバル有効フラグ34を用いる。グローバル有効フラグはまた、「グローバルクオリファイビット(global qualified bit)」と称され得る。
また、ダイナミックチューニングユニット30は、現在のウィンドウにおいて、今までに発生したサイクル数をカウントするのに現サイクルのカウンタ36を用いる。そして、新しいウィンドウを開始する前に、ダイナミックチューニングユニット30は、現サイクルのカウンタ36から前サイクルのカウンタ38に値をコピーし得、その結果、新しいウィンドウの総サイクル数が、続いて、前のウィンドウの総サイクル数と比較され得る。現サイクルのカウンタはまた、「現ウィンドウクロック(current−window clock)」と称され得る。
また、ダイナミックチューニングユニット30は、複数のウィンドウにわたってサイクル数をカウントするのにリフレッシュカウンタ31を用いる。以下でより詳細に説明されるように、リフレッシュカウンタ31が予め定められたリフレッシュ閾値に到達するとき、ダイナミックチューニングユニット30は、最終状態に到達した任意のSAをロック解除するのにグローバルリフレッシュを実行し得、これは、ダイナミックチューニングユニット30が変更した条件に応じてこれらのSAに異なる状態を割り当てることを可能にする。
準備動作はまた、(例えば、ウィンドウサイズの値、関与閾値の値、重要性閾値の値、及びリフレッシュ閾値の値を含む)望ましい値を有する全てのチューニングパラメータ40のうちのいくつかの設定を含み得る。準備動作はまた、現サイクルのカウンタ36におけるベースラインの基準を取得すべく、プリフェッチユニット28を無効にした状態でアプリケーション54から1つのウィンドウ分の命令を実行することを含み得る。特に、この値は、プリフェッチユニット28が無効にされたとき、1つのウィンドウ分の命令を実行するのにいくつのサイクルが必要とされたかを示すだろう。
ブロック116で示されるように、ダイナミックチューニングユニット30が準備動作を終了した後、コア20Aは、アプリケーション54を実行し続け得る。また、ブロック118及びブロック120で示されるように、アプリケーション54の実行と同時に、ダイナミックチューニングユニット30は、基準を収集し、これらの基準を使用してアプリケーション54のパフォーマンスを評価し、これらの評価に基づいてプリフェッチユニット28の設定を調節し得る。さらに、アプリケーション54を実行し、実行基準を収集し、これらの基準に基づいてアプリケーション54のパフォーマンスを評価し、それに応じてプリフェッチユニット28の設定を調節する処理に関する詳細が、図4に関して以下に提供される。
ブロック130で示されるように、ダイナミックチューニングユニット30は、アプリケーション54が終了したか否かを判定し得る。アプリケーション54が終了した場合、処理が終了し得る。しかし、アプリケーション54が終了していない場合、ブロック142で示されるように、ダイナミックチューニングユニット30は、リフレッシュカウンタ30がリフレッシュ閾値に到達したか否かを判定し得る。リフレッシュ閾値に到達していない場合、上述のとおり、コア20Aはアプリケーションを実行し続け得、ダイナミックチューニングユニット30はアプリケーション54のパフォーマンスを評価し、プリフェッチユニット28を調節するのに評価テーブル50及び有用性FSM42を使用し続け得る。
しかしながら、リフレッシュ閾値に到達した場合、ダイナミックチューニングユニット30は、評価テーブル50内の各SAの有用性状態を中立状態にリセットし得、それにより最終状態をクリアする。ダイナミックチューニングユニット30はまた、ICをリセットし得る。
その結果として、リフレッシュ処理は、ダイナミックチューニングユニット30が実行の異なる段階で所与のSAに異なる最終状態を適用することを可能にし、それにより、多種多様の状況において改善したパフォーマンスを提供する。
図4は、図1のプロセッサをダイナミックにチューニングする動作の疑似コードの記述である。特に、図4は、図2のブロック116、ブロック118、及びブロック120を実装する実行ストリームの例示的な実施形態の疑似コード、並びに実行ストリームで用いられる特定の頭字語を定義するキーを含む。
概要として、ダイナミックチューニングユニット30は、アプリケーション54から予め定められた命令数のリタイアを含む実行のウィンドウに対するデータを評価テーブル50に追加するのに図4の処理を用い得る。示された実施形態において、ダイナミックチューニングユニット30は、この数を指定するのに「ウィンドウサイズ(window size)」のチューニングパラメータ40を用いる。また、各ウィンドウの終了後、ダイナミックチューニングユニット30は、1又は複数のSAの有用性状態を更新し得る。例えば、ウィンドウの間、プリフェッチユニット28がSAに対して有効にされた場合、このSAがかなりの回数実行された場合、(プリフェッチユニット28がこのSAに対して有効にされていない間のウィンドウと比較して)パフォーマンスが著しく改善された場合、及び、このSAに対する有用性状態がまだ最終状態でない場合、ダイナミックチューニングユニット30は、評価テーブル50内のこのSAの有用性状態を「より良好」な状態に変更し得る。
上述のとおり、ダイナミックチューニングユニット30は、前のウィンドウを完了するのに必要とされるサイクル数と比較される、現在のウィンドウを完了するのに必要とされるサイクル数に基づいて、現在のウィンドウに対するパフォーマンスが前のウィンドウに対するパフォーマンスより良好であるか否かを判定し得る。現在のウィンドウが著しく少ないサイクルで完了した場合、パフォーマンスが改善したとみなされる。
ウィンドウのアプリケーションの実行を評価する動作及びその評価に基づいて有用性状態を更新する動作が以下でより詳細に説明される。
特に、図4の処理は、ダイナミックチューニングユニット30が現サイクルのカウンタ36から前サイクルのカウンタ38に値を保存し、現サイクルのカウンタ36及びリタイアした命令のカウンタ32をリセットすることによって新しいウィンドウを評価する準備をすることから始め得る。ダイナミックチューニングユニット30はまた、各SAに対して評価テーブル50内で関与カウンタをリセットし得る。
その後、アプリケーション54が1つのウィンドウ分の命令を実行及びリタイアするときに、ダイナミックチューニングユニット30はサイクルごとに一度現サイクルのカウンタ36をインクリメントし得、命令がリタイアするときにリタイアした命令のカウンタ32もインクリメントし、かつ、リタイアした命令が選択されたアドレスのうちの1つに存在するときにはいつでも評価テーブル50内の関連関与カウンタをインクリメントする。
図4において、演算子「++」は、インクリメント演算を示す。また、「開始ウィンドウ(Start Window)」と「終了ウィンドウ(End Window)」との間の演算は、仮想実行ストリームに実行される演算を表す。
特に、仮想シナリオという点で、図4は、各サイクルの間、ダイナミックチューニングユニット30が現サイクルのカウンタ36(CCC)をインクリメントすることを示す。また、Cycleについて、命令がリタイアされず、よって、ダイナミックチューニングユニット30がリタイアした命令のカウンタ32をインクリメントしない。しかしながら「Cycle」の間、コア20Aは、リオーダバッファからの命令をリタイアする。特に、コア20Aは、SAをリタイアする。言い変えれば、コア20Aは、SAに存在する命令をリタイアする。その結果として、ダイナミックチューニングユニット30は、リタイアした命令のカウンタ32(RIC)及びリフレッシュカウンタ31(RC)をインクリメントする。さらに、ダイナミックチューニングユニット30は、SAに対して評価テーブル50内の関与カウンタ(IC)をインクリメントする。言い変えれば、ダイナミックチューニングユニット30は、ICをインクリメントする。
その後、「Cycle」の間、コア20Aは、未選択アドレス(UA)で命令をリタイアする。その結果として、ダイナミックチューニングユニット30は、CCC、RIC及びRCをインクリメントするが、ダイナミックチューニングユニット30は、1つの関与カウンタもインクリメントしない。その後、「Cycle」の間、命令がリタイアされず、よって、ダイナミックチューニングユニット30はCCCのみをインクリメントする。その後、「Cycle」の間、コア20Aは、再びSAをリタイアする。その結果として、ダイナミックチューニングユニット30は、再びRIC、RC、及びICをインクリメントする。その後、「Cycle」の間、コア20AはSAをリタイアする。その結果として、ダイナミックチューニングユニット30は、RIC、RC、及びSAでの命令に対する関与カウンタ(すなわち、IC)をインクリメントする。後続のサイクルの間、ダイナミックチューニングユニット30は、どの命令がリタイアされるかに基づいて、必要に応じて、上述のような演算を実行し続ける。
さらに、コア20AがSAをリタイアするとき、ダイナミックチューニングユニット30は、評価テーブル50内のそのSAのFSフィールドを更新して、プリフェッチユニット28の現在の設定を反映し得る。例えば、ダイナミックチューニングユニット30は、機能設定29からの値をプリフェッチユニット28からSAに対するFSフィールドにコピーし得る。
しかしながら、一旦、リタイアした命令のカウンタ32内の値がチューニングパラメータ40に示される予め定められたウィンドウサイズと等しくなると、ダイナミックチューニングユニット30はウィンドウを終了する又は閉じる。特に、図4の実施形態において、ダイナミックチューニングユニット30は、Cycleの後、ウィンドウを終了する。したがって、下付き文字Qは、1つのウィンドウ分の命令を実行してリタイアするのに必要なサイクル数を示す。同様に、現サイクルのカウンタ36内の値は、そのサイクル数を反映するだろう。また、リフレッシュカウンタ31内の値は、(ウィンドウの開始時のその初期値と比較して)現在のウィンドウでリタイアした命令数だけインクリメントされているだろう。 代替的に、命令がリタイアしたときにはいつでもリフレッシュカウンタ31をインクリメントするよりはむしろ、ダイナミックチューニングユニット30は、ウィンドウサイズを各ウィンドウの終了時のリフレッシュカウンタ31に単純に追加し得る。
一旦、最も近い(又は「現在」)のウィンドウが閉じると、ダイナミックチューニングユニット30は、収集されたデータを分析し、そのウィンドウに関与していたSAに対する有用性状態を調節し得る。特に、図4の実施形態において、ダイナミックチューニングユニット30は、グローバル有効フラグ34が設定されているか否かを判定し、これは、プリフェッチユニット28が現在のウィンドウに対して有効であったことを示す。しかしながら、グローバル有効フラグ34が設定されていない場合、処理がその他の分岐に移動し、ダイナミックチューニングユニット30がグローバル有効フラグ34を設定する。
しかしながら、グローバル有効フラグ34が設定されている場合、コア20Aはプリフェッチユニット28を有効にした状態で現在のウィンドウを実行し、そのウィンドウがおそらく中間の有用性状態における命令の実行を含み、これは、これらの特定の命令がプリフェッチユニット28を有効にした状態で実行されたであろうことを意味する。その結果として、ダイナミックチューニングユニット30は、収集されたデータを分析し、プリフェッチユニット28を有効にすることによって著しいパフォーマンスの改善又は低下をもたらした否かを判定し、それに応じてSAの状態を調節する。前のウィンドウと比較して現在のウィンドウのパフォーマンスに著しい損失又は利得が存在した否かを判定すべく、ダイナミックチューニングユニット30は、前サイクルのカウンタ38から現サイクルのカウンタ36を減算し、どれくらい少ないサイクル(又はいくつのより多くのサイクル)が現在のウィンドウに用いられたのかを示す「サイクル差(cycle difference)」39を生成し得る。ダイナミックチューニングユニット30は、サイクル差39を予め定められた重要性閾値と比較し得る。サイクル差39が重要性閾値より大きくない又はこれに等しい場合、ダイナミックチューニングユニット30は、追加の評価をスキップして単にグローバル有効フラグ34をリセットし得、ダイナミックチューニングユニット30に次のウィンドウに対するプリフェッチユニット28を無効にさせる。
しかしながら、この差が著しい場合、ダイナミックチューニングユニット30は各SAを検討し、そのSAに対する有用性状態が変更されるべきか否かを判定し得る。特に、Forループ内で示されるように、各SAに対して、ダイナミックチューニングユニット30は、(a)そのSAに対する関与カウンタ>=予め定められた関与閾値であるか否か、(b)そのSAが中間(すなわち、最終でない)状態であるか否かを判定する。SAが現在のウィンドウ内にあまり関与していない場合、ダイナミックチューニングユニット30は、評価テーブル50内のそのSAに対する有用性状態を変更しない。同様に、SAが中間状態でない場合、ダイナミックチューニングユニット30は、そのSAに対する有用性状態を変更しない。
しかしながら、そのSAがかなり関与し、かつ、SAが中間状態である場合、ダイナミックチューニングユニット30は、パフォーマンスが改善されたか低下されたかによって、そのSAに対する有用性状態を調節する。特に、より少ないサイクルが現在のウィンドウ内で用いられた場合、パフォーマンスが改善され、よって、ダイナミックチューニングユニット30は、有用性FSM42内の「より良好」の矢印のうちの1つに沿って、そのSAに対する有用性状態をインクリメントする。しかし、より多くのサイクルが現在のウィンドウ内で用いられた場合、パフォーマンスが低下され、よって、ダイナミックチューニングユニット30は、有用性FSM42内の「より不良」の矢印のうちの1つに沿って、そのSAに対する有用性状態をデクリメントする。
例示の目的のために、上記の操作がForループとの関係において説明される。しかしながら、1つの実施形態において、ダイナミックチューニングユニット30は、実際には、並列で全てのSAに対して評価及び更新を実行する。例えば、図2のブロック112に関して上述のとおり、評価テーブル50内の各行/エントリは、有効フラグ(例えば、1ビット)を含み得、ダイナミックチューニングユニット50は、SA(すなわち、パフォーマンスに対して評価される命令のアドレス)を行にロードすることと併せて、その行に対する有効フラグを設定し得る。したがって、SAは、それらの有効フラグが設定された行に存在する、評価テーブル50内のこれらのアドレスであり得る。その後、ウィンドウが終了ときにはいつでも、ダイナミックチューニングユニット50は、パフォーマンスの影響を評価し得、並列に全ての有効なSAに対するパフォーマンス基準を更新し得る。
一旦、全てのSAが処理されると(又はサイクル差39が重要性閾値より大きくない若しくはこれに等しい場合)、上述のとおり、ダイナミックチューニングユニット30は、グローバル有効フラグ34をリセットし得、ダイナミックチューニングユニット30に次のウィンドウに対するプリフェッチユニット28を無効にさせる。図4の処理は、開始時点に戻り得、プリフェッチユニット28を無効にした状態でコア20Aが次のウィンドウを実行し、その後、プリフェッチユニット28を有効にした状態で次のウィンドウを実行し、以下同様である。
さらに、コア20Aがアプリケーション54を実行しているとき、たとえグローバル有効フラグ34が設定されている場合でも、評価テーブル50は、SAが「不良」の最終の有用性状態を有することを示す場合、コア20Aは、そのSAに対してプリフェッチユニット28を使用しないだろう。そして、たとえグローバル有効フラグ34がクリアである場合でも、評価テーブル50は、SAが「良好」の最終の有用性状態を有することを示す場合、コア20Aは、そのSAに対してプリフェッチユニット28を使用するだろう。
したがって、ダイナミックチューニングユニット30は、実行時間の間、ソフトウェアのパフォーマンスを分析し、改善したパフォーマンスに対するプリフェッチユニット28のようなマイクロアーキテクチャ機構をダイナミックに調節する。また、上述のとおり、図3に関して、最終状態に到達すべく、SAは、同じ方向に少なくとも2つの連続的な変更を有していなければならない。したがって、プリフェッチユニット28を有効することによって、2つの連続的なグローバル有効ウィンドウに対して著しく改善したパフォーマンスをもたらす場合、ダイナミックチューニングユニット30は、これらのグローバル有効ウィンドウに著しく関与したSAに対する有用性状態を「中立」(例えば)から「良好の可能性がある」に、その後、「良好の可能性がある」から「良好」に変更し得る。(本開示の目的のために、用語「2つの連続的なグローバル有効ウィンドウ(two consecutive globally−enabled windows)」は、グローバル有効フラグを設定した状態で実行された2つのウィンドウを指し、グローバル有効フラグをクリアした状態で実行されたウィンドウを除いて、他ウィンドウがこれらの2つのウィンドウの間で実行されない。)そして、プリフェッチユニット28を有効することによって、2つの連続的なグローバル有効ウィンドウに対して著しく低下したパフォーマンスをもたらす場合、ダイナミックチューニングユニット30は、(著しく関与した)SAに対する有用性状態を「中立」(例えば)から「不良の可能性がある」に、その後、「不良の可能性がある」から「不良」に変更し得る。しかしながら、状況に依存して、SAに対する有用性状態が、2又はそれより多くの中間状態で変更し得る。
例示の目的のために、本開示は、ダイナミックにチューニングされる単一のマイクロアーキテクチャ機構の実施形態に焦点を合わせてきた。しかしながら、他の実施形態において、プロセッサは、ダイナミックにチューニングされる複数のマイクロアーキテクチャ機構を含み得る。例えば、コアは、2又はそれより多くマイクロアーキテクチャ機構を含み得、これらのマイクロアーキテクチャ機構のそれぞれは、それ自身のダイナミックチューニングユニット及びそれ自身の評価テーブルを含み得る。各ダイナミックチューニングユニットは、ダイナミックチューニングユニット30に関して、これらの上述したものと同様の機能を含み得る。そして、各評価テーブルは、評価テーブル50に関して、これらの上述したものと同様の機能を含み得る。
また、上述のとおり、マイクロアーキテクチャ機構は、オンとオフだけなく、設定範囲をサポートし得る。そして、ダイナミックチューニングユニットは、現在のウィンドウに対して基準を収集し、評価テーブルを更新するときに、SAに用いられたFSを含み得る。その結果として、評価テーブルは、各SAに用いられるFSを示し得る。ダイナミックチューニングユニットは、これらのFSに基づいて、パフォーマンスを最適化し得る。例えば、プロセッサは、様々な異なる速度(又はサイズ、又は他のタイプの設定)から選択する機能設定を有し得、ダイナミックチューニングユニットは、異なる速度設定(又はサイズ設定、又は他のタイプの設定)を用いてウィンドウ間のパフォーマンスを比較し得る。ダイナミックチューニングユニットは、これらの比較に基づいて、異なるSAに対する有用性状態を調節し得る。例えば、ほとんどの保存から最も積極的な設定範囲を有するマイクロアーキテクチャ機構に関して、ダイナミックチューニングユニットは、これらの設定値のそれぞれについて、範囲の一端から他端に反復し得る。範囲内の特定の設定で最大の最適なパフォーマンスが存在する場合、ダイナミックチューニングユニットは、1つずつ各設定又はレベルを段階的にテストすることによって、その設定を識別できる。
また、他の実施形態において、ダイナミックチューニングユニットは、2つの異なる重要性閾値を用い得、1つをパフォーマンスの改善が著しいか否かを判定するのに適用し、もう1つをパフォーマンスの低下が著しいか否かを判定するのに適用する。したがって、そのような閾値が「改善重要性閾値(improvement significance threshold)」及び「低下重要性閾値(degradation significance threshold)」と称され得る。
また、ダイナミックチューニングユニットは、ウィンドウサイズ、関与閾値、重要性閾値、及びリフレッシュ閾値のような変数に任意の適切な値を用い得る。例えば、1つの実施形態又はシナリオにおいて、ダイナミックチューニングユニットは、数千(例えば、8,000−32,000)の命令のウィンドウサイズ、10%又は12.5%の重要性閾値、10%−20%の関与閾値、及び200,000のリフレッシュ閾値を用い得る。しかしながら、より小さい値又はより大きい値が、他の実施形態又はシナリオにおいてこれらの変数のそれぞれに用いられ得る。さらに、重要性閾値のような値が、実験的にチューニングされ得、特定のマイクロアーキテクチャ機構に対するメカニズムをスロットルする感度を調節する。
説明されたように、ダイナミックチューニングユニットは、現在の条件に基づいて、1又は複数マイクロアーキテクチャ機構の設定をダイナミックに適合することによって、プロセッサが改善したパフォーマンスを実現することを可能にする。さらに、ダイナミックチューニングユニットは、比較的単純であって、かつ、電力のような重要な処理リソースを必要としない制御ロジックで実装され得る。
少なくともいくつかのシナリオにおいて、本開示によるダイナミックチューニングユニットは、プロセッサが著しく改善された処理パフォーマンスを実現することを可能にし得る。例えば、1つのシミュレーションシナリオにおいて、分岐断定のマイクロアーキテクチャ機構を含むプロセッサが、3つの異なる設定をテストするようワークロードを実行するのに用いられた。第1のテストにおいて、プロセッサは、全体のワークロードに対してそのマイクロアーキテクチャ機構を無効にした状態でワークロードを実行した。第2のテストにおいて、プロセッサは、全体のワークロードに対してそのマイクロアーキテクチャ機構を有効にした状態でワークロードを実行した。第3のテストにおいて、プロセッサは、本明細書で説明されたように、ワークロードの一部に対してそのマイクロアーキテクチャ機構をダイナミックに有効した状態で、ワークロードの他の一部に対してそのマイクロアーキテクチャ機構を無効にした状態で、ワークロードを実行した。第2のテストは、第1のテストと比較して、機能を有効にすることによって、約5.9%のパフォーマンスの改善をもたらすことが示された。第3のテストは、第1のテストと比較して、本開示のように機能をダイナミックにチューニングすることによって、約8%のパフォーマンスの改善をもたらすことが示された。したがって、ダイナミックなチューニングは、マイクロアーキテクチャ機構の利点を約30%改善した。
この改善は、実際にマイクロアーキテクチャ機構にプロセッサのパフォーマンスを減少させるワークロードの一部である、負のアウトライアの影響の減少に少なくとも部分的に起因し得る。例えば、プリフェッチのマイクロアーキテクチャ機構は、概して、このマイクロアーキテクチャ機構がプリフェッチの利点を上回る負の結果でキャッシュ汚染をもたらし得る、一部のワークロードがなければ、メモリレイテンシを減少又は隠し得る。
1又は複数の実施形態において、多くの異なる種類のマイクロアーキテクチャ機構が、ダイナミックチューニングユニットによって、ダイナミックにチューニングされ得る。これらのマイクロアーキテクチャ機構は、限定することなく、プロセッサ内に分岐断定ユニット、プリフェッチユニット、及び他の構成要素を含み得る。さらに又は代替的に、これらのマイクロアーキテクチャ機構は、限定することなく、コアクロック速度、1又は複数のバッファのサイズ、又は他のストレージ論理構成等のような設定を含む、プロセッサの設定可能な動作特性又は設定を含み得る。
また、上述の説明において、現サイクルのカウンタ36は、マイクロアーキテクチャ機構が有効であるときにいくつのサイクルが消費されるかを示し、前サイクルのカウンタ38は、マイクロアーキテクチャ機構が無効であるときにいくつのサイクルが消費されるかを示す。より一般的には、本開示の目的のために、マイクロアーキテクチャ機構が有効であるときにいくつのサイクルが消費されるかを示すカウンタは、「有効サイクルカウンタ(enabled−cycles counter)」と称され得、マイクロアーキテクチャ機構が無効であるときにいくつのサイクルが消費されるかを示すカウンタは、「無効サイクルカウンタ(disabled−cycles counter)」と称され得る。
追加の実施形態
図5〜図9は、典型的なコンピュータアーキテクチャのブロック図である。そのようなアーキテクチャは、本明細書で説明されるように、ダイナミックチューニングユニットの制御ロジックをチューニングするプロセッサを含み得る。図5〜図9における同じ又は類似要素は、同様の参照番号を有している。ラップトップ、デスクトップ、ハンドヘルドPC、携帯情報端末、エンジニアリングワークステーション、サーバ、ネットワークデバイス、ネットワークハブ、スイッチ、組み込みプロセッサ、デジタル信号プロセッサ(DSP)、グラフィックスデバイス、ビデオゲームデバイス、セットトップボックス、マイクロコントローラ、携帯電話、ポータブルメディアプレーヤ、ハンドヘルドデバイス、及び様々な他の電子デバイスに関して当該技術分野で知られた他のシステム設計及び構成にも適している。概して、本明細書で開示されるようなプロセッサ及び/又は他の実行ロジックを組み込むことが可能な多様なシステム又は電子デバイスが概して適している。
図5は、1又は複数の実施形態による、1つより多くのコアを有し得、統合メモリコントローラを有し得、統合グラフィックスを有し得るプロセッサ1100のブロック図である。図5における実線枠は、シングルコア1102A、システムエージェント1110、1又は複数のバスコントローラユニット1116のセットを有するプロセッサ1100を示し、一方で、任意追加の破線枠は、複数のコア1102A−N、システムエージェントユニット1110内の1又は複数統合メモリコントローラユニットのセット、及び専用ロジック1108を有する代替のプロセッサ1100を示す。
したがって、プロセッサ1100の異なる実装は、1)(1又は複数のコアを含み得る)統合グラフィックス及び/又は科学(スループット)ロジックである専用ロジック1108を有するCPU、及び、1又は複数の汎用コア(例えば、汎用インオーダコア、汎用アウトオブオーダコア、その2つの組み合わせ)であるコア1102A−N、2)主にグラフィックス及び/又は科学(スループット)を対象としている多数の特定用途コアであるコア1102A−Nを有するコプロセッサ、並びに、3)多数の汎用インオーダコアであるコア1102A−Nを有するコプロセッサを含み得る。したがって、プロセッサ1100は、汎用目的プロセッサ、例えば、ネットワーク若しくは通信プロセッサ、圧縮エンジン、グラフィックスプロセッサ、GPGPU、(30若しくはそれより多くのコアを含む)高スループットの多数統合コア(MIC)コプロセッサ、組み込みプロセッサ、若しくは同様のもののような、コプロセッサ又は専用プロセッサであり得る。プロセッサは、1又は複数のチップ上に実装され得る。プロセッサ1100は、基板の一部であり得、及び/又は、例えば、BiCMOS、CMOS若しくはNMOSのような、多数の処理技術のいずれか用いて1若しくは複数の基板上に実装され得る。
メモリ階層は、コア内にある1又は複数のレベルのキャッシュユニット1104A−Nと、共有キャッシュユニット1106のセット又は1又は複数の共有キャッシュユニット1106と、統合メモリコントローラユニット1114のセットに連結された外部メモリ(不図示)とを含む。共有キャッシュユニット1106のセットは、L2、レベル3(L3)、レベル4(L4)、又は他レベルのキャッシュのような1又は複数の中間レベルキャッシュ、最終レベルキャッシュ(LLC)、及び/又はそれらの組み合わせを含み得る。一方、1つの実施形態において、リングベースの相互接続ユニット1112は、専用ロジック1108、共有キャッシュユニットのセット1106、及び、システムエージェントユニット1110/統合メモリコントローラユニット1114と相互接続するが、代替的な実施形態では、このようなユニットと相互接続する任意の数の周知技術を用い得る。1つの実施形態において、コヒーレンスが1又は複数キャッシュユニット1106とコア1102A−Nとの間で維持される。
システムエージェントユニット1110は、コア1102A−Nを調整して動作させるこれらの構成要素を含む。システムエージェントユニット1110は、例えば、電力制御ユニット(PCU)及び表示ユニットを含み得る。PCUは、コア1102A−N及び統合グラフィックスロジック1108の電力状態を管理するのに必要なロジック及び構成要素を含み得る。表示ユニットは、1又は複数の外部接続されたディスプレイを駆動するためのものである。
コア1102A−Nは、アーキテクチャ命令セットの観点から同種又は異種であり得、すなわち、2又はそれより多くのコア1102A−Nは、同じ命令セットを実行することが可能であり得、一方で、他のコアは、その命令セット又は異なる命令セットのサブセットのみを実行することが可能であり得る。本明細書で説明されるように、このようなコア1102A−Nは、特定のメモリアクセス命令をサブラインのメモリアクセス命令に変換し得る。
図6は、1又は複数の実施形態によるシステム1200のブロック図である。システム1200は、コントローラハブ1220に連結されている1又は複数プロセッサ1210、1215を含み得る。1つの実施形態において、コントローラハブ1220は、グラフィックスメモリコントローラハブ(GMCH)1290と、(別個のチップ上にあり得る)入力/出力ハブ(IOH)1250とを含む。GMCH1290は、連結されたメモリ内で動作を制御するメモリコントローラと、メモリ1240及びコプロセッサ1245に連結されているグラフィックスコントローラとを含む。IOH1250は、入力/出力(I/O)デバイス1260をGMCH1290に連結する。代替的に、メモリ及びグラフィックスコントローラのうちの1つ又は両方がプロセッサ内に統合され、メモリ1240及びコプロセッサ1245がプロセッサ1210に直接連結され、コントローラハブ1220がIOH1250と共に単一チップ内にある。
追加のプロセッサ1215の任意の性質が、破線で図6に示される。各プロセッサ1210、1215は、本明細書で説明された1又は複数の処理コアを含み得、プロセッサ1100のいくつかのバージョンであり得る。
メモリ1240は、例えば、ダイナミックランダムアクセスメモリ(DRAM)、相変化メモリ(PCM)、又はその2つの組み合わせであり得る。少なくとも1つの実施形態について、コントローラハブ1220は、フロントサイドバス(FSB)のようなマルチドロップバス、QuickPath Interconnect(QPI)のようなポイントツーポイントインタフェース、又は同様の接続1295を介してプロセッサ1210、1215と通信する。
1つの実施形態において、コプロセッサ1245は、例えば、高スループットMICプロセッサ、ネットワーク又は通信プロセッサ、圧縮エンジン、グラフィックスプロセッサ、GPGPU、組み込みプロセッサ、又は同様のもののような、専用プロセッサである。1つの実施形態において、コントローラハブ1220は、統合グラフィックスアクセラレータを含み得る。
アーキテクチャ特性、マイクロアーキテクチャ特性、熱特性、電力消費特性、及び同様のものを含む広範な評価基準の利点の観点から、物理リソース1210、1215の間には様々な差異が存在し得る。
1つの実施形態において、プロセッサ1210は、一般的なタイプのデータ処理動作を制御する命令を実行する。命令内に組み込まれているのは、コプロセッサ命令であり得る。プロセッサ1210は、これらのコプロセッサ命令を取り付けたコプロセッサ1245によって実行されるべきタイプであるとして認識する。したがって、プロセッサ1210は、コプロセッサ1245に対してコプロセッサバス又は他の相互接続上でこれらのコプロセッサ命令(コプロセッサ命令を表す制御信号)を発行する。コプロセッサ1245は、受信したコプロセッサ命令を受理し、これらを実行する。
図7及び図8は、1又は複数の実施形態による、より具体的で例示的なシステム1300及び1400のブロック図である。図7に示されるように、マルチプロセッサシステム1300はポイントツーポイント相互接続システムであり、ポイントツーポイント相互接続1350を介して連結される第1のプロセッサ1370及び第2のプロセッサ1380を含む。プロセッサ1370及び1380のそれぞれが、プロセッサ1100のいくつかのバージョンであり得る。1つの実施形態において、プロセッサ1370及び1380は、それぞれ、プロセッサ1210及び1215であり、一方、コプロセッサ1338はコプロセッサ1245である。他の実施形態において、プロセッサ1370及び1380は、それぞれ、プロセッサ1210及びコプロセッサ1245である。
それぞれ統合メモリコントローラ(IMC)ユニット1372及び1382を含む、プロセッサ1370及び1380が示される。プロセッサ1370はまた、そのバスコントローラユニットの一部として、ポイントツーポイント(P−P)インタフェース1376及び1378を含む。同様に、第2のプロセッサ1380は、P−Pインタフェース1386及び1388を含む。プロセッサ1370、1380は、P−Pインタフェース回路1378、1388を用いて、P−Pインタフェース1350を介して情報を交換し得る。図7に示されるように、IMC1372及び1382は、それぞれのメモリ、すなわち、メモリ1332及びメモリ1334にプロセッサを連結し、これらは、それぞれのプロセッサにローカルに取り付けられたメインメモリの一部であり得る。
プロセッサ1370、1380は、ポイントツーポイントインタフェース回路1376、1394、1386、1398を用いて、個々のP−Pインタフェース1352、1354を介してチップセット1390と情報をそれぞれ交換し得る。チップセット1390は、高パフォーマンスインタフェース1339を介してコプロセッサ1338と任意に情報を交換し得る。1つの実施形態において、コプロセッサ1338は、例えば、高スループットMICプロセッサ、ネットワーク又は通信プロセッサ、圧縮エンジン、グラフィックスプロセッサ、GPGPU、組み込みプロセッサ、又は同様のもののような、専用プロセッサである。
共有キャッシュ(不図示)が、いずれかのプロセッサ内に、又は、両方のプロセッサの外部に含まれ得、さらに、P−P相互接続を介してプロセッサと接続され、その結果、プロセッサが低電力モードに置かれている場合、プロセッサのローカルキャッシュ情報のいずれか又は両方が、共有キャッシュに格納され得る。
チップセット1390が、インタフェース1396を介して第1のバス1316に連結され得る。1つの実施形態において、第1のバス1316は、ペリフェラルコンポーネント相互接続(PCI)バス、又は、PCIエクスプレスバス若しくは他の第3世代I/O相互接続バスのようなバスであり得るが、本発明の範囲はそのように限定されない。
図7に示されるように、様々なI/Oデバイス1314は、第2のバス1320に第1のバス1316を連結するバスブリッジ1318と共に第1のバス1316と連結され得る。1つの実施形態において、コプロセッサ、高スループットMICプロセッサ、GPGPU、(例えば、グラフィックスアクセラレータ又はデジタル信号処理(DSP)ユニットのような)アクセラレータ、フィールドプログラマブルゲートアレイ、又はその他のプロセッサのような1又は複数の追加のプロセッサ1315が、第1のバス1316に連結される。1つの実施形態において、第2のバス1320は、ローピンカウント(LPC)バスであり得る。1つの実施形態において、例えば、キーボード及び/又はマウス1322、通信デバイス1327、並びに、命令/コード及びデータ1330を含み得るディスクドライブ又は他の大容量ストレージデバイスのようなストレージユニット1328を含む、様々なデバイスが、第2のバス1320に連結され得る。さらに、オーディオI/O1324が第2のバス1320に連結され得る。他のアーキテクチャが可能であることに留意されたい。例えば、図7のポイントツーポイントアーキテクチャ代わりに、システムは、マルチドロップバス又は他のこのようなアーキテクチャを実装し得る。
図8は、1又は複数の実施形態による、第2のより具体的で例示的なシステム1400のブロック図を表す。図8の他の態様を曖昧にすることを回避すべく、図7の特定の態様が図8から除外されている。
図8は、プロセッサ1370、1380が統合メモリ及びI/O制御ロジック(「CL」)1372及び1382をそれぞれ含み得ることを示す。したがって、CL1372、1382は、統合メモリコントローラユニットを含み、I/O制御ロジックを含む。図8は、メモリ1332、1334がCL1372、1382に連結されていることだけでなく、I/Oデバイス1414も制御ロジック1372、1382に連結されていることを示す。レガシI/Oデバイス1415がチップセット1390に連結されている。
図9は、1又は複数の実施形態による、システムオンチップ(SoC)1500のブロック図である。破線枠は、より高度なSoCにおける任意の機能である。図9において、相互接続ユニット1502が、(構成要素のキャッシュユニット1104A−Nを含む)1又は複数のコア1102A−Nのセットを含むアプリケーションプロセッサ1510及び共有キャッシュユニット1106と、システムエージェントユニット1110と、バスコントローラユニット1116と、統合メモリコントローラユニット1114と、統合グラフィックスロジック、画像プロセッサ、オーディオプロセッサ、及びビデオプロセッサを含み得る1又は複数のコプロセッサ1520のセットと、スタティックランダムアクセスメモリ(SRAM)ユニット1530と、ダイレクトメモリアクセス(DMA)ユニット1532と、1又は複数の外部ディスプレイに連結するための表示ユニット1540とに連結される。1つの実施形態において、コプロセッサ1520は、例えば、ネットワーク又は通信プロセッサ、圧縮エンジン、GPGPU、高スループットMICプロセッサ、組み込みプロセッサ、又は同様のもののような、専用プロセッサを含む。
結論
本開示において、「実施形態」、「1つの実施形態」、及び「他の実施形態」のような表現は、概して、実施形態の可能性を言及することを意図されている。これらの表現は、本発明を特定の実施形態の構成に限定することを意図しない。本明細書で用いられるように、これらの表現は、同じ実施形態又は異なる実施形態を言及し得、これらの実施形態は、他の実施形態に組み合わせ可能である。本明細書で説明されて示される原理及び例示的な実施形態に照らせば、示された実施形態が、本明細書で説明され及び/又は示された原理から逸脱することなく、配置及び詳細において修正され得ることを認識するだろう。
また、本開示によれば、デバイスは、プロセッサによってアクセスされるとき、デバイスに特定の動作を実行させる命令及び他のデータを含み得る。本開示の目的のために、デバイスに動作を実行させる命令は、概してソフトウェアと称され得る。ソフトウェア及び同様のものはまた、制御ロジックと称され得る。ブート処理の間に用いられるソフトウェアは、ファームウェアと称され得る。不揮発性メモリに格納されるソフトウェアはまた、ファームウェアと称され得る。ソフトウェアが、任意の適切な構造又は構造の組み合わせを用いて構成され得る。したがって、プログラム及びモジュールのような用語が、限定することなく、アプリケーションプログラム、サブプログラム、ルーチン、関数、プロシージャ、ドライバ、ライブラリ、データ構造、プロセス、マイクロコード、及び他のタイプのソフトウェア構成要素を含むソフトウェア構成の広範囲をカバーするのに概して用いられ得る。また、ソフトウェアモジュールが1つより多くの構成要素を含み得、これらの構成要素がモジュールの動作を完了するのに連携し得ることが理解されるべきである。また、ソフトウェアがデバイスに実行させる動作は、動作コンテキストを作成すること、特定のデータ構造を例示化すること等を含み得る。実施形態が、少なくとも1つのプロセッサと、ストレージシステム(例えば、揮発性メモリ及び/又は1又は複数不揮発性ストレージ要素)と、少なくとも1つの入力デバイスと、少なくとも1つの出力デバイスとを備えるプログラマブルシステム上で実行するソフトウェアとして実装され得る。
任意の適切な動作環境及びプログラミング言語(又は動作環境及びプログラミング言語の組み合わせ)が、本明細書で説明されたソフトウェア構成要素を実装するのに用いられ得る。例えば、プログラムコードが、高レベル手続き型プログラミング言語若しくはオブジェクト指向型プログラミング言語、又は、アセンブリ言語若しくは機械言語で実装され得る。本明細書で説明されるメカニズムが、任意の特定のプログラミング言語に限定されない。どのような場合でも、言語がコンパイラ型言語又はインタープリタ型言語であり得る。
データを含み、かつ、他のコンポーネントがそのデータを取得することを可能にする媒体は、機械アクセス可能媒体又は機械可読媒体と称され得る。したがって、実施形態は、本明細書で説明された動作の一部又は全部を実行する命令を含む機械可読媒体を含み得る。そのような媒体が、概して、装置、特にプログラム生成物と称され得る。1つの実施形態において、複数の構成要素のためのソフトウェアが、1つの機械可読媒体で格納される。他の実施形態において、2又はそれより多くの機械可読媒体が、1又は複数の構成要素のためのソフトウェアを格納するのに用いられ得る。例えば、1つのコンポーネントのための命令が、1つの媒体に格納され得、他のコンポーネントのための命令が、他の媒体に格納され得る。あるいは、1つのコンポーネントのための命令の一部が、1つの媒体に格納され得、その構成要素のための残りの命令(及び他の構成要素のための命令)が1又は複数の他の媒体に格納され得る。同様に、1つの実施形態において特定のデバイス上に存在するものとして上述されたソフトウェアが、他の実施形態において、1又は複数の他のデバイス上に存在し得る。例えば、分散環境において、いくつかのソフトウェアがローカルに格納され得、いくつかのソフトウェアがリモートに格納され得る。同様に、1つの実施形態において1つの特定のデバイス上で実行されるものとして上述された動作が、他の実施形態において、1又は複数の他のデバイスによって実行され得る。
他の実施形態が、データに実装され得、非一時的ストレージ媒体に格納され得、これは、少なくとも1つのマシンによって用いられる場合、少なくとも1つのマシンに本開示による1又は複数の動作を実行する少なくとも1つの集積回路を製造させる。さらに、さらなる実施形態が、SoC又は他のプロセッサに製造された場合、SoC又は他のプロセッサを本開示による1又は複数の動作を実行するように構成する情報を含むコンピュータ可読ストレージ媒体に実装され得る。少なくとも1つの実施形態の1つ又は複数の態様が、プロセッサ内の様々な論理ユニットを表し、かつ、マシンに読み出されると、本明細書で説明された技術を実行すべく、マシンに論理ユニットを作成させる、機械可読媒体に格納された典型的な命令によって実装され得る。様々な論理ユニットを表す命令は、「IPコア」と称され得、それらが有形の機械可読媒体に格納され得、論理ユニット又はプロセッサを実際に作成する製造装置にロードすべく、様々な顧客又は製造施設に供給され得る。少なくとも1つの実施形態の1つ又は複数の態様は、本明細書で説明された構造、回路、装置、プロセッサ及び/又はシステムの機能を画定する命令又は設計データを含む機械可読媒体を含み得る。例えば、設計データは、ハードウェア記述言語(HDL)でフォーマット化され得る。
いくつかの実施形態のための機械可読媒体は、限定することなく、プロセッサ、コントローラ、及びデータストレージ施設を含む他の構成要素だけでなく、磁気ディスク、光ディスク、磁気光ディスク、ダイナミックランダムアクセスメモリ(RAM)、スタティックRAM、リードオンリーメモリ(ROM)、ソリッドステートドライブ(SSD)、相変化メモリ(PCM)等のような、有形の非一時的ストレージ構成要素を含み得る。本開示の目的のために、用語「ROM」は、消去可能プログラマブルROM(EPROM)、電気的消去可能プログラマブルROM(EEPROM)、フラッシュROM、フラッシュメモリ等のような不揮発性メモリデバイスを指すのに概して用いられ得る。
本明細書で示されたハードウェア構成要素及びソフトウェア構成要素は、それぞれが他のものと実質的に別個に設計、構築又は更新され得るように、ある程度自己完結型である機能的要素を表すことも理解されるべきである。代替的な実施形態において、構成要素が、本明細書で説明されて示された機能を提供するためのハードウェア、ソフトウェア、又はハードウェア及びソフトウェアの組み合わせとして実装され得る。例えば、いくつかの実施形態において、説明された動作の一部又は全部を実装する制御ロジックの一部又は全部が、(例えば、集積回路チップ内のマイクロコードとして、チップ内のプログラマブルゲートアレイ(PGA)として、チップ内の特定用途向け集積回路(ASIC)として、チップ内のその他の適切なタイプのハードウェア回路として、又は、2又はそれより多くの異なるインスタンス及び/又は1又は複数のチップ内の複数のタイプのハードウェアロジックの組み合わせとして)ハードウェアロジックに実装され得る。また、「回路(circuit)」及び「回路(circuitry)」のような用語が、本明細書で相互に交換可能に用いられ得る。これらの用語及び「ロジック」と同様の用語が、アナログ回路、デジタル回路、配線回路、プログラマブル回路、プロセッサ回路、マイクロコントローラ回路、ハードウェア論理回路、状態マシン回路、任意の他のタイプのハードウェア構成要素、又は、ハードウェア構成要素の任意の適切な組み合わせを指すのに用いられ得る。
さらに、本教示は、多くの異なる種類のデータ処理システムにおける利点に用いられ得る。そのようなデータ処理システムは、限定することなく、アクセラレータ、システムオンチップ(SoC)、ウェアラブルデバイス、ハンドヘルドデバイス、スマートフォン、電話、オーディオデバイス、ビデオデバイス、オーディオ/ビデオデバイス(例えば、テレビシステム及びセットトップボックス)のようなエンターテイメントデバイス、車両処理システム、携帯情報端末(PDA)、タブレットコンピュータ、ラップトップコンピュータ、ポータブルコンピュータ、パーソナルコンピュータ(PC)、ワークステーション、サーバ、クライアントサーバシステム、分散型コンピューティングシステム、スーパーコンピュータ、高パフォーマンスコンピューティングシステム、コンピューティングクラスタ、メインフレームコンピュータ、ミニコンピュータ、及び、情報を処理又は送信する他のデバイスを含み得る。したがって、そうでないことが明示的に規定され又は文脈によって要求されない限り、任意の特定のタイプのデータ処理システム(例えば、PC)への言及は、同様に他のタイプのデータ処理システムを包含するものとして理解されるべきである。データ処理システムはまた、装置と称され得る。データ処理システムの構成要素はまた、装置と称され得る。
また、そうでないことが明確に規定されない限り、互いに連結されているものとして、互いに通信しているものとして、互いに応答するものして、又は同様のものとして説明された構成要素は、互いに連続して通信している必要がなく、互いに直接連結されている必要がない。同様に、そうでないことが明確に規定されていない限り、1つのコンポーネントが他のコンポーネントからデータを受信するものとして、又は他のコンポーネントにデータを送信するものとして説明されるとき、そのデータが、1又は複数の中間構成要素を介して送信又は受信され得る。さらに、データ処理システムのいくつかの構成要素が、バスで通信するためのインタフェース(例えば、コネクタ)を有するアダプタカードとして実装され得る。代替的に、デバイス又は構成要素が、プログラマブル又は非プログラマブルロジックデバイス又はアレイ、ASIC、組み込みコンピュータ、スマートカード、及び同様のもののような構成要素を用いる組み込みコントローラとして実装され得る。本開示の目的のために、用語「バス」は、2つより多くのデバイスによって共有され得る経路、及びポイントツーポイント経路を含む。同様に、「ライン」、「ピン」等のような用語が、配線、配線のセット、又は、その他の適切な導体若しくは導体のセットを指すものとして理解されるべきである。例えば、バスは1又は複数のシリアルリンクを含み得、シリアルリンクは1又は複数のレーンを含み得、レーンは1又は複数の異なるシグナリングペアで構成され得、これらの導体が保持している電気特性を変更することは、ライン上の信号と称され得る。また、本開示の目的のために、用語「プロセッサ」は、ソフトウェアを実行することが可能なハードウェア構成要素を示す。例えば、プロセッサが、中央処理装置(CPU)、処理コア、又は、その他の適切なタイプの処理要素として実装され得る。CPUは1又は複数の処理コアを含み得、デバイスは1又は複数のCPUを含み得る。
また、1又は複数の例示的な処理が特定のシーケンスで実行される特定の動作に関して説明されてきたが、本発明の多数の代替的な実施形態を導出すべく、多数の修正がこれらの処理に適用され得る。例えば、代替的な実施形態は、全ての開示された動作より少ない動作を用いる処理、追加の動作を用いる処理、及び、本明細書で開示された個々の動作が組み合わされ、さらに分割され、再配列され、又はそうでなければ変更される処理を含み得る。
同様に、例示的な実施形態において他の構成要素内に存在するものとして説明されてきた構成要素が、代替的な実施形態において異なって配置され得る。例えば、ダイナミックチューニングユニットに存在するものとして上述された構成要素の少なくとも一部が、代替的な実施形態においてダイナミックチューニングユニットに存在しなくてよい。
実施形態は、以下の例を含む。
例A1は、マイクロアーキテクチャ機構、DTU回路、及びDTU回路内に無効サイクルカウンタを備えるプロセッサである。無効サイクルカウンタは、プロセッサがマイクロアーキテクチャ機構を無効にした状態で第1の実行ウィンドウのプログラムを実行していた間にいくつのサイクルが消費されたかを示す。DTU回路は、有効サイクルカウンタであって、プロセッサがマイクロアーキテクチャ機構を有効にした状態で第2の実行ウィンドウのプログラムを実行していた間にいくつのサイクルが消費されたかを示す、有効サイクルカウンタをさらに有する。DTU回路は、PEU回路であって、無効サイクルカウンタ及び有効サイクルカウンタに基づいて、プロセッサが第2の実行ウィンドウで第1の実行ウィンドウと比較してより不良なパフォーマンスを実現したか否かを自動的に判定する、PEU回路をさらに有する。プロセッサは、評価テーブルであって、選択されたアドレスに対する有用性状態を有し、(a)プロセッサがマイクロアーキテクチャ機構を有効にした状態である第2の実行ウィンドウでマイクロアーキテクチャ機構を無効にした状態である第1の実行ウィンドウと比較してより不良なパフォーマンスを実現したという判定に応じて、より不良なパフォーマンスを示すべく、有用性状態がPEU回路によって更新され、(b)マイクロアーキテクチャ機構を有効にした状態で少なくとも2つの実行ウィンドウを反復した後、プロセッサがマイクロアーキテクチャ機構を有効にした状態でより不良なパフォーマンスを実現したという複数の連続的な判定に応じて、確定した不良状態を示すべく、有用性状態がPEU回路によって更新される、評価テーブルをさらに備える。DTU回路は、TIU回路であって、確定した不良状態を示す、評価テーブル内の選択されたアドレスに対する有用性状態に応じて、後続の実行ウィンドウの選択されたアドレスに対してマイクロアーキテクチャ機構を自動的に無効にする、TIU回路をさらに有する。
例A2は、DTU回路の少なくとも一部がマイクロアーキテクチャ機構内に存在する、例A1に記載のプロセッサである。
例A3は、プロセッサがマイクロアーキテクチャ機構を有効にした状態である第2の実行ウィンドウでマイクロアーキテクチャ機構を無効にした状態である第1の実行ウィンドウと比較してより良好なパフォーマンスを実現したという判定に応じて、より良好なパフォーマンスを示すべく、選択されたアドレスに対する有用性状態がPEU回路によって更新される、例A1に記載のプロセッサである。また、マイクロアーキテクチャ機構を有効にした状態で少なくとも2つの実行ウィンドウを反復した後、プロセッサがマイクロアーキテクチャ機構を有効にした状態でより良好なパフォーマンスを実現したという複数の連続的な判定に応じて、確定した良好状態を示すべく、選択されたアドレスに対する有用性状態がPEU回路によって更新される。また、TIU回路は、確定した良好状態を示す、評価テーブル内の選択されたアドレスに対する有用性状態に応じて、後続の実行ウィンドウの選択されたアドレスに対してマイクロアーキテクチャ機構を自動的に有効にする。例A3はまた、例A2の特徴を含み得る。
例A4は、DTU回路は、選択されたアドレスに対する有用性状態の更新を制御するFSMであって、FSMは、確定した不良状態と、確定した良好状態と、少なくとも3つの未確定の状態とを提供する、FSMを有する、例A1に記載のプロセッサである。未確定の状態は、中立状態と、良好の可能性がある状態と、不良の可能性がある状態とを含む。また、選択されたアドレスに対する有用性状態は、中立状態で開始し、選択されたアドレスに対する有用性状態は、(a)中立状態から不良の可能性がある状態に、(b)不良の可能性がある状態が確定した不良状態に有用性状態を連続的に更新することに応じて、確定した不良状態に到達する。例A4はまた、例A2−A3の任意の1又は複数の特徴を含み得る。
例A5は、各実行ウィンドウは、予め定められた数のリタイアした命令を含む、例A1に記載のプロセッサである。例A5はまた、例A2−A4の任意の1又は複数の特徴を含み得る。
例A6は、DTU回路は、プロセッサがマイクロアーキテクチャ機構を有効にした状態である第2の実行ウィンドウでマイクロアーキテクチャ機構を無効にした状態である第1の実行ウィンドウと比較して著しく不良なパフォーマンスを実現したか否かを判定するのにPEU回路が用いる予め定められた重要性閾値を有する、例A1に記載のプロセッサである。例A6はまた、例A2−A5の任意の1又は複数の特徴を含み得る。
例A7は、DTU回路は、選択されたアドレスでの命令が第2の実行ウィンドウの間に少なくとも閾値回数実行されたか否かを判定するのにPEU回路が用いる予め定められた関与閾値を有する、例A1に記載のプロセッサである。また、PEU回路は、選択されたアドレスが第2の実行ウィンドウの間に少なくとも閾値回数実行された場合に限り、マイクロアーキテクチャ機構を有効にした状態でより不良なパフォーマンスを示すべく、選択されたアドレスに対する有用性状態を更新する。例A7はまた、例A2−A6の任意の1又は複数の特徴を含み得る。
例A8は、評価テーブルは、選択されたアドレスで命令を実行することに応じてインクリメントされる、選択されたアドレスに対する関与カウンタを有する、例A7に記載のプロセッサである。また、PEU回路は、選択されたアドレスでの命令が第2の実行ウィンドウの間に少なくとも閾値回数実行されたか否かを判定するのに関与カウンタ及び予め定められた関与閾値を用いる。
例B1は、RAMと、RAMに連結するプロセッサと、プロセッサ内のマイクロアーキテクチャ機構と、プロセッサ内のDTU回路と、DTU回路内の無効サイクルカウンタを備えるデータ処理システムである。無効サイクルカウンタは、プロセッサがマイクロアーキテクチャ機構を無効にした状態で第1の実行ウィンドウのプログラムを実行していた間にいくつのサイクルが消費されたかを示す。DTU回路はまた、有効サイクルカウンタであって、プロセッサがマイクロアーキテクチャ機構を有効にした状態で第2の実行ウィンドウのプログラムを実行していた間にいくつのサイクルが消費されたかを示す、有効サイクルカウンタを有する。DTU回路は、PEU回路であって、無効サイクルカウンタ及び有効サイクルカウンタに基づいて、プロセッサが第2の実行ウィンドウで第1の実行ウィンドウと比較してより不良なパフォーマンスを実現したか否かを自動的に判定する、PEU回路をさらに有する。プロセッサは、選択されたアドレスに対する有用性状態を含む評価テーブルをさらに有する。プロセッサがマイクロアーキテクチャ機構を有効にした状態である第2の実行ウィンドウでマイクロアーキテクチャ機構を無効にした状態である第1の実行ウィンドウと比較してより不良なパフォーマンスを実現したという判定に応じて、より不良なパフォーマンスを示すべく、有用性状態がPEU回路によって更新され、マイクロアーキテクチャ機構を有効にした状態で少なくとも2つの実行ウィンドウを反復した後、プロセッサがマイクロアーキテクチャ機構を有効にした状態でより不良なパフォーマンスを実現したという複数の連続的な判定に応じて、確定した不良状態を示すべく、有用性状態がPEU回路によって更新される。DTU回路は、TIU回路であって、確定した不良状態を示す、評価テーブル内の選択されたアドレスに対する有用性状態に応じて、後続の実行ウィンドウの選択されたアドレスに対してマイクロアーキテクチャ機構を自動的に無効にする、TIU回路をさらに有する。
例B2は、DTU回路の少なくとも一部がマイクロアーキテクチャ機構内に存在する、例B1に記載のデータ処理システムである。
例B3は、プロセッサがマイクロアーキテクチャ機構を有効にした状態である第2の実行ウィンドウでマイクロアーキテクチャ機構を無効にした状態である第1の実行ウィンドウと比較してより良好なパフォーマンスを実現したという判定に応じて、より良好なパフォーマンスを示すべく、選択されたアドレスに対する有用性状態がPEU回路によって更新される、例B1に記載のデータ処理システムである。また、マイクロアーキテクチャ機構を有効にした状態で少なくとも2つの実行ウィンドウを反復した後、プロセッサがマイクロアーキテクチャ機構を有効にした状態でより良好なパフォーマンスを実現したという複数の連続的な判定に応じて、確定した良好状態を示すべく、選択されたアドレスに対する有用性状態がPEU回路によって更新される。また、TIU回路は、確定した良好状態を示す、評価テーブル内の選択されたアドレスに対する有用性状態に応じて、後続の実行ウィンドウの選択されたアドレスに対してマイクロアーキテクチャ機構を自動的に有効にする。例B3はまた、例B2の特徴を含み得る。
例B4は、DTU回路は、選択されたアドレスに対する有用性状態の更新を制御するFSMであって、FSMは、確定した不良状態と、確定した良好状態と、少なくとも3つの未確定の状態とを提供する、FSMを有する、例B1に記載のデータ処理システムである。未確定の状態は、中立状態と、良好の可能性がある状態と、不良の可能性がある状態とを含む。選択されたアドレスの有用性状態は、中立状態で開始し、選択されたアドレスに対する有用性状態は、(a)中立状態から不良の可能性がある状態に、(b)不良の可能性がある状態から確定した不良状態に有用性状態を連続的に更新することに応じて、確定した不良状態に到達する。例B4はまた、例B2−B3の任意の1又は複数の特徴を含み得る。
例B5は、各実行ウィンドウは、予め定められた数のリタイアした命令を含む、例B1に記載のデータ処理システムである。例B5はまた、例B2−B4の任意の1又は複数の特徴を含み得る。
例B6は、DTU回路は、プロセッサがマイクロアーキテクチャ機構を有効にした状態である第2の実行ウィンドウでマイクロアーキテクチャ機構を無効にした状態である第1の実行ウィンドウと比較して著しく不良なパフォーマンスを実現したか否かを判定するのにPEU回路が用いる予め定められた重要性閾値を有する、例B1に記載のデータ処理システムである。例B6はまた、例B2−B5の任意の1又は複数の特徴を含み得る。
例B7は、DTU回路は、選択されたアドレスでの命令が第2の実行ウィンドウの間に少なくとも閾値回数実行されたか否かを判定するのにPEU回路が用いる予め定められた関与閾値を有し、PEU回路は、選択されたアドレスが第2の実行ウィンドウの間に少なくとも閾値回数実行された場合に限り、マイクロアーキテクチャ機構を有効にした状態でより不良なパフォーマンスを示すべく、選択されたアドレスに対する有用性状態を更新する、例B1に記載のデータ処理システムである。例B7はまた、例B2−B6の任意の1又は複数の特徴を含み得る。
例B8は、評価テーブルは、選択されたアドレスで命令を実行することに応じてインクリメントされる、選択されたアドレスに対する関与カウンタを有する、例B7に記載のデータ処理システムである。PEU回路は、選択されたアドレスでの命令が第2の実行ウィンドウの間に少なくとも閾値回数実行されたか否かを判定するのに関与カウンタ及び予め定められた関与閾値を用いる。
例C1は、マイクロアーキテクチャ機構及びDTU回路を含むプロセッサ上で実行される方法である。方法は、(a)マイクロアーキテクチャ機構を無効にした状態で第1の実行ウィンドウのプログラムを、(b)マイクロアーキテクチャ機構を有効にした状態で第2の実行ウィンドウのプログラムを実行する段階を備える。方法は、(a)プロセッサが第2の実行ウィンドウで第1の実行ウィンドウと比較してより不良なパフォーマンスを実現したか否かをDTU回路が自動的に判定する段階と、(b)プロセッサが第2の実行ウィンドウでより不良なパフォーマンスを実現したことを判定したことに応じて、より不良なパフォーマンスを示すべく、プログラムの選択されたアドレスに対する有用性状態を更新する段階と、(c)プロセッサがマイクロアーキテクチャ機構を有効にした状態でより不良なパフォーマンスを実現したという複数の連続的な判定に応じて、確定した不良状態を示すべく、選択されたアドレスに対する有用性状態を自動的に更新する段階と、(d)確定した不良状態を示す、選択されたアドレスに対する有用性状態に応じて、第2の実行ウィンドウの後、実行ウィンドウの選択されたアドレスに対するマイクロアーキテクチャ機構を自動的に無効にする段階とをさらに備える。
例C2は、プロセッサが第2の実行ウィンドウで第1の実行ウィンドウと比較してより不良なパフォーマンスを実現したか否かを自動的に判定する前記段階は、DTU回路内のPEU回路によって実行される、例C1に記載の方法である。また、確定した不良状態を示すべく、選択されたアドレスに対する有用性状態を自動的に更新する段階は、PEU回路によって実行される。また、第2の実行ウィンドウの後、実行ウィンドウの選択されたアドレスに対するマイクロアーキテクチャ機構を自動的に無効にする段階は、DTU回路内のTIU回路によって実行される。
例C3は、(a)プロセッサがマイクロアーキテクチャ機構を有効にした状態である第2の実行ウィンドウでマイクロアーキテクチャ機構を無効にした状態である第1の実行ウィンドウと比較してより良好なパフォーマンスを実現したという判定に応じて、より良好なパフォーマンスを示すべく、選択されたアドレスに対する有用性状態を更新する段階と、(b)マイクロアーキテクチャ機構を有効にした状態で少なくとも2つの実行ウィンドウを反復した後、プロセッサがマイクロアーキテクチャ機構を有効にした状態で より良好なパフォーマンスを実現したという複数の連続的な判定に応じて、確定した良好状態を示すべく、選択されたアドレスに対する有用性状態を更新する段階と、(c)確定した良好状態を示す、選択されたアドレスに対する有用性状態に応じて、後続の実行ウィンドウの選択されたアドレスに対するマイクロアーキテクチャ機構を自動的に有効にする段階とをさらに備える、例C1に記載の方法である。例C3はまた、例C2の特徴を含み得る。
例C4は、(a)選択されたアドレスでの命令が第2の実行ウィンドウの間に少なくとも閾値回数実行されたか否かを自動的に判定するのに予め定められた関与閾値を用いる段階と、(b)選択されたアドレスが第2の実行ウィンドウの間に少なくとも閾値回数実行された場合に限り、マイクロアーキテクチャ機構を有効にした状態でより不良なパフォーマンスを示すべく、選択されたアドレスに対する有用性状態を自動的に更新する段階とをさらに備える、例C1に記載の方法である。例C4はまた、例C2−C3の任意の1又は複数の特徴を含み得る。
本明細書で説明された例示的な実施形態から容易に導出され得る多種多様の有益な変形を考慮して、この詳細な説明が例示のみを意図するものであり、カバレッジの範囲を限定するものとして解釈されるべきでない。
[その他の可能な項目]
[項目1]
プロセッサであって、
マイクロアーキテクチャ機構と、
ダイナミックチューニングユニット(DTU)回路と、
上記DTU回路内の無効サイクルカウンタであって、上記無効サイクルカウンタは、上記プロセッサが上記マイクロアーキテクチャ機構を無効にした状態で第1の実行ウィンドウのプログラムを実行していた間にいくつのサイクルが消費されたかを示す、無効サイクルカウンタと、
上記DTU回路内の有効サイクルカウンタであって、上記有効サイクルカウンタは、上記プロセッサが上記マイクロアーキテクチャ機構を有効にした状態で第2の実行ウィンドウのプログラムを実行していた間にいくつのサイクルが消費されたかを示す、有効サイクルカウンタと、
上記DTU回路内のパフォーマンス評価ユニット(PEU)回路であって、上記PEU回路は、上記無効サイクルカウンタ及び上記有効サイクルカウンタに基づいて、上記プロセッサが上記第2の実行ウィンドウで上記第1の実行ウィンドウと比較してより不良なパフォーマンスを実現したか否かを自動的に判定する、PEU回路と、
上記プロセッサ内の評価テーブルであって、上記評価テーブルは選択されたアドレスに対する有用性状態を有し、(a)上記プロセッサが上記マイクロアーキテクチャ機構を有効にした状態である上記第2の実行ウィンドウで上記マイクロアーキテクチャ機構を無効にした状態である上記第1の実行ウィンドウと比較してより不良なパフォーマンスを実現したという判定に応じて、より不良なパフォーマンスを示すべく、上記有用性状態が上記PEU回路によって更新され、(b)上記マイクロアーキテクチャ機構を有効にした状態で少なくとも2つの実行ウィンドウを反復した後、上記プロセッサが上記マイクロアーキテクチャ機構を有効にした状態でより悪いパフォーマンスを実現したという複数の連続的な判定に応じて、確定した不良状態を示すべく、上記有用性状態が上記PEU回路によって更新される、評価テーブルと、
上記DTU回路内のチューニング実施ユニット(TIU)回路であって、上記TIU回路は、上記確定した不良状態を示す、上記評価テーブル内の上記選択されたアドレスに対する上記有用性状態に応じて、後続の実行ウィンドウの上記選択されたアドレスに対して上記マイクロアーキテクチャ機構を自動的に無効にする、TIU回路と
備える、プロセッサ。
[項目2]
上記DTU回路の少なくとも一部が上記マイクロアーキテクチャ機構内に存在する、項目1に記載のプロセッサ。
[項目3]
上記プロセッサが上記マイクロアーキテクチャ機構を有効にした状態である上記第2の実行ウィンドウで上記マイクロアーキテクチャ機構を無効にした状態である上記第1の実行ウィンドウと比較してより良好なパフォーマンスを実現したという判定に応じて、より良好なパフォーマンスを示すべく、上記選択されたアドレスに対する上記有用性状態が上記PEU回路によって更新され、
上記マイクロアーキテクチャ機構を有効にした状態で少なくとも2つの実行ウィンドウを反復した後、上記プロセッサが上記マイクロアーキテクチャ機構を有効にした状態でより良好なパフォーマンスを実現したという複数の連続的な判定に応じて、確定した良好状態を示すべく、上記選択されたアドレスに対する上記有用性状態が上記PEU回路によって更新され、
上記TIU回路は、上記確定した良好状態を示す、上記評価テーブル内の上記選択されたアドレスに対する上記有用性状態に応じて、後続の実行ウィンドウの上記選択されたアドレスに対して上記マイクロアーキテクチャ機構を自動的に有効にする、
項目1に記載のプロセッサ。
[項目4]
上記DTU回路は、上記選択されたアドレスに対する上記有用性状態の更新を制御する有限状態マシン(FSM)であって、上記FSMは、上記確定した不良状態と、確定した良好状態と、少なくとも3つの未確定の状態とを提供する、FSMを有し、
上記未確定の状態は、中立状態と、良好の可能性がある状態と、不良の可能性がある状態とを含み、
上記選択されたアドレスに対する上記有用性状態は、上記中立状態で開始し、
上記選択されたアドレスに対する上記有用性状態は、(a)上記中立状態から上記不良の可能性がある状態に、(b)上記不良の可能性がある状態から上記確定した不良状態に上記有用性状態を連続的に更新することに応じて、上記確定した不良状態に到達する、
項目1に記載のプロセッサ。
[項目5]
各実行ウィンドウは、予め定められた数のリタイアした命令を含む、項目1に記載のプロセッサ。
[項目6]
上記DTU回路は、上記プロセッサが上記マイクロアーキテクチャ機構を有効にした状態である上記第2の実行ウィンドウで上記マイクロアーキテクチャ機構を無効にした状態である上記第1の実行ウィンドウと比較して著しく不良なパフォーマンスを実現したか否かを判定するのに上記PEU回路が用いる予め定められた重要性閾値を有する、項目1に記載のプロセッサ。
[項目7]
上記DTU回路は、上記選択されたアドレスでの命令が上記第2の実行ウィンドウの間に少なくとも閾値回数実行されたか否かを判定するのに上記PEU回路が用いる予め定められた関与閾値を有し、上記PEU回路は、上記選択されたアドレスが上記第2の実行ウィンドウの間に少なくとも上記閾値回数実行された場合に限り、上記マイクロアーキテクチャ機構を有効にした状態でより不良なパフォーマンスを示すべく、上記選択されたアドレスに対する上記有用性状態を更新する、項目1に記載のプロセッサ。
[項目8]
上記評価テーブルは、上記選択されたアドレスで上記命令を実行することに応じてインクリメントされる、上記選択されたアドレスに対する関与カウンタを有し、上記PEU回路は、上記選択されたアドレスでの上記命令が上記第2の実行ウィンドウの間に少なくとも上記閾値回数実行されたか否かを判定するのに上記関与カウンタ及び上記予め定められた関与閾値を用いる、項目7に記載のプロセッサ。
[項目9]
ランダムアクセスメモリ(RAM)と、
上記RAMに連結するプロセッサと、
上記プロセッサ内のマイクロアーキテクチャ機構と、
上記プロセッサ内のダイナミックチューニングユニット(DTU)回路と、
上記DTU回路内の無効サイクルカウンタであって、上記無効サイクルカウンタは、上記プロセッサが上記マイクロアーキテクチャ機構を無効にした状態で第1の実行ウィンドウのプログラムを実行していた間にいくつのサイクルが消費されたかを示す、無効サイクルカウンタと、
上記DTU回路内の有効サイクルカウンタであって、上記有効サイクルカウンタは、上記プロセッサが上記マイクロアーキテクチャ機構を有効にした状態で第2の実行ウィンドウのプログラムを実行していた間にいくつのサイクルが消費されたかを示す、有効サイクルカウンタと、
上記DTU回路内のパフォーマンス評価ユニット(PEU)回路であって、上記PEU回路は、上記無効サイクルカウンタ及び上記有効サイクルカウンタに基づいて、上記プロセッサが上記第2の実行ウィンドウで上記第1の実行ウィンドウと比較してより不良なパフォーマンスを実現したか否かを自動的に判定する、PEU回路と、
上記プロセッサ内の評価テーブルであって、上記評価テーブルは、選択されたアドレスに対する有用性状態を有し(a)上記プロセッサが上記マイクロアーキテクチャ機構を有効にした状態である上記第2の実行ウィンドウで上記マイクロアーキテクチャ機構を無効にした状態である上記第1の実行ウィンドウと比較してより不良なパフォーマンスを実現したという判定に応じて、より不良なパフォーマンスを示すべく、上記有用性状態が上記PEU回路によって更新され、(b)上記マイクロアーキテクチャ機構を有効にした状態で少なくとも2つの実行ウィンドウを反復した後、上記プロセッサが上記マイクロアーキテクチャ機構を有効にした状態でより不良なパフォーマンスを実現したという複数の連続的な判定に応じて、確定した不良状態を示すべく、上記有用性状態が上記PEU回路によって更新される、評価テーブルと、
上記DTU回路内のチューニング実施ユニット(TIU)回路であって、上記TIU回路は、上記確定した不良状態を示す、上記評価テーブル内の上記選択されたアドレスに対する上記有用性状態に応じて、後続の実行ウィンドウの上記選択されたアドレスに対して上記マイクロアーキテクチャ機構を自動的に無効にする、TIU回路と
を備える、データ処理システム。
[項目10]
上記DTU回路の少なくとも一部が上記マイクロアーキテクチャ機構内に存在する、項目9に記載のデータ処理システム。
[項目11]
上記プロセッサが上記マイクロアーキテクチャ機構を有効にした状態である上記第2の実行ウィンドウで上記マイクロアーキテクチャ機構を無効にした状態である上記第1の実行ウィンドウと比較してより良好なパフォーマンスを実現したという判定に応じて、より良好なパフォーマンスを示すべく、上記選択されたアドレスに対する上記有用性状態が上記PEU回路によって更新され、
上記マイクロアーキテクチャ機構を有効にした状態で少なくとも2つの実行ウィンドウを反復した後、上記プロセッサが上記マイクロアーキテクチャ機構を有効にした状態でより良好なパフォーマンスを実現したという複数の連続的な判定に応じて、確定した良好状態を示すべく、上記選択されたアドレスに対する上記有用性状態が上記PEU回路によって更新され、
上記TIU回路は、上記確定した良好状態を示す、上記評価テーブル内の上記選択されたアドレスに対する上記有用性状態に応じて、後続の実行ウィンドウの上記選択されたアドレスに対して上記マイクロアーキテクチャ機構を自動的に有効にする、
項目9に記載のデータ処理システム。
[項目12]
上記DTU回路は、上記選択されたアドレスに対する上記有用性状態の更新を制御する有限状態マシン(FSM)であって、上記FSMは、上記確定した不良状態と、確定した良好状態と、少なくとも3つの未確定の状態とを提供する、FSMを有し、
上記未確定の状態は、中立状態と、良好の可能性がある状態と、不良の可能性がある状態とを含み、
上記選択されたアドレスに対する上記有用性状態は、上記中立状態で開始し、
上記選択されたアドレスに対する上記有用性状態は、(a)上記中立状態から上記不良の可能性がある状態に、(b)上記不良の可能性がある状態から上記確定した不良状態に上記有用性状態を連続的に更新することに応じて、上記確定した不良状態に到達する、
項目9に記載のデータ処理システム。
[項目13]
各実行ウィンドウは、予め定められた数のリタイアした命令を含む、項目9に記載のデータ処理システム。
[項目14]
上記DTU回路は、上記プロセッサが上記マイクロアーキテクチャ機構を有効にした状態である上記第2の実行ウィンドウで上記マイクロアーキテクチャ機構を無効にした状態である上記第1の実行ウィンドウと比較して著しく不良なパフォーマンスを実現したか否かを判定するのに上記PEU回路が用いる予め定められた重要性閾値を有する、項目9に記載のデータ処理システム。
[項目15]
上記DTU回路は、上記選択されたアドレスでの命令が上記第2の実行ウィンドウの間に少なくとも閾値回数実行されたか否かを判定するのに上記PEU回路が用いる予め定められた関与閾値を有し、上記PEU回路は、上記選択されたアドレスが上記第2の実行ウィンドウの間に少なくとも上記閾値回数実行された場合に限り、上記マイクロアーキテクチャ機構を有効にした状態でより不良なパフォーマンスを示すべく、上記選択されたアドレスに対する上記有用性状態を更新する、項目9に記載のデータ処理システム。
[項目16]
上記評価テーブルは、上記選択されたアドレスで上記命令を実行することに応じてインクリメントされる、上記選択されたアドレスに対する関与カウンタを有し、上記PEU回路は、上記選択されたアドレスでの上記命令が上記第2の実行ウィンドウの間に少なくとも上記閾値回数実行されたか否かを判定するのに上記関与カウンタ及び上記予め定められた関与閾値を用いる、項目15に記載のデータ処理システム。
[項目17]
マイクロアーキテクチャ機構及びダイナミックチューニングユニット(DTU)回路を含むプロセッサ上で(a)上記マイクロアーキテクチャ機構を無効にした状態で第1の実行ウィンドウのプログラムを、(b)上記マイクロアーキテクチャ機構を有効にした状態で第2の実行ウィンドウのプログラムを実行する段階と、
上記プロセッサが上記第2の実行ウィンドウで上記第1の実行ウィンドウと比較してより不良なパフォーマンスを実現したか否かを上記DTU回路が自動的に判定する段階と、
上記プロセッサが上記第2の実行ウィンドウでより不良なパフォーマンスを実現したことを判定したことに応じて、より不良なパフォーマンスを示すべく、上記プログラムの選択されたアドレスに対する有用性状態を更新する段階と、
上記プロセッサが上記マイクロアーキテクチャ機構を有効にした状態でより不良なパフォーマンスを実現したという複数の連続的な判定に応じて、確定した不良状態を示すべく、上記選択されたアドレスに対する上記有用性状態を自動的に更新する段階と、
上記確定した不良状態を示す、上記選択されたアドレスに対する上記有用性状態に応じて、上記第2の実行ウィンドウの後、実行ウィンドウの上記選択されたアドレスに対する上記マイクロアーキテクチャ機構を自動的に無効にする段階と
を備える、方法。
[項目18]
上記プロセッサが上記第2の実行ウィンドウで上記第1の実行ウィンドウと比較してより不良なパフォーマンスを実現するか否かを自動的に判定する上記段階は、上記DTU回路内のパフォーマンス評価ユニット(PEU)回路によって実行され、
確定した不良状態を示すべく、上記選択されたアドレスに対する上記有用性状態を自動的に更新する上記段階は、上記PEU回路によって実行され、
上記第2の実行ウィンドウの後、実行ウィンドウの上記選択されたアドレスに対する上記マイクロアーキテクチャ機構を自動的に無効にする上記段階は、上記DTU回路内のチューニング実施ユニット(TIU)回路によって実行される
項目17に記載の方法。
[項目19]
上記プロセッサが上記マイクロアーキテクチャ機構を有効にした状態である上記第2の実行ウィンドウで上記マイクロアーキテクチャ機構を無効にした状態である上記第1の実行ウィンドウと比較してより良好なパフォーマンスを実現したという判定に応じて、より良好なパフォーマンスを示すべく、上記選択されたアドレスに対する上記有用性状態を更新する段階と、
上記マイクロアーキテクチャ機構を有効にした状態で少なくとも2つの実行ウィンドウを反復した後、上記プロセッサが上記マイクロアーキテクチャ機構を有効にした状態でより良好なパフォーマンスを実現したという複数の連続的な判定に応じて、確定した良好状態を示すべく、上記選択されたアドレスに対する上記有用性状態を更新する段階と、
上記確定した良好状態を示す、上記選択されたアドレスに対する上記有用性状態に応じて、後続の実行ウィンドウの上記選択されたアドレスに対する上記マイクロアーキテクチャ機構を自動的に有効にする段階と
をさらに備える、項目17に記載の方法。
[項目20]
上記選択されたアドレスでの命令が上記第2の実行ウィンドウの間に少なくとも閾値回数実行されたか否かを自動的に判定するのに予め定められた関与閾値を用いる段階と、
上記選択されたアドレスが上記第2の実行ウィンドウの間に少なくとも上記閾値回数実行された場合に限り、上記マイクロアーキテクチャ機構を有効にした状態でより不良なパフォーマンスを示すべく、上記選択されたアドレスに対する上記有用性状態を自動的に更新する段階と
をさらに備える、項目17に記載の方法。

Claims (21)

  1. プロセッサであって、
    マイクロアーキテクチャ機構と、
    ダイナミックチューニングユニット(DTU)回路と、
    前記DTU回路内の無効サイクルカウンタであって、前記無効サイクルカウンタは、前記プロセッサが前記マイクロアーキテクチャ機構を無効にした状態で第1の実行ウィンドウのプログラムを実行していた間にいくつのサイクルが消費されたかを示す、無効サイクルカウンタと、
    前記DTU回路内の有効サイクルカウンタであって、前記有効サイクルカウンタは、前記プロセッサが前記マイクロアーキテクチャ機構を有効にした状態で第2の実行ウィンドウのプログラムを実行していた間にいくつのサイクルが消費されたかを示す、有効サイクルカウンタと、
    前記DTU回路内のパフォーマンス評価ユニット(PEU)回路であって、前記PEU回路は、前記無効サイクルカウンタ及び前記有効サイクルカウンタに基づいて、前記プロセッサが前記第2の実行ウィンドウで前記第1の実行ウィンドウと比較してより不良なパフォーマンスを実現したか否かを自動的に判定する、PEU回路と、
    前記プロセッサ内の評価テーブルであって、前記評価テーブルは選択されたアドレスに対する有用性状態を有し、(a)前記プロセッサが前記マイクロアーキテクチャ機構を有効にした状態である前記第2の実行ウィンドウで前記マイクロアーキテクチャ機構を無効にした状態である前記第1の実行ウィンドウと比較してより不良なパフォーマンスを実現したという判定に応じて、より不良なパフォーマンスを示すべく、前記有用性状態が前記PEU回路によって更新され、(b)前記マイクロアーキテクチャ機構を有効にした状態で少なくとも2つの実行ウィンドウを反復した後、前記プロセッサが前記マイクロアーキテクチャ機構を有効にした状態でより不良なパフォーマンスを実現したという複数の連続的な判定に応じて、確定した不良状態を示すべく、前記有用性状態が前記PEU回路によって更新される、評価テーブルと、
    前記DTU回路内のチューニング実施ユニット(TIU)回路であって、前記TIU回路は、前記確定した不良状態を示す、前記評価テーブル内の前記選択されたアドレスに対する前記有用性状態に応じて、後続の実行ウィンドウの前記選択されたアドレスに対して前記マイクロアーキテクチャ機構を自動的に無効にする、TIU回路と
    備える、プロセッサ。
  2. 前記DTU回路の少なくとも一部が前記マイクロアーキテクチャ機構内に存在する、請求項1に記載のプロセッサ。
  3. 前記プロセッサが前記マイクロアーキテクチャ機構を有効にした状態である前記第2の実行ウィンドウで前記マイクロアーキテクチャ機構を無効にした状態である前記第1の実行ウィンドウと比較してより良好なパフォーマンスを実現したという判定に応じて、より良好なパフォーマンスを示すべく、前記選択されたアドレスに対する前記有用性状態が前記PEU回路によって更新され、
    前記マイクロアーキテクチャ機構を有効にした状態で少なくとも2つの実行ウィンドウを反復した後、前記プロセッサが前記マイクロアーキテクチャ機構を有効にした状態でより良好なパフォーマンスを実現したという複数の連続的な判定に応じて、確定した良好状態を示すべく、前記選択されたアドレスに対する前記有用性状態が前記PEU回路によって更新され、
    前記TIU回路は、前記確定した良好状態を示す、前記評価テーブル内の前記選択されたアドレスに対する前記有用性状態に応じて、後続の実行ウィンドウの前記選択されたアドレスに対して前記マイクロアーキテクチャ機構を自動的に有効にする、
    請求項1又は2に記載のプロセッサ。
  4. 前記DTU回路は、前記選択されたアドレスに対する前記有用性状態の更新を制御する有限状態マシン(FSM)であって、前記FSMは、前記確定した不良状態と、確定した良好状態と、少なくとも3つの未確定の状態とを提供する、FSMを有し、
    前記未確定の状態は、中立状態と、良好の可能性がある状態と、不良の可能性がある状態とを含み、
    前記選択されたアドレスに対する前記有用性状態は、前記中立状態で開始し、
    前記選択されたアドレスに対する前記有用性状態は、(a)前記中立状態から前記不良の可能性がある状態に、(b)前記不良の可能性がある状態から前記確定した不良状態に前記有用性状態を連続的に更新することに応じて、前記確定した不良状態に到達する、
    請求項1から3のいずれか一項に記載のプロセッサ。
  5. 各実行ウィンドウは、予め定められた数のリタイアした命令を含む、請求項1から4のいずれか一項に記載のプロセッサ。
  6. 前記DTU回路は、前記プロセッサが前記マイクロアーキテクチャ機構を有効にした状態である前記第2の実行ウィンドウで前記マイクロアーキテクチャ機構を無効にした状態である前記第1の実行ウィンドウと比較して著しく不良なパフォーマンスを実現したか否かを判定するのに前記PEU回路が用いる予め定められた重要性閾値を有する、請求項1から5のいずれか一項に記載のプロセッサ。
  7. 前記DTU回路は、前記選択されたアドレスでの命令が前記第2の実行ウィンドウの間に少なくとも閾値回数実行されたか否かを判定するのに前記PEU回路が用いる予め定められた関与閾値を有し、前記PEU回路は、前記選択されたアドレスでの前記命令が前記第2の実行ウィンドウの間に少なくとも前記閾値回数実行された場合に限り、前記マイクロアーキテクチャ機構を有効にした状態でより不良なパフォーマンスを示すべく、前記選択されたアドレスに対する前記有用性状態を更新する、請求項1から6のいずれか一項に記載のプロセッサ。
  8. 前記評価テーブルは、前記選択されたアドレスで前記命令を実行することに応じてインクリメントされる、前記選択されたアドレスに対する関与カウンタを有し、前記PEU回路は、前記選択されたアドレスでの前記命令が前記第2の実行ウィンドウの間に少なくとも前記閾値回数実行されたか否かを判定するのに前記関与カウンタ及び前記予め定められた関与閾値を用いる、請求項7に記載のプロセッサ。
  9. ランダムアクセスメモリ(RAM)と、
    前記RAMに連結するプロセッサと、
    前記プロセッサ内のマイクロアーキテクチャ機構と、
    前記プロセッサ内のダイナミックチューニングユニット(DTU)回路と、
    前記DTU回路内の無効サイクルカウンタであって、前記無効サイクルカウンタは、前記プロセッサが前記マイクロアーキテクチャ機構を無効にした状態で第1の実行ウィンドウのプログラムを実行していた間にいくつのサイクルが消費されたかを示す、無効サイクルカウンタと、
    前記DTU回路内の有効サイクルカウンタであって、前記有効サイクルカウンタは、前記プロセッサが前記マイクロアーキテクチャ機構を有効にした状態で第2の実行ウィンドウのプログラムを実行していた間にいくつのサイクルが消費されたかを示す、有効サイクルカウンタと、
    前記DTU回路内のパフォーマンス評価ユニット(PEU)回路であって、前記PEU回路は、前記無効サイクルカウンタ及び前記有効サイクルカウンタに基づいて、前記プロセッサが前記第2の実行ウィンドウで前記第1の実行ウィンドウと比較してより不良なパフォーマンスを実現したか否かを自動的に判定する、PEU回路と、
    前記プロセッサ内の評価テーブルであって、前記評価テーブルは、選択されたアドレスに対する有用性状態を有し(a)前記プロセッサが前記マイクロアーキテクチャ機構を有効にした状態である前記第2の実行ウィンドウで前記マイクロアーキテクチャ機構を無効にした状態である前記第1の実行ウィンドウと比較してより不良なパフォーマンスを実現したという判定に応じて、より不良なパフォーマンスを示すべく、前記有用性状態が前記PEU回路によって更新され、(b)前記マイクロアーキテクチャ機構を有効にした状態で少なくとも2つの実行ウィンドウを反復した後、前記プロセッサが前記マイクロアーキテクチャ機構を有効にした状態でより不良なパフォーマンスを実現したという複数の連続的な判定に応じて、確定した不良状態を示すべく、前記有用性状態が前記PEU回路によって更新される、評価テーブルと、
    前記DTU回路内のチューニング実施ユニット(TIU)回路であって、前記TIU回路は、前記確定した不良状態を示す、前記評価テーブル内の前記選択されたアドレスに対する前記有用性状態に応じて、後続の実行ウィンドウの前記選択されたアドレスに対して前記マイクロアーキテクチャ機構を自動的に無効にする、TIU回路と
    を備える、データ処理システム。
  10. 前記DTU回路の少なくとも一部が前記マイクロアーキテクチャ機構内に存在する、請求項9に記載のデータ処理システム。
  11. 前記プロセッサが前記マイクロアーキテクチャ機構を有効にした状態である前記第2の実行ウィンドウで前記マイクロアーキテクチャ機構を無効にした状態である前記第1の実行ウィンドウと比較してより良好なパフォーマンスを実現したという判定に応じて、より良好なパフォーマンスを示すべく、前記選択されたアドレスに対する前記有用性状態が前記PEU回路によって更新され、
    前記マイクロアーキテクチャ機構を有効にした状態で少なくとも2つの実行ウィンドウを反復した後、前記プロセッサが前記マイクロアーキテクチャ機構を有効にした状態でより良好なパフォーマンスを実現したという複数の連続的な判定に応じて、確定した良好状態を示すべく、前記選択されたアドレスに対する前記有用性状態が前記PEU回路によって更新され、
    前記TIU回路は、前記確定した良好状態を示す、前記評価テーブル内の前記選択されたアドレスに対する前記有用性状態に応じて、後続の実行ウィンドウの前記選択されたアドレスに対して前記マイクロアーキテクチャ機構を自動的に有効にする、
    請求項9又は10に記載のデータ処理システム。
  12. 前記DTU回路は、前記選択されたアドレスに対する前記有用性状態の更新を制御する有限状態マシン(FSM)であって、前記FSMは、前記確定した不良状態と、確定した良好状態と、少なくとも3つの未確定の状態とを提供する、FSMを有し、
    前記未確定の状態は、中立状態と、良好の可能性がある状態と、不良の可能性がある状態とを含み、
    前記選択されたアドレスに対する前記有用性状態は、前記中立状態で開始し、
    前記選択されたアドレスに対する前記有用性状態は、(a)前記中立状態から前記不良の可能性がある状態に、(b)前記不良の可能性がある状態から前記確定した不良状態に前記有用性状態を連続的に更新することに応じて、前記確定した不良状態に到達する、
    請求項9から11のいずれか一項に記載のデータ処理システム。
  13. 各実行ウィンドウは、予め定められた数のリタイアした命令を含む、請求項9から12のいずれか一項に記載のデータ処理システム。
  14. 前記DTU回路は、前記プロセッサが前記マイクロアーキテクチャ機構を有効にした状態である前記第2の実行ウィンドウで前記マイクロアーキテクチャ機構を無効にした状態である前記第1の実行ウィンドウと比較して著しく不良なパフォーマンスを実現したか否かを判定するのに前記PEU回路が用いる予め定められた重要性閾値を有する、請求項9から13のいずれか一項に記載のデータ処理システム。
  15. 前記DTU回路は、前記選択されたアドレスでの命令が前記第2の実行ウィンドウの間に少なくとも閾値回数実行されたか否かを判定するのに前記PEU回路が用いる予め定められた関与閾値を有し、前記PEU回路は、前記選択されたアドレスでの前記命令が前記第2の実行ウィンドウの間に少なくとも前記閾値回数実行された場合に限り、前記マイクロアーキテクチャ機構を有効にした状態でより不良なパフォーマンスを示すべく、前記選択されたアドレスに対する前記有用性状態を更新する、請求項9から14のいずれか一項に記載のデータ処理システム。
  16. 前記評価テーブルは、前記選択されたアドレスで前記命令を実行することに応じてインクリメントされる、前記選択されたアドレスに対する関与カウンタを有し、前記PEU回路は、前記選択されたアドレスでの前記命令が前記第2の実行ウィンドウの間に少なくとも前記閾値回数実行されたか否かを判定するのに前記関与カウンタ及び前記予め定められた関与閾値を用いる、請求項15に記載のデータ処理システム。
  17. マイクロアーキテクチャ機構及びダイナミックチューニングユニット(DTU)回路を含むプロセッサ上で(a)前記マイクロアーキテクチャ機構を無効にした状態で第1の実行ウィンドウのプログラムを、(b)前記マイクロアーキテクチャ機構を有効にした状態で第2の実行ウィンドウのプログラムを実行する段階と、
    前記プロセッサが前記第2の実行ウィンドウで前記第1の実行ウィンドウと比較してより不良なパフォーマンスを実現したか否かを前記DTU回路が自動的に判定する段階と、
    前記プロセッサが前記第2の実行ウィンドウでより不良なパフォーマンスを実現したことを判定したことに応じて、より不良なパフォーマンスを示すべく、前記プログラムの選択されたアドレスに対する有用性状態を更新する段階と、
    前記プロセッサが前記マイクロアーキテクチャ機構を有効にした状態でより不良なパフォーマンスを実現したという複数の連続的な判定に応じて、確定した不良状態を示すべく、前記選択されたアドレスに対する前記有用性状態を自動的に更新する段階と、
    前記確定した不良状態を示す、前記選択されたアドレスに対する前記有用性状態に応じて、前記第2の実行ウィンドウの後、実行ウィンドウの前記選択されたアドレスに対する前記マイクロアーキテクチャ機構を自動的に無効にする段階と
    を備える、方法。
  18. 前記プロセッサが前記第2の実行ウィンドウで前記第1の実行ウィンドウと比較してより不良なパフォーマンスを実現したか否かを自動的に判定する前記段階は、前記DTU回路内のパフォーマンス評価ユニット(PEU)回路によって実行され、
    確定した不良状態を示すべく、前記選択されたアドレスに対する前記有用性状態を自動的に更新する前記段階は、前記PEU回路によって実行され、
    前記第2の実行ウィンドウの後、実行ウィンドウの前記選択されたアドレスに対する前記マイクロアーキテクチャ機構を自動的に無効にする前記段階は、前記DTU回路内のチューニング実施ユニット(TIU)回路によって実行される、
    請求項17に記載の方法。
  19. 前記プロセッサが前記マイクロアーキテクチャ機構を有効にした状態である前記第2の実行ウィンドウで前記マイクロアーキテクチャ機構を無効にした状態である前記第1の実行ウィンドウと比較してより良好なパフォーマンスを実現したという判定に応じて、より良好なパフォーマンスを示すべく、前記選択されたアドレスに対する前記有用性状態を更新する段階と、
    前記マイクロアーキテクチャ機構を有効にした状態で少なくとも2つの実行ウィンドウを反復した後、前記プロセッサが前記マイクロアーキテクチャ機構を有効にした状態でより良好なパフォーマンスを実現したという複数の連続的な判定に応じて、確定した良好状態を示すべく、前記選択されたアドレスに対する前記有用性状態を更新する段階と、
    前記確定した良好状態を示す、前記選択されたアドレスに対する前記有用性状態に応じて、後続の実行ウィンドウの前記選択されたアドレスに対する前記マイクロアーキテクチャ機構を自動的に有効にする段階と
    をさらに備える、請求項17又は18に記載の方法。
  20. 前記選択されたアドレスでの命令が前記第2の実行ウィンドウの間に少なくとも閾値回数実行されたか否かを自動的に判定するのに予め定められた関与閾値を用いる段階と、
    前記選択されたアドレスでの前記命令が前記第2の実行ウィンドウの間に少なくとも前記閾値回数実行された場合に限り、前記マイクロアーキテクチャ機構を有効にした状態でより不良なパフォーマンスを示すべく、前記選択されたアドレスに対する前記有用性状態を自動的に更新する段階と
    をさらに備える、請求項17から19のいずれか一項に記載の方法。
  21. 請求項17から20のいずれか一項に記載の方法を実行する手段を備える装置。
JP2020105533A 2019-09-19 2020-06-18 プロセッサ機構をダイナミックにチューニングするための技術 Pending JP2021047844A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2022114213A JP2022153488A (ja) 2019-09-19 2022-07-15 プロセッサ機構をダイナミックにチューニングするための技術
JP2022132858A JP2022172197A (ja) 2019-09-19 2022-08-23 プロセッサ機構をダイナミックにチューニングするための技術

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/575,535 US10915421B1 (en) 2019-09-19 2019-09-19 Technology for dynamically tuning processor features
US16/575,535 2019-09-19

Related Child Applications (2)

Application Number Title Priority Date Filing Date
JP2022114213A Division JP2022153488A (ja) 2019-09-19 2022-07-15 プロセッサ機構をダイナミックにチューニングするための技術
JP2022132858A Division JP2022172197A (ja) 2019-09-19 2022-08-23 プロセッサ機構をダイナミックにチューニングするための技術

Publications (1)

Publication Number Publication Date
JP2021047844A true JP2021047844A (ja) 2021-03-25

Family

ID=70802612

Family Applications (3)

Application Number Title Priority Date Filing Date
JP2020105533A Pending JP2021047844A (ja) 2019-09-19 2020-06-18 プロセッサ機構をダイナミックにチューニングするための技術
JP2022114213A Pending JP2022153488A (ja) 2019-09-19 2022-07-15 プロセッサ機構をダイナミックにチューニングするための技術
JP2022132858A Pending JP2022172197A (ja) 2019-09-19 2022-08-23 プロセッサ機構をダイナミックにチューニングするための技術

Family Applications After (2)

Application Number Title Priority Date Filing Date
JP2022114213A Pending JP2022153488A (ja) 2019-09-19 2022-07-15 プロセッサ機構をダイナミックにチューニングするための技術
JP2022132858A Pending JP2022172197A (ja) 2019-09-19 2022-08-23 プロセッサ機構をダイナミックにチューニングするための技術

Country Status (5)

Country Link
US (3) US10915421B1 (ja)
EP (2) EP4075280A1 (ja)
JP (3) JP2021047844A (ja)
CN (1) CN112527477A (ja)
TW (1) TWI831986B (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10915421B1 (en) * 2019-09-19 2021-02-09 Intel Corporation Technology for dynamically tuning processor features
CN114265593B (zh) * 2021-12-09 2022-11-22 北京奕斯伟计算技术股份有限公司 指令调度方法、装置、设备及计算机可读存储介质

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050273310A1 (en) * 2004-06-03 2005-12-08 Newburn Chris J Enhancements to performance monitoring architecture for critical path-based analysis
US8079031B2 (en) 2005-10-21 2011-12-13 Intel Corporation Method, apparatus, and a system for dynamically configuring a prefetcher based on a thread specific latency metric
TWI435213B (zh) * 2007-03-28 2014-04-21 Ibm 於虛擬資料處理環境中多個邏輯分割間平衡存取各實體系統資源及動態調諧一判定調度排程之排程器的方法、系統及電腦可讀媒體
US8321362B2 (en) * 2009-12-22 2012-11-27 Intel Corporation Methods and apparatus to dynamically optimize platforms
US9141166B2 (en) * 2011-12-13 2015-09-22 Intel Corporation Method, apparatus, and system for energy efficiency and energy conservation including dynamic control of energy consumption in power domains
US9558006B2 (en) * 2012-12-20 2017-01-31 Intel Corporation Continuous automatic tuning of code regions
WO2016097794A1 (en) 2014-12-14 2016-06-23 Via Alliance Semiconductor Co., Ltd. Prefetching with level of aggressiveness based on effectiveness by memory access type
US9645935B2 (en) 2015-01-13 2017-05-09 International Business Machines Corporation Intelligent bandwidth shifting mechanism
US10019271B2 (en) * 2015-09-24 2018-07-10 Mediatek, Inc. Dynamic runtime data collection and performance tuning
US10162660B2 (en) * 2015-12-03 2018-12-25 International Business Machines Corporation Application-level processor parameter management
US10891071B2 (en) * 2018-05-15 2021-01-12 Nxp Usa, Inc. Hardware, software and algorithm to precisely predict performance of SoC when a processor and other masters access single-port memory simultaneously
US10915421B1 (en) * 2019-09-19 2021-02-09 Intel Corporation Technology for dynamically tuning processor features

Also Published As

Publication number Publication date
CN112527477A (zh) 2021-03-19
TW202113556A (zh) 2021-04-01
EP4075280A1 (en) 2022-10-19
EP3796177A1 (en) 2021-03-24
EP3796177B1 (en) 2023-08-09
US20220206925A1 (en) 2022-06-30
JP2022153488A (ja) 2022-10-12
US10915421B1 (en) 2021-02-09
JP2022172197A (ja) 2022-11-15
US11656971B2 (en) 2023-05-23
US20210109839A1 (en) 2021-04-15
TWI831986B (zh) 2024-02-11
US11256599B2 (en) 2022-02-22

Similar Documents

Publication Publication Date Title
US10942737B2 (en) Method, device and system for control signalling in a data path module of a data stream processing engine
KR102496402B1 (ko) 사용자-레벨 포크 및 조인 프로세서, 방법, 시스템, 및 명령어
JP2022172197A (ja) プロセッサ機構をダイナミックにチューニングするための技術
US20140195784A1 (en) Method, device and system for controlling execution of an instruction sequence in a data stream accelerator
US10635337B2 (en) Dynamic configuration of compressed virtual memory
JP2003296191A (ja) 汎用プロセッサおよび周辺装置のプロセッサとして動作可能な集積回路
WO2017172240A1 (en) Processors, methods, systems, and instructions to fetch data to indicated cache level with guaranteed completion
US20220197856A1 (en) System, Apparatus And Method For Dynamically Configuring One Or More Hardware Resources Of A Processor
JP2022060151A (ja) 低レイテンシのブート性能を可能にするファームウェアのブートタスクの分配
WO2018149495A1 (en) A method and system to fetch multicore instruction traces from a virtual platform emulator to a performance simulation model
US10853283B1 (en) Integrated circuits for generating input/output latency performance metrics using real-time clock (RTC) read measurement module
US20190102302A1 (en) Processor, method, and system for cache partitioning and control for accurate performance monitoring and optimization
JP5473438B2 (ja) テスト・ケース生成のための方法、情報処理システムおよびコンピュータ・プログラム
WO2019133172A1 (en) Processor, method, and system for reducing latency in accessing remote registers
US11100385B2 (en) Scalable free-running neuromorphic computer
JP6568859B2 (ja) エミュレートされた共有メモリアーキテクチャにおける長レイテンシ演算のアーキテクチャ
US10775434B2 (en) System, apparatus and method for probeless field scan of a processor
Manian et al. OMB-UM: Design, implementation, and evaluation of CUDA unified memory aware MPI benchmarks
US20240004808A1 (en) Optimized prioritization of memory accesses
US9830154B2 (en) Method, apparatus and system for data stream processing with a programmable accelerator
US11176278B2 (en) Efficient rotate adder for implementing cryptographic basic operations
US20180349137A1 (en) Reconfiguring a processor without a system reset
US20140164847A1 (en) Internal Logic Analyzer with Programmable Window Capture

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20230613