(57)【要約】【課題】浮動小数点演算の演算結果と演算精度情報を同時に取得する区間演算とSIMD演算を切り替えて実行可能な浮動小数点演算装置を提供する。【解決手段】実施形態の浮動小数点演算装置は、第１の入力データが入力され、設定された第１の丸めモードで第１の演算を実行する演算器１１と、第２の入力データが入力され、設定された第２の丸めモードで第２の演算を実行する演算器１２と、第１の演算の第１の演算結果に第２の演算の第２の演算結果を加算して得られた第１の値を１／２にした第１の出力と、第１の演算結果と、を選択的に出力可能な第１の出力回路と、第１の演算結果から第２の演算結果を減算して得られた第２の値を１／２にした第２の出力と、第２の演算結果と、を選択的に出力可能な第２の出力回路とを有する。【選択図】図２
2016057831.tif 000002
【特許請求の範囲】
【請求項１】
第１の入力データが入力され、設定された第１の丸めモードで第１の演算を実行する第１の演算器と、
第２の入力データが入力され、設定された第２の丸めモードで第２の演算を実行する第２の演算器と、
を備え、
前記第１の演算器は、前記第１の演算の第１の演算結果に前記第２の演算の第２の演算結果を加算して得られた第１の値を１／２にした第１の出力と、前記第１の演算結果と、を選択的に出力可能な第１の出力回路を有し、
前記第２の演算器は、前記第１の演算結果から前記第２の演算結果を減算して得られた第２の値を１／２にした第２の出力と、前記第２の演算結果と、を選択的に出力可能な第２の出力回路を有する浮動小数点演算装置。
【請求項２】
前記第１の演算器は、
前記第１の演算結果を入力して累積加算し、第１の加算値を出力する第１の加算器と、
前記第１の加算値を格納する第１のレジスタと、
を有し、
前記第２の演算器は、
前記第２の演算結果を入力して累積加算し、第２の加算値を出力する第２の加算器と、
前記第２の加算値を格納する第２のレジスタと、
を有し、
前記第１の演算器は、前記第１の演算結果と前記第２のレジスタに格納された前記第２の加算値とを選択的に切り替えて、前記第１の加算器へ入力する第１の選択回路を有し、
前記第２の演算器は、前記第２の演算結果と前記第１のレジスタに格納された第２の加算値とを選択的に切り替えて、前記第２の加算器へ入力する第２の選択回路を有する請求項１に記載の浮動小数点演算装置。
【請求項３】
前記第１の演算器は、
前記第１の値を１／２にして前記第１の出力として出力する第１の１／２回路と、
前記第１の１／２回路の前記第１の出力と、前記第１の加算器の前記第１の加算値とを選択的に切り替えて、前記第１のレジスタへ出力する第３の選択回路と、
を有し、
前記第２の演算器は、
前記第２の値を１／２にして前記第２の出力として出力する第２の１／２回路と、
前記第２の１／２回路の前記第２の出力と、前記第２の加算器の前記第２の加算値とを選択的に切り替えて、前記第２のレジスタへ出力する第４の選択回路と、
を有する請求項２に記載の浮動小数点演算装置。
【請求項４】
前記第１の入力データは、第１の一対のベクトルデータであり、
前記第２の入力データは、第２の一対のベクトルデータであり、
前記第１の演算及び前記第２の演算は、各ベクトルデータの処理対象要素の乗算処理である請求項２または３に記載の浮動小数点演算装置。
【請求項５】
前記第１の演算器と、前記第２の演算器と、前記第１の出力回路と、前記第２の出力回路とを有する複数の演算ノードをマトリックス状に配列した演算アレイと、
を有し、
前記第１の入力データは、第１の行列データであり、
前記第２の入力データは、第２の行列データであり、
前記第１の行列データの分解された行データと前記第２の行列データの分解された列データとが前記演算アレイに対して入力される請求項２から４のいずれか１つに記載の浮動小数点演算装置。
【請求項６】
請求項１から５のいずれか１つに記載の浮動小数点演算装置と、
前記第１の入力データと前記第２の入力データとを入力する入力インターフェースと、
前記第１の出力回路と、前記第２の出力回路の出力データを出力する出力インターフェースと、
を有する情報処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、浮動小数点演算装置及び情報処理システムに関する。
【背景技術】
【０００２】
従来より、計算機において実数演算を近似的に行う浮動小数点演算が用いられている。浮動小数点演算では、実数を浮動小数点数に近似して表現し、事前に指定した丸めモードに従って演算結果を浮動小数点数に近似する。IEEE754において５種類の丸めモードが定義されており、例えば以下の２種の丸めモードが定義されている。一つは、上向きの丸め(rounding up)モードであり、もう一つは、下向きの丸め(rounding down)モードである。
【０００３】
上向きの丸めモードでは、演算結果を、演算結果以上の浮動小数点数の中で、最も小さい浮動小数点数に近似する処理が行われる。以下、上向きの丸め処理を△と表記する。下向きの丸めモードでは、演算結果を、演算結果以下の浮動小数点数の中で、最も大きい浮動小数点数に近似する処理が行われる。以下、下向きの丸め処理を▽と表記する。
【０００４】
これらの丸めモードで実行できる浮動小数点演算器が実現されているが、演算後に演算精度を取得できないという問題があった。
【０００５】
それに対し、浮動小数点演算を用いて演算精度を取得できる、機械区間演算と呼ばれる演算が提案されている。機械区間演算は、下限値と上限値の組で表現される機械区間を用いる。機械区間とは次の式（１）のように定義される。
2016057831.tif 000003
また、機械区間[x]より、中心値xと誤差半径rを次の式（２）と式（３）のように求めることができる。
2016057831.tif 000004
2016057831.tif 000005
例えば、中心値xを演算結果の近似値あるいは真値として採用し、誤差半径rを演算結果の精度評価に用いることができる。
【０００６】
また、四則演算は、次の式（４）から式（７）のように定義される。
2016057831.tif 000006
2016057831.tif 000007
2016057831.tif 000008
2016057831.tif 000009
これら四則演算を実現する演算器も提案されている。
【０００７】
また、各要素が機械区間で構成されるベクトルXとYの内積Σ[x]×[y]は、次の式（８）のように計算することができる。
2016057831.tif 000010
一方、従来、複数データに対し同一演算を同時に行うSIMD （Single Instruction Multiple Data）演算器が用いられており、大量データを高速演算することが実現されている。SIMD演算器を構成する各演算器に浮動小数点演算器を用いれば、SIMD浮動小数点演算器を実現することができる。しかし、演算後に演算精度を取得できないという問題があった。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２００４−５３９５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
そこで、実施形態は、浮動小数点演算の演算結果と演算精度情報を同時に取得する区間演算と、SIMD演算とを切り替えて実行可能な浮動小数点演算装置及び情報処理システムを提供することを目的とする。
【課題を解決するための手段】
【００１０】
実施形態によれば、第１の入力データが入力され、設定された第１の丸めモードで第１の演算を実行する第１の演算器と、第２の入力データが入力され、設定された第２の丸めモードで第２の演算を実行する第２の演算器と、を備え、前記第１の演算器は、前記第１の演算の第１の演算結果に前記第２の演算の第２の演算結果を加算して得られた第１の値を１／２にした第１の出力と、前記第１の演算結果と、を選択的に出力可能な第１の出力回路を有し、前記第２の演算器は、前記第１の演算結果から前記第２の演算結果を減算して得られた第２の値を１／２にした第２の出力と、前記第２の演算結果と、を選択的に出力可能な第２の出力回路を有する浮動小数点演算装置が提供される。
【図面の簡単な説明】
【００１１】
【図１】第１の実施形態に関わるデータ処理装置１のブロック図である。
【図２】第１の実施形態に関わる浮動小数点演算装置２の構成を示すブロック図である。
【図３】第１の実施形態に関わる演算器１１と１２の回路図である。
【図４】第２の実施形態に関わる、データ処理装置における浮動小数点演算装置２Aのブロック図である。
【図５】第２の実施形態に関わる、演算アレイ４１の各演算ノード５２の構成を示すブロック図である。
【図６】第２の実施形態に関わる入力制御器６３、６４の回路図である。
【図７】第２の実施形態に関わる出力制御器６５、６６の回路図である。
【図８】第２の実施形態の浮動小数点演算装置を有する情報処理システムの構成を示すブロック図である。
【発明を実施するための形態】
【００１２】
以下、図面を参照して実施形態を説明する。
（第１の実施形態）
（構成）
図１は、本実施形態に係わるデータ処理装置のブロック図である。データ処理装置１は、１つあるいは２以上の半導体装置からなるプロセッサであり、入力されたデータに対して所定の演算処理を実行して、演算結果を出力する。
【００１３】
データ処理装置１は、浮動小数点演算装置２と、主記憶装置３と、入出力装置４と、相互接続網５とで構成されている。浮動小数点演算装置２、主記憶装置３及び入出力装置４は、相互接続網５を介して互いにデータのやりとりが出来る。
【００１４】
浮動小数点演算装置２は、機械区間演算（以下、区間演算という）とSIMD演算とを切り替えて実行可能である。ここでは、２つのベクトルの内積の演算結果と演算精度情報とが同時に取得される区間演算を実行可能な浮動小数点演算装置について説明する。
【００１５】
浮動小数点演算装置２は、入力されたデータに対して浮動小数点演算を行う回路である。  
主記憶装置３は、入力データ及び出力データを一時的に記憶する。
【００１６】
入出力装置４は、図示しない外部装置からのデータを入力し、その外部装置へデータを出力するためのインターフェース回路である。  
入出力装置４を介して入力されたデータは、主記憶装置３に記憶される。浮動小数点演算装置２は、入力されたデータに対して所定の演算を実行して、演算結果を主記憶装置３に記憶する。演算結果データは、入出力装置４を介して外部装置へ出力される。
【００１７】
図２は、浮動小数点演算装置２の構成を示すブロック図である。浮動小数点演算装置２は、２つの演算器１１，１２と、制御器１３と、インターフェース１４と、４つの入力レジスタ１５〜１８と、２つの出力レジスタ１９，２０と、２つのマルチプレクサ（図中、MUXで示す）２１，２２とを含む。
【００１８】
インターフェース１４は、相互接続網５を介して入力データを入力して、入力レジスタ１５〜１８へ出力する。入力レジスタ１５、１６には、第１の入力データが入力される。入力レジスタ１７、１８には、第２の入力データが入力される。インターフェース１４は、出力レジスタ１９と２０からの出力データを入力して、相互接続網５へ出力する。
【００１９】
制御器１３は、インターフェース１４を介して入力されたコマンドに応じて、２つの演算器１１，１２と、２つのマルチプレクサ２１，２２へ制御信号を出力する。制御器１３は、入力レジスタ１５〜１８からの入力データに対して所定の演算を実行するように、浮動小数点演算装置２内の各回路を制御する。
【００２０】
マルチプレクサ２１は、入力レジスタ１５と１７からデータを入力し、制御信号に基づいて選択されたデータを、演算器１２へ出力する。  
マルチプレクサ２２は、入力レジスタ１６と１８からデータを入力し、制御信号に基づいて選択されたデータを、演算器１２へ出力する。
【００２１】
演算器１１は、入力レジスタ１５、１６、演算器１２及び制御器１３からデータを入力し、演算結果を出力レジスタ１９と演算器１２に出力する。演算器１２は、マルチプレクサ２１、２２、演算器１１及び制御器１３からデータを入力し、演算結果を出力レジスタ２０と演算器１１に出力する。
【００２２】
特に、本実施形態の浮動小数点演算装置２では、演算器１１の演算結果が演算器１２へ入力され、演算器１２の演算結果が演算器１１へ入力される。  
以下、入力レジスタ１５、１６、１７、１８に格納される入力データを、それぞれ入力A0,B0,A1,B1とし、出力レジスタ１９と２０に格納される出力データを、それぞれ出力S0,S1という。
【００２３】
浮動小数点演算装置２は、区間演算モードとSIMD演算モードを有している。演算モードは、入出力装置４を介して外部から指定されたり、実行する演算プログラムにおいて指定される。
【００２４】
区間演算モードの際には、入力レジスタ１５に入力A0が、入力レジスタ１６に入力B0が、入力される。入力データは、マルチプレクサ２１と２２を介して演算器１１、１２に入力される。すなわち、演算器１１、１２では、同一入力データの演算が行われる。演算器１１は、中心値である出力S0を出力レジスタ１９へ出力し、演算器１２は、誤差半径である出力S1を出力レジスタ２０へ出力する。
【００２５】
なお、区間演算モードのとき、マルチプレクサ２１と２２を用いず、入力レジスタ１７に入力レジスタ１５と同一の入力A0を、入力レジスタ１８に入力レジスタ１８と同一の入力B0を、入力するようにしても良い。
【００２６】
SIMD演算モードの際には、入力レジスタ１５と１６にそれぞれ入力A0および入力B0が入力され、入力レジスタ１７と１８にそれぞれ入力A1と入力B1が入力される。すなわち、入力A0と入力B0が演算器１１に入力され、入力A1と入力B1が演算器１２に入力され、演算器１１、１２は所定の演算を実行する。演算器１１は入力A0、B0の演算結果である出力S0を出力レジスタ１９に出力し、演算器１２は入力A1、B1の演算結果である出力S1を出力レジスタ２０に出力する。  
なお、２つの演算器１１と１２は、同じ演算を実行してもよいし、互いに異なる演算を実行するようにしてもよい。
【００２７】
図３は、演算器１１、１２の回路図である。各演算器１１，１２は、乗算器（図中、×で示す）３１と、マルチプレクサ（図中、MUXで示す）３２と、加減算器（図中、＋で示す）３３と、1/2器３４と、マルチプレクサ（図中、MUXで示す）３５と、レジスタ３６により構成される。
【００２８】
乗算器３１の入力端には、２つの入力データが入力され、乗算結果はマルチプレクサ３２の１つの入力端に入力される。また、マルチプレクサ３２の他の入力端には、他の演算器の出力データが入力される。
【００２９】
具体的には、演算器１１のマルチプレクサ３２には、演算器１２のレジスタ３６のレジスタ値である出力S1が入力される。演算器１２のマルチプレクサ３２には、演算器１１のレジスタ３６のレジスタ値である出力S0も入力される。
【００３０】
加減算器３３の入力端には、マルチプレクサ３２の出力及びレジスタ３６の出力が入力される。1/2器３４の入力端には、加減算器３３の出力が入力される。マルチプレクサ３５の入力端には、加減算器３３の出力及び1/2器３４の出力が入力される。レジスタ３６の入力端には、マルチプレクサ３５の出力が入力される。
【００３１】
乗算器３１と加減算器３３は、少なくとも２種の丸めモード（上向き、下向き）に応じた演算機能を備える。丸めモードの指定は、乗算器３１と加減算器３３への制御信号（点線で示す）により行われる。
【００３２】
よって、演算器１１は、設定された第１の丸めモードで、第１の入力データに対し第１の演算処理を実行する第１の演算器を構成し、演算器１２は、設定された第２の丸めモードで、第２の入力データに対し第２の演算処理を実行する第２の演算器を構成する。
【００３３】
区間演算モードのときは、演算器１１は上向きの丸めモードで処理を行い、演算器１２は、下向きの丸めモードで処理を行う。  
SIMD演算モードのときは、演算器１１と演算器１２は共に、上向きの丸めモード又は下向きの丸めモードのいずれかの同じ処理を行う。
【００３４】
また、マルチプレクサ３２、３５の入力の選択も、制御信号（点線で示す）により行われる。レジスタ３６の初期化も制御信号（点線で示す）により行われる。
【００３５】
よって、演算器１１の加減算器３３と1/2器３４は、加減算器３３の演算結果に演算器１２の演算結果を加算して得られた値を１／２にした第１の出力と、演算器１１の加減算器３３の演算結果と、を選択的に出力可能な第１の出力回路を構成する。演算器１２の加減算器３３と1/2器３４は、演算器１１の加減算器３３の演算結果から演算器１２の加減算器３３の演算結果を減算して得られた値を１／２にした第２の出力と、演算器１２の加減算器３３の演算結果と、を選択的に出力可能な第２の出力回路を構成する。
【００３６】
そして、演算器１１は、演算器である乗算器３１の演算結果を入力して累積加算する加減算器３３と、加減算器３３により累積加算して得られた加算値を格納するレジスタ３６と、乗算器３１の演算結果と演算器１２のレジスタ３６のレジスタ値とを選択的に切り替えて、加減算器３３へ入力する選択回路としてのマルチプレクサ３２を有する。
【００３７】
演算器１２は、演算器である乗算器３１の演算結果を入力して累積加算する加減算器３３と、加減算器３３により累積加算して得られた加算値を格納するレジスタ３６と、乗算器３１の演算結果と演算器１１のレジスタ３６のレジスタ値とを選択的に切り替えて、加減算器３３へ入力する選択回路としてのマルチプレクサ３２を有する。
【００３８】
さらに、演算器１１の第１の出力回路は、１／２回路である1/2器３４の出力と、加減算器３３の演算結果とを選択的に切り替えて、レジスタ３６へ出力する選択回路であるマルチプレクサ３５を有する。
【００３９】
演算器１２の第２の出力回路は、１／２回路である1/2器３４の出力と、加減算器３３の演算結果とを選択的に切り替えて、レジスタ３６へ出力する選択回路であるマルチプレクサ３５を有する。
（動作）
データ処理装置１は、区間演算とSIMD演算の両方が実行可能である。区間演算モードが設定されると区間演算が実行され、SIMD演算モードが設定されるとSIMD演算が実行される。
【００４０】
次に、区間演算モード時とSIMD演算モード時の動作を説明する。
a.区間演算に基づく内積の演算
はじめに、区間演算モード時の浮動小数点演算装置２の動作を説明する。ここでは、２つのベクトルX,Yの内積演算を例として、区間演算を説明する。
a1)データ処理装置１が区間演算モードに設定されると、浮動小数点演算装置２では、一方の演算器の乗算器３１と加減算器３３は上向きの丸めモードに、他方の演算器の乗算器３１と加減算器３３は下向きの丸めモードに設定される。ここでは、演算器１１の乗算器３１と加減算器３３が上向きの丸めモードに設定され、演算器１２の乗算器３１と加減算器３３が下向きの丸めモードに設定されるとする。
【００４１】
a2)制御器１３は、演算器１１、１２において、加減算器３３の入力として乗算器３１の出力が選択されるようにマルチプレクサ３２を制御する。
a3)制御器１３は、演算器１１、１２において、レジスタ３６の入力として加減算器３３の出力が選択されるようにマルチプレクサ３５を制御する。
a4)制御器１３は、演算器１１、１２のレジスタ３６を初期化する。
【００４２】
a5)次に、２つのベクトルX,Yの各要素について、以下の処理が実行される。
a5-1)まず、入力レジスタ１５に入力A0として、ベクトルXの要素が入力される。入力レジスタ１６に入力B0として、ベクトルYの要素が入力される。
a5-2)演算器１１、１２の乗算器３１において、入力A0、B0の乗算が実行される。
a5-3)演算器１１、１２の加減算器３３において、乗算器３１の乗算結果とレジスタ３６のレジスタ値の加算が実行される。
a5-4)加減算器３３の加減算結果が、レジスタ３６に格納される。
【００４３】
以上のa5-1〜a5-4の処理が２つのベクトルX,Yの全要素について実行される。演算器１１は、ベクトルX,Yの上向きの丸め処理がされた内積値を出力し、演算器１２は、ベクトルX,Yの下向きの丸め処理がされた内積値を出力する。  
すなわち、上述した式（８）により示されるベクトルXとベクトルYの内積値が出力される。演算器１１のレジスタ３６のレジスタ値は、２つのベクトルX,Yの内積についての区間演算の上限値である。演算器１２のレジスタ３６のレジスタ値は、２つのベクトルX,Yの内積についての区間演算の下限値である。
【００４４】
a6)２つのベクトルX,Yの全要素について実行された後、制御器１３は、演算器１１、１２において、加減算器３３の入力として他方の演算器の演算結果が選択されるように、マルチプレクサ３２を制御する。加減算器３３への入力は、演算器１１の場合、演算器１２の出力であり、演算器１２の場合、演算器１１の出力である。
【００４５】
a7)さらに、制御器１３は、演算器１１、１２において、レジスタ３６の入力として1/2器３４の出力が選択されるように、マルチプレクサ３５を制御する。
a8)演算器１１の加減算器３３は、レジスタ３６のレジスタ値と、演算器１２の出力値とを加算する。
【００４６】
a9)演算器１２の加減算器３３は、演算器１１の出力値から、レジスタ３６のレジスタ値を減算する。
a10)演算器１１の加減算器３３は、区間演算の上限値と下限値の和を1/2器３４に出力する。演算器１１のレジスタ３６には、1/2器３４の出力である区間演算の中心値が格納される。
a11)演算器１２の加減算器３３は、区間演算の上限値と下限値の差を1/2器３４に出力する。演算器１２のレジスタ３６には、区間演算の演算精度情報の一つで1/2器３４の出力である区間演算の半径が格納される。
【００４７】
以上のように、浮動小数点演算装置２は、区間演算モードでは２つの演算器を用いて、区間演算の演算結果と演算精度情報とを出力する。
【００４８】
b.SIMD演算に基づく内積の演算
次に、SIMD演算モード時の浮動小数点演算装置２の動作を説明する。ここでは、ベクトルX,Yの内積演算を２つ実行するSIMD演算を説明する。
b1)データ処理装置１がSIMD演算モードに設定されると、制御器１３は、演算器１１、１２の乗算器３１と加減算器３３を同一丸めモードに設定する。すなわち、制御器１３は、演算器１１と１２の両方を、上向き又は下向きの同じモードに設定する。ここでは、丸めモードが上向きに設定されるとする。
【００４９】
b2)制御器１３は、演算器１１、１２において、加減算器３３の入力として乗算器３１の出力が選択されるように、マルチプレクサ３２を制御する。
b3)制御器１３は、演算器１１、１２において、レジスタ３６の入力として加減算器３３の出力が選択されるように、マルチプレクサ３５を制御する。
b4)そして、制御器１３は、両演算器１１と１２のレジスタ３６を初期化する。
【００５０】
b5)次に、ベクトルX0とベクトルY0の各要素及びベクトルX1とベクトルY1の各要素について、以下の処理が実行される。
b5-1)まず、制御器１３が、インターフェース１４を制御して、ベクトルX0の要素をレジスタ１５に入力し、ベクトルY0の要素をレジスタ１６に入力し、ベクトルX1の要素をレジスタ１７に入力し、ベクトルY1の要素をレジスタ１８に入力する。
【００５１】
b5-2)演算器１１の乗算器３１において入力A0、B0の乗算が実行され、演算器１２の乗算器３１において入力A1、B1の乗算が実行される。
b5-3)演算器１１、１２の加減算器３３において、乗算器３１の乗算結果とレジスタ３６のレジスタ値の加算が実行される。
b5-4)演算器１１、１２の加減算器３３の加算結果が、それぞれのレジスタ３６に格納される。
【００５２】
以上のb-1〜b-5の処理が、ベクトルX0とベクトルY0の各要素及びベクトルX1とベクトルY1の各要素について実行されることにより、演算器１１、１２のそれぞれにおいてSIMD演算が実行される。  
以上のSIMD演算は、演算器１１、１２を用いて２つの内積を求めているが、２つの演算器１１、１２を用いて１つの内積を倍速で実行するようにしてもよい。
【００５３】
その場合のSIMD演算モード時の浮動小数点演算装置２の動作を説明する。
c1)データ処理装置１がSIMD演算モードに設定されると、制御器１３が、２つの演算器１１と１２の両方の乗算器３１と加減算器３３の丸めモードを同一丸めモードに設定してから、両演算器１１と１２のレジスタ３６を初期化するまでの処理は、上述したSIMD演算の動作b1〜b4と同様である。
c2)次に実行されるベクトルXとベクトルYの各要素について処理を行う。この処理は、上述したSIMD演算の動作と異なっている。
c2-1)制御器１３は、インターフェース１４を制御して、ベクトルXとベクトルYのそれぞれの要素を順番に、入力レジスタに交互に入力させる。インターフェース１４は、ベクトルXの要素を入力A0に入力し、ベクトルYの要素を入力B0に入力し、次のベクトルXの要素をA1入力し、次のベクトルYの要素を入力B1に入力する処理を、繰り返す。
【００５４】
例えば、制御器１３は、ベクトルXの奇数番目の要素を入力レジスタ１５に入力し、ベクトルYの奇数番目の要素を入力レジスタ１６に入力し、ベクトルXの偶数番目の要素を入力レジスタ１７に入力し、ベクトルYの偶数番目の要素を入力レジスタ１８に入力する。
すなわち、演算器１１には、ベクトルXとベクトルYの一対のベクトルデータの半分が入力され、演算器１２には、ベクトルXとベクトルYの一対のベクトルデータの残り半分が入力される。
【００５５】
c2-2)演算器１１において、入力A0とB0の演算が実行され、演算器１２において、入力A1とB1の演算が実行される。
以上の処理が、演算器１１では、ベクトルXとベクトルYの奇数番目の処理対象要素の全てに対して実行され、演算器１２では、ベクトルXとベクトルYの偶数番目の処理対象要素の全てに対して実行される。
【００５６】
そして、ベクトルX、Yの全て要素に対して実行されると、加減算器３３への入力が他の演算器の出力となるように、マルチプレクサ３２が制御器１３により制御される。
c3)演算器１１の加減算器３３において、演算器１１のレジスタ３６のレジスタ値と、演算器１２のレジスタ３６のレジスタ値が加算され、その加算値が演算器１１のレジスタ３６に格納される。  
以上のように、ベクトルXとベクトルYに対するSIMD演算が２つの演算器１１、１２により実行されることにより倍速で実行される。
【００５７】
本実施形態によれば、２つの演算器を用いて、SIMD演算モードと区間演算モードとが切り替え可能で、２つの演算モードが実行可能な浮動小数点演算装置を実現することができる。すなわち、本実施形態の浮動小数点演算装置は、演算精度を要求されない演算モードのときは、SIMD演算が実行可能である。一方、演算精度が要求される演算モードのときは、２つのベクトルの内積の演算結果と演算精度が取得できる区間演算を実行可能である。
【００５８】
（第２の実施形態）
第１の実施形態の浮動小数点演算装置は、区間演算又はSIMD演算に基づく内積演算を実行可能であるが、第２の実施形態の浮動小数点演算装置は、区間演算又はSIMD演算に基づく行列積演算を実行可能である。
（構成）
図４は、第２の実施形態の浮動小数点演算装置のブロック図である。浮動小数点演算装置２Aは、演算アレイ４１と、インターフェース４２と、制御器４３と、４つの入力レジスタ４４〜４７と、２つの出力レジスタ４８，４９と、２つのマルチプレクサ５０，５１とで構成される。本実施形態の浮動小数点演算装置２Aを有するデータ処理装置は、図１と同様の構成である。  
なお、ここでは、４×４の行列の行列積の演算を実行する例を説明する。
【００５９】
演算アレイ４１は、アレイ状に接続された複数の演算ノード５２から構成される。図４に示す演算アレイ４１は、演算ノード５２が左右に接続される部分は、左側の演算ノード５２の出力が右側の演算ノード５２の入力に、演算ノード５２が上下に接続される部分は、上側の演算ノード５２の出力が下側の演算ノード５２の入力に、それぞれ接続されるように、構成されている。
【００６０】
インターフェース４２は、相互接続網５を介して入力されたデータを入力レジスタ４４〜４７へ出力する。また、インターフェース４２は、出力レジスタ４８と４９からの出力データを相互接続網５へ出力する。  
制御器４３は、インターフェース４２を介して入力されたコマンドに応じて、演算アレイ４１と、マルチプレクサ５０，５１へ制御信号を出力する。また、制御器４３は、演算アレイ４１の各演算ノード５２の各演算器６１，６２（図５）へも制御信号を出力する。
【００６１】
マルチプレクサ５０は、入力レジスタ４５と４６からの入力データを入力し、制御信号に基づいて選択されたデータを演算アレイ４１へ出力する。
マルチプレクサ５１は、入力レジスタ４４と４７からの入力データを入力し、制御信号に基づいて選択されたデータを演算アレイ４１へ出力する。  
【００６２】
図５は、演算アレイ４１の各演算ノード５２の構成を示すブロック図である。演算ノード５２は、２つの演算器６１、６２と、２つの入力制御器６３、６４と、２つの出力制御器６５、６６とで構成されている。さらに、演算ノード５２は、６つの入力端子A0in,A1in,B0in,B1in,S0in,S1inと、６つの出力端子A0out,A1out,B0 out,B1out,S0out,S1 outを有している。  
演算器６１、６２は、図３と同じ構成を有する。
【００６３】
演算器６１には、入力制御器６３の２つの出力と、演算器６２の出力とが入力される。演算器６２には、入力制御器６４の２つの出力と、演算器６１の出力とが入力される。  
演算器６１の出力は、出力制御器６５と演算器６２に入力される。演算器６２の出力は、出力制御器６６と演算器６１に入力される。
【００６４】
図６は、入力制御器６３、６４の回路図である。  
入力制御器６３，６４は、２つのレジスタ７１と７２を有する。レジスタ７１の入力には、入力端子A0in, A1inが接続され、レジスタ７２の入力には、入力端子B0in,B1inが接続されている。レジスタ７１の出力は、演算器６１，６２の入力と出力端子A0out,A1outとに接続されている。レジスタ７２の出力は、演算器６１，６２の入力と出力端子B0out,B1outとに接続されている。
演算アレイ４１において右端以外の演算ノード５２の出力端子A0outとB1outは、演算アレイ４１において右側に隣接する演算ノード５２の入力端子A0inとB1inに接続される。すなわち、右端以外の演算ノード５２の入力制御器６３のレジスタ７１の出力は、右側隣接演算ノード５２の入力制御器６３のレジスタ７１に入力され、右端以外の演算ノード５２の入力制御器６４のレジスタ７２の出力は、右側隣接演算ノード５２の入力制御器６４のレジスタ７２に入力される。
また、演算アレイ４１において下端以外の演算ノード５２の出力端子A1outとB0outは、演算アレイ４１において下側に隣接する演算ノード５２の入力端子A1inとB0inに接続される。すなわち、下端以外の演算ノード５２の入力制御器６４のレジスタ７１の出力は、下側隣接演算ノード５２の入力制御器６４のレジスタ７１に入力され、下端以外の演算ノード５２の入力制御器６３のレジスタ７２の出力は、下側隣接演算ノード５２の入力制御器６３のレジスタ７２に入力される。
すなわち、各入力制御器６３，６４は、入力データである入力Aと入力Bをそれぞれ、レジスタ７１と７２に格納し出力する。
【００６５】
図７は、出力制御器６５、６６の回路図である。  
出力制御器６５、６６は、２つのレジスタ７３と７４と、マルチプレクサ７５を有する。レジスタ７３の入力には、演算器６１，６２の出力が接続されている。マルチプレクサ７５の入力には、レジスタ７３の出力と入力端子S0in,S1inが接続されている。マルチプレクサ７５の出力は、レジスタ７４の入力に接続されている。
【００６６】
各出力制御器６５、６６は、各演算器６１，６２の出力をレジスタ７３に格納する。マルチプレクサ７５は、入力端子S0in,S1inからの入力があれば、その入力を選択し、入力端子S0in,S1inからの入力がなければレジスタ７３の出力を選択する。選択された値は、レジスタ７４に格納され、出力される。
【００６７】
（動作）
本実施形態のデータ処理装置１も、区間演算とSIMD演算の両方が実行可能である。
次に、区間演算モード時とSIMD演算モード時の動作を説明する。  
まず、２つの行列AA0とBB0の行列積を求める区間演算モード時の動作について説明する。  
このとき、浮動小数点演算装置２Aでは、行列AA0の行ベクトルデータが入力レジスタ４４に入力A0として、行列BB0の列ベクトルデータが入力レジスタ４５に入力B0として、演算ノード５２の入力端子A0in,B0inに入力される。また同時に、入力A0とB0と同一の入力データが、マルチプレクサ５０，５１を介して入力端子A1in,B1inに入力される。
【００６８】
その結果、演算アレイ４１は、各演算ノード５２において、行列積の区間演算を実行し、演算結果である行列積の機械区間の上限値を出力レジスタ４８に出力S0として出力し、機械区間の下限値を出力レジスタ４９に出力S1として出力すると共に、行列積の機械区間の出力後に、出力レジスタ４８に中心値の行列、出力レジスタ４９に誤差半径の行列を出力する。
【００６９】
なお、マルチプレクサを用いず、入力A0と入力B1、入力B0と入力A1のそれぞれに同一入力データを入力するようにしてもよい。  
また、入力A0とB0の行列演算と入力A1とB1の行列演算とで異なる演算を行うようにしてもよい。
【００７０】
d.区間演算に基づく行列積の演算
次に、区間演算に基づく行列積の演算の動作について詳述する。
d1) 浮動小数点演算装置２Aでは、各演算ノード５２の２つの演算器６１と６２の一方における乗算器３１と加減算器３３は上向きの丸めモードに、各演算ノード５２の２つの演算器６１と６２の他方における乗算器３１と加減算器３３は下向の丸めきモードに設定される。
d2)各演算ノード５２の２つの演算器６１と６２の加減算器３３の入力として乗算器３１の出力が選択されるように、制御器４３は、マルチプレクサ３２を制御する。
d3)さらに、各演算ノード５２のレジスタ３６の入力として加減算器３３の出力が選択されるように、制御器４３は、マルチプレクサ３５を制御する。
【００７１】
d4)制御器４３は、各演算ノード５２のレジスタ３６を初期化する。
d5)制御器４３は、行列AA0を行ベクトルに分割し、行ベクトルを入力A0として、入力レジスタ４４に入力する。同様に、制御器４３は、行列BB0を列ベクトルに分割し、列ベクトルを入力B0として、入力レジスタ４４に入力する。
d6)行列AA0の1行目の行ベクトルA0-0を、演算アレイ４１の1行目の入力A0inと入力B1inに入力し、行列AA0の2行目の行ベクトルA0-1を、演算アレイ４１の2行目の入力A0inと入力B1inに入力し、行列AA0の3行目の行ベクトルA0-2を、演算アレイ４１の3行目の入力A0inと入力B1inに入力し、行列AA0の4行目の行ベクトルA0-3を、演算アレイ４１の4行目の入力A0inと入力B1inに入力する。
【００７２】
d7)行列BB0の1列目の列ベクトルB0-0を、演算アレイ４１の1列目の入力B0inと入力A1inに入力し、行列BB0の2行目の列ベクトルB0-1を、演算アレイ４１の2列目の入力B0inと入力A1inに入力し、行列BB0の3行目の列ベクトルB0-2を、演算アレイ４１の3列目の入力B0inと入力A1inに入力し、行列BB0の4行目の列ベクトルB0-3を、演算アレイ４１の4列目の入力B0inと入力A1inに入力する。
d8)各演算ノード５２では、入力された各ベクトル要素に対して次の処理が実行される。
d8-1)入力制御器６３は、入力A0inと入力B0inを順に格納して出力する。
d8-2)入力制御器６４は、入力A1inと入力B1inを順に格納して出力する。
d8-3)各演算器６１と６２の乗算器３１では、２つの入力が乗算される。
【００７３】
d8-4)各演算器６１と６２の加減算器３３では、乗算器３１の乗算結果とレジスタ３６のレジスタ値とが加算される。
d8-5)各演算器６１と６２のレジスタ３６には、加算結果が格納され、出力制御器６５から区間演算の演算結果の行列積の要素の機械区間の上限値が出力され、出力制御器６６から区間演算の演算結果の行列積の要素の機械区間の下限値が出力される。
d9)行列積の全要素の機械区間の出力の完了後、各演算ノード５２で、以下の処理が行われる。
d9-1)各演算ノード５２の両演算器６１と６２の加減算器３３の入力として、外部からの入力を選択するように、制御器４３は、マルチプレクサ３２を制御する。
d9-2)さらに、各演算ノード５２の両演算器６１、６２において、レジスタ３６の入力として、1/2器３４の出力が選択されるように、制御器４３は、マルチプレクサ３５を制御する。
【００７４】
d9-3)そして、各演算器６１の加減算器３３において、２つの入力の加算が行われ、各演算器６２の加減算器３３において、２つの入力の減算が行われる。
d9-4)各演算ノード５２の両演算器６１と６２の1/2器３４において、加減算器３３の出力の1/2演算が実行され、1/2器３４の演算結果が、レジスタ３６に格納される。
d9-5)出力制御器６５は、演算器６１のレジスタ３６の出力を順に格納して出力する。
d9-6)出力制御器６６は、演算器６２のレジスタ３６の出力を順に格納して出力する。
【００７５】
演算アレイ４１において、1列目の出力S0は結果行列S0の1列目の列ベクトルS0-0として、2列目の出力S0は結果行列S0の2列目の列ベクトルS0-1として、3列目の出力S0は結果行列S0の3列目の列ベクトルS0-2として、4列目の出力S0は結果行列S0の4列目の列ベクトルS0-3として、出力レジスタ４８に出力される。
【００７６】
演算アレイ４１において、1行目の出力S1は結果行列S1の1行目の行ベクトルS1-0として、2行目の出力S1は結果行列S1の2行目の行ベクトルS1-1として、3行目の出力S1は結果行列S1の3行目の行ベクトルS1-2として、4行目の出力S1は結果行列S1の4行目の行ベクトルS1-3として、出力レジスタ４９に出力される。
【００７７】
行列積の機械区間が出力される際には、出力レジスタ４８の４つの列ベクトルS0-0〜S0-3は、統合されて行列積の演算結果である行列SS0の機械区間の上限値として出力され、出力レジスタ４９の４つの行ベクトルS1-0〜S1-3は、統合されて行列積の演算結果である行列SS0の機械区間の下限値として出力される。
行列積の中心値と誤差半径が出力される際には、出力レジスタ４８の４つの列ベクトルS0-0〜S0-3は、統合されて中心値行列SS0として出力され、出力レジスタ４９の４つの行ベクトルS1-0〜S1-3は、統合されて誤差半径行列SS1として出力される。
【００７８】
次に、SIMD演算モード時の動作を説明する。  
このとき、浮動小数点演算装置２Aでは、入力レジスタ４４に入力A0が、入力レジスタ４５に入力B0が入力されて１つの行列積が算出され、入力レジスタ４６に入力A1が、入力レジスタ４７に入力B1が入力されて、別の行列積が算出される。その場合、演算アレイ４１内では、入力A0とB0の演算と入力A1とB1の演算は個別に実行され、出力S0に入力A0とB0の演算結果が、出力S1に入力A1とB1の演算結果が出力される。
【００７９】
e. SIMD演算に基づく行列積の演算
次に、SIMD演算に基づく行列積の演算動作について詳述する。  
e1)まず、制御器４３は、各演算ノードの演算器６１と６２の乗算器３１と加減算器３３を同一の丸めモードに設定する。例えば、演算器６１の乗算器３１と加減算器３３が上向きモードに設定されたときは、演算器６２の乗算器３１と加減算器３３も上向きモードに設定される。
e2)演算器６１と６２の加減算器３３の入力として乗算器３１の出力が選択されるように、制御器４３は、マルチプレクサ３２を制御する。
【００８０】
e3)演算器６１と６２のレジスタ３６の入力として、加減算器３３の出力が選択されるように、制御器４３は、マルチプレクサ３５を制御する。
e4)制御器４３は、演算器６１と６２の両方のレジスタ３６を初期化する。
e5)行列AA0を行ベクトルに分割して、各行ベクトルを入力A0として入力レジスタ４４に入力する。
e6)行列BB0を列ベクトルに分割して、各列ベクトルを入力B0として入力レジスタ４５に入力する。
【００８１】
e7)行列AA0の1行目の行ベクトルA0-0が、演算アレイ４１の1行目の入力A0inに入力され、行列AA0の2行目の行ベクトルA0-1が、演算アレイ４１の2行目の入力A0inに入力され、行列AA0の3行目の行ベクトルA0-2が、演算アレイ４１の3行目の入力A0inに入力され、行列AA0の4行目の行ベクトルA0-3が、演算アレイ４１の4行目の入力A0inに入力される。
e8)行列BB0の1列目の列ベクトルB0-0が、演算アレイ４１の1列目の入力B0に入力され、行列BB0の2行目の列ベクトルB0-1が、演算アレイ４１の2列目の入力B0に入力され、行列BB0の3行目の列ベクトルB0-2が、演算アレイ４１の3列目の入力B0に入力され、行列BB0の4行目の列ベクトルB0-3が、演算アレイ４１の4列目の入力B0に入力される。
e9)また、行列AA1を行ベクトルに分割して、各行ベクトルを入力A1として入力レジスタ４６に入力する。
【００８２】
e10)行列BB1を列ベクトルに分割して、各列ベクトルを入力B1として入力レジスタ４７に入力する。
e11)行列AA1の1行目の行ベクトルA1-0が、演算アレイ４１の1列目の入力A1inに入力され、行列AA1の2列目の行ベクトルA1-1が、演算アレイ４１の2列目の入力A1inに入力され、行列AA1の3行目の行ベクトルA1-2が、演算アレイ４１の3列目の入力A1inに入力され、行列AA1の4行目の行ベクトルA1-3が、演算アレイ４１の4列目の入力A1inに入力される。
e12)行列BB1の1列目の列ベクトルB1-0が、演算アレイ４１の1行目の入力B1inに入力され、行列BB1の2行目の列ベクトルB1-1が、演算アレイ４１の2行目の入力B1inに入力され、行列BB1の3行目の列ベクトルB1-2が、演算アレイ４１の3行目の入力B1inに入力され、行列BB1の4行目の列ベクトルB1-3が、演算アレイ４１の4行目の入力B1inに入力される。
【００８３】
e13)各演算ノード５２では、入力された各ベクトル要素について次の処理が実行される。
e13-1)入力制御器６３は、入力A0inと入力B0inを順に格納して出力する。
e13-2)入力制御器６４は、入力A1inと入力B1inを順に格納して出力する。
e13-3)各演算器６１と６２では、２つの入力に対する演算が行われる。
【００８４】
e14)全ベクトル要素の処理の完了後、各演算ノード５２で次の処理が実行される。
e14-1)各演算ノード５２の出力制御器６５は、演算器６１の出力を順に格納して出力する。
e14-2)各演算ノード５２の出力制御器６６は、演算器６２の出力を順に格納して出力する。
e15)演算アレイ４１の1列目の出力S0は、結果行列S0の1列目の列ベクトルS0-0として出力レジスタ４８に出力され、演算アレイ４１の2列目の出力S0は、結果行列S0の2列目の列ベクトルS0-1として出力レジスタ４８に出力され、演算アレイ４１の3列目の出力S0は、結果行列S0の3列目の列ベクトルS0-2として出力レジスタ４８に出力され、演算アレイ４１の4列目の出力S0は、結果行列S0の4列目の列ベクトルS0-3として出力レジスタ４８に出力される。
【００８５】
e16)また、演算アレイ４１の1行目の出力S1は、結果行列S1の1列目の列ベクトルS1-0として出力レジスタ４９に出力され、区間演算アレイの2行目の出力S1は、結果行列S1の2列目の列ベクトルS1-1として出力レジスタ４９に出力され、区間演算アレイの3行目の出力S1は、結果行列S1の3列目の列ベクトルS1-2として出力レジスタ４９に出力され、演算アレイ４１の4行目の出力S1は、結果行列S1の4列目の列ベクトルS1-3として出力レジスタ４９に出力される。
【００８６】
e17) 出力レジスタ４８の４つの列ベクトルS0-0〜S0-3は、統合されて結果行列SS0として出力される。
e18) 出力レジスタ４９の４つの行ベクトルS1-0〜S1-3は、統合されて結果行列SS1として出力される。
【００８７】
以上のSIMD演算は、各演算器６１、６２において、２つの行列積のための演算が行われるが、２つの演算器６１と６２を用いて１つの行列積を倍速で実行するようにしてもよい。  
その場合のSIMD演算モード時の浮動小数点演算装置２Aの動作を説明する。
f1)まず、制御器４３は、各演算ノードの演算器６１と６２の両方における乗算器３１と加減算器３３を同一の丸めモードに設定する。例えば、演算器６１の乗算器３１と加減算器３３が上向きの丸めモードに設定されたときは、演算器６２の乗算器３１と加減算器３３も上向きの丸めモードに設定される。
f2)演算器６１と６２の両方の加減算器３３の入力として乗算器３１の出力を選択するように、制御器４３は、マルチプレクサ３２を制御する。
【００８８】
f3)演算器６１と６２の両方のレジスタ３６の入力として、加減算器３３の出力を選択するように、制御器４３は、マルチプレクサ３５を制御する。
f4)制御器４３は、演算器６１と６２の両方のレジスタ３６を初期化する。
f5)行列AA0を行ベクトルに分割して、各行ベクトルを入力A0として入力レジスタ４４に入力する。
f6)行列BB0を列ベクトルに分割して、各列ベクトルを入力B0として入力レジスタ４５に入力する。
【００８９】
f7)行列AA0の1行目の行ベクトルA0-0の各要素が、演算アレイ４１の1行目の入力A0inと入力B1inに交互に入力され、行列A0の2行目の行ベクトルA0-1の各要素が、演算アレイ４１の2行目の入力A0inと入力B1inに交互に入力され、行列A0の3行目の行ベクトルA0-2の各要素が、演算アレイ４１の3行目の入力A0inと入力B1inに交互に入力され、行列A0の4行目の行ベクトルA0-3の各要素が、演算アレイ４１の4行目の入力A0inと入力B1inに交互に入力される。
【００９０】
f8)行列BB0の1列目の列ベクトルB0-0の各要素が、演算アレイ４１の1列目の入力B0inと入力A1inに交互に入力され、行列B0の2行目の列ベクトルB0-1の各要素が、演算アレイ４１の2列目の入力B0inと入力A1inに交互に入力され、行列B0の3行目の列ベクトルB0-2の各要素が、演算アレイ４１の3列目の入力B0inと入力A1inに交互に入力され、行列B0の4行目の列ベクトルB0-3の各要素が、演算アレイ４１の4列目の入力B0inと入力A1inに交互に入力される。
f9)各演算ノード５２では、入力された各ベクトル要素について次の処理が実行される。
f9-1)入力制御器６３は、入力A0inと入力B0inを順に格納して出力する。
f9-2)入力制御器６４は、入力A1inと入力B1inを順に格納して出力する。
【００９１】
f9-3)各演算器６１と６２では、２つの入力に対する演算が行われる。
f10)全ベクトル要素の処理の完了後、各演算ノード５２で次の処理が実行される。
f10-1)演算器６１の加減算器３３の入力として外部からの入力を選択するように、制御器４３は、マルチプレクサ３２を制御する。
f10-2)演算器６１の加減算器３３で、レジスタ３６のレジスタ値と、外部からの入力としての演算器１２のレジスタ３６のレジスタ値とが加算される。
【００９２】
f10-3)演算器６１のレジスタ３６に加減算器３３の加算結果が格納される。
f11)各演算ノード５２の出力制御器６５は、演算器６１の出力を順に格納して出力する。
f12)演算アレイ４１の1列目の出力S0は、結果行列S0の1列目の列ベクトルS0-0として出力レジスタ４８に出力され、演算アレイ４１の2列目の出力S0は、結果行列S0の2列目の列ベクトルS0-1として出力レジスタ４８に出力され、演算アレイ４１の3列目の出力S0は、結果行列S0の3列目の列ベクトルS0-2として出力レジスタ４８に出力され、演算アレイ４１の4列目の出力S0は、結果行列S0の4列目の列ベクトルS0-3として出力レジスタ４８に出力される。
f13) 出力レジスタ４８の４つの列ベクトルS0-0〜S0-3は、統合されて結果行列SS0として出力される。
【００９３】
以上のように、演算アレイ４１の各演算ノード５２の２つの演算器６１と６２を用いて１つの行列積を倍速で実行することができる。
【００９４】
以上のように、本実施形態の浮動小数点演算装置は、演算精度を要求されない演算モードのときは、SIMD演算に基づく行列積演算を実行し、演算精度が要求される演算モードのときは、演算結果と演算精度情報が取得できる区間演算に基づく行列積演算を実行することができる。
【００９５】
各実施形態の浮動小数点演算装置は、種々の分野において利用可能である。例えば、第２の実施形態の浮動小数点演算装置２Aは、例えば画像処理システムなどに適用可能である。図８は、本実施形態の浮動小数点演算装置を有する情報処理システムの構成を示すブロック図である。図８において、図１と同じ構成要素については、同じ符号を付して説明は省略する。
【００９６】
図８に示す情報処理システム１００の例は、浮動小数点演算装置２Aと、主記憶装置３と、入出力装置４と、相互接続網５と、例えばイメージセンサを有するカメラ１０１と、表示装置としてのモニタ１０２とを含む画像処理システムである。図８の点線で示す範囲が、例えば１つの半導体装置上に形成される。
【００９７】
例えば、車両に搭載されたカメラ１０１により撮像された画像から、周囲の建物等の被写体の３次元の形状データを生成するような応用である。その場合、撮像して得られた２次元画像データから、被写体の３次元データを構築するアプリケーションプログラムの実行において、画像データの画素の位置データの演算精度が要求される。そのようなシステムにおいては、本浮動小数点演算装置２Aは、極めて有効である。２次元画像データに対する画像は、区間演算モードにて処理が実行され、３次元データが生成される。演算結果及び演算精度情報はモニタ１０２に表示され、ユーザは、その演算精度情報を利用した高精度の３次元データを目視することができる。
【００９８】
以上のように、各実施形態によれば、区間演算の演算結果と演算精度情報を同時に取得する区間演算と、SIMD演算とを切り替えて実行可能な浮動小数点演算装置、半導体装置及び情報処理システムを提供することができる。
【００９９】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として例示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれると共に、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【０１００】
１  データ処理装置、２、２A     浮動小数点演算装置、３  主記憶装置、４  入出力装置、５  相互接続網、１１、１２  演算器、１３  制御器、１４  インターフェース、１５、１６、１７、１８  入力レジスタ、１９  出力レジスタ、２０  出力レジスタ、２１、２２  マルチプレクサ、３１  乗算器、３２  マルチプレクサ、３３  加減算器、３４  1/2器、３５  マルチプレクサ、３６  レジスタ、４１  演算アレイ、４２  インターフェース、４３  制御器、４４  入力レジスタ、４５、４６、４７  入力レジスタ、４８、４９  出力レジスタ、５０、５１  マルチプレクサ、５２  演算ノード、６１、６２  演算器、６３、６４  入力制御器、６５、６６  出力制御器、７１、７２、７３、７４  レジスタ、７５  マルチプレクサ、１００  情報処理システム、１０１  カメラ、１０２  モニタ。
【図１】
2016057831.tif 000011
【図２】
2016057831.tif 000012
【図３】
2016057831.tif 000013
【図４】
2016057831.tif 000014
【図５】
2016057831.tif 000015
【図６】
2016057831.tif 000016
【図７】
2016057831.tif 000017
【図８】
2016057831.tif 000018