JP2019057249A - 演算処理装置および演算処理方法 - Google Patents

演算処理装置および演算処理方法 Download PDF

Info

Publication number
JP2019057249A
JP2019057249A JP2017182797A JP2017182797A JP2019057249A JP 2019057249 A JP2019057249 A JP 2019057249A JP 2017182797 A JP2017182797 A JP 2017182797A JP 2017182797 A JP2017182797 A JP 2017182797A JP 2019057249 A JP2019057249 A JP 2019057249A
Authority
JP
Japan
Prior art keywords
data
statistical information
bit
unit
bits
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.)
Pending
Application number
JP2017182797A
Other languages
English (en)
Inventor
良祐 山中
Ryosuke Yamanaka
良祐 山中
真紀子 伊藤
Makiko Ito
真紀子 伊藤
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 JP2017182797A priority Critical patent/JP2019057249A/ja
Priority to US16/129,841 priority patent/US20190095175A1/en
Publication of JP2019057249A publication Critical patent/JP2019057249A/ja
Pending legal-status Critical Current

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
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/18Complex mathematical operations for evaluating statistical data, e.g. average values, frequency distributions, probability functions, regression analysis
    • 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
    • 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
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Data Mining & Analysis (AREA)
  • General Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Algebra (AREA)
  • Probability & Statistics with Applications (AREA)
  • Databases & Information Systems (AREA)
  • Operations Research (AREA)
  • Evolutionary Biology (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Health & Medical Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Computational Linguistics (AREA)
  • Evolutionary Computation (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

【課題】固定小数点数での精度を向上するとともに、回路の物理量および消費電力を削減可能な演算処理装置を提供する。【解決手段】演算処理装置は、入力した演算対象データを演算した演算結果データを出力する演算部と、演算結果データ中のビット分布を示す統計情報データを出力する生成部と、統計情報データのうち、指定位置情報に基づいて、第1の所定サイズの注目領域データを抽出する抽出部と、統計情報データについて、注目領域データを除いたデータのうち、上位側のデータを第2の所定サイズに要約した上位側要約データを出力する上位側要約部と、統計情報データについて、注目領域データを除いたデータのうち、下位側のデータを第3の所定サイズに要約した下位側要約データを出力する下位側要約部と、を有する。【選択図】図17

Description

本発明は、演算処理装置および演算処理方法に関する。
今日、人工知能を用いた機械学習のうち、特に深層学習へのニーズが高まっている。深層学習においては、乗算、積和演算、ベクトル乗算を含む様々な演算が実行される。ただし、深層学習では、個々の演算精度への要求は、通常の演算処理ほど厳密ではない。例えば、通常の演算処理では、プログラマは極力桁あふれを発生させないようにコンピュータプログラムを開発する。一方、深層学習では、大きな値がある程度飽和することは許容されることがある。深層学習では、複数の入力データを畳み込み演算するときの係数(重み)の調整が主な処理となり、入力データのうち、極端なデータは重視されないことが多いからである。また、大量のデータを繰り返し用いて係数を調整するため、一度飽和されたデータも、学習の進行に合わせて桁調整を行なうことで、飽和されずに係数調整に反映できるようになるためである。
そこで、このような深層学習の特性を考慮し、深層学習用の演算処理装置のチップ面積の削減、消費電力性能の向上等を図るため、浮動小数点数を用いないで、固定小数点数による整数演算を用いることが考えられる。浮動小数点数演算よりも整数演算の方が回路構成を簡素にできるからである。
しかしながら、固定小数点数は、取りうる値のダイナミックレンジが狭いので、浮動小数点数より演算精度が劣化する場合がある。したがって、深層学習においても、極力大きな値から小さな値までを表現する精度、すなわち、有効桁数について、配慮が求められる。このため、固定小数点数を拡張した技術が提案されている。
例えば、Mixed Fixed Pointによる処理では、プログラム全体として統一した小数点位
置を使うのではなく、変数ごとに適した小数点位置(Qフォーマット)が用いられる。例えば、Q3.12フォーマットは、符号ビット1桁、整数部3桁、小数点以下12桁の16ビットデータを定義する。Mixed Fixed Pointでは、変数ごとに、小数点位置、つまり
、整数部の桁数と小数点以下の桁数が異なるものとして処理可能となる。
他の例として、Dynamic Fixed Point (動的固定小数点数)による処理では、実行中に変数の値域が取得され、一定のタイミングで小数点位置が見直される。したがって、Mixed Fixed Point演算、およびDynamic Fixed Point演算は、浮動小数点演算よりも処理が簡単な固定小数点演算に、浮動小数点演算の側面を加えたものと言える。
さらに、Mixed Fixed Point演算、Dynamic Fixed Point演算による処理を実行するためのプログラム向けの機能を有するDigital Signal Processor(DSP)も提案されている。例えば、ブロック・シフト指定付きの演算命令を実行するDSPがある。ブロック・シフト指定付きの演算命令は、変数のビット幅より大きいビット幅で演算を実行し、演算結果から値をシフトして切り出して変数用のレジスタに格納する。この命令では、演算結果から値を切り出すときのシフト量 S (例えば、-128〜127)が即値/汎用レジスタで指定可
能である。例えば、DSPがResult = Saturate (((in1 (演算子) in2) >> S), 16)とい
う命令を実行すると、演算結果を S ビットシフトし、下位16ビット を残し、上位ビットを飽和処理する。S ≧0 の場合には、DSPは、演算結果を算術右シフトし、すなわち、符号ビットを埋め込んで右シフトし、下位ビットを削除する。一方、S < 0 の場合は、DSPは、演算結果を算術左シフト、すなわち、符号ビットを維持して左シフトし、補数で
の下位ビットを削除する。
特開平7−84975号公報
上述のように、従来の技術において、固定小数点演算の演算精度劣化を低減するための工夫が提案されている。しかしながら、従来の技術では、演算を実行する演算処理装置が、固定小数点演算の演算精度劣化を低減するための判断材料を効率よく取得できていない。本発明の1つの側面である本実施の形態は、固定小数点数での精度を向上するとともに、回路の物理量および消費電力を削減可能な演算処理装置を提供することを目的とする。
本発明の一側面は、以下の演算処理装置によって例示される。本演算処理装置は、入力した演算対象データを演算した演算結果データを出力する演算部と、前記演算結果データ中のビット分布を示す統計情報データを出力する生成部と、前記統計情報データのうち、指定位置情報に基づいて、第1の所定サイズの注目領域データを抽出する抽出部と、前記統計情報データについて、前記注目領域データを除いたデータのうち、上位側のデータを第2の所定サイズに要約した上位側要約データを出力する上位側要約部と、前記統計情報データについて、前記注目領域データを除いたデータのうち、下位側のデータを第3の所定サイズに要約した下位側要約データを出力する下位側要約部と、を有する。
本実施形態によれば、固定小数点数での精度を向上するとともに、回路の物理量および消費電力を削減可能な演算処理装置を提供できる。
非符号となる最上位ビット位置の分布データを例示する図である。 比較例による小数点位置更新の処理例である。 比較例の情報処理装置のプロセッサの構成を例示する図である。 比較例のプロセッサの回路ブロックを例示する データ変換部の具体的構成を例示する図である。 統計情報取得部の真理値表を例示する図である。 非符号となる最上位ビット位置の分布を生成する統計情報取得部のうち、出力ビット0から38を出力する論理回路を例示する図である。 非符号となる最上位ビット位置の分布を生成する統計情報取得部のうち、出力ビット39を出力する論理回路を例示する。 非符号となる最下位ビット位置を取得する統計情報取得部のハードウェア回路の構成を例示する図である。 統計情報集約部の処理を例示する図である。 統計情報集約部のハードウェア回路の構成を例示する図である。 論理和演算によってビット位置を集約する統計情報集約部の処理を例示する図である。 論理和演算によってビット位置を集約する統計情報集約部のハードウェア回路の構成を例示する図である。 統計情報格納部の構成を例示する図である。 実施形態1に係る4つのビット領域を含む統計情報を例示する図である。 第2の命令フォーマットを例示する図である。 実施形態1に係るプロセッサの回路ブロックを例示する図である。 実施形態1に係る統計情報要約部の構成を例示する図である。 ウィンドウビット抜き出し回路の構成を例示する図である。 上位ビット側要約回路の構成を例示する図である。 上位側マスクビット生成器の真理値表を例示する図である。 6入力40出力のデコーダの例である。 デコーダの出力を基に、上位側のマスクパターンを生成するマスクパターン回路の例である。 下位ビット側要約回路の構成を例示する図である。 下位側マスクビット生成器の真理値表を例示する図である。 下位側のマスクパターンを生成するマスクパターン回路の例である。 実施形態1の統計情報取得部、統計情報要約部、統計情報集約部、統計情報格納部の間のデータフローを例示する図である。 非符号となる最上位ビット位置の分布および非符号となる最下位ビット位置の分布を集約する統計情報集約部の構成を例示する図である。 非符号となる最上位ビット位置の最大値および非符号となる最下位ビット位置の最小値を集約する統計情報集約部の構成を例示する図である。 実施形態2の処理を例示する図である。 注目領域を要約する注目領域要約部の構成を例示する図である。
[実施形態1]
以下、図面を参照して一実施形態に係る情報処理装置のプロセッサ10について説明する。
本実施形態では、情報処理装置のプロセッサ10が演算実行結果である数値の分布に関連する統計情報を取得し、アプリケーションプログラム等に提供する。ここで、数値の分布に関連する統計情報は、例えば、以下の(1)から(4)のいずれか、または、これらの組み合わせをいう。情報処理装置が実行するアプリケーションプログラムは、プロセッサから統計情報を取得することで、小数点位置を最適化する。アプリケーションプログラムの処理にしたがってプロセッサは、Dynamic Fixed Point演算あるいはMixed Fixed Point演算のための命令を実行する。
(1)非符号となる最上位ビット位置の分布
図1に、非符号となる最上位ビット位置の分布データを例示する。図1は演算の途中結果が40ビットで、固定小数点数の桁あわせのために14ビット右シフトされるデータに対する例である。非符号となる最上位ビット位置とは、正数に対しては、ビットが1となっている最上位のビット位置をいう。また、負数に対しては、ビット0となっている最上位のビット位置をいう。非符号となる最上位ビット位置は、例えば、ビットの並びを最上位ビットであるbit[39]から最下位ビットであるbit[0]としたとき、符号ビットbit[39]と異なるbit[k]のうち、インデックスkが最大のものをいう。非符号となる最上位ビット位
置の分布が得られると、絶対値としての値の分布範囲が把握可能となる。
図1で、縦軸は、非符号となる最上位ビット位置の出現個数であり、横軸は最上位のビットの位置 Count Leading Sign(CLS)である。図1では、ビット0の右側に小数点
があると仮定する。本実施形態では、情報処理装置のプロセッサの演算回路および演算回路内のレジスタは、命令のオペランドで指定されるレジスタのビット数(例えば、16ビット)以上のビット幅(例えば、40ビット)を有する。ただし、情報処理装置のプロセッサの演算回路および演算回路内のレジスタのビット幅が40ビットに限定される訳ではない。また、演算結果は、例えば、16ビットのレジスタ等、演算回路よりも少ないビッ
ト幅のレジスタ(命令のオペランドで指定されるレジスタ)に格納される。その結果、演算結果(例えば、40ビット)は、オペランドで指定されるシフト量でシフトされ、ビット0未満に該当するビットは所定の丸め処理がなされ、オペランドで指定されるレジスタ
のビット幅を越えるデータ(例えば、ビット15を越えるデータ)は、飽和処理される。
また、図1の横軸に付与された数値は、固定小数点で表現可能な数値を例示する。このうち、0の位置から15の位置までが16ビットの固定小数点数の値に相当する。ここで、例えば、情報処理装置がこの固定小数点数を−2ビットだけシフト(右方向に2ビットシフト)すると、最上位ビットが14の位置にシフトし、飽和される領域が2ビット拡張され(上位側が2ビット減少)、アンダーフローが発生して0となる領域が2ビット減少する(小数点以下が2ビット拡張)。すなわち、情報処理装置が小数点位置を2ビット左にシフトすると、飽和される領域が2ビット拡張され、アンダーフローが発生する領域が2ビット減少する。また、逆に、例えば、情報処理装置がこの固定小数点数を2ビットだけ正方向にシフト(左方向に2ビットシフト)すると、最上位ビットが18の位置にシフトし、飽和される領域が2ビット減少し、アンダーフローが発生する領域が2ビット拡張される。すなわち、情報処理装置が小数点位置を2ビット右にシフトすると、飽和される領域が2ビット減少し、アンダーフローが発生する領域が2ビット拡張される。
情報処理装置は、学習実行中に、非符号となる最上位のビット位置の分布を得ることで、Dynamic Fixed Point演算あるいはMixed Fixed Point演算における適正なシフト量、つまり、適切な固定小数点位置を直ちに決定できる。例えば、情報処理装置は、飽和されるデータが指定の割合以下になるように固定小数点位置を決定すればよい。つまり、一例としては、情報処理装置は、データのアンダーフローが所定の程度となることよりもデータの飽和が所定の程度となること優先して、固定小数点位置を決定することもできる。
非符号となる最上位ビット位置の分布は、情報処理装置のプロセッサ内の所定のレジスタ(統計情報レジスタともいう)内に積算される。プロセッサは、当該統計情報レジスタからの分布データの読み出し、書き込み、統計情報レジスタのクリア等の命令を実行する。したがって、統計情報レジスタには、前回のクリア命令の実行の時から現在までに命令実行の対象となった1以上の固定小数点数についての分布データが蓄積される。蓄積された分布データは、読み出し命令によってメモリに読み出される。なお、プロセッサは、クリア命令に代えて、統計情報レジスタへのロード命令の実行を可能とし、値0を統計情報レジスタにロードできるようにしてもよい。
(2)非符号となる最下位ビット位置の分布
非符号となる最下位ビット位置の分布とは、ビットが符号ビットと異なる値となる最下位のビット位置をいう。例えば、ビットの並びを最上位ビットであるbit[39]から最下位
ビットであるbit[0]までの並びとしたとき、符号ビットbit[39]と異なるbit[k]のうち、
インデックスkが最小のものをいう。また、非符号となる最下位ビット位置の分布では、
有効なデータに含まれる最下位ビットが把握される。
(3)非符号となる最上位ビット位置の最大値
非符号となる最上位ビット位置の最大値は、前回クリア命令が実行された時から現在に至るまでに、命令実行の対象となった1以上の固定小数点数について符号ビットと異なる値となる最上位のビット位置のうちの最大値である。情報処理装置は、非符号となる最上位のビット位置の最大値をDynamic Fixed Point演算における適正なシフト量、つまり、
適切な小数点位置の決定に利用できる。
プロセッサは、上記統計情報レジスタからの上記最大値の読み出し、統計情報レジスタのクリア等の命令を実行する。したがって、統計情報レジスタには、前回のクリア命令の
実行から現在までの最大値が蓄積され、読み出し命令によって最大値がメモリに読み出される。
(4)非符号となる最下位ビット位置の最小値
非符号となる最下位ビット位置の最小値は、前回クリア命令が実行されたときから現在に至るまでの1以上の固定小数点数について符号ビットと異なる値となる最下位のビット位置のうちの最小値である。情報処理装置は、非符号となる最下位ビット位置の最小値をDynamic Fixed Point演算における適正なシフト量、つまり、適切な小数点位置の決定に
利用できる。
プロセッサ10は、統計情報レジスタからの上記最小値の読み出し、クリア等の命令を実行する。したがって、統計情報レジスタには、前回のクリア命令の実行から現在までの上記最小値が蓄積され、読み出し命令によってメモリに読み出される。
<比較例>
図2に、比較例による小数点位置更新の処理例を示す。図は、例えば、非符号となる最上位ビット位置の分布である。また、図で、ビット11とビット10の間に小数点があるとする。今、固定小数点数がQ5.10(整数部5桁、小数点以下10桁)で記述され、飽和される領域A1、表現可能な領域A2、および、アンダーフローが発生する領域A3が形成されているとする。この例では、飽和される領域A1とアンダーフローが発生する領域A3は、白抜きの度数分布で例示されている。また、表現可能な領域は斜線のハッチングパターンで示されている。また、この例では、アンダーフローが発生する領域の度数分布が飽和する領域の度数分布より高く、バランスが悪い。一方、小数点位置を2ビット下側に移動し、Q3.12(整数部3桁、小数点以下12桁)としても、飽和する領域のデータ数を全データ数で除算した値は、目標の基準値未満となる。そこで、情報処理装置は、小数点位置をQ5.10からQ3.12設定しなおし、処理を継続すればよい。
すなわち、比較例の情報処理装置は、統計情報から以下の手順で次のビット精度を決定する。
(手順1)情報処理装置は、現在のビット精度で統計情報を取得し、上記(1)から(4)のいずれかのヒストグラムを作成する。なお、(3)、(4)の場合の統計情報では、収集した非符号となるビット位置(最上ビット位置、最下位ビット位置)を示すフラグ列のデータにOR演算を行い、最大度数1の度数分布を作成する。
(手順2)情報処理装置は、上記(1)の統計情報にたいして、ヒストグラムから全体のデータ数に占めるオーバーフローするデータ数の割合が閾値rmaxとなるビット精度を計算する。あるいは、情報処理装置は、上記(2)の統計情報にたいして、ヒストグラムから全体のデータ数に占めるアンダーフローするデータ数の割合が閾値rmaxとなるビット精度を計算する。なお、上記(2)(4)の統計情報の場合には、閾値rmaxを0に設定し、ビ
ット精度を計算する。つまり、ビット精度は非符号となる最上位(最下位)ビットの最大値(最小値)に合わせるように更新する。
(手順3)次の期間の演算は計算したビット精度で実施する。
図3に、比較例の情報処理装置のプロセッサ10Zの構成を例示する。図3では、プロセッサ10Zとともに、命令用メモリ(IRAM)21Zおよびデータ用メモリ(DRAM)22Zも例示されている。プロセッサ10Zは、single instruction multiple data(SIMD)型の演算命令を実行可能な演算処理装置である。
プロセッサ10Zは、プログラムカウンタ(PC)111Z、デコーダ(Decoder)1
12Z、レジスタファイル12Z、ベクトル演算用の演算器131Z、スカラ演算用の演算器(Arithmetic Logic Unit(ALU))141Z、およびベクトル演算用の演算器1
31Zの結果を加算するアキュムレータ132Zを有している。また、プロセッサ10Zは、ベクトル演算用の演算器131Z、スカラ演算用の演算器141Z、アキュムレータ132Z等の演算結果、および、データ用メモリ22Zからの読み出し結果を選択する複数のセレクタ101Zを有している。なお、図では、複数のセレクタを総称してセレクタ101Zと呼ぶ。また、複数のベクトル演算用の演算器を総称して演算器131Zと呼ぶ。
さらに、プロセッサ10Zは、セレクタ101Zによって選択されたデータからの統計情報を取得する統計情報取得部102Z、統計情報取得部102Zによって取得された統計情報を格納する統計情報格納部105Zを有している。なお、図では、複数の統計情報取得部を総称して統計情報取得部102Zと呼ぶ。
さらに、プロセッサ10Zは、セレクタ101Zによって選択されたデータの固定小数点位置を変更するデータ変換部103Zを有している。また、図では、複数のデータ変換部を総称してデータ変換部103Zと呼ぶ。
図のように、プログラムカウンタ111Zの指す命令用メモリ21Zのアドレスから、命令がフェッチされ、デコーダ112Zがフェッチされた命令をデコードする。なお、図では、命令のフェッチを実行する命令フェッチの制御部が省略されている。
デコーダ112Zが命令をデコードすると、デコード結果に応じて、プロセッサ10Zの各部が制御される。例えば、デコードの結果がベクトル演算命令であった場合、レジスタファイル12Zのベクタレジスタのデータがベクトル演算用の演算器131Zに入力され、ベクトル演算が実行される。ベクトル演算用の演算器131Zの演算結果は、セレクタ101Zを介して統計情報取得部102Zおよびデータ変換部103Zに供給される。また、ベクトル演算用の演算器131Zの演算結果は、アキュムレータ132Zに入力され、ベクトル演算用の演算器131Zの演算結果が例えば、カスケードに加算される。アキュムレータ132Zの演算結果は、セレクタ101Zを介して、統計情報取得部102Zおよびデータ変換部103Zに供給される。
また、例えば、デコードの結果、命令がスカラ演算命令であった場合には、レジスタファイル12Zのスカラ・レジスタのデータがスカラ演算用の演算器141Zに入力される。演算器141Zの演算結果は、アキュムレータ132Zの演算結果と同様、セレクタ101Zを介して統計情報取得部102Zおよびデータ変換部103Zに供給される。
さらに、例えば、デコードの結果、命令がロード命令であった場合には、データ用メモリ22Zからデータが読み出され、セレクタ101Zを介して、統計情報取得部102Zおよびデータ変換部103Zに供給される。データ変換部103Zでデータ変換された結果は、レジスタファイル12Zのレジスタに格納される。
また、デコードの結果、命令がDynamic Fixed Point演算を実行する命令であった場合
、デコーダ112Zは、シフト量がデータ変換部103に供給されるように指示する。シフト量は、例えば、命令のオペランド(即値)、オペランドで指定されたレジスタ、オペランドで指定されたアドレス・レジスタの示すアドレスのデータ用メモリ22Z等から取得され、データ変換部103Zに供給される。
データ変換部103Zは、ベクトル演算の結果、スカラ演算の結果、アキュムレータ132Zの演算結果、あるいは、データ用メモリ22Zからの読み出し結果等で得られる固定小数点数データを、指定されたシフト量Sだけシフトする。また、データ変換部103
Zは、シフトとともに、上位ビットの飽和処理および下位ビットの丸めを実行する。図5
にデータ変換部103Zの具体的構成を例示する。データ変換部103Zは、例えば入力を40ビットの演算結果とし、下位Sビットを小数部として丸めを行な丸め処理部と、算
術シフトを実行するシフト部と飽和処理を行なう飽和処理部を有する。
丸め処理部は、下位S ビットを小数部として丸めを行なう。Sが負の場合には、丸め処
理部は、何も行なわない。丸めとしては、最近接丸め、0への丸め、正の無限大への丸め
、負の無限大への丸め、乱数丸めなどが例示される。図でシフト量は、例えば、図3に例示されるように、デコーダ112Zが命令から取得するシフト量である。シフト部は、S
が正の場合はS ビット算術右シフト、Sが負の場合は、算術左シフト、すなわち、-S ビット算術左シフトを行なう。飽和部は、シフト結果が 2E15-1(正の最大値)以上の場合は 2E15、-2E15(負の最小値)以下の場合は -2E15、それ以外は入力の下位16ビットを出力
する。ここで、2E15は、2の15乗を表す。
そして、データ変換部103Zは、左シフト時上位ビットの符号を維持し、符号ビット以外を飽和処理、すなわち、上位ビットを廃棄し、下位ビットに0を埋め込む。また、データ変換部103Zは、右シフト時、上位ビット(符号ビットより下位のビット)に符号ビットを埋め込む。そして、データ変換部103Zは、上記のように丸め、シフト、飽和処理によって得られるデータを、レジスタファイル12のレジスタ等と同一のビット幅(例えば、16ビットのレジスタ)で出力する。
したがって、プロセッサ10Zで実行されるコンピュータプログラムがDynamic Fixed Point演算を実行する命令のオペランドにシフト量を指定することで、プロセッサ10Z
は、プログラム実行中に、固定小数点数の小数点位置を指定されたシフト量だけ更新する。
また、デコードの結果、命令が統計情報取得を指示する命令(統計情報取得機能付き命令という)である場合、統計情報取得部102Zにおいて、統計情報が取得され統計情報格納部105Zに格納される。ここで、統計情報は、上記で述べたように、(1)非符号となる最上位ビット位置の分布、(2)非符号となる最下位ビット位置の分布、(3)非符号となる最上位ビット位置の最大値、(4)非符号となる最下位ビット位置の最小値、またはこれらの組み合わせである。
図4に、比較例のプロセッサ10Zの回路ブロックを例示する。プロセッサ10Zは、制御ユニット11Z、レジスタファイル12Z、ベクトルユニット13Z、スカラユニット14Zを含む。制御ユニット11Zは、プログラムカウンタ111Zとデコーダ112Zを含む。レジスタファイルは、ベクトルレジスタファイル、ベクトル演算用アキュムレータレジスタ(Vector ACC)、スカラレジスタファイル、スカラ演算用アキュムレータレジスタ(ACC)を含む。ベクトルユニット13Zは、ベクトル演算用の演算器131Z、
統計情報取得部102Z、データ変換部103Zを含む。スカラユニット14Zは、スカラ演算用の演算器141Z、統計情報取得部102Z、データ変換部103Zを含む。
また、図4の構成例では、複数の統計情報取得部102Zからの統計情報を集約する統計情報集約部104Zが追加されている。また、統計情報格納部105Zはレジスタファイル12Zの一部となっている。また、命令用メモリ21Zは、メモリインターフェース(Memory I/F)を介して制御ユニット11Zに接続される。また、データ用メモリ22Zは、メモリインターフェース(Memory I/F)を介してベクトルユニット13Zおよびスカラユニット14Zに接続される。
以下、統計情報取得部102Zのうち、非符号となる最上位ビット位置を取得するものを統計情報取得部102Aと呼ぶことにする。また、統計情報取得部102Zのうち、非符号となる最下位ビット位置を取得するものを統計情報取得部102Bと呼ぶことにする
。また、統計情報集約部104Zのうち、統計情報取得部102Aによって取得されてビット位置を計数してビット位置に対するビットの分布を取得するものを統計情報集約部104Aと呼ぶことにする。また、統計情報集約部104Zのうち、ビット位置の最大値と最小値を取得するための前段階として統計情報取得部102Bによって取得されてビット位置を論理和演算するものを統計情報集約部104Bと呼ぶことにする。
図6に、比較例による非符号となる最上位ビット位置の分布を生成する統計情報取得部102Aの真理値表を例示する。この真理値表では、全ビット0および全ビット1の入力に対して、出力40ビットの最上位ビットが1、他のビットが0となっている。また、全ビット0および全ビット1以外の入力に対して、符号ビット(in[39])と異なるビット値となる最上位位置のビットが1となり、他のビットが0となる。すなわち、符号ビット(in[39])を除き、他のビット(in[38:0])に符号ビットと異なるビットが無い場合はout[39]が1となる。また、符号ビット(in[39])を除くビット(in[38:0])に符号ビットと異なるビットが有る場合はout[39]が0となる。すなわち、統計情報において、非符号となる最上位ビット位置は、ビット1で示され、この非符号となる最上位ビットの位置以外のビットはビット0で示される。他の統計情報、すなわち、(2)非符号となる最下位ビット位置、(3)非符号となる最上位ビット位置の最大値、(4)非符号となる最下位ビット位置の最小値も同様に、40ビット中の各位置を示す1つのビット1と、他の位置を示すビット0で示される。このような統計情報中の(1)非符号となる最上位ビット位置、(2)非符号となる最下位ビット位置、(3)非符号となる最上位ビット位置の最大値の位置、(4)非符号となる最下位ビット位置の最小値の位置を示すビット1は、フラグと呼ばれる。
図7に、比較例の非符号となる最上位ビット位置の分布を生成する統計情報取得部102Aのうち、出力ビット0から38を出力する論理回路を例示する。図8に、比較例の非符号となる最上位ビット位置の分布を生成する統計情報取得部102Aのうち、出力ビット39を出力する論理回路を例示する。図8のように、out39はin0〜in39までが0または1ですべて一致したときに真となる。また、out39は、in0からin39に、0と1が混在すると、偽となる。また、図7のように、out0〜out38は、自身と同じビット位置の入力ビッ
ト(in*と呼ぶ)より上位がすべて0または1で一致し、かつin*が上位とは異なる場合に真となる。
図9に、非符号となる最下位ビット位置を取得する統計情報取得部102Bのハードウェア回路の構成を例示する。符号ビットin[39]が0の場合には、統計情報取得部102Bは、最下位ビットin[0]から上位側に向かって、ビットが1であるビット位置を探索すれ
ばよい。一方、符号ビットin[39]が1の場合には、データは補数となっているので、統計
情報取得部102Bは、最下位ビットin[0]から上位側に向かって、ビットが0であるビ
ット位置を探索すればよい。
すなわち、この回路では、符号ビットin[39]と他のビット(in[0]からin[38])との排
他論理和(EXOR)が実行される。そうすると、符号ビットin[39]と同じ値を有するビットによる排他論理和値は0となり、符号ビットin[39]と異なる値を有するビットによる排他論理和値は1となる。
今、仮にin[0]がin[39]と異なる値であった場合、排他論理和によって出力データのout[0]は1となる。一方、出力データのout[1]には、in[39]とin[1]の排他論理和値がANDゲ
ートを介して入力される。このANDゲートの一方の入力には、in[39]とin[0]の排他論理和値を反転したビット値が入力される。このため、in[39]とin[0]の排他論理和値が1の場
合、in[39]とin[1]の排他論理和値によらず、ANDゲートの出力は0となる。
同様に、出力データのout[2]には、in[39]とin[2]の排他論理和値が上記と同様のANDゲ
ートを介して入力される。このANDゲートの一方の入力には、in[39]とin[0]の排他論理和値と、in[39]とin[1]の排他論理和値という2つの排他論理和値の論理和値(ORゲートの
出力)を反転したビット値が入力される。このため、in[39]とin[0]の排他論理和値が1
の場合、in[39]とin[2]の排他論理和値によらず、出力データのout[2]に値を出力するANDゲートの出力は0となる。以下、同様に、in[39]とin[i](iは1以上)の排他論理和値によらず、出力データのout[i]に値を出力するANDゲートの出力は0となる。
一方、仮にin[0]がin[39]と同じ値であった場合、排他論理和によって出力データのout[0]は0となるため、in[39]とin[1]の排他論理和値が入力されるANDゲートは、in[39]とin[1]の排他論理和値に依存して、1または0を出力する。以下、同様に、out[i](iは1以上)が出力されるANDゲートの論理否定付き入力は、in[39]とin[j](jは0以上、i-1以下)の排他的論理和が全て0の場合に0となり、in[39]とin[i](iは1以上)の排他論理和値が1になると、out[i]には1が設定される。また、そのビットより上位の出力データout[i]には0が設定される。したがって、図9の回路によって、非符号となる最下位ビット位置に1が設定され、他のビットが0の出力データout(40ビット)が取得される。
図10は、統計情報取得部102Aが取得したデータからビットの分布を取得する統計情報集約部104Aの処理を例示する図である。図では、40ビットのデータが8個並列に処理されるSIMDデータからビットの分布を取得する処理が例示される。図10では、ハードウェア回路である統計情報集約部104Aの処理が、擬似コードで記述されている。
すなわち、入力データは、8(行)×40(ビット)の配列データで例示されている。また、各行の40ビットの入力データは、非符号となる最上位ビット位置(図7、8の統計情報取得部102Aの出力)または非符号となる最下位ビット位置(図9の統計情報取得部102Bの出力)のデータである。この処理では、40ビットの出力データoutにつ
いて、まず、全ビットがクリアされる。次に、入力データの配列in[j][i]の各列iの要素の値が、すべての行(j=0から7)に対して加算される。したがって、図10の擬似コードでは、出力データ(配列要素)out[j]は、log2(SIMDデータ数)ビット(図10の例で
は3ビット)の整数である。なお、図10では、SIMDデータ数(並列処理されるデータ数)は8であると想定したが、SIMDデータ数が8に限定される訳ではない。
図11に、統計情報取得部102Aが取得したデータからビットの分布を取得する統計情報集約部104Aのハードウェア回路の構成を例示する。統計情報取得部102Aが取得したデータ(ここでは、統計取得0から統計取得(SIMDデータ数−1))がbit population count演算によって、8個の統計情報のiビット目(i=0から39)における1の個数がそれぞれカウントされる。入力データは、例えば、統計情報取得部102A(図7、図8)によって取得された非符号となる最上位ビット位置である。したがって、統計情報集約部104Aは、統計情報取得部102Aによって取得された非符号となるSIMDデータ個数分の最上位ビット位置に対して、各ビットの’1’の発生回数をカウントすることで最上
位ビット位置の発生回数を計数する。統計情報集約部104Aは、計数結果を出力データout0からout39にそれぞれ格納する。
また、入力データは、統計情報取得部102B(図9)による非符号となる最下位ビット位置とすることもできる。統計情報集約部104Aは、統計情報取得部102Bによって取得されたSIMDデータ個数分の非符号となる最下位ビット位置に対して、各ビットの’1’の発生回数をカウントすることで最下位ビット位置の発生回数を計数する。統計情報
集約部104Aは、計数結果を出力データout0からout39にそれぞれ格納する。すなわち
、統計情報集約部104Aは、非符号となる最上位ビット位置または非符号となる最下位ビット位置のいずれをも処理可能である。
また、図11でセレクタ(SEL)は、bit population count演算器(Σ)と、スカラユニット14から取得されるデータを選択する。セレクタ(SEL)に選択されたデータが、出力データout0からout39に出力される。したがって、統計情報取得部102Aがス
カラユニット14で取得したデータは、一回のスカラユニット14の演算においては、加算されることなくそのまま出力データout0からout39に出力される。out0からout39は、統計情報格納部105Zに引き渡すデータである。
図12は、統計情報取得部102Bが取得したデータからビット位置の最大値と最小値を取得する前提として、論理和演算によってビット位置を集約する統計情報集約部104Bの処理を例示する図である。図12においても、図10と同様、40ビットのデータが8個並列に処理されるSIMDデータを処理が例示される。図12では、ハードウェア回路である統計情報集約部104Bの処理が、擬似コードで記述されている。
この処理では、40ビットの出力データout[i](i=0,…,39)には、入力データの配列in[j][i]の各列をすべての行(j=0,…,7)について論理和演算(OR演算)した結果が入力
される。したがって、図12の擬似コードでは、図10の統計情報集約部104Aとは異なり、出力データ(配列要素)out[i](i=0,…,39)はビット列である。以上の処理の結果
、出力データout[i](i=0,…,39)では、out[38]から下位ビット方向に向かって最初に1となるビット位置が最大ビット位置である。また、out[0]から上位ビット方向に向かって最初に1となるビット位置が最小ビット位置である。
図13に、統計情報取得部102Bが取得したデータからビット位置の最大値と最小値を取得する前提として、論理和演算によってビット位置を集約する統計情報集約部104Bのハードウェア回路の構成を例示する。統計情報取得部102Bが取得したデータ(ここでは、統計取得0から統計取得SIMDデータ数−1)がORゲート(40ビット)によってOR演算される。また、図13でセレクタ(SEL)は、論理和演算(OR)と、スカラユニット14から取得されるデータを選択する。セレクタ(SEL)されたデータが、出力データoutに出力される。したがって、統計情報取得部102Bがスカラユニット
14で取得したデータは、一回の演算においては、論理和演算されることなくそのまま出力データoutに出力される。outは、統計情報格納部105Zに引き渡すデータである。
図14に、統計情報格納部105Z(図4参照)の具体例として、統計情報集約部104Aからの統計情報を専用レジスタに格納する統計情報格納部105Aの構成を例示する。図で、in39からin0は、例えば、図11のout39からout0に相当する統計情報集約部104Aからの統計情報を示す。また、sr39からsr0は、統計情報を格納するレジスタである
。プロセッサ10Zは、書き込み命令によって図示しないセレクタSELを介して、レジス
タsr39からsr0のいずれか1つあるいは複数に初期値v39からv0を書き込む。ただし、プロ
セッサ10Zは、デコーダからのリセット信号によってレジスタsr39からsr0をリセット
しても良い。プロセッサ10Zは、統計情報取得機能付き命令の実行ごとに、加算器を用いて統計情報を蓄積し、レジスタsr39からsr0に格納する。また、プロセッサ10Zは、
レジスタ(sr39からsr0)のいずれかの1つあるいは複数の値を読み出し、読み出し命令で指定されたデータ用メモリに保存する、あるいは、読み出し命令で指定された汎用レジスタに格納する。
以上の構成により、比較例の情報処理装置は、例えば、深層学習のミニバッチ実行時、各レイヤの各変数の統計情報をレジスタあるいはレジスタファイルに累積する。そして、比較例の情報処理装置は、蓄積された統計情報を基に各レイヤの各変数の小数点位置を更新することができる。すなわち、プロセッサ10Zが、ビット分布の統計上情報を取得する。ここで、統計情報は、命令実行時の(1)非符号となる最上位ビット位置の分布、(
2)非符号となる最下位ビット位置の分布、(3)非符号となる最上位ビット位置の最大値、(4)非符号となる最下位ビット位置の最小値、またはこれらの組み合わせ等である。したがって、比較例の情報処理装置が深層学習実行時に、データの統計情報取得のための深層学習プログラム中のオーバーヘッドがなく、実用的な時間で動的固定小数点演算を実現可能となる。
すなわち、比較例の情報処理装置のプロセッサ10Zが統計情報取得機能付き命令を実行するとともに、演算結果をビットシフトし、丸め・飽和を行なってレジスタに格納する命令を実行する。したがって、比較例の情報処理装置はビット分布を示す統計情報を取得するオーバーヘッドを少なくできる。また、ビット分布を示す統計情報から直ちに適正なビットシフト、すなわち、小数点位置を決定できる。
しかしながら、比較例では、プロセッサ10Zは統計情報を演算の中間状態の全ビット(例えば40ビット)の位置で別々に集計している。したがって、図4に例示するように、統計情報取得部102Zから統計情報集約部104Z、統計情報集約部104Zから統計情報格納部105Zに至る回路内のレジスタ、配線は、中間状態の全ビット(例えば40ビット)に対応する容量となるため、回路面積および電力消費が大きくなる。
<実施形態における統計情報>
以下、実施形態1に係る情報処理装置のプロセッサ10(図17参照)について説明する。プロセッサ10は、実施形態の演算処理装置またはコンピュータの一例として、演算処理方法を実行する。実施形態1では、プロセッサ10は演算の中間状態の全ビット(例えば40ビット)の統計情報を4つのビット領域に分けて処理する。ここで、演算の中間状態とは、各演算器の外部のレジスタから各演算器に入力データが取り込まれ、演算結果が演算器の外部のレジスタに出力されるまでの状態をいう。演算の中間状態では、演算対象のビット列は演算器の内部で保持されている。ここで、演算器は、例えば、図17のベクトル演算用の演算器131、スカラ演算用の演算器141等である。そして、プロセッサ10は、4つのビット領域のうち、重要度の低い2つの領域のビット幅を削減する。
図15に、4つのビット領域を含む統計情報を例示する。統計情報の4つのビット領域は、最上位ビット、上位側要約領域、注目領域、および下位側要約領域である。このうち、上位側要約領域と下位側要約領域は、それぞれ1ビットに削減される。その結果、削減後の統計情報のビット数は、最上位ビット(1ビット)+上位側要約領域(1ビット)+注目領域(Nビット)+下位側要約領域(1ビット)となる。注目領域が、例えば、15ビット(N=8)の場合には、削減後の統計情報のビット数は、合計18ビットとなる。
ここで、注目領域は、ユーザが例えばアプリケーションプログラム中からプロセッサ10に指定する領域である。ただし、注目領域は、アプリケーションプログラムの処理によって、プロセッサ10が指定する領域であってもよい。注目領域は、例えば、現在の精度で表現可能な数値領域(例えば、単精度16ビットの領域)の最上位ビット位置として頻度が高い位置を中心とした上下(2N-1)ビットを指定すればよい。また、注目領域は
、例えば、現在の精度で表現可能な領域の最下位ビット位置として頻度が高い位置を中心とした上下(2N−1)ビットを指定すればよい。この(2N−1)ビットの注目領域をウィンドウとも呼ぶことにする。また、注目領域の大きさを(2N−1)ビットとする場合のNをウィンドウサイズパラメータという。
本実施形態では、プロセッサ10は、ウィンドウ内では1ビット対1ビットの対応で情報を抽出する。一方、プロセッサ10は、ウィンドウ外は上位ビット側(1ビット)と下位ビット側(1ビット)で、フラグの有無を検出する。ここで、フラグとは、上述のように、統計情報中の(1)非符号となる最上位ビット位置、(2)非符号となる最下位ビット
位置、(3)非符号となる最上位ビット位置の最大値の位置、(4)非符号となる最下位ビット位置の最小値の位置を示すビット1を意味する。
また、統計情報中の最上位ビットは、統計情報取得の対象となる入力データ中に符号ビットと異なる値がない特殊な場合に1となるビットである。また、統計情報中の最上位ビ
ットは、統計情報取得の対象となる入力データ中に符号ビットと異なる値がある場合には、符号ビットを格納する。すなわち、統計情報中の最上位ビットは、注目領域の上位あるいは下位といった関係を有するものではない。このため、プロセッサ10は、統計情報取得の対象となる入力データ中の符号ビットをそのまま抽出し、統計情報の最上位ビットに設定する。また、統計情報取得の対象となる入力データ中に符号ビットと異なる値がない特殊な場合に、プロセッサ10は、統計情報の最上位ビットに1を設定する。
<命令フォーマット>
以下、本実施形態で、統計情報取得時のユーザ指定ビット位置を特定する命令の命令フォーマットを説明する。
(第1の命令フォーマット)
命令フォーマット例1は、統計情報を取得する演算命令、ロード命令などにユーザ指定ビット位置を指定する機能を個別に追加する。
(命令フォーマット例1.1)
vmul_su vs, vt, vd, imm, usr
この命令は、ベクトル・レジスタ vs と vt を乗算し imm ビットシフトし、丸め・飽和
を行なって、演算器外部のレジスタvd に格納する。乗算結果のシフト前の統計情報を取
得し統計情報レジスタに累積する。統計情報を取得する際、usrビット目を中心に(2N
−1)を注目領域とする。
(命令フォーマット例1.2)
vld_su rs, rt, rd, usr
この命令は、アドレス・レジスタ rs と rt を加算したアドレスからベクトルデータをロードして、ベクトル・レジスタ rd に格納する。ロードしたデータの統計情報を取得し統計情報レジスタに累積する。統計情報を取得する際、 usrビット目を中心に(2N-1)を注目領域とする。
(命令フォーマット例1.3)
read_acc_su rd, imm, usr
アキュムレータ・レジスタ(40ビット)のデータに対して、imm ビットシフトし、丸め・飽和を行なってスカラ・レジスタ rd に格納する。プロセッサ10は、アキュムレータレジスタのデータから統計情報を取得し、統計情報レジスタに累積する。統計情報を取得する際、usrビット目を中心に(2N−1)を注目領域とする。
なお、注目領域は、usrビットにより決定されていれば、usrビット目を中心とした(2N−1)ビットの領域でなくともよい。例えば、プロセッサ10は、usrビット目から上
位(2N−1)ビット、usrビット目から下位(2N−1)ビット等を注目領域としても
よい。
(第2の命令フォーマット)
図16に第2の命令フォーマットを例示する。第2の命令フォーマットは、既存の命令フォーマットの構成を拡張して、ユーザ指定ビット位置を指定する領域を追加するというものである。図16では、既存の命令フォーマット OPCODE,FLG,Reg,Reg,Regに対して、OPCODE,FLG,Reg,Reg,Reg,USRのように、ユーザ指定ビット位置USRが指定されている。ここで、FLG=0は、統計情報を取得しないことを指定し、FLG=1は、統計情報を取得することを
指定する。また、OPECODEは、演算を実行する一般的な命令、例えば、LOAD, ADD, SUB,STORE等である。統計情報は統計情報レジスタに累積される。
(第3の命令フォーマット)
独立したユーザ指定ビット位置の指定命令を追加する。
(命令フォーマット例3.1)
set_usr usr
プロセッサ10は、ユーザ指定ビット位置を保持する指定位置保持レジスタ34(図18参照)に値usr(ユーザ指定ビット位置情報)を格納する。ユーザプログラムは、統計情
報取得機能付き命令の前に、set_usr命令を用いて指定位置保持レジスタ34にユーザ指
定ビット位置情報をセットする。
以上述べた命令フォーマットでの命令を実装することにより、プロセッサ10は、アプリケーションプログラムから、ユーザ指定ビット位置の指定を受け付け、演算実行後の統計情報を取得し、要約し、集約し、統計情報レジスタに蓄積することができる。そして、例えば、統計情報レジスタ読み出し命令により、プロセッサ10は、アプリケーションプログラムに統計情報を引き渡せばよい。
<回路構成>
図17に、本実施形態に係るプロセッサ10の回路ブロックを例示する。比較例のプロセッサ10Zと同様、プロセッサ10は、制御ユニット11、レジスタファイル12、ベクトルユニット13、スカラユニット14、統計情報集約部104を含む。制御ユニット11は、プログラムカウンタ111とデコーダ112を含む。レジスタファイルは、ベクトルレジスタファイル、ベクトル演算用アキュムレータレジスタ(Vector ACC)、スカラレジスタファイル、スカラ演算用アキュムレータレジスタ(ACC)を含む。ベクトルユニ
ット13は、ベクトル演算用の演算器131、統計情報取得部102、データ変換部103を含む。スカラユニット14は、スカラ演算用の演算器141、統計情報取得部102、データ変換部103を含む。また、統計情報格納部105はレジスタファイル12の一部となっている。図17のプロセッサ10の構成は、統計情報要約部30が、統計情報取得部102の後段に設けられている点を除いて、図7のプロセッサ10Zと同様である。統計情報要約部30は、中間状態の全ビット(例えば40ビット)の統計情報を例えば、図15に例示したように、最上位ビット(1ビット)+上位側要約領域(1ビット)+注目領域(Nビット)+下位側要約領域(1ビット)に削減し、統計情報集約部104に引き渡す。ベクトル演算用の演算器131は、演算対象データを演算した演算結果データを出力する演算部の一例である。スカラ演算用の演算器141も、上記演算部の一例である。ベクトル演算用の演算器131、またはベクトル演算用の演算器131とスカラ演算用の演算器141の組み合わせは、複数の演算部の一例である。
また、統計情報取得部102の構成および作用は比較例の統計情報取得部102Z(102A、102B)と同様であるので、その説明を省略する。統計情報取得部102は、演算結果データ中のビット分布を示す統計情報データを出力する生成部の一例である。また、比較例の図6に例示したように、統計情報取得部102Zと同様、統計情報取得部102は、生成部として、ベクトル演算用の演算器131またはスカラ演算用の演算器141からの演算結果についていずれかのビットが1である統計情報データを生成する。
また、統計情報集約部104の構成および作用は比較例の統計情報集約部104Z(104A、104B)と同様であるので、その説明を省略する。統計情報集約部104は、複数の前記演算部が出力した要約データを集約した統計情報集約データを出力する統計情報集約部の一例である。
また、統計情報格納部105の構成および作用は比較例の統計情報格納部105Z(105A)と同様であるので、その説明を省略する。統計情報格納部105は、統計情報集約データを格納する統計情報格納部の一例である。
(統計情報要約部)
図18に、統計情報要約部30の構成を例示する。図18では、ユーザが指定したウィンドウの中心位置の情報を保持する指定位置保持レジスタ34も併せて例示されている。上述のように、統計情報要約部30は、ビット数削減前の中間状態の全ビット(例えば40ビット)の統計情報からビット数を削減し、要約された統計情報(以下、要約情報ともいう)を出力する。
図18のように、統計情報要約部30は、ウィンドウビット抜き出し回路31と、上位ビット側要約回路32と、下位ビット側要約回路33を有する。この構成では、最上位ビットは、そのまま要約情報に出力される。また、上位ビット側要約回路32は、上位側要約領域のビット列を1ビットに要約して抽出し、要約情報に出力する。また、ウィンドウビット抜き出し回路31は、注目領域をそのままウィンドウとして抽出し、要約情報に出力する。また、下位ビット側要約回路33は、下位側要約領域のビット列を1ビットに要約して抽出し、要約情報として出力する。指定位置保持レジスタ34は、ユーザ指定ビット位置をウィンドウビット抜き出し回路31、上位ビット側要約回路32、下位ビット側要約回路33のそれぞれに提供する。すなわち、統計情報要約部30は、統計情報データの最上位ビットと、上位側要約データと、前記注目領域データと、前記下位側要約データと、を含む要約データを出力する回路の一例である。
(ウィンドウビット抜き出し回路31)
図19に、ウィンドウビット抜き出し回路31の構成を例示する。図19においても、指定位置保持レジスタ34も併せて例示されている。ウィンドウビット抜き出し回路31は、バレルシフタ311を有する。ウィンドウビット抜き出し回路31は、符号ビットを除くビット(例えば39ビット)を所定ビットSビット分だけ論理左シフトを実施し、ウィンドウのサイズ分の上位ビットを取得する。ここで、所定ビットS=入力ビット数(B_WID)−(ウィンドウサイズパラメータN+ユーザ指定位置USR)で計算される。ここで、入力ビット数(B_WID)は、最上位ビットである符号ビットを含む入力ビット数である。また、ウィンドウサイズパラメータNは、ウィンドウサイズ2N−1を指定するパラメータNである。または、USRは、最下位ビットを1とするビット位置の番号である。ユーザ指定位置USRは指定位置情報の一例である。ウィンドウサイズ2N−1は、第1の所定サイズの一例である。バレルシフタ311は、第1の所定サイズであるウィンドウサイズ(2N−1)の注目領域データを、指定位置情報(ユーザ指定位置USR)に基づいて左シフトして、注目領域データを抽出するシフト回路の一例である。
例えば、ウィンドウサイズ15のときN=8、USR=31とすると、所定ビットS=40―8―31=1となり、バレルシフタ311は符号ビットを除く入力39ビットを1ビット論理左シフトする。そして、ウィンドウビット抜き出し回路31は、シフト後のデータから上位2N−1=15ビットを抽出すればよい。この構成によって、USR=31を中心に上下N−1=7ビット、合計15ビットの注目領域が取得される。ただし、本実施形態において、ウィンドウサイズパラメータNが8に限定される訳ではない。なお、USRをビット0から始まるビット番号で指定する場合には、入力ビット数(B_WID)として、符号ビットを含まない39ビットとすればよい。上記所定ビットSは、S=入力ビット数(39)−(ウィンドウサイズパラメータN+ユーザ指定位置USR);で計算される。ウィンドウビット抜き出し回路31は、指定位置情報に基づいて、第1の所定サイズの注目領域データを抽出する抽出部の一例である。
(上位ビット側要約回路32)
図20に、上位ビット側要約回路32の構成を例示する。図20においては、上位ビット側要約回路32に加えて、指定位置保持レジスタ34、固定値保持レジスタ35、ウィンドウサイズ保持レジスタ36も併せて例示されている。ここで、固定値保持レジスタ35は、ビット数削減前の中間状態のビット数(例えば、40)を保持する。ウィンドウサイズ保持レジスタ36は、上記ウィンドウサイズパラメータN(例えば、8)を保持する。また、上述の通り、指定位置保持レジスタ34は、ユーザ指定位置USRの値を保持する。
図20のように、上位ビット側要約回路32は、Subtract(SUB)回路321と、上位側マスクビット生成器322と、上位側マスクレジスタ323と、AND回路324と、OR回路325を有する。SUB回路321は、中間状態のビット数(固定値40)と、ユーザ指定位置(USR)と、ウィンドウサイズパラメータNから、上位側要約領域のビット幅を生成する。例えば、ユーザ指定位置USR=29、ウィンドウサイズパラメータN=8のとき、ビット位置29を中心に、上下7ビットずつ合計15ビット(36ビット目から22ビット目まで)が注目領域となる。したがって、上位側要約領域は、37ビット目から39ビット目までの3ビットとなる。そこで、SUB回路321は、40−USR−N=3を出力し、上位側マスクビット生成器322に出力する。ただし、上述のように、USRをビット0から始まるビット番号で指定する場合には、入力ビット数(B_WID)として、符号ビットを含まない39ビットを指定すればよい。
上位側マスクビット生成器322は、SUB回路321からビット幅を入力され、入力されたビット幅分だけ上位ビットに1を設定した上位側のマスクパターンを生成する。例えば、SUB回路321がビット幅3を出力するとき、上位側マスクビット生成器322は、上位3ビットが1で、残りのビットが0の上位側のマスクパターンを生成し、上位側マスクレジスタ323に出力する。
AND回路324は、入力データのビット列と上位側マスクレジスタ323のビット列とのAND演算を実行する。OR回路325は、入力データのビット列と上位側マスクレジスタ323のビット列とのAND演算結果であるビット列に対して、各ビット間のOR演算を実行する。したがって、AND回路324と上位側マスクレジスタ323とによってマスクマスクされた入力データ中の部分に、ビット1が含まれると、OR回路325の出力は1となる。一方、AND回路324と上位側マスクレジスタ323とによってマスクされた入力データ中の部分に、ビット1が含まれず、すべてビット0であると、OR回路325の出力は0となる。
すなわち、上位ビット側要約回路32は、入力データ中から、上位側要約領域のビット列を上位側マスクレジスタ323のマスクパターンで抽出し、上位側要約領域の各ビット間でOR演算を実行し、1ビットに要約して抽出する。すなわち、上位側要約領域の全ビット中に少なくとも1つ1のビットが含まれていると、要約された値は1となる。一方、上位側要約領域の全ビットがすべて0の場合、要約された値は1となる。上位ビット側要約回路32は、注目領域データを除いたデータのうち、上位側のデータを第2の所定サイズに要約した上位側要約データを出力する上位側要約部の一例である。上位ビット側要約回路32が上位側要約領域を要約した1ビットは、第2の所定サイズの一例である。AN
D回路324は統計情報データのうち、要約対象の上位側要約領域データと、指定位置情報に基づいて生成された上位側マスクデータとの論理積演算を実行する回路の一例である。OR回路325は、論理積演算の結果である第1の論理積結果データの全てのビットの論理和演算を実行する回路の一例である。
図21に、上位側マスクビット生成器322の真理値表を例示する。図で、inputは、
入力ビット列を示し、outputは、出力ビット列を示し、inは、入力ビット列を格納する変数(in[0]からin[39])を例示し、out[38]からout[0]は、出力ビット列を格納する変数を例示する。図21のように、上位側マスクビット生成器322は、入力された値(input
)に対応するビット幅だけ、上位ビットから1を設定する。また、上位側マスクビット生成器322は、入力された値に対応するビット幅よりも下位のビットに0を設定する。例えば、input=1のとき、出力ビットout[39:0]のうち、最上位のout[39]=1とし、out[38]以下をすべて0にする。また、例えば、input=2のとき、出力ビットout[39:0]のうち、最上位から2ビットを1に設定し(out[39]=1, out[38]=1)、out[37]以下をすべて0にする
。また、input=kのとき、出力ビットout[39:0]のうち、最上位からkビットを1に設定し
(out[39]=1,…,out[39-k+1]=1)、out[39-k]以下をすべて0にする。
図22は、6入力40出力のデコーダの例であり、図23は図22のデコーダの出力(mid[1]からmid[39])を基に、上位側のマスクパターンを生成するマスクパターン回路の
例である。図22は、In[0]からIn[5]の6ビットに入力された数値(0から39)に対応する出力ビットmid[0]からmid[39]のいずれか1つのみが1に設定され、他のビットは0
に設定される。例えば、入力の値が3の場合、mid[3]=1となり、mid[3]以外は0となる。また、例えば、入力の値が38の場合、mid[38]=1となり、mid[38]以外は0となる。
また、図23のマスクパターン回路では、入力ビット列をmid[1]からmid[39]で表し、
出力ビット列をOut[0]からOut[38]で表す。そして、図23のマスクパターン回路では、mid[39]からmid[1]が、Out[0]からOut[38]にそれぞれ対応づけられるとともに、mid[j]=1
のとき、mid[j]に対応するOut[k]からout[38]が1となる。例えば、mid[39]には、Out[0]が対応づけられており、mid[39]=1のとき、Out[0]からOut[38]のすべてが1となる。また、mid[38]には、Out[1]が対応づけられており、mid[38]=1のとき、Out[0]=0, Out[1]からOut[38]が1となる。
したがって、図22のデコーダのmid[k](k=1から39)を図23のマスクパターン回路
のmid[k] (k=1から39)にそのまま入力すると、図22のデコーダへのIn[0]からIn[5]による6ビットの数値(k)にしたがって、図23のOut[0]からOut[38]の39ビットのうち、上位kビットを1に設定し、残りのビットを0にすることができる。したがって図22のデコーダと図23のマスクパターン回路の組合わせによって、上位側マスクビット生成器322が形成される。
(下位ビット側要約回路33)
図24に、下位ビット側要約回路33の構成を例示する。図24においては、下位ビット側要約回路33に加えて、指定位置保持レジスタ34、ウィンドウサイズ保持レジスタ36も併せて例示されている。すでに述べたように、ウィンドウサイズ保持レジスタ36は、上記ウィンドウサイズパラメータN(例えば、8)を保持する。また、上述の通り、指定位置保持レジスタ34は、ユーザ指定位置USRの値を保持する。
図24のように、上位ビット側要約回路32は、SUB回路331と、下位側マスクビット生成器332と、下位側マスクレジスタ333と、AND回路334と、OR回路335を有する。SUB回路321は、ユーザ指定位置(USR)と、ウィンドウサイズパラメータNから、下位側要約領域のビット幅を生成する。例えば、ユーザ指定位置USR=12、ウィンドウサイズパラメータN=8のとき、ビット位置12(下から12ビット目)を中心に、上下7ビットずつ合計15ビット(19ビット目から5ビット目まで)が注目領域となる。したがって、下位側要約領域は、4ビット目から1ビット目までの4ビットとなる。そこで、SUB回路321は、S=USR−N=4を出力し、下位側マスクビット生成器332に出力する。ここで、USRは、最下位ビットを1とするビット位置の番号である。なお、USRをビット0から始まるビット番号で指定する場合には、上記
Sは、S=USR−N+1;で計算される。
下位側マスクビット生成器332は、SUB回路331からビット幅を入力され、入力されたビット幅分だけ下位ビットに1を設定した下位側のマスクパターンを生成する。例えば、SUB回路331がビット幅4を出力するとき、下位側マスクビット生成器332は、下位4ビットが1で、残りのビットが0の下位側のマスクパターンを生成し、下位側マスクレジスタ333に出力する。
AND回路334は、入力データのビット列と下位側マスクレジスタ333のビット列とのAND演算を実行する。OR回路335は、入力データのビット列と下位側マスクレジスタ333のビット列とのAND演算結果であるビット列に対して各ビットのOR演算を実行する。したがって、AND回路334と下位側マスクレジスタ333とによってマスクマスクされた入力データ中の部分に、ビット1が含まれると、OR回路335の出力は1となる。一方、AND回路334と下位側マスクレジスタ333とによってマスクマスクされた入力データ中の部分に、ビット1が含まれず、すべてビット0であると、OR回路335の出力は0となる。
すなわち、下位ビット側要約回路33は、入力データ中から、下位側要約領域のビット列を下位側マスクレジスタ333のマスクパターンで抽出し、下位側要約領域の各ビット間でOR演算を実行し、1ビットに要約して抽出する。すなわち、下位側要約領域の全ビット中に少なくとも1つ1のビットが含まれていると、要約された値は1となる。一方、下位側要約領域の全ビットがすべて0の場合、要約された値は0となる。下位ビット側要約回路33は、注目領域データを除いたデータのうち、下位側のデータを第3の所定サイズに要約した下位側要約データを出力する下位側要約部の一例である。下位ビット側要約回路33が下位側要約領域を要約した1ビットは、第3の所定サイズの一例である。AN
D回路334は統計情報データのうち、要約対象の下位側要約領域データと、指定位置情報に基づいて生成された下位側マスクデータとの論理積演算を実行する回路の一例である。OR回路335は、論理積演算の結果である第2の論理積結果データの全てのビットの論理和演算を実行する回路の一例である。
図25に、下位側マスクビット生成器332の真理値表を例示する。図25のように、下位側マスクビット生成器332は、入力された値(input)に対応するビット幅だけ、
下位ビットから1を設定する。また、下位側マスクビット生成器332は、入力された値に対応するビット幅よりも上位のビットに0を設定する。例えば、input=1のとき、出力
ビットout[39:0]のうち、最下位のout[0]=1とし、out[1]以上をすべて0にする。また、
例えば、input=2のとき、出力ビットoutput[39:0]のうち、最下位から2ビットを1に設
定し(out[0]=1, out[1]=1)、out[3]以上をすべて0にする。また、input=kのとき、出
力ビットoutput[39:0]のうち、最下位からkビットを1に設定し(out[0]=1,…,out[k-1]=1)、out[k]以上をすべて0にする。
図26は図22のデコーダの出力(mid[1]からmid[39])を基に、下位側のマスクパタ
ーンを生成するマスクパターン回路の例である。図26のマスクパターン生成回路は、図23のマスクパターン生成回路と比較して、出力ビット列Out[0]からOut[38]の並び順が
逆になっている。また、図26においても、入力ビット列をmid[1]からmid[39]で表し、
出力ビット列をOut[0]からOut[38]で表す。
すなわち、図26のマスクパターン回路では、mid[39]からmid[1]が、Out[38]からOut[0]にそれぞれ対応づけられるとともに、mid[j]=1のとき、mid[j]に対応するOut[j-1]からOut[0]が1となる。例えば、mid[39]には、Out[38]が対応づけられており、mid[39]=1の
とき、out[0]からout[38]のすべてが1となる。また、mid[38]には、Out[37]が対応づけ
られており、mid[38]=1のとき、Out[0]からout[37]が1となり、Out[38]=0となる。さら
に、例えば、mid[1]には、Out[0]が対応づけられており、mid[1]=1のとき、Out[0]=1となり、Out[1]からOut[38]が0となる。
したがって、図22のデコーダのmid[k](k=1から39)を図26のマスクパターン回路
のmid[k] (k=1から39)にそのまま入力すると、図22のデコーダへのIn[0]からIn[5]による6ビットの数値(k)にしたがって、図26のOut[0]からOut[38]の39ビットのうち、下位kビットを1に設定し、残りのビットを0にすることができる。したがって図22のデコーダと図26のマスクパターン回路の組み合わせによって、下位側マスクビット生成器332が形成される。
図27に、実施形態1の統計情報取得部102、統計情報要約部30、統計情報集約部104、統計情報格納部105の間のデータフローを例示する。このうち、統計情報取得部102の詳細は、比較例の統計情報取得部102Zと同様である。統計情報要約部30の詳細は、上記で述べた通りである。統計情報集約部104および統計情報格納部105は、統計情報が要約され、ビット数が削減されている点以外は、比較例の統計情報集約部104Zおよび統計情報格納部105Zと同様である。
すなわち、本実施形態では、統計情報取得部102は、演算回路内のビット数(例えば、40ビット)で統計情報を生成する。そして、統計情報要約部30は、統計情報取得部102が取得した統計情報のうち、最上位ビット(1ビット)と注目領域(2N−1ビット、例えば15ビット)を維持し、上位側要約領域および下位側要約領域をそれぞれ1ビットに要約する。したがって、要約前の統計情報(例えば、40ビット)が要約されて、例えば、18ビットの要約情報、すなわち、要約された統計情報となる。
統計情報集約部104は、要約された統計情報を比較例と同様の手順で集約する。統計情報格納部105は、要約された統計情報を比較例と同様の手順で格納する。なお、図27で、セレクタSELへの入力端子は、メモリあるいは汎用レジスタの値を統計情報格納部105に初期設定するための経路である。また、統計情報格納部105からの出力端子は、統計情報格納部105のデータをメモリあるいは汎用レジスタに出力するための経路である。
さらに、統計情報格納部105に接続されるMAXとされる要素は、統計情報格納部105に格納されている統計情報のうち、比較例の図12、図13によって、蓄積された非符号となる最上位ビット位置の論理和から、最大値のビットを選択する回路である。また、統計情報格納部105に接続されるMINとされる要素は、統計情報格納部105に格納されている統計情報のうち、比較例の図12、図13によって、蓄積された非符号となる最下位ビット位置の論理和から、最小値のビットを選択する回路である。
図27から明らかなように、実施形態1では、統計情報要約部30は、統計情報を要約して統計情報集約部104に引き渡す。したがって、統計情報集約部104以降の処理では、統計情報は、要約されたビット数(例えば、40ビットから18ビット)になり、回路および伝送路は、削減されたビット数分だけ規模が低減される。
図28は、非符号となる最上位ビット位置の分布および非符号となる最下位ビット位置の分布を集約する統計情報集約部104の構成を例示する図である。統計情報集約部104は、比較例1と同様、統計情報の各iビットをベクトルデータ数分だけ加算し、取得済みの統計情報の各iビットに積算する。ただし、実施形態1では、統計情報要約部30部によって統計情報が要約されているので、統計情報集約部104に含まれる演算器(加算器等)の構成がビット数の減少分だけ削減される。
図29は、非符号となる最上位ビット位置の最大値および非符号となる最下位ビット位置の最小値を集約する統計情報集約部104の構成を例示する図である。図29で、MAXおよびMINの処理は、擬似コードで例示されている。図で、OR回路は、比較例の図12と同様、入力データである統計情報の配列in[j][i]の各列をすべての行(j=0,…,7)について論理和演算(OR演算)する回路である。また、MAXとMINは、擬似コードで記述されているが、論理ゲートで実現される。ただし、実施形態1では、統計情報要約部30部によって統計情報が要約されているので、図29の各構成に含まれる回路がビット数の減少分だけ削減される。
<実施形態1の効果>
以上述べたように、実施形態1では、統計情報要約部30により、統計情報が要約される。その結果、統計情報要約部30以降、統計情報集約部104および統計情報格納部105のビット幅の削減により、配線が削減される。例えば、演算回路内部のビット数を40ビットとして、要約された統計情報を18ビットとすると、ゲート数および配線数はほぼ半減することが期待できる。
統計情報は、図6に例示するように、1箇所にフラグを有するデータである。また、オーバーフロー発生率、アンダーフロー発生率を改善するためには、注目領域のフラグの分布は精度よく収集することが望ましい。しかし、上位側要約領域と、下位側要約領域では、フラッグが設定されることがまれである。したがって、上位側要約領域と、下位側要約領域とが1ビットに集約されても、統計情報自体の劣化は少ない。したがって、実施形態1の構成により、統計情報の精度をある程度維持した上で、統計情報を要約し、回路規模を削減し、さらには消費電力を低減できる。
また、実施形態1の統計情報取得部102は、ベクトル演算器131、スカラ演算器141による演算結果について、いずれかのビットが1である統計情報を生成する。したがって、統計情報取得部102は、忠実に、(1)非符号となる最上位ビット位置、(2)非符号となる最下位ビット位置、(3)非符号となる最上位ビット位置の最大値の位置、(4)非符号となる最下位ビット位置の最小値の位置を示す統計情報を生成できる。また、統計情報がいずれかのビットが1であり、図1のように注目領域の両側に頻度の低い分布を形成するので、統計情報が要約可能となる。
また、統計情報取得部102は、バレルシフタ311により注目領域のデータを指定位置情報に基づいて左シフトして、抽出するので、簡易な回路構成で注目領域のデータを取得できる。
また、上位ビット側要約回路32は、要約対象の上位側要約領域のビット列とユーザ指定位置USRに基づいて生成された上位側マスクレジスタ323のマスクパターンとのAND回路324による論理積演算を実行する。そして、上位ビット側要約回路32は、論理積演算の結果である第1の論理積結果データの全てのビットをOR325により論理和演算する。したがって、上位ビット側要約回路32は、2段の論理ゲートにより簡易に上位側要約領域のビット列を要約できる。
また、下位ビット側要約回路33は、要約対象の下位側要約領域のビット列とユーザ指定位置USRに基づいて生成された下位側マスクレジスタ333のマスクパターンとのAND回路334による論理積演算を実行する。そして、下位ビット側要約回路33は、論理積演算の結果である第2の論理積結果データの全てのビットをOR回路335により論理和演算する。したがって、下位ビット側要約回路33は、2段の論理ゲートにより簡易に下位側要約領域のビット列を要約できる。
[実施形態2]
図30および図31により、実施形態2に係る情報処理装置のプロセッサ10について説明する。上記実施形態1では、プロセッサ10は、統計情報を最上位ビット、上位側要約領域、注目領域、下位側要約領域に区分した。そして、プロセッサ10は、上位側要約領域および下位側要約領域をそれぞれ1ビットに要約した。本実施形態では、プロセッサ10は、さらに、注目領域を中央部分と両側の周辺部分に分割する。そして、プロセッサ10は、注目領域のうち、両側の周辺部分を1ビットに要約する。以上のような注目領域を要約する回路を注目領域要約部40と呼ぶことにする。注目領域を要約する注目領域要約部40以外のプロセッサ10の構成は実施形態1と同様である。そこで、実施形態2では、実施形態1の構成に注目領域要約部40が追加されるとものとして、注目領域要約部40の構成を説明する。なお、注目領域要約部40は、図17の統計情報要約部30に内蔵され、注目領域を処理する。注目領域要約部40は、注目領域データのうちの上位側の所定ビット数部分を第4の所定サイズに要約し、注目領域データのうちの下位側の所定ビット数部分を第5の所定サイズに要約する注目領域要約部の一例である。
図30は、実施形態2の処理を例示する図である。図では、40ビットの統計情報から、注目領域15ビットが抽出されている。なお、上位側要約領域および下位側要約領域に対する処理は、実施形態1と同様であるので、その説明を省略する。そして、プロセッサ10は、注目領域のうち、両側のそれぞれ4ビットを周辺部分とする。そして、プロセッサ10は、4ビットの周辺部分をそれぞれ1ビットに要約する。この要約を実行するための構成は、実施形態1での統計情報要約部30の構成と同様である。その結果、注目領域は、例えば、15ビットから9ビットに削減され、統計情報全体で、12ビットに削減される。
図31は、実施形態2において、注目領域を要約する注目領域要約部40の構成を例示する図である。図のように、注目領域要約部40は、バレルシフタ41と、バレルシフタによるシフト後のデータを保持するレジスタ42と、OR回路43、44を有している。バレルシフタ41の処理は、実施形態1のバレルシフタと同様であり、統計情報を下記Sだけシフトする。
S=統計情報のビット幅(40)−(ユーザ指定ビット位置USR+ウィンドウサイズパラメータN);
レジスタ42は、バレルシフタ41によってシフトされた統計情報のうち、上位2N−1ビットを抽出する。OR回路43、44は、レジスタ42の上側と下側のそれぞれ4ビットを1ビットにOR演算する。上側の4ビットが1ビットにOR演算されるときの1ビットが第4の所定サイズの一例である。下側の4ビットが1ビットにOR演算されるときの1ビットが第5の所定サイズの一例である。このような構成によって、統計情報の注目領域が15ビットから9ビットに要約される。なお、注目領域の両側で要約されるビット数は4ビットに限定される訳ではない。以上のような構成で、注目領域を削減することができる。したがって、実施形態2のプロセッサ10は、実施形態1よりもさらに統計情報を削減できる。
例えば、統計情報のビット数が40ビットから12ビットに削減されると、注目領域要約部40を含む統計情報要約部30から統計情報格納部105に至る配線は12/40=0.3まで、70%削減されると期待できる。また、SIMD数8のベクトルユニットを1個、スカラユニット1個を想定する。また、フリップフロップをD型フリップフロップとして、ゲート数10ゲートと仮定する。このような仮定において、統計情報のビット数が40ビットから12ビットに削減されると、全体のゲート数が約64%削減することが推定される。
10 プロセッサ
11 制御ユニット
12 レジスタファイル
13 ベクトルユニット
14 スカラユニット
30 統計情報要約部
31 ウィンドウビット抜き出し回路
32 上位ビット側要約回路
33 下位ビット側要約回路
40 注目領域要約部
102 統計情報取得部
103 データ変換部
104 統計情報集約部
105 統計情報蓄積部
131 ベクトル演算用の演算器
141 スカラ演算用の演算器
311 バレルシフタ

Claims (9)

  1. 入力した演算対象データを演算した演算結果データを出力する演算部と、
    前記演算結果データ中のビット分布を示す統計情報データを出力する生成部と、
    前記統計情報データのうち、指定位置情報に基づいて、第1の所定サイズの注目領域データを抽出する抽出部と、
    前記統計情報データについて、前記注目領域データを除いたデータのうち、上位側のデータを第2の所定サイズに要約した上位側要約データを出力する上位側要約部と、
    前記統計情報データについて、前記注目領域データを除いたデータのうち、下位側のデータを第3の所定サイズに要約した下位側要約データを出力する下位側要約部と、
    を有する演算処理装置。
  2. 前記生成部は、前記演算結果についていずれかのビットが1である統計情報データを生成する請求項1記載の演算処理装置。
  3. 前記抽出部は、前記統計情報データのうち、前記第1の所定サイズの注目領域データを、前記指定位置情報に基づいて左シフトして、前記注目領域データを抽出するシフト回路を有する請求項1又は2記載の演算処理装置。
  4. 前記上位側要約部は、前記統計情報データのうち、要約対象の上位側要約領域データと、前記指定位置情報に基づいて生成された上位側マスクデータとの論理積演算の結果である第1の論理積結果データの全てのビットの論理和演算の結果を出力する請求項1〜3のいずれか1項に記載の演算処理装置。
  5. 前記下位側要約部は、前記統計情報データのうち、要約対象の下位側要約領域データと、前記指定位置情報に基づいて生成された下位側マスクデータとの論理積演算の結果である第2の論理積結果データの全てのビットの論理和演算の結果を出力する請求項1〜4のいずれか1項に記載の演算処理装置。
  6. 前記演算処理装置は、
    前記統計情報データの最上位ビットと、前記上位側要約データと、前記注目領域データと、前記下位側要約データと、を含む要約データを出力する請求項1〜5のいずれか1項に記載の演算処理装置。
  7. 前記演算処理装置はさらに、
    複数の前記演算部と、
    複数の前記演算部が出力した要約データを集約した統計情報集約データを出力する統計情報集約部と、
    前記統計情報集約データを格納する統計情報格納部と、
    を有する請求項1〜6のいずれか1項に記載の演算処理装置。
  8. 前記注目領域データのうちの上位側の所定ビット数部分を第4の所定サイズに要約し、前記注目領域データのうちの下位側の所定ビット数部分を第5の所定サイズに要約する注目領域要約部をさらに有する請求項1〜7のいずれか1項に記載の演算処理装置。
  9. コンピュータが、演算対象データを演算した演算結果データを出力することと、
    前記演算結果データ中のビット分布を示す統計情報データを出力することと、
    前記統計情報データのうち、指定位置情報に基づいて、第1の所定サイズの注目領域データを抽出することと、
    前記統計情報データについて、前記注目領域データを除いたデータのうち、上位側のデ
    ータを第2の所定サイズに要約した上位側要約データを出力することと、
    前記統計情報データについて、前記注目領域データを除いたデータのうち、下位側のデータを第3の所定サイズに要約した下位側要約データを出力することと、
    を実行する演算処理方法。
JP2017182797A 2017-09-22 2017-09-22 演算処理装置および演算処理方法 Pending JP2019057249A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2017182797A JP2019057249A (ja) 2017-09-22 2017-09-22 演算処理装置および演算処理方法
US16/129,841 US20190095175A1 (en) 2017-09-22 2018-09-13 Arithmetic processing device and arithmetic processing method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2017182797A JP2019057249A (ja) 2017-09-22 2017-09-22 演算処理装置および演算処理方法

Publications (1)

Publication Number Publication Date
JP2019057249A true JP2019057249A (ja) 2019-04-11

Family

ID=65809276

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017182797A Pending JP2019057249A (ja) 2017-09-22 2017-09-22 演算処理装置および演算処理方法

Country Status (2)

Country Link
US (1) US20190095175A1 (ja)
JP (1) JP2019057249A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112215340A (zh) * 2019-07-11 2021-01-12 富士通株式会社 运算处理设备、控制方法以及计算机可读记录介质
JP2021043601A (ja) * 2019-09-09 2021-03-18 富士通株式会社 学習プログラムおよび学習方法

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017211735A (ja) * 2016-05-24 2017-11-30 ソニー株式会社 演算処理装置、及び、演算処理方法
JP7056225B2 (ja) * 2018-02-26 2022-04-19 富士通株式会社 演算処理装置、情報処理装置、情報処理方法、およびプログラム
JP2020190901A (ja) * 2019-05-21 2020-11-26 富士通株式会社 演算処理装置、演算処理装置の制御プログラム及び演算処理装置の制御方法
US10997116B2 (en) 2019-08-06 2021-05-04 Microsoft Technology Licensing, Llc Tensor-based hardware accelerator including a scalar-processing unit
JP7371499B2 (ja) * 2020-01-07 2023-10-31 富士通株式会社 演算処理装置、演算処理装置の制御方法及び演算処理プログラム
US11275562B2 (en) 2020-02-19 2022-03-15 Micron Technology, Inc. Bit string accumulation
CN112446423B (zh) * 2020-11-12 2023-01-17 昆明理工大学 一种基于迁移学习的快速混合高阶注意力域对抗网络的方法

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB201607713D0 (en) * 2016-05-03 2016-06-15 Imagination Tech Ltd Convolutional neural network
US10997492B2 (en) * 2017-01-20 2021-05-04 Nvidia Corporation Automated methods for conversions to a lower precision data format
US10491239B1 (en) * 2017-02-02 2019-11-26 Habana Labs Ltd. Large-scale computations using an adaptive numerical format

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112215340A (zh) * 2019-07-11 2021-01-12 富士通株式会社 运算处理设备、控制方法以及计算机可读记录介质
JP2021015420A (ja) * 2019-07-11 2021-02-12 富士通株式会社 演算処理装置、制御プログラム、及び制御方法
JP7243498B2 (ja) 2019-07-11 2023-03-22 富士通株式会社 演算処理装置、制御プログラム、及び制御方法
JP2021043601A (ja) * 2019-09-09 2021-03-18 富士通株式会社 学習プログラムおよび学習方法
JP7342544B2 (ja) 2019-09-09 2023-09-12 富士通株式会社 学習プログラムおよび学習方法

Also Published As

Publication number Publication date
US20190095175A1 (en) 2019-03-28

Similar Documents

Publication Publication Date Title
JP2019057249A (ja) 演算処理装置および演算処理方法
EP3575952B1 (en) Arithmetic processing device, information processing device, method and program
US10216479B2 (en) Apparatus and method for performing arithmetic operations to accumulate floating-point numbers
CN107844322B (zh) 用于执行人工神经网络正向运算的装置和方法
US10379816B2 (en) Data accumulation apparatus and method, and digital signal processing device
TWI626587B (zh) 選擇性將啓動函數輸出或累加器値寫回神經記憶體之神經處理單元
CN107077416B (zh) 用于以选择性舍入模式进行向量处理的装置和方法
US9557995B2 (en) Data processing apparatus and method for performing segmented operations
JP2019148896A (ja) 演算処理装置、情報処理装置、情報処理方法、およびプログラム
WO2017181342A1 (zh) 一种非线性函数运算装置及方法
KR20080027454A (ko) 명령어에 응답하여 라운딩 연산을 수행하는 방법, 장치, 시스템 및 머신-판독가능 매체
JP2019139338A (ja) 情報処理装置、情報処理方法、およびプログラム
US10409604B2 (en) Apparatus and method for performing multiply-and-accumulate-products operations
EP3769208B1 (en) Stochastic rounding logic
JP2019148972A (ja) 演算処理装置、情報処理装置、情報処理方法、およびプログラム
CN107305484A (zh) 一种非线性函数运算装置及方法
US20170277514A1 (en) Unified Multiply Unit
KR102560424B1 (ko) 와이드 데이터 타입들의 비교
US20200192633A1 (en) Arithmetic processing device and method of controlling arithmetic processing device
US11704092B2 (en) High-precision anchored-implicit processing
US20220137962A1 (en) Logarithmic number system
US20230281013A1 (en) Machine Code Instruction
JP2023531917A (ja) 小さいフットプリントの算術論理装置を有する処理装置
JP2010033275A (ja) データ処理方法及びデータ処理プロセッサ
CN116756465A (zh) 计算单元、计算核心、数据计算方法、芯片及电子设备