説明

積和演算装置及び積和演算装置の制御方法

【課題】積和演算処理と、異なる命令の加算処理と乗算処理との並列実行処理とを切り替えることができる積和演算装置及び積和演算装置の制御方法を提供すること。
【解決手段】本発明にかかる積和演算装置は、入力された第1及び第2のオペランドを乗算する乗算処理と、外部からの積和演算の有無を示す指示に応じて、入力された第3のオペランドを用いた所定の演算処理とを行う演算部と、演算部の処理結果を出力する出力部とを備え、演算部は、指示が積和演算有を示す場合に、乗算処理による乗算結果に第3のオペランドを加算して積和演算結果を求める積和演算処理と、指示が積和演算無を示す場合に、さらに入力された第4のオペランドに第3のオペランドを加算して加算結果を求める加算処理とを行い、出力部は、演算部により積和演算処理が行われた場合に、積和演算結果を出力し、演算部により加算処理が行われた場合に、乗算結果及び加算結果を出力する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、積和演算装置及び積和演算装置の制御方法に関し、特に、3項入力の積和演算と2項入力の加算処理及び乗算処理の並列実行とのいずれかを行うための積和演算装置及び積和演算装置の制御方法に関する。
【背景技術】
【0002】
特許文献1には、大整数の乗算及びモジュラ簡約を実行するためのシステム及び方法に関する技術が開示されている。特に、特許文献1にかかる大整数ユニットには、乗算器と加算器が並列演算し、乗算器の出力を加算器に入力する構成が開示されている。
【0003】
特許文献2には、積和演算処理とその他の演算処理を並行して行うことにより、演算処理時間を少なくすることができるデジタル信号処理用LSIに関する技術が開示されている。特に、特許文献2にかかるデジタル信号処理用LSIが対象とする積和演算は、AとBの2項を入力としたSUM=A*B+SUMという演算であり、いわゆるMAC(Multi and ACcumulation)演算である。
【0004】
特許文献3には、積和演算器と接続されたデジタル信号プロセッサに関する技術が開示されている。特許文献3にかかるデジタル信号プロセッサは、計算(B*C)+(D*E)を一つのサイクルで完了させるために、2つの積和演算回路を並列に構成し、一方の乗算結果を他方の加算器に入力し、B*C+D*Eを演算するものである。
【0005】
特許文献4には、浮動小数点の演算回路に関する技術が開示されている。また、浮動小数点の演算を行う積和演算回路においては、図6に示すように、レジスタ81に格納される第1オペランド(以下、第1OPとする)とレジスタ82に格納される第2オペランド(以下、第2OPとする)との積を求め、その結果とレジスタ83に格納される第3オペランド(以下、第3OPとする)との和を求める構成がある。
【0006】
図6において、積和演算回路80は、レジスタ81乃至83と、指数部加算部84と、指数部加算部85と、シフト回路86と、仮数部乗算回路87と、仮数部加算部88と、セロカウンタ89と、指数部補正回路90と、正規化回路91と、丸め回路92と、備える。レジスタ81に格納された第1OPは、指数部811及び仮数部812を含む。同様に、レジスタ82に格納された第2OPは、指数部821及び仮数部822を含み、レジスタ83に格納された第3OPは、指数部831及び仮数部832を含む。
【0007】
積和演算回路80において、第1OPと第2OPとの乗算のみを行う場合、第3OPを格納するレジスタ83の各要素を"0"で埋め、「第1OP*第2OP+"0"」の演算を行う必要がある。
【0008】
また、第1OP又は第2OPと第3OPとの加減算を行う場合には、第1OPと第2OPとのうちの演算対象でない方のレジスタ81又は82の各要素を"1"に書換えて「オペランド*1の乗算」を行った後に、その乗算結果と第3OPとの加減算を行っている。そのため、上記の積和演算回路80を用いて2つのオペランドの乗算又は加減算を行う際に、演算対象でないオペランドデータを格納するレジスタ81乃至83の各要素を書換える必要がある。
【先行技術文献】
【特許文献】
【0009】
【特許文献1】特開2002−099208号公報
【特許文献2】特開平01−119861号公報
【特許文献3】特表2004−501416号公報
【特許文献4】特開平08−263269号公報
【発明の概要】
【発明が解決しようとする課題】
【0010】
このように、積和演算は、3項を入力し、先に乗算を行い、乗算結果に対して残りの1項を加算するというものである。つまり、積和演算は、乗算処理と加算処理に依存関係がある。一方、例えば、情報処理装置などに積和演算器が利用される場合、積和演算以外にも単独の加算処理や乗算処理も多い。しかしながら、上述した積和演算器では、独立した命令である加算処理と乗算処理とを同時に並行して実行することができないという問題がある。
【0011】
本発明は、このような問題点を解決するためになされたものであり、積和演算処理と、異なる命令の加算処理と乗算処理との並列実行処理とを切り替えることができる積和演算装置及び積和演算装置の制御方法を提供することを目的とする。
【課題を解決するための手段】
【0012】
本発明の第1の態様にかかる積和演算装置は、入力された第1及び第2のオペランドを乗算する乗算処理と、外部からの積和演算の有無を示す指示に応じて、入力された第3のオペランドを用いた所定の演算処理とを行う演算部と、前記演算部の処理結果を出力する出力部とを備え、前記演算部は、前記指示が積和演算有を示す場合に、前記乗算処理による乗算結果に前記第3のオペランドを加算して積和演算結果を求める積和演算処理と、前記指示が積和演算無を示す場合に、さらに入力された第4のオペランドに前記第3のオペランドを加算して加算結果を求める加算処理とを行い、前記出力部は、前記演算部により前記積和演算処理が行われた場合に、前記積和演算結果を出力し、前記演算部により前記加算処理が行われた場合に、前記乗算結果及び前記加算結果を出力する。
【0013】
本発明の第2の態様にかかる積和演算装置の制御方法は、外部からの積和演算の有無を示す指示に応じて、少なくとも入力された第1、第2及び第3のオペランドを演算する演算部と、前記演算部の処理結果を出力する出力部とを備える積和演算装置の制御方法であって、前記演算部において、入力された第1のオペランドと第2のオペランドとを乗算して乗算結果を求める乗算処理ステップと、前記演算部において、前記外部からの指示を受け付け、当該指示が積和演算有無のいずれを示すかを判定する判定ステップと、前記演算部において、前記指示が積和演算有を示すと判定された場合に、前記乗算ステップによる乗算結果に前記第3のオペランドを加算して積和演算結果を求める積和演算処理ステップと、前記出力部において、前記積和演算処理ステップが行われた場合に、前記積和演算結果を出力するステップと、前記演算部において、前記指示が積和演算無を示すと判定された場合に、さらに入力された第4のオペランドに前記第3のオペランドを加算して加算結果を求める加算処理ステップと、前記出力部において、前記加算処理ステップが行われた場合に、前記乗算結果及び前記加算結果を出力するステップとを含む。
【発明の効果】
【0014】
本発明により、積和演算処理と、異なる命令の加算処理と乗算処理との並列実行処理とを切り替えて処理効率を高める積和演算装置及び積和演算装置の制御方法を提供することができる。
【図面の簡単な説明】
【0015】
【図1】本発明の実施の形態1にかかる積和演算装置の構成を示すブロック図である。
【図2】本発明の実施の形態1にかかる積和演算装置の制御方法の流れを示すフローチャート図である。
【図3】本発明の実施の形態2にかかる積和演算装置の構成を示すブロック図である。
【図4】本発明の実施の形態3にかかる積和演算装置の構成を示すブロック図である。
【図5】本発明の実施の形態4にかかる積和演算装置の構成を示すブロック図である。
【図6】関連技術にかかる積和演算装置の構成を示すブロック図である。
【発明を実施するための形態】
【0016】
以下では、本発明を適用した具体的な実施の形態について、図面を参照しながら詳細に説明する。各図面において、同一要素には同一の符号が付されており、説明の明確化のため、必要に応じて重複説明は省略する。
【0017】
<発明の実施の形態1>
図1は、本発明の実施の形態1にかかる積和演算装置100の構成を示すブロック図である。積和演算装置100は、第1のオペランド111、第2のオペランド112、第3のオペランド113及び第4のオペランド114を入力し、外部からの積和演算の有無を示す指示115に応じて、3項の入力に対する積和演算、又は、2項の入力に対する乗算及び2項の入力に対する加算を切り替えて実行し、出力結果116を出力するものである。すなわち、積和演算装置100は、積和演算有を示す指示を受け付けた場合、積和演算結果(例えば、A*B+C)を出力し、積和演算無を示す指示を受け付けた場合、乗算結果(A*B)及び加算結果(C+D)を出力する。
【0018】
ここで、第1のオペランド111〜第4のオペランド114は、例えば、IEEE(The Institute of Electrical and Electronics Engineers, Inc.)754形式に基づく浮動小数点データであり、符号部、指数部及び仮数部を含むものである。また、第1のオペランド111〜第4のオペランド114は、例えば、32ビット、64ビット等である。尚、第1のオペランド111〜第4のオペランド114は、IEEE754形式に限定されず、データサイズも上述した例に限定されない。また、積和演算装置100は、第1のオペランド111〜第4のオペランド114を外部のレジスタ(不図示)から読み出すか、直接、入力してもよい。
【0019】
また、指示115は、積和演算装置100において、積和演算を実行させるか否かを指定するための情報であり、例えば、制御信号であるとよい。
【0020】
積和演算装置100は、演算部101と、出力部102とを備える。演算部101は、入力された第1のオペランド111及び第2のオペランド112を乗算する乗算処理と、外部からの積和演算の有無を示す指示に応じて、入力された第3のオペランド113を用いた所定の演算処理とを行う。つまり、演算部101は、少なくとも入力された第1のオペランド111、第2のオペランド112及び第3のオペランド113を演算し、指示115に応じて、新たに第4のオペランド114を入力するようにしてもよい。または、演算部101は、第1のオペランド111〜第4のオペランド114をまとめて入力してもよい。
【0021】
そして、演算部101は、指示115が積和演算有を示す場合に、乗算処理による乗算結果に第3のオペランド113を加算して積和演算結果を求める積和演算処理と、指示115が積和演算無を示す場合に、さらに入力された第4のオペランド114に第3のオペランド113を加算して加算結果を求める加算処理とを行う。
【0022】
出力部102は、演算部101の処理結果を出力結果116として出力する。すなわち、出力部102は、演算部101により積和演算処理が行われた場合に、積和演算結果を出力し、演算部101により加算処理が行われた場合に、乗算結果及び加算結果を出力する。
【0023】
図2は、本発明の実施の形態1にかかる積和演算装置の制御方法の流れを示すフローチャート図である。まず、演算部101は、第1のオペランド111と第2のオペランド112とを乗算して乗算結果を求める(S11)。次に、演算部101は、指示115が外部からの積和演算の有無を示す指示を受け付け、当該指示が積和演算有を示すか否かを判定する(S12)。
【0024】
指示115が積和演算有を示すと判定された場合に、演算部101は、ステップS11による乗算結果に第3のオペランド113を加算して積和演算結果を求める(S13)。そして、出力部102は、積和演算結果を出力する(S14)。
【0025】
また、指示115が積和演算無を示すと判定された場合に、演算部101は、第4のオペランド114に第3のオペランド113を加算して加算結果を求める(S15)。そして、出力部102は、乗算結果及び加算結果を出力する(S16)。
【0026】
このように、本発明により、積和演算処理と、異なる命令の加算処理と乗算処理との並列実行処理とを切り替えて処理効率を高めることができる。
【0027】
<発明の実施の形態2>
図3は、本発明の実施の形態2にかかる積和演算装置200の構成を示すブロック図である。積和演算装置200は、図6に示した浮動小数点の3項の入力に対する積和演算を行う積和演算回路80に改良を加えて、本発明の実施の形態1にかかる積和演算装置100を適用した一実施例である。積和演算装置200は、4つの入力ポート(不図示)から4つのオペランド(以下、A,B,C及びDと呼ぶ)を入力し、演算結果(以下、E及びFと呼ぶ)を2つの出力ポート(不図示)へ出力する。尚、積和演算装置200は、積和演算を行う場合は、1つの出力ポートのみへ出力しても良い。以下では、被乗数をA、乗数をB、被加算数をC及び加算数をDとする。
【0028】
また、積和演算装置200は、本発明の実施の形態1と同様に、外部からの積和演算有無を示す指示(不図示)を受け付ける。そして、積和演算装置200は、積和演算有を示す指示を受け付けた場合、一つの出力ポートに積和演算結果を出力し、積和演算無を示す指示を受け付けた場合、異なる出力ポートに乗算結果及び加算結果を出力する。つまり、積和演算装置200は、一つの装置により積和演算処理又は加算処理及び乗算処理のいずれかを実行することが可能な命令融合演算装置である。
【0029】
積和演算装置200は、レジスタ21乃至24、unpacker25乃至28、指数加算器31及び32、シフト回路33、加算器34、乗算ツリー35、CSA36、PG生成回路37、LZA38、加算器39、シフト回路40、STICKY生成回路41及び43、丸め判定回路42及び44、加算器45、後処理シフト回路46、丸め回路47及び48、repacker49及び51、レジスタ50及び52、セレクタ60乃至63を備える。
【0030】
レジスタ21、22、23、24、50及び52は、浮動小数点データを格納する記憶装置である。例えば、レジスタ21に格納されたデータは、指数部211及び仮数部212を含む。同様に、レジスタ22、23及び24に格納されたデータは、指数部221及び仮数部222、指数部231及び仮数部232並びに指数部241及び仮数部242を含む。尚、符号部については、図示を省略している。また、レジスタ50及び52についても、レジスタ21乃至24と同様であるため、図示及び説明は省略する。
【0031】
unpacker25乃至28は、レジスタ21乃至24に格納された浮動小数点データを入力し、IEEE754形式に従い、指数部及び仮数部に分離する。具体的には、unpacker25は、レジスタ21に格納された浮動小数点データを入力し、指数部211と仮数部212に分離し、それぞれ指数d10及び仮数d11として出力する。同様に、unpacker26は、レジスタ22に格納された浮動小数点データを入力し、指数部221と仮数部222に分離し、それぞれ指数d12及び仮数d13として出力する。また、unpacker27は、レジスタ23に格納された浮動小数点データを入力し、指数部231と仮数部232に分離し、それぞれ指数d14及び仮数d15として出力する。また、unpacker28は、レジスタ24に格納された浮動小数点データを入力し、指数部241と仮数部242に分離し、それぞれ指数d16及び仮数d17として出力する。
【0032】
指数加算器31は、指数d10及び指数d12を入力して加算を行い、指数加算結果d18を出力する。セレクタ61は、指数d16及び指数加算結果d18を入力し、外部からの指示が積和演算有を示す場合、指数加算結果d18を選択し、当該指示が積和演算無を示す場合、指数d16を選択して、指数加算器32へ出力する。つまり、セレクタ61は、指示が積和演算有を示す場合、A及びBの乗算後の指数値を選択し、指示が積和演算無を示す場合、Dの指数値を選択する。指数加算器32は、指数d14とセレクタ61により出力されたデータとを入力し、一方から他方を減算し、指数加算結果d19を出力する。つまり、指数加算器32は、指数d14とセレクタ61により選択されたデータとの差を求める。
【0033】
シフト回路33は、仮数d15を入力し、指数加算結果d19に基づき、仮数d15の右シフト又は左シフトを行い、シフト結果d20を出力する。具体的には、シフト回路33は、指数加算結果d19の正負を判定する。例えば、セレクタ61により指数加算結果d18が選択され、指数加算器32は、指数d14から指数加算結果d18を減算して指数加算結果d19を出力したとする。このとき、指数加算結果d19が0以上の場合、シフト回路33は、仮数d15を指数加算結果d19の桁数で左シフトする。また、指数加算結果d19が0未満の場合、シフト回路33は、仮数d15を指数加算結果d19の桁数で右シフトする。これは、後述するCSA36において、乗算ツリー35による乗算結果とシフト結果d20との加算処理を行うための桁合わせ処理である。尚、桁合わせ処理には、乗算結果をシフトしても構わない。但し、例えば、A,B,C及びDが各64ビットの浮動小数点データである場合、仮数部は各53ビットとなるため、乗算結果の加算結果d22は106ビットであり、被加算数Cの仮数d15は53ビットである。そのため、本発明の実施の形態2では、よりシフト量の少ない被加算数Cの仮数d15のシフトを行うことにより、処理負荷を抑えることができる。
【0034】
乗算ツリー35は、仮数d11及びd13を入力して乗算を行い、乗算結果として桁上げ値d21及び加算結果d22を出力する。乗算ツリー35は、例えば、Wallace Tree等で実現するとよい。
【0035】
セレクタ62は、桁上げ値d21及び0(不図示)を入力し、外部からの指示が積和演算有を示す場合、桁上げ値d21を選択し、当該指示が積和演算無を示す場合、0を選択して、CSA36へ出力する。セレクタ63は、加算結果d22及び仮数d17を入力し、外部からの指示が積和演算有を示す場合、加算結果d22を選択し、当該指示が積和演算無を示す場合、仮数d17を選択して、CSA36へ出力する。
【0036】
CSA36は、シフト結果d20、セレクタ62及び63に選択されたデータを入力して加算を行い、桁上げ値d23及び加算結果d24を出力する。例えば、外部からの指示が積和演算有を示す場合、セレクタ62及び63は、桁上げ値d21及び加算結果d22、すなわち、乗算結果を選択する。そのため、CSA36は、乗算結果にシフト結果d20を加算する積和演算処理を行い、積和演算結果としての桁上げ値d23及び加算結果d24を求めることができる。一方、当該指示当該指示が積和演算無を示す場合、セレクタ62及び63は、桁上げ値0及び加算数Dの仮数d17を選択する。そのため、CSA36は、加算数Dの仮数d17に被加算数Cのシフト結果d20を加算する加算処理を行い、加算結果としての桁上げ値d23及び加算結果d24を求めることができる。
【0037】
セレクタ60は、補正値である1及び0を入力し、CSA36に桁上げがある場合に、1を選択して加算器34に出力する。また、セレクタ60は、指数加算結果d19が正であり、乗算結果のレンジ範囲外である場合、1を選択して加算器34に出力する。
【0038】
加算器34は、シフト結果d20及びセレクタ60により選択されたデータを入力して加算し、加算結果d25を出力する。つまり、加算器34は、シフト結果d20を補正する補正処理を行う。これにより、加算器34は、シフト結果d20の最下位ビットに補正をすることができ、後述するシフト回路40において、適切に処理することができる。
【0039】
加算器39は、桁上げ値d23及び加算結果d24を入力して加算し、加算結果d28を出力する。尚、被加算数Cの仮数d15の左シフトの最大幅は、乗算結果の加算結果d22のMSB=1までであり、被加算数Cの仮数d15の右シフトの最大幅は、加算結果d22のLSB+1ビットと被加算数Cの仮数d15の隠しビットまでである。そのため、加算器34及び39は、この幅を考慮して絶対値加減算を行い、加算結果d25及びd28を得る。
【0040】
PG生成回路37は、桁上げ値d23及び加算結果d24を入力し、PG生成を行い、PG結果d26を出力する。尚、PG生成回路37は、加算結果d28と同じ結果が得られる。LZA38は、PG結果d26を入力し、LZA処理を行い、LZA結果d27を出力する。LZA処理では、入力データのMSBからの0の続く数の算出を行い、桁合わせシフト量を求める。
【0041】
STICKY生成回路41は、桁上げ値d23及び加算結果d24を入力し、加算結果d24の内、53ビットに続く下位ビットの論理和からSTICKY生成し、STICKY結果d30を出力する。丸め判定回路42は、STICKY結果d30を入力し、丸め判定を行い、丸め指示d31を出力する。
【0042】
シフト回路40は、加算結果d25及び加算結果d28を入力し、指数加算結果d19に基づき、加算結果d25及び加算結果d28のシフトを行い、シフト結果d29を出力する。尚、指数加算結果d18より指数d14が大きい場合、シフト回路33は、仮数d15を左シフトして桁合わせ処理を行う。しかし、桁合わせ処理の左シフト量が1以上のとき、シフト回路40は、乗算の中間結果である加算結果d22を左シフト量だけ右シフトして隠しビットを正規の位置に戻す処理と仮数加算による仮数オーバーフローの正規化シフト処理とを行う。
【0043】
具体的には、シフト回路40は、シフト回路33と同様に、指数加算結果d19の正負を判定する。そのため、指数加算結果d19が0以上の場合、シフト回路40は、加算結果d25の値を上位、加算結果d28を下位として結合し、右シフトする。また、指数加算結果d19が0未満の場合、シフト回路40は、加算結果d28のみを選択し、シフト処理を行わない。
【0044】
例えば、指数加算結果d19が正であり、乗算結果のレンジ範囲外である場合、外部からの指示が積和演算有を示す場合には、CSA36は積和演算処理を行うが、シフト結果d20が乗算結果よりはるかに大きいため、実質的に、乗算結果は誤差の範囲となり得る。そのため、予め、加算器34において、誤差を最下位ビットの1として補正を行うことで、シフト回路40における補正処理をなくすことができる。また、シフト回路40における処理結果であるシフト結果d29を正確とすることができる。尚、指数加算結果d19が負であり、乗算結果のレンジ範囲外である場合、シフト結果d20が乗算結果よりはるかに小さいため、実質的に、シフト結果d25は誤差の範囲となり得る。そのため、シフト回路40は、シフト結果d25を切り捨てても構わない。
【0045】
後処理シフト回路46は、シフト結果d29を入力し、LZA結果d27に応じて、仮数加算の中間結果であるシフト結果d29を左シフトして正規化し、シフト結果d35を出力する。丸め回路47は、シフト結果d29及び丸め指示d31を入力し、丸め処理を行い、丸め結果d36を出力する。
【0046】
repacker49は、指数加算結果d19、シフト結果d35及び丸め結果d36を入力し、IEEE754形式に従い、ビット結合を行い、repack結果d38を出力する。レジスタ50は、repack結果d38を格納し、出力ポートへ出力する。つまり、レジスタ50には、積和演算結果又は加算結果が格納される。
【0047】
STICKY生成回路43は、桁上げ値d21及び加算結果d22を入力し、STICKY生成し、STICKY結果d32を出力する。丸め判定回路44は、STICKY結果d32を入力し、丸め判定を行い、丸め指示d33を出力する。加算器45は、桁上げ値d21及び加算結果d22を入力し、加算し、加算結果d34を出力する。丸め回路48は、丸め指示d33及び加算結果d34を入力し、丸め処理を行い、丸め結果d37を出力する。
【0048】
repacker51は、指数加算結果d18、丸め結果d37及び加算結果d34を入力し、IEEE754形式に従い、ビット結合を行い、repack結果d39を出力する。レジスタ52は、repack結果d39を格納し、出力ポートへ出力する。つまり、レジスタ52には、乗算結果が格納される。
【0049】
以上が本発明の実施の形態2にかかる積和演算装置200の構成の説明である。続いて、外部からの指示が積和演算有を示す場合の処理、つまり、積和演算処理における動作の特徴を説明する。
【0050】
まず、乗算ツリー35は、被乗数Aの仮数d11と乗数Bの仮数d13を乗算し、A*Bの乗算結果として桁上げ値d21及び加算結果d22を出力する。また、セレクタ61は、指示が積和演算有を示すため、A*Bの乗算結果の桁数である指数加算結果d18を選択する。そして、指数加算器32は、指数d14及び指数加算結果d18の差として指数加算結果d19を算出する。シフト回路33は、指数加算結果d19を用いてA*Bの乗算結果の桁数と被加算数Cの桁数とを比較し、大小に応じて、仮数d15のシフトを行い、シフト結果d20を出力する。セレクタ62及び63は、指示が積和演算有を示すため、桁上げ値d21及び加算結果d22を選択する。そして、CSA36は、シフト結果d20、桁上げ値d21及び加算結果d22を加算、つまり、積和演算を行う。
【0051】
以降、上述したように、加算器34、PG生成回路37、LZA38、加算器39、シフト回路40、STICKY生成回路41、丸め判定回路42、後処理シフト回路46、丸め回路47及びrepacker49によりシフト結果d20、桁上げ値d23及び加算結果d24が加工される。そして、repacke49によりIEEE754形式に従ってビット結合され、浮動小数点データである積和演算結果がレジスタ50に格納され、積和演算結果が出力される。尚、本発明の実施の形態2にかかる積和演算装置200では、併せて、乗算結果が出力されるが、これを指示が積和演算有を示す場合に、出力を制御するようにしても構わない。
【0052】
次に、外部からの指示が積和演算無を示す場合の処理、つまり、乗算処理及び加算処理を並列実行する際について説明する。ます、乗算処理における動作の特徴を説明する。
【0053】
まず、乗算ツリー35は、被乗数Aの仮数d11と乗数Bの仮数d13を乗算し、A*Bの乗算結果として桁上げ値d21及び加算結果d22を出力する。以降、STICKY生成回路43、丸め判定回路44及び加算器45により桁上げ値d21及び加算結果d22が加工される。そして、repacker51によりIEEE754形式に従ってビット結合され、浮動小数点データである乗算結果がレジスタ52に格納され、乗算結果が出力される。
【0054】
続いて、加算処理における動作の特徴を説明する。指数加算器32は、指示が積和演算無を示すため、加算数Dの指数d16を選択する。そして、指数加算器32は、指数d14及び指数d16の差として指数加算結果d19を算出する。シフト回路33は、指数加算結果d19を用いて加算数Dの桁数と被加算数Cの桁数とを比較し、大小に応じて、仮数d15のシフトを行い、シフト結果d20を出力する。セレクタ62及び63は、指示が積和演算無を示すため、桁上げ値0及び仮数d17を選択する。そして、CSA36は、シフト結果d20、桁上げ値0及び仮数d17を加算する。
【0055】
以降、上述したように、加算器34、PG生成回路37、LZA38、加算器39、シフト回路40、STICKY生成回路41、丸め判定回路42、後処理シフト回路46、丸め回路47及びrepacker49によりシフト結果d20、桁上げ値d23及び加算結果d24が加工される。そして、repacke49によりIEEE754形式に従ってビット結合され、浮動小数点データである加算結果がレジスタ50に格納され、加算結果が出力される。
【0056】
尚、図3において、実質的に乗算処理、加算処理及び積和演算処理を行う演算部の構成としては、少なくとも乗算ツリー35、CSA36、セレクタ62及びセレクタ63を含むようにするとよい。すなわち、乗算ツリー35は、入力された第1及び第2のオペランドを乗算する乗算処理を行うものである。また、CSA36は、少なくとも入力された第3のオペランドを用いた所定の演算処理を行うものである。特に、CSA36は、指示が積和演算有を示す場合に、乗算処理による乗算結果に第3のオペランドを加算して積和演算結果を求める積和演算処理と、指示が積和演算無を示す場合に、さらに入力された第4のオペランドに第3のオペランドを加算して加算結果を求める加算処理とを行うものである。また、セレクタ62及びセレクタ63は、外部からの積和演算の有無を示す指示によりCSA36への出力を選択する機能セレクタである。特に、セレクタ63は、指示が積和演算無を示す場合に、第4のオペランドを選択してCSA36へ出力する。このとき、CSA36は、セレクタ63により出力された第4のオペランドを用いて加算処理を行う。このように、本発明の実施の形態2では、セレクタ62及びセレクタ63により、積和演算処理又は加算処理のいずれを実行するかを切り替えることができる。
【0057】
また、セレクタ62及び63は、指示が積和演算有を示す場合に、乗算結果を選択してCSA36へ出力し、CSA36は、セレクタ62及び63により出力された乗算結果を用いて積和演算処理を行う。これにより、CSA36は、積和演算処理のための加算処理と、単独の加算処理とを切り替えて実行することができる。CSA36を有効活用できる。
【0058】
また、上述した第1、第2、第3及び第4のオペランドは、浮動小数点のデータであり、出力部は、演算部の処理結果に丸め処理を行い、出力する。これにより、浮動小数点における積和演算において、精度を維持しつつ、単独の加算処理及び乗算処理を並行実行することができる。
【0059】
また、本発明の実施の形態2では、加算処理と乗算処理が同時に実行可能なようにハードウェアを追加しているので、積和演算処理とは別に、加算処理と乗算処理とが同時に実行できるという効果を奏する。
【0060】
<発明の実施の形態3>
図4は、本発明の実施の形態3にかかる積和演算装置201の構成を示すブロック図である。本発明の実施の形態3にかかる積和演算装置201は、本発明の実施の形態2に係る積和演算装置200に改良を加えたものである。すなわち、外部からの指示が積和演算無を示す場合に、積和演算装置200のCSA36で行われていた被加算数C及び加算数Dの加算処理を加算器34で行うようにするため、加算器45を外し、セレクタ64乃至67の追加と、配線の変更を行った。尚、図4において、図3と同様の構成については、詳細な説明を省略する。以下では、本発明の実施の形態2との違いを中心に説明する。
【0061】
セレクタ64乃至67は、外部からの指示に応じて入力を切り替える機能セレクタである。具体的には、セレクタ64は、上述した補正値(不図示)及び仮数d17を入力し、外部からの指示が積和演算有を示す場合、補正値を選択し、当該指示が積和演算無を示す場合、仮数d17を選択して、加算器34へ出力する。セレクタ65は、シフト結果d20及び0(不図示)を入力し、外部からの指示が積和演算有を示す場合、シフト結果d20を選択し、当該指示が積和演算無を示す場合、0を選択して、CSA36へ出力する。セレクタ66は、PG結果d26及び加算結果d25を入力し、外部からの指示が積和演算有を示す場合、PG結果d26を選択し、当該指示が積和演算無を示す場合、加算結果d25を選択して、LZA38へ出力する。セレクタ67は、丸め指示d31及び丸め指示d33を入力し、外部からの指示が積和演算有を示す場合、丸め指示d31を選択し、当該指示が積和演算無を示す場合、丸め指示d33を選択して、LZA38へ出力する。
【0062】
続いて、外部からの指示が積和演算有を示す場合の処理、つまり、積和演算処理における動作の特徴を説明する。本発明の実施の形態3では、積和演算処理は、セレクタ64乃至67において選択されるデータが本発明の実施の形態2と同等であるため、同様の処理が行われ、積和演算結果が得ることができる。そのため、詳細な説明を省略する。
【0063】
次に、外部からの指示が積和演算無を示す場合の処理、つまり、乗算処理及び加算処理を並列実行する際について説明する。ます、乗算処理における動作の特徴を説明する。
【0064】
まず、本発明の実施の形態2と同様に、乗算ツリー35は、被乗数Aの仮数d11と乗数Bの仮数d13を乗算し、A*Bの乗算結果として桁上げ値d21及び加算結果d22を出力する。また、CSA36の前段には、図3と異なりセレクタ62及び63がない。そのため、CSA36は、常に、桁上げ値d21及び加算結果d22を入力する。つまり、当該指示が積和演算無を示す場合、CSA36は、セレクタ65により選択された0、桁上げ値d21及び加算結果d22を入力し、実質的に、桁上げ値d21及び加算結果d22をそのまま桁上げ値d23及び加算結果d24として出力する。続いて、加算器39は、桁上げ値d23及び加算結果d24を入力し、乗算結果として加算結果d28を出力する。
【0065】
また、STICKY生成回路41及び丸め判定回路42は、被乗数A及び乗数Bの乗算結果である桁上げ値d23及び加算結果d24を用いて、乗算結果に対する丸め指示d31を出力する。その後、丸め回路48は、加算結果d28及び丸め指示d31を入力し、丸め処理を行い、丸め結果d37を出力する。
【0066】
そして、repacker51は、指数加算結果d18、加算結果d28及び丸め結果d37を入力し、IEEE754形式に従い、ビット結合を行い、repack結果d39を出力する。レジスタ52は、repack結果d39を格納し、出力ポートへ出力する。つまり、レジスタ52には、乗算結果が格納される。
【0067】
続いて、加算処理における動作の特徴を説明する。まず、加算器34は、シフト結果d20及びセレクタ64により選択された仮数d17を入力し、加算し、加算結果d25を出力する。つまり、加算器34は、当該指示が積和演算無を示す場合、加算数Dの仮数d17に被加算数Cのシフト結果d20を加算する加算処理を行う。
【0068】
セレクタ66は、指示が積和演算無を示すため、被加算数C及び加算数Dの加算結果d25を選択して、LZA38へ出力する。そのため、LZA38は、加算結果d25を入力し、LZA処理を行い、加算結果d25に基づき生成されたLZA結果d27を出力する。また、シフト回路40は、指示が積和演算無を示す場合、加算結果d25を用いてシフト処理を行い、シフト結果d29を出力する。そして、後処理シフト回路46は、被加算数C及び加算数Dの加算結果d25に基づき生成されたLZA結果d27に応じて、後処理を行う。
【0069】
また、STICKY生成回路43及び丸め判定回路44は、被加算数C及び加算数Dの加算結果d25を用いて丸め指示d33を出力する。そして、セレクタ67は、指示が積和演算無を示すため、丸め指示d33を選択して、丸め回路47へ出力する。丸め回路47は、被加算数C及び加算数Dの加算結果であるシフト結果d29及びセレクタ67に選択された丸め指示d33を入力し、丸め処理を行い、丸め結果d36を出力する。
【0070】
repacker49は、指数加算結果d19、シフト結果d35及び丸め結果d36を入力し、IEEE754形式に従い、ビット結合を行い、repack結果d38を出力する。レジスタ50は、repack結果d38を格納し、出力ポートへ出力する。つまり、レジスタ50には、加算結果が格納される。
【0071】
上述した本発明の実施の形態2では、加算器34は、当該指示が積和演算無を示す場合であっても補正処理を行っていた。しかし、後続のシフト回路40では、加算結果としてCSA36及び加算器39の処理結果である加算結果d28を用いていた。つまり、当該指示が積和演算無を示す場合における加算器34を有効活用できていなかった。そこで、本発明の実施の形態3では、当該指示が積和演算無を示す場合に、加算器34に被加算数C及び加算数Dの加算処理を行わせるものとした。これにより、処理効率が向上する。併せて、本発明の実施の形態2で必須であった加算器45を不要とし、同等の処理を実現することで、回路規模を縮小するという効果を奏する。
【0072】
また、言い換えると、セレクタ64は、指示が積和演算有を示す場合に、第4のオペランドを補正する補正値を選択して加算器34へ出力し、指示が積和演算無を示す場合に、第4のオペランドを選択して加算器34へ出力する機能セレクタである。このとき、加算器34は、セレクタ64により出力された補正値に第3のオペランドを加算して補正結果を求める補正処理をさらに行う。そして、シフト回路40は、積和演算結果を補正結果に基づき補正して出力する。これにより、加算処理に用いられる加算器34を積和演算処理に有効活用できる。
【0073】
また、本発明の実施の形態3では、積和演算処理を行うCSA36と、外部からの積和演算の有無を示す指示によりCSA36への出力を選択するセレクタ65とを備えている。そして、セレクタ65は、当該指示が積和演算有を示す場合に、第3のオペランドを選択してCSA36へ出力し、CSA36は、セレクタ65により出力された第3のオペランドを用いて積和演算処理を行う。
【0074】
また、本発明の実施の形態3では、加算処理と乗算処理が同時に実行可能なように最小限のハードウェアを追加しているので、積和演算処理とは別に、加算処理と乗算処理とが同時に実行できるという効果を奏する。
【0075】
<発明の実施の形態4>
図5は、本発明の実施の形態4にかかる積和演算装置202の構成を示すブロック図である。本発明の実施の形態4にかかる積和演算装置202は、本発明の実施の形態3に係る積和演算装置201に改良を加えたものである。すなわち、外部からの指示が積和演算無を示す場合に、積和演算装置201のCSA36で行われていた被乗数A及び乗数Bの乗算結果をそのまま加算器39へ出力する処理を待たずに、桁上げ値d21及び加算結果d22を直接加算器39へ出力するようにしたものである。そのために、積和演算装置201のセレクタ65に代えて、CSA36の後段にセレクタ68及び69を追加した。尚、図5において、図4と同様の構成については、詳細な説明を省略する。以下では、本発明の実施の形態3との違いを中心に説明する。
【0076】
セレクタ68及び69は、外部からの指示に応じて入力を切り替える機能セレクタである。具体的には、セレクタ68は、桁上げ値d21及びCSA36から出力される桁上げ値を入力し、外部からの指示が積和演算有を示す場合、当該CSA36から出力される桁上げ値を選択し、当該指示が積和演算無を示す場合、桁上げ値d21を選択して、加算器39へ出力する。セレクタ69は、加算結果d22及びCSA36から出力される加算結果を入力し、外部からの指示が積和演算有を示す場合、当該CSA36から出力される加算結果を選択し、当該指示が積和演算無を示す場合、加算結果d22を選択して、加算器39へ出力する。
【0077】
言い換えると、セレクタ68及び69は、外部からの指示が積和演算有を示す場合に、積和演算結果を選択し、当該指示が積和演算無を示す場合に、乗算結果を選択して加算器39以降へ出力する。これにより、不要な積和演算を行わないことができ、処理を効率かつ迅速に行うことができる。
【0078】
このように、本発明の実施の形態4では、積和演算装置202の乗算処理のみの動作において、セレクタ68及び69によりCSA36の処理を実質的にスキップすることができるため、積和演算処理よりも短い時間で乗算処理が可能となるという効果を奏する。
【0079】
<その他の発明の実施の形態>
本発明により、情報処置装置で加減算や乗算処理を行う場合に、本発明の実施の形態1乃至4にかかる積和演算装置100及び200乃至202のいずれかを使用することにより、少ないハードウェアで積和動作か乗算及び加算の同時実行可能な演算器が使用可能となる。本発明は、情報処理を行う積和演算器において、回路の使用効率を高めて、異なる命令の乗算処理と加算処理要求があった場合にも同時に実行できるようにしたことにある。
【0080】
さらに、本発明は上述した実施の形態のみに限定されるものではなく、既に述べた本発明の要旨を逸脱しない範囲において種々の変更が可能であることは勿論である。
【符号の説明】
【0081】
100 積和演算装置
101 演算部
102 出力部
111 第1のオペランド
112 第2のオペランド
113 第3のオペランド
114 第4のオペランド
115 指示
116 出力結果
200 積和演算装置
201 積和演算装置
202 積和演算装置
21 レジスタ
211 指数部
212 仮数部
22 レジスタ
221 指数部
222 仮数部
23 レジスタ
231 指数部
232 仮数部
24 レジスタ
241 指数部
242 仮数部
25 unpacker
26 unpacker
27 unpacker
28 unpacker
31 指数加算器
32 指数加算器
33 シフト回路
34 加算器
35 乗算ツリー
36 CSA
37 PG生成回路
38 LZA
39 加算器
40 シフト回路
41 STICKY生成回路
42 丸め判定回路
43 STICKY生成回路
44 丸め判定回路
45 加算器
46 後処理シフト回路
47 丸め回路
48 丸め回路
49 repacker
50 レジスタ
51 repacker
52 レジスタ
60 セレクタ
61 セレクタ
62 セレクタ
63 セレクタ
64 セレクタ
65 セレクタ
66 セレクタ
67 セレクタ
68 セレクタ
69 セレクタ
d10 指数
d11 仮数
d12 指数
d13 仮数
d14 指数
d15 仮数
d16 指数
d17 仮数
d18 指数加算結果
d19 指数加算結果
d20 シフト結果
d21 桁上げ値
d22 加算結果
d23 桁上げ値
d24 加算結果
d25 加算結果
d26 PG結果
d27 LZA結果
d28 加算結果
d29 シフト結果
d30 STICKY結果
d31 丸め指示
d32 STICKY結果
d33 丸め指示
d34 加算結果
d35 シフト結果
d36 丸め結果
d37 丸め結果
d38 repack結果
d39 repack結果
A 被乗数
B 乗数
C 被加算数
D 加算数
80 積和演算回路
81 レジスタ
811 指数部
812 仮数部
82 レジスタ
821 指数部
822 仮数部
83 レジスタ
831 指数部
832 仮数部
84 指数部加算部
85 指数部加算部
86 シフト回路
87 仮数部乗算回路
88 仮数部加算部
89 セロカウンタ
90 指数部補正回路
91 正規化回路
92 丸め回路

【特許請求の範囲】
【請求項1】
入力された第1及び第2のオペランドを乗算する乗算処理と、外部からの積和演算の有無を示す指示に応じて、入力された第3のオペランドを用いた所定の演算処理とを行う演算部と、
前記演算部の処理結果を出力する出力部とを備え、
前記演算部は、前記指示が積和演算有を示す場合に、前記乗算処理による乗算結果に前記第3のオペランドを加算して積和演算結果を求める積和演算処理と、前記指示が積和演算無を示す場合に、さらに入力された第4のオペランドに前記第3のオペランドを加算して加算結果を求める加算処理とを行い、
前記出力部は、前記演算部により前記積和演算処理が行われた場合に、前記積和演算結果を出力し、前記演算部により前記加算処理が行われた場合に、前記乗算結果及び前記加算結果を出力する積和演算装置。
【請求項2】
前記演算部は、前記乗算処理を行う乗算器と、少なくとも前記加算処理を行う第1の加算器と、前記外部からの積和演算の有無を示す指示により前記第1の加算器への出力を選択する第1の機能セレクタとを有し、
前記第1の機能セレクタは、当該指示が積和演算無を示す場合に、前記第4のオペランドを選択して前記第1の加算器へ出力し、
前記第1の加算器は、前記第1の機能セレクタにより出力された第4のオペランドを用いて前記加算処理を行うことを特徴とする請求項1に記載の積和演算装置。
【請求項3】
前記第1の機能セレクタは、当該指示が積和演算有を示す場合に、前記乗算結果を選択して前記第1の加算器へ出力し、
前記第1の加算器は、前記第1の機能セレクタにより出力された乗算結果を用いて前記積和演算処理を行うことを特徴とする請求項2に記載の積和演算装置。
【請求項4】
前記第1の機能セレクタは、当該指示が積和演算有を示す場合に、前記第3のオペランドを補正する補正値を選択して前記第1の加算器へ出力し、
前記第1の加算器は、前記第1の機能セレクタにより出力された補正値に前記第3のオペランドを加算して補正結果を求める補正処理をさらに行い、
前記出力部は、前記演算部により前記補正処理が行われた場合に、前記積和演算結果を前記補正結果に基づき補正して出力することを特徴とする請求項2に記載の積和演算装置。
【請求項5】
前記演算部は、
前記積和演算処理を行う第2の加算器と、
前記外部からの積和演算の有無を示す指示により前記第2の加算器への出力を選択する第2の機能セレクタとをさらに備え、
前記第2の機能セレクタは、当該指示が積和演算有を示す場合に、前記第3のオペランドを選択して前記第2の加算器へ出力し、
前記第2の加算器は、前記第2の機能セレクタにより出力された前記第3のオペランドを用いて前記積和演算処理を行うことを特徴とする請求項4に記載の積和演算装置。
【請求項6】
前記外部からの指示が積和演算有を示す場合に、前記積和演算結果を選択し、当該指示が積和演算無を示す場合に、前記乗算結果を選択して前記出力部へ出力する第3の機能セレクタをさらに備えることを特徴とする請求項1乃至5のいずれか1項に記載の積和演算装置。
【請求項7】
前記第1、第2、第3及び第4のオペランドは、浮動小数点のデータであり、
前記出力部は、前記演算部の処理結果に丸め処理を行い、出力することを特徴とする請求項1乃至6のいずれか1項に記載の積和演算装置。
【請求項8】
外部からの積和演算の有無を示す指示に応じて、少なくとも入力された第1、第2及び第3のオペランドを演算する演算部と、前記演算部の処理結果を出力する出力部とを備える積和演算装置の制御方法であって、
前記演算部において、入力された前記第1のオペランドと前記第2のオペランドとを乗算して乗算結果を求める乗算処理ステップと、
前記演算部において、前記外部からの指示を受け付け、当該指示が積和演算有無のいずれを示すかを判定する判定ステップと、
前記演算部において、前記指示が積和演算有を示すと判定された場合に、前記乗算ステップによる乗算結果に前記第3のオペランドを加算して積和演算結果を求める積和演算処理ステップと、
前記出力部において、前記積和演算処理ステップが行われた場合に、前記積和演算結果を出力するステップと、
前記演算部において、前記指示が積和演算無を示すと判定された場合に、さらに入力された第4のオペランドに前記第3のオペランドを加算して加算結果を求める加算処理ステップと、
前記出力部において、前記加算処理ステップが行われた場合に、前記乗算結果及び前記加算結果を出力するステップとを含む制御方法。
【請求項9】
当該指示が積和演算無を示すと判定された場合に、前記第4のオペランドを選択する第1の選択ステップをさらに含み、
前記加算処理ステップは、前記第1の選択ステップにより選択された第4のオペランドを用いて前記加算結果を求めることを特徴とする請求項8に記載の制御方法。
【請求項10】
前記第1の選択ステップは、当該指示が積和演算有を示すと判定された場合に、前記乗算結果を選択し、
前記積和演算処理ステップは、前記第1の選択ステップにより選択された乗算結果を用いて前記積和演算結果を求めることを特徴とする請求項9に記載の制御方法。
【請求項11】
前記第1の選択ステップは、当該指示が積和演算有を示すと判定された場合に、前記第3のオペランドを補正する補正値を選択し、
前記演算部において、前記第1の選択ステップにより選択された補正値に前記第3のオペランドを加算して補正結果を求める補正処理ステップと、
前記補正処理ステップが行われた場合に、前記出力部において、前記積和演算結果を前記補正結果に基づき補正して出力するステップと、をさらに含むことを特徴とする請求項9に記載の制御方法。
【請求項12】
当該指示が積和演算有を示すと判定された場合に、前記第3のオペランドを選択する第2の選択ステップをさらに含み、
前記積和演算処理ステップは、前記第2の選択ステップにより選択された前記第3のオペランドを用いて前記積和演算結果を求めることを特徴とする請求項11に記載の制御方法。
【請求項13】
当該指示が積和演算有を示すと判定された場合に、前記積和演算結果を選択し、当該指示が積和演算無を示すと判定した場合に、前記乗算結果を選択して前記出力部へ出力するステップをさらに含むことを特徴とする請求項8乃至12のいずれか1項に記載の制御方法。
【請求項14】
前記第1、第2、第3及び第4のオペランドは、浮動小数点のデータであり、
前記出力部において、前記演算部の処理結果に丸め処理を行い、出力するステップをさらに含むことを特徴とする請求項8乃至13のいずれか1項に記載の制御方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate