[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

JP6556768B2 - 積和演算器、ネットワークユニットおよびネットワーク装置 - Google Patents

積和演算器、ネットワークユニットおよびネットワーク装置 Download PDF

Info

Publication number
JP6556768B2
JP6556768B2 JP2017011486A JP2017011486A JP6556768B2 JP 6556768 B2 JP6556768 B2 JP 6556768B2 JP 2017011486 A JP2017011486 A JP 2017011486A JP 2017011486 A JP2017011486 A JP 2017011486A JP 6556768 B2 JP6556768 B2 JP 6556768B2
Authority
JP
Japan
Prior art keywords
value
digit
multiplication
unit
output
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2017011486A
Other languages
English (en)
Other versions
JP2018120433A (ja
Inventor
政文 森
政文 森
孝生 丸亀
孝生 丸亀
哲史 棚本
哲史 棚本
聡 高谷
聡 高谷
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Toshiba Corp
Original Assignee
Toshiba Corp
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 Toshiba Corp filed Critical Toshiba Corp
Priority to JP2017011486A priority Critical patent/JP6556768B2/ja
Priority to US15/685,042 priority patent/US10853721B2/en
Priority to CN201710755161.5A priority patent/CN108345935A/zh
Publication of JP2018120433A publication Critical patent/JP2018120433A/ja
Application granted granted Critical
Publication of JP6556768B2 publication Critical patent/JP6556768B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/044Recurrent networks, e.g. Hopfield networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/047Probabilistic or stochastic networks

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Biophysics (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Evolutionary Computation (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Artificial Intelligence (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • Computational Linguistics (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Neurology (AREA)
  • Probability & Statistics with Applications (AREA)
  • Complex Calculations (AREA)
  • Memory System (AREA)

Description

本発明の実施形態は、積和演算器、ネットワークユニットおよびネットワーク装置に関する。
ニューラルネットワークを用いたディープラーニング技術が知られている。また、専用のハードウェアを用いてディープラーニングを行う技術も研究されている。
ニューラルネットワークに含まれる各ユニットでは、積和演算(乗累算)を実行する。すなわち、各ユニットでは、前段のユニットから受け取った複数の入力値のそれぞれに対して係数を乗算し、係数を乗算した後の複数の入力値を加算する。さらに、各ユニットでは、このように算出した値を例えばシグモイド関数等の活性化関数に与える。そして、各ユニットでは、活性化関数の出力値を出力する。
ところで、ハードウェアで実現したニューラルネットワーク装置は、このようなユニットを多数備えなければならない。このため、ニューラルネットワークをハードウェアで実現する場合、個々のユニットでの処理の高速化および低電力化の両立が望まれる。
特開平09−101944号公報
Marukame T., Ueyoshi K., Asai T., Motomura M., Schmid A., Suzuki M., Higashi Y., and Mitani Y., "Error tolerance analysis of deep learning hardware using restricted Boltzmann machine towards low-power memory implementation", IEEE Transactions on Circuits and Systems II, vol. 63, (2016)
本発明が解決しようとする課題は、高速化および低電力化を図ることにある。
実施形態に係る積和演算器は、係数記憶部と、制御部と、上位乗算部と、上位累積部と、下位乗算部と、出力部とを備える。前記係数記憶部は、N個(Nは2以上の整数)の入力値に一対一で対応しており、最上位桁の値が符号を表すN個の係数を記憶する。前記制御部は、前記最上位桁から予め定められた停止桁までの複数の桁のそれぞれを、対象桁として指定する。前記上位乗算部は、前記N個の入力値のそれぞれについて、対応する入力値と、対応する係数における前記対象桁の値と、前記対象桁の重みとを乗算した上位乗算値を算出する。前記上位累積部は、前記上位乗算値を累積加算した上位累積値を算出する。前記下位乗算部は、前記N個の入力値のそれぞれについて、対応する入力値と、対応する係数における前記停止桁より小さい桁の値とを乗算した下位乗算値を算出する。前記出力部は、前記上位累積値が予め設定された境界値を通り超えた場合、前記境界値を通り超えた後の範囲の値を乗累算値として出力する。前記出力部は、前記停止桁を前記対象桁として指定して前記上位乗算値を算出しても前記上位累積値が前記境界値を通り超えなかった場合、前記上位累積値に、前記下位乗算値を累積加算した下位累積値を加えた値を乗累算値として出力する。
実施形態に係るネットワークユニットの構成図。 活性化関数の一例を示す図。 積和演算器の構成図。 係数記憶部に記憶されている係数のイメージを示す図。 積和演算器の処理を示すフローチャート。 積和演算器の下位累積値の算出処理を示すフローチャート。 第1演算式による上位累積値の遷移の一例を示す図。 第1演算式を実行する上位乗算部の処理を示すフローチャート。 第1演算式を実行する上位乗算部の構成図。 第2演算式による上位累積値の遷移の一例を示す図。 第2演算式を実行する上位乗算部の処理を示すフローチャート。 第2演算式を実行する上位乗算部の構成図。 変形例に係る積和演算器の処理を示すフローチャート。 途中終了したビット位置と頻度との関係を示す図。 抵抗変化メモリを用いた上位乗算部および下位乗算部の構成図。 容量結合メモリを用いた上位乗算部および下位乗算部の構成図。 ネットワーク装置の構成図。
図1は、実施形態に係るネットワークユニット10の構成を示す図である。ネットワークユニット10は、例えば、多層ニューラルネットワーク等の各層の構成要素として用いられる。ネットワークユニット10は、例えば、半導体装置等のハードウェアにより実現される。
ネットワークユニット10は、積和演算器20と、活性化関数回路30とを備える。積和演算器20は、N個の入力値と、N個の係数とを外部から受け取る。Nは、2以上の整数である。N個の係数は、N個の入力値に一対一で対応している。
積和演算器20は、N個の係数を例えば外部の学習装置等から受け取り、内部に記憶する。また、積和演算器20は、N個の入力値を他のユニットから受け取る。積和演算器20は、N個の入力値を受け取ると、積和演算処理(乗累算処理)を開始する。
本実施形態においては、N個の入力値を、x、x、x、…、xと表す。また、N個の係数を、w、w、w、…、wと表す。下付の添え字は、インデックスを表す。同一のインデックスが付けられた入力値と係数とは、対応している。すなわち、xとwとが対応しており、xとwとが対応しており、xとwとが対応している。また、任意のインデックスの入力値をxと表し、任意のインデックスの係数をxと表す。iは、1からNまでの整数である。
積和演算器20は、外部からN個の入力値を受け取った場合、積和演算(乗累算)処理を実行して乗累算値を算出する。すなわち、積和演算器20は、N個の入力値のそれぞれと対応する係数とを乗算したN個の乗算値を累積した乗累算値を算出する。すなわち、積和演算器20は、下記の式(11)の演算処理を実行する。
Figure 0006556768
uは、中間値を表す。また、ドットは、乗算を表す。
積和演算器20は、このように算出した乗累算値を、中間値として活性化関数回路30へと出力する。活性化関数回路30は、積和演算器20から中間値を受け取る。活性化関数回路30は、予め設定された活性化関数に従って、中間値を出力値に変換する。すなわち、活性化関数回路30は、下記の式(12)の演算処理を実行する。
Figure 0006556768
f()は、活性化関数を表す。yは、出力値を表す。
そして、ネットワークユニット10は、活性化関数回路30から出力された出力値を、他のユニットに供給する。なお、ネットワークユニット10は、積和演算器20と、活性化関数回路30との間に、加算回路をさらに備えてもよい。加算回路は、例えば学習装置からバイアス値を予め受け取り、内部に記憶する。加算回路は、積和演算器20から出力された乗累算値とバイアス値とを加算した加算値を、中間値として活性化関数回路30に与える。
図2は、活性化関数の一例を示す図である。活性化関数は、例えば、独立変数(中間値)の絶対値が大きくなると従属変数(出力値)の値が飽和して一定となる。例えば、活性化関数は、独立変数(中間値)が正側へと変化していくと、従属変数(出力値)の値が正の所定値に漸近するように増加する。また、活性化関数は、独立変数(中間値)が負側へと変化していくと、従属変数(出力値)の値が負の所定値に漸近するように減少する。
例えば、活性化関数は、図2に示すような、シグモイド関数であってよい。活性化関数は、上述の特性を有する関数であれば、シグモイド関数以外の非線形関数であってもよい。
ところで、活性化関数における独立変数(中間値)の絶対値が大きい領域は、従属変数(出力値)の変化が少なく飽和している。活性化関数における独立変数(中間値)の絶対値が大きい領域を飽和領域と呼ぶ。また、活性化関数における独立変数(中間値)が正となる飽和領域を、正側飽和領域と呼ぶ。また、活性化関数における独立変数(中間値)が負となる飽和領域を、負側飽和領域と呼ぶ。さらに、活性化関数における飽和領域ではない領域、すなわち、活性化関数における独立変数(中間値)の絶対値が小さい領域を、過渡領域と呼ぶ。
ここで、活性化関数は、飽和領域において中間値の変化が大きくても、出力値の変化が小さい。つまり、飽和領域は、出力値の精度に対する影響が小さい。反対に、活性化関数は、過渡領域において中間値の変化が小さくても、出力値の変化が大きい。つまり、過渡領域は、出力値の精度に対する影響が大きい。
そこで、積和演算器20は、中間値が過渡領域となる場合、精度の良い処理を実行する。反対に、積和演算器20は、中間値が飽和領域となる場合、精度が悪いが、高速化および低電力化が図られた処理を実行する。
図3は、積和演算器20の構成を示す図である。積和演算器20は、入力値保持部42と、係数記憶部44と、制御部46と、取得部48と、上位乗算部50と、上位累積部52と、下位乗算部54と、下位累積部56と、比較部58と、出力部60とを有する。
入力値保持部42は、外部からN個の入力値を受け取る。例えば、入力値保持部42は、N個の入力値として、x、x、x、…、xを受け取る。そして、入力値保持部42は、受け取ったN個の入力値を保持する。
N個の入力値のそれぞれは、例えば、符号付きの2進数データである。例えば、N個の入力値のそれぞれは、2の補数表現がされた2進数データであってよい。なお、N個の入力値のそれぞれは、2値データであってもよいし、絶対値で表現されたデータ(符号無しのデータ)であってもよい。
係数記憶部44は、演算処理に先だって、N個の入力値に一対一で対応しているN個の係数を、予め受け取って記憶する。例えば、係数記憶部44は、N個の係数として、w、w、w、…、wを記憶する。係数記憶部44は、例えば、不揮発性の特性を有し、電源電圧の供給が停止しても、N個の係数を記憶し続ける。
N個の係数は、所定の桁数を有する。N個の係数のそれぞれは、符号を表す桁と、絶対値を表す少なくとも1つの桁を含む。例えば、N個の係数のそれぞれは、最上位桁の値が符号を表す。また、N個の係数のそれぞれは、最下位桁から、最上位桁より1つ下位の桁までの範囲が、絶対値を表す。例えば、N個の係数のそれぞれは、同一のビット幅の、符号付きの2進数データである。例えば、N個の係数のそれぞれは、同一のビット幅の、2の補数表現がされた2進数データであってよい。
係数記憶部44は、第1メモリ62と、第2メモリ64とを含む。第1メモリ62および第2メモリ64のそれぞれは、不揮発性メモリである。
第1メモリ62は、N個の係数のそれぞれにおける、停止桁の値および停止桁より上位の桁の値を記憶する。ここで、停止桁は、最下位桁より大きく、最上位桁より小さい、予め設定された任意の桁である。第1メモリ62は、N個の係数のそれぞれの値を、桁単位(例えば、ビット単位)で読み出させることが可能である。
第2メモリ64は、N個の係数のそれぞれにおける、停止桁より下位の桁の値を記憶する。第2メモリ64は、第1メモリ62より読み出しエラー率が高くてよい。例えば、第2メモリ64は、第1メモリ62より簡易な構成または低い信頼性であってよい。また、第2メモリ64は、第1メモリ62より低い電源電圧が印加されて動作してもよい。
制御部46は、回路全体の動作タイミング等を制御する。さらに、制御部46は、演算処理を開始すると、係数における、最上位桁から予め定められた停止桁までの複数の桁のそれぞれを、上位側から順次に、対象桁として指定する。制御部46は、指定した対象桁を取得部48および上位乗算部50に対して与える。
例えば、制御部46は、0からsまでの整数を1ずつ昇順で、対象桁(k)として指定する。k=0は、最上位桁(例えば、MSB)を表す。k=1は、最上位桁から1つ下位の桁を表す。k=2は、最上位桁から2つ下位の桁を表す。sは、最上位桁から数えた停止桁の桁数を表す。
例えば、制御部46は、上位乗算部50がN個の入力値の全ての上位乗算値を算出した後に、新たな対象桁を指定する。そして、制御部46は、停止桁を対象桁として指定した後、新たな対象桁の指定を停止する。
また、制御部46は、演算処理を開始した後の所定のタイミングにおいて、下位乗算部54に対して、演算開始指示を与える。例えば、制御部46は、上位乗算部50による乗算処理が停止桁まで全て完了した後に、下位乗算部54に対して演算開始指示を与える。制御部46は、上位乗算部50による乗算処理が停止桁まで完了する前に、下位乗算部54に対して演算開始指示を与えてもよい。例えば、制御部46は、停止桁より前の予め定められた桁を対象桁として指定する場合に、下位乗算部54に対して演算開始指示を与えてもよい。また、制御部46は、停止桁を対象桁として指定した場合、停止桁を対象桁として指定したことを比較部58に通知する。
取得部48は、対象桁が指定される毎に、係数記憶部44から、N個の係数のそれぞれの対象桁の値を順次に読み出す。そして、取得部48は、N個の係数のそれぞれの対象桁の値を順次に上位乗算部50に与える。
上位乗算部50は、対象桁が指定される毎に、入力値保持部42から、N個の入力値を順次に読み出す。これとともに、上位乗算部50は、読み出した入力値に対応する係数における対象桁の値を、取得部48から受け取る。
そして、上位乗算部50は、対象桁が指定される毎に、N個の入力値のそれぞれについて、対応する入力値と、対応する係数における対象桁の値と、対象桁の重みとを乗算した上位乗算値を算出する。係数が2進数データである場合には、最下位桁の重みは、2=1であり、最下位桁から2桁目の重みは、2=2であり、最下位桁からc桁目の重みは、2(c−1)である。上位乗算部50は、N個の入力値のそれぞれについて算出した、N個の上位乗算値を上位累積部52に順次に与える。
上位累積部52は、上位乗算部50により何れかの入力値に対する上位乗算値が算出される毎に、上位乗算値を累積加算した上位累積値を算出する。具体的には、上位累積部52は、既に記憶している上位累積値に、上位乗算部50により新たに算出された上位乗算値を加算して、上位累積値を更新する。
このような上位乗算部50および上位累積部52は、式(13)に示すように、最上位桁から下位に向かい1桁ずつ逐次的に、演算処理を実行する。
Figure 0006556768
は、上位累積値を表す。kは、0以上の整数であって、対象桁の、最上位桁からの桁位置を示す。対象桁が最上位桁である場合には、k=0となる。sは、停止桁の最上位桁からの桁数である。wikは、対象桁がkの場合の、入力値に対して乗算される値を表す。
ここで、上位乗算部50は、最上位桁より下位側の桁の値と対応する入力値との乗算結果が0または正となる第1演算式を実行する回路により、上位乗算値を算出する。すなわち、上位乗算部50は、式(13)に示す(wik・x)の演算を、第1演算式を実行する回路により実現する。これにより、上位累積部52は、最上位桁(符号)に対する乗算処理を実行した後に、上位累積値を増加させること(減少させないこと)ができる。なお、第1演算式については、図7、図8および図9を参照してさらに説明する。
第1演算式に代えて、上位乗算部50は、最上位桁より下位側の桁の値と対応する入力値との乗算結果が0または負となる第2演算式を実行する回路により、上位乗算値を算出してもよい。すなわち、上位乗算部50は、式(13)に示す(wik・x)の演算を、第2演算式を実行する回路により実現してもよい。これにより、上位累積部52は、最上位桁を演算した後に、上位累積値を減少させること(増加させないこと)ができる。なお、第2演算式については、図10、図11および図12を参照してさらに説明する。
下位乗算部54は、所定のタイミングにおいて、制御部46から乗算開始の指示を受け取る。下位乗算部54は、乗算開始の指示を受け取ると、入力値保持部42から、N個の入力値を順次に読み出す。これとともに、下位乗算部54は、読み出した入力値に対応する係数における停止桁より小さい桁の値を、係数記憶部44から読み出す。
そして、下位乗算部54は、N個の入力値のそれぞれについて、対応する入力値と、対応する係数における停止桁より小さい桁の値とを乗算した下位乗算値を順次に算出する。下位乗算部54は、N個の入力値のそれぞれについて算出した、N個の下位乗算値を下位累積部56に順次に与える。
下位累積部56は、何れかの入力値に対する下位乗算値が算出される毎に、下位乗算値を累積加算した下位累積値を算出する。具体的には、下位累積部56は、既に記憶している下位累積値に、下位乗算部54により新たに算出された下位乗算値を加算して、下位累積値を更新する。
このような下位乗算部54および下位累積部56は、式(14)に示すように、演算処理を実行する。
Figure 0006556768
は、下位累積値を表す。wiLは、インデックス(i)の係数における、最下位桁から停止桁の1つ下の桁までの値を表す。例えば、係数が2進数データであって、停止桁が“9”である場合、wiLは、wにおける、最下位ビットから8ビット目までの値を表す8ビットデータとなる。
ここで、下位乗算部54は、上位乗算部50が演算する式と同一式を実行する回路により、下位乗算値を算出する。すなわち、下位乗算部54は、式(14)に示す(wiL・x)の演算を、上位乗算部50が上位乗算値を算出した式と同一式を実行する回路により実現する。
例えば、上位乗算部50が第1演算式を実行する回路により上位乗算値を算出する場合、下位乗算部54は、第1演算式を実行する回路により下位乗算値を算出する。また、例えば、上位乗算部50が第2演算式を実行する回路により上位乗算値を算出する場合、下位乗算部54は、第2演算式を実行する回路により下位乗算値を算出する。これにより、下位乗算部54は、上位乗算値と下位乗算値とを整合させることができる。
なお、例えば、下位乗算部54は、上位乗算部50の処理が完了した後に、処理を開始する。また、下位乗算部54は、上位乗算部50の処理と並行して、処理を実行してもよい。例えば、下位乗算部54は、予め定められた桁が対象桁として指定された場合に、処理を開始する。
比較部58は、上位累積値が予め設定された境界値を通り超えたか否かを判定する。境界値は、中間値(乗累算値)における、過渡領域と飽和領域との境界を示す値である。通り超えたとは、上位累積値が、過渡領域から飽和領域へと変化したことを意味する。これにより、比較部58は、上位累積値が、過渡領域から飽和領域へと変化したことを検出することができる。
例えば、上位乗算部50が第1演算式を実行する回路により上位乗算値を算出する場合、比較部58は、上位累積値が予め設定された第1境界値より大きくなったか否かを判定する。第1境界値は、中間値(乗累算値)における、過渡領域と正側飽和領域との境界を示す値である。これにより、比較部58は、上位累積値が、過渡領域から正側飽和領域へと変化したことを検出することができる。
また、例えば、上位乗算部50が第2演算式を実行する回路により上位乗算値を算出する場合、比較部58は、上位累積値が予め設定された第2境界値より小さくなったか否かを判定する。第2境界値は、中間値(乗累算値)における、過渡領域と負側飽和領域との境界を示す値である。これにより、比較部58は、上位累積値が、過渡領域から負側飽和領域へと変化したことを検出することができる。
比較部58は、上位累積値が境界値を通り超えた場合、上位累積値が境界値を通り超えたことを出力部60に通知する。また、比較部58は、制御部46から、停止桁を対象桁として指定したことの通知を受ける。比較部58は、停止桁を対象桁として指定してN個の入力値の全ての上位乗算値を算出しても、上位累積値が境界値を通り超えなかった場合、上位累積値が境界値を通り超えなかったことを出力部60に通知する。
出力部60は、上位累積値が予め設定された境界値を通り超えた場合、境界値を通り超えた後の範囲の値を乗累算値として出力する。例えば、上位乗算部50が第1演算式を実行する回路により上位乗算値を算出する場合、出力部60は、第1境界値より大きい任意の値を、乗累算値として出力してもよい。また、例えば、上位乗算部50が第2演算式を実行する回路により上位乗算値を算出する場合、出力部60は、第2境界値より小さい任意の値を、乗累算値として出力してもよい。
例えば、出力部60は、上位累積値が境界値を通り超えた場合、境界値を通り超えた時点の上位累積値を、乗累算値として出力してもよい。すなわち、出力部60は、上位累積値が境界値を通り超えたと判定された時点において上位累積部52から出力されている値を、乗累算値として出力してもよい。
なお、比較部58は、上位累積値が境界値を通り超えた場合、上位累積値が境界値を通り超えたことを制御部46に通知する。制御部46は、上位累積値が境界値を通り超えた場合、上位乗算部50および下位乗算部54による乗算処理を停止させる。これにより、制御部46は、出力部60が累乗算値を出力した後の無駄な乗算処理を無くすことができる。
また、出力部60は、比較部58から、停止桁を対象桁として指定して上位乗算値を算出しても上位累積値が境界値を通り超えなかったことの通知を受ける。出力部60は、停止桁を対象桁として指定してN個の入力値の全てについて上位乗算値を算出しても上位累積値が境界値を通り超えなかった場合、上位累積値に下位累積値を加えた値を、乗累算値として出力する。
例えば、出力部60は、停止桁を対象桁として指定してN個の入力値の全てについて上位乗算値を算出しても上位累積値が第1境界値より大きくならなかった場合に、上位累積値に下位累積値を加えた値を、乗累算値として出力する。また、例えば、出力部60は、停止桁を対象桁として指定してN個の入力値の全てについて上位乗算値を算出しても上位累積値が第2境界値より小さくならなかった場合に、上位累積値に下位累積値を加えた値を、乗累算値として出力する。
このような積和演算器20は、出力部60から出力された乗累算値を、中間値として活性化関数回路30へと出力する。
図4は、係数記憶部44に記憶されている係数のイメージを示す図である。係数記憶部44は、N個の係数(w、w、w、…、w)を記憶する。
係数が、ビット幅が19桁の2の補数で表され、停止桁(s)が、最下位桁(LSB)から数えて7桁目であるとする。このような場合、第1メモリ62は、N個の係数のそれぞれについて、7桁目から19桁目(MSB)までのビット値(k=0〜12)を記憶する。さらに、第1メモリ62は、係数における7桁目から19桁目(MSB)までのそれぞれのビット値を、桁単位で読み出しが可能となっている。
また、第2メモリ64は、N個の係数のそれぞれについて、1桁目(LSB)から6桁目までの6ビット分の値を記憶する。第2メモリ64は、例えば、N個の係数のそれぞれについて、6ビット単位で読み出しが可能となっている。
そして、第1メモリ62と第2メモリ64とは別個の電源電圧が印加される回路であってよい。例えば、第2メモリ64は、第1メモリ62より低い電源電圧が印加される。これにより、積和演算器20は、係数における停止桁(s)より下位の桁に対する乗算処理を低電力で実行することができる。
また、第2メモリ64は、第1メモリ62より読み出しエラー率が高くてよい。例えば、第2メモリ64は、第1メモリ62より簡易な構成または低い信頼性であってよい。これにより、積和演算器20は、係数における停止桁(s)より下位の桁に対する乗算処理を低コストおよび高速に実行することができる。
図5は、積和演算器20の処理を示すフローチャートである。積和演算器20は、演算処理を実行する場合、図5の流れに従って処理を実行する。
まず、S111において、制御部46は、対象桁(k)を指定する。例えば、制御部46は、対象桁(k)として、0からsまでの整数を1ずつ昇順で指定する。
続いて、S112において、上位乗算部50は、インデックス(i)を選択する。例えば、上位乗算部50は、インデックス(i)として、1からNまでの整数を1ずつ昇順で選択する。
続いて、S113において、上位乗算部50は、選択したインデックス(i)に対応する入力値(x)を取得する。続いて、S114において、上位乗算部50は、選択したインデックス(i)に対応する係数(w)における、対象桁(k)の値(w(k))を取得する。
続いて、S115において、上位乗算部50は、上位乗算値(w(k)・x)を算出する。続いて、S116において、上位累積部52は、上位乗算値(w(k)・x)を累積する。すなわち、上位累積部52は、演算前の上位累積値(A)に、S115で算出した上位乗算値(w(k)・x)を加算して、上位累積値(A)を更新する。なお、上位累積値(A)は、フロー開始時において0に初期化されている。
続いて、S117において、比較部58は、上位累積値(A)が境界値を通り超えたか否かを判断する。例えば、比較部58は、上位乗算値(w(k)・x)が第1演算式により算出される場合には、上位累積値(A)が第1境界値より大きくなったか否かを判断する。また、例えば、比較部58は、上位乗算値(w(k)・x)が第2演算式により算出される場合には、上位累積値(A)が第2境界値より小さくなったか否かを判断する。
上位累積値(A)が境界値を通り超えていない場合(S117のNo)、比較部58は、処理をS118に進める。
S118において、上位乗算部50は、インデックス(i)がNであるか否かを判断する。すなわち、上位乗算部50は、N個の全ての入力値を選択したか否かを判断する。上位乗算部50は、インデックス(i)がNではない場合(S118のNo)、処理をS112に戻す。上位乗算部50は、処理をS112に戻すと、S112においてインデックス(i)として、次の値を選択して、以後の処理を繰り返す。上位乗算部50は、インデックス(i)がNである場合(S118のYes)、処理をS119に進める。
S119において、制御部46は、対象桁(k)が停止桁(s)であるか否かを判断する。すなわち、制御部46は、対象桁(k)を最上位桁から停止桁(s)まで全て指定したか否かを判断する。制御部46は、対象桁(k)が停止桁(s)ではない場合(S119のNo)、処理をS111に戻す。制御部46は、処理をS111に戻すと、S111において新たな対象桁(k)を指定して、以後の処理を繰り返す。制御部46は、対象桁(k)が停止桁(s)である場合(S119のYes)、処理をS122に進める。
一方、積和演算器20は、S111とS119との間のループ処理と並行して、S120およびS121の処理を実行する。S120において、制御部46は、フローを開始した後、所定のタイミングとなったか否かを判断する。制御部46は、所定のタイミングとなった場合に(S120のYes)、下位乗算部54に演算開始指示を与えて、処理をS121に進める。
例えば、制御部46は、対象桁(k)が停止桁(s)まで指定され、且つ、インデックス(i)の値がNとなった場合に、所定のタイミングとなったと判断してよい。また、制御部46は、フローの開始直後に、所定のタイミングとなったと判断してもよい。また、制御部46は、対象桁(k)が停止桁(s)より前の予め定められた桁となった場合に、所定のタイミングとなったと判断してもよい。制御部46は、所定のタイミングとなるまで、処理を待機する(S120のNo)。
S121において、下位乗算部54および下位累積部56は、下位累積値(A)を算出する。下位乗算部54および下位累積部56は、下位累積値(A)を算出すると、処理をS122に進める。なお、S121の処理については、図6においてさらに詳細を説明する。
S119において、対象桁(k)が停止桁(s)であると判断され(S119のYes)、且つ、S121において下位累積値(A)の算出が完了すると、出力部60は、S122の処理を実行する。S122において、出力部60は、上位累積値(A)と下位累積値(A)とを加算して、乗累算値である中間値(u)を算出する。出力部60は、S122の処理を終えると、処理をS125に進める。
また、S111とS119との間のループ処理内において、上位累積値(A)が境界値を通り超えた場合(S117のYes)、比較部58は、処理をS123に進める。
S123において、制御部46は、上位乗算部50による処理、並びに、下位乗算部54による処理を停止させる。続いて、S124において、出力部60は、乗累算値である中間値(u)に、上位累積値(A)を代入する。出力部60は、S124の処理を終えると、処理をS125に進める。
そして、S125において、出力部60は、中間値(u)を後段の活性化関数回路30へと出力する。
図6は、積和演算器20の下位累積値の算出処理を示すフローチャートである。S120で所定のタイミングとなったと判断された場合、下位乗算部54および下位累積部56は、図6に示すS131〜S136の処理を実行する。
S131において、下位乗算部54は、インデックス(i)を選択する。例えば、下位乗算部54は、インデックス(i)として、1からNまでの整数を1ずつ昇順で選択する。
続いて、S132において、下位乗算部54は、選択したインデックス(i)に対応する入力値(x)を取得する。続いて、S133において、下位乗算部54は、選択したインデックス(i)に対応する係数(w)における、停止桁より下位の値(wiL)を取得する。
続いて、S134において、下位乗算部54は、下位乗算値(wiL・x)を算出する。続いて、S135において、下位累積部56は、下位乗算値(wiL・x)を累積する。すなわち、下位累積部56は、演算前の下位累積値(A)に、S134で算出した下位乗算値(wiL・x)を加算して、下位累積値(A)を更新する。なお、下位累積値(A)は、フロー開始前において0に初期化されている。
S136において、下位乗算部54は、インデックス(i)がNであるか否かを判断する。すなわち、下位乗算部54は、N個の入力値の全てを選択したか否かを判断する。下位乗算部54は、インデックス(i)がNではない場合(S136のNo)、処理をS131に戻す。下位乗算部54は、処理をS131に戻すと、S131においてインデックス(i)として次の値を選択して、以後の処理を繰り返す。下位乗算部54は、インデックス(i)がNである場合(S136のYes)、処理をS122に進める。
図7は、第1演算式による上位累積値(A)の遷移の一例を示す図である。上位乗算部50は、(wik・x)の演算を、例えば第1演算式を実行する回路により実現する。(wik・x)は、インデックス(i)の入力値(x)と、インデックス(i)の係数(w)における対象桁(k)の値と、対象桁(k)の重みとを乗算する演算である。また、この場合、下位乗算部54も、(wiL・x)の演算を、第1演算式を実行する回路により実現する。(wiL・x)は、インデックス(i)の入力値(x)と、インデックス(i)の係数(w)における停止桁(s)より下位の値とを乗算する演算である。
第1演算式は、最上位桁より下位側の桁の値(すなわち、最下位桁から最上位桁の1つ下位の桁までの各桁の値)と、対応する入力値との乗算結果が0または正となる演算である。具体的に、入力値(x)および係数(w)が2の補数で表された2進数の場合、第1演算式は、式(21)のようになる。
Figure 0006556768
なお、オーバーバーは、ビット反転を表す。mは、係数(w)の桁数(ビット幅)から1を減算した値である。|x|は、xの絶対値を表す。つまり、|x|は、xの符号(最上位桁)を除いた値を表す。
第1演算式を実行する回路により実現される上位乗算部50は、対象桁(k)が最上位桁(k=0)の場合、下記の式(22)の演算を実行する。
Figure 0006556768
第1演算式を実行する回路により実現される上位乗算部50は、対象桁(k)が最上位桁より下位の桁(k=1〜s)の場合、下記の式(23)を実行する。
Figure 0006556768
第1演算式を実行する回路により実現される下位乗算部54は、下記の式(24)を実行する。
Figure 0006556768
ここで、第1演算式を実行する回路により実現される上位乗算部50が最上位桁から下位に向かい1桁ずつ、(wik・x)の演算を実行した場合、上位累積値(A)は、図7に示すように遷移する。すなわち、最上位桁(符号桁)が対象桁として指定された演算が完了した後、上位累積値(A)は、累積処理のステップが進んでも減少しない。
従って、上位累積値(A)は、過渡領域と正側飽和領域との間の第1境界値より大きくなった場合、その後に累積処理のステップが進んでも、過渡領域に戻らない。つまり、上位累積値(A)が累積処理の途中で第1境界値より大きくなった場合、最終的な上位累積値(A)は、正側飽和領域の値となる。
積和演算器20により算出された中間値は、活性化関数回路30に与えられる。活性化関数回路30において、正側飽和領域における中間値は、出力値の精度に対する影響が小さい。そこで、積和演算器20は、上位累積値(A)が第1境界値より大きくなった場合、処理を途中で終了して、比較的に精度の悪い上位累積値(A)を出力する。これにより、積和演算器20では、中間値が正側飽和領域となる場合、処理の高速化および低電力化を図ることができる。
一方、上位累積値(A)が第1境界値より大きくならない場合、最終的な上位累積値(A)は、過渡領域に含まれる可能性がある。活性化関数回路30において、過渡領域における中間値は、出力値の精度に対する影響が大きい。そこで、積和演算器20は、上位累積値(A)が第1境界値より大きくならずに、対象桁(k)が停止桁(s)に達した場合、処理を最後まで完了させて、上位累積値(A)と下位累積値(A)とを加算した精度の良い中間値を出力する。これにより、積和演算器20では、中間値が過渡領域に含まれる可能性がある場合には、活性化関数回路30に精度の良い出力値を出力させることができる。
図8は、第1演算式を実行する回路により実現される上位乗算部50の処理を示すフローチャートである。第1演算式を実行する回路により実現される上位乗算部50は、例えば、図8に示すフローチャートに従って処理を実行する。
まず、S141において、上位乗算部50は、入力値(x)が負であるか否かを判断する。上位乗算部50は、入力値(x)が負ではない場合(S141のNo)、処理をS142に進める。S142において、上位乗算部50は、下記の式(25)によりPを算出する。
Figure 0006556768
続いて、S143において、上位乗算部50は、kが0であるか否かを判断する。kが0である場合(S143のYes)、S144において、上位乗算部50は、式(25)により算出したPに−1を乗算して、第1の上位乗算値(M)を算出する。kが0ではない場合(S143のNo)、S145において、上位乗算部50は、式(25)により算出したPを、第1の上位乗算値(M)とする。そして、上位乗算部50は、S144またはS145の処理を終了すると、(w(k)・x)の演算を終了する。
また、上位乗算部50は、入力値(x)が負である場合(S141のYes)、処理をS146に進める。S146において、上位乗算部50は、係数(w)における対象桁(k)の値(w(k))をビット反転する。続いて、S147において、上位乗算部50は、下記の式(26)によりPを算出する。
Figure 0006556768
続いて、S148において、上位乗算部50は、kが0であるか否かを判断する。kが0である場合(S148のYes)、S149において、上位乗算部50は、式(26)により算出したPに−1を乗算し、(−1×P)に入力値(x)の絶対値(|x|)を加算して、第1の上位乗算値(M)を算出する。kが0ではない場合(S148のNo)、S150において、上位乗算部50は、式(26)により算出したPを、第1の上位乗算値(M)とする。そして、上位乗算部50は、S149またはS150の処理を終了すると、(w(k)・x)の演算を終了する。
図9は、第1演算式を実行する回路により実現される上位乗算部50の構成を示す図である。第1演算式を実行する回路により実現される上位乗算部50は、例えば、図9に示す構成となる。
上位乗算部50は、反転器70と、第1切替器72と、第1乗算器74と、シフト回路76と、第2乗算器77と、加算器78と、第2切替器82と、第3切替器84とを含む。
反転器70は、係数(w)における対象桁(k)の値(w(k))をビット反転する。第1切替器72は、入力値(x)が0以上の場合、係数(w)における対象桁(k)の値(w(k))を選択して出力する。第1切替器72は、入力値(x)が0より小さい場合、反転器70の出力値を選択して出力する。
第1乗算器74は、入力値(x)の絶対値(|x|)と、第1切替器72の出力値とを乗算する。シフト回路76は、第1乗算器74の出力値を、(m−k)ビット分、左ビットシフトをする。
第2乗算器77は、シフト回路76の出力値に−1を乗算する。加算器78は、第2乗算器77の出力値と、入力値(x)の絶対値(|x|)とを加算する。
第2切替器82は、入力値(x)が0以上の場合、第2乗算器77の出力値を選択して出力する。第2切替器82は、入力値(x)が0より小さい場合、加算器78の出力値を選択して出力する。
第3切替器84は、対象桁(k)が0ではない場合、シフト回路76の出力値を選択して出力する。第3切替器84は、対象桁(k)が0である場合、第2切替器82の出力値を選択して出力する。そして、上位乗算部50は、第3切替器84の出力値を、(w(k)・x)として出力する。
図10は、第2演算式による上位累積値(A)の遷移の一例を示す図である。上位乗算部50は、(wik・x)の演算を、例えば第2演算式を実行する回路により実現する。また、この場合、下位乗算部54も、(wiL・x)の演算を、第2演算式を実行する回路により実現する。
第2演算式は、最上位桁より下位側の桁の値(すなわち、最下位桁から最上位桁の1つ下位の桁までの各桁の値)と、対応する入力値との乗算結果が0または負となる演算である。具体的に、入力値(x)および係数(w)が2の補数で表された2進数の場合、第2演算式は、式(31)のようになる。
Figure 0006556768
第2演算式を実行する回路により実現される上位乗算部50は、対象桁(k)が最上位桁(k=0)の場合、下記の式(32)の演算を実行する。
Figure 0006556768
第2演算式を実行する回路により実現される上位乗算部50は、対象桁(k)が最上位桁より下位の桁(k=1〜s)の場合、下記の式(33)を実行する。
Figure 0006556768
第2演算式を実行する回路により実現される下位乗算部54は、下記の式(34)を実行する。
Figure 0006556768
ここで、第2演算式を実行する回路により実現される上位乗算部50が最上位桁から下位に向かい1桁ずつ、(wik・x)の演算を実行した場合、上位累積値(A)は、図10に示すように遷移する。すなわち、最上位桁(符号桁)が対象桁として指定された演算が完了した後、上位累積値(A)は、累積処理のステップが進んでも増加しない。
従って、上位累積値(A)は、過渡領域と負側飽和領域との間の第2境界値より小さくなった場合、その後に累積処理のステップが進んでも、過渡領域に戻らない。つまり、上位累積値(A)が累積処理の途中で第2境界値より小さくなった場合、最終的な上位累積値(A)は、負側飽和領域の値となる。
積和演算器20により算出された中間値は、活性化関数回路30に与えられる。活性化関数回路30において、負側飽和領域における中間値は、出力値の精度に対する影響が小さい。そこで、積和演算器20は、上位累積値(A)が第2境界値より小さくなった場合、処理を途中で終了して、比較的に精度の悪い上位累積値(A)を出力する。これにより、積和演算器20では、中間値が負側飽和領域となる場合、処理の高速化および低電力化を図ることができる。
一方、上位累積値(A)が第2境界値より小さくならない場合、最終的な上位累積値(A)は、過渡領域に含まれる可能性がある。活性化関数回路30において、過渡領域における中間値は、出力値の精度に対する影響が大きい。そこで、積和演算器20は、上位累積値(A)が第2境界値より小さくならずに、対象桁(k)が停止桁(s)に達した場合、処理を最後まで完了させて、上位累積値(A)と下位累積値(A)とを加算した精度の良い中間値を出力する。これにより、積和演算器20では、中間値が過渡領域に含まれる可能性がある場合には、活性化関数回路30に精度の良い出力値を出力させることができる。
図11は、第2演算式を実行する回路により実現される上位乗算部50の処理を示すフローチャートである。第2演算式を実行する回路により実現される上位乗算部50は、例えば、図11に示すフローチャートに従って処理を実行する。
まず、S171において、上位乗算部50は、入力値(x)が負であるか否かを判断する。上位乗算部50は、入力値(x)が負ではない場合(S171のNo)、処理をS172に進める。S172において、上位乗算部50は、係数(w)における対象桁(k)の値(w(k))をビット反転する。続いて、S173において、上位乗算部50は、下記の式(35)によりPを算出する。
Figure 0006556768
続いて、S174において、上位乗算部50は、kが0であるか否かを判断する。kが0である場合(S174のYes)、S175において、上位乗算部50は、式(35)により算出したPから、入力値の絶対値(|x|)を減算して、第2の上位乗算値(M)を算出する。kが0ではない場合(S174のNo)、S176において、上位乗算部50は、式(35)により算出したPに−1を乗算し、(−1×P)を、第2の上位乗算値(M)とする。そして、上位乗算部50は、S175またはS176の処理を終了すると、(w(k)・x)の演算を終了する。
また、上位乗算部50は、入力値(x)が負である場合(S171のYes)、処理をS177に進める。続いて、S177において、上位乗算部50は、下記の式(36)によりPを算出する。
Figure 0006556768
続いて、S178において、上位乗算部50は、kが0であるか否かを判断する。kが0である場合(S178のYes)、S179において、上位乗算部50は、式(36)により算出したPを、第2の上位乗算値(M)とする。kが0ではない場合(S178のNo)、S180において、上位乗算部50は、式(36)により算出したPに−1を乗算して、第2の上位乗算値(M)を算出する。そして、上位乗算部50は、S179またはS180の処理を終了すると、(w(k)・x)の演算を終了する。
図12は、第2演算式を実行する回路により実現される上位乗算部50の構成を示す図である。第2演算式を実行する回路により実現される上位乗算部50は、例えば、図12に示す構成となる。
上位乗算部50は、反転器70と、第1切替器72と、第1乗算器74と、シフト回路76と、第2乗算器77と、加算器78と、第3乗算器80と、第2切替器82と、第3切替器84とを含む。
反転器70は、係数(w)における対象桁(k)の値(w(k))をビット反転する。第1切替器72は、入力値(x)が0以上の場合、反転器70の出力値を選択して出力する。第1切替器72は、入力値(x)が0より小さい場合、係数(w)における対象桁(k)の値(w(k))を選択して出力する。
第1乗算器74は、入力値(x)の絶対値(|x|)と、第1切替器72の出力値とを乗算する。シフト回路76は、第1乗算器74の出力値を、(m−k)ビット分、左ビットシフトをする。第2乗算器77は、シフト回路76の出力値に−1を乗算する。
第3乗算器80は、入力値(x)の絶対値(|x|)に−1を乗算する。加算器78は、シフト回路76の出力値と、第3乗算器80の出力値とを加算する。
第2切替器82は、入力値(x)が0より小さい場合、シフト回路76の出力値を選択して出力する。第2切替器82は、入力値(x)が0以上の場合、加算器78の出力値を選択して出力する。
第3切替器84は、対象桁(k)が0ではない場合、第2乗算器77の出力値を選択して出力する。第3切替器84は、対象桁(k)が0である場合、第2切替器82の出力値を選択して出力する。そして、上位乗算部50は、第3切替器84の出力値を、(w(k)・x)として出力する。
図13は、変形例に係る積和演算器20の処理を示すフローチャートである。上位乗算部50および下位乗算部54は、第1演算式を実行する回路および第2演算式を実行する回路の両方を備え、両者の処理を並行して実行してもよい。
第1演算式に基づく乗算処理および第2演算式に基づく乗算処理の両方を並行して実行する場合、積和演算器20は、図5に示したS115、S116、S117、S123およびS124の処理に代えて、図13に示す処理を実行する。
S114の処理に続き、上位乗算部50は、S181を実行する。S181において、上位乗算部50は、第1演算式を実行する回路により、第1の上位乗算値(M)を算出する。続いて、S182において、上位累積部52は、第1の上位乗算値(M)を累積する。すなわち、上位累積部52は、演算前の第1の上位累積値(AU_1)に第1の上位乗算値(M)を加算して、第1の上位累積値(AU_1)を更新する。なお、第1の上位累積値(AU_1)は、フローの開始前において0に初期化されている。
続いて、S183において、比較部58は、第1の上位累積値(AU_1)が第1境界値より大きいか否かを判断する。第1の上位累積値(AU_1)が第1境界値より大きくない場合(S183のNo)、比較部58は、処理を図5のS118に進める。
第1の上位累積値(AU_1)が第1境界値より大きい場合(S183のYes)、比較部58は、処理をS184に進める。S184において、制御部46は、上位乗算部50および上位累積部52による処理、並びに、下位乗算部54および下位累積部56による処理を停止させる。
続いて、S185において、出力部60は、乗累算値である中間値(u)に、第1の上位累積値(AU_1)を代入する。出力部60は、S185の処理を終えると、処理を、図5に示したS125に進める。
積和演算器20は、S181からS185の処理と並行して、S186からS190の処理も実行する。S114の処理に続き、S186において、上位乗算部50は、第2演算式を実行する回路により、第2の上位乗算値(M)を算出する。続いて、S187において、上位累積部52は、第2の上位乗算値(M)を累積する。すなわち、上位累積部52は、第2の上位累積値(AU_2)に第2の上位乗算値(M)を加算して、第2の上位累積値(AU_2)を更新する。なお、第2の上位累積値(AU_2)は、フローの開始前において0に初期化されている。
続いて、S188において、比較部58は、第2の上位累積値(AU_2)が第2境界値より小さいか否かを判断する。第2の上位累積値(AU_2)が第2境界値より小さくない場合(S188のNo)、比較部58は、処理を、図5に示したS118に進める。
第2の上位累積値(AU_2)が第2境界値より小さい場合(S188のYes)、比較部58は、処理をS189に進める。S189において、制御部46は、上位乗算部50および上位累積部52による処理、並びに、下位乗算部54および下位累積部56による処理を停止させる。
続いて、S190において、出力部60は、乗累算値である中間値(u)に、第2の上位累積値(AU_2)を代入する。出力部60は、S190の処理を終えると、処理を、図5に示したS125に進める。
このような変形例に係る積和演算器20は、中間値が正側飽和領域となる場合、および、中間値が負側飽和領域となる場合の両者を検出することができる。そして、変形例に係る積和演算器20は、中間値が正側飽和領域となる場合および中間値が負側飽和領域となる場合の両者において、処理の高速化および低電力化を図ることができる。
なお、下位乗算部54は、第1演算式を実行する回路、または、第2演算式を実行する回路の何れか一方を備えればよい。下位乗算部54が第1演算式を実行する回路を備える場合には、出力部60は、下位累積部56により算出された下位累積値(A)と、第1の上位累積値(AU_1)とを加算して累乗算値を算出する。また、下位乗算部54が第2演算式を実行する回路を備える場合には、出力部60は、下位累積部56により算出された下位累積値(A)と、第2の上位累積値(AU_2)とを加算して累乗算値を算出する。なお、何れの累乗算値も同一の値となる。
図14は、上位累積値の算出処理を途中終了したビット位置と、頻度との関係の一例を示す図である。
上位乗算部50および上位累積部52により実行される乗累算処理を、上位桁処理とする。上位桁処理での1桁毎の処理時間をTMとする。例えば、最上位桁から停止桁までの桁数をSとした場合、上位桁処理で必要される時間は、最長でS×TMとなる。また、上位桁処理では、上位累積値が途中で境界値を通り超えた場合、処理が打ち切られる。最上位桁から4桁目で打ち切りが発生した場合、上位桁処理の時間は、4×TMとなる。また、例えば、停止桁が最上位桁から19桁目であり、打ち切りが発生しなかった場合、上位桁処理の時間は、19×TMとなる。
下位乗算部54および下位累積部56により実行される乗累算処理を、下位桁処理とする。下位桁処理での処理時間をTLとする。制御部46は、下位桁処理の開始タイミングを制御する。例えば、制御部46は、上位桁処理が停止桁に達した後に下位桁処理を開始させてもよい。上位桁処理が停止桁に達した後に下位桁処理が開始した場合、積和演算器20での全体の処理時間は、最長で、(S×TM)+TLとなる。
下位桁処理を実行しなかった場合(すなわち、係数の最上位桁から最下位桁まで上位桁処理を実行した場合)、積和演算器20の処理時間(ワーストケースの処理時間)は、L×TMとなる。Lは、係数の桁数である。上位桁処理が停止桁に達した後に下位桁処理が開始した場合、積和演算器20の処理時間のワーストケースからの削減時間は、(L×TM)−{(S×TM)+TL}=(L−S)×TM−TLとなる。従って、上位桁処理が停止桁に達した後に下位桁処理が開始した場合であっても、停止桁より下位の桁を上位桁処理で実行する時間((L−S)×TM)より、下位桁処理の時間(TL)の方が短ければ、削減効果が生じる。
図14の例では、8ビット目の桁(MSBから数えて12ビット目の桁)までに、約半数が途中終了となっていることが示されている。そこで、このような場合、設計者は、例えば、8ビット目の桁(MSBから数えて12ビット目の桁)を停止桁として設定してもよい。
また、このような場合、上位12ビット分の上位桁処理が完了する前に、下位7ビット分の下位桁処理が完了するように、制御部46は、下位桁処理を開始させてもよい。すなわち、制御部46は、上位桁処理が停止桁に達するまでに下位桁処理を完了するタイミングで、下位桁処理を開始させてもよい。
この場合、積和演算器20での全体の処理時間は、最長で、(12×TM)となる。上位桁処理が停止桁に達するまでに下位桁処理を完了させた場合、積和演算器20の処理時間のワーストケースからの削減時間は、(L×TM)−(S×TM)=(L−S)×TMとなる。
なお、制御部46は、上位桁処理が停止桁に達するまでに下位桁処理を完了するタイミングよりも遅いタイミングで、下位桁処理を開始させてもよい。この場合、積和演算器20の処理時間は、(S×TM)+αとなる。ここで、αは、上位桁処理が停止桁に達してから、下位桁処理が完了するまでの余り時間である。このような場合であっても、積和演算器20は、処理時間を削減することができる。例えば、この場合における、積和演算器20の処理時間のワーストケースからの削減時間は、(L×TM)−{(S×TM)+α}={(L−S)×TM}−αとなる。
積和演算器20での全体の処理時間は、最上位桁から停止桁までの桁数に応じて変更される。すなわち、停止桁を下位側の桁に設定するほど、全体の処理時間は長くなり、停止桁を上位側の桁に設定するほど、全体の処理時間は短くなる。
また、停止桁より下位側の係数の値は、停止桁より上位の係数の値より、読み出し精度の悪いメモリに記憶されている。従って、停止桁を下位側の桁に設定するほど、全体の演算精度が高くなり、停止桁を上位側の桁に設定するほど、全体の演算精度が低くなる。従って、設計者は、要求される処理時間、入力値および係数の固定小数点表現の形式(小数点の位置)、および、要求される演算精度に応じて、停止桁を適切に設定すればよい。
図15は、抵抗変化メモリ114を用いた下位乗算部54および下位累積部56の構成例を示す。下位乗算部54および下位累積部56は、例えば、図15に示すような構成であってもよい。
下位乗算部54は、メモリアレイ100と、書込部102と、読出部104とを有する。メモリアレイ100は、N本のロウライン110(110−1〜110−N)と、N本のカラムライン112(112−1〜112−N)とを有する。
N本のロウライン110のそれぞれは、N個の入力値のそれぞれに対応する。例えば、第1のロウライン110−1は、xに対応する。第2のロウライン110−2は、xに対応する。第Nのロウライン110−Nは、xに対応する。
N本のカラムライン112のそれぞれは、N個の係数のそれぞれに対応する。例えば、第1のカラムライン112−1は、wに対応する。第2のカラムライン112−2は、wに対応する。第Nのカラムライン112−Nは、wに対応する。
さらに、メモリアレイ100は、複数の抵抗変化メモリ114を有する。複数の抵抗変化メモリ114は、書き込み時において、抵抗値が変化し、印加された電圧に応じた抵抗値に設定される。また、複数の抵抗変化メモリ114は、読み出し時において、抵抗値が変化せず、設定された抵抗値の抵抗として機能する。
複数の抵抗変化メモリ114は、複数の係数のそれぞれに対応する。すなわち、メモリアレイ100は、(N×N)個の抵抗変化メモリ114を有する。より具体的には、メモリアレイ100は、N個の入力値のそれぞれについて、N個の係数のそれぞれに対応するN個の抵抗変化メモリ114を有する。例えば、メモリアレイ100は、xについて、N個の抵抗変化メモリ114(114−11,114−12,…114−1N)を有する。また、メモリアレイ100は、xについて、N個の抵抗変化メモリ114(114−21,114−22,…114−2N)を有する。また、メモリアレイ100は、xについて、N個の抵抗変化メモリ114(114−N1,114−N2,…114−NN)を有する。
(N×N)個の抵抗変化メモリ114は、対応する入力値に対応するロウライン110と、対応する係数に対応するカラムライン112との間に接続される。
例えば、xおよびwに対応する抵抗変化メモリ114−11は、第1のロウライン110−1および第1のカラムライン112−1との間に接続される。例えば、xおよびwに対応する抵抗変化メモリ114−21は、第2のロウライン110−2および第1のカラムライン112−1との間に接続される。例えば、xおよびwに対応する抵抗変化メモリ114−N1は、第Nのロウライン110−Nおよび第1のカラムライン112−1との間に接続される。
例えば、xおよびwに対応する抵抗変化メモリ114−12は、第1のロウライン110−1および第2のカラムライン112−2との間に接続される。例えば、xおよびwに対応する抵抗変化メモリ114−22は、第2のロウライン110−2および第2のカラムライン112−2との間に接続される。例えば、xおよびwに対応する抵抗変化メモリ114−N2は、第Nのロウライン110−Nおよび第2のカラムライン112−2との間に接続される。
例えば、xおよびwに対応する抵抗変化メモリ114−1Nは、第1のロウライン110−1および第Nのカラムライン112−Nとの間に接続される。例えば、xおよびwに対応する抵抗変化メモリ114−2Nは、第2のロウライン110−2および第Nのカラムライン112−Nとの間に接続される。例えば、xおよびwに対応する抵抗変化メモリ114−NNは、第Nのロウライン110−Nおよび第Nのカラムライン112−Nとの間に接続される。
書込部102は、乗算に先だって、複数の抵抗変化メモリ114のそれぞれを、対応する係数に応じたコンダクタンス(抵抗の逆数)に設定する。例えば、書込部102は、それぞれの抵抗変化メモリ114に、対応する係数における停止桁より小さい桁の値に応じたコンダクタンスとなるような電圧を印加する。
例えば、書込部102は、N個の係数電圧発生部116(116−1〜116−N)と、N個のロウラインスイッチ118(118−1〜118−N)とを含む。N個の係数電圧発生部116のそれぞれは、N本のカラムライン112(112−1〜112−N)のそれぞれに電圧を印加する。N個のロウラインスイッチ118(118−1〜118−N)のそれぞれは、書き込み時において、N本のロウライン110(110−1〜110−N)のそれぞれを所定電位に接続する。
第1の係数電圧発生部116−1は、wにおける停止桁より小さい桁の値であるw1Lに応じた電圧を、第1のカラムライン112−1に印加する。これにより、wに対応する抵抗変化メモリ114(114−11,114−21,…,114−N1)は、w1Lに対応するコンダクタンスに設定される。
第2の係数電圧発生部116−2は、wにおける停止桁より小さい桁の値であるw2Lに応じた電圧を、第2のカラムライン112−2に印加する。これにより、wに対応する抵抗変化メモリ114(114−12,114−22,…,114−N2)は、w2Lに対応するコンダクタンスに設定される。
第Nの係数電圧発生部116−Nは、wにおける停止桁より小さい桁の値であるwNLに応じた電圧を、第Nのカラムライン112−Nに印加する。これにより、wに対応する抵抗変化メモリ114(114−1N,114−2N,…,114−NN)は、wNLに対応するコンダクタンスに設定される。
なお、書込部102は、読み出し時(乗算時)においては、N本のロウライン110と書込部102との間、および、N本のカラムライン112と書込部102との間を、オープンとする。
読出部104は、複数の抵抗変化メモリ114のそれぞれに、対応する入力値に応じた電圧を印加する。複数の抵抗変化メモリ114のそれぞれは、対応する係数に応じたコンダクタンスに設定されている。これにより、複数の抵抗変化メモリ114は、対応する入力値と、対応する係数とを乗算した値に応じた電流を流すことができる。
例えば、読出部104は、N個の入力電圧発生部120(120−1〜120−N)と、N個のカラムラインスイッチ122(122−1〜122−N)とを含む。N個の入力電圧発生部120のそれぞれは、N本のロウライン110(110−1〜110−N)のそれぞれに電圧を印加する。N個のカラムラインスイッチ122(118−1〜118−N)のそれぞれは、N本のカラムライン112(112−1〜112−N)のそれぞれを所定電位に接続する。
第1の入力電圧発生部120−1は、xに応じた電圧を、第1のロウライン110−1に印加する。これにより、xに対応する抵抗変化メモリ114(114−11,114−12,…,114−1N)は、xに応じた電圧が印加される。
第2の入力電圧発生部120−2は、xに応じた電圧を、第2のロウライン110−2に印加する。これにより、xに対応する抵抗変化メモリ114(114−21,114−22,…,114−2N)は、xに応じた電圧が印加される。
第Nの入力電圧発生部120−Nは、xに応じた電圧を、第Nのロウライン110−Nに印加する。これにより、xに対応する抵抗変化メモリ114(114−N1,114−N2,…,114−NN)は、xに応じた電圧が印加される。
これにより、(N×N)個の抵抗変化メモリ114のそれぞれは、対応する入力値と、
と、対応する係数における停止桁より小さい桁の値とを乗算した電流値を流すことができる。すなわち、i番目の入力値およびi番目の係数に対応する抵抗変化メモリ114−iiは、(x×wiL)に応じた電流を流すことができる。
なお、読出部104は、書き込み時においては、N本のロウライン110と読出部104との間、および、N本のカラムライン112と読出部104との間を、オープンとする。
下位累積部56は、複数の抵抗変化メモリ114のそれぞれに流れる電流を合計した値を、下位累積値として検出する。
例えば、下位累積部56は、検出部106と、ADC108とを含む。検出部106は、N本のカラムライン112のそれぞれに流れる電流を加算する。例えば、検出部106は、一方の端がN本のカラムライン112のそれぞれに接続され、他方の端が所定電位に接続された微小抵抗であってよい。ADC108は、検出部106により検出された合成電流をAD変換して、デジタル値に変換する。例えば、ADC108は、検出部106が微小抵抗である場合、微小抵抗の電圧値をデジタル値に変換する。そして、ADC108は、出力したデジタル値を微小抵抗の抵抗値で除算した値を、下位累積値として出力する。
下位乗算部54および下位累積部56は、このような構成とすることにより、高速に乗算処理および累積処理を実行することができる。
なお、上位乗算部50および上位累積部52も、図15と同様の構成であってもよい。この場合、書込部102が、乗算に先だって、係数における対応するビットの値を、それぞれの抵抗変化メモリ114のコンダクタンスに設定すればよい。
図16は、容量結合メモリ124を用いた下位乗算部54および下位累積部56の構成例を示す。下位乗算部54および下位累積部56は、例えば、図16に示すような構成であってもよい。
図16に示す下位乗算部54は、図15に示す構成における抵抗変化メモリ114に代えて、容量結合メモリ124を有する。複数の容量結合メモリ124は、書き込み時において、キャパシタンスが変化し、印加された電圧に応じたキャパシタンスに設定される。また、複数の容量結合メモリ124は、読み出し時において、キャパシタンスが変化せず、設定されたキャパシタンスのキャパシタとして機能する。
書込部102は、乗算に先だって、複数の容量結合メモリ124のそれぞれを、対応する係数に応じたキャパシタンスに設定する。例えば、書込部102は、それぞれの容量結合メモリ124に、対応する係数における停止桁より小さい桁の値に応じたキャパシタンスとなるような電圧を印加する。
これにより、wに対応する容量結合メモリ124(124−11,124−21,…,124−N1)は、w1Lに対応するキャパシタンスに設定される。また、wに対応する容量結合メモリ124(124−12,124−22,…,124−N2)は、w2Lに対応するキャパシタンスに設定される。また、wに対応する容量結合メモリ124(124−1N,124−2N,…,124−NN)は、wNLに対応するキャパシタンスに設定される。
読出部104は、複数の容量結合メモリ124のそれぞれに、対応する入力値に応じた電圧を印加する。複数の容量結合メモリ124のそれぞれは、対応する係数に応じたキャパシタンスに設定されている。これにより、複数の容量結合メモリ124は、対応する入力値と、対応する係数とを乗算した値に応じた電荷を蓄積することができる。
第1の入力電圧発生部120−1は、xに応じた電圧を、第1のロウライン110−1に印加する。これにより、xに対応する容量結合メモリ124(124−11,124−12,…,124−1N)は、xに応じた電圧が印加される。
第2の入力電圧発生部120−2は、xに応じた電圧を、第2のロウライン110−2に印加する。これにより、xに対応する容量結合メモリ124(124−21,124−22,…,124−2N)は、xに応じた電圧が印加される。
第Nの入力電圧発生部120−Nは、xに応じた電圧を、第Nのロウライン110−Nに印加する。これにより、xに対応する容量結合メモリ124(124−N1,124−N2,…,124−NN)は、xに応じた電圧が印加される。
これにより、(N×N)個の容量結合メモリ124のそれぞれは、対応する入力値と、
と、対応する係数における停止桁より小さい桁の値とを乗算した値に応じた電荷を蓄積することができる。すなわち、i番目の入力値およびi番目の係数に対応する容量結合メモリ124−iiは、(x×wiL)に応じた電荷を蓄積することができる。
下位累積部56は、複数の容量結合メモリ124のそれぞれに蓄積した電荷を合計した値を、下位累積値として検出する。
例えば、検出部106は、2つのFET(電界効果トランジスタ)で構成されるインバータ回路である。インバータ回路のゲート端子は、N本のカラムライン112のそれぞれに接続される。あるキャパシタに印加される電圧をV、そのキャパシタのキャパシタンスをwとした場合、そのキャパシタに蓄積される電荷は、w×Vとなる。また、インバータの回路のゲート端子には、全ての容量結合メモリ124が並列に接続されており、全体として1つのキャパシタとして見える。インバータの回路のゲート端子に接続されたキャパシタに電荷が蓄積された場合、蓄積された電荷分、ゲート端子の電位が上昇する。従って、ADC108は、インバータ回路の出力端の電位の上昇分を測定することにより、下位累積値を表すデジタル値を出力することができる。
下位乗算部54および下位累積部56は、このような構成とすることにより、高速に乗算処理および累積処理を実行することができる。
なお、上位乗算部50および上位累積部52も、図16と同様の構成であってもよい。この場合、書込部102が、乗算に先だって、係数における対応するビットの値を、それぞれの容量結合メモリ124のキャパシタンスに設定すればよい。
図17は、ネットワーク装置130の構成を示す図である。ネットワークユニット10は、例えば、図17に示すようなニューラルネットワークを構成するネットワーク装置130に適用される。
ネットワーク装置130は、従属に接続された複数の層を備える。例えば、ネットワーク装置130は、入力層132と、少なくとも1つの中間層134と、出力層136とを備える。入力層132、中間層134および出力層136のそれぞれは、少なくとも1つの信号の取得処理、取得した信号に対する演算処理、および、少なくとも1つの信号の出力処理を実行する。
入力層132、少なくとも1つの中間層134および出力層136は、直列に接続される。入力層132は、外部から信号値を受け取り、演算処理を実行する。そして、入力層132は、演算結果として得られた少なくとも1つの信号値を、次段の中間層134へ出力する。
また、それぞれの中間層134は、前段から受け取った少なくとも1つの信号値に対して演算処理を実行する。そして、それぞれの中間層134は、演算結果として得られた少なくとも1つの信号値を、次段の中間層134または出力層136へと出力する。さらに、それぞれの中間層134は、自身への信号を帰還させる帰還路を有してもよい。
出力層136は、前段の中間層134から受け取った信号値に対して演算処理を実行する。そして、出力層136は、演算結果として確率値等を出力する。例えば、出力層136は、ソフトマックス関数による演算を実行する。
そして、入力層132、少なくとも1つの中間層134および出力層136の何れかの層は、少なくとも1つのネットワークユニット10を含む。何れかの層に含まれるネットワークユニット10は、直前の層から出力されたN個の信号値を入力値として受け取る。また、何れかの層に含まれるネットワークユニット10は、出力値を、信号値として次の段または外部へと出力する。
以上のように、本実施形態に係るネットワークユニット10および積和演算器20は、活性化関数回路30に適切な精度の中間値を与えて、効率良く出力値を出力させることができる。すなわち、積和演算器20は、活性化関数の飽和領域となる中間値(乗累算値)を出力する場合には、精度は低いが、高速化および低電力化を図った処理を実行することができる。また、積和演算器20は、活性化関数の過渡領域となる中間値(乗累算値)を出力する場合には、精度の良い処理を実行することができる。
本発明の実施形態を説明したが、実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
10 ネットワークユニット
20 積和演算器
30 活性化関数回路
42 入力値保持部
44 係数記憶部
46 制御部
48 取得部
50 上位乗算部
52 上位累積部
54 下位乗算部
56 下位累積部
58 比較部
60 出力部
62 第1メモリ
64 第2メモリ
70 反転器
72 第1切替器
74 第1乗算器
76 シフト回路
77 第2乗算器
78 加算器
80 第3乗算器
82 第2切替器
84 第3切替器
100 メモリアレイ
102 書込部
104 読出部
106 検出部
108 ADC
110 ロウライン
112 カラムライン
114 抵抗変化メモリ
116 係数電圧発生部
118 ロウラインスイッチ
120 入力電圧発生部
122 カラムラインスイッチ
130 ネットワーク装置
132 入力層
134 中間層
136 出力層

Claims (18)

  1. N個(Nは2以上の整数)の入力値に一対一で対応しており、最上位桁の値が符号を表すN個の係数を記憶する係数記憶部と、
    前記最上位桁から予め定められた停止桁までの複数の桁のそれぞれを、対象桁として指定する制御部と、
    前記N個の入力値のそれぞれについて、対応する入力値と、対応する係数における前記対象桁の値と、前記対象桁の重みとを乗算した上位乗算値を算出する上位乗算部と、
    前記上位乗算値を累積加算した上位累積値を算出する上位累積部と、
    前記N個の入力値のそれぞれについて、対応する入力値と、対応する係数における前記停止桁より小さい桁の値とを乗算した下位乗算値を算出する下位乗算部と、
    前記上位累積値が予め設定された境界値を通り超えた場合、前記境界値を通り超えた後の範囲の値を乗累算値として出力し、前記停止桁を前記対象桁として指定して前記上位乗算値を算出しても前記上位累積値が前記境界値を通り超えなかった場合、前記上位累積値に、前記下位乗算値を累積加算した下位累積値を加えた値を乗累算値として出力する出力部と、
    を備える積和演算器。
  2. 前記上位乗算部は、前記最上位桁より下位側の桁の値と対応する入力値との乗算結果が0または正となる第1演算式を実行する回路により、前記上位乗算値を算出し、
    前記下位乗算部は、前記第1演算式を実行する回路により前記下位乗算値を算出する
    請求項1に記載の積和演算器。
  3. 前記出力部は、
    前記上位累積値が予め設定された第1境界値より大きくなった場合、前記第1境界値より大きい値を乗累算値として出力し、
    前記停止桁を前記対象桁として指定して前記上位乗算値を算出しても前記上位累積値が前記第1境界値より大きくならなかった場合、前記上位累積値に前記下位累積値を加えた値を、乗累算値として出力する
    請求項2に記載の積和演算器。
  4. 前記上位乗算部は、前記最上位桁より下位側の桁の値と対応する入力値との乗算結果が0または負となる第2演算式を実行する回路により、前記上位乗算値を算出し、
    前記下位乗算部は、前記第2演算式を実行する回路により前記下位乗算値を算出する
    請求項1に記載の積和演算器。
  5. 前記出力部は、
    前記上位累積値が予め設定された第2境界値より小さくなった場合、前記第2境界値より小さい値を乗累算値として出力し、
    前記停止桁を前記対象桁として指定して前記上位乗算値を算出しても前記上位累積値が前記第2境界値より小さくならなかった場合、前記上位累積値に前記下位累積値を加えた値を、乗累算値として出力する
    請求項4に記載の積和演算器。
  6. 前記制御部は、
    前記最上位桁から予め定められた停止桁までの複数の桁のそれぞれを、上位側から順次に、前記対象桁として指定し、
    指定した前記対象桁について前記N個の入力値の全ての前記上位乗算値を算出した後に、新たな対象桁を指定し、
    前記上位乗算部は、前記対象桁が指定される毎に、前記上位乗算値を算出する
    請求項1から5の何れか1項に記載の積和演算器。
  7. 前記制御部は、前記上位累積値が前記境界値を通り超えた場合、前記上位乗算部および前記下位乗算部による乗算処理を停止させる
    請求項6に記載の積和演算器。
  8. 前記係数記憶部は、
    前記N個の係数のそれぞれにおける、前記停止桁の値および前記停止桁より上位の桁の値を記憶する第1メモリと、
    前記N個の係数のそれぞれにおける、前記停止桁より下位の桁の値を記憶する第2メモリと、
    を有し、
    前記第1メモリは、桁単位で、前記N個の係数のそれぞれの値を読み出させることが可能である
    請求項1から7の何れか1項に記載の積和演算器。
  9. 前記第2メモリは、前記第1メモリより低い電源電圧が印加される
    請求項8に記載の積和演算器。
  10. 前記N個の係数のそれぞれは、2の補数表現がされた2進数データである
    請求項1から9の何れか1項に記載の積和演算器。
  11. 前記N個の入力値のそれぞれは、符号を含むデータであり、
    前記上位乗算部は、前記対象桁が指定される毎に、前記N個の入力値のそれぞれについて、
    対応する入力値の絶対値と、前記係数における前記対象桁の値を対応する入力値の符号に従って反転させた値と、前記対象桁の重みとを乗算した前記上位乗算値を算出する
    請求項10に記載の積和演算器。
  12. 前記下位乗算部は、前記上位乗算部の処理が完了した後に、処理を開始する
    請求項1から11の何れか1項に記載の積和演算器。
  13. 前記下位乗算部は、前記上位乗算部の処理と並行して、処理を実行する
    請求項1から11の何れか1項に記載の積和演算器。
  14. 前記下位乗算部は、予め定められた桁が前記対象桁として指定された場合に、処理を開始する
    請求項13に記載の積和演算器。
  15. 前記上位乗算部および前記下位乗算部の少なくとも一方は、
    複数の係数のそれぞれに対応する複数の抵抗変化メモリを有するメモリアレイと、
    乗算に先だって、前記複数の抵抗変化メモリのそれぞれを、対応する係数に応じたコンダクタンスに設定する書込部と、
    前記複数の抵抗変化メモリのそれぞれに、対応する入力値に応じた電圧を印加する読出部と、
    を有する請求項1に記載の積和演算器。
  16. 前記上位乗算部および前記下位乗算部の少なくとも一方は、
    複数の係数のそれぞれに対応する複数の容量結合メモリを有するメモリアレイと、
    乗算に先だって、前記複数の容量結合メモリのそれぞれを、対応する係数に応じたキャパシタンスに設定する書込部と、
    前記複数の容量結合メモリのそれぞれに、対応する入力値に応じた電圧を印加する読出部と、
    を有する請求項1に記載の積和演算器。
  17. N個(Nは2以上の整数)の入力値のそれぞれと対応する係数とを乗算したN個の乗算値を累積した乗累算値を出力する積和演算器と、
    独立変数の絶対値が大きくなると従属変数の値が飽和して一定となる関数に基づき、前記乗累算値に応じた中間値を出力値に変換する活性化関数回路と、
    を備え、
    前記積和演算器は、
    前記N個の入力値に一対一で対応しており、最上位桁の値が符号を表すN個の係数を記憶する係数記憶部と、
    前記最上位桁から予め定められた停止桁までの複数の桁のそれぞれを、対象桁として指定する制御部と、
    前記N個の入力値のそれぞれについて、対応する入力値と、対応する係数における前記対象桁の値と、前記対象桁の重みとを乗算した上位乗算値を算出する上位乗算部と、
    前記上位乗算値を累積加算した上位累積値を算出する上位累積部と、
    前記N個の入力値のそれぞれについて、対応する入力値と、対応する係数における前記停止桁より小さい桁の値とを乗算した下位乗算値を算出する下位乗算部と、
    前記上位累積値が予め設定された境界値を通り超えた場合、前記境界値を通り超えた後の範囲の値を前記乗累算値として出力し、前記停止桁を前記対象桁として指定して前記上位乗算値を算出しても前記上位累積値が前記境界値を通り超えなかった場合、前記上位累積値に、前記下位乗算値を累積加算した下位累積値を加えた値を前記乗累算値として出力する出力部と、
    を有するネットワークユニット。
  18. 従属に接続された複数の層を備え、
    前記複数の層のそれぞれは、請求項17に記載のネットワークユニットを少なくとも1つ含み、
    前記複数の層のうちの何れかの層に含まれる前記少なくとも1つのネットワークユニットは、直前の層から出力されたN個の信号値を、前記N個の入力値として受け取る
    ネットワーク装置。
JP2017011486A 2017-01-25 2017-01-25 積和演算器、ネットワークユニットおよびネットワーク装置 Active JP6556768B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2017011486A JP6556768B2 (ja) 2017-01-25 2017-01-25 積和演算器、ネットワークユニットおよびネットワーク装置
US15/685,042 US10853721B2 (en) 2017-01-25 2017-08-24 Multiplier accumulator, network unit, and network apparatus
CN201710755161.5A CN108345935A (zh) 2017-01-25 2017-08-29 积和运算器、网络单元及网络装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2017011486A JP6556768B2 (ja) 2017-01-25 2017-01-25 積和演算器、ネットワークユニットおよびネットワーク装置

Publications (2)

Publication Number Publication Date
JP2018120433A JP2018120433A (ja) 2018-08-02
JP6556768B2 true JP6556768B2 (ja) 2019-08-07

Family

ID=62906570

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017011486A Active JP6556768B2 (ja) 2017-01-25 2017-01-25 積和演算器、ネットワークユニットおよびネットワーク装置

Country Status (3)

Country Link
US (1) US10853721B2 (ja)
JP (1) JP6556768B2 (ja)
CN (1) CN108345935A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11150873B2 (en) 2019-05-30 2021-10-19 Kabushiki Kaisha Toshiba Arithmetic apparatus

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6773621B2 (ja) 2017-09-15 2020-10-21 株式会社東芝 演算装置
JP6794336B2 (ja) 2017-11-17 2020-12-02 株式会社東芝 ニューラルネットワーク装置
US11016732B1 (en) * 2018-04-17 2021-05-25 Ali Tasdighi Far Approximate nonlinear digital data conversion for small size multiply-accumulate in artificial intelligence
CN112654996A (zh) * 2018-09-27 2021-04-13 Tdk株式会社 积和运算器、神经形态器件以及积和运算方法
US12001811B2 (en) * 2018-10-11 2024-06-04 Tdk Corporation Product-sum operation device, logical calculation device, neuromorphic device, and multiply-accumulate method
KR102184655B1 (ko) * 2018-10-29 2020-11-30 에스케이텔레콤 주식회사 비대칭 tanh 활성 함수를 이용한 예측 성능의 개선
JP7225831B2 (ja) * 2019-01-23 2023-02-21 富士通株式会社 演算処理装置,プログラム及び演算処理装置の制御方法
US11531898B2 (en) * 2019-05-16 2022-12-20 International Business Machines Corporation Training of artificial neural networks
CN110175017B (zh) * 2019-05-23 2021-07-02 浙江大学 一种基于rram的乘法器及其操作方法
US20210012202A1 (en) * 2019-07-12 2021-01-14 Facebook Technologies, Llc Systems and methods for asymmetrical scaling factor support for negative and positive values
JP7132196B2 (ja) 2019-09-17 2022-09-06 株式会社東芝 処理装置および推論システム
KR20210083428A (ko) 2019-12-26 2021-07-07 삼성전자주식회사 메모리 장치, 및 이를 포함하는 전자 기기
JP2021111142A (ja) 2020-01-10 2021-08-02 株式会社東芝 演算装置
CN111091190A (zh) * 2020-03-25 2020-05-01 光子算数(北京)科技有限责任公司 数据处理方法及装置、光子神经网络芯片、数据处理电路
TWI749552B (zh) * 2020-05-13 2021-12-11 國立中正大學 內積計算裝置
JP7358312B2 (ja) 2020-08-25 2023-10-10 株式会社東芝 記憶装置およびニューラルネットワーク装置
JP7346373B2 (ja) 2020-09-16 2023-09-19 株式会社東芝 演算装置およびニューラルネットワーク装置
JP7532284B2 (ja) 2021-02-24 2024-08-13 株式会社東芝 不揮発性メモリデバイス
JPWO2022230674A1 (ja) * 2021-04-28 2022-11-03
WO2023171406A1 (ja) * 2022-03-11 2023-09-14 ヌヴォトンテクノロジージャパン株式会社 演算回路ユニット、ニューラルネットワーク演算回路、および、ニューラルネットワーク演算回路の駆動方法
CN115935878B (zh) * 2023-01-06 2023-05-05 上海后摩智能科技有限公司 基于模拟信号的多比特数据计算电路、芯片及计算装置

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS61123951A (ja) * 1984-11-20 1986-06-11 Fujitsu Ltd メモリ・システム
JPH05507168A (ja) * 1990-05-21 1993-10-14 ゼネラル・エレクトリック・カンパニイ ニューラルネットで使用される重み付け加算用容量性構造
JPH04112362A (ja) * 1990-09-03 1992-04-14 Nippon Telegr & Teleph Corp <Ntt> 累積回路
US5216751A (en) * 1990-10-22 1993-06-01 Motorola, Inc. Digital processing element in an artificial neural network
JPH06152330A (ja) 1992-11-12 1994-05-31 Nec Corp ディジタルフィルター
JPH07210533A (ja) * 1994-01-19 1995-08-11 Nippon Telegr & Teleph Corp <Ntt> ニューラルネットワーク回路及びこれを用いた演算方法
US5630024A (en) * 1994-01-19 1997-05-13 Nippon Telegraph And Telephone Corporation Method and apparatus for processing using neural network with reduced calculation amount
JPH0830572A (ja) * 1994-07-18 1996-02-02 Nippon Telegr & Teleph Corp <Ntt> ニューラルネットワーク回路及びこれを用いた演算方法
JPH07234778A (ja) * 1994-02-22 1995-09-05 Texas Instr Japan Ltd 演算回路
JPH09101944A (ja) 1995-10-06 1997-04-15 Nippon Telegr & Teleph Corp <Ntt> ニューラルネットワーク回路
JP3292073B2 (ja) * 1996-12-19 2002-06-17 日本電気株式会社 ニューラルユニット演算方式およびその装置
EP0872794A2 (en) * 1997-04-16 1998-10-21 Yozan Inc. Computational circuit for adding multi-valued numbers
JP4620943B2 (ja) * 2003-10-16 2011-01-26 キヤノン株式会社 積和演算回路及びその方法
US8266198B2 (en) * 2006-02-09 2012-09-11 Altera Corporation Specialized processing block for programmable logic device
WO2007142568A1 (en) * 2006-06-09 2007-12-13 Telefonaktiebolaget Lm Ericsson (Publ) High efficiency linear power amplifiers with load compensation
JP2008085923A (ja) 2006-09-28 2008-04-10 Yamaha Corp デジタルフィルタ
JP2009065515A (ja) 2007-09-07 2009-03-26 Toshiba Corp デジタルフィルタ
JP5160304B2 (ja) * 2008-05-22 2013-03-13 シャープ株式会社 抵抗変化型可変抵抗素子を備えた積演算装置、及び積和演算装置、これらの装置を各ニューロン素子に備えるニューラルネットワーク、並びに積演算方法
CN201387450Y (zh) * 2009-01-13 2010-01-20 哈尔滨理工大学 数模混合谐波分析仪
CN102158715B (zh) * 2010-02-12 2013-01-30 瑞昱半导体股份有限公司 饱和度调整装置及其方法
CN102520906A (zh) * 2011-12-13 2012-06-27 中国科学院自动化研究所 支持定浮点可重构的向量长度可配置的向量点积累加网络
CN103188487B (zh) * 2011-12-28 2016-11-23 联芯科技有限公司 视频图像中的卷积方法及视频图像处理系统
CN103838139B (zh) * 2014-02-28 2017-05-03 北京联合大学 具有积分饱和预处理功能的pid控制方法
CN106484362B (zh) * 2015-10-08 2020-06-12 上海兆芯集成电路有限公司 利用使用者指定二维定点算术运算的装置

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11150873B2 (en) 2019-05-30 2021-10-19 Kabushiki Kaisha Toshiba Arithmetic apparatus

Also Published As

Publication number Publication date
CN108345935A (zh) 2018-07-31
US20180211154A1 (en) 2018-07-26
US10853721B2 (en) 2020-12-01
JP2018120433A (ja) 2018-08-02

Similar Documents

Publication Publication Date Title
JP6556768B2 (ja) 積和演算器、ネットワークユニットおよびネットワーク装置
CN111448573B (zh) 用于混合信号计算的系统和方法
CN111837145B (zh) 用于将矩阵计算映射到矩阵乘法加速器的系统和方法
JP4620943B2 (ja) 積和演算回路及びその方法
CN112445456A (zh) 使用乘法器-累加器电路的系统、计算装置和方法
JP7283477B2 (ja) 積和演算装置、積和演算回路、積和演算システム、及び積和演算方法
CN107766031B (zh) 分段式除法器、分段式除法运算方法、以及电子设备
US20230359571A1 (en) System and methods for mixed-signal computing
CN108990427B (zh) 模数转换电路和方法
JP2020013398A (ja) 演算装置
CN114008625A (zh) 算术设备以及乘积和算术系统
Xiong et al. Hardware implementation of an improved stochastic computing based deep neural network using short sequence length
CN102378960B (zh) 半导体集成电路和指数计算方法
US11669303B1 (en) Multiply-accumulate circuit
CN114579079A (zh) 用于常数乘法的集成电路、操作其的方法和包括其的装置
JP7315485B2 (ja) 入力装置、入力装置の制御方法、及びコンピュータに入力装置の制御方法を実行させるプログラムが記録された記録媒体
CN110889080B (zh) 乘积累加运算装置、乘积累加运算方法和系统
JP7206531B2 (ja) メモリデバイスおよびその動作方法
CN115906735A (zh) 基于模拟信号的多比特数存算一体电路、芯片及计算装置
KR102574426B1 (ko) 기계학습 알고리즘을 처리하는 mac 연산 장치 및 방법
Hwang et al. On Expressive Power of Quantized Neural Networks under Fixed-Point Arithmetic
Gerasta et al. 12-Bit Pipeline ADC Implemented in 0.09-um Digital CMOS Technology for Powerline Alliance
Petrellis et al. Analogue current quantizer architectures for implementing integer division-like functions
KR20220154346A (ko) 복제 비트-셀 기반의 mac 연산 장치 및 방법
CN115841092A (zh) 一种用于芯片电路仿真的步长增益自适应调整方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180913

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20190523

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20190611

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190710

R151 Written notification of patent or utility model registration

Ref document number: 6556768

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151