JP2019207458A - 半導体装置及びメモリアクセス設定方法 - Google Patents
半導体装置及びメモリアクセス設定方法 Download PDFInfo
- Publication number
- JP2019207458A JP2019207458A JP2018101344A JP2018101344A JP2019207458A JP 2019207458 A JP2019207458 A JP 2019207458A JP 2018101344 A JP2018101344 A JP 2018101344A JP 2018101344 A JP2018101344 A JP 2018101344A JP 2019207458 A JP2019207458 A JP 2019207458A
- Authority
- JP
- Japan
- Prior art keywords
- bank
- layer
- transfer
- intermediate layer
- memory
- 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.)
- Pending
Links
- 230000015654 memory Effects 0.000 title claims abstract description 203
- 238000000034 method Methods 0.000 title claims abstract description 198
- 239000004065 semiconductor Substances 0.000 title claims abstract description 130
- 238000012546 transfer Methods 0.000 claims abstract description 389
- 238000013527 convolutional neural network Methods 0.000 claims abstract description 45
- 238000012545 processing Methods 0.000 claims description 235
- 238000004364 calculation method Methods 0.000 claims description 141
- 230000008569 process Effects 0.000 claims description 105
- 238000011176 pooling Methods 0.000 claims description 34
- 238000001994 activation Methods 0.000 claims description 28
- 230000004913 activation Effects 0.000 claims description 20
- 230000006870 function Effects 0.000 claims description 16
- 238000013528 artificial neural network Methods 0.000 claims description 12
- 230000008878 coupling Effects 0.000 claims description 11
- 238000010168 coupling process Methods 0.000 claims description 11
- 238000005859 coupling reaction Methods 0.000 claims description 11
- 239000013589 supplement Substances 0.000 claims description 10
- 230000005540 biological transmission Effects 0.000 claims description 8
- 239000000047 product Substances 0.000 claims description 4
- 230000001502 supplementing effect Effects 0.000 claims description 2
- 238000012805 post-processing Methods 0.000 claims 1
- 230000007935 neutral effect Effects 0.000 abstract 1
- 238000010586 diagram Methods 0.000 description 32
- 101100218322 Arabidopsis thaliana ATXR3 gene Proteins 0.000 description 22
- 102100032742 Histone-lysine N-methyltransferase SETD2 Human genes 0.000 description 22
- 101100149326 Homo sapiens SETD2 gene Proteins 0.000 description 22
- LZHSWRWIMQRTOP-UHFFFAOYSA-N N-(furan-2-ylmethyl)-3-[4-[methyl(propyl)amino]-6-(trifluoromethyl)pyrimidin-2-yl]sulfanylpropanamide Chemical compound CCCN(C)C1=NC(=NC(=C1)C(F)(F)F)SCCC(=O)NCC2=CC=CO2 LZHSWRWIMQRTOP-UHFFFAOYSA-N 0.000 description 22
- 101100533304 Plasmodium falciparum (isolate 3D7) SETVS gene Proteins 0.000 description 22
- 101150117538 Set2 gene Proteins 0.000 description 22
- 238000004458 analytical method Methods 0.000 description 12
- 238000001514 detection method Methods 0.000 description 10
- 238000003860 storage Methods 0.000 description 8
- 230000000052 comparative effect Effects 0.000 description 7
- 102100029768 Histone-lysine N-methyltransferase SETD1A Human genes 0.000 description 5
- 101000865038 Homo sapiens Histone-lysine N-methyltransferase SETD1A Proteins 0.000 description 5
- 230000007423 decrease Effects 0.000 description 4
- 238000004891 communication Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000014509 gene expression Effects 0.000 description 2
- 238000002360 preparation method Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000003213 activating effect Effects 0.000 description 1
- 238000007792 addition Methods 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 238000005520 cutting process Methods 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000001404 mediated effect Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000004904 shortening Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/0284—Multiple user address space allocation, e.g. using different base addresses
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/21—Design or setup of recognition systems or techniques; Extraction of features in feature space; Blind source separation
- G06F18/211—Selection of the most significant subset of features
- G06F18/2113—Selection of the most significant subset of features by ranking or filtering the set of features, e.g. using a measure of variance or of feature cross-correlation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0613—Improving I/O performance in relation to throughput
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
- G06F3/0634—Configuration or reconfiguration of storage systems by changing the state or mode of one or more devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/0464—Convolutional networks [CNN, ConvNet]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V10/00—Arrangements for image or video recognition or understanding
- G06V10/94—Hardware or software architectures specially adapted for image or video understanding
- G06V10/95—Hardware or software architectures specially adapted for image or video understanding structured as a network, e.g. client-server architectures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0844—Multiple simultaneous or quasi-simultaneous cache accessing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/30—Providing cache or TLB in specific location of a processing system
- G06F2212/301—In special purpose processing node, e.g. vector processor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
- G06F2212/601—Reconfiguration of cache memory
- G06F2212/6012—Reconfiguration of cache memory of operating mode, e.g. cache mode or local memory mode
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/048—Activation functions
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Life Sciences & Earth Sciences (AREA)
- Health & Medical Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Data Mining & Analysis (AREA)
- Artificial Intelligence (AREA)
- Evolutionary Computation (AREA)
- Software Systems (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Computational Linguistics (AREA)
- Mathematical Physics (AREA)
- Human Computer Interaction (AREA)
- Neurology (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Bioinformatics & Computational Biology (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Evolutionary Biology (AREA)
- Multimedia (AREA)
- Image Analysis (AREA)
- Complex Calculations (AREA)
- Memory System (AREA)
Abstract
【課題】畳み込みニューラルネットワークを構成する複数の中間層についての演算を、バンク単位で読み書き状態を切り替えることができる複数のバンクを有するメモリを用いて行う半導体装置及びメモリアクセス設定方法を提供する。【解決手段】半導体装置1は、畳み込みニューラルネットワークを構成する複数の中間層についての演算を、バンク単位で読み書き状態を切り替えることができる複数のバンクを有するメモリ24,25を用いて行うアクセラレータ部11を有する。さらに、アクセラレータ部11が、畳み込みニューラルネットワークを構成する中間層の入力データと出力データのそれぞれの転送量と転送速度に応じて、中間層の入力データまたは出力データを格納するバンクの読み書き状態の割り当てを切り換えるようにメモリ制御部23を制御するネットワークレイヤ制御部20を有する。【選択図】図4
Description
本発明は半導体装置及びメモリアクセス設定方法に関し、例えば畳み込みニューラルネットワークに関する処理を行う半導体装置及びメモリアクセス設定方法に関する。
近年、画像認識の分野において、ニューラルネットワークを用いた認識処理が多く提案されている。この画像処理の分野において利用されるニューラルネットワークの1つに畳み込みニューラルネットワーク(CNN:Convolution Neural Network)がある。この畳み込みニューラルネットワークに関する技術の一例が特許文献1に開示されている。
特許文献1に記載の演算処理装置では、階層的に接続された複数の処理層による演算を実行する演算処理装置が、演算部、外部メモリ、バッファを備える。そして、バッファは、データを書き出す場合には、当該データの一部をデータ保持領域に保持し、データ保持領域に保持しなかった残りのデータを、リングバッファ領域を介して先入先出方式により外部メモリに書き出す。また、バッファは、データを読み出す場合には、データ保持領域に保持されているデータを演算部に読み出し、データ保持領域に保持されていない残りのデータを、リングバッファ領域を介して先入先出方式により演算部に読み出す。
畳み込みニューラルネットワークでは、処理層毎に入出力データの転送量と転送速度に大きな変動が生じる特徴がある。しかし、特許文献1に記載の演算処理装置では、バッファの容量が一定である。そのため、特許文献1に記載の演算処理装置では、必要なデータ転送量、或いは、必要なデータ転送速度が増減した場合に、バッファ容量不足の発生、或いは、データの転送速度不足による外部メモリへのアクセスの発生があると、これらの変動により処理の停滞が発生して演算処理速度が低下するという問題があった。
その他の課題と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
一実施の形態によれば、半導体装置は、畳み込みニューラルネットワークを構成する複数の中間層についての演算を、バンク単位で読み書き状態を切り替えることができる複数のバンクを有するメモリを用いて行うアクセラレータ部を有し、前記アクセラレータ部が、畳み込みニューラルネットワークを構成する中間層の入力データと出力データのそれぞれの転送量と転送速度に応じて、中間層の入力データまたは出力データを格納するバンクの読み書き状態の割り当てを切り換えるようにメモリ制御部を制御するネットワークレイヤ制御部を有する。
前記一実施の形態によれば、半導体装置は、中間層毎にバンクの読み書き状態の割り当てを変更することで、高い処理速度を維持することができる。
説明の明確化のため、以下の記載及び図面は、適宜、省略、及び簡略化がなされている。また、様々な処理を行う機能ブロックとして図面に記載される各要素は、ハードウェア的には、CPU(Central Processing Unit)、メモリ、その他の回路で構成することができ、ソフトウェア的には、メモリにロードされたプログラムなどによって実現される。したがって、これらの機能ブロックがハードウェアのみ、ソフトウェアのみ、またはそれらの組合せによっていろいろな形で実現できることは当業者には理解されるところであり、いずれかに限定されるものではない。なお、各図面において、同一の要素には同一の符号が付されており、必要に応じて重複説明は省略されている。
また、上述したプログラムは、様々なタイプの非一時的なコンピュータ可読媒体を用いて格納され、コンピュータに供給することができる。非一時的なコンピュータ可読媒体は、様々なタイプの実体のある記録媒体を含む。非一時的なコンピュータ可読媒体の例は、磁気記録媒体(例えばフレキシブルディスク、磁気テープ、ハードディスクドライブ)、光磁気記録媒体(例えば光磁気ディスク)、CD−ROM(Read Only Memory)、CD−R、CD−R/W、半導体メモリ(例えば、マスクROM、PROM(Programmable ROM)、EPROM(Erasable PROM)、フラッシュROM、RAM(Random Access Memory))を含む。また、プログラムは、様々なタイプの一時的なコンピュータ可読媒体によってコンピュータに供給されてもよい。一時的なコンピュータ可読媒体の例は、電気信号、光信号、及び電磁波を含む。一時的なコンピュータ可読媒体は、電線及び光ファイバ等の有線通信路、又は無線通信路を介して、プログラムをコンピュータに供給できる。
実施の形態1にかかる半導体装置では、処理の1つとして畳み込みニューラルネットワークを用いた画像認識処理を行う。そこで、この畳み込みニューラルネットワークの処理について説明する。図1に実施の形態1にかかる畳み込みニューラルネットワークの処理の概要を説明するブロック図を示す。なお、図1に示す例は、畳み込みニューラルネットワークの処理の一例を示すものであり、畳み込みニューラルネットワークには他の形式もある。
図1に示すように、畳み込みニューラルネットワークは、処理対象画像データにフィルタを適用して処理対象画像の特徴点を抽出する畳み込み処理層と、2次元配列の画像データを1次元配列データに変換し、処理対象画像データが何を示しているものかを判断する全結合層とを有する。
畳み込み処理層は、複数の層のそれぞれで異なるフィルタを適用した畳み込み積和演算を行う。また、図1に示す例では、畳み込み処理層が第1レイヤから第3レイヤを有し、第1レイヤから第3レイヤに向かって順次処理を進める。また、各レイヤの入出力データはメモリを介して伝達される。図1に示す例では、第1レイヤにおいて、畳み込み積和演算P1とプーリング処理P2とが行われ、第2レイヤにおいては畳み込み演算P3のみが行われ、第3レイヤにおいて畳み込み積和演算P4とプーリング処理P5が行われる。
また、この畳み込み処理層の各レイヤの処理により入出力データの転送量と転送速度が大きく変動する。例えば、第1レイヤでは、入力データが転送量50kB、転送速度3.8GB/sで入力され、出力データが転送量200kBで転送速度20GB/sで出力される。第2レイヤでは、入力データが転送量200kB、転送速度20GB/sで入力され、出力データが転送量100kBで転送速度20GB/sで出力される。第3レイヤでは、入力データが転送量100kB、転送速度20GB/sで入力され、出力データが転送量200kBで転送速度50GB/sで出力される。
全結合層では、畳み込み処理層で生成された2次元配列データに対して全結合ニューラルネットワーク(FCNN:Fully Connected Neural Network)を用いた演算が行われる。図1に示す例では、全結合層は3つのレイヤを有し、2つの全結合ニューラルネットワークの処理と、1つのソフトマックス関数による判断処理が行われる。ソフトマックス関数は、活性化関数の1つであり、所定の値以上の入力値を強調し、所定の値よりも小さい入力値を減衰させる。そして、全結合層の出力値は、処理対象画像データがどのような内容の画像である可能性が最も高いかを示す値となる。図1に示す例では、処理対象画像データが手書き文字で表された数字の“2”である可能性が最も高い(数字の“2”である可能性が81%)であるとの結果を示している。
実施の形態1にかかる半導体装置では、畳み込み処理層の演算をアクセラレータ部により行い、全結合層の演算を汎用的な演算を行う主演算部(例えば、CPU)にて行う。実施の形態1にかかる半導体装置では、このようなアクセラレータ部と主演算部の2つの演算部により畳み込みニューラルネットワークによる画像認識処理を行うが、アクセラレータ部による畳み込み処理において効率的なハードウェアリソースの利用を行うための構成を有することに特徴の1つを有する。そこで、以下では、第1レイヤから第3レイヤで行われる処理についてより詳細に説明する。
図2に実施の形態1にかかる畳み込みニューラルネットワークの畳み込み処理層の処理の概要を説明するフロー図を示す。図2に示す例は、畳み込み処理層の1つのレイヤの処理を示したものである。なお、図1に示した第2レイヤでは、図2に示したプーリング処理は行われない。また、畳み込み処理層に属する各レイヤでは、畳み込み積和演算後に所定の活性関数を用いた活性化処理が行われることがあるが、図2では、この活性化処理については省略した。
図2に示すように畳み込み処理層では、1つのレイヤ内で畳み込み積和演算とプーリング処理が行われる。畳み込み演算処理では、例えば、縦横の画素数がそれぞれ28画素の処理対象画像データに、縦横の画素数がそれぞれ5画素のフィルタを重ね合わせ、重ね合わせた時に同一の位置にある画素の値を積算し、フィルタ中の全画素の積算値を全て加算して新たな画素値を得る。この畳み込み積和演算処理について、図3を参照して、より詳細に説明する。
図3は、実施の形態1にかかる畳み込みニューラルネットワークの畳み込み積和演算を説明する図である。図3では、6×6の処理対象画像データに3×3のフィルタを適用する例である。図3に示すように畳み込み積和演算では、処理対象画像データにフィルタを重ね合わせる。そして、重ね合わせた状態で同一の位置にある画素値同士の積算値を算出し、フィルタ中の全画素の積算値を全て加算することで畳み込み積和処理後の画像の1画素分の値を算出する。そして、1つの畳み込み演算処理では、処理対象画像データの全画素とフィルタが重ね合わせられるように、処理対象画像データにフィルタを重ね合わせる位置を1画素ずつずらす。そして、フィルタをずらした位置のそれぞれにおいて積和演算値を計算して、畳み込み積和処理後画像を生成する。このように、畳み込み積和演算では、膨大な回数の積算と加算とが行われる。このような決まった演算を膨大な回数行う場合はアクセラレータのような特定の演算をハードウェア的に処理することで演算時間を短縮することができる。なお、フィルタを重ね合わせる位置のずらし量(stride)は、1画素に限らず、ずらし量は任意に設定することができる。
そして、図2に示す例では、フィルタが20枚準備されている。畳み込み積和演算処理では、フィルタのそれぞれについて、畳み込み演算処理後画像を生成する。そのため、畳み込み演算処理後画像は、フィルタの枚数分生成される。
また、図2に示すように、畳み込み処理層のレイヤでは、プーリング処理が行われる。図2に示す例では、プーリング処理の手法として、マックスプーリング処理を採用した。マックスプーリング処理は、例えば、畳み込み積和処理後画像の所定の領域を選択し、選択した領域中の最大値を、それらの画素の代表値とする画像データの圧縮方法である。
上述したように、畳み込みニューラルネットワークの畳み込み処理層では、各レイヤの処理により、レイヤ間で伝達されるデータの転送量の転送速度に大きな変動が生じる。そのため、畳み込み処理層が利用するメモリを一定の容量とする場合、処理能力を高めるためには各レイヤで伝達されるデータの最大転送量と最大転送速度を考慮したメモリの容量と転送速度を設定しなければならない。しかしながら、最大転送量と最大転送速度を考慮したメモリは、回路面積も大きく消費電力も高くなり、実際には実装できない可能性がある。そこで、実施の形態1にかかる半導体装置では、各レイヤの処理に合わせて、利用するメモリの容量と転送速度を可変することで、メモリの容量とメモリ内のバンク1つ当たりの転送速度を最大転送量と最大転送速度より小さく設定しながら、メモリの最大能力としては最大転送量と最大転送速度に十分対応することが出来る構成を有する。以下で、実施の形態1にかかる半導体装置について詳細に説明する。
図4に実施の形態1にかかる半導体装置1のブロック図を示す。図4に示すように、実施の形態1にかかる半導体装置1は、主演算部10、アクセラレータ部11、画像入力部12、ローカルバス14を有する。なお、図4では、半導体装置1が利用する外付け部品の1つとして外部メモリEX_MEMを示した。この外部メモリEX_MEMは、例えば、フラッシュメモリ等の不揮発性メモリ、或いは、DDR−DRAM(Double Data Rate - Dynamic Random Access Memory)等の揮発性メモリである。
主演算部10は、プログラムを実行可能なCPU等の演算部である。主演算部10は、実行するプログラムの1つにおいて、外部メモリEX_MEMから読み込むユーザー設定情報に基づきアクセラレータ部11に与える動作設定情報SET2を生成する。なお、動作設定情報SET2は一度生成した後に外部メモリEX_MEMに格納する、予め他の装置で生成して外部メモリEX_MEMに格納する等の処理を行い、半導体装置1の起動時に外部メモリEX_MEMから直接アクセラレータ部11に読み込ませても良い。なお、図4では外部メモリEX_MEMから読み出した動作設定情報を動作設定情報SET1とした。つまり、動作設定情報SET1と動作設定情報SET2は同じものである。ここで、動作設定情報SET1を外部メモリEX_MEMに格納しておくことで、起動するたびに動作設定情報SET2を生成する必要がなく、起動時間を短縮することができる。また、主演算部10は、実行するプログラムの1つによりアクセラレータ部11の出力結果に基づき入力画像を判断する全結合層に関する処理を行う。主演算部10は、全結合層に関する演算を行う場合、外部メモリEX_MEMを利用する。
アクセラレータ部11は、畳み込みニューラルネットワークに関する処理のうち入力画像に所定のフィルタを適用した畳み込み演算を行う畳み込み処理層に関する処理を行う。また、アクセラレータ部11は、ローカルバス14により主演算部10、画像入力部12外部メモリEX_MEMと通信可能なように接続されている。
画像入力部12は、半導体装置1の外部から処理対象画像データを読み出してアクセラレータ部11に伝達する。
ここで、アクセラレータ部11について詳細に説明する。アクセラレータ部11は、ネットワークレイヤ制御部20、レイヤ演算部21、22、メモリ制御部23、メモリ24、25を有する。
ネットワークレイヤ制御部20は、畳み込みニューラルネットワークを構成する中間層の入力データと出力データのそれぞれの転送量と転送速度に応じて、中間層の入力データまたは出力データを格納するメモリ24、25内に設けられるバンクの読み書き状態の割り当てを切り換えるようにメモリ制御部23を制御する。また、ネットワークレイヤ制御部20は、複数の中間層の連続する中間層のうち前段に配置される中間層を第1の中間層、後段に配置される中間層を第2の中間層とした場合、第1の中間層に関する処理において書き込み可能状態を割り当てたバンクを第2の中間層に関する処理において読み出し可能状態に割り当てるようにメモリ制御部23を制御する。
より具体的には、ネットワークレイヤ制御部20は、入力データと出力データに関する転送量が増加したことに伴い、同一の読み書き属性に割り当てるバンクの数を増加させ、入力データと出力データに関する転送速度が増加したことに伴い、並列してアクセス可能なバンクの数を増加させる。別の観点では、ネットワークレイヤ制御部20は、中間層に入力される入力データの転送量が1つのバンクの容量よりも大きい場合は総容量が転送量よりも大きな容量を有するように読み出し可能状態とするバンクの数を設定する。また、ネットワークレイヤ制御部20は、中間層から出力される出力データの転送量が1つのバンクの容量よりも大きい場合は総容量が転送量よりも大きな容量を有するように書き込み可能状態とするバンクの数を設定する。
また、ネットワークレイヤ制御部20は、連続して配置される中間層の前段の中間層の出力データ、又は、後段の中間層の入力データの転送速度がメモリ制御部23とバンクとを接続するバスの1バンク当たりのバス転送速度よりも大きい場合は1つのバンクに関する転送速度がバス転送速度よりも小さくなるように読み出し可能状態とするバンクの数を設定する。ネットワークレイヤ制御部20は、中間層から出力される出力データの転送速度がメモリ制御部23とバンクとを接続するバスのバス転送速度よりも大きい場合は1つのバンクに関する転送速度がバス転送速度よりも小さくなるように書き込み可能状態とするバンクの数を設定する。つまり、ネットワークレイヤ制御部20は、連続する中間層の間でデータの受け渡しを行うバンクへの書き込み時の転送量及び転送速度と、読み出し時の転送量及び転送速度と、の両方を満たすようにバンクの書き込み状態を設定する。
レイヤ演算部21、22は、同じ処理を行う処理ブロックである。レイヤ演算部21、22は、それぞれ、畳み込みニューラルネットワークを構成する複数の中間層について中間層毎に処理対象画像データの要素に対する畳み込み積和演算を含む演算処理を行う。より具体的には、レイヤ演算部21、22は、一例としては、処理対象画像データにフィルタを適用して新たな画像(いわゆる、特徴マップ)を生成する畳み込み積和演算と、畳み込み積和演算により生成された特徴マップに対して所定の活性化関数を適用して各画素値を活性化させる活性化処理と、特徴マップを圧縮するプーリング処理とを行う。
メモリ制御部23は、メモリ24、25内のアクセス単位であるバンク毎に読み出し可能状態と書き込み可能状態とを切り替えると共にレイヤ演算部21、22とメモリ24、25とのデータの送受信をルーティングする。
メモリ24、25は、メモリ制御部23を介してレイヤ演算部21、22により利用される記憶領域である。メモリ24、25は、畳み込みニューラルネットワークを構成する中間層におけるレイヤ演算部21、22の入出力データを格納し、それぞれが独立して読み書き可能な複数のバンクから構成される。
図4に示す例では、アクセラレータ部11において2つのレイヤ演算部でネットワークレイヤ制御部20とメモリ制御部23を共有する。レイヤ演算部は、1つの演算部で処理できる画像の枚数が決まっている。そこで、処理対象画像の枚数が多くなったときには、複数のレイヤ演算部を用いて多くの画像を並列して処理する。つまり、アクセラレータ部11では、処理対象画像の枚数に応じて並列して動作させるレイヤ演算部の数を増減させる。これにより、実施の形態1にかかる半導体装置1では、処理する画像の枚数が少ない場合には動作させるレイヤ演算部の数を減らして消費電力を抑制する。
また、実施の形態1にかかる半導体装置1は、2つのレイヤ演算部で1組のネットワークレイヤ制御部20とメモリ制御部23を共有する。このような構成を取ることで、実施の形態1にかかる半導体装置1は、レイヤ演算部間でメモリの利用領域、或いは、データの干渉防止を容易に行うことができる。
実施の形態1にかかる半導体装置1では、メモリ内のバンクの割り当て及び利用方法に特徴の1つがあるため、レイヤ演算部及びメモリについては、それぞれ1つのみを示して説明を行うことで実施の形態1にかかる半導体装置1の動作の説明を簡潔かつ明確にする。なお、レイヤ演算部22は、レイヤ演算部21と同じ動作を行い、メモリ25はメモリ24と同じ構成及び動作を行うものとする。
ここで、アクセラレータ部11についてより詳細に説明する。図5に実施の形態1にかかるアクセラレータ部11のメモリ24の構成を説明するブロック図を示す。図5に示すように、メモリ24は、複数のバンクを有する。図5に示す例では、メモリ24は、バンク311〜31n(nはバンク数を表す整数、以下同じ)を有する。バンク311〜31nは、それぞれ、独立してメモリ制御部23と通信可能である。また、バンク311〜31nは、それぞれ、独立して読み出し可能状態(リード状態)と書き込み可能状態(ライト状態)とを切り替えることが可能である。メモリ制御部23は、バンク単位でリードライト指示信号(図5のR/W指示信号)を与えて、バンク単位で読み書き状態を制御する。各バンクに用いられるメモリは、例えば、SRAM(Static Random Access Memory)等の高速アクセスが可能な記憶素子を用いる。
続いて、図6に実施の形態1にかかるアクセラレータ部11のネットワークレイヤ制御部20及びメモリ制御部23の構成を説明するブロック図を示す。
ネットワークレイヤ制御部20には、演算処理情報CAL_SETとメモリ設定情報MEM_SETを含む動作設定情報SET1(又は動作設定情報SET2、以下の説明では動作設定情報SET2に基づいてネットワークレイヤ制御部20が動作するものとして説明する)が与えられる。演算処理情報CAL_SETは、中間層毎の、レイヤ演算部21が実行する畳み込み積和演算、レイヤ演算部21で適用される活性化関数、レイヤ演算部21で適用されるプーリング処理の種類を示す情報が含まれる。ネットワークレイヤ制御部20は、この演算処理情報CAL_SETに基づきレイヤ演算部21を制御する。また、メモリ設定情報MEM_SETは、中間層毎の、バンクを読み書きのいずれの状態とするかを指定する設定値、バンクに対して順次アクセスとするか並列アクセスとするかを記述した設定値が含まれる。そして、ネットワークレイヤ制御部20は、メモリ設定情報MEM_SETに基づきメモリ制御部23を制御する。具体的には、ネットワークレイヤ制御部20及びメモリ制御部23の構成及び動作は以下のようになる。
図6に示すように、ネットワークレイヤ制御部20は、リスト解析処理部33、演算制御部34、バンク管理部35を有する。リスト解析処理部33は、動作設定情報SET2を受信すると、受信した動作設定情報を解析して、動作設定情報に含まれる演算処理情報CAL_SETとメモリ設定情報MEM_SETとを抽出する。そして、リスト解析処理部33は抽出した演算処理情報CAL_SETを演算制御部34に出力し、メモリ設定情報MEM_SETをバンク管理部35に出力する。ここで、リスト解析処理部33は、レイヤ演算部21の処理が完了したことを通知するビジー信号BS1とメモリ制御部23の処理が完了したことを通知するビジー信号BS2との両方を監視する。また、詳しくは後述するが、動作設定情報SET2には、畳み込み層のレイヤ毎に演算処理情報CAL_SET及びメモリ設定情報MEM_SETが記述される。リスト解析処理部33は、ビジー信号BS1、BS2が両方ビジー状態解除となったことに応じて、演算制御部34に与える演算処理情報CAL_SETのレイヤ及びバンク管理部35に与えるメモリ設定情報MEM_SETのレイヤを切り替える。
演算制御部34は、リスト解析処理部33から受信した演算処理情報CAL_SETに基づき演算処理情報CAL_SET中に記載された設定を反映した物理制御信号をレイヤ演算部21に与える。バンク管理部35は、リスト解析処理部33から受信したメモリ設定情報MEM_SETに基づきメモリ設定情報MEM_SET中に記載された設定を反映した物理制御信号をメモリ制御部23のアクセス制御部36に与える。
具体的には、演算制御部34及びバンク管理部35は、アドレスデコーダである。リスト解析処理部33から出力される演算処理情報CAL_SET及びメモリ設定情報MEM_SETには、設定値を与えるレジスタのアドレスとして論理アドレスが記載されている。そこで、実施の形態1にかかるアクセラレータ部11では、演算制御部34及びバンク管理部35を用いて、演算処理情報CAL_SET及びメモリ設定情報MEM_SETに記載されている論理アドレスを物理アドレスに変換する。そして、演算制御部34は、物理アドレスに基づきレイヤ演算部21のレジスタに演算処理情報CAL_SET(REG)で示された設定値を書き込む。また、バンク管理部35は、変換した物理アドレスに基づきメモリ制御部23のレジスタにメモリ設定情報MEM_SET(REG)で示された設定値を書き込む。なお、演算処理情報CAL_SET(REG)は、物理アドレスに各種設定値が対応付けられた演算処理情報CAL_SETであり、設定値の内容としては演算処理情報CAL_SETと同じものである。また、メモリ設定情報MEM_SET(REG)は、物理アドレスに各種設定値が対応付けられたメモリ設定情報MEM_SETであり、設定値の内容としてはメモリ設定情報MEM_SETと同じものである。
メモリ制御部23は、アクセス制御部36、選択回路37を有する。アクセス制御部36は、バンク管理部35から与えられたメモリ設定情報MEM_SETに基づき選択回路37が仲介するデータの転送経路を設定する。選択回路37は、レイヤ演算部21に入力データの転送元となるバンクを選択し、レイヤ演算部21から出力される出力データの転送先となるバンクを選択する。そして、メモリ制御部23は、アクセス制御部36及び選択回路37により形成されたデータの転送経路でレイヤ演算部21とメモリ24中のバンクとのデータの送受信を行う。
続いて、レイヤ演算部21について詳細に説明する。図7に実施の形態1にかかるレイヤ演算部21のブロック図を示す。なお、レイヤ演算部22はレイヤ演算部21と同じ構成であるため、ここではレイヤ演算部21について説明を行う。また、レイヤ演算部21には複数の形態が考えられるため、図7では2つの回路形態を示した。図7の上図が第1の形態となるレイヤ演算部21aであり、図7の下図が第2の形態となるレイヤ演算部21bである。
レイヤ演算部21aは、畳み込み積和演算部40、活性化処理部41、プーリング処理部42を有する。畳み込み積和演算部40は、処理対象画像データに所定の画像サイズのフィルタを重ね合わせ、当該重ね合わせ箇所をずらしながら、各重ね合わせ場所において、処理対象画像データの画素値とフィルタの画素値との積を算出し、フィルタに含まれる画素に関する積の総和を演算して積和演算結果画像を生成する。なお、畳み込み積和演算部40で用いるフィルタ、フィルタの種類の数を示す入力チャンネル数、出力される積和演算結果画像の数を示す出力チャンネル数は、演算処理情報CAL_SETにより指定される。
活性化処理部41は、畳み込み積和演算部40とプーリング処理部42との間に設けられる。活性化処理部41は、積和演算結果画像に含まれる画素値に対して画素値が予め設定した条件を満たさない場合は画素値を予め決定した規定値に置き換える所定の活性化関数を適用して、積和演算結果画像の活性化処理を行う。なお、畳み込み積和演算部40で行う活性化処理で利用される活性化関数の種類は演算処理情報CAL_SETにより指定される。活性化関数の一例としては、ReLU(Rectified Linear Unit, Rectifier, 正規化線形関数)がある。
プーリング処理部42は、積和演算結果画像の画素を所定サイズ毎にグルーピングし、グルーピングを行った画素中の代表値を新たな画素値とし、新たな画素値から構成される処理後画像を生成する。なお、プーリング処理にてどのようなプーリング方法が用いられるかは演算処理情報CAL_SETにより設定される。プーリング方法の一例として、マックスプーリング処理がある。
また、図7の下図に示すレイヤ演算部21bは、レイヤ演算部21aに第1の選択回路(例えば、選択回路43)及び第2の選択回路(例えば、選択回路44)を追加したものである。選択回路43は、入力データを選択的に畳み込み積和演算部40に渡す。選択回路44は、プーリング処理部42から出力される出力データを選択的にメモリ制御部23に出力する。この選択回路43、44を用いることで、同時に処理できるチャネル数は減るが、メモリ制御部23からレイヤ演算部21の間の配線を削減することができる。図7では、選択回路43、44をレイヤ演算部21内に備える構成例を示したが、メモリ制御部23の選択回路37に設けてもよい。また、畳み込みニューラルネットワークの処理は一般的に層が進むにつれデータ転送量が少なくなる。そこで、選択回路37において、複数のチャネルの結果をビット結合し、まとめて一つのチャネルで出力する方法もある。
続いて、実施の形態1にかかる半導体装置1の動作について説明する。まず、図8に実施の形態1にかかる半導体装置1の畳み込み演算処理を開始するまでの動作を説明するシーケンス図を示す。図8に示すように、実施の形態1にかかる半導体装置1では、起動するとまず、主演算部10及びネットワークレイヤ制御部20において初期設定処理を行う(ステップS11、S21)。この初期設定処理では、回路を予め指定された状態にするリセット処理を行う。
次いで、主演算部10は、内蔵メモリ13から動作条件を読み出す動作条件入力処理を行う(ステップS12)。なお、ステップS12の処理では、動作条件を外部から取得しても良い。続いて、主演算部10は、入力された動作条件に従って、制御コマンドリスト(例えば、動作設定情報SET2)を生成する(ステップS14)。そして、主演算部10は、ステップS14で生成された動作設定情報SET2をネットワークレイヤ制御部20に送信し(ステップS14)、ネットワークレイヤ制御部20は、主演算部10から動作設定情報SET2を受信する(ステップS22)。
ネットワークレイヤ制御部20は、動作設定情報SET2を受信すると受信した動作設定情報SET2をリスト解析処理部33において解析する制御コマンドリスト解析処理を行う(ステップS23)。ネットワークレイヤ制御部20は、ステップS23の解析処理の結果に基づき演算制御部34及びバンク管理部35がレイヤ演算部21、22及びメモリ制御部23のレジスタに動作設定値を設定するレジスタ設定処理を行う(ステップS24)。その後、ネットワークレイヤ制御部20は、主演算部10に準備完了通知を送信する(ステップS25)。
主演算部10は、ネットワークレイヤ制御部20から準備完了通知を受信すると(ステップS15)、ネットワークレイヤ制御部20に動作開始指示を送信する(ステップS16)。そして、動作開始指示を主演算部10から受信したネットワークレイヤ制御部20は、畳み込みニューラルネットワークの処理を開始する(ステップS26)。
ここで、実施の形態1にかかる半導体装置1では、ネットワークレイヤ制御部20に与える制御コマンドリストに基づきアクセラレータ部11の動作が決まるため、この制御コマンドリスト(例えば、動作設定情報)の生成方法について詳細に説明する。そこで、図9に実施の形態1にかかる半導体装置1における動作設定情報を説明する図を示す。
図9では、主演算部10が動作設定情報SET2を生成する例を示している。図9では、主演算部10から伸びる矢印の先に動作設定情報SET2の一例を示した。主演算部10は、外部メモリEX_MEMに格納された動作条件情報とハードウェア構成情報とに基づき動作設定情報SET2を生成する。動作条件情報は、半導体装置1を利用するユーザーから与えられる情報であり、外部メモリEX_MEMに格納される。この動作条件情報には、ネットワーク構成に関する情報と、半導体装置1に入力される入力画像のサイズを指定する入力画像サイズ情報が少なくとも含まれる。ハードウェア構成情報は、例えば、半導体装置1を提供するメーカー側で準備する情報であり、外部メモリEX_MEMに格納される。ハードウェア構成情報には、メモリ24内のバンクとメモリ制御部23とを接続するバスのバンク毎のバス帯域情報(図9のバス帯域幅)と、メモリ24のバンクの容量及び個数を示すメモリ構成情報(図9のメモリ構成)と、が少なくとも含まれる。
続いて、主演算部10が生成する動作設定情報SET2について図9に示した例を参照して説明する。図9に示すように、動作設定情報SET2には、メモリ設定情報MEM_SETと演算処理情報CAL_SETが含まれる。図9では、表形式を用いて動作設定情報SET2を表したが動作設定情報SET2は、例えば、ソースコードのような形式で表されていてもよい。図9に示す例では、縦方向に動作設定情報SET2に含まれる設定パラメータを示し、横方向に各設定パラメータの値を示した。また、図9に示すように、動作設定情報SET2は、畳み込み処理層毎に各設定パラメータが記述される。さらに、図9に示す例では、動作においてアクセラレータ部11がどのメモリを利用し、利用するメモリ内のバンクが有する記憶容量を示す初期設定値を示した。
続いて、図9に示した各設定パラメータについて説明する。メモリ設定情報MEM_SETには、設定パラメータとして、バンクサイズ、転送元バンク割り当て、転送元アクセス方法、転送先バンク割り当て及び転送先アクセス方法が少なくとも含まれる。バンクサイズは、メモリ24に含まれるバンクのうち畳み込み処理層の中間層の処理で利用するバンクの番号及び利用するバンクの記憶容量を示す設定パラメータである。主演算部10は、ハードウェア構成情報のメモリ構成情報と、動作条件情報のネットワーク構成及び入力画像サイズから中間層の演算で必要になるデータの最大容量と最大転送帯域とを勘案して、バンクサイズで指定するバンクの番号(或いは個数)を決定する。また、主演算部10は、メモリ構成情報に基づき、利用するバンクの記憶容量を決定する。
転送元バンク割り当ては、初期設定値においては転送元メモリとして利用するメモリを指定する設定パラメータである。また、転送元バンク割り当ては、各中間層の設定値(図9の第1レイヤ設定値から第3レイヤ設定値)においては、各レイヤの処理で利用するバンクを指定する設定パラメータである。この転送元バンク割り当ては、パラメータ生成の対象となる対象レイヤの入力データの転送量と、対象レイヤの前段に位置する前段レイヤの出力データの転送量と、とを満足するようにバンクの個数を決定する。また、転送元バンク割り当てに記述するバンクの番号は、対象レイヤの処理を行う時点で空いているバンクを指定する。
また、転送元バンク割り当てに記述するバンクの数は、データの転送速度によっても増減する。例えば、対象レイヤの入力データの転送速度と前段レイヤの出力データの転送速度のいずれか一方がバンク1つ当たりのバスの最大帯域を上回っていれば、バンク1つ当たりの転送速度がバスの最大帯域を下回るようにアクセスするバンクの数を増やす。
ここで、実施の形態1にかかる半導体装置1におけるデータの転送量について説明する。畳み込みニューラルネットワークでは、各中間層において適用されるフィルタが予め判明しており、入力される画像データのデータサイズも既知である。そして、プーリング処理の方法もネットワーク構成情報から明らかである。つまり、畳み込み積和演算後にどの程度データが圧縮されるかも予め把握することができる。このようなことから、実施の形態1にかかる半導体装置1では、各中間層に入力される入力データのデータサイズ、各中間層で適用されるフィルタの種類と、プーリング処理の圧縮率から出力データのデータサイズを知ることができる。そこで、実施の形態1にかかる半導体装置1では、この出力データのデータサイズは、出力データの転送量及び入力データの転送量として用いる。
また、実施の形態1にかかる半導体装置1における転送速度について説明する。実施の形態1にかかる半導体装置1では、入力データの転送速度は、レイヤ演算部21の入力データのデータ処理速度と同等の意味を有する。また、出力データの転送速度は、レイヤ演算部21の出力データを生成するためのデータ処理速度を有する。より具体的には、レイヤ演算部21に入力される画像データにフィルタを適用した畳み込み積和演算を行う。入力データの転送速度は、入力データのデータ容量(例えば、転送量)を、メモリ24から読み出した入力データに対してこの畳み込み積和演算を行うために必要な時間で除算することで算出することが出来る。また、レイヤ演算部21では、畳み込み積和演算、活性化処理及びプーリング処理を経て出力データが生成される。出力データの転送速度は、出力データの容量(例えば、転送量)を、これらの処理を経て出力データの出力が開始されてから出力データの出力が完了するまでの時間で除算することで算出出来る。つまり、データの転送速度は、レイヤ演算部21の入力処理速度、或いは、出力処理速度と捉えることができる。このようなことから、本明細書では、レイヤ演算部21の入力データのデータ処理速度及び出力データのデータ処理速度の指標として、データの転送速度との表現を用いる。
転送元アクセス方法は、転送元バンクに割り当てたバンクに対して順次アクセスを行うか、並列アクセスを行うかを指定する設定パラメータである。転送元アクセス方法は、パラメータ生成の対象となる対象レイヤの入力データの転送速度と、対象レイヤの前段に位置する前段レイヤの出力データの転送速度と、とを満足するようにバンクへのアクセス方法を決定する。具体的には、対象レイヤの入力データの転送速度と前段レイヤの出力データの転送速度のいずれか一方がバンク1つ当たりのバスの最大帯域を上回っていれば、バンク1つ当たりの転送速度が最大転送速度を下回るように並列アクセスするバンクの数を増やす。このような並列アクセスを行う場合、転送元アクセス方法は並列アクセスとなる。また、対象レイヤの入力データの転送速度と前段レイヤの出力データの転送速度の両方がバンク1つ当たりのバスの最大帯域を下回って、対象レイヤの転送元アクセス方法は、順次アクセスとなる。
転送先バンク割り当ては、初期設定値においては転送先メモリとして利用するメモリを指定する設定パラメータである。また、転送先バンク割り当ては、各中間層の設定値(図9の第1レイヤ設定値から第3レイヤ設定値)においては、各レイヤの処理で利用するバンクを指定する設定パラメータである。この転送先バンク割り当ては、パラメータ生成の対象となる対象レイヤの出力データの転送量と、対象レイヤの後段に位置する後段レイヤの入力データの転送量と、とを満足するようにバンクの個数を決定する。また、転送先バンク割り当てに記述するバンクの番号は、対象レイヤの処理を行う時点で空いているバンクを指定する。
また、転送先バンク割り当てに記述するバンクの数は、データの転送速度によっても増減する。例えば、対象レイヤの出力データの転送速度と後段レイヤの入力データの転送速度のいずれか一方がバンク1つ当たりのバスの最大帯域を上回っていれば、バンク1つ当たりの転送速度がバスの最大帯域を下回るようにアクセスするバンクの数を増やす。
転送先アクセス方法は、転送先バンクに割り当てたバンクに対して順次アクセスを行うか、並列アクセスを行うかを指定する設定パラメータである。転送先アクセス方法は、パラメータ生成の対象となる対象レイヤの出力データの転送速度と、対象レイヤの後段に位置する後段レイヤの入力データの転送速度と、とを満足するようにバンクへのアクセス方法を決定する。具体的には、対象レイヤの出力データの転送速度と後段レイヤの入力データの転送速度のいずれか一方がバンク1つ当たりのバスの最大帯域を上回っていれば、バンク1つ当たりの転送速度が最大転送速度を下回るように並列アクセスするバンクの数を増やす。このような並列アクセスを行う場合、転送先アクセス方法は並列アクセスとなる。また、対象レイヤの出力データの転送速度と後段レイヤの入力データの転送速度の両方がバンク1つ当たりのバスの最大帯域を下回って、対象レイヤの転送先アクセス方法は、順次アクセスとなる。
上記のような設定方法に従って、決定した各設定パラメータの一例が図9のメモリ設定情報MEM_SETである。なお、図9では、バンク番号を#とバンク番号を示す数字との組み合わせで示した。
具体的には、図9に示した例は、畳み込み処理層の処理で各バンクの記憶容量が128kBのメモリ24のバンク#1〜#4を利用する例である。そのため、メモリ設定情報MEM_SETの初期設定値では、バンクサイズにバンク#1〜#4がそれぞれ128kBの容量を有することが記述され、転送元バンク割り当てと、転送先バンク割り当てにメモリ24が記述される。
また、図9に示すメモリ設定情報MEM_SETの例では、第1レイヤ設定値として、転送元バンク割り当てにバンク#1、転送先バンク割り当てにバンク#3、#4、転送先アクセス方法に順次アクセスであることが記述される。なお、第1レイヤの転送元バンク割り当てに記述されるバンクは1つであるため、転送元アクセス方法は指定しなくても順次アクセスとなる。
第2レイヤ設定値としては、転送元バンク割り当てにバンク#3、#4、転送元アクセス方法に順次アクセスであること、転送先バンク割り当てにバンク#1、#2、転送先アクセス方法に並列アクセスであることが記述される。なお、第2レイヤ設定値の転送元バンク割り当て及び転送元アクセス方法は、第1レイヤ設定値の転送先バンク割り当て及び転送先アクセス方法と同じである。これは、第2レイヤが、第1レイヤでの処理結果に対して処理を行うためであり、前段レイヤの処理結果が格納されているバンクを次段レイヤの転送元バンクとすることが処理効率の向上に有利であるためである。
第3レイヤ設定値としては、転送元バンク割り当てにバンク#1、#2、転送元アクセス方法に並列アクセスであること、転送先バンク割り当てにバンク#3、#4、転送先アクセス方法に並列アクセスであることが記述される。なお、第3レイヤ設定値においても、第2レイヤ設定値と同様に、転送元バンク割り当て及び転送元アクセス方法が前段の第2レイヤ設定値の転送先バンク割り当て及び転送先アクセス方法と同じに設定される。
図9に示したメモリ設定情報MEM_SETの例に基づく動作は、図13〜図15を用いて更に具体的に説明する。
続いて、動作設定情報SET2に含まれる演算処理情報CAL_SETについて説明する。図9に示す例では、演算処理情報CAL_SETに含まれる設定パラメータとして、演算精度、入力チャンネル数(図9の入力ch数)、出力チャンネル数(図9の出力ch数)、フィルタ係数、活性化関数、プーリング方法を有する。この演算処理情報CAL_SETに含まれる設定パラメータは、動作条件情報のネットワーク構成により決定されるものである。
演算精度は、レイヤ演算部21における演算精度である。図9に示す例では、第1レイヤ設定値から第3レイヤ設定値まで、演算精度は8ビットの整数精度が指定される。
入力チャンネル数は、各レイヤに入力される処理対象画像(例えば、入力データ)の数を示すパラメータである。図9に示す例では、第1レイヤの入力チャネル数として“1”、第2レイヤの入力チャネル数として“16”、第3レイヤの入力チャネル数として“16”を指定している。
出力チャンネル数は、各レイヤから出力される画像データ(例えば、出力データ)の数を示すパラメータである。図9に示す例では、第1レイヤの出力チャネル数として“16”、第2レイヤの出力チャネル数として“16”、第3レイヤの出力チャネル数として“32”を指定している。畳み込みニューラルネットワークでは、入力データに適用するフィルタのグループ数に応じて出力チャネル数が決まる。
フィルタ係数は、フィルタのサイズ及び係数セットを特定する情報を示すパラメータである。図9に示す例では、第1レイヤのフィルタ係数として5×5の大きさを有するフィルタであって、係数セット1で指定されるフィルタ群が指定される。第2レイヤのフィルタ係数としては、3×3の大きさを有するフィルタであって、係数セット2で指定されるフィルタ群が指定される。第3レイヤのフィルタ係数としては、3×3の大きさを有するフィルタであって、係数セット3で指定されるフィルタ群が指定される。
活性化関数は、活性化処理部41で用いられる活性化関数を指定するパラメータである。図9に示す例では、第1レイヤから第3レイヤの全てでReLUを活性化関数として指定する。プーリング方法は、プーリング処理部42で行われるプーリング処理において適用されるプーリング方法を指定するパラメータである。図9で示す例では、第1レイヤから第3レイヤの全てでマックスプーリングをプーリング方法として指定する。
ここで、実施の形態1にかかる半導体装置1における転送元バンク割り当て、転送元アクセス方法、転送先バンク割り当て、及び、転送先アクセス方法の決定方法について詳細に説明する。
図10に実施の形態1にかかる半導体装置1の転送元バンク割り当て及び転送元アクセス方法を決定する手順を示すフローチャートを示す。図10に示すように、転送元バンクに関する設定を決める場合、前段レイヤの転送先バンク割り当て情報及び転送先アクセス方法情報の有無を確認する(ステップS30)。そして、前段レイヤの転送先バンク割り当て情報及び転送先アクセス方法情報が存在する場合は、転送元バンク割り当てと転送元アクセス方法に前段レイヤの転送元バンク割り当てと転送元アクセス方法を設定する(ステップS31)。
一方、ステップS30において、前段レイヤの転送先バンク割り当て情報及び転送先アクセス方法情報がないと判断された場合は、現レイヤの転送元バンク割り当て及び転送元アクセス方法を現レイヤの入力データの転送量及び転送速度に基づき決定する。
具体的には、まず現レイヤの入力データの転送量を格納可能な割り当てバンク数Ni1を算出する(ステップS32)。このステップS32では、入力データのデータサイズとバンク1つ当たりの記憶容量とを比較して、入力データを格納可能なバンク数を割り当てバンク数Ni1として算出する。
続いて、入力データの転送速度を満たす並列アクセス数Ni2を算出する(ステップS33)。このステップS33では、入力データの転送速度とバンク1つ当たりの最大帯域とを比較して、転送速度に対して最大帯域が大きければ並列アクセス数Ni2を1とし、転送速度に対して最大帯域が小さければ、転送速度を上回る値となるまで最大帯域を整数倍し、転送速度を上回る値となる倍数を並列アクセス数Ni2とする。
続いて、並列アクセス数Ni2が1より大きいか否かを判断する(ステップS34)。このステップS34において、並列アクセス数Ni2が1であれば、転送元アクセス方法を“順次”に設定する(ステップS35)。一方、ステップS34において、並列アクセス数Ni2が1よりも大きい場合、転送元アクセス方法を“並列”に設定する(ステップS36)。その後、割り当てバンク数Ni1と並列アクセス数Ni2との数を調整する。具体的には、割り当てバンク数Ni1と並列アクセス数Ni2と比較し、割り当てバンク数Ni1が並列アクセス数Ni2以上の値であれば、並列アクセス数Ni2の値を割り当てバンク数Ni1の値で更新することで割り当てバンク数Ni1と並列アクセス数Ni2とを一致させる(ステップS37、S38)。一方、割り当てバンク数Ni1が並列アクセス数Ni2よりも小さな値であれば、割り当てバンク数Ni1の値を並列アクセス数Ni2の値で更新することで割り当てバンク数Ni1と並列アクセス数Ni2とを一致させる(ステップS37、S39)。例えば、割り当てバンク数Ni1が3、並列アクセス数Ni2が2であった場合、ステップS37、S38の処理により並列アクセス数Ni2を2から3に更新する。また、別の例として、割り当てバンク数Ni1が1、並列アクセス数Ni2が2であった場合、ステップS37、S39の処理により割り当てバンク数Ni1を1から2に更新する。
図10で説明した処理を実行することで、レイヤ毎にレイヤ演算部に入力するデータの転送量を満たし、かつ、データの転送速度を満たす最小構成の転送元割り当てバンク数(割り当てバンク数Ni1)とアクセス方法が決定される。なお、並列アクセス数Ni2は、転送元バンクへのアクセス方法を順次アクセスとするか、並列アクセスとするかの決定に用いられる。また、並列アクセス数Ni2は、割り当てバンク数Ni1よりも大きければ、並列アクセスを行う場合の割り当てバンク数Ni1の補正に用いられる。また、並列アクセス数Ni2は、割り当てバンク数Ni1よりも小さければ、割り当てバンク数Ni1に一致するように補正される。
続いて、図11に実施の形態1にかかる半導体装置1の転送先バンク割り当て及び転送先アクセス方法を決定する手順を示すフローチャートを示す。図11に示すように、転送先バンクに関する設定を決める場合、まず、現レイヤの出力データの転送量及び転送速度に基づき決定する。
具体的には、現レイヤの出力データの転送量を格納可能な割り当てバンク数No1を算出する(ステップS40)。このステップS40では、出力データのデータサイズとバンク1つ当たりの記憶容量とを比較して、出力データを格納可能なバンク数を割り当てバンク数No1として算出する。
続いて、出力データの転送速度を満たす並列アクセス数No2を算出する(ステップS41)。このステップS41では、出力データの転送速度とバンク1つ当たりの最大帯域とを比較して、転送速度に対して最大帯域が大きければ並列アクセス数No2を1とし、転送速度に対して最大帯域が小さければ、転送速度を上回る値となるまで最大帯域を整数倍し、転送速度を上回る値となる倍数を並列アクセス数No2とする。
続いて、並列アクセス数No2が1より大きいか否かを判断する(ステップS42)。このステップS42において、並列アクセス数No2が1であれば、転送先アクセス方法を“順次”に設定する(ステップS43)。一方、ステップS42において、並列アクセス数No2が1よりも大きい場合、転送先アクセス方法を“並列”に設定する(ステップS44)。その後、割り当てバンク数No1と並列アクセス数No2との数を調整する。具体的には、割り当てバンク数No1と並列アクセス数No2と比較し、割り当てバンク数No1が並列アクセス数No2以上の値であれば、並列アクセス数No2の値を割り当てバンク数No1の値で更新することで割り当てバンク数No1と並列アクセス数No2とを一致させる(ステップS45、S46)。一方、割り当てバンク数No1が並列アクセス数No2よりも小さな値であれば、割り当てバンク数No1の値を並列アクセス数No2の値で更新することで割り当てバンク数No1と並列アクセス数No2とを一致させる(ステップS45、S47)。例えば、割り当てバンク数No1が3、並列アクセス数No2が2であった場合、ステップS45、S46の処理により並列アクセス数No2を2から3に更新する。また、別の例として、割り当てバンク数No1が1、並列アクセス数No2が2であった場合、ステップS45、S47の処理により割り当てバンク数No1を1から2に更新する。
図11で説明した処理を実行することで、レイヤ毎にレイヤ演算部が出力するデータの転送量を満たし、かつ、データの転送速度を満し、さらに処理対象レイヤの後段に配置される後段レイヤに入力するデータの転送量と転送速度を満たす最小構成の転送先割り当てバンク数(割り当てバンク数No1)とアクセス方法が決定される。なお、並列アクセス数No2、Ni3は、転送先バンクへのアクセス方法を順次アクセスとするか、並列アクセスとするかの決定に用いられる。また、並列アクセス数No2、Ni3は、割り当てバンク数No1よりも大きければ、並列アクセスを行う場合の割り当てバンク数No1の補正に用いられる。また、並列アクセス数No2、Ni3は、割り当てバンク数No1よりも小さければ、割り当てバンク数Ni1に一致するように補正される。
続いて、転送先バンク割り当て処理では、次段のレイヤの入力データの転送速度を満たす並列アクセス数Ni3を算出する(ステップS50)。このステップS50では、ステップS41と同様に、出力データの転送速度とバンク1つ当たりの最大帯域とに基づき並列アクセス数Ni3を算出する。
そして、ステップS50に続いて、出力データの転送量と転送速度とに基づいて設定した転送先バンク割り当てと、転送先アクセス方法とを、変更するか否かを判断する設定値更新判断処理を行う(ステップS51)。このステップS51の処理では、並列アクセス数Ni3が1より大きいか否かを判断することで、次段レイヤの入力データの転送速度を満たすために並列アクセスが必要であるか否かを判断する。また、ステップS51の処理では、次段レイヤの入力に関する並列アクセス数Ni3と現レイヤの出力に関する並列アクセス数No2とを比較して、並列アクセス数No2の範囲内で次段レイヤの入力データの転送速度を満足できるか否かを判断する。図11では、このステップS51の判断基準を、Ni3>1かつNi3>No2と表現した。
そして、ステップS51において、次段レイヤの入力に必要な転送量と転送速度が、現レイヤの転送量と転送速度から導き出した割り当てバンク数No1と並列アクセス数No2により満たすことが出来ると判断した場合(ステップS51のNOの枝)、ステップS40からステップS47で算出した転送先割り当てバンクの数と転送先アクセス方法を現レイヤのものとして採用する。
一方、ステップS47において、次段レイヤの入力に必要な転送量と転送速度が、現レイヤの転送量と転送速度から導き出した割り当てバンク数No1と並列アクセス数No2により満たすことができないと判断した場合(ステップS51のYESの枝)、転送先アクセスの方法と割り当てバンク数Ni1を見直す(ステップS52〜S55)。
ステップS52では、ステップS43、S44で設定したアクセス方法にかかわらず、転送先アクセス方法を“並列”に変更する。その後、割り当てバンク数Ni1と並列アクセス数No3との数を調整する。具体的には、割り当てバンク数No1と並列アクセス数Ni3と比較し、割り当てバンク数No1が並列アクセス数Ni3以上の値であれば、並列アクセス数Ni3の値を割り当てバンク数No1の値で更新することで割り当てバンク数No1と並列アクセス数Ni3とを一致させる(ステップS53、S55)。一方、割り当てバンク数No1が並列アクセス数Ni3よりも小さな値であれば、割り当てバンク数No1の値を並列アクセス数Ni3の値で更新することで割り当てバンク数No1と並列アクセス数Ni3とを一致させる(ステップS53、S54)。例えば、割り当てバンク数No1が1、並列アクセス数Ni3が2であった場合、ステップS53、S54の処理により並列アクセス数Ni3を1から2に更新する。また、別の例として、割り当てバンク数No1が3、並列アクセス数Ni3が2であった場合、ステップS53、S55の処理により並列アクセス数Ni3を2から3に更新する。
なお、図10のステップS38、S39で算出される割り当てバンク数Ni1と、図11のステップS46、S47、S54、S55で算出される割り当てバンク数No1と、の合計値は、レイヤ毎に半導体装置1内のハードウェア資源として準備されているバンクの総数L以下となるように算出される。つまり、図10及び図11の処理を経て決定されるレイヤ毎の割り当てバンク数Ni1と割り当てバンク数No1との最大値は、Ni1+No1≦Lとなるように算出される。また、割り当てバンク数Ni1と割り当てバンク数No1とは、バンク総数Lの範囲内であれば、図10及び図11で算出された値を最小値として、任意に増加させる設定することもできる。
図10及び図11でした処理手順に従って、実施の形態1にかかる半導体装置1で用いるメモリ設定情報MEM_SETを生成する。このメモリ設定情報MEM_SETを生成するための処理の手順は、半導体装置1とは別に設けられるコンピュータ上で行うこともできるし、半導体装置1内の主演算部10で行うこともできる。
続いて、実施の形態1にかかる半導体装置1で行われる畳み込み処理層の演算を行うための動作について説明する。ここでは、主にアクセラレータ部11の動作について説明する。そこで、図12に実施の形態1にかかる半導体装置の動作を説明するタイミングチャートを示す。なお、図12において#1は1番目のバンクを示し、#2は2番目のバンクを示し、#3は3番目のバンクを示し、#4は4番目のバンクを示す。
図12に示すように、実施の形態1にかかるアクセラレータ部11では、第1レイヤに関する処理を行う場合、ネットワークレイヤ制御部20が第1レイヤ用の設定をレイヤ演算部21及びメモリ制御部23に行う。具体的には、ネットワークレイヤ制御部20は、メモリ制御部23に、バンク#1を読み出し可能状態、バンク#2、#3を書き込み可能状態とすることを設定する。また、バンク#3、#4には順次アクセスを設定する。そして、アクセラレータ部11は、バンク#1からデータを読み出し、読み出したデータに対してレイヤ演算部21で演算を行う。そして、レイヤ演算部21は、バンク#3とバンク#4に順次アクセスにより出力データを書き込む。
実施の形態1にかかるアクセラレータ部11では、第2レイヤに関する処理を行う場合、ネットワークレイヤ制御部20が第2レイヤ用の設定をレイヤ演算部21及びメモリ制御部23に行う。具体的には、アクセラレータ部11は、第2レイヤに関する処理を行う場合、ネットワークレイヤ制御部20が、メモリ制御部23に、バンク#1、#2を書き込み可能状態、バンク#3、#4を読み出し可能状態とすることを設定する。これは、第1レイヤで生成されたデータがバンク#3、#4に格納されているためである。また、第2レイヤでは、バンク#1、#2には並列アクセスを設定する。そして、アクセラレータ部11は、バンク#3、#4から順次アクセスによりデータを読み出し、読み出したデータに対してレイヤ演算部21で演算を行う。そして、レイヤ演算部21は、バンク#1、#2に並列アクセスにより出力データを書き込む。
実施の形態1にかかるアクセラレータ部11では、第3レイヤに関する処理を行う場合、ネットワークレイヤ制御部20が第3レイヤ用の設定をレイヤ演算部21及びメモリ制御部23に行う。具体的には、アクセラレータ部11は、第3レイヤに関する処理を行う場合、ネットワークレイヤ制御部20が、メモリ制御部23に、バンク#3、#4を書き込み可能状態、バンク#1、#2を読み出し可能状態に設定する。これは、第2レイヤで生成されたデータがバンク#1、#2に格納されているためである。また、第3レイヤでは、バンク#1、#2及びバンク#3、#4にそれぞれは並列アクセスを設定する。そして、アクセラレータ部11は、バンク#1、#2から並列アクセスによりデータを読み出し、読み出したデータに対してレイヤ演算部21で演算を行う。そして、レイヤ演算部21は、バンク#3、#4に並列アクセスにより出力データを書き込む。
続いて、図12に示した各レイヤにおけるデータ転送状態について詳細に説明する。なお、ここでは図1に示した畳み込みニューラルネットワークの畳み込み処理層の処理を例に図12に示した各レイヤにおけるデータ転送状態について説明する。また、以下の説明例では、バンク1つ当たりのバスの最大帯域を30GB/sとする。
図13に実施の形態1にかかる半導体装置の第1レイヤに関する処理を行う場合のデータ転送状態を説明する図を示す。図13に示す例では、レイヤ演算部21に与えられる入力データの転送量が50kB、レイヤ演算部21が入力データを読み出すときの転送速度(図13中の入力速度)が3.8GB/sである。また、図13に示す例では、レイヤ演算部21が出力する出力データの転送量が200kB、レイヤ演算部21が出力データをバンクに書き込むときの転送速度(図13中の出力速度)が20GB/sである。この図13に示す第1レイヤの例では、上記のような入出力データの転送量から、入力データの転送元に割り当てるバンクを1つ、出力データの転送先に割り当てるバンクを2つとする。また、転送先に割り当てるバンクへのアクセス方法は、必要な転送速度がバンク1つ当たりのバスの最大帯域よりも小さいため、順次アクセスに設定される。なお、図14で説明するが、第2レイヤの入力データの読み込みに必要な転送速度は、バスの最大帯域よりも小さいため、第1レイヤにおけるバンクへの書き込みは順次アクセスであっても、第2レイヤの読み出し速度を満たす。第1レイヤの処理を行うアクセラレータ部11では、上記のような設定値に基づき、レイヤ演算部21が畳み込み積和演算処理、活性化処理、及び、プーリング処理を行う。なお、図13中の丸で囲まれた数字は、順次アクセスの順番を示し、図14以降の図面でも同様の表現を用いる。
次いで、図14に実施の形態1にかかる半導体装置の第2レイヤに関する処理を行う場合のデータ転送状態を説明する図に示す。図14に示す例では、レイヤ演算部21に与えられる入力データの転送量が200kB、レイヤ演算部21が入力データを読み出すときの転送速度(図14中の入力速度)が20GB/sである。また、図14に示す例では、レイヤ演算部21が出力する出力データの転送量が100kB、レイヤ演算部21が出力データをバンクに書き込むときの転送速度(図14中の出力速度)が20GB/sである。この図14に示す第2レイヤの例では、上記のような入出力データの転送量から、入力データの転送元に割り当てるバンクを2つ、出力データの転送先に割り当てるバンクを1つとすることで、第2レイヤの処理には十分なデータ転送状態を確保できる。しかしながら、図15に示す第3レイヤの入力に要する転送速度を満たすためには、第2レイヤの出力データを格納するバンク#3、#4へは並列アクセスを行うことが必要である。そこで、図14に示す例では、出力データの転送先に割り当てるバンクを2つにした上で、並列アクセスを行う。なお、転送元に割り当てるバンクへのアクセス方法は、必要な転送速度がバンク1つ当たりのバスの最大帯域よりも小さいため、順次アクセスに設定される。第2レイヤの処理を行うアクセラレータ部11では、上記のような設定値に基づき、レイヤ演算部21が畳み込み積和演算処理を行う。
なお、図14に示した出力データの転送量と転送速度は、1つのバンクに対するアクセスだけで満たすことができる。このような場合、第2レイヤでは、バンク#1とバンク#1に第3レイヤでの並列アクセス時のデータの読み出し順序を考慮した順次アクセスを行うことにより、データの書き込みを行うことができる。本実施の形態で説明する技術的概念はこのようなアクセス方法を排除するものではない。
次いで、図15に実施の形態1にかかる半導体装置の第3レイヤに関する処理を行う場合のデータ転送状態を説明する図に示す。図15に示す例では、レイヤ演算部21に与えられる入力データの転送量が100kB、レイヤ演算部21が入力データを読み出す時の転送速度(図15中の入力速度)が50GB/sである。また、図15に示す例では、レイヤ演算部21が出力する出力データの転送量が200kB、レイヤ演算部21が出力データをバンクに書き込むときの転送速度(図15中の出力速度)が50GB/sである。この図15に示す第3レイヤの例では、上記のような入力データの転送量から、入力データの転送元に割り当てるバンクを1つとすれば良いが、入力データの転送速度を考慮すると、転送元バンクに割り当てるバンクは2つとする必要がある。また、出力データの転送先に割り当てるバンクは、出力データの転送量及び転送速度を満たすために2つとする。また、転送元及び転送先に割り当てるバンクへのアクセス方法は、必要な転送速度がバンク1つ当たりのバスの最大帯域よりも大きいため、並列アクセスに設定される。第3レイヤの処理を行うアクセラレータ部11では、上記のような設定値に基づき、レイヤ演算部21が畳み込み積和演算処理、活性化処理、及び、プーリング処理を行う。
上記説明より、実施の形態1にかかる半導体装置1では、畳み込みニューラルネットワークの畳み込み処理層の中間層毎に、データの転送量とデータの転送速度に応じて、利用するバンクの数を可変する。具体的には、実施の形態1にかかる半導体装置1では、データの転送量を十分に格納可能なバンク数を中間層毎に設定する。また、実施の形態1にかかる半導体装置1では、データの転送速度を満たすように割り当てるバンク数を中間層毎に設定する。また、実施の形態1にかかる半導体装置1では、中間層毎に割り当てるバンクを切り替える。
これにより、実施の形態1にかかる半導体装置1では、他の中間層で利用された結果空き状態となったバンクを畳み込み演算処理を行う中間層で利用することができるため、有限な容量のメモリを有効利用することができる。また、実施の形態1にかかる半導体装置1では、中間層毎にバンクの読み書き状態を切り替えると共に転送元及び転送先に割り当てるバンクの数を切り替え、並列アクセスするバスの数を増やすことで、バンク1つ当たりのバス最大帯域よりも高い転送速度を実現することができ、中間層の処理に必要な転送速度を確保することができる。
このようなことから、実施の形態1にかかる半導体装置1では、内蔵するメモリ(例えば、メモリ24、25)の容量を削減して、回路面積を抑制することができる。また、実施の形態1にかかる半導体装置1では、バンク1つ当たりのバス最大帯域を抑制して、消費電力を削減することができる。
なお、実施の形態1にかかる半導体装置1では、メモリ24、25として用いる記憶素子としてSRAM(Static Random Access Memory)を用いることで高速な読み出し及び書き込みの処理を行い、半導体装置1の演算能力を高めることができる。
また、実施の形態1にかかる半導体装置1では、レイヤ毎に割り当てるバンク数と、割り当てバンクに対するアクセス方法を決定する。この決定処理(例えば、図10、図11のフローチャート)においては、各レイヤの出力データを格納する転送先バンクとするバンクの割り当て及びアクセス方法を次段のレイヤの入力特性を加味して決定する。例えば、図14に示す例では、第2レイヤの出力特性のみを満たすことを考えれば、1つのバンクに対して順次アクセスを行うことで十分な性能が得られるが、第2レイヤの次に配置される第3レイヤの入力特性を鑑みて、第2レイヤの出力データを転送する転送先バンクに2つのバンクを割り当て、かつ、2つのバンクに対して並列アクセスを行うように、バンクの割り当てを変更している。このように、現レイヤの出力特性のみならず、次レイヤの入力特性を加味したバンクの割り当てを行うことで、次レイヤの最大能力で入力データの読み込みを行うことができる。一方、次レイヤの入力特性を加味して現レイヤの出力特性を満たすバンク割り当てを決定した場合、現レイヤの出力特性に対して過剰な数のバンクの割り当て数が必要になるデメリットが生じる。しかしながら、半導体装置1のハードウェア資源の範囲内のバンク数であれば、現レイヤに関するハードウェア資源の利用率が上昇するのみで、複数のレイヤに亘ってレイヤ演算部の演算能力を最大限に発揮させることができるメリットがある。
実施の形態2
実施の形態2では、実施の形態1にかかるアクセラレータ部11の別の形態となるアクセラレータ部11aについて説明する。なお、実施の形態2の説明では、実施の形態1で説明した構成要素と同じ構成要素については、実施の形態1と同じ符号を付して説明を省略する。また、実施の形態2にかかるアクセラレータ部11aを有する半導体装置を半導体装置2と称する。
実施の形態2では、実施の形態1にかかるアクセラレータ部11の別の形態となるアクセラレータ部11aについて説明する。なお、実施の形態2の説明では、実施の形態1で説明した構成要素と同じ構成要素については、実施の形態1と同じ符号を付して説明を省略する。また、実施の形態2にかかるアクセラレータ部11aを有する半導体装置を半導体装置2と称する。
図16に実施の形態2にかかるアクセラレータ部11aのネットワークレイヤ制御部及びメモリ制御部の構成を説明するブロック図を示す。図16に示すように、アクセラレータ部11aは、実施の形態1にかかるアクセラレータ部11のメモリ制御部23をメモリ制御回路53に置き換えたものである。メモリ制御回路53は、アクセス制御部56及び選択回路57を有する。
メモリ制御部53は、ネットワークレイヤ制御部20の指示に基づき、前記バンクに格納されたデータを外部メモリEX_MEMに退避させる退避処理と、外部メモリEX_MEMに格納されたデータをバンクに補充する補充処理と、を他の処理の実行状態にかかわらずに実行する。また、外部メモリEX_MEMは、複数のバンクを有し、外部メモリEX_MEMのバンク毎に退避処理と補充処理に関するデータを格納することとする。
アクセス制御部56は、ローカルバス14を介してリードライト指示信号を外部メモリEX_MEMに与える機能を図6に示したアクセス制御部36に追加したものである。選択回路57は、ローカルバス14を介して外部メモリEX_MEMにアクセスする経路を選択する機能を図6に示した選択回路37に追加したものである。
ここで、実施の形態2にかかる半導体装置2における畳み込み処理層の動作について説明する。そこで、図17に実施の形態2にかかる半導体装置2の動作を説明するタイミングチャートを示す。図17に示す例は、実施の形態2にかかる半導体装置2の動作の一例である。また、図17に示す例は、図12で示した実施の形態1にかかる半導体装置1の動作に第4レイヤの動作と補充処理及び退避処理を追加して実施したものである。
図17に示す例では、実施の形態2にかかる半導体装置2は、第4レイヤで利用する入力データを第1レイヤの畳み込み積和演算処理が行われている期間と第2レイヤの畳み込み積和演算処理が行われている期間とに跨がる期間において補充する。具体的には、補充処理では、外部メモリEX_MEMからバンク#5にデータの補充が行われる。そして、バンク#5に補充されたデータは第4レイヤの入力データとなる。また、図17に示す例では、第4レイヤの積和演算処理が行われている期間とそれ以降の期間を利用してバンク#2、#3に格納されているデータを外部メモリEX_MEMに退避させる退避処理が行われる。図17に示すように、この補充処理と退避処理は、各レイヤの処理とは独立して行われる。
なお、退避処理では、データ格納時のアクセス方法とは異なるアクセス方法で退避処理を行っても問題ない。また、1つのレイヤで処理されたデータが複数のバンクに跨がって保存されている場合、データの破損を防ぐために、当該複数のバンクを1つの塊としてデータの退避処理及び補充処理を行う必要がある。
ここで、データ補充処理及びデータ退避処理を行うためのデータ転送経路について説明する。図18に実施の形態2にかかる半導体装置におけるデータ補充時のデータ転送経路を説明する図を示す。図18は、第2レイヤの処理中に行われるデータ補充処理のデータの伝送経路を示すものである。図18に示す例では、データ退避処理では、畳み込み積和演算処理とは独立した経路が形成される。具体的には、外部メモリEX_MEMの対象バンクからバンク#5へとデータが転送される。
また、図19に実施の形態2にかかる半導体装置におけるデータ退避時のデータ転送経路を説明する図を示す。図19は、第4レイヤの処理中に行われるデータ退避処理のデータの伝送経路を示すものである。図19に示す例では、データ退避処理では、畳み込み積和演算処理とは独立した経路が形成される。具体的には、バンク#2、#3から外部メモリEX_MEMの対象バンクへとデータが転送される。このとき、データ退避処理は、バンク#2、#3に対して順次アクセスで行われる。
上記説明より、実施の形態2にかかる半導体装置2では、アクセラレータ部11内のメモリのバンクへのデータの補充と退避とを他の処理とは独立した処理により行うことができる。これにより、実施の形態2にかかる半導体装置2では、演算能力を犠牲にすることなく、アクセラレータ部11内のメモリの容量よりも大きな容量のデータを扱うことができる。
ここで、実施の形態2にかかる半導体装置2における演算時間の短縮効果(或いは、演算能力が犠牲ならないことの効果)について図20を参照しながら説明する。図20は、比較例にかかる半導体装置の動作を説明するタイミングチャートである。比較例にかかる半導体装置は、実施の形態2にかかるアクセラレータ部11aを利用せずに主演算部10のみで畳み込みニューラルネットワークの全ての処理を行うものである。
図20に示すように、比較例にかかる半導体装置では、データ補充処理或いはデータ退避処理を行う場合、データ補充処理及びデータ退避処理を行うためのアクセス権を得るために主演算部10への割り込み処理を利用する。そのため、比較例にかかる半導体装置では、データ補充処理及びデータ退避処理を他の処理と並列して実行することができない。そこで、比較例にかかる半導体装置では、畳み込みニューラルネットワークの中間層の処理とは別の期間としてデータ補充処理とデータ退避処理を行う期間をそれぞれ設ける必要がある。このようなことから、比較例にかかる半導体装置では、データ補充処理とデータ退避処理を行う期間分だけ処理時間が長くなる問題がある。
一方、図12に示した実施の形態2にかかる半導体装置2の動作では、データ補充処理とデータ退避処理が中間層の処理と並列して行われる。これにより、実施の形態2にかかる半導体装置2では、データ補充処理とデータ退避処理により処理時間が取られることはない。つまり、実施の形態2にかかる半導体装置2では、演算能力を犠牲にすることなく、アクセラレータ部11内のメモリの容量よりも大きな容量のデータを扱うことができる。
実施の形態3
実施の形態3では、実施の形態1にかかる半導体装置1の別の形態となる半導体装置3について説明する。なお、実施の形態3の説明では、実施の形態1で説明した構成要素と同じ構成要素については、実施の形態1と同じ符号を付して説明を省略する。
実施の形態3では、実施の形態1にかかる半導体装置1の別の形態となる半導体装置3について説明する。なお、実施の形態3の説明では、実施の形態1で説明した構成要素と同じ構成要素については、実施の形態1と同じ符号を付して説明を省略する。
図21に実施の形態3にかかる半導体装置3のブロック図を示す。図21に示すように、実施の形態3にかかる半導体装置3は、半導体装置1の主演算部10を主演算部60に置き換え、半導体装置1に車両制御部64を追加したものである。主演算部60は、主演算部10に車両・歩行者認識処理部61、路面検出処理部62、経路予測処理部63を追加したものである。
車両・歩行者認識処理部61は、主演算部60で行われる全結合層の演算結果に基づき、前方の車両、歩行者、標識を含む路上物体を認識する物体認識部である。路面検出処理部62は、主演算部60で行われる全結合層の演算結果に基づき、画像中から路上物体を切り離した部分を路面として検出する。経路予測処理部63は、車両・歩行者認識処理部61の処理結果と、路面検出処理部62の処理結果と、車両の速度及び操舵角(不図示)と、に基づき車両の走行経路を予測する。
車両制御部64は、車両・歩行者認識処理部61、路面検出処理部62及び経路予測処理部63の少なくとも1つの処理結果に基づき車両の走行、停止、操舵を含む制御情報を出力する。この制御情報は、例えば、歩行者の接近や、赤信号や道路標識を検出したことによる、運転者への警告ランプの点灯、警告音の発生、ブレーキ制動による減速、停止制御、先行車追従時のスロットル、ブレーキ制御、その他の衝突回避や車線維持のための舵角制御などを行うための情報である。また、これらの制御情報は車両制御部64から図示しない他の装置に対して、車内ネットワークを介して出力される。
実施の形態3にかかる半導体装置3では、車両・歩行者認識処理部61、路面検出処理部62、経路予測処理部63、車両制御部64を有することとで、畳み込みニューラルネットワークで認識された情報に基づき自車両の障害物を認識しながら、安全な走行を維持できる。経路予測処理部63および車両・歩行者認識処理部61の処理結果から、これから走行していく経路上の物体を検出するようにすることで、自車両の走行経路上の障害物を認識して、安全な走行を実現できる。
なお、車両・歩行者認識処理部61、路面検出処理部62、経路予測処理部63及び車両制御部64は、半導体装置3内に必ずしも内蔵されている必要はない。
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は既に述べた実施の形態に限定されるものではなく、その要旨を逸脱しない範囲において種々の変更が可能であることはいうまでもない。
(付記1)
畳み込みニューラルネットワークに関する処理のうち入力画像に所定のフィルタを適用した畳み込み演算を行う畳み込み処理層に関する処理を行うアクセラレータ部と、
前記アクセラレータ部の出力結果に基づき前記入力画像を判断する全結合層に関する処理を行う主演算部と、を有し、
前記アクセラレータ部は、
畳み込みニューラルネットワークを構成する複数の中間層について中間層毎に処理対象画像データの要素に対する畳み込み積和演算を含む演算処理を行うレイヤ演算部と、
前記畳み込みニューラルネットワークを構成する中間層における前記レイヤ演算部の入出力データを格納し、それぞれが独立して読み書き可能な複数のバンクから構成されるメモリと、
前記バンク単位で読み出し可能状態と書き込み可能状態とを切り替えると共に前記レイヤ演算部と前記メモリとのデータの送受信をルーティングするメモリ制御部と、
前記畳み込みニューラルネットワークを構成する中間層の入力データと出力データのそれぞれの転送量と転送速度に応じて、前記中間層の入力データまたは出力データを格納する前記バンクの読み書き状態の割り当てを切り換えるようにメモリ制御部を制御するネットワークレイヤ制御部と、
を有する半導体装置。
畳み込みニューラルネットワークに関する処理のうち入力画像に所定のフィルタを適用した畳み込み演算を行う畳み込み処理層に関する処理を行うアクセラレータ部と、
前記アクセラレータ部の出力結果に基づき前記入力画像を判断する全結合層に関する処理を行う主演算部と、を有し、
前記アクセラレータ部は、
畳み込みニューラルネットワークを構成する複数の中間層について中間層毎に処理対象画像データの要素に対する畳み込み積和演算を含む演算処理を行うレイヤ演算部と、
前記畳み込みニューラルネットワークを構成する中間層における前記レイヤ演算部の入出力データを格納し、それぞれが独立して読み書き可能な複数のバンクから構成されるメモリと、
前記バンク単位で読み出し可能状態と書き込み可能状態とを切り替えると共に前記レイヤ演算部と前記メモリとのデータの送受信をルーティングするメモリ制御部と、
前記畳み込みニューラルネットワークを構成する中間層の入力データと出力データのそれぞれの転送量と転送速度に応じて、前記中間層の入力データまたは出力データを格納する前記バンクの読み書き状態の割り当てを切り換えるようにメモリ制御部を制御するネットワークレイヤ制御部と、
を有する半導体装置。
(付記2)
前記主演算部は、
前記全結合層の演算結果に基づき、前方の車両、歩行者、標識を含む路上物体を認識する物体認識部と、
前記全結合層の演算結果に基づき、画像中から前記路上物体を切り離した部分を路面として検出する路面検出処理部と、
前記物体認識部の処理結果と、前記路面検出処理部の処理結果と、車両の速度及び操舵角と、に基づき車両の走行経路を予測する経路予測処理部と、
の少なくとも1つを有する付記1に記載の半導体装置。
前記主演算部は、
前記全結合層の演算結果に基づき、前方の車両、歩行者、標識を含む路上物体を認識する物体認識部と、
前記全結合層の演算結果に基づき、画像中から前記路上物体を切り離した部分を路面として検出する路面検出処理部と、
前記物体認識部の処理結果と、前記路面検出処理部の処理結果と、車両の速度及び操舵角と、に基づき車両の走行経路を予測する経路予測処理部と、
の少なくとも1つを有する付記1に記載の半導体装置。
(付記3)
前記物体認識部、前記路面検出処理部及び前記経路予測処理部の少なくとも1つの処理結果に基づき車両の走行、停止、操舵を含む制御情報を出力する車両制御部を有する付記2に記載の半導体装置。
前記物体認識部、前記路面検出処理部及び前記経路予測処理部の少なくとも1つの処理結果に基づき車両の走行、停止、操舵を含む制御情報を出力する車両制御部を有する付記2に記載の半導体装置。
1 半導体装置
3 半導体装置
10 主演算部
11、11a アクセラレータ部
12 画像入力部
14 ローカルバス
20 ネットワークレイヤ制御部
21 レイヤ演算部
22 レイヤ演算部
23 メモリ制御部
24、25 メモリ
311〜31n バンク
33 リスト解析処理部
34 演算制御部
35 バンク管理部
36 アクセス制御部
37 選択回路
40 畳み込み積和演算部
41 活性化処理部
42 プーリング処理部
43 選択回路
44 選択回路
53 メモリ制御回路
56 アクセス制御部
57 選択回路
60 主演算部
61 車両・歩行者認識処理部
62 路面検出処理部
63 経路予測処理部
64 車両制御部
EX_MEM 外部メモリ
SET1 動作設定情報
SET2 動作設定情報
CAL_SET 演算処理情報
MEM_SET メモリ設定情報
3 半導体装置
10 主演算部
11、11a アクセラレータ部
12 画像入力部
14 ローカルバス
20 ネットワークレイヤ制御部
21 レイヤ演算部
22 レイヤ演算部
23 メモリ制御部
24、25 メモリ
311〜31n バンク
33 リスト解析処理部
34 演算制御部
35 バンク管理部
36 アクセス制御部
37 選択回路
40 畳み込み積和演算部
41 活性化処理部
42 プーリング処理部
43 選択回路
44 選択回路
53 メモリ制御回路
56 アクセス制御部
57 選択回路
60 主演算部
61 車両・歩行者認識処理部
62 路面検出処理部
63 経路予測処理部
64 車両制御部
EX_MEM 外部メモリ
SET1 動作設定情報
SET2 動作設定情報
CAL_SET 演算処理情報
MEM_SET メモリ設定情報
Claims (20)
- 畳み込みニューラルネットワークを構成する複数の中間層について中間層毎に処理対象画像データの要素に対する畳み込み積和演算を含む演算処理を行うレイヤ演算部と、
前記畳み込みニューラルネットワークを構成する中間層における前記レイヤ演算部の入出力データを格納し、それぞれが独立して読み書き可能な複数のバンクから構成されるメモリと、
前記バンク単位で読み出し可能状態と書き込み可能状態とを切り替えると共に前記レイヤ演算部と前記メモリとのデータの送受信をルーティングするメモリ制御部と、
前記畳み込みニューラルネットワークを構成する中間層の入力データと出力データのそれぞれの転送量と転送速度に応じて、前記中間層の入力データまたは出力データを格納する前記バンクの読み書き状態の割り当てを切り換えるようにメモリ制御部を制御するネットワークレイヤ制御部と、
を有する半導体装置。 - 前記ネットワークレイヤ制御部は、前記複数の中間層の連続する中間層のうち前段に配置される中間層を第1の中間層、後段に配置される中間層を第2の中間層とした場合、前記第1の中間層に関する処理において書き込み可能状態を割り当てたバンクを前記第2の中間層に関する処理において読み出し可能状態に割り当てるように前記メモリ制御部を制御する請求項1に記載の半導体装置。
- 前記ネットワークレイヤ制御部は、
前記第1の中間層に入力される前記入力データの転送量が1つの前記バンクの容量よりも大きい場合は総容量が前記転送量よりも大きな容量を有するように読み出し可能状態とする前記バンクの数を複数に設定し、
前記第1の中間層から出力される前記出力データの転送量が1つの前記バンクの容量よりも大きい場合は総容量が前記転送量よりも大きな容量を有するように書き込み可能状態とする前記バンクの数を複数に設定し、
前記第1の中間層に入力される前記入力データの転送速度と、前記第2の中間層から出力される前記出力データの転送速度と、の少なくとも一方が前記メモリ制御部と前記バンクとを接続するバスの1バンク当たりのバス転送速度よりも大きい場合は1つの前記バンクに関する転送速度が前記バス転送速度よりも小さくなるように読み出し可能状態とする前記バンクの数を複数に設定し、
前記第1の中間層から出力される前記出力データの転送速度と、前記第2の中間層に入力される前記入力データの転送速度と、の少なくとも一方が前記メモリ制御部と前記バンクとを接続するバスのバス転送速度よりも大きい場合は1つの前記バンクに関する転送速度が前記バス転送速度よりも小さくなるように書き込み可能状態とする前記バンクの数を複数に設定する請求項2に記載の半導体装置。 - 前記ネットワークレイヤ制御部には、前記中間層毎に、前記バンクを読み書きのいずれの状態とするか、前記バンクに対して順次アクセスとするか並列アクセスとするかを記述したメモリ設定情報が与えられ、前記ネットワークレイヤ制御部は、前記メモリ設定情報に基づき前記メモリ制御部を制御する請求項1に記載の半導体装置。
- 前記畳み込みニューラルネットワークの構成を示すネットワーク構成情報及び前記畳み込みニューラルネットワークの初段に位置する入力層に与えられる入力画像の画像サイズを示す入力画像サイズ情報と、前記メモリ制御部のバス帯域幅及び前記メモリのバンク構成を示すメモリ構成情報と、に基づき前記メモリ設定情報を生成する主演算部を更に有する請求項4に記載の半導体装置。
- 前記レイヤ演算部は、
前記処理対象画像データに所定の画像サイズのフィルタを重ね合わせ、当該重ね合わせ箇所をずらしながら、各重ね合わせ場所において、前記処理対象画像データの画素値と前記フィルタの画素値との積を算出し、前記フィルタに含まれる画素に関する前記積の総和を演算して積和演算結果画像を生成する畳み込み積和演算部と、
前記積和演算結果画像の画素を所定サイズ毎にグルーピングし、前記グルーピングを行った画素中の代表値を新たな画素値とし、前記新たな画素値から構成される処理後画像を生成するプーリング処理部と、を有する請求項1に記載の半導体装置。 - 前記レイヤ演算部は、
前記畳み込み積和演算部と前記プーリング処理部との間に、前記積和演算結果画像に含まれる画素値に対して画素値が予め設定した条件を満たさない場合は前記画素値を規定値に置き換える所定の活性化関数を適用して、前記積和演算結果画像の活性化処理を行う活性化処理部を有する請求項6に記載の半導体装置。 - 前記レイヤ演算部は、入力データを選択的に前記畳み込み積和演算部に渡す第1の選択部と、前記プーリング処理部から出力される出力データを選択的に前記メモリ制御部に出力する第2の選択部と、を有する請求項6に記載の半導体装置。
- 前記半導体装置の外部に設けられた外部メモリと、
前記メモリ制御部と前記外部メモリとの間のデータの送受信を制御するローカルバスと、を更に有し、
前記メモリ制御部は、前記ネットワークレイヤ制御部の指示に基づき、前記バンクに格納されたデータを前記外部メモリに退避させる退避処理と、前記外部メモリに格納されたデータを前記バンクに補充する補充処理と、を前記中間層に関する処理の実行状態にかかわらずに実行する請求項1に記載の半導体装置。 - 前記外部メモリは、複数のメモリバンクを有し、前記メモリバンク毎に前記退避処理と前記補充処理に関するデータを格納する請求項9に記載の半導体装置。
- 前記畳み込みニューラルネットワークに関する処理のうち入力画像に所定のフィルタを適用した畳み込み演算を行う畳み込み処理層に関する処理を行うアクセラレータ部と、
前記アクセラレータ部の出力結果に基づき前記入力画像を判断する全結合層に関する処理を行う主演算部と、を有し、
前記アクセラレータ部は、前記レイヤ演算部と、前記メモリと、前記メモリ制御部と、前記ネットワークレイヤ制御部と、を有する請求項1に記載の半導体装置。 - 畳み込みニューラルネットワークを構成する複数の中間層について中間層毎に処理対象画像データの要素に対する畳み込み積和演算を含む演算処理を行うレイヤ演算部と、
前記畳み込みニューラルネットワークを構成する中間層における前記レイヤ演算部の入出力データを格納し、それぞれが独立して読み書き可能な複数のバンクから構成されるメモリと、
前記バンク単位で読み出し可能状態と書き込み可能状態とを切り替えると共に前記レイヤ演算部と前記メモリとのデータの送受信をルーティングするメモリ制御部と、
前記畳み込みニューラルネットワークを構成する中間層の入力データと出力データのそれぞれの転送量と転送速度に応じて、前記中間層の入力データまたは出力データを格納する前記バンクの読み書き状態の割り当てを切り換えるようにメモリ制御部を制御するネットワークレイヤ制御部と、を有する半導体装置のメモリアクセス設定方法であって、
前記複数の中間層に含まれる1つの中間層を現中間層とした場合において、
現中間層の前記入力データを格納する転送元バンクの数を示す転送元バンク割り当てを、前記現中間層の前段に配置される前段中間層の前記出力データを格納する転送先バンク数と同じ値に設定し、
現中間層の前記転送元バンクへのアクセス方法を示す転送元アクセス方法を、前記前段中間層の前記出力データの読み出しに用いる転送先アクセス方法と同じ方法に設定し、
現中間層の前記出力データを格納する転送先バンクの数を示す転送先バンク割り当てを、前記現中間層の前記出力データの転送量及び前記出力データの転送速度と、前記現中間層の後段に配置される後段中間層の前記入力データの転送速度と、のいずれの条件も満たすように設定し、
前記現中間層の前記転送先バンクへのアクセス方法を示す転送先アクセス方法は、前記現中間層の前記出力データの転送速度と、前記後段中間層の前記入力データの転送速度と、の両方の条件を満たすよう設定する半導体装置のメモリアクセス設定方法。 - 前記転送先バンク割り当てとなる転送先割り当てバンク数について、
前記現中間層の前記出力データを格納可能な前記バンクの数を第1の転送先割り当てバンク数として算出し、
前記バンク1つ当たりの最大帯域を整数倍した転送可能帯域が、前記現中間層の前記出力データの転送速度よりも小さくなるときの倍数を第1の転送先並列アクセス数として算出し、
前記第1の転送先割り当てバンク数と前記第1の転送先並列アクセス数とのうち大きい値の数により、前記第1の転送先割り当てバンク数と前記第1の転送先並列アクセス数とのうち小さい方の値を更新し、
前記バンク1つ当たりの最大帯域を整数倍した転送可能帯域が、前記後段中間層の前記入力データの転送速度よりも小さくなるときの倍数を第2の転送先並列アクセス数として算出し、
前記第2の転送先並列アクセス数が前記第1の転送先並列アクセス数よりも小さい場合には、前記転送先割り当てバンク数として前記第2の割り当てバンク数以上の数を設定し、
前記第2の転送先並列アクセス数が前記第1の転送先並列アクセス数よりも大きい場合には、前記転送先割り当てバンク数として前記第1の転送先割り当てバンク数と前記第2の転送先並列アクセス数のうちの大きな方の値以上の数を設定し、
前記転送先アクセス方法について、
前記第1の転送先並列アクセス数と前記第2の転送先並列アクセス数との少なくとも一方が2以上の値となるときに並列に設定し、前記第1の転送先並列アクセス数と前記第2の転送先並列アクセス数との両方が1であるときに順次に設定する請求項12に記載の半導体装置のメモリアクセス設定方法。 - 前記前段中間層が存在しない場合に、
前記現中間層の前記転送元バンク割り当てとなる転送元割り当てバンク数について、
前記現中間層の前記入力データを格納可能な前記バンクの数を第1の転送元割り当てバンク数として算出し、
前記バンク1つ当たりの最大帯域を整数倍した転送可能帯域が、前記現中間層の前記入力データの転送速度よりも小さくなるときの倍数を転送元並列アクセス数として算出し、
前記転送元並列アクセス数が1となる場合には、前記転送先割り当てバンク数として前記第1の割り当てバンク数を設定し、
前記転送元並列アクセス数が2以上となる場合には、前記転送元割り当てバンク数として、前記第1の転送元割り当てバンク数を前記転送元並列アクセス数の整数倍の数となるように更新した第2の転送先割り当てバンク数を設定し、
前記転送元アクセス方法を、
前記転送元並列アクセス数が2以上の値となるときに並列に設定され、前記転送元並列アクセス数が1であるときに順次に設定される請求項12に記載の半導体装置のメモリアクセス設定方法。 - 畳み込みニューラルネットワークを構成する複数の中間層について中間層毎に処理対象画像データの要素に対する畳み込み積和演算を含む演算処理を行うレイヤ演算部と、
前記畳み込みニューラルネットワークを構成する中間層における前記レイヤ演算部の入出力データを格納し、それぞれが独立して読み書き可能な複数のバンクから構成されるメモリと、
前記バンク単位で読み出し可能状態と書き込み可能状態とを切り替えると共に前記レイヤ演算部と前記メモリとのデータの送受信をルーティングするメモリ制御部と、
前記畳み込みニューラルネットワークを構成する中間層の入力データと出力データのそれぞれの転送量と転送速度に応じて、並列してアクセスする前記中間層の入力データまたは出力データを格納する前記バンクの数を制御するネットワークレイヤ制御部と、
を有する半導体装置。 - 前記ネットワークレイヤ制御部は、
前記入力データと前記出力データに関する前記転送量が増加したことに伴い、同一の読み書き属性に割り当てる前記バンクの数を増加させ、
前記入力データと前記出力データに関する前記転送速度が増加したことに伴い、並列してアクセス可能な前記バンクの数を増加させる請求項15に記載の半導体装置。 - 前記ネットワークレイヤ制御部は、前記複数の中間層の連続する中間層のうち前段に配置される中間層を第1の中間層、後段に配置される中間層を第2の中間層とした場合、前記第1の中間層に関する処理において書き込み可能状態を割り当てたバンクを前記第2の中間層に関する処理において読み出し可能状態に割り当てるように前記メモリ制御部を制御する請求項15に記載の半導体装置。
- 前記ネットワークレイヤ制御部は、
前記第1の中間層に入力される前記入力データの転送量が1つの前記バンクの容量よりも大きい場合は総容量が前記転送量よりも大きな容量を有するように読み出し可能状態とする前記バンクの数を複数に設定し、
前記第1の中間層から出力される前記出力データの転送量が1つの前記バンクの容量よりも大きい場合は総容量が前記転送量よりも大きな容量を有するように書き込み可能状態とする前記バンクの数を複数に設定し、
前記第1の中間層に入力される前記入力データの転送速度と、前記第2の中間層から出力される前記出力データの転送速度と、の少なくとも一方が前記メモリ制御部と前記バンクとを接続するバスの1バンク当たりのバス転送速度よりも大きい場合は1つの前記バンクに関する転送速度が前記バス転送速度よりも小さくなるように読み出し可能状態とする前記バンクの数を複数に設定し、
前記第1の中間層から出力される前記出力データの転送速度と、前記第2の中間層に入力される前記入力データの転送速度と、の少なくとも一方が前記メモリ制御部と前記バンクとを接続するバスのバス転送速度よりも大きい場合は1つの前記バンクに関する転送速度が前記バス転送速度よりも小さくなるように書き込み可能状態とする前記バンクの数を複数に設定する請求項17に記載の半導体装置。 - 前記ネットワークレイヤ制御部には、前記中間層毎に、前記バンクを読み書きのいずれの状態とするか、前記バンクに対して順次アクセスとするか並列アクセスとするかを記述したメモリ設定情報が与えられ、前記ネットワークレイヤ制御部は、前記メモリ設定情報に基づき前記メモリ制御部を制御する請求項15に記載の半導体装置。
- 前記畳み込みニューラルネットワークの構成を示すネットワーク構成情報及び前記畳み込みニューラルネットワークの初段に位置する入力層に与えられる入力画像の画像サイズを示す入力画像サイズ情報と、前記メモリ制御部のバス帯域幅及び前記メモリのバンク構成を示すメモリ構成情報と、に基づき前記メモリ設定情報を生成する主演算部を更に有する請求項19に記載の半導体装置。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2018101344A JP2019207458A (ja) | 2018-05-28 | 2018-05-28 | 半導体装置及びメモリアクセス設定方法 |
US16/405,542 US10996877B2 (en) | 2018-05-28 | 2019-05-07 | Semiconductor device and memory access setup method |
EP19175054.6A EP3576022A1 (en) | 2018-05-28 | 2019-05-17 | Semiconductor device and memory access setup method |
CN201910442055.0A CN110543938B (zh) | 2018-05-28 | 2019-05-24 | 半导体装置和存储器访问设定方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2018101344A JP2019207458A (ja) | 2018-05-28 | 2018-05-28 | 半導体装置及びメモリアクセス設定方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2019207458A true JP2019207458A (ja) | 2019-12-05 |
Family
ID=66589411
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2018101344A Pending JP2019207458A (ja) | 2018-05-28 | 2018-05-28 | 半導体装置及びメモリアクセス設定方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10996877B2 (ja) |
EP (1) | EP3576022A1 (ja) |
JP (1) | JP2019207458A (ja) |
CN (1) | CN110543938B (ja) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP6962526B1 (ja) * | 2021-01-04 | 2021-11-05 | エッジコーティックス ピーティーイー. リミテッド | ニューラルネットワークアクセラレータランタイム再構成可能性 |
DE102023126257A1 (de) | 2022-09-27 | 2024-03-28 | Renesas Electronics Corporation | Halbleitervorrichtung |
DE102023131790A1 (de) | 2022-11-16 | 2024-05-16 | Renesas Electronics Corporation | Bildverarbeitungsvorrichtung und bildverarbeitungsverfahren |
JP7494526B2 (ja) | 2020-03-30 | 2024-06-04 | 株式会社デンソー | メモリアロケーション方法及び処理装置 |
WO2024134735A1 (ja) * | 2022-12-19 | 2024-06-27 | 恒林日本株式会社 | 機械学習モデル生成装置、及び蓄電池の特性値算出装置 |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP7147367B2 (ja) * | 2018-08-23 | 2022-10-05 | 富士通株式会社 | 制御装置及び制御プログラム |
JP7299770B2 (ja) | 2019-07-01 | 2023-06-28 | キヤノン株式会社 | 演算処理装置及び演算処理方法 |
JP7308674B2 (ja) * | 2019-07-08 | 2023-07-14 | キヤノン株式会社 | 演算処理装置及び演算処理方法 |
CN113126883B (zh) * | 2019-12-30 | 2024-07-09 | 深圳Tcl新技术有限公司 | 一种数据处理方法、系统及存储介质 |
CN111461293B (zh) * | 2020-03-17 | 2023-06-06 | 湖南大学 | 基于gpu的深度神经网络模型训练方法、装置和计算机设备 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6347344B1 (en) * | 1998-10-14 | 2002-02-12 | Hitachi, Ltd. | Integrated multimedia system with local processor, data transfer switch, processing modules, fixed functional unit, data streamer, interface unit and multiplexer, all integrated on multimedia processor |
US20130232304A1 (en) * | 2012-03-05 | 2013-09-05 | Qualcomm Incorporated | Accelerated interleaved memory data transfers in microprocessor-based systems, and related devices, methods, and computer-readable media |
US9747546B2 (en) * | 2015-05-21 | 2017-08-29 | Google Inc. | Neural network processor |
JP6631262B2 (ja) | 2016-01-14 | 2020-01-15 | 株式会社デンソー | 演算処理装置 |
GB2554711B (en) | 2016-10-06 | 2020-11-25 | Imagination Tech Ltd | Buffer addressing for a convolutional neural network |
KR102631381B1 (ko) * | 2016-11-07 | 2024-01-31 | 삼성전자주식회사 | 컨볼루션 신경망 처리 방법 및 장치 |
CN107239824A (zh) * | 2016-12-05 | 2017-10-10 | 北京深鉴智能科技有限公司 | 用于实现稀疏卷积神经网络加速器的装置和方法 |
CN106779060B (zh) * | 2017-02-09 | 2019-03-08 | 武汉魅瞳科技有限公司 | 一种适于硬件设计实现的深度卷积神经网络的计算方法 |
CN107679621B (zh) * | 2017-04-19 | 2020-12-08 | 赛灵思公司 | 人工神经网络处理装置 |
CN107301455B (zh) * | 2017-05-05 | 2020-11-03 | 中国科学院计算技术研究所 | 用于卷积神经网络的混合立方体存储系统及加速计算方法 |
-
2018
- 2018-05-28 JP JP2018101344A patent/JP2019207458A/ja active Pending
-
2019
- 2019-05-07 US US16/405,542 patent/US10996877B2/en active Active
- 2019-05-17 EP EP19175054.6A patent/EP3576022A1/en not_active Withdrawn
- 2019-05-24 CN CN201910442055.0A patent/CN110543938B/zh active Active
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP7494526B2 (ja) | 2020-03-30 | 2024-06-04 | 株式会社デンソー | メモリアロケーション方法及び処理装置 |
JP6962526B1 (ja) * | 2021-01-04 | 2021-11-05 | エッジコーティックス ピーティーイー. リミテッド | ニューラルネットワークアクセラレータランタイム再構成可能性 |
JP2022105467A (ja) * | 2021-01-04 | 2022-07-14 | エッジコーティックス ピーティーイー. リミテッド | ニューラルネットワークアクセラレータランタイム再構成可能性 |
DE102023126257A1 (de) | 2022-09-27 | 2024-03-28 | Renesas Electronics Corporation | Halbleitervorrichtung |
DE102023131790A1 (de) | 2022-11-16 | 2024-05-16 | Renesas Electronics Corporation | Bildverarbeitungsvorrichtung und bildverarbeitungsverfahren |
KR20240072060A (ko) | 2022-11-16 | 2024-05-23 | 르네사스 일렉트로닉스 가부시키가이샤 | 화상 처리 장치 및 화상 처리 방법 |
WO2024134735A1 (ja) * | 2022-12-19 | 2024-06-27 | 恒林日本株式会社 | 機械学習モデル生成装置、及び蓄電池の特性値算出装置 |
Also Published As
Publication number | Publication date |
---|---|
EP3576022A1 (en) | 2019-12-04 |
US10996877B2 (en) | 2021-05-04 |
CN110543938B (zh) | 2024-04-02 |
CN110543938A (zh) | 2019-12-06 |
US20190361620A1 (en) | 2019-11-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2019207458A (ja) | 半導体装置及びメモリアクセス設定方法 | |
CN109976355B (zh) | 轨迹规划方法、系统、设备及存储介质 | |
JP7021904B2 (ja) | 畳み込み神経網処理方法及び装置 | |
US11675997B2 (en) | Device and method for processing convolution operation using kernel | |
US6317427B1 (en) | Method and apparatus for adaptive port buffering | |
CN111160545A (zh) | 人工神经网络处理系统及其数据处理方法 | |
JP2018523182A (ja) | 深層畳み込みネットワークにおいて画像解像度を低減すること | |
CN110309088A (zh) | Zynq fpga芯片及其数据处理方法、存储介质 | |
US11907327B2 (en) | Arithmetic method | |
CN112783619A (zh) | 一种任务调度方法、装置和自动驾驶系统 | |
CN114399125B (zh) | 车队最优轨迹控制方法、装置、电子设备及存储介质 | |
JP6617461B2 (ja) | 制御装置、制御プログラム、及び制御方法 | |
CN104111911A (zh) | 信息处理系统、控制设备和控制信息处理系统的方法 | |
CN111126406B (zh) | 车辆行驶区域识别方法及装置 | |
JP2018039622A (ja) | トランスファークレーンの自動配備決定システムおよび移動体の最短移動経路算出方法 | |
CN109885392A (zh) | 分配车载计算资源的方法以及装置 | |
CN115421851A (zh) | 一种微服务伸缩方法、系统、云服务器及存储介质 | |
JP4083660B2 (ja) | 記憶システムおよびその制御方法 | |
CN113810402A (zh) | 面向网络资源调度的多协议适配方法和系统 | |
CN106598483A (zh) | 一种面向异构内存的可重构内存管理系统 | |
WO2020110273A1 (ja) | 経路探索支援装置、経路探索支援方法、及びコンピュータ読み取り可能な記録媒体 | |
CN113486452B (zh) | 一种用于无人驾驶设备远程遥控的方法及装置 | |
JPH1063607A (ja) | Dmaコントローラ | |
JP7263580B1 (ja) | サーバシステム及び車両 | |
JP3238232B2 (ja) | 半導体集積回路の自動配線方法 |