JPH0950374A - 可変長ディレイドスロットパイプライン制御装置 - Google Patents

可変長ディレイドスロットパイプライン制御装置

Info

Publication number
JPH0950374A
JPH0950374A JP20351795A JP20351795A JPH0950374A JP H0950374 A JPH0950374 A JP H0950374A JP 20351795 A JP20351795 A JP 20351795A JP 20351795 A JP20351795 A JP 20351795A JP H0950374 A JPH0950374 A JP H0950374A
Authority
JP
Japan
Prior art keywords
branch
instruction
delayed
stage
slots
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
JP20351795A
Other languages
English (en)
Inventor
Takashi Yoshida
尊 吉田
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 JP20351795A priority Critical patent/JPH0950374A/ja
Publication of JPH0950374A publication Critical patent/JPH0950374A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Advance Control (AREA)

Abstract

(57)【要約】 【課題】 分岐ペナルティの削減に最も有効であるディ
レイドスロットの手法において、ソフトウェアに応じて
ディレイドスロットの数を可変にする。 【解決手段】 パイプライン処理においてディレイドス
ロット数を可変にする手段を備える。特に、その手段
は、コンパイラの処理によるオブジェクトコードから得
られるディレイドスロット数を格納するディレイドスロ
ット数保持レジスタ1030と、その格納手段に格納さ
れたディレイドスロット数と分岐の成立/非成立とに基
づきパイプラインの各ステージ1010,・・・, 10
14に対するアボート信号を生成するアボート信号生成
回路1020,・・・, 1024で構成される。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、可変長ディレイド
スロットパイプライン制御装置に関し、特に、パイプラ
インの段数の増加に伴う分岐ペナルティの削減を効率的
に行う可変長ディレイドスロットパイプライン制御装置
に関する。
【0002】
【従来の技術】RISC(Riduced Instruction Set Co
mputer)などのパイプラインを用いたプロセッサでは、
低周波数動作で今までのパイプライン段数を減少するこ
とで処理効率を上げるアプローチと、パイプラインを更
に切って段数を増加させて動作周波数を上げたり、ある
いはスーパースカラなどの並列処理で処理効率を上げた
りするアプローチがある。
【0003】前者は、処理速度の向上を求めるよりも、
対面積,対消費電力などの処理効率に重きをおくものが
殆どであり、後者は処理速度自体に重きをおいている。
【0004】また、前者は、パイプライン段数が少ない
ため、分岐ペナルティやデータ依存によるハザードが少
ないが、後者は多い。なぜなら、後者は、処理実行のピ
ッチを上げるために多段パイプラインあるいは複数の演
算実行部を持つことで単位時間あたりの処理命令数を増
やす代わり、ある時間における演算実行部内で実行中の
命令数が多くなり、パイプライン段数を増やしたものは
当然ながら、例えばスーパースカラでは同時実行可能命
令数の増加やout-of-order実行を行うための処理を行う
ステージの挿入など分岐ペナルティの増加が避けられな
い。そのため、これらのプロセッサでは分岐ペナルティ
の削減のため、ディレイドスロット命令や、分岐予測,
投棄的実行を行っている。特にディレイドスロット命令
は、分岐の成否に関係なく実行されるものであり、分岐
ペナルティ削減には最も確実な手法である。
【0005】ここで、ディレイドスロット命令とは、本
来、分岐命令の前に処理すべき命令であって分岐命令自
身との依存関係がない命令を、分岐命令の後に、同分岐
命令の分岐成立/非成立に関わらず実行する命令のこと
である。
【0006】ディレイドスロット命令について、5段の
パイプラインモデルを例として説明する。次のようなパ
イプラインモデルを考える。 I−stage:命令フェッチ D−stage:命令デコード/レジスタファイルから
のオペランドフェッチ E−stage:演算実行/分岐決定 M−stage:メモリアクセス W−stage:データライトバック
【0007】このパイプラインモデルでは、分岐命令が
Eステージで分岐確定した場合、分岐命令に続くD−s
tage、I−stageを実行中の後続命令はアボー
ト(破棄)される。そのため、分岐先の命令を実行する
まで、2命令分の無駄を生じる。この無駄を分岐ペナル
ティと呼ぶ。
【0008】 時間軸→ 命令1 |I|D|E|M|W| 分岐命令 |I|D|E|M|W| |分岐成立 後続命令1 |I|D|←アボート 後続命令2 |I|←アボート 分岐先命令 |I|D|E|M|W|
【0009】ここで、命令1が分岐命令と依存関係がな
い場合を仮定する。依存関係があるとは、例えば命令1
の演算結果を分岐命令の跳び先アドレスに使ったり又は
分岐判定条件に使うなどのように命令1の演算結果を分
岐命令が使用する場合のことをいう。依存関係がない場
合、命令1と分岐命令との実行順番を換えることができ
る。
【0010】
【0011】こうすることで、分岐成立時、無駄になる
命令数を1にすることができる。この場合、プロセッサ
の制御系は、分岐命令に続く命令が、本来分岐命令の前
にある命令で、同分岐命令の成立/非成立に関わらず実
行を継続するということを認識して制御を行う。ここ
で、分岐命令の後に、分岐命令の結果に関わらず実行す
るステージをディレイドスロットと呼び、そこに入る命
令をディレイドスロット命令あるいはディレイド命令と
呼ぶ。また、このディレイドスロット命令の数をディレ
イドスロット数と呼ぶ。
【0012】上述の例では、分岐命令の後ろに回す命令
数を2、すなわちディレイドスロット数を2とすれば、
無駄になる命令数は0となる。
【0013】ディレイドスロット命令の活用方法には、
その応用として、データ依存関係などの理由でディレイ
ドスロットに入れられる命令数が十分得られない場合に
用いられるスカッシュドブランチがある。これは、分岐
成立時のみディレイドスロット命令を実行するというも
ので、代表的な例ではプログラムにおけるforループ
のように、分岐が成立する確率が高い場合は、本来の分
岐先命令をディレイドスロットにおいておき、実際の分
岐先は本来の分岐先命令の次の命令になるようにする。
【0014】以下のようなforループのプログラムに
ついて、スカッシュドブランチの例を示す。 label (1) add r1,r2,r3 r3=r1+r2 (2) sll r4,r1,r4 r4=r4<<r1 (3) addi r5,0 ×1 ,r5 r5=r5+1 (4) bgt r5,r6 label if(r5>r6) goto label (5) nop
【0015】上記プログラムにスカッシュドブランチの
手法を用いると以下のようになる。 (1) add r1,r2,r3 r3=r1+r2 label (2) sll r4,r1,r4 r4=r4<<r1 (3) addi r5,0 ×1 ,r5 r5=r5+1 (4) bgts r5,r6 label if(r5>r6) goto label (5) add r1,r2,r3 r3=r1+r2
【0016】この例では(4) が成立した時のみ(5) を実
行し、(2) に分岐する。この時、(5) の実行条件、すな
わち、分岐成立時のみ実行する/分岐非成立時のみ実行
する/成立、非成立に関わらず実行するといった条件
は、分岐命令に付加する場合やディレイドスロットの命
令に付加する場合などの方法がある。
【0017】また、分岐ペナルティの他の回避の手法と
して、分岐予測がある。これは、現れた分岐命令の分岐
成立の確率をハードウェア的あるいはソフトウェア的に
求め、分岐成立の確率が高い場合は、分岐非成立時の命
令ではなく、分岐先の命令を分岐命令に続けてパイプラ
インに投入するという方法である。
【0018】ここで、ハード的な分岐予測(動的分岐予
測)の典型的な例を説明する。先ず、一度現れた分岐命
令について、その分岐先のアドレスあるいは分岐先の命
令そのものをBTB(Branch Target Buffer)に保持し
ておくと共に、実行中すべての分岐命令の分岐履歴をな
んらかの保持手段に保持してその内容から分岐成立/非
成立の確率を求める。そこで、ある分岐命令が現れ、か
つその分岐成立の確率が高い場合はBTBから分岐先の
アドレスあるいは分岐先の命令そのものをパイプライン
に送ることで、分岐命令実行時の分岐ペナルティの減少
を図っている。ここで、確率を求めるアルゴリズムに
は、前の分岐命令の実行結果から求める方法、過去数回
の実行結果から求める方法、分岐命令個別に履歴をとり
確率を求める方法など種々ある。
【0019】尚、前述のスカッシュドブランチは、一種
のソフトによる分岐予測(静的分岐予測)といえる。
【0020】
【発明が解決しようとする課題】ところで、前述のよう
に、近年の処理効率化の一手法として、パイプラインの
段数を増加させて動作クロック周波数を上げる方法があ
る。あるシリーズの計算機に採用されているスーパーパ
イプライニング等の手法がそれにあたる。パイプライン
段数が増加すると処理開始のパイプラインステージから
分岐成立/非成立が確定するステージまでのパイプライ
ン段数が増加し、同時に分岐ペナルティも増加する。
【0021】ここで、単純に考えれば、分岐ペナルティ
の増加に応じてそれに対応したディレイドスロット数を
設ければそれに対処できることになるが、現在の平均的
なソフトウェアでは、平均分岐命令出現頻度はおよそ4
命令に1命令の割合であり、更に分岐命令以外の3命令
も分岐命令と依存関係があってディレイドスロットに入
れられない命令もあるため、平均的には1〜2命令しか
ディレイドスロットにまわせない。そのため、ディレイ
ドスロットを4〜5としても殆どのディレイドスロット
がNOP(No OPeration)となってしまう。
【0022】一方、このことはOSなどの制御系につい
てのことであり、データ処理においては十分ディレイド
スロットが埋まる場合もあるが、アプリケーションプロ
グラムのオブジェクトレベルでの互換性も考慮してディ
レイドスロットは少なく設定してある。
【0023】本発明は上述のような事情から成されたも
のであり、本発明の目的は、分岐ペナルティの削減に最
も有効であるディレイドスロットの手法において、ソフ
トウェアに応じてディレイドスロットの数を可変にする
ことができる可変長ディレイドスロットパイプライン制
御装置を提供することにある。
【0024】
【課題を解決するための手段】本発明は、パイプライン
の段数の増加に伴う分岐ペナルティの削減を効率的に行
う可変長ディレイドスロットパイプライン制御装置に関
するものであり、本発明の上記目的は、パイプライン処
理においてディレイドスロット数を可変にする手段を備
えることによって達成される。
【0025】また、前記手段を、コンパイラの処理によ
るオブジェクトコードから得られる前記ディレイドスロ
ット数を格納する格納手段と、その格納手段に格納され
たディレイドスロット数と分岐の成立/非成立とに基づ
きパイプラインの各ステージに対するアボート信号を生
成するアボート信号生成手段で構成する。
【0026】更に、前記格納手段は、前記コンパイラの
処理により最適に区切られたソフトウェアの区間ごとの
ディレイドスロット数を格納する。
【0027】そのとき、前記ディレイドスロット数は、
ディレイドスロット数設定命令により前記格納手段に格
納される。
【0028】更に、前記格納手段は、前記コンパイラの
処理により分岐命令ごとに得られるディレイドスロット
数を格納する。
【0029】そのとき、前記ディレイドスロット数は、
分岐命令の命令コード内に含まれてそれを読み込むこと
により前記格納手段に格納される。
【0030】更に、分岐命令の履歴に基づきステージに
分岐先又は非分岐先の命令を与える投棄命令実行開始判
断手段と、各ステージに対応して設けられ、各ステージ
が前記分岐先の命令についての処理を行っているか否か
を示す投棄実行認識情報保持手段とを更に有し、前記ア
ボート信号生成手段は、更に、スカッシュド命令である
か否かの情報、投棄実行であるか否かの情報及び投棄実
行に基づく分岐アドレスと分岐命令に基づく分岐アドレ
スとが一致したか否かの情報に基づき、アボート信号を
生成する。
【0031】
【発明の実施の形態】以下、図面に基づいて本発明の実
施の形態について詳細に説明する。
【0032】図1及び図2は、本発明の可変長ディレイ
ドスロットパイプライン制御装置における実施の一形態
を説明するための図であり、図1は本発明の一形態に係
るパイプライン制御回路であり、図2は本発明の一形態
に係るコンパイラの処理手順を示す図である。
【0033】先ず、図2を参照して本発明の一形態に係
るコンパイラの処理手順を説明する。コンパイラはソー
スプログラムを使用ハードウェアに適応したオブジェク
トコードに変換するためのプログラムであるが、ここで
は本発明に係る部分のみを説明する。先ず、ソースプロ
グラムのデータ依存グラフを作成し、命令の順序関係に
矛盾が生じないためのテーブルを作成する(S200
1)。次に、最適化処理に基づき、ディレイドスロット
数が共通となるプログラムの区間を区分けして確定する
(S2002)。簡単な具体例で説明すると、例えば下
に示すような2つのforループが書かれているソース
プログラムにおいて、1つ目のforループで囲まれた
部分がエリア1、2つ目のforループで囲まれた部分
がエリア2として最適な領域として確定されたとする。
【0034】
【0035】各エリアごとの最適ディレイドスロット数
は以下のように確定される。先ず、エリア1の区間につ
いて最適化する。そこで、エリア1内に出現する分岐命
令のおのおのについて、ディレイドスロットに移せる命
令数を調べる(S2003)。次に、ステップS200
3において得られた命令数の分布に基づいて、評価関数
に従い最適なディレイドスロット数を決定する(S20
04)。このときの評価関数としては、単純なものでは
命令数群の中で最大値を求めるもの、複雑なものでは実
際に実行した上での各分岐命令の分岐確率を求めるも
の、設定したディレイドスロット数に対し、ディレイド
スロットにNOPが入ることによる性能低下やキャッシ
ュ等のリソースの無駄を評価するものなどが考えられ
る。またこのとき、適用するパイプラインについての最
大分岐ペナルティを越えるディレイドスロット数を指定
しても意味がないので、例えば図1に示すパイプライン
制御回路においては最大分岐ペナルティ5を越えるディ
レイドスロット数を規定しない。
【0036】次に、ステップS2004において決定さ
れたディレイドスロット数に基づいて命令の順序を入れ
換える(S2005)。このとき、ディレイドスロット
に移すことのできる命令数がディレイドスロット数に満
たない場合には残りのディレイドスロットにはNOPを
挿入する。一方、ディレイドスロットに移すことのでき
る命令数がディレイドスロット数よりも多い場合には、
ディレイドスロット数分の命令のみ順序を入れ換える。
【0037】エリア1内の命令であって初めて実行され
る命令の前に、図1におけるディレイドスロット数保持
レジスタ1030にディレイドスロット数を設定する命
令を付け加える(S2006)。次に、全てのエリアが
終了したか否かを判断するが(S2007)、現時点で
最適化するエリアはエリア2が残っているので、ステッ
プS2003に戻り、エリア2についての処理も同様に
行う。
【0038】全てのエリアについて処理が終了すると、
命令の移動やNOP及びディレイドスロット数設定命令
の挿入によるアドレスの変化を考慮したアドレスの再割
り付けを行う(S2008)。
【0039】尚、上述の説明ではコンパイラの処理のう
ち本発明に関連する機能のみを抽出したが、コンパイラ
全体におけるこれらの処理の順序はこれに拘束されるわ
けではない。
【0040】次に、上述のコンパイラにより生成された
オブジェクトプログラムに基づき図1に示すパイプライ
ン制御回路が動作する場合の例を説明する。図1は、7
段以上のパイプラインを有する装置の制御回路である。
ここで、同パイプラインの前半の各パイプラインステー
ジ処理に対応してステージ1010,・・・,1016
が設けられている。アボート信号生成回路1020,・
・・,1024は、各ステージ1010,・・・,ステ
ージ1014に対応して設けられ、それらを実行中の命
令をアボートさせるアボート信号1400,・・・,1
404を出力する最も簡単な回路である。ディレイドス
ロット数保持レジスタ1030には、現在同パイプライ
ンが実行中の命令についてのディレイドスロット数が保
持される。 次に、その処理動作を説明する。エリア1
の処理が始まると、先ずその先頭にあるディレイドスロ
ット数をセットする命令が実行され、その命令がステー
ジ1015にきたとき、ディレイドスロット数保持レジ
スタ1030へその値が書き込まれる。そこで、エリア
1についてのディレイドスロット数が例えば“2”であ
ったとする。このとき、バス1300を経由してステー
ジ1015からディレイドスロット数保持レジスタ10
30に“010”が送られる。また、ディレイドスロッ
ト数保持レジスタ1030は、この“010”をデコー
ドした結果を信号線1200,・・・,1204に出力
する。例えば、ディレイドスロット数が“2”の場合に
は、信号線1200,1201,1202には“1”が
出力され、信号線1203,1204には“0”が出力
される。通常、分岐成立信号1100には分岐非成立を
表す“0”が出力されるようにし、各ステージへのアボ
ート信号1400,・・・,1404は非アボートを表
す“0”が出力されるようにする。
【0041】処理が進み、分岐命令がステージ1015
に進んだとする。このとき、ステージ1014及びステ
ージ1013を実行中の命令は、ステージ1015を実
行中の分岐命令のディレイドスロット命令である。ま
た、ステージ1010,1011,1012を実行中の
命令は、同ディレイドスロット命令に続く命令である
が、これはステージ1015の分岐命令の判断におい
て、分岐成立した場合、アボートされるべき命令であ
る。
【0042】そこで、ステージ1015で分岐が成立し
た場合を考える。分岐成立信号1100は“1”とな
り、それを入力するアボート信号生成回路1020,・
・・,1024のうち、アボート信号生成回路102
0,・・・,1022はアボート信号1400,・・
・,1402に“1”を出力し、アボート信号生成回路
1023,1024はアボート信号1403,1404
に“0”を引き続き出力する。これを受けてステージ1
010からステージ1012を実行中の命令はアボート
され、ステージ1013及びステージ1014はそのま
ま実行を継続する。
【0043】一方、ステージ1015で分岐が非成立の
場合は、分岐成立信号1100は“0”であり、それを
入力するアボート信号生成回路1020,・・・,10
24についてのすべてのアボート信号1400,・・
・,1404は“0”のままとなる。即ち、各ステージ
はそのまま実行を継続する。
【0044】処理が進み、エリア1の処理が終り、エリ
ア2の処理が始まると、エリア2の先頭にあるディレイ
ドスロット数設定命令が新たなディレイドスロット数を
ディレイドスロット数保持レジスタ1030にセット
し、以下の処理はエリア1の場合と同様となる。
【0045】尚、上記の例において、ハードウェアリセ
ットがかかった場合にはディレイドスロット数保持レジ
スタ1030にディレイドスロット数“1”をセットす
るようにすれば、ディレイドスロット数1でコンパイル
された従来のオブジェクトプログラムを再コンパイルす
る必要なく実行できる。
【0046】図3,図4及び図5は、本発明の可変長デ
ィレイドスロットパイプライン制御装置における他の実
施の形態を説明するための図であり、図3は本発明の他
の形態に係るパイプライン制御回路であり、図4は本発
明の他の形態に係るコンパイラの処理手順を示す図であ
り、図5は本発明の他の形態に係る分岐命令のデータフ
ォーマットの一例を示す図である。
【0047】図4を参照して本発明の他の形態に係るコ
ンパイラの処理手順を説明する。この実施の形態におい
て、前述の実施の形態と根本的に異なる点は、分岐命令
ごとに領域を区切ってその領域ごとにディレイドスロッ
ト数を決定することにある。
【0048】そこで、前述の形態と同様、先ず、ソース
プログラムのデータ依存グラフを作成し、命令の順序関
係に矛盾が生じないためのテーブルを作成する(S40
01)。次に、注目する領域における分岐命令に対し、
分岐命令の後方に移動させることのできる、分岐命令と
依存関係のない命令数を調べる(S4002)。ステッ
プS4002において得られた命令数と、ハードウェア
の制約から、その分岐命令のディレイドスロット数を決
定する(S4003)。ステップS4003において決
定されたディレイドスロット数に基づいて命令の順序を
入れ換える(S4004)。
【0049】次に、図5に示す分岐命令の命令ビットフ
ォーマットにおけるディレイドスロット情報フィールド
に同分岐命令のディレイドスロット数を書き込む(S4
005)。図5において、ビット31〜26は命令識別
フィールドであり、命令のタイプ、すなわち分岐命令で
あること及び分岐の種類などが示される。ビット25〜
21及びビット20〜16のRS及びRTはレジスタ番
号指定フィールドで、分岐の種類とこの2つに示された
レジスタ番号のデータとを比較することで、分岐の成立
/非成立が確定される。ビット15〜13がディレイド
スロット数指定フィールドである。図3に示した回路か
らこの形態においても最大分岐ペナルティは5であるこ
とから、ディレイドスロット数指定フィールドは3ビッ
トとしている。ビット12〜0は、分岐先アドレスのた
めのオフセットである。このフィールドにおいては、デ
コードされた形式でデータを保持するようにしても良い
が、命令長との兼ね合いとなる。また、命令の意味付け
も、第1のレジスタ番号指定フィールドRSで指定され
たレジスタ番号のデータがゼロかどうかで分岐成立/非
成立を決定し、第2のレジスタ番号指定フィールドRT
で指定されたレジスタ番号のデータとオフセットを加算
した結果を新たな分岐先アドレスにするというような分
岐命令の意味付けもありうる。
【0050】尚、この形態の場合にはディレイドスロッ
ト数は分岐命令ごとに求められているので、このような
方法によりハードウェアにディレイドスロット数を伝達
することが可能となる。
【0051】次に、全ての分岐命令、即ち全てのエリア
について処理が終了したか否かを判断し(S400
6)、未処理のものがあればステップS4002に戻
る。
【0052】全てのエリアについて処理が終了すると、
命令の移動によるアドレスの変化を考慮したアドレスの
再割り付けを行う(S4007)。
【0053】次に、上述のコンパイラにより生成された
オブジェクトプログラムに基づき図3に示すパイプライ
ン制御回路が動作する場合の例を説明する。図3に示す
この実施の形態も7段以上のパイプラインを有する装置
の制御回路である。
【0054】この実施の形態においても、パイプライン
の前半の各パイプラインステージ処理に対応してステー
ジ3010,・・・,3016が設けられている。この
実施の形態でも、実行結果確定ステージはステージ30
15とし、ステージ3010からステージ3014まで
はステージ3015の後続命令となる。従って、ステー
ジ3015を実行する命令が分岐命令の場合、ステージ
3010からステージ3014までは分岐命令結果によ
るアボート判定対象となる。
【0055】オブジェクトコード内の分岐命令がステー
ジ3015で処理される際、その分岐命令内のディレイ
ドスロット数指定フィールドから切り出されたデータが
バス3300経由でディレイドスロット数デコーダ30
30に送られる。また、ディレイドスロット数デコーダ
3030は、その値をデコードした結果を信号線320
0,・・・,3204に出力する。アボート信号生成回
路3020,・・・,3024は、信号線3200,・
・・,3204からの信号と分岐成立信号3100とに
基づいて、それぞれ対応するステージ3010,・・
・,3014に対するアボート信号を生成する。ステー
ジ3010からステージ3014までの各処理ブロック
は、入力されるアボート信号が真ならば、自ブロック内
で実行中の処理をアボートする。
【0056】具体例に基づき動作処理を説明する。図3
にはステージ3015を実行中の分岐命令のディレイド
スロット数が“2”である場合が示されている。図5に
示す命令フィールドに従うと、この分岐命令のビット1
5〜13の3ビットに“010”に書かれてあり、ステ
ージ3015にこの分岐命令がくると、ビット15〜1
3のフィールドが切り出されて、データ“010”がバ
ス3300に送られる。ディレイドスロット数デコーダ
3030は、バス3300から送られてきたデータ“0
10”をデコードし、信号線3200,3201,32
02には“1”を出力し、信号線3203,3204に
は“0”を出力する。
【0057】ここで、ステージ3015の分岐成立信号
が分岐非成立、即ち“0”の場合、アボート信号生成回
路3020,・・・,3024は、アボート信号340
0,・・・,3404に全て“0”を出力し、それによ
りステージ3010,・・・,3014はアボートされ
ることなく処理が継続される。
【0058】一方、ステージ3015の分岐成立信号が
分岐成立、即ち“1”の場合、アボート信号生成回路3
020,3021,3022は、アボート信号340
0,3401,3402に“1”を出力し、それにより
ステージ3010,3011,3012における処理は
アボートされる。アボート信号生成回路3023,30
24は、アボート信号3403,3404に“0”を出
力し、それによりステージ3013,3014はアボー
トされることなく処理が継続される。
【0059】図6及び図7は、本発明の可変長ディレイ
ドスロットパイプライン制御装置におけてスカッシュド
ブランチ及び分岐予測による投棄実行を行うことを可能
にする他の実施の形態を説明するための図であり、図6
はその実施の形態に係るパイプライン制御回路であり、
図7は本発明の他の形態に係るアボート信号生成回路の
構成を示す図である。
【0060】図6に基づき、この実施の形態の処理動作
を説明する。尚、この実施の形態は図3乃至図5に示し
た態様に対してスカッシュドブランチ及び分岐予測によ
る投棄実行を行うことを可能にするようにしたものであ
るので、コンパイラは基本的にはその態様と同様であ
る。但し、スカッシュドブランチであるかどうかの情報
は分岐命令が保持するものとする。
【0061】この実施の形態においても、パイプライン
の前半の各パイプラインステージ処理に対応してステー
ジ6010,・・・,6016が設けられている。この
形態においては各ステージを更に具体的に定義する。即
ち、ステージ6010は、命令フェッチ第1ステージと
する。このステージにおいては、図示していないが、プ
ログラムカウンタから実行する命令のアドレスを受けと
り、キャッシュメモリへアクセスし、同時にTAG,T
LB(Translation-Lookaside Buffer)を読む。ステー
ジ6011は、命令フェッチ第2ステージとし、キャッ
シュメモリから命令を読み出し、キャッシュヒット判定
を行う。ステージ6012は、命令デコード及びレジス
タファイルアクセス第1ステージとする。ステージ60
13は、レジスタファイルアクセス第2ステージとし、
データ及びリソース依存解析を行う。ステージ6014
は演算処理第1ステージとする。ステージ6015は演
算実行ステージとし、分岐命令にあっては、分岐判定完
了及び分岐先アドレス計算完了ステージとする。ステー
ジ6016は、データキャッシュアクセスその他の、ス
テージ6015に続くパイプラインステージとする。
尚、各ステージはパイプラインであるので、同回路の実
行サイクルごとに、各ステージの命令は次のステージに
進む。
【0062】アボート信号生成回路6020,・・・,
6024は、ステージ6010,・・・,ステージ60
14に対応して設けられ、それらを実行中の命令をアボ
ートさせるアボート信号6400,・・・,6404を
出力する。このアボート信号生成回路の詳細な構成は図
7に示されており、ここではアボート信号生成回路60
24を例として示している。ディレイドスロット数デコ
ーダ6030は、オブジェクトコード内の分岐命令がス
テージ6015で処理される際にその分岐命令内のディ
レイドスロット数指定フィールドから切り出されたデー
タをバス6300経由で入力し、デコードする。
【0063】投棄実行開始判断回路6040は、BTB
(Branch Target Buffer)や分岐確率判定回路等を含ん
だ回路である。即ち、処理パイプラインの第1番目のス
テージ6010に送られるプログラムカウンタの値、即
ち命令アドレスから、もし既に一度そのアドレスの命令
を実行しており、かつ、その命令が分岐命令である場
合、即ちBTBがヒットした場合、BTBには、その分
岐命令の過去の分岐先アドレス、あるいは分岐先アドレ
スに加えて分岐先命令が格納されており、投棄実行開始
判断回路6040は、その回路内の分岐確率判定回路に
基づき、分岐先を実行するか非分岐先を実行するかを決
め、分岐先アドレスを出力する。また、この実施の形態
では、一度実行した分岐命令についてはそのディレイド
スロット数も分岐先アドレスとともに判明するため、分
岐先アドレスと共にディレイドスロット数も保持し、そ
のディレイドスロット数に対応したステップ数がステー
ジ6010で実行された後、分岐先アドレスをステージ
6010に与える。
【0064】投棄実行認識フラグ保持レジスタ605
0,・・・,6054は、ステージ6010,・・・,
6014に対応して設けられ、各ステージが実行中の命
令が、投棄実行として発行された、先に実行された分岐
命令の分岐先命令か否かを示す1ビットのフラグを保持
する。投棄実行認識フラグ保持レジスタ6050への入
力は投棄実行開始判断回路6040が行う。尚、この実
施の形態では、投棄実行の深さは1とする。即ち、発行
された分岐命令に対して投棄実行を行うが、更に分岐命
令が現れた場合には発行は行わないとする。
【0065】分岐成立信号6100は、ステージ601
5で処理された分岐命令について、分岐が成立したか否
かを示す信号線である。例えば分岐成立の場合に1を出
力するようにする。バス6300は、ステージ6015
を実行中の分岐命令のディレイドスロット数指定フィー
ルドに格納されているディレイドスロット数をディレイ
ドスロット数デコーダ6030に送る3ビットの信号線
である。信号線6200,・・・,6204は、ディレ
イドスロット数デコーダ6030によりデコードされた
結果の信号であり、各ステージがディレイドスロットで
あるか否かを示す信号線である。信号線6500は、ス
テージ6015を実行中の分岐命令がスカッシュドブラ
ンチ命令であるか否かを示す信号線である。信号線67
00は、投棄実行開始判断回路6040より出力され、
処理ブロック6010で実行を開始する命令が投棄実行
であるかどうかを示すフラグを投棄実行認識フラグ保持
レジスタ6050に送る信号線である。信号線660
0,・・・,6604は、投棄実行認識フラグ保持レジ
スタ6050,・・・,6054の情報をアボート信号
生成回路6020,・・・,6024に送る信号線であ
る。信号線6400,・・・,6404は、アボート信
号生成回路6020,・・・,6024から出力される
アボート信号のための信号線である。
【0066】信号線6800は、ステージ6010が実
行を開始するために必要なデータを投棄実行開始判断回
路6040から送る信号線である。必要なデータの例と
しては、ステージ6010で命令フェッチが開始される
ための命令アドレスがあり、投棄実行の場合には、分岐
先アドレスあるいは分岐先命令そのものとなる。信号線
6900は、投棄実行開始判断回路6040が予測した
投棄実行の分岐先アドレスと分岐命令に基づき計算した
分岐先アドレスとが一致しているかどうかを表す投棄実
行アドレス一致信号のための信号線である。ここで、こ
れらの信号が一致していない場合には、信号線6900
に係る信号は“0”としている。
【0067】図6に基づいてある分岐命令での動作処理
を具体的に詳細に説明する。先ず、分岐命令がある命令
アドレスがステージ6010に与えられる。ステージ6
010は、命令フェッチを開始するが、同時に、同アド
レスは投棄実行開始判断回路6040に送られる。投棄
実行開始判断回路6040は、そのアドレスに基づいて
BTBを検索し、ヒットした場合には、そのアドレスの
命令が分岐命令であること、その命令が既に一度実行さ
れた命令であること、その命令のディレイドスロット
数、前回の分岐アドレス、及びその分岐命令の分岐確率
を認識する。投棄実行開始判断回路6040は、その分
岐確率に従い、投棄実行を行うか否かを決定する。投棄
実行を行うと判断した場合には、その分岐命令のあとに
ディレイドスロット数分プログラムカウンタが進んだ
後、すなわち同分岐命令のディレイドスロット命令が全
てステージ6010で処理を開始された後、分岐先アド
レスがステージ6010に送られ、ステージ6010で
分岐先命令の命令フェッチが開始される。また、同時
に、投棄実行開始判断回路6040は、ステージ601
0でフェッチを開始した命令が分岐先命令であることを
示す信号を投棄実行認識フラグレジスタ6050に送
り、投棄実行認識フラグレジスタ6050は、投棄実行
であることを示すフラグを保持する。同分岐命令のディ
レイドスロット数が2であったとすると、この時点で、
同分岐命令はステージ6053を実行中であり、ステー
ジ6051及びステージ6052は同分岐命令のディレ
イドスロット命令を各々実行中であり、ステージ605
0では、分岐先命令のフェッチを行っていることにな
る。また、投棄実行認識フラグ保持レジスタ6051,
6052,6053には“0”が保持され、投棄実行認
識フラグ保持レジスタ6050には“1”が保持されて
いることとなる。
【0068】その後、処理が2サイクル進み、分岐命令
がステージ6015に進むと、ステージ6013及びス
テージ6014ではディレイドスロット命令が実行中で
あり、ステージ6010,ステージ6011及びステー
ジ6012では分岐先命令が実行中である。そのとき、
投棄実行認識フラグ保持レジスタ6053,6054に
は“0”が保持され、投棄実行認識フラグ保持レジスタ
6050,6051,6052には“1”が保持されて
いることとなる。
【0069】ステージ6015においては、同分岐命令
の分岐判定結果を信号線6100に出力される。また。
BTBから送られたアドレスと今回計算した分岐先アド
レスとが一致するか否かの結果が信号線6900に出力
される。更に、同分岐命令がスカッシュドブランチか否
かを示す信号が信号線6500に出力され、同分岐命令
のディレイドスロット数がバス6300に出力される。
アボート信号生成回路6020,6021,6022,
6023,6024は、分岐成立信号線6100、スカ
ッシュドブランチであるか否かを示す信号線6500、
ディレイドスロット数デコーダから送られる各ステージ
のディレイドスロットの情報を示す信号線6200〜6
204、BTBアドレスと一致したか否かを示す信号線
6900、各ステージが投棄実行であるか否かを示す信
号線6600〜6604の各信号に基づいて、各ステー
ジに対するアボート信号を生成する。
【0070】図7を参照しつつ、各種の場合を説明す
る。先ず、分岐命令の分岐が成立、即ち信号線6100
が“1”で、BTBアドレスが分岐アドレスと一致、即
ち信号線6900が“1”、分岐命令がスカッシュド命
令、即ち信号線6500が“1”であったと仮定する。
この場合、分岐命令のディレイドスロットにあたるステ
ージ6013及びステージ6014を実行中の命令に対
しては、分岐命令がスカッシュドブランチであるが、分
岐成立であるため、アボート信号を発しない。ステージ
6010,・・・,6012を実行中の3命令に対して
は、投棄実行であるが、分岐成立であるため、アボート
信号を発しない。
【0071】上記条件で、分岐不成立の場合は、BTB
アドレスが一致しても、ステージ6010からステージ
6014までの全てのステージに対してアボート信号を
発する。
【0072】また、分岐成立でBTBアドレスが不一致
の場合には、投棄実行のステージ、即ちステージ601
0,・・・,6012に対してはアボート信号を発し、
ディレイドスロット命令のステージ、即ちステージ60
13,6014に対してはアボート信号を発しない。
【0073】分岐命令がスカッシュドブランチでない場
合には、ディレイドスロット命令のステージに対しては
如何なる場合もアボート信号を発せず、投棄実行のステ
ージに対しては上記各条件でアボート/非アボートが決
定される。
【0074】尚、BTBにヒットしなかった場合、ある
いは分岐確率において分岐非成立の確率が高い場合に
は、投棄実行を行わない。この場合、上述の実施の形態
におけるステージ6010からステージ6012におい
ては、分岐命令に後続する命令が実行中となる。また、
この場合のアボート/非アボートの決定は、分岐成立/
非成立のみに依存し、分岐成立時にアボート、分岐非成
立時に非アボートとなる。
【0075】尚、この実施の形態においては、スカッシ
ュドブランチの特性を分岐命令内に付加したが、ディレ
イドスロット命令にその特性を乗せれば、ディレイドス
ロット命令内においてある命令は通常の命令、ある命令
はスカッシュド命令という具合に混在できる。その場
合、スカッシュド命令か否か示す信号線6500につい
て、各ステージごとに独立に設け、それらを対応する各
アボート信号生成回路6020,・・・,6024に入
力させるようにすればよい。
【0076】また、この実施の形態では、ディレイドス
ロットの特性が判明するのはステージ6012であるの
で、ディレイドスロット数が最大の5である場合、分岐
判定確定から全ディレイドスロット命令の特性が判明す
るまでの間、即ちこの形態では、2サイクルの間、分岐
判定結果を保持し、ディレイドスロット命令の処理を行
う。
【0077】更に、この形態においては、投棄実行の深
さを1としたが、投棄実行認識フラグを複数ビット化す
ることで深さ2以上の投棄実行にも応用できる。また、
投棄実行認識フラグを制御することで、分岐確率に応じ
て、ディレイドスロット命令に続く命令について分岐先
命令と非分岐先命令とを混在させることも可能である。
【0078】ステージ数も上述した実施の形態に限定さ
れることはない。
【0079】この実施の形態により説明したように、本
発明は、分岐ペナルティを削減するスカッシュドブラン
チ等の静的分岐予測や投棄実行等の動的分岐予測という
ような従来の手法に対して併せて用いることができ、性
能を更に高めることができる。
【0080】最後に、上述した実施の形態のうち2番目
の形態でアプリケーションソフトウェアを実行した場合
の本発明による性能向上について述べる。アプリケーシ
ョンソフトウェアとしては、近年の標準的ベンチマーク
プログラムであるSPECint’92の1つであるc
ompressを採用した。
【0081】同ソフトウェアをコンパイルした結果、デ
ィレイドスロットに移動可能な確率、即ち各ディレイド
スロットに有効命令がおける確率は以下の通りとなっ
た。 スロット−1 87% スロット−2 37% スロット−3 30% スロット−4 22% スロット−5 15% スロット−6 13% スロット−7 1%
【0082】上記データの意味は、全ての分岐命令のう
ち、分岐命令のすぐ次のスロット、即ちスロット1に命
令を移すことのできた分岐命令が87%、分岐命令の次
の2つのスロット、即ちスロット1及び2に2命令移せ
た分岐命令が37%あったということである。スロット
3以下同様である。従って、例えばディレイドスロット
数を2としたとき、第1スロットにNOPが入ることと
なった分岐命令は全分岐命令の13%であり、第2スロ
ットにNOPが入ることとなった分岐命令は63%とな
る。
【0083】また、次に、この実施の形態の分岐ペナル
ティ5のモデルで、ディレイドスロット数が固定の1,
2,3,4,5でコンパイルしたものと、この実施の形
態で示すディレイドスロット数可変でコンパイルしたも
のとを実行した結果の比較を下に示す。
【0084】compressを実行した結果、分岐成
立確率は70%であった。このとき、分岐ペナルティ5
のパイプラインモデルでの、分岐命令に続く命令の非ア
ボート確率は次のようになった。 ディレイドスロット数1 41% ディレイドスロット数2 43% ディレイドスロット数3 43% ディレイドスロット数4 41% ディレイドスロット数5 38% ディレイドスロット数可変 57%
【0085】ここで、例えばディレイドスロット数1の
場合の41%の意味は、ディレイドスロット数1でコン
パイルしたオブジェクトコードをこの実施の形態のモデ
ルで実行した場合、ステージ6015で分岐命令を実行
する際にステージ6010からステージ6014を実行
中の命令で実行を継続することのできた命令の平均確率
は41%であったことを意味している。即ち、1つの分
岐命令実行につき5命令×59%の命令がアボートされ
ることになる。
【0086】上記結果から、分岐命令の非アボート確率
は14%〜19%の性能向上となった。全体の処理速度
向上としては、ロードレイテンシやその他のシステムの
構成にもよるが、実験では5%程度向上した。
【0087】また、本発明の効果として、ディレイドス
ロットのNOPを削除することで、オブジェクトコード
の縮小が行えることが挙げられるが、compress
において、その効果を比較すると、各ディレイドスロッ
ト数のコードに対し、ディレイドスロット数2では10
%、ディレイドスロット数5では31%、ディレイドス
ロット数7では42%ものオブジェクトコードサイズの
縮小が可能となった。これによりストーレッジリソース
の節約、キャッシュのヒット率の向上にも貢献する。
【0088】
【発明の効果】以上のように本発明の可変長ディレイド
スロットパイプライン制御装置によれば、ソフトウェア
に応じてディレイドスロットの数を可変にして分岐命令
を命令シーケンスの中で可能な限り前倒しで実行できる
ようにすることにより、特に、分岐ペナルティの大きい
パイプラインにおいてパイプラインの段数に拘らず分岐
によりアボートとなってしまう命令数を削減することが
できる。また、オブジェクトコードのサイズの縮小化も
図ることができる。
【図面の簡単な説明】
【図1】本発明の可変長ディレイドスロットパイプライ
ン制御装置における実施の一形態を説明するための図で
ある。
【図2】本発明の一形態に係るコンパイラの処理手順を
示す図である。
【図3】本発明の可変長ディレイドスロットパイプライ
ン制御装置における実施の他の形態を説明するための図
である。
【図4】本発明の他の形態に係るコンパイラの処理手順
を示す図である。
【図5】本発明の他の形態に係る分岐命令のデータフォ
ーマットの一例を示す図である。
【図6】本発明の可変長ディレイドスロットパイプライ
ン制御装置におけてスカッシュドブランチ及び分岐予測
による投棄実行を行うことを可能にする他の実施の形態
を説明するための図である。
【図7】本発明の他の形態に係るアボート信号生成回路
の構成を示す図である。
【符号の説明】
1010〜1014 ステージ 3010〜3014 ステージ 6010〜6014 ステージ 1020〜1024 アボート信号生成回路 3020〜3024 アボート信号生成回路 6020〜6024 アボート信号生成回路 1030 ディレイドスロット数保持レジスタ 3030 ディレイドスロット数デコーダ 6030 ディレイドスロット数デコーダ 6040 投棄命令実行開始判断回路 6050 投棄実行認識フラグ保持レジスタ

Claims (7)

    【特許請求の範囲】
  1. 【請求項1】 パイプライン処理においてディレイドス
    ロット数を可変にする手段を備えることを特徴とする可
    変長ディレイドスロットパイプライン制御装置。
  2. 【請求項2】 前記手段は、コンパイラの処理によるオ
    ブジェクトコードから得られる前記ディレイドスロット
    数を格納する格納手段と、その格納手段に格納されたデ
    ィレイドスロット数と分岐の成立/非成立とに基づきパ
    イプラインの各ステージに対するアボート信号を生成す
    るアボート信号生成手段で構成される請求項1に記載の
    可変長ディレイドスロットパイプライン制御装置。
  3. 【請求項3】 前記格納手段は、前記コンパイラの処理
    により最適に区切られたソフトウェアの区間ごとのディ
    レイドスロット数を格納するようにした請求項2に記載
    の可変長ディレイドスロットパイプライン制御装置。
  4. 【請求項4】 前記ディレイドスロット数は、ディレイ
    ドスロット数設定命令により前記格納手段に格納される
    請求項3に記載の可変長ディレイドスロットパイプライ
    ン制御装置。
  5. 【請求項5】 前記格納手段は、前記コンパイラの処理
    により分岐命令ごとに得られるディレイドスロット数を
    格納するようにした請求項2に記載の可変長ディレイド
    スロットパイプライン制御装置。
  6. 【請求項6】 前記ディレイドスロット数は、分岐命令
    の命令コード内に含まれてそれを読み込むことにより前
    記格納手段に格納される請求項5に記載の可変長ディレ
    イドスロットパイプライン制御装置。
  7. 【請求項7】 分岐命令の履歴に基づきステージに分岐
    先又は非分岐先の命令を与える投棄命令実行開始判断手
    段と、各ステージに対応して設けられ、各ステージが前
    記分岐先の命令についての処理を行っているか否かを示
    す投棄実行認識情報保持手段とを更に有し、前記アボー
    ト信号生成手段は、更に、スカッシュド命令であるか否
    かの情報、投棄実行であるか否かの情報及び投棄実行に
    基づく分岐アドレスと分岐命令に基づく分岐アドレスと
    が一致したか否かの情報に基づき、アボート信号を生成
    するようにした請求項2に記載の可変長ディレイドスロ
    ットパイプライン制御装置。
JP20351795A 1995-08-09 1995-08-09 可変長ディレイドスロットパイプライン制御装置 Pending JPH0950374A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP20351795A JPH0950374A (ja) 1995-08-09 1995-08-09 可変長ディレイドスロットパイプライン制御装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP20351795A JPH0950374A (ja) 1995-08-09 1995-08-09 可変長ディレイドスロットパイプライン制御装置

Publications (1)

Publication Number Publication Date
JPH0950374A true JPH0950374A (ja) 1997-02-18

Family

ID=16475470

Family Applications (1)

Application Number Title Priority Date Filing Date
JP20351795A Pending JPH0950374A (ja) 1995-08-09 1995-08-09 可変長ディレイドスロットパイプライン制御装置

Country Status (1)

Country Link
JP (1) JPH0950374A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2008072178A1 (en) * 2006-12-11 2008-06-19 Nxp B.V. Pipelined processor and compiler/scheduler for variable number branch delay slots
US10519535B2 (en) 2008-06-13 2019-12-31 Kateeva Inc. Method and apparatus for load-locked printing

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2008072178A1 (en) * 2006-12-11 2008-06-19 Nxp B.V. Pipelined processor and compiler/scheduler for variable number branch delay slots
US10519535B2 (en) 2008-06-13 2019-12-31 Kateeva Inc. Method and apparatus for load-locked printing

Similar Documents

Publication Publication Date Title
US10776127B2 (en) Reducing data hazards in pipelined processors to provide high processor utilization
JP3499252B2 (ja) コンパイル装置及びデータ処理装置
US7458069B2 (en) System and method for fusing instructions
US5872985A (en) Switching multi-context processor and method overcoming pipeline vacancies
JP2603626B2 (ja) データ処理装置
US5848269A (en) Branch predicting mechanism for enhancing accuracy in branch prediction by reference to data
JPH1124929A (ja) 演算処理装置およびその方法
JP2000132390A (ja) プロセッサ及び分岐予測器
JP2006313422A (ja) 演算処理装置及びデータ転送処理の実行方法
US6671878B1 (en) Modulo scheduling via binary search for minimum acceptable initiation interval method and apparatus
US20030120882A1 (en) Apparatus and method for exiting from a software pipeline loop procedure in a digital signal processor
US20030120900A1 (en) Apparatus and method for a software pipeline loop procedure in a digital signal processor
US5390306A (en) Pipeline processing system and microprocessor using the system
US20030154469A1 (en) Apparatus and method for improved execution of a software pipeline loop procedure in a digital signal processor
US20030120905A1 (en) Apparatus and method for executing a nested loop program with a software pipeline loop procedure in a digital signal processor
US20050027921A1 (en) Information processing apparatus capable of prefetching instructions
JP2001060152A (ja) 分岐予測を抑止する情報処理装置および方法
JPH0950374A (ja) 可変長ディレイドスロットパイプライン制御装置
US20050091478A1 (en) Processor using less hardware and instruction conversion apparatus reducing the number of types of instructions
JP2004062909A (ja) 複数の制御フローパスを有するソフトウェアパイプライン化ループのためのシステムおよび方法
US6182211B1 (en) Conditional branch control method
JPH1091441A (ja) プログラム実行方法およびその方法を利用した装置
JP3335735B2 (ja) 演算処理装置
JP3547562B2 (ja) マイクロプロセッサ
US20030182511A1 (en) Apparatus and method for resolving an instruction conflict in a software pipeline nested loop procedure in a digital signal processor