JP2000305782A - 演算装置 - Google Patents

演算装置

Info

Publication number
JP2000305782A
JP2000305782A JP11447499A JP11447499A JP2000305782A JP 2000305782 A JP2000305782 A JP 2000305782A JP 11447499 A JP11447499 A JP 11447499A JP 11447499 A JP11447499 A JP 11447499A JP 2000305782 A JP2000305782 A JP 2000305782A
Authority
JP
Japan
Prior art keywords
exception
pipeline
register
output
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.)
Pending
Application number
JP11447499A
Other languages
English (en)
Inventor
Tomochika Kaneki
朋睦 鹿子木
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 JP11447499A priority Critical patent/JP2000305782A/ja
Publication of JP2000305782A publication Critical patent/JP2000305782A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

(57)【要約】 【課題】 例外イネーブルフラグが0にセットされてお
り、レジスタハザードが起こった場合に、高速に演算を
実行する演算装置を提供することを目的とする。 【解決手段】 例外検出器は例外を検出し検出結果を出
力する。制御部はレジスタハザード信号を出力する。A
NDゲートは例外検出結果とレジスタハザード信号とを
入力として、論理和演算を実行する。この結果により、
レジスタから読み出したデータと例外用の固定値のどち
らか一方を選択することで、パイプラインを停止させる
ことなく演算を実行する。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、浮動小数点演算等
の演算実行ステージが複数サイクルからなるパイプライ
ン演算装置に関する。
【0002】
【従来の技術】近年、半導体プロセスの微細化が進み、
システムを1つのチップに集積できるようになった。マ
イコンは、システム全体からみると、システムを構築す
る1つのパーツになる。システム全体を考えた場合、シ
ステムを構成するマイコン以外のパーツで行っていた処
理をマイコンで処理させたほうが、システム全体のチッ
プコストを安くできることがある。このため、マイコン
に様々な演算を実装するようになった。
【0003】しかし、このような演算は、それまでのマ
イコンが行ってきた演算に対し、非常に多くの時間を必
要とする。マイコンの動作周波数を低下することなく、
機能拡張された演算を実行するためには、演算を複数の
実行ステージに分けて、パイプライン的に演算する方法
が一般的に知られている。
【0004】図4に3つ実行ステージ(EX1〜EX
3)を持つ従来の演算装置の構成図を示す。同図におい
て、101はレジスタファイル、102〜104は3ス
テージで1つの演算を完了するパイプライン演算器、1
05は演算器全体を制御する制御部、106はパイプラ
イン演算器104の出力を入力として、例外を検出する
例外検出器、107は例外検出器106の出力により演
算器104の出力又は例外用の固定値のどちらか一方を
選択し出力するセレクタ、108、109はレジスタフ
ァイルから読み出したデータ又はセレクタ107の出力
のどちらか一方を選択し出力するセレクタ、110、1
11はそれぞれセレクタ108、109の出力を保持す
るパイプラインレジスタ、112、113はそれぞれパ
イプライン演算器102、103の出力を保持するパイ
プラインレジスタである。
【0005】演算装置は、レジスタファイルから読み出
した2つのデータに対し、演算を行ない、その演算結果
をレジスタファイルに格納する。
【0006】従来の演算装置について、単一命令を実行
した場合の動作について説明する。セレクタ108、1
09は、レジスタファイルから読み出したデータを選択
し、パイプラインレジスタ110及び111はそれぞれ
セレクタ108及び109の出力を保持する。パイプラ
イン演算器102はパイプラインレジスタ110、11
1に保持されたデータを入力として演算を実行し、演算
における第1の中間データを出力する。パイプラインレ
ジスタ112はパイプライン演算器102の出力である
第1の中間データを保持する。パイプライン演算器10
3はパイプラインレジスタ112に保持されたデータを
入力として、演算を実行し、演算における第2の中間デ
ータを出力する。パイプラインレジスタ113はパイプ
ライン演算器103の出力である第2の中間データを保
持する。パイプライン演算器104はパイプラインレジ
スタ113に保持されたデータを入力として、演算を実
行し、演算結果を出力する。例外検出器106はパイプ
ライン演算器104の出力により例外信号を生成し、そ
の例外信号を制御部105とセレクタ107へ出力す
る。例外検出器106において例外を検出した場合、セ
レクタ107は例外用に用意された固定値を選択し出力
する。例外を検出しなかった場合、セレクタ107はパ
イプライン演算器104の演算結果を選択し出力する。
制御部105は内部に例外イネーブルフラグをもってお
り、これが1にセットされているときに例外検出器10
6で例外を検出した場合は、実行中の命令を中止して例
外処理を行う。例外イネーブルフラグが0にセットされ
ている場合は、例外検出器106で例外を検出しても例
外処理を行わず、実行中の命令をそのまま続行する。例
外処理を行なわなかった場合、レジスタファイル101
は、セレクタ107の出力を保持し、演算を完了する。
【0007】次に連続して命令を実行する場合に生じる
レジスタハザードとレジスタハザードによるペナルティ
を軽減するためのデータフォワーディングについて説明
する。
【0008】まず、レジスタハザードについて説明す
る。先行する演算命令がレジスタファイル中のレジスタ
D0に書き込みを行い、後続する演算命令がレジスタD
0を読み出そうとする場合、先行する演算命令が完了す
るまで、後続演算命令はレジスタD0を読み出すことが
できず、制御部105により演算を停止させられる。こ
のレジスタ干渉がレジスタハザードである。演算の停止
は、パイプラインレジスタへデータを書き込まないこと
で行なう。また、レジスタハザードの検出は、先行演算
命令で使用するレジスタと後続演算命令で使用するレジ
スタを比較することで行なう。
【0009】次にデータフォワーディングについて説明
する。データ読み出しはDECステージで行なわれ、レ
ジスタファイルへの書き込みはWBステージで行なわれ
る。したがって、レジスタハザードが起こった場合、後
続演算命令は、DECステージにあり、先行演算命令は
EX1ステージにあるので、3サイクル(EX2〜W
B)の間、後続演算命令は停止させられる。しかし、先
行演算命令において、EX3ステージで演算結果が確定
しているので、EX3ステージでの演算結果を後続演算
命令が使用できるような機構を持つことで、レジスタハ
ザードによる3サイクルのペナルティを2サイクルにで
きる。このEX3ステージからDECステージへデータ
を渡す機構をデータフォワーディングという。
【0010】図5は、レジスタハザードを起こしている
場合の従来の演算装置のタイミング図である。同図にお
いて、先行演算命令は、レジスタD0とD1を読み出
し、演算OP1を実行し、レジスタD1に演算結果を書
き込む命令である。後続演算命令は、レジスタD1とD
2を読み出し、演算OP2を実行し、レジスタD2に演
算結果を書き込む命令である。図5に示すように先行演
算命令はC5のタイミングでレジスタD0を更新し命令
を完了する。後続演算命令は、先に述べたレジスタハザ
ードが起こっているので、演算の実行を停止させられ
る。セレクタ108及び109において、セレクタ10
7の出力を選択することで、EX3からDECステージ
へデータフォワーディングを行ない、C4のタイミング
で、後続演算命令はレジスタの読み出しを完了し、C5
のタイミングで演算の実行を開始する。
【0011】次に、制御部105の動作について説明す
る。制御部105は内部に例外イネーブルフラグを持っ
ており、例外イネーブルフラグが1にセットされてお
り、且つ、例外検出器106で例外を検出した場合、後
続の演算命令をキャンセルし、例外処理を行なう。この
ため、後続演算命令でレジスタハザードが起こっていて
も、その命令はキャンセルされるので、レジスタハザー
ドによる数サイクルのペナルティは生じない。
【0012】例外処理には多くのサイクル数が必要とな
るため、一連の演算において途中の演算結果はどうでも
よく、最終の演算結果だけを高速に求める場合に、例外
イネーブルフラグを0にセットして一連の演算を実行す
る。このような場合は、例外検出器106で例外を検出
しても、制御部105は検出結果を受け付けず、当該の
命令を続行する。このため、演算装置は、例外検出器1
06で例外を検出しても、例外が検出されない場合と同
様のサイクル数で演算を完了する。
【0013】
【発明が解決しようとする課題】以上のような従来の演
算装置において、例外イネーブルフラグが0にセットさ
れており、レジスタハザードが起こった場合には、例外
検出器106の検出結果に関係なく、常に数サイクルの
ペナルティが生じてしまう。このために、高速に演算を
完了することができないとの課題があった。
【0014】
【課題を解決するための手段】この課題を解決するた
め、請求項1記載の本発明は、L段のパイプラインステ
ージからなる演算装置において、演算データを保持する
レジスタファイルと、パイプラインステージのいずれか
のステージで例外を検出する検出手段と、前記レジスタ
ファイルから読み出したデータと任意の固定値のどちら
か一方を、前記検出手段の出力により選択的に出力する
セレクタとを備えることを特徴とする演算装置を備えた
ものである。
【0015】請求項2記載の本発明は、L段のパイプラ
インステージからなる演算装置において、2M個の読み
出しポートとM個の書き込みポートをもつレジスタファ
イルと、前記レジスタファイルから読み出したデータ又
は任意の固定値のどちらか一方を、少なくとも一つの制
御信号により選択的に出力するセレクタと、前記セレク
タの出力を保持する第1の記憶素子と、前記第1の記憶
素子に保持されたデータを入力として演算を実行するL
−1段のパイプライン演算器と、パイプラインステージ
のいずれかのステージで例外を検出する例外検出器と、
パイプラインを制御する演算部と、前記例外検出器の出
力と前記制御部の出力を入力として前記セレクタの制御
信号を生成する手段と、前記パイプライン演算器の出力
を前記レジスタファイルの入力することを特徴とする演
算装置を備えたものである。
【0016】
【発明の実施の形態】以下、本発明の実施の形態につい
て、図1〜図3を用いて説明する。
【0017】図1は、本発明の一実施の形態に係る演算
装置の概略構成を示したものである。図1において、1
はレジスタファイル、2〜4は3ステージで1つの演算
を完了するパイライン演算器、5は演算器全体を制御す
る制御部、7、8はレジスタファイルから読み出したデ
ータ又はパイプライン演算器4の出力のどちらか一方を
選択し出力するセレクタ、9、10はそれぞれセレクタ
7、8の出力を又は例外用固定値のどちらか一方を選択
し出力するセレクタ、11、12はそれぞれセレクタ
9、10の出力を保持するパイプラインレジスタ、6は
パイプラインレジスタ11及び12に保持されたデータ
を入力として、例外を検出しその結果を出力する例外検
出器、16は例外検出器6の出力により、パイプライン
演算器2の出力又は例外用固定値のどちらか一方を選択
し出力するセレクタ、13はセレクタ16の出力を保持
するパイプラインレジスタ、14はパイプライン演算器
3の出力を保持するパイプラインレジスタ、15は制御
部5からの制御信号と例外検出器6の出力を入力として
論理積演算を行い、演算結果をセレクタ9、10に出力
するANDゲートである。
【0018】次に、本発明の詳細な構成について説明す
る。
【0019】制御部5は内部に例外イネーブルフラグを
もっており、例外イネーブルフラグが″1″にセットさ
れており、且つ、例外検出器6の出力が″1″の場合、
実行中の命令を中止し、例外処理を行なう。例外イネー
ブルフラグが″0″のセットされている場合、例外検出
器6の結果を受け付けず、当該の命令を続行する。ま
た、制御部5は先行演算命令で書き込むレジスタと後続
演算命令で読み出すレジスタが同じ場合、ANDゲート
15へ″1″を出力する。セレクタ7、8はデータフォ
ワーディングを行なう場合は、パイプライン演算器4の
出力を選択し、データフォワーディングを行なわない場
合は、レジスタファイルから読み出したデータを選択し
出力する。セレクタ9、10は、ANDゲート15の出
力が″1″の場合は例外用固定値を選択し、ANDゲー
ト15の出力が″0″の場合は、それぞれ、セレクタ
7、8の出力を選択し、出力する。パイプラインレジス
タ11及び12はそれぞれセレクタ9、10の出力を保
持する。パイプライン演算器2はパイプラインレジスタ
11、12に保持されたデータを入力として演算を実行
し、演算における第1の中間データを出力する。また、
例外検出器6もパイプラインレジスタ11、12に保持
されたデータを入力として演算を実行し、例外を検出し
た場合は″1″、例外を検出しなかった場合は″0″を
制御部5、ANDゲート15、セレクタ16へ出力す
る。セレクタ16は例外検出器6の出力が″1″の場
合、例外用固定値を選択し、例外検出器6の出力が″
0″の場合は、パイプライン演算器2の出力を選択し出
力する。パイプラインレジスタ13はセレクタ16の出
力を保持する。パイプライン演算器3はパイプラインレ
ジスタ13に保持されたデータを入力として、演算を実
行し、演算における第2の中間データを出力する。パイ
プラインレジスタ14はパイプライン演算器3の出力で
ある第2の中間データを保持する。パイプライン演算器
4はパイプラインレジスタ14に保持されたデータを入
力として、演算を実行し、演算結果を出力する。例外処
理を行なわない場合、レジスタファイル1はパイプライ
ン演算器4の出力を保持し、命令を完了する。
【0020】ここで、例外検出器6の詳細な構成図を図
2に示す。説明の便宜上、例外検出については、非数
(NaN)とオーバーフロー(OVF)を検出するもの
とする。図2において、21はパイプラインレジスタ1
1に保持されたデータと非数を表すデータの比較を行う
比較器、22はパイプラインレジスタ12に保持された
データと非数を表すデータの比較を行う比較器、23は
パイプラインレジスタ11、12に保持されたデータを
入力として加算を実行しその結果を出力する加算器、2
4は加算器23の出力と無限大を表すデータの比較を行
う比較器、25は比較器21、22、24の出力を入力
として論理和演算を行うORゲートである。比較器21
及び22はそれぞれパイプラインレジスタ11、12に
保持されたデータが非数の場合に″1″を出力する。デ
ータが非数でない場合は″0″を出力する。加算器23
はパイプラインレジスタ11、12に保持されたデータ
を入力として、加算を実行し、その結果を出力する。こ
の加算結果が最大値を超えている場合、比較器24は″
1″を出力する。加算結果が最大値を超えていない場
合、比較器24は″0″を出力する。ORゲート25
は、比較器21、22、24の出力の論理和演算を行う
ため、比較器21、22、24の出力のうち、少なくと
もどれか一つが″1″ならば、ORゲート25の出力
は″1″となる。以上のように例外検出器6では非数と
無限大の例外を検出し、例外を検出した場合は″1″を
出力し、例外を検出しなかった場合は″0″を出力す
る。
【0021】以上のように構成された演算装置につい
て、以下、その動作について説明する。例外イネーブル
フラグが″1″にセットされている場合、または、例外
検出器6で例外を検出しなかった場合は、従来の演算装
置と同じ動作なので説明は省略する。ここでは、例外イ
ネーブルフラグが″0″にセットされていて、先行演算
命令において、例外検出器6で例外を検出した場合につ
いて述べる。
【0022】連続する命令を実行した場合、本発明の演
算装置のタイミング図を図3に示す。図3において、先
行演算命令は、レジスタD0とD1を読み出し、演算O
P1を実行し、レジスタD1に演算結果を書き込む命令
である。後続演算命令は、レジスタD1とD2を読み出
し、演算OP2を実行し、レジスタD2に演算結果を書
き込む命令である。
【0023】まず、1サイクル目(C1)、DECステ
ージで先行演算命令はレジスタファイルよりデータを読
み出し、そのデータをパイプラインレジスタ11、12
に保持する。
【0024】2サイクル目(C2)、先行演算命令はE
X1ステージに進み、例外検出器6は例外を検出する。
これにより例外検出器6の出力は″1″となる。また、
同サイクルにおいて、後続演算命令はDECステージに
あり、レジスタファイルよりデータを読み出そうとす
る。先行演算命令の書き込みレジスタと後続演算命令の
読み出しレジスタが同じであるため、制御部5はAND
ゲート15に″1″を出力する。したがって、ANDゲ
ート15の出力は″1″となり、セレクタ9、10は例
外用固定値を選択し出力する。パイプラインレジスタ1
1、12はセレクタ9、10の出力を保持する。
【0025】3サイクル目(C3)、後続演算命令はE
X1ステージにて、この例外用固定値を用い演算を実行
する。これにより、後続演算命令のレジスタハザードが
解消される。
【0026】
【発明の効果】本発明の演算装置では、例外イネーブル
フラグが0にセットされている状態で、レジスタハザー
ドによるペナルティサイクルを削減できるという有利な
効果が得られる。
【0027】また、制御部の例外イネーブルフラグが0
にセットされている場合、一連の命令を実行した後に、
最終的な演算結果を見ることで演算の途中で例外が起こ
ったかどうかを知ることができる。例外検出器は、例外
用の固定値を書き込んだレジスタを再度使用すると、必
ず例外を検出する。このように、演算結果が例外情報を
伝える役割をするため、一度例外検出器で例外を検出す
ると、一連の命令を実行中に頻繁に例外を検出すること
になる。これにより、本演算装置は、一連の命令を実行
した場合に大きな効果が得られる。
【図面の簡単な説明】
【図1】本発明の実施の形態に係る演算装置の概略構成
【図2】本発明の実施の形態に係る例外検出器の詳細な
構成図
【図3】本発明の実施の形態に係るタイミング図
【図4】従来の演算装置の概略構成図
【図5】従来の演算装置のタイミング図
【符号の説明】
1 レジスタファイル 2、3、4 パイプライン演算器 5 制御部 6 例外検出器 7、8、9、10 セレクタ 11、12、13、14 パイプラインレジスタ 15 ANDゲート

Claims (2)

    【特許請求の範囲】
  1. 【請求項1】 L段のパイプラインステージからなる演
    算装置において、演算データを保持するレジスタファイ
    ルと、パイプラインステージのいずれかのステージで例
    外を検出する検出手段と、前記レジスタファイルから読
    み出したデータと任意の固定値のどちらか一方を、前記
    検出手段の出力により選択的に出力するセレクタとを備
    えることを特徴とする演算装置。
  2. 【請求項2】 L段のパイプラインステージからなる演
    算装置において、2M個の読み出しポートとM個の書き
    込みポートをもつレジスタファイルと、前記レジスタフ
    ァイルから読み出したデータ又は任意の固定値のどちら
    か一方を、少なくとも一つの制御信号により選択的に出
    力するセレクタと、前記セレクタの出力を保持する第1
    の記憶素子と、前記第1の記憶素子に保持されたデータ
    を入力として演算を実行するL−1段のパイプライン演
    算器と、パイプラインステージのいずれかのステージで
    例外を検出する例外検出器と、パイプラインを制御する
    演算部と、前記例外検出器の出力と前記制御部の出力を
    入力として前記セレクタの制御信号を生成する手段と、
    前記パイプライン演算器の出力を前記レジスタファイル
    の入力することを特徴とする請求項1記載の演算装置。
JP11447499A 1999-04-22 1999-04-22 演算装置 Pending JP2000305782A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP11447499A JP2000305782A (ja) 1999-04-22 1999-04-22 演算装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP11447499A JP2000305782A (ja) 1999-04-22 1999-04-22 演算装置

Publications (1)

Publication Number Publication Date
JP2000305782A true JP2000305782A (ja) 2000-11-02

Family

ID=14638654

Family Applications (1)

Application Number Title Priority Date Filing Date
JP11447499A Pending JP2000305782A (ja) 1999-04-22 1999-04-22 演算装置

Country Status (1)

Country Link
JP (1) JP2000305782A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017027351A (ja) * 2015-07-22 2017-02-02 富士通株式会社 演算処理装置および演算処理装置の制御方法
CN113608914A (zh) * 2021-08-10 2021-11-05 安谋科技(中国)有限公司 一种芯片、芯片的功能安全检测方法、介质和电子设备

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017027351A (ja) * 2015-07-22 2017-02-02 富士通株式会社 演算処理装置および演算処理装置の制御方法
CN113608914A (zh) * 2021-08-10 2021-11-05 安谋科技(中国)有限公司 一种芯片、芯片的功能安全检测方法、介质和电子设备
CN113608914B (zh) * 2021-08-10 2024-04-26 安谋科技(中国)有限公司 一种芯片、芯片的功能安全检测方法、介质和电子设备

Similar Documents

Publication Publication Date Title
US6233670B1 (en) Superscalar processor with direct result bypass between execution units having comparators in execution units for comparing operand and result addresses and activating result bypassing
US5404552A (en) Pipeline risc processing unit with improved efficiency when handling data dependency
EP0155211B1 (en) System for by-pass control in pipeline operation of computer
US5537561A (en) Processor
JP4996654B2 (ja) プロセッサ
JPH0348536B2 (ja)
JP2535252B2 (ja) 並列処理装置
JP2009169767A (ja) パイプライン型プロセッサ
JP2004530966A (ja) イベント処理
JP2000305782A (ja) 演算装置
WO2007057831A1 (en) Data processing method and apparatus
JP2824484B2 (ja) パイプライン処理計算機
JP2869376B2 (ja) データ依存関係を持つ複数のデータ処理を実行するパイプラインデータ処理方法
JP2812610B2 (ja) パイプライン制御方式
JPH0277940A (ja) データ処理装置
JP2925842B2 (ja) パイプライン処理装置
JPH06139071A (ja) 並列計算機
JPH04175930A (ja) データ処理装置
JPH0228724A (ja) 分岐命令制御方式
JPH04218834A (ja) 条件分岐制御回路
JPH05250161A (ja) マイクロコンピュータ装置
JPS6364130A (ja) 分岐命令制御方法
JP2001092629A (ja) バイパス制御回路
JPH0258128A (ja) データ処理装置
JPH0546385A (ja) レジスタ干渉制御回路