JPWO2019216376A1 - 演算処理装置 - Google Patents

演算処理装置 Download PDF

Info

Publication number
JPWO2019216376A1
JPWO2019216376A1 JP2020518334A JP2020518334A JPWO2019216376A1 JP WO2019216376 A1 JPWO2019216376 A1 JP WO2019216376A1 JP 2020518334 A JP2020518334 A JP 2020518334A JP 2020518334 A JP2020518334 A JP 2020518334A JP WO2019216376 A1 JPWO2019216376 A1 JP WO2019216376A1
Authority
JP
Japan
Prior art keywords
data
unit
storage memory
coefficient
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.)
Granted
Application number
JP2020518334A
Other languages
English (en)
Other versions
JP7261226B2 (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.)
Olympus Corp
Original Assignee
Olympus 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 Olympus Corp filed Critical Olympus Corp
Publication of JPWO2019216376A1 publication Critical patent/JPWO2019216376A1/ja
Application granted granted Critical
Publication of JP7261226B2 publication Critical patent/JP7261226B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/15Correlation function computation including computation of convolution operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/21Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
    • G11C11/34Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
    • G11C11/40Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
    • G11C11/41Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming static cells with positive feedback, i.e. cells not needing refreshing or charge regeneration, e.g. bistable multivibrator or Schmitt trigger
    • G11C11/413Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing, timing or power reduction

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Biophysics (AREA)
  • Biomedical Technology (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Data Mining & Analysis (AREA)
  • Mathematical Physics (AREA)
  • Computing Systems (AREA)
  • Software Systems (AREA)
  • Computational Linguistics (AREA)
  • General Health & Medical Sciences (AREA)
  • Evolutionary Computation (AREA)
  • Artificial Intelligence (AREA)
  • Molecular Biology (AREA)
  • Computational Mathematics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Neurology (AREA)
  • Computer Hardware Design (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Image Processing (AREA)
  • Image Analysis (AREA)

Abstract

演算処理装置の演算部は、乗算器および第1加算器を有し前記フィルタ処理を行うフィルタ処理部と、N並列で実行される前記フィルタ処理の結果を全て累積加算する前記累積加算処理を行う第2加算器と、前記累積加算処理の結果に対し前記非線形演算処理を行う非線形変換部と、前記非線形演算処理の結果に対し前記プーリング処理を行うプーリング処理部と、前記フィルタ処理部、前記第2加算器、前記非線形変換部、および前記プーリング処理部を制御する演算制御部と、を有する。

Description

本発明は、演算処理装置、より詳しくは、畳み込みニューラルネットワークを用いたディープラーニングを行う演算処理装置の回路構成に関する。
本出願は、2018年5月11日に出願された国際出願PCT/JP2018/018306に基づく優先権を主張し、当該出願に記載された全ての記載内容を援用するものである。
従来、複数の処理層が階層的に接続されたニューラルネットワークを用いて演算を実行する演算処理装置がある。特に画像認識を行う演算処理装置では、畳み込みニューラルネットワーク(Convolutional Neural Network、以下CNNという)を用いたディープラーニングが広く行われている。
図33は、CNNを用いたディープラーニングの処理の流れを示す図である。CNNを用いたディープラーニングによる画像認識では、入力される画像データ(ピクセルデータ)に対して、CNNの複数の処理層における処理が順次施されることにより、画像に含まれる対象物が認識された最終的な演算結果データが得られる。CNNを用いたディープラーニングによる画像認識は、高い認識率を実現できる。
具体的には、まず、画像データに対して、ある領域を抽出して係数(係数)の異なる複数のフィルタを乗じて特徴量マップ(FeatureMap、FM)を作成する畳み込み演算処理(Convolution処理)と、特徴量マップから一部領域を抽出する縮小処理(プーリング処理)の組合せ(1つの処理層)を複数回(複数の処理層において)行う。これらの処理が、畳み込み層(Convolution層)の処理である。
Convolution処理が進み、FMをある程度まで小さくしたところで、画像データを1次元のデータ列と読み変える。1次元のデータ列の各データに対して各々異なる係数を乗じて累積加算を行うFullConnect処理を複数回(複数の処理層において)行う。これらの処理が、全結合層(FullConnect層)の処理である。
そして、FullConnect処理の後、最終的な演算結果である被写体推定結果として、画像に含まれる対象物が検出された確率(被写体検出の確率)が出力される。図33の例では、最終的な演算結果データとして、犬が検出された確率は0.01(1%)、猫が検出された確率は0.04(4%)、ボートが検出された確率は0.94(94%)、鳥が検出された確率は0.02(2%)である。
このように、CNNの処理層は、畳み込み演算処理、非線形処理、縮小処理(プーリング処理)等を含むConvolution処理を行うConvolution層(畳み込み層)と、全ての入力(ピクセルデータ)に係数を乗じて累積加算するFullConnect処理を行うFullConnect層(全結合層)とに大きく分類される。ただし、FullConnect層がない畳み込みニューラルネットワークも存在する。
図34は、Convolution処理の流れを示す図である。まず、入力された画像データの1画素を抽出して、係数の異なるフィルタ処理を行い、累積加算することにより、1画素に対応するデータができる。これを画像データの全画素に対して行い、全画素に対応するデータを作成する。次に、作成されたデータに対し、非線形変換および縮小処理(プーリング処理)を行い、出力特徴量マップ(oFM)が生成される。
さらに、出力特徴量マップ(oFM)を入力特徴量マップ(iFM)として、さらに係数の異なるフィルタ処理を行うことにより、上述のConvolution処理を繰り返す。このようにして複数回のConvolution処理を行い、出力特徴量マップ(oFM)を得る。
図35は、FullConnect処理の流れを示す図である。複数の入力データに対して同じ数の係数を用意して乗算し、乗算されたものを累積加算し、非線形演算を経て、1個の出力データができる。この処理を、係数を変えて複数回繰り返すことにより、複数の出力データができる。
CNNを用いたディープラーニングによる画像認識の処理において、CNNの処理層ごとに扱うデータ単位が異なるため、処理単位やメモリの最適化が難しい。そのため、CNNを用いたディープラーニングによる画像認識は、高性能PC(ハードウェア)やGPU(Graphics Processing Unit)を用いたソフトウエア処理、もしくはFPGA(Field Programmable Gate Array)などのコンフィギュラブル・デバイス(回路)で実装されるのが一般的である。
特許文献1および特許文献2は、高速化のため2次元アレイ状に積和演算群を配置することにより、Convolution処理を行う畳み込み演算処理部を構成し、この畳み込み演算処理部をFullConnect処理でも使用(共有)することにより、FullConnect処理のための回路を減らす構成を開示している。
特許文献3は、バースト転送が可能な画像メモリを用いた場合に、成分数の多いカラー画像データに対しても成分数の少ないモノクロ画像データに対しても、画像回転処理などを、内部メモリの増加を抑えて効率よく実行できる画像メモリ制御装置を開示している。具体的には、CMYKAの5成分の成分別に8ラインずつの入力バッファを5個形成し、この入力バッファから同一領域に対応する各成分の画像データを8×8画素単位のブロックで読み出す。そして、これらのブロックを同一行アドレス内の連続する列アドレスにバースト転送で格納する。
特開2016−99707号公報 特開2017−27314号公報 特開2012−146032号公報
特許文献1および特許文献2は、Convolution処理(フィルタ演算処理)とFullConnect処理(行列演算処理)は処理内容が違っているという前提のもとで、回路の一部(畳み込み演算処理部)を制御的に切り替えることにより、Convolution処理とFullConnect処理で共有している。すなわち、回路の一部を制御的に切り替えることにより、演算過程を変更して、Convolution処理およびFullConnect処理を実現する。しかし、Convolution処理とFullConnect処理で共有されているのは、回路の一部のみである。
そのため、畳み込み演算におけるフィルタカーネルサイズが回路的に固定化される。特許文献1ではシストリックアレイにより構成された多並列演算で高速に演算を行うが、フィルタサイズはシストリックアレイのサイズで定まってしまう。特許文献2についても同様である。また、特許文献1ではFullConnect処理を実行する時に、フィルタカーネルサイズに対して端数を持つ特徴量マップの場合は、無効画素処理をしなければならない。
また、CNNは、全てのiFMの同じ座標(の近傍)データを入力としてoFMの1画素を計算する処理である。大量のデータや係数を入出力するので、DRAMへの配置や転送効率を十分に考慮して設計しなければいけない。類似処理として複数フレームを入力してひとつの出力フレームを得るノイズリダクションや画像データ圧縮などの処理(フレーム間の相関性を利用する処理)がある。ただし、これらはせいぜい数〜数十フレームを入力とするものである。一方CNNは、FMをフレームとして考えれば(ネットワークの大きさにもよるが)数百〜数千フレームを入力とすることがある。したがって、単純にこれら類似処理と同様のデータフォーマットでDRAMアクセスすることはできない。
CNNにおいてネットワークを拡大することはFM数を増やすことと同義である。FMは2次元の位置情報を有するデータ列なので、iFMは「座標(X,Y)においてiFM数分の独立した要素を有するデータ列」と考えることができる。「独立した要素」=「次元」と捉えると、iFMは高次元のデータ列である、といえる。例えばRGB画像は3次元データ列である。
特許文献3では、1要素あたり次元(CMYKA)のデータ列を、処理の基本単位となる8×8サイズのブロックに分割することでバースト転送として効率的なデータセットを形成している。また、このブロックを処理単位として、処理単位の中でデータフォーマットを変えることで画像の回転に高速に対応することができる。
これに対して、CNNで処理したいデータの次元(=FM数)は上述した通り数百〜数千の高次元データ列であるため、処理の基本単位や1要素自体がバースト転送単位(またはそれ以上)のサイズとなり得る。さらに層毎にフレームのサイズや次元数が変化する。加えてCNNではShortcutという処理が存在することがあり、これに対応できるフォーマットでなければならない。
上述の事情を鑑み、本発明は、CNNを用いたディープラーニングによる画像認識において、Convolution処理とFullConnect処理で、回路全体を共有することができる演算処理装置を提供することを目的とする。さらに本発明は、Shortcut処理にも対応可能でかつDRAM転送効率を高く維持することができる演算処理装置を提供することを目的とする。
本発明の第一の態様は、Convolution処理とFullConnect処理を行うディープラーニング用の演算処理装置であって、入力特徴量マップデータを格納するデータ格納メモリ、および前記データ格納メモリを制御するデータ格納メモリ制御回路を有するデータ格納メモリ管理部と、係数を格納する係数格納メモリ、および前記係数格納メモリを制御する係数格納メモリ制御回路を有する係数格納メモリ管理部と、格納用外部メモリから、前記入力特徴量マップデータを取得するデータ入力部と、格納用外部メモリから、前記係数を取得する係数入力部と、前記格納用外部メモリに、出力特徴量マップデータを書き出すデータ出力部と、入力N並列、出力M並列の構成(N、M≧1)で、前記データ格納メモリから前記入力特徴量マップデータを取得し、前記係数格納メモリから前記係数を取得して、フィルタ処理、累積加算処理、非線形演算処理およびプーリング処理を行う演算部と、前記データ格納メモリ管理部、前記係数格納メモリ管理部、前記データ入力部、前記データ出力部、および前記演算部を制御するコントローラと、を有し、前記データ格納メモリ管理部は、前記入力特徴量マップデータを前記データ格納メモリから取り出し、前記係数格納メモリ管理部は、前記データ格納メモリ管理部のステータスを参照して、前記データ格納メモリ管理部から取り出すデータに対応する係数を前記係数格納メモリから取り出し、前記データ出力部は、前記演算部から出力されるM並列のデータを連結して前記格納用外部メモリに出力し、前記演算部は、乗算器および第1加算器を有し前記フィルタ処理を行うフィルタ処理部と、N並列で実行される前記フィルタ処理の結果を全て累積加算する前記累積加算処理を行う第2加算器と、前記累積加算処理の結果に対し前記非線形演算処理を行う非線形変換部と、前記非線形演算処理の結果に対し前記プーリング処理を行うプーリング処理部と、前記フィルタ処理部、前記第2加算器、前記非線形変換部、および前記プーリング処理部を制御する演算制御部と、を有する演算処理装置である。
前記データ格納メモリは、プーリング処理後の1データを算出するために必要なデータセットを格納するバッファを備え、前記バッファは前記データ格納メモリから読み出したデータを蓄積してもよい。
前記演算部の処理を制御する演算制御部をさらに有し、前記演算制御部は、FullConnect処理時は、入力の1次元データ列(要素数n)を所定サイズ(Fx×Fy)のデータ列N面分に換算する処理を行うように演算部を制御し(ただし、n≦Fx×Fy×N、FxとFyの少なくとも1つが2以上)、フィルタサイズを前記所定サイズ(Fx×Fy)に設定し、出力の1次元データ列(要素数m)として、出力特徴量マップデータのサイズが1×1、要素数がmとなるように演算部を制御してもよい。
Convolution処理時はFMサイズとフィルタサイズは異なっていて良く、サイズの関係は採用するネットワークによって決まっている(変更するのはもちろん構わない)。上記はFullConnect処理時の具体的な設定方法の事を言っており、FullConnectの場合は、iFMサイズ=フィルタサイズでoFMがサイズ1×1である事が必要で、iFMサイズ=フィルタサイズ=1×1でも勿論良いが、等号が成り立ってさえいれば良いので、P×Q(P≧2またはQ≧2)でもよい、ということである。
演算実行判定部は、入力された前記入力特徴量マップデータおよび前記係数の少なくとも一方がゼロの場合、前記フィルタ処理部に演算スルーを通知し、前記演算実行判定部から演算スルーが通知された場合、前記フィルタ処理部は演算処理を停止してもよい。
前記係数格納メモリ管理部は、前記データ格納メモリから読み出した前記入力特徴量マップデータがゼロか否かを検出するデータゼロ検出部を有し、前記係数格納メモリのうち、対応するデータ格納メモリから読み出した前記入力特徴量マップデータがゼロでない係数格納メモリにのみにアクセスして前記係数を取り出し、前記演算実行判定部は、係数がゼロの部分を検出し、その結果と前記データゼロ検出部の結果との論理和がゼロの場合、前記フィルタ処理部に演算スルーを通知してもよい。
N並列である前記データ格納メモリ管理部は、前記係数格納メモリに格納されたN×M個の係数のうち、N並列全ての係数がゼロか否かを検出して、係数ゼロ検出信号を出力する係数ゼロ検出部と、前記データ格納メモリのうち、前記係数ゼロ検出信号がゼロでない係数に対応するデータ格納メモリからのみ前記入力特徴量マップデータを取り出すSRAM読み出し制御部と、を備え、前記演算実行判定部は、入力特徴量マップデータがゼロの部分を検出し、その結果と前記係数ゼロ検出部の結果との論理和がゼロの場合、前記フィルタ処理部に演算スルーを通知してもよい。
演算部の回路構成を入力がN並列、出力がM並列とすると、データ格納メモリ管理部はN並列となる。
前記格納用外部メモリは、1次元以上の位置情報とその位置における高次の要素を持つデータ列である高次元データ列が格納され、前記データ入力部は、前記格納用外部メモリからバースト転送により前記高次元データ列を取得し、取得した前記高次元データ列を前記データ格納メモリ管理部に転送し、前記データ出力部は、前記演算部から出力される同一座標のデータを、高次元データ列としてバースト転送単位でまとめて出力し、前記データ格納メモリ管理部は、前記データ入力部が前記格納用外部メモリから取得した前記高次元データ列を、前記演算部で取り扱う座標に変換する内部座標変換部と、前記座標に基づき、前記データ格納メモリへの書き込み制御信号を作成するデータ格納メモリ書き込み制御部と、前記データ格納メモリと、前記演算部のリクエストを受けて、前記データ格納メモリから所定の順序で必要なデータをアクセスするデータ格納メモリ読み出し制御部と、を備えてもよい。
前記格納用外部メモリは、1次元以上の位置情報とその位置における高次の要素を持つデータ列である高次元データ列が格納され、前記格納用外部メモリに格納される前記高次元データ列は、次元の座標情報と座標毎に高次の特徴量を有する特徴量マップであり、1つの座標に対応するデータ量がバースト転送量の1単位以上となり、前記データ入力部は、入力する特徴量マップの面数と座標に基づいて、前記格納用外部メモリにアクセスするリードアドレスを算出し、バースト転送により前記格納用外部メモリから高次元データ列を取得し、取得した高次元データ列を前記データ格納メモリ管理部に転送し、前記データ出力部は、出力する特徴量マップの面数と座標に基づいて前記格納用外部メモリにアクセスするライトアドレスを算出し、バースト転送により前記格納用外部メモリにデータを出力し、前記データ格納メモリ管理部は、座標及び補足情報を生成する内部座標変換部と、前記補足情報に基づいて、データ格納メモリへの書き込み制御信号を生成するデータ格納メモリ書き込み制御部と、を有し、前記内部座標変換部は、前記データ入力部が前記格納用外部メモリから取得した高次元データ列を所定の方法でカウントすることにより、特徴量マップの前記補足情報および前記座標を生成し、前記データ格納メモリ書き込み制御部は、特徴量マップの前記補足情報および前記座標に基づいて、書き込み対象となるデータ格納メモリへの書き込み制御信号およびライトアドレスを生成してもよい。
本発明の各態様に係る演算処理装置によれば、CNNを用いたディープラーニングによる画像認識において、Convolution処理とFullConnect処理で回路の一部のみを共有するのではなく、回路の全体を共有することができる。さらに、Shortcut処理にも対応可能でかつDRAM転送効率を高く維持することができる。
本発明の実施形態に係る演算処理装置における、FullConnect層におけるデータの解釈を示すための図である。 本発明の実施形態に係る演算処理装置における、CNNを用いたディープラーニングを行う演算処理装置の構成を示すブロック図である。 本発明の実施形態に係る演算処理装置における、演算部の構成を示す図である。 本発明の実施形態に係る演算処理装置における、iFM(入力特徴量マップ)のデータ配置およびこのデータに対応する係数を示す図である。 本発明の実施形態に係る演算処理装置における、Convolution処理時のタイミングチャートを示す図である。 本発明の実施形態に係る演算処理装置における、各セットにおけるiFM(入力特徴量マップ)のデータ配置およびこのデータに対応する係数を示す図である。 本発明の実施形態に係る演算処理装置における、FullConnect処理時のタイミングチャートを示す図である。 本発明の実施形態に係る演算処理装置における、FFアレイ搭載時における、Convolution時のIBUF制御のコードの例を示す図である。 本発明の実施形態の第1変形例に係る演算処理装置における、IBUF管理部、WBUF管理部、および演算部の接続を示す図である。 本発明の実施形態の第1変形例に係る演算処理装置における、演算部の内部構成を示す図である。 本発明の実施形態の第1変形例に係る演算処理装置における、クロックゲーティングによる演算スルーの例を示す図である。 本発明の実施形態の第1変形例に係る演算処理装置における、演算時のタイミングチャートを示す図である。 本発明の実施形態の第2変形例に係る演算処理装置における、IBUF管理部、WBUF管理部、および演算部の接続を示す図である。 本発明の実施形態の第2変形例に係る演算処理装置における、演算部の内部構成を示す図である。 本発明の実施形態の第2変形例に係る演算処理装置における、演算時のタイミングチャートを示す図である。 本発明の実施形態の第3変形例に係る演算処理装置における、IBUF管理部、WBUF管理部、および演算部の接続を示す図である。 本発明の実施形態の第3変形例に係る演算処理装置における、演算部の内部構成を示す図である。 本発明の実施形態の第3変形例に係る演算処理装置における、演算時のタイミングチャートを示す図である。 CNNで処理するFMデータをDRAM空間上に配置するイメージ図である。 CNN処理における入力データ列と出力データ列の関係を示すイメージ図である。 通常のCNN処理を示すイメージ図である。 Shortcut処理の一種であるRelocate処理の一例を示すイメージ図である。 図22のRelocate処理における、Shortcut先でのiFMの取り扱いの一例を示すイメージ図である。 Shortcut処理の一種であるCombine処理の一例を示すイメージ図である。 Combine処理における、Shortcut先でのiFMの取り扱いの一例を示すイメージ図である。 DRAM上に配置されている高次元データ列のイメージ図である。 高次元データ列を分割して扱う場合の、DRAM上に配置されている高次元データ列のイメージ図である。 同一座標のデータが複数回のバースト転送にまたがる場合の、DRAM上に配置されている高次元データ列のイメージ図である。 同一座標のデータが複数回のバースト転送にまたがる場合の、DRAM上に配置されている高次元データ列のイメージ図である。 IBUF管理部の構成を示すブロック図である。 IBUF内のイメージ図である。 通常処理における内部座標変換部の処理を示す図である。 Shortcut処理における内部座標変換部の処理を示す図である。 CNNを用いたディープラーニングの処理の流れを示す図である。 従来技術に係るConvolution処理の流れを示す図である。 従来技術に係るFullConnect処理の流れを示す図である。
まず、本発明のベースとなる考え方について説明する。本発明では、FullConnect層の処理は、入力特徴量マップ(iFM)のサイズがフィルタサイズと等しく、出力特徴量マップ(oFM)のサイズが1×1で、プーリング処理を行わない、特殊なConvolution処理であると考える。この考えに基づき、Convolution処理とFullConnect処理を全く同じ回路で行う。すなわち、従来技術のように、Convolution処理とFullConnect処理で回路の一部のみを共有するのではなく、回路の全体を共有する。
FullConnect層の入力(入力特徴量マップのデータ列)をiFM[j](要素数n、0≦j<n)、出力(出力特徴量マップのデータ列)をoFM[i](要素数m、0≦i<m)、oFM[i]を計算するための係数群をk[i][j]とすると、以下の式が満たされる。
Figure 2019216376
ここで、入力の1次元データ列(要素数n)を所定サイズ(Fx×Fy)のデータ列N面分に換算し直す処理(n≦Fx×Fy×N)を行う。Fxはデータ列のx方向(横方向)のサイズであり、Fyはデータ列のy方向(縦方向)のサイズであり、FxとFyの少なくとも1つが2以上である。
これにより、FullConnect層における1次元のデータ列を1次元以上のデータ列と考えることができる。例えば、FullConnect層の入力iFM[j]を、iFM[z][x][y](0≦x<Fx、0≦y<Fy、0≦j<n、j=Fy×(z×Fx+x)+y)という3次元のデータ列と解釈する。また、係数群k[i][j]を、k[i][z][x][y](0≦i<m、0≦x<Fx、0≦y<Fy、0≦j<n、j=Fy×(z×Fx+x)+y)という4次元のデータ列と解釈する。
図1は、本発明の実施形態に係る、FullConnect層におけるデータの解釈を示すための図である。図34に示すConvolution層における処理と比較すると、入力特徴量マップ(iFM)のサイズがフィルタサイズと等しい点と、出力特徴量マップ(oFM)データのサイズが1×1であるため、プーリング処理を行わない点が異なっている。このようなFullConnect層におけるデータの解釈を実現するためには、Convolution処理時とFullConnect処理時でフィルタサイズを変更できる、すなわちフィルタサイズが可変である必要がある。
図2は、上述のFullConnect層におけるデータの解釈を実現するための、本発明の実施形態に係る、CNNを用いたディープラーニングを行う演算処理装置の構成を示すブロック図である。
演算処理装置1は、コントローラ2と、データ入力部3と、係数入力部4と、IBUF(データ格納メモリ)管理部5と、WBUF(係数格納メモリ)管理部6と、演算部7と、データ出力部8を備える。データ入力部3と、係数入力部4と、データ出力部8は、バス10を介して、DRAM(格納用外部メモリ)9と接続されている。
IBUF管理部5は、入力特徴量マップ(iFM)データ格納用のメモリ(データ格納メモリ、IBUF)と、データ格納メモリの管理・制御回路(データ格納メモリ制御回路)を有する。IBUF管理部5は、入力データ中の有効データ数をカウントして座標に変換し、さらにそれをIBUFアドレスに変換したデータ(iFMデータ)をデータ格納メモリに格納するとともに、所定の方法でiFMデータをデータ格納メモリから取り出す。
WBUF管理部6は、係数格納用のメモリ(係数格納メモリ、WBUF)と、係数格納メモリの管理・制御回路(係数格納メモリ制御回路)を有する。WBUF管理部6は、IBUF管理部5のステータスを参照して、IBUF管理部5から取り出すデータに対応する係数を係数格納メモリから取り出す。
DRAM(格納用外部メモリ)9は、iFMデータ、oFMデータおよび係数を格納する。データ入力部3は、DRAM9から所定の方法で、入力特徴量マップ(iFM)を取得し、IBUF(データ格納メモリ)管理部5に渡す。データ出力部8は、DRAM9に所定の方法で、出力特徴量マップ(oFM)データを書き出す。具体的には、データ出力部8は、演算部7から出力されるM並列のデータを連結してDRAM9に出力する。係数入力部4は、DRAM9から所定の方法で、係数を取得し、WBUF(係数格納メモリ)管理部6に渡す。なお、格納用外部メモリ9はDRAMに限定されず、SSDなどでもよい。
演算部7は、IBUF(データ格納メモリ)管理部5からデータ、WBUF(係数格納メモリ)管理部6から係数を取得して、フィルタ処理・累積加算・非線形演算・プーリング処理等のデータ処理を行う。コントローラ2は、回路全体の制御を行う。
CNNでは、図33に示すように、何層も類似の処理を実施する。本発明の実施形態に係る演算処理装置1を用いる場合、演算部7は、1層分の処理に必要なデータおよび係数だけを有して1層分の処理を行い、データおよび係数はDRAM9に逐一置かれる。そして、必要な層数分の処理が繰り返し実行される。演算処理装置1は最終出力データとして被写体推定結果を出力し、この最終出力データを、プロセッサ(回路でもよい)を用いて処理することにより被写体推定結果を得る。
図3は、本発明の実施形態に係る、演算処理装置の演算部の構成を示す図である。演算部7の入力チャネル数はN(N≧1)、すなわち入力データはN次元であり、N次元の入力データが並列して処理される(入力N並列)。演算部7の出力チャネル数はM(M≧1)、すなわち出力データはM次元であり、M次元の入力データが並列して出力される(出力M並列)。図3に示すように、1つの層において、各チャネル(ich_0〜ich_N−1)ごとに、iFMデータ(d_0〜d_N−1)と係数(k_0〜k_N−1)が入力され、1個のデータを出力する。この処理がM層、並行して行われ、M個のデータoch_0〜och_M−1が出力される。
プーリングを実施する場合は「フィルタサイズ×4」セットのデータが入って初めて1個のデータが出る。プーリングをしない場合は「フィルタサイズ」セット分のデータで1個のデータが出る。
このように、演算部7は、入力チャネル数をN、出力チャネル数をMとして、並列度がN×Mとなる構成を取る。入力チャネル数Nおよび出力チャネル数Mの大きさは、CNNの大きさに応じて設定(変更)することができるので、処理性能や回路規模を勘案して適切に設定する。
演算部7は、演算部内各部の制御を行う演算制御部71を備える。また、演算部7は、各層ごとに、N個のフィルタ処理部72と、第2加算器75と、非線形変換部76と、プーリング処理部77を備える。そして、このような層がM個ある。すなわち、フィルタ処理部72はN×M個ある。
演算制御部71が、演算部7の前段に対してリクエストを発行することにより、所定のデータがフィルタ処理部72に入力される。フィルタ処理部72は、乗算器73と第1加算器74から構成され、入力データのフィルタ処理を行う。乗算器73は、外部から入力されるFMデータ(特徴量マップデータ)d_0〜d_N−1と、FMデータとタイミングを合わせて入力される係数k_0〜k_N−1との乗算を行う。そして、第1加算器74が乗算の結果をフィルタサイズ分累積加算し、フィルタ処理部72におけるフィルタ処理が完了する。すなわち、累積加算の回数に応じて、フィルタサイズを変える。N個のフィルタ処理部72は、異なるFMデータに対して、同時に(並列して)上述の処理を行う。
第2加算器75は、N並列で実行されるN個のフィルタ処理部72におけるフィルタ処理の結果を累積加算する。非線形変換部76は、第2加算器75での累積加算の結果に対して、Activate関数などによる非線形演算処理を行う。具体的な実装は特に規定しないが、例えば折れ線近似により非線形演算処理を行う。
プーリング処理部77は、非線形変換部76から入力された複数のデータの中から最大値を選択出力(Max Pooling)する、平均値を算出(Average Pooling)する、などのプーリング処理を行う。なお、非線形変換部76とプーリング処理部77は、ネットワークによっては動作しない事があるので、演算制御部71によりスルーさせることができる。FullConnect処理の時はプーリング処理を行わないので、プーリング処理部77をスルーさせる。
演算制御部71は、演算部7内の各部において行われる上述の処理の制御を行う。このような構成により、演算部7において、入力チャネル数Nおよび出力チャネル数Mの大きさは、CNNの大きさに応じて設定(変更)することができるので、処理性能や回路規模を勘案して適切に設定する。
(Convolution処理時)
Convolution処理時には、FMサイズとフィルタサイズは異なっていてもよく、変更も可能である。また出力は2次元データである。
演算部7におけるConvolution処理時の動作について説明する。ここでは、1つの入力チャネルに着目して、Convolution処理することを考える。以下、フィルタサイズが3×3である場合について説明する。
図4(a)は、iFM(入力特徴量マップ)のデータ配置を示す図であり、図4(b)は、このデータに対応する係数を示す図である。図4(a)中のa〜pは、データの値を示す(図3のd_0〜d_N−1に対応する)。図4(b)中のw1〜w9は、係数の値を示す(図3のk_0〜k_N−1に対応する)。すなわち、d*はデータライン、k*は係数ラインを示している。
図5は、Convolution処理時のタイミングチャートを示す図である。図の左から右へと時間が流れていくものとする。まず、図4(a)に示すiFMのデータ中のフィルタサイズ分(3×3の9個)のデータ(a、b、c、e、f、g、i、j、k)の各々に対し、乗算器73において係数w1〜w9が乗算される。第1加算器74は、乗算器73による乗算結果をフィルタサイズ分(3×3の9個)累積加算する(図5のΣ)。第1加算器74による累積加算の結果(Σ)は、フィルタ処理部72におけるフィルタ処理結果となる。
第2加算器75は、N並列に並んだ第1加算器74の結果(Σ)の総和を取る(図5のA)。Aは出力の1画素に対応する。第2加算器75において、この総和を取る処理は、第1加算器74からフィルタ処理結果が出力されるタイミングで行われる。そして、非線形変換部76が、第2加算器75によって算出された総和(A)に対して、非線形変換部を行う(図5のf(A))。
以上で、1つのフィルタのフィルタサイズ分(3×3の9個)のデータの処理は完了する。そして、次のフィルタのフィルタサイズ分(3×3の9個)のデータの処理へと進む。データの入力順は図5に示すように、「a、b、c、e、f、g、i、j、k」の次は、「e、f、g、i、j、k、m、n、o」であり、その次は「b、c、d、f、g、h、j、k、l」である。このように、フィルタの重心位置が図4(a)に示すデータで「f→j→g→k」の順に動いていく。非線形変換部76以降にはこの順で入り、プーリング処理部77が複数のデータに対してプーリング処理を行う。
(FullConnect処理時)
FullConnect処理時には、Convolution処理時のFMサイズとフィルタサイズのサイズの条件に一定の条件を加える。FullConnect処理時には、演算部7が、入力の1次元データ列(要素数n)を、Fx×Fyの2次元データ列N面分(N並列)に換算し直す処理を行う(n≦Fx×Fy×N)。すなわち、演算部7が、フィルタサイズを所定サイズ(Fx×Fy)に設定するとともに、出力の2次元データ列(要素数i×j)として、oFMのサイズが1×n、oFMの数がmとなるように設定する。Convolution処理時のフィルタサイズと同じである必要はない。Nは回路の入力並列度で、実装により固定されるので、大きなnを扱うために通常はFx、Fyを(対応可能な範囲で)極力大きめに設定する。
演算部7におけるFullConnect処理時の動作について説明する。Convolution処理の説明と同様に、フィルタサイズが3×3である場合について説明する。この場合、入力チャネル数がN(N並列)なので、入力データ列は9Nである。iFMデータのサイズはフィルタサイズと同じなので3×3である。すなわち、上述のFx、Fyは、Fx=Fy=3を満たす。したがって、FullConnect層の入力(入力特徴量マップのデータ列)iFM[j](要素数n、0≦j<n)を、iFM[z][x][y](0≦x<3、0≦y<3、0≦j<n、j=3×(z×3+x)+y)という3次元のデータ列と解釈する。また、FullConnect層の出力(出力特徴量マップのデータ列)oFM[i](要素数m、0≦i<m)を計算するための係数群k[i][j]を、k[i][z][x][y](0≦i<m、0≦x<3、0≦y<3、0≦j<n、j=3×(z×3+x)+y)という4次元のデータ列と解釈する。
図6(a)は、第1セットにおけるiFM(入力特徴量マップ)のデータ配置を示す図であり、図6(b)は、このデータに対応する係数を示す図である。図6(a)中のa1〜i1はデータの値を示し、図6(c)中のw11〜w19は係数の値を示す。同様に、図6(c)は、第2セットにおけるiFM(入力特徴量マップ)のデータ配置を示す図であり、図6(d)は、このデータに対応する係数を示す図である。図6(b)中のa2〜i2はデータの値を示し、図6(d)中のw21〜w29は係数の値を示す。第3セット以降も同様であり、必要なだけセット数を増やせばよい。
図7は、FullConnect処理時のタイミングチャートを示す図である。入力データが図4と図6で異なる点を考慮すれば、図7に示すFullConnect処理時のタイミングチャートは、図5に示すConvolution処理時のタイミングチャートと全く同じ処理となる。したがって、図7の説明は省略する。ただし、このタイミングチャート以降の処理において、図5に示すConvolution処理時の非線形変換出力はoFMを形成する1画素のデータ(正確には、oFMを形成する1画素のデータを作成するためのプーリング処理前のデータ)でしかないのに対し、図7に示すFullConnect処理時の非線形変換出力はそのまま1面分のoFMデータである。
ここで、入力データ列がフィルタサイズでちょうど割り切れない場合は、フィルタサイズで割り切れる(フィルタサイズと等しくなる)ように、値がゼロのデータを追加することにより、累積加算結果に誤差を生じることなく演算ができる。
上述のように、発明は、設定パラメータの変更だけで任意のフィルタサイズに対応でき、フィルタサイズ方向でなく、フィルタの種類方向にアレイ状に並列化することにより高速化を実現し、かつフィルタサイズを設定(変更)することができる構成を実現している。これにより完全同一回路でConvolution処理およびFullConnect処理の両方に対応でき、専用制御を必要とせず、規模削減(電力削減)効果がある。加えて、フィルタサイズが可変であるため、利便性が高い。また、Convolution処理の回路リソースをFullConnect処理でフル活用できる設定なので、FullConnect処理も高速実行できる。
Convolution処理時には、図5のタイミングチャートに示すように、データ格納メモリ(IBUF)から同じデータを複数回、読み出している。具体的には、図4(a)に示すデータにおいて、「f」を中心とする9個のデータを読み出して1つの出力データを算出し、「j」を中心とする9個のデータを読み出して1つの出力データを算出し、「g」を中心とする9個のデータを読み出して1つの出力データを算出し、「k」を中心とする9個のデータを読み出して1つの出力データを算出する。そして、4つ(2×2)のデータからプーリング処理により1つのデータを算出する。すなわち、フィルタサイズが3×3でプーリング処理の実施単位のサイズが2×2の場合、データ格納メモリから読み出すデータの種類は16であるのに対し、読み出し回数は3×3×4=36となる。
そこで、データ格納メモリのSRAMへのアクセスの消費電力を削減するため、図4(a)に示す4×4の単位でデータ格納メモリからデータを取り出して保存するFFアレイ(バッファ)を、データ格納メモリの内部に備えてもよい。すなわち、データ格納メモリは、プーリング処理後の1データを算出するために必要なデータセット(4×4=16個のデータ)を格納できるFFアレイを備え、このFFアレイはIBUFから読み出したデータを蓄積する。このような構成により、SRAMから何度も同じデータを読み出す必要がなく、メモリアクセスを減らして消費電力を低減できる。
図8は、FFアレイ搭載時における、Convolution時のIBUF制御のコードの例を示す図である。なお、同等の機能を回路で実装してもよい。
(変形例)
上述の実施形態の変形例について説明する。本発明では、図3のように、フィルタ演算は、データと係数をピクセル単位で乗算し、累積加算器で乗算結果を累積加算することにより実現している。このとき、係数とデータの少なくともどちらか一方がゼロの場合、乗算結果はゼロとなり、累積加算の結果は更新されないので、演算が無駄となる。特に、DeepLearningにおいては係数の多くがゼロになる場合があり、この問題は顕著である。
そこで、第1変形例では、係数とデータのどちらか一方がゼロの場合、乗算と累積加算を実行しない事で消費電力を削減する。図9は、本変形例の演算処理装置に係る、IBUF管理部5、WBUF管理部6、および演算部7の接続を示す図である。
演算部7からリクエスト(req)を受けると、IBUF(データ格納メモリ)管理部5のSRAM読み出し制御部51は、N個のIBUF(0〜N−1)からN個のFMデータを読み出し、演算部7に送信する。また、これと同じタイミングで、WBUF(係数格納メモリ)管理部6のWBUF読み出し部61は、M個のWBUF(0〜M−1)からN×M個の係数を読み出し、演算部7に送信する。本変形例では、IBUF管理部5のSRAM読み出し制御部51から、WBUF管理部6のWBUF読み出し部61へと、ステータス信号が送信される。ここで、ステータス信号とは、IBUF管理部5が取り出すFMデータの情報をWBUF管理部6に伝える信号である。
図10は、図9における演算部7の内部構成を示す図である。本変形例では、演算部7において、フィルタ処理部72の前段に演算実行判定部78が設けられている。演算実行判定部78は、IBUFから入力されたデータ(data_0、data_1、…)およびWBUFから入力された係数(coef_0、coef_1、…)のどちらかがゼロか否かを示す演算スルー信号(vz_0、vz_1、…)をフィルタ処理部72に通知する。
IBUFから入力されたデータ(data_0、data_1、…)およびWBUFから入力された係数(coef_0、coef_1、…)のどちらかがゼロの場合、演算スルー信号(vz_0、vz_1、…)の値はゼロである。IBUFから入力されたデータ(data_0、data_1、…)およびWBUFから入力された係数(coef_0、coef_1、…)のどちらもゼロでない場合、演算スルー信号(vz_0、vz_1、…)の値は1である。
フィルタ処理部72は、演算実行判定部78から入力された演算スルー信号(vz_0、vz_1、…)の値がゼロの場合、乗算および累積加算の実行をOFF(演算スルー)する。「演算スルー」とは、フィルタ処理部72における処理を停止する、または演算処理を行わないことを意味する。
演算スルー信号(vz_0、vz_1、…)は、イネーブル信号でも良いし、フィルタ処理部72に入力されるクロックをゲーティングする(止める)ために使用するのでも良い。図11は、クロックゲーティングによる演算スルーの例を示す図である。図中の「CG」はクロックゲーティングセルを示す。演算実行判定部78のゼロ検出部がデータ(data)または係数(coef)のゼロを検出すると、演算スルー信号(vz_0、vz_1、…)の値をゼロとして、クロックゲーティングセルに通知される。演算スルー信号(vz_0、vz_1、…)の値がゼロの場合、クロックゲーティングセルは、クロックを止める信号を送信し、フィルタ処理部72における演算がストップする。
図12は、入力の並列度をN=n+1=2、出力の並列度をM=m+1=2とした場合のタイミングチャートを示す図である。WBUF(係数格納メモリ)における係数の値(W)またはIBUF(データ格納メモリ)におけるデータの値(D)がゼロの場合、演算スルー信号(vz_0、vz_1、…)の値がゼロとなり、乗算器における演算がスルーされ、第1加算器による演算がスルーされる。
このように、演算実行判定部78は、入力された入力特徴量マップデータおよび係数の少なくとも一方がゼロの場合、フィルタ処理部72に演算スルーを通知する。演算実行判定部78から演算スルーが通知された場合、フィルタ処理部72は演算をスルーする。このような構成により、第1変形例では、係数かデータのどちらかがゼロの場合、乗算と累積加算を実行しない事で消費電力を削減することができる。
次に、本発明の実施形態の第2変形例について説明する。第2変形例では、データにゼロが多いとき、先にデータを読んで、データがゼロの場合、係数記憶メモリへのアクセス(SRAMリードアクセス)自体を停止する。これにより、さらに消費電力を削減する。
図13は、本変形例の演算処理装置に係る、IBUF管理部5、WBUF管理部6、および演算部7の接続を示す図である。演算部7からリクエスト(req)を受けると、IBUF(データ格納メモリ)管理部5のSRAM読み出し制御部51は、N個のIBUF(0〜N−1)からN個のFMデータを読み出し、delay回路52を介して演算部7に送信すると同時に、WBUF(係数格納メモリ)管理部6のデータゼロ検出部62へと送信する。
データゼロ検出部62は、IBUF管理部5から送信されたN個のFMデータの各々がゼロか否かを検出し、データがゼロの場合は、そのデータの検出信号iz*=0(*=0〜N−1)とする。例えば、IBUF0から読み出したFMデータがゼロの場合は、iz0=0とする。そして、データゼロ検出部62は、検出信号iz*を、WBUF(係数格納メモリ)管理部6のWBUF読み出し部61および演算部7に送信する。
WBUF(係数格納メモリ)管理部6のWBUF読み出し部61は、検出信号iz*に基づいて、M個のWBUF(0〜M−1)のうち、対応するデータがゼロでないWBUFにのみアクセスして係数を読み出し、演算部7に送信する。WBUFにアクセスしていない(WBUFから読み出していない)係数はゼロとして、演算部7に送信する。
図14は、本変形例における、演算部7の内部構成を示す図である。演算部7の演算実行判定部78は、WBUF読み出し部61から送信された係数(coef_0、coef_1、…)がゼロの部分を検出し、その結果とデータゼロ検出部62から送信された検出信号(iz_0、iz_1、…)との論理和を演算スルー信号(vz0、vz1、…)とする。
図15は、本変形例における、演算時のタイミングチャートを示す図である。IBUF(データ格納メモリ)におけるデータの値(D)がゼロの場合、検出信号(iz_0、iz_1、…)の値がゼロとなり、対応するWBUFからの係数の読み出しが行われない(図の「←」)。そして、IBUF(データ格納メモリ)におけるデータの値(D)におけるゼロの検出結果と、WBUF(係数格納メモリ)における係数の値(W)におけるゼロの検出結果とに基づいた演算スルー信号(vz0、vz1、…)がゼロの場合、フィルタ処理部72の乗算器73における演算がスルーされる(図の「←」)。得られる最終結果は、第1変形例のものと同じとなる。
上述のように、本変形例では、WBUF管理部6が、IBUF(データ格納メモリ)から読み出したFMデータがゼロか否かを検出するデータゼロ検出部62を有する。そして、WBUF(係数格納メモリ)管理部6のWBUF読み出し部61は、WBUF(係数格納メモリ)のうち、対応するIBUF(データ格納メモリ)から読み出したFMデータがゼロでないWBUFにのみにアクセスして係数を取り出す。さらに、演算部7の演算実行判定部78は、係数がゼロの部分を検出し、その結果とデータゼロ検出部の結果との論理和を出力する。
このような構成により、第2変形例では、第1変形例に加えて、データがゼロの場合、係数格納メモリへのアクセス自体を停止して、さらに消費電力を削減することができる。ゼロが多いデータの時は第2変形例が有利となる。
次に、本発明の実施形態の第3変形例について説明する。第3変形例では、係数にゼロが多いときに、先に係数を読んで、係数の値がゼロでなかった部分に対応するIBUFにのみアクセスする。すなわち、係数の値がゼロの部分に対応するデータリードアクセス自体を停止する。
図16は、本変形例の演算処理装置に係る、IBUF管理部5、WBUF管理部6、および演算部7の接続を示す図である。演算部7からリクエスト(req)を受けると、WBUF(係数格納メモリ)管理部6のWBUF読み出し部61は、M個のWBUF(0〜M−1)にアクセスしてN×M個の係数を読み出し、delay回路63を介して、演算部7に送信すると同時に、IBUF(データ格納メモリ)管理部5の係数ゼロ検出部53に送信する。さらに、WBUF読み出し部61は、ステータス信号をIBUF(データ格納メモリ)管理部5のSRAM読み出し制御部51に送信する。ここで、ステータス信号とは、WBUF管理部6が取り出す係数の情報をIBUF管理部5に伝える信号である。
係数ゼロ検出部53は、WBUF管理部6から送信されたN×M個の係数の各々がゼロか否かを検出し、M並列全ての係数(M個の係数)がゼロの場合は、係数ゼロ検出信号cz*=0(*=0〜N〜1)とする。例えば、M並列全てのWBUF0から読み出した係数がゼロの場合は、cz0=0とする。このように、IBUF管理部5はM並列でIBUFの出力を共有しているので、M並列全ての係数(M個の係数)がゼロか否かを検出しなければならない。
そして、係数ゼロ検出部53は、係数ゼロ検出信号cz*を、IBUF管理部5のSRAM読み出し制御部51および演算部7に送信する。SRAM読み出し制御部51は、N個のIBUF(0〜N−1)からN個のFMデータを読み出し、演算部7に送信する。
図17は、本変形例における、演算部7の内部構成を示す図である。演算部7の演算実行判定部78は、IBUF管理部5から送信されたFMデータ(data_0、data_1、…)がゼロの部分を検出し、その結果と係数ゼロ検出部53から送信された係数ゼロ検出信号(cz_0、cz_1、…)との論理和を演算スルー信号(vz0、vz1、…)とする。本変形例の場合、係数がゼロであってもFMデータが入力される事があるが、演算実行判定部78で係数ゼロ検出信号(cz_0、cz_1、…)がゼロであることを確認できるので、フィルタ処理部72は結局動作しない。
図18は、本変形例における、演算時のタイミングチャートを示す図である。WBUF(係数格納メモリ)におけるM並列全ての係数の値(W)がゼロの場合、係数ゼロ検出信号(cz_0、cz_1、…)の値がゼロとなり、対応するIBUFからのFMデータの読み出しが行われない(図の「←」)。そして、IBUF(データ格納メモリ)におけるデータの値(D)におけるゼロの検出結果と、WBUF(係数格納メモリ)における係数の値(W)におけるゼロの検出結果とに基づいた演算スルー信号(vz0、vz1、…)がゼロの場合、フィルタ処理部72の乗算器73における演算がスルーされる(図の「←」)。得られる最終結果は、第1変形例のものと同じとなる。
上述のように、本変形例では、M並列であるIBUF管理部5の係数ゼロ検出部53が、WBUF(係数格納メモリ)に格納されたN×M個の係数のうち、M並列全ての係数(M個の係数)がゼロか否かを検出して、係数ゼロ検出信号(cz*)を出力する。そして、IBUF管理部5のSRAM読み出し制御部51が、IBUF(データ格納メモリ)のうち、係数ゼロ検出信号(cz*)がゼロでない係数に対応するIBUFからのみFMデータを取り出す。演算実行判定部78は、FMデータのうちゼロの部分を検出し、その結果と係数ゼロ検出部53の結果との論理和を出力する。
このような構成により、第3変形例では、第1変形例に加えて、M並列全ての係数がゼロの場合、SRAMへのアクセス自体を停止する。これにより、さらに消費電力を削減することができる。第3変形例は係数にゼロが多い場合に有利となる。
(FMデータのDRAMへの配置)
一般的に画像データはDRAM上に画像イメージと対応付け易いように矩形的に(もしくはそれに準ずるような形式で)展開される。CNNを用いたDeepLearningによる画像認識においても、取り扱うFMは2次元の位置情報を持つので、FMデータを画像データと同様にDRAM上に配置すると理解しやすい。
図19は、CNNで処理するFMデータをDRAM空間上に配置するイメージ図である。iFMデータであるiFM_0〜iFM_(N−1)が、FM単位で矩形的に(横に並べて)DRAM空間上に配置されている。演算部7は、DRAMからiFMデータを読み込んで、畳み込み処理、加算処理、非線形処理、プーリング処理などのCNN処理を行い、得られたoFMデータをDRAMに書き込む。oFMデータであるoFM_0〜oFM_(M−1)も、FM単位で矩形的に(横に並べて)DRAM空間上に配置される。
CNNで取り扱うFMは数百〜数千枚にわたる高次元データ列であり、FMをFM単位で矩形的にDRAM空間上に配置すると、図19に示すように、DRAMアドレスが飛び飛びとなってしまい、DRAM転送効率が落ちる。
図20は、CNN処理における入力データ列と出力データ列の関係を示すイメージ図である。入力データ列(iFMデータ)はN次元(0次〜(N−1)次)であり、CNN処理後の出力データ(oFMデータ)はM次元(0次〜(M−1)次)である。CNN処理の入出力データにおいて、出力データの座標(x,y)におけるM次元の情報を計算するために必要な入力データは、入力データの座標(x',y')近傍の(ある広がりを持った)N次元の情報全てである。すなわち、図20に示す入力データの座標(x',y')を中心とする円で囲まれた領域のデータを用いてCNN処理を行い、出力データの座標(x,y)におけるM次元のデータを算出する。なお、実際にはCNN処理には係数も必要であるが、ここでは省略して考える。
このように、図20に示す矢印の線上にある同じ座標のデータを用いて計算を行う。そのため、CNN処理では座標単位でDRAMにアクセスできるようにデータ展開できることが望ましい。さらに、CNNには以下に説明するShortcut処理などの特殊な処理が存在することがあり、このような特殊な処理に対応するためにも座標単位でDRAMにアクセスできることが重要である。
(Shortcut処理)
ここで、Shortcut処理について説明する。図21は通常のCNN処理を示すイメージ図であり、図22はShortcut処理の一例を示すイメージ図である。通常のCNN処理では、2つの層の間でCNN処理が行われ、直前の層と直後の層との間に図21に示す2つの層の間の直線で示すような入出力関係がある。CNN処理は直前の層の出力FMを入力として行われ、CNN処理の結果が直後の層の入力FMとなる。
採用するネットワークによってはShortcut処理が存在する場合がある。Shortcut処理では、1つまたは複数の層をまたいだ(飛ばした)先の層との間で入出力関係がある。図22はShortcut処理の一種であるRelocate処理の一例を示し、3層目と4層目を飛ばすShortcutを行っている。すなわち、2層目の出力FM(図22の矢印A)の一部又は全部がShortcutによって5層目の入力FMとなる。ただし、5層目の入力の一部には、通常パス(すなわち、3層目および4層目)を経由したFM(図22の矢印Bおよび矢印Cを経由したFM)も含まれる。すなわち、通常パスを経由したFMとShortcutパスを経由したFMの総和が5層目に入力される。
CNNの各層には縮小処理であるpooling処理が含まれる場合があり、この場合、Shortcutパスを経由したデータと通常パスを経由したデータのサイズが異なる。なお、層によってpooling処理が含まれない場合もある。図22の例では、2層目の処理、4層目の処理、5層目の処理にはpooling処理が含まれ、FMのサイズが縮小されている。一方、3層目の処理および6層目の処理にはpooling処理が含まれず、FMのサイズが縮小されていない。
Shortcutパスを経由するデータと通常パスを経由するデータのサイズが異なる場合について考える。図23は、図22のRelocate処理における、Shortcut先でのiFMの取り扱いの一例を示すイメージ図である。具体的には、Shortcutパスを経由したFMのサイズが、通常パスを通ったFMサイズの縦・横ともに2倍である場合に、Shortcut先である5層目の処理における、iFMの取り扱いの例を示す。
図23に示すように、Shortcutパスを経由したFMを上下左右に4分割し、分割してできたFMの各々を1面のFMとみなす。これにより、Shortcutパスを経由したFMを分割してできたFMのサイズと通常パスを経由したFMのサイズが同じになる。そして、Shortcutパスを経由したFMを分割してできたFMと、通常パスを経由したFM(4層目のoFM)の総和が、5層目のiFMとなる。ここで、FMの次元数は、位置を示す2次元を除外すれば、以下の関係を満たす。
5層目の入力の次元数=(2層目のShortcutパスへの出力の次元数)×4+(4層目の出力次元数)
このように、Shortcut処理は、入力時点では異なる座標の情報だったものを、同じ座標の異なる次元情報として取り扱う点で、他の画像処理にはない特徴的な処理である。なお、Shortcutパスを経由したFMの5層目での取り扱い方は多々あり、図23は一例に過ぎない。
以上、Shortcut処理の一種であるRelocate処理について説明したが、ネットワークによっては、逆に小さなFMを複数面結合して1面の大きなFMとして扱う処理もある(以下、Combine処理という)。図24は、Shortcut処理の一種であるCombine処理の一例を示すイメージ図である。図22と同様に、3層目と4層目を飛ばしてShortcutしているが、小さなFMを複数面結合して1面の大きなFMを作成して5層目のiFMとしている。
図25は、Combine処理における、Shortcut先でのiFMの取り扱いの一例を示すイメージ図である。具体的には、Shortcutパスを経由したFMのサイズが図24の5層目のiFMサイズの縦・横ともに1/2であり、通常パスを通ったFMサイズが図24の5層目のiFMサイズの縦・横ともに1/8である場合に、Shortcut先である図24の5層目の処理における、iFMの取り扱いの例を示す。
図25に示すように、Shortcutパスを経由したFMを2×2面結合することにより1面の大きなFMを作成する。また、通常パスを経由したFM(有効画素)と無効画素を交互に並べて8×8面結合することにより1面の大きなFMを作成する。これにより、Shortcutパスを経由したFMのサイズと、通常パスを経由したFMのサイズが同じになる。そして、Shortcutパスを経由したFM(大きなFM)と、通常パスを経由したFM(通常パスを経由したFMおよび無効画素から作成した大きなFM)の総和が図24の5層目のiFMとなる。
Combine処理の場合、Shortcutパスを経由したデータについては、FM出力時にDRAM上でデータを隣接するように書き出すだけで対応できるので、特段の回路構成を必要とせずに実現できる。通常パスを経由したデータは拡大する必要があり、上述の無効画素として「padding data」と呼ぶ一定値のピクセルで埋める方法がある。他に、周辺画素から補間する方法などがある。padding dataを用いる場合は、IBUF読み出し制御部でSRAMアクセスせずにpadding dataを生成して出力すればよいので、特段の回路構成を必要とせずに実現できる。
(DRAMへのデータ配置方法)
上述のような入出力関係を持つデータを効率的にDRAM上に配置・転送・処理する方法について説明する。なお、本問題領域はDeepLearningに限定されない高次元データ列の取り扱いの問題であるから、以降の説明では極力一般化した説明をする。
DeepLearningの用語との対応関係は以下の通りである。
「入力データ(列)」=「iFM(入力特徴量マップ)」
「出力データ(列)」=「oFM(出力特徴量マップ)」
「入力次元」=「iFM数」
「出力次元」=「oFM数」
データフォーマットについて説明する。図と説明を簡単にするため、入力データは2次元の位置情報を持つ4次元データ列で、そのサイズは30×30ピクセルであるとする。また、1つのピクセルについて1回のバースト転送により転送可能な次元数は4であるとする。
図26は、DRAM上に配置されている高次元データ列のイメージ図である。記号「D_a_b[X][Y]」は、座標位置(X,Y)におけるa次〜b次のデータをビット連結したもの、と定義する。すなわち、図26では、座標位置(0,0)〜(29,29)の各々における1次〜4次のデータをビット連結したもの(図26において1つの枠で囲まれたデータ)が、DRAM上の左上から順番に並べて配置されている。
1回のバースト転送により転送可能な次元数は4であるから、b−a+1=4の時にちょうどバースト転送1回分(1バースト分)となる。したがって、図26において1つの枠で囲まれたデータがちょうど1バースト分となる。このようにDRAM上にデータを配置することにより、座標単位で効率よくデータを配置・転送・取得することができる。
図27は、高次元データ列を分割して扱う場合の、DRAM上に配置されている高次元データ列のイメージ図である。具体的には、DRAM上に配置されている入力データ列を上下左右に(4つに)分割し、分割してできたデータ列の各々を15×15のサイズの個別データとして扱う。これにより、効率を下げることなくデータを配置・転送・取得することができる。
より高次元データ列を扱う時は、同一座標のデータが1回のバースト転送単位に収まらないので、1座標が複数回のバースト転送に対応付くようにアクセス制御する。図28Aおよび図28Bは、同一座標のデータが複数回のバースト転送にまたがる場合の、DRAM上に配置されている高次元データ列のイメージ図である。具体的には、同一座標の1次〜8次のデータが1回のバースト転送単位に収まらないので、1次〜4次のデータをビット連結したものと5次〜8次のデータをビット連結したものが別々にDRAM上に配置されている。すなわち、座標位置(0,0)〜(29,29)の各々における1次〜4次のデータをビット連結したものと5次〜8次のデータをビット連結したものが、DRAM上に配置されている。
図28Aは、同一座標のデータが複数の矩形領域に分けて配置されている例である。座標位置(0,0)〜(29,29)の各々における、1次〜4次のデータをビット連結したもの、5次〜8次のデータをビット連結したもの、・・・が、それぞれ矩形領域に分けて配置されている。
図28Bは、同一座標のデータが連続するアドレスに置かれて配置されている例である。座標位置(0,0)〜(29,29)の各々における1次〜4次のデータをビット連結したもの、5次〜8次のデータをビット連結したもの、・・・が、連続するアドレスに置かれて配置されている。
図28Aのように同一座標データが複数の矩形領域に分けて配置されても、図28Bのように同一座標データが連続するアドレスに配置されてもよく、それらに応じた読み方・書き方をすればよい。
以上説明したように、FMサイズおよび次元数が異なる複数の層からの入力を結合するShortcut処理を効率的に実施するためには、座標単位でバースト転送可能なデータ格納が不可欠である。高次元データ列をDRAMに転送する、またはDRAMから転送する時に、バースト転送を利用することで、転送効率が落ちるのを防ぐことができる。
(回路構成)
次に、上述のフォーマットのデータを扱うための回路構成について説明する。ここでも説明を簡単化するため、入力データの次元数は16であるとする。なお、上述のフォーマットのデータを扱うための演算処理装置の全体構成は、図2と同じである。
DRAM(格納用外部メモリ)9は、高次元データ列を格納する大容量メモリである。ここで、高次元データ列は、1次元以上の位置情報とその位置における高次の要素を持つデータ列である。そして、上述のように、高次元データ列の同一座標が、1回以上のバースト転送により取得できるように配置されている。
DeepLearningの場合は、格納用外部メモリに格納される高次元データ列は、次元の座標情報と座標毎に高次の特徴量を有する特徴量マップであり、1つの座標に対応するデータ量がバースト転送量の1単位以上となる。
データ入力部3は、DRAM9から高次元データ列をバースト転送により取得し、取得した高次元データ列をIBUF(データ格納メモリ)管理部5に転送する。
DeepLearningの場合は、データ入力部3は、入力する特徴量マップの面数と座標に基づいてDRAM9にアクセスするリードアドレスを算出し、バースト転送によりDRAM9から高次元データ列(iFM)を取得し、取得した高次元データ列をIBUF管理部に転送する。
図29は、上述のフォーマットのデータを扱うためのIBUF管理部5の構成を示すブロック図である。IBUF管理部5は、内部座標変換部54、IBUF書き込み制御部55、IBUF読み出し制御部56、およびIBUF1〜16を備える。
内部座標変換部54は、データ入力部3がDRAM9から取得した高次元データ列を所定の方法でカウントすることで、演算部7で取り扱うための座標およびID(補足情報)を生成する。
DeepLearningの場合は、内部座標変換部54は、特徴量マップのID(iFMID)と座標を生成する。
1回のバースト転送で取得可能なデータの次元数は4であるから、16次元のデータを4回のバースト転送で取得できる。そのため、IDの値が0、1、2、3を巡回するように変化させる。
IBUF書き込み制御部55は、生成した座標に基づいて、IBUFへの書き込み制御信号を生成する。その際、IDの値に応じて、下記のようにIBUFへの書き込み制御信号を生成する。
・ID=0:入力は1次〜4次のデータであり、IBUF1〜IBUF4に格納する。
・ID=1:入力は5次〜8次のデータであり、IBUF5〜IBUF8に格納する。
・ID=2:入力は9次〜12次のデータであり、IBUF9〜IBUF12に格納する。
・ID=3:入力は13次〜16次のデータであり、IBUF13〜IBUF16に格納する。
DeepLearningの場合は、IBUFライト制御部は、特徴量マップのID(iFMID)と座標に基づいて、書き込み対象となるデータ格納メモリへの書き込み制御信号とライトアドレスを生成する。このように、DRAMから取得したデータを、演算部での取り扱い基準(入力FMの何番目のどの座標に対応するか)に変換し、IBUFに適切に書き込む事で、演算部でのCNN処理を可能としている。
図30は、IBUF内のイメージ図である。書き込みアドレスは座標から求めるので、IBUFそれぞれの同一アドレスには、図30に示すように、同じ座標の異なる次元のデータが格納される。
IBUF読み出し制御部56は、演算部7のリクエストを受けて、IBUFから所定の順序で必要なデータをアクセスする。このデータを用いて、演算部7は所定のデータ処理を行う。そして、データ出力部8は、演算部7から出力される同一座標のデータを、高次元データ列としてバースト転送単位でまとめて出力する。
DeepLearningの場合は、データ出力部8は、出力する特徴量マップの面数と座標に基づいてDRAM9にアクセスするライトアドレスを算出し、バースト転送によりDRAM9にデータを出力する。
次に、内部座標変換部54の動作例について説明する。第1の例として通常処理における内部座標変換部54の処理について説明する。図31は、通常処理における内部座標変換部の処理を示す図であり、図26に示すiFMから、座標とiFMIDが生成される様子を示す。iFMIDは常に0であり、座標はiFMイメージのままとなる。iFMIDが0なので、全てのデータがIBUF1〜4に格納される。
なお、この場合、IBUF5〜16が未使用なので、実際には、IBUF1〜4をIBUF1相当、IBUF5〜8をIBUF2相当、IBUF9〜12をIBUF3相当、IBUF13〜16をIBUF4相当、のように4つのIBUFを1つのIBUFとして無駄なく使うようにしてもよい。
第2の例として Shortcut処理における内部座標変換部54の処理について説明する。図32は、Shortcut処理における内部座標変換部の処理を示す図であり、図27に示すiFMから、座標とiFMIDが生成され、IBUFに書き出される様子を示す。
iFMIDはFM内で上下左右に異なる値に設定され、各iFMID領域内で座標が左上を原点として割り当てられる。結果、図32の一番下に示すようなデータとなり、以下のようにしてIBUFに書き出される。
・iFMID=0の領域のデータ:IBUF1〜4に格納
・iFMID=1の領域のデータ:IBUF5〜8に格納
・iFMID=2の領域のデータ:IBUF9〜12に格納
・iFMID=3の領域のデータ:IBUF13〜16に格納
なお、座標への変換およびIDの作成を行う方法は多々あるが、最も簡単な例を挙げると、入力がラスタスキャン的にストリーム入力される場合は、有効データ数をカウントすることにより変換・作成を行うことができる。
また、以上の説明ではIBUFを次元毎に別のSRAMのイメージとして示している。しかし、1つ(または複数)のSRAMを仮想的に分割して、複数の次元データを1つのSRAMに格納するようにしてもよい。
以上、本発明の一実施形態について説明したが、本発明の技術範囲は上記実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲において構成要素の組み合わせを変えたり、各構成要素に種々の変更を加えたり、削除したりすることができる。
各構成要素は、それぞれの構成要素に係る機能や処理を説明するためのものである。複数の構成要素に係る機能や処理を、1つの構成(回路)が同時に実現してもよい。
各構成要素は、それぞれもしくは全体として、1個又は複数のプロセッサ、論理回路、メモリ、入出力インタフェース及びコンピュータ読み取り可能な記録媒体などからなるコンピュータで実現するようにしてもよい。その場合、各構成要素もしくは全体の機能を実現するためのプログラムを記録媒体に記録しておき、記録されたプログラムをコンピュータシステムに読み込ませ、実行することによって、上述した種々の機能や処理を実現してもよい。
この場合、例えば、プロセッサは、CPU、DSP(Digital Signal Processor)、およびGPU(Graphics Processing Unit)の少なくとも1つである。例えば、論理回路は、ASIC(Application Specific Integrated Circuit)およびFPGA(Field−Programmable Gate Array)の少なくとも1つである。
また、ここでいう「コンピュータシステム」とは、OSや周辺機器などのハードウェアを含むものであってもよい。また、「コンピュータシステム」は、WWWシステムを利用している場合であれば、ホームページ提供環境(あるいは表示環境)も含むものとする。また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ROM、フラッシュメモリなどの書き込み可能な不揮発性メモリ、CD−ROMなどの可搬媒体、コンピュータシステムに内蔵されるハードディスクなどの記憶装置をいう。
さらに「コンピュータ読み取り可能な記録媒体」とは、インターネットなどのネットワークや電話回線などの通信回線を介してプログラムが送信された場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリ(例えばDRAM(Dynamic Random Access Memory))のように、一定時間プログラムを保持しているものも含むものとする。
また、上記プログラムは、このプログラムを記憶装置などに格納したコンピュータシステムから、伝送媒体を介して、あるいは、伝送媒体中の伝送波により他のコンピュータシステムに伝送されてもよい。ここで、プログラムを伝送する「伝送媒体」は、インターネットなどのネットワーク(通信網)や電話回線などの通信回線(通信線)のように情報を伝送する機能を有する媒体をいう。また、上記プログラムは、前述した機能の一部を実現するためのものであってもよい。さらに、前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現するもの、いわゆる差分ファイル(差分プログラム)であってもよい。
本発明は、畳み込みニューラルネットワークを用いたディープラーニングを行う演算処理装置に広く適用でき、Convolution処理とFullConnect処理を共通の回路で行うことができる。さらに、Shortcut処理にも対応可能でかつDRAM転送効率を高く維持することができる。
1 演算処理装置
2 コントローラ
3 データ入力部
4 係数入力部
5 IBUF(データ格納メモリ)管理部
6 WBUF(係数格納メモリ)管理部
7 演算部
8 データ出力部
9 DRAM(格納用外部メモリ)
51 SRAM読み出し制御部
52 delay回路
53 係数ゼロ検出部
54 内部座標変換部
55 IBUF(データ格納メモリ)書き込み制御部
56 IBUF(データ格納メモリ)読み出し制御部
61 WBUF(係数格納メモリ)読み出し部
62 データゼロ検出部
63 delay回路
71 演算制御部
72 フィルタ処理部
73 乗算器
74 第1加算器
75 第2加算器
76 非線形変換部
77 プーリング処理部
78 演算実行判定部
79 ゼロ検出部

Claims (7)

  1. Convolution処理とFullConnect処理を行うディープラーニング用の演算処理装置であって、
    入力特徴量マップデータを格納するデータ格納メモリ、および前記データ格納メモリを制御するデータ格納メモリ制御回路を有するデータ格納メモリ管理部と、
    係数を格納する係数格納メモリ、および前記係数格納メモリを制御する係数格納メモリ制御回路を有する係数格納メモリ管理部と、
    格納用外部メモリから、前記入力特徴量マップデータを取得するデータ入力部と、
    格納用外部メモリから、前記係数を取得する係数入力部と、
    前記格納用外部メモリに、出力特徴量マップデータを書き出すデータ出力部と、
    入力N並列、出力M並列の構成(N、M≧1)で、前記データ格納メモリから前記入力特徴量マップデータを取得し、前記係数格納メモリから前記係数を取得して、フィルタ処理、累積加算処理、非線形演算処理およびプーリング処理を行う演算部と、
    前記データ格納メモリ管理部、前記係数格納メモリ管理部、前記データ入力部、前記データ出力部、および前記演算部を制御するコントローラと、
    を有し、
    前記データ格納メモリ管理部は、前記入力特徴量マップデータを前記データ格納メモリから取り出し、
    前記係数格納メモリ管理部は、前記データ格納メモリ管理部のステータスを参照して、前記データ格納メモリ管理部から取り出すデータに対応する係数を前記係数格納メモリから取り出し、
    前記データ出力部は、前記演算部から出力されるM並列のデータを連結して前記格納用外部メモリに出力し、
    前記演算部は、
    乗算器および第1加算器を有し前記フィルタ処理を行うフィルタ処理部と、
    N並列で実行される前記フィルタ処理の結果を全て累積加算する前記累積加算処理を行う第2加算器と、
    前記累積加算処理の結果に対し前記非線形演算処理を行う非線形変換部と、
    前記非線形演算処理の結果に対し前記プーリング処理を行うプーリング処理部と、
    前記フィルタ処理部、前記第2加算器、前記非線形変換部、および前記プーリング処理部を制御する演算制御部と、
    を有し、
    前記演算制御部は、FullConnect処理時は、
    入力の1次元データ列(要素数n)を所定サイズ(Fx×Fy)のデータ列N面分に換算する処理を行うように演算部を制御し(ただし、n≦Fx×Fy×N、FxとFyの少なくとも1つが2以上)、
    フィルタサイズを前記所定サイズ(Fx×Fy)に設定し、
    出力の1次元データ列(要素数m)として、出力特徴量マップデータのサイズが1×1、要素数がmとなるように演算部を制御する
    演算処理装置。
  2. 前記データ格納メモリは、プーリング処理後の1データを算出するために必要なデータセットを格納するバッファを備え、前記バッファは前記データ格納メモリから読み出したデータを蓄積する、請求項1に記載の演算処理装置。
  3. 演算実行判定部は、入力された前記入力特徴量マップデータおよび前記係数の少なくとも一方がゼロの場合、前記フィルタ処理部に演算スルーを通知し、
    前記演算実行判定部から演算スルーが通知された場合、前記フィルタ処理部は演算処理を停止する
    請求項1または2に記載の演算処理装置。
  4. 前記係数格納メモリ管理部は、前記データ格納メモリから読み出した前記入力特徴量マップデータがゼロか否かを検出するデータゼロ検出部を有し、
    前記係数格納メモリのうち、対応するデータ格納メモリから読み出した前記入力特徴量マップデータがゼロでない係数格納メモリにのみにアクセスして前記係数を取り出し、
    前記演算実行判定部は、係数がゼロの部分を検出し、その結果と前記データゼロ検出部の結果との論理和がゼロの場合、前記フィルタ処理部に演算スルーを通知する
    請求項3に記載の演算処理装置。
  5. N並列である前記データ格納メモリ管理部は、
    前記係数格納メモリに格納されたN×M個の係数のうち、N並列全ての係数がゼロか否かを検出して、係数ゼロ検出信号を出力する係数ゼロ検出部と、
    前記データ格納メモリのうち、前記係数ゼロ検出信号がゼロでない係数に対応するデータ格納メモリからのみ前記入力特徴量マップデータを取り出すSRAM読み出し制御部と、
    を備え、
    前記演算実行判定部は、入力特徴量マップデータがゼロの部分を検出し、その結果と前記係数ゼロ検出部の結果との論理和がゼロの場合、前記フィルタ処理部に演算スルーを通知する
    請求項3または4に記載の演算処理装置。
  6. 前記格納用外部メモリは、1次元以上の位置情報とその位置における高次の要素を持つデータ列である高次元データ列が格納され、
    前記データ入力部は、前記格納用外部メモリからバースト転送により前記高次元データ列を取得し、取得した前記高次元データ列を前記データ格納メモリ管理部に転送し、
    前記データ出力部は、前記演算部から出力される同一座標のデータを、高次元データ列としてバースト転送単位でまとめて出力し、
    前記データ格納メモリ管理部は、
    前記データ入力部が前記格納用外部メモリから取得した前記高次元データ列を、前記演算部で取り扱う座標に変換する内部座標変換部と、
    前記座標に基づき、前記データ格納メモリへの書き込み制御信号を作成するデータ格納メモリ書き込み制御部と、
    前記データ格納メモリと、
    前記演算部のリクエストを受けて、前記データ格納メモリから所定の順序で必要なデータをアクセスするデータ格納メモリ読み出し制御部と、
    を備える
    請求項1に記載の演算処理装置。
  7. 前記格納用外部メモリは、1次元以上の位置情報とその位置における高次の要素を持つデータ列である高次元データ列が格納され、
    前記格納用外部メモリに格納される前記高次元データ列は、次元の座標情報と座標毎に高次の特徴量を有する特徴量マップであり、1つの座標に対応するデータ量がバースト転送量の1単位以上となり、
    前記データ入力部は、入力する特徴量マップの面数と座標に基づいて、前記格納用外部メモリにアクセスするリードアドレスを算出し、バースト転送により前記格納用外部メモリから高次元データ列を取得し、取得した高次元データ列を前記データ格納メモリ管理部に転送し、
    前記データ出力部は、出力する特徴量マップの面数と座標に基づいて前記格納用外部メモリにアクセスするライトアドレスを算出し、バースト転送により前記格納用外部メモリにデータを出力し、
    前記データ格納メモリ管理部は、
    座標及び補足情報を生成する内部座標変換部と、
    前記補足情報に基づいて、データ格納メモリへの書き込み制御信号を生成するデータ格納メモリ書き込み制御部と、
    を有し、
    前記内部座標変換部は、前記データ入力部が前記格納用外部メモリから取得した高次元データ列を所定の方法でカウントすることにより、特徴量マップの前記補足情報および前記座標を生成し、
    前記データ格納メモリ書き込み制御部は、特徴量マップの前記補足情報および前記座標に基づいて、書き込み対象となるデータ格納メモリへの書き込み制御信号およびライトアドレスを生成する
    請求項1に記載の演算処理装置。
JP2020518334A 2018-05-11 2019-05-09 演算処理装置 Active JP7261226B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
PCT/JP2018/018306 WO2019215907A1 (ja) 2018-05-11 2018-05-11 演算処理装置
JPPCT/JP2018/018306 2018-05-11
PCT/JP2019/018565 WO2019216376A1 (ja) 2018-05-11 2019-05-09 演算処理装置

Publications (2)

Publication Number Publication Date
JPWO2019216376A1 true JPWO2019216376A1 (ja) 2021-05-13
JP7261226B2 JP7261226B2 (ja) 2023-04-19

Family

ID=68466793

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020518334A Active JP7261226B2 (ja) 2018-05-11 2019-05-09 演算処理装置

Country Status (4)

Country Link
US (1) US20210042616A1 (ja)
JP (1) JP7261226B2 (ja)
CN (1) CN112005251B (ja)
WO (2) WO2019215907A1 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI692939B (zh) * 2018-08-14 2020-05-01 鈺創科技股份有限公司 過濾訊號的數位濾波器
JP7402623B2 (ja) * 2019-06-17 2023-12-21 キヤノン株式会社 フィルタ処理装置及びその制御方法
CN111158790B (zh) * 2019-12-31 2021-04-13 清华大学 面向云端深度学习推理的fpga虚拟化方法
WO2022123687A1 (ja) * 2020-12-09 2022-06-16 日本電信電話株式会社 演算回路、演算方法、及びプログラム
JP2023056644A (ja) * 2021-10-08 2023-04-20 LeapMind株式会社 ニューラルネットワーク回路およびニューラルネットワーク回路の制御方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017021483A (ja) * 2015-07-08 2017-01-26 株式会社デンソー 演算処理装置
JP2018028908A (ja) * 2016-08-11 2018-02-22 ビバンテ コーポレーション ゼロ係数スキップ畳み込みニューラルネットワークエンジン

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4337911B2 (ja) * 2007-05-24 2009-09-30 ソニー株式会社 撮像装置、撮像回路、および撮像方法
CN202385063U (zh) * 2011-09-27 2012-08-15 深圳市蓝韵实业有限公司 基于fpga实现的数字滤波器
KR101565286B1 (ko) * 2012-11-01 2015-11-02 미쓰비시덴키 가부시키가이샤 변환장치, 주변장치 및 프로그래머블 컨트롤러
CN104579240B (zh) * 2013-10-21 2017-12-01 京微雅格(北京)科技有限公司 一种基于fpga的可配置系数的滤波器、电子设备及滤波方法
JP6314628B2 (ja) * 2014-04-28 2018-04-25 株式会社デンソー 演算処理装置
JP6090286B2 (ja) * 2014-10-31 2017-03-08 カシオ計算機株式会社 機械学習装置、機械学習方法、分類装置、分類方法、プログラム
US10019234B2 (en) * 2015-10-05 2018-07-10 Altera Corporation Methods and apparatus for sequencing multiply-accumulate operations
JP2017191501A (ja) * 2016-04-14 2017-10-19 キヤノン株式会社 情報処理装置、情報処理方法及びプログラム
FR3050855B1 (fr) * 2016-04-27 2019-05-03 Commissariat A L'energie Atomique Et Aux Energies Alternatives Dispositif et procede de calcul de convolution d'un reseau de neurones convolutionnel
JP6800656B2 (ja) * 2016-08-24 2020-12-16 キヤノン株式会社 演算回路、その制御方法及びプログラム
US10387740B2 (en) * 2016-10-10 2019-08-20 Gyrfalcon Technology Inc. Object detection and recognition apparatus based on CNN based integrated circuits
JP6864224B2 (ja) * 2017-01-27 2021-04-28 富士通株式会社 プロセッサ、情報処理装置及びプロセッサの動作方法
CN106940815B (zh) * 2017-02-13 2020-07-28 西安交通大学 一种可编程卷积神经网络协处理器ip核
US11687762B2 (en) * 2018-02-27 2023-06-27 Stmicroelectronics S.R.L. Acceleration unit for a deep learning engine
EP3804604A4 (en) * 2018-05-31 2022-04-13 Panasonic i-PRO Sensing Solutions Co., Ltd. CAMERA APPARATUS, IMAGE PROCESSING METHOD AND CAMERA SYSTEM
JP2020086479A (ja) * 2018-11-15 2020-06-04 株式会社日立製作所 計算機、ニューラルネットワークの構築方法、および計算機システム

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017021483A (ja) * 2015-07-08 2017-01-26 株式会社デンソー 演算処理装置
JP2018028908A (ja) * 2016-08-11 2018-02-22 ビバンテ コーポレーション ゼロ係数スキップ畳み込みニューラルネットワークエンジン

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
LI, HUIMIN ET AL.: "A High Performance FPGA-based Accelerator for Large-Scale Convolutional Neural Networks", PROCEEDINGS OF 2016 26TH INTERNATIONAL CONFERENCE ON FIELD PROGRAMMABLE LOGIC AND APPLICATIONS(FPL), JPN6018025292, 2 September 2016 (2016-09-02), pages 1 - 9, ISSN: 0005021908 *

Also Published As

Publication number Publication date
JP7261226B2 (ja) 2023-04-19
WO2019215907A1 (ja) 2019-11-14
CN112005251B (zh) 2024-09-06
WO2019216376A1 (ja) 2019-11-14
CN112005251A (zh) 2020-11-27
US20210042616A1 (en) 2021-02-11

Similar Documents

Publication Publication Date Title
JP7261226B2 (ja) 演算処理装置
JP6857286B2 (ja) ニューラルネットワークアレイの性能の改善
JP7372009B2 (ja) 並列分散テンソル計算用のニューラル・ハードウェア・アクセラレータ
US11449576B2 (en) Convolution operation processing method and related product
US10445638B1 (en) Restructuring a multi-dimensional array
WO2019201656A1 (en) Method for accelerating operations and accelerator apparatus
WO2019201657A1 (en) Accelerator and system for accelerating operations
WO2019136762A1 (zh) 人工智能处理器、及其所应用的处理方法
US20190243790A1 (en) Direct memory access engine and method thereof
JP2017151604A (ja) 演算処理装置
WO2020073801A1 (zh) 一种3d图像处理中数据读写方法及系统、存储介质及终端
US20200218777A1 (en) Signal Processing Method and Apparatus
WO2022213073A1 (en) Sparse machine learning acceleration
US20190278828A1 (en) Electronic apparatus and control method thereof
JP2024116153A (ja) 複数の入力データセットのための処理
US20220043630A1 (en) Electronic device and control method therefor
WO2021070303A1 (ja) 演算処理装置
WO1996035992A1 (fr) Memoire a semi-conducteurs integrant une fonction arithmetique et processeur utilisant celle-ci
US11467973B1 (en) Fine-grained access memory controller
Müller et al. NEROvideo: A general-purpose CNN-UM video processing system
US20190324909A1 (en) Information processing apparatus and information processing method
US20230376562A1 (en) Integrated circuit apparatus for matrix multiplication operation, computing device, system, and method
CN116415100A (zh) 业务处理方法、装置、处理器及计算设备
KR101914833B1 (ko) 과학적 계산을 위한 저장 프로세서 어레이
JP7012168B2 (ja) 演算処理装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20220406

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: 20230328

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20230407

R151 Written notification of patent or utility model registration

Ref document number: 7261226

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151