JPH0651983A - 命令バッファ回路制御方式 - Google Patents
命令バッファ回路制御方式Info
- Publication number
- JPH0651983A JPH0651983A JP20165792A JP20165792A JPH0651983A JP H0651983 A JPH0651983 A JP H0651983A JP 20165792 A JP20165792 A JP 20165792A JP 20165792 A JP20165792 A JP 20165792A JP H0651983 A JPH0651983 A JP H0651983A
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- exception
- counter
- register
- buffer circuit
- 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.)
- Granted
Links
Landscapes
- Executing Machine-Instructions (AREA)
- Advance Control (AREA)
Abstract
る複数の命令レジスタから構成される命令バッファ回路
を制御するための命令バッファ回路制御方式に関し、命
令バッファ回路とその周辺回路のハードウェア量の削減
を目的とする。 【構成】命令に付加される例外コードを管理する例外コ
ードレジスタ5と、例外コードの付加される命令の命令
レジスタ1上での展開位置を管理する例外命令カウンタ
6とを備え、命令レジスタ1に保持される先頭命令の展
開位置を管理する逐次命令カウンタ2の管理データと、
例外命令カウンタ6の管理データとの差分値から求まる
命令長と、命令実行パイプラインに投入される命令の命
令長との大小に従って、例外コードレジスタ5の管理す
る例外コードを命令実行パイプラインに投入するか否か
を制御していくように構成する。
Description
されて命令実行パイプラインに投入されていく命令列を
一時的に保持する命令バッファ回路を制御するための命
令バッファ回路制御方式に関し、特に、命令バッファ回
路とその周辺回路とのハードウェア量の削減を実現でき
る命令バッファ回路制御方式に関する。
のアルゴリズムを持っており、命令の実行に要するマシ
ンサイクル数は共通とは限らない。また、命令実行パイ
プライン上に存在する命令の間に、オペレーションソー
スの干渉がある場合には、先行命令のオペレーションが
終了するまでの間、後続命令のオペレーションはインタ
ロックされる。
クル数で命令実行パイプラインを抜けるかということ
は、その命令が命令実行パイプラインに投入され、オペ
コード、オペランドがデコードされるまで不明である。
一方、命令供給の遅れにより命令実行パイプラインに空
きステージを生じさせないために、主記憶上にあって命
令実行が予想される命令列に対しては、命令実行とは必
ずしも同期させずに命令フェッチが行われる。
動作とは同期しない。これから、この速度差を緩衝する
ために、命令バッファ回路が設けられて、複数回の命令
フェッチ動作に対応してフェッチされてくる命令列を保
持していく構成が採られている。この命令バッファ回路
とその周辺回路は、可能な限り少ないハードウェア量で
実装できる必要がある。
ラインでの命令実行とは必ずしも同期せずに、命令キャ
ッシュに命令フェッチ要求を発行し、命令バッファ回路
は、この命令フェッチ要求に応答して読み出されてくる
命令を受け取ると、一時的に保持する構成を採って、命
令実行の逐次性にのっとって、しかるべき命令を切り分
けて命令実行パイプラインに投入していく。
命令バッファ回路を制御するための周辺回路の構成を図
示する。この図の命令バッファ回路は、A系列、B系
列、C系列という3系列から構成されており、各系列
は、複数回の命令フェッチに対応して読み出されてくる
命令列を保持すべく、命令キャッシュから読み出される
命令を入力とする複数の命令レジスタ1の直列接続から
構成される。ここでは、1回の命令フェッチ量が8バイ
トであることに対応して、8バイト単位の命令レジスタ
1を単位として、4個の命令レジスタ1の直列接続で構
成される命令バッファ回路を図示してある。
次命令カウンタ2と、抽出回路3と、選択回路4とが具
備される。この逐次命令カウンタ2は、各系列対応に備
えられて、各系列の命令レジスタ1に保持される先頭命
令の展開位置を管理する。抽出回路3は、各系列対応に
備えられて、自系列の命令レジスタ1の保持データを入
力として、逐次命令カウンタ2の指す命令レジスタ1の
命令を抽出する。選択回路4は、全系列に共通に備えら
れて、3系列の抽出回路3の出力データを入力として、
指定されるセレクト信号に従って、抽出回路3の抽出す
る命令を選択出力する。
示する。図中のaはセレクタを表している。この図で
は、逐次命令カウンタ2が、命令レジスタ1の“09”
を先頭命令の展開位置として管理(先頭のカウンタ値は
バリッドビット)して、抽出回路3が、その位置から、
6バイトの命令を抽出する例を示してある。
成するのは、分岐命令の分岐成立確定以前に、分岐先命
令列のフェッチを開始できるようにするためであり、そ
して、分岐予測を行って分岐先命令列の先取りをすると
きに、分岐成立確定以前に、分岐予測した分岐先命令列
のフェッチを開始できるようにするためである。具体的
には、1つの系列が、現在命令実行パイプラインで実行
されている命令シーケンスの後続命令列フェッチのため
に使用され、残りの系列が、分岐命令のように、現在の
命令シーケンスを変更する命令に対応して、分岐先命令
列をフェッチするために使用されることになる。
の過程で発生してマシンが認識した事象を、その命令の
実行時に、再びマシンに認識させマシンの状態遷移を引
き起こしたい場合がある。例えば、主記憶のある命令を
フェッチする過程で発生したアクセス例外は、その命令
の実行時に、マシンにより認識されて、しかるべきプロ
グラム割込を引き起こす。また、回路やプログラムのデ
バックのために、チェックポイントを設けることのでき
るマシンでは、チェックポイントとして定められた命令
のフェッチ時に、その命令にチェックポイントを表示す
るコードが付けられ、アクセス例外と同様に、その命令
の実行時に、マシンにより認識されて、しかるべきプロ
グラム割込を引き起こす。
アクセス例外やチェックポイントコード(以下、例外コ
ードと称する)を格納するレジスタを、図8で説明した
命令レジスタ1と同様な構成に従って備えるとともに、
これに対応させて図8の抽出回路3と同様な構成の回路
を備える構成を採って、この例外コードを命令レジスタ
1に格納される命令本体と同様なハンドリングに従っ
て、命令実行パイプラインに投入していくという構成を
採っていた。この構成に従い、例外コードは命令本体と
一体化して命令バッファ回路をシフトし、逐次命令カウ
ンタ1により示される番地の例外コードは、命令本体と
一緒に命令実行パイプラインに投入されて、命令実行パ
イプラインで例外処理を引き起こすことになる。
うな従来技術では、命令バッファ回路のハードウェア量
が大きくなるとともに、その周辺回路のハードウェア量
も大きくなるというという問題点があった。そして、周
辺回路のハードウェア量が増加することで、遅延時間が
増大してしまうという問題点もあったのである。
であって、キャッシュから読み出されて命令実行パイプ
ラインに投入されていく命令列を一時的に保持するため
に用意される命令バッファ回路と、その周辺回路とのハ
ードウェア量の削減を実現できる新たな命令バッファ回
路制御方式の提供を目的とする。
を図示する。図中、100は命令キャッシュ、200は
命令実行パイプラインである。
構成する命令レジスタである。この命令レジスタ1は複
数直列に接続され、命令キャッシュ100から読み出さ
れる命令を入力として、この命令を順次シフトしつつ保
持していく。ここで、説明の便宜上、命令レジスタ1の
アドレスは、命令キャッシュ100に接続する方を大と
する。
ある。この逐次命令カウンタ2は、命令レジスタ1に命
令が保持されているか否かを表示するバリッドビットを
管理するとともに、命令レジスタ1に保持される先頭命
令の展開位置を計数値に従って管理する。この管理処理
のために、逐次命令カウンタ2は、命令キャッシュ10
0から命令がフェッチされると、命令レジスタ1内で命
令が一斉にシフトすることになるので、そのシフト量に
合わせて計数値をディクリメントするとともに、命令実
行パイプライン200から次命令の提示要求があると、
それに応じて命令が命令実行パイプライン200に投入
されていくので、その投入される命令の命令長分インク
リメントする。
の抽出回路3は、命令レジスタ1の保持する命令を入力
として、逐次命令カウンタ2の指す命令レジスタ1の命
令を選択して命令実行パイプライン200に投入する。
である。この例外コードレジスタ5は、命令キャッシュ
100からフェッチされる命令に付加されている例外コ
ードを保持する。
ある。この例外命令カウンタ6は、命令レジスタ1に保
持されている命令の中に例外コードの付加される命令が
保持されているか否かを表示するバリッドビットを管理
するとともに、例外コードの付加先となる命令部分の命
令レジスタ1上での展開位置を計数値に従って管理す
る。この管理処理のために、例外命令カウンタ6は、例
外コードの付加される命令が命令レジスタ1上に展開さ
れているときには、命令キャッシュ100から命令がフ
ェッチされると、命令レジスタ1内で命令が一斉にシフ
トすることになるので、そのシフト量に合わせて計数値
をディクリメントする。ここで、例外コードの付加され
る命令は決まっているものであることから、命令実行パ
イプライン200から次命令の提示要求があっても、そ
の計数値をインクリメントすることはない。
である。この例外コード制御回路7は、逐次命令カウン
タ2の計数値と、例外命令カウンタ6の計数値と、命令
実行パイプライン200に投入される命令の命令長とか
ら、例外コードレジスタ5の管理する例外コードを命令
実行パイプライン200に投入するか否かを制御する。
ジスタ1に保持される命令の持つ例外コードを管理し、
例外命令カウンタ6が、この例外コードの付加先となる
命令部分の命令レジスタ1上での展開位置を管理すると
きにあって、例外コード制御回路7は、例外命令カウン
タ6の管理する計数値と、逐次命令カウンタ2の管理す
る計数値との差分値から求まる命令長(命令レジスタ1
のアドレスの振り方が逆になるときには、逐次命令カウ
ンタ2の管理する計数値と、例外命令カウンタ6の管理
する計数値との差分値から求まる命令長となる)が、命
令実行パイプライン200に投入される命令の命令長よ
りも大きいときには、命令実行パイプライン200に投
入される命令は例外コードを持たない命令であるので、
例外コードレジスタ5の管理する例外コードを命令実行
パイプライン200に投入しないよう制御する。
値と、例外命令カウンタ6の管理する計数値との差分値
から求まる命令長が、命令実行パイプライン200に投
入される命令の命令長よりも小さいときには、命令実行
パイプライン200に投入される命令は例外コードを持
つ命令であるので、例外コードレジスタ5の管理する例
外コードを命令実行パイプライン200に投入するよう
制御する。
スタ5と、例外命令カウンタ6と、例外コード制御回路
7という小さなハードウェア量でもって、例外コードを
命令実行パイプライン200に投入していけるようにな
るのである。
る。図2に、本発明の一実施例を図示する。図中、図1
で説明したものと同じものについては同一の記号で示し
てある。ここで、この実施例では、A系列、B系列、C
系列という3系列から構成される命令バッファ回路を想
定しており、1回の命令フェッチ量が8バイトであるこ
とに対応して、各命令レジスタ1は8バイトを持ち、4
回分の命令フェッチ量を保持可能にすべく4個の命令レ
ジスタ1の直列接続により構成されるもので開示してあ
る。
A系列で説明するならば、命令キャッシュ100からフ
ェッチされる命令を入力とする命令レジスタ1をIBR
A3、このIBRA3に直列接続する命令レジスタ1を
IBRA2、このIBRA2に直列接続する命令レジス
タ1をIBRA1、このIBRA1に直列接続する命令
レジスタ1をIBRA0で表すとともに、図9に示した
ように、IBRA0のアドレスを“00”から“0
3”、IBRA1のアドレスを“04”から“07”、
IBRA2のアドレスを“08”から“0B”、IBR
A3のアドレスを“0C”から“0F”と定義する。
列から命令を読み出して命令実行パイプライン200に
投入するかを指示する投入指示信号を出力するととも
に、命令レジスタ1の保持する命令を低アドレス側の命
令レジスタ1にシフトすることを指示するバブルアップ
信号を出力するもの、8は命令提示制御部300に対応
付けて備えられるデコーダであって、命令提示制御部3
00の出力する投入指示信号の示す系列番号をデコード
するものである。
られるデコーダであって、命令提示制御部300が自系
列についてのバブルアップ信号を出力するときに“−
4”を出力するもの、10は例外命令カウンタ6に対応
付けて備えられるデコーダであって、命令提示制御部3
00が自系列についてのバブルアップ信号を出力すると
きに“−4”を出力するもの、11はAND回路であっ
て、命令実行パイプライン200が次命令提示要求を発
行するときに、デコーダ8の出力信号が自系列を表示し
ているときには、逐次命令カウンタ2に対して更新信号
を出力するものである。
えられる加算器であって、命令提示制御部300がバブ
ルアップ信号を出力するときに、逐次命令カウンタ2の
計数値と、デコーダ9の出力する“−4”とを加算し
て、逐次命令カウンタ2の計数値をこの加算値に更新す
るとともに、AND回路11が更新信号を出力するとき
に、逐次命令カウンタ2の計数値と、命令実行パイプラ
イン200に投入されることになる命令の命令長(後述
するデコーダ18が出力してくる)とを加算して、逐次
命令カウンタ2の計数値をこの加算値に更新するもので
ある。
えられる加算器であって、命令提示制御部300がバブ
ルアップ信号を出力するときに、例外命令カウンタ6の
計数値と、デコーダ10の出力する“−4”とを加算し
て、例外命令カウンタ6の計数値をこの加算値に更新す
るものである。
加算して逐次命令カウンタ2/例外命令カウンタ6の計
数値を更新していくのは、上述のように、8バイトの命
令レジスタ1に“4”単位のアドレスを割り付けている
ことに対応して、命令のフェッチ処理に従って、命令レ
ジスタ1上に保持される命令の展開アドレスが“4”分
低アドレス側にシフトするので、その分計数値を低アド
レス側にシフトさせていくことにその理由がある。ま
た、加算器12が、投入命令長を加算して逐次命令カウ
ンタ2の計数値を更新していくのは、命令の投入処理に
従って、命令レジスタ1上に保持される先頭命令の展開
アドレスが投入命令長分高アドレス側にシフトするの
で、その分計数値を高アドレス側にシフトさせていくこ
とにその理由がある。
の出力する命令を命令実行パイプライン200に投入す
べく保持するもの、15は例外ステージであって、例外
コードレジスタ5の保持する例外コードを読み出して命
令実行パイプライン200に投入すべく保持するもので
ある。命令レジスタ1に保持される先頭命令が、この命
令ステージ14に保持されるものであることから、逐次
命令カウンタ2は、この命令ステージ14に保持される
命令の命令レジスタ1上の展開アドレスを管理すること
になる。
号を入力とする選択回路であって、デコーダ8の出力信
号の指す系列の命令ステージ14を選択して、その命令
ステージ14の保持する命令を命令実行パイプライン2
00に投入するもの、17は各系列の例外ステージ15
の出力信号を入力とする選択回路であって、デコーダ8
の出力信号の指す系列の例外ステージ15を選択して、
その例外ステージ15の保持する例外コードを命令実行
パイプライン200に投入するものである。
られるデコーダであって、命令ステージ14に保持され
る命令の命令長をデコードするもの、19は加算器であ
って、逐次命令カウンタ2の管理するアドレスと、デコ
ーダ18の出力する命令長とを加算して、抽出回路3に
対して抽出処理実行のためのアドレス信号として与える
ものである。この加算器19の出力するアドレス信号
は、次に命令レジスタ1から読み出す命令のアドレス情
報を表している。
処理について説明する。命令提示制御部300は、図示
しない命令フェッチ制御部からフェッチ命令の転送要求
があると、格納先系列の命令レジスタ1、逐次命令カウ
ンタ2、例外命令カウンタ6、デコーダ9及びデコーダ
10に対してバブルアップ信号を送出する。このバブル
アップ信号を受け取ると、命令レジスタ1は、保持して
いる命令列を低アドレス側の命令レジスタ1に8バイト
分シフトする。そして、このシフト処理が終了すると、
命令キャッシュ100から送られてくるフェッチ命令を
IBRA3に保持する。このとき、このフェッチ命令に
例外コードが付加されているときには、例外コードレジ
スタ5は、その例外コードを保持するとともに、例外命
令カウンタ6は、その例外コードの付加先の命令部分の
展開アドレスを登録する。
アップ信号を受け取ると、デコーダ9は、“−4”を出
力し、この出力とバブルアップ信号の出力とを受けて、
加算器12は、8バイト分低アドレス側にシフトした命
令レジスタ1上の先頭命令の展開アドレスを出力してく
るので、逐次命令カウンタ2は、バブルアップ信号を受
け取るときに、この加算器12の更新値を受け取ること
で、命令レジスタ1上に保持される先頭命令の展開アド
レスの更新を実行する。
からバブルアップ信号を受け取ると、デコーダ10は、
“−4”を出力し、この出力とバブルアップ信号の出力
とを受けて、加算器13は、8バイト分低アドレス側に
シフトした例外コードの付加先となる命令部分の命令レ
ジスタ1上での展開アドレスを出力してくるので、逐次
命令カウンタ2は、バブルアップ信号を受け取るとき
に、この加算器12の更新値を受け取ることで、例外コ
ードの付加先となる命令部分の命令レジスタ1上での展
開アドレスの更新を実行する。
パイプライン200から命令の投入指示があると、デコ
ーダ8を介して、選択回路16,17に対して投入命令
の系列番号を通知するとともに、AND回路11を介し
て、逐次命令カウンタ2に対して更新信号を送出する。
この更新信号とデコーダ18の出力する命令長とを受け
て、加算器12は、投入命令長分高アドレス側にシフト
した命令レジスタ1上の先頭命令の展開アドレスを出力
してくるので、逐次命令カウンタ2は、更新信号を受け
取るときに、この加算器12の更新値を受け取ること
で、命令レジスタ1上に保持される先頭命令の展開アド
レスの更新を実行する。
命令レジスタ1上に保持される先頭命令の展開アドレス
を管理し、例外命令カウンタ6は、例外コードの付加先
となる命令部分の命令レジスタ1上での展開アドレスを
管理することになる。
抽出回路3は、命令ステージ14の保持する命令が選択
回路16の選択処理に従って選択されて命令実行パイプ
ライン200に投入されると、デコーダ19の出力する
次アドレス情報に従って、次に命令実行パイプライン2
00に投入されることになる命令を命令レジスタ1から
抽出して命令ステージにセットしていく。このセット処
理に続いて、逐次命令カウンタ2は、AND回路11の
出力する更新信号に従って計数値を更新することで、命
令ステージ14にセットされた命令の命令レジスタ上の
展開アドレスの管理処理に入る。
外コード制御回路7は、例外命令カウンタ6の管理する
例外コードの付加される命令部分の展開アドレスと、逐
次命令カウンタ2の管理する先頭命令の展開アドレスと
の差分値より求まる命令長が、命令ステージ14にセッ
トされている命令の命令長よりも大きいときには、例外
ステージ15に対してラッチ信号を送出しないよう処理
する。これにより、命令ステージ14にセットされる命
令が命令実行パイプライン200に投入されていくとき
に、この命令には、例外コードが付加されないよう制御
される。
コードの付加される命令部分の展開アドレスと、逐次命
令カウンタ2の管理する先頭命令の展開アドレスとの差
分値より求まる命令長が、命令ステージ14にセットさ
れている命令の命令長よりも小さいときには、例外ステ
ージ15に対してラッチ信号を送出することで、例外コ
ードレジスタ5の保持する例外コードを例外ステージ1
5にセットしていくよう処理する。これにより、命令ス
テージ14にセットされる命令が命令実行パイプライン
200に投入されていくときに、この命令には、例外コ
ードが付加されていくよう制御される。
制御回路7の制御処理について具体的に説明する。図3
に示すように、命令レジスタ1のアドレス“03”に先
頭命令の命令1が保持され、これに続いて、命令レジス
タ1のアドレス“06”に命令2が保持され、これに続
いて、命令レジスタ1のアドレス“09”に保持され、
かつアドレス“0A”に例外コードの付加される命令3
が保持され、これに対応して、命令ステージ14に命令
1がセットされている場合を想定する。このとき、逐次
命令カウンタ2は、バリッドビットを除くと、命令1の
展開アドレス“0011”を管理し、例外命令カウンタ
6は、バリッドビットを除くと、例外コードの展開アド
レス“1010”を管理する。
する例外コードの付加される命令部分の展開アドレス
と、逐次命令カウンタ2の管理する先頭命令の展開アド
レスとの差分値より求まる命令長は“7”であり、一
方、命令実行パイプライン200に投入される命令1の
命令長は“3”であるので、例外コードレジスタ5に保
持される例外コードは、この命令1に対してのものでは
ない。これから、例外コード制御回路7は、例外ステー
ジ15に例外コードをセットしていかないよう制御す
る。この制御処理に従って、命令1のみが命令実行パイ
プライン200に投入されることになる。
入されると、今度は、命令ステージ14に命令2がセッ
トされるとともに、図4に示すように、逐次命令カウン
タ2は、バリッドビットを除くと、命令2の展開アドレ
ス“0110”を管理し、例外命令カウンタ6は、バリ
ッドビットを除くと、例外コードの展開アドレス“10
10”を管理する。
する例外コードの付加される命令部分の展開アドレス
と、逐次命令カウンタ2の管理する先頭命令の展開アド
レスとの差分値より求まる命令長は“4”であり、一
方、命令実行パイプライン200に投入される命令1の
命令長は“3”であるので、例外コードレジスタ5に保
持される例外コードは、この命令2に対してのものでは
ない。これから、例外コード制御回路7は、例外ステー
ジ15に例外コードをセットしていかないよう制御す
る。この制御処理に従って、命令2のみが命令実行パイ
プライン200に投入されることになる。
入されると、今度は、命令ステージ14に命令3がセッ
トされるとともに、図5に示すように、逐次命令カウン
タ2は、バリッドビットを除くと、命令3の展開アドレ
ス“1001”を管理し、例外命令カウンタ6は、バリ
ッドビットを除くと、例外コードの展開アドレス“10
10”を管理する。
する例外コードの付加される命令部分の展開アドレス
と、逐次命令カウンタ2の管理する先頭命令の展開アド
レスとの差分値より求まる命令長は“1”であり、一
方、命令実行パイプライン200に投入される命令3の
命令長は“3”であるので、例外コードレジスタ5に保
持される例外コードは、この命令3に対してのものであ
る。これから、例外コード制御回路7は、例外ステージ
15に例外コードをセットしていくよう制御する。この
制御処理に従って、命令3と例外コードとが命令実行パ
イプライン200に投入されることになる。
の保持機構に関しては、命令レジスタ1のようなレジス
タ手段を直列接続する必要はなく、ただ単に、例外コー
ドレジスタ5を備えるだけで足りる。また、例外コード
の命令実行パイプライン200への投入機構に関して
は、抽出回路3のような複雑な回路を用意する必要はな
く、簡単な回路構成で実現できる例外コード制御回路7
を用意すれば足りるのである。
がセットされるタイミングについて説明する。図中のI
−IT−IB−IRのパイプラインは、命令キャッシュ
100と上述の命令バッファ回路との間に設置される命
令フェッチパイプラインを表している。
の命令キャッシュ100を制御するもの)が命令フェッ
チ要求を受付可能な状態であることを確認すると、記憶
制御部に対して命令フェッチ要求を発行し、命令フェッ
チパイプラインを起動する。これにより、命令フェッチ
パイプラインは、Iステージに入る。このIステージで
は、命令フェッチ要求が有効であることを示すリクエス
トバリッドや、命令フェッチ要求を出した系列を表示す
るリクエストID等を受け取って、これらのタグを以降
のステージに流していく。
憶制御部はTLBを索引する。そして、ITステージに
続くIBステージの所で、記憶制御部は、TLBの索引
により得られた実アドレスを用いて命令キャッシュ10
0を検索してフェッチデータを得て、このフェッチデー
タとクロックイネーブルとを命令フェッチパイプライン
に送出してくるので、これを受け取る。
た時点で、命令フェッチパイプラインは、命令レジスタ
1にフェッチデータをセットする。このステージで、記
憶制御部がステイタスバリッド信号を送出してきた場
合、フェッチ要求元の命令フェッチ制御部は、フェッチ
データが有効であることを知る。フェッチデータの有効
性が確認できると、命令バッファ回路は、命令実行パイ
プライン200へ命令を投入して、命令実行パイプライ
ンの最初のステージを有効にする。
いて、記憶域へのアクセスに関して何らかの例外が発生
した場合には、例外事象がコード化され、IRステージ
において記憶制御部から送られてくる。例外発生が確認
されると、例外命令カウンタ6のバリッドビットがセッ
トされるとともに、その命令の命令レジスタ1上でのア
ドレス位置がセットされる。
ットされることになる。次に、図7に従って、例外命令
カウンタ6のバリッドビットがリセットされるタイミン
グについて説明する。図中のI−IT−IB−IRのパ
イプラインは命令フェッチパイプライン、D−A−T−
B−E−Wは命令実行パイプライン200を表してい
る。
100”番地から連続する命令ストリームAの命令列に
対して命令フェッチが行われているとする。この命令ス
トリームAのフェッチには、例えば、上述の命令バッフ
ァ回路のA系列が使用される。この命令ストリームAに
あって、“0124”番地の命令は分岐命令Aである。
ェッチ要求の送出が行われる過程で、図7(a)のに
示すTステージで、分岐命令Aに対する命令フェッチが
行われると、分岐命令Aのアドレスが命令フェッチパイ
プラインをタグとなって流れる際に、分岐履歴等から分
岐命令Aの分岐先命令アドレスが得られ、図7(b)に
示すように、この分岐先命令列に対して命令フェッチが
開始される。この分岐先命令の命令ストリームBには、
例えば、上述の命令バッファ回路のB系列が使用され
る。
され、図7(a)のに示すRステージで、B系列に対
して例外コードが送られ、B系列の例外命令カウンタ6
のバリッドビットがセットされる。図7(a)のに示
すように、命令実行パイプライン200のあるステージ
で、分岐命令Aの分岐の不成立が確定するとする。分岐
不成立が確定すると、命令ストリームBは実行されない
ことが分かるので、図7(a)のに示すように、命令
ストリームBに使用されていたB系列に対してキャンセ
ル信号が送出される。このキャンセル信号に従って、B
系列の例外命令カウンタ6のバリッドがリセットされ
る。
セットされることになる。
キャッシュから読み出されて命令実行パイプラインに投
入されていく命令列を一時的に保持する命令バッファ回
路にあって、命令に付加される例外コードについては、
従来技術の必要とした複雑な保持機構や複雑な抽出機構
を備える必要がないことから、命令バッファ回路とその
周辺回路とのハードウェア量を大幅に削減できるように
なる。
である。
図である。
Claims (3)
- 【請求項1】 フェッチされた命令列を順次保持する複
数の命令レジスタ(1) から構成される命令バッファ回路
と、該命令レジスタ(1) に保持される先頭命令の展開位
置を管理する逐次命令カウンタ(2) とを備えて、命令実
行パイプライン(200) に対して、先頭命令からの順番に
従って該命令バッファ回路の保持する命令を投入してい
く構成を採る命令バッファ回路制御方式において、 命令に付加される例外コードを管理する例外コードレジ
スタ(5) と、 上記例外コードの付加先となる命令部分の命令レジスタ
(1) 上での展開位置を管理する例外命令カウンタ(6) と
を備え、 上記逐次命令カウンタ(2) の管理データと上記例外命令
カウンタ(6) の管理データとの差分値から求まる命令長
と、命令実行パイプライン(200) に投入される命令の命
令長との大小に従って、上記例外コードレジスタ(5) の
管理する例外コードを命令実行パイプライン(200) に投
入するか否かを制御していくよう処理することを、 特徴とする命令バッファ回路制御方式。 - 【請求項2】 請求項1記載の命令バッファ回路制御方
式において、 逐次命令カウンタ(2) の管理データと例外命令カウンタ
(6) の管理データとの差分値から求まる命令長が、命令
実行パイプライン(200) に投入される命令の命令長より
も大きいときには、例外コードを命令実行パイプライン
(200) に投入しないよう制御し、一方、小さいときに
は、例外コードを命令実行パイプライン(200) に投入す
るよう制御することを、 特徴とする命令バッファ回路制御方式。 - 【請求項3】 請求項1又は2記載の命令バッファ回路
制御方式において、 命令バッファ回路が複数の系列に対応して複数備えら
れ、これに対応して逐次命令カウンタ(2) が各系列対応
に備えられるときにあって、例外コードレジスタ(5) 及
び例外命令カウンタ(6) を各系列対応に備えるよう構成
されることを、 特徴とする命令バッファ回路制御方式。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP20165792A JP2812615B2 (ja) | 1992-07-29 | 1992-07-29 | 命令バッファ回路制御方式 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP20165792A JP2812615B2 (ja) | 1992-07-29 | 1992-07-29 | 命令バッファ回路制御方式 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH0651983A true JPH0651983A (ja) | 1994-02-25 |
JP2812615B2 JP2812615B2 (ja) | 1998-10-22 |
Family
ID=16444733
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP20165792A Expired - Lifetime JP2812615B2 (ja) | 1992-07-29 | 1992-07-29 | 命令バッファ回路制御方式 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2812615B2 (ja) |
-
1992
- 1992-07-29 JP JP20165792A patent/JP2812615B2/ja not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
JP2812615B2 (ja) | 1998-10-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5584009A (en) | System and method of retiring store data from a write buffer | |
JP2746549B2 (ja) | コンピュータシステム及びその動作方法 | |
US6442679B1 (en) | Apparatus and method for guard outcome prediction | |
EP0352935B1 (en) | Pipelined processor | |
US5930832A (en) | Apparatus to guarantee TLB inclusion for store operations | |
US20050198480A1 (en) | Apparatus and method of controlling instruction fetch | |
JPH09120360A (ja) | ロード命令を実行する実行ユニットを具備するデータ・プロセッサおよびその動作方法 | |
EP0357188B1 (en) | Pipelined processor | |
JPS6341093B2 (ja) | ||
JP2839075B2 (ja) | 処理システムを動作させる方法及び処理システム | |
US5740398A (en) | Program order sequencing of data in a microprocessor with write buffer | |
EP0612012A1 (en) | A pipeline computer with scoreboard | |
WO1995016954A1 (fr) | Circuit de traitement d'instructions dans un systeme informatique | |
JP2000029701A (ja) | 単一クロック・サイクルに非連続命令を取り出すための方法およびシステム。 | |
JP2001243069A (ja) | 分岐予測装置及び分岐予測方法 | |
EP0651331A1 (en) | A write buffer for a superpipelined, superscalar microprocessor | |
JPH06259253A (ja) | データプロセッサおよびその動作方法 | |
JP2001060153A (ja) | 情報処理装置 | |
JP3469469B2 (ja) | 情報処理装置 | |
JP3725547B2 (ja) | 限定ラン分岐予測 | |
JPH02287626A (ja) | パイプライン方式の分岐命令制御装置 | |
JP3335379B2 (ja) | ブランチ・ヒストリーを持つ命令実行処理装置 | |
JP2001100995A (ja) | 分岐履歴情報の書き込み制御装置及びその方法 | |
JP3146077B2 (ja) | プロセッサ | |
US6161171A (en) | Apparatus for pipelining sequential instructions in synchronism with an operation clock |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 19980721 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20080807 Year of fee payment: 10 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090807 Year of fee payment: 11 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090807 Year of fee payment: 11 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100807 Year of fee payment: 12 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110807 Year of fee payment: 13 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120807 Year of fee payment: 14 |
|
EXPY | Cancellation because of completion of term |