JPH10214188A - プロセッサの命令供給方法及び装置 - Google Patents

プロセッサの命令供給方法及び装置

Info

Publication number
JPH10214188A
JPH10214188A JP9016870A JP1687097A JPH10214188A JP H10214188 A JPH10214188 A JP H10214188A JP 9016870 A JP9016870 A JP 9016870A JP 1687097 A JP1687097 A JP 1687097A JP H10214188 A JPH10214188 A JP H10214188A
Authority
JP
Japan
Prior art keywords
instruction
branch
unit
instructions
memory unit
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
Application number
JP9016870A
Other languages
English (en)
Inventor
Hisatomo Satou
寿倫 佐藤
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.)
Toshiba Corp
Original Assignee
Toshiba Corp
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 Toshiba Corp filed Critical Toshiba Corp
Priority to JP9016870A priority Critical patent/JPH10214188A/ja
Priority to US09/015,520 priority patent/US6119220A/en
Publication of JPH10214188A publication Critical patent/JPH10214188A/ja
Pending legal-status Critical Current

Links

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, look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3808Instruction prefetching for instruction reuse, e.g. trace cache, branch target cache

Abstract

(57)【要約】 【課題】 プロセッサの性能の低下を招くことなく、命
令供給の効率化を図ることができるプロセッサの命令供
給方法及び装置を提供することを課題とする。 【解決手段】 命令キャッシュ1の他に命令を格納する
分岐先バッファ33を別途設ける。分岐先バッファ33
には分岐命令の分岐が成立した場合に実際に実行される
順序に命令を配置する。分岐先バッファ33に対する上
記命令の配置は分岐予測装置35による分岐の予測が終
了する前に実行され、分岐が成立すると予測された場合
には分岐先バッファ33に格納された命令列を命令デコ
ーダ9に供給する。一方、分岐が成立しないと予測され
た場合には命令キャッシュ1から命令を供給する。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、プロセッサ(proce
sser )に関し、特に、プロセッサの命令供給に関する。
【0002】
【従来の技術】近年、高性能プロセッサ(processer )に
おいては、その性能向上の目的で、機能ブロックが多く
備えられている。そして、それら機能ブロックを効率良
く実行させることにより、その動作効率、性能等を向上
させることができる。機能ブロックを効率良く実行させ
るためには、できるだけ多くの命令を同時に実行する必
要がある。すなわち、実行するプログラムから高い命令
並列度を引き出すことが、機能ブロックを効率良く動作
させ、プロセッサの性能を向上させる鍵となる。命令並
列度は、その中に分岐命令及び分岐先の命令を持たない
命令列である基本ブロックのサイズに大きく依存する。
実行プログラムは、分岐命令、分岐先命令により複数の
基本ブロックに分割され、基本的には、基本ブロックの
サイズが大きいほど高い命令並列度を取り出すことが可
能となる。
【0003】図13は、従来のRISC(Reduced Instr
uction Set Computer)型プロセッサの構成を示すブロッ
ク図である。このプロセッサは、命令専用のキャッシュ
である命令キャッシュ1と、オペランドデータ専用のキ
ャッシュであるデータキャッシュ3と、実行プログラ
ム、データを格納するメインメモリ5と、現在実行中の
命令のアドレスをラッチするプログラムカウンタ7と、
命令をデコードし、各種の制御信号を生成する命令デコ
ーダ9と、各種の演算を実行する複数の機能ユニット1
1と、機能ユニット11による演算に用いられるデータ
を一時的に格納するレジスタファイル13と、から構成
されている。
【0004】このプロセッサでは、まず、プログラムカ
ウンタ7の示す命令アドレスを用いて命令キャッシュ1
にアクセスし、命令を取り出す。そして、取り出された
命令は命令デコーダ5に送られ、解読される。解読され
た命令に従い、各機能ユニット11で演算が行われる。
演算にはレジスタファイル13に格納されているデータ
を用いる。また、メインメモリ5に格納されているデー
タを用いる場合には、データキャッシュ3にアクセスし
てデータをレジスタファイル13に移動させて行う。
【0005】ところが、最近のプログラムは数値計算プ
ログラムを除いたほとんどのもので分岐命令が多数存在
する構造となっており、上記基本ブロックのサイズが必
然的に小さくなってきている。そのため、高い命令並列
度を取り出すことが困難となってきている。
【0006】また、上記命令キャッシュ1は複数のキャ
ッシュラインから構成されており、命令キャッシュ1か
ら一度に読み出すことができる命令はその1つのキャッ
シュラインに記憶されている命令である。そのため、例
えば、異なる2つの基本ブロックが異なる2つのキャッ
シュラインに存在する場合には、かかる2つの基本ブロ
ックを構成する2つの命令列を同時に取り出すことは不
可能である。さらに、別個に取り出した2つの命令列を
整列させ、結合させる必要が生じる。このように、従来
のプロセッサはその命令供給の効率が非常に悪く、この
点からも高い命令並列度を抽出することは難しい。従っ
て、結果としてプロセッサの性能に制限が加えられるこ
とになる。
【0007】そこで、上記の問題を解決するために、T.
M.Conte らは、“Optimization ofInstruction Fetch M
echanism for High Issue Rate",(Proceedings of the
22nd Annual International Symposium on Computer Ar
chitecture,pp.333-344,1995 )において、Collapsing
Buffer (折り畳みバッファ、以下、「Collapsing Buff
er 」と記す)と呼ばれる方法を提案し、上記図13に
示すプロセッサでは不可能であった、複数の基本ブロッ
クから構成される命令列を同時に供給することを可能と
した。Collapsing Buffer は、同時にアクセスされた2
つのキャッシュラインに分岐元の基本ブロックと分岐先
の基本ブロックが存在する場合、それらを構成するそれ
ぞれの命令列の中から実行される命令以外の命令を取り
除き、それにより、連続する2つの基本ブロックから構
成される命令列を供給する方法である。同様の方法は、
S.Dutta らの“Block-Level Prediction for Wide-Issu
eSuperscalar Processors",(Proceedings of 1st Inter
national Conference onAlgorithms and Architectures
for Parallel Processing,pp.143-152,1995) 、A.Sezn
ecらは“Multiple-Block Ahead Branch Predictors",(P
roceedings of Architectural Support for Programmin
g Languages and Operations Systemsm,1996) 、S.Wall
ace らの“Instruction Fetching Mechanism for Super
scalar Microprocessors",(Proceedings of Euro-Par,1
996 )で提案されている。いずれの方法も、分岐先の命
令アドレスを予測し、同時に分岐元の命令列と分岐先の
命令列を格納するキャッシュラインにアクセスして、2
つの基本ブロックから構成される命令列を供給するもの
である。
【0008】例えば、図14は、上記Collapsing Buffe
r を備えたプロセッサの一構成例を示すブロック図であ
る。なお、図13と同一部分には同一符号が付してあ
る。図14に示すように、このプロセッサは、命令キャ
ッシュ1と命令デコーダ9との間に上記Collapsing Buf
fer 15を備え、さらに、プログラムカウンタ7の示す
アドレスを入力し、そのアドレスに格納された命令が分
岐命令である場合にはその分岐先命令のアドレスを予測
し、そのアドレスを出力する分岐先バッファ(branch t
arget buffer:BTB)17が設けられている。命令キ
ャッシュ1にはプログラムカウンタ7からだけでなく、
分岐先バッファ17からもアドレスが供給される。そし
て、Collapsing Buffer 15はそれぞれのアドレスに格
納された2つの命令列を入力し、それら命令列を整列・
結合する。
【0009】次に、具体的に、Collapsing Buffer 15
による命令列の整列・結合動作について図を用いて説明
する。図15は、図14のCollapsing Buffer 15の周
辺部の構成を示す図である。なお、ここでは、命令キャ
ッシュ1はバンク(bank)19とバンク21に分割さ
れ、それぞれのバンクにアクセスポートが設けられてい
る。それにより、2つのバンクにまたがる連続アドレス
の命令、すなわち、連続する2つの基本ブロックを同時
にアクセスすることが可能となる。
【0010】図15において、Collapsing Buffer 15
は、interchange switch(交換スイッチ、以下「interc
hange switch」と記す)23と、第1の命令バッファ2
5と、第2の命令バッファ27とから構成される。この
ような構成であるCollapsingBuffer 15は、まず、2
つのバンク19及びバンク21から供給された2つの命
令列を実行される順序となるようにinterchange switch
23が並べ変える。第1の命令バッファ25はintercha
nge switch23で並べ変えられた命令列のうち、実際に
実行される命令を特定する。第2の命令バッファ27
は、第1の命令バッファ25が特定した命令列を受けと
り、命令デコーダ9に供給する。
【0011】例えばプログラムカウンタ7が命令cが格
納されたアドレスを指したとすると、命令cが存在する
バンク19内の1つのキャッシュラインから命令列
「a,b,c,d」がinterchange switch23に供給さ
れる。また、前記命令列の中の命令dが分岐命令である
とすると、分岐先バッファ17はプログラムカウンタ7
からアドレスを受けとり、分岐命令dの分岐先アドレス
を決定する。命令fがその分岐先命令であるとすると、
バンク21内の他の1つのキャッシュラインから命令列
「e,f,g,h」が供給される。interchange switch
23は受けとった命令列「a,b,c,d」及び「e,
f,g,h」を並べ変える。ここで、命令列「a,b,
c,d」のアドレスよりも命令列「e,f,g,h」の
アドレスの方が小さい場合であっても、実行される命令
の順序は逆なので、interchange switch23は2つの命
令列を「a,b,c,d,e,f,g,h」の順に並べ
ることになる。
【0012】そして、interchange switch23は第1の
命令バッファ25に命令列「a,b,c,d,e,f,
g,h」を出力する。第1の命令バッファ25は実際に
実行される命令を決定する。実行される命令は命令c、
命令d、命令f及び命令gであるので、第2の命令バッ
ファ27には命令列「c,d,f,g」が供給される。
その後、命令列「c,d,f,g」は命令デコーダ9に
渡される。
【0013】なお、上記分岐先バッファ17は次のよう
な構成によりプログラムカウンタ7からアドレスを入力
し、そのアドレスに格納された命令が分岐命令である場
合にその分岐先命令のアドレスを予測し、そのアドレス
を出力する。図16は、分岐先バッファ17の構成を示
す図である。分岐先バッファ17は、プログラムカウン
タ7の示すアドレスとの比較に用いられる命令アドレス
タグ部(tag )29と、分岐先アドレスが格納された分
岐先アドレス部(address )31とから構成されてい
る。分岐先バッファ17は、プログラムカウンタ7の示
すアドレスと命令アドレスタグ部29に格納されたタグ
アドレスとを比較し、プログラムカウンタ7の示すアド
レスと一致するタグアドレスが存在すれば、そのエント
リに格納された分岐命令の分岐先アドレスを出力するも
のである。
【0014】
【発明が解決しようとする課題】しかしながら、上述し
たCollapsing Buffer による命令供給方法にはプロセッ
サの速度が低下してしまうという問題があった。という
のは、上記の方法を実際に実現するには、分岐先バッフ
ァのような分岐先アドレス予測機構を複数必要とし、ま
た、ハードウェア量の増大を招いてしまう命令キャッシ
ュのバンク分けをしなければならない。さらに、Collap
sing Buffer のような命令整列機構、命令列結合機構と
いったハードウエアも必要とする。これらのハードウエ
アは非常に複雑であり、命令供給に必要な時間は増大す
る。現状、命令供給に必要な時間がプロセッサの速度を
律速しており、これが増大することはプロセッサの速度
を低下させることになる。上記ハードウエアの実行のた
めのパイプラインステージを増やせばプロセッサの速度
低下を防ぐことは可能であるが、逆にパイプラインステ
ージの増大はプロセッサ自体の性能低下を招く要因とな
る。
【0015】例えば、図14に示すプロセッサでは、分
岐先バッファ17により示された分岐先命令アドレスを
用いて命令キャッシュ1からその分岐先命令を取り出す
処理と、プログラムカウンタ7の示すアドレスを用いて
命令キャッシュ1から命令を取り出す通常の命令フェッ
チ処理とは、その処理時間がほぼ同じである。そのた
め、プログラムカウンタ7の示すアドレスの命令が分岐
命令である場合には、命令フェッチの処理時間が、分岐
命令でない場合に比べて実質的には約2倍となってしま
う。すなわち、プログラムカウンタ7→分岐先バッファ
17→命令キャッシュ1の経路がプロセッサの動作速度
を低下させる要因となる。一方、命令キャッシュ1と命
令デコーダ9との間にCollapsing Buffer 15を挿入す
ること自体も、動作速度を低下させる要因となり得る。
【0016】このように、上述した従来の命令供給方法
には、現実にはプロセッサの速度を低下させ、ひいては
その性能を低下させていた。
【0017】本発明は、上記事情に鑑みて成されたもの
であり、その目的は、プロセッサの性能の低下を招くこ
となく、命令供給の効率化を図ることができるプロセッ
サの命令供給方法及び装置を提供することにある。
【0018】
【課題を解決するための手段】上記目的を達成するた
め、第1の発明は、実行される命令のアドレスを保持す
るプログラムカウンタ7と、複数のブロックに分割さ
れ、各ブロックにアドレスの連続する複数個の命令を格
納する第1の命令メモリ部(命令キャッシュ)1と、複
数のブロックに分割され、各ブロックに前記第1の命令
メモリ部から供給されるアドレスの連続する複数個の命
令を実行される順序に再構成して格納する第2の命令メ
モリ部(分岐先バッファ)33と、命令キャッシュ1、
分岐先バッファ33から読み出された命令をデコードす
る命令デコード部(命令デコーダ)9と、命令キャッシ
ュ1、分岐先バッファ33それぞれから読み出される2
つの命令列の内一方のみを選択して命令デコーダ9に供
給する選択部(セレクタ)39と、命令デコーダ9によ
りデコードされた分岐命令の分岐が成立するか否かを予
測する分岐予測部(分岐予測装置)35とから構成され
る。そして、命令キャッシュ1にはアドレスの連続した
複数個の命令、すなわち主記憶上の命令の一部をそのア
ドレス順に配置する。一方、分岐先バッファ33には命
令キャッシュ1から供給される命令列をそのアドレスと
は無関係な実際に実行される順序に再構成して、すなわ
ち分岐命令があり、その分岐が成立した場合に実行され
る順序に配置する。さらに、分岐先バッファ33に上記
のような命令の配置は分岐予測装置35がその分岐が成
立するか否かの予測が終了する前に行われる。そして、
分岐命令が存在し、分岐が成立すると予測された場合に
は分岐先バッファ33に格納された命令列をセレクタ3
9が選択して命令デコーダ9に供給する。従って、分岐
命令以降の命令を無駄にすることがなく、命令供給の効
率化を図ることが可能となる。
【0019】また、第2の発明は、上記第1の発明にお
いて、上記分岐先バッファ33を各ブロックのアドレス
を示すタグを保持するタグアレイ部65を設けた分岐先
バッファ59とし、分岐予測装置35をハードウェアて
きには非常に小さい比較部(比較器61)に置き換えて
いる。そして、プログラムカウンタ7で指定されたアド
レスとタグアレイ部65に保持されたタグとが一致した
場合には、セレクタ39は分岐先バッファ59に格納さ
れた命令列を選択し、命令デコーダ9に供給する。従っ
て、第1の発明よりもプロセッサのハードウェア量の低
減を図ることができる。そして、プロセッサの表面積、
生産コストを抑えることが可能となる。
【0020】
【発明の実施の形態】以下、本発明の実施の形態につい
て図面を用いて説明する。
【0021】第1の実施の形態 図1は、本発明の第1の実施の形態に係るプロセッサの
命令供給装置の構成を示す図であり、(a)がその具体
的なブロック図である。また、(b)は後述する命令保
存装置とその他の部分との対応関係を示す図である。な
お、従来例と同一部分には同一符号が付してある。
【0022】図1(a)において、この命令供給装置
は、命令キャッシュ1と、改良分岐先バッファ33と、
分岐予測装置35と、セレクタ39と、命令デコーダ9
と、プログラムカウンタ7と、から構成される。
【0023】命令キャッシュ1は、メインメモリ(図示
省略)内の命令の一部をコピーして格納する。CPUに
よるメインメモリへのアクセスを実際には命令キャッシ
ュ1へのアクセスとすることによりその高速化を図るも
のである。
【0024】改良分岐先バッファ(以下、単に「分岐先
バッファ」と記す)33は、図14に示す従来の分岐先
バッファ17を改良したものであり、命令キャッシュ1
と同様に複数のラインから構成され、各ラインには命令
キャッシュ1の異なる複数の基本ブロックを構成する命
令列を保存することを可能としたものである。
【0025】分岐予測装置35は、分岐命令の成立・不
成立のみを予測する。例えば、操作結果の状態を残して
おき、その情報をみて分岐が成立するか否かを予測すれ
ばよい。従って、分岐先のアドレスの予測は行わない。
【0026】セレクタ39は、命令キャッシュ1、分岐
先バッファ33それぞれから命令列を入力する。そし
て、そのどちらか一方を分岐予測装置35の予測結果に
基づき選択し、命令デコーダ9に出力する。
【0027】次に、上述した構成である命令供給装置の
動作(すなわち、命令供給方法)について図2のフロー
チャートを用いて説明する。
【0028】まず、ステップ1においてプログラムカウ
ンタ7が示すアドレスを用いて命令キャッシュ1、分岐
先バッファ33それぞれにアクセスする。また、分岐予
測装置35により分岐命令の分岐予測が実行される。次
に、ステップ2において分岐が成立すると予測された場
合には、ステップ3においてセレクタ39が分岐予測装
置35から送られる選択信号により分岐先バッファ33
に保存された命令列を選択する。なお、分岐先バッファ
33の命令保存動作については後述する。次に、ステッ
プ4において分岐先バッファ33に目的の命令列が存在
すれば、ステップ5においてその命令列が分岐先バッフ
ァ33よりセレクタ39を通って命令デコーダ9に供給
される。
【0029】一方、上記ステップ2において分岐が成立
しないと予測された場合及び上記ステップ4において分
岐先バッファ33に目的の命令列が存在しない場合に
は、ステップ6においてセレクタ39が命令キャッシュ
1に格納された命令列を選択する。次に、ステップ7に
おいて命令キャッシュ1に目的の命令列が存在すれば、
ステップ8においてその命令列が命令キャッシュ1より
セレクタ39を通って命令デコーダ9に供給される。一
方、ステップ7において命令キャッシュ1に目的の命令
列が存在しなければ、ステップ9において命令キャッシ
ュ1の該当するラインに下層のメモリシステム(例え
ば、メインメモリ)から命令列を1ライン分読み込んだ
後、上記と同様にステップ8においてその命令列が命令
キャッシュ1よりセレクタ39を通って命令デコーダ9
に供給される。
【0030】上記分岐先バッファ33に命令列を保存す
る場合には、例えば、図1(b)に示す命令保存装置3
7を用いることにより行うことができる。図3は、命令
保存装置37の動作を説明するための図である。図3に
おいて、命令保存装置37は、外部から入力される命令
列を一時的に保存する命令バッファ41を有しており、
命令キャッシュ1から供給される複数の命令列をこの命
令バッファ41上で整列・結合し、その整列・結合され
た命令列を分岐先バッファ33に出力するものである。
【0031】具体的には、例えば、図3(a)におい
て、まず、この命令保存装置37は命令キャッシュ1よ
り命令列43を受けとる。
【0032】次に、図3(b)において、命令列43は
命令保存装置37内部で解読され、先頭アドレスあるい
はプログラムカウンタ7で示されるアドレスの命令から
上述した基本ブロックの境界となる命令(すなわち、分
岐命令)までが命令保存装置37内部の命令バッファ4
1に命令列45として蓄えられる。なお、命令列43内
部に基本ブロックの境界となる命令が存在しない時に
は、命令列43は命令バッファ41には蓄えられない。
また基本ブロックの境界が存在している場合であって
も、命令列43に対して分岐が不成立と予測された時に
は、同様に蓄えられない。そして、命令バッファ41に
命令列45が蓄えられた後、命令保存装置37がさらに
命令キャッシュ1から次の命令列47を受けとる。
【0033】次に、図3(c)において、命令保存装置
37は同様に命令列47を解読し、先頭から基本ブロッ
クの境界となる命令までを命令列49として命令バッフ
ァ41に蓄える。なお、命令列47内に基本ブロックの
境界となる命令が存在しない場合には命令バッファ41
の容量の限界までを命令列49として命令バッファ41
に保存する。また、基本ブロックの境界となる命令が存
在する場合であっても、命令バッファ41の容量を越え
る場合には、命令バッファ41の容量の限界までを命令
列49とする。そして、すでに命令バッファ41に蓄え
られている命令列45と命令列49とが結合され、命令
列51が完成する。
【0034】このように、命令列43と命令列47とが
整列・結合されて命令列51となり、分岐先バッファ3
3に記憶される。図4は、命令列51を記憶する分岐先
バッファ33のエントリのフォーマットを示す図であ
る。図4に示すように、命令列45の先頭の命令アドレ
スを示すタグアドレスフィールド53と、命令列45及
び命令列49を蓄える命令フィールド55と、命令列4
9に続く命令アドレスを示す次アドレスフィールド57
とから構成される。
【0035】次に、上述した命令保存装置37の動作に
ついて図5に示すフローチャートを用いてさらに説明す
る。命令キャッシュ1から命令列を命令保存装置37が
受けとると、まず、ステップ11において命令保存装置
37内の命令バッファ41にすでに命令列が保存されて
いるか否かがチェックされる。命令列が保存されていな
い場合には、ステップ12においてその命令列内に基本
ブロックの境界となる分岐命令があるか否かがチェック
される。分岐命令が存在しない場合には、ステップ14
において受けとった命令列は破棄され、命令バッファ4
1には蓄えられない。一方、ステップ12において分岐
命令が存在する場合には、ステップ15において基本ブ
ロックの境界までの命令列が検出される。そして、ステ
ップ16において基本ブロックの境界までの命令列が命
令バッファ41の容量を越える場合には上記ステップ1
4に進む。容量を越えない場合にはステップ17におい
てその命令列が命令バッファ41に保存される。
【0036】一方、ステップ11において命令列がすで
に保存されていない場合には、ステップ13において基
本ブロック境界までの命令列が検出される。そして、ス
テップ18において基本ブロックの境界までの命令列が
命令バッファ41の容量を越えない場合には上記ステッ
プ17に進む。容量を越える場合にはステップ19にお
いて命令バッファ41の容量の限界まで命令列が保存さ
れる(すなわち、受けとった命令列の一部のみが保存さ
れる)。なお、上記ステップ17及びステップ19にお
いて保存された命令列は分岐予測装置35により分岐が
非成立と予測された場合には破棄される。
【0037】図6は、上述したプロセッサの命令供給装
置を備えたプロセッサの構成を示すブロック図である。
なお、図1(b)に示す命令保存装置37は省略してあ
る。上述したように分岐先バッファ33は連続する分岐
先の基本ブロックと分岐元の基本ブロックを共に保存
し、さらに、セレクタ39に連続して出力することがで
きる。それにより、このプロセッサにおいては、分岐が
成立・不成立にかかわらず、すなわち分岐予測装置35
による予測が終了する前に、分岐先バッファ33に分岐
が成立した場合に実行されるべき命令列を保存しておけ
ば、分岐予測が終了した時点で成立と予測されれば分岐
先バッファ33に保存された命令列を供給し、非成立と
予測されれば命令キャッシュ1から命令列を供給するこ
とが可能となる。従って、図16に示す従来のプロセッ
サにおいてその動作速度を低下させる要因となったプロ
グラムカウンタ7→分岐先バッファ17→命令キャッシ
ュ1の経路が図6の本実施の形態に係るプロセッサには
存在せず、その動作速度を低下させることはないのであ
る。また、命令キャッシュ1と命令デコーダ9との間に
設けられるセレクタ39は非常に単純な回路構成で実現
することができ、従来のCollapsing Buffer 15のよう
にプロセッサの動作速度に影響を与えるものではない。
【0038】本実施の形態の形態に係るプロセッサの効
果を確認するために、シミュレーションによって評価を
行なった。シミュレーションにはサイクルレベルのパイ
プラインシミュレータを用いた。モデルとなるプロセッ
サは、以下の表に示されるアウトオブオーダー実行のス
ーパースカラプロセッサである。なお、表中にある「gs
hare法」についてはS.McFarling,"Combining Branch Pr
edictors,"TechnicalNote TN-36,DEC-WRL,June 1993に
記載されている。
【0039】
【表1】 実行される命令のレイテンシと、命令発行間隔は以下の
表の通りである。
【0040】
【表2】 以上のプロセッサを比較対象とし、このプロセッサに分
岐先バッファ33を加えたプロセッサを用いてその性能
を評価した。分岐先バッファ33は512セット2ウエ
イ・セットアソシアティブで、ラインサイズは32バイ
トである。したがって、32Kバイトのキャッシュ相当
のハードウエア規模となる。
【0041】シミュレーションには下記の表に示すSP
EC92ベンチマークプログラムを用いた。プログラム
に与えられる入力データにはSPECが用意したリファ
レンスの入力を用いた。実行時間の短縮のため、一部の
入力データには若干変更を加えた。行なった変更も下記
の表に示してある。また、実行した命令数も示した。C
プログラムはGNU GCCコンパイラ(version2.6.
3)を用いてコンパイルを行なった。FORTRANプ
ログラムはAT&T F2Cプログラム(version 199
4.11.03)を用いてCプログラムに変換し、GCCコン
パイラでコンパイルを行なった。
【0042】
【表3】 SPEC92ベンチマークプログラムを用いたシミュレ
ーションの結果を図7と図8に示す。図7及び図8中
「old」で示されるグラフが従来例の結果であり、
「new」で示されるグラフが本実施の形態を用いた場
合の結果である。図7は命令供給効率の改善を、図8は
プロセッサの性能効率をそれぞれ表している。整数系の
プログラムでは、命令供給効率が平均4.8%、最大
9.4%改善された。その結果、プロセッサの性能が、
平均4.3%、最大7.1%向上した。浮動小数点系の
プログラムでは、命令供給効率が平均2.0%、最大
7.8%改善された。プロセッサの性能は、平均2.1
%、最大6.2%向上した。
【0043】以上説明したシミュレーションの結果によ
り本実施の形態の効果が確認できた。
【0044】第2の実施の形態 図9は、本発明の第2の実施の形態に係るプロセッサの
命令供給装置の構成を示す図であり、(a)がその具体
的なブロック図である。また(b)は上述した命令保存
装置とその他の部分との対応関係を示す図である。な
お、従来例と同一部分には同一符号が付してある。
【0045】図9(a)において、この命令供給装置
は、命令キャッシュ1と、分岐先バッファ59と、比較
器61と、セレクタ39と、命令デコーダ9と、プログ
ラムカウンタ7と、から構成される。
【0046】本実施の形態は、図1に示す分岐先バッフ
ァ33をデータアレイ部63と、タグアレイ部65とか
ら構成される分岐先バッファ59に、図1に示す分岐予
測装置35を比較器61に置き換えた構成となってい
る。分岐先バッファ59は、データアレイ部63には上
記分岐先バッファ33と同様に各ラインに命令キャッシ
ュ1の異なる複数の基本ブロックを構成する命令列を保
存する。一方、タグアレイ部65にはデータアレイ部6
3内の各ラインにそれぞれ設けられたタグを格納する。
比較器61は、タグアレイ部65の格納されたタグデー
タとプログラムカウンタ7の示すアドレスとの比較を行
う。
【0047】この命令供給装置の動作について図10の
フローチャートを用いて説明する。まず、ステップ10
1において命令キャッシュ1と分岐先バッファ59がプ
ログラムカウンタ7の値によりアクセスされる。次に、
ステップ102において分岐先バッファ59のタグアレ
イ部65に格納されているタグデータとプログラムカウ
ンタ7の示すアドレスとを比較器61で比較する。一致
した場合、すなわち分岐先バッファ59に当該命令列が
存在する場合には、ステップ103において分岐先バッ
ファ59から供給される命令列が選択される。なお、分
岐先バッファ59の命令保存動作については後述する。
【0048】一方、ステップ102において一致しな場
合、すなわち分岐先バッファ59に当該命令列が存在し
ない場合には、ステップ104において命令キャッシュ
1から供給される命令列が選択される。そして、ステッ
プ105において命令キャッシュ1にその命令列が存在
すれば、ステップ106においてその命令列が命令キャ
ッシュ1から供給される。一方、ステップ105におい
て命令キャッシュ1にその命令列が存在しない場合に
は、ステップ107において命令キャッシュ1の該当す
るラインに下層のメモリシステム(例えば、メインメモ
リ)から命令列を1ライン分読み込んだ後、上記と同様
にステップ106においてその命令列を命令キャッシュ
1より供給する。
【0049】次に、上記分岐先バッファ59に命令列を
保存する動作について図11に示すフローチャートを用
いて説明する。なお、本実施の形態においても第1の実
施の形態に係る命令保存装置37を用いて保存を行う場
合について説明する。図11において、命令キャッシュ
1から命令列を命令保存装置37が受けとると、まず、
ステップ1001において命令保存装置37内の命令バ
ッファ41の容量が一杯であるか否かがチェックされ
る。容量が一杯でなければ、ステップ1002において
命令列が格納される。一方、すでに容量が一杯であれば
保存しない。
【0050】図12は、上述したプロセッサの命令供給
装置を備えたプロセッサの構成を示すブロック図であ
る。なお、図9(b)に示す命令保存装置37は省略し
てある。このプロセッサでは、命令キャッシュ1、分岐
先バッファ59それぞれから供給される命令列の選択
を、図1の予測分岐装置35に比べてハードウェア的に
小さい比較器61により行うようにしたので、プロセッ
サのハードウェア量の低減を図ることができる。それに
より、プロセッサの表面積、生産コストを抑えることが
できる。
【0051】なお、本発明は上述した第1の実施の形態
及び第2の実施の形態に限定されるものではない。例え
ば、上記分岐先バッファの数は1つであったが、2つ以
上であってもよい。
【0052】
【発明の効果】以上説明したように、本発明によれば、
分岐命令が存在する場合に分岐元の基本ブロックと分岐
先の基本ブロックとを同時に供給することができるので
命令供給を効率良く行うことができる。それにより、プ
ロセッサの性能を向上させることが可能となる。
【図面の簡単な説明】
【図1】本発明の第1の実施の形態に係るプロセッサの
命令供給装置の構成を示す図である。
【図2】第1の実施の形態に係る命令供給装置の動作を
示すフローチャートである。
【図3】図1の命令保存装置37の動作を説明するため
の図である。
【図4】図1の分岐先バッファ33のエントリのフォー
マットの一例を示す図である。
【図5】図1の命令保存装置37の動作を示すフローチ
ャートである。
【図6】第1の実施の形態に係る命令供給装置を備えた
プロセッサの構成を示すブロック図である。
【図7】第1の実施の形態に係る命令供給装置を備えた
プロセッサのシミュレーション結果を示す図である。
【図8】第1の実施の形態に係る命令供給装置を備えた
プロセッサの他のシミュレーション結果を示す図であ
る。
【図9】本発明の第2の実施の形態に係るプロセッサの
命令供給装置の構成を示す図である。
【図10】第2の実施の形態に係る命令供給装置の動作
を示すフローチャートである。
【図11】図9の分岐先バッファ59に命令列を保存す
る動作を示すフローチャートである。
【図12】第2の実施の形態に係る命令供給装置を備え
たプロセッサの構成を示すブロック図である。
【図13】従来のRISC型プロセッサの構成を示すブ
ロック図である。
【図14】Collapsing Buffer を備えたプロセッサの一
構成例を示すブロック図である。
【図15】図14のCollapsing Buffer 15の周辺部の
構成を示す図である。
【図16】図14の分岐先バッファ17の構成を示す図
である。
【符号の説明】
1 命令キャッシュ 3 データキャッシュ 5 メインメモリ 7 プログラムカウンタ 9 命令デコーダ 11 機能ユニット 13 レジスタファイル 15 Collapsing Buffer 17 分岐先バッファ 19、21 バンク 23 interchange switch 25 第1の命令バッファ 27 第2の命令バッファ 29 命令アドレスタグ部 31 分岐先アドレス部 33、59 分岐先バッファ(改良分岐先バッファ) 35 分岐予測装置 37 命令保存装置 39 セレクタ 41 命令バッファ 43、45、47、49、51 命令列 53 タグアドレスフィールド 55 命令フィールド 57 次アドレスフィールド 61 比較器 63 データアレイ部 65 タグアレイ部

Claims (8)

    【特許請求の範囲】
  1. 【請求項1】 複数個の命令からなる命令列を複数の命
    令メモリ部それぞれから読み出し、 読み出された複数の命令列のうち1つだけを選択して命
    令デコード部に供給し、 前記命令デコード部によりデコードされた命令が分岐命
    令である場合には、その分岐予測が終了する前に前記複
    数の命令列を読み出し、その分岐予測の結果により前記
    命令列の選択が決定されることを特徴とするプロセッサ
    の命令供給方法。
  2. 【請求項2】 前記命令列の選択は、前記複数の命令メ
    モリ部内に指定された命令が存在しているか否かを示す
    信号により決定されることを特徴とする請求項1記載の
    プロセッサの命令供給方法。
  3. 【請求項3】 複数個の命令からなる命令列を命令デコ
    ード部に供給するプロセッサの命令供給方法において、 複数のブロックに分割された第1の命令メモリ部にアド
    レスの連続した複数個の命令を配置し、 複数のブロックに分割された第2の命令メモリ部に分岐
    命令が含まれたアドレスの不連続な複数個の命令を配置
    し、 前記第1の命令メモリ部、第2の命令メモリ部それぞれ
    から命令列を読み出し、 読み出された2つの命令列のうち1つだけを選択し、命
    令デコード部に供給することを特徴とするプロセッサの
    命令供給方法。
  4. 【請求項4】 前記命令デコード部によりデコードされ
    た命令が分岐命令である場合には、その分岐予測が終了
    する前に前記2つの命令列を読み出し、さらに、その分
    岐が成立すると予測された場合には、前記第2の命令メ
    モリ部から読み出された命令列を選択することを特徴と
    する請求項3記載のプロセッサの命令供給方法。
  5. 【請求項5】 指定された命令が前記第2の命令メモリ
    部に存在している場合には、該第2の命令メモリ部から
    読み出された命令列を選択することを特徴とする請求項
    3記載のプロセッサの命令供給方法。
  6. 【請求項6】 複数個の命令からなる命令列を命令デコ
    ード部に供給するプロセッサの命令供給方法において、 複数のブロックに分割された第1の命令メモリ部にアド
    レスの連続した複数個の命令を配置し、 複数のブロックに分割された第2の命令メモリ部に前記
    第1の命令メモリ部から供給される命令列をそのアドレ
    スとは無関係な実際に実行される順序に再構成して配置
    し、 命令列を前記第1の命令メモリ、第2の命令メモリそれ
    ぞれから読み出し、 読み出された2つの命令列のうち1つだけを選択し、命
    令デコード部に供給することを特徴とするプロセッサの
    命令供給方法。
  7. 【請求項7】 実行される命令のアドレスを保持するプ
    ログラムカウンタと、 複数のブロックに分割され、各ブロックにアドレスの連
    続する複数個の命令を格納する第1の命令メモリ部と、 複数のブロックに分割され、各ブロックに前記第1の命
    令メモリ部から供給されるアドレスの連続する複数個の
    命令を実行される順序に再構成して格納する第2の命令
    メモリ部と、 前記命令メモリ部から読み出された命令をデコードする
    命令デコード部と、 前記第1の命令メモリ部、第2の命令メモリ部それぞれ
    から読み出される複数個の命令列の内一方のみを選択し
    て前記命令デコード部に供給する選択部と、 前記命令デコード部によりデコードされた分岐命令の分
    岐が成立するか否かを予測する分岐予測部とを少なくと
    も有し、 前記命令デコード部によりデコードされた命令が分岐命
    令であり、該分岐が前記分岐予測部により成立すると予
    測された場合には、前記選択部は前記第2の命令メモリ
    部から読み出された複数個の命令を選択することを特徴
    とするプロセッサの命令供給装置。
  8. 【請求項8】 実行される命令のアドレスを保持するプ
    ログラムカウンタと、 複数のブロックに分割され、各ブロックにアドレスの連
    続する複数個の命令を格納する第1の命令メモリ部と、 複数のブロックに分割され、各ブロックには該ブロック
    のアドレスを示すタグを保持するタグアレイ部が設けら
    れると共に、各ブロックに前記第1の命令メモリ部から
    供給されるアドレスの連続する複数個の命令を実行され
    る順序に再構成して格納する第2の命令メモリ部と、 前記命令メモリ部から読み出された命令をデコードする
    命令デコード部と、 前記第1の命令メモリ部、第2の命令メモリ部それぞれ
    から読み出される複数個の命令列の内一方のみを選択し
    て前記命令デコード部に供給する選択部と、 前記プログラムカウンタの示すアドレスと前記タグアレ
    イ部に保持されるタグとを比較する比較部とを少なくと
    も有し、 前記プログラムカウンタで指定されたアドレスと前記タ
    グアレイ部に保持されたタグとが一致した場合には、前
    記選択部は前記第2の命令メモリ部から読み出された複
    数個の命令を選択することを特徴とするプロセッサの命
    令供給装置。
JP9016870A 1997-01-30 1997-01-30 プロセッサの命令供給方法及び装置 Pending JPH10214188A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP9016870A JPH10214188A (ja) 1997-01-30 1997-01-30 プロセッサの命令供給方法及び装置
US09/015,520 US6119220A (en) 1997-01-30 1998-01-29 Method of and apparatus for supplying multiple instruction strings whose addresses are discontinued by branch instructions

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP9016870A JPH10214188A (ja) 1997-01-30 1997-01-30 プロセッサの命令供給方法及び装置

Publications (1)

Publication Number Publication Date
JPH10214188A true JPH10214188A (ja) 1998-08-11

Family

ID=11928248

Family Applications (1)

Application Number Title Priority Date Filing Date
JP9016870A Pending JPH10214188A (ja) 1997-01-30 1997-01-30 プロセッサの命令供給方法及び装置

Country Status (2)

Country Link
US (1) US6119220A (ja)
JP (1) JPH10214188A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101131636B1 (ko) 2007-07-31 2012-03-29 노키아 코포레이션 커맨드 실행 순서 결정 방법 및 이를 수행하기 위한 컴퓨팅 디바이스와 컴퓨터 판독가능 기록 매체

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6449713B1 (en) * 1998-11-18 2002-09-10 Compaq Information Technologies Group, L.P. Implementation of a conditional move instruction in an out-of-order processor
KR20070081696A (ko) * 2006-02-13 2007-08-17 삼성전자주식회사 분기 예측 정보를 저장하는 분기 타겟 버퍼 및 그것을포함한 분기 예측 회로
US8006114B2 (en) * 2007-03-09 2011-08-23 Analog Devices, Inc. Software programmable timing architecture
US8854385B1 (en) * 2013-10-03 2014-10-07 Google Inc. Merging rendering operations for graphics processing unit (GPU) performance
US9292903B2 (en) 2013-10-03 2016-03-22 Google Inc. Overlap aware reordering of rendering operations for efficiency
GB201802815D0 (en) * 2018-02-21 2018-04-04 Univ Edinburgh Branch target buffer arrangement for instruction prefetching

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4742451A (en) * 1984-05-21 1988-05-03 Digital Equipment Corporation Instruction prefetch system for conditional branch instruction for central processor unit
JPS6393041A (ja) * 1986-10-07 1988-04-23 Mitsubishi Electric Corp 計算機
US5764946A (en) * 1995-04-12 1998-06-09 Advanced Micro Devices Superscalar microprocessor employing a way prediction unit to predict the way of an instruction fetch address and to concurrently provide a branch prediction address corresponding to the fetch address
US5854943A (en) * 1996-08-07 1998-12-29 Hewlett-Packard Company Speed efficient cache output selector circuitry based on tag compare and data organization
US5774710A (en) * 1996-09-19 1998-06-30 Advanced Micro Devices, Inc. Cache line branch prediction scheme that shares among sets of a set associative cache
US5954816A (en) * 1996-11-19 1999-09-21 Advanced Micro Devices, Inc. Branch selector prediction

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101131636B1 (ko) 2007-07-31 2012-03-29 노키아 코포레이션 커맨드 실행 순서 결정 방법 및 이를 수행하기 위한 컴퓨팅 디바이스와 컴퓨터 판독가능 기록 매체

Also Published As

Publication number Publication date
US6119220A (en) 2000-09-12

Similar Documents

Publication Publication Date Title
JP3182740B2 (ja) 単一クロック・サイクルに非連続命令を取り出すための方法およびシステム。
JP5889986B2 (ja) 実行された命令の結果を選択的にコミットするためのシステムおよび方法
JP2864421B2 (ja) 命令の多機能ユニットへの同時ディスパッチのための方法及び装置
US5333280A (en) Parallel pipelined instruction processing system for very long instruction word
EP0782071B1 (en) Data processor
EP0401992B1 (en) Method and apparatus for speeding branch instructions
US6904511B2 (en) Method and apparatus for register file port reduction in a multithreaded processor
JP2550213B2 (ja) 並列処理装置および並列処理方法
US6327650B1 (en) Pipelined multiprocessing with upstream processor concurrently writing to local register and to register of downstream processor
JP2918631B2 (ja) デコーダ
US6430674B1 (en) Processor executing plural instruction sets (ISA's) with ability to have plural ISA's in different pipeline stages at same time
JP3598589B2 (ja) プロセッサ
GB2412204A (en) Method of operating multi-threading apparatus to execute single-thread program
US6728872B1 (en) Method and apparatus for verifying that instructions are pipelined in correct architectural sequence
CN104657110B (zh) 具有固定数量的可变长度指令的指令高速缓存器
US5889985A (en) Array prefetch apparatus and method
JPS62235658A (ja) キヤツシユ・メモリ制御方式
US7200738B2 (en) Reducing data hazards in pipelined processors to provide high processor utilization
KR100316078B1 (ko) 파이프라인방식프로세서
US6292845B1 (en) Processing unit having independent execution units for parallel execution of instructions of different category with instructions having specific bits indicating instruction size and category respectively
JP2003525476A (ja) プログラムの命令を実行するための装置及び方法
US6405303B1 (en) Massively parallel decoding and execution of variable-length instructions
JP3866920B2 (ja) 命令のリタイアメント時に物理レジスタを選択的に自由にするよう構成されたプロセッサ
US20060095746A1 (en) Branch predictor, processor and branch prediction method
US7346737B2 (en) Cache system having branch target address cache

Legal Events

Date Code Title Description
A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20031201

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20040106