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

用在处理设备中的装置及用于人工神经网络的装置和方法与流程

2022-03-01 21:10:01 来源:中国专利 TAG:


1.本公开内容属于神经网络领域,并且更具体地,涉及增加基于处理器的神经网络计算。


背景技术:

2.在机器学习中,卷积神经网络(cnn或convnet)是一种前馈人工神经网络(ann),在前馈人工神经网络(ann)中,其神经元之间的连接模式受到动物视觉皮层组织的启发。单个皮层神经元对被称为感受野的受限空间区域中的刺激做出反应。不同神经元的感受野部分交叠使得它们平铺了视野。单个神经元对其感受野内的刺激的反应可以通过卷积运算在数学上进行近似。卷积网络受到生物过程的启发,并且是多层感知的变体,旨在使用最少量的预处理。它们在图像和视频识别、推荐系统和自然语言处理方面有着广泛的应用。卷积神经网络也可以称为移位不变或空间不变人工神经网络(siann),这个命名基于其共享权重架构和平移不变特征。
3.感测和控制应用可以受益于采用ann的算法的应用。然而,可用于大批量成本敏感性应用的紧凑型数字信号处理器(dsp)和微控制器(uc)设计在执行ann计算时具有差的性能。这样的设备的有限存储器可以意味着ann是使用打包/压缩的子字数据来实现的。不幸地是,解包这样的数据可以引起紧凑型uc和dsp系统的全字指令集/对齐字指令集和顺序流水线微体系结构不适于的流地址生成、聚集(gather)或(重新)格式化操作。因此,在执行ann计算时,仅一小部分处理能力可以用于有用的有效载荷计算(例如乘法/累加、最小值/最大值等)。紧凑型uc和dsp系统的处理资源(和功率/能量)被低效地用于使用全字算术/逻辑运算解包窄子字数据。这种性能瓶颈限制了在采用这种紧凑型uc的感测/控制设备中应用其他极具吸引力的ann算法的范围。
4.使用包括打包/解包和分散/聚集存储器抽取(fetch)操作的扩展的单指令、多数据(simd)指令集来实现在中央处理单元(cpu)上执行ann算法。然而,这些方法并不总是不适用于紧凑型uc。例如,需要指令级并行性来掩盖聚集/分散存储器抽取操作的延迟。紧凑型uc设计的区域和功率限制排除了指令级并行性,从而大大降低了这样的指令集扩展的潜在价值。此外,紧凑型uc设计中通常采用的节约型载荷和存储微体系结构不能直接地支持分散/聚集解包和打包指令所需的多种源和目标指令格式。支持这样的操作的扩展(例如,额外的寄存器文件端口、复杂的流水线停顿/漏极逻辑等)直接影响关键路径逻辑元件,因此相关联的边缘区域和功率成本可能会不成比例地高。此外,可能不需要有效使用simd分散/聚集解包和打包指令所需的通用simd指令。因此,ann加速的有效边缘区域和功率成本将与用于有效打包和解包过程的硬件更严格地相关联。
5.此外,使用流式直接存储器访问(dma)的松散耦合加速器外围设备通常用于解决针对特定信号处理应用的性能问题。然而,对于紧凑型uc系统中的ann加速,松散耦合加速器外围设备无法显著地减少聚集和解包数据的瓶颈,并且在紧凑型uc系统中进出协处理器的低延迟dma通常不可用。这可以显著降低在紧凑型uc系统中加速ann算法的能力,因为协
处理器资源在完成ann计算之前等待数据聚集和解包,从而显著增加执行ann算法的时间。


技术实现要素:

6.根据本发明的一个方面,提供了一种用在处理设备中的装置。所述装置包括:处理器,其被配置成处理具有预定义数据结构的数据;存储器抽取装置,其耦接至处理器,并且被配置成:确定针对处理器的打包数据的地址,其中,打包数据被存储在耦接至处理器的存储器装置上;以及基于打包数据的地址向处理器提供输出数据,其中,输出数据是根据预定义数据结构来被配置的。
7.根据本发明的另一个方面,提供了一种用于人工神经网络的装置。所述装置包括:微控制器,其被配置成耦接至存储器装置并且被配置成处理数据流,其中,数据流被配置成匹配预定义精度、预定义布局或预定义数据结构中的至少一个;数据流抽取装置,其耦接至存储器装置和微控制器,并且被配置成处理被存储在存储器装置上的数据并且向微控制器提供连续输出流,其中,数据流抽取装置包括:地址生成器部件,其被配置成生成被存储在存储器装置上的数据的多个数据地址;数据抽取部件,其被配置成基于多个数据地址而从存储器装置引入所选择的数据;以及数据格式化部件,其被配置成向微控制器提供连续输出流。
8.根据本发明的又另一个方面,提供了一种用于人工神经网络的方法。所述方法包括:通过存储器抽取装置,确定被存储在存储器装置上的打包数据的多个地址以及抑制指示符,其中,抑制指示符标识与存储器装置中的被生成打包数据相关联的多个地址的子集;通过存储器抽取装置,基于多个地址和抑制指示符而从存储器装置抽取被存储打包数据;通过存储器抽取装置,基于抑制指示符而生成被生成打包数据;以及通过存储器抽取装置,基于微控制器的预定义数据结构,根据被存储打包数据或被生成打包数据来构建格式化数据。
附图说明
9.图1是示出了根据所描述的各个方面(实施方式)的卷积神经网络(cnn)系统的框图。
10.图2是示出了根据所描述的各个方面的cnn的框图。
11.图3示出了根据所描述的各个方面的卷积运算和一些相关部件的方面的图。
12.图4示出了根据所描述的各个方面的池化操作的方面的图。
13.图5示出了根据所描述的各个方面的卷积和池化操作的方面的另一图。
14.图6是示出根据所描述的各个方面的紧密耦接至cpu的一个或更多个数据抽取单元的框图。
15.图7是示出根据所描述的各个方面的数据抽取单元的各个部件的框图。
16.图8示出了根据所描述的各个方面的用于其中相邻核足迹(kernel footprint)覆盖在存储器布局上的二维卷积过程的输入阵列的存储器布局。
17.图9示出了表示根据所描述的各个方面的由数据抽取单元的部件生成的各个输入/输出值的表。
18.图10是图示根据所描述的各个方面的处理流程的流程图。
具体实施方式
19.现在将参照附图描述本公开内容,其中相同的附图标记始终用于指代相同的元件,并且其中,所示的结构和装置不一定按比例绘制。如本文所使用的,术语“部件”、“系统”,“接口”等旨在指代计算机相关实体、硬件、软件(例如,执行中的)和/或固件。例如,部件可以是处理器、在处理器上运行的进程、控制器、对象、可执行文件、程序、存储设备和/或具有处理设备的计算机。通过说明的方式,在服务器上运行的应用和服务器也可以是部件。一个或更多个部件可以驻留在进程内,并且部件可以位于一个计算机上以及/或者分布在两个或更多个计算机之间。本文可以描述一组元件或一组其他部件,其中术语“组”可以被解释为“一个或更多个”。
20.此外,例如这些部件可以从其上存储有各种数据结构例如具有模块的各种计算机可读存储介质执行。部件可以通过局部和/或远程进程例如根据具有一个或更多个数据包(例如,来自与本地系统、分布式系统中的另一部件进行交互和/或通过信号跨网络例如因特网、局域网、广域网或类似网络与其他系统进行交互的一个部件的数据)的信号进行通信。
21.作为另一示例,部件可以是具有由电动或电子电路系统操作的机械部件提供的特定功能的装置,其中电动或电子电路系统可以通过由一个或更多个处理器执行的软件应用或固件应用来操作。一个或更多个处理器可以在装置的内部或外部,并且可以执行软件或固件应用的至少一部分。作为又一示例,部件可以是通过电子部件而不是机械部件来提供特定功能的装置;电子部件可以在其中包括一个或更多个处理器,以执行至少部分地赋予电子部件的功能的软件和/或固件。
22.词语示例性的使用旨在以具体方式来呈现构思。如本技术所使用的,术语“或”旨在意指包含性的“或”而不是排他性的“或”。也就是说,除非另外指定或根据上下文是清楚的,否则“x采用a或b”旨在意指自然包含性排列中的任何一个。也就是说,如果x采用a;x采用b;或者x采用a和b,则在任何前述情况下都满足“x采用a或b”。另外,除非另外指定或根据上下文清楚地指向单数形式,否则在本技术和所附权利要求中所使用的冠词“一个(a)”和“一种(an)”通常应当被解释为意指“一个或更多个”。此外,就具体实施方式和权利要求书中任一者中使用的术语“包括(including)”、“包括(includes)”、“具有(having)”、“具有(has)”、“具有(with)”或其变型而言,这些术语旨在以类似于术语“包括(comprising)”的方式包含在内。
23.考虑到执行ann算法的紧凑型微控制器(uc)的上述缺陷,各种方面/实施方式使得能够加速紧凑型uc系统中的ann算法计算。用作本公开内容的解决方案的方面/实施方式增加了在紧凑型uc系统上实现的ann算法的吞吐量和功率效率。本文描述的实施方式或方面在使cpu或协处理器资源的使用最小化的同时加速针对ann计算的聚集和解包数据的执行。因此,所公开的方法和系统可以提高在紧凑型uc系统上实现的ann算法的处理速度和功率效率。例如,可以通过将输出数据流送至主cpu的紧密耦接的存储器抽取单元来加速执行ann算法(或类似数值计算)的紧凑型uc系统中的数据抽取和解包瓶颈。存储器抽取单元紧密耦接至主cpu,并且被配置成与主cpu上的ann计算的执行并行地抽取和解包主cpu的数据。这加速了稀疏乘积和/2d/1d滑动窗口卷积计算的内循环的参数和激活抽取,该卷积计算包括用于执行ann算法的大部分计算的大量计算。
24.一个或更多个存储器抽取单元各自被配置成加速从打包或压缩的子字数据中抽取ann计算所需的输入流,其输入流的存储位置、布局和打包格式可由主cpu通过配置寄存器/存储器来编程。来自一个或更多个存储器抽取单元的聚集和解包的数据以适合在cpu算术/逻辑指令中直接使用的格式被写入由主cpu可读的输出寄存器/存储器。聚集的和解包的数据随后可以通过被配置成完成ann计算的主cpu从输出寄存器/存储器中抽取,从而减轻了主cpu解包、抽取或格式化数据的需求并且增加了ann算法的速度。即使在cpu等待状态期间,存储器抽取单元还被配置成与cpu活动同时抽取新数据项。这进一步有助于ann算法的加速增益。下面参照附图进一步描述本公开内容的附加方面和细节。
25.图1示出了cnn系统100的示例,该cnn系统100可以可靠地将图像分类成特定类别/类,从而允许驾驶员辅助系统采取关键决定,例如降低引擎速度、制动、停止或涉及机动车、其他车辆或设备的其他功能。例如,cnn系统100可以包括一个或更多个传感器102,所述一个或更多个传感器102向cnn 104提供数据集作为输入,该cnn 104包括具有各种部件的多个不同的计算/处理层。cnn 104然后向一个或更多个adas检测器106至112(例如,行人检测器106、汽车检测器108、自行车或摩托车检测器110、交通标志检测器112或其他检测器)提供输出,所述一个或更多个adas检测器检测与对应于任何一个检测器106至112的数据的类别(行人特征、汽车功能、自行车功能、交通标志特征等)相关的状况是否存在。基于给定的检测器是否根据cnn的输出数据确定存在状况,例如检测器106至112可以用信号通知应用,例如碰撞警告116、停止/减慢的制动功能、启动/停止的某物或者与用于响应于作为自动车辆导航或其他系统/设备功能的一部分的状况的功能相关联的其他应用功能。
26.在一个示例中,传感器102可以包括图像捕获设备,例如相机、雷达、光检测和测距(lidar)、其他图像扫描设备或用于检测和处理来自图像——例如在来自图像捕获设备的信号上接收的那些图像——的数据的其他传感器。来自传感器102的数据集然后可以被提供至cnn 104以采取信号,并且然后尝试找出信号呈现的内容。例如,在高速公路上行驶附接有前置摄像头传感器的汽车可以返回交通标志的图片/图像,如果有的话,则可以返回灯柱的图片/图像,并且如果有的话,或者如果前面有汽车正在行驶,则汽车的图片也可能将作为传感器数据的一部分返回。
27.通常,在其中驾驶员坐在后座的自动驾驶系统中,人将采取许多决定,例如基本上由自动导航/引航系统完成的减速、应用制动器、鸣喇叭或其他动作,其中专用计算机处理部件在板上,并且对于他们而言决定接下来要做什么,重要的是什么要了解位于他们前面的是什么。因此,系统和cnn104的主要目的是确定这些图片/图像中包含的内容,并且然后基于这些图片中的发现的内容来实现进一步的决定。
28.例如,如果对一个或更多个图像/图像的分析指示图像中——在约100米远的道路中存在人——的状况/模式,则车载计算机明显地减速并且可能相应地使车辆停止。替选地,如果使确定基于图像内的状况加速,则其将简单地引导车辆来改变车道,并且然后加速。因此,这些决定或其他决定可以从作为由系统返回的特征模式的图像内分析的数据的性质中导出,并且然后针对图像中是否存在的任何数目的给定状况进行分析。在学习以检测可能的变体以识别各种环境中的状况的同时,通过对过滤器或核过滤器的初始训练,该系统可以是鲁棒的。
29.cnn 104可以包括一系列不同的计算,这些计算可以作为cnn计算层彼此连接和依
赖,包括用于将给定层的计算结果提供至下一层的各种部件。这些层在图1中可以被看作cnn 104块中具有不同的阴影的各个层。在计算通道的端部处出现输出(例如,pp、pcar、pcycle、pts),其可以包括来自图像或图像的扇区子集内的各种可能状况中的不同概率。例如,通过将这些概率相加,获得的值可以等于一(1)。然后,具有最大概率的对象类型或类别/类类型可以是图像或图像扇区对应于由一个或更多个检测器106至112这样检测并且由一个或更多个应用114和116作用的对象类型或类别/类类型。
30.例如,如果图像包含行人,则行人adas检测器106可以被配置成将信号发送至制动系统以应用制动器。可以通过一个或更多个检测器106至112在图像内检测到任何数目的项,而不仅仅是作为示例的行人。此外,响应于由卷积神经网络系统检测到的对象/类别类型的模式,可以提供其触发部件以基于一个或更多个预定义标准做出的进一步决定的信号。例如,行人检测器可以向碰撞警告部件/系统发送指示检测到行人的图像消息。碰撞警告系统可以立即采取识别,可能应用制动器来减速,在向右侧或向左侧方向移动时使车辆减慢,或者基于图像中行人的模式识别进行另一决定,从而避免致命的碰撞。类似的示例可以由来自传感器数据的图像中检测到的其他模式或状况(例如汽车检测、自行车、交通标志或在被检测到时触发动作的任何其他外部模式)来制成。
31.参照图2,特别地,图2是构成cnn 104的各种计算层的更多细节的另一示例。cnn 104可以包括许多计算层,包括卷积层202、修正线性单元(relu)层204、池化层206、全连接(fc)层208(人工神经网络层)和输出层210。尽管已经示出了五个计算层,但是如本领域普通技术人员可以理解的,可以设想更多或更少的计算层。如本文所使用的层或计算(a1)层可以指代一个或更多个部件,所述一个或更多个部件通过数学或其他功能手段以类似功能操作以处理接收到的输入,以生成/导出针对下一层的输出,其中一个或更多个其他部件用于在卷积神经网络系统内进一步处理。
32.例如,卷积层202可以包括一个或更多个卷积部件212,一个或更多个卷积部件212提取图像232的数据切片作为数据集。卷积层202可以与修正线性单元(relu)层204组合,以便也被认为或被称为一个计算层230,或者通常作为卷积层230。特别地,卷积运算可以由卷积部件212执行以从作为来自输入端处的输入(例如,相机数据、雷达数据、其他传感器数据等)的接收的图像中提取特征。例如,可以从卷积运算生成的卷积数据中检测人脸或其他特征作为由卷积部件212输出的结果。可以对图像数据的集合/段/子集/部分例如沿着针对特定特征的图像232的部分执行卷积处理。最初首次通过(pass),由卷积部件212生成的卷积运算可以提取低级别特征。这可以利用特定大小的滑动窗口(例如,用于卷积运算的窗口大小n
×
n,其中n为正整数,或者n
×
p,其中n和p也是不同的正整数),其中滑动卷积在整个图像232上以增量方式利用来自图像232的交叠数据来执行。然后在随后的通过或迭代中,可以通过组合由相同部件或不同的部件针对较低级别特征提取执行的先前卷积运算的结果来提取附加的较高级别特征。然后,迭代可以继续,以利用图像的一个或更多个不同的迭代或通过来生成不同层次级别的数据。
33.例如,人脸可以具有轮廓、斜线、曲线等。在一组卷积数据中,可以提取低级别特征(线、斜率、曲线等),例如然后以确定图像中存在椭圆形的位置、看起来像耳朵边缘的特征、或者构成针对特定特征/模式的基本结构数据的其他特征,该特定特征/模式可以是基于层次数据集的组合来确定图像232中是否存在某些模式或状况的一部分,例如具有汽车或包
括卷积神经网络的部件的其他系统的碰撞路径上的人。
34.这些卷积运算可以产生特征图。特征图可以被认为是应用于来自传感器的图像232或者先前运算层的输出数据的一个卷积部件212的输出。例如,过滤器实例在先前层的输出中跨其感受野而被绘制,一次移动一个像素或更多个像素。感受野可以被称为连接至过滤器(过滤器核)的图像的小区域/子集区域。例如,过滤器可以分析作为特征的三角形的存在。例如,代替一个过滤器在寻找三角形的存在的完整图像上滑动,各种过滤器可以针对三角形或其他特定特征分析/管理图像的各种区域。
35.在其感受野中的过滤器的每个位置处的卷积可能导致在该位置处产生由核表示的特征的存在的测量。在所有卷积位置处特征存在的测量可以是过滤器核的特征图。例如,如果卷积过滤器一次滑动一个像素,则新的卷积野可以通过(野宽度-1)输入值与先前的卷积野交叠。例如,在32
×
32图像中,在输入图像数据上拖动5
×
5卷积核,其中一个像素的步长宽度产生每个卷积过滤器输出的大小28
×
28(32-5 1
×
32-5 1)的特征图。术语“卷积内核”、“卷积过滤器核”,“过滤器”、“核”和“过滤器核”在本文中可以互换地使用,其中下面提供了附加细节(例如,参照图3)。同样如本文所使用的,步长宽度或长度可以限定滑动窗口移位多少或者过滤器如何围绕输入数据量进行卷积。
36.在提取最低级别的信息作为低级别特征之后,可以通过卷积层202的卷积部件212组合作为卷积信息或卷积数据集的输出,例如通过组合两个边缘/线并且例如在检测器106至112处分析该组合是否对应于鼻子,或者其是否对应于眼睛。这些低级别特征(例如,边缘,线等)的组合还可以形成对应于与图像232中的状况(例如人脸、鼻子、耳朵、眼睛、额头、面部头发等)相关的略微标准特征(例如,中等层次级别)的数据集,在卷积数据集的层次中,每个集合包括更大复杂性的提取数据特征。此外,例如数据集可以沿着图像的特征图连续组合并且沿着计算层进一步处理,直到系统能够辨别高级别特征,并且确定作为图像内的对象/高级别特征的完整的人脸。
37.以这种方式,低级别特征(例如,曲线、边缘、线、斜率等)可以是一个级别的数据集层次,以及另一级别的卷积数据集(例如,形状、模式的组合等)可以形成另一层次级别,而任何数量的卷积数据集可以根据数据集的层次中的卷积运算生成,以确定更高级别的模式,包括脸、人、动物、自行车、摩托车、标志、标志的细节或任何数量的状况(例如,碰撞路径中的人、进入碰撞路径中的动物、或在一个或更多个图像中发生的其他情况)。
38.由于卷积运算可以是线性的,因此卷积层202并不完全并且始终反映可能被认为是真实世界行为的内容,这通常不遵循固定路径并且通常是随机的。因此,为了生成具有更多随机性的卷积输出,relu层204可以被配置成cnn系统/部件104,并且进一步被组合为组合卷积层230的一部分。卷积部件212可以连接至relu层的relu部件214。relu部件214可以被配置成通过从卷积部件212输出的卷积数据到relu输入移除线性来生成非线性卷积输出数据的集合。例如,relu部件214可以监视针对可能偶尔包含在卷积输出中的负值的输入。然后,基于作为这些输入接收的卷积数据集,生成与非线性卷积输出数据类似的数据集层次。响应于检测到任何负值,relu部件214用零或正值替换它们。以这种方式,卷积层202的线性输出可以被变换成作为非线性卷积输出数据的至少略微或稍微非线性数据。
39.通过提取和线性地移除的特征,池化部件216处的池化层206接收非线性卷积输出数据,以使其尺度不变。因此,不管被分析的图像的位置、照明、杂质如何,cnn系统可以是智
能且鲁棒的,以能够检测相同图片/图像的变型。
40.因此,卷积层202可以生成特征提取。relu层204从数据中移除线性,以使它们与真实数据一致。池化层206负责体积减小并且使网络图像尺度不变,这可以类似于或与其他图像处理技术例如尺度不变特征变换(sift)和定向梯度直方图(hog)进行比较。
41.池化部件216被配置成通过与卷积组合层230并行的流水线化处理生成池化输出。在实施方式中,池化部件216可以启动对尺度不变的处理,并且对卷积数据的第一集合/子集或非线性卷积输出数据执行统计操作。因此,例如两个不同的计算层可以被流水线化并且与彼此的功能并行操作,或者当滑动卷积窗口在图像232上输出整体卷积数据的部分或一些时同时进行处理。卷积层230、卷积部件212或relu部件214的卷积/relu运算作为具有池化部件216的流水线处理来操作。这些池化部件216基于非线性卷积输出数据的子集的池化窗口对非线性卷积输出数据执行统计操作。
42.例如,池化操作减小了由relu层204提供的输入数据(非线性卷积输出数据)的大小。当接收到每个数据子集时,可以处理单个非线性卷积输出数据集,在池化层206处的大小减小,并且然后在全连接(fc)层208处进行分类,并且最终通过分类器210转换成人可理解的形式,这将在下面进一步详述。
43.人工神经网络(ann)的fc网络层208表示具有神经元的人脑的功能。例如,不同的值(例如,1,5,60,000和0.25,或其他组的值)可以出现在ann的输入处,以使得能够确定图像数据中存在的模式或状况(例如,男人、女人、人等)。如果fc部件看到不同的数字集,则系统输出将检测到可能是其他事物。
44.池化层206的池化部件216的输出可以被馈送至人工神经网络,也称为fc层208,这进一步确定了图片/图像包含的最可能候选。因此,例如作为fc部件的输出的这些数字然后可以通过被称为输出层210的内容被转换成概率,并且被馈送至各种检测器(例如,图1的106至112)如行人检测器106或交通标志检测器112,并且在应用114或116处采取必要动作作为响应。
45.fc部件218根据相应的第一fc层(fc1)和第二(后续)fc层(fc2)形成具有由网络函数222、226和输出函数224、228形成的神经元结构形成ann。每个神经元n1至nx和n4至ny的输出可以取决于输入数据(例如,i1、i2)和输入权重(例如,w1、w2)的可用性,而不是被抽取的程序计数器和外部指令。这意指每个fc部件218可以包括一个或更多个数据流处理器,一个或更多个数据流处理器在不从存储器中抽取指令的情况下操作,而是响应于在一个或更多个输入(例如,i1、i2)处的输入数据的可用性来处理,以便通过执行指定功能立即/瞬时地处理输入数据。输入(例如,i1、i2)可以由池化部件216的池化输出或者在fc2部件输入(例如,i1、i2)处可用的数据的先前fc部件/层(例如,fc 1、n1至nx)来提供。
46.例如,数据流处理可以与冯
·
诺依曼控制流程处理/冯
·
诺依曼机器/处理器成对比或不同,冯
·
诺依曼控制流程处理/冯
·
诺依曼机器/处理器从具有程序计数器的存储器抽取指令以处理数据,而不是仅基于输入处的某些数据的可用性来处理数据。fc部件218还可以各自在层(例如,fc1)内的每个fc部件处单独地接收相同的多个输入(例如,i1、i2)。例如,n1至nx都从每个池化部件216接收输入,这些输入(例如,i1、i2)可以是相同的。另外,例如fc部件的每个第二(或后续)层(例如,fc2、n4至ny)同样也可以从部件的先前层(例如,fc 1、n1至nx、先前计算层或者其他计算层)各自接收相同的输入(例如,i1、i2)等,遍及各个fc
层208(例如,fc 1、fc 2等),各个fc层208可以是形成的计算部件的一个或更多个不同的层。
47.此外,fc层208的神经元或fc部件218的每个网络函数可以包括数学运算,例如输入的点积和权重加权(作为每个输入的权重因子)。输入(例如,i1、i2)可以是相同的,并且权重(例如,w1、w2)不同。此外,输入(i1、i2)的点积和每个输入(i1、i2)的权重(例如,w1、w2)的总和也可以在每个fc部件处执行。不同的fc部件218可以具有不同的权重(例如,w1、w2),或者替选地,对于接收相同组/集合/多个输入(例如,i1、i2)的每个fc部件,不同的输入(i1、i2)可以不同地具有不同的权重(例如,w1、w2)。替选地,这些权重可以彼此相似或不同,使得至少一些fc部件218可以在输入处具有相同的权重(例如,w1、w2),而其他fc部件218具有彼此不同的权重(例如,w1、w2),其中不同的值赋予用于分解处理中的对应输入权重和任意量。
48.此外,每个fc部件218的输出函数224、228还可以包括对网络函数222、226的结果进行运算的数学函数。例如,输出函数可以包括三角函数(例如,tanh、tan等)或对加权输入以及对其执行的求和或其他运算的结果执行的其他数学函数。
49.最后,输出层210可以包括接收的fc层输出或ann输出的分类器函数220。例如,这些分类器函数可以包括softmax函数,其功能可以是将fc层208的输出挤压/压缩至范围从0到1的值。分类器函数220的输出可以包括概率,其中与输入数据对应最可能输出类具有最高概率。例如,输出层210也可以是标准分类器,如支持向量机(svm)或其他分类器。
50.在本公开内容的实施方式中,卷积230和池化层206的执行可以被流水线化(通过执行流水线化或流水线处理),从而导致显著的加速和效率。如上所述,池化层208可以基于来自第一卷积滑动窗口操作的数据的可用性与卷积层230并行或同时操作,并且同时或在对图像数据的交叠或后续子集执行后续滑动窗口操作期间开始处理。
51.执行流水线化或流水线处理在本文中可以被称为串联连接的一组数据处理元件、部件或功能,其中一个部件或元件的输出是下一部件或元件的输入。流水线的元件或部件可以并行或以时间切片的方式执行;在这种情况下,可以在元件之间插入一定量的缓冲存储器。例如,代替等待先前或前一部件完全完成对一组输入数据的操作,后续或后一部件或元件可以立即对来自先前/前一元件或部件的部分或不完整的结果集开始处理。以这种方式,例如,池化层的部件可以被配置成对来自卷积组合层230的作为一个加速的至少部分结果进行操作。
52.在其他实施方式中,fc层208执行也可以被流水线化,并且因此有助于附加的加速和效率。此外,作为神经元的fc部件218也可以被流水线化以响应于来自先前或前一fc部件218的部分输出数据而开始处理,以便彼此并行起作用。例如,fc1的神经元(例如,n2)的网络函数222可以在完成前一fc部件(例如,n1)的输出函数224之前开始处理,并且与fc 1的前一fc部件(例如,n1)的输出功能224的处理操作并行。随后,fc部件同样可以通过这样的流水线处理操作彼此平行操作。
53.参照图3,示出了是根据本文的各个方面/实施方式的代表性卷积数据结果300的示例。卷积运算可以通过卷积层202的卷积部件212或作为如上参照图2所述的具有relu部件214的组合卷积层230来利用。例如,卷积层230的卷积部件212可以被配置成生成加权乘法和求和。就信号处理而言,这些操作可以是单维的,并且在图像处理的情况下,卷积运算
可以是二维的,使得可以存在沿x轴和y轴的各种权重,各种权重不同或类似地对输入进行加权针对每个权重在进一步处理中被分解或考虑的量。
54.在一个示例中,二维阵列数302可以存储在由存储器304(存储器-1)表示的存储器中。这些值可以表示由传感器(例如,图像/相机/视频捕获传感器等)提供作为对一个或更多个卷积部件212的输入的数据或注释值的区域。这些值302例如可以对应于图像数据的图像或子部分/子集,并且此处出于由卷积部件或组合层230的部件进行卷积运算的潜在值的说明目的,这些值302是代表性的。例如,这些值可能是实数、虚数、一个或更多个变量的函数,或者被接收或存储在存储器304中的数据的其他表示。例如,数据306可以类似于数据302,但是略微不同地表示,展示了如由传感器102提供的要存储在存储器304中的数据线性存储。
55.卷积是数学运算,在数学运算中过滤器核可以在图像上滑动,其中目的是检测由过滤器核表示的特征的存在。在cnn系统中,过滤器核可以在图像302中具有固定区域以搜索其特征。因此,过滤器的多个实例可以连接至图像的称为局部感受野的非交叠区域。过滤器实例中的每一个搜索相同的精确特征,但是仅在存储器304中的其局部感受野中搜索。因此可以说,对于必须搜索的每个特征,提供了连接至局部感受野的一组对应的过滤器核实例。特征的所有过滤器核实例的卷积输出表示该特征的特征映射。多个过滤器核扩展至旨在被检测的其他特征。
56.例如,鼻子的表示或在特定过滤器核中鼻子的图片可以被放置在某个位置或子集处的图像(由传感器数据捕获)的顶部,用于将在过滤器核下方的数字相乘,并且乘法结果的总和可以由卷积部件212执行,以获得随后被存储的特定值。然后,内核可以在沿一个方向(例如,右侧)滑动一列。然后,重复计算,其中,可以例用诸如点积乘法和求和的给定数学运算来重复计算,以获得要存储的结果。
57.这些滑动操作可以沿x轴继续,并且此后沿着某个行到达x轴的端部。核可以返回至第一列,但是从卷积部件212再次重复操作的位置向下滑动一行。图像302的交叠图像区域308表示卷积窗口。其在由卷积部件212执行卷积的这些卷积窗口308上并且沿着这些卷积窗口308。在数据并行处理器(例如,simd处理器)上,属于卷积窗口的数据和属于过滤器核的数据都可以被加载至向量寄存器中并且被馈送至向量乘法累加(mac)单元。例如,一个向量mac运算可以产生一个卷积输出。然后,该卷积输出稍后可以被存储在存储器2(存储器310)中。在过滤器核完成了与所有交叠卷积窗口308的卷积之后,完整的卷积输出可以在卷积输出存储器310中获得。
58.根据卷积过程,可以根据本文的方面彼此并行或同时生成分层数据集,并且之后由relu部件214进行非线性,以确定图像是否包含鼻子的图片以及图像内的位置。如果该确定是肯定的,则包含鼻子的图片的图像的那些部分相对于图像的其他部分将倾向于输出的较高的卷积值。
59.在一个示例中,在3
×
3(或其他n
×
n大小或n
×
p大小,其中n和p是可以相同或不同的正整数)卷积滑动窗口308下,可以导出一组较小的数字(例如,1、2、3、7、8、9、2、4、5),并且然后立即生成另一序列(例如,2、3、4、8、9、1、4、5、9)。这些是可以表示从图像中获得或从图像导出的值的代表性值。数字序列(例如,1、2、3、7、8、9、2、4、5)可以来自数字的初始区域/子集作为卷积滑动窗口数据。然后,通过忽略第一列并关注从第二列、第三列和第四列
开始的数字,在第一行、第二行和第三行上,可以获得另一序列(例如,2、3、4、8、9、1、4、5、9)。
60.进一步利用3
×
3窗口308,可以根据存储在存储器304中的图像数据来分析作为示例的大小为3
×
3的小尺寸图像数据部分。还可以利用其他大小窗口,并且示例大小不一定穷举或限制本文的所有方面。通过另一列滑动窗口,窗口结果可以为3、4、5、9、1、3、5、9、3,从而形成另一滑动窗口结果。然后,点积乘法运算可以获得每个数字作为滑动窗口卷积的输出,该输出可以在由存储器-2(例如,310)注释的右下角上表示为ab c d e f g h。例如,值或代表性结果(例如,a)可以基本上表示具有第一窗口(包含1、2、3、7、8、9、2、4、5)的过滤器核的卷积输出,而b表示具有包含2、3、4、8、9、1、4、5、9等的第二窗口的表示鼻子(或其他特征)的核的卷积输出,其中类似地,例如h是具有最后窗口1、3、2、9、3、5、1、1、3的表示鼻子(或其他特征)的过滤器核的卷积。
61.a、b、c、d、e、f、g和h可以以各种方式指示鼻子在给定字母符号对应的数据的任何一个区/子集/区域中的鼻子的可用性级别,或者作为分层数据的一个级别。例如,如果a是非常高的值,则存在鼻子(或与数据集的核或滑动卷积窗口对应的其他特征)可以位于该位置的高机会。因此,卷积可以提供对某个特征是否可能在图像数据中可用和某个特征可能在图像数据中的位置的真实估计。类似地,其他特征或任何数目的特征可以分别由卷积部件212和组合计算层230来分析,用于检测一个或更多个图像内的一个或更多个模式或状况,这可以被称为特征检测;例如,其输出可以通过卷积输出310示出。
62.参见图4,示出了cnn系统100的池化操作的另一示例。例如,卷积310的输出在此处用包括字母表存储器-2的进一步扩展,其中字母表示来自较大图像的任何值或函数。池化层206的池化部件216通过借由减小卷积310的输出的修剪、修整或压缩过程对数据进行处理来处理卷积输出310。
63.例如,一组非交叠块可以在存储器-2(存储器310)中描绘的不同阴影或块中表示。例如,块a、b、i、j不同于块/窗口c、d、k、l,块/窗口c、d、k、l不同于块e、f、m、n和块g、h、o、p等。因此,图2的池化部件216可以通过执行统计操作来处理卷积和扇区非交叠区域2
×
2的输出,其在这些2
×
2单元中的每一个中沿着x轴和y轴两个进行,以实现将池化输出402存储在存储器-3中。这些池化输出402表示尺度不变特征。
64.尽管本文示出和描述了2
×
2的非交叠区域作为示例,但是也可以设想和利用其他大小,使得可以使用p
×
n非交叠块/窗口,其中p或n可以是例如除零之外彼此不同或相同的任何正整数。
65.由池化部件216执行的统计操作可以包括滑动卷积窗口(例如,a、b、i、j)的最小值、最大值、均值、中值或其他统计操作。池化部件216可以执行任何统计操作的池化操作,但在大多数实现中,由池化部件使用的统计操作可以是最大值。
66.因此,根据在滑动卷积310的输出上的这些2
×
2块窗口(或块/窗口的其他大小)中的每一个,可以选择值(例如,代表性b)。在该示例中,已经选择了b,已经从下一块中选择了k,随后选择了如存储在存储器-3402中的e、p和z、a、u、x,并且包括作为尺度不变特征的池化输出或者作为从来自卷积部件212的卷积输出310或来自relu部件214的非线性卷积输出数据集导出的体积减少输出的池化输出。因此,池化部件216可以根据池化操作从其接收的输入中生成数据大小的减少。然后,池化操作的输出可以被输入至人工神经网络或fc层
208,其进一步尝试对图像内的模式/状况做出确定,以便做出进一步的决定。
67.在各个方面,可以分配特定的部件硬件来执行这些计算,使得所有主处理器(例如,引擎控制单元或其他主处理部件)必须要告诉卷积神经网络部件硬件以下:i)存在要分析的图像;以及ii)在确定图像的内容之后,提供结果的指示。因此,cnn 104的各个层的计算可以被卸载至cnn加速器,例如,以在后台中执行计算,以将结果返回至主处理器。虽然这对于功率和性能效率而言可能是良好的解决方案,但其可以有成本的,这是因为这样的硬件单元可以在微控制器上占显著区域,以及消耗大量的功能用于功能。因此,本文的方面还能够消除对专用硬件加速器的需要,而是通过使用某一个或更多个较小的重量轻的部件而不像如专用cnn加速器那样密集来重新使用芯片上的某些基础设施。因此,可以降低成本以及保持性能而不使主处理器过载。
68.在实施方式中,池化处理器216可以通过与卷积部件212并行操作或者与组合卷积 relu层230和相关过程并行操作通过流水线化操作来操作。代替cnn 104的每个层仅在前一层已经完成所有计算操作之后才启动动作(例如,滑动卷积310的所有输出是针对某一特征层次或子集图像部分的整个图像上的迭代而生成的),与通常等待由其前任产生的所有池化窗口相比,一旦由其前任(例如,卷积部件212)已经产生这样的窗口,池化部件216就可以在池化窗口上启动池化操作。
69.例如,作为触发事件(例如,也称为访问匹配或观察(al)单元输出),数据块可以在用于处理到下一层的输入处可用,并且因此,下一层立即开始计算。因此,一旦卷积层202/212已经计算了计算输出的一个块/窗口(例如,阴影块a、b、i、j之一),可以通过开始池化操作来增加处理增益。
70.代替等待卷积层来生成卷积输出a、b、c、d、e、f、g等,一直到存储器-2的输出310的右下角中的f来启动输出的池化,池化部件216可以基于数据可用性响应于触发事件或指示(或访问匹配)来处理。例如,触发事件可以是写入存储器-2中对应于针对给定窗口(例如,2
×
2窗口的第一阴影块的j)的最后值的位置。因此,一旦2
×
2块的元素、值或任何因子被写入存储器或特定存储器位置,就可以触发第一池化部件216以立即开始处理可用数据上的池化操作。
71.在另一个实施方式/方面,该示例中的触发指示可以附加地或替选地是对应于p
×
p窗口(例如,2
×
2非交叠数据块)的最后值、位置或结果的滑动卷积的输出的可用性,其中p可以是任何正整数。此外,该触发可以扩展至包括与各种输入数据对应的所有输入的数据的可用性,使得一旦所有输入接收到数据,如同数据流处理流一样,不管数据本身的接收是否完成/结束,或者先前层(例如,组合层230、卷积部件212、relu部件214等)是否完成,可以触发下一层中的处理(例如,通过池化部件216)。
72.响应于在特定位置处的写入操作的值或指示的可用性,对完成的块或非交叠窗口(例如,非线性卷积输出数据的2
×
2窗口或滑动卷积310的输出)可以由池化部件216发起。池化部件216可以与一个或更多个卷积部件212一起同时执行操作或并行地执行操作。参照图5,当卷积部件212提供滑动卷积输出310时,池化部件216可以针对每个块(例如,8个块j、l、n、p、z、b、d和f)提供具有输出地址502的最终池化输出。因此,例如,一旦j从卷积部件216中获得,就可以找到a、b、i、j的最大值作为池化部件216的池化操作的一部分的示例统计操作,而无需等待来自图像中相同层次或不同层析级别数据内的其他窗口或数据子集的其他
结果,例如c、d、e、f。此外,一旦n可用,e、f、m、n的池化操作开始而无需等待o被写入存储器。同样,一旦p可用,例如,对于,针对g、h、o、p的池化计算可以针对每个输出滑动卷积数据或也称为非线性输出数据310的每个块发起等。
73.参照图6,示出了根据各个方面或实施方式的用于操作cnn层的架构ann系统或设备600的示例。系统600包括通过处理器互连602彼此耦接的中央处理单元(cpu)604、一个或更多个存储器抽取单元606和存储器存储设备614。在一方面,cpu 604可以被配置为具有顺序流水线微体系结构的微控制器单元(uc)、紧凑型uc或数字信号处理(dsp)设备。例如,cpu 604可以被配置为具有有序、简单的流水线/单发射微体系结构的紧凑型uc。
74.cpu 604被配置成便于系统600的部件的控制和操作,并且直接耦接至存储器存储设备614和一个或更多个存储器抽取单元606。此外,cpu604被配置成处理具有预定义数据结构的数据。预定义数据结构由cpu 604限定,并且存储在耦接至cpu 604的配置寄存器/存储器(未示出)中。此外,存储器存储设备614被配置成存储另一预定义数据结构的打包/压缩数据。存储在存储器存储设备614上的打包/压缩数据的另一预定义数据结构可以例如不同于cpu 604被配置为处理的数据的预定义数据结构。在实施方式中,打包/压缩数据可以对应于由传感器102收集的数据集(例如,图像、视频数据、波形数据等),该数据集被提供为cnn 104的输入。打包/压缩数据可以包括其存储位置、布局和打包格式可由cpu 604通过配置寄存器/存储器编程的打包子字数据。因此,cpu 604可以促进根据由传感器102收集的数据集对存储器存储设备614上的打包/压缩数据的存储。
75.在一些实施方式中,打包/压缩数据包括存储在存储器存储设备614中的存储要素(即,存储的数据或被称为必要数据),以及隐含在打包/压缩数据的指定打包格式中的生成元素(即,生成的数据或被称为非必要数据)。例如,生成要素可以包括填充数据(即,在边缘处填充)或稀疏数据中跳过的元素。
76.在实施方式中,存储器抽取单元606和cpu 604可以操作以支持或包括卷积层202的卷积部件212、池化层206的池化部件216、或fc层208的fc部件用于流水线处理。例如,cpu 604包括算术/逻辑指令,该算术/逻辑指令被配置成执行与卷积部件212、池化部件216或fc部件相关联的处理(例如,乘法/累加计算、最小/最大计算等),并且存储器抽取单元606被配置成向cpu 604提供适合于处理的输出数据,用于上述处理。在另一实施方式中,存储器抽取单元606可以各自被称为存储器抽取设备。
77.每个存储器抽取单元606被配置成确定存储器存储设备614中的打包/压缩数据的地址,并且基于打包/压缩数据的地址和预定义数据结构向cpu 604提供相应的输出数据。在实施方式中,存储器抽取单元606生成输出数据,使得根据预定义数据结构配置输出数据。因此,存储器抽取单元606可以对打包/压缩数据进行解包,并且可以以适合于由cpu 604的顺序流水线微体系结构处理的方式解压缩或(重新)格式化随后的解包数据。这减轻或消除了对cpu 604解包或重新格式化打包/压缩数据的需求,从而释放可以用于代替对输出数据执行算术/逻辑运算的计算能力。这减轻了解包和重新格式化打包数据的性能瓶颈,并且增加了在cpu 604上完成ann算法的加速增益。
78.在另一实施方式中,打包/压缩数据的存储数据包括一个或更多个冗余存储器字,其中存储器抽取单元606可以各自包括被配置成存储一个或更多个冗余存储器字的缓冲区(例如,循环缓冲区)。存储器抽取单元606被配置成基于存储在缓冲区中的冗余存储器字选
择性地抽取存储数据。在一方面,存储器抽取单元606被配置成选择性地从存储器设备中一次抽取存储数据的冗余存储器字。
79.存储器抽取单元606可以例如各自包括被配置成执行存储器抽取单元606的功能/处理的一个或更多个协处理器。存储器抽取单元606的部件紧密耦接至cpu 604或存储器存储设备614,其中存储器存储设备614包括指令存储器和数据存储器。例如,存储器抽取单元606可以附接为直接耦接至cpu 604的核心附接的协处理器,其中cpu 604包括存储器抽取单元606可以直接访问或直接共享资源的特殊功能指令、特殊功能寄存器(例如,risc-v中的ifr)、本地储器、总线代理等。此外,cpu 604可以包括被配置成从存储器存储设备614抽取抽取数据(例如,在指令存储器处存储的指令数据)的指令抽取设备。在实施方式中,存储器抽取单元606各自被配置成与cpu 604的指令抽取设备共享资源,并且可以被配置成至少部分地从存储器存储设备614的指令存储器抽取打包/压缩数据。借助于存储器抽取单元606与cpu 604的部件共享资源,存储器抽取单元606可以各自通过cpu/协处理器存储器接口来访问存储器,其能够使用高性能cpu存储器端口(例如,专用的程序存储器、专用指令存储器或暂存数据存储器)。这进一步减轻了聚集和解包数据的性能瓶颈,从而进一步增加了在cpu 604上完成ann算法的加速增益。因此,在实施方式中,存储器抽取单元606通过cpu 604访问或执行存储器存储设备614上的存储器抽取操作(例如,存储器抽取单元606通过cpu 606通过协处理器接口访问存储器)。在另一实施方式中,存储器抽取单元606可以各自被配置为具有由mmu特殊功能寄存器(sfr)配置的设置的存储器管理单元(mmu),其中由mmu解包/聚集的输出数据被mmu映射至虚拟地址。此外,存储器抽取单元606可以各自被配置成共享或包括mmu资源(例如缓存、总线代理、高带宽cpu接口等)。在又一实施方式中,存储器抽取单元606可以使用流式直接存储器访问(dma)耦接至作为外围设备的cpu 604的总线,其中存储器抽取单元606可以通过dma读取从存储器存储设备614抽取数据,并且包括可编程输入/输出(i/o)。在又一实施方式中,存储器抽取单元606集成在cpu 604内,即存储器抽取单元606是cpu 604的一部分。
80.在实施方式中,cpu 604包括被配置成执行alu处理的算术逻辑单元(alu)。在这样的实施方式中,alu被配置成执行例如与卷积部件212、池化部件216或fc部件相关联的处理(例如,乘法/累加计算、最小/最大计算等)的并行执行。存储器抽取单元606各自被配置成与在cpu 604上执行的alu操作同时对打包/压缩数据执行抽取、解包、解压缩或解码过程,从而在不需要复杂的smid扩展的情况下加速ann计算。例如,存储器抽取单元606被配置成在cpu 604对由存储器抽取单元606提供的先前输出数据执行alu处理的同时针对cpu 604生成新的输出数据。
81.在实施方式中,存储器抽取单元606均包括抽取地址生成器单元608、稀疏聚集单元610和数据解包单元612。抽取地址生成器单元608被配置成确定或生成存储在存储器存储设备614中的打包/压缩数据的地址和子字数据项选择信息。由抽取地址生成器单元608生成的地址包括与打包/压缩数据中的存储元素相关联的第一地址集和与打包/压缩数据中生成的元素相关联的第二地址集合。此外,稀疏聚集单元610被配置成从存储器存储设备614选择性地抽取存储的打包/压缩数据,同时忽略(即,不抽取)基于来自抽取地址生成器单元608的地址和子字数据项选择信息生成的打包/压缩数据。通过忽略生成的打包/压缩数据,可以减少在存储器存储设备614上执行的读取/抽取操作的数量,从而减少抽取打包/
压缩数据所需的时间。在一些实施方式中,存储的打包/压缩数据对应于与存储元素相关联的第一地址集合,并且生成的打包/压缩数据对应于与所生成元素相关联的第二地址集合。此外,数据解包单元612被配置成基于从存储器存储设备614抽取的存储的打包/压缩数据和预定义数据结构来生成输出数据。输出数据根据预定义数据结构进行配置,并且随后流送至cpu 604进行数据处理,或者存储在可以由cpu 604在稍后的时间处抽取输出数据的输出寄存器中。在其他实施方式中,存储器抽取单元606可以与cpu 604处理来自输出寄存器的输出数据同时从存储器存储设备614抽取、解包和格式化新的打包/压缩数据。这可以进一步增加在系统600上完成ann算法的加速增益。
82.参照图7,示出了根据各个方面或实施方式的图6的存储器抽取单元606的部件的详细示例。存储器抽取单元606包括通过抽取单元互连702相互耦接的存储器抽取总线单元704、抽取地址生成器单元608、稀疏聚集单元610、数据解包单元612、配置单元706和寄存器接口单元708。在一方面,抽取单元互连702可以耦接至处理器互连602。在实施方式中,存储器抽取单元606通过cpu 604对存储器存储设备614进行访问或执行存储器读取操作(例如,存储器抽取单元606通过cpu 606通过协处理器接口访问存储器)。
83.存储器抽取总线单元704耦接至cpu 604和存储器存储设备614,并且被配置成对存储器存储设备614进行存储器读取操作。配置单元706被配置成向存储器抽取单元606中的其他部件提供配置参数。例如,配置参数可以包括存储在存储器存储设备614上的打包子字数据的存储器位置、布局和打包格式信息。
84.抽取地址生成器单元608被配置成使用打包/压缩数据的布局和打包格式信息来生成字地址和子字数据项选择的流。在实施方式中,生成的字地址和子字数据项选择对应于用于在卷积层202的卷积部件212上或者在fc层208的fc部件上实现ann操作的内循环所需的序列输入的数据(例如,在针对卷积运算的输入的短轴阵列或针对密集层的单个神经元上扫描核)。例如,抽取地址生成器单元608可以被配置成生成字地址和子字数据项选择的流,以在固定大小的压缩子字数据的密集二维阵列上进行二维卷积运算的短轴迭代。在这样的实施方式中,可以针对与在数据阵列的短轴上滑动的二维核过滤器的核“踪迹”对应的数据流生成字地址和子字数据项选择。因此,抽取地址生成器单元608包括可以用于完成卷积操作(例如,在cpu 604上)的核卷积参数,例如行步长、列步长、核过滤器宽度、核过滤器高度等。此外,针对一维输入/核过滤器生成字地址(和对应的子字项选择)的流可以如以上关于二维核过滤器所讨论的那样实现,其中核过滤器高度被设置为1并且核过滤器宽度等于一维输入数据的大小。
85.子字数据项选择信息包括与存储器字的地址相关联的打包数据项的数目和位置(即,子字项数目和子字项位置);以及在后续处理中其的抽取应当被抑制并被零/空值替换的打包数据项的抑制指示符。因此,子字数据项选择信息指示与存储在存储器存储设备614上的打包数据中的存储元素(例如,与寻址的存储器字相关联的打包数据项)相关联的第一地址集合,以及与打包数据中生成的元素(例如,在后续处理中其的抽取应当被抑制并被零/空值替换的打包数据项)相关联的第二地址集合。此外,子字数据项选择信息包括与打包数据项将被抽取还是被忽略相对应的填充掩码。因此,填充掩码可以用作在后续处理中其的抽取应当被抑制并被零/空值替换的打包数据项的抑制指示符。例如,包含所有“0”的填充掩码(例如,填充掩码是包含0、0、0、0的4位数据结构)指示在后续处理步骤中应当抑制
对应打包数据项的抽取。
86.与第二地址集合相关联的生成元素可以对应于卷积层的输入的零“填充”,因此具有抑制抽取,如由子字数据项选择信息所指示的。因此,卷积层的输入的输入填充是根据允许统一处理所有核足迹位置的“虚拟”(即,物理上不存在)存储器位置限定的。通过抑制从存储器存储设备614抽取生成的元素,减少了由存储器抽取单元606执行的读取/抽取操作的数量,从而减少了在后续处理步骤中抽取打包数据项所需的时间。在一些实施方式中,如果卷积层的输入阵列短轴的与对应于具有坐标小于0(高msb)的行位置的左侧填充进行字对齐,则生成的元素与输入阵列的左侧对齐。通过将卷积层的输入阵列的生成元素定位至输入阵列的左侧,可以在卷积期间跨输入阵列滑动滤波器核的同时有效地实现存储器抽取单元606的操作。
87.通过根据字地址和子字项位置指定要抽取的打包数据项,可以支持具有比字节窄或与字节地址不对齐的打包数据项的打包格式。用于量化ann权重和激活的最佳位宽取决于应用,因此在选择打包数据项宽度方面的这种灵活性增加了存储器抽取单元606的灵活性。然而,在一些实施方式中,跨字边界分割打包数据项的打包格式可能会使实现不成比例地复杂化,并且权衡收益会随着位宽的增加而减少。因此,具有字对齐布局而没有过量的未使用位的打包数据项减轻了实现的复杂性和折衷收益的减少。例如,如果存储器存储设备614被配置成存储32位字,则32位字包括1、2、3、4、5、6、8、10、16和32位数据项,其中4、6、8、10和16位项可以优化从存储器存储设备614抽取打包数据项。此外,应当理解,存储具有其他位值的字的存储器存储设备614在本公开内容的范围内。
88.在实施方式中,cpu 604可以重新编程打包/压缩数据的格式信息,使得抽取地址生成器单元608可以在单个核卷积内的不同打包格式之间改变(例如,卷积网络层中,针对不同通道的不同量化参数)。在另一方面,格式信息指示符可以耦接至抽取地址生成器608并且可以促进与打包/压缩数据的不同打包格式对应的多个参数集的编程,使得改变格式信息指示符可以促进正在由抽取地址生成器608处理的当前打包/压缩数据集的不同打包格式之间的快速切换。
89.在实施方式中,存储器抽取单元606被称为数据流设备,该数据流设备被配置成处理存储在存储器存储设备614上的数据并向cpu 604提供连续输出流。此外,存储器抽取单元606被配置成与cpu 604处理输出流的同时提供连续输出流。在一方面,抽取地址生成器单元608可以被称为地址生成器部件,该地址生成器部件被配置成生成存储在存储器存储设备614上的数据的多个数据地址。此外,抽取地址生成器单元608被配置成生成多个数据地址中的每一个的抑制指示符(例如,填充掩码),并且其中基于抑制指示符引入所选数据。抑制指示符根据预定义数据结构与要被生成的数据(例如,位填充)替换的数据相关联。
90.稀疏聚集单元610被配置成基于来自抽取地址生成器单元608的字地址和子字数据项选择信息在从存储器存储设备614选择性地抽取存储的打包数据项的同时忽略(即,不抽取)生成的打包数据项。随后,抽取到的存储的打包数据项被传送至数据解包单元612以进行解压缩、解包或重新格式化。在一方面,所生成的打包数据项可以隐含在打包数据项的预定义格式中,诸如例如稀疏数据中的跳过元素或在边缘处的零填充。在实施方式中,打包数据项可以是或包括稀疏数据,使得子字数据项选择信息包括对应的稀疏映射位向量。稀疏映射位向量可以由抽取地址生成器单元608生成或者可以是映射在存储器存储设备614
中的内存。稀疏映射位向量可以用于识别必须从存储器存储设备614中抽取的存储的打包数据项并且生成其抽取被抑制的打包数据项。
91.在实施方式中,稀疏聚集单元610可以被称为数据抽取部件,该数据抽取部件被配置成基于字地址从存储器存储设备614引入所选择的数据。在一个方面,稀疏聚集单元610还被配置成从cpu 604的指令存储器至少部分地引入所选择的数据,并且还被配置成与cpu 604的指令抽取装置共享资源。此外,稀疏聚集单元610被配置成基于预定义的或从存储器中抽取的控制信息跳过数据,其中控制信息可以包括字数据项选择信息、与引入的所选择的数据的预定义格式相关的信息(例如,稀疏数据中的跳过元素或在边缘处的零填充)、与引入的所选择的数据对应的稀疏映射位矢量等。在其他实施方式中,稀疏聚集单元610被配置成对可与引入的所选择的数据相关联的一连串连续的可变长度编码数据进行解压缩。例如,可变长度编码数据可以包括哈夫曼编码数据。在实施方式中,所选择的数据包括多个数据项,并且稀疏聚集单元610被配置成与正在向cpu 604供应连续输出流的数据解包单元612并行地传送多个数据项。
92.在实施方式中,存储器存储设备614上的打包数据项可以是或包括密集数据,该密集数据包括指示数据存在或不存在的对应“全1”位向量。为了提高效率,全1位向量可以在稀疏聚集单元610中内部生成或者可以从存储器中抽取。为了进一步提高效率并减少完成打包数据的解压缩、解包或重新格式化所需的总时间,多个存储的打包数据项可以并行传送至数据解包单元612。此外,稀疏聚集单元610与数据解包单元612之间的总线接口可以被配置成支持多字突发传送。在这样的实施方式中,稀疏聚集单元610可以将存储的打包数据项传送至直接耦接至数据解包单元612的预读缓存(例如,小的4至8条目缓存单元)。这进一步提高了存储器抽取单元606的效率。在一些实施方式中,稀疏聚集单元610被配置成与数据解包单元612解压缩、解包或重新格式化存储的打包数据项的同时,从存储器存储设备614中选择性地抽取新的存储打包数据项。在这样的实施方式中,新存储的打包数据项可以存储在预读缓存中,而解包单元612从预读缓存接收/处理存储的打包数据项。
93.在一些实施方式中,稀疏聚集单元610被配置成使用生成的字地址、抑制指示符(例如,填充掩码)和稀疏映射位向量从存储器中选择性地抽取存储的稀疏打包数据项。稀疏映射位向量可以由抽取数据单元606生成或映射至存储器。被稀疏映射位向量标记为不存在的稀疏打包数据项可以被编程为从稀疏聚集单元610输出至数据解包单元612的流参数的一部分。例如,标记为不存在的稀疏打包数据项可以被跳过(例如,从输出参数流中省略)或者被可编程的零/空值替换,从而进一步提高计算和解包效率。在实施方式中,通过打包非零权重(例如,核权重)并使用用于跳过与零权重对应的输入数据的对应的稀疏映射位向量,可以跳过用于乘积计算加权和的零权重乘积,从而提高cpu 604上ann算法的处理效率。
94.环形缓冲区缓存器710可以是稀疏聚集单元610的一部分或者可以通过抽取单元互连702耦接至稀疏聚集单元610。例如,环形缓冲区缓存器710可以直接附接/直接电耦接至稀疏聚集单元610。环形缓冲区缓存器710被配置成存储由稀疏聚集单元610基于由抽取生成器单元608提供的字地址抽取的存储器字(例如,存储的打包数据项)。由于抽取生成器单元608向稀疏聚集单元610提供新字地址,与新字地址相关联的存储器字可以对应于已经存储在环形缓冲区缓存器710上的存储器字。因此,与新字地址相关联的存储器字是重复
字。在这样的实施方式中,稀疏聚集单元610可以抑制从与新字地址相关联的存储器存储设备614中抽取重复字。此外,稀疏聚集单元610可以从存储在环形缓冲区缓存器710上的存储器字中读取与重复字相关联的存储的打包数据项。这减少或消除了在存储器存储设备614上执行的冗余抽取,从而提高了稀疏聚集单元610的抽取效率。在实施方式中,重复字可以被称为冗余存储器字。
95.例如,卷积操作可以包括在具有短轴步长为1的密集二维阵列的短轴上迭代,从而引起数据阵列上的顺序核足迹(例如,参见图8)。由抽取生成器单元608生成的用于顺序核足迹的字地址流是确定性的且高度重复的。这是因为相邻的核足迹彼此交叠,使得与字地址流对应的存储打包数据项可以包括一个或更多个重复字。环形缓冲区缓存器710被配置成从存储器存储设备614中消除一个或更多个重复字的冗余抽取。在实施方式中,如果环形缓冲区缓存器710的缓冲区顺序相对于生成的字地址的顺序被转置和短轴反转,则实现了环形缓冲区缓存器710的后进先出的顺序。例如,针对与按行次要顺序(row-minor order)的最大w
×
h字(其中,w和h是可以相同或不同的正整数)的核足迹对应的核足迹位置生成的核存储器字地址可以表示为:[(0,0),(1,0),
……
,(w-1,0),(0,1),
……
,(w-1,1),
……
,(0,h-1),
……
,(w-1,h1-1)]。此外,在基于与核足迹的第一位置对应的字地址抽取存储器字之后,抽取的存储器字可以存储在环形缓冲区缓存器710上,使得环形缓冲区缓存器710的内容表示为:[
……
,(w-1,0),w-1,1),
……
,(w-1,h-1),(w-2,0),
……
,(w-2,h-1),
……
,(0,0),
……
,(0,h-1)]。此外,环形缓冲区缓存器710包括b字环形缓冲区存储器段(其中b是正整数,例如8、16、32或其他合适的值)和当前结束位置e,使得核存储器字的值(x,y)(其中,x和y为零或者可以相同或不同的正整数)将被缓存在环形缓冲区缓存器710的地址处,如等式|e (y,h
x
)|b所表示的。每次将左上(top-left)核足迹移位至相邻的核足迹位置,添加一列存储器字并删除d列存储器字(其中,a和d为零或可以相同或不同的正整数),并且e增加dh(不再在当前核足迹中的字的数量)。在这样的实施方式中,可以从环形缓冲区缓存器710中取出来自列[0,h-1-a]的存储器字,而可以从存储器存储设备614中抽取与新列[h-a,h-1]对应的新存储器字并复制至环形缓冲区缓存器710。
[0096]
在实施方式中,环形缓冲区缓存器710可以通过仅缓存合适的值子集而用于具有超过缓存大小的核足迹的核。例如,通过将w设置为小于核足迹列的实际最大数量,并且从存储器中抽取其中w-1-x小于零的核位置(x,y)。在其他实施方式中,为计算缓存在环形缓冲区缓存器710中的核字的位置而执行的乘法可能不需要大的乘法器块。例如,对于紧凑型uc,具有足够小的参数集的ann算法,包含8位的核足迹维度(h,w)就足够了。此外,对于一维核过滤器(其中,w可以是大的),h为1,使得可以省略用于确定缓存在环形缓冲区缓存器710中的核字的位置的乘法器,从而提高处理效率。在可替选的实施方式中,可以通过添加/减去由cpu 604预计算的h*(w-1)值来迭代地确定缓存在环形缓冲区中的核字的位置。
[0097]
此外,数据解包单元612被配置成基于由稀疏聚集单元610选择性地抽取的存储的打包数据项生成输出数据。在实施方式中,数据解包单元612可以对打包数据项进行解压缩、解包或者将存储的打包数据项格式化为适合cpu 604的形式以对对应输出数据执行算术或逻辑运算。在一方面,由数据解包单元612生成的输出数据被配置成匹配预定义精度、预定义布局或预定义数据结构中的至少一个。例如,预定义精度、预定义布局或预定义数据结构可以各自包括包括生成的输出数据的数据大小、数据格式、数据偏移值或数据移位值
的信息。在一些实施方式中,预定义数据结构可以是或包括填充密集2d阵列、填充1d数据向量、扩张的填充2d阵列和扩张的填充1d向量、具有根据对应的稀疏映射跳过元素的1d向量(即,稀疏映射位向量)等。寄存器接口单元708可以包括被配置成存储由数据解包单元612生成的输出数据的一个或更多个输出寄存器。因此,输出数据可以由cpu 604从输出寄存器中抽取以进行后续处理步骤。此外,根据预定义数据结构,输出数据可以配置有符号/零扩展,以支持由cpu 604限定的指定字宽和重新打包结构,以匹配cpu 604的simd数据格式。此外,数据解包单元612被配置成基于可以各自存储在存储器中的偏移值、位移位值、缩放、舍入(rounding)、查找表或可变长度编码(例如,霍夫曼编码)中的至少一个来解码所存储的打包数据项。在一些实施方式中,可以使用缩放/偏移量化方案对存储的打包数据项进行编码,使得基于偏移值或位移位值解码对应的存储打包数据项减少了执行解码所需的时间。此外,例如,可以使用非线性量化方案(例如,统计聚类的对数编码)对存储的打包数据项进行编码,使得基于查找表解码对应的存储打包数据项减少了执行解码所需的时间。这减少了生成输出数据所需的时间并且进一步提高了存储器抽取单元606的功率效率。在一些实施方式中,所存储的打包数据项在被存储在存储器存储设备614上之前可以不被格式化,使得数据解包单元612不执行格式化(例如,不执行解压缩或压缩)。这可以提高存储器抽取单元606的效率。
[0098]
在一方面,数据解包单元612可以被称为数据格式化部件,该数据格式化部件被配置成将输出数据生成为到cpu 604的连续流。此外,数据解包单元612被配置成提供与存储的打包数据项相匹配的数据格式和cpu 604的数据指令集,其中数据格式和数据指令集由cpu 604或存储器存储设备614提供。
[0099]
为了能够将输出数据高效地传送至cpu 604,可以在存储器抽取单元606的部件(例如,输出寄存器、抽取地址生成器单元608、数据解包单元612等)与cpu 604之间实现硬件/软件(hw/sw)接口。在这样的实施方式中,观察单元可以耦接在cpu 604和存储器抽取单元606的部件之间。一旦观察单元确定cpu 604从存储在输出寄存器上的输出数据中抽取解包数据项,观察单元就可以检测到该事件并通过hw/sw接口向数据解包单元612或抽取地址生成器单元608提供触发以启动下一打包数据项的解包、切换至核的下一行、或与cpu 604处理抽取的解包数据项并行操作的其他指定动作。例如,输出数据可以在多个寄存器地址处呈现在输出寄存器上,使得一旦cpu 604从输出寄存器上的特定地址抽取输出数据,观察单元就可以检测哪个地址被访问并根据对应的特定地址触发特定动作。此外,通过借由等待状态暂停cpu 604而不是要求对状态信息进行编程轮询,cpu 604抽取可以与来自稀疏聚集单元610的新提供的输出数据的可用性同步。这减少了否则可用于轮询状态信息的处理器等待时间,从而减少处理器等待时间并进一步提高ann计算期间的功率效率。
[0100]
互连702可以包括将存储器抽取单元606的各种部件彼此连接的互连(例如,片上总线互连)。存储器抽取总线单元704可被配置为存储器抽取总线主控器或可被配置为uc协处理器存储器接口使得存储器抽取单元606的部件通过存储器抽取总线单元704紧密耦接至cpu 604或存储器存储设备614。另外,例如,存储器抽取总线单元704可以被抽取地址生成器单元608用于从存储器抽取数据并将数据存储回存储器(例如,诸如环形缓冲区缓存器710或另一合适的存储器)。寄存器接口单元708可以被配置为配置和输出总线从控器或可以被配置为uc协处理器寄存器接口,使得存储器抽取单元的部件紧密耦接至存储器存储设
备614或cpu 604的寄存器/存储器。此外,例如,寄存器接口单元708可以被数据解包单元612用于对存储器存储设备614或cpu 604的寄存器/存储器进行编程。
[0101]
存储器抽取单元606的部件可以相对于彼此或相对于cpu 604被流水线化,通过使数据流处理器在可用时立即成为每个部件的输出的处理器扇区来致使显著的加速增益。在一些实施方式中,存储器抽取单元606的部件可以被配置为简单的顺序状态机或为深度流水线化的并行实现,其中并行处理多个地址/抽取/数据项是可能的。在实施方式中,存储器抽取单元606的部件被配置成提供与cpu 604的容量相匹配的吞吐量以处理抽取和解包的数据项。这提高了紧凑型uc设备的功率/区域效率。例如,对于没有simd能力的紧凑型uc设备,被配置为完全顺序状态机的存储器抽取单元606的部件将促进与紧凑型uc设备的容量相匹配的存储器抽取单元606的吞吐量以处理对应的输出数据,同时使功耗最小化并且增加成本节约。在另一示例中,对于高性能uc设备(例如,相对于存储器吞吐量和simd处理的较高时钟速度),存储器抽取单元606的部件彼此流水线化并且能够每cpu时钟周期递送一个或更多个输出数据项将促进与高性能uc设备的容量相匹配的吞吐量。这可以允许在同时执行存储器读取以抽取后续的打包数据项时从一个抽取的存储器字生成解包的数据项并随后输出用于数据处理,从而进一步有助于额外的加速增益。此外,彼此流水线化的存储器抽取单元606的部件可以允许在使用可以避免针对部分结果的存储器存储的需要的行次要(chw)存储器布局来执行信道式卷积操作(例如,池化、深度式可分离卷积)时,在存储修剪的参数集(例如,稀疏数据)而不管布局时增加流聚集/解包效率。在一个方面,存储器抽取单元606可以包括可以由流水线直接管理的小型缓冲区存储器(例如,环形缓冲区缓存器),从而实现高效的缓存性能。
[0102]
参照图8,示出了根据本文的各个方面/实施方式的用于示出针对相邻核足迹802至808待抽取的打包数据项的二维卷积过程的输入阵列的存储器布局的示例。卷积操作可以被卷积层202的卷积部件212利用,或者作为如以上参照图2描述的具有relu部件214的组合卷积层230来使用。例如,卷积层230的卷积部件212可以被配置成生成加权乘法以及求和。就信号处理而言,这些操作可以是单维的,并且在图像处理的情况下,卷积操作可以是二维的,使得可以存在沿x轴和y轴的各种权重,各种权重不同地或类似地对输入进行加权针对每个各种权重在进一步处理中被分解或考虑的量。
[0103]
在一个实施方式中,打包数据项可以是或包括存储在具有对应存储器地址810的存储器存储设备614中的二维阵列值。这些值可以表示在从存储器中抽取和解包之后可以作为输入提供给一个或更多个卷积部件212的打包数据或打包注释值的区域。二维阵列中的值可以已经被传感器102(例如,图像/相机/视频捕获传感器等)捕获并且随后作为打包数据项存储在存储器存储设备614中。可以在存储器地址810处访问的值例如可以对应于图像或图像数据的子部分/子集,并且可以被卷积部件212或组合层230的部件用于卷积运算。此外,打包的数据项可以分别被划分为具有对应地址a’、b’、c’、d’、e’、f’、g’、h’、i’的四个子字数据项。例如,地址a’可以表示第一个存储器字,该第一个存储器字包括具有在二维阵列值中的起始坐标(-4,0)的四个子字数据项,以及地址b’可以表示第二个存储器字,该第二个存储器字包括具有在二维阵列值中的起始坐标为(1,-4)的四个子字数据项,依此类推。此外,可以在地址a’[0]处访问第一存储器字的第一子字数据项,可以在地址a’[1]处访问第一存储器字的第二子字数据项,依此类推。
[0104]
如以上参照图3所述的,卷积是滤波器核可以在图像上滑动的数学运算,其中,目的是检测由滤波器核表示的特征的存在。如图8所示,多个核足迹802至808各自位于存储器地址810的固定区域上。例如,每个核足迹802至808可以具有3
×
3大小的核并且过滤器核可以具有1的步长。核足迹802至808示出了可以放置过滤器核以检测存储在存储器地址810处的数据项中特征的存在的位置/区域。例如,过滤器核可以被配置成从第一核足迹802滑动(例如,从左到右)至第二核足迹804,从第二核足迹804滑动(例如,从左到右)至第三核足迹806,以及随后从第三核足迹806滑动(例如,从左到右)至第四核足迹808。此外,字存储器布局812示出了存储在对应存储器地址810处的子字数据项的示例布局。“虚拟”字地址对应于二维输入阵列的隐式零填充,并且字地址可以对应于存储的打包子字数据项。通过使用虚拟字地址(其抽取稍后被抑制),可以实现隐式零填充(无存储器开销),同时例如维护简单的控制状态机。
[0105]
参照图9,示出了包括根据本文的各个方面/实施方式的基于稀疏核902生成的代表性地址生成和稀疏聚集输入/输出的示例的表900。稀疏核902可以作为具有抽取/跳过向量905(例如,包含1,0,1,0,0,1,0,0,1)的打包向量904(例如,包含w0,w2,w5,w8)存储在存储器中。稀疏核902包括对应于稀疏数据的字地址w0、w1、w2、w3、w4、w5、w6、w7和w8。稀疏核902中的字地址包括与存储的打包数据项对应的第一字地址集合(例如,打包向量904中的字地址)以及与稀疏数据中可能被跳过(即,不抽取)的元素对应的第二字地址集合(例如,包含w1,w3,w4,w6,w7)。抽取/跳过向量905用作应当跳过字地址中的哪些值以及应当抽取字地址中的哪些值用于处理(例如,用于卷积过程)的指示符。抽取/跳过向量905可以被配置为或称为与稀疏核902相关联的稀疏映射位向量。在其他实施方式中,稀疏核902可以被配置为一维扩张输入核、二维扩张输入核等。打包向量904的字地址w0、w2、w5和w8可以对应于图8的核足迹位置802至808,其中在对应字地址w0、w2、w5和w8处的打包数据项可以用于cpu 604上执行的后续卷积处理。
[0106]
表900包括多个列906至928,多个列906至928与抽取地址生成器单元608和稀疏聚集单元610的输入/输出值对应,同时处理稀疏核902的输入。抽取地址生成器单元608包括表900中的五列,即核项坐标列906、抽取字地址列908、第一项编号列910、项的数量列912和填充掩码列914。核项坐标列906包括对应核足迹位置的起始位置的左上角坐标。例如,核项坐标(-1,0)可以对应于第一核足迹802的左上坐标,核项坐标(0,0)可以对应于第二核足迹804的左上坐标,以此类推。抽取地址生成器单元608被配置成针对列906中的每个核项坐标生成字地址流(例如,抽取字地址栏908)和子字数据项选择(例如,第一项编号列910、项的数量列912以及填充掩码列914)。
[0107]
抽取字地址列908包括与对应核足迹位置的窗口内的至少一段字地址对应的抽取字地址。例如,第一核足迹802至少部分地位于字地址a’至f’中与第一核足迹802的抽取字地址对应的段之上,第二核足迹804至少部分地位于字地址d’至f’中与第二核足迹804的抽取字地址对应的段上,依此类推。
[0108]
第一项编号列910指示包括在列908中的每个抽取字地址的核足迹位置的窗口内的第一子字数据项的位置。项的数量列912包括在列908中的每个抽取字地址的核足迹位置的窗口内的子字数据项的数量。此外,填充掩码列914指示列908中的每个抽取字地址的填充掩码。在实施方式中,填充掩码用作关于是否将抽取或忽略在对应抽取字地址处的打包
子字数据项的抑制指示符。填充掩码可以根据存储在对应抽取字地址中的打包子字数据项的坐标来确定。这是因为填充数据或跳过数据元素隐含在存储在抽取字地址处的打包数据的生成元素中。此外,包括所有“0”的填充掩码指示应该由稀疏聚集单元610抑制对对应打包子字数据项的抽取。
[0109]
存储器抽取单元606的缓存例如环形缓冲区缓存器710包括表900中的三列,即添加/删除列916、缓存坐标列918和缓存地址列920。添加/删除列916对应于在对应核足迹位置期间添加至缓存或从缓存删除的打包存储器字的列。添加至缓存中或从缓存中删除的列的数量可以基于当核从核足迹位置移位至相邻踪迹位置时核足迹的左手和右手“边缘”如何越过字边界来确定。例如,在第一核足迹位置802处,基于对应的抽取字地址(例如,与存储器地址a’至c’对应的打包存储器字和与存储器地址d’至f’对应的打包存储器字)将两列打包存储器字添加至缓存。此外,当核从第一核足迹位置802滑动至第二核足迹位置804时,核的左手边缘越过字边界(例如,在列-1和列0之间),这引起缓存删除一列打包存储器字(对应于存储器地址a’至c’)。这可以重复直到所有核足迹位置用完为止。此外,如果核的右手边缘越过字边界,则一列打包存储器字可以被添加至缓存。缓存坐标列918包括为核足迹位置生成的核存储器字地址,其中最大踪迹字维度由(w,h)表示(其中,w和h是可以相同或不同的正整数)。此外,缓存地址列920包括缓存中对应于对应核存储器字的位置的地址。
[0110]
存储器抽取单元606的稀疏聚集单元610包括表900中的四列,即剩余抽取/跳过列922、字对齐抽取/跳过列924、存储器读取列926和输出项列928。剩余抽取/跳过列922示出了抽取/跳过向量905的下划线位,该下划线位对应于可以为对应的抽取字地址抽取的打包子字数据项的数量。字对齐抽取/跳过列924对应于指示针对对应抽取字地址待抽取的打包子字数据项的位。存储器读取列926指示何时执行存储器读取操作以针对对应的抽取字地址抽取打包字数据、或何时针对对应的抽取字地址抑制存储器读取操作。例如,存储器读取列926中的未斜体化抽取字地址指示稀疏聚集单元610何时从存储器(例如,从存储器存储设备614)直接地抽取对应的打包字,并且斜体化和下划线的抽取字地址指示稀疏聚集单元610何时从缓存(例如,从环形缓冲区缓存器710)直接地抽取对应的打包字。
[0111]
在实施方式中,每个抽取字地址包括可以由稀疏聚集单元610抽取并随后输出用于后续处理(例如,到数据解包单元612)的数据项/(针对对应抽取字地址的列912)的数量。数据项/的数量可以用于将一个或多个位移出剩余抽取/跳过向量r(列922)的左手侧,使得在针对对应的核足迹从列922的顶部转送至列922的底部时剩余抽取/跳过向量r被消耗。此外,第一数据项编号n(列910)可以表示为0个填充位,被配置成对移出向量r的位进行字对齐。例如,对于在核项坐标(-1,0)中的抽取字地址a’,第一数据项编号n可以配置为表示为0,0,0的填充位,并且填充位随后被追加至移出向量r的位,使得得到的字对齐抽取/跳过掩码可以表示为0,0,0,1。随后,对得到的字对齐抽取/跳过掩码(包含0,0,0,1)和对应的填充掩码(包含0,0,0,0)执行按位与运算,以生成包含0,0,0,0的对应字对齐抽取/跳过向量f(列926)。稀疏聚集单元610被配置成针对列908中的每个抽取字地址重复该过程,从而针对列908中的每个抽取字地址生成向量f。
[0112]
此外,字对齐的抽取/跳过向量f被配置成指示与从对应的抽取字地址抽取的打包子字数据项对应的抽取位置,以及可以对应于未被抽取的打包子字数据项的抽取抑制位置,然而对应的未抽取的打包子字数据项可以作为零值输出。包含值为“1”的向量f(i)的位
值指示针对对应抽取字地址的抽取位置,以及值为“0”指示对应抽取字地址的抽取抑制位置,其中i为可以包括0、1、2、3的索引。例如,核项坐标(0,0)中与抽取字地址d’对应的向量f(i)可以表示为1,0,1,0,其中抽取字地址d’的第一打包子字数据项是从与地址d’[0]对应的存储器(例如,存储设备或缓存单元)中抽取的,以及抽取字地址d’的第三打包子字数据项是从与地址d’[2]对应的存储器中抽取的。在这样的实施方式中,分别与地址d’[1]和d’[3]对应的抽取字地址的第二打包子字数据项和第四打包子字数据项可以有其抽取被抑制并且可以作为零值输出。
[0113]
稀疏聚集单元612被配置成确定针对每个抽取字地址的输出项列928。此外,输出项列928中的空值或0值可以被输出为填充数据以进行后续处理步骤。在一个实施方式中,稀疏聚集单元612被配置成从每个抽取字地址依次输出打包的子字数据项。例如,对于核项坐标(0,0),将需要针对抽取存储器字d’输出的两个打包子字数据项输出为d’[0],然后是d’[2]。
[0114]
参照图10,示出了根据本公开内容中描述的各个方面/实施方式/细节的用于在紧凑型微控制器(uc)设备上加速聚集和解包用于ann计算的数据的执行的处理流程1000。方法1000在1002处开始,其中,通过存储器抽取装置(例如,存储器抽取单元606)确定存储在存储器装置(例如,存储器存储设备614)上的打包数据的多个地址和抑制指示符(例如,填充掩码),其中,抑制指示符标识与存储器装置(例如,存储器存储设备614)上生成的打包数据相关联的多个地址的子集。在实施方式中,多个地址对应于与对应于核过滤器的核足迹相关联的抽取字地址。
[0115]
在1004处,通过存储器抽取装置,基于多个地址和抑制指示符从存储器抽取存储的打包数据。
[0116]
在1006处,通过存储器抽取装置,基于抑制指示符生成生成的打包数据。
[0117]
在1008处,通过存储器抽取装置,基于微控制器(例如,cpu 604)的预定义数据结构,根据存储的打包数据或生成的打包数据构建格式化数据。在实施方式中,构建格式化数据包括根据偏移、位移位、缩放、舍入、查表和可变长度编码(例如,霍夫曼编码)中的至少一个来对所存储的打包数据进行解压缩或压缩。
[0118]
根据本文描述的实施方式和示例,示例(实施方式)可以包括例如以下主题:用于执行方法的行动或块的方法、装置;包括指令的至少一个机器可读介质,当由机器(例如,具有存储器的处理器、专用集成电路(asic)、现场可编程门阵列(fpga)等)执行所述指令时,使机器使用多种通信技术来执行针对并发通信的方法的或装置或系统的动作。
[0119]
第一示例是处理设备中采用的装置,该装置包括:处理器,其被配置成处理具有预定义数据结构的数据;存储器抽取装置,其耦接至处理器,该存储器抽取装置被配置成确定针对处理器的打包数据的地址,其中,打包数据存储在耦接至处理器的存储器装置上;以及基于打包数据的地址向处理器提供输出数据,其中,输出数据是根据预定义数据结构配置的。
[0120]
第二示例可以包括第一示例,其中,存储器抽取装置被配置成从指令存储器至少部分地抽取打包数据。
[0121]
第三示例可以包括第一或第二示例,其中,存储器抽取装置被配置成与处理器的指令抽取装置共享资源。
[0122]
第四示例可以包括第一至第三示例中的任何一个或更多个,其中,打包数据包括存储数据和生成数据,其中,存储器抽取装置被配置成确定与存储数据相关联的第一地址集合以及与生成数据相关联的第二地址集合。
[0123]
第五示例可以包括第一至第四示例中的任何一个或更多个,其中,生成数据包括填充数据。
[0124]
第六示例可以包括第一至第五示例中的任何一个或更多个,其中,存储器抽取装置被配置成根据第一地址集合选择性地抽取存储数据,并且其中,存储器抽取装置还被配置成忽略与生成数据相关联的第二地址集合。
[0125]
第七示例可以包括第一至第六示例中的任何一个或更多个,其中,存储数据包括一个或更多个冗余存储器字,其中,存储器抽取装置包括被配置成存储冗余存储器字的循环缓冲区,并且其中,存储数据基于存储在循环缓冲区中的冗余存储器字被选择性地抽取。
[0126]
第八示例可以包括第一至第七示例中的任何一个或更多个,其中,存储器抽取装置被配置成基于第一地址集合从存储器装置选择性地一次抽取存储数据的冗余存储器字。
[0127]
第九示例可以包括第一至第八示例中的任何一个或更多个,其中,存储器抽取装置还被配置成通过根据处理器的预定义数据结构对打包数据的存储数据进行格式化来提供输出数据。
[0128]
第十示例可以包括第一至第九示例中的任何一个或更多个,其中,存储器抽取装置还被配置成通过对格式化的存储数据进一步进行解压缩来提供输出数据。
[0129]
第十一示例可以是用于人工神经网络(ann)的装置,该装置包括:微控制器,其被配置成耦接至存储器装置并被配置成处理数据流,其中,数据流被配置成匹配预定义精度、预定义布局或预定义数据结构中的至少一个;数据流抽取装置,其耦接至存储器装置和微控制器,数据流抽取装置被配置成处理存储在存储器装置上的数据并向微控制器提供连续输出流,其中,数据流抽取装置包括:地址生成器部件,其被配置成生成存储在存储器装置上的数据的多个数据地址;数据抽取部件,其被配置成基于多个数据地址从存储器装置引入选择的数据;以及数据格式化部件,其被配置成向微控制器提供连续输出流。
[0130]
第十二示例可以包括第十一示例,其中,数据格式化部件还被配置成提供与所选择的数据相匹配的数据格式和微控制器的数据指令集。
[0131]
第十三示例可以包括第十一至第十二示例中的任何一个或更多个,其中,数据抽取部件还被配置成从指令存储器至少部分地引入所选择的数据,并且其中,数据抽取部件还被配置成与微控制器的指令抽取装置共享资源。
[0132]
第十四示例可以包括第十一至第十三示例中的任何一个或更多个,其中,地址生成器部件被配置成生成针对多个数据地址中的每一个的抑制指示符,其中,所选择的数据是基于抑制指示符而被引入的,并且其中,抑制指示符根据预定义数据结构与要被生成的数据替换的数据相关联。
[0133]
第十五示例可以包括第十一至第十四示例中的任何一个或更多个,其中,数据抽取部件还被配置成基于预定义的或从存储器抽取的控制信息来跳过数据。
[0134]
第十六示例可以包括第十一至第十五示例中的任何一个或更多个,其中,数据抽取部件还被配置成对一连串连续的可变长度编码数据进行解压缩。
[0135]
第十七示例可以包括第十一至第十六示例中的任何一个或更多个,其中,多个数
据地址的子集与一个或更多个重复字相关联,其中,数据抽取部件包括环形缓冲区缓存器,环形缓冲区缓存器被配置成存储一个或更多个重复字使得数据抽取部件从存储器装置一次引入一个或更多个重复字,并且其中,所选择的数据在已经存储在环形缓冲区缓存器时从环形缓冲区缓存器中抽取。
[0136]
第十八示例可以是用于人工神经网络(ann)的方法,该方法包括:通过存储器抽取装置确定存储在存储器装置上的打包数据的多个地址和抑制指示符,其中,抑制指示符标识与存储器装置上生成的打包数据相关联的多个地址的子集;通过存储器抽取装置,基于多个地址和抑制指示符从存储器抽取存储的打包数据;通过存储器抽取装置,基于抑制指示符生成生成的打包数据;以及通过存储器抽取装置,基于微控制器的预定义数据结构,根据所存储的打包数据或所生成的打包数据构建格式化数据。
[0137]
第十九示例可以包括第十八示例,还包括:基于预定义或从存储器抽取的控制信息通过存储器抽取装置跳过数据。
[0138]
第二十示例包括第十八至第十九示例中的任何一个或更多个,其中,构建格式化数据包括根据偏移、位移位、缩放、舍入、查找表和可变长度编码中的至少一个来对所存储的打包数据进行解压缩或压缩。
[0139]
应用(例如,程序模块)可以包括执行特定任务或实现特定抽象数据类型的例程、程序、部件、数据结构等。此外,本领域技术人员将理解,所公开的操作可以用其他系统配置来实践,所述其他系统配置包括单处理器或多处理器系统、小型计算机、大型计算机以及个人计算机、手持计算设备、基于微处理器或可编程的消费性电子产品等,上述中的每一个均可以可操作地耦接至一个或更多个相关联的设备。
[0140]
计算设备通常可以包括多种计算机可读介质。计算机可读介质可以是可以由计算机访问的任何可用介质,并且包括易失性和非易失性介质、可移动和不可移动介质两者。作为示例而非限制,计算机可读介质可以包括计算机存储介质和通信介质。计算机存储介质包括以任何方法或技术实现的用于存储诸如计算机可读指令、数据结构、程序模块或其他数据的信息的易失性和非易失性、可移动和不可移动介质两者。计算机存储介质(例如,一个或更多个数据存储)可以包括但不限于ram、rom、eeprom、闪存或其他存储器技术、cd rom、数字通用盘(dvd)或其他光盘存储装置、磁带盒、磁带、磁盘存储装置或其他磁存储设备、或者可以用于存储所需信息并且可以由计算机访问的任何其他介质。
[0141]
通信介质通常包含计算机可读指令、数据结构、程序模块或调制数据信号形式例如载波或其他传输机制的其他数据,并且包括任何信息传递介质。术语“调制数据信号”意指具有以对信号中的信息进行编码的方式设置或改变其特征中的一个或更多个的信号。作为示例而非限制,通信介质包括诸如有线网络或直接有线连接的有线介质,以及诸如声学、rf、红外以及其他无线介质的无线介质。以上任何的组合也应当包括在计算机可读介质的范围内。
[0142]
应当理解,本文描述的方面可以通过硬件、软件、固件或其任何组合来实现。当以软件来实现时,可以将功能作为一个或更多个指令或代码存储在计算机可读介质上或通过计算机可读介质传输。计算机可读介质包括计算机存储媒介以及包括便利计算机程序从一个地点传送至另一个地点的任意介质的通信媒介两者。存储介质可以是可以由通用或专用计算机访问的任何可用介质。作为示例而非限制,这样的计算机可读介质可以包括ram、
rom、eeprom、cd-rom或其他光盘存储装置、磁盘存储装置或其他磁存储设备,或可以用于以指令或数据结构的形式携带或存储期望的程序代码构件并且可以由通用或专用计算机或通用处理器或专用处理器访问的任何其他介质。另外,任何连接被适当地称为计算机可读介质。例如,如果使用同轴电缆、光纤、双绞线、数字用户线(dsl)或无线技术例如红外、无线电以及微波从网站、服务器或其他远程源发送软件,则同轴电缆、光纤、双绞线、dsl或无线技术例如红外、无线电以及微波被包括在介质的定义中。如本文中所使用的盘(disk)和碟包括致密碟(cd)、激光碟、光碟、数字通用碟(dvd)、软盘和蓝光碟,其中,盘通常以磁性方式再现数据,而碟使用激光以光学的方式再现数据。上述的组合也应当包括在计算机可读介质的范围内。
[0143]
结合在本文中所公开的各方面描述的各种示例性逻辑、逻辑块、模块以及电路可以通过被设计成执行本文中描述的功能的通用处理器、数字信号处理器(dsp)、专用集成电路(asic)、现场可编程门阵列(fpga)或其他可编程逻辑设备、离散门或晶体管逻辑、离散硬件部件或其组合来实现或执行。通用处理器可以是微处理器,但是可替选地,处理器可以是任何常规的处理器、控制器、微控制器或状态机。处理器也可以被实现为计算设备的组合,例如dsp和微处理器的组合、多个微处理器、一个或更多个微处理器与dsp内核的结合、或者任何其他这样的配置。此外,至少一个处理器可以包括一个或更多个模块,所述一个或更多个模块可操作以执行本文所述的行动和/或动作中的一个或更多个。
[0144]
对于软件实现,本文描述的技术可以用执行本文描述的功能的模块(例如,过程、功能等)来实现。软件代码可以存储在存储器单元中并由处理器执行。在存储器单元可以通过本领域已知的各种手段与处理器通信地耦接的情况下,存储单元可以在处理器内或在处理器外部实现。此外,至少一个处理器可以包括一个或更多个模块,所述一个或更多个模块可操作以执行本文所述的功能。
[0145]
本文所述的技术可以用于各种无线通信系统,例如cdma、tdma、fdma、ofdma、sc-fdma和其他系统。术语“系统”和“网络”经常互换使用。cdma系统可以实现诸如通用陆地无线电接入(utra)、cdma2000等的无线电技术。utra包括宽带cdma(w-cdma)和cdma的其他变体。此外,cdma2000涵盖is-2000、is-95和is-856标准。tdma系统可以实现诸如全球移动通信系统(gsm)的无线电技术。ofdma系统可以实现诸如演进的utra(e-utra)、超移动宽带(umb)、ieee 802.11(wi-fi)、ieee 802.16(wimax)、ieee 802.20、flash-ofdm等的无线电技术。utra和e-utra是通用移动电信系统(umts)的一部分。3gpp长期演进(lte)是使用e-utra的umts版本,3gpp长期演进(lte)在下行链路上采用ofdma,在上行链路上采用sc-fdma。utra、e-utra、umts、lte和gsm在来自名为“第三代合作伙伴计划”(3gpp)的组织的文件中进行了描述。此外,cdma2000和umb在来自名为“第三代合作伙伴计划2”(3gpp2)的组织的文件中进行了描述。此外,这样的无线通信系统可以另外地包括通常使用未配对的未授权频谱、802.xx无线lan、bluetooth和任何其他短程或长程无线通信技术的对等(例如,移动到移动)自组织网络系统。
[0146]
利用单载波调制和频域均衡的单载波频分多址(sc-fdma)是可以与所公开的方面一起使用的技术。sc-fdma与ofdma系统具有相似的性能和基本上相似的整体复杂度。sc-fdma信号由于其固有的单载波结构而具有较低的峰均功率比(papr)。sc-fdma可以用于上行链路通信,其中较低的papr可以使移动终端在发射功率效率方面受益。
[0147]
此外,本文描述的各个方面或特征可以使用标准编程和/或工程技术实现为方法、装置或制品。如本文中所使用的,术语“制品”旨在包括能够从任何计算机可读装置、载体或介质访问的计算机程序。例如,计算机可读介质可以包括但不限于磁存储装置(例如,硬盘、软盘、磁条等)、光碟(例如,致密碟(cd)、数字通用碟(dvd)等)、智能卡和闪存设备(例如,eprom、卡、杆、密钥驱动器等)。此外,本文描述的各种存储介质可以表示一个或更多个设备和/或用于存储信息的其他机器可读介质。术语“机器可读介质”可以包括但不限于能够存储、包含和/或携带指令和/或数据的无线信道和各种其他介质。此外,计算机程序产品可以包括具有一个或更多个指令或代码的计算机可读介质,所述一个或更多个指令或代码可操作以使计算机执行本文所述的功能。
[0148]
此外,结合在本文中所公开方面所描述的方法或算法的行动和/或动作可以直接实施为硬件、由处理器执行的软件模块或其组合。软件模块可以驻留在ram存储器、闪存存储器、rom存储器、eprom存储器、eeprom存储器、寄存器、硬盘、可拆除盘、cd-rom或本领域中已知的任何其他形式的存储介质中。示例性存储介质可以耦接至处理器,使得处理器可以从存储介质读取信息和向存储介质写入信息。在替选实施方式中,存储介质可以是处理器的组成部分。此外,在一些方面,处理器和存储介质可以驻留在asic中。另外,asic可以驻留在用户终端中。在替选实施方式中,处理器和存储介质可以驻留作为用户终端的离散部件。另外,在一些方面,方法或算法的行动和/或动作可以驻留作为机器可读介质和/或计算机可读介质上的、可以被纳入计算机程序产品中的代码和/或指令中的一个或任意组合或集合。
[0149]
本主题公开内容的所示实施方式的以上描述(包括摘要中所描述的内容)并非旨在是穷尽性的或者将公开的实施方式限制于所公开的确切形式。尽管出于说明的目的在本文中描述了特定实施方式和示例,但如相关领域的技术人员能够认识到的,在这样的实施方式和示例的范围内考虑的各种修改是可能的。
[0150]
就这点而言,虽然已经结合各种实施方式和对应的图描述了所公开的主题,但在适用的情况下,应当理解,可以使用其他类似的实施方式或者在不偏离所描述的实现方式的情况下,可以针对所描述的实施方式进行修改和添加,以用于执行所公开的主题的相同、相似、替选或替代功能。因此,所公开的主题不应限于本文所述的任何单个实施方式,而是应根据所附权利要求在广度和范围上进行解释。
[0151]
特别地,关于由上面描述的部件或结构(组件、设备、电路、系统等)执行的各种功能,除非另有指示,否则用于描述这样的部件的术语(包括对“装置”的引用)旨在与执行所描述的部件的指定功能的(例如,在功能上等同的)任何部件或结构对应,即使在执行本发明在本文中所示出的示例性实现方式中的功能的在结构上不等同于所公开结构的情况下也是如此。另外,尽管可能关于若干实现方式中的仅一个实施方式已经公开了特定的特征,但是可以将这样的特征与可预期的其他实现方式的一个或更多个其他特征进行组合,并且对任何给定的或特定的应用来说是有利的。
再多了解一些

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

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

相关文献