JP2508907B2 - 遅延分岐命令の制御方式 - Google Patents

遅延分岐命令の制御方式

Info

Publication number
JP2508907B2
JP2508907B2 JP2248238A JP24823890A JP2508907B2 JP 2508907 B2 JP2508907 B2 JP 2508907B2 JP 2248238 A JP2248238 A JP 2248238A JP 24823890 A JP24823890 A JP 24823890A JP 2508907 B2 JP2508907 B2 JP 2508907B2
Authority
JP
Japan
Prior art keywords
instruction
branch
delayed
signal
condition
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 - Lifetime
Application number
JP2248238A
Other languages
English (en)
Other versions
JPH04127237A (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.)
NEC Corp
Original Assignee
Nippon Electric Co 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 Nippon Electric Co Ltd filed Critical Nippon Electric Co Ltd
Priority to JP2248238A priority Critical patent/JP2508907B2/ja
Priority to EP19910115861 priority patent/EP0476628A3/en
Publication of JPH04127237A publication Critical patent/JPH04127237A/ja
Application granted granted Critical
Publication of JP2508907B2 publication Critical patent/JP2508907B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime 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/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30058Conditional branch instructions
    • 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

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)

Description

【発明の詳細な説明】 〔産業上の利用分野〕 本発明は命令をパイプライン的に処理する情報処理装
置における遅延分岐命令の処理方式に関する。
〔従来の技術〕
従来、命令をパイプライン的に実行する処理方式で
は、遅延分岐(delayed branch)とよばれる分岐方式が
採られることがある。例えば、命令フェッチ(F)、命
令デコード(D)、命令実行(E)の3段階のパイプラ
インで命令の処理が行なわれる場合を考えてみる(第5
図参照)。分岐命令のデコードがDステージで完了して
から次の分岐先がフェッチ(Fステージ)されるため、
少なくとも1ステージ分のパイプラインの空き(遅延ス
ロット)が発生する。遅延分岐は分岐命令のすぐ後の番
地にある演算命令を遅延スロットに挿入することで、無
駄なパイプラインの空きを除去する方式であり、これに
より性能の向上(特にループなど)が見込まれる。
従来の遅延分岐方式は、大きく次の3つの方式に分類
できる。
無条件遅延分岐:全ての分岐命令において、その次の
命令が実行される。RISCプロセッサR2000などで用いら
れている[KANE87参照(Gerry Kane,“MIPS R2000 RISC
Architecture Hall,"Prentice Hall,1987)]。
指定遅延分岐:ある分岐命令においては、次命令の実
行を回避したい場合もある。遅延分岐であるか否かを指
定するビットを命令の中に持つことで、これを解決でき
る。DSPであるTI320C30などで用いられている。条件分
岐と無条件分岐の区別はない[PAPA8812参照(Panos Pa
pamichalis and Ray Simar,Jr.,“The TMS320C30 Float
ing−Point Digital Signal Processor,IEEE Micro,Vo
l.8,No.6,pp.13-29,Dec.,1988)]。
条件遅延分岐:無条件分岐については、次命令の実行
を行なうか否かを命令で指定でき、かつ条件分岐命令の
場合は、次命令の実行が命令の指定と分岐条件に依存す
るようなもの。
ここで、条件遅延分岐の場合の従来例であるRISCプロ
セッサSPARCについて説明する[GARN8803参照(Robert
B.Garner,et al,“The Scalable Processor Architectu
re(SPARC)",Digest of Papers,COMPCON'88,The compu
tor society of The IEEE,1988)]。
第6図はSPARCにおける遅延分岐禁止ビット(a bit)
と、条件の成立・不成立が遅延分岐に与える影響を示し
たものである。SPARC方式の特徴は、a=1の場合、条
件成立時に遅延分岐が実行されることである。この効用
は条件分岐命令による後方分岐でループを実現する場合
に現われる。この効果を第7図によって説明する。も
し、条件成立時にのみ実行される命令がアドレスDに対
して書けるなら、ループの先頭アドレスLOOPにある分岐
命令以外の命令はアドレスDにコピーでき、ループの先
頭アドレスをLOOP'とすることができる。これにより、
ループの動的実行ステップ数を1つ減らすことができ、
ループ回数が大きい場合の性能向上に役立つ。さらに、
ループ終了時にアドレスDをスキップすることで、余計
な命令実行を取除くことができる。
〔発明が解決しようとする課題〕
SPARC方式は、a=0の場合、条件の成立・不成立に
拘わらず遅延分岐を実行する。これは、他の2つの分岐
方式の場合も同様であるといえる。しかし、次に述べる
if-then-else節による場合分け処理においては、この遅
延分岐は必ずしもよい効果をもたらさない。
例えば、第8図のように、多くの判定を実行しながら
も前記分岐で場合分けを行なう処理を考える。もし、条
件分岐命令が常時遅延分岐を伴うのであれば、条件Aと
条件Bを例外的な事象として除外するプログラムは第8
図のようになる。アドレスADLYおよびアドレスBDLYは、
いずれも例外事象のための処理(then節)の第1命令で
あり、通常のシーケンスはこのような遅延スロットによ
り処理が遅れてしまう。一方、通常の遅延分岐ではない
分岐命令でこの処理を書けば、第9図のようになる。こ
のような例外事象のテストと除外は、ループの内部で出
現することが多く、通常のシーケンスの短縮が性能向上
の点で重要である。
SPARCでは、then節を通常シーケンス、else節を例外
シーケンスに割り当てることで、上述の性能の問題を回
避できる。しかし、この場合は通常シーケンスが分岐命
令で常時飛ばされることになり、アセンブリ言語レベル
でのプログラムの読み易さを著しく損うことになる。
このように、従来の遅延分岐方式は、条件分岐命令の
2つの代表的な用いられかたである、ループの実現と場
合分けとの両方に対して、うまく適合していないという
欠点を有している。
本発明では、ループの実現には条件付き遅延分岐を用
い、場合分けの実現には遅延分岐を用いないようにする
ことによって、遅延分岐を最も効果的に利用できるよう
にすることを目的としている。
〔課題を解決するための手段〕
本発明は分岐命令に含まれる遅延分岐制御ビットによ
って前記分岐命令の次の命令を実行するか否かを決定す
る遅延分岐命令の制御方式において、前記分岐命令を無
条件分岐と条件分岐とに分けて解読する第1の手段と、
分岐条件の成立・不成立を示す条件成立信号を生成する
第2の手段と、前記分岐命令の次の命令を実行するか否
かを示す遅延命令成立指示信号を生成する第3の手段と
を備え、前記第1の手段において前記分岐命令が条件分
岐命令であると判断された場合、前記第3の手段におい
て前記遅延命令実行指示信号が前記遅延分岐制御ビット
の信号と前記条件成立信号との排他的論理和によって生
成される。
〔実施例〕
次に、本発明について図面を参照して説明する。
本発明の一実施例を示す第1図を参照すると、遅延分
岐方式を実行することのできる命令処理装置は、フェッ
チ用命令カウンタ101、マルチプレクサ(選択器)111、
インクリメンタ(+1)112、命令メモリ113、命令無効
化フラグラッチ121、デコード用命令カウンタ122、命令
語ラッチ123、アドレス計算用ベース/インデクスレジ
スタ124、分岐実行判定回路131、分岐条件判定回路13
2、命令デコーダ133、分岐アドレス計算回路134、命令
デコーダ135、データアドレス計算回路136、デコード済
み命令ラッチ141、命令実行用データレジスタ142、デー
タアドレスレジスタ143、命令実行用演算器151、データ
メモリ152、および命令実行結果ステータスレジスタ161
から構成されている。
この命令処理装置は3段パイプラインによって実行さ
れるものである。パイプラインの各ステージは同期をと
るためのラッチで区切られる。101,121,122,123,124,14
1,142,143,161は各々そのようなラッチであると考えて
よい。フェッチ用命令カウンタ101の値に従って命令メ
モリ113の内容がアクセスされ、命令語がラッチ123に入
力される。命令カウンタ101の値はインクリメンタ112に
よって次命令のアドレスを示すよう準備され、マルチプ
レクサ111へ送られる。フェッチ用命令カウンタ101の内
容はデコード用命令カウンタ122へも送られる。分岐ア
ドレス計算回路134ではカウンタ122、アドレス計算用レ
ジスタ124、およびラッチ123にある命令語の一部を用い
て、命令カウンタ相対などの分岐アドレス計算を実行す
る。その結果は、マルチプレクサ111に送られる。マル
チプレクサ111では分岐実行判定回路131の出力結果に基
づき、次命令アドレスおよび分岐先アドレスのいずれを
フェッチ用命令カウンタ101に入れるかを決定する。
分岐命令のデコードは分岐命令の次の命令のフェッチ
と同時に実行されるため、分岐先のフェッチはその次の
タイミング、すなわち第5図で示されたタイミングで行
なわれることになる。命令デコード133はラッチ123の内
容の一部に基づいて命令をデコードする。特に、ここで
は、少なくとも次の(1)〜(4)の信号を生成するも
のとする。このうち、最初の信号(1)は、デコード済
み命令ラッチ141へと転送される。その他の信号は分岐
実行判定回路131に転送される。
(1) 算術論理演算の種類を指定する信号 (2) 無条件分岐命令であることを示す信号 (3) 条件分岐命令であることを示す信号 (4) 遅延分岐指定信号 また、命令デコーダ135はラッチ123の内容の一部に基
づいて命令をデコードする。特に、ここでは、少なくと
も次の(5),(6)の信号を生成するものとする。こ
のうち、後者の信号(6)は、分岐条件判定回路132に
転送される。
(5) 命令実行用データレジスタ142の選択信号 (6) 条件分岐命令の場合、命令で指定された条件を
示す信号 データアドレス計算回路136はラッチ123とアドレス計
算用レジスタ124の内容に基づいて、データメモリ152の
アドレスを計算する。その結果は、データアドレスレジ
スタ143にラッチされる。命令実行用演算器151はデコー
ド済み命令ラッチ141で指定された命令をデコーダ135で
指示された命令実行用データレジスタ142の内容に対し
て実行する。その結果は、最びデータレジスタ142、ま
たは命令実行結果ステータスレジスタ161に書き込まれ
る。データメモリ152はアドレスレジスタ143によって指
示されたアドレスによってリードアクセスされ、その内
容を命令実行用データレジスタ142に書き込むか、また
はデータレジスタ142から読み出された内容をその中に
書き込む。
分岐条件判定回路132では、命令デコーダ135およびス
テータスレジスタ161の内容から条件分岐命令で指定さ
れた条件(less than)などが成立したかどうかを判定
するための回路である。この回路出力は分岐実行判定回
路131に送られる。この分岐実行判定回路131は第2図に
詳細構成を示すように、判定回路132から送られた条件
成立判定信号176と、命令デコーダ133から送られた無条
件分岐命令デコード信号173、条件分岐命令デコード信
号174、遅延分岐制御信号175とより、分岐実行決定信号
171と遅延命令実行決定信号172とを生成する。このう
ち、分岐実行決定信号171については、従来の方式と差
異がない。つまり、信号171はORゲート181とANDゲート1
82で生成されるが、この動作機能は無条件分岐命令、ま
たは条件分岐命令でかつ条件が成立したとき分岐が実行
されるというものである。もう一方の遅延命令実行決定
信号172が本発明の特徴である。この信号172の生成部
は、ORゲート183、ANDゲート184,185、XOR(排他的論理
和)ゲート186、インバータ187で構成されるが、この機
能は第3図に示した真理値に基づくものである。すなわ
ち、ANDゲート185が無条件分岐の場合、ANDゲート184が
条件分岐の場合に対応し、ORゲート183がこれらの場合
の論理和を求めるのに用いられている。特に、条件分岐
の場合、a bitに対応する選択分岐制御信号175と条件成
立判定信号176との排他的論理和がXORゲート186で実行
される。信号172は第1図に示された命令無効化フラグ
ラッチ121にラッチされる。その結果、ラッチ121の内容
に従って分岐命令に続く命令のデコード時に、その命令
を実行するかどうかを決定することができる。例えば、
ラッチ121の内容は命令デコーダ133に伝えられ、デコー
ドされる命令を無効化することができる。このようにし
て、遅延分岐の実行が制御される。
第4図は分岐実行判定回路131の別の構成を示す図で
ある。同図において、188はインバータを表わす。第2
図との相違点は信号175の正負論理が逆転していること
である。この回路131を実現する真理値は、第3図の上
段(a=1)と下段(a=0)を、それぞれa=0,a=
1と読み替えることで得られる。
また、第2図に示す回路131のインバータ187を取除く
ことにより、無条件分岐に対してのみ信号175の意味を
替えた変形例や、第2図および第4図に示す2つのイン
バータ187,188を設けることで、この正負論理が逆であ
るような変形例を考えることもできる。
〔発明の効果〕
本発明の遅延分岐命令の制御方式を用いることによ
り、条件分岐命令の2つの代表的な用いられかたである
ループの実現と場合分けとの両方に適合できる分岐命令
を提供することができる。つまり、ループの実現には条
件付き遅延分岐を用い、場合分けの実現には遅延分岐を
用いないようにすることによって、遅延分岐を最も効果
的に利用できる。
【図面の簡単な説明】
第1図は本発明の一実施例における遅延分岐方式を実行
することのできる命令処理装置の構成を示す図である。 101:フェッチ用命令カウンタ、111:マルチプレクサ、11
2:インクリメンタ、113:命名メモリ、121:命令無効化フ
ラグラッチ、122:デコード用命令カウンタ、123:命令語
ラッチ、124:アドレス計算用ベース/インデクスレジス
タ、131:分岐実行判定回路、132:分岐条件判定回路、13
3:命令デコーダ、134:分岐アドレス計算回路、135:命令
デコーダ、136:データアドレス計算回路、141:デコード
済み命令ラッチ、142:命令実行用データレジスタ、143:
データアドレスレジスタ、151:命令実行用演算器、152:
データメモリ、161:命令実行結果ステータスレジスタ。 第2図は第1図中の分岐実行判定回路の詳細を示す構成
図である。 171:分岐実行決定信号、172:遅延命令実行決定信号、17
3:無条件分岐命令デコード信号、174:条件分岐命令デコ
ード信号、175:遅延分岐制御信号、176:条件成立判定信
号、181:ORゲート、182:ANDゲート、183:ORゲート、18
4,185:ANDゲート、186:XORゲート(排他的論理和ゲー
ト)、187:インバータ。 第3図は遅延命令実行決定信号(172)を決定する真理
値を表わす図である。 第4図は分岐実行判定回路の他の構成例を示す図であ
る。 第5図は命令のパイプライン処理における遅延スロット
の存在を示す図である。 第6図は従来の条件遅延分岐の方式の真理値を表わす図
である。 第7図は第6図の方式により最適化されるプログラムル
ープを表わす図である。 第8図は第6図の方式により複雑になった場合分け処理
プログラムを表わす図である。 第9図は遅延分岐を用いないときの場合分け処理プログ
ラムを表わす図である。

Claims (1)

    (57)【特許請求の範囲】
  1. 【請求項1】分岐命令に含まれる遅延分岐制御ビットに
    よって前記分岐命令の次の命令を実行するか否かを決定
    する遅延分岐命令の制御方式において、前記分岐命令を
    無条件分岐と条件分岐とに分けて解読する第1の手段
    と、分岐条件の成立・不成立を示す条件成立信号を生成
    する第2の手段と、前記分岐命令の次の命令を実行する
    か否かを示す遅延命令成立指示信号を生成する第3の手
    段とを備え、前記第1の手段において前記分岐命令が条
    件分岐命令であると判断された場合、前記第3の手段に
    おいて前記遅延命令実行指示信号が前記遅延分岐制御ビ
    ットの信号と前記条件成立信号との排他的論理和によっ
    て生成されることを特徴とする遅延分岐命令の制御方
    式。
JP2248238A 1990-09-18 1990-09-18 遅延分岐命令の制御方式 Expired - Lifetime JP2508907B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2248238A JP2508907B2 (ja) 1990-09-18 1990-09-18 遅延分岐命令の制御方式
EP19910115861 EP0476628A3 (en) 1990-09-18 1991-09-18 Pipelined data processing system capable of processing delayed branch instruction

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2248238A JP2508907B2 (ja) 1990-09-18 1990-09-18 遅延分岐命令の制御方式

Publications (2)

Publication Number Publication Date
JPH04127237A JPH04127237A (ja) 1992-04-28
JP2508907B2 true JP2508907B2 (ja) 1996-06-19

Family

ID=17175216

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2248238A Expired - Lifetime JP2508907B2 (ja) 1990-09-18 1990-09-18 遅延分岐命令の制御方式

Country Status (2)

Country Link
EP (1) EP0476628A3 (ja)
JP (1) JP2508907B2 (ja)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE69728081T2 (de) * 1996-05-30 2004-08-19 Matsushita Electric Industrial Co., Ltd., Kadoma Verfahren und Schaltkreis zur Steuerung verzögerter Verzweigungsbefehle
TW373149B (en) 1997-07-02 1999-11-01 Matsushita Electric Ind Co Ltd Program control method
GB2343973B (en) * 1998-02-09 2000-07-12 Mitsubishi Electric Corp Data processing device for scheduling conditional operation instructions in a program sequence
JP3881763B2 (ja) 1998-02-09 2007-02-14 株式会社ルネサステクノロジ データ処理装置
US6862563B1 (en) 1998-10-14 2005-03-01 Arc International Method and apparatus for managing the configuration and functionality of a semiconductor design
DE60005830T2 (de) * 1999-05-13 2004-07-29 Arc International U.S. Holdings Inc., San Jose Verfahren und vorrichtung zum steuern eines sprungverzögerungsschlitzes in einem pipelineprozessor
WO2001016702A1 (en) 1999-09-01 2001-03-08 Intel Corporation Register set used in multithreaded parallel processor architecture
WO2001016716A1 (en) * 1999-09-01 2001-03-08 Intel Corporation Branch instruction for processor architecture
US6988154B2 (en) 2000-03-10 2006-01-17 Arc International Memory interface and method of interfacing between functional entities
US7681018B2 (en) 2000-08-31 2010-03-16 Intel Corporation Method and apparatus for providing large register address space while maximizing cycletime performance for a multi-threaded register file set
US8127113B1 (en) 2006-12-01 2012-02-28 Synopsys, Inc. Generating hardware accelerators and processor offloads
JP2007287186A (ja) * 2007-08-09 2007-11-01 Denso Corp Risc型cpu,コンパイラ及びマイクロコンピュータ
US20150227371A1 (en) * 2014-02-12 2015-08-13 Imagination Technologies Limited Processors with Support for Compact Branch Instructions & Methods

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4755966A (en) * 1985-06-28 1988-07-05 Hewlett-Packard Company Bidirectional branch prediction and optimization

Also Published As

Publication number Publication date
EP0476628A2 (en) 1992-03-25
EP0476628A3 (en) 1993-09-29
JPH04127237A (ja) 1992-04-28

Similar Documents

Publication Publication Date Title
US5404552A (en) Pipeline risc processing unit with improved efficiency when handling data dependency
US6269439B1 (en) Signal processor having pipeline processing that supresses the deterioration of processing efficiency and method of the same
JP2508907B2 (ja) 遅延分岐命令の制御方式
US3728692A (en) Instruction selection in a two-program counter instruction unit
US20010021970A1 (en) Data processor
US20040044884A1 (en) Evaluation of condition codes in a data processing apparatus
JPH04309131A (ja) 命令群用マイクロコード生成装置及びコンピュータにおける組合せ装置
US5689694A (en) Data processing apparatus providing bus attribute information for system debugging
EP0093430B1 (en) Pipeline data processing system
US20050138327A1 (en) VLIW digital signal processor for achieving improved binary translation
US5479622A (en) Single cycle dispatch delay in a multiple instruction dispatch mechanism of a data processing system
EP0094535B1 (en) Pipe-line data processing system
US5815420A (en) Microprocessor arithmetic logic unit using multiple number representations
US7003649B2 (en) Control forwarding in a pipeline digital processor
US6230258B1 (en) Processor using less hardware and instruction conversion apparatus reducing the number of types of instructions
JP3490005B2 (ja) 命令制御装置及びその方法
JPH1091441A (ja) プログラム実行方法およびその方法を利用した装置
US4991130A (en) Normalization control system for floating point arithmetic operation
US5895497A (en) Microprocessor with pipelining, memory size evaluation, micro-op code and tags
US5978925A (en) System for improving processing efficiency in a pipeline by delaying a clock signal to a program counter and an instruction memory behind a system clock
US7191432B2 (en) High frequency compound instruction mechanism and method for a compare operation in an arithmetic logic unit
JP2904624B2 (ja) 並列演算処理装置
JP3512707B2 (ja) マイクロコンピュータ
JPH06131180A (ja) 命令処理方式および命令処理装置
EP1069499A2 (en) Data processing apparatus and method for simultaneously executing plural instructions