JP2005078234A - 情報処理装置 - Google Patents
情報処理装置 Download PDFInfo
- Publication number
- JP2005078234A JP2005078234A JP2003305650A JP2003305650A JP2005078234A JP 2005078234 A JP2005078234 A JP 2005078234A JP 2003305650 A JP2003305650 A JP 2003305650A JP 2003305650 A JP2003305650 A JP 2003305650A JP 2005078234 A JP2005078234 A JP 2005078234A
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- queue
- branch
- stream
- 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
- 239000000872 buffer Substances 0.000 claims abstract description 80
- 230000004044 response Effects 0.000 claims abstract description 13
- 230000010365 information processing Effects 0.000 claims description 32
- 239000004065 semiconductor Substances 0.000 claims description 7
- 238000000034 method Methods 0.000 description 8
- 238000010586 diagram Methods 0.000 description 5
- 238000004364 calculation method Methods 0.000 description 4
- 230000000052 comparative effect Effects 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 239000000758 substrate Substances 0.000 description 3
- 230000006870 function Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 101100191136 Arabidopsis thaliana PCMP-A2 gene Proteins 0.000 description 1
- 101150102734 ISR1 gene Proteins 0.000 description 1
- 101100422768 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) SUL2 gene Proteins 0.000 description 1
- 101100048260 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) UBX2 gene Proteins 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 229910021421 monocrystalline silicon Inorganic materials 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/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3804—Instruction prefetching for branches, e.g. hedging, branch folding
-
- 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 or 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 or look ahead
- G06F9/3861—Recovery, e.g. branch miss-prediction, exception handling
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)
Abstract
【課題】 命令キューと復帰先命令キューを連携させるための制御を簡単にする。
【解決手段】 分岐予測を行なう情報処理装置は、命令キューと復帰先命令キューに割当てられ命令ストリーム毎にアドレスポインタが管理されるキューイングバッファ(23)とその制御部(21)を有し、制御部は、予測方向命令ストリームと非予測方向命令ストリームをキューイングバッファに格納し、分岐予測の失敗に応答して、実行対象とする命令ストリームをキューイングバッファ内の予測方向命令ストリームから非予測方向命令ストリームに切り換える。バッファ領域(Qa1、Qb)を命令キューとするときバッファ領域Qa2を復帰用命令キューとし、バッファ領域を命令キューとするときバッファ領域Qa1を復帰用命令キューとする。命令キューと復帰先命令キューを固定的に個別化することなくストリーム管理によって分岐予測失敗時の非予測方向命令列の復帰動作を実現する。
【選択図】 図1
Description
本発明は情報処理装置、特に分岐予測を行う情報処理装置における命令フェッチ及び予測方向の投機命令実行の制御に関し、例えば半導体集積回路化されたデータプロセッサ若しくはマイクロコンピュータに適用して有効な技術に関する。
分岐予測による命令プリフェッチ技術として、命令キューに予測側の命令列を格納する技術が有る。命令キューに対するリード/ライトポインタ管理は制御装置が行なう。分岐予測が失敗した時は、復帰先の命令をプログラムメモリ等からフェッチして命令デコーダに供給しなければならない。これにより、分岐予測が失敗した後の復帰先の命令フェッチ操作という点で、分岐予測失敗によるペナルティが大きくなり、効率が悪い。
この種の命令プリフェッチ技術について特許文献1に記載がある。ここでは、分岐予測バッファと呼ばれる小バッファが、分岐予測失敗の時に、命令キャッシュから要求される可能性のある命令のグループを記憶する。分岐予測失敗のとき、目標アドレスに対応する命令が使用可能かどうかを確認するために、分岐予測バッファがチェックされる。使用可能な場合、これらの命令が適切なバッファにコピーされる。目標アドレスに対応する命令が使用不能な場合、これらの命令が命令キャッシュからフェッチされ、バッファ及び選択的に分岐予測バッファに配置される。
更に命令キューと共に復帰先命令キューを採用する技術も有る。命令キューには予測側の命令列を格納し、復帰先命令キューには非予測側の命令列を格納する。復帰先命令キューのリード/ライトポインタと命令キューのリード/ライトポインタは別々に管理される。分岐予測が失敗の時は、復帰先命令キューから復帰先の命令列を命令デコーダに供給する。復帰先命令キューから命令デコーダへの命令の供給に並行して、続行すべき命令列をフェッチして命令キューに格納する。復帰先命令キューが保有する復帰先の命令が尽きたとき、命令デコーダへの命令供給元を命令キューに切換え制御する。
しかしながら、命令キューと共に復帰先命令キューを採用する上記技術においても、分岐予測失敗時に命令キューと復帰先命令キューを連携させるための夫々のリード/ライトポインタの操作が煩雑であり、そのための制御論理も複雑化し、ポインタ管理が効率的ではない。このことは、分岐予測が失敗したとき、復帰動作にかかるサイクル数が命令実行性能に影響を及ぼすことになる。
本発明の目的は、命令キューと復帰先命令キューを連携させるための制御が簡単になる情報処理装置を提供することにある。
本発明の別の目的は、分岐予測が失敗したとき、復帰動作にかかるサイクル数を少なくでき、命令実行性能を向上させることができる情報処理装置を提供することにある。
本発明の前記並びにその他の目的と新規な特徴は本明細書の記述及び添付図面から明らかになるであろう。
本願において開示される発明のうち代表的なものの概要を簡単に説明すれば下記の通りである。
〔1〕分岐予測を行なう情報処理装置は、命令キュー(IQUE)と復帰先命令キュー(RBUF)に割当てられ命令ストリーム毎にアドレスポインタ(rpi,wpi)が管理されるキューイングバッファ(23)とその制御部(21)を有し、前記制御部は、予測方向命令ストリームと非予測方向命令ストリームをキューイングバッファに格納し、分岐予測の失敗に応答して、実行対象とする命令ストリームをキューイングバッファ内の予測方向命令ストリームから非予測方向命令ストリームに切り換える。
前記命令ストリームの始点となる命令は例えばリセット後に実行開始する命令と分岐先命令であり、前記命令ストリームの終点となる命令は例えば無条件分岐命令と分岐する予測の条件分岐命令である。
前記キューイングバッファは、例えば同じ物理アドレスが割り付けられた第1の記憶領域(Qa1)と第2の記憶領域(Qa2)を有し、前記第1の記憶領域と第2の記憶領域は、相互に一方を命令キュー、他方を復帰先命令キューとする割当てが切換え可能にされる。更に、前記第1の記憶領域と第2の記憶領域の夫々に割り付けられる物理アドレスに連続する物理アドレスが割り付けられる第3の記憶領域(Qb)を有し、前記第3の記憶領域は命令キューに割当てられた前記第1の記憶領域又は第2の記憶領域に連続する命令キューの一部に割当てられるようにしてもよい。
前記キューイングバッファは命令ストリーム毎にアドレスポインタが管理されるから、実行対象とする命令ストリームをキューイングバッファ内の予測方向命令ストリームから非予測方向命令ストリームに切り換えるとき、キューイングされている命令を読み出すのに用いるアドレスポインタを、使用する命令ストリームのアドレスポインタに切り換えるだけでよい。切り換えられたアドレスポインタはその時点で予測方向命令ストリームのアドレスポインタとなり、予測方向命令ストリームの格納を継続するには当該アドレスポインタを続けてもちいればよい。これにより、命令キューと復帰先命令キューを連携させるための制御が簡単になり、また、分岐予測が失敗したとき、復帰動作にかかるサイクル数を少なくでき、命令実行性能を向上させることが可能になる。
本発明の具体的な態様として、前記制御部は、分岐予測が非分岐のときは復帰先命令キューに非予測方向命令ストリーム(つまり分岐した場合の分岐先命令ストリーム)を格納する。一方、分岐予測が分岐のときは命令キューの空きに非予測方向命令ストリームを格納すればよい。命令キューの空きとは、当該分岐予測が分岐とされる分岐命令の属する命令ストリームに係る記憶領域である。要するに、分岐予測が分岐なのでこの予測に従って命令プリフェッチアドレスを分岐先に変更することになるが、この予測には少なくとも当該分岐命令のプリデコードを必要とするから、当該分岐命令のプリフェッチ以降、予測までの間に先行してプリフェッチが要求された命令(非予測方向命令ストリームの一部である非予測方向の命令列)も命令キューに格納する。そのため分岐予測が分岐のときの非予測方向命令ストリームの格納にあえて復帰用命令キューの記憶段を割くことを要しない。
前記制御部は、非予測方向命令ストリームが復帰先命令キューにあるとき、分岐予測の失敗に応答して、復帰先命令キューを命令キューに、命令キューを復帰先命令キューに割り当てを切り換える。一方、非予測方向命令ストリームが命令キューの空き領域にあるときは、分岐予測の失敗に応答して、当該空き領域が保有する非予測方向命令ストリームを、実行すべき命令ストリームとし、当該非予測方向命令ストリームに続けて予測方向命令ストリームを格納する。命令キューのアドレスポインタか復帰先命令キューのアドレスポインタかを示すための書換え可能なフラグ手段をアドレスポインタと対で有することにより、命令キューと復帰先命令キューに分けて夫々に専用のアドレスポインタを設けることを要しない。
キューイングバッファに格納される非予測方向命令ストリームとその予測に係る分岐命令とを対応付ける情報を保持する記憶手段を設けることにより、複数の非予測方向命令ストリームが存在する場合にも対処が容易である。例えば非予測方向命令ストリームの格納領域は命令キューの空き領域と復帰先命令キューの双方とされる場合である。更に具体的な形態では、前記記憶手段は、キューイングバッファに格納される非予測方向命令ストリームの識別情報を分岐命令の実行順に格納する復帰命令ストリーム番号キューである。
前記キューイングバッファとその制御部は例えば中央処理装置の命令制御部に配置される。情報処理装置は、例えば前記中央処理装置に接続された命令キャッシュメモリを有し、半導体チップに形成される。
ここで、上記情報処理装置による分岐予測による命令プリフェッチの全体的な作用を説明する。条件分岐において分岐方向が予測される。予測方向の命令列は命令キューに格納される。分岐方向を予測する以前に命令フェッチ要求を出していた分岐しない(ntkn)方向の命令列は、命令キューに格納され、分岐する(tkn)予測時の復帰先命令とされ、その命令ストリームは復帰先命令ストリームとされる。分岐しない予測(ntkn)の時は、非予測側であるtkn側の命令列に対するフェッチ要求を出して復帰先命令キューに格納し、その命令列を復帰先命令ストリームとする。条件分岐と予測失敗時の復帰先命令列を格納するストリーム番号との対応は、条件分岐命令の実行順に復帰先命令ストリーム番号キューに格納する。条件分岐命令の実行時に分岐条件判定を行い、予測失敗の時は予測が失敗した分岐に対応する復帰先命令ストリーム番号を発行する。復帰先命令ストリームが命令キューにある時は命令キューから復帰先命令が命令デコーダに供給される。復帰先命令ストリームが復帰先命令キューにある場合は、復帰先命令キューと命令キューを入れ替えて復帰先命令ストリームを格納するキューを命令キューとし、命令キューから復帰先命令が命令デコーダに供給される。以後、復帰先命令に続行する命令のフェッチと命令デコーダへの命令供給が、ストリーム管理で行えるようになる。
〔2〕本発明の別に観点によると、分岐予測を行なう情報処理装置は、命令キューと復帰先命令キューに割当てられ命令ストリーム毎にアドレスポインタが管理されるキューイングバッファとその制御部を有し、前記制御部は、予測方向命令ストリームを命令キューに格納し、分岐予測が非分岐のときは復帰先命令キューに非予測方向命令ストリームを格納し、分岐予測が分岐のときは命令キューの空きに非予測方向命令ストリームを格納する。
本願において開示される発明のうち代表的なものによって得られる効果を簡単に説明すれば下記の通りである。
即ち、命令キューと復帰先命令キューを固定的に個別化することなくストリーム管理によって分岐予測失敗時の非予測方向命令列の復帰動作を実現するから、命令キューと復帰先命令キューを連携させるための制御を簡単にすることができる。さらに、分岐予測が失敗したとき、復帰動作にかかるサイクル数を少なくでき、命令実行性能を向上させることができる。
図2には本発明の一例に係る半導体データプロセッサもしくはマイクロコンピュータ等とも称されるマイクロプロセッサ1が示される。同図に示されるマイクロプロセッサ1は、例えばCMOS集積回路製造技術によって単結晶シリコンのような1個の半導体基板に形成される。
マイクロプロセッサ1は、中央処理装置(CPU)2、命令キャッシュメモリ(ICACH)3、データキャッシュメモリ(DCACH)4、バスステートコントローラ(BSC)5、ダイレクトメモリアクセスコントローラ(DMAC)6、割込みコントローラ(INTC)7、クロックパルスジェネレータ(CPG)8、タイマユニット(TMU)9、及び外部インタフェース回路(EXIF)10を有する。外部インタフェース回路(EXIF)10には外部メモリ(EXMEM)13が接続される。
前記CPU2は命令制御部(ICNT)11と実行部(EXEC)12を有する。ICNT11は分岐予測を行なってICACH3から命令をフェッチし、フェッチした命令をデコードしてEXEC12を制御する。EXEC12は図示を省略する汎用レジスタ及び演算器などを有し、ICNT11から供給される制御信号や制御データを用いてアドレス演算やデータ演算を行なって命令を実行する。命令実行に必要なオペランドデータ等はDCACH4又は外部メモリ13等から読み込まれる。ICACH3に一時的に保持される命令はEXIF10を介して外部メモリ(EXMEM)13から読み込まれる。ここでは、CPU2は2ウェイのスーパースカラ構成を有する。
図3には前記命令制御部11の一例が示される。命令フェッチ制御部21は分岐予測を行なって命令フェッチの制御を行なう。命令フェッチ制御部21による制御でICACH3から読み出された命令はプリデコーダ22、キューイングバッファ23及び命令デコーダ24に供給される。ICACH3からの命令読み出しは、特に制限されないが、4命令単位で行なわれる。ICACH3から読み出される命令数4とCPU2で一度に実行される命令数2との差の2命令はキューイングバッファ23の命令キューに蓄えられる。実行すべき命令がキューイングバッファ23の命令キューに保持されているときは命令キューから出力される命令が命令デコーダ24に供給される。非予測方向の命令ストリームはキューイングバッファ23が持つ復帰先命令キュー等に格納される。キューイングバッファ23をFIFO動作させるアドレスポインタ(リードアドレスポインタ及びライトアドレスポインタ)の管理は命令フェッチ制御部21の命令ストリーム管理部30が行ない、ここでは命令ストリーム毎にアドレスポインタを管理する。プリデコーダ22はICACH3から出力される命令をプリデコードして分岐命令の存否や分岐命令の種類を予め判定する。その判定結果は命令フェッチ制御部21に与えられる。命令フェッチ制御部21は、過去に実行された分岐命令毎に分岐の履歴情報を有する分岐予測器20を参照して分岐予測方向を決定し、分岐予測方向の命令ストリームと非予測方向の命令ストリームを取り込むためのキューイングバッファ23のアドレスポインタ管理とメモリアクセス制御、復帰先命令ストリーム番号キュー25のアドレスポインタ管理等を行なう。復帰先命令ストリーム番号キュー25はキューイングバッファ23に格納されている非予測方向命令ストリームの識別情報(ストリーム番号)を分岐命令の実行順に格納する。当該分岐命令の分岐条件などが確定するのは当該分岐命令の実行ステージとされるのがほとんどであり、分岐予測が失敗したか否かはその段階で明らかになる。分岐予測結果判定部26はEXEC12における演算結果などに基づいて分岐予測が失敗したか否かを判定する。命令フェッチ制御部21は分岐予測の失敗を検出すると、キューイングバッファ23から命令デコーダ24に供給する命令を非予測方向命令ストリームの命令に切り換える。このとき、キューイングバッファ23に保持されている非予測方向命令ストリームが複数ある場合にどの非予測方向命令ストリームを実行命令ストリーム(CPUが実行すべき命令ストリーム)に切り換えればよいかは、復帰先命令ストリーム番号キュー25の出力を分岐予測結果判定部26が認識してそのストリーム番号を命令フェッチ制御部21に伝えることによって、復帰先の命令ストリーム番号が解る。
図1にはキューイングバッファ23と命令ストリーム管理部30の詳細が例示される。キューイングバッファ23は3分割されたバッファ領域Qa1,Qa2,Qbを有する。バッファ領域Qa1とバッファ領域Qa2は、夫々m個のエントリ(FIFOエントリ)を持ち、各エントリには物理アドレスとしての0〜m−1の番号(エントリアドレス)が割り付けられている。バッファ領域Qbは、n−m個(n≧m)のエントリを持ち、各エントリには物理アドレスとしてのm〜n−1の番号(エントリアドレス)が割り付けられている。バッファ領域Qa1,Qa2,Qbをキューイングバッファ即ちFIFO(First in-First out)として利用するための命令読み出し用のリードポインタrpiと書き込み用のライトポインタwpi(i=0〜X)は、命令ストリーム毎に持つことができるようになっている。命令ストリーム毎のリードポインタrpi及びライトポインタwpi(単にアドレスポインタrpi,wpiとも記す)は、命令ストリーム管理部30で制御される。リードポインタrpiとライトポインタwpiは、夫々最大でバッファ領域Qa1とQb又はQa2とQbのエントリアドレス0〜n−1にあるn個のエントリを指すことができる。リードポインタrpi及びライトポインタwpiの値に対するインクリメントなどのアドレス演算は図示を省略する演算器で行なわれ、演算されたリードポインタrpi及びライトポインタwpiの値はバッファ領域Qa1,Qa2,Qb毎に専用アドレス線ADRa1,ADRa2,ADRbで与えられる。バッファ領域Qa1,Qa2,Qbは、Qa1とQbを連続する一つの命令キューIQUEとして用いるときQa2は復帰先命令キューRBUFとして用いられ、Qa2とQbを連続する一つの命令キューIQUEとして用いるときQa1が復帰先命令キューRBUFとして用いられる。
アドレスポインタrpi,wpiがバッファ領域Qa1を用いるキューに対応されるのか、バッファ領域Qa2を利用するキューに対応されるのかを示すためにアドレスポインタrpi,wpiと対でフラグFLGiが設けられている。例えばFLGi=1でQa1側、FLGi=0でQa2側に対応されることを意味する。更にバッファ領域Qa1又はQa2の何れが復帰用命令キューに割当てられているかを示すフラグFLGrcが設けられている。例えばFLGrc=1でQa1、FLGrc=0でQa2が復帰用命令キューであることを意味する。命令ストリーム管理部30は、前記フラグFLGiとFLGrcにより、最大でX+1個の命令ストリーム毎のアドレスポインタrpi,wpiが命令キューのアドレスポインタか復帰先命令キューのアドレスポインタかを認識することができる。
マルチプレクサ31は選択信号SEL1によりバッファ領域Qa1又はQa2の一方の出力を選択する。マルチプレクサ31の出力又はバッファ領域Qbの出力は選択信号SEL2によりマルチプレクサ32で選択され、マルチプレクサ32の出力が命令デコーダ24に供給される。
図4にはバッファ領域Qa1とQbで命令キューIQUEを構成し、バッファ領域Qa2をm個のエントリを持つ復帰先命令キューRBUFとして使用する状態を示す。予測方向命令ストリームは命令キューIQUEに格納され、ntkn予測の時の非予測方向命令ストリームは復帰先命令キューRBUFに格納される。ntkn予測が失敗した時、命令キューIQUEと復帰先命令キューRBUFの割り当ては図4から図5のように切り換えられる。バッファ領域Qa2とQbが連続したn個のエントリを持つ命令キューIQUEとされ、バッファ領域Qa2に格納されている非予測方向命令ストリームが復帰先命令ストリームとして命令デコーダ24に供給される。図4から図5に状態への切換えは前記フラグFLGrcの値に反映される。
図6の命令ストリームを一例として命令ストリーム管理部30によるストリーム管理の具体例を説明する。
先ず、命令フェッチ制御部21は、命令ストリームの始点と終点を下記のように定義する。命令ストリームの始点は、リセット後に実行開始する命令、分岐先の命令とする。命令ストリームの終点は、無条件分岐命令、tkn予測の条件分岐命令とする。
命令フェッチ制御部21は、プリデコーダ22のプリデコード結果に基づいて命令ストリームの始点と終点を検出する。図6の例では、命令列先頭のSTART:をリセット後に実行開始する命令アドレスとすると、命令フェッチ制御部21は命令ISR1以降の命令列を命令ストリーム0として管理する。プリデコード結果によって命令フェッチ制御部21が無条件分岐命令αを検出すると、命令αを命令ストリーム0の終点とする。無条件分岐命令αの分岐先は、命令ISR2である。命令フェッチ制御部21は、命令ISR2以降を命令ストリーム1として管理する。命令フェッチ制御部21は、プリデコード結果によって条件分岐命令βを検出すると、分岐予測器20を参照して動的分岐予測を行う。ここでは条件分岐命令βの分岐予測結果を「ntkn予測」とする。ntkn予測の条件分岐命令はストリームの終点としないため、命令フェッチ制御部21は条件分岐命令β以降の命令列も命令ストリーム1として管理する。命令フェッチ制御部21が条件分岐命令γを検出すると、条件分岐命令βと同様にして分岐予測器20を参照して動的分岐予測を行う。ここでは条件分岐命令γの分岐予測結果を「tkn予測」とする。tkn予測の遅延条件分岐命令はストリームの終点なので、命令フェッチ制御部は命令γを命令ストリーム1の終点とする。
図7は2命令同時フェッチ、1命令実行の場合の命令フェッチと命令実行のパイプライン動作の一例を示す。上記、図6の「tkn予測」の時、図7に示すように、条件分岐命令γのプリデコード(PD)と分岐予測を行うまでに、条件分岐命令γの続行命令ISR3以降の命令フェッチ要求が出ており、ICACH3から入力された命令ISR3以降の命令は、命令ストリーム1の後ろに格納される。遅延分岐命令γの分岐先は、命令ISR4である。命令フェッチ制御部21は、命令ISR4以降を命令ストリーム2として管理する。
図8は、図6の命令ストリーム0〜3を命令キューIQUEと復帰先命令キューRBUFに格納している例である。ここでは、各バッファ領域はQa1,Qa2,Qbのサイズは、各ライン4エントリで合計4ライン(合計16エントリ、16命令格納可能)有るものとする。バッファ領域Qa1とQbが命令キューIQUEであり、バッファ領域Qa2が復帰先命令キューRBUFであるとき、命令ストリーム0〜2はバッファ領域Qa1、Qbに、命令ストリーム3はバッファ領域Qa2に格納する。条件分岐命令βがまだIDステージに発行されていない場合は、2つの条件分岐命令β、γについて命令フェッチに関し投機実行している状態となる。この時、復帰先命令ストリーム番号キュー25には、図9に例示されるように、最初に実行される条件分岐命令βの予測がはずれた場合の復帰先となる命令ストリーム番号3(#3)と、2番目に実行される条件分岐命令γの予測がはずれた場合の復帰先となる命令ストリーム番号1(#1)が入る。図1の命令ストリーム管理部30が命令ストリームを4本管理可能な場合、最大3つの分岐命令について、命令フェッチに関し投機実行することができる。要するに、最大3つの分岐命令の夫々の非予測方向命令ストリームをキューイングバッファ23に格納することができる、ということである。
ここで、命令キューIQUEと復帰先命令キューRBUFが図8の状態になっているとき、アドレスポインタrpi,wpiの状態について説明する。命令キューIQUEのエントリアドレスは左上エントリのA0から右下エントリのA31とし、復帰先命令キューRBUFのエントリアドレスは左上エントリのA0から右下エントリのA15とする。命令キューIQUEからの命令フェッチは命令ストリーム2の途中アドレスA30まで、命令デコードは命令ストリーム0の途中アドレスA1まで進んでいるとする。このとき、命令ストリーム0に対応するアドレスポインタはrp0=A1、wp0=A2になる。命令ストリーム1に対応するアドレスポインタはrp1=A4、wp1=A16になる。命令ストリーム2に対応するアドレスポインタはrp2=A20、wp2=A30になる。命令ストリーム3に対応するアドレスポインタはrp3=A0、wp3=A3になる。
図10には命令フェッチ制御部21による上記命令ストリーム制御の手順が示される。外部メモリからの命令フェッチの指示により命令制御部11に命令が入力されると(S1)、その命令がプリデコードされる(S2)。プリデコードされた命令が条件分岐命令でなければ、次の命令フェッチの指示を待つ。プリデコードされた命令が条件分岐命令のときは、分岐予測を行なう(S3)。tkn予測の場合、命令キューのストリームを復帰先、即ち非予測方向命令ストリームとして命令キューIQEの空きに格納する。予測方向である分岐先の命令ストリームは、命令キューIQUEの別の空きに格納する(S4)。一方、ntkn予測の場合、復帰先命令キューRBUFに格納する復帰先命令列のフェッチ要求を出し(S5)、復帰先命令キューRBUFに復帰先命令ストリームである非予測方向命令ストリームを格納する(S6)。その後、予測方向(ここではntkn予測)の命令のフェッチ要求を出力し、該要求された命令を命令キューIQEに格納する。
tkn予測及びntkn予測の何れにおいても、命令実行により予測成功であることが認識されたときは、予測成功に係る分岐命令を起点とする復帰先命令ストリームを消去する(S7)。tkn予測において、命令実行により予測失敗であることが認識されたときは、予測失敗に係る分岐命令を起点とする復帰先命令ストリーム以外を消去する(S8)。ntkn予測において、命令実行により予測失敗であることが認識されたときは、予測失敗に係る分岐命令を起点とする復帰先命令ストリーム以外を消去し、バッファ領域Qa1とQa2の機能を切り換える(S9)。
図11には分岐予測失敗時における復帰先命令キューによる効果が例示される。例えば予測失敗の条件分岐命令のデコード(t0)から予測結果の判定に3サイクル要するとすれば、復帰先命令キューがなければ、予測結果失敗の判定結果を得た時点(t1)から復帰先命令をフェッチしなければならず、命令フェッチに2サイクル要すると、復帰先命令のデコードまで(t2)に合わせて5サイクルのペナルティーサイクルが発生する。これに対し、非予測方向命令ストリームが復帰先命令キュー等に格納されていれば、予測結果の失敗判定に応答して復帰先命令キューから復帰先命令を読み出してその命令を命令デコーダに供給することができる。復帰先命令キューにその次に実行すべき命令が少なくとも格納されていれば、時刻t1のサイクルより復帰先命令に続行する命令のフェッチを始めれば、3サイクルのペナルティーサイクルの後、途切れることなく分岐予測失敗に係る命令を順次実行していくことができる。このように、復帰先命令キューを持たない場合に比べて分岐失敗のペナルティを5サイクルから3サイクルに削減することができる。
図12には図1に対する比較例が示される。復帰先命令キューと命令キューが別個独立に設けられ、これに呼応して命令ストリーム管理部も復帰先命令キューと命令キュー用に別個独立に設けられる。分岐予測が失敗の時は、復帰先命令キューから復帰先の命令列を命令デコーダに供給する。復帰先命令キューから命令デコーダへの命令の供給に並行して、続行の命令列をフェッチして命令キューに格納する。復帰先命令キューに格納している復帰先の命令が尽きると、命令キューから命令を命令デコーダに供給する。命令キューと復帰先命令キューに対するリード/ライトポインタを別々に管理する必要があるため、ポインタ管理が複雑である。図1の構成では、命令キューIQUEの一部と復帰先命令キューRBUFを置き換えることで、復帰先命令をその命令ストリームのリードポインタを用いて命令デコーダに供給できる。これにより、命令キューと復帰先命令キューを固定的に個別化することなく、ストリーム管理によって復帰動作を実現できるため、分岐予測失敗時等における制御論理を簡略化でき、処理も高速化できる。
以上本発明者によってなされた発明を実施形態に基づいて具体的に説明したが、本発明はそれに限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能であることは言うまでもない。
例えば、キューイングバッファを構成するバッファ領域の数とそのエントリ容量は適宜変更可能である。CPUは2ウェイスーパースカラに限定されない。シングルスカラであってもよい。また、マイクロプロセッサにオンチップされる回路モジュールも適宜変更可能である。更に本発明は1チップの情報処理装置に限定されず、マルチチップ構成であってよい。
例えば、復帰先命令キューに格納される命令ストリームは4ライン分格納可能で、4命令ストリーム格納可能となっているが、この格納ライン数、格納命令ストリーム数は適宜変更可能である。
さらに、マイクロプロセッサは、内部にCPUによって実行される命令格納領域、ワーク領域としての内部メモリを有するものであってもよい。
また、マイクロプロセッサ、外部メモリ及びその他図示しない周辺回路を1個の半導体基板に形成するものであってよいし、マイクロプロセッサ、外部メモリ及びその他周辺回路をそれぞれ別の半導体基板に形成し、1個のパッケージに封入されるものであってよい。
1 マイクロプロセッサ
2 CPU
3 ICACH
11 ICNT
12 EXEC
20 分岐予測器
21 命令フェッチ制御部
22 プリデコーダ
23 キューイングバッファ
24 命令デコーダ
25 復帰先命令ストリーム番号キュー
26 分岐予測結果判定部
30 命令ストリーム管理部
Qa1、Qa2、Qb バッファ領域
rpi リードポインタ
wpi ライトポインタ
FLGi
FLGrc
IQUE 命令キュー
RBFF 復帰用命令キュー
2 CPU
3 ICACH
11 ICNT
12 EXEC
20 分岐予測器
21 命令フェッチ制御部
22 プリデコーダ
23 キューイングバッファ
24 命令デコーダ
25 復帰先命令ストリーム番号キュー
26 分岐予測結果判定部
30 命令ストリーム管理部
Qa1、Qa2、Qb バッファ領域
rpi リードポインタ
wpi ライトポインタ
FLGi
FLGrc
IQUE 命令キュー
RBFF 復帰用命令キュー
Claims (20)
- 分岐予測を行なう情報処理装置であって、命令キューと復帰先命令キューに割当てられ命令ストリーム毎にアドレスポインタが管理されるキューイングバッファとその制御部を有し、
前記制御部は、予測方向命令ストリームと非予測方向命令ストリームをキューイングバッファに格納し、分岐予測の失敗に応答して、実行対象とする命令ストリームをキューイングバッファ内の予測方向命令ストリームから非予測方向命令ストリームに切り換えることを特徴とする情報処理装置。 - 前記キューイングバッファは、同じ物理アドレスが割り付けられた第1の記憶領域と第2の記憶領域を有し、前記第1の記憶領域と第2の記憶領域は、相互に一方を命令キュー、他方を復帰先命令キューとする割当てが切換え可能にされることを特徴とする請求項1記載の情報処理装置。
- 前記第1の記憶領域と第2の記憶領域の夫々に割り付けられる物理アドレスに連続する物理アドレスが割り付けられる第3の記憶領域を有し、前記第3の記憶領域は命令キューに割当てられた前記第1の記憶領域又は第2の記憶領域に連続する命令キューの一部に割当てられることを特徴とする請求項2記載の情報処理装置。
- 前記制御部は、分岐予測が非分岐のときは復帰先命令キューに非予測方向命令ストリームを格納することを特徴とする請求項1記載の情報処理装置。
- 前記制御部は、分岐予測が分岐のときは命令キューの空きに非予測方向命令ストリームを格納することを特徴とする請求項4記載の情報処理装置。
- 前記制御部は、非予測方向命令ストリームが復帰先命令キューにあるとき、分岐予測の失敗に応答して、復帰先命令キューを命令キューに、命令キューを復帰先命令キューに割り当てを切り換えることを特徴とする請求項5記載の情報処理装置。
- 前記制御部は、非予測方向命令ストリームが命令キューの空き領域にあるとき、分岐予測の失敗に応答して、当該空き領域が保有する非予測方向命令ストリームを、実行すべき命令ストリームとし、当該非予測方向命令ストリームに続けて予測方向命令ストリームを格納することを特徴とする請求項6記載の情報処理装置。
- 命令キューのアドレスポインタか復帰先命令キューのアドレスポインタかを示すための書換え可能なフラグ手段をアドレスポインタと対で有することを特徴とする請求項7記載の情報処理装置。
- キューイングバッファに格納される非予測方向命令ストリームとその予測に係る分岐命令とを対応付ける情報を保持する記憶手段を有することを特徴とする請求項7記載の情報処理装置。
- 前記記憶手段は、キューイングバッファに格納される非予測方向命令ストリームの識別情報を分岐命令の実行順に格納する復帰命令ストリーム番号キューであることを特徴とする請求項9記載の情報処理装置。
- 分岐予測を行なう情報処理装置であって、命令キューと復帰先命令キューに割当てられ命令ストリーム毎にアドレスポインタが管理されるキューイングバッファとその制御部を有し、
前記制御部は、予測方向命令ストリームを命令キューに格納し、分岐予測が非分岐のときは復帰先命令キューに非予測方向命令ストリームを格納し、分岐予測が分岐のときは命令キューの空きに非予測方向命令ストリームを格納することを特徴とする情報処理装置。 - 前記制御部は、分岐予測の失敗に応答して、実行対象とする命令ストリームをキューイングバッファ内の予測方向命令ストリームから非予測方向命令ストリームに切り換えることを特徴とする請求項11記載の情報処理装置。
- 前記制御部は、非予測方向命令ストリームが復帰先命令キューにあるとき、分岐予測の失敗に応答して、復帰先命令キューを命令キューに、命令キューを復帰先命令キューに割り当てを切り換えることを特徴とする請求項12記載の情報処理装置。
- 前記制御部は、非予測方向命令ストリームが命令キューの空き領域にあるとき、分岐予測の失敗に応答して、当該空き領域が保有する非予測方向命令ストリームを、実行すべき命令ストリームとし、当該非予測方向命令ストリームに続けて予測方向命令ストリームを格納することを特徴とする請求項13記載の情報処理装置。
- 命令キューのアドレスポインタか復帰先命令キューのアドレスポインタかを示すための書換え可能なフラグ手段をアドレスポインタと対で有することを特徴とする請求項14記載の情報処理装置。
- キューイングバッファに格納される非予測方向命令ストリームとその予測に係る分岐命令とを対応付ける情報を保持する記憶手段を有することを特徴とする請求項11記載の情報処理装置。
- 前記記憶手段は、キューイングバッファに格納される非予測方向命令ストリームの識別情報を分岐命令の実行順に格納する復帰命令ストリーム番号キューであることを特徴とする請求項16記載の情報処理装置。
- 前記命令ストリームの始点となる命令にはリセット後に実行開始する命令と分岐先命令を含み、前記命令ストリームの終点となる命令には無条件分岐命令と分岐する予測の条件分岐命令を含むことを特徴とする請求項1乃至17の何れか1項記載の情報処理装置。
- 前記キューイングバッファとその制御部は中央処理装置の命令制御部に配置されることを特徴とする請求項1乃至18の何れか1項記載の情報処理装置。
- 前記中央処理装置に接続された命令キャッシュメモリを有し、半導体チップに形成されたことを特徴とする請求項19記載の情報処理装置。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003305650A JP2005078234A (ja) | 2003-08-29 | 2003-08-29 | 情報処理装置 |
US10/927,199 US20050050309A1 (en) | 2003-08-29 | 2004-08-27 | Data processor |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003305650A JP2005078234A (ja) | 2003-08-29 | 2003-08-29 | 情報処理装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2005078234A true JP2005078234A (ja) | 2005-03-24 |
Family
ID=34214065
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003305650A Pending JP2005078234A (ja) | 2003-08-29 | 2003-08-29 | 情報処理装置 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20050050309A1 (ja) |
JP (1) | JP2005078234A (ja) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050273559A1 (en) | 2004-05-19 | 2005-12-08 | Aris Aristodemou | Microprocessor architecture including unified cache debug unit |
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 |
WO2007049150A2 (en) * | 2005-09-28 | 2007-05-03 | Arc International (Uk) Limited | Architecture for microprocessor-based systems including simd processing unit and associated systems and methods |
US7945767B2 (en) * | 2008-09-30 | 2011-05-17 | Faraday Technology Corp. | Recovery apparatus for solving branch mis-prediction and method and central processing unit thereof |
US9626185B2 (en) | 2013-02-22 | 2017-04-18 | Apple Inc. | IT instruction pre-decode |
US20190369999A1 (en) * | 2018-06-04 | 2019-12-05 | Advanced Micro Devices, Inc. | Storing incidental branch predictions to reduce latency of misprediction recovery |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2596712B2 (ja) * | 1993-07-01 | 1997-04-02 | インターナショナル・ビジネス・マシーンズ・コーポレイション | 近接した分岐命令を含む命令の実行を管理するシステム及び方法 |
GB9412487D0 (en) * | 1994-06-22 | 1994-08-10 | Inmos Ltd | A computer system for executing branch instructions |
JP3741870B2 (ja) * | 1998-08-07 | 2006-02-01 | 富士通株式会社 | 命令及びデータの先読み方法、マイクロコントローラ、疑似命令検出回路 |
US6604191B1 (en) * | 2000-02-04 | 2003-08-05 | International Business Machines Corporation | Method and apparatus for accelerating instruction fetching for a processor |
US6976156B1 (en) * | 2001-10-26 | 2005-12-13 | Lsi Logic Corporation | Pipeline stall reduction in wide issue processor by providing mispredict PC queue and staging registers to track branch instructions in pipeline |
-
2003
- 2003-08-29 JP JP2003305650A patent/JP2005078234A/ja active Pending
-
2004
- 2004-08-27 US US10/927,199 patent/US20050050309A1/en not_active Abandoned
Also Published As
Publication number | Publication date |
---|---|
US20050050309A1 (en) | 2005-03-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4610593B2 (ja) | デュアルスレッドプロセッサ | |
JP5104863B2 (ja) | 演算処理装置及び演算処理装置の制御方法 | |
EP0996057B1 (en) | Data processor with an instruction unit having a cache and a ROM | |
JP2918631B2 (ja) | デコーダ | |
US7134002B2 (en) | Apparatus and method for switching threads in multi-threading processors | |
KR100577445B1 (ko) | 분기 예측들을 신속하게 특정하기 위해 명령 캐시 내의 바이트 범위들과 관련되는 분기 선택자들 | |
US7269712B2 (en) | Thread selection for fetching instructions for pipeline multi-threaded processor | |
KR100745904B1 (ko) | 동시적 멀티스레드 프로세서에서 파이프라인 길이를변경하기 위한 방법 및 회로 | |
JPH1124929A (ja) | 演算処理装置およびその方法 | |
JP2742374B2 (ja) | スーパースカラ・プロセッサ・システムにおける命令ディスパッチ効率を向上させる方法およびシステム | |
EP2159691B1 (en) | Simultaneous multithreaded instruction completion controller | |
US6654873B2 (en) | Processor apparatus and integrated circuit employing prefetching and predecoding | |
US20060095746A1 (en) | Branch predictor, processor and branch prediction method | |
JP2005078234A (ja) | 情報処理装置 | |
KR100431975B1 (ko) | 분기에의한중단이없는파이프라인방식의마이크로프로세서를위한다중명령디스패치시스템 | |
US7139903B2 (en) | Conflict free parallel read access to a bank interleaved branch predictor in a processor | |
JPH06266556A (ja) | データ処理装置 | |
JP2004192021A (ja) | マイクロプロセッサ | |
US6119220A (en) | Method of and apparatus for supplying multiple instruction strings whose addresses are discontinued by branch instructions | |
JP7409208B2 (ja) | 演算処理装置 | |
JP2008071061A (ja) | 情報処理装置 | |
JP5093237B2 (ja) | 命令処理装置 | |
US6842846B2 (en) | Instruction pre-fetch amount control with reading amount register flag set based on pre-detection of conditional branch-select instruction | |
JP2689914B2 (ja) | 情報処理装置 | |
JPH0342723A (ja) | データ処理装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20060810 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20070216 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20070227 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20070821 |