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

一种累积系统和方法与流程

2022-09-07 13:27:23 来源:中国专利 TAG:


1.本技术涉及一种执行乘法/累加运算的系统和方法。


背景技术:

2.有各种类型的系统可以执行乘法和累加运算。例如,神经网络和矩阵乘法系统可以执行一个或多个乘法或累加运算。这些乘法和累加运算可以应用于各种可用计算机方案解决的数学问题。其中一些计算机方案可包括支持将多组数据组合在一起的累积缓冲器。
3.本技术讨论的系统和方法提供了一种改进的方法来执行乘法/累加运算。
4.申请内容
5.鉴于以上所述现有技术的缺点,本技术的目的在于提供一种执行乘法/累加运算的装置和方法。其中,所述方法包括:
6.接收数据以进行处理;
7.对所述接收到的数据执行乘法运算以生成相乘数据;
8.对所述相乘数据执行加法运算以生成一个结果;
9.将所述结果的至少一部分最低有效位存储在第一卷积核的累积缓冲器的第一区域中;以及
10.将所述结果的至少一部分剩余位存储在共享存储器中,其中,所述共享存储器与所述第一卷积核分离。
11.其中,所述装置包括:
12.第一卷积核,其包括:
13.第一乘法器,用于生成第一相乘数据;
14.第一加法器,用于基于所述第一相乘数据生成第一结果;以及
15.第一累积缓冲器,用于存储所述第一结果的至少一部分最低有效位;以及
16.共享存储器,其耦合到所述第一卷积核,用于存储所述第一结果的至少一部分最高有效位。
附图说明
17.参考以下附图描述了本技术的非限制性和非穷尽性实施例,除非另有说明,否则相同或相似的附图标记在各个附图中指代相同或相似的部件。
18.图1示出了一种用于执行乘法/累积运算的系统的一个实施例。
19.图2示出了一种累积缓冲器的一个实施例。
20.图3示出了一系列卷积核和相关联的共享存储器的一个实施例。
21.图4示出了用于执行乘法/累加运算的方法的一个实施例的流程图。
22.图5示出了一种计算设备的示例性框图。
具体实施方式
23.以下公开内容参考了构成本技术一部分的附图,在附图中以图解的方式示出了可实践本技术的具体实施方式。可以理解的是,在不脱离本技术范围的情况下,可以采用其他实施方式,也可以进行结构上的改变。说明书中提到的“一个实施例”、“实施例”、“示例性实施例”等表明所描述的实施例可以包括特定的特征、结构或特性,但不一定每个可能的实施例都包括所述特定的特征、结构或特性。并且,这些短语在不同的地方出现时,不一定指相同的实施例。此外,当结合实施例描述特定的特征、结构或特性时,本技术认为无论是否明确描述,可在本领域技术人员的知识范围内通过结合其他实施例以达成这种特征、结构或特性。
24.本技术公开的系统、设备和方法的实施方式可包括或采用专用或通用计算机,包括例如一个或多个处理器和系统存储器等计算机硬件,如本技术所讨论的。本技术公开范围内的实施方式还可包括用于携带或存储计算机可执行指令和/或数据结构的物理和其他计算机可读介质。这样的计算机可读介质可以是能够由通用或专用计算机系统访问的任何可用介质。存储计算机可执行指令的计算机可读介质是计算机存储介质(设备)。携带计算机可执行指令的计算机可读介质是传输介质。因此,作为示例而非限制,本技术的实施方式可以包括至少两种截然不同的计算机可读介质:计算机存储介质(设备)和传输介质。
25.计算机存储介质(设备)包括随机存取内存(ram)、只读存储器(rom)、带电可擦可编程只读存储器(eeprom)、只读光盘(cd-rom)、(例如,基于ram的)固态驱动器(ssd)、闪存、相变存储器(pcm)、其他类型的存储器、其他光盘存储器、磁盘存储或其他磁性存储设备,或可用于以计算机可执行指令或数据结构形式存储所需程序代码方式并可由通用或专用计算机访问的任何其他介质。
26.本技术公开的设备、系统和方法的实施方式可以通过计算机网络进行通信。“网络”被定义为能够在计算机系统和/或模块和/或其他电子设备之间传输电子数据的一个或多个数据链路。当信息通过网络或其他通信连接(无论是硬线、无线、或是硬线和无线的组合)传输或提供给计算机时,计算机将该连接视为传输介质。传输介质可以包括网络和/或数据链路,其可以用来携带以计算机可执行指令或数据结构形式存在的所需程序代码方式,并且可以由通用或专用计算机访问。上述内容的组合也应包括在计算机可读介质的范围内。
27.计算机可执行指令包括指令和数据等,当在处理器处执行时,使得通用计算机、专用计算机或专用处理设备执行某个或某组功能。计算机可执行指令可以是例如二进制文件、汇编语言等中间格式指令、甚或是源代码。尽管说明书使用了特定于结构特征和/或方法行为的语言描述了相关内容,但是应理解的是,所附的权利要求中定义的主题不一定限于说明书描述的特征或动作。相反,说明书所描述的特征和动作是实施权利要求的示例。
28.本领域技术人员将理解,本技术可在具有多种类型的计算机系统配置的网络计算环境中实施,包括个人计算机、台式计算机、笔记本电脑、消息处理器、手持设备、多处理器系统、微处理器式或可编程消费电子产品、网络个人计算机、微型计算机、大型计算机、移动电话、掌上电脑、平板电脑、传呼机、路由器、交换机、各种存储设备等。本技术也可以在分布式系统环境中实践,其中本地和远程计算机系统通过网络连接(通过硬线数据链路、无线数据链路或通过硬线和无线数据链路的组合),均执行任务。在分布式系统环境中,程序模块
可以位于本地和远程内存存储设备中。
29.此外,在适当的情况下,本技术所述的功能可以在以下一项或多项中执行:硬件、软件、固件、数字组件或模拟组件。例如,可以对一个或多个专用集成电路(asic)进行编程以执行本技术所述的一个或多个系统和过程。在整个描述和权利要求中使用某些术语来指代特定的系统组件。如本领域技术人员所将理解的那样,组件可以用不同的名称指代。本技术档无意区分名称不同而非功能不同的组件。
30.本技术的至少一些实施例针对的是包括存储在任何计算机可用介质上的这种(软件形式等的)逻辑的计算机程序产品。当这样的软件在一个或多个数据处理设备中执行时,使得设备如本技术所述那样运行。
31.本技术讨论的系统和方法可用于各种计算环境和过程,例如机器学习环境、神经网络、矩阵乘法过程等。如本技术所述,该系统和方法可以减少设备(例如处理设备或存储设备)使用的功率,并且在系统运行期间需要更少的内存存储空间。
32.图1示出了用于执行乘法/累加运算的系统100的一个实施例。系统100在本技术中可称为“卷积核”。在一些实施例中,系统100可以在需要长累积序列的任何设备、系统或环境中实现。在一些实施例中,系统100使用乘法器102对两个8位数(在本技术中也被称为“数据”)执行乘法运算。乘法器102输出一个16位数,传送给加法器104。如图1所示,加法器104与累积缓冲器106一起运行。在一些实施例中,累积缓冲器106是32位累积缓冲器。
33.累积缓冲器106可以作为缓冲器运行,并可在较长的时间内存储多个数据表项。例如,累积缓冲器106可将输入数据累积到特定数量的表项,例如32个表项。在特定示例中,数据1可以存储在累积缓冲器106的表项4中,数据2可以存储在累积缓冲器106的表项17中,等等。在一些实施方式中,不存在数据到累积缓冲器表项的特定映射。在特定的实施方式中,累积数据在累积缓冲器106内交错排列。在一些实施方式中,累积缓冲器106中的每个表项都是神经网络的一个通道。一个神经网络的特定卷积层可以具有任何数量的通道。
34.在一些实施方式中,单个累积缓冲器106可以支持与任一数量的通道相关联的数据。这样有利于更快地获取数据,因为来自多个通道的数据可以同时从累积缓冲器106中获取(而非较慢地按顺序获取数据)。例如,可以读取一次数据并存储在累积缓冲器106中。然后,可以同时(或在不同时间)(从累积缓冲器106)访问数据或将数据应用到多个通道(而不需要再次读取数据)。
35.图2示出了一种累积缓冲器200的一个实施例。如图2所示,累积缓冲器200具有三个称为“区域”的部分。累积缓冲器200的这些区域包括区域a 202、区域b 204以及区域c 206。在一些实施例中,每个区域包含特定表项中的一部分比特位。例如,如果累积缓冲器200中共有32位可用,那么区域a 202可以包括16个最低有效位,区域b 204可以包括之后8个最高有效位,区域c 206包括8个最高有效位。在其他实施例中,累积缓冲器200中可以有任一数量的比特位可用,且每个区域中可有任一数量的比特位。此外,可选实施例中,可以将累积缓冲器200分为任一数量的不同区域。
36.在一些实施方式中,需要大量的加法来填充32位缓冲器,例如215次加法。在一些实施例中,神经网络可能没有足够的步骤或活动来填充32位缓冲器(或者需要很长的时间来填充32位缓冲器)。在一些例子中,缓冲器开始填充区域a 202。当区域a 202被填充时,生成结转命令208(或活动),指示数据将开始存储在区域b 204中。类似地,当区域b 204被填
充时,生成结转命令210(或活动),指示数据将开始存储在区域c 206中。
37.一开始累积缓冲器200无需访问区域b 204或区域c 206,直到区域a 202被填充。在一些实施例中,当未使用区域b 204或区域c 206时,禁用每个未使用区域的时钟(例如,时钟信号)以减少功耗。在一些实施方式中,如果在没有数据活动时仍然启用时钟,可能需要大量的功率来产生不必要的时钟。因此,当不使用特定区域时禁用时钟可以节省功率。
38.当区域b 204或区域c 206需要存储数据时(例如,基于结转命令208或210),启用相应区域204、206的时钟以激活该区域的数据。例如,如果检测到结转命令208,那么启用区域b 204的时钟以在区域b 204中存储数据。但是,区域c 206的时钟保持禁用,直到检测到结转命令210。因此,本技术所述的系统和方法可以通过禁用所有未主动处理数据的区域的时钟来降低功耗。
39.图3示出了一系列300卷积核和相关联的共享存储器的一个实施例。在图3的示例中,显示了三个卷积核:第一卷积核302、第二卷积核304以及第三卷积核306。在特定的实施方式中,任一数量的卷积核都可以与本技术讨论的系统和方法一起使用。每个卷积核302、304、306包括乘法器308、加法器310和累积缓冲器312。在一些实施方式中,每个卷积核302、304、306都与共享存储器314耦合。如图3所示,共享存储器314可以包括任意数量的存储器段(或存储器部分)316、318、320和322,用于存储各种类型的数据。在一些实施例中,每个存储器段316、318、320和322都与卷积核302、304、306中的一个相关联。
40.在一些实施例中,累积缓冲器312包含区域a和b,如本技术就图2所讨论的。因此,与区域a和b相关联的数据存储在每个卷积核302、304、306内,以便快速访问该数据。在一些实施例中,与区域c相关联的数据存储在共享存储器314中,其可以位于每个卷积核302、304、306的外部。在图3的示例中,最常用的数据可以存储在每个卷积核302、304、306内的区域a和b中。使用频率可能较低的区域c的数据存储在单独的共享存储器314中。在一些实施例中,区域a、b和c的这种配置减少了每个卷积核302、304、306内所需的内存量。这种内存大小的减少,减少了用于实现卷积核302、304、306的硅的大小。在一些实施例中,这种硅尺寸的减少可以降低本技术所述的系统和方法的功耗。
41.在图3的示例中,当累积缓冲器312的结转命令传输到区域c时,更新共享存储器314(类似于就图2讨论的结转命令210)。在一些实施例中,对区域c的结转并不频繁发生,因此共享存储器314可以不是高性能的存储器组件。
42.在一些实施方式中,先入先出(fifo)缓冲器(未示出)可以位于每个卷积核302、304、306和共享存储器314之间。fifo缓冲器接收发送到共享存储器314的数据存储请求,并将这些请求按顺序进行缓冲处理。
43.在其他实施例中,系统和方法可以使用在每个卷积核302、304、306的累积缓冲器312中执行的排序器(未示出)而非fifo缓冲器。排序器可以向每个卷积核302、304、306提供一个特定的时间段(例如,时隙),在此期间,卷积核可以向共享存储器314输出一个结转信号。由于每个卷积核302、304、306在不同的时间发送结转信号,所以不需要fifo缓冲器。在一些实施例中,数据存储请求和其他数据在卷积核的指定时间段内从每个卷积核302、304、306发送到共享存储器314,由排序器管理。
44.尽管图3说明了使用多个卷积核302、304、306的示例环境,但是类似的系统和方法可用于其他类型的硬件和软件处理结构和系统。在一些实施例中,卷积核302、304、306可以
类似于图1中所示的卷积核。
45.图4示出了用于执行乘法/累加运算的方法400的一个实施例的流程图。该方法400首先接收402数据(或数据处理请求)。该方法对接收到的数据执行乘法运算404以生成相乘数据。然后,该方法400对相乘数据执行加法运算406以生成一个结果。该结果中的至少一部分最低有效位存储408在卷积核中。该方法还将该结果的至少一部分最高有效位存储410在位于卷积核之外的共享存储器中。在一些实施例中,响应于确定卷积核的累积缓冲器生成了结转命令,将该结果的至少一部分最高有效位存储410在位于卷积核之外的共享存储器中。
46.图4的示例是针对一个或多个卷积核讨论的。在其他实施例中,方法400可以与任何类型的硬件、软件、处理结构、数据处理系统等一起使用。
47.图5示出了一种计算设备500的示例性框图。计算设备500可用于执行各种过程,例如本技术所讨论的那些过程。例如,计算设备500可以执行本技术所讨论的计算设备和系统的任何功能或方法。计算设备500可以执行本技术所讨论的各种功能,并且可以执行一个或多个应用程序,例如本技术所述的应用程序或功能。计算设备500可以是各种计算设备中的任何一种,例如台式计算机、笔记本电脑、服务器计算机、手持计算机、平板计算机、可穿戴设备等。
48.计算设备500包括一个或多个处理器502、一个或多个内存设备504、一个或多个接口506、一个或多个大容量存储设备508、一个或多个输入/输出(i/o)设备510以及显示设备530,所有这些均耦合到总线512。处理器502包括一个或多个处理器或控制器,执行存储在内存设备504和/或大容量存储设备508中的指令。处理器502还可以包括各种类型的计算机可读介质,如高速缓冲存储器。
49.内存设备504包括各种计算机可读介质,例如易失性存储器(例如,随机存取存储器(ram)514)和/或非易失性存储器(例如,只读存储器(rom)516)。内存设备504还可以包括可重写式rom,如闪存。
50.大容量存储设备508包括各种计算机可读介质,例如磁带、磁盘、光盘、固态存储器(例如闪存)等。如图5所示的特定的大容量存储设备是硬盘驱动器524。大容量存储设备508中也可以包括各种驱动器,以实现对各种计算机可读介质的读取和/或写入。大容量存储设备508包括可移动介质526和/或非可移动介质。
51.i/o设备510包括可以向计算设备500输入数据和/或其他信息或从计算设备500检索数据和/或其他信息的各种设备。示例i/o设备510包括光标控制设备、键盘、按键板、麦克风、监视器或其他显示设备、扬声器、打印机、网络卡、调制解调器等。
52.显示设备530包括能够向计算设备500的一个或多个用户显示信息的任何类型的设备。示例显示设备530包括监视器、显示终端、视频投影设备等。
53.接口506包括可以使计算设备500与其他系统、设备或计算环境互动的各种接口。示例接口506可以包括任何数量的不同网络接口520,例如到局域网(lan)、广域网(wan)、无线网络和互联网的接口。其他接口包括用户接口518和外围设备接口522。接口506还可以包括一个或多个用户接口元素518。接口506还可以包括一个或多个外设接口,如打印机、指向设备(如鼠标、轨迹板或本领域普通技术人员现在已知的或后来发现的任何合适的用户界面)、键盘等的接口。
54.总线512可使处理器502、内存设备504、接口506、大容量存储设备508和i/o设备510彼此通信,以及使与总线512耦合的其他设备或组件彼此通信。总线512代表一种或多种类型的总线结构,如系统总线、pci总线、ieee总线、usb总线等。
55.出于说明的目的,程序和其他可执行程序组件在本技术中显示为离散块,但是此类程序和组件可以在不同时间驻留在计算设备500的不同存储组件中,并且由处理器502执行。或者,本技术所述的系统和过程可以在硬件或者是硬件、软件和/或固件的组合中实现。例如,可以对一个或多个专用集成电路(asic)进行编程以执行本技术所述的一个或多个系统和过程。
56.虽然本技术描述了本技术的各种实施例,但应理解,其仅以举例而非限制的方式提出。对相关领域的技术人员来说,显然可以在不背离本技术精神和范围的情况下对其进行形式和细节的各种改变。因此,本技术的广度和范围不应受到任何所描述的示例性实施例的限制,而应仅根据以下权利要求及其等效物来定义。本技术中的描述是出于说明和描述的目的而提出的,并非旨在详尽无遗,也无意于将公开内容限制在所公开的具体形式上。可以根据所公开的教学内容进行许多修改和变化。此外,需要说明的是,本技术中讨论的任何或所有替代实施方式都可以在任何需要的组合中使用,以形成本技术的其他混合实施方式。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

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

相关文献