JPH0769824B2 - 複数命令同時処理方式 - Google Patents

複数命令同時処理方式

Info

Publication number
JPH0769824B2
JPH0769824B2 JP63283679A JP28367988A JPH0769824B2 JP H0769824 B2 JPH0769824 B2 JP H0769824B2 JP 63283679 A JP63283679 A JP 63283679A JP 28367988 A JP28367988 A JP 28367988A JP H0769824 B2 JPH0769824 B2 JP H0769824B2
Authority
JP
Japan
Prior art keywords
instruction
instructions
pipeline
operand
result
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
JP63283679A
Other languages
English (en)
Other versions
JPH02130635A (ja
Inventor
道雄 森岡
憲一 黒沢
忠秋 坂東
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.)
Hitachi Ltd
Original Assignee
Hitachi 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 Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP63283679A priority Critical patent/JPH0769824B2/ja
Publication of JPH02130635A publication Critical patent/JPH02130635A/ja
Publication of JPH0769824B2 publication Critical patent/JPH0769824B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Landscapes

  • Advance Control (AREA)

Description

【発明の詳細な説明】 〔産業上の利用分野〕 本発明は、逐次的に命令を実行する演算処理装置に係
り、特に複数の命令を同時に実行する演算処理装置に関
する。更に詳しくは、本発明は、複数のパイプラインか
らなる演算処理装置において、命令の逐次性を維持しつ
つ、複数の命令を同時に実行するための,アーキテクチ
ヤに関する。
〔従来の技術〕
従来、汎用計算機の高性能化は、パイプラインを多段化
することによつて実現されてきた。これは、1つの命令
の実行に必要な処理、例えば、命令フエツチ,デコー
ド,オペランドアドレス計算,オペランドフエツチ,演
算等の処理を、それぞれ独立なステージとし、ステージ
間で異なる命令を実行することにより高性能化を図る手
段である。多段パイプライン方式では、命令が逐次的に
実行されることを前提としている。すなわち、分岐命令
等のプログラム制御命令が実行されない限り、プログラ
ムカウンタに基づいて、逐次的に命令が実行され、命令
の実行順序が入れ変わることは、あり得ない。従来の汎
用計算機で実行される命令は、この命令実行の逐次性を
前提とした仕様となつている。
一方、単一のプロセツサにおいて、複数命令を並列に実
行することによつて高速化を図る試みが古くからなされ
てきた。例えば、“Parallel Operation in the Contro
l Date 6600,"Proc.of Spring Joint Computer Confere
nce,1964に記載されているCDC6600、最近の計算機で
は、“Supercomputing on Chip,"VLSI Systems Design
may 1988,pp24-33に記載されているモトローラ社のMC88
100等がある。又、特開昭62-262142号に記載の“複数実
行ユニツト・ユニプロセツサシステム”も同様のアーキ
テクチヤと考えられる。
CDC6600,MC88100は、固定小数点,浮動小数点の演算
を、汎用レジスタ間のデータにのみ限定している。汎用
レジスタと、主メモリ間のデータ転送は、専用のロード
/ストア命令によつて実行される。又、演算ユニツトは
複数個設けられ、独立に動作可能となつている。この様
なデータストラクチヤを採用することにより、主メモリ
と、汎用レジスタ間の転送命令と演算命令、あるいは、
複数の演算命令を並列に実行することが可能となる。本
アーキテクチヤにおいては、転送命令,演算命令は非同
期に実行される。この命令実行の非同期性は、プログラ
ム中に内在する並列性を引き出すという点では有効であ
るが、いくつかの問題点を含む。
第1の問題点としては、命令の逐次性を維持するために
複雑な制御機構が必要となることである。すなわち、あ
るデータに対して演算を施す場合、対象となるデータを
主メモリから汎用レジスタに転送し、汎用レジスタ上の
データに対して演算を行ない、その結果を汎用レジスタ
から主メモリへ転送する。これらの処理は、ロード命
令,演算命令,ストア命令の3つの命令によつて実現さ
れ、且つ、これらの3命令は、逐次的に実行されなけれ
ばならない。しかし、もし、各命令が非同時に実行され
るならば、命令の逐次性を保証できない。このため、CD
C6600アーキテクチヤでは、スコアボード方式を採用す
ることにより命令の逐次性を維持している。これは、汎
用レジスタに各エントリーにスコアボードビツトと呼ば
れる排他制御用のフラグを設ける方式である。命令をデ
コードした時点で、該命令のオペランドを含む汎用レジ
スタのフラグをONにする。該命令の実行が完了した時点
で、ONしていたフラグをクリアする。スコアボードビツ
トがONとなつているレジスタにアクセスしようとした命
令は、ブロツクされフラグOFFとなるまでアクセスでき
ない。これによつて、前述した命令の逐次性を維持す
る。特開昭62-262142号に記載の“複数実行ユニツト・
ユニプロセツサシステム”においても、複数の演算ユニ
ツトが設けられ、非同期に複数の命令が実行され得る。
本アーキテクチヤにおいても、命令の逐次性を保証する
ために、汎用レジスタに、より拡張された排他制御機構
を設けている。この様な汎用レジスタフアイルの排他制
御機構は、ハードウエアの複雑さが増すことに加え、演
算処理の性能低下の原因にもなり得る。すなわち、ロー
ド,演算,ストアといつた一連の逐次的な処理を実行す
る場合、従来の単一パイプライン方式では、命令の逐次
性が保証されているため、汎用レジスタの排他制御を簡
略化することが可能であり、ロードしたデータを汎用レ
ジスタを介さず直接演算命令に渡すことが可能であつ
た。一方、CDC6600アーキテクチヤでは、ロードしたデ
ータが汎用レジスタに格納され、スコアボードフラグが
クリアされるまで、次の演算命令を実行できない。すな
わち、排他制御のオーバヘツドにより、命令間のデータ
受渡しが遅れることになる。
又、命令実行の非同期性に伴なう第2の問題点として
は、演算処理装置の状態の管理の複雑さを挙げることが
できる。従来の単一パイプライン方式では、命令の実行
順序が変化することがなく、命令の順序に従つて、演算
処理装置の状態が変化しこれが状態レジスタに反映され
る。これが守られるならば、状態の管理は容易である。
例えば、演算処理装置の状態に従つて分岐する条件分岐
命令を実行する場合、条件の判定を行なう時には、それ
以前の命令の実行結果が、状態レジスタに反映されてい
ることが保証される。又、例えば、割込要求があつた場
合、割込要求が発生した時点の演算処理装置の状態は容
易に判別可能である。そして、割込要求に対する何らか
の処理を実施した後、割込んだ時点の演算処理装置の状
態を再現することも容易である。
これに対し、非同期に命令が実行される場合には、命令
が逐次的に実行される保証がなく、演算処理装置の状態
の管理が複雑になる。例えば、前述の条件分岐命令と、
条件を生成する命令が非同時に実行されるならば、条件
分岐命令を実行する時に、条件を生成する命令の実行結
果が状態レジスタに反映されているとは限らない。この
問題に対して、モトローラ社のMC88100では、条件生成
命令の実行結果の状態を汎用レジスタを介して条件分岐
命令に渡す方法を採つている。この方法によれば、汎用
レジスタの排他制御機構により、条件生成命令と条件分
岐命令の同期をとることが可能となる。しかし、本方式
では、条件分岐命令が、そのオペランドとして汎用レジ
スタを指定できる命令仕様となつていることが不可欠で
ある。該命令仕様を持たない命令セツトを実行する計算
機では、本方式は実現できない。
〔発明が解決しようとする課題〕
上記の様に、複数の異なる実行ユニツトを設け非同期に
命令を実行する様な従来の複数命令同時処理方式では、
本質的に逐次的な処理の実行順序を保証するために、汎
用レジスタにおいて複雑な排他制御機構が不可欠となる
問題があつた。又、該排他制御機構に起因して、命令間
のデータの受渡しのオーバヘツドが大きくなり性能が低
下する問題があつた。更には、命令が非同期に実行され
るため、命令が順序に従つて実行されるとは限らず演算
処理装置の状態レジスタの管理が複雑になる問題があつ
た。
複数命令を1命令実行時間に同時に実行させる例として
特開昭62-65133号公報が知られているが、ここには、複
数命令を具体的にどのように実行するかが開示されてい
ない。
本発明の目的は、プログラムに記述された命令の順序に
従い、逐次性を維持しつつ複数命令を同時に処理可能な
演算処理装置および複数命令同時処理方式を提供するこ
とにある。
本発明の他の目的は、複数の演算処理装置に対して少な
くとも1つの状態レジスタを持ち、該状態レジスタが、
プログラム中に記述された命令の順序に従い更新される
ことを保証する複数命令同時処理方式を提供することに
ある。
〔課題を解決するための手段〕
上記目的は、同一論理のハードウェアからなる複数のパ
イプラインによってプロセッサを構成し、複数命令をデ
コードする手段と、デコードした複数の命令が並列に実
行可能かどうか識別する識別手段と、並列に実行可能な
らばこれら複数の命令を組み合わせる手段と、組み合わ
された複数の命令を、複数のパイプライン処理装置にお
ける処理を常に同期させて実行するパイプライン同期手
段を有する複数命令同時処理方式によって達成される。
本発明の他の目的は、複数のパイプラインから構成され
るプロセッサには、演算処理結果の状態を示す少なくと
も1つの状態レジスタが設けられる。結合された複数命
令の演算結果の状態は、プログラム中の命令の順序に従
って結合され同時に状態レジスタに反映されることによ
って達成される。
〔作用〕
デコーダは、対象となる命令が固定長命令、あるいは可
変長命令に係わらず、複数の命令をデコードし、命令の
切り出し及び、分析を行う。デコーダにより切り出され
た複数の命令は、識別手段によりオペランドの競合検証
あるいは、命令種類の比較が行なわれ、並列実行可能か
どうかの判定が行われる。この判定の結果並列実行可能
であれば、これらの命令は結合され、複数のパイプライ
ンによって実行される。この時、結合された複数の命令
はパイプライン同期手段により同期して実行される。即
ち、命令の複雑さに係わらず結合された複数の命令は各
パイプラインの同一のステージに存在する。
各パイプラインにおける演算結果の状態は、命令の順序
に従ってマージされ、唯一の状態レジスタに反映され
る。これによって、命令の実行順序を変えることなく、
逐次性を維持して複数の命令を同時に処理することが可
能となる。命令の逐次性が保証される。これにより汎用
レジスタにおける排他制御を簡略化することが可能とな
る。
少なくとも一の状態レジスタは、命令の順序に従って更
新されることが保証され、条件分岐命令、あるいは割込
処理における演算処理装置の状態の管理が容易となる。
〔実施例〕
以下、本発明の一実施例を図面を用いて説明する。第2
図は、本発明が適用される計算機システムの1例を示し
ている。クラスタコンピユータ100,110,120は、それぞ
れグローバルメモリポート131,132,133によつてグロー
バルメモリ130に接続される。各クラスタコンピユータ
は、グローバルメモリ130を共有しており、グローバル
メモリは高信頼化のため2重化される。又、各クラスタ
コンピユータは、I/Oスイツチングネツトワーク140を介
して磁気デイスク141,142、あるいは、端末装置143,144
に接続される。クラスタコンピユータ100の内部では、
演算処理装置103,104,105,106が、共有バス102,メモリ
ポート108を介して、共有メモリ101に接続される。共有
メモリ101には、各演算処理装置で必要となるプログラ
ムや、データが格納される。演算処理装置から磁気デイ
スク141、142等の入出力装置をアクセスする場合は、入
出力ポート107を介して行なわれる。
次に、第3図を用いて、演算処理装置103の内部構成に
ついて詳細に説明する。命令用キヤツシユメモリ230
は、演算処理装置103にて実行する命令を一時的に保持
する。命令フエツチユニツト200は、命令用キヤツシユ
メモリ203より命令を読出し、命令実行ユニツト210に転
送する。命令フエツチユニツト200の送出する論理アド
レス201は、命令用アドレス変換バツフア220によつて物
理アドレスに変換され、命令用キヤツシユメモリ230に
供給される。命令用キヤツシユメモリ230より読出され
た命令はバス202を介して命令フエツチユニツト200に供
給される。命令フエツチユニツト200の他の機能として
は、分岐予測バツフアを内蔵しており、フエツチした命
令の中に分岐命令を検出すると、分岐予測バツフアをア
クセスすることにより、分岐先の命令アドレスを識別
し、命令フエツチの方向制御を行なう。オペランド用キ
ヤツシユメモリ250は、命令実行ユニツト210によつてア
クセスされるオペランドを一時的に保持する。オペラン
ド用アドレス変換バツフア240は、命令実行ユニツト210
の送出する論理アドレス203を物理アドレスに変換しオ
ペランド用キヤツシユメモリ250に送る。命令実行ユニ
ツトは、命令フエツチユニツト200より受取つた命令を
デコードし、その結果に従つて、オペランドのアドレス
計算,オペランドフエツチ、及び演算を行なう。共有バ
スモニタ260は、共有バス102上のトランザクシヨンを監
視し、必要ならば、オペランド用キヤツシユメモリ250
の無効化,更新等を行なう。これによつて、複数の演算
処理装置に設けられたオペランドキヤツシユメモリの一
致保証が行なわれる。
次に第4図を用いて命令フエツチユニツト200の詳細に
ついて説明する。フエツチポインタ300はフエツチすべ
き命令のアドレスを保持する。命令が逐次的にフエツチ
される限り、セレクタ302は加算器301を選択しており、
フエツチポインタは特定の増分を加算される。本実施例
では、1回の命令フエツチで読出すデータ幅を16Bytes
としているため、フエツチポインタ300の増分は16とな
つている。フエツチした命令の内に分岐命令が存在した
場合、セレクタ302は、分岐予測バツフア330、あるい
は、命令実行ユニツトより送られてくる分岐先アドレス
304を選択し、分岐先アドレスをフエツチポインタ300に
セツトする。フエツチポインタ300のアドレスに従つ
て、命令用キヤツシユメモリ230より読出された命令
は、セレクタ303を介して、命令バツフア310に格納され
る。命令バツフア310は、フアーストイン・フアースト
アウト方式のバツフアであり、そのサイズは、ここで
は、16Bytes×8エントリで考える。312は、命令バツフ
ア310の読出しアドレスレジスタである。読出しアドレ
スレジスタ312は、命令バツフア310の任意のバイト位置
を示しており、アライナ311は、該バイト位置より16Byt
esの情報を読出して、デコーダ314に送る。命令切出し
部315より、切出した命令のサイズが加算器313に転送さ
れ、新たな読出しアドレスレジスタ312の値が決定され
る。デコーダ部314は、命令バツフアから読出された16B
ytesの情報を、命令の最小単位と等しいビツト幅を持つ
複数のデコーダによつてデコードを行なう。ここでは、
命令の最小単位を2Bytesとしており、16Bytesの情報
は、2Bytes毎8つのデコーダで同時にデコードしてい
る。これら8つのデコーダの分析結果は、命令切出し部
315に転送される。命令切出し部315は、デコーダ部の情
報に従い、第1命令319の切出し、及び、第1命令のサ
イズ316の識別、並びに第2命令325の切出し、及び第2
命令のサイズ325の識別を行なう。この例では、同時に
2命令の切出しとしたが、当然のことながら2命令以上
の切出しを同時に行なう構成も可能である。以上の様な
デコード方式を採用すれば、可変長命令をデコードする
場合でも、同時に複数の命令を切出すことが可能とな
る。切出された第1命令319,第2命令325、及び、それ
ぞれのサイズ情報316,317は、実行ユニツト用命令バツ
フア340に同時に格納される。
一方、プログラムカウンタ320は、デコーダ部314にて切
出される第1命令の主メモリ上のアドレスを保持してい
る。第2命令のアドレスは、プログラムカウンタ320に
第1命令のサイズ316を加算器323で加算することによつ
て求められる。第1,第2命令の主メモリ上のアドレス
は、各命令が実行ユニツト用命令バツフア340に格納さ
れる時に、付加情報として同時に格納される。プログラ
ムカウンタ320の更新は、命令の分岐が無い限り命令切
出し部315より送出される第1,第2命令のサイズの和318
を、加算器321により加算することによつて新たな値が
求められる。分岐命令によつてプログラムの流れが変わ
つた場合には、セレクタ322により、分岐予測バツフア3
30からの予測アドレス、あるいは、命令実行ユニツトか
らの分岐先アドレス325を選択してプログラムカウンタ3
20にセツトする。
次に分岐予測バツフア330に関して説明する。分岐予測
バツフア330に格納される情報は、以下に示す5項目で
ある。
1)有効ビツト331…各エントリーが有効であることを
示す。
2)比較用アドレスタグ332…分岐命令のアドレスの一
部を保持し、これを外部からのアドレスと比較器336で
比較することにより、該当する分岐命令が、分岐予測バ
ツフア330内に存在するかどうかの検証が行なわれる。
3)分岐予測ビツト333…該当する分岐命令が、条件分
岐命令であつた場合、分岐するか否かの情報を与える。
4)分岐先命令アド麗ス334…該当する分岐命令が、分
岐すると予測される分岐先命令のアドレス。
5)分岐先命令335…該当する分岐命令が、分岐すると
予測される分岐先の命令そのもの。
分岐予測バツフア330は、分岐命令が実行された時の履
歴を記憶しておき、再度同一の分岐命令が表われた時
に、その分岐先を予測するものである。その動作を以下
に示す。命令切出し部315において、切出された命令が
分岐命令であつた場合、それが、第1命令か第2命令か
に基づいてセレクタ324を制御し、該分岐命令のアドレ
スを分岐予測バツフア330に送る。分岐予測バツフアで
は、送られてきたアドレスで、分岐予測バツフアの特定
のエントリを選択するとともに、比較用アドレスタグ33
2を比較器336で比較することにより、該当する分岐命令
が登録されているか検証する。該分岐命令が登録されて
おり、且つ、分岐予測ビツト333が、分岐を示していれ
ば、分岐先アドレス334を、プログラムカウンタ320及
び、フエツチポインタ300にセツトする。この時、命令
バツフア310は全てクリアされる。次に、分岐先命令335
をセレクタ303を介して命令バツフア310に格納する。一
方、分岐予測ビツト333が分岐しないことを示していれ
ば、ノーオペレーシヨンとする。
次に第5図を用いて、命令実行ユニツト210の詳細を説
明する。第5図の例では、2命令を同時に実行する構成
を示しているが、2命令以上を同時に実行する構成も容
易に実現できる。実行ユニツト用命令バツフア340より
2つの命令が同時に読出され、デコーダ400,401により
命令の種類及び、オペランドの種類等が識別される。こ
こで、デコーダ400において、先に実行されるべき命令
(第1命令)がデコードされ、デコーダ401において後
に実行されるべき命令(第2命令)がデコードされるも
のとする。これらの情報は、命令結合判定部402に送ら
れる。命令結合判定部では、命令の種類及びオペランド
の競合などが検証され、実行ユニツト用命令バツフア34
0より読出された2つの命令が結合可能かどうかの判定
を行なう。結合可能な命令の種類は、第7図に示され
る。ほとんどの命令の組が結合可能であるが、ビツトフ
イールド命令,十進演算命令等は、他の命令と結合でき
ない。又、分岐命令どうし、サブルーチンリンク命令ど
うしも結合できない。又、一方の命令のデステイネーシ
ヨンオペランドが、他方の命令のソースオペランドとな
つている場合には、該2つの命令は結合できない。
命令結合判定部402において、結果可能と判定された命
令の組は、以降のアドレス計算,オペランドフエツチ,
演算の各パイプラインステージで同期して実行される。
結合不可と判定された場合には、第1命令のみが、以降
のステージに渡され、残つた命令は次の第1命令とな
り、更にその次の命令とともにデコードされ結合判定が
行なわれる。
結合された各命令のデコード結果は、第1命令が、レジ
スタ群410-414に、第2命令がレジスタ群415-419にセツ
トされる。レジスタオペランドアドレスレジスタ410,41
1は、それぞれ、第1命令のソース,デステイネーシヨ
ンオペランドのレジスタアドレスが格納される。第2命
令に関しては、418,419のレジスタが同等の機能を持
つ。又、第1命令がメモリオペランドを含む場合には、
ベースレジスタのレジスタアドレスが414に、インデク
スレジスタのレジスタアドレスが413に、デスプレース
メント情報が412に格納される。第2命令に関しては、
レジスタ415,416,417が同等の機能を有する。
次にアドレス計算ステージの処理について説明する。第
1命令が、メモリオペランドを含む場合、その論理アド
レスを計算する必要がある。メモリオペランドのアドレ
スは、レジスタ414によつて指定されるアドレス用レジ
スタフアイル420内のベースレジスタの内容と、レジス
タ413によつて指定されるアドレス用レジスタフアイル4
20内のインデクスレジスタの内容と、デイスプレースメ
ント情報412を、加算器421で加算することによつて求め
られ、論理アドレスレジスタ425に格納される。第2命
令に関しても同様な処理が行なわれ、論理アドレスが、
レジスタ426に格納される。ここで、アドレス用レジス
タフアイル420は、第1命令,第2命令により共有され
ており、複数の読出しポートを持つことにより、第1,第
2命令で同時にアドレス計算を行なうことが可能となつ
ている。
次に、メモリオペランドの読出しステージについて説明
する。第1オペランドが、メモリオペランドを含む場
合、アドレス計算ステージによつて得られた論理アドレ
ス425によつてメモリアクセスを行なう。論理アドレス4
25は、オペランド用アドレス変換バツフア430により、
主メモリ上の物理アドレスに変換される。該物理アドレ
スによりオペランド用キヤツシユメモリ431がアクセス
され、読出されたメモリオペランドがレジスタ434に格
納される。第2命令についても同様にしてレジスタ435
にメモリオペランドが格納される。オペランド用アドレ
ス変換バツフア430、及びオペランド用キヤツシユメモ
リ431は、第1,第2命令によつて共有されており、複数
の読出しポートを持つことにより、第1,第2命令のメモ
リオペランド読出しを同時に実行できる。ここで、注意
すべきこととしては、例えば、第1命令でキヤツシユミ
スヒツトが発生し、次のステージに移れない場合には、
第2命令も同様に次のステージに移れない。
次にオペランドフエツチステージの構成について説明す
る。第1命令においてオペランドがレジスタである場合
には、レジスタオペランドアドレスレジスタ432,433の
情報に従つて、データ用レジスタフアイル440より、オ
ペランドを読出す。一方、メモリオペランドであれば、
レジスタ434よりアライナ441を経て、オペランドを得
る。
又、同一のパイプラインにおいて1つ前に実行された命
令の結果をソースオペランドとする場合には、パイプ内
バイパスルート460によりオペランドを得る。一方、他
方のパイプラインにおいて、1つ前に実行された命令の
結果をソースオペランドとする場合には、パイプ間バイ
パスルート461によりオペランドを得る。以上の処理
は、第2命令においても同様に行なわれる。
演算器454,455においては、オペランドフエツチステー
ジにより得られたオペランドに対して演算が実行され、
その結果が、レジスタ456,457に格納される。その後、
演算結果は、アドレス用レジスタフアイル420,データ用
レジスタフアイル440,あるいは、オペランド用キヤツシ
ユメモリ431に格納される。演算器454,455における演算
結果の状態(ZERO,over Flow等)462,463は、状態コー
ド生成回路458に転送され、状態レジスタ459に反映され
る。
次に、第6図を用いて、状態コード生成回路について詳
細に説明する。状態コード生成回路458は、2つの機能
を持つ。1つは、第1命令の演算結果の状態と、第2命
令の演算結果の状態を、命令の順序を考慮してマージ
し、状態レジスタに反映する機能。第2の機能は、条件
分岐命令と、条件を生成する命令を同時処理するための
条件判定機能である。まず第1の機能については、第1
命令の演算器454より出力される演算結果の状態462、及
び第2命令の演算器455より出力される状態463を状態生
成部918に入力する。状態生成部918では、第1命令が、
第2命令よりも先に実行されるべき命令であることを考
慮し、第1命令からの状態462の上に第2命令からの状
態を反映した後、状態レジスタ459に格納する。
次に、第2の機能について説明する。条件分岐命令が、
第2命令のパイプラインで実行されると仮定すると、分
岐条件判定情報がレジスタ904に、又、分岐予測バツフ
アによる予測結果が、レジスタ905に格納される。今、
分岐条件を生成する命令と条件分岐命令が逐次的に実行
されたとすると、条件分岐命令を実行する時点では、分
岐条件は既に状態レジスタに反映されている。従つてセ
レクタ914で状態レジスタ459を選択し、分岐判定回路91
5に入力する。分岐判定回路915は、状態レジスタ459
と、分岐条件判定情報904より分岐するか否かを決定す
る。その結果と、分岐予測結果905を比較器916で比較
し、一致すれば、ノーオペレーシヨン,不一致であれ
ば、全てのパイプラインをキヤンセルして、正しい方向
に分岐する。一方、分岐条件を生成する命令と条件分岐
命令を同時に実行する場合を考える。分岐条件生成命令
を第1命令、条件分岐命令を第2命令とする。この時、
条件分岐命令を実行する時点では、分岐条件は、状態レ
ジスタ459に反映されていない。従つて、この場合に
は、セレクタ914が、第1命令の演算結果の状態462を選
択し、分岐判定回路915に入力する。分岐判定回路915
は、第1命令の演算結果の状態462と、分岐条件判定情
報904より分岐するか否かを決定する。その結果と、分
岐予測結果905と比較器916で比較し、一致すればノーオ
ペレーシヨン,不一致であれば、全てのパイプラインを
キヤンセルして正しい方向に分岐する。
以上の様な状態コード生成回路458の機能により、状態
レジスタ459が、命令の順序に従つて更新されることを
保証し、又、条件分岐命令と、分岐条件を生成する命令
を同時に実行することが可能となる。
次に、第1図及び、第8,第9図を用いて、パイプライン
動作を説明する。第1図は、2命令の同時処理を実現す
る本実施例のパイプライン構成を示したものである。命
令フエツチステージ500は、命令用キヤツシユメモリ520
から、複数の命令を同時に読出す。プリデコードステー
ジ501は同時に複数の命令の切出しを行ない、分岐命令
があれば、分岐予測バツフア521をアクセスして、分岐
方向を決定する。命令バツフアステージ502では、実行
ユニツト用命令バツフアからの命令の読出しを行なう。
デコード・アンド・コンバインステージ503では、2命
令を同時にデコードし、その結果に基づいて、結合可能
かどうかの判定を行なう。アドレス計算ステージ504,51
1はメモリオペランドの論理アドレスを計算する。アド
レス変換ステージ506,512では、メモリオペランドの論
理アドレスに変換する。オペランドフエツチステージ50
8,515では、オペランド用キヤツシユメモリ523、あるい
は、レジスタフアイル522よりオペランドを読出す。演
算ステージ509,516では、読出したオペランドに対して
演算を行なう。ライトステージ510,517では、演算した
結果を、オペランド用キヤツシユメモリ523、あるいは
レジスタフアイル522に格納する。アドレス計算ステー
ジ以降は、同一論理の2本のパイプラインによつて構成
されている。デコード・アンド・コンバインステージ50
3において結合された命令はこの2本のパイプラインで
同期して実行される。
第8図は、2命令の同時処理が、効率良く実行されてい
る場合のパイプラインステージフローを示している。こ
の中で、3番目,4番目の命令の同時実行は、前述した様
に、パイプライン間で、演算結果の状態を転送すること
によつて実現される。又、9番目と10番目の命令の並列
実行は、9番目のサブルーチンジヤンプ命令に関する分
岐予測が成功することによつて実現される。
第9図もまた、2命令同時処理方式におけるパイプライ
ンステージフローを示している。3番目と4番目の命令
は、d7のレジスタが競合したために命令の結合ができな
かつた例を示している。この場合には、3番目の命令の
みが単独で実行され、4番目の命令は、5番目の命令と
結合され実行されている。又、8番目と9番目の命令
は、結合には成功したが、8番目の命令と、7番目の命
令の間で、a0レジスタが競合し、8番目の命令が、待た
された場合を示している。この時、8番目の命令と結合
に成功した9番目の命令も待たされてしまう。このパイ
プライン間の同期によつて、命令の逐次性が維持され
る。
〔発明の効果〕
本発明によれば、命令の逐次性を維持して複数命令を同
時に実行できる。これにより汎用レジスタファイルの排
他制御を簡略化でき高性能化が可能となる。又、少なく
とも1つの状態レジスタが、命令の順序に従って更新さ
れるため演算処理装置の状態管理が容易になる。
【図面の簡単な説明】
第1図は、本発明の一実施例のパイプライン構成図、第
2図は、本発明が適用される計算機システムの構成図、
第3図は、第2図における演算処理装置の内部構成、第
4図は、第3図における命令フエツチユニツトの内部構
成、第5図は、第3図における命令実行ユニツトの内部
構成、第6図は、第5図における状態コード生成回路の
内部構成、第7図は、結合可能な命令の組合せ図、第8
図,第9図は、パイプラインステージフローの一例であ
る。 500……命令フエツチステージ、503……デコード・アン
ド・コンバインステージ、504,511……アドレス計算ス
テージ、508,515……オペランドフエツチステージ、50
9,516……演算ステージ、522……マルチポートレジスタ
フアイル、523……オペランド用キヤツシユ。

Claims (5)

    【特許請求の範囲】
  1. 【請求項1】命令およびオペランドを蓄積する主記憶装
    置から、複数個の命令を同時に読み出す命令読み出し装
    置と、読み出された命令を解読し、命令の種類とオペラ
    ンドの種類を識別するデコード装置と、前記主記憶装
    置、あるいは、汎用レジスタファイルからオペランドを
    読み出す複数のオペランド読み出し装置と、読み出され
    たオペランドに対して、命令の種類に従い、演算を行う
    複数の演算装置を有し、複数のパイプラインから成るパ
    イプライン計算機において、 前記複数のパイプラインの1つにおける処理と、他の少
    なくとも1つのパイプラインにおける処理を同期させる
    パイプライン同期手段を有し、 各パイプラインは前記オペランド読み出し手段と前記演
    算装置を有し、 前記デコード装置は複数の命令をデコードするデコード
    手段と、該デコード手段によりデコードされた命令が並
    列に実行可能かどうかを識別する識別手段と、該識別手
    段により並列実行可能と判断された命令を組み合わせる
    手段を有する ことを特徴とする複数命令同時処理方式。
  2. 【請求項2】請求項1記載の複数命令同時処理方式は、
    演算処理結果の状態を示す少なくとも1つの状態レジス
    タを有し、前記組み合わされた複数の命令を前記パイプ
    ラインで同期して実行する際の演算結果の状態を、命令
    の順序に従って、状態レジスタに反映するようにしたこ
    とを特徴とする複数命令同時処理方式。
  3. 【請求項3】請求項1記載の複数命令同時処理方式は、
    演算処理結果の状態を示す少なくとも1つの状態レジス
    タと、複数のパイプライン間で、演算結果の状態を転送
    する手段と、他パイプラインから転送されてきた演算結
    果の状態と、前記状態レジスタの内容のどちらかを選択
    し、選択された結果に基づいて条件分岐命令を実行する
    か否かを決定するようにしたことを特徴とする複数命令
    同時処理方式。
  4. 【請求項4】請求項1記載の複数命令同時処理方式は、 パイプラインにおける演算結果を、他の乃至は同一の前
    記パイプラインに直接転送する演算結果転送手段を有
    し、 転送された演算結果を用いて、他の命令の演算を行うよ
    うにしたことを特徴とする複数命令同時処理方式。
  5. 【請求項5】可変長命令およびオペランドを蓄積する主
    記憶装置から複数個の可変長命令を同時に読出す命令読
    み出し装置と、該命令読み出し装置により読出された命
    令を解読し、命令の種類とオペランドの種類を識別する
    複数個のデコード装置と、デコード装置のデコード結果
    に基づいて、必要なオペランドを読出す複数のオペラン
    ド読出し装置と、該オペランドに対して、命令の種類に
    従い演算を行う複数の演算装置から成る多段パイプライ
    ン計算機において、 前記デコード装置は可変長命令の最小単位と等しいビッ
    ト幅から成る複数のデコーダと、命令切り出し部を有
    し、 該デコーダは主記憶装置より読出された複数の命令に対
    して該命令の最小の単位毎に同時にデコードし、 該命令切り出し部は前記デコーダにより命令をデコード
    した結果に基づいて各命令の先頭及び命令長を識別する ようにしたことを特徴とする複数命令同時処理方式。
JP63283679A 1988-11-11 1988-11-11 複数命令同時処理方式 Expired - Lifetime JPH0769824B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP63283679A JPH0769824B2 (ja) 1988-11-11 1988-11-11 複数命令同時処理方式

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP63283679A JPH0769824B2 (ja) 1988-11-11 1988-11-11 複数命令同時処理方式

Publications (2)

Publication Number Publication Date
JPH02130635A JPH02130635A (ja) 1990-05-18
JPH0769824B2 true JPH0769824B2 (ja) 1995-07-31

Family

ID=17668665

Family Applications (1)

Application Number Title Priority Date Filing Date
JP63283679A Expired - Lifetime JPH0769824B2 (ja) 1988-11-11 1988-11-11 複数命令同時処理方式

Country Status (1)

Country Link
JP (1) JPH0769824B2 (ja)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2016068C (en) * 1989-05-24 2000-04-04 Robert W. Horst Multiple instruction issue computer architecture
EP0415366B1 (en) * 1989-08-28 1997-06-11 Nec Corporation Microprocessor having predecoder unit and main decoder unit operating in pipeline processing manner
US5214763A (en) * 1990-05-10 1993-05-25 International Business Machines Corporation Digital computer system capable of processing two or more instructions in parallel and having a coche and instruction compounding mechanism
CA2038264C (en) * 1990-06-26 1995-06-27 Richard James Eickemeyer In-memory preprocessor for a scalable compound instruction set machine processor
JP2845646B2 (ja) * 1990-09-05 1999-01-13 株式会社東芝 並列演算処理装置
US5301340A (en) * 1990-10-31 1994-04-05 International Business Machines Corporation IC chips including ALUs and identical register files whereby a number of ALUs directly and concurrently write results to every register file per cycle
DE69231762T2 (de) 1991-07-08 2001-07-26 Seiko Epson Corp Risc-prozessor mit dehnbarer architektur
US5539911A (en) 1991-07-08 1996-07-23 Seiko Epson Corporation High-performance, superscalar-based computer system with out-of-order instruction execution
JP2636821B2 (ja) * 1996-03-08 1997-07-30 株式会社日立製作所 並列処理装置
JP2806359B2 (ja) * 1996-04-30 1998-09-30 日本電気株式会社 命令処理方法及び命令処理装置
CN113867793A (zh) * 2020-06-30 2021-12-31 上海寒武纪信息科技有限公司 计算装置、集成电路芯片、板卡、电子设备和计算方法

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS53108254A (en) * 1977-03-02 1978-09-20 Nec Corp Information processor
JPS6265133A (ja) * 1985-09-17 1987-03-24 Nec Corp 命令先取り装置

Also Published As

Publication number Publication date
JPH02130635A (ja) 1990-05-18

Similar Documents

Publication Publication Date Title
US6088788A (en) Background completion of instruction and associated fetch request in a multithread processor
US7424598B2 (en) Data processor
US5430884A (en) Scalar/vector processor
JP2550213B2 (ja) 並列処理装置および並列処理方法
EP0381469B1 (en) Method and data processing unit for pipeline processing of register and register modifying specifiers within the same instruction
EP0380847B1 (en) Method and data processing unit for decoding multiple specifiers in a variable length instruction architecture
EP0605872B1 (en) Method and system for supporting speculative execution of instructions
EP0380849B1 (en) Method and data processing unit for preprocessing implied specifiers in a pipelined processor
JP3678443B2 (ja) スーパーパイプライン式スーパースカラーマイクロプロセッサ用の書き込みバッファ
US6145074A (en) Selecting register or previous instruction result bypass as source operand path based on bypass specifier field in succeeding instruction
US5623650A (en) Method of processing a sequence of conditional vector IF statements
JPH0769824B2 (ja) 複数命令同時処理方式
KR100431975B1 (ko) 분기에의한중단이없는파이프라인방식의마이크로프로세서를위한다중명령디스패치시스템
US6754813B1 (en) Apparatus and method of processing information for suppression of branch prediction
US5737562A (en) CPU pipeline having queuing stage to facilitate branch instructions
JP2710994B2 (ja) データ処理装置
WO2020214624A1 (en) Variable latency instructions
JPH08286913A (ja) パイプライン・プロセッサにおいて次に完了すべき命令のアドレスを生成する方法および装置
JPH0520066A (ja) 並列計算機
JP3102399B2 (ja) データ処理装置及び方法
JP3147884B2 (ja) 記憶装置及び情報処理装置
EP0365187A2 (en) Apparatus for selective execution of instructions following a branch instruction
JPH10124313A (ja) 並列処理計算機
IE901516A1 (en) Decoding multiple specifiers in a variable length¹instruction architecture
IE901520A1 (en) Branch prediction