IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ ルネサスエレクトロニクス株式会社の特許一覧

<>
  • 特開-半導体装置 図1
  • 特開-半導体装置 図2A
  • 特開-半導体装置 図2B
  • 特開-半導体装置 図3
  • 特開-半導体装置 図4
  • 特開-半導体装置 図5
  • 特開-半導体装置 図6
  • 特開-半導体装置 図7
  • 特開-半導体装置 図8
  • 特開-半導体装置 図9
  • 特開-半導体装置 図10A
  • 特開-半導体装置 図10B
  • 特開-半導体装置 図11
  • 特開-半導体装置 図12
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024048930
(43)【公開日】2024-04-09
(54)【発明の名称】半導体装置
(51)【国際特許分類】
   G06F 17/10 20060101AFI20240402BHJP
   G06N 3/063 20230101ALI20240402BHJP
   G06T 1/40 20060101ALI20240402BHJP
【FI】
G06F17/10 S
G06N3/063
G06T1/40
【審査請求】未請求
【請求項の数】15
【出願形態】OL
(21)【出願番号】P 2022155106
(22)【出願日】2022-09-28
(71)【出願人】
【識別番号】302062931
【氏名又は名称】ルネサスエレクトロニクス株式会社
(74)【代理人】
【識別番号】110002066
【氏名又は名称】弁理士法人筒井国際特許事務所
(72)【発明者】
【氏名】寺島 和昭
【テーマコード(参考)】
5B056
5B057
【Fターム(参考)】
5B056BB71
5B057CH04
5B057CH05
5B057CH09
5B057CH11
(57)【要約】
【課題】許容可能な消費電力の範囲内で、ニューラルネットワークの処理効率を高めることが可能な半導体装置を提供する。
【解決手段】メモリMEM2は、複数の入力データDiからなる入力データセットDSiを複数記憶する。n個の積和演算器MACは、並列処理が可能であり、それぞれが複数の重みパラメータセットWSのいずれかと複数の入力データセットDSiのいずれかとを積和演算する。DMAコントローラDMAC2は、メモリMEM2からn個の積和演算器MACに、入力データセットDSiを転送する。計測回路22は、メモリMEM2内の入力データセットDSiに含まれる複数の入力データDi間での論理レベルの一致/不一致の度合いを計測し、シーケンスコントローラ21は、計測回路22による計測結果に基づいて、n個の積和演算器MACによる並列処理数を制御する。
【選択図】図1
【特許請求の範囲】
【請求項1】
ニューラルネットワークの処理を実行する半導体装置であって、
複数の重みパラメータからなる重みパラメータセットを複数記憶する第1のメモリと、
複数の入力データからなる入力データセットを複数記憶する第2のメモリと、
並列処理が可能であり、nを2以上の整数として、それぞれが前記複数の重みパラメータセットのいずれかと前記複数の入力データセットのいずれかとを積和演算するn個の積和演算器と、
前記第1のメモリから前記n個の積和演算器に、単数または複数の前記重みパラメータセットを転送する第1のDMA(Direct Memory Access)コントローラと、
前記第2のメモリから前記n個の積和演算器に、単数または複数の前記入力データセットを転送する第2のDMAコントローラと、
入力コマンドに基づいて、前記第2のDMAコントローラおよび前記n個の積和演算器を制御するシーケンスコントローラと、
計測回路と、
を備え、
前記計測回路は、前記第2のメモリ内の前記入力データセットに含まれる前記複数の入力データ間での論理レベルの一致/不一致の度合いを計測し、
前記シーケンスコントローラは、前記計測回路による計測結果に基づいて、前記n個の積和演算器による並列処理数を制御する、
半導体装置。
【請求項2】
請求項1記載の半導体装置において、
前記第1のメモリは、さらに、前記複数の入力データセットを記憶し、
前記第2のメモリは、前記第1のメモリよりも高速なメモリであり、前記n個の積和演算器のキャッシュメモリとして用いられ、
前記複数の入力データセットは、予め前記第1のメモリから前記第2のメモリにコピーされ、
前記計測回路は、前記入力データセットが前記第1のメモリから前記第2のメモリにコピーされる際に、前記複数の入力データ間での論理レベルの一致/不一致の度合いを計測し、計測結果を計測結果テーブルに書き込む、
半導体装置。
【請求項3】
請求項2記載の半導体装置において、
前記シーケンスコントローラは、前記入力コマンドに基づいて前記第2のDMAコントローラおよび前記n個の積和演算器を動作させる前に、前記計測結果テーブルから、処理対象となる前記入力データセットに対する計測結果を取得し、取得した計測結果に基づいて、前記n個の積和演算器による並列処理数を制御する、
半導体装置。
【請求項4】
請求項2記載の半導体装置において、
前記計測回路は、前記複数の入力データが前記第2のメモリに順次書き込まれる際に、隣接する2個の入力データ間で生じる論理レベルのトグル数をカウントすることで、前記複数の入力データ間での論理レベルの一致/不一致の度合いを計測する、
半導体装置。
【請求項5】
請求項1記載の半導体装置において、
前記シーケンスコントローラは、前記入力コマンドに基づいて前記第2のDMAコントローラおよび前記n個の積和演算器を動作させた場合に生じる消費電力を、前記計測回路による計測結果に基づいて予測し、予測電力が予め設定された目標電力を超える場合、前記予測電力が前記目標電力を超えない範囲で前記目標電力に近くなるように、前記n個の積和演算器による並列処理数を減らし、必要な処理が時分割で行われるように、前記第2のDMAコントローラおよび前記n個の積和演算器を制御する、
半導体装置。
【請求項6】
請求項5記載の半導体装置において、
前記シーケンスコントローラは、前記複数の入力データ間での論理レベルの不一致の度合いが高くなるほど消費電力が増加すると予測する、
半導体装置。
【請求項7】
請求項6記載の半導体装置において、
さらに、前記半導体装置の消費電力を検出する電力検出器を備え、
前記シーケンスコントローラは、前記複数の入力データ間での論理レベルの不一致の度合いと、予測する消費電力との相関関係を、前記電力検出器による検出結果に基づいて補正する、
半導体装置。
【請求項8】
一つの半導体チップで構成される半導体装置であって、
ニューラルネットワークの処理を実行するニューラルネットワークエンジンと、
複数の重みパラメータからなる重みパラメータセットを複数記憶する第1のメモリと、
複数の入力データからなる入力データセットを複数記憶する第2のメモリと、
プロセッサと、
前記ニューラルネットワークエンジン、前記第1のメモリ、前記第2のメモリおよび前記プロセッサを互いに接続するバスと、
を備え、
前記ニューラルネットワークエンジンは、
並列処理が可能であり、nを2以上の整数として、それぞれが前記複数の重みパラメータセットのいずれかと前記複数の入力データセットのいずれかとを積和演算するn個の積和演算器と、
前記第1のメモリから前記n個の積和演算器に、単数または複数の前記重みパラメータセットを転送する第1のDMA(Direct Memory Access)コントローラと、
前記第2のメモリから前記n個の積和演算器に、単数または複数の前記入力データセットを転送する第2のDMAコントローラと、
入力コマンドに基づいて、前記第2のDMAコントローラおよび前記n個の積和演算器を制御するシーケンスコントローラと、
計測回路と、
を備え、
前記計測回路は、前記第2のメモリ内の前記入力データセットに含まれる前記複数の入力データ間での論理レベルの一致/不一致の度合いを計測し、
前記シーケンスコントローラは、前記計測回路による計測結果に基づいて、前記n個の積和演算器による並列処理数を制御する、
半導体装置。
【請求項9】
請求項8記載の半導体装置において、
前記第1のメモリは、さらに、前記複数の入力データセットを記憶し、
前記第2のメモリは、前記第1のメモリよりも高速なメモリであり、前記ニューラルネットワークエンジンのキャッシュメモリとして用いられ、
前記プロセッサは、前記複数の入力データセットを、前記第1のメモリから前記第2のメモリに予めコピーし、
前記計測回路は、前記複数の入力データセットが前記第1のメモリから前記第2のメモリにコピーされる際に、前記複数の入力データ間での論理レベルの一致/不一致の度合いを計測し、計測結果を計測結果テーブルに書き込む、
半導体装置。
【請求項10】
請求項9記載の半導体装置において、
前記シーケンスコントローラは、前記入力コマンドに基づいて前記第2のDMAコントローラおよび前記n個の積和演算器を動作させる前に、前記計測結果テーブルから、処理対象となる前記入力データセットに対する計測結果を取得し、取得した計測結果に基づいて、前記n個の積和演算器による並列処理数を制御する、
半導体装置。
【請求項11】
請求項9記載の半導体装置において、
前記計測回路は、前記複数の入力データが前記第2のメモリに順次書き込まれる際に、隣接する2個の入力データ間で生じる論理レベルのトグル数をカウントすることで、前記複数の入力データ間での論理レベルの一致/不一致の度合いを計測する、
半導体装置。
【請求項12】
請求項8記載の半導体装置において、
前記シーケンスコントローラは、前記入力コマンドに基づいて前記第2のDMAコントローラおよび前記n個の積和演算器を動作させた場合に生じる消費電力を、前記計測回路による計測結果に基づいて予測し、予測電力が予め設定された目標電力を超える場合、前記予測電力が前記目標電力を超えない範囲で前記目標電力に近くなるように、前記n個の積和演算器による並列処理数を減らし、必要な処理が時分割で行われるように、前記第2のDMAコントローラおよび前記n個の積和演算器を制御する、
半導体装置。
【請求項13】
請求項12記載の半導体装置において、
前記シーケンスコントローラは、前記複数の入力データ間での論理レベルの不一致の度合いが高くなるほど消費電力が増加すると予測する、
半導体装置。
【請求項14】
請求項13記載の半導体装置において、
さらに、前記ニューラルネットワークエンジンの消費電力を検出する電力検出器を備え、
前記シーケンスコントローラは、前記複数の入力データ間での論理レベルの不一致の度合いと、予測する消費電力との相関関係を、前記電力検出器による検出結果に基づいて補正する、
半導体装置。
【請求項15】
請求項8記載の半導体装置において、
前記プロセッサは、前記シーケンスコントローラが変更前の入力コマンドに基づいて前記第2のDMAコントローラおよび前記n個の積和演算器を動作させた場合に生じる消費電力を、前記計測回路による計測結果に基づいて予測し、予測電力が予め設定された目標電力を超える場合、前記予測電力が前記目標電力を超えない範囲で前記目標電力に近くなるように、前記n個の積和演算器による並列処理数を減らし、削減後の並列処理数を反映させた変更後の入力コマンドを、前記シーケンスコントローラに出力する、
半導体装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、半導体装置に関し、例えば、ニューラルネットワークの処理を実行する半導体装置に関する。
【背景技術】
【0002】
特許文献1には、半導体装置を構成する各論理回路ブロックに、論理回路ブロックの電力状態を制御する電力状態制御回路と、論理回路ブロックへの入力有無に応じて電力状態制御回路を制御する予測回路とが付加された構成が示される。これにより、多種多用なIPをオンチップにした場合に自立分散的に低電力化を図ることが可能になる。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2002-229690号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
例えば、CNN(Convolutional Neural Network)等のニューラルネットワークの処理では、半導体装置に搭載される複数のDMA(Direct Memory Access)コントローラおよび複数の積和演算器等を用いて膨大な演算処理が実行される。具体的には、DMAコントローラは、例えば、メモリが記憶している、ある畳み込み層の入力データ、すなわち画素データと、重みパラメータとを積和演算器に転送することで、積和演算器に積和演算を行わせる。また、DMAコントローラは、積和演算器による演算結果を、次の畳み込み層の入力データとして、メモリに転送する。半導体装置は、このような処理を繰り返し実行する。
【0005】
このような半導体装置では、製造プロセスの微細化や回路の成熟化が進むにつれて、積和演算器の搭載数は増加する。さらに、ニューラルネットワークの処理効率が上がることにより、単位時間内に実行できる演算数、すなわち積和演算器の並列処理数も増加する。ただし、積和演算器の並列処理数が増加すると、消費電力も増加する。例えば、車両システム用の半導体装置等では、システムの電源仕様、温度仕様等に応じて、半導体装置に対して許容する消費電力に上限値が設けられる場合がある。積和演算器の並列処理数が増加すると、消費電力が当該上限値を超える場合がある。
【0006】
一方、消費電力は、特許文献1に示されるような積和演算器に対する入力データの有無に限らず、入力データのパターンによっても変化し得る。例えば、入力データがカメラ画像の各画素値である場合、消費電力は、濃度変化によって変化し得る。濃度変化は、広ダイナミックレンジなカメラほど変化が大きくなる傾向にあるため、濃度変化が大きいカメラ画像ほど、消費電力はより大きくなり得る。
【0007】
そこで、濃度変化が大きいカメラ画像を想定し、消費電力が上限値を超えないように積和演算器の並列処理数を固定的に定めることが考えられる。ただし、この場合、濃度変化が小さいカメラ画像を処理する場合に、処理能力を過剰に低下させることになり、ニューラルネットワークの処理時間が増大し得る。
【0008】
後述する実施の形態は、このようなことに鑑みてなされたものであり、その他の課題と新規な特徴は、本明細書の記載および添付図面から明らかになるであろう。
【課題を解決するための手段】
【0009】
一実施の形態の半導体装置は、ニューラルネットワークの処理を実行するものであり、第1および第2のメモリと、n個の積和演算器と、第1および第2のDMAコントローラと、シーケンスコントローラと、計測回路とを備える。第1のメモリは、複数の重みパラメータからなる重みパラメータセットを複数記憶する。第2のメモリは、複数の入力データからなる入力データセットを複数記憶する。n個の積和演算器は、並列処理が可能であり、それぞれが複数の重みパラメータセットのいずれかと複数の入力データセットのいずれかとを積和演算する。第1のDMAコントローラは、第1のメモリからn個の積和演算器に、単数または複数の前記重みパラメータセットを転送する。第2のDMAコントローラは、第2のメモリからn個の積和演算器に、単数または複数の入力データセットを転送する。シーケンスコントローラは、入力コマンドに基づいて、第2のDMAコントローラおよびn個の積和演算器を制御する。ここで、計測回路は、第2のメモリ内の入力データセットに含まれる複数の入力データ間での論理レベルの一致/不一致の度合いを計測し、シーケンスコントローラは、計測回路による計測結果に基づいて、n個の積和演算器による並列処理数を制御する。
【発明の効果】
【0010】
一実施の形態の半導体装置を用いることで、許容可能な消費電力の範囲内で、ニューラルネットワークの処理効率を高めることが可能になる。
【図面の簡単な説明】
【0011】
図1図1は、実施の形態1による半導体装置において、主要部の構成例を示す概略図である。
図2A図2Aは、図1におけるMACユニットのより詳細な構成例および動作例を示す模式図である。
図2B図2Bは、図1におけるMACユニットの、図2Aとは異なる動作例を示す模式図である。
図3図3は、図1におけるニューラルネットワークエンジンの主要部の詳細な構成例を示す図である。
図4図4は、入力画像のパターンと電力との関係の一例を示す模式図である。
図5図5は、図1および図3における計測回路の動作例を示す波形図である。
図6図6は、図1および図3における計測回路の構成例を示す回路ブロック図である。
図7図7は、図3における計測結果テーブルの構成例を示す図である。
図8図8は、図1および図3におけるシーケンスコントローラの動作例を説明する図であり、図7におけるトグル数と電力との相関関係の一例を示す図である。
図9図9は、図1および図3におけるシーケンスコントローラの処理内容の一例を示すフロー図である。
図10A図10Aは、図1および図3に示したニューラルネットワークエンジンにおける、通常動作の一例および当該動作に伴う電力状態の一例を示すタイミングチャートである。
図10B図10Bは、図10Aを基準として、並列処理数を削減した後の動作例および当該動作に伴う電力状態の一例を示すタイミングチャートである。
図11図11は、実施の形態2による半導体装置において、主要部の構成例を示す概略図である。
図12図12は、図11におけるシーケンスコントローラの動作例を説明する図であり、トグル数と電力との相関関係の一例を示す図である。
【発明を実施するための形態】
【0012】
以下の実施の形態においては便宜上その必要があるときは、複数のセクションまたは実施の形態に分割して説明するが、特に明示した場合を除き、それらはお互いに無関係なものではなく、一方は他方の一部または全部の変形例、詳細、補足説明等の関係にある。また、以下の実施の形態において、要素の数等(個数、数値、量、範囲等を含む)に言及する場合、特に明示した場合および原理的に明らかに特定の数に限定される場合等を除き、その特定の数に限定されるものではなく、特定の数以上でも以下でもよい。
【0013】
さらに、以下の実施の形態において、その構成要素(要素ステップ等も含む)は、特に明示した場合および原理的に明らかに必須であると考えられる場合等を除き、必ずしも必須のものではないことは言うまでもない。同様に、以下の実施の形態において、構成要素等の形状、位置関係等に言及するときは、特に明示した場合および原理的に明らかにそうでないと考えられる場合等を除き、実質的にその形状等に近似または類似するもの等を含むものとする。このことは、上記数値および範囲についても同様である。
【0014】
以下、実施の形態を図面に基づいて詳細に説明する。なお、実施の形態を説明するための全図において、同一の機能を有する部材には同一の符号を付し、その繰り返しの説明は省略する。また、以下の実施の形態では、特に必要なとき以外は同一または同様な部分の説明を原則として繰り返さない。
【0015】
(実施の形態1)
<半導体装置の概略>
図1は、実施の形態1による半導体装置において、主要部の構成例を示す概略図である。図1に示す半導体装置10は、例えば、一つの半導体チップで構成されるSoC(System on Chip)等である。当該半導体装置10は、代表的には、車両のECU(Electronic Control Unit)等に搭載され、ADAS(Advanced Driver Assistance System)の機能を提供する。
【0016】
図1に示す半導体装置10は、ニューラルネットワークエンジン15と、CPU(Central Processing Unit)、DSP(Digital Signal Processor)等のプロセッサ17と、メモリMEM1,MEM2と、システムバス16とを有する。システムバス16は、ニューラルネットワークエンジン15、メモリMEM1,MEM2およびプロセッサ17を互いに接続する。ニューラルネットワークエンジン15は、CNNを代表とするニューラルネットワークの処理を実行する。プロセッサ17は、メモリMEM1が記憶している所定のプログラムを実行することで、ニューラルネットワークエンジン15の制御を含めて、半導体装置10に所定の機能を担わせる。
【0017】
メモリ(第1のメモリ)MEM1は、例えば、DRAM(Dynamic Random Access Memory)である。メモリMEM1は、カメラ画像等を構成する複数の入力データセットDSiと、入力コマンドCMD1およびパラメータPRとを記憶する。1個の入力データセットDSiは、例えば、畳み込み処理の単位となる画素空間内のデータであり、複数の入力データDi、言い換えれば複数の画素データからなる。入力コマンドCMD1は、ニューラルネットワークエンジン15のシーケンス動作を制御するための各種情報を含む。パラメータPRは、バイアスパラメータBPと、複数の重みパラメータセットWSとを含む。複数の重みパラメータセットWSのそれぞれは、複数の重みパラメータからなる。
【0018】
ニューラルネットワークエンジン15は、複数のDMAコントローラDMAC1,DMAC2と、MACユニット20と、シーケンスコントローラ21と、計測回路22と、レジスタREGと、各種バッファとを備える。各種バッファには、重みパラメータバッファWBFと、データ入力バッファIBFと、データ出力バッファOBFとが含まれる。各種バッファは、詳細には、例えば、フリップフロップ等のラッチ回路で構成されるレジスタであってよい。
【0019】
MACユニット20は、nを2以上の整数として、n個の積和演算器MAC1~MACnを備える。n個の積和演算器MAC1~MACnは、並列処理が可能となっている。n個の積和演算器MAC1~MACnのそれぞれは、例えば、複数の乗算器と、複数の乗算器からの乗算結果を加算する1個の加算器とを備え、これによって積和演算を実行する。明細書では、n個の積和演算器MAC1~MACnを総称して、積和演算器MACと呼ぶ。
【0020】
重みパラメータバッファWBFは、単数または複数の重みパラメータセットWSを記憶し、当該重みパラメータセットWSを、MACユニット20内の積和演算器MACに出力する。データ入力バッファIBFは、単数または複数の入力データセットDSiを記憶し、当該入力データセットDSiを、MACユニット20内の積和演算器MACに出力する。データ出力バッファOBFは、MACユニット20内の積和演算器MACからの出力データDoを記憶する。
【0021】
DMAコントローラ(第1のDMAコントローラ)DMAC1は、メモリMEM1から重みパラメータバッファWBF、ひいては積和演算器MACに、システムバス16を介して単数または複数の重みパラメータセットWSを転送する。また、DMAコントローラDMAC1は、メモリMEM1から入力コマンドCMD1を読み出し、当該入力コマンドCMD1をレジスタREGに書き込む。例えば、重みパラメータセットWSと入力コマンドCMD1とは、データ幅方向に割り当てられ、メモリMEM1から並列に読み出される。
【0022】
メモリ(第2のメモリ)MEM2は、例えば、メモリMEM1よりも高速なメモリ、具体的にはSRAM等であり、ニューラルネットワークエンジン15、特にMACユニット20の高速キャッシュメモリとして用いられる。メモリMEM2は、複数の入力データセットDSiや、出力データDoを記憶する。例えば、カメラ画像等を構成する複数の入力データセットDSiは、予めメモリMEM1からメモリMEM2にコピーされたのち、ニューラルネットワークエンジン15で用いられる。
【0023】
DMAコントローラ(第2のDMAコントローラ)DMAC2は、メモリMEM2からデータ入力バッファIBF、ひいては積和演算器MACに、単数または複数の入力データセットDSiを転送する。また、DMAコントローラDMAC2は、データ出力バッファOBF、ひいては積和演算器MACから、メモリMEM2に、出力データDoを転送する。
【0024】
MACユニット20内の各積和演算器MACは、重みパラメータバッファWBFからの複数の重みパラメータセットWSのいずれかと、データ入力バッファIBFからの複数の入力データセットDSiのいずれかとを積和演算する。すなわち、各積和演算器MACは、1個の重みパラメータセットWSに含まれる複数の重みパラメータと、1個の入力データセットDSiに含まれる複数の入力データDiとを積和演算することで、例えば、畳み込み層の処理を実行する。
【0025】
また、各積和演算器MACは、積和演算結果を出力データDoとしてデータ出力バッファOBFに書き込む。データ出力バッファOBFに書き込まれた出力データDoは、DMAコントローラDMAC2によってメモリMEM2に転送される。当該メモリMEM2に転送された出力データDoは、例えば、次の畳み込み層での入力データDiとなる。なお、詳細は省略するが、各積和演算器MACは、積和演算結果に対してバイアスパラメータBPの値の加算や、活性化関数の演算や、プーリング層の処理等といったCNNで必要とされる各種処理を行ってもよい。
【0026】
計測回路22は、メモリMEM2内の入力データセットDSiに含まれる複数の入力データDi間での論理レベルの一致/不一致の度合いを計測する。シーケンスコントローラ21は、ニューラルネットワークエンジン15全体の動作シーケンスを制御する。その一つとして、シーケンスコントローラ21は、入力コマンドや、計測回路22による計測結果に基づいて、DMAコントローラDMAC2およびMACユニット20を制御する。入力コマンドは、レジスタREGが記憶している入力コマンドCMD1、または、プロセッサ17がシステムバス16を介して出力した入力コマンドCMD2である。
【0027】
シーケンスコントローラ21は、DMAコントローラDMAC2の制御として、DMAコントローラDMAC2のオン/オフ、詳細には、DMAコントローラDMAC2における転送チャネル毎のオン/オフ、言い換えれば活性化/非活性化を制御する。そして、シーケンスコントローラ21は、オンに制御するDMAコントローラDMAC2の転送チャネルに対して、メモリMEM2から入力データセットDSiを転送する際の転送元アドレスや、メモリMEM2に出力データDoを転送する際の転送先アドレス等を設定する。
【0028】
また、シーケンスコントローラ21は、MACユニット20の制御として、n個の積和演算器MAC1~MACnによる並列処理数を制御する。すなわち、シーケンスコントローラ21は、積和演算器MAC毎のオン/オフ、言い換えれば活性化/非活性化を制御する。詳細は後述するが、シーケンスコントローラ21は、このような並列処理数の制御を、計測回路22による計測結果に基づいて行う。
【0029】
図2Aは、図1におけるMACユニットのより詳細な構成例および動作例を示す模式図である。図2Aには、ある制御サイクルにおいて、n個の積和演算器MAC1~MACnが、同一の重みパラメータセットWSと、畳み込み処理に伴う異なる画素空間内のデータ、すなわち互いに異なる入力データセットDSiとを、積和演算する場合の動作例が示される。
【0030】
この例では、重みパラメータセットWSとして、複数の出力チャネルCHo[1],CHo[2],…にそれぞれ対応する複数の重みパラメータセットWS[1],WS[2],…が示される。複数の重みパラメータセットWS[1],WS[2],…のそれぞれは、例えば、4(=2×2)個の重みパラメータW1~W4からなる。なお、重みパラメータセットWS[1]内の重みパラメータW1~W4の各値と、重みパラメータセットWS[2]内の重みパラメータW1~W4の各値とは、適宜異なり得る。
【0031】
また、メモリMEM2は、複数の入力データセットDSi[1],DSi[2],…を記憶している。入力データセットDSi[1]は、重みパラメータセットWSと同じ4(=2×2)個の入力データDi[1]~Di[4]、言い換えれば画素データからなる。同様に、入力データセットDSi[2]も、4個の入力データDi[3]~Di[6]からなる。例えば、入力データセットDSi[1]は、畳み込み処理に伴う1番目の画素空間内、ここでは2×2の画素空間内のデータであり、入力データセットDSi[2]は、畳み込み処理に伴う2番目の画素空間内のデータである。
【0032】
図2Aに示されるように、ある制御サイクルでは、n個の積和演算器MAC1~MACnに、同一の重みパラメータセットWS[1]が入力される。また、n個の積和演算器MAC1,MAC2,…に、それぞれ異なる入力データセットDSi[1],DSi[2],…が入力される。各積和演算器MACは、複数、この例では4個の乗算器MULと、当該複数の乗算器MULからの乗算結果を加算する1個の加算器ADDとを備える。
【0033】
積和演算器MAC1は、重みパラメータセットWS[1]に含まれる4個の重みパラメータW1~W4と、入力データセットDSi[1]に含まれる4個の入力データDi[1]~Di[4]とを積和演算する。これにより、積和演算器MAC1は、出力チャネルCHo[1]の特徴マップにおける1番目の座標の出力データDo[1]を生成する。これと並行して、積和演算器MAC2は、重みパラメータセットWS[1]に含まれる4個の重みパラメータW1~W4と、入力データセットDSi[2]に含まれる4個の入力データDi[3]~Di[6]とを積和演算する。これにより、積和演算器MAC2は、出力チャネルCHo[1]の特徴マップにおける2番目の座標の出力データDo[2]を生成する。
【0034】
このようにして、全ての画素空間に対する畳み込み処理が終了すると、出力チャネルCHo[1]の特徴マップが完成する。その後は、出力チャネルCHo[1]の重みパラメータセットWS[1]の代わりに、出力チャネルCHo[2]の重みパラメータセットWS[2]を用いて、同様の畳み込み処理が行われる。その結果、出力チャネルCHo[2]の特徴マップが完成する。
【0035】
なお、ここでは、説明を簡素化するため、各重みパラメータセットWSは、4(=2×2)個の重みパラメータW1~W4で構成された。ただし、この重みパラメータの数は、CNN等の構成に応じて適宜変わり、例えば、“3×3×入力チャネル数”等となり得る。これに応じて、各積和演算器MACに必要な乗算器MULの数も適宜変わり得る。図1に示したMACユニット20は、様々な重みパラメータの数、言い換えれば、様々なカーネル構成や入力サイズに対応するため、適宜グルーピングを行うことで各積和演算器MACに含まれる乗算器MULの数等を可変設定可能となっている。
【0036】
図2Bは、図1におけるMACユニットの、図2Aとは異なる動作例を示す模式図である。図2Bには、図2Aの場合と異なり、ある制御サイクルにおいて、n個の積和演算器MAC1~MACnが、同一の入力データセットDSiと、互いに異なる重みパラメータセットWSとを、積和演算する場合の動作例が示される。図2Aの動作例と図2Bの動作例とは、入力コマンドCMD1,CMD2等によって使い分けることが可能である。
【0037】
図2Bに示されるように、ある制御サイクルでは、n個の積和演算器MAC1~MACnに、同一の入力データセットDSi[1]が入力される。また、n個の積和演算器MAC1,MAC2,…,MACnに、それぞれ異なる重みパラメータセットWS[1],WS[2],…,WS[n]が入力される。重みパラメータセットWS[1],WS[2],…,WS[n]は、それぞれ、出力チャネルCHo[1],CHo[2],…,CHo[n]に対応するものである。
【0038】
積和演算器MAC1は、出力チャネルCHo[1]の重みパラメータセットWS[1]に含まれる4個の重みパラメータW1~W4と、入力データセットDSi[1]に含まれる4個の入力データDi[1]~Di[4]とを積和演算する。これにより、積和演算器MAC1は、出力チャネルCHo[1]の特徴マップにおける1番目の座標の出力データDo[1]を生成する。これと並行して、積和演算器MAC2は、出力チャネルCHo[2]の重みパラメータセットWS[2]に含まれる4個の重みパラメータW1~W4と、入力データセットDSi[1]に含まれる4個の入力データDi[1]~Di[4]とを積和演算する。これにより、積和演算器MAC2は、出力チャネルCHo[2]の特徴マップにおける1番目の座標の出力データDo[1]を生成する。
【0039】
このようにして、1番目の画素空間のデータ、すなわち入力データセットDSi[1]を対象に、全ての出力チャネルでの処理を終えると、全ての特徴マップにおける1番目の座標の出力データDo[1]が生成される。その後は、入力データセットDSi[1]の代わりに、入力データセットDSi[2]、すなわち2番目の画素空間のデータを用いて、同様の処理が行われる。その結果、全ての特徴マップにおける2番目の座標の出力データDo[2]が生成される。
【0040】
<ニューラルネットワークエンジンの詳細>
図3は、図1におけるニューラルネットワークエンジンの主要部の詳細な構成例を示す図である。図3において、MACユニット20は、n個の積和演算器MAC1~MACnを備える。n個の積和演算器MAC1~MACnのそれぞれは、図2Aで述べたように、複数の乗算器MULと、1個の加算器ADDとを備える。データ入力バッファIBF、重みパラメータバッファWBFおよびデータ出力バッファOBFは、n個の積和演算器MAC1~MACnのそれぞれに対して設けられる。n個のデータ入力バッファIBF、重みパラメータバッファWBFおよびデータ出力バッファOBFは、それぞれ、n個のデータ入力レジスタ、重みパラメータレジスタおよびデータ出力レジスタであってよい。
【0041】
DMAコントローラDMAC1は、図1に示したメモリMEM1から、各重みパラメータバッファWBF、ひいては各積和演算器MACに、重みパラメータセットWSを転送する。また、DMAコントローラDMAC1は、メモリMEM1からレジスタREGに、入力コマンドCMD1を転送する。一方、図1に示したデータ用のDMAコントローラDMAC2は、詳細には、図3に示されるように、データ入力用のDMAコントローラDMAC2iと、データ出力用のDMAコントローラDMAC2oとを有する。
【0042】
データ入力用のDMAコントローラDMAC2iは、n個のデータ入力バッファIBF、ひいてはn個の積和演算器MAC1~MACnに、複数の入力データDiからなる入力データセットDSiを、n個の転送チャネルCH1~CHnを用いてそれぞれ転送する。データ出力用のDMAコントローラDMAC2oは、n個の積和演算器MAC1~MACnから出力され、n個のデータ出力バッファOBFに書き込まれた出力データDoを、n個の転送チャネルCH1~CHnを用いてそれぞれ転送する。
【0043】
計測回路22は、入力データセットDSiに含まれる複数の入力データDi間での論理レベルの一致/不一致の度合いを計測し、当該計測結果を、メモリ25内の計測結果テーブル26に書き込む。メモリ25は、例えば、図1に示したメモリMEM1,MEM2であってもよく、別途設けられるものであってもよい。シーケンスコントローラ21は、レジスタREGに書き込まれた入力コマンドCMD1、または図1に示したプロセッサ17からの入力コマンドCMD2と、計測回路22による計測結果、詳細には、計測結果テーブル26とに基づいて、データ用のDMAコントローラDMAC2i,DMAC2oおよびn個の積和演算器MAC1~MACnを制御する。
【0044】
詳細には、シーケンスコントローラ21は、n個のイネーブル信号ENm1~ENmNを用いて、n個の積和演算器MAC1~MACnのオン/オフ、言い換えれば活性化/非活性化をそれぞれ制御する。さらに、シーケンスコントローラ21は、n個のイネーブル信号ENi1~ENiNを用いて、データ入力用のDMAコントローラDMAC2iにおけるn個の転送チャネルCH1~CHnのオン/オフをそれぞれ制御する。
【0045】
同様に、シーケンスコントローラ21は、n個のイネーブル信号ENo1~ENoNを用いて、データ出力用のDMAコントローラDMAC2oにおけるn個の転送チャネルCH1~CHnのオン/オフをそれぞれ制御する。なお、オフに制御された積和演算器MACや転送チャネルは、例えば、内部のフリップフロップ等へのクロック信号の入力が停止されること等で、省電力状態となる。
【0046】
また、シーケンスコントローラ21は、データ入力用のDMAコントローラDMAC2iにおけるn個の転送チャネルCH1~CHn、詳細には、オンに制御される転送チャネルに対して、転送設定信号SDiを用いて転送内容の設定を行う。具体的には、メモリMEM2内の転送元アドレスの設定等が行われる。同様に、シーケンスコントローラ21は、データ出力用のDMAコントローラDMAC2oにおけるn個の転送チャネルCH1~CHn、詳細には、オンに制御される転送チャネルに対して、転送設定信号SDoを用いて転送内容の設定を行う。具体的には、メモリMEM2内の転送先アドレスの設定等が行われる。
【0047】
<計測回路の詳細>
図4は、入力画像のパターンと電力との関係の一例を示す模式図である。例えば、車載カメラ等によって取得されたカメラ画像は、メモリMEM1に書き込まれ、図1で述べたように、予め、メモリMEM1からメモリMEM2にコピーされる。図4には、このようなカメラ画像40a,40b,40c1,40c2の一例が模式的に示される。例えば、カメラ画像40aは、前述したように、複数の入力データセットDSi[1],DSi[2],…で構成される。各入力データセットDSiは、複数の入力データDiからなる。各入力データDiは、画素値を表す。
【0048】
図4において、カメラ画像40aは、細かい格子パターンからなり、カメラ画像40bは、カメラ画像40aよりも粗い格子パターンからなり、カメラ画像40c1,40c2は、塗りつぶしパターンからなる。この場合、カメラ画像の濃度変化は、カメラ画像40a>カメラ画像40b>カメラ画像40c1,40c2の順に大きくなる。そして、ニューラルネットワークエンジン15の消費電力は、濃度変化が大きいカメラ画像ほど、大きくなり得る。
【0049】
その主な要因として、濃度変化が大きいカメラ画像を処理する時ほど、ニューラルネットワークエンジン15内の各内部配線等における充放電回数が増加し易いことが挙げられる。例えば、入力データDi、すなわち画素値を8ビットとして、最も暗い画素値を0(=0b00000000)、最も明るい画素値を255(=0b11111111)とした場合、カメラ画像40aの処理に伴い画素値を0から255に変化させる際に、8ビットの充電が必要とされる。なお、高性能化に伴いカメラ画像の画素分解能が高まる、すなわち画素値のビット幅が増加すると、カメラ画像の濃度変化に応じた消費電力の変化量も、より大きくなり得る。
【0050】
計測回路22は、このようなカメラ画像等における濃度変化の度合いを計測するために設けられる。図5は、図1および図3における計測回路の動作例を示す波形図である。図6は、図1および図3における計測回路の構成例を示す回路ブロック図である。図7は、図3における計測結果テーブルの構成例を示す図である。
【0051】
計測回路22は、図5および図6に示されるように、カメラ画像等を構成する複数の入力データセットDSiがメモリMEM1からメモリMEM2にコピーされる際に、複数の入力データDi間での論理レベルの一致/不一致の度合いを計測する。なお、メモリMEM1からメモリMEM2へのコピーは、例えば、図1に示したプロセッサ17によって行われる。
【0052】
より詳細には、計測回路22は、複数の入力データDiがメモリMEM2に順次書き込まれる際に、隣接する2個の入力データDi間で生じる論理レベルのトグル数をカウントすることで、複数の入力データDi間での論理レベルの一致/不一致の度合いを計測する。そして、計測回路22は、計測結果を計測結果テーブル26に書き込む。
【0053】
図5の例では、メモリMEM2のアドレスADR[1],ADR[2],ADR[3],ADR[4],…に、入力データDi[1],Di[2],Di[3],Di[4],…が順次書き込まれている。入力データDi[1]~Di[4]は、入力データセットDSi[1]を構成する。また、入力データDiは、図6に示されるように、“m+1”ビット、例えば、8ビットや、16ビットや、24ビット等で構成される。
【0054】
図5において、計測回路22は、“m+1”ビットの入力データDi[1]と“m+1”ビットの入力データDi[2]との間で生じる論理レベルのトグル数をカウントすることで、カウント値CN[1,2]を算出する。同様に、計測回路22は、入力データDi[2]と入力データDi[3]とを対象にカウント値CN[2,3]を算出し、入力データDi[3]と入力データDi[4]とを対象にカウント値CN[3,4]を算出する。そして、計測回路22は、算出したカウント値CN[1,2],CN[2,3],CN[3,4]を積算することで、積算カウント値CNs[1]を算出する。積算カウント値CNs[1]は、入力データセットDSi[1]を対象としたトグル数を表す。
【0055】
図6において、計測回路22は、“m+1”個のフリップフロップFFと、“m+1”個の排他的論理和ゲートEORと、トグル数カウンタ30と、積算回路31とを備える。“m+1”個のフリップフロップFFは、例えば、メモリMEM2へのライトイネーブル信号WEに同期して、“m+1”ビットの入力データDiを1回のライトサイクル分遅延される。“m+1”個の排他的論理和ゲートEORは、現ライトサイクルでの“m+1”ビットの入力データDiと、フリップフロップFFからの前ライトサイクルでの“m+1”ビットの入力データDiとの一致/不一致を、ビット毎に比較する。
【0056】
トグル数カウンタ30は、排他的論理和ゲートEORからの出力に基づいて、不一致となったビット数、すなわちトグル数をカウントすることで、カウント値CNを算出する。積算回路31は、トグル数カウンタ30からのカウント値CNを時系列で積算することで、積算カウント値CNsを算出する。そして、積算回路31は、積算カウント値CNsを、計測結果として計測結果テーブル26に書き込む。計測結果テーブル26は、図7の例では、入力データセットDSi[1],DSi[2],…,DSi[j]毎のトグル数、すなわち積算カウント値CNs[1],CNs[2],…,CNs[j]を記憶する。
【0057】
<シーケンスコントローラの詳細>
図8は、図1および図3におけるシーケンスコントローラの動作例を説明する図であり、図7におけるトグル数と電力との相関関係の一例を示す図である。図8において、予測電力Ppに示されるように、シーケンスコントローラ21は、トグル数が増加するほど、すなわち、複数の入力データDi間での論理レベルの不一致の度合いが高くなるほど消費電力が増加するものと予測する。図8の例では、シーケンスコントローラ21は、消費電力はトグル数に比例して増加するものと予測する。
【0058】
具体例として、ある制御サイクルで、図2Aに示したような動作が行われる場合を想定する。また、この際に、通常動作では、n個の積和演算器MAC1~MACnは、それぞれ、n個の入力データセットDSi[1]~DSi[n]を入力として並列に演算を行うものとする。この場合、シーケンスコントローラ21は、計測結果テーブル26から、n個の入力データセットDSi[1]~DSi[n]に対する計測結果、すなわちn個のトリガ数を取得する。そして、シーケンスコントローラ21は、取得したn個のトリガ数を合計することで、当該制御サイクルに対するトリガ数を算出し、算出したトリガ数から当該制御サイクルで生じる消費電力を予測する。
【0059】
一方、ニューラルネットワークエンジン15を搭載した半導体装置10に対しては、例えば、当該半導体装置10を搭載した車両システム等の電源仕様、温度仕様等に応じて、予め許容可能な最大電力が定められる場合がある。シーケンスコントローラ21には、当該半導体装置10で許容可能な最大電力に基づいて、例えば、ニューラルネットワークエンジン15で許容可能な最大電力が目標電力Ptとして設定される。そして、シーケンスコントローラ21は、ある制御サイクルにおいて、予測電力Ppが目標電力Ptを超える場合、予測電力Ppが目標電力Ptを超えない範囲で目標電力Ptに近くなるように、n個の積和演算器MAC1~MACnによる並列処理数を減らす制御を行う。
【0060】
例えば、ある1回の制御サイクルにおける予測電力Ppが目標電力Ptの2倍であった場合、シーケンスコントローラ21は、n個の積和演算器MAC1~MACnによる並列処理数をn/2個に減らす。そして、シーケンスコントローラ21は、当該1回の制御サイクルを2回の制御サイクルに時分割することで、ニューラルネットワークエンジン15に必要な処理を行わせる。これにより、許容可能な消費電力の範囲内で、ニューラルネットワークの処理効率を高めることが可能になる。すなわち、予測電力Ppを目標電力Pt内に抑制しつつ、並列処理数が過剰に減らされる、ひいては、ニューラルネットワークの処理時間が過剰に増大するのを回避することができる。
【0061】
図9は、図1および図3におけるシーケンスコントローラの処理内容の一例を示すフロー図である。まず、図9に示される処理に先立って、プロセッサ17は、例えば、図5図6および図7で述べたように、複数の入力データセットDSiを、メモリMEM1からメモリMEM2にコピーする。この際に、計測回路22は、複数の入力データDi間での論理レベルの一致/不一致の度合いをトリガ数として計測し、計測結果を計測結果テーブル26に書き込んでおく。
【0062】
このような処理が予め行われたのち、シーケンスコントローラ21は、図9に示されるような処理を行う。図9において、シーケンスコントローラ21は、レジスタREGに書き込まれた入力コマンドCMD1またはプロセッサ17からの入力コマンドCMD2を取得する(ステップS101)。当該入力コマンドCMD1,CMD2によって、例えば、ある畳み込み層を通常動作で処理する際の並列処理数が定められ、当該並列処理数に応じて、DMAコントローラDMAC2およびn個の積和演算器MAC1~MACnの制御内容も定められる。
【0063】
その後、シーケンスコントローラ21は、全ての処理対象、例えば全ての入力データセットDSiの処理が完了するまで、所定の制御単位でステップS102~S106の処理を繰り返し実行する(ステップS107)。ステップS102において、シーケンスコントローラ21は、入力コマンドCMD1,CMD2に基づく通常動作時に生じる消費電力を、計測結果テーブル26に基づき予測する(ステップS102)。
【0064】
具体的には、図8で述べたように、シーケンスコントローラ21は、入力コマンドCMD1,CMD2に基づいてDMAコントローラDMAC2およびn個の積和演算器MAC1~MACnを動作させる前に、計測結果テーブル26から、処理対象となる入力データセットDSiに対する計測結果、すなわちトリガ数を取得する。そして、シーケンスコントローラ21は、入力コマンドCMD1,CMD2に基づいてDMAコントローラDMAC2およびn個の積和演算器MAC1~MACnを通常動作させた場合に生じる消費電力を、取得した計測結果に基づいて予測する。
【0065】
次いで、シーケンスコントローラ21は、予測電力Ppが予め設定された目標電力Ptを超えるか否かを判定する(ステップS103)。“予測電力Pp≦目標電力Pt”である場合(ステップS103:Noの場合)、シーケンスコントローラ21は、入力コマンドCMD1,CMD2に基づく通常動作時の制御内容で、DMAコントローラDMAC2およびn個の積和演算器MAC1~MACnを制御する(ステップS106)。
【0066】
一方、“予測電力Pp>目標電力Pt”である場合(ステップS103:Yesの場合)、シーケンスコントローラ21は、予測電力Ppが目標電力Ptを超えない範囲で目標電力Ptに近くなるように、n個の積和演算器MAC1~MACnによる並列処理数を減らす(ステップS104)。そして、シーケンスコントローラ21は、削減後の並列処理数に基づいてシーケンス制御を行う(ステップS105)。具体的には、シーケンスコントローラ21は、必要な処理が時分割で行われるように、DMAコントローラDMAC2およびn個の積和演算器MAC1~MACnを制御する。
【0067】
図10Aは、図1および図3に示したニューラルネットワークエンジンにおける、通常動作の一例および当該動作に伴う電力状態の一例を示すタイミングチャートである。この例では、説明の簡素化のため、積和演算器MACの数“n”を4個とし、通常動作時には、4個の積和演算器MAC1~MACnが並列に演算を行うものとする。図10Aにおいて、ニューラルネットワークエンジン15は、1番目の制御サイクルTc1での処理を実行し、続いて、2番目の制御サイクルTc2での処理を実行する。明細書では、制御サイクルTc1,Tc2を総称して制御サイクルTcと呼ぶ。各制御サイクルTcは、期間T1,T2,T3からなる。
【0068】
期間T1において、データ入力用のDMAコントローラDMAC2iは、4個の転送チャネルCH1~CH4を用いて、メモリMEM2から4個の積和演算器MAC1~MAC4、詳細には各データ入力バッファIBFに、4個の入力データセットDSiを並列に転送する。また、DMAコントローラDMAC1は、メモリMEM1から4個の積和演算器MAC1~MAC4、詳細には各重みパラメータバッファWBFに、重みパラメータセットWSを転送する。
【0069】
期間T2において、4個の積和演算器MAC1~MAC4は、転送された入力データセットDSiと、転送された重みパラメータセットWSとを、並列に積和演算する。期間T3において、データ出力用のDMAコントローラDMAC2oは、4個の転送チャネルCH1~CH4を用いて、4個の積和演算器MAC1~MAC4の各データ出力バッファOBFからメモリMEM2に、積和演算結果となる4個の出力データDoを並列に転送する。
【0070】
また、期間T1に先立って、シーケンスコントローラ21は、データ入力用のDMAコントローラDMAC2iにおける4個の転送チャネルCH1~CH4に対して、転送設定信号SDiを用いて転送内容を設定する。同様に、シーケンスコントローラ21は、データ出力用のDMAコントローラDMAC2oにおける4個の転送チャネルCH1~CH4に対して、転送設定信号SDoを用いて転送内容を設定する。
【0071】
そして、シーケンスコントローラ21は、期間T1において、4個のイネーブル信号ENi1~ENi4を用いて、データ入力用のDMAコントローラDMAC2iにおける4個の転送チャネルCH1~CHnを共にオンに制御する。これにより、当該4個の転送チャネルCH1~CH4を用いて入力データセットDSiの転送が行われる。また、シーケンスコントローラ21は、期間T2において、4個のイネーブル信号ENm1~ENm4を用いて、4個の積和演算器MAC1~MAC4を共にオンに制御する。これによって、4個の積和演算器MAC1~MAC4は、積和演算を実行する。
【0072】
さらに、シーケンスコントローラ21は、期間T3において、4個のイネーブル信号ENo1~ENo4を用いて、データ出力用のDMAコントローラDMAC2oにおける4個の転送チャネルCH1~CHnを共にオンに制御する。これによって、当該4個の転送チャネルCH1~CH4を用いて出力データDoの転送が行われる。
【0073】
ここで、図10Aにおける1番目の制御サイクルTc1では、4個の積和演算器MAC1~MAC4は、4個の入力データセットDSi[1]~DSi[4]を入力として、4個の出力データDo[1]~Do[4]を出力している。入力データセットDSi[1]~DSi[4]を処理対象とする場合の消費電力は、入力データセットDSi[1]~DSi[4]に対する積算カウント値CNs[1]~CNs[4]の合計値によって予測される。この例では、当該合計値に基づく予測電力Ppは、目標電力Ptを超えている。
【0074】
一方、図10Aにおける2番目の制御サイクルTc2では、4個の積和演算器MAC1~MAC4は、4個の入力データセットDSi[5]~DSi[8]を入力として、4個の出力データDo[5]~Do[8]を出力している。入力データセットDSi[5]~DSi[8]を処理対象とする場合の消費電力は、入力データセットDSi[5]~DSi[8]に対する積算カウント値CNs[5]~CNs[8]の合計値によって予測される。この例では、当該合計値に基づく予測電力Ppは、目標電力Ptを超えていない。
【0075】
図10Bは、図10Aを基準として、並列処理数を削減した後の動作例および当該動作に伴う電力状態の一例を示すタイミングチャートである。図10Aにおける1番目の制御サイクルTc1での予測電力Ppは、目標電力Ptを超えている。このため、シーケンスコントローラ21は、図8におけるステップS104,S105の処理によって、積和演算器MACによる並列処理数を削減し、これに応じてDMAコントローラDMAC2の転送チャネル数も削減する。
【0076】
この例では、図10Aにおける1回の制御サイクルTc1は、図10Bにおける2回の制御サイクルTc1A,Tc1Bに時分割されている。2回の制御サイクルTc1A,Tc1Bにおいて、積和演算器MACによる並列処理数は、4個から2個に削減されている。制御サイクルTc1Aでは、2個の積和演算器MAC1,MAC2は、2個の入力データセットDSi[1],DSi[2]を入力として、2個の出力データDo[1],Do[2]を出力する。制御サイクルTc1Bでは、2個の積和演算器MAC1,MAC2は、2個の入力データセットDSi[3],DSi[4]を入力として、2個の出力データDo[3],Do[4]を出力する。
【0077】
この際に、シーケンスコントローラ21は、イネーブル信号ENm1,ENm2を用いて2個の積和演算器MAC1,MAC2をオンに制御し、イネーブル信号ENi1,ENi2,ENo1,ENo2を用いて2個の転送チャネルCH1,CH2をオンに制御する。また、シーケンスコントローラ21は、イネーブル信号ENm3,ENm4を用いて2個の積和演算器MAC3,MAC4をオフに制御し、イネーブル信号ENi3,ENi4,ENo3,ENo4を用いて2個の転送チャネルCH3,CH4をオフに制御する。
【0078】
オフに制御された積和演算器MAC3,MAC4や転送チャネルCH3,CH4は、非活性状態となり、例えば、内部のフリップフロップ等へのクロック信号の入力が停止されること等で、省電力状態となる。このようにして、積和演算器MACの並列処理数を1/q、例えば1/2にすることで、理想的には、予測電力Ppを1/q、例えば1/2にすることができる。
【0079】
その結果、図10Bに示されるように、制御サイクルTc1A,Tc1Bにおける予測電力Ppは、目標電力Ptの範囲内で、目標電力Ptに近い大きさとなる。なお、図示は省略されるが、その次の制御サイクルTcでは、図8におけるステップS106の処理が行われる。すなわち、4個の積和演算器MAC1~MAC4を用いて、図10Aに示した制御サイクルTc2での処理が行われる。
【0080】
<変形例[1]について>
図7図10Aおよび図10Bに示した例では、1個の入力データセットDSi毎にトグル数を計測し、これに基づいて、1回の制御サイクルTc毎に消費電力を予測し、1回の制御サイクルTc毎に並列処理数を制御した。ただし、トグル数の計測する際の入力データセット数の単位や、消費電力の予測および並列処理数の制御を行う際の制御サイクル数の単位は、適宜変更することが可能である。
【0081】
例えば、図10Aにおいて、4個の入力データセットDSi[1]~DSi[4]を計測単位として1個のトグル数を計測しておき、当該1個のトグル数に基づいて、消費電力の予測および並列処理数の制御を行ってもよい。この際には、例えば、図2Aでの4個の入力データセットDSi[1]~DSi[4]に含まれる10個の入力データDi[1]~Di[10]を対象として、単純に、図5に示したようなカウント動作を行うことで、1個のトリガ数を計測してもよい。
【0082】
同様に、図10Aにおいて、8個の入力データセットDSi[1]~DSi[8]を計測単位として1個のトグル数を計測しておき、当該1個のトグル数に基づいて、2回の制御サイクルTc1,Tc2を単位として、消費電力の予測および並列処理数の制御を行ってもよい。さらには、1個のカメラ画像を構成する全ての入力データセットDSiを計測単位として、1個のトグル数を計測してもよい。この場合、当該1個のトグル数に基づいて、1個のカメラ画像を入力とする1層分の畳み込み層の処理に必要な全ての制御サイクルTcを単位として、消費電力の予測および並列処理数の制御が行われる。すなわち、並列処理数の制御は、畳み込み層の層毎に行われる。
【0083】
通常は、トグル数の計測単位となる入力データセットDSiの数や、並列処理数の制御単位となる制御サイクルTcの数が小さくなるほど、きめ細かい制御が可能となり、許容可能な消費電力の範囲内で、ニューラルネットワークの処理効率を高めることが可能になる。ただし、その反面、シーケンスコントローラ21による制御動作が複雑化し、シーケンスコントローラ21における回路面積の増大や、処理時間の増大等を招くおそれがある。
【0084】
一方、トグル数の計測単位や並列処理数の制御単位が大きくなると、ニューラルネットワークの処理効率をある程度までしか高められないおそれがあるものの、シーケンスコントローラ21による制御動作を簡略化でき、さらに、並列処理数を最適化し易くなる場合もある。例えば、図10Aにおいて、4個の積和演算器MAC1~MAC4を用いて、3回の制御サイクルTcで12個の入力データセットDSi[1]~DSi[12]を処理する場合、この処理を、3個の積和演算器MAC1~MAC3を用いた4回の制御サイクルTcでの処理に変更すること等が可能になる。トグル数の計測単位や並列処理数の制御単位は、これらを考慮して適切に定められればよい。
【0085】
<変形例[2]について>
これまでに説明した構成例および動作例では、シーケンスコントローラ21が、変更前の入力コマンドに基づいて動作が行われた場合の消費電力を計測結果テーブル26に基づいて予測し、予測電力Pp>目標電力Ptの場合に並列処理数を減らす決定を行った。そして、シーケンスコントローラ21は、削減後の並列処理数に基づいてDMAコントローラDMAC2および積和演算器MACを制御した。ただし、消費電力の予測や、並列処理数を減らす決定は、シーケンスコントローラ21の代わりに、プロセッサ17が行ってもよい。
【0086】
特に、変形例[1]で述べたように、並列処理数の制御単位を畳み込み層の層毎とするような場合、プロセッサ17は、例えば、メモリMEM1等に書き込まれた計測結果テーブル26を参照することで、変更前の入力コマンドに基づいて畳み込み層の処理が行われた場合の消費電力を予測してもよい。プロセッサ17は、予測電力Pp>目標電力Ptの場合、予測電力Ppが目標電力Ptの範囲内で目標電力Ptに近くなるように並列処理数を減らす。そして、プロセッサ17は、削減後の並列処理数を反映させた変更後の入力コマンドCMD2を、シーケンスコントローラ21に出力すればよい。
【0087】
シーケンスコントローラ21は、当該プロセッサ17からの変更後の入力コマンドCMD2に基づいて、n個の積和演算器MACによる並列処理数を制御する。すなわち、シーケンスコントローラ21は、変更後の入力コマンドCMD2で指示された並列処理数で動作するように、DMAコントローラDMAC2および積和演算器MACを制御する。なお、この場合、プロセッサ17は、例えば、入力コマンドCMD2の出力によって畳み込み層での処理をニューラルネットワークエンジン15に依頼し、これに伴うニューラルネットワークエンジン15での処理と並行して別の処理を行うことができる。
【0088】
<実施の形態1の主要な効果>
以上、実施の形態1の方式では、複数の入力データDi間での論理レベルの一致/不一致の度合いを計測する計測回路22が設けられ、当該計測回路22による計測結果に基づいて、消費電力が予測される。そして、予測電力Ppが目標電力Ptを超えない範囲で目標電力Ptに近くなるように、積和演算器MACによる並列処理数が制御される。これにより、許容可能な消費電力の範囲内で、ニューラルネットワークの処理効率を高める、例えば処理時間を短縮することが可能になる。また、例えば、車両システム等において、カメラ画像毎に、その画像内容や画質等に応じて処理を効率化することが可能になる。
【0089】
(実施の形態2)
<半導体装置の概略>
図11は、実施の形態2による半導体装置において、主要部の構成例を示す概略図である。図12は、図11におけるシーケンスコントローラの動作例を説明する図であり、トグル数と電力との相関関係の一例を示す図である。図11に示される半導体装置10aは、図1の場合と同様の構成を備える。ただし、図11では、説明の簡素化のため、図1における一部の構成が抽出して示される。ここでは、図1との違いについて説明する。
【0090】
図11に示される半導体装置10aは、図1に示した各種構成に加えて、さらに、電流センサ36と、電力検出器23とを備える。電流センサ36は、半導体装置10a、この例ではニューラルネットワークエンジン15の電源ライン35に挿入され、半導体装置10a、この例ではニューラルネットワークエンジン15の消費電流Iddを検出する。電力検出器23は、例えば、ニューラルネットワークエンジン15内に搭載され、電流センサ36で検出された消費電流Iddと、電源電圧Vddとに基づいて、半導体装置10a、この例ではニューラルネットワークエンジン15の消費電力Paを検出する。
【0091】
シーケンスコントローラ21aは、電力検出器23で検出された実際の消費電力Paに基づいて、図12に示されるように、図8で述べた複数の入力データDi間での論理レベルの不一致の度合い、すなわちトグル数と、予測電力Ppとの相関関係を補正する。そして、シーケンスコントローラ21aは、補正された予測電力Ppに基づいて、図9におけるステップS102の処理等を実行する。
【0092】
<実施の形態2の主要な効果>
以上、実施の形態2の方式を用いることでも、実施の形態1で述べた各種効果と同様の効果が得られる。さらに、電力検出器23を設け、その検出結果に基づいて予測電力Ppを補正することで、トリガ数に基づく消費電力の予測精度を向上させることが可能になる。すなわち、半導体装置10aの使用環境、例えば温度等や、製造プロセスのばらつき等に応じて、トリガ数と実際の消費電力との相関関係は、適宜変動し得る。実施の形態2の方式を用いると、このような変動要素を反映して消費電力を予測することが可能になる。
【0093】
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は前記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。
【符号の説明】
【0094】
10,10a 半導体装置
15 ニューラルネットワークエンジン
16 システムバス
17 プロセッサ
18 メモリバス
20 MACユニット
21,21a シーケンスコントローラ
22 計測回路
23 電力検出器
26 計測結果テーブル
30 トグル数カウンタ
CMD1,CMD2 入力コマンド
CN カウント値
CNs 積算カウント値
DMAC1,DMAC2 DMAコントローラ
DSi 入力データセット
Di 入力データ
MAC 積和演算器
MEM1,MEM2 メモリ
Pp 予測電力
Pt 目標電力
W1~W1 重みパラメータ
WS 重みパラメータセット
図1
図2A
図2B
図3
図4
図5
図6
図7
図8
図9
図10A
図10B
図11
図12