JPH10207863A - 演算処理装置 - Google Patents

演算処理装置

Info

Publication number
JPH10207863A
JPH10207863A JP832397A JP832397A JPH10207863A JP H10207863 A JPH10207863 A JP H10207863A JP 832397 A JP832397 A JP 832397A JP 832397 A JP832397 A JP 832397A JP H10207863 A JPH10207863 A JP H10207863A
Authority
JP
Japan
Prior art keywords
instruction
result
arithmetic
storage means
arithmetic processing
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.)
Abandoned
Application number
JP832397A
Other languages
English (en)
Inventor
Yukihiro Ide
進博 井出
Atsushi Kunimatsu
敦 国松
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.)
Toshiba Corp
Original Assignee
Toshiba Corp
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 Toshiba Corp filed Critical Toshiba Corp
Priority to JP832397A priority Critical patent/JPH10207863A/ja
Publication of JPH10207863A publication Critical patent/JPH10207863A/ja
Abandoned legal-status Critical Current

Links

Abstract

(57)【要約】 【課題】 累積命令を毎サイクル発行可能にする。 【解決手段】 XYステージで第1の乗算を行い、Z,
Cステージをスルーして、累積レジスタ110に記憶す
る。XYステージでの第2の乗算を行い、Z,Cステー
ジをスルーして、累積レジスタ111に記憶する。XY
ステージで第3の乗算を行い、Z,Cステージに送る。
累積レジスタ110から第1の乗算結果を読み出し、
Z,Cステージで第3の乗算結果と加算し、レジスタ1
10に記憶する。XYステージで第4の乗算を行い、
Z,Cステージに送る。累積レジスタ111から第2の
乗算結果を読み出し、Z,Cステージで第4の乗算結果
と加算し、レジスタ111に記憶する。レジスタ11
0、111から第1と第3の乗算結果の和、第2と第4
の乗算結果の和を読み出し、Z,Cステージで両者の和
を取る。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は演算処理装置に関す
る。例えば浮動小数点積和演算の演算処理装置に関す
る。
【0002】
【従来の技術】近年、マルチメディアの急速な普及、高
度なGUI(Graphic User Interface )、またグラ
フィックを用いたTVゲームの普及などにより、コンピ
ュータ・グラフィック(CG)が大変重要になってきて
いる。
【0003】特にパソコンの家庭への急激な普及、TV
ゲーム機の普及により、高性能プロセッサ上で走らせる
アプリケーションとして3 次元コンピュータ・グラフィ
ックス(3D−CG)、特に高い品位の動画の要求が高
まっている。動画を処理するには、1フレームを30分
の1秒〜60分の1秒で処理する必要があり、この処理
には膨大な計算量、計算能力が要求される。CGに於ける
ジオメトリカル処理は、座標変換、視点変換などの幾何
学的なグラフィックモデルの変換処理や照光処理を行う
フェイズである。
【0004】そのため、これらの処理には、行列演算、
ベクトル演算、が行われるため、内積の演算が多く用い
られる。また、以上のような3D−CG処理以外にも、
従来からの科学技術計算に於ける数値計算に於いても同
様に、内積の計算は多用される。
【0005】以上のような要求により高速な積和演算の
演算処理装置の実現が望まれている。以下に従来の浮動
小数点積和演算の演算処理装置の構成に関して、具体的
に説明する。積和演算の演算処理装置の構成の方法に
は、大きく分けて2つの方法がある。
【0006】第1の構成方法は、独立した乗算器、およ
び加減算器を実装し、積和演算はこれらの演算器を縦列
接続、あるいは演算結果をオペランドとしてバイパスす
ることにより実現する方法である。専用の積和命令を持
つ場合、バイパスを用いて乗算、加算によって実現する
方法がある。
【0007】図6に、仮数部演算の演算処理装置のブロ
ック図を示す。乗算器は、第1、第2のオペランドの積
を求める乗算ツリー501、502、部分積の最終加算
を行う加算器505、正規化回路507、先行0検出回
路506から構成される。
【0008】加算器は、オペランドの桁合わせを行うシ
フタ503と、和を求める加算器505’、正規化回路
507’、先行0検出回路506’から構成される。
【0009】このような方法では、積和演算の結果を得
るまでに第1の構成方法より多くの時間を要する。一般
的なMPUに実装された浮動小数点演算の演算処理装置
では、乗算、加減算を行うのに2ないし5サイクルを必
要とするように設計されている。例えば、乗算、加減算
が共に2クロックで実行できたとすると、2サイクル毎
に命令の発行はできるが、積和の結果を求めるには4ク
ロックが必要になる。
【0010】図8と図9に、内積演算の命令シーケンス
と実行タイミングを示す。ここで、M:命令フェッチ、
T:デコード、レジスタ読み出し、X,Y:演算実行ス
テージ、B:書き戻し、を行う。
【0011】第2の構成方法は、積和演算の演算処理装
置を直接構成する方法である。図7に、仮数部演算ユニ
ットおよび指数部演算ユニットからなる演算処理装置の
ブロック図を示す。
【0012】仮数部演算ユニットは、第1、第2のオペ
ランドの積を求める乗算ツリー601、602と、第3
のオペランドの桁合わせを行う双方向シフタ603と、
前記乗算結果および桁合わせ結果の和(積和)を求める
加算器604、605と、加算器604、605による
積和演算結果の正規化を行う正規化回路607、先行0
検出回路606とから構成される。
【0013】また、指数部演算ユニットは、第1、第2
のオペランドの積の指数部の値(指数部同士の和)を計
算する加算器608、第3のオペランドと前記第1、第
2のオペランドの積との和(積和)の指数部(第3のオ
ペランドの指数部と前記第1、第2のオペランドの積の
指数部の内、大きい方の値)を求める選択回路610
と、桁合わせの桁数(第3のオペランドの指数部と前記
第1、第2のオペランドの積の指数部の差)を求める減
算器609と、正規化を行う減算器611とから構成さ
れる。
【0014】本演算処理装置は、3ソース・オペラン
ド、1ディスティネーション、計4オペランドの演算処
理装置である。
【0015】積和演算は、次のように実行される。すな
わち、第1、第2のオペランドは、第1、第2のオペラ
ンドの積を求める乗算ツリー601、602に入力さ
れ、乗算が行われる。この処理と並行して、第3のオペ
ランドの桁合わせが双方向シフタ603により行われ
る。
【0016】左右どちらに、何ビットシフトされるか
は、第1と第2のオペランドの指数の和と第3のオペラ
ンドの指数の差として求められる。
【0017】第1、第2のオペランドの積と第3のオペ
ランドの桁合わせ結果の和(積和)は、加算器604、
605によって求められる。加算器604、605によ
る積和演算結果は、正規化回路607で正規化が行われ
る。
【0018】これら、一連の処理は2ステージのパイプ
ライン処理によって実行される。したがって、あるオペ
ランドの演算結果は、2クロック後にならないと次の演
算のオペランドとして用いることができない。すなわち
依存関係のある演算は、2クロック毎にしか実行するこ
とができない。図10に、内積の計算を求める命令シー
ケンスと実行タイミングを示す。
【0019】内積の実行には依存関係のある積和演算が
必要である。図8、図9、図10は、前述の第1と第2
の構成方法で内積を求める命令シーケンスを実行した場
合のタイミング図である。
【0020】図8、図9、図10に示すように、依存関
係のある積和演算は連続に実行できない。このような場
合、一般には命令のスケジューリング技術によって独立
な命令を実行し、演算のレイテンシを隠蔽するが、独立
に実行できる命令が無い場合には演算処理装置は演算結
果の終了を待たなければならない。特に前述の第2の構
成方法のようにレイテンシが大きい場合には、この傾向
が大きくなる。
【0021】このように依存関係のある積和演算が連続
実行できない場合、(1)連続する依存関係のある積和
演算の間に実行可能な演算がない場合には、オーバヘッ
ドを隠蔽できない、(2)スケジューリングなどの技術
が必要で、プログラミングが難しい、などの問題点があ
った。
【0022】
【発明が解決しようとする課題】以上のように従来の浮
動小数点積和演算の演算処理装置は、整数積和演算の演
算処理装置と異なり、レイテンシが多く、依存のある積
和演算を毎クロックごとに実行することができないとい
う問題点があった。
【0023】そこで本発明は、累積命令を毎サイクル発
行可能な演算処理装置を提供することを目的とする。
【0024】
【課題を解決するための手段】
(第1の構成例)第1の演算と第2の演算とを組み合わ
せた第3の演算を1サイクル乃至複数のサイクルを用い
て行うことのできる演算処理装置において、前記第1の
演算を行う第1の演算手段と、前記第2の演算を行う第
2の演算手段と、前記第1の演算手段の演算と前記第2
の演算手段の演算とを組み合わせた前記第3の演算を行
う第3の演算手段と、前記第1の演算の演算結果、ある
いは前記第2の演算の演算結果、あるいは前記第3の演
算の演算結果を保持する1つ以上の記憶手段と、先行実
行され前記複数の記憶手段に記憶された複数の演算結果
のうち何れか1つを選択し,前記第1の演算結果と前記
第3の演算を行うべく、前記第3の演算手段に入力する
選択手段とを具備したことを特徴とする。
【0025】(第2の構成例)第1の演算と第2の演算
とを組み合わせた第3の演算を1サイクル乃至複数のサ
イクルを用いて行うことのできる演算処理装置におい
て、m( m≧1) サイクルを用いて前記第1の演算を行
う第1の演算手段と、n( n≧1) サイクルを用いて前
記第2の演算を行う第2の演算手段と、( m+n) サイ
クルを用いて前記第1の演算手段の演算と前記第2の演
算手段の演算を組み合わせた第3の演算を行う第3の演
算手段と、前記第1の演算の演算結果、あるいは前記第
2の演算の演算結果、あるいは前記第3の演算の演算結
果を記憶する少なくともn個の記憶手段と、先行実行さ
れ前記n個の記憶手段に記憶されたn個の演算の結果の
うち何れか1つを選択し,前記第1の演算結果と前記第
3の演算を行うべく、前記第3の演算手段に入力する選
択手段とを具備したことを特徴とする。
【0026】(第3の構成例)2以上の記憶手段を有す
る演算処理装置において、1つの記憶手段のみ使用する
と仮定した場合の演算命令を含む第一の演算命令セット
と、2以上の記憶手段を用いて演算を行う命令を含む第
二の命令セットとを具備し、 前記第一の命令セットの
実行時に動的に、あるいは実行前に静的に、前記第一の
演算命令セットの命令を前記第二の演算命令セットに対
応する命令に置き換え、前記置き換えられた演算命令に
従い演算を実行することを特徴とする。
【0027】
【発明の実施の形態】図1は、本発明の演算処理装置の
構成を示す概念図である。また、図2は、図1の詳細を
示す本発明の演算処理装置の発明の実施の形態の構成を
示すブロック図である。
【0028】図2は、具体的には32ビット単精度浮動
小数点積和演算の演算処理装置の仮数部演算ユニット、
指数部演算ユニットを示している。ここで32ビット単
精度の数値フォーマットは、IEEE754−85浮動
小数点演算規格に準ずる事とする。
【0029】この実施の形態では、演算処理装置は、7
ステージ(M,T,X,Y,Z,C,S)のパイプライ
ンで構成される。
【0030】演算は、X,Y,Z、Cの4つのステージ
で実行される。パイプラインの実行タイミング図を、図
3に示す。始めの2ステージで乗算、続く2ステージで
加算あるいは積和演算を行なう。
【0031】まず、図2を参照して、本演算処理装置の
構成を簡単に説明する。
【0032】構成部材100〜109、130〜137
は、それぞれ仮数部演算ユニットおよび指数部演算ユニ
ットのパイプライン・レジスタである。レジスタ110
と138、111と139は、2セットの累積レジスタ
である。
【0033】構成部材150はブースのエンコーダであ
り、入力オペランドS(000)をエンコードして、乗
算アレイ151に入力する。
【0034】乗算アレイ151では、ワラスのツリーを
用いて部分積の加算を行ない、オペランドS(000)
とオペランドT(001)の積を和成分(002)、キ
ャリー成分(003)として求める。
【0035】構成部材152,153は、オペランドS
(000),T(001)をスルーさせるセレクタであ
る。
【0036】加算器154は、積の和成分(002)、
キャリー成分(003)を加算し、積を求める。
【0037】セレクタ156は、オペランドT(00
6)をスルーさせる。
【0038】セレクタ157は、積和演算を行なう時は
累積レジスタ110あるいは111の値を、加・減算を
行なう場合はオペランドS(009)を選択する。
【0039】同様にセレクタ158は、累積レジスタか
らの読み出し演算を行なう場合は、累積レジスタ110
の値を、加・減算を行なう場合はオペランドT(01
0)を選択する。
【0040】スワッパ159は、指数部の比較を行なっ
た結果、小さい方のオペランドを桁合わせシフタ160
に入力する。桁合わせシフタ160は、仮数部の桁合わ
せを行なうシフタである。
【0041】セレクタ161、162は加減算、積和演
算を行なわない場合、乗算結果、オペランドをスルーさ
せる。
【0042】LZA(Leading Zero An
ticipator(先行0検出回路))163は2つ
のオペランドの加算を行なった結果を正規化するために
最上位のデジット1の位置を検索し、先行するデジット
0の数をカウントする。
【0043】加算器164は、桁合わせしたオペランド
の加算を行なう。正規化シフタ165は、加算結果(0
21)をLZA163の結果にしたがって正規化処理を
行なう。
【0044】累積レジスタ110、111は演算結果
(023)を記憶する。累積レジスタ110、111は
交互に用いられる。たとえば、初めて有効な値を記憶す
るのに累積レジスタ110を用いた場合、次は累積レジ
スタ111を用いる。以後は、累積レジスタの内容を読
みだし破棄するまで、累積レジスタ110、111が利
用されるごとに交互に用られる。以上が、仮数部演算ユ
ニットの構成である。
【0045】加算器171は、積の指数部を求める。具
体的には、( 信号(030)+信号(031)―12
7) を実行する。
【0046】セレクタ172は、加算を行う場合、オペ
ランドS(030)をスルーさせるためのものである。
【0047】加算器173は、積の正規化を行うための
インクリメンタである。セレクタ174は、加算を行う
場合にオペランドT(035)をスルーさせる。セレク
タ175は、積和演算を行なう時は累積レジスタ138
あるいは139の値を、加・減算を行なう場合はオペラ
ンドS(039)を選択する。
【0048】同様にセレクタ176は、累積レジスタか
らの読み出し演算を行なう場合は累積レジスタ138の
値を、加・減算を行なう場合はオペランドT(038)
を選択する。
【0049】減算器178は、指数の差を求め、桁合わ
せ用のシフト数を求める。また、指数の大小比較を行
い、セレクタ179によって大きい方の指数を選択す
る。セレクタ180は、積の指数をスルーさせるもので
ある。
【0050】減算器181は、LZA163の出力を指
数部の中間結果(044)から引くことにより、正規化
を行う。
【0051】累積レジスタ138、139は、演算結果
(046)を記憶する。累積レジスタ138、139
は、交互に用いられる。たとえば、初めて有効な値を記
憶するのに累積レジスタ138を用いた場合、次は累積
レジスタ139を用いる。以後は、累積レジスタの内容
を読みだし破棄するまで、累積レジスタ138、139
が利用されるごとに交互に用いられる。以上が、指数部
演算ユニットの構成である。
【0052】本実施の形態では、加算にZ,Cの2サイ
クルを要するため、依存関係(先行する積和演算の結果
Aを次の積和演算において加算する、すなわちA’←A
+B×C)のある積和演算は、2サイクルおきに実行で
きる。
【0053】従って2つ以上の累積レジスタを実装すれ
ば、矛盾の無い演算が可能である。本実施の形態では、
最低限必要な2セットの累積レジスタを実装し、これら
を交互に利用していることに注目されたい。
【0054】次に本発明の実施の形態の動作例に関して
説明する。本演算処理装置は、2つのプログラミングモ
デルを有する。すなわち、(1)ユーザが記述する命令
であるexternal 命令と、(2)external 命令が置き
換えられて、演算処理装置内部で実際に動作する命令in
ternal 命令である。
【0055】external 命令を用いる事により、ユーザ
ーは累積レジスタの数、またいずれの累積レジスタが現
在用いられるかなどプログラム記述上のわずらわしい問
題を一切考慮する必要がない。以後の説明のため、ここ
では簡単に以下の命令を定義する。
【0056】以下は、ユーザーが用いるexternal 命令
の例である。ACCは累積レジスタ、reg1,reg
2は汎用レジスタ、記号‘←’は代入をあらわす。
【0057】加算命令:汎用レジスタ同士の和を、累積
レジスタに格納する。
【0058】ADD ACC,reg1,reg2:
ACC←reg1+reg2 乗算命令:汎用レジスタ同士の積を、累積レジスタに格
納する。
【0059】MULA ACC,reg1,reg2:
ACC←reg1×reg2 積和演算命令:汎用レジスタ同士の積と累積レジスタの
値を加算し、累積レジスタに格納する。
【0060】MADDA ACC,reg1,reg
2: ACC←ACC+reg1×reg2 累積レジスタ読み出し命令:累積レジスタの内容を、読
み出す。
【0061】 MFACC reg,ACC: reg←ACC 非演算実行命令:何も実行しない。
【0062】NOP: no operation 以下は、external 命令が置き換えられ、演算処理装置
で実行されるinternal命令の例である。
【0063】加算命令:汎用レジスタ同士の和を、累積
レジスタACC0に格納する。
【0064】ADDA0 ACC0,reg1,reg
2: ACC0←reg1+reg2 加算命令:汎用レジスタ同士の和を、累積レジスタAC
C1に格納する。
【0065】ADDA1 ACC1,reg1,reg
2:: ACC1←reg1+reg2 乗算命令:汎用レジスタ同士の積を、累積レジスタAC
C0に格納する。
【0066】MULA0 ACC0,reg1,reg
2: ACC0←reg1×reg2 乗算命令:汎用レジスタ同士の積を、累積レジスタAC
C1に格納する。
【0067】MULA1 ACC1,reg1,reg
2: ACC1←reg1×reg2 積和演算命令:汎用レジスタ同士の積と累積レジスタA
CC0の値を加算し、累積レジスタACC0に格納す
る。
【0068】MADDA0 ACC0,reg1,re
g2: ACC0←ACC0+reg1×reg2 積和演算命令:汎用レジスタ同士の積と累積レジスタA
CC1の値を加算し、累積レジスタACC1に格納す
る。
【0069】MADDA1 ACC1,reg1,re
g2: ACC1←ACC1+reg1×reg2 累積レジスタ読み出し命令: MFC01 reg,ACC0,ACC1: reg←
ACC0+ACC1 非演算実行命令: NOP :no operation 次に各演算の動作について説明する。
【0070】本演算処理装置では、external 命令は、
internal 命令に置き換えられるので、internal 命令
の動作に関してのみ説明する。
【0071】また、ここでは浮動小数点の演算を行なう
アルゴリズムの詳細は重要ではないので、一般的、標準
的なアルゴリズムを示している。演算の結果生じる例外
についての処理に関しては記述を省略した。本発明の内
容は、これらの詳細とは独立の物である。
【0072】すべての命令は、X,Y,Z,Cの4ステ
ージで実行される。
【0073】加算命令:加算は、演算器のZ,Cステー
ジで実行される。セレクタ152,153,156によ
って、入力されたオペランドS(000),オペランド
T(001)はステージX,Yをスルーし、ステージZ
に入力される。
【0074】ステージZ では、桁合わせまでを行なう。
セレクタ157、158は、入力されたオペランドS
(009)、オペランドT(010)を選択する。
【0075】指数部演算ユニットは、指数部減算器17
8で減算され、大小の比較を行なうとともに、その差の
絶対値を求める。
【0076】スワッパ159では、指数部を比較した結
果により、指数部が小さい方の仮数部が桁合わせシフタ
160に入力されるように必要ならばスワップが行われ
る。
【0077】桁合わせシフタ160では、指数部減算器
178で求めた指数部の差の分だけ右にシフトし、桁合
わせを行なう。セレクタ161、162は演算結果(0
13),(016)を選択し、ステージCに送る。
【0078】ステージCでは、加算、正規化、および累
積レジスタへの書き込みを行なう。まず加算器164に
よって桁合わせの結果(018)、(019)の加算を
行なう。また平行して、LZA163では(018)、
(019)の加算の結果生じる桁落ちの桁数を予測す
る。
【0079】すなわち、先行する0の数をカウントし、
正規化シフタ165、指数部減算器(正規化回路)18
1に入力する。
【0080】正規化シフタ165は、和(021)をL
ZA163で求めた正規化シフト数(020)にしたが
って左シフトする事により正規化を行なう。
【0081】セレクタ166は、演算結果(022)を
選択し、ADDA0では累積レジスタ110に、ADD
A1では累積レジスタ111に演算結果(023)が書
き込まれる。
【0082】乗算命令:乗算は、演算器のX,Yステー
ジで実行される。Xステージでは、積をキャリー成分
(002)、和成分(003)に分けて求める。オペラ
ンドS(000)は、ブースデコーダ150に入力さ
れ、デコード結果を乗算アレイ151に入力する。
【0083】乗算アレイ151では、デコード結果にし
たがってオペランドT(001)から部分積を選択し、
ワラスツリー状に接続されたCSA(Carry Sa
veAdder)によりキャリー成分(002)、和成
分(003)を求める。
【0084】Yステージでは、積のキャリー成分(00
2)、和成分(003)を加算器154で加算し、積を
二進数の形で求める。
【0085】Zステージでは、有効な演算は行われな
い。セレクタ162によって、乗算結果(010)がC
ステージに送られる。
【0086】Cステージでは、サイクルの最後に累積レ
ジスタへの書き込みを行なう。セレクタ156、16
2、166は、乗算結果(007)を選択する。MUL
A0では累積レジスタ110に、MULA1では累積レ
ジスタ111に乗算結果(023)が書き込まれる。
【0087】積和演算命令:X,Yステージで乗算、
Z、Cステージで加算を実行する。X,Yステージの乗
算の過程は、乗算命令と同様である。
【0088】Xステージでは、積をキャリー成分(00
2)、和成分(003)に分けて求める。Yステージで
は、積のキャリー成分(002)、和成分(003)を
加算器154で加算し、積を二進数の形で求める。
【0089】セレクタ156は乗算結果(007)を選
択し、Z,Cステージの加算器に乗算結果をオペランド
T(010)として入力する。
【0090】Z,Cステージでは、累積レジスタ11
0、111の値(024)、(025)と乗算結果(0
10)を加算する事により、積和演算を行なう。
【0091】セレクタ157は、累積レジスタ110、
111の値(024)、(025)の何れかを選択す
る。すなわちMADDA0では、累積レジスタ110の
値(024)、MADDA1ではACC1の値(02
5)を選択する。セレクタ158は乗算結果(010)
を選択する。以下は前述の加算命令同様に加算を行な
う。
【0092】すなわち、Zステージでは、仮数部桁合わ
せ、Cステージでは、加算、正規化、および累積レジス
タへの書き込みを行なう。セレクタ166は演算結果
(022)を選択し、MADDA0では累積レジスタ1
10に、MADDA1は累積レジスタ111に積和演算
結果を書き戻す。
【0093】累積レジスタ読み出し命令:演算器のZ,
Cステージで実行される。セレクタ157は累積レジス
タ111の値(025)、セレクタ158は累積レジス
タ110の値(024)を選択する。
【0094】以下、加算演算と同様に累積レジスタの値
を加算する。
【0095】セレクタ166は演算結果(022)を選
択し、パイプラインレジスタ109に書き込む。この値
は、Sステージで汎用レジスタに書き戻される。
【0096】つぎに実際のプログラムを例にして本発明
の演算処理装置の動作を説明する。以下に示すのは、 内積R30←R10×R20+R11×R21+R12
×R22+R13×R23 を求めるプログラム例である。ここで、R30などは、
汎用レジスタの番号、および、そこに格納された値を示
す。
【0097】また、プログラムでは簡単のためNOP命
令により演算のタイミングを同期させている。レジスタ
のコンフリクトなどをハードウエアで自動的に回避する
ような実装では必要がない場合がある。
【0098】例に示すように、external 命令による記
述では、実際の累積レジスタの数、使われている累積レ
ジスタの番号を考慮することなく、あたかも累積レジス
タが1つしかないかのように自然な記述を行なう事が出
来る。
【0099】この事により、プログラム設計上の煩わし
さがなくなり、またバグの発生を抑制する事が出来る。
【0100】これらの記述は、実行前あるは実行直前に
ソフトウエアあるいはハードウエアによって、internal
命令に変換され実行される。この例では、MULA,
MADDAが、MULA0、MULA1、MADDA
0、MADDA1に変換されている。
【0101】この変換のルールは、簡単である。すなわ
ち、本実施例では2セットの累積レジスタを実装してお
り、何れの累積レジスタが使用可能かによって決定され
る。具体的なルールは、以下の通りである。
【0102】external 命令の internal 命令への置
き換え規則 MULA→MULA0 or MULA1 ACC0が、利用可能ならばMULA0 ACC0が利用不可能ならばMULA1 MADDA→MULA0 or MULA1 or M
ADDA0 orMADDA1 ACC0が利用可能ならばMADDA0 ただし、MULAが実行された後、最初のMADDA0
になるならばMULA0(ACC0の初期化) ACC0が利用不可能ならばMADDA1 ただし、MULAが実行された後、最初のMADDA1
になるならばMULA1(ACC1の初期化) 上記の規則は、累積レジスタが2セットの場合である
が、一般にn個の累積レジスタを実装している場合でも
容易に拡張することができる。
【0103】すなわち、累積レジスタに割り当てられた
シーケンシャルな番号に対し、(1)累積レジスタ割り
当て:使用可能な最小番号の累積レジスタを割り当て
る、また、(2)累積レジスタ初期化:累積レジスタの
初期化が必要な場合は、MADDAをMULAに変更す
る処理を行えばよい。
【0104】タイミングを示す図4、図5を参照して、
本プログラム例の動作を説明する。まず、MULA(M
ULA0)によって、R10×R20が実行され、累積
レジスタACC0に格納される。
【0105】次にR11×R21を計算し、先に計算し
ているR10×R20との加算を行ないたいが、累積レ
ジスタACC0は先行する命令すなわちMULA0によ
り使用され使用が不可能なため、MADDAはMULA
1に変換され、R11×R21をACC1に格納する。
【0106】つぎにR12×R22を行い、先行する演
算結果との累積を求める。
【0107】累積レジスタACC1は、直前の命令で使
用しているため、累積レジスタACC0を用いる。
【0108】したがって、2つめのMADDAは、MA
DDA0に変換され、MULA0で求めたR10×R2
0との累積R10×R20+R12×R22を計算し、
累積レジスタACC0に格納する。
【0109】3つめのMADDAは、同様に直前の命令
で累積レジスタACC0を用いられているため、MAD
DA1に変換され累積R11×R21+ R13×R23
を求め、累積レジスタACC1に格納する。
【0110】続くNOPは、タイミングを取るためのダ
ミー命令である。
【0111】累積結果を読み出すためにMFACCを行
なう。この際、ACC1(R10×R20+R12×R
22),ACC1(R11×R21+R13×R23)
の値が加算され、R10×R20+R11×R21+R
12×R22+R13×R23として読み出される。
【0112】以上のように累積レジスタを複数実装する
事により、複数のサイクルを必要とする演算の命令を毎
サイクル発行する事が可能になる。
【0113】また、累積レジスタからの読み出しの際、
累積レジスタの和を求める事により、あたかも単一の累
積レジスタが実装されているが如く振る舞い、擬似的に
スループット1の演算処理装置として動作させる事が可
能になる。
【0114】つぎに上記の内積演算を2 回連続した場合
の例を示す。external 命令による記述では、NOPの
部分に次の乗算命令を挿入し、無駄のない記述となって
いる。
【0115】これらは先の例のように、前述の規則にし
たがって累積レジスタが割り当てられ、internal 命令
に変換され、実行される。
【0116】2回目の内積の計算における始めのMUL
Aが、累積レジスタACC0が使用不可能な事により、
MULA1に変換されている事に注意してほしい。この
ように、連続して用いる場合でも、本発明は矛盾なく、
効率よく実行される。
【0117】以上、本発明では、累積レジスタを複数実
装することによって、従来複数サイクル毎にしか発行で
きなかった累積命令を毎サイクル発行する事が出来る。
【0118】また、累積レジスタ読み出し命令を設け、
読み出しの際、複数の累積レジスタの値を加算すること
によって、あたかも単一の累積レジスタが存在するかの
如く動作する。
【0119】さらに、ユーザの用いる命令と実装する命
令とを分け、累積レジスタの割付を自動化する事によ
り、複数のレジスタの使い分け、割付の煩わしさからユ
ーザを開放するとともに、バグの発生を抑制する事が出
来る。
【0120】
【発明の効果】以上本発明によれば、累積命令を毎サイ
クル発行する事が出来る。
【図面の簡単な説明】
【図1】本発明の演算処理装置の構成を示す概念図であ
る。
【図2】図1の詳細を示す本発明の演算処理装置の発明
の実施の形態の構成を示すブロック図である。
【図3】本発明の演算処理装置の実行タイミングを示す
図である。
【図4】本発明の演算処理装置で実施するプログラム例
と実行タイミングを示す図である。
【図5】本発明の演算処理装置で実施するプログラム例
と実行タイミングを示す図である。
【図6】従来の仮数部演算の演算処理装置のブロック図
である。
【図7】仮数部演算ユニットおよび指数部演算ユニット
からなる従来の演算処理装置のブロック図を示す。
【図8】図6の仮数部演算の演算処理装置の内積演算の
命令シーケンスと実行タイミングを示す図である。
【図9】図6の仮数部演算の演算処理装置の内積演算の
命令シーケンスと実行タイミングを示す図である。
【図10】図7の演算処理装置の内積演算の命令シーケ
ンスと実行タイミングを示す図である。
【符号の説明】
XY・・・第1の演算器、Z,C・・・第二の演算器、
XY,Z,C・・・第三の演算器、100〜111、1
30〜137・・・パイプラインレジスタ、110、1
11、138、139・・・累積レジスタ、157、1
58、161、162、166、175、176、18
0、182・・・セレクタ、150・・・ブースデコー
ダ、151・・・乗算アレイ、154、・・・加算器、
160・・・桁合わせシフタ、163・・・LZA(先
行0検出回路)、164・・・加算器、165・・・正
規化シフタ、171、173・・・加算器、178、1
81・・・減算器。

Claims (7)

    【特許請求の範囲】
  1. 【請求項1】 第1の演算と第2の演算とを組み合わせ
    た第3の演算を1サイクル乃至複数のサイクルを用いて
    行うことのできる演算処理装置において、 前記第1の演算を行う第1の演算手段と、 前記第2の演算を行う第2の演算手段と、 前記第1の演算手段の演算と前記第2の演算手段の演算
    とを組み合わせた前記第3の演算を行う第3の演算手段
    と、 前記第1の演算の演算結果、あるいは前記第2の演算の
    演算結果、あるいは前記第3の演算の演算結果を保持す
    る1つ以上の記憶手段と、 先行実行され前記複数の記憶手段に記憶された複数の演
    算結果のうち何れか1つを選択し,前記第1の演算結果
    と前記第3の演算を行うべく、前記第3の演算手段に入
    力する選択手段とを具備したことを特徴とする演算装
    置。
  2. 【請求項2】 第1の演算と第2の演算とを組み合わせ
    た第3の演算を1サイクル乃至複数のサイクルを用いて
    行うことのできる演算処理装置において、 m( m≧1) サイクルを用いて前記第1の演算を行う第
    1の演算手段と、 n( n≧1) サイクルを用いて前記第2の演算を行う第
    2の演算手段と、 ( m+n) サイクルを用いて前記第1の演算手段の演算
    と前記第2の演算手段の演算を組み合わせた第3の演算
    を行う第3の演算手段と、 前記第1の演算の演算結果、あるいは前記第2の演算の
    演算結果、あるいは前記第3の演算の演算結果を記憶す
    る少なくともn個の記憶手段と、 先行実行され前記n個の記憶手段に記憶されたn個の演
    算の結果のうち何れか1つを選択し,前記第1の演算結
    果と前記第3の演算を行うべく、前記第3の演算手段に
    入力する選択手段とを具備したことを特徴とする演算処
    理装置。
  3. 【請求項3】 前記第1の演算として乗算を行い、前記
    第2の演算として加算を行い、前記第3の演算として積
    和演算を行うことを特徴とする請求項1又は2に記載の
    演算処理装置。
  4. 【請求項4】 前記複数の記憶手段から演算結果を読み
    出す際、おのおの記憶手段の値を読み出すと同時に、そ
    の和を求めて出力する第4の演算命令を有することを特
    徴とする請求項1乃至3の何れかに記載の演算処理装
    置。
  5. 【請求項5】浮動小数点数をオペランドとする請求項1
    乃至3の何れかに記載の演算処理装置。
  6. 【請求項6】 前記第3の演算は複数サイクルの実行レ
    イテンシを有し、前記記憶手段は、その記憶手段を使用
    して第3の演算命令を実行している使用不可能状態の第
    一の状態とそれ以外の使用可能状態の第二の状態の二つ
    の状態を持ち、前記第3の演算命令の実行時に前記第二
    の状態である記憶手段のうち、最小あるいは最大の番号
    を持つ前記記憶手段を割り当てることを特徴とする請求
    項1又は2に記載の演算処理装置。
  7. 【請求項7】 2以上の記憶手段を有する演算処理装置
    において、 1つの記憶手段のみ使用すると仮定した場合の演算命令
    を含む第一の演算命令セットと、 2以上の記憶手段を用いて演算を行う命令を含む第二の
    命令セットとを具備し、 前記第一の命令セットの実行
    時に動的に、あるいは実行前に静的に、前記第一の演算
    命令セットの命令を前記第二の演算命令セットに対応す
    る命令に置き換え、前記置き換えられた演算命令に従い
    演算を実行することを特徴とする演算処理装置。
JP832397A 1997-01-21 1997-01-21 演算処理装置 Abandoned JPH10207863A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP832397A JPH10207863A (ja) 1997-01-21 1997-01-21 演算処理装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP832397A JPH10207863A (ja) 1997-01-21 1997-01-21 演算処理装置

Publications (1)

Publication Number Publication Date
JPH10207863A true JPH10207863A (ja) 1998-08-07

Family

ID=11689977

Family Applications (1)

Application Number Title Priority Date Filing Date
JP832397A Abandoned JPH10207863A (ja) 1997-01-21 1997-01-21 演算処理装置

Country Status (1)

Country Link
JP (1) JPH10207863A (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006285721A (ja) * 2005-04-01 2006-10-19 Seiko Epson Corp 演算処理装置および演算処理方法
JP2008217805A (ja) * 2001-10-05 2008-09-18 Intel Corp 単一命令複数データ(simd)命令用の積和演算(mac)ユニット
JP4891252B2 (ja) * 2004-11-10 2012-03-07 エヌヴィディア コーポレイション 汎用乗算加算機能ユニット

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008217805A (ja) * 2001-10-05 2008-09-18 Intel Corp 単一命令複数データ(simd)命令用の積和演算(mac)ユニット
JP4555356B2 (ja) * 2001-10-05 2010-09-29 インテル・コーポレーション 単一命令複数データ(simd)命令用の積和演算(mac)ユニット
JP4891252B2 (ja) * 2004-11-10 2012-03-07 エヌヴィディア コーポレイション 汎用乗算加算機能ユニット
JP2006285721A (ja) * 2005-04-01 2006-10-19 Seiko Epson Corp 演算処理装置および演算処理方法

Similar Documents

Publication Publication Date Title
US5001662A (en) Method and apparatus for multi-gauge computation
JP3983857B2 (ja) ベクトルレジスタの複数バンクを用いた単一命令複数データ処理
JP3547139B2 (ja) プロセッサ
US6370558B1 (en) Long instruction word controlling plural independent processor operations
US5991785A (en) Determining an extremum value and its index in an array using a dual-accumulation processor
JP3958662B2 (ja) プロセッサ
KR101005718B1 (ko) 포화와 함께 또는 포화 없이 다중 오퍼랜드들의 누산을 위한 프로세서 감소 유닛
JP4064989B2 (ja) パック・データの乗加算演算を実行する装置
JP3974063B2 (ja) プロセッサおよびコンパイラ
Yu et al. Vector processing as a soft-core CPU accelerator
US6351760B1 (en) Division unit in a processor using a piece-wise quadratic approximation technique
JP2008250471A (ja) 再構成可能なsimd型プロセッサ
US6363476B1 (en) Multiply-add operating device for floating point number
US6813627B2 (en) Method and apparatus for performing integer multiply operations using primitive multi-media operations that operate on smaller operands
JP2006228190A (ja) 入力値に逆数演算を実施して結果値を作り出すデータ処理装置および方法
US6678710B1 (en) Logarithmic number system for performing calculations in a processor
US5931892A (en) Enhanced adaptive filtering technique
Eisig et al. The design of a 64-bit integer multiplier/divider unit
JPH10207863A (ja) 演算処理装置
KR19980018071A (ko) 멀티미디어 신호 프로세서의 단일 명령 다중 데이터 처리
RU2276805C2 (ru) Способ и устройство для выделения целой и дробных компонент из данных с плавающей точкой
Dieter et al. Low-cost microarchitectural support for improved floating-point accuracy
JP3695820B2 (ja) 浮動小数点積和演算器
US6792442B1 (en) Signal processor and product-sum operating device for use therein with rounding function
JP2608090B2 (ja) 高基数非回復型除算装置

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20040812

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20040824

A762 Written abandonment of application

Effective date: 20041027

Free format text: JAPANESE INTERMEDIATE CODE: A762