JPH02297630A - デイジタル・データ処理システム - Google Patents

デイジタル・データ処理システム

Info

Publication number
JPH02297630A
JPH02297630A JP2105474A JP10547490A JPH02297630A JP H02297630 A JPH02297630 A JP H02297630A JP 2105474 A JP2105474 A JP 2105474A JP 10547490 A JP10547490 A JP 10547490A JP H02297630 A JPH02297630 A JP H02297630A
Authority
JP
Japan
Prior art keywords
group
instruction
processor
instructions
register
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
JP2105474A
Other languages
English (en)
Other versions
JP3020212B2 (ja
Inventor
Philip G Emma
フィリップ・ジョージ・エマ
Joshua W Knight
ジョシュア・ウィルソン・ナイト
James H Pomerene
ジェームス・ハーバート・ポメレン
Rudolph N Rechtschaffen
ルドルフ・ノーザン・リチェスチャフェン
Frank J Sparacio
フランク・ジョン・スパッシオ
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 JPH02297630A publication Critical patent/JPH02297630A/ja
Application granted granted Critical
Publication of JP3020212B2 publication Critical patent/JP3020212B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related 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 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/3853Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution of compound instructions
    • 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/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units

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、産業上の利用分野 本発明は、一般にプログラム記憶式ディジタル・コンピ
ュータに関し、さらに詳しくは、単一の命令シーケンス
を2つまたはそれ以上のサブシーケンスに分割して、そ
れらのサブシーケンスを並列に処理することできるコン
ピュータに関する。
B、従来の技術 ディジタル・コンピュータにおけるより速い演算速度を
追求して、様々な種類の並列処理が開発されてきた。ビ
ットシリアル・コンピュータはいかなる並列処理もない
プロセッサである。このようなプロセッサは、8ビツト
・バイトを取り扱うために8ステツプを要し、一般に、
nビット拳ワードを取り扱うためにnステップを要する
。最初のコンピュータのあるものはビットシリアル機で
あった。開発された最初の形式の並列処理は、ステップ
あたり2ビツト以上を処理するものであった。
例えば、インターナシロナル・ビジネスφマシーンズ・
コーボレーシ日ン社(IBM)製のシステム/3θOフ
アミリーのプロセッサは、ステップあたり処理されるビ
ット数を変えることによって、ある範囲の速度をもたら
した。これらのプロセッサは、ステップあたり最低8.
ビット、最高64ビツトを処理した。この種の並列処理
は最近、マイクロプロセッサの設計における重要なファ
クタとなっている。
プロセッサの速度を向上させるために使用される別の種
類の並列処理では、現命令の実行中に、次に実行する後
続命令をメモリから読み取る(取り出す)が、命令の取
り出しは常にその実行より前に行なわれるので、これら
の操作を並列に実行することによって必ずいくらか速度
が増加する。
この種の並列処理から、直接、第3の形式の並列処理が
導かれる。第3の並列処理形式では、命令の実行をいく
つかのサブステップ、例えば命令復号、アドレス生成、
キャッシュ・アクセス、及びアルゴリズム実行に分割す
る。これらのサブステップの各々がプロセッサ中の別々
のハードウェアを使用し、このため各サブステップが、
先行命令及び後続命令の他の部分と並行して処理できる
最適の性能を得るには、パイプライン・プロセッサが同
時にいくつかの命令シーケンスを実行し、1つの命令の
命令復号動作を第2の命令のアドレス生成動作及び第3
の命令のアルゴリズム実行動作とオーバーラツプさせる
ことが望ましい。命令シーケンスが、取られる分岐命令
を含む時は、シーケンス中の分岐命令に続く命令は実行
されないことになる。この場合、プロセッサは、これら
の命令の実行による部分結果を廃棄して、取られた分岐
命令の目的アドレスからパイプラインを再開しなければ
ならない。
取られた分岐に遭遇した時に部分結果を廃棄することを
回避するために、「挙動の傾向」(persisten
ce of behavior)  と呼ぶ)観察で認
められる特性を利用するパイプライン・プロセッサもあ
る。挙動の傾向とは、プロセッサが事前に実行された命
令を繰り返し、以前にアクセスされたデータに再度アク
セスする傾向があることを記述するために使用される用
語である。この反復挙動はよく見られるもので、多くの
場合に観察されている。この挙動がいかに発生するかの
1例として、オペレーティング・システムの制御下で多
重プロセッサ環境で動作する大型プロセッサを考えてみ
る。この環境では、プロセッサは、その時間の多くをオ
ペレーティング・システムからのモジュールの実行に費
やす。例えば、タスク指名プログラム・七ジェールとロ
ック・マネジャ・モジュールが非常に頻繁に使用される
。これらのモジュールは、各アプリケージジンごとに個
別にプログラミングするには実用的でないタスクを、オ
ペレーティング・システム中で実施するものである。明
らかに、これらのモジュール及びオペレーティング・シ
ステム中の類似のモジュールは、何度も繰り返して使用
される。
挙動の傾向を利用してプロセッサの性能を向上させる方
法が、少なくとも2つある。1つはキャッシュ・メモリ
で、他の1つは分岐活動記録テーブル(BHT)である
。キャッシュ・メモリは、プロセッサが最近アクセスし
た命令やデータをそれらの命令やデータのかなりのもの
が近い将来に再び使用されると予想して記憶するもので
ある。非常に頻繁に起こることであるが、再使用される
場合、キャッシユは要求された命令やデータを極めてじ
ん速に供給することができる。
BITは、プロセッサが近い将来に多くの同じ分岐命令
に遭遇し、かつ分岐命令の実行結果は同じであると予想
して、プロセッサが遭遇した分岐命令についての情報を
記憶するものである。記憶された分岐命令を使用すると
、取られた分岐命令によるプログラムの流れの力が変化
するためにパイプラインを再開する必要が生じることに
よる、プロセッサ遅延が減少する。BHTのエントリが
有効である限り、BHTを使用するパイプライン・プロ
セッサは、多くの分岐命令を中断せずに実行することが
できる。
第4の形式の並列処理は、各サイクル中に2つ以上の連
続する命令を復号することである。この形式の並列処理
では、パイプライン・プロセッサの考察で先に参照した
各サブステップが1マシン・サイクル中に実行できるも
のと想定する。これは、高性能プロセッサに共通の能力
である。この形式の並列処理は、2組以上の命令復号ハ
ードウエアを必要とし、また2組以上のアドレス生成ハ
ードウェア、キャッシュ・アクセス・ハードウェア、及
びアルゴリズム実行ハードウェアを必要とすることがあ
る。
上に述べた各種の並列処理はそれぞれ別個のもので、そ
れぞれ他の種類のものと組み合わせて使用できることに
留意されたい。実際、この4種の並列処理はすべて、多
くの高性能プロセッサで使用され、それぞれがそれ自体
の性能向上に貢献している。
米国特許第3559183号明細書は、BITを使って
実行すべき命令を選択する、パイプライン・プロセッサ
を記載している。BITの使用は、個々に考えてほとん
どの分岐が一貫して取られるか、取られないかのいずれ
かであり、取られる場合は、−貫した目的アドレスを存
するという知見に基づくものである。BITは取られる
分岐のテーブルである。テーブル内の各エントリは、取
られる分岐のアドレスを含み、その後にその目的アドレ
スが続く。このテーブルはハードウェア構成であり、し
たがって典型的には1024ないし4096エントリの
固定サイズを有する。取られる分岐に遭遇した時に、そ
のエントリが作成される。
BHTが横杆になった時、新しいエントリを作成するに
は、既存エントリを除去する必要がある。
これは、例えば、キャッシュ・メモリの場合と同様に、
LRUベースでエントリを評価することによって実現す
ることができる。
米国特許第4107773号明細書は、2つの独立セク
シピンと演算処理ハードウェアを有するメモリを採用し
たプロセッサを記載しており、このハードウェアは、演
算用に1つのセクションを用い、外部メモリとの間のデ
ータ転送用に他方のセクションを使用して、並列操作を
行なう。この特許に記載された装置は、上記の第3の形
式の並列処理の例である。
米国特許第4295193号明細書は、2つ以上の命令
を同時に実行するための、プロセッサの設計に関するも
のである。実行すべき命令が、コンパイル中に、それぞ
れせいぜい例えばn個の命令を有するグループに分けら
れる。各グループは、所定数のデータ取出し及び命令取
出しを存することができ、このグループが1つの分岐を
含む場合には、それは最後の命令でなければならない。
グループ内の各命令は、別々の命令実行ノλ−ドウエア
を使用する。これは上記の第4の形式の並列処理の例で
ある。
米国特許第4879141号明細書は、パイプライン・
プロセッサ用の最適化されたBHTに関するものである
。この参照文数に記載されたBITは、プロセッサが近
い将来に遭遇する可能性のある少数の分岐用のエントリ
を含む活動領域、及び他のすべてのエントリを含むバッ
クアップ領域を含む。エントリは、プロセッサがそれに
遭遇する前に、活動領域に持ち込まれる。エントリは活
動領域から取り除かれる時、バックアップ領域に入れら
れる。活動領域はそのサイズが比較的小さいため、速度
が大きくなるように設計し、かつプロセッサ・ハードウ
ェア内の最適の位置に置くことができる。
米国特許第4786566号明細書は、2つの実行装置
を使用して、2つの命令を並列して処理する縮小命令セ
ット・コンピュータ(RISC)の設計に関するもので
ある。一方の実行装置はどの命令を処理することもでき
、他方の実行装置は、第1装置内のハードウェアの1サ
ブセツトのみを含み、従っである形式の命令のみの処理
に限られる。
C0発明が解決しようとする課題 本発明の1つの目的は、ディジタル・データ・プロセッ
サの演算速度を高めるための別の形式の並列処理を利用
する技術を提供することである。
本発明の別の目的は、挙動の持続性特性を利用して、既
知のパイプライン・プロセッサよりも速い速度で命令を
実行する、改良されたパイプライン・プロセッサ設計を
提供することである。
00課題を解決するための手段 本発明によれば、前記の目的は、多数のパイプライン処
理段、ある区切り規則に従って命令を順次命令のグルー
プに分割するという、プロセッサで実行すべき命令のシ
ーケンスを提供する手段、テーブルにグループを識別す
る情報を記憶する装置、及び前記テーブルからの異なる
それぞれのグループを定義する情報を、グループを構成
する命令の同時実行のため、多数のバイブライン処理段
の当該の各段に送るための装置を設けることによって達
成される。
E、実施例 次に第1図を参照して、多重シーケンス・プロセッサの
実施例について概説する。本質的には、本発明の下記の
実施例は、単一の従来型プロセッサで実行できる単一命
令シーケンスを、ある区切り規則に従って複数のサブシ
ーケンスに分割するものである。下記の本発明の第1の
実施例では、選択された規則は、単一のシーケンスを、
「分岐グループ」と呼ばれるサブシーケンスのグループ
に分割するものである。分岐グループは、取られた分岐
命令の直後の命令から次に取られる分岐命令までの、単
一のプロセッサで実行される命令サブシーケンスを含む
。これらのシーケンスの区切りは、取られた分岐命令で
ある。これらのグループは、そのプロセッサに関連する
BHTを参照して定義できる。
本発明の第2の実施例では、単一シーケンスをサブシー
ケンスに分割するため別の規則が使用される。この規則
によれば、グループすなわち命令サブシーケンスは、プ
ロセッサ・アーキテクチャ中の汎用レジスタを修正する
命令によって区切られる。これらのレジスタは、多重シ
ーケンス・プロセッサ・システムの多重プロセッサに共
通である。
第1図に示すシステムの中心要素は、主バイブライン・
プロセッサ124と補助パイプライン・プロセッサ12
Bである。バイブライン・プロセッサ124.12Bは
、例えば、IBM製の3033型プロセツサで使用され
るタイプのものでよい。
これらのプロセッサはそれぞれ、命令バッファ116か
ら実行すべき命令を獲得する。命令バッファ116は、
キャッシュ・メモリ112から命令を得る。キャッジ:
Li 12はまた、主バイブライン・プロセッサと補助
バイブライン・プロセッサにオペランドを供給する。処
理すべき命令グループは、BHTIIOの制御下で選択
される。先に引用した米国特許第46179141号明
細書に詳しく記述されているように、BHTは、遭遇す
る可能性の大きい取られた各分岐ごとに、1対のアドレ
ス値BAとTAを供給する。アドレス値BAは、取られ
た分岐命令のアドレスであり、アドレス値TAは分岐目
標、すなわち取られた分岐命令が制御を渡す先の命令の
アドレスである。後述する本発明の実施例では、BAア
ドレス値は1つのグループの最後の命令を識別し、TA
アドレス値は次に続くグループの最初の命令を識別する
アドレス値の対BAとTAは、グループ待ち行列118
に入れられる。グループ待ち行列118は、主バイブラ
イン及び補助パイプラインにタスク指名される次のいく
つかの命令グループを識別する。アドレス値の対BAと
TAは、グループ待ち行列118に入れられると同時に
、キャッジ、・メモリ112に入れられ、従って様々な
グループの命令とオペランドをメモリ114から取り出
すことができ、直ちにバイブライン・プロセッサ124
.126で利用可能となる。本発明のこの実施例で使用
されるタイプのBITと命令バッファ、並びに命令とデ
ータの事前取出しのためのそれらの使用については、先
に引用した米国特許第4679141号明細書に記載さ
れており、ここでは詳述しない。
グループ・ディスパッチャ120は、グループ選択回路
122に応答して、グループ待ち行列からの1対の値を
主バイブライン124に入れ、次に続く1対の値を補助
パイプライン126に供給する。
グループ選択回路122は、主バイブライン124が1
つの命令グループを実行し、補助パイプライン126が
次に続く命令グループを実行するように、アドレス値の
対を選択する。グループを定義するアドレス値の対は、
グループ選択回路122の制御下で、グループ・ディス
パッチャ120によって主バイブライン・プロセッサ及
び補助バイブライン・プロセッサに供給される。例えば
、グループ待ち行列118が連続するグループG1、G
2、G3、及びG4用のエントリを含むものと仮定する
。これらの並列実行中に何ら問題が発生しない場合は、
グループG1は主パイプライン・プロセッサ124にタ
スク指名され、グループG2は補助バイブライン・プロ
セッサ126にタスク指名される。グループG1、G2
が実行された時、グループG3が主パイプライン・プロ
セッサに割り当てられ、グループ3は補助パイプライン
・プロセッサに割り当てられる。グループが実行される
時、グループG5、G6、G7、G8用の追加のエント
リが、BHTIIOによってグループ待ち行列118に
入れられる。これらのグループ・エントリは後でタスク
指名される。
主パイプラインと補助パイプラインは並列して動作する
ので、主パイプラインにおける命令の実行が、補助パイ
プラインによってもたれされる結果を無効にすることが
ある。例えば、補助パイプライン126が、レジスタ・
ファイル130のレジスタR5から得た値に基づいて、
メモリ114に記憶すべき値を生成し、続いて主パイプ
ライン124がレジスタ・ファイルR5中の値を変更す
る場合、補助パイプラインによって生成された値が無効
となり、廃棄しなければならないことがある。補助パイ
プラインによって実行されている命令グループが無効に
なるときは、このグループ用のエントリは、グループ待
ち行列中に保持され、主パイプライン124にタスク指
名される次のグループとなる。
この種の問題や、補助パイプライン126によって生成
された結果を無効にする可能性のある他の問題を検出す
るため、第1図に示す例示的システムは、取出しチェッ
ク回路132とレジスタ・チェック回路134を含んで
いる。取出しチェック回路132は、補助パイプライン
によってメモリから取り出されたオペランドが無効であ
るか否かを判定する。というのは、それらのオペランド
が、主パイプラインによって以前に記憶されたメモリ位
置から取り出されたため、あるいはその他の理由で正し
くない値を有するかもしれないからである。他の理由に
は、直列化命令との遭遇や、多重プロセッサ・システム
では相互間合せ事象の発生が含まれる。レジスタ・チェ
ック回路134は、補助パイプライン126が、主パイ
プラインによって後で変更された汎用レジスタ130の
1つの中の値をいつ使ったかを判定する。
チェック回路132.134から供給される信号は、エ
ンド・グループ回路136に送られる。
回路136はまた、それぞれ主パイプライン・プロセッ
サ124と補助パイプライン・プロセッサ126からの
信号MEOGとAEOGをも受は取る。これらのパイプ
ラインは、その当該の命令グループの最終命令が実行さ
れ終った時に、前記の信号を生成する。エンド・グルー
プ回路136は、MljJパイプラインによって生成さ
れた結果を廃棄すべきか否かを判定し、廃棄すべき場合
は、どの命令グループが主パイプライン・プロセッサと
補助パイプライン・プロセッサにロードされる次のグル
ープになるかを決定する。
パイプライン124と126は共に、そのアーキテクチ
ャ中に16個の汎用レジスタ(GPR)を含む。本発明
のこの実施例では、これらのレジスタは物理的にはレジ
スタ・ファイル130によって実施される。後で詳しく
説明するように、レジスタ・ファイル130には32個
のレジスタがあり、このうち16個はいつでも「活動状
態」で、他の16個はいつでも「一時的」である。主パ
イプラインは、活動レジスタを用いて動作する。これら
のレジスタは、プロセッサeアーキテクチャで指定され
たGPRである。補助パイプラインは、活動レジスタ及
び一時レジスタの両方を用いて動作する。補助パイプラ
インがレジスタR1の読取りだけを行なう場合には、活
動レジスタR3を使用する。しかしながら、補助パイプ
ラインがレジスタRJ内の値を変更する場合には、一時
レジスタR」のみを変更し、その後、レジスタR」の読
取りを行なう場合には、一時レジスタR4を使用する。
主パイプラインがその命令グループを完了した時、及び
補助パイプラインがその命令グループを、レジスタ・チ
ェック回路134または取出しチェック回路132から
問題を知らされることなく、完了した場合には、その値
が変更されたどの一時レジスタも活動レジスタとなり、
以前に活動状態であったレジスタが一時レジスタとなる
補助パイプラインの結果が廃棄される時に、間違った値
がメモリに記憶されるのを防止するため、補助パイプラ
インからのすべてのメモリ記憶動作は、記憶スタック1
28に緩衝記憶される。これらの緩衝された記憶動作が
完了するのは、補助パイプラインが動作を起こさせる命
令グループをうまく実行したとの指示を記憶スタックが
受は取る時だけである。必ずしも必要ではないが、主パ
イプライン124から発するメモリ記憶動作も、記憶ス
タックに緩衝記憶される。
命令グループ実行中に遭遇したBHTの誤りから生じる
、BHT中のデータの訂正は、前記の米国特許第487
9141号明細書に記載されているように行なわれる。
この訂正は、第1図では、信号MBUDで示される。補
助パイプラインにょる命令実行中にBHTデータ中の誤
りに遭遇した場合、補助パイプラインによって生成され
た結果は廃棄され、その命令グループが主パイプライン
で再実行される。
次ニ、多重シーケンス・プロセッサを構成する回路をさ
らに詳しく説明する。この説明は、第2A図ないし第5
図を参照して行なう。
第2A図と第2B図は、第2A図の挿入図に示すように
接合された、ブロック図の2つの部分である。この2つ
の図から構成されるブロック図は、グループ待ち行列1
18、グループ・ディスパッチャ120、エンド・グル
ープ回路136、及びグループ選択回路122の詳細を
示している。本発明の説明を簡単にするため、バイブラ
イン・プロセッサ124.12Bは詳しくは示さず、グ
ループ・ディスパッチャ120及びエンド・グループ回
路136との接続のみを示す。
前述のように、グループ待ち行列118は、連続する命
令グループを示す命令アドレス対(TA。
BA)を保持する。アドレス値BAとTAは、例えば(
BAo、Ao)、(BAD、TAt) 、(BA2−T
 A 2 )などとして、BHTから供給される。これ
らのアドレス対は、連続する命令グループを定義する対
、(TAo、BAD) 、(TAt、BA2)などにグ
ループ化し直される。これらのアドレス値の対は、グル
ープ待ち行列118内に記憶される。
第2A図に示すグループ待ち行列は、4つのレジスタ2
12と、レジスタ212を連想メモリとして使用する制
御回路210とを含む。レジスタ212は、当該グルー
プの最初の命令を定義する目的アドレス値を保持するた
めの各ビット・フィールド(T A o ” T A 
3 )と、当該グループの最後の命令を定義する各分岐
アドレス値を保持するための各ビット・フィールド(B
 A l” B A 2 )を含む。
さらに、レジスタ212はそれぞれ、制御回路210が
レジスタにアクセスするために使用するグループ番号(
GN)ビット・フィールドと、レジスタ内のデータが有
効かどうかを示す満杯/空フィールド(F/E)を含む
。無効または空のエントリは、分岐活動記録テーブル1
10によって自動的に再充填される。
制御回路210は、信号ZAE、ZMEに応答して、命
令グループが滴定のいくように完了した時、現在の主グ
ループ・エントリ及び補助グループ・エントリを空とし
てマークする。制御回路210はまた、グループ選択回
路122から供給されるグループ番号値に応答して、T
AlBA及びGN値をアドレスされたレジスタからグル
ープ・ディスパッチャ120に供給する。
グループ・ディスパッチャ120は、グループ待ち行列
118からグループ・エントリを読み取り、所与のエン
トリのTAlBA及びGNフィールドを、主命令カウン
タ・レジスタ230または補助命令カウンタ・レジスタ
220に選択的に供給する。レジスタ230.220は
、命令バッファ111からの命令取出しを制御し、それ
ぞれ主パイプライン・プロセッサまたは補助バイプライ
・プルプセッサにどの命令が主グループまたは補助グル
ープの最後の命令であるかを指示する回路に結合されて
いる。
グループ・ディスパッチャ120は、次のように動作す
る。例えば、グループ選択回路122から供給されるゼ
ロの値に応答して、グループ待ち行列は、TA値TAo
1BA値BA、 、及びGN値Oをゲート回路21E3
.214に供給する。回路214はフリップフロップ2
18の回出力信号の供給を条件として、値T A o 
1B A を及びGNNO3主命令レジスタ230に渡
す。フリップフロップ218のQ出力信号は、ゲート回
路216がこれらの値を補助命令レジスタ220に供給
しないようにする。次に続くクロック・パルスで、グル
ープ選択回路122は1の値をグループ待ち行列118
に供給する。フリップフロップ218の内部状態はトグ
ルして、ゲート216を使用可能にし、ゲート214を
使用禁止にする。これによってゲート216は、値TA
11BA2を補助命令レジスタ220に供給するように
条件づけられる。ゲート216を使用可能または使用禁
止にするフリップフロップ218の出力信号は、エンド
・グループ回路136に供給される信号D I 5PA
UXである。
システムが最初に活動化される時、フリップフロップ2
18は信号5TART及び5TART+1によって制御
される。5TARTは、強制的にフリップフロップを、
ゲート214を使用可能にしゲート216を使用禁止に
する状態にし、5TART+ 1は、フリップフロップ
218の状態を変えて、ゲート216を使用可能にしゲ
ート214を使用禁止にするフリップフロップ218は
、例えば従来のトグル形式のフリップフロップでもよく
、定常状態動作では、倍パルス信号NEXTGROUP
に応答して状態を変え、ゲート214.218を次々に
使用可能にする。信号NEXT  GROUPは、下記
のエンド・グループ回路136によって生成される。
グループ・ディスパッチャ120の残りの部分は、2つ
の同一回路からなり、その一方は主パイプライン・プロ
セッサ124を制御し、他方は補助パイプライン・プロ
セッサ126を制御する。
話を簡潔にするために、ここでは、主パイプライン・プ
ロセッサ124を制御する回路のみについて述べる。こ
の回路は、命令カウンタ・レジスタ230、比較機構2
32、ゲート234、及び増分回路23θを含む。前述
の例では、命令アドレス値TAo1BAt及びグループ
番号0が、レジスタ230内の異なるフィールドMTA
、MBA1及びMGNに記憶される。主パイプライン・
プロセッサ124が信号GET  NEXT  MIN
STを用いて命令を要求すると、フィールドMTAの内
容は、ゲート234を通って、命令バッファ118、増
分回路236、及び比較機構232の1つの入力ポート
に渡される。命令バッファ116は、このアドレスにあ
る命令を主パイプライン・プロセッサ124に送り、増
分回路236は次の命令アドレス値へと増分し、結果を
レジスタ230のMTAフィールドに戻して記憶し、比
較機構232は、そのアドレス値をレジスタ・フィール
ドMBAに保持されたアドレス値と比較して、アドレス
された命令がそのグループの最後の命令であるかどうか
を判定する。グループ番号値MGNは、エンド・グルー
プ回路136に渡され、そこで下記のように使用される
命令バッファ116から供給された命令値、及び供給さ
れた命令がそのグループの最後の命令であることを示す
、比較機構232.222から供給されたグループ終り
信号が、それぞれ主パイプライン・プロセッサ124及
び補助パイプライン・プロセッサ126に供給される。
前述のように、これらのプロセッサはそれぞれいくつか
の段を含む。各段は命令値を保持するレジスタを含む。
第2B図には、復号段と実行段のレジスタのみを示す。
主パイプライン・プロセッサ124では、命令値とグル
ープ終り信号が、復号命令レジスタ244の当該のフィ
ールドDIV及びEOGに送られる。このレジスタに関
連するプロセッサ124中の回路が、信号GET  N
EXT  MINSTを発行する。この信号は、グルー
プ・ディスパッチャ回路120を、主パイプライン・プ
ロセッサに対する次の命令を取り出すように条件づける
。EOGフィールドは、命令値がパイプラインの様々な
段に転送される時に、それと−緒に渡される。命令が実
行段のレジスタ246に達すると、EoGフィールド中
の値が信号MEOGとして供給され、主フロセッサで実
行されている命令グループ内ノ最後の命令が完了された
ことを示す。
実行段に関連する回路は、分岐エラーが発生したかどう
かを判断する。分岐エラーは次の2つのタイプのいずれ
かである。すなわち、BHTlloによって取られると
予言された分岐命令が取られないか、またはBHTによ
って取られると予言されなかった分岐命令が取られる場
合である。これらのどちらかのエラーを主プロセツサが
検出した場合、レジスタ24θのビット・フィールドE
OGが1に設定され、1の値の信号MBEが実行回路に
よって発行される。同様に、これらのどちらかのエラー
を補助プロセッサが検出した場合、1の値の信号ABE
が実行回路によって発行される。信号MBEはまた、グ
ループ待ち行列118をクリアするのに使用される。と
いうのは、分岐活動記録テーブル中にエラーがあると、
エラーを含む対の後に供給される(TA、BA)対が必
然的に無効にされるためである。
信号MEOG、AEOG1MBE、及びABEが、エン
ド・グループ回路136に供給される。
さらに、レジスタ・チェック回路134と取出しチェッ
ク回路132が生成した信号XRCHAND  XFC
H及びグループ・ディスパッチャ120が生成した信号
DISPAUXが、エンド・グループ回路136に供給
される。レジスタ・チェック回路134及び取出しチェ
ック回路132は、後でそれぞれ第4図と第5図を参照
して詳しく説明する。
前述のように、信号D I 5PAUXは、グループ待
ち行列118からのアドレス対(TAlBA)をグルー
プ・ディスパッチャ120の補助パイプライン・プロセ
ッサ126を制御する部分に送るため、グループ・ディ
スパッチャ120によって生成される。この信号は、従
来型のフリップフロップ254のセット入力端子(S)
に供給される。
フリップフロップ254のリセット入力端子(R)は、
ORゲート258から供給される信号ABE1MBE1
XRCH1XFCH(7)論理ORを受は取るように結
合されている。フリップフロップ254のQ出力端子は
信号AUXOKである。
信号AUXOKは、新しいグループが補助パイプライン
126にタスク指名される時、1の値をとるように事前
設定される。この信号は、補助パイプラインが生成した
結果を無効にするエラーが検出された場合、0にリセッ
トされる。補助パイプライン126によって実行される
命令グループの終りに、信号AUXOK、MEOG、及
ヒAEOGがすべて1の値をとり、命令グループが支障
なく実行されたことを示す場合には、レジスタ220の
グループ番号フィールドAGNに保持された値が、信O
号ZAEとしてゲート248によって制御回路210に
渡され、補助パイプライン126によって丁度完了され
た命令グループに対応するエントリをゼロにするように
、グルレープ待ち行列回路118を条件づける。
同様にして、主パイプライン中のレジスタ246のビッ
ト・フィールドEOGがセットされると、ゲート250
は使用可能となって、レジスタ230のフィールドMG
Nに保持された値をグループ待ち行列回路118に渡す
。この値は、主パイプライン124によって丁度完了さ
れた命令グループに対応するグループ待ち行列内のエン
トリをゼロにするために使用する。
信号AEOG、!=MEOGは、ANDゲート260に
よって組み合わされて信号を発生し、それがパルス発生
器261に供給される。パルス発生器261は、倍パル
ス信号NEXT  GROUPを生成する。この信号は
、前記のように、グループ・ディスパッチャ120に供
給される。このパルス信号はまた、グループ選択回路1
22にも供給され、この回路を、グループ待ち行列から
の次の2つの有効エントリをそれぞれ主パイプラインと
補助パイプラインに供給するように条件づける。
信号MEOG、及びフリップフロップ254によって供
給される信号AUXOKの反転されたものが、ゲート2
52に供給されて、ゲートを使用可能にして、グループ
番号値AGNをグループ選択回路122に供給させる。
この信号経路は、保持パイプラインでうまく実行されな
がった命令グループを、主パイプラインによって実行さ
れる次の命令グループとして指定させる。
ゲート252から供給される信号は、ORゲート282
により、ゲート268によって供給される、実行すべき
次の命令グループを指示する信号と、論理的にOR化さ
れる。ゲート262の出力信号は、2ビツト・レジスタ
264の入力ポートに供給される。レジスタ264のリ
セット入力ボートは、信号5TARTを受は取るように
結合され、プリセット入力ボートは、信号5TART+
 1を受は取るように結合されている。レジスタ264
の出力ポートは、増分回路266に結合されている。増
分回路の出力ポートは、ゲート268の入力ポートに結
合されている。ゲート2θ8は、ANDゲート270に
よって供給される倍パルス信号NEXT  GROUP
、!:信号AUXOKの論理ANDに応答して、増分回
路266の出力信号を渡す。
ゲート252から供給される信号の効果をさしあたり無
視すると、グループ選択回路は次のように動作する。プ
ロセッサが最初に開始される時、信号5TARTは、レ
ジスタ284から供給されたグループ値をOにリセット
する。この値に応答して、グループ番号Oに関連する命
令グループが、グループ待ち行列118とグループ・デ
ィスパッチャ120によって主パイプラインに供給され
る。
次に続くクロック・パルスで、信号5TART+1に応
答して、1の値がレジスタ264にロードされる。この
値は、グループ待ち行列とグループ・ディスパッチャを
、グループ番号1に関連する命令を補助パイプラインに
供給するように条件づける。正常操作中は、レジスタ2
64に保持された値が増分回路268によって増分され
、信号NEXT  GROUPの最初のパルスが発生す
る時、この値がレジスタ264にロードされる。信号N
EXT  GROUPの第2のパルスで、次に続く値が
レジスタ284にロードされる。
しかし、補助パイプラインによって実行された命令グル
ープを廃棄しなければならない場合には、このグループ
のグループ番号は、ORゲート262を介してレジスタ
264のプリセット入力端子に供給される。レジスタ2
64は、信号NEXTGROUPの第1パルスで、ゲー
ト268から供給される値の代りにこの値をロードする
。従って、このグループの命令が、主パイプライン12
4に供給される次の命令である。信号NEXT  GR
OUPの第2パルスは、ゲート268から供給される増
分された値をロードするように、レジスタ264を条件
づける。これは打ち切られたグループの次に続くグルー
プである。このグループの命令は、補助パイプライン1
26に供給される次の命令である。
本発明の代替実施例を、第20図ないし第2F図を参照
して説明する。本発明のこの代替実施例では、グループ
の区切りは、取られた分岐命令ではなく、レジスターフ
ァイル130の中のレジスタを修正する命令のいくつか
である。I BM3033コンピユータの命令セットで
は、命令を修正するこれらのいくつかのレジスタは、L
(ロード)、LH(半分ロード)、BAL(分岐後リン
ク)、R2フィールドが0に設定され、分岐がないこと
を示す時のBALR(分岐後レジスタ・リンク)、L1
フィールドとL2フィールドが同じで、そのレジスタを
リセットすべきことを示す時の5LR(論理レジスタ減
算)、及び直列化命令である。便利な略語として、これ
らの命令をL命令と呼び、これらの命令によって区切ら
れるグループをLグループと呼ぶ。
第2C図は、取られた分岐グループとLグループの違い
を示すために使用するプログラムの1セグメントである
。第2C図に示すこのセグメントは、1〜71の番号を
つけた取られた分岐を有する大きなプログラム・ループ
から取ったものである。取られた分岐1〜6、及び71
は、このプログラム・セグメントに含まれ、第2C図の
左側に丸で囲った数字で示されている。対応する分岐グ
ループは、第2C図の左側にかっこで示されている。同
様に、L命令は四角の枠で囲み、対応するしグループは
、第2C図の右側にかっこで示されている。
本発明のこの代替実施例では、取られた分岐命令がグル
ープの区切りとして使用されなくても、L命令発生の指
示を分岐活動記録テーブルに組み込むことが望ましい。
というのは、これは依然としてシステムの将来の挙動を
良く予言するからである。第2D図は、分岐活動記録テ
ーブル110中のエントリの例示的構造を示す図で、取
られる連続した分岐命令の間に生ずるし命令に関するデ
ータを含んでいる。第2C図に示したプログラム・セグ
メントを最初に通過する間に、プロセッサは、前記のよ
うに、第2D図に示した分岐活動記録テーブルに対する
BA(分岐アドレス)フィールドとTA(目的アドレス
)フィールドを生成する。さらに、本発明のこの第2の
実施例の実施を容易にするため、1組の命令カウント・
フィールドが生成される。
これらの追加エントリを使用して、取られる連続した分
岐命令の間に生ずるLグループを定義する。2つの取ら
れた分岐命令の間の命令は、Lグループの開始、以前に
開始されたLグループの続行、以前に開始されたグルー
プの終了を含み、あるいは、1つまたは複数の新しいL
グループを完全に含むことができる。
第2D図で、5TART、C(jNT及びENDのラベ
ルを付けた追加エントリは、取られた分岐命令から始め
て、それぞれLグループの開始、続行または終了を行な
う分岐グループ中の命令のカウント数を含む。分岐グル
ープが、以前に開始されたしグループを終了する命令の
後に、新しいしグループを開始する命令を含む場合には
、やはり新しいグループ内にある分岐グループ中の命令
の数を表すエントリが、フィールドNEWI中に作成さ
れる。この新しいグループが分岐グループ内に完全に含
まれ、かつ分岐グループが、他のしグループを開始する
命令をさらに含む場合は、これらの他の命令のカウント
を含むエントリが、フィールドNEW2中に作成される
。同様に、フィールドNEWSとNEW4が、分岐グル
ープを定義する1組の命令でこれらのしグループは開始
され、またはその中に完全に含まれる可能な第3及び第
4の新しいしグループのために設けられる。
フィールド5TART1 C0NT、END、NEWl
、NEW2、NEWS、及びNEW4は、プログラムを
最初に通過する間に充填され、BHTl 10内の分岐
情報が更新される時に更新される。次の例は、第2D図
に示すテーブルの部分が第2C図に示すプログラム・セ
グメントからどのように生成されるかを示す。
第2C図では、分岐71の次に最初のしグループの5つ
の命令が続き、分岐71自体が最初のしグループの部分
であることに注意されたい。すなわち、分岐71用の分
岐活動記録テーブルのENDフィールドに5″が置かれ
、分岐に続く5つの命令がLグループであり、第5の命
令はLグループの終りであることを示す。分岐1に続く
4つの命令で、第2のしグループが開始し、したがって
、分岐1用の5TARTフイールドに4″が置かれる。
この第2のしグループは、分岐2に続く2つの命令を通
じて継続し、したがって、分岐2用のBITエントリの
C0NTフイールドに”2″が置かれる。分岐3に続く
最初の2つの命令で第2Lグループが終了し、次の3つ
の命令は第3のしグループを定義し、その次の5つの命
令は第4のLグループを定義する。したがって、分岐3
用の分岐活動記録テーブルはそのENDフィールド内に
”2”、そのNEWl内に3”、そのNEW2内に5″
を存する。このようにして、分岐4.5.6用のBHT
エントリは、第2D図に示すように順に充填される。
分岐活動記録テーブルが充填されると、多重シーケンス
処理システムの性能を指示するために使用できる。最初
のステップは、BHTlloからの取られると予言され
た分岐に基づいて、命令バッファ116を充填すること
である。データは命令バッファに記憶するためカッドワ
ード(すなわち取出し1回あたり16バイト)ごとに取
り出されるので、BITエラーが検出されない限り、命
令バッファは、実質的に満杯であると想定できる。
命令バッファに命令を事前に取り出すためのBITの動
作は、前記の米国特許第4679141号に記載されて
いる。下記の例で、多重シーケンス処理システムがLグ
ループを使用して動作できるように、BHT110中の
追加データをどのように使ってグループ待ち行列118
を充填するかを説明する。
グループ待ち行列中のしグループ・エントリは、第1図
に破線で示したグループ・データ・プロセッサ111に
よって作成される。例えば分岐1用のBHTエントリか
ら始めて、プロセッサ111は分岐1のエントリの5T
ARTフイールド中の4にアクセスし、新しいグループ
を開始する。分岐2用のエントリに応答して、プロセッ
サ111は、C0NTフイールド中の値″2?′を現グ
ループ・カウント値* 4 Hに加えて、カウント値″
6″を生成する。プロセッサ111は、分岐3用のBH
TエントリからENDフィールド中の2″の値を取って
、それをカウント値″6″に加え、′8”のカウント値
を得て、次いでグループ・カウント・エントリ(Lグル
ープ2)を完全とマークする。次にプロセッサ111は
、分岐3のNEWフィールド中の値″3″を取り、Lグ
ループ3に対して”3”のグループ・カウントを設定す
る。
同じ手順を用いて、プロセッサ111はLグループ4に
対して5″のグループ・カウントを設定する。次いで、
プロセッサ111は、先に概説したアルゴリズムを使用
して、Lグループ5.6及び7に対してそれぞれ”4″
、′4′″及び3″のグループ・カウントを生成する。
これらのグループ・カウントは、第2C図に示すように
、Lグループ2〜7中の命令の数に相当する。
Lグループに対するグループ・カウントが決定されると
、さらに2つのことを行なうことが有用である。すなわ
ち、小グループを組み合わせて、十分に効率的なサイズ
のグループを作ること、及びLグループを、それらが開
始する命令のアドレスと関連づけることである。この例
では、どのLグループも命令を8個以上含むという規則
が確立されている。したがって、Lグループ1とLグル
ープ2を組み合わせて、14個の命令を持つLグループ
1−2を作り、Lグループ3とLグループ4を組み合わ
せて、8個の命令を持つLグループ3−4を作り、Lグ
ループ5とLグループ6を組み合わせて、8個の命令を
持つしグループ5−6を作る。
次にLグループ1−2.3−4.5−Elのそれぞれを
、Lグループを定義する各BITエントリのBA(分岐
アドレス)とTA(目的アドレス)の対と関連づけ、第
2E図に示すように、グループ・データをグループ待ち
行列118に記憶する。
これらのBAとTAの対はBHTIIO内と同じ順序で
あり、先に第2A図に関して述べたように再配列されて
はいない。グループ・ディスパッチャ120は、第2E
図に示すデータを用いて、02DE28の開始アドレス
と14”のグループ・カウントを主パイプライン、12
4に供給し、02E210の開始アドレスと8″のグル
ープ・カウントを補助パイプライン126に供給し、0
2E234の開始アドレスと8″のグループ・カウント
を主パイプライン124に供給し、以下同様である。取
られる分岐に遭遇するごとに、各グループごとに余分の
BAとTAの対がグループ・ディスパッチャ120に供
給される。
第2F図は、グループ待ち行列118とグループ・ディ
スパッチャ120をどのように修正すれば、Lグループ
を実施するために使用される追加情報を収容できるかを
示すブロック図である。第2F図は第2A図と同じ方式
で描いてあり、第2F図の挿入図に示すように、その代
りになって本発明のこの代替実施例のブロック図を生成
する。
第2F図で、グループ待ち行列2121は第2E図の待
ち行列と同じ内容である。グループ番号を変えて、グル
ープ1−2.3−4及び5−6をそれぞれ新しいグルー
プ0.1及び2とした。前述の本発明の第1の実施例の
場合と同様に、グループ待ち行列212fからのグルー
プ・エントリは、グループ選択回路122から供給され
るグループ番号に応答して、ゲー)214.215を介
してグループ・ディスパッチャ120°に供給される。
グループ・ディスパッチャ1201は、2つの同じ回路
を含み、これらはそれぞれ主パイプライン124及び補
助バイブライン126上での命令の順序を制御する。話
を簡単にするために、主パイプライン124用の回路の
みについて以下に説明する。
グループ・ディスパッチャ120′はまず、レジスタ2
30“のフィールドMSAに保持された開始アドレス値
(SA)を命令バッファ116に供給する。これはバッ
ファ116を、そのアドレスにある命令を主パイプライ
ン124に供給するように条件づける。グループ・エン
トリが分岐アドレス(BA)フィールドも目的アドレス
(TA)フィールドも存さない時は、フィールドMSA
中の値が増分回路236゛で増分され、マルチプレクサ
237を介してフィールドMSAに戻されて記憶される
。命令アドレス値が増分される度に(すなわち、信号G
ET  NEXT  MINSTの各パルスで)、カウ
ンタ233中の値が増分される。このカウンタは信号N
EXT  GROUPによってリセットされるので、こ
の値はこれまで実行されたグループ中の命令の数を示す
。この値は、比較機構232によって、フィールドMN
O工に保持されたそのグループの命令(NOI)の数の
値と比較される。これらの値が同じである時は、比較機
構232はグループ終り(EOG)信号を主パイプライ
ン124に供給スる。
グループ・エントリが非ゼロのBAフィールドとTAフ
ィールドを有する場合には、比較機構231はフィール
ドMSA中の次の命令のアドレス値を、フィールドMB
A中に保持された分岐アドレス値と比較する。この2つ
の値が同じであれば、比較機構231は信号MTBRを
生成する。この信号は、増分されたアドレス値の代りに
、フィールドMTAに保持された目的アドレス値をフィ
ールドMSAに記憶するように、マルチプレクサ237
を条件づける。この段階で、アドレスBAでの分岐命令
の出現が予測される。さらに、信号MTBRがグループ
待ち行列118“の制御回路210°に供給されて、こ
の回路を、現グループに対する次のBA、TAの対をレ
ジスタ230vのフィールドMBA1MTAに供給する
ように条件づける。この動作によって、レジスタが次に
取られる分岐に対してセットアツプされ、グループ・デ
ィスパッチャ120′が次に取られる分岐命令を予測で
きるようになる。
グループ・ディスパッチャ120°は、比較機構232
から供給されたEOG信号が主パイプライン124を介
してエンド・グループ回路13E3へ伝播するまで、先
に概説したように、命令アドレスの処理を続ける。同様
にして、グループ・ディスパッチャ120°中の補助グ
ループ・タスク指名回路が、グループ・エントリを処理
して、命令を補助パイプライン126に供給する。本発
明のこの代替実施例では、パイプラインΦプロセッサ1
24.126、エンド・グループ回路136、及びグル
ープ選択回路122は、第2A図及び第2B図に関して
先に説明したのと同様に動作する。
第1図に関して述べたように、主パイプラインと補助パ
イプライン124.126は、レジスタ・ファイル13
0を共用する。レジスタ・ファイル130は、16対の
汎用レジスタ(GPR)を含む。多対の一方は所与の時
間に「活動状態」であり、他方は「一時的」である。前
述のように、主パイプライン124は、活動レジスタの
みを使って動き、一時パイブライン126は、活動レジ
スタと一時レジスタを使って動作する。
第3A図にレジスタ・ファイル130を示し、第3B図
には、レジスタ・ファイル130からの例示的レジスタ
対R8をより詳しく示す。レジスタ対R8は、LEFT
のラベルを付けた32ビツト・レジスタ310、及びR
I GHTのラベルを付けた32ビツト・レジスタ33
0を含む。レジスタ310.330はそれぞれ、32個
のデータ・ビットの他に、有効ビットVを有する。フリ
ップフロップ344は、その状態によって、レジスタ3
10とレジスタ330のいずれが活動状態であるかを決
定する。その対の他方のレジスタは−・時的となる。フ
リップフロップ344は、AND’r’−ト342から
供給される信号によってトグルされる。
第3B図でレジスタ310.330の下にあるゲートは
、どのレジスタがどのパイプラインによってロードされ
るかを決定する。主パイプライン124は、活動レジス
タがレジスタ310または330の場合、それぞれゲー
ト312または332を介して活動レジスタをロードす
る。補助パイプライン126は、ゲート314または3
34を介して、他方のレジスタを一時レジスタとしてロ
ードする。ある値が一時レジスタにロードされると、レ
ジスタのを効ビットが1にセットされる。
第3B図でレジスタ310,330の上にあるゲートは
、どのレジスタがどのパイプラインによって読み取られ
るかを決定する。主パイプライン124は、レジスタ3
10が活動状態の場合はゲート3工6を介して、またレ
ジスタ330が活動状態の場合はゲート336を介して
、活動レジスタを読み取る。前記のように、補助パイプ
ライン12Bは、以前に対応する一時レジスタに書き込
んでいない場合のみ、活動レジスタから値を読み取る。
一時レジスタの有効ビットは、レジスタが書き込まれて
いない限りリセットされる。したがって、補助パイプラ
イン用のデータは、レジスタ310または380が一時
的であり、しかも現在活動状態の命令グループの期間中
に書き込まれている場合に、それぞれゲート318また
は338を介してレジスタ対から読み出される。一方、
レジスタ310または330が活動状態である場合は、
それぞれゲート320または340を介してデータが読
み出される。
主パイプライン及び補助パイプラインの両方がグループ
終り信号を出しくMEOG=1及びAEOG= 1) 
、補助パイプラインに問題がない時は(AUXOK=1
) 、その有効ビットがセットされた各一時レジスタが
切り換えられて活動レジスタとなり、すべての有効ビッ
トがリセットされる。
この切換えは、ORゲート343、ANDゲート342
、及びフリップフロップ344によって実現される。主
パイプラインがグループ終り信号を出し、補助パイプラ
インの結果が廃棄されることになる時は(MEOG=1
及びAUXOK=O)、一時レジスタは一時的のままで
、すべての有効ビットがリセットされる。
前述のように、補助パイプラインの結果を無効と宣言、
できる1つのケースは、補助パイプラインが、その現命
令グループの期間中に主パイプラインによって次に書き
込まれるレジスタを読み取る場合である。レジスタ・チ
ェック回路134は、補助パイプラインがGPRをオペ
ランド(R)またはベース(B)またはインデックス(
X)として使用するのを監視し、これらのレジスタのど
れかによって保持された値が、そのような使用の後に主
プロセツサによって変更されたかどうか検査する。回路
134は、この種の何らかの事象を検出した場合、信号
XRCHでエンド・グループ回路136にその旨を知ら
せる。
第4図は、例示的レジスタ・チェック回路134のブロ
ック図である。各命令が補助パイプライン126によっ
て復号されると、そのRlX、及びBフィールドが存在
する場合、それらが当該つ復号器410.412.41
4に供給される。主メモリ114のある位置がキャッシ
ュ112を介して[3パイプラインによって読み取られ
、次にそのメモリ位置に保持された値がその現命令グル
ープの期間中に主パイプラインによって変更される時、
各復号器は16ビツトGPR使用ベクトル中の1つのビ
ットをセットする。この種の事象を順序外れ取出しと称
する。第1図に示す回路は、この種の事象を検出するた
めの取出しチェック回路132を含む。
第5図は、取出しチェック回路132の主な機能を示す
ブロック図である。補助パイプラインによって生成され
たメモリ読取りアドレスは、主命令グループと補助命令
グループのうちの期間の長い方が続く間、スタック51
0に保管される。現プロセッサが多重プロセッサ環境で
使用されている場合には、スタック中のすべてのアドレ
スが、主パイプラインからの書込みアドレス値、及び他
方のプロセッサが生成した任意の相互間合せアドレスと
比較される。これらのアドレスのどれかがスタック中の
アドレスと合致した場合には、補助パイプラインは正し
い新しい値の代りに古い値を取り出したことになり、補
助パイプラインの結果は廃棄すべきである。取り出しチ
ェック回路132として使用するのに適した回路は、同
時係属の米国特許出願第051792号に詳しく記載さ
れている。
第1図で、記憶スタック128は高性能プロセッサの標
準構成要素である。本発明で使用する際は、それは2つ
の部分を有する。主部分は主バイブライン124からの
メモリ書込み動作を行ない、これらの動作は通常の記憶
スタックの場合と同様に取り扱われる。補助部分は補助
パイプライン126からのメモリ書込み動作を行なう。
これらの動作は、補助パイプラインの結果が有効である
(AUXOK=1)と判定されない限り、完了しない。
補助パイプラインの結果が有効であると判った場合、こ
れらのメモリ書込み動作は、主パイプライン用のメモリ
書込み動作の後に実施される。
本発明を2台のパイプライン式プロセッサを使用する処
理環境で説明したが、本明細書で教示した技術を直接拡
張することによって、本発明を使用するシステムを、3
台以上のパイプライン式プロセッサを使用する処理環境
で、またはより簡単な非パイプライン式プロセッサを使
用する処理環境で実施することもできる。
F6発明の詳細 な説明したように、この発明によれば、連続する命令の
グループが同時に実行でき、そのため組合せ命令を完了
するに要する時間が短縮できるので、1つのパイプライ
ン式プロセッサのみを含む処理システムに比べて性能上
の利点をもたらす。
【図面の簡単な説明】
第1図は、本発明の1つの実施例を含む多重シーケンス
・パイプライン・プロセッサのブロック図である。 第2図は第2A図及び第2B図の組み合わせ図である。 第2A図と第2B図は、第1図に示す多重シーケンス・
パイプライン・プロセッサの1部分を詳しく示す、2部
分からなるブロック図である。 第2C図は、第1図に示す多重シーケンス・パイプライ
ン・プロセッサの代替実施例の説明に役立つ、機械語命
令シーケンスを示す図である。 第2D図は、本発明の代替実施例で使用する分岐活動記
録テーブルの内容を示す図である。 第2E図は、本発明の代替実施例で使用する代替グルー
プ待ち行列の内容を示す図である。 第2F図は第2FA図、第2FB図及び第2B図の組み
合わせ図である。 第2FA図及び第2FB図は、第1図に示した多重シー
ケンス・パイプライン・プロセッサの一部分の代替実施
例を詳しく示すブロック図である。 第3A図と第3B図は、第1図に示した多重シーケンス
・パイプライン・プロセッサでの使用に適したレジスタ
・ファイルを詳しく示すブロック図である。 第4図は、第1図に示した本発明の実施例での使用に適
したレジスタ・チェック回路のブロック図である。 第5図は、第1図に示した本発明の実施例での使用に適
した取出しチェック回路のブロック図である。 110・・・・分岐活動記録テーブル(BHT)、11
1・・・・プロセッサ、112・・・・キャッシュ・メ
モリ、116・・・・命令バッファ、118・・・・グ
ループ待ち行列、120.120’・・・・グループ・
ディスパッチャ、122・・・・グループ選択回路、1
24・・・・主バイブライン・プロセッサ、126・・
・・補助パイプライン・プロセッサ、130・・・・レ
ジスタ・ファイル、132・・・・取出しチェック回路
、134・・・・レジスタ・チェック回路、138・・
・・エンド・グループ回路、212.310.330・
・・・レジスタ、214.218・・・・ゲート回路、
220・・・・補助命令カウンタ・レジスタ、222.
231.232・・・・比較機構、230・・・・主命
令カウンタ・レジスタ。 FIG、2C 0y) 空 箸  ;−0″′−00 中 FIG、2E クループ待LFr列 ご呂 2妬

Claims (1)

  1. 【特許請求の範囲】 所定の区切り規則に従って少なくとも第1命令グループ
    と第2命令グループとに分割できる、1つの命令シーケ
    ンスを供給するための手段と、前記の第1命令グループ
    と第2命令グループを表す第1の値と第2の値を記憶す
    る待ち行列手段と、 主データ処理手段と補助データ処理手段と、第1の値と
    第2の値をそれぞれ主データ処理手段と補助データ処理
    手段にタスク指名して、前記の第1命令グループと第2
    命令グループの同時実行を実現する手段と を含むディジタル・データ処理システム。
JP2105474A 1989-04-24 1990-04-23 ディジタル・データ処理システム及び命令シーケンス処理方法 Expired - Fee Related JP3020212B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US34249489A 1989-04-24 1989-04-24
US342494 1994-11-21

Publications (2)

Publication Number Publication Date
JPH02297630A true JPH02297630A (ja) 1990-12-10
JP3020212B2 JP3020212B2 (ja) 2000-03-15

Family

ID=23342073

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2105474A Expired - Fee Related JP3020212B2 (ja) 1989-04-24 1990-04-23 ディジタル・データ処理システム及び命令シーケンス処理方法

Country Status (4)

Country Link
US (1) US5297281A (ja)
EP (1) EP0394624B1 (ja)
JP (1) JP3020212B2 (ja)
DE (1) DE69030931T2 (ja)

Families Citing this family (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5163140A (en) * 1990-02-26 1992-11-10 Nexgen Microsystems Two-level branch prediction cache
US5347639A (en) * 1991-07-15 1994-09-13 International Business Machines Corporation Self-parallelizing computer system and method
US5434985A (en) * 1992-08-11 1995-07-18 International Business Machines Corporation Simultaneous prediction of multiple branches for superscalar processing
US5463746A (en) * 1992-10-30 1995-10-31 International Business Machines Corp. Data processing system having prediction by using an embedded guess bit of remapped and compressed opcodes
US5367703A (en) * 1993-01-08 1994-11-22 International Business Machines Corporation Method and system for enhanced branch history prediction accuracy in a superscalar processor system
US5941986A (en) * 1993-04-30 1999-08-24 Intel Corporation Micro-code sequencer with branch-taken and branch-not-taken micro-code vectors sharing common address to eliminate taken branch penalties
US5421022A (en) * 1993-06-17 1995-05-30 Digital Equipment Corporation Apparatus and method for speculatively executing instructions in a computer system
JP2596712B2 (ja) * 1993-07-01 1997-04-02 インターナショナル・ビジネス・マシーンズ・コーポレイション 近接した分岐命令を含む命令の実行を管理するシステム及び方法
EP0652509B1 (en) 1993-11-05 2000-05-10 Intergraph Corporation Instruction cache associative cross-bar switch
US6360313B1 (en) 1993-11-05 2002-03-19 Intergraph Corporation Instruction cache associative crossbar switch
EP0950946B1 (en) * 1993-11-05 2001-08-16 Intergraph Corporation Software scheduled superscaler computer architecture
US5604909A (en) * 1993-12-15 1997-02-18 Silicon Graphics Computer Systems, Inc. Apparatus for processing instructions in a computing system
DE69530720T2 (de) * 1994-03-09 2003-11-27 Sun Microsystems Inc Verzögertes Cachespeicherschreiben eines Speicherungsbefehls
US5576945A (en) * 1995-01-23 1996-11-19 Tandem Computers Incorporated Transaction monitor process with pre-arranged modules for a multiprocessor system
US5812811A (en) * 1995-02-03 1998-09-22 International Business Machines Corporation Executing speculative parallel instructions threads with forking and inter-thread communication
US5724565A (en) * 1995-02-03 1998-03-03 International Business Machines Corporation Method and system for processing first and second sets of instructions by first and second types of processing systems
US5699536A (en) * 1995-04-13 1997-12-16 International Business Machines Corporation Computer processing system employing dynamic instruction formatting
US5778208A (en) * 1995-12-18 1998-07-07 International Business Machines Corporation Flexible pipeline for interlock removal
US5632514A (en) * 1996-03-26 1997-05-27 Johnson, Jr.; Marvin B. Juvenile safety gate latch for swing gate
US5909573A (en) * 1996-03-28 1999-06-01 Intel Corporation Method of branch prediction using loop counters
US5802338A (en) * 1996-10-01 1998-09-01 International Business Machines Corporation Method of self-parallelizing and self-parallelizing multiprocessor using the method
US6230260B1 (en) 1998-09-01 2001-05-08 International Business Machines Corporation Circuit arrangement and method of speculative instruction execution utilizing instruction history caching
JP4201927B2 (ja) * 1999-08-25 2008-12-24 株式会社ルネサステクノロジ データ処理管理装置
US7395408B2 (en) * 2002-10-16 2008-07-01 Matsushita Electric Industrial Co., Ltd. Parallel execution processor and instruction assigning making use of group number in processing elements
US7562206B2 (en) * 2005-12-30 2009-07-14 Intel Corporation Multilevel scheme for dynamically and statically predicting instruction resource utilization to generate execution cluster partitions

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3559183A (en) * 1968-02-29 1971-01-26 Ibm Instruction sequence control
US3648253A (en) * 1969-12-10 1972-03-07 Ibm Program scheduler for processing systems
US3760365A (en) * 1971-12-30 1973-09-18 Ibm Multiprocessing computing system with task assignment at the instruction level
US4107773A (en) * 1974-05-13 1978-08-15 Texas Instruments Incorporated Advanced array transform processor with fixed/floating point formats
NL7411989A (nl) * 1974-09-10 1976-03-12 Philips Nv Computersysteem met busstruktuur.
US4295193A (en) * 1979-06-29 1981-10-13 International Business Machines Corporation Machine for multiple instruction execution
JPS6028015B2 (ja) * 1980-08-28 1985-07-02 日本電気株式会社 情報処理装置
US4468736A (en) * 1982-06-08 1984-08-28 Burroughs Corporation Mechanism for creating dependency free code for multiple processing elements
US4466061A (en) * 1982-06-08 1984-08-14 Burroughs Corporation Concurrent processing elements for using dependency free code
JPS5932045A (ja) * 1982-08-16 1984-02-21 Hitachi Ltd 情報処理装置
US4691277A (en) * 1984-10-24 1987-09-01 International Business Machines Corp. Small instruction cache using branch target table to effect instruction prefetch
JPH0769818B2 (ja) * 1984-10-31 1995-07-31 株式会社日立製作所 デ−タ処理装置
US4679141A (en) * 1985-04-29 1987-07-07 International Business Machines Corporation Pageable branch history table
US4847755A (en) * 1985-10-31 1989-07-11 Mcc Development, Ltd. Parallel processing method and apparatus for increasing processing throughout by parallel processing low level instructions having natural concurrencies
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
US4825360A (en) * 1986-07-30 1989-04-25 Symbolics, Inc. System and method for parallel processing with mostly functional languages
US4766566A (en) * 1986-08-18 1988-08-23 International Business Machines Corp. Performance enhancement scheme for a RISC type VLSI processor using dual execution units for parallel instruction processing
JPS63131230A (ja) * 1986-11-21 1988-06-03 Hitachi Ltd 情報処理装置
US4829422A (en) * 1987-04-02 1989-05-09 Stellar Computer, Inc. Control of multiple processors executing in parallel regions
US4833599A (en) * 1987-04-20 1989-05-23 Multiflow Computer, Inc. Hierarchical priority branch handling for parallel execution in a parallel processor
US4860197A (en) * 1987-07-31 1989-08-22 Prime Computer, Inc. Branch cache system with instruction boundary determination independent of parcel boundary
US4974155A (en) * 1988-08-15 1990-11-27 Evans & Sutherland Computer Corp. Variable delay branch system
JP2516089B2 (ja) * 1990-06-22 1996-07-10 ヒロセ電機株式会社 コネクタの結線構造とその方法

Also Published As

Publication number Publication date
EP0394624B1 (en) 1997-06-18
US5297281A (en) 1994-03-22
DE69030931D1 (de) 1997-07-24
DE69030931T2 (de) 1998-01-15
EP0394624A3 (en) 1992-10-21
JP3020212B2 (ja) 2000-03-15
EP0394624A2 (en) 1990-10-31

Similar Documents

Publication Publication Date Title
JPH02297630A (ja) デイジタル・データ処理システム
CA1212476A (en) Data processing apparatus and method employing instruction flow prediction
JP3120152B2 (ja) コンピューターシステム
JP4829541B2 (ja) マルチレベル・レジスタ・ファイルを有するディジタル・データ処理装置
JPH0820950B2 (ja) マルチ予測型分岐予測機構
JP2810896B2 (ja) データ処理装置
WO1990014629A2 (en) Parallel multithreaded data processing system
JPH02208729A (ja) マイクロコード式実行装置での並列動作による複数機能装置の制御
US20070143581A1 (en) Superscalar data processing apparatus and method
JPH0782438B2 (ja) コンピュータ・システム
US6959379B1 (en) Multiple execution of instruction loops within a processor without accessing program memory
JP3154660B2 (ja) 条件レジスタ・データを一時的にバッファリングする方法およびシステム
US6542988B1 (en) Sending both a load instruction and retrieved data from a load buffer to an annex prior to forwarding the load data to register file
US6910104B2 (en) Icache-based value prediction mechanism
JP3797570B2 (ja) セマフォ命令用のセマフォ・バッファを用いた装置と方法
JP3707581B2 (ja) 自己整合スタック・ポインタを有するデータ処理システムおよびその方法
US6725365B1 (en) Branching in a computer system
US6275903B1 (en) Stack cache miss handling
JPH0682320B2 (ja) データ処理装置
US6851033B2 (en) Memory access prediction in a data processing apparatus
US6237086B1 (en) 1 Method to prevent pipeline stalls in superscalar stack based computing systems
US5732254A (en) Pipeline system branch history table storing branch instruction addresses and target addresses with inhibit bits
JP2894438B2 (ja) パイプライン処理装置
US7389407B1 (en) Central control system and method for using state information to model inflight pipelined instructions
JP2821328B2 (ja) 並列計算機

Legal Events

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