説明

演算装置及び演算方法

【課題】 浮動小数点積和演算あるいは固定小数点乗算がそれぞれ実行される場合に、無効な電力消費が発生するという問題点がある。
【解決手段】 通知された演算命令に基づいて選択した入力データを構成する複数の部分データそれぞれについて最上位ビットから連続している0の数を計数して第1のリーディングゼロカウントとし、第1のリーディングゼロカウントに基づいて入力データについて最上位ビットから連続している0の数を計数して第2のリーディングゼロカウントを出力するリーディングゼロ手段と、第1のリーディングゼロカウントを入力して演算命令に基づいた演算を行うとともに、第2のリーディングゼロカウントを入力して演算命令に基づいた演算を行う第1の演算手段と、第1の演算手段及びリーディングゼロ手段と連携して演算命令に基づいた演算を行う第2の演算手段とを有する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、演算装置及び演算方法に関し、特に浮動小数点積和演算の演算装置及び演算方法に関する。
【背景技術】
【0002】
特許文献1に複素数固定小数点乗算と浮動小数点代数乗算とを選択的に実行する乗算回路が記載されている。特許文献1に記載された乗算回路は、固定小数点モードでの動作用及び浮動小数点モードでの動作用として、1つの乗算器を共用するように構成されている。
【0003】
ここで、上述のような乗算回路について、一般的な構成例を参照して詳細に説明する。図12は、浮動小数点積和演算と固定小数点乗算との両方を実行可能な演算装置のブロック図である。図12に示す演算装置において、浮動小数点積和演算を実行する場合には、前処理回路11、前処理回路12、前処理回路13、乗算回路14、加算器15、指数部加算器16、指数部減算器17、シフト回路18、正規化丸め回路19、指数部補正回路20、リーディングゼロ回路21及び選択回路23が使用される。一方、固定小数点乗算を実行する場合には、前処理回路11、前処理回路12、前処理回路13、乗算回路14、固定小数点オーバーフロー判定回路22、選択回路23、リーディングゼロ回路31及びリーディングゼロ回路32が使用される。つまり、本演算装置では、浮動小数点積和演算の動作及び固定小数点乗算の動作において、前処理回路11、前処理回路12、前処理回路13、乗算回路14及び選択回路23が共用して使用される。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特公平07−027457号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかしながら、上述した先行技術文献に記載された技術においては、例えば、浮動小数点積和演算が実行される場合には、浮動小数点積和演算の実行には必要のない固定小数点オーバーフロー判定回路22、リーディングゼロ回路31及びリーディングゼロ回路32も動作して電力を消費し、また同様に、固定小数点乗算が実行される場合にも、固定小数点乗算の実行には必要のない加算器15、指数部加算器16、指数部減算器17、シフト回路18、正規化丸め回路19、指数部補正回路20及びリーディングゼロ回路21が動作して電力を消費するため、無駄な電力消費が発生するという問題がある。
【0006】
本発明の目的は、上述した問題を解決できる演算装置及び演算方法を提供することにある。
【課題を解決するための手段】
【0007】
本発明の演算装置は、通知された演算命令に基づいて、該演算命令に対応する予め定められたサイズの入力データを選択する選択手段と、前記入力データを構成する複数の部分データのそれぞれについて、その最上位ビットから連続している0の数を計数して第1のリーディングゼロカウントとして出力するとともに、該複数の部分データのそれぞれについて計数された該第1のリーディングゼロカウントに基づいて前記入力データについてその最上位ビットから連続している0の数を計数してこの計数した0の数を第2のリーディングゼロカウントとして出力するリーディングゼロ手段と、前記第1のリーディングゼロカウントを入力して前記演算命令に基づいた演算を行うとともに、前記第2のリーディングゼロカウントを入力して前記演算命令に基づいた演算を行う第1の演算手段と、前記第1の演算手段及び前記リーディングゼロ手段と連携して前記演算命令に基づいた演算を行う第2の演算手段とを有する。
【0008】
本発明の演算方法は、通知された演算命令に基づいて、該演算命令に対応する予め定められたサイズの入力データを選択する選択ステップと、前記入力データを構成する複数の部分データのそれぞれについて、その最上位ビットから連続している0の数を第1のリーディングゼロカウントとして計数するとともに、該複数の部分データのそれぞれについて計数された該第1のリーディングゼロカウントに基づいて前記入力データについてその最上位ビットから連続している0の数を第2のリーディングゼロカウントとして計数するカウントステップと、前記第1のリーディングゼロカウントを入力して前記演算命令に基づいた演算を行うとともに、前記第2のリーディングゼロカウントを入力して前記演算命令に基づいた演算を行う第1の演算ステップと、前記第1の演算ステップ及び前記カウントステップと連携して前記演算命令に基づいた演算を行う第2の演算ステップとを有する。
【発明の効果】
【0009】
本発明は、浮動小数点積和演算あるいは固定小数点乗算がそれぞれ実行される場合に、無効な電力消費の発生を低減することが可能になるという効果がある。
【図面の簡単な説明】
【0010】
【図1】本発明の第1の実施形態に係る積和演算処理装置の構成を示すブロック図である。
【図2】本発明の第1の実施形態における、リーディングゼロ回路の構成を示すブロック図である。
【図3】本発明の第1乃至第3の実施形態における、固定小数点データ形式のデータの構造を示す図である。
【図4】本発明の第1乃至第3の実施形態における、浮動小数点倍精度データ形式のデータの構造を示す図である。
【図5】本発明の第1乃至第3の実施形態における、カウンタの構成を示す回路図である。
【図6】本発明の第1乃至第3の実施形態における、カウンタの構成を示す回路図である。
【図7】本発明の第1乃至第3の実施形態における、カウンタの構成を示す回路図である。
【図8】本発明の第1乃至第3の実施形態における、カウンタの構成を示す回路図である。
【図9】本発明の第2の実施形態における、リーディングゼロ回路の構成を示すブロック図である。
【図10】本発明の第3の実施形態に係る積和演算処理装置の構成を示すブロック図である。
【図11】本発明の第4の実施形態に係る積和演算処理装置の構成を示すブロック図である。
【図12】関連技術である、浮動小数点積和演算と固定小数点乗算を実行可能な演算装置のブロック図である。
【発明を実施するための形態】
【0011】
次に、本発明の実施形態について図面を参照して詳細に説明する。
【0012】
図1は、本発明の第1の実施形態に係る積和演算処理装置10の構成を示すブロック図である。
【0013】
図1を参照すると、本発明の第1の実施形態に係る積和演算処理装置10は、前処理回路11と前処理回路12と前処理回路13と乗算回路14と加算器15と指数部加算器16と指数部減算器17とシフト回路18と正規化丸め回路19と指数部補正回路20とリーディングゼロ回路41と固定小数点オーバーフロー判定回路22と選択回路23とを備えている。尚、加算器15と指数部加算器16と指数部減算器17とシフト回路18と正規化丸め回路19と指数部補正回路20とは、併せて第1の演算回路とも呼ばれる。また、固定小数点オーバーフロー判定回路22は、第2の演算回路とも呼ばれる。また、前処理回路11と前処理回路12と前処理回路13と乗算回路14と選択回路23とは、併せて第3の演算回路とも呼ばれる。
【0014】
前処理回路11は、乗算回路14と指数部加算器16とに接続されており、第1オペランドを命令の種類に基づいて符号と指数部と仮数部に分割し、符号と指数部を指数部加算器16へ、仮数部を乗算回路14へ出力する。ここで、命令とは、図示しない外部の手段により積和演算処理装置10に対して発行されるものであり、少なくとも浮動小数点積和演算命令及び固定小数点乗算命令を含む(以下同様)。
【0015】
前処理回路12は、乗算回路14と指数部加算器16とに接続されており、第2オペランドを命令の種類に基づいて符号と指数部と仮数部に分割し、符号と指数部を指数部加算器16へ、仮数部を乗算回路14へ出力する。
【0016】
前処理回路13は、指数部減算器17とシフト回路18とに接続されており、第3オペランドを命令の種類に基づいて符号と指数部と仮数部に分割し、符号と指数部を指数部減算器17へ、仮数部をシフト回路18へ出力する。
【0017】
乗算回路14は、前処理回路11と前処理回路12と加算器15と固定小数点オーバーフロー判定回路22と選択回路23とに接続されている。そして、乗算回路14は、前処理回路11と前処理回路12との出力である仮数部同士について乗算を行い、この乗算の結果を加算器15と固定小数点オーバーフロー判定回路22と選択回路23とに出力する。
【0018】
加算器15は、乗算回路14とシフト回路18と正規化丸め回路19とリーディングゼロ回路41とに接続されており、乗算回路14の出力とシフト回路18の出力との加算を行い、この加算の結果を正規化丸め回路19とリーディングゼロ回路41とに出力する。
【0019】
指数部加算器16は、前処理回路11と前処理回路12と指数部減算器17と指数部補正回路20とに接続されており、前処理回路11から出力された符号と前処理回路12から出力された符号とに基づいて浮動小数点積和演算の結果の符号を判定する。同時に、指数部加算器16は、前処理回路11から出力された指数部と前処理回路12から出力された指数部との加算を行う。続けて、指数部加算器16は、判定された符号及び指数部加算の結果を指数部減算器17と指数部補正回路20へ出力する。
【0020】
指数部減算器17は、前処理回路13と指数部加算器16とシフト回路18とに接続されており、指数部加算器16の出力である指数部加算結果と前処理回路13の出力である第3オペランドの指数部との減算を行い、この指数部減算の結果をシフト回路18へ出力する。
【0021】
シフト回路18は、前処理回路13と加算器15と指数部減算器17とに接続されており、指数部減算器17の出力である指数部減算の結果に基づいて、前処理回路13の出力である第3オペランドの仮数部に対してシフト操作を行い、このシフト操作の結果を加算器15へ出力する。
【0022】
正規化丸め回路19は、加算器15とリーディングゼロ回路41と選択回路23とに接続されており、リーディングゼロ回路41の出力に基づいて加算器15の出力である加算結果をシフトして正規化丸め処理を行い、この正規化丸め処理の結果を選択回路23へ出力する。この正規化丸め回路19の出力である正規化丸め処理の結果が、浮動小数点積和演算結果の仮数部となる。
【0023】
指数部補正回路20は、指数部加算器16と正規化丸め回路19とリーディングゼロ回路41と選択回路23とに接続されており、リーディングゼロ回路41の出力に基づいて指数部加算器16の出力のうち指数部加算結果を補正し、この補正された指数部加算結果を選択回路23へ出力する。この指数部補正回路20の出力である補正された指数部加算結果が浮動小数点乗算結果の指数部となる。
【0024】
リーディングゼロ回路41は、加算器15と正規化丸め回路19と指数部補正回路20と固定小数点オーバーフロー判定回路22とに接続されている。浮動小数点積和演算命令の実行時においては、リーディングゼロ回路41は、加算器15の出力について最上位ビット(MSB(Most Significant Bit))から連続した“0”の数をカウントして正規化丸め回路19と指数部補正回路20とに出力する。一方、固定小数点乗算命令の実行時においては、リーディングゼロ回路41は、第1オペランドと第2オペランドを入力としてそれぞれのMSBから連続した“0”の数をカウントして固定小数点オーバーフロー判定回路22へ出力する。
【0025】
固定小数点オーバーフロー判定回路22は、乗算回路14とリーディングゼロ回路41と選択回路23とに接続されており、乗算回路14の出力である乗算結果とリーディングゼロ回路41の出力である第1、第2オペランドのリーディングゼロ結果とにより固定小数点乗算結果のオーバーフロー判定を行い、このオーバーフロー判定の結果を選択回路23へ出力する。
【0026】
選択回路23は、乗算回路14と正規化丸め回路19と指数部補正回路20と固定小数点オーバーフロー判定回路22とに接続されている。浮動小数点積和演算命令の実行時においては、選択回路23は、指数部補正回路20の出力である符号及び指数部と正規化丸め回路19の出力である仮数部とを連結し、浮動小数点積和演算結果として出力する。一方、固定小数点乗算命令の実行時においては、選択回路23は、乗算回路14の出力を固定小数点乗算の乗算結果として出力する。尚、選択回路23は、固定小数点オーバーフロー判定回路22の出力がオーバーフローを示している場合には、予め定められたフォーマットの値(例えば、最大数)を固定小数点乗算の演算結果として出力する。
【0027】
次にリーディングゼロ回路41の詳細な構成について説明する。図2を参照するとリーディングゼロ回路41は、セレクタ100と複数のカウンタ101と複数のカウンタ102と複数のカウンタ103とカウンタ104とを有している。尚、カウンタ101とカウンタ102とカウンタ103とは、併せて第1のカウンタとも呼ばれる。また、カウンタ104は第2のカウンタとも呼ばれる。
【0028】
セレクタ100は加算器15と32個のカウンタ101とに接続されており、命令の種類に基づいて、加算器15の出力と第1オペランドと第2オペランドを並べたデータとの選択を行う。即ち、セレクタ100は、浮動小数点積和演算命令の実行時においては加算器15の出力を、固定小数点乗算命令の実行時においては第1オペランドと第2オペランドとを並べたデータを、選択してカウンタ101へ出力する。
【0029】
カウンタ101は、セレクタ100とカウンタ102とに接続されており、セレクタ100の出力を4ビットずつそれぞれ入力し、MSBから連続した”0”の数をカウントしてカウンタ102へ出力する。
【0030】
カウンタ102は4つのカウンタ101と1つのカウンタ103とに接続されており、4つのカウンタ101の出力である3ビットのカウント値をそれぞれ入力し、MSBからの”0”の数をカウントしてカウンタ103へ出力する。
【0031】
カウンタ103は4つのカウンタ102と1つのカウンタ104と固定小数点オーバーフロー判定回路22とに接続されており、4つのカウンタ102の出力である5ビットのカウント値をそれぞれ入力し、MSBからの”0”の数をカウントしてカウンタ104と固定小数点オーバーフロー判定回路22とに出力する。
【0032】
カウンタ104は2つのカウンタ103と正規化丸め回路19と指数部補正回路20とに接続されており、2つのカウンタ103の出力である7ビットのカウント値をそれぞれ入力し、MSBから連続した”0”の数をカウントして正規化丸め回路19と指数部補正回路20へ出力する。
【0033】
尚、セレクタ100、カウンタ101、カウンタ102、カウンタ103の構成や数量は一例であり、また処理するデータの構造やサイズ等によっても適宜変更して実現してよい。
【0034】
次に、本発明の第1の実施形態の動作について図1〜図8を参照して詳細に説明する。本実施形態に係る積和演算処理装置10は、浮動小数点積和演算命令または固定小数点乗算命令に基づき共用のハードウェアを用いて、それぞれ浮動小数点積和演算または固定小数点乗算を実行する。ここでは、図3に示す固定小数点データ形式のデータ(例えば、64ビットからなる)について固定小数点乗算をサポートし、図4に示すIEEE(The Institute of Electrical and Electronics Engineers)浮動小数点倍精度データ形式のデータについて浮動小数点積和演算サポートする積和演算処理装置10を例に説明する。
【0035】
尚、図3、図4に示すデータ形式は積和演算処理装置10で扱うデータ形式の一例であり、積和演算処理装置10を適宜変更して構造やサイズの異なるデータを扱うように構成しても良い。
【0036】
まず、浮動小数点積和演算を実行する場合の動作について説明する。図1において、前処理回路11、前処理回路12、前処理回路13、リーディングゼロ回路41及び選択回路23は、図示しない命令デコーダから図示しない制御信号線により浮動小数点積和演算命令実行が指定される。
【0037】
尚、浮動小数点積和演算命令の実行時においては、固定小数点乗算にのみ関連する固定小数点オーバーフロー判定回路22の動作及び出力は、特に意味を持たない。
【0038】
まず、前処理回路11及び前処理回路12は、浮動小数点積和演算命令に基づいて、図4に示すように符号S(例えば、1bit)と指数部E(例えば、11bit)を合わせた12bitを指数部として、第1及び第2オペランドの指数部を指数部加算器16へ出力する。同時に、前処理回路11及び前処理回路12は、IEEE浮動小数点倍精度データ形式の表現における仮数部の先頭の隠しビット”1”に第1及び第2オペランドの仮数部M(例えば、52bit)と例えば11bit分の”0”とを付け足しこれを仮数部として、第1及び第2オペランドの仮数部を乗算回路14へ出力する。
【0039】
同様に、前処理回路13は浮動小数点積和演算命令に基づいて、図4に示すように符号S(例えば、1bit)と指数部E(例えば、11bit)とを合わせた12bitを指数部として、第3オペランドの指数部を指数部減算器17へ出力する。同時に、前処理回路13は、IEEE浮動小数点倍精度データ形式の表現における仮数部の先頭の隠しビット”1”に第3オペランドの仮数部M(例えば、52bit)と例えば11bit分の”0”とを付け足しこれを仮数部として、第3オペランドの仮数部をシフト回路18へ出力する。
【0040】
指数部加算器16は、前処理回路11と前処理回路12と指数部減算器17と指数部補正回路20とに接続されており、前処理回路11から出力された符号と前処理回路12から出力された符号とに基づいて浮動小数点積和演算の結果の符号を判定する。同時に、指数部加算器16は、前処理回路11から出力された指数部と前処理回路12から出力された指数部との加算を行う。続けて、指数部加算器16は、判定された符号及び指数部加算の結果を指数部減算器17と指数部補正回路20へ出力する。
【0041】
指数部減算器17は、前処理回路13と指数部加算器16とシフト回路18とに接続されており、指数部加算器16の出力である指数部加算結果と前処理回路13の出力である第3オペランドの指数部との減算を行い、この指数部減算の結果をシフト回路18へ出力する。
【0042】
次に、指数部加算器16は、第1及び第2オペランドの指数部に基づいて符号の判定及び指数部の加算を行い、判定された符号と指数部加算結果を指数部減算器17及び指数部補正回路20へ出力する。
【0043】
次に、指数部減算器17は、第3オペランドの指数部について指数部加算器16の出力である指数部加算結果との減算を行い、結果を第3オペランドのシフト量としてシフト回路18へ出力する。
【0044】
次に、シフト回路18は、第3オペランドの仮数部を指数部減算器17の出力であるシフト量に基づいてシフト操作を行い、結果を加算器15へ出力する。シフト回路18の出力が第1及び第2オペランド仮数部の乗算結果に対する第3オペランドの仮数部桁合わせ結果となる。
【0045】
乗算回路14は、入力された64bitの第1オペランド仮数部を乗数として、第2オペランド仮数部を被乗数として乗算を行い、乗算結果を加算器15へ出力する。64bitの入力同士の乗算結果は127bitのデータ幅を持つ。
【0046】
次に、加算器15は、乗算回路14の出力である乗算結果とシフト回路18の出力である第3オペランドの仮数部桁合わせ結果とについて加算を行い、加算結果をリーディングゼロ回路41及び正規化丸め回路19へ出力する。加算結果は桁上がりを考慮すると128bitのデータ幅を持つ。この128bitの加算結果が浮動小数点積和演算の正規化前の中間結果となる。
【0047】
次に、図2を参照して、リーディングゼロ回路41の動作を詳細に説明する。まず、リーディングゼロ回路41は、浮動小数点積和演算命令に基づいてセレクタ100にて加算器15の出力である加算結果128bitを選択し、選択結果を4bitずつカウンタ101に入力する。
【0048】
続けて、カウンタ101は4bitの入力についてMSBから連続した”0”の数をカウントしてカウンタ102へ出力する。カウンタ101は図5に示される回路で実現される。
【0049】
更に続けて、カウンタ102は、4つのカウンタ101の出力である3ビットのカウント値をそれぞれ入力し、MSBから連続した”0”の数をカウントしてカウンタ103へ出力する。具体的には、4つのカウンタ101のうちMSB側のカウンタ101から最上位ビットの状態をチェックし、”1”である場合には次のカウンタ101のカウント値を加算する。カウンタ102は、同様の操作を4つ目のカウンタ101まで行い、結果をカウンタ103へ出力する。カウンタ102は図6に示される回路で実現される。
【0050】
更に続けて、カウンタ103は、4つのカウンタ102の出力である5ビットのカウント値をそれぞれ入力し、MSBからの”0”の数をカウントしてカウンタ104へ出力する。具体的には、4つのカウンタ102のうちMSB側のカウンタ102から最上位ビットの状態をチェックし、”1”である場合には次のカウンタ102のカウント値を加算して、4つ目のカウンタ102まで同様の操作を行い、結果をカウンタ104へ出力する。カウンタ103は図7に示される回路で実現される。
【0051】
更に続けて、カウンタ104は、2つのカウンタ103の出力である7ビットのカウント値をそれぞれ入力し、MSBから連続した”0”の数をカウントして正規化丸め回路19と指数部補正回路20とに出力する。具体的には、2つのカウンタ103のうちMSB側のカウンタ103から最上位ビットの状態をチェックし、”1”である場合には次のカウンタ103のカウント値を加算して、結果を正規化丸め回路19と指数部補正回路20へ出力する。このカウンタ104の出力が、浮動小数点積和演算の中間結果を正規化するためのシフト量となる。カウンタ104は図8に示される回路で実現される。
【0052】
次に、正規化丸め回路19は、リーディングゼロ回路41内のカウンタ104の出力に基づいて、仮数部の正規化及び丸めを行って結果を選択回路23へ出力する。正規化丸め回路19の出力が浮動小数点積和演算結果の仮数部となる。
【0053】
次に、指数部補正回路20は、指数部加算器16の出力である符号と指数部加算結果とリーディングゼロ回路41の出力である正規化シフト量から指数部の補正を行い、浮動小数点積和演算結果の符号と指数部を算出する。
【0054】
最後に、選択回路23は、浮動小数点積和演算命令に基づいて、指数部補正回路20の出力と正規化丸め回路19の出力を併せて浮動小数点積和演算の演算結果として出力する。
【0055】
次に、固定小数点乗算を実行する場合の動作について説明する。図1において、前処理回路11、前処理回路12、前処理回路13、リーディングゼロ回路41及び選択回路23は、図示しない命令デコーダから図示しない制御信号線により固定小数点乗算命令実行が指定される。
【0056】
尚、固定小数点乗算命令の実行時においては、浮動小数点積和演算にのみ関連する加算器15、指数部加算器16、指数部減算器17、シフト回路18、正規化丸め回路19及び指数部補正回路20の動作及び出力は、特に意味を持たない。
【0057】
まず、前処理回路11及び前処理回路12は固定小数点乗算命令に従い、”0”を指数部として第1及び第2オペランドの指数部を指数部加算器16へ、第1及び第2オペランドの64bit全てを仮数部として乗算回路14へ出力する。
【0058】
同時に、前処理回路13は固定小数点乗算命令に従い、”0”を指数部として第3オペランドの指数部を指数部減算器17へ、第3オペランドの仮数部を”0”としてシフト回路18へ出力する。
【0059】
次に、乗算回路14は、入力された64bitの第1オペランド仮数部を乗数として、第2オペランド仮数部を被乗数として乗算を行い、乗算結果(127bit)を固定小数点オーバーフロー判定回路22及び選択回路23へ出力する。この127bitの乗算結果の内の下位64bitが固定小数点乗算の乗算結果となる。
【0060】
次に、図2を参照して、リーディングゼロ回路41の動作を詳細に説明する。まず、リーディングゼロ回路41は、固定小数点乗算命令に基づいてセレクタ100にて第1オペランドと第2オペランドを並べた128bitを選択し、選択結果が4bitずつカウンタ101に入力する。
【0061】
続く、カウンタ101及びカウンタ102の動作は、浮動小数点積和演算命令において説明した動作と同じである。
【0062】
更に続けて、カウンタ103は、4つのカウンタ102の出力である5ビットのカウント値をそれぞれ入力し、MSBから連続した”0”の数をカウントして固定小数点オーバーフロー判定回路22へ出力する。具体的には、4つのカウンタ102のうちMSB側のカウンタ102から最上位ビットの状態をチェックし、”1”である場合には次のカウンタ102のカウント値を加算し、4つ目のカウンタ102まで同様の操作を行い、結果を固定小数点オーバーフロー判定回路22へ出力する。2つのカウンタ103の出力が第1オペランドと第2オペランドそれぞれのMSBからのリーディングゼロ結果となる。尚、固定小数点乗算命令の実行時においては、カウンタ104の動作及び出力は、特に意味を持たない。
【0063】
固定小数点オーバーフロー判定回路22は、乗算回路14の出力及びリーディングゼロ回路41の出力である第1オペランドと第2オペランドそれぞれのMSBからのリーディングゼロ結果より固定小数点オーバーフローの判定を行い、判定結果を選択回路23へ出力する。固定小数点乗算のオーバーフロー検出については、各オペランドのMSBから連続した“0”の数を計上して合計が一定数以内の場合にオーバーフローとする技術が、周知である。
【0064】
選択回路23は、固定小数点乗算命令に基づいて、乗算回路14の出力127bitのうち下位64bitを固定小数点乗算の演算結果として出力する。演算結果の出力の際に固定小数点オーバーフロー判定回路22の出力がオーバーフローを示している場合には予め定められたフォーマットの値(例えば最大数)を固定小数点乗算の演算結果として出力する。
【0065】
上述した本実施形態における第1の効果は、浮動小数点積和演算あるいは固定小数点乗算がそれぞれ実行される場合に、無効な電力消費の発生を低減することが可能になる点である。
【0066】
その理由は、浮動小数点積和演算用のリーディングゼロ回路と固定小数点乗算用のリーディングゼロ回路とを共用化し、それぞれの動作において電力を消費する必要のない回路を削減したからである。
【0067】
上述した本実施形態における第2の効果は、ハードウェア量を削減することが可能になる点である。
【0068】
その理由は、浮動小数点積和演算用のリーディングゼロ回路と固定小数点乗算用のリーディングゼロ回路とを共用化したからである。
【0069】
次に、本発明の第2の実施形態について図面を参照して詳細に説明する。ここでは、固定小数点乗算に替えて浮動小数点単精度データ形式のデータについて浮動小数点積和演算をサポートする積和演算処理装置10を例に説明する。また、第1の実施形態と同様の部分については説明を省略し、異なる部分についてのみ説明する。
【0070】
本発明の第2の実施形態は、第1の実施形態に比べて、リーディングゼロ回路41が図9に示すリーディングゼロ回路51に変更されている。
【0071】
図9を参照すると、リーディングゼロ回路51は、浮動小数点単精度データ形式積和演算命令に基づいて、リーディングゼロ回路41における第1及び第2オペランドに替えて、加算器15の出力のうち上位64bitを2つ並べて入力する。
【0072】
リーディングゼロ回路51は、2つのカウンタ103の出力を比較する比較回路105を有している。
【0073】
浮動小数点単精度データ形式積和演算命令時には、リーディングゼロ回路51は、まず、加算器15の出力のうち上位64bitを2つ並べて入力したものをセレクタ100にて選択する。
【0074】
続けて、カウンタ101及びカウンタ102が、第1の実施形態と同様の動作を行う。
【0075】
更に続けて、2つのカウンタ103それぞれは、4つのカウンタ102の出力である5ビットのカウント値をそれぞれ入力し、MSBからの”0”の数をカウントして比較回路105へ出力する。また、2つのカウンタ103の内のいずれか一方は、MSBからの”0”の数をカウントした結果を正規化丸め回路19と指数部補正回路20へ出力する。
【0076】
次に、比較回路105が、2つのカウンタ103の出力を比較し、これらが一致していない場合エラーを出力する。
【0077】
上述した本実施形態における効果は、運用中におけるリーディングゼロ回路51の自律的な故障検出をすることが可能になる点である。
【0078】
その理由は、浮動小数点倍精度データ形式積和演算用のリーディングゼロ回路と浮動小数点単精度データ形式積和演算用のリーディングゼロ回路とを共用化し、浮動小数点単精度データ形式積和演算実行時に並列に計算したMSBからの”0”の数を比較するようにしたからである。
【0079】
次に、本発明の第3の実施形態について図面を参照して詳細に説明する。
【0080】
図10を参照すると、本発明の第3の実施形態は、第1の演算回路62と第2の演算回路63と第3の演算回路64とリーディングゼロ回路61を備えている。
【0081】
リーディングゼロ回路61は、セレクタ100と複数の第1のカウンタ601と第2のカウンタ602とを有している。
【0082】
セレクタ100は、通知された演算命令に基づいて、演算命令に対応する予め定められたサイズの入力データを選択する
第1のカウンタ601は、セレクタ100が選択した入力データを複数の部分データに分割してそれぞれ入力し、この入力した部分データ毎にMSBから連続している0の数を計数して第1のリーディングゼロカウントとしてそれぞれ出力する。
【0083】
第2のカウンタ602は、全ての第1のカウンタ601がそれぞれ出力した第1のリーディングゼロカウントに基づいて、入力データについてMSBから連続している0の数を計数し、この計数した0の数を第2のリーディングゼロカウントとして出力する。
【0084】
第1の演算回路62は、リーディングゼロ回路61から第1のリーディングゼロカウントを入力して演算を行う。
【0085】
第2の演算回路63は、リーディングゼロ回路61から第2のリーディングゼロカウントを入力して演算を行う。
【0086】
第3の演算回路64は、演算命令を受け、第1の演算回路62と第2の演算回路63とリーディングゼロ回路61と連携して演算を行う。
【0087】
尚、第3の演算回路64は、入力データの基である演算命令に付随するオペランドを保持する記憶回路を有していてもよい。
【0088】
上述した本実施形態における第1の効果は、異なる演算処理(例えば浮動小数点積和演算及び固定小数点乗算)がそれぞれ実行される場合に、無効な電力消費の発生を低減することが可能になる点である。
【0089】
その理由は、複数種類の演算命令について、セレクタ100を含むリーディングゼロ回路61を共用化し、それぞれの動作において電力を消費する必要のない回路を削減したからである。
【0090】
次に、本発明の第4の実施形態について図面を参照して詳細に説明する。
【0091】
図11を参照すると、本発明の第4の実施形態は、第1の演算手段74と第2の演算手段72とリーディングゼロ手段71とを備えている。リーディングゼロ手段71は、選択手段75を含んでいる。
【0092】
選択手段75は、通知された演算命令に基づいて、この演算命令に対応する予め定められたサイズの入力データを選択する。
【0093】
リーディングゼロ手段71は、入力データを構成する複数の部分データのそれぞれについて、その最上位ビットから連続している0の数を計数して第1のリーディングゼロカウント711として出力するとともに、これらの複数の部分データのそれぞれについて計数された第1のリーディングゼロカウント711に基づいて入力データについてその最上位ビットから連続している0の数を計数してこの計数した0の数を第2のリーディングゼロカウント712として出力する。
【0094】
第1演算手段74は、第1のリーディングゼロカウント711を入力してその演算命令に基づいた演算を行うとともに、第2のリーディングゼロカウント712を入力してその演算命令に基づいた演算を行う。
【0095】
第2演算手段72は、第1の演算手段74及びリーディングゼロ手段71と連携してその演算命令に基づいた演算を行う。
【0096】
上述した本実施形態における第1の効果は、異なる演算処理(例えば浮動小数点積和演算及び固定小数点乗算)がそれぞれ実行される場合に、無効な電力消費の発生を低減することが可能になる点である。
【0097】
その理由は、複数種類の演算命令について、選択手段75を設けることでリーディングゼロ手段71を共用化し、それぞれの演算命令動作において電力を消費する必要のない回路を削減したからである。
【0098】
以上の各実施形態で説明した各構成要素は、必ずしも個々に独立した存在である必要はない。例えば、各構成要素は、複数の構成要素が1個のモジュールとして実現されたり、一つの構成要素が複数のモジュールで実現されたりしてもよい。また、各構成要素は、ある構成要素が他の構成要素の一部であったり、ある構成要素の一部と他の構成要素の一部とが重複していたり、といったような構成であってもよい。
【0099】
また、以上説明した各実施形態では、複数の動作をフローチャートの形式で順番に記載してあるが、その記載の順番は複数の動作を実行する順番を限定するものではない。このため、各実施形態を実施するときには、その複数の動作の順番は内容的に支障しない範囲で変更することができる。
【0100】
更に、以上説明した各実施形態では、複数の動作は個々に相違するタイミングで実行されることに限定されない。例えば、ある動作の実行中に他の動作が発生したり、ある動作と他の動作との実行タイミングが部分的に乃至全部において重複していたりしていてもよい。
【0101】
更に、以上説明した各実施形態では、ある動作が他の動作の契機になるように記載しているが、その記載はある動作と他の動作との全ての関係を限定するものではない。このため、各実施形態を実施するときには、その複数の動作の関係は内容的に支障のない範囲で変更することができる。また各構成要素の各動作の具体的な記載は、各構成要素の各動作を限定するものではない。このため、各構成要素の具体的な各動作は、各実施形態を実施する上で機能的、性能的、その他の特性に対して支障をきたさない範囲内で変更されて良い。
【0102】
尚、以上説明した各実施形態における各構成要素は、必要に応じ可能であれば、ハードウェアで実現されても良いし、ソフトウェアで実現されても良いし、ハードウェアとソフトウェアの混在により実現されても良い。
【0103】
また、各構成要素の物理的な構成は、以上の実施形態の記載に限定されることはなく、独立して存在しても良いし、組み合わされて存在しても良いしまたは分離して構成されても良い。
【産業上の利用可能性】
【0104】
本発明は、浮動小数点倍精度データ形式のデータについての浮動小数点積和演算と、固定小数点データ形式のデータについて固定小数点乗算や浮動小数点単精度データ形式のデータについての浮動小数点積和演算などとをサポートする積和演算処理装置に適用できる。
【符号の説明】
【0105】
10 積和演算処理装置
11 前処理回路
12 前処理回路
13 前処理回路
14 乗算回路
15 加算器
16 指数部加算器
17 指数部減算器
18 シフト回路
19 正規化丸め回路
20 指数部補正回路
22 固定小数点オーバーフロー判定回路
23 選択回路
41 リーディングゼロ回路
51 リーディングゼロ回路
100 セレクタ
101 カウンタ
102 カウンタ
103 カウンタ
104 カウンタ
105 比較回路

【特許請求の範囲】
【請求項1】
通知された演算命令に基づいて、該演算命令に対応する予め定められたサイズの入力データを選択する選択手段と、
前記入力データを構成する複数の部分データのそれぞれについて、その最上位ビットから連続している0の数を計数して第1のリーディングゼロカウントとして出力するとともに、該複数の部分データのそれぞれについて計数された該第1のリーディングゼロカウントに基づいて前記入力データについてその最上位ビットから連続している0の数を計数してこの計数した0の数を第2のリーディングゼロカウントとして出力するリーディングゼロ手段と、
前記第1のリーディングゼロカウントを入力して前記演算命令に基づいた演算を行うとともに、前記第2のリーディングゼロカウントを入力して前記演算命令に基づいた演算を行う第1の演算手段と、
前記第1の演算手段及び前記リーディングゼロ手段と連携して前記演算命令に基づいた演算を行う第2の演算手段と、
を有することを特徴とする演算装置。
【請求項2】
通知された演算命令に基づいて、該演算命令に対応する予め定められたサイズの入力データを選択するセレクタと、
それぞれが、前記入力データを構成する複数の部分データのうちの対応する一つを入力し、該入力した部分データの最上位ビットから連続している0の数を計数して第1のリーディングゼロカウントとして出力する複数の第1のカウンタと、
前記複数の第1のカウンタのそれぞれが出力した第1のリーディングゼロカウントに基づいて、前記入力データついて最上位ビットから連続している0の数を計数してこの計数した0の数を第2のリーディングゼロカウントとして出力する第2のカウンタと、
を含むリーディングゼロ回路と、
前記第1のリーディングゼロカウントを入力して前記演算命令に基づいた演算を行う第1の演算回路と、
前記第2のリーディングゼロカウントを入力して前記演算命令に基づいた演算を行う第2の演算回路と、
前記演算命令を受け、前記第1の演算回路と前記第2の演算回路と前記リーディングゼロ回路と連携して前記演算命令に基づいた演算を行う第3の演算回路と、
を有することを特徴とする演算装置。
【請求項3】
前記第2の演算回路は、浮動小数点倍精度データ形式の積和演算回路を構成する演算回路であって、前記第2のリーディングゼロカウントに基づいて積和演算出力を正規化する正規化丸め回路を含むことを特徴とする請求項2記載の演算装置。
【請求項4】
前記第1の演算回路は、固定小数点乗算回路を構成する演算回路であって、前記第1のリーディングゼロカウントに基づいて固定小数点のオーバーフローを予測する固定小数点オーバーフロー判定回路を含むことを特徴とする請求項3記載の演算装置。
【請求項5】
前記第1の演算回路は、浮動小数点単精度データ形式の積和演算回路を構成する演算回路であって、前記第1のリーディングゼロカウントに基づいて積和演算出力を正規化する正規化丸め回路を含み、
前記リーディングゼロ回路は、複数の前記第1のリーディングゼロカウントを比較して該複数の第1のリーディングゼロカウントの間で不一致を検出した場合にエラーを出力する比較回路を含む、
ことを特徴とする請求項3記載の演算装置。
【請求項6】
演算命令に含まれる第1のオペランド、第2のオペランド及び第3のオペランドを入力し、該演算命令に基づいてそれらのオペランドのそれぞれを符号と指数部と仮数部とに分割する前処理回路と、
前記第1のオペランド及び前記第2のオペランドについて前記前処理回路が分割したそれらオペランドの仮数部同士の乗算を行う乗算回路と、
前記第1のオペランド及び前記第2のオペランドについて前記前処理回路が分割したそれらオペランドの符号に基づいて前記乗算回路での演算結果の符合の判定を行い、前記第1のオペランド及び前記第2のオペランドについて前記前処理回路が分割したそれらオペランドの指数部同士の加算を行う指数部加算器と、
前記第3のオペランドについて前記前処理回路が分割した該オペランドの指数部と前記指数部加算器での加算結果との減算演算を行う指数部減算器と、
前記指数部減算器での減算結果に基づいて、前記第3のオペランドについて前記前処理回路が分割した該オペランドの仮数部のシフト処理を行うシフト回路と、
前記乗算回路での乗算結果と前記シフト回路でのシフト処理結果との加算を行う加算器と、
前記第1のオペランドと前記第2のオペランドと前記加算器での加算結果とを入力し、前記演算命令に基づいて前記第1のオペランドと前記第2のオペランドと前記加算器での加算結果とについてそれぞれの先頭からの”0”の数を計数するリーディングゼロ回路と、
前記リーディングゼロ回路が計数した先頭からの”0”の数に基づいて、前記加算器の出力の正規化処理と丸め処理を行う正規化丸め回路と、
前記リーディングゼロ回路が計数した先頭からの”0”の数に基づいて、前記指数部加算器の出力である指数部の補正を行う指数部補正回路と、
前記乗算回路での乗算結果と前記リーディングゼロ回路が計数した先頭からの”0”の数とに基づいて、オーバーフロー判定を行う固定小数点オーバーフロー判定回路と、
前記演算命令に基づいて、前記指数部補正回路での補正結果である符号及び指数部と前記正規化丸め回路の正規化処理と丸め処理の結果である仮数部とを連結した結果、または、前記乗算回路での乗算結果のいずれかを出力する選択回路と、
を有することを特徴とする積和演算処理装置。
【請求項7】
通知された演算命令に基づいて、該演算命令に対応する予め定められたサイズの入力データを選択する選択ステップと、
前記入力データを構成する複数の部分データのそれぞれについて、その最上位ビットから連続している0の数を第1のリーディングゼロカウントとして計数するとともに、該複数の部分データのそれぞれについて計数された該第1のリーディングゼロカウントに基づいて前記入力データについてその最上位ビットから連続している0の数を第2のリーディングゼロカウントとして計数するカウントステップと、
前記第1のリーディングゼロカウントを入力して前記演算命令に基づいた演算を行うとともに、前記第2のリーディングゼロカウントを入力して前記演算命令に基づいた演算を行う第1の演算ステップと、
前記第1の演算ステップ及び前記カウントステップと連携して前記演算命令に基づいた演算を行う第2の演算ステップと、
を有することを特徴とする演算方法。
【請求項8】
通知された演算命令に基づいて、該演算命令に対応する予め定められたサイズの入力データを選択する選択ステップと、
前記入力データを複数の部分データに分割し、該複数の部分データのそれぞれについて、その最上位ビットから連続している0の数を計数する第1のカウントステップと、
前記第1のカウントステップにおいて得られた全ての係数結果に基づいて、前記入力データについて最上位ビットから連続している0の数を計数する第2のカウントステップと、
前記第1のカウントステップでの計数結果に対して前記演算命令に基づいた演算を行う第1の演算ステップと、
前記第2のカウントステップでの計数結果に対して前記演算命令に基づいた演算を行う第2の演算ステップと、
前記第1及び第2のカウントの演算ステップ及び前記第2の演算ステップでの演算結果ならびに前記第1及び第2のカウントステップでの計数結果に基づき前記演算命令に従った演算を行う第3の演算ステップと、
を有することを特徴とする演算方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate


【公開番号】特開2011−34383(P2011−34383A)
【公開日】平成23年2月17日(2011.2.17)
【国際特許分類】
【出願番号】特願2009−180447(P2009−180447)
【出願日】平成21年8月3日(2009.8.3)
【出願人】(000168285)エヌイーシーコンピュータテクノ株式会社 (572)
【Fターム(参考)】