(57)【要約】【課題】拡張精度演算回路と単・倍精度演算回路とにより単精度同士／倍精度同士の並列演算を実現し、演算処理を高速化して演算実行時間を短縮できること。【解決手段】第１ビット幅の数値及び前記第１ビット幅より短い第２ビット幅の数値に対してそれぞれが浮動小数点演算を行なう複数の演算回路を有する浮動小数点演算回路であって、演算命令に基づいて、第１ビット幅の演算を行なう第１演算回路が休止することを判定する休止判定部と、休止判定部が前記第１演算回路が休止すると判定した場合に、第１演算回路を第２ビット幅の数値の演算を行なうよう制御し、第２ビット幅の数値の演算を、第１演算回路と第２ビット幅の数値を演算する第２演算回路とにより並列に実行する演算制御部と、を備えることを特徴とする。【選択図】  図１
2012113508.tif 000002
【特許請求の範囲】
【請求項１】
第１ビット幅の数値及び前記第１ビット幅より短い第２ビット幅の数値に対してそれぞれが浮動小数点演算を行なう複数の演算回路を有する浮動小数点演算回路であって、
演算命令に基づいて、前記第１ビット幅の演算を行なう第１演算回路が休止することを判定する休止判定手段と、
前記休止判定手段が前記第１演算回路が休止すると判定した場合に、前記第１演算回路を前記第２ビット幅の数値の演算を行なうよう制御し、前記第２ビット幅の数値の演算を、前記第１演算回路と前記第２ビット幅の数値を演算する第２演算回路とにより並列に実行する演算制御手段と、
を備えることを特徴とする浮動小数点演算回路。
【請求項２】
前記第１演算回路は、
前記第１演算回路への演算命令が、前記第１ビット幅の数値に対する演算であるか否かを判定する演算判定手段と、
前記演算判定手段が前記第１ビット幅の数値に対する演算であると判定した場合は、前記第１ビット幅の数値に対して浮動小数点演算を実行し、前記演算判定手段が前記第１ビット幅の数値に対する演算でないと判定した場合は、前記第２ビット幅の数値に対して浮動小数点演算を実行する演算実行手段と、
を有することを特徴とする請求項１に記載の浮動小数点演算回路。
【請求項３】
前記演算判定手段は、
演算命令を格納する演算命令レジスタと、
前記演算命令レジスタの出力信号の値に基づいて前記第１演算回路を休止するか否かを検出して演算実行中フラグを生成する演算実行中フラグ生成手段と、
前記演算実行中フラグ生成手段が生成した前記第１演算回路を休止するか否かの前記演算実行中フラグを格納する実行中フラグ格納レジスタと、を有し、
前記演算実行手段は、
前記演算実行中フラグが演算実行中であることを示す場合に、前記第１ビット幅の数値に含まれる符号、指数及び仮数を選択して浮動小数点演算を実現する回路群に伝達し、前記演算実行中フラグが演算実行中でないことを示す場合に、前記第２ビット幅の数値に含まれる符号、指数及び仮数を選択して浮動小数点演算を実現する回路群に伝達する選択手段と、
前記浮動小数点演算を実現する回路群から得た浮動小数点演算結果を格納する演算結果格納レジスタと、を有することを特徴とする請求項１または２に記載の浮動小数点演算回路。
【請求項４】
拡張されたビット幅の数値の浮動小数点演算を行なう浮動小数点演算回路であって、
当該浮動小数点演算回路への演算命令が、拡張されたビット幅の数値に対する演算であるか否かを判定する演算判定手段と、
前記演算判定手段が拡張されたビット幅の数値に対する演算であると判定した場合は、前記拡張されたビット幅の数値の浮動小数点演算を実行し、前記演算判定手段が拡張されたビット幅の数値に対する演算でないと判定した場合は、前記拡張されたビット幅より短いビット幅の数値の浮動小数点演算を実行する演算実行手段と、
を備えることを特徴とする浮動小数点演算回路。
【請求項５】
前記演算判定手段は、
入力される演算命令を格納する演算命令レジスタと、
前記演算命令レジスタの出力信号の値に基づいて当該浮動小数点演算回路を休止するか否かを検出して演算実行中フラグを生成する演算実行中フラグ生成手段と、
前記演算実行中フラグ生成手段が生成した前記演算実行中フラグを格納する実行中フラグ格納レジスタと、を有し、
前記演算実行手段は、
前記演算実行中フラグが演算実行中であることを示す場合に、前記拡張されたビット幅の数値に含まれる符号、指数及び仮数を選択して浮動小数点演算を実現する回路群に伝達し、前記演算実行中フラグが演算実行中でないことを示す場合に、前記拡張されたビット幅より短いビット幅の数値に含まれる符号、指数及び仮数を選択して浮動小数点演算を実現する回路群に伝達する選択手段と、
前記浮動小数点演算を実現する回路群から浮動小数点演算結果を格納する演算結果格納レジスタと、
を有することを特徴とする請求項４に記載の浮動小数点演算回路。
【請求項６】
前記浮動小数点演算回路が行なう演算が、加算又は減算である場合に、
前記演算実行手段は、
前記演算実行中フラグに基づいて指数のデータ幅に合った指数を選択する基準指数選択回路と、
前記演算実行中フラグに基づいて指数の差を求めて桁合わせ右シフト量を求めるシフト量算出回路と、
第１データの仮数が格納される第１レジスタと、
第２データの仮数が格納される第２レジスタと、
前記第１データの仮数及び前記第２データの仮数のうち、前記演算実行中フラグに基づいて指数の小さい方を桁合わせが必要な仮数として出力し、他方を桁合わせが必要ない仮数として出力する仮数選択回路と、
前記仮数選択回路から出力された桁合わせが必要な仮数を、前記第１データの仮数及び前記第２データの前記演算実行中フラグに基づく指数の差に応じたシフト量だけ右シフトして、シフトした結果を出力する桁合わせ右シフト回路と、
前記桁合わせ右シフト回路から出力される前記桁合わせが必要な仮数のシフトした結果と前記仮数選択回路から出力される桁合わせが必要ない仮数との加減算を行って、加減算結果を出力する加減算回路と、
前記加減算回路から出力された前記加減算結果を正規化する正規化左シフト回路と、
を備えることを特徴とする請求項５に記載の浮動小数点演算回路。
【請求項７】
拡張されたビット幅の数値の浮動小数点演算を行なう浮動小数点演算回路であって、
入力される演算命令を格納する演算命令レジスタと、
前記演算命令レジスタの出力信号の値に基づいて当該浮動小数点演算回路による拡張されたビット幅の浮動小数点演算を休止するか否かを検出して、演算実行中フラグを生成する演算実行中フラグ生成回路と、
前記演算実行中フラグ生成回路が生成した前記演算実行中フラグを格納する実行中フラグ格納レジスタと、
入力される拡張されたビット幅の被演算データの符号、指数及び仮数と演算データの符号、指数及び仮数とを格納する第１レジスタ群と、
入力される拡張されないビット幅の被演算データの符号、指数及び仮数と演算データの符号、指数及び仮数とを格納する第２レジスタ群と、
前記演算実行中フラグが当該浮動小数点演算回路による拡張されたビット幅の浮動小数点演算を実行することを示す場合には前記第１レジスタ群を選択し、前記演算実行中フラグが当該浮動小数点演算回路による拡張されたビット幅の浮動小数点演算を休止することを示す場合には前記第２レジスタ群を選択する符号、指数及び仮数選択回路と、
演算命令と被演算データの符号と演算データの符号とに基づいて、演算結果の符号を生成する符号生成回路と、
演算命令と被演算データの符号と演算データの符号とに基づいて、被演算データの指数と演算データの指数とを調整して演算結果の指数を生成する指数生成回路と、
前記指数生成回路における前記被演算データの指数と演算データの指数との調整に対応して、被演算データの仮数と演算データの仮数との桁合わせを行なって演算結果の仮数を生成する仮数演算回路と、
前記演算結果の指数と仮数とを整合する整合回路と、
前記演算結果の符号と、前記整合回路で整合された前記演算結果の指数と仮数とを格納する演算結果格納レジスタとを備え、
前記実行中フラグ格納レジスタに格納された前記実行中フラグと、前記演算結果格納レジスタに格納された前記演算結果の符号、指数及び仮数とを、浮動小数点演算結果として出力することを特徴とする浮動小数点演算回路。
【請求項８】
異なるビット幅の数値に対してそれぞれ浮動小数点演算を行なう複数の演算回路を有する浮動小数点演算回路を備えたコンピュータであって、
第１演算回路が、
当該第１演算回路への演算命令が、第１ビット幅の数値に対する演算であるか前記第１ビット幅より短い第２ビット幅の数値に対する演算であるかを判定する演算判定手段と、
前記演算判定手段が前記第１ビット幅の数値に対する演算であると判定した場合に、前記第１ビット幅の数値の浮動小数点演算を実行し、前記演算判定手段が前記第２ビット幅の数値に対する演算であると判定した場合に、前記第２ビット幅の数値の浮動小数点演算を実行する演算実行手段と、を有し、
第２演算回路が、前記第２ビット幅の数値の浮動小数点演算を実行する回路であって、
前記浮動小数点演算回路への演算命令が前記第１ビット幅の数値に対する演算が休止することを示す場合には、前記第２ビット幅の数値の浮動小数点演算を前記第１演算回路と前記第２演算回路とにより並列に実行することを特徴とするコンピュータ。
【請求項９】
異なるビット幅の数値に対してそれぞれ浮動小数点演算を行なう複数の演算回路を有する浮動小数点演算回路を備えたコンピュータの演算制御方法であって、
演算プログラムを記憶手段から読み出す読出ステップと、
前記演算プログラムの命令を解析して、前記浮動小数点演算回路において演算すべき数値が第１ビット幅か前記第１ビット幅より短い第２ビット幅かを判定する判定ステップと、
前記浮動小数点演算回路において演算すべき数値が第１ビット幅の場合に、前記第１ビット幅の演算を行なう第１演算回路に前記第１ビット幅の演算命令と演算すべき数値とを提供して、前記第１ビット幅の演算結果を前記第１演算回路から取得する第１演算ステップと、
前記浮動小数点演算回路において演算すべき数値が第２ビット幅の場合に、前記第１ビット幅の演算を行なう第１演算回路と前記第２ビット幅の演算を行なう第２演算回路とに並列の前記第２ビット幅の演算命令と演算すべき数値とを提供して、前記第２ビット幅の演算結果を前記第１演算回路と前記第２演算回路から並列に取得する第２演算ステップと、
を含むことを特徴とする演算制御方法。
【請求項１０】
異なるビット幅の数値に対してそれぞれ浮動小数点演算を行なう複数の演算回路を有する浮動小数点演算回路を備えたコンピュータの演算制御プログラムであって、
演算プログラムを記憶手段から読み出す読出ステップと、
前記演算プログラムの命令を解析して、前記浮動小数点演算回路において演算すべき数値が第１ビット幅か前記第１ビット幅より短い第２ビット幅かを判定する判定ステップと、
前記浮動小数点演算回路において演算すべき数値が第１ビット幅の場合に、前記第１ビット幅の演算を行なう第１演算回路に前記第１ビット幅の演算命令と演算すべき数値とを提供して、前記第１ビット幅の演算結果を前記第１演算回路から取得する第１演算ステップと、
前記浮動小数点演算回路において演算すべき数値が第２ビット幅の場合に、前記第１ビット幅の演算を行なう第１演算回路と前記第２ビット幅の演算を行なう第２演算回路とに並列の前記第２ビット幅の演算命令と演算すべき数値とを提供して、前記第２ビット幅の演算結果を前記第１演算回路と前記第２演算回路から並列に取得する第２演算ステップと、をコンピュータに実行させることを特徴とする演算制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、スーパーコンピュータのベクトル演算などで高速な浮動小数点演算を行なうための演算技術に関する。
【背景技術】
【０００２】
現在、スーパーコンピュータでは、単精度と倍精度と拡張精度の３種のデータを浮動小数点演算する必要がある。特に、ベクトル演算などでは、１つの演算処理が浮動小数点演算の多数回の繰り返しを含むため、各々の浮動小数点演算の短縮が演算処理の高速化に寄与する。また、回路構成を簡単にすることも演算処理の高速化に寄与する。たとえば、特許文献１では、１２８ビットの拡張精度データ幅の演算データを６４ビット幅の上位と下位とに分け、６４ビット幅の演算回路での２回の実行で１つの拡張精度データ幅の演算結果を求める。これにより、拡張精度データ幅の演算を少ないハードウェアにより実行できる。また、特許文献２では、１６バイト幅（＝１２８ビット幅）の演算器を２つの８バイト幅（＝６４ビット幅）に分割する。そして、分割した２つの８バイト幅の演算器で、８バイト幅（＝６４ビット幅）と４バイト幅（（＝３２ビット幅））の演算データの演算を同時に実行できる。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開平０６−１４９５４４号公報
【特許文献２】特開平０９−０９１１１８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、単精度と倍精度と拡張精度の３種のデータを浮動小数点演算する場合にも、演算処理を高速化して演算実行時間を短縮するには、演算を並列に同時実行することが望ましい。また、限られたハードウェア資源を効率よく使用して演算処理を高速化して演算実行時間を短縮することで、業務の効率化とコンピュータシステムの消費電力が抑制できるハードウェアの提供が求められている。
【０００５】
これに対して、上記特許文献１は、倍精度（６４ビット＝８バイト）の演算回路を使って拡張精度（１２８ビット＝１６バイト）の演算を実行するのみであり、いずれの演算もシーケンシャルにしか実行できない。一方、上記特許文献２は、拡張精度（１６バイト＝１２８ビット）の演算器を使って、単精度（４バイト＝３２ビット）と倍精度（８バイト＝６４ビット）の演算を同時に実行可能である。しかし、単精度同士／倍精度同士の並列演算はできない。
【０００６】
本発明の目的は、上述の課題を解決する技術を提供することにある。
【課題を解決するための手段】
【０００７】
上記目的を達成するため、本発明に係る装置は、
第１ビット幅の数値及び前記第１ビット幅より短い第２ビット幅の数値に対してそれぞれが浮動小数点演算を行なう複数の演算回路を有する浮動小数点演算回路であって、
演算命令に基づいて、前記第１ビット幅の演算を行なう第１演算回路が休止することを判定する休止判定手段と、
前記休止判定手段が前記第１演算回路が休止すると判定した場合に、前記第１演算回路を前記第２ビット幅の数値の演算を行なうよう制御し、前記第２ビット幅の数値の演算を、前記第１演算回路と前記第２ビット幅の数値を演算する第２演算回路とにより並列に実行する演算制御手段と、
を備えることを特徴とする。
【０００８】
上記目的を達成するため、本発明に係る装置は、
拡張されたビット幅の数値の浮動小数点演算を行なう浮動小数点演算回路であって、
当該浮動小数点演算回路への演算命令が、拡張されたビット幅の数値に対する演算であるか否かを判定する演算判定手段と、
前記演算判定手段が拡張されたビット幅の数値に対する演算であると判定した場合は、前記拡張されたビット幅の数値の浮動小数点演算を実行し、前記演算判定手段が拡張されたビット幅の数値に対する演算でないと判定した場合は、前記拡張されたビット幅より短いビット幅の数値の浮動小数点演算を実行する演算実行手段と、
を備えることを特徴とする。
【０００９】
上記目的を達成するため、本発明に係る装置は、
拡張されたビット幅の数値の浮動小数点演算を行なう浮動小数点演算回路であって、
入力される演算命令を格納する演算命令レジスタと、
前記演算命令レジスタの出力信号の値に基づいて当該浮動小数点演算回路による拡張されたビット幅の浮動小数点演算を休止するか否かを検出して、演算実行中フラグを生成する演算実行中フラグ生成回路と、
前記演算実行中フラグ生成回路が生成した前記演算実行中フラグを格納する実行中フラグ格納レジスタと、
入力される拡張されたビット幅の被演算データの符号、指数及び仮数と演算データの符号、指数及び仮数とを格納する第１レジスタ群と、
入力される拡張されないビット幅の被演算データの符号、指数及び仮数と演算データの符号、指数及び仮数とを格納する第２レジスタ群と、
前記演算実行中フラグが当該浮動小数点演算回路による拡張されたビット幅の浮動小数点演算を実行することを示す場合には前記第１レジスタ群を選択し、前記演算実行中フラグが当該浮動小数点演算回路による拡張されたビット幅の浮動小数点演算を休止することを示す場合には前記第２レジスタ群を選択する符号、指数及び仮数選択回路と、
演算命令と被演算データの符号と演算データの符号とに基づいて、演算結果の符号を生成する符号生成回路と、
演算命令と被演算データの符号と演算データの符号とに基づいて、被演算データの指数と演算データの指数とを調整して演算結果の指数を生成する指数生成回路と、
前記指数生成回路における前記被演算データの指数と演算データの指数との調整に対応して、被演算データの仮数と演算データの仮数との桁合わせを行なって演算結果の仮数を生成する仮数演算回路と、
前記演算結果の指数と仮数とを整合する整合回路と、
前記演算結果の符号と、前記整合回路で整合された前記演算結果の指数と仮数とを格納する演算結果格納レジスタとを備え、
前記実行中フラグ格納レジスタに格納された前記実行中フラグと、前記演算結果格納レジスタに格納された前記演算結果の符号、指数及び仮数とを、浮動小数点演算結果として出力することを特徴とする。
【００１０】
上記目的を達成するため、本発明に係る装置は、
異なるビット幅の数値に対してそれぞれ浮動小数点演算を行なう複数の演算回路を有する浮動小数点演算回路を備えたコンピュータであって、
第１演算回路が、
当該第１演算回路への演算命令が、第１ビット幅の数値に対する演算であるか前記第１ビット幅より短い第２ビット幅の数値に対する演算であるかを判定する演算判定手段と、
前記演算判定手段が前記第１ビット幅の数値に対する演算であると判定した場合に、前記第１ビット幅の数値の浮動小数点演算を実行し、前記演算判定手段が前記第２ビット幅の数値に対する演算であると判定した場合に、前記第２ビット幅の数値の浮動小数点演算を実行する演算実行手段と、を有し、
第２演算回路が、前記第２ビット幅の数値の浮動小数点演算を実行する回路であって、
前記浮動小数点演算回路への演算命令が前記第１ビット幅の数値に対する演算が休止することを示す場合には、前記第２ビット幅の数値の浮動小数点演算を前記第１演算回路と前記第２演算回路とにより並列に実行することを特徴とする。
【００１１】
上記目的を達成するため、本発明に係る方法は、
異なるビット幅の数値に対してそれぞれ浮動小数点演算を行なう複数の演算回路を有する浮動小数点演算回路を備えたコンピュータの演算制御方法であって、
演算プログラムを記憶手段から読み出す読出ステップと、
前記演算プログラムの命令を解析して、前記浮動小数点演算回路において演算すべき数値が第１ビット幅か前記第１ビット幅より短い第２ビット幅かを判定する判定ステップと、
前記浮動小数点演算回路において演算すべき数値が第１ビット幅の場合に、前記第１ビット幅の演算を行なう第１演算回路に前記第１ビット幅の演算命令と演算すべき数値とを提供して、前記第１ビット幅の演算結果を前記第１演算回路から取得する第１演算ステップと、
前記浮動小数点演算回路において演算すべき数値が第２ビット幅の場合に、前記第１ビット幅の演算を行なう第１演算回路と前記第２ビット幅の演算を行なう第２演算回路とに並列の前記第２ビット幅の演算命令と演算すべき数値とを提供して、前記第２ビット幅の演算結果を前記第１演算回路と前記第２演算回路から並列に取得する第２演算ステップと、
を含むことを特徴とする。
【００１２】
上記目的を達成するため、本発明に係るプログラムは、
異なるビット幅の数値に対してそれぞれ浮動小数点演算を行なう複数の演算回路を有する浮動小数点演算回路を備えたコンピュータの演算制御プログラムであって、
演算プログラムを記憶手段から読み出す読出ステップと、
前記演算プログラムの命令を解析して、前記浮動小数点演算回路において演算すべき数値が第１ビット幅か前記第１ビット幅より短い第２ビット幅かを判定する判定ステップと、
前記浮動小数点演算回路において演算すべき数値が第１ビット幅の場合に、前記第１ビット幅の演算を行なう第１演算回路に前記第１ビット幅の演算命令と演算すべき数値とを提供して、前記第１ビット幅の演算結果を前記第１演算回路から取得する第１演算ステップと、
前記浮動小数点演算回路において演算すべき数値が第２ビット幅の場合に、前記第１ビット幅の演算を行なう第１演算回路と前記第２ビット幅の演算を行なう第２演算回路とに並列の前記第２ビット幅の演算命令と演算すべき数値とを提供して、前記第２ビット幅の演算結果を前記第１演算回路と前記第２演算回路から並列に取得する第２演算ステップと、をコンピュータに実行させることを特徴とする。
【発明の効果】
【００１３】
本発明によれば、拡張精度演算回路と単・倍精度演算回路とにより単精度同士／倍精度同士の並列演算を実現し、演算処理を高速化して演算実行時間を短縮できる。
【図面の簡単な説明】
【００１４】
【図１】本発明の第１実施形態の浮動小数点演算回路の構成を示すブロック図である。
【図２Ａ】本発明の第２実施形態に係る浮動小数点演算回路を含むコンピュータの構成を示すブロック図である。
【図２Ｂ】本発明の第２実施形態に係る浮動小数点演算回路を含むコンピュータの演算処理手順を示すフローチャートである。
【図３】本発明の第２実施形態に係る浮動小数点演算回路に含まれる浮動小数点加減算回路の構成を示すブロック図である。
【図４】本発明の第２実施形態に係る浮動小数点加減算回路に含まれる拡張精度データ幅演算回路の構成を示すブロック図である。
【図５】本発明の第２実施形態に係る浮動小数点加減算回路に含まれる単精度・倍精度データ幅演算回路の構成を示すブロック図である。
【図６】本発明の第２実施形態に係る科学演算データ形式の一例を示す図である。
【図７】本発明の第２実施形態に係る演算命令生成の論理を示す図である。
【図８】本発明の第２実施形態に係る符号データ選択の論理を示す図である。
【図９】本発明の第２実施形態に係る指数データ選択の論理を示す図である。
【図１０】本発明の第２実施形態に係る仮数データ選択の論理を示す図である。
【図１１】本発明の第２実施形態に係る指数大小比較信号生成の論理を示す図である。
【図１２】本発明の第２実施形態に係る基準指数選択の論理を示す図である。
【図１３】本発明の第２実施形態に係る仮数選択回路の構成を示すブロック図である。
【図１４】本発明の第２実施形態に係る被加算仮数データ選択の論理を示す図である。
【図１５】本発明の第２実施形態に係る加算仮数と反転データ選択の論理を示す図である。
【図１６】本発明の第２実施形態に係る加算仮数データ選択の論理を示す図である。
【図１７】本発明の第２実施形態に係る中間符号生成の論理を示す図である。
【図１８】本発明の第２実施形態に係る符号生成の論理を示す図である。
【図１９】本発明の第２実施形態に係る拡張精度データ幅演算回路における拡張精度加算時の各レジスタのデータ値例を示す図である。
【図２０】本発明の第２実施形態に係る拡張精度データ幅演算回路における拡張精度加算時の各信号線のデータ値例を示す図である。
【図２１】本発明の第２実施形態に係る拡張精度データ幅演算回路における倍精度加算時の各レジスタのデータ値例を示す図である。
【図２２】本発明の第２実施形態に係る拡張精度データ幅演算回路における倍精度加算時の各信号線のデータ値例を示す図である。
【発明を実施するための形態】
【００１５】
以下に、図面を参照して、本発明の実施の形態について例示的に詳しく説明する。ただし、以下の実施の形態に記載されている構成要素はあくまで例示であり、本発明の技術範囲をそれらのみに限定する趣旨のものではない。
【００１６】
［第１実施形態］
本発明の第１実施形態としての浮動小数点演算回路１００について、図１を用いて説明する。図１において、浮動小数点演算回路１００は、第１演算回路１０１と、第２演算回路１０２と、休止判定部１０３と、演算制御部１０４とを含む。第１演算回路１０１は、第１ビット幅の数値と第１ビット幅より短い第２ビット幅の数値とのいずれかを選択可能に演算する回路である。第２演算回路１０２は、第２ビット幅を演算する回路である。休止判定部１０３は、演算命令を解析して、演算命令が第１演算回路１０１による第１ビット幅の数値の演算を休止することを判定する。演算制御部１０４は、休止判定部１０３からの判定が第１ビット幅の数値の演算を休止することを示す場合に、第２ビット幅の数値を第１演算回路１０１に入力すると共に、第１演算回路１０１を第２ビット幅の数値の演算を行なうようする。
【００１７】
本実施形態によれば、第１演算回路１０１による第１ビット幅の数値の演算が休止している時には、第１ビット幅より短い第２ビット幅の数値の演算を第１演算回路１０１と第２演算回路１０２で並列して実行できる。したがって、演算処理を高速化して演算実行時間が短縮される。
【００１８】
［第２実施形態］
第２実施形態は、本実施形態の浮動小数点演算回路の回路構成と、この浮動小数点演算回路を使用した科学演算回路及びコンピュータの構成を示す。本実施形態では、たとえば、スーパーコンピュータのベクトル演算において、演算処理を高速化して演算実行時間を短縮することで、業務の効率化とコンピュータシステムの消費電力が抑制できる。
【００１９】
〈第２実施形態の浮動小数点演算回路を使用したコンピュータの構成〉
図２Ａは、第２実施形態の浮動小数点演算回路４１、第２実施形態の浮動小数点演算回路４１を使用した科学演算回路４０、第２実施形態の浮動小数点演算回路４１を使用したコンピュータ２００のそれぞれの構成を示すブロック図である。
【００２０】
（コンピュータの概略構成）
図２Ａにおいて、コンピュータ２００は、科学演算回路４０と、主記憶装置４３と、入出力制御装置４４と、外部記憶装置４５とを含む。主記憶装置４３は、科学演算プログラムと図６に標準指数データ方式で示した単精度６０１／倍精度６０２／拡張精度６０３の３種の科学演算データ及び科学演算命令を記憶する。主記憶装置４３は、演算結果の一時記憶としても使用される。科学演算回路４０は、主記憶装置４３より科学演算プログラムを読み出し、命令を解析し、命令を実行し、前記実行結果を主記憶装置４３へ出力する。入出力制御装置４４は、科学演算回路４０が解析した命令により外部記憶装置４５への科学演算結果の入出力を制御する。外部記憶装置４５は、入出力制御装置４４から送られてくるデータを命令にしたがって保存し、入出力制御装置４４へ記憶しているデータを送る。ここで、信号線Ｌ１１０は科学演算回路４０と主記憶装置４３との間の入出力信号のための信号線である。また、信号線Ｌ１１１は科学演算回路４０と入出力制御装置４４との間の入出力信号、Ｌ１１２は入出力制御装置４４と外部記憶装置４５との間の入出力信号である。
【００２１】
（科学演算回路の構成）
図２Ａにおいて、科学演算回路４０は、浮動小数点演算回路４１と命令発行制御回路４２とを含む。命令発行制御回路４２は、主記憶装置４３から読み込んだ科学演算データ及び科学演算命令を解析する。そして、浮動小数点演算回路４１に、演算精度と演算種類とを示す演算命令と、被演算データ、演算データを発行し、浮動小数点演算回路４１による演算結果を受け取って主記憶装置４３又は外部記憶装置４５に記憶する。たとえば、演算がベクトル演算のように同じ演算を繰り返す場合は、科学演算回路４０で繰り返される。ここで、信号線Ｌ１００〜Ｌ１０６は命令発行制御回路４２から浮動小数点演算回路４１への入力信号用の信号線、信号線Ｌ４００とＬ４０１は浮動小数点演算回路４１から命令発行制御回路４２への出力信号用の信号線である。信号線Ｌ１００は、演算命令である。信号線Ｌ１０１〜Ｌ１０６のうち、信号線Ｌ１０１〜Ｌ１０３は、単・倍精度又は拡張精度の演算をシーケンスに実行する場合に入力される数値の符号、指数及び仮数である。信号線Ｌ１０４〜Ｌ１０６は、単・倍精度の演算を並列して（パラレルに）実行する場合に、信号線Ｌ１０１〜Ｌ１０３と並列に入力される単・倍精度の数値の符号、指数及び仮数である。Ｌ４００には単精度・倍精度データ幅演算回路からの演算結果が出力され、信号線Ｌ４０１には拡張精度データ幅演算回路からの演算結果が出力される。本実施形態では、信号線Ｌ１００の演算命令が拡張精度データ幅演算回路を休止する命令であった場合には、信号線Ｌ４００とＬ４０１の両方から２つの単・倍精度の演算結果が並列に出力される。
【００２２】
（命令発行制御回路の動作手順）
図２Ｂは、命令発行制御回路４２の動作手順を示すフローチャートである。なお、かかる命令発行制御回路４２の動作は、ハードウェア、ソフトウェア、ファームウエア、マイクロプログラムなど、どのように構成されてもよい。したがって、図２Ｂのフローチャートは、プログラムの流れを示すのみではなく、ハードウェアの処理をも含むものである。また、実際には命令発行制御回路４２から信号線Ｌ１０１〜Ｌ１０６に被演算データと演算データとが順次出力されてそれぞれのレジスタに保持されるが、ここでは煩雑であるのでその詳細な説明は省いている。また、本例では信号線Ｌ１００上の演算命令のデータ幅が２ビットとして、拡張精度演算休止の命令と単・倍精度の演算命令とを別個に発行している。しかし、信号線Ｌ１００のデータ幅が３ビット以上であれば、拡張精度演算休止の命令と単・倍精度の演算命令とを組み合わせて信号線Ｌ１００に同時に出力できる。
【００２３】
まず、ステップＳ２０１において、主記憶装置４３から演算プログラムを読み出す。次に、ステップＳ２０３において、演算プログラムの命令を解析する。ステップＳ２０５において、解析の結果が単・倍精度演算か／拡張精度演算かの演算判定を行なう。
【００２４】
判定結果が単・倍精度演算である場合は、拡張精度演算回路は休止すると判断してステップＳ２０７に進む。ステップＳ２０７において、信号線Ｌ１００に拡張精度演算休止を示す命令を提供する。ステップＳ２０９においては信号線Ｌ１００に単・倍精度演算命令を発行して、信号線Ｌ１０４〜Ｌ１０６に信号線Ｌ１０１〜Ｌ１０３と並列に単・倍精度データを提供する。ステップＳ２１１においては、信号線Ｌ４００とＬ４０１とから２つの単・倍精度演算結果を取得する。ステップＳ２１３においては繰り返し演算か否かを判定し、繰り返しならばステップＳ２０９に戻ってステップＳ２０９からＳ２１３を繰り返す。繰り返しで無ければステップＳ２２１に進む。
【００２５】
一方、ステップＳ２０５の判定で判定結果が拡張精度演算であれば、ステップＳ２１５においては信号線Ｌ１００に拡張精度演算命令を発行して、信号線Ｌ１０１〜Ｌ１０３に拡張精度データを出力する。ステップＳ２１７においては、信号線Ｌ４０１から１つの拡張精度演算結果を取得する。ステップＳ２１９においては繰り返し演算か否かを判定し、繰り返しならばステップＳ２１５に戻ってステップＳ２１５からＳ２１９を繰り返す。繰り返しで無ければステップＳ２２１に進む。
【００２６】
ステップＳ２２１において演算結果を主記憶装置４３に記憶する。あるいは入出力制御装置４４を介して外部記憶装置４５に記憶してもよい。ステップＳ２２３においては演算プログラムの終了か否かを判定し、終了でなければステップＳ２０３に戻って次の命令を処理する。演算プログラムの終了であれば処理を終了する。そして、次の演算プログラムの主記憶装置４３からの読出しに始まる一連の流れが続く。
【００２７】
なお、図２Ｂの手順は一例であって、これに限定されない。
【００２８】
（浮動小数点演算回路の構成）
図２Ａにおいて、浮動小数点演算回路４１は、浮動小数点加減算回路４６と、浮動小数点乗算回路４７と、浮動小数点除算回路４８と、浮動小数点演算結果選択回路４９とを含む。浮動小数点加減算回路４６は、命令発行制御回路４２が浮動小数点演算回路４１に出力する命令のうち加減算命令を実行する。浮動小数点乗算回路４７は、命令発行制御回路４２が浮動小数点演算回路４１に出力する命令のうち乗算命令を実行する。浮動小数点除算回路４８は、命令発行制御回路４２が浮動小数点演算回路４１に出力する命令のうち除算命令を実行する。浮動小数点演算結果選択回路４９は、各演算回路からの演算結果を選択して命令発行制御回路４２に出力する。ここで、信号線Ｌ３００〜Ｌ３０５とＬ３１０は、それぞれの回路を接続する信号線を表している。信号線Ｌ３００，Ｌ３０２，Ｌ３０４は単・倍精度の演算回路の演算結果を出力する信号線であり、信号線Ｌ３０１，Ｌ３０３，Ｌ３０５は拡張精度の演算回路の演算結果を出力する信号である。信号線Ｌ３１０は、信号線Ｌ１００の演算命令を解析して得られた拡張精度の演算回路が休止するか否かを出力する信号線である。本例では、拡張精度の演算回路が休止する場合に信号線Ｌ３１０に"１（ハイ）"が出力され、拡張精度の演算回路が演算する場合に信号線Ｌ３１０に"０（ロー）"が出力される。浮動小数点演算結果選択回路４９により演算結果が選択されて信号線Ｌ４００とＬ４０１に出力される。浮動小数点演算結果選択回路４９においては、拡張精度の演算回路が休止して信号線Ｌ３１０が"１"である場合、信号線Ｌ４００には信号線Ｌ３００，Ｌ３０２，Ｌ３０４からの単・倍精度の演算結果が出力される。同時に、信号線Ｌ４０１には信号線Ｌ３０１，Ｌ３０３，Ｌ３０５からの単・倍精度の演算結果が並列に出力される。一方、拡張精度の演算回路が演算を実行する信号線Ｌ３１０が"０"である場合、信号線Ｌ４０１に信号線Ｌ３０１，Ｌ３０３，Ｌ３０５からの拡張精度の演算結果が出力される。
【００２９】
（浮動小数点加減算回路の構成）
図３は、第２実施形態に係る浮動小数点演算回路４１に含まれる浮動小数点加減算回路４６の構成を示すブロック図である。なお、本実施形態では、以下浮動小数点加減算回路４６の構成と動作を代表して説明する。しかし、浮動小数点乗算回路４７及び浮動小数点除算回路４８においても、単精度・倍精度データ幅用と拡張精度データ幅用との２つの演算回路を備えている。そして、拡張精度データ幅用の演算回路が拡張精度演算の休止中に単精度・倍精度データ幅の演算を並列に行なうことは同様であり、演算の種類が異なるのみで構成の特徴は変わらない。従って、本明細書では、浮動小数点加減算回路４６などをも浮動小数点演算回路と総称している。
【００３０】
図３の浮動小数点加減算回路４６は、単精度・倍精度データ幅演算回路１１と拡張精度データ幅演算回路１２とを有する。図２Ａに示したように、浮動小数点加減算回路４６には、単精度・倍精度データ幅演算回路１１と拡張精度データ幅演算回路１２とがそれぞれの加減算を行なう場合は、信号線Ｌ１００に"００"や"１１"でないそれぞれの演算命令が入力される。本例では、演算命令の"００"や"１１"は、拡張精度データ幅演算回路１２の休止を示す命令である。その場合には、信号線Ｌ１０１〜Ｌ１０３を使って、それぞれの被演算データと演算データとが入力される。単精度・倍精度データ幅演算回路１１と拡張精度データ幅演算回路１２との演算結果は、それぞれ信号線Ｌ３００又はＬ３０１から出力される。信号線Ｌ３１０からは信号線Ｌ１００に"００"や"１１"が入力されなかったことを示す"０（ロー）"が出力される。
【００３１】
一方、拡張精度データ幅演算回路１２が拡張精度演算を休止する場合は、信号線Ｌ１００に"００"又は"１１"（拡張精度データ幅演算回路１２の休止を示す命令）が入力される。その場合には、信号線Ｌ１０１〜Ｌ１０３を使って、単精度・倍精度データ幅演算回路１１に単精度・倍精度の被演算データと演算データとが入力される。同時に、信号線Ｌ１０４〜Ｌ１０６を使って、拡張精度データ幅演算回路１２に単精度・倍精度の被演算データと演算データとが入力される。単精度・倍精度データ幅演算回路１１と拡張精度データ幅演算回路１２との単精度・倍精度データの演算結果は、信号線Ｌ３００及びＬ３０１から並列に出力される。信号線Ｌ３１０からは信号線Ｌ１００に"００"又は"１１"が入力されたことを示す"１（ハイ）"が出力される。この信号線Ｌ３１０の"１（ハイ）"は、図２Ａの浮動小数点演算結果選択回路４９に対して、信号線Ｌ４００とＬ４０１に単精度・倍精度データ幅演算回路１１と拡張精度データ幅演算回路１２とが並列に演算した演算結果を出力させる。
【００３２】
（拡張精度データ幅演算回路の構成）
図４は、第２実施形態に係る浮動小数点加減算回路４６に含まれる拡張精度データ幅演算回路１２の構成を示すブロック図である。拡張精度データ幅演算回路１２は、図６の６０３に示すフォーマットの拡張精度演算データの演算を行なうが、図６の６０１や６０２に示すフォーマットの単精度・倍精度演算データの演算を行なうことも可能である。従って、図４の拡張精度データ幅演算回路１２の各レジスタや各回路は、拡張精度演算データの演算と単精度・倍精度演算データの演算とを実行可能に構成されており、その詳細は省略する。なお、以下の説明では、各回路の機能及び動作順を考慮している。また、拡張精度データ幅演算回路１２の減算における動作は加算と符号を変えれば実質的に同様であるので、以下の説明は加算を中心に説明する。すなわち、以下で使用する文言「加算」は、特に図７〜図１７において「加減算」を意味する。従って、本明細書では、特徴的な構成を有する拡張精度データ幅演算回路１２をも浮動小数点演算回路と総称している。
【００３３】
（Ａ：入力データ用レジスタと出力データ用レジスタ）
拡張精度データ幅演算回路１２は、命令発行制御回路４２から信号線Ｌ１００〜Ｌ１０６によって入力された信号を保持するレジスタ群を有する。レジスタ１は、信号線Ｌ１００からの演算命令を保持する演算命令レジスタである。レジスタ２〜１３は、信号線Ｌ１０１〜Ｌ１０６からの被演算データ及び演算データを保持するレジスタである。このうち、信号線Ｌ１０１〜Ｌ１０３に接続されたレジスタ２，４，６，８，１０，１２は、拡張精度データ幅演算回路１２が拡張精度幅の加算を行なう場合に、拡張幅データを保持する第１レジスタ群である。第１レジスタ群は、さらに、被加算データの符号、指数、仮数を保持するレジスタ２，６，１０と、加算データの符号、指数、仮数を保持するレジスタ４，８，１２からなる。一方、信号線Ｌ１０４〜Ｌ１０６に接続されたレジスタ３，５，７，９，１１，１３は、拡張精度データ幅演算回路１２が単精度・倍精度幅の加算を行なう場合に、単精度・倍精度幅データを保持する第２レジスタ群である。第２レジスタ群は、さらに、被加算データの符号、指数、仮数を保持するレジスタ３，７，１１と、加算データの符号、指数、仮数を保持するレジスタ５，９，１３からなる。
【００３４】
一方、拡張精度データ幅演算回路１２は、浮動小数点演算結果選択回路４９に対して信号線Ｌ３０１，Ｌ３１０から出力する信号を保持するレジスタ１４と１５とを有する。レジスタ１４は、演算結果の符号、指数、仮数を保持する演算結果格納レジスタである。レジスタ１５は、信号線Ｌ１００から入力されてレジスタ１に保持された演算命令から、演算実行中フラグ生成回路１６によって生成された演算実行中フラグを保持する演算実行中フラグ格納レジスタである。この演算実行中フラグ生成回路１６における、信号線Ｌ２００のレジスタ１からの演算命令を入力とし、信号線Ｌ２５７の演算実行フラグを出力とする論理を含む、演算命令に基づく論理７００を図７に示す。図７の演算命令７０１に基づいて演算実行フラグ７０２が生成される。図７に示すように、演算命令が"００"又は"１１"の場合は演算実行フラグに"１"が出力されて、拡張精度データ幅演算回路１２における拡張精度の演算休止が示される。したがって、レジスタ１５は演算実行フラグ格納レジスタとして機能する。
【００３５】
（Ｂ：単・倍精度／拡張精度の入力選択回路）
演算実行中フラグ生成回路１６から出力する信号線Ｌ２５７の演算実行中フラグは、演算符号選択回路１７、演算指数選択回路１８及び演算仮数選択回路１９に入力される。演算符号選択回路１７、演算指数選択回路１８及び演算仮数選択回路１９は、信号線Ｌ２５７の演算実行中フラグに従って入力された符号、指数、仮数を選択して演算回路群に伝達する。
【００３６】
演算符号選択回路１７には、レジスタ２〜５からそれぞれ信号線Ｌ２４０〜Ｌ２４３に出力された被加算データ符号と加算データ符号とが入力される。演算符号選択回路１７は、信号線Ｌ２５７の演算実行中フラグによる図８に示す論理８００に従って、入力された符号を選択して信号線Ｌ２５３とＬ２５４とに出力する。演算実行中フラグが"０"の場合は、８０１で示すように、レジスタ２及び４からそれぞれ信号線Ｌ２４０及びＬ２４１に出力された拡張精度の被加算データ符号と加算データ符号とを選択して、信号線Ｌ２５３とＬ２５４に出力する。一方、演算実行中フラグが"１"の場合は、８０２で示すように、レジスタ３及び５からそれぞれ信号線Ｌ２４２及びＬ２４３に出力された単精度・倍精度の被加算データ符号と加算データ符号とを選択して、信号線Ｌ２５３とＬ２５４に出力する。
【００３７】
演算指数選択回路１８には、レジスタ６〜９からそれぞれ信号線Ｌ２４４〜Ｌ２４７に出力された被加算指数データと加算指数データとが入力される。演算指数選択回路１８は、信号線Ｌ２５７の演算実行中フラグによる図９に示す論理９００に従って、入力された指数データを選択して信号線Ｌ２５５とＬ２５６とに出力する。演算実行中フラグが"０"の場合は、９０１で示すように、レジスタ６及び８からそれぞれ信号線Ｌ２４４及びＬ２４５に出力された拡張精度の被加算指数データと加算指数データとを選択して、信号線Ｌ２５５とＬ２５６に出力する。一方、演算実行中フラグが"１"の場合は、９０２で示すように、レジスタ７及び９からそれぞれ信号線Ｌ２４６及びＬ２４７に出力された単精度・倍精度の被加算指数データと加算指数データとを選択して、信号線Ｌ２５５とＬ２５６に出力する。
【００３８】
演算仮数選択回路１９には、レジスタ１０〜１３からそれぞれ信号線Ｌ２４８〜Ｌ２５１に出力された被加算仮数データと加算仮数データとが入力される。演算仮数選択回路１９は、信号線Ｌ２５７の演算実行中フラグによる図１０に示す論理１０００に従って、入力された仮数データを選択して信号線Ｌ２５８とＬ２５９とに出力する。演算実行中フラグが"０"の場合は、１００１で示すように、レジスタ１０及び１２からそれぞれ信号線Ｌ２４８及びＬ２４９に出力された拡張精度の被加算仮数データと加算仮数データとを選択して、信号線Ｌ２５８とＬ２５９に出力する。一方、演算実行中フラグが"１"の場合は、１００２で示すように、レジスタ１１及び１３からそれぞれ信号線Ｌ２５０及びＬ２５１に出力された単精度・倍精度の被加算仮数データと加算仮数データとを選択して、信号線Ｌ２５８とＬ２５９に出力する。
【００３９】
（Ｃ：演算命令解析回路）
レジスタ１に保持された演算命令は、信号線Ｌ２００により演算命令解析回路２０に入力される。演算命令解析回路２０は、図７の論理７００に従って、信号線Ｌ２００の演算命令と信号線Ｌ２５３の被加算データ符号と信号線Ｌ２５４の加算データ符号とに基づいて、演算命令解析結果を信号線Ｌ２０７から出力する。図７に示すように、演算命令解析結果の"０"は加算、"１"は減算であり、仮数選択回路２５の制御に使用される。
【００４０】
（Ｄ：指数選択回路と指数調整回路）
指数大小比較回路２１は、演算指数選択回路１８から信号線Ｌ２５５とＬ２５６に出力された被加算指数データと加算指数データとの大小を比較する。図１１は、指数大小比較回路２１における指数データと信号線Ｌ２１１に出力される値との論理１１００を示す図である。信号線Ｌ２５５に出力された被加算指数データが信号線Ｌ２５６に出力された加算指数データよりも大きければ、信号線Ｌ２１１に"１"が出力される。信号線Ｌ２５５に出力された被加算指数データが信号線Ｌ２５６に出力された加算指数データよりも大きく無ければ、信号線Ｌ２１１に"０"が出力される。信号線Ｌ２１１の値は、基準指数選択回路２２の選択と、中間符号生成回路２４の中間符号生成と、仮数選択回路２５の制御に使用される。
【００４１】
基準指数選択回路２２は、被加算仮数データと加算仮数データとの桁合わせをどちらに合わせて行なうかを決定する。図１２は、基準指数選択回路２２における信号線Ｌ２１１に出力される値に対応して信号線Ｌ２０９に出力される指数データの論理１２００を示す図である。指数大小比較回路２１からの信号線Ｌ２１１の出力値が"０"の場合は、被加算指数データが基準となり被加算指数データが信号線Ｌ２０９に出力される。指数大小比較回路２１からの信号線Ｌ２１１の出力値が"１"の場合は、加算指数データが基準となり加算指数データが信号線Ｌ２０９に出力される。
【００４２】
シフト量算出回路２３は、演算指数選択回路１８が選択したより大きい指数と選択されなかったより小さい指数の差を求めて、小さい仮数データを右シフトして桁合わせする右シフト量を求めて、信号線Ｌ２１０により桁合わせ右シフト回路２７に送る。
【００４３】
（Ｅ：仮数演算回路）
仮数選択回路２５には、演算仮数選択回路１９で選択されて信号線Ｌ２５８とＬ２５９に出力された被加算仮数と加算仮数とが入力されて、被加算仮数と加算仮数とを信号線Ｌ２１２とＬ２１３のいずれに出力するかを選択する。仮数選択回路２５の選択は、指数大小比較回路２１から信号線Ｌ２１１に出力された被加算指数と加算指数との大小比較結果と、演算命令解析回路２０から信号線Ｌ２０７に出力された演算命令解析結果とに基づいて、行なわれる。すなわち、指数の小さい方を桁合わせが必要な仮数として出力し、他方を桁合わせが必要ない仮数として出力する。
【００４４】
図１３は、仮数選択回路２５の内部構成を示す図である。仮数選択回路２５は、仮数Ａ選択回路５０と、仮数Ｂ選択回路５１と、仮数Ｂ反転選択回路５２とからなる。
【００４５】
仮数Ａ選択回路５０は、信号線Ｌ２１２に出力する仮数を、信号線Ｌ２１１の被加算指数と加算指数との大小比較結果に基づいて被加算仮数と加算仮数とのうち指数の小さい仮数を選択する。図１４は、仮数Ａ選択回路５０の論理１４００を示す図である。仮数Ｂ選択回路５１と仮数Ｂ反転選択回路５２とは、信号線Ｌ２１３に出力する仮数を、信号線Ｌ２１１の被加算指数と加算指数との大小比較結果と、信号線Ｌ２０７の演算命令解析結果とに基づいて被加算仮数と加算仮数とのうち指数の大きい仮数を選択する。図１５は、仮数Ｂ選択回路５１の論理１５００を示す図である。仮数Ｂ選択回路５１から出力される信号線Ｌ２８０には選択された仮数がそのまま出力され、信号線Ｌ２８１には選択された仮数を反転したデータが出力される。仮数Ｂ反転選択回路５２は、仮数Ｂ選択回路５１から出力された信号線Ｌ２８０の仮数と信号線Ｌ２８１の反転仮数とを信号線Ｌ２１１の演算命令解析結果に基づいて選択し、信号線Ｌ２１３に出力する。図１６は、仮数Ｂ反転選択回路５２の論理１６００を示す図である。演算命令解析結果が"０"（加算）の場合は信号線Ｌ２８０の反転しない仮数を信号線Ｌ２１３に出力し、演算命令解析結果が"１"（減算）の場合は信号線Ｌ２８０の反転した仮数を信号線Ｌ２１３に出力する。
【００４６】
桁合わせ右シフト回路２７は、信号線Ｌ２１２から入力された指数の小さな仮数を、シフト量算出回路２３から信号線Ｌ２１０に出力された大小指数の差だけ右シフトして、加減算回路２９で演算する仮数の桁合わせを行なう。加減算回路２９は、桁合わせ右シフト回路２７の桁合わせした信号線Ｌ２１５の仮数データと桁合わせが必要ない信号線Ｌ２１３の仮数データとを加算した加減算結果を、信号線Ｌ２１６に出力する。同時に、指数が同じ数値で、小さい被加算仮数から大きい加算仮数を減算した場合を検出して、信号線Ｌ２２０にその結果を出力する。指数が同じ数値で、小さい被加算仮数から大きい加算仮数を減算した場合に、"１"が出力される。
【００４７】
０桁数チェック回路２８は、加減算回路２９が信号線Ｌ２１６に出力する演算結果の上位における"０"データの有無を検出して信号線Ｌ２１７に出力する。そして、正規化左シフト回路３１は、０桁数チェック回路２８が信号線Ｌ２１７出力した数値分を左シフトして演算結果の仮数を正規化し、演算結果の仮数として信号線Ｌ２１８に出力する。信号線Ｌ２１８の正規化された演算結果の仮数は、レジスタ１４に送られて保持される。
かかる正規化左シフト回路３１と０桁数チェック回路２８は、演算結果の仮数と指数とを整合する整合回路として機能する。
【００４８】
（Ｆ：指数生成回路）
指数生成減算回路３０は、基準指数選択回路２２から信号線Ｌ２０９に出力された大きな指数を入力する。そして、０桁数チェック回路２８が信号線Ｌ２１７に出力した数値分だけ演算結果が正規化左シフト回路３１で左シフトされるのに合わせて、信号線Ｌ２０９の指数から信号線Ｌ２１７の数値を減算して、演算結果の指数として信号線Ｌ２１９に出力する。信号線Ｌ２１９の生成符号は、レジスタ１４に送られて保持される。
【００４９】
（Ｇ：符号生成回路）
演算符号選択回路１７から信号線Ｌ２５３とＬ２５４に出力された被加算データ符号と加算データ符号とは、中間符号生成回路２４に入力される。中間符号生成回路２４は、指数大小比較回路２１からの信号線Ｌ２１１の値に基づいて、信号線Ｌ２５３とＬ２５４から入力された被加算データ符号と加算データ符号とのいずれかを選択して、信号線Ｌ２０８に出力する。図１７は、中間符号生成回路２４の論理１７００を示す図である。中間符号生成回路２４は、大きなデータの符号を選択して出力する。すなわち、信号線Ｌ２１１の値が"０"（加算指数データが被加算指数データ以上）の場合は、加算データ符号を信号線Ｌ２０８に出力する。一方、信号線Ｌ２１１の値が"１"（加算指数データが被加算指数データより小さい）の場合は、被加算データ符号を信号線Ｌ２０８に出力する。
【００５０】
符号生成回路２６は、中間符号生成回路２４が出力した信号線Ｌ２０８の中間符号を入力する。そして、加減算回路２９の指数が同じ数値で、小さい被加算仮数から大きい加算仮数を減算した場合を検出して信号線Ｌ２２０に出力した結果に基づいて、中間符号を調整する。図１８は、符号生成回路２６の論理１８００を示す図である。信号線Ｌ２２０の符号反転信号が"１"の場合に、中間符号が反転されて生成符号となる。符号生成回路２６は、生成した生成符号を演算結果の符号として信号線Ｌ２１４に出力する。信号線Ｌ２１４の生成符号は、レジスタ１４に送られて保持される。
【００５１】
図４の拡張精度データ幅演算回路１２の構成により、拡張精度データ幅演算回路１２で拡張精度演算が休止中に単・倍精度演算が実行可能となる。すなわち、信号線Ｌ１００から入力された演算命令が拡張精度演算であれば、信号線Ｌ１０１〜Ｌ１０３から入力された拡張精度データ幅の数値データが演算される。そして、レジスタ１４に拡張精度の演算結果が保持され、レジスタ１５に拡張精度演算を示す"０"が保持されて、信号線Ｌ３０１とＬ３１０から出力される。一方、信号線Ｌ１００から入力された演算命令が拡張精度演算でなければ、信号線Ｌ１０４〜Ｌ１０６から入力された他・倍精度データ幅の数値データが演算される。そして、レジスタ１４に単・倍精度の演算結果が保持され、レジスタ１５に単・倍精度演算を示す"１"が保持されて、信号線Ｌ３０１とＬ３１０から出力される。
【００５２】
（単精度・倍精度データ幅演算回路１１の構成）
図５は、第２実施形態に係る浮動小数点加減算回路４６に含まれる単精度・倍精度データ幅演算回路１１の構成を示すブロック図である。図５の単精度・倍精度データ幅演算回路１１は、図４の拡張精度データ幅演算回路１２の構成とは以下の点が異なっている以外は、データ幅の違いはあるが同じ名称の構成要素の機能は同様であるので、詳細な説明は省く。各レジスタ、指数演算に係る回路及び仮数演算に係る回路のデータ幅が、図６に示す単精度・倍精度演算データのフォーマットに適応されるのみである。
【００５３】
図５のレジスタ７０は図４のレジスタ１に相当する。図５のレジスタ７１〜７６は、図４のレジスタ２，４，６，８，１０，１２に相当する。図５の演算命令解析回路７７は、図４の演算命令解析回路２０に相当する。図５の指数大小比較回路８１は、図４の指数大小比較回路２１に相当する。図５の基準指数選択回路７９は、図４の基準指数選択回路２２に相当する。図５のシフト量算出回路８０は、図４のシフト量算出回路２３に相当する。図５の仮数選択回路８２は、図４の仮数選択回路２５に相当する。図５の桁合わせ右シフト回路８４は、図４の桁合わせ右シフト回路２７に相当する。図５の加減算回路８６は、図４の加減算回路２９に相当する。図５の０桁数チェック回路８５は、図４の０桁数チェック回路２８に相当する。図５の正規化左シフト回路８８は、図４の正規化左シフト回路３１に相当する。図５の指数生成減算回路８７は、図４の指数生成減算回路３０に相当する。図５の中間符号生成回路７８は、図４の中間符号生成回路２４に相当する。図５の符号生成回路８３は、図４の符号生成回路２６に相当する。図５のレジスタ８９は図４のレジスタ１４に相当する。
【００５４】
単精度・倍精度データ幅演算回路１１は、拡張精度データ幅演算回路１２の信号線Ｌ１０４〜Ｌ１０６の入力データを保持するレジスタ群、入力データを選択する演算符号選択回路１７、演算指数選択回路１８及び演算仮数選択回路１９を有していない。また、選択信号である演算実行中フラグを生成する演算実行中フラグ生成回路１６とそれを保持するレジスタ１５を有していない。
【００５５】
図４の拡張精度データ幅演算回路１２と図５の単精度・倍精度データ幅演算回路１１とを含む構成により、図３の浮動小数点加減算回路４６は以下のように動作する。拡張精度演算であれば、拡張精度データ幅演算回路１２の信号線Ｌ３０１から拡張精度の演算結果が出力される。一方、単・倍精度演算であれば、単・倍精度データ幅演算回路１１の信号線Ｌ３００から１つの単・倍精度演算結果が出力される。さらに並列に、拡張精度データ幅演算回路１２の信号線Ｌ３０１からもう１つの単・倍精度の演算結果が出力される。拡張精度演算か単・倍精度演算かは信号線Ｌ３１０の信号により示される。
【００５６】
図３の浮動小数点加減算回路４６を含む構成により、図２Ａの科学演算回路４０は以下のように動作する。拡張精度演算か単・倍精度演算かは信号線Ｌ３１０の信号により示される。拡張精度演算であれば、拡張精度データ幅演算回路１２の信号線Ｌ３０１から出力された拡張精度の演算結果が浮動小数点演算結果選択回路４９で選択されて、信号線Ｌ４０１により命令発行制御回路４２に戻される。一方、単・倍精度演算であれば、単・倍精度データ幅演算回路１１の信号線Ｌ３００から出力された１つの単・倍精度演算結果が信号線Ｌ４００により命令発行制御回路４２に戻される。さらに並列に、拡張精度データ幅演算回路１２の信号線Ｌ３０１から出力されたもう１つの単・倍精度の演算結果が信号線Ｌ４０１により命令発行制御回路４２に戻される。
【００５７】
〈第２実施形態の拡張精度データ幅演算回路を有する浮動小数点演算回路の動作手順〉
以下、第２実施形態の浮動小数点演算回路の具体的動作として、浮動小数点加減算回路４６の処理例を説明する。本実施形態では、拡張精度データ幅演算回路１２が休止中であることを条件に、命令発行制御回路４２から拡張精度データ幅演算回路１２に単精度・倍精度演算命令と単精度・倍精度の３２ビット幅又は６４ビット幅のデータとを転送する。これにより、拡張精度データ幅演算回路１２において単精度・倍精度の演算結果を得ることができる。なお、単精度・倍精度データ幅演算回路１１の動作と拡張精度データ幅演算回路１２の単精度・倍精度演算は類似であるので、拡張精度データ幅演算回路１２の拡張精度演算と単精度・倍精度演算について説明する。
【００５８】
（拡張精度データ幅演算回路１２の拡張精度演算時における動作手順）
以下、拡張精度データ幅の演算、"１０００００００００００００００００００００００００００×１６2"（被加算データ）＋"７ＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦ×１６4"（加算データ）、を１回加算する動作を説明する。なお、取り扱う浮動小数点演算データは、所謂、標準指数データ形式と拡張指数データ形式とＩＥＥＥ指数データ形式との内、図６に示す標準指数データ形式（符号データ１ビット、指数データ７ビットを２桁の１６進数表記、仮数データ１１２ビットを２８桁の１６進数表記）を用いて説明する。
【００５９】
図１９と図２０は、かかる動作の説明における各レジスタ値１９００と各信号線の数値２０００とを示す図である。
【００６０】
命令発行制御回路４２からの信号線Ｌ１００の加算命令として、レジスタ１に加算命令の数値"０１"が格納される。また、前述の拡張精度データ幅の被加算データと加算データとより、レジスタ２に被加算データの符号数値"０"（正符号）が、レジスタ４に加算データの符号数値"０"（正符号）が格納される。また、レジスタ６に被加算データの指数値"０２"が、レジスタ８に加算データの指数値"０４"が格納される。また、レジスタ１０に被加算仮数データ値"１０００００００００００００００００００００００００００"が、レジスタ１２に加算仮数データ値"７ＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦ"がそれぞれ格納される。
【００６１】
演算実行中フラグ生成回路１６は、図７の演算命令生成論理７００からレジスタ１からの信号線Ｌ２００の信号が"０１"の拡張精度データ幅の加算命令であることから、演算テータ選択信号として"０"を信号線Ｌ２５７に出力する。信号線Ｌ２５７の"０"を条件として、演算符号選択回路１７は、図８の符号データ選択論理８００から信号線Ｌ２４０とＬ２４２の拡張精度データ幅の被加算符号データを選択して、信号線Ｌ２５３とＬ２５４に共に"０"（正符号）を出力する。演算指数選択回路１８は、図９の指数データ選択論理９００から信号線Ｌ２４４とＬ２４５の拡張精度データ幅の指数データを選択して、信号線Ｌ２５５に"０２"、信号線Ｌ２５６"０４"を出力する。演算仮数選択回路１９は、図１０の仮数データ選択論理１０００から信号線Ｌ２４８とＬ２４９の拡張精度データ幅の仮数データを選択する。そして、それぞれ信号線Ｌ２５８に"１０００００００００００００００００００００００００００"、信号線Ｌ２５９に"７ＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦ"を出力する。
【００６２】
演算命令解析回路２０は、信号線Ｌ２００の演算命令の数値"０１"（加算命令）と、信号線Ｌ２５３の数値"０"（正符号）と、信号線Ｌ２５４の数値"０"（正符号）との条件から、図７の演算命令生成論理７００から加算命令となることを解析し、信号線Ｌ２０７に数値"０"（加算命令）を出力する。
【００６３】
指数大小比較回路２１は、信号線Ｌ２５５の被加算指数データの数値"０２"と信号線Ｌ２５６の加算指数データの数値"０４"とを大小比較する。比較結果として、図１１の指数大小比較論理１１００から信号線Ｌ２５６の指数データを大きいと判定して、指数大小比較結果信号として信号線Ｌ２１１に数値"０"を出力する。基準指数選択回路２２は、信号線Ｌ２１１の指数大小比較結果の数値"０"の条件から、図１２の基準指数選択論理１２００から大きい加算指数データである信号線Ｌ２５６の数値"０４"を選択して、信号線Ｌ２０９に出力する。シフト量算出回路２３は、信号線Ｌ２５５の被加算データの指数の数値"０２"と、信号線Ｌ２５６の加算データの指数の数値"０４"との差を求め、桁合わせのための右シフト量として信号線Ｌ２１０に数値"２"を出力する。
【００６４】
仮数選択回路２５は、信号線Ｌ２１１の指数大小比較結果信号が"０"で加算データの指数が大きいので、図１０の被加算仮数データ選択結果論理１４００から被加算データの仮数と加算データの仮数との入れ替えは必要ないと判断する。従って、信号線Ｌ２５８の被加算仮数データを選択し、信号線Ｌ２１２に被加算仮数データ"１０００００００００００００００００００００００００００"を出力する。一方、図１５の加算仮数データと加算反転仮数データの選択論理１５００から、信号線Ｌ２５９の加算仮数データの数値、"７ＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦ"を信号線Ｌ２８０に出力する。また、信号線Ｌ２５９の補数、"１０００００００００００００００００００００００００００"を信号線Ｌ２８１に出力する。そして、信号線Ｌ２０７の演算命令解析結果信号の"０（加算）"を条件に、図１６の加算仮数データ選択論理１６００から、信号線Ｌ２８０の加算仮数データ、"７ＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦ"を信号線Ｌ２１３の仮数選択信号として選択して出力する。桁合わせ右シフト回路２７は、信号線Ｌ２１０の右シフト量信号の数値"２"に基づいて２桁右シフトをすることから、被加算データの仮数の数値として"００１０００００００００００００００００００００００００"を信号線Ｌ２１５に出力する。加減算回路２９は、信号線Ｌ２１５の数値"００１０００００００００００００００００００００００００"と、信号線Ｌ２１３の数値"７ＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦ"とを加算する。そして、加算結果の数値、"８００ＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦ"を信号線Ｌ２１６に出力する。
【００６５】
０桁数チェック回路２８は、信号線Ｌ２１６の加算結果信号の数値"８００ＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦ"の"８"を先頭に上の桁に数値"０"の有無をチェックする。信号線Ｌ２１６の数値の先頭が"８"で先頭データに"１"の数値が存在することを確認すると、信号線Ｌ２１７に０桁数チェック信号の数値"０"を出力する。信号線Ｌ２１７の"０"は、正規化のための左シフトが不要であることから正規化左シフト回路３１は正規化のための左シフトは行わず、結果として数値"８００ＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦ"を信号線Ｌ２１８に出力する。
【００６６】
指数生成減算回路３０は、信号線Ｌ２０９の基準指数選択結果の数値"０４"から信号線Ｌ２１７の０桁数チェック信号の数値"０"を減算して、信号線Ｌ２１９に指数データの数値"０４"を出力する。
【００６７】
中間符号生成回路２４は、信号線Ｌ２１１の指数大小比較結果信号の数値"０"と、信号線Ｌ２５３の被加算符号テータ及び信号線Ｌ２５４の加算符号データの"０"の条件から、図１７の中間符号生成論理１７００から、信号線Ｌ２５４の大きい指数の符号の数値"０"（正符号）を信号線Ｌ２０８に出力する。そして、符号生成回路２６は、演算を実行する被加算仮数と加算仮数の数値から小さい被加算仮数データから大きい加算仮数データを減算することはないので、信号線Ｌ２２０に"０"を出力する。信号線Ｌ２２０の"０"の条件に基づき、図１８の符号生成論理１７００から符号を反転することなく信号線Ｌ２１４に数値"０"（正符号）を出力する。
【００６８】
レジスタ１４は、符号生成回路２６で生成した信号線Ｌ２１４の符号値"０"（正符号）を格納する。また、指数生成減算回路３０で求めた信号線Ｌ２１９の指数データ"０４"と、正規化左シフト回路３１が信号線Ｌ２１８に出力した仮数データ"８００ＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦ"とを格納する。そして、演算結果として信号線Ｌ３０１により出力する。また、レジスタ１５は、演算実行中フラグ生成回路１６の信号線Ｌ２５７への出力"０"を格納し、信号Ｌ３１０により出力する。
【００６９】
以上で、"１０００００００００００００００００００００００００００×１６2"＋"７ＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦ×１６4"の加算が完了し、この結果を、図２Ａの浮動小数点加減算回路４６から浮動小数点加減算結果を信号線Ｌ３０１により出力する。浮動小数点演算結果選択回路４９は、信号線Ｌ３０１の拡張精度の加算結果を信号線Ｌ４０１により命令発行制御回路４２に出力して、拡張精度の１回の演算が完了する。
【００７０】
この加算の解は、"８００ＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦ×１６4"である。このように、信号線Ｌ２１９の指数の数値が"０４"であり、信号線Ｌ２１８に仮数の数値が"８００ＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦ"であることから一致する。
【００７１】
同様に、図２に示す浮動小数点演算回路４１の浮動小数点乗算回路４７は信号線Ｌ３０３に拡張精度の演算結果を、浮動小数点除算回路４８は信号線Ｌ３０５に拡張精度の演算結果を出力する。これらの拡張精度の演算結果は、浮動小数点演算結果選択回路４９から命令発行制御回路４２に戻されて、加減算と乗算と除算の拡張精度の１回の演算は完了する。
【００７２】
（拡張精度データ幅演算回路１２の単・倍精度演算時における動作手順）
以下、倍精度データ幅の演算、"１０００００００００００００ｘｘｘｘｘｘｘｘｘｘｘｘｘｘ×１６2"（被加算データ）"（被加算データ）＋"７ＦＦＦＦＦＦＦＦＦＦＦＦＦｘｘｘｘｘｘｘｘｘｘｘｘｘｘ×１６4"（加算データ）、を１回加算する動作を説明する。なお、取り扱う浮動小数点演算データは、所謂、標準指数データ形式と拡張指数データ形式とＩＥＥＥ指数データ形式との内、図６に示した標準データ形式（符号データ１ビット、指数データ７ビットを２桁の１６進数表記、仮数データ５６ビットを１４桁の１６進数表記）を用いて説明する。なお、単精度の演算も同様であり、説明は省略する。
【００７３】
図２１と図２２は、かかる動作の説明における各レジスタ値２１００と各信号線の数値２２００とを示す図である。
【００７４】
まず、命令発行制御回路４２からの信号線Ｌ１００の演算命令として、レジスタ１に数値"００"または"１１"が格納される。レジスタ１からの信号線Ｌ２００は演算実行中フラグ生成回路１６に入力され、図７の論理７００に従って信号線Ｌ２５７には演算実行中フラグが"１"で出力される。この演算実行中フラグの"１"で信号線Ｌ１０４〜Ｌ１０６から入力される倍精度データが演算符号、演算指数、演算仮数として選択される。また、演算実行中フラグの"１"は、レジスタ１５に格納されて信号線Ｌ３１０から出力され、図２Ａに図示の浮動小数点演算結果選択回路４９における演算結果の選択に使用される。
【００７５】
次に、命令発行制御回路４２からの信号線Ｌ１００の加算命令として、レジスタ１に加算命令の数値"０１"が格納される。また、前述の倍精度データ幅の被加算データと加算データとより、レジスタ２に被加算データの符号数値"０"（正符号）が、レジスタ４に加算データの符号数値"０"（正符号）が格納される。また、レジスタ１０に被加算仮数データ値"１０００００００００００００ｘｘｘｘｘｘｘｘｘｘｘｘｘｘ"が、レジスタ１２に加算仮数データ値"７ＦＦＦＦＦＦＦＦＦＦＦＦＦｘｘｘｘｘｘｘｘｘｘｘｘｘｘ"がそれぞれ格納される。
【００７６】
演算命令解析回路２０は、拡張精度の演算時と同様に、信号線Ｌ２００の演算命令の数値"０１"（加算命令）と、信号線Ｌ２５３の数値"０"（正符号）と、信号線Ｌ２５４の数値"０"（正符号）との条件から、図７の演算命令生成論理７００から加算命令となることを解析し、信号線Ｌ２０７に数値"０"（加算命令）を出力する。
【００７７】
指数の処理も拡張精度の演算時と同様である。指数大小比較回路２１は、信号線Ｌ２５５の被加算指数データの数値"０２"と信号線Ｌ２５６の加算指数データの数値"０４"とを大小比較する。比較結果として、図１１の指数大小比較論理１１００から信号線Ｌ２５６の指数データを大きいと判定して、指数大小比較結果信号として信号線Ｌ２１１に数値"０"を出力する。基準指数選択回路２２は、信号線Ｌ２１１の指数大小比較結果の数値"０"の条件から、図１２の基準指数選択論理１２００から大きい加算指数データである信号線Ｌ２５６の数値"０４"を選択して、信号線Ｌ２０９に出力する。シフト量算出回路２３は、信号線Ｌ２５５の被加算データの指数の数値"０２"と、信号線Ｌ２５６の加算データの指数の数値"０４"との差を求め、桁合わせのための右シフト量として信号線Ｌ２１０に数値"２"を出力する。
【００７８】
仮数選択回路２５は、信号線Ｌ２１１の指数大小比較結果信号が"０"で加算データの指数が大きいので、図１０の被加算仮数データ選択結果論理１４００から被加算データの仮数と加算データの仮数との入れ替えは必要ないと判断する。  従って、信号線Ｌ２５８の被加算仮数データを選択し、信号線Ｌ２１２に被加算仮数データ"１０００００００００００００ｘｘｘｘｘｘｘｘｘｘｘｘｘｘ"を出力する。
【００７９】
一方、図１５の加算仮数データと加算反転仮数データの選択論理１５００から、信号線  Ｌ２５９の加算仮数データの数値、"７ＦＦＦＦＦＦＦＦＦＦＦＦＦｘｘｘｘｘｘｘｘｘｘｘｘｘｘ"を信号線Ｌ２８０に出力する。また、信号線Ｌ２５９の補数、"１０００００００００００００ｘｘｘｘｘｘｘｘｘｘｘｘｘｘ"を信号線Ｌ２８１に出力する。そして、信号線Ｌ２０７の演算命令解析結果信号の"０（加算）"を条件に、図１６の加算仮数データ選択論理１６００から、信号線Ｌ２８０の加算仮数データ、"７ＦＦＦＦＦＦＦＦＦＦＦＦＦｘｘｘｘｘｘｘｘｘｘｘｘｘｘ"を信号線Ｌ２１３の仮数選択信号として選択して出力する。桁合わせ右シフト回路２７は、信号線Ｌ２１０の右シフト量信号の数値"２"に基づいて２桁右シフトをすることから、被加算データの仮数の数値として"００１０００００００００００ｘｘｘｘｘｘｘｘｘｘｘｘｘｘ"を信号線  Ｌ２１５に出力する。加減算回路２９は、信号線Ｌ２１５の数値"００１０００００００００００ｘｘｘｘｘｘｘｘｘｘｘｘｘｘ"と、信号線Ｌ２１３の数値"７ＦＦＦＦＦＦＦＦＦＦＦＦＦｘｘｘｘｘｘｘｘｘｘｘｘｘｘ"とを加算する。そして、加算結果の数値、"８００ＦＦＦＦＦＦＦＦＦＦＦｘｘｘｘｘｘｘｘｘｘｘｘｘｘ"を信号線Ｌ２１６に出力する。
【００８０】
０桁数チェック回路２８のチェックは、拡張精度の場合と倍精度の場合で異なっている。０桁数チェック回路２８は、信号線Ｌ２１６の加算結果信号の数値"８００ＦＦＦＦＦＦＦＦＦＦＦｘｘｘｘｘｘｘｘｘｘｘｘｘｘ"の"８"を先頭に上の桁に数値"０"の有無をチェックする。信号線Ｌ２１６の数値の先頭が"８"で先頭データに"１"の数値が存在することを確認すると、信号線Ｌ２１７に０桁数チェック信号の数値"０"を出力する。信号線Ｌ２１７の"０"は、正規化のための左シフトが不要であることから正規化左シフト回路３１は正規化のための左シフトは行わず、結果として数値"８００ＦＦＦＦＦＦＦＦＦＦＦｘｘｘｘｘｘｘｘｘｘｘｘｘｘ"を信号線Ｌ２１８に出力する。
【００８１】
指数生成減算回路３０は、信号線Ｌ２０９の基準指数選択結果の数値"０４"から信号線Ｌ２１７の０桁数チェック信号の数値"０"を減算して、信号線Ｌ２１９に指数データの数値"０４"を出力する。
【００８２】
中間符号生成回路２４は、信号線Ｌ２１１の指数大小比較結果信号の数値"０"と、信号線Ｌ２５３の被加算符号テータ及び信号線Ｌ２５４の加算符号データの"０"の条件から、図１７の中間符号生成論理１７００から、信号線Ｌ２５４の大きい指数の符号の数値"０"（正符号）を信号線Ｌ２０８に出力する。そして、符号生成回路２６は、演算を実行する被加算仮数と加算仮数の数値から小さい被加算仮数データから大きい加算仮数データを減算することはないので、信号線Ｌ２２０に"０"を出力する。信号線Ｌ２２０の"０"の条件に基づき、図１８の符号生成論理１７００から符号を反転することなく信号線Ｌ２１４に数値"０"（正符号）を出力する。
【００８３】
レジスタ１４は、符号生成回路２６で生成した信号線Ｌ２１４の符号値"０"（正符号）を格納する。また、指数生成減算回路３０で求めた信号線Ｌ２１９の指数データ"０４"と、正規化左シフト回路３１が信号線Ｌ２１８に出力した仮数データ"８００ＦＦＦＦＦＦＦＦＦＦＦｘｘｘｘｘｘｘｘｘｘｘｘｘｘ"とを格納する。そして、演算結果として信号線Ｌ３０１により出力する。また、レジスタ１５は、演算実行中フラグ生成回路１６の信号線Ｌ２５７への出力"０"を格納し、信号Ｌ３１０により出力する。
【００８４】
以上で、倍精度の"００１０００００００００００ｘｘｘｘｘｘｘｘｘｘｘｘｘｘ×１６2"＋"７ＦＦＦＦＦＦＦＦＦＦＦＦＦｘｘｘｘｘｘｘｘｘｘｘｘｘｘ×１６4"の加算が完了し、この結果を、図２Ａの浮動小数点加減算回路４６から浮動小数点加減算結果を信号線Ｌ３０１により出力する。
【００８５】
同様に、図２に示す浮動小数点演算回路４１の浮動小数点乗算回路４７は信号線Ｌ３０２とＬ３０３に並列に２つの倍精度の演算結果を、浮動小数点除算回路４８は信号線Ｌ３０４とＬ３０５に並列の２つの倍精度の演算結果を出力する。これらの倍精度の２つの演算結果は、浮動小数点演算結果選択回路４９から命令発行制御回路４２に信号線Ｌ４００とＬ４０１により並列に戻されて、加減算と乗算と除算の倍精度のそれぞれ２回の演算は完了する。
【００８６】
以上、拡張精度データ幅演算回路１２の拡張精度演算時または倍精度演算時における動作手順を示した。単精度・倍精度データ幅演算回路１１の動作手順は、拡張精度演算の中止と演算データの選択が無い場合の拡張精度データ幅演算回路１２の倍精度演算時における動作手順と類似である。
【００８７】
本実施形態によれば、１２８ビットの拡張精度のデータ幅の演算回路で３２ビットの単精度データ幅と６４ビットの倍精度データ幅の演算が実行できる。従って、既存の単精度・倍精度データ幅の演算回路と同時に拡張精度の演算回路との２つの演算回路で並列に演算ができることで、演算時間が１／２に短縮できることにある。その理由は、拡張演算回路が演算実行中又は未使用であることを検出する回路を設けている。そして、拡張データ幅の演算回路が未使用である場合に単精度倍精度と拡張精度データ幅の演算データを拡張演算回路に振り向けて実行できる回路を設けていることにある。本実施形態は、特にスーパーコンピュータなどでのベクトル演算における多回数の繰り返し演算において、より顕著な効果を発揮する。
【００８８】
［他の実施形態］
以上、本発明の実施形態について詳述したが、それぞれの実施形態に含まれる別々の特徴を如何様に組み合わせたシステム又は装置も、本発明の範疇に含まれる。
【００８９】
また、本発明は、複数の機器から構成されるシステムに適用しても良いし、単体の装置に適用しても良い。さらに、本発明は、実施形態の機能を実現する演算制御プログラムが、システムあるいは装置に直接あるいは遠隔から供給される場合にも適用可能である。したがって、本発明の機能をコンピュータで実現するために、コンピュータにインストールされる演算制御プログラム、あるいはその演算制御プログラムを格納した記憶媒体、その演算制御プログラムをダウンロードさせるＷＷＷサーバも、本発明の範疇に含まれる。
【００９０】
［実施形態の他の表現］
上記の実施形態の一部又は全部は、以下の付記のようにも記載されうるが、以下には限られない。
（付記１）
第１ビット幅の数値及び前記第１ビット幅より短い第２ビット幅の数値に対してそれぞれが浮動小数点演算を行なう複数の演算回路を有する浮動小数点演算回路であって、
演算命令に基づいて、前記第１ビット幅の演算を行なう第１演算回路が休止することを判定する休止判定手段と、
前記休止判定手段が前記第１演算回路が休止すると判定した場合に、前記第１演算回路を前記第２ビット幅の数値の演算を行なうよう制御し、前記第２ビット幅の数値の演算を、前記第１演算回路と前記第２ビット幅の数値を演算する第２演算回路とにより並列に実行する演算制御手段と、
を備えることを特徴とする浮動小数点演算回路。
（付記２）
前記第１ビット幅の数値及び前記第２ビット幅の数値を前記休止判定手段の判定結果に応じて、前記第１演算回路に選択可能に入力する入力手段を有することを特徴とする付記１に記載の浮動小数点演算回路。
（付記３）
前記演算制御手段において前記第１演算回路が前記第２ビット幅の数値を演算した演算結果と前記第２演算回路が前記第２ビット幅の数値を演算した演算結果とを選択して出力する出力手段を含むことを特徴とする付記１又は２に記載の浮動小数点演算回路。
（付記４）
前記第１演算回路は、
前記第１演算回路への演算命令が、前記第１ビット幅の数値に対する演算であるか否かを判定する演算判定手段と、
前記演算判定手段が前記第１ビット幅の数値に対する演算であると判定した場合は、前記第１ビット幅の数値に対して浮動小数点演算を実行し、前記演算判定手段が前記第１ビット幅の数値に対する演算でないと判定した場合は、前記第２ビット幅の数値に対して浮動小数点演算を実行する演算実行手段と、
を有することを特徴とする付記１乃至３のいずれか１項に記載の浮動小数点演算回路。
（付記５）
前記演算判定手段は、
演算命令を格納する演算命令レジスタと、
前記演算命令レジスタの出力信号の値に基づいて前記第１演算回路を休止するか否かを検出して演算実行中フラグを生成する演算実行中フラグ生成手段と、
前記演算実行中フラグ生成手段が生成した前記第１演算回路を休止するか否かの前記演算実行中フラグを格納する実行中フラグ格納レジスタと、を有し、
前記演算実行手段は、
前記演算実行中フラグが演算実行中であることを示す場合に、前記第１ビット幅の数値に含まれる符号、指数及び仮数を選択して浮動小数点演算を実現する回路群に伝達し、前記演算実行中フラグが演算実行中でないことを示す場合に、前記第２ビット幅の数値に含まれる符号、指数及び仮数を選択して浮動小数点演算を実現する回路群に伝達する選択手段と、
前記浮動小数点演算を実現する回路群から得た浮動小数点演算結果を格納する演算結果格納レジスタと、を有することを特徴とする付記１乃至４のいずれか１項に記載の浮動小数点演算回路。
（付記６）
拡張されたビット幅の数値の浮動小数点演算を行なう浮動小数点演算回路であって、
当該浮動小数点演算回路への演算命令が、拡張されたビット幅の数値に対する演算であるか否かを判定する演算判定手段と、
前記演算判定手段が拡張されたビット幅の数値に対する演算であると判定した場合は、前記拡張されたビット幅の数値の浮動小数点演算を実行し、前記演算判定手段が拡張されたビット幅の数値に対する演算でないと判定した場合は、前記拡張されたビット幅より短いビット幅の数値の浮動小数点演算を実行する演算実行手段と、
を備えることを特徴とする浮動小数点演算回路。
（付記７）
前記演算判定手段は、
入力される演算命令を格納する演算命令レジスタと、
前記演算命令レジスタの出力信号の値に基づいて当該浮動小数点演算回路を休止するか否かを検出して演算実行中フラグを生成する演算実行中フラグ生成手段と、
前記演算実行中フラグ生成手段が生成した前記演算実行中フラグを格納する実行中フラグ格納レジスタと、を有し、
前記演算実行手段は、
前記演算実行中フラグが演算実行中であることを示す場合に、前記拡張されたビット幅の数値に含まれる符号、指数及び仮数を選択して浮動小数点演算を実現する回路群に伝達し、前記演算実行中フラグが演算実行中でないことを示す場合に、前記拡張されたビット幅より短いビット幅の数値に含まれる符号、指数及び仮数を選択して浮動小数点演算を実現する回路群に伝達する選択手段と、
前記浮動小数点演算を実現する回路群から浮動小数点演算結果を格納する演算結果格納レジスタと、
を有することを特徴とする付記６に記載の浮動小数点演算回路。
（付記８）
前記浮動小数点演算回路が行なう演算が、加算又は減算である場合に、
前記演算実行手段は、
前記演算実行中フラグに基づいて指数のデータ幅に合った指数を選択する基準指数選択回路と、
前記演算実行中フラグに基づいて指数の差を求めて桁合わせ右シフト量を求めるシフト量算出回路と、
第１データの仮数が格納される第１レジスタと、
第２データの仮数が格納される第２レジスタと、
前記第１データの仮数及び前記第２データの仮数のうち、前記演算実行中フラグに基づいて指数の小さい方を桁合わせが必要な仮数として出力し、他方を桁合わせが必要ない仮数として出力する仮数選択回路と、
前記仮数選択回路から出力された桁合わせが必要な仮数を、前記第１データの仮数及び前記第２データの前記演算実行中フラグに基づく指数の差に応じたシフト量だけ右シフトして、シフトした結果を出力する桁合わせ右シフト回路と、
前記桁合わせ右シフト回路から出力される前記桁合わせが必要な仮数のシフトした結果と前記仮数選択回路から出力される桁合わせが必要ない仮数との加減算を行って、加減算結果を出力する加減算回路と、
前記加減算回路から出力された前記加減算結果を正規化する正規化左シフト回路と、
を備えることを特徴とする付記７に記載の浮動小数点演算回路。
（付記９）
拡張されたビット幅の数値の浮動小数点演算を行なう浮動小数点演算回路であって、
入力される演算命令を格納する演算命令レジスタと、
前記演算命令レジスタの出力信号の値に基づいて当該浮動小数点演算回路による拡張されたビット幅の浮動小数点演算を休止するか否かを検出して、演算実行中フラグを生成する演算実行中フラグ生成回路と、
前記演算実行中フラグ生成回路が生成した前記演算実行中フラグを格納する実行中フラグ格納レジスタと、
入力される拡張されたビット幅の被演算データの符号、指数及び仮数と演算データの符号、指数及び仮数とを格納する第１レジスタ群と、
入力される拡張されないビット幅の被演算データの符号、指数及び仮数と演算データの符号、指数及び仮数とを格納する第２レジスタ群と、
前記演算実行中フラグが当該浮動小数点演算回路による拡張されたビット幅の浮動小数点演算を実行することを示す場合には前記第１レジスタ群を選択し、前記演算実行中フラグが当該浮動小数点演算回路による拡張されたビット幅の浮動小数点演算を休止することを示す場合には前記第２レジスタ群を選択する符号、指数及び仮数選択回路と、
演算命令と被演算データの符号と演算データの符号とに基づいて、演算結果の符号を生成する符号生成回路と、
演算命令と被演算データの符号と演算データの符号とに基づいて、被演算データの指数と演算データの指数とを調整して演算結果の指数を生成する指数生成回路と、
前記指数生成回路における前記被演算データの指数と演算データの指数との調整に対応して、被演算データの仮数と演算データの仮数との桁合わせを行なって演算結果の仮数を生成する仮数演算回路と、
前記演算結果の指数と仮数とを整合する整合回路と、
前記演算結果の符号と、前記整合回路で整合された前記演算結果の指数と仮数とを格納する演算結果格納レジスタとを備え、
前記実行中フラグ格納レジスタに格納された前記実行中フラグと、前記演算結果格納レジスタに格納された前記演算結果の符号、指数及び仮数とを、浮動小数点演算結果として出力することを特徴とする浮動小数点演算回路。
（付記１０）
異なるビット幅の数値に対してそれぞれ浮動小数点演算を行なう複数の演算回路を有する浮動小数点演算回路を備えたコンピュータであって、
第１演算回路が、
当該第１演算回路への演算命令が、第１ビット幅の数値に対する演算であるか前記第１ビット幅より短い第２ビット幅の数値に対する演算であるかを判定する演算判定手段と、
前記演算判定手段が前記第１ビット幅の数値に対する演算であると判定した場合に、前記第１ビット幅の数値の浮動小数点演算を実行し、前記演算判定手段が前記第２ビット幅の数値に対する演算であると判定した場合に、前記第２ビット幅の数値の浮動小数点演算を実行する演算実行手段と、を有し、
第２演算回路が、前記第２ビット幅の数値の浮動小数点演算を実行する回路であって、
前記浮動小数点演算回路への演算命令が前記第１ビット幅の数値に対する演算が休止することを示す場合には、前記第２ビット幅の数値の浮動小数点演算を前記第１演算回路と前記第２演算回路とにより並列に実行することを特徴とするコンピュータ。
（付記１１）
前記第１ビット幅の数値及び前記第２ビット幅の数値を前記休止判定手段の判定結果に応じて、前記第１演算回路に選択可能に入力する入力手段と、
前記演算制御手段において前記第１演算回路が前記第２ビット幅の数値を演算した演算結果と前記第２演算回路が前記第２ビット幅の数値を演算した演算結果とを選択して出力する出力手段とを含むことを特徴とする付記１０に記載のコンピュータ。
（付記１２）
前記コンピュータは、前記第１ビット幅の数値に対する演算が休止する場合に、前記第２ビット幅の数値に対する演算であることを示す演算命令を少なくとも前記第１演算回路に対して発行し、前記第２ビット幅の数値を前記第１演算回路及び前記第２演算回路に対して提供する命令発行制御手段をさらに有することを特徴とする付記１０又は１１に記載のコンピュータ。
（付記１３）
前記命令発行制御手段に接続されて、前記演算命令と、前記浮動小数点演算回路において演算すべき前記第１ビット幅の数値及び前記第２ビット幅の数値とを前記命令発行制御手段に対して提供し、前記浮動小数点演算回路において演算した演算結果を一時記憶する主記憶手段と、
データの入出力を制御する入出力制御手段を介して前記命令発行制御手段に接続されて、前記浮動小数点演算回路において演算した演算結果を保存する外部記憶手段とを有することを特徴とする付記１０乃至１２のいずれか１項に記載のコンピュータ。
（付記１４）
異なるビット幅の数値に対してそれぞれ浮動小数点演算を行なう複数の演算回路を有する浮動小数点演算回路を備えたコンピュータの演算制御方法であって、
演算プログラムを記憶手段から読み出す読出ステップと、
前記演算プログラムの命令を解析して、前記浮動小数点演算回路において演算すべき数値が第１ビット幅か前記第１ビット幅より短い第２ビット幅かを判定する判定ステップと、
前記浮動小数点演算回路において演算すべき数値が第１ビット幅の場合に、前記第１ビット幅の演算を行なう第１演算回路に前記第１ビット幅の演算命令と演算すべき数値とを提供して、前記第１ビット幅の演算結果を前記第１演算回路から取得する第１演算ステップと、
前記浮動小数点演算回路において演算すべき数値が第２ビット幅の場合に、前記第１ビット幅の演算を行なう第１演算回路と前記第２ビット幅の演算を行なう第２演算回路とに並列の前記第２ビット幅の演算命令と演算すべき数値とを提供して、前記第２ビット幅の演算結果を前記第１演算回路と前記第２演算回路から並列に取得する第２演算ステップと、
を含むことを特徴とする演算制御方法。
（付記１５）
異なるビット幅の数値に対してそれぞれ浮動小数点演算を行なう複数の演算回路を有する浮動小数点演算回路を備えたコンピュータの演算制御プログラムであって、
演算プログラムを記憶手段から読み出す読出ステップと、
前記演算プログラムの命令を解析して、前記浮動小数点演算回路において演算すべき数値が第１ビット幅か前記第１ビット幅より短い第２ビット幅かを判定する判定ステップと、
前記浮動小数点演算回路において演算すべき数値が第１ビット幅の場合に、前記第１ビット幅の演算を行なう第１演算回路に前記第１ビット幅の演算命令と演算すべき数値とを提供して、前記第１ビット幅の演算結果を前記第１演算回路から取得する第１演算ステップと、
前記浮動小数点演算回路において演算すべき数値が第２ビット幅の場合に、前記第１ビット幅の演算を行なう第１演算回路と前記第２ビット幅の演算を行なう第２演算回路とに並列の前記第２ビット幅の演算命令と演算すべき数値とを提供して、前記第２ビット幅の演算結果を前記第１演算回路と前記第２演算回路から並列に取得する第２演算ステップと、をコンピュータに実行させることを特徴とする演算制御プログラム。
【図１】
2012113508.tif 000003
【図２Ａ】
2012113508.tif 000004
【図２Ｂ】
2012113508.tif 000005
【図３】
2012113508.tif 000006
【図４】
2012113508.tif 000007
【図５】
2012113508.tif 000008
【図６】
2012113508.tif 000009
【図７】
2012113508.tif 000010
【図８】
2012113508.tif 000011
【図９】
2012113508.tif 000012
【図１０】
2012113508.tif 000013
【図１１】
2012113508.tif 000014
【図１２】
2012113508.tif 000015
【図１３】
2012113508.tif 000016
【図１４】
2012113508.tif 000017
【図１５】
2012113508.tif 000018
【図１６】
2012113508.tif 000019
【図１７】
2012113508.tif 000020
【図１８】
2012113508.tif 000021
【図１９】
2012113508.tif 000022
【図２０】
2012113508.tif 000023
【図２１】
2012113508.tif 000024
【図２２】
2012113508.tif 000025