(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024042193
(43)【公開日】2024-03-28
(54)【発明の名称】半導体装置
(51)【国際特許分類】
G06N 3/063 20230101AFI20240321BHJP
【FI】
G06N3/063
【審査請求】未請求
【請求項の数】7
【出願形態】OL
(21)【出願番号】P 2022146736
(22)【出願日】2022-09-15
(71)【出願人】
【識別番号】000004260
【氏名又は名称】株式会社デンソー
(71)【出願人】
【識別番号】000003207
【氏名又は名称】トヨタ自動車株式会社
(71)【出願人】
【識別番号】520124752
【氏名又は名称】株式会社ミライズテクノロジーズ
(74)【代理人】
【識別番号】110000028
【氏名又は名称】弁理士法人明成国際特許事務所
(72)【発明者】
【氏名】関 直樹
(57)【要約】
【課題】電力の消費効率を向上する。
【解決手段】半導体装置(1)は、複数の積和演算回路(11)を含み、ニューラルネットワークを用いた処理に使用されるハードウェアアクセラレータと、アクティブにする積和演算回路の割合を示す目標値が、ニューラルネットワークのモデルごとに、設定された目標テーブル(51)と、目標テーブルを参照し、実行対象となるニューラルネットワークのモデルについて設定されている目標値に応じて、複数の積和演算回路への電力の供給または電力供給の停止を個別に制御する電源制御部(50)と、半導体装置において処理が実行されているときに、複数の積和演算回路の実使用率を観測するモニタ部(30)と、半導体装置において処理が実行されているときに、目標値の更新が必要である場合、実使用率に基づいて新たな目標値を設定し、新たな目標値で目標テーブルを更新するテーブル更新部(54)と、を備える。
【選択図】
図1
【特許請求の範囲】
【請求項1】
半導体装置(1)であって、
複数の積和演算回路(11)を含み、ニューラルネットワークを用いた処理に使用されるハードウェアアクセラレータと、
前記複数の積和演算回路のうちアクティブにする積和演算回路の割合を示す目標値が、ニューラルネットワークのモデルごとに、設定された目標テーブル(51)と、
前記目標テーブルを参照し、前記半導体装置における実行対象となるニューラルネットワークのモデルについて設定されている前記目標値に応じて、前記複数の積和演算回路への電力の供給または電力供給の停止を個別に制御する電源制御部(50)と、
前記半導体装置において処理が実行されているときに、前記複数の積和演算回路の実使用率を観測するモニタ部(30)と、
前記半導体装置において処理が実行されているときに、前記目標値の更新が必要である場合、前記実使用率に基づいて新たな前記目標値を設定し、新たな前記目標値で前記目標テーブルを更新するテーブル更新部(54)と、
を備える半導体装置。
【請求項2】
請求項1に記載の半導体装置であって、
前記複数の積和演算回路は、同じ構成を備え、
前記目標値は、前記複数の積和演算回路のうち、電力供給の対象である前記積和演算回路の数を示し、
前記電源制御部は、前記複数の積和演算回路のうち、前記目標値が示す前記数の前記積和演算回路へ電力を供給し、残りの前記積和演算回路へ電力を供給しない、
半導体装置。
【請求項3】
請求項2に記載の半導体装置であって、
前記テーブル更新部は、
前記複数の積和演算回路のうちの電力供給の対象である前記積和演算回路の割合と、前記実使用率と、の差が、あらかじめ設定された値以上であるときを、前記目標値の更新が必要である場合として、
あらかじめ決められた期間に観測された前記実使用率の最大値に、あらかじめ決められた係数を乗じることにより得られる第1値に基づいて、前記目標値を設定する、
半導体装置。
【請求項4】
請求項2に記載の半導体装置であって、
前記テーブル更新部は、
前記複数の積和演算回路のうちの電力供給の対象である前記積和演算回路の割合と、前記実使用率と、の差が、あらかじめ設定された値以上であるときを、前記目標値の更新が必要である場合として、
あらかじめ決められた期間に観測された前記実使用率の平均値に基づいて、前記目標値を設定する、
半導体装置。
【請求項5】
請求項2に記載の半導体装置であって、
前記テーブル更新部は、
前記複数の積和演算回路のうちの電力供給の対象である前記積和演算回路の割合と、前記実使用率と、の差が、あらかじめ設定された値以上であるときを、前記目標値の更新が必要である場合として、
機械学習により生成され、前記実使用率を予測する機械学習モデルを用いて予測された前記実使用率の予測値に基づいて、前記目標値を更新する、
半導体装置。
【請求項6】
請求項2に記載の半導体装置であって、
前記実使用率と前記目標値とを対応付けた目標値特定テーブルをさらに備え、
前記テーブル更新部は、
前記複数の積和演算回路のうちの電力供給の対象である前記積和演算回路の割合と、前記実使用率と、の差が、あらかじめ設定された値以上であるときを、前記目標値の更新が必要である場合として、
前記目標値特定テーブルを参照し、あらかじめ決められた期間に観測された前記実使用率の最大値、または、あらかじめ決められた期間に観測された前記実使用率の平均値、に応じた、前記目標値を設定する、
半導体装置。
【請求項7】
請求項3から6のいずれか1項に記載の半導体装置であって、
前記モニタ部は、あらかじめ設定された時間間隔ごとに、前記実使用率を観測し、
前記テーブル更新部は、前記モニタ部から観測結果を受け、前記目標値の更新が必要である場合、前記目標値を更新し、
今回の前記差が、以前の前記差より、大きいことを含むあらかじめ決められた期間変更条件が満たされている場合、前記モニタ部は、前記実使用率を観測する前記時間間隔を短縮する、
半導体装置。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、半導体装置に関する。
【背景技術】
【0002】
特許文献1には、半導体集積回路の消費電力を削減するための技術が記載されている。特許文献1に記載された技術においては、半導体集積回路の温度に対応するリーク電流を求め、リーク電流の大きさに応じて、パワーゲーティング手法、または、DVFS(Dynamic Voltage Frequency Scaling)手法を採用することにより、消費電力を削減する。
【0003】
また、深層学習が普及したことにより、半導体集積回路のうちには、ニューラルネットワークを用いた処理を実行するのに特化したニューラルネットワーク用の半導体集積回路が存在する。ニューラルネットワーク用の半導体集積回路においては、処理の高速化のため、処理の一部または全部が専用のハードウェアにより実行されることがある(以下、専用のハードウェアを「ハードウェアアクセラレータ」という)。ニューラルネットワークにおいては、積和演算を主な演算とする。このため、ニューラルネットワーク用の半導体集積回路が備えるハードウェアアクセラレータは、複数の積和演算回路を含む。
【先行技術文献】
【特許文献】
【0004】
【発明の概要】
【発明が解決しようとする課題】
【0005】
実行の対象となるニューラルネットワークのモデルによっては、ハードウェアアクセラレータに含まれる複数の積和演算回路のうち、一部しか使用されないこともある。このような場合であっても、すべての積和演算回路へ電力の供給が行われていると、電力が不必要に消費される。よって、電力の消費効率の向上が望まれていた。
【課題を解決するための手段】
【0006】
本開示の一形態によれば、半導体装置が提供される。この半導体装置(1)は、複数の積和演算回路(11)を含み、ニューラルネットワークを用いた処理に使用されるハードウェアアクセラレータと、前記複数の積和演算回路のうちアクティブにする積和演算回路の割合を示す目標値が、ニューラルネットワークのモデルごとに、設定された目標テーブル(51)と、前記目標テーブルを参照し、前記半導体装置における実行対象となるニューラルネットワークのモデルについて設定されている前記目標値に応じて、前記複数の積和演算回路への電力の供給または電力供給の停止を個別に制御する電源制御部(50)と、前記半導体装置において処理が実行されているときに、前記複数の積和演算回路の実使用率を観測するモニタ部(30)と、前記半導体装置において処理が実行されているときに、前記目標値の更新が必要である場合、前記実使用率に基づいて新たな前記目標値を設定し、新たな前記目標値で前記目標テーブルを更新するテーブル更新部(54)と、を備える。
【0007】
このような態様によれば、実行対象となるニューラルネットワークのモデルごとに設定されている目標値に応じて、複数の積和演算回路の電力の供給または電力供給の停止を個別に制御するので、すべての積和演算回路への電力の供給およびクロック信号の供給を行う態様に比べて、電力が不必要に消費されることがない。また、目標値は、実行対象となるニューラルネットワークのモデルに応じて設定されるので、ニューラルネットワークを用いた処理のパフォーマンスを低下させることなく、積和演算回路への電力供給の制御を行うことができる。このようにして、電力の消費効率を向上させることができる。
さらに、半導体装置において処理が実行されているときに、実使用率に基づいて目標値を更新するので、積和演算回路の実際の使用状況に応じて、目標値を更新することができる。よって、電力の消費効率を向上させることができる。
【図面の簡単な説明】
【0008】
【
図3】パワーゲーティング処理のフローチャートである。
【発明を実施するための形態】
【0009】
A.実施形態
図1に示すように、実施形態にかかる半導体装置1は、ニューラルネットワークを用いた処理を実行する。例えば、半導体装置1は、自動車に搭載されている制御ユニットに備えられている。この制御ユニットには、ADAS(Advanced Driving Assistant System: 先進運転システム)用ECU(Electrical Control Unit)も備えられている。半導体装置1は、ADAS用ECUが自動車の周囲の状況を把握する処理を行う際に、自動車に装備されているカメラが撮影した画像データに基づいて、画像認識に関する処理を実行する。半導体装置1は、NPU(Neural Processing Unit/Neural network Processing Unit)10と、NPUモニタ30と、電源制御部50と、バス90とを備える。
【0010】
NPU10は、ニューラルネットワークを用いた処理を実行する。本明細書において、ニューラルネットワークは、3層構造のニューラルネットワークだけではなく、4層以上のDNN(Deep Neural Network)、畳み込み層とプーリング層とを有するCNN(Convolutional Neural Network)等を含むものとする。NPU10は、N個(Nは1以上の整数)のNNアクセラレータ11と、プロセッサ12と、メモリ13と、DMAC(Direct Memory Access Controller)14とを備える。
【0011】
N個のNNアクセラレータ11(111~11N)は、NPU10におけるニューラルネットワークを用いた処理に使用されるハードウェアアクセラレータとして機能する。専用のハードウェアを使用することで特定の処理の実行速度を高速化することを、ハードウェアアクセラレーションという。ハードウェアアクセラレータは、ハードウェアアクセラレーションのための専用のハードウェアである。
【0012】
NNアクセラレータ11は、MAC(Multiply accumulation)ユニット110と、切替部120と、プロセッサ130と、DMAC140と、メモリ150と、を備える。NNアクセラレータ111~11Nは、同じ構成を備える。NNアクセラレータ11を積和演算回路ともよぶ。
【0013】
MACユニット110は、複数の積和演算器を含み、積和演算を実行する。例えば、MACユニット110は、1K(1024)個の積和演算器を含む。切替部120は、NNアクセラレータ11の給電ラインに設けられたスイッチと、クロックゲーティング回路とを含む。電源制御部50から供給される制御信号によりスイッチがオンすることにより、NNアクセラレータ11へ電力が供給される。電源制御部50から供給される制御信号によりスイッチがオフすることにより、NNアクセラレータ11への電力の供給が停止される。また、電源制御部50からクロックゲーティング回路にイネーブル信号が供給されると、NNアクセラレータ11へクロック信号が供給される。電源制御部50からクロックゲーティング回路にディセーブル信号が供給されると、NNアクセラレータ11へのクロック信号の供給が停止される。
【0014】
プロセッサ130は、NNアクセラレータ11の制御を行うプロセッサである。DMAC140は、プロセッサ12または他のNNアクセラレータ11からのメモリ150のデータの読み出し要求に応答して、メモリ150のデータ転送を行う。メモリ150は、NNアクセラレータ11のローカルメモリである。
【0015】
プロセッサ12は、NPU10の全体制御を行うプロセッサである。また、プロセッサ12は、積和演算以外の演算処理を実行する。メモリ13は、共有メモリである。メモリ13は、例えば、ADAS用CPUと、NPU10との間における、画像データ、DNNモデル、重みデータの授受のために使用される。DMAC14は、NPU10のNNアクセラレータ111~11Nからのメモリ13のデータの読み出し要求に応答して、メモリ13のデータ転送を行う。
【0016】
NPUモニタ30は、NPU10が処理を行っているときに、それぞれのNNアクセラレータ11の使用率を決められた時間間隔ごとに観測する。NNアクセラレータ11の使用率とは、使用されているNNアクセラレータ11の数の、全体数に対する割合である。使用率を実使用率ともよぶ。決められた時間間隔は、例えば、1秒間である。NPUモニタ30をモニタ部ともよぶ。
【0017】
NPUモニタ30は、観測結果を、バス90を介して電源制御部50の判別部52に送信する。なお、NPUモニタ30は、半導体装置1へ電力の供給が開始されると、使用率の観測を開始する。例えば、車両のエンジンが始動されたときに、半導体装置1への電力の供給が開始される。また、車両のエンジンが停止したときに、半導体装置1への電力の供給が停止される。
【0018】
電源制御部50は、N個のNNアクセラレータ11への電力の供給または電力供給の停止を個別に制御する。電源制御部50は、目標テーブル51と、判別部52と、切替部53と、テーブル更新部54とを備える。
【0019】
図2に示すように、目標テーブル51には、ニューラルネットワークのモデルごとに、N個のNNアクセラレータ11のうちアクティブにするNNアクセラレータ11の数が、目標値として、設定されている。目標テーブル51の当初の目標値は、例えば、シミュレーション等によりあらかじめ求められた値である。
【0020】
図1に示す判別部52は、N個のNNアクセラレータ11のうち、目標テーブル51に設定されている目標値が示す数のNNアクセラレータ11をアクティブにし、残りのNNアクセラレータ11を非アクティブにする指示を表す信号を切替部53に出力する。ここで、NNアクセラレータ11をアクティブにするとは、NNアクセラレータ11が動作可能となるように、NNアクセラレータ11に電力およびクロック信号の供給を行うことをいう。
【0021】
また、判別部52は、目標値の更新が必要である場合、目標テーブル51を更新する指示を表す信号をテーブル更新部54に出力する。
【0022】
切替部53は、判別部52からの指示に応じて、N個のNNアクセラレータ11への電力およびクロック信号の供給を個別に切り替える。
【0023】
テーブル更新部54は、NPU10において処理が実行されているときであって、目標テーブル51を更新する指示を表す信号を判別部52から受けると、観測された使用率に基づいて新たな目標値を設定し、新たな目標値で目標テーブル51を更新する。新たな目標値の求め方については後述する。
【0024】
電源制御部50は、NPU10が処理を実行するタイミングで、より具体的には、NPU10による画像認識の処理の開始に先立って、パワーゲーティング処理を実行する。NPU10は、ADAS用CPUにより実行指示がプロセッサ12に伝達されるたび、画像認識の処理を実行するものとする。
【0025】
図3に示すように、ステップS101において、電源制御部50の判別部52は、実行対象となるニューラルネットワークのモデルについて設定されている目標値を目標テーブル51から読み出す。なお、判別部52は、実行されるニューラルネットワークのモデルの情報をあらかじめ有しているものとする。
【0026】
ステップS103において、判別部52は、目標値に基づいて切り替えの指示を切替部53に通知する。具体的には、判別部52は、N個のNNアクセラレータ11のうち、目標値が示す数のNNアクセラレータ11をアクティブにし、残りのNNアクセラレータ11を非アクティブにする指示を表す切替信号を切替部53に出力する。
【0027】
ステップS105において、切替部53は、判別部52から切替信号を受けると、N個のNNアクセラレータ11への電力およびクロック信号の供給を個別に切り替える。
【0028】
NNアクセラレータ11への電力およびクロック信号の供給の切替は、例えば、以下のように行われる。切替部53は、アクティブにするNNアクセラレータ11の切替部120に含まれているスイッチングをオンする制御信号を出力する。これによりNNアクセラレータ11への電力の供給が開始される。併せて、切替部53は、アクティブにするNNアクセラレータ11の切替部120に含まれているクロックゲーティング回路にイネーブル信号を出力する。これにより、NNアクセラレータ11へのクロック信号の供給が開始される。
【0029】
また、切替部53は、非アクティブにするNNアクセラレータ11の切替部120に含まれるスイッチをオフする制御信号を出力する。これによりNNアクセラレータ11への電力の供給が停止される。併せて、切替部53は、非アクティブにするNNアクセラレータ11の切替部120に含まれるクロックゲーティング回路にディセーブル信号を出力する。これにより、NNアクセラレータ11へのクロック信号の供給が停止される。
【0030】
例えば、切替部53は、N個のNNアクセラレータ11のうち、番号が最も小さいNNアクセラレータ111から順に、指定された数のNNアクセラレータ11をアクティブにする。5つのNNアクセラレータ11をアクティブにすることが指示された場合、NNアクセラレータ111~115がアクティブにされる。以上が、パワーゲーティング処理の一連の流れである。
【0031】
このように、目標値が示す数のNNアクセラレータ11にだけ電力を供給することにより、電力の消費効率を向上させることができる。
【0032】
また、電源制御部50は、半導体装置1へ電力の供給が開始されると、目標値の更新処理を開始する。また、NPU10は、例えば、ADAS用CPUからの指示に応答して、ニューラルネットワークのモデルが実装されている画像認識処理用のプログラムの実行を開始する。目標値の更新処理は、前述のパワーゲーティング処理と並行して実行される。また、技術の理解を容易にするため、実施形態においては、NPU10において、同時に複数のニューラルネットワークのモデルが実行されないことを前提とする。例えば、複数のニューラルネットワークのモデルが並行して実行される必要があるときは、NPU10は、ADAS用CPUからの指示に応答して、時分割で複数のニューラルモデルを実行する。
【0033】
図4に示すように、ステップS301において、判別部52は、NPUモニタ30から観測結果を受信したか否かを判別する。判別部52は、NPUモニタ30から観測結果を受信した場合(ステップS301;YES)、ステップS303の処理を実行する。判別部52は、NPUモニタ30から観測結果を受信していない場合(ステップS301;NO)、待機する。
【0034】
ステップS303において、判別部52は、目標値の更新が必要であるか否かを判別する。目標値の更新が必要である場合は、現在アクティブであるNNアクセラレータ11の全体に対する割合と、使用率との差が、あらかじめ設定された値以上であるときである。ステップS303において、目標値の更新が必要である場合(ステップS303;YES)、判別部52は、目標テーブル51を更新する指示を表す信号をテーブル更新部54に出力する。その後、ステップS305の処理が実行される。一方、ステップS303において、目標値の更新が必要でない場合(ステップS303;YES)、ステップS307の処理が実行される。
【0035】
ステップS305において、テーブル更新部54は、目標値を更新する。まず、テーブル更新部54は、あらかじめ決められた期間に観測された使用率の最大値に、あらかじめ決められた係数を乗じる。あらかじめ決められた係数は、1より大きく、1.5より小さいことが望ましい。例えば、あらかじめ決められた係数は、1.2である。得られた値を第1値ともよぶ。テーブル更新部54は、得られた第1値に、NNアクセラレータ11の総数であるNを乗じる。テーブル更新部54は、得られた値を切り上げにより整数値にする。この整数値が新たな目標値である。テーブル更新部54は、目標テーブル51における、対象となるニューラルネットワークのモデルについての目標値を、新たな目標値で更新する。なお、テーブル更新部54は、実行されているニューラルネットワークのモデルの情報をあらかじめ有しているものとする。その後、テーブル更新部54は、目標値を更新したことを示す信号を判別部52に出力する。
【0036】
ステップS307において、判別部52は、更新処理を終了できるか否かを判別する。更新処理の終了条件は、画像認識処理用のプログラムの実行が終了されることである。NPU10は、ADAS用CPUからの指示に応答して、画像認識処理用のプログラムの実行を終了する。更新処理の終了条件が満たされている場合(ステップS307;YES)、更新処理が終了される。更新処理の終了条件が満たされていない場合(ステップS307;NO)、ステップS301の処理が再び実行される。
【0037】
実施形態においては、あらかじめ決められた期間に観測された使用率の最大値にあらかじめ決められた係数を乗じることにより得られた値に、N個のNNアクセラレータ11のうちの電力が供給されるNNアクセラレータ11の割合を、近づけるように目標値を設定する。このように、あらかじめ決められた期間に観測された使用率の最大値にあらかじめ決められた係数を乗じることにより得られた値に基づいて目標値を設定することによって、NNアクセラレータ11の実際の使用状況に適応させた目標値を設定することができる。
【0038】
また、NPU10において処理が実行されているときに、N個のNNアクセラレータ11のうち電力が供給されているNNアクセラレータ11の割合と、使用率と、の差が、あらかじめ設定された値以上となる場合に、目標値を更新する。よって、NNアクセラレータ11の実際の使用状況に応じて、目標値を更新することができる。よって、電力の消費効率を向上させることができる。
【0039】
例えば、1個のNNアクセラレータ11の処理能力が、10TOPS(Tera Operations Per Second)であるとする。また、NPU10が10個のNNアクセラレータ11を備えているとする。この場合、10個のNNアクセラレータ11の処理能力は、100TOPSである。例えば、実行される画像認識処理に要求される処理能力が、8TOPSである場合、1個のNNアクセラレータ11だけが動作していれば問題ないといえる。このような場合、実施形態にかかる構成においては、残りの9個のNNアクセラレータへの電力およびクロック信号の供給を停止する。これにより、すべてのNNアクセラレータ11への電力の供給およびクロック信号の供給を行う態様に比べて、電力が不必要に消費されることがない。
【0040】
また、目標値は、実行対象となるニューラルネットワークのモデルに応じて設定される。ニューラルネットワークのモデルには、多数のNNアクセラレータ11を並列で使用するものもある一方で、多数のNNアクセラレータ11を並列で使用しないものもある。実行対象となるニューラルネットワークのモデルごとに設定されている目標値に応じて、N個のNNアクセラレータ11の電力の供給または電力供給の停止が個別に制御される。よって、すべてのNNアクセラレータ11への電力の供給およびクロック信号の供給を行う態様に比べて、電力が不必要に消費されることがない。また、ニューラルネットワークを用いた処理のパフォーマンスを低下させることがなく、電力の消費効率を向上させることができる。
【0041】
また、特に、DNNのモデルのうちには、例えば、3層構造のニューラルネットワークに比べて、実行時におけるN個のNNアクセラレータ11の使用率が低いものが多い。このため、実施形態にかかる構成は、DNNを用いた処理の実行時の電力の消費効率の向上にとりわけ有効であるといえる。
【0042】
B1.他の実施形態1
実施形態においては、テーブル更新部54は、あらかじめ決められた期間に観測された使用率の最大値に、あらかじめ決められた係数を乗じることにより、新たな目標値を算出した。しかしながら、新たな目標値の算出方法は、これに限られない。
【0043】
テーブル更新部54は、目標値の更新が必要である場合、すなわち、目標テーブル51を更新する指示を表す信号を判別部52から受けた場合、あらかじめ決められた期間に観測された使用率の平均値を算出する。テーブル更新部54は平均値に、NNアクセラレータ11の総数であるNを乗じる。テーブル更新部54は、得られた値を切り上げにより整数値にする。この整数値が新たな目標値である。テーブル更新部54は、目標テーブル51における、対象となるニューラルネットワークのモデルについての目標値を、新たな目標値で更新する。
【0044】
このように、あらかじめ決められた期間に観測された使用率の平均値に、N個のNNアクセラレータ11のうちの電力供給の対象であるNNアクセラレータ11の割合を、近づけるように目標値を設定する。このように、あらかじめ決められた期間に観測された使用率の平均値に基づいて目標値を設定することによって、NNアクセラレータ11の実際の使用状況に適応させた目標値を設定することができる。
【0045】
また、他の実施形態1においても、N個のNNアクセラレータ11のうち電力が供給されているNNアクセラレータ11の割合と、使用率と、の差が、あらかじめ設定された値以上となる場合に、目標値を更新する。よって、NNアクセラレータ11の実際の使用状況に応じたタイミングで目標値を更新することができる。
【0046】
B2.他の実施形態2
また、あるいは、テーブル更新部54は、機械学習により生成された機械学習モデルを用いて、目標値を更新してもよい。テーブル更新部54は、機械学習済みの機械学習モデルを有するものとする。この機械学習モデルは、例えば、ニューラルネットワークのモデルごとに、過去にそのモデルを実行しているときに観測された使用率のデータであって、1万回分の使用率のデータを教師データとして使用して機械学習がされたものである。この機械学習モデルは、対象となるニューラルネットワークのモデルを実行しているときの、あらかじめ決められた期間に観測された使用率のデータが入力されると、例えば、1秒後の使用率の予測値を出力する。テーブル更新部54は、使用率の予測値に、NNアクセラレータ11の総数であるNを乗じる。テーブル更新部54は、得られた値を切り上げにより整数値にする。この整数値が新たな目標値である。テーブル更新部54は、目標テーブル51における、対象となるニューラルネットワークのモデルについての目標値を、新たな目標値で更新する。
【0047】
このように、機械学習により生成された機械学習モデルを用いて、目標値を更新するので、NNアクセラレータ11の実際の使用状況に適応させた目標値を設定することができる。また、N個のNNアクセラレータ11のうち電力が供給されているNNアクセラレータ11の割合と、使用率と、の差が、あらかじめ設定された値以上となる場合に、目標値を更新する。よって、NNアクセラレータ11の実際の使用状況に応じたタイミングで目標値を更新することができる。
【0048】
また、機械学習モデルにより出力された使用率の予測値に基づいて、プロセッサ130は、NNアクセラレータ11の負荷を分散させるような制御を行ってもよい。
【0049】
B3.他の実施形態3
また、あるいは、テーブル更新部54は、以下の方法で目標値を更新してもよい。
図5に示すように、テーブル更新部54は、ニューラルネットワークのモデルごとに、使用率と目標値とを対応付けた目標値特定テーブル541を備える。目標値特定テーブルにおける目標値は、シミュレーションにより求められた値である。テーブル更新部54は、目標値の更新が必要である場合、すなわち、目標テーブル51を更新する指示を表す信号を判別部52から受けた場合、目標値特定テーブル541を参照し、あらかじめ決められた期間に観測された使用率の最大値に応じた、目標値を設定する。あるいは、テーブル更新部54は、目標値の更新が必要な場合、目標値特定テーブル541を参照し、あらかじめ決められた期間に観測された使用率の平均値に応じた、目標値を設定する。
【0050】
このように、使用率と目標値とを対応付けた目標値特定テーブル541を用いて目標値を設定するので、NNアクセラレータ11の実際の使用状況に適応させた目標値を設定することができる。また、他の実施形態3においても、N個のNNアクセラレータ11のうち電力が供給されているNNアクセラレータ11の割合と、使用率と、の差が、あらかじめ設定された値以上となる場合に、目標値を更新する。よって、NNアクセラレータ11の実際の使用状況に応じたタイミングで目標値を更新することができる。
【0051】
B4.他の実施形態4
実施形態においては、目標値が、N個のNNアクセラレータ11のうち、電力供給の対象であるNNアクセラレータ11の数を示す例を説明した。しかしながら、目標値は、電力供給の対象であるNNアクセラレータ11の数の全体に対する割合であってもよい。
【0052】
B5.他の実施形態5
実施形態においては、NPUモニタ30が、それぞれのNNアクセラレータ11の使用率を観測する時間間隔が固定されている例を説明した。しかしながら、NPUモニタ30が観測を行う時間間隔は、以下のように変更されてもよい。
【0053】
例えば、NPUモニタ30は、1秒間隔で実使用率を観測しているとする。判別部52は、NPUモニタ30から受信した観測結果に基づいて、まず、目標値の更新が必要であるか否かを判別する。判別部52が目標値の更新が必要であると判別すると、テーブル更新部54は、目標値を更新する。
【0054】
その後、判別部52は、期間変更条件が満たされている場合、NPUモニタ30が実使用率を観測する時間間隔の変更が必要であると判別する。期間変更条件は、今回の電力供給の対象であるNNアクセラレータ11の全体に対する割合と今回の実使用率と、の差を示す第2値が、前回の電力供給の対象であるNNアクセラレータ11の全体に対する割合と前回の実使用率と、の差を示す第3値より大きい場合、満たされる。
【0055】
ここで、今回の電力供給の対象であるNNアクセラレータ11の全体に対する割合は、テーブル更新部54により更新された更新後の目標値に基づいて求められる。今回の実使用率とは、NPUモニタ30から今回受信した観測結果が示す実使用率である。前回の電力供給の対象であるNNアクセラレータ11の全体に対する割合は、更新される前の目標値に基づいて求められる。今回の実使用率とは、NPUモニタ30から今回受信した観測結果が示す実使用率である。
【0056】
期間変更条件が満たされている場合、前回の目標値の更新による電力供給の制御の効果が十分に表れていないと考えられる。よって、期間変更条件が満たされている場合、判別部52は、実使用率を観測する時間間隔を短縮するよう、NPUモニタ30に通知する。よって、NPUモニタ30は、実使用率を観測する時間間隔を、例えば、1秒間から0.5秒間に変更する。
【0057】
このように、前回の目標値の更新による電力供給の制御の効果が十分に表れていない場合に、実使用率を観測する時間間隔が短縮され、目標値の更新の頻度が上げられる。よって、電力供給の制御の効果を出すため、より細やかな電力供給の制御を行うことができる。
【0058】
また、期間変更条件には、第2値は、第3値より、決められた値以上大きいという条件がさらに含まれていてもよい。期間変更条件には、今回と前回との時間差が、決められた値以下であるという条件がさらに含まれていてもよい。
【0059】
B6.他の実施形態6
実施形態においては、NPU10において、同時に複数のニューラルネットワークのモデルが実行されないことを前提とした例を説明した。しかしながら、NPU10において、同時に複数のニューラルネットワークのモデルが実行されてもよい。この場合、パワーゲーティング処理において、電源制御部50は、実行対象となる複数のニューラルネットワークのモデルについて設定されている目標値をそれぞれ読み出し、複数の目標値の総和に基づいて、NNアクセラレータ11への電力およびクロック信号の供給を個別に切り替えればよい。
【0060】
B7.他の実施形態7
実施形態においては、判別部52が、N個のNNアクセラレータ11のうち電力が供給されているNNアクセラレータ11の割合と、使用率と、の差が、あらかじめ設定された値以上となる場合に、目標値の更新が必要であると判定する例を説明した。あるいは、判別部52は、NPUモニタ30の観測結果に基づいてN個のNNアクセラレータ11のうち電力が供給されているNNアクセラレータ11の数と、使用されているNNアクセラレータ11の数と、の差が、あらかじめ設定された値以上となる場合に、目標値の更新が必要であると判定してもよい。NPUモニタ30は、N個のNNアクセラレータ11のうちいずれのNNアクセラレータ11が使用されているかを観測する機能を備えるものとする。
【0061】
また、実施形態においては、N個のNNアクセラレータ11が、同じ構成を備える例を説明したが、N個のNNアクセラレータ11は、異なる構成を備えてもよい。
【0062】
本開示は、上述の実施形態に限られるものではなく、その趣旨を逸脱しない範囲において種々の構成で実現することができる。例えば、発明の概要の欄に記載した各形態中の技術的特徴に対応する実施形態中の技術的特徴は、上述の課題の一部又は全部を解決するために、あるいは、上述の効果の一部又は全部を達成するために、適宜、差し替えや、組み合わせを行うことが可能である。また、その技術的特徴が本明細書中に必須なものとして説明されていなければ、適宜、削除することが可能である。
【符号の説明】
【0063】
1…半導体装置、11…NNアクセラレータ、12…プロセッサ、13…メモリ、14…DMAC、30…NPUモニタ、50…電源制御部、51…目標テーブル、52…判別部、53…切替部、54…テーブル更新部、90…バス、110…MACユニット、120…切替部、130…プロセッサ、140…DMAC、150…メモリ