(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023137192
(43)【公開日】2023-09-29
(54)【発明の名称】半導体装置
(51)【国際特許分類】
G06N 3/063 20230101AFI20230922BHJP
G06F 9/38 20180101ALI20230922BHJP
G06F 12/00 20060101ALI20230922BHJP
【FI】
G06N3/063
G06F9/38 370A
G06F12/00 550E
【審査請求】未請求
【請求項の数】12
【出願形態】OL
(21)【出願番号】P 2022043264
(22)【出願日】2022-03-18
(71)【出願人】
【識別番号】302062931
【氏名又は名称】ルネサスエレクトロニクス株式会社
(74)【代理人】
【識別番号】110002066
【氏名又は名称】弁理士法人筒井国際特許事務所
(72)【発明者】
【氏名】寺島 和昭
(72)【発明者】
【氏名】中村 淳
(72)【発明者】
【氏名】ギミレ ラゼス
【テーマコード(参考)】
5B013
5B160
【Fターム(参考)】
5B013DD01
5B013EE10
5B160CC01
(57)【要約】
【課題】ニューラルネットワークの処理において、消費電流の急減な変動を抑制することが可能な半導体装置を提供する。
【解決手段】ダミー回路22は、ダミーデータDTdをn個のMAC回路25[1]~25[n]の少なくとも一部に出力することで、ダミーの演算を実行させ、ダミーの出力データDToDを出力させる。出力側DMAコントローラDMAC2oBは、n個のMAC回路からの正規の出力データDToを、n個のチャネルCH[1]~CH[n]を用いてメモリにそれぞれ転送し、ダミーの出力データDToDをメモリに転送しない。ここで、n個のMAC回路の少なくとも一部は、出力側DMAコントローラDMAC2oBがメモリへのデータ転送を終了してから、入力側DMAコントローラDMAC2iがメモリからのデータ転送を開始するまでの期間内でダミーの演算を実行する。
【選択図】
図5
【特許請求の範囲】
【請求項1】
ニューラルネットワークの処理を実行する半導体装置であって、
入力データとパラメータとを積和演算するn(nは2以上の整数)個の積和演算器と、
前記入力データと前記パラメータとを記憶する単数または複数のメモリと、
前記メモリに記憶される前記パラメータを前記n個の積和演算器へ転送する第1のDMA(Direct Memory Access)コントローラと、
前記メモリに記憶される前記入力データを、n個のチャネルを用いて前記n個の積和演算器にそれぞれ転送することで、前記n個の積和演算器に演算を実行させ、演算結果となる正規の出力データを出力させる第2の入力側DMAコントローラと、
予め定められるダミーデータを前記n個の積和演算器の少なくとも一部に出力することで、前記n個の積和演算器の少なくとも一部にダミーの演算を実行させ、演算結果となるダミーの出力データを出力させるダミー回路と、
前記n個の積和演算器からの前記正規の出力データを、n個のチャネルを用いて前記メモリにそれぞれ転送し、前記n個の積和演算器の少なくとも一部からの前記ダミーの出力データを前記メモリに転送しない第2の出力側DMAコントローラと、
を備え、
前記n個の積和演算器の少なくとも一部は、前記第2の出力側DMAコントローラが前記メモリへのデータ転送を終了してから、前記第2の入力側DMAコントローラが前記メモリからのデータ転送を開始するまでの期間内で前記ダミーの演算を実行する、
半導体装置。
【請求項2】
請求項1記載の半導体装置において、
さらに、前記第2の入力側DMAコントローラに、前記メモリからのデータ転送を開始させるためのリード開始信号を出力するシーケンスコントローラを有し、
前記第2の出力側DMAコントローラは、前記メモリへのデータ転送を終了した際にライト終了信号を出力し、
前記ダミー回路は、前記第2の出力側DMAコントローラからの前記ライト終了信号に応じて、前記n個の積和演算器の少なくとも一部に前記ダミーデータを出力し、前記シーケンスコントローラからの前記リード開始信号に応じて、前記n個の積和演算器に、前記第2の入力側DMAコントローラからの前記入力データを出力する、
半導体装置。
【請求項3】
請求項2記載の半導体装置において、
前記シーケンスコントローラは、さらに、前記第2の入力側DMAコントローラおよび前記第2の出力側DMAコントローラにおける前記n個のチャネルと、前記n個の積和演算器とを、m(mはnよりも小さい整数)個のグループに分け、前記第2の入力側DMAコントローラに、前記m個のグループ毎の前記リード開始信号を互いに異なるタイミングで出力することで、前記第2の入力側DMAコントローラによるリード動作、前記積和演算器による演算動作、前記第2の出力側DMAコントローラによるライト動作からなる一連の動作のタイミングが、前記m個のグループで互いに異なるように制御し、
前記第2の出力側DMAコントローラは、前記ライト終了信号を、前記m個のグループ毎に出力し、
前記ダミー回路は、前記m個のグループ毎の前記ライト終了信号と、前記m個のグループ毎の前記リード開始信号とに基づいて、前記m個のグループ毎の前記積和演算器に、前記ダミーの演算を実行させる、
半導体装置。
【請求項4】
請求項3記載の半導体装置において、
前記ダミー回路は、前記m個のグループの中の一部のグループを対象に、前記ダミーの演算を実行させる、
半導体装置。
【請求項5】
請求項4記載の半導体装置において、
前記一部のグループは、設定によって変更可能となっている、
半導体装置。
【請求項6】
請求項3記載の半導体装置において、
前記m個のグループは、設定によって変更可能となっている、
半導体装置。
【請求項7】
ニューラルネットワークの処理を実行する半導体装置であって、
入力データとパラメータとを積和演算するn(nは2以上の整数)個の積和演算器と、
前記入力データと前記パラメータとを記憶する単数または複数のメモリと、
前記メモリに記憶される前記パラメータを前記n個の積和演算器へ転送する第1のDMA(Direct Memory Access)コントローラと、
前記メモリに記憶される前記入力データを、n個のチャネルを用いて前記n個の積和演算器にそれぞれ転送することで、前記n個の積和演算器に演算を実行させ、演算結果となる出力データを出力させる第2の入力側DMAコントローラと、
前記n個の積和演算器からの前記出力データを、n個のチャネルを用いて前記メモリにそれぞれ転送する第2の出力側DMAコントローラと、
前記第2の入力側DMAコントローラに、前記メモリからのデータ転送を開始させるためのリード開始信号を出力するシーケンスコントローラと、
を備え、
前記シーケンスコントローラは、前記第2の入力側DMAコントローラおよび前記第2の出力側DMAコントローラにおける前記n個のチャネルと、前記n個の積和演算器とを、m(mはnよりも小さい整数)個のグループに分け、前記第2の入力側DMAコントローラに、前記m個のグループ毎の前記リード開始信号を互いに異なるタイミングで出力することで、前記第2の入力側DMAコントローラによるリード動作、前記積和演算器による演算動作、前記第2の出力側DMAコントローラによるライト動作からなる一連の動作のタイミングが、前記m個のグループで互いに異なるように制御する、
半導体装置。
【請求項8】
請求項7記載の半導体装置において、
前記m個のグループは、設定によって変更可能となっている、
半導体装置。
【請求項9】
一つの半導体チップで構成される半導体装置であって、
ニューラルネットワークの処理を実行するニューラルネットワークエンジンと、
入力データとパラメータとを記憶する単数または複数のメモリと、
プロセッサと、
前記ニューラルネットワークエンジン、前記メモリおよび前記プロセッサを互いに接続するバスと、
を備え、
前記ニューラルネットワークエンジンは、
前記入力データと前記パラメータとを積和演算するn(nは2以上の整数)個の積和演算器と、
前記メモリに記憶される前記パラメータを前記n個の積和演算器へ転送する第1のDMA(Direct Memory Access)コントローラと、
前記メモリに記憶される前記入力データを、n個のチャネルを用いて前記n個の積和演算器にそれぞれ転送することで、前記n個の積和演算器に演算を実行させ、演算結果となる正規の出力データを出力させる第2の入力側DMAコントローラと、
予め定められるダミーデータを前記n個の積和演算器の少なくとも一部に出力することで、前記n個の積和演算器の少なくとも一部にダミーの演算を実行させ、演算結果となるダミーの出力データを出力させるダミー回路と、
前記n個の積和演算器からの前記正規の出力データを、n個のチャネルを用いて前記メモリにそれぞれ転送し、前記n個の積和演算器の少なくとも一部からの前記ダミーの出力データを前記メモリに転送しない第2の出力側DMAコントローラと、
を有し、
前記n個の積和演算器の少なくとも一部は、前記第2の出力側DMAコントローラが前記メモリへのデータ転送を終了してから、前記第2の入力側DMAコントローラが前記メモリからのデータ転送を開始するまでの期間内で前記ダミーの演算を実行する、
半導体装置。
【請求項10】
請求項9記載の半導体装置において、
前記ニューラルネットワークエンジンは、さらに、前記第2の入力側DMAコントローラに、前記メモリからのデータ転送を開始させるためのリード開始信号を出力するシーケンスコントローラを有し、
前記第2の出力側DMAコントローラは、前記メモリへのデータ転送を終了した際にライト終了信号を出力し、
前記ダミー回路は、前記第2の出力側DMAコントローラからの前記ライト終了信号に応じて、前記n個の積和演算器の少なくとも一部に前記ダミーデータを入力し、前記シーケンスコントローラからの前記リード開始信号に応じて、前記n個の積和演算器に、前記第2の入力側DMAコントローラからの前記入力データを転送する、
半導体装置。
【請求項11】
請求項10記載の半導体装置において、
前記シーケンスコントローラは、さらに、前記第2の入力側DMAコントローラおよび前記第2の出力側DMAコントローラにおける前記n個のチャネルと、前記n個の積和演算器とを、m(mはnよりも小さい整数)個のグループに分け、前記第2の入力側DMAコントローラに、前記m個のグループ毎の前記リード開始信号を互いに異なるタイミングで出力することで、前記第2の入力側DMAコントローラによるリード動作、前記積和演算器による演算動作、前記第2の出力側DMAコントローラによるライト動作からなる一連の動作のタイミングが、前記m個のグループで互いに異なるように制御し、
前記第2の出力側DMAコントローラは、前記ライト終了信号を、前記m個のグループ毎に出力し、
前記ダミー回路は、前記m個のグループ毎の前記ライト終了信号と、前記m個のグループ毎の前記リード開始信号とに基づいて、前記m個のグループ毎の前記積和演算器に、前記ダミーの演算を実行させる、
半導体装置。
【請求項12】
請求項11記載の半導体装置において、
前記ダミー回路は、前記m個のグループの中の一部のグループを対象に、前記ダミーの演算を実行させる、
半導体装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、半導体装置に関し、例えば、ニューラルネットワークの処理を実行する半導体装置に関する。
【背景技術】
【0002】
特許文献1には、ロジックデバイスおよびメモリデバイスを備える半導体装置において、データ転送の際に、信号バス上に流れる動作電流の削減や大量のデータを正確に取り込むことを可能にする技術が示される。当該半導体装置では、電源電圧の振幅より小さい振幅を有するデータ信号、第1クロック信号及び第1クロック信号から所定位相シフトされた第2クロック信号が用いられる。ロジックデバイスおよびメモリデバイスのそれぞれは、第1及び第2クロック信号の立ち上がりエッジに同期してデータを取り込む。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
例えば、CNN(Convolutional Neural Network)等のニューラルネットワークの処理では、半導体装置に搭載される複数のDMA(Direct Memory Access)コントローラおよび複数の積和演算器(MAC(Multiply ACcumulate)回路と呼ぶ)等を用いて膨大な演算処理が実行される。具体的には、複数のDMAコントローラは、メモリに記憶されたある層の画像データや係数データを複数のMAC回路に転送することで、複数のMAC回路に積和演算を行わせる。また、複数のDMAコントローラは、複数のMAC回路による積和演算結果を、次の層の画像データとして、メモリに転送する。半導体装置は、このような処理を繰り返し実行する。
【0005】
一方、半導体装置では、製造プロセスの微細化や、回路の成熟化が進んでいる。その結果、ニューラルネットワークの処理効率は高まり、単位時間内に実行できる演算数は増加している。これに伴い、消費電流は増加傾向にある。ここで、演算を行っている期間をアクティブ期間、アクティブ期間へ移行する待ち期間をアイドル期間、とした場合、通常、複数のMAC回路において、アイドル期間とアクティブ期間とは同時に切り替えられる。これにより、ニューラルネットワークの処理に要する時間を最大限に短縮することができる。
【0006】
しかしながら、このような同時切り替えを行った場合、消費電流の急激な変化が生じ、電源配線の寄生インダクタ成分等によって電源電圧の変動が生じ得る。電源電圧の変動は、消費電流が増加するほど、ひいては、消費電流の変化率が大きくなるほど、より大きくなり得る。電源電圧の変動を抑制するためには、例えば、半導体装置の電源設計を強化する必要がある。ただし、この場合、設計の難易度が高まり、設計コストや製造コストが増大するおそれがあった。
【0007】
後述する実施の形態は、このようなことに鑑みてなされたものであり、その他の課題と新規な特徴は、本明細書の記載および添付図面から明らかになるであろう。
【課題を解決するための手段】
【0008】
一実施の形態の半導体装置は、ニューラルネットワークの処理を実行するものであり、n個の積和演算器と、単数または複数のメモリと、第1のDMAコントローラと、第2の入力側DMAコントローラと、ダミー回路と、第2の出力側DMAコントローラと、を備える。n個の積和演算器は、入力データとパラメータとを積和演算する。単数または複数のメモリは、入力データとパラメータとを記憶する。第1のDMAコントローラは、メモリに記憶されるパラメータをn個の積和演算器へ転送する。第2の入力側DMAコントローラは、メモリに記憶される入力データを、n個のチャネルを用いてn個の積和演算器にそれぞれ転送することで、n個の積和演算器に演算を実行させ、演算結果となる正規の出力データを出力させる。ダミー回路は、予め定められるダミーデータをn個の積和演算器の少なくとも一部に出力することで、n個の積和演算器の少なくとも一部にダミーの演算を実行させ、演算結果となるダミーの出力データを出力させる。第2の出力側DMAコントローラは、n個の積和演算器からの正規の出力データを、n個のチャネルを用いてメモリにそれぞれ転送し、n個の積和演算器の少なくとも一部からのダミーの出力データをメモリに転送しない。ここで、n個の積和演算器の少なくとも一部は、第2の出力側DMAコントローラがメモリへのデータ転送を終了してから、第2の入力側DMAコントローラがメモリからのデータ転送を開始するまでの期間内でダミーの演算を実行する。
【発明の効果】
【0009】
一実施の形態の半導体装置を用いることで、消費電流の急減な変動を抑制することが可能になる。
【図面の簡単な説明】
【0010】
【
図1】
図1は、実施の形態1による半導体装置において、主要部の構成例を示す概略図である。
【
図2】
図2は、
図1におけるニューラルネットワークエンジンの詳細な構成例を示す図である。
【
図3】
図3は、
図2に示されるニューラルネットワークエンジンの動作例を示すタイミングチャートである。
【
図4】
図4は、実施の形態2による半導体装置において、主要部の構成例を示す概略図である。
【
図5】
図5は、
図4におけるニューラルネットワークエンジンの詳細な構成例を示す図である。
【
図6】
図6は、
図5におけるダミー回路の模式的な構成例を示す図である。
【
図7】
図7は、
図5に示されるニューラルネットワークエンジンの動作例を示すタイミングチャートである。
【
図8】
図8は、
図7とは異なる動作例を示すタイミングチャートである。
【
図9】
図9は、実施の形態3による半導体装置において、
図5に示されるニューラルネットワークエンジンの動作例を示すタイミングチャートである。
【
図11】
図11は、実施の形態4による半導体装置において、グループの設定内容およびダミー回路の設定内容を決定する方法の一例を示すフロー図である。
【
図12】
図12は、比較例となるニューラルネットワークエンジンの動作例を示すタイミングチャートである。
【発明を実施するための形態】
【0011】
以下の実施の形態においては便宜上その必要があるときは、複数のセクションまたは実施の形態に分割して説明するが、特に明示した場合を除き、それらはお互いに無関係なものではなく、一方は他方の一部または全部の変形例、詳細、補足説明等の関係にある。また、以下の実施の形態において、要素の数等(個数、数値、量、範囲等を含む)に言及する場合、特に明示した場合および原理的に明らかに特定の数に限定される場合等を除き、その特定の数に限定されるものではなく、特定の数以上でも以下でもよい。さらに、以下の実施の形態において、その構成要素(要素ステップ等も含む)は、特に明示した場合および原理的に明らかに必須であると考えられる場合等を除き、必ずしも必須のものではないことは言うまでもない。同様に、以下の実施の形態において、構成要素等の形状、位置関係等に言及するときは、特に明示した場合および原理的に明らかにそうでないと考えられる場合等を除き、実質的にその形状等に近似または類似するもの等を含むものとする。このことは、上記数値および範囲についても同様である。
【0012】
以下、実施の形態を図面に基づいて詳細に説明する。なお、実施の形態を説明するための全図において、同一の機能を有する部材には同一の符号を付し、その繰り返しの説明は省略する。また、以下の実施の形態では、特に必要なとき以外は同一または同様な部分の説明を原則として繰り返さない。
【0013】
(実施の形態1)
<半導体装置の概略>
図1は、実施の形態1による半導体装置において、主要部の構成例を示す概略図である。
図1に示す半導体装置10は、例えば、一つの半導体チップで構成されるSoC(System on Chip)等である。当該半導体装置10は、代表的には、車両のECU(Electronic Control Unit)等に搭載され、ADAS(Advanced Driver Assistance System)の機能を提供する。
【0014】
図1に示す半導体装置10は、ニューラルネットワークエンジン(NNE)15aと、CPU(Central Processing Unit)等のプロセッサ17と、単数または複数のメモリMEM1,MEM2と、システムバス16とを有する。システムバス16は、ニューラルネットワークエンジン15a、メモリMEM1,MEM2およびプロセッサ17を互いに接続する。ニューラルネットワークエンジン15aは、CNNを代表とするニューラルネットワークの処理を実行する。プロセッサ17は、メモリMEM1に記憶される所定のプログラムを実行することで、ニューラルネットワークエンジン15aの制御を含めて、半導体装置10に所定の機能を担わせる。
【0015】
メモリMEM1はDRAM(Dynamic Random Access Memory)等であり、メモリMEM2はキャッシュ用のSRAM(Static Random Access Memory)等である。メモリMEM1は、例えば画素値からなるデータDTと、パラメータPRと、コマンドCMDと、を記憶する。パラメータPRには、重みパラメータWPと、バイアスパラメータBPとが含まれる。コマンドCMDは、ニューラルネットワークエンジン15aのシーケンス動作を制御するためのものである。メモリMEM2は、ニューラルネットワークエンジン15aの高速キャッシュメモリとして用いられる。例えば、メモリMEM1内の複数のデータDTは、予めメモリMEM2にコピーされたのち、ニューラルネットワークエンジン15aで用いられる。
【0016】
ニューラルネットワークエンジン15aは、複数のDMA(Direct Memory Access)コントローラDMAC1,DMAC2と、MACユニット20と、シーケンスコントローラ21aと、を備える。MACユニット20は、複数のMAC回路25、すなわち複数の積和演算器を備える。DMAコントローラDMAC1は、例えば、メモリMEM1と、MACユニット20内の複数のMAC回路25との間のシステムバス16を介したデータ転送を制御する。DMAコントローラDMAC2は、メモリMEM2と、MACユニット20内の複数のMAC回路25との間のデータ転送を制御する。
【0017】
詳細には、DMAコントローラDMAC1は、メモリMEM1に記憶されるパラメータPRを、MACユニット20内の複数のMAC回路25へ転送する。また、DMAコントローラDMAC1は、メモリMEM1に記憶されるコマンドCMDを、シーケンスコントローラ21aへ転送する。
【0018】
一方、DMAコントローラDMAC2は、メモリMEM2に記憶されるデータを、入力データDTiとしてMACユニット20内の複数のMAC回路25へ転送することで、複数のMAC回路25に演算を実行させる。具体的には、複数のMAC回路25は、DMAコントローラDMAC2からの入力データDTiと、DMAコントローラDMAC1からの重みパラメータWPとの積和演算や、DMAコントローラDMAC1からのバイアスパラメータBPの加算等を実行する。
【0019】
その結果、複数のMAC回路25は、演算結果となる出力データDToを出力する。出力データDToは、例えば、ニューラルネットワークの各層から得られる特徴マップの画素値を表す。DMAコントローラDMAC2は、当該出力データDToを、メモリMEM2に転送する。メモリMEM2に転送された出力データDToは、ニューラルネットワークの次の層への入力データDTiとして用いられる。すなわち、例えば、ニューラルネットワークの1層目への入力データDTiは、メモリMEM1に記憶されるデータDTによって定められ、2層目以降への入力データDTiは、複数のMAC回路25からの出力データDToによって定められる。
【0020】
シーケンスコントローラ21aは、DMAコントローラDMAC1からのコマンドCMDに基づいて、ニューラルネットワークエンジン15aの動作シーケンス等を制御する。その一つとして、シーケンスコントローラ21aは、DMAコントローラDMAC2に、メモリMEM2からのデータ転送を開始させるためのリード開始信号を出力する。また、シーケンスコントローラ21aは、DMAコントローラDMAC2に転送設定、例えば、入力データDTiが記憶されるメモリMEM2のアドレス範囲の設定や、出力データDToを記憶させるメモリMEM2のアドレス範囲の設定等を行う。
<ニューラルネットワークエンジンの構成>
【0021】
図2は、
図1におけるニューラルネットワークエンジンの詳細な構成例を示す図である。
図2において、MACユニット20は、n(nは2以上の整数)個のMAC回路25[1]~25[n]を有する。nの値は、例えば16等である。DMAコントローラDMAC1は、予め設定されたアドレス範囲に基づいて、制御サイクル毎に、メモリMEM1から情報を読み出す。読み出された情報は、適宜、パラメータPRや、コマンドCMDを含む。DMAコントローラDMAC1は、読み出したパラメータPRをn個のMAC回路25[1]~25[n]に転送し、読み出したコマンドCMDをレジスタREGに格納する。
【0022】
図1に示したDMAコントローラDMAC2は、詳細には、
図2に示されるように、入力側DMAコントローラDMAC2iと、出力側DMAコントローラDMAC2oAとを備える。入力側DMAコントローラDMAC2iおよび出力側DMAコントローラDMAC2oAのそれぞれは、n個のチャネルCH[1]~CH[n]を有する。
【0023】
入力側DMAコントローラDMAC2iは、メモリMEM2に記憶される入力データDTiを、n個のチャネルCH[1]~CH[n]を用いてn個のMAC回路25[1]~25[n]にそれぞれ転送することで、n個のMAC回路25[1]~25[n]に演算を実行させる。当該n個のチャネルCH[1]~CH[n]には、それぞれ、メモリMEM2から読み出す際のアドレス範囲が設定される。
【0024】
具体的には、例えば、MAC回路25[1]は、入力側DMAコントローラDMAC2iのチャネルCH[1]からの複数の入力データDTiと、DMAコントローラDMAC1からの複数の重みパラメータWPとを積和演算する。また、MAC回路25[1]は、当該積和演算結果に、DMAコントローラDMAC1からのバイアスパラメータBPを加算することで、演算結果となる出力データDToを出力する。
【0025】
より詳細な構成例として、入力側DMAコントローラDMAC2iのチャネルCH[1]は、ニューラルネットワークの入力チャネル数を“M”、カーネルサイズを“K”として、例えば、“M×K”個の入力データDTiを読み出してMAC回路25[1]に転送する。一方、DMAコントローラDMAC1も、“M×K”個の重みパラメータWPを読み出してMAC回路25[1]に転送する。
【0026】
MAC回路25[1]は、例えば、“M×K”個の乗算器と、これらの乗算器の乗算結果を加算する加算器とを含む。これにより、MAC回路25[1]は、“M×K”個の積和演算を行い、当該積和演算結果に、別途、バイアスパラメータBPを加算することで、特徴マップ内の一座標の値を表す出力データDToを出力する。他のMAC回路25[2]~25[n]に関しても、MAC回路25[1]の場合と同様である。
【0027】
この際に、他のMAC回路25[2]~25[n]は、互いに異なる入力データDTiを対象に、すなわち、畳み込み演算に伴い座標範囲が異なる入力データDTiを対象に、演算を行ってもよく、あるいは、同じ入力データDTiを対象に演算を行ってもよい。前者の場合、n個のMAC回路25[1]~25[n]で共通のパラメータPRが用いられる。一方、後者の場合、n個のMAC回路25[1]~25[n]で異なるパラメータPRが用いられる。すなわち、後者の場合、n個のMAC回路25[1]~25[n]は、それぞれ、ニューラルネットワークにおける異なる出力チャネルに割り当てられる。
【0028】
出力側DMAコントローラDMAC2oAは、n個のMAC回路25[1]~25[n]からの出力データDToを、n個のチャネルCH[1]~CH[n]を用いてメモリMEM2にそれぞれ転送する。当該n個のチャネルCH[1]~CH[n]には、それぞれ、メモリMEM2に書き込む際のアドレス範囲が設定される。
【0029】
シーケンスコントローラ21aは、レジスタREGに格納されたコマンドCMDに基づいて、入力側DMAコントローラDMAC2iおよび出力側DMAコントローラDMAC2oAの動作シーケンス等を制御する。詳細には、シーケンスコントローラ21aは、制御信号CS2iを用いて、入力側DMAコントローラDMAC2iにおける転送設定、例えば、メモリMEM2から読み出すアドレス範囲の設定等を行う。同様に、シーケンスコントローラ21aは、制御信号CS2oを用いて、出力側DMAコントローラDMAC2oAにおける転送設定、例えば、メモリMEM2に書き込むアドレス範囲の設定等を行う。
【0030】
さらに、シーケンスコントローラ21aは、制御信号CS2i,CS2oを用いて、入力側DMAコントローラDMAC2iおよび出力側DMAコントローラDMAC2oAにおけるn個のチャネルCH[1]~CH[n]を、m(mは、nよりも小さい整数)個のグループGR[1]~GR[m]に分けることが可能となっている。n個のチャネルCH[1]~CH[n]をm個のグループGR[1]~GR[m]に分けることで、結果として、n個のMAC回路25[1]~25[n]も、m個のグループGR[1]~GR[m]に分けられる。例えば、nの値を16として、mの値を4とした場合、4個のグループGR[1]~GR[4]のそれぞれには、4個のチャネルと4個のMAC回路が属することになる。
【0031】
シーケンスコントローラ21aは、入力側DMAコントローラDMAC2iに、m個のグループGR[1]~GR[m]毎のリード開始信号RDS[1]~RDS[m]を、互いに異なるタイミングで出力することができる。リード開始信号RDS[1]~RDS[m]は、それぞれ、m個のグループGR[1]~GR[m]に対して、メモリMEM2からのデータ転送を開始させるための信号である。これにより、シーケンスコントローラ21aは、入力側DMAコントローラDMAC2iによるリード動作、MACユニット20による演算動作、出力側DMAコントローラDMAC2oAによるライト動作からなる一連の動作のタイミングが、m個のグループGR[1]~GR[m]で互いに異なるように制御することができる。
【0032】
このようなn個のチャネルCH[1]~CH[n]のグループ化を行うため、入力側DMAコントローラDMAC2iは、グループ化回路26を備える。グループ化回路26は、シーケンスコントローラ21aからの制御信号CS2iに基づいて、n個のチャネルCH[1]~CH[n]をm個にグループ化する。すなわち、m個のグループGR[1]~GR[m]は、制御信号CS2iを介した設定によって、変更可能となっている。グループ化回路26は、この設定に基づいて、n個のチャネルCH[1]~CH[n]と、リード開始信号RDS[1]~RDS[m]との対応関係を定める。
【0033】
<ニューラルネットワークエンジン(比較例)の動作>
図12は、比較例となるニューラルネットワークエンジンの動作例を示すタイミングチャートである。比較例となるニューラルネットワークエンジンは、
図2で述べたようなグループ化の機能を備えない。この場合、
図12に示されるように、期間T1におけるリード動作、期間T2における演算動作、期間T3におけるライト動作からなる一連の動作は、n個(この例ではn=16)のチャネルCH[1]~CH[16]で同じタイミングとなるように実行される。
【0034】
詳細には、期間T1では、入力側DMAコントローラにおける16個のチャネルCH[1]~CH[16]は、メモリMEM2からの入力データDTiを16個のMAC回路25[1]~25[16]へ同時に転送する。期間T2では、16個のMAC回路25[1]~25[16]は、同時に演算を実行する。期間T3では、出力側DMAコントローラにおける16個のチャネルCH[1]~CH[16]は、16個のMAC回路25[1]~25[16]からの出力データDToをメモリMEM2へ同時に転送する。その後は、アイドル期間となる期間T4を経て、再び、アクティブ期間となる期間T1~T3において、一連の動作が行われる。期間T4では、例えば、入力側/出力側DMAコントローラにおいて、転送設定の変更、すなわちメモリMEM2のアドレス範囲の変更等が行われる。
【0035】
しかしながら、このような動作を用いた場合、アイドル期間とアクティブ期間とが切り替わる際、すなわち、期間T3から期間T4へ、または、期間T4から期間T1へ移行する際に、消費電流が急激に変化する。消費電流が急激に変化すると、電源配線の寄生インダクタ成分等によって電源電圧の変動が生じ得る。電源電圧の変動を抑制するためには、例えば、MIM(Metal Insulator Metal)キャパシタを設ける、電源バンプや電源幹線を強化する、といった方法を代表に、半導体装置の電源設計を強化する必要がある。ただし、この場合、設計の難易度が高まり、設計コストや製造コストが増大し得る。
【0036】
<ニューラルネットワークエンジン(実施の形態1)の動作>
図3は、
図2に示されるニューラルネットワークエンジンの動作例を示すタイミングチャートである。
図2の構成例を用いると、
図3に示されるように、期間T1におけるリード動作、期間T2における演算動作、期間T3におけるライト動作からなる一連の動作のタイミングが、m個(この例では、m=4)のグループGR[1]~GR[4]で互いに異なるように制御することが可能になる。
【0037】
詳細には、グループGR[1]~GR[4]における期間T1の開始タイミングは、それぞれ、リード開始信号RDS[1]~RDS[4]に基づいて定められる。シーケンスコントローラ21aは、一定期間ずつタイミングをずらしながら、リード開始信号RDS[1]~RDS[4]を順に出力する。これにより、期間T1~T3からなる一連のアクティブ期間の開始タイミングおよび終了タイミングは、4個のグループGR[1]~GR[4]で互いに異なるように制御される。
【0038】
グループGR[1]を例として、期間T1では、入力側DMAコントローラDMAC2iにおける16個中の4個のチャネルCH[1]~CH[4]は、メモリMEM2からの入力データDTiを、16個中の4個のMAC回路25[1]~25[4]へ同時に転送する。期間T2では、当該4個のMAC回路25[1]~25[4]は、同時に演算を実行する。期間T3では、出力側DMAコントローラDMAC2oAにおける16個中の4個のチャネルCH[1]~CH[4]は、4個のMAC回路25[1]~25[4]からの出力データDToをメモリMEM2へ同時に転送する。その後は、アイドル期間となる期間T4を経て、再び、アクティブ期間(期間T1~T3)において、一連の動作が行われる。
【0039】
このように、アクティブ期間(期間T1~T3)の開始タイミングおよび終了タイミングが、4個のグループGR[1]~GR[4]で互いに異なるように制御することで、
図3に示されるように、消費電流の急激な変動を抑制することが可能になる。言い換えれば、消費電流の変化率を小さくすることが可能になる。なお、ここでは4個のグループを用いたが、当該グループ数は、例えば、2のべき乗単位等で定めることが可能である。グループの設定は、例えば、ニューラルネットワークにおける所定の層の処理を開始する前にコマンドCMDによって行われ、当該所定の層の処理を実行している間、維持される。
【0040】
<実施の形態1の主要な効果>
以上、実施の形態1の方式では、DMAコントローラにおけるn個のチャネルおよびn個のMAC回路をm個のグループに分け、m個のグループを互いに異なるタイミングで動作させることで、消費電流の急減な変動を抑制することが可能になる。その結果、電源電圧の変動を抑制することができ、半導体装置10の電源設計を容易化することや、設計コスト、製造コストの増大を抑制することが可能になる。このような効果は、特に、半導体装置10の微細化等によって、単位時間内に実行できる演算数が増加するほど、より顕著に得られる。
【0041】
(実施の形態2)
<半導体装置の概略>
図4は、実施の形態2による半導体装置において、主要部の構成例を示す概略図である。
図4に示す半導体装置10は、
図1の構成例と比較して、ニューラルネットワークエンジン(NNE)15bの構成が異なっている。
図4に示されるニューラルネットワークエンジン15bでは、
図1に示したニューラルネットワークエンジン15aと比較して、ダミー回路22が追加される。また、これに伴い、シーケンスコントローラ21bは、
図1の場合と同様の動作に加えて、当該ダミー回路22も制御する。
【0042】
ダミー回路22は、予め定められるダミーデータDTdを、複数のMAC回路25の少なくとも一部に出力することで、複数のMAC回路25の少なくとも一部にダミーの演算を実行させ、演算結果となるダミーの出力データを出力させる。ただし、DMAコントローラDMAC2は、当該複数のMAC回路25の少なくとも一部からのダミーの出力データをメモリMEM2に転送しない。すなわち、DMAコントローラDMAC2は、入力データDTiに応じた複数のMAC回路25からの正規の出力データDToをメモリMEM2に転送するが、ダミーデータDTdに応じたダミーの出力データをメモリMEM2に転送しない。
【0043】
<ニューラルネットワークエンジンの構成>
図5は、
図4におけるニューラルネットワークエンジンの詳細な構成例を示す図である。ここでは、
図5に示すニューラルネットワークエンジン(NNE)15bと、
図2に示したニューラルネットワークエンジン(NNE)15aとの相違点に着目して説明し、
図2と重複する事項に関しては、説明を省略する。
【0044】
図5において、出力側DMAコントローラDMAC2oBは、グループ化回路27を備える。グループ化回路27は、シーケンスコントローラ21bからの制御信号CS2oに基づいて、n個のチャネルCH[1]~CH[n]をm個にグループ化する。すなわち、m個のグループGR[1]~GR[m]は、制御信号CS2oを介した設定によって、変更可能となっている。
【0045】
出力側DMAコントローラDMAC2oBは、メモリMEM2へのデータ転送を終了した際にライト終了信号を出力する。詳細には、出力側DMAコントローラDMAC2oBは、m個のグループGR[1]~GR[m]毎に、データ転送の終了時にライト終了信号WTE[1]~WTE[m]を出力する。グループ化回路27は、制御信号CS2oを介した設定に基づいて、n個のチャネルCH[1]~CH[n]と、ライト終了信号WTE[1]~WTE[m]との対応関係を定める。
【0046】
ダミー回路22は、出力側DMAコントローラDMAC2oBからのライト終了信号WTE[1]~WTE[m]に応じて、n個のMAC回路25[1]~25[n]の少なくとも一部にダミーデータDTdを出力する。また、ダミー回路22は、シーケンスコントローラ21bからのリード開始信号RDS[1]~RDS[m]に応じて、ダミーデータDTdの出力を停止すると共に、n個のMAC回路25[1]~25[n]に、入力側DMAコントローラDMAC2iからの入力データDTiを出力する。
【0047】
その結果、n個のMAC回路25[1]~25[n]の少なくとも一部は、出力側DMAコントローラDMAC2oBがメモリMEM2へのデータ転送を終了してから、入力側DMAコントローラDMAC2iがメモリMEM2からのデータ転送を開始するまでの期間内でダミーの演算を実行することになる。ただし、
図4で述べたように、出力側DMAコントローラDMAC2oBは、当該ダミーの演算によって得られるダミーの出力データDToDに関しては、メモリMEM2へ転送しない。
【0048】
なお、詳細は後述するが、ダミー回路22は、シーケンスコントローラ21bからの制御信号CS2iに基づいて、入力側DMAコントローラDMAC2iの場合と同様のグループ化を行う。また、ダミー回路22は、シーケンスコントローラ21bからの制御信号CS2dに基づいて、ダミーの演算を行わせるMAC回路25の数等を定めることが可能となっている。
【0049】
図6は、
図5におけるダミー回路の模式的な構成例を示す図である。
図6に示されるダミー回路22は、m個のグループGR[1]~GR[m]にそれぞれ対応するm個の部分回路30[1]~30[m]と、ダミーデータ生成回路31と、グループ化回路32と、スイッチコントローラ33と、を備える。ダミーデータ生成回路31は、ダミーデータDTdを生成する。スイッチコントローラ33は、例えば、RSフリップフロップ等を備え、リード開始信号RDS[1]~RDS[m]およびライト終了信号WTE[1]~WTE[m]を入力して、正規データ選択信号ISL[1]~ISL[m]およびダミーデータ選択信号DSL[1]~DSL[m]を出力する。
【0050】
例えば、正規データ選択信号ISL[1]は、リード開始信号RDS[1]の立ち下がりでセットされ、ライト終了信号WTE[1]の立ち上がりでリセットされる信号である。ダミーデータ選択信号DSL[1]は、ライト終了信号WTE[1]の立ち下がりでセットされ、リード開始信号RDS[1]の立ち上がりでリセットされる信号である。同様に、正規データ選択信号ISL[m]は、リード開始信号RDS[m]の立ち下がりでセットされ、ライト終了信号WTE[m]の立ち上がりでリセットされる信号である。ダミーデータ選択信号DSL[m]は、ライト終了信号WTE[m]の立ち下がりでセットされ、リード開始信号RDS[m]の立ち上がりでリセットされる信号である。
【0051】
部分回路30[1]には、入力側DMAコントローラDMAC2i内のグループGR[1]に属するチャネルCH[1],CH[2],…からの入力データDTiと、ダミーデータDTdとが入力される。部分回路30[1]は、グループGR[1]に属するMAC回路25[1],25[2],…へのデータとして、グループGR[1]の正規データ選択信号ISL[1]のセット期間では入力データDTiを選択し、グループGR[1]のダミーデータ選択信号DSL[1]のセット期間ではダミーデータDTdを選択する。ダミーデータDTdが選択された場合、グループGR[1]に属するMAC回路25[1],25[2],…は、ダミーの演算を実行する。
【0052】
同様に、部分回路30[m]には、入力側DMAコントローラDMAC2i内のグループGR[m]に属するチャネルCH[n],CH[n-1],…からの入力データDTiと、ダミーデータDTdとが入力される。部分回路30[m]は、グループGR[m]に属するMAC回路25[n],25[n-1],…へのデータとして、正規データ選択信号ISL[m]のセット期間では入力データDTiを選択し、グループGR[m]のダミーデータ選択信号DSL[m]のセット期間ではダミーデータDTdを選択する。ダミーデータDTdが選択された場合、グループGR[m]に属するMAC回路25[n],25[n-1],…は、ダミーの演算を実行する。
【0053】
このようにして、ダミー回路22は、m個のグループGR[1]~GR[m]毎のライト終了信号WTE[1]~WTE[m]と、リード開始信号RDS[1]~RDS[m]とに基づいて、m個のグループGR[1]~GR[m]毎のMAC回路25に、ダミーの演算を実行させる。グループ化回路32は、シーケンスコントローラ21bからの制御信号CS2iを介した設定に基づいて、n個のチャネルCH[1]~CH[n]と、リード開始信号RDS[1]~RDS[m]およびライト終了信号WTE[1]~WTE[m]との対応関係を定める。
【0054】
<ニューラルネットワークエンジン(実施の形態2)の動作>
図7は、
図5に示されるニューラルネットワークエンジンの動作例を示すタイミングチャートである。
図7に示される動作例では、m個(この例ではm=4)のグループGR[1]~GR[4]におけるアクティブ期間(期間T1~T3)の開始タイミングは、同一となっており、アクティブ期間の終了タイミングも、同一となっている。この場合、グループGR[1]~GR[4]におけるライト終了信号WTE[1]~WTE[4]は、アクティブ期間の終了タイミング、すなわち期間T3の終了タイミングで、同時に出力される。
【0055】
ダミー回路22は、当該ライト終了信号WTE[1]~WTE[4]に応じて、ダミーデータDTdのn個のMAC回路25[1]~25[n]への出力を、同時に開始する。これに応じて、期間T4において、n個のMAC回路25[1]~25[n]は、ダミーの演算を同時に開始する。その後、ダミー回路22には、グループGR[1]~GR[4]におけるリード開始信号RDS[1]~RDS[4]が同時に入力される。
【0056】
ダミー回路22は、当該リード開始信号RDS[1]~RDS[4]に応じて、n個のMAC回路25[1]~25[n]へのダミーデータDTdの出力を停止することで、n個のMAC回路25[1]~25[n]に、ダミーの演算を終了させる。そして、ダミー回路22は、ダミーデータDTdの出力に替わって、期間T1において、入力側DMAコントローラDMAC2iからの正規の入力データDTiの、n個のMAC回路25[1]~25[n]への出力を同時に開始する。
【0057】
このように、n個のMAC回路25[1]~25[n]に、ダミーの演算を行わせることで、
図7に示されるように、消費電流の急激な変動を抑制することが可能になる。言い換えれば、消費電流、詳細には過渡電流の変化率を小さくすることが可能になる。なお、ここでは、説明の便宜上、実施の形態1で述べたグループ化を行っているが、
図7のような動作例を用いる場合には、必ずしも、グループ化を行う必要はない。
【0058】
図8は、
図7とは異なる動作例を示すタイミングチャートである。
図7の動作例を用いると、消費電流の変化率を小さくできるが、その一方で、ダミーの演算により、消費電流が不必要に増大し得る。そこで、
図8に示されるような動作例を用いてもよい。
図8の動作例では、
図7の動作例と異なり、期間T4において、全てのグループGR[1]~GR[4]ではなく、一部のグループ、この例では、2個のGR[1],GR[2]に属するMAC回路25がダミーの演算を実行している。
【0059】
当該一部のグループは、制御信号CS2dを介した設定によって変更可能となっている。すなわち、どのグループに属するMAC回路25にダミー演算を行わせるかを、設定することが可能となっている。このダミーの演算を行わせるグループの設定は、グループ化の設定と同様に、例えば、ニューラルネットワークにおける所定の層の処理を開始する前にコマンドCMDによって行われ、当該所定の層の処理を実行している間、維持される。
【0060】
このように、全部ではなく一部のMAC回路25にダミーの演算を実行させることで、不必要な消費電流の増大を抑制しつつ、消費電流の急激な変動を抑制する、言い換えれば消費電流の変化率を小さくすることが可能になる。なお、不必要な消費電流の増大を抑制することと、消費電流の変化率を小さくすることとは、トレードオフの関係となる。すなわち、ダミーの演算を行わせるMAC回路25の数を増やすほど、消費電流の変化率を小さくできるが、その反面、不必要な消費電流が増大する。
【0061】
<実施の形態2の主要な効果>
以上、実施の形態2の方式では、ダミー回路22を設け、n個のMAC回路25[1]~25[n]の少なくとも一部にダミーの演算を実行させることで、消費電流の急減な変動を抑制することが可能になる。その結果、実施の形態1の場合と同様に、電源電圧の変動を抑制することができ、半導体装置10の電源設計を容易化することや、設計コスト、製造コストの増大を抑制することが可能になる。また、全てではなく一部のMAC回路25にダミーの演算を実行させることで、不必要な消費電流の増大を抑制することが可能になる。
【0062】
(実施の形態3)
<ニューラルネットワークエンジン(実施の形態3)の動作>
図9は、実施の形態3による半導体装置において、
図5に示されるニューラルネットワークエンジンの動作例を示すタイミングチャートである。
図9に示される動作例は、
図3に示した動作と、
図7に示した動作とを組み合わせたような動作となっている。すなわち、
図9では、
図3の場合と同様に、期間T1~T3からなる一連のアクティブ期間の開始タイミングおよび終了タイミングは、4個のグループGR[1]~GR[4]で互いに異なるように制御される。これに加えて、
図9では、期間T4において、
図7の場合と同様に、ダミーの演算が実行されている。
【0063】
図10は、
図9とは異なる動作例を示すタイミングチャートである。
図10に示される動作例は、
図9の動作例に対して、
図8の場合と同様な方式を適用したものとなっている。すなわち、
図10では、期間T4において、全てではなく一部のMAC回路、この例ではグループGR[1],GR[3]に属するMAC回路25[1],25[3]は、ダミーの演算を実行している。
【0064】
図9のような動作例を用いると、例えば、
図3の場合や
図7の場合と比較して、各グループGR[1]~GR[4]におけるアクティブ期間(期間T1~T3)とアイドル期間(期間T4)との切り替わりに伴う消費電流の変動率を、より小さくすることができる。また、
図10のような動作例を用いると、
図9の場合と同様な方式により消費電流の変化率を小さくしつつ、
図8の場合と同様な方式により不必要な消費電流の増大を抑制することが可能になる。
【0065】
(実施の形態4)
<グループおよびダミー回路の設定>
図11は、実施の形態4による半導体装置において、グループの設定内容およびダミー回路の設定内容を決定する方法の一例を示すフロー図である。例えば、
図10に示した動作例を用いた場合、消費電流の変化率を小さくする効果A、および不必要な消費電流の増大を抑制する効果Bの程度は、グループの設定内容、すなわちグループ数と、ダミー回路22の設定内容、すなわちダミーの演算を実行させるグループの数および組み合わせと、に応じて変化する。
【0066】
当該効果Aと効果Bとは、
図8でも述べたように、トレードオフの関係となる。このため、何らかの方法で最適な設定内容を決定することが望まれる。最適な設定内容を決定する方法として、例えば、シミュレーションを用いる方法が考えられる。ただし、最適な設定内容は、処理対象となるニューラルネットワークの構成、すなわち、ニューラルネットワークエンジン(NNE)をどのように動作させるか、によって変わり得る。また、シミュレーション結果と実測との誤差も生じ得る。そこで、ここでは、
図11のようなフローを用いて最適な設定内容を決定する。
【0067】
図11に示されるフローは、例えば、
図4において、メモリMEM1に記憶されたキャリブレーションプログラム等に基づいて、プロセッサ17によって実行される。
図11において、プロセッサ17は、ニューラルネットワークエンジン(NNE)15bの動作と、消費電流の計測とを開始する(ステップS101)。
【0068】
詳細には、プロセッサ17は、ニューラルネットワークエンジン(NNE)15bに、例えば、ニューラルネットワークにおける、ある対象層の処理を行わせる。より詳細には、プロセッサ17は、メモリMEM1に記憶された、対象層の動作シーケンスを表す一連のコマンドCMD等を、ニューラルネットワークエンジン15bのシーケンスコントローラ21bに順次リードさせる。また、プロセッサ17は、例えば、半導体装置10の電源配線に設置された電流センサを用いて、消費電流を計測する。
【0069】
続いて、プロセッサ17は、ニューラルネットワークエンジン15bの動作と、消費電流の計測とを終了する(ステップS102)。ここで、ニューラルネットワークエンジン15bの動作期間、すなわちステップS101~S102の期間で実行される対象層の処理は、当該対象層内の極一部の座標領域に対する処理であってよい。具体的には、当該動作期間では、
図10に示される期間T1~T4を1サイクルとして、例えば、数サイクル程度の処理が行われればよい。
【0070】
ステップS102の後、プロセッサ17は、ニューラルネットワークエンジン15bの動作期間で計測された消費電流に基づいて、消費電流の最大変化率(Max(di/dt))と、平均電流(Iave)とを算出する(ステップS103,S104)。次いで、プロセッサ17は、ダミー回路22の設定内容、すなわち、すなわちダミーの演算を実行させるグループの数および組み合わせを全て網羅したか否かを判定する(ステップS105)。
【0071】
ダミー回路22の設定内容を全て網羅していない場合(ステップS105:No)、プロセッサ17は、ダミー回路22の設定内容を変更し、ステップS101に戻る(ステップS108)。一方、ダミー回路22の設定内容を全て網羅した場合(ステップS105:Yes)、プロセッサ17は、グループの設定内容、すなわち設定可能なグループの数を全て網羅したか否かを判定する(ステップS106)。グループの設定内容を全て網羅していない場合(ステップS106:No)、プロセッサ17は、グループの設定内容を変更し、ステップS101に戻る(ステップS109)。
【0072】
ステップS108,S109に際し、プロセッサ17は、例えば、ニューラルネットワークエンジン15bのシーケンスコントローラ21bに、変更後の各設定内容を表すコマンドCMDを出力することで、ダミー回路22の設定内容やグループの設定内容を変更する。グループの設定内容、すなわち設定可能なグループの数は、予め複数の選択肢が定められており、いずれか一つの選択肢がコマンドCMDに基づいて選択される。また、ダミー回路22の設定内容の選択肢は、グループの設定内容、すなわち選択されたグループの数に応じて定められる。
【0073】
グループの設定内容を全て網羅した場合(ステップS106:Yes)、プロセッサ17は、異なる設定内容毎にステップS103,S104で算出された消費電流の最大変化率(Max(di/dt))および平均電流(Iave)に基づいて、最適な設定内容を決定する(ステップS107)。ここで、最適な設定内容は、トレードオフの関係となる消費電流の最大変化率および平均電流が共に小さくなる設定内容である。このため、プロセッサ17は、例えば、最大変化率と平均電流とを重み付けした上で加算した値が最小値となるような設定内容を、最適な設定内容とすればよい。
【0074】
最適な設定内容は、例えば、ニューラルネットワークの層毎に定められる。例えば、ニューラルネットワークの処理を実際に開始する前のキャリブレーション処理の中で、
図11に示されるようなフローを用いて層毎の最適な設定内容が定められる。その後に実行される、ニューラルネットワークの実際の処理では、当該キャリブレーション処理の中で定めた最適な設定内容が適用される。具体的には、プロセッサ17は、例えば、層毎に定めた最適な設定内容を、層毎に紐づけられたコマンドCMDとしてメモリMEM1等に記憶させ、各層の実際の処理の開始時にシーケンスコントローラ21bにリードさせればよい。
【0075】
<実施の形態4の主要な効果>
以上、実施の形態4の方式を用いることで、実施の形態1~3で述べた各種効果に加えて、グループおよびダミー回路22の設定内容を最適化することが可能になる。すなわち、消費電流の急減な変動と、不必要な消費電力の増大とをバランス良く抑制することが可能になる。
【0076】
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は前記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。
【符号の説明】
【0077】
10 半導体装置
15a,15b ニューラルネットワークエンジン(NNE)
16 システムバス
17 プロセッサ
20 MACユニット
21a,21b シーケンスコントローラ
22 ダミー回路
25 MAC回路
CH チャネル
DMAC1,DMAC2 DMAコントローラ
DTd ダミーデータ
DTi 入力データ
DTo 出力データ(正規の出力データ)
DToD 出力データ(ダミーの出力データ)
GR グループ
MEM1,MEM2 メモリ
PR パラメータ
RDS リード開始信号
WTE ライト終了信号