JP2001188670A - 演算装置 - Google Patents

演算装置

Info

Publication number
JP2001188670A
JP2001188670A JP2000000246A JP2000000246A JP2001188670A JP 2001188670 A JP2001188670 A JP 2001188670A JP 2000000246 A JP2000000246 A JP 2000000246A JP 2000000246 A JP2000000246 A JP 2000000246A JP 2001188670 A JP2001188670 A JP 2001188670A
Authority
JP
Japan
Prior art keywords
data
pipeline
selector
output
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
JP2000000246A
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 JP2000000246A priority Critical patent/JP2001188670A/ja
Publication of JP2001188670A publication Critical patent/JP2001188670A/ja
Pending legal-status Critical Current

Links

Abstract

(57)【要約】 【課題】 複数のデータタイプを扱う演算装置におい
て、ハードウェア増加を押さえつつ、高速なデータフォ
ワーディングを実行する演算装置を提供することを目的
とする。 【解決手段】 3ステージから成るパイプライン演算器
は、演算結果データとそのデータに対するデータタイプ
を並列に求め出力する。パイプライン演算器の出力を次
の演算で使用する場合、データと併せデータタイプのフ
ォワーディングを行う。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、浮動小数点演算
等、複数のデータタイプを持つ演算装置に関する。
【0002】
【従来の技術】近年、パソコンや家庭用端末といった分
野において、3次元グラフィクス処理は欠かせない処理
となってきている。この3次元グラフィクス処理におい
て、必須の演算に浮動小数点演算がある。浮動小数点演
算は、マイクロプログラムによりソフトウェア的に実現
することも可能であるが、この場合、処理に多くのサイ
クル数がかかってしまう。先に述べた分野においては、
非常に高速な浮動小数点演算が要求されるため、近年の
マイクロプロセッサは、浮動小数点演算を高速に実行す
る浮動小数点演算ユニット(FPU)を備えている。浮
動小数点演算ユニットは、高速動作を実現するため、い
くつかのパイプラインステージにわけて演算を実行す
る。
【0003】図10に3つ実行ステージ(EX1〜EX
3)を持つ従来の浮動小数点演算ユニットの構成図を示
す。同図において、101はレジスタファイル、102
〜104は3ステージで1つの演算を完了するパイプラ
イン演算器、105は演算における例外を判定する例外
判定部、108、109はレジスタファイルから読み出
したデータを入力とし、IEEE754(the Institut
e of Electrical andElectronics Engineers, Inc.)に
示されたデータタイプを判定するデータタイプチェック
器、110、111はそれぞれデータタイプチェック器
108、109の出力を保持するパイプラインレジス
タ、112、113はレジスタファイル101から読み
出したデータを保持するパイプラインレジスタ、11
4、115はそれぞれパイプライン演算器102、10
3の出力を保持するパイプラインレジスタである。
【0004】従来の浮動小数点演算ユニットについて、
単一命令を実行した場合の動作について説明する。
【0005】まず、データタイプチェック器108、1
09は、レジスタファイル101から読み出した2つの
データを入力とし、データタイプの判定を行い、パイプ
ラインレジスタ110、111はそれぞれデータタイプ
チェック器108、109の出力を保持する。パイプラ
インレジスタ112、113はレジスタファイル101
から読み出したデータを保持する。例外判定部105
は、演算対象データのデータタイプによりIEEE75
4に示された例外を判定し、その結果をCPUへ通知す
る。パイプライン演算器102はパイプラインレジスタ
112、113に保持されたデータを入力として演算を
実行し、演算における第1の中間データを出力する。パ
イプラインレジスタ114はパイプライン演算器102
の出力である第1の中間データを保持する。パイプライ
ン演算器103はパイプラインレジスタ114に保持さ
れたデータを入力として演算を実行し、演算における第
2の中間データを出力する。パイプラインレジスタ11
5はパイプライン演算器103の出力である第2の中間
データを保持する。パイプライン演算器104はパイプ
ラインレジスタ115に保持されたデータを入力として
演算を実行し、演算結果を出力する。レジスタファイル
101にパイプライン演算器104の出力を書き込み、
演算を完了する。
【0006】以上のような従来の浮動小数点演算ユニッ
トにおいて、レジスタハザードが起こった場合について
説明する。
【0007】連続する2つの命令において、後続命令で
データハザードを起こす命令を図8に示す。図8におい
て、先行命令FADDはレジスタFS1とFS2に格納
されたデータに対し、浮動小数加算を実行し加算結果を
FS2に格納する命令である。また、後続命令FADD
はレジスタFS3とFS2に格納されたデータに対し、
浮動小数加算を実行し加算結果をFS2に格納する命令
である。後続命令は先行命令の演算結果を演算データと
して使用するため、レジスタFS2に関してデータハザ
ードを起こし、先行命令が完了(レジスタへの書き込み
が完了)するまで演算開始を待たされてしまう。このと
きのタイミング図を図11に示す。
【0008】レジスタハザードによるペナルティの削減
方法として、データフォワーディング機能が一般的に知
られている。
【0009】データフォワーディング機能は、レジスタ
ファイルから読み出したデータとパイプライン演算器1
04の出力である演算結果を選択するセレクタを新たに
設けることで実装できる。
【0010】データフォワーディング機能を実装した浮
動小数点ユニットの構成を図12に、また、図8に示す
命令実行時におけるタイミング図を図13に示す。
【0011】
【発明が解決しようとする課題】データフォワーディン
グ機能がない場合の1クロックサイクルをTとし、デー
タフォワーディング機能追加により増加した遅延時間を
αとすると、図8に示した命令を完了するのにかかる時
間は図12及び図14に示すように、データフォワーデ
ィング機能がない場合は9Tであり、データフォワーデ
ィング機能がある場合は8(T+α)である。
【0012】したがって、αがTに対して非常に小さい
場合は、データフォワーディング機能によりレジスタハ
ザードのペナルティを削減する効果がある。
【0013】しかし、データタイプがいくつもあるよう
なデータを扱う演算装置において、データフォワーディ
ング機能を実装しようとすると、図9に示すように、パ
イプライン演算器104、セレクタ106(又は10
7)、データタイプチェック器108(又は109)と
いうクリティカルパスができてしまい、1クロックサイ
クルが大きくなってしまう。
【0014】これにより、データフォワーディングによ
るペナルティの削減効果が薄れてしまうとの課題があっ
た。
【0015】
【課題を解決するための手段】この課題を解決するため
に、請求項1記載の本発明は、少なくとも2つ以上のデ
ータタイプを持ち、Nステージのパイプラインステージ
から成る演算装置において、演算を実行し演算結果を出
力するM(M<N)ステージのパイプライン演算器と、
前記パイプライン演算器の演算結果に対するデータタイ
プをパイプラインのいずれかのステージで検出し、その
結果を出力するデータタイプ検出器を備え、前記パイプ
ライン演算器の演算結果を演算データとして用いる場
合、前記データタイプ検出器の出力をデータタイプとし
て用いることを特徴とする演算装置を備えたものであ
る。
【0016】請求項2記載の本発明は、請求項1記載の
発明において、少なくとも2つ以上のデータタイプを持
ち、Nステージのパイプラインステージから成る演算装
置において、演算データを保持するレジスタファイル
と、M(M<N)ステージのパイプライン演算器と、少
なくとも前記レジスタファイルから読み出したデータと
前記パイプライン演算器の演算結果を入力として任意の
入力データを選択的に出力する第1のセレクタと、前記
第1のセレクタの出力を入力としてデータタイプを判定
する第1の判定器と、前記パイプライン演算器の演算に
おける中間データを入力としてデータタイプを判定する
第2の判定器と、少なくとも前記第1の判定器の出力と
前記第2の判定器の出力とを入力として任意の入力デー
タタイプを選択的に出力する第2のセレクタとを備え、
前記パイプライン演算器の演算結果を前記レジスタファ
イルの入力とし、前記第1のセレクタの出力を前記パイ
プライン演算器の入力とし、前記第1のセレクタが前記
パイプライン演算器の演算結果を選択する場合、前記第
2のセレクタは前記第2の判定器の出力をデータタイプ
として選択することを特徴とする演算装置を備えたもの
である。
【0017】請求項3記載の本発明は、請求項1記載の
発明において、少なくとも2つ以上のデータタイプを持
ち、Nステージのパイプラインステージから成る演算装
置において、演算データを保持するレジスタファイル
と、M(M<N)ステージのパイプライン演算器と、少
なくとも前記レジスタファイルから読み出したデータと
前記パイプライン演算器の演算結果を入力として任意の
入力データを選択的に出力する第1のセレクタと、前記
第1のセレクタの出力を入力としてデータタイプを判定
する判定器と、データタイプを保持する記憶素子と、少
なくとも前記判定器の出力と前記記憶素子に保持された
データタイプを入力として任意の入力データタイプを選
択的に出力する第2のセレクタとを備え、前記パイプラ
イン演算器の演算結果を前記レジスタファイルの入力と
し、前記第1のセレクタの出力を前記パイプライン演算
器の入力とし、前記第2のセレクタの出力を前記記憶素
子の入力とし、前記第1のセレクタが前記パイプライン
演算器の演算結果を選択する場合、前記第2のセレクタ
は前記記憶素子に保持されたデータを選択することを特
徴とする演算装置を備えたものである。
【0018】請求項4記載の本発明は、請求項1記載の
発明において、少なくとも2つ以上のデータタイプを持
ち、Nステージのパイプラインステージから成る演算装
置において、演算データを保持するレジスタファイル
と、演算データに対してのデータタイプを保持するタイ
プファイルと、M(M<N)ステージのパイプライン演
算器と、少なくとも前記レジスタファイルから読み出し
たデータと前記パイプライン演算器の演算結果を入力と
して任意の入力データを選択的に出力する第1のセレク
タと、前記パイプライン演算器の演算における中間デー
タを入力として、データタイプを判定する判定器と、少
なくとも前記タイプファイルから読み出したデータと前
記判定器の出力を入力として任意の入力データを選択的
に出力する第2のセレクタとを備え、前記パイプライン
演算器の演算結果を前記レジスタファイルの入力とし、
前記判定器の出力を前記タイプファイルの入力とし、前
記第1のセレクタの出力を前記パイプライン演算器の入
力とし、前記第1のセレクタが前記パイプライン演算器
の演算結果を選択する場合、前記第2のセレクタは前記
判定器の出力を選択することを特徴とする演算装置を備
えたものである。
【0019】
【発明の実施の形態】以下、本発明の実施の形態につい
て、図1〜図7を用いて説明する。
【0020】(実施の形態1)図1は、本発明の一実施
の形態に係る演算装置の概略構成を示したものである。
図1において、101はレジスタファイル、102〜1
04は3ステージで1つの演算を完了し、演算結果デー
タとデータタイプを出力するパイプライン演算器、10
5は演算における例外を判定する例外判定部、106、
107はレジスタファイルから読み出したデータとパイ
プライン演算器104のデータ出力のどちらかを選択し
その結果を出力するセレクタ、108、109はそれぞ
れセレクタ106、107の出力を入力とし、データタ
イプを判定するデータタイプチェック器、116はデー
タタイプチェック器108の出力とパイプライン演算器
104のデータタイプ出力のどちらか一方を選択し出力
するセレクタ、117はデータタイプチェック器109
の出力とパイプライン演算器104のデータタイプ出力
のどちらか一方を選択し出力するセレクタ、110、1
11はそれぞれセレクタ116、117の出力を保持す
るパイプラインレジスタ、112、113はそれぞれセ
レクタ106、107の出力を保持するパイプラインレ
ジスタ、114、115はそれぞれパイプライン演算器
102、103の出力を保持するパイプラインレジスタ
である。
【0021】まず、データタイプチェック器108、1
09の詳細な構成について説明する。データタイプチェ
ック器108、109の詳細な構成を図3に示す。
【0022】図3において、31〜33は比較器であ
る。比較器31〜33は、それぞれ入力データと無限
大、ゼロ、非数との比較を行い、一致した場合に1を出
力する。
【0023】次に、例外判定部105について説明す
る。
【0024】例外判定部105は、IEEE754に示
された例外を検出するブロックである。本実施の形態で
は説明の便宜上、検出する例外を無効演算例外とする。
無効演算は、演算に使用しているデータタイプにより検
出し、無効演算を検出した場合、無効演算信号は1とな
り、CPUとパイプライン演算器に出力する。
【0025】次に、パイプライン演算器102〜104
の詳細な構成とその動作について以下説明する。
【0026】パイプライン演算器102〜104の詳細
な構成を図2に示す。図2において、21は2つの演算
データの指数部の大きいものを選択し出力するセレク
タ、22は2つの演算データの仮数部に対して桁合わせ
を行うシフタ、23は桁合わせされた2つの仮数部の加
算を行う加算器、24は加算器23の加算結果を正規化
する正規化器、25は正規化による指数部の補正を行う
加算器、26は正規化器24の出力を入力として丸め処
理を行う丸め器、27は加算器25の加算結果を入力と
して演算結果がオーバーフローの時はオーバーフロー信
号を1にし、アンダーフローの時はアンダーフロー信号
を1にして出力する判定器、28は判定器27の出力と
例外判定部105から無効演算であることを示す信号を
制御信号として、オーバーフロー信号が1の場合は無限
大、アンダーフロー信号が1の場合はゼロ、無効演算信
号が1の場合は非数、それ以外の場合は丸め器26及び
加算器25の演算結果を出力するセレクタである。
【0027】以上のように構成されたパイプライン演算
器について、2つのデータA=3.75とB=0.8125の浮動小
数加算を例にしてその動作を説明する。
【0028】2つのデータA、Bは指数を用いた形式で
表現することができ、説明の都合上、指数部は10進
数、仮数部は2進数で表現すると、正規化した表現で
は、A=1.111x2^(1)とB=1.101x2^(-1)となる。
【0029】ここで正規化とは、仮数部の整数部が”
1”となるようにすることを意味する。正規化された2
つの演算データA、Bの指数部はそれぞれ”1”と”−
1”であり、仮数部はそれぞれ”1.111”と”1.101”で
ある。
【0030】説明の都合上、仮数部の有効桁は4ビット
(整数部と小数点以下3位まで)とし、最大値は1.111x
2^(9)、最小値は1.000x2^(-9)として以下説明する。
【0031】セレクタ21は指数部の大きいほうを選択
し出力するので、”1”を出力する。シフタ22は、
A、Bの指数の差だけ仮数部をデータシフトするので、
A、Bそれぞれの仮数部は、”1.111”と”0.01101”
(1.101を2ビット右シフトした値)となる。これにより
2つの演算データは、A=1.111x2^(1)、B=0.01101x2^(1)
となりパイプライン演算器102は桁合わせを完了す
る。
【0032】桁合わせされた演算の中間データはパイプ
ラインレジスタ114に保持される。
【0033】パイプライン演算器103は、パイプライ
ンレジスタ114に保持された中間データに対して加算
を行う。指数部に関しては、桁合わせがすでに行われて
いるので、そのまま”1”を出力する。仮数部は”1.11
1”と”0.01101”の加算を行い、加算結果”10.01001”
を出力する。
【0034】演算の中間データはパイプラインレジスタ
115に保持される。
【0035】パイプライン演算器104は、パイプライ
ンレジスタ115に保持された中間データについて正規
化、丸め、オーバフロー及びアンダーフローの判定を行
い、最終的な演算結果を求める。
【0036】仮数部の加算結果は”10.01001”であり、
これを正規化器24で正規化すると1.001001x2^(1)とな
る。したがって、正規化器24は、仮数”1.001001”と
指数補正”1”を出力する。
【0037】加算器25は正規化器24からの指数補正
データ”1”とパイプラインレジスタ115に保持され
た指数データ”1”との加算を行うので、加算器25の
出力は”2”となる。
【0038】丸め器26は正規化器24の出力である仮
数”1.001001”に対し丸め処理を行う。ここで丸め処理
は有効桁(4ビット)以外を切捨てるとすると、丸め器
26の出力は、”1.001”となる。
【0039】以上により、演算の中間結果として仮数
部”1.001”と指数部”2”を得る。
【0040】オーバーフロー及びアンダーフローを判定
する判定器27において、入力されたデータと最大値及
び最小値の指数部の比較と行う。最大値、最小値の指数
部はそれぞれ”9”と”−9”である。判定器27は、
入力されたデータが”9”より大きい場合はオーバーフ
ロー信号を1とし、”−9”より小さい場合はアンダー
フロー信号を1として出力する。浮動小数加算の中間結
果の指数部である加算器25の出力は”2”なので、判
定器27はオーバーフロー信号、アンダーフロー信号を
ともに0として出力する。
【0041】ここで、浮動小数加算は正規化数どうしの
加算であり、IEEE754に示された無効演算ではな
いので、例外判定部105は無効演算信号を0として出
力する。
【0042】オーバーフロー信号、アンダーフロー信
号、無効演算信号がすべて0なので、セレクタ28は、
加算器25と丸め器26の演算結果(指数部2、仮数部
1.001)を選択し出力する。これにより浮動小数加算結
果1.001x2^(2)(=4.5)を得る。
【0043】以上のように、パイプライン演算器102
〜104は浮動小数演算を実行し、演算結果を出力す
る。また、パイプライン演算器104のセレクタ28で
使用している制御信号を浮動小数演算結果のデータタイ
プとして出力する。
【0044】以上のように構成された演算装置におい
て、データフォワーディング時の動作について、以下説
明する。
【0045】ここで、連続する2つの命令において、後
続の命令でデータハザードを起こす命令は図8に示した
ものとする。
【0046】まず、1サイクル目、レジスタファイル1
01より先行演算で使用するFS1、FS2を読み出
す。
【0047】セレクタ106、107はレジスタファイ
ル101より読み出したデータを選択し出力し、パイプ
ラインレジスタ112、113はセレクタ106、10
7の出力を保持する。データタイプチェック器108、
109はレジスタファイルから読み出したFS1、FS
2について、データタイプを判定し、その結果をパイプ
ラインレジスタ110、111に保持する。
【0048】2サイクル目、パイプライン演算器102
はレジスタファイルより読み出したデータについて桁合
わせ処理を行い、パイプラインレジスタ114は先行演
算における中間データを保持する。また、同サイクルに
おいて、後続演算で使用するFS3、FS2をレジスタ
ファイル101より読み出そうとする。しかし、先行演
算によりFS2が確定していないので、図示していない
制御部によりデータ読み出しが停止させられる。
【0049】3サイクル目、パイプライン演算器103
はパイプラインレジスタ114に保持されたデータにつ
いて加算を行い、パイプラインレジスタ115は先行演
算における中間データを保持する。同サイクルにおい
て、後続演算のデータ読み出しは停止されたままであ
る。
【0050】4サイクル目、パイプライン演算器104
はパイプラインレジスタ115に保持されたデータにつ
いて正規化、丸め、オーバーフロー及びアンダーフロー
チェックを行い、先行演算の浮動小数加算結果を出力す
る。この時点で浮動小数加算結果が確定(FS2の値が
確定)するので、セレクタ107はパイプライン演算器
104の出力を選択することでデータフォワーディング
を行い、FS2のデータ読み出しを行う。また、FS3
はレジスタファイルから読み出し、後続演算におけるデ
ータ読み出しを完了する。データタイプチェック器10
8はレジスタファイルから読み出したFS3のデータタ
イプを判定し、セレクタ116はデータタイプチェック
器108の出力を選択し、その結果をパイプラインレジ
スタ110が保持する。セレクタ117はパイプライン
演算器104から出力されたデータタイプを選択し、そ
の結果をパイプラインレジスタ111が保持する。
【0051】5サイクル目、先行演算の浮動小数加算結
果はレジスタファイル101に格納され、先行演算は完
了する。また、パイプライン演算器102で後続演算の
桁合わせ処理を行う。
【0052】6サイクル目、7サイクル目でパイプライ
ン演算器103、104は後続演算を実行し、8サイク
ル目で後続演算の浮動小数加算結果をレジスタファイル
101に格納し、後続演算は完了する。
【0053】以上のように、データフォワーディングに
おいて、後続演算で使用するデータ自身とそのデータタ
イプも併せてフォワーディングするので、従来必要であ
ったフォワーディングしたデータに対してのデータタイ
プ判定が必要なくなる。このため、浮動小数点演算ユニ
ットの遅延時間は図4に示すようになり、高速なデータ
フォワーディング機能を実装できる。
【0054】(実施の形態2)図5は、本発明の一実施
の形態に係る演算装置の概略構成を示したものである。
図5において、101はレジスタファイル、102〜1
04は3ステージで1つの演算を完了し、演算結果デー
タを出力するパイプライン演算器、105は演算におけ
る例外を判定する例外判定部、106、107はレジス
タファイルから読み出したデータとパイプライン演算器
104のデータ出力のどちらかを選択しその結果を出力
するセレクタ、108、109はそれぞれセレクタ10
6、107の出力を入力とし、データタイプを判定する
データタイプチェック器、116はデータタイプチェッ
ク器108の出力とパイプラインレジスタ119に保持
されたデータのどちらか一方を選択し出力するセレク
タ、117はデータタイプチェック器109の出力とパ
イプラインレジスタ119に保持されたデータのどちら
か一方を選択し出力するセレクタ、110、111はそ
れぞれセレクタ116、117の出力を保持するパイプ
ラインレジスタ、112、113はそれぞれセレクタ1
06、107の出力を保持するパイプラインレジスタ、
114、115はそれぞれパイプライン演算器102、
103の出力を保持するパイプラインレジスタ、118
はパイプラインレジスタ111の出力を保持し、パイプ
ラインレジスタ119へ出力するパイプラインレジスタ
である。
【0055】以上のように構成された演算装置におい
て、データフォワーディング時の動作について、以下説
明する。
【0056】ここで、連続する2つの命令において、後
続の命令でデータハザードを起こす命令を図6に示す。
図6において、先行命令FMOVはレジスタFS1に格
納されたデータとゼロの浮動小数点加算を実行し結果を
FS2に格納する命令である。また、後続命令FADD
はレジスタFS3とFS2に格納されたデータに対し、
浮動小数加算を実行し加算結果をFS2に格納する命令
である。
【0057】まず、1サイクル目、レジスタファイル1
01より先行演算で使用する数値ゼロとFS1に保持さ
れたデータを読み出す。セレクタ106、107はレジ
スタファイル101より読み出したデータを選択し出力
し、パイプラインレジスタ112、113はそれぞれセ
レクタ106、107の出力を保持する。データタイプ
チェック器108、109はそれぞれゼロとFS1につ
いて、データタイプを判定し、その結果をパイプライン
レジスタ110、111に保持する。
【0058】2サイクル目、パイプライン演算器102
はレジスタファイルより読み出したデータについて桁合
わせ処理を行い、パイプラインレジスタ114は先行演
算における中間データを保持する。また、パイプライン
レジスタ111に保持されたFS1のデータタイプをパ
イプラインレジスタ118が保持する。同サイクルにお
いて、後続演算で使用するFS3、FS2をレジスタフ
ァイル101より読み出そうとする。しかし、先行演算
によりFS2が確定していないので、図示していない制
御部によりデータ読み出しが停止させられる。
【0059】3サイクル目、パイプライン演算器103
はパイプラインレジスタ114に保持されたデータにつ
いて加算処理を行い、パイプラインレジスタ115は先
行演算における中間データを保持する。また、パイプラ
インレジスタ118に保持されたFS1のデータタイプ
をパイプラインレジスタ119が保持する。同サイクル
において、後続演算のデータ読み出しは停止されたまま
である。
【0060】4サイクル目、パイプライン演算器104
はパイプラインレジスタ115に保持されたデータにつ
いて正規化、丸め、オーバーフロー及びアンダーフロー
チェックを行い、先行演算の浮動小数加算結果を出力す
る。この時点で浮動小数加算結果が確定(FS2の値が
確定)するので、セレクタ107はパイプライン演算器
104の出力を選択することでデータフォワーディング
を行い、FS2のデータ読み出しを完了する。また、F
S3はレジスタファイルから読み出し、後続演算におけ
るデータ読み出しを完了する。データタイプチェック器
108はレジスタファイルから読み出したFS3のデー
タタイプを判定し、セレクタ116はデータタイプチェ
ック器108の出力を選択し、その結果をパイプライン
レジスタ110が保持する。セレクタ117はパイプラ
インレジスタ119に保持されたデータタイプを選択
し、その結果をパイプラインレジスタ111が保持す
る。
【0061】5サイクル目、先行演算の浮動小数加算結
果はレジスタファイル101に格納され、先行演算は完
了する。また、パイプライン演算器102で後続演算の
桁合わせ処理を行う。
【0062】6サイクル目、7サイクル目でパイプライ
ン演算器103、104は後続演算を実行し、8サイク
ル目で後続演算結果をレジスタファイル101に格納
し、後続演算を完了する。
【0063】以上のように、データフォワーディングに
おいて、後続演算で使用するデータ自身とそのデータタ
イプも併せてフォワーディングするので、従来必要であ
ったフォワーディングしたデータに対してのデータタイ
プ判定が必要なくなる。
【0064】(実施の形態3)図7は、本発明の一実施
の形態に係る演算装置の概略構成を示したものである。
図7において、101はレジスタファイル、120はレ
ジスタファイルに格納されたデータに対してのデータタ
イプを保持するタイプファイル、102〜104は3ス
テージで1つの演算を完了し、演算結果データとデータ
タイプを出力するパイプライン演算器、105は演算に
おける例外を判定する例外判定部、106、107はレ
ジスタファイルから読み出したデータとパイプライン演
算器104のデータ出力のどちらかを選択しその結果を
出力するセレクタ、116はタイプファイルから読み出
したデータとパイプライン演算器104のデータタイプ
出力のどちらか一方を選択し出力するセレクタ、117
はタイプファイルから読み出したデータとパイプライン
演算器104のデータタイプ出力のどちらか一方を選択
し出力するセレクタ、110、111はそれぞれセレク
タ116、117の出力を保持するパイプラインレジス
タ、112、113はそれぞれセレクタ106、107
の出力を保持するパイプラインレジスタ、114、11
5はそれぞれパイプライン演算器102、103の出力
を保持するパイプラインレジスタである。
【0065】以上のように構成された演算装置におい
て、データフォワーディング時の動作について、以下説
明する。
【0066】ここで、連続する2つの命令において、後
続の命令でデータハザードを起こす命令を図8に示す。
【0067】まず、1サイクル目、レジスタファイル1
01より先行演算で使用するFS1、FS2を読み出
し、タイプファイル120からレジスタFS1、FS2
のデータタイプを読み出す。セレクタ106、107は
レジスタファイル101より読み出したデータを選択
し、パイプラインレジスタ112、113はセレクタ1
06、107の出力を保持する。また、セレクタ11
6、117はタイプファイル120から読み出したデー
タを選択し、パイプラインレジスタ110、111はセ
レクタ116、117の出力を保持する。
【0068】2サイクル目、パイプライン演算器102
はレジスタファイルより読み出したデータについて桁合
わせ処理を行い、パイプラインレジスタ114は先行演
算における中間データを保持する。また同サイクルにお
いて、後続演算で使用するFS3、FS2をレジスタフ
ァイル101より読み出そうとする。しかし、先行演算
によりFS2が確定していないので、図示していない制
御部によりデータ読み出しが停止させられる。
【0069】3サイクル目、パイプライン演算器103
はパイプラインレジスタ114に保持されたデータにつ
いて加算処理を行い、パイプラインレジスタ115は先
行演算における中間データを保持する。同サイクルにお
いて、後続演算のデータ読み出しは停止されたままであ
る。
【0070】4サイクル目、パイプライン演算器104
はパイプラインレジスタ115に保持されたデータにつ
いて正規化、丸め、オーバーフロー及びアンダーフロー
チェックを行い、先行演算の浮動小数加算結果を出力す
る。この時点で浮動小数加算結果が確定(FS2の値が
確定)するので、セレクタ107はパイプライン演算器
104の出力を選択することでデータフォワーディング
を行い、FS2のデータ読み出しを完了する。また、F
S3はレジスタファイルから読み出し、後続演算におけ
るデータ読み出しを完了する。セレクタ116はタイプ
ファイルから読み出したFS3のデータタイプを選択
し、その結果をパイプラインレジスタ110が保持す
る。セレクタ117はパイプライン演算器104から出
力されたデータタイプを選択し、その結果をパイプライ
ンレジスタ111が保持する。
【0071】5サイクル目、先行演算結果はレジスタフ
ァイル101に格納され、先行演算結果のデータタイプ
はタイプファイル120に格納され先行演算は完了す
る。また、同サイクルにおいて、パイプライン演算器1
02は後続演算の桁合わせ処理を行う。
【0072】6サイクル目、7サイクル目でパイプライ
ン演算器103、104は後続演算を実行し、8サイク
ル目で後続演算結果をレジスタファイル101に格納
し、後続演算結果のデータタイプをタイプファイル12
0に格納し、後続演算は完了する。
【0073】以上のように、データフォワーディングに
おいて、後続演算で使用するデータ自身とそのデータタ
イプも併せてフォワーディングするので、従来必要であ
ったフォワーディングしたデータに対してのデータタイ
プ判定が必要なくなる。
【0074】
【発明の効果】本発明の演算装置では、データフォワー
ディングにおいて、データ自身とそのデータタイプも併
せてフォワーディングするので、高速なフォワーディン
グを行える。また、実施の形態1において、フォワーデ
ィングするデータに対するデータタイプ情報として、パ
イプライン演算器内部で使用している制御信号を利用す
るので、パイプライン演算器のハードウェアは増加する
ことはないとの有利な効果がある。実施の形態2におい
て、データをスルーさせる演算においてはオーバーフロ
ー、アンダーフローの判定が必要ないため、パイプライ
ンステージの早いステージでデータ及びデータタイプを
フォワーディングすることができ、レジスタハザードに
おけるペナルティを更に削減することができるとの有利
な効果がある。また、命令デコード、レジスタからのデ
ータ読み出し、データタイプチェック処理を1サイクル
で実行するプロセサにおいて、命令拡張により命令体系
が複雑化するにつれ、命令デコード処理に時間がかかっ
てしまい、このパスがクリティカルパスとなってしま
う。実施の形態3では、レジスタファイルからデータ、
タイプファイルからデータタイプを読み出すので、レジ
スタファイルから読み出したデータに対してのデータタ
イプチェック処理が必要なくなり、高速なデータ読み出
しが行える。これにより、命令拡張によって増える命令
デコード処理にかかる時間を隠蔽することができ、プロ
セッサ全体の動作速度低下を防ぐことができるとの有利
な効果がある。
【図面の簡単な説明】
【図1】本発明の実施の形態1に係る演算装置の概略構
成図
【図2】本発明の実施の形態1に係るパイプライン演算
器の詳細な構成図
【図3】本発明の実施の形態1に係るデータタイプチェ
ック器の詳細な構成図
【図4】本発明の実施の形態1に係る演算装置の遅延時
間を示す図
【図5】本発明の実施の形態2に係る演算装置の概略構
成図
【図6】本発明の実施の形態2に係る演算装置で実行す
る命令を示す図
【図7】本発明の実施の形態3に係る演算装置の概略構
成図
【図8】演算装置で実行する命令を示す図
【図9】従来の演算装置の遅延時間を示す図
【図10】従来の演算装置の概略構成図
【図11】従来の演算装置のタイミング図
【図12】従来の演算装置の概略構成図
【図13】従来の演算装置のタイミング図
【符号の説明】
101 レジスタファイル 102、103、104 パイプライン演算器 105 例外判定部 106、107、116、117 セレクタ 108、109 データタイプチェック器 110、111、112、113、114、115 パ
イプラインレジスタ

Claims (4)

    【特許請求の範囲】
  1. 【請求項1】少なくとも2つ以上のデータタイプを持
    ち、Nステージのパイプラインステージから成る演算装
    置において、演算を実行し演算結果を出力するM(M<
    N)ステージのパイプライン演算器と、前記パイプライ
    ン演算器の演算結果に対するデータタイプをパイプライ
    ンのいずれかのステージで検出し、その結果を出力する
    データタイプ検出器を備え、前記パイプライン演算器の
    演算結果を演算データとして用いる場合、前記データタ
    イプ検出器の出力をデータタイプとして用いることを特
    徴とする演算装置。
  2. 【請求項2】少なくとも2つ以上のデータタイプを持
    ち、Nステージのパイプラインステージから成る演算装
    置において、演算データを保持するレジスタファイル
    と、M(M<N)ステージのパイプライン演算器と、少
    なくとも前記レジスタファイルから読み出したデータと
    前記パイプライン演算器の演算結果を入力として任意の
    入力データを選択的に出力する第1のセレクタと、前記
    第1のセレクタの出力を入力としてデータタイプを判定
    する第1の判定器と、前記パイプライン演算器の演算に
    おける中間データを入力としてデータタイプを判定する
    第2の判定器と、少なくとも前記第1の判定器の出力と
    前記第2の判定器の出力とを入力として任意の入力デー
    タタイプを選択的に出力する第2のセレクタとを備え、
    前記パイプライン演算器の演算結果を前記レジスタファ
    イルの入力とし、前記第1のセレクタの出力を前記パイ
    プライン演算器の入力とし、前記第1のセレクタが前記
    パイプライン演算器の演算結果を選択する場合、前記第
    2のセレクタは前記第2の判定器の出力をデータタイプ
    として選択することを特徴とする請求項1記載の演算装
    置。
  3. 【請求項3】少なくとも2つ以上のデータタイプを持
    ち、Nステージのパイプラインステージから成る演算装
    置において、演算データを保持するレジスタファイル
    と、M(M<N)ステージのパイプライン演算器と、少
    なくとも前記レジスタファイルから読み出したデータと
    前記パイプライン演算器の演算結果を入力として任意の
    入力データを選択的に出力する第1のセレクタと、前記
    第1のセレクタの出力を入力としてデータタイプを判定
    する判定器と、データタイプを保持する記憶素子と、少
    なくとも前記判定器の出力と前記記憶素子に保持された
    データタイプを入力として任意の入力データタイプを選
    択的に出力する第2のセレクタとを備え、前記パイプラ
    イン演算器の演算結果を前記レジスタファイルの入力と
    し、前記第1のセレクタの出力を前記パイプライン演算
    器の入力とし、前記第2のセレクタの出力を前記記憶素
    子の入力とし、前記第1のセレクタが前記パイプライン
    演算器の演算結果を選択する場合、前記第2のセレクタ
    は前記記憶素子に保持されたデータを選択することを特
    徴とする請求項1記載の演算装置。
  4. 【請求項4】少なくとも2つ以上のデータタイプを持
    ち、Nステージのパイプラインステージから成る演算装
    置において、演算データを保持するレジスタファイル
    と、演算データに対してのデータタイプを保持するタイ
    プファイルと、M(M<N)ステージのパイプライン演
    算器と、少なくとも前記レジスタファイルから読み出し
    たデータと前記パイプライン演算器の演算結果を入力と
    して任意の入力データを選択的に出力する第1のセレク
    タと、前記パイプライン演算器の演算における中間デー
    タを入力として、データタイプを判定する判定器と、少
    なくとも前記タイプファイルから読み出したデータと前
    記判定器の出力を入力として任意の入力データを選択的
    に出力する第2のセレクタとを備え、前記パイプライン
    演算器の演算結果を前記レジスタファイルの入力とし、
    前記判定器の出力を前記タイプファイルの入力とし、前
    記第1のセレクタの出力を前記パイプライン演算器の入
    力とし、前記第1のセレクタが前記パイプライン演算器
    の演算結果を選択する場合、前記第2のセレクタは前記
    判定器の出力を選択することを特徴とする請求項1記載
    の演算装置。
JP2000000246A 2000-01-05 2000-01-05 演算装置 Pending JP2001188670A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2000000246A JP2001188670A (ja) 2000-01-05 2000-01-05 演算装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2000000246A JP2001188670A (ja) 2000-01-05 2000-01-05 演算装置

Publications (1)

Publication Number Publication Date
JP2001188670A true JP2001188670A (ja) 2001-07-10

Family

ID=18529624

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2000000246A Pending JP2001188670A (ja) 2000-01-05 2000-01-05 演算装置

Country Status (1)

Country Link
JP (1) JP2001188670A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009187133A (ja) * 2008-02-04 2009-08-20 Nec Computertechno Ltd 浮動小数点演算装置、浮動小数点演算器、特殊数判定回路故障検出方法及びプログラム

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009187133A (ja) * 2008-02-04 2009-08-20 Nec Computertechno Ltd 浮動小数点演算装置、浮動小数点演算器、特殊数判定回路故障検出方法及びプログラム

Similar Documents

Publication Publication Date Title
JP3076046B2 (ja) 例外検出回路
KR100239029B1 (ko) 가산기와 함께 사용하기 위한 결과 정규화기 및 결과 정규화 방법과 그를 포함하는 데이터 프로세서
JP6001276B2 (ja) 浮動小数点加算を実行するための装置および方法
KR20090014292A (ko) 비정규 피연산자를 위한 모드―기반 곱셈-가산 프로세서
JPH06236257A (ja) データ・プロセッサにおいて浮動小数点実行ユニット内で後正規化を実行する方法および装置
WO2006132782A2 (en) Method and apparatus for formatting numbers in microprocessors
Schwarz et al. FPU implementations with denormalized numbers
JPH09212337A (ja) 浮動小数点演算処理装置
US7373369B2 (en) Advanced execution of extended floating-point add operations in a narrow dataflow
Quinnell et al. Bridge floating-point fused multiply-add design
Boersma et al. The POWER7 binary floating-point unit
US8626807B2 (en) Reuse of rounder for fixed conversion of log instructions
US20050228844A1 (en) Fast operand formatting for a high performance multiply-add floating point-unit
CN107291420B (zh) 整合算术及逻辑处理的装置
US8244783B2 (en) Normalizer shift prediction for log estimate instructions
JP2001188670A (ja) 演算装置
US6615228B1 (en) Selection based rounding system and method for floating point operations
TW202036269A (zh) 迭代運算的處理
He et al. Multiply-add fused float point unit with on-fly denormalized number processing
JP2664750B2 (ja) 演算装置及び演算処理方法
KR20030056012A (ko) 비동기식 덧셈 곱셈 부동 소수점 연산기
JP3555881B2 (ja) 演算回路とそのエラー検出方法
JP2004021573A (ja) データ処理装置
KR100385233B1 (ko) 데이터 프로세싱 시스템의 익스포넌트 유닛
JP2591250B2 (ja) データ処理装置