[go: up one dir, main page]

JP2553728B2 - 演算装置 - Google Patents

演算装置

Info

Publication number
JP2553728B2
JP2553728B2 JP2043009A JP4300990A JP2553728B2 JP 2553728 B2 JP2553728 B2 JP 2553728B2 JP 2043009 A JP2043009 A JP 2043009A JP 4300990 A JP4300990 A JP 4300990A JP 2553728 B2 JP2553728 B2 JP 2553728B2
Authority
JP
Japan
Prior art keywords
instruction
register
data
executed
arithmetic unit
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
JP2043009A
Other languages
English (en)
Other versions
JPH03245223A (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.)
Panasonic Holdings Corp
Original Assignee
Matsushita Electric Industrial Co 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 Matsushita Electric Industrial Co Ltd filed Critical Matsushita Electric Industrial Co Ltd
Priority to JP2043009A priority Critical patent/JP2553728B2/ja
Publication of JPH03245223A publication Critical patent/JPH03245223A/ja
Application granted granted Critical
Publication of JP2553728B2 publication Critical patent/JP2553728B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Landscapes

  • Advance Control (AREA)

Description

【発明の詳細な説明】 産業上の利用分野 本発明は、プロセサ内に演算器を複数個有し、複数命
令に対してそのデータ依存関係を識別して複数個の演算
器を同時または逐次的に実行する演算装置に関するもの
である。
従来の技術 従来、演算器を複数個設けた演算装置としては、VLIW
(ベリーロング・インストラクション・ワード Very L
ong Instruction Word)計算機と呼ばれるアーキテクチ
ャが知られている。
第4図は従来の同アーキテクチャのブロック図であ
り、レジスタファイル401は第1の演算器402へデータを
供給するためのデータ読出しポートrs1d、rs2a並びに第
1の演算器402の演算結果を書込むためのポートrdaを備
えている。そして、同レジスタファイル401は、第2の
演算器403へデータを供給するためのデータ読出しポー
トrs1b、rs2b並びに第2の演算器403の演算結果を書込
むためのポートrdbをも備えている。命令レジスタ404
は、前記2つの演算器402、403を同時に動作させるため
に、2命令を格納できるビット長を持ち、命令バス405
を経由してデータがこの命令レジスタ404に格納され
る。命令レジスタ404中の2命令は、制御信号406、407
をそれぞれ介して第1の演算器402、第2の演算器403へ
の指令となる。
このようなアーキテクチャを採用すると、プロセサ内
部では、最大2命令までを並列に実行することが可能と
なり、ベクトル化の効かない命令の高速化を達成するこ
とが可能となる。
第5図は従来のプロセサに対する命令格納メモリの内
容例を示す図であり、基本的には、命令1語に対し第1
列と第2列の2つの命令が格納された形態のメモリであ
る。プロセサは命令ポインタで指示される命令語を順次
取出し、命令レジスタ404に格納し、命令レジスタ404に
格納された命令を実行することになる。命令R0=R1+R2
を例にとると、命令の実行は次のようになる。レジスタ
ファイル401から読出されたレジスタR1、R2の内容が第
1の演算器401に送られ、R1とR2が加算される。そし
て、この演算結果のR0がレジスタファイル401に入力し
て格納されるのである。
第5図には、同時に実行することが不可能な命令が格
納されている状態も、合わせて表示してある。即ち、第
1列、第4エントリにある命令R3=R0−R3は、同列第3
エントリの命令R0=R1−R2の実行後でないと、実行不可
能である。同時に、第1列、第5エントリの命令R5=R3
−R2は、同列第4エントリ命令R3=R0−R3の実行後でな
いと実行不可能である。同時実行不可能な理由は、命令
の演算結果を次の命令で使用するからであり、演算結果
は、レジスタファイル401に格納しない限り、次命令で
のレジスタファイル401の読出しが実行できない。
したがって、第5図に示されるように、命令格納メモ
リ中にはnop命令が格納され、メモリに無駄が生じるこ
とになる。
第6図には、第4図のプロセサが第5図に示された命
令を実行するときのタイミングチャートしてあり、10、
12…16は第5図の第1列の第1エントリから第5エント
リに格納された命令に対応し、11、13…17は、第2列の
第1エントリから第5エントリに格納された命令に対応
する。ここに、「I」は、命令格納メモリから命令を読
出して命令レジスタ404に格納するまでの時間を示し、
「E」はレジスタファイル401中のレジスタからデータ
を読出した後、演算を施して、この演算結果をレジスタ
ファイル401に格納するまでの時間を示す。
このタイミングチャートからも理解されるように、第
1、第2の演算器402、403を有する場合に、命令の1語
長を大きくすることにより並列動作が表現できるから、
1つずつ命令を実行することに比較して、高性能が達成
できる点がVLIW計算器の大きな特長である。
発明が解決しようとする課題 ところで、前述した従来のVLIW計算器にあっては、no
p命令が存在するため、最も密度の高い状態で命令格納
メモリに命令を充填できないから、次のような問題点も
含む。即ち、演算器2つ用のプロセサと1つ用のプロセ
サでは結合性が無く、演算器1のプロセサで動作するプ
ログラムのコンパイルコードは、演算器2つのプロセサ
上では正常に動作しなくなり、プログラムの再コンパイ
ル動作が必要になる。また、パイプラインの段数が、命
令フュッチと実行の2段であるため、nop命令の実行時
間の命令全体の実行時間に占める比率が大きい等の課題
がある。
本発明は、前述したような従来の課題に鑑みてなされ
たもので、その目的とするところは、複数個の演算器を
有するプロセサであって、演算器1つ用のコンパイルコ
ードにも動作でき、再コンパイル動作が不用で、コード
を圧縮でき、演算動作を高速化できる演算装置を提供す
ることにある。
課題を解決するための手段 上記目的を達成するため、本発明の演算装置は複数の
データの読み出しポート、および複数の演算結果を格納
するための書き込みポートをもち、これらのポートが独
立に同時操作可能な機能をもつレジスタファイルと、前
記レジスタファイルの個々のポートからの読み出しデー
タを格納する入力ラッチと、これらのうちの2つの入力
ラッチに格納されたデータを入力として制御信号により
定まる演算を、これら2つのデータの間で施す機能を有
する複数の演算器と、それぞれの演算器の出力を格納す
る出力ラッチと、出力ラッチをレジスタファイルの書き
込みポートに接続した構成において、演算器への入力デ
ータをレジスタ番号で指定し、演算結果の格納場所をレ
ジスタ番号で指定し、演算種別を制御コードで指定する
命令コードを、複数個保持できる命令レジスタを具備
し、メモリに格納された命令を命令レジスタにフェッチ
するフェッチステージ、その命令レジスタの内容をデコ
ードし、演算器の入力ラッチへ指定レジスタの内容を読
み出すデコードステージ、演算器でこれらのデータを演
算し、出力データを出力ラッチに格納する実行ステー
ジ、さらに出力ラッチの内容をレジスタに格納する書き
込みステージの4段パイプラインでの実行において、命
令レジスタに引続き格納、実行される2つの命令は、最
初に同時実行される複数命令コードにより格納場所とし
て指定されるレジスタ番号と次に同時実行される複数命
令コードで指定される演算入力のデータを格納している
レジスタ番号とが同一であることを検出する第1の判定
機構を有し、前記検出結果に基づき、演算器への入力を
演算器の出力ラッチ内に格納されたデータを使うことを
可能とするセレクタを具備し、さらに命令レジスタ中の
複数の命令コードを同時実行する場合に、これらの命令
コード間でデータ依存関係が存在することを検出する第
2の判定機構を有し、これにより命令レジスタに格納さ
れた命令コード内にデータ依存関係がパイプラインのデ
コードステージで検出された場合は最初に実行されるべ
き命令コードは個々のステージを順次実行させ、後続す
る依存関係のある命令コードは、実行ステージを無操作
として、その次のタイミングで実行フェーズに移行させ
る操作を順次データ依存関係がある命令コードに繰り返
し適用し、この命令の次に実行される命令コードは、前
記命令の命令コードで最後に実行された命令コードが実
行ステージになった時に、デコードフェーズに移行させ
るものである。
作 用 このような演算装置によると、同時に複数命令が実行
可能でない場合に1命令ずつパイプライン動作したとき
と、同等のパフォーマンスを保証できる。
実施例 以下、第1図ないし第3図を用いて本発明の実施例を
詳細に説明する。
本実施例は、2つの命令を同時実行させる場合を説明
しているが、これは3命令以上の同時実行をさせる場合
も、以下の考えを拡張することで実現できる。
第1図は、2個の演算器を用いた場合の本発明による
演算装置のブロック図である。レジスタファイル101
は、データ読出しポートとしてのrs1a、rs2a、rs1b、rs
2bの4つの独立ポートをもち、書込みポートとしてはrd
a、rdbの2つの独立ポートを有している。入力ラッチ10
2、103、108、109には、レジスタファイル101からの読
出しデータが格納される。第1、第2の演算器106、112
の演算結果は、その出力ラッチ107、113にそれぞれ格納
されるが、出力ラッチ107の出力は、第1、第2の演算
器106、112の入力を選択するためのセレクタ104、105、
110、111に接続されると共に、レジスタファイル101の
ポートrdaにも接続される。同様に、出力ラッチ113の出
力もセレクタ104、105、110、111に接続され、レジスタ
ファイル101のポートrdbにも接続される。
命令バス116は、第1、第2の演算器106、112を同時
に動作させることが可能なビット巾をもったもので、命
令格納メモリからの読出し結果は命令レジスタ114に格
納される。そして、命令レジスタ114中に格納された2
つの命令は、デコード信号118を通して第1の演算器106
用の指令となり、デコード信号117を通して第2の演算
器112用の指令となる。データ依存判定回路115は、命令
レジスタ114に格納された命令が同時実行可能か否かを
判定し、同時実行不可能である場合は、命令を逐次的に
実行させる機能を備えている。
第2図は命令格納メモリの内容例を示し、第3図には
この命令を実行したときのタイミングチャートを示して
ある。タイミングチャート中の「I」は、命令格納メモ
リから命令レジスタ114への命令格納時間、「D」はレ
ジスタファイル101からデータを読出して第1、第2の
演算器106、112の入力ラッチ102、103、108、109へ転送
するデータ転送時間、「E」は第1、第2の演算器10
6、112に対するデータが入力されて演算結果が出力ラッ
チ107、113に格納されるまでの時間、「W」は出力ラッ
チ107、113の内容がレジスタファイル101に格納される
までの時間とする。
命令格納メモリから読み出された命令I0(R0=R1+R
2)及びI1(R3=R1−R2)の実行は次のように進む。ま
ずI0、I1の命令が時刻t1に命令レジスタ114に格納され
る。次に、命令I0で示される演算ソースであるレジスタ
ファイル101中のレジスタR1、R2の内容が読出され、第
1の演算器106の入力ラッチ102、103に保持される。同
様に、命令I1の演算ソースであるR1、R2の内容も、第2
の演算器112の入力ラッチ108、109に保持される。この
作業はDフェーズに相当し、時刻t2に終了するが、Eフ
ェーズでは、2つの第1、第2の演算器106、112で加
算、減算が同時に行なわれ、演算結果が時刻t3に出力ラ
ッチ107、113に格納される。Wフェーズでは、これら出
力ラッチ107、113の内容がレジスタファイル101のR0、R
3に同時に書込まれる。この作業は時刻t4に終了する。
2つの命令が同時に実行可能であるのは、I0ののデステ
ィネーションレジスタが、I1のソースレジスタと異なっ
ているからである。
同様に、I2(R4=R1+R2)、I3(R5=R3+R2)の実行
の場合、これらの2つの命令は同時に実行可能である。
しかし、I3のEフェーズでは、I1の命令によって更新さ
れるレジスタR3の内容をソースデータとして用いている
から、I3のEフェーズの実行は、I1のWフェーズの実行
と同時に進む。したがって、I3のEフェーズの実行直前
には、レジスタR3の内容は更新されていないため、第1
図のデータ依存判別回路115が働き、I3のDフェーズで
は、R3に書込むべきデータを保持している第2の演算器
112の出力ラッチ113から後のEフェーズで用いる入力デ
ータを入手することにすればよい。つまり、このように
すれば、命令I2、I3が同時に実行できるのみならず、直
前の命令I0、I1との間での命令実行パイプラインを乱さ
ずに、命令実行ができることになる。
このデータ依存判別回路の機能は、命令レジスタの内
容をこの回路内にコピーして、この中の2つの命令中の
ソースレジスタ番号と、新たな命令レジスタの命令中の
デスティネーションレジスタ番号との一致を検出するこ
とで実現できる。
次の命令であるI4(R0=R1−R2)、I5(R3=R0−R3)
の実行に関しては、I4の結果をI5が使用するので、同時
実行することはできない。このことは、データ依存判別
回路115を用いてDフェーズで検出判定できる。詳細に
いうと、この処理は、I5のEフェーズを1段遅らせるこ
とで(即ち時刻t5〜時刻t6の間)行なうことにする。こ
の一段分の遅延を実現することは、第1図の出力ラッチ
113に演算結果データを格納しないことで実現される、
図3では、この操作をnopと記述してある。次にt5−t6
の時間では、I4をnop化することが行なわれる。これ
は、レジスタファイルへの格納を行なわないことを意味
する。このようなデータ依存関係が生じた時には、t4−
t5,t5−t6をEフェーズとすることは、Eフェーズを2
つ続けるための回路で実現できる。
時刻t5以降は通常のフェーズ実行に移行する。この結
果、引く続く命令I6、I7、I8、I9に影響が発生する。こ
れは、1サイクル分の実行がパイプラインで遅延したこ
とに起因する。図3では、依存関係が発覚した時刻は、
I4、I5のDフェーズ実行時点であるので、I6、I7のt4−
t5の時間でおこなう操作は、nop操作とする。この時点
ではI6、I7は命令レジスタに格納されており、Dフェー
ズ実行結果としての演算器の入力ラッチへのデータ格納
を禁止することで実現される。
本例では、I6(R5=R3−R2)、I7(R6=R1−R)は同
時実行可能であるので、パイプラインの遅延は発生して
いない。さらに、命令I8、I9に関しては、Iフェーズを
始めることを抑制することが行なわれる。これは、メモ
リフェッチを開始することを次のタイミングにづらすこ
とで実現される。このようにして、パイプラインのみだ
れを正常にすることをおこなう。
このような処理により、引く続き命令レジスタに格納
された命令と命令レジスタ内に格納された複数命令で
も、データ依存関係があり、同時に実行可能でない場合
にもデータの依存関係をみたしつつ実行される。この場
合は、データ依存関係のある命令は逐次実行された場合
と同一実行時間となっており、無駄なサイクルは生じて
いない。
発明の効果 以上に述べてきたように、本発明によれば、演算器1
つ用にコンパイルされたオブジェクトでも、複数個の演
算器を有するプロセサで動作することが可能になり、再
コンパイル動作が不要になる。また、本発明では、コン
パイルドコード中に並列実行可能でない演算器の命令フ
ィールドをnop化する命令を入れる必要がないため、コ
ードを圧縮化できる。そして、本発明では、複数個の演
算器を同時に動作するため、1つの演算器のプロセサに
比較して演算動作が高速になる。
【図面の簡単な説明】
第1図は本発明による演算装置のブロック結線図、第2
図は命令格納メモリの内容例を示す概念図、第3図は命
令実行のパイプラインのタイミングチャート、第4図は
従来の演算装置のブロック結線図、第5図は命令格納メ
モリの内容例を示す概念図、第6図は命令実行のタイミ
ングチャートである。 101……レジスタファイル、102、103、108、109……入
力ラッチ、106……第1の演算器、112……第2の演算
器、107、113……出力ラッチ、114……命令レジスタ、1
15……データ依存判別回路。
───────────────────────────────────────────────────── フロントページの続き (72)発明者 佐久嶋 和生 大阪府門真市大字門真1006番地 松下電 器産業株式会社内 (72)発明者 吹野 美和 大阪府門真市大字門真1006番地 松下電 器産業株式会社内 (56)参考文献 特開 昭62−55736(JP,A)

Claims (1)

    (57)【特許請求の範囲】
  1. 【請求項1】複数のデータの読み出しポート、および複
    数の演算結果を格納するための書き込みポートをもち、
    これらのポートが独立に同時操作可能な機能をもつレジ
    スタファイルと、 前記レジスタファイルの個々のポートからの読み出しデ
    ータを格納する入力ラッチと、 これらのうちの2つの入力ラッチに格納されたデータを
    入力として制御信号により定まる演算を、これら2つの
    データの間で施す機能を有する複数の演算器と、 それぞれの演算器の出力を格納する出力ラッチと、 出力ラッチをレジスタファイルの書き込みポートに接続
    した構成において、 演算器への入力データをレジスタ番号で指定し、演算結
    果の格納場所をレジスタ番号で指定し、演算種別を制御
    コードで指定する命令コードを、複数個保持できる命令
    レジスタを具備し、 メモリに格納された命令を命令レジスタにフェッチする
    フェッチステージ、その命令レジスタの内容をデコード
    し、演算器の入力ラッチへ指定レジスタの内容を読み出
    すデコードステージ、演算器でこれらのデータを演算
    し、出力データを出力ラッチに格納する実行ステージ、
    さらに出力ラッチの内容をレジスタに格納する書き込み
    ステージの4段パイプラインでの実行において、 命令レジスタに引続き格納、実行される2つの命令は、
    最初に同時実行される複数命令コードにより格納場所と
    して指定されるレジスタ番号と次に同時実行される複数
    命令コードで指定される演算入力のデータを格納してい
    るレジスタ番号とが同一であることを検出する第1の判
    定機構を有し、 前記検出結果に基づき、演算器への入力を演算器の出力
    ラッチ内に格納されたデータを使うことを可能とするセ
    レクタを具備し、 さらに命令レジスタ中の複数の命令コードを同時実行す
    る場合に、これらの命令コード間でデータ依存関係が存
    在することを検出する第2の判定機構を有し、 これにより命令レジスタに格納された命令コード内にデ
    ータ依存関係がパイプラインのデコードステージで検出
    された場合は最初に実行されるべき命令コードは個々の
    ステージを順次実行させ、後続する依存関係のある命令
    コードは、実行ステージを無操作として、その次のタイ
    ミングで実行フェーズに移行させる操作を順次データ依
    存関係がある命令コードに繰り返し適用し、この命令の
    次に実行される命令コードは、前記命令の命令コードで
    最後に実行された命令コードが実行ステージになった時
    に、デコードフェーズに移行させることで、命令の同時
    実行を可能とする演算装置。
JP2043009A 1990-02-23 1990-02-23 演算装置 Expired - Lifetime JP2553728B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2043009A JP2553728B2 (ja) 1990-02-23 1990-02-23 演算装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2043009A JP2553728B2 (ja) 1990-02-23 1990-02-23 演算装置

Publications (2)

Publication Number Publication Date
JPH03245223A JPH03245223A (ja) 1991-10-31
JP2553728B2 true JP2553728B2 (ja) 1996-11-13

Family

ID=12651992

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2043009A Expired - Lifetime JP2553728B2 (ja) 1990-02-23 1990-02-23 演算装置

Country Status (1)

Country Link
JP (1) JP2553728B2 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2607759B2 (ja) * 1991-02-25 1997-05-07 富士通株式会社 除算器
JP2742375B2 (ja) * 1993-01-08 1998-04-22 インターナショナル・ビジネス・マシーンズ・コーポレイション スーパースカラ・プロセッサにおける命令処理の選択的逐次化の方法およびシステム
JP3534987B2 (ja) * 1997-10-20 2004-06-07 富士通株式会社 情報処理装置

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4734852A (en) * 1985-08-30 1988-03-29 Advanced Micro Devices, Inc. Mechanism for performing data references to storage in parallel with instruction execution on a reduced instruction-set processor

Also Published As

Publication number Publication date
JPH03245223A (ja) 1991-10-31

Similar Documents

Publication Publication Date Title
US5404552A (en) Pipeline risc processing unit with improved efficiency when handling data dependency
EP0213842A2 (en) Mechanism for performing data references to storage in parallel with instruction execution on a reduced instruction-set processor
KR960001274B1 (ko) 트랩 및 스톨 제어기능을 갖는 병렬처리형 프로세서 시스템
JPS6231379B2 (ja)
JP3449186B2 (ja) パイプラインバイパス機能を有するデータ処理装置
JPH07248897A (ja) コンピュータ・システムにおける例外からの回復方法、及びそのための装置
JPS6351287B2 (ja)
JPH06242948A (ja) パイプライン処理計算機
JPH0553803A (ja) プロセツサ
EP0093430A2 (en) Pipeline data processing system
JPH03286332A (ja) デジタルデータ処理装置
JPH1185513A (ja) プロセッサ
JP2553728B2 (ja) 演算装置
US6263424B1 (en) Execution of data dependent arithmetic instructions in multi-pipeline processors
JP2916605B2 (ja) コンピュータ用プロセツサ
JP3490005B2 (ja) 命令制御装置及びその方法
US5931942A (en) Pipeline data processing apparatus of reduced circuit scale
JPH0222413B2 (ja)
JP2904624B2 (ja) 並列演算処理装置
JP3915019B2 (ja) Vliwプロセッサ、プログラム生成装置、および記録媒体
JP2667851B2 (ja) 情報処理装置
JP2824484B2 (ja) パイプライン処理計算機
JP2812610B2 (ja) パイプライン制御方式
JPH06131180A (ja) 命令処理方式および命令処理装置
JP2915131B2 (ja) データ処理装置