JP7707977B2 - ニューラルネットワーク演算装置 - Google Patents

ニューラルネットワーク演算装置

Info

Publication number
JP7707977B2
JP7707977B2 JP2022047092A JP2022047092A JP7707977B2 JP 7707977 B2 JP7707977 B2 JP 7707977B2 JP 2022047092 A JP2022047092 A JP 2022047092A JP 2022047092 A JP2022047092 A JP 2022047092A JP 7707977 B2 JP7707977 B2 JP 7707977B2
Authority
JP
Japan
Prior art keywords
clock
neural network
processor elements
main controller
processing
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2022047092A
Other languages
English (en)
Other versions
JP2023140990A (ja
Inventor
崇 吉田
鉄平 広津
大輔 香取
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Denso Corp
Original Assignee
Denso 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 Denso Corp filed Critical Denso Corp
Priority to JP2022047092A priority Critical patent/JP7707977B2/ja
Publication of JP2023140990A publication Critical patent/JP2023140990A/ja
Priority to JP2025077759A priority patent/JP2025114723A/ja
Application granted granted Critical
Publication of JP7707977B2 publication Critical patent/JP7707977B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Power Sources (AREA)
  • Advance Control (AREA)
  • Multi Processors (AREA)

Description

本発明は、演算装置に関し、特に、複数のプロセッサエレメントで演算を行うニューラルネットワーク演算装置に関する。
AIのアクセラレータは多数のPE(Processing Element)を2次元アレイ状に並べたPEアレイが並列処理されることが一般的である。これらPEアレイを多数配置したAIアクセラレータをSOC全体のうち支配的な領域を占有するような実装形態で構成された場合、AIアクセラレータの起動・停止により、瞬間的に大きな消費電力変動が生じ、結果的に電圧低下などによる不具合が生じる。
この課題を解決するための従来技術として、(1)瞬間的な消費電力変動に耐えうる大容量コンデンサをチップ外部に配置するなどの対策をとる方法や、(2)SOC全体で段階的に電力投入・遮断を行い、動作時には変動が発生しないような動作状態を維持する方法などが考えられている。また、処理中の電力変動の制御に関し、特許文献1に記載された技術も知られている。
特開2020-119213号公報
しかしながら、(1)の方法では、チップ外部にコンデンサを必要とし、追加のコスト増となるだけでなく、特に車載用途などの過酷なシステム要件では、その信頼性や耐久性が新たな課題となる。一方で、(2)の方法では、起動・終了に一定時間を要することから、その間不要な電力消費が発生し、システム全体としての電力効率を棄損する場合があった。
特許文献1に記載された方法では、処理中の電力変動の制御には有効であるものの、起動時の電力消費を段階的に増減させる解決手段とはならない。
そこで、本発明は、上記背景に鑑み、急峻な電力変動を抑えることができるニューラルネットワーク演算装置を提供することを目的とする。
本発明は上記課題を解決するために以下の技術的手段を採用する。特許請求の範囲及びこの項に記載した括弧内の符号は、ひとつの態様として後述する実施形態に記載の具体的手段との対応関係を示す一例であって、本発明の技術的範囲を限定するものではない。
本発明のニューラルネットワーク演算装置は、ニューラルネットワーク処理を行うニューラルネットワーク演算装置(10)であって、アレイ状に配置された複数のプロセッサエレメント(104)と、前記プロセッサエレメントに対して供給する入力アクティベーションデータを記憶するアクティベーションメモリ(103)と、前記プロセッサエレメントのそれぞれの動作を制御するメインコントローラ(101)とを備え、前記メインコントローラ(101)は、クロックジェネレータ(11)から供給されるクロックをそれぞれのプロセッサエレメントに供給するタイミングを制御する構成を有する。
この構成により、メインコントローラがプロセッサエレメントへのクロック供給タイミングを制御することにより、電力を有効活用したうえで、急峻な電力変動を抑えることができる。
第1の実施の形態のニューラルネットワーク演算装置を含むLSIを表した図である。 第1の実施の形態において、クロックの投入タイミングを指示する信号を示した図である。 第1の実施の形態のニューラルネットワーク演算装置の電力消費を示す図である。 第2の実施の形態において、クロックの投入タイミングを指示する信号を示した図である。 第2の実施の形態のニューラルネットワーク演算装置の電力消費を示す図である。 第3の実施の形態のニューラルネットワーク演算装置を含むLSIを表した図である。 第4の実施の形態のニューラルネットワーク演算装置を含むLSIの物理的構成の例を示した図である。 第4の実施の形態のニューラルネットワーク演算装置のLSIの論理構造を表した図である。 第5の実施の形態のニューラルネットワーク演算装置を含むLSIを表した図である。 第5の実施の形態のニューラルネットワーク演算装置による処理を示す図である。 第6の実施の形態のニューラルネットワーク演算装置による処理について説明するための図である。 第7の実施の形態のニューラルネットワーク演算装置の構成を示す図である。 第9の実施の形態のニューラルネットワーク演算装置の構成を示す図である。 第9の実施の形態のニューラルネットワーク演算装置による処理について説明するための図である。
以下、実施の形態のニューラルネットワーク演算装置について図面を参照しながら説明する。
(第1の実施の形態)
図1は、第1の実施の形態のニューラルネットワーク演算装置10を含むLSIを表した図である。
1は、SOC全体を示す。SOC1は、多くの場合、システム全体を司る不図示のCPUやバスシステムを含み、システムとして機能する。
10は、本実施の形態のニューラルネットワーク演算装置である。
11は、SOC1全体にクロックを供給するクロックジェネレータである。該クロックジェネレータは、ニューラルネットワーク演算装置10にもクロックを供給する。本クロックは、設計によっては1種類の周波数を供給する場合もあるし、複数種類の周波数のクロックを供給する場合もある。本実施の形態においては、簡単のため1種類のクロックを供給する場合について説明するが、本発明は複数種類のクロックにおいても実現可能である。
ニューラルネットワーク演算装置10は、その構成によってはSOC1全体の規模のうち、50%以上を占めることもある。したがって、ニューラルネットワーク演算装置10の電力消費もそれに応じてSOC1全体の主たる部分になり得る。
次にニューラルネットワーク演算装置10の内部構成について説明する。
101はメインコントローラである。メインコントローラ101は、ニューラルネットワーク演算装置10全体の処理シーケンスや、入出力データの管理、後述のプロセッサエレメントに対する動作要求を制御するモジュールである。加えて、メインコントローラ101はニューラルネットワーク演算装置10の動作状態の情報に基づいて電力制御も行う。
102はクロックコントローラである。クロックコントローラ102は、後述のプロセッサエレメント104やニューラルネットワーク演算装置10のその他すべての内部モジュールに対してクロックを供給する。該クロックコントローラ102は、複数のプロセッサエレメント104に対して個別にクロックを供給・停止する機構が実装されている。加えて、個別のプロセッサエレメントPEijに対してクロックの周波数を制御する機構を持たせてもよい。
103はアクティベーションメモリである。アクティベーションメモリ103は、後述のプロセッサエレメント104に供給するアクティベーションデータを記憶するモジュールである。メインコントローラ101は、不図示のDMAコントローラ等を用いて、本アクティベーションメモリ103に対して必要となるアクティベーションデータを従前に転送し、処理開始とともにプロセッサエレメント104に対してデータを供給するように指示を行う。アクティベーションメモリ103は当該指示に基づいて、必要となるアクティベーションデータをプロセッサエレメント104に供給する。
当該部分の実装方法は、メインコントローラ101がアクティベーションメモリ103に指示を出してアクティベーションメモリ103が能動的にデータをプロセッサエレメントに対して供給しても良いし、メインコントローラ101がプロセッサエレメント104に指示を出すことで、プロセッサエレメント104がアクティベーションメモリ103から必要となるデータを読み出しても良い。
104はプロセッサエレメントである。プロセッサエレメント104は入力アクティベーションと不図示のWeight入力用メモリからのWeight値を入力として、畳み込み演算を実行する乗算器と加算器からなる畳み込み演算器を1つ以上具備する。多くの場合、プロセッサエレメント104には畳み込み乗算器が複数実装されており、複数の畳み込み演算を同時並列に実行できる構成になっている。
プロセッサエレメント104の用語は、プロセッサエレメントを総称する場合に用い、個々のプロセッサエレメントを指す場合には、プロセッサエレメント「PEij」という。ここで、ijは、位置によってプロセッサエレメントPEを特定する番号であり、i(i=0,・・・,m)は行を特定し、j(j=0,・・・,n)は列を特定する。
プロセッサエレメント104の演算出力である出力アクティベーションは、アクティベーションメモリ103に再度保持されるか、モジュール外部に出力される。
これらのプロセッサエレメント104はニューラルネットワーク演算装置10の内部で論理的に2次元配列的に配置されており、上下、左右に隣接するプロセッサエレメントは畳み込み演算実施過程でアクティベーションデータを相互に転送することで、1以上のカーネルサイズの畳み込み演算を実現する。
例えば、図1中のPE11がカーネルサイズ2x2の畳み込み演算を実施する場合には、PE11はPE10にアクティベーションメモリ103から入力されたアクティベーションデータを取得することで、処理対象の左隣りのアクティベーションデータを取得することができる。同様にPE01から上隣りのデータとPE00からPE01に一旦伝送されたアクティベーションデータも受け取り、演算に利用する構造になっている。また、別の構成として、アクティベーションメモリ103から隣接2x2領域のアクティベーションデータを取得してもよい。
次に、ニューラルネットワーク演算装置10を含むLSIのクロックの処理フローを説明する。図2は、メインコントローラ101がクロックコントローラ102に対してクロックを投入するタイミングを指示する信号を示した図である。図2の201~204は、メインコントローラ101がクロックコントローラ102に対して出力するEnable信号である。205~208はクロックコントローラ102がプロセッサエレメント104に対して出力するクロック信号である。
2次元に配置されたプロセッサエレメント104のうち、同じ列のプロセッサエレメント104に対して、1本のクロックが供給される。例えば、205は1列目のプロセッサエレメント(図1中PEx0)に接続するクロック線のクロック信号である。同様に206は2列目のプロセッサエレメント(図1中PEx1)に接続するクロック線の信号である。本実施の形態では、同じ列のプロセッサエレメント104によってグループが構成されている。
メインコントローラ101は、クロックを印加するタイミングを列ごとに順次調整する。より具体的には、畳み込み演算処理のうち、1要素の積和演算が完了するサイクル数分だけずらして、次の列のクロックを起動する。図2は1要素の積和演算が1サイクルで完了する前提で示されており、故に列ごとに1サイクルずつずらしてクロックを印加する。これにより、隣接するサイクルの処理でアクティベーションが使用された直後のタイミングで次の列を起動することができる。
このようにクロックを制御することで、隣接するプロセッサエレメントPEij間のデータを滞らせることなく1列ずつプロセッサエレメントPEijが起動されることになるので、結果的に図3に示すように、全部のプロセッサエレメントPEijに対して一斉にクロックの供給を開始するよりも穏やかに電力消費が増加することになる。
(第2の実施の形態)
第2の実施の形態のニューラルネットワーク演算装置の基本的な構成は、第1の実施の形態のニューラルネットワーク演算装置と同じである。第2の実施の形態では、第1の実施の形態に対して、消費電力の上昇をさらに穏やかにする。
図4は、第2の実施の形態のニューラルネットワーク演算装置を含むLSIにおけるクロック投入タイミングを指示する信号を示す図である。すなわち、メインコントローラ101がクロックコントローラ102に対してクロックを投入するタイミングを指示する信号を示した図である。
図4の401~404は、メインコントローラ101がクロックコントローラ102に対して出力するEnable信号である。405~408は、クロックコントローラ102がプロセッサエレメント104に対して出力するクロック信号である。
このとき、2次元に配置されたプロセッサエレメント104のうち、同じ列のプロセッサエレメント104に対して、1本のクロックが供給される。例えば、405は1列目のプロセッサエレメント(図1中PEx0)に接続するクロック線のクロック信号である。同様に406は2列目のプロセッサエレメント(図1中PEx1)に接続するクロック線のクロック信号である。
このとき、メインコントローラ101はクロックを印加するタイミングを列ごとに順次調整する。より具体的には、畳み込み演算処理のうち、1要素の積和演算が完了するサイクル数分だけずらして、次の列のクロックを起動する。図4は1要素の積和演算が1サイクルで完了する前提で示されており、故に列ごとに1サイクルずつずらしてクロックを印加する。これにより、隣接するサイクルの処理でアクティベーションが使用された直後のタイミングで次の列を起動することができる。さらに、本実施の形態では、各列の起動間隔をアレイの列数サイクル数だけ間引き、間引き間隔を徐々に削減する。
具体的には列数が4列であった場合には、最初のクロックを印加後、4サイクル空けて次のクロックを印加する。その後2サイクル空けてクロック印加を実施したのち、通常のクロックを供給する。このようにクロックを制御することで、最初の1つの演算処理が実行される間、稼働するプロセッサエレメントは全体の1/4である。その後2サイクルも稼働するプロセッサは全体の1/4となり、その次のサイクルに全体の1/2が稼働する。その次の2サイクルにおいては全体の3/4が稼働し、以降は全てのプロセッサエレメントが稼働する。
このように制御を行うことで、隣接間のデータを滞らせることなく1列ずつプロセッサエレメントが起動され、かつ全体のプロセッサエレメント稼働率を順次増加させることができるため、結果的に図5に示すように、第1の実施の形態で示したクロック供給方法に比べて、さらに穏やかに電力消費が増加することになる。
(第3の実施の形態)
図6は、第3の実施の形態のニューラルネットワーク演算装置を含むLSIを表した図である。
6は、SOC全体を示す。SOC6は多くの場合システム全体を司る不図示のCPUやバスシステムを含み、システムとして機能する。
60は、本実施の形態のニューラルネットワーク演算装置である。
61は、ニューラルネットワーク演算装置60全体にクロックを供給するクロックジェネレータである。該クロックジェネレータ61は、ニューラルネットワーク演算装置60にもクロックを供給する。本クロックは、設計によっては1種類の周波数を供給する場合もあるし、複数種類の周波数のクロックを供給する場合もある。本実施の形態においては、簡単のため1種類のクロックを供給する場合について説明するが、本発明は複数種類のクロックにおいても実現可能である。
ニューラルネットワーク演算装置60は、その構成によってはSOC6全体の規模のうち、50%以上を占めることもある。したがって、ニューラルネットワーク演算装置60の電力消費もそれに応じてSOC全体の主たる部分になり得る。
次にニューラルネットワーク演算装置60の内部構成について説明する。
601はメインコントローラである。メインコントローラ601は、ニューラルネットワーク演算装置60全体の処理シーケンスや、入出力データの管理、後述のプロセッサエレメントに対する動作要求を制御するモジュールである。加えて、メインコントローラ601は、ニューラルネットワーク演算装置60の動作状態の情報に基づいて電力制御も行う。
602はクロックコントローラである。クロックコントローラ602は、後述のプロセッサエレメント604やニューラルネットワーク演算装置60のその他すべての内部モジュールに対してクロックを供給する。該クロックコントローラ602には、複数のプロセッサエレメント604に対して個別にクロックを供給・停止する機構が実装されている。加えて、個別のプロセッサエレメントPEijに対してクロックの周波数を制御する機構を持たせてもよい。
603はアクティベーションメモリである。アクティベーションメモリ603は、後述のプロセッサエレメント604に供給するアクティベーションデータを記憶するモジュールである。メインコントローラ601は不図示のDMAコントローラ等を用いて、本アクティベーションメモリ603に対して必要となるアクティベーションデータを従前に転送し、処理開始とともにプロセッサエレメントに対してデータを供給するように指示を行う。アクティベーションメモリ603は当該指示に基づいて、必要となるアクティベーションデータをプロセッサエレメント604に供給する。
当該部分の実装方法は、メインコントローラ601がアクティベーションメモリ603に指示を出してアクティベーションメモリ603が能動的にデータをプロセッサエレメントに対して供給しても良いし、メインコントローラ601がプロセッサエレメント604に指示を出すことで、プロセッサエレメント604がアクティベーションメモリ603から必要となるデータを読み出しても良い。
604はプロセッサエレメントである。プロセッサエレメント604は入力アクティベーションと不図示のWeight入力用メモリからのWeight値を入力として、畳み込み演算を実行する乗算器と加算器からなる畳み込み演算器を1つ以上具備する。多くの場合、プロセッサエレメントには畳み込み乗算器が複数実装されており、複数の畳み込み演算を同時並列に実行できる構成になっている。
プロセッサエレメント604の用語は、プロセッサエレメントを総称する場合に用い、個々のプロセッサエレメントを指す場合には、プロセッサエレメント「PEij」という。ここで、ijは、位置によってプロセッサエレメントPEを特定する番号であり、i(i=0,・・・,m)は行を特定し、j(j=0,・・・,n)は列を特定する。
プロセッサエレメント604の演算出力である出力アクティベーションは、アクティベーションメモリ603に再度保持されるか、モジュール外部に出力される。
これらのプロセッサエレメント604は、ニューラルネットワーク演算装置60の内部で論理的に2次元配列的に配置されており、上下、左右に隣接するプロセッサエレメントは畳み込み演算実施過程でアクティベーションデータを相互に転送することで、1以上のカーネルサイズの畳み込み演算を実現する。
例えば、図6中のPE11がカーネルサイズ 2x2の畳み込み演算を実施する場合には、PE11はPE10にアクティベーションメモリ603から入力されたアクティベーションデータを取得することで、処理対象の左隣りのアクティベーションデータを取得することができる。同様にPE01から上隣りのデータとPE00からPE01に一旦伝送されたアクティベーションデータも受け取り、演算に利用する構造になっている。また、別の構成として、アクティベーションメモリ603から隣接2x2領域のアクティベーションデータを取得してもよい。
次に、ニューラルネットワーク演算装置60を含むLSIのクロックの処理フローを説明する。第3の実施の形態のクロックの処理のタイミングは、第1の実施の形態と同じであるので、図2を用いて説明する。第3の実施の形態では、同じクロックが供給されるプロセッサエレメント604のグループが異なる。図2は、メインコントローラ601がクロックコントローラ602に対してクロックを投入するタイミングを指示する信号を示した図である。
図2の201~204は、メインコントローラ601がクロックコントローラ602に対して出力するEnable信号である。205~208はクロックコントローラ602がプロセッサエレメント604に対して出力するクロック信号である。
2次元に配置されたプロセッサエレメント604のうち、図6に示すようにPE00から放射状に、縦方向、横方向それぞれの離間距離に応じたクロックグループを構成し、それぞれのクロックグループに対して1本のクロックが供給される。例えば、605は左上端のプロセッサエレメント(図6中PE00)に接続するクロックグループである。606は図6中PE00に縦方向横方向それぞれ隣接するプロセッサエレメント群が構成するクロックグループに接続するクロックグループである。図6では、605~609までのグループを示しているが、グループの数はこれに限定されるものではない。
メインコントローラ601は、クロックを印加するタイミングをクロックグループごとに順次調整する。より具体的には畳み込み演算処理のうち、1要素の積和演算が完了するサイクル数分だけずらして、次のグループのクロックを起動する。図2は1要素の積和演算が1サイクルで完了する前提で示されており、故に列ごとに1サイクルずつずらしてクロックを印加する。
これにより、隣接するサイクルの処理でアクティベーションが使用された直後のタイミングで次の行および列を起動することができる。このようにクロックを制御することで、隣接するプロセッサエレメントPEijの間のデータを滞らせることなく、順次プロセッサエレメントが起動されることになるので、結果的に全部のプロセッサエレメントに対して一斉にクロックの供給を開始するよりも穏やかに電力消費が増加することになる。
(第4の実施の形態)
図7は、第4の実施の形態のニューラルネットワーク演算装置を含むLSIの物理的構成の例を示した図である。一方で、図8は、LSIの対応する論理構造を表した図である。各内部モジュールについて、図8を用いて説明する。
図8の8はSOC全体を示す。SOC8は、多くの場合システム全体を司る不図示のCPUやバスシステムを含み、システムとして機能する。
80は、第4の実施の形態のニューラルネットワーク演算装置である。
81は、SOC8全体にクロックを供給するクロックジェネレータである。該クロックジェネレータはニューラルネットワーク演算装置80にもクロックを供給する。本クロックは、設計によっては1種類の周波数を供給する場合もあるし、複数種類の周波数のクロックを供給する場合もある。本実施の形態においては、簡単のため1種類のクロックを供給する場合について説明するが、本発明は、複数種類のクロックにおいても実現可能である。
次に、ニューラルネットワーク演算装置80の内部構成について説明する。
801は、メインコントローラである。メインコントローラ801は、ニューラルネットワーク演算装置80全体の処理シーケンスや、入出力データの管理、後述のプロセッサエレメントに対する動作要求を制御するモジュールである。加えて、メインコントローラ801はニューラルネットワーク演算装置80の動作状態の情報に基づいて電力制御も行う。
803は、アクティベーションメモリである。アクティベーションメモリ803は、後述のプロセッサエレメント804に供給するアクティベーションデータを記憶するモジュールである。メインコントローラ801は、不図示のDMAコントローラ等を用いて、本アクティベーションメモリ803に対して必要となるアクティベーションデータを従前に転送し、処理開始とともにプロセッサエレメント804に対してデータを供給するように指示を行う。アクティベーションメモリ803は当該指示に基づいて、必要となるアクティベーションデータをプロセッサエレメント804に供給する。図7では、アクティベーションメモリ803をレイアウト上の左側に並べて配置している例を示している。
804は、プロセッサエレメントである。プロセッサエレメント804は入力アクティベーションと不図示のWeight入力用メモリからのWeight値を入力として、畳み込み演算を実行する乗算器と加算器からなる畳み込み演算器を1つ以上具備する。多くの場合、プロセッサエレメント804には畳み込み乗算器が複数実装されており、複数の畳み込み演算を同時並列に実行できる構成になっている。
プロセッサエレメント804の用語は、プロセッサエレメントを総称する場合に用い、個々のプロセッサエレメントを指す場合には、プロセッサエレメント「PEij」という。ここで、ijは、位置によってプロセッサエレメントPEを特定する番号であり、i(i=0,・・・,m)は行を特定し、j(j=0,・・・,n)は列を特定する。
演算出力である出力アクティベーションは、アクティベーションメモリ803に再度保持されるか、モジュール外部に出力される。
これらのプロセッサエレメント804は、ニューラルネットワーク演算装置80の内部で論理的に2次元配列的に配置されており、上下、左右に隣接するプロセッサエレメントは畳み込み演算実施過程でアクティベーションデータを相互に転送することで、1以上のカーネルサイズの畳み込み演算を実現する。
例えば、図8中のPE11がカーネルサイズ2x2の畳み込み演算を実施する場合には、PE11はPE10にアクティベーションメモリ803から入力されたアクティベーションデータを取得することで、処理対象の左隣りのアクティベーションデータを取得することができる。同様にPE01から上隣りのデータとPE00からPE01に一旦伝送されたアクティベーションデータも受け取り、演算に利用する構造になっている。また、別の構成として、アクティベーションメモリ803から隣接2x2領域のアクティベーションデータを取得してもよい。
このとき、2次元に配置されたプロセッサエレメント804のうち、図7のように配置配線を行った場合に近接するPE群に対してクロックグループを構成し、それぞれのクロックグループに対してクロックが供給される。
図8の805~807は、クロックグループを論理的に表している。例えば、805は左上端のプロセッサエレメントに接続するクロックグループである。これらは図7の物理的な配置配線で近接する関係にあるから、1つのクロックグループを構成する。806は1行目の2列目以降のプロセッサエレメント804が構成するクロックグループである。図7の例では、PE1xは配置配線上、帯状に配置されており、この場合はクロックグループを分離させる。
以上のように、クロックグループを、図7のような配置配線の状態に合わせて設定する。このとき、クロックグループに1本のクロック線を結線し、物理的に固定的なクロックグループを構成すればよいが、配置配線は設計工程の後段で決定されることが多く、また、プロセスに依存して変更されることがあるため、それぞれのプロセッサエレメントに対して独立にクロック線を結線し、クロックコントローラ802でクロック供給タイミングを論理的に同一グループとして調整し、同様の効果を得るように実装してもよい。
次に、ニューラルネットワーク演算装置80を含むLSIのクロックの処理フローを説明する。第4の実施の形態のクロックの処理のタイミングは、第1の実施の形態と同じであるので、図2を用いて説明する。図2は、メインコントローラ601がクロックコントローラ602に対してクロックを投入するタイミングを指示する信号を示した図である。
メインコントローラ801は、クロックを印加するタイミングをグループごとに順次調整する。より具体的には畳み込み演算処理のうち、1要素の積和演算が完了するサイクル数分だけずらして、次の列のクロックを起動する。図2は1要素の積和演算が1サイクルで完了する前提で示されており、故に列ごとに1サイクルずつずらしてクロックを印加する。
これにより、隣接するサイクルの処理でアクティベーションが使用された直後のタイミングで次の行および列を起動することができる。このようにクロックを制御することで、隣接間のデータを滞らせることなく順次プロセッサエレメントが起動されることになるので、結果的に全部のプロセッサエレメントに対してクロックを供給するよりも穏やかに電力消費が増加することになる。
なお、本実施の形態では、クロックのタイミングが第1の実施の形態と同じ例を挙げて説明したが、クロックのタイミングは、第2の実施の形態のように、各列の起動間隔をアレイの列数サイクル数だけ間引き、間引き間隔を徐々に削減する方法(図4参照)を採用してもよい。
(第5の実施の形態)
図9は、第5の実施の形態のニューラルネットワーク演算装置を含むLSIを表した図である。上記した実施の形態では、演算の起動時にクロックの供給開始タイミングを遅延させる構成について説明したが、本実施の形態では、診断回路での電力消費を利用することで、ニューラルネットワーク演算装置の電力消費の変動を抑制する例について説明する。
すなわち、本実施の形態のニューラルネットワーク演算装置は、ニューラルネットワーク処理を行うニューラルネットワーク演算装置であって、アレイ状に配置された複数のプロセッサエレメントと、前記プロセッサエレメントに対して供給する入力アクティベーションデータを記憶するアクティベーションメモリと、前記プロセッサエレメントのそれぞれの動作を制御するメインコントローラとを備え、前記各プロセッサエレメントまたは前記メインコントローラのいずれか一方もしくは両方が演算検査処理機能を備え、前記メインコントローラは、前記プロセッサエレメントに対して演算処理と演算検査処理を選択的に実行指示する構成を備えている。以下、図面を参照して詳しく説明する。
9はSOC全体を示す。SOC9には、多くの場合、システム全体を司る不図示のCPUやバスシステムを含み、システムとして機能する。
90は、本実施の形態のニューラルネットワーク演算装置である。
91はSOC9全体にクロックを供給するクロックジェネレータである。該クロックジェネレータ91は、ニューラルネットワーク演算装置90にもクロックを供給する。本クロックは、設計によっては1種類の周波数を供給する場合もあるし、複数種類の周波数のクロックを供給する場合もある。本実施の形態においては、簡単のため1種類のクロックを供給する場合について説明するが、本発明は複数種類のクロックにおいても実現可能である。
ニューラルネットワーク演算装置90は、その構成によってはSOC全体の規模のうち、50%以上を占めることもある。したがって、ニューラルネットワーク演算装置90の電力消費もそれに応じてSOC9全体の主たる部分になり得る。
次に、ニューラルネットワーク演算装置90の内部構成について説明する。
901は、メインコントローラである。メインコントローラ901はニューラルネットワーク演算装置90全体の処理シーケンスや、入出力データの管理、後述のプロセッサエレメントに対する動作要求を制御するモジュールである。加えて、メインコントローラ901はニューラルネットワーク演算装置90の動作状態の情報に基づいて電力制御も行う。
902は、クロックコントローラである。クロックコントローラ902は、後述のプロセッサエレメント904やニューラルネットワーク演算装置90のその他すべての内部モジュールに対してクロックを供給する。該クロックコントローラ902には、複数のプロセッサエレメント904に対して個別にクロックを供給・停止する機構が実装されている。加えて、個別のプロセッサエレメントPEijに対してクロックの周波数を制御する機構を持たせてもよい。
903は、アクティベーションメモリである。アクティベーションメモリ903は、後述のプロセッサエレメント904に供給するアクティベーションデータを記憶するモジュールである。メインコントローラ901は、不図示のDMAコントローラ等を用いて、本アクティベーションメモリ903に対して必要となるアクティベーションデータを従前に転送し、処理開始とともにプロセッサエレメント904に対してデータを供給するように指示を行う。アクティベーションメモリ903は当該指示に基づいて、必要となるアクティベーションデータをプロセッサエレメント904に供給する。
当該部分の実装方法は、メインコントローラ901がアクティベーションメモリ903に指示を出してアクティベーションメモリ903が能動的にデータをプロセッサエレメントに対して供給しても良いし、メインコントローラ901がプロセッサエレメント904に指示を出すことで、プロセッサエレメント904がアクティベーションメモリ903から必要となるデータを読み出しても良い。
904は、プロセッサエレメントである。プロセッサエレメント904は、入力アクティベーションと不図示のWeight入力用メモリからのWeight値を入力として、畳み込み演算を実行する乗算器と加算器からなる畳み込み演算器を1つ以上具備する。多くの場合、プロセッサエレメントには畳み込み乗算器が複数実装されており、複数の畳み込み演算を同時並列に実行できる構成になっている。
プロセッサエレメント904の用語は、プロセッサエレメントを総称する場合に用い、個々のプロセッサエレメントを指す場合には、プロセッサエレメント「PEij」という。ここで、ijは、位置によってプロセッサエレメントPEを特定する番号であり、i(i=0,・・・,m)は行を特定し、j(j=0,・・・,n)は列を特定する。
演算出力である出力アクティベーションは、アクティベーションメモリ903に再度保持されるか、モジュール外部に出力される。
これらのプロセッサエレメント904はニューラルネットワーク演算装置90の内部で論理的に2次元配列的に配置されており、上下、左右に隣接するプロセッサエレメントは畳み込み演算実施過程でアクティベーションデータを相互に転送することで、1以上のカーネルサイズの畳み込み演算を実現する。
例えば、図9中のPE11がカーネルサイズ2x2の畳み込み演算を実施する場合には、PE11はPE10にアクティベーションメモリ903から入力されたアクティベーションデータを取得することで、処理対象の左隣りのアクティベーションデータを取得することができる。同様にPE01から上隣りのデータとPE00からPE01に一旦伝送されたアクティベーションデータも受け取り、演算に利用する構造になっている。または、アクティベーションメモリ903から隣接2x2領域のアクティベーションデータを取得してもよい。
905は、診断回路である。図9において診断回路は「BIST」と記載している。これは「Build in soft test」の略である。診断回路905は、診断処理を行う際の入力パターンと対応する演算期待値を生成または保持し、入力パターンに対するプロセッサエレメント904の演算結果と演算期待値との比較を行う回路である。この回路はプロセッサエレメント904ごとに1つ配置されている。当該機能を定期的に実行することにより、プロセッサエレメント904のハードウェア故障を検出することが可能となる。
診断回路905は、メインコントローラ901とそれぞれに結線されており、メインコントローラ901は、各プロセッサエレメント904に対して、通常のアクティベーションデータを供給して演算を実行するか、診断回路905からのパターンデータを供給して演算を実行するかを選択することができる。
診断回路905は、図中では各プロセッサエレメントに隣接する形で配置されており、メインコントローラ901からの選択信号によって診断回路905からのパターンが選択された場合には、対応するプロセッサエレメント904に対して診断用のデータパターンを供給することができる。
一方で、診断回路905をメインコントローラ901内部に実装し、各プロセッサエレメント904に対して、診断パターンを供給できる構成にしてもよい。この構成の場合、診断回路905は少なくとも1つのプロセッサエレメント904が診断処理を実行する場合には診断パターンを生成し、メインコントローラ901によって生成される選択信号とともに診断パターンを対象プロセッサエレメント904に送出する。
診断回路905が実行する診断処理は、通常のアクティベーションデータを演算する場合に比べ、プロセッサエレメント904間でのデータ転送が不要であり、プロセッサエレメント904ごとに処理が完結する。加えて、診断に用いるパターンは所定のトグル率を達成できれば良く、各プロセッサエレメント904で消費する電力は当該トグル率をある程度従前に制御することができる。
次に、これらの構成を用いたクロックと診断処理の処理フローを説明する。この処理では、メインコントローラ901はクロックコントローラ902に対してクロック投入を指示する。2次元に配置されたプロセッサエレメント904のうち、同じ列のプロセッサエレメント904に対して、1本のクロックが供給される。
以上の構成で、メインコントローラ901は診断回路905を有効にし、クロックを印加するタイミングを列ごとに順次調整する。本実施の形態においては、クロックを印加するタイミングは、同時であってもよいし、PE列ごとに1サイクルずつずれてもよいし、それ以上のサイクル数でずれてもよい。このとき、1サイクルの場合には、診断回路が消費する電力を実際の演算処理が消費する電力よりも小さくなる可能性が高いトグルパターンにしておく。
また、複数サイクルの場合には、診断回路905が生成する診断パターンは徐々にトグル率が増加するようなパターンであるとよい。さらに、プロセッサエレメント904の演算器が複数の演算器から構成されている場合には、そのすべてを一連の畳み込み演算処理が実現できる方法で起動する必要はなく、各々の演算器の妥当性さえ確認できれば良いのであって、演算器ごとに活性化してもよい。
その後、メインコントローラ901は、診断回路905の処理が完了したプロセッサエレメント904から順次実際の積和演算処理に切替える。これにより、通常の畳み込み演算処理の前に、畳み込み演算のデータフローに依存することなく、かつ消費電力を無駄にすることなく、徐々にモジュールの電力消費を増加させることができる。
以上について、図10を例として説明する。図10は、横軸に時間、縦軸にプロセッサエレメント904の列方向の稼働を示した図である。例として図10では、プロセッサエレメント904の列数(すなわち、グループの数)は8である。この例では、簡単のため、メインコントローラ901はクロックコントローラ902に対して、全てのクロックを同時に供給している。
以上の前提において、メインコントローラ901は、まず1列目の診断回路を起動する。この診断回路のパターンのトグル率を例えば25%前後で調整してある。1列目の診断回路の処理が完了するタイミングで、メインコントローラ902は、2列目の診断回路を起動する。この診断回路のパターンのトグル率を例えば50%前後で調整する。同様にトグル率75%の3列目の診断回路、トグル率100%の4列目の診断回路を順次起動する。
その後、図10の例では、診断が完了したものについては、実際の畳み込み演算を順次開始する。この畳み込み演算の処理においては、前述の通りプロセッサエレメント904間のデータ転送が発生するから、プロセッサエレメント間のデータ転送のレイテンシと整合するだけの起動のズレが生じることになる。他方で、診断処理は当該データ転送の依存性が存在しないため、起動するタイミングはより自由に設定できる。
図10の例では、4列目から8列目の診断処理と畳み込み演算処理が重複している。この場合には、4列目から8列目の診断パターンのトグル率は低めの値で実施すればよい。また、常に列のパターンを固定化してしまうと、トグル率の低い診断回路とトグル率の高い診断回路で不具合検出率に差異が生じる可能性があるため、診断回路を起動する順番を適宜入れ替えると活性化率が平均化されてよい。
このように本実施の形態のニューラルネットワーク演算装置80は、プロセッサエレメント904と診断回路905へのクロック供給を組み合わせてコントロールすることで、電力の変動を抑制することができる。
(第6の実施の形態)
第6の実施の形態のニューラルネットワーク演算装置の基本的な構成は、第5の実施の形態のニューラルネットワーク演算装置50と同じである。第6の実施の形態のニューラルネットワーク演算装置は、第5の実施の形態のニューラルネットワーク演算装置90において、診断回路の起動数を変えることで電力を順次増加させる。
図11は、第6の実施の形態のニューラルネットワーク演算装置による処理について説明するための図である。図11では、メインコントローラ901は0列目と4列目のプロセッサエレメント904に対して、診断回路905を用いて診断処理を実施する。したがって、この時動作しているプロセッサエレメント列は2である。該処理が完了するのと同タイミングで、メインコントローラ901は2列目と6列目に対して同様に処理を行う。したがって、このタイミングでも動作するプロセッサエレメント列は2である。
その後、メインコントローラ901は、残り4つのプロセッサエレメント列に対して診断処理を起動する。その後、メインコントローラ901は全プロセッサエレメントで畳込み演算処理を実行する。これにより、プロセッサエレメントの稼働率が段階的に上昇し、緩やかに電力消費を増加させることが可能である。本実施の形態では、上記のパターンで診断回路を起動したが、プロセッサエレメント904の稼働数が徐々に増加すればよく、パターンは上記に限定されるものではない。
また、上述した第5の実施の形態および第6の実施の形態では、プロセッサエレメント904に対し、列を単位としてグループを形成してクロック信号を供給する例を挙げたが、行と列を入れ替え、行を単位としてグループを形成してクロック信号を供給する構成としてもよいことは言うまでもない。さらに、これらの実施の形態に対して、第1~第4の実施の形態で説明したクロック供給の遅延制御を組み合わせて実施することもできる。
(第7の実施の形態)
第7の実施の形態のニューラルネットワーク演算装置の基本的な構成は、第5の実施の形態のニューラルネットワーク演算装置90と同じである(図9参照)。第7の実施の形態では、診断回路の起動数を、ニューラルネットワーク処理の状態に応じて変化させることで電力を一定化する。
すなわち、本実施の形態のニューラルネットワーク演算装置は、ニューラルネットワーク処理を行うニューラルネットワーク演算装置であって、アレイ状に配置された複数のプロセッサエレメントと、前記プロセッサエレメントに対して供給する入力アクティベーションデータを記憶するアクティベーションメモリ(103)と、前記プロセッサエレメントのそれぞれの動作を制御するメインコントローラ(101)とを備え、前記メインコントローラは、ニューラルネットワーク処理の種類を検出し、前記ニューラルネットワーク処理の種類に応じて予め規定された消費電力に基づいて、前記プロセッサエレメントの一部に対して演算検査処理を指示する構成を有する。以下、図面を参照して詳しく説明する。
メインコントローラは、プロセッサエレメントに対して演算処理を指示する。この時、ニューラルネットワークの処理によっては、プロセッサエレメントの全てを使用しない処理が存在する。例えば、畳み込み演算を行なわず、2つのネットワークをチャネル方向に単純に連結する処理がある。このような処理では、畳み込み演算を実行する場合に比べて、演算器が動作しない分だけ電力消費が急減する可能性がある。
また、別の例として画像の端部などの場合には、全てのプロセッサエレメントが処理を行わず、一部分のみが活性化する場合がある。この場合も電力消費が減少する可能性がある。
本実施の形態では、上記背景に鑑み、ニューラルネットワークの処理に応じて、メインコントローラが、プロセッサエレメントまたはプロセッサエレメントの演算処理部に対して診断処理を実行するように指示を行う。
図12は、第7の実施の形態のニューラルネットワーク演算処理装置の処理について説明するための図である。第7の実施の形態のニューラルネットワーク演算装置は、第5の実施の形態と同様に、プロセッサエレメントへのクロック供給は列を単位とするグループごとに行われる。
図12に示す例では、先頭の処理において偶数行目のプロセッサエレメントのみが処理を行い、奇数行目のプロセッサエレメントは転送のみを実行する。次の処理タイミングでは、奇数行目のみが処理を行い、偶数行目は転送処理を行うが、このタイミングにおいて、メインコントローラは偶数行目のプロセッサエレメントに対して診断処理を起動することができる。このとき、実際の演算処理と診断処理に時間差がある場合には、診断処理を随時実行してよい。
以上説明した処理により、プロセッサエレメントの処理内容に起因する電力消費の急激な変動を抑えることができる。
(第8の実施の形態)
第8の実施の形態のニューラルネットワーク演算装置の基本的な構成は、第5の実施の形態のニューラルネットワーク演算装置50と同じである。上記した実施の形態においては、ニューラルネットワーク演算装置の演算の起動時に、一斉にクロック供給を開始することに伴う電力変動の抑制に着目して説明してきたが、電力変動はクロック供給を停止する場合にも起こり得る。
第8の実施の形態のニューラルネットワーク演算装置では、処理の終了時に、メインコントローラはプロセッサエレメントに対して図5の逆順でクロックを段階的に停止する。また、処理の終了時にメインコントローラは、図10または図11の逆順で、プロセッサエレメントおよび診断回路に対するクロックを段階的に停止する。
また、メインコントローラは、実行中の処理が完了する場合に、現在の処理がニューラルネットワーク処理の最終レイヤであるか否かを判断し、ニューラルネットワーク処理が最終レイヤであった場合のみ、段階的なクロック停止に移行する。一方で、最終レイヤでない場合には、段階的クロック停止の手続きをキャンセルし、クロックを供給し続ける構成としてもよい。
この機能により、レイヤ処理が継続する場合には、性能を低下させることなく処理を継続できる一方で、レイヤ処理が終了する場合の急激な電力消費量変動を回避できる。
(第9の実施の形態)
図13は、第9の実施の形態のニューラルネットワーク演算装置の構成を示す図である。上記した実施の形態では、クロック供給の単位がプロセッサエレメントであるとして説明してきたが、本実施の形態では、電力消費の変動を抑制する更にきめ細かい制御について説明する。
本実施の形態のニューラルネットワーク演算装置は、ニューラルネットワーク処理を行うニューラルネットワーク演算装置(10)であって、アレイ状に配置された複数のプロセッサエレメント(104)と、前記プロセッサエレメントに対して供給する入力アクティベーションデータを記憶するアクティベーションメモリ(103)と、前記プロセッサエレメントのそれぞれの動作を制御するメインコントローラ(101)とを備え、前記プロセッサエレメントは、各々が異なる機能を実行する複数の処理部を有し、各処理部に独立にクロックを供給可能な構成を有し、前記メインコントローラは、演算処理の起動時に各プロセッサエレメントの複数の処理部に対する起動タイミングを個別に制御し、段階的に前記プロセッサエレメントを起動する構成を有する。以下、図面を参照して詳しく説明する。
第9の実施の形態のニューラルネットワーク演算装置の基本的な構成は第1の実施の形態と同じであるが、本実施の形態のニューラルネットワーク演算装置130は、プロセッサエレメント1304が、内部構造として、演算部である13041とデータ転送部である13042に分割されている。本実施の形態では、プロセッサエレメントを演算部13041とデータ転送部13042とで分割制御し、データ演算と演算処理の組み合わせで電力を順次増加させる。
13041は演算部であり、入力アクティベーションとWeight値に基づいて積和演算を実行する演算ユニットである。演算部13041は、少なくとも1つ以上の積和演算器で構成され、通常はその要求性能に応じて複数の演算器が実装されている。また、サポートするレイヤ処理によっては、積和演算器以外の演算が実行できるようになっていてもよい。
13042は、データ転送部である。データ転送部は2x2以上のカーネルによる畳み込み演算を実行する際に、アクティベーションデータを隣接するプロセッサエレメント間で共有するために、アクティベーションデータを転送する。
演算部13041とデータ転送部13042は、プロセッサエレメント1304の外部から独立にクロック供給が実行できる構造になっている。また、リセットについても独立してリセット制御する構成にしてもよい。あるいは、本実施の形態では、プロセッサエレメント外部からクロック供給を制御する前提ではあるが、プロセッサエレメント1304内部でクロックを制御する構成であってもよい。
通常の畳み込み演算処理時においては、演算部13041もデータ転送部13042も同時に実行される。仮に、演算部13041またはデータ転送部13042のいずれか一方のみが実行される場合には、通常の処理時に比べて電力消費が小さくなる。また、演算部13041とデータ転送部13042の回路を比較すると、一般的に、演算部13041の方が論理規模が大きく、故に電力消費量も多くなる。以上の特徴を利用し、本実施の形態では、次に示すようなシーケンスで処理を実行する。
図14は、本実施の形態の処理シーケンスを示した図である。図14では、簡単のため、8列のプロセッサエレメントが並んでいる場合を想定するが、本発明は8列に限定されるものではない。図14は、複数の畳み込み層を連続して処理する場合のプロセッサエレメントごとの稼働状態を示している。横軸に時間、縦軸がプロセッサエレメント列を示している。図14では、3レイヤを連続実行する場合のシーケンスを示しているが、少なくとも2層以上のレイヤ処理を実行できれば本シーケンスは成立する。
メインコントローラ1301は、Conv0番目のレイヤ処理を実行するときに、まず偶数列(0,2,4,6列目)に対しては演算部13041及びデータ転送部13042の両方を稼働するように指示し、同時に奇数列(1,3,5,7列目)に対しては、データ転送部13042のみを稼働するように指示し、演算部13041を動作させない。このとき、データ転送部13042は全てのプロセッサエレメント1304で実行されるので、全プロセッサエレメント1304で必要となるデータは通常通りに供給される一方で、演算処理は偶数列しか行われず、奇数列については、演算がなされない。
次に、メインコントローラ1301は、奇数列(1,3,5,7列目)に対しては演算部13041及びデータ転送部13042の両方を稼働するように指示し、同時に偶数列(0,2,4,6列目)に対しては、データ転送部13042のみを稼働するように指示し、演算部13041を動作させない。この組み合わせによって、奇数列の演算処理が実行され、前の処理と合わせてConv0番目のレイヤ処理が完了する。
プロセッサエレメント1304は引き続き、Conv1レイヤを実行するが、メインコントローラ1301は、Conv1レイヤ目以降は全プロセッサエレメント1304に対して、演算部13041及びデータ転送部13042の両方を活性化するように指示を出す。これによって、プロセッサエレメントの全てが動作する。以上によってConv0レイヤ処理中の演算器の稼働率は通常の50%に限定されるため、電力消費はConv1以降のレイヤ処理中の電力に比較して、小さくなるように制御することができる。
1 SOC、10 ニューラルネットワーク演算装置、11 クロックジェネレータ、
101 メインコントローラ、102 クロックコントローラ、
103 アクティベーションメモリ、104 プロセッシングエレメント、
201~204 Enable信号、205~208 クロック信号、
401~404 Enable信号、405~408 クロック信号、
6 SOC、60 ニューラルネットワーク演算装置、61 クロックジェネレータ、
601 メインコントローラ、602 クロックコントローラ、
603 アクティベーションメモリ、604 プロセッシングエレメント、
605~609 グループ、
8 SOC、80 ニューラルネットワーク演算装置、81 クロックジェネレータ、
801 メインコントローラ、802 クロックコントローラ、
803 アクティベーションメモリ、804 プロセッシングエレメント、
805~807 グループ、
9 SOC、90 ニューラルネットワーク演算装置、91 クロックジェネレータ、
901 メインコントローラ、902 クロックコントローラ、
903 アクティベーションメモリ、904 プロセッシングエレメント、
905 診断回路、
13 SOC、130 ニューラルネットワーク演算装置、
131 クロックジェネレータ、
1301 メインコントローラ、1302 クロックコントローラ、
1303 アクティベーションメモリ、1304 プロセッシングエレメント、
13041 演算部、13042 データ転送部。

Claims (9)

  1. ニューラルネットワーク処理を行うニューラルネットワーク演算装置(10)であって、
    アレイ状に配置された複数のプロセッサエレメント(104)と、
    前記プロセッサエレメントに対して供給する入力アクティベーションデータを記憶するアクティベーションメモリ(103)と、
    前記プロセッサエレメントのそれぞれの動作を制御するメインコントローラ(101)と、
    を備え、
    クロックジェネレータのクロック線はアレイ状に配列されたプロセッサエレメントの端点から放射状にプロセッサエレメント(604)を論理的にまとめたグループ(605~609)を形成したうえで、該グループのそれぞれに独立にクロック線が接続され、
    前記メインコントローラ(601)は、演算処理を放射状に接続された前記グループごとに起動するとともにクロックジェネレータ(61)の当該プロセッサエレメントのグループへのクロック供給を指示し、ニューラルネットワーク演算のためのデータの供給に同期して、前記プロセッサエレメントの端点から順次クロックを供給するニューラルネットワーク演算装置。
  2. ニューラルネットワーク処理を行うニューラルネットワーク演算装置(10)であって、
    アレイ状に配置された複数のプロセッサエレメント(104)と、
    前記プロセッサエレメントに対して供給する入力アクティベーションデータを記憶するアクティベーションメモリ(103)と、
    前記プロセッサエレメントのそれぞれの動作を制御するメインコントローラ(101)と、
    を備え、
    前記各プロセッサエレメントまたは前記メインコントローラのいずれか一方もしくは両方が演算検査処理機能を備え、
    前記メインコントローラは、クロックジェネレータ(11)から供給されるクロックをそれぞれのプロセッサエレメントに供給するタイミングを制御し、かつ、前記プロセッサエレメントに対して演算処理と演算検査処理を選択的に実行指示するニューラルネットワーク演算装置。
  3. ニューラルネットワーク処理を行うニューラルネットワーク演算装置(10)であって、
    アレイ状に配置された複数のプロセッサエレメント(104)と、
    前記プロセッサエレメントに対して供給する入力アクティベーションデータを記憶するアクティベーションメモリ(103)と、
    前記プロセッサエレメントのそれぞれの動作を制御するメインコントローラ(101)と、
    を備え、
    前記メインコントローラ(101)は、クロックジェネレータ(11)から供給されるクロックをそれぞれのプロセッサエレメントに供給するタイミングを制御し、かつ、ニューラルネットワーク処理の開始前に、演算検査処理の実行数が漸進的に増加するように実行指示するニューラルネットワーク演算装置。
  4. ニューラルネットワーク処理を行うニューラルネットワーク演算装置(10)であって、
    アレイ状に配置された複数のプロセッサエレメント(104)と、
    前記プロセッサエレメントに対して供給する入力アクティベーションデータを記憶するアクティベーションメモリ(103)と、
    前記プロセッサエレメントのそれぞれの動作を制御するメインコントローラ(101)と、
    を備え、
    前記メインコントローラ(101)は、クロックジェネレータ(11)から供給されるクロックをそれぞれのプロセッサエレメントに供給するタイミングを制御し、かつ、ニューラルネットワーク処理の種類を検出し、前記ニューラルネットワーク処理の種類に応じて予め規定された消費電力に基づいて、前記プロセッサエレメントの一部に対して演算検査処理を指示するニューラルネットワーク演算装置。
  5. アレイ状に配列されたプロセッサエレメントは、隣接するプロセッサエレメント間でメインコントローラからの命令を転送する機能を備え、
    前記クロックジェネレータのクロック線は前記プロセッサエレメントを論理的にまとめたグループごとに接続され、
    前記メインコントローラは、前記プロセッサエレメントへのニューラルネットワーク演算のためのデータの供給に同期して、前記グループごとに前記プロセッサエレメントにクロックを供給し、演算処理の起動からの時間の経過に伴ってクロックを供給する前記グループを増加させる請求項2~4のいずれか1項に記載のニューラルネットワーク演算装置。
  6. アレイ状に配列されたプロセッサエレメントは、隣接するプロセッサエレメント間でメインコントローラからの命令を転送する機能を備え、
    前記クロックジェネレータのクロック線はプロセッサエレメントの列ごとに接続され、
    前記メインコントローラは、演算処理を列ごとに起動するとともに、クロックジェネレータの当該列のクロック供給を指示し、ニューラルネットワーク演算のためデータの供給に同期して前記プロセッサエレメントの列の一端側から順次クロックを供給する請求項2~4のいずれか1項に記載のニューラルネットワーク演算装置。
  7. クロックジェネレータのクロック線は半導体シリコン上に配置配線されたプロセッサエレメント(804)の物理的配置に応じてプロセッサエレメントをまとめたグループを形成したうえで該グループのそれぞれに独立にクロック線が接続され、
    前記メインコントローラは、演算処理を前記グループごとに起動するとともにクロックジェネレータの当該プロセッサエレメントのクロック供給を指示し、半導体シリコン上の電力消費が均等になるように順次クロックを供給する請求項2~4のいずれか1項に記載のニューラルネットワーク演算装置。
  8. 前記メインコントローラは、ニューラルネットワーク処理の進行状態を検出する機能を備え、ニューラルネットワーク処理の進行状態によって、クロック供給を継続するか、クロックを停止するかを決定する請求項1~のいずれか1項に記載のニューラルネットワーク演算装置。
  9. 前記プロセッサエレメントは、各々が異なる機能を実行する複数の処理部を有し、各処理部に独立にクロックを供給可能な構成を有し、
    前記メインコントローラは、演算処理の起動時に各プロセッサエレメントの複数の処理部に対する起動タイミングを個別に制御し、段階的に前記プロセッサエレメントを起動する請求項1~8のいずれか1項に記載のニューラルネットワーク演算装置。
JP2022047092A 2022-03-23 2022-03-23 ニューラルネットワーク演算装置 Active JP7707977B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2022047092A JP7707977B2 (ja) 2022-03-23 2022-03-23 ニューラルネットワーク演算装置
JP2025077759A JP2025114723A (ja) 2022-03-23 2025-05-08 ニューラルネットワーク演算装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2022047092A JP7707977B2 (ja) 2022-03-23 2022-03-23 ニューラルネットワーク演算装置

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2025077759A Division JP2025114723A (ja) 2022-03-23 2025-05-08 ニューラルネットワーク演算装置

Publications (2)

Publication Number Publication Date
JP2023140990A JP2023140990A (ja) 2023-10-05
JP7707977B2 true JP7707977B2 (ja) 2025-07-15

Family

ID=88206581

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2022047092A Active JP7707977B2 (ja) 2022-03-23 2022-03-23 ニューラルネットワーク演算装置
JP2025077759A Pending JP2025114723A (ja) 2022-03-23 2025-05-08 ニューラルネットワーク演算装置

Family Applications After (1)

Application Number Title Priority Date Filing Date
JP2025077759A Pending JP2025114723A (ja) 2022-03-23 2025-05-08 ニューラルネットワーク演算装置

Country Status (1)

Country Link
JP (2) JP7707977B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN121511148A (zh) 2023-07-14 2026-02-10 软银集团股份有限公司 控制系统
CN117829231A (zh) * 2023-12-29 2024-04-05 北京地平线信息技术有限公司 神经网络处理器处理神经网络特征图的方法、装置和设备

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006048467A (ja) 2004-08-06 2006-02-16 Seiko Epson Corp 半導体集積回路
JP2006065471A (ja) 2004-08-25 2006-03-09 Fuji Xerox Co Ltd 半導体集積回路およびその節電制御方法および節電制御プログラム
JP2006079505A (ja) 2004-09-13 2006-03-23 Matsushita Electric Ind Co Ltd 半導体装置のクロック制御装置
JP2007233718A (ja) 2006-03-01 2007-09-13 Canon Inc 制御装置及び半導体集積回路
JP2009037335A (ja) 2007-07-31 2009-02-19 Toshiba Corp 電源管理装置及び電源管理方法
WO2021204435A1 (en) 2020-04-07 2021-10-14 International Business Machines Corporation Neural network weight distribution from a grid of memory elements

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08202468A (ja) * 1995-01-27 1996-08-09 Hitachi Ltd マルチプロセッサシステム
JP4711287B2 (ja) * 2005-04-13 2011-06-29 ルネサスエレクトロニクス株式会社 半導体集積回路装置
JP7135941B2 (ja) * 2019-03-01 2022-09-13 コニカミノルタ株式会社 放射線撮影装置

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006048467A (ja) 2004-08-06 2006-02-16 Seiko Epson Corp 半導体集積回路
JP2006065471A (ja) 2004-08-25 2006-03-09 Fuji Xerox Co Ltd 半導体集積回路およびその節電制御方法および節電制御プログラム
JP2006079505A (ja) 2004-09-13 2006-03-23 Matsushita Electric Ind Co Ltd 半導体装置のクロック制御装置
JP2007233718A (ja) 2006-03-01 2007-09-13 Canon Inc 制御装置及び半導体集積回路
JP2009037335A (ja) 2007-07-31 2009-02-19 Toshiba Corp 電源管理装置及び電源管理方法
WO2021204435A1 (en) 2020-04-07 2021-10-14 International Business Machines Corporation Neural network weight distribution from a grid of memory elements

Also Published As

Publication number Publication date
JP2023140990A (ja) 2023-10-05
JP2025114723A (ja) 2025-08-05

Similar Documents

Publication Publication Date Title
JP2025114723A (ja) ニューラルネットワーク演算装置
Negrini et al. Fault tolerance techniques for array structures used in supercomputing
US20070033369A1 (en) Reconfigurable integrated circuit device
US20050104653A1 (en) Multiple circuit blocks with interblock control and power conservation
US11392535B2 (en) Loading operands and outputting results from a multi-dimensional array using only a single side
US20090282213A1 (en) Semiconductor integrated circuit
KR20220015813A (ko) 딥러닝 연산 수행 방법 및 장치
JP4686065B2 (ja) クロック制御装置およびクロック制御方法
US12242416B2 (en) Systolic neural CPU processor
CN116113905B (zh) 多时钟控制
CN113656346A (zh) 一种三维芯片及计算系统
US8972769B2 (en) Data processing apparatus and control method for controlling clock frequency based on calculated frequency-to-response-time ratios
JP4753895B2 (ja) 遅延調整回路を有するアレイ型プロセッサ
US8190856B2 (en) Data transfer network and control apparatus for a system with an array of processing elements each either self- or common controlled
CN112862079B (zh) 一种流水式卷积计算架构设计方法及残差网络加速系统
US20040250047A1 (en) Method and apparatus for a shift register based interconnection for a massively parallel processor array
EP4571747A1 (en) Computing-in-memory chip architecture, packaging method, and apparatus
CN113515240A (zh) 一种芯片计算器件及计算系统
US12353337B2 (en) Methods and circuits for aggregating processing units and dynamically allocating memory
JP7701296B2 (ja) 半導体装置
CN215769709U (zh) 一种芯片计算器件及计算系统
US11811401B2 (en) Dual-mode operation of application specific integrated circuits
JP5107152B2 (ja) Cpu動作クロック同調式plcバスシステム
US20250363071A1 (en) Calculation device and data moving method
JP2006048467A (ja) 半導体集積回路

Legal Events

Date Code Title Description
A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A712

Effective date: 20240201

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20240610

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20250221

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20250311

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20250508

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20250603

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20250616

R150 Certificate of patent or registration of utility model

Ref document number: 7707977

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150