基于点积的处理元件的制作方法

文档序号:17286671发布日期:2019-04-03 03:37阅读:211来源:国知局
基于点积的处理元件的制作方法

本公开总体涉及集成电路,例如,现场可编程门阵列(fpga)。更具体而言,本公开涉及在集成电路上实现的点积处理。



背景技术:

本部分旨在向读者介绍可能与本公开的各个方面相关的本领域的各个方面,本公开的各个方面在下文中描述和/或受权利要求书保护。这种论述被认为是有助于为读者提供背景信息以便于更好地理解本公开的各个方面。因此,应当理解,要在这个意义上来阅读这些文字描述,而不是作为对现有技术的承认。

在数字信号处理算法(例如,音频/视频编解码器、视频或音频处理等)中常常使用矢量点积处理。当在包括可重新配置器件,例如现场可编程门阵列(fpga)的集成电路器件上实现数字信号处理器(dsp)时,点积处理结构的物理面积和速度是确保集成电路器件在尺寸和速度方面都适合要执行的任务的因素。不过,点积计算可以为每种功能使用个体dsp和存储器资源,这样增大了路由长度,从而可能还提高面积和性能。



技术实现要素:

下文阐述本文公开的某些实施例的概要。应当理解,给出这些方面仅仅是为了给读者提供这些特定实施例的简明概要,并且这些方面并非旨在限制本公开的范围。实际上,本公开可涵盖下文可能未阐述的多个方面。

本实施例涉及使用可重新配置器件,例如现场可编程门阵列(fpga)增强点积处理的性能的系统、方法和器件。具体而言,粗糙化点积处理单元的宏可以用于高效率地利用可重新配置器件中的空间,同时确保满意的性能。此外,通过将可重新配置器件组织成不使用集成电路中可以使用的更多通用路由路径而执行点积处理的单元,其中独立地使用不同的数字信号处理块,有可能众多长路径会对集成电路的性能造成负面影响。

对上述特征的各种改进可能相对于本发明的各个方面而存在。也可在这些各个方面中加入其他特征。这些改进和其他特征可以单独存在,也可以任何组合的形式存在。例如,下面讨论的与一个或多个所示实施例相关的各种特征可单独地或以任何组合形式结合到本公开上述方面的任何一个中。同样,上述简要概要仅旨在使读者熟悉本发明实施例的特定方面和上下文,并不限制要求保护的主题。

附图说明

在阅读以下详细描述并参考附图时,可以更好地理解本公开的各个方面,其中:

图1是根据实施例利用点积处理的系统的框图;

图2是根据实施例可以包括对实施点积处理有用的逻辑的可编程逻辑器件的框图;

图3是示出根据实施例的点积处理电路的框图;

图4是示出根据实施例使用个体数字信号处理单元实现的图3的点积处理电路的框图;

图5是示出根据实施例使用粗糙化点积处理单元实现的图3的点积处理电路的框图;

图6是示出根据实施例具有被配置为生成点积的运行和的累加器的图5的点积处理电路的框图;

图7是示出根据实施例具有存储器高速缓存的图5的点积处理电路的框图;

图8是根据实施例使用粗糙化点积处理单元计算点积的过程。

具体实施方式

下文将描述一个或多个具体实施例。为了提供这些实施例的简要描述,本说明书中未描述实际实施的所有特征。应当认识到,在任何这种实际实施的开发中,像任何工程学或设计项目中那样,必须要做出众多实施特定的决策以实现开发者的具体目标,例如符合可能随实施而变化的与系统相关和与事务相关的约束条件。此外,应当理解,此类开发工作有可能复杂且耗时,但是对于受益于本公开的本领域的普通技术人员而言,其仍将是设计、加工和制造的常规工作。

本公开描述了在包括可重新配置器件的集成电路上使用增强型点积处理元件(pe)的技术。这样获得的pe架构很适合关联性计算,例如矩阵乘法或卷积,并可以链接在一起以实现脉动阵列。该技术还基于将点积粗糙化到更大尺寸,获得更有效率的资源利用。该技术还有助于总体的计算机辅助设计(cad)流程,因为粗糙化点积可被作为大宏放置,只需要放置更少的原子且形成更少路由。粗糙化技术支持数据交织技术,以能够进行重度流水线化和高速缓存,实现数据重复利用。粗糙化还改善了点积的映射,以减少所用的数字信号处理(dsp)单元的总数。此外,根据要实施的矩阵尺寸,可以调节点积粗糙化尺寸,以至少部分地基于矩阵尺寸获得有效率的结果。例如,针对被点处理的矩阵的矢量中每个元素,可以包括dsp单元。具体而言,在一些实施例中,可以使用点积处理宏来实现四矢量点积,该宏在单个宏中的列中包括四个dsp单元,以实现四个矢量的点积处理。

具体而言,点积pe利用加法器树和乘法输入来实现高效率的点积计算。对点积进行粗糙化降低了资源需求,因为可以利用相邻dsp之间的专用高速路由。对点积进行粗糙化还可以简化放置和路由问题,因为可以将点积布局为大的连续块,由此减少放置对象和通用路由的数量。尽管在可重新配置设备,例如具有现场可编程门阵列(fpga)织构的可编程序逻辑器件的语境中简要描述了本公开的技术,但这意在例示而非限制。实际上,本公开的点积电路可以在其他集成电路中实现。诸如专用集成电路(asic)、微处理器、存储装置、收发器等其他类型的集成电路也可以使用本公开的点积电路。

考虑到以上内容,图1示出了系统10的框图,系统10包括可以减小典型用于此类实施方式的逻辑面积和/或增大速度的点积处理操作。如上所述,设计者可能希望在集成电路,例如可重新配置的集成电路12,如现场可编程门阵列(fpga)上实现功能。设计者可以使用设计软件14,例如alteratm的quartus的版本,实现将被编程到ic12上的电路设计。设计软件14可以使用编译器16产生对集成电路12进行编程的低级电路设计内核程序18,有时被称为程序对象文件或比特流。亦即,编译器16可以向ic12提供代表电路设计的机器可读指令。例如,ic12可以接收描述应当存储于ic中的硬件实施方式的一个或多个内核程序18。在一些实施例中,可以在集成电路12上实现点积处理操作20。例如,可以使用点积处理操作20对单精度浮点数、双精度浮点数或其他适当的用于点积处理的对象进行运算。如下文将更详细所述,点积处理操作20可以被粗糙化成大宏,可以使用更低数量的通用路由资源(或非dsp块资源)将所述大宏插入设计中。例如,可以如下所述组合针对单精度浮点加法的两个dsp块,以形成双精度浮点加法器。

现在转到ic12的更详细论述,图2示出了ic器件12,其可以是可编程逻辑器件,例如现场可编程门阵列(fpga)40。出于本示例的目的,器件40被称为fpga,但应当理解,该器件可以是任何类型的可重新配置器件(例如,专用集成电路和/或专用标准产品)。如图所示,fpga40可以具有输入/输出电路42,用于经由输入/输出管脚44驱动信号离开器件40并从其他器件接收信号。可以使用互连资源46,例如全局和本地垂直和水平导电线和总线,以在器件40上路由信号。此外,互连资源46可以包括固定互连(导电线)和可编程互连(即,相应的固定互连之间的可编程连接)。可编程逻辑48可以包括组合和顺序逻辑电路。例如,可编程逻辑48可以包括查找表、寄存器和复用器。在各实施例中,可编程逻辑48可以被配置成执行自定义逻辑功能。与互连资源相关联的可编程互连可以被视为可编程逻辑48的一部分。如下文更详细所述,fpga40可以包括能够对fpga进行部分重新配置的可调整逻辑,从而可以在fpga40的运行时间期间添加、去除和/或更换内核。

诸如fpga40的可编程逻辑器件可以包含可编程逻辑48之内的可编程元件50。例如,如上所述,设计者(例如,客户)可以对可编程逻辑48进行编程(例如,配置)以执行一种或多种期望功能。例如,可以通过使用掩模编程布置配置其可编程元件50来对一些可编程序逻辑器件进行编程,所述配置是在半导体制造期间执行的。在已经完成半导体制造操作之后,例如使用电编程或激光编程对其可编程元件50进行编程,从而配置其他可编程序逻辑器件。通常,可编程元件50可以基于任何适当的可编程技术,例如熔丝、反熔丝、电可编程只读存储器技术、随机存取存储单元、掩模编程元件等。

很多可编程序逻辑器件是以电的方式编程的。利用电编程布置,可编程元件50可以包括一个或多个逻辑元件(导线、门、寄存器等)。例如,在编程期间,使用管脚44和输入/输出电路42向存储器52中加载配置数据。在一些实施例中,存储器52可以被实现为随机存取存储器(ram)单元。在这里描述基于ram技术使用存储器52仅仅意在作为一个示例。此外,存储器52可以分布于器件40中(例如,作为ram单元)。此外,因为在编程期间为这些ram单元加载配置数据,所以有时将它们称为配置ram单元(cram)。存储器52可以提供对应的静态控制输出信号,其控制可编程逻辑48中关联逻辑部件的状态。例如,在一些实施例中,可以将输出信号施加到可编程逻辑48之内的金属氧化物半导体(mos)晶体管的栅极。在一些实施例中,可编程元件50可以包括实施公共操作的dsp块,例如,使用dsp块实现的点积处理元件。

可以使用任何适当的架构来组织fpga40的电路。例如,可以在更大的可编程逻辑区域的一系列行和列中组织fpga40的逻辑,所述更大的可编程逻辑区域中的每一个可以包含多个更小的逻辑区域。可以由互连资源46,例如关联的垂直和水平导体,来互连fpga40的逻辑资源。例如,在一些实施例中,这些导体可以包括跨越基本所有fpga40的全局导线,跨越器件40的部分的分数线,例如,半线或四分之一线,特定长度(例如,足以互连几个逻辑区域)的交错线,更小的局部线或任何其他适当的互连资源布置。此外,在其他实施例中,fpga40的逻辑可以布置于更多层级或层中,其中互连多个大区域以形成逻辑的更大部分。再者,一些器件布置可以使用以行和列之外的方式布置的逻辑。

如上所述,fpga40可以允许设计者生成能够执行并进行定制功能的定制设计。每种设计都可以让其自己的硬件实施在fpga40上被实现。这些硬件实施可以包括使用可编程元件50的dsp块的浮点运算。

点积可以被从代数上定义为进行点积计算的矢量中对应项的乘积之和。例如,等式1在代数上示出了两个4矢量点积的点积表达式:

其中a1、a2、a3和a4是a矢量中的元素,b1、b2、b3和b4是b矢量中的元素。例如,a矢量中的元素可以对应于一个时间元素和三个空间元素。b矢量中的元素可以是另一矢量、等价于a矢量元素的一些标量值、或一些其他运算,例如洛伦兹变换。

图3示出了4矢量点积电路100。将第一矢量提交到电路100作为其构成元素102、104、106和108,并将第二矢量提交为与第一矢量进行点积的构成元素组110、112、114和116。第二元素组110、112、114和116可以是不同的值或可以是相同的值。例如,第二元素组110、112、114和116可以是第二四矢量。将每对对应元素提交到将各元素相乘在一起的相应乘法器。具体而言,在乘法器118中将元素102和110乘在一起,以形成积;将元素104和112在乘法器120中乘在一起以形成积;将元素106和114在乘法器122中乘在一起以形成积;并将元素108和116在乘法器124中乘在一起以形成积。然后将积加在一起。在一些实施例中,可以在单个4输入加法器中将积加在一起。此外或替代地,可以使用顺序加法将积加在一起,顺序加法在每轮加法中将积的数量减半,这可能继续到找到总和,总和表示第一矢量和第二矢量的叉乘。例如,在加法器124中将元素102和110的积以及元素104和112的积加在一起;在加法器126中将元素106和114的积和元素108和116的积加在一起。然后在另一加法器128中将来自加法器124和126的和加在一起。在一些实施例中,电路100包括寄存器130,寄存器130用于确保在处理中使点积计算的相应部分基本同步。寄存器130还确保被计算的数据被正确转移。加法器128的输出为点积132。

在一些实施例中,可以将点积132提交到累加器133以形成运行和。累加器133包括加法器134,该加法器134将最近的点积与运行和136相加。换言之,累加器133接收点积并将其加到所有先前点积,从而可以计算点积的运行和。

图4示出了电路138,电路138可以使用数字信号处理(dsp)块140、142、144和146在可重新配置器件中实现图3的点积电路100。如图所示,dsp块140、142、144和146中的每一个包括加法器(例如,加法器124、126、128和137)和乘法器(例如,乘法器118、120、122和123),对它们进行路由,以提供4矢量点积处理。如图所示,一个或多个dsp块(例如,dsp块144)的一部分(例如,部分148)保持未用。此外,dsp块140、142、144和146之间的路由150相对于dsp块140、142、144和146内部的路由可能很长。这可能是由于在ic12之内的相对分散位置布置dsp块140、142、144和146。这样的路由可能导致使用电路138的点积计算性能下降。为了减少这样的路由,点积处理可以被粗糙化成较大的宏,也称为原子,其可以被设计成可重新配置器件,以减少dsp块之间的路由。

图5示出了电路158,其包括粗糙化的4矢量点积处理宏,其可以被添加到集成电路,例如可重新配置器件。电路158包括电路100的全部计算。不过,与电路138相反,电路158包括dsp列160,其包括dsp块162、164、166和168。dsp块162、164、166和168位于dsp列160中,以使用可重新配置器件中的通用路由来减少dsp块间的路由,由此增大器件性能和/或面积消耗。具体而言,电路158仅包括单个通用路由170。类似于dsp块140、142、144和146,dsp块162、164、166和168中的每一个包括加法器和乘法器。在图5中所示的4元素矢量点积的特定实施例中,dsp块162的一部分172未被使用。

在一些实施例中,可以将这个部分172用于简单4矢量点积计算外部的计算。例如,图6示出了电路173,电路173使用该部分172来实现累加器以发现点积的运行和。具体而言,加法器147用于经由累加器路由174将先前点积132加到元素102和110的积。然后将先前点积132的这个和与元素104和112的积相加。这一额外的相加以运行和为交换,增加了一个更大程度的延迟。

图7示出了高速缓存累加器电路178,其包括存储先前点积的累加器高速缓存180。累加器高速缓存180包括存储器列182。存储器列182包括统称为存储块184-190的多个存储块184、186、188和190。存储块184-190可以包括任何适当的存储块,例如,公司的m20k存储块。存储块184-190可以存储较大量的和。例如,存储块184-190可以存储两个运行和的任何指数,例如128、256、512、1024、2048等。每个和都可以相对于图5的电路158延迟而增大电路178的延迟,以交换对应于先前点积的额外求和。例如,存储2048个和可以将延迟增大2048。

图8示出了用于使用集成电路计算点积的过程200。过程200包括将电路组织成用于点积处理的点积处理单元(框202)。点积处理单元包括两个或更多数字信号处理快,以减少如果使用个体数字信号处理块时点积处理中使用的通用路由量。点积处理单元是粗糙化点积过程,包括基于使用点积正被处理的矩阵(或个体矢量)大小的若干数字信号处理单元。例如,可以包括针对四矢量(即,具有四个构成元素的矢量)的四个数字信号处理单元,并可以包括针对八矢量的八个数字信号处理单元。这一点积处理单元可以用于产生集成电路(框204),其可以包括例如对可编程逻辑器件或asic进行编程。如前所述,粗糙化点积处理使得能够比单独使用的独立配置的数字信号处理单元使用更少通用路由,因为在单独使用的数字信号处理单元中使用更多路由和更长路由。换言之,通过创建可以根据点积矩阵大小设定大小的单个组块,可以提高实现点积处理的集成电路器件的性能。

尽管本公开中阐述的实施例可能容易做出各种修改和替代形式,但具体实施例已经通过举例在附图中示出并已经在本文中更详细描述。然而,应当理解,本公开并非意在限于公开的特定形式。本公开要覆盖落在由以下所附权利要求定义的本公开精神和范围之内的所有修改、等价要件和替代要件。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1