JPS623342A - パイプラインプロセツサ - Google Patents

パイプラインプロセツサ

Info

Publication number
JPS623342A
JPS623342A JP14771786A JP14771786A JPS623342A JP S623342 A JPS623342 A JP S623342A JP 14771786 A JP14771786 A JP 14771786A JP 14771786 A JP14771786 A JP 14771786A JP S623342 A JPS623342 A JP S623342A
Authority
JP
Japan
Prior art keywords
program counter
instruction
address
pipeline
program
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
JP14771786A
Other languages
English (en)
Inventor
Kao Ratsuseru
ラツセル・カオ
Shii Miraa Terensu
テレンス・シー・ミラー
Aaru Burigu Uiriamu
ウイリアム・アール・ブリグ
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.)
Hewlett Packard Japan Inc
Original Assignee
Yokogawa Hewlett Packard 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 Yokogawa Hewlett Packard Ltd filed Critical Yokogawa Hewlett Packard Ltd
Publication of JPS623342A publication Critical patent/JPS623342A/ja
Pending 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/3861Recovery, e.g. branch miss-prediction, exception handling
    • G06F9/3863Recovery, e.g. branch miss-prediction, exception handling using multiple copies of the architectural state, e.g. shadow registers
    • 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/46Multiprogramming arrangements
    • G06F9/461Saving or restoring of program or task context

Abstract

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

Description

【発明の詳細な説明】 〔産業上の利用分野〕 本発明は一般に、割込み方式に係り、特にパイプライン
計算機システムにおいて、プログラムの分岐、割込み、
および、トラップが、発生する環境における効率的演算
を可能とするプログラムカウンタキューを具備したパイ
プラインプロセッサ関する。
〔従来技術とその問題点〕
一般に、命令の実行はいくつかのステップから成り、そ
れらは1例えば、命令の番地をプログラムカウンタ(P
C)にロードすること、命令を取込むこと、命令を解読
してその命令で指定された動作を実行することが含まれ
る。このステップシーケンスは数個の命令サイクルをと
ることができる。従って、−命令の実行をいくつかのレ
ベルの動作に分割するパイプライン方式の使用は効果的
であることが知られている。例えば、ある形式のパイプ
ラインでは、以下のレベルが使用できる。即ち、レベル
1においては、命令番地がプログラムカウンタにロード
され、レベル2では命令が取込まれ、レベル3において
は命令解読が行われ、レベル4で命令によって指定され
た動作が実行される。
プログラム内のブランチ(分岐)はパイプライン計算機
の効率を下げる可能性がある。これらの非効率性は、第
1図のプログラム実行のための数ステップの動きを見れ
ば明らかになる。第2図において、プログラム命令の状
態が、一連の計算機命令サイクルのセットに対して表わ
されている。サイクル1で示される列において、命令り
の番地は プログラムカウンタ(pc)にロードされ、命令Cはメ
モリから取込まれて命令レジスタ(1)にロードされ、
命令Bは解M(デコード)され、命令Aは完全に実行さ
れデータを生成している。次の命令サイクル(サイクル
2)では、命令Bが実行され、命令Cが解読され、命令
りは命令レジスタに取込まれ、命令Eの番地はプログラ
ムカウンタにロードされる。
残念なことに、分岐が発生すると、この部分的に実行さ
れた命令を廃棄せねばならないことがある。
例えば、命令りが、プログラムが命令Pへ分岐すべきこ
とを示せば、部分的に実行された命令E、Fは廃棄され
ねばならないし、これらの部分的実行の結果による計算
機への全ての影響(例えば、プログラムカウンタにロー
ドされた命令番地の数の軌跡を保持するカウンタの値)
は取り除かれなければならない。二九を実施するための
方法は公知であるが、部分的に実行された命令の廃棄を
やはり含んでいる。
全命令の約10〜25%は分岐命令なので、このような
廃棄はプログラム実行速度に大きく影響する。
従って、遅延分岐(delayed  branch)
と呼ばれる形式の分岐がこの廃棄を除くために開発され
ている。遅延分岐がコンパイルされると、プログラム内
の所望の点において分岐を生成できるように遅延分岐命
令は、コンパイルされたプログラム内で、十分な数のス
テップだけ前に押入される。Nレベルを有するパイプラ
インにおいては、このためには、コンパイル後のプログ
ラム中に、N−2ステップ分だけ前(早く)に、コンパ
イルされた分岐が挿入されるのが必要である。第3図は
、遅延分岐命令りを使用した場合の、コンパイル後のプ
ログラムを示す。以前に説明した4レベルパイプライン
では、このためには、こうしなかった場合に比べて、命
令りは、2ステツプ前に置かれる。第4図にこのプログ
ラムの実行を示す。図示するように、遅延分岐の使用に
よって、命令EとFをパイプラインにロードし、その後
、廃棄するというステップが除去される。
しかし、遅延分岐命令が、完全に実行されてすぐ後に割
込みまたはトラップが発生する場合には、新しい問題が
ある。第5図にこの問題を示す。ここでは分岐に続く最
初の命令の実行前に(即ち、命令サイクル2と3のトリ
がエツジ間で)割込みが発生する。従って、サイクル3
が始まると、割込みハンドラ命令の番地が挿入される。
第5図は8個の命令を有する割込みハンドラルーチンで
ある。
割込み発生時、既にパイプライン内で正常に実行される
と、分岐目標の番地(即ち、プログラムの飛び先命令の
番地)をプログラムカウンタにロードしようとする。し
かし、最初の割込み命令番地が、プログラムカウンタに
挿入されなければならない、従っの完了時には、ステッ
プB、CおよびPはパイプライン内に再び挿入されねば
ならない。解読された命令B、命令C1および命令Pの
番地を一時的に保持するための特別な追加ハードウェア
の費用を除くために、これらの命令の番地は、割込みハ
ンドラの最終命令の直後に、パイプラインの頭部に順次
挿入される(即ちプログラムカウンタに挿入される)。
もし、遅延分岐を使用しないとすれば、割込みルーチン
後のプログラムのエントリを再始動するために、解読さ
れた命令(命令B)の番地のみを保存しなくてはならな
い、しかし、こうすると、第3図のプログラムから、命
令B、C,E、F・・・・・・の番地が:2次挿入され
る。この方法は、ステップPへの分岐がステップC後に
実行されねばならないことを知るための十分な情報が保
存されない、従って、命令P、CおよびBの番地は、割
込みに応答して保存される必要がある。これらの番地を
使用可能にするため、プログラムカウンタキューがプロ
グラムカウンタに接続される。各サイクルにおいて、次
の命令を取込むために使用されるプログラムカウンタ内
の番地だけでなく、更に、この命令の番地もプログラム
カウンタキューにコピーされる。従って、命令B、C1
およびPの番地は、プログラムカウンタキュー内にb−
ドされる。一般に、Nレベルを持つパイプラインに対し
ては、プログラムカウンタキューはN−1個の番地を保
存しなくてはならない。プログラムカウンタキュー内に
保存されたこれらの番地が必要となるのは、プログラム
内の非連続番地に対応する部分的実行済命令がパイプラ
インに含まれ、そしてこの場合に割込みが発生したとき
である。N個のレベルを有する計算機においては、遅延
分岐実行後N−2サイクル以内に割込みが発生した時に
上記番地が必要となる。割込みと同様な問題は、正常な
プログラム実行がトラップによって割込みを受けた時に
発生する。
カリフォルニア大学バークレー校で開発されたMIPS
計算機において、遅延分岐とプログラムカウンタキュー
が導入された。割込発生時には、プログラムカウンタキ
ュー内の番地はメモリ内にコピーされる。そして、割込
みルーチンの終了時に、プログラムカウンタキューから
の番地が位置されるメモリ位置の番地をパイプライン中
に順次挿入する一連の遅延分岐が存在する。
〔発明の目的〕
本発明は、プログラムカウンタキュ一番地をメモリに保
存する必要を取り除くハードウェアが含まれており、割
込終了時に割込まれたプログラムの続行が可能となるパ
イプラインプロセッサを提供することです。
〔発明の概要〕
状態レジスタは、プログラムカウンタキューに対するク
ロックイネーブルとして使用されるQビットを含む0割
込み発生時には、Qビットはフォールス(偽)にセット
され、割込み時のプログラムカウンタ61内の内容がそ
のキュー自身に保存される。プログラムカウンタの入力
側には、4人力源を選択するマルチプレクサがある。第
1人力源は、プログラムの次のエントリをアクセスする
ために十分な量だけ増加されたプログラムカウンタ内の
旧番地である。
バイトレベルの番地処理を行なうにバイトの語長の計算
機においては、増加分はRである。プログラムの通常の
順次実行モードにおいては、この第1人力源が選択され
る。第2人力源は、分岐目標である。
耐読後の分岐命令が実行されると、マルチプレクサは、
分岐先番地の番地をプログラムカウンタに挿入する。第
3人力源の番地は、割込みハンドラルーチンが置かれて
いるメモリ位置セットである。第4人力源の番地は、プ
ログラムカウンタキューである。
割込みルーチンの終りには1割込みで禁止された番地を
再ロードするための十分なサイクルのために、プログラ
ムカウンタキューを選択する命令がある。
〔実施例〕
第6図は、本発明の一実施例によるパイプラインプロセ
ッンフロック図である。第6図に割込みまたはトラップ
が発生した時に命令番地を保存するために、プログラム
カウンタキューを使用する方法を示す。この実施例にお
いては、4レベルのパイプラインが使用される。レベル
1には、実行されるべき命令の番地が順次ロードされる
プログラムカウンタ611が存在する。これらの命令は
、命令キャッシュメモリ62等のメモリに記憶される。
プログラムカウンタ611内の番地は2.パイプライン
のレベル2に位置付けされたパイプラインレジスタ63
に、次にロードされるべき命令を決定する。解読器(デ
コーダ)64は、レジスタ63内の命令を、パイプライ
ン内のレベル3のパイプラインレジスタ65に記憶され
る解読済命令に変換する。−組の汎用レジスタ66は、
パイプラインのレベル4のパイプラインレジスタ68に
データを供給する論理演算装置67に入力を与える。レ
ジスタ68からのデータはデータキャッシュ69のよう
なメモリ要素に与えられる。
各命令サイクルにおいて、命令は、パイプラインを介し
てルベルづつ進められる。他の実施例においては、命令
取込み解読は、1命令サイクルで実行されるので、パイ
プラインレジスタ63は除かれる。
プログラムカウンタキュー610は、プログラムカウン
タ61からの番地を受けるため、プログラムカウンタ6
1に接続される。プログラムカウンタ61内に新しい番
地が挿入さ九ると、プログラムカウンタ61内の旧番地
はプログラムカウンタキュー61oにロードされる。一
般に、プログラムカウンタキュー610は、ロードされ
た最近のN−1個(Nはパイプラインの深さ)のエント
リを保持する。こめ実施例においては、プログラムカウ
ンタキュー610は3個の番地を保持する。
4対1マルチプレクサ611は、プログラムカウンタ6
1にロードされる番地の入力源を選択するために、プロ
グラムカウンタ61の入力に接続される。
4人力のどれが選択されるかは、マルチプレクサ611
への選択入力信号で、決定される。この入力は扛 選中論理部616により与えられるが、これは、パイプ
ラインレジスタ65内の解読済命令からの入力および以
下に説明する一組のフラッグ615に応動する。各命令
サイクルにおいて、インフレメンタ612は、プログラ
ムカウンタ61内の旧番地を増加させ、増加後の番地を
マルチプレクサ611の第1人力に印加する。通常動作
において、プログラムカウンタ61内にロードされた命
令は、実行中のプログラム内に順次現われるので、後続
番地は、旧番地をある一定値だけ増加させたものとなる
。一般に、インフレメンタ612は、プログラムの順次
実行中に次に実行されるべき命令をアクセスするのに十
分な量だけ、プログラムカウンタ61内の番地を増加さ
せる。この実施例では、32ビツト(4バイ、ト)の番
地が使用され、番地はバイト単位で宛先指定可能である
ので、インフレメンタ612はプログラムカウンタ61
内の直前のエントリを4だけ増加させる。
分岐1割込み、およびトラップにおいては、非連続の命
令実行がなされる。分岐命令は、分岐目標番地(即ち、
プログラムが分岐してゆく先の番地)を指定する。分岐
命令実行時には、分岐目標番地はALU67から、マル
チプレクサ611の第2入力端に供給され、そして選択
論理部616から、第2入力端を選択するために、マル
チプレクサ選択入力に信号が送られる。
割込みまたはトラップ発生時には、割込みまたはトラッ
プは、メモリに記憶された割込みハンドラルーチンまた
はトラップハンドラルーチンによって実行される。一般
に種々の異なったトラップがあるが、各トラップは、対
応する異なった番地から始動する対応するトラップハン
ドラルーチンを有する。トラップと割込みは同様に取扱
えるので、以下の説明と特許請求の範囲においては、割
込みとして取扱うものとする。従って、本願で使用され
る割込みという用語は、トラップおよび外部割込みを含
む。割込みが発生すると、割込みハンドラルーチンの第
1命令の番地がマルチプレクサ611の第3入力端に与
えられ、マルチプレクサ611の選択入力はこの第3人
力を選択する。割込みハンドラルーチン内の後続命令番
地は、インフレメンタ612によって生成され、選択信
号は第1人力を選択するためにセットされる。
割込み発生時には、パイプラインの深さよりも1個少な
い数のN0OPフラグの組(図示せず)が真にセットさ
れる。これらのN0OPフラ乎グは、パイプライン内の
実行されない命令が、起動された割込みハンドラルーチ
ンと干渉し合わないようにするために使用される。各後
続サイクルでは、N OC) Pフラグの1個が偽にセ
ットされる。N0OPフラグの1個が真である限りは、
命令実行の本質的な全ての効果は、パイプライン内の命
令を通過することを除いて禁止される。この結果をもた
らすために必要なニオしらのフラグに応動する特定回路
は、使用される特定な手法に依存するが、このような回
路は公知である。この回路とN○○Pフラグによって、
部分的に実行された命令が1割込に干渉せずにパイプラ
インから効果的に除かれ、更に該回路が割込みハンドラ
ルーチン内の命令に応動するようにできる。
割込みまたはトラップが発生すると、状態レジスタ内の
Qビット613は偽にセットされる。Qビットとクロッ
クは、プログラムカウンタキュー610への出力を有す
るANDゲート614の入力に接続されているので、Q
ビットはクロックイネーブルとして働く。Qビットを偽
にセットすることによって、プログラムカウンタキュー
610の内容は、Qビットが真にリセットされるまで凍
結される。従って、プログラムカウンタキュー610は
、その割込発生前の3命令サイクル中にプログラムカウ
ンタ61中にあった3連続番地を保持する機能をする。
割込みハンドラルーチンの終了時に、3個のRFI(リ
ターン・フロム・インターラブド)フラグセット615
が真にセットされ、Qビットが真にセットされる。
その後の各命令サイクルにおいて、これらのフラグの1
個は、全フラグが偽になるまで、偽にセットされる。こ
れらのフラグのうち、少くとも1個が真である限りは、
マルチプレクサ611への選択入力信号は、プログラム
カウンタキュー610の出力に接続された第4人力を選
択する。Qビットが再び真なので、各命令サイクルにお
いて、プログラムカウンタ61内の番地はプログラムカ
ウンタキュー610にロードされ、これによって、プロ
グラムカウンタキュー610内の最新の入力番地を、マ
ルチプレクサ611の第4入力端に転送できる。
〔発明の効果〕
以上の動作により1割込時に部分的にのみ処理されてい
た命令の番地を、パイプラインの第ルベルに再挿入でき
、割込ま九たプログラムの続行が可能になる。
【図面の簡単な説明】
第1図は従来の計算機において、分岐命令の影響を説明
するための一連のプログラムステップを示した図、第2
図は従来のパイプライン計算機において、分岐命令の影
響を示した図、第3図は従来の計算機において、プログ
ラム中の遅延分岐を示した図、第4図は従来のパイプラ
イン計算機において、遅延分岐の影響を示した図、第5
図はパイプライン計算機において、遅延分岐の後に割込
みが生じた場合の影響を示した図、第6図は本発明の一
実施例によるパイプラインプロセッサのブロック図であ
る。 出願人 横筒・ヒユーレット・パッカード株式会社代理
人 弁理士 長井用 次 男 IG  1 FIG 2 命々と更訂       A FIG 4 FIG 5 P Q RS 8CP

Claims (1)

    【特許請求の範囲】
  1. プログラムカウンタに接続されたプログラムカウンタキ
    ューを含み、前記プログラムカウンタ内の番地を前記プ
    ログラムカウンタキュー内に順次ロードすると共に、割
    込み発生時に前記ロード動作を禁止するようにしたパイ
    プラインプロセッサ。
JP14771786A 1985-06-28 1986-06-24 パイプラインプロセツサ Pending JPS623342A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US75035285A 1985-06-28 1985-06-28
US750352 1985-06-28

Publications (1)

Publication Number Publication Date
JPS623342A true JPS623342A (ja) 1987-01-09

Family

ID=25017522

Family Applications (1)

Application Number Title Priority Date Filing Date
JP14771786A Pending JPS623342A (ja) 1985-06-28 1986-06-24 パイプラインプロセツサ

Country Status (2)

Country Link
EP (1) EP0208181A1 (ja)
JP (1) JPS623342A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02124376U (ja) * 1989-03-23 1990-10-12
US5450585A (en) * 1991-05-15 1995-09-12 International Business Machines Corporation Compiler with delayed conditional branching

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4777587A (en) * 1985-08-30 1988-10-11 Advanced Micro Devices, Inc. System for processing single-cycle branch instruction in a pipeline having relative, absolute, indirect and trap addresses
US5235686A (en) * 1987-02-24 1993-08-10 Texas Instruments Incorporated Computer system having mixed macrocode and microcode
EP0279953B1 (en) * 1987-02-24 1994-11-02 Texas Instruments Incorporated Computer system having mixed macrocode and microcode instruction execution
US5155818A (en) * 1988-09-28 1992-10-13 Data General Corporation Unconditional wide branch instruction acceleration
JP2858140B2 (ja) * 1988-10-19 1999-02-17 アポロ・コンピューター・インコーポレーテッド パイプラインプロセッサ装置および方法
US5109495A (en) * 1989-02-03 1992-04-28 Digital Equipment Corp. Method and apparatus using a source operand list and a source operand pointer queue between the execution unit and the instruction decoding and operand processing units of a pipelined data processor
US5075844A (en) * 1989-05-24 1991-12-24 Tandem Computers Incorporated Paired instruction processor precise exception handling mechanism
JPH0437927A (ja) * 1990-06-01 1992-02-07 Sony Corp プロセッサの処理方法
DE19518112A1 (de) * 1995-05-17 1996-11-21 Siemens Ag Prozessor
JP2002189603A (ja) * 2000-12-19 2002-07-05 Fujitsu Ltd 計算機とその制御方法

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3162841A (en) * 1961-11-14 1964-12-22 Ibm Instruction counter system
EP0020931B1 (fr) * 1979-06-21 1984-10-10 International Business Machines Corporation Dispositif exécutant des opérations d'interruption de programme pour processeur du type à appel anticipé des instructions
US4399507A (en) * 1981-06-30 1983-08-16 Ibm Corporation Instruction address stack in the data memory of an instruction-pipelined processor
DE3369015D1 (en) * 1983-09-16 1987-02-12 Ibm Deutschland Arrangement in the command circuit of a pipe-line processor for instruction interrupt and report

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02124376U (ja) * 1989-03-23 1990-10-12
US5450585A (en) * 1991-05-15 1995-09-12 International Business Machines Corporation Compiler with delayed conditional branching

Also Published As

Publication number Publication date
EP0208181A1 (en) 1987-01-14

Similar Documents

Publication Publication Date Title
JP2796797B2 (ja) ディジタル命令プロセッサ制御装置によってインターラプトルーチンを処理する方法
US5235686A (en) Computer system having mixed macrocode and microcode
US4858104A (en) Preceding instruction address based branch prediction in a pipelined processor
EP0423906B1 (en) Method of and apparatus for nullifying an instruction
US5832259A (en) Apparatus for superscalar instruction pre-decoding using cached instruction lengths
KR100227276B1 (ko) 단일 사이클 마이크로 명령을 이용한 명령 스케줄링 방법 및 프로세서
KR100571322B1 (ko) 파이프라인식 프로세서에서의 예외 취급 방법, 장치 및시스템
US4970641A (en) Exception handling in a pipelined microprocessor
WO2009114289A1 (en) System and method of selectively committing a result of an executed instruction
KR20010030587A (ko) 데이터 처리장치
JPS623342A (ja) パイプラインプロセツサ
EP0201833A2 (en) Instruction processor
US20030154469A1 (en) Apparatus and method for improved execution of a software pipeline loop procedure in a digital signal processor
US5524222A (en) Microsequencer allowing a sequence of conditional jumps without requiring the insertion of NOP or other instructions
EP0279953A2 (en) Computer system having mixed macrocode and microcode instruction execution
US7020769B2 (en) Method and system for processing a loop of instructions
EP0324952B1 (en) Branching circuit for a pipelined processor
US6920547B2 (en) Register adjustment based on adjustment values determined at multiple stages within a pipeline of a processor
JPH11345121A (ja) プログラム制御ユニット用の命令取り出し装置および方法
JPH07182165A (ja) コミット条件付き命令の処理方法およびその装置
EP0211487A1 (en) Conditional operations in computers
US20050071830A1 (en) Method and system for processing a sequence of instructions
JP3100705B2 (ja) マイクロプロセッサ内の命令準備のための装置
US20040019772A1 (en) Microprocessor
JP3015565B2 (ja) 複数命令の並列実行機能を持つ情報処理装置