JP2001142747A - プロセッサ性能データ収集装置及び該装置を利用した最適化方法 - Google Patents

プロセッサ性能データ収集装置及び該装置を利用した最適化方法

Info

Publication number
JP2001142747A
JP2001142747A JP32637799A JP32637799A JP2001142747A JP 2001142747 A JP2001142747 A JP 2001142747A JP 32637799 A JP32637799 A JP 32637799A JP 32637799 A JP32637799 A JP 32637799A JP 2001142747 A JP2001142747 A JP 2001142747A
Authority
JP
Japan
Prior art keywords
statistical data
event
processor
events
data
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.)
Granted
Application number
JP32637799A
Other languages
English (en)
Other versions
JP3292189B2 (ja
Inventor
Satoshi Matsushita
智 松下
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.)
NEC Corp
Original Assignee
NEC 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 NEC Corp filed Critical NEC Corp
Priority to JP32637799A priority Critical patent/JP3292189B2/ja
Publication of JP2001142747A publication Critical patent/JP2001142747A/ja
Application granted granted Critical
Publication of JP3292189B2 publication Critical patent/JP3292189B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

(57)【要約】 【課題】 性能改善に役立つ事象の統計データを実運用
時に迅速かつ低コストで収集する。 【解決手段】 抽出部連想メモリ31は、プロセッサの性
能低下に及ぼす影響が大きく且つ統計的な信頼度が基準
を満たす上位一定数の事象の統計データを記憶する。巡
回部連想メモリ32は、統計的な信頼度が未だ基準を満た
さないか或いは前記上位一定数に入らない事象の統計デ
ータを一時的に記憶する。投機確率データ更新回路43及
び入れ替え候補決定回路45は、実運用時に発生した事象
に関するデータをプロセッサから投機指示バス22を通じ
て受け取って該当する事象の失敗率を更新し、現在まで
に計算された事象の統計データのうちプロセッサの性能
低下に及ぼす影響が大きい上位一定数の事象の統計デー
タが抽出部連想メモリ31に残るように、巡回部連想メモ
リ32と抽出部連想メモリ31間での事象の統計データの入
れ替え及び抽出部連想メモリ31の事象の統計データの入
れ替えを行う。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、コンピュータシス
テムの性能改善を目的としてプロセッサで発生した事象
の統計データを収集するプロセッサ性能データ収集装置
及び該装置を利用した最適化方法に関する。
【0002】
【従来の技術】従来より、プロセッサで発生した各種事
象に関するデータを収集して統計処理を行い、その事象
の統計データに基づいてコンピュータシステムの性能を
チューニングすることが行われている。以下に、代表的
な従来技術を示す。
【0003】(1)従来技術1 特開平7−191882号公報(以下、文献1と称す)
には、事象の統計データとしてメモリの連続領域毎かつ
アクセスタイプ毎のアクセス回数を求め、その統計デー
タに基づいて性能をチューニングする技術が示されてい
る。具体的には、メモリアクセスの履歴を採取するトレ
ース採取ルーチンをターゲットプログラムに埋め込んで
実行させ、メモリアクセスが1回行われる毎にそのメモ
リアクセスの種類とアクセスしたアドレスを含むトレー
ス情報をトレースファイルに収集する。次にプロファイ
リング手段によって、トレースファイルの各トレース情
報毎に解析し、メモリの連続領域毎かつアクセスタイプ
毎のアクセス回数を集計して出力する。そして、アクセ
ス回数を参照して、処理の重い部分や頻繁にアクセスさ
れる変数やデータ構造を改善する。
【0004】(2)従来技術2 特開平8−263372号公報(以下、文献2と称す)
には、事象の統計データとして各データアドレスのキャ
ッシュミス率(アクセス回数に対するキャッシュミス回
数の比率)を求め、その統計データに基づいて性能をチ
ューニングする技術が示されている。具体的には、コン
パイラが出力したオブジェクトプログラムについてその
実行シーケンスに従って命令を1つずつトレースし、そ
の命令がアクセスするデータの主記憶上のアドレスを抽
出する処理手段と、アクセスアドレスがキャッシュメモ
リに取り込んだとみなされるデータのアドレス範囲内に
ないときキャッシュミスとして検出し、キャッシュミス
情報中の当該アドレスについてのアクセス回数とキャッ
シュミス回数をカウントアップするシミュレート手段と
を備える。そして、コンパイラは、前記キャッシュミス
情報から各命令に関するアドレスのキャッシュミス率を
計算し、そのキャッシュミス率が所定値以上のとき、当
該命令と並行して実行されるだけの独立した後続命令を
並行実行させるよう命令の実行順序を変更することで最
適化を実施する。
【0005】(3)従来技術3 特開平11−272519号公報(以下、文献3と称
す)には、事象の統計データとして、プロセス毎のキャ
ッシュヒット率やスレッド毎の平均メモリシステム待ち
時間など事前に設定された事象の統計データを求め、そ
の統計データに基づいて性能をチューニングする技術が
示されている。この従来技術3は、事象に関するデータ
を、従来技術1のようにターゲットプログラムに付加的
なコードを追加することなく、また従来技術2のような
シミュレートによることなく、ハードウェア的にサンプ
リングする。更に、分岐予想ミスによって失われた命令
サイクルなどの付加情報を、プログラムの特定の命令に
帰属させて収集することができる。具体的には、図21
に示されるようなトリガー1000、カウンタ1001
及びマーカー1002から構成されるセレクタ2000
がプロセッサ内に設けられる。
【0006】カウンタ1001は、ハードウェア又はソ
フトウェアによって任意に設定可能な初期値1007で
初期化され、カウンタ事象信号1008により歩進され
る。カウンタ事象信号1008は、カウント選択信号1
009により1つ以上の事象信号(事象1、事象2、事
象3)1005から選択される。事象信号1005はク
ロックサイクル、トランザクション等である。トリガー
1000は、コンピュータシステムにおける現在のトラ
ンザクション1003、事象1005、状態1006を
入力し、何時どんな条件の下でカウンタ1001を歩進
可能状態にすべきかを決定する。マーカー1002は、
事象1005、状態1006及びトランザクションを入
力し、カウンタ1001がオーバーフローしたとき、選
択されたトランザクションT’1004としてどのトラ
ンザクションがマークされるかを決定する。選択された
トランザクションのマーキングは、例えばTからT’ま
での付加的なサンプルビットをトランザクションに与え
ることにより行われる。
【0007】或るトランザクションがサンプリングのた
めに選択された後に、マークされたトランザクション1
004を処理するプロセッサは、各当該処理段階にサン
プルビットをチェックし、それに使用できる状態情報を
収集し、バッファに記憶する。状態情報記憶用のバッフ
ァには、処理されている特定トランザクションに関する
状態(例えば、トランザクションがメモリ参照である場
合には、キャッシュヒット状態か否か等)を示す状態フ
ィールド、当該トランザクションに関連した仮想や物理
的アドレスを示すアドレスフィールド、当該トランザク
ションのソースのスレッド識別子などを示すコンテクス
トフィールド、当該トランザクションのソース(例えば
ロード又は記憶命令、DMA要求等)を示すソースフィ
ールド、ソースを識別するための付加的な情報(ソース
がプロセッサパイプラインのフェッチユニットである場
合には命令のプログラムカウンタや命令フィールドな
ど)を示す命令フィールドなどが含まれる。
【0008】特定数のトランザクションが記録された後
に、バッファが一杯になると、割り込みやソフトウェア
ポーリングによってバッファの内容がソフトウェアによ
って読み込まれ、次のサンプリングを可能とする。ソフ
トウェアによって読み込まれた状態情報は、プロファイ
リングアプリケーションソフトウェアによって統計的な
解析が行われて統計データが求められる。そして、この
統計データを分析し、再コンパイルなどの方法で実行中
プログラム内の性能問題の最適化を動的に実施する。
【0009】
【発明が解決しようとする課題】従来の課題の1つは、
性能改善に役立つ事象の統計データを得るために保存し
ておかなければならないデータ量が多く、保存にコスト
がかかることである。その理由は、従来技術1では、発
生した事象に関する全てのサンプルを格納し得る容量の
トレースファイルが必要になり、従来技術2では、アク
セス回数及びキャッシュミス回数の途中結果を各メモリ
アドレス毎に格納できる大容量なキャッシュミス情報が
必要になり、従来技術3では、状態情報格納用バッファ
から読み取ったデータ全てを格納できるファイル等が必
要になるためである。
【0010】従来の他の課題は、性能改善に役立つ事象
の統計データを実運用時に速やかに求めることが難しい
ことである。その理由は、従来技術1および従来技術3
とも、全サンプルを収集した後に統計処理を行って統計
データを求めているからである。また、性能改善に役立
つ事象の統計データの計算が、性能改善に役立たない事
象の統計データの計算より後回しになってしまう可能性
があるからである。ここで、性能改善に役立たない事象
の統計データとは、従来技術1で言えば、アクセス回数
の少ないメモリの連続領域・アクセスタイプの事象の統
計データである。なお、従来技術2はシミュレータを用
いているため、プログラムの実運用時に事象の統計デー
タを求めることは本質的に不可能である。
【0011】本発明の目的は、性能改善に役立つ事象の
統計データを実運用時に迅速かつ低コストで求めること
ができるプロセッサ性能データ収集装置を提供すること
にある。
【0012】本発明の他の目的は、本発明のプロセッサ
性能データ収集装置を利用した最適化方法を提供するこ
とにある。
【0013】
【課題を解決するための手段】本発明のプロセッサ性能
データ収集装置は、事象の統計データのうちプロセッサ
の性能低下に及ぼす影響が大きい上位一定数の事象の統
計データを記憶する抽出部メモリと、実運用時に発生し
た事象に関するデータをプロセッサから受け取り、現在
までに計算された事象の統計データのうちプロセッサの
性能低下に及ぼす影響が大きい上位一定数の事象の統計
データが前記抽出部メモリに残るように事象の統計デー
タの更新及び事象の統計データの入れ替えを行う制御手
段とを有する。
【0014】プロセッサで発生した事象の統計データ
は、一般に性能改善に役立つものとそうでないものとに
分けることができる。例えば、アクセス頻度に基づいて
ソフトウェアの性能を改善する場合、処理の重い部分や
頻繁にアクセスされる変数やデータ構造を改善した方が
効果が大きいので、アクセス回数が多いことを示す事象
の統計データが性能改善に役立つ。また、キャッシュミ
ス情報に基づいてソフトウェアの性能を改善する場合、
キャッシュミス比率が大きい事象の統計データが性能改
善に役立つ。更に、投機実行可能なプロセッサにおける
各投機事象の投機失敗率に基づいてソフトウェアの性能
を改善する場合、投機失敗率が大きい事象の統計データ
が性能改善に役立つ。換言すると、性能改善に役立つ事
象の統計データは、プロセッサの性能低下に及ぼす影響
が大きい事象の統計データと言える。そこで本発明のプ
ロセッサ性能データ収集装置では、現在までに計算され
た事象の統計データのうちプロセッサの性能低下に及ぼ
す影響が大きい上位一定数の事象の統計データが抽出部
メモリに残るように事象の統計データの更新及び事象の
統計データの入れ替えを行う。これによって、限られた
容量の抽出部メモリが有効に活用され且つ統計処理と収
集が並行して実施されるため、性能改善に役立つ事象の
統計データを実運用時に迅速かつ低コストで収集するこ
とができる。
【0015】現在までに計算された事象の統計データを
保存する場所として抽出部メモリだけを使用すると、抽
出部メモリが満杯となった以降、新たな事象の統計デー
タを残すには抽出部メモリに既に記録されている事象の
統計データを上書きする操作が必要になる。このような
操作を行っても収集精度は低下するが、プロセッサの性
能低下に及ぼす影響が極端に大きな事象の統計データの
幾つかは収集することができる。しかし、収集精度を高
めるためには、抽出部メモリ以外に補助的な格納場所が
必要になる。本発明では、補助的な格納場所として、巡
回部メモリを使用する方法、プロセッサ中の命令キャッ
シュを活用する方法、およびその両者を使用する方法の
何れかを提供する。
【0016】巡回部メモリを使用する場合、抽出部メモ
リには、プロセッサの性能低下に及ぼす影響が大きく且
つ統計的な信頼度が基準を満たす上位一定数の事象の統
計データを記憶し、巡回部メモリには、統計的な信頼度
が未だ基準を満たさないか或いは前記上位一定数に入ら
ない事象の統計データを一時的に記憶する。統計的な信
頼度が基準を満たすか否かは、例えば出現回数が或る閾
値以上か否かで判断される。制御手段は、発生した事象
に関するデータをプロセッサから受け取り、現在までに
計算された事象の統計データのうちプロセッサの性能低
下に及ぼす影響が大きい上位一定数の事象の統計データ
が前記抽出部メモリに残るように、事象の統計データの
更新、前記巡回部メモリと前記抽出部メモリ間での事象
の統計データの入れ替え及び前記抽出部メモリの事象の
統計データの入れ替えを行う。具体的には、前記制御手
段は、前記プロセッサから受け取った事象の統計データ
が前記抽出部メモリ及び前記巡回部メモリの何れにも記
憶されていないときは前記巡回部メモリに空きエントリ
を確保して当該事象の統計データを登録し、前記巡回部
メモリに記憶されているときは該記憶されている事象の
統計データを更新すると共に必要に応じて前記巡回部メ
モリと前記抽出部メモリとの間で事象の統計データの入
れ替えを行い、前記抽出部メモリに記憶されているとき
は該記憶されている事象の統計データを更新する。
【0017】巡回部メモリと命令キャッシュの双方を利
用する場合、抽出部メモリには、プロセッサの性能低下
に及ぼす影響が大きく且つ統計的な信頼度が基準を満た
す上位一定数の事象の統計データを記憶し、巡回部メモ
リに、統計的な信頼度が未だ基準を満たさないか或いは
前記上位一定数に入らない事象の統計データを一時的に
記憶し、命令キャッシュの各キャッシュライン毎に付加
した領域に、前記巡回部メモリへの登録事象を絞り込む
ために前記抽出部メモリおよび前記巡回部メモリの何れ
にも登録されていない事象にかかる簡易統計データを保
持する。制御手段は、発生した事象に関するデータをプ
ロセッサから受け取り、現在までに計算された事象の統
計データのうちプロセッサの性能低下に及ぼす影響が大
きい上位一定数の事象の統計データが前記抽出部メモリ
に残るように、事象の統計データの更新、前記巡回部メ
モリと前記抽出部メモリ間での事象の統計データの入れ
替え及び前記抽出部メモリの事象の統計データの入れ替
え並びに前記簡易統計データの更新を行う。具体的に
は、前記制御手段は、前記プロセッサから受け取った事
象の統計データが前記抽出部メモリ及び前記巡回部メモ
リの何れにも記憶されていないときは当該事象にかかる
命令を保持するキャッシュラインの簡易統計データを更
新すると共に更新後の簡易統計データが一定の基準を満
足したときに前記巡回部メモリに空きエントリを確保し
て当該事象の統計データを登録し、前記巡回部メモリに
記憶されているときは該記憶されている事象の統計デー
タを更新すると共に必要に応じて前記巡回部メモリと前
記抽出部メモリとの間で事象の統計データの入れ替えを
行い、前記抽出部メモリに記憶されているときは該記憶
されている事象の統計データを更新する。
【0018】命令キャッシュだけを利用する場合、抽出
部メモリには、プロセッサの性能低下に及ぼす影響が大
きく且つ統計的な信頼度が基準を満たす上位一定数の事
象の統計データを記憶し、命令キャッシュの各キャッシ
ュライン毎に付加した領域に、前記抽出部メモリへの登
録事象を絞り込むために前記抽出部メモリに登録されて
いない事象にかかる簡易統計データを保持する。制御手
段は、発生した事象に関するデータをプロセッサから受
け取り、現在までに計算された事象の統計データのうち
プロセッサの性能低下に及ぼす影響が大きい上位一定数
の事象の統計データが前記抽出部メモリに残るように、
事象の統計データの更新、前記抽出部メモリの事象の統
計データの入れ替え並びに前記簡易統計データの更新を
行う。具体的には、前記制御手段は、前記プロセッサか
ら受け取った事象の統計データが前記抽出部メモリに記
憶されていないときは当該事象にかかる命令を保持する
キャッシュラインの簡易統計データを更新すると共に更
新後の簡易統計データが一定の基準を満足したときに前
記抽出部メモリに空きエントリを確保して当該事象の統
計データを登録し、前記抽出部メモリに記憶されている
ときは該記憶されている事象の統計データを更新する。
【0019】前記抽出部メモリおよび前記巡回部メモリ
は、好ましくは、事象の種類(例えば命令アドレス)で
検索可能な連想メモリで構成される。また、前記抽出部
メモリの事象の統計データは、好ましくは、プロセッサ
の性能低下に及ぼす影響が大きい順に整列される。前記
事象の統計データは、例えば事象の出現回数、事象の失
敗回数及び失敗率を含む。ここで事象としてはキャッシ
ュアクセス命令や投機実行命令などがある。前記事象の
統計データは、更に、失敗した事象の巻き戻しに要する
コストを示す付加情報を含ませることができる。投機事
象の場合、そのコストは、巻き戻される命令の数や、投
機中にロードしたデータ量が付加情報となる。
【0020】また本発明のプロセッサ性能データ収集装
置を利用した最適化方法は、上述したプロセッサ性能デ
ータ収集装置によってプログラムの実運用時に収集され
た事象の統計データに基づき、プログラムの再コンパイ
ル時に最適化し直すことで、動的な性能チューニングを
可能にする。
【0021】
【発明の実施の形態】次に本発明の実施の形態の例につ
いて図面を参照して詳細に説明する。
【0022】(第1実施例)本実施例では、投機実行を
行うプロセッサの実運用時に、そのプロセッサの処理と
並行して性能上問題となる投機の統計データを収集し、
この収集した統計データに基づいて性能チューニングを
行う。
【0023】投機実行とは、動作予測に従い先行して投
機的に処理を投入し、予測が外れていた場合には、投機
実行の結果を取り消し、必要に応じて正しい処理をやり
直すことにより、結果の正当性を保証する処理方式であ
る。投機実行は、制御投機とデータ投機に分類される。
制御投機は、制御依存を無視して先行的に命令の実行を
開始する方法であり、データ投機は、データ依存を無視
して先行的にデータの値やデータのアドレスを予測し実
行を開始する方法である。投機実行の代表例に、プログ
ラム中の条件分岐命令において分岐先を実行前に予測す
る分岐予測がある。分岐予測は、コンパイル時に予測す
る静的分岐予測と、実行時に予測する動的分岐予測に分
類される。本実施例は、制御投機およびデータ投機を行
う処理部分をコンパイル時点で決定する静的予測手法を
用いる。以下、本実施例の前提となる静的予測による投
機実行について説明する。
【0024】図1に、或るプログラムの開始Strat
1から終了End2までの実行フローが示されている。
この実行フローにおいては、処理3aが完了するまで
は、条件判断4a、条件判断4bの条件が確定しない。
このため、処理3cを処理3aと同時に実行する場合、
処理3cの実行は制御投機となる。処理3bではなく、
処理3cに投機するのは、コンパイル時点の静的予測に
より、処理3cの方が投機の確実性が高いと判断された
ことによる。他方、処理3eは、条件判断4a、4bの
結果に依存せずに必ず実行されるため制御投機は不要で
あるが、処理3aとデータ依存がある場合、処理3eを
処理3aと同時に実行すると、処理3eの実行はデータ
投機となる。静的予測では、このようなデータ依存関係
の予測も可能であり、予測部分の投機実行により性能の
向上が図れる。従って、処理3cおよび処理3eを処理
3aと同時に実行する場合、制御投機およびデータ投機
の双方が実施されていることになる。
【0025】制御投機およびデータ投機を行う処理部分
を静的予測によって決定したプログラムの実行方法とし
ては、例えば特開平10−27108号公報(以下、文
献4と称す)に記載されたスレッド実行方法がある。同
文献4では、処理の割り当て単位をスレッドと呼び、複
数のスレッド実行部を使って親子関係にある複数のスレ
ッドを並列に実行する。その際、親スレッドの処理が或
る程度確定するまで子スレッドを確実に生成することが
わからない場合に、投機的に子スレッドを生成し、その
後の親スレッドの処理の進み方によって、仮に生成した
子スレッドを確定させたり、取り消したりする。そのた
めに、親スレッドがプログラム実行上の正当性が確定す
る前に子スレッドを投機的に生成するための投機的スレ
ッド生成命令、正当性が確認された後にその結果を子ス
レッドに伝えるための投機成功通知命令、不当な生成で
ある場合に子スレッドの実行を取り消すための投機失敗
通知命令といった特殊命令が用意される。また、スレッ
ド実行部に、実行に伴う作用を取り消すための機構が設
けられ、その機能の許容する範囲内でスレッドの仮実行
を行う。更に、親スレッドのスレッド実行部が投機成功
通知命令を実行すると、その情報が子スレッドを実行し
ているスレッド実行部に伝えられ、子スレッド実行部は
通常状態に遷移し、他方、親スレッドのスレッド実行部
が投機失敗通知命令を実行すると、その情報が子スレッ
ドを実行しているスレッド実行部に伝えられ、子スレッ
ドの実行を取り消し、さらに、親スレッドのスレッド実
行部においてもスレッド生成を行っていない状態に戻す
ようにしている。
【0026】図2は投機が成功する場合の動作例を、図
3は投機が失敗する場合の動作例をそれぞれ示す。図2
において、スレッド#0が投機的スレッド生成命令11
を実行すると、スレッド#1が生成され、仮実行状態で
スレッド#1の実行が開始され、スレッド#0はスレッ
ド仮生成状態となる。スレッド#1の仮実行状態でスレ
ッド生成命令12が実行されると、それによって生成さ
れるスレッド#2もスレッド#1の仮実行属性を引き継
ぎ、仮実行状態で実行される。スレッド#0が条件分岐
命令13を実行後、この条件分岐によってスレッド生成
の投機が正しいと確定すると、投機成功通知命令14を
実行する。これによって、スレッド#1、スレッド#2
の仮実行状態が解除され、スレッド#0はスレッド生成
状態となる。
【0027】図3においても同様に実行されるが、条件
分岐命令13が逆方向に分岐し、これによってスレッド
生成の投機が不正であると確定する。この時、スレッド
#0は投機失敗通知命令15を実行する。これによっ
て、スレッド#1及びスレッド#2の実行は取り消され
る。この投機失敗通知命令15を実行することにより、
スレッド#0はスレッド仮生成状態からスレッド未生成
状態に戻り、再びスレッド生成命令16を実行してスレ
ッド#3を生成することが可能になる。なお、投機的な
スレッド生成に失敗した時に投機的な実行による副作用
が生じないように、共有メモリなどへの書き込みは抑止
され、別途設けられた仮実行用バッファが代わりに使用
される。
【0028】さて、図4を参照すると、本発明を適用し
たプロセッサ25の一例は、MPU演算実行部20に対
して、投機指示バス22、付加情報バス23および結果
アクセスバス24を介して、本発明にかかるプロセッサ
性能データ収集装置の一実施例である投機情報収集装置
21が接続された構成を有する。
【0029】MPU演算実行部20は、前述したような
投機実行を行う機能を有するプロセッサにデータ採取手
段27および最適化手段28を組み込んだものである。
データ採取手段27は、MPU演算実行部20上でのプ
ログラムの実行中に、投機情報収集装置21へ以下のよ
うな情報を出力する。
【0030】(1)投機処理の開始時 MPU演算実行部20上でのプログラム実行中に投機処
理が開始する都度、その事象を検出し、投機処理が開始
された旨及び投機命令のアドレスを、投機指示バス22
を通じて投機情報収集装置21に出力する。対象となる
投機処理としては、例えば図2、図3の投機的スレッド
生成命令11がある。勿論、投機的に実行されるメモリ
ロード命令や条件分岐命令など、他の投機処理を対象に
することもできる。
【0031】(2)投機処理の終了時 MPU演算実行部20上でのプログラム実行中に投機処
理が完了する都度、その事象を検出し、投機処理が完了
した旨、完了種別(成功完了か失敗完了かの種別)およ
び投機命令アドレスを、投機指示バス22を通じて投機
情報収集装置21に出力する。例えば図2の場合、投機
成功通知命令14の実行時点で投機的スレッド生成命令
11にかかる投機処理が成功完了するので、投機処理が
完了した旨、成功完了および投機的スレッド生成命令1
1のアドレスを出力し、図3の場合は、投機失敗通知命
令の実行時点で投機的スレッド生成命令11にかかる投
機処理が失敗完了するので、投機処理が完了した旨、失
敗完了および投機的スレッド生成命令11のアドレスを
出力する。
【0032】(3)投機実行中 MPU演算実行部20上のプログラムで投機処理が実行
されている最中、当該投機処理が失敗完了した場合の無
駄なコストを見積もるのに必要なデータを付加情報とし
て採取し、当該投機処理の投機命令アドレスと共に付加
情報バス23を通じて投機情報収集装置21に出力す
る。無駄なコストを見積もるのに必要なデータとして
は、命令数、ストア/ロードしたデータ量などがある。
例えば図3の場合、投機的スレッド生成命令11が失敗
完了した場合の無駄なコストは、仮実行状態のスレッド
#1、#2が実行した命令数あるいはメモリにストア/
ロードしたデータ量などで見積もることができる。命令
数を付加情報とする場合、データ採取手段27は、投機
的スレッド生成命令11で生成されたスレッド#1、#
2が仮実行状態になっている期間において命令が実行さ
れる都度、投機的スレッド生成命令11のアドレスを伴
って命令が1つ実行された旨の付加情報を出力する。ま
たメモリにストア/ロードしたデータ量を付加情報とす
る場合、データ採取手段27は、投機的スレッド生成命
令11で生成されたスレッド#1、#2が仮実行状態に
なっている期間においてメモリストア/ロード命令が実
行される都度、投機的スレッド生成命令11のアドレス
を伴ってそのストア/ロードしたデータ量を付加情報と
して出力する。
【0033】データ採取手段27の実現例としては、文
献1において採用されているように必要な情報を採取し
て出力するルーチンをプログラム中に組み込む構成があ
る。しかし、プログラムの実行速度を低下させないよう
に、文献3において採用されているようなハードウェア
によって必要な情報を採取して出力する構成が望まし
い。文献3に記載のハードウェア構成を流用することも
可能であり、その場合は、採取した情報をバッファに蓄
積する代わりにバス22、23を通じて投機情報収集装
置21に出力する構成とする。勿論、他のハードウェア
構成を採用しても良い。
【0034】投機情報収集装置21は、MPU演算実行
部20と並行して動作するハードウェア機構であり、M
PU演算実行部20中のデータ採取手段27から投機指
示バス22を通じて出力されるデータを入力して性能上
問題となる投機の統計データを内部メモリ上に生成す
る。また、付加情報バス23を通じて出力される付加情
報も前記統計データの一部として内部メモリに蓄積す
る。内部メモリ上に生成された統計データは、結果アク
セスバス24を通じてMPU演算実行部20から読み取
られ、最適化手段28によるプログラムの最適化に供さ
れる。
【0035】図5を参照すると、投機情報収集装置21
の一例は、連想表30、投機確率データ更新回路43、
抽出部移行限度レジスタ44、入れ替え候補決定回路4
5、付加情報更新回路46、結果アクセス制御回路48
および投機指示処理回路49を備えている。
【0036】連想表30は、n+m個のエントリを有す
るフルアソシアティブ方式の連想メモリであり、そのう
ち連続するn個のエントリで抽出部連想メモリ31が構
成され、残りm個のエントリで巡回部連想メモリ32が
構成される。最終的に、抽出部連想メモリ31には実行
性能の低下に及ぼす影響が大きい上位n個の投機実行に
関する統計データが記憶される。巡回部連想メモリ32
は、統計的な信頼度が未だ充分でないか或いは信頼度が
充分であっても上位n個に入らない統計データを一時的
に記憶するために使用される。
【0037】連想表30の各エントリは連想キー部33
とデータ部とで構成され、データ部は投機確率データ部
34と順序/LRU情報部35と付加情報部36とに区
分されている。連想キー部33には投機命令アドレス3
7が登録され、投機確率データ部34には、当該投機命
令アドレスで一意に特定される投機実行の出現回数38
と、そのうちの失敗回数39と、出現回数38に対する
失敗回数39の比を示す失敗率40とが登録される。ま
た、順序/LRU部35には、抽出部連想メモリ31に
あっては順序情報が登録される。つまり、抽出部連想メ
モリ31の各エントリは、順序/LRU情報部35に登
録された順序情報によって、図6に示されるように、失
敗率40が大きい順に論理的に昇順に並べられる。な
お、図6において、61は、n個のエントリのうち最も
失敗率の小さいエントリ60を指し示すポインタであ
り、入れ替え候補決定回路45内に設けられる。
【0038】また、巡回部連想メモリ32では順序/L
RU情報部35にLRU情報が登録され、LRUアルゴ
リズムに従って最も長い間参照されていないエントリが
再利用される。つまり、m個のエントリから構成される
巡回部連想メモリ32は、図6に示されるように、最も
最近参照されたものから順に論理的に並べられ、最も長
い間参照されていないエントリ62を指し示すポインタ
63を有する入れ替え候補決定回路45が、そのポイン
タ63を用いてLRU方式で巡回部連想メモリ32中の
書き潰すエントリを決定する。
【0039】さらに付加情報部36には、投機実行中に
発生した巻き戻しのためのデータ量等の付加情報41が
登録される。付加情報部36は、現在までに失敗した全
ての投機実行にかかる付加情報の累積値(全累積値と称
す)と、現実行中の投機にかかる付加情報の累積値(現
累積値と称す)とを保持しており、現実行中の投機が失
敗完了したとき、現累積値が全累積値に加算される。
【0040】投機指示処理回路49は、投機指示バス2
2を通じてMPU演算実行部20に接続されている。デ
ータ採取手段27から投機指示バス22を通じて投機処
理の開始とその投機命令アドレス、または投機処理の終
了とその投機命令アドレスと完了種別が送られてくる毎
に、投機指示処理回路49はそれらを投機確率データ更
新回路43及び付加情報更新回路46に伝達すると同時
に、投機命令アドレスを投機命令アドレス線42に出力
する。投機命令アドレス線42は連想表30の各エント
リの連想キー部33に接続されており、各連想キー部3
3内の比較器において、当該連想キー部33に登録され
ている投機命令アドレスと投機命令アドレス線42上の
投機命令アドレスとが比較され、それぞれの比較結果が
比較結果線26を通じて投機確率データ更新回路43に
伝達される。
【0041】投機確率データ更新回路43は、連想表3
0の各エントリの投機確率データ部34を更新する回路
であり、比較結果線26により投機命令アドレスの一致
が報告されたエントリの投機確率データ部34中の出現
回数38、失敗回数39および失敗率40を更新する。
具体的には、投機指示処理回路49からの通知が投機処
理の開始である場合、出現回数38を+1する。また、
投機指示処理回路49からの通知が投機処理の終了であ
る場合、完了種別が失敗完了であるときは失敗回数39
を+1した後、成功完了であるときは失敗回数39を更
新せずに、失敗率40を計算し直して再登録する。そし
て、当該エントリを指定して入れ替え候補決定回路45
の入れ替え処理を起動する。比較結果線26の何れも一
致を示さない場合、つまり投機命令アドレス線42に出
力された投機命令アドレスが連想表30に未登録の場
合、投機確率データ更新回路43は、入れ替え候補決定
回路45に巡回部連想メモリ32中のエントリの確保要
求を出し、確保されたエントリのデータ部を初期化す
る。
【0042】入れ替え候補決定回路45は、投機確率デ
ータ更新回路43から入れ替え処理が起動されると、以
下の処理を行う。 (1)失敗率40が更新された今回のエントリが抽出部
連想メモリ31に含まれるエントリの場合、図6で説明
したように、抽出部連想メモリ31のm個のエントリが
失敗率40の値で論理的に昇順に並ぶように、必要に応
じて順序/LRU情報部35の順序情報およびポインタ
61を更新する。 (2)失敗率40が更新された今回のエントリが巡回部
連想メモリ32に含まれるエントリの場合、当該エント
リと抽出部連想メモリ31のエントリとを入れ替える必
要があるか否かを判定する。以下の条件を満足する場
合、入れ替えが必要と判定する。 (a)当該エントリの出現回数38が抽出部移行限度レ
ジスタ44に設定された閾値以上である。 (b)当該エントリの失敗率40が、抽出部連想メモリ
31の図6のポインタ61で指示される最小失敗率のエ
ントリ60の失敗率40以上である。そして、以上の
(a)、(b)の条件を満足する場合、当該エントリに
登録されている内容と、抽出部連想メモリ31の最小失
敗率のエントリ60に登録されている内容とを入れ替え
る。
【0043】ここで、条件(a)を定めた理由は、出現
回数38が或る値より少ない場合、その失敗率40は統
計的な信頼度が未だ充分でないためである。この条件を
加味することによって、統計的な信頼度が低い統計デー
タによって、統計的な信頼度が高い統計データが抽出部
連想メモリ31から追い出されてしまうことが防止され
る。
【0044】他方、入れ替え候補決定回路45は、投機
確率データ更新回路43からエントリの確保要求があっ
た場合、巡回部連想メモリ32のn個のエントリのうち
順序/LRU情報部35が最も長い間参照されていない
エントリ、つまり図6のポインタ63が指示するエント
リ62を追い出すエントリに決定する。そして、連想キ
ー更新指示線50によって当該エントリ62の連想キー
部33に今回の投機命令アドレスを登録し、また付加情
報更新回路46を通じて当該エントリ62の付加情報部
36を初期化した後、そのエントリ62を投機確率デー
タ更新回路43に通知する。
【0045】なお、入れ替え候補決定回路45は、連想
表30のエントリの連想キー部33に新たな投機命令ア
ドレスを登録する毎およびエントリの入れ替え毎に、付
加情報更新回路46内に設けられているエントリと投機
命令アドレスとの対応表(図示せず)を更新する。ま
た、エントリを実際に入れ替えたか否かにかかわらず、
入れ替え処理を終えた時点でその旨を付加情報更新回路
46に通知する。
【0046】付加情報更新回路46は、付加情報バス2
3を通じてMPU演算実行部20に接続されている。付
加情報バス23を通じてデータ採取手段27から投機命
令アドレスを伴った付加情報が送られてくる毎に、付加
情報更新回路46は、当該投機命令アドレスが登録され
ているエントリを前記対応表を参照して特定し、当該エ
ントリの付加情報部36における現累積値に付加情報を
累積する。そして、投機指示処理回路49から失敗完了
した投機命令アドレスが通知されてきた場合、入れ替え
候補決定回路45から入れ替え処理が終了した旨の通知
を受けた後に、失敗完了した投機命令アドレスが登録さ
れているエントリを前記対応表を参照して特定し、当該
エントリの付加情報部36における現累積値を全累積値
に加算する。
【0047】結果アクセス制御回路48は、結果アクセ
スバス24を通じてMPU演算実行部20に接続され、
連想表30の抽出部連想メモリ31とはデータ線および
アドレス線を含む結果アクセス線47で接続されてお
り、MPU演算実行部20からのアドレス指定で連想表
30の抽出部連想メモリ31の各エントリの内容を読み
出せるようになっている。また、抽出部移行限度レジス
タ44にも接続されており、MPU演算実行部20から
の抽出移行限度レジスタ44へ事前に閾値を設定できる
ようになっている。
【0048】次に投機情報収集装置21の全体的な動作
の流れについて、図7および図8のフローを参照して以
下説明する。
【0049】MPU演算実行部20のデータ採取手段2
7から投機指示バス22を通じて投機処理の開始とその
投機命令アドレスが送られてくると(S1)、投機指示
処理回路49によって当該投機命令アドレスで連想表3
0の連想キー部33が検索される(S2)。当該投機命
令アドレスを連想キー部33に持つエントリが存在しな
かった場合(S3でNO)、入れ替え候補決定回路45
は、巡回部連想メモリ32のエントリのうち最も長い間
参照されていないエントリ62を書き潰すエントリに決
定し(S4)、当該エントリが初期化される(S5)。
つまり、入れ替え候補決定回路45によって今回の投機
命令アドレスが当該エントリ62の連想キー部33に登
録され、付加情報更新回路46によって付加情報部36
が初期化され、投機確率データ更新回路43によって当
該エントリ62の投機確率データ部35における出現回
数38に値「1」、失敗回数39に値「0」、失敗率4
0に値「0」がそれぞれ登録される。そして、入れ替え
候補決定回路45によって当該エントリ62の順序/L
RU情報部35のLRU情報が更新される(S8)。
【0050】他方、当該投機命令アドレスを連想キー部
33に持つエントリが既に存在していた場合(S3でY
ES)、投機確率データ更新回路43は、当該エントリ
の投機確率データ部34における出現回数38を+1す
る(S6)。次に、当該エントリが巡回部連想メモリ3
2のエントリであった場合(S7でYES)、入れ替え
候補決定回路45により当該エントリの順序/LRU情
報部35のLRU情報を更新する(S8)。
【0051】その後、当該エントリに登録された投機命
令アドレスを伴う付加情報が付加情報バス23を通じて
MPU演算実行部20のデータ採取手段27から送られ
てくる毎に、付加情報更新回路46は、当該投機命令ア
ドレスを持つエントリの付加情報部36における現累積
値に今回の付加情報を累積する処理を行う。
【0052】次に、MPU演算実行部20のデータ採取
手段27から投機指示バス22を通じて投機処理の終了
とその投機命令アドレス及び完了種別が送られてくると
(S11)、投機指示処理回路49によって当該投機命
令アドレスで連想表30の連想キー部33が検索される
(S12)。当該投機命令アドレスを持つエントリは投
機開始時点で必ず確保されており、そのLRU情報も更
新されているため、巡回部連想メモリ32のエントリ数
mを或る数以上に設定しておくことで、当該検索は必ず
成功する。次に投機確率データ更新回路43によって、
完了種別が失敗完了である場合に限って、検索されたエ
ントリの失敗回数39を+1した後、失敗率40を更新
する(S13)。以降は、当該エントリが抽出部連想メ
モリ31のエントリか、巡回部連想メモリ32のエント
リかで処理が分かれる。
【0053】抽出部連想メモリ31のエントリであった
場合(S14でYES)、入れ替え候補決定回路45
は、当該エントリの失敗率40が抽出部連想メモリ31
における1つ上位のエントリの失敗率40を超えたか否
かを判定し(S15)、超えていれば、1つ上位のエン
トリと当該エントリの順序を入れ替える(S16)。
【0054】巡回部連想メモリ32のエントリであった
場合(S14でNO)、入れ替え候補決定回路45は、
当該エントリの出現回数38が抽出部移行限度レジスタ
44に設定された閾値を超えたか否かを判定し(S1
7)、超えていなければ、当該エントリのLRU情報を
更新して(S18)、処理を終える。超えていれば、当
該エントリの失敗率40が抽出部連想メモリ31の最下
位失敗率を超えたか否かを調べ(S19)、超えていな
ければ、当該エントリのLRU情報を更新して(S1
8)、処理を終える。最下位失敗率を超えていた場合
は、当該エントリと抽出部連想メモリ31の最下位失敗
率のエントリとを入れ替え(S20)、巡回部連想メモ
リ32に移行したエントリのLRU情報を更新し(S2
1)、処理を終える。
【0055】また、投機処理が失敗完了した場合、付加
情報更新回路46は、失敗完了した投機命令アドレスを
持つエントリにおける付加情報部36の現累積値を全累
積値に加算し、現累積値を0に初期化する。
【0056】以上のような動作が投機情報収集装置21
で行われることにより、最終的に、抽出部連想メモリ3
1には失敗率が大きい上位n個の投機命令アドレス、そ
の出現回数、失敗回数、失敗率、付加情報が残ることに
なる。
【0057】次に、投機情報収集装置21の抽出部連想
メモリ31に収集された統計データを利用して性能チュ
ーニングを行う最適化手段28について説明する。
【0058】図9に最適化手段28のシステム運用上の
位置付けと処理の概略を示す。ソースプログラム又はそ
の中間コード200は、既存のコンパイラ201によっ
てコンパイルされ、実行モジュール202が生成され
る。このとき、プログラムの字面の解析や更にプロファ
イル203を使用した解析によって確実性の高い投機が
予測され、プログラムの最適化が実施される。プロファ
イルベースの最適化技術を記載した文献として例えば特
開平8−241198号公報(以下、文献5と称す)が
ある。同文献5では、ソースプログラムからプロファイ
ラ用実行形式オブジェクトを生成して仮実行することで
プロファイル203を生成し、このプロファイル203
を参照してソースプログラムを再コンパイルすることで
最適化を実施する。しかし、このようなプロファイルベ
ースの最適化を行っても常に最適な結果が得られるわけ
ではない。その理由は、実行モジュール202を使った
実運用時にはユーザ毎に様々な種類の実データ204が
使われるが、プロファイル生成のための仮実行時にその
ような現実的かつバラエティを持ったデータを用意する
ことは困難であり、それ故、生成されるプロファイル2
03が実運用とは相違するからである。
【0059】そこで本実施例では、実データ204を使
った実行モジュール202の実運用時に(205)、前
述したように投機情報収集装置21で投機情報を収集
し、この収集された投機情報に基づいて最適化手段28
が再びプログラムの最適化を行うことで、各ユーザの実
環境に応じた動的な最適化を実現している。つまり、最
適化手段28は、投機情報収集装置21の抽出部連想メ
モリ31を結果アクセスバス24および結果アクセス制
御回路48を通じてアクセスし、失敗率の高い上位n個
の投機事象に関する統計データを取得し(206)、こ
の取得した統計データを参照してソース又は中間コード
200の再コンパイルを行って最適化をやり直した実行
モジュール202を生成する。最適化手段28による最
適化のやり直しは、実行モジュール202の実行が終了
する毎に自動的に実施しても良く、ユーザからその旨の
指示が入力された時に実施しても良い。
【0060】本実施例では、失敗率の高い上位n個の投
機事象に関する統計データが実行モジュール202の実
行終了時点で既に得られているため、従来技術のように
最適化時に各投機事象の統計データの中から失敗率の高
い投機事象を選別する処理は不要である。また、順序/
LRU情報部35の順序情報によって失敗率のより高い
ものから順に整列しているため、選別した投機事象を失
敗率の高い順に並べ替える処理も不要である。従って、
たとえば失敗率のより高い投機事象から順に、その失敗
率40が或る基準値以上であれば最適化をやり直してい
き、失敗率40が前記基準値未満の投機事象に至った時
点で最適化すべき投機事象の終了と判定するような効率
的な処理も可能である。
【0061】また、本実施例では、投機失敗毎の付加情
報の累積値が付加情報部36の全累積値に蓄積されてい
るため、全累積値を失敗回数39で割ることにより、失
敗1回当たりの無駄なコストを見積もることができる。
このため、失敗率40が或る基準値以上であるが、投機
やり直しのコストが低い投機事象は性能上問題が少ない
として、再最適化の対象から除外するといった処理を、
付加情報に基づいて実施することが可能である。
【0062】次に最適化手段28による再最適化の具体
例を説明する。
【0063】(1)制御投機の再最適化 例えばプロファイル203を用いたコンパイラ201の
最適化処理によって図2および図3に示した投機実行を
行う実行モジュール202が生成されたが、実データ2
04を用いた実運用時に投機的スレッド生成命令11の
失敗率が或る基準値以上で且つ投機やり直しのコストも
或る基準値以上であるとの統計データが投機情報収集装
置21で収集されたとする。この場合、最適化手段28
は、投機的スレッド生成命令11の代わりに、スレッド
#3を生成する投機的スレッド生成命令を用いることに
より、スレッド#1、#2の投機実行に代えてスレッド
#3を投機実行するよう最適化する。
【0064】(2)データ投機の再最適化 例えばプロファイル203を用いたコンパイラ201の
最適化処理によって図10の左側に示されるように、ス
レッド#1のスレッド生成命令210で生成されるスレ
ッド#2で2つの投機的メモリロード命令212、21
3が実行されるように最適化された実行モジュール20
2が生成されたが、実データ204を用いた実運用時に
投機的メモリロード命令213の失敗率が或る基準値以
上であるとの統計データが統計情報収集装置21で収集
されたとする。また、MPU演算実行部20は、ハード
ウェア量を削減するために投機状態にあるスレッド#2
における各メモリロード時点の実行状態を保存するので
はなく、最初のロードを実行する投機的メモリロード命
令212を実行する直前の実行状態のみを保存してお
き、若し、後続の投機的メモリロード命令213の投機
に失敗した場合には、最初の投機的メモリロード命令2
12まで巻き戻し、投機的メモリロード命令213直前
までの命令を再実行することで投機的メモリロード命令
213の状況に巻き戻す手法を採用しているものとす
る。そうすると、投機的メモリロード命令212と投機
的メモリロード命令213との間に多くの命令が介在す
る場合、投機的メモリロード命令213の失敗完了によ
る投機やり直しコストは大きくなる。
【0065】この場合、最適化手段28は、スレッド生
成命令210の挿入を取り止め、スレッド#2で行った
処理をスレッド#1の後に逐次に行うことで投機実行を
無くす選択も可能であるが、そうするとスレッド#2の
投機的メモリロード命令213以前の処理もスレッド#
1と並列に実行できず、性能が返って低下する場合があ
る。そこで最適化手段28は、投機的メモリロード命令
212が失敗率の上位n個に入っていなければ、スレッ
ド#1とスレッド#2の並列処理が性能向上に寄与して
いると判断し、図10の右側に示すように、失敗率の高
い投機的メモリロード命令213の前にスレッド生成命
令214を挿入し、投機的メモリロード命令213を新
たに生成されたスレッド#3の先頭部分に移動するよう
な再最適化を実施する。この再最適化後のプログラムで
も実データ204が変わらなければ投機的メモリロード
命令213の失敗率は高いままであるが、投機的メモリ
ロード命令213がスレッド#3の最初の投機的メモリ
ロード命令として実行されるため、投機失敗時の巻き戻
し量が減り、結果として性能が向上する。
【0066】なお、次以降の実運用において投機的メモ
リロード命令213が高い失敗率として検出された場
合、巻き戻し量が少ないことから再最適化対象から除外
されるか、同じような再最適化が繰り返される。このよ
うな同じ再最適化の繰り返しを防止するには、コンパイ
ラ201及び最適化手段28がどの箇所にどのような理
由でどのような最適化を実施したかをデータベースに記
録しておき、再最適化時に既に対策済か否かを調べるよ
うにすれば良い。
【0067】以上のように本実施例の投機情報収集装置
21は、失敗率が大きく且つ統計的な信頼度が基準を満
たす上位n個の投機事象の統計データを記憶する抽出部
連想メモリ31と、統計的な信頼度が未だ基準を満たさ
ないか或いは上位n個に入らない投機事象の統計データ
を一時的に記憶する巡回部連想メモリ32とを備え、発
生した投機事象に関するデータをMPU演算実行部20
から受け取ったとき、当該投機事象の統計データが抽出
部連想メモリ31および巡回部連想メモリ32の何れに
も記憶されていないときは巡回部連想メモリ32に空き
エントリを確保して当該投機事象の統計データを登録す
る。このように巡回部連想メモリ32のエントリが異な
る投機事象の統計データ格納用に再利用されるため、投
機事象のの中には巡回部連想メモリ32に一旦登録され
た後に追い出された結果、失敗回数が正確に計数されな
いものが出てくる。しかし、巡回部連想メモリ32から
追い出される可能性の高い投機事象は出現回数が基準以
下か或いは実行回数の少ないものが殆どであり、出現回
数が多く且つ失敗率が高い投機事象は巡回部連想メモリ
32から追い出されることなく抽出部連想メモリ31へ
と移っていく。この結果、抽出部連想メモリ31と巡回
部連想メモリ32のエントリの総数(n+m)が、投機
事象の数(投機命令の数)より少ない場合であっても、
失敗率が高い上位n個の投機事象の統計データをほぼ確
実に収集することができる。これによって、性能改善に
役立つ統計データを少ないメモリ量で収集することが可
能となる。
【0068】抽出部連想メモリ31のエントリ数nおよ
び巡回部連想メモリ32のエントリ数mを余り少なくす
ると、メモリ量は削減できるが収集漏れの危険性が高ま
る。このため、n、mを最低どの程度の数にすべきかは
予備的な実験によって定めるのが望ましい。
【0069】エントリ数n、mの下限が決まると、メモ
リ量は1エントリ当たりの容量×エントリ数で定まる。
メモリ量をより削減するには、1エントリ当たりの容量
を削減する必要がある。以下では、1エントリ当たりの
容量を、失敗率40に必要なビット数を削減することで
実現する方法を説明する。
【0070】今、出現回数38および失敗回数39を3
2ビットのデータとして連想表30に格納するものとす
れば、失敗回数39を出現回数38で割って求められる
失敗率40の取り得る値は、2の−32乗から、1.0
までの小数値となる。これをそのまま失敗率40に登録
すると、多くのビット数が必要である。そこで、失敗率
40は、連想表30のエントリの入れ替えが大まかに決
定できれば良いこと、値のダイナミックレンジは広いも
のの有効桁数はそれほど必要でないことに着目し、失敗
率40を図11に示すような短縮浮動小数フォーマット
で表現し、その仮数部2進表記51の4ビットを仮数部
53、その指数部2進表記52の5ビットを指数部54
として、合計9ビットで失敗率40に記録する。これに
より、1エントリ当たりのメモリ量、ひいては連想表3
0全体の容量を削減できる。
【0071】図12に、図11のような短縮浮動小数フ
ォーマットで表現された失敗率40を計算する方法の一
例を示す。図12において、式90は失敗率40の計算
式であり、各値の表現形式を添字形式で併記してある。
失敗率40は以下のようにして計算される。
【0072】図12の(1)に示されるように、32ビ
ット符号無し整数で表現された失敗回数の最上位の非零
ビットに続くLSB側の4ビットを仮数部S91とし
て、同じく32ビット符号無し整数で表現された出現回
数の最上位の非零ビットに続くLSB側の4ビットを仮
数部T93としてそれぞれ抜き出す。同時に、失敗回数
と出現回数の最上位の非零ビットのずれ量を仮り指数部
Pとする(92)。
【0073】図12の(2)に示されるように、仮数部
S、Tの除算を行い、結果の仮数部2進表記51を得
る。Pに対しては、仮り指数部Pの補正分94を減算
し、結果の指数部2進表記52を得る。仮数部の除算9
5は、例えば以下のように2つの小さなテーブルの参照
と加算で高速に実行できる。 (a)第1のテーブルの参照による上位除算結果Aの算
出(96)および第2のテーブルの参照による上位除算
結果Bの算出(97)。ここで、第1のテーブルは96
の計算用のデータを保持するテーブル、第2のテーブル
は97の計算用のデータを保持するテーブルである。 (b)上記の結果A、Bの加算による仮り仮数部Rの算
出(98)。 (c)上記の結果Rの最上位ビットR0 が0の場合は、
仮り指数部Pの補正分94から1を減算する。
【0074】(第2実施例)ここでも、第1実施例と同
じく、投機実行を行うプロセッサの実運用時に、そのプ
ロセッサの処理と並行して性能上問題となる投機の統計
データを収集し、この収集した統計データに基づいて性
能チューニングを行うシステムに本発明を適用した実施
例を取り上げる。第1実施例との相違点は、MPU演算
実行部20が本来有する命令キャッシュを失敗率の格納
用に活用することにより、低コストで、連想表30の巡
回部連想メモリ32のエントリ数mを等価的に大きくで
きるようにした点にある。
【0075】図13に本実施例を適用したプロセッサ2
5の構成例を示す。図4との相違点は、MPU演算実行
部20内に、命令キャッシュ130に対する失敗率の登
録などを制御する簡易失敗率更新回路131と限度レジ
スタ132とを設け、管理失敗率更新回路131を転送
バス133を通じて投機情報収集装置21に接続した点
である。投機情報収集装置21の構成は後述する一部の
機能を除いて図5に示されるものと同じであり、転送バ
ス133は投機情報収集装置21内部では投機確率デー
タ更新回路43に接続される。
【0076】図14を参照すると、命令キャッシュ13
0は、命令キャッシュデータアレイ100と命令キャッ
シュタグアレイ101とから構成され、命令キャッシュ
タグアレイ101の各命令キャッシュライン102i〜
102k毎に、投機事象の簡易失敗率104i〜104
kを登録する領域を新たに付加してある。第1実施例で
は、新たに発生した投機事象と同じ投機命令アドレスを
持つエントリが連想表30に存在しなかった場合、巡回
部連想メモリ32のエントリを直ちに再利用したが、本
実施例では、当該投機命令アドレスで特定される投機命
令をキャッシュしている命令キャッシュライン102の
簡易失敗率104を当該投機命令が失敗完了した場合に
更新し、簡易失敗率104が限度レジスタ132に予め
設定された閾値を超えた時点で、巡回部連想メモリ32
にエントリを確保して統計データを登録する。
【0077】簡易失敗率更新回路131は、同じ命令キ
ャッシュライン102に目的とする投機命令とは別の投
機命令がキャッシュされていても、そのラインの簡易失
敗率104を更新する。このことを簡易失敗率のエイリ
アスと呼ぶ。図15に簡易失敗率104の遷移を示す。
簡易失敗率104は0からNまでの正の整数値をとり、
当該命令キャッシュライン102がリフィルされたと
き、及び当該命令キャッシュライン102にキャッシュ
されている何れかの投機命令についてのエントリが巡回
部連想メモリ32に確保されたときに、簡易失敗率更新
回路131によって0にリセットされる。以降、当該命
令キャッシュライン102にキャッシュされている投機
命令のアドレスが投機情報収集装置21から転送バス1
33を通じて伝達される毎に、つまり、連想表30に登
録されていない当該キャッシュライン中の投機命令が失
敗完了する毎に+1される。但し、最大値Nになるとそ
れ以上増えない(飽和加算)。
【0078】次に本実施例の投機情報収集装置21の全
体的な動作の流れについて、図16ないし図18のフロ
ーを参照して、第1の実施例との相違点を中心に以下説
明する。
【0079】MPU演算実行部20のデータ採取手段2
7から投機指示バス22を通じて投機処理の開始とその
投機命令アドレスが送られてくると(S1)、投機指示
処理回路49によって当該投機命令アドレスで連想表3
0の連想キー部33が検索され(S2)、エントリが既
に存在していた場合(S3でYES)、第1実施例と同
様の動作が行われる(S6〜S8)。他方、当該投機命
令アドレスを連想キー部33に持つエントリが存在しな
かった場合(S3でNO)、第1実施例と異なり、処理
を終了する。
【0080】その後、投機命令アドレスを伴う付加情報
が付加情報バス23を通じてMPU演算実行部20のデ
ータ採取手段27から送られてくる毎に、付加情報更新
回路46は、当該投機命令アドレスを持つエントリの付
加情報部36における現累積値に今回の付加情報を累積
する処理を行う。但し、当該投機命令アドレスを持つエ
ントリが存在しなければ今回の付加情報は廃棄する。
【0081】次に、MPU演算実行部20のデータ採取
手段27から投機指示バス22を通じて投機処理の終了
とその投機命令アドレス及び完了種別が送られてくると
(S11)、投機指示処理回路49によって当該投機命
令アドレスで連想表30の連想キー部33が検索される
(S12)。次に投機確率データ更新回路43は、当該
投機命令アドレスを持つエントリが存在したか否かを判
定し(S31)、存在していれば、第1実施例と同様の
動作が実施される(S13〜S21)。他方、存在して
いなかった場合、投機確率データ更新回路43は、失敗
完了であったか否かを調べ(S32)、失敗完了でなく
成功完了であれば、処理を終了する。
【0082】失敗完了であった場合、投機確率データ更
新回路43は、今回の投機命令アドレスを転送バス13
3を通じて簡易失敗率更新回路131に転送する。簡易
失敗率更新回路131は、転送された投機命令アドレス
で命令キャッシュ130を検索し、その投機命令をキャ
ッシュしている命令キャッシュライン102の簡易失敗
率104を+1する(S33)。そして、その簡易失敗
率104が限度レジスタ132に設定された閾値を超え
たか否かを調べ(S34)、超えていなければ処理を終
了する。超えていれば、当該簡易失敗率140を0に初
期化する(S35)。この後、簡易失敗率更新回路13
1は、当該投機命令アドレスを連想表30に登録すべき
指示データを転送バス133を通じて投機確率データ更
新回路43に転送する。
【0083】投機確率データ更新回路43は、入れ替え
候補決定回路45によって、巡回部連想メモリ32のエ
ントリのうち最も長い間参照されていないエントリ62
を書き潰すエントリに決定させる(S36)。そして、
当該エントリを初期化する(S37)。つまり、入れ替
え候補決定回路45によって今回の投機命令アドレスが
当該エントリ62の連想キー部33に登録され、付加情
報更新回路46によって付加情報部36が初期化され、
投機確率データ更新回路43によって当該エントリ62
の投機確率データ部35における出現回数38に値
「1」、失敗回数39に値「1」、失敗率40に値
「1」がそれぞれ登録される。そして、入れ替え候補決
定回路45によって当該エントリ62の順序/LRU情
報部35のLRU情報が更新される(S38)。
【0084】本実施例では、簡易失敗率のエイリアスが
存在するものの、判断S32があるため、投機失敗を起
こさない事象は、エイリアスにより巡回部連想メモリ3
2へ登録されることはない。投機失敗率が低い投機事象
Aが投機失敗率が高い投機事象Bとのエイリアスによ
り、巡回部連想メモリ32へ登録される可能性はある
が、登録されたとしても投機失敗率が高い投機事象Bが
巡回部連想メモリ32へ登録されない限り簡易失敗率1
04の更新は続くため、いずれは投機失敗率が高い投機
事象Bも巡回部連想メモリ32へ登録される。そして、
巡回部連想メモリ32へ移行した投機失敗率の高い投機
事象Bは、判断S31により簡易失敗率104の更新に
寄与することはない。従って、これ以降、投機失敗率が
低い投機事象AがLRUアルゴリズムによって巡回部連
想メモリ32より除去された後は、投機失敗率が低い投
機事象Aはエイリアスによって巡回部連想メモリ32に
再度登録されることはない。
【0085】但し、投機失敗率は低いものの非常に頻繁
に実行される投機事象が、簡易失敗率のエイリアスによ
り巡回部連想メモリ32のエントリに登録されると、該
エントリはLRUアルゴリズムにより掃き出し対象には
選ばれず残留するため、巡回部連想メモリ32の利用率
を下げてしまう。これを防止するには、巡回部連想メモ
リ32のエントリの中に、出現回数38が抽出部移行限
度レジスタ44の値を超え、なおかつ、失敗率40が抽
出部末端エントリ60の失敗率40の一定比率に満たな
いエントリがあれば、当該エントリを、最も長い間更新
されていないエントリ(巡回部末端エントリ62)とし
て登録する機能を、入れ替え候補決定回路45に設けれ
ば良い。
【0086】第1実施例においては巡回部連想メモリ3
2のエントリ数mを小さく設定すると、同一の投機命令
Aが再び実行される前に、別な投機命令が次々に実行さ
れた場合、当該投機命令Aが再び実行された時点では既
に当該投機命令Aが巡回部連想メモリ32より掃き出さ
れてしまう可能性がある。こうなると、当該投機命令A
の統計データはいつまでたっても初期値付近に留まり、
統計データの収集が困難になる。これを改善するには、
巡回部連想メモリ32のエントリ数mを大きくすること
であるが、連想表30のエントリ数の増大はハードウェ
ア的にコストが大きい。第2の実施例によれば、MPU
演算実行部20が本来有する命令キャッシュ130を一
部拡張するだけで巡回部連想メモリ32のエントリ数を
等価的に増大でき、コストの上昇を抑えることが可能で
ある。
【0087】以上本発明について幾つかの実施例を挙げ
て説明したが、本発明は以上の実施例にのみ限定され
ず、その他各種の付加変更が可能である。以下ではその
変形例について説明する。
【0088】前記各実施例では、連想表30にフルアソ
シアティブ方式を用いる方式を説明したが、連想表30
には、通常のキャッシュと同様に、セットアソシアティ
ブ方式やダイレクトマップ方式を用いることが可能であ
る。
【0089】前記各実施例では、巡回部連想メモリ32
の入れ替えに、LRUを用いる方法について説明した
が、巡回部連想メモリ32の入れ替えには、通常のキャ
ッシュと同様に、疑似LRU、FIFO順序、ランダム
リプレースを用いることが可能である。
【0090】前記各実施例では、巡回部連想メモリ32
のエントリが抽出部連想メモリ31の末端エントリと比
較される前提条件として、出現回数38が抽出部移行限
度レジスタ44の値を超えている条件を設定したが、こ
の条件を省略して、常に巡回部連想メモリ32のエント
リを抽出部連想メモリ31の末端エントリと比較する実
現法も可能である。また、出現回数38が抽出部移行限
度レジスタ44の値を超えているという条件に代えて、
失敗回数39が或る値を超えているという条件を前提条
件にしても良い。更に付加情報41で判明する巻き戻し
に要するコストも加味するようにしても良い。
【0091】前記各実施例では、抽出部連想メモリ31
のエントリ間の入れ替えを、失敗率40の比較のみで行
う例を示したが、投機事象の性能への影響としては、失
敗率40に付加情報41で判明する巻き戻しに要するコ
ストも加味した方が有効性が高まるため、例えば、付加
情報41の全累積値を失敗回数39で割って得た失敗1
回当たりのコストに失敗率を乗じた値を比較するように
しても良い。
【0092】前記第1実施例において、連想表30から
巡回部連想メモリ32を削除し、前記第2実施例で使っ
た命令キャッシュ130へ簡易失敗率を登録する機構
を、巡回部連想メモリ32の代わりに用いることも可能
である。この場合の処理は以下のようになる。先ず、M
PU演算実行部20のデータ採取手段27から投機指示
バス22を通じて投機処理の開始とその投機命令アドレ
スが送られてきたときの動作は、第2実施例における図
16と同様の動作となる。他方、MPU演算実行部20
のデータ採取手段27から投機指示バス22を通じて投
機処理の終了とその投機命令アドレス及び完了種別が送
られてきた場合は、図19に示されるような動作が行わ
れる。
【0093】先ず、投機指示処理回路49によって当該
投機命令アドレスで連想表30の連想キー部33が検索
され(S12)、次に投機確率データ更新回路43によ
って、当該投機命令アドレスを持つエントリが存在した
か否かが判定される(S31)。存在していれば、第1
実施例と同様に当該エントリの失敗回数39、失敗率4
0を更新する(S13)。次に、当該エントリの失敗率
40が抽出部連想メモリ31の1つ上位の失敗率を超え
たか否かを調べ(S15)、超えていればエントリの入
れ替えを行う(S16)。他方、当該投機命令アドレス
を持つエントリが存在していなかった場合(S31でN
O)、投機確率データ更新回路43により失敗完了であ
ったか否かを調べ(S32)、失敗完了でなく成功完了
であれば、処理を終了する。失敗完了であった場合は、
投機確率データ更新回路43により今回の投機命令アド
レスを転送バス133を通じて簡易失敗率更新回路13
1に転送する。簡易失敗率更新回路131は、転送され
た投機命令アドレスで命令キャッシュ130を検索し、
その投機命令をキャッシュしている命令キャッシュライ
ン102の簡易失敗率104を+1する(S33)。そ
して、その簡易失敗率104が限度レジスタ132に設
定された閾値を超えたか否かを調べ(S34)、超えて
いなければ処理を終了する。超えていれば、当該簡易失
敗率140を0に初期化する(S35)。この後、簡易
失敗率更新回路131は、当該投機命令アドレスを連想
表30に登録すべき旨の指示データを転送バス133を
通じて投機確率データ更新回路43に転送する。投機確
率データ更新回路43は、入れ替え候補決定回路45に
よって、抽出部連想メモリ31の末端エントリ60を書
き潰すエントリに決定し、当該エントリを初期化する
(S42)。つまり、入れ替え候補決定回路45によっ
て今回の投機命令アドレスが当該エントリ60の連想キ
ー部33に登録され、付加情報更新回路46によって付
加情報部36が初期化され、投機確率データ更新回路4
3によって当該エントリ60の投機確率データ部35に
おける出現回数38に値「1」、失敗回数39に値
「1」、失敗率40に値「1」がそれぞれ登録される。
【0094】前記第1実施例において、連想表30へ登
録する投機事象を事前に絞り込むようにして、連想表3
0から巡回部連想メモリ32を削除することも可能であ
る。連想表30へ登録する投機事象を事前に絞り込む方
法としては、ハードウェア的な方法が利用できる他、失
敗率が高いと事前に予想される投機命令だけにプレフィ
ックス命令で採取の対象であることをプログラム上明示
するソフトウェア的な方法も利用できる。この場合、限
定された投機事象のデータだけがデータ採取手段27か
ら投機情報収集装置21に出力されることになる。処理
は以下のようになる。先ず、MPU演算実行部20のデ
ータ採取手段27から投機指示バス22を通じて投機処
理の開始とその投機命令アドレスが送られてきたときの
動作は、第2実施例における図16と同様の動作とな
る。他方、MPU演算実行部20のデータ採取手段27
から投機指示バス22を通じて投機処理の終了とその投
機命令アドレス及び完了種別が送られてきた場合は、図
20に示されるような動作が行われる。第19図と相違
し、失敗完了であった場合に、抽出部連想メモリ31の
末端エントリ60を書き潰すエントリに決定し、当該エ
ントリを初期化する(S42)。つまり、入れ替え候補
決定回路45によって今回の投機命令アドレスが当該エ
ントリ60の連想キー部33に登録され、付加情報更新
回路46によって付加情報部36が初期化され、投機確
率データ更新回路43によって当該エントリ60の投機
確率データ部35における出現回数38に値「1」、失
敗回数39に値「1」、失敗率40に値「1」がそれぞ
れ登録される。この実施例では収集精度が極端に低下す
るが、失敗率が100%に近い投機事象の幾つかだけを
検出するには充分役立つ。
【0095】以上の実施例は、投機実行を行うプロセッ
サの実運用時に、そのプロセッサの処理と並行して性能
上問題となる投機の統計データを収集し、この収集した
統計データに基づいて性能チューニングを行うシステム
に本発明を適用した。それ以外に、キャッシュミス率の
高いメモリ領域の統計データを収集し、この収集した統
計データに基づいて性能チューニングを行うシステムな
ど、その他各種の統計データの収集、性能チューニング
に本発明は適用可能である。
【0096】
【発明の効果】以上説明したように本発明によれば、キ
ャッシュミス率の高いメモリ領域や失敗確率の高い投機
命令などの性能改善に役立つ統計データを、実データを
使用した実運用時に、迅速かつ低コストで求めることが
できる。また収集した統計データに基づく動的な最適化
のやり直しが可能となる。
【図面の簡単な説明】
【図1】投機実行を説明するためのプログラムの制御フ
ロー図である。
【図2】投機が成功する場合の動作例を示す図である。
【図3】投機が失敗する場合の動作例を示す図である。
【図4】本発明を適用したプロセッサの第一の実施例を
示すブロック図である。
【図5】投機情報収集装置の一実施例の内部構成を示す
ブロック図である。
【図6】連想表を構成する抽出部連想メモリおよび巡回
部連想メモリにおけるエントリの整列方法の説明図であ
る。
【図7】第一の実施例の投機命令実行開始時点における
投機情報収集装置の動作例を示すフロー図である。
【図8】第一の実施例の投機命令実行終了時点における
投機情報収集装置の動作例を示すフロー図である。
【図9】最適化手段のシステム運用上の位置付けと処理
の概略を示す図である。
【図10】再最適化の一例の説明図である。
【図11】失敗率を表現する短縮浮動小数フォーマット
を示す図である。
【図12】失敗率の計算方法の一例を示す図である。
【図13】本発明を適用したプロセッサの他の例を示す
ブロック図である。
【図14】簡易失敗率を格納するように拡張された命令
キャッシュの構成図である。
【図15】簡易失敗率の遷移の説明図である。
【図16】第二の実施例の投機命令実行開始時点におけ
る投機情報収集装置の動作例を示すフロー図である。
【図17】第二の実施例の投機命令実行終了時点におけ
る投機情報収集装置の動作例を示すフロー図である。
【図18】第二の実施例の投機命令実行終了時点におけ
る投機情報収集装置の動作例を示すフロー図である。
【図19】投機命令実行終了時点における投機情報収集
装置の別の動作例を示すフロー図である。
【図20】投機命令実行終了時点における投機情報収集
装置の更に別の動作例を示すフロー図である。
【図21】プロセッサの各種状態をハードウェア的に採
取するサンプリング機構の一例を示すブロック図であ
る。
【符号の説明】
20…MPU演算実行部 21…投機情報収集装置 22…投機指示バス 23…付加情報バス 24…結果アクセスバス 25…プロセッサ 26…比較結果線 27…データ採取手段 28…最適化手段 30…連想表 31…抽出部連想メモリ 32…巡回部連想メモリ 33…連想キー部 34…投機確率データ部 35…順序/LRU情報部 36…付加情報部 38…出現回数 39…失敗回数 40…失敗率 41…付加情報 42…投機命令アドレス線 43…投機確率データ更新回路 44…抽出部移行限度レジスタ 45…入れ替え候補決定回路 46…付加情報更新回路 47…結果アクセス線 48…結果アクセス制御回路 49…投機指示処理回路 50…連想キー更新指示線

Claims (15)

    【特許請求の範囲】
  1. 【請求項1】 プロセッサで発生した事象の統計データ
    を収集する装置において、 事象の統計データのうちプロセッサの性能低下に及ぼす
    影響が大きい上位一定数の事象の統計データを記憶する
    抽出部メモリと、 実運用時に発生した事象に関するデータをプロセッサか
    ら受け取り、現在までに計算された事象の統計データの
    うちプロセッサの性能低下に及ぼす影響が大きい上位一
    定数の事象の統計データが前記抽出部メモリに残るよう
    に事象の統計データの更新及び事象の統計データの入れ
    替えを行う制御手段とを含むことを特徴とするプロセッ
    サ性能データ収集装置。
  2. 【請求項2】 プロセッサで発生した事象の統計データ
    を収集する装置において、 プロセッサの性能低下に及ぼす影響が大きく且つ統計的
    な信頼度が基準を満たす上位一定数の事象の統計データ
    を記憶する抽出部メモリと、 統計的な信頼度が未だ基準を満たさないか或いは前記上
    位一定数に入らない事象の統計データを一時的に記憶す
    る巡回部メモリと、 実運用時に発生した事象に関するデータをプロセッサか
    ら受け取り、現在までに計算された事象の統計データの
    うちプロセッサの性能低下に及ぼす影響が大きい上位一
    定数の事象の統計データが前記抽出部メモリに残るよう
    に、事象の統計データの更新、前記巡回部メモリと前記
    抽出部メモリ間での事象の統計データの入れ替え及び前
    記抽出部メモリの事象の統計データの入れ替えを行う制
    御手段とを含むことを特徴とするプロセッサ性能データ
    収集装置。
  3. 【請求項3】 前記制御手段は、前記プロセッサから受
    け取った事象の統計データが前記抽出部メモリ及び前記
    巡回部メモリの何れにも記憶されていないときは前記巡
    回部メモリに空きエントリを確保して当該事象の統計デ
    ータを登録し、前記巡回部メモリに記憶されているとき
    は該記憶されている事象の統計データを更新すると共に
    必要に応じて前記巡回部メモリと前記抽出部メモリとの
    間で事象の統計データの入れ替えを行い、前記抽出部メ
    モリに記憶されているときは該記憶されている事象の統
    計データを更新することを特徴とする請求項2記載のプ
    ロセッサ性能データ収集装置。
  4. 【請求項4】 プロセッサで発生した事象の統計データ
    を収集する装置において、 プロセッサの性能低下に及ぼす影響が大きく且つ統計的
    な信頼度が基準を満たす上位一定数の事象の統計データ
    を記憶する抽出部メモリと、 統計的な信頼度が未だ基準を満たさないか或いは前記上
    位一定数に入らない事象の統計データを一時的に記憶す
    る巡回部メモリと、 前記巡回部メモリへの登録事象を絞り込むために前記抽
    出部メモリおよび前記巡回部メモリの何れにも登録され
    ていない事象にかかる簡易統計データを保持する、前記
    プロセッサにおける命令キャッシュの各キャッシュライ
    ン毎の領域と、 実運用時に発生した事象に関するデータをプロセッサか
    ら受け取り、現在までに計算された事象の統計データの
    うちプロセッサの性能低下に及ぼす影響が大きい上位一
    定数の事象の統計データが前記抽出部メモリに残るよう
    に、事象の統計データの更新、前記巡回部メモリと前記
    抽出部メモリ間での事象の統計データの入れ替え及び前
    記抽出部メモリの事象の統計データの入れ替え並びに前
    記簡易統計データの更新を行う制御手段とを含むことを
    特徴とするプロセッサ性能データ収集装置。
  5. 【請求項5】 前記制御手段は、前記プロセッサから受
    け取った事象の統計データが前記抽出部メモリ及び前記
    巡回部メモリの何れにも記憶されていないときは当該事
    象にかかる命令を保持するキャッシュラインの簡易統計
    データを更新すると共に更新後の簡易統計データが一定
    の基準を満足したときに前記巡回部メモリに空きエント
    リを確保して当該事象の統計データを登録し、前記巡回
    部メモリに記憶されているときは該記憶されている事象
    の統計データを更新すると共に必要に応じて前記巡回部
    メモリと前記抽出部メモリとの間で事象の統計データの
    入れ替えを行い、前記抽出部メモリに記憶されていると
    きは該記憶されている事象の統計データを更新すること
    を特徴とする請求項4記載のプロセッサ性能データ収集
    装置。
  6. 【請求項6】 前記抽出部メモリおよび前記巡回部メモ
    リが、事象の種類で検索可能な連想メモリで構成された
    ことを特徴とする請求項2、3、4または5記載のプロ
    セッサ性能データ収集装置。
  7. 【請求項7】 プロセッサで発生した事象の統計データ
    を収集する装置において、 プロセッサの性能低下に及ぼす影響が大きく且つ統計的
    な信頼度が基準を満たす上位一定数の事象の統計データ
    を記憶する抽出部メモリと、 前記抽出部メモリへの登録事象を絞り込むために前記抽
    出部メモリに登録されていない事象にかかる簡易統計デ
    ータを保持する、前記プロセッサにおける命令キャッシ
    ュの各キャッシュライン毎の領域と、 実運用時に発生した事象に関するデータをプロセッサか
    ら受け取り、現在までに計算された事象の統計データの
    うちプロセッサの性能低下に及ぼす影響が大きい上位一
    定数の事象の統計データが前記抽出部メモリに残るよう
    に、事象の統計データの更新、前記抽出部メモリの事象
    の統計データの入れ替え並びに前記簡易統計データの更
    新を行う制御手段とを含むことを特徴とするプロセッサ
    性能データ収集装置。
  8. 【請求項8】 前記制御手段は、前記プロセッサから受
    け取った事象の統計データが前記抽出部メモリに記憶さ
    れていないときは当該事象にかかる命令を保持するキャ
    ッシュラインの簡易統計データを更新すると共に更新後
    の簡易統計データが一定の基準を満足したときに前記抽
    出部メモリに空きエントリを確保して当該事象の統計デ
    ータを登録し、前記抽出部メモリに記憶されているとき
    は該記憶されている事象の統計データを更新することを
    特徴とする請求項7記載のプロセッサ性能データ収集装
    置。
  9. 【請求項9】 前記抽出部メモリが、事象の種類で検索
    可能な連想メモリで構成されたことを特徴とする請求項
    7または8記載のプロセッサ性能データ収集装置。
  10. 【請求項10】 前記抽出部メモリの事象の統計データ
    をプロセッサの性能低下に及ぼす影響が大きい順に整列
    させるようにしたことを特徴とする請求項6または9記
    載のプロセッサ性能データ収集装置。
  11. 【請求項11】 前記事象の統計データは、事象の出現
    回数、事象の失敗回数及び失敗率を含むことを特徴とす
    る請求項10記載のプロセッサ性能データ収集装置。
  12. 【請求項12】 前記事象の統計データは、更に、失敗
    した事象の巻き戻しに要するコストを示す付加情報を含
    むことを特徴とする請求項11記載のプロセッサ性能デ
    ータ収集装置。
  13. 【請求項13】 前記プロセッサは投機実行可能なプロ
    セッサであり、前記事象が投機事象である請求項11ま
    たは12記載のプロセッサ性能データ収集装置。
  14. 【請求項14】 請求項1乃至13の何れかに記載のプ
    ロセッサ性能データ収集装置によってプログラムの実運
    用時に収集された事象の統計データに基づき、プログラ
    ムの再コンパイル時に最適化し直すようにしたことを特
    徴とするプロセッサ性能データ収集装置を利用した最適
    化方法。
  15. 【請求項15】 投機実行可能なプロセッサから収集さ
    れた投機実行の統計データに基づき実行投機の最適化を
    行う請求項14記載のプロセッサ性能データ収集装置を
    利用した最適化方法。
JP32637799A 1999-11-17 1999-11-17 プロセッサ性能データ収集装置及び該装置を利用した最適化方法 Expired - Fee Related JP3292189B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP32637799A JP3292189B2 (ja) 1999-11-17 1999-11-17 プロセッサ性能データ収集装置及び該装置を利用した最適化方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP32637799A JP3292189B2 (ja) 1999-11-17 1999-11-17 プロセッサ性能データ収集装置及び該装置を利用した最適化方法

Publications (2)

Publication Number Publication Date
JP2001142747A true JP2001142747A (ja) 2001-05-25
JP3292189B2 JP3292189B2 (ja) 2002-06-17

Family

ID=18187134

Family Applications (1)

Application Number Title Priority Date Filing Date
JP32637799A Expired - Fee Related JP3292189B2 (ja) 1999-11-17 1999-11-17 プロセッサ性能データ収集装置及び該装置を利用した最適化方法

Country Status (1)

Country Link
JP (1) JP3292189B2 (ja)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008158806A (ja) * 2006-12-22 2008-07-10 Matsushita Electric Ind Co Ltd 複数プロセッサエレメントを備えるプロセッサ用プログラム及びそのプログラムの生成方法及び生成装置
JP2009525707A (ja) * 2006-02-01 2009-07-09 ココ・コミュニケーションズ・コーポレーション Csma方式伝送媒体における輻輳管理及び遅延予測
US7571076B2 (en) * 2006-04-21 2009-08-04 Kabushiki Kaisha Toshiba Performance monitor device, data collecting method and program for the same
US7870438B2 (en) 2008-02-15 2011-01-11 International Business Machines Corporation Method, system and computer program product for sampling computer system performance data
US7881906B2 (en) 2008-02-15 2011-02-01 International Business Machines Corporation Method, system and computer program product for event-based sampling to monitor computer system performance
US7957933B2 (en) 2007-01-26 2011-06-07 Kabushiki Kaisha Toshiba Performance monitor device and information processing apparatus
CN111045906A (zh) * 2019-11-21 2020-04-21 中国航空工业集团公司西安航空计算技术研究所 一种基于有限状态机的统一架构gpu性能采样与存储方法
CN111324948A (zh) * 2020-02-10 2020-06-23 上海兆芯集成电路有限公司 模拟方法及模拟系统

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7404111B2 (ja) 2020-03-10 2023-12-25 株式会社東芝 プロセッサ性能測定装置

Cited By (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9667547B2 (en) 2006-02-01 2017-05-30 Coco Communications Corp. Congestion management and latency prediction in CSMA media
JP2009525707A (ja) * 2006-02-01 2009-07-09 ココ・コミュニケーションズ・コーポレーション Csma方式伝送媒体における輻輳管理及び遅延予測
US8209433B2 (en) 2006-02-01 2012-06-26 Coco Communications Corp. Congestion management and latency prediction in CSMA media
US8458330B2 (en) 2006-02-01 2013-06-04 Coco Communications Corp. Congestion management and latency prediction in CSMA media
US8943219B2 (en) 2006-02-01 2015-01-27 Coco Communications Corp. Congestion management and latency prediction in CSMA media
US7571076B2 (en) * 2006-04-21 2009-08-04 Kabushiki Kaisha Toshiba Performance monitor device, data collecting method and program for the same
JP2008158806A (ja) * 2006-12-22 2008-07-10 Matsushita Electric Ind Co Ltd 複数プロセッサエレメントを備えるプロセッサ用プログラム及びそのプログラムの生成方法及び生成装置
US7957933B2 (en) 2007-01-26 2011-06-07 Kabushiki Kaisha Toshiba Performance monitor device and information processing apparatus
US7870438B2 (en) 2008-02-15 2011-01-11 International Business Machines Corporation Method, system and computer program product for sampling computer system performance data
US7881906B2 (en) 2008-02-15 2011-02-01 International Business Machines Corporation Method, system and computer program product for event-based sampling to monitor computer system performance
CN111045906A (zh) * 2019-11-21 2020-04-21 中国航空工业集团公司西安航空计算技术研究所 一种基于有限状态机的统一架构gpu性能采样与存储方法
CN111324948A (zh) * 2020-02-10 2020-06-23 上海兆芯集成电路有限公司 模拟方法及模拟系统
CN111324948B (zh) * 2020-02-10 2023-04-25 上海兆芯集成电路有限公司 模拟方法及模拟系统

Also Published As

Publication number Publication date
JP3292189B2 (ja) 2002-06-17

Similar Documents

Publication Publication Date Title
US7197586B2 (en) Method and system for recording events of an interrupt using pre-interrupt handler and post-interrupt handler
Franklin et al. ARB: A hardware mechanism for dynamic reordering of memory references
US7260684B2 (en) Trace cache filtering
US7346476B2 (en) Event tracing with time stamp compression
JP4027620B2 (ja) 分岐予測装置、プロセッサ、及び分岐予測方法
US7493224B2 (en) Event tracing with time stamp compression and history buffer based compression
US7496902B2 (en) Data and instruction address compression
US7895382B2 (en) Method and apparatus for qualifying collection of performance monitoring events by types of interrupt when interrupt occurs
US6480939B2 (en) Method and apparatus for filtering prefetches to provide high prefetch accuracy using less hardware
US20090043993A1 (en) Monitoring Values of Signals within an Integrated Circuit
US20070006032A1 (en) Associating program execution sequences with performance counter events
Srinivasan et al. A prefetch taxonomy
US7971031B2 (en) Data processing system and method
JP3292189B2 (ja) プロセッサ性能データ収集装置及び該装置を利用した最適化方法
Burtscher et al. Hybrid load-value predictors
US11249762B2 (en) Apparatus and method for handling incorrect branch direction predictions
US20060212243A1 (en) Event tracing using hash tables with support for dynamic address to name resolution
US6678808B2 (en) Memory record update filtering
US20110145503A1 (en) On-line optimization of software instruction cache
Feng et al. Dynamic access distance driven cache replacement
CN111078295B (zh) 一种乱序高性能核的混合分支预测装置及方法
US8898646B2 (en) Method and apparatus for flexible, accurate, and/or efficient code profiling
Menezes Hardware-based profiling for program optimization
US11194575B2 (en) Instruction address based data prediction and prefetching
US7062607B2 (en) Filtering basic instruction segments in a processor front-end for power conservation

Legal Events

Date Code Title Description
FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20080329

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090329

Year of fee payment: 7

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090329

Year of fee payment: 7

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100329

Year of fee payment: 8

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100329

Year of fee payment: 8

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110329

Year of fee payment: 9

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110329

Year of fee payment: 9

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120329

Year of fee payment: 10

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120329

Year of fee payment: 10

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130329

Year of fee payment: 11

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130329

Year of fee payment: 11

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140329

Year of fee payment: 12

LAPS Cancellation because of no payment of annual fees