JP7087918B2 - 演算処理装置及びその制御方法 - Google Patents

演算処理装置及びその制御方法 Download PDF

Info

Publication number
JP7087918B2
JP7087918B2 JP2018204893A JP2018204893A JP7087918B2 JP 7087918 B2 JP7087918 B2 JP 7087918B2 JP 2018204893 A JP2018204893 A JP 2018204893A JP 2018204893 A JP2018204893 A JP 2018204893A JP 7087918 B2 JP7087918 B2 JP 7087918B2
Authority
JP
Japan
Prior art keywords
point
floating
bit
rounding
mantissa
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2018204893A
Other languages
English (en)
Other versions
JP2020071642A (ja
Inventor
徹 吉永
洋征 和田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2018204893A priority Critical patent/JP7087918B2/ja
Priority to US16/578,449 priority patent/US20200133633A1/en
Priority to EP19200007.3A priority patent/EP3647939A1/en
Priority to CN201910983159.2A priority patent/CN111124361A/zh
Publication of JP2020071642A publication Critical patent/JP2020071642A/ja
Application granted granted Critical
Publication of JP7087918B2 publication Critical patent/JP7087918B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/57Arithmetic logic units [ALU], i.e. arrangements or devices for performing two or more of the operations covered by groups G06F7/483 – G06F7/556 or for performing logical operations
    • G06F7/575Basic arithmetic logic units, i.e. devices selectable to perform either addition, subtraction or one of several logical operations, using, at least partially, the same circuitry
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/483Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/499Denomination or exception handling, e.g. rounding or overflow
    • G06F7/49942Significance control
    • G06F7/49947Rounding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/544Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
    • G06F7/556Logarithmic or exponential functions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/76Arrangements for rearranging, permuting or selecting data according to predetermined rules, independently of the content of the data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • G06F9/30014Arithmetic instructions with variable precision
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30025Format conversion instructions, e.g. Floating-Point to Integer, decimal conversion
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/14Conversion to or from non-weighted codes
    • H03M7/24Conversion to or from floating-point codes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/38Indexing scheme relating to groups G06F7/38 - G06F7/575
    • G06F2207/3804Details
    • G06F2207/3808Details concerning the type of numbers or the way they are handled
    • G06F2207/3812Devices capable of handling different types of numbers
    • G06F2207/3824Accepting both fixed-point and floating-point numbers

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Mathematical Analysis (AREA)
  • Computational Mathematics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • General Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • Software Systems (AREA)
  • Nonlinear Science (AREA)
  • Complex Calculations (AREA)
  • Executing Machine-Instructions (AREA)

Description

本発明は、演算処理装置及びその制御方法に関する。
コンピュータにおいて扱われる数値には、大別して、浮動小数点数と固定小数点数との2種類がある。
特開平5-173759号公報 特開2009-93662号公報
浮動小数点積和演算器を使用して固定小数点数への変換命令を実行しようとした場合には、浮動小数点数よりも固定小数点数の仮数部のビット幅が大きいため、丸め操作による桁上がりを計算するよりも多くの桁数を計算可能な加算器が使用される。
これにより、浮動小数点積和演算器において、専用又は追加の加算器が追加されて回路面積が大きくなるおそれがある。
また、浮動小数点数と固定小数点数とのそれぞれの形式に合せて演算結果が出力されるため、浮動小数点積和演算器において、形式変換のための回路が追加されて回路面積が大きくなるおそれがある。
1つの側面では、少ない回路構成により、固定小数点数及び浮動小数点数の演算を行なえるようにすることを目的とする。
演算処理装置は、命令信号が入力された場合に固定小数点数の特定ビットを出力し、前記命令信号が入力されなかった場合に浮動小数点数の指数部を出力する選択回路と、前記選択回路から出力された前記特定ビット又は前記指数部に対して所定の演算を実施する第1演算回路と、を備える。
1つの側面では、少ない回路構成により、固定小数点数及び浮動小数点数の演算を行なうことができる。
単精度浮動小数点数の形式を示す図である。 固定小数点数の形式を示す図である。 関連例における浮動小数点数から固定小数点数への変換を説明する図である。 関連例における最近点への丸めモードを説明する図である。 関連例における最近点への丸めモードを説明するテーブルである。 関連例としての浮動小数点積和演算器における演算処理を説明するシーケンス図である。 関連例としての浮動小数点積和演算器における演算処理を説明するシーケンス図である。 関連例における浮動小数点演算の際の丸めを実施する回路を例示する図である。 関連例における固定小数点数変換の際の丸めを実施する回路を例示する図である。 実施例における演算処理システムのハードウェア構成例を示すブロック図である。 図10に示した浮動小数点積和演算器における固定小数点変換の際の丸めを実施する回路を例示する図である。 図10に示した浮動小数点積和演算器の構成を説明するブロック図である。 図10に示した浮動小数点積和演算器の構成を説明するブロック図である。 図10に示した浮動小数点積和演算器における浮動小数点の指数算出処理を説明するフローチャートである。
以下、図面を参照して一実施の形態を説明する。ただし、以下に示す実施形態はあくまでも例示に過ぎず、実施形態で明示しない種々の変形例や技術の適用を排除する意図はない。すなわち、本実施形態を、その趣旨を逸脱しない範囲で種々変形して実施することができる。
また、各図は、図中に示す構成要素のみを備えるという趣旨ではなく、他の機能等を含むことができる。
以下、図中において、同一の各符号は同様の部分を示しているので、その説明は省略する。
〔A〕関連例
図1は、単精度浮動小数点数の形式を示す図である。
図1に示す32ビットの単精度浮動小数点数は、符号部,仮数部及び指数部を含む。符号部は、1ビットであり、0を正とし、1を負とする。仮数部は、23ビットであり、整数部が1であるような2進小数部分を表わす。なお、整数部の1は表現されない。指数部は、8ビットであり、符号なし2進数として、127のゲタを履かせたゲタ履き表現で表わせる。
図1に示す単精度浮動小数は、一般に、以下の数式で表現される。
(-1)符号部×2指数部-127×(1+仮数部)
図2は、固定小数点数の形式を示す図である。
固定小数点数は、小数点が置かれる桁を固定して表わされた数を示す。整数部及び小数部分のビット数がQ表記で表わされる。
図1に示す小数点位置は、整数部のビット数が31であり、小数部のビット数が0のため、Q31.0表記と称される。
浮動小数点及び固定小数点を相互に使用するための数値変換命令が存在する。
図3は、関連例における浮動小数点数から固定小数点数への変換を説明する図である。
浮動小数点の仮数部(暗黙の“1”を含む。)が、指数部で示された量に応じて、出力する固定小数点位置に合せてシフトされる(符号A1参照)。
例えば、指数部=127(ゲタを除く指数=0)の場合には、小数点位置は、2の桁である第23ビットとなる。また、指数部=143(ゲタを除く指数=16)の場合には、小数点位置は、216の桁である第7ビットとなる。
シフト済みの仮数に対して、浮動小数点数の符号部が負であれば2の補数がとられる(符号A2参照)。符号部が正の場合には、仮数はそのままの値となる。
そして、丸め処理が実行される(符号A3参照)。
符号A1に示したシフトの結果、演算結果が固定小数点で表現可能な桁の外にはみ出る場合がある。そのため、演算精度を保つために、符号A3に示した丸め処理が行なわれる。
図4は、関連例における最近点への丸めモードを説明する図である。図5は、関連例における最近点への丸めモードを説明するテーブルである。
図4に示すように、最近点への丸めモードを実施するにあたり、有効桁の最小位ビットはunit in the last place(ulp)と称され、ulpよりも下位の大きさを判断するガードビット(G),ラウンドビット(R)及びスティッキビット(S)が定義されている。
ガードビットは、1/2ulpの重みを持つビットである。ラウンドビットは、1/4ulpの重みを持つビットである。スティッキビットは、ラウンドビットより重みの小さいビットの論理和(OR)をとった値である。
ulp/G/R/Sの各ビットの値による丸めの操作は、図5に示される条件の場合に、ulpに+1を加算することによって行なわれる。
図6及び図7は、関連例としての浮動小数点積和演算器600における演算処理を説明するシーケンス図である。
図6に示す例では、浮動小数点数から固定小数点数への変換命令を浮動小数点積和演算器600で実行する。浮動小数点積和演算器600は、演算命令制御部611,符号処理部612,指数処理部613及び仮数処理部614としての機能を備える。
図6に示すように、演算命令制御部611は、命令種別を、符号処理部612,指数処理部613,仮数処理部614へ通知する。
指数処理部613は、桁合せシフト量算出部にて、加算指数,被乗数指数及び乗数指数に基づき、シフト量を算出し、算出したシフト量を仮数処理部614へ指示する(ステップS1)。
仮数処理部614は、桁合せシフタにて、指数処理部613からのシフト量指示に基づき、桁合せのシフトを実施する(ステップS2)。
符号処理部612は、符号計算部にて、加算符号,被乗数符号及び乗数符号に基づき、符号計算を行ない、仮数処理部614に対して演算指示を行なう(ステップS3)。また、図7に示すように、符号計算に基づき、符号演算結果が出力される。
仮数処理部614は、補数処理部にて、符号処理部612からの演算指示に基づき、補数処理を行なう(ステップS4)。そして、処理はステップS7へ進む。
仮数処理部614は、ブースエンコード部にて、被乗数仮数及び乗数仮数に基づき、ブースの演算アルゴリズムに従ったエンコードを実施する(ステップS5)。
仮数処理部614は、乗算ツリーにて、sum信号及びcarry信号を出力する(ステップS6)。
仮数処理部614は、桁上げ保存加算器にて、sum信号及びcarry信号を出力する(ステップS7)。
仮数処理部614は、桁上げ伝搬加算器にて、桁上げ保存加算器からのsum信号及びcarry信号に基づき、桁上げ情報を次のビット計算へ順番に送る(ステップS8)。そして、処理は図7のステップS11へ進む。
仮数処理部614は、桁落ち予測部にて、桁上げ保存加算器からのsum信号及びcarry信号に基づき、桁落ち量予測値を算出し、算出した桁落ち量予測値を指数処理部613に通知する(ステップS9)。
指数処理部613は、正規化シフト量算出部にて、仮数処理部614からの桁落ち量予測値に基づき、正規化シフト量を算出する(ステップS10)。図7に示すように、算出された正規化シフト量は、仮数処理部614に指示される。
図7において、仮数処理部614は、正規化シフタにて、指数処理部613からの正規化シフト量指示に基づき、シフト処理が実施される(ステップS11)。
仮数処理部614は、丸め回路6(図8参照)にて、正規化シフタからの出力に基づき、丸め処理を実施して仮数演算結果を出力し、指数処理部613に桁上がり指示を発行する(ステップS12)。
指数処理部613は、浮動小数点指数算出部にて、正規化シフト量算出部からの出力と、仮数処理部614からの桁上がり指示とに基づき、指数演算結果を出力する(ステップS13)。
そして、符号演算結果と指数演算結果と仮数演算結果とに基づき、固定小数点数の演算結果が出力される(ステップS14)。
図8は、関連例における浮動小数点演算の際の丸めを実施する回路を例示する図である。
丸め回路6には、正規化シフタにて桁落ちした仮数部が左シフトされて、暗黙の“1”のビットを含む仮数部のデータが丸め前の仮数演算結果601として入力される。その際、丸めに使用されるG/R/S(別言すれば、「以降のビットの論理和をまとめて1ビットにされた値」)も同時に入力される。
ulp/G/R/Sを用いて丸め判定62を行なうと同時に、仮数部のビット「22」からビット「0」(別言すれば、「ulpビット」)が加算器61に入力される。
丸め判定62の結果、丸め操作が必要な場合には加算器61の出力が丸め後仮数演算結果として出力され、丸め操作が不要の場合にはビット「22~0」がそのまま出力される。
同時に、ビット「22~0」が全て“1”である場合には、加算器61から桁上がり信号が出力される。この際に、丸め操作が必要な場合には丸めの結果により指数の桁上がりが必要なことを通知するため、論理積回路63を介して、浮動小数点の指数算出部7に対して指数桁上がり指示が出力される。
浮動小数点の指数算出部7では、桁落ち量予測値により補正した指数値を丸め前指数演算結果602として受信する。そして、丸め回路6から指数桁上がり指示があった場合には加算器71により補正した指数に+1が出力され、桁上がり指示がない場合には補正した指数がそのまま出力される。
丸め回路6からの仮数演算結果と、浮動小数点の指数算出部7からの指数演算結果と、符号処理部612からの符号とが纏められて、演算結果603として出力される。
図9は、関連例における固定小数点数変換の際の丸めを実施する回路を例示する図である。
丸め回路6には、シフト処理及び補数処理後の丸め前仮数演算結果701のビット「30~0」及び丸めに使用されるG/R/Sが入力される。この場合、浮動小数点の丸めの際には、入力されるビット数が多くなるため、より大きな加算器が必要となる。
図9に示す例では、なるべく物量を少なくするため、追加のビット「30~23」が入力される加算器64が追加される。加算器64は、加算器61が桁上がり信号を出力した場合に、加算動作を行なう。
丸め判定62の結果、丸め操作が必要な場合には加算器61及び追加した加算器64の出力が丸め後仮数演算結果として出力され、丸め操作が不要の場合にはビット「30~0」がそのまま出力される。
演算結果を出力する際に、固定小数点変換命令の場合には、浮動小数点の指数演算結果の代わりに、丸め後の整数演算結果のビット「30~23」が出力される。また、ビット「22~0」は、浮動小数点数演算の場合と同様に丸め後仮数演算結果がそのまま出力される。
選択回路8は、丸め回路6と浮動小数点の指数算出部7とからの入力のうち、少なくとも一方を出力する。選択回路8は、固定小数点変換命令の場合には、丸め回路6からの入力に限って出力する。これにより、演算結果703が出力される。
浮動小数点積和演算器を使用して固定小数点数への変換命令を実行しようとした場合には、浮動小数点数よりも固定小数点数の仮数部のビット幅が大きいため、丸め操作による桁上がりを計算するよりも多くの桁数を計算可能な加算器が使用される。
これにより、浮動小数点積和演算器において、専用又は追加の加算器が追加されて回路面積が大きくなる。
また、演算結果を出力する際に、浮動小数点数と固定小数点数とのそれぞれの形式に合せて出力されるため、浮動小数点積和演算器において、形式変換のための回路が追加されて回路面積が大きくなる。
ここで、図9に示す固定小数点変換の際の丸めを実施する回路において、固定小数点変換の際には使用されていない浮動小数点の指数算出部7の加算器71に着目する。
浮動小数点の指数算出部7の加算器71と、丸め回路6において固定小数点変換命令用に追加した加算器64とは、いずれも8ビットの幅を有する。
また、浮動小数点の指数算出部7の加算器71は、固定小数点変換命令の際には使用されていない。
更に、丸め回路6の加算器61から浮動小数点の指数算出部7へは、桁上がり信号が接続されている。従って、固定小数点変換命令の実行の際に浮動小数点の指数算出部7の加算器71を使用するように変更できれば、追加の加算器を付加することなく丸め操作による桁上がりの加算を実行できる。
〔B〕実施形態の一例
〔B-1〕システム構成例
図10は、実施例における演算処理システム1000のハードウェア構成例を示すブロック図である。
近年、様々な分野においてDeep Learning技術の実用化が進んでおり、Graphics Processing Unit(GPU)に代表されるような多数の演算器を搭載したプロセッサが存在する。また、Deep Learningにおいては、たたみこみ演算(convolution)等のために積和演算を多量に処理できるプロセッサが搭載される。
演算処理システム1000は、Peripheral Component Interconnect(PCI)カード100及びホストプロセッサ3を備える。
ホストプロセッサ3は、PCI Expressを介して、PCIカード100に対して種々の命令を発行する。
PCIカード100は、プロセッサ1及びメモリ2を備える。
メモリ2は、例示的に、Read Only Memory(ROM)及びRandom Access Memory(RAM)を含む記憶装置である。
GPUと同様にPCIカード100に実装されているプロセッサ1には、積和演算を多量に処理するために、浮動小数点積和演算器が搭載された処理ユニット10が多数搭載されている。プロセッサ1は、複数の処理ユニット10,全体命令制御部15,メモリコントローラ16及びPCI制御部17を備える。
なお、図10においては、複数の処理ユニットのうち、一部の処理ユニットに限って符号「10」が示され、他の処理ユニットにおける符号の図示は省略されている。
全体命令制御部15は、プロセッサ1全体の動作を制御する。
メモリコントローラ16は、プロセッサ1とメモリ2との間の入出力を制御する。
PCI制御部17は、プロセッサ1とホストプロセッサ3との間のPCI Expressを介した入出力を制御する。
処理ユニット10は、浮動小数点積和演算器11,ベクタレジスタの一部12,演算命令制御部13及び演算命令バッファ14を備える。各処理ユニット10において、浮動小数点積和演算器11及びベクタレジスタの一部12は、複数組備えられる。
演算命令バッファ14は、メモリコントローラ16から入力された演算命令をバッファする。
演算命令制御部13は、全体命令制御部15からの制御に従い、演算命令バッファ14にバッファされた演算命令を制御について、浮動小数点積和演算器11及びベクタレジスタの一部12に指示する。
ベクタレジスタの一部12には、演算命令のベクタの値が入力される。
浮動小数点積和演算器11は、演算処理装置の一例であり、浮動小数点演算及び固定小数点演算を実行する。
図11は、図10に示した浮動小数点積和演算器11における固定小数点変換の際の丸めを実施する回路を例示する図である。
浮動小数点積和演算器11は、選択回路111,丸め回路112及び浮動小数点の指数算出部113を備える。
選択回路111は、固定小数点変換命令(「命令信号」と称してもよい。)が入力された場合に固定小数点数の特定ビット(例えば、上位ビット)を出力し、固定小数点変換命令が入力されなかった場合に浮動小数点数の指数部を出力する。
固定小数点変換命令の際に、浮動小数点の指数算出部113の加算器1131が使用できるようにする。このために、関連例において丸め回路112に入力されていた丸め前仮数演算結果101の上位ビット「30~23」が、演算命令制御部13からの指示により、丸め前指数演算結果に代えて浮動小数点の指数算出部113に入力されるように接続される。これにより、浮動小数点の指数算出部113と丸め回路112とが連携して、固定小数点変換の際の丸め動作を行なえる。
すなわち、丸め判定1121により丸め回路112において丸め操作が必要な場合には、丸め回路112のビット「22~0」の部分102が入力された加算器1122の値が出力される。一方、丸め操作が不要な場合には、ビット「22~0」の部分102がそのまま丸め後仮数演算結果として出力される。
また、丸め操作が必要でかつビット「22~0」が全て“1”の場合には、数指数桁上がり指示が論理積回路1123を介して浮動小数点の指数算出部113に対して出力される。
これらの動作は、浮動小数点演算の際と固定小数点変換の際とで、同じ動作となる。
浮動小数点の指数算出部113においては、固定小数点変換命令の際には演算命令制御部13からの指示により、丸め前仮数演算結果の上位ビット「30~23」の部分103が入力される。これにより、丸め操作が必要かつビット「22~0」が全て“1”の場合には指数桁上がり指示が丸め回路112から出力される。そして、指数桁上がり指示に基づいて浮動小数点の指数算出部113の仮数演算結果の上位ビット「30~23」を入力した加算器1131の結果が丸め後仮数演算結果として出力される。
丸め操作が不要又はビット「22~0」が全て“1”でない場合には、指数桁上がり指示が丸め回路112から出力されないため、仮数演算結果の上位ビット「30~23」の部分103がそのまま丸め後仮数演算結果として出力される。
更に、演算結果104を出力する場合には、丸め後仮数演算結果の上位ビット「30~23」を関連例における指数部と同じ場所に出力できるため、図9に示した浮動小数点の指数演算結果と、固定小数点変換の際の丸め後仮数演算結果との選択回路8も不要となる。
別言すれば、浮動小数点の指数算出部113は、選択回路111から出力された特定ビット又は指数部に対して所定の演算を実施する第1演算回路の一例である。また、丸め回路112は、固定小数点数における記特定ビット以外のビット又は浮動小数点数の仮数部に対して所定の演算を実施すると共に、特定ビット以外のビット又は仮数部に含まれる丸め情報に基づいて特定ビット以外のビット又は仮数部に対する丸め処理を実行する第2演算回路の一例である。
丸め回路112は、特定ビット以外のビット又は仮数部に対する所定の演算によって、特定ビット以外のビット又は仮数部において桁上がりが発生した場合に、浮動小数点の指数算出部113に対して桁上がり指示を発行する。浮動小数点の指数算出部113は、丸め回路112からの桁上がり指示の受信に応じて、特定ビット又は指数部に対して桁上がり処理を実施する。
図12及び図13は、図10に示した浮動小数点積和演算器11の構成を説明するブロック図である。
図12及び図13に示すように、浮動小数点積和演算器11は、符号処理部21,指数処理部22及び仮数処理部23として機能する。符号処理部21,指数処理部22及び仮数処理部23は、演算命令制御部13からの制御に従って動作する。
符号処理部21は、図12に示すように、符号計算部211を備える。
指数処理部22は、図12に示すように桁合せシフト量算出部221を備えると共に、図13に示すように浮動小数点の指数算出部113を備える。
仮数処理部23は、図12に示すように桁合せシフタ231,補数処理部232,ブースエンコード部233,乗算ツリー234,桁上げ保存加算器235及び桁上げ伝搬加算器236を備えると共に、図13に示すように正規化シフタ237及び丸め回路112を備える。
関連例における図3において、符号A1で示した出力の小数点位置に合せるシフト操作と、符号A2で示した符号が負である場合の補数処理とについては、浮動小数点積和演算器11に備わっている加算機能を使用して実現できる。
すなわち、図3の符号A1におけるシフト操作については、乗算結果の仮数と加算対象の仮数とを加算する場合に、双方の小数点位置が異なるため、桁合せを実施する桁合せシフタ231が使用される。
図3の符号A2における補数処理については、乗算結果の符号及び加算数の符号の関係により、実際の演算が減算処理になる場合に、加算対象の仮数の補数処理を行なってから加算させるための補数処理部232が使用される。
以下、図12及び図13を用いて、浮動小数点積和演算器11における固定小数点への変換処理を説明する。
図12に示すよう、演算命令制御部13は、固定小数点変換命令の入力を受け、符号処理部21,指数処理部22及び仮数処理部23に対して、固定小数点命令を実施することを指示する(符号B1~B3参照)。また、演算命令制御部13は、仮数処理部23に対して、乗数仮数が“0”であることを入力する(符号B4参照)。
指数処理部22の桁合せシフト量算出部221は、固定小数点変換命令を受け取った場合に、変換したい浮動小数点数の指数部を参照する。そして、桁合せシフト量算出部221は、最終的な加算結果(別言すれば、「桁上げ伝搬加算器236の出力」)の最上位ビットが、出力したい固定小数点のビット「30」となる位置になるように、暗黙の“1”を含む浮動小数点数の仮数部をシフトさせる。そのため、桁合せシフト量算出部221は、仮数処理部23の桁合せシフタ231に対して、シフト量指示(別言すれば、「出力位置調整量指示」)を入力する(符号B5参照)。
仮数処理部23の桁合せシフタ231は、指数処理部22からのシフト量指示に基づき、桁合せのシフトを実施する。
符号処理部21の符号計算部211は、固定小数点変換命令を受け取った場合に、変換したい浮動小数点数の符号が負であれば、仮数処理部23の補数処理部232に対して減算指示(別言すれば、「補数変換指示」)を入力する(符号B6参照)。
仮数処理部23の補数処理部232は、符号処理部21からの減算指示に基づき、補数処理を行なう。
仮数処理部614のブースエンコード部233は、被乗数仮数及び乗数仮数に基づき、ブースの演算アルゴリズムに従ったエンコードを実施する。
仮数処理部614の乗算ツリー234は、sum信号及びcarry信号を出力する。
ここで、仮数処理部23において乗算仮数には“0”が設定されているため、乗算結果の仮数部は“0”となる(符号B7参照)。
仮数処理部23の桁上げ保存加算器235は、sum信号及びcarry信号を出力する。
仮数処理部23の桁上げ伝搬加算器236は、桁上げ保存加算器からのsum信号及びcarry信号に基づき、桁上げ情報を次のビット計算へ順番に送る。
乗算ツリー234において乗算結果の仮数部は“0”となったため、最終的な積和演算の値は桁合せシフタ231及び補数処理部232からの値がそのまま出力され、変換したい浮動小数点数の変換後の出力固定小数点数のビット「30」以降となる。
図13に示すように、固定小数点変換命令の場合には、演算命令制御部13からの固定小数点変換命令により(符号B8参照)、演算結果となる桁上げ伝搬加算器236の出力の最上位から8ビットが指数処理部22の浮動小数点の指数算出部113へ入力される。なお、桁上げ伝搬加算器236の出力の最上位から8ビットは、出力したい固定小数点数のビット「30~23」に対応する。
また、演算結果は仮数処理部23の正規化シフタ237へ入力されるが、固定小数点変換命令の場合には演算命令制御部13からの入力により、シフト量が“7”に固定される(符号B9参照)。その結果、正規化シフタ237において7ビット左へシフトされるため、丸め回路112には出力したい固定小数点数のビット「23」以降及び丸め情報が入力されるようになる。
そして、符号処理部21からの符号演算結果と指数処理部22からの指数演算結果と仮数処理部23からの仮数演算結果とにより、変換後の固定小数点数が演算結果として出力される(符号B10参照)。
〔B-2〕動作例
図10に示した浮動小数点積和演算器における浮動小数点の指数算出処理を、図14に示すフローチャート(ステップS21~S27)を用いて説明する。
演算命令制御部13は、処理命令を受信する(ステップS21)。
指数処理部22は、受信された処理命令が固定小数点変換命令であるかを判定する(ステップS22)。
処理命令が固定小数点変換命令である場合には(ステップS22のYesルート参照)、指数処理部22は、演算命令制御部13からの選択指示に基づいて、固定小数点の上位ビットを選択する(ステップS23)。
指数処理部22は、丸め回路112からの指数桁上がり指示に基づいて、浮動小数点の指数算出部113にて、固定小数点の上位ビットの加算処理を行ない、丸めを実施する(ステップS24)。
指数処理部22は、丸め後演算結果を出力する(ステップS25)。そして、浮動小数点の指数算出処理は終了する。
ステップS22において、処理命令が固定小数点変換命令でない場合には(ステップS22のNoルート参照)、指数処理部22は、演算命令制御部13からの選択指示に基づいて、浮動小数点の指数を選択する(ステップS26)。
指数処理部22は、丸め回路112からの指数桁上がり指示に基づいて、浮動小数点の指数算出部113にて、浮動小数点の指数の加算処理を行ない、丸めを実施する(ステップS27)。そして、処理はステップS25へ進む。
〔B-3〕効果
上述した実施形態の一例における浮動小数点積和演算器11によれば、例えば、以下の作用効果を奏することができる。
選択回路111は、固定小数点変換命令が入力された場合に固定小数点数の特定ビットを出力し、固定小数点変換命令が入力されなかった場合に浮動小数点数の指数部を出力する。浮動小数点の指数算出部113は、選択回路111から出力された特定ビット又は指数部に対して所定の演算を実施する。
これにより、浮動小数点数の指数部の演算のための指数算出部113によって、固定小数点数の特定ビット(例えば、上位ビット)の演算を実施できる。従って、少ない回路構成により、固定小数点数及び浮動小数点数の演算を行なうことができる。
丸め回路112は、固定小数点数における特定ビット以外のビット又は浮動小数点数の仮数部に対して所定の演算を実施すると共に、特定ビット以外のビット又は仮数部に含まれる丸め情報に基づいて特定ビット以外のビット又は仮数部に対する丸め処理を実行する。
これにより、固定小数点数及び浮動小数点数の演算の際の丸め処理を確実に実施できる。
丸め回路112は、特定ビット以外のビット又は仮数部に対する所定の演算によって、特定ビット以外のビット又は仮数部において桁上がりが発生した場合に、浮動小数点の指数算出部113に対して桁上がり指示を発行する。浮動小数点の指数算出部113は、丸め回路112からの桁上がり指示の受信に応じて、特定ビット又は指数部に対して桁上がり処理を実施する。
これにより、固定小数点数及び浮動小数点数の演算の際の桁上がり処理を確実に実施できる。
〔C〕その他
開示の技術は上述した実施形態に限定されるものではなく、本実施形態の趣旨を逸脱しない範囲で種々変形して実施することができる。本実施形態の各構成及び各処理は、必要に応じて取捨選択することができ、あるいは適宜組み合わせてもよい。
〔D〕付記
以上の実施形態に関し、さらに以下の付記を開示する。
(付記1)
命令信号が入力された場合に固定小数点数の特定ビットを出力し、前記命令信号が入力されなかった場合に浮動小数点数の指数部を出力する選択回路と、
前記選択回路から出力された前記特定ビット又は前記指数部に対して所定の演算を実施する第1演算回路と、
を備える、演算処理装置。
(付記2)
前記固定小数点数における前記特定ビット以外のビット又は前記浮動小数点数の仮数部に対して所定の演算を実施すると共に、前記特定ビット以外のビット又は前記仮数部に含まれる丸め情報に基づいて前記特定ビット以外のビット又は前記仮数部に対する丸め処理を実行する第2演算回路
を更に備える、付記1に記載の演算処理装置。
(付記3)
前記第2演算回路は、前記特定ビット以外のビット又は前記仮数部に対する所定の演算によって、前記特定ビット以外のビット又は前記仮数部において桁上がりが発生した場合に、前記第1演算回路に対して桁上がり指示を発行し、
前記第1演算回路は、前記第2演算回路からの前記桁上がり指示の受信に応じて、前記特定ビット又は前記指数部に対して桁上がり処理を実施する、
付記2に記載の演算処理装置。
(付記4)
命令信号が入力された場合に固定小数点数の特定ビットを出力し、前記命令信号が入力されなかった場合に浮動小数点数の指数部を出力し、
出力された前記特定ビット又は前記指数部に対して所定の演算を実施する、
演算処理装置の制御方法。
(付記5)
前記固定小数点数における前記特定ビット以外のビット又は前記浮動小数点数の仮数部に対して所定の演算を実施すると共に、前記特定ビット以外のビット又は前記仮数部に含まれる丸め情報に基づいて前記特定ビット以外のビット又は前記仮数部に対する丸め処理を実行する、
付記4に記載の演算処理装置の制御方法。
(付記6)
前記特定ビット以外のビット又は前記仮数部に対する所定の演算によって、前記特定ビット以外のビット又は前記仮数部において桁上がりが発生した場合に、桁上がり指示を発行し、
前記桁上がり指示が発行された場合に、前記特定ビット又は前記指数部に対して桁上がり処理を実施する、
付記5に記載の演算処理装置の制御方法。
1000 :演算処理システム
100 :PCIカード
1 :プロセッサ
10 :処理ユニット
11,600:浮動小数点積和演算器
12 :ベクタレジスタの一部
13,611:演算命令制御部
14 :演算命令バッファ
15 :全体命令制御部
16 :メモリコントローラ
17 :PCI制御部
2 :メモリ
3 :ホストプロセッサ
6,112:丸め回路
7,113:指数算出部
8,111:選択回路
21,612:符号処理部
211 :符号計算部
22,613:指数処理部
221 :桁合せシフト量算出部
23,614:仮数処理部
231 :桁合せシフタ
232 :補数処理部
233 :ブースエンコード部
234 :乗算ツリー
235 :桁上げ保存加算器
236 :桁上げ伝搬加算器
237 :正規化シフタ
61,64,71,1122,1131:加算器
62,1121:丸め判定
63,1123:論理積回路
101,701:丸め前仮数演算結果
102 :ビット「22~0」の部分
103 :上位ビット「30~23」の部分
104,603,703:演算結果
601 :仮数演算結果
602,702:丸め前指数演算結果

Claims (4)

  1. 命令信号が入力された場合に固定小数点数の特定ビットを出力し、前記命令信号が入力されなかった場合に浮動小数点数の指数部を出力する選択回路と、
    前記選択回路から出力された前記特定ビット又は前記指数部に対して所定の演算を実施する第1演算回路と、
    を備える、演算処理装置。
  2. 前記固定小数点数における前記特定ビット以外のビット又は前記浮動小数点数の仮数部に対して所定の演算を実施すると共に、前記特定ビット以外のビット又は前記仮数部に含まれる丸め情報に基づいて前記特定ビット以外のビット又は前記仮数部に対する丸め処理を実行する第2演算回路
    を更に備える、請求項1に記載の演算処理装置。
  3. 前記第2演算回路は、前記特定ビット以外のビット又は前記仮数部に対する所定の演算によって、前記特定ビット以外のビット又は前記仮数部において桁上がりが発生した場合に、前記第1演算回路に対して桁上がり指示を発行し、
    前記第1演算回路は、前記第2演算回路からの前記桁上がり指示の受信に応じて、前記特定ビット又は前記指数部に対して桁上がり処理を実施する、
    請求項2に記載の演算処理装置。
  4. 命令信号が入力された場合に固定小数点数の特定ビットを出力し、前記命令信号が入力されなかった場合に浮動小数点数の指数部を出力し、
    出力された前記特定ビット又は前記指数部に対して所定の演算を実施する、
    演算処理装置の制御方法。
JP2018204893A 2018-10-31 2018-10-31 演算処理装置及びその制御方法 Active JP7087918B2 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP2018204893A JP7087918B2 (ja) 2018-10-31 2018-10-31 演算処理装置及びその制御方法
US16/578,449 US20200133633A1 (en) 2018-10-31 2019-09-23 Arithmetic processing apparatus and controlling method therefor
EP19200007.3A EP3647939A1 (en) 2018-10-31 2019-09-27 Arithmetic processing apparatus and controlling method therefor
CN201910983159.2A CN111124361A (zh) 2018-10-31 2019-10-16 算术处理装置及其控制方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2018204893A JP7087918B2 (ja) 2018-10-31 2018-10-31 演算処理装置及びその制御方法

Publications (2)

Publication Number Publication Date
JP2020071642A JP2020071642A (ja) 2020-05-07
JP7087918B2 true JP7087918B2 (ja) 2022-06-21

Family

ID=68072211

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018204893A Active JP7087918B2 (ja) 2018-10-31 2018-10-31 演算処理装置及びその制御方法

Country Status (4)

Country Link
US (1) US20200133633A1 (ja)
EP (1) EP3647939A1 (ja)
JP (1) JP7087918B2 (ja)
CN (1) CN111124361A (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US12106069B2 (en) 2021-06-21 2024-10-01 Ceremorphic, Inc. Power saving floating point multiplier-accumulator with precision-aware accumulation
US12079593B2 (en) 2021-06-21 2024-09-03 Ceremorphic, Inc. Power saving floating point Multiplier-Accumulator with a high precision accumulation detection mode
WO2022271608A1 (en) * 2021-06-21 2022-12-29 Ceremorphic, Inc Power saving floating point multiplier-accumulator with precision-aware accumulation

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1061436A2 (en) 1997-10-23 2000-12-20 Advanced Micro Devices, Inc. Multifunction floating point addition/subtraction pipeline
JP5173759B2 (ja) 2008-11-20 2013-04-03 キヤノン株式会社 画像形成装置、その制御方法及び制御プログラム
JP6170635B2 (ja) 2014-10-07 2017-08-02 藤倉ゴム工業株式会社 多段ピストンアクチュエータ

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4386399A (en) * 1980-04-25 1983-05-31 Data General Corporation Data processing system
JPS6170635A (ja) * 1984-09-14 1986-04-11 Hitachi Ltd 丸め制御装置
JP2523962B2 (ja) * 1990-08-20 1996-08-14 松下電器産業株式会社 浮動小数点演算装置
JP3253660B2 (ja) * 1991-12-19 2002-02-04 松下電器産業株式会社 数値丸め装置および数値丸め方法
US5917741A (en) * 1996-08-29 1999-06-29 Intel Corporation Method and apparatus for performing floating-point rounding operations for multiple precisions using incrementers
JPH10187416A (ja) * 1996-12-20 1998-07-21 Nec Corp 浮動小数点演算装置
US6529928B1 (en) * 1999-03-23 2003-03-04 Silicon Graphics, Inc. Floating-point adder performing floating-point and integer operations
US7236995B2 (en) 2002-12-27 2007-06-26 Arm Limited Data processing apparatus and method for converting a number between fixed-point and floating-point representations
US7720900B2 (en) * 2005-09-09 2010-05-18 International Business Machines Corporation Fused multiply add split for multiple precision arithmetic
CN101692202B (zh) * 2009-09-27 2011-12-28 龙芯中科技术有限公司 一种64比特浮点乘加器及其浮点运算流水节拍处理方法
US9817661B2 (en) * 2015-10-07 2017-11-14 Arm Limited Floating point number rounding

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1061436A2 (en) 1997-10-23 2000-12-20 Advanced Micro Devices, Inc. Multifunction floating point addition/subtraction pipeline
JP5173759B2 (ja) 2008-11-20 2013-04-03 キヤノン株式会社 画像形成装置、その制御方法及び制御プログラム
JP6170635B2 (ja) 2014-10-07 2017-08-02 藤倉ゴム工業株式会社 多段ピストンアクチュエータ

Also Published As

Publication number Publication date
JP2020071642A (ja) 2020-05-07
CN111124361A (zh) 2020-05-08
EP3647939A1 (en) 2020-05-06
US20200133633A1 (en) 2020-04-30

Similar Documents

Publication Publication Date Title
JP7115211B2 (ja) 演算処理装置および演算処理装置の制御方法
US7720900B2 (en) Fused multiply add split for multiple precision arithmetic
JP6694880B2 (ja) 有効度整合
US8626813B1 (en) Dual-path fused floating-point two-term dot product unit
US10489153B2 (en) Stochastic rounding floating-point add instruction using entropy from a register
JP4418578B2 (ja) 第1、第2、第3オペランドに浮動小数点演算を適用するためのデータ処理装置および方法
US20150347089A1 (en) Microarchitecture for floating point fused multiply-add with exponent scaling
JP5684393B2 (ja) Scale、round、getexp、round、getmant、reduce、range及びclass命令を実行できる乗加算機能ユニット
JP7087918B2 (ja) 演算処理装置及びその制御方法
TWI526928B (zh) 向量浮點引數之減少
KR101913094B1 (ko) 부동 소수점 값을 정수의 부동 소수점 값으로 라운드하는 장치 및 방법
JP4388980B2 (ja) 浮動小数点数の除算または平方根演算を行う演算装置及び演算方法
US8239441B2 (en) Leading zero estimation modification for unfused rounding catastrophic cancellation
JP6415236B2 (ja) 浮動小数点加算ユニットを含む装置及びシステム、並びに浮動小数点加算方法
US5548545A (en) Floating point exception prediction for compound operations and variable precision using an intermediate exponent bus
JP3313560B2 (ja) 浮動小数点演算処理装置
JP4476210B2 (ja) 逆数演算の結果値の初期推定値を求めるデータ処理装置および方法
JP2006228190A (ja) 入力値に逆数演算を実施して結果値を作り出すデータ処理装置および方法
US10445066B2 (en) Stochastic rounding floating-point multiply instruction using entropy from a register
Tsen et al. A combined decimal and binary floating-point multiplier
US10963245B2 (en) Anchored data element conversion
JP4613992B2 (ja) Simd演算器、simd演算器の演算方法、演算処理装置及びコンパイラ
US11704092B2 (en) High-precision anchored-implicit processing
Ziaullah et al. Design and Implementation of Floating Point ALU with Parity Generator Using Verilog HDL
JPH0498524A (ja) 浮動小数点演算装置

Legal Events

Date Code Title Description
RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20190607

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210709

TRDD Decision of grant or rejection written
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20220428

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20220510

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220523

R150 Certificate of patent or registration of utility model

Ref document number: 7087918

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150