CN110543938A - 半导体装置和存储器访问设定方法 - Google Patents
半导体装置和存储器访问设定方法 Download PDFInfo
- Publication number
- CN110543938A CN110543938A CN201910442055.0A CN201910442055A CN110543938A CN 110543938 A CN110543938 A CN 110543938A CN 201910442055 A CN201910442055 A CN 201910442055A CN 110543938 A CN110543938 A CN 110543938A
- Authority
- CN
- China
- Prior art keywords
- layer
- banks
- memory
- transfer
- intermediate layer
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 230000015654 memory Effects 0.000 title claims abstract description 242
- 238000000034 method Methods 0.000 title claims abstract description 213
- 239000004065 semiconductor Substances 0.000 title claims abstract description 130
- 238000012546 transfer Methods 0.000 claims abstract description 394
- 230000008569 process Effects 0.000 claims abstract description 117
- 238000004364 calculation method Methods 0.000 claims abstract description 88
- 238000013527 convolutional neural network Methods 0.000 claims abstract description 49
- 230000008859 change Effects 0.000 claims abstract description 8
- 238000012545 processing Methods 0.000 claims description 214
- 238000011176 pooling Methods 0.000 claims description 33
- 238000001994 activation Methods 0.000 claims description 26
- 230000004913 activation Effects 0.000 claims description 19
- 230000005540 biological transmission Effects 0.000 claims description 16
- 230000006870 function Effects 0.000 claims description 16
- 230000008878 coupling Effects 0.000 claims description 6
- 238000010168 coupling process Methods 0.000 claims description 6
- 238000005859 coupling reaction Methods 0.000 claims description 6
- 239000000758 substrate Substances 0.000 claims 1
- 239000010410 layer Substances 0.000 description 376
- 238000010586 diagram Methods 0.000 description 30
- 101100218322 Arabidopsis thaliana ATXR3 gene Proteins 0.000 description 20
- 102100032742 Histone-lysine N-methyltransferase SETD2 Human genes 0.000 description 20
- 101100149326 Homo sapiens SETD2 gene Proteins 0.000 description 20
- 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 20
- 101100533304 Plasmodium falciparum (isolate 3D7) SETVS gene Proteins 0.000 description 20
- 101150117538 Set2 gene Proteins 0.000 description 20
- 238000004458 analytical method Methods 0.000 description 11
- 238000001514 detection method Methods 0.000 description 10
- 238000013528 artificial neural network Methods 0.000 description 7
- 230000000052 comparative effect Effects 0.000 description 7
- 238000007726 management method Methods 0.000 description 6
- 230000014759 maintenance of location Effects 0.000 description 5
- 239000002356 single layer Substances 0.000 description 4
- 102100029768 Histone-lysine N-methyltransferase SETD1A Human genes 0.000 description 3
- 101000865038 Homo sapiens Histone-lysine N-methyltransferase SETD1A Proteins 0.000 description 3
- 230000003247 decreasing effect Effects 0.000 description 3
- 230000000717 retained effect Effects 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 238000013144 data compression Methods 0.000 description 2
- 230000007423 decrease Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 239000000284 extract Substances 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
- 230000008901 benefit Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 238000012886 linear function Methods 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
- 230000009467 reduction Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
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)
- Memory System (AREA)
- Complex Calculations (AREA)
Abstract
本申请涉及半导体装置和存储器访问设定方法。对存储器访问的限制降低了在卷积神经网络中的卷积处理期间的相关技术半导体装置的计算能力。根据本发明的一个方面的半导体装置包括加速器部分,加速器部分通过使用具有能够在单个存储体的基础上改变读取/写入状态的多个存储体的存储器来对包括在卷积神经网络中的多个中间层执行计算。加速器部分包括网络层控制部分,网络层控制部分根据包括在卷积神经网络中的中间层的输入数据和输出数据的传送量和传送速率,以改变分配给存储中间层的输入数据或输出数据的存储体的读取/写入状态的方式来控制存储器控制部分。
Description
相关申请的交叉引用
2018年5月28日提交的日本专利申请号2018-101344的包括说明书、附图和摘要在内的公开内容通过引用整体并入本文。
技术领域
本发明涉及半导体装置和存储器访问设定方法。例如,本发明涉及用于执行关于卷积神经网络的过程的半导体装置,并且还涉及存储器访问设定方法。
背景技术
近年来,在图像识别的领域中提出了许多基于神经网络的识别过程。在这种图像处理的领域中使用的神经网络之一是卷积神经网络(CNN)。在日本未审查专利申请公开号2017-126203中公开了关于卷积神经网络的技术的示例。
日本未审查专利申请公开号2017-126203中描述的算术处理单元包括计算部分、外部存储器和缓冲器,并且利用多个层级耦合的处理层执行计算。当写出数据时,缓冲器将部分数据保留在数据保留区域中,并通过先进先出方法将未保留在数据保留区域中的剩余数据通过环形缓冲区域写出到外部存储器。此外,当读出数据时,缓冲器将保留在数据保留区域中的数据读出到计算部分,并且通过先进先出方法将未保留在数据保留区域中的剩余数据通过环形缓冲区域读出到计算部分。
发明内容
卷积神经网络的特征在于,输入/输出数据的传送量和传送速率从一个处理层到另一个处理层显著变化。然而,日本未审查专利申请公开号2017-126203中描述的算术处理单元具有固定的缓冲器容量。因此,如果在日本未审查专利申请公开号2017-126203中描述的算术处理单元中,在所需数据传送量或所需数据传送速率增加或减少的情况下,由于缓冲器容量不足或数据传送速率不足而访问外部存储器,则由于这种变化导致处理停滞。这导致算术处理速度的降低。
根据以下描述以及根据附图,其他问题和新颖特征将变得显而易见。
根据本发明的一个方面,提供了一种包括加速器部分的半导体装置。加速器部分能够通过使用具有能够在单个存储体的基础上改变读/写状态的多个存储体的存储器来对包括在卷积神经网络中的多个中间层执行计算。加速器部分包括网络层控制部分。网络层控制部分根据包括在卷积神经网络中的中间层的输入数据和输出数据的传送量和传送速率,以改变分配给存储中间层的输入数据或输出数据的存储体的读/写状态的方式,来控制存储器控制部分。
根据本发明的以上方面,通过改变分配给每个中间层的存储体的读/写状态,半导体装置能够保持高处理速度。
附图说明
图1是示意性地图示出根据本发明第一实施例的卷积神经网络的过程的框图;
图2是示意性地图示出根据第一实施例的卷积神经网络的卷积处理层中的处理的流程图;
图3是图示出根据第一实施例的卷积神经网络的卷积乘积和运算的图;
图4是图示出根据第一实施例的半导体装置的框图;
图5是图示出根据第一实施例的加速器部分中的存储器的配置的框图;
图6是图示出根据第一实施例的包括在加速器部分中的网络层控制部分和存储器控制部分的配置的框图;
图7是图示出根据第一实施例的层计算部分的框图;
图8是图示出根据第一实施例为了开始卷积处理而由半导体装置执行的操作的序列图;
图9是图示出根据第一实施例的半导体装置中的操作设定信息的图;
图10是图示出根据第一实施例的半导体装置中的用于确定传送源存储体分配和传送源访问方法的过程的流程图;
图11是图示出根据第一实施例的半导体装置1中的用于确定传送目的地存储体分配和传送目的地访问方法的过程的流程图;
图12是图示出根据第一实施例的半导体装置的操作的定时图;
图13是图示出在执行关于根据第一实施例的半导体装置的第一层的处理的情况下的数据传送状态的图;
图14是图示出在执行关于根据第一实施例的半导体装置的第二层的处理的情况下的数据传送状态的图;
图15是图示出在执行关于根据第一实施例的半导体装置的第三层的处理的情况下的数据传送状态的图;
图16是图示出根据本发明第二实施例的包括在加速器部分中的网络层控制部分和存储器控制部分的配置的框图;
图17是图示出根据第二实施例的半导体装置的操作的定时图;
图18是图示出根据第二实施例的半导体装置中用于数据重新填充的数据传送路径的图;
图19是图示出根据第二实施例的半导体装置中用于数据保存的数据传送路径的图;
图20是图示出根据比较示例的半导体装置的操作的定时图;和
图21是图示出根据本发明第三实施例的半导体装置的框图。
具体实施方式
在以下描述中以及在附图中,为了解释清楚,根据需要进行省略和简化。此外,针对在附图中被描绘为用于执行各种过程的功能块的各种元件的硬件可以由CPU(中央处理单元)、存储器或其他电路来实现,而针对这些元件的软件例如通过加载到存储器中的程序来实现。因此,本领域技术人员应该理解,功能块可以仅通过硬件、仅通过软件、或通过硬件和软件的组合来不同地实现,并且没有限制性地由硬件单独地或由软件单独地实现。此外,附图中相同的元件由相同的附图标号来指明,并将不再重复描述。
此外,可以将上面提及的程序存储在各种类型的非暂时性计算机可读介质上并提供给计算机。非暂时性计算机可读介质包括各种类型的有形记录介质。非暂时性计算机可读介质的示例包括磁记录介质(例如,软盘、磁带或硬盘驱动器)、磁光记录介质(例如磁光盘)、CD-ROM(只读存储器)、CD-R、CD-R/W和半导体存储器(例如掩模ROM、PROM(可编程ROM)、EPROM(可擦除PROM)、闪存ROM、或RAM(随机访问存储器))。可以通过使用各种类型的暂时性计算机可读介质将程序提供给计算机。暂时性计算机可读介质的示例包括电信号、光信号和电磁波。暂时性计算机可读介质可以通过电线、光纤或其他有线通信路径或通过无线通信路径将程序提供给计算机。
根据本发明第一实施例的半导体装置通过使用卷积神经网络来执行作为一个过程的图像识别过程。因此,现在将描述卷积神经网络的处理。图1是示意性地图示出根据第一实施例的卷积神经网络的过程的框图。图1中描绘的示例是卷积神经网络的示例性过程。也可以使用其他形式的卷积神经网络。
如图1中所图示,卷积神经网络包括卷积处理层和完全连接层。卷积处理层通过对处理目标图像数据进行滤波来提取处理目标图像的特征点。完全连接层将二维排列的图像数据转换为一维排列的数据,以便确定由处理目标图像数据所指示的内容。
卷积处理层通过对各层应用不同的滤波器来执行卷积乘积和运算。在图1的示例中,卷积处理层包括第一层至第三层,并且从第一层至第三层依次执行处理。通过存储器传送每层的输入/输出数据。在图1的示例中,在第一层中执行卷积乘积和运算P1和池化过程P2,在第二层中仅执行卷积乘积和运算P3,并且在第三层中执行卷积乘积和运算P4和池化过程P5。
此外,输入/输出数据的传送量和传送速率由于卷积处理层的每层的处理而显著变化。例如,在第一层中,输入数据以传送量为50kB同时传送速率为3.8GB/s的方式输入,输出数据以传送量为200kB同时传送速率为20GB/s的方式输出。在第二层中,输入数据以传送量为200kB同时传送速率为20GB/s的方式输入,输出数据以传送量为100kB同时传送速率为20GB/s的方式输出。在第三层中,输入数据以传送量为100kB同时传送速率为20GB/s的方式输入,输出数据以传送量为200kB同时传送速率为50GB/s的方式输出。
完全连接层使用完全连接神经网络(FCNN)来对由卷积处理层生成的二维排列的数据执行计算。在图1的示例中,完全连接层包括三层,并且执行完全连接神经网络的两个过程和基于一个softmax函数的一个确定过程。softmax函数是激活函数,其强调不小于预定值的输入值,并且衰减小于预定值的输入值。完全连接层的输出值指示最可能由处理目标图像数据表示的图像。从图1的示例获得的结果指示手写数字“2”最有可能由处理目标图像数据表示(以81%概率表示数字“2”)。
根据第一实施例的半导体装置通过使用加速器部分在卷积处理层上执行计算,并且通过使用执行通用计算的主计算部分(例如,CPU)在完全连接层上执行计算。在根据第一实施例的半导体装置中,卷积神经网络通过使用上述两个计算部分--即加速器部分和主计算部分来执行图像识别过程。然而,根据第一实施例的半导体装置的特征例如在于:其被配置为当加速器部分执行卷积处理时使用有效的硬件资源。因此,下面将更详细地描述在第一层至第三层中执行的过程。
图2是示意性地图示出根据第一实施例的卷积神经网络的卷积处理层中的处理的流程图。图2的示例图示出卷积处理层中包括的一层中的处理。在图1中描绘的第二层中,没有执行图2中描绘的池化过程。此外,可以在卷积乘积和运算之后通过使用预定的激活函数来在卷积处理层中的每个层中执行激活过程。然而,从图2中省略了这样一个激活过程。
如图2中所图示,在卷积处理层中包括的一层中执行卷积乘积和运算和池化过程。在卷积处理中,例如,将具有5个水平像素和5个垂直像素的滤波器叠加在具有28个水平像素和28个垂直像素的处理目标图像数据上,对因此被放置在同一位置中的像素的值进行积分,并且将滤波器中的所有像素的积分值相加以获得新的像素值。将参考图3更详细地描述该卷积乘积和运算处理。
图3是图示出根据第一实施例的卷积神经网络的卷积乘积和运算的图。在图3的示例中,将3×3滤波器应用于6×6处理目标图像数据。如图3中所图示,通过将滤波器叠加在处理目标图像数据上来发起卷积乘积和运算。然后计算因此放置在同一位置中的像素的积分值,并且将滤波器中的所有像素的积分值相加以计算经受过卷积乘积和处理的图像的一个像素的值。然后,在一个卷积处理中,将滤波器叠加在处理目标图像数据上的位置一次偏移一个像素,以便将滤波器叠加在处理目标图像数据的所有像素上。随后,通过计算滤波器被偏移的每个位置处的乘积和运算值来生成由卷积乘积和处理所产生的图像。以这种方式,在卷积乘积和运算中执行了多次积分和加法。在如上所述的多次执行预定计算的情况下,通过以加速器之类的硬件方式执行特定计算,可以减少计算所需的时间。滤波器叠加的位置被偏移的量(步幅)不限于一个像素,而是可以适当地进行设置。
在图2的示例中,提供了20个滤波器。执行卷积乘积和运算处理以生成关于每个滤波器的卷积处理图像。因此,生成的卷积处理图像的数量与滤波器的数量相同。
此外,如图2中所图示,在卷积处理层中的层中执行池化过程。在图2的示例中,采用最大池化过程作为池化过程的方法。最大池化过程是如下图像数据压缩方法:选择例如经过卷积乘积和处理的图像的预定区域,并使用所选区域中的最大值作为相关像素的代表值。
如前所提及,在卷积神经网络的卷积处理层中,通过每层的处理,在层之间传达的数据的传送量和传送速率显著变化。因此,为了在由卷积处理层所使用的存储器具有固定容量的情况下增加处理能力,需要考虑由每层所传达的数据的最大传送量和最大传送速率来设置存储器的容量和传送速率。然而,考虑到最大传送量和最大传送速率而设计的存储器实际上可能不会被实现,因为它具有大的电路面积并且消耗大量的功率。鉴于这种情形,根据第一实施例的半导体装置被配置成使得所采用的存储器的容量和传送速率取决于每层的处理而变化。因此,可以使得存储器的最大容量适用于最大传送量和最大传送速率,同时存储器的容量和存储器中每个存储体的传送速率被设置为小于最大传送量和最大传送速率。下面将详细描述根据第一实施例的半导体装置。
图4是图示出根据第一实施例的半导体装置1的框图。如图4中所图示,根据第一实施例的半导体装置1包括主计算部分10、加速器部分11、图像输入部分12和本地总线14。图4描绘了作为由半导体装置1使用的外部部件的外部存储器EX_MEM。外部存储器EX_MEM例如是诸如闪存之类的非易失性存储器或诸如DDR-DRAM(双倍数据速率-动态随机访问存储器)之类的易失性存储器。
主计算部分10是能够执行程序的CPU或其他计算部分。在所执行的程序中,主计算部分10根据从外部存储器EX_MEM中读取的用户设定信息来生成将被给予加速器部分11的操作设定信息SET2。例如,可以执行处理以生成操作设定信息SET2并将其存储在外部存储器EX_MEM中,或者执行处理以使另一设备预先生成操作设定信息SET2并将其存储在外部存储器EX_MEM中。随后,当半导体装置1启动时,可以从外部存储器EX_MEM读取所存储的操作设定信息SET2并将其加载到加速器部分11中。在图4中,从外部存储器EX_MEM读取的操作设定信息被指定为操作设定信息SET1。也就是说,操作设定信息SET1与操作设定信息SET2相同。只要将操作设定信息SET1存储在外部存储器EX_MEM中,就不需要在每次启动时生成操作设定信息SET2。这减少了启动所需的时间。此外,主计算部分10执行关于完全连接层的处理,以用于根据所执行的程序基于从加速器部分11输出的结果来确定输入图像。当在完全连接层上执行计算时,主计算部分10使用外部存储器EX_MEM。
加速器部分11执行关于卷积处理层的过程,其利用应用于输入图像的预定滤波器来执行卷积,该过程是关于卷积神经网络的过程之一。此外,加速器部分11以能够与主计算部分10、图像输入部分12和外部存储器EX_MEM通信的方式耦合到本地总线14。
图像输入部分12从半导体装置1的外部读取处理目标图像数据,并将所读取的处理目标图像数据传达到加速器部分11。
现在将详细描述加速器部分11。加速器部分11包括网络层控制部分20、层计算部分21、22、存储器控制部分23和存储器24、25。
根据包括在卷积神经网络中的中间层的输入数据和输出数据的传送量和传送速率,网络层控制部分20以改变分配给存储中间层的输入数据或输出数据的存储器24、25中的存储体的读取/写入状态的方式,来控制存储器控制部分23。此外,在多个连续中间层之中的先前中间层被指定为第一中间层并且后续中间层被指定为第二中间层的情况下,网络层控制部分20以在关于第二中间层的过程中对在关于第一中间层的过程中被分配可写入状态的存储体分配可读取状态的方式,控制存储器控制部分23。
更具体地,当输入数据和输出数据的传送量增加时,网络层控制部分20增加被分配相同读取/写入属性的存储体的数量,并且当输入数据和输出数据的传送速率增加时增加可并行访问的存储体的数量。从不同的观点来看,如果要被输入到中间层的输入数据的传送量大于一个存储体的容量,则网络层控制部分20设置可读取存储体的数量使得总容量大于传送量。此外,如果从中间层输出的输出数据的传送量大于一个存储体的容量,则网络层控制部分20设置可写入存储体的数量使得总容量大于传送量。
此外,如果连续中间层之中的先前中间层的输出数据的传送速率或连续中间层之中的后续中间层的输入数据的传送速率大于用于将存储器控制部分23耦合到存储体的总线的每存储体的总线传送速率,则网络层控制部分20以每存储体的传送速率小于总线传送速率的方式设置可读取存储体的数量。如果从中间层输出的输出数据的传送速率大于将存储器控制部分23耦合到存储体的总线的总线传送速率,则网络层控制部分20以每存储体的传送速率小于总线传送速率的方式设置可写入存储体的数量。简而言之,网络层控制部分20设置存储体的写入状态,以便提供在对存储体的写入期间用于在连续中间层之间的数据传送的传送量和传送速率以及在从存储体读取期间的传送量和传送速率。
层计算部分21、22是执行相同过程的处理块。层计算部分21、22分别执行包括对包括在卷积神经网络中的每个中间层中的处理目标图像数据元素的卷积乘积和运算的运算处理。更具体地,层计算部分21、22执行例如用于通过将滤波器应用于处理目标图像数据来生成新图像(所谓的特征图)的卷积乘积和运算,用于通过将预定的激活函数应用于由卷积乘积和运算生成的特征图来激活每个像素值的激活过程,以及用于压缩特征图的池化过程。
存储器控制部分23不仅在作为存储器24、25中的访问单元的每个存储体的可读取状态和可写入状态之间切换,而且还在层计算部分21、22和存储器24、25之间执行数据发送和接收的路由。
存储器24、25是层计算部分21、22通过存储器控制部分23使用的储存区域。存储器24、25存储包括在卷积神经网络中的中间层中的层计算部分21、22的输入/输出数据,并且每个包括多个独立可读取和可写入的存储体。
在图4的示例中,加速器部分11中的两层计算部分共享网络层控制部分20和存储器控制部分23。每个层计算部分能够处理预定数量的图像。因此,当要处理许多图像时,使用多个层计算部分来并行处理这许多图像。也就是说,基于处理目标图像的数量,加速器部分11增加或减少要并行操作的层计算部分的数量。因此,当要处理少量图像时,根据第一实施例的半导体装置1通过减少要操作的层计算部分的数量而降低功耗。
此外,根据第一实施例的半导体装置1被配置为使得两个层计算部分共享一组网络层控制部分20和存储器控制部分23。由于上述配置,根据第一实施例的半导体装置1能够容易地将存储区域分发给层计算部分并防止数据干扰。
根据第一实施例的半导体装置1的特征例如在于存储器中的存储体的分配和使用。因此,将通过解释仅一个层计算部分和仅一个存储器,来简要且清楚地描述根据第一实施例的半导体装置1的操作。假设层计算部分22以与层计算部分21相同的方式操作,并且存储器25具有与存储器24相同的配置并以与存储器24相同的方式操作。
现在将更详细地描述加速器部分11。图5是图示出加速器部分11中的存储器24的配置的框图。如图5中所图示,存储器24包括多个存储体。在图5的示例中,存储器24包括存储体311-31n(n是指示存储体的数量的整数;以下同样适用)。存储体311-31n每个都能够独立地与存储器控制部分23通信。此外,存储体311-31n每个都能够在可读取状态(读取状态)和可写入状态(写入状态)之间独立地切换。存储器控制部分23向每个存储体提供读取/写入命令信号(图5中的读取/写入命令信号),并在单个存储体的基础上控制读取/写入状态。作为用于每个存储体的存储器,例如,使用SRAM(静态随机访问存储器)或其他可快速访问的存储元件。
接下来,图6是图示出根据第一实施例的加速器部分11中的网络层控制部分20和存储器控制部分23的配置的框图。
将包括运算处理信息CAL_SET和存储器设定信息MEM_SET在内的操作设定信息SET1(或操作设定信息SET2;以下描述是在网络层控制部分20基于操作设定信息SET2进行操作的假设下给出的)给予给网络层控制部分20。算术处理信息CAL_SET涉及每个中间层,并且包括指示由层计算部分21执行的卷积乘积和运算,由层计算部分21应用的激活函数、以及由层计算部分21应用的池化过程的类型的信息。基于算术处理信息CAL_SET,网络层控制部分20控制层计算部分21。同时,存储器设定信息MEM_SET涉及每个中间层,并包括用于在存储体读取状态和存储器写入状态之间进行选择的设置和用于在顺序存储体访问和并行存储体访问之间进行选择的设置。基于存储器设定信息MEM_SET,网络层控制部分20控制存储器控制部分23。更具体地,网络层控制部分20和存储器控制部分23的配置和操作如下所述。
如图6中所图示,网络层控制部分20包括列表分析处理部分33、算术控制部分34和存储体管理部分35。在接收到操作设定信息SET2后,列表分析处理部分33分析接收到的操作设定信息,并提取包括在操作设定信息中的算术处理信息CAL_SET和存储器设定信息MEM_SET。然后,列表分析处理部分33将提取的算术处理信息CAL_SET输出到算术控制部分34,并将提取的存储器设定信息MEM_SET输出到存储体管理部分35。在这种情形下,列表分析处理部分33监视忙信号BS1和忙信号BS2二者。忙信号BS1被用来报告层计算部分21的过程完成。忙信号BS2被用来报告存储器控制部分23的过程完成。尽管稍后将描述细节,但是关于每个卷积层的算术处理信息CAL_SET和存储器设定信息MEM_SET被写入操作设定信息SET2中。当忙信号BS1、BS2二者都指示忙状态被清除时,列表分析处理部分33改变要被给予给算术控制部分34的运算处理信息CAL_SET的层和被给予给存储体管理部分35的存储器设定信息MEM_SET的层。
基于从列表分析处理部分33接收的算术处理信息CAL_SET,算术控制部分34将表示在算术处理信息CAL_SET内写入的设置的物理控制信号给予层计算部分21。基于从列表分析处理部分33接收的存储器设定信息MEM_SET,存储体管理部分35将表示在存储器设定信息MEM_SET内写入的设置的物理控制信号给予存储器控制部分23中的访问控制部分36。
更具体地,算术控制部分34和存储体管理部分35是地址解码器。指示设置要被给予的寄存器的地址的逻辑地址被写入在从列表分析处理部分33输出的算术处理信息CAL_SET和存储器设定信息MEM_SET内。因此,根据第一实施例的加速器部分11使用算术控制部分34和存储体管理部分35来将在算术处理信息CAL_SET和存储器设定信息MEM_SET内写入的逻辑地址转换为物理地址。然后,基于物理地址,算术控制部分34将由算术处理信息CAL_SET(REG)指示的设置写入到层计算部分21的寄存器中。同时,基于转换时获得的物理地址,存储体管理部分35将由存储器设定信息MEM_SET(REG)指示的设置写入到存储器控制部分23的寄存器中。算术处理信息CAL_SET(REG)是这样的算术处理信息CAL_SET,在其中各种设置与物理地址相关联,并且这些设置的内容与算术处理信息CAL_SET的内容相同。此外,存储器设定信息MEM_SET(REG)是其中各种设置与物理地址相关联的存储器设定信息MEM_SET,并且这些设置的内容与存储器设定信息MEM_SET的内容相同。
存储器控制部分23包括访问控制部分36和选择电路37。基于从存储体管理部分35给出的存储器设定信息MEM_SET,访问控制部分36设置用于由选择电路37处理的数据的传送路径。选择电路37选择用作针对输入到层计算部分21的输入数据的传送源的存储体,并选择用作针对从层计算部分21输出的输出数据的传送目的地的存储体。存储器控制部分23然后使用由访问控制部分36和选择电路37形成的数据传送路径,以便在层计算部分21和存储器24中的存储体之间执行数据发送/接收。
现在将详细描述层计算部分21。图7是图示出根据第一实施例的层计算部分21的框图。层计算部分22具有与层计算部分21相同的配置。因此,下面的描述针对层计算部分21。由于层计算部分21可以是多种不同的形式,所以图7描绘了两种不同的电路形式。图7的上半部分描绘了第一形式的层计算部分21a,并且图7的下半部分描绘了第二形式的层计算部分21b。
层计算部分21a包括卷积乘积和运算部分40、激活处理部分41和池化处理部分42。卷积乘积和运算部分40将具有预定图像尺寸的滤波器叠加在处理目标图像数据上,偏移滤波器叠加的位置,计算在滤波器叠加的每个位置处的处理目标图像数据的像素值与滤波器的像素值的乘积,计算关于滤波器中包括的像素的乘积的总和,并生成乘积和运算结果图像。卷积乘积和运算部分40使用的滤波器、指示滤波器类型数量的输入通道的数量、以及指示要被输出的乘积和运算结果图像数量的输出通道的数量由算术处理信息CAL_SET来指定。
将激活处理部分41安置在卷积乘积和运算部分40和池化处理部分42之间。如果包括在乘积和运算结果图像中的像素值不满足预定条件,则激活处理部分41通过对像素值应用预定的激活函数来对乘积和运算结果图像执行激活过程,以便用规定值替换像素值。由卷积乘积和运算部分40执行的激活过程中使用的激活函数的类型由算术处理信息CAL_SET来指定。例如,ReLU(整流线性单元、整流器、整流线性函数)可以被用作激活函数。
池化处理部分42将乘积和运算结果图像中的像素分组为预定尺寸,使用所分组的像素的代表值作为新的像素值,并生成由新的像素值所形成的处理图像。算术处理信息CAL_SET指定要在池化过程中使用的池化方法的类型。例如,可以使用最大池化过程作为池化方法。
同时,图7的下半部分中描绘的层计算部分21b通过将第一选择电路(例如,选择电路43)和第二选择电路(例如,选择电路44)添加到层计算部分21a来获得。选择电路43选择性地将输入数据递送到卷积乘积和运算部分40。选择电路44选择性地向存储器控制部分23输出从池化处理部分42输出的输出数据。使用选择电路43、44减少了可同时处理的通道的数量,但降低了存储器控制部分23和层计算部分21之间的布线。虽然图7描绘了其中将选择电路43、44安置在层计算部分21中的示例性配置,但是可以可替代地将选择电路43、44安置在存储器控制部分23的选择电路37中。顺便提及,卷积神经网络处理使得数据传送量通常随着层深度的增加而减少。因此,一种替代方案是让选择电路37对多个通道的结果进行比特组合,并在单个通道上输出比特组合的结果。
现在将描述根据第一实施例的半导体装置1的操作。首先,图8是图示出根据第一实施例为了开始卷积处理而由半导体装置1执行的操作的序列图。如图8中所图示,当启动时,根据第一实施例的半导体装置1首先在主计算部分10中以及在网络层控制部分20中执行初始设定过程(步骤S11和步骤S21)。在初始设定过程中,执行重置过程以将电路置于预定义状态。
接下来,主计算部分10执行从内置存储器13读取操作条件的操作条件输入过程(步骤S12)。在步骤S12中,可以替代地从外部获取操作条件。随后,主计算部分10根据输入的操作条件生成控制命令列表(例如,操作设定信息SET2)(步骤S14)。接下来,主计算部分10将在步骤S14中生成的操作设定信息SET2发送到网络层控制部分20(步骤S14),然后网络层控制部分20从主计算部分10接收操作设定信息SET2(步骤S22)。
在接收到操作设定信息SET2后,网络层控制部分20执行在列表分析处理部分33中分析所接收的操作设定信息SET2的控制命令列表分析过程(步骤S23)。网络层控制部分20执行允许算术控制部分34和存储体管理部分35根据步骤S23中的分析处理的结果在存储器控制部分23和层计算部分21、22的寄存器中输入操作设置非寄存器设定过程(步骤S24)。随后,网络层控制部分20将准备完成通知发送到主计算部分10(步骤S25)。
在从网络层控制部分20接收到准备完成通知后(步骤S15),主计算部分10将操作开始命令发送到网络层控制部分20(步骤S16)。在从主计算部分10接收到操作开始命令时,网络层控制部分20开始卷积神经网络过程(步骤S26)。
在根据第一实施例的半导体装置1中,基于给予网络层控制部分20的控制命令列表来确定加速器部分11的操作。因此,现在将详细描述生成控制命令列表的方法(例如,操作设定信息)。图9是图示出根据第一实施例的半导体装置1中的操作设定信息的图。
图9描绘了其中主计算部分10生成操作设定信息SET2的示例。在图9中,操作设定信息SET2的示例被描绘在从主计算部分10延伸的箭头所指向的部分中。基于存储在外部存储器EX_MEM中的操作条件信息和硬件配置信息,主计算部分10生成操作设定信息SET2。操作条件信息由半导体装置1的用户给出,并存储在外部存储器EX_MEM中。操作条件信息至少包括关于网络配置的信息和用于指定要被输入到半导体装置1的输入图像的尺寸的输入图像尺寸信息。硬件配置信息例如由供应半导体装置1的制造商提供,并存储在外部存储器EX_MEM中。硬件配置信息至少包括在用于将存储器控制部分23耦合到存储器24中的存储体的总线中的关于每个存储体的总线带宽信息(图9中的总线带宽)和指示存储器24中的存储体的容量和数量的存储器配置信息(图9中的存储器配置)。
现在将参考图9中描绘的示例来描述由主计算部分10生成的操作设定信息SET2。如图9中所描绘的,操作设定信息SET2包括存储器设定信息MEM_SET和算术处理信息CAL_SET。在图9中,以表格形式来表达操作设定信息SET2。但是,可替代地,可以例如以源代码的形式来表达操作设定信息SET2。在图9的示例中,竖直指示包括在操作设定信息SET2中的设定参数,并且水平指示设定参数的值。此外,如图9中所指示,操作设定信息SET2使得为每个卷积处理层写入设定参数。此外,图9的示例指示在操作期间加速器部分11将使用什么存储器,并且指示表示要使用的存储器中的存储体的存储容量的初始设置。
现在将描述图9中描绘的设定参数。存储器设定信息MEM_SET包括至少存储体尺寸、传送源存储体分配、传送源访问方法、传送目的地存储体分配和传送目的地访问方法作为设定参数。存储体尺寸是指示存储器24中包括的要被用于卷积处理层的中间层中的处理的存储体的数量和存储容量的设定参数。考虑到中间层计算所需的最大容量和最大数据传送频带——这取决于硬件配置信息内的存储器配置信息以及取决于操作条件信息中写入的网络配置和输入图像尺寸,主计算部分10确定由存储体尺寸指定的存储体的数量(或存储体的数量)。此外,基于存储器配置信息,主计算部分10确定要被使用的存储体的存储容量。
当被用作初始设置时,传送源存储体分配是指定要被用作传送源存储器的存储器的设定参数。同时,当被用作中间层设置(图9中的第一到第三层设置)时,传送源存储体分配是指定要被用于每层中的处理的存储体的设定参数。传送源存储体分配以满足目标在于参数生成的目标层的输入数据的传送量并且满足目标层之前的层的输出数据的传送量的方式确定存储体的数量。此外,在目标层的处理期间未被占用的存储体的数量被指定为要被作为用于传送源存储体分配的设定参数写入的存储体的数量。
此外,要被作为传送源存储体分配的设定参数写入的存储体的数量也根据数据传送速率增加或减少。例如,如果目标层的输入数据的传送速率或目标层之前的层的输出数据的传送速率超过每存储体的最大总线带宽,则增加访问的存储体的数量,使得每存储体的传送速率不会超过最大总线带宽。
现在将描述根据第一实施例的半导体装置1中的数据传送量。在卷积神经网络中,预先确定要被应用于中间层的滤波器,并且输入图像数据的数据尺寸也是预先已知的。此外,池化处理的方法从网络配置信息中是很明显的。也就是说,可以在卷积乘积和运算之后预先确定数据压缩的程度。因此,根据第一实施例的半导体装置1能够从输入到中间层的输入数据的数据尺寸、应用于中间层的滤波器的类型、和池化过程中的压缩比知道输出数据的数据尺寸。因此,根据第一实施例的半导体装置1使用输出数据的数据尺寸作为输出数据的传送量并且作为输入数据的传送量。
附加地,现在将描述根据第一实施例的半导体装置1中的传送速率。在根据第一实施例的半导体装置1中,输入数据的传送速率在意义上类似于层计算部分21的输入数据的数据处理速率。此外,输出数据的传送速率具有用于生成层计算部分21的输出数据的数据处理速率。更具体地,通过对输入到层计算部分21的图像数据应用滤波器来执行卷积乘积和运算。可以通过将输入数据的数据容量(例如,传送量)除以对从存储器24读取的输入数据执行卷积乘积和运算所需的时间来计算输入数据的传送速率。此外,在层计算部分21中,通过卷积乘积和运算、激活过程和池化过程生成输出数据。可以通过将输出数据的容量(例如,传送量)除以上述处理之后开始输出数据的输出的瞬时与完成输出数据的输出的瞬时之间的时间间隔来计算输出数据的传送速率。也就是说,数据的传送速率可以被认为是层计算部分21的输入或输出处理速率。因此,本文使用表述“数据传送速率”作为层计算部分21的输入和输出数据处理速率的指标。
传送源访问方法是这样的设定参数,其指定被分配为传送源存储体的存储体要被顺序访问还是并行访问。传送源访问方法以满足目标在于参数生成的目标层的输入数据的传送速率并满足目标层之前的层的输出数据的传送速率的方式确定访问存储体的方法。更具体地,如果目标层的输入数据的传送速率或目标层之前的层的输出数据的传送速率超过每存储体的最大总线带宽,则增加要被并行访问的存储体的数量,使得每存储体的传送速率不超过最大传送速率。当要使用这种并行访问时,并行访问被用作传送源访问方法。同时,如果目标层的输入数据的传送速率和目标层之前的层的输出数据的传送速率都没有超过每存储体的最大总线带宽,则使用顺序访问作为针对目标层的传送源访问方法。
当被用作初始设置时,传送目的地存储体分配是指定要被用作传送目的地存储器的存储器的设定参数。同时,当被用作中间层设置(图9中的第一到第三层设置)时,传送目的地存储体分配是指定要被用于每层中的处理的存储体的设定参数。传送目的地存储体分配以满足目标在于参数生成的目标层的输出数据的传送量并且满足目标层之后的层的输入数据的传送量的方式确定存储体的数量。此外,在目标层的处理期间未被占用的存储体的数量被指定为要被作为用于传送目的地存储体分配的设定参数写入的存储体的数量。
此外,要被作为传送目的地存储体分配的设定参数写入的存储体的数量也根据数据传送速率增加或减少。例如,如果目标层的输出数据的传送速率或目标层之后的层的输入数据的传送速率超过每存储体的最大总线带宽,则增加访问的存储体的数量,使得每存储体的传送速率不超过最大总线带宽。
传送目的地访问方法是指定是顺序访问还是并行访问被分配为传送目的地存储体的存储体的设定参数。传送目的地访问方法以满足目标在于参数生成的目标层的输出数据的传送速率并且满足目标层之后的层的输入数据的传送速率的方式确定访问存储体的方法。更具体地,如果目标层的输出数据的传送速率或目标层之后的层的输入数据的传送速率超过每存储体的最大总线带宽,则增加要被并行访问的存储体的数量,使得每存储体的传送速率不会超过最高传送速率。当要使用这种并行访问时,并行访问被用作传送目的地访问方法。同时,如果目标层的输出数据的传送速率和目标层之后的层的输入数据的传送速率都没有超过每存储体的最大总线带宽,则使用顺序访问作为针对目标层的传送目的地访问方法。
图9中描绘的存储器设定信息MEM_SET是通过上述设定方法确定的设定参数的示例。在图9中,存储体编号由符号#和指示存储体编号的数字的组合来指示。
更具体地,图9描绘了其中包括在存储器24中的存储体#1至#4具有128kB的存储容量并且被用于在卷积处理层中进行处理的示例。因此,作为存储器设定信息MEM_SET的初始设置,写入的存储体尺寸指示存储体#1至#4各自具有128kB的容量,并且写入的传送源存储体分配和传送目的地存储体分配都指示存储器24。
此外,在图9中描绘的存储器设定信息MEM_SET的示例中,写入的第一层设置指示传送源存储体分配是存储体#1,并且传送目的地存储体分配是存储体#3和#4,并且进一步地,传送目的地访问方法是顺序访问。由于只有一个存储体作为针对第一层的传送源存储体分配而被写入,因此即使未指定顺序访问,也使用顺序访问作为传送源访问方法。
写入的第二层设置指示传送源存储体分配是存储体#3和#4,而传送源访问方法是顺序访问,并且传送目的地存储体分配是存储体#1和#2,而传送目的地访问方法是并行访问。作为第二层设置被写入的传送源存储体分配和传送源访问方法与作为第一层设置被写入的传送目的地存储体分配和传送目的地访问方法相同。原因在于第二层对第一层中的处理结果执行处理,并且使用其中存储先前层中的处理结果的存储体作为后续层的传送源存储体对于处理效率增强是有利的。
写入的第三层设置指示传送源存储体分配是存储体#1和#2,而传送源访问方法是并行访问,并且传送目的地存储体分配是存储体#3和#4,而传送目的地访问方法是并行访问。与第二层设置的情况一样,作为第三层设置被写入的传送源存储体分配和传送源访问方法与作为先前第二层设置被写入的传送目的地存储体分配和传送目的地访问方法相同。
稍后将参考图13至图15更详细地描述基于图9中描绘的存储器设定信息MEM_SET的示例的操作。
现在将描述包括在操作设定信息SET2中的算术处理信息CAL_SET。在图9的示例中,包括在算术处理信息CAL_SET中的设定参数是计算精度、输入通道的数量(图9中的输入通道计数)、输出通道的数量(图9中的输出通道计数)、滤波器系数、激活函数和池化方法。包括在算术处理信息CAL_SET中的设定参数由写入操作条件信息中的网络配置来确定。
计算精度是层计算部分21中的计算的精度。在图9的示例中,为第一至第三层设置指定的计算精确度是8位整数精度。
输入通道的数量是指示输入到每层的处理目标图像(例如,输入数据)的数量的参数。在图9的示例中,指定数量的输入通道对于第一层是“1”,对于第二层是“16”,对于第三层是“16”。
输出通道的数量是指示从每层输出的图像数据(例如,输出数据)的数量的参数。在图9的示例中,输出通道的指定数量对于第一层是“16”,对于第二层是“16”,对于第三层是“32”。在卷积神经网络中,根据应用于输入数据的滤波器组的数量来确定输出通道的数量。
滤波器系数是指示指定滤波器尺寸和系数集的信息的参数。在图9的示例中,为第一层指定的滤波器系数表示具有尺寸为5×5并且被标示为系数集1的一组滤波器。为第二层指定的滤波器系数表示具有尺寸为3×3并且被标示为系数集2的一组滤波器。为第三层指定的滤波器系数表示具有尺寸为3×3并且被标示为系数集3的一组滤波器。
激活函数是指定要在激活处理部分41中使用的激活函数的参数。在图9的示例中,ReLU被指定为用于第一层至第三层中的每一层的激活函数。池化方法是指定要被应用于池化处理部分42中执行的池化过程的池化方法的参数。在图9的示例中,最大池化被指定为用于第一层至第三层中的每一层的池化方法。
现在将详细描述根据第一实施例的确定半导体装置1中的传送源存储体分配、传送源访问方法、传送目的地存储体分配和传送目的地访问方法的方法。
图10是图示出根据第一实施例的用于确定半导体装置1中的传送源存储体分配和传送源访问方法的过程的流程图。如图10中所图示,当要确定关于传送源存储体的设置时,执行检查以确定是否存在关于先前层的传送目的地存储体分配信息和传送目的地访问方法信息(步骤S30)。如果存在关于先前层的传送目的地存储体分配信息和传送目的地访问方法信息,则将用于先前层的传送源存储体分配和传送源访问方法设置为传送源存储体分配和传送源访问方法(步骤S31)。
相反,如果在步骤S30中确定不存在关于先前层的传送目的地存储体分配信息和传送目的地访问方法信息,则基于当前层的输入数据的传送量和传送速率确定用于当前层的传送源存储体分配和传送源访问方法。
更具体地,首先,计算能够存储当前层的输入数据的传送量的所分配的存储体的数量Ni1(步骤S32)。在步骤S32中,通过将输入数据的数据尺寸与每存储体的存储容量进行比较,计算能够存储输入数据的存储体的数量作为所分配的存储体的数量Ni1。
接下来,计算满足输入数据的传送速率的并行访问的数量Ni2(步骤S33)。在步骤S33中,将输入数据的传送速率与每存储体的最大带宽进行比较。如果最大带宽大于传送速率,则将并行访问的数量Ni2设置为1。相反,如果最大带宽小于传送速率,则将最大带宽乘以一个整数,直到它大于传送速率,并且将并行访问的数量Ni2设置为大于传送速率的倍数。
接下来,执行检查以确定并行访问的数量Ni2是否大于1(步骤S34)。如果在步骤S34中的并行访问的数量Ni2是1,则将传送源访问方法设置为“顺序”(步骤S35)。相反,如果在步骤S34中的并行访问的数量Ni2大于1,则将传送源访问方法设置为“并行”(步骤S36)。随后,调整所分配的存储体的数量Ni1和并行访问的数量Ni2。更具体地,如果所分配的存储体的数量Ni1和并行访问的数量Ni2之间的比较指示所分配的存储体的数量Ni1等于或大于并行访问的数量Ni2,则用指示所分配的存储体的数量Ni1的值更新指示并行访问的数量Ni2的值,使得所分配的存储体的数量Ni1与并行访问的数量Ni2一致(步骤S37和步骤S38)。相反,如果所分配的存储体的数量Ni1小于并行访问的数量Ni2,则用指示并行访问的数量Ni2的值更新指示所分配的存储体的数量Ni1的值,使得所分配的存储体的数量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,则在要使用并行访问的情况下,使用并行访问的数量Ni2来校正所分配的存储体的数量Ni1。同时,如果并行访问的数量Ni2小于所分配的存储体的数量Ni1,则校正并行访问的数量Ni2以与所分配的存储体的数量Ni1一致。
接下来,图11是图示出在根据第一实施例的半导体装置1中用于确定传送目的地存储体分配和传送目的地访问方法的过程的流程图。如图11中所图示,当要确定关于传送目的地存储体的设置时,首先,基于当前层的输出数据的传送量和传送速率来确定它们。
更具体地,计算能够存储当前层的输出数据的传送量的所分配的存储体的数量No1(步骤S40)。在步骤S40中,通过将输出数据的数据尺寸与每存储体的储存容量进行比较,计算能够存储输出数据的存储体的数量作为所分配的存储体的数量No1。
接下来,计算满足输出数据的传送速率的并行访问的数量No2(步骤S41)。在步骤S41中,将输出数据的传送速率与每存储体的最大带宽进行比较。如果最大带宽大于传送速率,则将并行访问的数量No2设置为1。相反,如果最大带宽小于传送速率,则将最大带宽乘以一个整数,直到它大于传送速率,并且将并行访问的数量No2设置为大于传送速率的倍数。
接下来,执行检查以确定并行访问的数量No2是否大于1(步骤S42)。如果在步骤S42中的并行访问的数量No2是1,则将传送目的地访问方法设置为“顺序”(步骤S43)。相反,如果在步骤S42中的并行访问的数量No2大于1,则将传送目的地访问方法设置为“并行”(步骤S44)。随后,调整所分配的存储体的数量No1和并行访问的数量No2。更具体地,如果所分配的存储体的数量No1和并行访问的数量No2之间的比较指示所分配的存储体的数量No1等于或大于并行访问的数量No2,则用指示所分配的存储体的数量No1的值更新指示并行访问的数量No2的值,使得所分配的存储体的数量No1与并行访问的数量No2一致(步骤S45和步骤S46)。相反,如果所分配的存储体的数量No1小于并行访问的数量No2,则用指示并行访问的数量No2的值更新指示所分配的存储体的数量No1的值,使得所分配的存储体的数量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,则在要使用并行访问的情况下,使用并行访问的数量No2和并行访问的数量Ni3来校正所分配的存储体的数量No1。同时,如果并行访问的数量No2和并行访问的数量Ni3小于所分配的存储体的数量No1,则校正并行访问的数量No2和并行访问的数量Ni3以与所分配的存储体的数量No1一致。
接下来,在传送目的地存储体分配过程中,计算满足后续层的输入数据的传送速率的并行访问的数量Ni3(步骤S50)。在步骤S50中,基于输出数据的传送速率和每存储体的最大带宽来计算并行访问的数量Ni3,如步骤S41的情况那样。
在步骤S50完成之后,执行设置更新判定过程以确定是否改变基于输出数据的传送量和传送速率而设置的传送目的地存储体分配和传送目的地访问方法(步骤S51)。在步骤S51中,通过检查并行访问的数量Ni3是否大于1来确定是否需要并行访问以满足后续层的输入数据的传送速率。此外,在步骤S51中,将关于后续层的输入的并行访问的数量Ni3与关于当前层的输出的并行访问的数量No2进行比较,以便确定在并行访问的数量No2的范围内是否满足后续层的输入数据的传送速率。图11假设步骤S51中使用的判定标准由关系表达式Ni3>1和Ni3>No2来表示。
如果在步骤S51中确定从当前层的传送量和传送速率导出的所分配的存储体的数量No1和并行访问的数量No2满足后续层的输入所需的传送量和传送速率(如果步骤S51被回答为否),则针对当前层采用在步骤S40至S47中计算出的所分配的传送目的地存储体的数量和传送目的地访问方法。
同时,如果在步骤S47中确定从当前层的传送量和传送速率导出的所分配的存储体的数量No1和并行访问的数量No2不满足后续层的输入所需的传送量和传送速率(如果步骤S51被回答为是),则查看传送目的地访问方法和所分配的存储体的数量Ni1(步骤S52到S55)。
在步骤S52中,不考虑在步骤S43和步骤S44中设置的访问方法,将传送目的地访问方法改变为“并行”。随后,调整所分配的存储体的数量Ni1和并行访问的数量No3。更具体地,如果所分配的存储体的数量No1和并行访问的数量Ni3之间的比较指示所分配的存储体的数量No1等于或大于并行访问的数量Ni3,则用指示存储体的数量No1的值来更新指示并行访问的数量Ni3的值,使得所分配的存储体的数量No1与并行访问的数量Ni3一致(步骤S53和步骤S55)。相反,如果所分配的存储体的数量No1小于并行访问的数量Ni3,则用指示并行访问的数量Ni3的值更新指示所分配的存储体的数量No1的值,使得所分配的存储体的数量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中使用的存储器设定信息MEM_SET。用于生成存储器设定信息MEM_SET的过程可以由与半导体装置1分开安装的计算机或由半导体装置1中的主计算部分10来执行。
现在将描述为了执行卷积处理层中的计算而由根据第一实施例的半导体装置1执行的操作。以下描述主要涉及加速器部分11的操作。图12是图示出根据第一实施例的半导体装置1的操作的定时图。在图12中,#1表示第一存储体,#2表示第二存储体,#3表示第三存储体,#4表示第四存储体。
如图12中所图示,当执行关于第一层的过程时,根据第一实施例的加速器部分11使网络层控制部分20在层计算部分21中以及在存储器控制部分23中执行针对第一层的设定。更具体地,网络层控制部分20设置存储器控制部分23,使得将存储体#1置于可读取状态,并且将存储体#2和#3置于可写入状态。此外,为存储体#3和#4设置顺序访问。然后,加速器部分11从存储体#1读取数据,并使层计算部分21对读取的数据执行计算。然后,层计算部分21顺序访问存储体#3和#4,并将输出数据写入到它们中。
当执行关于第二层的过程时,根据第一实施例的加速器部分11使网络层控制部分20在层计算部分21中以及在存储器控制部分23中执行针对第二层的设定。更具体地,当加速器部分11执行关于第二层的过程时,网络层控制部分20设置存储器控制部分23,使得将存储体#1和#2置于可写入状态,并且将存储体#3和#4置于可读取状态。原因是在第一层中生成的数据被存储在存储体#3和#4中。此外,关于第二层,为存储体#1和#2设置并行访问。然后,加速器部分11顺序访问存储体#3和#4以读取数据,并使层计算部分21对读取的数据执行计算。然后,层计算部分21并行访问存储体#1和#2,并将输出数据写入到它们中。
当执行关于第三层的过程时,根据第一实施例的加速器部分11使网络层控制部分20在层计算部分21中以及在存储器控制部分23中执行针对第三层的设定。更具体地,当加速器部分11执行关于第三层的过程时,网络层控制部分20设置存储器控制部分23,使得将存储体#3和#4置于可写入状态,并且将存储体#1和#2置于可读取状态。原因是在第二层中生成的数据被存储在存储体#1和#2中。此外,关于第三层,为存储体#1和#2以及为存储体#3和#4设置并行访问。然后,加速器部分11并行访问存储体#1和#2以读取数据,并使层计算部分21对读取的数据执行计算。然后,层计算部分21并行访问存储体#3和#4,并将输出数据写入到它们中。
现在将详细描述图12中描绘的每个层的数据传送状态。参考如图1中所图示的在卷积神经网络的卷积处理层中执行处理的示例,以下描述了图12中描绘的每个层的数据传送状态。以下描述假设每个存储体的最大总线带宽为30GB/s。
图13是图示出在执行关于根据第一实施例的半导体装置的第一层的处理的情况下的数据传送状态的图。在图13的示例中,给予层计算部分21的输入数据的传送量是50kB,并且当其由层计算部分21读取时输入数据的传送速率(图13中的输入速率)是3.8GB/s。此外,在图13的示例中,从层计算部分21输出的输出数据的传送量是200kB,并且当其由层计算部分21写入到存储体中时输出数据的传送速率(图13中的输出速率)是20GB/s。在图13中描绘的第一层的示例中,根据输入/输出数据的以上传送量,假设将一个存储体分配作为输入数据的传送源,并且将两个存储体分配作为输出数据的传送目的地。此外,将顺序访问设置为访问要被分配作为传送目的地的存储体的方法,因为所需的传送速率小于每存储体的最大总线带宽。尽管稍后将参考图14给出相关描述,但是即使当通过顺序访问写入第一层的存储体时,也满足第二层的读取速率,因为读取第二层的输入数据所需的传送速率小于最大总线带宽。基于上述设置,执行关于第一层的处理的加速器部分11中的层计算部分21执行卷积乘积和运算处理、激活处理和池化处理。图13中的带圈数字指示顺序访问的顺序。在图14和随后的图中也以相同的方式使用带圈数字。
接下来,图14是图示出在执行关于根据第一实施例的半导体装置的第二层的处理的情况下的数据传送状态的图。在图14的示例中,给予层计算部分21的输入数据的传送量是200kB,并且当其由层计算部分21读取时输入数据的传送速率(图14中的输入速率)是20GB/s。此外,在图14的示例中,从层计算部分21输出的输出数据的传送量是100kB,并且当其由层计算部分21写入到存储体中时输出数据的传送速率(图14中的输出速率)是20GB/s。在图14中描绘的第二层的示例中,根据输入/输出数据的以上传送量,假设将两个存储体分配作为输入数据的传送源,并且将一个存储体分配作为输出数据的传送目的地。因此,获得足够用于第二层的处理的数据传送状态。然而,为了满足图15中所描绘的第三层的输入所需的传送速率,需要并行访问存储第二层的输出数据的存储体#1和#2。因此,在图14的示例中,在将两个存储体分配作为输出数据的传送目的地之后使用并行访问。将顺序访问设置为访问要被分配作为传送目的地的存储体的方法,因为所需的传送速率小于每存储体的最大总线带宽。基于上述设置,执行关于第二层的处理的加速器部分11中的层计算部分21执行卷积乘积和运算处理。
通过访问一个存储体可以满足图14中描绘的输出数据的传送量和传送速率。在这种情况下,考虑到在并行访问第三层时执行的数据读取操作的顺序,通过顺序访问存储体#1和#2,可以在第二层中写入数据。结合本实施例描述的技术概念不排除上述访问方法。
接下来,图15是图示出在执行关于根据第一实施例的半导体装置的第三层的处理的情况下的数据传送状态的图。在图15的示例中,给予层计算部分21的输入数据的传送量是100kB,并且当其由层计算部分21读取时输入数据的传送速率(图15中的输入速率)是50GB/s。此外,在图15的示例中,从层计算部分21输出的输出数据的传送量是200kB,并且当其由层计算部分21写入到存储体中时输出数据的传送速率(图15中的输出速率)是50GB/s。在图15中描绘的第三层的示例中,通过将一个存储体分配作为输入数据的传送源,可以满足输入数据的上述传送量。但是,考虑到输入数据的传送速率,需要将两个存储体分配作为传送源存储体。此外,将两个存储体分配作为输出数据的传送目的地,以便满足输出数据的传送量和传送速率。同时,将并行访问设置为访问要被分配作为传送源和传送目的地的存储体的方法,因为所需的传送速率大于每存储体的最大总线带宽。基于上述设置,执行关于第三层的处理的加速器部分11中的层计算部分21执行卷积乘积和运算处理、激活处理和池化处理。
如上所述,在根据第一实施例的半导体装置1中,基于针对卷积神经网络的卷积处理层的每个中间层的数据的传送量和传送速率来改变要使用的存储体的数量。更具体地,对于每个中间层,根据第一实施例的半导体装置1设置能够足够存储数据的传送量的存储体的数量。此外,对于每个中间层,根据第一实施例的半导体装置1以满足数据的传送速率的方式设置所分配的存储体的数量。此外,对于每个中间层,根据第一实施例的半导体装置1改变要被分配的存储体。
因此,在根据第一实施例的半导体装置1中,执行卷积处理的中间层能够使用由于其已被另一中间层使用而未被占用的存储体。这使得可以有效地使用具有有限容量的存储器。此外,根据第一实施例的半导体装置1能够通过改变每个中间层的存储体读取/写入状态并改变被分配作为传送源和传送目的地的存储体的数量来增加可并行访问的存储体的数量。这使得可以实现大于每存储体的最大总线带宽的传送速率,并获得在中间层中的处理所需的传送速率。
因此,根据第一实施例的半导体装置1能够通过减小内置存储器(例如,存储器24、25)的容量来减少电路面积。此外,根据第一实施例的半导体装置1能够通过降低每存储体的最大总线带宽来降低功耗。
同时,根据第一实施例的半导体装置1能够通过使用SRAM(静态随机访问存储器)作为用作存储器24、25的存储元件来执行高速读取/写入处理操作。这增强了半导体装置1的计算能力。
此外,根据第一实施例的半导体装置1确定被分配给每层的存储体的数量和被用于所分配的存储体的访问方法。在这样的确定过程(例如,图10和图11的流程图)中,考虑后续层的输入特性,利用被分配用于存储每层的输出数据的传送目的地存储体来确定存储体分配和访问方法。在图14的示例中,可以通过以仅仅满足第二层的输出特性为目标而顺序访问一个存储体来获得足够的性能。然而,考虑到安置在第二层之后的第三层的输入特性,将两个存储体分配作为用于传送第二层的输出数据的传送目的地存储体,并且改变存储体分配以便并行访问这两个存储体。当如上所述不仅考虑当前层的输出特性而且还考虑后续层的输入特性来进行存储体分配时,可以通过使用后续层的最大能力来读取输入数据。同时,如果通过考虑后续层的输入特性来确定存储体分配以便满足当前层的输出特性,则产生的缺点是需要将过多数量的存储体分配给当前层的输出特性。然而,如果所分配的存储体的数量在半导体装置1的硬件资源的限制范围内,则仅仅关于当前层的硬件资源的利用率增加,因此产生的优点在于层计算部分的计算能力可以被充分用于多个层。
第二实施例
以下对本发明第二实施例的描述涉及与根据第一实施例的加速器部分11不同的加速器部分11a。在第二实施例的描述中,与结合第一实施例描述的元件相同的元件由与第一实施例中的对应元件相同的附图标号来标示,并且将不再重复描述。此外,将包括根据第二实施例的加速器部分11a的半导体装置称为半导体装置2。
图16是图示出根据第二实施例的加速器部分11a中包括的网络层控制部分和存储器控制部分的配置的框图。如图16中所图示,通过用存储器控制电路53替换根据第一实施例的加速器部分11中的存储器控制部分23来获得加速器部分11a。存储器控制电路53包括访问控制部分56和选择电路57。
基于来自网络层控制部分20的命令,存储器控制电路53执行保存过程或重新填充过程。保存过程将存储在存储体中的数据保存到外部存储器EX_MEM中。重新填充过程利用存储在外部存储器EX_MEM中的数据重新填充存储体。保存过程和重新填充过程在不考虑其他过程的执行的情况下被执行。外部存储器EX_MEM包括多个存储体。外部存储器EX_MEM的每个存储体存储关于保存过程和重新填充过程的数据。
通过将通过本地总线14向外部存储器EX_MEM提供读取/写入命令信号的函数添加到图6中所描绘的访问控制部分36而获得访问控制部分56。通过将选择用于通过本地总线14访问外部存储器EX_MEM的路径的函数添加到图6中所描绘的选择电路37而获得选择电路57。
现在将描述根据第二实施例的半导体装置2中的卷积处理层的操作。图17是图示出根据第二实施例的半导体装置2的操作的定时图。图17的示例描绘了根据第二实施例的半导体装置2的示例性操作。此外,图17的示例是通过将第四层的操作、重新填充过程和保存过程添加到根据第一实施例的半导体装置1的操作而获得的。
在图17的示例中,在第一层经受卷积乘积和运算处理的时段的一部分上以及在第二层经受卷积乘积和运算处理的时段的一部分上延伸的时段期间,根据第二实施例的半导体装置2用要在第四层中使用的输入数据重新填充存储体。更具体地,执行重新填充过程以用来自外部存储器EX_MEM的数据重新填充存储体#5。重新填充到存储体#5中的数据然后成为针对第四层的输入数据。此外,在图17的示例中,执行保存过程以通过使用第四层经受乘积和运算处理的时段和随后的时段将存储在存储体#2和#3中的数据保存到外部存储器EX_MEM中。如图17中所图示,重新填充过程和保存过程独立于每层中的处理而被执行。
即使通过与用于数据存储的访问方法不同的访问方法执行保存过程,也不会出现问题。此外,在一层中处理的数据存储在多个存储体中的情况下,需要通过使用存储体作为单个单元对数据执行保存过程和重新填充过程,以防止对数据的损坏。
现在将描述用于数据重新填充过程和数据保存过程的数据传送路径。图18是图示出根据第二实施例的半导体装置中的用于数据重新填充的数据传送路径的图。图18图示出了在第二层中的处理期间执行的数据重新填充过程的数据传送路径。在图18的示例中,为数据重新填充处理形成独立于卷积乘积和运算处理的路径。更具体地,将数据从外部存储器EX_MEM的目标存储体传送到存储体#5。
图19是图示出根据第二实施例的半导体装置中的用于数据保存的数据传送路径的图。图19图示出了用于在第四层中的处理期间执行的数据保存过程的数据传送路径。在图19的示例中,为数据保存过程形成独立于卷积乘积运算处理的路径。更具体地,将数据从存储体#2和#3传送到外部存储器EX_MEM的目标存储体。在这种情况下,通过顺序访问存储体#2和#3来执行数据保存过程。
从以上描述显而易见的是,根据第二实施例的半导体装置2被配置为使得可以独立于其他过程执行将数据重新填充并将数据保存到加速器部分11中的存储器中的过程。因此,根据第二实施例的半导体装置2能够处理比加速器部分11中的存储器容量更大的数据而不会牺牲计算能力。
现在将参考图20描述减少由根据第二实施例的半导体装置2产生的计算时间的影响(或防止计算能力被牺牲的影响)。图20是图示出根据比较示例的半导体装置的操作的定时图。根据比较示例的半导体装置通过仅使用主计算部分10来执行所有卷积神经网络过程,而不使用根据第二实施例的加速器部分11a。
如图20中所图示,当执行数据重新填充过程或数据保存过程时,根据比较示例的半导体装置中断到主计算部分10中,以便获取用于执行数据重新填充过程或数据保存过程的访问权限。因此,根据比较示例的半导体装置不能与其他过程并行地执行数据重新填充过程和数据保存过程。因此,除了用于在卷积神经网络的中间层中进行处理的时段之外,根据比较示例的半导体装置还需要获得用于数据重新填充过程的时段和用于数据保存过程的时段。结果,根据比较示例的半导体装置中的处理时间增加了数据重新填充和数据保存过程所需的时段。
同时,如图17中所图示的根据第二实施例的半导体装置2的操作使得数据重新填充过程和数据保存过程与中间层中的处理并行地执行。因此,在根据第二实施例的半导体装置2中,数据重新填充过程和数据保存过程不需要任何额外的处理时间。也就是说,根据第二实施例的半导体装置2能够处理比加速器部分11中的存储器容量更大的数据,而不会牺牲计算能力。
第三实施例
以下对本发明第三实施例的描述针对与根据第一实施例的半导体装置1不同的半导体装置3。在第三实施例的描述中,与结合第一实施例描述的元件相同的元件由与第一实施例中的对应元件相同的附图标号来标示,并且将不再重复描述。
图21是图示出根据第三实施例的半导体装置3的框图。如图21中所图示,通过用主计算部分60替换半导体装置1的主计算部分10并将车辆控制部分64添加到半导体装置1来获得根据第三实施例的半导体装置3。主计算部分60是通过将车辆/行人识别处理部分61、路面检测处理部分62和路线预测处理部分63添加到主计算部分10而获得的。
车辆/行人识别处理部分61是对象识别部分,其根据由主计算部分60在完全连接层上执行的计算结果来识别道路对象,包括前方车辆、行人和道路标志。路面检测处理部分62根据主计算部分60在完全连接层上执行的计算结果来检测通过从图像中移除道路对象而获得的部分以作为路面。路线预测处理部分63根据车辆/行人识别处理部分61的处理结果、路面检测处理部分62的处理结果以及车辆的速度和转向角(未描绘出)来预测车辆的行驶路线。
车辆控制部分64根据由车辆/行人识别处理部分61、路面检测处理部分62和路线预测处理部分63中的至少一个所执行的处理的结果,输出包括关于车辆的行驶、停止和转向的信息在内的控制信息。例如,控制信息被用来通过为车辆驾驶员点亮警告灯以及生成警告声或响应于检测到接近的行人、红色交通灯或道路标志而施加制动来提供减速或停止控制,在前方车辆接近期间提供油门和制动控制,或为了避免碰撞和车道保持而提供转向角控制。通过车载网络将控制信息从车辆控制部分64输出到未描绘出的单独设备。
根据第三实施例的半导体装置3包括车辆/行人识别处理部分61、路面检测处理部分62、路线预测处理部分63和车辆控制部分64,并且因此能够保持安全行驶,同时根据卷积神经网络识别的信息识别主车辆的障碍物。根据路线预测处理部分63和车辆/行人识别处理部分61的处理结果检测在前方行驶路线上的障碍物。因此,主车辆的行驶路线上的障碍物被识别以实现安全行驶。
车辆/行人识别处理部分61、路面检测处理部分62、路线预测处理部分63和车辆控制部分64不必总是被内置在半导体装置3中。
虽然已经根据特定实施例详细描述了由其发明人做出的本发明,但是本发明不限于前述实施例。对于本领域技术人员显而易见的是,在不脱离本发明的精神和范围的情况下,可以进行各种修改。
补充说明1
提供了一种包括加速器部分和主计算部分的半导体装置。加速器部分执行关于卷积处理层的过程。卷积处理层利用应用于输入图像的预定滤波器执行卷积。关于卷积处理层的过程是关于卷积神经网络的过程之一。主计算部分执行关于完全连接层的过程,完全连接层根据从加速器部分输出的结果确定输入图像。加速器部分包括层计算部分、存储器、存储器控制部分和网络层控制部分。层计算部分对包括在卷积神经网络中的多个中间层中的每一个中间层的处理目标图像数据的元素执行包括卷积乘积和运算在内的运算处理。存储器存储包括在卷积神经网络中的中间层中的层计算部分的输入/输出数据,并且包括可独立读取和写入的多个存储体。存储器控制部分不仅将每个存储体在可读取状态和可写入状态之间切换,而且还执行在层计算部分和存储器之间的数据发送和接收的路由。网络层控制部分根据包括在卷积神经网络中的中间层的输入数据和输出数据的传送量和传送速率,以改变存储中间层的输入数据或输出数据的存储体的读取/写入状态分配的方式来控制存储器控制部分。
补充说明2
提供如补充说明1中所述的半导体装置。主计算部分包括对象识别部分、路面检测处理部分和路线预测处理部分中的至少一个。对象识别部分根据完全连接层上的计算结果来识别道路对象,包括前方车辆、行人和道路标志。路面检测处理部分根据完全连接层上的计算结果来检测通过从图像中移除道路对象而获得的部分以作为路面。路线预测处理部分根据对象识别部分的处理结果、路面检测处理部分的处理结果以及车辆的速度和转向角来预测车辆的行驶路线。
补充说明3
提供如补充说明2中所述的半导体装置。半导体装置包括车辆控制部分,该车辆控制部分根据由对象识别部分、路面检测处理部分和路线预测处理部分中的至少一个所执行的处理的结果,输出包括关于车辆的行驶、停止和转向的信息在内的控制信息。
Claims (20)
1.一种半导体装置,包括:
层计算部分,所述层计算部分对包括在卷积神经网络中的多个中间层中的每一个中间层的处理目标图像数据的元素执行包括卷积乘积和运算的运算处理;
存储器,所述存储器存储包括在所述卷积神经网络中的所述中间层中的所述层计算部分的输入和输出数据,并且包括可独立读取和写入的多个存储体;
存储器控制部分,所述存储器控制部分将每个所述存储体在可读取状态和可写入状态之间切换,并且执行在所述层计算部分和所述存储器之间的数据发送和接收的路由;和
网络层控制部分,所述网络层控制部分根据包括在所述卷积神经网络中的所述中间层的输入数据和输出数据的传送量和传送速率,以改变存储所述中间层的所述输入数据或输出数据的所述存储体的读取状态和写入状态的分配的方式,来控制所述存储器控制部分。
2.根据权利要求1所述的半导体装置,其中,当连续中间层之中的先前中间层被指定为第一中间层、并且后续中间层被指定为第二中间层时,所述网络层控制部分根据所述第二中间层的所述输入数据的所述传送速率、以及将所述存储器控制部分耦合到所述存储体的总线的每存储体的总线传送速率,设置用于存储所述第一中间层的所述输出数据的存储体的数量。
3.根据权利要求2所述的半导体装置,其中,如果要被输出到所述第一中间层的所述输出数据的所述传送量小于一个存储体的容量、并且要被输入到所述第二中间层的所述输入数据的所述传送速率大于所述总线传送速率,则所述网络层控制部分将用于存储所述第一中间层的所述输出数据的存储体的数量设置为2或更多。
4.根据权利要求1所述的半导体装置,其中,当连续中间层之中的先前中间层被指定为第一中间层、并且后续中间层被指定为第二中间层时,所述网络层控制部分以在关于所述第二中间层的过程中对在关于所述第一中间层的过程中被分配可写入状态的存储体分配可读取状态的方式,来控制所述存储器控制部分。
5.根据权利要求4所述的半导体装置,
其中,如果要被输入到所述第一中间层的所述输入数据的所述传送量大于一个存储体的容量,则所述网络层控制部分执行设定,使得将多个存储体置于所述可读取状态以提供大于所述传送量的总容量,
其中,如果要从所述第一中间层输出的所述输出数据的所述传送量大于一个存储体的容量,则所述网络层控制部分执行设定,使得将多个存储体置于所述可写入状态以提供大于所述传送量的总容量,
其中,如果要被输入到所述第一中间层的所述输入数据的所述传送速率、以及要从所述第二中间层输出的所述输出数据的所述传送速率中的至少一项大于将所述存储器控制部分耦合到所述存储体的总线的每存储体的总线传送速率,则所述网络层控制部分执行设定,使得将多个存储体置于所述可读取状态,以使关于一个存储体的传送速率小于所述总线传送速率,以及
其中,如果要从所述第一中间层输出的所述输出数据的所述传送速率、以及要被输入到所述第二中间层的所述输入数据的所述传送速率中的至少一项大于将所述存储体控制部分耦合到所述存储体的总线的所述总线传送速率,则所述网络层控制部分执行设定,使得将多个存储体置于所述可写入状态,以使关于一个存储体的传送速率小于所述总线传送速率。
6.根据权利要求1所述的半导体装置,
其中,将存储器设定信息给予所述网络层控制部分,为每个所述中间层写入所述存储器设定信息,以指定所述存储体是被置于读取状态还是被置于写入状态,并且指定所述存储体是要被顺序访问还是并行访问,以及
其中,所述网络层控制部分根据所述存储器设定信息来控制所述存储器控制部分。
7.根据权利要求6所述的半导体装置,还包括主计算部分,所述主计算部分根据网络配置信息、输入图像尺寸信息和存储器配置信息来生成所述存储器设定信息,所述网络配置信息指示所述卷积神经网络的配置,所述输入图像尺寸信息指示要被给予安置在所述卷积神经网络的第一级处的输入层的输入图像的图像尺寸,所述存储器配置信息指示所述存储器控制部分的总线带宽和所述存储器的存储体配置。
8.根据权利要求1所述的半导体装置,其中,所述层计算部分包括:
卷积乘积和运算部分,所述卷积乘积和运算部分将具有预定图像尺寸的滤波器叠加在所述处理目标图像数据上,偏移滤波器叠加的位置,计算在滤波器叠加的每个位置处的所述处理目标图像数据的像素值与所述滤波器的像素值的乘积,计算关于包括在所述滤波器中的像素的乘积的总和,并且生成乘积和运算结果图像;和
池化处理部分,所述池化处理部分将所述乘积和运算结果图像中的像素分组为预定尺寸,使用所分组的像素的代表值作为新的像素值,并且生成由所述新的像素值形成的处理图像。
9.根据权利要求8所述的半导体装置,其中,所述层计算部分包括激活处理部分,所述激活处理部分被安置在所述卷积乘积和运算部分和所述池化处理部分之间,并且如果包括在所述乘积和运算结果图像中的所述像素值不满足预定条件,则通过对所述像素值应用预定激活函数来对所述乘积和运算结果图像执行激活过程,以便用规定值替换所述像素值。
10.根据权利要求8所述的半导体装置,其中,所述层计算部分包括:
第一选择部分,所述第一选择部分选择性地将输入数据递送到所述卷积乘积和运算部分;和
第二选择部分,所述第二选择部分选择性地向所述存储器控制部分输出从所述池化处理部分输出的输出数据。
11.根据权利要求1所述的半导体装置,还包括:
外部存储器,所述外部存储器安置在所述半导体装置的外部;和
本地总线,所述本地总线控制所述存储器控制部分和所述外部存储器之间的数据发送和接收,
其中,基于来自所述网络层控制部分的命令,所述存储器控制部分执行保存过程和重新填充过程,而不考虑关于所述中间层的过程的执行,所述保存过程将存储在所述存储体中的数据保存到所述外部存储器中,所述重新填充过程用存储在所述外部存储器中的数据重新填充所述存储体。
12.根据权利要求11所述的半导体装置,其中,所述外部存储器包括多个存储器存储体,并且将关于所述保存过程和所述重新填充过程的数据存储在每个所述存储器存储体中。
13.根据权利要求1所述的半导体装置,还包括:
加速器部分,执行关于卷积处理层的过程,所述卷积处理层利用应用于输入图像的预定滤波器来执行卷积,关于所述卷积处理层的所述过程是关于所述卷积神经网络的过程之一;和
主计算部分,执行关于完全连接层的过程,所述完全连接层根据从所述加速器部分输出的结果来确定所述输入图像;
其中,所述加速器部分包括所述层计算部分、所述存储器、所述存储器控制部分和所述网络层控制部分。
14.一种用于半导体装置的存储器访问设定方法,所述半导体装置具有层计算部分、存储器、存储器控制部分和网络层控制部分,所述层计算部分对包括在卷积神经网络中的多个中间层中的每一个中间层的处理目标图像数据的元素执行包括卷积乘积和运算的运算处理,所述存储器存储包括在所述卷积神经网络中的所述中间层中的所述层计算部分的输入和输出数据,并且包括可独立读取和写入的多个存储体,所述存储器控制部分将每个所述存储体在可读取状态和可写入状态之间切换,并且执行在所述层计算部分和所述存储器之间的数据发送和接收的路由,所述网络层控制部分根据包括在所述卷积神经网络中的所述中间层的输入数据和输出数据的传送量和传送速率,以改变存储所述中间层的所述输入数据或输出数据的所述存储体的读取状态和写入状态的分配的方式,来控制所述存储器控制部分,所述多个中间层包括当前中间层,所述存储器访问设定方法包括:
将指示用于存储所述当前中间层的所述输入数据的传送源存储体的数量的传送源存储体分配设置为与用于存储所述当前中间层之前的先前中间层的所述输出数据的传送目的地存储体的数量相同的值;
将指示访问所述当前中间层的所述传送源存储体的方法的传送源访问方法设置为与用来读取所述先前中间层的所述输出数据的传送目的地访问方法相同的方法;
以满足所述当前中间层的所述输出数据的所述传送量和所述传送速率、以及所述当前中间层之后的后续中间层的所述输入数据的所述传送速率的方式,设置指示用于存储所述当前中间层的所述输出数据的传送目的地存储体的数量的传送目的地存储体分配;以及
以满足所述当前中间层的所述输出数据的所述传送速率和所述后续中间层的所述输入数据的所述传送速率的方式,设置指示访问所述当前中间层的所述传送目的地存储体的方法的传送目的地访问方法。
15.根据权利要求14所述的存储器访问设定方法,
其中,所述传送目的地存储体分配的所述设置包括:
计算能够存储所述当前中间层的所述输出数据的存储体的数量,作为第一分配的传送目的地存储体的数量;
计算一个整数倍数作为第一传送目的地并行访问的数量,每存储体的最大带宽乘以所述整数倍数以确定比所述当前中间层的所述输出数据的传送速率小的可传送带宽;
用所述第一分配的传送目的地存储体的数量和所述第一传送目的地并行访问的数量中的较大者,更新所述第一分配的传送目的地存储体的数量和所述第一传送目的地并行访问的数量中的较小者;
计算一个整数倍数作为第二传送目的地并行访问的数量,每存储体的最大带宽乘以所述整数倍数以确定比所述后续中间层的所述输入数据的所述传送速率小的可传送带宽;
当所述第二传送目的地并行访问的数量小于所述第一传送目的地并行访问的数量时,将分配的传送目的地存储体的数量设置为不小于第二分配的存储体的数量的值;以及
当所述第二传送目的地并行访问的数量大于所述第一传送目的地并行访问的数量时,将分配的传送目的地存储体的数量设置为所述第一分配的传送目的地存储体的数量和所述第二传送目的地并行访问的数量中的较大者,
其中,所述传送目的地访问方法的所述设置包括:
当通过作为所述第一传送目的地并行访问的数量的所述计算所计算出的所述第一传送目的地并行访问的数量、以及通过作为所述第二传送目的地并行访问的数量计算所计算出的所述第二传送目的地并行访问的数量中的至少任一项不小于2时,将所述传送目的地访问方法设置为并行;以及
当通过作为所述第一传送目的地并行访问的数量的所述计算所计算出的所述第一传送目的地并行访问的数量、以及通过作为所述第二传送目的地并行访问的数量的所述计算所计算出的所述第二传送目的地并行访问的数量都是1时,将所述传送目的地访问方法设置为顺序。
16.根据权利要求14所述的存储器访问设定方法,
其中,当所述先前中间层不存在时,所述设置所述传送源存储体分配包括:
计算能够存储所述当前中间层的所述输入数据的存储体的数量,作为第一分配的传送源存储体的数量;
计算一个整数倍数作为所述传送源并行访问的数量,每存储体的最大带宽乘以所述整数倍以确定比所述当前中间层的所述输入数据的所述传送速率小的可传送带宽;
当所述传送源并行访问的数量是1时,将第一分配的存储体的数量设置为分配的传送目的地存储体的数量;以及
当所述传送源并行访问的数量不小于1时,将通过将第一分配的传送源存储体的数量更新为所述传送源并行访问的数量的整数倍数而获得的第二分配的传送目的地存储体的数量设置为分配的传送源存储体的数量,
其中,所述设置所述传送源访问方法包括:
当通过作为所述传送源并行访问的数量的所述计算所计算出的所述传送源并行访问的数量不小于2时,将所述传送源访问方法设置为并行;以及
当通过作为所述传送源并行访问的数量的所述计算所计算出的所述传送源并行访问的数量是1时,将所述传送源访问方法设置为顺序。
17.一种半导体装置,包括:
层计算部分,所述层计算部分对包括在卷积神经网络中的多个中间层中的每一个中间层的处理目标图像数据的元素执行包括卷积乘积和运算的运算处理;
存储器,所述存储器存储包括在所述卷积神经网络中的所述中间层中的所述层计算部分的输入和输出数据,并且包括可独立读取和写入的多个存储体;
存储器控制部分,所述存储器控制部分不仅将每个所述存储体在可读取状态和可写入状态之间切换,而且执行在所述层计算部分和所述存储器之间的数据发送和接收的路由;和
网络层控制部分,所述网络层控制部分根据包括在所述卷积神经网络中的所述中间层的输入数据和输出数据的传送量和传送速率,控制要被并行访问的用于存储所述中间层的所述输入数据或输出数据的存储体的数量。
18.根据权利要求17所述的半导体装置,其中,当连续中间层之中的先前中间层被指定为第一中间层、并且后续中间层被指定为第二中间层时,所述网络层控制部分根据所述第二中间层的所述输入数据的所述传送速率、以及将所述存储器控制部分耦合到所述存储体的总线的每存储体的总线传送速率,设置用于存储所述第一中间层的所述输出数据的存储体的数量。
19.根据权利要求18所述的半导体装置,其中,如果要被输出到所述第一中间层的所述输出数据的所述传送量小于一个存储体的容量、并且要被输入到所述第二中间层的所述输入数据的所述传送速率大于所述总线传送速率,则所述网络层控制部分将用于存储所述第一中间层的所述输出数据的存储体的数量设置为2或更多。
20.根据权利要求17的半导体装置,
其中,当连续中间层之中的先前中间层被指定为第一中间层、并且后续中间层被指定为第二中间层时,所述网络层控制部分以在关于所述第二中间层的过程中对在关于所述第一中间层的过程中被分配可写入状态的存储体分配可读取状态的方式,控制所述存储器控制部分,
其中,当要被输入到所述第一中间层的所述输入数据的所述传送量大于一个存储体的容量时,所述网络层控制部分将多个可读取存储体设置为具有大于所述传送量的总容量,
其中,当要从所述第一中间层输出的所述输出数据的所述传送量大于一个存储体的容量时,所述网络层控制部分将多个可写入存储体设置为具有大于所述传送量的总容量,
其中,当要被输入到所述第一中间层的所述输入数据的所述传送速率、以及要从所述第二中间层输出的所述输出数据的所述传送速率中的至少一项大于将所述存储器控制部分耦合到所述存储体的总线的每存储体的总线传送速率时,所述网络层控制部分设置多个可读取存储体,使得关于一个存储体的传送速率小于所述总线传送速率,以及
其中,当要从所述第一中间层输出的所述输出数据的所述传送速率、以及要被输入到所述第二中间层的所述输入数据的所述传送速率中的至少一项大于将所述存储体控制部分耦合到所述存储体的总线传送速率时,所述网络层控制部分设置多个可写入存储体,使得关于一个存储体的传送速率小于所述总线传送速率。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2018101344A JP2019207458A (ja) | 2018-05-28 | 2018-05-28 | 半導体装置及びメモリアクセス設定方法 |
JP2018-101344 | 2018-05-28 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110543938A true CN110543938A (zh) | 2019-12-06 |
CN110543938B CN110543938B (zh) | 2024-04-02 |
Family
ID=66589411
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910442055.0A Active CN110543938B (zh) | 2018-05-28 | 2019-05-24 | 半导体装置和存储器访问设定方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10996877B2 (zh) |
EP (1) | EP3576022A1 (zh) |
JP (1) | JP2019207458A (zh) |
CN (1) | CN110543938B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111461293A (zh) * | 2020-03-17 | 2020-07-28 | 湖南大学 | 基于gpu的深度神经网络模型训练方法、装置和计算机设备 |
CN113126883A (zh) * | 2019-12-30 | 2021-07-16 | 深圳Tcl新技术有限公司 | 一种数据处理方法、系统及存储介质 |
Families Citing this family (6)
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 | キヤノン株式会社 | 演算処理装置及び演算処理方法 |
US11144822B1 (en) * | 2021-01-04 | 2021-10-12 | Edgecortix Pte. Ltd. | Neural network accelerator run-time reconfigurability |
JP2024048282A (ja) | 2022-09-27 | 2024-04-08 | ルネサスエレクトロニクス株式会社 | 半導体装置 |
JP2024072386A (ja) | 2022-11-16 | 2024-05-28 | ルネサスエレクトロニクス株式会社 | 画像処理装置及び画像処理方法 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040221071A1 (en) * | 1998-10-14 | 2004-11-04 | David Baker | Integrated multimedia system |
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 |
US20160342891A1 (en) * | 2015-05-21 | 2016-11-24 | Google Inc. | Neural Network Processor |
CN106779060A (zh) * | 2017-02-09 | 2017-05-31 | 武汉魅瞳科技有限公司 | 一种适于硬件设计实现的深度卷积神经网络的计算方法 |
CN107239824A (zh) * | 2016-12-05 | 2017-10-10 | 北京深鉴智能科技有限公司 | 用于实现稀疏卷积神经网络加速器的装置和方法 |
CN107301455A (zh) * | 2017-05-05 | 2017-10-27 | 中国科学院计算技术研究所 | 用于卷积神经网络的混合立方体存储系统及加速计算方法 |
CN107679621A (zh) * | 2017-04-19 | 2018-02-09 | 北京深鉴科技有限公司 | 人工神经网络处理装置 |
EP3319015A1 (en) * | 2016-11-07 | 2018-05-09 | Samsung Electronics Co., Ltd. | Convolutional neural network processing method and apparatus |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
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 |
-
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
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040221071A1 (en) * | 1998-10-14 | 2004-11-04 | David Baker | Integrated multimedia system |
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 |
US20160342891A1 (en) * | 2015-05-21 | 2016-11-24 | Google Inc. | Neural Network Processor |
EP3319015A1 (en) * | 2016-11-07 | 2018-05-09 | Samsung Electronics Co., Ltd. | Convolutional neural network processing method and apparatus |
CN107239824A (zh) * | 2016-12-05 | 2017-10-10 | 北京深鉴智能科技有限公司 | 用于实现稀疏卷积神经网络加速器的装置和方法 |
CN106779060A (zh) * | 2017-02-09 | 2017-05-31 | 武汉魅瞳科技有限公司 | 一种适于硬件设计实现的深度卷积神经网络的计算方法 |
CN107679621A (zh) * | 2017-04-19 | 2018-02-09 | 北京深鉴科技有限公司 | 人工神经网络处理装置 |
CN107301455A (zh) * | 2017-05-05 | 2017-10-27 | 中国科学院计算技术研究所 | 用于卷积神经网络的混合立方体存储系统及加速计算方法 |
Non-Patent Citations (2)
Title |
---|
ZIDONG DU: "ShiDianNao: Shifting Vision Processing Closer to the Sensor", 2015 ACM/IEEE 42ND ANNUAL INTERNATIONAL SYMPOSIUM ON COMPUTER ARCHITECTURE (ISCA), pages 92 - 102 * |
李炳剑;秦国轩;朱少杰;裴智慧;: "面向卷积神经网络的FPGA加速器架构设计", 计算机科学与探索, no. 03 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113126883A (zh) * | 2019-12-30 | 2021-07-16 | 深圳Tcl新技术有限公司 | 一种数据处理方法、系统及存储介质 |
CN111461293A (zh) * | 2020-03-17 | 2020-07-28 | 湖南大学 | 基于gpu的深度神经网络模型训练方法、装置和计算机设备 |
CN111461293B (zh) * | 2020-03-17 | 2023-06-06 | 湖南大学 | 基于gpu的深度神经网络模型训练方法、装置和计算机设备 |
Also Published As
Publication number | Publication date |
---|---|
US20190361620A1 (en) | 2019-11-28 |
JP2019207458A (ja) | 2019-12-05 |
EP3576022A1 (en) | 2019-12-04 |
CN110543938B (zh) | 2024-04-02 |
US10996877B2 (en) | 2021-05-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110543938B (zh) | 半导体装置和存储器访问设定方法 | |
KR102631381B1 (ko) | 컨볼루션 신경망 처리 방법 및 장치 | |
US20190236437A1 (en) | Heterogeneous processor architecture for integrating cnn and rnn into single high-performance, low-power chip | |
US6317427B1 (en) | Method and apparatus for adaptive port buffering | |
US8769190B1 (en) | System and method for reducing contentions in solid-state memory access | |
RU2642349C1 (ru) | Способ для сохранения данных посредством устройства хранения данных и устройство хранения данных | |
CN110928691B (zh) | 一种面向交通数据的端边协同计算卸载方法 | |
CN103547329A (zh) | 集群系统中数据处理方法及装置 | |
WO2008018607A1 (en) | Travel control device | |
US20210081489A1 (en) | Arithmetic method | |
KR20190043419A (ko) | 조기 중단에 기반한 심층 신경망의 연산 제어 방법 및 시스템 | |
CN110032538A (zh) | 一种数据读取系统和方法 | |
CN105551522A (zh) | 闪存存储设备的管理方法及装置 | |
CN113065643A (zh) | 一种用于执行多任务卷积神经网络预测的装置和方法 | |
CN114005458A (zh) | 基于流水线架构的语音降噪方法、系统及存储介质 | |
KR101878213B1 (ko) | 가중치 그래프를 요약하는 방법, 장치 및 컴퓨터 프로그램 | |
CN109389835B (zh) | 一种城市道路交通需求与控制的映射方法 | |
CN116560843A (zh) | 基于环境感知的智能汽车gpu资源优化方法及装置 | |
CN110930092A (zh) | 一种配送路线调整方法、装置、电子设备和存储介质 | |
CN104881245A (zh) | 存储系统的配置方法及配置装置 | |
US20160350020A1 (en) | Information processing device | |
CN114298294A (zh) | 一种基于硬件加速器的神经网络内存优化方法和装置 | |
CN111913907A (zh) | 一种fpga集群方法、fpga芯片和fpga集群系统 | |
CN116991792B (zh) | 应用于人工智能芯片的计算处理方法、装置及芯片 | |
CN111078407A (zh) | 内存管理的方法、装置、存储介质及电子设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |