(57)【特許請求の範囲】
【請求項１】
浮動少数点によって表された数の加減算または乗算を行う演算装置であって、
第１のレジスタに格納された数と第２のレジスタに格納された数との乗算を実行する乗算手段と、
前記第１のレジスタ及び前記乗算手段に接続され、前記第１のレジスタに格納された数または前記乗算手段の演算結果を格納する第３のレジスタと、
前記第３のレジスタに格納された数と第４のレジスタに格納された数との加減算を行う加減算手段と、
前記第３のレジスタ及び前記加減算手段に接続され、前記第３のレジスタに格納された数または前記加減算手段の演算結果を格納する第５のレジスタと、
数に対する演算の種類が加減算の場合に、前記乗算手段が乗算を行うタイミングで、前記第１のレジスタに格納された数を前記第３のレジスタに移動させる第１の制御手段と、
数に対する演算の種類が乗算の場合に、前記加減算手段が加減算を行うタイミングで、前記第３のレジスタに格納された数を前記第５のレジスタに移動させる第２の制御手段と
を備えたことを特徴とする演算装置。
【請求項２】
加減算対象となる数を格納する第６のレジスタと、
前記乗算手段が乗算を行うタイミングで前記第６のレジスタの数を格納し、前記乗算手段が演算結果を前記第３のレジスタに出力するタイミングで、格納した数を前記第４のレジスタに渡す第７のレジスタと、
数に対する演算の種類が加減算の場合に、前記乗算手段が乗算を行うタイミングで、前記第６のレジスタに格納された数を前記第４のレジスタに移動させる第３の制御手段とを更に備えたことを特徴とする請求項１に記載の演算装置。
【請求項３】
前記演算を行う場合に、数のデータ形式を外部形式から自演算装置の内部形式に変換する変換手段と、前記加減算手段または乗算手段によって演算された数の演算結果が次の演算結果で使用されない場合に、当該演算結果のデータ形式を自演算装置の内部形式から外部形式に変換する逆変換手段とを更に備えたことを特徴とする請求項１または２に記載の演算装置。
【請求項４】
前記加減算手段は、当該加減算手段の演算結果または前記乗算手段の演算結果を次の加減算に使用する場合に、前記演算結果のデータ形式を内部形式のまま次の加減算に使用することを特徴とする請求項３に記載の演算装置。
【請求項５】
前記乗算手段は、当該乗算手段の演算結果または前記加減算手段の演算結果を次の乗算に使用する場合に、前記演算結果のデータ形式を内部形式のまま次の乗算に使用することを特徴とする請求項３に記載の演算装置。
【請求項６】
第１のレジスタに格納された数と第２のレジスタに格納された数との乗算を実行する乗算手段と、前記第１のレジスタ及び前記乗算手段に接続され、前記第１のレジスタに格納された数または前記乗算手段の演算結果を格納する第３のレジスタと、前記第３のレジスタに格納された数と第４のレジスタに格納された数との加減算を行う加減算手段と、前記第３のレジスタ及び前記加減算手段に接続され、前記第３のレジスタに格納された数または前記加減算手段の演算結果を格納する第５のレジスタとを有し、浮動小数点によって表された数の加減算または乗算を行う演算装置が、
数に対する演算の種類が加減算の場合に、前記乗算手段が乗算を行うタイミングで、前記第１のレジスタに格納された数を前記第３のレジスタに移動させるステップと、
数に対する演算の種類が乗算の場合に、前記加減算手段が加減算を行うタイミングで、前記第３のレジスタに格納された数を前記第５のレジスタに移動させるステップと
を含んだことを特徴とする演算方法。
【請求項７】
前記演算装置は、加減算対象となる数を格納する第６のレジスタと、前記乗算手段が乗算を行うタイミングで前記第６のレジスタの数を格納し、前記乗算手段が演算結果を前記第３のレジスタに出力するタイミングで、格納した数を前記第４のレジスタに渡す第７のレジスタと更に有し、前記演算装置は、数に対する演算の種類が加減算の場合に、前記乗算手段が乗算を行うタイミングで、前記第６のレジスタに格納された数を前記第４のレジスタに移動させるステップを更に含むことを特徴とする請求項６に記載の演算方法。
【請求項８】
前記演算を行う場合に、数のデータ形式を外部形式から自演算装置の内部形式に変換するステップと、前記加減算手段または乗算手段によって演算された数の演算結果が次の演算結果で使用されない場合に、当該演算結果のデータ形式を自演算装置の内部形式から外部形式に変換するステップとを更に含んだことを特徴とする請求項６または７に記載の演算方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、浮動小数点によって表された数の加減算または乗算を行う演算装置および演算方法に関するものである。
【背景技術】
【０００２】
近年、マルチメディアや細密なグラフィックを用いたＴＶゲームなどの急速な普及などによって、このマルチメディア、ＴＶゲームなどに用いられるコンピュータグラフィックなどを高い品質で顧客に提供することが要求されている。
【０００３】
このような要求に応じるべく、高速な浮動小数点積和演算器の実現が望まれている。ここで、従来の浮動小数点積和演算器（以下、ＦＭＡ演算器と表記する）の構成について具体的に説明する。図６は、従来のＦＭＡ演算器の構成を示す機能ブロック図である。
【０００４】
同図に示すように、このＦＭＡ演算器は、レジスタファイル・他演算器結果レジスタ１０と、セレクタ２０〜２５と、オペランドレジスタ３０〜３２と、フォーマット変換機４０〜４３と、中間レジスタ５０〜６０と、ブースエンコード回路７０と、ＣＳＡ演算器８０と、加算器９０と、桁合わせシフタ１００と、絶対値加算器１１０と、正規化シフタ１２０と、丸め演算器１３０と、結果レジスタ１４０とを備えて構成される。
【０００５】
このうち、レジスタファイル・他演算結果レジスタ１０は、演算対象となるデータ（以下、オペランドと表記する）などを一時的に記録する記録装置であり、セレクタ２０〜２２は、レジスタ・他演算結果レジスタ１０または結果レジスタ１４０（結果レジスタ１４０は、演算結果を格納する記録装置）からオペランドを選択し、選択したオペランドをオペランドレジスタ３０〜３２にそれぞれ格納する装置である。
【０００６】
オペランドレジスタ３０〜３２は、セレクタ２０〜２２によって選択されたオペランドを記録する装置である。セレクタ２３〜２５は、オペランドレジスタ３０〜３２または結果レジスタ１４０に格納されたオペランドを選択し、選択したオペランドをフォーマット変換器４０〜４２にそれぞれ入力する装置である。
【０００７】
フォーマット変換器４０〜４２は、セレクタ２３〜２５によって入力されたオペランドのフォーマット形式を、浮動小数点積和演算を実行するためのフォーマット形式に変換する装置である（外部フォーマットをＦＭＡ演算器の内部フォーマットに変換する装置である）。そして、フォーマット変換器４０〜４２は、フォーマット形式を変換したオペランド（以下、形式変換オペランドと表記する）を中間レジスタ５０〜５２にそれぞれ格納する。中間レジスタ５０〜６０は、データを一時的に記録する装置である（中間レジスタ５０〜５２は、形式変換オペランドを記録する）。
【０００８】
ブースエンコード回路７０は、中間レジスタ５１に記録された形式変換オペランドを取得し、形式変換オペランド（中間レジスタ５１に記録される形式変換オペランドを乗数とする）に対して、ブースのアルゴリズム(Booth's  algorithm)にかかる２次のブースのエンコードを行う装置である。そして、ブースエンコード回路７０は、２次のブースのエンコードを行った形式変換オペランドを中間レジスタ５４に格納する。
【０００９】
ＣＳＡ（Carry  Save  Adder）演算器８０は、中間レジスタ５３（中間レジスタ５０に格納された形式変換オペランドは、その後に、中間レジスタ５３に格納される）に格納された形式変換オペランド（中間レジスタ５３に記録される形式変換オペランドは被乗数とする）と、中間レジスタ５４に格納された２次のブースのエンコード済のデータを取得して、部分積を算出し（被乗数、乗数がそれぞれ６４ビットの場合は、３２個の部分積が算出される）、算出した各部分積を足し合わせる装置である。
【００１０】
加算器９０は、ＣＳＡ演算器８０によって算出された各部分積の和と、各部分積の加算によって発生する桁上げ値とを加算する装置である（加算器９０は、ＣＳＡ演算器８０におけるキャリーの吸収を行う装置である）。そして、加算器９０は、加算結果を中間レジスタ５７に格納する。すなわち、中間レジスタ５０に格納された被乗数と中間レジスタ５１に格納された乗数との乗算は、ブースエンコード回路７０、ＣＳＡ演算器８０、加算器９０を介して実行される。
【００１１】
桁合わせシフタ１００は、中間レジスタ５２に格納された形式変換オペランドを取得し、取得した形式変換オペランドの桁合わせを実行する装置である。そして、桁合わせシフタ１００は、桁合わせを行った形式変換オペランドを中間レジスタ５５に格納する（中間レジスタ５５に格納されたデータはその後、中間レジスタ５６に格納される）。この桁合わせシフタ１００が中間レジスタ５２に格納された形式変換オペランドの桁合わせを行うことで、中間レジスタ５７および中間レジスタ５６に格納された値を適切に加算することができる。
【００１２】
絶対値加算器１１０は、中間レジスタ５６に格納された値と中間レジスタ５７に格納された値とを加算する装置である。そして、絶対値加算器１１０は、加算結果を中間レジスタ５８に格納する。
【００１３】
正規化シフタ１２０は、中間レジスタ５８に格納された値を正規化する装置である。そして、正規化シフタ１２０は、正規化した値を中間レジスタ５９に格納する。丸め演算器１３０は、中間レジスタ５９に格納された値を取得し、取得した値に対して丸め操作（四捨五入、切り上げ切捨てなど）を行う装置である。そして、丸め演算器１３０は、丸め操作を行った値を中間レジスタ６０に格納する。
【００１４】
フォーマット変換器４３は、中間レジスタ６０に格納されたデータ（値）のフォーマット形式を、結果レジスタ１４０に格納すべきフォーマット形式に変換する装置である（内部フォーマットを外部フォーマットに変換する装置である）。このフォーマット変換器４３は、フォーマット変換器４０〜４２と逆のフォーマット変換を行う。フォーマット変換器４３は、フォーマット形式を変換したデータ、すなわち、ＦＭＡ演算結果を結果レジスタ１４０に格納する。
【００１５】
また、従来では、上記したＦＭＡ演算器を用いて、浮動小数点加減算と浮動小数点乗算とを行っている。ここで、図６を用いて、浮動小数点加減算および浮動小数点乗算について説明する。ＦＭＡ演算器を用いて、浮動小数点加減算を行う場合には、加算を行う２つのオペランドのうち一方のオペランドをオペランドレジスタ３０に格納し、残りのオペランドをオペランドレジスタ３２に格納するとともに、オペランドレジスタ３１に１をセットすることで浮動小数点加減算を行っている。
【００１６】
このように、オペランドレジスタ３１に１を格納することによって、オペランドレジスタ３０に格納されたオペランドは、フォーマット変換器４０によってフォーマット変換された後、そのまま、中間レジスタ５７に格納されるため、中間レジスタ５７に格納された値と中間レジスタ５６に格納された値を絶対値加算器１１０で加算することによって、ＦＭＡ演算器による浮動小数点加減算が可能となる。
【００１７】
また、ＦＭＡ演算器を用いて、浮動小数点乗算を行う場合には、被乗数のオペランドをオペランドレジスタ３０に格納し、乗数をオペランドレジスタ３１に格納するとともに、オペランドレジスタ３２に０を格納することで浮動小数点乗算を行っている。
【００１８】
このように、オペランドレジスタ３２に０を格納することによって、オペランドレジスタ３０に格納された被乗数とオペランドレジスタ３１に格納された乗数の乗算結果に０が加算される（絶対値加算器１１０において、乗算結果と０が加算される）ことになるので、ＦＭＡ演算器による浮動小数点乗算が可能となる。
【００１９】
なお、特許文献１では、単発演算が行われる場合に、組合せ論理回路間に設けられたレジスタをバイパスすることによって、結果的にレジスタを除去し、演算時間を短縮可能とする技術が公開されている。
【００２０】
【特許文献１】特開昭５９−１０６０４３号公報
【発明の開示】
【発明が解決しようとする課題】
【００２１】
しかしながら、図６において説明したＦＭＡ演算器を用いて、浮動小数点加減算または浮動小数点乗算を行う場合に、ＦＭＡ演算器内に無駄な部分が存在し、浮動少数点加減算あるいは浮動小数点乗算を効率よく実行することができないという問題があった。
【００２２】
具体的に、浮動小数点加減算を実行する場合には、ＦＭＡ演算器におけるブースエンコード回路７０、ＣＳＡ演算器８０、加算器９０にかかる演算が無駄になっており、浮動小数点乗算を実行する場合には、桁合わせシフタ１００、絶対値加算器１１０、正規化シフタ１２０にかかる演算が無駄になっているためである。
【００２３】
本発明は、上記に鑑みてなされたものであって、ＦＭＡ演算器を用いて浮動小数点加減算または浮動小数点乗算を行う場合に、ＦＭＡ演算器内の無駄な部分を省略し、浮動小数点加減算あるいは浮動少数点乗算を効率よく実行することができる演算装置および演算方法を提供することを目的とする。
【課題を解決するための手段】
【００２４】
上述した課題を解決し、目的を達成するために、本発明は、浮動少数点によって表された数の加減算または乗算を行う演算装置であって、第１のレジスタに格納された数と第２のレジスタに格納された数との乗算を実行する乗算手段と、前記第１のレジスタ及び前記乗算手段に接続され、前記第１のレジスタに格納された数または前記乗算手段の演算結果を格納する第３のレジスタと、前記第３のレジスタに格納された数と第４のレジスタに格納された数との加減算を行う加減算手段と、前記第３のレジスタ及び前記加減算手段に接続され、前記第３のレジスタに格納された数または前記加減算手段の演算結果を格納する第５のレジスタと、数に対する演算の種類が加減算の場合に、前記乗算手段が乗算を行うタイミングで、前記第１のレジスタに格納された数を前記第３のレジスタに移動させる第１の制御手段と数に対する演算の種類が乗算の場合に、前記加減算手段が加減算を行うタイミングで、前記第３のレジスタに格納された数を前記第５のレジスタに移動させる第２の制御手段とを備えたことを特徴とする。
【００２５】
第１のレジスタに格納された数と第２のレジスタに格納された数との乗算を実行する乗算手段と、前記第１のレジスタ及び前記乗算手段に接続され、前記第１のレジスタに格納された数または前記乗算手段の演算結果を格納する第３のレジスタと、前記第３のレジスタに格納された数と第４のレジスタに格納された数との加減算を行う加減算手段と、前記第３のレジスタ及び前記加減算手段に接続され、前記第３のレジスタに格納された数または前記加減算手段の演算結果を格納する第５のレジスタとを有し、浮動小数点によって表された数の加減算または乗算を行う演算装置が、数に対する演算の種類が加減算の場合に、前記乗算手段が乗算を行うタイミングで、前記第１のレジスタに格納された数を前記第３のレジスタに移動させるステップと数に対する演算の種類が乗算の場合に、前記加減算手段が加減算を行うタイミングで、前記第３のレジスタに格納された数を前記第５のレジスタに移動させるステップとを含んだことを特徴とする。
【発明の効果】
【００２６】
本発明によれば、浮動小数点によって表された数の演算の種類に基づいて、数の加減算を行う加減算部または数の乗算を行う乗算部を選択し、選択した加減算部または乗算部を用いて数に対する演算を実行するので、演算レイテンシを短縮することができる。
【発明を実施するための最良の形態】
【００２７】
以下に、本発明にかかる演算装置および演算方法の実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。
【実施例】
【００２８】
本発明は、浮動小数点積和演算器（ＦＭＡ演算器）を用いて浮動小数点加減算や浮動小数点乗算を行うとき、および先の演算結果を次の演算でオペランドとして使用するときに、ＦＭＡ演算器の不要な部分をバイパスすることによって、演算レイテンシを短縮するものである。
【００２９】
図１は、本実施例にかかるＦＭＡ演算器を含む情報処理装置の構成を示す図である。同図に示すように、この情報処理装置は、メモリ／キャッシュ１と、レジスタファイル２と、命令制御部３と、演算部４とを備えて構成される。このうち、メモリ／キャッシュ１は、命令やデータを格納する装置であり、レジスタファイル２は、演算部４による演算結果やメモリ／キャッシュ１から転送されるデータを一時的に記録する装置である。
【００３０】
命令制御部３は、メモリ／キャッシュ１に記録された命令を取得して、この命令を解釈し、演算部４に対して所定の演算命令などを行う装置である。演算部４は、命令制御部３からの演算命令に応じて、所定の演算を実行する装置である。本実施例にかかるＦＭＡ演算器は、この演算部４に含まれる。
【００３１】
図２は、本実施例にかかるＦＭＡ演算器の構成を示す機能ブロック図である。同図に示すように、このＦＭＡ演算器は、レジスタファイル・他演算器結果レジスタ１０と、セレクタ２０〜２５と、オペランドレジスタ３０〜３２と、フォーマット変換器４０〜４３と、中間レジスタ５０〜６０と、ブースエンコード回路７０と、ＣＳＡ演算器８０と、加算器９０と、桁合わせシフタ１００と、絶対値加算器１１０と、正規化シフタ１２０と、丸め演算器１３０と、結果レジスタ１４０と、バイパスセレクタ１５０〜１５６と、バイパス１６０〜１６３と、タイミング制御回路１７０とを有する。
【００３２】
このうち、レジスタファイル・他演算器結果レジスタ１０、セレクタ２０〜２５、オペランドレジスタ３０〜３２、フォーマット変換器４０〜４３、中間レジスタ５０〜６０、ブースエンコード回路７０、ＣＳＡ演算器８０、加算器９０、桁合わせシフタ１００、絶対値加算器１１０、正規化シフタ１２０、丸め演算器１３０および結果レジスタ１４０に関する説明は、図６に示したＦＭＡ演算器の各構成要素と同様であるため、同一の符号を付して説明を省略する。
【００３３】
バイパスセレクタ１５０〜１５６は、タイミング制御回路１７０からの命令に応じて、データを選択・取得する装置であり、バイパス１６０〜１６３は、ＦＭＡ演算器の不要な部分を省略するためにセレクタ１５０〜１５６が利用するバイパスである。
【００３４】
タイミング制御回路１７０は、演算内容（ＦＭＡ演算器を用いて浮動小数点加減算や浮動小数点乗算を行う場合、先の演算結果を次の演算で利用する場合）に応じて、バイパスセレクタ１５０〜１５６を制御し、演算内容に対するＦＭＡ演算器の不要な部分をバイパスする装置である。なお、タイミング制御回路１７０は、演算内容にかかる情報を、図１に示した命令制御部３から取得する。以下において、タイミング制御回路１７０が行う処理を、浮動小数点加減算を行う場合、浮動小数点乗算を行う場合、および先の演算結果を次の演算で利用する場合に分けて説明する。
【００３５】
まず、ＦＭＡ演算器を用いて浮動小数点加減算を行う場合のタイミング制御回路１７０の処理について説明する。浮動小数点加減算を行う場合に従来の手法では演算レイテンシがＦＭＡ演算と同じだけかかってしまう。しかし、ＦＭＡ演算器を用いて浮動小数点加減算を行う場合には、ブースエンコード回路７０、ＣＳＡ演算器８０、加算器９０が不要となる。そこで、タイミング制御回路１７０は、浮動小数点加減算を行う場合には、バイパスセレクタ１５３およびバイパスセレクタ１５４を制御して、中間レジスタ５３，５５をバイパスする。
【００３６】
この場合、バイパスセレクタ１５４は、バイパス１６０を介して中間レジスタ５０に格納された形式変換オペランドを取得し、取得した形式変換オペランドを中間レジスタ５７に格納し、バイパスセレクタ１５３は、バイパス１６１を介して桁合わせシフタ１００によって桁合わせされた形式変換オペランドを取得し、取得した形式変換オペランドをそのまま中間レジスタ５６に格納する。
【００３７】
このように、浮動小数点加減算実行時に、タイミング制御回路１７０が、バイパスセレクタ１５３，１５４を制御して中間レジスタ５３，５５をバイパスすることによって、演算レイテンシを短縮することが可能になる。また、バイパスセレクタ１５４によって中間レジスタ５０に格納されたオペランド（オペランドレジスタ３０に格納されていたオペランド）を選択できるので、浮動小数点加減算実行時において、オペランドレジスタ３１に１を格納する必要がなくなり、オペランドレジスタの選択論理を単純化することができる。
【００３８】
図３は、浮動小数点加減算の演算レイテンシの短縮による効果を示す図である。図３中の１〜７の数字はそれぞれ、オペランドレジスタ３０〜３２のデータが異なる中間レジスタに到達するタイミングを示す。
１：中間レジスタ５０，５１，５２
２：中間レジスタ５３，５４，５５
３：中間レジスタ５６，５７
４：中間レジスタ５８
５：中間レジスタ５９
６：中間レジスタ６０
７：結果レジスタ１４０
【００３９】
図３に示すように、従来手法による浮動小数点加減算では、タイミング１〜７が全て必要となるが、本実施例による浮動小数点加減算では、中間レジスタ５３，５５をバイパスするため、タイミング「２」が不要となり、演算レイテンシを短縮することが可能となっている。タイミング制御回路１７０は、図３の下の段におけるタイミング「３」で、セレクタ１５４がバイパス１６０を選択し、セレクタ１５３がバイパス１６１を選択するように制御する。
【００４０】
続いて、ＦＭＡ演算器を用いて浮動小数点乗算を行う場合のタイミング制御回路１７０の処理について説明する。浮動小数点乗算を行う場合に従来の手法では演算レイテンシがＦＭＡ演算器と同じだけかかってしまう。しかし、ＦＭＡ演算器を用いて浮動小数点乗算を行う場合には、桁合わせシフタ１００、絶対値加算器１１０、正規化シフタ１２０が不要となる。そこで、タイミング制御回路１７０は、浮動小数点乗算をおこなう場合には、バイパスセレクタ１５６を制御して、中間レジスタ５８をバイパスする。
【００４１】
この場合、バイパスセレクタ１５６は、バイパス１６２を介して中間レジスタ５７に格納されたデータ（乗算結果）を取得し、取得したデータを中間レジスタ５９に格納する。
【００４２】
このように、浮動小数点乗算実行時に、タイミング制御回路１７０が、バイパスセレクタ１５６を制御して、中間レジスタ５８をバイパスすることによって演算レイテンシを短縮することが可能となる。また、バイパスセレクタ１５６によって中間レジスタ５７に格納された乗算結果のデータを取得し、絶対値加算器１１０の加算結果を取得しないので、オペランドレジスタ３２に０を格納する必要がなくなり、オペランドレジスタの選択論理を単純化することができる。
【００４３】
図４は、浮動小数点乗算の演算レイテンシの短縮による効果を示す図である。図４中に示す各数字１〜７は、図３中の数字と同様である。同図に示すように、従来手法による浮動小数点乗算では、タイミング１〜７が全て必要となるが、本実施例による浮動小数点乗算では、中間レジスタ５８をバイパスするため、タイミング「４」が不要となり、演算レイテンシを短縮することが可能となる。タイミング制御回路１７０は、図４の下の段におけるタイミング「５」で、セレクタ１５６がバイパス１６２を選択するように制御する。
【００４４】
続いて、ＦＭＡ演算における先の演算結果を利用して次の演算を実行する場合、すなわち、ＦＭＡ演算が連続する場合のタイミング制御回路１７０の処理について説明する。従来の手法では、ＦＭＡ演算が連続する場合であっても、結果レジスタ１４０からレジスタファイル・他演算器結果レジスタ１０、もしくはセレクタ２０〜２２を経由してオペランドレジスタ３０〜３２、もしくはセレクタ２３〜２５を経由してフォーマット変換器４０〜４２にデータを転送してから次のＦＭＡ演算を実行していた。
【００４５】
しかし、この場合、フォーマット変換器４３によって内部フォーマットから外部フォーマットに一旦変換してから、次の演算で、フォーマット変換器４０〜４２が、再び外部フォーマットを内部フォーマットに変換するという無駄が生じていた。そこで、タイミング制御回路１７０は、ＦＭＡ演算を連続して実行する場合には、バイパスセレクタ１５０〜１５２を制御して、レジスタファイル・他演算器結果レジスタ１０、オペランドレジスタ３０〜３２をバイパスする。
【００４６】
この場合、バイパスセレクタ１５０〜１５２は、バイパス１６３を介して中間レジスタ６０に格納されたデータを取得し、取得したデータをそのまま中間レジスタ５０〜５２にそれぞれ格納する。
【００４７】
このように、ＦＭＡ演算が連続する場合に、タイミング制御回路１７０が、バイパスセレクタ１５０〜１５２を制御して、レジスタファイル・他演算器結果レジスタ１０、オペランドレジスタ３０〜３２をバイパスすることによって、演算レイテンシを短縮することが可能になる。
【００４８】
図５は、ＦＭＡ演算が連続する場合の演算レイテンシの短縮による効果を示す図である。図５中に示す各数字１〜７は、図３中の数字と同様である。同図に示すように、従来手法によるＦＭＡ演算が連続する場合の演算では、タイミング１〜７が全て必要となるが、本実施例によるＦＭＡ演算（ＦＭＡ演算が連続する場合のＦＭＡ演算）では、レジスタファイル・他演算器結果レジスタ１０、オペランドレジスタ３０〜３２をバイパスするので、１巡目のタイミング「７」が不要となり演算レイテンシを短縮することが可能となる。タイミング制御回路１７０は、図５の下の段における２巡目のタイミング「１」で、バイパスセレクタ１５０〜１５２がバイパス１６３を選択するように制御する。
【００４９】
なお、ここでは、タイミング制御回路１７０は、１巡目のタイミング「７」で、バイパスセレクタ１５０〜１５２がバイパス１６３を選択するように制御したが、さらにＦＭＡ演算が続けて連続する場合には、２巡目、３巡目、・・・、ｎ巡目におけるタイミング「７」で、バイパスセレクタ１５０〜１５２がバイパス１６３を選択するように制御する。
【００５０】
また、ＦＭＡ演算が連続する場合にレジスタファイル・他演算器結果レジスタ１０、オペランドレジスタ３０〜３２をバイパスする手法は、上記した浮動小数点加減算および浮動小数点乗算と同時に用いることができる。
【００５１】
例えば、浮動小数点加減算が連続する場合には、図５に示すタイミング「２」を省略するとともに、タイミング「７」を省略して演算レイテンシを短縮することが可能となる。同様に、浮動小数点乗算が連続する場合には、図５に示すタイミング「４」を省略するとともに、タイミング「７」を省略して演算レイテンシを短縮することができる。さらに、浮動小数点加減算結果を利用して浮動小数点乗算を行う場合や、浮動小数点乗算結果を利用して浮動小数点加減算を実行する場合にも、タイミング「７」を省略して演算レイテンシを短縮することができる。
【００５２】
上述してきたように、本実施例にかかるＦＭＡ演算器は、タイミング制御回路１７０が、浮動小数点加減算実行時に、バイパスセレクタ１５３，１５４を制御して中間レジスタ５３，５５をバイパスし、浮動小数点乗算実行時に、バイパスセレクタ１５６を制御して中間レジスタ５８をバイパスし、ＦＭＡ演算が連続する場合に、バイパスセレクタ１５０〜１５２を制御して、レジスタファイル・他演算器結果レジスタ１０、オペランドレジスタ３０〜３２をバイパスするので、演算レイテンシを短縮し、浮動小数点加減算、浮動小数点乗算などを効率よく実行することができる。
【産業上の利用可能性】
【００５３】
以上のように、本発明にかかる演算装置および演算方法は、浮動小数点加減算および浮動小数点乗算を実行する浮動小数点積和演算器などに有用であり、特に、浮動小数点積和演算にかかる演算レイテンシを短縮する場合に適している。
【図面の簡単な説明】
【００５４】
【図１】図１は、本実施例にかかるＦＭＡ演算器を含む情報処理装置の構成を示す図である。
【図２】図２は、本実施例にかかるＦＭＡ演算器の構成を示す機能ブロック図である。
【図３】図３は、浮動小数点加減算の演算レイテンシの短縮による効果を示す図である。
【図４】図４は、浮動小数点乗算の演算レイテンシの短縮による効果を示す図である。
【図５】図５は、ＦＭＡ演算が連続する場合の演算レイテンシの短縮による効果を示す図である。
【図６】図６は、従来のＦＭＡ演算器の構成を示す機能ブロック図である。
【符号の説明】
【００５５】
１    メモリ／キャッシュ
２    レジスタファイル
３    命令制御部
４    演算部
１０    レジスタファイル・他演算結果レジスタ
２０，２１，２２，２３，２４，２５    セレクタ
３０，３１，３２    オペランドレジスタ
４０，４１，４２，４３    フォーマット変換器
５０，５１，５２，５３，５４，５５，５６，５７，５８，５９，６０    中間レジスタ
７０    ブースエンコード回路
８０    ＣＳＡ演算器
９０    加算器
１００    桁合わせシフタ
１１０    絶対値加算器
１２０    正規化シフタ
１３０    丸め演算器
１４０    結果レジスタ
１５０，１５１，１５２，１５３，１５４，１５５，１５６    バイパスセレクタ
１６０，１６１，１６２，１６３    バイパス
１７０    タイミング制御回路
【図１】
0004482052.tif 000002
【図２】
0004482052.tif 000003
【図３】
0004482052.tif 000004
【図４】
0004482052.tif 000005
【図５】
0004482052.tif 000006
【図６】
0004482052.tif 000007