CN110197111A - 用于深度学习引擎的加速单元 - Google Patents

用于深度学习引擎的加速单元 Download PDF

Info

Publication number
CN110197111A
CN110197111A CN201910143490.3A CN201910143490A CN110197111A CN 110197111 A CN110197111 A CN 110197111A CN 201910143490 A CN201910143490 A CN 201910143490A CN 110197111 A CN110197111 A CN 110197111A
Authority
CN
China
Prior art keywords
data
input
function
activation primitive
kernel
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.)
Granted
Application number
CN201910143490.3A
Other languages
English (en)
Other versions
CN110197111B (zh
Inventor
S·P·辛格
T·勃伊施
G·德索利
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
STMicroelectronics SRL
STMicroelectronics International NV
Original Assignee
STMicroelectronics SRL
STMicroelectronics International NV
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by STMicroelectronics SRL, STMicroelectronics International NV filed Critical STMicroelectronics SRL
Publication of CN110197111A publication Critical patent/CN110197111A/zh
Application granted granted Critical
Publication of CN110197111B publication Critical patent/CN110197111B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/17Function evaluation by approximation methods, e.g. inter- or extrapolation, smoothing, least mean square method
    • G06F17/175Function evaluation by approximation methods, e.g. inter- or extrapolation, smoothing, least mean square method of multidimensional data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/0464Convolutional networks [CNN, ConvNet]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/048Activation functions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V40/00Recognition of biometric, human-related or animal-related patterns in image or video data
    • G06V40/10Human or animal bodies, e.g. vehicle occupants or pedestrians; Body parts, e.g. hands
    • G06V40/16Human faces, e.g. facial parts, sketches or expressions
    • G06V40/172Classification, e.g. identification

Abstract

本公开涉及用于深度学习引擎的加速单元。设备的实施例包括:集成电路、形成在集成电路中的可重构流开关以及多个卷积加速器和耦合至可重构流开关的算术单元。算术单元具有至少一个输入和至少一个输出。至少一个输入被布置为接收通过所述可重构流开关传送的流数据,而至少一个输出被布置为通过所述可重构流开关来流传输结果数据。算术单元还具有多条数据路径。索条数据路径中的至少一条数据路径仅专用于执行加速以分段二阶多项式近似的形式表示的激活函数的操作。

Description

用于深度学习引擎的加速单元
技术领域
本公开总体上涉及提高深度机器学习系统的灵活性、数据局部性 和更快执行的结构,例如在卷积神经网络(CNN)中。更具体地但不 排他地,本公开涉及用于深度学习加速引擎的激活函数加速器。
背景技术
已知的计算机视觉、语音识别和信号处理应用受益于学习机器的 使用。在本公开讨论的学习机器可以归于机器学习、人工智能、神经 网络、概率推理引擎、加速器等的技术标题。这种机器被布置为快速 地执行几百、几千、几百万个并发操作。传统的学习机器可以实现数 百TeraFlops(即,每秒一百万(1012)浮点运算)的计算能力。
在一些情况下,学习机器被组织为深度卷积神经网络(DCNN)。 DCNN领域中的开创性工作是Y.LeCun等人的“Gradient-Based Learning Applied To DocumentRecognition”(IEEE学报,第86卷, 第11期,第2278-2324页,1998年),这使得“AlexNet”在2012 年ImageNet大规模视觉识别挑战赛中获胜。如Krizhevsky A.、 Sutskever I.和Hinton G.的“ImageNet Classification With Deep Convolutional Neural Networks”(NIPS,1-9页,太皓湖,NV(2012)) 所描述的,“AlexNet”是首次显著优于经典方法的DCNN。
DCNN是一种基于计算机的工具,其处理大量的数据,并且通过 合并数据内最相关的特征、对数据进行广泛的预测并基于可靠的结论 和新的合并精炼预测来自适应地“学习”。DCNN被布置在多个“层” 中,并且在每一层进行不同类型的预测。
例如,如果向DCNN提供人脸的多个二维图片作为输入,则 DCNN将学习人脸的各种特征,诸如边缘、曲线、角度、点、颜色对 比、亮点、暗点等。在DCNN的一个或多个第一层处学习这些一个 或多个特征。然后,在一个或多个第二层中,DCNN将学习人脸的各 种可识别特征,诸如眼睛、眉毛、额头、头发、鼻子、嘴巴、脸颊等, 每个特征都与所有其他特征不同。即,DCNN学习识别并区分眼睛与 眉毛或任何其他面部特征。在一个或多个第三层以及随后的层中, DCNN学习整个脸部和高阶特性,诸如种族、性别、年龄、情绪状态 等。在一些情况下,甚至还教DCNN识别人的特定身份。例如,可 以将随机图像识别为面部,并且可以将面部识别为奥兰多·布鲁姆、 安德烈·波伽利或一些其他身份。
在其它示例中,可以向DCNN提供多个动物图片,并且DCNN 可以通过学习识别狮子、老虎和熊;可以向DCNN提供多个汽车图 片,并且DCNN可以通过学习识别和区分不同类型的车辆;并且还 可以形成许多其他DCNN。DCNN可用于学习句子中的单词模式、识 别音乐、分析各个购物模式、玩电子游戏、创建交通路线,并且DCNN 还可用于许多其他基于学习的任务。
图1A至图1J在本文可以统称为图1。
图1A是卷积神经网络(CNN)系统10的简化示图。在CNN系 统中,二维像素阵列被CNN处理。CNN分析10×10的输入对象平面, 以确定是否在平面中表示“1”、是否在平面中表示“0”、或者是否 在平面中既没有实现“1”也没有实现“0”。
在10×10输入对象平面中,每个像素被照明或者不被照明。为 了简化说明,被照明的像素被填充(例如,深色),而未照明的像素 没有被填充(例如,浅色)。
图1B示出了图1A的CNN系统10确定第一像素图案示出“1” 且第二像素图案示出“0”。然而,在现实世界中,图像并不总是如 图1B所示那样干净地对齐。
在图1C中,示出了不同形式的1和0的几种变化。在这些图像 中,普通的人类观看者将容易地识别特定数字被平移或缩放,但是观 看者还将正确地确定图像是否表示为“1”或“0”。沿着这些线,在 没有有意识的思考的情况下,人类观看者看到的不仅仅是图像旋转、 数字的各种加权、数字的大小、偏移、反转、重叠、分割、同一图像 中的多个数字以及其他这种特性。然而,以编程方式,在传统计算系 统中,这种分析非常困难。已知多种图像匹配技术,但是即使图像尺 寸很小,这种类型的分析也会快速地覆盖可用的计算资源。然而,相 比之下,即使CNN系统10以前从未“看到”过准确的图像,CNN 系统10也能够以可接受的精度正确地识别每个被处理图像中的1、0、 或者既是1也是0、或者既不是1也不是0。
图1D表示CNN操作,其分析(例如,数学地组合)未知图像的 部分与已知图像的相应部分。例如,可以将左侧未知图像的3像素部 分B5-C6-D7识别为与右侧已知图像的相应3像素部分C7-D8-E9匹 配。在这些和其他情况下,也可以识别各种其他相应的像素布置。表格1中示出了一些其他对应关系。
表格1-将已知图像片段对应到未知图像片段
认识到已知图像的片段或部分可以与未知图像的相应片段或部 分匹配,还应理解,通过统一部分匹配操作,可以完全相同的方式处 理整个图像,同时实现先前未计算的结果。换句话说,可以选择特定 的部分大小,然后可以逐部分地分析已知图像。当已知图像的任何给 定部分内的图案与未知图像的类似大小的部分进行数学组合时,生成 表示各部分之间的相似性的信息。
图1E示出了图1D的右侧已知图像的六个部分。每个部分(也被 称为“内核”)被布置为3像素×3像素的阵列。计算地,被照明的 像素被数学地表示为正“1”(即,+1);而未被照明的像素被数学 地表示为负“1”(即,-1)。为了简化图1E中的说明,还用图1D 的列和行参考示出了每个所示的内核。
为了便于理解CNN系统10的操作,图1E中所示的六个内核具 有代表性并被选择。显然,已知图像可以用重叠或不重叠内核的有限 集合来表示。例如,考虑3像素×3像素的内核大小和具有一(1)的 步长的重叠内核的系统,每个10×10像素图像可以具有64个对应的 内核。
第一内核跨越列A、B、C和行1、2、3中的9个像素。
第二内核跨越列B、C、D和行1、2、3中的9个像素。
第三内核跨越列C、D、E和行1、2、3中的9个像素。
这种内核图案一直持续,直到第八内核跨越列H、I、J和行1、2、 3中的9个像素。
内核对准以这种方式继续,直到第57个内核跨越列A、B、C和 行8、9、10等等,直到第64个内核跨越列H、I、J和行8、9、10。
在其它CNN系统中,内核可以重叠或不重叠,并且内核可具有2、 3或一些其他数量的步长。用于选择内核大小、步长、位置等的不同 策略通过CNN系统设计人员基于过去的结果、分析研究或以一些其 他方式而选择的。
返回到图1D和图1E的示例,使用已知图像中的信息形成共64 个内核。第一内核以3×3阵列中的最上最左的9个像素开始。接下来 的七个内核顺序地向右偏移一列。第九个内核返回前三列,并且下拉 到第二行,类似于基于文本的文档的回车操作,这个概念来源于20 世纪的手动打字机。按照这种图案,图1E示出了图1D(b)中的10 ×10图像中的第7、18、24、32、60和62个内核。
顺序地或者以一些其他已知图案,已知图像的每个内核与被分析 图像的像素的相应大小的集合对齐。例如,在充分分析的系统中,已 知图像的第一内核在每个内核位置中概念性地覆盖在未知图像上。考 虑图1D和图1E,在内核第1号位置(图像的最左、最上部分)中将 第一内核概念性地覆盖在未知图像上,然后在内核第2号位置中将第 一内核概念性地覆盖在未知图像上,如此类推,直到在内核第64号 位置(图像的最下、最右部分)中将第一内核概念性地覆盖在未知图 像上。对64个内核中的每个内核重复该过程,并且总共执行4096次 操作(即,64个位置中的每个位置中的64个内核)。以这种方式, 还示出:当其他CNN系统选择不同的内核大小、不同的步长和概念 覆盖的不同图案时,操作的数量将改变。
在CNN系统10中,每个内核在被分析的未知图像的每个部分上 的概念覆盖被执行为称为卷积的数学处理。基于像素被照明还是没有 被照明,内核中的九个像素中的每一个像素被赋予正值“1”(+1) 或负值“1”(-1),并且当内核被覆盖在被分析图像的部分上时,内核中的每个像素的值乘以图像中相应像素的值。由于每个像素具有 值+1(即,被照明)或-1(即,未被照明),所以乘法将总是导致+1 或-1。另外,由于4096次内核操作中的每个操作都使用9像素内核 来处理,因此在非常简单的CNN中,在单个未知图像分析的第一阶 段执行共36,864次数学操作(即,9×4096)。显然,即使是简单的 CNN系统也需要巨大的计算资源,而且对于更复杂的CNN系统的计 算需求呈指数增长。
如前所述,内核中的9个像素中的每个像素乘以被分析图像中的 对应像素。当内核中的未照明像素(-1)与对象未知图像中的未照明 像素(-1)相乘时,将在该像素位置(即,内核和图像都具有未照明 像素)处产生指示“匹配”的+1。类似地,内核中的照明像素(+1) 乘以未知图像中的照明像素(+1)也产生匹配(+1)。另一方面,当 内核中的未照明像素(-1)与图像中的照明像素(+1)相乘时,结果 指示在该像素位置处没有匹配(-1)。此外,当内核中的照明像素(+1) 与图像中的未照明像素(-1)相乘时,结果也指示在该像素位置处没 有匹配(-1)。
在执行单个内核的九次乘法运算之后,乘积结果将包括九个值; 九个值中的每个值要么为正值(+1),要么为负值(-1)。如果内核 中的每个像素与未知图像的相应部分中的每个像素匹配,则乘积结果 将包括九个正1(+1)值。备选地,如果内核中的一个或多个像素与 被分析未知图像的部分中的对应像素不匹配,则乘积结果将具有至少 一些负1(-1)值。如果内核中的每个像素都不能匹配被分析未知图 像的对应部分中的对应像素,则乘积结果将包括九个负1(-1)值。
考虑像素的数学组合(即,乘法运算),应理解,乘积结果中的 正1(+1)值的数目和负1(-1)值的数目表示内核中的特征与内核 概念重叠的图像部分匹配的程度。因此,通过将所有乘积相加(例如, 将九个值相加)并除以像素数(例如,9),确定单个“质量值”。 该质量值表示内核与被分析未知图像的部分之间的匹配程度。,质量 值可以为从没有内核像素匹配时的负1(-1)到内核中的每个像素与 未知图像中的对应像素具有相同的照明/未照明状态时的正1(+1)。
本文参照图1E描述的动作也可以统称为“过滤”操作中的第一 卷积处理。在过滤操作中,在未知图像中搜索对已知图像中感兴趣的 特定部分。过滤器的目的是通过相应的似然预测来识别在未知图像中 是否找到以及在何处找到感兴趣的特征。
图1F示出了过滤处理中的十二个卷积动作。图1G示出了图1F 的12个卷积动作的结果。在每个动作中,利用所选内核处理未知图 像的不同部分。在图1B的代表性数字1(“1”)中,所选内核可以 被识别为第十二个内核。代表性的“1”在图1B中形成为10像素×10像素图像中的照明像素的集合。从最上、最左边的边角开始,第一内 核覆盖3像素×3像素的部分。第二至第八内核顺序向右移动一列。 以回车方式,第九内核从第二行、最左边的列开始。对于每个内核, 内核10-16顺序向右移动一列。可以类似地形成内核17-64,使得图1B中的数字“1”的每个特征在至少一个内核中表示。
在图1F(a)中,3像素×3像素的所选内核概念地覆盖在未知图 像的最左、最上的部分上。在这种情况下,所选内核是图1B的数字 “1”的第十二个内核。图1F(a)中的未知图像在人类观察者看来是 偏移的、格式不良的数字1(即“1”)。在卷积处理中,所选内核中 的每个像素的值(对于照明像素为“+1”且对于未照明像素为“-1”) 乘以未知图像中的每个对应像素。在图1F(a)中,五个内核像素被 照明,并且四个内核像素未被照明。未知图像中的每个像素都未被照 明。因此,当执行所有九次乘法时,五个乘积被计算为“-1”,并且 四个乘积被计算为“+1”。九个乘积被相加,并且所得到的值“-1” 除以9。由于这个原因,图1G(a)的对应图像示出了针对未知图像 的最左、最上部分中的内核所得到的“-0.11”的内核值。
在图1F(b)、图1F(c)和图1F(d)中,内核像素横跨图像的 列顺序向右移动。由于在前六列和跨越前六列的前三行的区域中的每 个像素也未被照明,所以图1G(b)、图1G(c)和图1G(d)均示 出了“-0.11”的计算内核值。
图1F(e)和图1G(e)示出了与先前计算的“-0.11”内核值不 同的计算内核值。在图1F(e)中,一个被照明内核像素与未知图像 中的一个被照明像素匹配。通过图1F(e)中的变暗像素表示这种匹 配。由于图1F(e)现在具有不同的匹配/不匹配特性的集合,并且进 一步由于另一内核像素与未知图像中的对应像素匹配,因此预期所得 到的内核值将增加。实际上,如图1G(e)所示,当执行九个乘法操 作时,内核中的四个未照明像素与未知图像中的四个未照明像素匹 配,内核中的一个照明像素与未知图像中的一个照明像素匹配,并且内核中的四个其他照明像素与未知图像中的四个未照明像素不匹配。 当九个乘积相加时,“+1”的结果除以9,对于第五个内核位置中的 计算内核值“+0.11”。
当内核在图1F(f)中进一步向右移动时,不同的被照明内核像 素与未知图像中的对应被照明像素匹配。图1G(f)表示作为内核值 “+0.11”的匹配和不匹配像素的集合。
在图1F(g)中,内核向右再移动一列,并且在这个位置,内核 中的每个像素与未知图像中的每个像素匹配。由于当内核的每个像素 与未知图像中的对应像素相乘时执行九次乘法产生“+1.0”,所以九 个乘积的和被计算为“+9.0”,并且特定位置的最终内核值(即,9.0/9) 被计算为“+1.0”,这表示完美匹配。
在图1F(h)中,内核再次向右移动,这使得单个照明像素匹配、 四个未照明像素匹配以及“+0.11”的内核值,如图1G(h)所示。
内核继续移动,如图1F(i)、图1F(j)、图1F(k)和图1F (l)所示,在每个位置中数学地计算内核值。由于在图1F(i)到图 1F(l)中没有内核的照明像素覆盖在未知图像的照明像素上,所以 针对这些位置中的每一个计算的内核值为“-0.11”。内核值如图1G (i)、图1G(j)、图1G(k)和图1G(l)所示,在相应的四个内 核位置中为“-0.11”。
图1H示出了内核值的映射的堆叠。当图1B中的数字“1”的第 十二个内核移动到未知图像的每个位置时,形成图1H中最顶部的内 核映射(kernel map)。第十二个内核将被识别为图1F(a)-图1F(l) 以及图1G(a)-图1G(l)中的每个图使用的内核。对于所选内核概 念地覆盖在未知图像上的每个位置,计算内核值,并将内核值存储在 内核映射上的相应位置中。
此外,在图1H中,其他过滤器(即,内核)也应用于未知图像。 为了简化讨论,选择图1B中的数字“1”的第29个内核,并且选择 图1B中的数字“1”的第61个内核。对于每个内核,创建不同的内 核映射。所创建的多个内核映射可以被设想为内核映射的堆叠,其深 度等于所应用的过滤器(即,内核)的数量。内核映射的堆叠也可以 称为过滤图像的堆叠。
在CNN系统10的卷积处理中,对单个未知图像进行卷积,以创 建过滤图像的堆叠。堆叠的深度与应用于未知图像的过滤器(即,内 核)的数量相同,或者以其他方式基于未知图像的过滤器(即,内核) 的数量。将过滤器应用于图像的卷积处理也称为“层”,因为它们可 以堆叠在一起。
从图1H明显看出,在卷积分层处理期间生成大量的数据。此外, 每个内核映射(即,每个过滤图像)具有几乎与其原始图像一样多的 值。在图1H所示的示例中,原始未知输入图像通过100个像素 (10×10)形成,并且生成的过滤器映射具有64个值(8×8)。仅仅因为应用的9个像素内核值(3×3)不能完全处理图像边缘处的最外 层像素,所以实现了内核映射大小的简单减小。
图1I示出了显著减少卷积处理产生的数据量的池化特征。可以针 对过滤图像中的一个、一些或所有执行池化处理。图1I中的内核映 射被识别为图1H的最顶部的过滤器映射,其由图1B中的数字“1” 的第12个内核形成。
池化处理引入了“窗口大小”和“步长”的概念。窗口大小是窗 口的尺寸,使得将在池化处理中选择窗口内的单个最大值。窗口可以 形成为具有m像素乘以n像素的尺寸,其中“m”和“n”是整数, 但在大多数情况下,“m”和“n”是相等的。在图1I所示的池化操 作中,每个窗口被形成为2像素×2像素的窗口。在池化操作中,4 像素的窗口概念地覆盖在内核映射的所选部分上,并且在窗口内选择 最高值。
在池化操作中,以类似于将内核概念地覆盖在未知图像上的方 式,池化窗口概念地覆盖在内核映射的每个部分上。“步长”表示在 每次池化操作之后池化窗口移动了多少。如果步长设置为“2”,则 在每次池化动作之后,池化窗口移动两个像素。如果步长设置为“3”, 在每次池化动作之后,池化窗口移动三个像素。
在图1I的池化操作中,池化窗口大小被设置为2×2,并且步长也 设置为2。通过选择内核映射最顶部、最左侧边角中的四个像素来执 行第一个池化操作。由于窗口中的每个内核值都被计算为“-0.11”, 所以池化计算的值也是“-0.11”。“-0.11”的值被放置在图1I中的 池化输出映射的最顶部、最左边的边角中。
然后,通过两个像素的所选步长向右移动池化窗口,并且执行第 二池化动作。再次,由于第二池化窗口中的每个内核值都被计算为 “-0.11”,因此池化计算的值也是“-0.11”。“-0.11”的值被放置在 图1I中的池化输出映射的顶部行的第二条目中。
池化窗口向右移动两个像素的步长,并且评价窗口中的四个值。 第三个池化动作中的四个值是“+0.11”、“+0.11”、“+0.11”和“+0.33”。 这里,在四个内核值的这个组中,“+0.33”是最高值。因此,“+0.33” 的值被放置在图1I中的池化输出映射的顶部行的第三条目中。池化 操作并不关心在窗口中哪里找到最高值,池化操作简单地选择落入窗 口边界内的最高(即,最大)值。
剩余13个池化操作也以类似方式执行,以便填充图1I的池化输 出映射的剩余部分。对于其他生成内核映射的一些或所有(即,过滤 图像),也可以执行类似的池化操作。进一步考虑图1I的池化输出, 并且进一步考虑所选内核(即,图1B中的数字“1”的第十二个内核) 和未知图像,认识到在池化输出的右上角找到最高值。这是因为当内 核特征应用于未知图像时,所选感兴趣的特征(即,内核)的像素与 未知图像中类似布置的像素之间的最高相关性也在右上角找到。还应 认识到,池化输出具有松散地表示未池化的、较大尺寸的内核映射中 的值捕获的值。如果正在搜索未知图像中的特定图案,则可以从池化 输出映射中学习图案的近似位置。即使不能确定该特征的实际位置, 观察者可以识别出该特征在池化输出中检测到。实际特征可以在未知 图像中稍微向左或稍微向右移动,或者实际特征可以旋转或以其他方 式与内核特征不相同,但是尽管如此,可以识别特征的出现及其一般位置。
图1I中还示出了可选的规范化操作。规范化操作通常通过整流线 性单元(ReLU)执行。ReLU标识池化输出映射中的每个负数,并将 负数替换为规范化输出映射中的零值(即,“0”)。由一个或多个 ReLU电路执行的可选规范化处理帮助减少计算资源工作负载,否则 可能被负数执行的计算所需要。
在ReLU层中的处理之后,可以对规范化输出映射中的数据进行 平均,以便预测在未知图像中是否找到由内核表征的感兴趣特征。以 这种方式,规范化输出映射中的每个值被用作加权“投票”,其指示 特征是否存在于图像中。在一些情况下,多个特征(即,内核)被卷 积,并且预测被进一步组合以广泛地表征图像。例如,如图1H所示, 从数字“1”的已知图像得到的三个感兴趣内核与未知图像卷积。在 通过各个层处理每个内核之后,对未知图像是否包括示出数字“1” 的一个或多个像素图案进行预测。
概括图1A至图1I,从已知图像中选择内核。并非已知图像的所 有内核都需要被CNN使用。相反,可以选择被确定为“重要”特征 的内核。在卷积处理产生内核映射(即,特征图像)之后,内核映射 通过池化层和规范化(即,ReLU)层。输出映射中的所有值被平均(即,加法和除法),并且来自平均的输出值被用作未知图像是否包 含已知图像中找到的特定特征的预测。在示例性情况下,输出值用于 预测未知图像是否包含数字“1”。在一些情况下,“投票列表”也 可被用作后续堆叠层的输入。这种处理方式加强了被强烈识别的特 征,并且减少了弱识别(或未识别)特征的影响。考虑到整个CNN, 将二维图像输入CNN,并在其输出处产生选票的集合。输出处的投 票集合被用于预测输入图像是否包含由特征表征的感兴趣对象。
图1A的CNN系统10可以实现为一系列操作层。一个或多个卷 积层后面可跟有一个或多个池化层,并且一个或多个池化层后面可以 可选地跟有一个或多个规范化层。卷积层从单个未知图像中创建多个 内核映射,这些内核映射也被称为过滤图像。利用一个或多个池化层 减少多个过滤图像中较大量的数据,并且进一步通过一个或多个 ReLU层来减少数据量,ReLU层通过去除所有负数来标准化数据。
图1J更详细地显示了图1A的CNN系统10。在图1J(a)中, CNN系统10接受10像素×10像素的输入图像进入CNN。CNN包括 卷积层、池化层、整流线性单元(ReLU)层和投票层。将一个或多 个内核值与未知的10×10图像协同卷积,并将来自卷积层的输出传送 给池化层。对卷积层提供的每个内核映射执行一个或多个最大池化操 作。来自池化层的池化输出映射被用作产生标准化输出映射的ReLU 层的输入,并且包含在标准化输出映射中的数据被相加和相除以确定 关于输入图像是否包括数字“1”或数字“0”的预测。
在图1J(b)中,示出了另一个CNN系统10a。CNN系统10a中 的CNN包括多个层,它们可以包括卷积层、池化层、规范化层和投 票层。来自一层的输出被用作下一层的输入。在每次通过卷积层时, 对数据进行过滤。因此,图像数据和其他类型的数据都可以被卷积以 搜索(即,过滤)任何特定特征。当通过池化层时,输入数据通常保 留其预测信息,但是减少了数据量。由于图1J(b)的CNN系统10a 包括许多层,所以CNN被布置为预测输入图像包含许多不同特征中 的任何一个。
CNN的另一特性是使用反向传播来减少误差,并且提高神经网络 的质量,以在大量输入数据中识别特定特征。例如,如果CNN达到 小于1.0的预测并且预测随后被确定是准确的,则预测值与1.0之间 的差被认为是错误率。由于神经网络的目标是精确地预测输入数据集 合中是否包括特定特征,因此CNN可以进一步定向,以自动调整在 投票层中应用的加权值。
反向传播机制被布置为实现梯度下降的特征。梯度下降可应用于 二维映射,其中映射的一个轴表示“错误率”,而映射的另一个轴表 示“权重”。以这种方式,这种梯度下降映射将优选地呈现抛物线形 状,使得如果错误率较高,则得到的值的权重将较低。随着错误率下 降,所得到的值的权重将增加。因此,当实现反向传播的CNN继续 操作时,CNN的精度具有继续自动提高自身的潜力。
通过将更强大的模型应用于更大的数据集并实现更好的技术来 防止过拟合,提高了使用机器学习方法的已知对象识别技术的性能。 两个已知的大型数据集包括LabelMe和ImageNet。LabelMe包括数十 万个完全分割的图像,并且在ImageNet中包括超过22,000种类别的 多于1500万个高分辨率的标签图像。
为了从数百万张图像中学习数千个对象,应用于图像的模型需要 很大的学习能力。一种具有足够学习能力的模型是卷积神经网络 (CNN)模型。为了补偿缺少关于巨大数据池的特定信息,CNN模 型被布置具有数据集的至少一些先验知识(例如,统计平稳性/非平稳 性、空间性、时间性、像素依赖的局部性等)。CNN模型还布置有 设计者可选择的特征集合,诸如容量、深度、宽度、层数等。
早期的CNN利用大型、专用的超级计算机实现。传统的CNN使 用定制的、功能强大的图形处理单元(GPU)实现。如Krizhevsky的 “与2D卷积的高度优化配对的当前GPU足够强大,以利于训练有趣 的大型CNN,并且最近的数据集(诸如ImageNet)包含足够的标记 示例以训练这种模型,而不具有严重的过度拟合”所描述的。
图2A和图2B在本文可以统称为图2。
图2A是已知的AlexNet DCNN架构的示图。如Krizhevsky所描 述的,图1示出了“两个GPU之间的责任的描述”。一个GPU在图 的顶部运行层部件,而另一个GPU在底部运行层部件。GPU仅在特 定层处通信。网络的输入是150,528维的,并且网络的剩余层中的神 经元数量通过253,440–186,624–64,896–64,896–43,264–4096– 4096-1000来给出”。
Krizhevsky的两个GPU实现了高度优化的二维(2D)卷积框架。 最终的网络包含具有权重的八个学习层。这八层由五个卷积层 CL1-CL5(它们中的一些后面跟有最大池化层)以及具有最终1000 路sortmax(在1000类标签上产生分布)的三个全连接层FC组成。
在图2A中,卷积层CL2、CL4、CL5的内核仅连接至在相同GPU 上处理的前一层的内核映射。相比之下,卷积层CL3的内核连接至卷 积层CL2中的所有内核映射。全连接层FC中的神经元连接至前一层 中的所有神经元。
响应规范化层跟随卷积层CL1、CL2。最大池化层跟随响应规范 化层和卷积层CL5。最大池化层总结相同内核映射中的相邻神经元组 的输出。整流线性单元(ReLU)非线性被应用于每个卷积层和全连 接层的输出。
图1A的AlexNet架构中的第一卷积层CL1利用4像素的步长过 滤具有96个内核的大小为11×11×3的224×224×3输入图像。这个 步长是内核映射中的相邻神经元的接受场中心之间的距离。第二卷积 层CL2以第一卷积层CL1的响应规范化和池化输出作为输入,并过 滤具有大小5×5×48的256个内核的第一卷积层的输出。第三卷积层、 第四卷积层和第五卷积层CL3、CL4、CL5彼此连接,没有任何中间 的池化层或规范化层。第三卷积层CL3具有连接至第二卷积层CL2 的规范化、池化输出的大小为3×3×256的384个内核。第四卷积层 CL4具有大小为3×3×192的384个内核,并且第五卷积层CL5具有 大小为3×3×192的256个内核。全连接层具有4096个神经元。
AlexNet架构的8层深度似乎很重要,因为特定测试揭示,去除 任何卷积层都会导致性能不可接受地降低。网络的大小受所实现GPU 上可用的存储器量和被认为可容忍的训练时间量的限制。图1A的 AlexNet DCNN架构需要花费5到6天时间在两个NVIDIA GEFORCEGTX 580 3GB GPU上进行训练。
图2B是诸如NVIDIA GEFORCE GTX 580GPU的已知GPU的框 图。GPU是流式多处理器,其包含32个采用灵活标量架构的统一设 备架构处理器。GPU被布置用于纹理处理、阴影图处理和其他图形中 心处理。GPU中的32个处理器中的每个处理器均包括全流水线整数算术逻辑单元(ALU)和浮点单元(FPU)。FPU符合用于浮点算术 的IEEE 754-2008行业标准。在这种情况下,GPU是专门被配置用于 桌面应用程序。
GPU中的处理被称为曲数(warps)的32个线程组调度。32个线 程中的每个线程同时执行相同的指令。GPU包括两个曲数调度器和两 个指令分派单元。在这种布置中,两个独立的曲数可以被发出并且同 时执行。
背景技术部分中讨论的所有主题不一定是现有技术,并且不应该 仅仅由于背景技术部分中的讨论而被假定为现有技术。沿着这些思 路,除非明确表示为现有技术,否则背景技术部分中讨论的或与这种 主题相关联的现有技术中的问题的任何识别都不应被视为现有技术。 相反,背景技术部分中任何主题的讨论都应当被当作发明人对特定问 题的处理方法的一部分,该处理方法本身也可具有创造性。
发明内容
可以将一种设备概括为包括:集成电路;可重构流开关,形成在 集成电路中;以及算术单元。算术单元可以被形成为具有:至少一个 输入,被布置为接收通过可重构流开关传送的流数据;至少一个输出, 被布置为通过可重构流开关来流传输(stream)结果数据;以及多条 数据路径,多条数据路径中的至少一条数据路径专用于根据二阶多项 式的近似实现激活函数,二阶多项式具有输出=AX2+BX+C的形式。 多条数据路径中的专用于实现所述激活函数的至少一条数据路径可 专用于实现整流线性单元(ReLU)函数。专用于实现激活函数的至 少一条数据路径可被配置为实现识别函数、二元阶跃函数、软阶跃函 数、双曲正切函数、弧切函数、整流线性单元(ReLU)函数、参数 ReLU函数、指数线性单元函数和软加函数。集成电路可布置用于卷 积神经网络运算。该设备可以包括:系数存储库,耦合至算术单元, 并且系数存储库可以被布置为同时存储至少两个激活函数的系数。
算术单元可被配置为接收流数据作为多维输入特征卷(volume)。 流数据可以包括指定输入特征卷的几何比例的信息。算术单元可布置 为定义具有输入图块(tile)高度、输入图块宽度和输入图块深度的输 入图块,并且算术单元可布置为以算法可配置图案使输入图块行进通 过输入特征卷。算法可配置图案可以具有高度、宽度和深度。算术单 元可以包括专用于存储查找表(LUT)的数据存储库,查找表被布置 为存储用于执行多个二阶多项式近似的数据。
一种机器学习方法可概括为包括:通过可重构流开关流传输输入 数据;在算术单元的输入处接收输入数据,算术单元具有多条数据路 径的算术单元,多条数据路径中的至少一条数据路径专用于根据二阶 多项式的近似实现激活函数,二阶多项式具有输出=AX2+BX+C的形 式;利用算术单元生成输出数据,该输出数据与激活函数的输出相对 应;通过可重构流开关流传输输出数据;以及基于输出数据的流中的 信息来识别输入数据中的至少一个特征。激活函数可以由包括二元阶 跃函数、软阶跃函数、双曲正切函数、弧切函数、整流线性单元(ReLU) 函数、参数ReLU函数、指数线性单元函数和软加函数的组来配置。 该激活函数可以被执行作为部分深度卷积神经网络过程。输入数据可 以是图像传感器数据。
该方法可以包括:在图像传感器数据中定义特征卷,特征卷具有 特征卷高度、特征卷宽度和特征卷深度;定义具有输入图块高度、输 入图块宽度和输入图块深度的输入图块;以及以算法可配置图案使输 入图块行进通过特征卷。
多条数据路径中的至少一条数据路径可专用于实现整流线性单 元(ReLU)函数,并且该方法可以包括生成与ReLU函数的输出相 对应的输出数据。
一种系统可概括为包括:存储器,(其可以是随机存取存储器, RAM,并且其可以是单板存储器)、应用处理器;数字信号处理器 (DSP)集群;可配置加速器框架(CAF);以及至少一个通信总线 架构,将应用处理器、DSP集群和CAF通信地耦合至单板存储器, 其中CAF包括可重构流开关;以及算术单元,具有多条数据路径, 多条数据路径中的至少一条数据路径专用于根据二阶多项式的近似 实现激活函数,二阶多项式具有形式输出=AX2+BX+C。该系统可以 包括集成电路封装,其包含存储器、应用处理器、DSP集群、CAF 和至少一个通信总线架构。该系统可以包括电源管理器电路,电源管 理器电路可电耦合至电池。该系统可以是移动设备。
提供该简要概述是为了以简化形式介绍特定概念,这些概念在下 面的详细描述中将进一步详细描述。除非另有明确规定,本概述不指 明所要求主题的关键或基本特征,也不用于限制所要求主题的范围。
附图说明
非限制性和非穷举实施例参照以下附图进行描述,除非另有说 明,否则相同的标记在各个附图中指代相同的部分。图中元件的大小 和相对位置不一定按比例绘制。例如,选择、放大和定位各种元件的 形状以改进附图的易读性。为了便于在图中识别,已经选择了所绘制 元件的特定形状。下面参照附图描述一个或多个实施例,其中:
图1A是卷积神经网络(CNN)系统的简化示图;
图1B示出了图1A的CNN系统,确定第一像素图案示出“1” 且第二像素图案示出“0”;
图1C示出了不同形式的1和0的几种变化;
图1D表示CNN操作,其分析(例如,数学地组合)未知图像的 部分与已知图像的相应部分;
图1E示出了图1D的右侧已知图像的六个部分;
图1F示出了过滤处理中的12个卷积动作;
图1G显示了图1F的12个卷积动作的结果;
图1H示出了内核值的映射的堆叠;
图1I示出了显著减少由卷积处理产生的数据量的池化特征;
图1J更详细地示出了图1A的CNN系统10;
图2A是已知AlexNet DCNN架构的示图;
图2B是已知GPU的框图;
图3是示例性移动设备,其中集成了以框图示出的DCNN处理器 实施例;
图4是示出可配置加速器框架(CAF)的实施例,诸如图3的图 像和深度卷积神经网络(DCNN)协处理器子系统;
图5是更详细的流开关实施例;
图6是卷积加速器(CA)实施例;
图7是示出由卷积神经网络算法内的激活函数加速单元支持的数 据路径的高级框图;
图8A是激活函数加速器的实施例;
图8B是激活函数加速器的另一实施例;
图8C示出了激活函数加速器的所选部分的第一集合;
图8D示出了具有可作为输入数据802流入激活函数加速器的形 式的数据的一种视觉表示;
图8E是横跨高度(H)、接着横跨深度(D)、接着横跨宽度(W) 行进通过特征卷的输入图块;
图8F是横跨宽度(W)、接着横跨深度(D)、接着横跨高度(H) 行进通过特征卷的输入图块;
图8G是图8A和图8B所示类型的函数评价逻辑模块的实施例;
图8H是明确地布置为执行整流线性单元(ReLU)激活函数的专 用激活单元的实施例。
具体实施方式
通过参考以下对本发明优选实施例的详细描述,可以更容易地理 解本发明。应当理解,本文使用的术语仅用于描述特定实施例而不用 于限制。还应理解,除非本文具体定义,否则本文使用的术语将被赋 予其在相关领域中已知的传统含义。
发明人已经认识到,如果集成附加专用硬件结构或者以其他方式 使附加专用硬件结构可用于实现学习机器的架构,则学习机器可以得 到改进。可进行的一种这样的改进包括实现如本文所述的激活函数加 速器800的结构和动作。本发明的激活函数加速器是本公开描述的特 定类型的基于硬件的算术单元,并且可以在各种学习机器上实现。然 而,为了简化,本公开包括在DESOLI等人的标题为“DEEP CONVOLUTIONAL NETWORKHETEROGENEOUS ARCHITECTURE”的 美国专利申请第15/423,272号中公开的特定深度卷积神经网络中的发 明性激活函数加速器800的实现,其内容通过引证引入本文。这种特 定的深度卷积网络异质架构学习机器公开了一种片上系统(SoC), 其具有系统总线、耦合至系统总线的多个可寻址存储阵列、耦合至系 统总线的至少一个应用处理器核心以及耦合至系统总线的可配置加 速器框架。可配置加速器框架是图像和深度卷积神经网络(DCNN) 协同处理系统。SoC还包括耦合至系统总线的多个数字信号处理器 (DSP),其中多个DSP与可配置加速器框架协调作用以执行DCNN。
图3至图6及其所附详细描述说明和呈现了可配置为高性能、节 能硬件加速的DCNN处理器的示例性片上系统(SoC)110的元件。 图7是示出由卷积神经网络算法内的激活函数加速器800支持的数据 路径的高级框图。图8A至图8H及其所附详细描述说明和呈现了与 图3至图6的硬件加速的DCNN处理器集成的激活函数加速器800 的结构和数据流程图。
图3的示例性SoC 110对机器学习应用特别有用,其实现了:图 像和DCNN协处理器子系统400(图4),可以互换地称为可配置加 速器框架;架构高效的流开关500(图5),其在先前从未有过层级 处创建数据局部性;卷积加速器600的集合(图6),其执行输入特 征数据与从神经网络的训练得到的内核数据的卷积;以及激活函数加 速器800的集合,特别被布置用于深度学习引擎(图8A-8H)。
图3是示例性移动设备100,其中集成有以框图示出的DCNN处 理器实施例。移动DCNN处理器被布置为片上系统(SoC)110,但 是也考虑其他布置(例如,多个芯片、单个集成电路中的若干芯片裸 片等)。所示SoC 110包括多个SoC控制器120、可配置加速器框架(CAF)400(例如,图像和DCNN协处理器子系统)、SoC全局存 储器126、应用程序(例如,主机)处理器128和多个DSP 138,每 个DSP直接或间接地通信耦合至主(例如,系统)通信总线132和 次通信(例如,DSP)总线166。
可配置加速器框架(CAF)400与系统总线166通信地耦合,系 统总线166为CAF 400的卷积加速器提供根据需要访问SoC全局存 储器126以及根据需要与DSP 138通信的机制。CAF 400在图4中更 详细地示出。
SoC 110包括各种SoC控制器120,其中一些控制SoC 110,而 其他控制一个或多个外围设备。SoC控制器120包括应用程序(例如, 主机)处理器128(例如,ARM处理器或一些其他主机处理器)、时 钟发生器168(例如,时钟管理器)、复位控制器170和电源管理器 172,以提供对SoC 110和其他部件的各种定时、功耗和其他方面的 附加支持、控制和管理。控制外围设备的其他SoC控制器120包括低 速外围I/O接口130和外部存储控制器174,以与其中嵌入有SoC 110 的示例性设备100的外部芯片、部件或存储器通信或以其他方式访问 这些外部芯片、部件或存储器。
应用处理器128可充当中间模块或者作为集成有SoC 110的示例 性电子设备100的其他程序或部件的接口。在一些实施例中,应用处 理器128可被称为应用处理器核心。在各种实施例中,应用处理器128 在启动时加载SoC配置文件,并根据配置文件配置DSP 138和CAF 400。当SoC 110处理一批或多批输入数据(例如,图像)时,应用 处理器128可以基于配置文件协调CAF 400或DSP 138的重新配置, 其中配置文件本身可以基于DCNN层和拓扑。
SoC 110还包括主通信总线132(例如,AXI-Advanced eXtensible Interface),其有利于SoC控制器120与DSP 138之间以及SoC控制 器120与CAF 400之间的通信。例如,DSP138或CAF 400可以经由 主通信总线132与应用处理器128、一个或多个外围控制器/外围通信 接口(低速外围I/O)130、外部存储器(未示出)经由外部存储控制 器174或其他部件进行通信。SoC控制器120还可以包括其他支持和 协作设备,诸如时钟管理器(例如,时钟发生器)168、复位控制器 170、用于向SoC 110提供附加定时和功率管理的电源管理器172以 及其他部件。
在一些实施例中且如图3所示,多个DSP 138被布置在多个DSP 集群中,诸如第一DSP集群122、第二DSP集群140以及为了简化 说明而没有参考的若干其他DSP集群。
每个DSP集群122、140均包括多个(例如,两个)DSP 142、 152、多个(例如,两个)本地DSP交叉开关144、154以及DSP集 群交叉开关145、155。特定集群中的每个DSP 142、152均能够经由 DSP集群交叉开关145、155与其他DSP 142、152进行通信。每个 DSP 142、152经由其对应的本地DSP交叉开关144、154访问对应的 指令高速缓存146、156和本地DSP存储器148、158。在一个非限制 性实施例中,每个指令高速缓存146、156是4路16kB指令高速缓存,并且每个本地DSP存储器148、158是其对应DSP的64kB本地 RAM存储器。每个DSP集群122、140还包括共享DSP集群存储器 160、159以及用于访问SoC全局存储器160、159的集群DMA 162、 164。
每个DSP集群122、140经由DSP集群交叉开关145、155通信 地耦合至全局DSP集群交叉开关150,以使每个DSP集群122、140 中的每个DSP 142、152能够彼此通信且与SoC 110上的其他部件通 信。全局DSP集群交叉开关150使得每个DSP能够与多个DSP集群 138中的其他DSP通信。
此外,全局DSP集群交叉开关150通信地耦合至系统总线166(例 如,次通信总线、xbar-SoC交叉开关等),这使得每个DSP能够与 SoC 110的其他部件通信。例如,每个DSP142、152可以与CAF 400 的一个或多个部件(例如,一个或多个卷积加速器)通信,或者经由系统总线166访问SoC全局存储器126。在一些实施例中,每个DSP 142、152可以经由其对应的DSP集群122、140的DMA 162、164与 SoC存储器126进行通信。此外,DSP 142、152可以根据需要经由系 统总线166与SoC 110的控制器120或其他模块通信。每个DSP经由 其本地DSP交叉开关144、154、其DSP集群交叉开关145、155和 全局DSP集群交叉开关150访问系统总线166。
可以布置或分配多个DSP 138来执行特定指令,从而加速DCNN 的其他操作。这些其它操作可以包括在DCNN处理期间执行的非卷 积操作,在一些情况下,这些操作主要由CAF 400执行。这些非卷积 操作的示例包括但不限于,最大或平均池化、非线性激活、跨通道响 应规范化、表示整个DCNN计算的一小部分但更适合未来算法演进 的分类或者其他操作(例如,Min、Max、Sqrt、Mac、Butterfly、Average、 2-4 SIMD ALU)。在一些情况下,先前已经使用一个或多个DSP 138 执行的操作现在使用本文参考图7描述的用于深度学习加速结构的算 术单元来执行。因此,本文描述的处理器及其相关计算设备的改进操 作可以通过本文描述的算术单元结构来实现。
DSP 138可以与CAF 400中的CA的操作同时(例如,并行)操 作,并且可以与数据传送同时(例如,并行)操作,数据传送可以通 过中断、邮箱或用于同时执行的一些其他同步机制来同步。
在各种实施例中,SoC存储器126包括多个存储部件,用于存储CAF 400或DSP 138的部件可访问的数据。在至少一个实施例中,SoC 存储器126以分层型存储结构配置。在一个非限制性示例中,SoC存 储器126包括四个SRAM组,每个SRAM组都具有1M字节的存储 空间。
在至少一个实施例中,可配置加速器框架(CAF)400可以被组 织为SoC 110的图像和DCNN协处理器子系统。如本文所述,CAF 400 包括可重构数据流加速器结构,其将高速相机接口与用于深度学习加 速(图6)的算术单元、传感器处理管道、裁剪器、颜色转换器、特征检测器、视频编码器、8通道数字麦克风接口、流化DMA和多个 卷积加速器中的任何一个或多个连接。
关于CAF 400的附加细节结合图4进行描述。简而言之,CAF 400 诸如从相机接口或其他传感器接收输入数据(例如,图4中的图像数 据,但是在不同实施例中接收其他类型的流数据),并将输入数据分 配给CAF 400的各个部件(例如,结合图6更详细描述的卷积加速器、 结合图7和图8更详细描述的激活函数加速器800等)和/或多个DSP 138中的一个或多个,以采用DCNN并识别输入图像中的对象。
CAF 400利用单向链路经由可配置的、全连接的开关向不同种类 的源或槽部件传送数据或者传送来自不同种类的源或槽部件的数据。 例如,结合图5更详细描述的可配置全连接开关可经由直接存储器访 问(DMA)将数据传送到SoC全局存储器126、I/O接口(例如,相 机)和各种类型的加速器(例如,卷积加速器(CA)600、激活函数 加速器800)。在一些情况下,基于从特定SoC配置工具接收的信息, 在启动时配置CAF 400,并且基于定义的DCNN层和拓扑或者从一个 或多个DSP 138、应用处理器128等接收的拓扑或信息,在运行时间 期间重新配置CAF 400。
CAF 400允许在运行时定义可选数量的并发虚拟处理链。CAF 400还包括全功能背压机制,以控制数据流向框架的各个部件。CAF 400被布置用于流多播操作,这能够在多块实例中重用数据流。链接 列表控制整个卷积层的完全自主处理。将多个加速器成组或链接在一 起并行地处理不同大小的特征映射数据和多个内核。将卷积加速器 (CA)600成组以实现更大的计算实体,使得能够选择可用数据带宽、 预算功率和可用处理资源的可接受的最佳平衡。每个CA 600都包括 线缓冲器,用于与单个存储器访问并行地获取预定数量的(例如,12 个)特征映射数据字。进一步支持CA 600结构的是激活函数加速器 800,其根据如方程式1的二阶多项式近似执行数学函数,其中迄今 未知的数据局部性。
AX2+BX+C→Output (1)
不是将用于特定激活函数的数据从CAF 400传送到诸如DSP的 独立设备,数据被保留在CAF 400架构内,从而实现显著的速度和数 据吞吐量增益。
在每个CA(600)中,基于寄存器的内核缓冲器提供多个读取端 口(例如,36个读取端口),而多个定点乘积-累积(MAC)单元(例 如,36个16位MAC单元)每个时钟周期执行多个MAC操作(例如, 每个时钟周期多达36个操作)。加法器树为每个内核列累积MAC结 果。MAC操作的重叠的、基于列的计算允许特征映射数据对于多个 MAC的可接受的最佳重用,从而减少与冗余存储器访问相关联的功 耗。
内核集合按批次顺序进行划分,并且中间结果可以存储在SoC全 局存储器126中。可以通过单个CA 600实例处理各种内核大小(例 如,多达12×12)、各种批次大小(例如,多达16)和并行内核(例 如,多达4个),但是任何大小的内核都可以与累加器输入一起容纳。
可配置批次大小和可变数量的并行内核使得对于跨不同单元和 可用计算逻辑资源共享的可用输入和输出带宽能够进行可接受的最 佳权衡。
为每个DCNN层确定CAF 400中的CA 600的不同可接受的最优 配置。可以使用以DCNN描述格式(诸如Caffe’或TensorFlow)开 始的整体工具来确定或调整这些配置。CA600支持即时(on-the-fly) 内核解压缩和舍入(rounding),当内核以每权重8位或更少位进行 非线性量化时,前1位的错误率对于8位增加到0.3%。
图4是示出可配置加速器框架(CAF)400的实施例,诸如图3 的图像和深度卷积神经网络(DCNN)协处理器子系统400。CAF 400 可以被配置用于图像处理、音频处理、预测分析(例如,技能游戏、 营销数据、人群行为预测、天气分析和预测、遗传作图、疾病诊断以 及其他科学、商业、消费和这种处理)或者一些其他类型的处理;尤 其是包括卷积运算的处理。
CAF 400还布置有许多可配置模块。一些模块是可选的,而一些 模块是必需的。许多可选模块通常包括在CAF 400的实施例中。例如, CAF 400的一个必需模块是流开关500。流开关500提供设计时间参 数、运行时间可重构加速器互连框架以支持基于数据流的处理链。例 如,另一个必需模块是CAF控制寄存器402的集合。还可以需要其 他模块。CAF 400的可选模块包括系统总线接口模块404、选定数量 的DMA引擎406(例如,DMA控制器)、选定数量的外部设备接口 408、选定数量的处理模块410、选定数量的卷积加速器(CA)600 和选定数量的激活函数加速器800(例如,1、2、4、8或其他数量)。
流开关500是可重构单向互连结构,其由多个单向的“流链路” 形成。流链路被布置为将多位数据流从加速器、接口和其他逻辑模块 传送到流开关500,并且从流开关500传送到加速器、接口和其他逻 辑模块。
除了流开关500,CAF 400还可以包括系统总线接口模块404。 系统总线接口模块404提供到SoC 110的其他模块的接口。如图3的 示例性实施例所示,CAF 400耦合至次通信总线166。在其他情况下, CAF 400可以耦合至主通信总线132或者一些其他通信机制。控制信 息可以单向或双向地传送通过CAF 400的系统总线接口模块404。这 种接口用于提供主机处理器(例如,DSP集群130的DSP、应用处理 器128或其他处理器)对所有CAF控制寄存器402的访问,这些寄 存器402用于控制、操作或以其他方式引导框架的特定特征。在一些 实施例中,每个DMA引擎406、外部设备接口408、处理模块410、 卷积加速器600和激活函数加速器800具有到配置网络的接口,该配 置网络具有定义的配置寄存器的集合(例如,形成在CAF控制寄存 器402中)。
CAF 400包括多个DMA引擎406。在图4中,示出了16个DMA 引擎406a-406p,但是根据半导体从业者在设计时作出的一个或多个 选择,SoC 110的其他实施例中可以包括一些其他数量的DMA引擎。 DMA引擎406被布置成为输入数据流、输出数据流或者输入和输出 数据流提供双向通道。在这些情况下,大量的数据被传入CAF 400、 从CAF 400传出或者从CAF400传入或传出。例如,在一些情况下, 一个或多个DMA引擎406用于从存储器或者从产生大量视频数据的 数据源设备(例如,高清(HD)摄像机)传送流式视频数据。一些 或所有视频可以从源设备传入、从SoC全局存储器126传入或传出到 SoC全局存储器126等。
在一个示例性实施例中,一个或多个DMA引擎406通过一个输 入端口504(图5)和一个输出流端口516(图5)连接至流开关500。 DMA引擎406可以按照输入或输出模式进行配置。DMA引擎406可 以被配置为将数据打包并发送到主通信总线132、次通信总线166或 一些其他地址位置上可访问的任何地址位置。DMA引擎406还可以 附加地或备选地被配置为解包所获取的数据并将解包数据转换为数 据流。
图4的CAF 400包括设计时可选择的、运行时可配置的多个外部 设备接口408。外部设备接口408提供到产生(即,源设备)或消耗 (即,槽设备)数据的外部设备的连接。在一些情况下,通过外部设 备接口408的数据包括流数据。在一些情况下,通过外部设备接口408 的流数据量可以预先确定。备选地,通过外部设备接口408的流数据 量可以是不确定的,并且在这种情况下,只要特定外部设备被启用并 且如此引导,外部设备就可以简单地产生或消耗数据。通过外部设备 接口408耦合的外部设备可以包括图像传感器、数字麦克风、显示监 控器或者其他源和槽设备。在图4中,外部设备接口408包括数字视 频接口(DVI)外部设备接口408a、第一图像传感器接口和图像信号 处理器(ISP)外部设备接口408b、以及第二图像传感器接口和ISP 外部设备接口408c。还可以预期其他接口,尽管在图示为了简化仅示 出了三个外部设备接口408。
多个处理模块410集成在CAF 400中。为了简单示出了三个处理 模块410,但是半导体从业者在设计时也可以将另一选定数量(例如, 两个、四个、八个、十六个)的处理模块410集成在CAF 400中。第 一处理模块410是MPEG/JPEG处理模块410a,其被布置为执行特定视频(即,MPEG)处理和特定图像(即,JPEG)处理。第二处理模 块410是H264处理模块410b,其被布置为执行特定的视频编码/解码 操作。第三处理模块410是颜色转换器处理模块410n,其被布置为对 特定多媒体数据执行基于颜色的操作。
在许多情况下,DMA控制器406、外部设备接口408、处理模块 410、卷积加速器600、激活函数加速器800和集成在CAF 400中的 其他模块是半导体从业者在设计时从库中选择的IP模块。半导体从 业者可以指定模块的数量、特定模块的特征、总线宽度、功率参数、 布局、存储器可用性、总线访问和许多其他参数。
表格2是库中的IP模块的非穷举示例性列表,任何IP模块均可 被半导体从业者合并到CAF 400。在许多情况下,随着新模块的设计 和现有模块的修改,新的IP将被添加到库(诸如表格2的库)中。
表格2—IP模块的CAF库
在图4的可配置加速器框架(CAF)400中,表示八个卷积加速 器600,CA0-CA7。在其它CAF 400实施例中,形成不同数量的卷积 加速器。卷积加速器600的数量和每个卷积加速器600中可用的特定 特征在一些情况下基于半导体从业者在设计时选择的参数值。
卷积加速器(CA)600是具有选定数量的(例如,一个、两个、 四个、八个)输入和输出流链路端口的数据处理单元。一个或多个配 置寄存器(例如,配置寄存器的集合)被布置为控制CA 600的操作。 在一些情况下,配置寄存器包括在CAF控制寄存器402中,并且在 这些或其他情况下,特定配置寄存器形成为CA 600的一部分。
一个或多个卷积加速器模板模块可包括在IP模块库中,诸如关 于表格2描述的库。在这些情况下,存储在IP模块库中的数据包括 相关构建块,这些构建块减少了构建实现加速器的核心功能的新加速 器所需的工作。可以扩展配置寄存器的预定义集合。在流链路端口处 形成或以其他方式位于流链路端口的可配置FIFO可用于吸收数据率 波动,并提供释放处理链中的特定流量控制约束所需的一些缓冲余 量。
通常,每个CA 600消耗数据或者生成数据,或者既消耗数据也 生成数据。消耗的数据通过可重构流开关500的第一流链路,而流式 数据通过流开关500的第二流链路。在至少一些实施例中,CA不能 直接访问主通信总线132(图3)、次通信总线166(图3)或其他总线地址可访问的存储器地址空间。然而,如果需要对系统总线上传送 的数据进行随机存储器访问,则CA 600还可以使用可选的总线端口 接口,该总线端口接口可以沿着图4的系统总线接口模块404的线路, 用于多种事情,包括允许DMA引擎访问系统总线上的存储器位置。 如上所讨论的,一些CA 600实现是库的一部分,其可以在其他CAF 400实施例中使用,以在全局系统定义文件中简单地实例化CA 600。
一个或多个激活函数加速器模板模块也可以包括在IP模块库中, 诸如关于表格2描述的库。这里,可以进一步扩展配置寄存器的预定 义集合,以便为包括的算术单元的配置提供参数存储。这些参数与任 何期望数量的多路复用器电路、乘法器电路、加法器电路、临时存储 电路、数据移位电路和其他电路的配置相关联。
每个激活函数加速器800专用于执行以分段二阶多项式近似的形 式表示的激活函数,诸如方程式1中的公式。标量数据、矢量数据、 流数据、恒定数据、交叉存取的数据(interleaved data)和CAF 400 框架内可用的任何其他期望数据可以作为操作数传入激活函数加速 器800,并且生成的结果数据将从相应的加速器传出。传入激活函数 加速器800的数据可来自可重构流开关500、CAF 400框架内或外的 存储器、传感器或特定接口,或者来自其他一些源。沿着这些路线, 这些类型的数据源中的每一种在一些情况下可消耗在加速器单元中 生成的数据。如本文中所讨论的,一些激活函数加速器800实现是库 的一部分,其可在其他CAF 400实施例中使用,以在全局系统定义文 件中简单地实例化加速器单元。
机器学习系统的系统级程序员希望灵活地选择他们特定实现所 需的编程模型。为了支持这种高度的灵活性,CAF 400配置有可重构 流开关500。如本公开所描述的,流开关500充当数据传送结构,以 提高逻辑块(IP)重用、数据重用以及其他部件和逻辑的重用,这又 允许减少片上和片外存储器通信量,并且在不同应用使用情况中为利 用相同逻辑块提供了更大的灵活性。集成在流开关500中的是多个单 向链路,它们被布置为经由可重构全连接开关来传输数据流,来往于 不同类型的数据源、数据接收器、以及数据源和数据接收器,诸如直 接存储器存取(DMA)控制器、I/O接口(例如,相机)以及各种类 型的加速器。
传输的数据可以采用任何期望的格式,诸如光栅扫描图像帧流、 面向宏块的图像流、音频流、原始数据块、输入或输出激活函数值流 或任何其他格式。流开关500还可以沿着由每个单元传送的处理链将 消息、命令或其他类似控制信息传输到处理控制信息的一个或多个目 标单元。控制信息可用于信号通知事件,以重新配置处理链本身,或 引导其他操作。
图5是更详细的流开关实施例500。流开关500包括用户可选择 的、设计时可配置的第一数量的流链路输入端口504以及用户可选择 的、设计时可配置的第二数量的流链路输出端口516。在一些情况下, 输入端口的数量与输出端口的数量相同。在其他情况下,输入端口比 输出端口多,而在又一些其他情况下,输出端口比输入端口多。在设 计时定义输入端口的数量和输出端口的数量。
在图5的流开关500实施例中,详细示出了一个流链路502实施 例。为了简化说明,没有详细示出其他流链路502a、502b。流链路 502a、502b通常沿着流链路502的线布置,并且为了在本公开中清楚, 任何示出的流链路都可以被识别为流链路502。
在运行时,流开关500根据写入CAF控制寄存器402(图4)中 的特定寄存器的配置数据,通过流链路502将输入流链路端口通信地 耦合至输出流链路端口。在本实施例中,可以期望地将一个或多个输 入流链路端口504布置为在同一时钟周期上同时将接收到的数据流转 发到一个或多个(多播)输出端口516。因此,一个输入流链路端口 可以通信地耦合至一个或多个输出流链路接口(例如,为了数据的传 送而电连接),这导致输入数据流的物理复制。流链路502提供直接、 单向的接口来传输数据流和与数据流相关联的控制信息。在这样的实 施例中,单个控制信号(在一些情况下可以在单个专用或共享数据路 径上传播)提供流控制。
流链路的一些导体用于传送数据;另一些导体可以包括数据有效 性指示器、第一像素指示器、最后一个像素指示器、线类型定义和失 速信号。失速信号用作背压(例如,流量控制)机制。在流链路的一 些实施例中,图像数据、命令数据、控制信息、消息等通过流开关500 在基于帧的协议中沿着处理链传送。
在流开关500中,每个输出端口516与特定的流链路502相关联。 例如,在图5中,输出端口X与流链路502相关联。此外,一个或多 个输入端口504与每个流链路相关联。例如,在一些情况下,每个输 入端口504与每个流链路502相关联。以这种方式,每个输入端口504可以同时或在不同时间向任何和所有输出端口516传送数据。
流链路的单个通信路径管道是单向的。即,每个通信路径管道上 的信号只在一个方向上流动。在一些情况下,多个通信路径管道单向 地接受从输入端口接收的数据并将数据传送到一个或多个输出端口。 在这些情况下以及在其他情况下,单个通信路径管道单向地从输出端 口接收命令信息(例如,流量控制信息),并将命令信息传送到一个 或多个输入端口。在一些其他情况下,从输出端口接收并传送到一个 或多个输入端口的命令信息在两个或更多个通信路径管道上传送。
如图5的详细流链路502所示,来自多个输入端口504的单向通 信路径管道的集合被传入数据开关506。在一些情况下,来自每个输 入端口504的单向通信路径管道的集合被传入数据开关506。在其他 情况下,一个或多个但不是全部的输入端口504的单向通信路径管道 被传入到特定流链路502的数据开关506。数据开关506可以包括多 路复用器逻辑、解复用器逻辑或一些其他形式的交换逻辑。
如图5所示,从多个输入端口504传入流链路502的数据可以同 时出现在数据开关506的输入节点处。布置选择机制508,以确定哪 个输入数据通过数据开关506。即,基于选择机制508,来自输入端 口A、B、C、D之一的输入数据通过数据开关506传送到数据开关 506的输出。输出数据将在NA...D单向通信路径管道上传送,该单向 通信路径管道将与所选输入端口的单向通信路径管道的数量匹配。
选择机制508根据流开关配置逻辑510来引导。流开关配置逻辑 510在运行时确定哪个输入端口504应该向相关联的输出端口提供数 据,并且基于这种确定,流开关配置逻辑510形成被传送至数据开关 506的适当选择信号。流切换配置逻辑510在运行时操作且实时操作。 流开关510可以从CAF控制寄存器、从DSP集群122(图3)的DSP、 从应用处理器128或从一些其他控制设备获取方向。此外,流开关配 置逻辑510还可以从消息/命令逻辑512获取方向。
在一些实施例中,数据均匀地通过每个特定流链路502。即,在 一些情况下,一个流链路502被配置为(例如,流交换机配置逻辑510、 CAF控制寄存器等)协作地传递任何数量N的第一数据元素(例如, 基准、比特、字节、字、半字节、元组或一些其他数据样本等),并且一个或多个其他流链路502类似地配置为传递对应的第二数据元 素。在该配置中,对于通过第一流链路502传递的每个数据元素,存 在通过其他一个或多个流链路502中的每一个的对应数据元素。
在其他实施例中,数据不是均匀地通过每个特定流链路502。例 如,数据可以交叉存取,或者以另一种非均匀方式传递。在交叉存取 的实施例中,各种流链路502均可以被配置为交叉存取数据。在一个 这样的交叉存取示例中,第一流链路502可以被布置为从第一源(例 如,输入端口504)传递“M”个数据元素,然后第一流链路502可 以被布置为从第二源(例如,不同的输入端口504)传递“N”个数 据元素。
备选地,在又一个交叉存取的实施例中,两个流链路502可以被 布置为以非均匀方式传递不同数量的数据元素。也就是说,当第一流 链路502正在传递“M”个数据元素时,第二流链接502同时传递“N” 个数据元素。在本文描述的示例中,“M”和“N”是整数。在某些情况下,“M”和“N”是不同的整数。
在一些流开关500实施例中,通过输入端口504(例如通过接口 或加速器)传送的特定具体消息被流开关500的一个或多个流链路 502中的命令逻辑512识别,并用于实时地重新编程一个或多个流链 路502。在这些或其他实施例中,流开关500被配置为根据固定模式 合并数据流。例如,在至少一个情况下,流开关500可以被布置为通 过在两个或更多个输入端口504上传送的输入流之间切换来选择数据 并将数据传送到输出端口516。例如,在每条线、每一帧、每N个事 务之后,或者通过一些其他措施,流开关500可以被配置为将数据从 不同的输入端口504传送到所选的输出端口516。
在一些情况下,从数据开关506传送的数据可以传送通过一个或 多个可选的输出同步逻辑级514。输出同步逻辑级514可用于存储或 以其他方式缓冲从耦合至输入端口504的数据源朝向耦合至输出端口 516的数据接收器设备传送的所选数量(例如,一位或多位、几个字 节或许多字节等)的数据。当数据源设备和数据接收器设备以不同速 率、不同阶段、使用不同时钟源或者以可能彼此异步的其他方式操作 时,可以实现这种缓冲、同步和其他这种操作。
流开关500包括背压失速信号机制,用于将流量控制信息从槽设 备传送到源设备。流控制信息从槽设备传送,以通知数据流源设备降 低其数据速率。降低数据速率将有助于避免槽设备中的数据溢出。
背压失速信号机制的一部分包括在每个输入端口中包括的背压 失速信号路径。背压失速信号路径布置为背压单向通信路径管道。在 图5中,示出了四个背压输入端口机制:BPA、BPB、BPC、BPD;每 个背压输入端口机制用于每个所示输入端口。在其他实施例中,每个 输入端口的背压机制可以包括一个或多个单向通信路径管道。在一些 实施例中,每个输入端口的背压机制具有相同数量的单向通信路径管 道,例如可以是单个管道。在这些情况下,例如,当耦合至特定输入 端口的数据源设备检测到背压机制上的信号被确认时,特定数据源设 备将减慢或停止传送到相关联输入端口的数据量。
每个输出端口516均包括背压机制的另一部分。示出了图5的三 个所示输出端口X、Y、Z的每一个的一个输出端口背压机制:BPX、 BPY、BPZ。在一些情况下,每个输出端口背压机制包括相同数量的单 向通信路径管道(例如,一个)。在其他情况下,至少一个输出端口具有背压机制,其具有与另一输出端口的另一背压机制不同数量的单 向通信路径管道。
输出端口背压机制管道被传送到每个流链路502中的组合背压逻 辑518。在图5中,背压逻辑518接收背压控制信号BPX、BPY、BPZ。 组合背压逻辑518还从流开关配置逻辑510接收控制信息。组合背压 逻辑518被布置为通过输入端口504的输入端口背压机制将相关流量 控制信息传回特定数据源设备。
图6是卷积加速器(CA)实施例600。CA 600可被实现为图4 的卷积加速器600中的任意一个或多个。
CA 600包括三个输入数据接口和一个输出数据接口,它们均被 布置为耦合至流开关500(图5)。第一CA输入数据接口602被布 置用于耦合至第一流开关输出端口516,第二CA输入数据接口604 被布置用于耦合至第二流开关输出端口516,以及第三CA输入数据 接口606被布置用于耦合至第三流开关输出端口516。CA输出数据 接口608被布置用于耦合至所选流开关输入端口504。与每个CA输 入数据接口602、604、606和输出数据接口608耦合的特定流开关500 端口可以默认地、在启动时或在运行时确定,并且可以在运行时编程 地改变特定耦合。
在示例性实施例中,第一CA输入数据端口602被布置为将批次 数据流传送到CA600,第二CA输入数据端口604被布置为将内核数 据流传送到CA 600,以及第三CA输入数据端口606被布置为将特征 数据流传送到CA 600。输出数据端口608被布置为从CA 600传送输 出数据流。
CA 600包括多个内部存储缓冲器。在一些实施例中,内部存储 缓冲器可以共享公共存储空间。在其它实施例中,一些或所有内部存 储缓冲器可以彼此分离且不同。内部存储缓冲器可以形成为寄存器、 触发器、静态或动态随机存取存储器(SRAM或DRAM),或者以一 些其它结构配置来形成。在一些情况下,可以使用多端口架构来形成 内部存储缓冲器,该多端口架构例如允许一个设备在存储器中执行数 据“存储”操作,而另一设备在存储器中执行数据“读取”操作。
与第一CA输入数据接口602一致地,物理或虚拟地布置第一CA 内部缓冲器610。以这种方式,流入CA 600的批次数据可以自动存 储在第一CA内部缓冲器610中,直到数据被传送到CA 600中的特 定数学单元,诸如加法器树622。第一CA内部缓冲器610可以固定 具有设计时确定的大小。备选地,第一CA内部缓冲器610可以定义 为在启动时或运行时以编程方式确定的可变大小。第一CA内部缓冲 区610可以是64字节、128字节、256字节或一些其他大小。
沿着第一CA内部缓冲器610的线形成第二CA内部缓冲器612 和第三CA内部缓冲器614。即,第二和第三CA内部缓冲器612、614 可以各自具有在设计时确定的它们自己的固定大小。备选地,第二和 第三CA内部缓冲器612、614可以具有在启动时或运行时以编程方 式确定的可变大小。第二和第三CA内部缓冲区612、614可以是64 字节、128字节、256字节或一些其他大小。第二CA内部缓冲器612 物理或虚拟地布置为与第二CA输入数据接口604一致,以自动存储 流式内核数据,直到内核数据被传送至专用于存储内核缓冲数据的专 用的第四CA内部缓冲器616为止。第三CA内部缓冲器614物理或 虚拟地布置为与加法器树622一致,以自动存储加法数据,直到其可 以通过CA输出接口604传送为止。
第四CA内部缓冲器616是专用缓冲器,其被布置为期望地存储 内核数据并将所存储的内核数据应用于多个CA乘法累积(MAC)单 元620。
第五CA内部缓冲器618是特征线缓冲器,其被布置为接收通过 第三CA输入接口606传送的流式特征数据。一旦存储在特征线缓冲 器中,特征数据被应用于多个CA MAC单元620。应用于CA MAC 单元620的特征和内核缓冲数据根据本文描述的卷积操作被数学地组 合,并且来自CA MAC单元620的结果输出积被传送到CA加法器树 622。CA加法器树622数学地组合(例如,相加)输入的MAC单元 数据和通过第一CA输入数据端口传送的批次数据。
在一些情况下,CA 600还包括可选的CA总线端口接口624。当 包括CA总线端口接口624时,其可用于将数据从SoC全局存储器 126或其他位置传入或从CA 600传出。在一些情况下,应用处理器 128、DSP集群122的DSP、或一些其他处理器将数据、命令或其他 信息的通道引导至CA 600或从CA 600传送。在这些情况下,数据可 以通过CA总线端口接口624传送,CA总线端口接口624本身可以 耦合至主通信总线132、次通信总线166或一些其他通信结构。
在一些情况下,CA 600还可以包括CA配置逻辑626。CA配置 逻辑626可以完全驻留在CA 600中,部分驻留在CA 600中,或者远 离CA 600。例如,配置逻辑600可以完全或部分地实施在CAF控制 寄存器402、SoC控制器120或SoC 110的一些其他结构中。
图7是示出在卷积神经网络算法内由激活函数加速器800支持的 数据路径的高级框图。如图所示,具有各种特征和复杂性的图像数据 流式进入卷积处理,其可以利用可配置加速器框架(CAF)400(图4) 中的卷积加速器600(图6)执行,或者形成在移动设备100(图3) 的SOC 110(图3)中。输入数据802(例如可以是或包括特征映射 数据)流式进入激活函数加速器800。根据所选激活函数生成的输出 数据804从激活函数加速器800流出。
在卷积过程中,输入图像流被传入神经网络。所选内核通过每个 图像的宽度和高度以及多个图像的深度进行卷积,以产生特征映射的 集合或“堆叠”。池化层执行子采样操作,并将一层处的特征集群的 输出组合到随后层的单个特征中。一个或多个附加卷积和池化层进一 步过滤输入数据,并且在所有层中执行一个或多个全连接(FC)操作 以使一层中的特征与其他层中的相应特征相关。在全连接操作之后, 从数据中出现分类/预测。
如图7所示,在卷积处理期间执行激活函数(806)。激活函数 可以包括恒等函数、二元阶跃函数、逻辑(例如,软阶跃)函数、双 曲正切函数、弧切函数、整流线性单元(ReLU)函数、参数ReLU 函数、指数线性单元函数和软加函数。其他激活函数当然是发明者所 设想的。然而,为了简单并且为了传达本公开描述的创造性布置的精 神,在方程式2A-11B中提出了激活函数的非限制性集合。考虑方程 式2A-11B,“A”函数(即,2A、3A、4A等)表示命名的方程式, 而“B”函数(即,2B、3B、4B等)表示对应“A”方程的导数。这 些等式中的每一个以及许多其它等式可以通过理想地选择作为二阶多项式中的操作数应用的系数来近似。
(恒等) f(x)=x (2A)
(恒等)’ f′(x)=1 (2B)
(二元阶跃)
(二元阶跃)’
(逻辑)
(逻辑)’ f′(x)=f(x)(1-f(x)) (4B)
(双曲正切)
(双曲正切)’ f′(x)=(1-f(x)2) (5B)
(弧切) f(x)=tan-1(x) (6A)
(弧切)’
(ReLU)
(ReLU)’
(PReLU)
(PReLU)’
(ELU)
(ELU)’
(软加)
(软加)’
通过形成基于硬件的激活函数加速器800并将这些加速器单元耦 合至流开关500,卷积神经网络或其他机器学习设备的卷积处理可以 改进的灵活性、数据局部性和速度来执行。
图8A-图8H在本文可以统称为图8。
图8A是激活函数加速器800的实施例。输入数据802流式进入 激活函数加速器800,并且函数输出数据804从激活函数加速器800 传出。激活函数评价选择逻辑(EFESL)808指导激活函数加速器800 的操作。
每个激活函数加速器800均包括函数评价逻辑810。函数评价逻 辑810是自适用硬件逻辑块,其被布置为加速任何期望的激活函数, 并以分段二阶多项式近似(方程式1)的形式表示函数。为了实现二 阶多项式近似,将诸如存储器的专用数据存储库组织为系数查找表, 以将系数数据馈送到函数评价逻辑810。在图8A中,系数查找表存 储器812被示为激活函数加速器800的组成部分,但是在其他实施例 中,系数查找表存储器812可位于CAF400(图4)的不同部分或SoC 110的不同部分。在一些情况下,系数查找表存储器812是预先加载 数据以支持一个或多个特定激活函数(例如,在初始化操作期间)的 小型存储器。在一些情况下,系数查找表存储器812是存储系数数据 以支持将在特定神经网络实施例中使用的许多或所有激活函数的大 存储器。在这些和其他情况下,系数查找表存储器812可以被布置为 耦合到函数评估器逻辑810(例如,算术单元)的系数库,并且被布 置为同时存储用于至少两个激活函数的系数。
可选地,激活函数加速器800包括被明确地布置为实现特定激活 函数的零个或更多个专用数据路径。在图8A的激活函数加速器800 中示出了三个可选的专用激活单元,但是在其他实施例中,激活函数 加速器800可以仅包括第一专用激活单元814A、第一和第二专用激 活单元814A、814B、或者一些其他数量的专用激活单元。
基于发明人的发现,已经了解到,除了函数评价逻辑810之外还 包括至少一个专用激活单元将提高卷积处理的速度和效率。沿着这些 线,在至少一些实施例中,激活函数加速器800包括专用激活单元 814N,该专用激活单元814N被布置为整流线性单元(ReLU)变型 评价器(ReLU-EVAL)。包括该专用激活单元814N是理想的,因为 在卷积神经网络中经常使用特定ReLU变型(例如,普通的、泄漏的、 参数的等)。
为了进一步支持激活函数加速器800的操作,激活函数评价选择 逻辑808被通信地耦合至LUT存储器逻辑模块816和参数逻辑模块 818。通信耦合可以是单向的或双向的,并且通信可以通过直接信令、 专有的或标准化的通信协议或者通过任何其他方式来布置。通信线路 820A、820B表示激活函数评价选择逻辑808和LUT存储逻辑模块 816之间的信号路径,并且通信线路822A、822B表示激活函数评价 选择逻辑808和参数逻辑818之间的信号路径。
LUT存储逻辑模块816被布置为与激活函数评价选择逻辑808协 作,以将系数从系数查找表存储器812直接及时地传送至函数评价逻 辑810。在一些情况下,一个激活函数的系数填充系数查找表存储器 812中的所有可用空间。在一些情况下,即使当一个激活函数的系数 不填充系数查找表存储器812中的所有可用空间时,也不会有其他系 数存储在存储器812中。在其他情况下,两个或更多个激活函数的系 数同时存储在系数查找表存储器812中,并且在这些情况下,系数可 以顺次地、并行地、或以任何期望的交付方式进行使用。
与激活函数评价选择逻辑808询问并接收来自LUT存储逻辑模 块816的数据相配合,激活函数评价选择逻辑808经由通信线路823 引导系数查找表存储器812。图8A所示的通信是单向的,但在一些 情况下,通信可以是双向的。例如,在错误或其他意外条件的情况下, 系数查找表存储器812可通过一实施例将信息传回激活函数评价选择 逻辑808,在该实施例中,通信线被布置为双向通信。
在一些情况下,激活函数评估选择逻辑808,LUT存储器逻辑模 块816的逻辑或一些其他逻辑控制实施例,其中两个或更多个激活函 数的系数存储在系数查找表存储器812中。在单个函数有效并且在给 定时间执行函数评估器逻辑810,系数查找表存储器812可以专用于 单个函数的系数。这种单一操作的一个示例包括能够在输入流上执行 函数的指数函数。在这些情况下,系数查找表存储器812仅用对应于 指数函数的实现的系数编程。然而,在其他情况下,可能存在这样的 情况:通过函数评估器逻辑810评估的函数不需要所有系数查找表存 储器812存储器来实现期望的准确度。因此,在一些情况下,可以与 两个或更多个函数的系数共享系数查找表存储器812存储器,从而允 许系数查找表存储器812用多个函数的系数数据进行准备,即使一次 只有一个函数激活。以这种方式,激活函数加速器800可以可选地允 许多个函数上下文的两个或更多个并发维护。
在保持两个或上下文的可选情况下(即,两个或更多个激活函数 的系数同时存储在系数查找表存储器812中),可以以许多不同的方 式使用数据。例如,一种方式是在一个或多个配置寄存器(例如,参 数逻辑818、CAF控制寄存器402等)中提供函数标识符(函数ID) 字段。例如,经由通信线路823将函数ID传递到系数查找表存储器 812可以是索引或以其他方式触发适当系数以及时应用于函数评估器 逻辑810的一种方式。激活函数评估器逻辑810中的函数的另一种方 式包括经由流链路502发送配置消息。在这些情况下,可以解析和操 作与从系数查找表存储器812及时提供期望系数有关的可选命令信 息。
沿着这些线路,参数化逻辑818被布置为与激活函数评价选择逻 辑808协作,以将流式输入数据及时地引导至适当的激活函数电路。 在一些情况下,输入数据仅传送至函数评价逻辑810或者仅传送至任 何一个或多个期望的专用激活单元814A、814B、814N。在其他情况 下,输入数据被传送至通过双方(或视情况而定)函数评价逻辑810 以及任何一个以上的期望专用激活单元814A、814B、814N。
参数逻辑模块818可以包括存储器、寄存器、组合逻辑、切换逻 辑,状态机、处理器或一些其他逻辑。参数逻辑模块818可通过特定 机器学习算法的其他操作引导。在一些情况下,参数逻辑模块818形 成为或者作为CAF控制寄存器模块402(图4)的一部分。
激活函数加速器800的一些实施例被布置为经由通信线路822B 从激活函数评价选择逻辑808接收控制信息或其他引导信号。该控制 或引导信息可以从输入数据802或者从一些其他源(诸如机器学习算 法)检索。参数逻辑模块818可以使用控制信息,以配置其自身逻辑 的部分。备选地或附加地,参数逻辑模块818可以向专用激活单元 814A、814B、814N,向激活函数评价选择逻辑808,向输出数据选 择电路824,以及在一些情况下甚至向系数查找表存储器812和函数 评价逻辑810提供其他信息。
如本文所讨论的,参数逻辑模块818被布置为向激活函数加速器 800提供灵活性。沿着这些线路,应理解,参数逻辑模块818可以许 多方式配置以实现激活函数加速器800的功能。在各种实施例中,参 数逻辑模块818经由通信线路822A向激活函数评价选择逻辑808提 供操作模式信号中的任意一个或多个,向通信线路826上的专用激活 单元814A、814B、814N提供操作模式信号,向通信线路826上的函 数评价逻辑810提供操作模式信号,向通信线路828上的专用激活单 元814A、814B、814N提供标量参数,向通信线路828上的函数评价逻辑810提供标量参数,向通信线路830上的专用激活单元814A、 814B、814N提供矢量参数,向通信线路830上的函数评价逻辑810 提供矢量参数,向/从通信线路832上的系数查找表存储器812提供控 制数据,以及向通信线路834上的输出数据选择单元824提供选择信 号。
现在描述图8A所示的激活函数加速器800的实施例的各种操作。 在实施例中,流式输入数据802(诸如特征映射数据)被传送到激活 函数加速器800。激活函数评价选择逻辑808经由通信线路822A从 参数逻辑模块818接收操作模式信息(例如,输入特征几何、表格起 始地址等)。随着输入数据802的流入,激活函数评价选择逻辑808 将特性数量信息传送至通信线路820A上的激活函数LUT存储逻辑 816,其经由线路820B传回激活类型信息。激活函数评价选择逻辑 808使用激活类型信息来计算地址信息。地址信息经由通信线路822被传送到系数查找表存储器812,系数查找表存储器812分别经由通 信线路836A、836B和836C将“A”、“B”和“C”系数数据传送 至函数评价逻辑810。函数评价逻辑810使用流式输入数据(即,Data In)和系数数据(即,A、B、C)执行二阶多项式近似,并且函数评 价逻辑810通过输出数据选择电路824将生成的函数输出数据(即, f(x)输出)作为输出数据804传送。
图8B是激活函数加速器800A的另一实施例。在一个示例性实施 例中,激活函数加速器800A与图8A的激活函数加速器800一样, 可以形成为集成电路(例如,芯片、裸片、集成电路封装等)中的算 术单元。集成电路可以安装在任何类型的计算设备中,诸如移动计算设备,并且集成电路可布置用于卷积神经网络运算。集成电路包括或 以其他方式形成为具有存储器(例如,随机存取存储器(RAM)、只 读存储器(ROM))、应用处理器、数字信号处理器集群和可配置加 速框架(其中形成有可重构流开关)的片上系统。该系统包括通信地 将应用处理器、DSP集群和CAF耦合至存储器的至少一个通信总线 体系结构。可以理解其他结构(诸如电源管理结构、电池、用户界面、 网络收发器、传感器等),但是为了避免遮蔽或模糊本公开的其他特 征而没有对其进行详细描述。然而,应当理解,可电耦合到电池的电 源管理器电路允许电池向本公开中描述的所有电路提供电力,因此, 本文描述的系统、设备和方法均有助于在移动设备上执行的操作。
在图8B的实施例中,形成两条且仅两条数据路径。然而,应当 理解,图8B的结构相对于图8A被表示且另外描述,并且在两个实 施例中使用相同的参考编号。在结构和操作相同的情况下,为了简化 而不再重复该信息。
在图8B中,第一数据路径通过激活函数评价选择逻辑808将输 入特征数据传入函数评价逻辑810。函数评价逻辑810专用于执行具 有方程式1的形式并使用来自系数查找表存储器812的系数数据的二 阶多项式近似。二阶多项式近似可根据本文任何方程式2A-11B中表 示的激活函数或根据一些其它激活函数。在函数评价逻辑810执行近 似以生成函数输出数据之后,函数输出数据从函数评价逻辑810传送 通过输出数据选择电路824,并作为输出数据804从激活函数加速器 800A输出。图8B中的流式输入数据802可传送通过可重构流开关 500(图4、图5),并且激活函数输出数据804可通过可重构流开关 500流到可配置加速度框架400(图4)的另一部分。在一些情况下, 诸如当输入数据是来自图像传感器的图像传感器特征数据时,在识别 输入数据中的至少一个特征的过程(例如,深度卷积神经网络过程) 中使用由函数评价逻辑810生成并从激活函数加速器800A流出的输 出数据。
在图8B中,第二数据路径通过激活函数评价选择逻辑808将输 入特征数据传入整流线性单元(ReLU)变型评价器814N,该整流线 性单元(ReLU)变型评价器814N专用于实现特定的ReLU功能。
在一些情况下,流入激活函数加速器800A的输入数据被布置为 多维输入特征卷。在一些情况下,激活函数加速器800A可以被布置 成在不需要更多信息的情况下识别多维输入特征卷数据。在其他情况 下,激活函数加速器800A可以接收流式输入数据,其包括指定输入 特征卷的几何比例的信息。例如使用激活函数评价选择逻辑808的激 活函数加速器800A可以被布置为定义具有输入图块高度、输入图块 宽度和输入图块深度的输入图块。特征卷还可以具有特征卷高度、特 征卷宽度和特征卷深度。在这些情况下,由函数评价逻辑810或由专 用激活单元(例如,专用激活单元814A、814B、814N)作用的数据 是从以算法可配置图案将输入图块行进通过输入特征卷的过程提取 的。这里,算法可配置图案可以具有高度、宽度和深度,或者算法可 配置图案可以具有其他定义特性。
图8C示出了激活函数加速器800B的所选部分的第一集合。激活 函数加速器800B可以沿着图8A和图8B的激活函数加速器800和 800A的线路,或者激活函数加速器800B可以具有本公开描述的特征 的其他方式形成。
流入激活函数加速器800B的输入数据802是输入特征映射。在 这种或其他情况下,输入数据802可以是特征卷、张量或一些其他形 式的数据。
图8D示出了数据的一种视觉表示,该数据具有可作为输入数据 802流入激活函数加速器800B的形式。图8D的封闭特征卷850具有 特征宽度852(W)、特征高度854(H)和特征深度856(D)。特 征卷的尺寸用大写字母W、H、D表示。在图8D中还示出了输入图 块860。输入图块860具有输入图块宽度862(w)、输入图块高度 864(h)和输入图块深度866(d)。输入图块的尺寸用小写字母w、 h、d表示。
回到图8C,激活函数评价选择逻辑808可以包括地址生成电路 装置838。地址生成电路装置838被布置为向系数查找表存储器812 数据存储库提供定时和有序的地址,使得存储在系数数据存储库878 中的恒定系数数据(即,A、B、C)可以及时地提供给函数评价逻辑 810,或者在一些情况下分别经由通信路径836A、836B、836C提供 给专用激活单元814A、814B、814N。如图8C所示,系数数据存储 库878可以存储多个激活函数的系数。例如,地址(或者可选地,标 识将应用的系数的内容)可以经由通信线路823(图8A、图8B)或 经由一些其他方式来提供。地址生成电路装置838可以包括自动排序 电路840,用于递增地址、递减地址、偏移地址、交叉存取、应用恒 定或可变步长或执行其他存储地址配置操作。地址生成电路装置838 的操作可通过激活函数评价选择逻辑808、参数逻辑模块818(例如, 操作模式信令、输入特征几何信令、表格开始地址信令等)或通过设 备的其他电路引导。
为了支持地址生成电路装置838的操作,参数逻辑模块818可以 包括存储器、寄存器、缓冲器和其他存储电路装置,它们提供适当的 控制信息的存储和传播。参数逻辑模块818的存储电路装置还可以包 括其他示例性参数电路装置(例如,子电路或配置参数电路),使得 固定点算术移位常数、工作模式信号和相关参数以及标量常数A、B、 C可以提供给激活函数评价选择逻辑808或激活函数加速器800B的 其他部分。并且参数逻辑模块818还可以包括算术移位电路装置,以 实现任意数量的右移值、左移值或其他移位布置。移位操作可以针对 任何合适的值(例如,地址、数据、乘法值、除法值、对齐值、比例 值、和、乘积、或者由于其他原因的移位数据)来执行。
地址生成电路装置838可以被布置为与激活函数评价选择逻辑 808的其他电路协同工作,以灵活地支持机器学习算法的卷积操作。 例如,可以布置操作模式参数来支持任何期望形状的特征输入流。由 于这种支持,特征卷不限于如至少一些常规情况下的任何特定的高度 -宽度-深度(WxHxD)形状。相反,地址生成电路装置838的输入图 块支持电路装置842可以被配置为支持几乎任何可缩放和灵活的三维 (3D)图块方案和特征卷“行进”方案。通过指定特征卷的输入几何 形状(即,WxHxD),并且通过指定输入图块的高度-宽度-深度(wxhxd) 尺寸,以及通过指定行进顺序,输入图块支持电路装置842可以被配 置并应用于以任何期望顺序使给定输入行进通过特征卷。
例如,考虑图8E,输入图块860横跨高度(H),接着横跨深度 (D),接着横跨宽度(W)来行进通过特征卷850。
例如,考虑图8F,输入图块860横跨宽度(W),接着横跨深度 (D),接着横跨高度(H)来行进通过特征卷850。
在其它情况下,输入图块支持电路装置842可以被配置并用于使 输入图块860横跨深度、接着横跨高度、接着横跨宽度或者以任何其 他期望的图案来行进通过特征卷。在一些情况下,定义输入图块支持 电路装置842中或与输入图块支持电路842相关联的特定寄存器,其 阐述特定的行进顺序、步长、图案等。图案可以是规则的、不规则的、 或以任何其他方式形成。
在输入图块860行进的示例中可以清楚地看到,通过在地址生成 电路装置838中或针对地址生成电路装置838设置适当的参数,可以 以许多不同的方式导航特征卷850。因此,激活函数加速器800B可 以几乎任何特定格式对输入数据进行操作。地址生成单元838被布置 为适当地寻址“A”、“B”和“C”值,以将激活函数应用于由输入 图块行进顺序、输入图块几何形状和特征卷几何形状所指定的输入数 据。
地址生成单元838、激活函数评价选择逻辑808、参数逻辑模块 818以及在一些情况下其他电路之间的协作配置的一个优点是:馈送 激活函数加速器800B的卷积加速器600可以任何期望的数据粒度操 作,其中在平衡性能、功率、存储器带宽和数据重用方面,卷积加速 器600是大多数可接受最优的;在这些情况下,卷积加速器600可以 通过可重构流开关500直接将数据馈送给激活函数加速器800B,而 无需以任何其它方式重新布置或重新组装数据。机器学习算法使用例 如与地址生成电路838协作的参数逻辑模块818的寄存器来指定期望 的输入图块和特征体输入几何形状。
为了进一步支持定义输入特征卷和输入图块结构的灵活性,激活 函数评价选择逻辑808可以包括输入特征控制数据隔离电路844。可 选的输入特征控制数据隔离电路装置844,当包含在激活函数加速器 800B中并使用时,可以监控传入激活函数加速器800B的输入特征数 据。以这种方式,机器学习算法可以被布置为传送数据通过流开关, 并且机器学习算法可以将控制信息嵌入数据。控制信息可以指定特征 映射的几何形状、输入图块的几何形状、输入图块行进图案、步长、 边界或任何其他相关参数,并且这些参数由输入特征控制数据隔离电 路装置844隔离。一旦这些参数被隔离或以其他方式检索,它们就可 以如本文所述,用于引导在激活函数加速器800B内及时传送配置参 数、地址等。
在一些情况下,地址生成电路装置838可以用多个自动重新加载 计数器846(例如,四个自动重新加载计数器)实现。自动重新加载 计数器846可以优先、级联、并行操作、独立,或者计数器可以其他 方式协作。例如,每个自动重新加载计数器846可用于“计数”输入 图块860通过特征卷850的定向行进。例如,可以使用来自计数器的 值在地址生成电路装置838中自动生成地址,使得输入图块860按照 机器学习算法指定的顺序行进通过特征卷850的高度、宽度和深度。
在其他情况下,地址生成电路装置838还被布置为执行与激活函 数加速器800B使能的激活函数相关的附加操作。例如,地址生成电 路装置838可以被布置为与激活函数LUT存储逻辑816协作以确定 地址或者沿着深度、宽度或高度维度的特定特征的索引。这里,例如, “特征数”可以对应于与进入的输入流或张量的对应维度相关联的特 定索引、地址或其他信息。激活函数查找电路装置870可以使用特征 数来查找激活函数LUT存储逻辑816中的激活函数类型,激活函数 LUT存储逻辑816能够返回“激活类型”信息。激活类型信息可以用 作存储在存储器中的表格的起始地址、索引或者允许在系数查找表存 储器812中进行适当查找(例如,使用索引/寻址电路876)的一些其 他信息。以这种方式,将对正确数据执行期望的二阶多项式近似(例 如,对应于方程式2A-11B中的一个),并且可以非常有效(例如, 比对应传统操作使用更少的电能)、非常快速(例如,比对应传统操 作更块)并且以可接受的少量存储器对相同数据或不同数据执行任意 数量的相同或不同的激活函数。
在一些实施例中,激活函数评价选择逻辑808在通信线路822A 上接收操作模式信息。操作模式电路装置848可以使用操作模式来确 定将应用哪个激活函数。在一些情况下,操作模式电路装置848定义 基于确定的位图案选择激活函数的表格操作。该图案可以包括任意数 量的位或不同的手段(诸如组合逻辑),以选择期望的激活函数。操 作模式电路装置848被示为形成在激活函数评价选择逻辑808内。在 其它情况下,操作模式电路装置848形成在激活函数加速器800B的 另一部分中,并被布置为与激活函数评价选择逻辑808协作。
操作模式电路可以由激活函数加速器800B的其他电路支持。例 如,在一些情况下,激活函数LUT存储逻辑816或者激活函数加速 器800B的一些其他部分包括索引查找电路装置872和系数表格地址 的列表874。当通过激活函数评价选择逻辑808例如使用在通信线路 820A(图8A)上传送的控制信息或数据如此引导时,索引查找电路 装置872被布置为检索特定索引。操作模式电路装置848可以使用该 索引来选择函数评价逻辑810的适当配置。激活函数LUT存储逻辑 816也可以使用索引来从系数表格地址的列表874中选择适当的表格 地址。系数表格地址的列表874可以形成在存储器中,并且在设备的 初始化期间、设备的重新编程期间、机器学习算法的操作期间、或者 其它时间被期望地加载。在一些情况下,系数表格地址的列表874经 由通信线路820B(图8A)传送地址信息,然后经由通信线路823传 送到系数查找表存储器812,以从系数数据存储库878选择与所选激 活函数相对应的系数。
在发明人实现的一个示例性情况下,操作模式电路装置848从3 位图案中进行选择。示例性情况是非限制性的,而是代表激活函数评 价选择逻辑808可确定操作模式并选择适当的激活函数的一种方式。 在这种情况下,3位图案可选地还可以从同时存储在系数查找表存储 器812中的多个系数内容中选择一个。
根据操作模式电路装置848,当操作模式是000b时,执行第一整 流线性单元(ReLU)操作(例如,Fn(0))。
当操作模式是001b时,执行第一参数ReLU操作(例如,Fn(1))。 在第一参数ReLU操作中,对输入张量的每个特征应用单个参数。可 以经由参数逻辑模块818的寄存器或者从一些其他位置提供单个参 数。
当操作模式是010b时,执行第二参数ReLU操作(例如,Fn(2))。 这里,不同的参数可应用于输入张量的每个特征。在至少一种情况下, 参数的数量与输入特征卷的深度相同,并且可以经由参数逻辑模块 818的寄存器或者从一些其他位置提供参数。
当操作模式是011b时,执行阈值ReLU操作(例如,Fn(3))。 在这种情况下,对输入张量的每个特征应用单个“阈值”参数。阈值 参数可以经由参数逻辑模块818的寄存器或者从一些其他位置提供。
当操作模式为100b时,函数评价是有效的(例如,Fn(4)), 并且每个特征都使用相同的函数。这种模式可以表示执行多个激活函 数的方式。
当操作模式为101b时,函数评价是有效的,并且每个特征可以 使用不同的激活函数。因此,操作模式101b可以在操作模式电路848 中动作,以引起激活函数LUT存储逻辑816和系数查找表存储器812 中的操作。
当然可以定义其他的操作模式。
应理解,并非每个模式都牵涉到激活函数加速器800B的所有电 路,所以操作模式也可用于控制电源管理电路装置880,其可以电耦 合至一个或多个电池。例如,当操作模式仅执行ReLU变型评价操作 时,可以激活专用激活单元814N,并且诸如激活函数LUT存储逻辑 816和系数查找表存储器812的其他电路可以经由电源管理电路装置 880执行或引导的操作被时钟选通、断电或以其他方式处理。沿着这 些线路的其他操作可以与激活函数评价选择逻辑808协作实现。
图8G是图8A和图8B所示类型的函数评价逻辑810模块的实施 例。函数评价逻辑810被布置成执行具有方程式1所示形式的二阶多 项式近似。图8G所示的实施例可以多种方式适当地布置以执行期望 的二阶多项式近似,为此,为了简化附图示出了结构的布置、结构的 数目、结构的定位、以及实施例中是否甚至包括任何特定结构,同时 仍然向本领域普通技术人员传达对函数评价逻辑810技术的理解的同 时。
函数评价逻辑810包括乘法器电路装置882、移位电路装置884、 比较器电路装置886、加法器电路装置888、存储电路装置890、锁存 电路装置892、其他电路装置894和控制电路装置896。也可以包括 其他电路,但是为了简单而没有示出这些电路。
在一些实施例中,如控制信息所引导的,函数评价逻辑810中的 一个或多个电路经由总线电路装置898可配置地耦合在一起,总线电 路装置898可以包括配置电路、数据路径、组合逻辑、切换逻辑、通 信路径等。以这种方式,函数评价逻辑810可以被配置为执行一次、 两次或任何其他期望数量的二阶多项式逼近,其具有方程式1所示的 形式。在其它实施例中,函数评价逻辑810仅包括专用于执行具有方 程式1所示形式的单个二阶多项式近似的单个电路。因此,在一些情 况下,函数评价逻辑810是灵活和可配置的,而在其他情况下,函数 评价逻辑810仅专用于单个任务,并且根本不灵活或可配置。
乘法器电路装置882可以被布置为执行固定点乘法运算、浮点乘 法运算、查找表乘法运算或其他乘法运算。乘法电路装置882可以布 置为在平方运算(例如,“X”x“X”或“X2”)中自己乘以流输入 数据(例如,“X”)。乘法电路装置882可以进一步被布置为将平 方乘积乘以经由通信路径836A从系数查找表存储器812传送的系数 向量(例如,“A”)。此外,乘法电路装置882可以进一步被布置 为将流输入数据(例如,“X”)乘以经由通信路径836B从系数查 找表存储器812传送的系数向量(例如,“B”)。
移位电路装置884可以被布置为支持乘法器电路装置882或其他 功能,诸如输入数据的规范化、控制参数的解释等。
比较器电路装置886可用于将任何一条数据与任何一条或多条其 他数据进行比较。比较器电路装置886的输入可以包括流输入数据(例 如,“X”)、系数向量数据(例如,“A”、“B”、“C”)、来 自函数计算器逻辑810内部或外部的恒定值、以及其他值。
加法器电路装置888可以被布置为相加任意一个或多个值,诸如 二阶多项式近似中的第一项数据(例如,“AX2”)、二阶多项式近 似中的第二项数据(例如,“BX”)、二阶多项式近似中的第三项 数据(例如,“C”)或任何其他值。
数据存储库电路装置890可以包括寄存器、缓冲器、存储阵列、 先入先出(FIFO)结构等。在一些情况下,数据存储库电路装置890 形成在函数评价逻辑810内,而在其他情况下,数据存储库电路装置890与函数评价逻辑810(例如,参数逻辑模块818的一部分等)分离。数据存储库电路装置890的部分可以存储将被相乘、相加、比较、 移位、输出等的值。沿着这些线路,数据存储库电路装置890的部分 可以存储积、和、输出函数值等。存储在数据存储库电路装置890中 的数据可以是矢量数据、标量数据或一些其他格式的数据。
锁存器电路装置892被布置为临时存储那些可能或者可暂时存储 的值。在一些情况下,输出函数值在从函数计算器逻辑810传出之前 存储在锁存电路装置892中。
当被包括在函数评价逻辑810中时,其他电路装置894可被布置 用于任何其他期望的用法。例如,其他电路装置894可以执行或近似 延迟操作、反转操作、选通操作、切换操作(例如,多路复用、解复 用等)、舍入操作、用户界面操作、分组操作、相移操作、阈值操作等。
并且,控制电路装置896被布置为引导函数评价逻辑810的操作。 控制电路装置896可以包括通信电路,或者管理配置总线电路装置的 功能以及函数评价逻辑810的其他特征的控制。控制电路装置可以存 储或引导函数评价逻辑810的一些参数。控制电路装置896还可以与 电源管理电路装置880(图8C)交互,以根据机器学习算法如何使用 函数评价逻辑810来降低功率、增加功率、改变时钟参数等。
图8H是专用激活单元814N的实施例,该专用激活单元814N明 确地布置为执行整流线性单元(ReLU)激活函数。专用激活单元814N 包括总线电路装置898、数据存储库电路装置890、比较器电路装置 886、布置为多路复用器切换电路的其他电路装置894以及控制电路 装置896。
在图8H的专用激活单元814N中,输入数据被传入整流线性单 元(ReLU)激活函数中,并被传送到比较器电路896。将输入数据与 存储在数据存储库电路890中的零值进行比较。如果输入数据小于零, 则将一个信号传入多路复用器电路;而如果输入数据不小于零,则替 代信号被传入多路复用器电路。根据比较器电路886的比较结果,输 入数据或零值将被传送到专用激活单元814N的输出(即,ReLU函 数的输出)。
本公开涉及“半导体从业者”。半导体从业者通常是半导体设计 和制造领域的普通技术人员之一。半导体从业者可以是具有引导和平 衡半导体制造项目的特定特征(诸如几何形状、布局、功率使用、包 括知识产权(IP)模块等)的这种技能的学位工程师或其他技术人员 或系统。半导体从业者可以理解也可以不理解为被执行以形成裸片、 集成电路或其他这种器件的制造处理的每个细节。
图8A-图8H包括示出可被移动计算设备100的实施例使用的非 限制性处理的数据流程图。关于这点,每个所描述的处理可表示软件 代码的模块、片段或部分,其包括用于实现指定逻辑功能的一个或多 个可执行指令。还应当注意,在一些实现中,处理中注明的功能可以 以不同的顺序发生,可以包括附加功能,可以同时发生,和/或可以省 略。
本公开的附图示出了诸如移动设备100的一个或多个非限制性计 算设备实施例的部分。计算设备可以包括在传统计算设备装置中发现 的操作硬件,诸如一个或多个处理器、易失性和非易失性存储器、符 合各种标准和协议的串行和并行输入/输出(I/O)电路、有线和/或无 线网络电路(例如,通信收发器)、一个或多个用户界面(UI)模块、 逻辑和其他电子电路装置。
除其他外,本公开的示例性移动设备(例如,图3的移动设备100) 可配置在任何类型的移动计算设备中,诸如智能电话、平板电脑、膝 上型计算机、可穿戴设备(例如,眼镜、夹克、衬衫、裤子、袜子、 鞋、其他衣服、帽子、头盔、其他头饰、手表、手镯、吊坠、其他首饰)、车载设备(例如,火车、飞机、直升机、无人飞行器、无人水 下航行器、无人陆基车辆、汽车、摩托车、自行车、滑板车、悬停板、 其他个人或商业运输设备)、工业设备等。因此,移动设备包括未示 出的其他部件和电路,诸如显示器、网络接口、存储器、一个或多个 中央处理器、相机接口、音频接口和其他输入/输出接口。在一些情况 下,示例性移动设备还可以配置在不同类型的低功耗设备中,诸如安 装的摄像机、物联网(IoT)设备、多媒体设备、运动检测设备、入 侵者检测设备、安全设备、人群监控设备或一些其他设备。
如本文所述,处理器包括中央处理单元(CPU)、微处理器、微 控制器(MCU)、数字信号处理器(DSP)、专用集成电路(ASIC)、 状态机等。因此,本文所述的处理器包括控制至少一个操作的任何设 备、系统或其部分,并且这种设备可以用硬件、固件或软件、或者至 少两种的一些组合来实现。与任何特定处理器相关联的功能可以是集 中式或分布式的,无论是本地的还是远程的。处理器可以互换地引用 任何类型的被配置为执行编程软件指令的电子控制电路。编程指令可 以是高级软件指令、编译软件指令、汇编语言软件指令、对象代码、 二元代码、微代码等。编程指令可以驻留在内部或外部存储器中,或 者可以硬编码为状态机或控制信号的集合。根据本文引用的方法和设 备,一个或多个实施例描述可由处理器执行的软件,当执行该软件时, 执行所述方法中的一个或多个动作。
在一些情况下,可以在集成电路中提供本公开描述的处理器以及 另外在本公开描述的示例性移动设备的更多或更少的电路。在一些实 施例中,在本发明附图的处理器(例如,SoC 110)中示出的所有元 件可设置在集成电路中。在替代实施例中,本发明附图中示出的一个 或多个布置(例如,SoC 110)6可以由两个或多个集成电路提供。一 些实施例可以通过一个或多个裸片来实现。一个或多个裸片可以封装 在相同或不同的封装中。所示出的一些部件可设置在集成电路或裸片 外部。
本发明附图所示和本文描述的处理器可以在设计时根据拓扑、最 大可用带宽、单位时间最大可用操作、最大并行执行单元和其他这种 参数中的一个或多个而固定。处理器的一些实施例可以在运行时提供 可重新编程的功能(例如,重新配置SoC模块和特征以实现DCNN)。 可以在一个或多个初始化阶段配置一些或全部的可重新编程功能。可 以联机配置一些或全部的可重新编程功能,而没有延迟、可屏蔽延迟 或可接受的延迟级别。
如本领域技术人员所知,本公开描述的计算设备和作为这种计算 设备的移动设备100具有一个或多个存储器,并且每个存储器包括用 于读取和写入的易失性和非易失性计算机可读介质的任何组合。例 如,易失性计算机可读介质包括随机存取存储器(RAM)。例如,非 易失性计算机可读介质包括只读存储器(ROM)、诸如硬盘的磁性介 质、光盘、闪存设备等。在一些情况下,特定存储器被虚拟地或物理 地分离成单独的区域,诸如第一存储器、第二存储器、第三存储器等。 在这些情况下,可以理解,存储器的不同划分可以在不同的设备中或 者在单个存储器中体现。在一些情况下,存储器是被配置为存储被布 置为由处理器执行的软件指令的非临时计算机介质。
在本公开中,存储器可以在一种配置或另一种配置中使用。存储 器可以配置为存储数据。替代地或附加地,存储器可以是非暂态计算 机可读介质(CRM),其中CRM被配置为存储可由处理器执行的指 令。指令可以单独存储或者存储为文件中的指令组。文件可以包括函 数、服务、库等。文件可以包括一个或多个计算机程序,或者可以是 较大计算机程序的一部分。替代地或附加地,每个文件可以包括利于 执行本公开描述的系统、方法和设备的计算功能的数据或其他计算支 持材料。
本文示出和描述的计算设备(移动设备100是一个示例)可以进 一步包括在传统计算设备中找到的操作软件,诸如操作系统或任务循 环、通过I/O电路、联网电路和其他外围部件电路引导操作的软件驱 动器。此外,计算设备可以包括操作性应用软件,诸如用于与其他计 算设备通信的网络软件、用于建立和维护数据库的数据库软件、以及 适合于在各种处理器之间分配通信和/或操作工作负载的任务管理软 件。在一些情况下,计算设备是具有本文列出的至少一些硬件和软件 的单个硬件机器,而在其他情况下,计算设备是在服务器场中协同工 作以执行本文描述的一个或多个实施例的功能的硬件和软件机器的网络化集合。为了简单,在图中没有示出计算设备的传统硬件和软件 的一些方面,但是技术人员能够很好地理解。
当如本文所述布置时,每个计算设备可从一般和非特定计算设备 转换为包括为指定和特定目的配置的硬件和软件的组合设备。沿着这 些路线,组合设备的特征带来了迄今为止没有看到和未知的技术计算 艺术的改进。
如果在本文描述的移动设备或支持网络设备中存在任何数据库 结构,则可以在单个数据库或多个数据库中形成。在一些情况下,硬 件或软件存储库在与其相关联的特定系统的各种功能之间共享。数据 库可以形成为本地系统或局域网的一部分。可替代地或另外地,数据 库可以远程形成,诸如在“云”计算系统内,其可以经由广域网或一 些其他网络访问。
在至少一个实施例中,本文描述的移动设备可以经由网络上的通 信与其他设备通信。网络可涉及因特网连接或一些其他类型的局域网 (LAN)或广域网(WAN)。使能或形成网络的一部分的结构的非 限制性示例包括但不限于以太网、双绞线对以太网、数字用户环(DSL)设备、无线LAN、WiFi、基于蜂窝的网络等。
按钮、键盘、计算机鼠标、存储卡、串行端口、生物传感器读取 器、触摸屏等可以单独地或协作地用于移动设备或本文所述的其他这 种设备的操作者。例如,设备可以将控制信息输入系统。显示器、打 印机、存储卡、LED指示器、温度传感器、音频设备(例如,扬声器、压电设备等)、振动器等用于向这些移动设备的操作者呈现输出信息。 在一些情况下,输入和输出设备直接耦合至本文描述的控制系统,并 且电耦合至处理器或其他操作电路。在其他情况下,输入和输出设备 经由一个或多个通信端口(例如,RS-232、RS-485、红外线、USB等)传送信息。
除非另有定义,此处使用的技术和科学术语与本发明所属领域的 普通技术人员通常理解的含义相同。尽管在本发明的实践或测试中也 可以使用与本文描述的方法和材料相似或等效的任何方法和材料,但 是在本文中描述了有限数量的示例性方法和材料。
在前面的描述中,阐明了特定具体细节以提供对各种公开的实施 例的透彻理解。然而,相关领域的技术人员将认识到,可以在没有这 些具体细节中的一个或多个的情况下、或者用其他方法、部件、材料 等来实践实施例。在其他情况下,没有示出或详细描述与包括客户端 和服务器计算系统的电子和计算系统相关联的已知结构以及网络,以 避免不必要地模糊实施例的描述。
除非上下文另有要求,否则贯穿下面的说明书和权利要求,词语 “包括”及其变型以开放、包容的意义来解释,例如,“包括但不限 于”。
贯穿本说明书对“一个实施例”或“实施例”及其变型的引用意 味着结合该实施例描述的特定特征、结构或特性包括在至少一个实施 例中。因此,贯穿本说明书的各个地方出现的短语“在一个实施例中” 或“在实施例中”不一定都指同一实施例。此外,可以在一个或多个 实施例中以任何合适的方式组合特定特征、结构或特性。
如本说明书和所附权利要求中所使用的,除非内容和上下文另有 明确规定,否则单数形式“一个”和“该”包括多个。还应注意,连 词术语“和”和“或”通常用于最广义的包含“和/或”,除非内容和 语境明确规定情况可能具有包容性或排他性。此外,“和”和“或” 的组合在本文中被描述为“和/或”旨在包括所有相关项目或思想的实 施例以及包括少于所有相关项目或思想的一个或多个其他替代实施 例。
在本公开中,联合列表使用逗号,其可以被称为牛津逗号、哈佛 逗号、串行逗号或其他类似术语。这种列表旨在连接单词、子句或句 子,使得逗号后面的事情也包含在列表中。
这里提供的公开内容的标题和摘要只是为了方便,并不限制或解 释实施例的范围或含义。
上述各种实施例可以组合以提供进一步的实施例。如果需要利用 各种专利、申请和出版物的概念来提供进一步的实施例,可以修改实 施例的方面。
根据上述详细描述,可以对实施例进行这些和其他更改。一般而 言,在以下权利要求中,所使用的术语不应被解释为将权利要求限于 说明书和权利要求中公开的特定实施例,而应被解释为包括所有可能 的实施例以及这些权利要求所享有的全部等效范围。因此,权利要求 不受本公开的限制。

Claims (20)

1.一种设备,包括:
集成电路;
可重构流开关,形成在所述集成电路中;以及
算术单元,所述算术单元具有:
至少一个输入,被布置为接收通过所述可重构流开关传送的流数据;
至少一个输出,被布置为通过所述可重构流开关来流传输结果数据;以及
多条数据路径,所述多条数据路径中的至少一条数据路径专用于根据二阶多项式的近似实现激活函数,所述二阶多项式具有输出=AX2+BX+C的形式。
2.根据权利要求1所述的设备,其中所述多条数据路径中的专用于实现所述激活函数的所述至少一条数据路径专用于实现整流线性单元(ReLU)函数。
3.根据权利要求1所述的设备,其中专用于实现所述激活函数的所述至少一条数据路径可被配置为实现识别函数、二元阶跃函数、软阶跃函数、双曲正切函数、弧切函数、整流线性单元(ReLU)函数、参数ReLU函数、指数线性单元函数和软加函数。
4.根据权利要求1所述的设备,其中所述集成电路被布置用于卷积神经网络运算。
5.根据权利要求1所述的设备,包括:
系数存储库,耦合至所述算术单元,所述系数存储库被布置为同时存储至少两个激活函数的系数。
6.根据权利要求1所述的设备,其中所述算术单元被配置为接收所述流数据作为多维输入特征卷。
7.根据权利要求6所述的设备,其中所述流数据包括指定所述输入特征卷的几何比例的信息。
8.根据权利要求6所述的设备,其中所述算术单元被布置为定义具有输入图块高度、输入图块宽度和输入图块深度的输入图块,并且其中所述算术单元被布置为以算法可配置图案使所述输入图块行进通过所述输入特征卷。
9.根据权利要求8所述的设备,其中所述算法可配置图案具有高度、宽度和深度。
10.根据权利要求1所述的设备,其中所述算术单元包括:
专用于存储查找表(LUT)的数据存储库,所述查找表被布置为存储用于执行多个二阶多项式近似的数据。
11.一种机器学习方法,包括:
通过可重构流开关流传输输入数据;
在算术单元的输入处接收所述输入数据,所述算术单元具有多条数据路径,所述多条数据路径中的至少一条数据路径专用于根据二阶多项式的近似实现激活函数,所述二阶多项式具有输出=AX2+BX+C的形式;
利用所述算术单元生成输出数据,所述输出数据与所述激活函数的输出相对应;
通过所述可重构流开关流传输所述输出数据;以及
基于输出数据的流中的信息来识别所述输入数据中的至少一个特征。
12.根据权利要求11所述的方法,其中所述激活函数能够由包括二元阶跃函数、软阶跃函数、双曲正切函数、弧切函数、整流线性单元(ReLU)函数、参数ReLU函数、指数线性单元函数和软加函数的组来配置。
13.根据权利要求11所述的方法,其中所述激活函数被执行作为部分深度卷积神经网络过程。
14.根据权利要求13所述的方法,其中所述输入数据是图像传感器数据。
15.根据权利要求14所述的方法,包括:
在所述图像传感器数据中定义特征卷,所述特征卷具有特征卷高度、特征卷宽度和特征卷深度;
定义具有输入图块高度、输入图块宽度和输入图块深度的输入图块;以及
以算法可配置图案使所述输入图块行进通过所述特征卷。
16.根据权利要求11所述的方法,其中所述多条数据路径中的至少一条数据路径专用于实现整流线性单元(ReLU)函数,并且所述方法包括:
生成与所述ReLU函数的输出相对应的输出数据。
17.一种系统,包括:
存储器;
应用处理器;
数字信号处理器(DSP)集群;
可配置加速器框架(CAF);以及
至少一个通信总线架构,将所述应用处理器、所述DSP集群和所述CAF通信地耦合至所述存储器,其中所述CAF包括:
可重构流开关;和
算术单元,具有多条数据路径,所述多条数据路径中的至少一条数据路径专用于根据二阶多项式的近似实现激活函数,所述二阶多项式具有输出=AX2+BX+C的形式。
18.根据权利要求17所述的系统,包括:
集成电路封装件,包含所述存储器、所述应用处理器、所述DSP集群、所述CAF和所述至少一个通信总线架构。
19.根据权利要求17所述的系统,包括:
电源管理器电路,所述电源管理器电路可电耦合至电池。
20.根据权利要求17所述的系统,其中所述系统是移动设备。
CN201910143490.3A 2018-02-27 2019-02-26 用于深度学习引擎的加速单元 Active CN110197111B (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201862636022P 2018-02-27 2018-02-27
US62/636,022 2018-02-27
US16/280,991 2019-02-20
US16/280,991 US11687762B2 (en) 2018-02-27 2019-02-20 Acceleration unit for a deep learning engine

Publications (2)

Publication Number Publication Date
CN110197111A true CN110197111A (zh) 2019-09-03
CN110197111B CN110197111B (zh) 2024-04-12

Family

ID=65576191

Family Applications (2)

Application Number Title Priority Date Filing Date
CN201910143490.3A Active CN110197111B (zh) 2018-02-27 2019-02-26 用于深度学习引擎的加速单元
CN201920242966.4U Active CN210006057U (zh) 2018-02-27 2019-02-26 用于深度学习引擎的设备和系统

Family Applications After (1)

Application Number Title Priority Date Filing Date
CN201920242966.4U Active CN210006057U (zh) 2018-02-27 2019-02-26 用于深度学习引擎的设备和系统

Country Status (3)

Country Link
US (1) US11687762B2 (zh)
EP (1) EP3531349B1 (zh)
CN (2) CN110197111B (zh)

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110490308A (zh) * 2019-09-16 2019-11-22 普联技术有限公司 加速库的设计方法、终端设备及存储介质
CN111242293A (zh) * 2020-01-13 2020-06-05 腾讯科技(深圳)有限公司 一种处理部件、数据处理的方法以及电子设备
CN112418417A (zh) * 2020-09-24 2021-02-26 北京计算机技术及应用研究所 基于simd技术的卷积神经网络加速装置及方法
CN112419142A (zh) * 2020-11-25 2021-02-26 中科融合感知智能研究院(苏州工业园区)有限公司 一种提升dcnn计算阵列效率的系统及方法
CN113419779A (zh) * 2020-05-08 2021-09-21 黑芝麻智能科技(重庆)有限公司 可扩展多精度数据流水线系统和方法
CN113537451A (zh) * 2020-04-22 2021-10-22 爱思开海力士有限公司 激活函数处理方法、激活函数处理电路及神经网络系统
WO2022047802A1 (en) * 2020-09-07 2022-03-10 Alibaba Group Holding Limited Processing-in-memory device and data processing method thereof
CN114491864A (zh) * 2022-01-26 2022-05-13 哈尔滨工程大学 一种具有参数化、可重构特征的核动力管网模型预处理方法
CN114662678A (zh) * 2022-05-17 2022-06-24 华中科技大学 一种变激活函数卷积神经网络及其训练方法

Families Citing this family (41)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10417364B2 (en) 2017-01-04 2019-09-17 Stmicroelectronics International N.V. Tool to create a reconfigurable interconnect framework
CN207517054U (zh) 2017-01-04 2018-06-19 意法半导体股份有限公司 串流开关
US10970080B2 (en) 2018-02-08 2021-04-06 Marvell Asia Pte, Ltd. Systems and methods for programmable hardware architecture for machine learning
US10977854B2 (en) 2018-02-27 2021-04-13 Stmicroelectronics International N.V. Data volume sculptor for deep learning acceleration
US11586907B2 (en) 2018-02-27 2023-02-21 Stmicroelectronics S.R.L. Arithmetic unit for deep learning acceleration
US11687762B2 (en) 2018-02-27 2023-06-27 Stmicroelectronics S.R.L. Acceleration unit for a deep learning engine
US11769036B2 (en) * 2018-04-18 2023-09-26 Qualcomm Incorporated Optimizing performance of recurrent neural networks
US10997510B1 (en) 2018-05-22 2021-05-04 Marvell Asia Pte, Ltd. Architecture to support tanh and sigmoid operations for inference acceleration in machine learning
US11016801B1 (en) 2018-05-22 2021-05-25 Marvell Asia Pte, Ltd. Architecture to support color scheme-based synchronization for machine learning
US10929760B1 (en) 2018-05-22 2021-02-23 Marvell Asia Pte, Ltd. Architecture for table-based mathematical operations for inference acceleration in machine learning
US10891136B1 (en) 2018-05-22 2021-01-12 Marvell Asia Pte, Ltd. Data transmission between memory and on chip memory of inference engine for machine learning via a single data gathering instruction
US10929779B1 (en) 2018-05-22 2021-02-23 Marvell Asia Pte, Ltd. Architecture to support synchronization between core and inference engine for machine learning
US10929778B1 (en) * 2018-05-22 2021-02-23 Marvell Asia Pte, Ltd. Address interleaving for machine learning
US10606975B2 (en) * 2018-05-31 2020-03-31 International Business Machines Corporation Coordinates-based generative adversarial networks for generating synthetic physical design layout patterns
US10706200B2 (en) 2018-06-05 2020-07-07 International Business Machines Corporation Generative adversarial networks for generating physical design layout patterns of integrated multi-layers
US10699055B2 (en) 2018-06-12 2020-06-30 International Business Machines Corporation Generative adversarial networks for generating physical design layout patterns
CA3012644C (en) * 2018-07-27 2022-05-03 Richard Bruce Rood Sealing boot for sealing a joint of front differential
US10572225B1 (en) * 2018-09-26 2020-02-25 Xilinx, Inc. Circuit arrangements and methods for performing multiply-and-accumulate operations
US11341210B2 (en) * 2019-02-15 2022-05-24 Apple Inc. Two-dimensional multi-layer convolution for deep learning
US11468147B1 (en) 2019-07-22 2022-10-11 Habana Labs Ltd. Activation function approximation in deep neural networks using rectified-linear-unit function
US11327923B2 (en) * 2019-09-04 2022-05-10 SambaNova Systems, Inc. Sigmoid function in hardware and a reconfigurable data processor including same
CN111126579B (zh) * 2019-11-05 2023-06-27 复旦大学 一种适用于二值卷积神经网络计算的存内计算装置
US11948067B1 (en) * 2019-11-11 2024-04-02 Perceive Corporation Storing of intermediate computed values for subsequent use in a machine trained network
KR20210086233A (ko) * 2019-12-31 2021-07-08 삼성전자주식회사 완화된 프루닝을 통한 행렬 데이터 처리 방법 및 그 장치
CN111191779B (zh) * 2020-01-02 2023-05-30 中昊芯英(杭州)科技有限公司 一种数据处理方法、装置、处理器及计算机可读存储介质
US11687778B2 (en) 2020-01-06 2023-06-27 The Research Foundation For The State University Of New York Fakecatcher: detection of synthetic portrait videos using biological signals
US11593609B2 (en) 2020-02-18 2023-02-28 Stmicroelectronics S.R.L. Vector quantization decoding hardware unit for real-time dynamic decompression for parameters of neural networks
US11507831B2 (en) 2020-02-24 2022-11-22 Stmicroelectronics International N.V. Pooling unit for deep learning acceleration
US11462003B2 (en) 2020-03-25 2022-10-04 Western Digital Technologies, Inc. Flexible accelerator for sparse tensors in convolutional neural networks
US11797830B2 (en) 2020-03-25 2023-10-24 Western Digital Technologies, Inc. Flexible accelerator for sparse tensors in convolutional neural networks
US11287869B2 (en) * 2020-04-30 2022-03-29 Marvell Asia Pte Ltd System and methods for on-chip memory (OCM) port throttling for machine learning operations
US11531873B2 (en) 2020-06-23 2022-12-20 Stmicroelectronics S.R.L. Convolution acceleration with embedded vector decompression
GB2599098B (en) * 2020-09-22 2024-04-10 Imagination Tech Ltd Hardware implementation of windowed operations in three or more dimensions
US20220101086A1 (en) * 2020-09-30 2022-03-31 Stmicroelectronics S.R.L. Reconfigurable hardware buffer in a neural networks accelerator framework
US20230083597A1 (en) * 2021-09-03 2023-03-16 Qualcomm Incorporated Configurable nonlinear activation function circuits
CN117897698A (zh) * 2021-09-03 2024-04-16 高通股份有限公司 可配置非线性激活函数电路
KR20230063791A (ko) * 2021-11-02 2023-05-09 리벨리온 주식회사 인공지능 코어, 인공지능 코어 시스템 및 인공지능 코어 시스템의 로드/스토어 방법
US20230147344A1 (en) * 2021-11-09 2023-05-11 Panasonic Avionics Corporation Transmission power control for electronic devices in commercial passenger vehicles
WO2023121499A1 (en) * 2021-12-23 2023-06-29 Huawei Technologies Co., Ltd. Methods and apparatus for approximating a cumulative distribution function for use in entropy coding or decoding data
EP4336409A1 (en) 2022-09-12 2024-03-13 STMicroelectronics S.r.l. Neural network hardware accelerator circuit with requantization circuits
WO2024067954A1 (en) * 2022-09-27 2024-04-04 Axelera Ai Bv Accelerating artificial neural networks using hardware-implemented lookup tables

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150170021A1 (en) * 2013-12-18 2015-06-18 Marc Lupon Reconfigurable processing unit

Family Cites Families (47)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5768613A (en) 1990-07-06 1998-06-16 Advanced Micro Devices, Inc. Computing apparatus configured for partitioned processing
JP3881510B2 (ja) * 2000-12-13 2007-02-14 株式会社山武 曲面モデルの同定方法及びプログラム
CN101739241A (zh) 2008-11-12 2010-06-16 中国科学院微电子研究所 一种片上多核dsp簇和应用扩展方法
US10078620B2 (en) 2011-05-27 2018-09-18 New York University Runtime reconfigurable dataflow processor with multi-port memory access module
US8977583B2 (en) * 2012-03-29 2015-03-10 International Business Machines Corporation Synaptic, dendritic, somatic, and axonal plasticity in a network of neural cores using a plastic multi-stage crossbar switching
US9436637B2 (en) 2013-05-17 2016-09-06 Advanced Micro Devices, Inc. Network-on-chip architecture for multi-processor SoC designs
US9442869B2 (en) 2014-01-24 2016-09-13 Texas Instruments Incorporated Programmable interrupt routing in multiprocessor devices
US9613269B2 (en) 2014-03-31 2017-04-04 Honeywell International Inc. Identifying and tracking convective weather cells
CN107247992B (zh) 2014-12-30 2019-08-30 合肥工业大学 一种基于列梅兹逼近算法的sigmoid函数拟合硬件电路
US20160379109A1 (en) 2015-06-29 2016-12-29 Microsoft Technology Licensing, Llc Convolutional neural networks on hardware accelerators
US10275394B2 (en) 2015-10-08 2019-04-30 Via Alliance Semiconductor Co., Ltd. Processor with architectural neural network execution unit
CN105488565A (zh) 2015-11-17 2016-04-13 中国科学院计算技术研究所 加速深度神经网络算法的加速芯片的运算装置及方法
US10002313B2 (en) 2015-12-15 2018-06-19 Sighthound, Inc. Deeply learned convolutional neural networks (CNNS) for object localization and classification
EP3223237B1 (en) 2016-03-22 2020-05-27 Tata Consultancy Services Limited Systems and methods for detecting and tracking a marker
JP6786948B2 (ja) 2016-08-12 2020-11-18 富士通株式会社 演算処理装置及び演算処理装置の制御方法
US9779786B1 (en) 2016-10-26 2017-10-03 Xilinx, Inc. Tensor operations and acceleration
US10949736B2 (en) * 2016-11-03 2021-03-16 Intel Corporation Flexible neural network accelerator and methods therefor
US10074038B2 (en) 2016-11-23 2018-09-11 General Electric Company Deep learning medical systems and methods for image reconstruction and quality evaluation
CN106650655A (zh) 2016-12-16 2017-05-10 北京工业大学 一种基于卷积神经网络的动作检测模型
WO2018125580A1 (en) 2016-12-30 2018-07-05 Konica Minolta Laboratory U.S.A., Inc. Gland segmentation with deeply-supervised multi-level deconvolution networks
US10417364B2 (en) 2017-01-04 2019-09-17 Stmicroelectronics International N.V. Tool to create a reconfigurable interconnect framework
EP3346427B1 (en) 2017-01-04 2023-12-20 STMicroelectronics S.r.l. Configurable accelerator framework, system and method
CN207517054U (zh) 2017-01-04 2018-06-19 意法半导体股份有限公司 串流开关
CN108268940B (zh) 2017-01-04 2022-02-18 意法半导体股份有限公司 用于创建可重新配置的互连框架的工具
CN207440765U (zh) 2017-01-04 2018-06-01 意法半导体股份有限公司 片上系统和移动计算设备
US11853244B2 (en) * 2017-01-26 2023-12-26 Wisconsin Alumni Research Foundation Reconfigurable computer accelerator providing stream processor and dataflow processor
KR101947782B1 (ko) 2017-02-22 2019-02-13 한국과학기술원 열화상 영상 기반의 거리 추정 장치 및 방법. 그리고 이를 위한 신경망 학습 방법
US10176551B2 (en) 2017-04-27 2019-01-08 Apple Inc. Configurable convolution engine for interleaved channel data
US11501139B2 (en) 2017-05-03 2022-11-15 Intel Corporation Scaling half-precision floating point tensors for training deep neural networks
US10372456B2 (en) 2017-05-24 2019-08-06 Microsoft Technology Licensing, Llc Tensor processor instruction set architecture
US10586124B2 (en) 2017-08-03 2020-03-10 Streaming Global, Inc. Methods and systems for detecting and analyzing a region of interest from multiple points of view
WO2019033381A1 (en) 2017-08-18 2019-02-21 Intel Corporation EFFECTIVE NEURONIC NETWORKS WITH MATRIX STRUCTURES DEVELOPED IN AUTOMATIC LEARNING ENVIRONMENTS
KR20190051697A (ko) 2017-11-07 2019-05-15 삼성전자주식회사 뉴럴 네트워크의 디컨벌루션 연산을 수행하는 장치 및 방법
US10970042B2 (en) * 2017-11-20 2021-04-06 Intel Corporation Integrated circuits with machine learning extensions
US11175892B2 (en) * 2017-11-20 2021-11-16 Intel Corporation Integrated circuits with machine learning extensions
US11636327B2 (en) 2017-12-29 2023-04-25 Intel Corporation Machine learning sparse computation mechanism for arbitrary neural networks, arithmetic compute microarchitecture, and sparsity for training mechanism
US11270201B2 (en) 2017-12-29 2022-03-08 Intel Corporation Communication optimizations for distributed machine learning
US20190251429A1 (en) 2018-02-12 2019-08-15 Kneron, Inc. Convolution operation device and method of scaling convolution input for convolution neural network
US10977854B2 (en) 2018-02-27 2021-04-13 Stmicroelectronics International N.V. Data volume sculptor for deep learning acceleration
US11687762B2 (en) 2018-02-27 2023-06-27 Stmicroelectronics S.R.L. Acceleration unit for a deep learning engine
US11586907B2 (en) 2018-02-27 2023-02-21 Stmicroelectronics S.R.L. Arithmetic unit for deep learning acceleration
WO2019227322A1 (zh) 2018-05-30 2019-12-05 深圳市大疆创新科技有限公司 池化装置和池化方法
KR102637733B1 (ko) 2018-10-31 2024-02-19 삼성전자주식회사 뉴럴 네트워크 프로세서 및 그것의 컨볼루션 연산 방법
US11494608B2 (en) * 2019-08-14 2022-11-08 Intel Corporation Methods and apparatus to tile walk a tensor for convolution operations
US11593609B2 (en) 2020-02-18 2023-02-28 Stmicroelectronics S.R.L. Vector quantization decoding hardware unit for real-time dynamic decompression for parameters of neural networks
US20220121928A1 (en) * 2020-10-19 2022-04-21 Google Llc Enhanced reconfigurable interconnect network
US20220188072A1 (en) * 2021-12-23 2022-06-16 Intel Corporation Systems and methods for calculating large polynomial multiplications

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150170021A1 (en) * 2013-12-18 2015-06-18 Marc Lupon Reconfigurable processing unit

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
GABRIELE MARIA LOZITO等: "《MICROCONTROLLER BASED MAXIMUM POWER POINT TRACKING THROUGH FCC AND MLP NEURAL NETWORKS》", 《2014 THE 6TH EUROPEAN EMBEDDED DESIGN IN EDUCATION AND RESEARCH CONFERENCE(EDERC)》, pages 207 - 211 *
STAMATIS VASSILIADIS等: "《Elementary Function Generators for Neural-Network Emulators》", 《IEEE TRANSACTIONS ON NEURAL NETWORKS》, vol. 11, no. 06, pages 1438 - 1449 *

Cited By (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110490308A (zh) * 2019-09-16 2019-11-22 普联技术有限公司 加速库的设计方法、终端设备及存储介质
CN110490308B (zh) * 2019-09-16 2022-02-18 普联技术有限公司 加速库的设计方法、终端设备及存储介质
CN111242293A (zh) * 2020-01-13 2020-06-05 腾讯科技(深圳)有限公司 一种处理部件、数据处理的方法以及电子设备
CN111242293B (zh) * 2020-01-13 2023-07-18 腾讯科技(深圳)有限公司 一种处理部件、数据处理的方法以及电子设备
CN113537451A (zh) * 2020-04-22 2021-10-22 爱思开海力士有限公司 激活函数处理方法、激活函数处理电路及神经网络系统
CN113419779B (zh) * 2020-05-08 2023-07-07 黑芝麻智能科技(重庆)有限公司 可扩展多精度数据流水线系统和方法
CN113419779A (zh) * 2020-05-08 2021-09-21 黑芝麻智能科技(重庆)有限公司 可扩展多精度数据流水线系统和方法
WO2022047802A1 (en) * 2020-09-07 2022-03-10 Alibaba Group Holding Limited Processing-in-memory device and data processing method thereof
CN112418417A (zh) * 2020-09-24 2021-02-26 北京计算机技术及应用研究所 基于simd技术的卷积神经网络加速装置及方法
CN112418417B (zh) * 2020-09-24 2024-02-27 北京计算机技术及应用研究所 基于simd技术的卷积神经网络加速装置及方法
CN112419142A (zh) * 2020-11-25 2021-02-26 中科融合感知智能研究院(苏州工业园区)有限公司 一种提升dcnn计算阵列效率的系统及方法
CN112419142B (zh) * 2020-11-25 2023-10-24 中科融合感知智能研究院(苏州工业园区)有限公司 一种提升dcnn计算阵列效率的系统及方法
CN114491864A (zh) * 2022-01-26 2022-05-13 哈尔滨工程大学 一种具有参数化、可重构特征的核动力管网模型预处理方法
CN114662678A (zh) * 2022-05-17 2022-06-24 华中科技大学 一种变激活函数卷积神经网络及其训练方法

Also Published As

Publication number Publication date
CN210006057U (zh) 2020-01-31
US11687762B2 (en) 2023-06-27
EP3531349A1 (en) 2019-08-28
CN110197111B (zh) 2024-04-12
US20190266479A1 (en) 2019-08-29
EP3531349B1 (en) 2024-05-01

Similar Documents

Publication Publication Date Title
CN110197111A (zh) 用于深度学习引擎的加速单元
CN209560590U (zh) 电子设备和集成电路
CN210428520U (zh) 用于深度学习加速的集成电路
CN207731321U (zh) 硬件加速器引擎
CN207440765U (zh) 片上系统和移动计算设备
CN207517054U (zh) 串流开关
CN109993278A (zh) 机器学习环境中的有效卷积
CN108805796A (zh) 用于整数深度学习原语的动态精度管理
CN108694080A (zh) 高效线程组调度
CN110288509A (zh) 计算优化机制
CN109993684A (zh) 机器学习和深度学习处理中的压缩
CN108805797A (zh) 用于机器学习操作的经优化计算硬件
CN108805791A (zh) 低精度机器学习操作的计算优化
CN109997154A (zh) 信息处理方法及终端设备
CN108734642A (zh) 对机器学习模型的动态分布训练
CN108694689A (zh) 神经网络调度机制
CN108734272A (zh) 卷积神经网络优化机构
CN110462602A (zh) 用于多处理器平台上的深度学习网络执行流水线的方法和装置
CN108805793A (zh) 乘法-累加"0"数据门控
CN108734298A (zh) 扩展gpu/cpu一致性到多gpu核
CN110383296A (zh) 用于提供深度堆叠的自动程序合成的系统和方法
CN110383206A (zh) 用于利用硬件加速来生成高斯随机数的系统和方法
US11977971B2 (en) Data volume sculptor for deep learning acceleration
Li et al. Human Action Recognition Algorithm of Non-local Two-Stream Convolution Network Based on Image Depth Flow

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