一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种支持工作区和结果区切换的累加器双缓冲方法及装置与流程

2022-11-14 01:28:25 来源:中国专利 TAG:


1.本发明涉及高性能微处理器设计技术领域,具体而言,涉及一种支持工作区和结果区切换的累加器双缓冲方法及装置。


背景技术:

2.人工智能技术发展迅速,已在诸如指纹识别、语音处理等多个领域得到广泛应用,也在悄然地改变着人们的生活。神经网络是人工智能技术的基础。常用的神经网络模型如卷积神经网络(convolutional neural network,cnn)、循环神经网络(recurrent neural network,rnn)等通常由多层网络组成,每层包含大量的卷积与矩阵乘运算,需要占用较多的硬件资源。为了加速神经网络中的卷积与矩阵乘运算,学术界、工业界提出了脉动阵列结构。脉动阵列工作时,北端数据从北往南传输,西端数据从西往东传输,以数据流驱动脉动阵列内各基本单元完成矩阵乘法运算,并把中间累加结果发送给南侧的累加器缓冲进行累加并缓存。当收到脉动阵列控制器发来的卸载信号时,累加缓冲中的数据会写回到阵列外的局部数据存储器(local data memory,ldm)中。
3.现有的技术通常采用单累加器缓冲设计,即只有一个累加器缓冲。这种设计的缺点是当本轮计算结束,准备把累加结果写回到累加器缓冲时,必须确保当前累加器缓冲处于空闲状态,且条目被清0。如果累加器缓冲正在卸载数据,此时必须等待,直到累加器缓冲卸载完成并清0。这会增加累加结果写回的延迟。


技术实现要素:

4.为了解决上述问题,本技术实施例提供了一种支持工作区和结果区切换的累加器双缓冲方法及装置。
5.第一方面,本技术实时例提供了一种支持工作区和结果区切换的累加器双缓冲方法,包括如下步骤:s1:在未确定两个缓冲分别为何区时将处于空闲状态的一个缓冲作为工作区、将处于卸载状态的另一个缓冲作为结果区,在确定两个缓冲分别为何区时执行s2;s2:控制工作区进行累加运算并存储累加结果和控制结果区进行卸载数据;s3:在工作区的累加结果存储完毕时将该缓冲切换为结果区、在结果区数据卸载完毕并清0时将该缓冲切换为工作区。
6.优选的,步骤s1中具体包括:s11:分别获取两个缓冲的区属信息;s12:如果两个缓冲分别具有确定的区属信息则执行s2,如果两个缓冲没有确定的区属信息,则向下执行;s13:分别获取两个缓冲的状态信息;s14:将处于空闲状态的一个缓冲作为工作区、将处于卸载状态的另一个缓冲作为结果区。
7.优选的,控制工作区进行累加运算并存储累加结果具体包括:s21:给工作区发送缓冲地址;s22:控制工作区读取缓冲地址指向的第一预设条目中的源操作数;s23:获取脉动阵列中第一预设行计算的中间结果,将中间结果和源操作数进行累加运算;s24:将累加结果写入第一预设条目中。
8.优选的,控制结果区进行卸载数据具体包括:s25:给结果区发送卸载条目地址;s26:控制结果区读取卸载条目地址指向的第二预设条目中的卸载内容;s27:将第二预设条目中的卸载内容写回局部数据存储器中。
9.第二方面,本技术实施例提供了一种支持工作区和结果区切换的累加器双缓冲装置,包括确定模块,用以在未确定两个缓冲分别为何区时将处于空闲状态的一个缓冲作为工作区、将处于卸载状态的另一个缓冲作为结果区;累加器缓冲控制模块,用以控制工作区进行累加运算并存储累加结果和控制结果区进行卸载数据;切换模块,用以在工作区的累加结果存储完毕时将作为工作区的一个缓冲切换为结果区、在结果区数据卸载完毕并清0时将作为结果区的另一个缓冲切换为工作区。
10.优选的,所述确定模块包括第一信息获取单元,用以分别获取两个缓冲的区属信息;第二信息获取单元,用以在两个缓冲没有确定的区属信息时分别获取两个缓冲的状态信息;设定单元,用以将处于空闲状态的一个缓冲作为工作区、将处于卸载状态的另一个缓冲作为结果区。
11.优选的,所述累加器缓冲控制模块包括第一地址发送单元,用以给工作区发送缓冲地址;第一控制单元,用以控制工作区读取缓冲地址指向的第一预设条目中的源操作数;第一计算单元,用以获取脉动阵列中第一预设行计算的中间结果,将中间结果和源操作数进行累加运算;第一存储单元,用以将累加结果写入第一预设条目中。
12.优选的,所述累加器缓冲控制模块还包括第二地址发送单元,用以给结果区发送卸载条目地址;第二控制单元,用以控制结果区读取卸载条目地址指向的第二预设条目中的卸载内容;第二存储单元,用以将第二预设条目中的卸载内容写回局部数据存储器中。
13.第三方面,本技术实施例提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如第一方面或第一方面的任意一种可能的实现方式提供的方法的步骤。
14.第四方面,本技术实施例提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如第一方面或第一方面的任意一种可能的实现方式提供的方法的步骤。
15.本发明的有益效果为:如果没有确定两个缓冲分别为工作区、结果区中的一个时将处于空闲状态的一个缓冲作为工作区、将处于卸载状态的另一个缓冲作为结果区,如果确定了两个缓冲分布为工作区、结果区中的一个时执行s2,然后控制工作区进行累加运算,将累加结果存储起来,控制结果区进行卸载数据,最后在工作区的累加结果存储完毕时将作为工作区的一个缓冲切换为结果区、在结果区数据卸载完毕并清0时将作为结果区的另一个缓冲切换为工作区,支持一个缓冲处于累加并缓存模式,另一个缓冲处于卸载模式,相对单缓冲模式,累加结果不用等待缓冲数据卸载完成就可以直接与当前的缓冲进行累加并写入,因此可以隐藏累加结果写回的延迟,提高脉动阵列的性能。
附图说明
16.为了更清楚地说明本技术实施例中的技术方案,下面将对实施例中所需使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
17.图1为本技术实施例提供的一种支持工作区和结果区切换的累加器双缓冲方法的流程示意图;图2为本技术实施例提供的一种支持工作区和结果区切换的累加器双缓冲装置的结构示意图;图3为本技术实施例提供的一种电子设备的结构示意图;图4为本技术实施例提供的一种支持工作区和结果区切换的累加器双缓冲方法中的双累加器缓冲示意图。
具体实施方式
18.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述。
19.在下述介绍中,术语“第一”、“第二”仅为用于描述的目的,而不能理解为指示或暗示相对重要性。下述介绍提供了本技术的多个实施例,不同实施例之间可以替换或者合并组合,因此本技术也可认为包含所记载的相同和/或不同实施例的所有可能组合。因而,如果一个实施例包含特征a、b、c,另一个实施例包含特征b、d,那么本技术也应视为包括含有a、b、c、d的一个或多个所有其他可能的组合的实施例,尽管该实施例可能并未在以下内容中有明确的文字记载。
20.下面的描述提供了示例,并且不对权利要求书中阐述的范围、适用性或示例进行限制。可以在不脱离本技术内容的范围的情况下,对描述的元素的功能和布置做出改变。各个示例可以适当省略、替代或添加各种过程或组件。例如所描述的方法可以以所描述的顺序不同的顺序来执行,并且可以添加、省略或组合各种步骤。此外,可以将关于一些示例描述的特征组合到其他示例中。
21.请参阅图1。图1是本技术实施例提供的一种支持工作区和结果区切换的累加器双
缓冲方法的流程示意图。在本技术实施例中,方法包括如下步骤:s1:在未确定两个缓冲分别为何区时将处于空闲状态的一个缓冲作为工作区、将处于卸载状态的另一个缓冲作为结果区,在确定两个缓冲分别为何区时执行s2;s2:控制工作区进行累加运算并存储累加结果和控制结果区进行卸载数据;s3:在工作区的累加结果存储完毕时将该缓冲切换为结果区、在结果区数据卸载完毕并清0时将该缓冲切换为工作区。
22.在本技术实施例中,本技术中提出双累加器缓冲设计,并使两个缓冲交替工作,即一个缓冲用作工作区,另一个缓冲用作结果区,从而隐藏累加结果写回延迟。在需要将累加结果写到累加起缓冲时,需要确保缓冲处于空闲状态,本技术中设有两个缓冲,开始时如果无法确定两个缓冲分布为何区,即无法确定两个缓冲分布为工作区、结果区其中的一个,则首先需要分别确定两个缓冲分布为何区,将处于空闲状态的一个缓冲作为工作区、将处于卸载状态的另一个缓冲作为结果区,如果两个缓冲分布可以确定为何区,则可以直接执行s2。
23.在一种可实施方式中,步骤s1中具体包括:s11:分别获取两个缓冲的区属信息;s12:如果两个缓冲分别具有确定的区属信息则执行s2,如果两个缓冲没有确定的区属信息,则向下执行;s13:分别获取两个缓冲的状态信息;s14:将处于空闲状态的一个缓冲作为工作区、将处于卸载状态的另一个缓冲作为结果区。
24.在本技术实施例中,如果两个缓冲分别具有确定的区属信息,即如果一个缓冲为工作区、另一个缓冲为结果区,则一个缓冲的区属信息为工作区、另一个的区属信息为结果区,如果两个缓冲均没有确定的区属信息,则分别获取两个缓冲对应的状态信息,根据状态信息确定缓冲为何区,处于空闲状态的一个缓冲作为工作区,处于卸载状态的另一个缓冲作为结果区。
25.在一种可实施方式中,控制工作区进行累加运算并存储累加结果具体包括:s21:给工作区发送缓冲地址;s22:控制工作区读取缓冲地址指向的第一预设条目中的源操作数;s23:获取脉动阵列中第一预设行计算的中间结果,将中间结果和源操作数进行累加运算;s24:将累加结果写入第一预设条目中。
26.在一种可实施方式中,控制结果区进行卸载数据具体包括:s25:给结果区发送卸载条目地址;s26:控制结果区读取卸载条目地址指向的第二预设条目中的卸载内容;s27:将第二预设条目中的卸载内容写回局部数据存储器中。
27.在本技术实施例中,双累加器缓冲是两个位宽、深度都相同的缓冲。缓冲具有一读一写两个端口,支持一个缓冲处于累加并缓存模式(简称累加缓冲,也称为工作区),即根据累加器缓冲控制逻辑提供的缓冲地址,读取对应条目的源操作数,与脉动阵列最南一行计算的中间结果进行累加,累加结果写入原条目;另一个缓冲处于卸载数据并清0模式(简称
卸载缓冲,也称为结果区),即根据累加器缓冲控制逻辑产生的卸载条目地址,将对应的条目内容写回ldm。当两个缓冲完成当前任务,即卸载缓冲中的数据已经写回ldm并清0,累加缓冲完成全部的中间结果累加,并写入累加缓冲,累加器缓冲控制逻辑将对两个缓冲进行切换。原累加缓冲切换成卸载缓冲,在收到累加器缓冲控制逻辑发来的卸载信号时对数据进行卸载;原卸载缓冲变成累加缓冲,当脉动阵列完成计算后,对中间结果进行累加并缓存。
28.参见图4,图4为本技术实施例提供的一种支持工作区和结果区切换的累加器双缓冲方法中的双累加器缓冲示意图。两个缓冲具有相同的位宽与深度,在工作区与结果区之间来回切换。初始化时,两个缓冲都被清0,处于空闲模式。当一轮计算结束时,累加器缓冲控制逻辑选择缓冲0作为累加缓冲,累加后的结果被写入缓冲0。此时,缓冲0是工作区,缓冲1处于空闲状态。当收到卸载信号时,缓冲0变成结果区,缓冲0的内容被写入ldm。缓冲1接收脉动阵列发来的中间结果,累加后写入缓冲1,此时缓冲1变成工作区。当中间结果累加结束,并写入缓冲1后,缓冲1变成结果区,准备卸载数据;当缓冲0的内容全部写回ldm并清0后,缓冲0变成工作区,准备累加结果并缓存。累加器缓冲控制逻辑根据该规则对两个缓冲进行切换。双累加器缓冲支持一个缓冲处于累加并缓存模式,另一个缓冲处于卸载模式。两个模式由控制逻辑进行切换。相对单缓冲模式,中间结果不用等待缓冲数据卸载完成就可以直接与当前的累加缓冲进行累加并写入,因此可以隐藏累加结果写回的延迟,提高脉动阵列的性能。
29.下面将结合附图2,对本技术实施例提供的支持工作区和结果区切换的累加器双缓冲装置进行详细介绍。需要说明的是,附图2所示的支持工作区和结果区切换的累加器双缓冲装置,用于执行本技术图1所示实施例的方法,为了便于说明,仅示出了与本技术实施例相关的部分,具体技术细节未揭示的,请参照本技术图1所示的实施例。
30.请参见图2,图2是本技术实施例提供的一种支持工作区和结果区切换的累加器双缓冲装置的结构示意图。如图2所示,装置包括确定模块201,用以在未确定两个缓冲分别为何区时将处于空闲状态的一个缓冲作为工作区、将处于卸载状态的另一个缓冲作为结果区;累加器缓冲控制模块202,用以控制工作区进行累加运算并存储累加结果和控制结果区进行卸载数据;切换模块203,用以在工作区的累加结果存储完毕时将作为工作区的一个缓冲切换为结果区、在结果区数据卸载完毕并清0时将作为结果区的另一个缓冲切换为工作区。
31.在一种可实施方式中,所述确定模块201包括第一信息获取单元,用以分别获取两个缓冲的区属信息;第二信息获取单元,用以在两个缓冲没有确定的区属信息时分别获取两个缓冲的状态信息;设定单元,用以将处于空闲状态的一个缓冲作为工作区、将处于卸载状态的另一个缓冲作为结果区。
32.在一种可实施方式中,所述累加器缓冲控制模块202包括第一地址发送单元,用以给工作区发送缓冲地址;第一控制单元,用以控制工作区读取缓冲地址指向的第一预设条目中的源操作
数;第一计算单元,用以获取脉动阵列中第一预设行计算的中间结果,将中间结果和源操作数进行累加运算;第一存储单元,用以将累加结果写入第一预设条目中。
33.在一种可实施方式中,所述累加器缓冲控制模块202还包括第二地址发送单元,用以给结果区发送卸载条目地址;第二控制单元,用以控制结果区读取卸载条目地址指向的第二预设条目中的卸载内容;第二存储单元,用以将第二预设条目中的卸载内容写回局部数据存储器中。
34.本领域的技术人员可以清楚地了解到本技术实施例的技术方案可借助软件和/或硬件来实现。本说明书中的“单元”、“模块”是指能够独立完成或与其他部件配合完成特定功能的软件和/或硬件,其中硬件例如可以是现场可编程门阵列(field-programmable gate array,fpga)、集成电路(integrated circuit,ic)等。
35.本技术实施例的各处理单元和/或模块,可通过实现本技术实施例的功能的模拟电路而实现,也可以通过执行本技术实施例的功能的软件而实现。
36.参见图3,其示出了本技术实施例所涉及的一种电子设备的结构示意图,该电子设备可以用于实施图1所示实施例中的方法。如图3所示,电子设备300可以包括:至少一个中央处理器301,至少一个网络接口304,用户接口303,存储器305,至少一个通信总线302。
37.其中,通信总线302用于实现这些组件之间的连接通信。
38.其中,用户接口303可以包括显示屏(display)、摄像头(camera),可选用户接口303还可以包括标准的有线接口、无线接口。
39.其中,网络接口304可选的可以包括标准的有线接口、无线接口(如wi-fi接口)。
40.其中,中央处理器301可以包括一个或者多个处理核心。中央处理器301利用各种接口和线路连接整个电子设备300内的各个部分,通过运行或执行存储在存储器305内的指令、程序、代码集或指令集,以及调用存储在存储器305内的数据,执行终端300的各种功能和处理数据。可选的,中央处理器301可以采用数字信号处理(digital signal processing,dsp)、现场可编程门阵列(field-programmable gate array,fpga)、可编程逻辑阵列(programmable logic array,pla)中的至少一种硬件形式来实现。中央处理器301可集成中央中央处理器(central processing unit,cpu)、图像中央处理器(graphics processing unit,gpu)和调制解调器等中的一种或几种的组合。其中,cpu主要处理操作系统、用户界面和应用程序等;gpu用于负责显示屏所需要显示的内容的渲染和绘制;调制解调器用于处理无线通信。可以理解的是,上述调制解调器也可以不集成到中央处理器301中,单独通过一块芯片进行实现。
41.其中,存储器305可以包括随机存储器(random access memory,ram),也可以包括只读存储器(read-only memory)。可选的,该存储器305包括非瞬时性计算机可读介质(non-transitory computer-readable storage medium)。存储器305可用于存储指令、程序、代码、代码集或指令集。存储器305可包括存储程序区和存储数据区,其中,存储程序区可存储用于实现操作系统的指令、用于至少一个功能的指令(比如触控功能、声音播放功能、图像播放功能等)、用于实现上述各个方法实施例的指令等;存储数据区可存储上面各
个方法实施例中涉及到的数据等。存储器305可选的还可以是至少一个位于远离前述中央处理器301的存储装置。如图3所示,作为一种计算机存储介质的存储器305中可以包括操作系统、网络通信模块、用户接口模块以及程序指令。
42.在图3所示的电子设备300中,用户接口303主要用于为用户提供输入的接口,获取用户输入的数据;而中央处理器301可以用于调用存储器305中存储的支持工作区和结果区切换的累加器双缓冲应用程序,并具体执行以下操作:s1:在未确定两个缓冲分别为何区时将处于空闲状态的一个缓冲作为工作区、将处于卸载状态的另一个缓冲作为结果区,在确定两个缓冲分别为何区时执行s2;s2:控制工作区进行累加运算并存储累加结果和控制结果区进行卸载数据;s3:在工作区的累加结果存储完毕时将该缓冲切换为结果区、在结果区数据卸载完毕并清0时将该缓冲切换为工作区。
43.本技术还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述方法的步骤。其中,计算机可读存储介质可以包括但不限于任何类型的盘,包括软盘、光盘、dvd、cd-rom、微型驱动器以及磁光盘、rom、ram、eprom、eeprom、dram、vram、闪速存储器设备、磁卡或光卡、纳米系统(包括分子存储器ic),或适合于存储指令和/或数据的任何类型的媒介或设备。
44.需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本技术并不受所描述的动作顺序的限制,因为依据本技术,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本技术所必须的。
45.在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
46.在本技术所提供的几个实施例中,应该理解到,所揭露的装置,可通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些服务接口,装置或单元的间接耦合或通信连接,可以是电性或其它的形式。
47.作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
48.另外,在本技术各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
49.集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储器中。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储器中,包括若干指令用以使得一台计算机设备(可为
个人计算机、服务器或者网络设备等)执行本技术各个实施例方法的全部或部分步骤。而前述的存储器包括:u盘、只读存储器(read-only memory, rom)、随机存取存储器(random access memory,ram)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
50.本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通进程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储器中,存储器可以包括:闪存盘、只读存储器(read-only memory, rom)、随机存取器(random access memory,ram)、磁盘或光盘等。
51.以上者,仅为本公开的示例性实施例,不能以此限定本公开的范围。即但凡依本公开教导所作的等效变化与修饰,皆仍属本公开涵盖的范围内。本领域技术人员在考虑说明书及实践这里的公开后,将容易想到本公开的其实施方案。本技术旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未记载的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的范围和精神由权利要求限定。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献