JP2504830Y2 - デ―タ処理装置 - Google Patents

デ―タ処理装置

Info

Publication number
JP2504830Y2
JP2504830Y2 JP1988056781U JP5678188U JP2504830Y2 JP 2504830 Y2 JP2504830 Y2 JP 2504830Y2 JP 1988056781 U JP1988056781 U JP 1988056781U JP 5678188 U JP5678188 U JP 5678188U JP 2504830 Y2 JP2504830 Y2 JP 2504830Y2
Authority
JP
Japan
Prior art keywords
instruction
branch
prefetch
tag
ipb
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
JP1988056781U
Other languages
English (en)
Other versions
JPS63199341U (ja
Inventor
フイリツプ・ドイス・ヘスター
ウイリアム・マイケル・ジヨンソン
Original Assignee
インタ−ナシヨナル・ビジネス・マシ−ンズ・コ−ポレ−ション
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 インタ−ナシヨナル・ビジネス・マシ−ンズ・コ−ポレ−ション filed Critical インタ−ナシヨナル・ビジネス・マシ−ンズ・コ−ポレ−ション
Publication of JPS63199341U publication Critical patent/JPS63199341U/ja
Application granted granted Critical
Publication of JP2504830Y2 publication Critical patent/JP2504830Y2/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/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3804Instruction prefetching for branches, e.g. hedging, branch folding
    • 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, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • 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, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
    • G06F9/3889Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute

Description

【考案の詳細な説明】 A.産業上の利用分野 本考案は、パイプライン式処理装置の命令プリフェッ
チ・バッファの操作に関し、より詳細にはブランチ命令
およびブランチ・実行(branch-with-execute)命令の
実行に関するものである。
B.開示の概要 本考案に従った、命令プリフェッチ・バッファは、命
令ストリーム中のブランチの前に発生した旧プリフェッ
チと命令ストリーム中のブランチの後に発生した新プリ
フェッチを区別することができる。命令要求が記憶装置
に送られる度に、制御タグが生成される。記憶装置から
戻される命令は元の制御タグを付加されており、該制御
タグが命令プリフェッチ・バッファ中の制御タグの現在
値と比較される。もし2つの値が一致すれば、これは、
ブランチが発生しなかったこと、そしてその命令がなお
必要とされていることを示す。しかし、もし制御タグの
2つの値が一致しなければ、これは命令ストリーム中で
ブランチが発生したこと、従って記憶装置からバッファ
に送られている命令がもはや必要でないことを示す。
本考案は、ブランチ命令の直後に従属命令が実行され
る如き、ブランチ・実行命令の使用にも適用することが
できる。ブランチ目標命令の前にこの従属命令を実行す
ることにより、システム処理装置はブランチ目標命令を
持つ間にその操作を続けることができる。
C.従来の技術 パイプライン式処理装置では、命令などの多数のデー
タが処理装置を記憶手段と接続するチャネル中を同時に
移動することができる。かかるデータ転送を制御するた
めに、記憶制御装置が使用される。チャネル中を移動す
るデータには、処理装置中のその宛先を識別するための
タグがつけられる。処理装置の動作は記憶手段のそれよ
りもずっと速いので、かかるパイプライン式記憶チャネ
ルを処理装置内の適当なバッファと併せて使用すると、
処理装置はその最も有効な速度で動作し、しかも複数の
同時的な記憶トランザクションを行うことができる。パ
イプライン式記憶チャネルの概念は、IBMテクニカル・
ディスクロージャ・ブレテイン(IBM Technical Disclo
sure Bulletin)、1982年3月発行、第4986頁〜4987頁
および同ブレテイン、1982年8月発行、第1771頁〜1772
頁に記載されている。
かかるパイプライン式処理装置中の命令は、通常その
実行の数サイクル前にフェッチされる。これによって、
命令アクセスを命令実行と並行して行なえるため、処理
装置のパフォーマンスが向上する。しかし、成功するブ
ランチ命令に遭遇すると、問題が起こる。というのは、
成功するブランチ命令の前にフェッチされた命令は旧命
令ストリームの一部であるため、ブランチが成功する
と、これらのすべての命令が無効にされてしまうからで
ある。処理装置は、そのブランチ先の新しい命令ストリ
ームを待つ間、本質的に遊休状態にある。この遊休時間
によって、処理装置のパフォーマンス全体が低下する。
ブランチの結果として生ずるもう一つの問題は、処理
装置中の命令プリフェッチ・バッファが成功するブラン
チについて事前に何も知っておらず、したがってブラン
チが成功するとき、以前のプリフェッチからのいくつか
の要求が未処理のままに留まることがあるということで
ある。この問題は、旧プリフェッチ、すなわち成功する
ブランチの前に行われ、もはや必要でないプリフェッチ
と、成功するブランチの結果必要となる新しいプリフェ
ッチとをどのように区別するかという点にある。
D.考案が解決しようとする問題点 このブランチ問題を解決するための一つの方法は、命
令プリフェッチ・バッファを2つの部分に分割し、ブラ
ンチが成功する度に、両者を交互に切換えて使うことで
ある。記憶チャネルはタグを使用して各要求ソースを識
別しているので、一組のタグを命令プリフェッチ・バッ
ファの各部分と関連させることができるはずである。か
くて、ブランチが成功すると、命令プリフェッチ・バッ
ファは別の1組のタグに変わることになる。こうして、
命令プリフェッチ・バッファは、戻りタグを現に活動的
なタグ・セットと比較することにより、プリフェッチ要
求からの回答が命令プリフェッチ・バッファの活動的な
部分に入るべきかどうかを決定することができる。もし
このタグが活動的なタグ・セットのメンバーであれば、
そのプリフェッチは現実行ストリームに関連しており、
したがってバッファの活動的な部分に入れられることに
なろう。逆に、もしこのタグが活動的なタグ・セットの
メンバーでなければ、それはもはや必要でなく、バッフ
ァの不活動的な部分に入れることができる。この方法は
うまくいくが、所与の時間には命令プリフェッチ・バッ
ファの記憶域の半分しか利用していない。
ブランチ予測法を使って、ブランチ問題を克服する一
つの方法が、米国特許第4430706号に開示されている。
この方法では、パイプライン式データ処理装置に、命令
流と最近の条件付きブランチおよびその結果を監視する
ための補助機構が追加されている。ブランチ命令に2回
以上遭遇する場合、その以前の挙動を利用して、取るべ
き特定のブランチを予測する。次に処理装置は、かかる
予測したブランチ中の命令を暫定的に実行する。しか
し、予測したブランチが事後的に間違っていることが判
れば、かかる処理は停止し、処理装置は正しいブランチ
を取るように試みる。この方法に伴う2つの問題は、余
分のハードウエアが必要なこと、そして誤まったブラン
チを予測して処理を行うと、処理時間が浪費されること
である。
ブランチ問題に対する他の方法が、米国特許第415512
0号および第4179737号に開示されている。ここではブラ
ンチの可能性が存在しないと仮定されている。この方法
によれば、たとえマイクロ命令の順序づけ中に複数のブ
ランチの可能性が存在するとしても、マイクロ命令の順
序づけは無条件であると仮定されている。こうして、ブ
ランチが発生しない限り、マイクロ命令の順序づけは速
やかに進行することができる。しかし、実際にブランチ
が発生すると、それを検出して、訂正サイクルを開始し
なければならない。この方法に伴う問題は、ブランチ操
作の数が増すにつれて、順序づけを変更し、誤まった順
序づけを訂正しなければならないことである。またこの
方法では、ブランチの判断が必要な各サイクル中に、マ
イクロ命令の実行と同時に該マイクロ命令の順序づけが
正しいかどうか監視するための手段が必要である。
ブランチに起因するパフォーマンスの低下を減少させ
るための他の方法は、一組のブランチ・実行(branch-w
ith-execute)命令を導入することである。これは遅延
ブランチ命令とも呼ばれている。このブランチ・実行命
令は、ブランチ命令の次の順次命令が、ブランチ目標命
令の実行前に実行されるようなものであると定義され
る。次の順序命令は、従属(subject)命令と呼ばれ
る。従属命令は、通常はブランチ・実行命令の完了前に
既に取り出されており、したがって、処理装置は(ブラ
ンチ目標命令のフェッチの完了を待っている間、遊休状
態に留まることはなく)それを実行する。
ブランチ・実行命令を利用する方法は、単一の命令プ
リフェッチ・バッファを備えている処理装置では、比較
的実現しやすい。処理装置は、ブランチ・実行命令の実
行中に、フェッチされ解読される従属命令を実行する。
通常のブランチでは、処理装置は従属命令を無視する。
しかし、命令プリフェッチ・バッファのサイズが増大す
るにつれて、ブランチ・実行命令を利用する方法はます
ますその実現が難しくなる。
したがって、本考案の目的は、パイプライン式処理装
置において、改良された実行の順序づけを提供すること
である。
本考案の他の目的は、命令プリフェッチ・バッファを
一層効率的に利用することである。
本考案の他の目的は、パイプライン式処理装置の命令
プリフェッチ・バッファにおいてブランチ命令およびブ
ランチ・実行命令の改良された順序づけを提供すること
である。
E.問題点を解決するための手段 前記および他の目的に従って、命令プリフェッチ・バ
ッファがあたかもその物理位置の2倍の論理位置を含む
ように見せかけることができる技法が開示される。この
技法は、命令プリフェッチ・バッファ(IPB)のパフォ
ーマンスを低下させずに、IPB中で必要な記憶域の量を
半分に減らす。この方法は、ブランチ操作を扱うのに特
に有用である。ブランチが発生すると、IPBはブランチ
目標アドレスから始めて命令のフェッチを開始する。し
かし、IPBはブランチについて事前に何も知らないの
で、ブランチが発生するとき、以前にプリフェッチされ
た命令からのいくつかの要求が未処理のままになること
がある。本明細書で開示する技法では、IPBは旧プリフ
ェッチ、すなわちブランチの前に行われたプリフェッチ
と、ブランチの結果必要となる新しいプリフェッチを区
別することができる。
IPBは複数のレジスタを含んでおり、該レジスタは複
数の命令をその実行前に保持するために使われる。これ
らのレジスタの各々には、そのレジスタを一義的に識別
する番号(レジスタ識別子)が関連している。さらに、
各レジスタに関連する制御ビットは、その特定のレジス
タについて、未処理の取消し済みフェッチ(Cancelled
Fetch Outstanding: CFO)があるかどうかを示す。未処
理の取消し済みフェッチが生ずるのは、ブランチの後で
あって、しかも以前のフェッチがまだ記憶装置から記憶
チャネルを経てIPBに戻っていない場合である。これら
の以前のプリフェッチは、ブランチの発生後はもはや必
要でないことを想起されたい。レジスタ識別子とCFO制
御ビットに加えて、処理装置中に他の制御ビットが設け
られる。この制御ビットは、ブランチ目標ビット(BT
B)と呼ばれ、ブランチが発生する度に反転(補数化)
される。
プリフェッチがIPBに戻る場合、この戻りプリフェッ
チと関連するBTB値はIPB中の現BTB値と比較される。も
し両者が等しければ、これはブランチが発生しなかった
こと、そして記憶装置に送られたプリフェッチ要求が依
然として必要なことを示す。この状況では、戻りプリフ
ェッチは、そのレジスタ識別子によって指定されたIPB
中の特定のレジスタに書き込まれる。このようにして戻
された命令は、その実行が必要なとき使用される。しか
し、もし戻りプリフェッチと関連するBTB値がIPB中の現
BTB値と一致しなければ、これは、ブランチが発生した
こと、従ってその戻りプリフェッチがもはや必要でない
ことを示す。その結果、戻りプリフェッチはIPB中のレ
ジスタに書き込まれない。
ブランチが発生する場合、IPBの各レジスタと関連す
るCFOビットが検査される。もしかかるビットのうちの
どれかがセットされていれば、当該ブランチはすべての
CFOビットがリセットされるまで待たねばならない。先
に指摘したように、BTBは、ブランチが発生するとき反
転される。最後に、プリフェッチが記憶装置に送られた
が、まだ戻っていない位置について、IPB中のCFOビット
がセットされる。
本明細書で開示する実施例は、ブランチ・実行命令を
使用するパイプライン式処理装置の操作にも適用でき
る。ブランチ命令の次の順次命令である従属命令は、ブ
ランチ目標命令が実行される前に実行される。この従属
命令は、通常はブランチ・実行命令の完了時に既に取り
出されており、したがって、処理装置は(ブランチ目標
フェッチが完了するのを待つ間、遊休状態に移行するこ
となく)この従属命令を実行する。
ブランチ・実行命令が実行される場合、IPBは、どのI
PB位置がブランチ目標フェッチの宛先として使用される
かを判断する。IPBはその特定の位置を指定し、従属命
令のフェッチが開始されたかどうかを決定する。もしか
かるフェッチが開始されていなければ、従属命令のフェ
ッチを開始するために使用すべき命令アドレス・レジス
タを修正しなければならないので、ブランチ・実行命令
をホールド・オフしなければならない。このとき、IPB
は従属命令と関連しないIPB中のすべての位置を解放
し、また従属命令に対するIPBポインタおよび従属命令
自体を保持する。従属命令の実行が開始した後、IPBは
従属命令と関連するIPB位置を解放して、それらの位置
がプリフェッチに使用できるようにする。最後に、IPB
は必要な目標命令を指示するようにそのポインタを更新
する。
F.実施例 第1図には、命令プリフェッチ・バッファ11を中心と
するパイプライン式処理装置の構成が示されている。命
令情報は、記憶チャネル12および記憶制御装置13を経て
命令プリフェッチ・バッファ(以下「IPB」と略す)11
と記憶装置14の間で通信される。IPB11は、4つのレジ
スタIPB0(15)、IPB1(16)、IPB2(17)およびIPB3
(18)を含んでいる。レジスタ15〜18の各々には、当該
レジスタが未処理の取消し済みフェッチ(Cancelled Fe
tch Outstanding:CFO)を有するかどうかを示す論理手
段CFOが関連している。またIPB11は、命令ブランチが発
生したかどうかを示す制御ビットを保持するブランチ・
タグ・レジスタ(BTR)19を備えている。さらに、IPB11
との間の命令のフェッチを制御する制御論理21が設けら
れている。
レジスタ15〜18の各々には、かかるレジスタを一義的
に識別する番号0〜3が付与されている。さらに、レジ
スタ15〜18の各々には1つの制御ビットが関連してお
り、該制御ビットはそのレジスタに対する未処理の取消
し済みフェッチ(CFO)があるかどうかを示す。また、B
TR19内に置かれたブランチ目標ビット(BTB)と呼ばれ
る他の制御ビットは、命令ストリーム中でブランチが発
生する度に反転(補数化)される。
操作において、次の命令をフェッチする場合、IPB11
は、レジスタ15〜18のうちのどれをそのフェッチに使用
すべきかを決定する。次に、命令要求ソースを示すよう
に、そのプリフェッチに対するタグが生成される。制御
論理21は、現BTB値をかかる要求について選択されたレ
ジスタ番号に付加することにより、その命令フェッチに
対するこのタグを生成する。かくて、次の命令を得るた
め、このプリフェッチ要求が記憶チャネル12を経て記憶
装置14に送られる。
プリフェッチ要求は記憶装置14で処理された後、チャ
ネル12を経てIPB11に戻される。このようにして戻され
たプリフェッチ要求は、前記次の命令とともにその識別
タグを含む。次に、戻されたプリフェッチ命令がまだ必
要かどうかという決定が行われる。これは、戻り命令中
のBTB値をBTR19の中の現BTB値と比較することによって
行われる。もし2つの値が等しければ、これはプリフェ
ッチ要求が記憶装置14に送られて以降、ブランチが発生
していないことを示す。従って、そのプリフェッチ命令
は依然として必要である。この時点で、戻されたプリフ
ェッチ命令が戻りタグ識別子によって指定されるレジス
タに書き込まれ、そしてこの命令が実行に必要なとき使
用される。
もし戻りプリフェッチ命令中のBTB値と、BTR19中の現
BTB値が等しくなければ、これは命令ストリーム中でブ
ランチが発生したことを示す。従って、そのプリフェッ
チ命令はもはや必要でなく、そのためレジスタ15〜18の
どれにも書き込まれない。次に、この戻りプリフェッチ
命令と関連するCFOビットがリセットされる。当該命令
ストリーム中でブランチが発生する場合、レジスタ15〜
18の各々に関連するCFOビットが検査される。もしこれ
らのCFOビットの何れかがセットされていれば、これら
のCFOビットがすべてリセットされるまで、当該命令ス
トリーム中のブランチの実行を待たねばならない。ま
た、この時点で、BTR19中のBTBが反転される。最後に、
制御論理21がレジスタ15〜18の各々を検査して、記憶装
置14に送られたがまだ戻されていないプリフェッチがあ
るかどうかを決定する。もしかかるプリフェッチが存在
すれば、そのレジスタと関連するCFOビットがセットさ
れ、かくて未処理の取消し済みフェッチがあることを示
す。
第2図の流れ図は、命令ストリーム中でブランチが発
生するときのIPB11の操作を詳しく示したものである。
ボックス22に示すように、未処理の取消し済みフェッチ
(CFO)があるかどうかという決定が行われる。もしそ
れがあれば、ボックス23は、戻りプリフェッチ命令を識
別する取消し済みタグが記憶装置14からIPB11に送られ
るまで、それ以上の操作が行われないことを示す。もし
未処理の現フェッチがなければ、制御論理21はボックス
24で、プリフェッチが割り振られたすべてのレジスタ15
〜18に対してCFOビットをセットする。またこの時点
で、BTR19中のBTB値がボックス25に示すように反転さ
れ、そしてすべてのタグがボックス26に示すように利用
可能状態にセットされて、命令を記憶装置14からフェッ
チできるようにする。最後にボックス27では、ブランチ
目標命令を記憶装置14からフェッチするため、識別タグ
が選択される。このプリフェッチ・プロセスは、すべて
の目標フェッチが完了するまで継続する。
第3図の流れ図は、実行ユニット37が次の命令を要求
するときのIPB11の操作を示したものである。ボックス3
1に示すように、次の命令のアドレスがIPB11内で計算さ
れる。次にボックス32では、IPB11中の次の命令の位置
が解放されているかどうかという判断が行われる。もし
その判断が肯定的であれば、解放されたIPBタグは利用
可能状態にセットされる。しかし、ものこの判断が否定
的であれば、ブロック34では次の命令のタグが有効状態
にあるかどうかという判断が行われる。もし次の命令の
タグが有効状態になければ、IPB11は選択されたタグが
記憶装置14からチャネル12を経て戻るのを待たねばなら
ない。しかし、もし次の命令のタグが有効状態にあれ
ば、次の命令は実行ユニット37に送られてそこで実行さ
れる。
あるプリフェッチに対する次の識別タグを選択するた
めのプロセスが、第4図の流れ図に詳しく示してある。
次のプリフェッチ・タグが選択された後、そのタグが利
用可能かどうかという決定が行われる。もしそのタグが
利用可能でなければ、ブロック42と43に示すように、IP
B11はそのタグが利用可能になるのを待たねばならな
い。しかし、もしそのタグが利用可能であれば、これは
ブロック44に示すように、次のプリフェッチに割り振ら
れる。最後に、次のプリフェッチおよび識別タグが記憶
装置14に送られ、次の命令が得られる。
第5図に示すように、記憶装置14から或る命令がそれ
と関連する識別タグと一緒に戻される場合、この命令と
一緒に戻るBTBがIPB11中の現BTB値と等しいかどうかと
いう決定が行われる。もし2つの値が等しくなければ、
当該命令ストリーム中でブランチが発生したこと、した
がってプリフェッチされた命令がもはや必要でないこと
を示す。この場合、各戻りタグに対するCFOビットがリ
セットされる。しかし、もし戻りBTBの値がIPB11中の現
BTB値と等しければ、これは当該命令ストリーム中でブ
ランチが発生していないことを示す。この場合、ブロッ
ク53に示すように、例外状態に対する応答が存在するか
どうかという決定が行われる。もしこの答えが肯定的で
あれば、タグ識別子が例外状態にセットされる。さもな
ければ、タグは有効状態にセットされて、命令はその実
行を待つ。
ブランチによるIPB11のパフォーマンス低下を減らす
ための一つの方法は、一組のブランチ・実行命令を導入
することである。これは遅延ブランチ命令とも呼ばれ
る。このブランチ・実行命令は、従属命令と呼ばれるブ
ランチ命令に続く次の順次命令が、ブランチ目標命令の
実行前に実行されるようなものと定義されている。従属
命令は、普通はブランチ・実行命令の完了時に既にフェ
ッチされており、したがって処理装置10はそれを実行す
る。ブランチ・実行命令のシーケンスを第6図に示す。
サイクル61では、ブランチ・実行命令の直前の命令(BR
X-1)がフェッチされて解読されているのに対し、サイ
クル62ではこの命令が実行される。サイクル62では、こ
れと同時にブランチ・実行命令(BRX)がフェッチされ
て解読される。サイクル63では、従属命令(SUBJ)がフ
ェッチされて解読され、またブランチ・実行命令(BR
X)が実行される。同様にサイクル64では、目標命令(T
GT)がフェッチされて解読され、従属命令(SUBJ)が実
行される。この同時的なフェッチ・実行操作は、目標命
令(TGT)と目標命令の直後の命令(TGT+1)が解読さ
れ実行される、サイクル65および66でも継続する。第6
図では、命令フェッチ・解読時間は実行時間に等しいと
仮定されている。多くの場合、比較的遅いインタリーブ
式記憶装置を使用し、プリフェッチ命令をさらに以前に
利用する方がより経済的である。そのような操作を第7
図に示す。
第7図に示したプリフェッチ技法は、IPB11が少くと
も4つの命令を保持することを必要とする。というの
は、1サイクル毎に1つの命令の実行をサポートするの
に必要なプリフェッチ数が4であるためである。処理装
置10はプリフェッチ完了の直後に命令を実行できないこ
とがあるので、各プリフェッチを保持するために1つの
バッファ位置が必要である。本明細書で開示する実施例
では、IPB11は4つの32ビット・レジスタ15〜18を含ん
でおり、命令を8つまで保持することができる。
第8図は、ブランチ・実行命令(BRX)の長さ、従属
命令(SUBJ)の長さ、およびアドレス境界合せにもとづ
いて存在しうる、ブランチ・実行の8つの可能なケース
を示したものである。これらのケースの各々において、
1つのブランチ・実行命令と1つの従属命令がレジスタ
15〜18のうちの1個または数個に置かれる。レジスタ15
〜18は、循環待ち行列として編成されているので、これ
らの8つのケースはブランチ・実行命令(BRX)と共存
することができ、またレジスタ15〜18のうちのどれから
も始まることができることに注意すべきである。第8図
に示した各矢印は、ポインタを表わすもので、8つの2
進値0〜7のうちの1つを取ることができる。これらの
ポインタは、実行すべき次の命令の始めを示す。第8図
のポインタは、ブランチ・実行命令の第1サイクルに表
わすような位置、すなわちブランチ・実行命令の直後で
あって、しかも従属命令実行の直前の位置を表わすよう
にセットされている。
ブランチ・実行命令が実行される場合、IPB11はブラ
ンチ目標フェッチの宛先となるべきIPB11内の位置を決
定する。IPB11はまたその位置を割り振り、そして従属
命令のフェッチが開始されたか否かを決定する。もしか
かるフェッチが開始されていなければ、ブランチ・実行
命令はホールド・オフされる。最後に、IPB11は従属命
令と関連しないその中のすべての位置を解放し、従属命
令に対するポインタを保持する。従属命令が実行を開始
した後、IPB11は従属命令と関連する位置を解放して、
それらをプリフェッチに使用できるようにし、またIPB
ポインタを目標命令を指すように更新する。
ブランチ・実行命令の実行に関するIPB11の操作を、
第9図を参照しながら説明する。ブランチ・実行命令
は、通常のブランチ命令が遭遇した任意のホールド・オ
フ状態に遭遇することがある。かくて、ブランチ・実行
命令はホールド・オフされることがある。というのは、
IPB11中の任意の位置についてCFOビットがセットされて
いて、ブランチのために取り消されたプリフェッチがま
だ記憶装置14から受け取られていないことを示すことが
あるからである。さらに、ブランチ・実行命令が実行を
開始したときに従属命令の全部または一部に対するプリ
フェッチがまだ開始されていないとき、ブランチ・実行
命令のホールド・オフが発生することがある。この条件
を検出するため、IPB11はIPBポインタおよび1の値だけ
増分されたIPBポインタと関連するIPB11中の位置の状態
を検査する。もしこれらのどの位置も解放されている。
すなわちプリフェッチに利用可能であれば、そのブラン
チ・実行はホールド・オフされる。
ブランチ・実行がホールド・オフされていないと仮定
すると、IPBポインタの値は3だけ増分される。これは
論理ブロック96と98を使用して行われる。この値と関連
するIPB11の位置は、かかる値が3だけ増分されるた
め、従属命令のどの部分をも保持していないことが保証
される。次にこの計算された値の下位ビットはブランチ
目標アドレスの2番目の下位ビットで置き換えられる。
この結果得られる値は、目標命令を解読するために使用
されるIPBポインタである。もし、ブランチ・実行命令
が実行されるとき、記憶装置14から完全な従属命令がま
だ受け取られていなければ、その目標命令に対する新し
いIPBポインタの値がBTR19に記憶される。この時点で、
IPBポインタを3だけ増分することによって示されるIPB
位置が、ブランチ目標フェッチのためにIPB11中で割り
振られる。これはブロック101に示されている。ブロッ
ク102に示すように、以前に割り振られた位置、現IPBポ
インタおよび現IPBポインタ+1と関連する位置を除
く、IPB11中のすべての位置が解放される。以前に割り
振られた位置は、ブランチ目標のフェッチに必要なた
め、解放できない、現IPBポインタおよび現IPBポインタ
+1と関連する位置は、従属命令を保持することがあ
り、したがって解放できない。次に、以前に割り振ら
れ、および以前に解放されたIPB11中の位置に対するCFO
ビットがセットされる。この指示は、既に割り振り済み
の各位置について、それが割り振られ、または解放され
るときにセットされ、これによりその位置に対する未処
理のプリフェッチを無効なものとしてマークする。この
場合、未処理の従属命令プリフェッチがまだ有効なた
め、従属命令の位置は影響を受けないことに注意された
い。
ブロック95中の論理は、従属命令を解読する機能を遂
行する。この解読操作は、従属命令のすべての部分がレ
ジスタ15〜18から正しく受け取られたとき完了する。こ
のとき、IPBポインタ96にはBTR19の内容がロードされ
る。この後者のステップにより、IPB11は目標命令を記
憶装置14から受け取ったときそれを解読するように準備
される。最後に、2だけ減分されたBTR19の値と関連す
るIPB11の位置が、ブロック102の論理によって解放され
る。この手順により、ブランチまたは従属命令の解読の
ためにまだ解放されていなかった位置が解放される。上
記の手順に従うと、ブランチ以前の命令のフェッチをす
べて取り消すことなしに、ブランチ・実行が実現され
る。これらの命令のうち1つを除くすべてを取り消し、
この1つの命令を実行することにより、処理装置10は、
ブランチの有無にかかわらず、ブランチの結果必要とな
る記憶装置14との通信中にビジイ状態に維持される。こ
の1つの命令を実行することにより、IPB11に関するパ
イプライン式処理装置10の操作効率を大幅に増大するこ
とができる。
G.考案の効果 以上詳述したように、本考案によれば、命令プリフェ
ッチ・バッファのパフォーマンスを低下させずに、命令
プリフェッチ・バッファに必要な記憶域を半分に減らす
ことができるので、実用的には極めて有利である。
【図面の簡単な説明】
第1図は、本考案に従ったパイプライン式処理装置のブ
ロック図、第2図は、本考案に従ったブランチ操作を示
す流れ図、第3図は、本考案に従った命令実行を示す流
れ図、第4図は、本考案のプリフェッチ操作を示す流れ
図、第5図は、本考案の戻りタグ操作を示す流れ図、第
6図は、通常のブランチ操作の命令フェッチ、解読およ
び実行を示すタイミング図、第7図は、本考案に従った
命令実行のより詳しいタイミング図、第8図は、ブラン
チ・実行の開始時における命令プリフェッチ・バッファ
の可能な8つの状態を示す図、第9図は、本考案に従っ
た命令プリフェッチ・バッファの操作を示すブロック図
である。 10……パイプライン式処理装置、11……命令プリフェッ
チ・バッファ(IPB)、12……記憶チャネル、13……記
憶制御装置、14……記憶装置、15〜18……命令プリフェ
ッチ・レジスタ、19……ブランチ・タグ・レジスタ(BT
R)、21……制御論理、37……実行ユニット。
フロントページの続き (56)参考文献 特開 昭58−1247(JP,A) 特開 昭55−82357(JP,A) 特開 昭52−120735(JP,A) 特開 昭56−123041(JP,A) 特開 昭57−193843(JP,A) 特開 昭57−150040(JP,A) 特開 昭57−153342(JP,A)

Claims (1)

    (57)【実用新案登録請求の範囲】
  1. 【請求項1】複数の命令プリフェッチ・レジスタからな
    る命令プリフェッチ・バッファを備え、少なくとも1つ
    のブランチ命令を含む複数の命令を、記憶装置から前記
    命令プリフェッチ・バッファへプリフェッチするように
    構成されているデータ処理装置において、 ブランチ命令を実行する度にその現在の値が変更される
    ような制御タグを発生する制御タグ発生手段19と、 前記複数の命令プリフェッチ・レジスタのどれを各命令
    のプリフェッチ要求のために使用すべきかを選択し且つ
    該選択された命令プリフェッチ・レジスタの識別タグを
    該命令ごとに発生する識別タグ発生手段21と、 各命令のプリフェッチ要求に前記制御タグ及び前記識別
    タグを付加してこれを前記記憶装置へ送信する要求送信
    手段12と、 ブランチ命令が実行される際、該各命令のプリフェッチ
    要求のために既に選択されている前記命令プリフェッチ
    ・レジスタに未処理取消済みフェッチ・ビット(CFOビ
    ット)をセットする論理手段21と、 前記記憶装置からプリフェッチされた各命令に付随する
    前記制御タグの値と前記制御タグ発生手段19における前
    記制御タグの現在の値を比較し、これらの値が等しい場
    合は、該各命令をこれに付随する前記識別タグによって
    識別された前記命令プリフェッチ・レジスタに格納し、 前記命令に付随する制御タグと前記制御タグの現在の値
    が等しくない場合は該命令プリフェッチ・レジスタに対
    する命令の格納を行わず、且つ該命令プリフェッチ・レ
    ジスタにセットされている前記CFOビットをリセットす
    る制御手段21と、 を備えてなるデータ処理装置。
JP1988056781U 1984-10-31 1988-04-28 デ―タ処理装置 Expired - Lifetime JP2504830Y2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US666790 1984-10-31
US06/666,790 US4775927A (en) 1984-10-31 1984-10-31 Processor including fetch operation for branch instruction with control tag

Publications (2)

Publication Number Publication Date
JPS63199341U JPS63199341U (ja) 1988-12-22
JP2504830Y2 true JP2504830Y2 (ja) 1996-07-24

Family

ID=24675490

Family Applications (2)

Application Number Title Priority Date Filing Date
JP60179565A Pending JPS61109147A (ja) 1984-10-31 1985-08-16 命令フェッチ及び実行制御方法
JP1988056781U Expired - Lifetime JP2504830Y2 (ja) 1984-10-31 1988-04-28 デ―タ処理装置

Family Applications Before (1)

Application Number Title Priority Date Filing Date
JP60179565A Pending JPS61109147A (ja) 1984-10-31 1985-08-16 命令フェッチ及び実行制御方法

Country Status (5)

Country Link
US (1) US4775927A (ja)
EP (2) EP0180725B1 (ja)
JP (2) JPS61109147A (ja)
CA (1) CA1227877A (ja)
DE (2) DE3588182T2 (ja)

Families Citing this family (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0239081B1 (en) * 1986-03-26 1995-09-06 Hitachi, Ltd. Pipelined data processor capable of decoding and executing plural instructions in parallel
JPH0731615B2 (ja) * 1986-04-18 1995-04-10 日本電気株式会社 情報処理装置
JPS6393038A (ja) * 1986-10-07 1988-04-23 Mitsubishi Electric Corp 計算機
US5117489A (en) * 1987-04-22 1992-05-26 Mitsubishi Denki Kabushiki Kaisha Data-driven processor having an internal tag-generating system for generating a distinct tagged information and assembling with un-tagged information of an input/output data packet
US4942520A (en) * 1987-07-31 1990-07-17 Prime Computer, Inc. Method and apparatus for indexing, accessing and updating a memory
JPS6488844A (en) * 1987-09-30 1989-04-03 Takeshi Sakamura Data processor
JPH0769812B2 (ja) * 1987-12-29 1995-07-31 富士通株式会社 データ処理装置
US5155818A (en) * 1988-09-28 1992-10-13 Data General Corporation Unconditional wide branch instruction acceleration
US5226126A (en) * 1989-02-24 1993-07-06 Nexgen Microsystems Processor having plurality of functional units for orderly retiring outstanding operations based upon its associated tags
US5768575A (en) * 1989-02-24 1998-06-16 Advanced Micro Devices, Inc. Semi-Autonomous RISC pipelines for overlapped execution of RISC-like instructions within the multiple superscalar execution units of a processor having distributed pipeline control for sepculative and out-of-order execution of complex instructions
US5781753A (en) 1989-02-24 1998-07-14 Advanced Micro Devices, Inc. Semi-autonomous RISC pipelines for overlapped execution of RISC-like instructions within the multiple superscalar execution units of a processor having distributed pipeline control for speculative and out-of-order execution of complex instructions
JPH03139726A (ja) * 1989-10-26 1991-06-13 Hitachi Ltd 命令読出し制御方式
US5028186A (en) * 1990-01-29 1991-07-02 Mechanical Plastics Corp. Hollow wall anchor with enhanced holding strength
US5255371A (en) * 1990-04-02 1993-10-19 Unisys Corporation Apparatus for interfacing a real-time communication link to an asynchronous digital computer system by utilizing grouped data transfer commands
JP2544027B2 (ja) * 1990-05-24 1996-10-16 株式会社東芝 低消費電力型プログラマブルロジックアレイおよびそれを用いた情報処理装置
CA2045735A1 (en) * 1990-06-29 1991-12-30 Richard Lee Sites Computer performance by eliminating branches
US5539911A (en) * 1991-07-08 1996-07-23 Seiko Epson Corporation High-performance, superscalar-based computer system with out-of-order instruction execution
US5493687A (en) 1991-07-08 1996-02-20 Seiko Epson Corporation RISC microprocessor architecture implementing multiple typed register sets
JP2761688B2 (ja) * 1992-02-07 1998-06-04 三菱電機株式会社 データ処理装置
EP0636256B1 (en) 1992-03-31 1997-06-04 Seiko Epson Corporation Superscalar risc processor instruction scheduling
DE69308548T2 (de) 1992-05-01 1997-06-12 Seiko Epson Corp Vorrichtung und verfahren zum befehlsabschluss in einem superskalaren prozessor.
US5628021A (en) 1992-12-31 1997-05-06 Seiko Epson Corporation System and method for assigning tags to control instruction processing in a superscalar processor
DE69330889T2 (de) 1992-12-31 2002-03-28 Seiko Epson Corp System und Verfahren zur Änderung der Namen von Registern
JP2596712B2 (ja) * 1993-07-01 1997-04-02 インターナショナル・ビジネス・マシーンズ・コーポレイション 近接した分岐命令を含む命令の実行を管理するシステム及び方法
US6065108A (en) * 1996-01-24 2000-05-16 Sun Microsystems Inc Non-quick instruction accelerator including instruction identifier and data set storage and method of implementing same
US5796998A (en) * 1996-11-21 1998-08-18 International Business Machines Corporation Apparatus and method for performing branch target address calculation and branch prediciton in parallel in an information handling system
US5909566A (en) * 1996-12-31 1999-06-01 Texas Instruments Incorporated Microprocessor circuits, systems, and methods for speculatively executing an instruction using its most recently used data while concurrently prefetching data for the instruction
US6157998A (en) 1998-04-03 2000-12-05 Motorola Inc. Method for performing branch prediction and resolution of two or more branch instructions within two or more branch prediction buffers
EP1050811A1 (en) 1999-05-03 2000-11-08 STMicroelectronics SA Branching in a computer system

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5021821B1 (ja) * 1968-10-31 1975-07-25
JPS52120735A (en) * 1976-04-05 1977-10-11 Agency Of Ind Science & Technol Microporogram control unit
US4155120A (en) * 1977-12-01 1979-05-15 Burroughs Corporation Apparatus and method for controlling microinstruction sequencing by selectively inhibiting microinstruction execution
AU529675B2 (en) * 1977-12-07 1983-06-16 Honeywell Information Systems Incorp. Cache memory unit
US4179737A (en) * 1977-12-23 1979-12-18 Burroughs Corporation Means and methods for providing greater speed and flexibility of microinstruction sequencing
US4360868A (en) * 1978-12-06 1982-11-23 Data General Corporation Instruction prefetch means having first and second register for storing and providing a current PC while generating a next PC
JPS5582357A (en) * 1978-12-15 1980-06-21 Nec Corp Information processing unit
JPS56129950A (en) * 1980-03-07 1981-10-12 Hitachi Ltd Information processor
US4348724A (en) * 1980-04-15 1982-09-07 Honeywell Information Systems Inc. Address pairing apparatus for a control store of a data processing system
JPS56149646A (en) * 1980-04-21 1981-11-19 Toshiba Corp Operation controller
US4430706A (en) * 1980-10-27 1984-02-07 Burroughs Corporation Branch prediction apparatus and method for a data processing system
JPS57193843A (en) * 1981-05-22 1982-11-29 Mitsubishi Electric Corp Pipeline computer
JPS581247A (ja) * 1981-06-26 1983-01-06 Mitsubishi Electric Corp 命令先取り制御方法
US4435756A (en) * 1981-12-03 1984-03-06 Burroughs Corporation Branch predicting computer

Also Published As

Publication number Publication date
EP0448499A3 (en) 1992-05-06
EP0448499B1 (en) 1998-04-08
DE3586235T2 (de) 1993-02-11
JPS61109147A (ja) 1986-05-27
JPS63199341U (ja) 1988-12-22
EP0180725A3 (en) 1988-10-05
DE3586235D1 (de) 1992-07-23
DE3588182T2 (de) 1998-10-29
EP0180725B1 (en) 1992-06-17
US4775927A (en) 1988-10-04
CA1227877A (en) 1987-10-06
EP0180725A2 (en) 1986-05-14
DE3588182D1 (de) 1998-05-14
EP0448499A2 (en) 1991-09-25

Similar Documents

Publication Publication Date Title
JP2504830Y2 (ja) デ―タ処理装置
EP0380859B1 (en) Method of preprocessing multiple instructions
US5345567A (en) System and method for modifying program status word system mask, system access key, and address space code with overlap enabled
US5276882A (en) Subroutine return through branch history table
US9081563B2 (en) Method and apparatus for enhancing scheduling in an advanced microprocessor
US5922068A (en) Information processing system and information processing method for executing instructions in parallel
US5377336A (en) Improved method to prefetch load instruction data
US4858104A (en) Preceding instruction address based branch prediction in a pipelined processor
US5613083A (en) Translation lookaside buffer that is non-blocking in response to a miss for use within a microprocessor capable of processing speculative instructions
CA1268555A (en) Branch stream coprocessor
US6185676B1 (en) Method and apparatus for performing early branch prediction in a microprocessor
US5694617A (en) System for prioritizing quiesce requests and recovering from a quiescent state in a multiprocessing system with a milli-mode operation
JPH03147022A (ja) 分岐命令処理装置および処理方法
US5802359A (en) Mapping processor state into a millicode addressable processor state register array
EP0655679B1 (en) Method and apparatus for controlling instruction in pipeline processor
US5146570A (en) System executing branch-with-execute instruction resulting in next successive instruction being execute while specified target instruction is prefetched for following execution
US6446143B1 (en) Methods and apparatus for minimizing the impact of excessive instruction retrieval
US20060149949A1 (en) Data processing device with branch prediction mechanism
JPH08320788A (ja) パイプライン方式プロセッサ
JPH0773104A (ja) キャッシュ・システム
JPH06161779A (ja) データ処理装置の割込み制御方式
JP2002207595A (ja) リオーダバッファの管理方法及びプロセッサ
US5625808A (en) Read only store as part of cache store for storing frequently used millicode instructions
JPH06266556A (ja) データ処理装置
JPH07306785A (ja) 分岐命令実行機能を持つプロセッサおよび分岐命令制御方法