CN114819124A - 一种深度神经网络推断处理器的访存性能提升方法 - Google Patents
一种深度神经网络推断处理器的访存性能提升方法 Download PDFInfo
- Publication number
- CN114819124A CN114819124A CN202210394533.7A CN202210394533A CN114819124A CN 114819124 A CN114819124 A CN 114819124A CN 202210394533 A CN202210394533 A CN 202210394533A CN 114819124 A CN114819124 A CN 114819124A
- Authority
- CN
- China
- Prior art keywords
- queue
- request
- memory
- memory access
- access request
- 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
Images
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/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
- 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
-
- 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/0656—Data buffering arrangements
-
- 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/0658—Controller construction arrangements
-
- 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
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N5/00—Computing arrangements using knowledge-based models
- G06N5/04—Inference or reasoning models
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Computing Systems (AREA)
- Biophysics (AREA)
- Biomedical Technology (AREA)
- Artificial Intelligence (AREA)
- Computational Linguistics (AREA)
- Molecular Biology (AREA)
- General Health & Medical Sciences (AREA)
- Neurology (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明公开一种深度神经网络推断处理器的访存性能提升方法,所述方法包括:排序队列,其根据访存请求的内存行地址和读写属性将访存请求缓存在不同的队列中;访存请求分流模块,将所有的访存请求按内存行地址和读写属性分流到不同的排序队列中,并采用分流记录表来记录每个队列的队尾访存请求的地址;多路选择器,其作用是在感知模块的控制下选择某一队列的输出通道将该队列中所有的访存请求发内存;队列感知模块,其感知队列的长度变化和时间变化,决策选择将哪一队列的访存请求发往内存。本发明通过对访存请求序列进行排序,能够有效提升内存的行缓冲命中率,降低深度神经网络推断处理器的访存延时,且易于实现。
Description
技术领域
本发明属于微处理器体系结构设计领域。更具体地,涉及一种深度神经网络推断处理器的访存性能提升方法。
背景技术
深度神经网络(Deep Neural Networks,DNN)凭借其强大的数据表示能力和学习能力,被广泛应用于图像识别、目标检测等领域。但是随着应用场景和需求的增多,DNN的性能要求越来越严苛,其网络规模越来越大,参数量和计算量也急剧增长。庞大的参数量和运算量意味着对内存的访存密集和计算密集,DNN推断任务在通用处理器上执行会花费大量的时间,难以满足应用需求。采用专用的DNN推断处理器来执行DNN推断任务成为了一种必然趋势。
但是,由于算力提升速度快于内存提升速度,DNN推断处理器也不可避免地迎来了“内存墙”问题,对内存的访问延时已成为影响DNN推断处理器性能的最大瓶颈。谷歌在TPUv1上进行的测试实验也表明,6种人工智能算法中的5个都受内存限制,并且对其中的CNN1进行分析,大约35%的周期都用来等待权重从内存加载到矩阵单元,23%的周期因流水线中的写后读(Read After Write,RAW)依赖性而停顿。因此对访存操作进行优化加速成为了DNN推断处理器设计中迫在眉睫的研究工作。
当前计算机体系中普遍使用DDR DRAM作为处理器的内存。由于DRAM在存储结构上采用多维层次结构(DDR1至DDR3是以存储体、行、列组织的三维结构,DDR4以后是在三维基础上增加了存储体组的四维结构)以及DRAM的时序和资源约束,对其任意地址进行访存的时间并非是相等的,即DRAM具有不均匀访存时间特性。当内存响应一个来自处理器的访存请求时,会将该请求想访存的存储单元所在的内存行中所有存储单元的内容通过行激活操作移到内存行缓冲区中,若下一个请求访存的存储单元仍在该内存行中,则直接通过列访问操作在内存行缓冲中读写数据,即内存行缓冲命中。否则,还需要额外地使用预充电操作将行缓冲写回到内存相应行,再用行激活操作将此刻访存的存储单元所在行刷新到行缓冲内,这些额外的操作将增加内存对访存请求的响应延时,具体可以参考JEDEC标准。例如,相继对同一存储体的不同行进行访存则会因为行缓冲冲突产生较高的访存延时,而相继对同一存储体同一行进行访存则行缓冲命中率很高,从而产生较低的访存延时。可见,在给定访存请求数目的情况下,访存请求到达顺序的不同,会导致行缓冲命中率的不同,进而造成内存响应延时的不同。
已有的先准备好-先来先服务(First-Ready-First-Come-First-Served,FR-FCFS)调度方法是一种对内存控制器处访存请求进行调度的无序调度方法,其以请求到达的顺序为优先级,在当前所有待决的访存请求中选择为最先到达的访存请求进行不违反DRAM的时序和资源约束的内存操作(如存储体预充电、行激活、列访问等)。这种调度算法与有序调度器,即基础的先来先服务(First-Come-First-Served,FCFS)调度方法相比,最明显的好处是可以在等待完成最先到达的访存请求的预充电或行激活内存操作时,同时响应以其它存储体为目标的访存请求。但是,当最老的未决引用以不同于特定存储体中的活动行的行为目标时,即使该存储体仍然具有对其活动行的未决引用,FR-FCFS调度器也将对该存储体进行预充电,即当访存请求序列以相同存储体不同行作为访存地址交替到达DRAM内存时,FR-FCFS方法不能通过合理调度解决行冲突问题。而且,FR-FCFS调度逻辑复杂,需要大量硬件逻辑资源来完成调度任务,是面积密集型的,在最坏的情况下,需要在每个周期对DRAM控制器队列中的所有请求进行关联比较,因此需要为队列中的每个条目设置一组比较器。与仅需要简单FIFO队列的FCFS方法相比,实现FR-FCFS所需的面积会大很多。需要指出,FR-FCFS是一种通用访存调度方法,未能根据DNN领域的访存特征进行优化,效率比较低。
增加DNN处理器中直接内存访问控制器(Direct Memory Access Controllers,DMACs)的数量,并且合理安排DRAM的存储体分配也是一种技术方案。一般来说,随着DMAC数量的增加,处理器能同时向内存发出更多的访存请求,访存性能因此而提高,但如果没有合理分配每个DMAC访存的存储体,一味地增加DMAC的数量并不能提高性能。为了解决多个DMAC分配了相同的存储体而导致的访存冲突问题,该方法需要合理安排DNN输入、输出特征图以及权重等参数数据分布方式,将多个DMAC访存的数据分别布局到不同的bank中。这种方法需要有软件在数据的静态布局上做出配合。而即使有软件可以对被读数据的静态布局方式加以设定,但由于片上Cache的使用以及被读数据的局部性,使得Cache读miss时产生的读请求地址的连续性可能变差,导致采用DMAC方式下读延时的优化效果有限。
发明内容
1.要解决的技术问题
针对现有技术的不足,如果能够充分利用DNN处理器的访存请求的分布特征,以及利用DRAM的不均匀访存时间特性,对DNN处理器的访存请求流进行排序,使其尽量提升行缓冲命中率,是可以有效降低访存延时的。
2.技术方案
本发明提供了一种DNN处理器访存性能提升方法,旨在给定访存请求数目的情况下,利用DNN推断过程中的访存流读写特征,在硬件上重新排列访存请求序列,提升DRAM内存的行缓冲命中率,减少内存对访存请求序列的总体响应延时。该方法表现为排序单元,其硬件框图如图1所示,包括排序队列、访存请求分流模块、队列感知模块和多路选择器。
■所述排序队列,其作用是根据访存请求的内存行地址和读写属性将各个访存请求缓存在不同的队列中。队列中每个访存请求用3个字段组成的三元组表示:请求类型(读请求或写请求)、请求要访问的内存地址、数据(读请求该字段为空,写请求该字段为要写入的数据)。考虑到DNN任务是按层执行的,并且每层涉及的输入输出数据类型通常不超过4种,如卷积层和全连接层有三种数据:输入特征图、参数、输出特征图;池化层有两种数据:输入特征图、输出特征图;循环神经网络中隐藏层还需要输入上一时刻的反馈,其数据种类有4种。且相同类型的数据通常在内存中连续存储,因此可以将排序队列的个数N设置为4,其中有1个是写队列,3个读队列;N也可以设置为其它数目,但不应小于2。所有的排序队列均为FIFO队列。
■所述访存请求分流模块,所有的访存请求到达排序模块后先经分流模块按内存行地址和读写属性分流到不同的排序队列中,分流模块中设置分流记录表,表中为每个队列记录该队列的队尾访存请求的地址。
■所述队列感知模块,该模块感知队列的长度变化(用感知记录表项来记录)和时间变化(用定时器来记录),并决策选择将哪一队列的访存请求发往DRAM内存。感知记录表项由队列号和队列长度组成,记录了每个队列当前的长度。感知模块在初始化阶段还设置了两个阈值信息:队列中请求序列的长度阈值Thresholdlength、访存请求的年龄阈值Thresholdage。感知记录表记录每个队列的长度,当某队列长度达到长度阈值Thresholdlength,感知模块则控制多路选择器连通该队列并发送本队列中的所有请求。定时器个数与队列个数一致,初始化时设置所有的定时器计数初值为Thresholdage。当某队列的第一个访存请求到达时,感知模块启用该队列对应的定时器计数功能,直到计数值为0时发送信号给多路选择器,连通此队列让其发送本队列中的所有访存请求;当某队列被清空时,感知模块恢复相应定时器的计数初值为Thresholdage。
■所述多路选择器,其作用是在感知模块的控制下选择某一队列的输出通道将该队列中所有的访存请求发DRAM内存。
当一个访存请求R到达排序单元后,由排序策略判断进入哪个排序队列,并修改排序单元中分流记录表、感知记录表以及定时器的状态等,具体见以下步骤,如图2所示:
S1:访存请求R到达排序模块后先进入分流模块,转入步骤S2;
S2:如果分流记录表中暂无数据,说明请求R为第一个到达排序模块的访存请求,此时所有排序队列都为空队列,转入步骤S3;若否,则转入步骤S4;
S3:随机选择某一空队列Q,将请求R发往队列Q中,转入步骤S7,并发送一个启动计数信号给队列Q的定时器TQ;
S4:将请求R的地址与分流表中的记录一一对比,判断是否有某队列Q的队尾请求的bank地址和行地址与R的bank地址和行地址相同,若有,则转入步骤S7;若否,转入步骤S5;
S5:若记录表中仍有某队列的记录为空,说明还有空队列,则转入步骤S3;若否,转入步骤S6;
S6:根据优先级选择某一队列Q,将请求R发往队列Q中,其中优先级设置为:该队列的队尾请求与请求R的bank地址不同但行地址相同>该队列的队尾请求与请求R的bank地址不同且行地址也不同>该队列的队尾请求与请求R的bank地址相同但行地址不同,转入步骤S7;
S7:更新分流表中队列Q的队尾请求地址为该请求的地址,更新感知记录表中队列Q的队列长度,转入步骤S8;
S8:若队列Q的长度已达到阈值Thresholdlength,则发出队列已满的信号;
S9:在收到步骤S3'的定时完毕信号或步骤S8中队列已满信号之一时,将队列Q中所有请求发送给DRAM内存,并清除队列Q在队列感知模块中感知记录表和分流模块中分流记录表的信息,并发送一个停止计时信号给定时器TQ;
其中,队列Q的定时器TQ的工作流程如下:
S1':设置定时器TQ的计时初值为Thresholdage;
S2':当收到一个启动计时信号之后,启动TQ计时过程(每个时钟周期减1);
S3':定时器TQ的计时值变为0时,向步骤S9发出定时完毕信号,同时发出mux信号将队列Q中的所有请求都发往DRAM内存;
S4':定时器收到停止计时信号后停止TQ计时过程并转入步骤S1'。
3.有益效果
本发明的优点在于:①DNN各层的数据是以层为单位访问的,如果一层的计算未能结束,那么依赖于该层计算结果的下一层的计算任务就不能启动。即:虽然每一层中的访存请求到达内存控制器的顺序可能是乱序的,但是其总体上却是层间有序的。进一步地,即使层内访存请求是乱序的,但是这种乱序本身也仅仅是层内2-4种数据之间的乱序,通过分流的方式,可以让面向每种数据的访存请求之间的无序程度大为降低。②另外,从内存行缓冲区的角度看,位于某一行的多个列访存请求,无论其列地址是否连续,但都是命中该行缓冲区的,可以对这些列请求进行合并访存,从而大大减少行预充电(precharge)的时间。针对此特性,考虑到DNN模型每一层中的几种数据在内存中通常都是连续存储的,意味着层内每一种数据中的多个元素都是存储在单个内存bank的一行或几个连续Bank的行中的。每种数据对应的缓冲区中所有的访存请求,其在内存中的行地址是大概率相等的,这就会大大提升内存行缓冲命中率,进而有效降低内存对访存请求的响应延时。③通过队列长度阈值和年龄阈值的设定,可以兼顾效率和公平性,让总体访存请求的延时最低。
与FR-FCFS等访存调度方法相比,本发明对访存请求进行排序和调度,而不是对更细微的内存操作进行调度,因此逻辑更加简单,不需要占用太多的硬件资源和面积,与通用的访存调度方法相比,本发明针对于DNN领域,对降低DNN训练或推断过程的访存延时更有效。此外,本发明不需要在软件上考虑数据排布方式,只需利用DNN任务本身的访存特征来进行调度,不用对数据的内存地址做出细致的安排,与增加DMACs数量的方法相比,本发明对软件的要求更少。
附图说明
图1是排序单元及其内部基本组成的示意图;
图2是排序策略的具体步骤示意图;
图3是卷积层中一次卷积操作所涉及的输入特征图数据、权重数据和输出特征图数据在内存中的存放位置示意图;
图4是访存请求进行访存请求分流模块后分流记录表和感知记录表的信息更新情况;
图5是更多的访存请求进行排序单元后内部各模块的变化情况示意图;
图6是队列感知模块控制排序队列发出访存请求的情况示意图;
图7是排序前后的访存延时组成情况示意图;
具体实施方式
在下文中,将参考附图对本申请的具体实施例进行详细地描述,依照这些详细的描述,所属领域技术人员能够清楚地理解本申请,并能够实施本申请。在不违背本申请原理的情况下,各个不同的实施例中的特征可以进行组合以获得新的实施方式,或者替代某些实施例中的某些特征,获得其它优选的实施方式。
实施例1:
以卷积层的访存行为为例。一般来说,卷积层的输入特征图、权重等参数以及输出特征图数据都在内存中分别连续存储,本发明无需对这些数据的地址分布再做其它安排。一个数据在内存中的起始地址用三元组表示(b,r,c),其中b表示内存bank地址,r表示内存行地址,c表示内存列地址。如下图3所示,假定输入特征图数据(即Input)在内存中存储的首地址是(0,1,4),权重参数数据(即Weight)的首地址是(0,4,8),输出特征图数据(即Output)的首地址是(0,8,0)。对于输入特征图数据,其第一个数据Input[0]的地址是(0,1,4),第二个数据Input[1]的地址是(0,1,5),其它数据亦然。
在实际进行某一卷积层的计算任务时,DNN处理器并行读取该层的输入特征图和权重参数数据,并将输出特征图数据写入DRAM内存中,因此需要涉及对三种数据的访存请求。将输入特征图相关的访存请求记为I0、I1、I2、I3、……,参数相关的访存请求记为W0、W1、W2、W3、……,输出特征图相关的访存请求记为O0、O1、O2、O3、……。按三元组方式表示这些访存请求,如I0表示为(r,(0,1,4),null),O1表示为(w,(0,8,1),d1),其中r表示请求类型为读,w表示请求类型为写,null表示空数据,因为读请求不需要携带数据,d1表示其要写入的数据值。
根据这三种访存请求到达DRAM处的顺序构成了一个访存序列,为了DNN处理器的访存效率,本实例中考虑DNN处理器并行发出对这三种数据的访存请求,因此访存序列具有不确定性,这三个请求会相互干扰,交织到达内存。
假设原始访存序列为:
I0(r,(0,1,4),null),W0(r,(0,4,8),null),O0(w,(0,8,0),d0),I1(r,(0,1,5),null),W1(r,(0,4,9),null),O1(w,(0,8,1),d1),I2(r,(0,1,6),null),W2(r,(0,4,10),null),O2(w,(0,8,2),d2),I3(r,(0,1,7),null),W3(r,(0,4,11),null),O3(w,(0,8,3),d3),...
设置Thresholdage=5us,Thresholdlength=4。I0(r,(0,1,4),null)进入排序单元时,分流记录表为空,则随机进入队列0,更新分流记录表和感知记录表,并启动定时器0,如图4所示。
紧接着,W0(r,(0,4,8),null)进入排序队列,与I0(r,(0,1,4),null)访问内存不同行且仍有空队列,则随机进入队列1,更新分流记录表和感知记录表,并启动定时器1,O0(w,(0,8,0),d0)亦然,如图5(a)所示。I1(r,(0,1,5),null)进入排序单元时,与队列0的队尾请求访问内存相同行,则进入队列0,同时更新分流记录表和感知记录表,W1(r,(0,4,9),null)亦然,如图5(b)所示。其它访存请求按排序策略依次进入相应队列。此实例中假设排序单元受队列长度阈值Thresholdlength的限制,而非访存请求年龄阈值Thresholdage,即某一队列从空队列到队列满这段过程中,其定时器一直没有计时完毕。
当请求I3(r,(0,1,7),null)进入了排序单元时,队列0的长度为4,达到了队列长度阈值Thresholdlength,因此将队列0中的所有请求发往DRAM内存,如图6所示。
因此,经过排序单元后,排序后的访存序列变为:
I0(r,(0,1,4),null),I1(r,(0,1,5),null),I2(r,(0,1,6),null),I3(r,(0,1,7),null),W0(r,(0,4,8),null),W1(r,(0,4,9),null),W2(r,(0,4,10),null),W3(r,(0,4,11),null),O0(w,(0,8,0),d0),O1(w,(0,8,1),d1),O2(w,(0,8,2),d2),O3(w,(0,8,3),d3),...
两个访存序列在DRAM内存中的访存延时对比如图7所示。假设预充电和行激活这两个内存操作需要3个周期才能完成,列访问需要1个周期。在此实例中,这12个访存请求所构成的序列经过排序之后,在DRAM中的访存延时是未排序的访存序列的35.7%。其中,虽然访存请求在排序单元排序等待也会花费一定的时间,但是该过程在片上发生,此时间与DRAM延时相比非常短,可以忽略不计。
可见,本发明有效利用了DNN任务的三个访存特征:1,逐层执行,层间有序。此特征可以确保访存流的无序程度是有上限的,使得缓冲区设置的长度以及响应的排序逻辑的复杂度比较低;2,层内数据类型只有2-4种,使得缓冲区的数目通常设为4个即可;3,层类的若干种类型数据往往都是连续存储在一个或若干个内存行中的,这使得只要每种数据类型的访存请求位于同一行的概率是很大的,此时这些访存请求的列地址无论是否连续,都不影响内存行缓冲命中率。对这三个特征的有效利用,可以大大提升访存请求的内存行命中率,从而有效降低内存对访存请求的响应延时。
尽管在上文中参考特定的实施例对本申请进行了描述,但是所属领域技术人员应当理解,在本申请公开的原理和范围内,可以针对本申请公开的配置和细节做出许多修改。本申请的保护范围由所附的权利要求来确定,并且权利要求意在涵盖权利要求中技术特征的等同物文字意义或范围所包含的全部修改。
Claims (8)
1.一种深度神经网络推断处理器的访存性能提升方法,其特征在于:该方法包括排序队列、访存请求分流模块、队列感知模块和多路选择器;
所述排序队列根据访存请求的内存行地址和读写属性将各个访存请求缓存在不同的队列中;
所述访存请求分流模块将所有的访存请求按内存行地址和读写属性分流到不同的排序队列中,分流模块中设置分流记录表,表中为每个队列记录该队列的队尾访存请求的地址;
所述队列感知模块用于感知队列的长度变化(用感知记录表项来记录)和时间变化(用定时器来记录),并决策选择将哪一队列的访存请求发往DRAM内存;
所述多路选择器在感知模块的控制下选择某一队列的输出通道将该队列的访存请求发DRAM内存。
2.如权利要求1所述的一种深度神经网络推断处理器的访存性能提升方法,其特征在于:该方法包括如下的工作步骤:
S1:访存请求R到达排序模块后先进入分流模块,转入步骤S2;
S2:如果分流记录表中暂无数据,说明请求R为第一个到达排序模块的访存请求,此时所有排序队列都为空队列,转入步骤S3;若否,则转入步骤S4;
S3:随机选择某一空队列Q,将请求R发往队列Q中,转入步骤S7,并发送一个启动计数信号给队列Q的定时器TQ;
S4:将请求R的地址与分流表中的记录一一对比,判断是否有某队列Q的队尾请求的bank地址和行地址与R的bank地址和行地址相同,若有,则转入步骤S7;若否,转入步骤S5;
S5:若记录表中仍有某队列的记录为空,说明还有空队列,则转入步骤S3;若否,转入步骤S6;
S6:根据优先级选择某一队列Q,将请求R发往队列Q中,其中优先级设置为:该队列的队尾请求与请求R的bank地址不同但行地址相同>该队列的队尾请求与请求R的bank地址不同且行地址也不同>该队列的队尾请求与请求R的bank地址相同但行地址不同,转入步骤S7;
S7:更新分流表中队列Q的队尾请求地址为该请求的地址,更新感知记录表中队列Q的队列长度,转入步骤S8;
S8:若队列Q的长度已达到阈值Thresholdlength,则发出队列已满的信号;
S9:在收到步骤S3'的定时完毕信号或步骤S8中队列已满信号之一时,将队列Q中所有请求发送给DRAM内存,并清除队列Q在队列感知模块中感知记录表和分流模块中分流记录表的信息,并发送一个停止计时信号给定时器TQ;
其中,队列Q的定时器TQ的工作流程如下:
S1':设置定时器TQ的计时初值为Thresholdage;
S2':当收到一个启动计时信号之后,启动TQ计时过程(每个时钟周期减1);
S3':定时器TQ的计时值变为0时,向步骤S9发出定时完毕信号,同时发出mux信号将队列Q中的所有请求都发往DRAM内存;
S4':定时器收到停止计时信号后停止TQ计时过程并转入步骤S1'。
3.如权利要求1所述的一种深度神经网络推断处理器的访存性能提升方法,其特征在于:所述分流模块需要根据DNN任务的层中数据类型的数目、所在的内存行号和访存请求的读写属性来进行分流;所设置的分流记录表来记录队列号和队尾请求地址。
4.如权利要求1所述的一种深度神经网络推断处理器的访存性能提升方法,其特征在于:所述排序队列需要根据访存请求的内存行地址和读写属性将各个访存请求缓存在不同的队列中;队列中的每个访存请求用3个字段组成的三元组表示:请求类型(读请求或写请求)、请求要访问的内存地址和数据(读请求该字段为空,写请求该字段为要写入的数据),并且排序队列的个数不应小于2。
5.如权利要求1所述的一种深度神经网络推断处理器的访存性能提升方法,其特征在于:所述队列感知模块中队列长度阈值的作用在于防止内存行缓冲命中率过低;年龄阈值的设定,其作用是防止访存请求排队时间过长。
6.如权利要求1所述的一种深度神经网络推断处理器的访存性能提升方法,其特征在于:所述队列感知模块,其感知队列的长度变化(用感知记录表项来记录)和时间变化(用定时器来记录),并决策选择将哪一队列的访存请求发往DRAM内存;感知记录表项由队列号和队列长度组成,记录了每个队列当前的长度;感知记录表记录每个队列的长度,当某队列长度达到长度阈值,感知模块则控制多路选择器连通该队列并发送本队列中的所有请求。
7.如权利要求1所述的一种深度神经网络推断处理器的访存性能提升方法,其特征在于:所述队列感知模块,初始化时设置所有的定时器计数初值为Thresholdage;当某队列的第一个访存请求到达时,感知模块启用该队列对应的定时器计数功能,直到计数值为0时发送信号给多路选择器,连通此队列让其发送本队列中的所有访存请求;当某队列被清空时,感知模块恢复相应定时器的计数初值为Thresholdage。
8.如权利要求2所述的一种深度神经网络推断处理器的访存性能提升方法,其特征在于:所述步骤S6中,当新到达的访存请求均不与排序单元中所有的队列队尾请求访问同一bank同一行时,需要通过优先级来选出其中一个队列让该访存请求进入;其中,优先级设置为:该队列的队尾请求与请求R的bank地址不同但行地址相同>该队列的队尾请求与请求R的bank地址不同且行地址也不同>该队列的队尾请求与请求R的bank地址相同但行地址不同,其作用在于根据优先级选择出某队列中已存在的访存请求,其与当前请求R连续访问内存时,总体的访存延时比选择其它队列的都小,最大化降低访存延时。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210394533.7A CN114819124A (zh) | 2022-04-13 | 2022-04-13 | 一种深度神经网络推断处理器的访存性能提升方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210394533.7A CN114819124A (zh) | 2022-04-13 | 2022-04-13 | 一种深度神经网络推断处理器的访存性能提升方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114819124A true CN114819124A (zh) | 2022-07-29 |
Family
ID=82536523
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210394533.7A Pending CN114819124A (zh) | 2022-04-13 | 2022-04-13 | 一种深度神经网络推断处理器的访存性能提升方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114819124A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117312199A (zh) * | 2023-11-30 | 2023-12-29 | 杭州海康威视数字技术股份有限公司 | 多端口访问仲裁方法、装置、设备及存储介质 |
-
2022
- 2022-04-13 CN CN202210394533.7A patent/CN114819124A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117312199A (zh) * | 2023-11-30 | 2023-12-29 | 杭州海康威视数字技术股份有限公司 | 多端口访问仲裁方法、装置、设备及存储介质 |
CN117312199B (zh) * | 2023-11-30 | 2024-03-08 | 杭州海康威视数字技术股份有限公司 | 多端口访问仲裁方法、装置、设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107657581B (zh) | 一种卷积神经网络cnn硬件加速器及加速方法 | |
US8639902B2 (en) | Methods for sequencing memory access requests | |
CN107301455B (zh) | 用于卷积神经网络的混合立方体存储系统及加速计算方法 | |
US6088772A (en) | Method and apparatus for improving system performance when reordering commands | |
CN105068940B (zh) | 一种基于Bank划分的自适应页策略确定方法 | |
US7574573B2 (en) | Reactive placement controller for interfacing with banked memory storage | |
EP3729280B1 (en) | Dynamic per-bank and all-bank refresh | |
US20050091460A1 (en) | Method and apparatus for out of order memory scheduling | |
CN104699631A (zh) | Gpdsp中多层次协同与共享的存储装置和访存方法 | |
US20220374692A1 (en) | Interleaving memory requests to accelerate memory accesses | |
US10535393B1 (en) | Configuring dynamic random access memory refreshes for systems having multiple ranks of memory | |
CN113641603A (zh) | 一种基于axi协议的ddr仲裁与调度方法及系统 | |
CN101470678A (zh) | 基于突发乱序的存储器控制器、系统及其访存调度方法 | |
CN114819124A (zh) | 一种深度神经网络推断处理器的访存性能提升方法 | |
KR102588408B1 (ko) | 적응형 메모리 트랜잭션 스케줄링 | |
US7664907B1 (en) | Page stream sorter with dynamic binning | |
CN114444673A (zh) | 基于人工神经网络数据局部性的人工神经网络存储器系统 | |
CN103295627B (zh) | 相变存储器、数据并行写入方法及数据读取方法 | |
KR100328726B1 (ko) | 메모리 엑세스 시스템 및 그 제어방법 | |
US8484411B1 (en) | System and method for improving access efficiency to a dynamic random access memory | |
CN111078589B (zh) | 一种应用于深度学习计算的数据读取系统、方法及芯片 | |
CN108509151B (zh) | 一种基于dram内存控制器的行缓存方法和系统 | |
CN112259141B (zh) | 动态随机存取存储器的刷新方法及内存控制器、电子装置 | |
TWI721660B (zh) | 控制資料讀寫裝置與方法 | |
CN117389483B (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 |