(57)【要約】【課題】  浮動小数点積和演算あるいは固定小数点乗算がそれぞれ実行される場合に、無効な電力消費が発生するという問題点がある。【解決手段】  通知された演算命令に基づいて選択した入力データを構成する複数の部分データそれぞれについて最上位ビットから連続している０の数を計数して第１のリーディングゼロカウントとし、第１のリーディングゼロカウントに基づいて入力データについて最上位ビットから連続している０の数を計数して第２のリーディングゼロカウントを出力するリーディングゼロ手段と、第１のリーディングゼロカウントを入力して演算命令に基づいた演算を行うとともに、第２のリーディングゼロカウントを入力して演算命令に基づいた演算を行う第１の演算手段と、第１の演算手段及びリーディングゼロ手段と連携して演算命令に基づいた演算を行う第２の演算手段とを有する。【選択図】      図１
2011034383.tif 000002
【特許請求の範囲】
【請求項１】
通知された演算命令に基づいて、該演算命令に対応する予め定められたサイズの入力データを選択する選択手段と、
前記入力データを構成する複数の部分データのそれぞれについて、その最上位ビットから連続している０の数を計数して第１のリーディングゼロカウントとして出力するとともに、該複数の部分データのそれぞれについて計数された該第１のリーディングゼロカウントに基づいて前記入力データについてその最上位ビットから連続している０の数を計数してこの計数した０の数を第２のリーディングゼロカウントとして出力するリーディングゼロ手段と、
前記第１のリーディングゼロカウントを入力して前記演算命令に基づいた演算を行うとともに、前記第２のリーディングゼロカウントを入力して前記演算命令に基づいた演算を行う第１の演算手段と、
前記第１の演算手段及び前記リーディングゼロ手段と連携して前記演算命令に基づいた演算を行う第２の演算手段と、
を有することを特徴とする演算装置。
【請求項２】
通知された演算命令に基づいて、該演算命令に対応する予め定められたサイズの入力データを選択するセレクタと、
それぞれが、前記入力データを構成する複数の部分データのうちの対応する一つを入力し、該入力した部分データの最上位ビットから連続している０の数を計数して第１のリーディングゼロカウントとして出力する複数の第１のカウンタと、
前記複数の第１のカウンタのそれぞれが出力した第１のリーディングゼロカウントに基づいて、前記入力データついて最上位ビットから連続している０の数を計数してこの計数した０の数を第２のリーディングゼロカウントとして出力する第２のカウンタと、
を含むリーディングゼロ回路と、
前記第１のリーディングゼロカウントを入力して前記演算命令に基づいた演算を行う第１の演算回路と、
前記第２のリーディングゼロカウントを入力して前記演算命令に基づいた演算を行う第２の演算回路と、
前記演算命令を受け、前記第１の演算回路と前記第２の演算回路と前記リーディングゼロ回路と連携して前記演算命令に基づいた演算を行う第３の演算回路と、
を有することを特徴とする演算装置。
【請求項３】
前記第２の演算回路は、浮動小数点倍精度データ形式の積和演算回路を構成する演算回路であって、前記第２のリーディングゼロカウントに基づいて積和演算出力を正規化する正規化丸め回路を含むことを特徴とする請求項２記載の演算装置。
【請求項４】
前記第１の演算回路は、固定小数点乗算回路を構成する演算回路であって、前記第１のリーディングゼロカウントに基づいて固定小数点のオーバーフローを予測する固定小数点オーバーフロー判定回路を含むことを特徴とする請求項３記載の演算装置。
【請求項５】
前記第１の演算回路は、浮動小数点単精度データ形式の積和演算回路を構成する演算回路であって、前記第１のリーディングゼロカウントに基づいて積和演算出力を正規化する正規化丸め回路を含み、
前記リーディングゼロ回路は、複数の前記第１のリーディングゼロカウントを比較して該複数の第１のリーディングゼロカウントの間で不一致を検出した場合にエラーを出力する比較回路を含む、
ことを特徴とする請求項３記載の演算装置。
【請求項６】
演算命令に含まれる第１のオペランド、第２のオペランド及び第３のオペランドを入力し、該演算命令に基づいてそれらのオペランドのそれぞれを符号と指数部と仮数部とに分割する前処理回路と、
前記第１のオペランド及び前記第２のオペランドについて前記前処理回路が分割したそれらオペランドの仮数部同士の乗算を行う乗算回路と、
前記第１のオペランド及び前記第２のオペランドについて前記前処理回路が分割したそれらオペランドの符号に基づいて前記乗算回路での演算結果の符合の判定を行い、前記第１のオペランド及び前記第２のオペランドについて前記前処理回路が分割したそれらオペランドの指数部同士の加算を行う指数部加算器と、
前記第３のオペランドについて前記前処理回路が分割した該オペランドの指数部と前記指数部加算器での加算結果との減算演算を行う指数部減算器と、
前記指数部減算器での減算結果に基づいて、前記第３のオペランドについて前記前処理回路が分割した該オペランドの仮数部のシフト処理を行うシフト回路と、
前記乗算回路での乗算結果と前記シフト回路でのシフト処理結果との加算を行う加算器と、
前記第１のオペランドと前記第２のオペランドと前記加算器での加算結果とを入力し、前記演算命令に基づいて前記第１のオペランドと前記第２のオペランドと前記加算器での加算結果とについてそれぞれの先頭からの”０”の数を計数するリーディングゼロ回路と、
前記リーディングゼロ回路が計数した先頭からの”０”の数に基づいて、前記加算器の出力の正規化処理と丸め処理を行う正規化丸め回路と、
前記リーディングゼロ回路が計数した先頭からの”０”の数に基づいて、前記指数部加算器の出力である指数部の補正を行う指数部補正回路と、
前記乗算回路での乗算結果と前記リーディングゼロ回路が計数した先頭からの”０”の数とに基づいて、オーバーフロー判定を行う固定小数点オーバーフロー判定回路と、
前記演算命令に基づいて、前記指数部補正回路での補正結果である符号及び指数部と前記正規化丸め回路の正規化処理と丸め処理の結果である仮数部とを連結した結果、または、前記乗算回路での乗算結果のいずれかを出力する選択回路と、
を有することを特徴とする積和演算処理装置。
【請求項７】
通知された演算命令に基づいて、該演算命令に対応する予め定められたサイズの入力データを選択する選択ステップと、
前記入力データを構成する複数の部分データのそれぞれについて、その最上位ビットから連続している０の数を第１のリーディングゼロカウントとして計数するとともに、該複数の部分データのそれぞれについて計数された該第１のリーディングゼロカウントに基づいて前記入力データについてその最上位ビットから連続している０の数を第２のリーディングゼロカウントとして計数するカウントステップと、
前記第１のリーディングゼロカウントを入力して前記演算命令に基づいた演算を行うとともに、前記第２のリーディングゼロカウントを入力して前記演算命令に基づいた演算を行う第１の演算ステップと、
前記第１の演算ステップ及び前記カウントステップと連携して前記演算命令に基づいた演算を行う第２の演算ステップと、
を有することを特徴とする演算方法。
【請求項８】
通知された演算命令に基づいて、該演算命令に対応する予め定められたサイズの入力データを選択する選択ステップと、
前記入力データを複数の部分データに分割し、該複数の部分データのそれぞれについて、その最上位ビットから連続している０の数を計数する第１のカウントステップと、
前記第１のカウントステップにおいて得られた全ての係数結果に基づいて、前記入力データについて最上位ビットから連続している０の数を計数する第２のカウントステップと、
前記第１のカウントステップでの計数結果に対して前記演算命令に基づいた演算を行う第１の演算ステップと、
前記第２のカウントステップでの計数結果に対して前記演算命令に基づいた演算を行う第２の演算ステップと、
前記第１及び第２のカウントの演算ステップ及び前記第２の演算ステップでの演算結果ならびに前記第１及び第２のカウントステップでの計数結果に基づき前記演算命令に従った演算を行う第３の演算ステップと、
を有することを特徴とする演算方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、演算装置及び演算方法に関し、特に浮動小数点積和演算の演算装置及び演算方法に関する。
【背景技術】
【０００２】
特許文献１に複素数固定小数点乗算と浮動小数点代数乗算とを選択的に実行する乗算回路が記載されている。特許文献１に記載された乗算回路は、固定小数点モードでの動作用及び浮動小数点モードでの動作用として、１つの乗算器を共用するように構成されている。
【０００３】
ここで、上述のような乗算回路について、一般的な構成例を参照して詳細に説明する。図１２は、浮動小数点積和演算と固定小数点乗算との両方を実行可能な演算装置のブロック図である。図１２に示す演算装置において、浮動小数点積和演算を実行する場合には、前処理回路１１、前処理回路１２、前処理回路１３、乗算回路１４、加算器１５、指数部加算器１６、指数部減算器１７、シフト回路１８、正規化丸め回路１９、指数部補正回路２０、リーディングゼロ回路２１及び選択回路２３が使用される。一方、固定小数点乗算を実行する場合には、前処理回路１１、前処理回路１２、前処理回路１３、乗算回路１４、固定小数点オーバーフロー判定回路２２、選択回路２３、リーディングゼロ回路３１及びリーディングゼロ回路３２が使用される。つまり、本演算装置では、浮動小数点積和演算の動作及び固定小数点乗算の動作において、前処理回路１１、前処理回路１２、前処理回路１３、乗算回路１４及び選択回路２３が共用して使用される。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特公平０７−０２７４５７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、上述した先行技術文献に記載された技術においては、例えば、浮動小数点積和演算が実行される場合には、浮動小数点積和演算の実行には必要のない固定小数点オーバーフロー判定回路２２、リーディングゼロ回路３１及びリーディングゼロ回路３２も動作して電力を消費し、また同様に、固定小数点乗算が実行される場合にも、固定小数点乗算の実行には必要のない加算器１５、指数部加算器１６、指数部減算器１７、シフト回路１８、正規化丸め回路１９、指数部補正回路２０及びリーディングゼロ回路２１が動作して電力を消費するため、無駄な電力消費が発生するという問題がある。
【０００６】
本発明の目的は、上述した問題を解決できる演算装置及び演算方法を提供することにある。
【課題を解決するための手段】
【０００７】
本発明の演算装置は、通知された演算命令に基づいて、該演算命令に対応する予め定められたサイズの入力データを選択する選択手段と、前記入力データを構成する複数の部分データのそれぞれについて、その最上位ビットから連続している０の数を計数して第１のリーディングゼロカウントとして出力するとともに、該複数の部分データのそれぞれについて計数された該第１のリーディングゼロカウントに基づいて前記入力データについてその最上位ビットから連続している０の数を計数してこの計数した０の数を第２のリーディングゼロカウントとして出力するリーディングゼロ手段と、前記第１のリーディングゼロカウントを入力して前記演算命令に基づいた演算を行うとともに、前記第２のリーディングゼロカウントを入力して前記演算命令に基づいた演算を行う第１の演算手段と、前記第１の演算手段及び前記リーディングゼロ手段と連携して前記演算命令に基づいた演算を行う第２の演算手段とを有する。
【０００８】
本発明の演算方法は、通知された演算命令に基づいて、該演算命令に対応する予め定められたサイズの入力データを選択する選択ステップと、前記入力データを構成する複数の部分データのそれぞれについて、その最上位ビットから連続している０の数を第１のリーディングゼロカウントとして計数するとともに、該複数の部分データのそれぞれについて計数された該第１のリーディングゼロカウントに基づいて前記入力データについてその最上位ビットから連続している０の数を第２のリーディングゼロカウントとして計数するカウントステップと、前記第１のリーディングゼロカウントを入力して前記演算命令に基づいた演算を行うとともに、前記第２のリーディングゼロカウントを入力して前記演算命令に基づいた演算を行う第１の演算ステップと、前記第１の演算ステップ及び前記カウントステップと連携して前記演算命令に基づいた演算を行う第２の演算ステップとを有する。
【発明の効果】
【０００９】
本発明は、浮動小数点積和演算あるいは固定小数点乗算がそれぞれ実行される場合に、無効な電力消費の発生を低減することが可能になるという効果がある。
【図面の簡単な説明】
【００１０】
【図１】本発明の第１の実施形態に係る積和演算処理装置の構成を示すブロック図である。
【図２】本発明の第１の実施形態における、リーディングゼロ回路の構成を示すブロック図である。
【図３】本発明の第１乃至第３の実施形態における、固定小数点データ形式のデータの構造を示す図である。
【図４】本発明の第１乃至第３の実施形態における、浮動小数点倍精度データ形式のデータの構造を示す図である。
【図５】本発明の第１乃至第３の実施形態における、カウンタの構成を示す回路図である。
【図６】本発明の第１乃至第３の実施形態における、カウンタの構成を示す回路図である。
【図７】本発明の第１乃至第３の実施形態における、カウンタの構成を示す回路図である。
【図８】本発明の第１乃至第３の実施形態における、カウンタの構成を示す回路図である。
【図９】本発明の第２の実施形態における、リーディングゼロ回路の構成を示すブロック図である。
【図１０】本発明の第３の実施形態に係る積和演算処理装置の構成を示すブロック図である。
【図１１】本発明の第４の実施形態に係る積和演算処理装置の構成を示すブロック図である。
【図１２】関連技術である、浮動小数点積和演算と固定小数点乗算を実行可能な演算装置のブロック図である。
【発明を実施するための形態】
【００１１】
次に、本発明の実施形態について図面を参照して詳細に説明する。
【００１２】
図１は、本発明の第１の実施形態に係る積和演算処理装置１０の構成を示すブロック図である。
【００１３】
図１を参照すると、本発明の第１の実施形態に係る積和演算処理装置１０は、前処理回路１１と前処理回路１２と前処理回路１３と乗算回路１４と加算器１５と指数部加算器１６と指数部減算器１７とシフト回路１８と正規化丸め回路１９と指数部補正回路２０とリーディングゼロ回路４１と固定小数点オーバーフロー判定回路２２と選択回路２３とを備えている。尚、加算器１５と指数部加算器１６と指数部減算器１７とシフト回路１８と正規化丸め回路１９と指数部補正回路２０とは、併せて第１の演算回路とも呼ばれる。また、固定小数点オーバーフロー判定回路２２は、第２の演算回路とも呼ばれる。また、前処理回路１１と前処理回路１２と前処理回路１３と乗算回路１４と選択回路２３とは、併せて第３の演算回路とも呼ばれる。
【００１４】
前処理回路１１は、乗算回路１４と指数部加算器１６とに接続されており、第１オペランドを命令の種類に基づいて符号と指数部と仮数部に分割し、符号と指数部を指数部加算器１６へ、仮数部を乗算回路１４へ出力する。ここで、命令とは、図示しない外部の手段により積和演算処理装置１０に対して発行されるものであり、少なくとも浮動小数点積和演算命令及び固定小数点乗算命令を含む（以下同様）。
【００１５】
前処理回路１２は、乗算回路１４と指数部加算器１６とに接続されており、第２オペランドを命令の種類に基づいて符号と指数部と仮数部に分割し、符号と指数部を指数部加算器１６へ、仮数部を乗算回路１４へ出力する。
【００１６】
前処理回路１３は、指数部減算器１７とシフト回路１８とに接続されており、第３オペランドを命令の種類に基づいて符号と指数部と仮数部に分割し、符号と指数部を指数部減算器１７へ、仮数部をシフト回路１８へ出力する。
【００１７】
乗算回路１４は、前処理回路１１と前処理回路１２と加算器１５と固定小数点オーバーフロー判定回路２２と選択回路２３とに接続されている。そして、乗算回路１４は、前処理回路１１と前処理回路１２との出力である仮数部同士について乗算を行い、この乗算の結果を加算器１５と固定小数点オーバーフロー判定回路２２と選択回路２３とに出力する。
【００１８】
加算器１５は、乗算回路１４とシフト回路１８と正規化丸め回路１９とリーディングゼロ回路４１とに接続されており、乗算回路１４の出力とシフト回路１８の出力との加算を行い、この加算の結果を正規化丸め回路１９とリーディングゼロ回路４１とに出力する。
【００１９】
指数部加算器１６は、前処理回路１１と前処理回路１２と指数部減算器１７と指数部補正回路２０とに接続されており、前処理回路１１から出力された符号と前処理回路１２から出力された符号とに基づいて浮動小数点積和演算の結果の符号を判定する。同時に、指数部加算器１６は、前処理回路１１から出力された指数部と前処理回路１２から出力された指数部との加算を行う。続けて、指数部加算器１６は、判定された符号及び指数部加算の結果を指数部減算器１７と指数部補正回路２０へ出力する。
【００２０】
指数部減算器１７は、前処理回路１３と指数部加算器１６とシフト回路１８とに接続されており、指数部加算器１６の出力である指数部加算結果と前処理回路１３の出力である第３オペランドの指数部との減算を行い、この指数部減算の結果をシフト回路１８へ出力する。
【００２１】
シフト回路１８は、前処理回路１３と加算器１５と指数部減算器１７とに接続されており、指数部減算器１７の出力である指数部減算の結果に基づいて、前処理回路１３の出力である第３オペランドの仮数部に対してシフト操作を行い、このシフト操作の結果を加算器１５へ出力する。
【００２２】
正規化丸め回路１９は、加算器１５とリーディングゼロ回路４１と選択回路２３とに接続されており、リーディングゼロ回路４１の出力に基づいて加算器１５の出力である加算結果をシフトして正規化丸め処理を行い、この正規化丸め処理の結果を選択回路２３へ出力する。この正規化丸め回路１９の出力である正規化丸め処理の結果が、浮動小数点積和演算結果の仮数部となる。
【００２３】
指数部補正回路２０は、指数部加算器１６と正規化丸め回路１９とリーディングゼロ回路４１と選択回路２３とに接続されており、リーディングゼロ回路４１の出力に基づいて指数部加算器１６の出力のうち指数部加算結果を補正し、この補正された指数部加算結果を選択回路２３へ出力する。この指数部補正回路２０の出力である補正された指数部加算結果が浮動小数点乗算結果の指数部となる。
【００２４】
リーディングゼロ回路４１は、加算器１５と正規化丸め回路１９と指数部補正回路２０と固定小数点オーバーフロー判定回路２２とに接続されている。浮動小数点積和演算命令の実行時においては、リーディングゼロ回路４１は、加算器１５の出力について最上位ビット（ＭＳＢ（Ｍｏｓｔ  Ｓｉｇｎｉｆｉｃａｎｔ  Ｂｉｔ））から連続した“０”の数をカウントして正規化丸め回路１９と指数部補正回路２０とに出力する。一方、固定小数点乗算命令の実行時においては、リーディングゼロ回路４１は、第１オペランドと第２オペランドを入力としてそれぞれのＭＳＢから連続した“０”の数をカウントして固定小数点オーバーフロー判定回路２２へ出力する。
【００２５】
固定小数点オーバーフロー判定回路２２は、乗算回路１４とリーディングゼロ回路４１と選択回路２３とに接続されており、乗算回路１４の出力である乗算結果とリーディングゼロ回路４１の出力である第１、第２オペランドのリーディングゼロ結果とにより固定小数点乗算結果のオーバーフロー判定を行い、このオーバーフロー判定の結果を選択回路２３へ出力する。
【００２６】
選択回路２３は、乗算回路１４と正規化丸め回路１９と指数部補正回路２０と固定小数点オーバーフロー判定回路２２とに接続されている。浮動小数点積和演算命令の実行時においては、選択回路２３は、指数部補正回路２０の出力である符号及び指数部と正規化丸め回路１９の出力である仮数部とを連結し、浮動小数点積和演算結果として出力する。一方、固定小数点乗算命令の実行時においては、選択回路２３は、乗算回路１４の出力を固定小数点乗算の乗算結果として出力する。尚、選択回路２３は、固定小数点オーバーフロー判定回路２２の出力がオーバーフローを示している場合には、予め定められたフォーマットの値（例えば、最大数）を固定小数点乗算の演算結果として出力する。
【００２７】
次にリーディングゼロ回路４１の詳細な構成について説明する。図２を参照するとリーディングゼロ回路４１は、セレクタ１００と複数のカウンタ１０１と複数のカウンタ１０２と複数のカウンタ１０３とカウンタ１０４とを有している。尚、カウンタ１０１とカウンタ１０２とカウンタ１０３とは、併せて第１のカウンタとも呼ばれる。また、カウンタ１０４は第２のカウンタとも呼ばれる。
【００２８】
セレクタ１００は加算器１５と３２個のカウンタ１０１とに接続されており、命令の種類に基づいて、加算器１５の出力と第１オペランドと第２オペランドを並べたデータとの選択を行う。即ち、セレクタ１００は、浮動小数点積和演算命令の実行時においては加算器１５の出力を、固定小数点乗算命令の実行時においては第１オペランドと第２オペランドとを並べたデータを、選択してカウンタ１０１へ出力する。
【００２９】
カウンタ１０１は、セレクタ１００とカウンタ１０２とに接続されており、セレクタ１００の出力を４ビットずつそれぞれ入力し、ＭＳＢから連続した”０”の数をカウントしてカウンタ１０２へ出力する。
【００３０】
カウンタ１０２は４つのカウンタ１０１と１つのカウンタ１０３とに接続されており、４つのカウンタ１０１の出力である３ビットのカウント値をそれぞれ入力し、ＭＳＢからの”０”の数をカウントしてカウンタ１０３へ出力する。
【００３１】
カウンタ１０３は４つのカウンタ１０２と１つのカウンタ１０４と固定小数点オーバーフロー判定回路２２とに接続されており、４つのカウンタ１０２の出力である５ビットのカウント値をそれぞれ入力し、ＭＳＢからの”０”の数をカウントしてカウンタ１０４と固定小数点オーバーフロー判定回路２２とに出力する。
【００３２】
カウンタ１０４は２つのカウンタ１０３と正規化丸め回路１９と指数部補正回路２０とに接続されており、２つのカウンタ１０３の出力である７ビットのカウント値をそれぞれ入力し、ＭＳＢから連続した”０”の数をカウントして正規化丸め回路１９と指数部補正回路２０へ出力する。
【００３３】
尚、セレクタ１００、カウンタ１０１、カウンタ１０２、カウンタ１０３の構成や数量は一例であり、また処理するデータの構造やサイズ等によっても適宜変更して実現してよい。
【００３４】
次に、本発明の第１の実施形態の動作について図１〜図８を参照して詳細に説明する。本実施形態に係る積和演算処理装置１０は、浮動小数点積和演算命令または固定小数点乗算命令に基づき共用のハードウェアを用いて、それぞれ浮動小数点積和演算または固定小数点乗算を実行する。ここでは、図３に示す固定小数点データ形式のデータ（例えば、６４ビットからなる）について固定小数点乗算をサポートし、図４に示すＩＥＥＥ（Ｔｈｅ  Ｉｎｓｔｉｔｕｔｅ  ｏｆ  Ｅｌｅｃｔｒｉｃａｌ  ａｎｄ  Ｅｌｅｃｔｒｏｎｉｃｓ  Ｅｎｇｉｎｅｅｒｓ）浮動小数点倍精度データ形式のデータについて浮動小数点積和演算サポートする積和演算処理装置１０を例に説明する。
【００３５】
尚、図３、図４に示すデータ形式は積和演算処理装置１０で扱うデータ形式の一例であり、積和演算処理装置１０を適宜変更して構造やサイズの異なるデータを扱うように構成しても良い。
【００３６】
まず、浮動小数点積和演算を実行する場合の動作について説明する。図１において、前処理回路１１、前処理回路１２、前処理回路１３、リーディングゼロ回路４１及び選択回路２３は、図示しない命令デコーダから図示しない制御信号線により浮動小数点積和演算命令実行が指定される。
【００３７】
尚、浮動小数点積和演算命令の実行時においては、固定小数点乗算にのみ関連する固定小数点オーバーフロー判定回路２２の動作及び出力は、特に意味を持たない。
【００３８】
まず、前処理回路１１及び前処理回路１２は、浮動小数点積和演算命令に基づいて、図４に示すように符号Ｓ（例えば、１ｂｉｔ）と指数部Ｅ（例えば、１１ｂｉｔ）を合わせた１２ｂｉｔを指数部として、第１及び第２オペランドの指数部を指数部加算器１６へ出力する。同時に、前処理回路１１及び前処理回路１２は、ＩＥＥＥ浮動小数点倍精度データ形式の表現における仮数部の先頭の隠しビット”１”に第１及び第２オペランドの仮数部Ｍ（例えば、５２ｂｉｔ）と例えば１１ｂｉｔ分の”０”とを付け足しこれを仮数部として、第１及び第２オペランドの仮数部を乗算回路１４へ出力する。
【００３９】
同様に、前処理回路１３は浮動小数点積和演算命令に基づいて、図４に示すように符号Ｓ（例えば、１ｂｉｔ）と指数部Ｅ（例えば、１１ｂｉｔ）とを合わせた１２ｂｉｔを指数部として、第３オペランドの指数部を指数部減算器１７へ出力する。同時に、前処理回路１３は、ＩＥＥＥ浮動小数点倍精度データ形式の表現における仮数部の先頭の隠しビット”１”に第３オペランドの仮数部Ｍ（例えば、５２ｂｉｔ）と例えば１１ｂｉｔ分の”０”とを付け足しこれを仮数部として、第３オペランドの仮数部をシフト回路１８へ出力する。
【００４０】
指数部加算器１６は、前処理回路１１と前処理回路１２と指数部減算器１７と指数部補正回路２０とに接続されており、前処理回路１１から出力された符号と前処理回路１２から出力された符号とに基づいて浮動小数点積和演算の結果の符号を判定する。同時に、指数部加算器１６は、前処理回路１１から出力された指数部と前処理回路１２から出力された指数部との加算を行う。続けて、指数部加算器１６は、判定された符号及び指数部加算の結果を指数部減算器１７と指数部補正回路２０へ出力する。
【００４１】
指数部減算器１７は、前処理回路１３と指数部加算器１６とシフト回路１８とに接続されており、指数部加算器１６の出力である指数部加算結果と前処理回路１３の出力である第３オペランドの指数部との減算を行い、この指数部減算の結果をシフト回路１８へ出力する。
【００４２】
次に、指数部加算器１６は、第１及び第２オペランドの指数部に基づいて符号の判定及び指数部の加算を行い、判定された符号と指数部加算結果を指数部減算器１７及び指数部補正回路２０へ出力する。
【００４３】
次に、指数部減算器１７は、第３オペランドの指数部について指数部加算器１６の出力である指数部加算結果との減算を行い、結果を第３オペランドのシフト量としてシフト回路１８へ出力する。
【００４４】
次に、シフト回路１８は、第３オペランドの仮数部を指数部減算器１７の出力であるシフト量に基づいてシフト操作を行い、結果を加算器１５へ出力する。シフト回路１８の出力が第１及び第２オペランド仮数部の乗算結果に対する第３オペランドの仮数部桁合わせ結果となる。
【００４５】
乗算回路１４は、入力された６４ｂｉｔの第１オペランド仮数部を乗数として、第２オペランド仮数部を被乗数として乗算を行い、乗算結果を加算器１５へ出力する。６４ｂｉｔの入力同士の乗算結果は１２７ｂｉｔのデータ幅を持つ。
【００４６】
次に、加算器１５は、乗算回路１４の出力である乗算結果とシフト回路１８の出力である第３オペランドの仮数部桁合わせ結果とについて加算を行い、加算結果をリーディングゼロ回路４１及び正規化丸め回路１９へ出力する。加算結果は桁上がりを考慮すると１２８ｂｉｔのデータ幅を持つ。この１２８ｂｉｔの加算結果が浮動小数点積和演算の正規化前の中間結果となる。
【００４７】
次に、図２を参照して、リーディングゼロ回路４１の動作を詳細に説明する。まず、リーディングゼロ回路４１は、浮動小数点積和演算命令に基づいてセレクタ１００にて加算器１５の出力である加算結果１２８ｂｉｔを選択し、選択結果を４ｂｉｔずつカウンタ１０１に入力する。
【００４８】
続けて、カウンタ１０１は４ｂｉｔの入力についてＭＳＢから連続した”０”の数をカウントしてカウンタ１０２へ出力する。カウンタ１０１は図５に示される回路で実現される。
【００４９】
更に続けて、カウンタ１０２は、４つのカウンタ１０１の出力である３ビットのカウント値をそれぞれ入力し、ＭＳＢから連続した”０”の数をカウントしてカウンタ１０３へ出力する。具体的には、４つのカウンタ１０１のうちＭＳＢ側のカウンタ１０１から最上位ビットの状態をチェックし、”１”である場合には次のカウンタ１０１のカウント値を加算する。カウンタ１０２は、同様の操作を４つ目のカウンタ１０１まで行い、結果をカウンタ１０３へ出力する。カウンタ１０２は図６に示される回路で実現される。
【００５０】
更に続けて、カウンタ１０３は、４つのカウンタ１０２の出力である５ビットのカウント値をそれぞれ入力し、ＭＳＢからの”０”の数をカウントしてカウンタ１０４へ出力する。具体的には、４つのカウンタ１０２のうちＭＳＢ側のカウンタ１０２から最上位ビットの状態をチェックし、”１”である場合には次のカウンタ１０２のカウント値を加算して、４つ目のカウンタ１０２まで同様の操作を行い、結果をカウンタ１０４へ出力する。カウンタ１０３は図７に示される回路で実現される。
【００５１】
更に続けて、カウンタ１０４は、２つのカウンタ１０３の出力である７ビットのカウント値をそれぞれ入力し、ＭＳＢから連続した”０”の数をカウントして正規化丸め回路１９と指数部補正回路２０とに出力する。具体的には、２つのカウンタ１０３のうちＭＳＢ側のカウンタ１０３から最上位ビットの状態をチェックし、”１”である場合には次のカウンタ１０３のカウント値を加算して、結果を正規化丸め回路１９と指数部補正回路２０へ出力する。このカウンタ１０４の出力が、浮動小数点積和演算の中間結果を正規化するためのシフト量となる。カウンタ１０４は図８に示される回路で実現される。
【００５２】
次に、正規化丸め回路１９は、リーディングゼロ回路４１内のカウンタ１０４の出力に基づいて、仮数部の正規化及び丸めを行って結果を選択回路２３へ出力する。正規化丸め回路１９の出力が浮動小数点積和演算結果の仮数部となる。
【００５３】
次に、指数部補正回路２０は、指数部加算器１６の出力である符号と指数部加算結果とリーディングゼロ回路４１の出力である正規化シフト量から指数部の補正を行い、浮動小数点積和演算結果の符号と指数部を算出する。
【００５４】
最後に、選択回路２３は、浮動小数点積和演算命令に基づいて、指数部補正回路２０の出力と正規化丸め回路１９の出力を併せて浮動小数点積和演算の演算結果として出力する。
【００５５】
次に、固定小数点乗算を実行する場合の動作について説明する。図１において、前処理回路１１、前処理回路１２、前処理回路１３、リーディングゼロ回路４１及び選択回路２３は、図示しない命令デコーダから図示しない制御信号線により固定小数点乗算命令実行が指定される。
【００５６】
尚、固定小数点乗算命令の実行時においては、浮動小数点積和演算にのみ関連する加算器１５、指数部加算器１６、指数部減算器１７、シフト回路１８、正規化丸め回路１９及び指数部補正回路２０の動作及び出力は、特に意味を持たない。
【００５７】
まず、前処理回路１１及び前処理回路１２は固定小数点乗算命令に従い、”０”を指数部として第１及び第２オペランドの指数部を指数部加算器１６へ、第１及び第２オペランドの６４ｂｉｔ全てを仮数部として乗算回路１４へ出力する。
【００５８】
同時に、前処理回路１３は固定小数点乗算命令に従い、”０”を指数部として第３オペランドの指数部を指数部減算器１７へ、第３オペランドの仮数部を”０”としてシフト回路１８へ出力する。
【００５９】
次に、乗算回路１４は、入力された６４ｂｉｔの第１オペランド仮数部を乗数として、第２オペランド仮数部を被乗数として乗算を行い、乗算結果（１２７ｂｉｔ）を固定小数点オーバーフロー判定回路２２及び選択回路２３へ出力する。この１２７ｂｉｔの乗算結果の内の下位６４ｂｉｔが固定小数点乗算の乗算結果となる。
【００６０】
次に、図２を参照して、リーディングゼロ回路４１の動作を詳細に説明する。まず、リーディングゼロ回路４１は、固定小数点乗算命令に基づいてセレクタ１００にて第１オペランドと第２オペランドを並べた１２８ｂｉｔを選択し、選択結果が４ｂｉｔずつカウンタ１０１に入力する。
【００６１】
続く、カウンタ１０１及びカウンタ１０２の動作は、浮動小数点積和演算命令において説明した動作と同じである。
【００６２】
更に続けて、カウンタ１０３は、４つのカウンタ１０２の出力である５ビットのカウント値をそれぞれ入力し、ＭＳＢから連続した”０”の数をカウントして固定小数点オーバーフロー判定回路２２へ出力する。具体的には、４つのカウンタ１０２のうちＭＳＢ側のカウンタ１０２から最上位ビットの状態をチェックし、”１”である場合には次のカウンタ１０２のカウント値を加算し、４つ目のカウンタ１０２まで同様の操作を行い、結果を固定小数点オーバーフロー判定回路２２へ出力する。２つのカウンタ１０３の出力が第１オペランドと第２オペランドそれぞれのＭＳＢからのリーディングゼロ結果となる。尚、固定小数点乗算命令の実行時においては、カウンタ１０４の動作及び出力は、特に意味を持たない。
【００６３】
固定小数点オーバーフロー判定回路２２は、乗算回路１４の出力及びリーディングゼロ回路４１の出力である第１オペランドと第２オペランドそれぞれのＭＳＢからのリーディングゼロ結果より固定小数点オーバーフローの判定を行い、判定結果を選択回路２３へ出力する。固定小数点乗算のオーバーフロー検出については、各オペランドのＭＳＢから連続した“０”の数を計上して合計が一定数以内の場合にオーバーフローとする技術が、周知である。
【００６４】
選択回路２３は、固定小数点乗算命令に基づいて、乗算回路１４の出力１２７ｂｉｔのうち下位６４ｂｉｔを固定小数点乗算の演算結果として出力する。演算結果の出力の際に固定小数点オーバーフロー判定回路２２の出力がオーバーフローを示している場合には予め定められたフォーマットの値（例えば最大数）を固定小数点乗算の演算結果として出力する。
【００６５】
上述した本実施形態における第１の効果は、浮動小数点積和演算あるいは固定小数点乗算がそれぞれ実行される場合に、無効な電力消費の発生を低減することが可能になる点である。
【００６６】
その理由は、浮動小数点積和演算用のリーディングゼロ回路と固定小数点乗算用のリーディングゼロ回路とを共用化し、それぞれの動作において電力を消費する必要のない回路を削減したからである。
【００６７】
上述した本実施形態における第２の効果は、ハードウェア量を削減することが可能になる点である。
【００６８】
その理由は、浮動小数点積和演算用のリーディングゼロ回路と固定小数点乗算用のリーディングゼロ回路とを共用化したからである。
【００６９】
次に、本発明の第２の実施形態について図面を参照して詳細に説明する。ここでは、固定小数点乗算に替えて浮動小数点単精度データ形式のデータについて浮動小数点積和演算をサポートする積和演算処理装置１０を例に説明する。また、第１の実施形態と同様の部分については説明を省略し、異なる部分についてのみ説明する。
【００７０】
本発明の第２の実施形態は、第１の実施形態に比べて、リーディングゼロ回路４１が図９に示すリーディングゼロ回路５１に変更されている。
【００７１】
図９を参照すると、リーディングゼロ回路５１は、浮動小数点単精度データ形式積和演算命令に基づいて、リーディングゼロ回路４１における第１及び第２オペランドに替えて、加算器１５の出力のうち上位６４ｂｉｔを２つ並べて入力する。
【００７２】
リーディングゼロ回路５１は、２つのカウンタ１０３の出力を比較する比較回路１０５を有している。
【００７３】
浮動小数点単精度データ形式積和演算命令時には、リーディングゼロ回路５１は、まず、加算器１５の出力のうち上位６４ｂｉｔを２つ並べて入力したものをセレクタ１００にて選択する。
【００７４】
続けて、カウンタ１０１及びカウンタ１０２が、第１の実施形態と同様の動作を行う。
【００７５】
更に続けて、２つのカウンタ１０３それぞれは、４つのカウンタ１０２の出力である５ビットのカウント値をそれぞれ入力し、ＭＳＢからの”０”の数をカウントして比較回路１０５へ出力する。また、２つのカウンタ１０３の内のいずれか一方は、ＭＳＢからの”０”の数をカウントした結果を正規化丸め回路１９と指数部補正回路２０へ出力する。
【００７６】
次に、比較回路１０５が、２つのカウンタ１０３の出力を比較し、これらが一致していない場合エラーを出力する。
【００７７】
上述した本実施形態における効果は、運用中におけるリーディングゼロ回路５１の自律的な故障検出をすることが可能になる点である。
【００７８】
その理由は、浮動小数点倍精度データ形式積和演算用のリーディングゼロ回路と浮動小数点単精度データ形式積和演算用のリーディングゼロ回路とを共用化し、浮動小数点単精度データ形式積和演算実行時に並列に計算したＭＳＢからの”０”の数を比較するようにしたからである。
【００７９】
次に、本発明の第３の実施形態について図面を参照して詳細に説明する。
【００８０】
図１０を参照すると、本発明の第３の実施形態は、第１の演算回路６２と第２の演算回路６３と第３の演算回路６４とリーディングゼロ回路６１を備えている。
【００８１】
リーディングゼロ回路６１は、セレクタ１００と複数の第１のカウンタ６０１と第２のカウンタ６０２とを有している。
【００８２】
セレクタ１００は、通知された演算命令に基づいて、演算命令に対応する予め定められたサイズの入力データを選択する
第１のカウンタ６０１は、セレクタ１００が選択した入力データを複数の部分データに分割してそれぞれ入力し、この入力した部分データ毎にＭＳＢから連続している０の数を計数して第１のリーディングゼロカウントとしてそれぞれ出力する。
【００８３】
第２のカウンタ６０２は、全ての第１のカウンタ６０１がそれぞれ出力した第１のリーディングゼロカウントに基づいて、入力データについてＭＳＢから連続している０の数を計数し、この計数した０の数を第２のリーディングゼロカウントとして出力する。
【００８４】
第１の演算回路６２は、リーディングゼロ回路６１から第１のリーディングゼロカウントを入力して演算を行う。
【００８５】
第２の演算回路６３は、リーディングゼロ回路６１から第２のリーディングゼロカウントを入力して演算を行う。
【００８６】
第３の演算回路６４は、演算命令を受け、第１の演算回路６２と第２の演算回路６３とリーディングゼロ回路６１と連携して演算を行う。
【００８７】
尚、第３の演算回路６４は、入力データの基である演算命令に付随するオペランドを保持する記憶回路を有していてもよい。
【００８８】
上述した本実施形態における第１の効果は、異なる演算処理（例えば浮動小数点積和演算及び固定小数点乗算）がそれぞれ実行される場合に、無効な電力消費の発生を低減することが可能になる点である。
【００８９】
その理由は、複数種類の演算命令について、セレクタ１００を含むリーディングゼロ回路６１を共用化し、それぞれの動作において電力を消費する必要のない回路を削減したからである。
【００９０】
次に、本発明の第４の実施形態について図面を参照して詳細に説明する。
【００９１】
図１１を参照すると、本発明の第４の実施形態は、第１の演算手段７４と第２の演算手段７２とリーディングゼロ手段７１とを備えている。リーディングゼロ手段７１は、選択手段７５を含んでいる。
【００９２】
選択手段７５は、通知された演算命令に基づいて、この演算命令に対応する予め定められたサイズの入力データを選択する。
【００９３】
リーディングゼロ手段７１は、入力データを構成する複数の部分データのそれぞれについて、その最上位ビットから連続している０の数を計数して第１のリーディングゼロカウント７１１として出力するとともに、これらの複数の部分データのそれぞれについて計数された第１のリーディングゼロカウント７１１に基づいて入力データについてその最上位ビットから連続している０の数を計数してこの計数した０の数を第２のリーディングゼロカウント７１２として出力する。
【００９４】
第１演算手段７４は、第１のリーディングゼロカウント７１１を入力してその演算命令に基づいた演算を行うとともに、第２のリーディングゼロカウント７１２を入力してその演算命令に基づいた演算を行う。
【００９５】
第２演算手段７２は、第１の演算手段７４及びリーディングゼロ手段７１と連携してその演算命令に基づいた演算を行う。
【００９６】
上述した本実施形態における第１の効果は、異なる演算処理（例えば浮動小数点積和演算及び固定小数点乗算）がそれぞれ実行される場合に、無効な電力消費の発生を低減することが可能になる点である。
【００９７】
その理由は、複数種類の演算命令について、選択手段７５を設けることでリーディングゼロ手段７１を共用化し、それぞれの演算命令動作において電力を消費する必要のない回路を削減したからである。
【００９８】
以上の各実施形態で説明した各構成要素は、必ずしも個々に独立した存在である必要はない。例えば、各構成要素は、複数の構成要素が１個のモジュールとして実現されたり、一つの構成要素が複数のモジュールで実現されたりしてもよい。また、各構成要素は、ある構成要素が他の構成要素の一部であったり、ある構成要素の一部と他の構成要素の一部とが重複していたり、といったような構成であってもよい。
【００９９】
また、以上説明した各実施形態では、複数の動作をフローチャートの形式で順番に記載してあるが、その記載の順番は複数の動作を実行する順番を限定するものではない。このため、各実施形態を実施するときには、その複数の動作の順番は内容的に支障しない範囲で変更することができる。
【０１００】
更に、以上説明した各実施形態では、複数の動作は個々に相違するタイミングで実行されることに限定されない。例えば、ある動作の実行中に他の動作が発生したり、ある動作と他の動作との実行タイミングが部分的に乃至全部において重複していたりしていてもよい。
【０１０１】
更に、以上説明した各実施形態では、ある動作が他の動作の契機になるように記載しているが、その記載はある動作と他の動作との全ての関係を限定するものではない。このため、各実施形態を実施するときには、その複数の動作の関係は内容的に支障のない範囲で変更することができる。また各構成要素の各動作の具体的な記載は、各構成要素の各動作を限定するものではない。このため、各構成要素の具体的な各動作は、各実施形態を実施する上で機能的、性能的、その他の特性に対して支障をきたさない範囲内で変更されて良い。
【０１０２】
尚、以上説明した各実施形態における各構成要素は、必要に応じ可能であれば、ハードウェアで実現されても良いし、ソフトウェアで実現されても良いし、ハードウェアとソフトウェアの混在により実現されても良い。
【０１０３】
また、各構成要素の物理的な構成は、以上の実施形態の記載に限定されることはなく、独立して存在しても良いし、組み合わされて存在しても良いしまたは分離して構成されても良い。
【産業上の利用可能性】
【０１０４】
本発明は、浮動小数点倍精度データ形式のデータについての浮動小数点積和演算と、固定小数点データ形式のデータについて固定小数点乗算や浮動小数点単精度データ形式のデータについての浮動小数点積和演算などとをサポートする積和演算処理装置に適用できる。
【符号の説明】
【０１０５】
１０    積和演算処理装置
１１    前処理回路
１２    前処理回路
１３    前処理回路
１４    乗算回路
１５    加算器
１６    指数部加算器
１７    指数部減算器
１８    シフト回路
１９    正規化丸め回路
２０    指数部補正回路
２２    固定小数点オーバーフロー判定回路
２３    選択回路
４１    リーディングゼロ回路
５１    リーディングゼロ回路
１００    セレクタ
１０１    カウンタ
１０２    カウンタ
１０３    カウンタ
１０４    カウンタ
１０５    比較回路
【図１】
2011034383.tif 000003
【図２】
2011034383.tif 000004
【図３】
2011034383.tif 000005
【図４】
2011034383.tif 000006
【図５】
2011034383.tif 000007
【図６】
2011034383.tif 000008
【図７】
2011034383.tif 000009
【図８】
2011034383.tif 000010
【図９】
2011034383.tif 000011
【図１０】
2011034383.tif 000012
【図１１】
2011034383.tif 000013
【図１２】
2011034383.tif 000014