JP6957365B2 - 演算装置 - Google Patents

演算装置 Download PDF

Info

Publication number
JP6957365B2
JP6957365B2 JP2018003972A JP2018003972A JP6957365B2 JP 6957365 B2 JP6957365 B2 JP 6957365B2 JP 2018003972 A JP2018003972 A JP 2018003972A JP 2018003972 A JP2018003972 A JP 2018003972A JP 6957365 B2 JP6957365 B2 JP 6957365B2
Authority
JP
Japan
Prior art keywords
calculation
unit
memory
feature map
weight
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
JP2018003972A
Other languages
English (en)
Other versions
JP2019061641A (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.)
Toshiba Corp
Toshiba Electronic Devices and Storage Corp
Original Assignee
Toshiba Corp
Toshiba Electronic Devices and Storage 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 Toshiba Corp, Toshiba Electronic Devices and Storage Corp filed Critical Toshiba Corp
Priority to US15/923,521 priority Critical patent/US10558386B2/en
Priority to EP18162305.9A priority patent/EP3460724A1/en
Publication of JP2019061641A publication Critical patent/JP2019061641A/ja
Application granted granted Critical
Publication of JP6957365B2 publication Critical patent/JP6957365B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/325Power saving in peripheral device
    • G06F1/3275Power saving in memory, e.g. RAM, cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7807System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7807System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
    • G06F15/781On-chip cache; Off-chip memory
    • 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
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

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

Description

本発明の実施形態は、演算装置に関する。
従来、ニューラルネットワークによって画像又は音声等の情報から、認識、識別処理等を実現する技術がある。例えば、畳み込みニューラルネットワーク技術では、畳み込み層及び全結合層等の層を連続させることによってニューラルネットワークが構成され、各層において、畳み込み演算及び全結合演算等の所定の演算を行うことによって、認識、識別処理等が実現される。
ニューラルネットワークにおける演算では、畳み込み演算、全結合演算等の演算の過程において、中間演算結果のメモリへの一時退避等が生じ、メモリの読込み、書込み回数が多くなることがある。また、入力特徴マップ及び重み量を複数回繰り返し読むことによってメモリの読込み回数が、多くなることがある。このようなメモリの読込み及び書込みの回数の増加により、電力消費が、増大することがある。
特許第4947983号明細書
実施形態では、複数種類の演算を行うことができ、かつ、メモリの読込み及び書込みの回数を抑え、電力消費を抑えることができる演算装置の提供を目的とする。
実施形態の演算装置は、第1演算又は第2演算のいずれか一方の演算種類に応じた重み量と特徴量をメモリから読み込み、読み込まれた前記重み量と前記特徴量に対応する前記演算種類の演算指示を行う演算指示部と、前記演算指示に応じ、前記メモリから読み込まれた前記重み量と前記特徴量を用いた演算を行い、中間演算結果を出力する演算部と、前記中間演算結果を格納するバッファと、前記演算種類に応じ、前記中間演算結果を格納する前記バッファ内の領域の指示を行う格納領域指示部と、を有し、前記演算指示部は、前記演算部からの前記中間演算結果と前記バッファに格納させた前記中間演算結果との積算結果により前記バッファに格納された前記中間演算結果を更新させると共に、前記演算指示に基づく所定の演算が終了すると前記バッファに格納されている前記中間演算結果を演算結果として前記メモリに記憶させる。
第1の実施形態に係わる、演算システムの構成の一例を示すブロック図である。 第1の実施形態に係わる、演算システムの演算順序の一例を説明するための表である。 第1の実施形態に係わる、演算システムの畳み込み演算の一例を説明するための図である。 第1の実施形態に係わる、演算システムの畳み込み演算の一例を説明するための図である。 第1の実施形態に係わる、演算システムの畳み込み演算の一例を説明するための図である。 第1の実施形態に係わる、演算システムの畳み込み演算の一例を説明するための図である。 第1の実施形態に係わる、演算システムの畳み込み演算の一例を説明するための図である。 第1の実施形態に係わる、演算システムの畳み込み演算の一例を説明するための図である。 第1の実施形態に係わる、演算システムの畳み込み演算の一例を説明するためのフローチャートである。 第1の実施形態に係わる、演算システムの全結合演算の一例を説明するための図である。 第1の実施形態に係わる、演算システムの全結合演算の一例を説明するための図である。 第1の実施形態に係わる、演算システムの全結合演算の一例を説明するためのフローチャートである。 第2の実施形態に係わる、演算システムの全結合演算の一例を説明するためのフローチャートである。 第3の実施形態に係わる、演算システムの構成の一例を示すブロック図である。 第3の実施形態に係わる、演算システムの演算順序の一例を説明するための表である。 第3の実施形態に係わる、演算システムの畳み込み演算の一例を説明するための図である。 第3の実施形態に係わる、演算システムの畳み込み演算の一例を説明するための図である。 第3の実施形態に係わる、演算システムの畳み込み演算の一例を説明するための図である。 第3の実施形態に係わる、演算システムの畳み込み演算の一例を説明するためのフローチャートである。 第3の実施形態に係わる、演算システムの全結合演算の一例を説明するための図である。 第3の実施形態に係わる、演算システムの全結合演算の一例を説明するためのフローチャートである。 第3の実施形態に係わる、演算システムの全結合演算の一例を説明するための図である。
(第1の実施形態)
(構成)
以下、図面を参照して実施形態を説明する。
図1は、第1の実施形態に係わる、演算システム1の構成を示すブロック図である。実施形態及び変形例の説明では、特徴マップXは特徴マップ又は特徴量の全部又は一部を示し、重み量Wは重み量の全部又は一部を示し、演算素子Mは演算素子の全部又は一部を示し、領域Bは領域の全部又は一部を示し、演算結果Yは、演算結果の全部又は一部を示す。
演算システム1は、メモリ2と演算装置3を有する。演算装置3は、メモリ2と接続され、メモリ2から各種情報を読み込み、演算を行う。
メモリ2は、ネットワーク構成情報S、重み量W及び特徴マップXが記憶され、例えば、SRAMによって構成される。ネットワーク構成情報S、重み量W及び特徴マップXは、例えば畳み込みニューラルネットワーク技術を用いた機械学習によって予め作成される。
ネットワーク構成情報Sは、演算装置3が行う処理のネットワーク構成の情報である。ネットワーク構成情報Sは、演算の順番と、演算種類と、重み量Wの識別情報(以下、重み量識別情報)とを有する。
演算装置3は、メモリ2から読み込まれたネットワーク構成情報Sに基づいて、第1演算及び第2演算を行う。例えば、第1演算は畳み込み演算Cvであり、第2演算は全結合演算Fcである。演算装置3は、演算指示部11と、演算部21と、格納領域指示部31と、バッファ41と、制御部51とを有する。制御部51は、演算装置3内の各部と接続され、各種の動作を制御可能である。
図2は、第1の実施形態に係わる、演算システム1の演算順序の一例を説明するための表である。図2の例では、2回の畳み込み演算Cvと、1回の全結合演算Fcが行われるように構成されている。(順番1と順番2は同じネットワーク層、且つ同じ特徴マップ演算を指す)順番1では、演算装置3は、予め設定された特徴マップXと、重み量W1、W2、W3、W4とをメモリ2から読み込み、畳み込み演算Cvを行い、演算結果Yをメモリ2に書き込む。続いて、順番2では、順番1の演算結果Yをメモリ2から読み込み、メモリ2から読み込んだ重み量W5、W6と、畳み込み演算Cvを行う。続いて、順番3(別のネットワーク層)では、順番2においてメモリ2に書き込まれた演算結果Yを特徴マップXとしてメモリ2から読み込み、重み量W7、W8、W9もメモリ2から読み込み、全結合演算Fcを行い、最終出力である演算結果Yをメモリ2に書き込む。
演算指示部11は、重み量出力部12及び特徴量出力部13を有する。演算指示部11は、ネットワーク構成情報Sに応じ、メモリ2から重み量Wと特徴マップXを読み込み、演算部21に重み量Wと特徴マップXを出力する。より具体的には、演算指示部11は、制御部51から入力された演算種類及び重み量識別情報に応じ、重み量Wと特徴マップXをメモリ2から読み込み、読み込まれた重み量Wと特徴マップXを演算部21に出力することによって、第1演算または第2演算いずれかの演算指示を行う。
重み量出力部12は、重み量Wをメモリ2から読み込み、演算素子Mに出力する。
特徴量出力部13は、特徴マップXをメモリ2から読み込み、演算素子Mに出力する。
また、演算指示部11は、出力先の演算素子Mの情報である出力先の情報を制御部51に出力する。なお、演算指示部11は、制御部51を介さずに出力先の情報を格納領域指示部31に出力するようにしてもよい。
すなわち、演算指示部11は、第1演算又は第2演算のいずれか一方の演算種類の演算指示を演算部21に行う。より具体的には、演算指示部11は、第1演算及び第2演算の演算順序を示すネットワーク構成情報Sに応じ、第1演算又は第2演算のいずれか一方の演算種類に応じた重み量Wと特徴量Xをメモリ2から読み込み、読み込まれた重み量Wと特徴量Xを演算部21に出力することによって演算指示を行う。
演算部21は、演算指示に応じて、入力された重み量Wと特徴マップXに対し演算を行い、中間演算結果Icをバッファ41に出力する。演算部21は、積和演算をする複数の演算素子Mを有する。
すなわち、演算部21は、演算指示に応じ、演算を行い、中間演算結果Icをバッファ41に出力する。
演算素子Mの各々は、入力された重み量Wの各々と特徴マップXの各々を積算し、積算結果を合算し、中間演算結果Icを算出する。
格納領域指示部31は、入力された演算種類及び出力先の情報に基づいて、中間演算結果Icを格納する領域Bを決定し、バッファ41に領域Bを指示する。
すなわち、格納領域指示部31は、演算種類に応じ、中間演算結果Icを格納するバッファ41内の格納する領域Bの指示を行う。
バッファ41は、中間演算結果Icを格納する領域Bを有する。バッファ41は、格納領域指示部31の指示の下、領域Bに格納された値に、中間演算結果Icの値を加算し、加算結果を再度、指定された領域Bに格納する。バッファ41は、所定の演算が終了すると、格納領域指示部31により指定された領域Bに格納された値を、演算結果Yとしてメモリ2に出力する。
制御部51は、ネットワーク構成情報Sをメモリ2から読み込む。制御部51は、ネットワーク構成情報Sに基づいて、演算指示部11に演算種類と重み量識別情報を出力する。また、格納領域指示部31に演算種類と、演算指示部11から入力された出力先の情報とを出力する。
(畳み込み演算Cv)
図3〜図7を用い、演算システム1の畳み込み演算Cvについて説明をする。図3〜図6は、第1の実施形態に係わる、演算システム1の畳み込み演算Cvの一例を説明するための説明図である。
図3に示すように、畳み込み演算Cvでは、mチャネルの特徴マップX1〜Xmと、nセットの重み量W1〜Wnとが演算部21に入力される。1セットの重み量Wは、図4に示すように、xy座標で規定される2次元配列によって構成される。また、特徴マップXは、図3に示すように、xyz座標で規定される3次元配列によって構成される。特徴マップXでは、z方向がチャネル数を示す。
畳み込み演算Cvでは、演算結果Yのセット数は、重み量Wのセット数に応じて決定される。また、領域Bの数は、1チャネル分の特徴マップXの対応領域Cに応じて設定される。
畳み込み演算Cvでは、重み量Wと、重み量Wに対応した対応領域Cの特徴マップXとに基づいて、積和演算を行う。例えば、数式(1)には、重み量W1(図4)と、重み量W1に対応した対応領域Cの特徴マップX1(図5のハッチングされた領域)との積和演算が示される。積和演算によって算出された中間演算結果Icは、領域B1に格納される。行列W1は、重み量W1の行列であり、行列X1aは、重み量W1に対応する対応領域Cの特徴マップXである。w11〜w33は、重み量W1に含まれる値であり、x11〜x55は、特徴マップX1に含まれる値である。左辺の括弧内は、中間演算結果Icが格納される領域Bを示す。
Ic(B1)=w11×x11+w12×x12+・・・+w33×x33
=行列W1[w11,w12,・・・,w33]・行列X1a[x11,x12,・・・,x33] ・・・(1)
続いて、対応領域Cをx方向に1つスライドし(図6のハッチングされた領域)、数式(2)に示すように、領域B2に格納される中間演算結果Icが算出される。
Ic(B2)=w11×x12+w12×x13+・・・w33×x34
=行列W1[w11,w12,・・・,w33]・行列X1a[x12,x13,・・・,x34] ・・・(2)
すなわち、特徴マップX1内をxy方向に走査して対応領域Cを読み込み、演算素子M1〜M9による重み量W1との演算を行い、領域B1〜B9に中間演算結果Icが格納される。特徴マップX1の演算が終了すると、特徴マップX2内をxy方向に走査して対応領域Cを読み込み、重み量W1と演算を行う。同様に、特徴マップX3〜Xmについても、重み量W1との演算を行い、中間演算結果Icは、領域B1〜B9に累積加算される。図7の例に示すように、演算結果Y1は、重み量W1を用いた演算によって生成される。また、図8の例に示すように、演算結果Ynは、重み量Wnを用いた演算によって生成される。
なお、図5及び図6の例では、特徴マップX上のxy方向の各々のスライド数は1であるが、スライド数は2以上であっても構わない。他の実施形態及び変形例においても同様である。
図7は、第1の実施形態に係わる、演算システム1の畳み込み演算Cvの演算の一例を説明するためのフローチャートである。制御部51は、畳み込み演算Cvを開始するための制御信号を出力する(S1)。制御部51は、メモリ2から読み込まれたネットワーク構成情報Sに基づいて、畳み込み演算Cvを示す演算種類の情報と、重み量識別情報を演算指示部11に出力する。
演算指示部11は、メモリ2から重み量Wを読み込む(T11)。図2の例では、重み量W1〜W4が読み込まれる。演算指示部11は、メモリ2から特徴マップXを読み込む(T12)。
演算指示部11は、出力先の演算素子Mを決定する(T13)。具体的には、演算指示部11は、重み量Wと特徴マップXの出力先の演算素子Mを決定する。例えば、図5の例では、重み量w11〜w33と、特徴量x11〜x33の出力先として、演算素子M1が決定される。また、図6の例では、重み量w11〜w33と、特徴量x12〜x34の出力先として、演算素子M2が決定される。出力先の情報は、制御部51を介して格納領域指示部31に出力される(図9の破線)。
演算指示部11は、重み量W及び特徴マップXを出力する(T14)。
演算指示部11は、全チャネルの特徴マップXの出力が終了しているか否かを判定する(T15)。全チャネルの特徴マップXの出力が終了していないとき(T15−NO)、T12に戻る。T12〜T15の処理を繰り返すことにより、特徴量出力部13は、チャネル毎に分割してメモリ2から特徴マップXを読み込む。例えば、繰り返しの1回目では、特徴マップX1の読み込みを行う。繰り返しのm回目では、特徴マップXmの読み込みを行う。
一方、全チャネルの特徴マップXの出力が終了しているとき(T15−YES)、演算指示部11は、制御部51を介してバッファ41に、中間演算結果Icをメモリ2に出力するための制御信号を出力し、T16に進む。
演算指示部11は、全セットの重み量Wの出力が終了しているか否かを判定する(T16)。全セットの重み量Wの出力が終了していないとき(T16−NO)、T11に戻る。一方、全セットの重み量Wの出力が終了しているとき(T16−YES)、演算指示部11は、制御部51を介してバッファ41に、全セットの重み量Wの出力が終了していることを示す制御信号を出力し、処理を終了する。
すなわち、演算指示部11は、畳み込み演算Cvにおいて、重み量Wに対応した特徴マップXの対応領域Cの特徴量xをメモリ2から読み込む。より具体的には、演算指示部11は、特徴マップX内をxy方向に走査して特徴マップXの読込みを行った後、z方向にスライドし、次のxy方向の走査を行う。
演算部21では、演算素子Mによって、入力された重み量W及び特徴マップXの積和演算を行い、中間演算結果Icをバッファ41に出力する(U11)。
格納領域指示部31は、演算指示部11から入力された出力先の情報に基づいて、中間演算結果Icを格納する領域Bを決定する(V11)。すなわち、畳み込み演算Cvでは、対応領域Cに応じ(ブロックごとに演算された結果)、中間演算結果Icの領域Bを決定する。バッファ41は、決定された領域Bに、中間演算結果Icを加算して格納する(V12)。
バッファ41は、T15において演算指示部11から入力された制御信号に基づいて、中間演算結果Icをメモリ2に出力するか否かを判定する(V13)。V13−NOのとき、V11に戻る。一方、V13−YESのとき、バッファ41は、中間演算結果Icをメモリ2に出力する(V14)。メモリ2に出力した後、領域Bはクリアされる。すなわち、バッファ41は、畳み込み演算Cvにおいて、1セットの重み量Wに基づいた演算が終了すると、中間演算結果Icをメモリ2に出力する。
バッファ41は、T16において演算指示部11から入力された制御信号に基づいて、全セットの重み量Wの出力が終了しているか否かを判定する(V15)。バッファ41は、全セットの重み量Wの出力が終了していないとき(V15−NO)、V11に戻る。一方、全セットの重み量Wの出力が終了しているとき(V15−YES)、処理は終了する。
(全結合演算Fc)
演算システム1の全結合演算Fcについて説明をする。図10及び図11は、第1の実施形態に係わる、演算システム1の全結合演算Fcの一例を説明するための説明図である。
図10に示すように、全結合演算Fcでは、nチャネルの特徴マップx1〜xnと、nセットの重み量W1〜Wnとが用いられる。演算部21は、演算素子M1〜Mnによって演算を行い、中間演算結果Icをバッファ41に出力する。バッファ41は、中間演算結果Icを領域B1〜Bnに格納する。
全結合演算Fcでは、特徴マップXのチャネル数、重み量Wのセット数、演算素子M及び領域Bの数は、同じである。全結合演算Fcでは、領域B1〜Bnに格納された中間演算結果Icを合計し、演算結果Yがメモリ2に出力される。
続いて、演算システム1の全結合演算Fcの流れを説明する。
図12は、第1の実施形態に係わる、演算システム1の全結合演算Fcの一例を説明するためのフローチャートである。
制御部51は、全結合演算Fcを開始するための制御信号を出力する(S2)。制御部51は、メモリ2から読み込まれたネットワーク構成情報Sに基づいて、全結合演算Fcを示す演算種類の情報と、重み量識別情報を演算指示部11に出力する。
演算指示部11は、メモリ2から重み量Wを読み込む(T21)。図2の順番3の例では、重み量出力部12によって重み量W7〜W9がメモリ2から読み込まれる。例えば、重み量W7には重み量w71〜w7n、重み量W8には重み量w81〜w8n、重み量W9には重み量w91〜w9nが含まれる。
演算指示部11は、メモリ2から特徴マップXを1チャネル分読み込む(T22)。特徴マップXには、特徴量xが含まれる。
演算指示部11は、出力先の演算素子Mを決定する(T23)。図11に示すように、全結合演算Fcでは、例えば、特徴量x1を重み量w11〜w1nの各々と積算し、中間演算結果Icを領域B1〜Bnに格納する。次に、特徴量x2を重み量w21〜w2nの各々と積算し、中間演算結果Icを領域B1〜Bnに加算する。この処理を特徴量x1〜xmまで繰り返し、領域B1〜Bnを合計し、演算結果Yをメモリ2に出力する。
したがって、例えば、繰り返しの1回目では、演算指示部11は、特徴量x1と重み量w71の出力先を演算素子M1に決定し、特徴量x1と重み量w72の出力先を演算素子M2に決定し、特徴量x1と重み量w7nの出力先を演算素子Mnに決定する。繰り返しの2回目では、演算指示部11は、特徴量x2と重み量w81の出力先を演算素子M1に決定し、特徴量x2と重み量w82の出力先を演算素子M2に決定し、特徴量x2と重み量w8nの出力先を演算素子Mnに決定する。繰り返しの3回目では、演算指示部11は、特徴量x3と重み量w91の出力先を演算素子M1に決定し、特徴量x3と重み量w92の出力先を演算素子M2に決定し、特徴量x3と重み量w9nの出力先を演算素子Mnに決定する。出力先の情報は、制御部51を介して格納領域指示部31にも出力される。
演算指示部11は、重み量Wと1チャネル分の特徴マップXとを出力する(T24)。
演算指示部11は、全チャネルの特徴マップXの出力が終了しているか否かを判定する(T25)。全チャネルの特徴マップXの出力が終了していないとき、処理はT22に戻る。一方、全チャネルの特徴マップXの出力が終了しているとき、制御部51を介してバッファ41に、中間演算結果Icをメモリ2に出力するための制御信号を出力し、処理は終了する。
U21、V21〜V23の処理は、U11、V11〜V13の処理と同じであるため、説明を省略する。
バッファ41は、中間演算結果Icを合算してメモリ2に出力する(V24)。すなわち、バッファ41は、全結合演算Fcにおいて、全チャネルの特徴マップX及び全セットの重み量Wに基づいた演算が終了すると、中間演算結果Icをメモリ2に出力する。
これにより、演算装置3では、演算種類に応じて演算部21に対する重み量Wと特徴マップXの出力を変え、演算部21によって畳み込み演算Cv及び全結合演算Fcの両方を行うことができる。また、演算装置3では、中間演算結果Icをバッファ41に加算して格納する。したがって、演算装置3は、バッファ41の領域Bを小さくすることができ、かつバッファ41からメモリ2に出力する回数も抑えることができる。
第1の実施形態によれば、演算装置3は、複数種類の演算を行うことができ、かつ、メモリ2の読込み及び書込みの回数を抑え、電力消費を抑えることができる。
(第1の実施形態の変形例)
第1の実施形態では、演算装置3は、メモリ2から読み込まれた重み量W及び特徴マップXの全てについて演算を行うが、重み量Wに0値が含まれるときに0値の演算を省略してもよい。本変形例の説明では、他の実施形態又は変形例と同じ構成については、説明を省略する。
図13は、第2の実施形態に係わる、演算システム1の全結合演算Fcの一例を説明するためのフローチャートである。本変形例では、演算装置3は、重み量圧縮部12a及び特徴量圧縮部13aを有する(図1の2点鎖線)。
重み量圧縮部12aは、メモリ2から読み込まれた重み量Wに0値が含まれるとき、0値を削除し、重み量Wを圧縮し、重み量出力部12に圧縮した重み量Wを出力する。また、重み量圧縮部12aは、重み量Wの圧縮位置情報を特徴量圧縮部13aに出力する。
特徴量圧縮部13aは、入力された圧縮位置情報に基づいて、重み量Wの圧縮位置にある特徴量xを削除して特徴量xを圧縮した特徴マップXを特徴量出力部13に出力する(T22a)。
演算指示部11は、圧縮位置情報及び出力先の演算素子Mに応じて出力先の情報を生成し、制御部51を介して格納領域指示部31に出力する。すなわち、重み量圧縮部12aは、重み量Wに含まれる0値を削除することによって重み量Wを圧縮し、圧縮位置情報を出力する。また、特徴量圧縮部13aは、圧縮位置情報に応じて特徴マップXに含まれる値を削除することによって特徴マップXを圧縮する。これにより、演算装置3では、演算量を抑えることができる。
(第2の実施形態)
第1の実施形態及び変形例では、演算指示部11は、畳み込み演算Cvにおいて、特徴マップX内におけるxy方向の走査を行った後、z方向にスライドし、次のxy方向の走査を行うように構成されるが、z方向に走査を行った後、x方向又はy方向のいずれか一方向にスライドし、次のz方向の走査を行うように構成しても構わない。本実施形態の説明では、他の実施形態又は変形例と同じ構成については、説明を省略する。
例えば、演算装置3は、z方向の走査により、順次、中間演算結果Icを領域B1に加算して格納し、z方向の走査を行った後、中間演算結果Icを領域B1からメモリ2に出力し、領域B1をクリアする。続いて、x方向にスライドし、次のz方向の走査により、順次、中間演算結果Icを領域B1に加算して格納する。これにより、演算装置3では、領域Bをより小さくすることができる。
(第2の実施形態の変形例)
第1、第2の実施形態及び第1の実施形態の変形例では、演算種類は、畳み込み演算Cv及び全結合演算Fcによって構成されるが、走査方向の異なる演算によって構成されても構わない。本変形例の説明では、他の実施形態又は変形例と同じ構成については、説明を省略する。
例えば、第1演算がxy方向に走査を行った後、z方向にスライドし、次のxy方向の走査をして特徴マップXを読み込むことによって行われる畳み込み演算Cvであり、第2演算がz方向に走査を行った後、x方向又はy方向にスライドし、次のz方向を走査して特徴マップXを読み込むことによって行われる畳み込み演算Cvであっても構わない。
第1演算では、xy方向に走査を行うことにより、例えば、図5及び図6において重複した領域x12、x13、x22、x23、x32、x33のように、重複して複数回読み込む領域を1回だけ読み込むように構成してもよい。再利用して複数の演算に使用することにより、読込み量を抑えることができる。一方、第2演算では、z方向に走査を行うことにより、領域Bの使用量を抑えることができる。
これにより、演算装置3は、特徴マップXに応じ、メモリ2の読込み量を抑えるときには第1演算を行い、領域Bの使用量を抑えるときには第2演算を行うことができる。
(第3の実施形態)
続いて、第3の実施形態について、説明をする。本実施形態の説明では、他の実施形態又は変形例と同じ構成については、説明を省略する。
図14は、第3の実施形態に係わる、演算システム1の構成の一例を示すブロック図である。
図14に示すように、メモリ2には、ネットワーク構成情報S、重み行列W及び特徴マップXが記憶される。ネットワーク構成情報Sは、重み行列Wの識別情報である重み行列識別情報を有する。重み行列Wは、重み行列の全部又は一部を示す。
図15は、第3の実施形態に係わる、演算システム1の演算順序の一例を説明するための表である。
図15に示すように、順番1では、演算装置3は、予め設定された特徴マップXと、重み行列識別情報に応じた重み行列W1x、W2x、W3x、W4xとをメモリ2から読み込み、畳み込み演算Cvを行い、演算結果Yをメモリ2に書き込む。続いて、順番2では、順番1の演算結果Yをメモリ2から読み込み、メモリ2から読み込んだ重み行列W5x、W6xと、畳み込み演算Cvを行う。続いて、順番3では、順番2においてメモリ2に書き込まれた演算結果Yを特徴マップXとしてメモリ2から読み込み、重み行列W7x、W8x、W9xもメモリ2から読み込み、全結合演算Fcを行い、最終出力である演算結果Yをメモリ2に書き込む。
演算指示部11は、制御部51から入力された演算種類及び重み量識別情報に応じ、重み行列Wと特徴マップXをメモリ2から読み込み、読み込まれた重み行列Wと特徴マップXを演算部21に出力することによって、第1演算または第2演算いずれかの演算指示を行う。
演算部21は、演算指示に応じて、入力された重み行列Wと特徴マップXに対し、演算素子Mによって演算を行い、中間演算結果Icをバッファ41に出力する。
格納領域指示部31は、入力された演算種類及び出力先の情報に基づいて、中間演算結果Icを格納する領域Bを決定し、バッファ41に領域Bを指示する。
バッファ41は、格納領域指示部31の指示の下、領域Bに格納された値に、中間演算結果Icの値を加算し、加算結果を再度、指定された領域Bに格納する。バッファ41は、所定の演算が終了すると、格納領域指示部31により指定された領域Bに格納された値を、演算結果Yとしてメモリ2に出力する。
制御部51は、メモリ2から読み込んだネットワーク構成情報Sに基づいて、演算指示部11に演算種類と重み行列識別情報を出力する。また、格納領域指示部31に、演算種類と、演算指示部11から入力された出力先の情報とを出力する。
なお、実施形態では、演算装置3の電力消費を抑えることができるように、バッファ41は、メモリ2よりもアクセス時の電力消費量が小さくなるように構成される。例えば、メモリ2がオフチップのDRAMによって構成されるとき、バッファ41は、オンチップのSRAM又はレジスタのいずれかによって構成される。また、メモリ2がオンチップのDRAMによって構成されるとき、バッファ41はオンチップのSRAM又はレジスタのいずれかによって構成される。また、メモリ2がオンチップのSRAMによって構成されるとき、バッファ41は、レジスタによって構成される。
(畳み込み演算Cv)
図16〜図18は、第3の実施形態に係わる、演算システム1の畳み込み演算Cvの一例を説明するための説明図である。
図16に示すように、畳み込み演算Cvでは、特徴マップXと重み行列Wが、演算部21に入力される。
畳み込み演算Cvの特徴マップXは、3次元のxyz座標によって規定され、z方向がチャネル数mを示し、y方向が行数hを示し、x方向が列数wを示す。
畳み込み演算Cvの重み行列Wは、4次元のxyzu座標によって規定され、u方向がセット数nを示し、z方向がチャネル数mを示し、y方向が行数hを示し、x方向が列数wを示す。重み行列Wのチャネル数mは、特徴マップXのチャネル数mと同じである。重み行列Wの行数h及び列数wは、特徴マップXの行数h及び列数wと同じでなくてもよい。
畳み込み演算Cvの中間演算結果Icは、4次元のxyzu座標によって規定され、u方向がセット数nを示し、z方向がチャネル数mを示し、y方向が行数hを示し、x方向が列数wを示す。
畳み込み演算Cvの演算結果Yは、3次元のxyu座標によって規定され、u方向がチャネル数nを示し、y方向が行数hを示し、x方向が列数wを示す。演算結果Yのチャネル数nは、重み行列Wのセット数nと同じである。行数h及び列数wのサイズは、重み行列Wのスライド数と、特徴マップXの行数h及び列数wに応じて決定される。
実施形態及び変形例の説明では、特徴マップX(z,y,x)、重み行列W(u,z,y,x)、中間演算結果Ic(u,z,y,x)、及び、演算結果Y(u,y,x)は、括弧内に示された座標によって各軸方向の要素を示す。例えば、特徴マップX(1,2,3)であれば、特徴マップXの第1チャネル(z=1)、第2行(y=2)、第3列(x=3)をの要素を示す。
領域Bの数は、特徴マップXのチャネル内に設けられる対応領域Cの数に応じて決定される。
演算部21は、特徴マップXにおけるチャネル(z座標)に応じた2次元行列(y,x座標)と、重み行列Wにおけるセット(u座標)及びチャネル(z座標)に応じた2次元行列(y,x座標)とに基づいて畳み込み演算Cvを行い、中間演算結果Ic(u,z,y,x)を算出する。続いて、演算部21は、中間演算結果Ic(u,z,y,x)の要素和をz方向に取り、演算結果Y(u,y,x)を算出する。
数式(3)の例では、第1セット且つ第1チャネルにおける3行3列の重み行列W(1,1,1〜3,1〜3)と、第1チャネルの特徴マップX(1,1〜3,1〜3)との畳み込み演算Cvが行われ、第1セット、第1チャネル、第1行、第1列の中間演算結果Ic(1,1,1,1)が算出される。図17に示すように、算出された中間演算結果Ic(1,1,1,1)は、領域B1に格納される。
Ic(1,1,1,1)=W(1,1,1,1)×X(1,1,1)+W(1,1,1,2)×X(1,1,2)+W(1,1,1,3)×X(1,1,3)+W(1,1,2,1)×X(1,2,1)+・・・+W(1,1,3,3)×X(1,3,3) ・・・(3)
数式(4)は、特徴マップXの対応領域Cをx方向に1つスライドさせた例を示す。数式(4)の例では、重み行列W(1,1,1〜3,1〜3)と特徴マップX(1,2〜4,2〜4)の畳み込み演算Cvが行われ、第1セット、第1チャネル、第1行、及び、第2列の中間演算結果Ic(1,1,1,2)が算出される。算出された中間演算結果Ic(1,1,1,2)は、領域B2に格納される。
Ic(1,1,1,2)=W(1,1,1,1)×X(1,1,2)+W(1,1,1,2)×X(1,1,3)+W(1,1,1,3)×X(1,1,4)
+W(1,1,2,1)×X(1,2,2)+・・・+W(1,1,3,3)×X(1,3,4) ・・・(4)
図17に示すように、演算部21は、特徴マップX内をxy方向に走査し、中間演算結果Ic(u=1,z=1,y=1〜h,x=1〜w)を算出し、xy座標に応じた領域B1〜Bkのいずれかに中間演算結果Icを格納する。
続いて、演算部21は、特徴マップX内をz方向にスライドした後、xy方向に走査し、中間演算結果Ic(1,2,1〜h,1〜w)を算出し、xy座標に応じた領域B1〜Bkのいずれかに中間演算結果Icを累積加算して格納する。
チャネル数mの特徴マップXの中間演算結果Icを領域B1〜Bkに累積加算することによって中間演算結果Icのz方向の要素和が算出され、次の数式(5)〜(7)の例に示すように、1チャネル分の演算結果Y(u=1,y=1〜h,x=1〜w)が算出される。
Y(1,1,1)={Ic(1,1,1,1)+Ic(1,2,1,1)+・・・+(1,m,1,1)} ・・・(5)
Y(1,1,2)={Ic(1,1,1,2)+Ic(1,2,1,2)+・・・+(1,m,1,2)} ・・・(6)
Y(1,h,w)={Ic(1,1,h,w)+Ic(1,2,h,w)+・・・+(1,m,h,w)} ・・・(7)
図17の例では、領域B1に演算結果Y(1,1,1)が生成され、領域B2に演算結果Y(1,1,2)が生成され、領域Bkに演算結果Y(1,h,w)が生成される。
1チャネル分の演算結果Y(1,1〜h,1〜w)を算出した後、第2セットの重み行列W(2,1〜m,1〜h,1〜w)と特徴マップX(1〜m,1〜h,1〜w)に基づいて、演算を行い、演算結果Y(2,1〜h,1〜w)を算出する。
重み行列Wをu方向にセット1〜nまでスライドさせ、図18に示すように、第nチャネルの演算結果Y(n,1〜h,1〜w)が算出されるまで演算を繰り返すと、演算結果Y(1〜n,1〜h,1〜w)が算出される。
図19は、第3の実施形態に係わる、演算システム1の畳み込み演算Cvの演算の一例を説明するためのフローチャートである。
制御部51は、畳み込み演算Cvを開始するための制御信号を出力する(S3)。制御部51は、メモリ2から読み込まれたネットワーク構成情報Sに基づいて、畳み込み演算Cvを示す演算種類の情報と、重み行列識別情報を演算指示部11に出力する。
演算指示部11は、メモリ2から重み行列Wを1セット読み込む(T31)。
演算指示部11は、メモリ2から特徴マップXを1チャネル読み込む(T32)。
演算指示部11は、演算素子Mの各々の出力データを決定する(T33)。具体的には、演算指示部11は、演算において使用する重み行列W(u,z,1〜h,1〜w)と、現在のスライド位置から重み行列Wの2次元行列と同じサイズのマップを特徴マップXから抽出し、演算素子Mの出力データに決定する。例えば、演算指示部11は、重み行列W(1,1,1〜3,1〜3)と特徴マップX(1,1〜3,1〜3)を演算素子M1の出力データに決定する。また、演算指示部11は、x方向へ例えば1つスライドした、重み行列W(1,1,1〜3,1〜3)と特徴マップX(1,2〜4,2〜4)を演算素子M2の出力データに決定する。出力データの出力先の情報は、制御部51を介して格納領域指示部31に出力される。
演算指示部11は、演算素子Mの各々に出力データを出力する(T34)。
演算指示部11は、特徴マップXの全チャネルの出力が終了しているか否かを判定する(T35)。特徴マップXの全チャネルの出力が終了していないとき(T35−NO)、T32に戻り、特徴マップXの処理対象のチャネルをz方向へ1進める。T32〜T35の処理を繰り返すことにより、特徴量出力部13は、チャネル毎にメモリ2から特徴マップXを読み込む。例えば、繰り返しの1回目では、特徴マップX(1,1〜h,1〜w)の読み込みを行う。繰り返しのm回目では、特徴マップX(m,1〜h,1〜w)の読み込みを行う。一方、特徴マップXの全チャネルの出力が終了しているとき(T35−YES)、演算指示部11は、制御部51を介し、中間演算結果Icをメモリ2に出力するための制御信号をバッファ41に出力し、T36に進む。
演算指示部11は、重み行列Wの全セットの出力が終了しているか否かを判定する(T36)。重み行列Wの全セットの出力が終了していないとき(T36−NO)、T31に戻り、重み行列Wの処理対象のセットをu方向にスライドさせる。一方、重み行列Wの全セットの出力が終了しているとき(T36−YES)、演算指示部11は、制御部51を介してバッファ41に、重み行列Wの全セットの出力を終了していることを示す制御信号を出力し、処理を終了する。
すなわち、演算指示部11は、畳み込み演算Cvにおいて、処理中のセット及びチャネルに応じた重み行列W(u,z,1〜h,1〜w)と、処理中のスライド位置に対応する特徴マップXの対応領域Cをメモリ2から読み込む。より具体的には、演算指示部11は、特徴マップX内をxy方向に走査して特徴マップXの読込みを行った後、z方向にスライドさせて次の特徴マップXのxy方向の走査を行う。そして、演算指示部11は、z方向のスライドが完了した後、重み量Wをu方向にスライドさせて次の特徴マップXのxy方向の走査を行う。
演算部21では、演算素子Mによって、入力された重み行列W及び特徴マップXの積和演算を行い、中間演算結果Icをバッファ41に出力する(U31)。
格納領域指示部31は、演算指示部11から入力された出力データの出力先の情報に基づいて、中間演算結果Icを格納する領域Bを決定する(V31)。すなわち、畳み込み演算Cvでは、対応領域Cに応じ(ブロックごとに演算された結果)、中間演算結果Icの領域Bを決定する。
バッファ41は、決定された領域Bに、中間演算結果Icを加算して格納する(V32)。
バッファ41は、T35において演算指示部11から入力された制御信号に基づいて、中間演算結果Icをメモリ2に出力するか否かを判定する(V33)。V33−NOのとき、V31に戻る。一方、V33−YESのとき、処理はV34に進む。
バッファ41は、中間演算結果Icをメモリ2に出力する(V34)。メモリ2に出力した後、領域Bはクリアされる。すなわち、バッファ41は、畳み込み演算Cvにおいて、z方向の処理が完了すると、中間演算結果Icに基づく領域Bに格納された演算結果Yの処理チャネルのデータをメモリ2に出力する。
バッファ41は、T36において演算指示部11から入力された制御信号に基づいて、重み行列Wの全セットの出力が終了しているか否かを判定する(V35)。バッファ41は、重み行列Wの全セットの出力が終了していないとき(V35−NO)、V31に戻る。一方、重み行列Wの全セットの出力が終了しているとき(V35−YES)、処理は終了する。
(全結合演算Fc)
演算システム1の全結合演算Fcについて説明をする。図20及び図21は、第3の実施形態に係わる、演算システム1の全結合演算Fcの一例を説明するための説明図である。
全結合演算Fcでは、チャネル数Nの1次元データである特徴マップXと、行数N、列数Mの2次元データである重み行列Wとを使用する。全結合演算Fcでは、特徴マップXのチャネル数Nは、重み行列Wの行数Nと同じである。
全結合演算Fcでは、次の数式(8)によって表せる演算結果Y(1)〜Y(M)が出力される。なお、全結合演算Fcでは、演算結果Y(1)〜Y(M)の合計値が、演算結果Yとして出力されても構わない。
数式1
Figure 0006957365
図20に示すように、全結合演算Fcでは、Nチャネルの特徴マップX(1)〜X(N)と、行数N、列数Mによって構成された重み行列W(1〜N,1〜M)とが用いられる。演算部21は、演算素子M1〜Mkによって演算を行い、中間演算結果Icをバッファ41に出力する。バッファ41は、中間演算結果Icを領域B1〜Bkに格納する。
続いて、演算システム1の全結合演算Fcの流れを説明する。
図21は、第3の実施形態に係わる、演算システム1の全結合演算Fcの一例を説明するためのフローチャートである。図21は、第3の実施形態に係わる、演算システム1の全結合演算Fcの一例を説明するための図である。
制御部51は、全結合演算Fcを開始するための制御信号を出力する(S4)。制御部51は、メモリ2から読み込まれたネットワーク構成情報Sに基づいて、全結合演算Fcを示す演算種類の情報と、重み行列識別情報を演算指示部11に出力する。
演算指示部11は、メモリ2から特徴マップXを読み込む(T41)。演算指示部11は、現在のチャネルカウンタnに応じ、メモリ2からチャネルカウンタnに応じた特徴マップX(n)の値を読み込む。チャネルカウンタnは、T41からT46のループによってカウントされる。
演算指示部11は、メモリ2から重み行列Wを読み込む(T42)。演算指示部11は、メモリ2から重み行列Wの現在のセットカウンタmに応じ、重み行列W(N,m)〜W(N,m+所定の演算素子数)を読み込む。所定の演算素子数は、予め設定される全結合演算Fcに使用される演算素子Mの数である。セットカウンタmは、T42からT45のループによってカウントされる。
演算指示部11は、演算素子Mの出力の格納先を決定する(T43)。図22に示すように、全結合演算Fcでは、チャネルカウンタn(n=1〜N)に応じ、重み行列W(n,m+所定の演算素子数)の各々と特徴マップX(n)を乗算し、中間演算結果Ic(n,m+所定の演算素子数)の各々をバッファ41の領域B1〜Bkに累積加算する。中間演算結果Ic(n,m+所定の演算素子数)を格納する領域B1〜Bkの各々は、重み行列Wの列数1〜Mの各々に応じて決定される。
演算指示部11は、特徴マップX(n)と重み行列W(n,m+所定の演算素子数)を演算素子Mの各々に出力する(T44)。
演算指示部11は、重み行列W内の処理対象の要素セットの出力が終了しているか否かを判定する(T45)。セットカウンタmが、列数M以上であるとき、演算指示部11は、処理対象の要素セットである重み行列W(n,1〜M)の出力が終了したと判定する。重み行列W(n,1〜M)の出力が終了していないとき、セットカウンタmに所定の演算素子数を加算し、処理はT42に戻る。一方、処理対象の重み行列W(n,1〜M)の出力が終了しているとき、処理はT46に進む。
特徴マップXの全チャネルの出力が終了しているか否かを判定する(T46)。演算指示部11はチャネルカウンタnが行数N以上であるとき、特徴マップXの全チャネルの出力が終了していると判定する。特徴マップXの全チャネルの出力が終了していないとき、チャネルカウンタnを1インクリメントし、処理はT41に戻る。特徴マップXの全チャネルの出力が終了しているとき、演算指示部11は、制御部51を介し、中間演算結果Icをメモリ2に出力するための制御信号をバッファ41に出力し、処理は終了する。
U41、V41〜V43の処理は、U31、V31〜V33の処理と同じであるため、説明を省略する。
バッファ41は、中間演算結果Icを合算してメモリ2に出力する(V44)。すなわち、バッファ41は、全結合演算Fcにおいて、特徴マップXの全チャネルに基づいた演算が終了すると、中間演算結果Icをメモリ2に出力する。
演算装置3では、演算種類に応じ、演算指示部11における重み行列Wと特徴マップXの読み込み方法と、バッファ41における演算結果Yを格納する領域Bの各々を変更する。例えば、畳み込み演算Cvでは、特徴マップXのxy座標に応じ、領域B1〜Bkの各々が決定される。また、全結合演算Fcでは、重み行列Wの列数1〜Mに応じ、領域B1〜Bkの各々が決定される。
より具体的には、畳み込み演算Cvでは、演算指示部11は、重み行列Wと、特徴マップX内における重み行列Wに対応付けられた対応領域Cとを演算部21に出力し、特徴マップX内における対応領域Cのxy座標に応じて中間演算結果Icを格納するバッファ41内の領域Bを決定し、領域Bを格納領域指示部31に指示する。
また、全結合演算Fcでは、演算指示部11は、特徴マップXと、重み行列W内における特徴マップXに対応付けられた要素セットとを演算部21に出力し、重み行列W内における要素セットに応じて中間演算結果Icを格納するバッファ41内の領域Bを決定し、領域Bを格納領域指示部31に指示する。
これにより、畳み込み演算Cv及び全結合演算Fcの両演算において、中間演算結果Icをメモリ2に書き込むことなく演算可能である。また、両演算の各々に専用のバッファ41を設けた場合よりも少ないバッファ41量によって両演算を実行可能である。
第3の実施形態によれば、演算装置3では、複数種類の演算が同一のバッファ41で実現され、かつ、メモリ2への中間演算結果Icの退避がなく、読込み及び書込みの回数が抑えられ、電力消費が抑えられる。
(第3の実施形態の変形例)
第3の実施形態では、演算装置3は、メモリ2から読み込まれた重み行列W及び特徴マップXの全てについて演算を行うが、重み行列Wに0値が含まれるときに0値の演算を省略してもよい。本変形例の説明では、実施形態と同じ構成については、説明を省略する。
本変形例では、演算装置3は、重み行列圧縮部12a及び特徴量圧縮部13aを有する(図14の2点鎖線)。
重み行列圧縮部12aは、メモリ2から読み込まれた重み行列Wに0値が含まれるとき、0値を削除し、重み行列Wを圧縮し、重み行列出力部12に圧縮した重み行列Wを出力する。また、重み行列圧縮部12aは、重み行列Wの圧縮位置情報を特徴量圧縮部13aに出力する。
特徴量圧縮部13aは、入力された圧縮位置情報に基づいて、重み行列Wの圧縮位置にある要素を削除して圧縮した特徴マップXを特徴量出力部13に出力する。
演算指示部11は、圧縮位置情報及び出力先の演算素子Mに応じて出力先の情報を算出し、制御部51を介して格納領域指示部31に出力する。すなわち、重み行列圧縮部12aは、重み行列Wに含まれる0値を削除することによって重み行列Wを圧縮し、圧縮位置情報を出力する。また、特徴量圧縮部13aは、圧縮位置情報に応じて特徴マップXに含まれる値を削除することによって特徴マップXを圧縮する。これにより、演算装置3では、演算量を抑えることができる。
(第4の実施形態)
実施形態及び変形例では、演算指示部11は、畳み込み演算Cvにおいて、特徴マップX内におけるxy方向の走査を行った後、z方向にスライドし、次のxy方向の走査を行うように構成されるが、z方向に走査を行った後、x方向又はy方向のいずれか一方向にスライドし、次のz方向の走査を行うように構成しても構わない。本実施形態の説明では、他の実施形態又は変形例と同じ構成については、説明を省略する。
例えば、演算装置3は、z方向の走査により、順次、中間演算結果Icをバッファ41に加算して格納し、z方向の走査を行った後、中間演算結果Icをバッファ41からメモリ2に出力する。続いて、x方向にスライドし、次のz方向の走査により、順次、中間演算結果Icをバッファ41に加算して格納する。このときのバッファ41の中間演算結果Icの格納先は、演算素子M毎に予め設定される。これにより、演算装置3では、xy座標分の領域Bをバッファ41上に設けなくても、z座標分の領域Bによって演算可能であり、より少ないバッファ41量によって演算可能である。
(第4の実施形態の変形例)
実施形態及び変形例では、演算種類は、畳み込み演算Cv及び全結合演算Fcによって構成されるが、走査方向の異なる演算によって構成されても構わない。本変形例の説明では、他の実施形態又は変形例と同じ構成については、説明を省略する。
例えば、第1の畳み込み演算Cvでは、xy方向に走査を行った後、z方向にスライドし、次のxy方向の走査をして特徴マップXを読み込むことによって行われる畳み込み演算Cvであり、また、第2の畳み込み演算Cvでは、z方向に走査を行った後、x方向又はy方向にスライドし、次のz方向を走査して特徴マップXを読み込むことによって行われる畳み込み演算Cvであっても構わない。
なお、第1演算では、xy方向に走査を行うことにより、例えば、特徴マップX(1,1,2〜5)等、x方向にスライドするとき、x方向に連続する要素を1回だけ読み込むように構成し、スライド毎に繰り返してメモリ2から読み込むことなく、特徴マップXの再利用によって読込み量を抑えることができる。一方、第2演算では、z方向に走査を行うことにより、バッファ41における使用する領域Bを抑えることができる。
これにより、演算装置3は、特徴マップXに応じ、メモリ2の読込み量を抑えるときにはxyzの走査方向の順序で走査し、バッファ41における使用する領域Bを抑えるときにはzxyの走査方向の順序で走査を行うことができる。
なお、実施形態の変形例では、制御部51が、ネットワーク構成情報Sに基づいて、演算指示部11に演算種類を出力するが、メモリ2から読み込まれた特徴マップXを検出し、走査方向の順序を行うか判定し、演算指示部11に演算種類を出力するように構成しても構わない。
本発明の実施形態を説明したが、これらの実施形態は、例として示したものであり、本発明の範囲を限定することは意図していない。これら新規の実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
1 演算システム、2 メモリ、3 演算装置、11 演算指示部、12 重み量出力部、13 特徴量出力部、21 演算部、12a 重み量圧縮部、13a 特徴量圧縮部、31 格納領域指示部、41 バッファ、51 制御部、B 領域、C 対応領域、Cv 畳み込み演算、Fc 全結合演算、Ic 中間演算結果、M 演算素子、S ネットワーク構成情報、W 重み量、X 特徴マップ、Y 演算結果

Claims (5)

  1. 第1演算又は第2演算のいずれか一方の演算種類に応じた重み量と特徴量をメモリから読み込み、読み込まれた前記重み量と前記特徴量に対応する前記演算種類の演算指示を行う演算指示部と、
    前記演算指示に応じ、前記メモリから読み込まれた前記重み量と前記特徴量を用いた演算を行い、中間演算結果を出力する演算部と、
    前記中間演算結果を格納するバッファと、
    前記演算種類に応じ、前記中間演算結果を格納する前記バッファ内の領域の指示を行う格納領域指示部と、
    を有し、
    前記演算指示部は、前記演算部からの前記中間演算結果と前記バッファに格納させた前記中間演算結果との積算結果により前記バッファに格納された前記中間演算結果を更新させると共に、前記演算指示に基づく所定の演算が終了すると前記バッファに格納されている前記中間演算結果を演算結果として前記メモリに記憶させる演算装置。
  2. 前記第1演算は、畳み込み演算であり、
    前記第2演算は、全結合演算である、
    請求項に記載の演算装置。
  3. 前記演算指示部は、前記畳み込み演算において、前記重み量に対応した特徴マップXの対応領域の前記特徴量をメモリから読み込む、請求項に記載の演算装置。
  4. 前記演算指示部は、重み量圧縮部及び特徴量圧縮部を有し、
    前記重み量圧縮部は、前記重み量に含まれる0値を削除することによって前記重み量を圧縮し、圧縮位置の情報である圧縮位置情報を出力し、
    前記特徴量圧縮部は、前記圧縮位置情報に応じて前記特徴量に含まれる値を削除することによって前記特徴量を圧縮する、
    請求項に記載の演算装置。
  5. 前記演算部は、前記重み量を要素とする行列と前記特徴量を要素とする行列との演算によって前記中間演算結果を得る、請求項に記載の演算装置。
JP2018003972A 2017-09-22 2018-01-15 演算装置 Active JP6957365B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
US15/923,521 US10558386B2 (en) 2017-09-22 2018-03-16 Operation device and operation system
EP18162305.9A EP3460724A1 (en) 2017-09-22 2018-03-16 Operation device and operation system

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2017182766 2017-09-22
JP2017182766 2017-09-22

Publications (2)

Publication Number Publication Date
JP2019061641A JP2019061641A (ja) 2019-04-18
JP6957365B2 true JP6957365B2 (ja) 2021-11-02

Family

ID=65864491

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018003972A Active JP6957365B2 (ja) 2017-09-22 2018-01-15 演算装置

Country Status (2)

Country Link
JP (1) JP6957365B2 (ja)
CN (1) CN109557996B (ja)

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7028271B2 (en) * 2002-11-06 2006-04-11 Canon Kabushiki Kaisha Hierarchical processing apparatus
US20160358069A1 (en) * 2015-06-03 2016-12-08 Samsung Electronics Co., Ltd. Neural network suppression
CN105260776B (zh) * 2015-09-10 2018-03-27 华为技术有限公司 神经网络处理器和卷积神经网络处理器
US11475269B2 (en) * 2015-12-15 2022-10-18 Analog Devices, Inc. Convolutional neural network
CN106203621B (zh) * 2016-07-11 2019-04-30 北京深鉴智能科技有限公司 用于卷积神经网络计算的处理器
CN106529670B (zh) * 2016-10-27 2019-01-25 中国科学院计算技术研究所 一种基于权重压缩的神经网络处理器、设计方法、芯片
CN106447034B (zh) * 2016-10-27 2019-07-30 中国科学院计算技术研究所 一种基于数据压缩的神经网络处理器、设计方法、芯片

Also Published As

Publication number Publication date
CN109557996B (zh) 2022-12-02
CN109557996A (zh) 2019-04-02
JP2019061641A (ja) 2019-04-18

Similar Documents

Publication Publication Date Title
EP3460724A1 (en) Operation device and operation system
CN107610146B (zh) 图像场景分割方法、装置、电子设备及计算机存储介质
CN109064428B (zh) 一种图像去噪处理方法、终端设备及计算机可读存储介质
US9411726B2 (en) Low power computation architecture
US20200327079A1 (en) Data processing method and device, dma controller, and computer readable storage medium
CN108717571B (zh) 一种用于人工智能的加速方法和装置
US8368713B2 (en) Figure drawing device and method
EP1406213A1 (en) Information processor
CN107590811B (zh) 基于场景分割的风景图像处理方法、装置及计算设备
JP2021530770A (ja) ビデオ処理方法、装置及びコンピュータ記憶媒体
CN106780336B (zh) 一种图像缩小方法及装置
US20200218777A1 (en) Signal Processing Method and Apparatus
US20200394516A1 (en) Filter processing device and method of performing convolution operation at filter processing device
US20210117762A1 (en) Arithmetic processing device
JP2021528726A (ja) ポイントクラウドデータの処理方法、装置、電子機器及び記憶媒体
JP6957365B2 (ja) 演算装置
JP2017027314A (ja) 並列演算装置、画像処理装置及び並列演算方法
US8938133B2 (en) Image resizing apparatus and method that interpolates image blocks with abuttal regions
CN107622498B (zh) 基于场景分割的图像穿越处理方法、装置及计算设备
JPWO2019077933A1 (ja) 演算回路および演算方法
EP3680827B1 (en) Information processing apparatus and memory control method
CN110930290B (zh) 一种数据处理方法及装置
CN113469880A (zh) 图像拼接方法及装置、存储介质及电子设备
CN113420604A (zh) 多人姿态估计方法、装置和电子设备
JP6910622B2 (ja) 画像処理システム

Legal Events

Date Code Title Description
RD01 Notification of change of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7421

Effective date: 20191008

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200127

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20201216

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210126

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20210329

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210419

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20211006

R150 Certificate of patent or registration of utility model

Ref document number: 6957365

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150