(57)【特許請求の範囲】
【請求項１】
方法であって、
プロセッサの性能ベンチマークを識別する工程と、
前記識別された性能ベンチマークの設計空間の部分をサンプリングする工程と、
前記設計空間の前記サンプリングされた部分をシミュレートして訓練データを生成する工程と、
設計空間全体を予測するよう前記訓練データを修正することにより、前記訓練データからプロセッサ性能モデルを生成する工程であって、前記訓練データから前記プロセッサ性能モデルを生成する工程は、前記識別された性能ベンチマークに関連付けられた特徴及びラベルを有する単一マトリクスに前記訓練データを変換する工程を含む工程と、
前記プロセッサ性能モデルを実行することにより、前記設計空間全体の前記プロセッサの性能を予測する工程と
を含む方法。
【請求項２】
請求項１記載の方法であって、前記プロセッサ性能モデルは、複数の性能ベンチマークを表す単一の性能予測モデルである方法。
【請求項３】
請求項１記載の方法であって、
前記予測された性能のサンプルを選択する工程であって、前記予測された性能の前記サンプルは、前記識別された性能ベンチマークの刺激を表す工程と、
前記予測された性能の前記サンプルをシミュレートして性能データを生成する工程と、
前記性能データを、前記予測された性能の前記選択されたサンプルと比較する工程とを含む方法。
【請求項４】
請求項３記載の方法であって、前記選択する工程は、コスト・メトリック及びベネフィット・メトリックに基づく方法。
【請求項５】
請求項３記載の方法であって、
前記比較する工程により、予測誤りを計算する工程と、
前記計算された予測誤りを低減させるよう設計空間の部分を再サンプリングすることにより、前記訓練データを修正する工程とを含む方法。
【請求項６】
請求項１記載の方法であって、性能を予測する工程は、
前記プロセッサの電力消費を予測する工程、及び
前記プロセッサの毎秒命令数を予測する工程
の少なくとも一方を含む方法。
【請求項７】
請求項１記載の方法であって、前記識別された性能ベンチマークの前記設計空間の前記部分をサンプリングする工程は、
前記プロセッサのランダムな構成を生成する工程であって、構成それぞれがパラメータ・値対を有する工程と、
前記パラメータ・値対の各パラメータに値をランダムに割り当てる工程であって、前記値は前記設計空間の容量を定める工程を含む方法。
【請求項８】
請求項７記載の方法であって、前記値をランダムに割り当てる工程は、
前記値の所定の範囲を識別する工程と、
前記値を前記所定の範囲からランダムに割り当てる工程と
を含む方法。
【請求項９】
請求項１記載の方法であって、前記設計空間全体の前記プロセッサの前記性能を予測する工程は、
前記プロセッサの構成全ての並び替えを生成する工程と、
前記並び替えを前記プロセッサ性能モデルに供給する工程と、
前記供給された並び替えで前記プロセッサ性能モデルを実行する工程と
を含む方法。
【請求項１０】
請求項１記載の方法であって、前記設計空間全体を予測するために前記訓練データを修正することにより、前記訓練データから前記プロセッサ性能モデルを生成する工程は、
前記識別された性能ベンチマークに関連付けられた特徴及びラベルを有する前記単一マトリクスに前記訓練データを変換する工程であって、前記訓練データを二進の単一マトリクスに変換する工程と、
前記単一マトリクスを統計アプリケーションに供給する工程と、
前記統計アプリケーションを実行する工程とを含む方法。
【請求項１１】
請求項１０記載の方法であって、前記統計アプリケーションはバウパル・ワビット手法である方法。
【請求項１２】
請求項１０記載の方法であって、前記特徴は二進形式である方法。
【請求項１３】
コンピュータ上で実行されると、請求項１乃至１２の何れか一項に記載の方法を前記コンピュータに行わせるコンピュータ読み取り可能な命令を有するコンピュータ読み取り可能な記録媒体。
【請求項１４】
システムであって、
ネットワーク・バスと、
メモリと、
前記メモリに前記ネットワーク・バスを介して結合されるプロセッサと
を備え、前記プロセッサは、目標プロセッサの性能を予測する方法を行うための命令を実行するためのロジックを有し、
前記方法は、
プロセッサの性能ベンチマークを識別する工程と、
前記識別された性能ベンチマークの設計空間の部分をサンプリングする工程と、
前記設計空間の前記サンプリングされた部分をシミュレートして訓練データを生成する工程と、
設計空間全体を予測するよう前記訓練データを修正することにより、前記訓練データからプロセッサ性能モデルを生成する工程であって、前記訓練データから前記プロセッサ性能モデルを生成する工程は、前記識別された性能ベンチマークに関連付けられた特徴及びラベルを有する単一マトリクスに前記訓練データを変換する工程を含む工程と、
前記プロセッサ性能モデルを実行することにより、前記設計空間全体の前記プロセッサの性能を予測する工程と
を含むシステム。
【請求項１５】
請求項１４記載のシステムであって、前記プロセッサ性能モデルは、複数の性能ベンチマークを表す単一の性能予測モデルであるシステム。
【請求項１６】
請求項１４記載のシステムであって、前記プロセッサの前記ロジックは、
前記予測された性能のサンプルを選択する工程であって、前記予測された性能の前記サンプルは、前記識別された性能ベンチマークの刺激を表す工程と、
前記予測された性能の前記サンプルをシミュレートして性能データを生成する工程と、
前記性能データを、前記予測された性能の前記選択されたサンプルと比較する工程と
を含む方法を更に行うよう動作可能であるシステム。
【請求項１７】
請求項１６記載のシステムであって、前記プロセッサの前記ロジックは、
前記比較する工程により、予測誤りを計算する工程と、
前記計算された予測誤りを低減させるよう設計空間の部分を再サンプリングすることにより、前記訓練データを修正する工程と
を含む方法を更に行うよう動作可能であるシステム。
【請求項１８】
請求項１４記載のシステムであって、性能を予測する工程は、
前記プロセッサの電力消費を予測する工程及び
前記プロセッサの毎秒命令数を予測する工程
の少なくとも一方を含むシステム。
【請求項１９】
請求項１４記載のシステムであって、前記識別された性能ベンチマークの前記設計空間の前記部分をサンプリングする工程は、
前記プロセッサのランダムな構成を生成する工程であって、構成それぞれがパラメータ・値対を有する工程と、
前記パラメータ・値対の各パラメータに値をランダムに割り当てる工程であって、前記値は前記設計空間の容量を定める工程と
を含み、前記値をランダムに割り当てる工程は、
前記値の所定の範囲を識別する工程と、
前記値を前記所定の範囲からランダムに割り当てる工程と
を含むシステム。
【請求項２０】
請求項１４記載のシステムであって、前記設計空間全体の前記プロセッサの前記性能を予測する工程は、
前記プロセッサの構成全ての並び替えを生成する工程と、
前記並び替えを前記プロセッサ性能モデルに供給する工程と、
前記供給された並び替えで前記プロセッサ性能モデルを実行する工程と
を含むシステム。
【請求項２１】
請求項１４記載のシステムであって、前記設計空間全体を予測するために前記訓練データを修正することにより、前記訓練データから前記プロセッサ性能モデルを生成する工程は、
前記識別された性能ベンチマークに関連付けられたラベル及び二進形式の特徴を有する前記単一マトリクスに前記訓練データを変換する工程であって、前記訓練データを二進の単一マトリクスに変換する工程と、
前記単一マトリクスを統計アプリケーションに供給する工程と、
前記統計アプリケーションを実行する工程と
を含むシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施例は、一般に、プロセッサの分野に関し、特に、シミュレーション時間を最小にするためにプロセッサの性能を正確に予測するプロセッサ・アーキテクチャ・モデルを効率的に生成する方法及び装置に関する。
【背景技術】
【０００２】
プロセッサ・アーキテクチャが、従来世代のプロセッサ・アーキテクチャと比較してより複雑になり、トランジスタ・カウントが大きくなるにつれ、種々の状態でその性能を求めるために前述のプロセッサをシミュレートすることは、時間及びプロセッサ・クロック・サイクル集約的になっている。前述の時間集約的計算により、新規及び既存のプロセッサ・アーキテクチャ特徴の網羅的な設計空間の探求に対する障害が生じている。網羅的な設計空間の探求なしでは、目標作業負荷環境の考えられる最善のプロセッサ設計又は構成を選択することは可能でない。
【０００３】
例えば、考えられる５つの値（例えば、４８、６４、８０、９６、若しくは１１２エントリの命令ウィンドウ（再配列バッファとも呼ばれる）の容量、又は、２、４、８、１６、若しくは３２ＫＢのデータ・キャッシュ容量）をそれぞれが有する別々の１０個のプロセッサ・シミュレータ・パラメータ（例えば、命令ウィンドウ（ＩＷ）容量、データ・キャッシュ・ユニット（ＤＣＵ）容量等）で調査する対象のベンチマークの一部（例えば、マイクロソフト社ワード（商標）２００７の特徴の部分集合等）、又は、目標ベンチマーク群（例えば、マイクロソフト社ワード（商標）２００７、マイクロソフト社エクセル（商標）２００７、マイクロソフト社インターネット・エクスプローラ（商標）等）のプロセッサの性能を調査するには、約１００億のシミュレーション・ランが必要になる。トレースという語は、一般に、プロセッサ上で実行する対象の作業負荷の部分集合（ベンチマークという語と同義で使用される）として定義される。
【０００４】
各トレースは、一プロセッサ上でシミュレートするために３時間を要し、１０００のトレースのシミュレートに５０００個のプロセッサが特化するとすれば、前述の５０００個の特化したプロセッサは、１０００個のトレースについてプロセッサ・アーキテクチャの性能を求めるために７００年超のプロセッサ・シミュレーション時間を要する。設計空間の探求は、前述のプロセッサ・シミュレーション時間では実現可能でない。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
シミュレーションはプロセッサ性能予測モデルで置き換えることが可能であるが、前述のモデルはその生成、精度、及び速度の点でベンチマーク特有である。新たなベンチマークを使用したプロセッサ設計空間の探求には、新たな性能予測モデルを策定し、次いで、そのモデルを使用して、そのベンチマークの種々の構成にわたり、そのベンチマークのプロセッサ性能（電力消費（単位：ワット）及び／又はサイクル毎命令実行数（ＩＰＣ）として測定される）を予測することが必要である。広い範囲のベンチマーク（例えば、１０００を超えるベンチマーク）にわたるプロセッサ・アーキテクチャ性能及び電力消費のエンベロープを求める場合に、カスタム・モデルを活用する手法は速度及び精度の点で共通の尺度を持たない。
【課題を解決するための手段】
【０００６】
本発明は、以下に表す詳細な説明から、かつ、本発明の種々の実施例から、かつ、付随した図面から、より徹底的に分かるであろう。しかし、それらは、特定の実施例に本発明を限定するものと解されるべきでなく、説明及び理解の目的に過ぎない。
【図面の簡単な説明】
【０００７】
【図１Ａ】本発明の一実施例による、プロセッサ性能を予測するためのプロセッサ性能モデルを効率的に生成するための概要レベルのフローチャートである。
【図１Ｂ】本発明の一実施例による、シミュレータ・パラメータ及びその値を備えたテーブルである。
【図２】本発明の実施例による、訓練データの量に対する性能誤り感度を示すグラフである。
【図３】本発明の実施例による、複数のベンチマークのプロセッサ性能モデルを生成するための詳細フローチャートである。
【図４Ａ】本発明の一実施例による、プロセッサ性能モデルを生成するための非二進特徴・ラベル・マトリクスである。
【図４Ｂ】本発明の一実施例による、プロセッサ性能モデルを生成するための二進特徴・ラベル・マトリクスである。
【図５】本発明の一実施例による、プロセッサ・アーキテクチャ・モデルの効率的生成に関連付けられたハードウェアを示すシステムを示す図である。
【発明を実施するための形態】
【０００８】
本発明の実施例は、大きな（例えば、１０００よりも大きな）プロセッサ・ベンチマークにわたるシミュレーション時間を最小にすることにより、プロセッサの性能を正確に予測する単一プロセッサ・アーキテクチャ・モデルを効率的に生成するための方法及び装置に関する。
【０００９】
一実施例では、プロセッサ・ベンチマークは、プロセッサ性能予測モデルが広範囲にわたるベンチマークについて電力消費及びプロセッサ性能を予測することを可能にする、後述する特徴・ラベル対に組み入れられる。本明細書及び特許請求の範囲記載の実施例は、性能及び電力を同義に使用する。プロセッサ性能モデルは、ワット単位のプロセッサ電力消費及びＩＰＣでのプロセッサ性能の一方又は両方を予測することが可能であるからである。
【００１０】
一実施例では、広範囲のベンチマークは、限定されない数のベンチマークから、わずかなサンプルのベンチマーク（単一ベンチマークを含む）に及ぶ。更に、単一プロセッサ・アーキテクチャ性能予測モデルを効率的に生成するための方法及び装置は、低誤り率（例えば、実際のベンチマーク・シミュレーションと比較して３％の誤り未満）及び高い予測速度（例えば、年単位でなく分単位）をもたらす。
【実施例】
【００１１】
図１は、本発明の一実施例による、プロセッサ・アーキテクチャ・モデルを効率的に生成するためのフローチャート１００である。ブロック１０１で、プロセッサの性能ベンチマークが識別される。一実施例では、１つ又は複数の性能ベンチマークが、性能予測モデルを生成するために識別される。一実施例では、ベンチマークは、マルチメディア。オフィス、ゲーム、及びサーバ・アプリケーションなどのドメインを含む。一実施例では、プロセッサは、単一コア・プロセッサである。他の実施例では、プロセッサは、マルチコア・プロセッサである。本発明の実施例は、何れの特定のプロセッサ・アーキテクチャにも限定されない。
【００１２】
ブロック１０２では、識別された性能ベンチマークの設計空間の一部分がサンプリングされる。一実施例では、設計空間の一部分のサンプリングは、特定のプロセッサの多数の任意の構成を生成することを伴う。一実施例では、構成毎に、シミュレータ・パラメータ毎の値が任意に選ばれる。プロセッサの構成は、プロセッサのアーキテクチャ設定を意味する。
【００１３】
例えば、プロセッサの一構成は、レベル２キャッシュ・メモリと同じ容量であるレベル１キャッシュ・メモリを有し得る。別の構成では、レベル１キャッシュは、レベル２キャッシュよりも容量が小さい。同様に、構成は単一プロセッサ・コアであり得る一方、他の構成は２つ以上のプロセッサ・コア（すなわち、マルチコア・プロセッサ）を有し得る。上記構成は例証に過ぎず、前述の例にプロセッサ構成を制限するものでない。
【００１４】
シミュレータ・パラメータは一実施例では、プロセッサ・アーキテクチャ設計空間の容量を決定する。一実施例では、設計空間が小さい程、プロセッサの性能予測モデルは正確になる。
【００１５】
一実施例では、シミュレータ・パラメータの例は、プロセッサにおけるキャッシュ・メモリの容量である。一般に、レベル１キャッシュは、レベル２キャッシュよりも容量が小さい。このことは、レベル１キャッシュのシミュレータ・パラメータ値を、正確な性能予測モデルを生成するためのレベル２キャッシュのシミュレータ・パラメータ値よりも低い値に設定すべきであることを意味している。逆が行われた場合、性能予測モデルの精度は低下し得る。その訓練データは、レベル１キャッシュがレベル２キャッシュよりも大きいプロセッサ構成（キャッシュ・メモリが現実世界のプロセッサに編成されているやり方を反映しないプロセッサ構成）をその訓練データが含むからである。前述の実施例では、性能予測モデルを生成した訓練データの一部分が、性能予測モデルを構築するために浪費された訓練データである。訓練データが、浪費された訓練データとみなされる一理由は、現実世界で、キャッシュ・メモリが、レベル２キャッシュ容量よりも大きなレベル１キャッシュ容量で編成されていないからである。前述の編成は、プロセッサにとって高い性能はもたらされないからである。
【００１６】
一実施例では、各シミュレーション・パラメータには、所定範囲の値からの値が割り当てられる。図１Ｂは、本発明の一実施例による、シミュレータ・パラメータ及びそのそれぞれの値を備えたテーブル１２０を示す。例えば、一実施例では、行１２１はシミュレータ・パラメータを記載し、行１２２は、シミュレータ・パラメータに関連付けられたメトリック（例えば、パラメータ数、パラメータ・サイズ、パラメータの状態）を記載し、行１２３は、所定範囲のシミュレータ・パラメータ値を含む。一実施例では、各シミュレーション・パラメータには、考えられる値の範囲にわたって等間隔に空けた考えられる値の無順序の組からの値が任意に割り当てられる。一実施例では、範囲は所定範囲の考えられる値である。
【００１７】
以下の実施例を分かりにくくすることのないよう、ＫＢで表すデータ・キャッシュ・ユニット（ＤＣＵ）の容量、及び、再配列バッファとも呼ばれ、エントリの数として表す命令ウィンドウ（ＩＷ）の容量は、プロセッサ・アーキテクチャ性能予測モデルを効率的に生成するための方法を説明するために使用される。考えられる個々の所定の範囲の値を有する、プロセッサ予約ステーション、ロード・バッファ、格納バッファ、ミッドレベル・キャッシュ、命令キャッシュ、退避幅等などの他のシミュレータ・パラメータも、プロセッサ・アーキテクチャ性能予測モデルを生成するために使用することが可能である。
【００１８】
一実施例では、プロセッサのＩＷにおける所定範囲の考えられる値が（行１２３に示すように）４８乃至１１２であり、増加値が１６である場合、無順序のパラメータ値の組は｛４８、６４、８０、９６、１１２｝になる。別の実施例では、シミュレーション・パラメータは、考えられる値の範囲にわたり、二次関数的に増加する考えられる値の無順序の組より割り当てられる。例えば、プロセッサのＤＣＵの所定の範囲の容量が２ＫＢ乃至３２ＫＢである場合、パラメータ値の無順序の組は、｛２、４、８、１６、又は３２ＫＢ｝になる。
【００１９】
もう一度、図１Ａを参照すれば、ブロック１０３で、プロセッサ性能モデルの訓練データは、サンプリングされた設計空間をシミュレートすることによって生成される。一実施例では、ベンチマーク毎に１つ、複数のプロセッサ・モデルを生成するよりも、単一のプロセッサ・モデルが、複数のベンチマークについて生成される。単一のプロセッサ・モデルは、個々のベンチマークについてカスタム化された予測モデルを生成する必要なしで、多数のベンチマーク（例えば、１０００超のベンチマーク）の効率的な予測を可能にする。
【００２０】
一実施例では、訓練データは、ベンチマーク番号（例えば、１００番目のベンチマークを表すための１００）、シミュレートされたベンチマークのタイプ（例えば、マイクロソフト社ワード（商標）２００７）、シミュレーション・パラメータ値（例えば、レベル１キャッシュ・メモリ及びレベル２キャッシュ・メモリの容量）、及びＩＰＣ（例えば、シミュレートされた特定のタイプのベンチマークについて実行される命令の数）を含む。前述の実施例は、複数のベンチマークについての情報を組み入れた単一のプロセッサ・モデルを訓練することを可能にする。
【００２１】
ブロック１０４では、単一のプロセッサ性能モデルが、ブロック１０３からの訓練データから生成される。一実施例では、性能モデルは統計手法を実行することによって生成される。一実施例では、プロセッサ性能モデルは単一のプロセッサ性能モデルである。一実施例では、統計手法は、プロセッサ性能予測モデルを生成するためにブロック１０３からの訓練データを実行するためのバウパル・ワビット（Ｖｏｗｐａｌ  Ｗａｂｂｉｔ：ＶＷ）統計手法である。他の実施例では、他の統計手法は、実施例の本質を変えることなく、ブロック１０３からの訓練データから性能予測モデルを生成するために使用することができる。性能予測モデルの生成の詳細は、図３、図４Ａ及び図４Ｂを参照して後に説明する。    
もう一度図１Ａを参照すれば、ブロック１０５で、プロセッサの性能が、単一プロセッサ性能予測モデルを実行することにより、設計空間全体について予測される。プロセッサ性能予測モデルは、初見のプロセッサ構成の性能及び電力を予測することを可能にする。一実施例では、プロセッサ構成全ての完全なリストは、全てのプロセッサ構成の並び替え全てを識別することによって生成される。一実施例では、前述の並び替えは、シミュレータ・パラメータのノブを調節することによって識別される。一実施例では、プロセッサ構成全ての完全なリストがプロセッサ性能モデルに入力される。結果として生じる予測は、プロセッサの網羅的な設計空間である。
【００２２】
一実施例では、ノブは、実際のシミュレーション・データと比較して、予測における誤りを削減するよう更に調節される。前述の実施例では、性能予測モデルが再訓練され、更に新たでかつ更に正確なプロセッサ性能予測モデルが生成される。一実施例では、性能予測モデルは、非相関パラメータを訓練データから除去する（すなわち、先行する訓練データを再開させる）ことにより、再訓練される。相関訓練データ及び無相関訓練データは後述する。一実施例では、誤りが大きすぎる（例えば、１０％よりも大きい）場合、既存データを再訓練する代わりに、更に多くの訓練データを収集して、より新しく、より正確なプロセッサ予測モデルを生成する。
【００２３】
ブロック１０６では、プロセッサの予測された性能結果のサンプルが選択される。サンプルは、一実施例では、ブロック１０１で識別された性能ベンチマークの刺激を表す。一実施例では、選択処理は、特定の性能結果を絞り込むために行われ、その性能結果に関連付けられたベンチマーク、パラメータ、ノブを絞り込むために行われる。一実施例では、選択は、コスト・メトリック及びベネフィット・メトリックに基づく。１つのメトリックしか提供されない場合、関心の構成を選択する機能は限定的である。
【００２４】
例えば、一実施例では、数千（数万）の減らしたプロセッサ構成を、プロセッサの元の電力の約８０％を消費する当初のプロセッサ設計点から識別することが可能である。プロセッサの元の電力は、プロセッサが減らされない場合の、プロセッサの電力消費を意味する。元の処理と比較して減らしたプロセッサにより、２０％の電力節減がベネフィット・メトリックである。コスト・メトリックは、元のプロセッサ設計と比較した場合に、減らされるプロセッサ設計に関連付けられた性能の低下である。ベネフィット・メトリック及びコスト・メトリックを合成することにより、一実施例では、所望の電力節減を伴う最適な実行プロセッサ構成が達成される。
【００２５】
ブロック１０７では、性能ベンチマークの特定のサンプルをよりよく理解するようシミュレートされる。一実施例では、シミュレータからの実際の性能データが生成される。
【００２６】
ブロック１０８では、選択されたサンプルをシミュレートすることによって生成された性能データが、そのサンプルの予測性能と比較される。上記比較は、一実施例では、プロセッサ性能モデルを調節することを可能にする。一実施例では、比較により、誤りが発生する。一実施例では、誤りは、特定のサンプルのプロセッサの実際のシミュレートされた性能と、予測された性能との間の差として定義される。他の実施例では、誤りの他の表現は、本実施例の原理を変更することなく使用することができる。
【００２７】
ブロック１０９では、比較によって生じた誤りが、所定の閾値よりも大きいか否かが判定される。一実施例では、所定の閾値は４％である。他の実施例では、より低い、又はより高い閾値を使用して、プロセッサ性能の予測の速度と性能予測モデルの精度との間のトレードオフに使用することができる。
【００２８】
一実施例では、性能予測モデルは、誤りが所定の閾値を超えた場合、シミュレートされた結果により近くなるよう（ブロック１０５を参照して記載したノブを介して）チューニングされる。一実施例では、性能予測モデルのチューニングは、プロセッサの性能と無相関の特定のパラメータの訓練データを除去することによって行われる。
【００２９】
例えば、一実施例では、プロセッサ性能の、ＩＷの容量に対する感度が低いことが判った場合、すなわち、ＩＷの容量が、プロセッサの性能と無相関であることが判った場合、ＩＷの容量は、プロセッサの性能予測モデルを作成／生成するための訓練パラメータとして用いられるものでない。前述の実施例では、ＩＷの容量パラメータを除去することにより、性能予測モデルの誤りが削減される。高信頼度パターンを学習することが可能でない、訓練データにおけるパターンを学習することを性能予測モデルはもう必要としないからである。一実施例では、誤りが所定の閾値よりも低い場合、ブロック１１０で、プロセッサ性能の予測は完了する。
【００３０】
図２は、本発明の実施例による、訓練データに対する性能予測誤り感度を示すグラフ２００である。ｘ軸は、性能予測モデルを生成するために使用される訓練データの量である。ｙ軸は、パーセンテージでの誤り率である。訓練データの数の増加につれ、プロセッサ性能の予測における誤りが削減されるということをグラフは示す。この例では、誤り率４％は、プロセッサ性能の予測に使用される約１１Ｋの訓練データによって生じる。
【００３１】
図３は、本発明の実施例による、複数のベンチマークのプロセッサ性能モデルを生成するための詳細フローチャート３００である。一実施例では、ブロック３０１で、トレースが識別される。ブロック３０２では、ノブが、シミュレータ・パラメータについて調節される。ブロック３０３では、シミュレータは、識別されたトレース、及びシミュレータ・パラメータを受信する。シミュレータは、トレース及びパラメータ毎の訓練データを生成するようシミュレータのパラメータで、識別されたトレースをシミュレートする。ブロック３０１乃至３０３は、図１を参照して詳細に説明している。
【００３２】
もう一度図３に戻れば、ブロック３０４で、複数のファイル（例えば、数千のファイル）を含む訓練データが、単一のマトリクスに訓練データを変換することにより、特徴・ラベル対を有する単一のマトリクスに再編成される。一実施例では、特徴・ラベル対は、識別された性能ベンチマークと関連付けられる。
【００３３】
マトリクスの例は、図４Ａ及び図４Ｂに示す実施例に示す。図４Ａは、本発明の一実施例による、特徴４０１及びラベル４０２を有する非二進の単一マトリクス４００である。実施例を分かりにくくすることのないよう、ＩＷ及びＤＣＵのシミュレータ・パラメータを使用して単一マトリクスを説明する。一実施例では、特徴及びラベルは全て、単一マトリクス４００の４０１及び４０２における行及び列に編成される。一実施例では、ＩＷ及びＤＣＵは、それぞれ、図４Ａ及び図４Ｂの４０１及び４１１に対にされる。前述の特徴は、（図１Ｂの１２３の）所定の値の組からの種々の任意の構成（例えば、ＩＷの場合の４８及び９６、並びにＤＣＵの場合の１６及び４）を含む。
【００３４】
図４Ａの実施例では、トレース毎に２つの、任意の６つの構成をもたらす３つのトレースが考慮される。一実施例では、ラベル４０２は特徴４０１の各行に割り当てられる。図４Ａ及び図４Ｂの実施例では、相対的なＩＰＣは、特徴４０１及び４１１の行に割り当てられる４０２及び４１２におけるラベルである。相対的なＩＰＣは、ＩＰＣ１．００を有し、同じトレースを実行する元のプロセッサと比較すると、トレースを実行するプロセッサ構成のＩＰＣを意味する。
【００３５】
図４Ｂは、本発明の一実施例による、特徴４１１及びラベル４１２を有する二進の単一マトリクス４１０である。一実施例では、図４Ｂにおける特徴４１１は、２進形式におけるトレースＩＷ及びＤＣＵを含む。一実施例では、特徴を対にすることにより、プロセッサの性能にどのプロセッサ・パラメータが最も関係しないか、又は最も関係するということが分かる必要がない訓練データを供給するために、シミュレータ・パラメータ間の関係（すなわち、シミュレータ・パラメータ間の相関のレベル）の明示的な開示に対する必要性が回避される。
【００３６】
一実施例では、単一マトリクス４１０は、図４Ａの非二進の単一マトリクス４００の二進形式である。一実施例では、二進の単一マトリクス４１０は、非二進の単一マトリクス４００によってではなく、ＶＷ統計手法により、更に正確な性能予測モデル生成を可能にする。二進の単一マトリクス４１０による、更に正確な予測モデリングの理由の１つは、単一マトリクスの二進化がプロセッサ性能に対する特徴４１１の非線形挙動が、さもなければ線形のＶＷ統計手法によって捕捉されることを可能にするという点である。
【００３７】
例えば、一実施例では、考えられるいくつかの値（例えば、２、４、８、１６、３２ＫＢ）を有するＤＣＵ容量の単一の特徴を使用する代わりに、（ＤＣＵ＿２、ＤＣＵ＿４、ＤＣＵ＿８、ＤＣＵ＿１６、ＤＣＵ＿３２の）考えられる設定毎の単一の特徴が使用される。前述の実施例では、考えられるパラメータ値毎の個々の特徴は、同じプロセッサ・パラメータの種々の値とプロセッサの性能との間の非線形関係を可能にする。一実施例では、元の非二進形式（例えば、図４Ａ）では、ＶＷ統計手法は、例えば、ＤＣＵの容量とプロセッサの性能との間の単一の線形関数を学習しなければならない。しかし、プロセッサの性能とＤＣＵとの関係は、一実施例では、線形でないことがあり得る。場合によっては、ＤＣＵ容量が８ＫＢから１６ＫＢ容量に増加すると性能が増加するが、１６ＫＢ乃至３２ＫＢのＤＣＵ容量では、性能は一定の状態に留まる。前述の実施例では、３つのＤＣＵ容量全てにわたり、ＤＣＵ容量とプロセッサ性能との間の関係を表す線形関係は存在しない。しかし、特徴が、二進特徴を備えた単一マトリクスにおいて二進化された場合、ＶＭ統計手法は、ＰＣＵ容量毎の線形関数を学習する。したがって、一実施例では、前述の３つのＤＣＵ容量と、プロセッサ性能との間の関係は、３つの線形関数によって表すことが可能であり、これは、モデルをより正確にする。
【００３８】
もう一度図３を参照すれば、ブロック３０４で生成される単一のマトリクス（図４Ａの４００又は図４Ｂの４１０）は次いで、ブロック３０５で、統計アプリケーション上で実行される。一実施例では、統計アプリケーションは、性能予測モデルを生成するようＶＷ統計モデルを実行する。一実施例では、統計手法は、ブロック３０４において生成されるマトリクスにおいて特徴（図４Ａの４０１及び図４Ｂの４１１）毎に重みを割り当てる。一実施例では、入力データの行毎の各特徴に割り当てられる重みの和は、その行に対応するラベル（図４Ａの４０１及び図４Ｂの４１２）である。一実施例では、統計手法は、ラベルの二乗誤りを最小にするために特徴に重みを割り当てる。一実施例では、シミュレータ・パラメータが、ベンチマーク全てにわたり、プロセッサ性能と高い相関を有する場合、大きな重み（例えば、１．０）がその特徴に割り当てられる。一実施例では、パラメータがプロセッサ性能と無相関である場合、小さな重み（場合によっては０）がその特徴に割り当てられる。
【００３９】
一実施例では、統計手法が、二次特徴のペアリングを組み入れる。前述の実施例では、重みは、個々の特徴に割り当てられるのみならず、２つの特徴の組み合わせにも割り当てられる。例えば、重みが、ＤＣＵの容量、命令キャッシュの容量（図１Ｂを参照）、並びに、ＤＣＵ及び命令キャッシュの組み合わせに割り当てられる。前述の実施例では、２つのパラメータの組み合わせに割り当てられる重みは、何れかの２つの特定の構成（例えば、命令キャッシュ容量及びＤＣＵ容量）の相互作用などの２次効果を捕捉する。一実施例では、２次効果は、性能予測モデルを更に正確にし、それにより、誤りが小さくなる。
【００４０】
２次特徴のペアリングは、プロセッサ性能の予測においていくつかの利点を有する。例示的な２つの利点は、例証の目的で記載している。
【００４１】
まず、一実施例では、ペアリングされた特徴が、トレース及びパラメータ対の場合、特徴のペアリングは、トレースのモデルの学習におけるパラメータの影響に基づいてパラメータに適切な重みを割り当てることにより、トレース特有のパターンの学習を支援する。
【００４２】
例えば、一実施例では、マトリクスは３つのトレース（すなわち、Ｘ、Ｙ及びＺ）を含む。一実施例では、トレースＸは、大きなＤＣＵ容量（例えば、３２ＫＢ）だけから、より良好なプロセッサ性能を示す、すなわち、トレースＸは、ＩＷの容量に対する性能感度を示さない。トレースＸのＩＷには重みは割り当てられない。上記例では、トレースＹは、ＤＣＵ及びＩＷ容量の何れにも等しい重みが割り当てられた場合、より良好なプロセッサ性能をもたらし得る、一実施例によれば、前述のパラメータは何れも性能に影響を及ぼすからである。同様に、トレースＺは、ＤＣＵ又はＩＷ容量からの更なるプロセッサ性能のベネフィットを示さないことがあり得、よって、一実施例によれば、トレースＺの何れのパラメータにも重みは割り当てられない。
【００４３】
第２に、一実施例では、ペアリングされた特徴が、（上記トレース及びパラメータ対と違って）何れもパラメータである場合、モデルは、プロセッサ・パラメータがどのようにして互いに影響を及ぼすかを学習する。
【００４４】
例えば、一実施例では、ペアリングされた特徴は、レベル１キャッシュ及びレベル２キャッシュである。通常、レベル１キャッシュよりも大きなレベル２キャッシュは、より良好なプロセッサ性能をもたらし、それにより、レベル２キャッシュに対してレベル１キャッシュに、より多くの重みが割り当てられる。しかし、レベル１キャッシュが既に大きな実施例の場合、なお大きなレベル２キャッシュの更なるベネフィットは、レベル１キャッシュが元々小さい場合よりも小さくなる。上記キャッシュ特徴のペアリングにより、互いに対するパラメータの影響が、モデル生成のために上記パラメータに対する更に正確な重み割り当てについて判定される。
【００４５】
一実施例では、性能予測モデルは、特定の特徴（例えば、ＤＣＵ容量）にのみ重みを割り当てるのみならず、その特徴、及びデータの各行のベンチマークの対（例えば、（ＤＣＵ容量、トレース１）、（ＤＣＵ容量、トレース２）にも重みを割り当てて、パラメータが通常、ベンチマーク全てに同様に又は一意に影響を及ぼすか否かを判定する。前述の実施例では、特徴及びラベルの初見の性能をより好適に推測するための判定として使用される。
【００４６】
例えば、一実施例では、シミュレータ・パラメータが、一部のベンチマークについて、プロセッサ性能と高い相関を有する場合、重みが、パラメータ・トレース特徴対に付される。前述の実施例では、プロセッサ性能が、初見のプロセッサ・アーキテクチャに対する既知のベンチマークについて予測された場合、性能予測モデルは、シミュレータ・パラメータ毎に、パラメータが通常、ベンチマーク全てに同様に（すなわち、上記特徴にだけ、大きな重みがみられる）か、又はベンチマークに応じて一意に求められる（すなわち、大きな重みは、影響されたベンチマークに関連付けられた特徴・トレース対のみにみられる）。前述の知識は、初見のプロセッサの性能の予測を向上させる。
【００４７】
一実施例では、統計手法は、立方スプラインを使用して特徴とラベルとの関係をモデリングする（図４を参照されたい）。立方スプラインは、訓練データに適合される非線形曲線である。前述の実施例では、特徴毎のスプラインを適合させるノット（又はディバイダ）の数が規定される。一実施例では、スプラインが特定数のノットで分けられ、非線形曲線が各ノット間で学習される。例えば、スプラインが２つのノットを有する場合、スプラインにわたり、別個の３つの学習された曲線が存在することになる。一実施例では、より多くのノットが、特徴とラベルとの間でより強力な機能を生成することが可能であるが、多すぎるノットにより、訓練データに対して統計性能予測モデルを過剰適合するリスクを負い得る。
【００４８】
例えば、一実施例では、特定のパラメータについて考えられる５つの値が存在し、スプラインがノットなしで分割されない場合、特徴に対するパラメータの非線形関係は、単一の線上にデータ点全てを適合させることを困難にする。困難という語は、データ点がスプラインにどの程度近いかを表す。一実施例では、スプラインは、それ自身の線上に各データ点を適合させるために５つのノットに分割される。前述の場合には、適合は、初見のデータ点の正確な推定の提供には、訓練データに対する感度が高すぎる。
【００４９】
もう一度、図３を参照すれば、ブロック３０６で、プロセッサの統計モデルを作成するために使用される当初のランダム・サンプリングからの訓練データが検査される。一実施例では、Ｎ回の相互検証が、モデルの精度を検査するために行われる。一実施例では、Ｎは５である。他の実施例では、モデルの精度を検査するために、より少ない数、又はより多い数の相互検証を行うことができる。相互検証の数が多いほど、モデルの精度における信頼度レベルが高くなる。
【００５０】
例えば、Ｎ＝５の実施例の場合、サンプリングされたデータは等しい５つの部分に分けられる。一実施例では、サンプリングされたデータの４つの部分が、性能予測モデルを訓練するために使用され、第５の部分は、モデルの予測の誤りを測定するために検査データとして使用される。一実施例では、上記方法は５回（毎回、検査するために、サンプリングされたデータの別の部分を使用して）行われる。誤りが次いで、相互検証が行われる都度、計算される。一実施例では、平均誤りは、初見の構成を予測するために性能予測モデルが使用される場合に存在する可能性が高い誤りのパーセンテージを示すよう生成される。
【００５１】
ブロック３０７は、モデルの精度について求められる。一実施例では、平均誤りが所定の閾値（例えば、４％）よりも高い場合、データの再訓練は、ブロック３０１乃至３０２に関連付けられた方法を行うことによって行われる。
【００５２】
一実施例では、再サンプリング段階（ブロック３０１乃至３０２）において、一部のシミュレータ・パラメータが、他のシミュレータ・パラメータと比較して、プロセッサ性能に対する相関に基づいて精度を向上させるためにレビューされる。一実施例では、（正又は負の）高い相関を有するパラメータは、統計手法によって生成されるモデルの精度を向上させる。
【００５３】
相関が高いパラメータは、プロセッサの性能に直接影響を及ぼすものである。無相関のパラメータは、プロセッサの性能に影響を及ぼさないものである。
【００５４】
一実施例では、プロセッサ性能と無相関のシミュレータ・パラメータは廃棄される、前述の無相関パラメータは、性能予測モデルに雑音を挿入し、よって、その精度を低減させるからである。一実施例では、上記再訓練処理は、所望のパーセンテージ誤りを達成するために数回、繰り返される。
【００５５】
ブロック３０７では、平均誤りが、所定の閾値よりも少ないと判定された場合、プロセッサ構成全ての並び替えがブロック３０８で生成される（図１、ブロック１０５も参照されたい）。ブロック３０９では、性能予測モデルが、プロセッサ性能を予測するよう実行される。
【００５６】
図５は、本発明の一実施例による、プロセッサ・アーキテクチャ予測モデルの効率的生成に関連付けられたハードウェアを示すシステム５００である。一実施例では、システム５００は、上記方法を行うための命令５０５を有するメモリ５０４と、チップセット５０２と、プロセッサ５０１とを含む。システムの上記構成部分は、一実施例では、ネットワーク・バス５０３を介して互いに結合される。一実施例では、プロセッサ５０１は、上記手法を行うための命令を備えたメモリ及びロジックを含む。    
実施例の構成要素は、実行されると、方法（例えば、図１及び図３の方法）をコンピュータ又はマシンに行わせるコンピュータ実行可能な命令（例えば、図５の５０５）を記憶するためにマシン読み取り可能な媒体（コンピュータ読み取り可能な媒体とも表す）として提供される。マシン読み取り可能な媒体は、限定列挙でないが、メモリ（例えば、図５の５０４）、フラッシュ・メモリ、光ディスク、ＣＤ−ＲＯＭ、ＤＶＤ  ＲＯＭ、ＲＡＭ、ＥＰＲＯＭ、ＥＥＰＲＯＭ、磁気若しくは光ディスク、又は電子若しくはコンピュータ実行可能命令の記憶に適した他のタイプのマシン読み取り可能な媒体を含み得る。例えば、本発明の実施例は、通信リンク（例えば、モデム又はネットワーク接続）を介してデータ信号により、遠隔コンピュータ（例えば、サーバ）から、要求側のコンピュータ（例えば、クライアント）に転送し得るコンピュータ・プログラム（例えば、ＢＩＯＳ）としてダウンロードし得る。
【００５７】
本願明細書中の「実施例」、「一実施例」、「一部の実施例」、又は「他の実施例」への言及は、実施例に関して説明された特定の特徴、構造又は特性が、少なくとも一部の実施例に含まれているが、必ずしも全ての実施例に含まれている訳でないということを意味する。「実施例」、「一実施例」又は「一部の実施例」が種々なかたちで存在することは、必ずしも全て、同じ実施例を表しているものでない。本願明細書が、構成部分、特徴、構造、又は特性が、含まれ得る（ｍａｙ、ｍｉｇｈｔ、ｏｒ  ｃｏｕｌｄ  ｂｅ  ｉｎｃｌｕｄｅｄ）と記載した場合、その特定の構成部分、特徴、構成、又は特性は含まれることは必要でない。本願の明細書又は特許請求の範囲が、「ａ」又は「ａｎ」を表す場合、それは、構成要素の１つのみが存在しているということを意味しない。本願明細書又は特許請求の範囲が「更なる」構成要素を表す場合、それは、更なる構成要素が２つ以上あることを排除するものでない。
【００５８】
本発明は、その特定の実施例に関して説明しているが、多くの代替、修正及び変形が、上記説明に照らして、当業者に明らかであろう。    
例えば、性能予測モデルの生成に使用される統計手法ＶＷは、区分的多項式回帰分析法、ニューラル・ネットワーク、又はサポート・ベクター・マシンの一部の変形を含む他の統計手法で置き換えることが可能である。本発明の実施例は、特許請求の範囲記載の広い範囲内に収まる前述の代替、修正、及び変形全てを包含することを意図している。
【符号の説明】
【００５９】
５００  システム
５０１  プロセッサ
５０３  ネットワーク・バス
５０４  メモリ
【図１Ａ】
0005512503.tif 000002
【図１Ｂ】
0005512503.tif 000003
【図２】
0005512503.tif 000004
【図３】
0005512503.tif 000005
【図４Ａ】
0005512503.tif 000006
【図４Ｂ】
0005512503.tif 000007
【図５】
0005512503.tif 000008