IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 株式会社エヌエスアイテクスの特許一覧 ▶ 株式会社デンソーの特許一覧

<>
  • 特許-畳込み演算装置 図1
  • 特許-畳込み演算装置 図2
  • 特許-畳込み演算装置 図3
  • 特許-畳込み演算装置 図4
  • 特許-畳込み演算装置 図5
  • 特許-畳込み演算装置 図6
  • 特許-畳込み演算装置 図7
  • 特許-畳込み演算装置 図8
  • 特許-畳込み演算装置 図9
  • 特許-畳込み演算装置 図10
  • 特許-畳込み演算装置 図11
  • 特許-畳込み演算装置 図12
  • 特許-畳込み演算装置 図13
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-12-22
(45)【発行日】2024-01-05
(54)【発明の名称】畳込み演算装置
(51)【国際特許分類】
   G06F 17/10 20060101AFI20231225BHJP
   G06F 7/50 20060101ALI20231225BHJP
   G06F 7/52 20060101ALI20231225BHJP
   G06J 1/00 20060101ALI20231225BHJP
【FI】
G06F17/10 A
G06F7/50
G06F7/52
G06J1/00 650
【請求項の数】 5
(21)【出願番号】P 2019062744
(22)【出願日】2019-03-28
(65)【公開番号】P2020161054
(43)【公開日】2020-10-01
【審査請求日】2022-01-26
(73)【特許権者】
【識別番号】519084397
【氏名又は名称】株式会社エヌエスアイテクス
(73)【特許権者】
【識別番号】000004260
【氏名又は名称】株式会社デンソー
(74)【代理人】
【識別番号】100113549
【弁理士】
【氏名又は名称】鈴木 守
(74)【代理人】
【識別番号】100115808
【弁理士】
【氏名又は名称】加藤 真司
(74)【代理人】
【識別番号】230121430
【弁護士】
【氏名又は名称】安井 友章
(72)【発明者】
【氏名】広津 鉄平
【審査官】坂東 博司
(56)【参考文献】
【文献】特開平06-318194(JP,A)
【文献】特開平09-062653(JP,A)
【文献】米国特許出願公開第2018/0032312(US,A1)
【文献】米国特許出願公開第2018/0005074(US,A1)
【文献】AYDONAT UTKU UTKU AYDONAT@INTEL COM ET AL,An OpenCL(TM) Deep Learning Accelerator on Arria 10,PROCEEDINGS OF THE 2017 CHI CONFERENCE ON HUMAN FACTORS IN COMPUTING SYSTEMS , CHI '17, ACM PRESS,,米国,CHI '17, ACM PRESS,2017年02月22日,pages 55-64,URL:https://dl.acm.org/doi/pdf/10.1145/3020078.3021738,令和4年10月26日検索
(58)【調査した分野】(Int.Cl.,DB名)
G06F 17/10
G06F 7/50
G06F 7/52
G06J 1/00
(57)【特許請求の範囲】
【請求項1】
二次元的に配置され既定の複数行かつ複数列をなしデータを夫々記憶する複数の記憶素子(42)を有し、前記複数の記憶素子間で前記データを循環的にシフト可能であり、所定の複数行かつ複数列をなす前記記憶素子を含む所定の領域に入力ウィンドウ(44,44a~44d)が設定されており、当該入力ウィンドウ内の前記所定の複数行かつ複数列をなす記憶素子に記憶されたデータを所定の複数行かつ複数列をなす入力データ(d,d~d)としてサイクル毎に纏めて選択して出力する、二次元循環シフトレジスタ部(40)と、
前記レジスタ部から入力された前記所定の複数行かつ複数列をなす入力データと所定のフィルタをなす所定の複数行かつ複数列をなすウェイトデータとを積和演算して出力データ(Y,Y~Y)を生成する積和演算部(50,50a~50d)と、
を具備する畳込み演算装置。
【請求項2】
前記積和演算部は、ウィノグラードアルゴリズムに基づく積和演算を行い、
前記フィルタは、3行3列のフィルタであり、
前記入力データは、5行5列の入力データであり、
前記出力データは、3行3列の出力データである、
請求項1に記載の畳込み演算装置。
【請求項3】
前記レジスタ部は、複数の前記入力ウィンドウを有し、複数の前記入力データを選択可能であり、
前記畳込み演算装置は、前記レジスタ部から前記複数の入力データが夫々入力される複数の前記積和演算をさらに具備する、
請求項1に記載の畳込み演算装置。
【請求項4】
前記レジスタ部は、前記シフトのシフト量を切替可能である、
請求項1に記載の畳込み演算装置。
【請求項5】
前記レジスタ部は、互いに異なる前記所定の複数行かつ複数列をなす記憶素子を含む複数の前記領域に夫々複数の前記入力ウィンドウを設定し、前記複数の入力ウィンドウを切替可能である、
請求項1に記載の畳込み演算装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、畳込み演算を行う畳込み演算装置に関する。
【背景技術】
【0002】
畳込み演算では、入力データに、所定のフィルタをなすウェイトデータを畳込むことで、出力データを生成する。従来の畳込み装置装置では、畳込み演算を行列演算に変換することで、畳込み演算を処理している(例えば、特許文献1参照)。
【先行技術文献】
【特許文献】
【0003】
【文献】米国特許第9747548号明細書
【発明の概要】
【発明が解決しようとする課題】
【0004】
従来の畳込み演算装置では、畳込み演算を行列演算に変換しているため、行列演算が可能なように入力データを変換する必要があり、また、元々の入力データを重複させた変換データを取り扱う必要がある。このため、ハードウェアやデータ処理が増大し、消費電力が増大してしまう。
【0005】
本発明は上記課題に鑑みてなされたものであり、その目的は、消費電力が低減された畳込み演算装置を提供することにある。
【課題を解決するための手段】
【0006】
本発明は上記課題を解決するために以下の技術的手段を採用する。特許請求の範囲及びこの項に記載した括弧内の符号は、ひとつの態様として後述する実施の形態に記載の具体的手段との対応関係を示す一例であって、本発明の技術的範囲を限定するものではない。
【0007】
本発明の一実施態様は、二次元的に配置されデータを夫々記憶する複数の記憶素子(42)を有し、前記複数の記憶素子間で前記データを循環的にシフト可能であり、所定の領域に入力ウィンドウ(44,44a~44d)が設定されており、当該入力ウィンドウ内の前記記憶素子に記憶されたデータを入力データとして選択する、二次元循環シフトレジスタ部(40)と、前記レジスタ部から入力された前記入力データと所定のフィルタをなすウェイトデータとを積和演算して出力データを生成する積和演算部(50,50a~50d)と、を具備する畳込み演算装置である。
【発明の効果】
【0008】
本発明では、畳込み演算装置における消費電力が低減されている。
【図面の簡単な説明】
【0009】
図1】本発明の第1実施形態のDFPシステムを示すブロック図。
図2】本発明の第1実施形態のDFPを示すブロック図。
図3】本発明の第1実施形態の畳込み演算回路を示すブロック図。
図4】本発明の第1実施形態の記憶素子を示すブロック図。
図5】本発明の第1実施形態の積和演算器を示すブロック図。
図6】本発明の第1実施形態のシフトによる入力データの選択を示す模式図。
図7】本発明の第1実施形態の入力データ範囲の移動を示す概念図。
図8】本発明の第1実施形態の一連のシフト動作を示す表図。
図9】本発明の第2実施形態の畳込み演算回路を示すブロック図。
図10】本発明の第2実施形態の一連のシフト動作を示す表図。
図11】本発明の第3実施形態の畳込み演算回路を示すブロック図。
図12】本発明の第3実施形態の積和演算で用いられる定数行列を示す表図。
図13】本発明の第3実施形態の入力データ範囲の移動を示す概念図。
【発明を実施するための形態】
【0010】
[第1実施形態]
図1乃至図8を参照して、本発明の第1実施形態について説明する。
畳込み演算回路については、自動運転の画像認識や物体検知に用いられるデータフロープロセッサ(Data Flow Processor、以下「DFP」という。)等に用いられるものである。
【0011】
本実施形態の畳込み演算回路では、シフトレジスタ40において、二次元的に配置された多数の記憶素子42にデータ要素が記憶され、所定の領域に設定された入力ウィンドウ44内の記憶素子42のデータ要素を入力データdとして選択する。積和演算器50において、シフトレジスタ40から入力された入力データdと、所定のフィルタをなすウェイトデータgとを積和演算して、出力データYを生成する。ここで、シフトレジスタ40において総データ要素を順次シフトさせて、入力ウィンドウ44内のデータ要素を順次入力データdとして選択し、当該入力データdから順次生成された出力データYから総出力データZを生成する。
【0012】
図1を参照して、DFPシステム10について概説する。
本実施形態のDFPシステム10では、DFP11については、ホストCPU12の重い演算負荷に対処する個別のマスタとして機能し、プログラム及び独自の命令フェッチが可能であり、イベントハンドラ13が生成した割込み処理をサポートする。DFP11、ホストCPU12、ROM14、RAM15及び外部インターフェイス16は、システムバス17を介して、データの送受信を行う。
【0013】
図2を参照して、DFP11について概説する。
DFP11については、多量のスレッドに対して、ハードウェアによる動的レジスタ配置及びスレッド・スケジューリングにより、異なる命令ストリームに対してであっても複数のスレッドを並列実行することを可能とする。なお、このような多量のスレッドについては、コンパイラによって、プログラムコードを自動ベクトル化し、プログラムのタスク並列性及びグラフ並列性を保持するグラフ構造を抽出することにより、生成することが可能である。
【0014】
DFP11において、複数の実行コア22は、夫々、独立してスケジューリング可能な多数のパイプラインを備え、4つのプロセッシングエレメントPE#0、PE#1、PE#2、PE#3間でリソースを共有する。スレッドスケジューラ24は、多数のスレッドを跨いだスケジューリングを実現し、多数のスレッドを同時実行する。コマンドユニット26は、コンフィグ・インターフェイス28との間でデータを送受信し、コマンド・バッファとして機能する。メモリサブシステム30は、アービタ32、L1キャッシュ34a及びL2キャッシュ34bによって形成され、システムバス・インターフェイス36及びROMインターフェイス38との間でデータを送受信する。
【0015】
本実施形態では、畳込み演算回路については、DFP11が備える複数の実行コア22の内の1つの実行コア22として用いられる。
【0016】
図3を参照して、畳込み演算回路について説明する。
畳込み演算回路は、二次元循環シフトレジスタ40及び積和演算器50によって形成されている。
【0017】
シフトレジスタ40では、多数の記憶素子42が二次元的に配置されている。本実施形態では、第0行から第7行かつ第0列から第7列の8行8列の64個の記憶素子42が用いられている。
【0018】
各記憶素子42には、データ要素が記憶される。各記憶素子42は当該記憶素子42の上下左右に配置された記憶素子42と接続されており、各記憶素子42のデータ要素は上下左右に配置された記憶素子42にシフト可能である。シフトレジスタ40については、二次元循環型であり、最上行、最下行、最左列、最右列の記憶素子42の上、下、左、右に、夫々、最下行、最上行、最右列、最左列の記憶素子42が配置されているものとする。ここで、各記憶素子42がn個隣の記憶素子42に接続され、各記憶素子42とn個隣の記憶素子42との間でデータ要素がシフトされる場合に、シフト量がnであるとする。本実施形態では、各記憶素子42は上下左右に隣接した記憶素子42とのみ接続されており、各記憶素子42のデータ要素は上下左右に隣接した記憶素子42にのみシフト可能であるため、シフト量は1となる。
【0019】
シフトレジスタ40には、メモリインターフェース60が接続されている。メモリインターフェース60からシフトレジスタ40の最下行の各記憶素子42にデータ要素が順次入力される。最下行の各記憶素子42に入力されたデータ要素を順次上方向にシフトさせていくことで、全ての記憶素子42にデータ要素が記憶される。
【0020】
シフトレジスタ40において、所定の領域に入力ウィンドウ44が設定されている。入力ウィンドウ44内の記憶素子42に記憶されているデータ要素が入力データdとして選択され、積和演算器50へと出力される。本実施形態では、第0行から第2行かつ第0列から第2列の3行3列の記憶素子42を包含する領域に入力ウィンドウ44が設定されている。そして、8行8列の総データ要素から3行3列の入力データdが選択され、3行3列の入力データdが積和演算器50に出力される。
【0021】
図4を参照して、シフトレジスタ40の記憶素子42について詳細に説明する。
記憶素子42は、マルチプレクサ46(MUX)及びフリップフロップ48(FF)から形成されている。本実施形態では、マルチプレクサ46には、上下左右に隣接した記憶素子42のフリップフロップ48からデータ要素が入力される。マルチプレクサ46は、入力された4個のデータ要素の内から1個のデータ要素を選択して、当該記憶素子42のフリップフロップ48に出力する。フリップフロップ48は、マルチプレクサ46から入力されたデータ要素を保持する。
【0022】
図5を参照して、積和演算器50について説明する。
積和演算器50では、入力データdと所定のフィルタなすウェイトデータwとの積和演算を行い、出力データYを生成する。即ち、以下の式(1)で示されるように、入力データdとウェイトデータgとのフロベニウス積を出力データYとする。ここで、dqrは入力データdをなす入力データ要素、gqrはウェイトデータgをなすウェイトデータ要素である。
【数1】
【0023】
本実施形態では、3行3列の入力データd(dqr:q=0~2;r=0~2)と3行3列のウェイトデータg(gqr:q=0~2;r=0~2)とから1行1列の出力データYを生成する。このため、積和演算における乗算回数は9回となる。
【0024】
積和演算器50は、入力レジスタ52、ウェイトレジスタ54、乗算器56及び加算器ツリー58から形成されている。入力レジスタ52は、シフトレジスタ40から入力された入力データdをなす入力データ要素dqrを保持する。ウェイトレジスタ54は、図示しないインターフェイスから入力されたウェイトデータgをなすウェイトデータ要素gqrを保持する。本実施形態では、入力レジスタ52及びウェイトレジスタ54は、夫々、9個の記憶領域を備える。各乗算器56は、入力レジスタ52の各入力データ要素dqrと、ウェイトレジスタ54の各ウェイトデータ要素gqrとの乗算を行い、加算器ツリー58は、各乗算器56で算出された全乗算結果を加算する。本実施形態では、9個の乗算器56が用いられ、加算器ツリー58により9個の乗算結果が加算される。
【0025】
図6乃至図8を参照して、本実施形態の畳込み演算処理について説明する。
【0026】
図6に示されるように、シフトレジスタ40において、総データ要素を順次シフトさせ、入力ウィンドウ44内のデータ要素を順次入力データdとして選択する。本実施形態では、8行8列の総データ要素ij(i=0~7;j=0~7)を順次シフトさせ、第0行から第2行かつ第0列から第2列の3行3列の入力ウィンドウ44内のデータ要素を、順次入力データdとして選択する。
【0027】
図7に示されるように、シフトレジスタ40におけるシフトによる入力データdの選択については、総データ要素における入力データ範囲Dの移動に対応する。ここで、シフトレジスタ40における上下左右方向へのシフトについては、総データ要素における入力データ範囲Dの逆方向への移動に対応する。以下では、最上左を基準として、下方向及び右方向に夫々k及びlだけ変位した入力データ範囲Dの入力データをdklとし、当該入力データdklから生成される出力データをYklとする。本実施形態では、8行8列の総データ要素ij(i=0~7;j=0~7)において、3行3列の入力データ範囲Dが下方向及び右方向に夫々k及びl(k=0~5;l=0~5)だけ変位することになる。
【0028】
図8に示されるように、一連のシフト動作では、入力データ選択から次の入力データ選択までの1サイクルで、シフト量1及びシフト回数1のシフト動作がなされ、35回のサイクルで35回のシフトが実行される。当該35回のサイクルにより、サイクル開始前も含め、36個の3行3列の入力データdklが選択され、当該36個の3行3列の入力データdklから36個の1行1列の出力データYklが生成される。そして、36個の出力データYklを要素zklとする6行6列の総出力データZが生成される。
【0029】
本実施形態では、畳込み演算におけるシフト回数は35回となる。また、総乗算回数は、積和演算における乗算回数である9回と、入力データの選択回数である36回とを乗じて、324回となる。
【0030】
本実施形態の畳込み演算回路については、以下の効果を奏する。
本実施形態の畳込み演算回路では、畳込み演算を行列演算に変換しているわけではないため、行列演算が可能なように入力データを変換する必要はなく、また、元々の入力データを重複させた変換データを取り扱う必要もない。このため、ハードウェアやデータ処理の増大が回避されており、畳込み演算装置における消費電力が低減されている。
【0031】
[第1実施形態の第1変形例]
以下、本発明の第1実施形態の第1変形例について説明する。
本変形例の畳込み演算回路では、シフトレジスタ40において、複数の入力ウィンドウ領域を互いに切替可能としたものである。即ち、複数の入力ウィンドウ領域に包含される全記憶素子42がマルチプレクサに接続されており、マルチプレクサにおいて記憶素子42から入力される入力データ要素を選択することで、複数の入力ウィンドウ領域が互いに切り替えられるようになっている。
【0032】
例えば、畳込み演算で3行3列、4行4列、5行5列のフィルタが用いられる場合に、当該各フィルタに対応して、3行3列、4行4列、5行5列の記憶素子42を夫々包含する第0乃至第2の入力ウィンドウ領域を互いに切替可能とする。このような第0乃至第2の入力ウィンドウ領域として、例えば、(0)第0行から第2行かつ第0列から第2列の3行3列の記憶素子42を包含する第0の入力ウィンドウ領域、(1)第0行から第3行かつ第0列から第3列の4行4列の記憶素子42を包含する第1の入力ウィンドウ領域、(2)第0行から第4行かつ第0列から第4列の5行5列の記憶素子42を包含する第2の入力ウィンドウ領域を用いることが可能である。
【0033】
本変形例の畳込み演算回路については、シフトレジスタ40において、複数の入力ウィンドウ領域が互いに切替可能であるため、様々な種類の畳込み演算に対応可能であり、汎用性の高い畳込み演算回路が実現されている。
【0034】
[第1実施形態の第2変形例]
以下、本発明の第1実施形態の第2変形例について説明する。
本変形例の畳込み演算回路については、シフトレジスタ40において、シフト量を切替可能としたものである。即ち、各記憶素子42のマルチプレクサ46に、上下左右の方向毎に、s個隣、s個隣、…、s個隣(n≧2)の記憶素子42のフリップフロップ48が接続されている。そして、各記憶素子42のマルチプレクサ46において、s個隣、s個隣、…、s個隣(n≧2)のいずれの記憶素子42のフリップフロップ48から入力されたデータ要素を選択するかを切り替えることにより、シフト量が切り替えられる。
【0035】
例えば、シフトレジスタ40において、各記憶素子42のマルチプレクサ46に、上下左右の方向毎に、隣接する記憶素子42のフリップフロップ48に加えて、2個隣の記憶素子42のフリップフロップ48が接続されており、各記憶素子42のマルチプレクサ46において、隣接する記憶素子42と、2個隣の記憶素子42とのいずれの記憶素子42から入力されたデータ要素を選択するかを切り替えることにより、シフト量が1と2との間で切り替えられる。
【0036】
本変形例の畳込み演算回路では、シフトレジスタ40において、シフト量が切替可能であるため、様々な種類の畳込み演算に対応可能であり、汎用性の高い畳込み演算回路が実現されている。
【0037】
さらに、第1実施形態の第1変形例と第2変形例とを組み合わせて、シフトレジスタ40において、入力データ領域及びシフト量を切替可能とすることで、さらに汎用性の高い畳込み演算回路を実現することが可能である。
【0038】
[第2実施形態]
図9及び図10を参照して、本発明の第2実施形態について説明する。
本実施形態の畳込み演算回路については、シフトレジスタ40において、複数の入力ウィンドウ44a-44dを設定したものである。
なお、図9では、図の簡略化のため、最上行と最下行との各記憶素子42間、並びに、最左列と最右列との各記憶素子42間について、信号線の図示を省略している。
【0039】
図9に示されるように、本実施形態のシフトレジスタ40では、第0乃至第3の入力ウィンドウ44a-44dが設定されている。第0乃至第3の入力ウィンドウ44a-44dとして、(0)第0行から第2行かつ第0列から第2列の3行3列の記憶素子42を包含する第0の入力ウィンドウ44a、(1)第0行から第2行かつ第3列から第5列の3行3列の記憶素子42を包含する第1の入力ウィンドウ44b、(2)第3行から第5行かつ第0列から第2列の3行3列の記憶素子42を包含する第2の入力ウィンドウ44c、(4)第3行から第5行かつ第3列から第5列の3行3列の記憶素子42を包含する第3の入力ウィンドウ44dが用いられる。第0乃至第3の入力ウィンドウ44内の記憶素子42からの入力データd~dは夫々第0乃至第3の積和演算器50a~50dに入力され、第0乃至第3の積和演算器50a~50dにおいて出力データY~Yが生成される。
【0040】
畳込み演算処理では、シフトレジスタ40において、一連のシフト動作を実行する。図10に示されるように、一連のシフト動作では、入力データ選択から次の入力データ選択までの1サイクルで、シフト量1かつシフト回数1のシフト動作がなされ、8回のサイクルで8回のシフトが実行される。当該8回のサイクルにより、サイクル開始前も含め、第0乃至第3の入力ウィンドウ44a~44dによって、夫々、各9個の3行3列の入力データdm n、dm 3+n、d3+m n、d3+m 3+n(m=0~2;n=0~2)が選択され、当該各9個の3行3列の入力データdm n、dm 3+n、d3+m n、d3+m 3+nから各9個の1行1列の出力データYm n、Ym 3+n、Y3+m n、Y3+m 3+nが生成される。そして、第1実施形態と同様に、36個の出力データYklを要素zklとする6行6列の総出力データZが生成される。
【0041】
本実施形態では、畳込み演算におけるシフト回数は8回となる。また、総乗算回数は、積和演算における乗算回数である9回と、入力ウィンドウ44a~44dの個数である4個と、入力データの選択回数である9回とを乗じて、324回となる。
【0042】
本実施形態の畳込み演算回路については、以下の効果を奏する。
本実施形態の畳込み演算回路では、シフトレジスタ40において複数の入力ウィンドウ44a~44dを設定しているため、単一の入力ウィンドウ44を設定する場合と比較して、少ないシフト回数で同一の出力を得ることができ、畳込み演算を高速で実行することが可能となっている。
【0043】
[第3実施形態]
図11乃至図13を参照して、本発明の第3実施形態について説明する。
本実施形態の畳込み演算回路については、ウィノグラードアルゴリズムに基づく積和演算を行うものであり、3行3列のフィルタに対して、5行5列の入力データを選択し、3行3列の出力データを生成する。
なお、図11では、図9と同様に、図の簡略化のため、最上行と最下行との各記憶素子42間、並びに、最左列と最右列との各記憶素子42間について、信号線の図示を省略している。
【0044】
図11に示されるように、シフトレジスタ40では、第0行から第4行かつ第0列から第4列の5行5列の記憶素子42を包含する入力ウィンドウ44が設定されている。
【0045】
積和演算器50では、以下の式(2)に示されるように、ウィノグラードアルゴリズムに基づき入力データdとウェイトデータgとの積和演算を行う。ここで、G、B、Aは定数行列である。
【数2】
【0046】
本実施形態では、5行5列の入力データdと3行3列のウェイトデータgとの積和演算により、3行3列の出力データYが生成される。定数行列G、B、Aについては図12に示されるとおりである。ウェイト項GgGについては予め算出されている。このため、本実施形態では、積和演算における乗算回数は25回となる。また、図12に示されるように、定数行列B及びAについては、要素が1、2、3、4のいずれかとなっており、乗算演算をビットシフト演算と加算演算のみで実行することが可能となっている。
【0047】
図13を参照して、本実施形態の畳込み演算処理について説明する。
【0048】
本実施形態では、図13に示されるように、8行8列の総データ要素ij(i=0~7;j=0~7)において、5行5列の入力データ範囲Dが右方向及び下方向に夫々k及びl(k=0,3;l=0,3)だけ変位されることになる。
【0049】
図13に示されるように、一連のシフト動作では、入力データ選択から次の入力データ選択までの1サイクルで、シフト量1かつシフト回数3のシフト動作がなされ、3回のサイクルで9回のシフトが実行される。当該3回のサイクルにより、サイクル開始前も含め、4個の5行5列の入力データdklが選択され、当該4個の5行5列の入力データdklから4個の3行3列の出力データYklが生成される。そして、各3行3列の出力データYklの出力データ要素ykl op(o=0~2;p=0~2)を要素zk+o l+pとする6行6列の総出力データZが生成される。
【0050】
本実施形態では、畳込み演算におけるシフト回数は9回となる。また、総乗算回数は、積和演算における乗算回数である25回と、入力データの選択回数である4回とを乗じて、100回となる。
【0051】
本実施形態の畳込み演算回路については、以下の効果を奏する。
本実施形態の畳込み演算回路では、ウィノグラードアルゴリズムに基づく積和演算を行うようにすることで、乗算回数及びシフト回数を大幅に削減することが可能である。また、3行3列のフィルタに対して、5行5列の入力データを選択し、3行3列の出力データを生成するようにすることで、乗算演算をビットシフト演算と加算演算のみで実行することが可能である。このため、畳込み演算を充分に高速かつ低消費電力で実行することが可能となっている。
【0052】
[第3実施形態の第1変形例]
以下、第3実施形態の第1変形例について説明する。
本変形例の畳込み演算回路については、第3実施形態のシフトレジスタ40において、シフト量を3としたものである。第1実施形態で説明したように、各記憶素子42を3個隣の記憶素子42に接続し、各記憶素子42と3個隣の記憶素子42との間でデータ要素をシフトさせることで、シフト量3のシフトを実現可能である。当該シフトレジスタ40では、入力データ選択から次の入力データ選択までの1サイクルで、シフト量3かつシフト回数1のシフト動作がなされ、3回のサイクルで3回のシフトが実行される。このため、本変形例のシフト回数は3回である。
【0053】
このように、本変形例では、畳込み演算におけるシフト回数がさらに削減されており、畳込み演算をさらに高速かつ低消費電力で実行することが可能となっている。
【0054】
[第3実施形態の第2変形例]
以下、第3実施形態の第2変形例について説明する。
本変形例の畳込み演算回路については、第3実施形態のシフトレジスタ40において、シフト動作に代えて、第0乃至第3の入力ウィンドウ領域を互いに切替可能としたものである。即ち、第0乃至第3の入力ウィンドウ領域として、(0)第0行から第4行かつ第0列から第4列の5行5列の記憶素子42を包含する第0の入力ウィンドウ領域、(1)第0行から第4行かつ第3列から第7列の5行5列の記憶素子42を包含する第1の入力ウィンドウ領域、(2)第3行から第7行かつ第0列から第4列の5行5列の記憶素子42を包含する第2の入力ウィンドウ領域、(3)第3行から第7行かつ第3列から第7列の3行3列の記憶素子42を包含する第3の入力ウィンドウ領域が用いられる。そして、第0乃至第3の入力ウィンドウ領域を順次切り替えて入力データを選択し、当該入力データから順次出力データを生成して、出力データから総出力データを生成する。
【0055】
このように、本変形例では、畳込み演算において、入力ウィンドウ領域の切替えを行うことで、シフト動作を不要としており、畳込み演算をさらに高速かつ低消費電力で実行することが可能となっている。
【符号の説明】
【0056】
40…シフトレジスタ 42…記憶素子
44,44a~44d…入力ウィンドウ 50,50a~50d…積和演算器
d,d~d…入力データ Y,Y~Y…出力データ
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13