JP3804941B2 - 命令フェッチ制御装置 - Google Patents
命令フェッチ制御装置 Download PDFInfo
- Publication number
- JP3804941B2 JP3804941B2 JP2002191432A JP2002191432A JP3804941B2 JP 3804941 B2 JP3804941 B2 JP 3804941B2 JP 2002191432 A JP2002191432 A JP 2002191432A JP 2002191432 A JP2002191432 A JP 2002191432A JP 3804941 B2 JP3804941 B2 JP 3804941B2
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- buffer
- loop
- sequence
- instruction buffer
- 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
Links
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, look ahead
- G06F9/3818—Decoding for concurrent execution
- G06F9/382—Pipelined decoding, e.g. using predecoding
-
- 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/3802—Instruction prefetching
-
- 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/3802—Instruction prefetching
- G06F9/3808—Instruction prefetching for instruction reuse, e.g. trace cache, branch target cache
- G06F9/381—Loop buffering
-
- 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/3802—Instruction prefetching
- G06F9/3814—Implementation provisions of instruction buffers, e.g. prefetch buffer; banks
Description
【発明の属する技術分野】
本発明は、情報処理装置、特に命令実行処理部へ命令供給するための装置に関する。
【0002】
【従来の技術】
パイプライン処理方式以降の高度な命令処理方式を採用した情報処理装置においては、一つの命令の実行の終了を待たずに、投機的に後続の命令の処理を行うことで性能の向上を図ってきた。もちろん、その命令実行に先立ち、命令供給(命令フェッチ)も投機的に行うことで性能向上を果たしてきた。
【0003】
例えば、分岐予測機構と密に関連付けられ、命令実行部と完全に分離された命令フェッチ部を構成することで、実行部へ必要充分な命令供給能力を確保し、命令フェッチ性能の高い性能を確保してきた。
【0004】
【発明が解決しようとする課題】
図12及び図13は、従来の問題点を説明する図である。
分岐予測動作は、命令フェッチ要求から幾ばくかの時間がかかるのが普通である。従って、分岐成立が予測された場合の分岐予測先命令フェッチ要求は、予測された元の要求に対して、(たとえば3τ(τはマシンサイクル)など)遅れて出されることになる。その様子を図12(a)に示す。
【0005】
つまり、従来の命令バッファの構成では、分岐成立予測が頻発すると分岐先を予測するタイムロスが見えてしまう可能性がある。特に、図12(b)のように数命令で1つのループ命令列を構成していて、何度も周回するショートループでは、特に、図13のように、そのロスがループの度に観測されてしまうため、性能へのインパクトが大きい。
【0006】
例えば、図12(b)の命令列(定数でメモリフィルする)の場合、1000バイト書き込むとすると250回ループするので、命令実行部がスーパスカラ方式を採用しており、この命令列を(4命令同時に)1τで処理可能だとすると、分岐予測の参照ペナルティが3τならば、ターゲット命令フェッチ待ちによって1ループ当たり、まるまる2τ損するから、命令実行部の処理能力があり、ショートループになっていなければ250τで、1000バイトの書き込みを終われるところ、ショートループになっているために750τかかってしまう。
【0007】
このような事態を回避するために、従来では、ソフトウェア(コンパイラ)がショートループを展開した状態の命令コードを予め準備しておき、繰り返し処理であっても分岐予測ロスを隠すようにしていた。しかしながら、これでは命令コードが肥大するデメリットがあるし、既に準備されているソフトウェアを再構築する手間もあった。
【0008】
本発明の課題は、ショートループを効率よく処理することのできる命令フェッチ制御装置を提供することである。
【0009】
【課題を解決するための手段】
命令フェッチ制御装置は、複数の命令バッファと、該命令バッファに対応し、命令バッファの接続関係を示すポインタ部とを有する命令バッファ手段と、命令フェッチ要求とは異なった命令バッファ間の接続関係を、命令バッファに格納される命令の種類に応じて確立させる接続関係確立手段とを備えることを特徴とする。
【0010】
命令フェッチ制御方法は、複数の命令バッファと、該命令バッファに対応し、命令バッファの接続関係を示すポインタ部とを設ける命令バッファステップと、命令フェッチ要求とは異なった命令バッファ間の接続関係を、命令バッファに格納される命令の種類に応じて確立させる接続関係確立ステップとを備えることを特徴とする。
【0011】
本発明によれば、ショートループのように、少数の命令を繰り返し多数回繰り返し実行する命令の場合、命令フェッチの度に分岐予測していたのでは、分岐予測のための時間がかかってしまい情報処理装置の性能が劣化してしまう。そこで、ショートループを形成するような分岐命令などを検出した場合、あるいは、複数ある命令バッファ内に、ある命令の論理的に後続となる命令であって、当該ある命令と同じアドレスの命令を発見したときは、複数の命令バッファ間でループ状の接続構造を構成し、命令バッファから直接命令供給し命令実行できるようにする。
【0012】
以上により、ショートループのような命令でも、繰り返し実行の度に命令フェッチ動作や分岐予測動作をする必要が無くなり、命令実行を高速に行うことができる。
【0013】
【発明の実施の形態】
図1は、本発明の実施形態で使用する命令バッファを概略説明する図である。同図において、命令バッファは、6個のバッファからなっているものとする。ここで、本実施形態で使用するバッファは、データを格納するバッファ部とあるバッファに格納されている命令の次に実行すべき命令がどのバッファに格納されているかを示すポインタ部とからなっている。
【0014】
このような構成においては、第1のバッファ部に格納されている特定の命令列に続く命令列を残りの5つのバッファの内のいずれか空いているバッファに格納し、第1のバッファ部に対応するポインタ部に、特定の命令列の次の命令列が格納されたバッファを示すIDを格納するようにする。
【0015】
すると、命令列をバッファから読み出す場合には、第1の命令を順次読み出し、特定の命令列の読み出しが終わったら、ポインタ部を参照して、該ポインタ部に格納されるIDで示されるバッファ部から命令列を読み出すようにする。また、ポインタ部には、バッファ部のどの位置から読み出すかを指定する命令列のバッファ内におけるアドレスを格納するようにしても良い。
【0016】
このように命令バッファを構成することにより、設けられたバッファ同士を柔軟に関連付けることができるので、命令列がどのバッファに格納されていようと、図1のように設けられた6本のバッファを効率よく利用して、命令の供給(命令フェッチ)を行うことができる。
【0017】
図2は、本発明の実施形態で用いる命令バッファを用いた本発明の実施形態の概念説明図である。
図2(a)では、ポインタによる関連づけ(指示先指定)は、当該命令バッファから見て、それより後に出された命令要求に向かってなされる。ところが、図2(b)〜(d)では、これを当該命令バッファの前であっても、論理的に後ろになる命令と一致する命令を格納する命令バッファがあれば、それに対してポインタ指示をする。すなわち命令バッファが環状につながった状態を生成する。
【0018】
このように構成することで、ループ中は命令フェッチ要求を出す必要が無くなり、常に命令バッファから命令を供給することができる。したがって、分岐予測のバブル損も無くなり、最良の供給速度を確保することができる。この様子を図3に示す。
【0019】
図3は、本発明の実施形態の効果を説明する図である。
図3に示されるように、命令バッファを環状につながった構成とすることで、命令バッファには、既に命令が格納されているので、新たに命令を読み込んだりする必要が無くなり、命令バッファから直接命令を実行することができるようになる。従って、命令の実行に当たって、すぐに命令供給をすることができるようになり、前述のショートループのときの欠点を解決することができる。すなわち、ショートループの実行の際に生じる分岐予測による遅延は、0τとなる。
【0020】
特に、命令バッファの接続先を、本来は先行している既存の命令バッファに設定するので、命令バッファの数次第では簡単・自明なショートループ命令列でなくとも効力を発揮することができる。
【0021】
また、ある種の分岐予測方式(特にグローバルヒストリ予測方式(ブランチヒストリよりも深い履歴を格納した命令分岐の予測方式であって、ショートループならば、複数回の繰り返し実行を履歴として持つことが可能))によれば、命令バッファなどにある命令フェッチ列の命令をデコードして分岐予測を行う。このような分岐予測方式において、ある時点でループから抜け出す状態が予測された場合、前述の環状構造を解除することで、分岐予測に従った命令フェッチ動作を実現できる。
【0022】
あるいは、ある種のプロセッサ仕様においては、マルチCPU構成において、他系CPUが自CPUの命令域を書き換えた場合に、その書き換え事象を有限時間などある一定の条件で反映しなければならない等の制約を課しているものがある。この場合、ある程度の時間ごとにコヒーレンス制御がなされている命令キャッシュをポーリングする等して書き換えられた命令域を取り込む等の制御をする必要がある。そのために、命令バッファで閉じてしまった環状構造を解除する方式を使用可能である。
【0023】
本実施形態では、各命令バッファに対応した命令アドレスを持っている場合について説明する。
図4は、本発明の実施形態が適用される情報処理装置の要部構成例である。
【0024】
再命令フェッチ要求、あるいは、要求アドレスが命令フェッチ要求部10に入力されると、命令フェッチ要求部からは、命令フェッチすべきアドレスや、命令フェッチの有効フラグ、命令フェッチIDなどが命令キャッシュ12、分岐予測部11、命令フェッチ制御部13に入力される。
【0025】
命令キャッシュは、指定されたアドレスの命令を命令バッファ14に入力する。分岐予測部11は、入力された命令アドレスに関して、分岐予測を行い、分岐予測の結果得られた分岐予測先アドレスなどを命令フェッチ要求部10にフィードバックする。また、分岐予測部11から命令フェッチ制御部13には、分岐予測をしたか否かを示す信号が入力される。命令フェッチ制御部13からは、命令供給制御部15に対し、命令バッファ14のいずれかから命令を出力すべきかを判定するための情報が送られる。
【0026】
分岐供給制御部15は与えられた情報に基づいて、命令バッファ14の何れかを選択して、命令デコード部16に命令を供給する。
回路を簡単にするために、接続先はIB#0(IB:Instruction Buffer)に限定する。例えば空いている命令バッファの内若い番号から使用する制御方式を採用しているのならば、ポインタ指示先をIB#0に限定しても、接続機会は多少減る程度で済み、それよりも回路を単純化できるメリットの方が大きい。
【0027】
命令フェッチ要求発行に、要求アドレスとIAR0(IB#0の先頭命令アドレス)の一致検出を行う。一致していなければ本手法による接続はしない。一致していた場合には本手法による接続が可能なので、状況に応じて接続するか否か決定可能となる。
【0028】
なお、実施方法によっては、命令バッファのアドレス範囲を見て、アドレス範囲内であるか否かの検出を行い接続の可能性を見ることも可能である。
実際に接続するか否かの判定に関する実施形態は後述する。
【0029】
たまたま前述のようにアドレス一致したからといって、分岐条件が次回は変わるかもしれず、常に接続すれば性能向上というものではない。特に、ショートループになり得る場合を検出して接続実行したいのだから、その特徴を見いだすことは重要である。
【0030】
IBM S/390命令セットで見られるBCT(Branch on count)命令(高確率で分岐すると予想される命令)は、主にループ制御のために使用される分岐命令である。こういったループ制御のために定義された命令があると、本手法にちょうど適応させやすい。例えば、SPAP.C V9命令セットにおいて無条件に分岐する命令としては、baなどがある。このように、実際の情報処理装置で使用する命令セットの中から、無条件で分岐する命令、あるいは、分岐する確率の高い命令を予め調べておき、これらの命令を検出した場合、本実施形態の利用をするように構成すればよい。
【0031】
あるいは、ブランチヒストリ登録時連動型のグローバルヒストリがある場合、該グローバルヒストリの対応するエントリがループ命令の特徴を見いだすことを、たとえば、Taken連続数から判断できる。
【0032】
あるいは、分岐予測成功率は通常95%に満たないのだから、単純に、再命令フェッチが発生せず何十回と分岐予測が当たり続けている場合も、ループ事象が発生していると判断できる。
【0033】
分岐予測機構については、例えば特開平9−218786のようなブランチヒストリを利用し、BCT命令の完了時や前述グローバルヒストリによる判定結果などにより、ループ命令フラグをブランチヒストリに登録しておき、ブランチヒストリの参照時に対応するエントリが読み出される場合に、このフラグを一緒に読み出せるようにしておく。
【0034】
分岐予測して、このフラグが一緒に読み出された場合には、ショートループ接続を試みれば良い。
次に、前述の命令フェッチ要求部10の主要回路について、図4及び図5を用いて説明する。
【0035】
図5は、命令フェッチ要求部10に含まれる、IF−REQ−IDを生成する回路の構成例を示した図である。
同図に示した回路は、各命令バッファのポインタ部に保持されている情報に基づいて、一つの無効化されている命令バッファ1を検索し、その検索した一つの命令バッファの識別IDを、IF−REQ−IDとして出力する回路である。
【0036】
尚、詳細は後述するが、各命令バッファのポインタ部に保持されている情報には、当該命令バッファ1が有効であるか無効であるかを示す有効フラグ(Valid)が保持されている。同図では、各命令バッファのポインタ部から読み出された有効フラグを、IBi_VALID(i=0〜5)として示している。すなわち、IBi_VALID(i=0〜5)は、命令バッファ#i(i=0〜5)の有効フラグを示している。
【0037】
また、同図の回路では、各命令バッファ1に優先度が設けられるようにして、有効フラグが無効になっている命令バッファの中から優先度の最も高い命令バッファ1の識別IDをIF−REQ−IDとして出力するように構成されている。
【0038】
すなわち、このようなIF−REQ−IDを出力するため、同図の回路は次のように動作する。
エンコーダ回路(ENC)113は、インバータ回路111−0からの入力が”H”であってかつそれ以外の入力が”L”のとき、すなわち、少なくとも命令バッファ#0の有効フラグが無効であるときに(IB0_VALID=”L”)、命令バッファ#0の識別IDである0を、IF−REQ−IDとして出力する。ここで、インバータ回路111−0の出力信号は、IF−REQ−ID−EQ−0信号でもある。
【0039】
尚、本実施形態において、”H”は、論理”H”を示し、”L”は、論理”L”を示す。
又は、エンコーダ回路113は、アンド回路112−1からの入力が”H”であってかつそれ以外の入力が”L”のとき、すなわち、少なくとも命令バッファ#0の有効フラグが有効であってかつ命令バッファ#1の有効フラグが無効であるときに(IB1_VALID=”L”)、命令バッファ#1の識別IDである1を、IF−REQ−IDとして出力する。ここで、アンド回路112−1の出力信号は、IF−REQ−ID−EQ−1信号でもある。
【0040】
又は、アンド回路112−2からの入力が”H”であってかつそれ以外の入力が”L”のとき、すなわち、少なくとも命令バッファ#0及び#1の有効フラグが有効であってかつ命令バッファ#2の有効フラグが無効であるときに(IB2_VALID=”L”)、命令バッファ#2の識別IDである2を、IF−REQ−IDとして出力する。ここで、アンド回路112−2の出力信号は、IF−REQ−ID−EQ−2信号でもある。
【0041】
又は、アンド回路112−3からの入力が”H”であってかつそれ以外の入力が”L”のとき、すなわち、少なくとも命令バッファ#0〜#2の有効フラグが有効であってかつ命令バッファ#3の有効フラグが無効であるときに(IB3_VALID=”L”)、命令バッファ#3の識別IDである3を、IF−REQ−IDとして出力する。ここで、アンド回路112−3の出力信号は、IF−REQ−ID−EQ−3信号でもある。
【0042】
又は、アンド回路112−4からの入力が”H”であってかつそれ以外の入力が”L”のとき、すなわち、少なくとも命令バッファ#0〜#3の有効フラグが有効であってかつ命令バッファ#4の有効フラグが無効であるときに(IB4_VALID=”L”)、命令バッファ#4の識別IDである4を、IF−REQ−IDとして出力する。ここで、アンド回路112−4の出力信号は、IF−REQ−ID−EQ−4信号でもある。
【0043】
又は、アンド回路112−5からの入力が”H”であってかつそれ以外の入力が”L”のとき、すなわち、少なくとも命令バッファ#0〜#4の有効フラグが有効であってかつ命令バッファ1−5の有効フラグが無効であるときに(IB5_VALID=”L”)、命令バッファ#5の識別IDである5を、IF−REQ−IDとして出力する。ここで、アンド回路112−5の出力信号は、IF−REQ−ID−EQ−5信号でもある。
【0044】
又は、全ての命令バッファの有効フラグが有効であったときには(IBi_VALID(i=0〜5)=”H”)、AND回路112−6の出力が”H”となる(I−BUFFER−FULL)。この場合、エンコーダ回路113は、全ての入力が”L”となり、IF−REQ−IDを出力しない。
【0045】
以上のような構成により、命令バッファ#0,#1,#2,#3,#4,#5の順に、高い優先度が設けられ、有効フラグが無効の命令バッファ1の中から優先度の最も高い命令バッファの識別IDが、IF−REQ−IDとして出力されるようになる。
【0046】
続いて、図6は、命令フェッチ要求部10に含まれる、命令フェッチ要求アドレス(IF−EAG)を生成する回路の構成例を示した図である。
同図に示した回路は、再命令フェッチ要求が出されたときは、再命令フェッチ要求アドレスを出力し、再命令フェッチ要求ではなく分岐予測先命令フェッチ要求が出されたときは、分岐予測先命令フェッチ要求アドレスを出力し、又は再命令フェッチ要求及び分岐予測先命令フェッチ要求の何れも出されないときは(後続命令フェッチ要求が出されたときは)、32バイトを加算することで生成される後続命令フェッチ要求アドレスを出力するように構成される。
【0047】
このように、再命令フェッチ要求、分岐予測先命令フェッチ要求、後続命令フェッチ要求の順に、高い優先度が設けられるように構成され、その優先度に従って、対応する命令フェッチ要求アドレス(IF−EAG)が出力される。
【0048】
具体的には、再命令フェッチ要求が出された場合、すなわち、再命令フェッチ要求信号及び再命令フェッチ要求アドレスが入力された場合、再命令フェッチ要求信号(”H”)は、有効フラグVとしてレジスタ121−1に格納されると共に、アンド回路126及びインバータ回路122へ入力される。尚、この再命令フェッチ要求信号は、同図のREIFCH−REQ−GO信号でもある。また、再命令フェッチ要求アドレスは、REIFCH−IARとしてレジスタ121−1に格納されると共に、アンド回路26へ入力される。一方、インバータ回路122の出力は、再命令フェッチ要求信号”H”が反転されて”L”となるため、その出力に接続されるアンド回路124及び125の出力は”L”とって、その出力に接続されるアンド回路127及び128の出力も”L”となる。従って、オア回路129の出力であるIF−EAGは、アンド回路126の出力、すなわちREIFCH−IARになる。
【0049】
また、再命令フェッチ要求が出されずに分岐予測先命令フェッチ要求が出された場合、すなわち、分岐予測先命令フェッチ要求信号及び分岐予測先命令フェッチ要求アドレスが入力された場合、分岐予測先命令フェッチ要求信号(”H”)は、有効フラグV(TARGET−VALID)としてレジスタ121−2(第ニのレジスタ)に格納されると共に、アンド回路124及びインバータ回路123へ入力される。また、分岐予測先命令フェッチ要求アドレスは、TARGET−IARとしてレジスタ121−2に格納されると共に、アンド回路127へ入力される。一方、再命令フェッチ要求は行われていないので、アンド回路126の出力は”L”となり、またインバータ回路122の出力は”H”となってアンド回路124の出力は”H”となる。尚、このアンド回路124の出力信号は、同図のTARGET−REQ−GO信号でもある。また、インバータ回路123の出力は、分岐予測先命令フェッチ要求信号”H”が反転されて”L”となり、その出力に接続されるAND回路125の出力は”L”となって、その出力に接続されるAND回路128の出力も”L”になる。従って、オア回路129の出力であるIF−EAGは、アンド回路127の出力、すなわちTAGET−IARになる。
【0050】
また、レジスタ121−2には、IM−IDがORG−ID(TARGET−ORG−ID,分岐予測先命令フェッチ要求元情報)として格納される。尚、IM−IDは、分岐予測が行われたときのIF−REQ−IDであり、その分岐予測が前述の5つのステージ中のIMステージで行われたことを示している。これにより、分岐予測先命令フェッチ要求が出されたときに、その分岐予測先命令フェッチ要求元に対応する命令バッファの識別IDを保持することが可能になり、分岐予測先命令フェッチ要求に対応する命令バッファの識別IDとの関連付けが可能になる。
【0051】
また、再命令フェッチ要求及び分岐予測先命令フェッチ要求が出されない場合(後続命令フェッチ要求が出された場合)、命令フェッチ要求信号(IF−REQ−VALID=”H”)は、有効フラグV(SEQUENTIAL−VALID)としてレジスタ121−3(第一のレジスタ)に格納されると共に、アンド回路125へ入力される。また、加算器130によりIF−EAGに32バイトを加算して生成された後続命令フェッチ要求アドレスがSEQUENTIAL−IARとしてレジスタ121−3に格納されると共に、アンド回路128へ入力される。一方、再命令フェッチ要求及び分岐予測先命令フェッチ要求は行われていないので、REIFCH−REQ−GO及びTARGET−REQ−GOは”L”となり、アンド回路126及び127の出力は”L”となる。また、インバータ回路122及び123の出力は”H”となり、アンド回路125の出力は”H”となってアンド回路128へ入力される。従って、オア回路129の出力であるIF−EAGは、アンド回路128の出力、すなわちSEQUENTIAL−IARになる。尚、アンド回路125の出力信号は、同図のSEQUENTIAL−REQ−GO信号でもある。
【0052】
また、レジスタ121−3には、IF−REQ−IDがORG−ID(SEQUENTIAL−ORG−ID,後続命令フェッチ要求元情報)として格納される。これにより、後続命令フェッチ要求が出されたときに、その後続命令フェッチ要求元に対応する命令バッファの識別IDが保持され、後続命令フェッチ要求に対応する命令バッファの識別IDとの関連付けが可能になる。
【0053】
尚、レジスタ121−1にIF−REQ−IDが格納されないのは、再命令フェッチ要求が出された場合には、各命令バッファのデータ部の有効フラグが全て無効にされて命令バッファ#0から順に使用されるようになり、再命令フェッチ要求元に対応する命令バッファの識別IDを保持する必要がないからである。
【0054】
以上のような構成により、各命令フェッチ要求に対応した命令フェッチ要求アドレスが出力されるようになり、また、分岐予測先命令フェッチ要求元及び後続命令フェッチ要求元に対応する命令バッファの識別ID等が保持されるようになる。
【0055】
次に、命令バッファのポインタ部に保持される情報について説明する。尚、この情報は、命令フェッチ制御部13により格納(設定)されるものである。
図7は、命令バッファのポインタ部に保持される情報の一例を示した図である。
【0056】
同図に示したように、ポインタ部には、有効フラグ(Valid)、命令フェッチアドレス(IAR)、分岐成立予測フラグ(Predicted)、分岐成立予測命令オフセット(Pred−Offset)、後続命令バッファ識別子(Next−ID,第一の指示情報)、Next−ID指示有効フラグ(Next−Valid)、分岐予測先命令バッファ識別子(Target−ID,第二の指示情報)、及びTarget−ID指示有効フラグ(Target−Valid)等の情報が保持される。
【0057】
有効フラグは、前述した通り、当該命令バッファが有効であるか無効であるかを示すフラグである。
命令フェッチアドレス(IAR)は、当該命令バッファのデータ部に格納された命令列に対応する命令フェッチアドレス(IF−EAG)である。
【0058】
これらの有効フラグ及び命令フェッチアドレスは、命令フェッチ要求が出されて、IF−REQ−IDに対応する命令バッファ1に、IF−EAGに対応する命令列が格納されたときに、そのポインタ部に設定されるものである。
【0059】
分岐成立予測フラグは、当該命令バッファ内に格納されている命令列に分岐成立が予測された命令が含まれているか否かを示すフラグである。
分岐成立予測命令オフセットは、当該命令バッファに保持されている命令列に分岐成立が予測された命令が含まれていた場合の、その予測された命令の命令列上の位置を示すものである。このように、分岐成立予測命令オフセットを保持させることにより、命令発行時に分岐成立が予測されている命令位置の判定が容易になる。
【0060】
これら分岐成立予測フラグ及び分岐成立予測命令オフセットは、前述の分岐予測部3から得られる情報に基づいて設定されるものである。
後続命令バッファ識別子は、当該命令バッファに保持されている命令列の次に供給する後続の命令列が保持されている命令バッファの識別子を指示するものであり、当該命令バッファ1に対応する後続命令フェッチ要求が出されたときに設定される。
【0061】
Next−ID指示有効フラグは、後続命令バッファ識別子が有効であるか否かを示すフラグであり、後続命令バッファ識別子が設定されるときに、有効を示すフラグが設定される。
【0062】
分岐予測先命令バッファ識別子は、当該命令バッファに保持されている命令列の次に供給する分岐予測先の命令列が保持されている命令バッファの識別子を指示するものであり、当該命令バッファに対応する分岐予測先命令フェッチ要求が出されたときに設定される。
【0063】
Target−ID指示有効フラグは、分岐予測先命令バッファ識別子が有効であるか否かを示すフラグであり、分岐予測先命令バッファ識別子が設定されるときに、有効を示すフラグが設定される。
【0064】
尚、同図では、ポインタ部にこれらの情報が保持される構成を示しているが、ポインタ部に保持される情報はこれらに限定されるものではなく、少なくとも、後続命令バッファ識別子、Next−ID指示有効フラグ、分岐予測先命令バッファ識別子、及びTarget−ID指示有効フラグが、ポインタ部に保持される構成であれば良い。
【0065】
図8は、ループ接続を試みる条件生成回路の構成例を示す図である。
なお、同図の回路は、図4の命令フェッチ制御部13に含まれるべきものである。
【0066】
まず、IMサイクルでブランチヒストリにヒットし(IM BRHIS HIT)、かつ、IMサイクルでブランチヒストリにループが発見された(IM BRHIS LOOP INST)場合には、フリップフロップ20をセットし、ループの接続を指示する信号(LOOP CONNECT GO)が出力される。ブランチヒストリにおいてループを発見する方法は、ループを形成すると考えられる命令の検出や、ブランチヒストリ内に同じ命令を繰り返し実行している部分を検出することによって行う。
【0067】
また、同図の回路では、再命令フェッチ要求が入力された場合や、命令フェッチ要求が有効(IF REQ VALID)であり、かつ、接続先の命令の取得要求を始めるべき旨の信号(TARGET REQ GO)であると、フリップフロップ20をリセットして、ループの接続を指示する信号(LOOP CONNECT GO)の信号をリセットする。
【0068】
接続に成功した場合、命令バッファは何度も繰り返し使われることになるので、接続が解除する必要がない限りは、命令発行後(命令バッファからの必要な命令全てを供給後)の無効化(解放)をしないようにする。
【0069】
図9は、ループ接続を考慮した命令バッファ有効フラグを設定する回路例を示す図である。なお、同図の回路は、図4の命令フェッチ制御部に設けられるべきものである。
【0070】
同図においては、命令フェッチ要求が有効(IF REQ VALID)であり、かつ、命令フェッチ要求先のバッファ番号がxに等しいことを示す信号(IF REQ ID EQ x)が入力されるとフリップフロップ22をセットして、x番の命令バッファが有効であるフラグ(IBx VALID)が設定される。同図の回路は、命令バッファの個数分設けられるものであって、x番の値が命令バッファをそれぞれ区別する。
【0071】
再命令フェッチ要求、あるいは、x番の命令バッファの命令フェッチのキャンセル、あるいは、x番の命令フェッチが終了し(RELEASE IF ID x)、かつ、ループが接続中である(LOOP CONNECTING)場合には、フリップフロップ22をリセットして、x番の命令バッファの有効フラグをリセットする。
【0072】
また、分岐予測の遅延による先行投機フェッチのキャンセルなど、命令投入以外の理由による部分キャンセルが発生しうる場合、せっかくできあがった環状構造がこれらのキャンセルによって分断され、命令供給がハングアップしてしまう危険性がある。特に、接続が、このキャンセルされてしまうものに対して行われることも原理的にはあり得るので考慮が必要である。対策としては、前記と同様に、このケースについてもキャンセル動作を抑制してしまうことがある。
【0073】
もう一つの対策として、このケースのキャンセルを見越し、これに対して予め接続しない(接続対象から外す)ようにしてしまうことができる。本実施形態の場合、接続可能タイミングを分岐予測先(ターゲット)フェッチ要求時に限定すると、分岐予測待ちによる投機フェッチはキャンセル済みになっているので都合が良い。
【0074】
図10は、ループ接続を考慮した分岐予測先識別子設定回路の回路例を示した図である。
同図は、図4の命令フェッチ制御部13に設けられるべき回路である。また、同回路は、命令バッファの数だけ設けられ、それぞれは、各命令バッファに対応する。信号の名前に付くxは、各命令バッファを区別するものである。
【0075】
同図において、接続先(分岐予測先)要求が行われ(TARGET REQ GO)、命令フェッチ要求が有効で(IF REQ VALID)、かつ、分岐予測元の命令バッファばx番(TARGET ORG ID EQ x)である場合には、フリップフロップ24をセットし、x番の命令バッファが有効である(x Target Valid)信号を出す。また、再命令フェッチ要求や、x番の命令バッファの命令要求のキャンセル(CANCEL IF ID x)、あるいは、x番の命令バッファの命令の実行終了(RELEASE IF ID x)が入力されると、フリップフロップ24はリセットされ、x Target Validがリセットされる。
【0076】
命令フェッチ要求のアドレス(IF EAG)と、0番の命令バッファのアドレス(IB0 IAR)が等しく、ループを接続すべき指示(LOOP CONNECT GO)が合った場合には、フリップフロップ26には、0の値がセットされ、x番の命令バッファの接続先命令バッファとして、0番の命令バッファが指定される(x target ID=0)。しかし、上記の条件がそろわない場合には、命令フェッチ要求によって指示される命令バッファ番号(IF REQ ID)がフリップフロップ26に入力され、x target IDとして命令フェッチ要求によって指示される命令バッファ番号が出力される。ただし、これは、x Target Validがセットされている場合に限る。
【0077】
また、IF EAGとIB0 IARが等しく、ループ生成指示(LOOP CONNECT GO)がある場合であって、更に、接続先命令要求がなされ(TARGET REQ GO)、かつ、命令フェッチ要求が有効(IF REQ VALID)である場合には、ループの接続が成功した旨の信号(SUCCESS LOOP CONNECT)が出力されると共に、この信号がフリップフロップ28に入力され、ループが接続されている状態であることを示す信号(LOOP CONNECTING)が出力される。しかし、再命令フェッチ要求やループ解除成功の信号が入力された場合には、フリップフロップ28はリセットされ、ループの接続状態が終わったことを示すために、LOOP CONNECTINGがリセットされる。
【0078】
分岐予測先命令フェッチを行おうとしている元の命令バッファの識別子がpであり、ここで発行される命令フェッチ要求で確保される命令バッファの識別子(IF REQ ID)がqであったとする。通常はIB#pの論理的後続がIB#qになるようにポインタ設定をするが、ここで、IB#pの論理的後続がIB#0になるように設定してしまう。例えば、この場合、分岐予測先命令フェッチに対応するのだから、分岐予測先命令バッファの識別子(p TARGET ID)が0になるようにすれば良い。
【0079】
なお、同図では、ループを形成する場合の接続先を0番の命令バッファとしていたが、これは、図示する回路を簡単化するためであって、実際には、任意の命令バッファ同士を接続して、ループを形成しても良い。
【0080】
ここまでで述べてきた接続状態、すなわち命令バッファで閉じてしまった環状構造を、解除する方法を述べる。
前述の実施形態より、p→qとなるはずの関係をp→0にしており、かつIB#qに対応する命令フェッチ要求は出している(抑制やキャンセルをしていない)。したがって、p→qの関係に戻してループ接続を解き放てば(同時に、抑制していたキャンセルの抑制も解除)、通常通りの動作に戻る。
【0081】
図11は、ループ解除のための回路例を示す図である。
同図は、図4の命令フェッチ制御部に設けられるべき回路であり、また、命令バッファの数だけ設けられるものである。
【0082】
同図のSUCCESS LOOP RELEASE信号は、図10のループ解除成功を示す信号と同じものである。
フリップフロップ30は、再命令フェッチ要求あるいは、SUCCESS LOOP RELEASE信号が入力されるとリセットされる。また、IF EAGとIB0 IARが等しく、かつ、ループを形成すべき指示信号(LOOP CONNECT GO)がある場合であり、かつ、分岐先命令フェッチ要求の実行指示信号(TARGET REQ GO)と命令フェッチ要求が有効(IF REQ VALID)である場合には、SUCCESS LOOP CONNECT信号を出力すると共に、フリップフロップ30をセットして、LOOP CONNECTING信号を出力させる。
【0083】
また、命令フェッチする命令バッファの番号(IF REQ ID)は、フリップフロップ32に入力され、LOOP CONNECTINGが出力されている間は、ループ形成に必要な接続先命令バッファIDを維持させる(Retain target ID)。また、LOOP CONNECTINGが出力され、Retain target IDがフリップフロップ34に入力され、ループ解除要求が無く、x番の接続先命令バッファが有効(x Target Valid)の場合には、Retain target IDの命令バッファの番号がx target IDとして出力される。
【0084】
LOOP CONNECTINGが論理値偽であり、IF EAGとIB0 IARと等しくないか、LOOP CONNECT GOが論理値偽の場合には、IF REQ IDの値がx target IDとして出力される。これは、命令フェッチ要求が通常のように入力された場合には、命令フェッチ要求に従って、命令フェッチをすることを意味する。
【0085】
まら、ループ解除要求がなく、x Target Validが論理値真の場合には、フリップフロップ36がセットされ、ループの解除途中である旨の信号(Loop Release Pending)が出力され、再命令フェッチ要求あるいは、SUCCESS LOOP RELEASEが入力された場合には、Loop Release Pendingがリセットされる。また、Loop Release Pendingと現在の命令バッファの番号がxに等しい(Current ID eq x)場合には、SUCCESS LOOP RELEASEが出力され、ループ解除が成功したことが出力される。
【0086】
(付記1)複数の命令バッファと、該命令バッファに対応し、命令バッファの接続関係を示すポインタ部とを有する命令バッファ手段と、
命令フェッチ要求とは異なった命令バッファ間の接続関係を、確立させる接続関係確立手段と、
を備えることを特徴とする命令フェッチ制御装置。
【0087】
(付記2)ある命令バッファ内の命令に対し論理的に後続となる命令アドレスが、有効な命令バッファ内のアドレス範囲内にある場合、該有効な命令バッファの該当するアドレスを該ある命令バッファの該命令の接続先とすることを特徴とする付記1に記載の命令フェッチ制御装置。
【0088】
(付記3)ある命令バッファ内の命令に対し論理的に後続となる命令アドレスが、有効な複数の命令バッファのいずれかの先頭命令アドレスに一致した場合に、該先頭命令アドレスを該ある命令バッファの該命令の接続先とすることを特徴とする付記1に記載の命令フェッチ制御装置。
【0089】
(付記4)命令バッファ内に、分岐命令の存在が判明あるいは予想された場合、既に命令を格納している有効な複数の命令バッファの中の分岐先に対応する命令列に対して、分岐元命令から該分岐先命令に接続関係を付けることを特徴とする付記1に記載の命令フェッチ制御装置。
【0090】
(付記5)前記命令フェッチ要求とは異なった命令バッファ間の接続関係を確立させる命令は、分岐命令あるいは分岐の存在が予想される場合であることを特徴とする付記1に記載の命令フェッチ制御装置。
【0091】
(付記6)前記分岐命令の内、無条件分岐あるいは高確率で分岐すると予想される分岐命令に限って、前記命令フェッチ要求とは異なった命令バッファ間の接続関係を確立させることを特徴とする付記5に記載の命令フェッチ制御装置。
【0092】
(付記7)前記命令フェッチ要求とは異なった命令バッファ間の接続関係を確立させる前記命令は、分岐予測機構から、命令実行のループを検出することにより決定することを特徴とする付記1に記載の命令フェッチ制御装置。
【0093】
(付記8)前記命令フェッチと異なる接続関係が成り立った命令バッファ間の関係を解除する手段を更に備えたことを特徴とする付記1に記載の命令フェッチ制御装置。
【0094】
(付記9)複数の命令バッファと、該命令バッファに対応し、命令バッファの接続関係を示すポインタ部とを設ける命令バッファステップと、
命令フェッチ要求とは異なった命令バッファ間の接続関係を、確立させる接続関係確立ステップと、
を備えることを特徴とする命令フェッチ制御方法。
【0095】
(付記10)ある命令バッファ内の命令に対し論理的に後続となる命令アドレスが、有効な命令バッファ内のアドレス範囲内にある場合、該有効な命令バッファの該当するアドレスを該ある命令バッファの該命令の接続先とすることを特徴とする付記9に記載の命令フェッチ制御方法。
【0096】
(付記11)ある命令バッファ内の命令に対し論理的に後続となる命令アドレスが、有効な複数の命令バッファのいずれかの先頭命令アドレスに一致した場合に、該先頭命令アドレスを該ある命令バッファの該命令の接続先とすることを特徴とする付記9に記載の命令フェッチ制御方法。
【0097】
(付記12)命令バッファ内に、分岐命令の存在が判明あるいは予想された場合、既に命令を格納している有効な複数の命令バッファの中の分岐先に対応する命令列に対して、分岐元命令から該分岐先命令に接続関係を付けることを特徴とする付記9に記載の命令フェッチ制御方法。
【0098】
(付記13)前記命令フェッチ要求とは異なった命令バッファ間の接続関係を確立させる命令は、分岐命令あるいは分岐の存在が予想される場合であることを特徴とする付記9に記載の命令フェッチ制御方法。
【0099】
(付記14)前記分岐命令の内、無条件分岐あるいは高確率で分岐すると予想される分岐命令に限って、前記命令フェッチ要求とは異なった命令バッファ間の接続関係を確立させることを特徴とする付記13に記載の命令フェッチ制御方法。
【0100】
(付記15)前記命令フェッチ要求とは異なった命令バッファ間の接続関係を確立させる前記命令は、分岐予測機構から、命令実行のループを検出することにより決定することを特徴とする付記9に記載の命令フェッチ制御方法。
【0101】
(付記16)前記命令フェッチと異なる接続関係が成り立った命令バッファ間の関係を解除するステップを更に備えたことを特徴とする付記9に記載の命令フェッチ制御方法。
【0102】
【発明の効果】
以上にのべたように、本発明は、命令バッファ内に格納されている命令間でループするとき、繰り返し実行の度に分岐予測にようする時間がないので、特にショートループをなすケースで顕著に、情報処理装置の性能向上に大きく寄与する。
【図面の簡単な説明】
【図1】本発明の実施形態で使用する命令バッファを概略説明する図である。
【図2】本発明の実施形態で用いる命令バッファを用いた本発明の実施形態の概念説明図である。
【図3】本発明の実施形態の効果を説明する図である。
【図4】本発明の実施形態が適用される情報処理装置の要部構成例である。
【図5】命令フェッチ要求部10に含まれる、IF−REQ−IDを生成する回路の構成例を示した図である。
【図6】命令フェッチ要求部10に含まれる、命令フェッチ要求アドレス(IF−EAG)を生成する回路の構成例を示した図である。
【図7】命令バッファのポインタ部に保持される情報の一例を示した図である。
【図8】ループ接続を試みる条件生成回路の構成例を示す図である。
【図9】ループ接続を考慮した命令バッファ有効フラグを設定する回路例を示す図である。
【図10】ループ接続を考慮した分岐予測先識別子設定回路の回路例を示した図である。
【図11】ループ解除のための回路例を示す図である。
【図12】従来の問題点を説明する図(その1)である。
【図13】従来の問題点を説明する図(その2)である。
【符号の説明】
10 命令フェッチ要求部
11 分岐予測部
12 命令キャッシュ
13 命令フェッチ制御部
14 命令バッファ
15 命令供給制御部
16 命令デコード部
20、22、24、26、28、30、32、34、36 フリップフロップ
Claims (10)
- 命令列を格納する命令バッファと、
前記命令バッファに格納された命令列のデコードを行う命令デコーダと、
前記命令バッファに対応して設けられ、一の命令バッファに格納された命令列が読み出される場合に、次に読み出されるべき命令列が格納された他の命令バッファの識別情報により、一の命令バッファと他の命令バッファ間の接続関係を示すポインタと、
命令列の処理がループ状の繰り返しになるような所定の命令の命令フェッチ要求が前記命令デコーダにより検出された場合には、命令バッファの識別情報を、命令バッファ間の接続関係がループを構成するように設定するポインタ設定手段とを有することを特徴とする命令制御装置。 - 命令列を格納する命令バッファと、
前記命令バッファに格納された命令列のデコードを行う命令デコーダと、
前記命令バッファに対応して設けられ、一の命令バッファに格納された命令列が読み出される場合に、次に読み出されるべき命令列が格納された他の命令バッファの識別情報により、一の命令バッファと他の命令バッファ間の接続関係を示すポインタと、
命令列の処理がループ状の繰り返しになるような所定の命令の命令フェッチ要求が前記命令デコーダにより検出された場合に、前記読み出された命令列の後続となる命令列の命令アドレスが、いずれかの命令バッファに格納された有効な命令列の先頭アドレスと一致したときには、前記先頭アドレスが一致した命令バッファの識別情報を、命令バッファ間の接続関係がループを構成するように設定するポインタ設定手段とを有することを特徴とする命令制御装置。 - 命令列を格納する命令バッファと、
前記命令バッファに格納された命令列のデコードを行う命令デコーダと、
前記命令バッファに対応して設けられ、一の命令バッファに格納された命令列が読み出される場合に、次に読み出されるべき命令列が格納された他の命令バッファの識別情報により、一の命令バッファと他の命令バッファ間の接続関係を示すポインタと、
命令列の処理がループ状の繰り返しになるような所定の命令の命令フェッチ要求が前記命令デコーダにより検出され、一の命令バッファに格納された命令列内に分岐命令が存在する場合に、他の命令バッファに前記分岐命令の分岐先命令が存在するとき又は存在すると予想されたときには、他の命令列が格納されている命令バッファの識別情報を、命令バッファ間の接続関係がループを構成するように設定するポインタ設定手段とを有することを特徴とする命令制御装置。 - 前記分岐命令が無条件分岐命令又は高確率で分岐すると予想される分岐命令である場合には、他の命令列が格納されている命令バッファの識別情報を、命令の処理がループを構成するように命令バッファ間の接続関係がループを構成するように設定するポインタ設定手段とを有することを特徴とする請求項3に記載の命令制御装置。
- 命令列を格納する命令バッファと、
前記命令バッファに対応して設けられ、一の命令バッファに格納された命令列が読み出される場合に、次に読み出されるべき命令列が格納された他の命令バッファの識別情報により、一の命令バッファと他の命令バッファ間の接続関係を示すポインタと、
分岐命令の分岐予測を行う分岐予測手段と、
前記分岐予測手段により、命令の処理におけるループの存在を予測した場合には、命令バッファ間の接続関係がループを構成するように設定するポインタ設定手段とを有することを特徴とする命令制御装置。 - 前記命令の処理のループを解除するように、前記ポインタの設定の変更を行う接続関係変更手段をさらに備えたことを特徴とする請求項1乃至5に記載の命令制御装置。
- 命令列を格納する命令バッファと、
前記命令バッファに対応して設けられ、一の命令バッファに格納された命令列が読み出される場合に、次に読み出されるべき命令列が格納された他の命令バッファの識別情報に より、一の命令バッファと他の命令バッファ間の接続関係を示すポインタと、
前記読み出された命令列の後続となる命令列の命令アドレスが、他の命令バッファに格納された有効な命令列のアドレス範囲内にない場合には、いずれの命令バッファに対応するポインタの設定を行わずに、前記命令アドレスに対する命令フェッチを行う命令フェッチ手段を有することを特徴とする命令制御装置。 - 命令列を格納する命令バッファと、
前記命令バッファに格納された命令列のデコードを行う命令デコーダと、
前記命令バッファに対応して設けられ、一の命令バッファに格納された命令列が読み出される場合に、次に読み出されるべき命令列が格納された他の命令バッファの識別情報により、一の命令バッファと他の命令バッファ間の接続関係を示すポインタとを有する命令制御装置の命令制御方法において、
一の命令バッファに格納された命令列を読み出す命令読み出しステップと、
前記命令デコーダにより命令列の処理がループ状の繰り返しになるような所定の命令の命令フェッチ要求を検出するステップと、
前記命令フェッチ要求が検出された場合に、命令バッファの識別情報を、命令バッファ間の接続関係がループを構成するように設定するポインタ設定ステップとを有することを特徴とする命令制御方法。 - 前記命令の処理のループを解除するように、前記ポインタの設定の変更を行う接続関係変更ステップを更に備えたことを特徴とする請求項8に記載の命令制御方法。
- 命令列を格納する命令バッファと、
前記命令バッファに対応して設けられ、一の命令バッファに格納された命令列が読み出される場合に、次に読み出されるべき命令列が格納された他の命令バッファの識別情報により、一の命令バッファと他の命令バッファ間の接続関係を示すポインタと、
命令の処理がループ状の繰り返しになるような所定の命令の命令フェッチ要求が検出された場合には、命令バッファ間の接続関係をループを構成するように変更し、所定の命令が構成するループ内の命令を、命令フェッチ要求を待たずに命令バッファから出力させるポインタ設定手段とを有することを特徴とする命令制御装置。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002191432A JP3804941B2 (ja) | 2002-06-28 | 2002-06-28 | 命令フェッチ制御装置 |
US10/347,193 US7676650B2 (en) | 2002-06-28 | 2003-01-21 | Apparatus for controlling instruction fetch reusing fetched instruction |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002191432A JP3804941B2 (ja) | 2002-06-28 | 2002-06-28 | 命令フェッチ制御装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2004038337A JP2004038337A (ja) | 2004-02-05 |
JP3804941B2 true JP3804941B2 (ja) | 2006-08-02 |
Family
ID=29774403
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002191432A Expired - Fee Related JP3804941B2 (ja) | 2002-06-28 | 2002-06-28 | 命令フェッチ制御装置 |
Country Status (2)
Country | Link |
---|---|
US (1) | US7676650B2 (ja) |
JP (1) | JP3804941B2 (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2008155834A1 (ja) | 2007-06-20 | 2008-12-24 | Fujitsu Limited | 処理装置 |
WO2008155847A1 (ja) * | 2007-06-20 | 2008-12-24 | Fujitsu Limited | 処理装置 |
Families Citing this family (38)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4086885B2 (ja) * | 2004-11-25 | 2008-05-14 | 松下電器産業株式会社 | 命令供給装置 |
JP5423156B2 (ja) | 2009-06-01 | 2014-02-19 | 富士通株式会社 | 情報処理装置及び分岐予測方法 |
US10698859B2 (en) | 2009-09-18 | 2020-06-30 | The Board Of Regents Of The University Of Texas System | Data multicasting with router replication and target instruction identification in a distributed multi-core processing architecture |
KR101731752B1 (ko) | 2010-06-18 | 2017-04-28 | 보드 오브 리전츠 더 유니버시티 오브 텍사스 시스템 | 결합된 분기 타깃 및 프레디킷 예측 |
JP5494832B2 (ja) | 2011-01-07 | 2014-05-21 | 富士通株式会社 | 演算処理装置および分岐予測方法 |
US9792252B2 (en) | 2013-05-31 | 2017-10-17 | Microsoft Technology Licensing, Llc | Incorporating a spatial array into one or more programmable processor cores |
US9720693B2 (en) | 2015-06-26 | 2017-08-01 | Microsoft Technology Licensing, Llc | Bulk allocation of instruction blocks to a processor instruction window |
US10175988B2 (en) | 2015-06-26 | 2019-01-08 | Microsoft Technology Licensing, Llc | Explicit instruction scheduler state information for a processor |
US9940136B2 (en) | 2015-06-26 | 2018-04-10 | Microsoft Technology Licensing, Llc | Reuse of decoded instructions |
US10409606B2 (en) | 2015-06-26 | 2019-09-10 | Microsoft Technology Licensing, Llc | Verifying branch targets |
US10169044B2 (en) | 2015-06-26 | 2019-01-01 | Microsoft Technology Licensing, Llc | Processing an encoding format field to interpret header information regarding a group of instructions |
US9952867B2 (en) | 2015-06-26 | 2018-04-24 | Microsoft Technology Licensing, Llc | Mapping instruction blocks based on block size |
US10191747B2 (en) | 2015-06-26 | 2019-01-29 | Microsoft Technology Licensing, Llc | Locking operand values for groups of instructions executed atomically |
US10346168B2 (en) | 2015-06-26 | 2019-07-09 | Microsoft Technology Licensing, Llc | Decoupled processor instruction window and operand buffer |
US10409599B2 (en) | 2015-06-26 | 2019-09-10 | Microsoft Technology Licensing, Llc | Decoding information about a group of instructions including a size of the group of instructions |
US9946548B2 (en) | 2015-06-26 | 2018-04-17 | Microsoft Technology Licensing, Llc | Age-based management of instruction blocks in a processor instruction window |
US11755484B2 (en) | 2015-06-26 | 2023-09-12 | Microsoft Technology Licensing, Llc | Instruction block allocation |
US10768936B2 (en) | 2015-09-19 | 2020-09-08 | Microsoft Technology Licensing, Llc | Block-based processor including topology and control registers to indicate resource sharing and size of logical processor |
US10452399B2 (en) | 2015-09-19 | 2019-10-22 | Microsoft Technology Licensing, Llc | Broadcast channel architectures for block-based processors |
US10198263B2 (en) | 2015-09-19 | 2019-02-05 | Microsoft Technology Licensing, Llc | Write nullification |
US11126433B2 (en) | 2015-09-19 | 2021-09-21 | Microsoft Technology Licensing, Llc | Block-based processor core composition register |
US10871967B2 (en) | 2015-09-19 | 2020-12-22 | Microsoft Technology Licensing, Llc | Register read/write ordering |
US10031756B2 (en) | 2015-09-19 | 2018-07-24 | Microsoft Technology Licensing, Llc | Multi-nullification |
US10719321B2 (en) | 2015-09-19 | 2020-07-21 | Microsoft Technology Licensing, Llc | Prefetching instruction blocks |
US10776115B2 (en) | 2015-09-19 | 2020-09-15 | Microsoft Technology Licensing, Llc | Debug support for block-based processor |
US10180840B2 (en) | 2015-09-19 | 2019-01-15 | Microsoft Technology Licensing, Llc | Dynamic generation of null instructions |
US10061584B2 (en) | 2015-09-19 | 2018-08-28 | Microsoft Technology Licensing, Llc | Store nullification in the target field |
US10678544B2 (en) | 2015-09-19 | 2020-06-09 | Microsoft Technology Licensing, Llc | Initiating instruction block execution using a register access instruction |
US10095519B2 (en) | 2015-09-19 | 2018-10-09 | Microsoft Technology Licensing, Llc | Instruction block address register |
US11016770B2 (en) | 2015-09-19 | 2021-05-25 | Microsoft Technology Licensing, Llc | Distinct system registers for logical processors |
US10936316B2 (en) | 2015-09-19 | 2021-03-02 | Microsoft Technology Licensing, Llc | Dense read encoding for dataflow ISA |
US11681531B2 (en) | 2015-09-19 | 2023-06-20 | Microsoft Technology Licensing, Llc | Generation and use of memory access instruction order encodings |
US20170083327A1 (en) | 2015-09-19 | 2017-03-23 | Microsoft Technology Licensing, Llc | Implicit program order |
US11687345B2 (en) | 2016-04-28 | 2023-06-27 | Microsoft Technology Licensing, Llc | Out-of-order block-based processors and instruction schedulers using ready state data indexed by instruction position identifiers |
JP2018005488A (ja) | 2016-06-30 | 2018-01-11 | 富士通株式会社 | 演算処理装置及び演算処理装置の制御方法 |
US11531552B2 (en) | 2017-02-06 | 2022-12-20 | Microsoft Technology Licensing, Llc | Executing multiple programs simultaneously on a processor core |
US10963379B2 (en) | 2018-01-30 | 2021-03-30 | Microsoft Technology Licensing, Llc | Coupling wide memory interface to wide write back paths |
US10824429B2 (en) | 2018-09-19 | 2020-11-03 | Microsoft Technology Licensing, Llc | Commit logic and precise exceptions in explicit dataflow graph execution architectures |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
FR1536616A (fr) * | 1966-09-21 | Ibm | Système de traitement d'instructions avec des perfectionnements pour le branchementet les boucles du programme | |
JPS58222348A (ja) | 1982-06-18 | 1983-12-24 | Nec Corp | 情報処理装置 |
US4876642A (en) * | 1988-01-19 | 1989-10-24 | Gibson Glenn A | Rules and apparatus for a loop capturing code buffer that prefetches instructions |
JPH0235525A (ja) | 1988-07-25 | 1990-02-06 | Fujitsu Ltd | 命令フェッチ制御方法 |
JPH02287626A (ja) | 1989-04-28 | 1990-11-27 | Toshiba Corp | パイプライン方式の分岐命令制御装置 |
JP2794782B2 (ja) | 1989-05-22 | 1998-09-10 | 日本電気株式会社 | 命令取出装置 |
JPH04182735A (ja) | 1990-11-16 | 1992-06-30 | Koufu Nippon Denki Kk | 情報処理装置 |
GB9412487D0 (en) * | 1994-06-22 | 1994-08-10 | Inmos Ltd | A computer system for executing branch instructions |
EP1050804A1 (en) * | 1999-05-03 | 2000-11-08 | STMicroelectronics SA | Execution of instruction loops |
KR100347865B1 (ko) * | 1999-11-15 | 2002-08-09 | 삼성전자 주식회사 | 어드레스 트레이스를 이용한 분기 예측 방법 |
JP4182735B2 (ja) | 2002-11-28 | 2008-11-19 | ソニー株式会社 | 顔色補正方法及び顔色補正装置及び撮像機器 |
-
2002
- 2002-06-28 JP JP2002191432A patent/JP3804941B2/ja not_active Expired - Fee Related
-
2003
- 2003-01-21 US US10/347,193 patent/US7676650B2/en not_active Expired - Fee Related
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2008155834A1 (ja) | 2007-06-20 | 2008-12-24 | Fujitsu Limited | 処理装置 |
WO2008155847A1 (ja) * | 2007-06-20 | 2008-12-24 | Fujitsu Limited | 処理装置 |
EP2453350A2 (en) | 2007-06-20 | 2012-05-16 | Fujitsu Limited | Processing device |
JP5099133B2 (ja) * | 2007-06-20 | 2012-12-12 | 富士通株式会社 | 処理装置 |
Also Published As
Publication number | Publication date |
---|---|
US7676650B2 (en) | 2010-03-09 |
JP2004038337A (ja) | 2004-02-05 |
US20040003202A1 (en) | 2004-01-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3804941B2 (ja) | 命令フェッチ制御装置 | |
JP3845043B2 (ja) | 命令フェッチ制御装置 | |
JP3014773B2 (ja) | プロセサアーキテクチャ | |
US20050198480A1 (en) | Apparatus and method of controlling instruction fetch | |
JP2000330789A (ja) | コンピュータシステムおよびその命令実行方法 | |
US8171266B2 (en) | Look-ahead load pre-fetch in a processor | |
US7240183B2 (en) | System and method for detecting instruction dependencies in multiple phases | |
JP2560988B2 (ja) | 情報処理装置および処理方法 | |
US20220326954A1 (en) | Exit history based branch prediction | |
EP1050811A1 (en) | Branching in a computer system | |
US20030126409A1 (en) | Store sets poison propagation | |
US6851033B2 (en) | Memory access prediction in a data processing apparatus | |
JP3683439B2 (ja) | 分岐予測を抑止する情報処理装置および方法 | |
JP2004038256A (ja) | プログラムカウンタ制御方法及びプロセッサ | |
US7389405B2 (en) | Digital signal processor architecture with optimized memory access for code discontinuity | |
JP3741945B2 (ja) | 命令フェッチ制御装置 | |
GB2310057A (en) | Branch history with inhibit bits | |
JP5099133B2 (ja) | 処理装置 | |
JP2877531B2 (ja) | 並列演算処理装置 | |
JP4049490B2 (ja) | 情報処理装置 | |
JP2001022577A (ja) | 情報処理装置 | |
JP2853460B2 (ja) | データロード方法及びそれを用いた演算プロセッサ | |
JP2901573B2 (ja) | スーパースカラー方式の情報処理装置 | |
JP2002351658A (ja) | 演算処理装置 | |
JP3668643B2 (ja) | 情報処理装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20041026 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20060131 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20060207 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20060410 |
|
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: 20060502 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20060508 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090519 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100519 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100519 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110519 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120519 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130519 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140519 Year of fee payment: 8 |
|
LAPS | Cancellation because of no payment of annual fees |