JP6970827B2 - 演算処理装置 - Google Patents

演算処理装置 Download PDF

Info

Publication number
JP6970827B2
JP6970827B2 JP2020526727A JP2020526727A JP6970827B2 JP 6970827 B2 JP6970827 B2 JP 6970827B2 JP 2020526727 A JP2020526727 A JP 2020526727A JP 2020526727 A JP2020526727 A JP 2020526727A JP 6970827 B2 JP6970827 B2 JP 6970827B2
Authority
JP
Japan
Prior art keywords
data
unit
feature amount
input
map data
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
JP2020526727A
Other languages
English (en)
Other versions
JPWO2020003345A1 (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 JPWO2020003345A1 publication Critical patent/JPWO2020003345A1/ja
Application granted granted Critical
Publication of JP6970827B2 publication Critical patent/JP6970827B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/57Arithmetic logic units [ALU], i.e. arrangements or devices for performing two or more of the operations covered by groups G06F7/483 – G06F7/556 or for performing logical operations
    • 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/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • 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/08Learning methods

Landscapes

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

Description

本発明は、演算処理装置、より詳しくは、畳み込みニューラルネットワークを用いたディープラーニングを行う演算処理装置の回路構成に関する。
従来、複数の処理層が階層的に接続されたニューラルネットワークを用いて演算を実行する演算処理装置がある。特に画像認識を行う演算処理装置では、畳み込みニューラルネットワーク(Convolutional Neural Network、以下CNNという)を用いたディープラーニングが広く行われている。
CNNを用いたディープラーニングによる画像認識では、入力される画像データ(ピクセルデータ)に対して、CNNの複数の処理層における処理が順次施されることにより、画像に含まれる対象物が認識された最終的な演算結果データが得られる。CNNの処理層は、畳み込み演算処理、非線形処理、縮小処理(プーリング処理)等を含むConvolution処理を行うConvolution層(畳み込み層)と、全ての入力(ピクセルデータ)に係数を乗じて累積加算するFullConnect処理を行うFullConnect層(全結合層)とに大きく分類される。
CNNを用いたディープラーニングによる画像認識は、高い認識率を実現できる。しかし、検出する被写体の種類を増やしたり、被写体検出精度を上げるためには、ネットワークを大きくする必要がある。そうするとデータ格納バッファや係数格納バッファが必然的に大容量になるが、LSI(Large−Scale Integrated circuit)にはあまり大容量のメモリを搭載できない。
また、画像認識処理におけるディープラーニングでは、(K−1)層目とK層目におけるFM(Feature Map)サイズとFM数(FMの面数)の関係は次式のような関係になる場合が多く、回路としてメモリサイズを決定する際には最適化が困難である。
FMサイズ[K]=1/4×FMサイズ[K−1]
FM数[K]=2×FM数[K−1]
例えば、CNNのバリエーションの1つであるYolo_v2に対応可能な回路のメモリのサイズを考える場合、FMサイズとFM数の最大値だけで決定しようとすると1GB程度必要となる。実際には、FM数とFMサイズは反比例的関係があるため、計算上は3MB程度あれば十分ではあるが、層別にメモリ管理を緻密に計算して設計しなければならない。
このような問題があることから、CNNは一般的には高性能PCやGPU(Graphics Processing Unit)を用いたソフトウエア処理で実装される。しかし、高速処理を実現するためには処理の重い部分をハードウエアで構成する必要がある。このようなハードウエア実装の例としては、特許文献1に記載がある。
特許文献1は、複数の演算ブロックと複数のメモリを搭載することにより演算処理の効率化を図るようにした演算処理装置を開示している。複数の演算処理ユニットを持ち、それぞれに演算ブロックと、それと対になるバッファがあり、中継部を介して畳み込み演算処理を並列に実行すると共に、演算部間で累積加算データを授受することで、入力のネットワークが大きくても一度に活性化処理への入力を作成できるようになっている。
特開2017−151604号公報
特許文献1は、演算ブロックとデータ保持部が対をなす構成で、演算ブロック数を超えるネットワークに対しては冗長データ保持部を介して繰り返し累積加算実行する事で対応できるようになっている。しかし、具体的な制御、特にデータ保持部では上述した様なFM数とFMサイズの関係に対応するためのバッファと制御の最適化が必要となるが、それについては考慮されていない。
上述の事情を踏まえ、本発明は、ディープラーニングに適用でき、かつLSIに無理なく搭載できるメモリサイズの演算処理装置を提供することを目的とする。
本発明の第一の態様は、Convolution処理とFullConnect処理を行うディープラーニング用の演算処理装置であって、3個以上のSRAMで構成されたデータ格納メモリと、入力特徴量マップデータから入力有効データ数をカウントして座標に変換するカウンタと、前記カウンタが変換した座標を前記データ格納メモリにおけるアドレスに変換して、前記入力特徴量マップデータを前記データ格納メモリに格納するSRAM書き込み制御部と、外部からのリクエストを受けて、前記データ格納メモリから所定の方法で格納されている前記入力特徴量マップデータを取り出すSRAM読み出し制御部と、を有するデータ格納メモリ管理部と;係数を格納する係数格納メモリを有し、前記データ格納メモリ管理部のステータスを参照して、前記データ格納メモリ管理部から取り出すデータに対応する係数を前記係数格納メモリから取り出す係数格納メモリ管理部と;格納用外部メモリから、前記入力特徴量マップデータを取得するデータ入力部と;前記格納用外部メモリから、前記係数を取得する係数入力部と;入力N並列、出力M並列の構成(N、M≧1の正数)で、前記データ格納メモリから前記入力特徴量マップデータを取得し、前記係数格納メモリから前記係数を取得して、フィルタ処理、累積加算処理、非線形演算処理およびプーリング処理を行う演算部と;前記演算部から出力されるM並列のデータを連結して、出力特徴量マップデータとして前記格納用外部メモリに出力するデータ出力部と;前記データ格納メモリ管理部、前記係数格納メモリ管理部、前記データ入力部、前記データ出力部、および前記演算部を制御するコントローラと;を有し、前記カウンタは、入力された前記入力特徴量マップデータのIDを生成し、前記SRAM書き込み制御部は、前記データ格納メモリを構成する前記SRAMの各々を仮想的に複数の領域に分割し、前記IDによって書き込む領域を切り替えるとともに、同じSRAMには同一座標の異なる入力特徴量マップデータが格納されるように制御し、前記SRAM読み出し制御部は、取り出したい前記入力特徴量マップデータの前記IDに対応する前記領域にアクセスするように前記アドレスを切り替え、前記演算部は、N並列でフィルタ演算を実行するフィルタ演算部と、前記フィルタ演算部の演算結果を全て累積加算する第1加算器と、前記第1加算器の累積加算結果を後段で累積加算する第2加算器と、前記第2加算器の累積加算結果を保持するフリップフロップと、1つのデータ格納メモリに格納されている複数の入力特徴量マップデータを取り出すために、入力特徴量マップデータのIDを生成して、前記SRAM読み出し制御部から入力される入力特徴量マップデータと同じIDの前記係数を前記係数格納メモリ管理部から取得するよう制御し、全ての入力特徴量マップデータを取り終わるまでは、前記第2加算器が前記第1加算器の累積加算結果を累積加算するよう制御する演算制御部と、を有する。
前記演算部は、同一座標の入力特徴量マップデータごとに演算処理を実行し、前記SRAM書き込み制御部は、前記同一座標の入力特徴量マップデータの演算処理が終わるごとに、前記同一座標の入力特徴量マップデータが格納されていた前記領域を開放して、前記入力特徴量マップデータの続きのデータを格納してもよい。
前記SRAM読み出し制御部は、1つの入力特徴量マップデータから、出力するm枚分の出力特徴量マップデータの演算処理を実行するように前記データ格納メモリから前記入力特徴量マップデータを読み出し、前記データ出力部は、有効データをカウントしてどの出力特徴量マップデータであるかを識別し、適切に出力特徴量マップデータにおけるアドレスを生成して、前記格納用外部メモリに出力してもよい。
前記SRAM読み出し制御部は、前記データ格納メモリから前記入力特徴量マップデータの一部データを読み出し、前記演算部は、前記SRAM読み出し制御部から入力された前記入力特徴量マップデータの一部データの演算処理を行い、前記出力特徴量マップデータの一部データを作成し、前記入力特徴量マップデータの前記一部データの処理が終わったら、前記入力特徴量マップデータの次の一部データの処理へと進んでもよい。
本発明の各態様に係る演算処理装置によれば、iFM(入力特徴量マップ)サイズやiFM数(iFMの面数)が大きくてデータ格納メモリ(IBUF)に入りきらないサイズでも、フィルタサイズ分のオーバーラップをせずに演算処理とデータ更新をシームレスに実施することができる。
本発明の実施形態に係る演算処理装置の構成を示すブロック図である。 本発明の実施形態に係る演算処理装置の演算部の構成を示す図である。 本発明の実施形態に係る演算処理装置のIBUF(データ格納メモリ)管理部の構成を示す図である。 本発明の実施形態に係る演算処理装置のIBUF(データ格納メモリ)の構成を示す図である。 本発明の実施形態に係る演算処理装置において、1個の入力chに入力されたiFM(入力特徴量マップ)が分割されてIBUFに格納される様子を示す図である。 本発明の実施形態に係る演算処理装置において、分割されてIBUFに格納されたiFMが処理される様子を示す図である。 本発明の実施形態に係る演算処理装置において、n=2の時の、iFMIDによってアドレスオフセットを変化させるイメージを示す図である。 本発明の実施形態に係る演算処理装置における、IBUFへのデータ書き込み制御フローを示す図である。 本発明の実施形態に係る演算処理装置における、iFMのデータ配置と係数の一例を示す図である。 本発明の実施形態に係る演算処理装置における、Convolution処理時のタイミングチャートを示す図である。 本発明の実施形態に係る演算処理装置における、SRAM読み出し制御部の制御フローの一例を示す図である。 本発明の実施形態に係る演算処理装置における、CNNの処理イメージを示す図である。 本発明の実施形態に係る演算処理装置における、SRAM読み出し制御部の制御フローの一例を示す図である。 本発明の実施形態に係る演算処理装置における、演算時のタイミングチャートを示す図である。 本発明の実施形態に係る演算処理装置において、データが書き出されるDRAMの出力イメージを示す図である。
(実施形態1)
本発明の実施形態について、図面を用いて説明する。図1は、本発明の実施形態に係る演算処理装置の構成を示すブロック図である。
演算処理装置1は、コントローラ2と、データ入力部3と、係数入力部4と、IBUF(データ格納メモリ)管理部5と、WBUF(係数格納メモリ)管理部6と、演算部7と、データ出力部8を備える。データ入力部3と、係数入力部4と、データ出力部8は、バス10を介して、DRAM(格納用外部メモリ)9と接続されている。演算処理装置1は、入力特徴量マップ(iFM)から出力特徴量マップ(oFM)を生成する。
IBUF管理部5は、入力特徴量マップ(iFM)データ格納用のメモリ(データ格納メモリ、IBUF)と、データ格納メモリの管理・制御回路(データ格納メモリ制御回路)と、後述するカウンタ51と、SRAM書き込み制御部52と、N個のIBUF(データ格納メモリ)(0〜N−1)と、SRAM読み出し制御部53とを備える。IBUFは、それぞれが3個以上のSRAMから構成される。
IBUF管理部5は、入力データ(iFMデータ)中の有効データ数をカウントして座標に変換し、さらにそれをIBUFアドレス(IBUFにおけるアドレス)に変換し、データをデータ格納メモリに格納するとともに、所定の方法でiFMデータをデータ格納メモリから取り出す。IBUF管理部5は、複数のFMが入力されるときは、同一座標のデータが同じIBUFに入るように制御する。
WBUF管理部6は、係数格納用のメモリ(係数格納メモリ、WBUF)と、係数格納メモリの管理・制御回路(係数格納メモリ制御回路)を有する。WBUF管理部6は、IBUF管理部5のステータスを参照して、IBUF管理部5から取り出すデータに対応する係数を係数格納メモリから取り出す。
DRAM9は、iFMデータ、oFMデータおよび係数を格納する。データ入力部3は、DRAM9から所定の方法で、入力特徴量マップ(iFM)を取得し、IBUF(データ格納メモリ)管理部5に渡す。データ出力部8は、DRAM9に所定の方法で、出力特徴量マップ(oFM)データを書き出す。具体的には、データ出力部8は、演算部7から出力されるM並列のデータを連結してDRAM9に出力する。係数入力部4は、DRAM9から所定の方法で、係数を取得し、WBUF(係数格納メモリ)管理部6に渡す。
演算部7は、IBUF(データ格納メモリ)管理部5からデータ、WBUF(係数格納メモリ)管理部6から係数を取得して、フィルタ処理・累積加算・非線形演算・プーリング処理等のデータ処理を行う。コントローラ2は、回路全体の制御を行う。
CNNでは、複数の処理層において、何層も類似の処理を実施する。本発明の実施形態に係る演算処理装置1を用いる場合、演算部7は、1層分の処理に必要なデータおよび係数だけを有して1層分の処理を行い、データおよび係数はDRAM9に逐一置かれる。そして、必要な層数分の処理が繰り返し実行される。演算処理装置1は最終出力データとして被写体推定結果を出力し、この最終出力データを、プロセッサ(回路でもよい)を用いて処理することにより被写体推定結果を得る。
図2は、本発明の実施形態に係る演算処理装置の演算部7の構成を示す図である。演算部7の入力チャネル数はN(Nは1以上の正数)、すなわち入力データ(iFMデータ)はN次元であり、N次元の入力データが並列して処理される(入力N並列)。
演算部7の出力チャネル数はM(Mは1以上の正数)、すなわち出力データはM次元であり、M次元の入力データが並列して出力される(出力M並列)。図2に示すように、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が出力される。
このように、演算部7は、入力チャネル数をN、出力チャネル数をMとして、並列度がN×Mとなる構成を取る。入力チャネル数Nおよび出力チャネル数Mの大きさは、CNNの大きさに応じて設定(変更)することができるので、処理性能や回路規模を勘案して適切に設定する。
演算部7は、演算部内各部の制御を行う演算制御部71を備える。また、演算部7は、各層ごとに、フィルタ演算部72と、第1加算器73と、第2加算器74と、FF(フリップフロップ)75と、非線形変換部76と、プーリング処理部77を備える。そして、このような層がM個ある。
演算制御部71が、演算部7の前段に対してリクエストを発行することにより、所定のデータがフィルタ演算部72に入力される。フィルタ演算部72は、内部で乗算器と加算器がN並列で同時に実行できるように構成されており、入力データのフィルタ処理を行い、フィルタ処理の結果をN並列で出力する。
第1加算器73は、N並列で実行され出力されたフィルタ演算部72におけるフィルタ処理の結果を全て加算する。第2加算器74は、時分割で入力される第1加算器73の演算結果を累積加算する。第2加算器74は、全てのiFMデータを取り終わるまでは第1加算器73の演算結果を累積加算する。FF75は、累積加算の結果を保持するために設けられている。非線形変換部76は、第2加算器74およびFF75での累積加算の結果に対して、Activate関数などによる非線形演算処理を行う。具体的な実装は特に規定しないが、例えば折れ線近似により非線形演算処理を行う。
プーリング処理部77は、非線形変換部76から入力された複数のデータの中から最大値を選択出力(Max Pooling)する、平均値を算出(Average Pooling)する、などのプーリング処理を行う。なお、非線形変換部76とプーリング処理部77は、演算制御部71によりスルーさせることができる。
演算制御部71は、演算部7内の各部において行われる上述の処理の制御を行う。このような構成により、演算部7において、入力チャネル数Nおよび出力チャネル数Mの大きさは、CNNの大きさに応じて設定(変更)することができるので、処理性能や回路規模を勘案して適切に設定する。
図3は、本発明の実施形態に係る演算処理装置のIBUF(データ格納メモリ)管理部5の構成を示す図である。IBUF管理部5は、カウンタ51と、SRAM書き込み制御部52と、N個のIBUF(データ格納メモリ)(0〜N−1)と、SRAM読み出し制御部53とを備える。
入力されるiFM(入力特徴量マップ)データの数が入力の並列度Nを越える場合、iFMデータが時分割入力されることがあるので、どのiFMデータを入力しているかを識別するためのID(以後、iFMIDという)が必要となる。iFMIDは、データ入力部3がDRAM9からバースト転送の単位で取得したデータに対して1つ定まっている代表値であり、例えば、最初の1〜N面のiFMIDを0、N+1〜2N面のiFMIDを1、…のように、順次インクリメンタルに変化させる。
カウンタ51は、入力されるiFMデータのID(iFMID)を生成するとともに、iFMID毎に入力データ中の有効データ数(入力有効データ数)をカウントして座標(iFM座標)に変換して出力する。
SRAM書き込み制御部52は、カウンタ51から出力されたiFM座標をIBUFアドレス(IBUFにおけるアドレス)に変換し、データ(iFMデータ)をIBUFに格納する。また、SRAM書き込み制御部52は、IBUFを構成する各SRAMを仮想的に複数の領域に分割し、iFMIDによって書き込む領域を切り変える。また、SRAM書き込み制御部52は、同じSRAMには同一座標の異なるiFMデータが格納されるように制御する。
また、SRAM書き込み制御部52は、同一座標のiFMデータの演算処理が終わるごとに、この同一座標のiFMデータが格納されていた領域を開放して、iFMデータの続きのデータを格納する。
SRAM読み出し制御部53は、外部から要求(req)を受けてIBUFから所定の方法でデータを取り出す。また、SRAM読み出し制御部53は、取り出したいiFMIDに対応するIBUF内の領域にアクセスするように、アドレスを切り替える。
演算部7の演算制御部71は、1個のIBUFに格納されている複数のiFMを取り出すために、iFMIDを生成して、SRAM読み出し制御部53から入力されるiFMデータと同じiFMIDの係数をWBUFから取得するよう制御する。また、演算制御部71は、全てのiFMデータを取り終わるまでは、第2加算器74を用いて、第1加算器73の演算結果を累積加算する。
図4は、本実施形態に係る演算処理装置のIBUF(データ格納メモリ)の構成を示す図である。IBUFはそれぞれが3個以上のSRAMから構成される。図4の例では、1個のIBUF(IBUF_i)は4つのSRAMから構成されており、うち3個のSRAM(SRAM0〜SRAM2)を使ってフィルタ演算に必要なデータを取り出す。残りの1個のSRAM(SRAM3)は、DRAMから取得したデータを書き込むために用いる。
演算部7における処理を終えて必要のなくなったデータは、SRAMの1個ごとの単位で順次開放し、IBUF全体としてはサーキュレートバッファとして動作する。なお、本例ではIBUFは4個のSRAMから構成されているが、SRAMの数は3個以上であればいくつであっても構わない。SRAMの数を3個以上にすることで、例えば読み出し位置がSRAM1とSRAM2でオーバーラップする(またがる)場合でも、データを順次取り出している最中にSRAM3への書き込みを並行して行うことができる。
SRAM1の使用が終わったらwrite用に開放しておく。処理実行中にいずれSRAM3への書込みが完了するのでwrite処理はすでに開放されているSRAM1に移る。その間、リード側はSRAM2〜SRAM3の領域を使ってフィルタ処理を続ける。このように、使わないエリアを順次開放してデータ更新することでシームレスな処理(スライディングウィンドウ処理)をすることができる。
次に、iFM数(iFMの面数)が回路の入力並列度を超え、1個のIBUFに複数のFMが入力されるケースを説明する。いまiFM数=N×n(N:入力並列度)であったとする。各入力chにはn面のデータが入力されることになる。そこで、IBUF内を入力面数nで分割し、分割されたそれぞれの領域内でスライディングウィンドウ処理を行う。各入力chに入力されたn面のデータを図5に示すように分割してIBUFに格納する。
図5は、1個の入力chに入力されたiFMが分割されてIBUFに格納される様子を示す図である。図6は、分割されてIBUFに格納されたiFMが処理される様子を示す図である。図は、IBUFが4つのSRAM(SRAM1、…、SRAM4)から構成されている例である。すなわち、IBUFは物理的に4つのSRAMに分かれている。
各SRAM(SRAM1、…、SRAM4)は仮想的にn個に分割される。SRAMの各分割領域には、iFMの同じ領域(座標)のデータが格納されるようにする。具体的には、SRAM1の分割領域には、iFMの領域Aに対応するデータiFM_0〜iFM_n−1が格納される。SRAM2の分割領域には、iFMの領域Bに対応するiFM_n〜iFM_2n−1が格納される。SRAM3の分割領域には、iFMの領域Cに対応するiFM_2n〜iFM_3n−1が格納される。SRAM4の分割領域には、iFMの領域Dに対応するiFM_3n〜iFM_4n−1が格納される。
すなわち、1個のSRAM内にはiFMの同じ座標位置のデータが格納されるようにする。これは、iFMの同じ座標位置のデータを同時に取り出して演算処理を行い、スライディングウィンドウ処理を行うためである。なお、SRAMの数を3個以上にすることで、iFMの2領域(座標)にまたがるデータの処理(SRAM1およびSRAM2からのデータ読み込み)をしている場合でも、第3のSRAMへの書き込みを並行して行うことができる。
図6の例では、まず、第1面のiFM_0、第2面のiFM_1、…、第n面のiFM_n−1は同じ座標位置(領域A)のデータであり、これらはSRAM1の分割領域に格納される。第1面のiFM_n、第2面のiFM_n+1、…、第n面のiFM_2n−1は同じ座標位置(領域B)のデータであり、これらはSRAM2の分割領域に格納される。第1面のiFM_2n、第2面のiFM_2n+1、…、第n面のiFM_3n−1は同じ座標位置(領域C)のデータであり、これらはSRAM3の分割領域に格納される。第1面のiFM_3n、第2面のiFM_3n+1、…、第n面のiFM_4n−1は同じ座標位置(領域D)のデータであり、これらはSRAM4の分割領域に格納される。
SRAM1に格納されるiFM_0、iFM_1、…、iFM_n−1は同じ座標位置のデータであり、同じタイミングで演算処理され、同じタイミングで不要になる。不要になったデータが格納されたSRAMは順次開放され、iFMの続きのデータである、第1面のiFM_4n、第2面のiFM_4n+1、…、第n面のiFM_5n−1を格納する。このように、スライディングウィンドウ処理が行われる。
1個のSRAMの領域において、仮想的に分割された各領域サイズを「分割領域サイズ」と呼ぶことにする。分割領域サイズは、各領域において格納できるiFMのデータ量に対応する。使用済データは分割領域サイズ単位で捨てることができるので、分割領域サイズ単位でスライディングウィンドウ処理を行い、SRAMの使用済領域を開放してiFMの続きのデータを入力することができる。
具体的には、図6において、SRAM1のiFM_0、SRAM2のiFM_n、SRAM3のiFM_2n、SRAM4のiFM_3nの格納されている分割領域サイズ(第1面のデータが格納されている分割領域サイズ)において、スライディングウィンドウ処理が行われる。同時に、SRAM1のiFM_1、SRAM2のiFM_n+1、SRAM3のiFM_2n+1、SRAM4のiFM_3n+1の格納されている分割領域サイズ(第2面のデータが格納されている分割領域サイズ)において、スライディングウィンドウ処理が行われる。同時に、SRAM1のiFM_n−1、SRAM2のiFM_2n−1、SRAM3のiFM_3n−1、SRAM4のiFM_4n−1の格納されている分割領域サイズ(第n面のデータが格納されている分割領域サイズ)において、スライディングウィンドウ処理が行われる。
このようにして、本発明では、複数の演算部のそれぞれにおいて時分割で複数のFMを処理するようになっており、これにより大きなネットワークに対応することができる。
なお、iFMIDは面毎に0、1、2、…、n−1と増えていくので、iFMIDによってアドレスオフセットを変化させることで図6のようにiFMをIBUFに配置することができる。図7は、n=2の時の、iFMIDによってアドレスオフセットを変化させるイメージを示す図である。なお、n=1の場合はiFMIDを参照する必要が無いのでiFMIDをゼロ固定でよい。
図8は、本実施形態に係る演算処理装置における、IBUFへのデータ書き込み制御フローを示す図である。ステップS1からiFM分割ループが始まる。ステップS2において、IBUFが書き込み可能か否かを判定する。IBUFが書き込み不可能の場合は、ステップS3に進み、待機(wait)し、ステップS2に戻る。
IBUFが書き込み可能の場合は、ステップS4に進む。ステップS4から分割領域サイズループが始まり、ステップS5からiFM数(n)ループが始まる。ステップS6においてアドレス計算を行い、ステップS7において、データ入力があるか否かを判定する。データ入力がない場合は、ステップS8に進み、待機(wait)し、ステップS7に戻る。
データ入力がある場合は、ステップS9に進み、IBUFへデータ書き込みを行う。ステップS10では、iFM数(n)分の処理を行った否かを判定し、行っていない場合はステップS5に戻り、行った場合はステップS11に進む。ステップS11では、分割領域サイズ分の処理を行った否かを判定し、行っていない場合はステップS4に戻り、行った場合はステップS12に進む。ステップS12では、iFM分割が完了したか否かを判定し、完了していない場合はステップS1に戻り、完了した場合は、処理(IBUFへのデータ書き込み処理)を終了する。
次に、上述のようにIBUFに入力されたデータを読み出すときの処理について説明する。各入力chには複数のiFMが入っているが、仮に2面のiFM(iFM1、iFM2)が入力されているとする。そして、iFMのデータ配置と、それに対して施すフィルタの係数が図9のようであったとする。図9は、iFMのデータ配置と係数の一例を示す図である。
iFM1において、データ配置は図9(a)のようになる。a1、b1、…、p1はデータを示し、4×4のデータが配置されている。そのうち、3×3のデータ(a1、b1、c1、d1、e1、f1、g1、i1、j1、k1)の各々に対して施すフィルタの係数は図9(b)のようになる。w1、w2、…、w9は各データ係数を示す。
同様に、iFM2において、データ配置は図9(c)のようになる。a2、b2、…、p2はデータを示し、4×4のデータが配置されている。そのうち、3×3のデータ(a2、b2、c2、d2、e2、f2、g2、i2、j2、k2)の各々に対して施すフィルタの係数は図9(d)のようになる。x1、x2、…、x9は各データ係数を示す。
タイミングチャートは図10に示すようになる。図10は、本実施形態に係る演算処理装置における、Convolution処理時、iFM数=2Nの時のタイミングチャートを示す図である。3×3の9個のデータa1〜k1と係数w1〜w9のフィルタ演算結果がAであり、3×3の9個のデータa2〜k2と係数x1〜x9のフィルタ演算結果がBである。フィルタ演算結果は、第2加算器において時間方向で累積加算され、その結果がFFに保持される。第2加算器における最終的な累積加算結果がΣである。
すなわち、iFM1とiFM2が時分割で入力され、第2加算器で累積加算され、その結果がFFに保持される。第2加算器の結果がAやA+Bの時は、まだ累積加算の途中であるので、非線形変換部には出力されない。第2加算器における累積加算が完了すると、その累積加算結果Σが非線形変換部に出力され、FFは初期値に戻る。非線形変換部は非線形変換f(Σ)を行う。
図11は、本実施形態に係る演算処理装置における、SRAM読み出し制御部の制御フローの一例を示す図である。まず、ステップS21において、oFM_Vループが始まる。oFM_Vループは、oFMのデータをV方向(横方向)に処理するループである。そして、ステップS22において、oFM_Hループが始まる。oFM_Hループは、oFMのデータをH方向(縦方向)に処理するループである。ステップS23でWBUFアクセスアドレスを生成し、並列してステップS26でIBUFアクセスアドレスを生成する。
ステップS23でWBUFアクセスアドレスを生成すると、ステップS24でデータ格納判定を行う。データ格納判定がOKの場合は、ステップS29のプーリングループに進む。データ格納判定がNGの場合は、ステップS25で待機(wait)し、ステップS24に戻る。
また、ステップS26でIBUFアクセスアドレスを生成すると、ステップS27でデータ格納判定を行う。データ格納判定がOKの場合は、ステップS29のプーリングループに進む。データ格納判定がNGの場合は、ステップS28で待機(wait)し、ステップS27に戻る。
ステップS29のプーリングループの後は、ステップS30のiFM数ループ、ステップS31のフィルタサイズループと進み、ステップS32において演算部の処理が行われる。ステップS33では各ループを終えてよいかを判定し、終わっていない場合は各ループに戻り、全てのループが終わった場合、制御フローは終了する。
IBUFのデータ格納判定は、プーリング処理も含めてフィルタ処理に必要な全iFMの座標データがIBUFに格納済みであるかの判定であり、最内側ループは判定後となっている。なお、判定方法は種々変更できるものとする。また、oFMのHサイズ単位で判定するのであればoFM_Hループもデータ格納判定後に置く。
なお、本実施形態で説明したメモリ制御およびメモリ格納方法については、複数フレームを入力として出力データを生成するアルゴリズムにも応用できる。例えば、フレーム間相関を利用するMPEG等の圧縮処理やノイズリダクション処理にも適用できる。
(実施形態2)
実施形態1では、1つのCNNの層を処理する回路とそこへ入力するiFMをどのようにIBUFに展開し、処理するかについて説明した。実施形態2では、特に、oFM数(oFMの面数)が回路的な並列度Mを越えるケースに対応する。
図12は、本実施形態のCNNの処理イメージを示す図である。図12は、oFM数=2Mの例を示し、1つの入力chのみを表示している。oFM数が出力並列度Mを超え、oFM数=M×m(m>1)であるとする。CNNは、全てのiFMの同一座標データからoFMの1画素を計算する処理である。
この時、oFMを1面ずつ作成すると、iFMはIBUF内でスライディングウィンドウ処理されているので、最初の部分のデータが上書きされてIBUF内に存在しなくなる。このため、新しいoFMを作成する処理毎に、DRAMからiFMを読み直さなければならなくなってしまう。
そこで、本実施形態では、IBUFに格納されているデータで処理できるoFMを全て作成してしまうように制御する。具体的には、IBUFに入力されているiFM(一部しか格納されていない)から、1個のoFMについて可能なだけの処理回数を実行したら、IBUFを更新せずに次のoFMに対応する処理を行う(係数は適宜切り替える)。
このときの「可能なだけの処理回数」は、IBUF上で単位としている分割領域サイズに設定すると効率的である。なぜならIBUFを構成する1個のSRAMに入るiFM1面分のデータが分割領域サイズであり、この単位で処理すると、出力したいoFM数分の処理を終えた時点でSRAM1個分のデータが使用済みとなるので開放できるからである。なお、分割領域サイズはiFMにおけるデータ量であって、oFM上のデータ量とは必ずしも一致しない。これは、プーリング処理による縮小が発生するためである。
ピクセル単位でoFMを変えない理由は、ある程度のデータ量をDRAM上に転送する方が、効率がよいためである。バッファのサイズや転送効率に問題がなければ、ピクセル単位で切り替えてもよい。
このように、本実施形態では、スライディングウィンドウ処理を行う前に、入っているデータでできる処理の全てを行う。なお、出力されるデータは、oFMが1個ずつ完成して出力されるのではなく、複数のoFMの一部分が少しずつ出力されて、最終的に複数のoFMが完成して出力される。
図13は、本実施形態に係る演算処理装置における、SRAM読み出し制御部の制御フローの一例を示す図である。「dMカウンタ」は、分割領域サイズ分のループカウンタに相当する。まず、ステップS41で、dMカウンタ=0とする。そして、ステップS42からoFM_Vループが始まり、ステップS43からoFM_Hループが始まる。oFM_Vループは、oFMのデータをV方向(横方向)に処理するループであり、oFM_Hループは、oFMのデータをH方向(縦方向)に処理するループである。
ステップS44でWBUFアクセスアドレスを生成し、並行してステップS47でIBUFアクセスアドレスを生成する。
ステップS44でWBUFアクセスアドレスを生成すると、ステップS45でデータ格納判定を行う。データ格納判定がOKの場合は、ステップS50のプーリングループに進む。データ格納判定がNGの場合は、ステップS46で待機(wait)し、ステップS45に戻る。
また、ステップS47でIBUFアクセスアドレスを生成すると、ステップS48でデータ格納判定を行う。データ格納判定がOKの場合は、ステップS50のプーリングループに進む。データ格納判定がNGの場合は、ステップS49で待機(wait)し、ステップS48に戻る。
ステップS50のプーリングループの後は、ステップS51のiFM数ループ、ステップS52のフィルタサイズループと進み、ステップS53において演算部の処理が行われる。ステップS54およびステップS55では各ループを終えてよいかを判定し、終わっていない場合は各ループに戻り、全てのループが終わった場合は、ステップS56に進む。
ステップS56では、dMカウンタが分割領域サイズ以上か否かを判定する。dMカウンタが分割領域サイズ以上である場合は、ステップS57に進み、dMカウンタ=0とする。そして、ステップS58において、係数を次のoFMへ送り、ステップS60へ進む。
dMカウンタが分割領域サイズ以上でない場合(dMカウンタが分割領域サイズ未満である場合)は、ステップS59に進み、dMカウンタの値を増やす。そして、ステップS60へ進む。
ステップS60では、oFM_VループおよびoFM_Hループを終えてよいかを判定し、終わっていない場合は各ループに戻り、全てのループが終わった場合、制御フローは終了する。
図14は、本実施形態に係る演算処理装置における、iFM数=2N、oFM数=3Mの場合のタイミングチャートの一例を示す。分割領域サイズを4Dとすると、プーリングがあるためoFM上のデータ数はoFM数×D個分となる。
データ出力部ではプーリング後の有効データ数をカウントして、現在どのoFMを受け取っているかを識別できるので、識別結果に従ってDRAM上に適切に展開する。図15は、データが書き出されるDRAMの出力イメージを示す図である。図中の数字は出力順を示す。
このように、本実施形態では、IBUF管理部内のSRAM読み出し制御部が、同じ入力データから、出力するm枚分のoFMのフィルタ処理を実行するようにIBUFからデータを取り出す。そして、データ出力部が、有効データをカウントしてどのoFMデータであるかを識別し、適切にアドレスを生成してDRAMに出力する。これにより、iFMを再読込みすることなく出力並列度を越えるoFM数を出力できる。
すなわち、SRAM読み出し制御部は、IBUFからiFMデータの一部データを読み出す。演算部は、SRAM読み出し制御部から入力されたiFMの一部データの演算処理を行い(読み込んだ所のデータを処理し)、oFMデータの一部データを作成する。そして、終わったら、iFMデータの次の一部データの処理へと進む。
以上、本発明の一実施形態について説明したが、本発明の技術範囲は上記実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲において構成要素の組み合わせを変えたり、各構成要素に種々の変更を加えたり、削除したりすることができる。
本明細書において「前、後ろ、上、下、右、左、縦、横、行、列」などの方向を示す言葉は、本発明の装置におけるこれらの方向を説明するために使用している。従って、本発明の明細書を説明するために使用されたこれらの言葉は、本発明の装置において相対的に解釈されるべきである。
本発明は、畳み込みニューラルネットワークを用いたディープラーニングを行う演算処理装置に広く適用でき、iFMサイズやiFM数が大きくてデータ格納メモリ(IBUF)に入りきらないサイズでも、フィルタサイズ分のオーバーラップをせずに演算処理とデータ更新をシームレスに実施することができる。
1 演算処理装置
2 コントローラ
3 データ入力部
4 係数入力部
5 IBUF(データ格納メモリ)管理部
6 WBUF(係数格納メモリ)管理部
7 演算部
8 データ出力部
9 DRAM(格納用外部メモリ)
10 バス
51 カウンタ
52 SRAM書き込み制御部
53 SRAM読み出し制御部
71 演算制御部
72 フィルタ演算部
73 第1加算器
74 第2加算器
75 FF(フリップフロップ)
76 非線形変換部
77 プーリング処理部

Claims (4)

  1. Convolution処理とFullConnect処理を行うディープラーニング用の演算処理装置であって、
    3個以上のSRAMで構成されたデータ格納メモリと、
    入力特徴量マップデータから入力有効データ数をカウントして座標に変換するカウンタと、
    前記カウンタが変換した座標を前記データ格納メモリにおけるアドレスに変換して、前記入力特徴量マップデータを前記データ格納メモリに格納するSRAM書き込み制御部と、
    外部からのリクエストを受けて、前記データ格納メモリから所定の方法で格納されている前記入力特徴量マップデータを取り出すSRAM読み出し制御部と、
    を有するデータ格納メモリ管理部と;
    係数を格納する係数格納メモリを有し、前記データ格納メモリ管理部のステータスを参照して、前記データ格納メモリ管理部から取り出すデータに対応する係数を前記係数格納メモリから取り出す係数格納メモリ管理部と;
    格納用外部メモリから、前記入力特徴量マップデータを取得するデータ入力部と;
    前記格納用外部メモリから、前記係数を取得する係数入力部と;
    入力N並列、出力M並列の構成(N、M≧1の正数)で、前記データ格納メモリから前記入力特徴量マップデータを取得し、前記係数格納メモリから前記係数を取得して、フィルタ処理、累積加算処理、非線形演算処理およびプーリング処理を行う演算部と;
    前記演算部から出力されるM並列のデータを連結して、出力特徴量マップデータとして前記格納用外部メモリに出力するデータ出力部と;
    前記データ格納メモリ管理部、前記係数格納メモリ管理部、前記データ入力部、前記データ出力部、および前記演算部を制御するコントローラと;
    を有し、
    前記カウンタは、入力された前記入力特徴量マップデータのIDを生成し、
    前記SRAM書き込み制御部は、前記データ格納メモリを構成する前記SRAMの各々を仮想的に複数の領域に分割し、前記IDによって書き込む領域を切り替えるとともに、同じSRAMには同一座標の異なる入力特徴量マップデータが格納されるように制御し、
    前記SRAM読み出し制御部は、取り出したい前記入力特徴量マップデータの前記IDに対応する前記領域にアクセスするように前記アドレスを切り替え、
    前記演算部は、
    N並列でフィルタ演算を実行するフィルタ演算部と、
    前記フィルタ演算部の演算結果を全て累積加算する第1加算器と、
    前記第1加算器の累積加算結果を後段で累積加算する第2加算器と、
    前記第2加算器の累積加算結果を保持するフリップフロップと、
    1つのデータ格納メモリに格納されている複数の入力特徴量マップデータを取り出すために、入力特徴量マップデータのIDを生成して、前記SRAM読み出し制御部から入力される入力特徴量マップデータと同じIDの前記係数を前記係数格納メモリ管理部から取得するよう制御し、全ての入力特徴量マップデータを取り終わるまでは、前記第2加算器が前記第1加算器の累積加算結果を累積加算するよう制御する演算制御部と、
    を有する演算処理装置。
  2. 前記演算部は、同一座標の入力特徴量マップデータごとに演算処理を実行し、
    前記SRAM書き込み制御部は、前記同一座標の入力特徴量マップデータの演算処理が終わるごとに、前記同一座標の入力特徴量マップデータが格納されていた前記領域を開放して、前記入力特徴量マップデータの続きのデータを格納する
    請求項1に記載の演算処理装置。
  3. 前記SRAM読み出し制御部は、1つの入力特徴量マップデータから、出力するm枚分の出力特徴量マップデータの演算処理を実行するように前記データ格納メモリから前記入力特徴量マップデータを読み出し、
    前記データ出力部は、有効データをカウントしてどの出力特徴量マップデータであるかを識別し、適切に出力特徴量マップデータにおけるアドレスを生成して、前記格納用外部メモリに出力する、
    請求項1または2に記載の演算処理装置。
  4. 前記SRAM読み出し制御部は、前記データ格納メモリから前記入力特徴量マップデータの一部データを読み出し、
    前記演算部は、前記SRAM読み出し制御部から入力された前記入力特徴量マップデータの一部データの演算処理を行い、前記出力特徴量マップデータの一部データを作成し、
    前記入力特徴量マップデータの前記一部データの処理が終わったら、前記入力特徴量マップデータの次の一部データの処理へと進む、
    請求項1から3のいずれか1項に記載の演算処理装置。
JP2020526727A 2018-06-25 2018-06-25 演算処理装置 Active JP6970827B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2018/023974 WO2020003345A1 (ja) 2018-06-25 2018-06-25 演算処理装置

Publications (2)

Publication Number Publication Date
JPWO2020003345A1 JPWO2020003345A1 (ja) 2021-04-08
JP6970827B2 true JP6970827B2 (ja) 2021-11-24

Family

ID=68986145

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020526727A Active JP6970827B2 (ja) 2018-06-25 2018-06-25 演算処理装置

Country Status (4)

Country Link
US (1) US20210117762A1 (ja)
JP (1) JP6970827B2 (ja)
CN (1) CN112334915A (ja)
WO (1) WO2020003345A1 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7420100B2 (ja) 2021-03-15 2024-01-23 オムロン株式会社 処理装置、処理方法、およびプログラム
CN113591025B (zh) * 2021-08-03 2024-06-14 深圳思谋信息科技有限公司 特征图的处理方法、装置、卷积神经网络加速器和介质
WO2023112581A1 (ja) * 2021-12-14 2023-06-22 富士フイルム株式会社 推論装置

Family Cites Families (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10572824B2 (en) * 2003-05-23 2020-02-25 Ip Reservoir, Llc System and method for low latency multi-functional pipeline with correlation logic and selectively activated/deactivated pipelined data processing engines
JP5368687B2 (ja) * 2007-09-26 2013-12-18 キヤノン株式会社 演算処理装置および方法
JP2011097404A (ja) * 2009-10-30 2011-05-12 Sony Corp 固体撮像装置及びデータ処理装置
CN102208005B (zh) * 2011-05-30 2014-03-26 华中科技大学 一种2-d卷积器
CN102739195B (zh) * 2012-06-06 2015-12-09 华为技术有限公司 一种fir滤波器的处理方法、装置和***
EP3035249B1 (en) * 2014-12-19 2019-11-27 Intel Corporation Method and apparatus for distributed and cooperative computation in artificial neural networks
US10275719B2 (en) * 2015-01-29 2019-04-30 Qualcomm Incorporated Hyper-parameter selection for deep convolutional networks
WO2016129049A1 (ja) * 2015-02-10 2016-08-18 オリンパス株式会社 画像処理装置、画像処理方法、画像処理プログラムおよび記憶媒体
JP6418010B2 (ja) * 2015-03-02 2018-11-07 セイコーエプソン株式会社 画像処理装置、画像処理方法及び表示装置
WO2017015649A1 (en) * 2015-07-23 2017-01-26 Mireplica Technology, Llc Performance enhancement for two-dimensional array processor
JP6631262B2 (ja) * 2016-01-14 2020-01-15 株式会社デンソー 演算処理装置
JP6645252B2 (ja) * 2016-02-23 2020-02-14 株式会社デンソー 演算処理装置
AU2016203619A1 (en) * 2016-05-31 2017-12-14 Canon Kabushiki Kaisha Layer-based operations scheduling to optimise memory for CNN applications
US20170344876A1 (en) * 2016-05-31 2017-11-30 Samsung Electronics Co., Ltd. Efficient sparse parallel winograd-based convolution scheme
US10175980B2 (en) * 2016-10-27 2019-01-08 Google Llc Neural network compute tile
JP6945986B2 (ja) * 2016-10-28 2021-10-06 キヤノン株式会社 演算回路、その制御方法及びプログラム
US10430706B2 (en) * 2016-12-01 2019-10-01 Via Alliance Semiconductor Co., Ltd. Processor with memory array operable as either last level cache slice or neural network unit memory
EP3552112A1 (en) * 2016-12-09 2019-10-16 Beijing Horizon Information Technology Co., Ltd. Systems and methods for data management
KR102642853B1 (ko) * 2017-01-05 2024-03-05 한국전자통신연구원 컨볼루션 회로, 그것을 포함하는 어플리케이션 프로세서 및 그것의 동작 방법
CN106940815B (zh) * 2017-02-13 2020-07-28 西安交通大学 一种可编程卷积神经网络协处理器ip核
US10824938B2 (en) * 2017-04-24 2020-11-03 Intel Corporation Specialized fixed function hardware for efficient convolution
US10776694B2 (en) * 2017-05-16 2020-09-15 Samsung Electronics Co., Ltd. Optimized neural network input stride method and apparatus
CN107273832B (zh) * 2017-06-06 2020-09-22 青海省交通科学研究院 基于积分通道特征与卷积神经网络的车牌识别方法及***
CN113627458A (zh) * 2017-10-16 2021-11-09 因美纳有限公司 基于循环神经网络的变体致病性分类器
US11119677B2 (en) * 2017-12-15 2021-09-14 Samsung Electronics Co., Ltd. HBM based memory lookup engine for deep learning accelerator
US11449728B2 (en) * 2018-07-01 2022-09-20 Al Falcon Ltd. Method of optimization of operating a convolutional neural network and system thereof
JP7299770B2 (ja) * 2019-07-01 2023-06-28 キヤノン株式会社 演算処理装置及び演算処理方法
US11681902B2 (en) * 2019-09-27 2023-06-20 Amazon Technologies, Inc. Transposed convolution using systolic array

Also Published As

Publication number Publication date
CN112334915A (zh) 2021-02-05
WO2020003345A1 (ja) 2020-01-02
JPWO2020003345A1 (ja) 2021-04-08
US20210117762A1 (en) 2021-04-22

Similar Documents

Publication Publication Date Title
US11461684B2 (en) Operation processing circuit and recognition system
US10936937B2 (en) Convolution operation device and convolution operation method
US11699067B2 (en) Arithmetic processing apparatus and control method therefor
US20190095212A1 (en) Neural network system and operating method of neural network system
JP6970827B2 (ja) 演算処理装置
US20180137414A1 (en) Convolution operation device and convolution operation method
US20180232629A1 (en) Pooling operation device and method for convolutional neural network
CN101681503B (zh) 信息处理方法及装置
WO2022206556A1 (zh) 图像数据的矩阵运算方法、装置、设备及存储介质
US10169295B2 (en) Convolution operation device and method
CN109784372A (zh) 一种基于卷积神经网络的目标分类方法
JP7402623B2 (ja) フィルタ処理装置及びその制御方法
US11113361B2 (en) Electronic apparatus and control method thereof
US20220067495A1 (en) Intelligent processor, data processing method and storage medium
US10162799B2 (en) Buffer device and convolution operation device and method
TWI634436B (zh) 緩衝裝置及卷積運算裝置與方法
JP6906622B2 (ja) 演算回路および演算方法
CN111914988A (zh) 神经网络设备、计算***和处理特征图的方法
CN101562691B (zh) 图像处理装置及方法
JP2023058636A (ja) 情報処理装置及びメモリ制御方法
TWI417810B (zh) 影像增強方法、影像增強裝置及影像處理電路
US9077313B2 (en) Low power and low memory single-pass multi-dimensional digital filtering
CN111340224B (zh) 适用于低资源嵌入式芯片的cnn网络的加速设计方法
DE112022000723T5 (de) Verzweigungsvorgang für eine schaltung eines neuronalen prozessors
US10895911B2 (en) Image operation method and system for eye-tracking

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20201001

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20211029

R151 Written notification of patent or utility model registration

Ref document number: 6970827

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151