JPS58502115A - ブランチ予測コンピュ−タ - Google Patents

ブランチ予測コンピュ−タ

Info

Publication number
JPS58502115A
JPS58502115A JP83500289A JP50028983A JPS58502115A JP S58502115 A JPS58502115 A JP S58502115A JP 83500289 A JP83500289 A JP 83500289A JP 50028983 A JP50028983 A JP 50028983A JP S58502115 A JPS58502115 A JP S58502115A
Authority
JP
Japan
Prior art keywords
condition
instruction
conditional branch
state
encoding
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
JP83500289A
Other languages
English (en)
Other versions
JPS635777B2 (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 JPS58502115A publication Critical patent/JPS58502115A/ja
Publication of JPS635777B2 publication Critical patent/JPS635777B2/ja
Granted 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/30094Condition code generation, e.g. Carry, Zero flag
    • 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 or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • G06F9/3844Speculative instruction execution using dynamic branch prediction, e.g. using branch history tables
    • 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 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

【発明の詳細な説明】 ブランチ予測コンピュータ 及貝m この発明はディジタルコンピュータのアーキテクチャに関するものであり、より 特定的には、この発明はパイプライン態様で同時にいくつかの異なるインストラ クションで作動するディジタルコンピュータのアーキテクチャに関するものであ る。
この発明をより良く理解するために、パイプライン化したディジタルコンピュー タの基本モジュールを図解した第1図を参照する。この第1図のコンピュータは インストラクション先取モジュール(IPF)、実行モジュール(EX)、およ びメモリモジュール(M)を含む。さらに、実行モジュールはアドレスモジュー ル(A)、オペランドモジュール(○)、および計算モジュール(C)を含む。
モジュールIPF、A、OおよびCは同時にプログラムの異なるインストラクシ ョンで作動する。そのプログラムにおけるインストラクションのすべてはメモリ モジュールMにストアされる。モジュールIPFはメモリモジュールMからのイ ンストラクションを取出す働きをし、モジュールAはインストラクションにおい て要求されるオペランドのアドレスを形成する働きをし、モジュール0はモジュ ールAによって形成されるアドレスであるオペランドを取出し、かつモジュール CはモジュールOにより取出されたオペランドについて計算し、メモリモジュー ルMにその結果をストアする働きをする。
任意の1個のモジュールが上述した機能を行なった後、そのモジュールはその結 果を次のモジュールへ通す。その次のモジュールは、次いで、その上述の機能を 行ない、析しい結果を次のモジュールへ通す。このように、モジュールIPF、 A、○およびCはインストラクションが通過する“パイプライン″を形成し、か つバス10.11および12はそのモジュールがそれらの結果をパイプラインを iして次のモジュールへ通過させる手段を与える。
バス13.14.15および16はまた、モジュールLPF、A、OおよびCが それぞれ、それらの上述の機能を行ないながらメモリモジュールへ情報の種々の アイテムを読出しおよび/または書込む手段として提供される。たとえば、モジ ュールIPFはメモリからインストラクションを取出すためにバス13を用い、 モジュールAはオペランドアドレスを形成するために必要とされるメモリからイ ンデックスレジスタを取出すためにバス14を用い、モジコール0はバス15を 用いてモジュールAによって形成さ世るアドレスでメモリからオペランドを取出 し、かつモジュールCはバス16を用いて計算された結果をメモリへ戻してスト アする。
第2図は、第1図のコンピュータが9個のインストラクション■1ないしr9か らなるプログラムを実行するシーケンスをより詳細に示す。これらのインストラ クションばメモリMに存在するものとして第1図に図解される。インストラクシ ョン■1ないしI9は逐次的にメモリで互いに続き、かつインストラクション■ 5は条件付きブランチインストラクションである。それは条件を検査し、その条 件が真であればインストラクション11へ戻るように分岐、その条件が偽であれ ばインストラクション■6へ分岐する条件付きブランチインストラクションのた めの典型的なフォーマットは参照数字17で示すような、OPコード(OP)お よびブランチアドレス(BA)からなる。OPコードOPは条件付きブランチで あるものとしてインストラクションを識別しかつ検査されるべき条件を識別する 1およびOの1個の予め割当てられた組合わせである。たとえば、バロース84 800コンピュータの2進化10進22は等しい場合のブランチを特定し、それ に対し2進化10進25は等しくない場合のブランチを特定する。BAは特定し た条件が真であれば次に寅行されるべきイシ、ストラクションのメモリモジュー ルMにおけるアドレスである。
第2図のサイクル1の間、モジュールIPFはインストラクション11を取出す 。その後、サイクル2の間、モジュールAはインストラクション11によって必 要とされるオペランドのアドレスを形成し、他方、モジュールIPFは同時にイ ンストラクションI2を取出す。この動作シーケンスは条件付きブランチインス トラクション■5がモジ2図に示されるようなパイプライン化された態様で続く 。
条件付きブランチインストラクション■5を取出した後、モジュールIPFは次 のインストラクションとしてインストラクション11またはインストラクション ■6を取出すべきかどうかを決定する必要がある。もしインストラクションエ5 によって検査されるべき条件がそのインストラクションがモジュールIPFによ って取出された後すぐにテストする状態であればこれは何ら問題はない。しかし 、その条件が先行するインストラクションI4によって変化されることができ、 そのためその条件はインストラクションI4がパイプラインの最終モジュールC により行なわれるまで検査のためには利用できないであろう。これは、第2図に 示すように、サイクル7が終わるときに生じる。
実際の条件自体はちょうど1ビツトであってもよく、または全計算シーケンスの 結果であってもよい。たとえば、IBM360コンピュータおよびIBM370 コンピュータは“条件コ、−ド”と呼ばれるフリップ70ツブの組を含み、かつ コンピュータがテストし得る各可能な条件は条件コードのフリップ70ツブにス トアされる。条件コードのうちの1個が゛イコール”であり、かつコンピュータ が演算インストラクションを行なった直後に自動的に“1”にセットされまたは ′Onにリセットされる。
いくつかの先行技術におけるパイプライン化されたコンピュータにおいてモジュ ールIPFは常にブランチアドレスBAでインストラクションを取出し、続いて 条件付きブランチインストラクションを取出す。この動作が第2図のサイクル6 に示されており、インストラクション11はモジュールIPFによって取出され る。その後で、サイクルはそれぞれモジュールIPFによって取出される。次に 、サイクル8で、モジュールCはインストラクション15によって特定される条 件がインストラクション11.I2゜□ およびI3がサイクル6.7および8 の間モジュールIPFによって取出されるべきであったようなものであったかど うかを決定する。
インストラクションI6が代わりに取出されるべきであったならば、そのことが モジュールCによって、制御ライン18を介してモジュールIPF、Aおよび0 へ信号で知らされる。この信号に応答し、モジュールIPFはそれぞれサイクル 9.10および11の間インストラクション■6、I7およびI8を取出し、か つモジュールl\、OおよびCはインストラクションI’1.I2およびI3で 任意のざらに他の動作より先んする。
しかしながら、多数のサイクルは役に立1:Cない動作を行なうので多くのサイ クルが無駄であるという問題がこのシーケンスの動作にはある。上述の例におい て、モジュールrPFはサイクル6ないし8を無駄にする。典型的1こは、プロ グラムば数千の条件付きブランチインストラクションを含み、かつこれらの無駄 に°なったサイクルはコンピュータのスループットを意義深く減少させる。
これらの無駄になったサイクルの数を減少させる1つの方法は、コンピュータが テストし得る条件ごとに条件付き予測子ノリツブ70ツブを付加することである 。たとえば、1個の条件付き予測子フリップフロップは等しい場合のブランチ( branch −if −equal )インストラクションニよって検査され る“イコール″条件のために付は加えられることができ、かつそのフリップフロ ップはそれが検査された最後の数回にわたりその条件の実際の状態に基づき、“ イコール”条件のために真または偽の予測した状態を示すであろう。次に、条件 付きブランチインストラクションがモジュールIPFにより見つけられると、次 のインストラクションが、条件予測子フリップフロップにストアされ検査されて いる条件の予測した状態に基づき取出される。
しかしこの機構はなおも数多くのサイクルを無駄にする。
その理由は第3図を12寮することによってわかる。そこには、インストラクシ ョンIiOないしI23からなるプログラムが図解されており、インストラクシ ョン114および116は条件付きブランチインストラクションである。
インストラクション114からインストラクションI20へのブランチはあまり 頻繁に行なわれないものとし、それに対しインストラクション116から110 へのブランチは非常に頻繁に行なわれるものと想定する。これは非常に実用的な 可能性である。なぜならばインストラクション113はインストラクション1. 14が検査する例外条件のための比較を行なっており、かつインストラクション l]5はインストラクションループ(10−116が繰返されるべきであるかど うかを示すための゛′イコール′”条件をセットまたはリセットしているからで ある。
このように、条件付きブランチインストラクション■16による第3図のプログ ラムにおける無駄なサイクルを最小にするために、予測した゛イコール“条件は 真であるべきである。しかし、同時に、条件付きブランチインストラクション1 14による無駄なサイクルを最小にするために、予測したイコール条件は偽でな ければならない。このように、条件の1個の予測した状態が、プログラムにおけ る成る場所での条件付きブランチインストラクションにより生じる無駄なサイク ルを最小にする一方で、プログラムにおける他の場所での条件付きブランチイン ストラクション(より生じる無駄なサイクルを最大にするというジレンマひある 。
このジレンマは条件予測子フリップ70ツブのための1つの状態を選択すること によって、かつ次にその1個の予測した状態が常に正しい予測であるようにプロ グラムを再構成することによって表面上は避けられるかもしnない。
たとえば、条件予測子フリップフロップは、−イコール”条件が偽であり、゛ノ ットイコール″条件が真であるということを示すものと想定する。次に1条件付 きブランチインストラクション114は゛イコールでない場合のブランチ(br anch −1f−nOt −equal ) ”インストラクションに変えら れ、インストラクション[2O−I23が直接インストラクション114に続く メモリロケーションへ移動され、かつインストラクションI 15−f 19は 114から遠く隔たったいくつかのメモリロケーションへ、移動されるものと想 定する。これらの変電では、比較的高速なブランチは、インストラクション!1 4から遠く隔たったその新しいロケーションでインストラクション114からイ ンストラクション!15へ生じ、かつ前に説明したように、インストラクション 116からインストラクション110への比較的高速なブランチが生じる。
しかし、インストラクションのこのような構成は、プログラム(図示せず)の多 くの他の部分によって用いられるサブルーチンをインストラクションI 20−  I 23が形成するような状況に対してはメモリスペースを非常に浪費する。
その場合、それが実行速度を増大するために上述したように用いられるたびごと に120−I23コードを繰返す必要があろう。そして、長いまたはしばしば用 いられサブルーチンのためのコードの繰返しは米実用的なほどに多(のメモリを 用いる、さらに、そのようなタスクは非常に美大なもので時間がかかるので実行 時間を力大するために上述した態様で数千およびさらには数百万ものインストラ クションを含む予め存在するプログラムを再構成するというのは非大用的である 。
したがって、この発明の主たる目的は先行技術についての上述した無駄なサイク ルが実質的に最小化されるパイプライン化された形式で同時にプログラムのいく つかのインス・トラクションを実行するディジタルコンピュータを提供すること である。
明の簡単な概要 この目的および池の目的はプログラムとして構成される複数個のインストラクシ ョンをストアするためのメモリ手段を提供することによってこの発明に従って達 成され、それらのインストラクションのいくつかは条件付きブランチインストラ クションであり、各条件付きブランチインストラクションは条件を検査し、かつ その条件の状態に基づき1個のインストラクションまたは池のインストラクショ ン 。
へ分岐し、かつ各条―件付きブランチインストラクションはさらに、検査体れる べき条件の第1の状態を多重する少なくとも第1のエンコーディング、および検 査すべき条件の第2の状態を予測する第2のエンコーディングを少なくとも有す る。
区J」目1艶奏]LL この発明の種々の特徴および利点は添付図面を参照して詳細な説明において説明 される。
第1図は先行技術の任意のパイプライン化されたディジタルコンピュータの基本 的コンポーネントを示す。
第2図は第1図のパイプライン化されたディジタルコンピュータの動作を示す。
第3図は第1図のパイプライン化されたディジタルコンピュータにおいて無駄な サイクルを生じる1対の条件付きブランチインストラクションを有するプログラ ムを示す。
第4A図および第4B図はこの発明により構成されるパイプライン化されたディ ジタルコンピュータにおける無駄なサイクルを大幅に減少した2個の条件付きブ ランチインストラクションのエンコーディングを示す。
第5A図および第5B図はこの発明により構成されるパイプライン化されたディ ジタルコンピュータにおける無駄なサイクルを大幅に減少した2個の条件付きブ ランチインストラクションの他のエンコーディングを示す。
第6因はこの発明によりll!成されるディジタルコンピュータにより第5A図 および第5B図のインストラクションのエンコーディングが更新されるシーケン スを示す状態図である。
第7図はこの発明により構成されるディジタルコンピュータの1つの好ましい実 施例の詳細回路を示す。
@(D” @え1 この発明の好ましい一実!II!例を第4八図ないし第5B図を参照して詳細に 説明する。この実i[において、複数個のインストラクションはプログラムとし て構成されかつ条件付きブランチインストラクションはそのプログラムにおける いくつかの場所に存在する。これらのいくつかの場所における各条件付きブラン チインストラクションは1個の条件を検査する。しかし、各条件付きブランチイ ンストラクションはいくつかの可能なエンコーディングを有し、かつ各場所のエ ンコーディングはその場所のブランチインストラクションにより検査されるべき 条件の状態を予測する。
たとえば、検査されている1つの条件がイコール条件であるものと想定する。次 に、この発明によるイコールインストラクションについてのブランチの適当なエ ンコーディングが第4A図に示される。OPコードは16進A2またはB2のい ずれかとして与えられる。これらのエンコーディングの双方はイコール条件がテ ストされるべきであることを特定し、かつイコール条件が真であればアドレスB Aのインストラクションへ分岐が行なわれる。しかし、さらに、OPコードA2 は、イコール条件が検査されるときに真であろうということを予測するのに対し 、OPコードB2はイコール条件が検査されるときに偽であろうということを予 測する。これらのOPコードはイコール条件がそのロケーションで検査されると きに最も真または偽になりそうであるかどうかということに基づいて、ブランチ またはイコールインストラクションが生じる各ロケーションでA2またはB2の いずれかであるようにプログラムにおいて選択的に構成されている。たとえば、 第3図を参照するとインストラクション114によって検査されるイコール条件 はばとんど常に偽であると説明されており、そのためインストラクション114 のOPコードはB2としてエンコードされる。逆に、インストラクション116 によって検査されるイコール条件はほとんど常に真であると説明されたので、イ ンストラクション116のOPコードはA2としてエンコードされよう。
そこで、この発明によれば、インストラクション先取モジュールはインストラク ション114および116を取出すと、これらのインストラクションへエンコー ドされる予測された条件を検出し、それらの予測に基づいて次のインストラクシ ョンを取出す。これは、順次、第2図および第3図を参照して議論した非常に多 くの無駄なサイクルを除去する。なぜならば、この発明において、条例の予測し た状態はその条件を検査するインストラクションの場所に相関し、その条件自体 に単純に相関しない。
ノットイコール条件を検査する条件付きブランチインストラクションのための同 様なエンコーディングを第4B図に示す。そこでは、16進OPコード△5およ びB5はともに、ノットイコール条件が検査されるべきであり、ノットイコール 条件が真であればロケーションBAのインストラクションへ分岐すべきであると いうことを特定する。しかし、さらに、エンコーディングA5はノットイコール 条件が真であろうということを予測し、かつエンコーディングB5はノットイコ ール条件が偽であろうということを予測する。そのため、たとえば、第3図のプ ログラムのインストラクション114がノットイコール条件を検査し、その条件 の最も起こりそうな状態がそのロケーションで検査されるときに真であったなら ば、インストラクション■12はA5のエンコーディングを有するであろう。
この発明の他の実施例によれば、条件付きブランチインストラクションは検査さ れるべき条件の状態を予測するのみならずそれが過去において検査されたときに その条件の実際の状態の歴史を与えるために、プログラムのそれぞれのロケーシ ョンでさらにエンコードされる。このエンコーディングの2個の例を第5A図お よび第5B図に示す。
第5A図において、イコールのときのブランチ(branchon equal  ) インストラクションは4個のOPコードA2゜82、C2またはB2によ って特定される。エンコーディングA2およびC2はともに、イコール条件が真 であろうということを予測し、エンコーディングB2およびB2はともにイコー ル条件が偽であろうということを予測する。
しかし、さらに、エンコーディングA2およびB2は、イコール条件は、それが このインストラクションによつ−て検査された最後のときに真であった、という ことを伝える。
○PコードC2およびB2は、比較的には、このインストラクションがイコール 条件を検査したq%のときにそれが偽であったということを伝える。
イコールでないときのブランチ(branch On net eゴual ) インストラクションのための同様なエンコーディングが第5B図に与えられる。
そこでは、OPコードA5゜B5.C5およびB5は各々検査を特定しノットイ コール条件で分岐する。OPコードA5およびC5はノットイコール条件の真の 状態を予測し、かつOPコードB5および′D5はノットイコール条件の偽の状 態を予測する。さらに20PコードA5およびB5はノットイコール条件が、そ 札がこのインストラクションによって検査された最後のときに真であったという ことを伝え、かつOPコードC5およびB5はノットイコール条件がこのインス トラクションによって検査された最後のときに偽であったということを伝える。
第5A図および第5B図のインストラクションは検査された条件の最終状態をエ ンコードするので、そのエンコーディングはそのインストラクションが実行され る時間とどもに更新されなければならない。この更新は第6図の状(図によって 示されるシーケンスにおいて行なわれる。この図はPT/LT、PT/LF、P F/LF、およびPF/LTとして示される4個の可能な状態を含む。
状gPT/LTは、考察されているインストラクションが検査されるべき条件の ための真の状態を予潤し、かつそのインストラクションが実行された最後のとき に真の条件に遭遇したということを意味する。これは、イコールのどきのブラン チインストラクションのためのA2のエンコーディングおよびイコールでないと きのブランチインストラクションのためのA5のエンコーディングに対応する。
同様に、状態PF/LFは、考察されているブランチインストラクションは検査 されるべき条件のための偽の状態を予測し、かつそのインストラクションが実行 されている最後のときに偽の条件に遭遇したということを意味する。
プログラムの特定のロケーションにおけるインストラクションは状111PT/ LTに対応するエンコーディングを有するものと想定する。次に、そのインスト ラクションが実行されるとき、検査された条件の実際の状態が真であればそのエ ンコーディングは変わらないままである。しかしながら、検査された条件の実際 の状態が偽であれば、そのインストラクションのエンコーディングは状gPT/ LFに対応するように変えられる。
次にそこでエンコードされた状態PT/LFを有するインストラクションが実行 されるものと想定する。次に、検査された条件が真であれば、そのインストラク ションのエン−コーディングはPT/LFからPT/LTまで変えられる。しか し、検査された条件が偽であれば、そのインストラクションのエンコーディング はPT/LFからP F 、、/ LFへ変わる。
換言すれば、条件の予測した状態は、2mの間違った予測が行において生じるま で変えられない。そして、条件付きブランチインストラクションが第3図のイン ストラクション【16のように、プログラムループの底部で共通に配置されるの で、このことは望ましい。通常、ブランチは、何度も一方方向に行なわれ、かつ 1回だけ他方方向に行なわれる。しかし、ブランチがその他方方向に行なわれる とき、予測した条件は不変でなければならず、そのためループが入れられた次の ときに、共通な一方方向のブランチが再び予測されようa第4A図ないし第6図 のインストラクションを実行するパイプライン化したディジタルコンピュータの ハードウェアの1つの好ましい実施例が図解される第7図を次に参照する。その ハードウェアはインストラクション先取ステージfPF’ 、アドレスステージ A ’、オペランドステージO′および計算ステージC′を含む。これらのステ ージは第1図の先行技術のステージIPF、AO9およびCにより前に行なわれ たすべて機能を行なう。
しかし、それらはまたこれから説明するような態様で第4八図ないし第6図の条 件付きブランチインストラクションで作動するための付加的な回路を含む。
まず最初に、モジュールIPF’ はメモリバス30を介してメモリ(図示せず )のプログラムからインストラクションを取出す。導体30Aはインストラクシ ョンのアドレスをメモリへ送るための手段を与え、かつ導体30Bは読出摺合を メモリへ送るための手段を与える。
各々取出されたインストラクションは導体30C上でメモリから受けられ、かつ そこから、それはレジスタ31にストアされる。そのレジスタは導体32を介し て制御回路33へ送られるOPコード部分を右する。順次、回路33は条件付き ブランチインストラクションが、第4A図−第5B図の前述したOPコードをデ コードすることによってレジスタ31にあるときを検出する。
レジスタ31のインストラクションは、検査されるべき条件の真の状態を予測す る条件付きブランチインストラクションであれば、回路33はリード34で制御 信号PTを発生する。逆に1条件付きブランチインストラクションが検査される べ条件の偽の状態を予測するレジスタ31にあれば、回路33はリード35で他 の制御信号PFを発生する。
信@P丁およびPFはインストラクション取出回路36へ送られる。信号PTに 応答して、回路36はflFoバッファ37へ、レジスタ31のブランチインス トラクションのアドレスを転送する。そのアドレスはプログラムカウンタ38に あり、かつそのため回路36はマルチプレクサ40を介してF I FO37ヘ プログラムカウンタ38を通過させる導体39に信号を発生する。FiFO37 の実際のロードはリード線41の回路36によって発生される書込信号に応答し て行なOnる。
そ7)侵で、回路36はブランチアドレスB Aをレジスタ31からプログラム カウンタ38へ転送する。それは、プログラムカウンタをロードする状態44上 のロード信号を同時に発生しながら、マルチプレクサ43を介してアドレス8A を通過させるリード線42上の制御信号を発生させことによって行なわれる。次 に、プロゲラ・ムカウンタ38の新しい内容は後続のインストラクションを取出 すため1体30Aを介して送られる。
逆ニ、信@PFtfi真T、−t6れば、回路36ハF I FO37にブラン チアドレスBへをストアする。これは、マルチプレクサ40を介してアドレスB Aを通過させる導体3つに他の制置信号を送り、かつ同時に書込信号を導体41 でFIFOへ送ることによって達成される。その後で後続のインストラクション が、プログラムカウンタの古い内容をインクリメントすることによってかつその 結果を用いて導体30Aを介してそのメモリをアドレスすることによって取出さ れる。
各モジュールが特定のインストラクションでその動作を完了された後、第1図に 関して前述したように、それはその結果を次のモジュールへ通過させる。これを 発生するために、バス45.466よび47は種々のモジュール間で与えられる 。しかし、第7図の実施例はレジスタ31のインストラクションのアドレスを一 方のモジュールから他のモジュールへ、バス45.46および47上で従来から 通されている情報とともに、通過させるための手段としてのモジュール端にバス 42.48.49および50を含む。
レジスタ51はバス48上でそれが受けるアドレスを一時的に記憶するためモジ ュールA′に設りられる。同様にレジスタ52および53は先行するモジュール からそれらが受けるアドレスを一時的に記憶するためモジュール0′およびC′ にそれぞれ設しプられる。モジュールC′は以下のようにそのレジスタ53のア ドレスを利用する。
バス47上でモジュールC′へ通されるこれらの結果■よモジュールC′が動作 すべ♂インストラクションのOPコードを含む。このOPコードはレジスタ54 にストアされかつそこから、OPコードは制御回路55および56ならびにマル チプレクサ57へ送られる。回路55は、レジスタ54の、インストラクション が、そのインストラクションが実行された濃淡のときにその条件が真でめったと いうことを示すエンコーディングを備えた条件付きブランチインストラクション であれば導体58に信号LTを発生する。
ま1= 、回路55は、レジスタ54のインストラクションがそのインストラク ションが実行されICKk後のときに検査された条件が偽であったζいうことを 示ずエンコーディングを漏えた条件付ぎブランチインストラクションであれば、 導体59に信号L Fを発生する。
回路56は、レジスタ54の1′ンストラクシヨンが、検査された条件の状態が 真であるということを予測する条件付εブラ〉ディン;ζトラシションーζ・あ れば、導体60に信号PTを発生する。モしで、回路56は、レジスタ54のイ ンストラクションが、検査された条件の状態が偽であるということを予測する条 件付きブランチインストラクションであれば導体61に信号PFを発生する。
マルチプレクサ57は検査され得る条件のすべてを受け、かつそれは導体62に 対し検査されるべきその1個の条件をゲート処理することによってレジスタ54 のOPコードに応答する。導体58−62のすべての信号は、書込制御回路63 へ送られ、この回路63は第6図に関して前述した態様でレジスタ53に保持さ れるアドレスでそのインストラクションのエンコーディングを修正するように作 動する。
たとえば、リード1150−61上の信号は、条件付きブランチインストラクシ ョンがPF/LT状態に対応するエンコーディングでレジスタ52にあったとい うことを表示するものと想定する。さらに、リード線62上の信号は検査された 条件の現在の状態が真であることを示すものと想定する。その場合、書込制御回 路63はPT/LT状態に対応してリードl164Aにエンコーディングを発生 しかつ導体64Bを介して書込指令を送るように動作する。その情報は、それが 導体64Cのアドレスによって特定されるロケーションでメモリに書込まれる場 合に、そのメモリへバス64を介して送られる。
上の例では、検査されるべき条件の予測した状態と実際の状態とが同じであり、 そのため何のセット信号もパイプラインの先行するステージへ送られる必要がな かった。しかし、リード線62の信号が、検査されるべき条件の゛実際の状態が 偽であるということを示すものと想定する。この場合、書込制御回路63はPF /LF状態に対応するリード線64Aに信号を発生し、導体64Bに書込指令を 送り、かつ導体65にリセット信号を発生する。
そのリセット信号に応答し、モジュールIPF’の取出回路36はF I FO 37の出力をプログラムカウンタ38へ転送する。これは、マルチプレクサ43 を介してFIF037の出力を通過させる導体42に信号を発生させることによ って、かつ導体44上のプログラムカウンタのためのロード信号を同時に発生さ せることによって達成される。
その後、回路36は導体66上の信号をF、IFO37へ送り、かつプログラム カウンタの新しい内容が用いられてそのメモリからインストラクションを取出す 。
この発明の種々の好ましい実施例を詳細に説明した。しかしながら、さらに、多 くの変形および修正がこの発明の性質および精神から逸脱することなくこれらの 詳細に対してなされ得る。たとえば、この発明により構成される任意のバイブラ イン化されたディジタルコンピュータにおけるステージの数は重要でないという ことを理解すべきである。
すなわち、コンピュータは1個のインストラクションで動作するインストラクシ ョン先取ステージおよび他のインストラクションで同時に作動する実行ステージ を有する必要があるだけである。そして、実行ステージはモジュールA′、0′ およびC′のような他のステージへさらに区分化されてもよく区分化されなくて もよい。
また、第7図に説明された種々の回路コンポーネントの詳細なインプリメンテー ションも関係がないということを理解すべきである。たとえば、モジュールIP F’の取出回路36およびモジュールC′の書込II 御回路63は回路設計者 の最良で任意の数の方法で突環されてもよい。任意の半導体販売者により販売さ れる標準的な論理ゲートかまたは1個の半導体チップ上の1個のカスタム集積回 路がたとえば用いられてもよい。
さらに、検査されるべき条件のヒストリがないということを除きその条件の予測 した状態のみが条件付きブランチインストラクションへエンコードされれば、第 7図の回路のいくつかが除去されることができるということを理解す ′べきで ある。たとえば、条件付きブランチインストラクションが第4A図および第4B 図についてエンコードされれば、レジスタ51−53.制御回路55.およびt IIJ御回路55に応答する1込制御回路63の部分は除去されることができる 。
さらに、検査されるべき条件の予測した状態および/またはその条件の最終状態 は数多くの異なる方法で条件付きブランチインストラクションへエンコードされ ることができるということが理解されるべきである。特に、その情報をインスト ラクションのOPコードへエンコードする必要がない。代わりに、その情報はブ ランチアドレスBAの任意の使用しないビット組合わせへエンコードされること ができる。たとえば、ブランチアドレスが2進化10進であれば、そのアドレス の用いられない16進組合わせが用いられてブランチ−予測およびブランチヒス トリ情報をエンコードすることができる。
さらに他の代替例として、この発明はちょうど′1個の条件付きブランチインス トラクションを含むプログラムを実行する任意のディジタル装置へ併用されても よいということを理解すべきである。たとえば、1個の条件付きブランチインス トラクションは、レジスタの内容を連続的に更新し、次いでそのレジスタの内容 を検査するプログラムループにあるものと想定する。さらに、レジスタへ進む更 新された情報が、検査条件が常にそのループを介して最初の100回の間常に偽 であり、検査条件が常に負のループを介して次の100回の間真であるようなも のと想定する。明らかに、第6図に関して説明したこの発明の実施例はそのプロ グラムループのディジタル装置の実行を意義深く改良する。
したがって、多くの変形および修正がこの発明の性質および範囲を逸脱すること な(上述した詳細に対してなされ得るので、この発明は前記詳細に限られるもの ではなく、添付の請求の範囲によって規定されるということを理解すべきである 。
FIG、3゜ FIG、4A、 FIG、4B。
FIG、5A、 FIG、5B。
FIC,7

Claims (1)

    【特許請求の範囲】
  1. 1. プログラムとして構成される複数個のインストラクションをストアするた めのメモリ手段を含み、前記プログパイプライン化された態様で同時に前記プロ グラムの異なるインストラクションをそれぞれ取出しかつ実行するためのインス トラクション先取手段およびインストラクション実行手段を備え、 前記ロケーションの各々の前記条件付きブランチインストラクションはさらに検 査されるべき条件の状態を予測する多数のエンコーディングを有し、かつ前記先 取手段が前記条件付きブランチインストラクションの1個を取出したときを検出 するための、かつ前記取出された条件付きブランチインストラクションにおいて 検査されかつエンコードされるべき条件の予測した状態に基づき次のインストラ クションを取出すための制御手段をさらに備えた、改良されたディジタル装置。 2、 そのインストラクションが前記実行手段によって前記パイプラインにおい て実行されるときの前記条件の実際の状態とは異なる前記条件の状態を予測する エンコーディングを有するそのインストラクションに応答し、予め定められる形 式でそのメモリロケーションの前記取出された条件付きブランチインストラクシ ョンの前記エンコーディングを変化させるための書込手段をさらに備えた、請求 の範囲第1項記載の装置。 3、 前記条件の前記予測した状態が取出された条件付きブランチインストラク ションの前の実行の間に前記条件の実際の状態といかに比較されたかのヒストリ を与える前記取出された条件付きブランチインストラクションの他のエンコーデ ィングを検出するための手段をさらに備えた、請求の範囲第1項記載の装置。 4、 1記条件の予測した状態が、前記取出された条件付きブランチインストラ クションが前記実行手段によって実行、された最後のときに前記他の条件の実際 の状態とは異なっていたということを検出する前記検出手段に応答して、そのメ モリロケーションの予め定められる形式で前記取出された条件付きブランチイン ストラクションのエンコーディングを変化させるための書込手段をさらに備えた 、請求の範囲第3項記載の装置。 5、 前記条件付きブランチインストラクションはオペレーションコードを有し 、かつ前記多数のエンコーディングは前記オペレーションコードのエンコーディ ングである、請求の範囲第1項記載の装置。 6、 前記条件付きブランチインストラクションの前記オペレーションコードの 前記エンコーディングは2進エンコーデイングである、請求の範囲第5項記載の 装置。 7、 前記装置はディジタルコンピュータである、請求の範囲第1項記載の装置 。 8、 プログラムとして構成される複数個のインストラクションをストアするた めのメモリ手段を備え、前記プログラムにおける成るロケーションの条件付きブ ランチインストラクションは検査されるべき条件を特定する第1のエンコーディ ングを有し、かつ前記条件の第1の状態を予測し、 前記プログラムにおける他のロケーションにおける他の条件付きブランチインス トラクションは検査されるべき前記同じ条件を特定する第2のエンコーディング を有し、かつ前記条件の第2の状態を予測し、かつ前記ロケーションの任意のも のから前記条件付きブランチインストラクションを取出すための、かつその後、 前記取出()た条件付きブランチインストラクションにおいてエンコードされる 前記条件の前記予測した状態に基づき前記プログラムから次のインストラクショ ンを取出すための手段をさらに備えた、プログラマブルディジタル装置。 9、 プログラムとして構成される複数個のインストラクションをストアするた めのメモリ手段を備え、前記インストラクションの少なくとも1つは検査される べき条件を特定する条件付きブランチインストラクションであり、 前記少なくとも1個の条件付きブランチインストラクションは前記条件の第1の 状態を予測する第1のエンコーディングを有しかつ条件の第2の状態を予測する 第2のエンコーディングを少なくとも有する、プログラムされたディジタル装置 。
JP83500289A 1981-12-03 1982-12-01 ブランチ予測コンピュ−タ Granted JPS58502115A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US326837SEEDE 1981-12-03
US06/326,837 US4435756A (en) 1981-12-03 1981-12-03 Branch predicting computer
PCT/US1982/001693 WO1983002018A1 (en) 1981-12-03 1982-12-01 Branch predicting computer

Publications (2)

Publication Number Publication Date
JPS58502115A true JPS58502115A (ja) 1983-12-08
JPS635777B2 JPS635777B2 (ja) 1988-02-05

Family

ID=23273925

Family Applications (1)

Application Number Title Priority Date Filing Date
JP83500289A Granted JPS58502115A (ja) 1981-12-03 1982-12-01 ブランチ予測コンピュ−タ

Country Status (5)

Country Link
US (1) US4435756A (ja)
EP (1) EP0081357B1 (ja)
JP (1) JPS58502115A (ja)
DE (1) DE3264324D1 (ja)
WO (1) WO1983002018A1 (ja)

Families Citing this family (57)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5742099A (en) * 1980-08-27 1982-03-09 Sharp Kk Voice informing device
US4604691A (en) * 1982-09-07 1986-08-05 Nippon Electric Co., Ltd. Data processing system having branch instruction prefetching performance
EP0109655B1 (en) * 1982-11-17 1991-07-24 Nec Corporation Instruction prefetching device with prediction of a branch destination address
EP0150177A1 (en) * 1983-07-11 1985-08-07 Prime Computer, Inc. Data processing system
JPS60107141A (ja) * 1983-11-16 1985-06-12 Fujitsu Ltd プランチ制御方式
US4764861A (en) * 1984-02-08 1988-08-16 Nec Corporation Instruction fpefetching device with prediction of a branch destination for each branch count instruction
US4868735A (en) * 1984-05-08 1989-09-19 Advanced Micro Devices, Inc. Interruptible structured microprogrammed sixteen-bit address sequence controller
US4742451A (en) * 1984-05-21 1988-05-03 Digital Equipment Corporation Instruction prefetch system for conditional branch instruction for central processor unit
JPH0769818B2 (ja) * 1984-10-31 1995-07-31 株式会社日立製作所 デ−タ処理装置
US4775927A (en) * 1984-10-31 1988-10-04 International Business Machines Corporation Processor including fetch operation for branch instruction with control tag
JPH0789319B2 (ja) * 1985-04-22 1995-09-27 株式会社日立製作所 デ−タ処理装置における先行制御装置
JPH0752390B2 (ja) * 1985-05-07 1995-06-05 株式会社日立製作所 命令処理装置
JPS6341932A (ja) * 1985-08-22 1988-02-23 Nec Corp 分岐命令処理装置
JPH0743648B2 (ja) * 1985-11-15 1995-05-15 株式会社日立製作所 情報処理装置
ATE57582T1 (de) 1986-03-21 1990-11-15 Siemens Ag Anordnung zur bearbeitung von sprungbefehlen innach dem fliessbandprinzip arbeitenden datenverarbeitungsanlagen.
US5440704A (en) * 1986-08-26 1995-08-08 Mitsubishi Denki Kabushiki Kaisha Data processor having branch predicting function
US4942520A (en) * 1987-07-31 1990-07-17 Prime Computer, Inc. Method and apparatus for indexing, accessing and updating a memory
US4894772A (en) * 1987-07-31 1990-01-16 Prime Computer, Inc. Method and apparatus for qualifying branch cache entries
US4860197A (en) * 1987-07-31 1989-08-22 Prime Computer, Inc. Branch cache system with instruction boundary determination independent of parcel boundary
US4870575A (en) * 1987-10-01 1989-09-26 Itt Corporation System integrated fault-tree analysis methods (SIFTAN)
US5197136A (en) * 1987-11-12 1993-03-23 Matsushita Electric Industrial Co., Ltd. Processing system for branch instruction
US4943908A (en) * 1987-12-02 1990-07-24 International Business Machines Corporation Multiple branch analyzer for prefetching cache lines
GB8728493D0 (en) * 1987-12-05 1988-01-13 Int Computers Ltd Jump prediction
JP2723238B2 (ja) * 1988-01-18 1998-03-09 株式会社東芝 情報処理装置
JPH081602B2 (ja) * 1988-02-23 1996-01-10 三菱電機株式会社 データ処理装置
US4974155A (en) * 1988-08-15 1990-11-27 Evans & Sutherland Computer Corp. Variable delay branch system
DE68928937T2 (de) * 1988-12-27 1999-07-01 Fujitsu Ltd Steuerungssystem und -verfahren zum Instruction Fetch
US5349671A (en) * 1989-03-23 1994-09-20 Matsushita Electric Industrial Co., Ltd. Microprocessor system generating instruction fetch addresses at high speed
US5203002A (en) * 1989-12-27 1993-04-13 Wetzel Glen F System with a multiport memory and N processing units for concurrently/individually executing 2N-multi-instruction-words at first/second transitions of a single clock cycle
US5623650A (en) * 1989-12-29 1997-04-22 Cray Research, Inc. Method of processing a sequence of conditional vector IF statements
US5197130A (en) * 1989-12-29 1993-03-23 Supercomputer Systems Limited Partnership Cluster architecture for a highly parallel scalar/vector multiprocessor system
US5283873A (en) * 1990-06-29 1994-02-01 Digital Equipment Corporation Next line prediction apparatus for a pipelined computed system
JPH0628184A (ja) * 1991-08-26 1994-02-04 Internatl Business Mach Corp <Ibm> ブランチ予測方法及びブランチプロセッサ
US5313634A (en) * 1992-07-28 1994-05-17 International Business Machines Corporation Computer system branch prediction of subroutine returns
EP0586057B1 (en) 1992-08-31 2000-03-01 Sun Microsystems, Inc. Rapid instruction (pre)fetching and dispatching using prior (pre)fetch predictive annotations
JP2744882B2 (ja) * 1993-01-15 1998-04-28 インターナショナル・ビジネス・マシーンズ・コーポレイション キューにより命令の実行を制御する装置及び方法
IE940855A1 (en) * 1993-12-20 1995-06-28 Motorola Inc Data processor with speculative instruction fetching and¹method of operation
US5887174A (en) * 1996-06-18 1999-03-23 International Business Machines Corporation System, method, and program product for instruction scheduling in the presence of hardware lookahead accomplished by the rescheduling of idle slots
CN1153133C (zh) * 1996-12-09 2004-06-09 松下电器产业株式会社 采用小规模硬件作高命中率分支预测的信息处理装置
US5838962A (en) * 1997-04-09 1998-11-17 Hewlett-Packard Company Interrupt driven dynamic adjustment of branch predictions
US6044222A (en) * 1997-06-23 2000-03-28 International Business Machines Corporation System, method, and program product for loop instruction scheduling hardware lookahead
US6341348B1 (en) 1998-12-03 2002-01-22 Sun Microsystems, Inc. Software branch prediction filtering for a microprocessor
US6629238B1 (en) * 1999-12-29 2003-09-30 Intel Corporation Predicate controlled software pipelined loop processing with prediction of predicate writing and value prediction for use in subsequent iteration
US6636960B1 (en) * 2000-02-16 2003-10-21 Hewlett-Packard Development Company, L.P. Method and apparatus for resteering failing speculation check instructions
US6980940B1 (en) 2000-02-22 2005-12-27 Schlumberger Technology Corp. Intergrated reservoir optimization
US6678820B1 (en) 2000-03-30 2004-01-13 International Business Machines Corporation Processor and method for separately predicting conditional branches dependent on lock acquisition
US6766442B1 (en) * 2000-03-30 2004-07-20 International Business Machines Corporation Processor and method that predict condition register-dependent conditional branch instructions utilizing a potentially stale condition register value
US6658558B1 (en) 2000-03-30 2003-12-02 International Business Machines Corporation Branch prediction circuit selector with instruction context related condition type determining
TW477954B (en) * 2000-12-05 2002-03-01 Faraday Tech Corp Memory data accessing architecture and method for a processor
US8301871B2 (en) * 2006-06-08 2012-10-30 International Business Machines Corporation Predicated issue for conditional branch instructions
US7487340B2 (en) * 2006-06-08 2009-02-03 International Business Machines Corporation Local and global branch prediction information storage
US7891818B2 (en) 2006-12-12 2011-02-22 Evans & Sutherland Computer Corporation System and method for aligning RGB light in a single modulator projector
EP2063355B1 (en) * 2007-11-22 2017-09-20 Sony Interactive Entertainment Europe Limited Branch prediction method
US8358317B2 (en) 2008-05-23 2013-01-22 Evans & Sutherland Computer Corporation System and method for displaying a planar image on a curved surface
US8702248B1 (en) 2008-06-11 2014-04-22 Evans & Sutherland Computer Corporation Projection method for reducing interpixel gaps on a viewing surface
US8077378B1 (en) 2008-11-12 2011-12-13 Evans & Sutherland Computer Corporation Calibration system and method for light modulation device
US9641826B1 (en) 2011-10-06 2017-05-02 Evans & Sutherland Computer Corporation System and method for displaying distant 3-D stereo on a dome surface

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5222841A (en) * 1975-08-15 1977-02-21 Hitachi Ltd Micro program control method
JPS5374857A (en) * 1976-12-15 1978-07-03 Fujitsu Ltd Data processor
JPS53126837A (en) * 1977-04-13 1978-11-06 Hitachi Ltd Order control unit
JPS5566028A (en) * 1978-11-10 1980-05-19 Nec Corp Information processing unit

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4124893A (en) * 1976-10-18 1978-11-07 Honeywell Information Systems Inc. Microword address branching bit arrangement
US4179737A (en) * 1977-12-23 1979-12-18 Burroughs Corporation Means and methods for providing greater speed and flexibility of microinstruction sequencing

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5222841A (en) * 1975-08-15 1977-02-21 Hitachi Ltd Micro program control method
JPS5374857A (en) * 1976-12-15 1978-07-03 Fujitsu Ltd Data processor
JPS53126837A (en) * 1977-04-13 1978-11-06 Hitachi Ltd Order control unit
JPS5566028A (en) * 1978-11-10 1980-05-19 Nec Corp Information processing unit

Also Published As

Publication number Publication date
WO1983002018A1 (en) 1983-06-09
JPS635777B2 (ja) 1988-02-05
DE3264324D1 (en) 1985-07-25
EP0081357B1 (en) 1985-06-19
EP0081357A1 (en) 1983-06-15
US4435756A (en) 1984-03-06

Similar Documents

Publication Publication Date Title
JPS58502115A (ja) ブランチ予測コンピュ−タ
US4439828A (en) Instruction substitution mechanism in an instruction handling unit of a data processing system
KR100242617B1 (ko) 파이프 라인 컴퓨터 시스템
US8078850B2 (en) Branch prediction technique using instruction for resetting result table pointer
JP2744890B2 (ja) ブランチ予測式データ処理装置および動作方法
US4305124A (en) Pipelined computer
JPH06195322A (ja) 汎用型ニューロコンピュータとして用いられる情報処理装置
JPS6114535B2 (ja)
EP0405495A2 (en) Instruction unit logic management apparatus included in a pipelined processing unit
US7054802B2 (en) Hardware-assisted design verification system using a packet-based protocol logic synthesized for efficient data loading and unloading
US5416911A (en) Performance enhancement for load multiple register instruction
US20170371811A1 (en) Systems and devices for accessing a state machine
US20210342150A1 (en) Processor providing intelligent management of values buffered in overlaid architected and non-architected register files
JPH0332818B2 (ja)
EP0592404A1 (en) Apparatus and method for providing a stall cache
US5907693A (en) Autonomously cycling data processing architecture
JPH04233040A (ja) コンピュータプログラム実行シミュレーションシステム
US4028670A (en) Fetch instruction for operand address calculation
US4635188A (en) Means for fast instruction decoding for a computer
JPH05143323A (ja) タイプ1ダイアデイツク命令を実行する方法及び装置
US20050154859A1 (en) Branch prediction in a data processing apparatus
US7882336B2 (en) Employing a buffer to facilitate instruction execution
US6119224A (en) Fast shift amount decode for VMX shift and vperm instructions
EP1177499A1 (en) Processor and method of executing instructions from several instruction sources
AU626264B2 (en) Apparatus and method for data induced condition signaling