(57)【要約】【課題】少ない回路構成により、固定小数点数及び浮動小数点数の演算を行なえるようにする。【解決手段】命令信号が入力された場合に固定小数点数の特定ビットを出力し、命令信号が入力されなかった場合に浮動小数点数の指数部を出力する選択回路１１１と、選択回路から出力された特定ビット又は指数部に対して所定の演算を実施する第１演算回路１１３と、を備える。【選択図】図１１
2020071642.tif 000002
【特許請求の範囲】
【請求項１】
命令信号が入力された場合に固定小数点数の特定ビットを出力し、前記命令信号が入力されなかった場合に浮動小数点数の指数部を出力する選択回路と、
前記選択回路から出力された前記特定ビット又は前記指数部に対して所定の演算を実施する第１演算回路と、
を備える、演算処理装置。
【請求項２】
前記固定小数点数における前記特定ビット以外のビット又は前記浮動小数点数の仮数部に対して所定の演算を実施すると共に、前記特定ビット以外のビット又は前記仮数部に含まれる丸め情報に基づいて前記特定ビット以外のビット又は前記仮数部に対する丸め処理を実行する第２演算回路
を更に備える、請求項１に記載の演算処理装置。
【請求項３】
前記第２演算回路は、前記特定ビット以外のビット又は前記仮数部に対する所定の演算によって、前記特定ビット以外のビット又は前記仮数部において桁上がりが発生した場合に、前記第１演算回路に対して桁上がり指示を発行し、
前記第１演算回路は、前記第２演算回路からの前記桁上がり指示の受信に応じて、前記特定ビット又は前記指数部に対して桁上がり処理を実施する、
請求項２に記載の演算処理装置。
【請求項４】
命令信号が入力された場合に固定小数点数の特定ビットを出力し、前記命令信号が入力されなかった場合に浮動小数点数の指数部を出力し、
出力された前記特定ビット又は前記指数部に対して所定の演算を実施する、
演算処理装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、演算処理装置及びその制御方法に関する。
【背景技術】
【０００２】
コンピュータにおいて扱われる数値には、大別して、浮動小数点数と固定小数点数との２種類がある。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開平５−１７３７５９号公報
【特許文献２】特開２００９−９３６６２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
浮動小数点積和演算器を使用して固定小数点数への変換命令を実行しようとした場合には、浮動小数点数よりも固定小数点数の仮数部のビット幅が大きいため、丸め操作による桁上がりを計算するよりも多くの桁数を計算可能な加算器が使用される。
【０００５】
これにより、浮動小数点積和演算器において、専用又は追加の加算器が追加されて回路面積が大きくなるおそれがある。
【０００６】
また、浮動小数点数と固定小数点数とのそれぞれの形式に合せて演算結果が出力されるため、浮動小数点積和演算器において、形式変換のための回路が追加されて回路面積が大きくなるおそれがある。
【０００７】
１つの側面では、少ない回路構成により、固定小数点数及び浮動小数点数の演算を行なえるようにすることを目的とする。
【課題を解決するための手段】
【０００８】
演算処理装置は、命令信号が入力された場合に固定小数点数の特定ビットを出力し、前記命令信号が入力されなかった場合に浮動小数点数の指数部を出力する選択回路と、前記選択回路から出力された前記特定ビット又は前記指数部に対して所定の演算を実施する第１演算回路と、を備える。
【発明の効果】
【０００９】
１つの側面では、少ない回路構成により、固定小数点数及び浮動小数点数の演算を行なうことができる。
【図面の簡単な説明】
【００１０】
【図１】単精度浮動小数点数の形式を示す図である。
【図２】固定小数点数の形式を示す図である。
【図３】関連例における浮動小数点数から固定小数点数への変換を説明する図である。
【図４】関連例における最近点への丸めモードを説明する図である。
【図５】関連例における最近点への丸めモードを説明するテーブルである。
【図６】関連例としての浮動小数点積和演算器における演算処理を説明するシーケンス図である。
【図７】関連例としての浮動小数点積和演算器における演算処理を説明するシーケンス図である。
【図８】関連例における浮動小数点演算の際の丸めを実施する回路を例示する図である。
【図９】関連例における固定小数点数変換の際の丸めを実施する回路を例示する図である。
【図１０】実施例における演算処理システムのハードウェア構成例を示すブロック図である。
【図１１】図１０に示した浮動小数点積和演算器における固定小数点変換の際の丸めを実施する回路を例示する図である。
【図１２】図１０に示した浮動小数点積和演算器の構成を説明するブロック図である。
【図１３】図１０に示した浮動小数点積和演算器の構成を説明するブロック図である。
【図１４】図１０に示した浮動小数点積和演算器における浮動小数点の指数算出処理を説明するフローチャートである。
【発明を実施するための形態】
【００１１】
以下、図面を参照して一実施の形態を説明する。ただし、以下に示す実施形態はあくまでも例示に過ぎず、実施形態で明示しない種々の変形例や技術の適用を排除する意図はない。すなわち、本実施形態を、その趣旨を逸脱しない範囲で種々変形して実施することができる。
【００１２】
また、各図は、図中に示す構成要素のみを備えるという趣旨ではなく、他の機能等を含むことができる。
【００１３】
以下、図中において、同一の各符号は同様の部分を示しているので、その説明は省略する。
【００１４】
〔Ａ〕関連例
図１は、単精度浮動小数点数の形式を示す図である。
【００１５】
図１に示す３２ビットの単精度浮動小数点数は、符号部，仮数部及び指数部を含む。符号部は、１ビットであり、０を正とし、１を負とする。仮数部は、２３ビットであり、整数部が１であるような２進小数部分を表わす。なお、整数部の１は表現されない。指数部は、８ビットであり、符号なし２進数として、１２７のゲタを履かせたゲタ履き表現で表わせる。
【００１６】
図１に示す単精度浮動小数は、一般に、以下の数式で表現される。
（−１）符号部×２指数部−１２７×（１＋仮数部）
【００１７】
図２は、固定小数点数の形式を示す図である。
【００１８】
固定小数点数は、小数点が置かれる桁を固定して表わされた数を示す。整数部及び小数部分のビット数がＱ表記で表わされる。
【００１９】
図１に示す小数点位置は、整数部のビット数が３１であり、小数部のビット数が０のため、Ｑ３１．０表記と称される。
【００２０】
浮動小数点及び固定小数点を相互に使用するための数値変換命令が存在する。
【００２１】
図３は、関連例における浮動小数点数から固定小数点数への変換を説明する図である。
【００２２】
浮動小数点の仮数部（暗黙の“１”を含む。）が、指数部で示された量に応じて、出力する固定小数点位置に合せてシフトされる（符号Ａ１参照）。
【００２３】
例えば、指数部＝１２７（ゲタを除く指数＝０）の場合には、小数点位置は、２０の桁である第２３ビットとなる。また、指数部＝１４３（ゲタを除く指数＝１６）の場合には、小数点位置は、２１６の桁である第７ビットとなる。
【００２４】
シフト済みの仮数に対して、浮動小数点数の符号部が負であれば２の補数がとられる（符号Ａ２参照）。符号部が正の場合には、仮数はそのままの値となる。
【００２５】
そして、丸め処理が実行される（符号Ａ３参照）。
【００２６】
符号Ａ１に示したシフトの結果、演算結果が固定小数点で表現可能な桁の外にはみ出る場合がある。そのため、演算精度を保つために、符号Ａ３に示した丸め処理が行なわれる。
【００２７】
図４は、関連例における最近点への丸めモードを説明する図である。図５は、関連例における最近点への丸めモードを説明するテーブルである。
【００２８】
図４に示すように、最近点への丸めモードを実施するにあたり、有効桁の最小位ビットはunit in the last place（ｕｌｐ）と称され、ｕｌｐよりも下位の大きさを判断するガードビット（Ｇ），ラウンドビット（Ｒ）及びスティッキビット（Ｓ）が定義されている。
【００２９】
ガードビットは、１／２ｕｌｐの重みを持つビットである。ラウンドビットは、１／４ｕｌｐの重みを持つビットである。スティッキビットは、ラウンドビットより重みの小さいビットの論理和（ＯＲ）をとった値である。
【００３０】
ｕｌｐ／Ｇ／Ｒ／Ｓの各ビットの値による丸めの操作は、図５に示される条件の場合に、ｕｌｐに＋１を加算することによって行なわれる。
【００３１】
図６及び図７は、関連例としての浮動小数点積和演算器６００における演算処理を説明するシーケンス図である。
【００３２】
図６に示す例では、浮動小数点数から固定小数点数への変換命令を浮動小数点積和演算器６００で実行する。浮動小数点積和演算器６００は、演算命令制御部６１１，符号処理部６１２，指数処理部６１３及び仮数処理部６１４としての機能を備える。
【００３３】
図６に示すように、演算命令制御部６１１は、命令種別を、符号処理部６１２，指数処理部６１３，仮数処理部６１４へ通知する。
【００３４】
指数処理部６１３は、桁合せシフト量算出部にて、加算指数，被乗数指数及び乗数指数に基づき、シフト量を算出し、算出したシフト量を仮数処理部６１４へ指示する（ステップＳ１）。
【００３５】
仮数処理部６１４は、桁合せシフタにて、指数処理部６１３からのシフト量指示に基づき、桁合せのシフトを実施する（ステップＳ２）。
【００３６】
符号処理部６１２は、符号計算部にて、加算符号，被乗数符号及び乗数符号に基づき、符号計算を行ない、仮数処理部６１４に対して演算指示を行なう（ステップＳ３）。また、図７に示すように、符号計算に基づき、符号演算結果が出力される。
【００３７】
仮数処理部６１４は、補数処理部にて、符号処理部６１２からの演算指示に基づき、補数処理を行なう（ステップＳ４）。そして、処理はステップＳ７へ進む。
【００３８】
仮数処理部６１４は、ブースエンコード部にて、被乗数仮数及び乗数仮数に基づき、ブースの演算アルゴリズムに従ったエンコードを実施する（ステップＳ５）。
【００３９】
仮数処理部６１４は、乗算ツリーにて、ｓｕｍ信号及びｃａｒｒｙ信号を出力する（ステップＳ６）。
【００４０】
仮数処理部６１４は、桁上げ保存加算器にて、ｓｕｍ信号及びｃａｒｒｙ信号を出力する（ステップＳ７）。
【００４１】
仮数処理部６１４は、桁上げ伝搬加算器にて、桁上げ保存加算器からのｓｕｍ信号及びｃａｒｒｙ信号に基づき、桁上げ情報を次のビット計算へ順番に送る（ステップＳ８）。そして、処理は図７のステップＳ１１へ進む。
【００４２】
仮数処理部６１４は、桁落ち予測部にて、桁上げ保存加算器からのｓｕｍ信号及びｃａｒｒｙ信号に基づき、桁落ち量予測値を算出し、算出した桁落ち量予測値を指数処理部６１３に通知する（ステップＳ９）。
【００４３】
指数処理部６１３は、正規化シフト量算出部にて、仮数処理部６１４からの桁落ち量予測値に基づき、正規化シフト量を算出する（ステップＳ１０）。図７に示すように、算出された正規化シフト量は、仮数処理部６１４に指示される。
【００４４】
図７において、仮数処理部６１４は、正規化シフタにて、指数処理部６１３からの正規化シフト量指示に基づき、シフト処理が実施される（ステップＳ１１）。
【００４５】
仮数処理部６１４は、丸め回路６（図８参照）にて、正規化シフタからの出力に基づき、丸め処理を実施して仮数演算結果を出力し、指数処理部６１３に桁上がり指示を発行する（ステップＳ１２）。
【００４６】
指数処理部６１３は、浮動小数点指数算出部にて、正規化シフト量算出部からの出力と、仮数処理部６１４からの桁上がり指示とに基づき、指数演算結果を出力する（ステップＳ１３）。
【００４７】
そして、符号演算結果と指数演算結果と仮数演算結果とに基づき、固定小数点数の演算結果が出力される（ステップＳ１４）。
【００４８】
図８は、関連例における浮動小数点演算の際の丸めを実施する回路を例示する図である。
【００４９】
丸め回路６には、正規化シフタにて桁落ちした仮数部が左シフトされて、暗黙の“１”のビットを含む仮数部のデータが丸め前の仮数演算結果６０１として入力される。その際、丸めに使用されるＧ／Ｒ／Ｓ（別言すれば、「以降のビットの論理和をまとめて１ビットにされた値」）も同時に入力される。
【００５０】
ｕｌｐ／Ｇ／Ｒ／Ｓを用いて丸め判定６２を行なうと同時に、仮数部のビット「２２」からビット「０」（別言すれば、「ｕｌｐビット」）が加算器６１に入力される。
【００５１】
丸め判定６２の結果、丸め操作が必要な場合には加算器６１の出力が丸め後仮数演算結果として出力され、丸め操作が不要の場合にはビット「２２〜０」がそのまま出力される。
【００５２】
同時に、ビット「２２〜０」が全て“１”である場合には、加算器６１から桁上がり信号が出力される。この際に、丸め操作が必要な場合には丸めの結果により指数の桁上がりが必要なことを通知するため、論理積回路６３を介して、浮動小数点の指数算出部７に対して指数桁上がり指示が出力される。
【００５３】
浮動小数点の指数算出部７では、桁落ち量予測値により補正した指数値を丸め前指数演算結果６０２として受信する。そして、丸め回路６から指数桁上がり指示があった場合には加算器７１により補正した指数に＋１が出力され、桁上がり指示がない場合には補正した指数がそのまま出力される。
【００５４】
丸め回路６からの仮数演算結果と、浮動小数点の指数算出部７からの指数演算結果と、符号処理部６１２からの符号とが纏められて、演算結果６０３として出力される。
【００５５】
図９は、関連例における固定小数点数変換の際の丸めを実施する回路を例示する図である。
【００５６】
丸め回路６には、シフト処理及び補数処理後の丸め前仮数演算結果７０１のビット「３０〜０」及び丸めに使用されるＧ／Ｒ／Ｓが入力される。この場合、浮動小数点の丸めの際には、入力されるビット数が多くなるため、より大きな加算器が必要となる。
【００５７】
図９に示す例では、なるべく物量を少なくするため、追加のビット「３０〜２３」が入力される加算器６４が追加される。加算器６４は、加算器６１が桁上がり信号を出力した場合に、加算動作を行なう。
【００５８】
丸め判定６２の結果、丸め操作が必要な場合には加算器６１及び追加した加算器６４の出力が丸め後仮数演算結果として出力され、丸め操作が不要の場合にはビット「３０〜０」がそのまま出力される。
【００５９】
演算結果を出力する際に、固定小数点変換命令の場合には、浮動小数点の指数演算結果の代わりに、丸め後の整数演算結果のビット「３０〜２３」が出力される。また、ビット「２２〜０」は、浮動小数点数演算の場合と同様に丸め後仮数演算結果がそのまま出力される。
【００６０】
選択回路８は、丸め回路６と浮動小数点の指数算出部７とからの入力のうち、少なくとも一方を出力する。選択回路８は、固定小数点変換命令の場合には、丸め回路６からの入力に限って出力する。これにより、演算結果７０３が出力される。
【００６１】
浮動小数点積和演算器を使用して固定小数点数への変換命令を実行しようとした場合には、浮動小数点数よりも固定小数点数の仮数部のビット幅が大きいため、丸め操作による桁上がりを計算するよりも多くの桁数を計算可能な加算器が使用される。
【００６２】
これにより、浮動小数点積和演算器において、専用又は追加の加算器が追加されて回路面積が大きくなる。
【００６３】
また、演算結果を出力する際に、浮動小数点数と固定小数点数とのそれぞれの形式に合せて出力されるため、浮動小数点積和演算器において、形式変換のための回路が追加されて回路面積が大きくなる。
【００６４】
ここで、図９に示す固定小数点変換の際の丸めを実施する回路において、固定小数点変換の際には使用されていない浮動小数点の指数算出部７の加算器７１に着目する。
【００６５】
浮動小数点の指数算出部７の加算器７１と、丸め回路６において固定小数点変換命令用に追加した加算器６４とは、いずれも８ビットの幅を有する。
【００６６】
また、浮動小数点の指数算出部７の加算器７１は、固定小数点変換命令の際には使用されていない。
【００６７】
更に、丸め回路６の加算器６１から浮動小数点の指数算出部７へは、桁上がり信号が接続されている。従って、固定小数点変換命令の実行の際に浮動小数点の指数算出部７の加算器７１を使用するように変更できれば、追加の加算器を付加することなく丸め操作による桁上がりの加算を実行できる。
【００６８】
〔Ｂ〕実施形態の一例
〔Ｂ−１〕システム構成例
図１０は、実施例における演算処理システム１０００のハードウェア構成例を示すブロック図である。
【００６９】
近年、様々な分野においてDeep Learning技術の実用化が進んでおり、Graphics Processing Unit（ＧＰＵ）に代表されるような多数の演算器を搭載したプロセッサが存在する。また、Deep Learningにおいては、たたみこみ演算（convolution）等のために積和演算を多量に処理できるプロセッサが搭載される。
【００７０】
演算処理システム１０００は、Peripheral Component Interconnect（ＰＣＩ）カード１００及びホストプロセッサ３を備える。
【００７１】
ホストプロセッサ３は、ＰＣＩ  Ｅｘｐｒｅｓｓを介して、ＰＣＩカード１００に対して種々の命令を発行する。
【００７２】
ＰＣＩカード１００は、プロセッサ１及びメモリ２を備える。
【００７３】
メモリ２は、例示的に、Read Only Memory（ＲＯＭ）及びRandom Access Memory（ＲＡＭ）を含む記憶装置である。
【００７４】
ＧＰＵと同様にＰＣＩカード１００に実装されているプロセッサ１には、積和演算を多量に処理するために、浮動小数点積和演算器が搭載された処理ユニット１０が多数搭載されている。プロセッサ１は、複数の処理ユニット１０，全体命令制御部１５，メモリコントローラ１６及びＰＣＩ制御部１７を備える。
【００７５】
なお、図１０においては、複数の処理ユニットのうち、一部の処理ユニットに限って符号「１０」が示され、他の処理ユニットにおける符号の図示は省略されている。
【００７６】
全体命令制御部１５は、プロセッサ１全体の動作を制御する。
【００７７】
メモリコントローラ１６は、プロセッサ１とメモリ２との間の入出力を制御する。
【００７８】
ＰＣＩ制御部１７は、プロセッサ１とホストプロセッサ３との間のＰＣＩ  Ｅｘｐｒｅｓｓを介した入出力を制御する。
【００７９】
処理ユニット１０は、浮動小数点積和演算器１１，ベクタレジスタの一部１２，演算命令制御部１３及び演算命令バッファ１４を備える。各処理ユニット１０において、浮動小数点積和演算器１１及びベクタレジスタの一部１２は、複数組備えられる。
【００８０】
演算命令バッファ１４は、メモリコントローラ１６から入力された演算命令をバッファする。
【００８１】
演算命令制御部１３は、全体命令制御部１５からの制御に従い、演算命令バッファ１４にバッファされた演算命令を制御について、浮動小数点積和演算器１１及びベクタレジスタの一部１２に指示する。
【００８２】
ベクタレジスタの一部１２には、演算命令のベクタの値が入力される。
【００８３】
浮動小数点積和演算器１１は、演算処理装置の一例であり、浮動小数点演算及び固定小数点演算を実行する。
【００８４】
図１１は、図１０に示した浮動小数点積和演算器１１における固定小数点変換の際の丸めを実施する回路を例示する図である。
【００８５】
浮動小数点積和演算器１１は、選択回路１１１，丸め回路１１２及び浮動小数点の指数算出部１１３を備える。
【００８６】
選択回路１１１は、固定小数点変換命令（「命令信号」と称してもよい。）が入力された場合に固定小数点数の特定ビット（例えば、上位ビット）を出力し、固定小数点変換命令が入力されなかった場合に浮動小数点数の指数部を出力する。
【００８７】
固定小数点変換命令の際に、浮動小数点の指数算出部１１３の加算器１１３１が使用できるようにする。このために、関連例において丸め回路１１２に入力されていた丸め前仮数演算結果１０１の上位ビット「３０〜２３」が、演算命令制御部１３からの指示により、丸め前指数演算結果に代えて浮動小数点の指数算出部１１３に入力されるように接続される。これにより、浮動小数点の指数算出部１１３と丸め回路１１２とが連携して、固定小数点変換の際の丸め動作を行なえる。
【００８８】
すなわち、丸め判定１１２１により丸め回路１１２において丸め操作が必要な場合には、丸め回路１１２のビット「２２〜０」の部分１０２が入力された加算器１１２２の値が出力される。一方、丸め操作が不要な場合には、ビット「２２〜０」の部分１０２がそのまま丸め後仮数演算結果として出力される。
【００８９】
また、丸め操作が必要でかつビット「２２〜０」が全て“１”の場合には、数指数桁上がり指示が論理積回路１１２３を介して浮動小数点の指数算出部１１３に対して出力される。
【００９０】
これらの動作は、浮動小数点演算の際と固定小数点変換の際とで、同じ動作となる。
【００９１】
浮動小数点の指数算出部１１３においては、固定小数点変換命令の際には演算命令制御部１３からの指示により、丸め前仮数演算結果の上位ビット「３０〜２３」の部分１０３が入力される。これにより、丸め操作が必要かつビット「２２〜０」が全て“１”の場合には指数桁上がり指示が丸め回路１１２から出力される。そして、指数桁上がり指示に基づいて浮動小数点の指数算出部１１３の仮数演算結果の上位ビット「３０〜２３」を入力した加算器１１３１の結果が丸め後仮数演算結果として出力される。
【００９２】
丸め操作が不要又はビット「２２〜０」が全て“１”でない場合には、指数桁上がり指示が丸め回路１１２から出力されないため、仮数演算結果の上位ビット「３０〜２３」の部分１０３がそのまま丸め後仮数演算結果として出力される。
【００９３】
更に、演算結果１０４を出力する場合には、丸め後仮数演算結果の上位ビット「３０〜２３」を関連例における指数部と同じ場所に出力できるため、図９に示した浮動小数点の指数演算結果と、固定小数点変換の際の丸め後仮数演算結果との選択回路８も不要となる。
【００９４】
別言すれば、浮動小数点の指数算出部１１３は、選択回路１１１から出力された特定ビット又は指数部に対して所定の演算を実施する第１演算回路の一例である。また、丸め回路１１２は、固定小数点数における記特定ビット以外のビット又は浮動小数点数の仮数部に対して所定の演算を実施すると共に、特定ビット以外のビット又は仮数部に含まれる丸め情報に基づいて特定ビット以外のビット又は仮数部に対する丸め処理を実行する第２演算回路の一例である。
【００９５】
丸め回路１１２は、特定ビット以外のビット又は仮数部に対する所定の演算によって、特定ビット以外のビット又は仮数部において桁上がりが発生した場合に、浮動小数点の指数算出部１１３に対して桁上がり指示を発行する。浮動小数点の指数算出部１１３は、丸め回路１１２からの桁上がり指示の受信に応じて、特定ビット又は指数部に対して桁上がり処理を実施する。
【００９６】
図１２及び図１３は、図１０に示した浮動小数点積和演算器１１の構成を説明するブロック図である。
【００９７】
図１２及び図１３に示すように、浮動小数点積和演算器１１は、符号処理部２１，指数処理部２２及び仮数処理部２３として機能する。符号処理部２１，指数処理部２２及び仮数処理部２３は、演算命令制御部１３からの制御に従って動作する。
【００９８】
符号処理部２１は、図１２に示すように、符号計算部２１１を備える。
【００９９】
指数処理部２２は、図１２に示すように桁合せシフト量算出部２２１を備えると共に、図１３に示すように浮動小数点の指数算出部１１３を備える。
【０１００】
仮数処理部２３は、図１２に示すように桁合せシフタ２３１，補数処理部２３２，ブースエンコード部２３３，乗算ツリー２３４，桁上げ保存加算器２３５及び桁上げ伝搬加算器２３６を備えると共に、図１３に示すように正規化シフタ２３７及び丸め回路１１２を備える。
【０１０１】
関連例における図３において、符号Ａ１で示した出力の小数点位置に合せるシフト操作と、符号Ａ２で示した符号が負である場合の補数処理とについては、浮動小数点積和演算器１１に備わっている加算機能を使用して実現できる。
【０１０２】
すなわち、図３の符号Ａ１におけるシフト操作については、乗算結果の仮数と加算対象の仮数とを加算する場合に、双方の小数点位置が異なるため、桁合せを実施する桁合せシフタ２３１が使用される。
【０１０３】
図３の符号Ａ２における補数処理については、乗算結果の符号及び加算数の符号の関係により、実際の演算が減算処理になる場合に、加算対象の仮数の補数処理を行なってから加算させるための補数処理部２３２が使用される。
【０１０４】
以下、図１２及び図１３を用いて、浮動小数点積和演算器１１における固定小数点への変換処理を説明する。
【０１０５】
図１２に示すよう、演算命令制御部１３は、固定小数点変換命令の入力を受け、符号処理部２１，指数処理部２２及び仮数処理部２３に対して、固定小数点命令を実施することを指示する（符号Ｂ１〜Ｂ３参照）。また、演算命令制御部１３は、仮数処理部２３に対して、乗数仮数が“０”であることを入力する（符号Ｂ４参照）。
【０１０６】
指数処理部２２の桁合せシフト量算出部２２１は、固定小数点変換命令を受け取った場合に、変換したい浮動小数点数の指数部を参照する。そして、桁合せシフト量算出部２２１は、最終的な加算結果（別言すれば、「桁上げ伝搬加算器２３６の出力」）の最上位ビットが、出力したい固定小数点のビット「３０」となる位置になるように、暗黙の“１”を含む浮動小数点数の仮数部をシフトさせる。そのため、桁合せシフト量算出部２２１は、仮数処理部２３の桁合せシフタ２３１に対して、シフト量指示（別言すれば、「出力位置調整量指示」）を入力する（符号Ｂ５参照）。
【０１０７】
仮数処理部２３の桁合せシフタ２３１は、指数処理部２２からのシフト量指示に基づき、桁合せのシフトを実施する。
【０１０８】
符号処理部２１の符号計算部２１１は、固定小数点変換命令を受け取った場合に、変換したい浮動小数点数の符号が負であれば、仮数処理部２３の補数処理部２３２に対して減算指示（別言すれば、「補数変換指示」）を入力する（符号Ｂ６参照）。
【０１０９】
仮数処理部２３の補数処理部２３２は、符号処理部２１からの減算指示に基づき、補数処理を行なう。
【０１１０】
仮数処理部６１４のブースエンコード部２３３は、被乗数仮数及び乗数仮数に基づき、ブースの演算アルゴリズムに従ったエンコードを実施する。
【０１１１】
仮数処理部６１４の乗算ツリー２３４は、ｓｕｍ信号及びｃａｒｒｙ信号を出力する。
【０１１２】
ここで、仮数処理部２３において乗算仮数には“０”が設定されているため、乗算結果の仮数部は“０”となる（符号Ｂ７参照）。
【０１１３】
仮数処理部２３の桁上げ保存加算器２３５は、ｓｕｍ信号及びｃａｒｒｙ信号を出力する。
【０１１４】
仮数処理部２３の桁上げ伝搬加算器２３６は、桁上げ保存加算器からのｓｕｍ信号及びｃａｒｒｙ信号に基づき、桁上げ情報を次のビット計算へ順番に送る。
【０１１５】
乗算ツリー２３４において乗算結果の仮数部は“０”となったため、最終的な積和演算の値は桁合せシフタ２３１及び補数処理部２３２からの値がそのまま出力され、変換したい浮動小数点数の変換後の出力固定小数点数のビット「３０」以降となる。
【０１１６】
図１３に示すように、固定小数点変換命令の場合には、演算命令制御部１３からの固定小数点変換命令により（符号Ｂ８参照）、演算結果となる桁上げ伝搬加算器２３６の出力の最上位から８ビットが指数処理部２２の浮動小数点の指数算出部１１３へ入力される。なお、桁上げ伝搬加算器２３６の出力の最上位から８ビットは、出力したい固定小数点数のビット「３０〜２３」に対応する。
【０１１７】
また、演算結果は仮数処理部２３の正規化シフタ２３７へ入力されるが、固定小数点変換命令の場合には演算命令制御部１３からの入力により、シフト量が“７”に固定される（符号Ｂ９参照）。その結果、正規化シフタ２３７において７ビット左へシフトされるため、丸め回路１１２には出力したい固定小数点数のビット「２３」以降及び丸め情報が入力されるようになる。
【０１１８】
そして、符号処理部２１からの符号演算結果と指数処理部２２からの指数演算結果と仮数処理部２３からの仮数演算結果とにより、変換後の固定小数点数が演算結果として出力される（符号Ｂ１０参照）。
【０１１９】
〔Ｂ−２〕動作例
図１０に示した浮動小数点積和演算器における浮動小数点の指数算出処理を、図１４に示すフローチャート（ステップＳ２１〜Ｓ２７）を用いて説明する。
【０１２０】
演算命令制御部１３は、処理命令を受信する（ステップＳ２１）。
【０１２１】
指数処理部２２は、受信された処理命令が固定小数点変換命令であるかを判定する（ステップＳ２２）。
【０１２２】
処理命令が固定小数点変換命令である場合には（ステップＳ２２のＹｅｓルート参照）、指数処理部２２は、演算命令制御部１３からの選択指示に基づいて、固定小数点の上位ビットを選択する（ステップＳ２３）。
【０１２３】
指数処理部２２は、丸め回路１１２からの指数桁上がり指示に基づいて、浮動小数点の指数算出部１１３にて、固定小数点の上位ビットの加算処理を行ない、丸めを実施する（ステップＳ２４）。
【０１２４】
指数処理部２２は、丸め後演算結果を出力する（ステップＳ２５）。そして、浮動小数点の指数算出処理は終了する。
【０１２５】
ステップＳ２２において、処理命令が固定小数点変換命令でない場合には（ステップＳ２２のＮｏルート参照）、指数処理部２２は、演算命令制御部１３からの選択指示に基づいて、浮動小数点の指数を選択する（ステップＳ２６）。
【０１２６】
指数処理部２２は、丸め回路１１２からの指数桁上がり指示に基づいて、浮動小数点の指数算出部１１３にて、浮動小数点の指数の加算処理を行ない、丸めを実施する（ステップＳ２７）。そして、処理はステップＳ２５へ進む。
【０１２７】
〔Ｂ−３〕効果
上述した実施形態の一例における浮動小数点積和演算器１１によれば、例えば、以下の作用効果を奏することができる。
【０１２８】
選択回路１１１は、固定小数点変換命令が入力された場合に固定小数点数の特定ビットを出力し、固定小数点変換命令が入力されなかった場合に浮動小数点数の指数部を出力する。浮動小数点の指数算出部１１３は、選択回路１１１から出力された特定ビット又は指数部に対して所定の演算を実施する。
【０１２９】
これにより、浮動小数点数の指数部の演算のための指数算出部１１３によって、固定小数点数の特定ビット（例えば、上位ビット）の演算を実施できる。従って、少ない回路構成により、固定小数点数及び浮動小数点数の演算を行なうことができる。
【０１３０】
丸め回路１１２は、固定小数点数における特定ビット以外のビット又は浮動小数点数の仮数部に対して所定の演算を実施すると共に、特定ビット以外のビット又は仮数部に含まれる丸め情報に基づいて特定ビット以外のビット又は仮数部に対する丸め処理を実行する。
【０１３１】
これにより、固定小数点数及び浮動小数点数の演算の際の丸め処理を確実に実施できる。
【０１３２】
丸め回路１１２は、特定ビット以外のビット又は仮数部に対する所定の演算によって、特定ビット以外のビット又は仮数部において桁上がりが発生した場合に、浮動小数点の指数算出部１１３に対して桁上がり指示を発行する。浮動小数点の指数算出部１１３は、丸め回路１１２からの桁上がり指示の受信に応じて、特定ビット又は指数部に対して桁上がり処理を実施する。
【０１３３】
これにより、固定小数点数及び浮動小数点数の演算の際の桁上がり処理を確実に実施できる。
【０１３４】
〔Ｃ〕その他
開示の技術は上述した実施形態に限定されるものではなく、本実施形態の趣旨を逸脱しない範囲で種々変形して実施することができる。本実施形態の各構成及び各処理は、必要に応じて取捨選択することができ、あるいは適宜組み合わせてもよい。
【０１３５】
〔Ｄ〕付記
以上の実施形態に関し、さらに以下の付記を開示する。
【０１３６】
（付記１）
命令信号が入力された場合に固定小数点数の特定ビットを出力し、前記命令信号が入力されなかった場合に浮動小数点数の指数部を出力する選択回路と、
前記選択回路から出力された前記特定ビット又は前記指数部に対して所定の演算を実施する第１演算回路と、
を備える、演算処理装置。
【０１３７】
（付記２）
前記固定小数点数における前記特定ビット以外のビット又は前記浮動小数点数の仮数部に対して所定の演算を実施すると共に、前記特定ビット以外のビット又は前記仮数部に含まれる丸め情報に基づいて前記特定ビット以外のビット又は前記仮数部に対する丸め処理を実行する第２演算回路
を更に備える、付記１に記載の演算処理装置。
【０１３８】
（付記３）
前記第２演算回路は、前記特定ビット以外のビット又は前記仮数部に対する所定の演算によって、前記特定ビット以外のビット又は前記仮数部において桁上がりが発生した場合に、前記第１演算回路に対して桁上がり指示を発行し、
前記第１演算回路は、前記第２演算回路からの前記桁上がり指示の受信に応じて、前記特定ビット又は前記指数部に対して桁上がり処理を実施する、
付記２に記載の演算処理装置。
【０１３９】
（付記４）
命令信号が入力された場合に固定小数点数の特定ビットを出力し、前記命令信号が入力されなかった場合に浮動小数点数の指数部を出力し、
出力された前記特定ビット又は前記指数部に対して所定の演算を実施する、
演算処理装置の制御方法。
【０１４０】
（付記５）
前記固定小数点数における前記特定ビット以外のビット又は前記浮動小数点数の仮数部に対して所定の演算を実施すると共に、前記特定ビット以外のビット又は前記仮数部に含まれる丸め情報に基づいて前記特定ビット以外のビット又は前記仮数部に対する丸め処理を実行する、
付記４に記載の演算処理装置の制御方法。
【０１４１】
（付記６）
前記特定ビット以外のビット又は前記仮数部に対する所定の演算によって、前記特定ビット以外のビット又は前記仮数部において桁上がりが発生した場合に、桁上がり指示を発行し、
前記桁上がり指示が発行された場合に、前記特定ビット又は前記指数部に対して桁上がり処理を実施する、
付記５に記載の演算処理装置の制御方法。
【符号の説明】
【０１４２】
１０００  ：演算処理システム
１００    ：ＰＣＩカード
１        ：プロセッサ
１０      ：処理ユニット
１１，６００：浮動小数点積和演算器
１２      ：ベクタレジスタの一部
１３，６１１：演算命令制御部
１４      ：演算命令バッファ
１５      ：全体命令制御部
１６      ：メモリコントローラ
１７      ：ＰＣＩ制御部
２        ：メモリ
３        ：ホストプロセッサ
６，１１２：丸め回路
７，１１３：指数算出部
８，１１１：選択回路
２１，６１２：符号処理部
２１１    ：符号計算部
２２，６１３：指数処理部
２２１    ：桁合せシフト量算出部
２３，６１４：仮数処理部
２３１    ：桁合せシフタ
２３２    ：補数処理部
２３３    ：ブースエンコード部
２３４    ：乗算ツリー
２３５    ：桁上げ保存加算器
２３６    ：桁上げ伝搬加算器
２３７    ：正規化シフタ
６１，６４，７１，１１２２，１１３１：加算器
６２，１１２１：丸め判定
６３，１１２３：論理積回路
１０１，７０１：丸め前仮数演算結果
１０２    ：ビット「２２〜０」の部分
１０３    ：上位ビット「３０〜２３」の部分
１０４，６０３，７０３：演算結果
６０１    ：仮数演算結果
６０２，７０２：丸め前指数演算結果
【図１】
2020071642.tif 000003
【図２】
2020071642.tif 000004
【図３】
2020071642.tif 000005
【図４】
2020071642.tif 000006
【図５】
2020071642.tif 000007
【図６】
2020071642.tif 000008
【図７】
2020071642.tif 000009
【図８】
2020071642.tif 000010
【図９】
2020071642.tif 000011
【図１０】
2020071642.tif 000012
【図１１】
2020071642.tif 000013
【図１２】
2020071642.tif 000014
【図１３】
2020071642.tif 000015
【図１４】
2020071642.tif 000016