(57)【要約】【課題】固定小数点数での精度を向上するとともに、回路の物理量および消費電力を削減可能な演算処理装置を提供する。【解決手段】演算処理装置は、入力した演算対象データを演算した演算結果データを出力する演算部と、演算結果データ中のビット分布を示す統計情報データを出力する生成部と、統計情報データのうち、指定位置情報に基づいて、第１の所定サイズの注目領域データを抽出する抽出部と、統計情報データについて、注目領域データを除いたデータのうち、上位側のデータを第２の所定サイズに要約した上位側要約データを出力する上位側要約部と、統計情報データについて、注目領域データを除いたデータのうち、下位側のデータを第３の所定サイズに要約した下位側要約データを出力する下位側要約部と、を有する。【選択図】図１７
2019057249.tif 000002
【特許請求の範囲】
【請求項１】
入力した演算対象データを演算した演算結果データを出力する演算部と、
前記演算結果データ中のビット分布を示す統計情報データを出力する生成部と、
前記統計情報データのうち、指定位置情報に基づいて、第１の所定サイズの注目領域データを抽出する抽出部と、
前記統計情報データについて、前記注目領域データを除いたデータのうち、上位側のデータを第２の所定サイズに要約した上位側要約データを出力する上位側要約部と、
前記統計情報データについて、前記注目領域データを除いたデータのうち、下位側のデータを第３の所定サイズに要約した下位側要約データを出力する下位側要約部と、
を有する演算処理装置。
【請求項２】
前記生成部は、前記演算結果についていずれかのビットが１である統計情報データを生成する請求項１記載の演算処理装置。
【請求項３】
前記抽出部は、前記統計情報データのうち、前記第１の所定サイズの注目領域データを、前記指定位置情報に基づいて左シフトして、前記注目領域データを抽出するシフト回路を有する請求項１又は２記載の演算処理装置。
【請求項４】
前記上位側要約部は、前記統計情報データのうち、要約対象の上位側要約領域データと、前記指定位置情報に基づいて生成された上位側マスクデータとの論理積演算の結果である第１の論理積結果データの全てのビットの論理和演算の結果を出力する請求項１〜３のいずれか１項に記載の演算処理装置。
【請求項５】
前記下位側要約部は、前記統計情報データのうち、要約対象の下位側要約領域データと、前記指定位置情報に基づいて生成された下位側マスクデータとの論理積演算の結果である第２の論理積結果データの全てのビットの論理和演算の結果を出力する請求項１〜４のいずれか１項に記載の演算処理装置。
【請求項６】
前記演算処理装置は、
前記統計情報データの最上位ビットと、前記上位側要約データと、前記注目領域データと、前記下位側要約データと、を含む要約データを出力する請求項１〜５のいずれか１項に記載の演算処理装置。
【請求項７】
前記演算処理装置はさらに、
複数の前記演算部と、
複数の前記演算部が出力した要約データを集約した統計情報集約データを出力する統計情報集約部と、
前記統計情報集約データを格納する統計情報格納部と、
を有する請求項１〜６のいずれか１項に記載の演算処理装置。
【請求項８】
前記注目領域データのうちの上位側の所定ビット数部分を第４の所定サイズに要約し、前記注目領域データのうちの下位側の所定ビット数部分を第５の所定サイズに要約する注目領域要約部をさらに有する請求項１〜７のいずれか1項に記載の演算処理装置。
【請求項９】
コンピュータが、演算対象データを演算した演算結果データを出力することと、
前記演算結果データ中のビット分布を示す統計情報データを出力することと、
前記統計情報データのうち、指定位置情報に基づいて、第１の所定サイズの注目領域データを抽出することと、
前記統計情報データについて、前記注目領域データを除いたデータのうち、上位側のデ
ータを第２の所定サイズに要約した上位側要約データを出力することと、
前記統計情報データについて、前記注目領域データを除いたデータのうち、下位側のデータを第３の所定サイズに要約した下位側要約データを出力することと、
を実行する演算処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、演算処理装置および演算処理方法に関する。
【背景技術】
【０００２】
今日、人工知能を用いた機械学習のうち、特に深層学習へのニーズが高まっている。深層学習においては、乗算、積和演算、ベクトル乗算を含む様々な演算が実行される。ただし、深層学習では、個々の演算精度への要求は、通常の演算処理ほど厳密ではない。例えば、通常の演算処理では、プログラマは極力桁あふれを発生させないようにコンピュータプログラムを開発する。一方、深層学習では、大きな値がある程度飽和することは許容されることがある。深層学習では、複数の入力データを畳み込み演算するときの係数（重み）の調整が主な処理となり、入力データのうち、極端なデータは重視されないことが多いからである。また、大量のデータを繰り返し用いて係数を調整するため、一度飽和されたデータも、学習の進行に合わせて桁調整を行なうことで、飽和されずに係数調整に反映できるようになるためである。
【０００３】
そこで、このような深層学習の特性を考慮し、深層学習用の演算処理装置のチップ面積の削減、消費電力性能の向上等を図るため、浮動小数点数を用いないで、固定小数点数による整数演算を用いることが考えられる。浮動小数点数演算よりも整数演算の方が回路構成を簡素にできるからである。
【０００４】
しかしながら、固定小数点数は、取りうる値のダイナミックレンジが狭いので、浮動小数点数より演算精度が劣化する場合がある。したがって、深層学習においても、極力大きな値から小さな値までを表現する精度、すなわち、有効桁数について、配慮が求められる。このため、固定小数点数を拡張した技術が提案されている。
【０００５】
例えば、Mixed Fixed Pointによる処理では、プログラム全体として統一した小数点位
置を使うのではなく、変数ごとに適した小数点位置（Ｑフォーマット）が用いられる。例えば、Ｑ３．１２フォーマットは、符号ビット１桁、整数部３桁、小数点以下１２桁の１６ビットデータを定義する。Mixed Fixed Pointでは、変数ごとに、小数点位置、つまり
、整数部の桁数と小数点以下の桁数が異なるものとして処理可能となる。
【０００６】
他の例として、Dynamic Fixed Point (動的固定小数点数)による処理では、実行中に変数の値域が取得され、一定のタイミングで小数点位置が見直される。したがって、Mixed Fixed Point演算、およびDynamic Fixed Point演算は、浮動小数点演算よりも処理が簡単な固定小数点演算に、浮動小数点演算の側面を加えたものと言える。
【０００７】
さらに、Mixed Fixed Point演算、Dynamic Fixed Point演算による処理を実行するためのプログラム向けの機能を有するDigital Signal Processor（ＤＳＰ）も提案されている。例えば、ブロック・シフト指定付きの演算命令を実行するＤＳＰがある。ブロック・シフト指定付きの演算命令は、変数のビット幅より大きいビット幅で演算を実行し、演算結果から値をシフトして切り出して変数用のレジスタに格納する。この命令では、演算結果から値を切り出すときのシフト量 S (例えば、-128〜127)が即値/汎用レジスタで指定可
能である。例えば、ＤＳＰがResult = Saturate (((in1 (演算子) in2) >> S), 16)とい
う命令を実行すると、演算結果を S ビットシフトし、下位16ビット を残し、上位ビットを飽和処理する。S ≧0 の場合には、ＤＳＰは、演算結果を算術右シフトし、すなわち、符号ビットを埋め込んで右シフトし、下位ビットを削除する。一方、S < 0 の場合は、ＤＳＰは、演算結果を算術左シフト、すなわち、符号ビットを維持して左シフトし、補数で
の下位ビットを削除する。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開平７−８４９７５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
上述のように、従来の技術において、固定小数点演算の演算精度劣化を低減するための工夫が提案されている。しかしながら、従来の技術では、演算を実行する演算処理装置が、固定小数点演算の演算精度劣化を低減するための判断材料を効率よく取得できていない。本発明の１つの側面である本実施の形態は、固定小数点数での精度を向上するとともに、回路の物理量および消費電力を削減可能な演算処理装置を提供することを目的とする。
【課題を解決するための手段】
【００１０】
本発明の一側面は、以下の演算処理装置によって例示される。本演算処理装置は、入力した演算対象データを演算した演算結果データを出力する演算部と、前記演算結果データ中のビット分布を示す統計情報データを出力する生成部と、前記統計情報データのうち、指定位置情報に基づいて、第１の所定サイズの注目領域データを抽出する抽出部と、前記統計情報データについて、前記注目領域データを除いたデータのうち、上位側のデータを第２の所定サイズに要約した上位側要約データを出力する上位側要約部と、前記統計情報データについて、前記注目領域データを除いたデータのうち、下位側のデータを第３の所定サイズに要約した下位側要約データを出力する下位側要約部と、を有する。
【発明の効果】
【００１１】
本実施形態によれば、固定小数点数での精度を向上するとともに、回路の物理量および消費電力を削減可能な演算処理装置を提供できる。
【図面の簡単な説明】
【００１２】
【図１】非符号となる最上位ビット位置の分布データを例示する図である。
【図２】比較例による小数点位置更新の処理例である。
【図３】比較例の情報処理装置のプロセッサの構成を例示する図である。
【図４】比較例のプロセッサの回路ブロックを例示する
【図５】データ変換部の具体的構成を例示する図である。
【図６】統計情報取得部の真理値表を例示する図である。
【図７】非符号となる最上位ビット位置の分布を生成する統計情報取得部のうち、出力ビット０から３８を出力する論理回路を例示する図である。
【図８】非符号となる最上位ビット位置の分布を生成する統計情報取得部のうち、出力ビット３９を出力する論理回路を例示する。
【図９】非符号となる最下位ビット位置を取得する統計情報取得部のハードウェア回路の構成を例示する図である。
【図１０】統計情報集約部の処理を例示する図である。
【図１１】統計情報集約部のハードウェア回路の構成を例示する図である。
【図１２】論理和演算によってビット位置を集約する統計情報集約部の処理を例示する図である。
【図１３】論理和演算によってビット位置を集約する統計情報集約部のハードウェア回路の構成を例示する図である。
【図１４】統計情報格納部の構成を例示する図である。
【図１５】実施形態１に係る４つのビット領域を含む統計情報を例示する図である。
【図１６】第２の命令フォーマットを例示する図である。
【図１７】実施形態１に係るプロセッサの回路ブロックを例示する図である。
【図１８】実施形態１に係る統計情報要約部の構成を例示する図である。
【図１９】ウィンドウビット抜き出し回路の構成を例示する図である。
【図２０】上位ビット側要約回路の構成を例示する図である。
【図２１】上位側マスクビット生成器の真理値表を例示する図である。
【図２２】６入力４０出力のデコーダの例である。
【図２３】デコーダの出力を基に、上位側のマスクパターンを生成するマスクパターン回路の例である。
【図２４】下位ビット側要約回路の構成を例示する図である。
【図２５】下位側マスクビット生成器の真理値表を例示する図である。
【図２６】下位側のマスクパターンを生成するマスクパターン回路の例である。
【図２７】実施形態１の統計情報取得部、統計情報要約部、統計情報集約部、統計情報格納部の間のデータフローを例示する図である。
【図２８】非符号となる最上位ビット位置の分布および非符号となる最下位ビット位置の分布を集約する統計情報集約部の構成を例示する図である。
【図２９】非符号となる最上位ビット位置の最大値および非符号となる最下位ビット位置の最小値を集約する統計情報集約部の構成を例示する図である。
【図３０】実施形態２の処理を例示する図である。
【図３１】注目領域を要約する注目領域要約部の構成を例示する図である。
【発明を実施するための形態】
【００１３】
［実施形態１］
以下、図面を参照して一実施形態に係る情報処理装置のプロセッサ１０について説明する。
【００１４】
本実施形態では、情報処理装置のプロセッサ１０が演算実行結果である数値の分布に関連する統計情報を取得し、アプリケーションプログラム等に提供する。ここで、数値の分布に関連する統計情報は、例えば、以下の（１）から（４）のいずれか、または、これらの組み合わせをいう。情報処理装置が実行するアプリケーションプログラムは、プロセッサから統計情報を取得することで、小数点位置を最適化する。アプリケーションプログラムの処理にしたがってプロセッサは、Dynamic Fixed Point演算あるいはMixed Fixed Point演算のための命令を実行する。
（１）非符号となる最上位ビット位置の分布
【００１５】
図１に、非符号となる最上位ビット位置の分布データを例示する。図１は演算の途中結果が４０ビットで、固定小数点数の桁あわせのために１４ビット右シフトされるデータに対する例である。非符号となる最上位ビット位置とは、正数に対しては、ビットが１となっている最上位のビット位置をいう。また、負数に対しては、ビット０となっている最上位のビット位置をいう。非符号となる最上位ビット位置は、例えば、ビットの並びを最上位ビットであるbit[39]から最下位ビットであるbit[0]としたとき、符号ビットbit[39]と異なるbit[k]のうち、インデックスkが最大のものをいう。非符号となる最上位ビット位
置の分布が得られると、絶対値としての値の分布範囲が把握可能となる。
【００１６】
図１で、縦軸は、非符号となる最上位ビット位置の出現個数であり、横軸は最上位のビットの位置 Count Leading Sign（ＣＬＳ）である。図１では、ビット０の右側に小数点
があると仮定する。本実施形態では、情報処理装置のプロセッサの演算回路および演算回路内のレジスタは、命令のオペランドで指定されるレジスタのビット数（例えば、１６ビット）以上のビット幅（例えば、４０ビット）を有する。ただし、情報処理装置のプロセッサの演算回路および演算回路内のレジスタのビット幅が４０ビットに限定される訳ではない。また、演算結果は、例えば、１６ビットのレジスタ等、演算回路よりも少ないビッ
ト幅のレジスタ（命令のオペランドで指定されるレジスタ）に格納される。その結果、演算結果（例えば、４０ビット）は、オペランドで指定されるシフト量でシフトされ、ビット0未満に該当するビットは所定の丸め処理がなされ、オペランドで指定されるレジスタ
のビット幅を越えるデータ（例えば、ビット１５を越えるデータ）は、飽和処理される。
【００１７】
また、図１の横軸に付与された数値は、固定小数点で表現可能な数値を例示する。このうち、０の位置から１５の位置までが１６ビットの固定小数点数の値に相当する。ここで、例えば、情報処理装置がこの固定小数点数を−２ビットだけシフト（右方向に２ビットシフト）すると、最上位ビットが１４の位置にシフトし、飽和される領域が２ビット拡張され（上位側が２ビット減少）、アンダーフローが発生して０となる領域が２ビット減少する（小数点以下が２ビット拡張）。すなわち、情報処理装置が小数点位置を２ビット左にシフトすると、飽和される領域が２ビット拡張され、アンダーフローが発生する領域が２ビット減少する。また、逆に、例えば、情報処理装置がこの固定小数点数を２ビットだけ正方向にシフト（左方向に２ビットシフト）すると、最上位ビットが１８の位置にシフトし、飽和される領域が２ビット減少し、アンダーフローが発生する領域が２ビット拡張される。すなわち、情報処理装置が小数点位置を２ビット右にシフトすると、飽和される領域が２ビット減少し、アンダーフローが発生する領域が２ビット拡張される。
【００１８】
情報処理装置は、学習実行中に、非符号となる最上位のビット位置の分布を得ることで、Dynamic Fixed Point演算あるいはMixed Fixed Point演算における適正なシフト量、つまり、適切な固定小数点位置を直ちに決定できる。例えば、情報処理装置は、飽和されるデータが指定の割合以下になるように固定小数点位置を決定すればよい。つまり、一例としては、情報処理装置は、データのアンダーフローが所定の程度となることよりもデータの飽和が所定の程度となること優先して、固定小数点位置を決定することもできる。
【００１９】
非符号となる最上位ビット位置の分布は、情報処理装置のプロセッサ内の所定のレジスタ（統計情報レジスタともいう）内に積算される。プロセッサは、当該統計情報レジスタからの分布データの読み出し、書き込み、統計情報レジスタのクリア等の命令を実行する。したがって、統計情報レジスタには、前回のクリア命令の実行の時から現在までに命令実行の対象となった１以上の固定小数点数についての分布データが蓄積される。蓄積された分布データは、読み出し命令によってメモリに読み出される。なお、プロセッサは、クリア命令に代えて、統計情報レジスタへのロード命令の実行を可能とし、値０を統計情報レジスタにロードできるようにしてもよい。
（２）非符号となる最下位ビット位置の分布
【００２０】
非符号となる最下位ビット位置の分布とは、ビットが符号ビットと異なる値となる最下位のビット位置をいう。例えば、ビットの並びを最上位ビットであるbit[39]から最下位
ビットであるbit[0]までの並びとしたとき、符号ビットbit[39]と異なるbit[k]のうち、
インデックスkが最小のものをいう。また、非符号となる最下位ビット位置の分布では、
有効なデータに含まれる最下位ビットが把握される。
（３）非符号となる最上位ビット位置の最大値
【００２１】
非符号となる最上位ビット位置の最大値は、前回クリア命令が実行された時から現在に至るまでに、命令実行の対象となった１以上の固定小数点数について符号ビットと異なる値となる最上位のビット位置のうちの最大値である。情報処理装置は、非符号となる最上位のビット位置の最大値をDynamic Fixed Point演算における適正なシフト量、つまり、
適切な小数点位置の決定に利用できる。
【００２２】
プロセッサは、上記統計情報レジスタからの上記最大値の読み出し、統計情報レジスタのクリア等の命令を実行する。したがって、統計情報レジスタには、前回のクリア命令の
実行から現在までの最大値が蓄積され、読み出し命令によって最大値がメモリに読み出される。
（４）非符号となる最下位ビット位置の最小値
【００２３】
非符号となる最下位ビット位置の最小値は、前回クリア命令が実行されたときから現在に至るまでの１以上の固定小数点数について符号ビットと異なる値となる最下位のビット位置のうちの最小値である。情報処理装置は、非符号となる最下位ビット位置の最小値をDynamic Fixed Point演算における適正なシフト量、つまり、適切な小数点位置の決定に
利用できる。
【００２４】
プロセッサ１０は、統計情報レジスタからの上記最小値の読み出し、クリア等の命令を実行する。したがって、統計情報レジスタには、前回のクリア命令の実行から現在までの上記最小値が蓄積され、読み出し命令によってメモリに読み出される。
＜比較例＞
【００２５】
図２に、比較例による小数点位置更新の処理例を示す。図は、例えば、非符号となる最上位ビット位置の分布である。また、図で、ビット１１とビット１０の間に小数点があるとする。今、固定小数点数がＱ５．１０（整数部５桁、小数点以下１０桁）で記述され、飽和される領域Ａ１、表現可能な領域Ａ２、および、アンダーフローが発生する領域Ａ３が形成されているとする。この例では、飽和される領域Ａ１とアンダーフローが発生する領域Ａ３は、白抜きの度数分布で例示されている。また、表現可能な領域は斜線のハッチングパターンで示されている。また、この例では、アンダーフローが発生する領域の度数分布が飽和する領域の度数分布より高く、バランスが悪い。一方、小数点位置を２ビット下側に移動し、Ｑ３．１２（整数部３桁、小数点以下１２桁）としても、飽和する領域のデータ数を全データ数で除算した値は、目標の基準値未満となる。そこで、情報処理装置は、小数点位置をＱ５．１０からＱ３．１２設定しなおし、処理を継続すればよい。
すなわち、比較例の情報処理装置は、統計情報から以下の手順で次のビット精度を決定する。
（手順１）情報処理装置は、現在のビット精度で統計情報を取得し、上記（１）から（４）のいずれかのヒストグラムを作成する。なお、（３）、（４）の場合の統計情報では、収集した非符号となるビット位置（最上ビット位置、最下位ビット位置）を示すフラグ列のデータにＯＲ演算を行い、最大度数１の度数分布を作成する。
【００２６】
（手順２）情報処理装置は、上記（１）の統計情報にたいして、ヒストグラムから全体のデータ数に占めるオーバーフローするデータ数の割合が閾値rmaxとなるビット精度を計算する。あるいは、情報処理装置は、上記（２）の統計情報にたいして、ヒストグラムから全体のデータ数に占めるアンダーフローするデータ数の割合が閾値rmaxとなるビット精度を計算する。なお、上記（２）（４）の統計情報の場合には、閾値rmaxを0に設定し、ビ
ット精度を計算する。つまり、ビット精度は非符号となる最上位（最下位）ビットの最大値（最小値）に合わせるように更新する。
（手順３）次の期間の演算は計算したビット精度で実施する。
【００２７】
図３に、比較例の情報処理装置のプロセッサ１０Ｚの構成を例示する。図３では、プロセッサ１０Ｚとともに、命令用メモリ（ＩＲＡＭ）２１Ｚおよびデータ用メモリ（ＤＲＡＭ）２２Ｚも例示されている。プロセッサ１０Ｚは、single instruction multiple data（ＳＩＭＤ）型の演算命令を実行可能な演算処理装置である。
【００２８】
プロセッサ１０Ｚは、プログラムカウンタ（ＰＣ）１１１Ｚ、デコーダ（Decoder）１
１２Ｚ、レジスタファイル１２Ｚ、ベクトル演算用の演算器１３１Ｚ、スカラ演算用の演算器（Arithmetic Logic Unit（ＡＬＵ））１４１Ｚ、およびベクトル演算用の演算器１
３１Ｚの結果を加算するアキュムレータ１３２Ｚを有している。また、プロセッサ１０Ｚは、ベクトル演算用の演算器１３１Ｚ、スカラ演算用の演算器１４１Ｚ、アキュムレータ１３２Ｚ等の演算結果、および、データ用メモリ２２Ｚからの読み出し結果を選択する複数のセレクタ１０１Ｚを有している。なお、図では、複数のセレクタを総称してセレクタ１０１Ｚと呼ぶ。また、複数のベクトル演算用の演算器を総称して演算器１３１Ｚと呼ぶ。
【００２９】
さらに、プロセッサ１０Ｚは、セレクタ１０１Ｚによって選択されたデータからの統計情報を取得する統計情報取得部１０２Ｚ、統計情報取得部１０２Ｚによって取得された統計情報を格納する統計情報格納部１０５Ｚを有している。なお、図では、複数の統計情報取得部を総称して統計情報取得部１０２Ｚと呼ぶ。
【００３０】
さらに、プロセッサ１０Ｚは、セレクタ１０１Ｚによって選択されたデータの固定小数点位置を変更するデータ変換部１０３Ｚを有している。また、図では、複数のデータ変換部を総称してデータ変換部１０３Ｚと呼ぶ。
【００３１】
図のように、プログラムカウンタ１１１Ｚの指す命令用メモリ２１Ｚのアドレスから、命令がフェッチされ、デコーダ１１２Ｚがフェッチされた命令をデコードする。なお、図では、命令のフェッチを実行する命令フェッチの制御部が省略されている。
【００３２】
デコーダ１１２Ｚが命令をデコードすると、デコード結果に応じて、プロセッサ１０Ｚの各部が制御される。例えば、デコードの結果がベクトル演算命令であった場合、レジスタファイル１２Ｚのベクタレジスタのデータがベクトル演算用の演算器１３１Ｚに入力され、ベクトル演算が実行される。ベクトル演算用の演算器１３１Ｚの演算結果は、セレクタ１０１Ｚを介して統計情報取得部１０２Ｚおよびデータ変換部１０３Ｚに供給される。また、ベクトル演算用の演算器１３１Ｚの演算結果は、アキュムレータ１３２Ｚに入力され、ベクトル演算用の演算器１３１Ｚの演算結果が例えば、カスケードに加算される。アキュムレータ１３２Ｚの演算結果は、セレクタ１０１Ｚを介して、統計情報取得部１０２Ｚおよびデータ変換部１０３Ｚに供給される。
【００３３】
また、例えば、デコードの結果、命令がスカラ演算命令であった場合には、レジスタファイル１２Ｚのスカラ・レジスタのデータがスカラ演算用の演算器１４１Ｚに入力される。演算器１４１Ｚの演算結果は、アキュムレータ１３２Ｚの演算結果と同様、セレクタ１０１Ｚを介して統計情報取得部１０２Ｚおよびデータ変換部１０３Ｚに供給される。
【００３４】
さらに、例えば、デコードの結果、命令がロード命令であった場合には、データ用メモリ２２Ｚからデータが読み出され、セレクタ１０１Ｚを介して、統計情報取得部１０２Ｚおよびデータ変換部１０３Ｚに供給される。データ変換部１０３Ｚでデータ変換された結果は、レジスタファイル１２Ｚのレジスタに格納される。
【００３５】
また、デコードの結果、命令がDynamic Fixed Point演算を実行する命令であった場合
、デコーダ１１２Ｚは、シフト量がデータ変換部１０３に供給されるように指示する。シフト量は、例えば、命令のオペランド（即値）、オペランドで指定されたレジスタ、オペランドで指定されたアドレス・レジスタの示すアドレスのデータ用メモリ２２Ｚ等から取得され、データ変換部１０３Ｚに供給される。
【００３６】
データ変換部１０３Ｚは、ベクトル演算の結果、スカラ演算の結果、アキュムレータ１３２Ｚの演算結果、あるいは、データ用メモリ２２Ｚからの読み出し結果等で得られる固定小数点数データを、指定されたシフト量Sだけシフトする。また、データ変換部１０３
Ｚは、シフトとともに、上位ビットの飽和処理および下位ビットの丸めを実行する。図５
にデータ変換部１０３Ｚの具体的構成を例示する。データ変換部１０３Ｚは、例えば入力を４０ビットの演算結果とし、下位Sビットを小数部として丸めを行な丸め処理部と、算
術シフトを実行するシフト部と飽和処理を行なう飽和処理部を有する。
【００３７】
丸め処理部は、下位S ビットを小数部として丸めを行なう。Sが負の場合には、丸め処
理部は、何も行なわない。丸めとしては、最近接丸め、0への丸め、正の無限大への丸め
、負の無限大への丸め、乱数丸めなどが例示される。図でシフト量は、例えば、図３に例示されるように、デコーダ１１２Ｚが命令から取得するシフト量である。シフト部は、S
が正の場合はS ビット算術右シフト、Sが負の場合は、算術左シフト、すなわち、-S ビット算術左シフトを行なう。飽和部は、シフト結果が 2E15-1（正の最大値）以上の場合は 2E15、-2E15（負の最小値）以下の場合は -2E15、それ以外は入力の下位16ビットを出力
する。ここで、2E15は、２の１５乗を表す。
【００３８】
そして、データ変換部１０３Ｚは、左シフト時上位ビットの符号を維持し、符号ビット以外を飽和処理、すなわち、上位ビットを廃棄し、下位ビットに０を埋め込む。また、データ変換部１０３Ｚは、右シフト時、上位ビット（符号ビットより下位のビット）に符号ビットを埋め込む。そして、データ変換部１０３Ｚは、上記のように丸め、シフト、飽和処理によって得られるデータを、レジスタファイル１２のレジスタ等と同一のビット幅（例えば、１６ビットのレジスタ）で出力する。
【００３９】
したがって、プロセッサ１０Ｚで実行されるコンピュータプログラムがDynamic Fixed Point演算を実行する命令のオペランドにシフト量を指定することで、プロセッサ１０Ｚ
は、プログラム実行中に、固定小数点数の小数点位置を指定されたシフト量だけ更新する。
【００４０】
また、デコードの結果、命令が統計情報取得を指示する命令（統計情報取得機能付き命令という）である場合、統計情報取得部１０２Ｚにおいて、統計情報が取得され統計情報格納部１０５Ｚに格納される。ここで、統計情報は、上記で述べたように、（１）非符号となる最上位ビット位置の分布、（２）非符号となる最下位ビット位置の分布、（３）非符号となる最上位ビット位置の最大値、（４）非符号となる最下位ビット位置の最小値、またはこれらの組み合わせである。
【００４１】
図４に、比較例のプロセッサ１０Ｚの回路ブロックを例示する。プロセッサ１０Ｚは、制御ユニット１１Ｚ、レジスタファイル１２Ｚ、ベクトルユニット１３Ｚ、スカラユニット１４Ｚを含む。制御ユニット１１Ｚは、プログラムカウンタ１１１Ｚとデコーダ１１２Ｚを含む。レジスタファイルは、ベクトルレジスタファイル、ベクトル演算用アキュムレータレジスタ（Vector ACC）、スカラレジスタファイル、スカラ演算用アキュムレータレジスタ（ACC）を含む。ベクトルユニット１３Ｚは、ベクトル演算用の演算器１３１Ｚ、
統計情報取得部１０２Ｚ、データ変換部１０３Ｚを含む。スカラユニット１４Ｚは、スカラ演算用の演算器１４１Ｚ、統計情報取得部１０２Ｚ、データ変換部１０３Ｚを含む。
【００４２】
また、図４の構成例では、複数の統計情報取得部１０２Ｚからの統計情報を集約する統計情報集約部１０４Ｚが追加されている。また、統計情報格納部１０５Ｚはレジスタファイル１２Ｚの一部となっている。また、命令用メモリ２１Ｚは、メモリインターフェース（Memory I/F）を介して制御ユニット１１Ｚに接続される。また、データ用メモリ２２Ｚは、メモリインターフェース（Memory I/F）を介してベクトルユニット１３Ｚおよびスカラユニット１４Ｚに接続される。
以下、統計情報取得部１０２Ｚのうち、非符号となる最上位ビット位置を取得するものを統計情報取得部１０２Ａと呼ぶことにする。また、統計情報取得部１０２Ｚのうち、非符号となる最下位ビット位置を取得するものを統計情報取得部１０２Ｂと呼ぶことにする
。また、統計情報集約部１０４Ｚのうち、統計情報取得部１０２Ａによって取得されてビット位置を計数してビット位置に対するビットの分布を取得するものを統計情報集約部１０４Ａと呼ぶことにする。また、統計情報集約部１０４Ｚのうち、ビット位置の最大値と最小値を取得するための前段階として統計情報取得部１０２Ｂによって取得されてビット位置を論理和演算するものを統計情報集約部１０４Ｂと呼ぶことにする。
【００４３】
図６に、比較例による非符号となる最上位ビット位置の分布を生成する統計情報取得部１０２Ａの真理値表を例示する。この真理値表では、全ビット０および全ビット１の入力に対して、出力４０ビットの最上位ビットが１、他のビットが０となっている。また、全ビット０および全ビット１以外の入力に対して、符号ビット（in[39]）と異なるビット値となる最上位位置のビットが１となり、他のビットが０となる。すなわち、符号ビット（in[39]）を除き、他のビット（in[38:0]）に符号ビットと異なるビットが無い場合はout[39]が1となる。また、符号ビット（in[39]）を除くビット（in[38:0]）に符号ビットと異なるビットが有る場合はout[39]が0となる。すなわち、統計情報において、非符号となる最上位ビット位置は、ビット１で示され、この非符号となる最上位ビットの位置以外のビットはビット０で示される。他の統計情報、すなわち、（２）非符号となる最下位ビット位置、（３）非符号となる最上位ビット位置の最大値、（４）非符号となる最下位ビット位置の最小値も同様に、４０ビット中の各位置を示す１つのビット１と、他の位置を示すビット０で示される。このような統計情報中の（１）非符号となる最上位ビット位置、（２）非符号となる最下位ビット位置、（３）非符号となる最上位ビット位置の最大値の位置、（４）非符号となる最下位ビット位置の最小値の位置を示すビット１は、フラグと呼ばれる。
【００４４】
図７に、比較例の非符号となる最上位ビット位置の分布を生成する統計情報取得部１０２Ａのうち、出力ビット０から３８を出力する論理回路を例示する。図８に、比較例の非符号となる最上位ビット位置の分布を生成する統計情報取得部１０２Ａのうち、出力ビット３９を出力する論理回路を例示する。図８のように、out39はin0〜in39までが０または１ですべて一致したときに真となる。また、out39は、in0からin39に、０と１が混在すると、偽となる。また、図７のように、out0〜out38は、自身と同じビット位置の入力ビッ
ト（in*と呼ぶ）より上位がすべて０または１で一致し、かつin*が上位とは異なる場合に真となる。
【００４５】
図９に、非符号となる最下位ビット位置を取得する統計情報取得部１０２Ｂのハードウェア回路の構成を例示する。符号ビットin[39]が０の場合には、統計情報取得部１０２Ｂは、最下位ビットin[0]から上位側に向かって、ビットが１であるビット位置を探索すれ
ばよい。一方、符号ビットin[39]が1の場合には、データは補数となっているので、統計
情報取得部１０２Ｂは、最下位ビットin[0]から上位側に向かって、ビットが０であるビ
ット位置を探索すればよい。
すなわち、この回路では、符号ビットin[39]と他のビット（in[0]からin[38]）との排
他論理和（EXOR）が実行される。そうすると、符号ビットin[39]と同じ値を有するビットによる排他論理和値は０となり、符号ビットin[39]と異なる値を有するビットによる排他論理和値は１となる。
【００４６】
今、仮にin[0]がin[39]と異なる値であった場合、排他論理和によって出力データのout[0]は１となる。一方、出力データのout[1]には、in[39]とin[1]の排他論理和値がANDゲ
ートを介して入力される。このANDゲートの一方の入力には、in[39]とin[0]の排他論理和値を反転したビット値が入力される。このため、in[39]とin[0]の排他論理和値が１の場
合、in[39]とin[1]の排他論理和値によらず、ANDゲートの出力は０となる。
【００４７】
同様に、出力データのout[2]には、in[39]とin[2]の排他論理和値が上記と同様のANDゲ
ートを介して入力される。このANDゲートの一方の入力には、in[39]とin[0]の排他論理和値と、in[39]とin[1]の排他論理和値という２つの排他論理和値の論理和値（ORゲートの
出力）を反転したビット値が入力される。このため、in[39]とin[0]の排他論理和値が１
の場合、in[39]とin[2]の排他論理和値によらず、出力データのout[2]に値を出力するANDゲートの出力は０となる。以下、同様に、in[39]とin[i](iは１以上)の排他論理和値によらず、出力データのout[i]に値を出力するANDゲートの出力は０となる。
【００４８】
一方、仮にin[0]がin[39]と同じ値であった場合、排他論理和によって出力データのout[0]は0となるため、in[39]とin[1]の排他論理和値が入力されるANDゲートは、in[39]とin[1]の排他論理和値に依存して、１または０を出力する。以下、同様に、out[i](iは1以上)が出力されるANDゲートの論理否定付き入力は、in[39]とin[j](jは0以上、i-1以下)の排他的論理和が全て0の場合に0となり、in[39]とin[i](iは１以上)の排他論理和値が１になると、out[i]には１が設定される。また、そのビットより上位の出力データout[i]には０が設定される。したがって、図９の回路によって、非符号となる最下位ビット位置に１が設定され、他のビットが０の出力データout(40ビット)が取得される。
【００４９】
図１０は、統計情報取得部１０２Ａが取得したデータからビットの分布を取得する統計情報集約部１０４Ａの処理を例示する図である。図では、４０ビットのデータが８個並列に処理されるＳＩＭＤデータからビットの分布を取得する処理が例示される。図１０では、ハードウェア回路である統計情報集約部１０４Ａの処理が、擬似コードで記述されている。
【００５０】
すなわち、入力データは、８（行）×４０（ビット）の配列データで例示されている。また、各行の４０ビットの入力データは、非符号となる最上位ビット位置（図７、８の統計情報取得部１０２Ａの出力）または非符号となる最下位ビット位置（図９の統計情報取得部１０２Ｂの出力）のデータである。この処理では、４０ビットの出力データoutにつ
いて、まず、全ビットがクリアされる。次に、入力データの配列in[j][i]の各列ｉの要素の値が、すべての行（ｊ＝０から７）に対して加算される。したがって、図１０の擬似コードでは、出力データ（配列要素）out[j]は、log2(SIMDデータ数)ビット(図１０の例で
は3ビット)の整数である。なお、図１０では、ＳＩＭＤデータ数（並列処理されるデータ数）は８であると想定したが、ＳＩＭＤデータ数が８に限定される訳ではない。
【００５１】
図１１に、統計情報取得部１０２Ａが取得したデータからビットの分布を取得する統計情報集約部１０４Ａのハードウェア回路の構成を例示する。統計情報取得部１０２Ａが取得したデータ（ここでは、統計取得０から統計取得（ＳＩＭＤデータ数−１））がbit population count演算によって、8個の統計情報のiビット目(i=0から39)における1の個数がそれぞれカウントされる。入力データは、例えば、統計情報取得部１０２Ａ（図７、図８）によって取得された非符号となる最上位ビット位置である。したがって、統計情報集約部１０４Ａは、統計情報取得部１０２Ａによって取得された非符号となるSIMDデータ個数分の最上位ビット位置に対して、各ビットの’1’の発生回数をカウントすることで最上
位ビット位置の発生回数を計数する。統計情報集約部１０４Ａは、計数結果を出力データout0からout39にそれぞれ格納する。
【００５２】
また、入力データは、統計情報取得部１０２Ｂ（図９）による非符号となる最下位ビット位置とすることもできる。統計情報集約部１０４Ａは、統計情報取得部１０２Ｂによって取得されたSIMDデータ個数分の非符号となる最下位ビット位置に対して、各ビットの’1’の発生回数をカウントすることで最下位ビット位置の発生回数を計数する。統計情報
集約部１０４Ａは、計数結果を出力データout0からout39にそれぞれ格納する。すなわち
、統計情報集約部１０４Ａは、非符号となる最上位ビット位置または非符号となる最下位ビット位置のいずれをも処理可能である。
【００５３】
また、図１１でセレクタ（ＳＥＬ）は、bit population count演算器（Σ）と、スカラユニット１４から取得されるデータを選択する。セレクタ（ＳＥＬ）に選択されたデータが、出力データout0からout39に出力される。したがって、統計情報取得部１０２Ａがス
カラユニット１４で取得したデータは、一回のスカラユニット１４の演算においては、加算されることなくそのまま出力データout0からout39に出力される。out0からout39は、統計情報格納部１０５Ｚに引き渡すデータである。
【００５４】
図１２は、統計情報取得部１０２Ｂが取得したデータからビット位置の最大値と最小値を取得する前提として、論理和演算によってビット位置を集約する統計情報集約部１０４Ｂの処理を例示する図である。図１２においても、図１０と同様、４０ビットのデータが８個並列に処理されるＳＩＭＤデータを処理が例示される。図１２では、ハードウェア回路である統計情報集約部１０４Ｂの処理が、擬似コードで記述されている。
【００５５】
この処理では、４０ビットの出力データout[i](i=0,…,39)には、入力データの配列in[j][i]の各列をすべての行（j=0,…,7）について論理和演算（ＯＲ演算）した結果が入力
される。したがって、図１２の擬似コードでは、図１０の統計情報集約部１０４Ａとは異なり、出力データ（配列要素）out[i](i=0,…,39)はビット列である。以上の処理の結果
、出力データout[i](i=0,…,39)では、out[38]から下位ビット方向に向かって最初に１となるビット位置が最大ビット位置である。また、out[0]から上位ビット方向に向かって最初に１となるビット位置が最小ビット位置である。
【００５６】
図１３に、統計情報取得部１０２Ｂが取得したデータからビット位置の最大値と最小値を取得する前提として、論理和演算によってビット位置を集約する統計情報集約部１０４Ｂのハードウェア回路の構成を例示する。統計情報取得部１０２Ｂが取得したデータ（ここでは、統計取得０から統計取得ＳＩＭＤデータ数−１）がＯＲゲート（４０ビット）によってＯＲ演算される。また、図１３でセレクタ（ＳＥＬ）は、論理和演算（OR）と、スカラユニット１４から取得されるデータを選択する。セレクタ（ＳＥＬ）されたデータが、出力データoutに出力される。したがって、統計情報取得部１０２Ｂがスカラユニット
１４で取得したデータは、一回の演算においては、論理和演算されることなくそのまま出力データoutに出力される。outは、統計情報格納部１０５Ｚに引き渡すデータである。
【００５７】
図１４に、統計情報格納部１０５Ｚ（図４参照）の具体例として、統計情報集約部１０４Ａからの統計情報を専用レジスタに格納する統計情報格納部１０５Ａの構成を例示する。図で、in39からin0は、例えば、図１１のout39からout0に相当する統計情報集約部１０４Ａからの統計情報を示す。また、sr39からsr0は、統計情報を格納するレジスタである
。プロセッサ１０Ｚは、書き込み命令によって図示しないセレクタSELを介して、レジス
タsr39からsr0のいずれか1つあるいは複数に初期値v39からv0を書き込む。ただし、プロ
セッサ１０Ｚは、デコーダからのリセット信号によってレジスタsr39からsr0をリセット
しても良い。プロセッサ１０Ｚは、統計情報取得機能付き命令の実行ごとに、加算器を用いて統計情報を蓄積し、レジスタsr39からsr0に格納する。また、プロセッサ１０Ｚは、
レジスタ（sr39からsr0）のいずれかの1つあるいは複数の値を読み出し、読み出し命令で指定されたデータ用メモリに保存する、あるいは、読み出し命令で指定された汎用レジスタに格納する。
【００５８】
以上の構成により、比較例の情報処理装置は、例えば、深層学習のミニバッチ実行時、各レイヤの各変数の統計情報をレジスタあるいはレジスタファイルに累積する。そして、比較例の情報処理装置は、蓄積された統計情報を基に各レイヤの各変数の小数点位置を更新することができる。すなわち、プロセッサ１０Ｚが、ビット分布の統計上情報を取得する。ここで、統計情報は、命令実行時の（１）非符号となる最上位ビット位置の分布、（
２）非符号となる最下位ビット位置の分布、（３）非符号となる最上位ビット位置の最大値、（４）非符号となる最下位ビット位置の最小値、またはこれらの組み合わせ等である。したがって、比較例の情報処理装置が深層学習実行時に、データの統計情報取得のための深層学習プログラム中のオーバーヘッドがなく、実用的な時間で動的固定小数点演算を実現可能となる。
【００５９】
すなわち、比較例の情報処理装置のプロセッサ１０Ｚが統計情報取得機能付き命令を実行するとともに、演算結果をビットシフトし、丸め・飽和を行なってレジスタに格納する命令を実行する。したがって、比較例の情報処理装置はビット分布を示す統計情報を取得するオーバーヘッドを少なくできる。また、ビット分布を示す統計情報から直ちに適正なビットシフト、すなわち、小数点位置を決定できる。
【００６０】
しかしながら、比較例では、プロセッサ１０Ｚは統計情報を演算の中間状態の全ビット（例えば４０ビット）の位置で別々に集計している。したがって、図４に例示するように、統計情報取得部１０２Ｚから統計情報集約部１０４Ｚ、統計情報集約部１０４Ｚから統計情報格納部１０５Ｚに至る回路内のレジスタ、配線は、中間状態の全ビット（例えば４０ビット）に対応する容量となるため、回路面積および電力消費が大きくなる。
＜実施形態における統計情報＞
【００６１】
以下、実施形態１に係る情報処理装置のプロセッサ１０（図１７参照）について説明する。プロセッサ１０は、実施形態の演算処理装置またはコンピュータの一例として、演算処理方法を実行する。実施形態１では、プロセッサ１０は演算の中間状態の全ビット（例えば４０ビット）の統計情報を４つのビット領域に分けて処理する。ここで、演算の中間状態とは、各演算器の外部のレジスタから各演算器に入力データが取り込まれ、演算結果が演算器の外部のレジスタに出力されるまでの状態をいう。演算の中間状態では、演算対象のビット列は演算器の内部で保持されている。ここで、演算器は、例えば、図１７のベクトル演算用の演算器１３１、スカラ演算用の演算器１４１等である。そして、プロセッサ１０は、４つのビット領域のうち、重要度の低い２つの領域のビット幅を削減する。
【００６２】
図１５に、４つのビット領域を含む統計情報を例示する。統計情報の４つのビット領域は、最上位ビット、上位側要約領域、注目領域、および下位側要約領域である。このうち、上位側要約領域と下位側要約領域は、それぞれ１ビットに削減される。その結果、削減後の統計情報のビット数は、最上位ビット（１ビット）＋上位側要約領域（１ビット）＋注目領域（Ｎビット）＋下位側要約領域（１ビット）となる。注目領域が、例えば、１５ビット（Ｎ＝８）の場合には、削減後の統計情報のビット数は、合計１８ビットとなる。
【００６３】
ここで、注目領域は、ユーザが例えばアプリケーションプログラム中からプロセッサ１０に指定する領域である。ただし、注目領域は、アプリケーションプログラムの処理によって、プロセッサ１０が指定する領域であってもよい。注目領域は、例えば、現在の精度で表現可能な数値領域（例えば、単精度１６ビットの領域）の最上位ビット位置として頻度が高い位置を中心とした上下（２Ｎ-１）ビットを指定すればよい。また、注目領域は
、例えば、現在の精度で表現可能な領域の最下位ビット位置として頻度が高い位置を中心とした上下(２Ｎ−１)ビットを指定すればよい。この(２Ｎ−１)ビットの注目領域をウィンドウとも呼ぶことにする。また、注目領域の大きさを（２Ｎ−１）ビットとする場合のＮをウィンドウサイズパラメータという。
【００６４】
本実施形態では、プロセッサ１０は、ウィンドウ内では1ビット対1ビットの対応で情報を抽出する。一方、プロセッサ１０は、ウィンドウ外は上位ビット側（１ビット）と下位ビット側（１ビット）で、フラグの有無を検出する。ここで、フラグとは、上述のように、統計情報中の（１）非符号となる最上位ビット位置、（２）非符号となる最下位ビット
位置、（３）非符号となる最上位ビット位置の最大値の位置、（４）非符号となる最下位ビット位置の最小値の位置を示すビット１を意味する。
【００６５】
また、統計情報中の最上位ビットは、統計情報取得の対象となる入力データ中に符号ビットと異なる値がない特殊な場合に1となるビットである。また、統計情報中の最上位ビ
ットは、統計情報取得の対象となる入力データ中に符号ビットと異なる値がある場合には、符号ビットを格納する。すなわち、統計情報中の最上位ビットは、注目領域の上位あるいは下位といった関係を有するものではない。このため、プロセッサ１０は、統計情報取得の対象となる入力データ中の符号ビットをそのまま抽出し、統計情報の最上位ビットに設定する。また、統計情報取得の対象となる入力データ中に符号ビットと異なる値がない特殊な場合に、プロセッサ１０は、統計情報の最上位ビットに１を設定する。
＜命令フォーマット＞
以下、本実施形態で、統計情報取得時のユーザ指定ビット位置を特定する命令の命令フォーマットを説明する。
（第１の命令フォーマット)
命令フォーマット例１は、統計情報を取得する演算命令、ロード命令などにユーザ指定ビット位置を指定する機能を個別に追加する。
（命令フォーマット例１．１）
【００６６】
vmul_su vs, vt, vd, imm, usr
この命令は、ベクトル・レジスタ vs と vt を乗算し imm ビットシフトし、丸め・飽和
を行なって、演算器外部のレジスタvd に格納する。乗算結果のシフト前の統計情報を取
得し統計情報レジスタに累積する。統計情報を取得する際、usrビット目を中心に（２Ｎ
−１）を注目領域とする。
（命令フォーマット例１．２）
【００６７】
vld_su rs, rt, rd, usr
この命令は、アドレス・レジスタ rs と rt を加算したアドレスからベクトルデータをロードして、ベクトル・レジスタ rd に格納する。ロードしたデータの統計情報を取得し統計情報レジスタに累積する。統計情報を取得する際、 usrビット目を中心に(2N-1)を注目領域とする。
（命令フォーマット例１．３）
【００６８】
read_acc_su rd, imm, usr
アキュムレータ・レジスタ(40ビット)のデータに対して、imm ビットシフトし、丸め・飽和を行なってスカラ・レジスタ rd に格納する。プロセッサ１０は、アキュムレータレジスタのデータから統計情報を取得し、統計情報レジスタに累積する。統計情報を取得する際、usrビット目を中心に（２Ｎ−１）を注目領域とする。
【００６９】
なお、注目領域は、usrビットにより決定されていれば、usrビット目を中心とした（２Ｎ−１）ビットの領域でなくともよい。例えば、プロセッサ１０は、usrビット目から上
位（２Ｎ−１）ビット、usrビット目から下位（２Ｎ−１）ビット等を注目領域としても
よい。
（第２の命令フォーマット）
【００７０】
図１６に第２の命令フォーマットを例示する。第２の命令フォーマットは、既存の命令フォーマットの構成を拡張して、ユーザ指定ビット位置を指定する領域を追加するというものである。図１６では、既存の命令フォーマット OPCODE,FLG,Reg,Reg,Regに対して、OPCODE,FLG,Reg,Reg,Reg,USRのように、ユーザ指定ビット位置USRが指定されている。ここで、FLG=0は、統計情報を取得しないことを指定し、FLG=1は、統計情報を取得することを
指定する。また、OPECODEは、演算を実行する一般的な命令、例えば、LOAD, ADD, SUB,STORE等である。統計情報は統計情報レジスタに累積される。 
（第３の命令フォーマット)
独立したユーザ指定ビット位置の指定命令を追加する。
（命令フォーマット例３．１）
set_usr  usr
【００７１】
プロセッサ１０は、ユーザ指定ビット位置を保持する指定位置保持レジスタ３４（図１８参照）に値usr(ユーザ指定ビット位置情報)を格納する。ユーザプログラムは、統計情
報取得機能付き命令の前に、set_usr命令を用いて指定位置保持レジスタ３４にユーザ指
定ビット位置情報をセットする。
【００７２】
以上述べた命令フォーマットでの命令を実装することにより、プロセッサ１０は、アプリケーションプログラムから、ユーザ指定ビット位置の指定を受け付け、演算実行後の統計情報を取得し、要約し、集約し、統計情報レジスタに蓄積することができる。そして、例えば、統計情報レジスタ読み出し命令により、プロセッサ１０は、アプリケーションプログラムに統計情報を引き渡せばよい。
＜回路構成＞
【００７３】
図１７に、本実施形態に係るプロセッサ１０の回路ブロックを例示する。比較例のプロセッサ１０Ｚと同様、プロセッサ１０は、制御ユニット１１、レジスタファイル１２、ベクトルユニット１３、スカラユニット１４、統計情報集約部１０４を含む。制御ユニット１１は、プログラムカウンタ１１１とデコーダ１１２を含む。レジスタファイルは、ベクトルレジスタファイル、ベクトル演算用アキュムレータレジスタ（Vector ACC）、スカラレジスタファイル、スカラ演算用アキュムレータレジスタ（ACC）を含む。ベクトルユニ
ット１３は、ベクトル演算用の演算器１３１、統計情報取得部１０２、データ変換部１０３を含む。スカラユニット１４は、スカラ演算用の演算器１４１、統計情報取得部１０２、データ変換部１０３を含む。また、統計情報格納部１０５はレジスタファイル１２の一部となっている。図１７のプロセッサ１０の構成は、統計情報要約部３０が、統計情報取得部１０２の後段に設けられている点を除いて、図７のプロセッサ１０Ｚと同様である。統計情報要約部３０は、中間状態の全ビット（例えば４０ビット）の統計情報を例えば、図１５に例示したように、最上位ビット（１ビット）＋上位側要約領域（１ビット）＋注目領域（Ｎビット）＋下位側要約領域（１ビット）に削減し、統計情報集約部１０４に引き渡す。ベクトル演算用の演算器１３１は、演算対象データを演算した演算結果データを出力する演算部の一例である。スカラ演算用の演算器１４１も、上記演算部の一例である。ベクトル演算用の演算器１３１、またはベクトル演算用の演算器１３１とスカラ演算用の演算器１４１の組み合わせは、複数の演算部の一例である。
【００７４】
また、統計情報取得部１０２の構成および作用は比較例の統計情報取得部１０２Ｚ（１０２Ａ、１０２Ｂ）と同様であるので、その説明を省略する。統計情報取得部１０２は、演算結果データ中のビット分布を示す統計情報データを出力する生成部の一例である。また、比較例の図６に例示したように、統計情報取得部１０２Ｚと同様、統計情報取得部１０２は、生成部として、ベクトル演算用の演算器１３１またはスカラ演算用の演算器１４１からの演算結果についていずれかのビットが１である統計情報データを生成する。
【００７５】
また、統計情報集約部１０４の構成および作用は比較例の統計情報集約部１０４Ｚ（１０４Ａ、１０４Ｂ）と同様であるので、その説明を省略する。統計情報集約部１０４は、複数の前記演算部が出力した要約データを集約した統計情報集約データを出力する統計情報集約部の一例である。
【００７６】
また、統計情報格納部１０５の構成および作用は比較例の統計情報格納部１０５Ｚ（１０５Ａ）と同様であるので、その説明を省略する。統計情報格納部１０５は、統計情報集約データを格納する統計情報格納部の一例である。
（統計情報要約部）
【００７７】
図１８に、統計情報要約部３０の構成を例示する。図１８では、ユーザが指定したウィンドウの中心位置の情報を保持する指定位置保持レジスタ３４も併せて例示されている。上述のように、統計情報要約部３０は、ビット数削減前の中間状態の全ビット（例えば４０ビット）の統計情報からビット数を削減し、要約された統計情報（以下、要約情報ともいう）を出力する。
【００７８】
図１８のように、統計情報要約部３０は、ウィンドウビット抜き出し回路３１と、上位ビット側要約回路３２と、下位ビット側要約回路３３を有する。この構成では、最上位ビットは、そのまま要約情報に出力される。また、上位ビット側要約回路３２は、上位側要約領域のビット列を１ビットに要約して抽出し、要約情報に出力する。また、ウィンドウビット抜き出し回路３１は、注目領域をそのままウィンドウとして抽出し、要約情報に出力する。また、下位ビット側要約回路３３は、下位側要約領域のビット列を１ビットに要約して抽出し、要約情報として出力する。指定位置保持レジスタ３４は、ユーザ指定ビット位置をウィンドウビット抜き出し回路３１、上位ビット側要約回路３２、下位ビット側要約回路３３のそれぞれに提供する。すなわち、統計情報要約部３０は、統計情報データの最上位ビットと、上位側要約データと、前記注目領域データと、前記下位側要約データと、を含む要約データを出力する回路の一例である。
（ウィンドウビット抜き出し回路３１）
【００７９】
図１９に、ウィンドウビット抜き出し回路３１の構成を例示する。図１９においても、指定位置保持レジスタ３４も併せて例示されている。ウィンドウビット抜き出し回路３１は、バレルシフタ３１１を有する。ウィンドウビット抜き出し回路３１は、符号ビットを除くビット（例えば３９ビット）を所定ビットＳビット分だけ論理左シフトを実施し、ウィンドウのサイズ分の上位ビットを取得する。ここで、所定ビットＳ＝入力ビット数（Ｂ＿ＷＩＤ）−（ウィンドウサイズパラメータＮ＋ユーザ指定位置ＵＳＲ）で計算される。ここで、入力ビット数（Ｂ＿ＷＩＤ）は、最上位ビットである符号ビットを含む入力ビット数である。また、ウィンドウサイズパラメータＮは、ウィンドウサイズ２Ｎ−１を指定するパラメータＮである。または、ＵＳＲは、最下位ビットを１とするビット位置の番号である。ユーザ指定位置ＵＳＲは指定位置情報の一例である。ウィンドウサイズ２Ｎ−１は、第１の所定サイズの一例である。バレルシフタ３１１は、第１の所定サイズであるウィンドウサイズ（２Ｎ−１）の注目領域データを、指定位置情報（ユーザ指定位置ＵＳＲ）に基づいて左シフトして、注目領域データを抽出するシフト回路の一例である。
【００８０】
例えば、ウィンドウサイズ１５のときＮ＝８、ＵＳＲ＝３１とすると、所定ビットＳ＝４０―８―３１＝１となり、バレルシフタ３１１は符号ビットを除く入力３９ビットを１ビット論理左シフトする。そして、ウィンドウビット抜き出し回路３１は、シフト後のデータから上位２Ｎ−１＝１５ビットを抽出すればよい。この構成によって、ＵＳＲ＝３１を中心に上下Ｎ−１＝７ビット、合計１５ビットの注目領域が取得される。ただし、本実施形態において、ウィンドウサイズパラメータＮが８に限定される訳ではない。なお、ＵＳＲをビット０から始まるビット番号で指定する場合には、入力ビット数（Ｂ＿ＷＩＤ）として、符号ビットを含まない３９ビットとすればよい。上記所定ビットＳは、Ｓ＝入力ビット数（３９）−（ウィンドウサイズパラメータＮ＋ユーザ指定位置ＵＳＲ）；で計算される。ウィンドウビット抜き出し回路３１は、指定位置情報に基づいて、第１の所定サイズの注目領域データを抽出する抽出部の一例である。
（上位ビット側要約回路３２）
【００８１】
図２０に、上位ビット側要約回路３２の構成を例示する。図２０においては、上位ビット側要約回路３２に加えて、指定位置保持レジスタ３４、固定値保持レジスタ３５、ウィンドウサイズ保持レジスタ３６も併せて例示されている。ここで、固定値保持レジスタ３５は、ビット数削減前の中間状態のビット数（例えば、４０）を保持する。ウィンドウサイズ保持レジスタ３６は、上記ウィンドウサイズパラメータＮ（例えば、８）を保持する。また、上述の通り、指定位置保持レジスタ３４は、ユーザ指定位置ＵＳＲの値を保持する。
【００８２】
図２０のように、上位ビット側要約回路３２は、Subtract(ＳＵＢ)回路３２１と、上位側マスクビット生成器３２２と、上位側マスクレジスタ３２３と、ＡＮＤ回路３２４と、ＯＲ回路３２５を有する。ＳＵＢ回路３２１は、中間状態のビット数（固定値４０）と、ユーザ指定位置（ＵＳＲ）と、ウィンドウサイズパラメータＮから、上位側要約領域のビット幅を生成する。例えば、ユーザ指定位置ＵＳＲ＝２９、ウィンドウサイズパラメータＮ＝８のとき、ビット位置２９を中心に、上下７ビットずつ合計１５ビット（３６ビット目から２２ビット目まで）が注目領域となる。したがって、上位側要約領域は、３７ビット目から３９ビット目までの３ビットとなる。そこで、ＳＵＢ回路３２１は、４０−ＵＳＲ−Ｎ＝３を出力し、上位側マスクビット生成器３２２に出力する。ただし、上述のように、ＵＳＲをビット０から始まるビット番号で指定する場合には、入力ビット数（Ｂ＿ＷＩＤ）として、符号ビットを含まない３９ビットを指定すればよい。
【００８３】
上位側マスクビット生成器３２２は、ＳＵＢ回路３２１からビット幅を入力され、入力されたビット幅分だけ上位ビットに１を設定した上位側のマスクパターンを生成する。例えば、ＳＵＢ回路３２１がビット幅３を出力するとき、上位側マスクビット生成器３２２は、上位３ビットが１で、残りのビットが０の上位側のマスクパターンを生成し、上位側マスクレジスタ３２３に出力する。
【００８４】
ＡＮＤ回路３２４は、入力データのビット列と上位側マスクレジスタ３２３のビット列とのＡＮＤ演算を実行する。ＯＲ回路３２５は、入力データのビット列と上位側マスクレジスタ３２３のビット列とのＡＮＤ演算結果であるビット列に対して、各ビット間のＯＲ演算を実行する。したがって、ＡＮＤ回路３２４と上位側マスクレジスタ３２３とによってマスクマスクされた入力データ中の部分に、ビット１が含まれると、ＯＲ回路３２５の出力は１となる。一方、ＡＮＤ回路３２４と上位側マスクレジスタ３２３とによってマスクされた入力データ中の部分に、ビット１が含まれず、すべてビット０であると、ＯＲ回路３２５の出力は０となる。
【００８５】
すなわち、上位ビット側要約回路３２は、入力データ中から、上位側要約領域のビット列を上位側マスクレジスタ３２３のマスクパターンで抽出し、上位側要約領域の各ビット間でＯＲ演算を実行し、１ビットに要約して抽出する。すなわち、上位側要約領域の全ビット中に少なくとも１つ１のビットが含まれていると、要約された値は１となる。一方、上位側要約領域の全ビットがすべて０の場合、要約された値は１となる。上位ビット側要約回路３２は、注目領域データを除いたデータのうち、上位側のデータを第２の所定サイズに要約した上位側要約データを出力する上位側要約部の一例である。上位ビット側要約回路３２が上位側要約領域を要約した1ビットは、第２の所定サイズの一例である。ＡＮ
Ｄ回路３２４は統計情報データのうち、要約対象の上位側要約領域データと、指定位置情報に基づいて生成された上位側マスクデータとの論理積演算を実行する回路の一例である。ＯＲ回路３２５は、論理積演算の結果である第１の論理積結果データの全てのビットの論理和演算を実行する回路の一例である。
【００８６】
図２１に、上位側マスクビット生成器３２２の真理値表を例示する。図で、inputは、
入力ビット列を示し、outputは、出力ビット列を示し、inは、入力ビット列を格納する変数（in[0]からin[39]）を例示し、out[38]からout[0]は、出力ビット列を格納する変数を例示する。図２１のように、上位側マスクビット生成器３２２は、入力された値（input
）に対応するビット幅だけ、上位ビットから１を設定する。また、上位側マスクビット生成器３２２は、入力された値に対応するビット幅よりも下位のビットに０を設定する。例えば、input=1のとき、出力ビットout[39:0]のうち、最上位のout[39]=1とし、out[38]以下をすべて０にする。また、例えば、input=2のとき、出力ビットout[39:0]のうち、最上位から２ビットを１に設定し（out[39]=1, out[38]=1）、out[37]以下をすべて０にする
。また、input=kのとき、出力ビットout[39:0]のうち、最上位からkビットを１に設定し
（out[39]=1,…,out[39-k+1]=1）、out[39-k]以下をすべて０にする。
【００８７】
図２２は、６入力４０出力のデコーダの例であり、図２３は図２２のデコーダの出力（mid[1]からmid[39]）を基に、上位側のマスクパターンを生成するマスクパターン回路の
例である。図２２は、In[0]からIn[5]の６ビットに入力された数値（０から３９）に対応する出力ビットmid[0]からmid[39]のいずれか１つのみが１に設定され、他のビットは０
に設定される。例えば、入力の値が３の場合、mid[3]=1となり、mid[3]以外は０となる。また、例えば、入力の値が３８の場合、mid[38]=1となり、mid[38]以外は０となる。
【００８８】
また、図２３のマスクパターン回路では、入力ビット列をmid[1]からmid[39]で表し、
出力ビット列をOut[0]からOut[38]で表す。そして、図２３のマスクパターン回路では、mid[39]からmid[1]が、Out[0]からOut[38]にそれぞれ対応づけられるとともに、mid[j]=1
のとき、mid[j]に対応するOut[k]からout[38]が１となる。例えば、mid[39]には、Out[0]が対応づけられており、mid[39]=1のとき、Out[0]からOut[38]のすべてが１となる。また、mid[38]には、Out[1]が対応づけられており、mid[38]=1のとき、Out[0]=0, Out[1]からOut[38]が１となる。
【００８９】
したがって、図２２のデコーダのmid[k]（k=1から39）を図２３のマスクパターン回路
のmid[k] （k=1から39）にそのまま入力すると、図２２のデコーダへのIn[0]からIn[5]による６ビットの数値（k）にしたがって、図２３のOut[0]からOut[38]の３９ビットのうち、上位ｋビットを１に設定し、残りのビットを０にすることができる。したがって図２２のデコーダと図２３のマスクパターン回路の組合わせによって、上位側マスクビット生成器３２２が形成される。
（下位ビット側要約回路３３）
【００９０】
図２４に、下位ビット側要約回路３３の構成を例示する。図２４においては、下位ビット側要約回路３３に加えて、指定位置保持レジスタ３４、ウィンドウサイズ保持レジスタ３６も併せて例示されている。すでに述べたように、ウィンドウサイズ保持レジスタ３６は、上記ウィンドウサイズパラメータＮ（例えば、８）を保持する。また、上述の通り、指定位置保持レジスタ３４は、ユーザ指定位置ＵＳＲの値を保持する。
【００９１】
図２４のように、上位ビット側要約回路３２は、ＳＵＢ回路３３１と、下位側マスクビット生成器３３２と、下位側マスクレジスタ３３３と、ＡＮＤ回路３３４と、ＯＲ回路３３５を有する。ＳＵＢ回路３２１は、ユーザ指定位置（ＵＳＲ）と、ウィンドウサイズパラメータＮから、下位側要約領域のビット幅を生成する。例えば、ユーザ指定位置ＵＳＲ＝１２、ウィンドウサイズパラメータＮ＝８のとき、ビット位置１２（下から１２ビット目）を中心に、上下７ビットずつ合計１５ビット（１９ビット目から５ビット目まで）が注目領域となる。したがって、下位側要約領域は、４ビット目から１ビット目までの４ビットとなる。そこで、ＳＵＢ回路３２１は、Ｓ＝ＵＳＲ−Ｎ＝４を出力し、下位側マスクビット生成器３３２に出力する。ここで、ＵＳＲは、最下位ビットを１とするビット位置の番号である。なお、ＵＳＲをビット０から始まるビット番号で指定する場合には、上記
Ｓは、Ｓ＝ＵＳＲ−Ｎ＋１；で計算される。
【００９２】
下位側マスクビット生成器３３２は、ＳＵＢ回路３３１からビット幅を入力され、入力されたビット幅分だけ下位ビットに１を設定した下位側のマスクパターンを生成する。例えば、ＳＵＢ回路３３１がビット幅４を出力するとき、下位側マスクビット生成器３３２は、下位４ビットが１で、残りのビットが０の下位側のマスクパターンを生成し、下位側マスクレジスタ３３３に出力する。
【００９３】
ＡＮＤ回路３３４は、入力データのビット列と下位側マスクレジスタ３３３のビット列とのＡＮＤ演算を実行する。ＯＲ回路３３５は、入力データのビット列と下位側マスクレジスタ３３３のビット列とのＡＮＤ演算結果であるビット列に対して各ビットのＯＲ演算を実行する。したがって、ＡＮＤ回路３３４と下位側マスクレジスタ３３３とによってマスクマスクされた入力データ中の部分に、ビット１が含まれると、ＯＲ回路３３５の出力は１となる。一方、ＡＮＤ回路３３４と下位側マスクレジスタ３３３とによってマスクマスクされた入力データ中の部分に、ビット１が含まれず、すべてビット０であると、ＯＲ回路３３５の出力は０となる。
【００９４】
すなわち、下位ビット側要約回路３３は、入力データ中から、下位側要約領域のビット列を下位側マスクレジスタ３３３のマスクパターンで抽出し、下位側要約領域の各ビット間でＯＲ演算を実行し、１ビットに要約して抽出する。すなわち、下位側要約領域の全ビット中に少なくとも１つ１のビットが含まれていると、要約された値は１となる。一方、下位側要約領域の全ビットがすべて０の場合、要約された値は０となる。下位ビット側要約回路３３は、注目領域データを除いたデータのうち、下位側のデータを第３の所定サイズに要約した下位側要約データを出力する下位側要約部の一例である。下位ビット側要約回路３３が下位側要約領域を要約した1ビットは、第３の所定サイズの一例である。ＡＮ
Ｄ回路３３４は統計情報データのうち、要約対象の下位側要約領域データと、指定位置情報に基づいて生成された下位側マスクデータとの論理積演算を実行する回路の一例である。ＯＲ回路３３５は、論理積演算の結果である第２の論理積結果データの全てのビットの論理和演算を実行する回路の一例である。
【００９５】
図２５に、下位側マスクビット生成器３３２の真理値表を例示する。図２５のように、下位側マスクビット生成器３３２は、入力された値（input）に対応するビット幅だけ、
下位ビットから１を設定する。また、下位側マスクビット生成器３３２は、入力された値に対応するビット幅よりも上位のビットに０を設定する。例えば、input=1のとき、出力
ビットout[39:0]のうち、最下位のout[0]=1とし、out[1]以上をすべて０にする。また、
例えば、input=2のとき、出力ビットoutput[39:0]のうち、最下位から２ビットを１に設
定し（out[0]=1, out[1]=1）、out[3]以上をすべて０にする。また、input=kのとき、出
力ビットoutput[39:0]のうち、最下位からkビットを１に設定し（out[0]=1,…,out[k-1]=1）、out[k]以上をすべて０にする。
【００９６】
図２６は図２２のデコーダの出力（mid[1]からmid[39]）を基に、下位側のマスクパタ
ーンを生成するマスクパターン回路の例である。図２６のマスクパターン生成回路は、図２３のマスクパターン生成回路と比較して、出力ビット列Out[0]からOut[38]の並び順が
逆になっている。また、図２６においても、入力ビット列をmid[1]からmid[39]で表し、
出力ビット列をOut[0]からOut[38]で表す。
【００９７】
すなわち、図２６のマスクパターン回路では、mid[39]からmid[1]が、Out[38]からOut[0]にそれぞれ対応づけられるとともに、mid[j]=1のとき、mid[j]に対応するOut[j-1]からOut[0]が１となる。例えば、mid[39]には、Out[38]が対応づけられており、mid[39]=1の
とき、out[0]からout[38]のすべてが１となる。また、mid[38]には、Out[37]が対応づけ
られており、mid[38]=1のとき、Out[0]からout[37]が１となり、Out[38]=0となる。さら
に、例えば、mid[1]には、Out[0]が対応づけられており、mid[1]=1のとき、Out[0]=1となり、Out[1]からOut[38]が0となる。
【００９８】
したがって、図２２のデコーダのmid[k]（k=1から39）を図２６のマスクパターン回路
のmid[k] （k=1から39）にそのまま入力すると、図２２のデコーダへのIn[0]からIn[5]による６ビットの数値（k）にしたがって、図２６のOut[0]からOut[38]の３９ビットのうち、下位ｋビットを１に設定し、残りのビットを０にすることができる。したがって図２２のデコーダと図２６のマスクパターン回路の組み合わせによって、下位側マスクビット生成器３３２が形成される。
【００９９】
図２７に、実施形態１の統計情報取得部１０２、統計情報要約部３０、統計情報集約部１０４、統計情報格納部１０５の間のデータフローを例示する。このうち、統計情報取得部１０２の詳細は、比較例の統計情報取得部１０２Ｚと同様である。統計情報要約部３０の詳細は、上記で述べた通りである。統計情報集約部１０４および統計情報格納部１０５は、統計情報が要約され、ビット数が削減されている点以外は、比較例の統計情報集約部１０４Ｚおよび統計情報格納部１０５Ｚと同様である。
【０１００】
すなわち、本実施形態では、統計情報取得部１０２は、演算回路内のビット数（例えば、４０ビット）で統計情報を生成する。そして、統計情報要約部３０は、統計情報取得部１０２が取得した統計情報のうち、最上位ビット（１ビット）と注目領域（２Ｎ−１ビット、例えば１５ビット）を維持し、上位側要約領域および下位側要約領域をそれぞれ１ビットに要約する。したがって、要約前の統計情報（例えば、４０ビット）が要約されて、例えば、１８ビットの要約情報、すなわち、要約された統計情報となる。
【０１０１】
統計情報集約部１０４は、要約された統計情報を比較例と同様の手順で集約する。統計情報格納部１０５は、要約された統計情報を比較例と同様の手順で格納する。なお、図２７で、セレクタＳＥＬへの入力端子は、メモリあるいは汎用レジスタの値を統計情報格納部１０５に初期設定するための経路である。また、統計情報格納部１０５からの出力端子は、統計情報格納部１０５のデータをメモリあるいは汎用レジスタに出力するための経路である。
【０１０２】
さらに、統計情報格納部１０５に接続されるＭＡＸとされる要素は、統計情報格納部１０５に格納されている統計情報のうち、比較例の図１２、図１３によって、蓄積された非符号となる最上位ビット位置の論理和から、最大値のビットを選択する回路である。また、統計情報格納部１０５に接続されるＭＩＮとされる要素は、統計情報格納部１０５に格納されている統計情報のうち、比較例の図１２、図１３によって、蓄積された非符号となる最下位ビット位置の論理和から、最小値のビットを選択する回路である。
【０１０３】
図２７から明らかなように、実施形態１では、統計情報要約部３０は、統計情報を要約して統計情報集約部１０４に引き渡す。したがって、統計情報集約部１０４以降の処理では、統計情報は、要約されたビット数（例えば、４０ビットから１８ビット）になり、回路および伝送路は、削減されたビット数分だけ規模が低減される。
【０１０４】
図２８は、非符号となる最上位ビット位置の分布および非符号となる最下位ビット位置の分布を集約する統計情報集約部１０４の構成を例示する図である。統計情報集約部１０４は、比較例１と同様、統計情報の各ｉビットをベクトルデータ数分だけ加算し、取得済みの統計情報の各ｉビットに積算する。ただし、実施形態１では、統計情報要約部３０部によって統計情報が要約されているので、統計情報集約部１０４に含まれる演算器（加算器等）の構成がビット数の減少分だけ削減される。
【０１０５】
図２９は、非符号となる最上位ビット位置の最大値および非符号となる最下位ビット位置の最小値を集約する統計情報集約部１０４の構成を例示する図である。図２９で、ＭＡＸおよびＭＩＮの処理は、擬似コードで例示されている。図で、ＯＲ回路は、比較例の図１２と同様、入力データである統計情報の配列in[j][i]の各列をすべての行（j=0,…,7）について論理和演算（ＯＲ演算）する回路である。また、ＭＡＸとＭＩＮは、擬似コードで記述されているが、論理ゲートで実現される。ただし、実施形態１では、統計情報要約部３０部によって統計情報が要約されているので、図２９の各構成に含まれる回路がビット数の減少分だけ削減される。
＜実施形態１の効果＞
【０１０６】
以上述べたように、実施形態１では、統計情報要約部３０により、統計情報が要約される。その結果、統計情報要約部３０以降、統計情報集約部１０４および統計情報格納部１０５のビット幅の削減により、配線が削減される。例えば、演算回路内部のビット数を４０ビットとして、要約された統計情報を１８ビットとすると、ゲート数および配線数はほぼ半減することが期待できる。
【０１０７】
統計情報は、図６に例示するように、１箇所にフラグを有するデータである。また、オーバーフロー発生率、アンダーフロー発生率を改善するためには、注目領域のフラグの分布は精度よく収集することが望ましい。しかし、上位側要約領域と、下位側要約領域では、フラッグが設定されることがまれである。したがって、上位側要約領域と、下位側要約領域とが１ビットに集約されても、統計情報自体の劣化は少ない。したがって、実施形態１の構成により、統計情報の精度をある程度維持した上で、統計情報を要約し、回路規模を削減し、さらには消費電力を低減できる。
【０１０８】
また、実施形態１の統計情報取得部１０２は、ベクトル演算器１３１、スカラ演算器１４１による演算結果について、いずれかのビットが１である統計情報を生成する。したがって、統計情報取得部１０２は、忠実に、（１）非符号となる最上位ビット位置、（２）非符号となる最下位ビット位置、（３）非符号となる最上位ビット位置の最大値の位置、（４）非符号となる最下位ビット位置の最小値の位置を示す統計情報を生成できる。また、統計情報がいずれかのビットが１であり、図１のように注目領域の両側に頻度の低い分布を形成するので、統計情報が要約可能となる。
【０１０９】
また、統計情報取得部１０２は、バレルシフタ３１１により注目領域のデータを指定位置情報に基づいて左シフトして、抽出するので、簡易な回路構成で注目領域のデータを取得できる。
【０１１０】
また、上位ビット側要約回路３２は、要約対象の上位側要約領域のビット列とユーザ指定位置ＵＳＲに基づいて生成された上位側マスクレジスタ３２３のマスクパターンとのＡＮＤ回路３２４による論理積演算を実行する。そして、上位ビット側要約回路３２は、論理積演算の結果である第１の論理積結果データの全てのビットをＯＲ３２５により論理和演算する。したがって、上位ビット側要約回路３２は、２段の論理ゲートにより簡易に上位側要約領域のビット列を要約できる。
【０１１１】
また、下位ビット側要約回路３３は、要約対象の下位側要約領域のビット列とユーザ指定位置ＵＳＲに基づいて生成された下位側マスクレジスタ３３３のマスクパターンとのＡＮＤ回路３３４による論理積演算を実行する。そして、下位ビット側要約回路３３は、論理積演算の結果である第２の論理積結果データの全てのビットをＯＲ回路３３５により論理和演算する。したがって、下位ビット側要約回路３３は、２段の論理ゲートにより簡易に下位側要約領域のビット列を要約できる。
［実施形態２］
【０１１２】
図３０および図３１により、実施形態２に係る情報処理装置のプロセッサ１０について説明する。上記実施形態１では、プロセッサ１０は、統計情報を最上位ビット、上位側要約領域、注目領域、下位側要約領域に区分した。そして、プロセッサ１０は、上位側要約領域および下位側要約領域をそれぞれ１ビットに要約した。本実施形態では、プロセッサ１０は、さらに、注目領域を中央部分と両側の周辺部分に分割する。そして、プロセッサ１０は、注目領域のうち、両側の周辺部分を１ビットに要約する。以上のような注目領域を要約する回路を注目領域要約部４０と呼ぶことにする。注目領域を要約する注目領域要約部４０以外のプロセッサ１０の構成は実施形態１と同様である。そこで、実施形態２では、実施形態１の構成に注目領域要約部４０が追加されるとものとして、注目領域要約部４０の構成を説明する。なお、注目領域要約部４０は、図１７の統計情報要約部３０に内蔵され、注目領域を処理する。注目領域要約部４０は、注目領域データのうちの上位側の所定ビット数部分を第４の所定サイズに要約し、注目領域データのうちの下位側の所定ビット数部分を第５の所定サイズに要約する注目領域要約部の一例である。
【０１１３】
図３０は、実施形態２の処理を例示する図である。図では、４０ビットの統計情報から、注目領域１５ビットが抽出されている。なお、上位側要約領域および下位側要約領域に対する処理は、実施形態１と同様であるので、その説明を省略する。そして、プロセッサ１０は、注目領域のうち、両側のそれぞれ４ビットを周辺部分とする。そして、プロセッサ１０は、４ビットの周辺部分をそれぞれ１ビットに要約する。この要約を実行するための構成は、実施形態１での統計情報要約部３０の構成と同様である。その結果、注目領域は、例えば、１５ビットから９ビットに削減され、統計情報全体で、１２ビットに削減される。
【０１１４】
図３１は、実施形態２において、注目領域を要約する注目領域要約部４０の構成を例示する図である。図のように、注目領域要約部４０は、バレルシフタ４１と、バレルシフタによるシフト後のデータを保持するレジスタ４２と、ＯＲ回路４３、４４を有している。バレルシフタ４１の処理は、実施形態１のバレルシフタと同様であり、統計情報を下記Ｓだけシフトする。
Ｓ＝統計情報のビット幅（４０）−（ユーザ指定ビット位置ＵＳＲ＋ウィンドウサイズパラメータＮ）；
【０１１５】
レジスタ４２は、バレルシフタ４１によってシフトされた統計情報のうち、上位２Ｎ−１ビットを抽出する。ＯＲ回路４３、４４は、レジスタ４２の上側と下側のそれぞれ４ビットを１ビットにＯＲ演算する。上側の４ビットが１ビットにＯＲ演算されるときの１ビットが第４の所定サイズの一例である。下側の４ビットが１ビットにＯＲ演算されるときの１ビットが第５の所定サイズの一例である。このような構成によって、統計情報の注目領域が１５ビットから９ビットに要約される。なお、注目領域の両側で要約されるビット数は４ビットに限定される訳ではない。以上のような構成で、注目領域を削減することができる。したがって、実施形態２のプロセッサ１０は、実施形態１よりもさらに統計情報を削減できる。
【０１１６】
例えば、統計情報のビット数が４０ビットから１２ビットに削減されると、注目領域要約部４０を含む統計情報要約部３０から統計情報格納部１０５に至る配線は１２／４０＝０．３まで、７０％削減されると期待できる。また、ＳＩＭＤ数８のベクトルユニットを１個、スカラユニット１個を想定する。また、フリップフロップをＤ型フリップフロップとして、ゲート数１０ゲートと仮定する。このような仮定において、統計情報のビット数が４０ビットから１２ビットに削減されると、全体のゲート数が約６４％削減することが推定される。
【符号の説明】
【０１１７】
１０    プロセッサ
１１    制御ユニット
１２    レジスタファイル
１３    ベクトルユニット
１４    スカラユニット
３０    統計情報要約部
３１    ウィンドウビット抜き出し回路
３２    上位ビット側要約回路
３３    下位ビット側要約回路
４０    注目領域要約部
１０２    統計情報取得部
１０３    データ変換部
１０４    統計情報集約部
１０５    統計情報蓄積部
１３１    ベクトル演算用の演算器
１４１    スカラ演算用の演算器
３１１    バレルシフタ
【図１】
2019057249.tif 000003
【図２】
2019057249.tif 000004
【図３】
2019057249.tif 000005
【図４】
2019057249.tif 000006
【図５】
2019057249.tif 000007
【図６】
2019057249.tif 000008
【図７】
2019057249.tif 000009
【図８】
2019057249.tif 000010
【図９】
2019057249.tif 000011
【図１０】
2019057249.tif 000012
【図１１】
2019057249.tif 000013
【図１２】
2019057249.tif 000014
【図１３】
2019057249.tif 000015
【図１４】
2019057249.tif 000016
【図１５】
2019057249.tif 000017
【図１６】
2019057249.tif 000018
【図１７】
2019057249.tif 000019
【図１８】
2019057249.tif 000020
【図１９】
2019057249.tif 000021
【図２０】
2019057249.tif 000022
【図２１】
2019057249.tif 000023
【図２２】
2019057249.tif 000024
【図２３】
2019057249.tif 000025
【図２４】
2019057249.tif 000026
【図２５】
2019057249.tif 000027
【図２６】
2019057249.tif 000028
【図２７】
2019057249.tif 000029
【図２８】
2019057249.tif 000030
【図２９】
2019057249.tif 000031
【図３０】
2019057249.tif 000032
【図３１】
2019057249.tif 000033