首页> 中国专利> 使用可快速重新配置电路和高带宽存储器接口的计算机体系结构

使用可快速重新配置电路和高带宽存储器接口的计算机体系结构

摘要

可编程装置包括一个或多个编程区,其各自包括多个可配置逻辑块,其中所述多个可配置逻辑块中的每一个可通过可编程互连结构选择性地连接到任何其他可配置逻辑块。所述可编程装置还包括配置逻辑,其被配置来响应于所述指令流中的指令,独立于任何所述其他编程区,在编程区中的所述可配置逻辑块中的一个或多个中重新配置硬件。

著录项

  • 公开/公告号CN107667474A

    专利类型发明专利

  • 公开/公告日2018-02-06

    原文格式PDF

  • 申请/专利权人 超威半导体公司;

    申请/专利号CN201680028155.3

  • 发明设计人 大卫·A·罗伯茨;

    申请日2016-05-13

  • 分类号

  • 代理机构上海胜康律师事务所;

  • 代理人樊英如

  • 地址 美国加利福尼亚州

  • 入库时间 2023-06-19 04:28:55

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2019-05-28

    授权

    授权

  • 2018-07-27

    实质审查的生效 IPC(主分类):H03K19/177 申请日:20160513

    实质审查的生效

  • 2018-02-06

    公开

    公开

说明书

技术领域

本公开涉及可编程装置的领域,并且具体地,涉及响应于指令流中的指令来重新配置逻辑电路。

背景技术

现场可编程门阵列(FPGA)是设计成在制造后由最终用户配置的集成电路装置。通常,FPGA包括称为逻辑块的未委派电路元件阵列,这些元件通过构成可编程互连结构的互连资源来连接在一起。例如,互连资源可包括可能以不同配置互相线连的逻辑门。FPGA中的逻辑块可以被配置来执行复杂的组合功能或逻辑功能(诸如AND或XOR)。FPGA中的逻辑块也可以包括存储器元件,其可以被实现为简单的触发器或更完整的存储器块。

在FPGA中,逻辑块可以包括诸如查找表(LUT)、以及通过将值插入小型静态随机存取存储器(SRAM)或寄存器中进行编程的其他固定功能的元件。必须在可使用逻辑块之前执行编程。在编程之后,对于LUT的功能输入的每个组合导致预定义输出,从而允许实现任何逻辑功能。典型的FPGA依赖于外部存储器装置和单个相对缓慢的串行编程端口以供配置。FPGA通常具有“配置模式”和单独的“用户模式”,其中整个芯片处于等待被编程的空闲状态,或已编程芯片正在运行。

附图简述

在所附附图中通过实例的方式而并非通过限制的方式说明了本公开内容。

图1示出计算系统的实施方案。

图2示出根据实施方案的现场可编程门阵列(FPGA)的部件。

图3示出根据实施方案的功能表的操作。

图4A示出根据实施方案的管芯堆叠。

图4B示出根据实施方案的管芯堆叠中的硅穿孔(TSV)。

图5A-5D示出根据各种实施方案的管芯堆叠。

图6是示出根据实施方案的在计算系统中执行指令的过程的流程图。

具体的实施方案

以下描述阐述许多具体细节(如具体系统、部件、方法等等的实例),以便提供对实施方案的良好理解。然而,本领域的技术人员将明白,在没有这些特定细节的情况下也可以实践至少一些实施方案。在其他情况中,不详细描述或以单个框图格式展示众所周知的部件或方法,以便避免不必要地使实施方案模糊。因而,阐述的所述具体细节仅为示例性的。特定实施方式可与这些示例性细节不同,并且仍期望在实施方案的精神和范围内。

可编程装置的一个实施方案是具有多个配置域的现场可编程门阵列(FPGA),所述配置域可以基于指令流中的指令来并行且彼此独立地重新配置。多个配置域中的每一个的配置数据可以存储在三维(3D)堆叠存储器中,所述存储器提供对配置数据的高带宽访问。结合高存储器带宽,在装置中对可编程逻辑的划分允许在几个时钟周期内重新配置可编程逻辑,从而允许可以重新配置以适应不同类型指令的灵活管线。

与固定功能处理管线相比,灵活管线的实现允许指令调度的更大灵活性,因为任何管线都可以被重新配置来执行多种类型指令中的任一种,而不会中断指令流的执行。在这种系统中,可以在单个周期中跨多个执行道来调度执行不同功能的不同线程。

图1示出计算系统100的实施方案,所述计算系统100包括具有多个配置域的可编程装置(即,FPGA 120)。计算系统100包括能够使用总线来彼此通信的部件,所述总线通过一组硅穿孔(TSV)104在计算系统100中实现。TSV 104连接以下各部分并且实现其间的通信:处理器逻辑105块(包括处理器101和存储器控制器102)、存储器块110、存储器块115和FPGA 120。在一个实施方案中,块105、110、115和120中的每一个对应于单个集成电路管芯。在替代性实施方案中,被示为在不同块中的部件可以集成在相同管芯上,或者被示为在相同块中的部件可以跨多个管芯来分割。

处理器101能够通过TSV 104来传输寻址到与TSV 104连接的一个或多个其他装置的数据,并且还可以从连接到TSV 104的其他装置接收数据。处理器101还能够执行由存储在存储器子系统110中的指令定义的程序,并且还可以在指令流中派遣这些指令中的一些或所有以便由FPGA 120执行。

FPGA 120包括编程区122和123。编程区122包括可配置逻辑块131-134,并且编程区123包括可配置逻辑块135-138。FPGA 120中的可编程逻辑驻留在可配置逻辑块131-138中,因此被划分成多个配置域,所述多个配置域是可单独配置的并且由编程区122和123的边界定义。虽然图1将FPGA 120示为包括两个编程区122和123,但在替代性实施方案中,FPGA 120可以具有两个以上编程区。在替代性实施方案中,每个编程区还可包括四个以下或以上可配置逻辑块。FPGA 120还包括配置逻辑121,其接收配置数据并且根据所接收的配置数据重新配置FPGA 120中的一个或多个编程区。

存储器110包括配置存储器区111和112,所述区存储用于FPGA 120中的编程区的配置数据。配置存储器区111和112分别对应于编程区122和123;因此,配置存储器111存储可用于配置编程区122的配置数据,而配置存储器112存储可用于配置编程区123的配置数据。配置存储器区111和112中的每一个存储可被选择用于编程到其相应编程区中的多个配置状态(例如,存储器111中的状态A和B、以及存储器112中的状态C和D)。例如,可以选择配置存储器111中的状态A或状态B以便确定对应编程区122的配置。

存储器110还包括上下文存储器113和上下文存储器114,其用于存储与不同配置相关联的状态信息。上下文存储器113和上下文存储器114分别存储编程区122和123的状态信息。

存储器115包括分别对应于编程区122和123的高速缓存116和高速缓存117。高速缓存116和117中的每一个是使用存储器技术(例如,SRAM或STT-MRAM)来实现的,所述存储器技术的延迟比对应于相同编程区的配置存储器更低。例如,可以使用DRAM来实现配置存储器111,而使用SRAM或自旋转移转矩磁性随机访问存储器(STT-MRAM)来实现高速缓存116。较低延迟存储器用于高速缓存配置比特流数据,以便减少在编程区中重新配置硬件的时间。

计算系统100包括与TSV 104联接的存储器控制器102,所述控制器包括用于有助于附接到TSV 104的其他装置之间的通信的逻辑。例如,通过寻址存储器区111或112中的一个、通过TSV将配置数据从已寻址的存储器区读取到临时缓冲器(例如,SRAM)中、寻址FPGA 120以及通过TSV将配置数据写入FPGA 120,处理器101可以引导存储器控制器102以便有助于配置存储器区111和112与FPGA 120之间的通信,以便重新配置对应的编程区122或123。因此,存储器控制器102协调计算系统100的这些部件之间的数据转移。

在计算系统100中,存储器控制器102通过经由装置选择信号102a选择装置来建立与连接到TSV的装置(例如,FPGA 120或存储器110)之一的通信。在替代性实施方案中,装置选择信号可以延伸到除了FPGA 120和存储器110之外的附加装置。可替代地,可以使用其他寻址方法;例如,可以通过TSV 104传输所选装置的地址。

计算系统100包括基于源代码生成指令的编译器103。由编译器103产生的指令存储在存储器子系统110中,处理器101可以从所述存储器子系统110检索指令并执行指令。

图2示出FPGA 120的实施方案的内部部件。FPGA 120是可编程装置,其包括称为逻辑块(即,块131-142)的可编程电路元件阵列,以及用于选择性地连接逻辑块131-142的互连资源220-222。

在FPGA 120中,由虚线指示编程区122-125的边界。编程区122包括逻辑块131-134,编程区123包括逻辑块135-138,编程区124包括逻辑块139和140,并且编程区125包括逻辑块141和142。编程区122-125将包含在FPGA 120中的可编程逻辑分成单独的配置域,其可以彼此独立地操作和编程、或者组合以用作较大的可编程区。

在编程之后,包含在编程区122-125中的逻辑可以用作中央处理单元(CPU)或图形处理单元(GPU)管线的一部分。因此,可以使用编程区来执行从CPU或GPU提供给FPGA 120的指令流中接收的一个或多个指令。

如图2所示,编程区122和123各自包括四个可配置逻辑块,而编程区124和125各自包括两个可配置逻辑块。因此,给定编程区的可配置逻辑块的数量不需要与同一可编程装置中的另一个编程区相同。在替代性实施方案中,编程区可以包括所示数量以下或以上的可配置逻辑块。

每个可配置逻辑块131-142包括查找表(LUT)和固定功能块。在编程之后,对于LUT的功能输入的每个组合导致预定义输出,从而允许实现任意逻辑功能。每个可配置的逻辑块可以被编程以便通过将适当值写入LUT中、并且写入控制逻辑块中的部件(例如,LUT、固定功能块等)之间的连接的配置存储器区或寄存器中,执行各种功能。

可配置逻辑块131-142各自连接到可编程互连结构220,所述结构包括允许块131-142选择性地彼此连接的导电迹线和开关。在图2中,导电迹线被示为将可配置逻辑131连接到可编程互连结构220。其他块132-142也通过导电迹线连接到互连结构220;然而,为了清楚起见,图示中省略了将这些块132-142连接到互连结构220的导电迹线。

在替代性实施方案中,可编程互连结构220可以不如图2所示的那样均匀。例如,互连结构可以包括长度不同的多个导电迹线,或者可以在FPGA 120的不同区中具有不同数量的并行导电迹线。互连结构220的导电迹线通过它们相交的开关来彼此连接。例如,多个迹线相交的区221(由虚线指示)包括在两个导电迹线之间的每个交点之间的开关。可替代地,开关可以仅存在于区221中的一些交点处。

可编程互连结构还包括边界开关(诸如开关222),其可用于选择性地将一个编程区中的部件与其他编程区隔离。边界开关位于FPGA 120中的编程区122-125的边界处。例如,边界开关222位于可编程互连结构220的导电迹线跨越编程区122的边界的位置。

因此,边界开关222可以用于将可配置逻辑块131-134和编程区122的其他部件与其他编程区123-125断开。另外,可以选择性地关闭或打开边界开关以便组合编程区。例如,可以关闭在编程区122和123之间的边界开关222以便将区122和123彼此组合,而其他边界开关保持打开以便将组合的编程区122和123以及其他编程区124和125隔离。

参考图1,FPGA 120包括配置逻辑121,其有助于对FPGA 120中的编程区122和123的编程。特别地,配置逻辑121通过将编程区122的可配置逻辑块131-134或编程区123的可配置逻辑块135-138中的硬件从现有硬件配置重新配置到新的硬件配置来响应通过TSV 104接收的指令。可以通过配置逻辑121对一个编程区中的硬件进行重新配置,同时使用不同的编程区来执行一个或多个指令。

配置逻辑121响应通过TSV 104接收的显式重新配置指令以便重新配置FPGA 120中的一个或多个编程区,并且还可以通过重新配置一个或多个编程区以执行特定功能来隐式地响应请求使用特定功能的指令。

可以在FPGA 120的运行时间操作期间接收包括在指令流中的显式重新配置指令,并识别针对重新配置的编程区和用于目标编程区的所选配置。响应于显式重新配置指令,配置逻辑121通过以下来重新配置目标编程区:隔离目标编程区(例如,通过打开目标编程区的边缘处的边界开关)、然后将所选配置应用于目标编程区以独立于FPGA 120中的任何其他编程区来重新配置目标编程区。

显式重新配置指令通过直接引用FPGA编程比特流的地址、或通过引用一组预定义的可定制功能中的一个来引用要在目标编程区中实现的功能。例如,配置存储器111中的状态A和B各自对应于可以编程到编程区122中的功能,而存储在配置存储器112中的状态C和D各自对应于可编程到编程区123中的功能。状态A、B、C和D中的每一个存储可用于在编程区中实现其对应功能的配置比特流。

在配置逻辑121接收请求实现对应功能的显式重新配置指令之前,配置比特流存储在配置存储器区111和112中。例如,可以在启动产生指令流的应用程序的执行时存储配置比特流,或者可以在开始在应用程序中的程序循环或其他执行障碍时存储配置比特流。

即使当没有接收到显式重新配置指令时,配置逻辑121也能够隐式地重新配置编程区122或123之一中的硬件。例如,如果接收到调用在任何编程区122和123中未实现的功能的指令,则配置逻辑121重新配置编程区122和123中的一个或多个,以便在重新配置的一个或多个编程区中执行指令之前实现所述功能。

用于特定编程区的配置存储器还记录编程区的当前配置。例如,与编程区122相关联的配置存储器111存储编程区122的当前配置。因此,当接收到调用特定功能的指令时,可以检查编程区的当前配置以便确定是可以在编程区中执行指令、还是应当重新配置编程区以便执行指令。在替代性实施方案中,FPGA 120中的每个编程区122-123的当前配置存储在除了配置存储器区111-112之外的位置处;例如,当前配置可以被记录在位于FPGA 120本身上的存储器或寄存器中。

响应于调用特定功能的指令,检查FPGA 120的每个编程区122-123的当前配置,以便确定是否可以在任何编程区122-123中执行所调用的功能。如果没有编程区122-123被配置来执行所调用的功能,则配置逻辑121将编程区122-123中的一个或多个重新配置为可以执行所调用的功能的新配置。

图3是根据实施方案的框图,其示出当配置逻辑121执行编程区的隐式重新配置时,如何基于接收的指令300将用于编程区的配置比特流定位在存储器中。如图3所示,所接收的指令300是单指令多数据(SIMD)指令,其识别由值ID1和ID2标识的两个功能。对于功能ID1,指令300识别用于功能结果的两个操作数SRC1A和SRC1B以及目的地DEST1。对于功能ID2,指令300类似地识别用于功能结果的两个操作数SRC2A和SRC2B以及目的地DEST2。

在接收到指令300时,配置逻辑121在功能表301中引用所调用的功能ID1和ID2的条目。如图3所示,功能表301分别返回功能ID1和ID2的地址A和地址B。地址A和地址B识别存储在配置存储器111中的配置比特流(即状态A和状态B)的位置。配置逻辑使用存储在状态A和状态B处的所识别的配置比特流来重新配置编程区123以用于执行指令300。

状态A-D处的配置比特流可以定义用于在编程区122-123中实现的功能,所述功能是简单的单一操作或更复杂的复合操作。在编程时,编程区122-123可以用作各自可以通过一系列存储器地址访问的独立逻辑单元。当在适当配置的编程区中执行指令时,可以通过连接到编程区的输入的预定义操作数寄存器来传递指令的操作数。

FPGA 120中的可配置逻辑块131-138可以包含计算机系统100的体系结构状态的重要部分。例如,状态信息可以包括可在编程区中执行指令期间修改的值。当通过逻辑块131-138的重新配置来实现上下文切换时,可以暂时存储重新配置的逻辑块的状态,使得其可以在稍后的时间被恢复。例如,可以暂停在编程区中执行的第一线程,使得第二线程可以重新配置编程区,然后可以从上下文存储器恢复编程区的先前配置和上下文,以便在完成第二线程之后恢复在编程区中执行第一线程。

返回参考图1,配置存储器111和112包括上下文存储器113和114,其分别与编程区122和123相关联。上下文存储器113和114用于将逻辑块的状态信息存储在其相应的编程区122和123中。在编程区122或123之一的重新配置之前,要重新配置的编程区的上下文存储器将逻辑块的状态信息存储在编程区中,使得可以稍后通过相同的上下文来恢复编程区的原始配置。

具体地说,上下文数据可以包括有关识别编程区的硬件配置和存储在编程区的寄存器和存储器块中的值的相关信息。存储在上下文存储器113或114中的数据可以被组织为逻辑堆栈;因此,在将编程区重新配置到第二配置之前,将与编程区的第一配置相关联的上下文数据推送到堆栈上。当编程区被重新配置成回到第一配置时,从堆栈弹出第一配置的上下文数据以便恢复第一配置的上下文。

通常,在替代性实施方案中,本文描述为由计算系统100中的所示部件之一执行的操作可以由计算系统100中的其他部件执行。例如,在其他实施方案中,由配置逻辑121执行的操作可以在计算系统100的其他部件中执行。配置存储器111和112被示出为位于单独的存储器110上,但是可以替代性地位于计算系统100中的其他部件中。例如,在替代性实施方案中,FPGA 120可以包括可用于执行配置存储器111和112的功能的存储器。

参考图1,计算系统100中的编译器103基于应用程序的源代码生成针对应用的指令,并且将所生成的指令存储在处理器101(例如,存储器110)可访问的位置中。在替代性实施方案中,将指令存储在与存储器110分开的存储器位置中,诸如硬盘驱动器或其他持久性存储器。编译器103在图1中被示为在计算系统100上执行;然而,在替代性实施方案中,编译器可以在单独的计算系统上运行,并且所生成的指令可以被传输到计算系统100。

当生成用于计算系统100的指令时,编译器103插入通过配置比特流来预加载配置存储器区(例如,存储器111和112)的指令,以用于编程FPGA 120中的编程区。编译器基于源代码来识别可执行的指令类型,然后插入用于预加载适当配置比特流的指令,以用于实现执行所述指令的功能。例如,编译器103生成用于在执行利用编程区122和123的那些配置的指令之前,在配置存储器111和112中预加载配置状态A、B、C和D的指令。将配置比特流预加载到配置存储器111和112中允许配置逻辑121响应于指令流中的指令来快速执行编程区的隐式重新配置。

编译器103还能够在应用程序的指令流中插入显式重新配置指令。基于应用程序的源代码,编译器103识别可以在编程区中实现的功能可执行的指令,然后在所识别的指令之前在指令流中插入显式重新配置指令。因此,显式重新配置指令致使在将所识别的指令调度成要执行之前重新配置编程区之一,以用于执行所识别的指令。

编译器103在使用正重新配置的编程区之前调度显式重新配置指令,并且还可以调度显式重新配置指令,使得在FPGA 120的其他编程区或处理器101中并行执行其他指令时发生重新配置。依赖于显式重新配置指令完成的指令将该依赖性指示为指令的一部分,从而防止执行指令,直到重新配置完成。

编译器103还能够基于识别要求在编程区中实现特定功能的指令、以及实现所述功能的重新配置延迟来插入配置预取指令。在编程区的预期显式或隐式配置改变之前,配置预取指令将编程区的配置位从主存储器转移到更快的存储器(诸如本地SRAM或STT-MRAM缓冲器)中。因此,配置预取指令可以减少重新配置编程区的延迟。

编译器103还尝试将使用相同可编程功能的指令组聚集在一起,以便减少重新配置编程区的次数,从而减少重新配置编程区所花费的时间和消耗的功率的量。

编译器103还可以在应用程序的指令流中插入重新配置障碍指令。重新配置障碍指令致使多个线程在继续执行多个线程中的任一个之前,等待对一个或多个编程区的重新配置完成。例如,可以使用重新配置障碍指令,以便将实现多个执行道的一个或多个编程区重新配置到用于执行新工作组的一组新功能。

图4A示出根据实施方案的作为三维(3D)管芯堆叠400的计算系统100的部件的物理布置。如图4A所示,在堆叠400中,多个集成电路管芯401-404垂直布置在内插件405上方。集成电路管芯的堆叠包括分别从顶部堆叠到底部的DRAM管芯401、SRAM管芯402、FPGA管芯403和处理器逻辑管芯404。处理器逻辑管芯404对应于如图1所示的处理器逻辑块105;因此,计算系统101的处理器101和存储器控制器102驻留在处理器逻辑管芯404上。FPGA 120驻留在FPGA管芯403上。DRAM管芯401可由处理器101和FPGA 120访问并且包括存储器110,以用于将程序代码、程序数据和配置比特流存储在配置存储器区111和112中。

SRAM管芯402所包括的存储器的延迟比DRAM 401低,并且除了DRAM 401之外,SRAM管芯402也被设置用于存储配置比特流。SRAM管芯402用于实现存储器115,包括执行配置比特流的高速缓存的配置高速缓存116和117,从而允许在更少的时钟周期内重新配置FPGA 120中的编程区。SRAM管芯402也可用于高速缓存指令。在替代性实施方案中,代替SRAM管芯402而使用STT-MRAM存储器管芯或比DRAM更快的其他存储器技术。

部件401-405在3D管芯堆叠400中的布置以及这些部件401-405通过一组或多组TSV的连接有助于将新配置快速转移到FPGA 120的编程区122和123中的可配置逻辑块131-138。如在堆叠400中布置的,计算系统100能够响应于程序指令流中的显式或隐式指令,在几个时钟周期内重新配置编程区。

图4B示出DRAM存储器管芯401、SRAM存储器管芯402、FPGA管芯403和处理逻辑管芯404、以及连接并启用管芯401-404之间的通信的TSV 104A和104B。如图1所示,TSV 104包括TSV 104A和104B。TSV 104A和104B可以各自表示堆叠的管芯401-404之间的一个或多个TSV。例如,每组TSV 104A和104B可以包括命令、地址和数据TSV的子组。TSV 104A提供用于配置存储器111、配置高速缓存116、编程区122与存储器控制器102之间的通信的数据路径。TSV 104B提供用于配置存储器112、配置高速缓存117、编程区123与存储器控制器102之间的通信的直接数据路径。

在管芯堆叠400中,配置高速缓存和配置存储器区在物理上被定位成与FPGA 120中的任何其他编程区相比更靠近其对应的编程区。例如,配置存储器111和配置高速缓存116各自被定位成与FPGA 120中的任何其他编程区(例如,编程区123)相比更靠近其对应的编程区122。类似地,配置存储器112和配置高速缓存117各自被定位成与任何其他编程区相比更靠近其对应的编程区123。附加地,堆叠400中的每个配置存储器和配置高速缓存被堆叠成使得存储器或高速缓冲存储器的至少一部分位于其对应的编程区上方。将配置存储器和高速缓存区定位成最靠近其相关联的编程区、以及将存储器管芯401和402垂直堆叠在FPGA管芯403上方最小化TSV 104A和104B的长度,以便有助于配置数据的更快传输。

FPGA 120中的每个编程区在其自身与位于处理器逻辑管芯404上的公共存储器控制器102之间具有专用总线带宽。在替代性实施方案中,存储器控制器102可以位于不同的管芯(例如,FPGA管芯403)上,而不是处理逻辑管芯404。当进行编程区的重新配置时,存储器控制器102通过TSV,从与重新配置的编程区相关联的配置存储器或配置高速缓存读取适当的配置比特流数据。然后,存储器控制器102通过TSV将配置比特流数据写入编程区。在替代性实施方案中,每个编程区可以具有在FPGA 120中实现的其自身的简单存储器控制器,而不是用于与多个编程区通信的公共存储器控制器102。

图5A-5D示出计算系统100的替代性实施方案,其中计算系统100的部件驻留在其上的管芯与堆叠400不同地进行布置。对于分别如图5A、图5B、图5C和图5D所示的堆叠510、520A-B、530A-B和540A-C,包括在这些管芯堆叠中的管芯具有与其在堆叠400中类似命名的对应部分类似的特征。在替代性实施方案中,其他布置是可能的;例如,与400相比,计算系统100的一些部件可以位于不同管芯上。

图5A示出管芯堆叠510,其包括在内插件514上方的分别从顶部堆叠到底部的DRAM管芯511、FPGA管芯512和处理器逻辑管芯513。与图4A所示的堆叠400相比,堆叠510由于省略低延迟存储器管芯(例如,SRAM管芯或STT-MRAM管芯)而降低了成本和复杂性。

图5B示出一种布置,其中计算系统100的部件驻留在其上的管芯位于两个堆叠520A和520B中。堆叠520A包括在内插件524上方的分别从顶部堆叠到底部的FPGA管芯521和处理器逻辑管芯522。DRAM存储器管芯523在相邻堆叠520B中堆叠在相同内插件524的上方,其中内插件524提供电连接以便启用不同堆叠520A和520B中的管芯之间的通信。逻辑管芯521和522与存储器管芯523的分开有助于使热量从结构消散。

图5C示出包括管芯堆叠530A和530B的结构,所述管芯堆叠530A和530B具有与图5B所示的芯片堆叠520A和520B类似的布置;然而,与堆叠520A相对比,堆叠530A包括堆叠在FPGA管芯532和处理器逻辑管芯533上方的附加低延迟存储器管芯(即,SRAM管芯531)。SRAM管芯531用于实现配置高速缓冲存储器,以便减少用于重新配置FPGA 120中的编程区的时间。DRAM管芯534位于相邻堆叠530B中,并且两个管芯堆叠530A和530B都堆叠在内插件535上方,所述内插件535提供电连接以便启用不同堆叠530A和530B中的管芯之间的通信。

图5D示出一种结构,其中计算系统100的部件被布置在公共内插件545上方的三个管芯堆叠540A、540B和540C中。将管芯布置成多个管芯堆叠540A、540B和540C有助于使热量从结构消散。管芯堆叠540A包括处理器逻辑管芯542,管芯堆叠540C包括DRAM管芯544,并且管芯堆叠540B包括堆叠在FPGA管芯543上方的SRAM管芯541。管芯541-544各自能够通过公共内插件545所提供的电连接与其他堆叠中的管芯通信。

图6示出用于在计算系统100中执行指令流的过程600的实施方案,所述计算系统100包括可基于指令流中的指令来重新配置的FPGA 120。过程600的操作由计算系统100的各种部件执行,以便执行从处理器101发出的指令流中的指令。在一个实施方案中,指令流是连续指令流,其包括用于定义单个计算机程序的指令的至少一个子集。

过程600在框601处开始。在框601处,计算系统100将每个编程区的一个或多个可选配置存储在FPGA 120中。例如,与编程区122相关联的配置存储器111存储至少两种配置(状态A和状态B),其可以被选择用于编程到编程区122中。继续该示例,状态A可以包括用于配置编程区122以实现四个加法器单元的配置比特流,而状态B包括用于配置编程区122以实现四个乘法器单元的配置比特流。过程600从框601继续到框603。

在框603处,FPGA 120在指令流中接收第一指令。例如,处理器101可以派遣要在FPGA 120的编程区之一中执行的指令。在FPGA 120的配置逻辑121处接收指令。过程600从框603继续到框605。

在框605-607,配置逻辑121基于所接收的指令来确定是否应当在执行所接收的指令之前重新配置任何编程区或可以执行后续指令。在框605处,配置逻辑121确定在框603处接收的指令是否是显式重新配置指令。如果指令不是显式重新配置指令,则过程600在框607处继续。

在框607处,配置逻辑121确定是否已经将任何编程区配置用于执行在框603处接收的指令。例如,如果指令是乘法指令,则配置逻辑121确定编程区122或123中的任何一个的现有配置是否包括可用于执行指令的乘法器单元。在框607处,如果至少一个编程区能够执行指令,则过程600在框609处继续。

在框609处,在适当地配置用于执行指令的编程区中执行指令。因此,通过框603-609的操作,响应于接收到指令,在编程区中简单地执行指令,所述指令不是显式重新配置指令,并且在编程区被适当地配置用于执行指令时被接收。过程600继续从框609回到框603。

在框603处,FPGA 120在指令流中接收第二指令,这导致重新配置一个或多个编程区。在指令流中,第二指令可以是第一指令后面的下一个指令。换言之,致使编程区的重新配置的指令可以是与第一指令相同的连续指令流的一部分,使用现有配置在编程区中执行所述第一指令。在一个实施方案中,指令流可视为连续的,同时允许控制指令流的过程或实体从流中的每个指令自动行进到下一个指令,而不被另一个过程或实体(例如,操作系统、硬件装置等)中断。过程600从框603继续到框605。

在框605处,配置逻辑121确定在框603处接收的第二指令是否是显式重新配置指令。显式重新配置指令识别编程区以及所识别的编程区的配置。例如,显式重新配置指令可以识别编程区122和用于配置编程区122的配置存储器111中的状态B。如果第二指令是显式重新配置指令,则过程600在框611处继续。否则,过程600在框607处继续。

在框607处,配置逻辑121确定是否已经将任何编程区配置用于执行在框603处接收的第二指令。如果FPGA 120中的编程区已经被配置用于执行第二指令,则过程600在块609处继续并且在编程区中执行指令;否则,过程600在框611处继续。

在框611处,配置逻辑121识别FPGA 120中的一个或多个目标编程区,并且通过将一个或多个目标编程区的上下文数据存储在对应于一个或多个目标编程区的上下文存储器中来准备重新配置一个或多个目标编程区。例如,当响应于显式重新配置指令执行重新配置时,显式重新配置指令指示要重新配置FPGA 120中的哪个编程区。对于隐式重新配置,配置逻辑121可以将未使用或在不久的将来不预期使用的编程区识别为目标编程区。过程600从框611继续到框613。

在框613处,配置逻辑121通过打开目标编程区边界处的边界开关,将目标编程区与FPGA 120中的其他编程区隔离,以便将目标编程区的可配置逻辑块与其他编程区断开。目标编程区的这种隔离允许与FPGA 120中的任何其他编程区独立地重新配置目标编程区中的硬件。参考图2并且继续其中编程区122作为目标编程区的先前实例,配置逻辑121通过在编程区122的边界处断开边界开关222来隔离编程区122的可配置逻辑块131-134。过程600从框613继续到框615。

在框615处,配置逻辑121基于在框603处接收的指令来选择目标编程区的配置中的一个。当指令是显式重新配置指令时,配置逻辑121选择指令中指示的配置。例如,指示‘状态B’配置的显式重新配置指令将致使配置逻辑121选择存储在配置存储器111中的对应于状态B的配置比特流。

可替代地,如果在框603处接收的指令不是显式重新配置指令,则配置逻辑121使用功能表301来选择配置,如图3所示的。配置逻辑121在功能表301中查找指令的操作码(例如,ID1、ID2),以便确定用于配置编程区的配置比特流的地址(例如,地址A、地址B)。过程600从框615继续到框617。

在框617处,配置逻辑121使用所选配置比特流来重新配置目标编程区的可配置逻辑块中的硬件。存储器控制器102从配置存储器检索所选配置比特流,并且通过TSV 104将比特流传输到FPGA 120。然后,配置逻辑121使用配置比特流来重新配置目标编程区。例如,对于要根据状态B重新配置的目标编程区122,配置逻辑121通过TSV 104接收对应于状态B的配置比特流,并且使用状态B的配置比特流对编程区122的可配置逻辑块131-134进行编程。在一个实施方案中,可以在目标编程区122的对应高速缓冲存储器141中高速缓存配置比特流。在一个实施方案中,用于重新配置目标编程区的一个或多个可配置逻辑块中的硬件的持续时间可以小于1毫秒。过程600从框617继续到框619。

在框619处,如果框603处接收的指令待决执行,则过程600在框609继续,并且在重新配置的编程区中执行指令。否则,如果指令并非待决执行(例如,当指令是对其完成重新配置的显式重新配置指令时),则过程600继续回到框603以便接收指令流中的下一个指令。因此,执行过程600以循环操作以便执行在指令流中接收的指令,从而当响应于对特定功能的需求而显式或隐式地指导时,适当地重新配置编程区。

如本文所用,术语“联接到”可以指直接地或通过一个或多个中间部件间接地联接。可以使用其他信号对通过本文描述的各种总线提供的任何信号进行时间复用,并且通过一个或多个公共总线提供所述信号。附加地,电路部件或块之间的互连可以示为总线或单信号线。每个总线可以替代性地是一个或多个单信号线,并且每个单信号线可以替代性地是总线。

某些实施方案可以被实现为计算机程序产品,其可以包括存储在非瞬态计算机可读介质上的指令。这些指令可用于对通用或专用处理器进行编程以便执行所描述的操作。计算机可读介质包括用于存储或传输以机器(例如,计算机)可读形式(例如,软件、处理应用程序)的信息的任何机构。非瞬态计算机可读的存储介质可包括但不限于磁存储介质(例如软盘);光存储介质(例如CD-ROM);磁光存储介质;只读存储器(ROM);随机存取存储器(RAM);可擦除可编程存储器(例如EPROM和EEPROM);快闪存储器;适合用于存储电子指令的其他类型的介质。

另外,可以在分布式计算环境中实现一些实施方案,在所述环境中计算机可读介质存储在多于一个计算机系统上和/或由多于一个计算机系统执行。此外,可以跨连接计算机系统的传输介质拉或推在计算机系统之间转移的信息。

通常,在计算机可读存储介质上承载的表示计算系统100和/或其部分的数据结构可以是数据库、或其可由程序读取并直接或间接地用于制造包括计算系统100的硬件的他数据结构。例如,数据结构可以是用高级设计语言(HDL)(诸如Verilog或VHDL)对硬件功能性的行为级描述或寄存器传送级(RTL)描述。所述描述可以由合成工具读取,所述合成工具可以对描述进行合成,以便从合成库生成包括一系列门的网表。所述网表包括门集合,所述门还代表包括所述处计算系统100的硬件的功能性。随后可放置或选路发送所述网表以产生描述要应用于掩模的几何形状的数据集。所述掩模随后可以用于各种半导体制造步骤,以便产生对应于所述计算系统100的一个半导体电路或多个半导体电路。可替代地,计算机可读取存储介质上的数据库根据需要可以是网表(具有或不具有合成库)或数据集或图形数据系统(GDS)II数据。

尽管本文中的方法操作以特定顺序示出和描述,但每种方法的操作顺序可以调整,以便能够以逆序执行某些操作,或者以便某些操作可以与其他操作至少在一定程度上同时执行。在另一个实施方案中,不同操作的指示或子操作能够以间歇和/或交替方式实施。

在以上的说明书中,已经参考其特定示例性实施方案对这些实施方案进行了描述。然而,将显而易见的是:在不脱离如在随附权利要求书中阐述的实施方案的更宽广精神和范围的情况下,可以对其做出各种修改和改变。因此,应以说明性意义而不是限制性意义来理解本说明书和附图。

去获取专利,查看全文>

相似文献

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

客服邮箱:kefu@zhangqiaokeyan.com

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

  • 服务号