JP2550213B2 - 並列処理装置および並列処理方法 - Google Patents

並列処理装置および並列処理方法

Info

Publication number
JP2550213B2
JP2550213B2 JP2177425A JP17742590A JP2550213B2 JP 2550213 B2 JP2550213 B2 JP 2550213B2 JP 2177425 A JP2177425 A JP 2177425A JP 17742590 A JP17742590 A JP 17742590A JP 2550213 B2 JP2550213 B2 JP 2550213B2
Authority
JP
Japan
Prior art keywords
instruction
instructions
processing
program counter
address
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 - Fee Related
Application number
JP2177425A
Other languages
English (en)
Other versions
JPH03129433A (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
Publication of JPH03129433A publication Critical patent/JPH03129433A/ja
Application granted granted Critical
Publication of JP2550213B2 publication Critical patent/JP2550213B2/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, look ahead
    • 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/30181Instruction operation extension or modification
    • G06F9/30189Instruction operation extension or modification according to execution mode, e.g. mode 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/30181Instruction operation extension or modification
    • 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
    • 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/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/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • 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
    • 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/3867Concurrent instruction execution, e.g. pipeline, look ahead using instruction pipelines
    • 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/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units

Description

【発明の詳細な説明】 〔産業上の利用分野〕 本発明はミニコン、マイコン等のCPUに係り、特に高
速動作に好適な並列処理装置および並列処理方法に関す
る。
〔従来の技術〕 従来より、計算機の高速化の為に、種々の工夫が行な
われている。代表的な手法にパイプラインがある。パイ
プラインとは、1つの命令の処理を完全に終えてから次
の命令を始めるのではなくて、1ての命令を複数ステー
ジに分け、最初の命令が2番目のステージにさしかかつ
たところで、次の命令の最初のステージの処理を始める
というようにバケツリレー式に処理する方法である。こ
のような方法については、富田治著「並列計算機構成
論」昭晃堂p.25〜68に詳しく論じられている。n段パイ
プライン方式を用いれば、それぞれのパイプラインステ
ージにて処理されている命令は1つであるが、全体とし
てn個の命令を同時に処理することができ、パイプライ
ンピツチごとに、1つの命令の処理を終えることができ
る。
さて、計算機の命令アーキテクチヤが、その処理方
式、処理性能におよぼす影響が大であることは周知であ
る。命令アーキテクチヤの観点から計算機を分類する
と、CISC(Complex Instruction Set Computer)とRISC
(Reduced Instruction Set Computer)とに分けられ
る。CISCでは複雑な命令をマイクロ命令を使つて処理す
る。これに対して、RISCでは、命令を簡単なものに絞る
代わりに、マイクロ命令を用いずに、ハードワイヤド論
理による制御で高速化を図つている。以下、従来のCIS
C,RISCの両者について、ハードウエア概要と、そのパイ
プライン動作について述べる。
第2図はCISC型計算機の一般的構成を説明する図であ
る。200はメモリインタフエース、201はプログラムカウ
ンタ(PC)、202は命令キヤシユ、203は命令レジスタ、
204は命令デコーダ、205はアドレス計算制御回路、206
はマイクロ命令を格納しておくControl Storage(C
S)、207はマイクロ命令カウンタ、208はマイクロ命令
レジスタ、209はデコーダ、210はメモリとデータをやり
取りするレジスタMDR(Memory Data Register)、211は
メモリ上のオペランドアドレスを示すレジスタMAR(Mem
ory Address Register)、212はアドレス加算器、213は
レジスタフアイル、214はALU(Arithmetic and Logic U
nit)である。
動作の概要を説明する。PC201によつて示された命令
が、命令キヤシユより取り出され、信号217を通して、
命令レジスタ203にセツトされる。命令デコーダ204は命
令を信号218を通して受け取り、マイクロ命令の先頭ア
ドレスを信号220を通して、マイクロ命令カウンタ207に
セツトする。また、アドレス計算方法を信号219を通し
て、アドレス計算制御回路205に指示する。アドレス計
算制御回路205は、アドレス計算に必要なレジスタの読
み出し、アドレス加算器212の制御等を行なう。アドレ
ス計算に必要なレジスタは、レジスタフアイル213より
バス226,227を通してアドレス加算器212に送出される。
一方、マイクロ命令は1マシンサイクルごとにCS206よ
り読み出され、デコーダ209によりデコードされ、ALU21
4、レジスタフアイル213を制御するのに使われる。224
はこれらの制御信号である。ALU214はレジスタよりバス
228,229を通して送られるデータを演算し、再びレジス
タフアイル213に格納する。メモリインタフエース200
は、命令のフエツチ、オペランドのフエツチ等、メモリ
とのやり取りを行なう回路である。
次に、第2図で示した計算機のパイプライン動作を第
3図,第4図,第5図を用いて説明する。処理ステージ
は6段である。IF(Instruction Fetch)ステージで
は、命令キヤツシユ202より命令が読み出され、命令レ
ジスタ203にセツトされる。D(Decode)ステージで
は、命令デコーダ204により、命令のデコードが行なわ
れる。A(Address)ステージではアドレス加算器212に
より、オペランドのアドレス計算が行なわれる。OF(Op
erand Fetch)ステージでは、メモリインタフエース200
を通して、MAR211で指されたアドレスのオペランドがフ
エツチされ、MDR210にセツトされる。つぎに、EX(Exec
ution)ステージでは、レジスタフアイル213、及び、MD
R210より、データが呼び出され、ALU214に送られ、演算
される。最後に、W(Write)ステージでは、演算結果
がレジスタフアイル213の中の1つのレジスタにバス230
を通して格納される。
さて、第3図は基本命令の1つである加算命令ADDを
連続して処理する様子を示したものである。1マシンサ
イクルごとに1命令処理されており、ALU214、アドレス
加算器212共に毎サイクル並列して動いている。
第4図は、条件つき分岐命令BRAccの処理の様子を示
したものである。TEST命令でフラグが生成される。第4
図は条件成立時のフローを示したものである。フラグ生
成がEXステージで行なわれるため、ジヤンプ先命令のフ
エツチまでに3サイクルの待ちサイクルが生じる。パイ
プライン段数を増やせば増やすほど、この待ちサイクル
は増え、性能向上のネツクと成る。第5図は複雑な命令
の実行フローを示したものである。命令1が複雑な命令
である。複雑な命令とはストリングコピーの様に多数の
メモリアクセスがある命令等で、通常EXステージを多数
回延長することにより処理される。EXステージはマイク
ロ命令により制御される。マイクロ命令は、1マシンサ
イクルに1回アクセスされる。即ち、複雑な命令は、マ
イクロプログラムを複数回読み出すことにより処理す
る。この時、EXステージには1つの命令しか入らないの
で、次の命令(第5図命令2)は待たされる。このよう
なときには、ALU214は常に動いているが、アドレス加算
器212には遊びが生じてしまう。
次に、RISC型計算機について説明する。第6図はRISC
型計算機の一般的構成を説明する図である。601はメモ
リインタフエース、602はプログラムカウンタ、603は命
令キヤツシユ、604はシーケンサ、605は命令レジスタ、
606はデコーダ、607はレジスタフアイル、608はALU、60
9はMDR、610はMARである。
第7図に基本命令の処理フローを示す。IF(Instruct
ion Fetch)ステージでは、プログラムカウンタ602で指
される命令が、命令キヤツシユより読み出され、命令レ
ジスタ605にセツトされる。また、シーケンサ604は命令
信号615、ALU608よりのフラグ信号616より、プログラム
カウンタ602を制御する。R(Read)ステージでは、レ
ジスタフアイル607より、命令で示されたレジスタが、
バス618,619を通してALU608に転送される。また、E(E
xecution)ステージでは、ALU608により、演算が行なわ
れる。さいごに、W(Write)ステージでは、演算され
た結果がレジスタフアイル607に、バス620を通して格納
される。
RISC型計算機では、命令を基本的な命令のみに限定し
ている。演算はレジスタ−レジスタ間に限られており、
オペランドフエツチを伴う命令はロード命令とストア命
令のみである。複雑な命令は基本命令を組合せることに
よつて実現する。また、マイクロ命令は使用されず、命
令レジスタ605の内容が直接デコーダ606でデコードさ
れ、ALU608等を制御する。
第7図はレジスタ−レジスタ間演算の処理フローを示
している。処理ステージは命令が簡単なため4段ですん
でいる。
第8図は条件分岐時の処理フローを示している。CISC
型計算機に比して、パイプライン段数が少ないため、待
ちサイクルが少ない。第8図の例では、待ちサイクルは
1サイクルのみである。しかもRISC型計算機では、この
1サイクルの待ちサイクルも有効に利用するデイレイド
分岐方式が採用されているのが普通である。この方式
は、第9図に示すごとくBRAcc命令に引き続くADD命令を
待ちサイクルの間に実行する方式である。このようにコ
ンパイラが分岐命令の次に命令を埋め込むことにより、
ムダとなる待ちサイクルを全く無くすことができる。
しかし、このように効率良く実行できるRISC型計算機
も1マシンサイクルで1命令しか実行できないという欠
点がある。
このため最近のRISC型計算機では、公開特許公報昭63
−49843号「縮小命令セツトコンピユータ」のごとく、
レジスタフアイルを共用する複数の演算ユニツトを設
け、命令を簡単にしてパイプライン段数を少なくし、か
つ、1マシンサイクルに複数の命令を読み出し、複数演
算ユニツトを制御する方式が考案されている。
しかしながら、実際をRISC型計算機は、単一の演算ユ
ニツトを用いて逐次的に命令を処理しているため、複数
の演算ユニツトを用いて複数の命令を並列実行してしま
うと同一の動作を保証できない。例えば、割込み処理で
はm個の命令が同時に処理されるためm個の命令単位に
割込みを受け付けることになり、従来の逐次処理の動作
と異なつてしまう。また、1命令単位に命令を実行する
機能を有するデバツガなどのソフトウエアは、使用でき
なくなるなどの欠点がある。
一方、上記特殊なソフトウエアは使用できなくなる
が、大部分の従来のソフトウエアを使用可能にし、かつ
高速に実行できる方式は、十分有用である。このような
方式で最も重要な点は第9図を用いてのべたデイレイド
分岐命令を含んだm個の命令を、どのように並列実行す
れば逐次実行した場合と同じ実行結果を得ることができ
るのかという問題を解決する点にある。
〔発明が解決しようとする課題〕
本発明の目的は、並列処理と逐次処理との互換性を持
たせて処理能力を高める機能を両立させることにある。
本発明の他の目的は、並列動作において、特殊な従来
のソフトウエアは正常動作できなくても、大部分の従来
のソフトウエアを正常動作させ、かつ、高速実行できる
ことにある。
〔課題を解決するための手段〕
本発明の第1の特徴は、読み出すべき命令を指示する
プログラムカウンタと、指示された命令を格納するm個
の命令レジスタと、データが格納されるレジスタフアイ
ルと、レジスタフアイルを共有するm個の演算ユニツト
と、プログラムカウンタが指示する番地から連続するm
個の命令を読み出し、このm個の命令をm個の演算ユニ
ツトで処理する複数命令並列処理とプログラムカウンタ
が指示する番地から1個の命令を読み出してm個の演算
ユニツトのうちの1個で処理する逐次処理のうちいずれ
の処理を実行しているかを示す処理状態識別手段と、処
理状態識別手段が示す値に応じてプログラムカウンタを
mずつまたは1ずつ増加させるかを選択する手段と、複
数命令並列処理と逐次処理を選択的に実行させる手段と
を備えたことである。この構成により、並列処理と逐次
処理との互換性を持たせて、両処理を選択的に実行する
ことができる。
さらに具体的には、従来のソフトウエアの逐次処理を
実行する場合には、処理状態識別手段をOFFにしてプロ
グラムカウンタを1ずつ増加させて、1個の命令を読み
出して演算ユニツトで処理をする。
一方、新しいソフトウエアで複数命令並列処理を実行
する場合には、処理状態識別手段をONにしてプログラム
カウンタをmずつ増加させて、m個の命令を読み出し、
m個の命令をm個の演算ユニツトで並列処理する。ま
た、上記2つの処理のいずれかを選択するには、処理状
態識別手段を切り換える機能を持つ識別切換え命令を追
加し、処理状態識別手段に従つて記憶装置からm命令ま
たは1命令ずつ読み出してm個の演算ユニツトまたは演
算ユニツトにて命令を処理する。
本発明の第2の特徴は、読み出すべき命令を指示する
プログラムカウンタと、指示された命令を格納するm個
の命令レジスタと、データが格納されるレジスタフアイ
ルと、レジスタフアイルを共有して演算を実行する演算
ユニツトと、プログラムカウンタが指示する番地から連
続するm個の命令を読み出し、このm個の命令をm個の
演算ユニツトで処理する複数命令並列処理手段と、条件
付分岐命令および無条件分岐命令を有し、プログラムカ
ウンタにより読み出されるm個の命令の中の条件付分岐
命令の条件が成立したときに条件付分岐命令の直後のデ
イレイドスロツト命令の番地よりも後の命令の実行を抑
止する条件付分岐命令処理手段と、プログラムカウンタ
により読み出されるm個の命令の中に無条件分岐命令が
あるときに無条件分岐命令の直後のデイレイドスロツト
命令の番地より後の命令の実行を抑止する無条件分岐命
令処理手段とを備えたことである。
〔作用〕
このような構成により、まず、m個の命令を読み出
し、m個の命令を解読してk番目に分岐命令があること
を調べる。次に1番目からk+1番目の命令をk+1個
の演算ユニツトで実行するとともにk+2番目からm番
目の命令の実行を抑止する。k番目の分岐命令の実行に
より、その分岐先の番地nm+hの計算と条件の成否を計
算し、次にnm番地からm個の命令を読み出す。そして次
にnm番地からnm+h−1番地の命令の実行を抑止すると
ともにnm+h番地から(n+1)m番地の命令を実行す
る。これにより、複数の演算ユニツトが並列に動くため
複数の命令を効率良く実行でき、しかも分岐命令も逐次
実行と同一の処理結果とすることができる。
また、上記第1および第2の特徴を有する並列処理装
置は、LSIに組み込むことができる。さらに、並列処理
と逐次処理に互換性を持たせた並列処理方法、および並
列処理において大部分の従来のソフトウエアを正常に動
作させることができる並列処理方法も実現できる。
〔実施例〕
以下、本発明の一実施例を説明する。
第10図は、本実施例で述べるプロセツタの命令一覧で
ある。基本命令は全てレジスタ間演算である。分岐命令
には、無条件分岐命令BAR、条件付分岐命令BRAcc(ccは
分岐条件を示す。)、サブルーチンの分岐命令CALL、サ
ブルーチンからの戻り命令RTNの4つがある。他に、ロ
ード命令LOAD、とストア命令STORがある。説明の都合
上、データ型は32ビツト整数のみとしたがこれに限定さ
れるものではない。またアドレスは32ビツト(4バイ
ト)毎にふられているものとした。また、処理状態フラ
グ変更命令には、分岐先命令から複数命令の同時読み出
しを開始して、複数の演算ユニツトを活性化させると共
に、処理状態フラグをONにする並列化分岐命令PEXBと分
岐先命令から1個の命令の読み出しを開始して、第1演
算ユニツトを活性化させると共に処理状態フラグをOFF
にする逐次化分岐命令SEXB命令である。簡単のために、
上記の如く命令数を制限しているが、これは本発明を制
限するものではなく、1マシンサイクル処理できる内容
であれば、さらに命令を増やしても良い。
第11図に命令フオーマツトを示す。命令は全て32ビツ
トの固定長である。基本命令中のF,S1,S2,Dフイールド
は、それぞれ演算結果をフラグに反映するかどうかを指
示するビツト、第1ソースレジスタを指示するフイール
ド、第2ソースレジスタを指示するフイールド、デイス
テイネーシヨンレジスタを指示するフイールドである。
本実施例の構成を示したのが第1A図である。100は命
令キヤツシユ、101は32ビツトのプログラムカウンタを
生成するプログラムカウンタ演算器、102はプログラム
カウンタ値を保持するラツチ、103は処理状態フラグPE
(116)を保持するプロセツサステイタスレジスタ、143
はプログラムカウンタを“1"または“2"だけ加算するセ
レクタ、104は32ビツトの第1命令レジスタ、105は32ビ
ツトの第2命令レジスタ、106は第1命令デコーダ、107
は第2命令デコーダ、108は第1演算ユニツト、109は第
2演算ユニツト、110はレジスタフアイル、111はシーケ
ンサ、112はメモリアドレスレジスタMAR、113はメモリ
データレジスタMDR、114はメモリライトレジスタMWR、1
15はデータキヤツシユである。
本実施例では、1マシンサイクルの間に2つの命令が
並列して読み出され実行される。本実施例での基本パイ
プライン処理の動作を示したのが第12図〜第15図であ
る。パイプラインはIF(Instruction Fetch)、R(Rea
d)、EX(Execution)、W(Write)の4段である。
再び第1A図を用いて、本実施例の動作について説明す
る。
IFステージでは、プロセツサステータスレジスタ103
の処理状態フラグPE116の値がONの時、プログラムカウ
ンタによつて指される2つの命令が読み出され、バス11
7,118を通して、それぞれ第1命令レジスタ104と第2命
令レジスタ105にセツトされる。PCが偶数のときには、P
C番地の命令が第1命令レジスタにPC+1番地の命令が
第2命令レジスタに格納される。また、PCが奇数のとき
には、第1命令レジスタにはNOP命令が、第2命令レジ
スタにはPC番地の命令がセツトされる。つまり、シーケ
ンサ111はプログラムカウンタを制御する回路である。
第1命令レジスタ,第2命令レジスタ共に分岐命令でな
いときには、プログラムカウンタには前プログラムカウ
ンタ値+2を値をラツチ102へセツトする。分岐時に
は、分岐アドレスを計算してプログラムカウンタにセツ
トする。条件分岐時には、第1演算ユニツト108よりの
フラグ情報120、及び、第2演算ユニツト109よりのフラ
グ情報119より、分岐の成否を判定し、分岐先アドレス
情報121と分岐制御情報122を用いてプログラムカウンタ
演算器101を制御する。
次に基本命令処理時のRステージの動作について説明
する。Rステージでは、第1命令レジスタ104の内容が
第1命令デコーダ106でデコードされ、また、第2命令
レジスタ105の内容が第2命令デコーダ107でデコードさ
れる。その結果、第1命令レジスタ104の第1ソースレ
ジスタフイールドS1で指されるレジスタの内容がバス12
7を通して、第2ソースレジスタフイールトS2で指され
るレジスタの内容がバス128を通して、第1演算ユニツ
ト108へ送出される。また、第2命令レジスタ105の第1
ソースレジスタフイールドS1で指されるレジスタの内容
がバス129を通して、第2ソースレジスタフイールドS2
で指されるレジスタの内容がバス130を通して、第2演
算ユニツト109へ送出される。
次にEXステージの動作について説明する。EXステージ
では、第1命令レジスタ104のオペコードの内容に従つ
て第1演算ユニツト108において、バス127,128により送
られてきたデータ間の実行を行う。並列して、第2命令
レジスタ105のオペコードの内容に従つて第2演算ユニ
ツト109において、バス129,130により送られてきたデー
タ間の演算を行う。
最後にWステージの動作を説明する。Wステージでは
第1演算ユニツト108の演算結果がバス131を通じて、第
1命令レジスタのデイステイネーシヨンフイールドDで
指されるレジスタに格納される。また、第2演算ユニツ
ト109の演算結果がバス132を通して、第2命令レジスタ
のデイステイネーシヨンフイールドDで指されるレジス
タに格納される。
第1B図は、第1A図の処理状態フラグ変更手段を加えた
ものである。即ち、144,145はそれぞれ第1演算ユニツ
ト、第2演算ユニツトで、PEXBおよびSEXB命令が実行さ
れたときに、フラグ値のデータを処理状態フラツグPE11
6へ伝えるデータ線である。146は処理状態フラツグPE11
6へデータを書き込む時に必要なセレクタである。
第12図は、基本命令を連続して処理するフローを示し
たものである。1マシンサイクルに2命令ずつ処理され
る。ここで第12図で2命令ずつ処理される内の上の方が
第1演算ユニツトの処理を、下の方が第2演算ユニツト
の処理を示している。また、この例では、第1演算ユニ
ツトと第2演算ユニツトは常に並列して動作している。
第13図は第1命令としてロード命令、または、ストア
命令、第2命令として基本命令を連続して処理するフロ
ーを示したものである。ロード命令実行時には、Rステ
ージで、第1命令レジスタのS2フイールドに指されるレ
ジスタの内容が、バス128を通して、MAR112に転送され
る。次に、EXステージで、データキヤツシユからバス13
3を通して、オペランドをフエツチする。最後に、Wス
テージでフエツチされたオペランドが、バス134を通し
て、第1命令レジスタのデイステイネーシヨンフイール
ドDで指されるレジスタに格納される。EXステージで1
マシンサイクルでオペランドをフエツチすることは、第
1A図の如く高速データキヤツシユ115を備えていれば、
可能である。特に、第1A図に示す、計算機全体が半導体
基盤上に集積され、命令キヤツシユ、データキヤツシユ
共にオンチツプ化されている場合などは容易である。勿
論、キヤツシユがミスヒツトした場合には、1マシンサ
イクルでオペランドフエツチを終了することはできな
い。このような時は、システムクロツクを止めて、EXス
テージを延長すれば良い。これは、従来の計算機でも行
われていることである。
次にストア命令実行時には、Rステージにおいて、第
1命令レジスタの第1ソースレジスタフイールドS1で指
されるレジスタの内容がデータとして、バス135を通し
てMWR114に転送される。また同時に、第1命令レジスタ
の第2ソースレジスタフイールドS2で指されるレジスタ
の内容がアドレスとして、バス128を通して、MAR112に
転送される。次にEXステージで、MAR112で指される番地
に、MWR114内のデータが書き込まれる。第13図に示すよ
うに、ロード命令,ストア命令、その命令、例えば図中
のADD命令と共に1マシンサイクルに2命令ずつ処理す
ることができる。
第14B図は、第2命令として無条件ジヤンプBAR命令実
行時の処理フローを示したものである。なお、この図は
後述する他の実施例の説明にも使用する。BAR命令が読
み出されると、Rステージにおいてシーケンサ111はデ
イスプレースメントフイールドdとプログラムカウンタ
との加算を行い、プログラムカウンタのラツチ102にセ
ツトする。この間にBRA命令の次の番地の命令と、その
次の番地の命令(第14B図命令1と命令2)が読み出さ
れる。その次のサイクルに、ジヤンプ先の2命令が読み
出される。本実施例では、命令1,命令2とも実行可能な
ハードウエアとしている。即ち、ジヤンプ命令処理時
も、待ちサイクルが発生しない。この手法は、デイレイ
ド分岐とよばれるもので、RISC型の従来計算機でも行わ
れているものである。ただし、従来のRISC型計算機で
は、ジヤンプ命令のアドレス計算中に1命令しか実行で
きなかつたが、本実施例では、ジヤンプ命令のアドレス
計算中にも、2命令同時処理されるため、より処理能力
を高めることができる。CALL命令、RTN命令の処理フロ
ーも同様である。コンパイラにより、分岐命令のアドレ
ス計算中にできるかぎり有効な命令を実行できるように
コード生成するが、何もすることが無い時には第14B図
命令1,2をNOP命令としておく。このときには、実質的に
は1マシンサイクルの待ちが生ずる。しかしながら、パ
イプライン段数が浅いので、従来例で述べられたCISC型
の計算機に比して、分岐時のオーバヘツドを小さくでき
るという利点がある。
第15図は第2命令として条件分岐命令BRAcc命令実行
時の処理フローを示したものである。ADD,Fと示した命
令で、フラグのセツトが行われ、その結果に従い分岐の
成否が決められる。このときも、第14B図を用いて説明
した無条件分岐命令処理時と同時にBRAcc命令の置かれ
ている番地の次の命令、第15図命令1と、その次の命
令、第15図命令2が読み出されて処理され、この2命令
の処理フロー中Wステージにおいては、BRAcc命令の分
岐条件の成否にかかわらず演算結果のレジスタフアイル
への書き込みが行われる。
第16図は、第1命令として無条件分岐命令BRA命令実
行時の処置フローを示したものである。BRA命令と命令
1が読み出されると、Rステージにおいてシーケンサ11
1はデイスプレースメントフイールドdとプログラムカ
ウンタとの加算を行ない、プログラムカウンタのラツチ
102にセツトするとともに命令1のオペランドのリード
並列処理する。この間に命令1の次の番地の命令2とそ
の次の番地の命令3が読み出される。本実施例では、分
岐命令と命令1を並列実行し、さらに命令2と命令3と
も実行可能なハードウエアとしている。即ち、分岐命令
を含む2命令を並列実行するとともに、その次の2命令
をも実行可能としている。通常のデイレイド分岐命令で
は、分岐命令直後の1命令のみを並列実行するが、本実
施例の分岐命令は、第14B図の場合には分岐命令直後の
2命令を実行し、一方、第16図の場合には、分岐命令直
後の3命令を実行しており、通常のデイレイド分岐とは
異なる。すなわち、デイレイド分岐命令を含むm命令は
並列実行され、しかも引き続くm命令が分岐時間を利用
して実行される点が異なる。これにより、高度な並列処
理が実現可能である。一方、第17図は、第1命令として
条件付分岐命令BRAcc命令実行時の処理フローを示した
ものである。第16図の処理フローと同様に、BRAcc命令
と命令1は並列実行され、ジヤンプ先命令1および2へ
分岐する時間を利用して命令2と命令3は、条件の成否
にかかわらず実行される。これにより高度な並列実行が
可能となり、第15図と第17図からわかるように分岐命令
直後の命令はそれぞれ2命令と3命令が実行される。こ
のように分岐命令が第1命令として存在するかまたは第
2命令として存在するか、その場所によつて分岐時に実
行される命令数が異なる。
以上、第12図,第13図,第14B図,第15図,第16図,
第17図を用いて説明したように、プロセツサステータス
レジスタ103の処理状態フラグPE116の値がONのときに
は、1マシンサイクルに2命令ずつ処理するので、その
処理能力が最大2倍に向上されるという利点がある。
一方、プロセツサステータスレジスタ103の処理状態
フラグPE116の値がOFFのときには、制御信号136を介し
てプログラムカウンタは+1だけ増加するように制御す
ると共に、命令キヤツシユ100は、32ビツト長の1個の
命令をバス117を介して第1命令レジスタ104へ読み出す
ように、制御信号137によつて制御される。また、制御
信号136は、第1命令デコーダ106と第2命令デコーダ10
7へ入つており、この結果第1命令デコーダは第1命令
レジスタ104の命令を第1演算ユニツト108で処理するよ
うに動作すると共に、第2命令デコーダは第2演算ユニ
ツトを止めるように動作する。この結果、第1演算ユニ
ツトによる逐次処理を行うことができる。
次に、第1B図を用いて、プロセツサステータスレジス
タ103の処理状態フラグPE116の値がOFFの時のパイプラ
イン動作について詳しく説明する。
IFステージでは、プログラムカウンタによつて指され
る1つの命令が読み出され、バス117を通して、第1命
令レジスタ104にセツトされる。なお、バス118は、処理
状態フラグPE116の値がOFFの時、有効な命令は出力され
ない。つまり、シーケンサ111はプログラムカウンタを
制御する回路である。第1命令レジスタが分岐命令でな
いときには、プログラムカウンタには前プログラムカウ
ンタ値+1の値をラツチ102へセツトする。分岐時に
は、分岐アドレスを計算してプログラムカウンタにセツ
トする。条件分岐時には、第1演算ユニツト108よりの
フラグ情報120より、分岐の成否を判定し、分岐先アド
レス情報121と分岐制御情報122を用いてプログラムカウ
ンタ演算器101を制御する。
次に基本命令処理時のRステージの動作について説明
する。Rステージでは、第1命令レジスタ104の内容が
第1命令デコーダ106でデコードされる。その結果、第
1命令レジスタ104の第1ソースレジスタフイールドS1
で指されるレジスタの内容がバス127を通して、第2ソ
ースレジスタフイールドS2で指されるレジスタの内容が
バス128を通して、第1演算ユニツト108へ送出される。
次にEXステージの動作について説明する。EXステージ
では、第1命令レジスタ104のオペコードの内容に従つ
て第1演算ユニツト108において、バス127,128により送
られてきたデータ間の演算を行う。
最後にWステージの動作を説明する。Wステージでは
第1演算ユニツト108の演算結果がバス131を通して、第
1命令レジスタのデイステイネーシヨンフイールドDで
指されるレジスタに格納される。
第18図は、基本命令を連続して処理するフローを示し
たものである。1マシンサイクルに2命令ずつ処理され
る能力はあるが、1命令ずつ処理される。
第19図はロード命令,ストア命令を連続して処理する
フローを示したものである。ロード命令実行時には、R
ステージで、第1命令レジスタのS2フイールドで指され
るレジスタの内容が、バス128を通して、MAR112へ転送
される。次に、EXステージで、データキヤツシユ115を
通して、オペラントをMDR113にフエツチする。最後に、
Wステージでフエツチされたオペランドが、バス134を
通して、第1命令レジスタのデイステイネーシヨンフイ
ールドDで指されるレジスタに格納される。
次にストア命令実行時には、Rステージにおいて、第
1命令レジスタの第1ソースレジスタフイールドS1で指
されるレジスタの内容がデータとして、バス135を通し
てMWR114に転送される。また同時に、第1命令レジスタ
の第2ソースレジスタフイールドS2で指されるレジスタ
の内容がアドレスとして、バス128と131を通してMAR112
に転送される。次にEXステージで、MAR112で指される番
地に、MWR114内のデータが書き込まれる。第19図に示す
ように、ロード命令,ストア命令が連続しても、1マシ
ンサイクルに2命令ずつ処理する能力はあるが、1命令
ずつ処理することができる。
第20図は、無条件ジヤンプBRA命令実行時の処理フロ
ーを示したものである。BRA命令が読み出されると、R
ステージにおいてシーケンサ111はデイスプレースメン
トフイールドdとプログラムカウンタとの加算を行い、
プログラムカウンタのラツチ102にセツトする。この間
にBRA命令の次の番地の命令が読み出される。その次の
サイクルに、ジヤンプ先の命令が読み出される。本実施
例では、命令1を実行可能なハードウエアとしている。
即ち、ジヤンプ命令処理時も、待ちサイクルが発生しな
い。
プロセツサステータスレジスタ103の処理状態フラグP
E116の値がOFFのときについて述べてきたが、ONのとき
に比べてみると、本実施例ではデイレイド分岐中に行な
われる命令2,命令3は実行できなくなつたが、従来のRI
SC型計算機と同じくジヤンプ命令のアドレス計算中に1
命令実行できるようになつた。このように、本実施例の
処理状態フラグPE116の値がOFFのとき、従来と互換を保
つ効果がある。CALL命令、RTN命令の処理フローも同様
である。コンパイラにより、分岐命令のアドレス計算中
にできるかぎり有効な命令を実行できるようにコード生
成するが、何もすることが無い時には第20図命令1をNO
P命令としておく。このときには、実質的には1マシン
サイクルの待ちが生ずる。
第21図は条件分岐命令BRAccの処理フローを示したも
のである。ADD,Fと示した命令で、フラグのセツトが行
われ、その結果に従い分岐の成否が決められる。このと
きも、第20図を用いて説明した無条件分岐命令と同様に
BRAcc命令の置かれている番地の次の命令、第21図命令
1が読み出されて処理され、この命令の処理フロー中W
ステージにおいて、BRAcc命令の分岐条件の成否にかか
わらず演算結果のレジスタフアイルへの書き込みが行わ
れる。
以上、第18図〜第21図を用いて説明したように、プロ
セツサステータスレジスタ103の処理状態フラグPE116の
値がOFFのときには、1命令ずつ処理させ、従来のソフ
トウエアと互換性を保つという利点がある。
以上、高度な並列処理手段と従来のソフトウエア互換
を保つ逐次処理手段を有し、処理状態フラグに基づく処
理手段切換え方式の実施例を示した。
本実施例の逐次処理手段は、1命令ずつよみだして第
1演算ユニツトで実行する方式であつたが、第1B図から
わかるように、2つの命令レジスタ104,105が存在する
ため、プログラムカウンタは+2ずつ増加させるように
制御して、第1命令レジスタ104、及び、第2命令レジ
スタ105へ2個の命令を読み出して保存し、第1命令レ
ジスタ104の命令を第1演算ユニツト108で実行し、続い
て、第2命令レジスタ105の命令を第2演算ユニツト109
で実行する手段を設けることによつても実現できる。す
なわち、命令キヤツシユは、分岐命令を除き、2回に1
回の割合で動作すれば良い。
そこで再び、第1B図を用いてプロセツサステータスレ
ジスタ103の処理状態フラグPE116の値がOFFの時の“m
命令を読み出して逐次処理する手段”の動作を説明す
る。
IFステージでは、プログラムカウンタによつて指され
る2つの命令が読み出され、バス117,118を通して、そ
れぞれ第1命令レジスタ104と第2命令レジスタ105にセ
ツトされる。PCが偶数のときには、PC番地の命令が第1
命令レジスタに、PC+1番地の命令が第2命令レジスタ
に格納される。また、PCが奇数のときには、第1命令レ
ジスタにはNOP命令が、第2命令レジスタにはPC番地の
命令がセツトされる。つまり、シーケンサ111はプログ
ラムカウンタを制御する回路である。第1命令レジス
タ,第2命令レジスタ共に分岐命令でないときには、プ
ログラムカウンタには前プログラムカウンタ値+2の値
をラツチ102へセツトする。分岐時には、分岐アドレス
を計算してプログラムカウンタにセツトする。条件分岐
時には、第1演算ユニツト108よりのフラグ情報120、及
び、第2演算ユニツト109よりのフラグ情報119より、分
岐の成否を判定し、分岐先アドレス情報121と分岐制御
情報122を用いてプログラムカウンタ演算器101を制御す
る。なお、後述するように第1命令レジスタと第2命令
レジスタに保存されたそれぞれの命令は、後のステージ
で逐次的に処理されるため、各マシンサイクルごとに命
令キヤツシユを動作させるのではなく、2マシンサイク
ル1度動作させれば良い。
次に基本命令処理時のRステージの動作について説明
する。Rステージでは、第1命令レジスタ104の内容が
第1命令デコーダ106でデコードされ、続いて次のステ
ージで、第2命令レジスタ105の内容が第2命令デコー
ダ107でデコードされる。その結果、第1命令レジスタ1
04の第1ソースレジスタフイールドS1で指されるレジス
タの内容がバス127を通して、第2ソースレジスタフイ
ールドS2で指されるレジスタの内容がバス128を通し
て、第1演算ユニツト108へ送出される。また、続いて
次のステージで、第2命令レジスタ105の第1ソースレ
ジスタフイールドS1で指されるレジスタの内容がバス12
9を通して、第2ソースレジスタフイールドS2で指され
るレジスタ内容がバス130を通して、第2演算ユニツト1
09へ送出される。
次にEXステージの動作について説明する。EXステージ
では、第1命令レジスタ104のオペコードの内容に従つ
て第1演算ユニツト108において、バス127,128により送
られてきたデータ間の演算を行う。続いて次のステージ
で、第2命令レジスタ105のオペコードの内容に従つて
第2演算ユニツト109において、バス129,130により送ら
れてきたデータ間の演算を行う。
最後にWステージの動作を説明する。Wステージでは
第1演算ユニツト108の演算結果がバス131を通して、第
1命令レジスタのデイステイネーシヨンフイールドDで
指されるレジスタに格納される。また、続いて次のステ
ージで、第2演算ユニツト109の演算結果がバス132を通
して、第2命令レジスタのデイステイネーシヨンフイー
ルドDで指されるレジスタに格納される。
第22図は、基本命令ADDを連続して処理するフローを
示したものである。1マシンサイクルに2命令ずつ処理
できる能力があるが、1命令ずつ処理される。すなわ
ち、2つのADD命令は同時にフエツチされるが、最初のA
DD命令のみがRステージの処理を実行する。一方、2番
目のADD命令は、1マシンサイクル待つた後にRステー
ジの処理を実行する。ここで第22図で2命令ずつ処理さ
れる内の上の方が第1演算ユニツトの処理を、下の方が
第2演算ユニツトの処理を示している。
第23図はロード命令,ストア命令を連続して処理する
フローを示したものである。ロード命令実行時には、R
ステージで、第1命令レジスタのS2フイールドで指され
るレジスタの内容が、バス128を通して、MAR112に転送
される。次に、EXステージで、データキヤツシユからバ
ス133を通して、オペランドをフエツチする。最後に、
Wステージでフエツチされたオペランドが、バス134を
通して、第1命令レジスタのデイステイネーシヨンフイ
ールドDで指されるレジスタに格納される。EXステージ
で1マシンサイクルでオペランドをフエツチすること
は、第1A図の如く高速データキヤツシユ115を備えてい
れば、可能である。
次にストア命令実行は、ロード命令のRステージ実行
後、Rステージにおいて第2命令レジスタの第2ソース
レジスタフイールドS1で指されるレジスタの内容がデー
タとして、バス135を通してMWR114に転送される。また
同時に、第2命令レジスタの第2ソースレジスタフイー
ルドS2で指されるレジスタの内容がアドレスとして、バ
ス129を通してMAR112に転送される。次にEXステージ
で、MAR112で指される番地に、MWR114内のデータが書き
込まれる。第23図に示すように、ロード命令,ストア命
令が連続しても、1マシンサイクルに2命令ずつ処理す
ることができる能力はあるが、1命令ずつ処理すること
ができる。
第24図から第27図は、無条件ジヤンプBRA命令と引き
続く番地の命令1の実行時の処理フローを示したもので
ある。特に、第24図と第25図は第1命令に、第26図と第
27図は第2命令にそれぞれ無条件ジヤンプBRA命令が存
在しているときのパイプライン処理フローを示してお
り、さらに、第24図と第26図はジヤンプ先命令が第1命
令に相当する番地に有るとき、第25図と第27図はジヤン
プ先命令が第2命令に相当する番地に有る場合である。
BRA命令が命令レジスタから読み出されると、Rステー
ジにおいてシーケンサ111はデイスプレースメントフイ
ールドdとプログラムカウンタとの加算を行い、プログ
ラムカウンタのラツチ102にセツトする。この間にBRA命
令の次の番地の命令が次のサイクルで実行される。そし
て、次の次のサイクルに、ジヤンプ先の2命令が読み出
される。
ここで、無条件ジヤンプBRA命令が第2命令に有ると
き(第26図,第27図)、BRA命令の次の番地の命令を含
む2命令をIFステージで命令キヤツシユから読み出す
が、第1命令は実行するが、第2命令は実行せずにジヤ
ンプ先命令を実行するように制御されている。つまり、
分岐命令の次の命令より後の命令が命令レジスタに保持
されていてもそれらは、実行されずに無効化される。
さらに、ジヤンプ先命令が第2命令に相当する番地に
有るとき(第25図,第27図)、ジヤンプ先命令を含む2
命令をIFステージで命令キヤツシユから読み出すが、ジ
ヤンプ先の第1命令は実行せずにジヤンプ先の第2命令
のみを実行するように制御されている。つまり、ジヤン
プ先命令より前の命令が命令レジスタに保持されていて
もそれらは、実行されずに無効化される。なお、CALL命
令、RTN命令の処理フローも同様である。
第28図から第31図は、条件分岐命令BRAcc命令と命令
1の実行時の処理フローを示したものである。ここで、
第30図と第31図は第1命令に、第28図と第29図は第2命
令にそれぞれ条件分岐命令BRAcc命令が存在していると
きの処理フローであり、また、第28図と第30図はジヤン
プ先命令が第1命令に相当する番地に有るとき、第29図
と第31図はジヤンプ先命令が第2命令に相当する番地に
有る場合の処理フローである。第28図から第31図はADD,
Fと示した命令でフラグのセツトが行われ、その結果に
従い分岐の成否が決められる。このときも、第24図から
第27図を用いて説明した無条件分岐命令処理時と同様に
BRAcc命令に置かれている番地の次の命令1が実行さ
れ、命令1の処理フロー中Wステージにおいては、BRAc
c命令の分岐条件の成否にかかわらず演算結果のレジス
タフアイルへの書き込みが行われる。
第30図と第31図のごとくBRA命令が第1命令として存
在する場合には、BRAcc命令が命令レジスタから読み出
されると、Rステージにおいてシーケンサ111はデイス
プレースメントフイールドdとプログラムカウンタとの
加算を行ない、プログラムカウンタのラツチ102にセツ
トするとともに命令1のオペラントのリードを並列処理
する。この間に命令1の次の番地の命令が次のサイクル
で実行される。そして、次の次のサイクルに、ジヤンプ
先の2命令が読み出される。
一方、条件分岐命令BRAcc命令が第2命令に有るとき
(第28図,第29図)、BRAcc命令が次の番地の命令を含
む2命令をIFステージで命令キヤツシユから読み出す
が、第1命令は実行するが、第2命令は実行せずにジヤ
ンプ先命令を実行するように制御されている。つまり、
条件分岐命令の次の命令より後の命令が命令レジスタに
保持されていても、それらは条件成立のときは、実行さ
れずに無効化される。
さらに、条件分岐命令が実行され条件成立したときジ
ヤンプする。ジヤンプ先命令が第2命令に相当する番地
に有るとき(第29図,第31図)、ジヤンプ先命令を含む
2命令をIFステージで命令キヤツシユから読み出すが、
第1命令は実行せずに第2命令のジヤンプ先命令を実行
するように制御されている。つまり、ジヤンプ先命令よ
り前の命令が命令レジスタに保持されていてもそれら
は、実行されずに無効化される。
以上、“m命令を同時に読み出してm個の演算ユニツ
トで逐次処理する手段”の動作を説明したが、結果的に
は、プログラムカウンタは+2ずつ増加させるように制
御して、第1命令レジスタ104、及び、第2命令レジス
タ105へ2個の命令を読み出して保存し、第1命令レジ
スタ104の命令を第1演算ユニツト108で実行し、続い
て、第2命令レジスタ105の命令を第2演算ユニツト109
で実行する手段(逐次処理)を設けるようにすることで
ある。これによつて、命令キヤツシユは、分岐命令を除
き、2回に1回の割合で動作すれば良い。
以上、高速な並列処理手段と従来のソフトウエア互換
を保つ逐次処理手段を有し、処理状態フラグに基づく処
理手段切換え方式の実施例を示した。
しかしながら、本実施例の並列実行処理手段は、第1A
図のプロセツサステータスレジスタ103の処理状態フラ
グPE116の値がONの時、1マシンサイクルに2命令ずつ
処理させるので、その処理能力を最大2倍に向上できた
が、第14図から第17図に示すように、デイレイド分岐命
令を拡張したために、従来ソフトウエアとの互換性を失
つている。そこでデイレイド分岐命令の後続の一命令の
みを実行する制御手段を設けることによつて大部分のソ
フトウエアの互換を保つ方法を述べる。第1C図は第1B図
に制御信号線147を加えたものである。つまり、第2命
令デコーダ107にてデイレイド分岐命令を解読している
時は、後続のデイレイスロツト命令は第1命令レジスタ
104に存在する。しかし、第2命令レジスタ105に保持し
ている命令は、実行してはならない命令である。そこで
第2命令デコーダ107がデイレイド分岐命令を検出時に
制御信号線147を介して第2命令レジスタ105の内容を無
効化することにより、デイレイド分岐命令に後続する1
命令のみを実行する。
また、第1命令デコーダ106にてデイレイド分岐命令
を解読している時は、後続のテイレイスロツト命令は第
2命令デコーダ107にて解読中であり、並列実行しても
問題はない。以上のように制御信号線147を用いて第2
命令レジスタ105の内容を無効化にすることにより大部
分のソフトウエアの互換性を保つことができる。
次に、処理状態フラグを用いずに、常時並列処理を行
なうことを基本にした“大部分の従来のソフトウエアを
正しく実行できる方式”の実施例を述べる。
本実施例は、分岐命令を除く処理については、基本的
には2命令ずつ処理し、分岐命令は次に引き続く1つの
命令のみ(第14B図から第17図の命令1だけ)実行し、
残りの命令の実行は抑止する手段を設けるようにするこ
とである。
第14A図は、常に並列処理を行うことを基本とした構
成である。即ち、プログラムカウンタ演算器101は、常
に+2加算される(143)。しかし、制御信号線147を用
いて第2命令レジスタ105の内容を無効化することによ
つてソフトウエアの互換性を保つことができる。以下に
第14B図ないし第17図を用いて第14A図に示す構成の動作
を説明する。なお、第14B図は、前述した実施例のもの
を使用する。
第14B図は、第2命令として無条件ジヤンプBRA命令実
行時の処理フローを示したものである。BRA命令が読み
出されると、Rステージにおいてシーケンサ111はデイ
スプレースメントフイールドdとプログラムカウンタと
の加算を行い、プログラムカウンタのラツチ102にセツ
トする。この間にBRA命令に引き続く番地の命令1と命
令2が読み出され、その次のサイクルに、ジヤンプ先の
2命令が読み出される。本実施例では、命令1のみを実
行し、命令2の実行を抑止する。すなわち、従来のソフ
トウエアとの互換性をとるために、分岐命令BRAに引き
続く1命令しか実行できないように制御することであ
る。つまり、第14B図の命令2は、第14A図の第2命令デ
コーダ107でNOP命令と等価な処理になるように信号線14
7を介して制御するか、または、第2命令のレジスタフ
アイルへの書き込みを抑止するように制御することで可
能となる。コンパイラにより、分岐命令のアドレス計算
中にできるかぎり有効な命令を実行できるようにコード
生成するが、何もすることが無い時には第14B図の命令
1をNOP命令としておく。このときには、実質的には1
マシンサイクルの待ちが生ずる。
第15図は、第2命令として条件分岐命令BRAcc命令実
行時の処理フローを示したものである。ADD,Fと示した
命令で、フラグのセツトが行われ、その結果に従い分岐
の成否が決められる。このときも、第14B図を用いて説
明した無条件分岐命令と同様にBRAcc命令に置かれてい
る番地の次の命令、第15図の命令1と命令2が読み出さ
れ、命令1の処理フロー中Wステージにおいては、BRAc
c命令の分岐命令の成否にかかわらず演算結果のレジス
タフアイルへの書き込みが行われ、一方、命令2の実行
は抑止する。すなわち、第15図の命令2は、第14A図の
第2命令デコーダ107でNOP命令と等価な処理になるよう
に制御するか、または、第2命令のレジスタフアイルへ
の書き込みを抑止するように制御することで可能とな
る。この時には、実質的に1マシンサイクルの待ちが生
ずる。
さらに、第16図は、第1命令として無条件ジヤンプBR
A命令実行時の処理フローを示したものである。BRA命令
と命令1が読み出されると、Rステージにおいてシーケ
ンサ111はデイスプレースメントフイールドdとプログ
ラムカウンタとの加算を行い、プログラムカウンタのラ
ツチ102にセツトすると同時に、命令1のオペランドを
リードする。この間に次の命令2と命令3が読み出され
る。そしてその次のサイクルに、ジヤンプ先の命令1と
命令2が読み出される。しかしながら、従来のソフトウ
エアとの互換性をとるために、分岐命令BRA命令と引き
続き命令1は、並列に実行するが命令2と命令3の実行
は抑止する。つまり、第16図の命令2,命令3は、第14A
図の第1命令のデコーダ106、第2命令デコーダ107でNO
P命令と等価な処理になるように制御するか、または、
第2命令,第3命令のレジスタフアイルへの書き込みを
抑止するように制御することで可能となる。コンパイラ
により、分岐命令のアドレス計算中にできるかぎり有効
な命令を実行できるようにコード生成するが、何もする
ことが無い時には第16図の命令1をNOP命令としてお
く。このときには、実質的には1マシンサイクルの待ち
が生ずる。
第17図は、第1命令として条件分岐命令BRAcc命令実
行時の処理フローを示したものである。ADD,Fと示した
命令で、分岐状態フラグのセツトが行われ、その結果に
従い分岐の成否が決められる。このときも、第16図を用
いて説明した無条件分岐命令と同様にBRAcc命令と引き
続く番地の命令1が同時に読み出され、命令1の処理フ
ロー中Wステージにおいて、BRAcc命令の分岐条件の成
否にかかわらず演算結果のレジスタフアイルへの書き込
みが行われる。さらに、第17図の命令2と命令3は、第
14A図の第1命令デコーダ106と第2命令デコーダ107に
おいてNOP命令と等価な処理になるように制御するか、
または、第2命令と第3命令のレジスタフアイルへの書
き込みを抑止するように制御するか、または、分岐命令
が第1命令の場合には、命令1を並列実行後にジヤンプ
先命令1へ分岐するように制御することで可能となる。
以上、大部分のソフトウエアを正常実行可能にし、か
つ並列実行により高速化する方式の動作を第14A図を用
いて説明したが、結果的には、第14B図,第15図の命令
2、第16図,第17図の命令2、命令3の実行を抑止する
ことである。これによつて、1サイクルの待ちサイクル
を有効に利用した従来のデイレイド分岐方式の互換性を
保つことができ、且つ、それ以外の命令は基本的には2
命令並列実行可能であるため、従来ソフトウエアの互換
性と1から2倍の間に処理性能を向上できる両方の効果
がある。
以上、分岐命令を中心に並列実行処理手段を説明した
が、当然のことながら第1命令と第2命令の組合せによ
つて、両命令を同時に実行できないことがある。これを
競合と呼ぶことにする。以下に競合を説明する。
1.ロード,ストア命令の組合せ。
2.第1命令のデイステイネーシヨンレジスタフイールド
Dで指示されるレジスタと、第2命令の第1ソースレジ
スタフイールドS1で指示されるレジスタ、または、第2
命令の第2ソースレジスタフイールドS2で指示されるレ
ジスタが一致する時。
上記競合の時、1.はデータキヤツシユを複数の命令か
ら同時にアクセスできないことにより生ずる本実施例特
有の問題である。例えば、データキヤツシユを2ポート
化すれば解決できる。また、2.については、第14A図の
第1命令デコーダと第2命令デコーダにおいて互いのソ
ースレジスタフイールドとデイステイネーシヨンレジス
タフイールドの一致比較を行ない、一致した場合には第
2命令をNOP命令に変えてしまうことで実現できる。す
なわち、第1命令のデイステイネーシヨンレジスタフイ
ールドDで指示されたレジスタと第2命令の2つのソー
スレジスタフイールドで指示されるレジスタが一致した
場合に、第2命令をNOP命令に変更して第1命令とNOP命
令を並列実行処理し、次のサイクルでは、第1命令をNO
P命令に変更してNOP命令と第2命令を並列実行すること
で達成できる。
以上、並列実行時の競合問題について述べた。
本発明の全ての実施例は、2つの命令デコーダと2つ
の演算ユニツトを備えた場合について述べたが、明らか
に4台8台と増やしても全く問題はない。
本発明の最後の実施例について述べる。それは、第1C
図のプロセツサステータスレジスタ103の処理状態フラ
グPE116についてである。本来、処理状態フラグPE116
は、従来ソフトウエアとの互換性を必要とするシステム
において、ハードウエアの切換えを行なうための情報源
としての切換え可能な手段、及び、切り換えるための命
令によりそれを切り換えるものであつた。
しかし、専用システム、これから作成される新しいソ
フトウエアだけを実行すれば良いシステムなどでは、シ
ステムに組むときに片方の機能しか利用しない場合があ
る。そこで、データ処理装置としては、並列実行処理手
段と逐次実行処理手段の両方の手段を備えておき、構築
するシステムに応じて片方の手段だけを組み込む手段が
必要となる。この機能を実現する1つの手段としては、
プロセツサステータスレジスタ103の処理状態フラグPE1
16を、初期化時、リセツト時に命令によりどちらかにセ
ツトする手段がある。また、マイクロプロセツサなどの
LSIの場合、LSIと外部とで信号をやり取りするピンを用
いて、上記2つの手段を切り換える選択手段もある。ピ
ンは周知の通りLSIから延びているものである。
〔発明の効果〕
本発明によれば、従来の逐次処理型計算機上で動作す
る全てのソフトウエアを正常動作させ、しかも、高速な
並列処理機能を用いて、より高速実行することができる
ため処理時間を短縮できる。さらに、大部分の従来のソ
フトウエアを正常動作させ、かつ高度な並列処理機能を
用いて、より高速実行することができる。
【図面の簡単な説明】
第1A図は、本発明の一実施例を示す全体ブロツク図、第
1B図は、本発明の他の実施例を示す全体ブロツク図、第
1C図は、本発明の他の実施例を示す全体ブロツク図、第
2図は、従来例の全体ブロツク図、第3図から第5図
は、第2図に示す構成の動作を説明するタイミングチヤ
ート、第6図は、もう一つの従来例の全体ブロツク図、
第7図および第8図は第6図に示す構成の動作を説明す
るタイミングチヤート、第9図はRISC型計算機のデイレ
イド分岐命令処理フロー図、第10図は、本発明の命令一
覧を示す図、第11図は、本発明の命令フオーマツトを示
す図、第12図と第13図は、本発明の並列処理における動
作を説明するタイミングチヤート、第14A図は本発明の
他の実施例を示す全体ブロツク図、第14B図は並列処理
における動作を説明するタイミングチヤート、第15図か
ら第17図は並列処理における動作を説明するタイミング
チヤート、第18図ないし第31図は、本発明の逐次処理に
おける動作を説明するタイミングチヤートである。 103……処理状態フラグ、104……第1命令レジスタ、10
5……第2命令レジスタ、106……第1命令デコーダ、10
7……第2命令デコーダ、108……第1演算ユニツト、10
9……第2演算ユニツト、110……レジスタフアイル。
───────────────────────────────────────────────────── フロントページの続き (72)発明者 坂東 忠秋 茨城県日立市久慈町4026番地 株式会社 日立製作所日立研究所内 (56)参考文献 特開 昭62−66338(JP,A) 特開 昭63−201725(JP,A) 特開 昭63−240634(JP,A)

Claims (23)

    (57)【特許請求の範囲】
  1. 【請求項1】読み出すべき命令を指示するプログラムカ
    ウンタと、 該プログラムカウンタで指示された命令を格納するm個
    の命令レジスタと、 データが格納されるレジスタフアイルと、 前記レジスタフアイルを共有して演算を実行するm個の
    演算ユニツトと、 前記プログラムカウンタが指示する番地から連続するm
    個の命令を読み出して前記m個の演算ユニツトで処理す
    る並列処理と前記プログラムカウンタが指示する番地か
    ら読み出した連続する命令を前記m個の演算ユニツトの
    うちの1個で処理する逐次処理とのいずれかを行うため
    に演算ユニットを制御する手段とを備えたこと を特徴とする並列処理装置。
  2. 【請求項2】読み出すべき命令を指示するプログラムカ
    ウンタと、 指示された命令を格納するm個の命令レジスタと、 データが格納されるレジスタフアイルと、 前記レジスタフアイルを共有して演算を実行するm個の
    演算ユニツトと、 前記プログラムカウンタが指示する番地から連続するm
    個の命令を読み出して前記m個の演算ユニツトで処理す
    る並列処理と前記プログラムカウンタが指示する番地か
    ら読み出した連続する命令を前記m個の演算ユニツトの
    うちの1個で処理する逐次処理のうちいずれの処理を実
    行しているかを示す処理状態識別手段と、 前記処理状態識別手段が示す値に応じて前記プログラム
    カウンタをmずつまたは1ずつ増加させるかを制御する
    手段とを備えたこと を特徴とする並列処理装置。
  3. 【請求項3】請求項2に記載の並列処理装置において、
    前記処理状態識別手段に指示される値に応じて、並列処
    理により複数の命令を実行するか、または逐次処理によ
    り個々の命令を実行するように前記演算ユニットを制御
    する手段を有することを特徴とする並列処理装置。
  4. 【請求項4】請求項2に記載の並列処理装置において、
    前記プログラムカウンタを制御するためのシーケンサを
    備え、このシーケンサはワイヤド論理により構成される
    並列処理装置。
  5. 【請求項5】請求項2に記載の並列処理装置において、
    前記プログラムカウンタを制御するシーケンサを備え、
    このシーケンサはマイクロプログラムにより構成される
    並列処理装置。
  6. 【請求項6】読み出すべき命令を指示するプログラムカ
    ウンタと、 前記プログラムカウンタにより指示された命令を格納す
    るm個の命令レジスタと、 データが格納されるレジスタフアイルと、 前記レジスタフアイルを共有して演算を実行するm個の
    演算ユニツトと、 前記プログラムカウンタが指示する番地から連続するm
    個の命令を読み出して前記m個の演算ユニツトで処理す
    る並列処理と前記プログラムカウンタが指示する番地か
    ら読み出した連続する命令を前記m個の演算ユニツトの
    うちの1個で処理する逐次処理とを行うために前記m個
    の演算ユニットを制御する手段と、 前記プログラムカウンタにより読み出されるm個の命令
    の中の条件付分岐命令の条件が成立したときに前記m個
    の命令の中の実行すべき命令の番地よりも後の命令の実
    行を抑止する条件付分岐命令処理手段と、 前記プログラムカウンタにより読み出される前記m個の
    命令の中に無条件分岐命令があるときにm個の命令の中
    の実行すべき命令より後の命令の実行を抑止する無条件
    分岐命令処理手段とを備えたこと を特徴とする並列処理装置。
  7. 【請求項7】請求項6に記載の並列処理装置において、
    前記条件付分岐命令処理手段および無条件分岐命令処理
    手段は、分岐命令を解読しているときに制御信号により
    命令レジスタの内容を無効にさせる並列処理装置。
  8. 【請求項8】請求項6に記載の並列処理装置において、 前記条件付分岐命令処理手段は、前記プログラムカウン
    タにより読み出されるm個の命令の中のk番目(k=1,
    2,…,m−1)に条件付分岐命令があるときに、条件の成
    立,不成立にかかわらず少なくともk番目とk+1番目
    の命令を実行し、条件が成立したときにk+2番目以降
    の命令の実行を抑止して分岐させる第1の手段を備え、 前記無条件分岐命令処理手段は、前記プログラムカウン
    タにより読み出されるm個の命令の中のk番目(k=1,
    2,…,m=1)に無条件分岐命令があるときに、少なくと
    もk番目とk+1番目の命令を実行し、k+2番目以降
    の命令の実行を抑止して分岐させる第2の手段とを備え
    た並列処理装置。
  9. 【請求項9】請求項6に記載の並列処理装置において、 前記条件付分岐命令処理手段は、前記プログラムカウン
    タにより読み出されるm個の命令の中のm番目に条件付
    分岐命令があるときに、条件の成立,不成立にかかわら
    ず前記条件付分岐命令を含むm個の命令に続くm個の命
    令の第1番目の命令を実行し、条件が成立したときには
    第2番目以降の全ての命令の実行を抑止して分岐させる
    第1の手段を備え、 前記無条件分岐命令処理手段は、前記プログラムカウン
    タにより読み出されるm個の命令の中のm番目に無条件
    分岐命令があるときに、前記無条件分岐命令を含むm個
    の命令に続くm個の命令の第1番目の命令を実行し、第
    2番目以降の全ての命令の実行を抑止して分岐させる第
    2の手段を備えた並列処理装置。
  10. 【請求項10】請求項6に記載の並列処理装置におい
    て、 前記条件付分岐命令処理手段は、前記プログラムカウン
    タにより読み出されるm個の命令の中のk番目(k=1,
    2,…,m−1)にnm+h番地へ分岐する条件付分岐命令が
    あり、条件の成立,不成立にかかわらず少なくともk番
    目とk+1番目の命令を実行し、条件が成立したときに
    はk+2番目以降の命令の実行を抑止してnm+h番地へ
    分岐し、nm番地からnm+h−1番地の命令の実行を抑止
    してnm+h番地から(n+1)m番地の命令をそれぞれ
    対応する前記演算ユニツトで実行させる手段を備え、 前記無条件分岐命令処理手段は、前記プログラムカウン
    タにより読み出されるm個の命令の中のk番目(k=1,
    2,…,m−1)にnm+h番地へ分岐する無条件分岐命令が
    あり、少なくともk番目とk+1番目の命令を実行し、
    k+2番目以降の命令の実行を抑止してnm+h番地へ分
    岐し、nm番地からnm+h−1番地の命令の実行を抑止し
    てnm+h番地から(n+1)m番地の命令をそれぞれ対
    応する前記演算ユニツトで実行させる手段を備えた並列
    処理装置。
  11. 【請求項11】請求項6に記載の並列処理装置におい
    て、 前記条件付分岐命令処理手段は、前記プログラムカウン
    タにより読み出されるm個の命令の中のm番目にnm+h
    番地へ分岐する条件付分岐命令があるとき、条件の成
    立,不成立にかかわらず前記条件付分岐命令を含むm個
    の命令に続くm個の命令の第1番目の命令を実行し、条
    件が成立した場合には第2番目以降の全ての命令の実行
    を抑止してnm+h番地へ分岐し、nm番地からnm+h−1
    番地の命令の実行を抑止してnm+h番地から(n+1)
    m番地の命令をそれぞれ対応する前記演算ユニツトで実
    行させる手段を備え、 前記無条件分岐命令処理手段は、前記プログラムカウン
    タにより読み出されるm個の命令の中のm番目にnm+h
    番地へ分岐する無条件分岐命令がある場合、前記無条件
    分岐命令を含むm個の命令に続くm個の命令の第1番目
    の命令を実行し、第2番目以降の全ての命令の実行を抑
    止してnm+h番地へ分岐し、nm番地からnm+h−1番地
    の命令の実行を抑止してnm+h番地から(n+1)m番
    地の命令をそれぞれ対応する前記演算ユニツトで実行さ
    せる手段を備えた並列処理装置。
  12. 【請求項12】請求項6に記載の並列処理装置におい
    て、 前記条件付分岐命令処理手段は、前記プログラムカウン
    タにより読み出されるm個の命令の中の所定の番地に条
    件付分岐命令があるときに、条件の成立,不成立にかか
    わらず、前記m個の命令とこれに続く次の番地のm個の
    命令を実行して分岐する手段を備え、 前記無条件分岐命令処理手段は、前記プログラムカウン
    タにより読み出される前記m個の命令の中の所定の番地
    に無条件分岐命令があるときに、m個の命令とこれに続
    く次の番地のm個の命令を実行して分岐する手段を備え
    た並列処理装置。
  13. 【請求項13】読み出すべき命令を指示するプログラム
    カウンタと、 前記プログラムカウンタにより指示された命令を格納す
    るm個の命令レジスタと、 データが格納されるレジスタフアイルと、 前記レジスタフアイルを共有して演算を実行するm個の
    演算ユニツトと、 前記プログラムカウンタが指示する番地から連続するm
    個の命令を読み出してm個の命令を前記m個の演算ユニ
    ツトで処理する並列処理手段と、 前記プログラムカウンタにより読み出されるm個の命令
    の中の条件付分岐命令の条件が成立したときに前記m個
    の命令の中の実行すべき命令の番地よりも後の命令の実
    行を抑止する条件付分岐命令処理手段と、 前記プログラムカウンタにより読み出される前記m個の
    命令の中に無条件分岐命令があるときに前記m個の命令
    の中の実行すべき命令より後の命令の実行を抑止する無
    条件分岐命令処理手段とを備えたこと を特徴とする並列処理装置。
  14. 【請求項14】請求項13に記載の並列処理装置におい
    て、前記条件付分岐命令処理手段および無条件分岐命令
    処理手段は、分岐命令を解読しているときに制御信号に
    より命令レジスタの内容を無効にさせる並列処理装置。
  15. 【請求項15】請求項13に記載の並列処理装置におい
    て、 前記条件付分岐命令処理手段は、前記プログラムカウン
    タにより読み出されるm個の命令の中のk番目(k=1,
    2,…,m−1)に条件付分岐命令があるときに、条件の成
    立,不成立にかかわらず少なくともk番目とk+1番目
    の命令を実行し、条件が成立したときにk+2番目以降
    の命令の実行を抑止して分岐させる第1の手段を備え、 前記無条件分岐命令処理手段は、前記プログラムカウン
    タにより読み出されるm個の命令の中のk番目(k=1,
    2,…,m=1)に無条件分岐命令があるときに、少なくと
    もk番目とk+1番目の命令を実行し、k+2番目以降
    の命令の実行を抑止して分岐させる第2の手段とを備え
    た並列処理装置。
  16. 【請求項16】請求項13に記載の並列処理装置におい
    て、 前記条件付分岐命令処理手段は、前記プログラムカウン
    タにより読み出されるm個の命令の中のm番目に条件付
    分岐命令があるときに、条件の成立,不成立にかかわら
    ず前記条件付分岐命令を含むm個の命令に続くm個の命
    令の第1番目の命令を実行し、条件が成立したときには
    第2番目以降の全ての命令の実行を抑止して分岐させる
    第1の手段を備え、 前記無条件分岐命令処理手段は、前記プログラムカウン
    タにより読み出されるm個の命令の中のm番目に無条件
    分岐命令があるときに、前記無条件分岐命令を含むm個
    の命令に続くm個の命令の第1番目の命令を実行し、第
    2番目以降の全ての命令の実行を抑止して分岐させる第
    2の手段とを備えた並列処理装置。
  17. 【請求項17】請求項13に記載の並列処理装置におい
    て、 前記条件付分岐命令処理手段は、前記プログラムカウン
    タにより読み出されるm個の命令の中のk番目(k=1,
    2,…,m−1)にnm+h番地へ分岐する条件付分岐命令が
    あり、条件の成立,不成立にかかわらず少なくともk番
    目とk+1番目の命令を実行し、条件が成立したときに
    はk+2番目以降の命令の実行を抑止してnm+h番地へ
    分岐し、nm番地からnm+h−1番地の命令の実行を抑止
    してnm+h番地から(n+1)m番地の命令をそれぞれ
    対応する前記演算ユニツトで実行させる手段を備え、 前記無条件分岐命令処理手段は、前記プログラムカウン
    タにより読み出されるm個の命令の中のk番目(k=1,
    2,…,m−1)にnm+h番地へ分岐する無条件分岐命令が
    あり、少なくともk番目とk+1番目の命令を実行し、
    k+2番目以降の命令の実行を抑止してnm+h番地へ分
    岐し、nm番地からnm+h−1番地の命令の実行を抑止し
    てnm+h番地から(n+1)m番地の命令をそれぞれ対
    応する前記演算ユニツトで実行させる手段とを備えた並
    列処理装置。
  18. 【請求項18】請求項13に記載の並列処理装置におい
    て、 前記条件付分岐命令処理手段は、前記プログラムカウン
    タにより読み出されるm個の命令の中のm番目にnm+h
    番地へ分岐する条件付分岐命令があるとき、条件の成
    立,不成立にかかわらず前記条件付分岐命令を含むm個
    の命令に続くm個の命令の第1番目の命令を実行し、条
    件が成立した場合には第2番目以降の全ての命令の実行
    を抑止してnm+h番地へ分岐し、nm番地からnm+h−1
    番地の命令の実行を抑止してnm+h番地から(n+1)
    m番地の命令をそれぞれ対応する前記演算ユニツトで実
    行させる手段を備え、 前記無条件分岐命令処理手段は、前記プログラムカウン
    タにより読み出されるm個の命令の中のm番目にnm+h
    番地へ分岐する無条件分岐命令がある場合、前記無条件
    分岐命令を含むm個の命令に続くm個の命令の第1番目
    の命令を実行し、第2番目以降の全ての命令の実行を抑
    止してnm+h番地へ分岐し、nm番地からnm+h−1番地
    の命令の実行を抑止してnm+h番地から(n+1)m番
    地の命令をそれぞれ対応する前記演算ユニツトで実行さ
    せる手段とを備えた並列処理装置。
  19. 【請求項19】請求項13に記載の並列処理装置におい
    て、 前記条件付分岐命令処理手段は、前記プログラムカウン
    タにより読み出されるm個の命令の中の所定の番地に条
    件付分岐命令があるときに、従来の成立,不成立にかか
    わらず、前記m個の命令とこれに続く次の番地のm個の
    命令を実行して分岐する第1の手段を備え、 前記無条件分岐命令処理手段は、前記プログラムカウン
    タにより読み出される前記m個の命令の中の所定の番地
    に前記無条件分岐命令があるときに、m個の命令とこれ
    に続く次の番地のm個の命令を実行して分岐する第2の
    手段とを備えた並列処理装置。
  20. 【請求項20】読み出すべき命令を指示するプログラム
    カウンタと、 前記プログラムカウンタにより指示された命令を格納す
    るm個の命令レジスタと、 データが格納されるレジスタフアイルと、 前記レジスタフアイルを共有して演算を実行するm個の
    演算ユニツトと、 前記プログラムカウンタが指示する番地から読み出した
    連続するm個の命令を前記m個の演算ユニツトで処理す
    る並列処理と前記プログラムカウンタが指示する番地か
    ら読み出した連続する命令を前記m個の演算ユニツトの
    うちの1個で処理する逐次処理とのいずれかを選択的に
    実行させる実行手段と、 前記複数命令並列処理と逐次処理のいずれかの処理で前
    記実行手段を動作させるための指示信号をLSIのピンを
    用いて選択する選択手段 とを備えたことを特徴とする並列処理用LSI。
  21. 【請求項21】読み出すべき命令を指示するプログラム
    カウンタと、 指示された命令を格納するm個の命令レジスタと、 データが格納されるレジスタフアイルと、 前記レジスタフアイルを共有するm個の演算ユニツト
    と、 前記プログラムカウンタが指示する番地から読み出した
    連続するm個の命令をm個の演算ユニツトで処理する複
    数命令並列処理と前記プログラムカウンタが指示する番
    地から読み出した連続する命令を前記m個の演算ユニツ
    トのうちの1個で処理する逐次処理のうちのいずれの処
    理を実行しているかを示す処理状態識別手段と、 前記処理状態識別手段が示す値に応じて前記プログラム
    カウンタをmずつまたは1ずつ増加させるかを選択する
    手段と、 前記複数命令並列処理と逐次処理を選択的に実行させる
    実行手段と、 前記複数命令並列処理と逐次処理のいずれかの処理で前
    記実行手段を動作させるための指示信号をLSIのピンを
    用いて選択する選択手段 とを備えた並列処理用LSI。
  22. 【請求項22】プログラムカウンタにより読み出すべき
    命令を指示し、 m個の命令レジスタに読み出された命令を格納し、 レジスタフアイルにデータを格納し、 そしてm個の演算ユニツトで前記レジスタフアイルを共
    有して演算を行うときに、 前記プログラムカウンタが指示する番地から読み出した
    連続するm個の命令を前記m個の演算ユニツトで処理す
    る並列処理と、前記プログラムカウンタが指示する番地
    から読み出した連続する命令を前記m個の演算ユニツト
    のうちの1個で処理する逐次処理のいずれかの処理を、
    処理状態切替の指示に応じて選択すること を特徴とする並列処理方法。
  23. 【請求項23】プログラムカウンタにより読み出すべき
    命令を指示し、 m個の命令レジスタに読み出された命令を格納し、 レジスタフアイルにデータを格納し、 m個の演算ユニツトにより前記レジスタフアイルを共有
    して演算を行うときに、処理状態を切替える指示に応じ
    て、前記プログラムカウンタが指示する番地から読み出
    した連続するm個の命令をm個の演算ユニツトで処理す
    る並列処理と前記プログラムカウンタが指示する番地か
    ら読み出した連続する命令を前記m個の演算ユニツトの
    うちの1個で処理する逐次処理のうちのいずれかの処理
    を実行しているかを示す処理状態フラグを記憶し、 前記処理状態フラグが示す値に応じて、前記プログラム
    カウンタをmずつまたは1ずつ増加させるかを制御し、
    そして、複数命令を並列処理により実行するか、または
    逐次処理により個々の命令を実行するように前記演算ユ
    ニツトを制御すること を特徴とする並列処理方法。
JP2177425A 1989-07-07 1990-07-06 並列処理装置および並列処理方法 Expired - Fee Related JP2550213B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP17391489 1989-07-07
JP1-173914 1989-07-07

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP8051298A Division JP2636821B2 (ja) 1996-03-08 1996-03-08 並列処理装置

Publications (2)

Publication Number Publication Date
JPH03129433A JPH03129433A (ja) 1991-06-03
JP2550213B2 true JP2550213B2 (ja) 1996-11-06

Family

ID=15969419

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2177425A Expired - Fee Related JP2550213B2 (ja) 1989-07-07 1990-07-06 並列処理装置および並列処理方法

Country Status (5)

Country Link
US (3) US5287465A (ja)
EP (1) EP0407911B1 (ja)
JP (1) JP2550213B2 (ja)
KR (1) KR100208889B1 (ja)
DE (1) DE69032812T2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2785820B2 (ja) 1997-01-27 1998-08-13 株式会社日立製作所 並列処理装置

Families Citing this family (57)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2810068B2 (ja) * 1988-11-11 1998-10-15 株式会社日立製作所 プロセッサシステム、コンピュータシステム及び命令処理方法
US5361352A (en) * 1989-11-27 1994-11-01 Hitachi, Ltd. Method for debugging in a parallel computer system and system for the same
DE4129614C2 (de) * 1990-09-07 2002-03-21 Hitachi Ltd System und Verfahren zur Datenverarbeitung
US5203003A (en) * 1991-03-28 1993-04-13 Echelon Corporation Computer architecture for conserving power by using shared resources and method for suspending processor execution in pipeline
US5522052A (en) * 1991-07-04 1996-05-28 Matsushita Electric Industrial Co. Ltd. Pipeline processor for processing instructions having a data dependence relationship
US5493687A (en) 1991-07-08 1996-02-20 Seiko Epson Corporation RISC microprocessor architecture implementing multiple typed register sets
US5539911A (en) * 1991-07-08 1996-07-23 Seiko Epson Corporation High-performance, superscalar-based computer system with out-of-order instruction execution
DE69233493T2 (de) 1991-07-08 2005-07-28 Seiko Epson Corp. RISC-Prozessor mit erweiterbarer Architektur
WO1993020505A2 (en) * 1992-03-31 1993-10-14 Seiko Epson Corporation Superscalar risc instruction scheduling
EP0638183B1 (en) * 1992-05-01 1997-03-05 Seiko Epson Corporation A system and method for retiring instructions in a superscalar microprocessor
US5617549A (en) * 1992-10-06 1997-04-01 Hewlett-Packard Co System and method for selecting and buffering even and odd instructions for simultaneous execution in a computer
JPH06242951A (ja) * 1992-12-22 1994-09-02 Toshiba Corp キャッシュメモリシステム
EP1107111A3 (en) * 1992-12-31 2002-02-06 Seiko Epson Corporation System and method for register renaming
US5628021A (en) * 1992-12-31 1997-05-06 Seiko Epson Corporation System and method for assigning tags to control instruction processing in a superscalar processor
JP2742375B2 (ja) * 1993-01-08 1998-04-22 インターナショナル・ビジネス・マシーンズ・コーポレイション スーパースカラ・プロセッサにおける命令処理の選択的逐次化の方法およびシステム
JP3182591B2 (ja) * 1993-01-20 2001-07-03 株式会社日立製作所 マイクロプロセッサ
US6079014A (en) * 1993-12-02 2000-06-20 Intel Corporation Processor that redirects an instruction fetch pipeline immediately upon detection of a mispredicted branch while committing prior instructions to an architectural state
JPH07200289A (ja) * 1993-12-28 1995-08-04 Fujitsu Ltd 情報処理装置
US5481684A (en) * 1994-01-11 1996-01-02 Exponential Technology, Inc. Emulating operating system calls in an alternate instruction set using a modified code segment descriptor
US5542059A (en) * 1994-01-11 1996-07-30 Exponential Technology, Inc. Dual instruction set processor having a pipeline with a pipestage functional unit that is relocatable in time and sequence order
US5884057A (en) * 1994-01-11 1999-03-16 Exponential Technology, Inc. Temporal re-alignment of a floating point pipeline to an integer pipeline for emulation of a load-operate architecture on a load/store processor
US5564028A (en) * 1994-01-11 1996-10-08 Texas Instruments Incorporated Pipelined data processing including instruction trace
GB2289353B (en) * 1994-05-03 1997-08-27 Advanced Risc Mach Ltd Data processing with multiple instruction sets
GB2290395B (en) * 1994-06-10 1997-05-28 Advanced Risc Mach Ltd Interoperability with multiple instruction sets
US5481693A (en) * 1994-07-20 1996-01-02 Exponential Technology, Inc. Shared register architecture for a dual-instruction-set CPU
US5685009A (en) * 1994-07-20 1997-11-04 Exponential Technology, Inc. Shared floating-point registers and register port-pairing in a dual-architecture CPU
US5696956A (en) * 1995-11-08 1997-12-09 Digital Equipment Corporation Dynamically programmable reduced instruction set computer with programmable processor loading on program number field and program number register contents
US6209083B1 (en) * 1996-02-28 2001-03-27 Via-Cyrix, Inc. Processor having selectable exception handling modes
JP2636821B2 (ja) * 1996-03-08 1997-07-30 株式会社日立製作所 並列処理装置
US5799167A (en) * 1996-05-15 1998-08-25 Hewlett-Packard Company Instruction nullification system and method for a processor that executes instructions out of order
US5867681A (en) * 1996-05-23 1999-02-02 Lsi Logic Corporation Microprocessor having register dependent immediate decompression
US5896519A (en) * 1996-06-10 1999-04-20 Lsi Logic Corporation Apparatus for detecting instructions from a variable-length compressed instruction set having extended and non-extended instructions
US5794010A (en) * 1996-06-10 1998-08-11 Lsi Logic Corporation Method and apparatus for allowing execution of both compressed instructions and decompressed instructions in a microprocessor
DE69727127T2 (de) * 1996-11-04 2004-11-25 Koninklijke Philips Electronics N.V. Verarbeitungsgerät zum lesen von befehlen aus einem speicher
WO1998033115A1 (fr) * 1997-01-24 1998-07-30 Mitsubishi Denki Kabushiki Kaisha Processeur de donnees
US20030061471A1 (en) * 1999-07-23 2003-03-27 Masahito Matsuo Data processor
JP3650519B2 (ja) * 1997-12-17 2005-05-18 株式会社ルネサステクノロジ マイクロコンピュータ
US6625756B1 (en) 1997-12-19 2003-09-23 Intel Corporation Replay mechanism for soft error recovery
US6453412B1 (en) * 1999-07-20 2002-09-17 Ip First L.L.C. Method and apparatus for reissuing paired MMX instructions singly during exception handling
US6640313B1 (en) * 1999-12-21 2003-10-28 Intel Corporation Microprocessor with high-reliability operating mode
US6633969B1 (en) 2000-08-11 2003-10-14 Lsi Logic Corporation Instruction translation system and method achieving single-cycle translation of variable-length MIPS16 instructions
DE10101949C1 (de) * 2001-01-17 2002-08-08 Infineon Technologies Ag Datenverarbeitungsverfahren
US7711926B2 (en) * 2001-04-18 2010-05-04 Mips Technologies, Inc. Mapping system and method for instruction set processing
US6957321B2 (en) * 2002-06-19 2005-10-18 Intel Corporation Instruction set extension using operand bearing NOP instructions
EP1387257B1 (en) 2002-07-31 2017-08-23 Texas Instruments Inc. System to dispatch multiple instructions to available hardware resources
EP1708632A1 (en) * 2004-01-16 2006-10-11 Expanding Orthopedics, Inc. Bone fracture treatment devices
US7610474B2 (en) * 2005-12-01 2009-10-27 Sun Microsystems, Inc. Mechanism for hardware tracking of return address after tail call elimination of return-type instruction
US7836290B2 (en) * 2005-11-09 2010-11-16 Oracle America, Inc. Return address stack recovery in a speculative execution computing apparatus
US20100064118A1 (en) * 2008-09-10 2010-03-11 Vns Portfolio Llc Method and Apparatus for Reducing Latency Associated with Executing Multiple Instruction Groups
US9122797B2 (en) * 2008-09-30 2015-09-01 Honeywell International Inc. Deterministic remote interface unit emulator
JP5565228B2 (ja) 2010-09-13 2014-08-06 ソニー株式会社 プロセッサ
CN105190579B (zh) 2013-03-15 2018-04-06 英特尔公司 一种用于实现线路速度互连结构的方法
US9753691B2 (en) 2013-03-15 2017-09-05 Intel Corporation Method for a stage optimized high speed adder
US11003459B2 (en) 2013-03-15 2021-05-11 Intel Corporation Method for implementing a line speed interconnect structure
US9817666B2 (en) 2013-03-15 2017-11-14 Intel Corporation Method for a delayed branch implementation by using a front end track table
US10884976B2 (en) 2018-05-22 2021-01-05 Morumi Co., Ltd. Parallel processing unit and device for parallel processing
KR102199763B1 (ko) * 2020-08-21 2021-01-07 김경영 주파수가 상이한 전동장비에 대응할 수 있는 공사현장 설치용 변압기

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6043535B2 (ja) * 1979-12-29 1985-09-28 富士通株式会社 情報処理装置
JPS6028015B2 (ja) * 1980-08-28 1985-07-02 日本電気株式会社 情報処理装置
JPS5932045A (ja) * 1982-08-16 1984-02-21 Hitachi Ltd 情報処理装置
US4928223A (en) * 1982-10-06 1990-05-22 Fairchild Semiconductor Corporation Floating point microprocessor with directable two level microinstructions
US4594655A (en) * 1983-03-14 1986-06-10 International Business Machines Corporation (k)-Instructions-at-a-time pipelined processor for parallel execution of inherently sequential instructions
JPS6015746A (ja) * 1983-07-08 1985-01-26 Hitachi Ltd デ−タ処理装置
JPS60120439A (ja) * 1983-12-05 1985-06-27 Nec Corp 演算処理装置
JPS60136872A (ja) * 1983-12-26 1985-07-20 Hitachi Ltd ベクトル処理装置
US4794517A (en) * 1985-04-15 1988-12-27 International Business Machines Corporation Three phased pipelined signal processor
JPS6266338A (ja) * 1985-09-18 1987-03-25 Fujitsu Ltd パイプライン機構の試験方法
DE3751503T2 (de) * 1986-03-26 1996-05-09 Hitachi Ltd Datenprozessor in Pipelinestruktur mit der Fähigkeit mehrere Befehle parallel zu dekodieren und auszuführen.
JPS63131230A (ja) * 1986-11-21 1988-06-03 Hitachi Ltd 情報処理装置
JPS63201725A (ja) * 1987-02-17 1988-08-19 Fujitsu Ltd 信号処理回路
JPS63240634A (ja) * 1987-03-27 1988-10-06 Nec Corp 情報処理装置
US5101341A (en) * 1988-08-25 1992-03-31 Edgcore Technology, Inc. Pipelined system for reducing instruction access time by accumulating predecoded instruction bits a FIFO

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2785820B2 (ja) 1997-01-27 1998-08-13 株式会社日立製作所 並列処理装置

Also Published As

Publication number Publication date
KR100208889B1 (ko) 1999-07-15
US5287465A (en) 1994-02-15
EP0407911A2 (en) 1991-01-16
DE69032812D1 (de) 1999-01-21
US5561775A (en) 1996-10-01
DE69032812T2 (de) 1999-04-29
JPH03129433A (ja) 1991-06-03
EP0407911B1 (en) 1998-12-09
KR910003490A (ko) 1991-02-27
EP0407911A3 (en) 1992-10-14
US5404472A (en) 1995-04-04

Similar Documents

Publication Publication Date Title
JP2550213B2 (ja) 並列処理装置および並列処理方法
EP0996057B1 (en) Data processor with an instruction unit having a cache and a ROM
JP2931890B2 (ja) データ処理装置
JP2918631B2 (ja) デコーダ
US6718457B2 (en) Multiple-thread processor for threaded software applications
JP2834837B2 (ja) プログラマブルコントローラ
US4954943A (en) Data processing system
JP2636821B2 (ja) 並列処理装置
US5187782A (en) Data processing system
JP2785820B2 (ja) 並列処理装置
JP2927281B2 (ja) 並列処理装置
JP3147884B2 (ja) 記憶装置及び情報処理装置
JP3102399B2 (ja) データ処理装置及び方法
EP0365187A2 (en) Apparatus for selective execution of instructions following a branch instruction
Craig et al. PIPE: A High Performance VLSI Processor Implementation
JPS58114250A (ja) 共有マイクロプロセツサ
Katz et al. PIPE: A HIGH PERFORMANCE VLSI PROCESSOR IMPLEMENTATION GL Craig JR Goodman
JPH03163627A (ja) 命令処理装置

Legal Events

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