JP5099133B2 - 処理装置 - Google Patents

処理装置 Download PDF

Info

Publication number
JP5099133B2
JP5099133B2 JP2009520201A JP2009520201A JP5099133B2 JP 5099133 B2 JP5099133 B2 JP 5099133B2 JP 2009520201 A JP2009520201 A JP 2009520201A JP 2009520201 A JP2009520201 A JP 2009520201A JP 5099133 B2 JP5099133 B2 JP 5099133B2
Authority
JP
Japan
Prior art keywords
instruction
buffer
branch
stored
address
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
JP2009520201A
Other languages
English (en)
Other versions
JPWO2008155847A1 (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.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
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 Fujitsu Ltd filed Critical Fujitsu Ltd
Publication of JPWO2008155847A1 publication Critical patent/JPWO2008155847A1/ja
Application granted granted Critical
Publication of JP5099133B2 publication Critical patent/JP5099133B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

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/3802Instruction prefetching
    • G06F9/3808Instruction prefetching for instruction reuse, e.g. trace cache, branch target cache
    • G06F9/381Loop buffering
    • 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/3802Instruction prefetching
    • G06F9/3814Implementation provisions of instruction buffers, e.g. prefetch buffer; banks
    • 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

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)
  • Input From Keyboards Or The Like (AREA)

Description

本発明は、情報処理装置の制御技術、特に、命令処理技術に関するものである。
パイプライン処理方式以降の高度な命令処理方式を採用した情報処理装置においては、一つの命令実行の終了を待たずに、投機的に後続の命令の処理を行うことで性能の向上を図ってきた。もちろん、その命令実行に先立ち、命令供給(命令フェッチ)も投機的に行うことで性能向上を果たしてきた。ここで、投機的とは、例えば、後続の命令のフェッチアドレスが確定する前に所定の予測結果にしたがったフェッチアドレスから後続の命令をフェッチし、処理すること等をいう。
命令バッファ方式では、投機的にフェッチされた命令はいったん命令バッファに保持される。そして、命令バッファは、命令を解釈実行する実行制御部に向けて命令を供給する。このような命令バッファを複数もつことで投機的フェッチを先まで進めることが出来る。
また、プログラム内には数多くのループ(ショートループ)が存在し、そこでは同じ命令列を何度も再利用する。即ち、命令バッファ内に保持されている命令列にプログラムのループが含まれている場合、その部分については新規に命令列を取得しつづけるより、既にバッファに保持しているものを流用する方が、フェッチの工数が省け、はるかに効率がよく、性能向上に大きく貢献する。
この命令バッファ再利用の手法の先行技術として、例えば、下記の特許文献に開示される技術がある。
日本国特許第3804941号公報 日本国特許第3683968号公報
特許第3804941号公報では、回路の簡素化のために、ループの起点として比較テストを行う対象を、命令バッファの番号0に限定する例をあげている。
しかし、起点を限定するということは、ループの起点が0番でなければループとしてバッファの内容を再利用できないことであり、せっかくの性能向上のチャンスを逃すことに他ならない。
また、例えばプリデコードによって、命令実行より前に予測失敗が確定し、現在命令バッファに入っている中から、ある命令バッファ以降のものだけをキャンセルするような場合には、起点は必ずしも0番にならない。
このため、ループの起点を固定せずに、分岐命令を検出した際、その分岐先アドレスが命令バッファに含まれているか否かの比較テストを全ての命令バッファに対して行うことも考えられる。しかしながら、0番だけでなく、全ての命令バッファを比較テストの対象としたのでは、命令バッファの数が増えれば増える程、回路コストが増大し、それは同時にディレイ等の問題を引き起こす。
そこで、本発明は、ループの起点を固定せずにループとなる命令のフェッチを簡易な構成で可能とする技術を提供する。
本発明の処理装置は、命令列を格納する命令バッファと、
所定命令(例えば分岐命令)を予測する命令予測部と、
前記命令バッファに対応して設けられ、一の命令バッファに格納された命令列が読み出される場合に、次に読み出されるべき命令列が格納された他の命令バッファの識別情報により、一の命令バッファと他の命令バッファ間の接続関係を示すポインタと、
命令列の処理がループ状の繰り返しになるような所定命令の命令フェッチを行う場合に繰り返しの起点となる命令列が格納された命令バッファの識別情報を記憶した起点記憶部と、
前記所定命令が前記分岐予測部により検出された場合に、前記起点記憶部に記憶した識別情報を次に読み出す命令バッファの識別情報として前記ポインタに設定するポインタ設定部と、を備えた。
また、別の方法として本発明の処理装置は、命令列を格納する命令バッファと、
前記命令バッファに格納された命令列のデコードを行う命令デコーダと、
前記命令バッファに対応して設けられ、一の命令バッファに格納された命令列が読み出される場合に、次に読み出されるべき命令列が格納された他の命令バッファの識別情報により、一の命令バッファと他の命令バッファ間の接続関係を示すポインタと、
命令列の処理がループ状の繰り返しになるような所定命令の命令フェッチを行う場合に繰り返しの起点となる命令列が格納された命令バッファの識別情報を記憶した起点記憶部と、
前記所定命令が前記命令デコーダにより検出された場合に、前記起点記憶部に記憶した識別情報を次に読み出す命令バッファの識別情報として前記ポインタに設定するポインタ設定部と、を備えた。
また、前記ポインタ設定部は、前記所定命令によって命令フェッチするアドレスと、前記起点記憶部が示す命令バッファの命令フェッチアドレスとを比較し、両アドレスが一致した場合に、該起点記憶部に記憶した識別情報を次に読み出す命令バッファの識別情報として前記ポインタに設定してもよい。
前記処理装置において、起点記憶部に有効な情報が無かった場合に、当該所定命令によって命令フェッチした命令列を格納した命令バッファの識別情報を起点記憶部に記憶させる起点登録部を備えても良い。
前記処理装置において、前記所定命令によって命令フェッチするアドレスと、前記起点記憶部が示す命令バッファの命令フェッチアドレスとが一致しなかった場合に、当該所定命令によって命令フェッチした命令列を格納した命令バッファの識別情報を起点記憶部に記憶させる起点登録部を備えても良い。
前記処理装置において、前記所定命令は、分岐予測装置によって予測された分岐命令であってもよい。
前記処理装置において、前記所定命令は、実際に実行された分岐命令であってもよい。
前記所定命令が、無条件分岐命令又は分岐が予測される命令である場合に、該命令による分岐先アドレスを前記所定命令によって命令フェッチするアドレスとしても良い。
また、本発明の処理方法は、命令列を格納する命令バッファと、
所定命令を予測する命令予測部と、
前記命令バッファに対応して設けられ、一の命令バッファに格納された命令列が読み出される場合に、次に読み出されるべき命令列が格納された他の命令バッファの識別情報により、一の命令バッファと他の命令バッファ間の接続関係を示すポインタと、
命令列の処理がループ状の繰り返しになるような所定命令の命令フェッチを行う場合に繰り返しの起点となる命令列が格納された命令バッファの識別情報を記憶した起点記憶部とを有する処理装置による処理方法であって、
一の命令バッファに格納された命令列を読み出すステップと、
前記命令予測部により前記所定命令を検出するステップと、
前記所定命令が検出された場合に、前記起点記憶部に記憶した識別情報を次に読み出す命令バッファの識別情報として前記ポインタに設定するステップと、
を前記処理装置が行う。
また、本発明の処理方法は、命令列を格納する命令バッファと、
前記命令バッファに格納された命令列のデコードを行う命令デコーダと、
前記命令バッファに対応して設けられ、一の命令バッファに格納された命令列が読み出される場合に、次に読み出されるべき命令列が格納された他の命令バッファの識別情報により、一の命令バッファと他の命令バッファ間の接続関係を示すポインタと、
命令列の処理がループ状の繰り返しになるような所定命令の命令フェッチを行う場合に繰り返しの起点となる命令列が格納された命令バッファの識別情報を記憶した起点記憶部とを有する処理装置による処理方法であって、
一の命令バッファに格納された命令列を読み出すステップと、
前記命令デコーダにより前記所定命令を検出するステップと、
前記所定命令が検出された場合に、前記起点記憶部に記憶した識別情報を次に読み出す命令バッファの識別情報として前記ポインタに設定するステップと、
を前記処理装置が行う。
前記処理方法において、前記所定命令によって命令フェッチするアドレスと、前記起点記憶部が示す命令バッファの命令フェッチアドレスとを比較し、両アドレスが一致した場合に、該起点記憶部に記憶した識別情報を次に読み出す命令バッファの識別情報として前記ポインタに設定しても良い。
前記処理方法において、起点記憶部に有効な情報が無かった場合に、当該所定命令によって命令フェッチした命令列を格納した命令バッファの識別情報を起点記憶部に記憶させても良い。
前記処理方法において、前記所定命令によって命令フェッチするアドレスと、前記起点記憶部が示す命令バッファの命令フェッチアドレスとが一致しなかった場合に、当該所定命令によって命令フェッチした命令列を格納した命令バッファの識別情報を起点記憶部に記憶させても良い。
前記処理方法において、前記所定命令は、分岐予測装置によって予測された分岐命令であってもよい。
前記処理方法において、前記所定命令は、実際に実行された分岐命令であってもよい。
前記処理方法において、前記所定命令が、無条件分岐命令又は分岐が予測される命令である場合に、該命令による分岐先アドレスを前記所定命令によって命令フェッチするアドレスとしても良い。
本発明では、本発明は、ループの起点を固定せずにループとなる命令のフェッチを簡易な構成で実現できる。
本処理装置の構成図 命令フェッチ制御ユニットとこの周辺の回路の構成図 命令バッファの構造を示す図 命令フェッチアドレス選択部の詳細を示す図 シーケンシャル方向のポインタを設定する回路を示す図 分岐先方向のポインタを設定する回路を示す図 シーケンシャル方向のポインタチェーンの説明図 ポインタをたどって命令供給を行う例を示す図 起点レジスタの構成を示す図 起点レジスタのバリッドフラグSTART_IBR_ID_VALIDを生成する回路を示す図 起点レジスタのバッファ番号を保持するレジスタSTART_IBR_IDにバッファ番号を設定する回路を示す図 命令フェッチ要求部による起点レジスタ登録等の処理のタイムチャート ポインタによって構成されるショートループの説明図 ポインタによって構成されるショートループの説明図
《実施形態の骨子》
本実施形態の処理装置は、ショートループの起点となりうる命令バッファの番号(識別情報)を記録しておく起点記憶部(レジスタ)を命令バッファと別に備え、分岐命令を検出した場合に、その分岐先アドレスと、起点レジスタが記憶した識別情報が示す命令バッファに属する命令フェッチアドレスとを比較する。これらが一致した場合、次にフェッチすべき命令列は、起点レジスタが示す命令バッファで保持しているものと同じである。
そこで、分岐命令を検出した命令フェッチのデータを格納する命令バッファの次に読み出すべき命令バッファの番号を示すポインタに起点レジスタの保持する命令バッファ番号を設定することで、命令バッファのループを構成する。
この様に、命令バッファと別にループの起点となる命令バッファの番号を記憶する起点レジスタを追加するという簡易な構成で、起点を固定せずにループとなる命令の供給を実現できる。
また、前記起点レジスタが示す命令バッファの命令フェッチアドレスと分岐先アドレスとだけ比較を行えば良いので、命令バッファの数がどれだけ増えても、従来と殆ど変らない時間でループとなる命令の供給を実現できる。
《第1実施形態》
<システムの構成と概要>
図1に、本処理装置の構成図を示す。図2に命令フェッチにおける制御の全体図を示す。本処理装置は、例えば、主記憶装置121に格納された命令を読み出して実行する、いわゆるプログラム内蔵方式のコンピュータである。
図1のように、この処理装置は、命令を実行する演算ユニット120と、演算ユニット120で実行される命令および演算ユニット120が処理するデータ等を格納する主記憶装置121と、演算ユニット120が実行すべき命令の主記憶装置121上のアドレスを指定するプログラムカウンタ122とを有している。
図1では、さらに具体的に、プログラムカウンタ122の生成するアドレス、分岐リザベーションステーション126からの再命令フェッチ指示、あるいは分岐予測部3の予測結果に基づいて命令のフェッチを制御する命令フェッチ制御ユニット5と、命令キャッシュ102を管理し命令フェッチ制御ユニット5からの命令フェッチ要求にしたがって命令をフェッチする命令キャッシュ制御ユニット4と、命令キャッシュ102からフェッチされた命令を保持する命令バッファ1と、命令バッファ1の命令をデコードする命令デコーダ7と、デコードされた命令の実行タイミングを制御するリザベーションステーション(分岐命令の実行を制御する分岐リザベーションステーション126およびレジスタ演算命令、アドレス演算命令の実行を制御するその他リザベーションステーション127)と、命令の実行完了を監視する命令完了管理ユニット128と、演算ユニット120で実行される命令のオペランドを高速に演算ユニット120に供給するオペランドキャッシュ129と、主記憶装置121とオペランドキャッシュ129との間でデータの授受を管理するデータキャッシュ制御ユニット131とを有している。
<命令フェッチ制御ユニットの構成>
図2に、命令フェッチ制御ユニット5の詳細構造と命令フェッチ制御ユニット5に関連する回路の構成を示す。
プログラムカウンタ22は、次に命令を読み込む主記憶装置121のアドレスを記憶する。即ち、命令が実際に実行されると、次の命令のアドレスに更新される。ただし、本例の命令フェッチ制御ユニット5は、基本的に分岐予測部(命令予測部に相当)3の予測結果を反映して、投機的に命令フェッチを制御する。このため、命令フェッチ制御ユニット5がプログラムカウンタ22の値を使用するのは、例えば、処理装置に割り込み、あるいは、トラップ等が発生し、命令バッファを全てクリアして始める場合や投機フェッチが失敗した場合である。
分岐リザベーションステーション126は、分岐命令の実行を制御する。そして、分岐命令の実行によって分岐するか否か、また分岐する場合には分岐先アドレスが確定したときに、完了報告が分岐リザベーションステーション126から、命令完了管理ユニット128に送出される。また、分岐リザベーションステーション126は分岐予測が正しかったか否かを判定し、その結果を分岐予測部3に通知する。そして、分岐予測が失敗した場合には、その旨を示すキャンセル信号を命令フェッチアドレス選択部9に送出する。
命令フェッチアドレス選択部9は、割り込み、あるいは、トラップ等が発生したときにプログラムカウンタ122から供給されるアドレス、分岐リザベーションステーション126から出力された再命令フェッチ要求信号及び再命令フェッチ要求アドレス、分岐予測失敗時に分岐予測部3から出力される分岐予測先命令フェッチ要求信号及び分岐予測先命令フェッチ要求アドレス、又は加算部において命令語長単位で、例えば、32バイトづつ順次、加算することで生成される命令アドレス等に基づいて、命令データが格納されている命令キャッシュ4を索引するための命令フェッチ要求アドレス(IF_REQ_ADDRESS)を生成する。
命令フェッチ要求部2は、無効化されている(即ち、アイドル状態となっている)命令バッファ1を指示するためのバッファ識別情報(IF_REQ_ID)を命令バッファ制御部8から受け取る。命令フェッチ要求部2は、無効化されている命令バッファ1が存在する限り命令フェッチ要求を出すように構成されている。
そして、命令フェッチ要求部2は、生成された命令フェッチ要求アドレス(IF_REQ_ADDRESS)とともに、命令フェッチ要求信号(IF_REQ_VALID)、及び一つの無効化されている命令バッファ1を指示するためのバッファ識別情報(IF_REQ_ID)を出力する、等の処理を行う。
これにより、命令キャッシュ102に格納されている命令データの中からIF_REQ_ADDRESSに対応する命令列が読み出される。読み出された命令列は、IF_REQ_IDに対応する命令バッファ1に格納される。なお、図4では、省略されているが、IF_REQ_IDとIF_REQ_ADDRESSとを組み合わせた命令フェッチ要求の生成は、命令フェッチアドレス選択部9で行ってもよい。
分岐予測部3は、IF_REQ_ADDRESSに対応する命令列に分岐が成立する分岐命令が含まれているか否かを予測し、それが含まれていると予測した場合には、その分岐先の命令アドレスを予測し、その予測した分岐先命令アドレス(分岐予測先命令アドレス)と共に分岐予測先命令フェッチ要求信号を、命令フェッチアドレス選択部9へ出力する。また、その場合には、分岐予測部3は、IF_REQ_ADDRESSに対応する命令列に分岐成立が予測された命令が含まれることを示す情報、及びその予測された命令の命令列上の位置を示す情報を、命令バッファ制御部8へ出力する、等の処理を行う。
命令バッファ制御部8は、無効化された命令バッファ1のいずれかを選択し、その命令バッファを指示するためのスレッド識別情報(IF_REQ_ID)を命令フェッチ要求部2に供給する。さらに、命令バッファ制御部8は、ポインタによって継続してデコードされるべき複数の命令バッファ1を結合する。すなわち、命令バッファ制御部8は、IF_REQ_ADDRESSに対応する命令列が保持されている命令バッファ1のポインタ部1Bに、当該命令バッファ1に保持されている命令列の次に供給されるべき後続命令列が保持されている命令バッファ1を指示する情報を格納する。本実施形態では、後続命令列を格納する後続の命令バッファ1が確保されたときに、その後続の命令バッファ1の識別IDを先行する命令の命令バッファ1のポインタ部1Bに設定する。
命令供給制御部6は、次に命令デコード部7へ供給する命令列を保持している命令バッファ1の識別IDを示すカレントID(Current−ID,第一の識別子)と、カレントIDが示す命令バッファ1に保持されている命令列の次に供給する命令列を保持している命令バッファ1の識別IDを示すネクストID(Next−Seq−ID、第二の識別子)と、カレントIDが示す命令バッファ1に保持されている命令列のオフセット位置を示すNSIカウンタの値(NSI−Counter,オフセット値)を設定する、等の処理を行う。NSIカウンタは、命令バッファ1の各命令バッファに含まれる複数の命令列(例えば8命令)のうち、何番目の命令から命令を供給するかを示す。カレントIDによって命令バッファを選択し、NSIカウンタの示す命令から供給を行う、というようにして、命令デコード部7への命令供給を実現する。
<命令バッファの構成>
本処理装置においては、各命令バッファ1は個別に識別番号(識別情報)iを持つ。本実施形態では、識別番号i=0〜7までの合計8つの命令バッファがあるものとする(図2)。
図3に、命令バッファの構造を示す。各命令バッファ1は、命令フェッチ単位毎に命令語を保持するデータ部1Aと、当該命令バッファの次に供給使用される命令バッファ1の番号を指示するためのポインタ部1Bから構成される。
図3のように、データ部1Aは、複数の命令を保持するレジスタ列を備える。また、ポインタ部1Bは、シーケンシャル方向に続く命令バッファ1の番号を示すIBRi_SEQ_IBR_IDおよびその有効性フラグIBRi_SEQ_ID_Vと、分岐する場合
に、分岐先命令列を保持する命令バッファ1の番号を示すIBRi_TGT_IBR_IDおよびその有効性フラグIBRi_TGT_ID_Vという、2系統のレジスタを備える。
ここで、レジスタをIBRi_SEQ_IBR_ID等にて表した場合、先頭の”IBRi_”は、第i番目の命令バッファに所属するレジスタであることを示している。図3では、命令バッファ1を総称しているので、”IBRi_”が省略されている。以下、命令バッファ1を総称する場合、それぞれのレジスタの先頭の”IBRi_”を省略する。また、IBRi_SEQ_IBR_ID等は、レジスタを示すとともに、各レジスタに格納された信号の種類を表している。
さらに、命令バッファ1は、バリッドビット(IBRi_VALID)の保持部(レジスタ)と、命令バッファの保持する命令列のうち、使用される命令列の先頭アドレスを保持する先頭アドレス保持部(IAR)を備える。バリッドビットは、1に設定することで、当該命令バッファが使用中であることを示す。命令バッファ内のデータが不要となった際には、このバリッドビットを0に設定する。このことを命令バッファの解放または無効化と呼ぶ。
<命令フェッチアドレス選択部の機能概要>
図4に、命令フェッチアドレス選択部9の詳細を示す。命令フェッチアドレス選択部9は、複数のアドレスを保持する命令フェッチアドレス保持部11と所定条件により該命令フェッチアドレス保持部11からIF_REQ_ADDRESSを選択する選択部12を有する。
命令フェッチアドレス選択部9の命令フェッチアドレス保持部11では、以下の複数の命令フェッチ要求アドレスを保持するレジスタを持つ。
(1)シーケンシャル命令フェッチ要求用レジスタ:
シーケンシャル命令フェッチ要求のアドレスは、現在出力されたある命令フェッチ要求にシーケンシャルに続くアドレスである。そのアドレスは,出力された命令フェッチ要求のアドレス(IF_REQ_ADDRESS)に対して、該命令フェッチで取得され命令バッファ内に保持される命令列の合計命令長を加算したものとなる。
つまり、一命令を4バイトとして、命令バッファが8命令を格納する(32バイト)のであれば、次の命令アドレスは、IF_REQ_ADDRESS+32とする。
(2)分岐先命令フェッチ要求用レジスタ:
分岐先命令フェッチ要求のアドレスは、分岐予測部3を備える場合に生成される。分岐先命令フェッチ要求のアドレスは、現在出力されたある命令フェッチ要求で得られる命令列の中に、分岐する分岐命令が予測されときの、その予測分岐先アドレス(IF_TGT_ADDRESS)である。
(3)再命令フェッチ要求用レジスタ:
再命令フェッチ要求のアドレスは、分岐予測失敗、エラー処理などの理由により、あるスレッドの命令バッファがすべて無効になった場合に、新たに命令フェッチを開始するときの再命令フェッチアドレス(REIFCH_ADDRESS)である。ただし、割り込み、あるいは、トラップ等が発生した場合は、プログラムカウンタ122から、再命令フェッチ要求用レジスタに次にフェッチすべきアドレスが供給される。
これらのアドレスは、それぞれのレジスタに格納される。これらのレジスタは各々バリッドビットを備える。バリッドビットは、レジスタに保持されるアドレスの有効性を示すと同時に、要求の有効性を示す。
選択部12は、所定の条件(優先順位)をもって、上記(1)から(3)のレジスタの中から、ひとつのアドレスを選択する。
<命令フェッチの処理手順>
図4の命令フェッチアドレス保持部11において、IF_SEQ_ADDRESSおよびSEQ_PARENT_IDとあるのは、シーケンシャル命令フェッチ要求用レジスタ9Sである。また、IF_TGT_ADDRESSおよびTGT_PARENT_IDとあるのは、分岐命令フェッチ要求用レジスタ9Tである。
REIFCH_ADDRESSとあるのは、再命令フェッチ要求用のレジスタである。
これらのレジスタの中から、予め定められた優先順位をもってアドレスの選択を行う。予め定められた優先順位とは、優先度の高い順に、1.再命令フェッチアドレス(要求が出た時は全ての投機実行が無効となった状態)、2.予測分岐先アドレス(要求が出た時は投機的に出していたシーケンシャル命令フェッチが不要となった状態)、3.シーケンシャル命令フェッチアドレス、などが考えられる。命令フェッチ要求部2は、このように命令フェッチ選択部9で選択された命令フェッチ要求アドレスをキャッシュ制御ユニット4に送出する。また、命令フェッチ要求送出のバリッド信号をIF_REQ_VALIDとする。このとき、命令バッファ制御部8は、命令フェッチの度に、新たな命令フェッチデータを格納するための命令バッファを現在使用されていない(=バリッドが立っていない)命令バッファの中からひとつ選択する(IF_REQ_ID)。
そして、命令バッファ制御部8は、命令フェッチ要求送出時に、選択された命令バッファ1におけるポインタ部1Bのバリッドフラグをたてる。
さらに、命令フェッチ要求のアドレスをもって、分岐命令の検索を並行して行う。分岐予測部3については、例えば特開平9−218786のようなブランチヒストリが利用できる。
さらに、シーケンシャル用と分岐用の命令フェッチ要求保持レジスタ(図4のシーケンシャル命令フェッチ要求用レジスタ9S、分岐先命令フェッチ要求用レジスタ9T)は、該レジスタに保持される命令フェッチ要求の親にあたる命令フェッチのデータが格納される命令バッファ1の番号保持部(SEQ_PARENT_ID、TGT_PARENT_ID)を備える。親とはつまり、シーケンシャル命令フェッチ要求用レジスタ9Sであれば、合計命令長を足す元となるアドレスによる命令フェッチ要求である(格納内容は、親命令バッファ番号:SEQ_PARENT_ID)。また、分岐先命令フェッチ要求用レジスタ9Tであれば、分岐する分岐命令が予測された命令フェッチ要求のことである(格納内容は親命令バッファ番号:TGT_PARENT_ID)(図4参照)。
そして、命令バッファ1と次の命令バッファ1との関連付け(ポインタの設定)は、次の命令フェッチの際に行う。図4に示すように各々の命令フェッチ要求は、親の命令バッファ番号(SEQ_PARENT_ID、TGT_PARENT_ID)を持っている。そこで、命令バッファ制御部(ポインタ設定部に相当)8は、命令フェッチ要求が送出された際に、親の命令バッファ1内のポインタに対して、現在処理中の命令フェッチで使用する命令バッファ番号を設定する。
命令フェッチ要求がシーケンシャル方向のものであれば、命令バッファ制御部8は、親の命令バッファ(SEQ_PARENT_ID)のSEQ_IBR_IDに対して、現在処理中の命令バッファ番号(その時のIF_REQ_ID)を設定する。また、命令フェッチ要求が予測分岐先のものであれば、命令バッファ制御部8は、親の命令バッファ(TGT_PARENT_ID)のTGT_IBR_IDに対して処理中の命令バッファ番号(その時のIF_REQ_ID)を設定する。また、命令バッファ制御部8は、各々、ポインタが有効であることを示すフラグを設定する(図3のSEQ_IBR_V、TGT_IBR_V)。
図5は、シーケンシャル方向のポインタを設定する回路の例である。例えば、SEQ_PARENT_nがオンとなり、かつ、シーケンシャルの命令フェッチ要求であることが判明したときに、親の命令バッファ(SEQ_PARENT_ID_THn)のSEQ_IBR_IDに対して設定信号(SET_IBRn_SEQ_ID_POINTER)が発生する。そして、その設定信号によって、現在処理中の命令バッファ1を識別するIF_REQ_IDが、SEQ_IBR_IDに設定される。
図6は、分岐先方向のポインタを設定する回路の例である。分岐先の命令フェッチ要求が発生したときに、ポインタを設定する。例えば、TGT_PARENT_nがオンとなり、かつ、分岐先方向の命令フェッチ要求であることが判明したときに、親の命令バッファ(TGT_PARENT_ID_THn)のSEQ_IBR_IDに対して設定信号(SET_IBRn_TGT_ID_POINTER)が発生する。そして、その設定信号によって、現在処理中の命令バッファ1を識別するIF_REQ_IDが、TGT_IBR_IDに設定される。
これを続けていくことで、命令バッファのポインタチェーンが形成される。
例えば、図7に示すように、命令バッファ7→1→3→4→5とシーケンシャル方向のポインタチェーンを構成している場合、図8に示すようにSEQ_IBR_IDをたどって命令が供給される。
先ず、命令バッファ#7、即ちIBR7の命令列を供給した場合、当該IBR0のIBR0_SEQ_IBR_IDの値がIBR1であるので、次にIBR1の命令列を供給する。
当該IBR1のIBR1_SEQ_IBR_IDの値がIBR3であるので、次にIBR3の命令列を供給し、同様にIBR3のIBR3_SEQ_IBR_IDの値がIBR4であるので、IBR4の命令列を供給し、IBR4のIBR4_SEQ_IBR_IDの値がIBR5であるので、IBR5の命令列を供給する。
<ショートループの処理>
図9は、起点レジスタ10の構成を示す図である。起点レジスタ10は、起点のバッファ番号START_IBR_IDを保持するレジスタ、およびバリッドフラグSTART_IBR_ID_VALIDを保持するレジスタを有する。
図10は、命令バッファ制御部8における起点レジスタのバリッドフラグSTART_IBR_ID_VALIDを生成する回路である。この回路は、命令フェッチ要求が有効であり(IF_REQ_VALIDがオン)、かつ、再命令フェッチまたは分岐先フェッチがなされたときに、オンになる。一方、命令バッファ1に対するキャンセル信号が発せられると、オフになる。
図11は、命令バッファ制御部(起点登録部に相当)8における起点レジスタ10のバッファ番号を保持するレジスタSTART_IBR_IDにバッファ番号を設定する回路である。この回路は、起点レジスタ10のバリッドフラグが無効であり(START_IBR_ID_VALIDがオフ、つまりまだ有効な起点が設定されていない)、命令フェッチ要求が有効であり(IF_REQ_VALIDがオン)、かつ、再命令フェッチまたは分岐先フェッチがなされたときに、命令バッファ1の識別IDであるIF_REQ_IDを起点レジスタ10のSTART_IBR_IDに設定する。即ち、再命令フェッチや分岐先フェッチがなされたときは、このときにフェッチした命令列がループの起点となる可能性が高いので、命令バッファ制御部8は、この命令列を格納したバッファ番号を起点レジスタ10に登録しておく。
命令フェッチ要求部2から送出された命令フェッチ要求が、分岐予測部3のブランチヒストリユニットでなされた分岐予測による分岐先命令フェッチ要求の場合、あるいは、命令実行時に分岐予測が失敗していたことが分かって命令フェッチをやり直すための分岐先の再命令フェッチ要求であった場合を想定する。この場合には、その分岐先命令フェッチ要求あるいは再命令フェッチ要求によって確保された命令バッファの番号(つまり、IF_REQ_ID)を起点レジスタ(START_IBR_ID)に登録し、レジスタのバリッドをオンにする。
そして、ある命令バッファの保持する命令列の中に、分岐命令が存在したとする。該分岐命令の検出は、命令デコーダ7で行われてもよい。そして該分岐命令の分岐先アドレスと、起点レジスタ10の指す命令バッファの命令フェッチアドレス(つまり、命令バッファが保持する命令列の先頭アドレスIAR)が一致すれば、分岐命令が検出された該命令バッファのTGT_IBR_ID に起点レジスタ10の保持する値を設定することで、命令バッファのループが形成される。
また、分岐命令の検出は分岐予測によって行うこともできる。分岐予測部3は、ブランチ・ヒストリ・ユニットを有する。ここで、ブランチヒストリユニットについて簡単に説明する。ブランチ・ヒストリユニットは、分岐命令の存在とその分岐先アドレスを予測する。例えばその実装としては、次のようなものがある。処理装置により処理を行なっている際にある分岐命令を実行した結果、その分岐が成立することが判明した場合、次もその分岐命令は分岐すると考え、ブランチ・ヒストリに、その分岐命令自身のアドレス(以下、分岐命令アドレスという)と分岐先命令のアドレス(以下、分岐先アドレスという)とを対で登録する。このようにして、ブランチ・ヒストリには、分岐の成立した分岐命令についての上記対データを蓄積してゆく。つまり、ブランチ・ヒストリには、分岐すると予測された分岐命令のデータのみが登録されている。そして、ある分岐命令を主記憶装置から取り出して実行する際には、その実行に先立ってブランチ・ヒストリ・ユニットを索引し、ブランチ・ヒストリ・ユニットにその分岐命令のアドレスが登録されている場合には、その分岐命令アドレスと対になっている分岐先アドレスをブランチ・ヒストリ・ユニットから読み出す。そして、先行する命令の実行の終了を待つことなく、その分岐先アドレスに対応する命令を主記憶装置から取り出す。なお、その分岐先アドレスに対応する命令の写しがキャッシュメモリに保持されている場合には、その命令は、キャッシュメモリから取り出されて実行される。さらに、ブランチ・ヒストリでは、ある分岐命令の過去の複数回分の分岐結果(=分岐履歴)をもって、次に該分岐命令が現れたときに分岐するか否かを予測することで分岐予測の精度を向上させることもできる。分岐すると予測した場合には同様にブランチ・ヒストリに登録を行う。
つまり、分岐命令の実行以前に、ブランチ・ヒストリ・ユニットによって分岐が予測される場合(分岐命令アドレスに対応する分岐先アドレスがブランチ・ヒストリ・ユニットに登録されている場合)、予測された分岐先アドレスを用いて投機的に命令フェッチ(命令読出と同義;以下、読出のことをフェッチとして説明する場合がある)を行ない、分岐命令に続いて、読み出された分岐先命令を命令実行ステージに投入する。
図12は、命令バッファ制御部8による起点レジスタ登録等の処理のタイムチャートである。
ある命令フェッチ要求が、IF_REQ_ADDRESS=“A”、IF_REQ_ID=#0で送出されたとする。命令バッファ1の番号が#0のとき、この命令バッファ1をIBR0と表す。
次のマシンサイクルτでは、上記命令フェッチ要求が、番号#0の命令バッファ1(IBR0)を確保しつつ送出された、ということであるので、IBR0のバリッドフラグであるIBR0_VALIDをオンにする。さらに、IBR0の命令フェッチアドレスAをレジスタIAR0に記憶しておく。また、命令フェッチ要求が、基本的にシーケンシャル方向に命令語長単位進んだアドレス、即ちIF_REQ_ADDRESS=“A+32”で送出される。このとき確保された命令バッファ1の番号が#1であればIF_REQ_ID=#1となる。
一方、その命令フェッチアドレスAで分岐予測部3のブランチヒストリユニットを検索したところ、分岐する分岐命令が検出されると、この検出を示す信号BRA_VAL及び分岐先アドレスTGT_ADDRESS=“T”(話を簡単にするため、T は32バイト境界のアドレスとする)が、分岐命令から所定サイクルτ後、本例では2τ後に発行される。
命令フェッチ要求部2は、この分岐先アドレスTと起点レジスタ10のSTART_IBR_IDで示される命令バッファ1の命令フェッチアドレスIARxとを比較する。ここで分岐アドレスと起点の命令フェッチアドレスが一致(IARx=TGT_ADDRESS)し、かつ START_IBR_ID_VALID がオンであれば、分岐先の命令列が既に命令バッファ1に存在し、一致しないまたは START_IBR_ID_VALID がオフであれば分岐先の命令列が命令バッファ1に存在しない。
従って、後者であれば、分岐先の命令列を新たにフェッチし、さらに START_IBR_ID がオフであれば、この命令バッファ1を起点レジスタ10に登録する。図12の例では、“一致かつバリッドオン”が成立せず、番号#3の命令バッファ1を確保し、命令フェッチ要求部2は、IF_REQ_ADDRESS=“T”、IF_REQ_ID=“#3”で命令フェッチ要求を送出する。
そして、次のサイクルτでは、命令フェッチ要求が、IF_REQ_ADDRESS=“T+32”、IF_REQ_ID=“ #4”で送出される。また、命令フェッチ要求部2は、IBR0のポインタ部(IBR0_POINTER)1BのTGT_IBR_IDに、” #3”を登録すると共に、起点レジスタ10にループの起点(START_IBR_ID)として” #3”を登録する。このときSTART_IBR_IDも有効(オン)にする。
また、命令フェッチ要求部2は、この分岐先のIBR3_VALIDを設定し、IAR3にTを登録する一方、シーケンシャル方向の命令フェッチ要求IBR1_VALID及びIAR1を無効(キャンセル)にする。
さらに次のサイクルτでは、命令フェッチ要求がIF_REQ_ADDRESS=“T+64”、IF_REQ_ID=“ #5”で送出される。
この命令フェッチアドレスT+64で分岐予測部3のブランチヒストリユニットを検索したところ、分岐する分岐命令が検出され、この検出を示す信号BRA_VAL及び分岐先アドレスTGT_ADDRESS=“T”が、発行されたとする。
命令フェッチ要求部2は、この分岐先アドレスTと起点レジスタ10のSTART_IBR_IDで示される命令バッファ1の命令フェッチアドレスIARxとを比較する。この時点で起点レジスタ10に登録されているSTART_IBR_IDは、前述のとおり#3であり、この命令バッファ1の命令フェッチアドレスIAR3は”T”であり、分岐先アドレスTと一致する(IAR3=TGT_ADDRESS=T)。
従って、後続の命令列が既に命令バッファ1に存在しているので、命令フェッチ要求部2は、分岐命令を検出したIBR5におけるポインタ部1BのTGT_IBR_IDを起点レジスタ10のSTART_IBR_IDに基づいて更新すると共に、TGT_ID_Vを有効にし、SEQ_ID_Vを無効にする。
そして、命令バッファ#5、即ちIBR5の命令列を供給した場合、当該IBR5の有効となっているポインタIBR5_TGT_IBR_IDの値がIBR3であるので、次にIBR3の命令列を供給する。なお、図13では、TGT_ID_V又はSEQ_ID_Vが有効となっているレジスタTGT_IBR_ID又はSEQ_IBR_IDの値を示し、無効となっているレジスタの値を”−”とした。
当該IBR3のIBR3_SEQ_IBR_IDの値がIBR4であるので、次にIBR4の命令列を供給し、同様にIBR4のIBR4_SEQ_IBR_IDの値がIBR5であるので、IBR5の命令列を供給し、IBR5のIBR5_SEQ_IBR_IDの値がIBR3であるので、IBR3の命令列を供給し、図14のように命令バッファ#0→#3→#4→#5→#3→#4→#5→#3・・・・とショートループを構成する。
このように、起点レジスタ10で起点の情報START_IBR_IDを持つといった簡易な構成で、起点となる命令バッファを限定することなく命令バッファのショートループを設定することができる。
これにより、命令バッファの数に依らず、従来と殆ど変らない時間でループとなる命令の供給を実現できる。

Claims (16)

  1. 複数の命令バッファであって、それぞれの命令バッファは命令列とポインタを格納する、複数の命令バッファと、
    前記複数の命令バッファのうちのいずれかの命令バッファの識別情報を格納するための起点記憶部と、
    前記起点記憶部に命令バッファの識別情報が格納されていないときに、再命令フェッチまたは分岐先フェッチが行われると、フェッチされる命令列が格納される命令バッファの識別情報を前記起点記憶部に格納する起点登録部と、
    前記起点記憶部に命令バッファの識別情報が格納されているときに、所定命令が検出されると、前記所定命令により命令フェッチするアドレスと、前記起点記憶部に格納されている識別情報が指し示す命令バッファに格納されている命令列に対応する命令フェッチアドレスとを比較し、比較結果が一致であれば、前記所定命令を格納する命令バッファのポインタに、前記起点記憶部に格納されている識別情報を設定するポインタ設定部と、
    を備え処理装置。
  2. 前記所定命令は、分岐することが予測された分岐命令である請求項1に記載の処理装置。
  3. 分岐予測部を更に備え、
    前記所定命令は、前記分岐予測部において検出されるものである請求項1又は2に記載の処理装置。
  4. 前記所定命令は、実際に実行された分岐命令である請求項1に記載の処理装置。
  5. 前記命令バッファに格納された命令列のデコードを行う命令デコーダを更に備え、
    前記所定命令は、前記命令デコーダにおいて検出されものである請求項1に記載の処理装置。
  6. 前記ポインタ対応する命令列の次に読み出されるべき命令列が格納される他の命令バッファの識別情報が設定されることにより、対応する命令バッファと他の命令バッファ
    の接続関係を示すものである請求項1から5の何れか1項に記載の処理装置。
  7. 前記起点登録部は、前記所定命令により命令フェッチするアドレスと、前記起点記憶部に格納されている識別情報が指し示す命令バッファに格納されている命令列に対応する命令フェッチアドレスとの比較結果が不一致であるときに、当該所定命令により命令フェッチした命令列が格納される命令バッファの識別情報を前記起点記憶部に格納するものである請求項1からのいずれか1項に記載の処理装置。
  8. 前記所定命令により命令フェッチするアドレスは、前記所定命令である分岐命令の分岐先アドレスである請求項1から7の何れか1項に記載の処理装置。
  9. 複数の命令バッファであって、それぞれの命令バッファは命令列とポインタを格納する、複数の命令バッファと、
    前記複数の命令バッファのうちのいずれかの命令バッファの識別情報を格納するための起点記憶部と、
    命令バッファの識別情報を前記起点記憶部に格納する起点登録部と、
    命令バッファのポインタに設定を行うポインタ設定部とを備える処理装置による処理方法であって、
    前記起点登録部が、前記起点記憶部に命令バッファの識別情報が格納されていないときに、再命令フェッチまたは分岐先フェッチが行われると、フェッチされる命令列が格納される命令バッファの識別情報を前記起点記憶部に格納するステップと、
    定命令を検出するステップと、
    前記ポインタ設定部が、前記起点記憶部に命令バッファの識別情報が格納されているときに、所定命令が検出されると、前記所定命令により命令フェッチするアドレスと、前記起点記憶部に格納されている識別情報が指し示す命令バッファに格納されている命令列に対応する命令フェッチアドレスとを比較し、比較結果が一致であれば、前記所定命令を格納する命令バッファのポインタに、前記起点記憶部に格納されている識別情報を設定するステップと、
    を前記処理装置が行う処理方法。
  10. 前記所定命令は、分岐することが予測された分岐命令である請求項9記載の処理方法。
  11. 前記処理装置は分岐予測部を更に備えるものであり、
    所定命令を検出するステップは前記分岐予測部が行うものである請求項9又は10記載の処理方法。
  12. 前記所定命令、実際に実行された分岐命令である請求項9記載の処理方法。
  13. 前記処理装置は前記命令バッファに格納された命令列のデコードを行う命令デコーダを更に備えるものであり
    前記所定命令を検出するステップは前記命令デコーダが行うものである請求項9記載の処理方法。
  14. 前記ポインタは、対応する命令列の次に読み出されるべき命令列が格納される他の命令バッファの識別情報が設定されることにより、対応する命令バッファと他の命令バッファの接続関係を示すものである請求項9から13の何れか1項に記載の処理方法。
  15. 前記起点登録部が、所定命令により命令フェッチするアドレスと、前記起点記憶部に格納されている識別情報が指し示す命令バッファに格納されている命令列に対応する命令フェッチアドレスとの比較結果が不一致であるときに、当該所定命令によ命令フェッチし
    た命令列格納される命令バッファの識別情報を前記起点記憶部に格納するステップを更に有する請求項9から14の何れか1項に記載の処理方法。
  16. 前記所定命令によ命令フェッチするアドレスは、前記所定命令である分岐命令の分岐先アドレスである請求項9から15の何れか1項に記載の処理方法。
JP2009520201A 2007-06-20 2007-06-20 処理装置 Expired - Fee Related JP5099133B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2007/062454 WO2008155847A1 (ja) 2007-06-20 2007-06-20 処理装置

Publications (2)

Publication Number Publication Date
JPWO2008155847A1 JPWO2008155847A1 (ja) 2010-08-26
JP5099133B2 true JP5099133B2 (ja) 2012-12-12

Family

ID=40156013

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009520201A Expired - Fee Related JP5099133B2 (ja) 2007-06-20 2007-06-20 処理装置

Country Status (4)

Country Link
US (1) US20100106943A1 (ja)
EP (1) EP2169540A4 (ja)
JP (1) JP5099133B2 (ja)
WO (1) WO2008155847A1 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10318433B2 (en) * 2016-12-20 2019-06-11 Texas Instruments Incorporated Streaming engine with multi dimensional circular addressing selectable at each dimension

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3804941B2 (ja) * 2002-06-28 2006-08-02 富士通株式会社 命令フェッチ制御装置
WO2006112190A1 (ja) * 2005-04-08 2006-10-26 Matsushita Electric Industrial Co., Ltd. プロセッサ

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3203701B2 (ja) * 1990-11-01 2001-08-27 インターナショナル・ビジネス・マシーンズ・コーポレーション コードセグメントのリンク方法とそのシステム及びコードセグメントのダイナミックリンク方法
WO1993017385A1 (en) * 1992-02-27 1993-09-02 Intel Corporation Dynamic flow instruction cache memory
JP3683968B2 (ja) * 1996-02-09 2005-08-17 富士通株式会社 情報処理装置
KR100347865B1 (ko) * 1999-11-15 2002-08-09 삼성전자 주식회사 어드레스 트레이스를 이용한 분기 예측 방법

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3804941B2 (ja) * 2002-06-28 2006-08-02 富士通株式会社 命令フェッチ制御装置
WO2006112190A1 (ja) * 2005-04-08 2006-10-26 Matsushita Electric Industrial Co., Ltd. プロセッサ

Also Published As

Publication number Publication date
US20100106943A1 (en) 2010-04-29
EP2169540A1 (en) 2010-03-31
JPWO2008155847A1 (ja) 2010-08-26
EP2169540A4 (en) 2010-09-15
WO2008155847A1 (ja) 2008-12-24

Similar Documents

Publication Publication Date Title
JP3804941B2 (ja) 命令フェッチ制御装置
JP3542020B2 (ja) 複数予測分岐命令にわたる命令フェッチの位置合わせ命令キャッシュ処理を実行するプロセッサ装置およびプロセッサ制御方法
JP5865920B2 (ja) データ処理装置のトレース
JP5255367B2 (ja) 分岐先アドレス・キャッシュを備えたプロセッサおよびデータを処理する方法
CN108196884B (zh) 利用生成重命名的计算机信息处理器
JP3502592B2 (ja) 分岐予測装置
US7711934B2 (en) Processor core and method for managing branch misprediction in an out-of-order processor pipeline
KR101081674B1 (ko) 워킹 글로벌 히스토리 레지스터를 이용하기 위한 시스템 및 방법
JP2004038344A (ja) 命令フェッチ制御装置
JPH11510291A (ja) スーパースケーラープロセッサにおけるout−of−order実行のための統一化された機能オペレーションスケジューラ
US20200210191A1 (en) Exit history based branch prediction
KR101126001B1 (ko) 정보 처리 장치 및 분기 예측 방법
TW201407348A (zh) 微處理器的轉譯位址快取記憶體
JP4009248B2 (ja) 分岐予測装置および分岐予測方法
US11055101B2 (en) Processing apparatus and controlling method for processing apparatus
KR19990013425A (ko) 데이타 처리 시스템과, 데이타 처리 시스템의 데이타 포착 방법과, 프로그램 저장 장치
JP3683439B2 (ja) 分岐予測を抑止する情報処理装置および方法
US20100306513A1 (en) Processor Core and Method for Managing Program Counter Redirection in an Out-of-Order Processor Pipeline
US10929137B2 (en) Arithmetic processing device and control method for arithmetic processing device
JP2001236224A (ja) 分岐予測テーブル汚染の低減方法
JP5099133B2 (ja) 処理装置
JP2004038338A (ja) 分岐予測機構を有する情報処理装置
JP5696210B2 (ja) プロセッサ及びその命令処理方法
WO2007084202A2 (en) Processor core and method for managing branch misprediction in an out-of-order processor pipeline
JP4728877B2 (ja) マイクロプロセッサおよびパイプライン制御方法

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120612

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120813

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: 20120828

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120910

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

Free format text: PAYMENT UNTIL: 20151005

Year of fee payment: 3

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