发明内容
本发明公开了从用高级语言描述的应用程序生成用于执行应用程序的处理器的指令集体系结构(此后称为“ISA”)和一系列逻辑电路配置信息的技术。本发明还涉及可以通过向动态逻辑电路可重配置处理器应用所生成的ISA和逻辑电路配置信息来在短时间内设计、开发和制造专用定制LSI的定制LSI开发平台技术。此外,本发明还公开了一种动态可重配置处理器,其可使用所生成的逻辑电路配置信息而被重配置。
本发明的目的在于提供定制LSI开发平台,其中当软件开发者在用例如C语言这样的高级语言准备应用程序时,指令集体系结构(ISA)和逻辑电路配置信息被基于所创建的应用程序自动生成。所生成的ISA和逻辑电路配置信息随后被自动应用于动态可重配置逻辑电路处理器。本发明的另一目的在于提供从用高级语言创建的应用程序生成ISA和逻辑电路配置信息的软件模块,以及所生成的ISA和逻辑电路配置信息被自动应用于的动态逻辑电路可重配置处理器。本发明的另一目的在于提供用于从用高级语言创建的应用程序生成ISA和逻辑电路配置信息的程序。
根据本发明的第一方面,提供了一种包括处理器和软件模块的定制LSI开发平台。该处理器是动态逻辑电路可重配置处理器。软件模块包括:ISA生成器,用于生成处理器的ISA;以及逻辑电路配置生成器,用于从构成所述处理器的逻辑电路的可编程元件(PE)的布图布置信息和所述ISA生成逻辑电路配置信息。所述ISA生成器包括用于提取用高级语言描述的程序的指令模式的装置,以及用于将所提取的指令模式与存储在库中的定制指令的模式相比较的装置。此外,所述ISA生成器包括用于将所提取的指令替换为所述定制指令和/或所述定制指令的组合的装置。所述ISA生成器还包括作为用于调用所提取的定制指令的装置的函数调用,以及用于生成包括处理器的控制指令的中间代码的装置。
软件模块包括用于将中间代码和定制指令转换为目标代码的装置。软件模块还包括用于从逻辑电路配置信息生成逻辑电路配置目标代码的装置,以及用于仿真ISA的性能的仿真器。在该实施例中,软件模块还包括用于在将所提取的指令替换为定制指令的过程期间未被替换为定制指令的指令生成为新定制指令的创建器。所述处理器包括动态可重配置逻辑电路、用于存储定制指令的逻辑电路配置信息的配置存储器,以及用于存储所提取的定制指令的存储器。此外,处理器还包括用于临时保存执行所提取的定制指令的结果的寄存器文件,以及用于从配置存储器读取对应于定制指令的逻辑电路配置信息并在执行定制指令时重配置动态可重配置逻辑电路的控制器。此外,控制器还可以包括用于在访问存储器时存储变址的变址寄存器,而处理器还可包括用于存储变址寄存器的值的栈。
根据本发明的第二方面,提供了一种用于生成处理器的ISA的方法,包括从用高级语言描述的程序提取指令模式;将所提取的指令模式与库中存储的定制指令的模式相比较;以及将所提取的指令替换为定制指令和/或定制指令的组合,以便生成ISA。在一些实施例中,提取被替换为定制指令的逻辑元件连接信息,并生成ISA以包括逻辑元件连接信息。此外,逻辑元件连接信息可被存储在库中以便与定制指令相关联。程序指令中在用于将程序指令替换为定制指令和/或定制指令的组合的过程中未被替换为定制指令的指令被创建为新定制指令,并被添加到库以便再次提取定制指令。
根据本发明的第三方面,提供了一种用于生成处理器的逻辑电路配置信息的方法,包括提取用高级语言描述的程序的指令模式,将所提取的指令模式与定制指令的模数相比较,并将所提取的指令替换为定制指令和/或定制指令的组合。在该实施例中,该方法还包括从与定制指令相关联的逻辑元件连接信息和处理器的可编程元件的布图布置信息生成逻辑电路配置信息。在这些实施例中,逻辑元件连接信息可被存储在库中,处理器可以是动态逻辑电路可重配置处理器。
根据本发明的第四方面,提供了一种包括可操作来接收多个程序指令的动态可重配置微处理器,其中程序指令包括至少第一和第二指令集。此外,处理器包括与程序栈电通信的可重配置逻辑电路,其中可重配置逻辑电路具有可互换的第一和第二数据路径,其中要根据第一指令集操作的数据经过第一数据路径,要根据第二指令集操作的数据经过第二数据路径。在处理器的这些实施例中,可重配置逻辑电路可根据微处理器正在执行与第一还是第二指令集相对应的指令而被重配置。
根据第五方面,本发明公开了动态重配置处理电路的方法。在一个实施例中,该方法包括接收要由处理电路执行的多个程序指令,其中程序指令包括至少第一和第二指令集。该方法还包括当根据第一指令集操作数据时将可重配置逻辑电路配置到第一数据路径,当根据第二指令集操作数据时将可重配置逻辑电路配置到第二数据路径;
根据本发明的第六方面,提供了一种动态逻辑电路可重配置处理器。该处理器可以包括动态可重配置逻辑电路、用于存储用于构成动态可重配置逻辑电路的可编程元件(PE)的每个指令的布图布置信息的配置存储器、用于临时保存执行指令的中间结果的寄存器文件、用于存储指令的存储器,以及用于管理处理器(包括指令的执行顺序)的控制。该控制器还包括用于在访问存储器时存储变址的变址寄存器,而处理器还包括用于存储变址寄存器的值的栈。
根据本发明的第七方面,提供了包含在计算机中执行的用于生成动态逻辑电路可重配置处理器的指令集体系结构的一组指令的计算机可读介质。所述一组指令提供以下步骤:从用高级语言描述的处理器的应用程序中的指令提取指令模式;将所提取的指令模式与库中存储的一个或多个定制指令的模式相比较;以及将程序中的指令替换为一个或多个定制指令以便生成指令集体系结构。在第八方面中,指令还包括从与指令集中包括的一个或多个定制指令相关联的逻辑元件连接信息和从处理器的至少一个可编程元件的布图布置信息生成逻辑电路配置信息的步骤。
具体实施方式
本发明公开了生成处理器的指令集体系结构(此后称为“ISA”)和一系列逻辑电路配置信息以便从用高级语言描述的应用程序执行应用程序的技术。此外,本发明还涉及可以通过将所生成的ISA和逻辑电路配置信息应用于动态逻辑电路可重配置处理器来在短时间内设计、开发和制造专用定制LSI的定制LSI开发平台技术。根据所公开的原理,软件开发者可以采用所公开的技术来开发应用,而不考虑硬件特性。因此可减少开发所需的整个执行周期数,于是可以在短时间内开发专用定制LSI。此外,可以实现用于开发定制LSI的属性的共性(平台),从而使设计和开发属性标准化。
在详细描述所公开的技术之前,应当首先定义本公开全文中使用的一些术语。在本公开中,“动态逻辑电路可重配置处理器”是具有根据指令来动态重配置和处理处理器中的逻辑电路的处理器。“定制LSI”是包括根据需要被设计和制造的专用集成电路(ASIC)的LSI。“定制指令”是由过程执行并由用户定义的指令。“指令集”是处理器中包括的一系列指令代码。“指令集体系结构”(ISA)由生成处理器的逻辑电路配置信息所需的逻辑元件连接信息和指令集构成。“逻辑元件连接信息”例如是定义以此顺序排列的AND(与)电路、OR(或)电路和XOR(异或)电路的信息。相应地,在动态逻辑电路可重配置处理器的逻辑电路中,不包括关于AND电路、OR电路或XOR电路位于何处或什么导线将AND电路、OR电路和XOR电路彼此连接的信息。“定制逻辑电路”是用于实现定制指令的逻辑电路,并且是由于性能需要而不能在通用处理器中实现的电路或功能。“平台”是由可被用来实现不同的定制逻辑电路的公共硬件和软件构成的系统。“数据路径”是用于执行定制指令的处理器的逻辑电路。“可编程元件”是用于构造诸如AND电路、OR电路、XOR电路或ALU电路等逻辑电路的元件。
现在依照这些定义参考图1,其示出了根据本发明的定制LSI开发平台1的一个实施例的整体结构的框图。定制LSI开发平台1包括动态逻辑电路可重配置处理器20和软件模块10。软件模块10由一系列软件构成,所述一系列软件用于针对每个定制指令生成用于动态改变动态逻辑电路可重配置处理器20中的ISA和动态逻辑电路可重配置处理器20中的可重配置逻辑电路24(可重配置数据路径)的逻辑电路配置信息。
如果软件开发者用C语言描述源程序100,则ISA生成器110生成和编译中间代码111和ISA 112以便生成程序目标代码141和逻辑电路配置目标代码142。动态逻辑电路可重配置处理器20处理输入数据27的操作,同时基于程序目标代码141和逻辑电路配置目标代码142针对每个定制指令改变可重配置逻辑电路24,并且输出数据28作为最终结果。
图2是图1所示的软件模块10的详细框图。如果应用C源程序100,则ISA生成器110启动并分析C源程序100的指令结构。此外,在定制指令库160中存储有事先定义的多个定制指令。ISA生成器110提取在C源程序100中正被使用或被重复使用的指令的模式,将其与库160中的定制指令的模式相比较,将C源程序100中的指令替换为定制指令,并生成中间代码111和ISA 112。
中间代码111由定制指令的函数调用和控制指令构成,ISA 112由定制指令和逻辑元件连接信息构成。中间代码111被编译器120编译成汇编代码121,然后变为程序目标代码141。此外,编译器120将中间代码111和ISA 112的定制指令(例如将乘法定义成“×”的定制指令)编译成汇编代码121。ISA 112的定制指令与中间代码111一起被编译器120转换成汇编代码121,然后被汇编器140变为程序目标代码141。
逻辑电路配置生成器130从ISA 112的逻辑元件连接信息和可重配置逻辑电路24的可编程元件(PE)的布图布置信息1310生成逻辑电路配置信息1311。然后,它通过汇编器140将其转换为逻辑电路配置目标代码142。软件模块还包括用于仿真ISA 112的性能(具体而言是程序目标代码141和逻辑电路配置目标代码142)的仿真器170。
图3是ISA生成器110的详细框图。如图3所示,模式模块1110参考库160提取在C源程序100中正被使用或重复使用的指令,将所提取的指令的模式与存储在库160中的定制指令的模式相比较,并将相同指令替换为定制指令(1140)。未被模式模块1110作为定制指令提取的(未作为定制指令被事先创建的)各个指令被创建器150新定义和创建,或者如果所述各个指令可以被合成为已有的定制指令,则它们被合成为已有的定制指令并被定义为新定制指令(1160)。库160的定制指令总是通过定制指令(1160)的添加和合成而被更新。
模式模块1110将C源程序100的指令替换为定制指令,直到C源程序100可被执行。这包括被覆盖指令1120和未被覆盖指令1130。此外,模式模块1110参考逻辑元件连接信息(与定制指令相关联并存储在库160中)和PE的布图布置信息1150,针对每个定制指令生成可重配置逻辑电路24的逻辑电路配置信息。因此,ISA生成器110产生(1170)ISA 112和中间代码111。
图4是示出了根据本发明实施例的动态逻辑电路可重配置处理器20的框图。动态逻辑电路可重配置处理器20包括可重配置数据路径(可重配置逻辑电路)24并通过顺序控制执行程序。动态逻辑电路可重配置处理器20执行C源程序100的过程内容,同时针对每个步骤重置逻辑电路配置。此外,步骤是执行一个指令,包括设置逻辑电路配置和执行操作,所需的时段。此外,逻辑电路配置信息是用于执行定制指令的可重配置逻辑电路的配置信息。
动态逻辑电路可重配置处理器20包括控制器21、栈22、配置存储器23、可重配置数据路径24、寄存器文件25和存储器26。控制器21执行动态逻辑电路可重配置处理器20的整个管理,例如配置数据加载和存储器26中的数据的加载。控制器21包括形成于其中的7个22位变址寄存器211,并且可使用变址寄存器211的值来访问存储器26。此外,控制器21连接到用于存储变址寄存器211的值的栈22。存储器26是用于存储动态逻辑电路可重配置处理器20的指令的存储器件。
图5示出了图4所示动态逻辑电路处理器20的功能框图。该功能图示出了根据所公开的原理,从高级语言源程序动态重配置逻辑电路。如上所述,ISA生成器分析高级源程序100的指令结构。ISA生成器提取在C源程序100中正被使用或重复使用的指令的模式,并将其与库中的定制指令的模式相比较。然后,ISA生成器将源程序100中的指令替换为定制指令,并生成中间代码(见上文)和ISA 112。
ISA 112由(一个或多个)定制指令和逻辑元件连接信息构成。逻辑电路配置信息是从ISA 112的逻辑元件连接信息和可重配置数据路径24的PE的布图布置信息生成的。然后,逻辑电路配置信息被转换成逻辑电路配置目标代码142。这一般是由汇编器(例如上述汇编器140)完成的。根据一个实施例,可以创建多个逻辑电路配置信息目标代码142的集合。在图5中,这些目标代码的示例被标记为142a、142b、142c,但是对可以生成的各目标代码的数量没有限制,并且在示例性实施例中,使用最合适的指令集。每个目标代码集142a、142b、142c规定了动态可重配置逻辑电路24中的相应配置。它们被分别标记为24a、24b、24c,并代表包括逻辑电路24的可编程逻辑元件中的分别的配置。一旦创建了所需的逻辑电路24配置,该实施例中就使用64位寄存器来利用选定配置执行所需代码。
这里公开的动态可重配置逻辑电路处理器20可被重配置来提供一般由多个专门处理单元提供的处理操作。例如,在一个时间点,处理器20可被配置为充当计算机的中央处理单元,而在第二时间点,它被配置为充当专用处理器,然后在第三时间点,它被配置为充当数字信号处理器。通过利用单个处理器20提供这里公开的功能,所公开的原理缩小了整体器件大小和空间。此外,处理能力的灵活性增加而不增加制造成本。具体而言,处理器20中的逻辑元件被映射到要被执行的特定应用。因此,利用所公开的技术,每个应用被更高效地执行,因为每个不同应用是由针对每个应用重配置的硬件执行的。此外,处理器20的这种重配置是根据要被处理的应用代码自动实现的。
图6示出了存储器26存储的指令格式的结构。在图6中,在部分“Exe-Non”中,确定指令是通过可重配置数据路径24的操作执行,还是仅通过操纵变址寄存器211的值而不使用可重配置数据路径24来执行。如果指令是通过可重配置数据路径24的操作执行的,则其中存储有足够配置数据的配置存储器23的地址被存储,并且用于该操作的寄存器文件25被指定。如果指令是通过操纵变址寄存器211的值来执行的,则操作内容和用于操作的变址寄存器211被指定。如果在部分“ImData”中指定存储器地址,则存储器26和变址寄存器211之间的数据交换可被执行。
在部分“Flow-Code”中,程序的执行顺序控制可被指定,并且如果分支条件可被指定,则可使用可重配置数据路径24处的操作结果来分支处理。部分“Dt_Adr”和“Rel_Adr”被用于指定相关地址。部分“Work_Rate”可被用于指定在可重配置数据路径24根据过程内容以1、2、4或8个时钟周期执行过程时的时钟周期数。
简要回看图4,配置存储器23是用于存储配置数据的存储器。配置存储器23可以存储定制指令的128个配置数据。寄存器文件25是用于存储可重配置数据路径24的每个PE处的操作结果,并将它传送到不同功能的寄存器。一个字具有256位宽度。寄存器文件25连接到可重配置数据路径24的PE,存储的寄存器文件25的位位置根据用于输出数据的PE的位置确定。
图7示出了根据本发明的实施例的可重配置数据路径24的结构。在可重配置数据路径24中,PE被布置在16行×8列中。PE具有6个输入和两个输出,并且可以向输入分配任意逻辑功能。PE通过垂直线路(VL)和水平线路(HL)彼此连接。VL连接到一列的各个PE,每个VL连接到HL。切换单元(SW)控制信号从VL到HL或从HL到VL的交换。VL具有64位宽度,其数量为8,HL具有64位宽度,其数量为7。此外,64位数据可一次从存储器被加载到可重配置数据路径24。
在动态逻辑电路可重配置处理器20中,控制器21从存储器26读取程序,并确定指令使用可重配置数据路径24还是仅操作变址寄存器211的值。在使用可重配置数据路径24的情形下,控制器21从程序中指定的配置存储器23的地址读取足够的配置数据,并将该数据加载到可重配置数据路径24。如果配置(逻辑电路配置)固定了,则可重配置数据路径24执行输入数据的处理。在每个PE中执行的操作结果可被输出到VL并写入寄存器文件25。作为中间结果,数据可被传送到独立的函数并且可被使用。通过使用寄存器文件25,大型过程可被划分为多个函数并可被随后执行。在使用变址寄存器211的值的情形下,由于在变址寄存器211中准备操作电路,因此在程序中指定的操作在操作电路中被执行,并且被过渡到下一指令。
实施例1:
通过使用根据本发明实施例的软件模块10和动态逻辑电路可重配置处理器20,开发出增强加密标准(AES)的加密定制LSI。AES被选择作为用于替换数据加密标准(DES)的标准加密方法。ISA是从用C语言创建的AES的程序生成的,AES加密过程在动态逻辑电路可重配置处理器20中执行,以便执行性能评估。在AES中,明文的位数或密钥的位数是可以选择的。但是,在本实施例中,它们都被设置为128位。
图8示出了AES加密过程的流程。首先,称为“State”的二维布置的数据格式明文被布置。轮转密钥(round key)被生成(S1),State和轮转密钥的异或被执行(S2)。轮转函数被执行预定次数。在本实施例中,轮转函数在以下条件下被执行9次。通过以下4个转换来执行轮转函数。首先,具有8位输入和8位输出(byte-sub)的s-box转换过程被执行(S3)。接下来,用于执行关于行的字节单元的循环移位的Shift-Row被执行(S4)。接下来,针对每列的矩阵操作Mix-Column被执行(S5)。此外,State和轮转密钥的异或(Add-Round-Key)被执行(S6)。步骤S3到S6被重复执行9次。最后,Byte-sub(S7)、Shift-Row(S8)和Add-Round-Key(S9)被执行,并且获得密文(Encrypted)(S10)。
四个转换过程Byte-sub、Shift-Row、Mix-Column和Add-Round-Key成为加密过程的核心。当执行这四个转换过程时,用于实现每个转换过程的定制指令被创建。在该实施例中,Byte-sub、Shift-Row、Mix-Column和Add-Round-Key被分别划分成32位、128位、64位和128位的单元。因此,用于划分和组合数据的指令被添加。
图9和图10是用C语言描述的AES加密过程的中间代码111的示例,包括Byte-sub、Shift-Row、Mix-Column和Add-Round-Key。如图9和图10所示,AES加密过程的主例程(main routine)是“encrypt”函数。在图9的中间代码中,定制指令的头部被附着以“vul-”。因此,在整个过程中获得309个周期,在加密过程中获得79个周期。
实施例2:
DES是美国标准与技术研究院(National Institute of Standards andTechnology)规定的加密标准。通过输入64位明文和56位密钥作为在加密和解密中使用相同密钥的公共密钥加密,输出64位密文。在DES加密过程中,64位的串被首先输入并经历基于换位表的初始换位。经换位的位串被按32位划分。经划分的位串分别被利用密钥和加密函数F被加密。密钥使用从输入的56位密钥生成的48位轮转密钥。该过程被执行16次,所创建的左和右位串被组合以执行最终换位。因此,结果被输出作为密文。
图11是DES加密过程的流程图。在动态逻辑电路可重配置处理器20的DES加密过程中需要6个定制指令。表1示出了在DES加密过程中使用的定制指令及其内容。
表1
| 定制指令 |
内容 |
| 0 |
密钥的读取和密钥生成单元的换位 |
| 1 |
明文的读取和初始换位 |
| 2 |
密钥生成单元的1位左循环移位 |
| 3 |
密钥生成单元的2位左循环移位 |
| 4 |
密钥生成单元的缩减换位和F函数,以及异或 |
| 5 |
初始换位的反转和输出 |
首先,通过指令0,56位密钥被从存储器输入到可重配置数据路径24,并且其换位被同时执行。类似地,通过指令1,64位明文被输入,并且其初始换位被同时执行。接下来,根据轮转号码,通过指令2或3执行密钥的循环移位。在指令4中,密钥的缩减换位和加密F函数通过一个指令被执行。
指令之间的数据交换是通过寄存器文件25执行的。该轮转过程被执行16次。在图11中,该重复过程被条件分支过程执行,但是在本实施例中,该重复过程被展开并被顺序执行。这是为了减小设计电路规模,因为为了执行条件分支过程,必须制造用于确定轮转号码的冗余电路。最后执行初始换位的反转,64位密文在存储器中输出。
表2示出了在由动态逻辑电路可重配置处理器20执行DES加密过程时的操作频率和吞吐量。在本实施例中,DES加密过程的操作频率是6.25MHz。作为比较,表2示出了由Intel Pentium4执行DES加密过程的结果。
表2
|
|
操作频率 |
吞吐量 |
| Vulcan |
6.25MHz |
570KB/sec |
| Pentium 4 |
2.4GHz |
150KB/sec |
Pentium4的DES加密过程是通过编译C语言的DES加密过程的规范的说明来执行的。在编译选项中使用-O2。从表2看,动态逻辑电路可重配置处理器20的DES加密过程表现出比Intel Pentium(注册商标)4的DES加密过程高3.8倍的性能。这是因为在DES加密过程中可以使用这样的特性,即充当动态逻辑电路可重配置处理器20的组件的PE可以以一位为单元向输入分配任意逻辑功能。
在DES加密过程中,一位单元的换位或替换被重复。在诸如IntelPentium4等32位微处理器中,在以一位为单元执行过程时需要提取一位的过程。在以一位为单元的换位过程中,动态逻辑电路可重配置处理器20的PE将数据从寄存器文件25输入到可重配置数据路径24,将其移动到指定的位位置,并将其再次存储在寄存器文件25中。因此,通过一个指令,可以执行大量数据换位过程。另外,由于PE可以向输入分配任意逻辑功能,所以依赖于数据的多个过程被一个指令合成和执行,从而减少了所执行的时钟周期数。在可重配置数据路径24的DES加密过程中,64位明文加密所需的时钟周期数是70个周期。
总之,本发明提供了定制LSI开发平台,其中当软件开发者用高级语言(例如C语言)准备应用程序时,ISA和逻辑电路配置信息被基于所创建的应用程序自动生成。所生成的ISA和逻辑电路配置信息随后被自动应用到动态可重配置逻辑电路处理器。因此,所公开的原理可被用作为设计和开发定制LSI以及制造专用定制LSI的平台。
虽然上面已经描述了所公开的原理的各种实施例,但是应当理解,它们仅是示例性而非限制性的。因此,本发明的精神和范围不应限于上述任意示例性实施例,而是仅根据本公开公布的任意权利要求及其等同物来限定。此外,所描述的实施例中提供了上述优点和特征,但是它们不应当限制实现任意或全部上述优点的过程和结构的所公布的权利要求的应用。
此外,这里的各部分的标题被提供以与37 CFR 1.77的建议相一致,或者提供组织提示。这些标题不应限制或限定本公开公布的任意权利要求中列出的发明。具体例如,虽然标题是“技术领域”,但是这些权利要求不应受限于在该标题下选择的用于描述所谓的技术领域的语言。此外,“背景技术”中对技术的描述不应被理解为承认该技术是本公开中任意发明的现有技术。“技术内容”也不应被理解为在所公布的权利要求中列出的对发明的限定。此外,本公开中对“发明”的单数引用不应被用来证明本公开中只有单个创新点。根据本公开公布的多个权利要求的限制,可以列举多个发明,因此这些权利要求定义了受保护的发明及其等同物。在所有情形下,这些权利要求的范围应被理解为它们在本公开中体现出的本质,而不应受限于这里列举的标题。
可以在不脱离本发明的广泛精神和范围的情况下作出各种实施例和改变。上述实施例意在说明本发明,而非限制本发明的范围。本发明的范围由所附权利要求而非实施例示出。在本发明的权利要求的等同物的意义内和权利要求范围内作出的各种修改应被认为落在本发明的范围内。
本发明基于2004年11月30日提交的日本专利申请No.2004-345400、2005年11月24日提交的日本专利申请No.2005-338457和2005年11月4日提交的美国专利申请No.11/267,026,并且包括说明书、权利要求书、附图和摘要。上述日本专利申请的全部公开内容通过引用结合于此。