JP3790039B2 - 分岐予測調整方法 - Google Patents

分岐予測調整方法 Download PDF

Info

Publication number
JP3790039B2
JP3790039B2 JP09016398A JP9016398A JP3790039B2 JP 3790039 B2 JP3790039 B2 JP 3790039B2 JP 09016398 A JP09016398 A JP 09016398A JP 9016398 A JP9016398 A JP 9016398A JP 3790039 B2 JP3790039 B2 JP 3790039B2
Authority
JP
Japan
Prior art keywords
branch
instruction
prediction
branch prediction
execution
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
JP09016398A
Other languages
English (en)
Other versions
JPH10283183A (ja
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.)
HP Inc
Original Assignee
Hewlett Packard Co
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 Hewlett Packard Co filed Critical Hewlett Packard Co
Publication of JPH10283183A publication Critical patent/JPH10283183A/ja
Application granted granted Critical
Publication of JP3790039B2 publication Critical patent/JP3790039B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • G06F9/3844Speculative instruction execution using dynamic branch prediction, e.g. using branch history tables
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)
  • Debugging And Monitoring (AREA)

Description

【0001】
【発明の属する技術分野】
本発明はコンピュータシステムにおけるコンピュータ命令の実行に係り、とりわけ、処理装置に割り込み、保留中(ペンディング)の分岐命令を観察することによってコンピュータ分岐命令の分岐予測を生成する技術に関する。
【0002】
【従来の技術】
初期のコンピュータシステムでは一度に1つのコンピュータ命令を逐次実行し、前の命令が完了するまでは命令の実行が開始されることはなかった。しかしながら、コンピュータ設計技術が進歩するにつれて、コンピュータ設計者はコンピュータシステムに各種の並行処理を組み込むようになった。
【0003】
並行処理の1つにパイプライン処理がある。パイプライン処理はコンピュータ命令の実行を様々なステップに分解し、それらのステップを重複させることによって複数の命令を同時に処理する。他の種類の並行処理としてスーパースケーリングがある。スーパースケーリングは、複数の実行単位を用いて別の命令を同時に処理する。
【0004】
並行設計技術は分岐命令に対する問題を生じさせる。分岐命令の実行時に、その分岐命令がテストしなければならない条件が、まだ判定されていないという状態が多く発生する。初期のコンピュータシステムは、かかる条件が判定されるまでかかる分岐命令(およびそれに続く命令)の実行を停止するだけであった。パイプライン処理されたコンピュータにおいては、条件が判定されるまでパイプラインを空にしておかなければならないことが多く、これはパイプライン処理の利点を制約するものである。
【0005】
この問題の対策として、コンピュータ設計者は分岐挙動(branch behavior)を予測するメカニズムを設けるようになった。分岐命令が発生すると、その分岐命令の分岐挙動が予測される。後に、条件が評価可能となったとき、その予測が正しいかどうかも評価される。予測が正しい場合、実行が継続され、並列実行の利点が維持される。予測が誤っている場合、暫定的に実行された命令をパイプラインからパージし、正しい分岐からの命令を実行しなければならない。しかし、通常、誤った分岐に対するペナルティが実行を停止し、条件の判定を待つ場合に比べ大きくなることはない。
【0006】
分岐予測によって得られる性能の向上が、予測の精度に大きく関係することはいうまでもない。したがって、正確な分岐予測を行なう多くの技術が開発されてきた。初期の技術の1つとして、ある分岐が常に選択されることを単に予測するというものがある。統計的には、ほとんどの分岐が選択されるため、この技術はある程度有効であることがわかった。同様の技術では、逆方向の分岐が常に選択され、順方法の分岐は決して選択されないものと予測する。
【0007】
他の技術では、最近分岐命令の分岐先となったアドレスのアドレステーブルが用いられる。通常、このテーブルは4から8のエントリを有する連想メモリからなる。ある分岐命令中のアドレスがこのテーブルにある場合、そのアドレスが予測実行経路として用いられる。
【0008】
より高度な方法がE. Smith氏の米国特許第4,370,711号に開示されている。Smith氏は、例えばそれぞれが+1、0、−1および−2の値を取りうる2ビットカウント値を有する16のエントリを有するランダムアクセスメモリ(RAM)を開示している。ハッシュ機構(hash mechanism)が分岐命令アドレスをこのRAMにアクセスする4ビットアドレスに変換する。ある分岐命令に対応するエントリに記憶された値が+1あるいは0である場合、その分岐が選択されるものと予測される。そうでない場合、その分岐は選択されないものと予測される。その分岐命令が選択された場合、実行後そのカウントメモリエントリが+1の限度までインクリメントされる。選択されない場合、カウントメモリアドレスが−2の限度までデクリメントされる。Smith氏の開示した予測法では分岐予測の公式化に分岐履歴が組み込まれる。例えば、分岐が数回選択されていた場合、予測を変更するために2回続けて選択されてはならない。多くのコンピュータシステムに、予測を記憶するテーブルおよび分岐命令と予測とを関係付けるハッシュ関数を用いる、この方法になんらかの変形を加えたものが用いられている。
【0009】
別の方法がHanan Potash氏の米国特許第4,435,756号に開示されている。Potash氏は、分岐条件の真偽が評価される確率が高いかどうかに基づいて各分岐命令の分岐予測を符号化することを開示している。他の実施形態では、Potash氏は分岐命令の分岐履歴および分岐予測の符号化を開示している。この実施形態では、予測が2回続けて誤っていた場合、その予測は変更され、それにはその分岐命令中への新たな予測の符号化と、その分岐命令のメモリへの書き戻しが必要である。また、分岐命令は、予測が変更されなくとも分岐履歴が変化した場合、常にメモリに書き戻さなければならないことも指摘しておく。これによって大量の書き込みデータが生じ、I/Oスループットが低下する。例えば、2つの分岐経路を交互に取る分岐命令は実行されるたびにメモリに書き戻さねばならない。
【0010】
ヒューレット・パッカード社の製造するコンピュータシステムには2種類の分岐予測が用いられてきた。すなわち、予測テーブルを用いて動的に生成された分岐予測をCPUの近くに記憶するハードウェア型分岐予測法およびコンピュータプログラムのコンパイル時に静的な分岐予測を各分岐命令中に符号化するソフトウェア型予測法である。ソフトウェア型予測法の場合、予測は比較関数中のオペランドの順序に基づいて分岐命令中に符号化される。例えば、次の比較および分岐(COMB)命令について考察する。
第1の命令は、
COMB,< R5,R3,Address である。
また、第2の命令は、
COMB,>= R3,R5,Address である。
【0011】
これらの命令は論理的には同一であるが、第1の命令中に符号化された分岐予測は第2の命令中に符号化された分岐予測の逆である。
【0012】
有効な予測を生成するためには、通常のコンピューティング環境におけるアプリケーションの実行時に分岐挙動を観察する「プロファイルに基づく最適化(PBO)」を実行しなければならない。PBOの実行が完了した後、PBOの実行中に観察された分岐挙動に基づく更新された分岐予測を組み込むようにユーザのアプリケーションがコンパイルされる。
【0013】
【発明が解決しようとする課題】
ソフトウェア型の分岐予測法の利点は、最後の1つあるいは2つの分岐ではなくある長い期間にわたって観察された挙動に基づいた予測が可能であることである。また、ソフトウェア型の予測法は複雑性およびコストの低いハードウェアしか必要としない。予測精度の判定とそれに応じた予測の更新とをも行なわなければならないハードウェアに比べ、分岐予測のみを実行するハードウェアの設計ははるかに容易である。
【0014】
ソフトウェア型分岐予測法の問題点は、予測が静的であり、プログラムデータあるいはコンピューティング環境の変化に適応しないことである。一旦分岐命令にコンパイルされた予測が変更されることはない。また、ユーザは高い分岐予測性能を得るために必要なPBOを実行したがらない。
【0015】
ハードウェア型分岐予測法の利点は、それがコンピュータシステムのユーザに対して完全に透明であり、分岐に影響するコンピューティング環境の変化(データベースに記憶された情報の変化等)に動的に適応し、また予測テーブルが大型である場合、あるいはPotash氏が開示するように予測を各命令に関係付けることができる場合、非常に精度が高いことである。
【0016】
ハードウェア型分岐予測法の問題点は、実施コストが高く、また現在のところハードウェア分岐予測を用いるように構成されたコンピュータが多くないことである。効率を上げかつ論理ゲートの数を低減するために、予測テーブルには通常限られた数の分岐命令しか記憶されず、分岐命令のアドレスの一部しか記憶されなかったり、あるいはかかるアドレスが全く記憶されないことが多い。その結果、この予測法にはエイリアシング(aliasing)が生じ、実際に実行される分岐命令に基づかない予測が生成される。エイリアシングはデータベースプログラム等の実行頻度の高い分岐命令を多数有するプログラムにおいては重大な問題となる。
【0017】
【課題を解決するための手段】
本発明は、分岐命令に関係付けられた分岐予測を、コンピュータの中央処理装置に周期的に割り込んで保留中の分岐命令を観察する予測調整ルーチンを実行することによって動的に調整する技術である。ある分岐命令が保留中でない場合、この予測調整ルーチンは終了し、中断された命令ストリームの実行が再開される。分岐命令が保留中である場合、その分岐命令が評価され、その分岐命令に関係付けられた分岐予測と比較される。その予測が正しい場合、中断された命令ストリームの実行が再開される。予測が誤っている場合、その予測を評価してそれを変更すべきかどうかが判定される。一実施形態においては、かかる分岐予測の変更が必要かどうかの判定にその分岐命令の過去の分岐履歴がさらに用いられる。
【0018】
【発明の実施の形態】
図1はコンピュータシステム10の概略ブロック図である。コンピュータシステム10は中央処理装置(CPU)12、レベル1(L1)キャッシュ14、レベル2(L2)キャッシュ16、メインメモリ(主記憶装置)18、永久記憶ディスク20および仮想メモリ記憶ディスク22を有する。多くのコンピュータシステムにおいて、永久記憶ディスク20および仮想メモリ記憶ディスク22は同じ物理的ハードドライブに組み込まれる。
【0019】
図1には、実行前、実行中および実行後にプログラムコードが記憶される、様々な位置を示す。あるプログラムが最初に実行されるとき、そのプログラムコードは永久記憶ディスク20から検索され、メインメモリ18に記憶される。プログラムコードの各部が実行されると、それらの部分はL2キャッシュ16およびL1キャッシュ14に記憶される。当該技術分野において周知の通り、L1キャッシュ14は通常CPU12に近い非常に高速のメモリとして実施される。これはCPUと同じ集積回路上に設けられることが多い。L2キャッシュ16はこれより多少低速で大型である。最後に、メインメモリ18は非常に大型で、L2キャッシュ16より低速である。
【0020】
メインメモリ18にプログラムおよびデータが記憶されるとき、そのプログラムおよびデータのサイズがメインメモリ18の物理的サイズを超える場合がある。この場合、メインメモリ18からのメモリページ(memory pages)が仮想メモリ記憶ディスク22に記憶され、これによってメインメモリ18内に利用可能なメモリスペースが追加される。プログラムが仮想メモリ記憶ディスク22に記憶されたメモリページを参照すると、そのメモリページが検索され、必要な場合、他のページが仮想メモリ記憶ディスク22にスワップアウトされる。
【0021】
図1にはコンピュータの分野において一般的な代表的コンピュータアーキテクチャを示す。以下に本発明を図1を参照して説明するが、当業者には本発明はより少数あるいはより多数のキャッシュメモリを有するコンピュータシステム、複数のCPUを有するコンピュータ等の他の様々なコンピュータアーキテクチャにおいて実施可能であることが理解されよう。
【0022】
図2は図1のCPU12の一部のブロック図である。CPU12は論理演算装置(ALU)24、プログラムカウンタ(PC)26、状態レジスタ(STR)27、命令レジスタ(IR)28、レジスタ30群、後入れ先出し(LIFO)スタック32および割り込みユニット34を有する。ALU24は加算、減算、乗算、桁送り、比較等の各種の数学的な動作を実行する。レジスタ30はALU24の使用するデータを記憶し、PC26は現在実行中の命令の記憶場所を指示するアドレスを記憶し、IR28は現在実行中の命令を記憶し、LIFOスタック32はCPU12の一時的記憶領域を供給し、割り込みユニット34は割り込みを処理する。状態レジスタ27はCPU12の様々なモードを制御および決定する状態ビットを有する。
【0023】
割り込みユニット34は割り込みに応答し、また割り込みを発生させることができる。例えば、IRQライン36はネットワークアダプタによるバス上へのハードウェア割り込みの表明といった、外部で生成されたハードウェア割り込みを表わす。中断命令38はプログラムコードに配置することのできるBREAKあるいはTRAP命令等のソフトウェア割り込みを表わす。タイマー42は周期的な間隔でCPU12に割り込むリアルライムクロック等のタイマー値に基づいて生成される割り込みを表わす。最後に、命令カウンタ40はある特定の数の命令の後に生成される割り込みを表わす。命令カウンタ40およびタイマー42の使用する値はオペレーティングシステムによって変更することができる。
【0024】
割り込みユニット34が割り込みを処理するとき、レジスタ30、PC26、STR27およびIR28に記憶された数がLIFOスタック32に記憶される。図2にはこれをLIFOスタック32に記憶されるそれぞれの値にラベル「(Int)」を付して示している。これらの値がLIFOスタック32に記憶された後、処理される特定の割り込みに関係付けられた割り込みサービスルーチン(ISR)が実行される。そのISRが処理された後、これらの値はLIFOスタック32から除去され、元の場所に戻される。
【0025】
ISRの実行中、ISRはLIFOスタック32に記憶された値へのアクセスを有する。したがって、ISRは割り込み発生時に実行中であった命令、その命令が記憶されているメインメモリ内のアドレス、および割り込み発生時のレジスタの内容を調べることができる。
【0026】
図1および図2は、コンピュータの分野で知られている最近のCPUアーキテクチャよりはるかに簡単なCPUアーキテクチャを示すものである。最近のCPUはアウトオブオーダ(out-of-order)実行を支援するための複数の実行ユニット、パイプライン、回路等を有する。しかし、図1および図2に示すアーキテクチャは本発明を説明するには十分である。以下に本発明を図1および図2を参照して説明するが、当業者には本発明は他の様々なコンピュータアーキテクチャにおいて実施可能であることは明らかであろう。
【0027】
本発明はCPUに割り込んで保留中の分岐予測を観察することによって分岐予測を動的に調整する方法および装置である。ここでは、「分岐命令」という用語は一般的にある条件に基づいて分岐する分岐命令を指すものとする。分岐命令が常に同じ場所に分岐する無条件分岐命令である場合、その分岐が選択されるかどうかの予測が不要であることはいうまでもない。一方、多くのコンピュータシステムが無条件分岐命令のある種の側面(例えば、パイプラインを一杯にしておくこと)を分岐命令の一般的枠組みの中で管理している。したがって、無条件分岐命令の分岐挙動の予測は本発明の範囲に含まれる。
【0028】
図3は本発明に係る割り込み型予測調整ルーチン44のフローチャートである。割り込み型予測調整ルーチン44はISRとしてソフトウェアで実施可能であるが、本発明はまた部分的にあるいは全てハードウェアで実施することも可能である。
【0029】
ブロック46において、割り込み型予測調整ルーチン44が開始される。図2において、割り込み型予測調整ルーチン44を開始するための割り込みはいくつかの方法を用いて生成することができる。タイマー42は周期的な間隔で割り込みを生成するように構成することができる。あるいは、命令カウンタ40はある特定の数の命令の後に割り込みを生成するように構成することができる。この時間間隔および命令カウント値はいずれも、処理装置がプログラムコードの異なる場所で割り込みを受けるようにランダムに変更することができる。
【0030】
タイマー42に比べて命令カウンタ40が優れている点は、コンピュータアーキテクチャによっては、命令カウンタ40が全ての分岐命令にわたってより均一に分散された予測評価を生成することができることである。例えば、PA−RISCアーキテクチャのある種の実施態様においては、本発明の使用に適したレベルの割り込みは実行中の命令が完了するまで延期され、その後その割り込みがサービスされる。キャッシュミスを発生させ、また完了までに比較的長時間を要することの多いロード命令について考察すると、タイマー42が割り込みを生成する場合、ロード命令40の直後に続く分岐命令は加算命令の直後に続く分岐命令より頻繁に評価される。これは、分岐命令およびロード命令の両方の実行に要する総時間のうちキャッシュミスが多くを占めるためである。したがって、キャッシュミス中にタイマー割り込みが発生する確率が高くなり、かかる割り込みは次の命令時に処理されることになる。命令カウンタ40にはこの問題が生じない。
【0031】
割り込み頻度が高いほど予測の精度は上がるが、頻繁な割り込みはオーバーヘッドを増大させる。割り込み間隔が約0.01秒である場合、すなわち命令カウント値が1500万の命令につき1割り込みである場合、最小限のオーバーヘッドで比較的高い予測精度が得られることがわかっている。
【0032】
割り込み型予測調整ルーチン44を開始させる、割り込みを生成する他の方法として、各種の条件付き分岐命令を中断命令に置き換える方法がある。CPU12が中断命令38を受けると、割り込みユニット34が割り込み型予測調整ルーチン44を開始させ、中断命令38は適当な分岐命令に置き換えられ、その分岐命令が次に説明するように評価される。この方法を用いると、分岐命令は最初に異なる割り込みサービスルーチン(割り込み型予測調整ルーチン44)あるいは他のなんらかのプログラムによって中断命令に置き換えることができる。
【0033】
最後に、他の実施形態では、図2のCPU12を状態レジスタ27内の状態フラグに基づいて分岐命令を選択的に中断命令として取り扱うように構成することができる。この実施形態では、状態フラグがセットされているとき、分岐命令は割り込み型予測調整ルーチン44によってサービスされるソフトウェア割り込みを生成する。また、この実施形態を命令カウンタ40あるいはタイマー42と併用して、ある特定の期間あるいはある特定の数の命令の後に状態フラグをセットし、それによってある期間あるいは命令カウント値の後に分岐命令が最初に発生したとき上述したようにソフトウェア割り込みを生成するようにすることができる。
【0034】
図3に戻って、ブロック46で割り込み型予測調整ルーチン44が開始された後、判断ブロック48で保留中の命令が分岐命令であるかどうかが判定される。CPU12が上述したように、ある分岐命令が保留中であるとき割り込みを生成するように構成されている場合、判断ブロック48は不要であることを指摘しておく。しかし、分岐命令に基づいて割り込みを生成することのできないコンピュータシステムに用いる場合、その割り込みによって条件付き分岐命令が「捕まった(caught)」かどうかを判定するために判断ブロック48のステップが必要である。コンピュータ命令の通常のインストラクションミックスでは、条件付き分岐命令は全命令の約15%を占める。
【0035】
保留中の命令が条件付き分岐命令ではない場合、割り込み型予測調整ルーチン44はブロック50に分岐し、割り込み型予測調整ルーチン44は終了し、元のプログラムコードが割り込まれたポイントでプログラムの実行が再開される。しかし、保留中の命令が分岐命令である場合、ブロック52でその命令が評価され、その分岐が選択されるかどうかが判定される。図2において、これは上述したように、LIFOスタック32に記憶された値を調べることによって実行することができる。本発明をある特定のコンピュータシステムに用いるように適応させた場合に、当業者にはそのコンピュータシステムにおいて保留中の分岐命令を評価する方法が容易に理解されるであろうことはいうまでもない。
【0036】
他の実施形態では、判断ブロック48においてまず保留中の命令が分岐命令であるかどうかが判定される。分岐命令である場合、上述したようにブロック52への「YES」分岐が選択される。分岐命令でない場合、判断ブロック48は分岐命令に達するまで命令をエミュレートすることによって命令を実行する。この方法を上述した方法と比べた場合、どちらの方法がより効率的であるかの判断においては、両者には本発明の実施者によって評価すべき長所と短所がある。上述したように、命令の約15%は分岐命令であり、したがって平均的には6回または7回の割り込みが行なわれるたびに分岐命令が捕らえられる。一方、エミュレーションの性能は命令の直接的実行より20倍から100倍悪く、命令の通常のインストラクションミックス(instruction mix)では分岐命令は平均すると5つあるいは6つの命令について1つ現われる。いずれの割り込みにおいても、結局分岐命令が評価されることはいうまでもない。分岐命令自体は割り込み型予測調整ルーチン44の終了後直接実行されるため、エミュレートする必要はないことを指摘しておく。実施者が分岐命令が出て来るまで命令をエミュレートしていくか、あるいは分岐命令が「捕まる」まで割り込みを行なうかは割り込み型予測調整ルーチン44の効率、エミュレーションの効率、およびインストラクションミックスにおける分岐命令と他の命令との比率等のいくつかの要因によって決まる。環境によっては、実行されるプログラムの混合状態に基づいて同じシステム上で両方の方法を用いることが望ましい場合があり、かかる使用方法も本発明の範囲に含まれる。
【0037】
ブロック52で分岐条件が評価された後、ブロック54で分岐予測が評価される。ヒューレット・パッカード社のPA−RISC命令集合にしたがって命令を実行するコンピュータシステムにおいては、分岐予測はオペランドの順序に基づいて分岐命令中に符号化される。
【0038】
判断ブロック56において分岐予測はその分岐予測をブロック52で実行された分岐予測の評価にしたがって選択しなければならない実際の分岐と比較することによって修正される。予測が正しい場合、割り込み型予測調整ルーチン44はブロック58に分岐し、ブロック58は分岐履歴を更新し、ブロック50で割り込み型予測調整ルーチン44は終了する。分岐が誤っている場合、ブロック60で分岐履歴に基づいて予測を更新し、その後分岐履歴を更新する場合がある。
【0039】
分岐履歴はより精度の高い分岐予測を行なうために用いられる。しかし、分岐履歴は本発明においては必須ではない。例えば、分岐予測が誤っている場合、単にそれを変更するだけでよい。必要なのは、ブロック54からの予測(これは分岐命令中に符号化することができる)とブロック52における分岐条件の評価のみである。
【0040】
ある簡単な分岐履歴アルゴリズムでは2つの連続する評価の結果、予測が誤っている場合には単にその予測を変更する。分岐履歴によって分岐予測がいかに増大するかを説明するために、100回ループし、その後ループしないプログラムループを考察する。分岐履歴がない場合、ループする分岐命令が最後のループで評価されて、予測が「分岐」からこの分岐命令にとっては良い予測ではない「非分岐」に変化する可能性は100分の1である。上述した分岐履歴アルゴリズムによれば、予測を変更するにはループする分岐命令を最後のループで2回連続して評価しなければならない。これが起こる可能性は10,000分の1である。したがって、このループする分岐命令に関する予測の精度は分岐履歴によって増大する。
【0041】
予測の修正時に分岐履歴を組み込むためには、分岐履歴を保管しなければならない。分岐命令への分岐履歴の符号化がHanan Potash氏の米国特許第4,435,756号に開示されている。しかし、分岐履歴を分岐命令に記憶するとき、分岐命令はその分岐が評価されるときには予測が正しい場合であっても常にメモリに書き戻さなければならない。
【0042】
ヒューレット・パッカード社のPA−RISC命令集合には命令への分岐予測の符号化方法が規定されているが、分岐履歴を分岐命令に符号化する方法については規定されていない。本発明によれば、一実施形態では分岐予測は32Kビットであるプログラムメモリ内の履歴テーブルに記憶され、その分岐命令のアドレスにハッシュ関数を適用することによってアドレス指定され、それによってテーブル中のある特定の分岐命令を表わす位置が判定される。従来のハードウェア型分岐予測法では、約0.5Kビット〜2.0Kビットの大きさの履歴テーブルを設けるのが一般的である。本発明の利点の1つは、ソフトウェアで実施可能であるため、履歴テーブルの大きさが最大限の性能を得られるように容易に調整可能であることである。
【0043】
分岐履歴は様々な方法で符号化することができる。例えば、履歴テーブル中の参照されるビットは、その分岐が選択された場合の第1の値とその分岐が選択されなかった場合の第2の値として定義することができる。あるいは、参照されるビットは、前回の予測が正しかった場合の第1の値と前回の予測が誤っていた場合の第2の値として定義することもできる。後者の符号化法にはエイリアシングに関わる問題が低減されるという利点がある。エイリアシングのために分岐履歴テーブルの同じエントリに関係付けられる2つの分岐命令について考察する。大部分の分岐命令は正しいため、これらの分岐命令がいずれもそのテーブルエントリを「前回の予測は正」として符号化する確率が高い。一方、前者の符号化方法が用いられ、一方の命令の予測が「選択」であり、他方の命令の予測が「非選択」である場合、分岐履歴テーブルへのアクセス時にこれら2つの分岐命令が互いに干渉し合う可能性がはるかに高い。さらに、後者の方法には、テーブルの全てのエントリを「前回の予測は正」と初期設定することができるため、分岐履歴テーブルの最初の初期設定時に利点がある。
【0044】
また、本発明の範囲内で、より高度な分岐履歴アルゴリズムを使用することができる。例えば、分岐履歴テーブルはある特定の分岐命令の分岐挙動の実行時平均を追跡し、その実行時平均に基づいて予測を更新するように形成することができる。当業者には、様々なアルゴリズムを用いて、分岐履歴の追跡と分岐履歴に基づく分岐予測の調整とを行なうことができることは明らかであろう。本発明はソフトウェアで実施可能であるため、プログラマは様々なアルゴリズムを試して、ある特定の環境でどのアルゴリズムが最も良好に機能するかを容易に判定することができる。さらに、複合予測アルゴリズムを使用することも可能であり、これはハードウェアでは実現できないものである。
【0045】
上述したように、ブロック58では予測が正しい場合に履歴テーブルが更新され、ブロック60では予測が誤っている場合に履歴テーブルが更新され、またあるいは予測が更新される場合もある。ほとんどの予測/履歴アルゴリズムにおいて、予測が正しいとわかった場合にはそれが変更されることはなく、本発明の実施にあたってそれが行なわれるとも考えられない。しかし、特定のアルゴリズムにおいて、必要である場合にブロック58で予測を変更することも本発明の範囲内である。
【0046】
ブロック60では分岐履歴が更新され、また予測が更新される場合もある。例えば、上述したように、予測が誤っているがその分岐命令の前回の実行時には正しかった場合、その予測は変更されない場合がある。ある分岐命令を変更すべきかどうかの判定に分岐履歴を用いることが有益であるもう一つの理由は、分岐予測の変更の頻度が低くなることにある。ヒューレット・パッカード社のPA−RISC命令集合を用いる場合、予測が変更されるたびにその分岐命令をメモリに書き戻さねばならない。したがって、全体的な予測精度に重大な影響がでない範囲で、予測の変更の頻度を最小限とすることが望ましい。
【0047】
予測の更新が必要である場合、ブロック60でも予測が更新される。PA−RISC命令集合は分岐命令中に予測を含むが、予測テーブル等の当該技術分野において、周知の他の任意の方法を用いた予測の符号化も本発明の範囲に含まれる。
【0048】
命令中に符号化された予測を更新する際には、その命令の演算コードを更新し、その命令をメモリに書き戻さなければならない。図1に示すように、分岐命令はL1キャッシュ14、L2キャッシュ16、メインメモリ18、仮想メモリ記憶ディスク22および永久記憶ディスク20に記憶することができる。プログラマは分岐命令をこれらの記憶装置のそれぞれに書き戻すことを望まないかもしれないが、これも本発明の範囲に含まれる。
【0049】
本発明の一実施形態において、分岐命令はL1キャッシュ14、L2キャッシュ16およびメインメモリ18に書き戻されるが、永久記憶ディスク20や仮想メモリ記憶ディスク22には書き戻されない。永久記憶ディスク20への書き戻しを行なうと、最小限の性能の向上しか得られず、また実行可能なコードの管理に関係する多くの問題が発生する可能性がある。また、複数のユーザがプログラムファイルを共用することが一般的であり、したがってそれぞれのユーザに共通のファイルへの分岐履歴の記憶を行なわせることは不可能である。しかし、状況によっては更新された分岐予測を永久記憶ディスク20に記憶することが有益である場合もある。
【0050】
仮想メモリ記憶ディスク22への分岐命令の書き戻しによって生じる問題はこれより少ないが、これを行なうと性能の改善が小さくなり、かなりのオーバーヘッドを生じる。これに対して、分岐命令をL1キャッシュ14、L2キャッシュ16およびメインメモリ18に書き戻すと大きな性能の改善が得られる。
【0051】
コンピュータシステムにおいては様々な技術を用いてメモリの管理が行なわれる。例えば、ダーティビット(dirty bit)をキャッシュ内のメモリブロックに関係付けて、そのキャッシュが不要になったときそのブロックを単純に破棄することができるか、あるいはメモリブロック内の変更を反映させるためにメインメモリに書き戻す必要があるかどうかを示すのが一般的である。当業者には、これらの技術を用いて本発明を実施する方法は自明であろう。例えば、変更された分岐命令をL1キャッシュ14とL2キャッシュ16のみに書き戻し、メインメモリ18には書き戻さないことが望ましい場合、変更された分岐命令を含むブロックのダーティビットをL2キャッシュ16上で明らかにしておき、そのブロックは破棄してもよく、メインメモリ18への書き戻しは不要であることを示すようにすることができる。あるいは、ダーティビットがセットされている場合、そのブロック(および更新された予測を有する変更された分岐命令)を、その分岐命令を含むメモリブロックが排除される前にメインメモリ18に書き戻しされなければならず、これによって更新された分岐予測が保存されるが、計算資源(computing resources)がさらに消費されることになる。
【0052】
また、各種のコードを異なる態様で処理することが望ましい場合がある。例えば、分岐予測をカーネルコードについては調整したいが、ユーザコードについては調整したくない場合がある。同様に、プログラマがプログラムのデバッグ中に分岐予測をオフして、プログラムの実行中の分岐命令の変更を防止したい場合がある。当業者には本発明の使用が望ましい状況とそうでない状況は明らかであり、またプログラマやコンピュータユーザにそれを行なうための適当なインターフェースを供給することも可能であろう。
【0053】
ブロック60で分岐履歴の更新、および場合によっては分岐予測の更新が行なわれた後、割り込み型予測調整ルーチン44はブロック50に分岐し、このルーチンが終了する。
【0054】
本発明はCPUに割り込んで保留中の分岐命令を調べることによって、分岐予測を動的に調整する技術を提供する。本発明は、従来のソフトウェア技術とハードウェア技術の利点を組み合わせたものである。
【0055】
本発明をここではソフトウェアを用いて実施するものとして説明したが、ハードウェアあるいはマイクロコードを用いて実施することも可能である。ソフトウェアで実施する場合、本発明を構成することは容易である。割り込み期間や履歴テーブルの大きさ等のパラメータの調整は容易であり、また性能の変化を観察して本発明を最適の性能が得られるように適合させることができる。通常、これは従来のハードウェア型分岐予測では不可能である。
【0056】
従来のソフトウェア型分岐予測では予測を分岐命令中に符号化するが、予測は静的である。本発明は静的なソフトウェア符号化分岐予測を解釈するように設計されたシステム上で実施して、かかるシステムに動的な分岐予測を提供することができる。また、本発明は従来の分岐予測に比べてより大きな履歴および予測メモリを提供する。これは、これらのメモリをソフトウェアデータ構造として画成することができるためである。
【0057】
本発明の他の大きな利点は、本発明は予測を時間の経過につれて動的に調整するものであるが、かかる調整を従来の予測法に比べてはるかに低い頻度で実行できることである。従来技術においては、分岐予測は両極端に別れていた。従来のソフトウェア型分岐予測では、予測が一度生成されるとこれは命令の符号化に固定され、実行時に予測が変更されることはなかった。一方、従来のハードウェア型分岐予測では分岐命令が実行されるたびにその分岐命令を評価していた。性能を低下させずにこの機能を実行するには大量のハードウェアが必要である。さらに、予測が安定している場合(ほとんどの予測は安定している)、分岐命令の実行のたびに予測を評価することによる利益はほとんどなく、また予測が頻繁に変化する場合、予測を絶えず変更することもやはり大きな性能の改善にはつながらない。
【0058】
本発明は、予測の更新を全く行なわない場合と分岐命令の実行のたびに予測を更新する場合との中間をとったものである。上述した実施形態の1つにおいて、CPUは1,500万回の命令について1回の割り込みを受ける。分岐命令の分岐予測が評価される頻度がこのように低いため、大きなオーバーヘッドを生じることなく、予測の更新に用いる時間を大きくすることができる。このため、本発明はソフトウェアで実施する場合きわめて有効である。
【0059】
評価を行なう頻度が相対的に低いことは、本発明をハードウェアで実施する場合にも有益である。かかる実施態様は、従来のハードウェア分岐予測技術よりはるかに簡単である。これは、システム全体の性能に影響を与えることなく予測の評価および更新に時間をかけることができるためである。分岐予測に専用のハードウェアが少ないため、CPUの他の機能の速度を上げるためにより多くのハードウェアを用いることができる。
【0060】
本発明は、従来の分岐予測法に対して大きな性能の改善をもたらすものである。シミュレーションの結果、従来のハードウェア予測法に比べ4%から8%の改善が得られ、また従来のソフトウェア予測法に比べ10%から15%の改善が得られる。
【0061】
本発明をその実施形態を参照して説明したが、当業者には本発明の精神と範囲を逸脱することなくその形態および細部に変更を加えうることは明らかであろう。
【0062】
以下に発明の実施の形態を要約する。
1. 中央処理装置によって実行中のプログラムコードのセグメントに含まれる分岐命令に関連した分岐予測を調整する分岐予測調整方法であって、
前記中央処理装置による前記分岐命令の実行の保留時に前記プログラムコードの実行に割り込み、
前記分岐予測を更新する予測調整ルーチンを実行し、
前記プログラムコードの実行を再開する分岐予測調整方法。
【0063】
2. 前記中央処理装置による前記分岐命令の実行の保留時における前記プログラムコードの実行への割り込みにおいて、
タイマーをある時間間隔に初期設定し、
前記時間間隔の終了を待ち、
前記時間間隔が終了したとき前記プログラムコードの実行に割り込む上記1記載の分岐予測調整方法。
【0064】
3. 上記2においてさらに前記時間間隔が終了した後前記分岐命令を待つ上記2記載の分岐予測調整方法。
【0065】
4. タイマーのある時間間隔への初期設定において、
タイマーをランダムな時間間隔に初期設定する上記2記載の分岐予測調整方法。
【0066】
5. 前記中央処理装置による前記分岐命令の実行の保留時における前記プログラムコードの実行への割り込みにおいて、
命令カウンタをある命令カウント値に初期設定し、
命令の実行時に該命令をカウントし、
実行された命令の数が前記命令カウント値に等しくなったとき前記プログラムコードの実行に割り込む上記1記載の分岐予測調整方法。
【0067】
6. 上記5においてさらに前記命令カウント値に達した後前記分岐命令を待つ上記5記載の分岐予測調整方法。
【0068】
7. 命令カウンタの命令カウント値への初期設定において、命令カウンタをランダムな命令カウント値に初期設定する上記5記載の分岐予測調整方法。
【0069】
8. 前記中央処理装置による前記分岐命令の実行の保留時における前記プログラムコードの実行への割り込みにおいて、
前記プログラムコードの実行に割り込む中断命令を実行し、
前記中断命令を前記分岐命令に置き換える上記1記載の分岐予測調整方法。
【0070】
9. 前記中央処理装置による前記分岐命令の実行の保留時における前記プログラムコードの実行への割り込みにおいて、
前記分岐命令に割り込みを発生させるフラグをセットし、
前記フラグがセットされた後前記第1の中断命令が現われたとき、前記プログラムコードの実行に割り込む上記1記載の分岐予測調整方法。
【0071】
10. 前記分岐予測を更新する予測調整ルーチンの実行において、
前記分岐命令の分岐条件を評価して前記分岐命令が分岐するかどうかを判定し、
前記分岐命令に関連する分岐予測を評価し、
前記分岐予測の正誤を判定し、
前記分岐命令が誤っている場合前記分岐予測をトグルする上記1記載の分岐予測調整方法。
【0072】
11. 前記分岐予測を更新する予測調整ルーチンの実行において、
前記分岐命令の分岐条件を評価して前記分岐命令が分岐するかどうかを判定し、
前記分岐命令に関連する分岐予測を評価し、
前記分岐予測の正誤を判定し、
前記分岐予測の正誤を分岐履歴として保管し、
分岐履歴に基づいて前記分岐予測を更新し、前記分岐予測の正誤を判定する上記1記載の分岐予測調整方法。
【0073】
12. 分岐履歴に基づく前記分岐予測の更新および前記分岐予測の正誤の判定において、 2回連続して評価したとき前記予測が誤っている場合前記分岐予測をトグルする上記11記載の分岐予測調整方法。
【0074】
13. 前記分岐予測を更新する予測調整ルーチンの実行において、
保留中の命令を調べて前記保留中の命令が分岐命令であるかどうかを判定し、前記保留中の命令が分岐命令ではない場合前記プログラムコードの実行を再開する上記1記載の分岐予測調整方法。
【0075】
14. 前記分岐予測を更新する予測調整ルーチンの実行において、
保留中の命令を調べて前記保留中の命令が分岐命令であるかどうかを判定し、前記保留中の命令が分岐命令ではない場合、分岐命令に達するまで前記プログラムコードからの命令の実行をエミュレートする上記1記載の分岐予測調整方法。
【0076】
15. コンピュータ命令を実行する中央処理装置であって、
割り込みに応答して分岐予測調整ルーチンを起動する割り込みユニットを有し、前記分岐予測調整ルーチンは保留中の分岐命令を評価し、前記保留中の分岐命令に関連する分岐予測を前記分岐予測が正しいかどうかに基づいて更新する中央処理装置。
【0077】
16. 前記割り込みユニットは、ある時間間隔を測定し、前記時間間隔が終了したとき前記割り込みを生成するタイマーを含む上記15記載の中央処理装置。
【0078】
17. 前記割り込みユニットは、ある命令カウント値に初期設定することができ、実行された命令の数が前記命令カウント値に等しくなったとき前記割り込みを生成する命令カウンタを含む上記15記載の中央処理装置。
【0079】
18. 前記割り込みユニットは中断命令を受けたとき前記割り込みを生成する上記15記載の中央処理装置。
【0080】
19. 上記15においてさらに前記分岐命令が保留中であるとき前記割り込みユニットに前記割り込みを生成させる状態フラグを含む上記15記載の中央処理装置。
【0081】
20. 前記分岐予測調整ルーチンは保留中の分岐命令を評価し、前記保留中の分岐命令に関連する分岐予測を前記分岐予測が正しいかどうかに基づき、また分岐履歴に基づいて更新する上記15記載の中央処理装置。
【0082】
21. 前記分岐予測調整ルーチンは、2回連続して評価したとき前記分岐予測が誤っている場合前記分岐予測をトグルする上記20記載の中央処理装置。
【0083】
22. 分岐命令に関連する分岐予測を調整するコンピュータシステムにおいて実施されるデータ構造であって、
割り込みに応答して起動される分岐予測調整ルーチンを有し、前記分岐予測調整ルーチンは保留中の分岐命令を評価し、前記保留中の分岐命令に関連する分岐予測を前記分岐予測が正しいかどうかに基づいて更新するデータ構造。
【0084】
23. 中央処理装置によって実行中の実行可能なプログラムコードのセグメントに含まれる分岐命令に関連する分岐予測を調整するためのコンピュータ読取可能プログラムコードを有するプログラム記憶媒体であって、
前記中央処理装置による前記分岐命令の実行が保留中であるとき、前記実行可能なプログラムコードの実行への割り込みを発生させる前記コンピュータ読取可能プログラムコードの第1のセグメントと、
前記分岐命令に関連する前記分岐予測を調整するための前記コンピュータ読取可能コードの第2のセグメントと、
前記コンピュータ読取可能コードの前記第1のセグメントによって発生した割り込みに応答して前記コンピュータ読取可能コードの前記第2のセグメントを実行するための前記コンピュータ読取可能プログラムコードの第3のセグメントと、
前記実行可能なプログラムコードの実行を再開する前記コンピュータ読取可能プログラムコードの第4のセグメントと、からなるプログラム記憶媒体。
【0085】
24. 中央処理装置によって実行中のプログラムコードのセグメントに含まれる分岐命令に関連する分岐予測を調整する方法を実施するための前記コンピュータによって実行可能なプログラム命令を含むコンピュータ読取可能なプログラム記憶媒体であって、
前記中央処理装置による前記分岐命令の実行が保留中であるとき前記プログラムコードの実行に割り込み、
前記分岐予測を更新する予測調整ルーチンを実行し、
前記プログラムコードの実行を再開する、プログラム記憶媒体。
【0086】
【発明の効果】
上述のように本発明によれば、予測を時間の経過につれて動的に調整し、この調整を従来の予測法と比較してはるかに低い頻度で実行できる。このため、大きなオーバーヘッドを生じることなく予測の更新に用いる時間を大きくすることができる。これは、ソフトウェアで実施する場合においてきわめて有効である。
【図面の簡単な説明】
【図1】コンピュータシステムの概略を示すブロック図である。
【図2】図1に示すコンピュータシステムを構成するCPUの一部を示すブロック図である。
【図3】本発明に係る割り込み型予測調整ルーチンを示すフローチャートである。
【符号の説明】
10 コンピュータシステム
12 中央処理装置(CPU)
14 L1キャッシュ
16 L2キャッシュ
18 メインメモリ
20 永久記憶ディスク
22 仮想メモリ記憶ディスク
24 論理演算装置(ALU)
26 プログラムカウンタ(PC)
27 状態レジスタ(STR)
28 命令レジスタ(IR)
30 レジスタ
32 LIFOスタック
34 割り込みユニット
36 IRQライン
38 中断命令
40 命令カウンタ
42 タイマー
44 割り込み型予測調整ルーチン

Claims (14)

  1. 中央処理装置によって実行中のプログラムコードのセグメントに含まれる分岐命令に関連した分岐予測を調整する分岐予測調整方法において、
    前記中央処理装置による前記分岐命令の実行が待ち状態の時に前記プログラムコードの実行に割り込むことと、
    前記分岐予測を更新する予測調整ルーチンを実行することと、
    前記プログラムコードの実行を再開することと、
    を含むことを特徴とする分岐予測調整方法。
  2. 前記中央処理装置による前記分岐命令の実行が待ち状態の時に前記プログラムコードの実行に割り込むことは、
    タイマーを所定の時間間隔に初期設定することと、
    前記時間間隔の終了を待つことと、
    前記時間間隔が終了したとき前記プログラムコードの実行に割り込むことと、
    を含むことを特徴とする請求項1に記載の分岐予測調整方法。
  3. 前記時間間隔が終了した後に前記分岐命令を待つことをさらに含むことを特徴とする請求項2に記載の分岐予測調整方法。
  4. タイマーを所定の時間間隔に初期設定することは、タイマーをランダムな時間間隔に初期設定することであることを特徴とする請求項2に記載の分岐予測調整方法。
  5. 前記中央処理装置による前記分岐命令の実行が待ち状態の時に前記プログラムコードの実行に割り込むことは、
    命令カウンタを所定の命令カウント値に初期設定することと、
    命令の実行時に該命令をカウントすることと、
    実行された命令の数が前記命令カウント値に等しくなったとき前記プログラムコードの実行に割り込むことと、
    を含むことを特徴とする請求項1に記載の分岐予測調整方法。
  6. 実行された命令の数が前記命令カウント値に達した後に前記分岐命令を待つことをさらに含むことを特徴とする請求項5に記載の分岐予測調整方法。
  7. 命令カウンタを所定の命令カウント値に初期設定することは、命令カウンタをランダムな命令カウント値に初期設定することであることを特徴とする請求項5に記載の分岐予測調整方法。
  8. 前記中央処理装置による前記分岐命令の実行が待ち状態の時に前記プログラムコードの実行に割り込むことは、
    前記プログラムコードの実行に割り込む中断命令を実行することと、
    前記中断命令を前記分岐命令に置き換えることと、
    を含むことを特徴とする請求項1に記載の分岐予測調整方法。
  9. 前記中央処理装置による前記分岐命令の実行が待ち状態の時に前記プログラムコードの実行に割り込むことは、
    前記分岐命令に割り込みを発生させるフラグをセットすることと、
    前記フラグがセットされた後、前記第1の中断命令が現われたとき、前記プログラムコードの実行に割り込むことと、
    を含むことを特徴とする請求項1に記載の分岐予測調整方法。
  10. 前記分岐予測を更新する予測調整ルーチンを実行することは、
    前記分岐命令の分岐条件を評価して前記分岐命令が分岐するか否かを判定することと、
    前記分岐命令に関連する分岐予測を評価することと、
    前記分岐予測の正誤を判定することと、
    前記分岐予測が誤っている場合には前記分岐予測をトグルすることと、
    を含むことを特徴とする請求項1に記載の分岐予測調整方法。
  11. 前記分岐予測を更新する予測調整ルーチンを実行することは、
    前記分岐命令の分岐条件を評価して前記分岐命令が分岐するかどうかを判定することと、
    前記分岐命令に関連する分岐予測を評価することと、
    前記分岐予測の正誤を判定することと、
    前記分岐予測の正誤を分岐履歴として保管することと、
    分岐履歴に基づいて前記分岐予測を更新し、前記分岐予測の正誤を判定することと、
    を含むことを特徴とする請求項1に記載の分岐予測調整方法。
  12. 分岐履歴に基づいて前記分岐予測を更新し、前記分岐予測の正誤を判定することは、2回連続して前記分岐予測を評価したとき前記分岐予測が誤っている場合には前記分岐予測をトグルすることであることを特徴とする請求項11に記載の分岐予測調整方法。
  13. 前記分岐予測を更新する予測調整ルーチンを実行することは、
    待ち状態の命令を調べて前記待ち状態の命令が分岐命令であるか否かを判定することと、
    前記待ち状態の命令が分岐命令でない場合には前記プログラムコードの実行を再開することと、
    を含むことを特徴とする請求項1に記載の分岐予測調整方法。
  14. 前記分岐予測を更新する予測調整ルーチンを実行することは、
    待ち状態の命令を調べて前記待ち状態の命令が分岐命令であるか否かを判定することと、
    前記待ち状態の命令が分岐命令でない場合には、分岐命令に達するまで前記プログラムコードからの命令の実行をエミュレートすることと、
    を含むことを特徴とする請求項1に記載の分岐予測調整方法。
JP09016398A 1997-04-09 1998-04-02 分岐予測調整方法 Expired - Fee Related JP3790039B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US8/840-080 1997-04-09
US08/840,080 US5838962A (en) 1997-04-09 1997-04-09 Interrupt driven dynamic adjustment of branch predictions

Publications (2)

Publication Number Publication Date
JPH10283183A JPH10283183A (ja) 1998-10-23
JP3790039B2 true JP3790039B2 (ja) 2006-06-28

Family

ID=25281399

Family Applications (1)

Application Number Title Priority Date Filing Date
JP09016398A Expired - Fee Related JP3790039B2 (ja) 1997-04-09 1998-04-02 分岐予測調整方法

Country Status (4)

Country Link
US (1) US5838962A (ja)
EP (1) EP0871110B1 (ja)
JP (1) JP3790039B2 (ja)
DE (1) DE69825350T2 (ja)

Families Citing this family (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6105102A (en) * 1998-10-16 2000-08-15 Advanced Micro Devices, Inc. Mechanism for minimizing overhead usage of a host system by polling for subsequent interrupts after service of a prior interrupt
US6578143B1 (en) * 1998-12-18 2003-06-10 Qualcomm Incorporated Method for negotiating weakened keys in encryption systems
US8074055B1 (en) 1999-01-28 2011-12-06 Ati Technologies Ulc Altering data storage conventions of a processor when execution flows from first architecture code to second architecture code
US7275246B1 (en) 1999-01-28 2007-09-25 Ati International Srl Executing programs for a first computer architecture on a computer of a second architecture
US6826748B1 (en) 1999-01-28 2004-11-30 Ati International Srl Profiling program execution into registers of a computer
US6954923B1 (en) 1999-01-28 2005-10-11 Ati International Srl Recording classification of instructions executed by a computer
US7013456B1 (en) 1999-01-28 2006-03-14 Ati International Srl Profiling execution of computer programs
US6978462B1 (en) 1999-01-28 2005-12-20 Ati International Srl Profiling execution of a sequence of events occuring during a profiled execution interval that matches time-independent selection criteria of events to be profiled
US8127121B2 (en) 1999-01-28 2012-02-28 Ati Technologies Ulc Apparatus for executing programs for a first computer architechture on a computer of a second architechture
US8065504B2 (en) 1999-01-28 2011-11-22 Ati International Srl Using on-chip and off-chip look-up tables indexed by instruction address to control instruction execution in a processor
US7065633B1 (en) 1999-01-28 2006-06-20 Ati International Srl System for delivering exception raised in first architecture to operating system coded in second architecture in dual architecture CPU
US7941647B2 (en) 1999-01-28 2011-05-10 Ati Technologies Ulc Computer for executing two instruction sets and adds a macroinstruction end marker for performing iterations after loop termination
US7111290B1 (en) * 1999-01-28 2006-09-19 Ati International Srl Profiling program execution to identify frequently-executed portions and to assist binary translation
US6314510B1 (en) * 1999-04-14 2001-11-06 Sun Microsystems, Inc. Microprocessor with reduced context switching overhead and corresponding method
US6622300B1 (en) 1999-04-21 2003-09-16 Hewlett-Packard Development Company, L.P. Dynamic optimization of computer programs using code-rewriting kernal module
US6779107B1 (en) 1999-05-28 2004-08-17 Ati International Srl Computer execution by opportunistic adaptation
US6549959B1 (en) 1999-08-30 2003-04-15 Ati International Srl Detecting modification to computer memory by a DMA device
US6934832B1 (en) 2000-01-18 2005-08-23 Ati International Srl Exception mechanism for a computer
US8214601B2 (en) * 2004-07-30 2012-07-03 Hewlett-Packard Development Company, L.P. Purging without write-back of cache lines containing spent data
US7487340B2 (en) * 2006-06-08 2009-02-03 International Business Machines Corporation Local and global branch prediction information storage
US8301871B2 (en) * 2006-06-08 2012-10-30 International Business Machines Corporation Predicated issue for conditional branch instructions
JP2008107913A (ja) * 2006-10-23 2008-05-08 Toshiba Corp プログラム、ソフトウェア変換装置及びコンピュータ
US7984279B2 (en) * 2006-11-03 2011-07-19 Qualcomm Incorporated System and method for using a working global history register
JP5082716B2 (ja) * 2007-09-20 2012-11-28 富士通セミコンダクター株式会社 プログラム変換装置、プログラム変換方法およびプログラム変換プログラム
US8099586B2 (en) * 2008-12-30 2012-01-17 Oracle America, Inc. Branch misprediction recovery mechanism for microprocessors
US8713562B2 (en) * 2012-01-06 2014-04-29 International Business Machines Corporation Intelligent and automated code deployment
US9448909B2 (en) * 2013-10-15 2016-09-20 Advanced Micro Devices, Inc. Randomly branching using performance counters
US9875106B2 (en) * 2014-11-12 2018-01-23 Mill Computing, Inc. Computer processor employing instruction block exit prediction
GB2574042B (en) * 2018-05-24 2020-09-09 Advanced Risc Mach Ltd Branch Prediction Cache
US11086629B2 (en) * 2018-11-09 2021-08-10 Arm Limited Misprediction of predicted taken branches in a data processing apparatus
US11275607B2 (en) * 2020-03-17 2022-03-15 Arm Limited Improving the responsiveness of an apparatus to certain interrupts

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4124893A (en) * 1976-10-18 1978-11-07 Honeywell Information Systems Inc. Microword address branching bit arrangement
US4176394A (en) * 1977-06-13 1979-11-27 Sperry Rand Corporation Apparatus for maintaining a history of the most recently executed instructions in a digital computer
US4370711A (en) * 1980-10-21 1983-01-25 Control Data Corporation Branch predictor using random access memory
US4435756A (en) * 1981-12-03 1984-03-06 Burroughs Corporation Branch predicting computer
US4679141A (en) * 1985-04-29 1987-07-07 International Business Machines Corporation Pageable branch history table
US4901233A (en) * 1987-07-20 1990-02-13 International Business Machines Corporation Computer system with logic for writing instruction identifying data into array control lists for precise post-branch recoveries
EP0404068A3 (en) * 1989-06-20 1991-12-27 Fujitsu Limited Branch instruction executing device
EP0550286A3 (en) * 1992-01-03 1993-11-03 Amdahl Corp 2-level multi-processor synchronization protocol
US5367703A (en) * 1993-01-08 1994-11-22 International Business Machines Corporation Method and system for enhanced branch history prediction accuracy in a superscalar processor system
US5717909A (en) * 1995-05-26 1998-02-10 National Semiconductor Corporation Code breakpoint decoder
US5659752A (en) * 1995-06-30 1997-08-19 International Business Machines Corporation System and method for improving branch prediction in compiled program code
SE520343C2 (sv) * 1997-02-12 2003-07-01 Ericsson Telefon Ab L M Förfarande, system och dator för grenprediktion

Also Published As

Publication number Publication date
EP0871110A3 (en) 1999-01-20
US5838962A (en) 1998-11-17
EP0871110B1 (en) 2004-08-04
DE69825350D1 (de) 2004-09-09
DE69825350T2 (de) 2005-07-21
JPH10283183A (ja) 1998-10-23
EP0871110A2 (en) 1998-10-14

Similar Documents

Publication Publication Date Title
JP3790039B2 (ja) 分岐予測調整方法
US6694427B1 (en) Method system and apparatus for instruction tracing with out of order processors
US7395419B1 (en) Macroscalar processor architecture
US5758142A (en) Trainable apparatus for predicting instruction outcomes in pipelined processors
US6209085B1 (en) Method and apparatus for performing process switching in multiprocessor computer systems
JP3531731B2 (ja) 投機的プロセッサ内で非投機的イベントをカウントするための方法およびシステム
US5949995A (en) Programmable branch prediction system and method for inserting prediction operation which is independent of execution of program code
US8578351B2 (en) Hybrid mechanism for more efficient emulation and method therefor
US20050154867A1 (en) Autonomic method and apparatus for counting branch instructions to improve branch predictions
US20060242389A1 (en) Job level control of simultaneous multi-threading functionality in a processor
JP6546584B2 (ja) 推論的ベクトル演算の実行を制御するためのデータ処理装置及び方法
CN104317791A (zh) 汇聚和散布多个数据元素
US6671762B1 (en) System and method of saving and restoring registers in a data processing system
US6714904B1 (en) System for using rate of exception event generation during execution of translated instructions to control optimization of the translated instructions
US7290255B2 (en) Autonomic method and apparatus for local program code reorganization using branch count per instruction hardware
US6681321B1 (en) Method system and apparatus for instruction execution tracing with out of order processors
JPH08221272A (ja) 命令キャッシュに命令をロードする方法
JP7046087B2 (ja) キャッシュ・ミス・スレッド・バランシング
Patel et al. rePLay: A hardware framework for dynamic program optimization
US10180839B2 (en) Apparatus for information processing with loop cache and associated methods
US7836277B2 (en) Pre-tracing instructions for CGA coupled processor in inactive mode for execution upon switch to active mode and continuing pre-fetching cache miss instructions
JP2002014868A (ja) メモリ参照動作検出機構を有するマイクロプロセッサおよびコンパイル方法
Bennett et al. Reducing cache miss rates using prediction caches
Thakkar et al. An instruction fetch unit for a graph reduction machine
US11977896B2 (en) Issuing a sequence of instructions including a condition-dependent instruction

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20050331

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20050331

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20060320

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20060328

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20060330

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees