CN118152330A - 一种可重构计算装置、卷积计算方法和电子设备 - Google Patents
一种可重构计算装置、卷积计算方法和电子设备 Download PDFInfo
- Publication number
- CN118152330A CN118152330A CN202211564751.7A CN202211564751A CN118152330A CN 118152330 A CN118152330 A CN 118152330A CN 202211564751 A CN202211564751 A CN 202211564751A CN 118152330 A CN118152330 A CN 118152330A
- Authority
- CN
- China
- Prior art keywords
- original pixel
- weight value
- period
- time period
- computing
- 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
- 238000004364 calculation method Methods 0.000 title claims abstract description 166
- 239000011159 matrix material Substances 0.000 claims description 93
- 238000000034 method Methods 0.000 claims description 42
- 238000013528 artificial neural network Methods 0.000 abstract description 2
- 238000013461 design Methods 0.000 description 9
- 238000012545 processing Methods 0.000 description 9
- 230000005540 biological transmission Effects 0.000 description 8
- 238000010586 diagram Methods 0.000 description 6
- 238000009825 accumulation Methods 0.000 description 5
- 238000004590 computer program Methods 0.000 description 3
- 238000011161 development Methods 0.000 description 3
- 230000018109 developmental process Effects 0.000 description 3
- 230000003068 static effect Effects 0.000 description 3
- 238000004458 analytical method Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Landscapes
- Complex Calculations (AREA)
Abstract
本申请实施例公开了一种可重构计算装置、卷积计算方法和电子设备,涉及神经网络领域,解决了粗粒度可重构体系结构的处理器进行卷积计算时访存功耗较高的问题。具体方案为:提供一种包括多个计算单元的可重构计算装置,该多个计算单元包括第一计算单元和第二计算单元。其中,第一计算单元用于在第一时间段内获取第一权重值和第一原始像素,并根据第一权重值和第一原始像素确定第一乘积。第一计算单元还用于在至少一个时间段中的每个时间段内,获取第二权重值以及接收第二计算单元传输的原始像素,并根据第二权重值和传输的原始像素确定第二乘积。第一计算单元还用于根据第一乘积和第二乘积确定目标像素。
Description
技术领域
本申请实施例涉及神经网络领域,尤其涉及一种可重构计算装置、卷积计算方法和电子设备。
背景技术
卷积(Convolution)计算广泛应用在图像处理的过程中,由于卷积计算会产生大量的数据搬运需求,对底层处理硬件的数据吞吐量提出了挑战。
通过采用粗粒度可重构体系结构(coarse-grained reconfigurablearchitecture,CGRA)的处理器进行卷积计算,由于该处理器有高并行度可供开发,因此可以有效提高数据的吞吐量。但是,现有技术中粗粒度可重构体系结构的处理器进行卷积计算时的访存功耗较高。
发明内容
本申请实施例提供一种可重构计算装置、卷积计算方法和电子设备,解决了粗粒度可重构体系结构的处理器进行卷积计算时访存功耗较高的问题。
为达到上述目的,本申请实施例采用如下技术方案:
本申请实施例的第一方面,提供一种可重构计算装置,该装置包括:多个计算单元,该多个计算单元用于执行像素矩阵与权重矩阵的卷积计算,像素矩阵包括多行多列的原始像素,权重矩阵包括多行多列的权重值,多个计算单元包括第一计算单元和第二计算单元。第一计算单元用于在第一时间段内,获取第一权重值和第一原始像素,并根据第一权重值和第一原始像素确定第一乘积。第一计算单元还用于在至少一个时间段中的每个时间段内,获取第二权重值,以及接收第二计算单元传输的原始像素,并根据第二权重值和传输的原始像素确定第二乘积,至少一个时间段位于第一时间段之后。第一计算单元还用于根据第一乘积和第二乘积,确定目标像素。
可选的,上述多个计算单元110可以排列为计算单元阵列,该计算单元阵列可以包括A行B列,A和B均为大于或等于1的整数,本申请实施例对于A和B的具体取值并不限定。
可选的,上述像素矩阵可以包括C行D列,C和D均为大于或等于1的整数,本申请实施例对于C和D的具体取值并不限定。
可选的,上述权重矩阵可以包括E行F列,E和F均为大于或等于1的整数,本申请实施例对于E和F的具体取值并不限定。示例性的,E和F的取值可以均为K。
可选的,K的具体取值包括3、5和9,本申请实施例对于K的具体取值并不限定。
本申请实施例提供的可重构计算装置,在卷积计算的过程中,第一计算单元在第一时间段从外部存储设备获取第一权重值和第一原始像素,根据第一权重值和第一原始像素确定第一乘积,在至少一个时间段中的每个时间段内,从外部存储设备获取第二权重值,并接收第二计算单元传输的原始像素,根据第二权重值和传输的原始像素确定第二乘积,最后根据第一乘积和第二乘积确定目标像素。其中,传输的原始像素是从第二计算单元接收的,而不是从外部存储设备获取的,因此可以降低可重构计算装置的读取功耗。而且,第一计算单元在卷积计算的过程中,最后根据第一乘积和第二乘积确定目标像素,从而第一计算单元最终输出的数据为目标像素,而不用输出大量的中间数据部分和,因此能够降低可重构计算装置的写入功耗。
结合第一方面,在一种可能的实现方式中,至少一个时间段包括第二时间段,第一计算单元在第二时间段内接收的传输的原始像素包括第二原始像素。第二计算单元用于在第一时间段内,获取第一权重值和第二原始像素,并根据第一权重值和第二原始像素确定第三乘积。第二计算单元还用于在第二时间段内,向第一计算单元发送第二原始像素,第二时间段位于第一时间段之后。
本申请实施例提供的可重构计算装置,通过第二计算单元获取传输的原始像素,在第二时间段向第一计算单元发送传输的原始像素,因此第一计算单元不需要从外部存储设备获取原始像素,因此可以降低可重构计算装置的读取功耗。
结合第一方面,在一种可能的实现方式中,多个计算单元还包括第三计算单元,至少一个时间段还包括第三时间段,第一计算单元在第三时间段内接收的传输的原始像素包括第三原始像素。第三计算单元用于在第一时间段内,获取第一权重值和第三原始像素,并根据第一权重值和第三原始像素确定第四乘积。第三计算单元还用于在第二时间段内,向第二计算单元发送第三原始像素。第二计算单元还用于在第三时间段内,向第一计算单元发送第三原始像素,第三时间段位于第二时间段之后。
本申请实施例提供的可重构计算装置,通过第三计算单元获取传输的原始像素,在第二时间段向第二计算单元发送传输的原始像素,第二计算单元在第三时间段内向第一计算单元发送传输的原始像素,因此第一计算单元不需要从外部存储设备获取原始像素,因此可以降低可重构计算装置的读取功耗。
结合第一方面,在一种可能的实现方式中,当n的取值等于0时,第一时间段包括卷积计算的第nK2周期,当n的取值大于或等于1时,第一时间段包括卷积计算的第nK2-1周期所在的时间段,其中n为自然数,K为权重矩阵的边长。
结合第一方面,在一种可能的实现方式中,至少一个时间段包括卷积计算的第nK+1~(n+1)K-1周期所在的时间段,n为自然数,K为权重矩阵的边长。在第nK+1~(n+1)K-1周期内,第二权重值和第一权重值位于权重矩阵中的同一行,且第二权重值位于第一权重值之后,传输的原始像素和第一原始像素位于像素矩阵中的同一行,且传输的原始像素位于第一原始像素之后。
本申请实施例提供的可重构计算装置,通过在第nK+1~(n+1)K-1周期所在的时间段,获取与第一权重值和第一原始像素位于不同列的权重值和原始像素,从而第一计算单元可以完成权重矩阵中一行权重值,与像素矩阵中对应的一行原始像素的向量内积。
结合第一方面,在一种可能的实现方式中,至少一个时间段还包括卷积计算的第(n+1)K周期所在的时间段,n为自然数,K为权重矩阵的边长,在第(n+1)K周期内,第二权重值和第一权重值位于权重矩阵中的同一列,且第二权重值位于第一权重值之后,传输的原始像素和第一原始像素位于像素矩阵中的同一列,且传输的原始像素位于第一原始像素之后。
本申请实施例提供的可重构计算装置,通过在第(n+1)K周期所在的时间段,获取与第一权重值和第一原始像素位于同一列的权重值和原始像素,从而第一计算单元可以完成权重矩阵中一列权重值,与像素矩阵中对应的一列原始像素的乘法运算。
结合第一方面,在一种可能的实现方式中,第一计算单元包括本地寄存器、第一加载操作单元和乘累加计算单元。本地寄存器用于存储第一乘积,第一加载操作单元用于获取第二权重值和接收传输的原始像素,乘累加计算单元用于对第一乘积、第二权重值和传输的原始像素,进行乘累加运算,本地寄存器还用于存储乘累加运算的计算结果。
本申请实施例提供的可重构计算装置,第一计算单元包括互相耦合的本地寄存器、第一加载操作单元和乘累加计算单元,从而可以在卷积计算的过程中传输的原始像素,根据传输的原始像素和权重值确定目标像素,而不用从外部存储设备获取原始像素,输出大量的中间数据部分和,因此能够降低可重构计算装置的读写功耗。
结合第一方面,在一种可能的实现方式中,该装置还包括与第一计算单元耦合的全局寄存器,该全局寄存器用于缓存目标像素。
本申请实施例提供的可重构计算装置,通过设置与第一计算单元耦合的全局寄存器,该全局寄存器用于缓存第一计算单元确定的目标像素,从而可以降低可重构计算装置的访存压力。
结合第一方面,在一种可能的实现方式中,该装置还包括第四计算单元,第四计算单元包括第二加载操作单元和存储操作单元。其中,第二加载操作单元用于获取目标像素,存储操作单元用于向外部发送目标像素。
本申请实施例提供的可重构计算装置,通过在第四计算单元中设置第二加载操作单元和存储操作单元,从而可以向外部存储设备发送可重构计算装置卷积计算确定的多个目标像素。
本申请实施例第二方面,提供一种卷积计算方法,应用于包括多个计算单元的可重构计算装置,多个计算单元用于执行像素矩阵与权重矩阵的卷积计算,像素矩阵包括多行多列的原始像素,权重矩阵包括多行多列的权重值,多个计算单元包括第一计算单元和第二计算单元,该方法包括:
第一计算单元在第一时间段内,获取第一权重值和第一原始像素,并根据第一权重值和第一原始像素确定第一乘积。第一计算单元在至少一个时间段中的每个时间段内,获取第二权重值,以及接收第二计算单元传输的原始像素,并根据第二权重值和传输的原始像素确定第二乘积,至少一个时间段位于第一时间段之后。第一计算单元根据第一乘积和第二乘积,确定目标像素。
结合第二方面,在一种可能的实施例中,至少一个时间段包括第二时间段,第一计算单元在第二时间段内接收的传输的原始像素包括第二原始像素,方法还包括:
第二计算单元在第一时间段内,获取第一权重值和第二原始像素,并根据第一权重值和第二原始像素确定第三乘积。第二计算单元在第二时间段内,向第一计算单元发送第二原始像素,第二时间段位于第一时间段之后。
结合第二方面,在一种可能的实施例中,多个计算单元还包括第三计算单元,至少一个时间段还包括第三时间段,第一计算单元在第三时间段内接收的传输的原始像素包括第三原始像素,方法还包括:
第三计算单元在第一时间段内,获取第一权重值和第三原始像素,并根据第一权重值和第三原始像素确定第四乘积。第三计算单元在第二时间段内,向第二计算单元发送第三原始像素。第二计算单元在第三时间段内,向第一计算单元发送第三原始像素,第三时间段位于第二时间段之后。
结合第二方面,在一种可能的实施例中,当n的取值等于0时,第一时间段包括卷积计算的第nK2周期,当n的取值大于或等于1时,第一时间段包括卷积计算的第nK2-1周期所在的时间段,其中n为自然数,K为权重矩阵的边长。
结合第二方面,在一种可能的实施例中,至少一个时间段包括卷积计算的第nK+1~(n+1)K-1周期所在的时间段,n为自然数,K为权重矩阵的边长。在第nK+1~(n+1)K-1周期内,第二权重值和第一权重值位于权重矩阵中的同一行,且第二权重值位于第一权重值之后,传输的原始像素和第一原始像素位于像素矩阵中的同一行,且传输的原始像素位于第一原始像素之后。
结合第二方面,在一种可能的实施例中,至少一个时间段还包括卷积计算的第(n+1)K周期所在的时间段,n为自然数,K为权重矩阵的边长。在第(n+1)K周期内,第二权重值和第一权重值位于权重矩阵中的同一列,且第二权重值位于第一权重值之后,传输的原始像素和第一原始像素位于像素矩阵中的同一列,且传输的原始像素位于第一原始像素之后。
结合第二方面,在一种可能的实施例中,第一计算单元包括本地寄存器、第一加载操作单元和乘累加计算单元,方法还包括:本地寄存器存储第一乘积,第一加载操作单元获取第二权重值和接收传输的原始像素,乘累加计算单元对第一乘积、第二权重值和传输的原始像素,进行乘累加运算,本地寄存器存储乘累加运算的计算结果。
结合第二方面,在一种可能的实施例中,上述可重构计算装置还包括与第一计算单元耦合的全局寄存器,方法还包括:全局寄存器缓存目标像素。
结合第二方面,在一种可能的实施例中,装置还包括第四计算单元,第四计算单元包括第二加载操作单元和存储操作单元,方法还包括:第二加载操作单元获取目标像素,存储操作单元向外部发送目标像素。
本申请实施例第三方面,提供一种电子设备,该电子设备包括处理器,以及与处理器耦合的可重构计算装置,该可重构计算装置的结构为第一方面或者第一方面的任一种可能的实现方式中所述的可重构计算装置的结构。
本申请实施例第四方面,提供一种计算机可读存储介质,该计算机可读存储介质包括指令。当指令在计算机上运行时,使得可重构计算装置执行如上述第二方面或第二方面任一种可能实现方式中的卷积计算方法。
本申请实施例第五方面,提供一种计算机程序产品,当计算机程序产品在计算机上运行时,使得计算机执行如上述第二方面或第二方面任一种可能实现方式中的卷积计算方法。
本申请中第二方面至第五方面的描述,可以参考第一方面的详细描述;并且,第二方面至第五方面描述的有益效果,可以参考第一方面的有益效果分析,此处不再赘述。
附图说明
图1为本申请实施例提供的一种可重构计算装置的结构示意图;
图2为本申请实施例提供的另一种可重构计算装置的结构示意图;
图3为本申请实施例提供的又一种可重构计算装置的结构示意图;
图4为本申请实施例提供的再一种可重构计算装置的结构示意图;
图5为本申请实施例提供的再一种可重构计算装置的结构示意图;
图6为本申请实施例提供的一种卷积计算方法的流程示意图;
图7为本申请实施例提供的另一种卷积计算方法的流程示意图;
图8为本申请实施例提供的又一种卷积计算方法的流程示意图;
图9为本申请实施例提供的一种电子设备的结构示意图。
具体实施方式
下文将详细论述各实施例的制作和使用。但应了解,本申请提供的许多适用发明概念可实施在多种具体环境中。所论述的具体实施例仅仅说明用以实施和使用本说明和本技术的具体方式,而不限制本申请的范围。
除非另有定义,否则本文所用的所有科技术语都具有与本领域普通技术人员公知的含义相同的含义。
各电路或其它组件可描述为或称为“用于”执行一项或多项任务。在这种情况下,“用于”用来通过指示电路/组件包括在操作期间执行一项或多项任务的结构(例如电路系统)来暗指结构。因此,即使当指定的电路/组件当前不可操作(例如未打开)时,该电路/组件也可以称为用于执行该任务。与“用于”措辞一起使用的电路/组件包括硬件,例如执行操作的电路等。
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。在本申请中,“至少一个”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B的情况,其中A,B可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。“以下至少一项(个)”或其类似表达,是指的这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b或c中的至少一项(个),可以表示:a,b,c,a和b,a和c,b和c或a、b和c,其中a、b和c可以是单个,也可以是多个。另外,在本申请的实施例中,“第一”、“第二”等字样并不对数量和次序进行限定。
需要说明的是,本申请中,“示例性的”或者“例如”等词用于表示作例子、例证或说明。本申请中被描述为“示例性的”或者“例如”的任何实施例或设计方案不应被解释为比其他实施例或设计方案更优选或更具优势。确切而言,使用“示例性的”或者“例如”等词旨在以具体方式呈现相关概念。
在介绍本申请实施例之前,首先对本申请涉及的背景技术进行介绍说明。
计算机系统中的底层处理硬件经过漫长的应用与发展,已经形成多式多样的基础架构。目前应用最广泛的硬件架构包括:以指令流驱动为基础的通用处理器(general-purpose processors,GPP)、以数据驱动为基础的专用集成电路(application-specificintegrated circuits,ASIC)和以配置和数据共同为基础的可重构处理器。
由于可重构处理器很好地结合了通用处理器的灵活性以及专用集成电路的高效性,因此可重构处理器是面向大规模计算中比较理想的解决方案。
其中,可重构处理器又主要分为细粒度可重构((fine-grained reconfigurablearchitecture,FGRA)处理器与粗粒度可重构(coarse-grained reconfigurablearchitecture,CGRA)处理器。
细粒度可重构处理器以现场可编程门阵列(field programmable gate array,FPGA)为代表,包含大量的存储资源与计算资源以及丰富的片上互联资源。但由于其能够实现比特级的灵活重构,将导致需要较大的配置信息存储和较长的配置时间,同时也会带来较大的片上功耗与延时。因为其在工作中无法切换配置,其也属于静态可重构处理器。
为了弥补上述缺陷,粗粒度可重构处理器在上个世纪被学术界提出,其具备配置信息小与低功耗的特点。因粗粒度可重构处理器极快的配置速度,使得其在工作中切换配置成为可能,并作为动态可重构处理器的主要代表在学术界与工业界被广泛研究与应用。同时,由于卷积计算在粗粒度可重构处理器上有高并行度可供开发,能够极大地提高数据的吞吐量,因此广泛应用在图像处理的卷积计算过程中。
例如,一种可重构脉动阵列的卷积计算设计方法中,通过在卷积计算过程中将部分积输出,由位于粗粒度可重构处理器中阵列边缘或阵列外的累加单元单独求和,从而完成卷积计算。例如,google的Eyeriss系列粗粒度可重构处理器。但是,该设计方法中,需要在粗粒度可重构处理器的阵列边缘或阵列外设置累加单元,将占用珍贵的片上面积,导致成本较高。
同时,在采用粗粒度可重构处理器进行卷积计算的过程中,并行的乘积累加运算(multiply accumulate,MAC)需要通过访存单元(load/store unit,LSU)从动态随机存取存储器(dynamic random access memory,DRAM)中读取所有的输入数据,需要高带宽并将造成高能耗,例如从片外DRAM获取数据比从片上存储中获取数据的功耗高了几个数量级。而且大量的中间数据部分和(partial sum,P sum),是由并行的乘积累加运算同时产生的,需要通过访存单元存入动态随机存取存储器,将造成存储压力,不立即在阵列上处理掉中间数据还会消耗额外的读写功耗。
为了解决粗粒度可重构处理器在卷积计算的过程中,访存单元的读写压力较大,且读写功耗较高的问题,一种可重构脉动阵列的卷积计算设计方法中,通过将权重数据在粗粒度可重构处理器的阵列上传递,将该处理器的阵列中每个处理单元(processingelement,PE)的计算结果和权重数据经过一级寄存器后输入到同一列的下一个处理单元中参与计算,以完成卷积计算。可以理解的,该设计方法通过复用权重数据,可以缓解访存压力,降低读写功耗,但权重数据的数据量较小,粗粒度可重构处理器的读写功耗仍然较高。
另一种可重构脉动阵列的卷积计算设计方法中,在粗粒度可重构处理器中单独开辟暂存单元作为缓存空间,将暂存单元作为粗粒度可重构处理器和静态随机存取存储器(static random-access memory,SRAM)之间的中转站,通过复用特征数据完成卷积计算。具体的,首先,将卷积核在特征图上滑动截取的多组数据分别按照卷积核的行数拆分成多个小组,并将复用的数据暂存在暂存单元,通过卷积核和特征图的大小确定暂存的周期。然后,从暂存单元中获取小组中属于同一组的数据进行卷积运算,将结果进行累加以完成卷积计算。可以理解的,该设计方法通过复用特征数据,可以有效降低访存压力和读写功耗,但是在片上单独开辟暂存单元,将占用珍贵的片上面积,导致成本较高。
综上所述,上述各设计方法中,粗粒度可重构处理器在进行卷积计算的过程中,存在读写压力较大和读写功耗较高的问题,而且粗粒度可重构处理器的实现成本较高。基于此,本申请实施例提供一种可重构计算装置,能够有效降低在卷积计算过程中的读写压力和读写功耗,而且能够降低粗粒度可重构处理器的实现成本。
如图1所示,为本申请实施例提供的一种可重构计算装置100,该可重构计算装置100包括多个计算单元110,该多个计算单元110用于执行像素矩阵与权重矩阵的卷积计算,且该多个计算单元110之间可以传输数据,该多个计算单元110包括第一计算单元111和第二计算单元112。其中,像素矩阵包括多行多列的原始像素,权重矩阵包括多行多列的权重值,第一计算单元111和第二计算单元112也可以称为处理单元。
可选的,上述多个计算单元110可以排列为计算单元阵列,该计算单元阵列可以包括A行B列,A和B均为大于或等于1的整数,本申请实施例对于A和B的具体取值并不限定,下述实施例中以计算单元阵列包括3行3列为例进行示例性说明。
可选的,上述像素矩阵可以包括C行D列,C和D均为大于或等于1的整数,本申请实施例对于C和D的具体取值并不限定,下述实施例中以像素矩阵包括5行5列为例进行示例性说明。
可选的,上述权重矩阵(也可以称为卷积核)可以包括E行F列,E和F均为大于或等于1的整数,本申请实施例对于E和F的具体取值并不限定,下述实施例中以E和F的取值均为K为例进行示例性说明,该权重矩阵也可以称为卷积核。
可选的,上述K的具体取值可以为3、5或9,本申请实施例对于K的具体取值并不限定,下述实施例中以K的取值为3为例进行示例性说明。
第一计算单元111用于在第一时间段内,获取第一权重值和第一原始像素,并根据第一权重值和第一原始像素确定第一乘积。
可选的,第一计算单元111可以为计算单元阵列中的任一个计算单元,本申请实施例对于第一计算单元在计算单元阵列中的具体位置并不限定,下述实施例中以第一计算单元111位计算单元阵列中第1行第1列的计算单元为例进行示例性说明。
可选的,当n的取值等于0时,第一时间段包括卷积计算的第nK2周期,当n的取值大于或等于1时,第一时间段包括卷积计算的第nK2-1周期所在的时间段,其中n为自然数,K为权重矩阵的边长,本申请实施例对于n和K的具体取值并不限定。
例如,以K的取值等于3为例,当n的取值为0时,第一时间段为卷积计算的第0周期所在的时间段;当n的取值为1时,第一时间段为卷积计算的第8周期所在的时间段;当n的取值为2时,第一时间段为卷积计算的第17周期所在的时间段。
上述第一计算单元111获取第一权重值和第一原始像素具体可以为:第一计算单元111从外部存储器中获取第一权重值和第一原始像素。
可选的,该外部存储器可以为静态随机存取存储器,本申请实施例对于外部存储器的具体类型并不限定。
可选的,上述第一权重值可以为权重矩阵中的任一个权重值,本申请实施例对于第一权重值在权重矩阵中的具体位置并不限定,下述实施例中以第一权重值为权重矩阵中第1行第1列的权重值为例进行示例性说明。
可选的,上述第一原始像素可以为像素矩阵中的任一个原始像素,本申请实施例对于第一原始像素在像素矩阵中的具体位置并不限定,下述实施例中以第一原始像素为像素矩阵中第1行第1列的原始像素为例进行示例性说明。
例如,如图2中的(a)所示,以权重矩阵包括K[0][0]~K[2][2]共9个权重值,如图2中的(b)所示,以像素矩阵包括Ifmap[0][0]~Ifmap[4][4]共25个原始像素,如图2中的(c)所示,以多个计算单元110包括PE1~PE9共9个计算单元为例,第一计算单元111为计算单元阵列中第1行第1列的PE1,第一计算单元可以在第0周期,获取权重矩阵中第1行第1列的第一权重值K[0][0],同时获取像素矩阵中第1行第1列的第一原始像素Ifmap[0][0],并根据第一权重值K[0][0]和第一原始像素Ifmap[0][0]确定第一乘积K[0][0]*Ifmap[0][0]。
第一计算单元111还用于在至少一个时间段中的每个时间段内,获取第二权重值,以及接收第二计算单元112传输的原始像素,并根据第二权重值和传输的原始像素确定第二乘积,至少一个时间段位于第一时间段之后。
可选的,上述至少一个时间段包括卷积计算的第nK+1~(n+1)K-1周期所在的时间段,还包括卷积计算的第(n+1)K周期所在的时间段,n为自然数,K为权重矩阵的边长,本申请实施例对于n和K的具体取值并不限定。
在一种可能的实施例中,在卷积计算的第nK+1~(n+1)K-1周期内,第二权重值和第一权重值位于权重矩阵中的同一行,且第二权重值位于第一权重值之后,传输的原始像素和第一原始像素位于像素矩阵中的同一行,且传输的原始像素位于第一原始像素之后。
例如,结合图2,以n的取值为0为例,在卷积计算的第1周期内,第二权重值可以为K[0][1],传输的原始像素可以为Ifmap[0][1],第一计算单元111可以根据第二权重值K[0][1]和传输的原始像素Ifmap[0][1]确定第二乘积为K[0][1]*Ifmap[0][1]。在卷积计算的第2周期内,第二权重值可以为K[0][2],传输的原始像素可以为Ifmap[0][2],第一计算单元111可以根据第二权重值K[0][2]和传输的原始像素Ifmap[0][2]确定第二乘积为K[0][2]*Ifmap[0][2]。
再例如,结合图2,以n的取值为1为例,在卷积计算的第4周期内,第二权重值可以为K[1][1],传输的原始像素可以为Ifmap[1][1],第一计算单元111可以根据第二权重值K[1][1]和传输的原始像素Ifmap[1][1]确定第二乘积为K[1][1]*Ifmap[1][1]。在卷积计算的第5周期内,第二权重值可以为K[1][2],传输的原始像素可以为Ifmap[1][2],第一计算单元111可以根据第二权重值K[1][2]和传输的原始像素Ifmap[1][2]确定第二乘积为K[1][2]*Ifmap[1][2]。
再例如,结合图2,以n的取值为2为例,在卷积计算的第7周期内,第二权重值可以为K[2][1],传输的原始像素可以为Ifmap[2][1],第一计算单元111可以根据第二权重值K[2][1]和传输的原始像素Ifmap[2][1]确定第二乘积为K[2][1]*Ifmap[2][1]。在卷积计算的第8周期内,第二权重值可以为K[2][2],传输的原始像素可以为Ifmap[2][2],第一计算单元111可以根据第二权重值K[2][2]和传输的原始像素Ifmap[2][2]确定第二乘积为K[2][2]*Ifmap[2][2]。
在一种可能的实施例中,在卷积计算的第(n+1)K周期内,第二权重值和第一权重值位于权重矩阵中的同一列,且第二权重值位于第一权重值之后,传输的原始像素和第一原始像素位于像素矩阵中的同一列,且传输的原始像素位于第一原始像素之后。
例如,结合图2,以n的取值为0为例,在卷积计算的第3周期,第二权重值可以为K[1][0],传输的原始像素可以为Ifmap[1][0],第一计算单元111可以根据第二权重值K[1][0]和传输的原始像素Ifmap[1][0]确定第二乘积为K[1][0]*Ifmap[1][0]。以n的取值为1为例,在卷积计算的第6周期,第二权重值可以为K[2][0],传输的原始像素可以为Ifmap[2][0]。第一计算单元111可以根据第二权重值K[2][0]和传输的原始像素Ifmap[2][0]确定第二乘积为K[2][0]*Ifmap[2][0]。
结合图2,可以理解的,在卷积计算的第nK+1~(n+1)K周期内,第一计算单元111通过获取不同的第二权重值和传输的原始像素,可以得到多个第二乘积,该多个第二乘积包括K[0][1]~K[2][2]该8个权重值分别与Ifmap[0][1]~Ifmap[2][2]该8个原始像素的乘积。
可选的,上述第一计算单元111从第二计算单元112接收的传输的原始像素,可以是第二计算单元112从外部存储器获取的,或者,可以是多个计算单元110中除第一计算单元111和第二计算单元112之外的其他计算单元从外部存储器获取,并向第二计算单元112发送的,本申请实施例对此并不限定。
在一种可能的实施例中,第一计算单元111从第二计算单元112接收的传输的原始像素,是第二计算单元112从外部存储器获取的,上述至少一个时间段包括第二时间段,第一计算单元在第二时间段内接收的传输的原始像素包括第二原始像素。
具体的,第二计算单元112用于在第一时间段内,获取第一权重值和第二原始像素,并根据第一权重值和第二原始像素确定第三乘积。第二计算单元112还用于在第二时间段内,向第一计算单元111发送第二原始像素,从而第一计算单元111可以获取第二权重值,并接收第二原始像素,根据第二权重值和第二原始像素确定第二乘积,第二时间段位于第一时间段之后。
例如,结合图2,以第一计算单元111为PE2,第二计算单元为PE3为例,在第一时间段内,第二计算单元112可以获取第一权重值K[0][0]和第二原始像素Ifmap[0][1],并根据第一权重值K[0][0]和第二原始像素Ifmap[0][1]确定第三乘积K[0][0]*Ifmap[0][1]。在第二时间段内,第二计算单元112可以向第一计算单元111发送第二原始像素Ifmap[0][2],从而第一计算单元111可以根据第二原始像素Ifmap[0][2]和第二权重值K[0][1]确定第二乘积K[0][1]*Ifmap[0][2]。
在另一种可能的实施例中,上述多个计算单元还包括第三计算单元113,第一计算单元111从第二计算单元112接收的传输的原始像素,是第三计算单元113向第二计算单元发送的。
具体的,第三计算单元113用于在第一时间段内,获取第一权重值和第三原始像素,并根据第一权重值和第三原始像素确定第四乘积。第三计算单元113还用于在第二时间段内,向第二计算单元112发送第三原始像素,从而第二计算单元112可以获取第二权重值,接收第三原始像素,并根据第二权重值和第三原始像素进行乘法运算。第二计算单元112还用于在第三时间段内,向第一计算单元111发送第三原始像素,从而第一计算单元111可以获取第三权重值,接收第三原始像素,并根据第三权重值和第三原始像素确定第二乘积,第三时间段位于第二时间段之后。
例如,结合图2,以第一计算单元111为PE1,第二计算单元112为PE2,第三计算单元113为PE3为例,在第一时间段内,第三计算单元113可以获取第一权重值K[0][0]和第三原始像素Ifmap[0][2],根据第一权重值K[0][0]和第三原始像素Ifmap[0][2]确定第一乘积K[0][0]*Ifmap[0][2]。在第二时间段内,第三计算单元113可以向第二计算单元112发送第三原始像素Ifmap[0][2],第二计算单元112可以获取第二权重值K[0][1],根据第二权重值K[0][1]和第三原始像素Ifmap[0][2]确定第五乘积K[0][1]*Ifmap[0][2]。在第三时间段内,第二计算单元112可以向第一计算单元发送第三原始像素Ifmap[0][2],从而第一计算单元可以获取第三权重值K[0][2],并根据第三权重值K[0][2]和第三原始像素Ifmap[0][2]确定第二乘积K[0][2]*Ifmap[0][2]。
第一计算单元111还用于根据第一乘积和第二乘积,确定目标像素。
具体的,第一计算单元111可以对第一计算单元111在第一时间段确定的第一乘积,和第一计算单元111在至少一个第二时间段中的每个时间段确定的第二乘积进行求和,以确定目标像素,或者,第一计算单元可以对第一计算单元111在第一时间段确定的第一乘积,和第一计算单元111在至少一个第二时间段中的每个时间段确定的第二乘积进行累加,以确定目标像素。
例如,结合图2,以K的取值为3为例,第一计算单元111可以对在卷积计算的第0(nK)周期确定的第一乘积K[0][0]*Ifmap[0][0],和在第1、2、4、5、7和8(nK+1~(n+1)K-1)周期内确定的第二乘积K[0][1]*Ifmap[0][1]、K[0][2]*Ifmap[0][2]、K[1][1]*Ifmap[1][1]、K[1][2]*Ifmap[1][2]、K[2][1]*Ifmap[2][1]和K[2][2]*Ifmap[2][2],以及在第3和6((n+1)K)周期内确定的第二乘积K[1][0]*Ifmap[1][0]和K[2][0]*Ifmap[2][0]进行求和,以确定目标像素。可以理解的,第一计算单元111在第0周期获取第一原始像素和第一权重值,在第1~9周期通过获取第二权重值并接收第二计算单元112发送的传输的像素进行乘法运算,以确定第一乘积和多个第二乘积,完成了权重矩阵与像素矩阵中的第一子像素矩阵之间卷积运算所要完成的乘法运算,从而第一计算单元111通过对第一乘积和多个第二乘积进行求和,可以确定目标像素。
再例如,结合图2,以计算单元阵列为主体,对申请实施例提供的可重构计算装置100中的计算单元通过累加完成卷积计算的过程进行示例性说明。
如图3中的(a)所示,在第0周期计算单元阵列中的所有计算单元获取相同的权重值K[0][0],同时分别获取原始像素Ifmap[0][0]~Ifmap[2][2],并完成一次乘法运算:
K[0][0]*Ifmap[i][j]
其中,i和j分别为完成乘法运算的计算单元所对应的行和列,例如PE1完成乘法运算K[0][0]*Ifmap[0][0]。
如图3中的(b)所示,在第1周期计算单元阵列中的所有计算单元获取相同的权重值K[0][1],同时分别向左侧的计算单元发送上一周期乘法运算所采用的原始像素,第i行第j列的计算单元收到Ifmap[i][j+1],并完成乘累加运算K[0][1]*Ifmap[i][j+1]+psum,其中psum为上一周期的乘累加计算结果。例如,在第1周期,PE1完成的计算为:
K[0][1]*Ifmap[0][1]+psum
其中,psum=K[0][0]*Ifmap[0][0]。位于计算单元阵列最右侧的一列计算单元,将从外部存储设备中获取第4列原始像素Ifmap[i][2+1](Ifmap[0][3]、Ifmap[1][3]和Ifmap[2][3]),并完成对应的乘累加计算。
如图3中的(c)所示,在第2周期计算单元阵列中的所有计算单元获取相同的权重值K[0][2],同时分别向左侧的计算单元发送上一周期乘法运算所采用的原始像素,第i行第j列的计算单元收到Ifmap[i][j+2],并完成乘累加运算K[0][1]*Ifmap[i][j+1]+psum。例如,在第2周期,PE1完成的计算为:
K[0][2]*Ifmap[0][2]+psum
其中,psum=K[0][1]*Ifmap[0][1]+K[0][0]*Ifmap[0][0]。位于计算单元阵列最右侧的一列计算单元,将从外部存储设备中获取第5列原始像素Ifmap[i][2+2](Ifmap[0][4]、Ifmap[1][4]和Ifmap[2][4]),并完成对应的乘累加计算。可以理解的,通过在第1~2(nK+1~(n+1)K-1)周期每个计算单元向左分别向左侧的计算单元发送上一周期乘法运算所采用的原始像素,每个计算单元可以完成权重矩阵中一行权重值,与像素矩阵中对应的一行原始像素的向量内积。
如图3中的(d)所示,在第3周期计算单元阵列中的所有计算单元获取相同的权重值K[1][0],同时分别向上侧的计算单元发送第0周期获取的原始像素,第i行第j列的计算单元接收到原始像素Ifmap[i+1][j],并完成乘累加运算K[1][0]*Ifmap[i+1][j]+psum。例如,在第3((n+1)K)周期,PE1完成的计算为:
K[1][0]*Ifmap[1][0]+psum
其中,psum=K[0][2]*Ifmap[0][2]+K[0][1]*Ifmap[0][1]+K[0][0]*Ifmap[0][0]。位于计算单元阵列最下方的一列计算单元,将从外部存储设备获取第4行原始像素Ifmap[1+2][j](Ifmap[3][0]、Ifmap[3][1]和Ifmap[3][2])。
类似的,在第4、5、7和8周期,计算单元阵列中的所有计算单元可以分别向左侧的计算单元发送原始像素,并完成乘累加运算,在第6周期,计算单元阵列中的所有计算单元可以分别向上侧的计算单元发送原始像素,并完成乘累加运算,从而在第8周期计算完成后,每个计算单元完成了权重矩阵与像素矩阵中对应的一个像素矩阵之间的卷积计算,以确定对应的目标像素。例如,在第8周期,PE1完成了第一子像素矩阵和权重矩阵的卷积计算,PE9完成了第二子像素矩阵和权重矩阵的卷积计算。
可以理解的,计算单元阵列中的9个计算单元通过在第1~2(nK+1~(n+1)K-1)周期,分别向左侧的计算单元传递原始像素,并完成一次乘累加运算,通过在第(n+1)K)周期,分别向上侧的计算单元传递原始像素,并完成一次乘累加运算,经过9个周期,该计算单元阵列中的9个计算单元,可以分别确定一个目标像素,该计算单元阵列可以输出9个目标像素。而且,该计算单元阵列在卷积计算的过程中,通过将原始像素以脉动的形式在计算单元阵列的同一行或同一列传递,从而使得每个计算元完成权重矩阵与像素矩阵中对应的一个像素矩阵之间卷积计算,在该过程中像素矩阵中的每个像素只需被相应的计算单元获取一次,因此能够减少计算单元阵列的访存操作,降低读取功耗。
本申请实施例提供的可重构计算装置100,在卷积计算的过程中,第一计算单元111在第一时间段从外部存储设备获取第一权重值和第一原始像素,根据第一权重值和第一原始像素确定第一乘积,在至少一个时间段中的每个时间段内,从外部存储设备获取第二权重值,并接收第二计算单元112传输的原始像素,根据第二权重值和传输的原始像素确定第二乘积,最后根据第一乘积和第二乘积确定目标像素。其中,传输的原始像素是从第二计算单元112接收的,而不是从外部存储设备获取的,因此可以降低可重构计算装置100的读取功耗。而且,第一计算单元111在卷积计算的过程中,最后根据第一乘积和第二乘积确定目标像素,从而第一计算单元111最终输出的数据为目标像素,而不用输出大量的中间数据部分和,因此能够降低可重构计算装置100的写入功耗。
在一种可能的实施例中,如图4所示,第一计算单元111包括互相耦合的本地寄存器1111、第一加载操作单元1112和乘累加计算单元1113。
其中,本地寄存器1111用于存储第一乘积,第一加载操作单元1112用于获取第二权重值和接收传输的原始像素,乘累加计算单元1113用于对第一乘积、第二权重值和传输的原始像素,进行乘累加运算,本地寄存器1111还用于存储乘累加运算的计算结果。
例如,如图3中的(a)所示,以第一计算单元111为计算单元阵列中的PE1,第二计算单元112为计算单元阵列中的PE2为例,在卷积计算的第0周期,第一加载单元1112可以获取第一权重值K[0][0]和第一原始像素Ifmap[0][0],乘累加计算单元1113可以根据第一权重值K[0][0]和第一原始像素Ifmap[0][0]确定第一乘积K[0][0]*Ifmap[0][0],本地寄存器1111可以存储该第一乘积K[0][0]*Ifmap[0][0]。如图3中的(b)所示,在卷积计算的第1周期,第一加载操作单元1112可以获取第二权重值K[0][1],同时接收第二计算单元112通过计算单元之间的互联通道路由的传输的原始像素Ifmap[0][1]。乘累加计算单元1113可以对第一乘积K[0][0]*Ifmap[0][0]、第二权重值K[0][1]和传输的原始像素Ifmap[0][1]进行乘累加运算:K[0][1]*Ifmap[0][1]+k[0][0]*Ifmap[0][0],本地寄存器1111可以存储该乘累加运算的计算结果K[0][1]*Ifmap[0][1]+k[0][0]*Ifmap[0][0]用于下一周期的乘累加运算。可以理解的,在卷积计算的第9周期,乘累加计算单元1113可以完成第一子像素矩阵和权重矩阵之间卷积计算的乘累加运算,以确定目标像素。
可选的,本地寄存器1111还可以用于存储当前周期获取或接收到的原始像素,从而可以在之后的周期向其他计算单元传递原始像素,实现原始像素的传输的。
例如,如图3中的(a)所示,在第0周期,PE2可以获取权重值K[0][0]和原始像素Ifmap[0][1],根据权重值K[0][0]和原始像素Ifmap[0][1]完成乘法运算:K[0][0]*Ifmap[0][1],并将该原始像素Ifmap[0][1]存储在本地寄存器1111中,在第1周期,PE2可以向PE1发送该原始像素Ifmap[0][1],从而PE1可以获取权重值K[0][1],接收原始像素Ifmap[0][1],并完成乘法运算K[0][1]*Ifmap[0][1]。
在一种可能的实施例中,上述多个计算单元110中的任一个计算单元,均包括各自对应的本地寄存器1111、加载操作单元1112和乘累加计算单元1113,从而每个计算单元可以完成权重矩阵与像素矩阵中对应的一个像素矩阵之间卷积计算的乘累加运算,分别确定一个目标像素。
本申请实施例提供的可重构计算装置100中,第一计算单元111包括互相耦合的本地寄存器1111、第一加载操作单元1112和乘累加计算单元1113,从而可以在卷积计算的过程中传输的原始像素,根据传输的原始像素和权重值确定目标像素,而不用从外部存储设备获取原始像素,输出大量的中间数据部分和,因此能够降低可重构计算装置100的读写功耗。同时,与上述在粗粒度可重构处理器中单独开辟暂存单元作为缓存空间相比,不需要单独开辟缓存空间,可以减少占用片上面积,可以降低可重构计算装置100的实现成本。
在一种可能的实施例中,如图4所示,可重构计算装置100还包括与第一计算单元111耦合的全局寄存器(global register,GR)115,该全局寄存器115用于缓存目标像素。
在一种可能的实施例中,如图5所示,上述多个计算单元110中的任一个计算单元,均包括各自对应的全局寄存器,该多个全局寄存器互相耦合,分别用于缓存对应计算单元的目标像素,从而每个计算单元卷积计算确定的目标像素可以暂存在全局寄存器中,从而降低可重构计算装置100的访存压力。
本申请实施例提供的可重构计算装置100中,通过设置与第一计算单元111耦合的全局寄存器115,该全局寄存器115用于缓存第一计算单元111确定的目标像素,从而可以降低可重构计算装置100的访存压力。
在一种可能的实施例中,可重构计算装置100还包括第四计算单元114,第四计算单元114包括第二加载操作单元和存储操作单元。其中,第二加载操作单元用于获取目标像素,存储操作单元用于向外部发送目标像素。
可选的,上述第二加载操作单元和存储操作单元可以为一个单元,该单元可以称为访存单元。
在一种,可能的实施例中,位于计算单元阵列两侧的计算单元可以包括各自对应的第二加载操作单元和存储操作单元,例如,图5中的PE1、PE4、PE7、PE3、PE6和PE9可以包括各自对应的第二加载操作单元和存储操作单元,该6个计算单元可以用于向外部存储发送计算单元阵列卷积计算确定的多个目标像素。
本申请实施例提供的可重构计算装置100中,通过在第四计算单元114中设置第二加载操作单元和存储操作单元,从而可以向外部存储设备发送可重构计算装置100卷积计算确定的多个目标像素。而且,由于可重构计算装置100卷积计算确定的是多个目标像素,而不是输出大量的中间数据部分和,因此可以在可重构计算装置100中的部分计算单元设置各自对应的第二加载操作单元和存储操作单元,而不需要在所有计算单元中设置对应的第二加载操作单元和存储操作单元,可以降低可重构计算装置100的实现成本。
在一种可能的实施例中,如图5所示,该可重构计算装置100还可以包括加载交叉开关矩阵(load crossbar)116和存储交叉开关矩阵(store crossbar)117,从而计算单元阵列中的每个计算单元可以通过加载交叉开关矩阵116获取权重数据,可以通过存储交叉开关矩阵117存储卷积计算确定的目标像素。
如图6所示,本申请实施例还提供一种卷积计算方法,应用于上述可重构计算装置100中,该方法包括步骤S601~S603。
S601、第一计算单元111在第一时间段内,获取第一权重值和第一原始像素,并根据第一权重值和第一原始像素确定第一乘积。
可选的,当n的取值等于0时,第一时间段包括卷积计算的第nK2周期,当n的取值大于或等于1时,第一时间段包括卷积计算的第nK2-1周期所在的时间段,其中n为自然数,K为权重矩阵的边长,本申请实施例对于n和K的具体取值并不限定。
S602、第一计算单元111在至少一个时间段中的每个时间段内,获取第二权重值,以及接收第二计算单元112传输的原始像素,并根据第二权重值和传输的原始像素确定第二乘积,至少一个时间段位于第一时间段之后。
可选的,上述至少一个时间段包括卷积计算的第nK+1~(n+1)K-1周期所在的时间段,还包括卷积计算的第(n+1)K周期所在的时间段,n为自然数,K为权重矩阵的边长,本申请实施例对于n和K的具体取值并不限定。
在一种可能的实施例中,在卷积计算的第nK+1~(n+1)K-1周期内,第二权重值和第一权重值位于权重矩阵中的同一行,且第二权重值位于第一权重值之后,传输的原始像素和第一原始像素位于像素矩阵中的同一行,且传输的原始像素位于第一原始像素之后。
在一种可能的实施例中,在卷积计算的第(n+1)K周期内,第二权重值和第一权重值位于权重矩阵中的同一列,且第二权重值位于第一权重值之后,传输的原始像素和第一原始像素位于像素矩阵中的同一列,且传输的原始像素位于第一原始像素之后。
S603、第一计算单元111根据第一乘积和第二乘积,确定目标像素。
在一种可能的实施例中,第一计算单元111包括本地寄存器1111、加载操作单元1112和乘累加计算单元1113。上述步骤S601~S603中第一计算单元确定第一乘积,并根据第一乘积和第二乘积确定目标像素包括:本地寄存器1111存储第一乘积,第一加载操作单元1112获取第二权重值和接收传输的原始像素,乘累加计算单元1113对第一乘积、第二权重值和传输的原始像素,进行乘累加运算以确定目标像素,本地寄存器1111存储乘累加运算的计算结果。
可选的,上述第一计算单元111从第二计算单元112接收的传输的原始像素,可以是第二计算单元112从外部存储器获取的,或者,可以是多个计算单元110中除第一计算单元111和第二计算单元112之外的其他计算单元从外部存储器获取,并向第二计算单元112发送的,本申请实施例对此并不限定。
如图7所示,在一种可能的实施例中,至少一个时间段包括第二时间段,第一计算单元111在第二时间段内接收的传输的原始像素包括第二原始像素,该方法还包括步骤S604~S605。
S604、第二计算单元112在第一时间段内,获取第一权重值和第二原始像素,并根据第一权重值和第二原始像素确定第三乘积。
S605、第二计算单元112在第二时间段内,向第一计算单元111发送第二原始像素,第二时间段位于第一时间段之后。
如图8所示,在另一种可能的实施例中,多个计算单元还包括第三计算单元,至少一个时间段还包括第三时间段,第一计算单元111在第三时间段内接收的传输的原始像素包括第三原始像素,该方法还包括步骤S606~S608。
S606、第三计算单元113在第一时间段内,获取第一权重值和第三原始像素,并根据第一权重值和第三原始像素确定第四乘积。
S607、第三计算单元113在第二时间段内,向第二计算单元112发送第三原始像素。
S608、第二计算单元112在第三时间段内,向第一计算单元111发送第三原始像素,第三时间段位于第二时间段之后。
如图8所示,在一种可能的实施例中,可重构计算装置100还包括与第一计算单元111耦合的全局寄存器115,在步骤S603之后该方法还包括步骤S609:
S609、全局寄存器115缓存目标像素。
如图8所示,在一种可能的实施例中,可重构计算装置100还包括第四计算单元114,第四计算单元114包括第二加载操作单元和存储操作单元,在上述步骤S609之后该方法还包括步骤S610~S611:
S610、第二加载操作单元获取目标像素。
S611、存储操作单元向外部发送目标像素。
需要说明的是,上文中提供的可重构计算装置100的相关描述均可引援至该卷积计算方法中,本申请实施例在此不再赘述。
基于此,如图9所示,本申请实施例还提供一种电子设备900,该电子设备900包括处理器910,以及与处理器910耦合的可重构计算装置920,该可重构计算装置920的结构为上述图1至图5中可重构计算装置100的结构。
可选的,该处理器910可以用于在卷积计算的每个周期,向可重构计算装置920中的多个计算单元广播同一权重值,以使得可重构计算装置920中的多个计算单元可以获取相同的权重值。
本申请实施例还提供一种计算机可读存储介质,该计算机可读存储介质中存储有计算机程序代码,当上述处理器执行该计算机程序代码时,可重构计算装置执行图6至图8中所示的卷积计算方法。
本申请实施例还提供了一种计算机程序产品,当该计算机程序产品在计算机上运行时,使得可重构计算装置执行图6至图8中所示的卷积计算方法。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何在本申请揭露的技术范围内的变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。
Claims (19)
1.一种可重构计算装置,其特征在于,所述装置包括多个计算单元,所述多个计算单元用于执行像素矩阵与权重矩阵的卷积计算,所述像素矩阵包括多行多列的原始像素,所述权重矩阵包括多行多列的权重值,所述多个计算单元包括第一计算单元和第二计算单元;
所述第一计算单元,用于在第一时间段内,获取第一权重值和第一原始像素,并根据所述第一权重值和所述第一原始像素确定第一乘积;
所述第一计算单元,还用于在至少一个时间段中的每个时间段内,获取第二权重值,以及接收所述第二计算单元传输的原始像素,并根据所述第二权重值和所述传输的原始像素确定第二乘积,所述至少一个时间段位于所述第一时间段之后;
所述第一计算单元,还用于根据所述第一乘积和所述第二乘积,确定目标像素。
2.根据权利要求1所述的可重构计算装置,其特征在于,所述至少一个时间段包括第二时间段,所述第一计算单元在所述第二时间段内接收的所述传输的原始像素包括第二原始像素;
所述第二计算单元,用于在所述第一时间段内,获取所述第一权重值和所述第二原始像素,并根据所述第一权重值和所述第二原始像素确定第三乘积;
所述第二计算单元,还用于在所述第二时间段内,向所述第一计算单元发送所述第二原始像素,所述第二时间段位于所述第一时间段之后。
3.根据权利要求2所述的可重构计算装置,其特征在于,所述多个计算单元还包括第三计算单元,所述至少一个时间段还包括第三时间段,所述第一计算单元在所述第三时间段内接收的所述传输的原始像素包括第三原始像素;
所述第三计算单元,用于在所述第一时间段内,获取所述第一权重值和所述第三原始像素,并根据所述第一权重值和所述第三原始像素确定第四乘积;
所述第三计算单元,还用于在所述第二时间段内,向所述第二计算单元发送所述第三原始像素;
所述第二计算单元,还用于在所述第三时间段内,向所述第一计算单元发送所述第三原始像素,所述第三时间段位于所述第二时间段之后。
4.根据权利要求1-3中的任一项所述的可重构计算装置,其特征在于,当n的取值等于0时,所述第一时间段包括所述卷积计算的第nK2周期所在的时间段,当n的取值大于或等于1时,所述第一时间段包括所述卷积计算的第nK2-1周期所在的时间段,其中n为自然数,K为所述权重矩阵的边长。
5.根据权利要求1-4中的任一项所述的可重构计算装置,其特征在于,所述至少一个时间段包括所述卷积计算的第nK+1~(n+1)K-1周期所在的时间段,n为自然数,K为所述权重矩阵的边长;
在所述第nK+1~(n+1)K-1周期内,所述第二权重值和所述第一权重值位于所述权重矩阵中的同一行,且所述第二权重值位于所述第一权重值之后,所述传输的原始像素和所述第一原始像素位于所述像素矩阵中的同一行,且所述传输的原始像素位于所述第一原始像素之后。
6.根据权利要求1-5中的任一项所述的可重构计算装置,其特征在于,所述至少一个时间段还包括卷积计算的第(n+1)K周期所在的时间段,n为自然数,K为所述权重矩阵的边长;
在所述第(n+1)K周期内,所述第二权重值和所述第一权重值位于所述权重矩阵中的同一列,且所述第二权重值位于所述第一权重值之后,所述传输的原始像素和所述第一原始像素位于所述像素矩阵中的同一列,且所述传输的原始像素位于所述第一原始像素之后。
7.根据权利要求1-6中的任一项所述的可重构计算装置,其特征在于,所述第一计算单元包括本地寄存器、第一加载操作单元和乘累加计算单元;
所述本地寄存器,用于存储所述第一乘积;
所述第一加载操作单元,用于获取所述第二权重值和接收所述传输的原始像素;
所述乘累加计算单元,用于对所述第一乘积、所述第二权重值和所述传输的原始像素,进行乘累加运算;
所述本地寄存器,还用于存储所述乘累加运算的计算结果。
8.根据权利要求1-7中任一项所述的可重构计算装置,其特征在于,所述装置还包括与所述第一计算单元耦合的全局寄存器;
所述全局寄存器,用于缓存所述目标像素。
9.根据权利要求1-8中任一项所述的可重构计算装置,其特征在于,所述装置还包括第四计算单元,所述第四计算单元包括第二加载操作单元和存储操作单元;
所述第二加载操作单元,用于获取所述目标像素;
所述存储操作单元,用于向外部发送所述目标像素。
10.一种卷积计算方法,其特征在于,所述方法应用于包括多个计算单元的可重构计算装置,所述多个计算单元用于执行像素矩阵与权重矩阵的卷积计算,所述像素矩阵包括多行多列的原始像素,所述权重矩阵包括多行多列的权重值,所述多个计算单元包括第一计算单元和第二计算单元,所述方法包括:
所述第一计算单元在第一时间段内,获取第一权重值和第一原始像素,并根据所述第一权重值和所述第一原始像素确定第一乘积;
所述第一计算单元在至少一个时间段中的每个时间段内,获取第二权重值,以及接收所述第二计算单元传输的原始像素,并根据所述第二权重值和所述传输的原始像素确定第二乘积,所述至少一个时间段位于所述第一时间段之后;
所述第一计算单元根据所述第一乘积和所述第二乘积,确定目标像素。
11.根据权利要求10所述的卷积计算方法,其特征在于,所述至少一个时间段包括第二时间段,所述第一计算单元在所述第二时间段内接收的所述传输的原始像素包括第二原始像素,所述方法还包括:
所述第二计算单元在所述第一时间段内,获取所述第一权重值和所述第二原始像素,并根据所述第一权重值和所述第二原始像素确定第三乘积;
所述第二计算单元在所述第二时间段内,向所述第一计算单元发送所述第二原始像素,所述第二时间段位于所述第一时间段之后。
12.根据权利要求11所述的卷积计算方法,其特征在于,所述多个计算单元还包括第三计算单元,所述至少一个时间段还包括第三时间段,所述第一计算单元在所述第三时间段内接收的所述传输的原始像素包括第三原始像素,所述方法还包括:
所述第三计算单元在所述第一时间段内,获取所述第一权重值和所述第三原始像素,并根据所述第一权重值和所述第三原始像素确定第四乘积;
所述第三计算单元在所述第二时间段内,向所述第二计算单元发送所述第三原始像素;
所述第二计算单元在所述第三时间段内,向所述第一计算单元发送所述第三原始像素,所述第三时间段位于所述第二时间段之后。
13.根据权利要求10-12中任一项所述的卷积计算方法,其特征在于,当n的取值等于0时,所述第一时间段包括所述卷积计算的第nK2周期所在的时间段,当n的取值大于或等于1时,所述第一时间段包括所述卷积计算的第nK2-1周期所在的时间段,其中n为自然数,K为所述权重矩阵的边长。
14.根据权利要求10-13中任一项所述的卷积计算方法,其特征在于,所述至少一个时间段包括所述卷积计算的第nK+1~(n+1)K-1周期所在的时间段,n为自然数,K为所述权重矩阵的边长;
在所述第nK+1~(n+1)K-1周期内,所述第一权重值位于所述权重矩阵中的第一列,所述第二权重值位于所述权重矩阵中的第二列,所述第一原始像素位于所述像素矩阵中的第一列,所述传输的原始像素位于所述像素矩阵中的第二列。
15.根据权利要求10-14中任一项所述的卷积计算方法,其特征在于,所述至少一个时间段还包括卷积计算的第(n+1)K周期所在的时间段,n为自然数,K为所述权重矩阵的边长;
在所述第nK+1~(n+1)K-1周期内,所述第二权重值和所述第一权重值位于所述权重矩阵中的同一行,且所述第二权重值位于所述第一权重值之后,所述传输的原始像素和所述第一原始像素位于所述像素矩阵中的同一行,且所述传输的原始像素位于所述第一原始像素之后。
16.根据权利要求10-15中任一项所述的卷积计算方法,其特征在于,所述第一计算单元包括本地寄存器、第一加载操作单元和乘累加计算单元,所述方法还包括:
所述本地寄存器存储所述第一乘积;
所述第一加载操作单元获取所述第二权重值和接收所述传输的原始像素;
所述乘累加计算单元对所述第一乘积、所述第二权重值和所述传输的原始像素,进行乘累加运算;
所述本地寄存器存储所述乘累加运算的计算结果。
17.根据权利要求10-16中任一项所述的卷积计算方法,其特征在于,所述装置还包括与所述第一计算单元耦合的全局寄存器,所述方法还包括:
所述全局寄存器缓存所述目标像素。
18.根据权利要求10-17中任一项所述的卷积计算方法,其特征在于,所述装置还包括第四计算单元,所述第四计算单元包括第二加载操作单元和存储操作单元,所述方法还包括:
所述第二加载操作单元获取所述目标像素;
所述存储操作单元向外部发送所述目标像素。
19.一种电子设备,其特征在于,所述电子设备包括处理器,以及与所述处理器耦合的可重构计算装置,所述可重构计算装置为如权利要求1-9中任一项所述的可重构计算装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211564751.7A CN118152330A (zh) | 2022-12-07 | 2022-12-07 | 一种可重构计算装置、卷积计算方法和电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211564751.7A CN118152330A (zh) | 2022-12-07 | 2022-12-07 | 一种可重构计算装置、卷积计算方法和电子设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN118152330A true CN118152330A (zh) | 2024-06-07 |
Family
ID=91283989
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211564751.7A Pending CN118152330A (zh) | 2022-12-07 | 2022-12-07 | 一种可重构计算装置、卷积计算方法和电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN118152330A (zh) |
-
2022
- 2022-12-07 CN CN202211564751.7A patent/CN118152330A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11995027B2 (en) | Neural processing accelerator | |
US7196708B2 (en) | Parallel vector processing | |
US11989638B2 (en) | Convolutional neural network accelerating device and method with input data conversion | |
US20060002471A1 (en) | Motion estimation unit | |
CN109121435A (zh) | 处理装置和处理方法 | |
JP3228927B2 (ja) | プロセッサエレメント、プロセッシングユニット、プロセッサ、及びその演算処理方法 | |
CN110705703B (zh) | 基于脉动阵列的稀疏神经网络处理器 | |
CN111897579A (zh) | 图像数据处理方法、装置、计算机设备和存储介质 | |
WO2001090915A2 (en) | Processor array and parallel data processing methods | |
US11915118B2 (en) | Method and apparatus for processing computation of zero value in processing of layers in neural network | |
US8130229B2 (en) | Methods and apparatus for image processing at pixel rate | |
EP1733300B1 (en) | Improvements relating to orthogonal data memory | |
CN110674927A (zh) | 一种用于脉动阵列结构的数据重组方法 | |
EP4318275A1 (en) | Matrix multiplier and method for controlling matrix multiplier | |
CN111767994A (zh) | 一种神经元计算模块 | |
CN112905530A (zh) | 片上架构、池化计算加速器阵列、单元以及控制方法 | |
CN110851779A (zh) | 用于稀疏矩阵运算的脉动阵列架构 | |
US20230025068A1 (en) | Hybrid machine learning architecture with neural processing unit and compute-in-memory processing elements | |
CN112967172A (zh) | 一种数据处理装置、方法、计算机设备及存储介质 | |
US20050226337A1 (en) | 2D block processing architecture | |
CN110766136B (zh) | 一种稀疏矩阵与向量的压缩方法 | |
CN118152330A (zh) | 一种可重构计算装置、卷积计算方法和电子设备 | |
WO2023184754A1 (zh) | 可配置实时视差点云计算装置及方法 | |
US9129345B2 (en) | Data stream processing architecture enabling extension of neighborhood mask | |
Cain et al. | Convolution processing unit featuring adaptive precision using dynamic reconfiguration |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication |