JP2004503865A - 選択的分岐予測を有するプロセッサ - Google Patents
選択的分岐予測を有するプロセッサ Download PDFInfo
- Publication number
- JP2004503865A JP2004503865A JP2002511081A JP2002511081A JP2004503865A JP 2004503865 A JP2004503865 A JP 2004503865A JP 2002511081 A JP2002511081 A JP 2002511081A JP 2002511081 A JP2002511081 A JP 2002511081A JP 2004503865 A JP2004503865 A JP 2004503865A
- Authority
- JP
- Japan
- Prior art keywords
- address
- branch
- instruction
- mode
- prediction
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 claims abstract description 14
- 238000012545 processing Methods 0.000 claims description 28
- 230000008859 change Effects 0.000 claims description 2
- 230000015654 memory Effects 0.000 description 20
- 238000004364 calculation method Methods 0.000 description 19
- 238000010586 diagram Methods 0.000 description 13
- 238000011156 evaluation Methods 0.000 description 9
- 230000000694 effects Effects 0.000 description 7
- 230000008901 benefit Effects 0.000 description 5
- 238000013461 design Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 238000004519 manufacturing process Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000005764 inhibitory process Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 230000008569 process Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/32—Address formation of the next instruction, e.g. by incrementing the instruction counter
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3005—Arrangements for executing specific machine instructions to perform operations for flow control
- G06F9/30058—Conditional branch instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3842—Speculative instruction execution
- G06F9/3844—Speculative instruction execution using dynamic branch prediction, e.g. using branch history tables
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3842—Speculative instruction execution
- G06F9/3846—Speculative instruction execution using static prediction, e.g. branch taken strategy
Abstract
Description
(発明の分野)
本発明は概略的にはデータ処理システムに関し、より詳細には選択的分岐予測を使用するデータプロセッサに関する。
【0002】
(関連技術)
分岐予測は、データプロセッサの性能を向上するために使用される1つの技術である。分岐予測技術を使用するデータプロセッサは、その結果がまだ決定されていない分岐命令を受信するたびに「推測」を行い、該推測(または「未決定分岐命令」の予測される結果)に基づいて機能し、次に、「未決定分岐命令」にしたがい、該推測が正しかったかどうかを判断する。かかるデータプロセッサは、分岐が最終的に採用され、非順次目標命令アドレスにジャンプするかどうか、あるいは、分岐が「不成立に終わり」次の順次命令に至るかどうかを予測する。ほとんどの場合、条件付き分岐命令を予測するデータプロセッサは、正確な推測を行い、条件付き分岐命令の結果を決定する前に分岐から目標命令アドレスをフェッチできるため、性能が高まる。しかし、通常、誤った推測に伴う性能上のペナルティがある。分岐命令は、順次命令ストリームフェッチパターンに変化を生じるため、誤ったアドレス推測によって、プロセッササイクルが失われることがある。誤った推測の場合、誤ってフェッチされた命令ストリームが廃棄され、正しい命令ストリームがプロセッサパイプラインに再読み込みされなければならないため、かかるプロセッササイクルが失われる。この形態の分岐予測性能促進(条件付き分岐命令の結果の予測能力と、その結果予測された命令ストリームからあらかじめフェッチする命令の実行の能力)は「分岐アドレス予測」として知られる。
【0003】
他のプロセッサは、分岐予測技術を採用していない。このようなプロセッサでは、分岐命令は、分岐目標命令がフェッチされる前に決定される。分岐予測を使用するプロセッサと、分岐予測を使用しないプロセッサのいずれを設計するかという決定は、多くの設計上の要因に基いてなされ得るが、通常は、クロックサイクルを節約したいという願望に基いて決定される。場合によっては、推測命令フェッチを使用するプロセッサによって被る分岐予測ペナルティを排除するために、分岐予測を使用しないプロセッサを使用することがより望ましい。
【0004】
したがって、より広範囲な用途へのプロセッサのスケーラビリティの向上を助け、設計と生産コストを下げることができる、分岐予測システムと非分岐予測システムの両方で使用するための単一のプロセッサに対する需要が存在する。
【0005】
本発明の目的と、効果と、特長と、特徴、ならびに構造の関連要素の方法、操作、機能と、部品の組み合わせと、製造の経済性は、それらはすべて本明細書の一部をなす添付図面を参照しながら以下の説明と特許請求の範囲を考慮することで明らかとなる。図面において、同様の参照番号は、様々な図を通して対応部品を示す。
【0006】
当業者であれば、図面中の要素は平易と明瞭さのために描かれており、必ずしも正しい縮尺ではないことを理解する。たとえば、図面中の要素のいくつかの寸法は、本発明の実施例の理解を高めるために、他の要素に対して誇張されている場合がある。
【0007】
本願にて使用される場合、「分岐アドレス予測」「分岐予測」および「アドレス予測」という用語は一般的にたがいに互換的に使用される。「肯定する」と「否定する」という語は、信号、ステータスビット、または同様の装置を、それぞれ論理的に真かまたは論理的に偽の状態にすることを指す場合に使用される。論理的に真の状態が論理レベル1であるとすると、論理的に偽の状態は論理レベル0となる。また、論理的に真の状態が論理レベル0であるとすると、論理的に偽の状態は論理レベル1となる。
【0008】
本発明の少なくとも1実施例は、第1動作モードと第2動作モードを有するデータ処理システムを提供する。データ処理システムは、第1信号を受信するための第1入力を有する中央処理装置を備える。第1信号の第1状態は、分岐予測を利用する第1動作モードを可能にし、第1信号の第2状態は、分岐予測を実質的に利用しない第2動作モードを可能にする。別の実施例において、第1動作モードは第1アドレス設定タイミングを結果的に生じ、第2動作モードは第2アドレス設定タイミングを結果的に生じる。第2アドレス設定タイミングは、第1アドレス設定タイミングより早いアドレス有効時間を可能にする。本発明の少なくとも1実施例において、データ処理システムは、順次アドレスと目標アドレスのいずれかを選択する選択回路と、命令フェッチ装置と、付属制御回路とから成る。
【0009】
本発明の少なくとも1実施例は、アドレス設定時間を変更する方法も提供する。該方法は、第1動作モードと第2動作モードを有するデータ処理システムで使用できる。該方法は第1入力信号を受信することから成る。第1入力信号が第1状態を有していると、システムは第1動作モードで動作し、第1アドレス設定タイミングを結果的に生じる。第1入力信号が第2状態を有していると、システムは第2動作モードで動作し、第1設定タイミングより早いアドレス有効時間を有する第2アドレス設定タイミングを結果的に生じる。
【0010】
まず図1を参照すると、データ処理システムが図示され、参照番号100によって包括的に示される。データ処理システム100は、中央処理装置CPU102と、バスインターフェース装置BIU104と、メモリ106とから成る。CPU102は、メモリ106とBIU104にアドレス要求を供給し、メモリ106とBIU104からデータを受信するよう接続されている。CPU102は、フェッチ要求などのトランザクション要求(TREQ)信号をメモリ106とBIU104に供給するようにも接続されている。さらに、CPU102は、アドレス予測信号APRED*130を受信するために接続されている。CPU102は、分岐アドレス予測可能モードまたは分岐アドレス予測無効モードのいずれかで動作できるように構成される。
【0011】
本発明の1実施例において、データ処理システム100は、分岐目標アドレスからフェッチするために使用されるクロックサイクル数を減少させるため、分岐アドレス予測を使用することが望ましいシステムの一部として実行される。かかるシステムでは、CPU102は、分岐条件文の結果を予測することが望ましい。CPU102が分岐条件文の結果を正しく予測すると、次の所望命令がすでにCPU102に読み込まれ、処理が開始できる。しかし、CPU102が分岐条件文の結果を誤って予測すると、予測されたデータは破棄され、正しい情報がCPU102に読み込まれなければならず、その結果、誤った分岐予測への処理ペナルティが事実上適用される。別の例において、データ処理システム100は、分岐予測を使用することが望ましくないシステムで実行されてもよい。かかるシステムは、たとえば、最低アドレス設定時間条件を備えたメモリを含むことがある。かかるメモリは、より低速のメモリほど、情報へアクセスするクロックサイクルを多く必要としないため、かかるシステムで分岐予測技術を使用することで実現される時間の節約は、誤った分岐予測によって被るペナルティを相殺しない。実際、かかるシステムで実行されるデータ処理システム100は分岐予測を採用しないで、より高速で動作できる。
【0012】
本発明の少なくとも1実施例において、アドレス予測信号APRED*130は、2つの異なる動作のモード間でCPU102を効果的に切り換える。第1動作モードでは、分岐アドレス予測が使用され、第2動作モードでは、分岐アドレス予測が禁止される。本発明のこの説明において、信号名APRED*の「*」は、信号の肯定されるレベルが低いことを示す。すなわち、アクティブ・ローは、分岐アドレス予測が使用可能状態であることを示す。しかし、別の実施例は、本発明の種々の側面を実施するため、いかなるアクティブレベルの信号も利用できる。本発明の1実施例において、アドレス予測制御信号APRED*130は、データ処理システム100がより大きいシステムに組み込まれたときに、高または低電圧のいずれかに結合される。ただし、1実施例においては、CPU102の動作モードが、分岐予測を利用するか分岐予測を利用しないかのいずれかに固定され、別の実施例においては、CPU102のモードが必要に応じて変更できるよう、制御レジスタか他の制御回路によってアドレス予測制御信号APRED*130が供給できることは理解される。
【0013】
次に図2で、CPU102の動作をより詳細に説明する。図1の参照番号と同様、類似あるいは同一の図2の参照番号は、同様、類似あるいは同一の特徴または要素を示す。1実施例において、CPU102は、実行装置204と、復号化制御206と、命令フェッチ装置220と、アドレスマルチプレクサ226とを含む。実行装置204は、プログラム命令が実行され、条件付き分岐命令条件が評価される、CPU102の部分である。実行装置204は、条件評価命令の結果に基づいて真または偽信号を発するために使用される条件発生器202を含む。たとえば、本発明の少なくとも1実施例において、条件評価命令の結果が、特定の条件を満たしていることを示していると、条件発生器202が真信号を発する。別の実施例は異なる論理を採用でき、使用される論理スキームに応じて、特定の条件が満たされないことを示す偽信号を発してもよい。条件評価命令の1例は、2個のデータ項目の値が等しいかどうかを決定するため2個のデータ項目の値を比較し、次に、その結果生じる条件(または条件コード)を発する命令である。多数の他の比較タイプと他の条件発生命令が当該技術分野で既知である。条件付き分岐命令は、条件評価命令の特定の値や結果をテストしたり、場合によっては、条件付き分岐命令自体の一部として、テストされる条件を含んだりしてもよい。該テストの結果に基づき、分岐の条件が満たされた場合に、通常の順次命令実行シーケンスが、分岐命令の目標位置に向け直される。
【0014】
復号化制御206は、実行装置204による実行の準備のために命令212を復号化し、BRANCH DECODE210とCONTROL208を命令フェッチ装置220に送る。命令フェッチ装置220は、アドレス制御216と、保持レジスタ242と、プログラムカウンタ244と、命令レジスタ(IR)214と、加算器246とを含む。
【0015】
アドレス制御216は、入力として、CONDITION218と、CONTROL208と、BRANCH DECODE210とAPRED*130を受信する。これらの入力のそれぞれの状態に基づき、ADDRESS SELECT225が真または偽状態に設定される。1実施例において、真状態は、マルチプレクサ226がSEQUENTIAL ADDR222をADDR232として出力することを表し、一方、偽状態は、TARGET ADDR224がADDR232として出力されることを示す。アドレスマルチプレクサ226の出力は保持レジスタ242に戻される。1実施例において、保持レジスタ242に格納された値は、次に、SEQUENTIAL ADDR222を生成するため、4だけ増分される。加算器246は、分岐命令オペコードの一部から得た、命令レジスタ214によって供給されるアドレスオフセットに、プログラムカウンタ244に格納された値を加算することで、TARGET ADDR224を決定する。次に、マルチプレクサ226は、ADDR SELECT225に基づいて、SEQUENTIAL ADDR222かTARGET ADDR224を選択する。次に、選択されたアドレスがADDR232として出力される。
【0016】
DATA234は、CPU102によって発せられるトランザクション要求(TREQ)228とADDR232に対応して、CPU102によって受信される。TREQ228とADDR232はBIU104とメモリ106に供給される(図1参照)。BIU104またはメモリ106は、ADDR232によって示される要求されたメモリアドレスから情報を検索し、次に、その情報をDATA234としてCPU102に送る。DATA234は、CPU102によって実行される命令と、命令によって支配されるいずれかの所要動作を実行する際に使用されるデータとの両方を含むことができる。
【0017】
DATA234に含まれるINSTRUCTION212などのいずれかの命令が命令レジスタ214に送られ、命令レジスタ214は次に、INSTRUCTION212を復号化制御206に送り、そこでINSTRUCTION212は実行装置204で使用される準備がされる。次に復号化制御206は、INSTRUCTION212を実行装置204に送り、そこで、INSTRUCTION212によって指定される動作が実行される。INSTRUCTION212が分岐命令を含む場合、復号化制御206は分岐命令の復号化を開始し、好ましくはBRANCH DECODE210を真に設定する。分岐復号化210は、アドレスマルチプレクサ226が、順次アドレス222か目標アドレス224を選択できるようにするために用いられる入力の1つである。DECODE CONTROL206は、また、CONTROL208などの他の制御信号をアドレス制御216に供給する。
【0018】
前述したように、条件発生器202は、アドレスマルチプレクサ226によるSEQUENTIAL ADDR222またはTARGET ADDR224の選択を制御するために使用されるアドレス制御216への入力の1つである信号CONDITION218を発する。CONDITION218は、実行装置204によって実行される条件発生命令の結果に対応して発せられる。分岐命令が実行中、CONDITION218は、分岐条件評価の結果と、したがって、分岐が採用されたか、不成立に終わり次の順次命令に至ったかどうかを決定する際に使用される。アドレス制御216は、分岐命令の結果(条件)の予測に基づいて、ADDR232としてTARGET ADDR224を出力するよう、アドレスマルチプレクサ226を制御できる。しかし、アドレス予測制御信号APRED*130が、CPU102に分岐予測動作モードでの動作を禁じるよう構成される場合、アドレス制御216は、ADDR232として目標アドレスTARGET ADDR224を出力することをアドレスマルチプレクサ226に禁じる。かかる場合、アドレス制御216の出力は、分岐命令の条件が評価され、フェッチする正しい次の命令の決定が行われるまで保持される。正しい命令は、分岐条件が満たされる場合は分岐宛先での目標命令か、分岐条件が満たされない場合は、分岐命令(からの順番で)の次の命令である。
【0019】
分岐アドレス予測モードが使用可能(イネーブル)である場合で、予測が誤っていると判断されると、保持レジスタ242が予測アドレスを捕捉するのを防止するよう、MISPREDICT229が保持レジスタ242にアサートされる。これにより、最後の順次アドレスが保持レジスタ242に保存され、予測アドレスによって上書きされないため、プロセッサが、誤った予測から復帰できる。誤った予測が生じたと判断されると、プロセッサは、ADDR232として駆動されるSEQUENTIAL ADDR222を選択するようADDR SELECT225にアサートすることで、命令パイプラインを順次命令ストリームで再補充し始めなければならない。
【0020】
次に図3を参照すると、アドレス制御216の真理値表が図示され、参照番号300で包括的に示される。アドレス制御216はアドレス予測可能(イネーブル)モードでもアドレス予測無効(ディセイブル)モードでも動作できることに留意する。列310〜340は、アドレス予測が可能である場合のアドレス制御216の機能を図示し、列350〜380は、アドレス予測が無効である場合のアドレス制御216の機能を図示する。列350と360は、APRED*130が否定され(アドレス予測無効モードを示す)、BRANCH DECODEが偽である(分岐命令が受信されなかったことを示す)場合のアドレス制御216を示す。これらの両方の場合、ADDR SELECT225は真で、CONDITION218の状態に関わらず、次の順次アドレスが選択されることを示す。列370と380は、APRED*130が否定され、BRANCH DECODEが真である(分岐命令が受信されたことを示す)場合のアドレス制御216を示す。これらの両方の場合、ADDR SELECT225の状態はCONDITION218に依存し、列380に図示されるように分岐が採用される場合は偽となり、列370に図示されるように分岐が採用されない場合は真となる。MISPREDICT229は、アドレス予測が使用されていないため、APRED*130が否定されると、偽のままとなる。しかしながら、APRED*130が否定されたときに、MISPREDICT229は、単に無視されるか、無関係のものとして処理されてもよい。
【0021】
列310と320は、APRED*130が肯定され(アドレス予測可能モードを示す)、BRANCH DECODEが偽(分岐命令が受信されなかったことを示す)の場合のアドレス制御216を示す。これらの両方の場合、ADDR SELECT225は、CONDITION218の状態に関わらず真(次の順次アドレスが選択されることを示す)となる。さらに、MISPREDICT229は、分岐命令が受信されなかったため、列310と320の両方で偽となる。列330と340は、APRED*130が肯定され、BRANCH DECODEが真(分岐命令が受信されたことを示す)の場合のアドレス制御216を示す。これらのいずれの場合も、ADDR SELECT225の状態は、CONDITION218の状態がまだ分かっていないため偽となり、予測が行われなければならない。列330は、誤った予測が行われた場合にMISPREDICT229が真となることを示している。
【0022】
次に図4を参照すると、本発明の1実施例によるタイミング図が図示される。図4は、条件設定命令と条件付き分岐命令を含む命令のシーケンスを実行する間の、プロセッサパイプライン(FETCH、DECODEおよびEXECUTE段階)の3つの段階での活動を図示する。プロセッサパイプラインは、それぞれの命令がこれらの3つの段階を順番に通るよう動作する。図4は、条件設定命令がパイプラインの実行段階(BRANCH−1)にある間に、次の順次命令である条件付き分岐命令(BRANCH)がパイプラインの復号化段階にあり、分岐命令の後の命令のために順番にフェッチが生じる(BRANCH+1)ことを示している。図4とその後の図面において、現在有効ではない(または完了していない)ことを表わすたにめ、信号と活動に格子状のマークを使用する。
【0023】
図4のタイミング図は、アドレス予測が可能となり、正しい予測が行われ、単一分岐採用バブルがパイプラインに導入される場合のプロセッサタイミングを図示する。プロセッサパイプラインのフェッチ段階中、命令アドレス(ADDRとして図示される)が次のアクセスのために駆出され、現在のアクセスのための命令データ(DATAとして図示される)がCPUに読み込まれる。本例と後続例において、「BRANCH(分岐)命令」で示される命令データは、条件付き分岐命令を含むと想定される。分岐命令は、一旦読み込まれると、復号化され、その後に使用される分岐目標アドレスを得るために計算が実行される。
【0024】
分岐目標アドレス計算が完了すると、プロセッサは、分岐目標アドレス計算(これは予測されるアドレス)によって示されるメモリ位置からの情報のフェッチ要求を送る。該フェッチ要求は、分岐命令復号化が完了しつつあり、分岐条件コードが決定されつつあると同時に生じる。したがって、分岐目標アドレス計算が完了し、分岐目標アドレスがフェッチされている後しばらくたつと、条件コードは、分岐目標アドレスからフェッチするために行われた予測が正しいことを示す。アドレスが有効になった時点で、クロックKの立下り後すぐ、(Tav,pred )が生じることに留意する。図4に図示される場合において、条件コードが決定され、正しい予測が実行された(すなわち分岐目標アドレスフェッチが正しい行動であった)ことを示す。本例で導入された処理の唯一の遅延は、単一分岐採用バブルであり、これは命令実行ストリームの方向を向け直すために、分岐命令から計算された目標アドレスが使用される場合にはいつでも結果的に生じる。本発明の1実施例においては、予測された目標アドレスが条件評価に依存しないが、(加算器246による)目標アドレス計算が完了し、アドレスマルチプレクサ226によって駆動されると直ちに有効となるため、クロックKの立下りエッジから有効アドレス出力ADDRへの遅延、Tav,pred が、目標アドレス計算の結果よりも典型的に遅く生じる条件評価の完了時の待機に対して最小限に抑えられる。
【0025】
次に図5を参照すると、本発明の1実施例による別のタイミング図が図示される。図4の参照番号と同様、類似または同一の図5での参照番号は、同様、類似または同一の特徴または要素を示す。図5に示されるタイミング図は、アドレス予測が可能になり、誤った予測が行われ、その結果サイクル停止になった場合に関する。図5においてアドレス有効タイミングが図4と同じである点に留意する。すなわち、これは条件評価に依存しないが、(加算器246による)目標アドレス計算が完了し、アドレスマルチプレクサ226によって駆動されると直ちに有効となる。プロセッサパイプラインのフェッチ段階中、命令アドレスと命令データが読み込まれる。復号化段階中、分岐命令が復号化され、分岐目標アドレス計算の結果を使用するために予測が行われる。分岐目標アドレス計算から返送されたアドレスは、次のクロックサイクル(条件設定命令が実行されるのとほぼ同時に)中にフェッチのため利用される。条件コード計算の完了時、分岐が依存する条件コードが決定され、かくして、分岐予測が正しいかどうかが分かる。図5は、分岐目標アドレスからの命令のフェッチにおいて、誤った予測が行われた場合のタイミングを図示する。条件コード評価の完了時、分岐が誤って予測されたと判断され、したがって、次の(正しい)順次命令のアドレスがフェッチされなければならない。該命令は図5において「BRANCH+2」として示される。プロセッサパイプラインにより、分岐命令から順番ですぐの命令(「BRANCH+1」)が以前にフェッチされ、同時に、分岐命令自体がパイプラインの復号化段階に入る。分岐目標アドレスからのフェッチにおける誤った予測は、予測された(誤った)アドレスのフェッチにおいて使用されたいかなるクロックサイクルも事実上無駄にする。
【0026】
分岐目標アドレス計算の結果は、条件生成と、したがって分岐命令の決定前に一般的に利用できるため、分岐アドレス予測モードで動作する場合には、早期アドレス有効タイミングが得られることが、図4と5から分かる。さらに、分岐予測が誤っていると、早期アドレス有効タイミングのペナルティが、後で廃棄される分岐目標アドレスからの無駄なフェッチとなる。
【0027】
次に図6を参照すると、本発明の1実施例によるタイミング図が説明される。図4と5の参照番号と同様、類似または同一の図6の参照番号は、同様、類似または同一の要素を表す。図6に図示されるタイミング図は、アドレス予測が無効となり(APRED*130が否定される)、分岐命令が受信された場合について扱う。図4と5と同様、フェッチ段階中、命令アドレスと命令データがフェッチされる。次に、分岐命令が復号化され、分岐目標アドレスが計算される。ただし、図4と5に図示されるタイミングとは異なり、分岐目標アドレスは直ちにはフェッチされない。その代わり、条件コード計算が完了し、分岐命令が利用されるかされないかのいずれかに決定され、正しい次のフェッチアドレスが分かった後まで、フェッチされる次のアドレスを選択するためプロセッサが待機する。また、アドレス予測が使用可能である図4と5とは異なり、有効アドレスが利用可能になった後の時間(Tav,nopred )が、(Tav,pred と比較して)クロック立ち下がり時間から、より離れている点にも留意する。正しい次のアドレスの選択は、分岐目標アドレス計算よりも通常遅い条件コード計算の完了の後までは生じない。条件コード計算が完了するまで待機することで、誤ったアドレス予測による誤ったアドレスのフェッチの可能性がなくなる。
【0028】
次に図7を参照すると、本発明の少なくとも1実施例によるタイミング図が図示される。図4〜6の参照番号と同様、類似または同一の図7の参照番号は、同様、類似または同一の要素または特徴を表す。ここでも、命令データと命令アドレスはフェッチサイクル中に受信され、分岐命令が復号化され、分岐目標計算が実行される。ここでも、分岐目標アドレス計算は、次のメモリアドレスを直ちにフェッチするためには使用されない。その代わり、条件コード計算が完了した後に、フェッチされる正しいメモリアドレス(次の順次メモリ位置か、計算された目標アドレス)が選択される。このようにして、いかなる誤った予測も行われない。図7において、分岐条件が満たされないと、分岐が利用されないと決定し、正しい次のフェッチアドレスが命令「BRANCH+2」になる。該順次アドレスは、条件コード計算の完了後に駆出される。
【0029】
したがって、アドレス予測が可能な動作モードと、アドレス予測が無効な動作モードのアドレス設定タイミングの違いは明白である。アドレス予測か可能な状態では、アドレス予測が無効になった場合より早いアドレス有効時間が提供される。すなわちTav,pred は一般的にTav,nopred よりも少ない。メモリアクセスタイミング(有効なデータを返すためにメモリアドレスに必要な時間量)条件は、アドレス予測可能モードでの場合よりも、非アドレス予測モードにおいて、より厳しい。すなわち、アドレス予測禁止モードと組み合わせて使用されるメモリは、メモリ装置へのアドレス入力がクロックサイクルで後で有効になるため、分岐アドレス予測モードで使用されるメモリよりも有効データを速く返送できなければならない。別の実施例は、アドレス予測可能モードでより積極的なアドレス予測形態を実施でき、アドレス予測無効となるモードでより消極的なアドレス予測形態を実施できる。本実施例において、より積極的なアドレス予測形態は、より消極的な形態と比較して、一般的にアドレス有効時間が早くなる。より消極的な形態は、少ない分岐予測を行うか、あるいは実質的にまったく分岐予測を行わず、その結果、アドレス有効時間が遅くなる。したがって、図4〜7を参照して説明した効果は、分岐予測をまとめて単に可能または無効にすることによるのではなく、様々なレベルの分岐予測を可能にすることで得られる。
【0030】
アドレス予測が使用されない場合、条件付き分岐命令が実行される間に正しい次のアドレスをフェッチするために使用されるクロックサイクル数は、分岐が採用されるかされないかにかかわらず同じであり、アドレス予測可能モードの場合、使用されるクロックサイクル数は、正しい予測が行われたかどうかに基づいて変動することに留意する。
【0031】
誤った予測に対応するペナルティでメモリアドレスが早めに生成される分岐アドレス予測モードと、アドレス生成が遅延されるが追加命令フェッチは実行されない非予測モードとのいずれでも動作する柔軟性を提供することで、本発明の実施例は、先行技術のデータ処理システムよりも広い適用範囲に適するという効果が許容される。予測精度とメモリアクセス時間との間の折り合いが可能となり、説明したデータ処理システムの動作の最適化が可能となる。
【0032】
以上の明細書において、本発明を特定の実施例を参照して説明してきた。しかし、当業者であれば、特許請求の範囲に記載される本発明の範囲から逸脱することなく、種々の改変と変更が行えることが理解される。したがって、明細書と図面は、制限的な意味ではなく例証的な意味で解釈され、そのような改変はすべて、本発明の範囲内に含まれるものとする。
【0033】
利点、その他の効果、問題の解決法を特定の実施例を参照して説明してきた。しかし、利点、効果、問題の解決法、および任意の利点、効果または解決法を生じさせるかまたはより顕著にする要素は、任意のあるいはすべての請求項の重要、必要あるいは不可欠な特徴または要素として解釈されるべきではない。本願で使用される場合、「成る、含む、有する、備える(comprises, comprising )」という用語あるいはその変形は、一連の要素から成る工程、方法、物品または装置がそのような要素のみを含むのではなく、そのような工程、方法、物品または装置に明白に列挙されないかまたは固有でない他の要素を含むことができるよう、非排他的包含を網羅するものとする。
【図面の簡単な説明】
【図1】本発明の1実施例によるデータ処理システムのブロック図。
【図2】本発明の少なくとも1実施例による、図1に図示される中央処理装置のブロック図。
【図3】本発明の1実施例による、図2のアドレス選択制御のための真理値表。
【図4】本発明の少なくとも1実施例による、アドレス予測が可能とされ、正しい予測が行われた場合のプロセッサタイミングを示すタイミング図。
【図5】本発明の少なくとも1実施例による、アドレス予測が可能とされ、誤った予測が行われた場合のプロセッサタイミングを示すタイミング図。
【図6】本発明の1実施例によるタイミング図で、アドレス予測が無効となり、分岐命令によって示される目標アドレスがフェッチされる場合のプロセッサタイミングを示す。
【図7】本発明の1実施例によるタイミング図で、アドレス予測が無効となり、分岐命令が「不成立に終わり」、次の順次命令がフェッチされる場合を示す。
Claims (5)
- 第1動作モードと第2動作モードを有するデータ処理システム(100)であって、
第1信号(130)を受信する第1入力を有する中央処理装置(102)を備え、第1信号の第1状態が第1動作モードを可能にし、第1信号の第2状態が第2動作モードを可能にし、
第1動作モードが分岐予測を利用し、
第2動作モードが分岐予測を実質的に利用しない、データ処理システム(100)。 - 第1動作モードが第1アドレス設定タイミングを結果的に生じ、
第2動作モードが第2アドレス設定タイミングを結果的に生じ、第1アドレス設定タイミングが、第2アドレス設定タイミングより早いアドレス有効時間を可能にする、請求項1に記載のデータ処理システム。 - 第1動作モードと第2動作モードを有するデータ処理システムであって、
第1信号(130)を受信する第1入力を備え、第1信号の第1状態が第1動作モードを可能にし、第1信号の第2状態が第2動作モードを可能にし、
第1動作モードが第1アドレス設定タイミングを結果的に生じ、
第2動作モードが、第1アドレス設定タイミングより早いアドレス有効時間を可能にする第2アドレス設定タイミングを結果的に生じる、データ処理システム。 - 第1アドレス設定タイミングが、分岐予測の第1レベルを利用して実現され、第2アドレス設定タイミングが、分岐予測の第1レベルよりも積極的な分岐予測の第2レベルを利用して実現される、請求項3に記載のデータ処理システム。
- 第1動作モードと第2動作モードを有するデータ処理システムにおいて、アドレス設定時間を変更する方法であって、
第1入力信号(130)を受信する工程と、
第1入力信号が第1状態を有する場合に、第1動作モードで動作する工程と、第1動作モードが第1アドレス設定タイミングを結果的に生じることと、
第1入力信号が第2状態を有する場合に、第2動作モードで動作する工程と、第2動作モードが、第1アドレス設定タイミングより早いアドレス有効時間を有する第2アドレス設定タイミングを結果的に生じることと
から成る方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/592,449 US6859875B1 (en) | 2000-06-12 | 2000-06-12 | Processor having selective branch prediction |
PCT/US2001/015042 WO2001097021A1 (en) | 2000-06-12 | 2001-05-10 | Processor having selective branch prediction |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2004503865A true JP2004503865A (ja) | 2004-02-05 |
JP2004503865A5 JP2004503865A5 (ja) | 2008-06-05 |
Family
ID=24370679
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002511081A Pending JP2004503865A (ja) | 2000-06-12 | 2001-05-10 | 選択的分岐予測を有するプロセッサ |
Country Status (7)
Country | Link |
---|---|
US (1) | US6859875B1 (ja) |
EP (1) | EP1295202A1 (ja) |
JP (1) | JP2004503865A (ja) |
KR (1) | KR100888356B1 (ja) |
AU (1) | AU2001263026A1 (ja) |
TW (1) | TW569139B (ja) |
WO (1) | WO2001097021A1 (ja) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100980076B1 (ko) | 2003-10-24 | 2010-09-06 | 삼성전자주식회사 | 저전력 분기 예측 시스템 및 분기 예측 방법 |
KR100591769B1 (ko) | 2004-07-16 | 2006-06-26 | 삼성전자주식회사 | 분기 예측 정보를 가지는 분기 타겟 버퍼 |
US7725695B2 (en) * | 2005-05-31 | 2010-05-25 | Arm Limited | Branch prediction apparatus for repurposing a branch to instruction set as a non-predicted branch |
US7376807B2 (en) * | 2006-02-23 | 2008-05-20 | Freescale Semiconductor, Inc. | Data processing system having address translation bypass and method therefor |
US7401201B2 (en) * | 2006-04-28 | 2008-07-15 | Freescale Semiconductor, Inc. | Processor and method for altering address translation |
US20080040591A1 (en) * | 2006-08-11 | 2008-02-14 | Moyer William C | Method for determining branch target buffer (btb) allocation for branch instructions |
US20080040590A1 (en) * | 2006-08-11 | 2008-02-14 | Lea Hwang Lee | Selective branch target buffer (btb) allocaiton |
US7979675B2 (en) * | 2009-02-12 | 2011-07-12 | Via Technologies, Inc. | Pipelined microprocessor with fast non-selective correct conditional branch instruction resolution |
US8131984B2 (en) * | 2009-02-12 | 2012-03-06 | Via Technologies, Inc. | Pipelined microprocessor with fast conditional branch instructions based on static serializing instruction state |
KR102526610B1 (ko) * | 2015-09-16 | 2023-04-28 | 엘지디스플레이 주식회사 | 메모리 제어장치 및 그 제어방법과 이를 포함한 유기발광 표시장치 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH01216427A (ja) * | 1988-02-24 | 1989-08-30 | Mitsubishi Electric Corp | データ処理装置 |
JPH10133873A (ja) * | 1996-04-29 | 1998-05-22 | Internatl Business Mach Corp <Ibm> | 複数の分岐予測方式のうちの選択された1つを使用して条件分岐命令を投機的に実行するためのプロセッサおよび方法 |
GB2283595B (en) * | 1993-11-02 | 1998-06-03 | Motorola Inc | Data processor with branch prediction and method of operation |
JPH1185515A (ja) * | 1997-09-10 | 1999-03-30 | Ricoh Co Ltd | マイクロプロセッサ |
JPH1196004A (ja) * | 1997-07-25 | 1999-04-09 | Motorola Inc | データプロセッサにおける条件分岐実行を制御するための方法および装置 |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2794768B2 (ja) * | 1989-04-25 | 1998-09-10 | スズキ株式会社 | 小型艇の操舵装置 |
JP2875909B2 (ja) * | 1991-07-12 | 1999-03-31 | 三菱電機株式会社 | 並列演算処理装置 |
US5835967A (en) * | 1993-10-18 | 1998-11-10 | Cyrix Corporation | Adjusting prefetch size based on source of prefetch address |
IE940855A1 (en) | 1993-12-20 | 1995-06-28 | Motorola Inc | Data processor with speculative instruction fetching and¹method of operation |
JPH0893756A (ja) * | 1994-09-20 | 1996-04-09 | Ntn Corp | 円筒ころ軸受 |
US5732253A (en) * | 1994-10-18 | 1998-03-24 | Cyrix Corporation | Branch processing unit with target cache storing history for predicted taken branches and history cache storing history for predicted not-taken branches |
US5701448A (en) * | 1995-12-15 | 1997-12-23 | Cyrix Corporation | Detecting segment limit violations for branch target when the branch unit does not supply the linear address |
US5996071A (en) * | 1995-12-15 | 1999-11-30 | Via-Cyrix, Inc. | Detecting self-modifying code in a pipelined processor with branch processing by comparing latched store address to subsequent target address |
US5901307A (en) * | 1996-07-22 | 1999-05-04 | International Business Machines Corporation | Processor having a selectively configurable branch prediction unit that can access a branch prediction utilizing bits derived from a plurality of sources |
US5949995A (en) * | 1996-08-02 | 1999-09-07 | Freeman; Jackie Andrew | Programmable branch prediction system and method for inserting prediction operation which is independent of execution of program code |
US6088793A (en) * | 1996-12-30 | 2000-07-11 | Intel Corporation | Method and apparatus for branch execution on a multiple-instruction-set-architecture microprocessor |
US6151672A (en) | 1998-02-23 | 2000-11-21 | Hewlett-Packard Company | Methods and apparatus for reducing interference in a branch history table of a microprocessor |
US6446197B1 (en) * | 1999-10-01 | 2002-09-03 | Hitachi, Ltd. | Two modes for executing branch instructions of different lengths and use of branch control instruction and register set loaded with target instructions |
-
2000
- 2000-06-12 US US09/592,449 patent/US6859875B1/en not_active Expired - Lifetime
-
2001
- 2001-05-10 KR KR1020027016869A patent/KR100888356B1/ko active IP Right Grant
- 2001-05-10 EP EP01937274A patent/EP1295202A1/en not_active Withdrawn
- 2001-05-10 AU AU2001263026A patent/AU2001263026A1/en not_active Abandoned
- 2001-05-10 WO PCT/US2001/015042 patent/WO2001097021A1/en active Application Filing
- 2001-05-10 JP JP2002511081A patent/JP2004503865A/ja active Pending
- 2001-05-23 TW TW090112324A patent/TW569139B/zh not_active IP Right Cessation
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH01216427A (ja) * | 1988-02-24 | 1989-08-30 | Mitsubishi Electric Corp | データ処理装置 |
GB2283595B (en) * | 1993-11-02 | 1998-06-03 | Motorola Inc | Data processor with branch prediction and method of operation |
JPH10133873A (ja) * | 1996-04-29 | 1998-05-22 | Internatl Business Mach Corp <Ibm> | 複数の分岐予測方式のうちの選択された1つを使用して条件分岐命令を投機的に実行するためのプロセッサおよび方法 |
JPH1196004A (ja) * | 1997-07-25 | 1999-04-09 | Motorola Inc | データプロセッサにおける条件分岐実行を制御するための方法および装置 |
JPH1185515A (ja) * | 1997-09-10 | 1999-03-30 | Ricoh Co Ltd | マイクロプロセッサ |
Also Published As
Publication number | Publication date |
---|---|
EP1295202A1 (en) | 2003-03-26 |
KR100888356B1 (ko) | 2009-03-11 |
TW569139B (en) | 2004-01-01 |
US6859875B1 (en) | 2005-02-22 |
KR20030007952A (ko) | 2003-01-23 |
AU2001263026A1 (en) | 2001-12-24 |
WO2001097021A1 (en) | 2001-12-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8060730B2 (en) | Selective MISR data accumulation during exception processing | |
US7159103B2 (en) | Zero-overhead loop operation in microprocessor having instruction buffer | |
JP4511461B2 (ja) | データ処理システムでの処理動作マスキング | |
US6108775A (en) | Dynamically loadable pattern history tables in a multi-task microprocessor | |
US6272623B1 (en) | Methods and apparatus for branch prediction using hybrid history with index sharing | |
US6009516A (en) | Pipelined microprocessor with efficient self-modifying code detection and handling | |
US6550004B1 (en) | Hybrid branch predictor with improved selector table update mechanism | |
JPH1124929A (ja) | 演算処理装置およびその方法 | |
US11429392B2 (en) | Secure predictors for speculative execution | |
JP3242508B2 (ja) | マイクロコンピュータ | |
US8028180B2 (en) | Method and system for power conservation in a hierarchical branch predictor | |
CN115993992A (zh) | 提前取出分支目标缓冲器 | |
JP2004503865A (ja) | 選択的分岐予測を有するプロセッサ | |
US20040225866A1 (en) | Branch prediction in a data processing system | |
JP2020119504A (ja) | 分岐予測器 | |
EP2816466B1 (en) | Data processing device | |
US6839833B1 (en) | Pipeline depth controller for an instruction processor | |
US7389405B2 (en) | Digital signal processor architecture with optimized memory access for code discontinuity | |
US10318303B2 (en) | Method and apparatus for augmentation and disambiguation of branch history in pipelined branch predictors | |
US10990403B1 (en) | Predicting an outcome of an instruction following a flush | |
US11157284B1 (en) | Predicting an outcome of an instruction following a flush | |
US7343481B2 (en) | Branch prediction in a data processing system utilizing a cache of previous static predictions | |
US7124281B1 (en) | Processing system having sequential address indicator signals | |
US20060112262A1 (en) | Branch prediction of unconditionally executed branch instructions | |
JP2006048258A (ja) | データプロセッサ |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A711 | Notification of change in applicant |
Free format text: JAPANESE INTERMEDIATE CODE: A711 Effective date: 20040927 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20080417 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20080417 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20110405 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20110419 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20110629 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20120313 |