首页 / 专利库 / 电脑零配件 / 中央处理器 / 算术逻辑单元 / 可编程平台上的加速器架构

可编程平台上的加速器架构

阅读:756发布:2020-05-13

专利汇可以提供可编程平台上的加速器架构专利检索,专利查询,专利分析的服务。并且可编程集成 电路 设备上的 加速 处理器结构包括处理器以及多个可配置数字 信号 处理器(DSP)。每个可配置DSP都包括电路 块 ,电路块又包括多个乘法器。加速处理器结构还包括:第一总线,以将数据从处理器传输至可配置DSP;以及第二总线,以将数据从可配置DSP传输至处理器。,下面是可编程平台上的加速器架构专利的具体信息内容。

1.一种可编程集成电路设备上的加速处理器结构,所述加速处理器结构包括:
处理器;
多个可配置数字信号处理器DSP,每个可配置DSP均包括电路,其中所述电路块包括多个乘法器,其中每个可配置DSP被配置为通过在所述多个乘法器之间配置至少一个数据连接来使用或旁路所述多个乘法器;
第一总线,被配置为将指令从所述处理器传输至所述可配置DSP;
第二总线,被配置为将处理数据从所述可配置DSP传输至所述处理器;以及数据旋转电路装置,耦合至所述多个可配置DSP和所述第二总线,其中所述数据旋转电路装置被配置为针对将在对准块中访问的所述处理数据,对准所述处理数据的存储地址。
2.根据权利要求1所述的加速处理器结构,包括算术逻辑单元ALU,被配置为对所述电路块的数据输入执行算术操作,以生成路由至所述电路块的一个数据输入的ALU输出,其中所述可配置DSP包括:
第一加法器,被配置为将来自所述多个乘法器的乘法器输出相加;以及
第二加法器,被配置为将数据输入添加至所述电路块以得到加法器结果,并且将所述加法器结果输出至所述多个乘法器中的至少一个乘法器,其中所述多个乘法器、所述第一加法器和所述第二加法器被配置为互连以选择性地路由所述电路块内的数据连接。
3.根据权利要求2所述的加速处理器结构,包括高速缓存存储单元,耦合至所述ALU,其中所述高速缓存存储单元被配置为在所述电路块的操作期间存储处理数据。
4.根据权利要求3所述的加速处理器结构,包括数据对准单元,耦合至所述高速缓存存储单元,其中所述数据对准单元被配置为针对将在对准块中访问的处理数据对准存储在所述高速缓存存储单元中的所述处理数据的存储地址。
5.根据权利要求2所述的加速处理器结构,包括寄存器文件,耦合至所述电路块,其中在所述电路块的操作期间,所述寄存器文件寄存来自所述电路块的输出数据并且将寄存的所述输出数据作为数据输入的一部分路由至所述电路块。
6.根据权利要求5所述的加速处理器结构,其中当所述可配置DSP操作为矢量处理器的一部分时,所述寄存器文件接收矢量形式的数据。
7.根据权利要求6所述的加速处理器结构,其中至少一个高速缓存存储单元设置在所述多个可配置DSP中的所述可配置DSP的每一个内。
8.根据权利要求1所述的加速处理器结构,其中所述第二数据总线接收来自位于一个所述可配置DSP内的高速缓存存储单元的数据,并将所述处理数据传输至所述处理器。
9.根据权利要求8所述的加速处理器结构,其中当数据加载指令停滞时,所述高速缓存存储单元保持用于存储丢失数据加载的存储地址的加载丢失队列,而不防止执行其他数据加载指令。
10.根据权利要求8所述的加速处理器结构,包括至少一个数据对准单元,针对将在对准块中访问的处理数据,对准存储在所述高速缓存存储单元中的处理数据的存储地址。
11.根据权利要求1所述的加速处理器结构,其中所述处理器包括硬件,被配置为执行用于所述多个可配置DSP的配置或操作的获取、解码和分派矢量单指令多数据(SIMD)指令中的任何一个。
12.根据权利要求1所述的加速处理器结构,其中所述加速处理器结构构建为基于列的结构,其具有一个或多个加速处理器的第一列、一个或多个嵌入式存储单元的第二列、或者一个或多个逻辑块的第三列。
13.根据权利要求12所述的加速处理器结构,其中所述一个或多个加速处理器的第一列具有基于行的结构,其具有用于所述处理器的第一行以及用于所述多个可配置DSP的多行。
14.根据权利要求6所述的加速处理器结构,其中所述加速处理器结构构建为具有多个互连节点的网状互连结构,并且所述多个互连节点中的第一节点包括所述加速处理器结构。
15.根据权利要求14所述的加速处理器结构,其中来自所述多个互连节点的第二节点包括存储单元,并且所述网状互连结构具有针对所述网状互连结构中的每一列限定的存储地址。
16.根据权利要求1所述的加速处理器结构,其中所述多个可配置DSP被设置用于并行处理,使得所述多个可配置DSP支持N个线程的多线程执行。
17.根据权利要求16所述的加速处理器结构,其中每N个循环重新访问用于N个线程中的第一线程的停滞指令,而不影响用于所述N个线程中的第二线程的指令的执行。
18.根据权利要求17所述的加速处理器结构,其中所述N个线程中的每个线程都具有独立的程序计数器以及与所述多个可配置DSP中的对应可配置DSP相关联的独立寄存器文件。
19.一种用于配置加速处理器结构的方法,所述加速处理器结构用于可编程集成电路设备,所述方法包括:
提供处理器;
提供多个可配置数字信号处理器(DSP),其中至少一个所述可配置DSP包括:
电路块,包括:
多个乘法器;
第一加法器,用于将来自所述多个乘法器的乘法器输出相加;和
第二加法器,用于将数据输入添加至所述电路块以得到加法器结果,并且将所述加法器结果输出至所述多个乘法器中的至少一个乘法器;
配置所述多个乘法器、所述第一加法器和所述第二加法器之间的互连,以选择性地路由所述多个可配置DSP中的至少一个可配置DSP的所述电路块内的数据连接;以及配置算术逻辑单元(ALU),所述算术逻辑单元对所述电路块的数据输入执行算术操作,以生成路由至所述至少一个可配置DSP的所述电路块的一个数据输入的ALU输出。
20.根据权利要求19所述的方法,其中提供所述处理器包括实例化所述处理器。

说明书全文

可编程平台上的加速器架构

[0001] 相关申请的交叉参考
[0002] 本申请要求2014年5月29日提交的待决共同受让的美国临时申请公开第62/004,691号的权益,其内容以引用的方式引入本申请。

技术领域

[0003] 本发明涉及托管和操作多个异构加速器的以处理器为中心的可编程电路结构。

背景技术

[0004] 加速器包括硬件来帮助处理器执行特定功能。加速器可以比在通用中央处理单元(CPU)上运行的软件快速地执行专用功能,因为加速器可以被设计用作于计算密集任务。示例性加速计可以包括数字信号处理器(DSP)。例如,加速器可以包括一个或多个DSP,其接收并处理来自加速器外的存储单元的数据,然后将处理后的数据输出至加速器外的存储单元。当数据量较大时,DSP块外的存储器访问尝试可能无效,甚至丢失。以这种方式,任务执行可以停止,并且在DSP块内可以防止后续指令。

发明内容

[0005] 根据本发明的实施例,引入了具有嵌入式算术逻辑单元(ALU)的可配置DSP。可配置DSP可以进一步包括位于可配置DSP内的嵌入式数据高速缓存器和对准单元以提高存储器访问性能。多个可配置DSP可以在可编程电路设备上的并行结构中进行操作。可配置DSP块可以集成到矢量单指令多数据(SIMD)架构中,其提供前端多线程处理器控制以及数据存储器。此外,硬件高速缓存相干(coherent)存储器可以包括在矢量架构中以允许DSP块中的有效数据移动并且减小用于从外部存储器对数据的恒定访问尝试。
[0006] 因此,根据本发明的实施例,提供了一种可编程集成电路设备上的加速处理器结构。加速处理器结构包括处理器和多个可配置DSP。每个可配置DSP都包括电路块,其又包括多个乘法器。加速处理器结构还包括第一总线以将数据从处理器传送至可配置DSP,并包括第二总线以将数据从可配置DSP传送至处理器。
[0007] 根据本发明的另一实施例,提供了一种配置用于可编程集成电路设备的加速处理器结构的方法。该方法包括提供处理器,并且提供多个可配置DSP。至少一个可配置DSP包括电路块,其包括多个乘法器、用于将来自多个乘法器的乘法器输出相加的第一加法器以及用于将数据输入添加至电路块以得到加法器结果的第二加法器,并且将加法器结果输出至多个乘法器中的至少一个乘法器。该方法还包括:配置多个乘法器、第一加法器和第二加法器之间的互连以选择性地路由电路块内的数据连接。该方法还包括:配置对电路块的数据输入执行算术操作的ALU以生成被路由至电路块的一个数据输入的ALU输出。
[0008] 根据本发明的另一实施例,还提供了其他技术方案。附图说明
[0009] 结合附图,本发明的其他特征、其特性和各种优势将从以下详细描述中变得清楚,其中,类似的符号表示类似的部分,并且其中:
[0010] 图1示出了具有多个加速器的可编程电路101的示例性框图
[0011] 图2至图3示出了可编程电路设备上的示例性加速器(或加速处理器)结构(其可以置于可编程电路上与图1中的框107相似的位置处)的示例性框图;
[0012] 图4示出了作为可编程电路的构造块的基于列的扇区结构400的示例性框图;
[0013] 图5示出了用于扇区处理器的网状互连逻辑500的示例性框图;
[0014] 图6至图7示出了使用与图2中讨论的200类似的加速器的多线程执行的方面的示例性框图;
[0015] 图8示出了PE 800(可以配置为图2中的204、图6中的602等)的示例性结构的示例性示意图;
[0016] 图9至图10示出了用于在图2中的FPGA 200上实施MCAPI的多核SOC软件堆叠结构的示例性框图;
[0017] 图11示出了可编程电路的对准单元(例如,类似于图6中的603)处的数据对准的方面的示例性框图;
[0018] 图12是示出配置加速处理器(可配置为图2中的加速器200)的方面的示例性逻辑流程图
[0019] 图13是采用结合本发明的可编程逻辑设备的示例性系统的简化框图;
[0020] 图14是示出了可利用机器可执行程序编码的磁性数据存储介质1400的截面,该机器可执行程序可由诸如前述个人计算机或者其他计算机或类似设备的系统执行;以及[0021] 图15示出了也可利用这种机器可执行程序编码的光学可读数据存储介质1510的截面,该机器可执行程序可以通过诸如前述个人计算机或者其他计算机或类似设备的系统来执行。

具体实施方式

[0022] 除非另有指定,否则以下的讨论基于诸如现场可编程阵列(FPGA)的可编程集成电路设备的示例。然而,应该注意,本文公开的主题可以用于任何种类的固定或可编程设备,包括但不限于专用集成电路(ASIC)。
[0023] 图1示出了具有多个加速器的可编程电路101的示例性框图。例如,可编程电路101可以是专用标准产品(ASSP)或FPGA。可编程电路101具有嵌入式中央处理单元(CPU)102,其与多个加速器107a-n通信并控制这些加速器。嵌入式CPU 102可以包括用户程序模块103,其与运行时间库模块104通信以执行软件指令。例如,用户程序模块103和运行时间库模块104可以利用各种API来实施,诸如但不限于开放计算语言(OpenCL)API等。嵌入式CPU 102可以经由芯片上网络(NoC)部件106从双数据率(DDR)存储单元105得到软件指令。NoC 106还可以与加速器107通信来提供用于加速器107对DDR 105的访问。
[0024] 如框107中进一步示出的,加速器107a-n可以包括直接存储访问(DAM)单元108,其与多个嵌入式存储块109a-n连接,并且每一个嵌入式存储块109a-n连接至DSP 110a-n。DSP块110a-n可以通过结构随机存取存储(CRAM)单元112来配置,如图1所示,CRAM单元112可设置在FPGA块101上的加速器外。
[0025] 图2至图3示出了可编程电路设备上的示例性加速器(或者加速处理器)结构(例如,可置于可编程电路上与图1的框107类似的位置处)的示例性框图。加速器200可以包括控制处理器201。控制处理器201可以包括一系列功能单元,诸如但不限于存储由控制处理器201执行的指令的指令存储器201a(IMEM)、解码器201b、标量寄存器文件201c、执行IMEM 201a中的指令的执行模块201d以及加载或存储来自加速器200中的数据存储器(例如,数据旋转单元209和数据存储器(DMEM)210)的指令的加载/存储单元201e。控制处理器201可以执行处理元件(PE)指令的获取、解码和分派。
[0026] 控制处理器指令的执行可以通过一系列流线寄存器202来传输,并且在矢量SIMD处理元件(PE)204(其可以包括硬化DSP)处进行处理。例如,SIMD PE 204可以由例如从加利福尼亚圣何塞的Altera公司的 FPGA的可用类型的特殊硬DSP块来构件,并且每一个都具有本地寄存器文件205、算术逻辑单元(ALU)206、乘法器207和加载/存储单元208(例如,32位整数)来与存储数据交互,诸如存储数据旋转单元209和DMEM 210。存储元件209-210可以由嵌入式存储器来构建。系统高速缓存器211用于从SIMD PE 204外的元件加载数据,诸如经由NoC 212来自系统存储管理单元(SMMU)213的数据存储访问指令,来自存储器216的软件指令或者来自主CPU 215的处理器发布指令。SIMD PE 204可以执行32位整数和单精度浮点数据用于数据处理。控制处理器201和SIMD PE 204可以通过一个或多个数据传送总线来连接,例如,一个数据传送总线,以将指令从控制处理器210传送至SIMD PE 204,并且另一个数据传送总线将处理数据从SIMD PE 204传送至控制处理器201。SIMD PE 
204可以经由加载/存储元件208加载处理数据并且将处理数据发送至数据传送总线。
[0027] 在图2所示的相应示例中,加速器200可以在应用编程接口(API)协议下进行编程。例如,内核220可以被编译并且向下发送给由SIMD PE 204执行的PE指令集架构,并且可以从诸如209-210的存储单元加载和执行指令集。仅通过示例,使用开放计算语言(OpenCL)API,以C编程语言来写入220处的示例性代码段。可选地,可使用其他应用编程接口(API)协议,诸如开放多处理(OpenMP)、多核通信应用编程接口(MCAPI)等。用于内核220的代码段的附加或可选代码示例可以包括C的代码段,诸如:
[0028] for(i=0;i<64;i++)
[0029] c[i]=a[i]+b[i];
[0030] 其可以向下编译到该标量汇编代码级别(在这种情况下可要求1+9×64=577指令):
[0031] LI R4,64
[0032] Loop:
[0033] LD F0,0(R1)
[0034] LD F2,0(R2)
[0035] ADD F4,F2,F0
[0036] SD F4,0(R3)
[0037] ADDIU,R1,8
[0038] ADDIU,R2,8
[0039] ADDIU R3,8
[0040] SUBIU R4,1
[0041] BNEZ R4,loop
[0042] 当处理元件以并行结构进行操作并可以由此支持矢量数据格式时,可以使用矢量汇编代码。执行与上述标量汇编代码执行相同功能的示例性矢量汇编代码可以采用类似于以下的方式,并且可以要求更少量的指令,因为由矢量长度寄存器(VLR)表示的64个矢量通道中的每一个都接收指令广播的副本以并行地执行操作,其与单指令多数据(SIMD)分类法一致。例如5个指令,
[0043] L1 VLR,64
[0044] LV V1,R1
[0045] LV V2,R2
[0046] ADDV V3,V1,V2
[0047] SV V3,R3
[0048] 示例性OpenCL内核220可以类似地矢量形式来写入,类似于以下所述(例如,假设64个SIMD矢量通道的数量以及参数设置A=V1,B=V2以及C=V3):
[0049] L1 VLR,64
[0050] LV V1,R1
[0051] LV V2,R2
[0052] ADDV V3,V1,V2
[0053] SV V3,R3
[0054] 在图2中,加速器200可以在FPGA上构建。在图3中,FPGA 200可以经由NoC 212连接至另一FPGA 250。FPGA 250可以包括另一加速器结构,其类似于FPGA 200的加速器结构。可选地,FPGA 250可以包括多个DSP或其他PE以执行与FPGA 200中的DSP 204不同的功能。在又一实施方式中,FPGA 250可以用于合成多个软加速器以扩展可编程电路。
[0055] 图4示出了作为用于编程电路的构建块的基于列的扇区结构400的示例性框图。多个扇区可放置在FPGA上并且连接以形成大规模电路。以这种方式,用于每个扇区的设计规则可被重新用于其他扇区以减少验证尝试并提高设计效率。
[0056] 例如,扇区结构400可以具有多列,包括矢量处理器401(其可配置为图2中的加速器200)、通用逻辑块402的集合、嵌入式存储单元403的集合等。矢量处理器列401可以包括36行,包括占用2行的第一控制处理器405a(例如,类似于图2中的201)以及16PE 406a的第一集合(例如,类似于图2中的204);以及第二控制处理器405a(2行)以及16PE 406b的第二集合。在图4的该示例中,矢量处理器列401包括两个矢量处理器,它们又分别包括控制处理器405a和405b。在另一示例中,示例处理器列可具有1个控制器处理器以及并行的16个DSP。
[0057] 图5示出了用于矢量处理器的网状互连逻辑500的示例性框图。多个处理节点(例如,矢量处理器501(其可以配置为图2中的加速器200))可以直线阵列来连接,每个矢量处理器连接至其最近的邻居。在相应示例中,每个节点(例如,示例矢量处理器501)都可以包括网状路由器502,其将连接从相应的节点路由到被连接节点(控制处理器503和16个PE 506)。网状路由器还可以经由高速缓存相干单元504将节点连接至外部存储DDR 505,使得连接至不同节点的高速缓存单元中的数据一致。网状互连结构500可具有为网状互连结构
500中的每一列限定的存储地址,例如500所示,该结构的每一列的一个节点连接至外部DDR存储器505。
[0058] 结合图4中基于列的结构,网状互连结构500可以连接多个基于列的扇区,例如510a-b(每一个都可以配置为图4中的400);并且两个扇区处理器501a-b可以连接以形成类似于图4中的两扇区处理器列401的矢量处理器列。
[0059] 图6至图7示出了使用类似于图2讨论的200的加速器的多线程执行的方面的示例性框图。在图6中,矢量处理器600可以具有与图2中的加速器200类似的结构,例如包括硬控制处理器601(例如,类似于图2中的201)以及多个矢量PE,诸如硬化FPGA DSP 602(例如,类似于图2中的204)。从矢量PE 602获取的数据的存储地址可以从DMEM单元604(其可以由紧密耦合存储器或标准高速缓存使能多层存储层级组成)加载或存储。在任意情况下,存储内容将流过对准单元603,使得适当的字节被加载到寄存器文件201c或205或者从寄存器文件201c或205存储。例如,在编程语言中,数据对象(例如,变量)具有两种特性:值和存储位置(例如,存储地址)。数据对准单元603可以均匀地将数据对象的地址除以自然数,通常为2的幂,例如1、2、4或8等。换句话说,数据对象可以具有1字节、2字节、4字节或8字节对准(或者任何2的幂的对准)。例如,当数据对象的地址为12FEECh时,其是4字节对准,因为地址可以均匀地除以4,其是2的幂中均匀划分地址的最大自然数。
[0060] 在图7中,可以通过矢量处理器600支持执行700-707的8个线程。每个线程都具有一个程序计数器以及独立的寄存器文件。在该相应示例中,以循环赛形式每8个循环通过控制处理器601来分派用于给定线程的指令;并且如果加载指令停滞在给定线程中,则其可以每8个循环再访问。以这种方式,线程0中的停滞指令可以不影响线程1中的指令的执行,并且最重要地,那时通过处理器来再访问线程0700;并且将解决来自存储访问的任何停滞。
[0061] 在另一示例中,矢量PE 602(例如,DSP)可以深度流水线化,并且流水线深度可以不同于控制处理器601的级数。例如,如果控制处理器601具有8级,则多线程执行可以具有不同数量的线程,例如一行中4线程,因为其可以采用更长的时间来用于控制处理器601向PE/DSP 602发布指令,因此PE/DSP 602可以处理少量的线程。
[0062] 图8示出了PE 800(其可以配置为图2中的204或图6中的602)的示例性结构的示例性示意图。PE 800可以包括电路块809,其可以是基础DSP块。例如,DSP块809可以包括两个或更多个乘法器801以及加法器802,加法器将来自两个或更多个乘法器801的输出相加以生成DSP块809的输出804。DSP块809可以接收输入数据803,其可以被一个或多个前置乘法器加法器805处理。DSP块809可以在可编程逻辑(诸如FPGA)上构建,使得设置在DSP块809内的一个或多个算术或逻辑元件(例如,801、802、805等)可通过在这些算术或逻辑元件之间配置数据连接而被使用或旁路。以这种方式,DSP块809可以被配置为执行各种功能。
[0063] ALU 811(其可以被配置为图2中的ALU 206)可以设置在PE 800内。ALU 811可以对DSP块809的输入数据803执行算术或逻辑操作,并且ALU 811的输出被路由回DSP块809的输入。例如,ALU 811可以被配置为对输入数据执行相加、相减、反相和/或执行其他算术操作。
[0064] 数据高速缓存单元DMEM 812(其可以配置为图2中的DMEM 210)也可以包括在PE 800内。DMEM 812可以存储来自ALU 811的输出,表示来自DSP块809的处理数据。DMEM 812可以用作用于DSP块809的数据高速缓存器,使得DSP块809可以在DSP块809的操作期间减少对PE 800外到存储单元的存储访问,因此可以提高数据访问效率。
[0065] 本地存储器DMEM 812可以具有用于指令的8KB数据高速缓存器,并且8条目加载丢失队列可存储在数据高速缓存器DMEM 812中以恢复丢失的加载(例如,每个线程一个条目)。当发生加载丢失时,加载单元(例如,图2中的208)可以停滞并防止后续和独立的数据加载,直到解决了先前的加载丢失为止,这可以导致处理器上不期望的数据处理性能,尤其在多线程执行中。非阻塞数据高速缓存器可以通过将丢失的加载地址放入“加载丢失队列”中来缓解该问题,由此使得其他加载指令发布至加载单元。即使当通过加载/存储单元服务高速缓存丢失时,也在加载丢失队列中保持加载丢失。当从存储器中取出与加载丢失相关联的丢失存储块时,随后从加载丢失队列中去除加载丢失。
[0066] 由于非阻塞数据高速缓存结构,高速缓存丢失处罚可以通过后续和独立指令的处理来重叠和掩蔽。加载丢失队列可以存储多个且独立的加载丢失,它们可以通过加载/存储单元同时服务,使得可以减少总的加载丢失影响。加载丢失影响的减少还可以在“突发模式”中实现,在这种模式中多个存储器访问请求成组到单个交易中。例如,“8节拍”存储突发将8个存储访问请求成组到单个交易中,从而一次实施8个访问尝试。以这种方式,存储访问的设置开销可以从8减小到1。
[0067] PE 800可以进一步包括数据对准单元813(其可以类似于图6中的对准单元603)。例如,对准单元813可以对准来自DMEM 812的高速缓存线输出用于适当的数据字。当采用
128位高速缓存线尺寸(来自DMEM 812)时,较低的两个地址位可用于选择相关的32位数据字。结合图11内关于数据对准的进一步讨论。
[0068] 如图8所示,DMEM 812和数据对准单元813可以设置在每个PE 800内。作为另一示例,当以并行结构操作多个PE 800时,DMEM 812和数据对准单元813可以设置在各个PE 800外,并且如图6中的603、604所示被多个PE 800共享。
[0069] PE 800可进一步包括寄存器文件810,其寄存DSP块809的输出数据或者数据对准单元813的输出,并且将输入数据提供给DSP块809。在一个示例中,每个对应的PE 800都可以在PE 800结构内具有寄存器文件810。当以并行结构操作多个PE 800时,与多个PE 800相关联的多个寄存器文件810可以操作为矢量寄存器文件。
[0070] PE内的数据流可以32位单精度浮点数据格式利用32位标量操作来处理,并且可以在32位桶(barrel)中偏移。寄存器文件810可以置于DSP块809内(例如,参见图2中的205)或者DSP块809外。SIMD PE可以实施多线程执行(例如,图7所示的8线程),并且每一个线程都可具有8×32×32位的寄存器文件810,包括两个32位读端口和一个32位写端口。
[0071] 图9至图10示出了用于在图2中的FPGA 200上实施MCAPI的多核SoC软件堆叠结构的示例性框图。例如,图2至图3以及图6所示的电路结构可以利用图9至图10所示的软件堆叠结构来操作。图9至图10所示的协议MCAPI是用于紧密耦合分布式存储系统的消息传送协议(类似于MPI)。使用MCAPI使能消息传送编程模型以支持软件代码的大现有主体,使得潜在的消费者可以利用它们先前的开发投资。
[0072] 可选地,由于SoC-FPGA(例如,图2-图3以及图5-图6所示)具有共享存储器,所以可以使用用于共享存储系统的编程模型,诸如OpenMP。在这种情况下,由于用于使用共享存储并行编程模型的并行编程的较少开销,OpenMP可以产生更好的数据性能。然而,使用OpenMP共享存储并行处理可难以实现高速缓存相干性,例如通过使用数据探测法标称过去的8个处理器。基于目录的相干方案可用于标称具有可接受开销的处理器。
[0073] 硬件层901可包括硬件处理器系统(HPS)903(例如,类似于图2中的控制处理器201等)、多核节点结构(例如,类似于图2中的硬化DSP 204、图4中的矢量处理器401、图5中的网状互连结构中的矢量处理器节点501等)、硬件互连结构905(例如,类似于图4中基于列的扇区结构400或者图5中的网状互连结构500等)。
[0074] HPS 903和多核节点904均可以具有用于将要安装的应用程序906的软件栈,分别包括应用API 907a-b、消息逻辑层908a-b、消息物理层909a-b和消息传输层910a-b。具体地,对于用于多核节点904的软件栈结构,API功能907b可以通过OpenCV、OpenCL等来实施;消息逻辑层908b可以在客户-服务器协议下实施;消息物理层909b可以使用openMCAPI实施;以及消息传输驱动器910b可以使用MCAPI驱动器来实施。
[0075] 继续参照图10,示出了利用openMCAPI来实施物理层结构1000。在硬件层1001中,核A 1003a和B 1003b(例如,类似于图9中的多核节点904)可以经由硬件互连结构1004(例如,类似于图9中的配对硬件互连905)互连。在软件层1002中,分别用于核1003a-b的应用程序和应用API 1005a-b可以与使用MCAPI标准实施的MCAPI API层1006和MCAPI传输层1007交互,从而分别与消息传输驱动器1008a-b通信。具体地,在软件栈结构1002中,消息可以在用户空间中的层之间传输而不具有内核层级路由或判定,或者任何附加的要求。由于软件层1002不包含特定协议(与图9中利用客户-服务器协议操作的908b相反),通过层传输的数据可以不定义为数据表示的含义。OpenMCAPI结构1000可以在公共树中构建和保持,因此其允许多个派别(例如,不同用户等)创建补丁和回推。
[0076] 图11示出了可编程电路的对准单元(例如,类似于图6中的603)处的数据对准的方面的示例性框图。在电路(例如,诸如图2中的200)中,CPU 1101(例如,图2中的215)不以一次一字节的速度从存储器1102(例如,图2中的216)读取或者写入存储器1102。相反,CPU 1102以一次2、4、8、16或32字节块来访问存储器1102,例如1100a处所示,CPU 1101以4字节块1102a来访问存储器1102。以这种方式,可以提高数据性能,因为访问4字节或16字节边界上的地址快于访问1字节边界上的地址。然而,在存储框被插入到块中(例如,1100b处所示)时、当CPU 1101可以访问包括来自块1102的3字节和存储器1102中的另一字节1102b的未对准的4字节块时,存储器访问会未对准。
[0077] 图12是配置加速处理器(其可以配置为图2中的加速器200)当方面的示例性逻辑流程图。在1201处,处理器(其可以类似于图2中的控制处理器201)可以在FPGA上设置或实例化。PE的集合(其可以类似于图2中的DSP 204)可以在FPGA上设置或实例化。PE可以具有类似于图8中的结构,例如包括DSP块809和ALU 811。然后,PE可以被配置为在1203处执行任务,例如计算输入信号的快速傅里叶变换(FFT)等。例如,PE可以通过在1203a处在PE内的DSP块的算术单元之间配置互连以及通过在1203b处在PE内配置ALU以对DSP块的输入数据执行算术操作来进行配置。
[0078] 图13是采用结合本发明的可编程逻辑设备的示例性系统的简化框图。PLD 130被配置为包括处理器,并且根据本发明的任何实施方式的算术电路可用于许多种类的电子设备。一个可能的用法是在图13所示的示例性数据处理系统1300。数据处理系统1300可以包括一个或多个以下部件:处理器1301(例如,类似于图2中的主CPU 215);存储器1302(例如,类似于图2中的存储器216);I/O电路1303;以及外围设备1304。这些部件通过系统总线1305耦合到一起,并且驻留于包含在终端用户系统1307中的电路板1306上。
[0079] 系统1300可用于各种应用,诸如计算机联网、数据联网、仪表化、视频处理、数字信号处理、远程无线电头(RRH)或任何其他应用,其中,期望使用可编程或可再编程逻辑的优势。PLD 130可用于执行各种不同的逻辑功能。例如,PLD 130可以被配置为与处理器1301协作的处理器或控制器。PLD 130还可用作用于仲裁对系统1300中的共享资源的访问的仲裁器。在又一示例中,PLD 130可以被配置为处理器1301与系统1300中的一个其他部件之间的接口。应该注意,系统1300仅仅是示例性的,并且本发明的真实范围和精神应该通过以下权利要求来表示。
[0080] 各种技术可用于实施上文所述并结合本发明的PLD 120。
[0081] 图14示出了可以利用机器可执行程序来编码的磁性数据存储介质1400的截面,其中可以通过诸如前述个人计算机或其他计算机或类似设备执行机器可执行程序。介质1400可以是软盘或磁盘或者磁带,其具有适当的衬底1401(可以是传统的衬底)以及位于一侧或两侧上的适当的涂层1402(可以是传统的涂层),其包含极性或定向可以磁性更改的磁畴(未示出)。除了在磁带的情况下,介质1400还可以具有用于接收磁盘驱动器的主轴或其他数据存储设备的开口(未示出)。
[0082] 根据本发明,如果需要的话,介质1400的涂层1402的磁畴被极化或定向来以传统的方式编码机器可执行程序,用于被诸如个人计算机或其他计算机或类似系统的编程系统来执行,该系统具有可插入被编程的PLD的插座或外围附件以配置PLD的适当部分,包括其特殊的处理块。
[0083] 图15示出了还可以利用这种机器可执行程序编码的光学可读数据存储介质1510的截面,其中可以通过诸如前述个人计算机或者其他计算机或类似设备的系统来执行机器可执行程序。介质1510可以是传统的压缩盘只读存储器(CD-ROM)或数字视频盘只读存储器(DVD-ROM)或可重写介质,诸如CD-R、CD-RW、DVD-R、DVD-RW、DVD+R、DVD+RW或DVD-RAM或磁光盘(其光学可读以及磁光可重写)。介质1510优选具有适当的衬底1511(可以是传统的衬底)以及通常位于衬底1511的一侧或两侧的适当涂层1512(可以是传统的涂层)。
[0084] 在基于CD或基于DVD的介质的情况下,已知涂层1512是反射性的并且利用布置在一个或多个层上的多个凹陷1513来压印,来编码机器可执行程序。通过在涂层1512的表面上反射激光来读取凹陷的布置。保护涂层1514(优选为基本透明)被设置在涂层1512的顶部上。
[0085] 在磁光盘的情况下,已知涂层1512不具有凹陷1513,但是具有多个磁畴,其极性或定向可以在加热到特定温度(通过激光器(未示出))之上时磁性变化。可以通过测量从涂层1512反射的激光的极化来读取磁畴的定向。磁畴的布置如上所述编码程序。
[0086] 根据一个方面,一种可编程集成电路设备上的加速处理器结构可以包括:处理器;多个可配置数字信号处理器(DSP);第一总线,将数据从所述处理器传输至所述可配置DSP;
以及第二总线,将数据从所述可配置DSP传输至所述处理器。每个可配置DSP均可包括:电路块,其可包括多个乘法器。
[0087] 在一些实施例中,所述可配置DSP还可包括:第一加法器,用于将来自所述多个乘法器的乘法器输出相加;以及第二加法器,用于将数据输入添加至所述电路块以得到加法器结果,并且将所述加法器结果输出至所述多个乘法器中的至少一个乘法器。所述多个乘法器、所述第一加法器和所述第二加法器可被配置为互连以选择性地路由所述电路块内的数据连接。所述可配置DSP还可包括:算术逻辑单元(ALU),对所述电路块的数据输入执行算术操作,以生成路由至所述电路块的一个数据输入的ALU输出。
[0088] 在一些实施例中,所述可配置DSP还可包括:高速缓存存储单元,耦合至所述ALU,并且所述高速缓存存储单元可以在所述电路块的操作期间存储处理数据。
[0089] 在一些实施例中,所述可配置DSP还可包括:数据对准单元,耦合至所述高速缓存存储单元,其中所述数据对准单元针对将在对准块中访问的处理数据对准存储在所述高速缓存存储单元中的处理数据的存储地址。
[0090] 如果需要,加速处理器结构还可包括:寄存器文件,耦合至所述电路块,其中在所述电路块的操作期间,所述寄存器文件寄存来自所述电路块的输出数据并且将寄存的所述输出数据作为数据输入的一部分路由至所述电路块。
[0091] 在一些实施例中,当所述可配置DSP操作为矢量处理器的一部分时,所述寄存器文件可接收矢量形式的数据。
[0092] 在一些实施例中,加速处理器结构还可包括:至少一个高速缓存存储单元,存储用于所述多个可配置DSP的处理数据,以在所述加速处理器结构的操作期间进行访问。
[0093] 如果需要,所述至少一个高速缓存存储单元可设置在所述多个可配置DSP中的至少一个可配置DSP的每一个内。
[0094] 如果需要,所述第一数据传输总线可将矢量指令从所述处理器传输至所述可配置DSP。
[0095] 在一些实施例中,加速处理器结构的所述第二数据传输总线可接收来自所述可配置DSP的处理数据,并且将所述处理数据传输至所述处理器。
[0096] 在一些实施例中,加速处理器结构的所述第二数据传输总线可接收来自位于一个所述可配置DSP内的高速缓存存储单元的数据,并将所述处理数据传输至所述处理器。
[0097] 在一些实施例中,当数据加载指令停滞时,所述高速缓存存储单元可保持用于存储丢失数据加载的存储地址的加载丢失队列,而不防止执行其他数据加载指令。
[0098] 在一些实施例中,加速处理器结构还可包括:至少一个数据对准单元,针对将在对准块中访问的处理数据,对准存储在所述高速缓存存储单元中的处理数据的存储地址。
[0099] 如果需要,所述至少一个数据对准单元可被所述多个可配置DSP共享并且被设置在所述多个可配置DSP外。
[0100] 在一些实施例中,所述处理器可包括硬处理器,执行用于所述多个可配置DSP的配置或操作的获取、解码和分派矢量单指令多数据(SIMD)指令中的任何一个。
[0101] 在一些实施例中,所述多个可配置DSP中的至少一个可具有流水线结构。
[0102] 在一些实施例中,所述加速处理器结构可构建为基于列的结构,其具有一个或多个加速处理器的第一列、一个或多个嵌入式存储单元的第二列、或者一个或多个逻辑块的第三列。
[0103] 如果需要,所述一个或多个加速处理器的第一列可具有基于行的结构,其具有用于所述处理器的第一行以及用于所述多个可配置DSP的多行。
[0104] 如果需要,所述加速处理器结构可构建为具有多个互连节点的网状互连结构,并且所述多个互连节点中的第一节点包括所述加速处理器结构。
[0105] 在一些实施例中,来自所述多个互连节点的第二节点可包括存储单元,并且所述网状互连结构可具有针对所述网状互连结构中的每一列限定的存储地址。
[0106] 在一些实施例中,所述多个可配置DSP可被设置用于并行处理,使得所述多个可配置DSP支持N个线程的多线程执行。
[0107] 在一些实施例中,每N个循环重新访问用于N个线程中的第一线程的停滞指令,而不影响用于所述N个线程中的第二线程的指令的执行。
[0108] 在一些实施例中,所述N个线程中的每个线程都可具有独立的程序计数器以及与所述多个可配置DSP中的对应可配置DSP相关联的独立寄存器文件。
[0109] 在一些实施例中,加速处理器结构还可包括:矢量寄存器文件,用于所述多个可配置DSP。
[0110] 根据一个方面,一种用于配置加速处理器结构的方法,所述加速处理器结构用于可编程集成电路设备,所述方法包括:提供处理器并且提供多个可配置数字信号处理器(DSP)。至少一个所述可配置DSP可包括电路块。电路块可包括:多个乘法器;第一加法器,用于将来自所述多个乘法器的乘法器输出相加;和第二加法器,用于将数据输入添加至所述电路块以得到加法器结果,并且将所述加法器结果输出至所述多个乘法器中的至少一个乘法器。如果需要,该方法还可包括配置所述多个乘法器、所述第一加法器和所述第二加法器之间的互连,以选择性地路由所述电路块内的数据连接并且配置算术逻辑单元(ALU),所述算术逻辑单元对所述电路块的数据输入执行算术操作,以生成路由至所述电路块的一个数据输入的ALU输出。
[0111] 在一些实施例中,提供所述处理器可包括实例化所述处理器。
[0112] 根据一个方面,一种处理器可读非暂态介质可存储用于配置用于可编程集成电路设备的加速处理器结构的处理器可执行指令。所述处理器可执行指令可包括:可由处理器执行以提供多个可配置数字信号处理器(DSP)的指令。至少一个所述可配置DSP可包括电路块。电路块可包括:多个乘法器;第一加法器,用于将来自所述多个乘法器的乘法器输出相加;和第二加法器,用于将数据输入添加至所述电路块以得到加法器结果,并且将所述加法器结果输出至所述多个乘法器中的至少一个乘法器。处理器可执行指令可进一步包括:可由所述处理器执行以在所述多个乘法器、所述第一加法器和所述第二加法器之间配置互连以选择性地路由所述电路块内的数据连接的指令;以及可由所述处理器执行以配置算术逻辑单元(ALU)的指令,所述算术逻辑单元对所述电路块的数据输入执行算术操作以生成路由至所述电路块的一个数据输入的ALU输出。
[0113] 应该理解,上文仅仅是本发明的原理的示例,本领域技术人员在不背离本发明的范围和精神的情况下可进行各种修改。例如,本发明的各种元件可以以任何期望的数量和/或布置而设置在PLD上。本领域技术人员应该理解,可以以除所述实施例之外的方式来实践本发明,它们用于说明的目的而非限制性,并且本发明仅通过以下权利要求来限制。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈