JP2023076026A - 半導体装置 - Google Patents

半導体装置 Download PDF

Info

Publication number
JP2023076026A
JP2023076026A JP2021189169A JP2021189169A JP2023076026A JP 2023076026 A JP2023076026 A JP 2023076026A JP 2021189169 A JP2021189169 A JP 2021189169A JP 2021189169 A JP2021189169 A JP 2021189169A JP 2023076026 A JP2023076026 A JP 2023076026A
Authority
JP
Japan
Prior art keywords
buffer
output data
shift register
data
semiconductor device
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2021189169A
Other languages
English (en)
Inventor
和昭 寺島
Kazuaki Terajima
淳 中村
Atsushi Nakamura
学 小池
Manabu Koike
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.)
Renesas Electronics Corp
Original Assignee
Renesas Electronics 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 Renesas Electronics Corp filed Critical Renesas Electronics Corp
Priority to JP2021189169A priority Critical patent/JP2023076026A/ja
Priority to US17/954,831 priority patent/US20230162013A1/en
Priority to KR1020220147684A priority patent/KR20230075349A/ko
Priority to CN202211400650.6A priority patent/CN116151321A/zh
Priority to DE102022212269.0A priority patent/DE102022212269A1/de
Publication of JP2023076026A publication Critical patent/JP2023076026A/ja
Pending legal-status Critical Current

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
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/01Methods or arrangements for data conversion without changing the order or content of the data handled for shifting, e.g. justifying, scaling, normalising
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • G06F7/533Reduction of the number of iteration steps or stages, e.g. using the Booth algorithm, log-sum, odd-even
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/544Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
    • G06F7/5443Sum of products
    • 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
    • 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/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/21Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
    • G11C11/34Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
    • G11C11/40Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
    • G11C11/41Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming static cells with positive feedback, i.e. cells not needing refreshing or charge regeneration, e.g. bistable multivibrator or Schmitt trigger
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/38Indexing scheme relating to groups G06F7/38 - G06F7/575
    • G06F2207/48Indexing scheme relating to groups G06F7/48 - G06F7/575
    • G06F2207/4802Special implementations
    • G06F2207/4818Threshold devices
    • G06F2207/4824Neural networks

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • Biophysics (AREA)
  • Biomedical Technology (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Computing Systems (AREA)
  • Software Systems (AREA)
  • Computational Linguistics (AREA)
  • Mathematical Physics (AREA)
  • Molecular Biology (AREA)
  • Evolutionary Computation (AREA)
  • Artificial Intelligence (AREA)
  • General Health & Medical Sciences (AREA)
  • Data Mining & Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Pure & Applied Mathematics (AREA)
  • Neurology (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Computer Hardware Design (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

【課題】ニューラルネットワークの処理において量子化誤差を低減することができる半導体装置を提供する。【解決手段】一実施の形態の半導体装置は、ニューラルネットワークの処理を実行するものである。第1のシフトレジスタは、第1のバッファから順次入力された複数の出力データをビットシフトによって量子化することで、複数の量子化入力データを順次生成する。積和演算器は、複数のパラメータと、第1のシフトレジスタからの複数の量子化入力データとを積和演算することで演算データを生成する。第2のシフトレジスタは、積和演算器からの演算データをビットシフトによって逆量子化することで出力データを生成し、当該出力データを第1のバッファに格納する。【選択図】図2

Description

本発明は、半導体装置に関し、例えば、ニューラルネットワークの処理を実行する半導体装置に関する。
特許文献1(特開2019-40403号公報)には、CNN(Convolutional Neural Network)における畳み込み演算の演算量を低減するため、統合係数テーブルを用いて演算を行う畳み込み演算処理回路を有する画像認識装置が示される。統合係数テーブルは、N×Nのデータを保持し、N×Nのデータのそれぞれは、係数およびチャネル番号で構成される。畳み込み演算処理回路は、入力画像と係数とのN×Nの積演算を並列に実行する積演算回路と、当該積演算結果に対してチャネル番号毎の累積加算演算を行い、その加算演算結果をチャネル番号毎の出力レジスタに格納するチャネル選択回路と、を有する。
特開2019-40403号公報
CNN等のニューラルネットワークでは、学習によって、例えば32ビット等の浮動小数点数のパラメータ、具体的には、重みパラメータおよびバイアスパラメータが得られる。ただし、推論時に、浮動小数点数のパラメータを用いて積和演算を行うと、積和演算器(MAC(Multiply ACcumulate operation)回路と呼ぶ)の回路面積、処理負荷、消費電力、実行時間は、増加し得る。さらに、パラメータおよび演算結果の一時バッファからのリードまたはライトに伴い、必要とされるメモリ容量およびメモリ帯域幅は増加し、消費電力も増加し得る。
そこで、近年では、入力データや、32ビット等の浮動小数点数のパラメータを、8ビット以下の整数に量子化した上で、推論を行う方式が着目されている。この場合、MAC回路は少ないビット数での整数演算を行えばよいため、MAC回路の回路面積、処理負荷、消費電力、実行時間を減らすことが可能になる。ただし、量子化を用いる場合、量子化の粒度によって量子化誤差が変化し、それに応じて、推論の精度も変化し得る。このため、量子化誤差を低減するための効率的な仕組みが求められる。また、より少ないハードウエアのリソースと時間で推論を行わせるためには、メモリ帯域幅を減らすことが求められる。
その他の課題と新規な特徴は、本明細書の記載および添付図面から明らかになるであろう。
そこで、一実施の形態の半導体装置は、ニューラルネットワークの処理を実行し、第1のバッファと、第1のシフトレジスタと、積和演算器と、第2のシフトレジスタと、を備える。第1のバッファは、出力データを保持する。第1のシフトレジスタは、第1のバッファから順次入力された複数の出力データをビットシフトによって量子化することで、複数の量子化入力データを順次生成する。積和演算器は、複数のパラメータと、第1のシフトレジスタからの複数の量子化入力データとを積和演算することで演算データを生成する。第2のシフトレジスタは、積和演算器からの演算データをビットシフトによって逆量子化することで出力データを生成し、当該出力データを第1のバッファに格納する。
一実施の形態の半導体装置を用いることで、ニューラルネットワークにおける量子化誤差を効率的に低減するための仕組みを提供できる。
図1は、実施の形態1による半導体装置において、主要部の構成例を示す概略図である。 図2は、図1におけるニューラルネットワークエンジン周りの詳細な構成例を示す回路ブロック図である。 図3は、図2に示したニューラルネットワークエンジンによって処理されるニューラルネットワークの構成例を示す概略図である。 図4は、実施の形態2による半導体装置において、ニューラルネットワークエンジン周りの詳細な構成例を示す回路ブロック図である。 図5は、図4におけるバッファコントローラの動作例を説明する模式図である。 図6は、実施の形態3による半導体装置において、主要部の構成例を示す概略図である。 図7は、図6におけるニューラルネットワークエンジン周りの詳細な構成例を示す回路ブロック図である。 図8は、実施の形態4による半導体装置において、ニューラルネットワークエンジン周りの詳細な構成例を示す回路ブロック図である。
以下の実施の形態においては便宜上その必要があるときは、複数のセクションまたは実施の形態に分割して説明するが、特に明示した場合を除き、それらはお互いに無関係なものではなく、一方は他方の一部または全部の変形例、詳細、補足説明等の関係にある。また、以下の実施の形態において、要素の数等(個数、数値、量、範囲等を含む)に言及する場合、特に明示した場合および原理的に明らかに特定の数に限定される場合等を除き、その特定の数に限定されるものではなく、特定の数以上でも以下でもよい。さらに、以下の実施の形態において、その構成要素(要素ステップ等も含む)は、特に明示した場合および原理的に明らかに必須であると考えられる場合等を除き、必ずしも必須のものではないことは言うまでもない。同様に、以下の実施の形態において、構成要素等の形状、位置関係等に言及するときは、特に明示した場合および原理的に明らかにそうでないと考えられる場合等を除き、実質的にその形状等に近似または類似するもの等を含むものとする。このことは、上記数値および範囲についても同様である。
以下、実施の形態を図面に基づいて詳細に説明する。なお、実施の形態を説明するための全図において、同一の機能を有する部材には同一の符号を付し、その繰り返しの説明は省略する。また、以下の実施の形態では、特に必要なとき以外は同一または同様な部分の説明を原則として繰り返さない。
(実施の形態1)
<半導体装置の概略>
図1は、実施の形態1による半導体装置において、主要部の構成例を示す概略図である。図1に示す半導体装置10は、例えば、一つの半導体チップで構成されるSoC(System on Chip)等である。当該半導体装置10は、代表的には、車両のECU(Electronic Control Unit)等に搭載され、ADAS(Advanced Driver Assistance System)の機能を提供する。
図1に示す半導体装置10は、ニューラルネットワークエンジン15と、CPU(Central Processing Unit)等のプロセッサ17と、単数または複数のメモリMEM1,MEM2と、システムバス16とを有する。ニューラルネットワークエンジン15は、CNNを代表とするニューラルネットワークの処理を実行する。メモリMEM1はDRAM(Dynamic Random Access Memory)等であり、メモリMEM2はキャッシュ用のSRAM(Static Random Access Memory)等である。システムバス16は、ニューラルネットワークエンジン15、メモリMEM1,MEM2およびプロセッサ17を互いに接続する。
メモリMEM1は、例えば画素値からなる複数のデータDTと、複数のパラメータPRとを保持する。パラメータPRには、重みパラメータWPと、バイアスパラメータBPとが含まれる。メモリMEM2は、ニューラルネットワークエンジン15の高速キャッシュメモリとして用いられる。例えば、メモリMEM1内の複数のデータDTは、予めメモリMEM2にコピーされたのち、ニューラルネットワークエンジン15で用いられる。
ニューラルネットワークエンジン15は、複数のDMA(Direct Memory Access)コントローラDMAC1,DMAC2と、MACユニット20と、バッファBUFiと、を備える。MACユニット20は、複数のMAC回路21、すなわち複数の積和演算器を備える。DMAコントローラDMAC1は、例えば、メモリMEM1と、MACユニット20内の複数のMAC回路21との間のシステムバス16を介したデータ転送を制御する。DMAコントローラDMAC2は、メモリMEM2と、MACユニット20内の複数のMAC回路21との間のデータ転送を制御する。
例えば、DMAコントローラDMAC1は、メモリMEM1から複数の重みパラメータWPを順次読み出す。一方、DMAコントローラDMAC2は、メモリMEM2から、予めコピーされた複数のデータDTを順次読み出す。MACユニット20内の複数のMAC回路21のそれぞれは、DMAコントローラDMAC1からの複数の重みパラメータWPと、DMAコントローラDMAC2からの複数のデータDTとを積和演算する。また、詳細は後述するが、複数のMAC回路21のそれぞれは、積和演算結果を、適宜、バッファBUFiに格納する。
<ニューラルネットワークエンジンの詳細>
図2は、図1におけるニューラルネットワークエンジン周りの詳細な構成例を示す回路ブロック図である。図2に示すニューラルネットワークエンジン15は、図1で述べたように、MACユニット20と、バッファBUFiと、2個のDMAコントローラDMAC1,DMAC2と、を備える。図2におけるMACユニット20では、図1で述べた複数のMAC回路21の中の1個のMAC回路21を代表として、当該MAC回路21周りの詳細な構成例が示される。MACユニット20は、MAC回路21に加えて、マルチプレクサMUX1と、前段シフトレジスタSREG1と、後段シフトレジスタSREG2と、デマルチプレクサDMUX1と、を備える。
バッファBUFiは、例えば、32ビット幅×N個(Nは2以上の整数)のフリッププロップで構成される。バッファBUFiの入力側にはデマルチプレクサDMUX2が設けられ、バッファBUFiの出力側にはマルチプレクサMUX2が設けられる。バッファBUFiは、後段シフトレジスタSREG2から2個のデマルチプレクサDMUX1,DMUX2を介して出力される出力データDToを保持する。当該出力データDToのビット幅は、例えば、32ビットである。
デマルチプレクサDMUX1は、後段シフトレジスタSREG2からの出力データDToを、DMAコントローラDMAC2を介してメモリMEM2に格納するか、デマルチプレクサDMUX2を介してバッファBUFiに格納するかを選択する。デマルチプレクサDMUX1は、バッファBUFiが選択された場合には、32ビット幅の出力データDToを出力し、メモリMEM2が選択された場合には、例えば、32ビット中の下位8ビット等の出力データDToを出力する。この際に、出力データDToにおける残りの24ビットは、後述する前段シフトレジスタSREG1および後段シフトレジスタSREG2を用いた量子化/逆量子化によって、ゼロとなるように制御される。
デマルチプレクサDMUX2は、デマルチプレクサDMUX1からの32ビット幅の出力データDToを、32ビット幅×N個のバッファBUFi内のどの位置に格納するかを選択する。より詳細には、バッファBUFiは、図1に示したように、複数のMAC回路21に対して共通に設けられ、複数のMAC回路21からの出力データDToを、デマルチプレクサDMUX2によって選択された位置に格納する。
前段シフトレジスタSREG1は、バッファBUFiから2個のマルチプレクサMUX2,MUX1を介して順次入力された複数の出力データDToをビットシフトによって量子化することで、複数の量子化入力データDTiを順次生成する。詳細には、まず、マルチプレクサMUX2は、32ビット幅×N個のバッファBUFi内のいずれか1個の位置に保持される出力データDToを選択し、例えば、当該出力データDToの下位8ビット等を、中間データDTmとしてマルチプレクサMUX1へ出力する。
また、マルチプレクサMUX2は、このような処理を、バッファBUFi内の位置を変えながら時系列的に順次行うことで、複数の出力データDToと等価な複数の中間データDTmを順次出力する。マルチプレクサMUX1は、メモリMEM2からDMAコントローラDMAC2を介して読み出された8ビット幅のデータDTか、バッファBUFiからマルチプレクサMUX2を介して読み出された8ビット幅の中間データDTmかを選択し、選択したデータを前段シフトレジスタSREG1へ出力する。
前段シフトレジスタSREG1は、例えば、8ビット幅のレジスタである。前段シフトレジスタSREG1は、マルチプレクサMUX1からのデータを、2(mはゼロ以上の整数)である量子化係数Qiを用いて量子化することで、8ビットの整数(INT8)形式である量子化入力データDTiを生成する。すなわち、前段シフトレジスタSREG1は、入力されたデータに対してmビットの左シフトを行うことで、入力されたデータに量子化係数Qiを乗算する。8ビットによって、10進数で0~255が表現できるとすると、量子化係数Qi、すなわちシフト量“m”は、例えば、量子化入力データDTiが255に近い値となるように定められる。
MAC回路21は、メモリMEM1からDMAコントローラDMAC1を介して順次読み出された複数の重みパラメータWPと、前段シフトレジスタSREG1からの複数の量子化入力データDTiとを積和演算することで演算データDTcを生成する。学習によって得られる重みパラメータWPは、通常、32ビットの浮動小数点数(FP32)で表現される1よりも小さい値である。このようなFP32形式の重みパラメータWPは、予め、2(nはゼロ以上の整数)である量子化係数Qwを用いてINT8形式に量子化された上で、メモリMEM1に格納される。
MAC回路21は、INT8形式である2個の入力データを乗算する乗算器と、当該乗算器の乗算結果を累積加算する累積加算器とを備える。MAC回路21によって生成される演算データDTcは、例えば16ビット以上の整数、ここでは、32ビットの整数(INT32)形式である。
なお、MAC回路21は、より詳細には、累積加算器による累積加算結果に対してバイアスパラメータBPを加算する加算器と、その加算結果に対して活性化関数を演算する演算器とを備える。そして、MAC回路21は、バイアスパラメータBPの加算と活性化関数の演算とを行った結果を、演算データDTcとして出力する。以降では、記載の簡略化のため、当該バイアスパラメータBPの加算と活性化関数の演算とを無視して説明を行う。
後段シフトレジスタSREG2は、例えば、32ビット幅のレジスタである。後段シフトレジスタSREG2は、MAC回路21からの演算データDTcをビットシフトによって逆量子化することで出力データDToを生成する。そして、後段シフトレジスタSREG2は、当該出力データDToを2個のデマルチプレクサDMUX1,DMUX2を介してバッファBUFiに格納する。
詳細には、後段シフトレジスタSREG2は、演算データDTcに逆量子化係数QRを乗算することで、INT32形式である出力データDToを生成する。逆量子化係数QRは、前述した量子化係数Qi(=2),Qw(=2)を用いて、例えば、1/(Qi×Qw)、すなわち、2-(m+n)である。この場合、後段シフトレジスタSREG2は、演算データDTcに対して、k(=m+n)ビットの右シフトを行うことで、演算データDTcを逆量子化する。
なお、シフト量“k”は、必ずしも“m+n”である必要はない。この場合、出力データDToは、本来の値に対して2倍(iは正または負の整数)だけ異なる値になり得る。ただし、この場合、ニューラルネットワークにおける最終的な結果が得られる前のいずれかの段階で、当該2倍のズレは、後段シフトレジスタSREG2での右シフトまたは左シフトによって補正され得る。
また、デマルチプレクサDMUX1,DMUX2は、1個の入力を複数の出力にそれぞれ接続する複数のスイッチで構成され得る。同様に、マルチプレクサMUX1,MUX2は、複数の入力をそれぞれ1個の出力に接続する複数のスイッチで構成され得る。デマルチプレクサDMUX1,DMUX2を構成する複数のスイッチのオン/オフは、選択信号SDX1,SDX2によって制御される。マルチプレクサMUX1,MUX2を構成する複数のスイッチのオン/オフは、選択信号SMX1,SMX2によって制御される。
選択信号SDX1,SDX2,SMX1,SMX2は、例えば、ニューラルネットワークエンジン15を制御するファームウェア等によって生成される。当該ファームウェアは、ユーザによって予め設定またはプログラミングされるニューラルネットワークの構造に基づいて、図示しないニューラルネットワークエンジン15の制御回路を介して選択信号SDX1,SDX2,SMX1,SMX2を適宜生成する。
前段シフトレジスタSREG1のシフト量“m”は、シフト信号SF1によって制御され、後段シフトレジスタSREG2のシフト量“k”は、シフト信号SF2によって制御される。シフト信号SF1,SF2も、ファームウェアおよび制御回路によって生成される。この際に、ユーザは、シフト量“m”,“k”を任意に定めることが可能である。
図3は、図2に示したニューラルネットワークエンジンによって処理されるニューラルネットワークの構成例を示す概略図である。図3に示すニューラルネットワークは、縦続接続される3層の畳み込み層25[1],25[2],25[3]と、その後段に接続されるプーリング層26とを備える。畳み込み層25[1]は、例えば、メモリMEM2に保持される入力マップIMのデータDTを入力として畳み込み演算を行うことで、特徴マップFM[1]のデータを生成する。
畳み込み層25[2]は、畳み込み層25[1]で得られる特徴マップFM[1]のデータを入力として畳み込み演算を行うことで、特徴マップFM[2]のデータを生成する。同様に、畳み込み層25[3]は、畳み込み層25[2]で得られる特徴マップFM[2]のデータを入力として畳み込み演算を行うことで、特徴マップFM[3]のデータを生成する。プーリング層26は、畳み込み層25[3]で得られる特徴マップFM[3]のデータを入力としてプーリング処理を行う。
このようなニューラルネットワークを対象として、図2のニューラルネットワークエンジン15は、例えば、次のような処理を行う。まず、事前準備として、学習によって得られるFP32形式の重みパラメータWPは、INT8形式に量子化された上でメモリMEM1に格納される。具体的には、INT8形式の重みパラメータWPは、FP32形式の重みパラメータWPに量子化係数Qw(=2)を乗算したのち整数に丸めることで作成される。
畳み込み層25[1]において、MAC回路21は、メモリMEM1から順次読み出されたINT8形式の複数の重みパラメータWP[1]を入力する。また、MAC回路21は、メモリMEM2から順次読み出されたINT8形式の複数のデータDTを、マルチプレクサMUX1および前段シフトレジスタSREG1を介して入力する。この際に、前段シフトレジスタSREG1は、複数のデータDTのそれぞれに対して量子化係数Qi[1](=2m1)(m1は0以上の整数)を用いた量子化、すなわち左シフトを行うことで、複数の量子化入力データDTi[1]を生成する。なお、メモリMEM2からの複数のデータDTは、入力マップIMを構成するデータである。
MAC回路21は、メモリMEM1からの複数の重みパラメータWP[1]と、前段シフトレジスタSREG1からの複数の量子化入力データDTi[1]とを順次積和演算すること等で、INT32形式の演算データDTc[1]を出力する。後段シフトレジスタSREG2は、演算データDTc[1]に逆量子化係数QR[1]を乗算することで、出力データDTo[1]を生成する。逆量子化係数QR[1]は、例えば、1/(Qw・Qi[1])である。この場合、後段シフトレジスタSREG2は、右シフトを行う。
このようにして得られる出力データDTo[1]は、特徴マップFM[1]を構成する複数のデータの中の1個となる。後段シフトレジスタSREG2は、当該出力データDTo[1]をデマルチプレクサDMUX1,DMUX2を介してバッファBUFiの所定の位置に格納する。その後、MAC回路21は、他の複数のデータDTを対象に同様の処理を行うことで、特徴マップFM[1]を構成する複数のデータの中の他の1個を生成する。当該他の1個のデータも、バッファBUFiの所定の位置に格納される。また、複数のMAC回路21が並行して同様の処理を行うことで、バッファBUFiには、特徴マップFM[1]を構成する全てのデータが格納される。
畳み込み層25[2]において、MAC回路21は、メモリMEM1から読み出されたINT8形式の複数の重みパラメータWP[2]を入力する。また、MAC回路21は、バッファBUFiからマルチプレクサMUX2を介して順次読み出された複数の中間データDTmを、マルチプレクサMUX1および前段シフトレジスタSREG1を介して入力する。この際に、前段シフトレジスタSREG1は、複数の中間データDTmのそれぞれに対して量子化係数Qi[2](=2m2)(m2は0以上の整数)を用いた量子化、すなわち左シフトを行うことで、複数の量子化入力データDTi[2]を生成する。バッファBUFiからの複数の中間データDTmは、特徴マップFM[1]を構成するデータである。
このように、図2の構成例では、バッファBUFiを設けることで、特徴マップFM[1]を構成するデータを、メモリMEM2ではなく、バッファBUFiに格納することができる。これにより、メモリMEM2へのアクセス頻度が下がり、必要なメモリ帯域幅を削減することが可能になる。
MAC回路21は、メモリMEM1からの複数の重みパラメータWP[2]と、前段シフトレジスタSREG1からの複数の量子化入力データDTi[2]とを順次積和演算すること等で、INT32形式の演算データDTc[2]を出力する。後段シフトレジスタSREG2は、演算データDTc[2]に逆量子化係数QR[2]を乗算することで、出力データDTo[2]を生成する。逆量子化係数QR[2]は、例えば、1/(Qw・Qi[2])である。この場合、後段シフトレジスタSREG2は、右シフトを行う。
このようにして得られる出力データDTo[2]は、特徴マップFM[2]を構成する複数のデータの中の1個となる。後段シフトレジスタSREG2は、当該出力データDTo[2]をデマルチプレクサDMUX1,DMUX2を介してバッファBUFiに格納する。そして、畳み込み層25[1]の場合と同様にして、バッファBUFiには、特徴マップFM[2]を構成する全てのデータが格納される。
畳み込み層25[3]においても、畳み込み層25[2]の場合と同様の処理が行われる。この際に、前段シフトレジスタSREG1では量子化係数Qi[3](=2m3)が用いられ、後段シフトレジスタSREG2では、逆量子化係数QR[3]、例えば、1/(Qw・Qi[3])が用いられる。ただし、畳み込み層25[3]では、畳み込み層25[1],25[2]の場合と異なり、特徴マップFM[3]を構成する出力データDTo[3]は、デマルチプレクサDMUX1およびDMAコントローラDMAC2を介してメモリMEM2に格納される。その後、例えば、図1に示したプロセッサ17は、メモリMEM2に格納される特徴マップFM[3]に対して、プーリング処理を行う。
このような動作において、出力データDToの値は、通常、畳み込み層25[1],25[2],25[3]を経る毎に小さくなっていく。この場合、出力データDToの値が小さくなった分だけ、前段シフトレジスタSREG1の量子化係数Qiを大きくすることが可能になる。ここで、量子化誤差を低減するためには、量子化入力データDTiがINT8形式の整数範囲に収まるように、量子化係数Qiを可能な限り大きい値に定めることが望ましい。このため、例えば、量子化係数Qi[2](=2m2)および量子化係数Qi[3](=2m3)において、m2<m3となるように定めると、量子化誤差を低減できる。
ただし、量子化誤差の低減方法は、必ずしもm2<m3となるように定める方法に限らず、他の方法であってもよい。いずれの方法を用いた場合でも、前段シフトレジスタSREG1のシフト量“m”および後段シフトレジスタSREG2のシフト量“k”を、ユーザによる設定またはプログラミングに応じて適切に定めることで、対応することが可能である。また、逆量子化係数QRも、1/(Qw・Qi)に限らず、適宜変更可能である。この場合、前述したように、2倍のズレが生じ得るが、当該2倍のズレは、最終的な結果、すなわち特徴マップFM[3]を構成する出力データDTo[3]を対象に、後段シフトレジスタSREG2によって補正されればよい。
<実施の形態1の主要な効果>
以上、実施の形態1による半導体装置では、前段シフトレジスタSREG1および後段シフトレジスタSREG2を設けることで、代表的には、ニューラルネットワークにおける量子化誤差を効率的に低減するための仕組みを提供できる。その結果、ニューラルネットワークを用いた推論の精度を十分に維持することが可能になる。さらに、バッファBUFiを設けることで、メモリ帯域幅を減らすことができる。そして、量子化による処理負荷の低減や、必要なメモリ帯域幅の削減等によって、推論に要する時間を短縮することが可能になる。
なお、比較例として、前段シフトレジスタSREG1および後段シフトレジスタSREG2と、バッファBUFiとが設けらない場合を想定する。この場合、例えば、畳み込み層25[1],25[2]で得られる特徴マップFM[1],FM[2]のデータをメモリMEM2に格納する必要性が生じる。さらに、プロセッサ17を用いた量子化/逆量子化の処理等が別途必要とされる。その結果、メモリ帯域幅が増加し、また、プロセッサ17の処理が必要とされるため、推論に要する時間も増加し得る。
(実施の形態2)
<ニューラルネットワークエンジンの詳細>
図4は、実施の形態2による半導体装置において、ニューラルネットワークエンジン周りの詳細な構成例を示す回路ブロック図である。図5は、図4におけるバッファコントローラの動作例を説明する模式図である。図4に示すニューラルネットワークエンジン15aは、図2に示した構成例と異なり、バッファBUFiの入力側にライト用のバッファコントローラ30aを備え、バッファBUFiの出力側にリード用のバッファコントローラ30bを備える。
各バッファコントローラ30a,30bは、後段シフトレジスタSREG2からデマルチプレクサDMUX1を介して出力される出力データDToのビット幅を可変制御する。具体的には、図5に示されるように、各バッファコントローラ30a,30bは、出力データDToのビット幅を、モード信号MDに基づいて、例えば、32ビット、16ビット、8ビット、4ビットといった2ビットの中のいずれか一つに制御する。
各バッファコントローラ30a,30bは、出力データDToのビット幅が32ビットに制御された場合、物理的に32ビット幅で構成されるバッファBUFiを、32ビット幅のバッファとして、バッファBUFiへのライト/リードを制御する。一方、各バッファコントローラ30a,30bは、出力データDToのビット幅が16ビットに制御された場合、32ビット幅で構成されるバッファBUFiを16ビット幅×2個のバッファとみなして、ライト/リードを制御する。同様に、各バッファコントローラ30a,30bは、出力データDToのビット幅が8ビットまたは4ビットに制御された場合、バッファBUFiを8ビット幅×4個のバッファまたは4ビット幅×8個のバッファとみなす。
例えば、出力データDToのビット幅が8ビットに制御された場合、各バッファコントローラ30a,30bは、32ビット幅で構成されるバッファBUFiに対して、MAC回路21から後段シフトレジスタSREG2等を介して入力される4回分の出力データDTo1~DTo4を格納できる。これにより、バッファBUFiを効率的に使用でき、バッファBUFiへのライト/リードに伴う消費電力を減らすことが可能になる。
特に、図3に示したようなニューラルネットワークの場合、畳み込み層25[1]~25[3]を経る毎に、出力データDToの値が小さくなるように制御することができる。この場合、畳み込み層25[1]~25[3]を経る毎に、出力データDToのビット幅を小さくすることが可能である。なお、ライト用のバッファコントローラ30aは、例えば、複数のデマルチプレクサを組み合わせること等で構成され得る。同様に、リード用のバッファコントローラ30bは、例えば、複数のマルチプレクサを組み合わせること等で構成され得る。
<実施の形態2の主要な効果>
以上、実施の形態2による半導体装置を用いることで、実施の形態1で述べた各種効果と同様の効果が得られる。これに加えて、バッファコントローラ30a,30bを設けることで、バッファBUFiを効率的に使用することが可能になる。
(実施の形態3)
<半導体装置の概略>
図6は、実施の形態3による半導体装置において、主要部の構成例を示す概略図である。図6に示す半導体装置10bは、図1と同様の構成を備えることに加えて、ニューラルネットワークエンジン15b内にバッファBUFcを備える。バッファBUFcは、フリップフロップ等で構成されるバッファBUFiと異なり、例えばSRAM等で構成される。例えば、バッファBUFiの容量は、数10kバイト以下であり、バッファBUFcの容量は、数Mバイト以上である。
<ニューラルネットワークエンジンの詳細>
図7は、図6におけるニューラルネットワークエンジン周りの詳細な構成例を示す回路ブロック図である。図7に示すニューラルネットワークエンジン15bは、図2の構成例と比較して、次の3点が異なっている。1点目の相違点として、バッファBUFiに加えてバッファBUFcが追加されている。バッファBUFcは、後段シフトレジスタSREG2のビット幅と同じビット幅で構成され、例えば、32ビット幅でアクセスされる。
2点目の相違点として、バッファBUFiは、後段シフトレジスタSREG2のビット幅よりも少ないビット幅で構成され、例えば、16ビット幅で構成される。3点目の相違点として、MACユニット20bは、バッファBUFcの追加に伴い、図2の場合とは異なるデマルチプレクサDMUX1bおよびマルチプレクサMUX1bを備える。デマルチプレクサDMUX1bは、後段シフトレジスタSREG2からの出力データDToを、メモリMEM2、バッファBUFiまたはバッファBUFcのいずれに格納するかを、選択信号SDX1bに基づいて選択する。バッファBUFiが選択された場合、バッファBUFiには、例えば、32ビットの出力データDToの中の下位16ビット等が格納される。
マルチプレクサMUX1bは、メモリMEM2に保持されるデータDT、バッファBUFiに保持される出力データDTo、またはバッファBUFcに保持される出力データDToのいずれかを、選択信号SMX1bに基づいて選択して前段シフトレジスタSREG1へ出力する。バッファBUFiに保持される出力データDToは、図2の場合と同様に中間データDTm1となる。同様に、バッファBUFcに保持される出力データDToは、中間データDTm2となる。データDT、中間データDTm1,DTm2は、共に、8ビット幅等で構成される。
以上のような構成において、同一面積での容量は、バッファBUFiよりもバッファBUFcの方が大きい。一方、アクセス速度は、バッファBUFiの方がバッファBUFcよりも速い。ここで、出力データDToのビット幅が大きい場合、必要とされるバッファの容量も大きくなる。ただし、バッファを全てフリップフロップで構成すると、高速化を図れるが、面積の増大が懸念される。そこで、ここでは、2個のバッファBUFi,BUFcを設け、2個のバッファBUFi,BUFcを、出力データDToのビット幅、言い換えれば、有効ビット幅に応じて切り替える。
出力データDToのビット幅が16ビットよりも大きい場合、出力データDToの格納先としてバッファBUFcが選択される。一方、出力データDToのビット幅が16ビット以下の場合、出力データDToの格納先としてバッファBUFiが選択される。実施の形態2で述べたように、出力データDToのビット幅は、畳み込み層を経る毎に小さくなってもよい。この場合、畳み込み層の初段側では、バッファBUFcを用い、畳み込み層の最終段側では、バッファBUFiを用いることが可能である。
<実施の形態3の主要な効果>
以上、実施の形態3による半導体装置を用いることで、実施の形態1で述べた各種効果と同様の効果が得られる。これに加えて、2個のバッファBUFi,BUFcを設けることで、面積と速度のバランスを向上させることが可能になる。
(実施の形態4)
<ニューラルネットワークエンジンの詳細>
図8は、実施の形態4による半導体装置において、ニューラルネットワークエンジン周りの詳細な構成例を示す回路ブロック図である。図8に示すニューラルネットワークエンジン15cは、図2の構成例と比較して、次の2点が異なっている。1点目の相違点として、バッファBUFiに加えてバッファBUFi2が追加されている。バッファBUFi2は、例えば、8ビット幅×M個のフリップフロップで構成される。バッファBUFi2は、MAC回路21の一方の入力から分岐することで得られるパラメータ、例えば、重みパラメータWPを保持する。
2点目の相違点として、MACユニット20cは、バッファBUFi2の追加に伴い、更に、マルチプレクサMUX3を備える。マルチプレクサMUX3は、メモリMEM1に保持される重みパラメータWP、またはバッファBUFi2に保持される重みパラメータWPxのいずれかを、選択信号SMX3に基づいて選択してMAC回路21へ出力する。
一つの畳み込み層に対するニューラルネットワークエンジン15cの処理では、複数の重みパラメータWPが繰り返し用いられる。例えば、図3に示した特徴マップFM[1]内の一つのデータを得る際に、ある複数の重みパラメータWPが用いられ、その後、特徴マップFM[1]内の他の一つのデータを得る際に、同じ値を有する複数の重みパラメータWPが用いられる。このため、複数の重みパラメータWPを2回目以降に使用する際に、複数の重みパラメータWPをバッファBUFi2から読み出すことで、メモリMEM1へのアクセス頻度を下げることができる。
<実施の形態4の主要な効果>
以上、実施の形態4による半導体装置を用いることで、実施の形態1で述べた各種効果と同様の効果が得られる。これに加えて、バッファBUFi2を設けることで、メモリMEM1へのアクセス頻度を下げ、必要なメモリ帯域幅を削減することが可能になる。
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は前記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。
10,10b 半導体装置
15,15a,15b,15c ニューラルネットワークエンジン
16 システムバス
17 プロセッサ
20,20b,20c MACユニット
21 MAC回路
25[1],25[2],25[3] 畳み込み層
26 プーリング層
30a,30b バッファコントローラ

Claims (12)

  1. ニューラルネットワークの処理を実行する半導体装置であって、
    出力データを保持する第1のバッファと、
    前記第1のバッファから順次入力された複数の前記出力データをビットシフトによって量子化することで、複数の量子化入力データを順次生成する第1のシフトレジスタと、
    複数のパラメータと、前記第1のシフトレジスタからの前記複数の量子化入力データとを積和演算することで演算データを生成する積和演算器と、
    前記積和演算器からの前記演算データをビットシフトによって逆量子化することで前記出力データを生成し、前記出力データを前記第1のバッファに格納する第2のシフトレジスタと、
    を備える、
    半導体装置。
  2. 前記複数のパラメータを保持するメモリを更に備え、
    前記複数のパラメータは、予め量子化された上で前記メモリに格納されており、
    前記複数の量子化入力データおよび前記複数のパラメータのそれぞれは、8ビット以下の整数である、
    請求項1記載の半導体装置。
  3. 前記第1のバッファは、フリップフロップで構成される、
    請求項1記載の半導体装置。
  4. 前記出力データを保持し、SRAMで構成される第2のバッファと、
    前記出力データを前記第1のバッファまたは前記第2のバッファのいずれに格納するかを選択するデマルチプレクサと、
    前記第1のバッファに保持される前記出力データまたは前記第2のバッファに保持される前記出力データのいずれかを選択して前記第1のシフトレジスタへ出力するマルチプレクサと、
    を更に備える、
    請求項3記載の半導体装置。
  5. 前記第1のバッファのビット幅は、前記第2のシフトレジスタのビット幅よりも少なく、
    前記第2のバッファのビット幅は、前記第2のシフトレジスタのビット幅と同じである、
    請求項4記載の半導体装置。
  6. 前記出力データのビット幅を可変制御するバッファコントローラを更に備える、
    請求項1記載の半導体装置。
  7. 一つの半導体チップで構成される半導体装置であって、
    ニューラルネットワークの処理を実行するニューラルネットワークエンジンと、
    複数のデータと、複数のパラメータとを保持する単数または複数のメモリと、
    プロセッサと、
    前記ニューラルネットワークエンジン、前記メモリおよび前記プロセッサを互いに接続するバスと、
    を備え、
    前記ニューラルネットワークエンジンは、
    出力データを保持する第1のバッファと、
    前記第1のバッファから順次入力された複数の前記出力データをビットシフトによって量子化することで、複数の量子化入力データを順次生成する第1のシフトレジスタと、
    前記メモリからの前記複数のパラメータと、前記第1のシフトレジスタからの前記複数の量子化入力データとを積和演算することで演算データを生成する積和演算器と、
    前記積和演算器からの前記演算データをビットシフトによって逆量子化することで前記出力データを生成し、前記出力データを前記第1のバッファに格納する第2のシフトレジスタと、
    を備える、
    半導体装置。
  8. 前記複数のパラメータは、予め量子化された上で前記メモリに格納されており、
    前記複数の量子化入力データおよび前記複数のパラメータのそれぞれは、8ビット以下の整数である、
    請求項7記載の半導体装置。
  9. 前記第1のバッファは、フリップフロップで構成される、
    請求項7記載の半導体装置。
  10. 前記ニューラルネットワークエンジンは、
    前記出力データを保持し、SRAMで構成される第2のバッファと、
    前記出力データを前記第1のバッファまたは前記第2のバッファのいずれに格納するかを選択するデマルチプレクサと、
    前記第1のバッファに保持される前記出力データまたは前記第2のバッファに保持される前記出力データのいずれかを選択して前記第1のシフトレジスタへ出力するマルチプレクサと、
    を更に備える、
    請求項9記載の半導体装置。
  11. 前記第1のバッファのビット幅は、前記第2のシフトレジスタのビット幅よりも少なく、
    前記第2のバッファのビット幅は、前記第2のシフトレジスタのビット幅と同じである、
    請求項10記載の半導体装置。
  12. 前記ニューラルネットワークエンジンは、前記出力データのビット幅を可変制御するバッファコントローラを更に備える、
    請求項7記載の半導体装置。
JP2021189169A 2021-11-22 2021-11-22 半導体装置 Pending JP2023076026A (ja)

Priority Applications (5)

Application Number Priority Date Filing Date Title
JP2021189169A JP2023076026A (ja) 2021-11-22 2021-11-22 半導体装置
US17/954,831 US20230162013A1 (en) 2021-11-22 2022-09-28 Semiconductor device
KR1020220147684A KR20230075349A (ko) 2021-11-22 2022-11-08 반도체 장치
CN202211400650.6A CN116151321A (zh) 2021-11-22 2022-11-09 半导体装置
DE102022212269.0A DE102022212269A1 (de) 2021-11-22 2022-11-17 Halbleitervorrichtung

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2021189169A JP2023076026A (ja) 2021-11-22 2021-11-22 半導体装置

Publications (1)

Publication Number Publication Date
JP2023076026A true JP2023076026A (ja) 2023-06-01

Family

ID=86227376

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2021189169A Pending JP2023076026A (ja) 2021-11-22 2021-11-22 半導体装置

Country Status (5)

Country Link
US (1) US20230162013A1 (ja)
JP (1) JP2023076026A (ja)
KR (1) KR20230075349A (ja)
CN (1) CN116151321A (ja)
DE (1) DE102022212269A1 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2020075433A1 (ja) * 2018-10-10 2020-04-16 LeapMind株式会社 ニューラルネットワーク処理装置、ニューラルネットワーク処理方法、およびニューラルネットワーク処理プログラム

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019040403A (ja) 2017-08-25 2019-03-14 ルネサスエレクトロニクス株式会社 半導体装置および画像認識システム

Also Published As

Publication number Publication date
CN116151321A (zh) 2023-05-23
DE102022212269A1 (de) 2023-05-25
KR20230075349A (ko) 2023-05-31
US20230162013A1 (en) 2023-05-25

Similar Documents

Publication Publication Date Title
US9411726B2 (en) Low power computation architecture
CN110383237B (zh) 可重新配置的矩阵乘法器系统和方法
CN106951962B (zh) 用于神经网络的复合运算单元、方法和电子设备
EP3835942B1 (en) Systems and methods for loading weights into a tensor processing block
CN114402289B (zh) 多模式运算电路
CN110163359B (zh) 一种计算装置及方法
CN108629406B (zh) 用于卷积神经网络的运算装置
JP2020507844A (ja) 入力オペランド値を処理するための装置及び方法
WO2021199569A1 (ja) 演算処理システムおよび畳み込み演算方法
CN112988656A (zh) 用于将权重加载到张量处理块中的系统和方法
CN112101541B (zh) 对高位宽值数据进行拆分的装置、方法、芯片及板卡
US20230162013A1 (en) Semiconductor device
CN114970807A (zh) Softmax和指数在硬件中的实施
CN111033462A (zh) 在基于处理器的系统中使用矩阵处理器提供高效浮点运算
CN112446460A (zh) 用于处理数据的方法、装置以及相关产品
JP2022518640A (ja) データ処理方法、装置、機器、記憶媒体及びプログラム製品
EP4206996A1 (en) Neural network accelerator with configurable pooling processing unit
WO2023034698A1 (en) Configurable nonlinear activation function circuits
JP2022074442A (ja) 演算装置および演算方法
US20220398441A1 (en) Semiconductor device
CN110929854A (zh) 一种数据处理方法、装置及硬件加速器
WO2021214944A1 (ja) 構成変換装置、構成変換方法、および構成変換プログラム
JP3336986B2 (ja) 信号処理プロセッサ及びそれに用いる丸め機能付き積和演算器
WO2023139990A1 (ja) ニューラルネットワーク回路およびニューラルネットワーク演算方法
US20220013153A1 (en) Dynamic processing memory

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20240501