Compiling system and method for reconfigurable computing
First Claim
1. A compiling method for generating a sequence of program instructions for use in a dynamically reconfigurable processing unit having an internal hardware organization that is selectively changeable during execution of the sequence of program instructions among a plurality of hardware architectures, each hardware architecture executing instructions from a corresponding instruction set, the compiling method comprising:
- a) accepting as input a source file containing a plurality of source code instruction statements including at least a first subset of instruction statements and a second subset of instruction statements;
b) identifying a first instruction set for the first subset of instruction statements by retrieving a first reconfiguration directive from the source code, the reconfiguration directive specifying the first instruction set;
c) identifying a second instruction set for the second subset of instruction statements by retrieving a second reconfiguration directive from the source code, the reconfiguration directive specifying the second instruction set; and
d) compiling the first subset of instruction statements for execution using the first instruction set and compiling the second subset of instruction statements for execution using the second instruction set;
wherein each of the reconfiguration directive specifies a change in hardware organization to occur during program execution.
1 Assignment
0 Petitions
Accused Products
Abstract
A compiling system and method for generating a sequence of program instructions for use in a dynamically reconfigurable processing unit having an internal hardware organization that is selectively changeable among a plurality of hardware architectures, each hardware architecture executing instructions from a corresponding instruction set. Source files are compiled for execution using various instruction set architectures as specified by reconfiguration directives. Object files optionally encapsulate bitstreams specifying hardware architectures corresponding to instruction set architectures with executable code for execution on the architectures.
244 Citations
32 Claims
-
1. A compiling method for generating a sequence of program instructions for use in a dynamically reconfigurable processing unit having an internal hardware organization that is selectively changeable during execution of the sequence of program instructions among a plurality of hardware architectures, each hardware architecture executing instructions from a corresponding instruction set, the compiling method comprising:
-
a) accepting as input a source file containing a plurality of source code instruction statements including at least a first subset of instruction statements and a second subset of instruction statements; b) identifying a first instruction set for the first subset of instruction statements by retrieving a first reconfiguration directive from the source code, the reconfiguration directive specifying the first instruction set; c) identifying a second instruction set for the second subset of instruction statements by retrieving a second reconfiguration directive from the source code, the reconfiguration directive specifying the second instruction set; and d) compiling the first subset of instruction statements for execution using the first instruction set and compiling the second subset of instruction statements for execution using the second instruction set; wherein each of the reconfiguration directive specifies a change in hardware organization to occur during program execution. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15)
-
-
16. A compiling method for generating a sequence of program instructions for use in a dynamically reconfigurable processing unit having an internal hardware organization that is selectively changeable during execution of the sequence of program instructions among a plurality of hardware architectures, each hardware architecture executing instructions from a corresponding instruction set, the compiling method comprising:
-
a) selecting a source code instruction statement from a source file containing a plurality of source code instruction statements; b) responsive to the statement comprising a function call, performing the steps of; b.1) determining a first instruction set currently in context; b.2) determining a second instruction set for the function call; b.3) responsive to the first instruction set being different than the second instruction set, performing the steps of; b.3.1) emitting code statements for reconfiguration to the second instruction set; b.3.2) emitting a compiled code statement for the function call; and b.3.3) emitting code statements for reconfiguration to the first instruction set; and b.4) responsive to the first instruction set architecture being identical to the second instruction set, emitting a compiled code statement for the function call; c) responsive to the statement not comprising a function call, emitting a compiled code statement for the statement; and d) repeating a) through c) for each source code instruction statement in the source file. - View Dependent Claims (17, 18, 19, 20)
-
-
21. A method of reconfiguring a dynamically reconfigurable processing unit during execution of a program comprising a sequence of program instructions, the method comprising:
-
a) identifying a reconfiguration directive from the source code, the reconfiguration directive specifying a new instruction set; b) storing a state of the program execution; c) loading the new instruction set; d) retrieving at least a portion of the stored state of the program execution; and e) resuming execution using the new instruction set; wherein the reconfiguration directive specifies a change in hardware organization to occur during program execution. - View Dependent Claims (22)
-
-
23. A compiling system for generating a sequence of program instructions for use in a dynamically reconfigurable processing unit having an internal hardware organization that is selectively changeable during execution of the sequence of program instructions among a plurality of hardware architectures, each hardware architecture executing instructions from a corresponding instruction set, the compiling system comprising:
-
an input device for inputting at least one source file containing a plurality of source code instruction statements, including at least a first subset of instruction statements, a second subset of instruction statements, and, for each subset of instruction statements a reconfiguration directive specifying one of the hardware architectures, each of the reconfiguration directives specifying a change in hardware organization to occur during program execution; and a compiler, coupled to receive each source file from the input device, for compiling each input source file to produce an object file by identifying the instruction set corresponding to the hardware architecture specified by each reconfiguration directive, compiling at least a portion of the input source file for execution using each identified instruction set, and generating a reconfiguration code corresponding to each reconfiguration directive. - View Dependent Claims (24, 25)
-
-
26. A computer program product comprising a computer-usable medium having computer-readable code embodied therein for generating a sequence of program instructions for use in a dynamically reconfigurable processing unit, comprising:
-
computer-readable program code devices configured to accept as input a source file containing a plurality of source code instruction statements including at least a first subset of instruction statements and a second subset of instruction statements; computer-readable program code devices configured to identify a first instruction set for the first subset of instruction statements by retrieving a first reconfiguration directive from the source code, the reconfiguration directive specifying the first instruction set; computer-readable program code devices configured to identify a second instruction set for the second subset of instruction statements by retrieving a second reconfiguration directive from the source code, the reconfiguration directive specifying the second instruction set; and computer-readable program code devices configured to compile the first subset of instruction statements for execution using the first instruction set and compiling the second subset of instruction statements for execution using the second instruction set, wherein each of the reconfiguration directives specifies a change in hardware organization to occur during program execution. - View Dependent Claims (27, 28, 29, 30, 31, 32)
-
Specification