CN112905530A - 片上架构、池化计算加速器阵列、单元以及控制方法 - Google Patents
片上架构、池化计算加速器阵列、单元以及控制方法 Download PDFInfo
- Publication number
- CN112905530A CN112905530A CN202110332489.2A CN202110332489A CN112905530A CN 112905530 A CN112905530 A CN 112905530A CN 202110332489 A CN202110332489 A CN 202110332489A CN 112905530 A CN112905530 A CN 112905530A
- Authority
- CN
- China
- Prior art keywords
- pooled
- pooling
- computational
- output
- chip
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7807—System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
-
- 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/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4204—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
- G06F13/4221—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being an input/output bus, e.g. ISA bus, EISA bus, PCI bus, SCSI bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/80—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
- G06F15/8053—Vector processors
- G06F15/8076—Details on data register access
-
- 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
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Abstract
本发明提供一种片上架构、池化计算加速器阵列、单元以及控制方法,所述池化计算加速器由输入直接储存访问模块、池化计算模块以及输出直接储存访问模块构成,所述控制方法包括:所述输入直接储存访问模块按片内时钟周期,依次自片外储存器搬移一列特征数据,并输入至所述池化计算模块,所搬移的一列特征数据的行数依据片上计算资源的并行算力确定;所述池化计算模块按所述片内时钟周期,依次对由输入直接储存访问模块搬移进入的一列特征数据进行池化计算,并将池化计算结果输出至所述输出直接储存访问模块;所述输出直接储存访问模块按所述片内时钟周期,依次将所述池化计算模块计算的池化计算结果,搬移至所述片外储存器。本发明实现池化加速。
Description
技术领域
本发明涉及卷积神经网络领域,尤其涉及一种片上架构、池化计算加速器阵列、单元以及控制方法。
背景技术
卷积神经网络(Convolutional Neural Network,CNN)是一种前馈神经网络,它的人工神经元可以响应一部分覆盖范围内的周围单元,对于大型图像处理有出色表现。它主要包括卷积层(convolutional layer)和池化层(pooling layer)。卷积神经网络已广泛应用于图像分类、物体识别、目标追踪。
在卷积神经网络中,通常需要进行池化计算,然而如何优化池化计算,是卷积神经网络芯片领域所要解决的技术问题。
目前,申请公布号CN110322388A,专利名称为池化方法及装置、池化系统、计算机可读存储介质的专利中,提出的池化窗口,通过不断更新进入池化窗口的每列数据,实现不同窗口位置的池化计算。
该专利第28段指出:几种常见的池化计算硬件架构的不足,比如,如果使用CPU计算,由缓存清除等问题会导致数据等待时间过长;此外,如果使用GPU,会导致大量数据在GPU的片内缓存和DRAM(Dynamic Random Access Memory,即动态随机存取存储器)之间反复搬移,导致功耗较高。业内还存在一种从指令集出发而设计的通用深度学习算法计算架构,存在取指,译码等过程,加长了这种特定算子的计算时间,且片内架构不一定能按照最佳并行度计算去匹配DRAM带宽。这种非加速器类型的池化架构,与我方专利差异较大。
因此,该专利提出了一种针对池化计算而设计的专有架构,是一种专用的加速器,在面对不同计算算子的尺寸(kerel size)和步长(stride)的各搭配的多种场景时,有时一列输入数据需要分别被两个池化窗口覆盖计算。该专利的结构为了保持一致性的设计,在该种情况下从存储内取两次该列数据,然而,这种操作会导致两个池化窗口有重叠的场景下计算时间大增,且访问存储带来功耗增加和延迟。而必须加入的片内缓存才能让数据随时可以再取,这种设计导致片内SRAM的增加,带来片上面积,功耗的挑战。
该专利的第56段和第58段分别有如下描述:像素数据(0,2)、像素数据(1,2)、像素数据(2,2)是重复读取的像素数据;本发明实施例可以从外部逐列读取像素数据,以实现重复获取像素数据;从而可以在提升池化效率的基础上,兼顾池化窗口的多样性,扩展池化方法的适用范围。
上述说明,该专利面对被两个池化窗口重叠覆盖的某列数据时,存在从片外DRAM或片内SRAM(Static Random-Access Memory,SRAM,静态随机存取存储器)再次搬移该列数据的操作。如果从DRAM取出,则启动DMA(Direct Memory Access,直接存储器访问)存在时间开销,如果从SRAM取出,则需要增加片内SRAM缓存。不管从哪种存储取出,都会增加池化算子的计算时间。以最常用的尺寸为3x3,步长为2的算子为例,对于同一个通道,如果不重复取数,数据列被搬入的顺序是0,1,2,3,4,5,6,7,8…;如果重复取,数据列被搬入的顺序是0,1,2,2,3,4,4,5,6,6,7,8…可见偶数列都会被重复搬移一次,总的数据搬移量基本增加50%,相应的功耗也增加50%,如果再加上启动数次DMA的时间开销,整体计算时间将会增加超过50%。
由此可见,该专利存在重复搬移数据,没有实现更深层次复用的问题。此外,在池化计算过程中,如果多次启动DMA,每列数据将会是不连续进入池化窗口,窗口计算资源利用率变低。访问片外存储DRAM的功耗通常比访问片内SRAM高。
进一步地,池化窗口在移动过程,是基于固定步长的。步长,即步长通常不会超过池化窗口本身的大小,否则会导致下采样过程中的信息丢失。常见的神经网络算法中,池化算子的窗口尺寸,一般为2x2,3x3,两种,对应的步长一般是2,若步长为1则无法实现下采样的功能。因此通常没有步长为1的池化算子。
那么综上算子特点,在架构设计中,如果支持任意尺寸的窗口,比如该专利中提出的NXN的窗口(如其第67段公开的:本发明一个具体实施例中,所述池化窗口的尺寸为N×N,N为正整数,所述池化窗口移动的步幅等于N),则加速器片上架构如果一味尝试支持任意尺寸,势必带来大量片内逻辑资源的消耗,而这些不常用尺寸的逻辑资源,可能在实际应用中,长期处于闲置,利用率很低。而在实际应用场景中,模型通常不会在窗口尺寸上大幅度变化。
发明内容
本发明为了克服上述现有技术存在的缺陷,提供一种片上架构、池化计算加速器阵列、单元以及控制方法,以在低成本、低功耗的前提下,加快池化计算,实现资源复用最大化。
根据本发明的一个方面,提供一种池化计算加速器的控制方法,所述池化计算加速器由输入直接储存访问模块、池化计算模块以及输出直接储存访问模块构成,所述控制方法包括:
所述输入直接储存访问模块按片内时钟周期,依次自片外储存器搬移一列特征数据,并输入至所述池化计算模块,所搬移的一列特征数据的行数依据片上计算资源的并行算力确定;
所述池化计算模块按所述片内时钟周期,依次对由输入直接储存访问模块搬移进入的一列特征数据进行池化计算,并将池化计算结果输出至所述输出直接储存访问模块;
所述输出直接储存访问模块按所述片内时钟周期,依次将所述池化计算模块计算的池化计算结果,搬移至所述片外储存器。
在本发明的一些实施例中,所述池化计算算子的尺寸为2x2或者3x3,所述池化计算算子的步长为2,所述池化计算模块计算的最后一个池化计算结果到所述池化计算模块的输出数据总线接口,相比所述池化计算模块的输入数据总线进入最后一列特征数据,延迟至多2个片内时钟周期。
根据本发明的一个方面,还提供一种池化计算加速单元,包括:
第一计算窗口,包括:
第一输入寄存器;
第二输入寄存器;
第一池化计算单元,连接至所述第一输入寄存器和所述第二输入寄
存器的输出端;
第一输出寄存器,连接至所述第一池化计算单元的输出端;
第二计算窗口,复用所述第一计算窗口的计算资源,且所述第二计算窗口包括:
第三输入寄存器;
第二池化计算单元,连接至所述第一输出寄存器和第三输入寄存器的输出端;
第二输出寄存器,连接至所述第二池化计算单元的输出端。
在本发明的一些实施例中,所述池化计算加速单元应用于执行尺寸为2x2的池化计算算子时,所述池化计算加速单元的输出为第一输出寄存器;所述池化计算加速单元应用于执行尺寸为3x3的池化计算算子时,所述池化计算加速单元的输出为第二输出寄存器。
在本发明的一些实施例中,所述池化计算加速单元应用于步长为2的池化计算算子。
根据本发明的一个方面,还提供一种池化计算加速器阵列,包括至少一个池化加速器通道,每个所述池化加速器通道包括:
多组池化计算加速单元,每一组池化计算加速单元包括两个如上所述的池化计算加速单元;
选通模块,选择将第一输出寄存器或第二输出寄存器作为所述池化计算加速单元的输出。
在本发明的一些实施例中,每一组池化计算加速单元的两个池化计算加速单元交替输出池化计算结果。
在本发明的一些实施例中,每一组池化计算加速单元的两个池化计算加速单元复用相同的输入特征数据。
在本发明的一些实施例中,当所述输入特征数据的行数自0开始计数时,除了第0行输入特征数据之外,偶数行特征数据被相邻两组池化计算加速单元复用;
当所述输入特征数据的列数自0开始计数时,除了第0列输入特征数据之外,偶数列特征数据被每一组池化计算加速单元的两个池化计算加速单元复用,奇数列特征数据交替被每一组池化计算加速单元的两个池化计算加速单元使用。
根据本发明的一个方面,还提供一种片上架构,包括:
池化计算加速器,包括如上所述的池化计算加速器阵列;
片外储存器访问接口,用于访问片外储存器;
通用处理器,用于配置所述池化计算加速器通过所述片外储存器访问接口自片外储存器读取和输入数据的地址,以及池化计算加速器的池化计算参数;
片内总线系统,用于供所述池化计算加速器、片外储存器访问接口以及通用处理器相通信。
相比现有技术,本发明的优势在于:
本发明提供的片上架构、池化计算加速器阵列、单元以及控制方法,以在低成本、低功耗的前提下,加快池化计算,实现资源复用最大化。
附图说明
通过参照附图详细描述其示例实施方式,本发明的上述和其它特征及优点将变得更加明显。
图1示出了根据本发明实施例的片上架构的示意图;
图2示出了根据本发明实施例的池化计算加速器的示意图;
图3示出了根据本发明实施例的输入特征图1个通道内3行的数据流的示意图;
图4示出了根据本发明实施例的池化计算加速单元的示意图;
图5示出了根据本发明实施例的池化计算加速器阵列的示意图;
图6示出了根据本发明实施例的一个输出通道内,一行输出数据,对应的一组池化计算加速单元的基于时间变化的数据流的示意图。
具体实施方式
现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本公开将更;加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施方式中。
此外,附图仅为本公开的示意性图解,并非一定是按比例绘制。图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。附图中所示的一些方框图是功能实体,不一定必须与物理或逻辑上独立的实体相对应。可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
下面结合图1和图2描述本发明提供的片上架构以及池化计算加速器的控制方法。
片上架构可以包括池化计算加速器110、片外储存器访问接口120、通用处理器130以及片内总线系统140。
片外储存器访问接口120用于访问片外储存器。片外储存器例如可以是DRAM。通用处理器130用于配置所述池化计算加速器110通过所述片外储存器访问接口130自片外储存器读取和输入数据的地址,以及池化计算加速器的池化计算参数。池化计算参数可以包括但不限于池化算子的尺寸、池化算子的步长等。片内总线系统140用于供所述池化计算加速器110、片外储存器访问接口120以及通用处理器相通信130。片内总线系统140例如可以为AXI(Advanced eXtensible Interface)总线。
池化计算加速器110由输入直接储存访问模块111、池化计算模块112以及输出直接储存访问模块113构成。在实现池化计算时,通用处理器130根据网络模型要求,配置池化计算加速器110的特征参数;然后,通用处理器130配置池化计算加速器110的输入直接储存访问模块111和输出直接储存访问模块113的输入输出数据在片外储存器的起始地址;通用处理器130触发加速器的输入直接储存访问模块111和输出直接储存访问模块113工作。池化计算加速器110按如下步骤实现池化计算。
所述输入直接储存访问模块111按片内时钟周期,依次自片外储存器搬移一列特征数据,并输入至所述池化计算模块112,所搬移的一列特征数据的行数依据片上计算资源的并行算力确定。具体而言,当确定片上计算资源的并行算力后,可以进而确定所对应的算子尺寸(3x3或2x2)。进一步地,并行计算资源决定着芯片成本,同时还需考虑加速器数据接口的带宽匹配情况。
所述池化计算模块112按所述片内时钟周期,依次对由输入直接储存访问模块111搬移进入的一列特征数据进行池化计算,并将池化计算结果输出至所述输出直接储存访问模块113;
所述输出直接储存访问模块113按所述片内时钟周期,依次将所述池化计算模块112计算的池化计算结果,搬移至所述片外储存器。
具体而言,上述结构和方法所使用的所述池化计算算子的尺寸为2x2或者3x3,所述池化计算算子的步长为2。所述池化计算模块112计算的最后一个池化计算结果到所述池化计算模块112的输出数据总线接口,相比所述池化计算模块112的输入数据总线进入最后一列特征数据,延迟至多2个片内时钟周期。
由此,本发明提供的片上架构以及池化计算加速器的控制方法中,池化计算加速器的输入直接储存访问模块111完成全部特征输入仅需搬移一次,当第一个数据到达至池化计算模块112的计算窗口后,在数个池化计算加速器的片内时钟周期的延时之后,获得有效的计算结果,即输出特征会由输出直接储存访问模块113开始向片外储存器连续输出。从片内数据流看,最后一个输出有效数据仅比最后一个输入数据延迟最大2个片内时钟周期。在应用时,基本上把所有的计算时间覆盖在了储存访问模块的数据搬移时间内,数据搬移结束时,计算基本完成。进一步地,池化计算加速器片内无需存储相关资源,即无需使用SRAM存储单元,同时,也无需使用寄存器搭建的静态存储单元。
下面参见图3,图3示出了根据本发明实施例的输入特征图1个通道内3行的数据流的示意图。图3中,箭头的方向代表池化计算加速器的片内时钟周期。
图3,同时示出了第一行第一列输出数据对应的2x2窗口(对应尺寸为2x2的池化算子)和3x3窗口(对应尺寸为3x3的池化算子)位置,即r00,r01,r10,r11四个像素数据是第一行第一列输出数据对应的2x2窗口的输入数据。r00,r01,r02,r10,r11,r12,r20,r21,r22九个像素数据是第一行第一列输出数据对应的3x3窗口的输入数据。可以看到,本例中,2x2窗口和3x3窗口,共同使用了r00,r01,r10,r11四个像素,即2x2窗口需要的数据被3x3窗口完全覆盖。
进一步地,再次参考图3,其还示出了在步长为2的场景下,第一行第一列和第一行第二列输出数据对应的两个3x3窗口的位置。可以看到,两个3x3窗口,共同使用了第3列数据,即r02,r12,r22列,该列被两个相邻的3x3窗口覆盖。
由此,在图1和图2示出的片上架构以及池化计算加速器的流水线架构下,数据按行并行输入,每个片内时钟周期更新进入一列新的数据,本架构中的池化计算加速器支持数据按列在每个周期连续更新,实现最高的处理速度。此外,如果数据更新由于DMA突发(burst,是DMA传输的一个功能,每次burst时,总线上连续传递一定长度的数据,然后会停止一段时间,再起一个新的burst;一般busrt长度根据DMA配置的busrt length设定。所以DMA上的有效数据是一段一段断开的)周期性间断,或由于总线带宽资源的影响而间断,本架构中的池化计算加速器亦可记忆有效数据所处的窗口位置,待新的有效数据到来,可继续恢复计算,保证数据无误。具体而言,图4的计算单元内部,有按照算子窗口尺寸设定的计算器,比如3x3,有个计数器会每接收3列输入有效数据后,确认输出计数器有效加1,如果没有新的有效输入,图4内部的所有计数器会保持不变,从而实现前述的记忆有效数据所处的窗口位置功能。
下面参见图4,图4示出了根据本发明实施例的池化计算加速单元的示意图。池化计算加速单元200包括第一计算窗口210和第二计算窗口220,其中,第二计算窗口220复用所述第一计算窗口210的计算资源。
第一计算窗口210包括第一输入寄存器211、第二输入寄存器220、第一池化计算单元213以及第一输出寄存器214。第一输入寄存器211、第二输入寄存器212同时寄存同一列相邻两行的输入特征图的特征数据。第一池化计算单元213连接至所述第一输入寄存器211和所述第二输入寄存器212的输出端。第一输出寄存器214连接至所述第一池化计算单元213的输出端。第二计算窗口220复用所述第一计算窗口210的计算资源,且所述第二计算窗口220包括第三输入寄存器221、第二池化计算单元222以及第二输出寄存器223。第三输入寄存器221若被激活,则与第一输入寄存器211、第二输入寄存器212同时寄存同一列连续三行的输入特征图的特征数据。第二池化计算单元222连接至所述第一输出寄存器214和第三输入寄存器221的输出端。第二输出寄存器223连接至所述第二池化计算单元222的输出端。由此,第二计算窗口220复用所述第一计算窗口210的计算资源的硬件资源复用,实现了图3中,所阐述的九个数据中四个输入数据的复用问题。因此,2x2的池化计算资源100%被3x3的池化计算单元复用。
第一池化计算单元213和第二池化计算单元222可以包括比较器、加法器、乘法器、中间过程结果寄存器,以及移位操作模块等。第一池化计算单元213和第二池化计算单元222可以根据通用处理器的配置,完成相关的池化计算。
其中,所述池化计算加速单元200应用于执行尺寸为2x2的池化计算算子时,所述池化计算加速单元220的输出为第一输出寄存器214。所述池化计算加速单元200应用于执行尺寸为3x3的池化计算算子时,所述池化计算加速单元200的输出为第二输出寄存器223。优选地,所述池化计算加速单元200应用于步长为2的池化计算算子。
具体而言,池化计算加速单元200设计了一种标准化的输入输出接口,以及内部的资源复用通道。池化计算加速单元200可在片内按上一级架构特点,批量例化,形成阵列,达到池化计算加速的目的(将结合图5和图6描述,在此不予赘述)。
具体而言,池化计算加速单元220的输入为三个并行的输入特征图的像素数据,分别对应第一输入寄存器211、第二输入寄存器212以及第三输入寄存器221。比如,每个片内时钟周期内,更新一列数据进入第一输入寄存器211、第二输入寄存器212以及第三输入寄存器221,三个时钟周期后,尺寸为3x3的池化计算算子的第二计算窗口220所需的9个数据可被池化计算加速单元220全部获取。
池化计算加速单元220的输出为两种窗口尺寸所对应的两个输出像素数据,分别对应第一输出寄存器214和第二输出寄存器223。模型中每次计算,可只配置一种窗口尺寸(对应池化计算算子的尺寸),池化计算加速单元220可以根据配置,选择输出第一计算窗口210或者第二计算窗口220的池化计算结果。
池化计算加速单元220对于第一计算窗口210的池化计算,输入数据需要2个片内时钟周期,输出数据在紧接的第3个片内时钟周期内有效;对于第二计算窗口220的池化计算,输入数据需要3个片内时钟周期,输出数据在随后的第5个片内时钟周期内有效(下文将结合图6进行具体描述,在此不予赘述)。
由此,本发明提供的池化计算加速单元200支持尺寸为2x2和3x3且步长为2的池化计算算子。上述池化计算算子可以覆盖大部分深度学习池化算子的需求。在边缘计算场景下,这样避免了不常见的算子对硬件资源闲置带来的浪费。但是如果出现比如3x3,stride=3的不常用算子,本发明还可以通过算法重新训练模型来进行解决。例如,将模型中的算子尺寸针对本架构重新适配,再训练网络,即使出现不常见算子尺寸,依然可以通过算法重新训练的方式改变至常见尺寸。
下面参见图5,图5示出了根据本发明实施例的池化计算加速器阵列的示意图,。池化计算加速器阵列包括至少一个池化加速器通道,每个所述池化加速器通道包括多组池化计算加速单元以及多个选通模块S。每一组池化计算加速单元包括两个如图4所示的池化计算加速单元200(池化计算加速单元x和池化计算加速单元y)。每一组池化计算加速单元对应输出数据至一个选通模块S。选通模块S选择将对应组池化计算加速单元的第一输出寄存器214或第二输出寄存器223的输出作为该组池化计算加速单元的输出。
如图5所示,每个池化加速器通道的每行输出数据,对应来自一组池化计算加速单元(池化计算加速单元x和池化计算加速单元y)的结果。如图5,在池化加速器通道0中,输出特征数据第0行,由一个选通模块S提供有效输出数据。选通的两组输入数据,分别来自一个池化计算加速单元x和一个池化计算加速单元y。两个池化计算加速单元的内部计算资源完全一致,但是例化在了阵列架构不同的位置,形成一组池化计算加速单元。
具体而言,一组池化计算加速单元(池化计算加速单元x和池化计算加速单元y)复用相同的三行输入特征数据。基于片内时钟周期,更新进入计算窗口的列数据,实现计算窗口随着时间在输入数据上滑动的行为。三行输入数据,由池化加速器通道0中专有的控制逻辑控制,交替进入池化计算加速单元x和池化计算加速单元y,池化计算加速单元x和池化计算加速单元y实现了基于时间的交替计算输出特征数据的数据流(如图6所示)。
具体而言,当输入特征数据的行自0开始计数时,除了第0行输入数据特征外,其余偶数行,即第2行,第4行,第6行...行数据均被相邻的两组池化计算加速单元复用。例如,第2行输入特征数据,被第一组池化计算加速单元和第二组池化计算加速单元复用,即该行数据实现了被四个池化计算加速单元复用的高效复用特征。
由于前述的复用特征,来自输入直接储存访问模块111的特征数据,按行拆分发送至输入总线,无需对某行数据进行复制,无需增加阵列输入总线宽度。
进一步地,本实施例的一个池化加速器通道内,输出数据按行并行能力即代表着池化计算引擎的算力,本实施例可根据实际成本需求,灵活调整输出行并行度,实现算力和总线带宽的匹配。
具体而言,本实施例的每个池化加速器通道内的架构,可通过上层控制,例化多份,实现多通道并行,这样可根据实际成本需求,灵活调整输出通道并行度,实现算力和总线带宽的匹配。
下面参见图6,图6示出了根据本发明实施例的一个输出通道内,一行输出数据,对应的一组池化计算加速单元的基于时间变化的数据流的示意图。
具体而言,图6展示了并行的3行输入数据,每个片内时钟周期更新一列数据,进入一组池化计算加速单元,输出一行输出数据。如图6所示,当所述输入特征数据的列数自0开始计数时,除了第0列输入特征数据之外,偶数列特征数据被每一组池化计算加速单元的两个池化计算加速单元(池化计算加速单元x和池化计算加速单元y)复用,奇数列特征数据交替被每一组池化计算加速单元的两个池化计算加速单元(池化计算加速单元x和池化计算加速单元y)使用。
如图6,当池化计算算子的尺寸为3x3,步长为2时,同时参考图3,每三列数据中,就需要有一列数据被两个池化窗口使用。本发明提供的池化计算加速器阵列的并行池化计算加速单元双窗口可选通架构,使输入特征输入时间最小化,每个时钟周期新的一列都可以进入计算阵列,使该场景下性能提升50%。
图6中,对应每个片内时钟周期,出现cx标示的,表示池化计算加速单元x中的池化计算单元被有效激活。出现cy的标示的,表示池化计算加速单元y中的池化计算单元被有效激活。箭头表示输入总线的数据共享至池化计算单元的路径。
具体而言,以r02,r12,r22列为例,首先本发明仅需该列数据输入一次,其次,该列数据即输入至池化计算加速单元x,也同时输入至池化计算加速单元y。r03,r13,r23列数据仅输入至池化计算加速单元y。r05,r15,r25列数据仅输入至池化计算加速单元x。类似的输入数据控制及窗口激活逻辑,由每个通道内的非计算逻辑控制。由此,一组池化计算单元的池化计算加速单元x和池化计算加速单元y被交替激活,使每行输出数据的第奇数/偶数个交替来自池化计算加速单元x或池化计算加速单元y的计算结果。
以尺寸为3x3的池化计算算子为例,第1,2,3个片内时钟周期内,更新进入前三列数据,则该行输出数据的第一列,3x3_0将在第5个片内时钟周期有效,此时输入数据已经更新至第r04,r14,r24列。3x3_0数据点将从池化计算加速单元x生成。同理,3x3_1数据点将从池化计算加速单元y生成,在第7个片内时钟周期有效。
以尺寸为2x2的池化计算算子窗口尺寸为例,第1,2个片内时钟周期内,更新进入前两列数据,则该行输出数据的第一列,2x2_0将在第3个片内时钟周期有效,此时输入数据已经更新至第r02,r12,r22列。2x2_0数据点将从池化计算加速单元x生成。同理,2x2_1数据点将从池化计算加速单元y生成,在第5个片内时钟周期有效。
可以看出,输出有效数据交替来自池化计算加速单元x或池化计算加速单元y。本架构可以做到3x3,2x2两组算子结果同时产生,但一般算法不会同时使能这两种尺寸,因此,实际应用中,也可以仅一种窗口尺寸被激活。这样也节省了功耗。
继续参考图6,每组池化计算加速单元中产生的有效数据,被分别发送至2x2,3x3窗口各自的通道内的输出总线上,每个出输总线上有效数据在每两个片时钟周期输出一个有效数据。两组输出总线可以根据算法配置,最后选通输出至输出直接储存访问模块上。
进一步地,体现除了本发明的流水线方式,基本实现了有效输出数据耗时完全覆盖在有效输入数据的耗时中。
由此,通过上述各个实施例本发明可以实现:
本发明提供的片上架构、池化计算加速器阵列、单元以及控制方法可以支持最大池化、平均池化计算等各类池化计算方式。本发明尤其适用于边缘端的加速器装置,有着低成本,低功耗的要求前提,在这些前提下,本发明首先针对资源复用最大化进行设计,其次再满足一定算子尺寸兼容性。
本发明提供的片上架构、池化计算加速器阵列、单元以及控制方法可动态配置选择2x2或3x3,步长为2的池化计算算子,基本覆盖了该算子的常见需求。
本发明提供的片上架构、池化计算加速器阵列、单元以及控制方法针对同一行输出数据对应的3x3窗口计算,复用了全部的2x2窗口的计算资源。提升片上资源利用率。
本发明提供的片上架构、池化计算加速器阵列、单元以及控制方法在两行输出数据对应的两个3x3窗口之间,复用了总线数据,节省总线带宽资源。
本发明提供的片上架构、池化计算加速器阵列、单元以及控制方法可以不使用片内存储,例如SRAM资源,极大降低片内面积和功耗。常见的设计都会使用SRAM搭建缓冲区,在片内存储一定批量的数据,实现一些数据的复用,不再从片外再次获取。
本发明提供的片上架构、池化计算加速器阵列、单元以及控制方法可以只使用片上逻辑资源,比如寄存器,组合逻辑门,加法器,比较器等,实现了极简资源的池化加速器,但又基本覆盖了大部分神经网络算法的算子配置需求。
本发明提供的片上架构、池化计算加速器阵列、单元以及控制方法,目的是实现只需要特征输入数据总线从片外存储进行一次DMA操作,且池化计算引擎接收到的每个数据不重复,每个特征像素点仅需给池化计算引擎输入一次即可。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由所附的权利要求指出。
Claims (10)
1.一种池化计算加速器的控制方法,其特征在于,所述池化计算加速器由输入直接储存访问模块、池化计算模块以及输出直接储存访问模块构成,所述控制方法包括:
所述输入直接储存访问模块按片内时钟周期,依次自片外储存器搬移一列特征数据,并输入至所述池化计算模块,所搬移的一列特征数据的行数依据片上计算资源的并行算力确定;
所述池化计算模块按所述片内时钟周期,依次对由输入直接储存访问模块搬移进入的一列特征数据进行池化计算,并将池化计算结果输出至所述输出直接储存访问模块;
所述输出直接储存访问模块按所述片内时钟周期,依次将所述池化计算模块计算的池化计算结果,搬移至所述片外储存器。
2.如权利要求1所述的加速器片内计算模块,其特征在于,所述池化计算算子的尺寸为2x2或者3x3,所述池化计算算子的步长为2,所述池化计算模块计算的最后一个池化计算结果到所述池化计算模块的输出数据总线接口,相比所述池化计算模块的输入数据总线进入最后一列特征数据,延迟至多2个片内时钟周期。
3.一种池化计算加速单元,其特征在于,包括:
第一计算窗口,包括:
第一输入寄存器;
第二输入寄存器;
第一池化计算单元,连接至所述第一输入寄存器和所述第二输入寄存器的输出端;
第一输出寄存器,连接至所述第一池化计算单元的输出端;
第二计算窗口,复用所述第一计算窗口的计算资源,且所述第二计算窗口包括:
第三输入寄存器;
第二池化计算单元,连接至所述第一输出寄存器和第三输入寄存器的输出端;
第二输出寄存器,连接至所述第二池化计算单元的输出端。
4.如权利要求3所述的池化计算加速单元,其特征在于,所述池化计算加速单元应用于执行尺寸为2x2的池化计算算子时,所述池化计算加速单元的输出为第一输出寄存器;所述池化计算加速单元应用于执行尺寸为3x3的池化计算算子时,所述池化计算加速单元的输出为第二输出寄存器。
5.如权利要求3所述的池化计算加速单元,其特征在于,所述池化计算加速单元应用于步长为2的池化计算算子。
6.一种池化计算加速器阵列,其特征在于,包括至少一个池化加速器通道,每个所述池化加速器通道包括:
多组池化计算加速单元,每一组池化计算加速单元包括两个如权利要求3至5任一项所述的池化计算加速单元;
选通模块,选择将第一输出寄存器或第二输出寄存器作为所述池化计算加速单元的输出。
7.如权利要求6所述的池化计算加速器阵列,其特征在于,每一组池化计算加速单元的两个池化计算加速单元交替输出池化计算结果。
8.如权利要求6所述的池化计算加速器阵列,其特征在于,每一组池化计算加速单元的两个池化计算加速单元复用相同的输入特征数据。
9.如权利要求6所述的池化计算加速器阵列,其特征在于,
当所述输入特征数据的行数自0开始计数时,除了第0行输入特征数据之外,偶数行特征数据被相邻两组池化计算加速单元复用;
当所述输入特征数据的列数自0开始计数时,除了第0列输入特征数据之外,偶数列特征数据被每一组池化计算加速单元的两个池化计算加速单元复用,奇数列特征数据交替被每一组池化计算加速单元的两个池化计算加速单元使用。
10.一种片上架构,其特征在于,包括:
池化计算加速器,包括如权利要求6至9任一项所述的池化计算加速器阵列;
片外储存器访问接口,用于访问片外储存器;
通用处理器,用于配置所述池化计算加速器通过所述片外储存器访问接口自片外储存器读取和输入数据的地址,以及池化计算加速器的池化计算参数;
片内总线系统,用于供所述池化计算加速器、片外储存器访问接口以及通用处理器相通信。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110332489.2A CN112905530B (zh) | 2021-03-29 | 2021-03-29 | 片上架构、池化计算加速器阵列、单元以及控制方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110332489.2A CN112905530B (zh) | 2021-03-29 | 2021-03-29 | 片上架构、池化计算加速器阵列、单元以及控制方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112905530A true CN112905530A (zh) | 2021-06-04 |
CN112905530B CN112905530B (zh) | 2023-05-26 |
Family
ID=76109206
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110332489.2A Active CN112905530B (zh) | 2021-03-29 | 2021-03-29 | 片上架构、池化计算加速器阵列、单元以及控制方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112905530B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113988001A (zh) * | 2021-11-09 | 2022-01-28 | 中国电子科技集团公司第三十八研究所 | 一种深度学习模型中最大池化层运算电路装置 |
CN114372012A (zh) * | 2021-12-21 | 2022-04-19 | 中国科学院深圳先进技术研究院 | 一种通用、可配置的高能效池化计算单行输出系统和方法 |
CN116627893A (zh) * | 2023-07-18 | 2023-08-22 | 苏州浪潮智能科技有限公司 | 加速引擎配置方法、装置、并行数估计系统、设备及介质 |
CN117273102A (zh) * | 2023-11-23 | 2023-12-22 | 深圳鲲云信息科技有限公司 | 用于池化加速器的装置及方法和芯片电路及计算设备 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108763612A (zh) * | 2018-04-02 | 2018-11-06 | 复旦大学 | 一种神经网络的池化层加速运算的方法与电路 |
CN109102065A (zh) * | 2018-06-28 | 2018-12-28 | 广东工业大学 | 一种基于PSoC的卷积神经网络加速器 |
CN110135554A (zh) * | 2019-03-25 | 2019-08-16 | 电子科技大学 | 一种基于fpga的卷积神经网络硬件加速架构 |
CN110322388A (zh) * | 2018-03-29 | 2019-10-11 | 上海熠知电子科技有限公司 | 池化方法及装置、池化系统、计算机可读存储介质 |
CN110390385A (zh) * | 2019-06-28 | 2019-10-29 | 东南大学 | 一种基于bnrp的可配置并行通用卷积神经网络加速器 |
CN110750210A (zh) * | 2018-07-23 | 2020-02-04 | 爱思开海力士有限公司 | 存储系统 |
CN110826687A (zh) * | 2019-08-30 | 2020-02-21 | 安谋科技(中国)有限公司 | 数据处理方法及其装置、介质和系统 |
CN111340198A (zh) * | 2020-03-26 | 2020-06-26 | 上海大学 | 基于fpga的数据高度复用的神经网络加速器 |
CN111832718A (zh) * | 2020-06-24 | 2020-10-27 | 上海西井信息科技有限公司 | 芯片架构 |
-
2021
- 2021-03-29 CN CN202110332489.2A patent/CN112905530B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110322388A (zh) * | 2018-03-29 | 2019-10-11 | 上海熠知电子科技有限公司 | 池化方法及装置、池化系统、计算机可读存储介质 |
CN108763612A (zh) * | 2018-04-02 | 2018-11-06 | 复旦大学 | 一种神经网络的池化层加速运算的方法与电路 |
CN109102065A (zh) * | 2018-06-28 | 2018-12-28 | 广东工业大学 | 一种基于PSoC的卷积神经网络加速器 |
CN110750210A (zh) * | 2018-07-23 | 2020-02-04 | 爱思开海力士有限公司 | 存储系统 |
CN110135554A (zh) * | 2019-03-25 | 2019-08-16 | 电子科技大学 | 一种基于fpga的卷积神经网络硬件加速架构 |
CN110390385A (zh) * | 2019-06-28 | 2019-10-29 | 东南大学 | 一种基于bnrp的可配置并行通用卷积神经网络加速器 |
CN110826687A (zh) * | 2019-08-30 | 2020-02-21 | 安谋科技(中国)有限公司 | 数据处理方法及其装置、介质和系统 |
CN111340198A (zh) * | 2020-03-26 | 2020-06-26 | 上海大学 | 基于fpga的数据高度复用的神经网络加速器 |
CN111832718A (zh) * | 2020-06-24 | 2020-10-27 | 上海西井信息科技有限公司 | 芯片架构 |
Non-Patent Citations (2)
Title |
---|
WEIJIA CHEN; DENGJIE WANG: "An asynchronous and reconfigurable CNN accelerator", 《 2018 IEEE INTERNATIONAL CONFERENCE ON ELECTRON DEVICES AND SOLID STATE CIRCUITS (EDSSC)》 * |
程秋韵;白延琴;李倩;余长君: "加速梯度算法在池化问题上的应用", 《中国科学:数学》 * |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113988001A (zh) * | 2021-11-09 | 2022-01-28 | 中国电子科技集团公司第三十八研究所 | 一种深度学习模型中最大池化层运算电路装置 |
CN114372012A (zh) * | 2021-12-21 | 2022-04-19 | 中国科学院深圳先进技术研究院 | 一种通用、可配置的高能效池化计算单行输出系统和方法 |
CN114372012B (zh) * | 2021-12-21 | 2024-02-20 | 中国科学院深圳先进技术研究院 | 一种通用、可配置的高能效池化计算单行输出系统和方法 |
CN116627893A (zh) * | 2023-07-18 | 2023-08-22 | 苏州浪潮智能科技有限公司 | 加速引擎配置方法、装置、并行数估计系统、设备及介质 |
CN116627893B (zh) * | 2023-07-18 | 2023-11-03 | 苏州浪潮智能科技有限公司 | 加速引擎配置方法、装置、并行数估计系统、设备及介质 |
CN117273102A (zh) * | 2023-11-23 | 2023-12-22 | 深圳鲲云信息科技有限公司 | 用于池化加速器的装置及方法和芯片电路及计算设备 |
Also Published As
Publication number | Publication date |
---|---|
CN112905530B (zh) | 2023-05-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112905530B (zh) | 片上架构、池化计算加速器阵列、单元以及控制方法 | |
CN107657581B (zh) | 一种卷积神经网络cnn硬件加速器及加速方法 | |
CN106940815B (zh) | 一种可编程卷积神经网络协处理器ip核 | |
US11775430B1 (en) | Memory access for multiple circuit components | |
CN108470009B (zh) | 处理电路及其神经网络运算方法 | |
CN110390385B (zh) | 一种基于bnrp的可配置并行通用卷积神经网络加速器 | |
CN111897579A (zh) | 图像数据处理方法、装置、计算机设备和存储介质 | |
CN110738308B (zh) | 一种神经网络加速器 | |
CN111105023B (zh) | 数据流重构方法及可重构数据流处理器 | |
CN107590085A (zh) | 一种具有多级缓存的动态可重构阵列数据通路及其控制方法 | |
US11579921B2 (en) | Method and system for performing parallel computations to generate multiple output feature maps | |
CN113222130A (zh) | 一种基于fpga的可重构卷积神经网络加速器 | |
US4543642A (en) | Data Exchange Subsystem for use in a modular array processor | |
CN111752879B (zh) | 一种基于卷积神经网络的加速系统、方法及存储介质 | |
CN111610963B (zh) | 芯片结构及其乘加计算引擎 | |
WO2021179289A1 (zh) | 卷积神经网络的运算方法、装置、设备和存储介质 | |
CN114429214A (zh) | 运算单元、相关装置和方法 | |
CN116090530A (zh) | 可配置卷积核大小和并行计算数目的脉动阵列结构及方法 | |
CN112862079B (zh) | 一种流水式卷积计算架构设计方法及残差网络加速系统 | |
CN114912596A (zh) | 面向稀疏卷积神经网络的多chiplet系统及其方法 | |
CN115081600A (zh) | 执行Winograd卷积的变换单元、集成电路装置及板卡 | |
CN117291240B (zh) | 卷积神经网络加速器及电子设备 | |
CN112016665A (zh) | 计算神经网络在处理器上运行时间的方法及装置 | |
US20230252600A1 (en) | Image size adjustment structure, adjustment method, and image scaling method and device based on streaming architecture | |
CN115719088B (zh) | 一种支持存内cnn的中间缓存调度电路装置 |
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 | ||
CP01 | Change in the name or title of a patent holder | ||
CP01 | Change in the name or title of a patent holder |
Address after: Room 503-3, 398 Jiangsu Road, Changning District, Shanghai 200050 Patentee after: Shanghai Xijing Technology Co.,Ltd. Address before: Room 503-3, 398 Jiangsu Road, Changning District, Shanghai 200050 Patentee before: SHANGHAI WESTWELL INFORMATION AND TECHNOLOGY Co.,Ltd. |