JPH02227731A - データ処理システム - Google Patents

データ処理システム

Info

Publication number
JPH02227731A
JPH02227731A JP2003651A JP365190A JPH02227731A JP H02227731 A JPH02227731 A JP H02227731A JP 2003651 A JP2003651 A JP 2003651A JP 365190 A JP365190 A JP 365190A JP H02227731 A JPH02227731 A JP H02227731A
Authority
JP
Japan
Prior art keywords
instruction
branch
instructions
processor
taken
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
Application number
JP2003651A
Other languages
English (en)
Other versions
JP2761956B2 (ja
Inventor
Edmond J Boufarah
エドモンド・ジャミル・ボウファーラー
Gregory F Grohoski
グレゴリー・フレドリック・グロホスキー
Chien-Chyun Lee
チィエン‐チュウン・リー
Charles R Moore
チャールズ・ロバーツ・モオアー
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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of JPH02227731A publication Critical patent/JPH02227731A/ja
Application granted granted Critical
Publication of JP2761956B2 publication Critical patent/JP2761956B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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 or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3804Instruction prefetching for branches, e.g. hedging, branch folding
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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 or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • G06F9/3846Speculative instruction execution using static prediction, e.g. branch taken strategy

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)

Abstract

(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。

Description

【発明の詳細な説明】 A、産業上の利用分野 本発明は、データ処理システムに関し、さらに詳しくは
、ブランチ命令を実行するデータ処理システムに関する
B、従来の技術 データ処理システムにおける命令の迅速な実行に対する
障害は、ブランチ命令の実行である。従来のプロセッサ
は、命令を遂次的に、すなわち1回に1命令を実行する
。したがって、命令は通常モードで順次に実行される。
しかし、ブランチ命令に出会った時、命令順序は変わる
かもしれないすなわち、ブランチ命令に続く命令は、実
行される新しい命令でないかもしれない。従来のデータ
処理システムでは、命令の実行は、ブランチ命令実行が
完了できるまで遅れる。これは、ブランチ命令実行の結
果を、どの命令が次に実行されるべきかを判定するため
に知らなければならないからである。条件付ブランチ命
令を実行するデータ処理システムでは、ブランチが条件
付ブランチ命令実行の結果として取ってよいかどうかが
わかる前に、事前に存在する条件を判定しなければなら
ない。結果として、ブランチのための特定の条件を判定
するまで、条件付ブランチ命令の実行は遅延する。従来
のプロセッサでは、条件を分解してブランチを遂行する
要件は、より現代的な処理システムにおけるような大き
な問題ではなかった。命令が異なるサイクル時に取り出
され、タスク指名され、復号され、実行されるパイプラ
イン処理システムでは、データ処理システムが、ブラン
チ後の実行のために取り出すべき命令を知る前に、実行
位相を条件付ブランチのために完了しなければならない
ので、ブランチ命令の実行は遅れる結果となる。
データ処理システムにおける多重ブロモ・ソサの使用は
、実行のためには多重ブロモ・ソサと平行して命令を分
配することが有利であるから、条件付ブランチ実行の問
題をさらに増加させる。しかし、多重プロセッサ・シス
テムが、遂次的に命令の実行をエミュレートするもので
あれば、ブランチ命令発生後の命令の実行は、ブランチ
命令実行が完了するまで遅れるはずである。
多重処理システムのための従来技術の命令ディスパッチ
ング装置の例は、1986年6月発行のIBMテクニカ
ル・ディスクロージャ・プルテン、Vol、29、N0
01、pp、357=359に所載の「ブランチ処理命
令キヤ・ソシュ(Branch−Processing
 In5truction Cache) J ?と開
示されている。この開示は、命令を取り出す機構を図解
し、さらに、他の命令を取り出す間にブランチ命令を処
理する能力を含む。
本発明の目的は、より効果的な方法でブランチ命令を実
行するための機構を提供することである。
C9発明の要旨 本発明によって、1の命令シーケンスを記憶する回路、
前記命令シーケンスがブランチ命令を含むかどうかを判
定する回路、ブランチ命令があるかどうかの判定に応じ
て記憶回路にブランチ・ターゲット命令シーケンスを記
憶する回路を・含む、データ処理システムが供給される
。さらにこのデータ処理システムは、ブランチを取るべ
きかどうかを判定する前に、ブランチが取られていない
ことを条件に、ブランチ命令の後に実行されるべき命令
をプロセッサに順次タスク指名し、同時に、ブランチを
取ろうとしているかどうかを判定するための回路、及び
、もしブランチを取るべきではない場合には、ブランチ
命令の後の命令を順次実行するようプロセッサに指令し
、あるいは、もしブランチを取るべきであれば、実行の
ためにプロセッサにブランチ・ターゲット命令シーケン
スをタスり指名するための回路を含む。
好ましい実施例では、本発明は、メモリ、命令取出し/
ブランチ処理装置、及び固定小数点処理装置を有するデ
ータ処理システムを含む。命令取出し/ブランチ処理装
置において、同時に多重命令を取り出し、これらの命令
をバッファ内に記憶するための機構を設ける。この実施
例では、順次命令のため一つのバッファを設け、ターゲ
ット命令のために第2のバッファを設ける。順次命令は
、取り出されている命令と、またブランチ命令に会った
後に存在する命令の通常シーケンスを含む。ターゲット
命令は、ブランチがブランチ命令実行の結果として取ら
れる場合に分岐されるべき命令である。好ましい実施例
では、命令取出し/ブランチ処理装置は、固定小数点処
理装置への命令のタスク指名を調整する間に、ブランチ
命令を実行する。
本発明の教示によって、ある環境下で、命令実行のどん
なパイプライン・サイクルの遅延を生ずることもなく、
ブランチ命令をパイプライン様式で生成することができ
る。
D、実施例 本発明は、データ処理の分野に関し、短時間にブランチ
命令を実行するための能力を提供する。
本発明の目的は、固定小数点プロセッサのゼロサイクル
でブランチを実行することである。
第1図は、本発明のプロセッサ・システムを示すブロッ
ク図である。第1図で、メモリ10は、バス12によっ
て、命令取出し/ブランチ処理装置14、固定小数点処
理装置20.及びブロック22で表示する他の処理装置
に接続される。バス12の機能は、メモリ10からの命
令とデータの転送を提供することである。命令取出し/
ブランチ処理装置14は、回線16を介して命令を固定
小数点処理装置20に供給する。また、条件付コード情
報は、回線18を介して、固定小数点処理装置20によ
り命令取出し/ブランチ処理装置14に供給される。固
定小数点処理装置20から命令取出し装置14に供給さ
れる条件付コード情報あるいはバス18に応答して、命
令取出し装置14内のブランチ実行論理回路は、ブラン
チを取ろうとしない場合は、回線41を介して実行条件
付信号を生成するか、あるいは、ブランチを取ろうとす
る場合は、回線43を介してキャンセル条件付信号を生
成する。
第2a図〜第2j図は、命令シーケンスの例とこれらの
順序の実行のためのタイミング結果ダイヤグラムを表示
している。第2a図では、無条件ブランチ命令を含む命
令シーケンスが供給される。
特に、無条件ブランチ命令(BRU)は、命令T1(タ
ーゲット命令)に分岐する。本発明の動作をこの命令シ
ーケンスで図解するタイミング・ダイヤグラムを、第2
b図に示す。パイプライン動作の4つの位相を第2b図
に図示する。第1位相は命令取出し動作(IF)である
。第2位相は、命令タスク指名動作(Disp)である
。第2位相中に、命令取出し処理装置14は、ブランチ
命令を検出し、ブランチ命令実行を始める。第3位相は
、固定小数点プロセッサ復号動作(FXD)である。
第4位相は、命令の固定小数点プロセッサ実行(FXE
)である。サイクル1では、4つの命令−9= は、Xl、X2、BRU及びSを含むキャッシュ34(
第3図)から取り出される。Sは、無条件ブランチ命令
(BRU)後に発生する順次命令を指定することに留意
されたい。サイクル2では、命令取出し動作が、追加順
次命令(S2と83)を取り出す。サイクル2中、同時
に、タスク指名動作は固定小数点処理装置20に命令X
1とX2をタスク指名する。BRU命令をブランチ処理
装置14の内部でタスク指名し、実行する。サイクル2
では、ターゲット・アドレスを生成する。サイクル3で
は、ブランチ処理装置14内の無条件ブランチの実行の
結果として、4つのターゲット命令T1、T2、T3、
T4を取り出す。また、サイクル3で、命令X1を、固
定小数点処理装置20内で復号する。サイクル4では、
4つの追加ターゲット命令(T5、T6、T7、及びT
8)を取り出す。またサイクル4では、命令T1とT2
を固定小数点処理装置20にタスク指名する。
その間サイクル4では、固定小数点処理装置2゜が命令
X2を復号し、命令X1を実行する。サイクル5では、
ターゲット命令T3とT4が、固定小数点処理装置20
にタスク指名され、固定小数点処理装置20が命令T1
を復号し、命令X2を実行する。サイクル6では、命令
T5とT6がタスク指名され、その間、固定小数点処理
装置20がターゲット命令T2を復号し、命令T1を実
行する。最後にサイクルマでは、命令T3を復号し、そ
の間、命令T2が固定小数点処理装置20内で実行する
。ターゲット命令の取出しがタスク指名サイクル2中に
ブランチ命令の早期実行の結果として遂行されたので、
ブランチ動作は実行サイクルを要せず、実行の遅延を引
き起こさないことに留意されたい。
第2c図には命令シーケンスが含まれ、これは固定小数
点比較命令(C)のために準備を行ない、これに条件命
令に関するブランチ(BRC)が続く。ブランチが取ら
れない場合は、ブランチに続く順次命令を実行する(S
l、S2、及びS3)。
しかし、ブランチが取られる場合は、ターゲット命令を
実行する(T1、T2、及びT3)。次の例では、条件
付ブランチが取られていない。第2d図のタイミング・
ダイヤグラムは処理装置の動作を図示する。まずサイク
ル1で、条件(C)、条件付ブランチ命令(BRC) 
、及び2つの順次命令S1と82を含む4つの命令を取
り出す。サイクル2で、次の4つの順次命令(83〜5
f3)が取り出され、その間、比較命令Cと順次命令S
1を固定小数点処理装置20に渡す。S1゛は、命令S
1を条件付実行のための命令として渡すことを示す。つ
まり、Slの実行は、ブランチが取られていないイベン
トでの条件材である。条件付ブランチ命令(BRC)を
、それが実行されるブランチ処理装置14に渡す。しか
し、条件付ブランチの実行の完了は、比較命令が固定小
数点処理装置20で実行されるまで遅れる。サイクル3
で、ブランチ命令の初期実行のために、ターゲット命令
のうち4つが、取り出される(T1からT4)。
同時に、命令S2と83を、固定小数点処理装置20に
タスク指名する。これらの命令は、条件付ブランチが取
られない条件で実行される条件付命令としてタスク指名
されることに留意されたい。
サイクル3の間に、固定小数点処理装置では、固定小数
点プロセッサが比較命令を復号する。サイクル4で、次
の4つのターゲット命令が取り出される(T5〜T8)
。また、次の2つの順次命令S4と85は、固定小数点
処理装置20に条件付命令としてタスク指名される。固
定小数点処理装置20は、順次命令S1を復号し、その
間、比較命令を実行する。比較命令の実行の完了時に、
比較命令の結果を、ブランチが取られない(すなわち、
順次命令が実行されるべき)ブランチ処理装置14を示
すブランチ処理装置14に供給する。
実行条件は回線41を介して主張される。次にサイクル
5で、固定小数点処理装置20は順次命令S2を復号し
、その間、順次命令S1を実行する。
またサイクル5では、ターゲット命令の取出しを延期し
、ターゲット命令のタスク指名を延期する。
サイクル6では、順次命令の取出しは順次命令87〜S
iOの取出しで再開される。またサイクル6では、固定
小数点処理装置20は命令S3を復号し、順次命令S2
を実行する。最後にサイクル7で、固定小数点処理装置
は命令S4を復号し、順次命令順序が実行中であること
を示す命令S3を実行している。ブランチの実行は実行
サイクルを取らず、ブランチがたとえ取られていなくて
も遅れの原因にならないことに留意されたい。
第2e図は、ブランチが取られる条件付ブランチ命令を
図示する。第2e図に示すシーケンスは、固定小数点比
較命令01条件付ブランチ命令BRC1これに続く一組
の順次命令81〜S3、さらにこれに続くターゲット命
令T1〜T4のシーケンスを含む。この順序の実行を第
2f図に示す。
第2f図では、サイクル1で4つの命令を取り出す(C
1BRC1S 1、及び、S2)。サイクル2で、次の
4つの命令を取り出しく83〜S6)、そして、比較命
令と第1の順次命令(Sl)を固定小数点処理装置20
にタスク指名し、その間、条件付ブランチ命令BRCを
ブランチ処理装置14内で最初に実行する。サイクル3
で、4つのターゲット命令を取り出す(T1〜T4)。
順次命令S2と83を条件付で固定小数点処理装置20
にタスク指名する。その間、比較命令を固定小数点処理
装置20で復号する。サイクル4で、次の4つのターゲ
ット命令を取り出しく75〜T8)、その間、順次命令
S4と85を条件付で固定小数点処理装置20にタスク
指名する。順次命令S1を固定小数点処理装置で復号し
ている時、同時に比較命令を実行している。サイクル4
における比較命令実行完了の結果として、ブランチ処理
装置14は、ブランチを取ろうとしていることを通知さ
れる。したがって、サイクル5で、その実行がブランチ
が取られていないという条件にある順次命令S1は、キ
ャンセル条件付回線43の断定の結果として実行されな
い。また、たとえ順次命令S2が復号中であっても、そ
れは除去されることになる。サイクル6で、最初の2つ
のターゲット命令T1とT2を、固定小数点処理装置2
0にタスク指名する。サイクル7で、命令T1を復号し
、サイクルT8で実行する。この条件付ブランチの実行
は、3サイクルの遅延を引き起こすことに留意されたい
。これは、この構成における最大遅延が、3−iサイク
ル(iは比較命令上の比較とブランチの間に置かれた固
定小数点演算の回数)であるので、より悪い場合の条件
である。
第2c図に、比較命令を含み、これに2つの固定小数点
命令X1とX2が続く、他の命令シーケンスを示す。X
2に続いて、比較命令の条件のブランチがある。このブ
ランチに続いて、−組の順次命令S1と83、それから
、ターゲット命令T1〜T4が後に続く。これらの命令
シーケンスのタイミング実行を第2h図に示す。第2h
図では、サイクル1で、最初の4つの命令を取り出す(
C。
Xl、X2、BRC)。サイクル2では、次の連続した
4つの命令を取り出しく81〜s4)、その間、比較命
令と第1固定小数点命令X1を固定小数点処理装置20
にタスク指名する。またサイクル2で、取り出された命
令シーケンスをブランチ命令のために走査する。ブラン
チ命令に出会うと、走査論理回路は、ブランチのターゲ
ット命令が計算できるかどうかを判定する。所与の例で
は、ターゲット命令アドレスを計算し、サイクル3で最
初の4つのターゲット命令T1〜T4を取り出す。また
サイクル3で、命令x2を無条件にタスク指名し、順次
命令S1を条件付きで固定小数点処理装置20にタスク
指名する。条件付ブランチ命令BRCを処理装置14に
タスク指名する。固定小数点処理装置20は比較命令C
を復号する。
サイクル4では、次の4つのターゲット命令を取り出し
くT5〜T8)、その間、順次命令S2と83を固定小
数点処理装置にタスク指名する。固定小数点処理装置2
0は命令X1を復号し、比較Cを実行する。比較命令の
結果として、ブランチが取られる。サイクル5では、命
令X2を固定小数点処理装置20により復号し、その間
、命令X1を実行する。しかし、これらのサイクル中に
は、追加命令を取り出さず、命令をタスク指名しない。
サイクル6では、ターゲット命令の取出しを続けること
はできるが、この例を簡単にするためにターゲット命令
を8個たけ取り出した。サイクル6で、ターゲット命令
T1とT2を、命令X2の実行中に、固定小数点処理装
置20にタスク指名する。
サイクル7では、命令T3とT4をタスク指名し、その
間、命令T1を復号する。最後にサイクル8で、命令T
1を固定小数点処理装置20で実行する。条件命令上の
比較とブランチの間に2つの中間命令があったので、こ
の場合のブランチは、1つのサイクルの遅延を引き起こ
すだけであることに留意されたい。
第21図に、固定小数点比較命令と条件付ブランチ命令
の間に3つの中間命令を含む、他の例の命令シーケンス
を示す。この命令シーケンス実行のためのタイミング・
ダイヤグラムを、第2j図にボす。第2j図では、サイ
クル1中に、第21図におけるこの命令順序の最初の4
つの命令を示す。サイクル2では、次の4個の命令を取
り出し、この間、最初の2個の命令をタスク指名する。
取り出した最初の4個の命令がブランチ命令を含んサイ
クルったので、走査論理回路は、サイクル3までブラン
チがあることを検出しない、ということに留意されたい
。したがって、サイクル3で、追加順次命令を使用でき
れば、それらを取り出す。
またサイクル3では、命令X2とX3を固定小数点処理
装置20にタスク指名し、その間、条件付ブランチをブ
ランチ処理装置14にタスク指名し、その間、固定小数
点処理装置は比較命令を復号する。サイクル4では、タ
ーゲット命令T1〜T4を、今、サイクル3における条
件付ブランチ命令の走査の結果として、あらかじめ取り
出す。順次命令S1と82を固定小数点処理装置20に
条件付きでタスク指名し、その間、命令Xを復号して、
比較命令を実行する。固定小数点処理装置20で比較命
令の実行が完了すると、ブランチ処理装置は、ブランチ
を取るという信号を受ける。サイクル5では次の4個の
ターゲット命令を取り出しくT5〜T8)、その間、固
定小数点処理装置20では命令X2を復号し、命令X1
を実行する。
サイクル6では、最初の2個のターゲット命令T1とT
2を固定小数点処理装置20にタスク指名し、その間、
命令X3を復号し、命令X2を実行する。サイクル7で
は、次の2個のターゲット命令T3とT4をタスク指名
し、その間、命令T1を復号し、命令X3を実行する。
サイクル8では、最後に、命令T2を復号し、その間、
ターゲット命令の最初T1を実行している。比較命令と
ブランチの間の中間命令の数は3に等しいので、この条
件付ブランチの実行はゼロサイクル遅延に帰着すること
に留意されたい。
第3図は、命令キャッシュとブランチ処理装置14を示
すブロック図である。第3図で、命令キャッシュ登録簿
、配列34はバス12に接続され、メモリから命令を受
信する。命令キャッシュ34からの命令を、ターゲット
命令バッファ36あるいは順次命令バッファ38のどち
らが一方に供給する。ターゲット命令バッファ36は、
好ましい実施例では4命令の容量を有し、一方、順次命
令バッファ38は8命令の容量を有する。ターゲット命
令バッファ36内のターゲット命令は、ターゲット命令
がタスク指名のために選択された場合は、順次バッファ
38に渡る。インターロック、タスク指名、ブランチ実
行、及びバッファ制御装置40を順次命令バッファ38
に接続し、順次命令バッファ38の内容を走査して、ブ
ランチ命令を検出する。また、回線50上では、多重ネ
ットワーク52は、論理制御回路40で制御され、2個
の命令をバス16を介して固定小数点処理装置20にタ
スク指名する。
ブランチ命令が順次命令バッファ38に存在すると判定
すると、多重ネットワーク52を介して論理回路50は
、ブランチが分解されない場合は非分解ブランチ・レジ
スタ54にブランチ命令を供給し、そしてブランチ・ア
ドレス生成装置62に供給する。ブランチ・アドレス生
成装置は、ブランチのターゲット命令のアドレスが計算
可能かどうかを判定する。ある場合には、カウント・レ
ジスタ58、またはリンク・レジスタ60を、ターゲッ
ト命令のアドレスの計算に使用する。それからターゲッ
ト命令のアドレスを、バス61を介して、命令取出しア
ドレス・レジスタ30に供給する。命令取出しアドレス
・レジスタ30にターゲット命令のアドレスがロードさ
れると、取り出され2す る順次命令の先行アドレスは、実際にターゲット命令へ
のブランチが取られない場合は、命令取出しアドレス・
レジスタ・シャドウ32に転送されて、順次命令のアド
レスを記憶する。条件レジスタ56をバス18により固
定小数点処理装置20に接続し、条件付ブランチが取ら
れるかどうかを判定する条件比較命令実行の結果を判定
する。
論理制御回路50は、条件レジスタ56を監視し、条件
付ブランチを取るべきであると判定して、論理制御回路
50は、ターゲット命令バッファ36から、タスク指名
しようとする順次命令バッファ38に、ターゲット命令
を供給する。ターゲット命令バッファと順次命令バッフ
ァの制御は、それぞれ回線37と39で行なう。ブラン
チが取られない場合は、順次命令のアドレスをレジスタ
32からレジスタ30へ復元し、順次命令バッファ38
内の順次命令をタスク指名し続ける。ターゲット命令バ
ッファ36と順次命令バッファ38の制御を、それぞれ
回線37と39を介して、論理制御回路40から供給す
る。さらに、回線43が論理制御回路40に接続され、
キャンセル条件付信号を固定小数点処理装置20に供給
し、これは条件付命令(ブランチ命令後に発生する順次
命令)は実行されないことを表示する。回線41は、実
行条件付信号を固定小数点処理装置20に供給し、これ
は、これらの条件付命令を実行しようとすることを固定
小数点処理装置に表示する。
第4図は、インターロック、タスク指名、ブランチ実行
、及びバッファ論理制御装置40を表す流れ図である。
第4図で、サイクル100の開始時、ステップ10Bは
、非分解ブランチが保留かどうかを判定する。これは、
非分解ブランチ保留ビットがセットされたかどうかの判
定によって達成される。非分解ブランチが保留でない場
合は、流れは、ステップ110に進み、そこで順次命令
バッファ38を走査し、ブランチ命令があるかどうかを
判定する。そうでない場合は、制御の流れはステップ1
04に進み、順次命令の新しいセットを順次命令バッフ
ァ38の中に取り出し、順次命令を順次命令バッファ3
8からタスク指名する。
ステップ104が終わると、制御の流れはステップ10
0に戻り、次のサイクルの始りを待つ。ステップ110
に戻って、ブランチが順次命令バッファ38内で検出さ
れた場合は、ステップ116が実行され、そこでターゲ
ット・アドレスが生成できるか判定する。そうでない場
合は、制御の流れはステップ104に進む。そうである
場合は、流れはステップ126へ進み、すべての以前の
命令がタスク指名されたかどうかを判定する。ブランチ
以前のすべての命令がタスク指名されなかった場合は、
流れはステップ132へ続き、ブランチ・ターゲット命
令の事前取り出しが始まったがどうか判定する。そうで
ない場合は、ステップ146で、ターゲット・アドレス
を命令取出しアドレス・レジスタ30の中に配置して、
事前取出しを始める。この時、命令取出しアドレス・レ
ジスタ30の現存内容を命令取出しアドレス・レジスタ
・シャドウ32の中に配置する。ステップ146の完了
時、すなわち事前取出しがすでに始まった時、制御の流
れはステップ150に進み、順次命令バッファ38から
の命令をタスク指名する。
それから、制御の流れはステップ102に進み、ブラン
チ・ターゲット命令をターゲット命令バッファ36の中
に取り出す。その後、流れはステップ100へ戻り、次
のサイクルが始まるのを待つ。
ステップ126に戻って、ブランチ前にすべての以前の
命令がタスク指名された場合、流れはステップ130に
進み、ブランチが取られるかどうかがその点で判るかど
うかを判定する。ブランチを取ろうとしていることが判
る場合、制御の流れはステップ136に進み、事前取出
しが始まったかどうかを判定する。そうでない場合は、
制御の流れはステップ144に進み、ターゲット・アド
レスを命令取出しアドレス・レジスタ30の中に配置し
て、現順次バッファを無効にする。前記のように、レジ
スタ30の元来の内容をレジスタ32の中に置く。それ
から流れはステップ104に進む。ステップ136に戻
って、事前取出しがすでに始まっている場合は、流れは
ステップ142へ進み、ターゲット命令バッファ36か
らの命令を順次命令バッファ38の中にロードし、事前
取出しを停止する。再び流れはステップ104に進む。
ステップ130に戻って、ブランチが取られるのかどう
か判らない場合は、流れはステップ134に進み、ブラ
ンチが取られないかどうかが判るかどうか判定する。ブ
ランチが取られない場合は、流れはステップ140に続
き、事前取出しが始まったかどうかを判定する。そうで
ない場合は、流れはステップ104に続く。しかし、事
前取出しが始まっていた場合は、流れはステップ148
へ進み、事前取出しを停止し、命令取出しアドレス・シ
ャドウ32の内容で命令取出しアドレス・レジスタ30
を復元する。ステップ148が終わると、制御の流れは
ステップ104に進む。ステップ134に戻って、ブラ
ンチが取られるかどうか判らない場合は、制御の流れは
ステップ138へ進み、非分解ブランチ・レジスタ54
をロードし、非分解ブランチが保留であることを表示す
る内部ビットをセットする。また、次々と命令をバッフ
ァ38からタスク指名する。これらの順次命令は、条件
付実行、すなわちブランチが取られる場合のみ実行され
るためのものである。それから、制御の流れはステップ
102へ進む。
ステップ10・6に戻り、非分解ブランチが保留の場合
は、流れはステップ108に進み、ブランチが分解され
たかどうかを判定する。ブランチが分解されたかどうか
の判定では、論理制御回路は条件レジスタ5θの内容を
検査して、非分解ブランチ・レジスタ54内のブランチ
の分解に必要な条件コードがセットされたかどうかを判
定する。
ブランチが分解されなかった場合は、流れはステップ1
14へ進み、事前取出しが始まったかどうかを判定する
。そうでない場合は、流れはステップ122へ続き、タ
ーゲット・アドレスが生成できるかどうかを判定する。
ターゲット・アドレスが生成できない場合は、プログラ
ムの流れはステップ104へ進む。ターゲット・アドレ
スが生成できる場合は、プログラムはステップ124へ
進み、命令取出しアドレス・レジスタ30の内容を命令
取出しアドレス・レジスタ・シャドウ32へ記憶し、さ
らに生成したターゲット・アドレスを命令取出しアドレ
ス・レジスタ30の中に配置し、ブランチ・ターゲット
命令の事前取出しを開始する。
ステップ128へ進み、順次命令のタスク指名を開始す
る。これらの順次実行は、条件付実行のために、すなわ
ちブランチが取られない条件で実行するためにタスク指
名されている。ステップ128後、流れはステップ10
2へ進む。
ステップ108に戻り、ブランチが分解された場合は、
流れはステップ112へ続き、ブランチが取られたかど
うかを判定する。ブランチが取られなかった場合は、回
線41上の実行条件付信号(第1図)は、固定小数点処
理装置20へ送られる。命令取出しアドレス・レジスタ
30を命令取出しアドレス・レジスタ・シャドウ32の
内容で復元し、事前取出しを停止する。それから制御の
流れはステップ104へ進む。ブランチが取られる場合
は、キャンセル条件付順次命令実行信号を、回線43を
介して固定小数点処理装置20へ送り、ターゲット命令
バッファ36内のブランチ・ターゲット命令を順次命令
バッファ38内にロードする。また、事前取出しを停止
する。それから制御の流れはステップ104へ進む。
【図面の簡単な説明】
第1図は、データ処理システムのブロック図である。 第2a図は、無条件ブランチを含む命令シーケンスであ
る。 第2b図は、第2a図の命令シーケンスのためのパイプ
ライン化された命令の流れを示すタイミング・ダイヤグ
ラムである。 第2c図は、比較命令に隣接して取られていない条件付
比較を含む命令順序である。 第2d図は、第2c図の命令シーケンスのパイプライン
化されたデータの流れを示すタイミング・ダイヤグラム
である。 第2e図は、比較命令に隣接して取られた条件付ブラン
チ命令を含む命令シーケンスである。 第2f図は、第2e図の命令順序のためのパイプライン
化された命令の流れを示すタイミング・ダイヤグラムで
ある。 第2g図は、比較命令と取られた条件付ブランチ命令の
間の命令を有する比較命令を含む命令順序である。 第2h図は、第2g図の命令シーケンスに対するパイプ
ライン化された命令の流れを示すタイミング・ダイヤグ
ラムである。 第21図は、条件付ブランチ命令に隣接した3個の中間
命令を存する比較命令を含む命令シーケンスである。 第2j図は、第21図の命令シーケンスに対するパイプ
ライン化された命令の流れを示すタイミング・ダイヤグ
ラムである。 第3図は、命令取出し/ブランチ処理ユニットの内容を
示すブロック図である。 第4図は、インターロック、タスク指名、ブランチ実行
、及びバッファ論理制御回路の動作を示す流れ図である
。 T1 :ターゲット命令 第2c図 C 固定小数点比較 第2e図 箱2f図 ブイ こ、− 小た 較 ′1゛2 1゛3 ′I゛4 第2g区 T4 第21図

Claims (2)

    【特許請求の範囲】
  1. (1)命令シーケンスを記憶する手段と、 前記命令シーケンスがブランチ命令を含むかどうかを判
    定する手段と、 前記記憶手段内のブランチ・ターゲット命令シーケンス
    を記憶するために、前記判定手段に応答する手段と、 前記ブランチ命令を含む命令シーケンスをプロセッサに
    タスク指名する際に、前記ブランチが取られるかどうか
    を判定する前に、ブランチが取られないという条件で実
    行される、命令シーケンス中の、前記ブランチ命令後の
    命令をプロセッサにタスク指名し、同時に前記ブランチ
    が取られるかどうかを判定する手段と、 前記ブランチが取られない場合には、前記ブランチ命令
    後、前記プロセッサを前記命令を次々と実行するように
    指示するか、あるいは前記ブランチが取られる場合には
    、実行のために前記ブランチ・ターゲット命令順序を前
    記プロセッサにタスク指名する手段とを有することを特
    徴とするデータ処理システム。
  2. (2)メモリから1シーケンスの複数の命令を取り出す
    手段と、 取り出されたシーケンスの命令の一部分を記憶するため
    の第1バッファ手段と、 ブランチ命令が前記バッファ手段内に記憶されているか
    どうかを判定する手段と、 前記第1バッファ手段内のブランチ命令に応答して、ブ
    ランチ・ターゲット命令シーケンスを取り出すための前
    記判定手段に接続した手段と、前記の取り出されたブラ
    ンチ・ターゲット命令の一部を記憶するための第2バッ
    ファ手段と、ブランチが取られる条件の下前記プロセッ
    サにより実行される命令を前記第1バッファ装置からプ
    ロセッサへタスク指名する手段と、 前記ブランチ命令を実行し、前記ブランチが取られるべ
    きかどうかを判定するための手段と、前記ブランチが取
    られていない場合に、その条件でタスク指名された前記
    命令が実行されるべきことを、前記プロセッサに指示す
    る手段と、前記ブランチが取られる場合に、命令を前記
    第2バッファ手段から前記プロセッサにタスク指名する
    手段と、 前記ブランチが取られる場合、前記条件付命令が実行さ
    れないことを、前記プロセッサに表示するための手段と
    を有することを特徴とするデータ処理システム。
JP2003651A 1989-01-13 1990-01-12 パイプライン式データ処理システム Expired - Fee Related JP2761956B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US07/297,784 US5127091A (en) 1989-01-13 1989-01-13 System for reducing delay in instruction execution by executing branch instructions in separate processor while dispatching subsequent instructions to primary processor
US297784 1989-01-13

Publications (2)

Publication Number Publication Date
JPH02227731A true JPH02227731A (ja) 1990-09-10
JP2761956B2 JP2761956B2 (ja) 1998-06-04

Family

ID=23147731

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2003651A Expired - Fee Related JP2761956B2 (ja) 1989-01-13 1990-01-12 パイプライン式データ処理システム

Country Status (3)

Country Link
US (1) US5127091A (ja)
EP (1) EP0378425A3 (ja)
JP (1) JP2761956B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103348318A (zh) * 2011-02-07 2013-10-09 Arm有限公司 控制依赖于相同数据条件的相邻指令的执行

Families Citing this family (46)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5440749A (en) * 1989-08-03 1995-08-08 Nanotronics Corporation High performance, low cost microprocessor architecture
US5230068A (en) * 1990-02-26 1993-07-20 Nexgen Microsystems Cache memory system for dynamically altering single cache memory line as either branch target entry or pre-fetch instruction queue based upon instruction sequence
JPH0460720A (ja) * 1990-06-29 1992-02-26 Hitachi Ltd 条件分岐命令制御方式
US5371862A (en) * 1991-02-27 1994-12-06 Kabushiki Kaisha Toshiba Program execution control system
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
US5511172A (en) * 1991-11-15 1996-04-23 Matsushita Electric Co. Ind, Ltd. Speculative execution processor
JP2693678B2 (ja) * 1992-01-28 1997-12-24 株式会社東芝 データ処理装置
US5438668A (en) * 1992-03-31 1995-08-01 Seiko Epson Corporation System and method for extraction, alignment and decoding of CISC instructions into a nano-instruction bucket for execution by a RISC computer
JP3730252B2 (ja) 1992-03-31 2005-12-21 トランスメタ コーポレイション レジスタ名称変更方法及び名称変更システム
DE69308548T2 (de) 1992-05-01 1997-06-12 Seiko Epson Corp Vorrichtung und verfahren zum befehlsabschluss in einem superskalaren prozessor.
US5692167A (en) * 1992-07-31 1997-11-25 Intel Corporation Method for verifying the correct processing of pipelined instructions including branch instructions and self-modifying code in a microprocessor
US5442756A (en) * 1992-07-31 1995-08-15 Intel Corporation Branch prediction and resolution apparatus for a superscalar computer processor
US5423048A (en) * 1992-08-27 1995-06-06 Northern Telecom Limited Branch target tagging
DE69329778T2 (de) 1992-09-29 2001-04-26 Seiko Epson Corp., Tokio/Tokyo System und verfahren zur handhabung von laden und/oder speichern in einem superskalar mikroprozessor
US6735685B1 (en) * 1992-09-29 2004-05-11 Seiko Epson Corporation System and method for handling load and/or store operations in a superscalar microprocessor
US5410657A (en) * 1992-10-09 1995-04-25 International Business Machines Corporation Method and system for high speed floating point exception enabled operation in a multiscalar processor system
US5784604A (en) * 1992-10-09 1998-07-21 International Business Machines Corporation Method and system for reduced run-time delay during conditional branch execution in pipelined processor systems utilizing selectively delayed sequential instruction purging
JP3211423B2 (ja) * 1992-10-13 2001-09-25 ソニー株式会社 分岐命令実行方法および分岐命令実行装置
US5581719A (en) * 1992-11-12 1996-12-03 Digital Equipment Corporation Multiple block line prediction
KR100292300B1 (ko) 1992-12-31 2001-09-17 야스카와 히데아키 레지스터재명명시스템및방법
US6032244A (en) * 1993-01-04 2000-02-29 Cornell Research Foundation, Inc. Multiple issue static speculative instruction scheduling with path tag and precise interrupt handling
CA2107046A1 (en) * 1993-01-08 1994-07-09 James Allan Kahle Method and system for increased instruction dispatch efficiency in superscalar processor system
JP2596712B2 (ja) * 1993-07-01 1997-04-02 インターナショナル・ビジネス・マシーンズ・コーポレイション 近接した分岐命令を含む命令の実行を管理するシステム及び方法
CA2123442A1 (en) * 1993-09-20 1995-03-21 David S. Ray Multiple execution unit dispatch with instruction dependency
US5539888A (en) * 1993-12-23 1996-07-23 Unisys Corporation System and method for processing external conditional branch instructions
JPH07281893A (ja) * 1994-04-15 1995-10-27 Internatl Business Mach Corp <Ibm> 処理システム及び演算方法
US5644779A (en) * 1994-04-15 1997-07-01 International Business Machines Corporation Processing system and method of operation for concurrent processing of branch instructions with cancelling of processing of a branch instruction
CA2190487A1 (en) * 1994-05-16 1995-11-23 Daniel Kenneth Freeman Instruction creation device
US5805855A (en) * 1994-10-05 1998-09-08 International Business Machines Corporation Data cache array having multiple content addressable fields per cache line
FR2726103B1 (fr) * 1994-10-25 1996-12-13 Suisse Electronique Microtech Dispositif d'execution d'un programme d'instructions
US5781758A (en) * 1995-03-23 1998-07-14 Apple Computer, Inc. Software emulation system with reduced memory requirements
US5802346A (en) * 1995-06-02 1998-09-01 International Business Machines Corporation Method and system for minimizing the delay in executing branch-on-register instructions
US5634103A (en) * 1995-11-09 1997-05-27 International Business Machines Corporation Method and system for minimizing branch misprediction penalties within a processor
US5799167A (en) * 1996-05-15 1998-08-25 Hewlett-Packard Company Instruction nullification system and method for a processor that executes instructions out of order
US5918044A (en) * 1996-10-31 1999-06-29 International Business Machines Corporation Apparatus and method for instruction fetching using a multi-port instruction cache directory
JP2000507016A (ja) * 1996-11-04 2000-06-06 フィリップス エレクトロニクス ネムローゼ フェンノートシャップ メモリの命令を読み出す処理装置
US6957327B1 (en) * 1998-12-31 2005-10-18 Stmicroelectronics, Inc. Block-based branch target buffer
US7010675B2 (en) * 2001-07-27 2006-03-07 Stmicroelectronics, Inc. Fetch branch architecture for reducing branch penalty without branch prediction
US7493607B2 (en) 2002-07-09 2009-02-17 Bluerisc Inc. Statically speculative compilation and execution
US20050114850A1 (en) 2003-10-29 2005-05-26 Saurabh Chheda Energy-focused re-compilation of executables and hardware mechanisms based on compiler-architecture interaction and compiler-inserted control
US7996671B2 (en) 2003-11-17 2011-08-09 Bluerisc Inc. Security of program executables and microprocessors based on compiler-architecture interaction
US8607209B2 (en) 2004-02-04 2013-12-10 Bluerisc Inc. Energy-focused compiler-assisted branch prediction
US20070294181A1 (en) * 2006-05-22 2007-12-20 Saurabh Chheda Flexible digital rights management with secure snippets
US20080126766A1 (en) 2006-11-03 2008-05-29 Saurabh Chheda Securing microprocessors against information leakage and physical tampering
US20080154379A1 (en) * 2006-12-22 2008-06-26 Musculoskeletal Transplant Foundation Interbody fusion hybrid graft

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5485650A (en) * 1977-12-21 1979-07-07 Hitachi Ltd Branch instruction control system
JPS62208129A (ja) * 1986-03-10 1987-09-12 Fujitsu Ltd デ−タ処理方式
JPS63318634A (ja) * 1987-06-23 1988-12-27 Nec Corp 命令先取り方式

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5021821B1 (ja) * 1968-10-31 1975-07-25
US3699526A (en) * 1971-03-26 1972-10-17 Ibm Program selection based upon intrinsic characteristics of an instruction stream
US4210960A (en) * 1977-09-02 1980-07-01 Sperry Corporation Digital computer with overlapped operation utilizing conditional control to minimize time losses
AU529675B2 (en) * 1977-12-07 1983-06-16 Honeywell Information Systems Incorp. Cache memory unit
US4373180A (en) * 1980-07-09 1983-02-08 Sperry Corporation Microprogrammed control system capable of pipelining even when executing a conditional branch instruction
US4390946A (en) * 1980-10-20 1983-06-28 Control Data Corporation Lookahead addressing in a pipeline computer control store with separate memory segments for single and multiple microcode instruction sequences
US4551798A (en) * 1982-11-03 1985-11-05 Burroughs Corporation Multiple control stores in a pipelined microcontroller for handling nester subroutines
JPS6015745A (ja) * 1983-07-06 1985-01-26 Nec Corp 情報処理装置
WO1985000453A1 (en) * 1983-07-11 1985-01-31 Prime Computer, Inc. Data processing system
JPS60168238A (ja) * 1984-02-10 1985-08-31 Hitachi Ltd パイプラインデータ処理装置
US4742451A (en) * 1984-05-21 1988-05-03 Digital Equipment Corporation Instruction prefetch system for conditional branch instruction for central processor unit
US4679141A (en) * 1985-04-29 1987-07-07 International Business Machines Corporation Pageable branch history table
US4791557A (en) * 1985-07-31 1988-12-13 Wang Laboratories, Inc. Apparatus and method for monitoring and controlling the prefetching of instructions by an information processing system
DE3752100T2 (de) * 1986-01-07 1997-12-11 Nippon Electric Co Befehlsvorabrufgerät mit einer Schaltung zum Prüfen der Vorhersage eines Verzweigungsbefehls vor seiner Ausführung
US4991080A (en) * 1986-03-13 1991-02-05 International Business Machines Corporation Pipeline processing apparatus for executing instructions in three streams, including branch stream pre-execution processor for pre-executing conditional branch instructions
US4853889A (en) * 1986-09-03 1989-08-01 American Telephone And Telegraph Company, At&T Bell Laboratories Arrangement and method for speeding the operation of branch instructions
JPS6393041A (ja) * 1986-10-07 1988-04-23 Mitsubishi Electric Corp 計算機
US4991078A (en) * 1987-09-29 1991-02-05 Digital Equipment Corporation Apparatus and method for a pipelined central processing unit in a data processing system
JPH0769812B2 (ja) * 1987-12-29 1995-07-31 富士通株式会社 データ処理装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5485650A (en) * 1977-12-21 1979-07-07 Hitachi Ltd Branch instruction control system
JPS62208129A (ja) * 1986-03-10 1987-09-12 Fujitsu Ltd デ−タ処理方式
JPS63318634A (ja) * 1987-06-23 1988-12-27 Nec Corp 命令先取り方式

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103348318A (zh) * 2011-02-07 2013-10-09 Arm有限公司 控制依赖于相同数据条件的相邻指令的执行
JP2014504770A (ja) * 2011-02-07 2014-02-24 エイアールエム リミテッド 同一のデータ条件に依存する、隣接する命令の実行の制御
US9176737B2 (en) 2011-02-07 2015-11-03 Arm Limited Controlling the execution of adjacent instructions that are dependent upon a same data condition

Also Published As

Publication number Publication date
JP2761956B2 (ja) 1998-06-04
EP0378425A3 (en) 1992-09-02
US5127091A (en) 1992-06-30
EP0378425A2 (en) 1990-07-18

Similar Documents

Publication Publication Date Title
JPH02227731A (ja) データ処理システム
JP2645669B2 (ja) データ処理システム
EP0437044B1 (en) Data processing system with instruction tag apparatus
US5961637A (en) Split branch system utilizing separate set branch, condition and branch instructions and including dual instruction fetchers
US5872985A (en) Switching multi-context processor and method overcoming pipeline vacancies
CA1325285C (en) Method and apparatus for ordering and queueing multiple memory requests
US5353418A (en) System storing thread descriptor identifying one of plural threads of computation in storage only when all data for operating on thread is ready and independently of resultant imperative processing of thread
US4722050A (en) Method and apparatus for facilitating instruction processing of a digital computer
EP0180725B1 (en) Instruction prefetch operation for branch instructions
WO1990014629A2 (en) Parallel multithreaded data processing system
HK1000050B (en) Data processing systems
JPH01142831A (ja) データ処理システム
JPH02227730A (ja) データ処理システム
US6609191B1 (en) Method and apparatus for speculative microinstruction pairing
US5897654A (en) Method and system for efficiently fetching from cache during a cache fill operation
EP0435249A2 (en) Pipelined computer with half machine cycle alternating write control for avoiding usage conflicts in general registers
EP0181462B1 (en) Microcode control of a parallel architecture microprocessor
JP2000353091A (ja) コンピュータシステムにおける命令実行方法およびコンピュータシステム
EP1050805B1 (en) Transfer of guard values in a computer system
US6185674B1 (en) Method and apparatus for reconstructing the address of the next instruction to be completed in a pipelined processor
JPS60241136A (ja) デ−タ処理装置
JPH10283178A (ja) 命令を発行するための方法及びシステム
KR920006613B1 (ko) 파이프라인으로 동작하는 프로세서의 명령어 페취 유니트
JP3017866B2 (ja) 割込み処理方式
JPH0279122A (ja) 浮動小数点演算機構

Legal Events

Date Code Title Description
LAPS Cancellation because of no payment of annual fees