Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /home/zhenxiangba/zhenxiangba.com/public_html/phproxy-improved-master/index.php on line 456
JP3292189B2 - Processor performance data collection device and optimization method using the device - Google Patents
[go: Go Back, main page]

JP3292189B2 - Processor performance data collection device and optimization method using the device - Google Patents

Processor performance data collection device and optimization method using the device

Info

Publication number
JP3292189B2
JP3292189B2 JP32637799A JP32637799A JP3292189B2 JP 3292189 B2 JP3292189 B2 JP 3292189B2 JP 32637799 A JP32637799 A JP 32637799A JP 32637799 A JP32637799 A JP 32637799A JP 3292189 B2 JP3292189 B2 JP 3292189B2
Authority
JP
Japan
Prior art keywords
statistical data
event
processor
memory
events
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.)
Expired - Fee Related
Application number
JP32637799A
Other languages
Japanese (ja)
Other versions
JP2001142747A (en
Inventor
智 松下
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/en
Publication of JP2001142747A publication Critical patent/JP2001142747A/en
Application granted granted Critical
Publication of JP3292189B2 publication Critical patent/JP3292189B2/en
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Landscapes

  • Debugging And Monitoring (AREA)

Description

【発明の詳細な説明】DETAILED DESCRIPTION OF THE INVENTION

【0001】[0001]

【発明の属する技術分野】本発明は、コンピュータシス
テムの性能改善を目的としてプロセッサで発生した事象
の統計データを収集するプロセッサ性能データ収集装置
及び該装置を利用した最適化方法に関する。
[0001] 1. Field of the Invention [0002] The present invention relates to a processor performance data collection device for collecting statistical data of events generated in a processor for the purpose of improving the performance of a computer system, and an optimization method using the device.

【0002】[0002]

【従来の技術】従来より、プロセッサで発生した各種事
象に関するデータを収集して統計処理を行い、その事象
の統計データに基づいてコンピュータシステムの性能を
チューニングすることが行われている。以下に、代表的
な従来技術を示す。
2. Description of the Related Art Conventionally, data relating to various events generated in a processor is collected and statistically processed, and the performance of a computer system is tuned based on the statistical data of the events. The typical prior art is shown below.

【0003】(1)従来技術1 特開平7−191882号公報(以下、文献1と称す)
には、事象の統計データとしてメモリの連続領域毎かつ
アクセスタイプ毎のアクセス回数を求め、その統計デー
タに基づいて性能をチューニングする技術が示されてい
る。具体的には、メモリアクセスの履歴を採取するトレ
ース採取ルーチンをターゲットプログラムに埋め込んで
実行させ、メモリアクセスが1回行われる毎にそのメモ
リアクセスの種類とアクセスしたアドレスを含むトレー
ス情報をトレースファイルに収集する。次にプロファイ
リング手段によって、トレースファイルの各トレース情
報毎に解析し、メモリの連続領域毎かつアクセスタイプ
毎のアクセス回数を集計して出力する。そして、アクセ
ス回数を参照して、処理の重い部分や頻繁にアクセスさ
れる変数やデータ構造を改善する。
(1) Prior art 1 Japanese Patent Application Laid-Open No. 7-191882 (hereinafter referred to as Document 1)
Discloses a technique for obtaining the number of accesses for each continuous area of a memory and for each access type as statistical data of an event, and for tuning the performance based on the statistical data. Specifically, a trace collection routine for collecting the history of memory access is embedded in the target program and executed, and each time memory access is performed once, trace information including the type of memory access and the accessed address is stored in a trace file. collect. Next, the profiling means analyzes each trace information of the trace file, and totals and outputs the number of accesses for each continuous area of the memory and each access type. Then, by referring to the number of accesses, a part that is heavily processed and a variable or a data structure that is frequently accessed are improved.

【0004】(2)従来技術2 特開平8−263372号公報(以下、文献2と称す)
には、事象の統計データとして各データアドレスのキャ
ッシュミス率(アクセス回数に対するキャッシュミス回
数の比率)を求め、その統計データに基づいて性能をチ
ューニングする技術が示されている。具体的には、コン
パイラが出力したオブジェクトプログラムについてその
実行シーケンスに従って命令を1つずつトレースし、そ
の命令がアクセスするデータの主記憶上のアドレスを抽
出する処理手段と、アクセスアドレスがキャッシュメモ
リに取り込んだとみなされるデータのアドレス範囲内に
ないときキャッシュミスとして検出し、キャッシュミス
情報中の当該アドレスについてのアクセス回数とキャッ
シュミス回数をカウントアップするシミュレート手段と
を備える。そして、コンパイラは、前記キャッシュミス
情報から各命令に関するアドレスのキャッシュミス率を
計算し、そのキャッシュミス率が所定値以上のとき、当
該命令と並行して実行されるだけの独立した後続命令を
並行実行させるよう命令の実行順序を変更することで最
適化を実施する。
(2) Prior art 2 JP-A-8-263372 (hereinafter referred to as reference 2)
Discloses a technique of calculating a cache miss rate (ratio of the number of cache misses to the number of accesses) of each data address as statistical data of an event, and tuning the performance based on the statistical data. More specifically, processing means for tracing instructions one by one in accordance with the execution sequence of the object program output by the compiler and extracting an address on the main memory of data accessed by the instruction, and storing the access address in the cache memory. Simulation means for detecting a cache miss when the data is not within the address range of the data regarded as a cache miss and counting up the number of accesses and the number of cache misses of the address in the cache miss information. Then, the compiler calculates a cache miss rate of an address related to each instruction from the cache miss information, and when the cache miss rate is equal to or more than a predetermined value, executes an independent subsequent instruction that is executed in parallel with the instruction in parallel. Optimization is performed by changing the execution order of instructions so that they are executed.

【0005】(3)従来技術3 特開平11−272519号公報(以下、文献3と称
す)には、事象の統計データとして、プロセス毎のキャ
ッシュヒット率やスレッド毎の平均メモリシステム待ち
時間など事前に設定された事象の統計データを求め、そ
の統計データに基づいて性能をチューニングする技術が
示されている。この従来技術3は、事象に関するデータ
を、従来技術1のようにターゲットプログラムに付加的
なコードを追加することなく、また従来技術2のような
シミュレートによることなく、ハードウェア的にサンプ
リングする。更に、分岐予想ミスによって失われた命令
サイクルなどの付加情報を、プログラムの特定の命令に
帰属させて収集することができる。具体的には、図21
に示されるようなトリガー1000、カウンタ1001
及びマーカー1002から構成されるセレクタ2000
がプロセッサ内に設けられる。
(3) Prior art 3 Japanese Patent Application Laid-Open No. H11-272519 (hereinafter referred to as Reference 3) describes, in advance, statistical data of events such as a cache hit rate for each process and an average memory system waiting time for each thread. There is disclosed a technique for obtaining statistical data of an event set in, and tuning performance based on the statistical data. According to the prior art 3, data on an event is sampled in hardware without adding an additional code to a target program as in the prior art 1 and without performing a simulation as in the prior art 2. Further, additional information such as an instruction cycle lost due to a branch misprediction can be collected as belonging to a specific instruction of the program. Specifically, FIG.
Trigger 1000, counter 1001 as shown in FIG.
And a selector 2000 composed of a marker 1002
Is provided in the processor.

【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’ま
での付加的なサンプルビットをトランザクションに与え
ることにより行われる。
The counter 1001 is initialized with an initial value 1007 arbitrarily settable by hardware or software, and is incremented by a counter event signal 1008. The counter event signal 1008 is the count selection signal 1
According to 009, one or more event signals (event 1, event 2, event 3) 1005 are selected. The event signal 1005 is a clock cycle, a transaction, or the like. The trigger 1000 inputs the current transaction 1003, event 1005, state 1006 in the computer system and determines when and under what conditions the counter 1001 should be enabled. Marker 1002 is
Enter event 1005, state 1006, and transaction to determine which transaction is marked as selected transaction T'1004 when counter 1001 overflows. Marking of the selected transaction is performed, for example, by providing the transaction with additional sample bits from T to T '.

【0007】或るトランザクションがサンプリングのた
めに選択された後に、マークされたトランザクション1
004を処理するプロセッサは、各当該処理段階にサン
プルビットをチェックし、それに使用できる状態情報を
収集し、バッファに記憶する。状態情報記憶用のバッフ
ァには、処理されている特定トランザクションに関する
状態(例えば、トランザクションがメモリ参照である場
合には、キャッシュヒット状態か否か等)を示す状態フ
ィールド、当該トランザクションに関連した仮想や物理
的アドレスを示すアドレスフィールド、当該トランザク
ションのソースのスレッド識別子などを示すコンテクス
トフィールド、当該トランザクションのソース(例えば
ロード又は記憶命令、DMA要求等)を示すソースフィ
ールド、ソースを識別するための付加的な情報(ソース
がプロセッサパイプラインのフェッチユニットである場
合には命令のプログラムカウンタや命令フィールドな
ど)を示す命令フィールドなどが含まれる。
After a transaction has been selected for sampling, the marked transaction 1
The processor that processes 004 checks the sample bits at each relevant processing stage, collects state information that can be used for it, and stores it in a buffer. The status information storage buffer includes a status field indicating a status relating to a specific transaction being processed (for example, if the transaction is a memory reference, a cache hit status or the like), a virtual field related to the transaction, An address field indicating the physical address, a context field indicating the thread identifier of the source of the transaction, a source field indicating the source of the transaction (eg, load or store instruction, DMA request, etc.), and an additional field for identifying the source. An instruction field indicating information (a program counter or an instruction field of an instruction when the source is a fetch unit of a processor pipeline) is included.

【0008】特定数のトランザクションが記録された後
に、バッファが一杯になると、割り込みやソフトウェア
ポーリングによってバッファの内容がソフトウェアによ
って読み込まれ、次のサンプリングを可能とする。ソフ
トウェアによって読み込まれた状態情報は、プロファイ
リングアプリケーションソフトウェアによって統計的な
解析が行われて統計データが求められる。そして、この
統計データを分析し、再コンパイルなどの方法で実行中
プログラム内の性能問題の最適化を動的に実施する。
When the buffer is full after a certain number of transactions have been recorded, the contents of the buffer are read by software by means of interrupts or software polling, allowing the next sampling. The status information read by the software is statistically analyzed by the profiling application software to obtain statistical data. Then, the statistical data is analyzed, and the performance problem in the running program is dynamically optimized by a method such as recompilation.

【0009】[0009]

【発明が解決しようとする課題】従来の課題の1つは、
性能改善に役立つ事象の統計データを得るために保存し
ておかなければならないデータ量が多く、保存にコスト
がかかることである。その理由は、従来技術1では、発
生した事象に関する全てのサンプルを格納し得る容量の
トレースファイルが必要になり、従来技術2では、アク
セス回数及びキャッシュミス回数の途中結果を各メモリ
アドレス毎に格納できる大容量なキャッシュミス情報が
必要になり、従来技術3では、状態情報格納用バッファ
から読み取ったデータ全てを格納できるファイル等が必
要になるためである。
One of the conventional problems is as follows.
The amount of data that must be stored in order to obtain statistical data of events that is useful for improving performance is large, and the cost of storage is high. The reason is that the prior art 1 requires a trace file having a capacity capable of storing all the samples relating to the occurred event, and the prior art 2 stores the intermediate results of the access count and the cache miss count for each memory address. This is because large-capacity cache miss information is required, and the related art 3 requires a file or the like that can store all the data read from the state information storage buffer.

【0010】従来の他の課題は、性能改善に役立つ事象
の統計データを実運用時に速やかに求めることが難しい
ことである。その理由は、従来技術1および従来技術3
とも、全サンプルを収集した後に統計処理を行って統計
データを求めているからである。また、性能改善に役立
つ事象の統計データの計算が、性能改善に役立たない事
象の統計データの計算より後回しになってしまう可能性
があるからである。ここで、性能改善に役立たない事象
の統計データとは、従来技術1で言えば、アクセス回数
の少ないメモリの連続領域・アクセスタイプの事象の統
計データである。なお、従来技術2はシミュレータを用
いているため、プログラムの実運用時に事象の統計デー
タを求めることは本質的に不可能である。
Another problem in the prior art is that it is difficult to quickly obtain statistical data of events useful for improving performance during actual operation. The reason is that the prior art 1 and the prior art 3
This is because statistical data is obtained by performing statistical processing after collecting all samples. Also, the calculation of the statistical data of the event useful for the performance improvement may be postponed to the calculation of the statistical data of the event not useful for the performance improvement. Here, the statistical data of an event that does not contribute to the performance improvement is statistical data of a continuous area / access type event of a memory with a small number of accesses in the related art 1. Note that the prior art 2 uses a simulator, so that it is essentially impossible to obtain statistical data of an event during the actual operation of a program.

【0011】本発明の目的は、性能改善に役立つ事象の
統計データを実運用時に迅速かつ低コストで求めること
ができるプロセッサ性能データ収集装置を提供すること
にある。
An object of the present invention is to provide a processor performance data collecting apparatus capable of quickly and at low cost obtaining statistical data of an event useful for performance improvement during actual operation.

【0012】本発明の他の目的は、本発明のプロセッサ
性能データ収集装置を利用した最適化方法を提供するこ
とにある。
Another object of the present invention is to provide an optimization method using the processor performance data collection device of the present invention.

【0013】[0013]

【課題を解決するための手段】本発明のプロセッサ性能
データ収集装置は、事象の統計データのうちプロセッサ
の性能低下に及ぼす影響が大きい上位一定数の事象の統
計データを記憶する抽出部メモリと、実運用時に発生し
た事象に関するデータをプロセッサから受け取り、現在
までに計算された事象の統計データのうちプロセッサの
性能低下に及ぼす影響が大きい上位一定数の事象の統計
データが前記抽出部メモリに残るように事象の統計デー
タの更新及び事象の統計データの入れ替えを行う制御手
段とを有する。
According to the present invention, there is provided a processor performance data collecting apparatus, comprising: an extracting unit memory for storing statistical data of a fixed number of events having a large effect on the performance degradation of a processor among statistical data of events; Receiving data on events that occurred during actual operation from the processor, and among the statistical data of events calculated up to now, statistical data of a fixed number of events having a large effect on the performance degradation of the processor remains in the extraction unit memory. And control means for updating statistical data of events and replacing statistical data of events.

【0014】プロセッサで発生した事象の統計データ
は、一般に性能改善に役立つものとそうでないものとに
分けることができる。例えば、アクセス頻度に基づいて
ソフトウェアの性能を改善する場合、処理の重い部分や
頻繁にアクセスされる変数やデータ構造を改善した方が
効果が大きいので、アクセス回数が多いことを示す事象
の統計データが性能改善に役立つ。また、キャッシュミ
ス情報に基づいてソフトウェアの性能を改善する場合、
キャッシュミス比率が大きい事象の統計データが性能改
善に役立つ。更に、投機実行可能なプロセッサにおける
各投機事象の投機失敗率に基づいてソフトウェアの性能
を改善する場合、投機失敗率が大きい事象の統計データ
が性能改善に役立つ。換言すると、性能改善に役立つ事
象の統計データは、プロセッサの性能低下に及ぼす影響
が大きい事象の統計データと言える。そこで本発明のプ
ロセッサ性能データ収集装置では、現在までに計算され
た事象の統計データのうちプロセッサの性能低下に及ぼ
す影響が大きい上位一定数の事象の統計データが抽出部
メモリに残るように事象の統計データの更新及び事象の
統計データの入れ替えを行う。これによって、限られた
容量の抽出部メモリが有効に活用され且つ統計処理と収
集が並行して実施されるため、性能改善に役立つ事象の
統計データを実運用時に迅速かつ低コストで収集するこ
とができる。
[0014] The statistics of events that occur in a processor can generally be divided into those that help improve performance and those that do not. For example, when improving the performance of software based on the access frequency, statistical data of events indicating that the number of accesses is large because the effect of improving the heavy processing parts or frequently accessed variables and data structures is greater. Helps to improve performance. Also, when improving the performance of software based on cache miss information,
Statistical data of events with a large cache miss ratio is useful for improving performance. Further, when the performance of software is improved based on the speculation failure rate of each speculative event in a speculatively executable processor, statistical data of events having a large speculation failure rate is useful for performance improvement. In other words, the statistical data of an event that is useful for improving performance can be said to be statistical data of an event that has a large effect on the performance degradation of the processor. Therefore, in the processor performance data collection device of the present invention, among the statistical data of the events calculated up to now, the statistical data of a certain upper number of events having a large effect on the performance degradation of the processor remains in the extraction unit memory. Updates statistical data and replaces statistical data of events. As a result, the limited capacity of the extraction unit memory is effectively used, and statistical processing and collection are performed in parallel, so that statistical data of events useful for improving performance can be collected quickly and at low cost during actual operation. Can be.

【0015】現在までに計算された事象の統計データを
保存する場所として抽出部メモリだけを使用すると、抽
出部メモリが満杯となった以降、新たな事象の統計デー
タを残すには抽出部メモリに既に記録されている事象の
統計データを上書きする操作が必要になる。このような
操作を行っても収集精度は低下するが、プロセッサの性
能低下に及ぼす影響が極端に大きな事象の統計データの
幾つかは収集することができる。しかし、収集精度を高
めるためには、抽出部メモリ以外に補助的な格納場所が
必要になる。本発明では、補助的な格納場所として、巡
回部メモリを使用する方法、プロセッサ中の命令キャッ
シュを活用する方法、およびその両者を使用する方法の
何れかを提供する。
If only the extractor memory is used as a place for storing the statistical data of the events calculated up to now, after the extractor memory becomes full, it is necessary to store the statistical data of new events in the extractor memory. An operation to overwrite the statistical data of the event already recorded is required. Even if such an operation is performed, the collection accuracy is reduced, but some of the statistical data of events having an extremely large effect on the performance of the processor can be collected. However, in order to increase the collection accuracy, an auxiliary storage location other than the extraction unit memory is required. The present invention provides a method of using a circulating memory, a method of utilizing an instruction cache in a processor, or a method of using both as auxiliary storage locations.

【0016】巡回部メモリを使用する場合、抽出部メモ
リには、プロセッサの性能低下に及ぼす影響が大きく且
つ統計的な信頼度が基準を満たす上位一定数の事象の統
計データを記憶し、巡回部メモリには、統計的な信頼度
が未だ基準を満たさないか或いは前記上位一定数に入ら
ない事象の統計データを一時的に記憶する。統計的な信
頼度が基準を満たすか否かは、例えば出現回数が或る閾
値以上か否かで判断される。制御手段は、発生した事象
に関するデータをプロセッサから受け取り、現在までに
計算された事象の統計データのうちプロセッサの性能低
下に及ぼす影響が大きい上位一定数の事象の統計データ
が前記抽出部メモリに残るように、事象の統計データの
更新、前記巡回部メモリと前記抽出部メモリ間での事象
の統計データの入れ替え及び前記抽出部メモリの事象の
統計データの入れ替えを行う。具体的には、前記制御手
段は、前記プロセッサから受け取った事象の統計データ
が前記抽出部メモリ及び前記巡回部メモリの何れにも記
憶されていないときは前記巡回部メモリに空きエントリ
を確保して当該事象の統計データを登録し、前記巡回部
メモリに記憶されているときは該記憶されている事象の
統計データを更新すると共に必要に応じて前記巡回部メ
モリと前記抽出部メモリとの間で事象の統計データの入
れ替えを行い、前記抽出部メモリに記憶されているとき
は該記憶されている事象の統計データを更新する。
In the case where the circulating unit memory is used, the extracting unit memory stores statistical data of a certain number of upper-order events which have a large effect on the performance degradation of the processor and whose statistical reliability satisfies the criterion. The memory temporarily stores the statistical data of events whose statistical reliability does not yet meet the criteria or does not fall into the upper fixed number. Whether the statistical reliability satisfies the criterion is determined by, for example, whether the number of appearances is equal to or greater than a certain threshold. The control means receives data on the occurred event from the processor, and among the statistical data of the events calculated up to the present, the statistical data of a fixed number of events having a large influence on the performance degradation of the processor remains in the extraction unit memory. In this way, the update of the statistical data of the event, the exchange of the statistical data of the event between the traveling unit memory and the memory of the extraction unit, and the exchange of the statistical data of the event in the memory of the extraction unit are performed. Specifically, the control unit secures an empty entry in the traveling unit memory when the statistical data of the event received from the processor is not stored in any of the extraction unit memory and the traveling unit memory. The statistical data of the event is registered, and when stored in the traveling unit memory, the stored statistical data of the event is updated and the traveling unit memory and the extraction unit memory are updated as necessary. The statistical data of the event is replaced, and when stored in the extraction unit memory, the stored statistical data of the event is updated.

【0017】巡回部メモリと命令キャッシュの双方を利
用する場合、抽出部メモリには、プロセッサの性能低下
に及ぼす影響が大きく且つ統計的な信頼度が基準を満た
す上位一定数の事象の統計データを記憶し、巡回部メモ
リに、統計的な信頼度が未だ基準を満たさないか或いは
前記上位一定数に入らない事象の統計データを一時的に
記憶し、命令キャッシュの各キャッシュライン毎に付加
した領域に、前記巡回部メモリへの登録事象を絞り込む
ために前記抽出部メモリおよび前記巡回部メモリの何れ
にも登録されていない事象にかかる簡易統計データを保
持する。制御手段は、発生した事象に関するデータをプ
ロセッサから受け取り、現在までに計算された事象の統
計データのうちプロセッサの性能低下に及ぼす影響が大
きい上位一定数の事象の統計データが前記抽出部メモリ
に残るように、事象の統計データの更新、前記巡回部メ
モリと前記抽出部メモリ間での事象の統計データの入れ
替え及び前記抽出部メモリの事象の統計データの入れ替
え並びに前記簡易統計データの更新を行う。具体的に
は、前記制御手段は、前記プロセッサから受け取った事
象の統計データが前記抽出部メモリ及び前記巡回部メモ
リの何れにも記憶されていないときは当該事象にかかる
命令を保持するキャッシュラインの簡易統計データを更
新すると共に更新後の簡易統計データが一定の基準を満
足したときに前記巡回部メモリに空きエントリを確保し
て当該事象の統計データを登録し、前記巡回部メモリに
記憶されているときは該記憶されている事象の統計デー
タを更新すると共に必要に応じて前記巡回部メモリと前
記抽出部メモリとの間で事象の統計データの入れ替えを
行い、前記抽出部メモリに記憶されているときは該記憶
されている事象の統計データを更新する。
When both the circulating unit memory and the instruction cache are used, the extracting unit memory stores the statistical data of a certain number of upper-ranked events which have a large effect on the performance degradation of the processor and whose statistical reliability satisfies the standard. An area where statistical data of events whose statistical reliability does not yet meet the standard or does not fall in the upper fixed number is temporarily stored in the circulating unit memory, and is added for each cache line of the instruction cache. Then, in order to narrow down the events registered in the traveling unit memory, simple statistical data on events not registered in either the extraction unit memory or the traveling unit memory is held. The control means receives data on the occurred event from the processor, and among the statistical data of the events calculated up to the present, the statistical data of a fixed number of events having a large influence on the performance degradation of the processor remains in the extraction unit memory. Thus, the update of the statistical data of the event, the exchange of the statistical data of the event between the traveling unit memory and the memory of the extracting unit, the exchange of the statistical data of the event of the memory of the extracting unit, and the update of the simple statistical data are performed. Specifically, when the statistical data of the event received from the processor is not stored in any of the extraction unit memory and the traversing unit memory, the control unit is configured to store the instruction related to the event in the cache line. When the simplified statistical data is updated and the updated simplified statistical data satisfies a certain criterion, a free entry is secured in the traveling unit memory and the statistical data of the event is registered, and stored in the traveling unit memory. When the stored statistical data of the event is updated, the statistical data of the event is exchanged between the traveling unit memory and the extracting unit memory as necessary, and is stored in the extracting unit memory. If so, the stored statistical data of the event is updated.

【0018】命令キャッシュだけを利用する場合、抽出
部メモリには、プロセッサの性能低下に及ぼす影響が大
きく且つ統計的な信頼度が基準を満たす上位一定数の事
象の統計データを記憶し、命令キャッシュの各キャッシ
ュライン毎に付加した領域に、前記抽出部メモリへの登
録事象を絞り込むために前記抽出部メモリに登録されて
いない事象にかかる簡易統計データを保持する。制御手
段は、発生した事象に関するデータをプロセッサから受
け取り、現在までに計算された事象の統計データのうち
プロセッサの性能低下に及ぼす影響が大きい上位一定数
の事象の統計データが前記抽出部メモリに残るように、
事象の統計データの更新、前記抽出部メモリの事象の統
計データの入れ替え並びに前記簡易統計データの更新を
行う。具体的には、前記制御手段は、前記プロセッサか
ら受け取った事象の統計データが前記抽出部メモリに記
憶されていないときは当該事象にかかる命令を保持する
キャッシュラインの簡易統計データを更新すると共に更
新後の簡易統計データが一定の基準を満足したときに前
記抽出部メモリに空きエントリを確保して当該事象の統
計データを登録し、前記抽出部メモリに記憶されている
ときは該記憶されている事象の統計データを更新する。
In the case where only the instruction cache is used, the extractor memory stores statistical data of a certain number of upper-ranked events that have a large effect on the performance degradation of the processor and satisfy a criterion of statistical reliability. In order to narrow down the events registered in the extraction unit memory, simple statistical data on events not registered in the extraction unit memory is held in the area added for each cache line. The control means receives data on the occurred event from the processor, and among the statistical data of the events calculated up to the present, the statistical data of a fixed number of events having a large influence on the performance degradation of the processor remains in the extraction unit memory. like,
The statistical data of the event is updated, the statistical data of the event in the memory of the extracting unit is replaced, and the simplified statistical data is updated. Specifically, when the statistical data of the event received from the processor is not stored in the extraction unit memory, the control unit updates and updates the simple statistical data of the cache line holding the instruction related to the event. When the subsequent simple statistical data satisfies a certain standard, an empty entry is secured in the extracting unit memory, and the statistical data of the event is registered. When the event statistical data is stored in the extracting unit memory, the event is stored. Update event statistics.

【0019】前記抽出部メモリおよび前記巡回部メモリ
は、好ましくは、事象の種類(例えば命令アドレス)で
検索可能な連想メモリで構成される。また、前記抽出部
メモリの事象の統計データは、好ましくは、プロセッサ
の性能低下に及ぼす影響が大きい順に整列される。前記
事象の統計データは、例えば事象の出現回数、事象の失
敗回数及び失敗率を含む。ここで事象としてはキャッシ
ュアクセス命令や投機実行命令などがある。前記事象の
統計データは、更に、失敗した事象の巻き戻しに要する
コストを示す付加情報を含ませることができる。投機事
象の場合、そのコストは、巻き戻される命令の数や、投
機中にロードしたデータ量が付加情報となる。
The extractor memory and the traveling unit memory are preferably constituted by an associative memory which can be searched by the type of event (for example, an instruction address). In addition, the statistical data of the events in the extraction unit memory are preferably arranged in descending order of the effect on the performance degradation of the processor. The statistical data of the event includes, for example, the number of appearances of the event, the number of failures of the event, and the failure rate. Here, the events include a cache access instruction and a speculative execution instruction. The event statistical data may further include additional information indicating a cost required to rewind the failed event. In the case of a speculative event, the cost is the number of instructions to be rewound or the amount of data loaded during speculation as additional information.

【0020】また本発明のプロセッサ性能データ収集装
置を利用した最適化方法は、上述したプロセッサ性能デ
ータ収集装置によってプログラムの実運用時に収集され
た事象の統計データに基づき、プログラムの再コンパイ
ル時に最適化し直すことで、動的な性能チューニングを
可能にする。
Further, the optimization method using the processor performance data collection device of the present invention optimizes when the program is recompiled based on the statistical data of the events collected during the actual operation of the program by the processor performance data collection device described above. Fixing allows for dynamic performance tuning.

【0021】[0021]

【発明の実施の形態】次に本発明の実施の形態の例につ
いて図面を参照して詳細に説明する。
DESCRIPTION OF THE PREFERRED EMBODIMENTS Next, embodiments of the present invention will be described in detail with reference to the drawings.

【0022】(第1実施例)本実施例では、投機実行を
行うプロセッサの実運用時に、そのプロセッサの処理と
並行して性能上問題となる投機の統計データを収集し、
この収集した統計データに基づいて性能チューニングを
行う。
(First Embodiment) In this embodiment, during actual operation of a processor for performing speculative execution, statistical data of speculative performance which is a problem in performance is collected in parallel with the processing of the processor.
Performance tuning is performed based on the collected statistical data.

【0023】投機実行とは、動作予測に従い先行して投
機的に処理を投入し、予測が外れていた場合には、投機
実行の結果を取り消し、必要に応じて正しい処理をやり
直すことにより、結果の正当性を保証する処理方式であ
る。投機実行は、制御投機とデータ投機に分類される。
制御投機は、制御依存を無視して先行的に命令の実行を
開始する方法であり、データ投機は、データ依存を無視
して先行的にデータの値やデータのアドレスを予測し実
行を開始する方法である。投機実行の代表例に、プログ
ラム中の条件分岐命令において分岐先を実行前に予測す
る分岐予測がある。分岐予測は、コンパイル時に予測す
る静的分岐予測と、実行時に予測する動的分岐予測に分
類される。本実施例は、制御投機およびデータ投機を行
う処理部分をコンパイル時点で決定する静的予測手法を
用いる。以下、本実施例の前提となる静的予測による投
機実行について説明する。
Speculative execution means that speculative processing is input in advance in accordance with the motion prediction, and if the prediction is incorrect, the result of the speculative execution is canceled and the correct processing is redone as necessary, thereby obtaining the result. Is a processing method that guarantees the validity of Speculative execution is classified into control speculation and data speculation.
The control speculation is a method of ignoring the control dependence and starting the execution of the instruction in advance, and the data speculation ignoring the data dependence and predicting the value of the data or the address of the data and starting the execution. Is the way. A typical example of speculative execution is branch prediction in which a branch destination is predicted before execution in a conditional branch instruction in a program. Branch prediction is classified into static branch prediction predicted at compile time and dynamic branch prediction predicted at execution time. The present embodiment uses a static prediction method of determining a processing part for performing control speculation and data speculation at the time of compilation. Hereinafter, speculative execution based on static prediction, which is a premise of the present embodiment, will be described.

【0024】図1に、或るプログラムの開始Strat
1から終了End2までの実行フローが示されている。
この実行フローにおいては、処理3aが完了するまで
は、条件判断4a、条件判断4bの条件が確定しない。
このため、処理3cを処理3aと同時に実行する場合、
処理3cの実行は制御投機となる。処理3bではなく、
処理3cに投機するのは、コンパイル時点の静的予測に
より、処理3cの方が投機の確実性が高いと判断された
ことによる。他方、処理3eは、条件判断4a、4bの
結果に依存せずに必ず実行されるため制御投機は不要で
あるが、処理3aとデータ依存がある場合、処理3eを
処理3aと同時に実行すると、処理3eの実行はデータ
投機となる。静的予測では、このようなデータ依存関係
の予測も可能であり、予測部分の投機実行により性能の
向上が図れる。従って、処理3cおよび処理3eを処理
3aと同時に実行する場合、制御投機およびデータ投機
の双方が実施されていることになる。
FIG. 1 shows the start Strat of a certain program.
The execution flow from 1 to end 2 is shown.
In this execution flow, the conditions of the condition judgment 4a and the condition judgment 4b are not determined until the process 3a is completed.
Therefore, when the process 3c is performed simultaneously with the process 3a,
The execution of the process 3c is a control speculation. Instead of processing 3b,
The reason for speculation in the process 3c is that it is determined that the process 3c has higher speculation certainty based on static prediction at the time of compilation. On the other hand, since the process 3e is always executed without depending on the results of the condition judgments 4a and 4b, control speculation is unnecessary. However, if the process 3a and the data are dependent, the process 3e is executed at the same time as the process 3a. Execution of the process 3e is data speculation. In the static prediction, such data dependence can be predicted, and performance can be improved by performing speculative execution of a predicted portion. Therefore, when the processing 3c and the processing 3e are executed simultaneously with the processing 3a, both the control speculation and the data speculation are performed.

【0025】制御投機およびデータ投機を行う処理部分
を静的予測によって決定したプログラムの実行方法とし
ては、例えば特開平10−27108号公報(以下、文
献4と称す)に記載されたスレッド実行方法がある。同
文献4では、処理の割り当て単位をスレッドと呼び、複
数のスレッド実行部を使って親子関係にある複数のスレ
ッドを並列に実行する。その際、親スレッドの処理が或
る程度確定するまで子スレッドを確実に生成することが
わからない場合に、投機的に子スレッドを生成し、その
後の親スレッドの処理の進み方によって、仮に生成した
子スレッドを確定させたり、取り消したりする。そのた
めに、親スレッドがプログラム実行上の正当性が確定す
る前に子スレッドを投機的に生成するための投機的スレ
ッド生成命令、正当性が確認された後にその結果を子ス
レッドに伝えるための投機成功通知命令、不当な生成で
ある場合に子スレッドの実行を取り消すための投機失敗
通知命令といった特殊命令が用意される。また、スレッ
ド実行部に、実行に伴う作用を取り消すための機構が設
けられ、その機能の許容する範囲内でスレッドの仮実行
を行う。更に、親スレッドのスレッド実行部が投機成功
通知命令を実行すると、その情報が子スレッドを実行し
ているスレッド実行部に伝えられ、子スレッド実行部は
通常状態に遷移し、他方、親スレッドのスレッド実行部
が投機失敗通知命令を実行すると、その情報が子スレッ
ドを実行しているスレッド実行部に伝えられ、子スレッ
ドの実行を取り消し、さらに、親スレッドのスレッド実
行部においてもスレッド生成を行っていない状態に戻す
ようにしている。
As a method of executing a program in which a processing part for performing control speculation and data speculation is determined by static prediction, for example, a thread execution method described in Japanese Patent Application Laid-Open No. 10-27108 (hereinafter referred to as Reference 4) is used. is there. In Patent Document 4, a process allocation unit is called a thread, and a plurality of threads in a parent-child relationship are executed in parallel using a plurality of thread execution units. At this time, if it is not known that the child thread will be reliably generated until the processing of the parent thread is determined to some extent, the child thread is generated speculatively, and the child thread is temporarily generated depending on how the processing of the parent thread proceeds. Commit or cancel a child thread. Therefore, a speculative thread generation instruction for speculatively generating a child thread before the parent thread is determined to be valid for program execution, and a speculation for transmitting the result to the child thread after the validity is confirmed. Special instructions such as a success notification instruction and a speculative failure notification instruction for canceling the execution of the child thread in the case of improper generation are prepared. The thread execution unit is provided with a mechanism for canceling an action associated with the execution, and executes a thread temporarily within a range permitted by the function. Further, when the thread execution unit of the parent thread executes the speculative success notification instruction, the information is transmitted to the thread execution unit executing the child thread, and the child thread execution unit transitions to the normal state, while the parent thread executes When the thread execution unit executes the speculation failure notification instruction, the information is transmitted to the thread execution unit that is executing the child thread, cancels the execution of the child thread, and also generates a thread in the thread execution unit of the parent thread. I try to return to the state that has not been.

【0026】図2は投機が成功する場合の動作例を、図
3は投機が失敗する場合の動作例をそれぞれ示す。図2
において、スレッド#0が投機的スレッド生成命令11
を実行すると、スレッド#1が生成され、仮実行状態で
スレッド#1の実行が開始され、スレッド#0はスレッ
ド仮生成状態となる。スレッド#1の仮実行状態でスレ
ッド生成命令12が実行されると、それによって生成さ
れるスレッド#2もスレッド#1の仮実行属性を引き継
ぎ、仮実行状態で実行される。スレッド#0が条件分岐
命令13を実行後、この条件分岐によってスレッド生成
の投機が正しいと確定すると、投機成功通知命令14を
実行する。これによって、スレッド#1、スレッド#2
の仮実行状態が解除され、スレッド#0はスレッド生成
状態となる。
FIG. 2 shows an operation example when speculation is successful, and FIG. 3 shows an operation example when speculation fails. FIG.
, The thread # 0 is a speculative thread generation instruction 11
Is executed, the thread # 1 is generated, the execution of the thread # 1 is started in the temporary execution state, and the thread # 0 enters the thread temporary generation state. When the thread generation instruction 12 is executed in the temporary execution state of the thread # 1, the thread # 2 generated thereby also inherits the temporary execution attribute of the thread # 1 and is executed in the temporary execution state. After the thread # 0 executes the conditional branch instruction 13, when the speculative creation of the thread is determined to be correct by the conditional branch, the speculative success notification instruction 14 is executed. As a result, thread # 1, thread # 2
Is released, and the thread # 0 enters a thread generation state.

【0027】図3においても同様に実行されるが、条件
分岐命令13が逆方向に分岐し、これによってスレッド
生成の投機が不正であると確定する。この時、スレッド
#0は投機失敗通知命令15を実行する。これによっ
て、スレッド#1及びスレッド#2の実行は取り消され
る。この投機失敗通知命令15を実行することにより、
スレッド#0はスレッド仮生成状態からスレッド未生成
状態に戻り、再びスレッド生成命令16を実行してスレ
ッド#3を生成することが可能になる。なお、投機的な
スレッド生成に失敗した時に投機的な実行による副作用
が生じないように、共有メモリなどへの書き込みは抑止
され、別途設けられた仮実行用バッファが代わりに使用
される。
In FIG. 3, the execution is performed in the same manner, but the conditional branch instruction 13 branches in the reverse direction, thereby confirming that the speculation of thread generation is incorrect. At this time, the thread # 0 executes the speculation failure notification instruction 15. As a result, the execution of the thread # 1 and the thread # 2 is canceled. By executing the speculation failure notification instruction 15,
The thread # 0 returns from the thread temporary generation state to the thread non-generation state, and can execute the thread generation instruction 16 again to generate the thread # 3. Note that writing to a shared memory or the like is suppressed so that speculative execution does not cause a side effect when speculative thread generation fails, and a separately provided temporary execution buffer is used instead.

【0028】さて、図4を参照すると、本発明を適用し
たプロセッサ25の一例は、MPU演算実行部20に対
して、投機指示バス22、付加情報バス23および結果
アクセスバス24を介して、本発明にかかるプロセッサ
性能データ収集装置の一実施例である投機情報収集装置
21が接続された構成を有する。
Referring now to FIG. 4, an example of a processor 25 to which the present invention is applied is provided to an MPU operation execution unit 20 via a speculative instruction bus 22, an additional information bus 23, and a result access bus 24. It has a configuration in which a speculative information collecting device 21 which is one embodiment of a processor performance data collecting device according to the present invention is connected.

【0029】MPU演算実行部20は、前述したような
投機実行を行う機能を有するプロセッサにデータ採取手
段27および最適化手段28を組み込んだものである。
データ採取手段27は、MPU演算実行部20上でのプ
ログラムの実行中に、投機情報収集装置21へ以下のよ
うな情報を出力する。
The MPU operation execution unit 20 is one in which a data collection unit 27 and an optimization unit 28 are incorporated in a processor having a function of performing speculative execution as described above.
The data collection unit 27 outputs the following information to the speculative information collection device 21 during execution of the program on the MPU operation execution unit 20.

【0030】(1)投機処理の開始時 MPU演算実行部20上でのプログラム実行中に投機処
理が開始する都度、その事象を検出し、投機処理が開始
された旨及び投機命令のアドレスを、投機指示バス22
を通じて投機情報収集装置21に出力する。対象となる
投機処理としては、例えば図2、図3の投機的スレッド
生成命令11がある。勿論、投機的に実行されるメモリ
ロード命令や条件分岐命令など、他の投機処理を対象に
することもできる。
(1) At the start of the speculative processing Each time the speculative processing is started during the execution of the program on the MPU operation execution unit 20, the event is detected, and the fact that the speculative processing has been started and the address of the speculative instruction are determined. Speculation instruction bus 22
To the speculation information collection device 21 through The target speculative processing includes, for example, the speculative thread generation instruction 11 shown in FIGS. Of course, other speculative processing such as a memory load instruction or a conditional branch instruction that is executed speculatively can also be targeted.

【0031】(2)投機処理の終了時 MPU演算実行部20上でのプログラム実行中に投機処
理が完了する都度、その事象を検出し、投機処理が完了
した旨、完了種別(成功完了か失敗完了かの種別)およ
び投機命令アドレスを、投機指示バス22を通じて投機
情報収集装置21に出力する。例えば図2の場合、投機
成功通知命令14の実行時点で投機的スレッド生成命令
11にかかる投機処理が成功完了するので、投機処理が
完了した旨、成功完了および投機的スレッド生成命令1
1のアドレスを出力し、図3の場合は、投機失敗通知命
令の実行時点で投機的スレッド生成命令11にかかる投
機処理が失敗完了するので、投機処理が完了した旨、失
敗完了および投機的スレッド生成命令11のアドレスを
出力する。
(2) At the end of the speculative processing Each time the speculative processing is completed during execution of the program on the MPU operation execution unit 20, the event is detected, and the fact that the speculative processing is completed is described as a completion type (success completion or failure). Completion type) and the speculative instruction address are output to the speculative information collecting device 21 through the speculative instruction bus 22. For example, in the case of FIG. 2, the speculative process related to the speculative thread generation instruction 11 is completed successfully at the time of execution of the speculative success notification instruction 14, so that the speculation process is completed, the completion of the speculation is completed, and the speculative thread generation instruction 1
In the case of FIG. 3, the speculative process relating to the speculative thread generation instruction 11 is completed at the time of execution of the speculative failure notification instruction. In the case of FIG. The address of the generation instruction 11 is output.

【0032】(3)投機実行中 MPU演算実行部20上のプログラムで投機処理が実行
されている最中、当該投機処理が失敗完了した場合の無
駄なコストを見積もるのに必要なデータを付加情報とし
て採取し、当該投機処理の投機命令アドレスと共に付加
情報バス23を通じて投機情報収集装置21に出力す
る。無駄なコストを見積もるのに必要なデータとして
は、命令数、ストア/ロードしたデータ量などがある。
例えば図3の場合、投機的スレッド生成命令11が失敗
完了した場合の無駄なコストは、仮実行状態のスレッド
#1、#2が実行した命令数あるいはメモリにストア/
ロードしたデータ量などで見積もることができる。命令
数を付加情報とする場合、データ採取手段27は、投機
的スレッド生成命令11で生成されたスレッド#1、#
2が仮実行状態になっている期間において命令が実行さ
れる都度、投機的スレッド生成命令11のアドレスを伴
って命令が1つ実行された旨の付加情報を出力する。ま
たメモリにストア/ロードしたデータ量を付加情報とす
る場合、データ採取手段27は、投機的スレッド生成命
令11で生成されたスレッド#1、#2が仮実行状態に
なっている期間においてメモリストア/ロード命令が実
行される都度、投機的スレッド生成命令11のアドレス
を伴ってそのストア/ロードしたデータ量を付加情報と
して出力する。
(3) During speculative execution While speculative processing is being executed by the program on the MPU operation execution unit 20, data necessary for estimating a useless cost when the speculative processing has failed is added to the additional information. And outputs it to the speculative information collecting device 21 through the additional information bus 23 together with the speculative command address of the speculative process. The data necessary for estimating the unnecessary cost includes the number of instructions, the amount of stored / loaded data, and the like.
For example, in the case of FIG. 3, the wasteful cost when the speculative thread generation instruction 11 has failed is determined by the number of instructions executed by the threads # 1 and # 2 in the tentative execution state or stored / stored in the memory.
It can be estimated based on the amount of data loaded. In the case where the number of instructions is used as the additional information, the data collection unit 27 generates the threads # 1, ## generated by the speculative thread generation instruction 11.
Every time the instruction is executed during the period when the instruction 2 is in the provisional execution state, additional information indicating that one instruction has been executed is output with the address of the speculative thread generation instruction 11. In the case where the amount of data stored / loaded in the memory is used as the additional information, the data collection unit 27 performs memory storage during a period in which the threads # 1 and # 2 generated by the speculative thread generation instruction 11 are in the temporary execution state. Each time the / load instruction is executed, the amount of data stored / loaded is output as additional information along with the address of the speculative thread generation instruction 11.

【0033】データ採取手段27の実現例としては、文
献1において採用されているように必要な情報を採取し
て出力するルーチンをプログラム中に組み込む構成があ
る。しかし、プログラムの実行速度を低下させないよう
に、文献3において採用されているようなハードウェア
によって必要な情報を採取して出力する構成が望まし
い。文献3に記載のハードウェア構成を流用することも
可能であり、その場合は、採取した情報をバッファに蓄
積する代わりにバス22、23を通じて投機情報収集装
置21に出力する構成とする。勿論、他のハードウェア
構成を採用しても良い。
As an implementation example of the data collecting means 27, there is a configuration in which a routine for collecting and outputting necessary information is incorporated in a program as adopted in the literature 1. However, it is desirable to adopt a configuration in which necessary information is collected and output by hardware such as that employed in Reference 3 so as not to lower the execution speed of the program. It is also possible to divert the hardware configuration described in Literature 3, and in this case, the collected information is output to the speculative information collection device 21 through the buses 22 and 23 instead of being stored in the buffer. Of course, other hardware configurations may be employed.

【0034】投機情報収集装置21は、MPU演算実行
部20と並行して動作するハードウェア機構であり、M
PU演算実行部20中のデータ採取手段27から投機指
示バス22を通じて出力されるデータを入力して性能上
問題となる投機の統計データを内部メモリ上に生成す
る。また、付加情報バス23を通じて出力される付加情
報も前記統計データの一部として内部メモリに蓄積す
る。内部メモリ上に生成された統計データは、結果アク
セスバス24を通じてMPU演算実行部20から読み取
られ、最適化手段28によるプログラムの最適化に供さ
れる。
The speculative information collection device 21 is a hardware mechanism that operates in parallel with the MPU operation execution unit 20.
The data output from the data collection means 27 in the PU operation execution unit 20 through the speculation instruction bus 22 is input, and statistical data of speculation which causes a problem in performance is generated in an internal memory. The additional information output through the additional information bus 23 is also stored in the internal memory as a part of the statistical data. The statistical data generated on the internal memory is read from the MPU operation execution unit 20 through the result access bus 24, and is used for optimization of the program by the optimization unit 28.

【0035】図5を参照すると、投機情報収集装置21
の一例は、連想表30、投機確率データ更新回路43、
抽出部移行限度レジスタ44、入れ替え候補決定回路4
5、付加情報更新回路46、結果アクセス制御回路48
および投機指示処理回路49を備えている。
Referring to FIG. 5, the speculative information collecting device 21
Is an association table 30, a speculative probability data update circuit 43,
Extraction unit transfer limit register 44, replacement candidate determination circuit 4
5. Additional information updating circuit 46, result access control circuit 48
And a speculation instruction processing circuit 49.

【0036】連想表30は、n+m個のエントリを有す
るフルアソシアティブ方式の連想メモリであり、そのう
ち連続するn個のエントリで抽出部連想メモリ31が構
成され、残りm個のエントリで巡回部連想メモリ32が
構成される。最終的に、抽出部連想メモリ31には実行
性能の低下に及ぼす影響が大きい上位n個の投機実行に
関する統計データが記憶される。巡回部連想メモリ32
は、統計的な信頼度が未だ充分でないか或いは信頼度が
充分であっても上位n個に入らない統計データを一時的
に記憶するために使用される。
The associative table 30 is a fully associative associative memory having n + m entries. Of the n consecutive entries, the extractor associative memory 31 is composed, and the remaining m entries are the cyclic associative memory. 32 are configured. Finally, the extraction unit associative memory 31 stores the statistical data relating to the top n speculative executions that have a large effect on the deterioration of the execution performance. Circuit associative memory 32
Is used to temporarily store statistical data for which the statistical reliability is not yet sufficient or which does not fall into the top n even if the reliability is sufficient.

【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内に設けられる。
Each entry of the association table 30 is associated with an association key unit 33.
And a data section. The data section is divided into a speculation probability data section 34, an order / LRU information section 35, and an additional information section 36. The associative key section 33 has a speculative instruction address 3
7 is registered, and the speculative probability data section 34 stores the number of occurrences 38 of the speculative execution uniquely specified by the speculative instruction address.
And a failure rate 39 indicating the ratio of the failure frequency 39 to the appearance frequency 38. In the order / LRU unit 35, order information is registered in the extraction unit associative memory 31. That is, the entries in the extraction unit associative memory 31 are logically arranged in ascending order of the failure rate 40 according to the order information registered in the order / LRU information unit 35, as shown in FIG. In FIG. 6, reference numeral 61 denotes a pointer indicating the entry 60 having the smallest failure rate among the n entries, and is provided in the replacement candidate determination circuit 45.

【0038】また、巡回部連想メモリ32では順序/L
RU情報部35にLRU情報が登録され、LRUアルゴ
リズムに従って最も長い間参照されていないエントリが
再利用される。つまり、m個のエントリから構成される
巡回部連想メモリ32は、図6に示されるように、最も
最近参照されたものから順に論理的に並べられ、最も長
い間参照されていないエントリ62を指し示すポインタ
63を有する入れ替え候補決定回路45が、そのポイン
タ63を用いてLRU方式で巡回部連想メモリ32中の
書き潰すエントリを決定する。
Further, in the traveling unit associative memory 32, the order / L
The LRU information is registered in the RU information section 35, and the entry that has not been referred to for the longest time is reused according to the LRU algorithm. That is, as shown in FIG. 6, the recurring unit associative memory 32 composed of m entries is logically arranged in order from the most recently referred to, and indicates the entry 62 that has not been referred to for the longest time. The replacement candidate determination circuit 45 having the pointer 63 uses the pointer 63 to determine an entry to be overwritten in the recurring unit associative memory 32 by the LRU method.

【0039】さらに付加情報部36には、投機実行中に
発生した巻き戻しのためのデータ量等の付加情報41が
登録される。付加情報部36は、現在までに失敗した全
ての投機実行にかかる付加情報の累積値(全累積値と称
す)と、現実行中の投機にかかる付加情報の累積値(現
累積値と称す)とを保持しており、現実行中の投機が失
敗完了したとき、現累積値が全累積値に加算される。
Further, in the additional information section 36, additional information 41 such as a data amount for rewinding generated during speculation is registered. The additional information section 36 has a cumulative value (referred to as a total cumulative value) of additional information relating to all speculative executions that have failed up to the present time, and a cumulative value (referred to as a current cumulative value) of additional information relating to the currently executing speculative execution. When the currently executing speculation has been failed, the current cumulative value is added to the total cumulative value.

【0040】投機指示処理回路49は、投機指示バス2
2を通じてMPU演算実行部20に接続されている。デ
ータ採取手段27から投機指示バス22を通じて投機処
理の開始とその投機命令アドレス、または投機処理の終
了とその投機命令アドレスと完了種別が送られてくる毎
に、投機指示処理回路49はそれらを投機確率データ更
新回路43及び付加情報更新回路46に伝達すると同時
に、投機命令アドレスを投機命令アドレス線42に出力
する。投機命令アドレス線42は連想表30の各エント
リの連想キー部33に接続されており、各連想キー部3
3内の比較器において、当該連想キー部33に登録され
ている投機命令アドレスと投機命令アドレス線42上の
投機命令アドレスとが比較され、それぞれの比較結果が
比較結果線26を通じて投機確率データ更新回路43に
伝達される。
The speculation instruction processing circuit 49 includes a speculation instruction bus 2
2 is connected to the MPU operation execution unit 20. Each time the speculative processing start and its speculative instruction address or the speculative processing end and its speculative instruction address and completion type are sent from the data collection means 27 via the speculative instruction bus 22, the speculative instruction processing circuit 49 speculates them. At the same time as transmitting to the probability data updating circuit 43 and the additional information updating circuit 46, the speculative command address is output to the speculative command address line 42. The speculative command address line 42 is connected to the associative key section 33 of each entry of the associative table 30,
3, the speculative instruction address registered in the associative key unit 33 and the speculative instruction address on the speculative instruction address line 42 are compared, and the respective comparison results are updated via the comparison result line 26. The signal is transmitted to the circuit 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中のエントリの確保要
求を出し、確保されたエントリのデータ部を初期化す
る。
The speculation probability data updating circuit 43 uses the association table 3
0 is a circuit for updating the speculative probability data part 34 of each entry, and the number of occurrences 38, the number of failures 39, and the failure rate in the speculative probability data part 34 of the entry for which the match of the speculative instruction address is reported by the comparison result line 26 Update 40.
Specifically, when the notification from the speculation instruction processing circuit 49 is the start of the speculation process, the number of appearances 38 is incremented by one. Also,
If the notification from the speculation instruction processing circuit 49 is the end of the speculation processing, and if the completion type is failure completion, the number of failures 39
After +1 is added, if the completion is successful, the failure rate 40 is not calculated and the failure rate 40 is recalculated and registered again. The replacement candidate determination circuit 45 specifies the entry.
Activate the replacement process. If none of the comparison result lines 26 indicate a match, that is, if the speculative instruction address output to the speculative instruction address line 42 is not registered in the association table 30, the speculative probability data update circuit 43 A request for securing the entry in the traveling unit associative memory 32 is issued, and the data portion of the secured entry is initialized.

【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に登録されている内容とを入れ替え
る。
When the replacement process is started by the speculation probability data updating circuit 43, the replacement candidate determination circuit 45 performs the following process. (1) If the current entry whose failure rate 40 has been updated is an entry included in the extraction unit associative memory 31, the m entries in the extraction unit associative memory 31 have the failure rate 40 value as described with reference to FIG. And updates the order information and the pointer 61 of the order / LRU information section 35 as necessary so that they are logically arranged in ascending order. (2) If the current entry whose failure rate 40 has been updated is an entry included in the traveling unit associative memory 32, it is determined whether or not it is necessary to replace the entry with the entry in the extracting unit associative memory 31. When the following conditions are satisfied, it is determined that replacement is necessary. (A) The number of appearances 38 of the entry is equal to or greater than the threshold value set in the extraction unit transfer limit register 44. (B) The failure rate 40 of the entry is equal to or greater than the failure rate 40 of the entry 60 having the minimum failure rate indicated by the pointer 61 in FIG. Then, when the above conditions (a) and (b) are satisfied, the contents registered in the entry and the contents registered in the entry 60 of the minimum failure rate of the extraction unit associative memory 31 are exchanged.

【0043】ここで、条件(a)を定めた理由は、出現
回数38が或る値より少ない場合、その失敗率40は統
計的な信頼度が未だ充分でないためである。この条件を
加味することによって、統計的な信頼度が低い統計デー
タによって、統計的な信頼度が高い統計データが抽出部
連想メモリ31から追い出されてしまうことが防止され
る。
Here, the reason why the condition (a) is defined is that when the number of appearances 38 is smaller than a certain value, the failure rate 40 thereof is not yet sufficiently statistically reliable. By taking this condition into account, it is prevented that statistical data having a high statistical reliability is expelled from the extracting unit associative memory 31 by statistical data having a low statistical reliability.

【0044】他方、入れ替え候補決定回路45は、投機
確率データ更新回路43からエントリの確保要求があっ
た場合、巡回部連想メモリ32のn個のエントリのうち
順序/LRU情報部35が最も長い間参照されていない
エントリ、つまり図6のポインタ63が指示するエント
リ62を追い出すエントリに決定する。そして、連想キ
ー更新指示線50によって当該エントリ62の連想キー
部33に今回の投機命令アドレスを登録し、また付加情
報更新回路46を通じて当該エントリ62の付加情報部
36を初期化した後、そのエントリ62を投機確率デー
タ更新回路43に通知する。
On the other hand, when there is a request for securing an entry from the speculative probability data update circuit 43, the replacement candidate determination circuit 45 determines that the order / LRU information section 35 of the n The entry that is not referred to, that is, the entry 62 indicated by the pointer 63 in FIG. Then, the present speculative instruction address is registered in the associative key section 33 of the entry 62 by the associative key update instruction line 50, and the additional information section 36 of the entry 62 is initialized through the additional information updating circuit 46. 62 is notified to the speculation probability data update circuit 43.

【0045】なお、入れ替え候補決定回路45は、連想
表30のエントリの連想キー部33に新たな投機命令ア
ドレスを登録する毎およびエントリの入れ替え毎に、付
加情報更新回路46内に設けられているエントリと投機
命令アドレスとの対応表(図示せず)を更新する。ま
た、エントリを実際に入れ替えたか否かにかかわらず、
入れ替え処理を終えた時点でその旨を付加情報更新回路
46に通知する。
The replacement candidate determination circuit 45 is provided in the additional information updating circuit 46 every time a new speculative instruction address is registered in the associative key section 33 of an entry in the associative table 30 and each time an entry is replaced. The correspondence table (not shown) between the entry and the speculative instruction address is updated. Also, regardless of whether or not the entry was actually swapped,
When the replacement process is completed, the fact is notified to the additional information updating circuit 46.

【0046】付加情報更新回路46は、付加情報バス2
3を通じてMPU演算実行部20に接続されている。付
加情報バス23を通じてデータ採取手段27から投機命
令アドレスを伴った付加情報が送られてくる毎に、付加
情報更新回路46は、当該投機命令アドレスが登録され
ているエントリを前記対応表を参照して特定し、当該エ
ントリの付加情報部36における現累積値に付加情報を
累積する。そして、投機指示処理回路49から失敗完了
した投機命令アドレスが通知されてきた場合、入れ替え
候補決定回路45から入れ替え処理が終了した旨の通知
を受けた後に、失敗完了した投機命令アドレスが登録さ
れているエントリを前記対応表を参照して特定し、当該
エントリの付加情報部36における現累積値を全累積値
に加算する。
The additional information updating circuit 46 is connected to the additional information bus 2
3 is connected to the MPU operation execution unit 20. Each time additional information with a speculative instruction address is sent from the data collection means 27 through the additional information bus 23, the additional information updating circuit 46 refers to the correspondence table for the entry in which the speculative instruction address is registered. Then, the additional information is accumulated in the current accumulated value in the additional information section 36 of the entry. When the speculative instruction address of the failed completion is notified from the speculative instruction processing circuit 49, after receiving the notification that the replacement process is completed from the replacement candidate determination circuit 45, the speculative instruction address of the failed completion is registered. The entry that has been specified is specified with reference to the correspondence table, and the current cumulative value in the additional information section 36 of the entry is added to the total cumulative value.

【0047】結果アクセス制御回路48は、結果アクセ
スバス24を通じてMPU演算実行部20に接続され、
連想表30の抽出部連想メモリ31とはデータ線および
アドレス線を含む結果アクセス線47で接続されてお
り、MPU演算実行部20からのアドレス指定で連想表
30の抽出部連想メモリ31の各エントリの内容を読み
出せるようになっている。また、抽出部移行限度レジス
タ44にも接続されており、MPU演算実行部20から
の抽出移行限度レジスタ44へ事前に閾値を設定できる
ようになっている。
The result access control circuit 48 is connected to the MPU execution unit 20 through the result access bus 24,
Each entry of the extraction unit associative memory 31 of the associative table 30 is connected to the extracting unit associative memory 31 of the associative table 30 by a result access line 47 including a data line and an address line. Can be read. Further, it is also connected to the extraction unit transition limit register 44, so that a threshold value can be set in advance in the extraction transition limit register 44 from the MPU operation execution unit 20.

【0048】次に投機情報収集装置21の全体的な動作
の流れについて、図7および図8のフローを参照して以
下説明する。
Next, an overall operation flow of the speculative information collecting apparatus 21 will be described below with reference to FIGS. 7 and 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)。
Data collection means 2 of MPU operation execution unit 20
7, the start of the speculative processing and the speculative instruction address are sent via the speculative instruction bus 22 (S1), and the speculative instruction processing circuit 49 uses the speculative instruction address to associate the associative table 3
The associative key unit 33 of 0 is searched (S2). If there is no entry having the speculation instruction address in the associative key unit 33 (NO in S3), the replacement candidate determination circuit 45
Is determined as the entry to be written out of the entry 62 that has not been referred to for the longest time among the entries of the recurring unit associative memory 32 (S4), and the entry is initialized (S5).
That is, the present speculation instruction address is registered in the associative key unit 33 of the entry 62 by the replacement candidate determination circuit 45, and the additional information unit 36 is registered by the additional information updating circuit 46.
Is initialized, and the speculative probability data updating circuit 43 sets the number of appearances 38 in the speculative probability data section 35 of the entry 62 to the value “1”, the number of failures 39 to the value “0”, and the failure rate 4
The value “0” is registered in “0”. The order / L of the entry 62 is determined by the replacement candidate determination circuit 45.
The LRU information of the RU information section 35 is updated (S8).

【0050】他方、当該投機命令アドレスを連想キー部
33に持つエントリが既に存在していた場合(S3でY
ES)、投機確率データ更新回路43は、当該エントリ
の投機確率データ部34における出現回数38を+1す
る(S6)。次に、当該エントリが巡回部連想メモリ3
2のエントリであった場合(S7でYES)、入れ替え
候補決定回路45により当該エントリの順序/LRU情
報部35のLRU情報を更新する(S8)。
On the other hand, if an entry having the speculative instruction address in the associative key section 33 already exists (Y in S3)
ES), the speculation probability data update circuit 43 increments the number of appearances 38 of the entry in the speculation probability data section 34 by 1 (S6). Next, the entry is stored in the traveling unit associative memory 3.
If the entry is No. 2 (YES in S7), the replacement candidate determination circuit 45 updates the order / LRU information in the LRU information section 35 of the entry (S8).

【0051】その後、当該エントリに登録された投機命
令アドレスを伴う付加情報が付加情報バス23を通じて
MPU演算実行部20のデータ採取手段27から送られ
てくる毎に、付加情報更新回路46は、当該投機命令ア
ドレスを持つエントリの付加情報部36における現累積
値に今回の付加情報を累積する処理を行う。
Thereafter, each time additional information accompanied by the speculative instruction address registered in the entry is sent from the data collection means 27 of the MPU execution unit 20 via the additional information bus 23, the additional information updating circuit 46 A process of accumulating the current additional information on the current accumulated value in the additional information section 36 of the entry having the speculative instruction address is performed.

【0052】次に、MPU演算実行部20のデータ採取
手段27から投機指示バス22を通じて投機処理の終了
とその投機命令アドレス及び完了種別が送られてくると
(S11)、投機指示処理回路49によって当該投機命
令アドレスで連想表30の連想キー部33が検索される
(S12)。当該投機命令アドレスを持つエントリは投
機開始時点で必ず確保されており、そのLRU情報も更
新されているため、巡回部連想メモリ32のエントリ数
mを或る数以上に設定しておくことで、当該検索は必ず
成功する。次に投機確率データ更新回路43によって、
完了種別が失敗完了である場合に限って、検索されたエ
ントリの失敗回数39を+1した後、失敗率40を更新
する(S13)。以降は、当該エントリが抽出部連想メ
モリ31のエントリか、巡回部連想メモリ32のエント
リかで処理が分かれる。
Next, when the end of the speculative processing and the speculative command address and the completion type are sent from the data collecting means 27 of the MPU operation executing section 20 via the speculative instruction bus 22 (S11), the speculative instruction processing circuit 49 The associative key section 33 of the associative table 30 is searched with the speculative instruction address (S12). The entry having the speculation instruction address is always secured at the time of the start of the speculation, and the LRU information thereof has been updated. Therefore, by setting the number of entries m of the traveling unit associative memory 32 to a certain number or more, The search always succeeds. Next, the speculative probability data updating circuit 43
Only when the completion type is failure completion, the failure count 39 of the retrieved entry is incremented by 1, and then the failure rate 40 is updated (S13). Thereafter, the process is divided depending on whether the entry is an entry in the extraction unit associative memory 31 or an entry in the traveling unit associative memory 32.

【0053】抽出部連想メモリ31のエントリであった
場合(S14でYES)、入れ替え候補決定回路45
は、当該エントリの失敗率40が抽出部連想メモリ31
における1つ上位のエントリの失敗率40を超えたか否
かを判定し(S15)、超えていれば、1つ上位のエン
トリと当該エントリの順序を入れ替える(S16)。
If the entry is in the extraction unit associative memory 31 (YES in S14), the replacement candidate determination circuit 45
Means that the failure rate 40 of the entry is
Then, it is determined whether or not the failure rate 40 of the next higher entry has exceeded (S15), and if so, the order of the next higher entry and the entry concerned is exchanged (S16).

【0054】巡回部連想メモリ32のエントリであった
場合(S14でNO)、入れ替え候補決定回路45は、
当該エントリの出現回数38が抽出部移行限度レジスタ
44に設定された閾値を超えたか否かを判定し(S1
7)、超えていなければ、当該エントリのLRU情報を
更新して(S18)、処理を終える。超えていれば、当
該エントリの失敗率40が抽出部連想メモリ31の最下
位失敗率を超えたか否かを調べ(S19)、超えていな
ければ、当該エントリのLRU情報を更新して(S1
8)、処理を終える。最下位失敗率を超えていた場合
は、当該エントリと抽出部連想メモリ31の最下位失敗
率のエントリとを入れ替え(S20)、巡回部連想メモ
リ32に移行したエントリのLRU情報を更新し(S2
1)、処理を終える。
If the entry is in the traveling unit associative memory 32 (NO in S14), the replacement candidate determination circuit 45
It is determined whether the number of appearances 38 of the entry has exceeded a threshold value set in the extraction unit transfer limit register 44 (S1).
7) If not exceeded, the LRU information of the entry is updated (S18), and the process ends. If so, it is checked whether the failure rate 40 of the entry exceeds the lowest failure rate of the extraction unit associative memory 31 (S19). If not, the LRU information of the entry is updated (S1).
8) Finish the processing. If the lowest failure rate is exceeded, the entry and the entry with the lowest failure rate in the extraction unit associative memory 31 are exchanged (S20), and the LRU information of the entry transferred to the traveling unit associative memory 32 is updated (S2).
1), end the process.

【0055】また、投機処理が失敗完了した場合、付加
情報更新回路46は、失敗完了した投機命令アドレスを
持つエントリにおける付加情報部36の現累積値を全累
積値に加算し、現累積値を0に初期化する。
When the speculative process has been completed with failure, the additional information updating circuit 46 adds the current accumulated value of the additional information section 36 in the entry having the failed speculative instruction address to the total accumulated value, and adds the current accumulated value. Initialize to 0.

【0056】以上のような動作が投機情報収集装置21
で行われることにより、最終的に、抽出部連想メモリ3
1には失敗率が大きい上位n個の投機命令アドレス、そ
の出現回数、失敗回数、失敗率、付加情報が残ることに
なる。
The above operation is performed by the speculative information collecting device 21.
Finally, the extraction unit associative memory 3
1, the top n speculative instruction addresses having a high failure rate, the number of appearances, the number of failures, the failure rate, and the additional information remain.

【0057】次に、投機情報収集装置21の抽出部連想
メモリ31に収集された統計データを利用して性能チュ
ーニングを行う最適化手段28について説明する。
Next, the optimizing means 28 for performing performance tuning using the statistical data collected in the extracting unit associative memory 31 of the speculative information collecting apparatus 21 will be described.

【0058】図9に最適化手段28のシステム運用上の
位置付けと処理の概略を示す。ソースプログラム又はそ
の中間コード200は、既存のコンパイラ201によっ
てコンパイルされ、実行モジュール202が生成され
る。このとき、プログラムの字面の解析や更にプロファ
イル203を使用した解析によって確実性の高い投機が
予測され、プログラムの最適化が実施される。プロファ
イルベースの最適化技術を記載した文献として例えば特
開平8−241198号公報(以下、文献5と称す)が
ある。同文献5では、ソースプログラムからプロファイ
ラ用実行形式オブジェクトを生成して仮実行することで
プロファイル203を生成し、このプロファイル203
を参照してソースプログラムを再コンパイルすることで
最適化を実施する。しかし、このようなプロファイルベ
ースの最適化を行っても常に最適な結果が得られるわけ
ではない。その理由は、実行モジュール202を使った
実運用時にはユーザ毎に様々な種類の実データ204が
使われるが、プロファイル生成のための仮実行時にその
ような現実的かつバラエティを持ったデータを用意する
ことは困難であり、それ故、生成されるプロファイル2
03が実運用とは相違するからである。
FIG. 9 schematically shows the positioning of the optimizing means 28 in the system operation and the processing. The source program or its intermediate code 200 is compiled by an existing compiler 201, and an execution module 202 is generated. At this time, speculation with high certainty is predicted by analyzing the character face of the program and further using the profile 203, and the program is optimized. For example, Japanese Patent Application Laid-Open No. H8-241198 (hereinafter, referred to as Document 5) describes a profile-based optimization technique. In Document 5, a profile 203 is generated by generating a profiler executable object from a source program and temporarily executing the object.
The optimization is performed by recompiling the source program with reference to. However, even if such a profile-based optimization is performed, an optimum result is not always obtained. The reason is that, in actual operation using the execution module 202, various types of actual data 204 are used for each user, but such realistic and varied data is prepared during provisional execution for profile generation. Is difficult and hence the profile 2 generated
This is because 03 differs from the actual operation.

【0059】そこで本実施例では、実データ204を使
った実行モジュール202の実運用時に(205)、前
述したように投機情報収集装置21で投機情報を収集
し、この収集された投機情報に基づいて最適化手段28
が再びプログラムの最適化を行うことで、各ユーザの実
環境に応じた動的な最適化を実現している。つまり、最
適化手段28は、投機情報収集装置21の抽出部連想メ
モリ31を結果アクセスバス24および結果アクセス制
御回路48を通じてアクセスし、失敗率の高い上位n個
の投機事象に関する統計データを取得し(206)、こ
の取得した統計データを参照してソース又は中間コード
200の再コンパイルを行って最適化をやり直した実行
モジュール202を生成する。最適化手段28による最
適化のやり直しは、実行モジュール202の実行が終了
する毎に自動的に実施しても良く、ユーザからその旨の
指示が入力された時に実施しても良い。
Therefore, in this embodiment, when the execution module 202 using the actual data 204 is actually operated (205), the speculative information is collected by the speculative information collecting device 21 as described above, and based on the collected speculative information. Optimization means 28
Realizes dynamic optimization according to the real environment of each user by optimizing the program again. That is, the optimizing unit 28 accesses the extraction unit associative memory 31 of the speculative information collecting apparatus 21 through the result access bus 24 and the result access control circuit 48, and obtains statistical data on the top n speculative events having a high failure rate. (206) The source or intermediate code 200 is recompiled with reference to the obtained statistical data to generate the optimized execution module 202. The re-optimization by the optimizing unit 28 may be automatically performed each time the execution of the execution module 202 ends, or may be performed when an instruction to that effect is input from the user.

【0060】本実施例では、失敗率の高い上位n個の投
機事象に関する統計データが実行モジュール202の実
行終了時点で既に得られているため、従来技術のように
最適化時に各投機事象の統計データの中から失敗率の高
い投機事象を選別する処理は不要である。また、順序/
LRU情報部35の順序情報によって失敗率のより高い
ものから順に整列しているため、選別した投機事象を失
敗率の高い順に並べ替える処理も不要である。従って、
たとえば失敗率のより高い投機事象から順に、その失敗
率40が或る基準値以上であれば最適化をやり直してい
き、失敗率40が前記基準値未満の投機事象に至った時
点で最適化すべき投機事象の終了と判定するような効率
的な処理も可能である。
In this embodiment, since the statistical data relating to the top n speculative events having a high failure rate has already been obtained at the end of execution of the execution module 202, the statistical data of each speculative event at the time of optimization as in the prior art is obtained. It is not necessary to select a speculative event having a high failure rate from the data. Also, order /
According to the order information of the LRU information section 35, the sorting is performed in descending order of the failure rate. Therefore, it is unnecessary to rearrange the selected speculative events in the descending order of the failure rate. Therefore,
For example, if the failure rate 40 is equal to or more than a certain reference value, the optimization is redone in order from the speculation event having the higher failure rate, and the optimization should be performed at the time when the failure rate 40 reaches the speculation event less than the reference value. Efficient processing for determining the end of a speculative event is also possible.

【0061】また、本実施例では、投機失敗毎の付加情
報の累積値が付加情報部36の全累積値に蓄積されてい
るため、全累積値を失敗回数39で割ることにより、失
敗1回当たりの無駄なコストを見積もることができる。
このため、失敗率40が或る基準値以上であるが、投機
やり直しのコストが低い投機事象は性能上問題が少ない
として、再最適化の対象から除外するといった処理を、
付加情報に基づいて実施することが可能である。
Further, in this embodiment, since the cumulative value of the additional information for each speculative failure is accumulated in all the cumulative values of the additional information section 36, the total cumulative value is divided by the number of failures 39 to obtain one failure. It is possible to estimate the wasteful cost per unit.
For this reason, a process in which the failure rate 40 is equal to or more than a certain reference value, and a speculation event having a low cost of re-speculation has few problems in performance and is excluded from the target of reoptimization,
It can be performed based on the additional information.

【0062】次に最適化手段28による再最適化の具体
例を説明する。
Next, a specific example of re-optimization by the optimization means 28 will be described.

【0063】(1)制御投機の再最適化 例えばプロファイル203を用いたコンパイラ201の
最適化処理によって図2および図3に示した投機実行を
行う実行モジュール202が生成されたが、実データ2
04を用いた実運用時に投機的スレッド生成命令11の
失敗率が或る基準値以上で且つ投機やり直しのコストも
或る基準値以上であるとの統計データが投機情報収集装
置21で収集されたとする。この場合、最適化手段28
は、投機的スレッド生成命令11の代わりに、スレッド
#3を生成する投機的スレッド生成命令を用いることに
より、スレッド#1、#2の投機実行に代えてスレッド
#3を投機実行するよう最適化する。
(1) Re-optimization of control speculation For example, the execution module 202 for performing the speculation execution shown in FIGS. 2 and 3 is generated by the optimization processing of the compiler 201 using the profile 203.
It is assumed that the statistical data indicating that the failure rate of the speculative thread generation instruction 11 is equal to or more than a certain reference value and the cost of re-speculation is equal to or more than a certain reference value during the actual operation using the speculation information collection device 21. I do. In this case, the optimization means 28
Is optimized to speculatively execute thread # 3 instead of speculative execution of threads # 1 and # 2 by using a speculative thread generation instruction for generating thread # 3 instead of speculative thread generation instruction 11. I do.

【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の失敗完了によ
る投機やり直しコストは大きくなる。
(2) Re-optimization of Data Speculation For example, as shown on the left side of FIG. 10 by the optimization processing of the compiler 201 using the profile 203, the thread # 2 generated by the thread generation instruction 210 of the thread # 1 And two speculative memory load instructions 212 and 21
Execution module 20 optimized to execute 3
It is assumed that statistical data indicating that the failure rate of the speculative memory load instruction 213 is equal to or more than a certain reference value during actual operation using the actual data 204 is collected by the statistical information collection device 21. In addition, the MPU operation execution unit 20 executes a thread # 2 in a speculative state in order to reduce the amount of hardware.
Is not saved, but only the execution state immediately before executing the speculative memory load instruction 212 for executing the first load is saved. If the speculation of the instruction 213 fails, the first speculative memory load instruction 2
It is assumed that a method of rewinding to the state of the speculative memory load instruction 213 by rewinding to 12 and re-executing the instruction immediately before the speculative memory load instruction 213 is adopted. Then, when many instructions are interposed between the speculative memory load instruction 212 and the speculative memory load instruction 213, the cost of re-speculation due to the failure completion of the speculative memory load instruction 213 increases.

【0065】この場合、最適化手段28は、スレッド生
成命令210の挿入を取り止め、スレッド#2で行った
処理をスレッド#1の後に逐次に行うことで投機実行を
無くす選択も可能であるが、そうするとスレッド#2の
投機的メモリロード命令213以前の処理もスレッド#
1と並列に実行できず、性能が返って低下する場合があ
る。そこで最適化手段28は、投機的メモリロード命令
212が失敗率の上位n個に入っていなければ、スレッ
ド#1とスレッド#2の並列処理が性能向上に寄与して
いると判断し、図10の右側に示すように、失敗率の高
い投機的メモリロード命令213の前にスレッド生成命
令214を挿入し、投機的メモリロード命令213を新
たに生成されたスレッド#3の先頭部分に移動するよう
な再最適化を実施する。この再最適化後のプログラムで
も実データ204が変わらなければ投機的メモリロード
命令213の失敗率は高いままであるが、投機的メモリ
ロード命令213がスレッド#3の最初の投機的メモリ
ロード命令として実行されるため、投機失敗時の巻き戻
し量が減り、結果として性能が向上する。
In this case, the optimizing unit 28 can select to eliminate the speculative execution by stopping the insertion of the thread generation instruction 210 and sequentially performing the processing performed by the thread # 2 after the thread # 1. Then, the processing before the speculative memory load instruction 213 of the thread # 2 is also performed by the thread # 2.
1 cannot be executed in parallel, and the performance may return and deteriorate. Therefore, if the speculative memory load instruction 212 is not included in the top n failure rates, the optimizing unit 28 determines that the parallel processing of the thread # 1 and the thread # 2 contributes to the performance improvement. As shown on the right side of FIG. 7, the thread generation instruction 214 is inserted before the speculative memory load instruction 213 having a high failure rate, and the speculative memory load instruction 213 is moved to the head of the newly generated thread # 3. Perform re-optimization. If the actual data 204 does not change even in the program after the reoptimization, the failure rate of the speculative memory load instruction 213 remains high, but the speculative memory load instruction 213 is used as the first speculative memory load instruction of the thread # 3. As a result, the amount of rewinding when speculation fails is reduced, and as a result, performance is improved.

【0066】なお、次以降の実運用において投機的メモ
リロード命令213が高い失敗率として検出された場
合、巻き戻し量が少ないことから再最適化対象から除外
されるか、同じような再最適化が繰り返される。このよ
うな同じ再最適化の繰り返しを防止するには、コンパイ
ラ201及び最適化手段28がどの箇所にどのような理
由でどのような最適化を実施したかをデータベースに記
録しておき、再最適化時に既に対策済か否かを調べるよ
うにすれば良い。
If the speculative memory load instruction 213 is detected as a high failure rate in the following actual operation, it is excluded from the reoptimization target because the rewind amount is small, or a similar reoptimization is performed. Is repeated. In order to prevent the same re-optimization, the compiler 201 and the optimizing unit 28 record in the database the location and the reason why the optimization has been performed. It is sufficient to check whether measures have already been taken at the time of conversion.

【0067】以上のように本実施例の投機情報収集装置
21は、失敗率が大きく且つ統計的な信頼度が基準を満
たす上位n個の投機事象の統計データを記憶する抽出部
連想メモリ31と、統計的な信頼度が未だ基準を満たさ
ないか或いは上位n個に入らない投機事象の統計データ
を一時的に記憶する巡回部連想メモリ32とを備え、発
生した投機事象に関するデータをMPU演算実行部20
から受け取ったとき、当該投機事象の統計データが抽出
部連想メモリ31および巡回部連想メモリ32の何れに
も記憶されていないときは巡回部連想メモリ32に空き
エントリを確保して当該投機事象の統計データを登録す
る。このように巡回部連想メモリ32のエントリが異な
る投機事象の統計データ格納用に再利用されるため、投
機事象のの中には巡回部連想メモリ32に一旦登録され
た後に追い出された結果、失敗回数が正確に計数されな
いものが出てくる。しかし、巡回部連想メモリ32から
追い出される可能性の高い投機事象は出現回数が基準以
下か或いは実行回数の少ないものが殆どであり、出現回
数が多く且つ失敗率が高い投機事象は巡回部連想メモリ
32から追い出されることなく抽出部連想メモリ31へ
と移っていく。この結果、抽出部連想メモリ31と巡回
部連想メモリ32のエントリの総数(n+m)が、投機
事象の数(投機命令の数)より少ない場合であっても、
失敗率が高い上位n個の投機事象の統計データをほぼ確
実に収集することができる。これによって、性能改善に
役立つ統計データを少ないメモリ量で収集することが可
能となる。
As described above, the speculative information collecting apparatus 21 of the present embodiment includes the extracting unit associative memory 31 for storing the statistical data of the top n speculative events having a high failure rate and satisfying the statistical reliability. And a traveling unit associative memory 32 for temporarily storing statistical data of speculative events whose statistical reliability does not satisfy the criteria or fall into the top n, and executes MPU operation on data relating to the speculative events that have occurred. Part 20
When the statistical data of the speculative event is not stored in any of the extraction unit associative memory 31 and the traveling unit associative memory 32, an empty entry is secured in the traveling unit associative memory 32 and the statistical information of the speculative event is received. Register the data. Since the entries in the traveling unit associative memory 32 are reused for storing statistical data of different speculative events, some speculative events are registered once in the traveling unit associative memory 32 and then expelled. Some are not counted correctly. However, most of the speculative events that are likely to be expelled from the traveling unit associative memory 32 are those whose number of appearances is equal to or less than the reference or whose number of executions is small. 32 to the extraction unit associative memory 31 without being expelled. As a result, even if the total number of entries (n + m) in the extraction unit associative memory 31 and the cyclic unit associative memory 32 is smaller than the number of speculative events (the number of speculative instructions),
Statistical data of the top n speculative events with a high failure rate can be collected almost certainly. This makes it possible to collect statistical data useful for improving performance with a small amount of memory.

【0068】抽出部連想メモリ31のエントリ数nおよ
び巡回部連想メモリ32のエントリ数mを余り少なくす
ると、メモリ量は削減できるが収集漏れの危険性が高ま
る。このため、n、mを最低どの程度の数にすべきかは
予備的な実験によって定めるのが望ましい。
If the number n of entries in the associative memory 31 of the extraction unit and the number m of entries in the associative memory 32 of the circulating unit are too small, the memory amount can be reduced, but the risk of omission of collection increases. For this reason, it is desirable to determine the minimum values of n and m by preliminary experiments.

【0069】エントリ数n、mの下限が決まると、メモ
リ量は1エントリ当たりの容量×エントリ数で定まる。
メモリ量をより削減するには、1エントリ当たりの容量
を削減する必要がある。以下では、1エントリ当たりの
容量を、失敗率40に必要なビット数を削減することで
実現する方法を説明する。
When the lower limit of the number of entries n and m is determined, the memory capacity is determined by the capacity per entry × the number of entries.
In order to further reduce the memory amount, it is necessary to reduce the capacity per entry. Hereinafter, a method for realizing the capacity per entry by reducing the number of bits required for the failure rate 40 will be described.

【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全体の容量を削減できる。
Now, the number of appearances 38 and the number of failures 39 are 3
Assuming that 2-bit data is stored in the association table 30, the possible value of the failure rate 40 obtained by dividing the number of failures 39 by the number of appearances 38 is 1.0 from 2 to the power of -32.
It is a decimal value up to. If this is registered in the failure rate 40 as it is, a large number of bits is required. Therefore, the failure rate 40 is focused on the fact that the replacement of the entries in the associative table 30 should be roughly determined, and the dynamic range of the value is wide, but the number of significant digits is not so necessary, and the failure rate 40 is shown in FIG. 4 bits of the mantissa binary notation 51 are represented by a mantissa 53, and 5 bits of the exponent binary notation 52 are represented by an exponent 54.
Is recorded in the failure rate 40 with a total of 9 bits. As a result, the amount of memory per entry, and consequently, the association table 3
0 overall capacity can be reduced.

【0071】図12に、図11のような短縮浮動小数フ
ォーマットで表現された失敗率40を計算する方法の一
例を示す。図12において、式90は失敗率40の計算
式であり、各値の表現形式を添字形式で併記してある。
失敗率40は以下のようにして計算される。
FIG. 12 shows an example of a method for calculating the failure rate 40 expressed in the shortened floating-point format as shown in FIG. In FIG. 12, an expression 90 is a calculation expression of the failure rate 40, and the expression form of each value is also described in a subscript form.
The failure rate 40 is calculated as follows.

【0072】図12の(1)に示されるように、32ビ
ット符号無し整数で表現された失敗回数の最上位の非零
ビットに続くLSB側の4ビットを仮数部S91とし
て、同じく32ビット符号無し整数で表現された出現回
数の最上位の非零ビットに続くLSB側の4ビットを仮
数部T93としてそれぞれ抜き出す。同時に、失敗回数
と出現回数の最上位の非零ビットのずれ量を仮り指数部
Pとする(92)。
As shown in (1) of FIG. 12, the LSB side 4 bits following the most significant non-zero bit of the number of failures expressed as a 32-bit unsigned integer are used as a mantissa part S91, and a 32-bit code is also used. Four bits on the LSB side following the most significant non-zero bit of the number of appearances expressed as a null integer are extracted as the mantissa part T93. At the same time, the shift amount of the most significant non-zero bit between the number of failures and the number of appearances is set as a provisional exponent 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を減算する。
As shown in FIG. 12 (2), the mantissas S and T are divided, and the resulting mantissa binary notation 51 is obtained. For P, the correction 94 of the temporary exponent part P is subtracted, and the exponent part binary notation 52 is obtained. Mantissa division 9
5 can be executed at high speed by referencing and adding two small tables as follows, for example. (A) Calculation of the upper division result A by referring to the first table (96) and calculation of the upper division result B by referring to the second table (97). Here, the first table is 96
The second table is a table that holds 97 calculation data. (B) Calculation of the mantissa part R by adding the results A and B (98). (C) When the most significant bit R0 of the above result R is 0,
1 is subtracted from the correction 94 of the temporary exponent P.

【0074】(第2実施例)ここでも、第1実施例と同
じく、投機実行を行うプロセッサの実運用時に、そのプ
ロセッサの処理と並行して性能上問題となる投機の統計
データを収集し、この収集した統計データに基づいて性
能チューニングを行うシステムに本発明を適用した実施
例を取り上げる。第1実施例との相違点は、MPU演算
実行部20が本来有する命令キャッシュを失敗率の格納
用に活用することにより、低コストで、連想表30の巡
回部連想メモリ32のエントリ数mを等価的に大きくで
きるようにした点にある。
(Second Embodiment) As in the first embodiment, during the actual operation of a processor that performs speculative execution, statistical data of speculative performance, which is a performance problem, is collected in parallel with the processing of the processor. An embodiment in which the present invention is applied to a system for performing performance tuning based on the collected statistical data will be described. The difference from the first embodiment is that the number of entries m in the recurring unit associative memory 32 of the associative table 30 can be reduced at low cost by using the instruction cache inherent in the MPU operation execution unit 20 for storing the failure rate. The point is that it can be increased equivalently.

【0075】図13に本実施例を適用したプロセッサ2
5の構成例を示す。図4との相違点は、MPU演算実行
部20内に、命令キャッシュ130に対する失敗率の登
録などを制御する簡易失敗率更新回路131と限度レジ
スタ132とを設け、管理失敗率更新回路131を転送
バス133を通じて投機情報収集装置21に接続した点
である。投機情報収集装置21の構成は後述する一部の
機能を除いて図5に示されるものと同じであり、転送バ
ス133は投機情報収集装置21内部では投機確率デー
タ更新回路43に接続される。
FIG. 13 shows a processor 2 to which the present embodiment is applied.
5 shows a configuration example. 4 is different from FIG. 4 in that a simple failure rate update circuit 131 and a limit register 132 for controlling registration of a failure rate in the instruction cache 130 and the like are provided in the MPU operation execution unit 20, and the management failure rate update circuit 131 is transferred. This is a point connected to the speculation information collection device 21 through the bus 133. The configuration of the speculative information collecting device 21 is the same as that shown in FIG. 5 except for some functions described later, and the transfer bus 133 is connected to the speculative probability data updating circuit 43 inside the speculative information collecting device 21.

【0076】図14を参照すると、命令キャッシュ13
0は、命令キャッシュデータアレイ100と命令キャッ
シュタグアレイ101とから構成され、命令キャッシュ
タグアレイ101の各命令キャッシュライン102i〜
102k毎に、投機事象の簡易失敗率104i〜104
kを登録する領域を新たに付加してある。第1実施例で
は、新たに発生した投機事象と同じ投機命令アドレスを
持つエントリが連想表30に存在しなかった場合、巡回
部連想メモリ32のエントリを直ちに再利用したが、本
実施例では、当該投機命令アドレスで特定される投機命
令をキャッシュしている命令キャッシュライン102の
簡易失敗率104を当該投機命令が失敗完了した場合に
更新し、簡易失敗率104が限度レジスタ132に予め
設定された閾値を超えた時点で、巡回部連想メモリ32
にエントリを確保して統計データを登録する。
Referring to FIG. 14, instruction cache 13
0 is composed of an instruction cache data array 100 and an instruction cache tag array 101, and each instruction cache line 102i to 102i of the instruction cache tag array 101
Simple failure rates 104i to 104 of speculative events every 102k
An area for registering k is newly added. In the first embodiment, when an entry having the same speculative instruction address as a newly generated speculative event does not exist in the associative table 30, the entry in the traveling unit associative memory 32 is immediately reused. The simple failure rate 104 of the instruction cache line 102 that caches the speculative instruction specified by the speculative instruction address is updated when the speculative instruction has failed, and the simple failure rate 104 is set in the limit register 132 in advance. When the threshold value is exceeded, the traveling unit associative memory 32
And secure statistical data.

【0077】簡易失敗率更新回路131は、同じ命令キ
ャッシュライン102に目的とする投機命令とは別の投
機命令がキャッシュされていても、そのラインの簡易失
敗率104を更新する。このことを簡易失敗率のエイリ
アスと呼ぶ。図15に簡易失敗率104の遷移を示す。
簡易失敗率104は0からNまでの正の整数値をとり、
当該命令キャッシュライン102がリフィルされたと
き、及び当該命令キャッシュライン102にキャッシュ
されている何れかの投機命令についてのエントリが巡回
部連想メモリ32に確保されたときに、簡易失敗率更新
回路131によって0にリセットされる。以降、当該命
令キャッシュライン102にキャッシュされている投機
命令のアドレスが投機情報収集装置21から転送バス1
33を通じて伝達される毎に、つまり、連想表30に登
録されていない当該キャッシュライン中の投機命令が失
敗完了する毎に+1される。但し、最大値Nになるとそ
れ以上増えない(飽和加算)。
The simple failure rate updating circuit 131 updates the simple failure rate 104 of the same instruction cache line 102 even if a speculative instruction different from the target speculative instruction is cached in the same instruction cache line 102. This is called a simple failure rate alias. FIG. 15 shows the transition of the simple failure rate 104.
The simple failure rate 104 takes a positive integer value from 0 to N,
When the instruction cache line 102 is refilled, and when an entry for any speculative instruction cached in the instruction cache line 102 is secured in the recurring unit associative memory 32, the simple failure rate update circuit 131 Reset to zero. Thereafter, the address of the speculative instruction cached in the instruction cache line 102 is transferred from the speculative information collecting device 21 to the transfer bus 1.
It is incremented by one each time it is transmitted through the interface 33, that is, each time a speculative instruction in the cache line not registered in the associative table 30 is completed. However, when it reaches the maximum value N, it does not increase any more (saturation addition).

【0078】次に本実施例の投機情報収集装置21の全
体的な動作の流れについて、図16ないし図18のフロ
ーを参照して、第1の実施例との相違点を中心に以下説
明する。
Next, the flow of the entire operation of the speculative information collecting apparatus 21 of the present embodiment will be described below with reference to the flow charts of FIGS. 16 to 18, focusing on the differences from the first embodiment. .

【0079】MPU演算実行部20のデータ採取手段2
7から投機指示バス22を通じて投機処理の開始とその
投機命令アドレスが送られてくると(S1)、投機指示
処理回路49によって当該投機命令アドレスで連想表3
0の連想キー部33が検索され(S2)、エントリが既
に存在していた場合(S3でYES)、第1実施例と同
様の動作が行われる(S6〜S8)。他方、当該投機命
令アドレスを連想キー部33に持つエントリが存在しな
かった場合(S3でNO)、第1実施例と異なり、処理
を終了する。
Data collection means 2 of MPU operation execution unit 20
7, the start of the speculative processing and the speculative instruction address are sent via the speculative instruction bus 22 (S1), and the speculative instruction processing circuit 49 uses the speculative instruction address to associate the associative table 3
The associative key unit 33 of 0 is searched (S2), and if an entry already exists (YES in S3), the same operation as in the first embodiment is performed (S6 to S8). On the other hand, if there is no entry having the speculative instruction address in the associative key unit 33 (NO in S3), the process ends, unlike the first embodiment.

【0080】その後、投機命令アドレスを伴う付加情報
が付加情報バス23を通じてMPU演算実行部20のデ
ータ採取手段27から送られてくる毎に、付加情報更新
回路46は、当該投機命令アドレスを持つエントリの付
加情報部36における現累積値に今回の付加情報を累積
する処理を行う。但し、当該投機命令アドレスを持つエ
ントリが存在しなければ今回の付加情報は廃棄する。
Thereafter, each time additional information accompanied by a speculative instruction address is sent from the data collection means 27 of the MPU operation executing unit 20 via the additional information bus 23, the additional information updating circuit 46 sets the entry having the speculative instruction address. Is performed to accumulate the current additional information in the current accumulated value in the additional information section 36 of FIG. However, if there is no entry having the speculation instruction address, the current additional information is discarded.

【0081】次に、MPU演算実行部20のデータ採取
手段27から投機指示バス22を通じて投機処理の終了
とその投機命令アドレス及び完了種別が送られてくると
(S11)、投機指示処理回路49によって当該投機命
令アドレスで連想表30の連想キー部33が検索される
(S12)。次に投機確率データ更新回路43は、当該
投機命令アドレスを持つエントリが存在したか否かを判
定し(S31)、存在していれば、第1実施例と同様の
動作が実施される(S13〜S21)。他方、存在して
いなかった場合、投機確率データ更新回路43は、失敗
完了であったか否かを調べ(S32)、失敗完了でなく
成功完了であれば、処理を終了する。
Next, when the end of the speculative processing and the speculative command address and the completion type are sent from the data collecting means 27 of the MPU operation executing section 20 via the speculative instruction bus 22 (S11), the speculative instruction processing circuit 49 The associative key section 33 of the associative table 30 is searched with the speculative instruction address (S12). Next, the speculative probability data update circuit 43 determines whether or not an entry having the speculative instruction address exists (S31). If the entry exists, the same operation as in the first embodiment is performed (S13). To S21). On the other hand, if it does not exist, the speculative probability data update circuit 43 checks whether or not the completion is a failure (S32).

【0082】失敗完了であった場合、投機確率データ更
新回路43は、今回の投機命令アドレスを転送バス13
3を通じて簡易失敗率更新回路131に転送する。簡易
失敗率更新回路131は、転送された投機命令アドレス
で命令キャッシュ130を検索し、その投機命令をキャ
ッシュしている命令キャッシュライン102の簡易失敗
率104を+1する(S33)。そして、その簡易失敗
率104が限度レジスタ132に設定された閾値を超え
たか否かを調べ(S34)、超えていなければ処理を終
了する。超えていれば、当該簡易失敗率140を0に初
期化する(S35)。この後、簡易失敗率更新回路13
1は、当該投機命令アドレスを連想表30に登録すべき
指示データを転送バス133を通じて投機確率データ更
新回路43に転送する。
If the failure has been completed, the speculation probability data updating circuit 43 sends the current speculation instruction address to the transfer bus 13.
3 to the simple failure rate update circuit 131. The simple failure rate update circuit 131 searches the instruction cache 130 with the transferred speculative instruction address, and increments the simple failure rate 104 of the instruction cache line 102 that caches the speculative instruction (S33). Then, it is determined whether or not the simple failure rate 104 has exceeded the threshold value set in the limit register 132 (S34), and if not, the process is terminated. If it exceeds, the simple failure rate 140 is initialized to 0 (S35). Thereafter, the simple failure rate update circuit 13
1 transfers the instruction data for registering the speculation instruction address in the association table 30 to the speculation probability data update circuit 43 through the transfer bus 133.

【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)。
The speculation probability data updating circuit 43 uses the replacement candidate determining circuit 45 to determine which of the entries in the recurring unit associative memory 32 has not been referred to for the longest time.
Is determined as the entry to be overwritten (S36). And
The entry is initialized (S37). That is, the current speculation instruction address is registered in the associative key unit 33 of the entry 62 by the replacement candidate determination circuit 45, and the additional information unit 36 is initialized by the additional information updating circuit 46.
The speculation probability data update circuit 43 uses the entry 62
In the speculation probability data section 35, the value “1” is registered as the number of appearances 38, the value “1” is registered as the number of failures 39, and the value “1” is registered as the failure rate 40. Then, the replacement candidate determination circuit 45 updates the order / LRU information of the LRU information section 35 of the entry 62 (S38).

【0084】本実施例では、簡易失敗率のエイリアスが
存在するものの、判断S32があるため、投機失敗を起
こさない事象は、エイリアスにより巡回部連想メモリ3
2へ登録されることはない。投機失敗率が低い投機事象
Aが投機失敗率が高い投機事象Bとのエイリアスによ
り、巡回部連想メモリ32へ登録される可能性はある
が、登録されたとしても投機失敗率が高い投機事象Bが
巡回部連想メモリ32へ登録されない限り簡易失敗率1
04の更新は続くため、いずれは投機失敗率が高い投機
事象Bも巡回部連想メモリ32へ登録される。そして、
巡回部連想メモリ32へ移行した投機失敗率の高い投機
事象Bは、判断S31により簡易失敗率104の更新に
寄与することはない。従って、これ以降、投機失敗率が
低い投機事象AがLRUアルゴリズムによって巡回部連
想メモリ32より除去された後は、投機失敗率が低い投
機事象Aはエイリアスによって巡回部連想メモリ32に
再度登録されることはない。
In this embodiment, although the alias of the simple failure rate exists, the event that does not cause the speculative failure is determined by the alias in the traveling unit associative memory 3 because of the determination S32.
2 will not be registered. Although there is a possibility that the speculation event A with a low speculation failure rate is registered in the traveling unit associative memory 32 by an alias with the speculation event B with a high speculation failure rate, even if it is registered, the speculation event B with a high speculation failure rate is possible. Unless is registered in the traveling unit associative memory 32, the simple failure rate 1
Since the update of 04 is continued, the speculation event B having a high speculation failure rate is eventually registered in the traveling unit associative memory 32. And
The speculation event B having a high speculative failure rate transferred to the traveling unit associative memory 32 does not contribute to the update of the simple failure rate 104 by the determination S31. Therefore, after this, after the speculative event A having a low speculation failure rate is removed from the traveling unit associative memory 32 by the LRU algorithm, the speculative event A having a low speculative failure rate is registered again in the traveling unit associative memory 32 by an alias. Never.

【0085】但し、投機失敗率は低いものの非常に頻繁
に実行される投機事象が、簡易失敗率のエイリアスによ
り巡回部連想メモリ32のエントリに登録されると、該
エントリはLRUアルゴリズムにより掃き出し対象には
選ばれず残留するため、巡回部連想メモリ32の利用率
を下げてしまう。これを防止するには、巡回部連想メモ
リ32のエントリの中に、出現回数38が抽出部移行限
度レジスタ44の値を超え、なおかつ、失敗率40が抽
出部末端エントリ60の失敗率40の一定比率に満たな
いエントリがあれば、当該エントリを、最も長い間更新
されていないエントリ(巡回部末端エントリ62)とし
て登録する機能を、入れ替え候補決定回路45に設けれ
ば良い。
However, when a speculative event that is executed very frequently, although the speculative failure rate is low, is registered in the entry of the traveling unit associative memory 32 by the alias of the simple failure rate, the entry is subject to sweeping out by the LRU algorithm. Is not selected and remains, so that the utilization rate of the recurring unit associative memory 32 is reduced. In order to prevent this, in the entries of the recurring unit associative memory 32, the number of appearances 38 exceeds the value of the extraction unit transition limit register 44, and the failure rate 40 is the same as the failure rate 40 of the extraction unit end entry 60. If there is an entry that does not satisfy the ratio, a function of registering the entry as the entry that has not been updated for the longest time (the cyclic end entry 62) may be provided in the replacement candidate determination circuit 45.

【0086】第1実施例においては巡回部連想メモリ3
2のエントリ数mを小さく設定すると、同一の投機命令
Aが再び実行される前に、別な投機命令が次々に実行さ
れた場合、当該投機命令Aが再び実行された時点では既
に当該投機命令Aが巡回部連想メモリ32より掃き出さ
れてしまう可能性がある。こうなると、当該投機命令A
の統計データはいつまでたっても初期値付近に留まり、
統計データの収集が困難になる。これを改善するには、
巡回部連想メモリ32のエントリ数mを大きくすること
であるが、連想表30のエントリ数の増大はハードウェ
ア的にコストが大きい。第2の実施例によれば、MPU
演算実行部20が本来有する命令キャッシュ130を一
部拡張するだけで巡回部連想メモリ32のエントリ数を
等価的に増大でき、コストの上昇を抑えることが可能で
ある。
In the first embodiment, the traveling unit associative memory 3
When the number m of entries is set to be small, if another speculative instruction is executed one after another before the same speculative instruction A is executed again, the speculative instruction A is already executed when the speculative instruction A is executed again. There is a possibility that A will be swept out of the traveling unit associative memory 32. When this happens, the speculation instruction A
Statistics will stay near their initial values forever,
It becomes difficult to collect statistical data. To improve this,
This is to increase the number m of entries in the traveling unit associative memory 32, but increasing the number of entries in the associative table 30 is costly in terms of hardware. According to the second embodiment, the MPU
The number of entries in the recurring unit associative memory 32 can be equivalently increased by only partially expanding the instruction cache 130 originally included in the operation execution unit 20, and it is possible to suppress an increase in cost.

【0087】以上本発明について幾つかの実施例を挙げ
て説明したが、本発明は以上の実施例にのみ限定され
ず、その他各種の付加変更が可能である。以下ではその
変形例について説明する。
Although the present invention has been described with reference to several embodiments, the present invention is not limited to the above embodiments, and various other modifications can be made. Hereinafter, a modified example thereof will be described.

【0088】前記各実施例では、連想表30にフルアソ
シアティブ方式を用いる方式を説明したが、連想表30
には、通常のキャッシュと同様に、セットアソシアティ
ブ方式やダイレクトマップ方式を用いることが可能であ
る。
In each of the above embodiments, the method using the full associative method for the association table 30 has been described.
For example, a set associative method or a direct map method can be used as in a normal cache.

【0089】前記各実施例では、巡回部連想メモリ32
の入れ替えに、LRUを用いる方法について説明した
が、巡回部連想メモリ32の入れ替えには、通常のキャ
ッシュと同様に、疑似LRU、FIFO順序、ランダム
リプレースを用いることが可能である。
In each of the above embodiments, the traveling unit associative memory 32
The method of using the LRU has been described for the replacement, but the pseudo LRU, the FIFO order, and the random replacement can be used for the replacement of the recurring unit associative memory 32 as in the case of the normal cache.

【0090】前記各実施例では、巡回部連想メモリ32
のエントリが抽出部連想メモリ31の末端エントリと比
較される前提条件として、出現回数38が抽出部移行限
度レジスタ44の値を超えている条件を設定したが、こ
の条件を省略して、常に巡回部連想メモリ32のエント
リを抽出部連想メモリ31の末端エントリと比較する実
現法も可能である。また、出現回数38が抽出部移行限
度レジスタ44の値を超えているという条件に代えて、
失敗回数39が或る値を超えているという条件を前提条
件にしても良い。更に付加情報41で判明する巻き戻し
に要するコストも加味するようにしても良い。
In the above embodiments, the traveling unit associative memory 32
Is set as a precondition for comparing the entry with the end entry of the extraction unit associative memory 31, the condition that the number of appearances 38 exceeds the value of the extraction unit transition limit register 44 is set. A method of comparing an entry of the unit associative memory 32 with a terminal entry of the extracting unit associative memory 31 is also possible. Also, instead of the condition that the number of appearances 38 exceeds the value of the extraction unit transition limit register 44,
The condition that the number of failures 39 exceeds a certain value may be a precondition. Further, the cost required for rewinding which is found from the additional information 41 may be taken into account.

【0091】前記各実施例では、抽出部連想メモリ31
のエントリ間の入れ替えを、失敗率40の比較のみで行
う例を示したが、投機事象の性能への影響としては、失
敗率40に付加情報41で判明する巻き戻しに要するコ
ストも加味した方が有効性が高まるため、例えば、付加
情報41の全累積値を失敗回数39で割って得た失敗1
回当たりのコストに失敗率を乗じた値を比較するように
しても良い。
In the above embodiments, the extraction unit associative memory 31
In the above example, the replacement of the entries is performed only by comparing the failure rate 40. However, as for the effect on the performance of the speculation event, the cost required for rewinding which is found from the additional information 41 is added to the failure rate 40. Is more effective, for example, the failure 1 obtained by dividing the total accumulated value of the additional information 41 by the number of failures 39
A value obtained by multiplying the cost per round by the failure rate may be compared.

【0092】前記第1実施例において、連想表30から
巡回部連想メモリ32を削除し、前記第2実施例で使っ
た命令キャッシュ130へ簡易失敗率を登録する機構
を、巡回部連想メモリ32の代わりに用いることも可能
である。この場合の処理は以下のようになる。先ず、M
PU演算実行部20のデータ採取手段27から投機指示
バス22を通じて投機処理の開始とその投機命令アドレ
スが送られてきたときの動作は、第2実施例における図
16と同様の動作となる。他方、MPU演算実行部20
のデータ採取手段27から投機指示バス22を通じて投
機処理の終了とその投機命令アドレス及び完了種別が送
られてきた場合は、図19に示されるような動作が行わ
れる。
In the first embodiment, the mechanism for deleting the recurring unit associative memory 32 from the associative table 30 and registering the simple failure rate in the instruction cache 130 used in the second embodiment is provided. It is also possible to use it instead. The processing in this case is as follows. First, M
The start of the speculative processing and the operation when the speculative instruction address is transmitted from the data collecting means 27 of the PU operation executing unit 20 via the speculative instruction bus 22 are the same as the operations in FIG. 16 in the second embodiment. On the other hand, the MPU operation execution unit 20
When the end of the speculative processing and the speculative instruction address and the completion type are transmitted from the data collecting means 27 through the speculative instruction bus 22, the operation as shown in FIG. 19 is performed.

【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」がそれぞれ登録される。
First, the speculative instruction processing circuit 49 searches the associative key section 33 of the associative table 30 with the speculative instruction address (S12). Next, the speculative probability data updating circuit 43 finds an entry having the speculative instruction address. It is determined whether or not it has been performed (S31). If present, the first
As in the embodiment, the number of failures 39 of the entry and the failure rate 4
0 is updated (S13). Next, it is checked whether or not the failure rate 40 of the entry exceeds the failure rate of the extraction unit associative memory 31 by one rank higher (S15), and if it exceeds, the entry is replaced (S16). On the other hand, when there is no entry having the speculation instruction address (N in S31)
O), the speculative probability data updating circuit 43 checks whether or not the completion is a failure (S32). If the completion is not the failure completion, the processing is terminated. If it failed,
The speculative probability data updating circuit 43 transfers the current speculative instruction address via the transfer bus 133 to the simple failure rate updating circuit
Transfer to 1. The simple failure rate update circuit 131 searches the instruction cache 130 with the transferred speculative instruction address,
The simple failure rate 104 of the instruction cache line 102 that caches the speculative instruction is incremented by 1 (S33). Then, it is checked whether or not the simple failure rate 104 has exceeded the threshold value set in the limit register 132 (S34), and if not, the process is terminated. If it exceeds, the simple failure rate 140 is initialized to 0 (S35). Thereafter, the simple failure rate update circuit 131 transfers instruction data indicating that the speculation instruction address should be registered in the association table 30 to the speculation probability data update circuit 43 via the transfer bus 133. The speculation probability data update circuit 43 determines the entry 60 to be overwritten by the replacement candidate determination circuit 45 as the entry to be overwritten, and initializes the entry (S42). That is, the current speculation instruction address is registered in the associative key section 33 of the entry 60 by the replacement candidate determination circuit 45, the additional information section 36 is initialized by the additional information update circuit 46, and the speculative probability data update circuit 4
3, the value “1” is registered as the number of appearances 38, the value “1” as the number of failures 39, and the value “1” as the failure rate 40 in the speculation probability data section 35 of the entry 60.

【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%に近い投機事象の幾つかだけを
検出するには充分役立つ。
In the first embodiment, the speculative events to be registered in the associative table 30 are narrowed down in advance.
It is also possible to delete the traveling unit associative memory 32 from 0. As a method of narrowing down speculative events to be registered in the association table 30 in advance, a hardware method can be used, and only speculative instructions expected to have a high failure rate in advance can be collected by a prefix instruction. A software method that is specified in the program can also be used. In this case, only the data of the limited speculation event is output from the data collection means 27 to the speculation information collection device 21. The processing is as follows. First, the start of the speculative processing and the operation when the speculative instruction address is transmitted from the data collecting means 27 of the MPU operation execution unit 20 via the speculative instruction bus 22 are the same as those in FIG. 16 in the second embodiment. . On the other hand, the data collection unit 27 of the MPU operation execution unit 20
When the end of the speculative processing and the speculative command address and the completion type are sent from the speculative instruction bus 22 via the speculative instruction bus 22, the operation shown in FIG. 20 is performed. Unlike FIG. 19, when the failure is completed, the terminal entry 60 of the extraction unit associative memory 31 is determined as an entry to be overwritten, and the entry is initialized (S42). That is, the replacement speculative instruction address is registered in the associative key section 33 of the entry 60 by the replacement candidate determination circuit 45, the additional information section 36 is initialized by the additional information update circuit 46, and the entry information is updated by the speculation probability data update circuit 43. In the 60 speculation probability data section 35, the value “1” is registered as the number of appearances 38, the value “1” is registered as the number of failures 39, and the value “1” is registered as the failure rate 40. Although the accuracy of the collection is extremely reduced in this embodiment, it is sufficient to detect only some of the speculative events whose failure rate is close to 100%.

【0095】以上の実施例は、投機実行を行うプロセッ
サの実運用時に、そのプロセッサの処理と並行して性能
上問題となる投機の統計データを収集し、この収集した
統計データに基づいて性能チューニングを行うシステム
に本発明を適用した。それ以外に、キャッシュミス率の
高いメモリ領域の統計データを収集し、この収集した統
計データに基づいて性能チューニングを行うシステムな
ど、その他各種の統計データの収集、性能チューニング
に本発明は適用可能である。
In the above embodiment, during actual operation of a processor performing speculative execution, statistical data of speculative performance-related problems are collected in parallel with the processing of the processor, and performance tuning is performed based on the collected statistical data. The present invention is applied to a system for performing the above. In addition to this, the present invention is applicable to collection of various other statistical data and performance tuning, such as a system that collects statistical data of a memory area having a high cache miss rate and performs performance tuning based on the collected statistical data. is there.

【0096】[0096]

【発明の効果】以上説明したように本発明によれば、キ
ャッシュミス率の高いメモリ領域や失敗確率の高い投機
命令などの性能改善に役立つ統計データを、実データを
使用した実運用時に、迅速かつ低コストで求めることが
できる。また収集した統計データに基づく動的な最適化
のやり直しが可能となる。
As described above, according to the present invention, statistical data useful for improving the performance of a memory area having a high cache miss rate and a speculative instruction having a high probability of failure can be obtained quickly in actual operation using real data. And it can be obtained at low cost. Further, it is possible to redo the dynamic optimization based on the collected statistical data.

【図面の簡単な説明】[Brief description of the drawings]

【図1】投機実行を説明するためのプログラムの制御フ
ロー図である。
FIG. 1 is a control flow chart of a program for explaining speculative execution.

【図2】投機が成功する場合の動作例を示す図である。FIG. 2 is a diagram illustrating an operation example when speculation is successful.

【図3】投機が失敗する場合の動作例を示す図である。FIG. 3 is a diagram illustrating an operation example when speculation fails.

【図4】本発明を適用したプロセッサの第一の実施例を
示すブロック図である。
FIG. 4 is a block diagram showing a first embodiment of a processor to which the present invention is applied.

【図5】投機情報収集装置の一実施例の内部構成を示す
ブロック図である。
FIG. 5 is a block diagram showing an internal configuration of an embodiment of a speculative information collecting device.

【図6】連想表を構成する抽出部連想メモリおよび巡回
部連想メモリにおけるエントリの整列方法の説明図であ
る。
FIG. 6 is an explanatory diagram of a method of arranging entries in an associative memory of an extraction unit and an associative memory of a circulating unit that constitute an associative table;

【図7】第一の実施例の投機命令実行開始時点における
投機情報収集装置の動作例を示すフロー図である。
FIG. 7 is a flowchart illustrating an operation example of the speculative information collecting apparatus at the time of starting execution of a speculative command according to the first embodiment.

【図8】第一の実施例の投機命令実行終了時点における
投機情報収集装置の動作例を示すフロー図である。
FIG. 8 is a flowchart illustrating an operation example of the speculative information collecting device at the end of execution of a speculative instruction according to the first embodiment.

【図9】最適化手段のシステム運用上の位置付けと処理
の概略を示す図である。
FIG. 9 is a diagram showing an outline of the positioning of the optimization means in system operation and an outline of processing;

【図10】再最適化の一例の説明図である。FIG. 10 is a diagram illustrating an example of re-optimization.

【図11】失敗率を表現する短縮浮動小数フォーマット
を示す図である。
FIG. 11 is a diagram showing a shortened floating-point format expressing a failure rate.

【図12】失敗率の計算方法の一例を示す図である。FIG. 12 is a diagram illustrating an example of a method of calculating a failure rate.

【図13】本発明を適用したプロセッサの他の例を示す
ブロック図である。
FIG. 13 is a block diagram illustrating another example of a processor to which the present invention has been applied.

【図14】簡易失敗率を格納するように拡張された命令
キャッシュの構成図である。
FIG. 14 is a configuration diagram of an instruction cache extended to store a simple failure rate.

【図15】簡易失敗率の遷移の説明図である。FIG. 15 is an explanatory diagram of transition of a simple failure rate.

【図16】第二の実施例の投機命令実行開始時点におけ
る投機情報収集装置の動作例を示すフロー図である。
FIG. 16 is a flowchart illustrating an operation example of a speculative information collecting apparatus at the time of starting execution of a speculative command according to the second embodiment.

【図17】第二の実施例の投機命令実行終了時点におけ
る投機情報収集装置の動作例を示すフロー図である。
FIG. 17 is a flowchart showing an operation example of the speculative information collecting device at the end of execution of a speculative command according to the second embodiment.

【図18】第二の実施例の投機命令実行終了時点におけ
る投機情報収集装置の動作例を示すフロー図である。
FIG. 18 is a flowchart illustrating an operation example of a speculative information collection device at the end of execution of a speculative command according to the second embodiment.

【図19】投機命令実行終了時点における投機情報収集
装置の別の動作例を示すフロー図である。
FIG. 19 is a flowchart showing another example of the operation of the speculation information collection device at the end of execution of a speculation command.

【図20】投機命令実行終了時点における投機情報収集
装置の更に別の動作例を示すフロー図である。
FIG. 20 is a flowchart showing yet another operation example of the speculative information collecting device at the end of speculative command execution.

【図21】プロセッサの各種状態をハードウェア的に採
取するサンプリング機構の一例を示すブロック図であ
る。
FIG. 21 is a block diagram illustrating an example of a sampling mechanism that collects various states of a processor by hardware.

【符号の説明】[Explanation of symbols]

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…連想キー更新指示線 DESCRIPTION OF SYMBOLS 20 ... MPU calculation execution part 21 ... speculation information collection device 22 ... speculation instruction bus 23 ... additional information bus 24 ... result access bus 25 ... processor 26 ... comparison result line 27 ... data collection means 28 ... optimization means 30 ... association table 31 ... Extraction unit associative memory 32. Cyclic unit associative memory 33. Associative key unit 34. Speculation probability data unit 35. Order / LRU information unit 36. Additional information unit 38. Number of appearances 39. Failure count 40. Failure rate 41. 42 ... Speculation instruction address line 43 ... Speculation probability data update circuit 44 ... Extractor shift limit register 45 ... Replacement candidate determination circuit 46 ... Additional information update circuit 47 ... Result access line 48 ... Result access control circuit 49 ... Speculation instruction processing circuit 50 … Association key update instruction line

Claims (15)

(57)【特許請求の範囲】(57) [Claims] 【請求項1】 プロセッサで発生した事象の統計データ
を収集する装置において、 事象の統計データのうちプロセッサの性能低下に及ぼす
影響が大きい上位一定数の事象の統計データを記憶する
抽出部メモリと、 実運用時に発生した事象に関するデータをプロセッサか
ら受け取り、現在までに計算された事象の統計データの
うちプロセッサの性能低下に及ぼす影響が大きい上位一
定数の事象の統計データが前記抽出部メモリに残るよう
に事象の統計データの更新及び事象の統計データの入れ
替えを行う制御手段とを含むことを特徴とするプロセッ
サ性能データ収集装置。
1. An apparatus for collecting statistical data of events generated in a processor, comprising: an extracting unit memory for storing statistical data of a fixed number of events having a large influence on performance degradation of a processor among the statistical data of the events; Receiving data relating to an event that occurred during actual operation from the processor, so that among the statistical data of the events calculated up to now, statistical data of a fixed number of events having a large influence on the performance degradation of the processor remains in the extraction unit memory. And control means for updating statistical data of events and replacing statistical data of events.
【請求項2】 プロセッサで発生した事象の統計データ
を収集する装置において、 プロセッサの性能低下に及ぼす影響が大きく且つ統計的
な信頼度が基準を満たす上位一定数の事象の統計データ
を記憶する抽出部メモリと、 統計的な信頼度が未だ基準を満たさないか或いは前記上
位一定数に入らない事象の統計データを一時的に記憶す
る巡回部メモリと、 実運用時に発生した事象に関するデータをプロセッサか
ら受け取り、現在までに計算された事象の統計データの
うちプロセッサの性能低下に及ぼす影響が大きい上位一
定数の事象の統計データが前記抽出部メモリに残るよう
に、事象の統計データの更新、前記巡回部メモリと前記
抽出部メモリ間での事象の統計データの入れ替え及び前
記抽出部メモリの事象の統計データの入れ替えを行う制
御手段とを含むことを特徴とするプロセッサ性能データ
収集装置。
2. An apparatus for collecting statistical data of events generated in a processor, wherein the statistical data of a fixed number of events having a high influence on performance degradation of the processor and satisfying a standard of statistical reliability is stored. An external memory, a cyclic memory for temporarily storing statistical data of events whose statistical reliability does not satisfy the criterion or does not fall in the upper fixed number, and a processor for transmitting data relating to an event occurring during actual operation. Updating of the statistical data of the event, and updating the statistical data of the event so that statistical data of a certain number of upper events having a large effect on performance degradation of the processor among the statistical data of the events received and calculated so far remain in the extraction unit memory. The statistical data of the event is exchanged between the external memory and the extractor memory, and the statistical data of the event of the extractor memory is exchanged. A processor performance data collection device, comprising: a control unit.
【請求項3】 前記制御手段は、前記プロセッサから受
け取った事象の統計データが前記抽出部メモリ及び前記
巡回部メモリの何れにも記憶されていないときは前記巡
回部メモリに空きエントリを確保して当該事象の統計デ
ータを登録し、前記巡回部メモリに記憶されているとき
は該記憶されている事象の統計データを更新すると共に
必要に応じて前記巡回部メモリと前記抽出部メモリとの
間で事象の統計データの入れ替えを行い、前記抽出部メ
モリに記憶されているときは該記憶されている事象の統
計データを更新することを特徴とする請求項2記載のプ
ロセッサ性能データ収集装置。
3. When the statistical data of the event received from the processor is not stored in any of the extraction unit memory and the traveling unit memory, the control unit secures an empty entry in the traveling unit memory. The statistical data of the event is registered, and when stored in the traveling unit memory, the stored statistical data of the event is updated and the traveling unit memory and the extraction unit memory are updated as necessary. 3. The processor performance data collection device according to claim 2, wherein the statistical data of the event is replaced, and when the statistical data of the event is stored in the extraction unit memory, the statistical data of the stored event is updated.
【請求項4】 プロセッサで発生した事象の統計データ
を収集する装置において、 プロセッサの性能低下に及ぼす影響が大きく且つ統計的
な信頼度が基準を満たす上位一定数の事象の統計データ
を記憶する抽出部メモリと、 統計的な信頼度が未だ基準を満たさないか或いは前記上
位一定数に入らない事象の統計データを一時的に記憶す
る巡回部メモリと、 前記巡回部メモリへの登録事象を絞り込むために前記抽
出部メモリおよび前記巡回部メモリの何れにも登録され
ていない事象にかかる簡易統計データを保持する、前記
プロセッサにおける命令キャッシュの各キャッシュライ
ン毎の領域と、 実運用時に発生した事象に関するデータをプロセッサか
ら受け取り、現在までに計算された事象の統計データの
うちプロセッサの性能低下に及ぼす影響が大きい上位一
定数の事象の統計データが前記抽出部メモリに残るよう
に、事象の統計データの更新、前記巡回部メモリと前記
抽出部メモリ間での事象の統計データの入れ替え及び前
記抽出部メモリの事象の統計データの入れ替え並びに前
記簡易統計データの更新を行う制御手段とを含むことを
特徴とするプロセッサ性能データ収集装置。
4. An apparatus for collecting statistical data of an event occurring in a processor, wherein the statistical data of a fixed number of upper events having a large effect on performance degradation of the processor and satisfying a standard of statistical reliability is stored. Memory for temporarily storing statistical data of events whose statistical reliability does not satisfy the criterion or does not fall into the upper fixed number; and for narrowing down events to be registered in the memory for traveling. A region for each cache line of an instruction cache in the processor, which holds simplified statistical data relating to an event that is not registered in any of the extraction unit memory and the circulating unit memory; Received from the processor and affects the performance degradation of the processor among the statistical data of the events calculated so far. Updating the statistical data of the events, replacing the statistical data of the events between the circulating unit memory and the extracting unit memory, and the extracting unit A processor performance data collection device, comprising: control means for replacing statistical data of events in a memory and updating the simplified statistical data.
【請求項5】 前記制御手段は、前記プロセッサから受
け取った事象の統計データが前記抽出部メモリ及び前記
巡回部メモリの何れにも記憶されていないときは当該事
象にかかる命令を保持するキャッシュラインの簡易統計
データを更新すると共に更新後の簡易統計データが一定
の基準を満足したときに前記巡回部メモリに空きエント
リを確保して当該事象の統計データを登録し、前記巡回
部メモリに記憶されているときは該記憶されている事象
の統計データを更新すると共に必要に応じて前記巡回部
メモリと前記抽出部メモリとの間で事象の統計データの
入れ替えを行い、前記抽出部メモリに記憶されていると
きは該記憶されている事象の統計データを更新すること
を特徴とする請求項4記載のプロセッサ性能データ収集
装置。
5. When the statistical data of an event received from the processor is not stored in any of the extraction unit memory and the circulating unit memory, the control unit may execute a cache line holding an instruction related to the event. When the simplified statistical data is updated and the updated simplified statistical data satisfies a certain standard, an empty entry is secured in the traveling unit memory and the statistical data of the event is registered and stored in the traveling unit memory. When the stored statistical data of the event is updated, the statistical data of the event is exchanged between the traveling unit memory and the extracting unit memory as necessary, and is stored in the extracting unit memory. 5. The processor performance data collection device according to claim 4, wherein said stored statistical data of the event is updated.
【請求項6】 前記抽出部メモリおよび前記巡回部メモ
リが、事象の種類で検索可能な連想メモリで構成された
ことを特徴とする請求項2、3、4または5記載のプロ
セッサ性能データ収集装置。
6. The processor performance data collection device according to claim 2, wherein the extraction unit memory and the circulating unit memory are configured by an associative memory that can be searched by event type. .
【請求項7】 プロセッサで発生した事象の統計データ
を収集する装置において、 プロセッサの性能低下に及ぼす影響が大きく且つ統計的
な信頼度が基準を満たす上位一定数の事象の統計データ
を記憶する抽出部メモリと、 前記抽出部メモリへの登録事象を絞り込むために前記抽
出部メモリに登録されていない事象にかかる簡易統計デ
ータを保持する、前記プロセッサにおける命令キャッシ
ュの各キャッシュライン毎の領域と、 実運用時に発生した事象に関するデータをプロセッサか
ら受け取り、現在までに計算された事象の統計データの
うちプロセッサの性能低下に及ぼす影響が大きい上位一
定数の事象の統計データが前記抽出部メモリに残るよう
に、事象の統計データの更新、前記抽出部メモリの事象
の統計データの入れ替え並びに前記簡易統計データの更
新を行う制御手段とを含むことを特徴とするプロセッサ
性能データ収集装置。
7. An apparatus for collecting statistical data of an event occurring in a processor, wherein the statistical data of a fixed number of upper events having a large effect on the performance degradation of the processor and satisfying a standard of statistical reliability is stored. And an area for each cache line of an instruction cache in the processor, which holds simplified statistical data on events not registered in the extraction unit memory in order to narrow down events registered in the extraction unit memory. Receiving data on events that occurred during operation from the processor, and among the statistical data of events calculated up to now, statistical data of a fixed number of events with a large effect on the performance degradation of the processor remains in the extraction unit memory. Updating the statistical data of the event, replacing the statistical data of the event in the memory of the extraction unit, and And a control unit for updating the simple statistical data.
【請求項8】 前記制御手段は、前記プロセッサから受
け取った事象の統計データが前記抽出部メモリに記憶さ
れていないときは当該事象にかかる命令を保持するキャ
ッシュラインの簡易統計データを更新すると共に更新後
の簡易統計データが一定の基準を満足したときに前記抽
出部メモリに空きエントリを確保して当該事象の統計デ
ータを登録し、前記抽出部メモリに記憶されているとき
は該記憶されている事象の統計データを更新することを
特徴とする請求項7記載のプロセッサ性能データ収集装
置。
8. When the statistical data of an event received from the processor is not stored in the extraction unit memory, the control means updates and updates simplified statistical data of a cache line holding an instruction related to the event. When the subsequent simple statistical data satisfies a certain standard, an empty entry is secured in the extracting unit memory, and the statistical data of the event is registered. When the event statistical data is stored in the extracting unit memory, the event is stored. The processor performance data collection device according to claim 7, wherein statistical data of an event is updated.
【請求項9】 前記抽出部メモリが、事象の種類で検索
可能な連想メモリで構成されたことを特徴とする請求項
7または8記載のプロセッサ性能データ収集装置。
9. The processor performance data collection device according to claim 7, wherein the extraction unit memory is configured by an associative memory that can be searched by event type.
【請求項10】 前記抽出部メモリの事象の統計データ
をプロセッサの性能低下に及ぼす影響が大きい順に整列
させるようにしたことを特徴とする請求項6または9記
載のプロセッサ性能データ収集装置。
10. The processor performance data collection device according to claim 6, wherein the statistical data of the events in the extraction unit memory are arranged in descending order of the influence on the performance degradation of the processor.
【請求項11】 前記事象の統計データは、事象の出現
回数、事象の失敗回数及び失敗率を含むことを特徴とす
る請求項10記載のプロセッサ性能データ収集装置。
11. The processor performance data collection device according to claim 10, wherein the statistical data of the event includes the number of occurrences of the event, the number of failures of the event, and the failure rate.
【請求項12】 前記事象の統計データは、更に、失敗
した事象の巻き戻しに要するコストを示す付加情報を含
むことを特徴とする請求項11記載のプロセッサ性能デ
ータ収集装置。
12. The processor performance data collection device according to claim 11, wherein the statistical data of the event further includes additional information indicating a cost required to rewind the failed event.
【請求項13】 前記プロセッサは投機実行可能なプロ
セッサであり、前記事象が投機事象である請求項11ま
たは12記載のプロセッサ性能データ収集装置。
13. The processor performance data collection device according to claim 11, wherein the processor is a speculatively executable processor, and the event is a speculative event.
【請求項14】 請求項1乃至13の何れかに記載のプ
ロセッサ性能データ収集装置によってプログラムの実運
用時に収集された事象の統計データに基づき、プログラ
ムの再コンパイル時に最適化し直すようにしたことを特
徴とするプロセッサ性能データ収集装置を利用した最適
化方法。
14. A method according to claim 1, wherein the processor performance data collecting apparatus is adapted to re-optimize when recompiling a program based on statistical data of events collected during actual operation of the program. An optimization method using a characteristic processor performance data collection device.
【請求項15】 投機実行可能なプロセッサから収集さ
れた投機実行の統計データに基づき実行投機の最適化を
行う請求項14記載のプロセッサ性能データ収集装置を
利用した最適化方法。
15. The optimization method using a processor performance data collection device according to claim 14, wherein the execution speculation is optimized based on the speculative execution statistical data collected from the speculative execution processor.
JP32637799A 1999-11-17 1999-11-17 Processor performance data collection device and optimization method using the device Expired - Fee Related JP3292189B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP32637799A JP3292189B2 (en) 1999-11-17 1999-11-17 Processor performance data collection device and optimization method using the device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP32637799A JP3292189B2 (en) 1999-11-17 1999-11-17 Processor performance data collection device and optimization method using the device

Publications (2)

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

Family

ID=18187134

Family Applications (1)

Application Number Title Priority Date Filing Date
JP32637799A Expired - Fee Related JP3292189B2 (en) 1999-11-17 1999-11-17 Processor performance data collection device and optimization method using the device

Country Status (1)

Country Link
JP (1) JP3292189B2 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11604717B2 (en) 2020-03-10 2023-03-14 Kabushiki Kaisha Toshiba Processor performance measurement apparatus and processor performance measurement method

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2641244C (en) 2006-02-01 2017-05-02 Coco Communications Corp. Congestion management and latency prediction in csma media
JP4284332B2 (en) * 2006-04-21 2009-06-24 株式会社東芝 Performance monitoring device, data collection method and program thereof
JP2008158806A (en) * 2006-12-22 2008-07-10 Matsushita Electric Ind Co Ltd Program for processor having a plurality of processor elements, and method and apparatus for generating the program
JP4836811B2 (en) 2007-01-26 2011-12-14 株式会社東芝 Performance monitoring apparatus 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 (en) * 2019-11-21 2020-04-21 中国航空工业集团公司西安航空计算技术研究所 Unified architecture GPU performance sampling and storing method based on finite-state machine
CN111324948B (en) * 2020-02-10 2023-04-25 上海兆芯集成电路有限公司 Simulation method and simulation system

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000207233A (en) 1999-01-12 2000-07-28 Nec Corp Multi-thread processor

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000207233A (en) 1999-01-12 2000-07-28 Nec Corp Multi-thread processor

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11604717B2 (en) 2020-03-10 2023-03-14 Kabushiki Kaisha Toshiba Processor performance measurement apparatus and processor performance measurement method

Also Published As

Publication number Publication date
JP2001142747A (en) 2001-05-25

Similar Documents

Publication Publication Date Title
Franklin et al. ARB: A hardware mechanism for dynamic reordering of memory references
US11249762B2 (en) Apparatus and method for handling incorrect branch direction predictions
US7197586B2 (en) Method and system for recording events of an interrupt using pre-interrupt handler and post-interrupt handler
CN112543916B (en) multi-table branch target buffer
US20050154811A1 (en) Method and apparatus for qualifying collection of performance monitoring events by types of interrupt when interrupt occurs
Srinivasan et al. A prefetch taxonomy
US20050120337A1 (en) Memory trace buffer
US12423597B2 (en) Prediction circuitry configured to predict speculative action based on hit-to-train ratio or based on train counter and hit counter
US7971031B2 (en) Data processing system and method
CN101611380A (en) Speculative Throughput Computing
US7496902B2 (en) Data and instruction address compression
CN104484158A (en) Microprocessor and microprocessor operation method
JP3292189B2 (en) Processor performance data collection device and optimization method using the device
US7735072B1 (en) Method and apparatus for profiling computer program execution
US7290255B2 (en) Autonomic method and apparatus for local program code reorganization using branch count per instruction hardware
CN111078295A (en) Mixed branch prediction device and method for out-of-order high-performance core
Burtscher et al. Hybrid load-value predictors
US8782629B2 (en) Associating program execution sequences with performance counter events
US20110145503A1 (en) On-line optimization of software instruction cache
US6412050B1 (en) Memory record update filtering
US11194575B2 (en) Instruction address based data prediction and prefetching
Perais et al. Cost effective physical register sharing
Dybdahl et al. Enhancing last-level cache performance by block bypassing and early miss determination
CN120892093A (en) Prefetch instruction management methods, systems and devices
Zhuang et al. DumpKV: Learning based lifetime aware garbage collection for key value separation in LSM-tree

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