CN210006057U - 用于深度学习引擎的设备和系统 - Google Patents
用于深度学习引擎的设备和系统 Download PDFInfo
- Publication number
- CN210006057U CN210006057U CN201920242966.4U CN201920242966U CN210006057U CN 210006057 U CN210006057 U CN 210006057U CN 201920242966 U CN201920242966 U CN 201920242966U CN 210006057 U CN210006057 U CN 210006057U
- Authority
- CN
- China
- Prior art keywords
- data
- function
- input
- kernel
- logic
- 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.)
- Active
Links
- 238000013135 deep learning Methods 0.000 title claims description 8
- 230000006870 function Effects 0.000 claims description 230
- 230000004913 activation Effects 0.000 claims description 103
- 230000015654 memory Effects 0.000 claims description 79
- 230000006854 communication Effects 0.000 claims description 64
- 238000004891 communication Methods 0.000 claims description 64
- 238000013527 convolutional neural network Methods 0.000 claims description 46
- 230000008878 coupling Effects 0.000 claims description 4
- 238000010168 coupling process Methods 0.000 claims description 4
- 238000005859 coupling reaction Methods 0.000 claims description 4
- 238000011156 evaluation Methods 0.000 description 65
- 238000011176 pooling Methods 0.000 description 36
- 238000012545 processing Methods 0.000 description 36
- 238000000034 method Methods 0.000 description 26
- 239000000872 buffer Substances 0.000 description 20
- 230000007246 mechanism Effects 0.000 description 19
- 230000008569 process Effects 0.000 description 19
- 238000010586 diagram Methods 0.000 description 15
- 238000003860 storage Methods 0.000 description 15
- 238000010801 machine learning Methods 0.000 description 13
- 238000013461 design Methods 0.000 description 11
- 235000019800 disodium phosphate Nutrition 0.000 description 11
- 230000009471 action Effects 0.000 description 10
- 238000004422 calculation algorithm Methods 0.000 description 10
- 239000004065 semiconductor Substances 0.000 description 10
- 210000004027 cell Anatomy 0.000 description 7
- 238000010606 normalization Methods 0.000 description 7
- 238000012546 transfer Methods 0.000 description 7
- 241001442055 Vipera berus Species 0.000 description 6
- 230000000670 limiting effect Effects 0.000 description 6
- 238000013507 mapping Methods 0.000 description 6
- 238000013528 artificial neural network Methods 0.000 description 5
- 238000010304 firing Methods 0.000 description 5
- 230000002093 peripheral effect Effects 0.000 description 5
- 230000001133 acceleration Effects 0.000 description 4
- 230000004044 response Effects 0.000 description 4
- 238000001914 filtration Methods 0.000 description 3
- 238000007667 floating Methods 0.000 description 3
- 238000005286 illumination Methods 0.000 description 3
- 238000002955 isolation Methods 0.000 description 3
- 210000002569 neuron Anatomy 0.000 description 3
- 230000011664 signaling Effects 0.000 description 3
- 238000012549 training Methods 0.000 description 3
- 238000004458 analytical method Methods 0.000 description 2
- 238000003491 array Methods 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 239000004020 conductor Substances 0.000 description 2
- 238000005520 cutting process Methods 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 229910052739 hydrogen Inorganic materials 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 238000012806 monitoring device Methods 0.000 description 2
- 230000006855 networking Effects 0.000 description 2
- 230000009467 reduction Effects 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 230000000007 visual effect Effects 0.000 description 2
- 208000019300 CLIPPERS Diseases 0.000 description 1
- 241001465754 Metazoa Species 0.000 description 1
- 241000282320 Panthera leo Species 0.000 description 1
- 241000282376 Panthera tigris Species 0.000 description 1
- 241000282458 Ursus sp. Species 0.000 description 1
- 238000009825 accumulation Methods 0.000 description 1
- 230000003213 activating effect Effects 0.000 description 1
- 239000000654 additive Substances 0.000 description 1
- 230000000996 additive effect Effects 0.000 description 1
- 238000012443 analytical study Methods 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000007175 bidirectional communication Effects 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000003915 cell function Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 208000021930 chronic lymphocytic inflammation with pontine perivascular enhancement responsive to steroids Diseases 0.000 description 1
- 230000006837 decompression Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000003745 diagnosis Methods 0.000 description 1
- 201000010099 disease Diseases 0.000 description 1
- 208000037265 diseases, disorders, signs and symptoms Diseases 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 210000001508 eye Anatomy 0.000 description 1
- 210000004709 eyebrow Anatomy 0.000 description 1
- 210000001061 forehead Anatomy 0.000 description 1
- 230000002068 genetic effect Effects 0.000 description 1
- 239000011521 glass Substances 0.000 description 1
- 210000004209 hair Anatomy 0.000 description 1
- 238000010191 image analysis Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000001788 irregular Effects 0.000 description 1
- 238000007620 mathematical function Methods 0.000 description 1
- 210000000214 mouth Anatomy 0.000 description 1
- 210000001331 nose Anatomy 0.000 description 1
- 230000036961 partial effect Effects 0.000 description 1
- 230000010363 phase shift Effects 0.000 description 1
- 230000002829 reductive effect Effects 0.000 description 1
- 230000010076 replication Effects 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 238000005070 sampling Methods 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 230000002123 temporal effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/16—Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/17—Function evaluation by approximation methods, e.g. inter- or extrapolation, smoothing, least mean square method
- G06F17/175—Function evaluation by approximation methods, e.g. inter- or extrapolation, smoothing, least mean square method of multidimensional data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/0464—Convolutional networks [CNN, ConvNet]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/048—Activation functions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V40/00—Recognition of biometric, human-related or animal-related patterns in image or video data
- G06V40/10—Human or animal bodies, e.g. vehicle occupants or pedestrians; Body parts, e.g. hands
- G06V40/16—Human faces, e.g. facial parts, sketches or expressions
- G06V40/172—Classification, e.g. identification
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Computing Systems (AREA)
- Artificial Intelligence (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Computational Linguistics (AREA)
- Molecular Biology (AREA)
- Pure & Applied Mathematics (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Neurology (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Medical Informatics (AREA)
- Oral & Maxillofacial Surgery (AREA)
- Human Computer Interaction (AREA)
- Multimedia (AREA)
- Image Analysis (AREA)
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.和HintonG.的“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示出了显著减少由卷积处理产生的数据量的池化特征;
图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和CAF400。当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。在一些实施例中,每个DSP142、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处理期间执行的非卷积操作,在一些情况下,这些操作主要由CAF400执行。这些非卷积操作的示例包括但不限于,最大或平均池化、非线性激活、跨通道响应规范化、表示整个DCNN计算的一小部分但更适合未来算法演进的分类或者其他操作(例如,Min、Max、Sqrt、Mac、Butterfly、Average、2-4SIMD 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等)和/或多个DSP138中的一个或多个,以采用DCNN并识别输入图像中的对象。
CAF 400利用单向链路经由可配置的、全连接的开关向不同种类的源或槽部件传送数据或者传送来自不同种类的源或槽部件的数据。例如,结合图5更详细描述的可配置全连接开关可经由直接存储器访问(DMA)将数据传送到SoC全局存储器126、I/O接口(例如,相机)和各种类型的加速器(例如,卷积加速器(CA)600、激活函数加速器800)。在一些情况下,基于从特定SoC配置工具接收的信息,在启动时配置CAF 400,并且基于定义的DCNN层和拓扑或者从一个或多个DSP 138、应用处理器128等接收的拓扑或信息,在运行时间期间重新配置CAF 400。
CAF 400允许在运行时定义可选数量的并发虚拟处理链。CAF400还包括全功能背压机制,以控制数据流向框架的各个部件。CAF400被布置用于流多播操作,这能够在多块实例中重用数据流。链接列表控制整个卷积层的完全自主处理。将多个加速器成组或链接在一起并行地处理不同大小的特征映射数据和多个内核。将卷积加速器(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)开始的整体工具来确定或调整这些配置。CA 600支持即时(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传出或者从CAF 400传入或传出。例如,在一些情况下,一个或多个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实现是库的一部分,其可以在其他CAF400实施例中使用,以在全局系统定义文件中简单地实例化CA 600。
一个或多个激活函数加速器模板模块也可以包括在IP模块库中,诸如关于表格2描述的库。这里,可以进一步扩展配置寄存器的预定义集合,以便为包括的算术单元的配置提供参数存储。这些参数与任何期望数量的多路复用器电路、乘法器电路、加法器电路、临时存储电路、数据移位电路和其他电路的配置相关联。
每个激活函数加速器800专用于执行以分段二阶多项式近似的形式表示的激活函数,诸如方程式1中的公式。标量数据、矢量数据、流数据、恒定数据、交叉存取的数据和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)
(软加)f(x)=loge(1+ex) (11A)
通过形成基于硬件的激活函数加速器800并将这些加速器单元耦合至流开关500,卷积神经网络或其他机器学习设备的卷积处理可以改进的灵活性、数据局部性和速度来执行。
图8A-图8H在本文可以统称为图8。
图8A是激活函数加速器800的实施例。输入数据802流式进入激活函数加速器800,并且函数输出数据804从激活函数加速器800传出。激活函数评价选择逻辑(EFESL)808指导激活函数加速器800的操作。
每个激活函数加速器800均包括函数评价逻辑810。函数评价逻辑810是自适用硬件逻辑块,其被布置为加速任何期望的激活函数,并以分段二阶多项式近似(方程式1)的形式表示函数。为了实现二阶多项式近似,将诸如存储器的专用数据存储库组织为系数查找表,以将系数数据馈送到函数评价逻辑810。在图8A中,系数查找表存储器812被示为激活函数加速器800的组成部分,但是在其他实施例中,系数查找表存储器812可位于CAF 400(图4)的不同部分或SoC110的不同部分。在一些情况下,系数查找表存储器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使用流式输入数据(即,DataIn)和系数数据(即,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 (14)
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.一种用于深度学习引擎的系统,其特征在于,包括:
存储器;
应用处理器;
数字信号处理器DSP集群;
可配置加速器框架CAF;以及
至少一个通信总线架构,将所述应用处理器、所述DSP集群和所述CAF通信地耦合至所述存储器,其中所述CAF包括:
可重构流开关;和
算术单元,具有多条数据路径,所述多条数据路径中的至少一条数据路径专用于根据二阶多项式的近似实现激活函数,所述二阶多项式具有输出=AX2+BX+C的形式。
12.根据权利要求11所述的系统,其特征在于,包括:
集成电路封装件,包含所述存储器、所述应用处理器、所述DSP集群、所述CAF和所述至少一个通信总线架构。
13.根据权利要求11所述的系统,其特征在于,包括:
电源管理器电路,所述电源管理器电路可电耦合至电池。
14.根据权利要求11所述的系统,其特征在于,所述系统是移动设备。
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 US11687762B2 (en) | 2018-02-27 | 2019-02-20 | Acceleration unit for a deep learning engine |
US16/280,991 | 2019-02-20 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN210006057U true CN210006057U (zh) | 2020-01-31 |
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 Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910143490.3A Active CN110197111B (zh) | 2018-02-27 | 2019-02-26 | 用于深度学习引擎的加速单元 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11687762B2 (zh) |
EP (1) | EP3531349B1 (zh) |
CN (2) | CN110197111B (zh) |
Families Citing this family (52)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108269224B (zh) | 2017-01-04 | 2022-04-01 | 意法半导体股份有限公司 | 可重新配置的互连 |
US20180189641A1 (en) | 2017-01-04 | 2018-07-05 | Stmicroelectronics S.R.L. | Hardware accelerator engine |
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 |
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 |
US11769036B2 (en) * | 2018-04-18 | 2023-09-26 | Qualcomm Incorporated | Optimizing performance of recurrent neural networks |
US10929760B1 (en) | 2018-05-22 | 2021-02-23 | Marvell Asia Pte, Ltd. | Architecture for table-based mathematical 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 |
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 |
US10929779B1 (en) | 2018-05-22 | 2021-02-23 | Marvell Asia Pte, Ltd. | Architecture to support synchronization between core and inference engine for 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 |
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 |
US11995533B1 (en) | 2018-12-05 | 2024-05-28 | Perceive Corporation | Executing replicated neural network layers on inference circuit |
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 |
CN110490308B (zh) * | 2019-09-16 | 2022-02-18 | 普联技术有限公司 | 加速库的设计方法、终端设备及存储介质 |
CN111126579B (zh) * | 2019-11-05 | 2023-06-27 | 复旦大学 | 一种适用于二值卷积神经网络计算的存内计算装置 |
US11941511B1 (en) * | 2019-11-11 | 2024-03-26 | 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 |
CN111242293B (zh) * | 2020-01-13 | 2023-07-18 | 腾讯科技(深圳)有限公司 | 一种处理部件、数据处理的方法以及电子设备 |
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 |
US11797830B2 (en) | 2020-03-25 | 2023-10-24 | Western Digital Technologies, Inc. | Flexible accelerator for sparse tensors in convolutional neural networks |
US11462003B2 (en) | 2020-03-25 | 2022-10-04 | Western Digital Technologies, Inc. | Flexible accelerator for sparse tensors in convolutional neural networks |
KR20210130470A (ko) * | 2020-04-22 | 2021-11-01 | 에스케이하이닉스 주식회사 | 활성화 함수 처리 방법, 활성화 함수 처리 회로, 및 그것을 포함하는 신경망 시스템 |
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 |
US11687336B2 (en) * | 2020-05-08 | 2023-06-27 | Black Sesame Technologies Inc. | Extensible multi-precision data pipeline for computing non-linear and arithmetic functions in artificial neural networks |
WO2021241460A1 (ja) * | 2020-05-29 | 2021-12-02 | ソニーグループ株式会社 | メモリ内蔵装置、処理方法、パラメータ設定方法及びイメージセンサ装置 |
US11531873B2 (en) | 2020-06-23 | 2022-12-20 | Stmicroelectronics S.R.L. | Convolution acceleration with embedded vector decompression |
WO2022047802A1 (en) * | 2020-09-07 | 2022-03-10 | Alibaba Group Holding Limited | Processing-in-memory device and data processing method thereof |
GB2599098B (en) * | 2020-09-22 | 2024-04-10 | Imagination Tech Ltd | Hardware implementation of windowed operations in three or more dimensions |
CN112418417B (zh) * | 2020-09-24 | 2024-02-27 | 北京计算机技术及应用研究所 | 基于simd技术的卷积神经网络加速装置及方法 |
US20220101086A1 (en) * | 2020-09-30 | 2022-03-31 | Stmicroelectronics S.R.L. | Reconfigurable hardware buffer in a neural networks accelerator framework |
CN112419142B (zh) * | 2020-11-25 | 2023-10-24 | 中科融合感知智能研究院(苏州工业园区)有限公司 | 一种提升dcnn计算阵列效率的系统及方法 |
CN117897698A (zh) * | 2021-09-03 | 2024-04-16 | 高通股份有限公司 | 可配置非线性激活函数电路 |
US20230083597A1 (en) * | 2021-09-03 | 2023-03-16 | Qualcomm Incorporated | Configurable nonlinear activation function circuits |
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 |
CN114491864B (zh) * | 2022-01-26 | 2022-12-13 | 哈尔滨工程大学 | 一种具有参数化、可重构特征的核动力管网模型预处理方法 |
CN114662678B (zh) * | 2022-05-17 | 2023-04-07 | 华中科技大学 | 一种基于变激活函数卷积神经网络的图像识别方法 |
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 |
Family Cites Families (48)
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 |
US9978014B2 (en) | 2013-12-18 | 2018-05-22 | Intel Corporation | Reconfigurable processing unit |
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 |
CN104484703B (zh) | 2014-12-30 | 2017-06-30 | 合肥工业大学 | 一种基于列梅兹逼近算法的sigmoid函数拟合硬件电路 |
US20160379109A1 (en) | 2015-06-29 | 2016-12-29 | Microsoft Technology Licensing, Llc | Convolutional neural networks on hardware accelerators |
US10366050B2 (en) | 2015-10-08 | 2019-07-30 | Via Alliance Semiconductor Co., Ltd. | Multi-operation neural network 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 |
CN207440765U (zh) | 2017-01-04 | 2018-06-01 | 意法半导体股份有限公司 | 片上系统和移动计算设备 |
EP3346427B1 (en) | 2017-01-04 | 2023-12-20 | STMicroelectronics S.r.l. | Configurable accelerator framework, system and method |
CN108268940B (zh) | 2017-01-04 | 2022-02-18 | 意法半导体股份有限公司 | 用于创建可重新配置的互连框架的工具 |
CN108269224B (zh) | 2017-01-04 | 2022-04-01 | 意法半导体股份有限公司 | 可重新配置的互连 |
US20180189641A1 (en) | 2017-01-04 | 2018-07-05 | Stmicroelectronics S.R.L. | Hardware accelerator engine |
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 |
US20200234137A1 (en) | 2017-08-18 | 2020-07-23 | Intel Corporation | Efficient neural networks with elaborate matrix structures in machine 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 |
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 |
US10977854B2 (en) | 2018-02-27 | 2021-04-13 | Stmicroelectronics International N.V. | Data volume sculptor for deep learning acceleration |
CN110383330A (zh) | 2018-05-30 | 2019-10-25 | 深圳市大疆创新科技有限公司 | 池化装置和池化方法 |
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 |
-
2019
- 2019-02-20 US US16/280,991 patent/US11687762B2/en active Active
- 2019-02-25 EP EP19159070.2A patent/EP3531349B1/en active Active
- 2019-02-26 CN CN201910143490.3A patent/CN110197111B/zh active Active
- 2019-02-26 CN CN201920242966.4U patent/CN210006057U/zh active Active
Also Published As
Publication number | Publication date |
---|---|
EP3531349A1 (en) | 2019-08-28 |
EP3531349B1 (en) | 2024-05-01 |
CN110197111A (zh) | 2019-09-03 |
CN110197111B (zh) | 2024-04-12 |
US11687762B2 (en) | 2023-06-27 |
US20190266479A1 (en) | 2019-08-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN210006057U (zh) | 用于深度学习引擎的设备和系统 | |
CN210428520U (zh) | 用于深度学习加速的集成电路 | |
US20230153621A1 (en) | Arithmetic unit for deep learning acceleration | |
CN108268941B (zh) | 深度卷积网络异构架构 | |
CN108268942B (zh) | 可配置的加速器框架 | |
CN108269224B (zh) | 可重新配置的互连 | |
CN108268940B (zh) | 用于创建可重新配置的互连框架的工具 | |
EP3346425B1 (en) | Hardware accelerator engine and method | |
EP3346427B1 (en) | Configurable accelerator framework, system and method | |
EP3531348B1 (en) | Arithmetic unit for deep learning acceleration |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
GR01 | Patent grant | ||
GR01 | Patent grant |