首页> 中国专利> 用于神经网络参数实时动态解压缩的矢量量化解码硬件单元

用于神经网络参数实时动态解压缩的矢量量化解码硬件单元

摘要

本公开的实施例涉及用于神经网络参数实时动态解压缩的矢量量化解码硬件单元。电子设备的实施例包括集成电路、在集成电路中形成的可重构流开关以及多个卷积加速器和被耦合到可重构流开关的解压缩单元。解压缩单元在卷积神经网络操作过程期间实时解压缩编码内核数据。

著录项

说明书

技术领域

本公开总体涉及在传感器系统中实现的卷积神经网络。

背景技术

深度学习算法在涉及识别、标识和/或分类任务的众多应用中提升了非常高的性能,然而,这种进步可能以处理功率方面的重大需求为代价。因此,由于缺乏低成本和节能的解决方案,它们的采用可能受到阻碍。因此,在嵌入式设备上部署深度学习应用时,严格的性能规范可以与功耗和能耗方面的严格限制共存。

发明内容

在一个实施例中,一种卷积神经网络处理系统包括:输入层,被配置为接收输入数据;以及输入层,被配置为接收编码内核数据并且基于编码内核数据生成解压缩的内核数据。系统包括卷积加速器,被配置为接收解压缩的内核数据、基于输入数据接收特征数据,以及对特征数据和解压缩的内核数据执行卷积运算。该系统包括全连接层,被配置为从卷积加速器接收卷积数据并且基于卷积数据生成预测数据。

在一个实施例中,一种方法包括通过卷积神经网络的解压缩单元接收编码内核数据,其中编码内核数据包括用于矢量量化码本的索引数据。该方法包括将矢量量化码本存储在解压缩单元的查找表中,通过利用索引数据从查找表中检索码矢量来通过解压缩单元生成解压缩的内核数据,以及在卷积神经网络的卷积加速器处接收特征数据。该方法包括通过卷积加速器从解压缩单元接收解压缩的内核数据,并且通过卷积加速器对解压缩的内核数据和特征数据执行卷积运算。

在一个实施例中,一种方法包括用机器学习过程训练卷积神经网络,通过机器学习过程生成用于卷积神经网络的卷积层的内核数据,以及通过在内核数据上执行矢量量化处理、利用卷积神经网络外部的编码器,生成包括索引数据和码本数据的编码内核数据。该方法包括在机器学习过程之后的卷积神经网络的操作期间,将编码的内核数据提供给卷积神经网络的解压缩单元。该方法包括将矢量量化码本存储在解压缩单元的查找表中,通过索引数据从查找表中检索码矢量来使用解压缩单元生成解压缩的内核数据,并且将解压缩的内核数据提供给卷积层。

附图说明

图1是根据一个实施例的电子设备的一部分的框图。

图2A是根据一个实施例的电子设备的卷积神经网络的框图。

图2B是根据一个实施例的卷积运算的图示。

图3是根据一个实施例的卷积神经网络的解压缩单元的框图。

图4是根据一个实施例的卷积神经网络的卷积加速器的框图。

图5是根据一个实施例的电子设备的片上系统的框图。

图6是根据一个实施例的图像和卷积神经网络处理子系统的框图。

图7是根据一个实施例的方法的流程图。

图8是根据一个实施例的方法的流程图。

具体实施方式

图1是根据一个实施例的电子设备100的框图。电子设备100包括卷积神经网络(CNN)102。CNN 102接收输入数据108并且生成预测数据111。CNN 102部分地通过对输入数据108执行一个或多个卷积运算来生成预测数据111。

在一个实施例中,输入数据108由电子设备100的图像传感器(未示出)或另一类型的传感器提供。因此,输入数据108可以包括与由图像传感器捕获的一个或多个图像相对应的图像数据。图像数据被格式化以使其可以由CNN 102接收。CNN 102分析图像数据并且生成预测数据111。预测数据111指示与图像数据的一个或多个方面相关的预测或分类。预测数据111可以对应于识别图像的形状、对象、面或其它方面。

在一个实施例中,使用机器学习过程来训练CNN 102,以识别提供给CNN 102的训练图像的方面。机器学习过程包括将具有已知特征的多个训练图像传递给CNN。机器学习过程训练CNN 102以生成准确地预测或分类训练图像的特征的预测数据。训练过程可以包括深入的学习过程。

训练过程生成多个内核张量。内核张量可以看作加权张量。在机器学习过程期间生成在内核张量中的值或权重,使得当在输入数据108与内核张量之间执行数学运算时,生成准确的预测数据111。

解压缩单元106增强CA 104的效率。解压缩单元106从CNN 102外部的编码器接收编码的内核数据。解压缩单元106在CNN 102的操作期间对编码的内核数据113进行解压缩,并且将解压缩(或解码)的内核数据实时地提供给卷积加速器104。这增强了CNN 102的功能,如图3和图4所示。

图2A是根据一个实施例的在CNN 102内的处理流程的简化框图。CNN 102包括输入层119、多个卷积层105和一个或多个连接层121。输入数据108被提供给输入层119,通过各种卷积层104,并且被传递到全连接的层121。最终全连接层的输出是预测数据111。

每个卷积层105对输入数据108或者对来自由CNN 102的前一层的输入数据108生成的数据执行一系列卷积运算。特别地,一个或多个内核张量与每个卷积层105相关联。每个卷积层105在该卷积层105的内核张量与被提供给卷积层105的特征数据之间执行卷积运算。从输入数据108导出特征数据。卷积加速器104执行与卷积层105相关联的卷积运算。因此,每个卷积层105与相应的卷积加速器104相关联。

在一个实施例中,第一卷积层105从输入层119接收特征数据。用于第一卷积层105的特征数据是输入数据108。第一卷积层105通过在输入数据108与内核张量之间执行卷积运算,从输入数据108生成特征数据。然后,第一卷积层将特征数据传递给第二卷积层105。

第二卷积层从第一卷积层接收特征数据。第二卷积层通过在由第一卷积层生成的特征数据和与第二卷积层相关联的内核张量之间执行卷积运算,来生成用于第三卷积层的特征数据。然后,第二卷积层将特征数据传递给卷积层。重复该处理,直到第n卷积层对接收到的特征数据执行卷积运算并且生成最终特征数据为止。第n卷积层将最终特征数据传递给全连接的层121。然后,全连接的层121生成预测数据111。解压缩单元106对用于每个卷积层的内核数据执行解压缩操作,下面将更详细地描述。

在实践中,CNN 102包括除图2A中所示的那些步骤之外的其它步骤。特别地,CNN102可以包括合并操作、激活操作和其它操作。例如,可以在各个卷积层之间执行合并操作,以准备来自一个卷积层的特征数据以供下一卷积层处理。

图2B示出了由卷积层105中的一个卷积层执行的卷积运算。在特征张量123与内核张量125之间执行卷积运算。卷积运算产生用于下一卷积层的特征张量127。在实践中,每个卷积层105在大量特征张量123与内核张量125之间执行卷积运算。在一个实施例中,每个卷积层105在从大特征张量123生成的大量子张量与从大内核张量125生成的大量子张量之间执行卷积运算。

在一个实施例中,卷积运算可以分解为一系列乘法和累加(MAC)运算。因此,在卷积运算中要考虑的关键运算是乘法和累加运算。乘法和累加运算对应于将内核张量125的转置乘以特征张量123。

在CNN中,卷积运算可以占由CNN所消耗的计算运算或计算资源的大部分。因此,改善卷积层的效率对CNN是非常有益的。因此,CNN 102包括卷积加速器104和解压缩单元106。

每个卷积加速器104对应于执行特定卷积层105的卷积运算的硬件块。因此,CNN102包括用于每个卷积层的相应卷积加速器104。如下面将更详细地描述的,解压缩单元106整体上提高CNN 102的效率。

CNN 102利用量化方案来量化与每个卷积层105相关联的内核数据。内核数据,即针对各种内核张量的值可以对应于大量的数据。如果内核数据以未压缩的方式存储在CNN102的硬件块中,则这可以对应于CNN的大量存储器和带宽使用以及集成电路区域的相应大量使用。

CNN 102在机器学习过程已经发生之后利用矢量量化技术来编码内核数据。一旦在机器学习过程中为CNN 102的各种卷积层生成最终内核值,则使用矢量量化技术对内核数据进行编码。特别地,编码器将输入范围映射成称为码本的有限有理值范围。由码本存储的任何值都称为码矢量。在编码阶段期间,索引与码本的所有码矢量相关联。在矢量量化的情况下,每个码矢量可以由一个或多个码字形成。

在矢量量化处理中,来自多维内核张量的值被编码到来自离散子空间和低维的有限值集中。较低的空间矢量需要较少的存储空间。这样,内核数据被有效压缩。编码器为每个低维码矢量生成并且存储索引。

在CNN 102已经被训练之后,CNN 102利用解压缩单元106来辅助卷积运算。特别地,当特征数据被提供给对应于卷积层中的一个卷积层的卷积加速器时,编码内核数据113被提供给解压缩单元106。编码内核数据113对应于用于该卷积层的编码内核张量值。解压缩单元106接收编码的内核数据113并且对编码的内核数据113进行解码,以再现在机器学习过程期间生成的原始内核数据。因此,解压缩单元106有效地解压缩编码的内核数据113,并且将其提供给卷积加速器。卷积加速器然后可以利用解压缩的内核数据对特征数据执行卷积运算。

在一个实施例中,解压缩单元106包括查找表。对于CNN 102的每个压缩加速器104,查找表包括相应的码本。码本包括与对应内核数据的每个码矢量相关联的码字。因此,解压缩单元106同时存储用于每个卷积加速器104的码本。

在一个实施例中,在CNN 102的操作期间,当卷积加速器104被调度来执行与CNN102的卷积层105相关联的卷积运算时,与该卷积层105相关联的编码内核数据113被提供给解压缩单元106。编码的内核数据113包括与在码本中的每个码矢量相关联的索引。解压缩单元106查找用于每个索引的码字并且检索码矢量。然后,解压缩单元106输出码矢量作为解压缩的内核数据。解压缩的内核数据被提供给卷积加速器104。卷积加速器104然后使用解压缩的内核数据对特征数据执行卷积运算。

在一个实施例中,解压缩单元106是消耗相对较少面积的硬件块。因为码本代表内核张量的高度压缩版本,所以码本占用的存储器相对较少。解压缩单元106还可以利用相对较小的输入缓冲器和输出缓冲器。因此,解压缩单元106可以是相对较小的硬件块。

图3是根据一个实施例的解压缩单元106的框图。解压缩单元106包括索引流缓冲器250、内核流缓冲器252、配置控制块254、查找表255和输出流缓冲器259。查找表255包括控制逻辑256和码本258。

在一个实施例中,索引流缓冲器250接收用于卷积加速器104中的一个卷积加速器的卷积运算的索引数据。因此,当卷积加速器104中的一个卷积加速器要执行卷积运算时,与编码的内核数据相关联的索引数据被提供给索引流缓冲器250。索引数据对应于与在码本中存储的码矢量相关联的各种码字的索引。

在一个实施例中,索引数据从索引流缓冲器250提供给查找表255的控制逻辑256。控制逻辑接收索引并且在码本258中查找码字,以及检索对应的码矢量。然后,码矢量被从查找流提供给输出缓冲器259。输出缓冲器259将码矢量作为解压缩的内核数据提供给CA104。

在一个实施例中,当卷积加速器中的一个卷积加速器要执行卷积时,码本数据被实时提供给流缓冲器252。在这种情况下,码本数据与索引数据一起被实时流传送到解压缩单元106。内核流缓冲器252将码本数据提供给控制逻辑256,控制逻辑256将码本数据写入查找表255。然后使用索引数据来查找码字和相关联的码矢量,如前面所述。

在一个实施例中,解压缩单元106接收与要执行的下两个卷积运算相关联的码本数据。例如,在第一卷积加速器104执行卷积运算之前,用于第一和第二卷积加速器104的码本数据被流到解压缩单元106。然后,与第一和第二卷积加速器104相关联的码本被存储在查找表255中。用于第一卷积加速器的索引数据被提供给索引流缓冲器250,并且与用于第一卷积加速器104的内核张量相关联的码矢量被输出到输出流缓冲器259。然后,输出流缓冲器259将解压缩的内核数据提供给第一卷积加速器104。在第一卷积加速器104执行其卷积运算之后,与第三卷积加速器相关联的码本数据被流到码本流缓冲器252,并且在查找用于第二卷积运算的内核数据的同时用第三码本替换第一码本。这样,在执行卷积加速器的卷积运算之前,查找表255包含与卷积加速器相关联的码本。这有助于减少CNN 102中的延迟。

在一个实施例中,查找表255具有足以存储包括256个码矢量并且每码矢量八个码字的码本的存储器。在一个实施例中,每个码字是16位。因此,在一个示例中,查找表255具有32768位的存储器分配。为了存储两个码本,查找表255可以包括两倍于该量的存储器。本领域技术人员将认识到,根据本发明,码本可以包括不同数目的码矢量以及每码矢量的不同数目的码字,而不脱离本发明的范围。根据本发明,本领域技术人员将认识到,在不脱离本发明的范围的情况下,查找表255可以具有足够的存储器来存储与上述数目不同的码本。

在一个实施例中,查找表255始终存储码本258。换句话说,查找表255包括用于每个卷积加速器104的码本。因此,在CNN 102的操作期间,仅索引数据流到解压缩单元106,这是因为解压缩单元106已经包括码本258。

在一个实施例中,配置控制254存储用于解压缩单元106的配置数据。通过将新的配置数据写入配置控制254,可以重新配置解压缩单元106。在一个实施例中,查找表255的控制逻辑256控制如何向查找表255写入数据和从查找表255读取数据。

图4是根据一个实施例的卷积加速器104的框图。卷积加速器104包括特征线缓冲器262、内核缓冲器264、MAC单元266和加法器树268。卷积加速器104对未来数据执行卷积运算。

特征线缓冲器262是从先前卷积加速器或CNN 102的输入级中任一者接收特征数据的线缓冲器。特征数据被存储在特征线缓冲器262中。特征线缓冲器262向MAC单元266提供特征数据。

内核缓冲器264从解压缩单元106接收解压缩的内核数据。内核缓冲器264存储解压缩的内核数据。内核缓冲器264将解压缩的内核数据提供给MAC单元266。

MAC单元266在特征数据与解压缩的内核数据之间执行卷积运算。特别地,MAC单元266对特征数据和解压缩的内核数据执行乘法和累加操作。MAC单元266将数据输出到加法器树268。加法器树268对从MAC单元266接收的数据执行加法运算。加法器树将特征数据输出到下一卷积层,或者输出到下一卷积层的中间处理,例如合并单元。如果卷积加速器104是最终卷积加速器,则卷积加速器104将特征数据输出到全连接的层。

图5是根据一个实施例的电子设备100的片上系统110中的移动CNN处理器的框图。片上系统(SoC)110包括图像和CNN协处理器子系统101。子系统101包括CNN 102和图像处理块。子系统101可以从图像传感器接收图像数据,可以处理图像数据,可以通过CNN102传递图像数据。CNN 102可以生成关于图像数据的预测数据或分类。在图5的示例中,移动CNN处理器被布置为SoC 110,然而也考虑了其他布置(例如,多个芯片、单个集成电路中的多个芯片管芯等)。所示的SoC 110包括多个SoC控制器120、子系统、SoC全局存储器126、应用(例如,主机)处理器128和多个DSP 138,以上项中的每项直接或间接地通信耦合到主(例如,系统)通信总线132和辅助通信(例如,DSP)总线166。

可配置加速器框架(子系统)101通信地耦合到系统总线166,该系统总线166提供用于子系统101的卷积加速器根据需要访问SoC全局存储器126、以及根据需要与DSP 138通信的机制。图6更详细地说明了子系统101。

SoC 110包括各种SoC控制器120,其中一些控制SoC 110,另一些控制一个或多个外围设备。SoC控制器120包括应用(例如,主机)处理器128(例如,ARM处理器或一些其他主机处理器)、时钟生成器168(例如,时钟管理器)、复位控制器170和电源管理器172,以提供对SoC 110以及其他组件的各种定时、功耗和其他方面的额外支持、控制和管理。控制外围设备的其他SoC控制器120包括低速外围I/O接口130和外部存储器控制器174,以与嵌入SoC110的示例性设备100的外部芯片、组件或存储器通信或以其他方式访问它们。

应用处理器128可以充当中间模块,或者充当与SoC 110集成的示例性电子设备100的其他程序或组件的接口。在一些实施例中,应用处理器128可以被称为应用处理器核心。在各种实施例中,应用处理器128在引导时加载SoC配置文件,并且根据配置文件配置DSP138和子系统101。当SoC 110处理一批或多批输入数据(例如,图像)时,应用处理器128可以基于配置文件(其本身可基于CNN层和拓扑)协调子系统101或DSP 138的重新配置。

SoC 110还包括主通信总线132(例如,AXI高级可扩展接口),其促进在SoC控制器120与DSP 138之间以及在SoC控制器120与子系统101之间的通信。例如,DSP 138或子系统101可以经由主通信总线132与应用处理器128、一个或多个外围控制器/外围通信接口(低速外围I/O)130、经由外部存储器控制器174的外部存储器(未示出)或其他组件进行通信。SoC控制器120还可以包括诸如时钟管理器(例如,时钟生成器)168、复位控制器170、向SoC110提供额外定时和电源管理的电源管理器172等其他支持和协作的设备,以及其他组件。

在一些实施例中,如图5所示,多个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可以与子系统101的一个或多个组件(例如,一个或多个卷积加速器)通信,或者经由系统总线166访问SoC全局存储器126。在一些实施例中,每个DSP 142、152可以经由其对应DSP集群122、140的DMA 162、164与SoC存储器126通信。此外,DSP 142、152可以根据需要经由系统总线166与控制器120或SoC 110的其他模块通信。每个DSP经由其本地DSP交叉开关144、154、其DSP集群交叉开关145、155和全局DSP集群交叉开关150访问系统总线166。

多个DSP 138可以被分派或分配来执行特定指令,以加速CNN的其他操作。这些其它操作可包括在CNN处理期间执行的非卷积运算,其在一些情况下主要由子系统101执行。这些非卷积运算的示例包括但不限于最大或平均合并、非线性激活、跨信道响应规范化、表示总CNN计算的一小部分但更适于未来算法进化的分类,或其他运算,例如Min、max、Sqrt、MAC、Butterfly、平均值、2-4SIMD ALU。在一些情况下,先前使用一个或多个DSP 138执行的操作现在使用用于深度学习加速结构的算术单元来执行。因此,由本文描述的处理器及其关联计算设备的改善的操作可以通过本文描述的算术单元结构来实现。

DSP 138可以与在子系统101中CA 104的操作同时(例如,并行地)操作,并且可以与数据传输同时(例如,并行地)操作,数据传输可以通过中断、邮箱或用于同时执行的一些其他同步机制来同步。

在各种实施例中,SoC存储器126包括用于存储对子系统101或DSP 138的组件可访问的数据的多个存储器组件。在至少一个实施例中,SoC存储器126被配置为层次型存储器结构。在一个非限制性示例中,SoC存储器126包括四个SRAM组,每个SRAM组具有1Mbyte的存储空间。

如本文所述,子系统101包括可重构的数据流加速器结构,该结构将高速相机接口连接用于深度学习加速的以下一项或多项:算术单元、传感器处理管道、裁剪器、颜色转换器、特征检测器、视频编码器、八通道数字麦克风接口、流式DMA和多个卷积加速器。

子系统101例如从相机接口或其他传感器接收传入数据(例如,图6中的图像数据,但是在不同实施例中的其他类型的流数据),并且将传入数据分发给子系统101的各个组件(例如,卷积加速器104、合并单元226、解压缩单元106、激活单元228等)和/或多个DSP 138中的一个或多个DSP,以采用CNN并且识别在传入图像中的对象。

子系统101经由单向链路经由可配置的、全连接的开关将数据流传输到不同种类的源或接收器组件,或从不同种类的源或接收器组件传输数据流。例如,可配置的全连接的开关可以经由直接存储器访问(DMA)将数据传输到SoC全局存储器126、I/O接口(例如,相机)和各种类型的加速器,例如CA 104和激活单元228。在一些情况下,基于从特定SoC配置工具接收到的信息在引导时配置子系统101,并且基于定义的CNN层和从一个或多个DSP138、应用处理器128等接收到的拓扑或信息,在运行时期间重新配置子系统101。

子系统101允许在运行时处定义可选择数目的同时虚拟处理链。子系统101还包括全特征的背压机制,以控制到框架的各个组件的数据流。子系统101被布置用于流多播操作,其使得能够在多个块实例处重新使用数据流。链路表控制整个卷积层的完全自主处理。多个加速器,分组或链接在一起,并行处理不同大小的特征映射数据和多个内核。将卷积加速器(CA)104分组以实现更大的计算实体,使得能够选择可用数据带宽、预算功率和可用处理资源的可接受的最佳平衡。每个CA 104包括行缓冲器,以与单个存储器访问并行地获取高达预定数目(例如,12)的特征映射数据字。进一步支持CA 104结构的是激活单元228,其根据二阶多项式近似来执行数学函数。

不是将用于特定激活功能的数据从子系统101传递到诸如DSP的单独设备,而是将数据保留在子系统101架构内,从而实现显著的速度和数据吞吐量增益。在每个CA(104)中,基于寄存器的内核缓冲器提供多个读取端口(例如,36个读取端口),而多个定点乘法累加(MAC)单元(例如,36个16位MAC单元)每时钟周期执行多个MAC操作(例如,每个时钟周期最多36个操作)。加法器树为每个内核列累积MAC结果。MAC操作的重叠、基于列的计算允许对多个MAC的特征映射数据进行可接受的最佳重新使用,从而降低与冗余存储器访问相关联的功耗。

内核集被分批地按顺序处理并且中间结果可以存储在SoC全局存储器126中。由单个CA 104实例可以处理各种内核大小(例如,高达12×12)、各种批量大小(例如,高达16)和并行内核(例如,高达4),但是任何大小的内核都可以通过累加器输入进行处理。

可配置的批处理大小和可变数目的并行内核使得在不同单元之间的可用输入和输出带宽共享、以及可用的计算逻辑资源能够实现可接受的最佳权衡。

针对每个CNN层确定在子系统101中CA 104的不同可接受的最佳配置。这些配置可以使用以CNN描述格式开始的全盘工具来确定或调整,例如Caffe’或TensorFlow。CA 104从解压缩单元106接收解压缩的内核数据。

子系统101可以被配置用于图像处理、音频处理、预测分析(例如,游戏技能、营销数据、人群行为预测、天气分析和预测、遗传图谱、疾病诊断和其他科学、商业、消费者等处理)或一些其他类型的处理;特别是包括卷积运算的处理。

子系统101还布置有多个可配置模块。流开关202提供设计时参数化、运行时可重构加速器互连框架,以支持基于数据流的处理链。子系统101包括一组子系统控制寄存器204。子系统101包括系统总线接口模块230、所选择数目的DMA引擎232(例如,DMA控制器)、所选择数目的外部设备216、218、220、所选额数目的处理模块210、212、214、所选择数目的卷积加速器(CA)104和所选择数目的激活功能加速器228(例如,1、2、4、8或其他数字)。

流开关202是由多个单向“流链路”形成的可重构单向互连结构。流链路被布置成将多位数据流从加速器、接口和其他逻辑模块传输到流开关202,以及从流开关202传输到加速器、接口,以及其他逻辑模块。

除了流开关202之外,子系统101还可以包括系统总线接口模块230。系统总线接口模块230提供到SoC 110的其他模块的接口。如图5的示例性实施例所示,子系统101耦合到辅助通信总线166。在其他情况下,子系统101可以耦合到主通信总线132或一些其他通信机制。控制信息可以通过子系统101的系统总线接口模块230单向或双向地传递。这种接口用于提供主机处理器(例如,DSP集群130的DSP、应用处理器128或另一处理器)对所有子系统控制寄存器204的访问,这些子系统控制寄存器204用于控制、操作或以其他方式指导框架的特定特征。在一些实施例中,每个DMA引擎232、外部设备接口216、218、220、处理模块208、210、212、卷积加速器104和激活功能加速器228具有到配置网络的接口,该配置网络具有一组定义的配置寄存器(例如,形成在子系统控制寄存器204中)。

子系统101包括多个DMA引擎232。在图6中,示出了十六个DMA引擎232,但是根据由半导体从业者在设计时作出的一个或多个选择,一些其他数目的DMA引擎可以包括在SoC110的其他实施例中。DMA引擎232被布置成针对输入数据流、输出数据流或输入和输出数据流提供双向信道。在这些情况下,大量数据被传入子系统101、从子系统101传出或传入和传出子系统101。例如,在一些情况下,一个或多个DMA引擎232用于从存储器或从产生大量视频数据的数据源设备(例如,高清(HD)摄像机)传递流式视频数据。一些或全部视频可以从源设备传入,从SoC全局存储器126传入或传出,等等。

在一个示例性实施例中,一个或多个DMA引擎232通过一个输入端口和一个输出流端口连接到流开关202。DMA引擎232可以配置为输入或输出模式中任一项。DMA引擎232可以被配置为打包数据并且将数据发送给主通信总线132、辅助通信总线166或一些其它地址位置上可访问的任何地址位置。DMA引擎232还可以附加地或备选地被配置为解压缩获取的数据并且将解压缩数据转换成数据流。

图6的子系统101包括设计时可选择、运行时可配置的多个外部设备216、218、220。外部设备216、218、220提供到产生(即,源设备)或消耗(即,接收器设备)数据的外部设备的连接。在一些情况下,通过外部设备接口244的数据包括流数据。在一些情况下,可以预先确定通过外部设备接口的流数据量。备选地,通过外部设备接口传递的流数据量可以是不确定的,并且在这种情况下,每当特定外部设备被启用并且如此定向时,外部设备可以简单地产生或消耗数据。通过外部设备216、218、220耦合的外部设备可以包括图像传感器、数字麦克风、显示监视器或其他源和接收器设备。在图6中,外部设备接口包括数字视觉接口(DVI)外部设备接口、第一图像传感器接口和图像信号处理器(ISP)外部设备接口218、以及第二图像传感器接口和ISP外部设备接口220。还考虑了其它接口,尽管为了图示的简单性,仅示出了三个外部设备216、218、220。

多个处理模块210、212、214集成在子系统101中。为了简单起见,示出了三个处理模块210、212、214,但是处理模块210、212、214的另一所选择数目(例如,两个、四个、八个、十六个)也可以由半导体从业者在设计时集成在子系统101中。MPEG/JPEG处理模块210被布置成执行特定视频(即MPEG)处理和特定图像(即JPEG)处理。H264处理模块212被布置成执行特定的视频编码/解码操作。颜色转换器处理模块214被布置成对某些多媒体数据执行基于颜色的操作。

在许多情况下,DMA控制器232、外部设备216、218、220、处理模块210、212、214、卷积加速器104、激活功能加速器228和集成在子系统101中的其他模块是半导体从业者在设计时从库中选择的IP模块。半导体从业者可以指定模块的数目、特定模块的特征、总线宽度、功率参数、布局、存储器可用性、总线访问和许多其他参数。

在图6的可配置加速器框架(子系统)101中,表示多个卷积加速器104。在不同的实施例中可以提供不同数目的CA。卷积加速器104的数目和每个卷积加速器104中可用的特定特征在某些情况下基于半导体从业者在设计时选择的参数值。

CA 104是具有所选择数目(例如,一个、两个、四个、八个)的输入和输出流链路端口的数据处理单元。一个或多个配置寄存器(例如,一组配置寄存器)被布置成控制CA 104的操作。在一些情况下,配置寄存器被包括在子系统控制寄存器204中,并且在这些或其他情况下,某些配置寄存器形成为CA 104的一部分。

通常,每个CA 104要么消耗数据要么生成数据,或者消耗数据和生成数据二者。消耗的数据通过可重构流开关202的第一流链路,并且流化的数据通过流开关202的第二流链路。在至少一些实施例中,CA不直接访问由主通信总线132、次通信总线166或其他总线地址可访问的存储器地址空间。然而,如果需要对在系统总线上传递的数据进行随机存储器访问,则CA 104还可以使用可选的总线端口接口,其可以沿着系统总线接口模块230的线路,其用于包括允许DMA引擎访问在系统总线上的存储器位置的若干事项。如上所述,一些CA104实现方式是库的一部分,库可以在其他子系统101实施例中用于在全局系统定义文件中简单地实例化CA 104。

一个或多个激活功能加速器模板模块也可以被包括在IP模块库中。这里,配置寄存器的预定义集合可以进一步扩展,以提供用于所包括的算术单元的配置的参数存储。这些参数与任何期望数目的多路复用器电路、乘法器电路、加法器电路、临时存储电路、数据移位电路和其它电路的配置有关。

每个激活函数加速器228专用于执行以分段二阶多项式近似(例如等式1中的公式)的形式表示的激活函数。标量数据、矢量数据、流数据、常量数据、交织数据和在子系统101框架内可用的任何其他期望数据可以作为操作数传递到激活函数加速器228,并且生成的结果数据将从相应的加速器传递出去。传递到激活功能加速器228的数据可以来自可重构流开关202、在子系统101框架内部或外部的存储器、传感器或特定接口,或者来自一些其他源。沿着这些线,在一些情况下,这些类型的数据源中的每个数据源都可以消耗在加速器单元中生成的数据。如本文所讨论的,一些激活功能加速器228实现方式是库的一部分,库可以在其他子系统101实施例中用于在全局系统定义文件中简单地实例化加速器单元。

机器学习系统的系统级程序员希望能够灵活地为其特定的实现方式选择所需的编程模型。为了支持这种高水平的灵活性,子系统101布置有可重构流开关202。如本发明所述,流开关202充当数据传输结构,以改善逻辑块(IP)重新使用、数据重新使用以及其他组件和逻辑的重新使用,这反过来允许减少片内和片外存储器通信量,并且提供了更大的灵活性,以在不同的应用用例中利用相同的逻辑块。被集成在流开关202中的是多个单向链路,这些单向链路被布置成经由可配置的全连接的开关将数据流传输到不同种类的数据源、数据接收器以及诸如直接存储器访问(DMA)控制器、I/O接口(例如,相机)以及各种类型的加速器的数据源和数据接收器,从不同种类的数据源、数据接收器以及数据源和数据接收器传输数据流,以及将数据流传输到不同种类的数据源、数据接收器以及数据源和数据接收器并且从不同种类的数据源、数据接收器以及数据源和数据接收器传输数据流。

传输的数据可以采用任何期望的格式,例如光栅扫描图像帧流、面向宏块的图像流、音频流、原始数据块、输入或输出激活函数值流或任何其他格式。流开关202还可以沿着由每个单元转发到处理控制信息的一个或多个目标单元或者多个目标单元的处理链来传输消息、命令或其他类似的控制信息。控制信息可用于向事件发送信号、重新配置处理链本身或指导其他操作。

子系统101通过系统总线通信地连接到ARM Cortex 240、内部存储器242、外部存储器接口244和编码器241。或者,编码器241可以在SoC 110的外部。

图7是根据实施例的方法700的流程图。在702处,方法700包括使用卷积神经网络的解压缩单元接收编码的内核数据,其中编码的内核数据包括用于矢量量化码本的索引数据。在704处,方法700包括将矢量量化码本存储在解压缩单元的查找表中。在706处,方法700包括通过使用索引数据从查找表中检索码矢量,来使用解压缩单元生成解压缩的内核数据。在708处,方法700包括在卷积神经网络的卷积加速器处接收特征数据。在710处,方法700包括使用卷积加速器从解压缩单元接收解压缩的内核数据。在712处,方法700包括使用卷积加速器对解压缩的内核数据和特征数据执行卷积运算。

图8是根据一个实施例的方法800的流程图。在802处,方法800包括利用机器学习过程训练卷积神经网络。在804处,方法800包括利用机器学习过程生成用于卷积神经网络的卷积层的内核数据。在806处,方法800包括通过使用卷积神经网络外部的编码器对内核数据执行矢量量化处理,来生成包括索引数据和码本数据的编码内核数据。在808处,方法800包括在机器学习过程之后的卷积神经网络的操作期间,将编码的内核数据提供给卷积神经网络的解压缩单元。在810处,方法800包括将矢量量化码本存储在解压缩单元的查找表中。在812处,方法800包括通过使用索引数据从查找表中检索码矢量,来使用解压缩单元生成解压缩的内核数据。在814处,方法800包括将解压缩的内核数据提供给卷积层。

与实现卷积神经网络的电子设备相关的更多细节可在2019年2月20日提交的美国专利申请公开2019/0266479、2019年2月20日提交的美国专利申请公开No.2019/0266485和2019年2月20日提交的美国专利申请公开No.20190266784中找到,其中每一个申请都通过整体引用并入本文。

可以组合上述各种实施例以提供进一步的实施例。根据上述详细描述,可以对实施例进行这些和其他改变。通常,在以下权利要求中,所使用的术语不应被解释为将权利要求限定于说明书和权利要求中公开的特定实施例,而应被解释为包括所有可能的实施例以及这些权利要求有权获得的等效物的全部范围。因此,权利要求不受本公开的限制。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号