JPH0793151A - 命令供給装置 - Google Patents

命令供給装置

Info

Publication number
JPH0793151A
JPH0793151A JP25771093A JP25771093A JPH0793151A JP H0793151 A JPH0793151 A JP H0793151A JP 25771093 A JP25771093 A JP 25771093A JP 25771093 A JP25771093 A JP 25771093A JP H0793151 A JPH0793151 A JP H0793151A
Authority
JP
Japan
Prior art keywords
instruction
branch
executed
instructions
register
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
JP25771093A
Other languages
English (en)
Inventor
Atsushi Kawai
淳 河井
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.)
Oki Electric Industry Co Ltd
Original Assignee
Oki Electric Industry 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 Oki Electric Industry Co Ltd filed Critical Oki Electric Industry Co Ltd
Priority to JP25771093A priority Critical patent/JPH0793151A/ja
Publication of JPH0793151A publication Critical patent/JPH0793151A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Advance Control (AREA)

Abstract

(57)【要約】 【目的】 可能な限りノーオペレーション命令の挿入を
避けてプログラム実行時間を短縮し、更にノーオペレー
ション命令の数はパイプライン構造に依存しないで一定
となるようにする。 【構成】 通常の命令は従来どおりシーケンシャルに実
行するが、無条件分岐命令があるときは順序制御部30
において命令実行順序を入れ換え、分岐先命令アドレス
の確定と分岐先命令の呼出しまでの時間待ち合わせを発
生させない。また、条件分岐命令の実行で分岐が発生し
ない場合には分岐先命令アドレスの確定、分岐条件の確
定及び分岐先命令の呼出しまでの時間待ち合わせを行わ
ず、シーケンシャルに実行される後続命令を先行読み出
しする。条件分岐命令で分岐が発生する場合には、no
p命令挿入部21が一定の数のノーオペレーション命令
を自動的に挿入する。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、分岐命令を含む命令セ
ットを実行するためのパイプライン方式を採用したプロ
セッサにおいて、各命令を効率よく処理する命令供給装
置に関する。
【0002】
【従来の技術】コンピュータで実行される一連の演算処
理の演算速度の向上のために、パイプライン処理が採用
されているものがある。図2に、従来のパイプラインプ
ロセッサのブロック図を示す。このプロセッサは、命令
メモリ1から読み出した命令をパイプライン処理して実
行するプロセッサである。ここには、命令メモリ1、命
令レジスタ2、命令デコーダ3、レジスタファイル4、
命令実行部5、データメモリ6、クロック発生器7、命
令アドレスレジスタ8、加算器9、命令アドレスカウン
タ10及び命令アドレスセレクタ11が設けられてい
る。
【0003】命令メモリ1はプログラムを格納するメモ
リで、このプログラムは一連の命令を組み合わせた命令
セットにより構成される。命令レジスタ2は、命令メモ
リ1から読み出された命令コードを一時的に保持するレ
ジスタで、具体的には1クロック分の時間だけ命令コー
ドを保持し出力する構成のものである。
【0004】命令デコーダ3は入力した命令コードのう
ち、演算処理の内容を示すオペコードを受け入れ、これ
を解読して命令実行部5にその命令内容に応じた制御信
号を出力する部分である。レジスタファイル4は、命令
の処理対象や処理結果を一時的に保持するためのレジス
タの集合で、オペランドアドレスによって該当するレジ
スタが指定され、その内容が命令実行部5に向けて出力
される。また、命令実行部5の出力するオペランドデー
タを受け入れ、所定のレジスタに格納する構成となって
いる。命令実行部5は命令内容に応じた演算処理を行う
部分である。
【0005】データメモリ6は、プログラムの処理対象
となるデータを格納するメモリで、命令実行部5から出
力されるメモリアドレスによって該当するメモリデータ
を出力する。また、命令実行部5の出力するメモリアド
レスに従って、そのデータを格納するように使用され
る。クロック発生器7は、装置各部の動作タイミングを
制御するクロック信号を生成する部分で、このクロック
信号は命令レジスタ2、命令デコーダ3及び命令アドレ
スレジスタ8等に供給される。
【0006】命令アドレスレジスタ8は、命令メモリ1
から読み出されフェッチされるべき命令のアドレスを一
時的に保持しておくレジスタである。加算器9は、分岐
命令を実行する場合に、これまでの命令アドレスと分岐
オフセットを受け入れて両者を加算し、分岐先命令アド
レスを得るための演算器である。命令アドレスカウンタ
10は、命令アドレスレジスタ8の出力する命令アドレ
スを受け入れてインクリメントし、シーケンシャル命令
アドレスを出力する部分である。命令アドレスセレクタ
11は、命令実行部5の出力する分岐条件成否の結果に
従って、分岐が成立しない場合には、命令アドレスカウ
ンタ10から出力されるシーケンシャル命令アドレスを
次の命令アドレスとして命令アドレスレジスタ8に出力
し、分岐が発生した場合には加算器9の出力する分岐先
命令アドレスを受け入れて、これを次の命令アドレスと
して命令アドレスレジスタ8に向け出力する動作をする
回路である。
【0007】図3に、上記のようなプロセッサで使用す
る命令コードのフォーマット説明図を示す。図に示すオ
ペコード15Aは、命令の種類と演算等の処理指定を行
うフィールドである。また、第1ソースオペランド15
Bは、オペコードで指定される演算等の処理の対象とな
る第1ソースオペランドデータを格納するレジスタファ
イルのレジスタアドレスを指定するフィールドである。
また、第2ソースオペランドは、オペコードで指定され
る演算等の処理の対象となる第2ソースオペランドデー
タを格納するレジスタファイルのレジスタアドレスを指
定するためのフィールドである。デスティネーションオ
ペランド15Dは、オペコードで指定される演算等の処
理結果となるデスティネーションオペランドデータを格
納するレジスタファイルのレジスタアドレスを指定する
ためのフィールドである。
【0008】図4は、上記のようなプロセッサの基本動
作シーケンスタイミングチャートを示す。この図に示す
ように、上記のプロセッサでは各命令を読み出すと、命
令フェッチフェイズFと、命令デコードフェイズDと、
命令実行フェイズEとを順に実行する。命令フェッチフ
ェイズFでは、命令フェッチ及びその命令が分岐命令で
ない場合の命令アドレスの計算を行う。また、命令デコ
ードフェイズDでは、命令デコードソースオペランドの
フェッチ、分岐命令の場合の分岐命令アドレスの計算及
び条件分岐命令かどうかの分岐判定を行う。命令実行フ
ェイズEでは、命令の実行と実行結果の格納を行う。
【0009】図5に、分岐命令を含むプログラム例説明
図を示す。上記のようなプロセッサはこの図に示すよう
なプログラムを実行する。このプログラムは、データメ
モリに格納されている2つのデータを読み出し、これら
を比較して両者が一致した場合の数を数えるプログラム
である。なお、ここにはそのプログラムの一部の命令セ
ットのみを図示した。
【0010】まず、このプログラムの最初のステップP
1では、レジスタr0の内容をメモリアドレスとしてデ
ータメモリよりレジスタr1にデータを読み取る。次の
ステップP2では、レジスタr2の内容をメモリアドレ
スとしてデータメモリよりレジスタr3にデータを読み
取る。次に、レジスタr0及びレジスタr2に格納して
いたメモリアドレスをそれぞれ更新する。これはステッ
プP3、P4において行われる。次のステップP5で
は、ステップP1、P2で読み出したレジスタr1の内
容とレジスタr3の内容を比較する。
【0011】そして、ステップP6では、条件分岐命令
が実行され、両者が一致しない場合にはステップP9へ
分岐する処理が行われる。ステップP7はノーオペレー
ション命令で、1クロック分だけ処理を遅延するための
部分である。また、ステップP6の条件分岐命令で、r
1とr3の内容が等しい場合には、ステップP8に進
み、レジスタr4の値をインクリメントする。このレジ
スタr4の値はr1とr3の内容が一致した回数のトー
タルを示す。上記のような一連の処理を実行すると、そ
の後ステップP1に戻り、同様の処理を繰り返す。
【0012】上記図中に示したnopという命令は、既
に説明したように何も処理を行わない命令で、単にパイ
プライン処理を1段進めるための命令である。この命令
は、ステップP6の条件分岐命令とステップP9の無条
件分岐命令の直後に置かれる。これによって、条件分岐
命令の場合には、分岐先命令アドレス及び分岐条件の確
定する時刻までの1クロック時間待ち合わせを行い、分
岐する場合には分岐先命令をフェッチし、分岐しない場
合には後続する逐次命令のフェッチを行う。一方、無条
件分岐命令の場合には、分岐先命令アドレスが確定する
までの1クロック時間待ち合わせを行い、分岐先命令の
フェッチを行う。
【0013】図6に、条件分岐で分岐が発生しない場合
の実行タイミングチャートを示す。また、図7に、条件
分岐で分岐が発生する場合の実行タイミングチャートを
示す。F、D、Eは、図4で説明した各フェイズに該当
する。図2を用いて説明した従来のパイプラインプロセ
ッサは、図5を用いて説明したようなプログラムを実行
する場合に、条件分岐処理の結果、分岐が発生した場合
と発生しない場合とで図6と図7に示すような処理タイ
ミングの相違が生じる。即ち、図6においては、ステッ
プS1からステップS5まではシーケンシャル命令が実
行され、ステップS6において条件分岐命令が実行され
る。
【0014】ここで、分岐が発生しない場合には、ステ
ップS7においてノーオペレーション命令が挿入され、
ステップS8の処理後、ステップS9において無条件分
岐命令が実行される。そして、ステップS10において
ノーオペレーション命令が挿入されている間、分岐先命
令アドレスの確定を行い、ステップS10の次のステッ
プで再びステップS1に戻る。
【0015】一方、図7に示すような条件分岐で分岐が
成立する場合には、ステップS6において、条件分岐命
令を実行すると、ステップS7で待ち合わせを行い、ス
テップS9の無条件分岐命令に飛ぶ。その後は、図6の
場合と同様にして、ステップS1の処理に戻る。上記の
ようにして、従来のパイプラインプロセッサは分岐命令
を含む命令セットを実行していた。
【0016】
【発明が解決しようとする課題】ところで、上記のよう
な従来のパイプラインプロセッサには次のような解決す
べき課題があった。即ち、上記のプログラムの中に挿入
されるノーオペレーション命令は、待ち合わせ時間調整
のための命令であって、実際の処理機能としては無意味
な命令である。ところが、プログラム中にノーオペレー
ション命令が挿入されれば、その分だけ処理のオーバー
ヘッドが発生する。
【0017】また、パイプラインの構造が変われば、待
ち合わせるべき時間は変わる。従って、パイプラインの
構造に応じて挿入すべきノーオペレーション命令の数は
増減する。しかも、挿入されるノーオペレーション命令
の分だけプログラムサイズが大きくなり、性能が低下す
るとともに、プロセッサの命令セット自身は同一であっ
てもパイプライン構造が変われば、挿入すべきノーオペ
レーション命令の数が増減して、プログラムのオブジェ
クトコードの互換性が保てなくなるといった問題があっ
た。
【0018】本発明は以上の点に着目してなされたもの
で、可能な限りノーオペレーション命令の挿入を避けて
プログラム実行時間を短縮し、更にノーオペレーション
命令の数はパイプライン構造に依存しないで一定となる
ようにした命令供給装置を提供することを目的とするも
のである。
【0019】
【課題を解決するための手段】本発明の命令供給装置
は、分岐命令を含む命令セットを実行するパイプライン
プロセッサに設けられ、順に入力する命令をフェッチし
てその出力順を制御する順序制御部と、順に入力する命
令が無条件分岐命令か条件分岐命令かそれ以外の命令か
を判定する命令判定部と、前記順序制御部に対しノーオ
ペレーション命令を挿入するノーオペレーション命令挿
入部とを備え、前記順序制御部は、前記命令判定部とノ
ーオペレーション命令挿入部の出力を受け入れて、次に
実行すべき命令とその命令の次に実行すべき命令を先行
してフェッチし、次に実行すべき命令が分岐命令でな
く、かつ、次の次に実行すべき命令が、無条件分岐命令
である場合には、次に実行すべき命令と次の次に実行す
べき命令を入れ換えて、命令実行部に供給し、次に実行
すべき命令とその命令の直後にある命令を先行してフェ
ッチし、次に実行すべき命令が、条件分岐命令であり、
かつ分岐条件が成立する場合には、条件分岐命令と分岐
先命令との間に、1個以上のノーオペレーション命令を
挿入して、命令実行部に供給し、次に実行すべき命令
が、条件分岐命令であり、かつ分岐条件が成立しない場
合には、条件分岐命令と条件分岐命令の直後にある命令
を、ノーオペレーション命令を挿入せずに連続して、命
令実行部に供給することを特徴とするものである。
【0020】
【作用】この装置では、通常の命令は従来どおりシーケ
ンシャルに実行するが、無条件分岐命令があるときは命
令実行順序を入れ換え、分岐先命令アドレスの確定と分
岐先命令の呼出しまでの時間待ち合わせを発生させな
い。また、条件分岐命令の実行で分岐が発生しない場合
には分岐先命令アドレスの確定、分岐条件の確定及び分
岐先命令の呼出しまでの時間待ち合わせを行わず、シー
ケンシャルに実行される後続命令を先行読み出しする。
更に、条件分岐命令で分岐が発生する場合には、分岐命
令アドレスの確定及び分岐状態の確定及び分岐先命令の
呼出しまでの時間待ち合わせを行うために、一定の数の
ノーオペレーション命令を自動的に挿入する。従って、
パイプライン構造に依存せず、ノーオペレーション命令
の数は一定となる。また、ノーオペレーション命令の挿
入を極力少なくし、プログラムサイズの縮小が図れる。
【0021】
【実施例】以下、本発明を図の実施例を用いて詳細に説
明する。図1は、本発明の命令供給装置実施例を示すブ
ロック図である。この装置は、図2を用いて説明した従
来のパイプラインプロセッサの命令メモリ1と命令レジ
スタ2の間に挿入される。
【0022】図8に、図1に示す命令供給部を備えたパ
イプラインプロセッサのブロック図を示す。図に示すよ
うに、命令供給部20は命令メモリ1と命令レジスタ2
の間に挿入され、ここにはクロック発生器7からクロッ
ク信号が入力し、命令実行部5から分岐条件成否の結果
が入力するよう結線されている。
【0023】再び図1に戻って、この図に示す命令供給
部20の構成を説明する。この命令供給部20には、ノ
ーオペレーション(nop)命令挿入部21と、順序制
御部30と命令判定部40が設けられている。順序制御
部30には、第1命令セレクタ31と、命令遅延レジス
タ32と、第2命令セレクタ33が設けられている。ま
た、命令判定部40には、条件分岐レジスタ41と、条
件分岐比較回路42と、無条件分岐レジスタ43と、無
条件分岐比較回路44と、第1遅延レジスタ45と、第
2遅延レジスタ46と、アンドゲート47、48、49
が設けられている。
【0024】上記第1命令セレクタ31は、命令メモリ
1から読み出された命令コードと、ノーオペレーション
命令挿入部21から受け入れたノーオペレーションコー
ドと、命令遅延レジスタ32から出力される遅延命令コ
ードとを受け入れて、これらのうちの1つを選択して命
令遅延レジスタ32に向け出力する部分である。命令遅
延レジスタ32は、第1命令セレクタ31から出力され
た命令コードを1クロック分保持して第2命令セレクタ
33に向け出力する部分である。第2命令セレクタ33
は、ノーオペレーション命令挿入部21から入力するノ
ーオペレーション命令コードと、命令遅延レジスタ32
から出力される遅延命令コードと、命令メモリ1から直
接入力する命令コードとを受け入れて、これらのいずれ
か1つを選択して命令実行部5に向け出力する部分であ
る。
【0025】図9に、本発明の装置のセレクタ動作説明
図を示す。上記セレクタ31、33は、それぞれ3個の
入力端子C1、C2、C3を備えている。そして、それ
ぞれの入力端子に受け入れられた信号は、この図に示す
ようにして選択して出力される。即ち、第1命令セレク
タ31は、制御の対象となる命令が条件分岐命令である
場合に、条件が成立すればC1の端子の入力を選択し、
条件が不成立ならばC2の端子の命令を選択して出力す
る。また、無条件分岐命令の場合にはC3の端子を選択
して出力し、それ以外の通常の命令の場合にはC2の端
子の命令を選択して出力する。
【0026】第2命令セレクタ33も第1命令セレクタ
と同様の動作を行い、制御対象となる命令が条件分岐命
令であって条件が成立した場合には端子C1の命令を出
力し、条件が不成立の場合には端子C2の命令を出力す
る。また、無条件分岐命令の場合にはC3の信号を出力
し、それ以外の命令の場合にはC2の命令を出力する。
上記のような第1命令セレクタ31及び第2命令セレク
タ33の動作によって、通常の命令の場合にはシーケン
シャルに、無条件分岐命令の場合には命令の順序を前後
に入れ換え、条件分岐命令の場合には、条件が成立すれ
ばノーオペレーション命令を挿入し、それ以外の場合に
はシーケンシャルに命令を出力するといった動作を上記
順序制御部30が実行する。
【0027】なお、図1に示すノーオペレーション命令
挿入部21の出力する信号は、図5を用いて説明したと
同様の何も処理を行わない命令を示すノーオペレーショ
ンコードである。次に、命令判定部40において、条件
分岐レジスタ41は、条件分岐を指定するオペコードを
保持する定数レジスタである。また、無条件分岐レジス
タ43は、無条件分岐を指定するオペコードを保持する
定数レジスタである。条件分岐比較回路42は命令メモ
リ1から入力したオペコードと、条件分岐レジスタ41
の条件分岐オペコードを比較し、一致した場合には条件
分岐ヒット信号を出力する比較回路である。
【0028】また、無条件分岐比較回路44は、命令メ
モリ1から入力するオペコードと、無条件分岐レジスタ
43から入力する無条件分岐オペコードとを比較し、両
者が一致した場合には無条件分岐ヒット信号を出力する
比較回路である。第1遅延レジスタ45と第2遅延レジ
スタ46とは、平常のクロック信号に従って入力した信
号を1クロック分ずつ保持して出力するレジスタから構
成される。アンドゲート47は、第2遅延レジスタ46
の出力と、図8に示す命令実行部5から入力した分岐条
件成否の結果とを受け入れて、共にその論理が“1”の
とき、条件分岐信号を“1”として第1命令セレクタ3
1や第2命令セレクタ33に出力する回路である。アン
ドゲート48は、アンドゲート47の出力と無条件分岐
比較回路44の出力を受け入れて両者が共に論理“0”
のとき、シーケンシャル信号を論理“1”として第1命
令セレクタ31と第2命令セレクタ33に向け出力する
回路である。また、アンドゲート49は、アンドゲート
47の出力と無条件分岐比較回路44の出力とを受け入
れて、アンドゲート47の出力が論理“0”であって、
無条件分岐比較回路44の出力が論理“1”のとき、無
条件分岐信号を論理“1”として第1命令セレクタ31
及び第2命令セレクタ33に向け出力する回路である。
【0029】以上の構成によって、命令判定部40は、
命令メモリ1から入力する命令セットが条件分岐命令や
無条件分岐命令を含まない通常のコードのみで構成され
る場合に、第1命令セレクタ31や第2命令セレクタ3
3に対しシーケンシャル信号を出力し、命令メモリ1か
ら受け入れた命令コードを命令遅延レジスタ32に格納
し、命令遅延レジスタ32に格納されていた命令コード
を命令実行部5に出力するといった処理を実行させる。
【0030】一方、入力した命令コードが無条件分岐命
令の場合には、その直前に条件分岐命令等が存在しない
場合、第1命令セレクタ31と第2命令セレクタ33に
対し無条件分岐信号を出力する。こうして、命令遅延レ
ジスタ32に既に格納した命令コードを第1命令セレク
タ31を介して命令遅延レジスタ32に再格納すると共
に、命令メモリ1から受け入れた新たな命令コードを命
令実行部5に向け出力させる。即ち、これによって命令
コードの順序を逆転させる。
【0031】また、条件分岐命令が入力した場合には、
その判定結果が第1遅延レジスタ45と第2遅延レジス
タ46に合計2クロック分の時間保持され、その後の、
分岐条件が成立した場合には条件分岐信号を第1命令セ
レクタ31と第2命令セレクタ33に出力し、ノーオペ
レーション命令コードの挿入を指示する。このように、
命令判定部40は、次の実行すべき命令や、その命令の
次に実行すべき命令及び次の次に実行すべき命令等の種
類に従って、順序制御部30を制御する構成となってい
る。
【0032】以上の構成の本発明の命令供給装置は次の
ように動作する。始めに、図1において、命令メモリ1
から読み出された次に実行すべき命令コードが無条件分
岐命令でなく、しかもその2クロック前に読み出された
命令が条件分岐命令でない場合には、アンドゲート48
からシーケンシャル信号が第1命令セレクタ31と第2
命令セレクタ33に出力される。これにより、第1命令
セレクタ31は読み出した命令を選択して命令遅延レジ
スタ32にセットし、第2命令セレクタ33は命令遅延
レジスタ32にセットしてあった命令を選択して命令実
行部5に向け出力する。
【0033】以上によって、シーケンシャルに読み出し
た命令セットをその順序を入れ換えることなく、また、
間にノーオペレーション命令コード等を挿入することな
く命令実行部5に出力する。
【0034】次に、命令メモリ1から読み出す命令コー
ドが無条件分岐命令の場合には、先に説明したように、
無条件分岐比較回路44の出力がアンドゲート49を経
て、第1命令セレクタ31と第2命令セレクタ33に供
給される。従って、第1命令セレクタ31は、命令遅延
レジスタ32に既にセットしてある遅延命令コードを選
択し、再び命令遅延レジスタ32にセットする。また、
第2命令セレクタ33は、今読み出した命令コードを選
択して命令実行部5に出力する。これによって、後から
読み出した無条件分岐命令を既に読み出してある命令と
順序を入れ換えて、先に命令実行部5に向け出力する。
この場合にも、ノーオペレーション命令の挿入は行われ
ない。
【0035】次に、命令メモリ1から読み出す命令コー
ドが条件分岐命令の場合に、まず分岐条件が満足せず分
岐が成立しないときには、第1遅延レジスタ45の内容
は論理“0”となる。従って、2クロック後アンドゲー
ト47は閉じられた状態となり、第1命令セレクタ31
と第2命令セレクタ33にはアンドゲート48から論理
“1”のシーケンシャル信号が入力する。この場合、第
1命令セレクタ31は命令メモリ1から読み出した命令
コードを命令遅延レジスタ32に格納し、命令遅延レジ
スタ32にセットされていた命令コードは第2命令セレ
クタ33に選択されて命令実行部5に向け出力される。
従って、この動作によって、命令遅延レジスタ32に条
件分岐命令がセットされることになる。
【0036】次に、命令メモリ1から読み出す命令コー
ドが条件分岐命令の場合であっても、その段階では第2
遅延レジスタ46の出力に対する分岐条件は満足せず、
アンドゲート47の出力は無効とした場合に、第1命令
セレクタ31と第2命令セレクタ33はアンドゲート4
8の出力によってシーケンシャルに入力する命令コード
をそれぞれ選択する。即ち、命令メモリ1から読み出さ
れた条件分岐命令コードを命令遅延レジスタ32にセッ
トし、命令遅延レジスタ32に既にセットしてあった命
令コードを命令実行部5に出力する。なお、この命令遅
延レジスタ32に既にセットしてあった命令コードを実
行すると、これが分岐条件判断のベースとなるデータで
ある。また、条件分岐命令は条件分岐比較回路42にお
いて比較され、その結果は第1遅延レジスタ45にセッ
トされ保存される。
【0037】次のクロックサイクルでは、命令メモリ1
から読み出された命令が条件分岐命令の直後の命令であ
って、これは第1命令セレクタ31に選択されて命令遅
延レジスタ32にセットされる。また、第2命令セレク
タ33はシーケンシャル動作によって命令遅延レジスタ
32にセットされていた命令、即ち直前に格納された条
件分岐命令を命令実行部5に向け出力する。更に、第1
遅延レジスタ45の出力は第2遅延レジスタ46にセッ
トされ保存される。
【0038】その次のクロックサイクルで、第2遅延レ
ジスタ46の出力と命令実行部5から入力する分岐条件
成否の結果との論理積がアンドゲート47で演算され
る。ここで、分岐条件が満足されない場合は、アンドゲ
ート47の出力は論理“0”のままでアンドゲート48
の出力は論理“1”となるため、第1命令セレクタ31
と第2命令セレクタ33はシーケンシャル動作をそのま
ま実行する。即ち、条件分岐命令に続く命令コードが命
令メモリ1から読み出され、そのまま命令遅延レジスタ
32にセットされ、命令遅延レジスタ32に格納されて
いた命令が命令実行部5に出力される。
【0039】一方、分岐条件が満足される場合には、ア
ンドゲート47の出力が論理“1”となり、第1命令セ
レクタ31と第2命令セレクタ33とは、それぞれ端子
C1に入力するノーオペレーション命令コードを選択し
て出力する。従って、既に命令遅延レジスタ32に格納
してある条件分岐命令に続く命令コードは切り捨てら
れ、その代わりにノーオペレーション命令コードが命令
遅延レジスタ32にセットされる。また、第2命令セレ
クタ33を通じてノーオペレーション命令コードが命令
実行部5に向け出力される。従って、分岐条件が満足さ
れると、条件分岐命令の直後に2個のノーオペレーショ
ン命令コードが挿入され、命令実行部5に向け出力され
る。
【0040】図10に、本発明の装置を備えるプロセッ
サ用の分岐命令を含むプログラムを示す。この図に示す
ように、本発明の命令供給装置を備えた場合には、プロ
グラム中にノーオペレーション命令コードを挿入する必
要はない。即ち、本発明の装置はプログラム中に含まれ
る条件分岐命令を捜し出し、必要に応じて必要な数のノ
ーオペレーション命令コードをプログラム中に挿入す
る。従って、プログラム自身のオブジェクトコードはパ
イプライン方式に依存しない。また、オペレータは挿入
される分岐命令実行による時間待ち合わせのための命令
をプログラム中に挿入しておく負担がなくなる。
【0041】図11に、本発明の装置を使用した場合の
条件分岐で分岐が発生しない場合の実行タイミングチャ
ートを示す。この図に示すように、ステップS1からス
テップS5までシーケンシャルに命令を実行した後、ス
テップS6において条件分岐命令が発生するが、その分
岐条件が不成立なため、次の命令の実行に進む。しかし
ながら、図10に示すように、条件分岐命令実行の次に
シーケンシャル命令を実行し、その次に無条件分岐命令
が実行される。このため、この装置では図11に示すよ
うに命令の順序を逆転させ、ステップS8の無条件分岐
命令を先に実行し、ステップS7のシーケンシャル命令
を後から実行させる。従って、このステップS7の命令
実行中に無条件分岐命令による分岐先アドレスが得ら
れ、ステップS7の次に待ち時間を設けることなくステ
ップS1の命令実行に移ることができる。従って、これ
を図6に示す従来例と比較すると、ノーオペレーション
命令を実行する分の処理時間が節約されている。
【0042】図12に、本発明の装置を用いた場合の条
件分岐で分岐が発生する場合の実行タイミングチャート
を示す。この図の例では、ステップS1からステップS
5までシーケンシャルに命令を実行した後、ステップS
6の条件分岐命令で条件分岐が成立する。従って、この
後に2個のノーオペレーション命令コードが挿入され
る。これは、図にF1、F2というように示した。
【0043】ここで、2番目のノーオペレーション命令
コードの次にはステップS8の無条件分岐命令が実行さ
れなければならない。このため、2番目のF2と表した
ノーオペレーション命令コードとステップS8の無条件
分岐命令の順序が入れ替わり、この図のような手順で処
理が実行される。順序入れ替えの効果は、図11で説明
したものと同様である。従って、このケースでは図7を
用いて説明した従来例と同様のステップで処理が実行さ
れる。
【0044】本発明は以上の実施例に限定されない。上
記実施例においては、命令メモリからの命令読み出しを
1クロック時間に1命令とした。従って、条件分岐命令
の分岐が成立した場合に、その条件分岐命令の直後に2
個のノーオペレーション命令を挿入した。しかしなが
ら、命令メモリから命令読み出しを1クロック時間に2
命令以上となるよう構成すれば、条件分岐命令において
分岐が成立する場合に条件分岐命令の直後に1つのノー
オペレーション命令を挿入して上記条件を満足すること
も可能である。
【0045】また、上記の順序制御部30や命令判定部
40の構成は上記の機能を満足する同様の機能ブロック
に置き換えて差し支えなく、またノーオペレーション命
令挿入部21等も含めてこれらを同様の機能を有する回
路等に置き換えて差し支えてない。
【0046】
【発明の効果】以上説明した本発明の命令供給装置は、
パイプラインプロセッサにおいて、順に入力する命令を
フェッチして出力順を制御する順序制御部と、順に入力
する命令が無条件分岐命令か条件分岐命令かそれ以外の
命令かを判定する命令判定部と、順序制御部に対しノー
オペレーション命令を供給するノーオペレーション命令
供給部とを備え、順序制御部が実行すべき命令とその命
令の次に実行すべき命令を先行してフェッチし、実行す
べき命令が分岐命令でなく次の次に実行すべき命令が無
条件分岐命令である場合、次に実行すべき命令と次の次
に実行すべき命令を入れ換えて命令実行部に供給するの
で、無条件分岐命令に対してはノーオペレーション命令
を挿入することなく処理が実行できる。従って、プログ
ラム中に予めノーオペレーション命令を含めることなく
プログラムを短縮化することができる。また、パイプラ
インの構造に関係なく、オブジェクトコードを生成する
ことができる。
【0047】更に、次に実行すべき命令とその命令の直
後にある命令を先行してフェッチし、次に実行すべき命
令が条件分岐命令であり、かつ分岐条件が成立する場合
には、条件分岐命令と分岐先命令との間に1個以上のノ
ーオペレーション命令を挿入して命令実行部に供給する
ので、オブジェクトコードに予めノーオペレーション命
令を挿入しておくことなく自動的にノーオペレーション
命令の挿入が可能となる。従って、既存の一般的なプロ
グラムをパイプライン処理用に書き換えることなく、そ
のままパイプラインプロセッサに適用できるという効果
がある。
【0048】更に、次に実行すべき命令が条件分岐命令
で、かつ分岐条件が成立しない場合には、条件分岐命令
と条件分岐命令の直後にある命令をノーオペレーション
命令を挿入せずに連続して命令実行部に供給するので、
条件分岐が成立しない場合にも無駄なノーオペレーショ
ン命令を実行することなく処理の高速化が図られる。以
上によって、プログラムサイズを縮小しパイプライン構
造に依存しないプログラムとすることができると共に、
プログラム実行時間を短縮するといった効果がある。
【図面の簡単な説明】
【図1】本発明の命令供給装置実施例を示すブロック図
である。
【図2】従来のパイプラインプロセッサのブロック図で
ある。
【図3】命令コードのフォーマット説明図である。
【図4】基本動作シーケンスタイミングチャートであ
る。
【図5】分岐命令を含むプログラム例説明図である。
【図6】条件分岐で分岐が発生しない場合の実行タイミ
ングチャート(従来)である。
【図7】条件分岐で分岐が発生する場合の実行タイミン
グチャート(従来)である。
【図8】本発明の装置を備えるパイプラインプロセッサ
のブロック図である。
【図9】本発明の装置のセレクタ動作説明図である。
【図10】本発明による分岐命令を含むプログラム説明
図である。
【図11】条件分岐で分岐が発生しない場合の実行タイ
ミングチャート(本発明)である。
【図12】条件分岐で分岐が発生する場合の実行タイミ
ングチャート(本発明)である。
【符号の説明】
1 命令メモリ 5 命令実行部 20 命令供給部 21 ノーオペレーション命令挿入部 30 順序制御部 40 命令判定部

Claims (1)

    【特許請求の範囲】
  1. 【請求項1】 分岐命令を含む命令セットを実行するパ
    イプラインプロセッサに設けられ、 順に入力する命令をフェッチしてその出力順を制御する
    順序制御部と、 順に入力する命令が無条件分岐命令か条件分岐命令かそ
    れ以外の命令かを判定する命令判定部と、 前記順序制御部に対しノーオペレーション命令を挿入す
    るノーオペレーション命令挿入部とを備え、 前記順序制御部は、 前記命令判定部とノーオペレーション命令挿入部の出力
    を受け入れて、 次に実行すべき命令とその命令の次に実行すべき命令を
    先行してフェッチし、 次に実行すべき命令が分岐命令でなく、かつ、次の次に
    実行すべき命令が、無条件分岐命令である場合には、 次に実行すべき命令と次の次に実行すべき命令を入れ換
    えて、命令実行部に供給し、 次に実行すべき命令とその命令の直後にある命令を先行
    してフェッチし、 次に実行すべき命令が、条件分岐命令であり、かつ分岐
    条件が成立する場合には、 条件分岐命令と分岐先命令との間に、1個以上のノーオ
    ペレーション命令を挿入して、命令実行部に供給し、 次に実行すべき命令が、条件分岐命令であり、かつ分岐
    条件が成立しない場合には、 条件分岐命令と条件分岐命令の直後にある命令を、ノー
    オペレーション命令を挿入せずに連続して、命令実行部
    に供給することを特徴とする命令供給装置。
JP25771093A 1993-09-21 1993-09-21 命令供給装置 Pending JPH0793151A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP25771093A JPH0793151A (ja) 1993-09-21 1993-09-21 命令供給装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP25771093A JPH0793151A (ja) 1993-09-21 1993-09-21 命令供給装置

Publications (1)

Publication Number Publication Date
JPH0793151A true JPH0793151A (ja) 1995-04-07

Family

ID=17310038

Family Applications (1)

Application Number Title Priority Date Filing Date
JP25771093A Pending JPH0793151A (ja) 1993-09-21 1993-09-21 命令供給装置

Country Status (1)

Country Link
JP (1) JPH0793151A (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6564316B1 (en) * 1998-09-10 2003-05-13 Parthusceva Ltd. Method and apparatus for reducing code size by executing no operation instructions that are not explicitly included in code using programmable delay slots
US7603545B2 (en) 2002-06-28 2009-10-13 Fujitsu Limited Instruction control method and processor to process instructions by out-of-order processing using delay instructions for branching
US7765387B2 (en) 2002-06-28 2010-07-27 Fujitsu Limited Program counter control method and processor thereof for controlling simultaneous execution of a plurality of instructions including branch instructions using a branch prediction mechanism and a delay instruction for branching
JP2015135538A (ja) * 2014-01-16 2015-07-27 三菱電機株式会社 プロセッサ

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6564316B1 (en) * 1998-09-10 2003-05-13 Parthusceva Ltd. Method and apparatus for reducing code size by executing no operation instructions that are not explicitly included in code using programmable delay slots
US7603545B2 (en) 2002-06-28 2009-10-13 Fujitsu Limited Instruction control method and processor to process instructions by out-of-order processing using delay instructions for branching
US7765387B2 (en) 2002-06-28 2010-07-27 Fujitsu Limited Program counter control method and processor thereof for controlling simultaneous execution of a plurality of instructions including branch instructions using a branch prediction mechanism and a delay instruction for branching
JP2015135538A (ja) * 2014-01-16 2015-07-27 三菱電機株式会社 プロセッサ

Similar Documents

Publication Publication Date Title
US4858104A (en) Preceding instruction address based branch prediction in a pipelined processor
JP3658101B2 (ja) データ処理装置
US4926312A (en) Program skip operation control system
KR20020073233A (ko) 코프로세서 명령 실행 장치 및 방법
CA2016145C (en) Control device having a function of modifying a micro instruction
JPH0793151A (ja) 命令供給装置
JPH0418635A (ja) ディジタル信号プロセッサ
US6182211B1 (en) Conditional branch control method
JP3599499B2 (ja) 中央処理装置
US5038280A (en) Information processing apparatus having address expansion function
EP0573071A2 (en) A microprocessor
JPH06324884A (ja) データ処理装置
JP2825315B2 (ja) 情報処理装置
JP2591325B2 (ja) 分岐制御装置
KR100515039B1 (ko) 조건부 명령어를 고려한 파이프라인 상태 표시 회로
JPH07175650A (ja) 演算処理装置
JP2856373B2 (ja) データ処理装置
JP2005134987A (ja) パイプライン演算処理装置
JPH0512009A (ja) デイジタル信号処理装置
JPH11327929A (ja) プログラム制御装置
JPH0997180A (ja) プログラマブルコントローラ
JP2004062427A (ja) マイクロプロセッサ
JPH0433021A (ja) 分岐命令制御方式
JPH07152564A (ja) マイクロプロセッサ
JPH05241825A (ja) マイクロプロセッサ