配置可编程设备的方法、可编程设备及机器可读存储介质技术

技术编号:9198085 阅读:142 留言:0更新日期:2013-09-26 02:19
本发明专利技术涉及配置可编程设备的方法、可编程设备及机器可读存储介质。该方法使用高级语言配置可编程集成电路设备。该方法包括:从高级语言的描述编译多个虚拟可编程设备;以高级语言描述用于可编程集成电路设备的用户配置;使用编程处理器解析该用户配置;以及作为解析结果,选择已编译的虚拟可编程设备其中之一。在可编程集成电路设备上实例化已编译的虚拟可编程设备其中所选择的设备,且使用该用户配置来配置已编译的虚拟可编程设备的实例化设备。

【技术实现步骤摘要】
配置可编程设备的方法、可编程设备及机器可读存储介质
本专利技术涉及使用高级语言来配置诸如现场可编程门阵列(FPGA)的可编程集成电路设备或其他类型的可编程逻辑设备(PLD)。
技术介绍
早期的可编程设备是一次可配置的。例如,配置可能已通过“烧断”——即断开——可熔链路来实现。备选地,配置可能已存储在可编程只读存储器中。这些设备一般为用户提供对设备进行配置以进行“乘积和”(或“P-TERM”)逻辑操作的能力。后来,结合了用于配置的可擦除可编程只读存储器(EPROM)的这种可编程逻辑设备变得可用,其允许设备被重新配置。再后来,结合了用于配置的静态随机存取存储器(SRAM)元件的可编程设备变得可用。同样可以被重新配置的这些设备在诸如EPROM的非易失性存储器中存储其配置,当设备通电时将这些配置从这些存储器加载到SRAM元件中。这些设备一般为用户提供对设备进行配置以进行查找表类型的逻辑操作的能力。这些设备在某个时间开始设置有随机存取存储器的嵌入块,该随机存取存储器可以被用户配置以用作随机存取存储器、只读存储器或逻辑(诸如P-TERM逻辑)。此外,随着可编程设备已变得越来越大,在针对各种常用功能的可编程设备上添加专用电路已变得更加普遍。这种专用电路可以包括用于时钟产生的锁相环或延迟锁定环,以及用于诸如加法或乘法的各种数学运算的各种电路。这通过配置可用的通用可编程逻辑而将用户从必须创建等效电路中解脱出来。尽管已经可以简单地通过智力判断应当在何处布置各种元件来手动配置最早期的可编程逻辑设备,但是甚至结合这种较早期的设备来提供允许用户按需布置逻辑且然后将该逻辑转换为可编程设备的配置的编程软件也是常见的。利用当前较大的设备(包括上述专用电路的设备),试图在不使用这种软件的条件下布置逻辑是不切实际的。这种软件现在还通常包括通常为称为“核(core)”的预定义功能,以用于配置某些常用结构,且尤其用于结合上述专用电路来配置用于数学操作的电路。例如,可以提供用于各种三角或代数功能的核。尽管可用的编程软件允许用户在被编程设备的能力内实现几乎任意所需逻辑设计,但是大多数这种软件需要诸如VHDL或Verilog这样的硬件描述语言的知识。然而,可编程设备的很多潜在用户并不是很精通硬件描述语言,而且可能更倾向于使用较高级编程语言来对设备进行编程。
技术实现思路
可被采用以配置可编程设备的一种高级语言是OpenCL(开放运算语言),不过对其他高级语言且尤其是包括C、C++、Fortran、C#、F#、BlueSpec和Matlab的其他高级综合语言的使用也在本专利技术的范围内。在OpenCL中,使用主机和内核(kernel)的组合执行计算,其中主机负责输入/输出(I/O)和建立任务,而内核根据独立输入执行计算。其中,存在内核的明确声明,且待处理的每组元件已知是独立的,每个内核可以实施为高性能硬件电路。基于在诸如FPGA的可编程设备上的可用空间的量,内核可以被复制以改善应用的性能。内核编译器通过硬件产生、系统集成以及与主机计算机交互而从OpenCL描述将内核转换成实现应用的硬件电路。编译器可以基于扩展为能够实现对OpenCL应用的编译的开源低级虚拟机编译器。编译器对OpenCL内核进行解析、分析、优化并将其实施为适于在诸如FPGA之类的可编程设备上实施的高性能流水线电路。然后可以使用适用于特定可编程设备的编程工具来编译系统。该设备还可以具有嵌入式硬处理器,或可以配置有嵌入式软处理,以运行OpenCL(或其他高级)代码,或者可以使用外部处理器。可以通过在嵌入式或外部处理器上执行主机程序来运行OpenCL或其他高级代码。根据本专利技术,提供一种使用高级语言配置可编程集成电路设备的方法。该方法包括:从高级语言的描述编译多个虚拟可编程设备;接收高级语言的针对可编程集成电路设备的用户配置的描述;使用编程处理器解析该用户配置,且作为解析结果,选择已编译的虚拟可编程设备其中之一。在可编程集成电路设备上实例化已编译的虚拟可编程设备其中所选择的设备,且使用该用户配置来配置已编译的虚拟可编程设备的实例化设备。还提供了其中虚拟可编程设备已在先前已编译的相应方法以及使用用于执行这种方法的指令编码的非暂时性机器可读存储介质。也提供根据这些方法编程的设备。附图说明当结合附图考虑下面的详细描述时,将显见本专利技术的其他特征、其属性和各种优点,其中贯穿附图,相同的参考符号表示相同的部件,且附图中:图1示出使用高级语言来配置可编程设备的已知方法;图2示出根据本专利技术实施方式的基本虚拟结构(fabric)的示例;图3示出根据本专利技术实施方式的在数学方面更为复杂的虚拟结构的示例;图4示出根据本专利技术实施方式包括软微处理器块的虚拟结构的示例;图5示出在包括根据本专利技术实施方式的方法的方法中使用的控制数据流图;图6示出根据本专利技术的实施方式在虚拟结构中配置的虚拟布线开关的示例;图7示出根据本专利技术的实施方式在虚拟结构中配置的具有虚拟FIFO的功能块的示例;图8示出根据本专利技术的实施方式用于使用虚拟结构库来配置可编程设备的方法的实施方式的流程图;图9示出根据本专利技术的实施方式用于使用虚拟结构库来配置可编程设备的另一方法的实施方式的流程图;图10是磁性数据存储介质的剖面图,该磁性数据存储介质使用用于执行根据本专利技术的方法的机器可执行指令的集合编码;图11是光学可读数据存储介质的剖面图,该光学可读数据存储介质使用用于执行根据本专利技术的方法的机器可执行指令的集合编码;以及图12是采用结合了本专利技术的可编程逻辑设备的说明性系统的简化框图。具体实施方式在OpenCL中,应用在两个部分——主机和内核——中执行。主机是负责处理I/O请求且设置用于并行处理的数据的程序。当主机准备处理数据时,它可以在内核上载入线程集合,该内核表示将由每个线程将执行的计算单元。每个线程通过从主机指定的存储器加载数据、处理这些数据且然后将结果存储回存储器以由用户或用户应用读取,来执行内核计算。在OpenCL术语中,内核和其上执行的数据被认为是线程。可以一次针对一组线程计算结果。线程可以分成工作组,这允许数据在工作组中的线程之间共享。通常,对于工作组中线程的执行顺序没有设置约束。出于数据存储和处理目的,每个内核可以访问多于一种类型的存储器,例如供所有线程共享的全局存储器、供相同工作组中的线程共享的局部存储器以及仅供单个线程使用的私有存储器。OpenCL应用的执行可以部分地在主机程序中且部分地通过执行一个或更多内核而进行。例如,在矢量加法中,表示矢量的数据阵列可以使用主机程序来建立,而实际加法可以使用一个或更多内核执行。可以通过主机程序中的OpenCL功能集合来促进应用的这两个部分之间的通信。这些功能定义了主机和内核之间的接口,允许主机程序控制处理什么数据以及处理何时开始,且检测处理何时结束。可以通过以主机程序和内核的集合开始使用诸如OpenCL的高级应用来编程诸如FPGA的可编程设备。使用可以为此目的而扩展的低级虚拟机(LLVM)编译器,将内核编译成硬件电路表示。编译处理开始于针对每个内核产生中间表示的高级解析器,诸如C语言解析器。中间表示可以是指令及其间依赖性的形式。这种表示然后可以被优化成目标可编程设备。优化的LLVM中间表示然后被转换成诸如控制本文档来自技高网
...
配置可编程设备的方法、可编程设备及机器可读存储介质

【技术保护点】
一种使用高级语言配置可编程集成电路设备的方法,所述方法包括:从所述高级语言的描述编译多个虚拟可编程设备;接收所述高级语言的、针对所述可编程集成电路设备的用户配置的描述;使用编程处理器解析所述用户配置,并且作为所述解析的结果,选择所述已编译的虚拟可编程设备中的一个虚拟可编程设备;在所述可编程集成电路设备上实例化所述已编译的虚拟可编程设备中的所述一个虚拟可编程设备;以及使用所述用户配置来配置所述已编译的虚拟可编程设备中的所述实例化的虚拟可编程设备。

【技术特征摘要】
2012.02.09 US 13/369,8361.一种使用高级语言配置可编程集成电路设备的方法,所述方法包括:从所述高级语言的虚拟可编程设备的描述编译多个虚拟可编程设备;接收所述高级语言的、针对所述可编程集成电路设备的用户配置的描述,所述用户配置包括第一配置和第二配置;使用编程处理器解析所述用户配置,并且作为所述解析的结果,选择所述已编译的虚拟可编程设备中的一个虚拟可编程设备;在所述可编程集成电路设备上实例化所述已编译的虚拟可编程设备中的所述一个虚拟可编程设备;在使用所述用户配置中的所述第一配置而不使用所述第二配置的情况下,来配置所述已编译的虚拟可编程设备中的所述实例化的虚拟可编程设备;针对所述已编译的虚拟可编程设备中经过配置的所述实例化的虚拟可编程设备进行测试;以及响应于所述测试的结果,卸载所述第一配置并且使用所述第二配置对所述已编译的虚拟可编程设备中的所述实例化的虚拟可编程设备进行配置。2.根据权利要求1所述的方法,其中所述高级语言是OpenCL。3.根据权利要求1所述的方法,其中所述实例化包括在位于所述可编程集成电路设备外部的处理器上,执行所述已编译的虚拟可编程设备中的所述一个虚拟可编程设备。4.根据权利要求1所述的方法,其中所述实例化包括在位于所述可编程集成电路设备上的配置处理器上,执行所述已编译的虚拟可编程设备中的所述一个虚拟可编程设备。5.根据权利要求4所述的方法,其中所述执行包括在所述可编程集成电路设备上实例化软处理器。6.根据权利要求4所述的方法,其中所述执行包括在嵌入到所述可编程集成电路设备中的硬配置处理器上,执行所述已编译的虚拟可编程设备中的所述一个虚拟可编程设备。7.根据权利要求1所述的方法,其中所述配置至少包括综合、布局和布线之一。8.根据权利要求1所述的方法,其中所述虚拟可编程设备中的每一个包括:从所述可编程集成电路设备的可编程资源配置的可配置布线资源;以及从所述可编程集成电路设备的可编程资源配置的多个复杂功能块。9.根据权利要求8所述的方法,其中所述多个复杂功能块至少包括算术功能块、三角功能块、复用逻辑块或软处理器块之一。10.根据权利要求1所述的方法,其中:针对多个虚拟可编程设备的多个已编译的配置包括针对在操作期间可重新配置的虚拟可编程设备的至少一个已编译的配置;所述选择包括作为所述解析的结果,选择针对在操作期间可重新配置的虚拟可编程设备的所述至少一个已编译的配置中的一个配置;所述实例化包括实例化针对在操作期间可重新配置的虚拟可编程设备的所述至少一个已编译的配置中的所选择的一个配置。11.一种可编程集成电路设备,其根据权利要求1所述的方法配置,且包括用于执行所述已编译的虚拟可编程设备中的所述一个虚拟可编程设备的处理器。12.根据权利要求11所述的可编程集成电路设备,其中所述处理器位于所述可编程集成电路设备外部。13.根据权利要求11所述的可编程集成电路设备,其中所述处理器是位于所述可编程集成电路设备板上的硬处理器。14.根据权利要求11所述的可编程集成电路设备,其中所述处理器从所述可编程集成电路设备的可编程资源配置。15.一种使用高级语言配置可编程集成电路设备的方法,所述方法包括:以所述高级语言描述用于所述可编程集成电路设备的用户配置,其中所述用户配置包括第一配置和第二配置;使用编程处理器解析所述用户配置,并且作为所述解析的结果,从来自虚拟可编程设备的描述的先前已编译的虚拟可编程设备的库中选择一个先前已编译的虚拟可编程设备;在所述可编程集成电路设备上实例化所述先前已编译的虚拟可编程设备;在使用所述用户配置中的所述第一配置而不使用所述第二配置的情况下,来配置所述实例化的先前已编译的虚拟可编程设备;利用所述用户配置中...

【专利技术属性】
技术研发人员:D·TL·陈D·辛格
申请(专利权)人:阿尔特拉公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1