This Application claims the benefit of Japanese Patent Application No. JP 2004-345400, filed on Nov. 30, 2004, and entitled “Custom LSI Development Platform, Instruction Set Architecture, Method For Generating Logic Circuit Configuration Information, And Program”, commonly assigned with the present application and incorporated herein by reference in its entirety for all purposes.
Disclosed embodiments herein relates to logic circuit development, and more particularly to a technology for designing, developing, and manufacturing an application specific custom LSI.
In a field using a custom LSI including an application specific integrated circuit (ASIC), in order to shorten a period for changing a specification or developing a product, a programmable logic circuit, such as a field programmable gate array (FPGA) or a programmable logic device (PLD), which can freely change the configurations of the logic circuits in a processor, has been widely used. However, as configurations of the logic circuits required for the custom LSI become complicated and the scales thereof increase, there is a problem in that a plurality of arithmetic and logic units (ALUs) must be provided in the FPGA or the PLD.
In logic circuits having a large scale, considering that all of the components do not always operate, a dynamic logic circuit reconfigurable process, which can dynamically reconfigure the logic circuit of the process, has been suggested in Japanese Patent Applications JP-A No. 2003-198362 and JP-A No. 2003-029969.
When designing and developing the system of the custom LSI, it must be determined which of the applications is realized by hardware and which of the applications is realized by software. If all the applications can be realized by hardware, high operation speed and low power consumption can be realized.
However, designing and developing costs increase, such as those related to chip manufacturing, the designing period, and the hardware designer. In contrast, if the software that operates on a general-purpose processor realizes all of the applications, it is difficult to accomplish the required system performance, but the designing and developing cost is reduced. One problem when a software developer develops the custom LSI is that the developer usually must use a hardware description language (HDL) that is not typically familiar to the software developer, such as ‘Verilog-HDL’ or ‘VHDL’, in describing the specification of the custom LSI. A lot of time is typically required to prepare the code of this HDL, because the code has a large amount of description. In addition, it often takes a long time to perform the compile or simulation for the code.
A high-level language or a modeling tool having high abstraction, such as C language, is mainly used for examining an algorithm applied to the LSI. However, if the logic circuit is prepared using the algorithm created in a high-level language, the examined algorithm should be rewritten in the HDL, and thus the preparing time increases. In addition, a potential problem is that once the logic circuit configuration is created in the HDL, it is difficult to change the algorithm. Another a problem is that the software developer usually must consider a specific limit of the hardware in the operation synthesizing step.
Disclosed is a technology of generating an instruction set architecture (hereinafter, referred to as ‘ISA’) and a series of logic circuit configuration information of a processor for executing an application program from an application program described in a high-level language. The present invention also relates to a custom LSI development platform technology which can design, develop, and manufacture the application specific custom LSI in a short time by applying the generated ISA and logic circuit configuration information to a dynamic logic circuit reconfigurable processor. Furthermore, disclosed is a dynamically reconfigurable processor, which is reconfigurable using the generated logic circuit configuration information.
It is an object of the present invention to provide a custom LSI development platform in which when a software developer prepares an application program in a high-level language, for example, C language, an instruction set architecture (ISA) and logic circuit configuration information are automatically generated based on the created application program. The generated ISA and logic circuit configuration information are then automatically applied to a dynamically reconfigurable logic circuit processor. It is another object of the present invention to provide a software module for generating an ISA and logic circuit configuration information from an application program created in a high-level language, and a dynamic logic circuit reconfigurable processor to which the generated ISA and logic circuit configuration information are automatically applied. It is a further object of the present invention to provide a program for generating an ISA and logic circuit configuration information from an application program created in a high-level language.
According to a first aspect of the present invention, there is provided a custom LSI development platform including a processor and a software module. The processor is a dynamic logic circuit reconfigurable processor. The software module includes an ISA generator for generating an ISA of the processor; and a logic circuit configuration generator for generating logic circuit configuration information of the processor from layout arrangement information of a programmable element (PE) constituting logic circuits of the processor and the ISA. The ISA generator includes a means for extracting the pattern of an instruction of a program described in a high-level language, and a means for comparing the pattern of the extracted instruction with the pattern of a custom instruction stored in a library. In addition, the ISA generator comprises a means for substituting the extracted instruction with the custom instruction and/or combination of the custom instructions. The ISA generator further includes a function call that is a means for calling the extracted custom instruction, and a means for generating a middle code including a control instruction of the processor.
The software module includes a means for converting the middle code and the custom instruction into an object code. The software module further includes a means for generating a logic circuit configuration object code from the logic circuit configuration information, and a simulator for simulating the performance of the ISA. In such embodiments, the software module further includes a creator for generating as a new custom instruction an instruction that is not substituted with the custom instruction during the process for substituting the extracted instruction with the custom instruction. The processor includes a dynamic reconfigurable logic circuit, a configuration memory for storing the logic circuit configuration information of the custom instruction, and a memory for storing the extracted custom instruction. In addition, the processor could include a register file for temporarily holding the result of executing the extracted custom instruction, and a controller for reading the logic circuit configuration information corresponding to the custom instruction from the configuration memory and reconfiguring the dynamic reconfigurable logic circuit when executing the custom instruction. Moreover, the controller can further include an index register for storing an index when accessing the memory, while the processor could further include a stack for storing a value of the index register.
According to a second aspect of the present invention, there is provided a method for generating an ISA of a processor, including extracting the pattern of an instruction of a program described in a high-level language, comparing the pattern of the extracted instruction with the pattern of a custom instruction stored in a library, and substituting the extracted instruction with the custom instruction and/or combination of the custom instructions to generate the ISA. In some embodiments, the logic element connection information substituted with the custom instruction is extracted, and the ISA is generated to include the logic element connection information. In addition, the logic element connection information may be stored in the library so as to be associated with the custom instruction. The instruction that is not substituted with the custom instruction among the program instructions in the process for substituting the program instruction with the custom instruction and/or combination of the custom instructions is created as a new custom instruction and is added to the library to extract the custom instruction again.
According to a third aspect of the present invention, there is a method for generating logic circuit configuration information of a processor that includes extracting the pattern of an instruction of a program described in a high-level language, comparing the pattern of the extracted instruction with the pattern of a custom instruction, and substituting the extracted instruction with the custom instruction and/or combination of the custom instructions. In this embodiment, the method also includes generating the logic circuit configuration information from logic element connection information associated with the custom instruction and layout arrangement information of a programmable element of the processor. In such embodiments, the logic element connection information may be stored in a library, and the processor may be a dynamic logic circuit reconfigurable processor.
According to a fourth aspect of the present invention, there is provided a dynamically reconfigurable microprocessor comprising a program stack operable to receive a plurality of program instructions, where the program instructions comprises at least first and second instruction sets. In addition, the processor includes a reconfigurable logic circuit in electrical communication with the program stack, where the reconfigurable logic circuit has alternative first and second data paths whereby data to be operated on according to the first instruction set passes through the first data path and data to be operated on according to the second instruction set passes through the second data path. In such embodiments of a processor, the reconfigurable logic circuit is reconfigurable according to whether instructions corresponding to the first or second instruction set are being executed by the microprocessor.
According to a fifth aspect, disclosed in a method of dynamically reconfiguring processing circuitry. In one embodiment, the method comprises receiving a plurality of program instructions to be executed by the processing circuitry, where the program instructions comprise at least first and second instruction sets. The method further comprises configuring a reconfigurable logic circuit in a first data path when operating on data according to the first instruction set, and configuring the reconfigurable logic circuit in a second data path when operating on data according to the second instruction set;
According to a sixth aspect of the present invention, there is provided a dynamic logic circuit reconfigurable processor. The processor may include a dynamic reconfigurable logic circuit, a configuration memory for storing layout arrangement information for each instruction of a programmable element (PE) constituting the dynamic reconfigurable logic circuit, a register file for temporarily holding a middle result of executing an instruction; a memory for storing the instruction, and a controller for managing the processor including executing order of the instruction. The controller further includes an index register for storing an index when accessing the memory, while the processor further includes a stack for storing a value of the index register.
According to a seventh aspect of the present invention, there is provided a computer-readable medium containing a set of instructions to be executed in a computer for generating an instruction set architecture of a dynamic logic circuit reconfigurable processor. The set of instructions provides the steps of extracting an instruction pattern from an instruction in an application program of the processor described in a high-level language, comparing the extracted instruction pattern with patterns of one or more custom instructions stored in a library, and substituting the instruction in the program with the one or more custom instructions to generate the instruction set architecture. In an eighth aspect, the instructions further include the step of generating the logic circuit configuration information from logic element connection information associated with the one or more custom instructions included in the instruction set and from layout arrangement information of at least one programmable element of the processor.
For a more complete understanding of this disclosure, and the advantages of the systems and methods herein, reference is now made to the following descriptions taken in conjunction with the accompanying drawings, in which:
Disclosed is a technology of generating an instruction set architecture (hereinafter, referred to as ‘ISA’) and a series of logic circuit configuration information of a processor for executing an application program from an application program described in a high-level language. Further, the present invention relates to a custom LSI development platform technology which can design, develop, and manufacture the application specific custom LSI in a short time by applying the generated ISA and logic circuit configuration information to a dynamic logic circuit reconfigurable processor. In accordance with the disclosed principles, a software developer can employ the disclosed technology to develop an application without considering hardware characteristics. As a result, the entire execution cycle number required for the development can be reduced and thus an application specific custom LSI can be developed in a short time. Further, commonness (platform) of property for developing the custom LSI is possible, and the design and development property can be standardized.
Before describing the disclosed technology in detail, some terms use throughout this disclosure should first be defined. In the present disclosure, a “dynamic logic circuit reconfigurable processor” is a processor having a function that dynamically reconfigures and processes a logic circuit in a processor according to an instruction. A “custom LSI” is an LSI including an application specific integrated circuit (ASIC) that is designed and manufactured according to needs. A “custom instruction” is an instruction that is executed by a process and defined by a user. An “instruction set” is a series of instruction codes included in a processor. An “instruction set architecture” (ISA) is composed of logic element connection information required for generating logic circuit configuration information of a processor and an instruction set. The “logic element connection information” is information defining, for example, an AND circuit, an OR circuit, and an XOR circuit in this order. Accordingly, on the logic circuit of the dynamic logic circuit reconfigurable processor, the information on where the AND circuit, the OR circuit, or the XOR circuit is located, or which wiring lines connects the AND circuit, the OR circuit, and the XOR circuit to one another, is not included. A “custom logic circuit” is a logic circuit for realizing a custom instruction, and is a circuit or a function that cannot be realized in a general-purpose processor due to the performance. A “platform” is a system composed of common hardware and software that can be used for realizing a different custom logic circuit. A “data path” is a logic circuit of a processor for executing a custom instruction. A “programmable element” is an element for constructing a logic circuit, such as the AND circuit, the OR circuit, the XOR circuit, or an ALU circuit.
With these definitions in mind, reference is now made to
If a software developer describes a source program 100 in a C language, an ISA generator 110 generates and compiles a middle code 111 and an ISA 112 to generate a program object code 141 and a logic circuit configuration object code 142. The dynamic logic circuit reconfigurable processor 20 processes operation of input data 27, while changing a reconfigurable logic circuit 24 for each custom instruction based on the program object code 141 and the logic circuit configuration object code 142, and outputs data 28 as a final result.
The middle code 111 is composed of a function call of the custom instruction and a control instruction, and the ISA 112 is composed of a custom instruction and logic element connection information. The middle code 111 is compiled to an assembler code 121 by a compiler 120 and then becomes a program object code 141. Further, the compiler 120 compiles the middle code 111 and the custom instruction of the ISA 112, for example, the custom instruction that multiplication is defined as ‘x’ to the assembler code 121. The custom instruction of the ISA 112 is converted into the assembler code 121 together with the middle code 111 by the compiler 120, and then becomes the program object code 141 by the assembler 140.
A logic circuit configuration generator 130 generates logic circuit configuration information 1311 from the logic element connection information of the ISA 112 and layout arrangement information 1310 of a programmable element (PE) of a reconfigurable logic circuit 24. It then converts it into the logic circuit configuration object code 142 by the assembler 140. The software module further includes a simulator 170 for simulating the performance of the ISA 112, specifically, program object code 141 and the logic circuit configuration object code 142.
The patterning module 1110 substitutes the instruction of the C source program 100 with the custom instruction until the entire C source program 100 can be executed. This includes covered instructions 1120 and non-covered instructions 1130. In addition, the patterning module 1110 generates the logic circuit configuration information of the reconfigurable logic circuit 24 for each custom instruction, with reference to the logic element connection information (associated with the custom instruction and stored in the library 160) and the layout arrangement information 1150 of the PE. The ISA generator 110 thus produces (1170) the ISA 112 and Middle Code 111.
The dynamic logic circuit reconfigurable processor 20 includes a controller 21, a stack 22, a configuration memory 23, a reconfigurable data path 24, a register file 25, and a memory 26. The controller 21 performs the entire management of the dynamic logic circuit reconfigurable processor 20, such as a load of the configuration data and a load of data in the memory 26. The controller 21 includes seven 22-bit index registers 211 formed therein and can access the memory 26 using the value of the index register 211. Also, the controller 21 is connected to the stack 22 for storing the value of the index register 211. The memory 26 is a storage device for storing the instruction of the dynamic logic circuit reconfigurable processor 20.
The ISA 112 is composed of a custom instruction(s) and logic element connection information. Logic circuit configuration information is generated from the logic element connection information of the ISA 112 and layout arrangement information of a PEs of the reconfigurable logic circuit 24. The logic circuit configuration information is then converted into the logic circuit configuration object code 142. This is typically done by an assembler, such as the assembler 140 described above. According to one embodiment, multiple sets of logic circuit configuration information object code 142 can be created. In
The dynamic reconfigurable logic circuit processor 20 disclosed herein is reconfigurable to provide processing operations typically provided by multiple dedicated processing units. For example, at one point the processor 20 may be configured to function as a central processing unit of a computer, while at a second point in time it is configured to operate as an application specific processor, and then at a third point in time it is configured to operate as a digital signal processor. By providing multiple processing functions as disclosed herein with a single processor 20, the disclosed principles result in a reduced overall device size and space. In addition, flexibility in processing capabilities is increased without increasing manufacturing costs. Specifically, the logic elements within the processor 20 are mapped to the particular application to be executed. As a result, each application is executed more efficiently with the disclosed technique, since each distinct application is executed by hardware reconfigured for each application. Moreover, such reconfiguration of the processor 20 is accomplished automatically from the application codes to be processed.
In the section ‘Flow-Code’, the executing order control of the program can be designated, and, if the branch condition can be designated, the process can be branched using the operation result at the reconfigurable data path 24. The sections ‘Dt_Adr’ and ‘Rel_Adr’ are used for designating a relative address. The section ‘Work_Rate’ can be used for designating the clock cycle number when executing the process by the reconfigurable data path 24 by 1, 2, 4 or 8 clock cycles according to the process content.
Looking briefly back at
In the dynamic logic circuit reconfigurable processor 20, the controller 21 reads the program from the memory 26 and determines whether the instruction uses the reconfigurable data path 24 or operates only the value of the index register 211. In a case of using the reconfigurable data path 24, the controller 21 reads adequate configuration data from the address of the configuration memory 23 designated in the program and loads this data to the reconfigurable data path 24. The reconfigurable data path 24 performs the process of the input data if the configuration (logic circuit configuration) is fixed. The operation result executed in each PE can be output to the VL and written in the register file 25. As a middle result, the data can be transferred to a separate function and can be used. By using the register file 25, a large process can be divided into a plurality of functions and can be then executed. In a case of using the value of the index register 211, since an operation circuit is prepared in the index register 211, the operation designated in the program is performed in the operation circuit and is transitioned to a next instruction.
By using the software module 10 and the dynamic logic circuit reconfigurable processor 20 according to an embodiment of the present invention, an encryption custom LSI of an advanced encryption standard (AES) was developed. The AES is selected as a standard encryption method for substituting a date encryption standard (DES). The ISA is generated from the program of the AES created in the C language, and the AES encryption process was performed in the dynamic logic circuit reconfigurable processor 20 to perform the performance evaluation. In the AES, the bit number of the plain text or the bit number of the key can be selected. However, in this embodiment, both of them were set as 128 bits.
The four converting processes of Byte-sub, Shift-Row, Mix-Column, and Add-Round-Key become the core of the encryption process. When executing the four converting processes, the custom instruction for realizing each converting process was created. In this embodiment, Byte-sub, Shift-Row, Mix-Column, and Add-Round-Key are divided into units of 32 bits, 128 bits, 64 bits, and 128 bits, respectively. For this reason, an instruction for dividing and combining the data was added.
The DES is an encryption standard standardized in the National Institute of Standards and Technology. By inputting 64-bit plain text and 56-bit key as a public key encryption using the same key in the encryption and decryption, 64-bit encryption text is output. In the DES encryption process, a 64-bit string is first input and is subjected to initial transpose based on a transposed table. The transposed bit string is divided by 32 bits. The divided bit strings are encrypted by the key and the encryption function F, respectively. The key uses 48-bit round key generated from the input 56-bit key. This process is performed 16 times, and the created left and right bit strings are combined to perform final transpose. Thus, the result is output as the encryption text.
First, a 56-bit key is input from the memory to the reconfigurable data path 24 by the instruction 0, and the transpose thereof is simultaneously executed. Similarly, 64-bit plain text is input by instruction 1, and the initial transpose thereof is simultaneously executed. Next, the cyclic shift of the key is executed by instruction 2 or 3 according to the round number. In instruction 4, the reduction transpose of the key and the encryption F function are executed by one instruction.
The exchange of the data between the instructions is performed through the register file 25. This round is repeated 16 times. In
Table 2 represents an operation frequency and throughput when performing the DES encryption process by the dynamic logic circuit reconfigurable processor 20. In this embodiment, the operation frequency of the DES encryption process was 6.25 MHz. For comparison, the result of performing the DES encryption process by an Intel Pentium® 4 is shown in Table 2.
The DES encryption process of the Pentium® 4 was executed by compiling the description of the specification of the DES encryption process by the C language. In the compile option, —O2 was used. The DES encryption process of the dynamic logic circuit reconfigurable processor 20 from Table 2 represents performance higher than the DES encryption process of Intel Pentium (registered trademark) 4 by 3.8 times. This is because the characteristic that the PE serving as the component of the dynamic logic circuit reconfigurable processor 20 can allocate any logic function to the input by one bit unit can be used in the DES encryption process.
In the DES encryption process, the transpose or the substitution of one bit unit is repeated. In a 32-bit microprocessor, such as the Intel Pentium® 4, when executing the process by one bit unit the process of extracting one bit is required. In the transpose process by one bit unit, the PE of the dynamic logic circuit reconfigurable processor 20 inputs the data from the register file 25 to the reconfigurable data path 24, moves it to a designated bit location, and stores it in the register file 25 again. Thereby, a large amount of data transpose processes can be performed by one instruction. In addition, since the PE can allocate any logic function to the input, a plurality of the processes depending on the data are synthesized and are executed by one instruction, thereby reducing the executed clock cycle number. In the DES encryption process of the reconfigurable data path 24, the clock cycle number required for the 64-bit plain text encryption was 70 cycles.
In sum, the present invention provides a custom LSI development platform in which when a software developer prepares an application program in a high-level language, for example, C language, an ISA and logic circuit configuration information are automatically generated based on the created application program. The generated ISA and logic circuit configuration information are then automatically applied to a dynamically reconfigurable logic circuit processor. Thus, the disclosed principles may be used as a platform in designing and developing the custom LSI, as well as in manufacturing an application specific custom LSI.
While various embodiments of the disclosed principles have been described above, it should be understood that they have been presented by way of example only, and not limitation. Thus, the breadth and scope of the invention(s) should not be limited by any of the above-described exemplary embodiments, but should be defined only in accordance with any claims and their equivalents issuing from this disclosure. Furthermore, the above advantages and features are provided in described embodiments, but shall not limit the application of such issued claims to processes and structures accomplishing any or all of the above advantages.
Additionally, the section headings herein are provided for consistency with the suggestions under 37 CFR 1.77 or otherwise to provide organizational cues. These headings shall not limit or characterize the invention(s) set out in any claims that may issue from this disclosure. Specifically and by way of example, although the headings refer to a “Technical Field,” such claims should not be limited by the language chosen under this heading to describe the so-called technical field. Further, a description of a technology in the “Background” is not to be construed as an admission that technology is prior art to any invention(s) in this disclosure. Neither is the “Brief Summary” to be considered as a characterization of the invention(s) set forth in issued claims. Furthermore, any reference in this disclosure to “invention” in the singular should not be used to argue that there is only a single point of novelty in this disclosure. Multiple inventions may be set forth according to the limitations of the multiple claims issuing from this disclosure, and such claims accordingly define the invention(s), and their equivalents, that are protected thereby. In all instances, the scope of such claims shall be considered on their own merits in light of this disclosure, but should not be constrained by the headings set forth herein.
Number | Date | Country | Kind |
---|---|---|---|
JP2004-345400 | Nov 2004 | JP | national |