JP3150667B2 - 条件フラグ書き換え制御方法及び回路 - Google Patents

条件フラグ書き換え制御方法及び回路

Info

Publication number
JP3150667B2
JP3150667B2 JP10890199A JP10890199A JP3150667B2 JP 3150667 B2 JP3150667 B2 JP 3150667B2 JP 10890199 A JP10890199 A JP 10890199A JP 10890199 A JP10890199 A JP 10890199A JP 3150667 B2 JP3150667 B2 JP 3150667B2
Authority
JP
Japan
Prior art keywords
instruction
condition flag
rewriting
branch
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 - Fee Related
Application number
JP10890199A
Other languages
English (en)
Other versions
JPH11327901A (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.)
Panasonic Corp
Panasonic Holdings Corp
Original Assignee
Panasonic Corp
Matsushita Electric Industrial 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 Panasonic Corp, Matsushita Electric Industrial Co Ltd filed Critical Panasonic Corp
Priority to JP10890199A priority Critical patent/JP3150667B2/ja
Publication of JPH11327901A publication Critical patent/JPH11327901A/ja
Application granted granted Critical
Publication of JP3150667B2 publication Critical patent/JP3150667B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Landscapes

  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、プロセッサにおけ
る分岐動作の制御に関するものであり、特に、条件分岐
命令が参照する条件フラグの書き換えの制御に関する。
【0002】
【従来の技術】命令をパイプライン的に実行するいわゆ
るパイプライン処理方式において、遅延分岐とよばれる
方式が従来から用いられていた。例えば図10に示すよ
うな、命令フェッチ(F)、命令デコード(D)、命令
実行(E)の3段階のステージからなるパイプライン処
理によって、命令の処理が行なわれる場合を考える。図
10から分かるように、パイプライン処理では分岐命令
のデコードが完了した後に分岐先の命令がフェッチされ
るため、少なくとも1ステージ分の空きスロット(遅延
スロット)が生じることになる。遅延スロットの数は、
パイプライン処理におけるフェッチ及び実行ステージ以
外のステージの数で与えられる。
【0003】遅延分岐とは、分岐命令の次の番地にある
命令を遅延スロットに挿入することによって無駄な空き
スロットを除去する方式であり、この方式を用いること
によって、情報処理装置の性能の向上が見込まれる(特
開平4−127237号公報、特開平3−122718
号公報参照)。
【0004】また、条件分岐命令は、演算命令や転送命
令等の実行結果が反映された条件フラグに従って分岐す
るか否かが決定されるものであるが、従来には、条件フ
ラグの書き換えを制御して命令の実行順を決めるときの
自由度を向上させる方法があった。例えば、RISCプ
ロセッサSPARCでは、演算命令のコード中に条件フ
ラグの書き換えをするか否かを決める制御ビットを1ビ
ット設けて、この制御ビットの値が“1”のときは演算
結果を条件フラグに反映する一方、“0”のときは条件
フラグを書き換えないようにする("SPARC Architectur
e Manual",SunMicrosystems Inc.,1991)。このような
方法により、条件フラグを書き換えるか否かを各命令毎
に制御することができるので、コンパイラ等において命
令の実行順を決めるときの自由度が向上する。
【0005】
【発明が解決しようとする課題】しかしながら、従来に
は以下のような問題があった。
【0006】まず、前記のような遅延分岐方式では、遅
延分岐命令が連続する場合には命令の実行順が複雑にな
るという問題があった。
【0007】図11は遅延分岐命令が連続する場合のア
センブラ言語レベルでのプログラムの一例を示した図で
あり、アドレス100には第1の遅延分岐命令br20
0(条件が成立したときアドレス200に分岐)が、ア
ドレス101には第2の遅延分岐命令br400(条件
が成立したときアドレス400に分岐)が記述されてい
る。図12は図11に示すプログラムを実行するとき
の、各遅延分岐命令における分岐の有無と命令の実行順
との関係を示す図である。図11に示すプログラムの動
作は、第1の遅延分岐命令br200によって分岐する
場合としない場合との2つの場合に分かれ、さらに第2
の遅延分岐命令br400によって分岐する場合としな
い場合との2つの場合に分かれるので、図12に示すよ
うに計4つの場合が考えられる。
【0008】ここで、第1及び第2の遅延分岐命令br
200,br400において共に条件が成立して分岐す
る場合は、図13に示すように、第1の遅延分岐命令b
r200の分岐条件成立によってアドレス200の命令
がフェッチされた後(図13ではアドレス200の命令
のことを(200)と記している)、第2の遅延分岐命
令br400の分岐条件成立によってアドレス400の
命令がフェッチされる(図13ではアドレス400の命
令のことを(400)と記している)ことになる。した
がって、この場合には図12に示すように、第1の遅延
分岐命令br200の分岐先(アドレス200)に飛ん
で命令を1つだけ実行した後、さらに第2の遅延分岐命
令br400の分岐先(アドレス400)に飛んで命令
を実行するという複雑な動作を行う。
【0009】このことは、アセンブラ言語レベルにおけ
るプログラムの読みやすさを著しく損なうことになり、
プログラムにバグを作り込んでしまう原因となる。
【0010】特に、遅延分岐について十分理解していな
いプログラマはこのような動作を予想せずにプログラム
を作ってしまうので、確実にバグを作り込んでしまう。
しかもこのバグは、連続する遅延分岐命令が共に条件成
立して分岐する場合にのみ分かるものなので、事前にデ
バッグすることは極めて困難であり、装置を実際に動作
させるまで発見できないことが多い。
【0011】また、遅延分岐について熟知しているベテ
ランのプログラマは、この問題を回避するために連続す
る遅延分岐命令の間に無操作命令(NOP)を挿入する
等の対応をプログラムに施すが、このような対応は面倒
であり、また忘れることも多い。さらに、プロセッサの
遅延スロット数が多くなるとその数だけの無操作命令を
挿入する必要があるため、プログラムが冗長になると共
にプログラムを記憶するメモリ容量も増えてしまう。
【0012】この問題は、遅延分岐命令が連続していな
くても、プログラムの並び上比較的近い場合にも起こり
うる。図12及び図13ではプロセッサの遅延スロット
数は1であるものとしたが、プロセッサの遅延スロット
数がもっと多い場合には、遅延分岐命令が連続していな
くてもその間隔がプロセッサの遅延スロット数よりも小
さい場合には同様の問題が生じ、分岐が共に成立すると
きには命令の実行順が複雑になる。
【0013】一方、遅延分岐命令のコードの中に遅延分
岐するか否かを決定する制御ビットを設けて、この制御
ビットが0のときは、条件分岐が成立したときに遅延ス
ロットに置かれた命令を実行しないタイプのプロセッサ
がある(特開平4−127237号公報参照)。図14
はこのタイプのプロセッサによって図11に示すプログ
ラムを実行するときの、各遅延分岐命令における分岐の
有無と命令の実行順との関係を示す図である。図14に
おいて、遅延スロットに置かれた命令が実行されないこ
とを「***」によって示している。この場合、第1の
遅延分岐命令br200の制御ビットを0に設定してお
くと、図14に示すように、第1の遅延分岐命令br2
00によってアドレス200に分岐するか否かが決定さ
れ、分岐しなかったときのみ第2の遅延分岐命令br4
00が実行されるので、アセンブラ言語レベルにおける
プログラムの読みやすさを損なうことはない。
【0014】しかし、命令コード中に遅延分岐をするか
否かを決定する制御ビットを設けることは命令コードの
ビット幅を1ビット増やすことになるので、プログラム
を記憶するためのメモリ容量が増大するという問題が生
じる。特に携帯情報機器においてメモリ容量の増大は、
機器の大きさ、消費電力、製造コスト等の面において致
命的な欠点となる。またこの場合には、遅延分岐命令コ
ードの制御ビットに基づく遅延分岐制御を行う回路が命
令デコーダ内に必要になる。
【0015】また命令コードのビット幅が規格によって
すでに決められている場合には、制御ビットを設けるこ
とは、たとえ1ビットであっても、装置設計上、大きな
制約になる。例えば命令コードが24ビットのとき、命
令の種類や指定アドレス等を表す必要なビットを除くと
設計上自由に用いることができるビット数はせいぜい数
ビットであるので、制御ビットがたとえ1ビットであっ
ても、設計の自由度は大きく損なわれることになる。
【0016】同様の問題は、従来の条件フラグの書き換
え制御の場合にも生じる。すなわち、条件フラグの書き
換えのための制御ビットを命令コード中に設けるという
ことは、プログラムを記憶するためのメモリ容量が増大
するという問題、命令コードの制御ビットに基づく条件
フラグ書き換え制御を行う回路が命令デコーダ内に必要
になるという問題、さらには、装置設計の自由度を損な
うという問題が生じる。
【0017】前記の問題に鑑み、本発明は、命令コード
中に制御ビットを設けないで、条件フラグの書き換えを
制御する条件フラグ書き換え制御方法を提供し、さらに
この方法を実現するための回路を提供することを目的と
する。
【0018】
【課題を解決するための手段】前記の課題を解決するた
めに、請求項1の発明が講じた解決手段は、プロセッサ
において、条件フラグの書き換えを制御する条件フラグ
書き換え制御方法として、条件フラグ書き換え制御のた
めの制御ビットが設けられていない命令コードからなる
プログラムを対象とし、前記プログラムにおいて、条件
分岐命令の前に実行される条件フラグを書き換え可能な
命令同士の実行順序、または条件フラグを書き換え可能
な命令と前記条件分岐命令の実行順序を認識し、認識し
た実行順序が所定のルールに合致するか否かに応じて
件フラグの書き換えを許可するか禁止するかを制御する
ものである。
【0019】請求項1の発明によると、プログラムにお
ける命令の前後関係に基づいて条件フラグの書き換えを
許可するか禁止するかが制御されるので、条件フラグの
書き換えの制御がプログラムにおける命令の前後関係に
基づいてルール化できるときは、命令コード中に条件フ
ラグの書き換え制御ビットを設ける必要がなくなる。
【0020】そして、請求項2の発明では、前記請求項
1の条件フラグ書き換え制御方法は、比較命令が実行さ
れてから条件分岐命令が実行されるまでの間は、演算命
令を実行するとき、条件フラグの書き換えを禁止するも
のとする。
【0021】請求項2の発明は、比較命令は条件フラグ
を書き換えるための命令であって、条件分岐命令の実行
を前提とした命令であることに基づいたものである。す
なわち、請求項2の発明によると、比較命令によって条
件フラグが書き換えられたときは、次に条件分岐命令等
の条件フラグを参照する命令が実行するまでは、その間
に実行される演算命令によって条件フラグは壊されな
い。このため、演算命令のコードに条件フラグの書き換
え制御ビットを設けなくても、比較命令と条件分岐命令
との間の演算命令は条件フラグを書き換えないという制
御を実現することができる。
【0022】また、請求項3の発明では、前記請求項1
の条件フラグ書き換え制御方法は、演算命令を実行する
とき、次に実行する命令が条件フラグを書き換える命令
であるときは、条件フラグの書き換えを禁止するものと
する。
【0023】請求項3の発明は、演算命令によって条件
フラグを書き換えても、条件分岐命令によって条件フラ
グが参照されない場合はこの条件フラグの書き換え動作
は無駄になることに基づいたものである。すなわち、請
求項3の発明によると、演算命令を実行するとき、次に
実行する命令が条件フラグを書き換える命令であるとき
は、条件フラグの書き換えは行われない。このため、演
算命令のコードに条件フラグの書き換え制御ビットを設
けなくても、次に実行する命令が条件フラグを書き換え
る命令であるときの演算命令は条件フラグを書き換えな
いという制御を実現することができる。
【0024】また、請求項4の発明では、前記請求項1
の条件フラグ書き換え制御方法は、演算命令を実行する
とき、次に実行する命令が条件分岐命令であるときの
み、条件フラグの書き換えを許可するものとする。
【0025】請求項4の発明は、次の命令が条件分岐命
令であるときは演算命令による条件フラグの書き換えは
有効であることに基づいたものである。すなわち、請求
項4の発明によると、演算命令を実行するとき、次に実
行する命令が条件分岐命令であるときのみ、条件フラグ
の書き換えが行われる。このため、演算命令のコードに
条件フラグの書き換え制御ビットを設けなくても、次に
実行する命令が条件分岐命令であるときのみ演算命令は
条件フラグを書き換えるという制御を実現することがで
きる。
【0026】また、請求項5の発明が講じた解決手段
は、プロセッサに設けられ、条件フラグの書き換えを制
御する条件フラグ書き換え制御回路として、条件フラグ
書き換え制御のための制御ビットが設けられていない命
令コードからなるプログラムを入力とし、前記プログラ
ムにおいて、条件分岐命令の前に実行される条件フラグ
を書き換え可能な命令同士の実行順序、または、条件フ
ラグを書き換え可能な命令と前記条件分岐命令の実行順
序を認識し、認識した実行順序が所定のルールに合致す
るか否かに応じて条件フラグの書き換えを許可するか禁
止するかを制御するものである。
【0027】請求項5の発明によると、プログラムにお
ける命令の前後関係に基づいて条件フラグの書き換えを
許可するか禁止するかが制御されるので、条件フラグの
書き換えの制御がプログラムにおける命令の前後関係に
基づいてルール化できるときは、命令コード中に条件フ
ラグの書き換え制御ビットを設ける必要がなくなる。
【0028】そして、請求項6の発明では、前記請求項
5の条件フラグ書き換え制御回路は、比較命令が実行さ
れたとき出力信号をセットする一方、条件分岐命令が実
行されたとき出力信号をクリアする条件フラグロック回
路と、演算命令を実行するとき、前記条件フラグロック
回路の出力信号がセットされているときは条件フラグの
書き換えを禁止する書き換え判定回路とを備えているも
のとする。
【0029】また、請求項7の発明では、前記請求項5
の条件フラグ書き換え制御回路において、前記プロセッ
サは命令のデコードと実行とをパイプライン処理するも
のであり、当該条件フラグ書き換え制御回路は、実行ス
テージの命令が演算命令であるとき、デコードステージ
の命令が条件フラグを書き換える命令であるときは条件
フラグの書き換えを禁止する論理回路を備えているもの
とする。
【0030】また、請求項8の発明では、前記請求項5
の条件フラグ書き換え制御回路において、前記プロセッ
サは命令のデコードと実行とをパイプライン処理するも
のであり、当該条件フラグ書き換え制御回路は、実行ス
テージの命令が演算命令であるとき、デコードステージ
の命令が条件分岐命令であるときのみ条件フラグの書き
換えを許可する論理回路を備えているものとする。
【0031】なお請求項6〜8の条件フラグ書き換え制
御回路は、割り込み処理にも対応可能である。例えば請
求項6の条件フラグ書き換え制御回路において、比較命
令と条件分岐命令との間で割り込みが発生した場合は、
条件フラグロック回路の状態を退避させると共に、割り
込み処理から戻るときに条件フラグロック回路の状態を
復帰させればよい。もちろん、比較命令と条件分岐命令
との間を割り込み禁止に制御してもよい。また請求項8
の条件フラグ書き換え制御回路において、演算命令と条
件分岐命令との間に割り込みが発生したときには、演算
命令によって条件フラグを更新した後に退避させると共
に、割り込み処理から戻るときに条件フラグを復帰させ
ればよい。もちろん、演算命令と条件分岐命令との間を
割り込み禁止に制御してもよい。
【0032】
【発明の実施の形態】まず、本実施形態において用いる
遅延分岐制御に関する原理について説明する。
【0033】課題の項で説明したように、遅延分岐方式
のプロセッサにおいて、遅延分岐命令が連続した場合に
アセンブラ言語レベルにおけるプログラムの読みやすさ
を著しく損なうような複雑な動作となるのは、連続する
遅延分岐命令の両方において共に分岐条件が成立したと
きのみである。一方、分岐条件が不成立の場合の遅延分
岐命令の動作はNOP命令(無操作命令)と同じであ
り、何も実行しなかったことに等しい。
【0034】したがって、遅延分岐命令の分岐条件が成
立した場合は、遅延スロットに置かれている遅延分岐命
令が常に分岐不成立になるよう制御すれば、アセンブラ
言語レベルにおけるプログラムの読みやすさを著しく損
なうような動作を避けることが可能となる。
【0035】図1はこのような原理に基づいた遅延分岐
制御回路の構成を示す図である。図1において、11は
分岐情報記憶回路としてのシフトレジスタ、12は分岐
指示信号SIを出力する分岐判定回路としての論理積ゲ
ート、13は論理積ゲート12から出力された分岐指示
信号SIをシフトレジスタ11に反転入力するインバー
タである。
【0036】シフトレジスタ11はプロセッサの遅延ス
ロット数のフリップフロップからなり、サイクル毎にす
なわちプロセッサにおいて命令が実行される度に、イン
バータ13を介して分岐指示信号SIを反転入力すると
共に保持している信号をシフトする。すなわちシフトレ
ジスタ11はプロセッサの遅延スロット数だけ過去に遡
ったときの分岐の発生の有無を記憶しており、記憶して
いる情報を分岐情報記憶信号SRとして論理積ゲート1
2に入力する。
【0037】論理積ゲート12は分岐命令における分岐
条件が成立して分岐成立実行信号SEaが入力され、か
つ、シフトレジスタ11から入力された分岐情報記憶信
号SRが過去に分岐が発生しなかったことを示すときに
のみ、分岐指示信号SIを出力する。
【0038】すなわち図1に示す遅延分岐制御回路は、
分岐命令による過去の分岐発生情報をプロセッサの遅延
スロット数だけシフトレジスタ11に記憶し、シフトレ
ジスタ11に過去に分岐が発生したことが記憶されてい
る間は無条件に分岐不成立になるよう制御するものであ
る。
【0039】図2は図1に示す遅延分岐制御回路の動作
を示す図であり、図11に示すプログラムをパイプライ
ン処理で実行したときの動作を示す図である。図2では
プロセッサの遅延スロット数は1としている。図2に示
すように、図1に示す遅延分岐制御回路を用いると、分
岐条件が成立した場合、シフトレジスタ11に記憶され
ている分岐情報が偽のときは分岐は行われる一方、真の
ときは分岐は行われないことになる。したがって、遅延
分岐命令が連続する場合において、第1の分岐命令br
200で分岐が行われたときは、第2の条件分岐命令b
r400は常に分岐不成立になる。
【0040】図1に示す遅延分岐制御回路では、分岐情
報を遅延スロット数だけ記憶するために遅延スロット数
個のフリップフロップからなるシフトレジスタ11を設
けたが、図3に示すように、シフトレジスタ11の代わ
りにカウンタ16及びラッチ回路としてのRSラッチ1
7を用いてもよい。図3に示す遅延分岐制御回路では、
カウンタ16及びRSラッチ17によって分岐情報記憶
回路が構成されており、分岐指示信号SIによってRS
ラッチ17をクリアすると同時にカウンタ16の計数動
作をスタートさせる。カウンタ16はプロセッサが命令
を実行する度に計数動作を行い、計数値が遅延スロット
数に達したときにRSラッチ17をセットする。すなわ
ちRSラッチ17の出力信号は、遅延スロット数だけ過
去に遡ったときに分岐が発生していないときのみセット
されている。RSラッチ17の出力信号は分岐情報記憶
信号SRとして論理積ゲート18に入力され、論理積ゲ
ート18は分岐情報記憶信号SRに従って分岐指示信号
SIの出力を制御する。これによって、分岐が行われて
から遅延スロット数の命令が実行されるまでは、分岐を
禁止することができる。
【0041】なお図1及び図3に示す遅延分岐制御回路
において、分岐命令が無条件分岐命令の場合でもこれを
常に分岐が成立する条件分岐命令と考えれば、特別な措
置を設ける必要はない。
【0042】また、現実行サイクルの1つ前からプロセ
ッサの遅延スロット数前までの全てのサイクルについ
て、分岐の発生の有無を記憶する必要は必ずしもない。
プロセッサの設計次第では、現実行サイクルの1つ前か
らプロセッサの遅延スロット数前までのサイクルの一部
についての分岐の発生の有無を、分岐を禁止するか否か
の条件としてもよい。この場合には例えば、図1に示す
遅延分岐制御回路では、シフトレジスタ11を構成する
フリップフロップのうち分岐の発生の有無を条件とする
サイクルに対応するフリップフロップの出力信号のみ
を、分岐情報記憶信号SRとして論理積ゲート12に入
力すればよい。
【0043】次に、本発明に係る条件フラグ書き換え制
御に関する原理について説明する。
【0044】比較命令は条件フラグを書き換えるための
命令であって、条件分岐命令の実行を前提とした命令で
ある。したがって、比較命令の実行によって条件フラグ
が書き換えられてから条件分岐命令の実行によって条件
フラグが参照されるまでの間は、条件フラグの書き換え
を禁止するように制御すれば、比較命令と分岐条件命令
との間に、通常は条件フラグを書き換える動作を伴う演
算命令を実行しても、比較命令の結果によって条件成立
又は不成立を決めることができる。
【0045】図4はこのような原理に基づいた本発明の
実施形態に係る条件フラグ書き換え制御回路を示す図で
あり、(a)は構成図、(b)は(a)に示す回路の動
作を示す図である。図4(a)において、21は比較実
行信号SEc及び条件分岐実行信号SEbを入力とし、
比較命令が実行されるとセットされる一方、条件分岐命
令が実行されるとクリアされる条件フラグロック回路と
しての条件フラグロックレジスタ、22は反転ゲート、
23は演算実行信号SEdを入力とし、演算命令の実行
のときに条件フラグロックレジスタ21の出力信号に応
じて条件フラグの書き換えを指示する条件フラグ書き換
え信号SFを出力する書き換え判定回路としての論理積
ゲートである。
【0046】条件フラグロックレジスタ21の出力信号
は、比較命令の実行によって真となる一方、条件分岐命
令の実行によって偽となる。条件フラグレジスタ21の
出力信号は反転ゲート22によって反転されて論理積ゲ
ート23に入力される。このため、演算命令が実行され
るときは、条件フラグロックレジスタ21の出力信号が
偽のときのみ、論理積ゲート23から条件フラグ書き換
え信号SFが出力される。
【0047】したがって、図4(b)に示すように、比
較命令(CMP)が実行されてから条件分岐命令(B
R)が実行されるまでの間は、演算命令(ADD)が実
行されても条件フラグレジスタ21がセットされている
ので条件フラグ書き換え信号SFは出力されず、条件フ
ラグは書き換えられることはない。
【0048】また、パイプライン方式のプロセッサで
は、命令を実行するときに次の命令がデコードされるの
で、命令実行の際に次の命令の種類を知ることが可能で
ある。このことを利用して、次に示すような2つの条件
フラグ書き換え制御の方法が考えられる。
【0049】演算命令によって条件フラグを書き換えた
としても、条件分岐命令によって条件フラグが参照され
ない場合は条件フラグの書き換えは無駄である。したが
って、第1の方法として、演算命令の実行サイクルにお
いて、次の命令も条件フラグを書き換える命令であると
きは、条件フラグの書き換えが無駄になることが明白な
ので、条件フラグの書き換えをしないように制御する。
【0050】図5はこのような第1の方法を実現する本
発明の実施形態に係る条件フラグ書き換え制御回路を示
す図であり、(a)は構成図、(b)は(a)に示す回
路の動作を示す図である。図5(a)において、NOR
ゲート24は比較命令がデコードステージにあることを
示す比較信号SDc及び演算命令がデコードステージに
あることを示す演算信号SDdを入力とし、比較信号S
Dc又は演算信号SDdが真のときすなわち比較又は演
算命令がデコードステージにあるとき、演算命令による
条件フラグの書き換えを禁止する信号を出力する。論理
積ゲート25は演算命令が実行ステージにあることを示
す演算実行信号SEdを入力とし、演算実行信号SEd
が真のときすなわち演算命令が実行ステージにあると
き、NORゲート24の出力信号によって条件フラグの
書き換えが禁止されていないときのみ、出力信号を真に
する。論理和ゲート26は論理積ゲート25の出力信号
が真であるときに条件フラグ書き換え信号SFを出力す
る。すなわち、演算命令の実行サイクルにおいて、次に
実行する命令が条件フラグを書き換えない命令のときの
み、条件フラグ書き換え信号SFが出力されることにな
る。また論理和ゲート26は比較命令が実行ステージに
あることを示す比較実行信号SEcが真のときは常に条
件フラグ書き換え信号SFを出力する。
【0051】したがって、図5(b)に示すように、実
行ステージに演算命令(AD1)があるときでも、デコ
ードステージに演算命令(AD2)があるときは条件フ
ラグは書き換えられない。
【0052】また、第2の方法として、演算命令の実行
サイクルにおいて、次の命令が条件分岐命令であるとき
は、条件フラグの書き換えが有効になることが明白なの
で、このときのみ、条件フラグの書き換えをするように
制御する。
【0053】図6はこのような第2の方法を実現する本
発明の実施形態に係る条件フラグ書換制御回路を示す図
であり、(a)は構成図、(b)は(a)に示す回路の
動作を示す図である。図6(a)において、論理積ゲー
ト27は条件分岐命令がデコードステージにあることを
示す条件分岐信号SDb及び演算命令が実行ステージに
あることを示す演算実行信号SEdを入力とし、条件分
岐信号SDb及び演算実行信号SEdが共に真のときす
なわち演算命令が実行ステージにありかつ条件分岐命令
がデコードステージにあるとき、出力信号を真にする。
論理和ゲート28は論理積ゲート27の出力信号が真で
あるときに条件フラグ書き換え信号SFを出力する。す
なわち、演算命令の実行サイクルにおいて、次に実行す
る命令が条件分岐命令のときのみ条件フラグ書き換え信
号SFが出力されることになる。また論理和ゲート28
は比較命令が実行ステージにあることを示す比較実行信
号SEcが真のときは常に条件フラグ書き換え信号SF
を出力する。
【0054】したがって、図6(b)に示すように、実
行ステージに演算命令(AD1)がありかつデコードス
テージに条件分岐命令(BR)があるときは条件フラグ
は書き換えられるが、実行ステージに演算命令(AD
2)がありかつデコードステージに条件分岐命令がない
ときは条件フラグは書き換えられない。
【0055】なお、パイプライン段数が深いときは次に
実行する命令だけではなくこれ以降に実行する命令の種
類も知ることができるので、これらの情報を基にして、
第1又は第2の方法によって条件フラグの書き換えを制
御できることはいうまでもない。
【0056】図7は本発明の実施形態に係る遅延分岐制
御回路及び条件フラグ書き換え制御回路を備えた,パイ
プライン方式のプロセッサの構成を示すブロック図であ
る。図7では、遅延分岐制御と条件フラグ書き換え制御
に関わる部分以外は簡略化して図示している。
【0057】図7において、命令メモリ101は命令コ
ードを記憶するメモリであり、プログラムカウンタ(P
C)102からアドレス指定された命令を命令デコーダ
110に出力する。命令デコーダ110は分岐命令デコ
ーダ111、比較命令デコーダ112、及び演算命令デ
コーダ113を備えており、分岐命令デコーダ111は
命令メモリ101から入力された命令のうち分岐命令を
解読して、分岐信号SDbを出力すると共に条件フラグ
レジスタ103を参照して分岐が成立するか否かを判定
し、分岐が成立したときは分岐成立信号SDaを出力す
る。比較命令デコーダ112は命令メモリ101から入
力された命令のうち比較命令を解読して、比較信号SD
cを出力する。演算命令デコーダ113は命令メモリ1
01から入力された命令のうち演算命令を解読して、演
算信号SDdを出力する。分岐成立信号SDa、分岐信
号SDb、比較信号SDc、及び演算信号SDdはそれ
ぞれ遅延回路(FF)104によって実行ステージのタ
イミング信号である,分岐成立実行信号SEa、分岐実
行信号SEb、比較実行信号SEc、及び演算実行信号
SEdにタイミング調整される。
【0058】遅延分岐制御回路120は図1に示す遅延
分岐制御回路と同様の構成を採用しており、1個のフリ
ップフロップからなる分岐情報記憶回路121と、反転
ゲート122及び論理積ゲート123によって構成さ
れ、分岐成立実行信号SEaと分岐情報記憶回路121
の出力信号の反転信号との論理積信号を分岐指示信号S
Iとして出力し、選択器105はこの分岐指示信号SI
によってPC102の入力信号を選択する。また分岐指
示信号SIは分岐情報記憶回路121によって保持され
る。
【0059】条件フラグ書き換え制御回路130は図4
及び図5に示す条件フラグ書き換え制御回路と同様の構
成を採用しており、条件フラグロックレジスタ131、
反転ゲート135及び論理積ゲート133によって図4
と同様の構成が実現されており、論理和ゲート136、
反転ゲート132、論理積ゲート133及び論理和ゲー
ト134によって図5と同様の構成が実現されている。
条件フラグロックレジスタ131は、比較実行信号SE
cをセット信号として入力すると共に分岐実行信号SE
bをクリア信号として入力し、条件フラグロック信号を
出力する。論理和ゲート136及び反転ゲート132に
よって生成された,演算信号SDdと比較信号SDcと
の論理和の反転信号と、条件フラグロック信号の反転信
号と、演算実行信号SEdとの論理積を論理積ゲート1
33によってとり、この論理積信号と比較実行信号SE
cとの論理和信号を条件フラグ書き換え信号SFとして
出力する。条件フラグ書き換え制御回路130から出力
された条件フラグ書き換え信号SFによって、演算器1
40内の条件フラグ生成回路141の動作と条件フラグ
レジスタ103の更新が制御される。
【0060】図7に示すプロセッサにおける遅延分岐制
御の動作について、図8に示すフローチャートに従って
説明する。
【0061】まずステップST11において、実行する
命令が遅延分岐命令であるか否かを判定する。実行する
命令が遅延分岐命令でないときはステップST15にす
すみ、当然のことながら分岐しないものとし、実行する
命令が遅延分岐命令であるときはステップST12にす
すむ。ステップST12において、1サイクル前に実行
した命令が遅延分岐命令でありかつ分岐したか否かを判
定する。遅延分岐命令でありかつ分岐したときはステッ
プST15にすすみ分岐しないものとし、そうでないと
きはステップST13にすすむ。ステップST13にお
いて、分岐条件が成立するか否かを判定する。分岐条件
が成立するときはステップST14にすすみ分岐するも
のとし、成立しないときはステップST15にすすみ分
岐しないものとする。
【0062】図7に示すプロセッサにおける具体的な動
作としては、例えば、遅延分岐命令が連続している場
合、1つめの遅延分岐命令において分岐しなかったとき
は、分岐指示信号SIが偽となるため、次の遅延分岐命
令に対して、遅延分岐制御回路120内の分岐情報記憶
回路121に接続された反転回路122の出力信号は真
になるので、分岐成立信号SEaに従って分岐するか否
かが決定される。一方、1つめの遅延分岐命令において
分岐したときは、分岐指示信号SIが真となるため、次
の遅延分岐命令に対して、遅延分岐制御回路120内の
分岐情報記憶回路121に接続された反転回路122の
出力信号は偽になるので、分岐成立信号SEaに拘わら
ず分岐指示信号SIは偽となり、常に分岐しない。すな
わち、遅延分岐命令が連続しているときは、1つめの遅
延分岐命令は、見かけ上、遅延なし分岐命令と同じ動作
をする。
【0063】なお、図7に示すプロセッサでは遅延スロ
ット数は1であるものとし、分岐情報記憶回路121を
1つのフリップフロップによって構成しているが、遅延
スロット数が2以上の場合は、図1に示すように、遅延
スロット数個のフリップフロップによるシフトレジスタ
11を設けて各フリップフロップの出力信号の論理積信
号を分岐成立実行信号SEaの禁止信号として用いた
り、図3に示すようにカウンタ16及びRSラッチ17
を設けることによって実現できることはいうまでもな
い。
【0064】次に図7に示すプロセッサにおける本発明
の実施形態に係る条件フラグ書き換え制御の動作につい
て、図9に示すフローチャートに従って説明する。
【0065】まずステップST21において、実行する
命令の種類を調べる。条件分岐命令のときはステップS
T22にすすみ、条件フラグロックレジスタ131をク
リアする。比較命令のときはステップST23にすすみ
条件フラグロックレジスタ131をセットし、ステップ
ST26にすすみ条件フラグの書き換えを行う。演算命
令のときはステップST24にすすみ、条件フラグロッ
クレジスタ131の出力信号の真偽を判定する。条件フ
ラグロックレジスタ131の出力信号が真のときはステ
ップST27にすすみ、条件フラグを書き換えないもの
とする。一方、条件フラグロックレジスタ131の出力
信号が偽のときはステップST25にすすみ、次に実行
する命令が条件フラグを書き換える命令すなわち演算又
は比較命令であるか否かを判定する。条件フラグを書き
換える命令であるときはステップST27にすすみ、条
件フラグを書き換えないものとし、そうでないときはス
テップST26にすすみ、条件フラグを書き換えるもの
とする。
【0066】図7に示すプロセッサの具体的な動作とし
ては、例えば、比較命令によって条件フラグが書き換え
られた場合は、比較実行信号SEcによって条件フラグ
ロックレジスタ131がセットされ、次に条件分岐命令
等の条件フラグを参照する命令によって条件フラグロッ
クレジスタ131がクリアされるまでは条件フラグ書き
換え制御信号SFは偽になるので、条件フラグ生成回路
141の動作と条件フラグレジスタ103の更新は停止
される。
【0067】また、演算命令が連続している場合は、論
理積ゲート133によって演算信号SDdの反転信号と
演算実行信号SEdとの論理積がとられるため条件フラ
グ書き換え制御信号SFは偽になるので、条件フラグ生
成回路141の動作と条件フラグレジスタ103の更新
は停止される。
【0068】以上説明したように、本実施形態に係る遅
延分岐制御によると、遅延分岐命令が連続した場合で
も、アセンブラ言語レベルにおけるプログラムの読みや
すさを保つことができる。また本実施形態に係る遅延分
岐制御方法を実現する回路は簡易な構成によって実現す
ることができ、例えばプロセッサの遅延スロット数が1
の場合には、反転出力つきフリップフロップ1個と論理
積ゲート1個という小規模な回路によって実現すること
ができる。
【0069】また、本実施形態に係る条件フラグの書き
換え制御によると、命令コードに条件フラグの書き換え
制御ビットを設けなくても、条件フラグの書き換えを効
率的に制御することができるので、アセンブラ言語レベ
ルのプログラミングやコンパイラの作成が容易になり、
さらに演算部における条件フラグ生成回路の動作や条件
フラグレジスタの更新によって消費される電力を抑える
ことができる。通常、プログラム中に占める演算命令は
全動作サイクルの80%ぐらいあり、分岐命令は20%
ぐらいあるので、条件フラグ生成回路の動作や条件フラ
グレジスタの更新を行うサイクルを80%から20%に
減らすことができる。
【0070】
【発明の効果】以上のように、本発明に係る条件フラグ
書き換え制御によると、条件フラグの書き換えの制御が
プログラムにおける命令の前後関係に基づいてルール化
できるときは、命令コード中に条件フラグの書き換え制
御ビットを設ける必要がなくなる。
【図面の簡単な説明】
【図1】本発明の一実施形態において用いる遅延分岐制
御回路の構成を示す図である。
【図2】図1に示す遅延分岐制御回路の動作を示す図で
ある。
【図3】本発明の一実施形態において用いる遅延分岐制
御回路の他の例を示す図である。
【図4】本発明の一実施形態に係る条件フラグ書き換え
制御回路を示す図であり、(a)は構成図、(b)は動
作を示す図である。
【図5】本発明の一実施形態に係る条件フラグ書き換え
制御回路の他の例を示す図であり、(a)は構成図、
(b)は動作を示す図である。
【図6】本発明の一実施形態に係る条件フラグ書き換え
制御回路の他の例を示す図であり、(a)は構成図、
(b)は動作を示す図である。
【図7】本発明の一実施形態に係る遅延分岐制御回路及
び条件フラグ書き換え制御回路を備えた,パイプライン
方式のプロセッサの構成を示すブロック図である。
【図8】図7に示すプロセッサにおける遅延分岐制御方
法を示すフローチャートである。
【図9】図7に示すプロセッサにおける本発明の一実施
形態に係る条件フラグ書き換え制御方法を示すフローチ
ャートである。
【図10】分岐命令を実行するときのパイプライン処理
の動きを示す図である。
【図11】遅延分岐命令が連続する場合のアセンブラ言
語レベルのプログラムの一例を示す図である。
【図12】図11に示すプログラムを実行するときの、
各遅延分岐命令における分岐の有無と命令の実行順との
関係を示す図である。
【図13】図11に示すプログラムを実行する場合に、
連続する遅延分岐命令が共に分岐条件が成立したときの
パイプライン処理の動きを示す図である。
【図14】図11に示すプログラムを、遅延分岐制御ビ
ットが設けられた命令コードを実行するタイプのプロセ
ッサによって実行するときの、各遅延分岐命令における
分岐の有無と命令の実行順との関係を示す図である。
【符号の説明】
11 シフトレジスタ(分岐情報記憶回路) 12 論理積ゲート(分岐判定回路) 16 カウンタ 17 RSラッチ(ラッチ回路) 18 論理積ゲート(分岐判定回路) 21 条件フラグロックレジスタ(条件フラグロック回
路) 23 論理積ゲート(書き換え判定回路) 120 遅延分岐制御回路 130 条件フラグ書き換え制御回路
───────────────────────────────────────────────────── フロントページの続き (56)参考文献 特開 平7−168715(JP,A) 特開 平7−200293(JP,A) 特開 平6−332697(JP,A) 特開 平5−324321(JP,A) 特開 平5−274143(JP,A) 特開 昭57−150041(JP,A) 特開 昭57−150040(JP,A) 特開 平4−127237(JP,A) 特開 平3−122718(JP,A) (58)調査した分野(Int.Cl.7,DB名) G06F 9/30 - 9/42

Claims (8)

    (57)【特許請求の範囲】
  1. 【請求項1】 プロセッサにおいて、条件フラグの書き
    換えを制御する条件フラグ書き換え制御方法であって、条件フラグ書き換え制御のための制御ビットが設けられ
    ていない命令コードからなるプログラムを対象とし、 前記 プログラムにおいて、条件分岐命令の前に実行され
    る,条件フラグを書き換え可能な命令同士の実行順序、
    または、条件フラグを書き換え可能な命令と前記条件分
    岐命令の実行順序を認識し、 認識した実行順序が、所定のルールに合致するか否かに
    応じて、 条件フラグの書き換えを許可するか禁止するか
    を制御することを特徴とする条件フラグ書き換え制御方
    法。
  2. 【請求項2】 請求項1記載の条件フラグ書き換え制御
    方法において、 比較命令が実行されてから条件分岐命令が実行されるま
    での間は、演算命令を実行するとき、条件フラグの書き
    換えを禁止することを特徴とする条件フラグ書き換え制
    御方法。
  3. 【請求項3】 請求項1記載の条件フラグ書き換え制御
    方法において、 演算命令を実行するとき、次に実行する命令が条件フラ
    グを書き換える命令であるときは、条件フラグの書き換
    えを禁止することを特徴とする条件フラグ書き換え制御
    方法。
  4. 【請求項4】 請求項1記載の条件フラグ書き換え制御
    方法において、 演算命令を実行するとき、次に実行する命令が条件分岐
    命令であるときのみ、条件フラグの書き換えを許可する
    ことを特徴とする条件フラグ書き換え制御方法。
  5. 【請求項5】 プロセッサに設けられ、条件フラグの書
    き換えを制御する条件フラグ書き換え制御回路であっ
    て、条件フラグ書き換え制御のための制御ビットが設けられ
    ていない命令コードからなるプログラムを入力とし、 前記 プログラムにおいて、条件分岐命令の前に実行され
    る,条件フラグを書き換え可能な命令同士の実行順序、
    または、条件フラグを書き換え可能な命令と前 記条件分
    岐命令の実行順序を認識し、 認識した実行順序が、所定のルールに合致するか否かに
    応じて、 条件フラグの書き換えを許可するか禁止するか
    を制御することを特徴とする条件フラグ書き換え制御回
    路。
  6. 【請求項6】 請求項5記載の条件フラグ書き換え制御
    回路において、 比較命令が実行されたとき出力信号をセットする一方、
    条件分岐命令が実行されたとき出力信号をクリアする条
    件フラグロック回路と、 演算命令を実行するとき、前記条件フラグロック回路の
    出力信号がセットされているときは条件フラグの書き換
    えを禁止する書き換え判定回路とを備えていることを特
    徴とする条件フラグ書き換え制御回路。
  7. 【請求項7】 請求項5記載の条件フラグ書き換え制御
    回路において、 前記プロセッサは、命令のデコードと実行とをパイプラ
    イン処理するものであり、 当該条件フラグ書き換え制御回路は、 実行ステージの命令が演算命令であるとき、デコードス
    テージの命令が条件フラグを書き換える命令であるとき
    は条件フラグの書き換えを禁止する論理回路を備えてい
    ることを特徴とする条件フラグ書き換え制御回路。
  8. 【請求項8】 請求項5記載の条件フラグ書き換え制御
    回路において、 前記プロセッサは、命令のデコードと実行とをパイプラ
    イン処理するものであり、 当該条件フラグ書き換え制御回路は、 実行ステージの命令が演算命令であるとき、デコードス
    テージの命令が条件分岐命令であるときのみ条件フラグ
    の書き換えを許可する論理回路を備えていることを特徴
    とする条件フラグ書き換え制御回路。
JP10890199A 1996-05-30 1999-04-16 条件フラグ書き換え制御方法及び回路 Expired - Fee Related JP3150667B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP10890199A JP3150667B2 (ja) 1996-05-30 1999-04-16 条件フラグ書き換え制御方法及び回路

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP8-136212 1996-05-30
JP13621296 1996-05-30
JP10890199A JP3150667B2 (ja) 1996-05-30 1999-04-16 条件フラグ書き換え制御方法及び回路

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP13216397A Division JP2938831B2 (ja) 1996-05-30 1997-05-22 遅延分岐制御方法及び回路

Publications (2)

Publication Number Publication Date
JPH11327901A JPH11327901A (ja) 1999-11-30
JP3150667B2 true JP3150667B2 (ja) 2001-03-26

Family

ID=26448720

Family Applications (1)

Application Number Title Priority Date Filing Date
JP10890199A Expired - Fee Related JP3150667B2 (ja) 1996-05-30 1999-04-16 条件フラグ書き換え制御方法及び回路

Country Status (1)

Country Link
JP (1) JP3150667B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4159586B2 (ja) 2006-08-03 2008-10-01 エヌイーシーコンピュータテクノ株式会社 情報処理装置および情報処理の高速化方法

Also Published As

Publication number Publication date
JPH11327901A (ja) 1999-11-30

Similar Documents

Publication Publication Date Title
JP3917635B2 (ja) データ処理システムにおけるプリディケーション命令
JP2875909B2 (ja) 並列演算処理装置
JP3881763B2 (ja) データ処理装置
JPH06274352A (ja) コンパイラ、及びデータ処理装置
US6981131B2 (en) Early condition code evaluation at pipeline stages generating pass signals for controlling coprocessor pipeline executing same conditional instruction
JP2005538450A (ja) 飛び越し命令を使用してハザードを消去する方法と装置
KR100570906B1 (ko) 데이터처리기에서조건부분기실행을제어하기위한장치및방법
US6055626A (en) Method and circuit for delayed branch control and method and circuit for conditional-flag rewriting control
JP3150667B2 (ja) 条件フラグ書き換え制御方法及び回路
JP2938831B2 (ja) 遅延分岐制御方法及び回路
US11663014B2 (en) Speculatively executing instructions that follow a status updating instruction
JP3723019B2 (ja) サブルーチンリターン相当の命令の分岐予測を行う装置および方法
JP2007257349A (ja) プロセッサ及びその処理方法
JP2006309454A (ja) プログラム制御方法及びプロセッサ
JP4063182B2 (ja) プロセッサおよびその割り込み制御方法
JPH05216721A (ja) 電子計算機
US20090119492A1 (en) Data Processing Apparatus and Method for Handling Procedure Call Instructions
US5875317A (en) Boosting control method and processor apparatus having boosting control portion
KR100209233B1 (ko) 고속 슈퍼-스케일러블 마이크로 프로세서의 디코더 유니트
JP2503223B2 (ja) 先行制御方式
JP2004062427A (ja) マイクロプロセッサ
JP2005149297A (ja) プロセッサおよびそのアセンブラ
JPH07175650A (ja) 演算処理装置
JP4564025B2 (ja) 情報処理装置における割り込み処理方法
JP2006004234A (ja) マイクロプロセッサにおける命令実行制御方式

Legal Events

Date Code Title Description
FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20080119

Year of fee payment: 7

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090119

Year of fee payment: 8

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090119

Year of fee payment: 8

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100119

Year of fee payment: 9

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110119

Year of fee payment: 10

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110119

Year of fee payment: 10

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120119

Year of fee payment: 11

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130119

Year of fee payment: 12

LAPS Cancellation because of no payment of annual fees