(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023151153
(43)【公開日】2023-10-16
(54)【発明の名称】演算装置
(51)【国際特許分類】
G06F 17/10 20060101AFI20231005BHJP
G06F 7/499 20060101ALI20231005BHJP
【FI】
G06F17/10 S
G06F7/499 101
【審査請求】未請求
【請求項の数】4
【出願形態】OL
(21)【出願番号】P 2022060606
(22)【出願日】2022-03-31
(71)【出願人】
【識別番号】000002185
【氏名又は名称】ソニーグループ株式会社
(74)【代理人】
【識別番号】110002147
【氏名又は名称】弁理士法人酒井国際特許事務所
(72)【発明者】
【氏名】道上 和馬
(72)【発明者】
【氏名】甲地 弘幸
【テーマコード(参考)】
5B056
【Fターム(参考)】
5B056BB26
5B056BB71
5B056BB83
(57)【要約】
【課題】符号付き及び符号無しの固定小数点数を変換する際の誤差の発生を防ぐ。
【解決手段】変換部は、最上位桁及び最下位桁が整数Mi及びLiを使用してそれぞれ2
Mi及び2
Liにより表される2の補数表記の符号付き固定小数点数と最上位桁及び最下位桁が整数Mu及びLuを使用してそれぞれ2
Mu及び2
Luにより表される符号無し固定小数点数とを最上位桁及び最下位桁が次式M=max(1,max(Mi,Mu+1))L=min(0,min(Li,Lu))を満たすM及びLを使用して2
M及び2
Lによりそれぞれ表される2の補数表記の符号付き固定小数点数である拡張符号付き固定小数点数に変換する。また、変換部は、符号付き固定小数点数を変換する際には、不足する上位桁に符号拡張を行うとともに不足する下位桁に対して値0を代入し、符号無し固定小数点数を変換する際には、不足する上位桁及び下位桁に対して値0を代入する。
【選択図】
図2
【特許請求の範囲】
【請求項1】
最上位桁及び最下位桁が整数Mi及びLiを使用してそれぞれ2Mi及び2Liにより表される2の補数表記の符号付き固定小数点数と最上位桁及び最下位桁が整数Mu及びLuを使用してそれぞれ2Mu及び2Luにより表される符号無し固定小数点数とを最上位桁及び最下位桁が次式
M=max(1,max(Mi,Mu+1)):max()は括弧内の最大の要素を表す。
L=min(0,min(Li,Lu)):min()は括弧内の最小の要素を表す。
を満たすM及びLを使用して2M及び2Lによりそれぞれ表される2の補数表記の符号付き固定小数点数である拡張符号付き固定小数点数に変換する変換部であって、
前記符号付き固定小数点数を前記拡張符号付き固定小数点数に変換する際には、前記符号付き固定小数点数の不足する桁に対応する前記拡張符号付き固定小数点数の上位桁に対して前記符号付き固定小数点数の符号拡張を行うとともに前記符号付き固定小数点数の不足する桁に対応する前記拡張符号付き固定小数点数の下位桁に対して値0を代入し、
前記符号無し固定小数点数を前記拡張符号付き固定小数点数に変換する際には、前記符号無し固定小数点数の不足する桁に対応する前記拡張符号付き固定小数点数の上位桁に対して値0を代入するとともに前記符号無し固定小数点数の不足する桁に対応する前記拡張符号付き固定小数点数の下位桁に対して値0を代入する
変換部と、
前記変換された拡張符号付き固定小数点数の積和演算を行う積和演算器と
を有する演算装置。
【請求項2】
前記変換部における変換を制御する制御部を更に有する請求項1に記載の演算装置。
【請求項3】
前記変換された拡張符号付き固定小数点数及び第2の拡張符号付き固定小数点数の何れかを選択する選択部
を更に有し、
前記積和演算器は、前記選択部の選択結果に対して前記積和演算を行う
請求項1に記載の演算装置。
【請求項4】
2個の前記変換部
を有し、
前記積和演算器は、2個の前記変換部からの前記拡張符号付き固定小数点数の積和演算を行う
請求項1に記載の演算装置。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、演算装置に関する。
【背景技術】
【0002】
深層学習の一例であるディープニューラルネットワーク(DNN:Deep Neural Network)は、高い認識精度を有する。一方、DNNは、メモリ消費量や計算量、消費電力等が増加するという問題がある。この問題を解決するため、演算処理に使用するデータを少ないビット幅の固定小数点数に量子化する方法が使用されている。
【0003】
DNNモデルの入力データに画像データの画像信号を使用する場合やReLU(Rectified Linear Unit)等の活性化関数を適用する場合にはデータが負の数にならないため、データを符号無し固定小数点数にすることにより効率的に値を表現できる。この符号無し固定小数点数及び符号付き固定小数点数の両方について演算可能なシステムが提案されている(例えば、特許文献1参照)。
【0004】
上記の従来技術では、8ビット幅の2の補数表記の符号付き固定小数点数及び8ビット幅の符号無し固定小数点数を9ビット幅の絶対値表記の符号付き固定小数点数に変換して演算を行う。
【先行技術文献】
【特許文献】
【0005】
【発明の概要】
【発明が解決しようとする課題】
【0006】
しかしながら、上記の従来技術では、8ビット幅の2の補数表記の符号付き固定小数点数及び8ビット幅の符号無し固定小数点数の小数点位置によっては、変換後の値が値1を表現できるように変換すると、最下位桁の削減を生じる場合がある。具体的には、上記の従来技術で値1を表現できるように変換する場合、変換の際に絶対値部に20の桁を追加する必要がある。この20の桁の追加により最下位の桁が不足する場合に、元の固定小数点数の最下位桁を削減する。このため、上記の従来技術では、演算の誤差が増加するという問題がある。一方、値1を表現しない場合には、ニューラルネットワーク回路の積和演算器を加算器として使用できなくなり、利便性が低下する。
【0007】
そこで、本開示では、符号付き固定小数点数及び符号無し固定小数点数を共通の固定小数点数に変換する際の誤差の発生を防ぐ演算装置を提案する。
【課題を解決するための手段】
【0008】
本開示の演算装置は、変換部と、積和演算器とを有する。変換部は、最上位桁及び最下位桁が整数Mi及びLiを使用してそれぞれ2Mi及び2Liにより表される2の補数表記の符号付き固定小数点数と最上位桁及び最下位桁が整数Mu及びLuを使用してそれぞれ2Mu及び2Luにより表される符号無し固定小数点数とを最上位桁及び最下位桁が次式M=max(1,max(Mi,Mu+1)):max()は括弧内の最大の要素を表す。L=min(0,min(Li,Lu)):min()は括弧内の最小の要素を表す。を満たすM及びLを使用して2M及び2Lによりそれぞれ表される2の補数表記の符号付き固定小数点数である拡張符号付き固定小数点数に変換する変換部であって、上記符号付き固定小数点数を上記拡張符号付き固定小数点数に変換する際には、上記符号付き固定小数点数の不足する桁に対応する上記拡張符号付き固定小数点数の上位桁に対して上記符号付き固定小数点数の符号拡張を行うとともに上記符号付き固定小数点数の不足する桁に対応する上記拡張符号付き固定小数点数の下位桁に対して値0を代入し、上記符号無し固定小数点数を上記拡張符号付き固定小数点数に変換する際には、上記符号無し固定小数点数の不足する桁に対応する上記拡張符号付き固定小数点数の上位桁に対して値0を代入するとともに上記符号無し固定小数点数の不足する桁に対応する上記拡張符号付き固定小数点数の下位桁に対して値0を代入する。積和演算器は、上記変換された拡張符号付き固定小数点数の積和演算を行う。
【図面の簡単な説明】
【0009】
【
図1】本開示の実施形態に係るニューラルネットワーク回路の構成例を示す図である。
【
図2】本開示の第1の実施形態に係る演算部の構成例を示す図である。
【
図3A】本開示の実施形態に係る変換の一例を示す図である。
【
図3B】本開示の実施形態に係る変換の一例を示す図である。
【
図3C】本開示の実施形態に係る変換の一例を示す図である。
【
図4A】本開示の実施形態に係る変換の一例を示す図である。
【
図4B】本開示の実施形態に係る変換の一例を示す図である。
【
図5A】従来の技術に係る変換の一例を示す図である。
【
図5B】従来の技術に係る変換の一例を示す図である。
【
図5C】従来の技術に係る変換の一例を示す図である。
【
図5D】従来の技術に係る変換の一例を示す図である。
【
図6】本開示の第1の実施形態に係る演算処理の処理手順の一例を示す図である。
【
図7】本開示の第1の実施形態に係る変換処理の処理手順の一例を示す図である。
【
図8】本開示の第1の実施形態に係る積和演算の処理手順の一例を示す図である。
【
図9】本開示の第1の実施形態に係るデータ入力処理の処理手順の一例を示す図である。
【
図10】本開示の第1の実施形態に係る積和演算処理の他の処理手順の一例を示す図である。
【
図11】本開示の第2の実施形態に係る演算部の構成例を示す図である。
【発明を実施するための形態】
【0010】
以下に、本開示の実施形態について図面に基づいて詳細に説明する。説明は、以下の順に行う。なお、以下の各実施形態において、同一の部位には同一の符号を付することにより重複する説明を省略する。
1.第1の実施形態
2.第2の実施形態
【0011】
(1.第1の実施形態)
[ニューラルネットワーク回路の構成]
図1は、本開示の実施形態に係るニューラルネットワーク回路の構成例を示す図である。同図は、本開示の演算装置が適用されるニューラルネットワーク回路10の構成例を表すブロック図である。このニューラルネットワーク回路10は、畳み込み演算や平均プーリング演算等のDNNに関する演算を行う回路である。ニューラルネットワーク回路10は、メモリ装置から読み出したデータの演算を行い、演算結果をメモリ装置に書き込む処理を行う。ニューラルネットワーク回路10が処理するデータには、例えば、画像データ等の多次元配列構造のデータを想定する。
【0012】
ニューラルネットワーク回路10は、制御部11と、ホストインターフェイス12と、パラメータレジスタ13と、読み出し制御部14及び15と、書き込み制御部16と、バスインターフェイス17と、領域分割部18と、領域統合部19とを備える。また、ニューラルネットワーク回路10は、データ変換部20及び30と、バッファ選択部40及び50と、Xバッファ110と、Sバッファ120と、Wバッファ130と、Bバッファ140と、Oバッファ150と、演算制御部160とを更に備える。また、ニューラルネットワーク回路10は、浮動小数点積和演算アレイ170と、量子化積和演算アレイ180と、固定小数点積和演算アレイ190とを更に備える。
【0013】
制御部11は、ニューラルネットワーク回路10の全体を制御するものである。この制御部11は、後述するパラメータレジスタ13に保持されたパラメータに基づいて制御を行う。制御部11は、例えば、CPU(Central Processing Unit)やマイコン、ステートマシン回路により構成することができる。
【0014】
ホストインターフェイス12は、ホストシステムとの間のやり取りを行うものである。バスインターフェイス17は、バスを介したメモリ装置との間のやり取りを行うものである。
【0015】
パラメータレジスタ13は、演算におけるパラメータを保持するものである。このパラメータレジスタ13には、メモリ装置及びホストシステムからパラメータが入力される。
【0016】
読み出し制御部14及び読み出し制御部15は、メモリ装置からデータを読み出す制御を行うものである。読み出し制御部14は、読み出したデータをパラメータレジスタ13に対して出力する。読み出し制御部15は、読み出したデータを領域分割部18に対して出力する。
【0017】
領域分割部18は、入力データを分割するものである。この領域分割部18は、バスインターフェイス17により規定される読み出し幅の入力データをXバッファ110等に格納する際の最小幅に分割する。領域分割部18は、例えば、32ビットの入力データを8ビットの4つのデータに分割することができる。領域分割部18は、分割したデータをデータ変換部20に対して出力する。
【0018】
データ変換部20は、データ形式を変換するものである。このデータ変換部20は、入力データを後段の積和演算において適用される形式に変換するものである。
【0019】
バッファ選択部40は、後述するXバッファ110、Sバッファ120、Wバッファ130、Bバッファ140及びOバッファ150を選択し、選択されたバッファの適切な位置にデータ変換部20からのデータを入力するものである。
【0020】
Xバッファ110は、畳み込み演算の対象となるデータを保持するものである。このXバッファ110を複数配置し、演算用のバッファとメモリアクセス用のバッファとを切り替えて使う構成を採ることもできる。
【0021】
Sバッファ120は、演算制御部160や選択部161の処理の効率化のためのデータを保持するものである。このSバッファ120を複数配置し、演算用のバッファとメモリアクセス用のバッファとを切り替えて使う構成を採ることもできる。
【0022】
Wバッファ130は、畳み込み演算における重み係数を保持するものである。このWバッファ130を複数配置し、演算用のバッファとメモリアクセス用のバッファとを切り替えて使う構成を採ることもできる。
【0023】
Bバッファ140は、畳み込み演算におけるバイアス値を保持するものである。このBバッファ140を複数配置し、演算用のバッファとメモリアクセス用のバッファとを切り替えて使う構成を採ることもできる。
【0024】
Xバッファ110、Sバッファ120、Wバッファ130及びBバッファ140は、半導体メモリにより構成することができる。
【0025】
演算制御部160は、積和演算の入出力を制御するものである。この演算制御部160は、選択部161を備える。選択部161は、Xバッファ110、Sバッファ120、Wバッファ130、Bバッファ140及びOバッファ150を選択し、選択したXバッファ110等からデータを読み出す。また、選択部161は、浮動小数点積和演算アレイ170、量子化積和演算アレイ180及び固定小数点積和演算アレイ190の何れかを選択し、Xバッファ110等からのデータを入力する。また、選択部161は、選択した浮動小数点積和演算アレイ170等から演算結果を取得してOバッファ150に対して出力する。
【0026】
浮動小数点積和演算アレイ170は、浮動小数点数の積和演算を行う積和演算器171が複数配置されて構成されるものである。同図の浮動小数点積和演算アレイ170には、複数の積和演算器171が配置される。この積和演算器171には、例えば、16ビットの半精度浮動小数点数による積和演算を行う積和演算器を適用することができる。
【0027】
量子化積和演算アレイ180は、量子化積和演算を行う積和演算器172が複数配置されて構成されるものである。
【0028】
固定小数点積和演算アレイ190は、固定小数点数の積和演算を行う積和演算器173が複数配置されて構成されるものである。
【0029】
Oバッファ150は、積和演算の結果を保持するものである。このOバッファ150は、保持したデータをバッファ選択部50に対して出力する。Oバッファ150を複数配置し、演算用のバッファとメモリアクセス用のバッファとを切り替えて使う構成を採ることもできる。Oバッファ150は、半導体メモリにより構成することができる。
【0030】
バッファ選択部50は、Oバッファ150の保持するデータからいくつかのデータを選択し、データ変換部30に対して出力するものである。
【0031】
データ変換部30は、積和計算の演算結果を元のデータの形式に変換するものである。データ変換部30は、変換したデータを領域統合部19に対して出力する。
【0032】
領域統合部19は、領域分割部18により分割されたデータを統合するものである。この領域統合部19は、統合したデータを書き込み制御部16に対して出力する。
【0033】
書き込み制御部16は、領域統合部19から出力されたデータをメモリ装置に書き込むものである。この書き込み制御部16は、バスインターフェイス17を介してデータの書き込みを行う。
【0034】
上述のニューラルネットワーク回路10においてデータ変換部20が符号付き固定小数点数及び符号無し固定小数点数の変換を行う部分である。この変換について詳細に説明する。
【0035】
[演算部の構成]
図2は、本開示の第1の実施形態に係る演算部の構成例を示す図である。同図は、ニューラルネットワーク回路10における畳み込み演算等を行う部分を表す演算部のブロック図である。同図の演算部は、データ変換部20と、入力バッファ102及び103と、パラメータレジスタ13a、13b及び13cと、選択部161a、161b及び161cと、積和演算器173と、出力バッファ104と、制御部11とを備える。なお、同図のパラメータレジスタ13a、13b及び13cは、
図1のパラメータレジスタ13を3つに分割して記載したものである。また、同図の選択部161a、161b及び161cは、
図1の選択部161を3つの領域に分割して記載したものである。また、入力バッファ102及び103は、
図1のXバッファ110及びWバッファ130に該当するバッファである。また、出力バッファ104は、
図1のOバッファ150に該当するバッファである。
【0036】
また、同図において、「int」は2の補数表記の符号付き固定小数点数を表す。また、「uint」は符号無し固定小数点数を表す。これら「int」及び「uint」に続く数字は、ビット幅を表す。同図のint8は、8ビット幅の2の補数表記の符号付き固定小数点数を表す。同図のuint8は、8ビット幅の符号無し固定小数点数を表す。
【0037】
データ変換部20は、2の補数表記の符号付き固定小数点数及び符号無し固定小数点数を共通の表示方式である拡張符号付き固定小数点数に変換するものである。この拡張符号付き固定小数点数は、2の補数表記の符号付き固定小数点数であり、符号付き固定小数点数及び符号無し固定小数点数のビット幅を拡張したものである。同図の「int10」は、10ビット幅の拡張符号付き固定小数点数を表す。データ変換部20は、制御部11からの制御信号に基づいて、入力された8ビット幅の固定小数点数の符号の有無を判断し、変換を行う。また、データ変換部20は、変換結果の拡張符号付き固定小数点数をバッファ選択部40に対して出力する。同図のバッファ選択部40は、制御部11の制御信号に基づいて入力バッファ102または103の適切な位置に拡張符号付き固定小数点数を入力する。なお、データ変換部20は、変換部の一例である。
【0038】
入力バッファ102及び103は、データ変換部20により変換された拡張符号付き固定小数点数を保持するバッファである。入力バッファ102は、保持した拡張符号付き固定小数点数のデータを選択部161aに対して出力する。入力バッファ103は、保持した拡張符号付き固定小数点数のデータを選択部161bに対して出力する。入力バッファ102には、例えば、畳み込み演算の特徴マップが入力される。また、入力バッファ103には、例えば、畳み込み演算の重み係数が入力される。
【0039】
同図のパラメータレジスタ13a及び13bは、積和演算器173に入力する拡張符号付き固定小数点数を保持して出力するものである。このパラメータレジスタ13a等が出力する拡張符号付き固定小数点数は、後述する積和演算器173を使用した加算を行わせる際などに積和演算器173に入力される数である。この数には、例えば、値1を適用することができる。int8及びuint8が値1を表現できないような小数点位置の場合、int8及びuint8から変換された拡張符号付き固定小数点数も値1にはならない。入力バッファ102等にはその変換結果が書き込まれるため、入力バッファ102等から値1を積和演算器173に入力することができなくなる。そこで、パラメータレジスタ13a等から値1を出力して、積和演算器173に入力させる。これにより、積和演算器173を後述する加算器として使用することができる。
【0040】
同図のパラメータレジスタ13cは、積和演算器173に入力する符号付き固定小数点数を保持して出力するものである。このパラメータレジスタ13cが出力する符号付き固定小数点数は、後述する積和演算器173を使用した乗算を行わせる際などに積和演算器173に入力される数である。この数には、例えば、値0を適用することができる。
【0041】
選択部161aは、入力バッファ102及びパラメータレジスタ13aの何れかを選択して値を取得し、積和演算器173に入力するものである。選択部161bは、入力バッファ103及びパラメータレジスタ13bの何れかを選択して値を取得し、積和演算器173に入力するものである。選択部161cは、出力バッファ104及びパラメータレジスタ13cの何れかを選択して値を取得し、積和演算173に入力するものである。また、選択部161cは、積和演算器173からの出力を出力バッファ104の適切な位置に入力する処理を更に行う。
【0042】
積和演算器173は、前述のように積和演算を行うものである。この積和演算は、乗算の結果を順次加算する演算であり、次式により表される演算である。
A×B+C→C ・・・(1)
同図に表したように、積和演算器173は、乗算器201及び加算器202を備える。乗算器201は、積和演算器173に入力される2つの数の乗算を行うものである。加算器202は、乗算器201の出力数及び選択部161cの出力数の加算を行うものである。同図の出力バッファ104は、加算器202の出力を保持する。この出力バッファ104には、積和演算の結果である式(1)の「C」の値が保持される。
【0043】
なお、積和演算器173を乗算器及び加算器として使用することもできる。乗算器として使用する場合には、式(1)において「C」に値0を代入する。これにより、積和演算器173にA×Bの乗算を行わせることができる。加算器として使用する場合には、式(1)において「A」又は「B」に値1を代入する。これにより、積和演算器173にB+C又はA+Cの加算を行わせることができる。
【0044】
[変換]
図3A-3Cは、本開示の実施形態に係る変換の一例を示す図である。同図は、データ変換部20における変換の一例を表す図である。同図を使用してデータ変換部20の変換を説明する。
【0045】
図3Aは、符号付き固定小数点数intNi及び符号無し固定小数点数uintNuを拡張符号付き固定小数点数intNに変換する場合の例を表したものである。ここで、Ni、Nu及びNは、ビット幅を表す正の整数である。また、intNiは、最上位桁2
Mi最下位桁2
Liの符号付き固定小数点数である。また、uintNuは、最上位桁2
Mu最下位桁2
Luの符号無し固定小数点数である。これらintNi及びuintNuがintNに変換される。intNは、最上位桁2
M最下位桁2
Lの符号付き固定小数点数である。但し、Mi、Mu、M、Li、Lu及びLは、整数である。
【0046】
ここでMは、次式により算出される値である。
M=max(1,max(Mi,Mu+1)) ・・・(2)
但し、max()は括弧内の最大の要素を表す。また、Lは、次式により算出される値である。
L=min(0,min(Li,Lu)) ・・・(3)
但し、min()は括弧内の最小の要素を表す。
【0047】
図3Bは、Mi、Li及びNiがそれぞれ値7、値0及び値8のint8並びにMu、Lu及びNuがそれぞれ値7、値0及び値8のuint8を拡張符号付き固定小数点数に変換する場合の例を表したものである。式(2)により拡張符号付き固定小数点数のMは値8となり、式(3)によりLは値0となる。また、MとLの値からNは値9となる。int8及びuint8は、M、L及びNがそれぞれ値8、値0及び値9のint9に拡張される。
【0048】
図3Cは、Mi、Li及びNiがそれぞれ値-2、値-4及び値3のint3並びにMu、Lu及びNuがそれぞれ値2、値1及び値2のuint2を拡張符号付き固定小数点数に変換する場合の例を表したものである。式(2)により拡張符号付き固定小数点数のMは値3となり、式(3)によりLは値-4となる。また、MとLの値からNは値8となる。int3及びuint2は、M、L及びNがそれぞれ値3、値-4及び値8のint8に拡張される。
【0049】
上述のintNに変換する際のビット幅の拡張により、元のintNi及びuintNuにおいて不足する桁(位)を生じる。intNiをintNに変換する際において、intNiの不足する桁に対応するintNの上位桁に対してintNiの符号拡張を行う。また、intNiの不足する桁に対応するintNの下位桁には値0を代入する。また、uintNuをintNに変換する際において、uintNuの不足するintNの上位桁に値0を代入する。また、uintNuの不足する桁に対応するintNの下位桁に値0を代入する。この様子を
図4A及び4Bを使用して説明する。
【0050】
図4A及び4Bは、本開示の実施形態に係る変換の一例を示す図である。同図は、int8及びuint8を変換する場合の例を表したものである。int8はMi及びLiがそれぞれ値0及び値-7であり、uint8はMu及びLuがそれぞれ値-1及び値-8であるため、式(2)及び(3)によりM及びLはそれぞれ値1及び値-8になる。int8及びuint8は、10ビット幅のint10に変換される。同図において、b
iは変換前の2
iの位のビット値を表す。このビット値は、値0又は値1である。
【0051】
図4Aは、int8を変換する場合の例を表したものである。int8のb
0が符号拡張されて変換後のint10の2
1の位の値がb
0になる。また、変換後の2
-8の位の値は0になる。
【0052】
図4Bは、uint8を変換する場合の例を表したものである。変換後のint10の2
1及び2
0は値0になる。
【0053】
以上説明したように、intNi及びuintNuを統一フォーマットの拡張符号付き固定小数点数intNに変換することができる。このintNを使用して後段の演算を行うことにより、単一の演算回路においてintNi及びuintNuの両方の演算を行うことができる。また、変換後のintNは、intNi及びuintNuの全ての数値ビットを含む構成であるため、変換による精度の低下を防ぐことができる。また、21及び20の桁を含む2の補数表記の符号付き固定小数点数であるため、intNは値1を表現することができる。これにより、積和演算器173を加算器として使用することができる。
【0054】
図5A-5Dは、従来の技術に係る変換の一例を示す図である。同図は、本開示の変換の比較例を説明する図である。
図5Aは、変換前のint8及びuint8を表したものである。
図5B-5Dは、
図5Aのint8及びuint8を{符号ビット、8ビット幅の絶対値}の9ビット幅の絶対値表記の符号付き固定小数点数に変換する例を表したものである。
図5B-5Dにおいて、上段がint8から変換した9ビット幅の絶対値表記の符号付き固定小数点数を表し、下段がuint8から変換した9ビット幅の絶対値表記の符号付き固定小数点数を表す。
【0055】
図5Bは、9ビット幅の絶対値表記の符号付き固定小数点数の絶対値部の最上位桁を2
-1、最下位桁を2
-8とした場合の例である。この方法では、int8が値-1の時に正確に変換できない。また、このフォーマットの絶対値表記の符号付き固定小数点数では値1を表現できないという問題がある。
【0056】
図5Cは、int8から変換した9ビット幅の絶対値表記の符号付き固定小数点数の絶対値部の最上位桁を2
0、最下位桁を2
-7とし、uint8から変換した9ビット幅の絶対値表記の符号付き固定小数点数の絶対値部の最上位桁を2
-1、最下位桁を2
-8とした場合の例である。この例では,int8から変換した場合とuint8から変換した場合とにおいてフォーマットが異なっている。変換後の回路は2種類のフォーマットに対応する必要があり、回路や制御が複雑になってしまう。
【0057】
図5Dは、9ビット幅の絶対値表記の符号付き固定小数点数の絶対値部の最上位桁を2
0、最下位桁を2
-7とした場合の例である。この例では、uint8から変換した場合にuint8の2
-8の桁の値が切り捨てられ、変換に誤差を生じるという問題がある。
【0058】
本開示の実施形態のデータ変換部20は、上記の
図5B-5Dの問題を生じることなく変換を行うことができる。つまり、変換後のフォーマットで値1を表現でき、変換の際に誤差が生じない。
【0059】
[演算処理]
図6は、本開示の第1の実施形態に係る演算処理の処理手順の一例を示す図である。同図は、ニューラルネットワーク回路10における演算の一例を表す流れ図である。まず、制御部11がパラメータレジスタ13に値を設定する(ステップS101)。これは、メモリ装置から読み出した設定値をパラメータレジスタ13に保持させることにより行うことができる。次に、制御部11は、メモリ装置から特徴マップの読み出しを行う(ステップS102)。次に、データ変換部20が読み出された特徴マップの変換処理(ステップS110)を行って特徴マップを統一フォーマットに変換する。次に、制御部11は、変換された特徴マップをバッファ(入力バッファ102)に保存する(ステップS103)。
【0060】
次に、制御部11は、メモリ装置から重みの読み出しを行う(ステップS104)。次に、データ変換部20が読み出された重みの変換処理(ステップS120)を行って重みを統一フォーマットに変換する。次に、制御部11は、変換された重みをバッファ(入力バッファ103)に保存する(ステップS105)。次に、制御部11は、積和演算(ステップS130)を行い、処理を終了する。
【0061】
[変換処理]
図7は、本開示の第1の実施形態に係る変換処理の処理手順の一例を示す図である。同図の処理は、
図6における変換処理(ステップS110)を表す流れ図である。なお、
図6における変換処理(ステップS120)も同図の変換処理と同様である。
【0062】
まず、制御部11は、変換対象が符号付きか否かを判断する(ステップS111)。その結果、変換対象が符号付きの場合には(ステップS111,Yes)、制御部11がデータ変換部20を制御して符号付き固定小数点数の変換を行わせる(ステップS112)。一方、変換対象が符号付きでない場合には(ステップS111,No)、制御部11がデータ変換部20を制御して符号無し固定小数点数の変換を行わる(ステップS113)。その後、制御部11は、元の処理に戻る。
【0063】
[積和演算処理]
図8は、本開示の第1の実施形態に係る積和演算処理の処理手順の一例を示す図である。同図の処理は、
図6における積和演算処理(ステップS130)を表す流れ図である。まず、制御部11がデータ入力処理(ステップS140)を行って積和演算器173にデータを入力する。次に、積和演算器173が積和演算を行う(ステップS132)。次に、制御部11は、演算結果を保存する(ステップS133)。これは、演算結果を出力バッファ104に保持させることにより行うことができる。その後、制御部11は、元の処理に戻る。
【0064】
[データ入力処理]
図9は、本開示の第1の実施形態に係るデータ入力処理の処理手順の一例を示す図である。同図の処理は、
図8におけるデータ入力処理(ステップS140)を表す流れ図である。まず、制御部11が特徴マップの読み出し先がバッファか否かを判断する(ステップS141)。その結果、特徴マップの読み出し先がバッファの場合には(ステップS141,Yes)、制御部11は、バッファ(入力バッファ102)から特徴マップを読み出して(ステップS142)、積和演算器173に入力する(ステップS144)。その後、制御部11は、ステップS145の処理に移行する。
【0065】
一方、ステップS141の処理において、特徴マップの読み出し先がレジスタの場合には(ステップS141,No)、制御部11は、レジスタ(パラメータレジスタ13)から特徴マップを読み出して(ステップS143)、積和演算器173に入力する(ステップS144)。その後、制御部11は、ステップS145の処理に移行する。
【0066】
ステップS145において、制御部11が重みの読み出し先がバッファか否かを判断する(ステップS145)。その結果、重みの読み出し先がバッファの場合には(ステップS145,Yes)、制御部11は、バッファ(入力バッファ103)から重みを読み出して(ステップS146)、積和演算器173に入力する(ステップS148)。その後、制御部11は、ステップS149の処理に移行する。
【0067】
一方、ステップS145の処理において、重みの読み出し先がレジスタの場合には(ステップS145,No)、制御部11は、レジスタ(パラメータレジスタ13)から特徴マップを読み出して(ステップS147)、積和演算器173に入力する(ステップS148)。その後、制御部11は、ステップS149の処理に移行する。
【0068】
ステップS149において、制御部11が積和演算の累積値の読み出し先がバッファか否かを判断する(ステップS149)。その結果、累積値の読み出し先がバッファの場合には(ステップS149,Yes)、制御部11は、バッファ(出力バッファ104)から累積値を読み出して(ステップS150)、積和演算器173に入力する(ステップS152)。その後、制御部11は、元の処理に戻る。
【0069】
一方、ステップS149の処理において、累積値の読み出し先がレジスタの場合には(ステップS149,No)、制御部11は、レジスタ(パラメータレジスタ13)から特徴マップを読み出して(ステップS151)、積和演算器173に入力する(ステップS152)。その後、制御部11は、元の処理に戻る。
【0070】
[他の積和演算処理]
図10は、本開示の第1の実施形態に係る積和演算処理の他の処理手順の一例を示す図である。同図の処理は、畳み込み演算を行う場合の積和演算処理(ステップS130)を表す流れ図である。まず、制御部11は、畳み込み演算が終了したかを判断する(ステップS134)。その結果、畳み込み演算が終了していない場合には(ステップS134,No)、制御部11は、データ入力処理(ステップS140)を行い、積和演算器173に積和演算を行わせる(ステップS135)。次に、制御部11は、演算結果を保存する(ステップS136)。これは、演算結果を出力バッファ104に保持させることにより行うことができる。その後、制御部11は、ステップS134の処理に戻る。
【0071】
ステップS134の処理において、畳み込み演算が終了した場合には(ステップS134,Yes)、制御部11は、元の処理に戻る。
【0072】
このように、本開示の第1の実施形態のデータ変換部20は、符号付き固定小数点数intNi及び符号無し固定小数点数uintNuを共通の表示方式の拡張符号付き固定小数点数intNに変換する。この変換においてintNi及びuintNuの全てのビットがintNに反映されるため、変換の際の誤差の発生を防ぐことができる。また、intNは、値1を表現することができる。
【0073】
(2.第2の実施形態)
上述の第1の実施形態の演算部は、メモリ装置から読み出したデータを変換して入力バッファ102等に格納していた。これに対し、本開示の第2の実施形態の演算部は、入力バッファから積和演算器173にデータを入力する途中において変換を行う点で、上述の第1の実施形態と異なる。
【0074】
[演算部の構成]
図11は、本開示の第2の実施形態に係る演算部の構成例を示す図である。同図は、
図2と同様に、ニューラルネットワーク回路10における畳み込み演算等を行う部分を表す演算部のブロック図である。同図の演算部は、データ変換部20の代わりにデータ変換部100及び101を備え、選択部161aの代わりに選択部161a-1及び選択部161a-2を備え、選択部161bの代わりに選択部161b-1及び選択部161b-2を備える点で、
図2の演算部と異なる。
【0075】
選択部161a-1は、入力バッファ102が保持する複数のデータの何れかを選択して値を取得し、データ変換部100に入力するものである。選択部161b-1は、入力バッファ103が保持する複数のデータの何れかを選択して値を取得し、データ変換部101に入力するものである。この選択部161a-1及び161b-1は、複数のデータを保持する入力バッファ102及び103から積和演算器173の積和演算に必要となるデータをそれぞれ選択し、データを取得する。
【0076】
データ変換部100は、選択部161a-1から出力されるデータの変換を行い、変換結果を選択部161a-2に出力する。また、データ変換部101は、選択部161b-1から出力されるデータの変換を行い、変換結果を選択部161b-2に出力する。
【0077】
選択部161a-2は、データ変換部100の出力数及びパラメータレジスタ13aの出力数の何れかを選択して値を取得し、積和演算器173に入力するものである。選択部161b-2は、データ変換部101の出力数及びパラメータレジスタ13bの出力数の何れかを選択して値を取得し、積和演算器173に入力するものである。
【0078】
同図の演算部は、
図2の演算部と比較して入力バッファ102及び103から積和演算器173までのパスが長くなるが、入力バッファ102及び103のビット幅を8ビットにすることができる。
【0079】
これ以外のニューラルネットワーク回路10の構成は本開示の第1の実施形態におけるニューラルネットワーク回路10の構成と同様であるため、説明を省略する。
【0080】
なお、本明細書に記載された効果はあくまで例示であって限定されるものでは無く、また他の効果があってもよい。
【0081】
なお、本技術は以下のような構成も取ることができる。
(1)
最上位桁及び最下位桁が整数Mi及びLiを使用してそれぞれ2Mi及び2Liにより表される2の補数表記の符号付き固定小数点数と最上位桁及び最下位桁が整数Mu及びLuを使用してそれぞれ2Mu及び2Luにより表される符号無し固定小数点数とを最上位桁及び最下位桁が次式
M=max(1,max(Mi,Mu+1)):max()は括弧内の最大の要素を表す。
L=min(0,min(Li,Lu)):min()は括弧内の最小の要素を表す。
を満たすM及びLを使用して2M及び2Lによりそれぞれ表される2の補数表記の符号付き固定小数点数である拡張符号付き固定小数点数に変換する変換部であって、
前記符号付き固定小数点数を前記拡張符号付き固定小数点数に変換する際には、前記符号付き固定小数点数の不足する桁に対応する前記拡張符号付き固定小数点数の上位桁に対して前記符号付き固定小数点数の符号拡張を行うとともに前記符号付き固定小数点数の不足する桁に対応する前記拡張符号付き固定小数点数の下位桁に対して値0を代入し、
前記符号無し固定小数点数を前記拡張符号付き固定小数点数に変換する際には、前記符号無し固定小数点数の不足する桁に対応する前記拡張符号付き固定小数点数の上位桁に対して値0を代入するとともに前記符号無し固定小数点数の不足する桁に対応する前記拡張符号付き固定小数点数の下位桁に対して値0を代入する
変換部と、
前記変換された拡張符号付き固定小数点数の積和演算を行う積和演算器と
を有する演算装置。
(2)
前記変換部における変換を制御する制御部を更に有する前記(1)に記載の演算装置。
(3)
前記変換された拡張符号付き固定小数点数及び第2の拡張符号付き固定小数点数の何れかを選択する選択部
を更に有し、
前記積和演算器は、前記選択部の選択結果に対して前記積和演算を行う
前記(1)又は(2)に記載の演算装置。
(4)
2個の前記変換部
を有し、
前記積和演算器は、2個の前記変換部からの前記拡張符号付き固定小数点数の積和演算を行う
前記(1)から(3)の何れかに記載の演算装置。
【符号の説明】
【0082】
10 ニューラルネットワーク回路
11 制御部
13、13a、13b、13c パラメータレジスタ
20、100、101 データ変換部
102、103 入力バッファ
104 出力バッファ
161、161a、161a-1、161a-2、161b、161b-1、161b-2、161c 選択部
173 積和演算器