JPH10283185A - プロセッサ - Google Patents

プロセッサ

Info

Publication number
JPH10283185A
JPH10283185A JP9241097A JP9241097A JPH10283185A JP H10283185 A JPH10283185 A JP H10283185A JP 9241097 A JP9241097 A JP 9241097A JP 9241097 A JP9241097 A JP 9241097A JP H10283185 A JPH10283185 A JP H10283185A
Authority
JP
Japan
Prior art keywords
instruction
instructions
branch
condition
signal
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
JP9241097A
Other languages
English (en)
Inventor
Tetsuya Tanaka
哲也 田中
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 Holdings Corp
Original Assignee
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 Matsushita Electric Industrial Co Ltd filed Critical Matsushita Electric Industrial Co Ltd
Priority to JP9241097A priority Critical patent/JPH10283185A/ja
Publication of JPH10283185A publication Critical patent/JPH10283185A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Advance Control (AREA)

Abstract

(57)【要約】 【課題】 ハードウェアの増加を少なく制限しつつ、前
方への条件付き分岐命令を解読し、分岐条件の成立時に
は、その解読したサイクルの次のサイクルで分岐先の命
令を直ちに解読、実行し、プロセッサの性能の向上を図
る。 【解決手段】 条件付き分岐命令は命令レジスタ30に
格納されると共に、命令解読回路31で解読され、分岐
条件の成立の有無が条件成立判定回路33で判定され
る。このサイクルで分岐条件が成立すると判定された場
合には、このサイクルで、無効化命令数200が、命令
解読回路31から出力され、マルチプレクサ34を経て
命令バッファ制御回路11に入力される。制御回路11
は前記無効化命令数200に等しい個数の命令の次に続
く命令、即ち分岐先の命令を選択するようマルチプレク
サ21を制御する。従って、次のサイクルでは、命令レ
ジスタ30に分岐先の命令が格納され、この命令が解読
される。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明はプロセッサ、特に、
命令メモリ中の命令をプリフェッチして命令バッファに
保持するプロセッサの改良に関する。
【0002】
【従来の技術】従来、プロセッサとして、命令メモリに
格納された一部の命令をプリフェッチし、これ等の命令
を命令バッファに格納すると共に、その格納された命令
を順次命令解読部で解読して、実行するものが知られて
いる。このプロセッサでは、特に高い性能が要求される
場合に、パイプライン構造が採用される。即ち、命令バ
ッファで最初の命令を読み出した後、その次のサイクル
では、前記読み出された命令を命令解読部で解読すると
共に、この解読と同時に、命令バッファで次の命令を読
み出す並列動作が行われる。
【0003】
【発明が解決しようとする課題】しかしながら、前記従
来のプロセッサは、命令解読部で条件付き分岐命令を解
読する際には、命令解読部では分岐条件が成立するか否
かの判断が行われると共に、分岐条件が成立する場合に
は命令の分岐先アドレスが生成されるが、この命令の分
岐条件が成立したときには、次の問題が生じる。即ち、
この場合には、条件付き分岐命令を解読するサイクルで
分岐先アドレスが命令バッファに出力されるものの、こ
のような命令解読と並列に命令バッファでは次の命令が
既に読み出されており、その結果、前記条件付き分岐命
令を解読したサイクルの次のサイクルでは、命令解読部
は前記命令バッファから読み出された命令を入力して、
この入力した命令を無効化すると共に、命令バッファは
前記分岐先アドレスの命令を命令メモリからプリフェッ
チして、この分岐先アドレスの命令を読み出し、その
後、その次に続くサイクルで、命令解読部が前記分岐先
アドレスの命令を入力して解読する。従って、条件付き
分岐命令を解読した際に、分岐条件が成立した時には、
そのサイクルの次のサイクル、即ち実行しない命令を無
効化するサイクルが命令解読部にとって無駄なサイクル
であるため、プロセッサの性能を低下させる。
【0004】そこで、従来、前記課題を解決するため
に、分岐予測が行われる。即ち、条件付き分岐命令を解
読するサイクルの前のサイクルまでに分岐条件が成立す
るか否かを予測し、分岐が成立すると予測された場合に
は、条件付き分岐命令を解読するサイクルで分岐先アド
レスの命令を読み出せば、その次のサイクルで分岐先の
命令を解読でき、プロセッサの性能低下を防止できる。
例えば、無条件分岐は分岐が確定しているので、問題は
なく、また、条件付き分岐に関して、後方分岐では、そ
の制御構造がループを形成している可能性が高いので、
多くの場合は分岐が成立すると静的な予測は容易であ
る。
【0005】しかし、条件付き前方分岐に関しては、静
的な予測は困難である。このため、動的な予測が行われ
るが、動的な予測では、各々の分岐命令について過去の
分岐結果を保持し、その結果に基いて予測を行うことが
必要になる。しかし、予測確率を高めるためには、分岐
結果を保持するエントリは500〜1000程度必要と
され、大きなハードウェアが必要なる欠点がある。
【0006】本発明の目的は、動的な分岐予測を行わず
に、前方への条件付き分岐命令を解読した次のサイクル
で分岐先の命令を実行するようにすることにより、ハー
ドウェアの増加を最小限にしつつ、実行しない命令の無
効化を不要にして、プロセッサの性能の向上を図ること
にある。
【0007】
【課題を解決するための手段】以上の目的を達成するた
め、本発明では、条件付き分岐命令を解読するサイクル
において、条件が成立したと判断された際には、実行し
ない命令をそのサイクル中に命令バッファ内で無効化し
て、前記解読したサイクルで命令バッファから分岐先の
命令を読み出して、出力させることにより、条件付き分
岐命令を解読したサイクルの次のサイクルで分岐先の命
令を直ちに解読させる。
【0008】すなわち、請求項1記載の発明のプロセッ
サは、命令メモリから複数の命令を読み出す読み出し手
段と、前記読み出された複数の命令を保持する保持手段
と、前記保持手段に保持された複数の命令のうち1つを
選択して供給する命令供給手段と、前記選択された命令
を解読し、分岐条件の成立時に命令無効化信号を出力す
る命令解読手段と、前記命令無効化信号に基いて前記保
持手段に保持された複数の命令のうち一部の命令を無効
化し、前記命令供給手段の対象としない無効化手段とを
備えたことを特徴とする。
【0009】また、請求項2記載の発明は、前記請求項
1記載のプロセッサにおいて、命令無効化信号は無効化
すべき命令数を指示する信号であり、無効化手段は、分
岐命令の後に続く前記無効化命令数の命令を無効化する
ことを特徴とする。
【0010】更に、請求項3記載の発明は、前記請求項
2記載のプロセッサにおいて、プロセッサはパイプライ
ン動作し、無効化手段は、命令解読手段が命令無効化信
号を出力したサイクルと同一サイクル内で、分岐命令の
後に続く無効化命令数の命令を無効化し、命令供給手段
は、前記同一サイクル内で、無効化された最後の命令の
次に位置する命令を選択して供給することを特徴とす
る。
【0011】加えて、請求項4記載の発明は、前記請求
項1又は請求項3記載のプロセッサにおいて、命令供給
手段を制御する命令制御回路と、分岐条件の成立時には
命令無効化信号を選択して無効化手段に出力し、分岐条
件の非成立時には次命令選択信号を選択して前記命令制
御回路に出力する選択手段とを備えたことを特徴とす
る。
【0012】更に加えて、請求項5記載の発明は、前記
請求項1記載のプロセッサにおいて、命令供給手段は、
読み出し手段から新たに読み出した命令、及び保持手段
に保持した命令のうち1つの命令を選択して、命令解読
手段に供給することを特徴とする。
【0013】また、請求項6記載の発明は、前記請求項
2記載のプロセッサにおいて、無効化手段は、命令供給
手段が命令解読部に供給している分岐命令の保持手段内
でのアドレスを把握する把握手段を備え、前記分岐命令
のアドレスに基いて、分岐命令の後に続く無効化命令数
の命令を無効化することを特徴とする。
【0014】更に、請求項7記載の発明は、前記請求項
6記載のプロセッサにおいて、保持手段は複数の命令バ
ッファレジスタを備え、無効化手段は、前記複数の命令
バッファレジスタ間の命令の解読順序の先後を把握する
他の把握手段を備え、前記複数の命令バッファレジスタ
間の命令の解読順序の先後の情報に基いて、分岐命令の
後に続く無効化命令数の命令を無効化することを特徴と
する。
【0015】加えて、請求項8記載の発明は、前記請求
項1記載のプロセッサにおいて、命令解読手段は、受け
た命令を解読して分岐の条件選択信号を出力し、一方、
分岐条件をフラグとして格納するフラグレジスタと、前
記条件選択信号と前記フラグとを比較して条件の成立の
有無を判定する条件成立判定回路とを備えたことを特徴
とする。
【0016】更に加えて、請求項9記載の発明は、前記
請求項1記載のプロセッサにおいて、命令解読手段は、
受けた命令を解読して、分岐条件の成立の有無を判定す
ることを特徴とする。
【0017】また、請求項10記載の発明のプロセッサ
は、命令メモリから複数の命令を読み出す読み出し手段
と、前記読み出された複数の命令を保持する保持手段
と、前記保持手段に保持された複数の命令のうち1つを
選択して供給する命令供給手段と、前記選択された命令
を解読し、分岐条件の成立時に仮想消費化信号を出力す
る命令解読手段と、前記仮想消費化信号に基いて前記保
持手段に保持された複数の命令のうち一部の命令を仮想
的に消費化し、前記命令供給手段の対象としない消費化
手段とを備えたことを特徴とする。
【0018】更に、請求項11記載の発明は、前記請求
項10記載のプロセッサにおいて、仮想消費化信号は、
仮想的に消費した命令数を指示する信号であり、消費化
手段は、分岐命令の後に続く前記仮想消費命令数の命令
を仮想的に消費することを特徴とする。
【0019】以上の構成により、請求項1ないし請求項
11記載の発明では、命令解読部において命令が無効化
されることがないので、無駄なサイクルが発生せず、プ
ロセッサの性能の向上が図られる。また、分岐予測を行
わないので、各分岐命令毎の分岐の成立/不成立の履歴
を残すメモリを不要にでき、大きなハードウェアを必要
としない。
【0020】
【発明の実施の形態】以下、本発明の実施の形態につい
て図面に基づいて説明する。
【0021】図1は本発明の実施の形態におけるプロセ
ッサの命令バッファ部及び命令解読部のブロック図を示
している。
【0022】同図において、3は連続したアドレスが付
された複数の命令を予め格納しておく命令メモリ、1は
前記命令メモリ3から連続する一部の命令をプリフェッ
チし、そのプリフェッチした命令を保持する命令バッフ
ァ部、2は前記命令バッファ部1から順次1つづつ命令
を受けて、その命令を解読する命令解読部である。
【0023】説明のポイントを絞るため、同図では命令
の実行に関する部分は本発明と直接関係ないので、省略
している。また、命令は常にシーケンシャルに実行され
る、即ち、分岐命令は存在しないとする。更に、1つの
命令群は、アドレスが連続した4つの命令から成ってい
るものとする。
【0024】命令バッファ部1は、プリフェッチアドレ
スを生成し、そのプリフェッチアドレスを用いて命令メ
モリ3をアクセスする。命令メモリ3はプリフェッチア
ドレスに従って1つの命令群を読み出す。命令バッファ
部1は、読み出された命令群を保持し、その命令群に含
まれる1つの命令を命令解読部2に供給する。
【0025】10はプリフェッチカウンタであって、シ
ーケンシャルなプリフェッチアドレスを生成し、対応す
る命令群を命令メモリ3から読み出す読み出し手段とし
て機能する。12、13は各々命令群を保持する保持手
段としての命令バッファレジスタ、20は命令メモリ3
が出力した命令群及び前記命令バッファレジスタ12、
13が出力した命令群のうち何れかを選択するマルチプ
レクサ、21は前記マルチプレクサ20の出力した命令
群の中から一つの命令を選択するマルチプレクサであっ
て、この両マルチプレクサ20、21により、1つの命
令を命令解読部2に供給する命令供給手段を構成する。
【0026】11は命令バッファ制御回路であって、前
記両マルチプレクサ20、21を制御し、無効化手段及
び命令制御手段として機能する。
【0027】30は命令解読部2が命令解読しようとす
る命令を保持する命令レジスタ、31は命令を解読し、
条件選択信号211を生成すると共に、条件成立信号2
10を受けた分岐条件の成立時には無効化命令数(命令
無効化信号)200を生成する命令解読回路であって、
前記命令レジスタ30と命令解読回路31とにより、命
令解読手段を構成する。
【0028】32はプロセッサの演算結果をフラグとし
て保持するフラグレジスタ、33は命令解読回路31の
条件選択信号211とフラグレジスタ32のフラグとか
ら、分岐条件が成立するか否かを判定する条件成立判定
回路であって、分岐条件の成立時に条件成立信号210
を発生する。34は、前記条件成立信号210を受けた
とき命令解読回路31の無効化命令数200を選択し、
受けないとき値“1”(次命令選択信号)を選択し、そ
の選択結果201を出力するマルチプレクサである。前
記フラグレジスタ32、条件成立判定回路33及びマル
チプレクサ34により、選択手段を構成する。
【0029】35は命令レジスタ30に格納されている
命令のアドレスを格納するプログラムカウンタ、36は
プログラムカウンタ35の値とマルチプレクサ34が出
力する選択結果201とを加算して次の命令のアドレス
を算出する加算器であって、この算出した次の命令のア
ドレス203を前記プログラムカウンタ35とプリフェ
ッチカウンタ10のマルチプレクサ22とに出力する。
【0030】100は命令バッファ部1のマルチプレク
サ21の出力、命令レジスタ30が次のサイクルに保持
する命令である。101は命令メモリ3が出力した命令
群、102はプリフェッチアドレスであって、命令メモ
リ3に対してアドレス入力される。110はプリフェッ
チカウンタ10に対する更新要求信号である。この更新
要求信号110が“1”になると、プリフェッチカウン
タ10は現在のプリフェッチアドレスに“4”を加えて
次のプリフェッチアドレスを算出し、このアドレスを命
令メモリ3に出力する。
【0031】111は命令バッファレジスタ12に対す
る更新要求信号、112は命令バッファレジスタ13に
対する更新要求信号である。更新要求信号111が
“1”になると、命令バッファレジスタ12は命令メモ
リ3の出力101の命令群を保持する。同様に、更新要
求信号112が“1”になると、命令バッファレジスタ
13は命令メモリ3の出力101の命令群を保持する。
条件成立信号210は、分岐条件が成立すると、“1”
になる。条件選択信号211は、フラグレジスタ32の
フラグが、「“1”のとき条件成立」、「“0”のとき
条件成立」、「常に条件成立しない」の何れかを選択す
るための信号である。
【0032】前記命令バッファ部1の動作は、図4に模
式的に示すように、FIFO(First In First Out)の動
作である。命令バッファに命令a、b〜k、lが順に格
納されている場合に、最初の命令aの出力中に命令解読
回路31の無効化命令数200をマルチプレクサ34を
経て受けた際には、次のように動作する。即ち、無効化
命令数200が“0”〜“7”の値を取る場合に、
“0”のとき命令aを、“1”のとき命令bを出力する
ように動作し、以下、無効化命令数200の値が“1”
増える毎に次に位置する命令が出力され、無効化命令数
200の値が“7”のとき命令hを出力する。従って、
無効化命令数200の値だけ命令が無効化され、無効化
された命令は命令バッファから消失する。
【0033】命令バッファ制御回路11は、図5に示す
ように、2個のマルチプレクサ20、21に各々制御信
号300、301を出力する。前記制御信号300は
“0”、“1”、“0”の3つの値を取り、制御信号3
01は“0”、“1”、“2”、“3”の4つの値を取
る。マルチプレクサ20は、制御信号300が“0”の
とき命令バッファレジスタ12の出力102を、“1”
のとき命令バッファレジスタ13の出力103を、
“2”のとき命令メモリ3の出力101を各々選択し、
その選択した1つの命令群を出力信号104とする。マ
ルチプレクサ21は、制御信号301が“0”のとき前
記出力信号(1つの命令群)104のうち最初に位置す
る命令104aを、“1”のとき第2番目の命令104
bを、“2”のとき第3番目の命令104cを、“3”
のとき第4番目の命令104dを各々選択して、出力信
号100とする。
【0034】前記命令バッファ制御回路11は、前記2
種の制御信号300、301を次のように生成する。即
ち、内部に制御回路302と、状態把握回路303とを
有し、状態把握回路303は、2個の命令バッファレジ
スタ12、13に格納されている命令群の前後関係の状
態stateと、命令解読部2に出力されている命令が
命令群の中で何番目に位置する命令であるかを示す状態
PC[1:0]とを把握する。命令バッファレジスタ1
2に格納された命令が命令バッファレジスタ13に格納
された命令に先行するとき、状態stateは“0”
に、後行するとき状態stateは“1”に設定され
る。また、命令解読部2に出力されている命令のアドレ
スの下位2ビットが“0”(1つの命令群の中で第1番
目に位置する命令)のとき、PC[1:0]=0に、下
位2ビットが“1”のときPC[1:0]=1に、下位
2ビットが“2”のときPC[1:0]=2に、下位2
ビットが“3”のときPC[1:0]=3に各々設定さ
れる。また、前記制御回路302は、状態把握回路30
3から状態state、及びPC[1:0]を受けると
共に、マルチプレクサ34からの選択結果201を受
け、これ等3者の値に応じて図8及び図9に示すように
動作する。状態把握回路303は把握手段及び他の把握
手段として機能する。
【0035】図2は説明のためのプログラム例である。
同図において、skip命令はskip.ne命令か、
skip.eq命令の何れかの形態を取り、フラグレジ
スタ32のフラグを参照する。同図のプログラムでは、
skip命令よりも前の命令inst0がフラグレジス
タ32のフラグを変化させる。例えば、命令inst0
は、cmp r1,r2であって、レジスタr1と他の
レジスタr2との両値が等しい時、フラグレジスタ32
のフラグを“1”にし、等しくない時、“0”にする。
以下の説明では、フラグレジスタ32のフラグは、最初
に“1”にセットされており、プログラムで変更されな
いとする。従って、skip.ne命令は条件が不成立
になり、skip.eq命令は条件が成立になる。in
st0〜inst11命令は、フラグレジスタ32のフ
ラグを変更することも、参照することもない命令であ
る。if0、then0、else0はラベルであり、
同図のプログラムの実行には関与しないが、if−th
en−elseのプログラム構造を表している。尚、I
0〜I11は各命令に対応した別名であり、動作を示す
図3で使用される。図3は動作説明のためのタイムチャ
ートであり、図2のプログラムを実行した場合の動作を
示す。
【0036】以下、図3の各サイクルC0〜C6別に、
その動作を説明する。
【0037】(C0サイクル)命令バッファレジスタ1
2には命令I0〜I3が、命令バッファレジスタ13に
は命令I4〜I7が既に格納されているものとする。こ
の時、プリフェッチカウンタ10はプリフェッチアドレ
スとして“8”を出力しており、命令メモリ3からは、
これに対応した命令群I8〜I11が読み出されてい
る。命令バッファ制御回路11は、新たに読み出した命
令群I8〜I11を格納することができないので、更新
要求信号110、111、112を“0”にしている。
また、命令バッファ制御回路11は、最初に実行すべき
命令I0が、命令バッファレジスタ12に格納されてい
る命令群I0〜I3に含まれているので、マルチプレク
サ20に対して命令バッファレジスタ12の出力を選択
し出力するように制御信号300を出力する。同様に、
命令バッファ制御回路11は、最初に実行すべき命令I
0が命令バッファ部出力100として出力されるよう
に、マルチプレクサ21に制御信号301を出力する。
【0038】(C1サイクル)C0サイクルで更新要求
信号110が“0”だったので、プリフェッチカウンタ
10は更新されず、プリフェッチアドレス102は
“8”のままである。従って、命令メモリ3も命令群I
8〜I11を読み出したままである。命令バッファレジ
スタ12、13は各々更新要求信号111、112がC
0サイクルで“0”だったので、更新されない。命令レ
ジスタ30は、C0サイクルでの命令バッファ部1の出
力100である命令I0を保持する。
【0039】前記命令レジスタ30で保持された命令I
0、即ち、inst0命令は命令解読回路31で解読さ
れ、条件選択信号211が生成される。命令I0は条件
を参照せず、条件選択信号211は「常に条件成立しな
い」を出力する。条件成立判定回路33は条件成立信号
210を“0”にし、マルチプレクサ34は“1”を選
択する。加算器36は値“1”とプログラムカウンタ3
5の値とを加算し、次のサイクルでプログラムカウンタ
35に保持される。従って、プログラムカウンタ35の
値は“1”だけ増加する。マルチプレクサ34が“1”
を選択したので、命令バッファ制御回路11はマルチプ
レクサ21を制御して、命令I0のアドレスよりも
“1”だけ次の命令I1を命令バッファ部1の出力10
0とする。
【0040】(C2サイクル)C1サイクルで更新要求
信号110が“0”だったので、プリフェッチカウンタ
10は更新されず、プリフェッチアドレス102は
“8”のままである。従って、命令メモリ3も命令群I
8〜I11を読み出したままである。命令バッファレジ
スタ12、13は各々更新要求信号111、112がC
1サイクルで“0”だったので、更新されない。命令レ
ジスタ30はC1サイクルでの命令バッファ部1の出力
100である命令I1を保持する。
【0041】命令レジスタ30で保持された命令I1、
即ち、skip.ne命令は命令解読回路31で解読さ
れ、条件選択信号211が生成される。命令I1はsk
ip.ne命令なので、条件によって実行される。この
場合、条件選択信号211として「“0”のとき条件成
立」が出力される。フラグレジスタ32のフラグは
“1”なので、条件は成立せず、条件成立判定回路33
は条件成立信号210を“0”にし、マルチプレクサ3
4は“1”を選択し、出力する。加算器36は値“1”
とプログラムカウンタ35の値とを加算し、次のサイク
ルでプログラムカウンタ35に保持される。従って、プ
ログラムカウンタ35は“1”だけ増加する。命令バッ
ファ制御回路11は、マルチプレクサ21を制御して、
命令I1のアドレスよりも“1”だけ次に位置する命令
I2を命令バッファ部出力100に出力する。
【0042】(C3サイクル)C2サイクルで更新要求
信号110が“0”だったので、プリフェッチカウンタ
10は更新されず、プリフェッチアドレス102の
“8”のままである。従って、命令メモリ3も命令群I
8〜I11を読み出したままである。命令バッファレジ
スタ12、13は各々更新要求信号111、112がC
2サイクルで“0”だったので、更新されない。命令レ
ジスタ30は、C2サイクルでの命令バッファ部1の出
力100である命令I2を保持する。
【0043】前記命令レジスタ30で保持された命令I
2、即ち、inst2命令は命令解読回路31で解読さ
れ、条件選択信号211が生成される。命令I2は条件
を参照せず、条件選択信号211として「常に条件成立
しない」が出力され、条件成立判定回路33は条件成立
信号210を“0”にし、マルチプレクサ34は“1”
を選択し、出力する。加算器36は、値“1”とプログ
ラムカウンタ35の値とを加算し、この加算値は次のサ
イクルでプログラムカウンタ35に保持され、プログラ
ムカウンタ35の値は“1”だけ増加する。命令バッフ
ァ制御回路11は、マルチプレクサ21を制御して、命
令I2のアドレスよりも“1”だけ次の命令I3を命令
バッファ部出力100に出力する。一方、命令バッファ
レジスタ12の中にある命令群I0〜I3は、次のサイ
クルで全て無効化されるので、更新要求信号110及び
更新要求信号111を“1”にする。
【0044】(C4サイクル)C3サイクルで更新要求
信号110が“1”だったので、プリフェッチカウンタ
10が更新され、プリフェッチアドレス102は“1
2”となる。従って、命令メモリ3は命令群I12〜I
15を新たに読み出す。命令バッファレジスタ12は、
更新要求信号111がC3サイクルで“1”だったの
で、命令メモリ3の出力101の命令群I8〜I11を
保持する。命令バッファレジスタ13は、更新要求信号
112がC3サイクルで“0”だったので、更新されな
い。命令レジスタ30は、C3サイクルでの命令バッフ
ァ部1の出力100である命令I3を保持する。
【0045】前記命令レジスタ30で保持された命令I
3、即ち、命令inst3は命令解読回路31で解読さ
れ、条件選択信号211が生成される。命令I3は条件
を参照せず、条件選択信号211として「常に条件成立
しない」が出力され、条件成立判定回路33は条件成立
信号210を“0”にし、マルチプレクサ34は“1”
を選択し、出力する。加算器36は値“1”とプログラ
ムカウンタ35の値とを加算し、この加算値は次のサイ
クルでプログラムカウンタ35に保持され、プログラム
カウンタ35の値は“1”だけ増加する。命令バッファ
制御回路11は、マルチプレクサ21を制御して、命令
I3のアドレスよりも“1”だけ次の命令である命令I
4を命令バッファ部1の出力100として出力する。命
令バッファレジスタ12、13には有効な命令が存在す
るので、更新要求信号110、111、112を“0”
にする。
【0046】(C5サイクル)C4サイクルで更新要求
信号110が“0”だったので、プリフェッチカウンタ
10は更新されず、プリフェッチアドレス102は“1
2”のままである。従って、命令メモリ3も命令群I1
2〜I15を読み出したままである。命令バッファレジ
スタ12、13は、各々更新要求信号111、112が
C4サイクルで“0”だったので、更新されない。命令
レジスタ30は、C4サイクルでの命令バッファ部1の
出力100である命令I4を保持する。
【0047】前記命令レジスタ30で保持された命令I
4、即ち、skip.eq命令は命令解読回路31で解
読され、条件選択信号211が生成される。命令I3は
skip.eq命令なので、条件により実行され、条件
選択信号211として「“1”のとき条件成立」が出力
される。フラグレジスタ32のフラグは“1”なので、
分岐条件が成立し、条件成立判定回路33は条件成立信
号210を“1”にする。命令解読回路31は無効化命
令数200を生成し、マルチプレクサ34は無効化命令
数200を選択して出力する。ここで、無効化命令数2
00は、skip.eq命令のオペランドが“4”なの
で、その内容を“5”として、出力される。これは、命
令I4の1命令とその後続の4つの命令とが無効化され
ることを意味する。加算器36は、無効化命令数200
の値とプログラムカウンタ35の値とを加算し、この加
算値は次のサイクルでプログラムカウンタ35に保持さ
れる。この場合、プログラムカウンタ35の値は“5”
だけ増加することになる。無効化命令数200が“5”
なので、命令バッファ制御回路11は、マルチプレクサ
20及びマルチプレクサ21を制御して、命令I4のア
ドレスよりも“5”だけ次の命令である命令I9を命令
バッファ部出力100に出力する。一方、命令バッファ
レジスタ13の中にある命令群I4〜I7は、次のサイ
クルで全て無効化されるので、更新要求信号110及び
更新要求信号112を“1”にする。
【0048】(C6サイクル)C5サイクルで更新要求
信号110が“1”だったので、プリフェッチカウンタ
10が更新され、プリフェッチアドレス102は“1
6”になる。従って、命令メモリ3からは命令群I16
〜I19が新たに読み出される。命令バッファレジスタ
13は、更新要求信号112がC5サイクルで“1”だ
ったので、命令メモリ出力101の命令群I12〜I1
5を保持する。命令バッファレジスタ12は、更新要求
信号111がC5サイクルで“0”だったので、更新さ
れない。命令レジスタ30は、C5サイクルの命令バッ
ファ部1の出力100の命令I9を保持する。
【0049】前記命令レジスタ30で保持された命令、
I9、即ちinst9命令は命令解読回路31で解読さ
れ、条件選択信号211が生成される。命令I9は条件
を参照せず、条件選択信号211として「常に条件成立
しない」が出力され、条件成立判定回路33は条件成立
信号210を“0”にし、マルチプレクサ34は“1”
を選択し、出力する。加算器36は、値“1”とプログ
ラムカウンタ35の値とを加算し、この加算値は次のサ
イクルでプログラムカウンタ35に保持され、プログラ
ムカウンタ35の値は“1”だけ増加する。命令バッフ
ァ制御回路11は、マルチプレクサ21を制御して、命
令I9のアドレスよりも“1”だけ次の命令I10を命
令バッファ部出力100に出力する。命令バッファレジ
スタ12、13には有効な命令が存在するので、更新要
求信号110、111、112は“0”にされる。
【0050】従って、本発明によれば、C5サイクルで
命令I4を実行した次のC6サイクルでは分岐後の命令
I9が直ちに実行されており、命令I5〜I8は命令バ
ッファ1で無効化され、命令レジスタ30には現れな
い。よって、命令レジスタ30の命令が無効化されるサ
イクルがなく、ペナルティが発生することなく短い距離
の前方分岐と同等の機能を有する。
【0051】また、本発明では、命令バッファレジスタ
12、13に格納された命令のうち一部の命令を無効化
する。一方、従来の分岐命令のように、分岐成立時に命
令バッファに格納された命令を全て無効化し、新たに分
岐先の命令を命令メモリから取り出す場合は、命令バッ
ファの容量はさほど大きくできない。しかし、本発明で
は、命令バッファレジスタ12、13内の一部の命令の
みを無効化し、無効化されない命令は有効に利用される
ので、命令バッファレジスタ12、13の容量を大きく
でき、より長い距離の前方分岐も可能となる。
【0052】尚、図2のプログラム例に代えて、図6及
び図7に示すプログラムを用いてもよい。図6のプログ
ラムでは、b.ne elseの命令で分岐条件が成立
した時、ラベルelseの命令inst5に分岐し、b
ra nextの命令で分岐条件が成立した時、ラベル
nextの命令inst9に分岐する。図7のプログラ
ムにおいて、分岐命令skip.ne 2,4は、分岐
条件が成立した時、以降の2個の命令を無効化して、3
個先の命令から実行を開始し、一方、条件が不成立にな
ると、以降の2個の命令を実行し、3個先から4個(即
ち6個まで)の命令を無効化し、更に7個先の命令から
再実行する命令である。
【0053】また、本発明の実施の形態では、フラグレ
ジスタ32を用いて、分岐条件の成立の判定とskip
命令とを分ける命令形態としたが、skip命令自身で
演算を行い、その演算結果で条件判定を行ってもよい。
この場合にはフラグレジスタを廃止できる。
【0054】更に、本実施の形態では、分岐命令として
2者択一の例を示したが、3者以上の択一であってもよ
く、その場合は、マルチウェイのskip命令となる。
【0055】加えて、skip命令のオペランドは即値
の例を示しているが、レジスタ等から読み出した値を用
いても良い。
【0056】更に、本実施の形態では、無効化命令数2
00は命令数を単位としているが、バイトなどの他の単
位であってもよい。
【0057】また、命令バッファ内の複数の命令のう
ち、無効化命令数200に等しい個数の命令を無効化し
たが、無効化命令数200は命令解読回路31で消費し
た命令の個数と考えても良い。この場合は、仮想的に一
つの命令が複数の命令を消費することになる。従って、
前記実施の形態において、無効化信号を仮想消費化信号
に置換し、無効化手段を消費化手段に置換すればよい。
【0058】
【発明の効果】以上説明したように、請求項1ないし請
求項11記載の発明によれば、前方条件付き分岐の場合
は、命令バッファの中で一部の命令を無効化又は仮想的
に消費したので、従来のように命令バッファから命令解
読部へ供給された命令を無効化する動作を無くして、無
駄なサイクルを無くすことができ、プロセッサの性能向
上を図ることができる。また、分岐予測を行わないの
で、各分岐命令毎の分岐の成立/不成立の履歴を残すメ
モリを不要にでき、大きなハードウェアを必要としな
い。
【図面の簡単な説明】
【図1】本発明の実施の形態におけるプロセッサの命令
バッファ部及び命令解読部のブロック構成を示す図であ
る。
【図2】本実施の形態のプロセッサの動作を説明するた
めに用いたプログラムの一例を示す図である。
【図3】本実施の形態のプロセッサの動作タイミングを
示す図である。
【図4】本実施の形態のプロセッサの命令バッファ部の
動作を模式的に説明した図である。
【図5】本実施の形態のプロセッサの命令バッファ制御
回路の内部構成の概略を示す図である。
【図6】本実施の形態のプロセッサの動作を説明するた
めに用いたプログラムの他の例を示す図である。
【図7】本実施の形態のプロセッサの動作を説明するた
めに用いたプログラムの更に他の例を示す図である。
【図8】本実施の形態のプロセッサの命令バッファ制御
回路が出力する制御信号の生成の説明のための図であ
る。
【図9】本実施の形態のプロセッサの命令バッファ制御
回路が出力する制御信号の生成の説明のための図であ
る。
【符号の説明】
1 命令バッファ部 2 命令解読部 3 命令メモリ 10 プリフェッチカウンタ 11 命令バッファ制御回路 12、13 命令バッファレジスタ 20、21、22、34 マルチプレクサ 30 命令レジスタ 31 命令解読回路 32 フラグレジスタ 33 条件成立判定回路 35 プログラムカウンタ 36 加算器 102 プリフェッチアドレス 110、111、112 更新要求信号 200 無効化命令数 210 条件成立信号 211 条件選択信号

Claims (11)

    【特許請求の範囲】
  1. 【請求項1】 命令メモリから複数の命令を読み出す読
    み出し手段と、 前記読み出された複数の命令を保持する保持手段と、 前記保持手段に保持された複数の命令のうち1つを選択
    して供給する命令供給手段と、 前記選択された命令を解読し、分岐条件の成立時に命令
    無効化信号を出力する命令解読手段と、 前記命令無効化信号に基いて前記保持手段に保持された
    複数の命令のうち一部の命令を無効化し、前記命令供給
    手段の対象としない無効化手段とを備えたことを特徴と
    するプロセッサ。
  2. 【請求項2】 命令無効化信号は無効化すべき命令数を
    指示する信号であり、 無効化手段は、 分岐命令の後に続く前記無効化命令数の命令を無効化す
    ることを特徴とする請求項1記載のプロセッサ。
  3. 【請求項3】 プロセッサはパイプライン動作し、 無効化手段は、 命令解読手段が命令無効化信号を出力したサイクルと同
    一サイクル内で、分岐命令の後に続く無効化命令数の命
    令を無効化し、 命令供給手段は、 前記同一サイクル内で、無効化された最後の命令の次に
    位置する命令を選択して供給することを特徴とする請求
    項2記載のプロセッサ。
  4. 【請求項4】 命令供給手段を制御する命令制御回路
    と、 分岐条件の成立時には命令無効化信号を選択して無効化
    手段に出力し、分岐条件の非成立時には次命令選択信号
    を選択して前記命令制御回路に出力する選択手段とを備
    えたことを特徴とする請求項1又は請求項3記載のプロ
    セッサ。
  5. 【請求項5】 命令供給手段は、 読み出し手段から新たに読み出した命令、及び保持手段
    に保持した命令のうち1つの命令を選択して、命令解読
    手段に供給することを特徴とする請求項1記載のプロセ
    ッサ。
  6. 【請求項6】 無効化手段は、 命令供給手段が命令解読部に供給している分岐命令の保
    持手段内でのアドレスを把握する把握手段を備え、 前記分岐命令のアドレスに基いて、分岐命令の後に続く
    無効化命令数の命令を無効化することを特徴とする請求
    項2記載のプロセッサ。
  7. 【請求項7】 保持手段は複数の命令バッファレジスタ
    を備え、 無効化手段は、 前記複数の命令バッファレジスタ間の命令の解読順序の
    先後を把握する他の把握手段を備え、 前記複数の命令バッファレジスタ間の命令の解読順序の
    先後の情報に基いて、分岐命令の後に続く無効化命令数
    の命令を無効化することを特徴とする請求項6記載のプ
    ロセッサ。
  8. 【請求項8】 命令解読手段は、受けた命令を解読して
    分岐の条件選択信号を出力し、 一方、分岐条件をフラグとして格納するフラグレジスタ
    と、 前記条件選択信号と前記フラグとを比較して条件の成立
    の有無を判定する条件成立判定回路とを備えたことを特
    徴とする請求項1記載のプロセッサ。
  9. 【請求項9】 命令解読手段は、受けた命令を解読し
    て、分岐条件の成立の有無を判定することを特徴とする
    請求項1記載のプロセッサ。
  10. 【請求項10】 命令メモリから複数の命令を読み出す
    読み出し手段と、 前記読み出された複数の命令を保持する保持手段と、 前記保持手段に保持された複数の命令のうち1つを選択
    して供給する命令供給手段と、 前記選択された命令を解読し、分岐条件の成立時に仮想
    消費化信号を出力する命令解読手段と、 前記仮想消費化信号に基いて前記保持手段に保持された
    複数の命令のうち一部の命令を仮想的に消費化し、前記
    命令供給手段の対象としない消費化手段とを備えたこと
    を特徴とするプロセッサ。
  11. 【請求項11】 仮想消費化信号は、仮想的に消費した
    命令数を指示する信号であり、 消費化手段は、 分岐命令の後に続く前記仮想消費命令数の命令を仮想的
    に消費することを特徴とする請求項10記載のプロセッ
    サ。
JP9241097A 1997-04-10 1997-04-10 プロセッサ Pending JPH10283185A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP9241097A JPH10283185A (ja) 1997-04-10 1997-04-10 プロセッサ

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP9241097A JPH10283185A (ja) 1997-04-10 1997-04-10 プロセッサ

Publications (1)

Publication Number Publication Date
JPH10283185A true JPH10283185A (ja) 1998-10-23

Family

ID=14053653

Family Applications (1)

Application Number Title Priority Date Filing Date
JP9241097A Pending JPH10283185A (ja) 1997-04-10 1997-04-10 プロセッサ

Country Status (1)

Country Link
JP (1) JPH10283185A (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009070378A (ja) * 2007-09-17 2009-04-02 Internatl Business Mach Corp <Ibm> アウト・オブ・オーダ・プロセッサにおける述語型実行のための方法および装置
JP2013131036A (ja) * 2011-12-21 2013-07-04 Fujitsu Ltd 演算処理装置及び演算処理装置の制御方法
JP2016157371A (ja) * 2015-02-26 2016-09-01 ルネサスエレクトロニクス株式会社 プロセッサおよび命令コード生成装置

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009070378A (ja) * 2007-09-17 2009-04-02 Internatl Business Mach Corp <Ibm> アウト・オブ・オーダ・プロセッサにおける述語型実行のための方法および装置
US9946550B2 (en) 2007-09-17 2018-04-17 International Business Machines Corporation Techniques for predicated execution in an out-of-order processor
JP2013131036A (ja) * 2011-12-21 2013-07-04 Fujitsu Ltd 演算処理装置及び演算処理装置の制御方法
JP2016157371A (ja) * 2015-02-26 2016-09-01 ルネサスエレクトロニクス株式会社 プロセッサおよび命令コード生成装置
US10540182B2 (en) 2015-02-26 2020-01-21 Renesas Electronics Corporation Processor and instruction code generation device

Similar Documents

Publication Publication Date Title
KR101059335B1 (ko) 가변 길이 명령 세트 실행 모드들을 가지는 프로세서 내의 bht의 효율적 사용방법
US6950903B2 (en) Power reduction for processor front-end by caching decoded instructions
JP3871883B2 (ja) 間接分岐ターゲットを計算するための方法
US9367471B2 (en) Fetch width predictor
US20030120906A1 (en) Return address stack
JP3502592B2 (ja) 分岐予測装置
US6330664B1 (en) Method relating to handling of conditional jumps in a multi-stage pipeline arrangement
US7877578B2 (en) Processing apparatus for storing branch history information in predecode instruction cache
US20060095746A1 (en) Branch predictor, processor and branch prediction method
JP2006517322A (ja) パイプライン化ディジタルプロセッサにおけるハザード検出および管理のための方法および装置
US9507600B2 (en) Processor loop buffer
JPH10283185A (ja) プロセッサ
JP3532835B2 (ja) データ処理装置およびプログラム変換装置
JP2001022577A (ja) 情報処理装置
CN111124494B (zh) 一种cpu中加速无条件跳转的方法及电路
JP3558481B2 (ja) データ処理装置
JPH09190348A (ja) 命令プリフェッチバッファ制御方法、命令プリフェッチバッファ制御装置、及び命令プリフェッチバッファフラッシュ方法
JPH08171491A (ja) ディスパッチされた制御転送命令状態に基づきより高速で命令を先取りするための方法及び装置
JP2591325B2 (ja) 分岐制御装置
JPH07200406A (ja) キャッシュシステム
JP4049490B2 (ja) 情報処理装置
JPH0991139A (ja) 情報処理装置
JPH09311787A (ja) データ処理装置
WO2008038373A1 (fr) Processeur pour augmenter la vitesse de prédiction de branchement
JP3625586B2 (ja) プロセッサの命令実行制御システム

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20040224

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20040629