具有片上互连的混合可编程众核设备的制作方法

文档序号:17442048发布日期:2019-04-17 04:53阅读:172来源:国知局
具有片上互连的混合可编程众核设备的制作方法

本发明涉及包含许多可编程处理器、专用功能模块、以及可编程fpga构造的混合可编程逻辑设备。本发明对于网络和分组处理特别有用,尽管它可以在其他应用中使用。



背景技术:

众核(即多核)设备已经提供了一种提高设备性能而不引起提高时钟速度的成本的方式。众核设备可以包括用于硬件特定功能(诸如差错控制编码或者加密)的专用asic模块。这些模块通常被称为硬件加速器。



技术实现要素:

本发明提供一种混合可编程逻辑设备,其包括可编程现场可编程门阵列逻辑构造(例如,可编程逻辑元件)以及众核分布式处理子系统(例如,众核处理器)。注意,术语“混合”指的是在同一设备(即,同一芯片)中集成了可编程逻辑元件的构造和处理器两者的设备。在所提供的架构中,可编程逻辑元件可以提供“后期绑定”的硬件加速功能,意思是被用来形成硬件加速功能的特定功能和逻辑架构能够在该设备被构造之后被定义。例如,可编程逻辑元件可以经由在运行时对混合可编程逻辑设备编程的软件,被分区或者分组为硬件加速器。还注意到,术语“设备”指的是本文中所描述的混合可编程逻辑设备的任何实施例或者实施例的组合。

在某些实施例中,处理器可以被集成到可编程逻辑构造中,而使得处理器的一个或多个物理尺寸(诸如宽度、长度或高度)是可编程逻辑元件的同一物理尺寸(即,对应的长度、宽度或高度)的倍数。这允许了具有不同尺寸的设备的有效率组装,而使处理器与可编程逻辑元件或者其他逻辑模块的比率不同。在某些实施例中,处理器可以是“硬化的”,意思是它们包括固定逻辑元件而不是可编程逻辑元件。这个特征提供了将强大的众核处理器集成到可编程逻辑构造中。在某些实施例中,处理器可以被集成到该构造中而使得处理器被平铺(tiled)在行或列中。注意,术语“被平铺”指的是布置处理器使得它们交错或者散布在可编程逻辑元件之中。例如,处理器可以与可编程逻辑元件一起被连续地布置在二维平面中,使得在连续的处理器之间没有其他的可编程逻辑元件。处理器的这种平铺可以允许用于在设备的处理器、可编程逻辑元件、以及i/o接口之间进行通信的互连网络的有效率构造和供应。

在某些实施例中,混合可编程逻辑设备可以包括数据总线,以将处理器、i/o接口、以及存储器之间的数据移动到芯片上或者移动到芯片外。在某些实施例中,这个数据总线可以是“硬化的”,意思是它包括专用电路组件,而不是能够该设备上被保留用于其他用途的电路组件。这个硬化的数据总线允许了向该设备内部和外部两者的高性能数据传送。在某些实施例中,这个数据总线可以包括水平和垂直连接器。水平和垂直连接器的某些组可以被接线,以向可编程逻辑元件提供数据并且从可编程逻辑元件提供数据,而其他组可以被接线,以向处理器提供数据并且从处理器提供数据。在某些实施例中,两组中的水平和垂直连接器可以处于相同金属层或相同层中。这些相同金属层可以位于设备中的互连栈中的层的上方,该互连栈包含处理器和可编程逻辑元件。在某些实施例中,水平和垂直连接器可以被布局以使得它们的垂直间距(例如,在互连栈中的垂直位置)是可编程逻辑元件、处理器或者两者的一个或多个组的大小的倍数。将用于处理器和可编程逻辑元件两者的水平和垂直连接器放置在相同金属层中,并且确定它们的大小使得它们符合可编程逻辑元件和处理器的大小,允许了布局和布线工具(例如,软件)将处理器和逻辑元件作为同构路由构造来寻址。换句话说,可以采用与向可编程逻辑元件路由数据并且从可编程逻辑元件路由数据的连接器相同的方式,来寻址向处理器路由数据并且从处理器路由数据的连接器的部分。

在某些实施例中,混合可编程逻辑设备可以包括入口/出口处理模块,该入口/出口处理模块接收数据(例如,以数据分组的形式),并且将该数据转发给该设备的其他元件。在某些实施例中,该设备可以包括片上网络总线,该片上网络总线专用于把去往和来自该入口/出口处理模块的数据路由和/或运送至该设备的其他元件。入口/出口处理模块可以是硬化的asic,或者可以是从该设备上的可编程逻辑元件构建的模块。

在某些实施例中,混合可编程逻辑设备可以包括调度电路,该调度电路能够调度逻辑构造中的水平和垂直连接器上的数据传输,该水平和垂直连接器在可编程逻辑元件与处理器之间传输数据。在某些实施例中,这个调度电路可以接收被寻址到这些处理器中的至少一个处理器的中断消息,意思是它们包含指示该数据的有效载荷应该由一个特定处理器或多个特定处理器来处理的信息。在其他实施例中,调度电路可以使用异步通信的其他方法以在可编程逻辑元件与处理器之间发送数据。在某些实施例中,调度电路可以标识这些处理器中的哪些处理器应该处理特定数据(例如,数据的块或分组),并且将该数据分发给所标识的处理器。通过使用中断消息或者其他的异步通信方法,调度电路可以允许处理器、可编程逻辑元件、以及数据总线以不同的时钟速度运行,因此打破网络总线与处理器时钟速度之间的任何定时依赖性。

在某些实施例中,调度电路可以包括程序指令存储器,该程序指令存储器能够在处理器的操作期间被重新编程。每个处理器可以基于所接收的数据分组中的信息来经由该调度电路检测新的操作模式,响应于检测到新的操作模式而停止操作(例如,清除处理器中的任何管线(pipeline)中的所有指令),并且基于从该设备中的其他元件所接收的数据来对该程序指令存储器重新编程。

在某些实施例中,处理器和可编程逻辑可以被划分为分区,以便管理电源。例如,可以计算混合可编程逻辑设备的分区。每个分区可以包括处理器和可编程逻辑元件的子集。可以计算处理器需求的至少一个测量,并且基于这个测量,可以变更分区中的处理器和可编程逻辑元件的电源状态。这个特征可以允许基于去往处理器和可编程逻辑元件的特定组的吞吐量来动态地管理设备的功耗。

附图说明

一旦结合附图地考虑对以下的详细描述,本发明的以上和其他优点将是明显的,在附图中,相似的参考符号自始至终指代相似的部分,并且其中:

图1a是根据本发明的实施例的混合可编程逻辑设备;

图1b是根据本发明的实施例的包含与可编程逻辑元件邻近的处理器的混合可编程逻辑设备的展开视图;

图1c是根据本发明的实施例的包含处理器与可编程逻辑元件之间的接口的混合可编程逻辑设备的展开视图;

图2a是根据本发明的实施例的在混合可编程逻辑设备中的数据总线的说明性视图;

图2b是根据本发明的实施例的在混合可编程逻辑设备中的数据总线的另一个说明性视图;

图3是根据本发明的实施例的具有硬化的数据总线和入口/出口的混合可编程逻辑设备;

图4a是根据本发明的实施例的具有硬化数据总线和入口/出口的混合可编程逻辑设备;

图4b是根据本发明的实施例的具有硬化数据总线和入口/出口的混合可编程逻辑设备;

图5是根据本发明的又另一个实施例的具有硬化数据总线和入口/出口的混合可编程逻辑设备;

图6是根据本发明的实施例的调度电路;

图7a是根据本发明的实施例的被分区的混合可编程逻辑设备的图示;

图7b是根据本发明的实施例的用于减少混合可编程逻辑设备的功耗的说明性过程。

具体实施方式

在设计众核设备时,对于特定应用而被要求的加速器的类型和数量可能难以预测。为了设计一种解决多于单个解决方案的设备,通常在设备中内置不需要的加速器,并且因此浪费设备上的区域以及消耗过度的功率。因此,将合意的是,设计具有可编程逻辑技术的众核设备,使得这些加速器可以在开发过程中的后期阶段被定义(例如,在众核设备的部署之后)。

进一步地,在设计众核设备时,许多代理可能请求对外部存储器的间歇访问。例如,在众核设备接收分组时,有效载荷从头部分开并且被发送给外部存储器(或者内部缓冲器),而针对大量的处理时间(例如,数百个时钟周期)该头部被发送给处理单元(例如,微处理器或硬件模块)。作为结果的头部(其可能被修改)然后与它的有效载荷重新结合并且排队用于向设备之外转发。当数百个代理正在发送并且接收数据时,对存储器的协同访问可能是困难的。因此,将合意的是,设计具有共享互连的众核设备,其允许灵活的路由(例如,如与静态路由相比较的动态路由)。

图1a是根据本发明的实施例的混合可编程逻辑设备100。设备100包括可编程逻辑元件130的区域,以及处理器150。通用输入/输出电路110能够包括一个或多个通用引脚,该一个或多个通用引脚能够在运行时由外部软件控制或编程。在某些实施例中,通用输入/输出电路110能够被配置为输入或者输出数据、能够读取或写入数据、能够被用作用于唤醒事件的irq、或者能够被用来从源外围设备向设备100传送数据。高速串行接口120能够促进信息在外部数据源(未示出)、可编程逻辑元件130、以及使用高速收发器模块的处理器150之间的信息传送。例如,高速串行接口120可以对接以太网连接以接收信息分组,用可编程逻辑元件130和处理器150来处理这些分组,并且将分组交换至不同的物理接口。下文关于图3来讨论用于路由所接收的信息的示例性电路。在某些实施例中,高速串行接口120可以以比通用输入/输出电路110更高的速度来传送数据。例如,高速串行接口120可以以数十千兆比特每秒的速率读取和写入数据,而通用输入/输出电路110可以以数百兆比特每秒的速率写入数据。在某些实施例中,高速串行接口120可以以线速率(line-rate)操作,线速率意思是设备100的合计吞吐速率(例如,跨越多个串行信道的100千兆比特每秒),而处理器150和可编程逻辑元件130以分布式速率操作,意思是处理线程(以及与这些处理线程一起使用的对应存储器和硬件加速模块)的合计吞吐量不比用于设备100的目标应用的最小吞吐量差。

可编程逻辑元件130能够包括逻辑门和存储器的任意组合。在某些实施例中,这些可编程逻辑元件可以被分组成逻辑阵列模块(“lab”),该逻辑阵列模块指的是由加利福尼亚州圣何塞的altera公司所提供的设备中的可编程逻辑资源的单元。然而,本发明可应用至来自任何来源的可编程逻辑元件。在某些实施例中,可编程逻辑元件可以被分组成硬件加速模块。每个硬件加速模块可以被指定为,对所接收的数据执行某种类型的硬件事件。在某些实施例中,硬件加速模块可以可配置使得该事件被定制为该特定情形。例如,硬件加速模块能够接受如下的参数:这些参数进一步将硬件事件定义为,对所接收的数据分组被执行。被用来配置硬件加速模块的参数可以例如由处理器150所生成。参数能够通过包括水平和垂直连接器的数据总线(未示出)被传输给硬件加速模块,该水平和垂直连接器连接至可编程逻辑元件130以及处理器150中的每个可编程逻辑元件和处理器。在某些实施例中,可编程逻辑元件130可以包括任何适当的存储器集群,诸如m20k存储器集群。

在某些实施例中,在设备100已经被构造和部署之后(例如,在设备100的运行时间期间或者通过远程更新过程),可编程逻辑元件130可以可配置成不同的硬件加速模块。因此,由可编程逻辑元件130所组成的硬件加速模块可以后期绑定,这允许设备100在任何数量的域中的任何数量的应用中通用。例如,可以更新设备100以负责最新的纠错、视频和图像处理、或者数据管理标准。这不同于具有处理器和固定硬件加速模块的商业网络处理单元、管线处理器、以及asic设备,因为这些设备不允许硬件加速器在部署之后被定义。

如图1a中示意性描绘的,在设备100上存在比用于处理器150的区域更多的区域用于可编程逻辑元件130。这是因为可编程逻辑元件130比处理器150便宜。在某些实施例中,可编程逻辑元件130可以基本上类似于由加利福尼亚州圣何塞的altera公司所出售的stratixvfpga的可编程逻辑元件。然而,应该理解,适用于fpga或pld的任何可编程逻辑元件可以被用作可编程逻辑元件130。

处理器150能够包括具有众核设计的任何适当数量的处理器。这些众核设计可以基于由诸如arm、mips和tensilica的供应商的微处理器ip。这个微处理器ip允许创建定制的嵌入式处理器(例如,移除浮点单元)和定制的指令集架构的能力。在某些实施例中,这些处理器可以是“硬化的”,意思是它们包括固定逻辑元件而不是可编程逻辑元件。这个特征提供了将强大的众核处理器集成到可编程逻辑构造中。

如图1a中示意性描述的,处理器150平铺在可编程逻辑元件130没有出现的设备100的部分中的四列组装结构中。在其他实施例中,可以使用更少或更多列的处理器。在某些实施例中,列或者处理器的数量以及每列中的处理器的数量可以比图1a中所描绘的更多或更少。列的数量和每列中的处理器150的数量可以取决于用于每个处理器的处理器架构。例如,当每个处理器的指令缓存和数据缓存减少时,更多的处理器可以平铺在设备100上。在一个示例中,使用具有16kb的指令缓存和数据缓存的mips34k多线程处理器。在这一示例中,当缩小到28mm的设计目标时,每个处理器消耗小于设备上的0.25平方微米的硅面积,这等于30个stratixvlab。应该理解,处理器150可以备选地布局在设备100上的行中。

在某些实施例中,处理器150是多线程的。多线程处理器向如下的应用提供了优点:在这些应用中,通常要求与片外存储器或者查找相对接,这可能花费多个时钟周期的处理时间,并且因此增加了延迟;或者要求隐藏加速器处理的延迟。例如,通过阻挡对这个查找任务的处理器中的一个线程,处理器能够继续执行其他功能。在某些实施例中,可以通过对于由处理器150所接收的数据的时间分片操作来实现多线程。在其他实施例中,可以通过已知的操作系统机制来实现多线程。

处理器150在设备上的平铺布局允许了有效率的构造以及提供用于在设备的处理器、可编程逻辑元件、以及i/o接口之间通信的互连网络。这是因为可编程逻辑元件130和设备100的其他元件(诸如存储器(未示出))从处理器150分离。此外,处理器150的平铺布局允许了处理器150和可编程逻辑元件130在设备100中的相同金属层中的结构,以及包含数据总线的互连栈的结构。

图1b是根据本发明的实施例的包含与可编程逻辑元件130邻近的处理器150的混合可编程逻辑设备100的展开视图。两个处理器在图1b中被示意性地描绘为包含三个组件—处理器核心170、指令缓存180、以及数据缓存190的方块。在图1b中还示意性描绘了被分组为lab132的可编程逻辑元件130。在某些实施例中,处理器150的尺寸的物理大小(诸如长度、高度或宽度)是可编程逻辑元件150或者由可编程逻辑元件150所组成的lab的同一尺寸的倍数。例如,如图1b中所描绘的,两个处理器中的每个处理器的宽度等于三个lab132。这允许了具有不同尺寸的设备的有效率组装,而使处理器与可编程逻辑元件或者其他逻辑模块的比率不同。

图1c是根据本发明的实施例的包含处理器150与可编程逻辑元件130之间的接口161的混合可编程逻辑设备100的展开视图。接口161可以被包括在每个lab或者lab行与处理器150之间。接口161可以包括lim/leim电路162、接口逻辑164、以及接口端口166。lim/leim电路162指代可编程输入多路复用器“lab输入多路复用器”和“逻辑元件输入多路复用器”的集合,并且可以包括任何适当数量的如通常在由加利福尼亚圣何塞的altera公司所出售的设备中找到的lim和leim多路复用器。接口逻辑164可以包括,用于将数据缓冲到接口端口166的任何适当的电路组件。接口端口166可以包括,用于将信号物理地传递给处理器150之一的任何适当的电路。

在某些实施例中,水平和垂直连接器167还可以被包括在设备100上。如下文将关于图3所讨论的,水平和垂直连接器167可以在处理器150、可编程逻辑元件130、通用输入/输出接口、以及片上和片外存储器之间传送数据。在某些实施例中,水平和垂直连接器可以被接线至接口电路161,使得来自可编程逻辑元件130中的任意可编程逻辑元件的任意信号能够经由lim/leim电路162和接口逻辑164被传递给接口端口166。例如,lie/leim电路162内的多路复用器可以选择哪个信号驱动水平/垂直连接器167中的任何全局线路,以将可编程逻辑元件130中的任何可编程逻辑元件与处理器150相连接。

图2a是根据本发明的实施例的在混合可编程逻辑设备100中的数据总线210的说明性视图。尽管数据总线210的线路被示出在垂直方向上的lab215的上方,但是在实施方式中,它们是在lab上方(例如,在包含lab和处理器的金属层上方的金属层中)的互连栈的一部分。类似于水平和垂直连接器167,数据总线210能够在处理器150、可编程逻辑元件130、通用输入/输出接口110、以及设备100(图1a)上和设备100外的存储器之间传送数据。图2a说明性地突出了从lab215上方距离特定间隔的lab216被路由的数据总线210的两条线路。在某些实施例中,数据总线210的水平和垂直连接器可以被布局,使得它们的垂直间距(例如,互连栈中的垂直位置,在图2a和2b中由“w”图示)是可编程逻辑元件、处理器或者两者的一个或多个组的大小(例如,垂直间距)的倍数。

图2b是根据本发明的实施例的在混合可编程逻辑设备100中的数据总线210的另一个说明性视图。如图2b中示意性描绘的,处理器217取代lab216。处理器217可以是设备中的平铺处理器的列的一部分,诸如平铺处理器150之一(图1a)。在某些实施例中,数据总线210的接线具有相同的垂直间距,并且遵循通向lab215和lab216的数据总线210的相同的接线图案。此外,在某些实施例中,来自处理器217以及lab215和lab216的接线处于互连栈中的相同金属层中(例如,在包含lab和处理器的金属层上方的金属层中)。通过将用于处理器和可编程逻辑元件两者的水平和垂直连接器放置在相同金属层中,并且确定它们的大小使得它们符合可编程逻辑元件和处理器的大小(例如,垂直间距),允许了布局和布线工具(例如,软件)将处理器和逻辑元件作为同构布线构造来寻址。换句话说,可以采用与向可编程逻辑元件(诸如lab215和lab216中的可编程逻辑元件)路由数据并且从可编程逻辑元件路由数据的连接器相同的方式,来寻址向处理器(诸如处理器217)路由数据并且从处理器路由数据的连接器的部分。

图3是根据本发明的实施例的具有硬化数据总线160和入口/出口处理模块136的混合可编程逻辑设备300。图4a是根据本发明的实施例的具有不同的硬化数据总线160的同一混合可编程逻辑设备300。图4b是具有另一种不同的硬化数据总线160的同一混合可编程逻辑设备300。

设备300还包括外部存储器135和嵌入式三态内容可寻址存储(cam)存储器137。硬化数据总线160可以包括专属电路组件,该专属电路组件向处理器150、可编程逻辑元件130、入口/出口处理模块136、外部存储器135、以及嵌入式三态cam存储器137并且从处理器150、可编程逻辑元件130、入口/出口处理模块136、外部存储器135、以及嵌入式三态cam存储器137传送数据,而不是被保留用于设备上的其他使用。在某些实施例中,硬化数据总线160可以被称为片上网络互连。在这样的实施例中,硬化数据总线160可以专用于把去往和来自入口/出口处理模块的数据路由和/或运送至该设备的其他元件。硬化数据总线160能够允许设备内部和外部两者的高性能数据传送。在某些实施例中,硬化数据总线160可以包括水平和垂直连接器167(图1c)和数据总线210(图2a和2b)的一部分。在其他实施例中,硬化数据总线160可以完全从水平和垂直连接器167分离。

硬化数据总线160可以具有各种拓扑。例如,硬化数据总线160可以具有环形拓扑、诸如由英国剑桥的armholdings所设计的axi的共享总线协议、来自sonics、arteris或者其他第三方公司的互连技术、或者由加利福尼亚州圣何塞的altera公司所设计的avalon互连。在某些实施例中,硬化数据总线160可以是分级的。例如,如图3中示意性描绘的,硬化数据总线160可以是4路分工的。在另一个示例中,如图4a中示意性描绘的,硬化数据总线160可以是单片式的。在又另一个示例中,如图4b中示意性描绘的,硬化数据总线可以是分段的。

在某些实施例中,可以由能够对设备300编程的软件来分级地连接或断开硬化数据总线160的部分。这个软件可以包括由加利福尼亚州圣何塞的altera公司所设计的quartus软件或者任何其他适当的软件。在某些实施例中,硬化数据总线160的宽度被设计为实现特定应用的线速率。例如,如果硬化数据总线160是64比特并且以80%的效率工作在1ghz,则它能够提供51gbps的带宽并且被用来以50gbps的流式视频应用为目标。在另一个示例中,如果硬化数据总线160是64比特并且以80%的效率工作在1.5ghz,则它能够提供150gbps的带宽并且以100gb的业务交换应用为目标。在某些实施例中,可以添加分离的硬化数据总线以运送用于处理器输入和输入(如lab输入和输出)的数据。

在某些实施例中,硬化数据总线160可以被放置在处理器150和可编程逻辑元件130上方(例如,在上方的金属层中)或者邻近处理器150和可编程逻辑元件130。以这种方式,硬化数据总线160最少地侵害设备300(图3)的组装。

外部存储器135可以包括通向外部存储器(诸如ddr存储器)的任何适当接口。外部存储器135能够在设备300正在处理视频数据或分组数据的应用中缓冲数据。在某些实施例中,嵌入式三态cam存储器137可以包括,对于联网应用有用的任何适当的内容可寻址存储器的模块。在某些实施例中,嵌入式三态cam存储器137可以使用基本上类似于接口电路161(图1c)的电路来与可编程逻辑元件130和处理器150对接。在某些实施例中,嵌入式三态cam存储器137可以由sram或者嵌入式sram分组缓冲存储器替代。

入口/出口处理模块136能够接收数据并且将该数据转发给设备100的其他元件。例如,入口/出口处理模块136能够接收数据分组并且向设备300提供协议终止或者分组成帧服务。在某些实施例中,入口/出口处理模块136可以将所接收的数据转发给硬化数据总线160。在某些实施例中,入口/出口处理模块可以包括硬化asic模块。这些模块可以根据美国专利no.8,314,636中所公开的asic模块来构造,该专利通过引用以其整体并入本文。在某些实施例中,入口/出口处理模块可以由可编程逻辑元件130来构建。

图5是根据本发明的又另一个实施例的具有硬化数据总线160和入口/出口137的混合可编程逻辑设备500。设备500可以基本上类似于设备100(图1a)和设备300(图3),除了用于对接至2.5d或3d存储器的通用接口总线138被集成到设备500中,或者其他的功能之外。如图5中示意性图示的,接口138能够经由硬化数据总线160连接到处理器150和可编程逻辑元件130。在其他实施例中,接口138能够通过通用fpga路由(诸如水平和垂直连接器167(图1c))连接至处理器150和可编程逻辑元件130。在某些实施例中,接口138可以根据美国专利申请no.13/350,662和no.13/620,126中所描述的设计和方法来制造,这两个专利申请通过引用以其整体并入本文。

图6是根据本发明的实施例的调度电路600。调度电路600包括数据总线605,其能够基本上类似于水平和垂直连接器167(图1c)或者硬化数据总线160(图3)。调度电路600能够在诸如可编程逻辑元件130的可编程逻辑元件与处理器630之间调度水平和垂直连接器、硬化数据总线上的数据传输。在某些实施例中,处理器630可以是平铺处理器的列的一部分,诸如关于处理器150(图1a)所描述的那些。在这样的实施例中,调度电路600的副本可以与处理器150中的每个处理器集成。

调度电路600包括总线接口610和线程电路620。在某些实施例中,调度电路还可以包括处理器630和缓存640。处理器630可以基本上类似于处理器150(图1a),并且缓存640可以基本上类似于指令缓存180和数据缓存190。此外,处理器630可以是处理器的平铺列或行的一部分,诸如关于处理器150(图1a)所描述的那个。在这样的实施例中,调度电路600可以针对处理器的平铺行或列中的每个处理器而被实施在该设备上。

水平和垂直连接器605可以传输去往和来自总线接口610的数据。水平和垂直连接器605可以是水平和垂直连接器167、硬化数据总线160、或者两者的至少一部分的部分。在某些实施例中,数据总线210可以使用水平和垂直连接器605,来传输去往和来自设备上的可编程逻辑元件以及设备上的处理器的数据。例如,总线接口210可以使用水平和垂直连接器167,在设备100的可编程逻辑元件130与处理器630之间传输数据。在某些实施例中,在可编程逻辑元件与处理器之间的数据传输,可以以与处理器630的时钟的速度速率不同或者异步的速度速率而发生。例如,处理器的操作的速度可以比设备上的可编程逻辑元件的操作的速度更快或者更慢,并且使用水平和垂直连接器605在可编程逻辑元件与处理器之间传输数据的速度速率,可以不同于处理器630的时钟的速度。

在这样的实施例中,总线接口610可以提供如下的机制:这些机制允许数据以关于处理器630的时钟速度异步的速率,在水平和垂直连接器605上传输。在某些实施例中,总线接口610可以通过水平和垂直连接器605接收中断消息。在这样的实施例中,这些中断消息可以被寻址到设备上的处理器中的一个或多个处理器,意思是它们包含如下的信息:该信息指示与该消息相关联的数据的有效载荷应该由一个特定处理器或多个特定处理器来处理。总线接口电路610可以仅传输与被寻址到处理器630的中断消息相关联的数据,并且忽略不寻址到处理器630的其他消息。例如,总线接口电路610可以在与总线电路610相关联的软件或硬件中包含预定的或硬编码的值,该值是处理器630的地址。总线接口电路610可以周期性地或者持续地针对该地址来监测通过水平和垂直连接器605所传输的消息。当检测到该地址时,总线接口电路610可以缓冲与寻址到处理器630的消息相关联的数据,并且使用线程电路620将该数据从缓冲器传输给处理器630。线程电路620维护与处理器630中的各种任务的执行相关联的一个或多个程序计数器。在某些实施例中,线程电路620从接口电路610接收数据,并且基于其维护的程序计数器中的一个或多个程序计数器来确定适当的时间,以将该数据发送给处理器630。以这种方式,调度电路600可以允许设备的处理器、可编程逻辑元件、以及数据总线工作在不同时钟速度,因此打破了与网络总线有关的组件与处理器时钟速度之间的任何定时或时钟依赖性。

在某些实施例中,异步通信的任何适当方法可以被用来在设备的可编程逻辑元件与处理器630之间发送数据。在某些实施例中,调度电路600的功能可以通过两个或多个处理器的组而不是调度电路600来实现。处理器的这些组可以标识处理器中的哪些处理器来发送从设备的水平和垂直连接器所接收的(即,从可编程逻辑元件所传输的)数据,并且将该数据分发给所标识的处理器。这个标识可以类似于上文关于总线接口电路610所描述的监测过程来确定。

在某些实施例中,调度电路600可以包括程序指令存储器(未示出),其能够包括外部存储器的任何适当组合。在某些实施例中,设备上的处理器(诸如处理器630)的指令集可以在操作期间被修改,使得它们被重新编程具有新的程序集。这个新的指令集可以允许该设备实现新的功能或不同的功能,诸如可以由处理器所使用的针对硬件加速器的程序指令。

在这样的实施例中,程序指令存储器可以针对处理器中的一个或多个处理器来检测新的操作模式。例如,程序指令存储器可以包含用于监测水平和垂直连接器605上的数据分组的指令。能够由它们的分组头部来标识的某些数据分组可以包含控制分组,该控制分组包含用于将处理器630重新编程而具有新的功能或更新的功能的指令。总线接口电路610可以通过周期性地或者连续地监测水平和垂直连接器,以匹配控制分组头部,来检测这些控制分组。响应于检测到新的操作模式,可以停止处理器630的操作。例如,一旦总线接口电路610检测到控制分组头部,其可以缓冲该分组的有效载荷数据,并且将该有效载荷数据传送给线程电路620。线程电路620然后可以执行处理器630的线程或管线中的创建、执行、或者插入指令中的一个或多个指令,该一个或多个指令使得处理器630停止操作并且清除所有待处理指令。线程电路620然后可以从总线接口电路610中的缓冲器向处理器630传送控制分组的有效载荷,该有效载荷包含用于对处理器630重新编程的指令。在某些实施例中,控制分组的头部中的信息可以以一组处理器为目标,该一组处理器诸如设备上的一个或多个平铺列中的一组处理器。在这样的实施例中,上文所描述的过程可以针对使用每个处理器的相关联总线接口电路的设备上的目标处理器中的每个处理器而基本上并行地发生。

在某些实施例中,设备上的处理器可以经由分区被划分为不同的类别。这种分区可以是物理的(例如,处理器中的硬编码)或者虚拟的(例如,经由调度软件所保持的记录来指派)。图7a是根据本发明的实施例的被分区的混合可编程逻辑设备100的图示。设备100可以基本上类似于关于图1a所描述的那个设备。设备100可以被分区为第一分区702、第二分区704、以及第三分区706。这些分区可以由布局和布线工具或者任何适当的软件来指定。在某些实施例中,这些分区可以由如下的表格来指定:该表格将处理器的地址或其他唯一标识符中的每一个与分区编号相映射。在某些实施例中,处理器的分区还可以与设备100的可编程逻辑元件的分区相关联。应该理解,尽管图7a示出三个分区,但是设备100的处理器可以被划分为该设备上的任何适当几何尺寸中的任何适当数量的分区。

每个分区710、720、以及730可以与不同类别的处理器和可编程逻辑元件相关联。在某些实施例中,这些类别可以被用来经由不同类型的处理来实施可替换的处理模型。在这样的实施例中,每个分区可以与不同的处理或硬件加速功能相关联。例如,与第一分区702相关联的处理器可以被指定为操作流标识处理,与第二分区704相关联的处理器可以被指定为操作初始分组处理和分发,并且与第三分区706相关联的处理器可以被指定为对系统或设备广度状态处理(systemordevice-widestateprocessing)进行操作。以这种方式,设备100可以被配置为操作任何数量的应用。在分组处理应用中对设备100的使用在与本文同时提交的、标题为“mappingnetworkapplicationstoahybridprogrammablemany-coredevice”(代理人案卷号000174-0768-101/a03945)的美国专利申请no.____中被进一步地举例说明和讨论,该美国专利申请通过引用以其整体并入本文。

在某些实施例中,不同类别的处理器和可编程逻辑元件可以被用来管理设备100的电源使用。例如,基于对于与每个分区相关联的处理器和逻辑元件的处理能力的需求,与设备100的分区相关联的处理器和可编程逻辑元件可以被上电或断电。下文关于图7b来描述这个过程。

在某些实施例中,与设备100的一个或多个分区相关联的处理器和可编程逻辑元件可以被指定为管家(housekeeper)处理器。这些管家处理器可以代表设备100来实施诸如电源和时钟管理的功能。在某些实施例中,这些管家处理器可以由布局和布线工具的用户来指定。在其他实施例中,这些管家处理器可以在设备100的运行期间由设备100自动地指定。

图7b是根据本发明的实施例的用于减少混合可编程逻辑设备(诸如设备100(图1a和7a))的功耗的说明性过程700。过程700开始于步骤710。在步骤710处,计算该设备的至少两个分区,每个分区包括与可编程逻辑元件相关联的处理器。这两个分区中的每个分区可以基本上类似于关于图7a所讨论的分区702、704和706。在某些实施例中,可以在设备的工作之前由布局和布线软件来计算分区。在其他实施例中,可以在设备的工作期间由调度软件来计算分区。这个调度软件可以在设备外部的主机处理器上、或者在所指定的管家处理器上被执行。在这样的实施例中,调度软件可以在设备的工作期间动态地改变分区。例如,在第一时间处,调度软件可以指定被活动地用于硬件加速功能的与40%的处理器以及相关联的可编程逻辑元件相关联的第一分区,并且指定不被活动地使用的与60%的处理器以及相关联的可编程逻辑元件相关联的第二分区。然而,在随后的时间,在更多的处理器和可编程逻辑元件已经变得活动之后,调度软件可以指定被活动地用于硬件加速的与55%的处理器以及可编程逻辑元件相关联的第一分区,并且指定不被活动地使用的与45%的处理器以及可编程逻辑元件相关联的第二分区。以这种方式,设备能够基于设备的吞吐量来活动地调整其电源使用。在某些实施例中,分区可以与“上半部”和“下半部”的处理器和相关联的可编程逻辑元件相关联。在这样的实施例中,调度软件可以指定与设备中的资源的“下半部”相关联的分区处于省电模式,而与设备中的资源的“上半部”相关联的分区可以被指定用于活动模式。在某些实施例中,通过确定什么硬件加速功能正在由处理器或处理器组执行,并且然后将与执行特定硬件加速功能相关联的这些处理器和可编程逻辑元件指定为单个分区,可以计算分区。

过程700可以前进到步骤720。在步骤720处,计算处理器需求的至少一个测量。在某些实施例中,可以针对在步骤710处所计算的每个分区来计算处理器需求的这些测量。在某些实施例中,可以通过调度软件来计算处理器需求的测量。在某些实施例中,可以通过确定正在等待(例如,在队列中)由处理器或处理器组(例如,特定分区中的所有处理器)处理的所接收的数据分区的数量,来计算处理器需求的测量。在一个实施例中,如果处理器或处理器组针对预定时间段还未接收到数据分组(例如,因为处理器以及相关联的可编程逻辑元件执行没有正在被使用的硬件加速功能),则如下文将关于步骤730所讨论的,处理器或处理器组可以被指定为是不需要的,并且被标记以用于断电。以这种方式,不再需要它们的处理电源的处理器,在设备100上象征性地从执行它们的工作中“下岗”。在同一实施例中,如果数据分组随后针对被标记为空闲的处理器或处理器组而被接收,则如下文将关于步骤730所讨论的,这些数据分组可以排队并且该处理器或多个处理器可以被指定为是活动的,并且被标记以用于上电。以这种方式,再次被需要的空闲处理器在设备100上象征性地被聘回以执行它们的工作。在另一个实施例中,如果处理器或处理器组在预定阈值之下已经接收了多个数据分组,则如下文将关于步骤730所讨论的,该处理器或处理器组可以被指定为不需要的,并且被标记以用于断电。

过程700然后可以前进到步骤730。在步骤730处,可以基于在步骤720处所计算的处理器需求的测量,来变更分区中的处理器以及相关联的可编程逻辑模块的电源状态。在某些实施例中,可以通过把被分配给一个分区的设备的资源断电,来变更该分区的电源状态。例如,如果针对特定分区,处理器需求被计算为小于所接收的数据分组的阈值数量,则可以将该分区的处理器或处理器组以及相关联的可编程逻辑元件断电。在某些实施例中,可以通过禁用被提供给分区内的资源的时钟信号,来将这些资源断电。在某些实施例中,可以通过将之前被断电或者休眠的分区的资源上电,来变更分区的电源状态。例如,如果设备确定被断电的特定分区中的资源被需要以用于执行新的硬件加速功能或所调度的硬件加速功能,或者确定当前正被接收的数据分组调用与先前被断电的硬件加速功能相关联的资源,则可以将该分区内的资源上电。在某些实施例中,可以通过启用被提供给分区内的资源的时钟信号,来将这些资源上电。

将理解,前文仅是对本发明的原理的举例说明,并且本领域的技术人员能够做出各种修改而不脱离本发明的范围和精神。本领域的技术人员将意识到,本发明能够通过除了所描述的实施例之外的实施例来实行,所描述的实施例为了举例说明而不是限制的目的而被提出,并且本发明仅由随后的权利要求所限定。

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