CN113222115B - 面向卷积神经网络的共享缓存阵列 - Google Patents
面向卷积神经网络的共享缓存阵列 Download PDFInfo
- Publication number
- CN113222115B CN113222115B CN202110484354.8A CN202110484354A CN113222115B CN 113222115 B CN113222115 B CN 113222115B CN 202110484354 A CN202110484354 A CN 202110484354A CN 113222115 B CN113222115 B CN 113222115B
- Authority
- CN
- China
- Prior art keywords
- buffer
- access
- data
- shared cache
- main memory
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 230000001537 neural effect Effects 0.000 title claims description 4
- 239000000872 buffer Substances 0.000 claims abstract description 211
- 238000012545 processing Methods 0.000 claims abstract description 47
- 238000013527 convolutional neural network Methods 0.000 claims abstract description 29
- 230000001133 acceleration Effects 0.000 claims abstract description 22
- 238000000034 method Methods 0.000 claims abstract description 16
- 230000003139 buffering effect Effects 0.000 claims abstract description 7
- 238000013500 data storage Methods 0.000 claims description 8
- 238000013528 artificial neural network Methods 0.000 abstract description 8
- 230000008569 process Effects 0.000 abstract description 3
- 238000004364 calculation method Methods 0.000 description 14
- 238000010586 diagram Methods 0.000 description 13
- 230000004044 response Effects 0.000 description 7
- 230000006870 function Effects 0.000 description 3
- 230000009286 beneficial effect Effects 0.000 description 2
- 238000009825 accumulation Methods 0.000 description 1
- 230000004913 activation Effects 0.000 description 1
- 230000006978 adaptation Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 238000011176 pooling Methods 0.000 description 1
- 238000011160 research Methods 0.000 description 1
Classifications
-
- 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/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
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- General Health & Medical Sciences (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Computational Linguistics (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Artificial Intelligence (AREA)
- Neurology (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明涉及计算机技术领域,尤其涉及一种面向卷积神经网络的共享缓存阵列。共享缓存阵列用于缓存阵列处理器要访问的数据以及准备写入主存储器中的数据,阵列处理器包括N个处理单元;共享缓存阵列包括:缓存单元、判断单元;判断单元用于判断处理单元访问缓存单元是否命中,并根据判断结果选择要访问的缓冲器;缓存单元包括M个缓冲器,其中,M=N+1;缓存单元用于缓存处理单元要访问的数据以及准备写入主存储器中的数据。本发明可同时处理来自多个处理器的并行访问请求,降低总访问延迟并提高访问带宽,实现神经网络加速。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种面向卷积神经网络的共享缓存阵列、硬件加速电路和方法。
背景技术
卷积神经网络具有计算密集和存储密集两个特征。卷积神经网络包含大量的二维卷积、非线性激活以及池化等操作。每层网络计算都需要读取大量的权重、输入数据并产生大量的中间结果,频繁的数据交换会导致较大的访存延迟和访存功耗。
近年来,卷积神经网络加速逐渐成为研究热点,卷积神经网络加速可以实现高性能的计算能力。
在进行卷积神经网络运算时,如何降低访问延迟、提高访问带宽、实现神经网络加速成为亟待解决的问题。
发明内容
(一)要解决的技术问题
为了解决现有技术的上述问题,本发明提供一种面向卷积神经网络的共享缓存阵列、硬件加速电路和方法,以解决现有技术中在进行卷积神经网络运算时,不能降低访问延迟、提高访问带宽、实现神经网络加速的问题。
(二)技术方案
为了达到上述目的,本发明采用的主要技术方案包括:
第一方面,本申请实施例提供一种面向卷积神经网络的共享缓存阵列,所述共享缓存阵列用于缓存阵列处理器要访问的从主存储器中读取的数据以及准备写入所述主存储器中的数据,所述阵列处理器包括N个处理单元;所述共享缓存阵列包括:缓存单元、判断单元;
所述判断单元用于判断所述处理单元访问所述缓存单元是否命中,并根据判断结果选择要访问的缓冲器;
所述缓存单元包括M个缓冲器,其中,M=N+1;所述缓存单元用于缓存所述处理单元要访问的数据以及准备写入所述主存储器中的数据。
可选地,所述判断单元包括M个命中判断模块和一个不命中判断模块,M个命中判断模块与M个缓冲器一一对应;
所述命中判断模块用于接收N个处理单元的访问请求,基于所述访问请求进行命中判断,输出命中判断结果,所述命中判断结果包括访问命中和访问不命中;并当访问命中时,基于所述访问请求中的目的地址访问相应的的缓冲器;
所述命中判断模块用于接收N个不命中访问请求,当所述不命中访问请求中的不命中访问地址在相应缓冲器的数据存储范围内时,基于所述不命中访问地址确定要访问的缓冲器;
所述不命中判断模块用于当所述命中判断结果为访问不命中时,根据所述缓存单元的状态确定访问不命中下的目的缓冲器。
可选地,所述判断单元还包括与命中判断模块一一对应的第一仲裁模块;
所述第一仲裁模块用于当命中判断模块确定多个访问请求要访问同一缓冲器时,仲裁出一个访问请求作为当前访问请求,并将所述当前访问请求发送至相应的缓冲器。
可选地,根据所述缓存单元的状态确定访问不命中下的目的缓冲器,包括:
当所述缓存单元中有空闲的缓冲器时,选择计数值最大的空闲缓冲器作为不命中访问的目的缓冲器;
当所述缓存单元中无空闲的缓冲器时,根据最近最久未使用替换算法选出被访问频率最低的缓冲器作为不命中访问的目的缓冲器。
可选地,所述判断单元还包括第二仲裁模块;
所述第二仲裁模块用于当不命中访问请求为多个时,仲裁出一个不命中访问请求作为当前不命中访问请求,并发送至所述不命中判断模块。
可选地,所述缓冲器中包括标志寄存器和数据缓存器;
所述标志寄存器用于存储该缓冲器的状态数据和缓存数据的首地址;
所述数据缓存器用于缓存主存传来的以处理单元发出的访问地址为首地址的预设大小的数据块,所述数据块对应的地址是连续的。
可选地,所述标志寄存器包括状态位和脏位,其中,状态位有效表示该缓冲器缓存从主存传来的数据有效,脏位有效表示该缓冲器存储的数据块已被修改,与主存中对应地址的数据不同。
可选地,所述共享缓存阵列在不命中访问下进行数据获取和状态更新,包括:
首次访问或共享缓存阵列未满时,通过不命中判断模块选择一个空缓冲器作为目的缓冲器,以访问地址为首地址,从主存储器读取数据块填充目的缓冲器,从主存储器读取数据块完成后,更新状态位为有效并完成访问;
共享缓存阵列满,且替换的目的缓冲器脏位无效时,直接从主存储器读取目的数据块填充目的缓冲器,将替换缓冲器的状态位更新为无效,待从主存储器读取数据块完成后,更新状态位为有效并完成访问;
共享缓存阵列满,且替换的目的缓冲器脏位有效时,将脏数据块写回主存储器,并从主存储器读取目的数据块;写回脏数据完成后,更新替换缓冲器脏位无效,读取主存储器的数据块完成后,更新状态位为有效并完成访问。
第二方面,本申请实施例提供一种卷积神经网络的硬件加速电路,包括上述第一方面任一所述的共享缓存阵列;
所述共享缓存阵列与阵列处理器连接,所述阵列处理器包括16个处理单元;所述共享缓存阵列包括17个缓冲器,每个缓冲器缓存16个32比特数据。
第三方面,本申请实施例提供一种卷积神经网络的加速方法,应用于所述卷积神经网络的硬件加速电路中,该方法包括:
针对阵列处理器访问从主存储器中读取的图像数据以及将卷积运算后的数据写入所述主存储器,所述阵列处理器包括16个处理单元;
共享缓存阵列中的17个缓冲器分别缓存16个处理单元要访问的图像数据和卷积运算的卷积核数据;
各处理单元访问相应的缓冲器,读取所述图像数据以及所述卷积核数据,进行卷积运算;
各处理单元访问相应的缓冲器,基于卷积运算结果对所述共享缓存阵列中的数据进行更新;
所述共享缓存阵列将需要替换的缓冲器中的脏数据写回所述主存储器中。
(三)有益效果
本发明的有益效果是:本发明实施例提供的面向卷积神经网络的共享缓存阵列,针对卷积计算全局重用少、局部访问明显的特点,以及阵列处理器对访存提出的高并行性要求,在处理器发出访问请求后,经过判断和仲裁将访问请求发送至缓存阵列内对应的数据缓存中完成响应,从而降低了总访问延迟并提高访问带宽,实现神经网络加速。
附图说明
图1为本发明一实施例提供的面向卷积神经网络的共享缓存阵列的架构示意图;
图2为本发明另一实施例提供的面向卷积神经网络的共享缓存阵列的架构示意图;
图3为本发明另一实施例提供的判断单元结构示意图;
图4为本发明另一实施例提供的缓冲器数据组成示意图;
图5为本发明另一实施例提供的首次写访问过程示意图;
图6为本发明另一实施例提供的读主存使能产生时序图;
图7为本发明又一实施例中的卷积神经网络的硬件加速电路结构示意图;
图8为本发明再一实施例中卷积神经网络的加速方法流程示意图。
具体实施方式
为了更好的解释本发明,以便于理解,下面结合附图,通过具体实施方式,对本发明作详细描述。
本文所使用的所有的技术和科学术语与属于本发明的技术领域的技术人员通常理解的含义相同。本文中在本发明的说明书中所使用的术语只是为了描述具体的实施例的目的,不是旨在于限制本发明。本文所使用的术语“和/或”包括一个或多个相关的所列项目的任意的和所有的组合。
为了减少处理器与主存间的数据通信,进一步提高访问速度,结合卷积计算全局重用少、局部访问明显的特点,以及阵列处理器对访存提出的高并行性要求,本发明对现有的缓存结构进行了改进,提供了一种面向阵列处理器的共享缓存阵列结构,处理器发出访问请求后经过判断和仲裁,将访问请求发送至缓冲器内对应的数据缓存中完成响应。共享缓存阵列可同时处理来自多个处理器的访问请求,降低总访问延迟并提高访问带宽。
图1为本发明一实施例提供的面向卷积神经网络的共享缓存阵列的架构示意图,本实施例中共享缓存阵列用于缓存阵列处理器要访问的从主存储器中读取的数据以及准备写入所述主存储器中的数据,阵列处理器包括N个处理单元;如图1所示,共享缓存阵列包括:缓存单元、判断单元;
判断单元用于判断处理单元访问缓存单元是否命中,并根据判断结果选择要访问的缓冲器;
缓存单元包括M个缓冲器,其中,M=N+1;缓存单元用于缓存处理单元要访问的数据以及准备写入主存储器中的数据。
在图1所示本发明实施例所提供的技术方案中,针对卷积计算全局重用少、局部访问明显的特点,以及阵列处理器对访存提出的高并行性要求,本发明的共享缓存阵列可支持多个处理单元的并行访问。在处理器发出访问请求后,对来自多个处理单元的访问请求进行并行处理,经过判断和仲裁将访问请求发送至缓存阵列内对应的数据缓存中完成响应,从而降低了总访问延迟并提高访问带宽,实现神经网络加速。
为了更好地对本实施例进行说明,以下对本实施例中的各个单元进行展开说明。
本实施例中,判断单元包括M个命中判断模块和一个不命中判断模块,M个命中判断模块与M个缓冲器一一对应;
命中判断模块用于接收N个处理单元的访问请求,基于访问请求进行命中判断,输出命中判断结果,命中判断结果包括访问命中和访问不命中;并当访问命中时,基于访问请求中的目的地址访问相应的缓冲器;
命中判断模块用于接收N个不命中访问请求,当不命中访问请求中的不命中访问地址在相应缓冲器的数据存储范围内时,基于不命中访问地址确定要访问的缓冲器;
不命中判断模块用于当命中判断结果为访问不命中时,根据缓存单元的状态确定访问不命中下的目的缓冲器,包括:
当缓存单元中有空闲的缓冲器时,选择计数值最大的空闲缓冲器作为不命中访问的目的缓冲器;
当缓存单元中无空闲的缓冲器时,根据最近最久未使用替换算法选出被访问频率最低的缓冲器作为不命中访问的目的缓冲器。
本实施例中,判断单元还包括第一仲裁模块和第二仲裁模块;
第一仲裁模块用于当命中判断模块确定多个访问请求要访问同一缓冲器时,仲裁出一个访问请求作为当前访问请求,并将当前访问请求发送至相应的缓冲器。
第二仲裁模块用于当不命中访问请求为多个时,仲裁出一个不命中访问请求作为当前不命中访问请求,并发送至不命中判断模块。
本实施例中,缓冲器中包括标志寄存器和数据缓存器;
标志寄存器用于存储该缓冲器的状态数据和缓存数据的首地址;标志寄存器包括状态位和脏位,其中,状态位有效表示该缓冲器缓存从主存传来的数据有效,脏位有效表示该缓冲器存储的数据块已被修改,与主存中对应地址的数据不同。
数据缓存器用于缓存主存传来的以处理单元发出的访问地址为首地址的预设大小的数据块,数据块对应的地址是连续的。
本实施例中,共享缓存阵列在不命中访问下进行数据获取和状态更新,包括:
首次访问或共享缓存阵列未满时,通过不命中判断模块选择一个空缓冲器作为目的缓冲器,以访问地址为首地址,从主存储器读取数据块填充目的缓冲器,从主存储器读取数据块完成后,更新状态位为有效并完成访问;
共享缓存阵列满,且替换的目的缓冲器脏位无效时,直接从主存储器读取目的数据块填充目的缓冲器,将替换缓冲器的状态位更新为无效,待从主存储器读取数据块完成后,更新状态位为有效并完成访问;
共享缓存阵列满,且替换的目的缓冲器脏位有效时,将脏数据块写回主存储器,并从主存储器读取目的数据块;写回脏数据完成后,更新替换缓冲器脏位无效,读取主存储器的数据块完成后,更新状态位为有效并完成访问。
图2为本发明另一实施例提供的面向卷积神经网络的共享缓存阵列的架构示意图,如图2所示,共享缓存阵列用于处理包含16个处理单元的阵列处理器的访问,该共享缓存阵列中包括判断单元和缓存单元;缓存单元包括17个缓冲器,判断单元包括17个命中判断模块以及与命中判断模块一一对应的第一仲裁模块,还包括第二仲裁模块和1个不命中判断模块。以下对图2所示实施例进行详细阐述。
卷积计算中的乘累加操作同时需要特征图像和卷积核两个操作数,并且卷积计算访问局部性大,结合阵列处理器高并行性的特点,处理器阵列内用于完成卷积操作的16个处理单元同时执行卷积计算指令时,既可以同时对图像中的一块区域内不同像素点进行卷积,也可以对图像中的不同区域同时做卷积计算。完成一层卷积运算至少需要一个卷积核,根据DDR的突发长度、卷积计算局部性大的特点和卷积核大小,所设计的共享缓存阵列由17个支持非对齐存储访问的缓冲器组成,每个缓冲器可缓存16×32bit的数据。共享缓存阵列可同时接收来自16个处理单元的访问请求,当在共享缓存阵列中不命中时,通过判断单元中命中判断模块判断和第一仲裁模块仲裁后,将请求发送至共享缓存阵列内的目的缓冲器中完成响应;当在共享缓存阵列中不命中时,若有多个不命中访问请求则通过第二仲裁模块仲裁出一路访问请求经过不命中判断模块的确定目的缓冲器后访问主存并完成响应。
图3为本发明另一实施例提供的判断单元结构示意图,如图3所示,判断单元负责判断处理单元访问共享缓存阵列是否命中,主要分为两部分:命中判断及不命中判断。
命中判断根据缓冲器的标志寄存器记录的缓冲器的有效位及数据存储的首地址,判断处理单元发出的访问请求是否在共享缓存阵列的17个缓冲器中命中,若命中则输出命中访问使能及访问地址到对应的命中缓冲器中;不命中判断主要功能是当处理单元在共享缓存阵列中访问不命中时,根据缓冲器的状态选择不命中访问的目的缓冲器,并输出访问使能到该缓冲器。当存在多个不命中访问时,在仲裁并完成第一次不命中访问后,更新其目的缓冲器的状态信息,在响应下一个不命中访问请求前,首先根据更新后的缓冲器状态信息判断是否将此次不命中访问更新为命中,避免多次不命中访问下重复调用同一数据块,引起较大的访问延迟。
命中判断包括17个命中判断单元judge_hit00—judge_hit16,与共享缓存阵列的17个缓冲器一一对应。命中判断分为两种情况,以judge_hit00为例:
第一种情况:处理单元访问命中判断:judge_hit00接收来自16个处理单元的访问请求,分别通过比较器CMP00-CMP15与缓冲器buffer00数据存储的首地址比较,当访问的目的地址在buffer00数据存储的范围内且buffer00的有效信号有效时,此次访问命中,输出命中访问使能及访问地址到buffer00中,否则此次访问不命中。
第二种情况:不命中访问更新:judge_hit00接收16个不命中访问请求,并与buffer00数据存储的首地址比较判断,当不命中访问地址在buffer00数据存储的范围内且buffer00的有效信号有效时,更新此次不命中访问请求为命中,并输出命中访问使能及访问地址到buffer00中。
当有多个命中访问使能同时有效时,通过16选1仲裁模块arbiter16to1仲裁出其中一个命中使能并响应,当前请求响应完成后响应下一命中访问使能。表1为命中判断单元接口信号定义及功能说明表。
表1
本实施例中,不命中判断主要功能是仲裁多个不命中访问请求,判断不命中访问的目的缓冲器并输出,不命中判断模块包括不命中判断单元judge_nohit和16选1仲裁单元arbiter16to1。
不命中判断单元judge_nohit负责根据共享缓存阵列的状态判断不命中访问下的目的缓冲器。根据卷积计算全局重用少、局部访问明显的特点,利用最近最久未使用替换算法能够在硬件资源开销以及命中率之间取得平衡,在增加硬件开销不大的情况下提高缓冲器命中率。采用计数器的方式记录共享缓存阵列中每个缓冲器的被访问频率,通过硬件修改计数值,并根据计数值选择不命中访问情况下的目的缓冲器。复位情况下17个缓冲器的计数值分别为0-16,当访问某缓冲器时,该缓冲器的计数值清零,否则计数值加一,主要有以下两种情况:
情况一、当共享缓存阵列有空缓冲器:即17个缓冲器的有效位不全为1,选择计数值最大的空缓冲器作为不命中访问的目的缓冲器;
情况二、当共享缓存阵列中缓冲器全满:根据LRU替换算法选出计数值最大的缓冲器进行替换并作为不命中访问的目的缓冲器。根据访问情况,阵列中缓冲器的计数值变化可分为以下三种情况:
a)访问命中时,命中访问目的缓冲器,即dest_buffer_hit计数值清零,计数值小于dest_buffer_hit的缓冲器计数值加1,其余缓冲器的计数值保持;若连续访问命中时,所有缓冲器的计数值保持;
b)存储阵列未满且访问不命中时,不命中访问目的缓冲器,即dest_buffer_nohit计数值清零,计数值小于dest_buffer_nohit的缓冲器计数值加1,其余缓冲器的计数值保持;
c)存储阵列满且访问不命中时,替换的目的缓冲器,即lru_buffer计数值清零,计数值小于lru_buffer的缓冲器计数值加1,其余缓冲器的计数值保持。
为了避免多个缓冲器同时读取主存数据块,并且能够更准确地根据共享缓存阵列的状态选出不命中访问下的目的缓冲器,当不命中访问冲突时,首先通过16选1仲裁模块arbiter16to1仲裁出一个不命中使能,并且输出到不命中判断模块judge_nohit选择的不命中访问目的缓冲器完成响应。表2为不命中判断单元接口信号定义及功能说明表。
表2
图4为本发明另一实施例提供的缓冲器数据组成示意图,如图4所示,本实施例中缓存单元中每个缓冲器由标志寄存器和数据缓存器构成。标志寄存器用于存储该缓冲器的状态和缓存数据的首地址,其中状态包括valid有效状态和dirty脏位,valid有效表示该缓冲器缓存从主存传来的数据有效,dirty有效表示该buffer存储的数据块已被修改,与主存中对应地址的数据不同。数据缓存器用于缓存主存传来的连续地址的16个32bit的数据。图4中V表示valid有效状态位,D表示dirty脏位。
命中访问直接读取或更新目的缓冲器中的数据,若写访问命中,则更新数据的同时将脏位置为有效;不命中访问下数据获取和状态更新分为以下3种情况:
首次访问或共享缓存阵列未满时,通过不命中判断单元选择一个空缓冲器作为目的缓冲器,以访问地址为首地址,从主存读取数据块填充目的缓冲器,从主存读取数据块完成后,更新valid位为有效并完成访问;
共享缓存阵列满,且替换的目的缓冲器脏位无效时,直接从主存读取数据块填充目的缓冲器,将替换缓冲器的有效位更新为无效,待从主存读取数据块完成后,更新valid位为有效并完成访问;
共享缓存阵列满,且替换的目的缓冲器脏位有效时,将脏数据块写回主存,并从主存读取目的数据块。写回脏数据完成后,更新替换缓冲器脏位无效,读取主存的数据块完成后,更新valid位为有效并完成访问。
以首次写访问为例对访问及状态更新过程进行说明,图5为本发明另一实施例提供的首次写访问过程示意图,如图5所示,主要包括以下步骤:
①处理单元首次发出访问请求,并输入至判断单元判断本次访问是否命中;
②判断单元判断本次写访问不命中,并且不命中访问的目的缓冲器记录下本次访问信息中的目的地址,并将目的地址作为访问的首地址和访问请求发送至主存;其中,主存为动态随机存取存储器(Dynamic Random Access Memory,简写DRAM);
③数据缓存器接收主存传来的连续地址的16个32bit的数据,接收完成后更新标志寄存单元的valid状态位为有效;
④响应写访问,更新目的地址的数据,返回响应完成的反馈信号,并更新dirty状态位为有效;
⑤通过判断单元返回响应完成的反馈信号至处理单元。
数据缓存器采用非对齐的存储访问方式,在访问不命中时,以处理单元发出的访问地址为首地址,缓存主存传来的16×32bit的数据。在访问命中时,直接读取或更新目的地址的数据,同时返回反馈信号。
为了保证共享缓存阵列与主存的一致性,采用回写法,在执行写操作时,仅更新缓冲器中对应地址的数据,并将buffer的脏位置为有效,不更新主存单元,只有当替换buffer的数据为脏时,将脏数据块写回主存。
在共享缓存阵列满且替换buffer脏时,需先将脏数据块写回至主存再从主存读取以访问地址为首地址的数据块。为了进一步降低访问延迟,在写回第一个脏数据后,开始以访问地址为首地址,从主存读取目的数据块。因此,读取主存数据块的使能产生有以下3种情况,时序图如图6所示,图6为本发明另一实施例提供的读主存使能产生时序图。
1.共享缓存阵列有空闲;访问不命中且无需替换,即存共享缓存加速阵列未满,直接从主存读取目的数据块;
2.共享缓存阵列满,且替换的缓冲器脏状态无效;访问不命中且需替换,但无脏数据,直接从主存读取目的数据块;
3.共享缓存阵列满,且替换的缓冲器中的脏数据已写回主存。其中,为了进一步降低访问延迟,在第3种情况下,缓冲器在接收到第一个脏数据写回完成的反馈信号后,产生读取主存数据块的使能,以访问地址为首地址,从主存读取目的数据块。
图7为本发明又一实施例中的卷积神经网络的硬件加速电路结构示意图,如图7所示,该电路包括上述实施例中任一所述的共享缓存阵列;
共享缓存阵列与阵列处理器连接,阵列处理器包括16个处理单元;共享缓存阵列包括17个缓冲器,每个缓冲器缓存16个32比特数据。
根据阵列处理器高并行性的特点,将神经网络计算并行映射在阵列结构上,可以提高神经网络的计算速度。为了进一步提高网络的计算速度,将共享缓存阵列与阵列处理器相结合,通过提高主存储器数据的访问速度,从而提高了卷积神经网络的运算速度。采用共享缓存阵列可实现有效的数据复用,从而达到加速卷积并行计算的目的,提高了卷积神经网络的运算速度。
图8为本发明再一实施例中卷积神经网络的加速方法流程示意图,该方法可以应用于卷积神经网络的硬件加速电路中,如图8所示,该方法包括:
针对阵列处理器访问从主存储器中读取的图像数据以及将卷积运算后的数据写入主存储器,阵列处理器包括16个处理单元;
共享缓存阵列中的17个缓冲器分别缓存16个处理单元要访问的图像数据和卷积运算的卷积核数据;
各处理单元访问相应的缓冲器,读取图像数据以及卷积核数据,进行卷积运算;
各处理单元访问相应的缓冲器,基于卷积运算结果对共享缓存阵列中的数据进行更新;
共享缓存阵列将需要替换的缓冲器中的脏数据写回主存储器中。
本实施例的方法,由于采用了卷积神经网络的硬件加速电路,从而提高了卷积神经网络的运算速度。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本发明的其它实施方案。本申请旨在涵盖本发明的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本发明的一般性原理并包括本发明未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本发明的真正范围和精神由下面的权利要求指出。
应当理解的是,本发明并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本发明的范围仅由所附的权利要求来限制。
Claims (8)
1.一种面向卷积神经网络的共享缓存阵列,其特征在于,共享缓存阵列将卷积神经网络计算并行映射到阵列处理器,所述共享缓存阵列用于缓存阵列处理器要访问的从主存储器中读取的数据以及准备写入所述主存储器中的数据,所述阵列处理器包括N个处理单元;所述共享缓存阵列包括:缓存单元、判断单元;
所述判断单元用于判断所述处理单元访问所述缓存单元是否命中,并根据判断结果选择要访问的缓冲器;
所述缓存单元包括M个缓冲器,其中,M=N+1;所述缓存单元用于缓存所述处理单元要访问的数据以及准备写入所述主存储器中的数据;
所述判断单元包括M个命中判断模块和一个不命中判断模块,M个命中判断模块与M个缓冲器一一对应;
所述命中判断模块用于接收N个处理单元的访问请求,基于所述访问请求进行命中判断,输出命中判断结果,所述命中判断结果包括访问命中和访问不命中;并当访问命中时,基于所述访问请求中的目的地址访问相应的缓冲器;
所述命中判断模块用于接收N个不命中访问请求,当所述不命中访问请求中的不命中访问地址在相应缓冲器的数据存储范围内时,基于所述不命中访问地址确定要访问的缓冲器;
所述不命中判断模块用于当所述命中判断结果为访问不命中时,根据所述缓存单元的状态确定访问不命中下的目的缓冲器;
所述判断单元还包括与命中判断模块一一对应的第一仲裁模块;
所述第一仲裁模块用于当命中判断模块确定多个访问请求要访问同一缓冲器时,仲裁出一个访问请求作为当前访问请求,并将所述当前访问请求发送至相应的缓冲器。
2.根据权利要求1所述的共享缓存阵列,其特征在于,根据所述缓存单元的状态确定访问不命中下的目的缓冲器,包括:
当所述缓存单元中有空闲的缓冲器时,选择计数值最大的空闲缓冲器作为不命中访问的目的缓冲器;
当所述缓存单元中无空闲的缓冲器时,根据最近最久未使用替换算法选出被访问频率最低的缓冲器作为不命中访问的目的缓冲器。
3.根据权利要求2所述的共享缓存阵列,其特征在于,所述判断单元还包括第二仲裁模块;
所述第二仲裁模块用于当不命中访问请求为多个时,仲裁出一个不命中访问请求作为当前不命中访问请求,并发送至所述不命中判断模块。
4.根据权利要求1所述的共享缓存阵列,其特征在于,所述缓冲器中包括标志寄存器和数据缓存器;
所述标志寄存器用于存储该缓冲器的状态数据和缓存数据的首地址;
所述数据缓存器用于缓存主存传来的以处理单元发出的访问地址为首地址的预设大小的数据块,所述数据块对应的地址是连续的。
5.根据权利要求4所述的共享缓存阵列,其特征在于,所述标志寄存器包括状态位和脏位,其中,状态位有效表示该缓冲器缓存从主存传来的数据有效,脏位有效表示该缓冲器存储的数据块已被修改,与主存中对应地址的数据不同。
6.根据权利要求5所述的共享缓存阵列,其特征在于,所述共享缓存阵列在不命中访问下进行数据获取和状态更新,包括:
首次访问或共享缓存阵列未满时,通过不命中判断模块选择一个空缓冲器作为目的缓冲器,以访问地址为首地址,从主存储器读取数据块填充目的缓冲器,从主存储器读取数据块完成后,更新状态位为有效并完成访问;
共享缓存阵列满,且替换的目的缓冲器脏位无效时,直接从主存储器读取目的数据块填充目的缓冲器,将替换缓冲器的状态位更新为无效,待从主存储器读取数据块完成后,更新状态位为有效并完成访问;
共享缓存阵列满,且替换的目的缓冲器脏位有效时,将脏数据块写回主存储器,并从主存储器读取目的数据块;写回脏数据完成后,更新替换缓冲器脏位无效,读取主存储器的数据块完成后,更新状态位为有效并完成访问。
7.一种卷积神经网络的硬件加速电路,其特征在于,包括上述权利要求1至6任一所述的共享缓存阵列;
所述共享缓存阵列与阵列处理器连接,所述阵列处理器包括16个处理单元;所述共享缓存阵列包括17个缓冲器,每个缓冲器缓存16个32比特数据。
8.一种卷积神经网络的加速方法,应用于权利要求7所述的卷积神经网络的硬件加速电路中,其特征在于,该方法包括:
针对阵列处理器访问从主存储器中读取的图像数据以及将卷积运算后的数据写入所述主存储器,所述阵列处理器包括16个处理单元;
共享缓存阵列中的17个缓冲器分别缓存16个处理单元要访问的图像数据和卷积运算的卷积核数据;
各处理单元访问相应的缓冲器,读取所述图像数据以及所述卷积核数据,进行卷积运算;
各处理单元访问相应的缓冲器,基于卷积运算结果对所述共享缓存阵列中的数据进行更新;
所述共享缓存阵列将需要替换的缓冲器中的脏数据写回所述主存储器中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110484354.8A CN113222115B (zh) | 2021-04-30 | 2021-04-30 | 面向卷积神经网络的共享缓存阵列 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110484354.8A CN113222115B (zh) | 2021-04-30 | 2021-04-30 | 面向卷积神经网络的共享缓存阵列 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113222115A CN113222115A (zh) | 2021-08-06 |
CN113222115B true CN113222115B (zh) | 2024-03-01 |
Family
ID=77090728
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110484354.8A Active CN113222115B (zh) | 2021-04-30 | 2021-04-30 | 面向卷积神经网络的共享缓存阵列 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113222115B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114036089B (zh) * | 2021-11-17 | 2022-10-14 | 海光信息技术股份有限公司 | 数据处理方法、装置、缓存器、处理器及电子设备 |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH03220659A (ja) * | 1990-01-26 | 1991-09-27 | Fujitsu Ltd | マルチプロセッサシステム |
JPH0816454A (ja) * | 1994-07-04 | 1996-01-19 | Hitachi Ltd | 共用メモリアクセス制御回路 |
WO2003048955A1 (fr) * | 2001-12-03 | 2003-06-12 | Hitachi, Ltd. | Systeme multiprocesseur |
CN101187908A (zh) * | 2007-09-27 | 2008-05-28 | 上海大学 | 单芯片多处理器共享数据存储空间的访问方法 |
CN102667737A (zh) * | 2009-12-21 | 2012-09-12 | 索尼公司 | 缓冲存储器和缓冲存储器控制单元 |
CN106547707A (zh) * | 2016-09-21 | 2017-03-29 | 西安邮电大学 | 阵列处理器中簇内存储并行访问局部优先交换电路 |
CN108733415A (zh) * | 2018-05-16 | 2018-11-02 | 中国人民解放军国防科技大学 | 支持向量随机访存的方法及装置 |
CN109032964A (zh) * | 2018-07-02 | 2018-12-18 | 京东方科技集团股份有限公司 | 缓存替换方法及其装置、异构多核系统 |
CN109117088A (zh) * | 2018-07-24 | 2019-01-01 | 联想(北京)有限公司 | 一种数据处理方法及系统 |
CN109740748A (zh) * | 2019-01-08 | 2019-05-10 | 西安邮电大学 | 一种基于fpga的卷积神经网络加速器 |
CN111047010A (zh) * | 2019-11-25 | 2020-04-21 | 天津大学 | 降低cnn加速器首层卷积计算延时的方法及装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160379109A1 (en) * | 2015-06-29 | 2016-12-29 | Microsoft Technology Licensing, Llc | Convolutional neural networks on hardware accelerators |
-
2021
- 2021-04-30 CN CN202110484354.8A patent/CN113222115B/zh active Active
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH03220659A (ja) * | 1990-01-26 | 1991-09-27 | Fujitsu Ltd | マルチプロセッサシステム |
JPH0816454A (ja) * | 1994-07-04 | 1996-01-19 | Hitachi Ltd | 共用メモリアクセス制御回路 |
WO2003048955A1 (fr) * | 2001-12-03 | 2003-06-12 | Hitachi, Ltd. | Systeme multiprocesseur |
CN101187908A (zh) * | 2007-09-27 | 2008-05-28 | 上海大学 | 单芯片多处理器共享数据存储空间的访问方法 |
CN102667737A (zh) * | 2009-12-21 | 2012-09-12 | 索尼公司 | 缓冲存储器和缓冲存储器控制单元 |
CN106547707A (zh) * | 2016-09-21 | 2017-03-29 | 西安邮电大学 | 阵列处理器中簇内存储并行访问局部优先交换电路 |
CN108733415A (zh) * | 2018-05-16 | 2018-11-02 | 中国人民解放军国防科技大学 | 支持向量随机访存的方法及装置 |
CN109032964A (zh) * | 2018-07-02 | 2018-12-18 | 京东方科技集团股份有限公司 | 缓存替换方法及其装置、异构多核系统 |
CN109117088A (zh) * | 2018-07-24 | 2019-01-01 | 联想(北京)有限公司 | 一种数据处理方法及系统 |
CN109740748A (zh) * | 2019-01-08 | 2019-05-10 | 西安邮电大学 | 一种基于fpga的卷积神经网络加速器 |
CN111047010A (zh) * | 2019-11-25 | 2020-04-21 | 天津大学 | 降低cnn加速器首层卷积计算延时的方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN113222115A (zh) | 2021-08-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7502889B2 (en) | Home node aware replacement policy for caches in a multiprocessor system | |
US7415575B1 (en) | Shared cache with client-specific replacement policy | |
JP5417879B2 (ja) | キャッシュ装置 | |
US5802572A (en) | Write-back cache having sub-line size coherency granularity and method for maintaining coherency within a write-back cache | |
US7783836B2 (en) | System and method for cache management | |
US6438651B1 (en) | Method, system, and program for managing requests to a cache using flags to queue and dequeue data in a buffer | |
US8185695B2 (en) | Snoop filtering mechanism | |
TWI405081B (zh) | 對共享第二層對映快取記憶體對稱配置之方法與系統 | |
JP3620473B2 (ja) | 共有キャッシュメモリのリプレイスメント制御方法及びその装置 | |
JP3846638B2 (ja) | 画素エンジン・データ・キャッシング機構 | |
US9135177B2 (en) | Scheme to escalate requests with address conflicts | |
JP2002536716A (ja) | 仮想メモリシステムにおけるメモリアクセスの改善技術 | |
US7809889B2 (en) | High performance multilevel cache hierarchy | |
US20140089600A1 (en) | System cache with data pending state | |
US20110029712A1 (en) | Memory device and method with on-board cache system for facilitating interface with multiple processors, and computer system using same | |
US7948498B1 (en) | Efficient texture state cache | |
US11301250B2 (en) | Data prefetching auxiliary circuit, data prefetching method, and microprocessor | |
CN112631961A (zh) | 一种内存管理单元、地址转译方法以及处理器 | |
CN110297787B (zh) | I/o设备访问内存的方法、装置及设备 | |
CN108132893A (zh) | 一种支持流水的常量Cache | |
US20080307169A1 (en) | Method, Apparatus, System and Program Product Supporting Improved Access Latency for a Sectored Directory | |
CN112559433B (zh) | 一种多核互联总线、核间通信方法及多核处理器 | |
CN113222115B (zh) | 面向卷积神经网络的共享缓存阵列 | |
CN117389914B (zh) | 缓存系统、缓存写回方法、片上系统及电子设备 | |
US6240487B1 (en) | Integrated cache buffers |
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 |