CN209560590U - 电子设备和集成电路 - Google Patents

电子设备和集成电路 Download PDF

Info

Publication number
CN209560590U
CN209560590U CN201920243831.XU CN201920243831U CN209560590U CN 209560590 U CN209560590 U CN 209560590U CN 201920243831 U CN201920243831 U CN 201920243831U CN 209560590 U CN209560590 U CN 209560590U
Authority
CN
China
Prior art keywords
data
circuit
input
arithmetical unit
stream
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
Application number
CN201920243831.XU
Other languages
English (en)
Inventor
S·P·辛格
G·德索利
T·勃伊施
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
Application granted granted Critical
Publication of CN209560590U publication Critical patent/CN209560590U/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/11Complex mathematical operations for solving equations, e.g. nonlinear equations, general mathematical optimization problems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30032Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • 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/08Learning methods
    • G06N3/084Backpropagation, e.g. using gradient descent

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Biophysics (AREA)
  • Biomedical Technology (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Evolutionary Computation (AREA)
  • Artificial Intelligence (AREA)
  • Computing Systems (AREA)
  • Computational Linguistics (AREA)
  • Molecular Biology (AREA)
  • General Health & Medical Sciences (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Computational Mathematics (AREA)
  • Neurology (AREA)
  • Operations Research (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Medical Informatics (AREA)
  • Image Analysis (AREA)
  • Logic Circuits (AREA)
  • Semiconductor Integrated Circuits (AREA)

Abstract

本申请涉及电子设备和集成电路。电子设备的实施例包括集成电路、形成在集成电路中的可重配置流开关以及耦合到可重配置流开关的算术单元。算术单元具有多个输入和至少一个输出,并且算术单元专用于多个并行运算的执行。多个并行运算中的每一个运算执行公式的一部分,所述公式为:输出=AX+BY+C。由此,实现用于机器学习的改进集成电路。

Description

电子设备和集成电路
技术领域
本公开一般涉及例如在卷积神经网络(CNN)中支持和推进深度机器学习的结构。更具体地但非排他地,本公开涉及一种用于深度学习加速引擎的算术单元。
背景技术
已知的计算机视觉、语音识别和信号处理应用受益于学习机器的使用。本公开中讨论的学习机器可以落入机器学习、人工智能、神经网络、概率推理引擎、加速器等等的技术标题之下。这样的机器被布置为快速执行数百、数千和数百万的并发运算。常规学习机器可以提供数百个TeraFlop(即,每秒一万亿(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页,Lake Tahoe,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”。沿着这些思路,在没有有意识的思考的情况下,人类查看者观看超出了图像旋转、数字的各种权重、数字的大小、移位、反转、重叠、分片化、同一图像中的多个数字以及其他这样的特性。然而,在编程上,在传统的计算系统中,这种分析非常困难。各种图像匹配技术是已知的,但即使对于非常小的图像大小,这种类型的分析也很快超过了可用的计算资源。然而,对照而言,即使CNN系统10先前从未“看见”确切的图像,CNN系统10也可以以可接受的准确度正确地标识每个处理过的图像中的一、零、一和零、或者非一非零。
图1D表示分析(例如,数学地组合)未知图像的部分与已知图像的对应部分的CNN运算。例如,左侧未知图像B5-C6-D7的3像素部分可以被识别为与右侧已知图像C7-D8-E9的对应3像素部分相匹配。在这些以及其他情况下,还可以识别各种其他对应的像素布置。表1中图示出了其他一些对应关系。
表1对应的已知与未知图像片段
认识到已知图像的片段或部分可以与未知图像的对应片段或部分匹配,进一步认识到通过统一部分匹配操作,可以以完全相同的方式处理整个图像,同时实现先前未计算出的结果。换句话说,可以选择特定的部分大小,然后可以逐部分地分析已知图像。当已知图像的任何给定部分内的图案与未知图像的相似大小的部分在数学上组合时,生成表示这些部分之间的相似性的信息。
图1E图示出了图1D的右侧已知图像的六个部分。每个部分也被称为“核”,其被布置作为3像素×3像素的阵列。在计算上,被照亮的像素被数学地表示为正“1”(即,+1);并且未被照亮的像素被数学地表示为负“1”(即,-1)。为了简化图1E中的图示,每个图示的核也用图1D的列和行参考来示出。
图1E中所示的六个核是代表性的并且为了便于理解CNN系统10的操作而被选择。应该清楚,可以用有限组的重叠或非重叠核来表示已知图像。例如,考虑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个像素开始。接下来的七个核每一个都顺序向右移位一列。第九个核返回到前三列并下降到第二行,类似于基于文本的文档的回车操作,该概念源自二十世纪的手动打字机。遵循这种模式,图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)。
本文关于图1E所描述的动作也可以被统指为在称为“过滤”的操作中的第一卷积过程。在过滤器的操作中,在未知图像中搜索已知图像中的感兴趣的特定部分。过滤器的目的是通过对可能性的对应预测来标识在未知图像中是否发现感兴趣的特征以及感兴趣的特征在何处。
图1F图示出了过滤处理中的十二个卷积动作。图1G示出了图1F的十二个卷积动作的结果。在每个动作中,未知图像的不同部分用选定的核进行处理。所选核可以被识别为图1B的代表性数字1(“1”)中的第十二个核。在图1B中将代表性的“1”形成为10像素×10像素图像中的一组被照亮像素。从最顶、最左角开始,第一个核覆盖了一个3像素×3像素的部分。第二个到第八个核顺序地向右移动一列。以回车的方式,第九个核开始于第二行、最左一列。核10-16针对每个核顺序地向右移动一列。核17-64可以类似地形成,使得在至少一个核中表示图1B中的数字“1”的每个特征。
在图1F(a)中,3像素×3像素的所选核在概念上被覆盖在未知图像的最左、最顶部分上。在这种情况下所选核是图1B的数字“1”的第十二个核。图1F(a)中的未知图像对于人类观察者来说可能看起来是移位的、形成不良的数字一(即“1”)。在卷积过程中,选定核中的每个像素的值——对于被照亮像素为“+1”并且对于未被照亮像素为“1”——乘以未知图像中的每个对应像素。在图1F(a)中,五个核像素被照亮,并且四个核像素未被照亮。未知图像中的每个像素都未被照亮。因此,当执行全部九次乘法时,五个乘积被计算为“-1”,并且四个乘积被计算为“+1”。这九个乘积被求和,并且结果值“-1”除以九。由于这个原因,图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)中所示,当执行9次乘法运算时,核中的四个未被照亮的像素与未知图像中的四个未被照亮的像素相匹配,核中的一个被照亮的像素与未知图像中的一个被照亮的像素相匹配,核中的另外四个未被照亮的像素与未知图像中未被照亮的四个像素不匹配。当对九个乘积求和时,在第五个核位置中,“+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(1)所示,并且在每个位置中,数学地计算核值。由于在图1F(i)至图1F(1)中,核的被照亮像素未覆盖在未知图像的被照亮像素上,所以针对这些位置中的每一个的计算出的核值为“-0.11”。在图1G(i)、图1G(j)、图1G(k)和图1G(1)中,核值在相应的四个核位置中被示出为“-0.11”。
图1H图示出了核值的图(map)的堆栈。当图1B中的数字“1”的第十二个核移动到未知图像的每个位置中时形成图1H中的最顶核图。第十二个核将被识别为在图1F(a)至图1F(1)以及图1G(a)至图1G(1)中的每一个中所使用的核。对于选定核在概念上被覆盖在未知图像上的每个位置,计算核值,并将核值存储在核图上的其相应位置中。
还在图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中,CNN系统10将10像素×10像素的输入图像接受到CNN中。CNN包括卷积层、池化层、整流线性单元(ReLU)层和表决层。将一个或多个核值与未知的10×10图像合作进行卷积,并将来自卷积层的输出传递给池化层。在卷积层所提供的每个核图上执行一个或多个最大池化运算。来自池化层的池化输出图被用作ReLU层的输入,所述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所描述的那样,“当前的GPU与高度优化的二维卷积实现相配合,足够强大以促进对有趣的大型CNN的训练,并且诸如ImageNet之类的最近的数据集包含足够的已标记示例来训练这种模型而不会出现严重的过度拟合”。
图2A至图2B可以在本文中被统称为图2。
图2A是已知的AlexNet DCNN架构的图示。如Krizhevsky所述,图1示出了“两个GPU之间的责任的划分。一个GPU运行图形顶部的层部分,而另一个运行底部的层部分。GPU仅在特定层进行通信。网络的输入是150,528维度,并且网络的其余层中的神经元数由253,440-186,624-64,896-64,896-43,264-4096-4096-1000给出”。
Krizhevsky的两个GPU实现了高度优化的二维(2D)卷积框架。最终的网络包含八个带权重的学习层。这八层由五个卷积层CL1-CL5和三个完全连接层FC组成,五个卷积层中的一些层之后跟着最大池化层,三个完全连接层FC带有最终的1000路柔性最大值(softmax),其产生超过1000个类别标签的分布。
在图2A中,卷积层CL2、CL4、CL5的核仅连接到在同一GPU上处理的前一层的核图。对照而言,卷积层CL3的核连接到卷积层CL2中的所有核图。完全连接层FC中的神经元连接到前一层中的所有神经元。
响应归一化层在卷积层CL1、CL2之后。最大池化层在响应归一化层以及卷积层CL5之后。最大池化层汇总相同核图中的相邻神经元群组的输出。整流线性单元(ReLU)非线性应用于每个卷积和完全连接层的输出。
在图1A的AlexNet架构中的第一卷积层CL1用大小为11×11×3的96个核以4个像素的步长过滤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架构的八层深度似乎很重要,因为特定的测试揭示了移除任何卷积层都会导致不可接受的性能下降。网络的大小受限于所实现的GPU上可用的存储器的量以及被认为是可容忍的训练时间的量。图1A的AlexNet DCNN架构需要5至6天的时间来在两个NVIDIA GEFORCE GTX 580 3GB GPU上进行训练。
图2B是诸如NVIDIA GEFORCE GTX 580GPU之类的已知GPU的框图。GPU是一个流式传输多处理器,其包含采用灵活标量架构的32个统一设备架构处理器。GPU被布置用于纹理处理、阴影图处理和其他以图形为中心的处理。GPU中的32个处理器中的每一个处理器都包括完全流水线的整数算术逻辑单元(ALU)和浮点单元(FPU)。FPU符合用于浮点算术的IEEE754-2008行业标准。特别地针对桌面应用配置这种情况下的GPU。
将GPU中的处理安排在被称为线程束(warp)的32个线程群组中。32个线程中的每一个线程同时执行相同的指令。GPU包括两个线程束调度器和两个指令调遣单元。在这种布置中,可以同时发布和执行两个独立的线程束。
背景技术部分中讨论的所有主题不一定是现有技术,并且不应该仅仅由于其在背景技术部分中的讨论而被认为是现有技术。沿着这些思路,除非被明确声明是现有技术,否则在背景技术部分讨论的或与这些主题相关联的现有技术中的问题的任何认识都不应被视为现有技术。相反,对背景部分中任何主题的讨论都应该被视为发明人对特定问题的处理方法的一部分,而这个问题本身也可以是具有创造性的。
实用新型内容
设备可被总结为包括:集成电路;可重配置流开关,形成在集成电路中;以及算术单元,具有耦合到可重配置流开关的多个输入和至少一个输出,算术单元专用于多个并行运算的执行,其中多个并行运算中的每一个并行运算执行公式的一部分,所述公式为:输出=AX+BY+C。所述集成电路可以被布置用于卷积神经网络运算。所述算术单元可以被布置为接收被传递通过所述可重配置流开关的流式传输数据,并且所述算术单元可以被布置为经由所述至少一个输出将结果数据的流传递通过所述可重配置流开关。所述多个输入中的至少一个输入被布置为将矢量数据传递到所述算术单元中。所述多个输入中的至少一个输入可以被布置为将标量数据传递到所述算术单元中。
所述算术单元可以包括:复用器电路装置,被布置作为多个复用器电路,所述多个复用器电路通信地耦合到所述多个输入中的至少一些输入;乘法器电路装置,被布置作为多个乘法器电路,每个乘法器电路被布置为接受来自所述复用器电路装置的被乘数数据、乘数数据或者被乘数数据和乘数数据,所述乘法器电路装置还被布置为执行所述公式的至少一些乘法运算;临时存储电路装置,被布置作为多个临时存储库,所述多个临时存储库中的每一个库被布置为从乘法器电路接收乘积数据;数据移位电路装置,被布置作为多个移位电路,所述多个移位电路通信地耦合所述临时存储电路装置;以及加法器电路装置,被布置作为至少一个加法器电路,以执行所述公式的至少一些求和运算。所述算术单元可以包括后求和电路装置,所述后求和电路装置被布置为从所述加法器电路装置接收总和数据,所述后求和电路装置通信地耦合到所述算术单元的所述至少一个输出。所述后求和电路装置可以包括可配置方向移位电路装置。
所述算术单元可以包括第一复用器电路,被耦合为接收“A”输入,所述“A”输入对应于所述公式中的“A”;第二复用器电路,被耦合为接收“B”输入,所述“B”输入对应于所述公式中的“B”;第三复用器电路,被耦合为接收“C”输入,所述“C”输入对应于所述公式中的“C”;第一乘法器电路,被布置为接收来自所述第一复用器电路的所述“A”输入,并且还被布置为接收“X”输入,所述第一乘法器电路还被布置为通过将所述“A”输入和所述“X”输入相乘来产生第一乘积;第二乘法器电路,被布置为接收来自所述第二复用器电路的所述“B”输入,并且还被布置为接收“Y”输入,所述第二乘法器电路还被布置为通过将所述“B”输入和所述“Y”输入相乘来产生第二乘积;以及加法器电路,被布置为对由第一乘法器电路和第二乘法器电路生成的信息以及被传递通过所述第三复用器电路的信息进行求和,所述加法器电路被布置为产生与所述公式中的所述输出对应的总和。所述第一复用器电路可以被布置为传递第一标量数据或第一矢量数据,并且所述第二复用器电路可以被布置为传递第二标量数据或第二矢量数据。
集成电路可以被总结为包括:板上存储器,其可以为随机存储存储器(RAM);应用处理器;数字信号处理器(DSP)集群;可配置加速器框架(CAF);以及至少一个通信总线架构,所述至少一个通信总线架构将所述应用处理器、所述DSP集群和所述CAF通信地耦合到所述板上存储器,其中所述CAF包括:可重配置流开关;以及至少一个算术单元,所述至少一个算术单元具有耦合到所述可重配置流开关的多个输入和耦合到所述可重配置流开关的至少一个输出,每个算术单元专用于多个并行运算的执行,其中所述多个并行运算中的每一个运算执行公式的一部分,所述公式为:输出=AX+BY+C。所述集成电路可以被形成为片上系统。所述集成电路可以包括功率管理器电路,所述功率管理器电路可电耦合到电池。由此,实现用于机器学习的改进集成电路
已经提供了本实用新型内容以便以简化的形式介绍某些概念,这些概念将在随后的具体实施方式中进一步详细描述。除非另有明确说明,否则实用新型内容不标识要求保护的主题的关键或必要特征,也不旨在限制要求保护的主题的范围。
附图说明
参考以下附图来描述非限制性和非穷尽的实施例,其中除非另有指定,否则相同的标记贯穿各个视图指代相同的部分。图中元素的大小和相对位置不一定按比例绘制。例如,选择、放大和定位各种元素的形状以提高图形易读性。为了便于在附图中识别,已经选择了所画的元素的特定形状。下面参照附图描述一个或多个实施例,其中:
图1A是卷积神经网络(CNN)系统的简化图示;
图1B图示出了确定第一像素图案图示出“1”并且第二像素图案图示出“0”的图1A的CNN系统;
图1C示出了不同形式的1和0的若干变型;
图1D表示分析(例如,数学地组合)未知图像的部分与已知图像的对应部分的CNN运算;
图1E图示出了图1D的右侧已知图像的六个部分;
图1F图示出了过滤处理中的12个卷积动作;
图1G示出了图1F的12个卷积动作的结果;
图1H图示出了核值的图的堆栈;
图1I示出了一个池化特征,其显著地减少由卷积过程产生的数据量;
图1J更详细地示出了图1A的CNN系统;
图2A是已知的AlexNet DCNN架构的图示;
图2B是已知的GPU的框图;
图3是示例性移动设备,在其中集成有以框图图示出的DCNN处理器实施例;
图4是描绘可配置加速器框架(CAF)的实施例,诸如图3的图像和深度卷积神经网络(DCNN)协处理器子系统;
图5是更详细的流开关实施例;
图6是卷积加速器(CA)实施例;
图7A是图示出在神经网络中用于深度学习加速的算术单元所支持的某些数据路径的第一高级框图;
图7B是图示出在神经网络中用于深度学习加速的算术单元所支持的某些数据路径的第二高级框图;
图7C是图示出被布置在神经网络中用于示例性分支合并运算的算术单元和卷积加速器的第三高级框图;
图7D是图示出可配置为利用在神经网络中用于深度学习加速的算术单元来执行单个专用公式(即,AX+BY+C)的结构的第一数据流图表;
图7E是图示出在神经网络中用于深度学习加速的算术单元的一乘一(1×1)支持运算的第二数据流图表;
图7F是图示出在卷积处理的最后阶段中在神经网络中用于深度学习加速的算术单元的运算的第三数据流图表。
具体实施方式
通过参考以下对本实用新型的优选实施例的详细描述,可以更容易地理解本实用新型。应该理解,本文中所使用的术语仅用于描述特定实施例的目的,而不旨在是限制性的。应进一步理解的是,除非本文具体定义,否则本文中所使用的术语将赋予其相关领域中已知的传统意义。
发明人已经认识到,如果附加的专用硬件结构与实现学习机器的架构集成或以其他方式使得对其可用,则可以改进学习机器。可以做出的一种这样的改进包括实现如本文所描述的算术单元的结构和动作。可以在各种各样的学习机器上实现本公开的发明性算术单元。然而,为了简洁起见,本公开内容包括在DESOLI等人的题为“DEEP CONVOLUTIONALNETWORK HETEROGENEOUSARCHITECTURE”的美国专利申请No.15/423,272中所公开的特定深度卷积神经网络中的发明性算术单元的实现,该申请通过参考被并入本申请中。这种特定的深度卷积网络异构架构学习机器公开了一种片上系统(SoC),其具有系统总线、耦合到系统总线的多个可寻址存储器阵列、耦合到系统总线的至少一个应用处理器核心以及耦合到系统总线的可配置加速器框架。可配置加速器框架是图像和深度卷积神经网络(DCNN)协处理系统。SoC还包括耦合到系统总线的多个数字信号处理器(DSP),其中多个DSP与可配置加速器框架协调功能性以执行DCNN。
图3至图6及其详细描述图示并呈现了示例性片上系统(SoC)110的元件,该SoC110可配置为高性能、高能效的硬件加速DCNN处理器。图7A至图7F及其详细描述图示并呈现了与图3至图6的硬件加速DCNN处理器集成的用于深度学习加速的算术单元700的结构和数据流图表。对机器学习应用特别有用的示例性SoC 110实现了:图像和DCNN协处理器子系统400(图4),其可以可互换地被称为可配置加速器框架;架构高效的流开关500(图5),其在先前前所未有的级别处创建数据局部性;一组卷积加速器600(图6),其执行输入特征数据与从神经网络的训练中导出的核数据的卷积;以及被特别布置用于深度学习加速的一组算术单元700(图7)。
图3是示例性移动设备100,其中集成有作为框图而被图示出的DCNN处理器实施例。移动DCNN处理器被布置为片上系统(SoC)110,但是也可以设想其他布置(例如,多个芯片、单个集成电路中的若干芯片裸片等)。所图示的SoC 110包括多个SoC控制器120、可配置加速器框架(CAF)400(例如,图像和DCNN协处理器子系统)、SoC全局存储器126、应用(例如主机)处理器128、和多个DSP 138,其中的每一个都直接或间接地可通信地耦合到主(例如系统)通信总线132和次通信(例如DSP)总线166。
可配置加速器框架(CAF)400可通信地耦合到系统总线166,系统总线166提供用于CAF 400的卷积加速器根据需要访问SoC全局存储器126并根据需要与DSP 138进行通信的机制。CAF 400在图4中被更详细地图示出。
SoC 110包括各种SoC控制器120,其中的一些SoC控制器控制SoC 110,并且其中的另一些SoC控制器控制一个或多个外围设备。SoC控制器120包括应用(例如,主机)处理器128(例如,ARM处理器或一些其他主机处理器)、时钟发生器168(例如时钟管理器)、重置控制器170以及功率管理器172,以提供对SoC 110和其他组件的各种时序、功耗以及其他方面的附加支持、控制和管理。控制外围设备的其他SoC控制器120包括低速外围I/O接口130和外部存储器控制器174,以与SoC 110被嵌入其中的示例性设备100的外部芯片、组件或存储器进行通信或以其他方式访问所述示例性设备100的外部芯片、组件或存储器。
应用处理器128可以充当中间模块或者充当到SoC 110所集成的示例性电子设备100的其他程序或组件的接口。在一些实施例中,应用处理器128可以被称为应用处理器核心。在各种实施例中,应用处理器128在引导时加载SoC配置文件,并根据配置文件配置DSP138和CAF 400。当SoC 110处理一批或多批输入数据(例如,图像)时,应用处理器128可以基于配置文件来协调CAF 400或DSP 138的重新配置,配置文件本身可以基于DCNN层和拓扑。
SoC 110还包括促进SoC控制器120与DSP 138之间以及SoC控制器120与CAF 400之间的通信的主通信总线132(例如,AXI高级可扩展接口)。例如,DSP 138或CAF 400可以经由主通信总线132来与应用处理器128、一个或多个外围控制器/外围通信接口(低速外围I/O)130、经由外部存储器控制器174(未示出)的外部存储器或其他组件进行通信。SoC控制器120还可以包括其他支持和协作设备,诸如时钟管理器(例如,时钟发生器)168、复位控制器170、功率管理器172,用以向SoC 110以及其他组件提供附加的定时和功率管理。
在一些实施例中,并且如图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、155来访问对应的指令高速缓存146、156和本地DSP存储器148、158。在一个非限制性实施例中,每个指令高速缓存146、156是4路16kB指令高速缓存,并且每个本地DSP存储器148、158是用于其对应的DSP的64kB本地RAM存储装置。每个DSP集群122、140还包括用于访问SoC全局存储器160、159的共享DSP集群存储器160、159和集群DMA 162、164。
每个DSP集群122、140经由DSP集群纵横开关145、155而可通信地耦合到全局DSP集群纵横开关150,以使每个DSP集群122、140中的每个DSP 142、152能够彼此通信以及与SoC110上的其他组件通信。全局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计算的一小部分但更适合未来的算法演进的分类、或其他运算例如最小、最大、开方、乘法累加(Mac)、蝶式运算、求平均、2-4SIMD ALU。在一些情况下,现在使用用于本文参考图7所描述的深度学习加速结构的算术单元来执行先前已经使用DSP 138中的一个或多个DSP来执行的运算。因此,本文所描述的处理器及其相关联的计算设备的改进运算可以通过本文所描述的算术单元结构来实现。
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)、传感器处理流水线、裁剪器、颜色转换器、特征检测器、视频编码器、八通道数字麦克风接口、流式传输DMA和多个卷积加速器。
结合图4描述关于CAF 400的附加细节。简而言之,CAF 400例如从相机接口或其他传感器接收传入数据(例如,图4中的图像数据,但是在不同实施例中为其他类型的流式传输数据),并将传入数据分发给CAF 400的各种组件(例如结合图6更详细地描述的卷积加速器、结合图7更详细地描述的用于深度学习加速的算术单元700等)和/或多个DSP 138中的一个或多个DSP,以采用DCNN并识别传入图像中的对象。
CAF 400利用单向链路来经由可配置的完全连接的开关将数据流传送到不同类型的源或宿(sink)组件。例如,结合图5更详细地描述的可配置的完全连接的开关可以经由直接存储器访问(DMA)将数据传送到SoC全局存储器126、I/O接口(例如相机)和各种类型的加速器(例如卷积加速器(CA)600)、用于深度学习加速的算术单元700等)。在一些情况下,基于从特定SoC配置工具接收到的信息来在启动时配置CAF 400,并且基于从一个或多个DSP138、应用处理器128等接收的已定义的DCNN层和拓扑或信息来在运行时期间重新配置CAF400。
CAF 400允许在运行时定义可选数量的并发虚拟处理链。CAF 400还包括用以控制去往框架的各个组件的数据流的全特征化背压机制。CAF 400被布置用于流式多播操作,这使得能够实现数据流在多个块实例处的重用。链接列表控制整个卷积层的完全自主处理。分组或链接在一起的多个加速器并行处理针对特征图数据和多个核的不同大小。将卷积加速器(CA)600进行分组以实现更大的计算实体使得能够选择可用数据带宽、预算功率和可用处理资源的可接受的最佳平衡。每个CA 600包括用以与单个存储器访问并行地获取达到预定数目(例如12)的特征图数据字的行缓冲器。进一步支持CA 600结构的是用于深度学习加速的算术单元700,其执行符合等式1的公式的数学函数,其数据局部性至今未知。
AX+BY+C→输出 (1)
不是将出自CAF 400的针对过渡临时数学函数的数据传递到单独的设备,诸如DSP,而是将数据保留在CAF 400架构中,从而实现显著的速度和数据吞吐量增益。
在每个CA(600)中,基于寄存器的核缓冲器提供多个读取端口(例如36个读取端口),而多个定点乘加(MAC)单元(例如36个16位MAC单元)在每个时钟周期执行多个MAC运算(例如,每个时钟周期多达36次运算)。加法器树累加针对每个核列的MAC结果。MAC运算的基于列的重叠计算允许针对多个MAC的特征图数据的可接受的最佳重用,由此减少与冗余存储器访问相关联的功耗。
将核集合分区成按顺序处理的批量,并且可以将中间结果存储在SoC全局存储器126中。可以由单个CA600实例处理各种核大小(例如高达12×12)、各种批量大小(例如高达16)以及并行核(例如,高达4个),但是任何大小的核都可以与累加器输入相兼容。
可配置的批量大小和可变数量的并行核针对可用输入和输出带宽在不同单元和可用计算逻辑资源之间的共享实现了可接受的最佳折衷。
针对每个DCNN层确定CAF400中的CA600的不同的可接受的最佳配置。可以使用以DCNN描述格式开始的整体工具诸如Caffe′或TensorFlow来确定或调整这些配置。当核被非线性量化时,CA600支持动态核解压缩和舍入,每个权重为8位或更少位,针对8位的最高错误率增加到0.3%。
图4是描绘诸如图3的图像和深度卷积神经网络(DCNN)协处理器子系统400之类的可配置加速器框架(CAF)400的实施例。CAF400可以被配置用于图像处理、音频处理、预测分析(例如技能游戏、市场数据、人群行为预测、天气分析和预测、遗传映射、疾病诊断以及其他科学、商业、消费者及这样的处理)或某种其他类型的处理;特别是包括卷积运算的处理。
CAF 400还布置有许多可配置的模块。一些模块是可选的,并且一些模块是需要的。CAF 400的实施例中通常包括许多可选模块。例如,CAF 400的一个所需模块是流开关500。流开关500提供设计时参数化的、运行时可重配置的加速器互连框架以支持基于数据流的处理链。例如,另一个所需模块是一组CAF控制寄存器402。也可能其他模块是所需要的。CAF 400的可选模块包括系统总线接口模块404、选定数量的DMA引擎406(例如,DMA控制器)、选定数量的外部设备接口408、选定数量的处理模块410、选定数量的卷积加速器(CA)600以及选定数量的用于深度学习加速的算术单元700。
流开关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的访问,其用于控制、操作或以其他方式指引框架的特定特征。在一些实施例中,每个DMA引擎406、外部设备接口408、处理模块410、卷积加速器600和用于深度学习加速的算术单元700具有到配置网络的接口,所述配置网络具有已定义的一组配置寄存器(例如,以CAF控制寄存器402形成)。
CAF 400包括多个DMA引擎406。在图4中,图示出了十六个DMA引擎406a至406p,但是根据半导体从业者在设计时做出的一个或多个选择,在SoC 110的其他实施例中可以包括一些其他数量的DMA引擎。DMA引擎406被布置为针对输入数据流、输出数据流或输入和输出数据流提供双向信道。在这些情况下,大量的数据被传递到CAF 400中、从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,但是也可以由半导体从业者在设计时将另一选定数量(例如,2、4、8、16个)的处理模块410集成在CAF 400中。第一处理模块410是被布置为执行某些视频(即MPEG)处理和某些图像(即,JPEG)处理的MPEG/JPEG处理模块410a。第二处理模块410是被布置为执行特定的视频编码/解码操作的H264处理模块410b。第三处理模块410是被布置为对某些多媒体数据执行基于颜色的操作的颜色转换器处理模块410n。
在许多情况下,DMA控制器406、外部设备接口408、处理模块410、卷积加速器600、用于深度学习加速的算术单元700以及集成在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的一部分。
一个或多个卷积加速器模板模块可以被包括在诸如关于表2所描述的库的IP模块库中。在这些情况下,存储在IP模块库中的数据包括相关的构建块,其减少了构建新的加速器所需的工作,该新的加速器实现加速器的核心功能性。一组预定义的配置寄存器可以被扩展。形成或以其他方式位于流链路端口处的可配置FIFO可以被用来吸收数据速率波动并提供缓解处理链中某些流控制约束所需的缓冲余量。
典型地,每个CA 600都消耗数据、生成数据或同时消耗数据并生成数据。所消耗的数据通过可重配置流开关500的第一流链路而进行传递,并且流式传输的数据通过流开关500的第二流链路而进行传递。在至少一些实施例中,CA不能直接访问通过主通信总线132(图3)、次通信总线166(图3)或其他总线地址可访问的存储器地址空间。然而,如果需要对在系统总线上传递的数据进行随机存储器访问,则CA 600也可以使用可选的总线端口接口,其可以是沿着图4的系统总线接口模块404的思路,被用于若干事务——包括允许DMA引擎访问系统总线上的存储器位置。如上面所讨论的,一些CA 600实现是库的一部分,其可以在其他CAF 400实施例中被用来在全局系统定义文件中简单地实例化CA 600。
用于深度学习加速模板模块的一个或多个算术单元也可以被包括在IP模块库中,诸如关于表2描述的库。这里,预定义的一组配置寄存器可以被进一步扩展,以提供用于配置所包含的算术单元的参数存储。这些参数与任何期望数量的复用器电路、乘法器电路、加法器电路、临时存储电路、数据移位电路和其他电路的配置相关联。
用于深度学习加速的每个算术单元700专用于等式1中的公式的执行。在CAF 400框架内可用的标量数据、矢量数据、流式传输数据、常数数据、交织数据和任何其他所需数据可以作为运算数而被传递到用于深度学习加速的算术单元中,并且所生成的结果数据将从相应的算术单元被传递出。传递给用于深度学习加速的算术单元700的数据可以源自于流开关500、CAF 400框架内部或外部的存储器、传感器或特定接口、或来自某个其他源。据此,这些类型的数据源中的每一个数据源在某些情况下可消耗算术单元中生成的数据。如本文所讨论的,用于深度学习加速的一些算术单元700实现是库的一部分,其可以在其他CAF 400实施例中被使用,以在全局系统定义文件中简单地实例化算术单元。
机器学习系统的系统级程序员期望灵活性,以为机器学习系统的特定实现选择期望的编程模型。为了支持这种高级别的灵活性,CAF400被布置有可重配置流开关500。如在本公开中所描述的,流开关500用作数据传送结构以改进逻辑块(IP)重用、数据重用以及其他组件和逻辑的重用,这继而又允许片上和片外存储器流量的减少,并且提供更大的灵活性来在不同的应用使用情况下利用相同的逻辑块。集成在流开关500中的是多个单向链路,其被布置为经由可配置的完全连接的开关来将数据流传送去往、来自、以及去往和来自不同种类的诸如直接存储器访问(DMA)控制器、I/O接口(例如相机)以及各种类型的加速器之类的数据源、数据宿、以及数据源和数据宿。
所传送的数据可以采用任何期望的格式,诸如光栅扫描图像帧流、宏块导向图像流、音频流、原生数据块、输入或输出算术单元值的流或任何其他格式。流开关500还可以将消息、命令或其他类似的控制信息沿着由每个单元转发的处理链传送到处理控制信息的一个或多个或者多个目标单元。控制信息可以被用于发信号通知事件、重新配置处理链本身、或指引其它操作。
图5是更详细的流开关实施例500。流开关500包括用户可选择的、设计时可配置的第一数量的流链路输入端口504和用户可选择的、设计时可配置的第二数量的流链路输出端口516。在一些情况下,存在相同数量的输入端口与输出端口。在其他情况下,输入端口比输出端口多,并且在又一些其他情况下,输出端口多于输入端口。在设计时定义输入端口的数量和输出端口的数量。
在图5的流开关500实施例中,详细示出了一个流链路502实施例。还图示出了为了简化而在图示中没有细节的其他流链路502a、502b。通常沿着流链路502的思路来布置流链路502a、502b,并且为了本公开清楚起见,可以将所图示出的任何流链路标识为流链路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单向通信路径管道上传递输出数据。
根据流开关配置逻辑510来指引选择机制508。流开关配置逻辑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内部缓冲器610被物理地或虚拟地布置为与第一CA输入数据接口602一致。以这种方式,流式传输到CA 600中的批量数据可以被自动地存储在第一CA内部缓冲器610中,直到数据被传递到CA 600中的特定数学单元,例如加法器树622。第一CA内部缓冲器610可以被固定为在设计时所确定的大小。备选地,第一CA内部缓冲器610可以利用在引导时或运行时编程地确定的可变大小来定义。第一CA内部缓冲器610可以是64字节、128字节、256字节或一些其他大小。
沿着第一CA内部缓冲器610的思路形成第二CA内部缓冲器612和第三CA内部缓冲器614。也就是说,第二CA内部缓冲器612和第三CA内部缓冲器614可以各自具有它们自己的在设计时确定的固定大小。备选地,第二CA内部缓冲器612和第三CA内部缓冲器614可以具有在引导时或运行时编程地确定的可变大小。第二CA内部缓冲器612和第三CA内部缓冲器614可以是64字节、128字节、256字节或一些其他大小。第二CA内部缓冲器612被物理地或虚拟地布置为与第二CA输入数据接口604一致,以自动存储流式传输的核数据,直到核数据被传递到专用于存储核缓冲器数据的专用的第四CA内部缓冲器616。第三CA内部缓冲器614被物理或虚拟地布置为与加法器树622一致以自动存储总和数据,直到它可以通过CA输出接口604被传递。
第四CA内部缓冲器616是专用缓冲器,其被布置为期望地存储核数据并且将所存储的核数据应用于多个CA乘法累加(MAC)单元620。
第五CA内部缓冲器618是特征行缓冲器,其被布置为接收通过第三CA输入接口606传递的流式传输的特征数据。一旦被存储在特征行缓冲器中,特征数据就被应用于多个CAMAC单元620。根据本文描述的卷积运算在数学上组合应用于CA MAC单元620的特征和核缓冲器数据,并且将来自CA MAC单元620的结果输出乘积传递给CA加法器树622。CA加法器树622在数学上组合(例如,求和)传入的MAC单元数据和通过第一CA输入数据端口传递的批量数据。
在某些情况下,CA 600还包括可选的CA总线端口接口624。CA总线端口接口624在它被包括时可以被用来将数据从SoC全局存储器126或某些其他位置传递到CA 600或从CA600传递出。在一些情况下,应用处理器128、DSP集群122中的DSP或一些其他处理器指引数据、命令或其他信息至CA 600的传递或从CA 600的传递。在这些情况下,数据可以通过CA总线端口接口624而被传递,CA总线端口接口624本身可以被耦合到主通信总线132、次通信总线166或一些其他通信结构。
在一些情况下,CA 600还可以包括CA配置逻辑626。CA配置逻辑626可以完全与CA600一起驻留、部分与CA 600一起驻留、或者远离CA 600。配置逻辑600可以例如完全或部分地体现在CAF控制寄存器402、SoC控制器120或SoC 110的一些其他结构中。
图7A至图7F可以在本文中被统称为图7。
为了特定目的以某种方式或其他方式进行配置的用于深度学习加速的算术单元700的实施例可以在本文中可互换地被称为用于深度学习加速的算术单元700A至700F中的任何一个。
图7A是图示出在神经网络中用于深度学习加速的算术单元700所支持的某些数据路径的第一高级框图700A。已经认识到,在神经网络中、特别是在被布置用于深度学习的卷积神经网络中的许多支持操作可以利用一个或多个仿射变换来完成。在这样的变换中,被组织为帧的多个相关且同等(co-equal)的数据点通过标量、矢量、多个标量或矢量等被共线性地变换和转译。例如,可以在图像处理中应用这些变换以完成旋转、缩放、剪切等。并且沿着这些思路,可以将这些仿射变换应用来支持深度学习子过程,诸如偏差、批量归一化、缩放、均值减法、基于元素的相加以及诸如最大平均池化之类的矢量类型运算的其他线性组合等等。
在图7A中,在硬件电路中构造用于深度学习加速的算术单元700以执行等式1。
AX+BY+C→输出 (1)
用于深度学习加速的算术单元700可以被配置和指引以执行某些数据路径计算操作,所述操作支持存储器带宽密集型的现有的卷积神经网络算法。例如,可以将这些数据路径计算合并并且映射到用于深度学习加速的一个或多个算术单元700上,而不是例如利用迄今为止的常规的数字信号处理器(DSP)来执行这些操作。用于深度学习加速的算术单元700根据定义卷积神经网络的操作的算法来执行仿射变换。
用于深度学习加速的算术单元700的硬件电路装置包括专用电路,用以检索数据、接受数据、路由数据、乘上运算数以产生乘积、将值相加以产生和、将值向右或向左移位任意位数、组合数据、将数据序列化、交织数据以及执行其他类似的运算。用于深度学习加速的算术单元700可以包括寄存器、易失性存储器阵列、非易失性存储器阵列、缓冲器以及其他类型的数据存储库。每个用于深度学习加速的算术单元700可以具有用于执行运算的一个或多个电路。例如,等式1调用两个乘法运算。在一些实施例中,用于深度学习加速的算术单元700可以包括单个乘法电路,其被使用并且被重用以执行两个乘法运算。备选地,在其他实施例中,用于深度学习加速的算术单元700可以包括两个或更多乘法单元。沿着这些思路,用于深度学习加速的算术单元700的一些实施例可以包括单个加法器电路,并且其他实施例包括两个或更多加法器电路。
在图7A中,用于深度学习加速的算术单元700布置有第一流输入X 702和第二流输入Y 704。第一流输入702和第二流输入704可以通过流开关500而选择性地耦合到任何类型的流式传输数据源,诸如卷积加速器600、外部设备接口408(例如图像传感器接口)、直接存储器访问(DMA)引擎406或一些其他流式传输数据源。如图7A中所示,第一流输入702和第二流输入704被布置为提供标量数据、矢量数据或者标量数据和矢量数据,标量数据和矢量数据分别在等式1中作为“X”和“Y”运算数处理。
在一些情况下,用于深度学习加速的算术单元700被布置为从矢量常数存储器706接收常数矢量数据。可以在等式1的每次迭代中提供一次常数矢量数据,并且在其他情况下例如对于等式1的每次迭代可以提供多次矢量常数数据。也就是说,常数矢量数据可以被静态地提供或者作为对应于流式传输数据X、流式传输数据Y、流式传输数据X和Y、交织数据X和Y或者一些其它方式的数据流提供。在一些情况下,在一个或多个输入上提供常数矢量数据作为用于等式1的多次迭代的单个静态数据,并且在一个或多个输入上提供其他常数矢量数据作为跨等式1的多次迭代的流式传输的动态常数数据。
在图7A的实施例中,第一常数输入A 706A传递作为等式1中的“A”运算数处理的常数矢量数据,第二常数输入B 706B传递作为等式1中的“B”运算数处理的常数矢量数据,并且第三常数输入C 706C传递作为等式1中的“C”运算数处理的常数矢量数据。
在一些情况下,矢量常数存储器706可以被耦合到地址生成电路708。地址生成电路708被布置为在矢量常数存储器706储存库中提供定时和排序的地址,使得可以将常量矢量数据定时地提供给分别在矢量常数输入A、B、C 706A、706B、706C处的用于进行深度学习加速的算术单元700。地址生成单元708可以包括自动排序电路以递增地址、递减地址、偏移地址、应用恒定或可变步长、以某种其它模式交织或生成地址、或者执行其他存储器地址配置运算。
在图7A的第一高级框图700A中提供一组配置参数电路710。配置参数电路710可以包括存储器、寄存器、缓冲器以及指引用于深度学习加速的算术单元700的运算的其他存储库电路装置。在一些情况下,配置参数电路710被布置作为CAF控制寄存器402(图4)的一部分。
示例性参数储存库(例如,配置参数电路710的子电路)包括用于定点算术移位常数710A的储存库、用于运算模式710B的储存库以及用于标量常数A、B、C的储存库710C。
定点算术移位常数710A可以包括任何数量的右移值、左移值或一些其他移位布置。可以在乘法值、除法值、对准值、比例值、总和、乘积或出于其他原因的移位数据上执行移位操作。
操作模式710B可以包括指引地址生成单元708的操作的电路。备选地或附加地,操作模式710B存储库存储指引用于深度学习加速的算术单元700的操作的数据。操作模式可以包括一个或多个参数。例如,一个或多个参数可以指引复用器电路的选择线路,向算术单元中的各种电路提供常数值,指引移位电路的操作(例如,方向、位置数量等),向组合逻辑提供指引(例如,输入值、反转电路等),以不同的方式支持这些模块,并且支持用于深度学习加速的算术单元700内的其他模块。
操作模式710B配置参数电路可以被布置为以灵活地支持机器学习算法的卷积运算的方式来与地址生成单元708协作地工作。例如,操作模式710B参数可以被布置为支持任何期望形状的特征输入流。由于这种支持,在至少一些常规情况下,特征体积不限于特定的宽度x高度x深度(WxHxD)形状。相反,操作模式710B配置参数电路可以指引地址生成单元708来支持几乎任何可缩放和灵活的三维(3D)区块化方案和特征体积“行进”方案。通过指定特征体积的输入几何体(即,WxHxD)、以及通过指定3D区块的宽度x高度x深度(wxhxd)尺寸、以及通过指定行进顺序,可以使3D区块以任意顺序行进通过特征体积。例如,在一种情况下,可以跨深度、随后是宽度、随后是高度来使3D区块行进通过特征体积。在另一种情况下,可以跨宽度、随后是深度、随后是高度来使3D区块通过特征体积。在第三种情况下,可以跨深度、随后是高度、随后是宽度来使3D区块行进通过特征体积。如在3D区块行进的示例中明显的,可以通过在操作模式710B配置参数电路中设置适当的参数来以许多不同的方式来导航特征体积。因此,用于深度学习加速的算术单元700可以与几乎任何特定格式的传入数据一起操作。地址生成单元708被布置为适当地寻址“A”、“B”和“C”值以应用于如由输入3D区块行进顺序、3D区块几何和特征体积几何所指定的传入数据。
协作配置参数电路710和地址生成单元708的一个优点在于,馈送算术单元的卷积加速器600可以在平衡性能、功率、存储器带宽和数据重用等方面是最可接受的最佳数据的任何期望粒度进行操作;并且在这些情况下,卷积加速器600可以通过流开关500将数据直接馈送到算术单元,而不需要以任何其他方式重新布置或重新组装数据。机器学习算法使用例如与地址生成单元708协作的配置参数电路710的寄存器来指定期望的3D区块和特征体积输入几何。
在一些情况下,地址生成单元708可以用多个自动重新加载计数器(例如,四个自动重新加载计数器)来实现。计数器可以区分优先次序、级联、交织或者计数器可以以其他方式进行协作。例如,每个计数器可以被用来对3D区块通过特征体积的定向行进进行“计数”。例如,可以使用来自计数器的值,在地址生成单元708中自动生成地址。通过将计数器配置为协作地以期望布置提供输出值,可以将3D区块控制为跨特征体积的高度、宽度和深度以机器学习算法指定的顺序“行进”。
标量常数A、B、C 710C可以包括针对用于深度学习加速的算术单元700内的应用的比特、字节、半字节、字或不同地形成的标量值。标量常数A、B、C 710C可以包括存储在存储器、缓冲器、寄存器或其他储存库中的值。形成标量常数A、B、C 710C的电路装置可以包括定时电路装置、锁存器、接口结构等。标量常数710C可以以与流式传输数据X、Y以及与矢量常数数据的任意期望关系被提供到深度学习加速器700中,该流式传输数据X、Y分别设置在第一流输入702和第二流输入702处,该矢量常数数据设置在矢量常数输入A、B、C706A、706B、706C处。
用于深度学习加速的算术单元700的输出712被布置为传递总和、乘积或在用于深度学习加速的算术单元700中生成的其他数据。输出712可以传递离散值。备选地,在这些或其他实施例中,输出712可以传递值的流。
现在已经描述了在一些实施例中用于深度学习加速的算术单元700以及围绕用于深度学习加速的算术单元700布置的支持电路模块,本公开现在描述针对该单元的非限制性用例集合。在机器学习系统中,用于深度学习加速的算术单元700有许多用途,但是为了简洁起见在本文中描述的情况是针对卷积网络的深度学习。在这些情况下,用于深度学习加速的算术单元700不用于卷积,而是用于支持具有增加的数据局部性的卷积特征。以这种方式,数据保持流式传输而不是移入和移出存储器,这是在已知卷积系统上的改进。也就是说,当在卷积加速器600中执行卷积处理时,数据通过流开关500流自或流出一个或多个CA600结构以及流入或流出用于深度学习加速的一个或多个算术单元700。
例如,在使用卷积神经网络的深度学习中使用的一些运算包括偏差运算、批量归一化运算、缩放运算、均值减法运算、基于元素的加法运算以及例如在最大平均池化运算中使用的矢量类型运算的其他线性组合。等式2中描绘了示例性偏差运算;等式3中描绘了示例性批量归一化运算;等式4中描绘了示例性缩放运算;等式5中描绘了示例性均值减法运算;等式6中描绘了示例性基于元素的加法运算、以及等式7中描绘了示例性最大平均池化运算。
X+偏置→输出 (2)
(X*缩放因子)+缩放偏置→输出 (4)
(X-均值)*均值缩放因子→输出 (5)
X1+X2→输出 (6)
(A*X)+(B*Y)→输出 (7)
等式2至等式7中表示的运算的性质是用“X”和“Y”来描绘的矢量运算,而诸如“A”、“B”、“偏差”、“均值”、“方差”、“缩放因子”等可以是矢量、标量或矢量和标量二者。更重要的是,考虑到由用于深度学习加速的算术单元700支持的以及深度学习中所涉及的变换的性质,发明人已经认识到可以通过将多个运算组合成在一个或两个输入流上运算的单个仿射变换来实现实质性的益处。以这种方式,数据不在第一运算中被处理、被存储、以及被检索以用于第二次运算。相反,对通过流开关500传递的第一数据执行第一运算,并且将从该运算中输出的第二数据通过流开关500直接传递到第二运算。
例如,等式8描绘了第一线性运算,其中线性运算中的运算数由等式9和等式10的子运算形成。
(A*X)+B→输出 (8)
((偏置-均值)*A)+缩放偏置→B (10)
在这种情况下,仿射变换实现了显著的时间节省,因为数据在多个运算中被处理,而不需要临时存储过渡值。相反,通过流开关500将“过渡值”传递到并发操作的用于深度学习加速的算术单元700。以这种方式,用于深度学习加速的算术单元700支持若干操作模式。也就是说,用于深度学习加速的算术单元700被构造用于实质的灵活性,其提供任何类型的期望常数,诸如在各种用例中将A、B和C作为矢量、标量或矢量和标量进行传递。在一个偏差情况下,例如,A和C是标量常数,其中A等于1(即A=1)并且C等于零(即C=0),并且B是矢量。例如,可以在输入特征三维(3D)体积的“长度”等于“深度”的情况下实现该用例。在执行批量归一化的另一机器学习卷积处理情况下,C等于零(即,C=0),并且A和B是矢量。在具有缩放的均值减法实施例中,A和B是标量常数,并且C等于零(即,C=0)。而在实现基于元素的加法运算的另一个机器学习运算中,标量常数A和B等于1(即A=1;B=1),所以输出简单地作为X和Y的矢量相加来实现(即,X+Y)。
发明人已经执行了各种测试情况,其中例如,已经将矢量数据预加载到矢量常数存储器706中,并且将标量数据预加载到标量常数A、B、C 710C储存库中。在其他测试情况下,矢量数据经由流开关500经由矢量常数输入A 706A、矢量常数输入B 706B和矢量常数输入C 706C被流式传输。在这些测试情况中的各种情况下,在执行归一化、缩放和偏差运算的情况下,发明人已经实现了通过避免临时数据的中间存储器存储而实现的在参数存储存储器中的两倍半(即2.5x)的节省、更快的神经网络卷积运算的执行、以及降低的功耗。例如,不是存储五个矢量,而是仅存储两个矢量,并且通过用于深度学习加速的算术单元700流式传输其他参数。
图7B是图示出在神经网络中用于深度学习加速的算术单元700所支持的某些数据路径的第二高级框图700B。实现在嵌入在移动设备100中的SoC 110(图3)上操作的深度学习程序的算法将可配置加速器框架400配置为使用用于深度学习加速的一个或多个算术单元700协作地执行某些仿射变换,以支持由一个或多个卷积加速器600执行的并发卷积运算。通过经由流开关500将数据传递到卷积加速器600和从卷积加速器600传递以及通过使用也通过流开关500传递的数据来在用于深度学习加速的算术单元700中进行并发处理,从而提供数据局部性。图7B中的深度学习程序的一个部分表示用以实现最大平均池化运算的数据路径。
在一个实施例中,相机传感器提供通过第一图像传感器接口和图像信号处理器(ISP)外部设备接口408b所传递的图像数据流150并且经由流开关500将其提供给卷积加速器600A。卷积加速器600A使已知数据的核行进通过图像数据流750中的图像。该数据可以经由卷积加速器600A、另一个卷积加速器或CAF 400的一些其他结构在任何数量的附加卷积处理中被进一步处理。为了简化现在正在讨论的算法中的相关部分的缘故,描述的是经过滤的图像数据752的流从卷积加速器600通过流开关500传回到最大池化加速器600B和平均池化加速器600C。
最大池化加速器600B产生最大池化图像数据流754,其被传递到用于深度学习加速的算术单元700中,并且平均池化加速器600C产生平均池化图像数据流756,其也被传递到用于深度学习加速的算术单元700。最大池化图像数据流754和平均池化图像数据流756二者都是矢量数据流。在一些实施例中,最大池化图像数据流754对应于在流输入X 702(图7A)上传递的信息。在这些或其他实施例中,平均池化图像数据流756对应于在流输入Y 704(图7A)上传递的信息。
在一些情况下,流输入X和流输入Y上的输入数据的流被一致地传递。也就是,对于通过流输入X 702传递的最大池化图像数据754的每个部分(例如数据),通过输入Y 704传递平均池化图像数据756的对应部分。在其它情况下,可以期望通过流输入X 702和流输入Y704非一致地传递数据。在至少一种情况下,通过流输入X 702传递“M”个数据采样,并且通过流输入Y 704传递“N”个数据采样。以该交织方式,可以利用来自平均池化图像数据756的选定数据来期望地处理来自最大池化图像数据754的选定数据。设想许多其他非一致数据流布置;这种非一致性可以通过例如存储在CAF控制寄存器402(图4)、配置参数电路710或一些其他源中的参数来实现。
配置参数电路710将常数数据758传递到用于深度学习加速的算术单元700中,该配置参数电路710可以包括用于矢量常数A、B、C 706A、706B、706C或用于标量常数A、B、C710A、710B、710C的储存库。为了辅助当前的讨论,被传递到用于深度学习加速的算术单元700中的示例性数据被表示为等式11-14。具体而言,在等式11中描绘了最大池化图像数据754的示例性流;在等式12中描绘了平均池化图像数据756的示例性流;并且在等式13和14中描绘了常数数据758。
最大池化图像数据={mp1,mp2,...mpn} (11)
平均池化图像数据={av1,av2,...avn} (12)
(常数数据A)={a1,a2,...an} (13)
(常数数据B)={b1,b2,...bn} (14)
为了进一步辅助当前的讨论,由用于深度学习加速的算术单元700生成并从其中传递的示例性结果数据(即,最大平均池化数据流760)被表示为等式15。在一些实施例中,最大平均池化数据流760对应于在输出712上流式传输的信息(图7A)。
最大平均池化图像数据=
{(a1*mp1+b1*av1),(a2*mp2+b2*av2)...,(an*mpn+bn*avn)}
(15)
图7C是图示出卷积加速器和布置在神经网络中用于示例性分支合并运算的算术单元的第三高级框图700C。发明人已经认识到,在一些情况下,已知的网络拓扑常常可以包括机器学习算法中的分支。例如,考虑到图像识别,一个第一组卷积运算可以用专用于第一颜色的核来处理特征图数据,而一个第二组卷积运算可以用专用于第二颜色的核来处理同一特征图数据。通过利用可配置加速器框架400,针对两种颜色的卷积运算可以并行发生。甚至更有效的是,如果机器学习算法随后希望将卷积流重新合并在一起,则可以与卷积运算并发地使用用于深度学习加速的算术单元700以重新加入例如如图7C中所表示的流。
在第三高级框图700C中,相机传感器408b将流式传输数据提供给执行卷积处理的至少两个卷积加速器600A、600B。在其他情况下,卷积加速器600的输入可以来自不同的传感器、不同的卷积加速器600、存储器或一些其他设备。在其他情况下,任何数量的卷积加速器600(图6)可以接收输入的流式传输数据,或者任何其他数量的不同设备可以可通信地耦合到流开关500以接收流式传输数据。在图7C中,通过流开关500将分别来自卷积加速器600A、600B的输出752A、752B传递给用于深度学习加速的算术单元700。用于深度学习加速的算术单元700还接收来自矢量常数存储器706(图7A)、配置参数电路710(图7A)或一些其他数据源(例如,控制寄存器402(图4))的输入。在接收到来自多个分支源的输入流数据时,用于深度学习加速的算术单元700根据本文所述的特定公式(即,AX1+BY2+C)来组合数据并且将结果数据761通过流开关500往回流式传输。示出的是在图7C的实施例中将流式传输数据传递到流引擎DMA引擎406中,但是在其他情况下,可以将数据流式传输到其他目的地。例如,在合并多于两个分支的情况下,可以通过流开关500将来自用于深度学习加速的算术单元700的输出流式传输到用于深度学习加速的第二算术单元700,该第二算术单元700还接收从第三个分支流式传输的数据。
在图7C中图示出的分支合并运算清楚图示了比先前已知的更高效的运算。在实施合并运算之前,利用单个单元并且与其他运算(例如,卷积、偏差、归一化、缩放和任何其他运算)并发地来执行分支合并运算。以这种方式,数据被重用而不必被流式传输到远程存储器设备中和从远程存储器设备中被流式传输出来。这些运算节省了功耗、片上面积、时间等。理想的是,这些运算进行缩放以执行可用资源所允许的尽可能多的并发运算。
图7D是第一数据流图表700D,其图示出了可配置为利用在神经网络中用于深度学习加速的算术单元700来执行单个专用公式(即,AX+BY+C)的结构。鉴于本公开中所图示和描述的操作,可以理解,用于深度学习加速的算术单元700是高度可配置的,并且基于配置参数,用于深度学习加速的算术单元700能够配置以用于偏差运算(例如(AX+C))、均值减法运算(例如(AX-C))、缩放/批量归一化运算(例如(AX+C))、基于元素的加法/减法运算(例如(X+Y)、(X-Y))、最大平均池化运算(例如(AX+BY))、分支合并运算(例如(AX+BY+C))以及许多其他运算。例如,可以使用诸如操作模式710B储存库之类的配置参数电路710(图7A)中的一个或多个配置参数电路来支持该配置。
图7D中的用于深度学习加速的算术单元700专用于多个并行运算的执行,其中多个并行运算中的每一个并行运算执行公式的一部分,该公式为:输出=AX+BY+C。算术单元包括多个输入762,多个输入762可选择地耦合到流开关500(图4)、控制寄存器402(图4)、矢量常数存储器706(图7A)、配置参数电路710(图7A)或一些其他数据源中的任何一项或多项。用于深度学习加速的算术单元700还包括复用器电路装置764、乘法器电路装置766、临时存储电路装置768、数据移位电路装置770、加法器电路装置772以及可以包括锁存电路装置774和可配置方向移位电路装置776的后求和电路装置。从用于深度学习加速的算术单元700经由输出712流式传输或以其他方式传递信息。在一些情况下,来自算术单元的结果输出数据经由输出712被传递到流开关500、存储器或一些其他电路装置。
在一些实施例中,在集成电路中形成图7D的用于深度学习加速的算术单元700的电路装置。在一些实施例中,集成电路被布置用于卷积神经网络运算。可以在与流开关500和可配置加速器框架400(图4)的其他电路相同的集成电路中形成算术单元的电路装置。附加地或者备选地,可以在与SoC 100(图3)的其他电路相同的集成电路中形成图7D的用于深度学习加速的算术单元的实施例。
用于深度学习加速的算术单元700的电路装置具有可通信地耦合到多个输入762的一个或多个多输入选择电路764(例如,复用器、复用器电路装置、复用器电路等)。在图7D的数据流框图中,第一复用器电路764A可通信地耦合为接收来自诸如寄存器(例如,标量常数A、B、C 710C)的标量储存库的标量数据A以及来自诸如矢量常数存储器706、流开关500或一些其他矢量数据源的矢量储存库的矢量数据A。选择输入A类型被指引传递通过第一复用器电路764A将标量数据A或矢量数据A传递给第一乘法器766A。选择输入A类型可以可通信地耦合到CAF控制寄存器402(图4)、配置参数电路710(图7A)或一些其他选择信息源并由其中的数据指引。
同样在图7D的数据流框图中,第二复用器电路764B可通信地耦合为接收来自诸如寄存器(例如,标量常数A、B、C 710C)的标量储存库的标量数据B以及来自诸如矢量常数存储器706、流开关500或一些其他矢量数据源的矢量储存库的矢量数据B。选择输入B类型被指引通过第二复用器电路764B将标量数据B或矢量数据B传递给第二乘法器766B。选择输入B类型可以可通信地耦合到CAF控制寄存器402(图4)、配置参数电路710(图7A)或一些其他选择信息源并由其中的数据指引。
图7D的数据流图表还描绘了第三复用器电路764C,其可通信地耦合为接收标量常数数据(例如,“0”、“1”或一些其他常数标量数据)、来自诸如寄存器(例如标量常数A、B、C710C)的标量储存库的标量数据C、矢量常数数据(例如,“0,0”;“0,1”;“1,0”;或一些其他常数矢量数据)、以及来自诸如矢量常数存储器706、流开关500或一些其他矢量数据源的矢量储存库的矢量数据C。选择输入C类型被指引通过第三复用器电路764C将常数或可变标量数据C或者常数或可变矢量数据C传递给第三数据移位电路装置770C。选择输入C类型可以可通信地耦合到CAF控制寄存器402(图4)、配置参数电路710(图7A)或一些其他选择信息源并由其中的数据指引。
基于用于深度学习加速的算术单元700被指引执行的运算,多个输入762被布置为将矢量数据传递到算术单元中、将标量数据传递到算术单元中或者将矢量数据和标量数据的组合传递到算术单元中。
乘法器电路装置766被布置作为多个乘法器电路。第一乘法器电路766A和第二乘法器电路766B在图7D中被表示出,但是可以改为形成一些其他数量的乘法器电路。例如,在一些情况下,在算术单元中布置共享或以其他方式使用的单个乘法器电路。在其他情况下,包括三个或更多的多个乘法器电路。每个乘法器电路被布置为接受来自复用器电路装置的被乘数数据、乘数数据或者被乘数数据和乘数数据二者。在一些情况下,例如在图7D的实施例中,将被乘数数据、乘数数据或者被乘数数据和乘数数据二者直接传递到乘法器电路装置766中而不首先传递通过复用器电路装置764。乘法器电路装置766被布置为执行由用于深度学习加速的算术单元700所实现的公式的至少一些乘法运算。如图7D中所布置的,第一乘法器电路766A接收例如可能来自流开关500(图5)的标量A数据或矢量A数据以及流输入X矢量数据。如图7D中进一步布置的,第二乘法器电路766B接收例如可能来自流开关500(图5)的标量B数据或矢量B数据以及流输入Y矢量数据。乘法器电路装置766在被如此提供被乘数数据和乘数数据时产生乘积。
由乘法器电路装置766产生的乘积数据被传递到临时储存电路装置768中。临时储存电路装置768可以被布置作为一个或多个临时存储储存库。例如,来自乘法器766A的乘积数据被传递到临时存储电路768A中,该临时存储电路768A可以是寄存器,并且来自乘法器766B的乘积数据被传递到临时存储电路768B,该临时存储电路768B可以是寄存器。
在第三数据移位电路装置770C处接收通过第三复用器电路764C传递的数据。基于在特定机器学习算法中指引的运算,在第三数据移位电路装置770C处接收的数据可以被移位经由输入C移位(C-Shift)所传递的特定量。可以从CAF寄存器402(图4)、配置参数电路710或一些其他源中检索传递到C移位中的参数数据。在一些情况下,在公式中(例如,AX+BY+C)的“C”运算数是常数的情况下,第三数据移位电路装置770C可以被禁用,可选地被留在算术单元之外,或者以其他方式移出数据路径。可选地在第三临时存储电路768C中存储通过第三复用器电路764C传递的经过移位或以其他方式期望的数据。可选的存储可以被实现或以其他方式被用来根据流水线结构、排序模型或者出于一些其他原因来对准数据运算。
可以可选地在第一临时存储电路768A中存储来自第一乘法器电路766A的乘积数据,并且可以可选地在第二临时存储电路768B中存储来自第二乘法器电路766B的乘积数据。可选的存储可以被实现或以其他方式被用来根据流水线结构、排序模型或者出于一些其他原因来对准数据运算。在图7D的数据路径中,从第一乘法器中传递的数据表示公式(例如AX+BY+C)中的“AX”乘积,并且从第二乘法器中传递的数据表示公式(例如AX+BY+C)中的“BY”乘积。
分别在第一数据移位电路770A和第二数据移位电路770B处接收分别从第一乘法器766A和第二乘法器766B并且分别通过可选的第一临时存储电路768A和第二临时存储电路768B传递的数据。乘积数据可以分别被移位经由输入AX移位(AX-Shift)和BY移位(BY-Shift)输入所传递的特定量。可以从CAF寄存器402(图4)、配置参数电路710或一些其他源中检索传递到AX移位和BY移位输入中的参数数据。
加法器电路装置772被布置为对来自AX数据路径、BY数据路径和C数据路径的数据进行求和。可以将加法器电路装置772形成为单个求和电路、级联的求和电路、排序的求和电路或以任何其他布置来形成。在图7D的数据路径中,加法器电路装置772n可通信地耦合为从第一数据移位电路装置770A、第二数据移位电路装置770B和第三临时存储电路装置768C接收数据。加法器电路772n可以由算法指引以执行(AX+BY+C)公式的至少一些求和运算。
在一些情况下,将来自加法器电路装置772的总和数据直接从用于深度学习加速的算术单元700中传递出。在其他情况下,所确定的后加法电路装置可以被包括在算术单元中。在图7D的数据路径中,后求和电路装置包括锁存电路装置774和方向移位电路装置776。这些电路可以是可选的。在某些情况下,为了定时目的、对准目的、排序目的或为了其他目的,在锁存电路774n中捕获在算术单元中实现的公式所产生的数据。并且方向移位电路776n被布置为逐位对准来自加法器电路装置772n的输出数据,该输出数据可以可选地已被捕获在锁存器774n中。
可以通过移位方向参数(即,图7D中的“移位方向”)和移位量参数(即,图7D中的“结果移位”)来指引方向移位电路装置776。输出总和数据的方向移位可以是为了定时对准、逐位数据对准、归一化、缩放或者为了一些其他原因。从后求和电路装置传递的数据经由输出712通过流开关500、存储器或一些其他电路装置而被传送。
在一些情况下,使用移位值(例如,结果移位、移位方向)来移位中间值(例如,AX、BY、C中的任何一个或多个)并且附加地或备选地被用于移位最终值以提供灵活的定点计算。利用这些参数,机器学习算法可以对于输入到用于深度学习加速的算术单元700或从中传递出的每个值的可选或可变整数和小数部分灵活地使用几乎任何定点数学格式。移位值允许在数学运算之前对准中间结果(例如,AX、BY、C中的任何一个或多个)。在这些或其他情况下,结果移位参数允许生成符合机器学习算法所指引的输出定点格式的值。在图7D至图7F的数据流的一些实施例中,内部值被限制为“左”移位,但是在其他实施例中,可以选择移位方向。
在一个示例性用例中,根据(AX+BY+C)数据路径布置多个用于深度学习加速的算术单元700。数据路径被实现为特定机器学习方法的一组行为。例如,该方法可以是深度卷积神经网络过程的一部分或以其他方式被布置为实现这样的过程。该过程可以由SoC 100执行以标识某些输入数据中的至少一个特征,诸如例如将一个图像或一组图像中的特定特征标识为可接受的确定级别。
在标识一组流式传输图像传感器数据中的特征的过程中,在图像传感器数据中定义特征体积。特征体积具有特征体积高度、特征体积宽度和特征体积深度。输入区块也被定义为具有输入区块高度、输入区块宽度和输入区块深度。使输入区块行进通过特征体积。这种处理包括将图像传感器数据通过可重配置流开关500流式传输到卷积加速器单元600。在卷积加速器单元600中,对图像传感器数据进行卷积以产生核图的堆栈。
还在该过程中,第一卷积加速器600被配置为执行最大池化运算,第二卷积加速器600被配置为执行平均池化运算,并且用于深度学习加速的算术单元700被配置为执行最大平均池化运算(例如,AX+BY+0)。算术单元专用于可以根据(AX+BY+C)公式来实现的数学运算的执行。在其他情况下,用于深度学习加速的算术单元700可以被配置为执行偏差运算、均值运算、缩放运算、分支合并运算或其他运算。
继续该过程,将核图的堆栈通过可重配置流开关500流式传输到第一卷积加速器600和第二卷积加速器600。利用第一卷积加速器600执行最大池化运算,并且最大池化数据通过可重配置流开关500作为输入数据被流式传输到用于深度学习加速的算术单元700。平均池化运算由第二卷积加速器600执行,并且平均池化数据通过可重配置流开关500作为输入数据被流式传输到用于深度学习加速的计算单元700。用于深度学习加速的算术单元700执行最大平均池化运算,并且通过可重配置流开关传递流式传输的最大平均池化数据。
更详细地说,考虑到现在讨论的过程,将流式传输的输入数据通过可重配置流开关500(图5)传递给卷积加速器600并传递给用于深度学习加速的算术单元700。算术单元专用于公式的执行,该公式为:输出=AX+BY+C。传递到算术单元中的流式传输的数据可以是例如来自耦合到流开关500的图像传感器的流式传输的图像传感器数据(例如,图7B中的相机传感器数据408B)、在机器学习处理期间(例如,在卷积处理期间)生成的过渡数据或一些其他数据。
图7E是图示出在神经网络中用于深度学习加速的算术单元700的一乘一(1×1)支持运算的第二数据流图表700E。在图7F中表示出了第二数据流图表700E的输出处的末级电路装置778。
图7F是图示出在卷积处理的末级778中在神经网络中用于深度学习加速的算术单元700的运算的第三数据流图表700F。
在至少一些实施例中,图7E中的末级电路装置778是级联到图7E中所描绘的用于深度学习加速的第一算术单元700的用于深度学习加速的第二算术单元700。与图7E中所描绘的第一算术单元不同地配置图7F中所描绘的第二算术单元。
为了简洁起见,可以引入对与图7D中的结构相对应的图7E中的结构的描述而不重复进一步的详细描述。算术单元包括可选择地耦合到流开关500(图4)或另一数据源的多个输入762。用于深度学习加速的算术单元700包括复用器电路装置764、乘法器电路装置766、临时存储电路装置768、数据移位电路装置770和末级电路装置778。算术单元的其他电路装置(例如,加法器电路装置、后求和电路装置、锁存器电路装置等)可选地不用于一乘一支持运算并且未在图7E中被示出。信息被流式传输或以其他方式从用于深度学习加速的算术单元700经由输出712而被传递到流开关500、存储器或一些其他电路装置。
图7E中的两个附加的复用器电路764D、764E被布置为选择性地将诸如来自流输入X 702和流输入Y 704的流式传输的矢量数据一致(即,流X处的数据与流Y处的数据具有一一对应关系)或非一致(例如,交织或一些其它非一致布置)地传递到相应的乘法器电路装置766。基于选择哪些乘积被指引以用于生成的算法,XY模式选择信号将指引常数数据A或流式传输的矢量数据Y通过复用器电路764D传递到乘法器766A。沿着这些思路,相同或不同的机器学习算法可以使用Conv模式选择信号来选择哪些乘积被指引以用于生成,从而指引流式传输的矢量数据X或流式传输的矢量数据Y到乘法器766B的传递。另外的编程选择可用于机器学习算法,该机器学习算法将指引常数标量或矢量数据与流式传输的矢量数据X的乘法器电路766C中的乘积生成。该算法还可以经由Conv模式信号指引来自乘法器电路766C的乘积数据或者常数标量或矢量数据是否将通过复用器电路764F传递到第三临时存储电路装置768C。
在图7E的算术单元中,乘法器产生的乘积数据将被存储在第一临时存储电路装置768A和第二临时存储电路装置768B中。耦合到临时存储电路768的移位电路装置770由机器学习算法控制以按照任何期望的方式布置数据。当然,在某些情况下,不需要移位。在通过输出712传递到流开关500(图5)、诸如被布置用于矢量存储的存储器之类的储存库或一些其他电路装置之前,来自移位电路770的数据被传递通过末级电路装置778。
为了简洁起见,可以引入与图7D中的结构相对应的图7F的用于深度学习加速的算术单元700中的结构的描述,而不重复进一步的详细描述。算术单元包括多个输入762,多个输入762被选择性地耦合到流开关500(图4)或另一数据源。例如诸如XY模式和Conv模式的参数输入可以源自于CAF控制寄存器402、配置参数电路710或另一个源。图7F的用于深度学习加速的算术单元700包括复用器电路装置764、加法器电路装置772、临时存储电路装置768、数据移位电路装置770和串行化器电路装置780。算术单元的其他电路装置可选地不用于图7F的实施例中。
在图7F的第三数据流实施例中,经由输入762进行参数输入,参数输入包括XY模式信号、Conv模式信号、结果移位信号、移位方向信号、活动核计数信号和其他这样的参数信息。输入可以从机器学习算法、CAF控制寄存器402、配置参数电路710或一些其他源获得信息。在图7F中,组合逻辑782并且在至少一个实施例中的逻辑或门782n被布置为传递表示XY模式和Conv模式参数的信号信息。信号信息被用在复用器电路装置764中。基于XY模式和Conv模式参数,表示某些点积值(BY)或高速缓存的循环数据的流式传输输入通过复用器电路764G被传递到加法器电路装置772G。相同的XY模式和Conv模式信号信息也被用作复用器电路764n的选择信息,以选择将通过末级778电路装置的输出712而被传递的值。
将Conv模式信号信息应用到复用器电路764H和复用器电路764I的选择输入。在这里,Conv模式信号确定来自临时存储电路装置768H的常数信息(例如,零)或高速缓存的循环数据是否通过复用器电路764H被传递到加法器电路装置772H。并且Conv模式信号还确定来自加法器电路772G的总和数据或来自临时存储电路装置768I的循环数据是否通过复用器电路764I被传递到加法器电路装置772I。
在图7F的末级778中的加法器电路772根据机器学习算法执行求和运算并将输出数据传递到临时存储电路768。更具体而言,加法器电路772G、772H和772I的输出分别被加载到临时存储电路768G、768H和768I中。来自临时存储电路768的数据在被传递到串行化器电路装置780之前被传递通过可选移位电路装置770。更具体而言,来自临时存储电路768G、768H和768I的数据分别被加载到数据移位电路770G、770H和770I中。串行化器电路780n对输出数据进行分组、分组化或以其他方式形成输出数据,所述输出数据将被选择性地通过复用器电路764n而传递到输出712。
在图7E的第二数据流图表和图7F的第三数据流图表的至少一个实例中,常数矢量流以图7E的数据流700E进入用于深度学习加速的算术单元700。常数矢量流在流输入Y上进入,并且矢量数据流在流输入X上进入算术单元。算术单元由机器学习算法指引以执行一乘一(1×1)卷积或点积运算。机器学习算法将各种参数编程到CAF控制寄存器402、配置参数电路710或其他结构中。根据图7E的第一数据流和图7F的第二数据流,这些参数被用于指引用于深度学习加速的算术单元700的运算。
仍然考虑图7E的第二数据流700E中的处理,例如,XY模式参数被布置为指定使用X和Y输入二者的一乘一(1×1)卷积运算,并且Conv模式参数被布置为指定使用在流输入X上传递的矢量数据和存储在矢量常数存储器706(图7A)中的核矢量或存储在配置参数电路710(图7A)中的标量常数A、B、C的一乘一(1×1)卷积。
在非限制性示例中,当XY模式为“1”时,并且当来自流开关500的输入X上流式传输矢量数据时,并且当来自流开关500的输入Y上流式传输卷积核权重矢量时,算术单元将执行数据的一乘一(1×1)卷积,其可以通过输出712而被流式传输回到流开关500中并且被流式传输回到图7F的第三数据流700F中。更重要的是,如果Conv模式为“1”,则可以在诸如矢量常数存储器706(图7A)之类的本地存储器中高速缓存/加载核权重并且经由矢量常数输入706A、706B、706C(图7A)传递常量,从而可以高速缓存高达三个一乘一乘D核,其中“D”是用于存储A、B和C常数的内部行缓冲器的行长度。此外,以迄今不可用的方式,被高速缓存的数据必要时可以被重用,以运算与卷积特征数据相对应的并且在输入X上流式传输的矢量数据。以这种方式,在图7E的第二数据流700E中选择性地执行的运算可以包括在等式16中标识的那些运算。
输出=(X*Y)|(A*X)|(B*X)|(C*X) (16)
执行的等式取决于XY模式和Conv模式参数的设置。公式的执行还可以包括使用内部累加器来在生成输出之前存储部分卷积结果。
本公开参考“半导体从业者”。半导体从业者通常是半导体设计和制造领域中的普通技术人员之一。半导体从业者可以是专业工程师或其他技术人员或系统,其具有用以指引和平衡诸如几何、布局、功率使用、所包括的知识产权(IP)模块等的半导体制造项目的特定特征的技能。半导体从业者可以了解或可以不了解为了形成裸片、集成电路或其他此类设备而执行的制造工艺的每个细节。
图7A至图7F包括图示出可由移动计算设备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 (13)

1.一种电子设备,其特征在于,包括:
集成电路;
可重配置流开关,形成在所述集成电路中;以及
算术单元,具有耦合到所述可重配置流开关的多个输入、以及至少一个输出,所述算术单元专用于多个并行运算的执行,其中所述多个并行运算中的每一个运算执行公式的一部分,所述公式为:输出=AX+BY+C。
2.根据权利要求1所述的电子设备,其特征在于,所述集成电路被布置用于卷积神经网络运算。
3.根据权利要求1所述的电子设备,其特征在于,所述算术单元被布置为接收被传递通过所述可重配置流开关的流式传输数据,并且所述算术单元被布置为经由所述至少一个输出将结果数据的流传递通过所述可重配置流开关。
4.根据权利要求1所述的电子设备,其特征在于,所述多个输入中的至少一个输入被布置为将矢量数据传递到所述算术单元中。
5.根据权利要求1所述的电子设备,其特征在于,所述多个输入中的至少一个输入被布置为将标量数据传递到所述算术单元中。
6.根据权利要求1所述的电子设备,其特征在于,所述算术单元包括:
复用器电路装置,被布置作为多个复用器电路,所述多个复用器电路通信地耦合到所述多个输入中的至少一些输入;
乘法器电路装置,被布置作为多个乘法器电路,每个乘法器电路被布置为接受来自所述复用器电路装置的被乘数数据、乘数数据或者被乘数数据和乘数数据二者,所述乘法器电路装置还被布置为执行所述公式的至少一些乘法运算;
临时存储电路装置,被布置作为多个临时存储库,所述多个临时存储库中的每一个库被布置为从乘法器电路接收乘积数据;
数据移位电路装置,被布置作为多个移位电路,所述多个移位电路通信地耦合所述临时存储电路装置;以及
加法器电路装置,被布置作为至少一个加法器电路,以执行所述公式的至少一些求和运算。
7.根据权利要求6所述的电子设备,其特征在于,所述算术单元包括:
后求和电路装置,所述后求和电路装置被布置为从所述加法器电路装置接收总和数据,所述后求和电路装置通信地耦合到所述算术单元的所述至少一个输出。
8.根据权利要求7所述的电子设备,其特征在于,所述后求和电路装置包括可配置方向移位电路装置。
9.根据权利要求1所述的电子设备,其特征在于,所述算术单元包括:
第一复用器电路,被耦合为接收“A”输入,所述“A”输入对应于所述公式中的“A”;
第二复用器电路,被耦合为接收“B”输入,所述“B”输入对应于所述公式中的“B”;
第三复用器电路,被耦合为接收“C”输入,所述“C”输入对应于所述公式中的“C”;
第一乘法器电路,被布置为接收来自所述第一复用器电路的所述“A”输入,并且还被布置为接收“X”输入,所述第一乘法器电路还被布置为通过将所述“A”输入和所述“X”输入相乘来产生第一乘积;
第二乘法器电路,被布置为接收来自所述第二复用器电路的所述“B”输入,并且还被布置为接收“Y”输入,所述第二乘法器电路还被布置为通过将所述“B”输入和所述“Y”输入相乘来产生第二乘积;以及
加法器电路,被布置为对由第一乘法器电路和第二乘法器电路生成的信息、以及被传递通过所述第三复用器电路的信息进行求和,所述加法器电路被布置为产生与所述公式中的所述输出对应的总和。
10.根据权利要求9所述的电子设备,其特征在于,所述第一复用器电路被布置为传递第一标量数据或第一矢量数据,并且其中所述第二复用器电路被布置为传递第二标量数据或第二矢量数据。
11.一种集成电路,包括:
板上存储器;
应用处理器;
数字信号处理器DSP集群;
可配置加速器框架CAF;以及
至少一个通信总线架构,所述至少一个通信总线架构将所述应用处理器、所述DSP集群和所述CAF通信地耦合到所述板上存储器,其中所述CAF包括:
可重配置流开关;以及
至少一个算术单元,所述至少一个算术单元具有耦合到所述可重配置流开关的多个输入和耦合到所述可重配置流开关的至少一个输出,每个算术单元专用于多个并行运算的执行,其中所述多个并行运算中的每一个运算执行公式的一部分,所述公式为:输出=AX+BY+C。
12.根据权利要求11所述的集成电路,其中,所述集成电路被形成为片上系统。
13.根据权利要求11所述的集成电路,包括:
功率管理器电路,所述功率管理器电路可电耦合到电池。
CN201920243831.XU 2018-02-27 2019-02-25 电子设备和集成电路 Active CN209560590U (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201862636009P 2018-02-27 2018-02-27
US62/636,009 2018-02-27
US16/280,960 US11586907B2 (en) 2018-02-27 2019-02-20 Arithmetic unit for deep learning acceleration
US16/280,960 2019-02-20

Publications (1)

Publication Number Publication Date
CN209560590U true CN209560590U (zh) 2019-10-29

Family

ID=65576199

Family Applications (2)

Application Number Title Priority Date Filing Date
CN201920243831.XU Active CN209560590U (zh) 2018-02-27 2019-02-25 电子设备和集成电路
CN201910141007.8A Pending CN110197253A (zh) 2018-02-27 2019-02-25 用于深度学习加速的算术单元

Family Applications After (1)

Application Number Title Priority Date Filing Date
CN201910141007.8A Pending CN110197253A (zh) 2018-02-27 2019-02-25 用于深度学习加速的算术单元

Country Status (3)

Country Link
US (2) US11586907B2 (zh)
EP (1) EP3531348A1 (zh)
CN (2) CN209560590U (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110197253A (zh) * 2018-02-27 2019-09-03 意法半导体国际有限公司 用于深度学习加速的算术单元

Families Citing this family (43)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9276610B2 (en) * 2014-01-27 2016-03-01 Tensorcom, Inc. Method and apparatus of a fully-pipelined layered LDPC decoder
US11562115B2 (en) 2017-01-04 2023-01-24 Stmicroelectronics S.R.L. Configurable accelerator framework including a stream switch having a plurality of unidirectional stream links
CN207517054U (zh) 2017-01-04 2018-06-19 意法半导体股份有限公司 串流开关
EP3631701A4 (en) 2017-05-31 2021-03-31 Intel Corporation COMPUTER SYSTEM BASED ON A TENSOR INTENDED FOR QUATERNION OPERATIONS
CN108304923B (zh) * 2017-12-06 2022-01-18 腾讯科技(深圳)有限公司 卷积运算处理方法及相关产品
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
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
IN201811023855A (zh) * 2018-06-26 2018-07-13 Hcl Technologies Ltd
US10572225B1 (en) * 2018-09-26 2020-02-25 Xilinx, Inc. Circuit arrangements and methods for performing multiply-and-accumulate operations
US10853694B2 (en) * 2018-12-04 2020-12-01 Apical Ltd. Processing input data in a convolutional neural network
US11263010B2 (en) * 2019-07-09 2022-03-01 Micron Technology, Inc. Bit string lookup data structure
CN112286578A (zh) 2019-07-25 2021-01-29 北京百度网讯科技有限公司 由计算设备执行的方法、装置、设备和计算机可读存储介质
US10956776B2 (en) 2019-08-06 2021-03-23 Alibaba Group Holding Limited 2D convolutional accelerator that generates 3D results
CN112561044B (zh) * 2019-09-26 2023-07-14 西安闻泰电子科技有限公司 神经网络模型加速方法及装置、服务器及存储介质
US20210103803A1 (en) * 2019-10-08 2021-04-08 Apple Inc. Multi-Mode Planar Engine For Neural Processor
CN110942145A (zh) * 2019-10-23 2020-03-31 南京大学 基于可重构计算的卷积神经网络池化层、硬件实现方法及系统
WO2021084717A1 (ja) * 2019-10-31 2021-05-06 日本電気株式会社 情報処理回路および情報処理回路の設計方法
CN112765539B (zh) * 2019-11-01 2024-02-02 中科寒武纪科技股份有限公司 运算装置、方法及相关产品
CN110796242A (zh) * 2019-11-01 2020-02-14 广东三维家信息科技有限公司 神经网络模型推理方法、装置、电子设备及可读介质
KR20210058404A (ko) * 2019-11-14 2021-05-24 엘지전자 주식회사 이미지 처리방법 및 처리장치
GB2589382B (en) * 2019-11-29 2023-02-22 Imagination Tech Ltd Hardware implementation of a neural network
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
CN111210417B (zh) * 2020-01-07 2023-04-07 创新奇智(北京)科技有限公司 基于卷积神经网络的布匹缺陷检测方法
US20210216868A1 (en) * 2020-01-08 2021-07-15 Maxim Integrated Products, Inc. Systems and methods for reducing memory requirements in neural networks
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
CN111401516B (zh) * 2020-02-21 2024-04-26 华为云计算技术有限公司 一种神经网络通道参数的搜索方法及相关设备
US11507831B2 (en) 2020-02-24 2022-11-22 Stmicroelectronics International N.V. Pooling unit for deep learning acceleration
US11593628B2 (en) * 2020-03-05 2023-02-28 Apple Inc. Dynamic variable bit width neural processor
US11323391B1 (en) 2020-03-27 2022-05-03 Xilinx, Inc. Multi-port stream switch for stream interconnect network
US11144615B1 (en) 2020-04-14 2021-10-12 Apple Inc. Circuit for performing pooling operation in neural processor
CN111582465B (zh) * 2020-05-08 2023-04-07 中国科学院上海高等研究院 基于fpga的卷积神经网络加速处理系统、方法以及终端
US11531873B2 (en) 2020-06-23 2022-12-20 Stmicroelectronics S.R.L. Convolution acceleration with embedded vector decompression
CN111913744A (zh) * 2020-07-15 2020-11-10 博流智能科技(南京)有限公司 Ai深度学习数据处理方法及系统
US11861337B2 (en) * 2020-08-26 2024-01-02 Micron Technology, Inc. Deep neural networks compiler for a trace-based accelerator
US11954580B2 (en) * 2020-09-16 2024-04-09 Meta Platforms, Inc. Spatial tiling of compute arrays with shared control
KR20220101518A (ko) * 2021-01-11 2022-07-19 에스케이하이닉스 주식회사 곱셈-누산 회로 및 이를 포함하는 프로세싱-인-메모리 장치
US11195080B1 (en) * 2021-03-29 2021-12-07 SambaNova Systems, Inc. Lossless tiling in convolution networks—tiling configuration
DE112022000014T5 (de) * 2021-05-05 2023-03-23 Uniquify, Inc. Systeme und verfahren mit künstlicher intelligenz und cloud-technologie für edge- und server-soc
CN114399828B (zh) * 2022-03-25 2022-07-08 深圳比特微电子科技有限公司 用于图像处理的卷积神经网络模型的训练方法
EP4336409A1 (en) 2022-09-12 2024-03-13 STMicroelectronics S.r.l. Neural network hardware accelerator circuit with requantization circuits

Family Cites Families (43)

* 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
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
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
US10353860B2 (en) 2015-10-08 2019-07-16 Via Alliance Semiconductor Co., Ltd. Neural network unit with neural processing units dynamically configurable to process multiple data sizes
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
US10042666B2 (en) * 2016-08-10 2018-08-07 American Megatrends, Inc. Platform simulation for management controller development on virtual machines
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 北京工业大学 一种基于卷积神经网络的动作检测模型
CN106779059B (zh) * 2016-12-30 2019-03-05 华中科技大学 一种基于忆阻的巴普洛夫联想记忆的人工神经网络电路
US20190205758A1 (en) 2016-12-30 2019-07-04 Konica Minolta Laboratory U.S.A., Inc. Gland segmentation with deeply-supervised multi-level deconvolution networks
CN108268940B (zh) * 2017-01-04 2022-02-18 意法半导体股份有限公司 用于创建可重新配置的互连框架的工具
US11562115B2 (en) 2017-01-04 2023-01-24 Stmicroelectronics S.R.L. Configurable accelerator framework including a stream switch having a plurality of unidirectional stream links
EP3346427B1 (en) * 2017-01-04 2023-12-20 STMicroelectronics S.r.l. Configurable accelerator framework, system and method
CN108268941B (zh) * 2017-01-04 2022-05-31 意法半导体股份有限公司 深度卷积网络异构架构
CN207517054U (zh) * 2017-01-04 2018-06-19 意法半导体股份有限公司 串流开关
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
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 삼성전자주식회사 뉴럴 네트워크의 디컨벌루션 연산을 수행하는 장치 및 방법
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
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

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110197253A (zh) * 2018-02-27 2019-09-03 意法半导体国际有限公司 用于深度学习加速的算术单元

Also Published As

Publication number Publication date
US11586907B2 (en) 2023-02-21
US20230153621A1 (en) 2023-05-18
CN110197253A (zh) 2019-09-03
US20190266485A1 (en) 2019-08-29
EP3531348A8 (en) 2020-05-06
EP3531348A1 (en) 2019-08-28

Similar Documents

Publication Publication Date Title
CN209560590U (zh) 电子设备和集成电路
CN110197276B (zh) 用于深度学习加速的数据体雕刻器
CN110197111B (zh) 用于深度学习引擎的加速单元
CN207993065U (zh) 可配置的加速器框架设备和用于深度卷积神经网络的系统
CN207440765U (zh) 片上系统和移动计算设备
CN207517054U (zh) 串流开关
CN108268940A (zh) 用于创建可重新配置的互连框架的工具
EP3346427A1 (en) Configurable accelerator framework, system and method
US20220129320A1 (en) Schedule-aware dynamically reconfigurable adder tree architecture for partial sum accumulation in machine learning accelerators
Mohaidat et al. A Survey on Neural Network Hardware Accelerators
Kim et al. EPU: An Energy-Efficient Explainable AI Accelerator With Sparsity-Free Computation and Heat Map Compression/Pruning
Hille et al. DSP Design With Hardware Accelerator For Convolutional Neural Networks
Chowdhury et al. Messaging-based Intelligent Processing Unit (m-IPU) for next generation AI computing

Legal Events

Date Code Title Description
GR01 Patent grant
GR01 Patent grant