IPC분류정보
국가/구분 |
United States(US) Patent
등록
|
국제특허분류(IPC7판) |
|
출원번호 |
US-0526198
(2006-09-22)
|
등록번호 |
US-8473926
(2013-06-25)
|
발명자
/ 주소 |
|
출원인 / 주소 |
|
대리인 / 주소 |
|
인용정보 |
피인용 횟수 :
2 인용 특허 :
36 |
초록
▼
A software-to-hardware compiler is provided that generates hardware constructs in programmable logic based on pure software constructs. More particularly, a high-level program language may be used to create a program using only software constructs that is compiled into hardware constructs. Optimizat
A software-to-hardware compiler is provided that generates hardware constructs in programmable logic based on pure software constructs. More particularly, a high-level program language may be used to create a program using only software constructs that is compiled into hardware constructs. Optimizations may be made in the later stages of compilation to retime the circuit, allowing for maximum data flow. The hardware may make run-time decisions with respect to executing programmable logic blocks in parallel. The decisions may be at least partially based on a control flow.
대표청구항
▼
1. A method for generating gate-level hardware configuration data directly from high-level software programming code, the method comprising: parsing the high-level software programming code transparent with regard to hardware;compiling the gate-level hardware configuration data directly from the hig
1. A method for generating gate-level hardware configuration data directly from high-level software programming code, the method comprising: parsing the high-level software programming code transparent with regard to hardware;compiling the gate-level hardware configuration data directly from the high-level software programming code, wherein the gate-level hardware configuration data is configured to generate a control flow for a current conditional block that indicates whether the current conditional block should be evaluated speculatively at run-time;configuring a programmable logic resource with the gate-level hardware configuration data;evaluating the current conditional block at run-time according to the control flow to produce a decision variable;updating the control flow at run-time to specify either a speculative or non-speculative evaluation mode based, at least in part, on the control flow and the decision variable to specify either a speculative or non-speculative evaluation mode for evaluating a next conditional data block; andevaluating the next conditional data block at run-time according to the updated control flow. 2. The method of claim 1 wherein the current conditional block is not comprised of any mutable operations. 3. The method of claim 1 wherein the current conditional block is comprised of a mutable operation, and wherein the mutable operation overwrites hardware states that are not needed. 4. The method of claim 1 wherein updating the control flow at run-time further comprises making a run-time decision to execute the next conditional block in parallel with another conditional block. 5. The method of claim 4 wherein there is no data dependency between the next conditional block and the another conditional block. 6. The method of claim 5 further comprising sharing a common variable between the next conditional block and the another conditional block. 7. The method of claim 1, further comprising: determining, based, at least in part, on the control flow and the decision variable, a second control flow and a third control flow, wherein each of the second control flow and the third control flow specifies a respective speculative or a non-speculative evaluation mode. 8. The method of claim 7, further comprising: evaluating at least two data blocks according to the second control and the third control flow to produce output data; andwherein the updating the control flow at run-time is further based on the produced output data. 9. The method of claim 1, wherein parsing the high-level software programming code comprises parsing code selected from C code, C++code, JAVA code, LISP code, BASIC code, Pascal code, COBOL code, and Fortran code. 10. The method of claim 1, wherein the compiling is configured to: identify a function of the high-level software programming code; andmap the function to a dedicated set of hardware resources in the gate-level hardware configuration data. 11. A method for generating gate-level hardware configuration data directly from high-level software programming code, the method comprising: parsing the high-level software programming code transparent with regard to hardware;compiling the gate-level hardware configuration data directly from the high-level software programming code to generate gate-level hardware configuration data;configuring a programmable logic resource with the gate-level hardware configuration data;evaluating a current conditional block of the programmable logic resource at run-time according to a control flow determined during the compiling to produce a decision variable;determining at run-time, based, at least in part, on the control flow and the decision variable, a second control flow and a third control flow, wherein each of the second control flow and the third control flow specifies a respective speculative or a non-speculative evaluation mode;evaluating, at run-time, at least two data blocks according to the second control and the third control flow to produce output data;updating the control flow at run-time to specify either a speculative or non-speculative evaluation mode based, at least in part, on the control flow, the decision variable, and the produced output data to specify either a speculative or non-speculative evaluation mode for evaluating a next conditional data block; andevaluating the next conditional data block at run-time according to the updated control flow. 12. The method of claim 11 wherein the current conditional block is not comprised of any mutable operations. 13. The method of claim 11 wherein the current conditional block is comprised of a mutable operation, and wherein the mutable operation overwrites hardware states that are not needed. 14. The method of claim 11 wherein updating the control flow at run-time further comprises making a run-time decision to execute the next conditional block in parallel with another conditional block. 15. The method of claim 14 wherein there is no data dependency between the next conditional block and the another conditional block. 16. The method of claim 15 further comprising sharing a common variable between the next conditional block and the another conditional block. 17. The method of claim 11, wherein compiling the gate-level hardware configuration data directly from the high-level software programming code comprises: identifying a plurality of software variables in the high-level software programming code; andmapping each of the identified plurality of software variables to a dedicated set of wires in the gate-level hardware configuration data. 18. The method of claim 17, wherein, for each of the plurality of software variables: one of the wires in the corresponding dedicated set of wires indicates whether the respective software variable from the plurality of software variables has been computed; andthe remaining wires in the corresponding dedicated set of wires indicates a value of the respective software variable from the plurality of software variables. 19. The method of claim 11, wherein parsing the high-level software programming code comprises parsing code selected from C code, C++code, JAVA code, LISP code, BASIC code, Pascal code, COBOL code, and Fortran code. 20. The method of claim 11, wherein the compiling is configured to: identify a function of the high-level software programming code; andmap the function to a dedicated set of hardware resources in the gate-level hardware configuration data.
※ AI-Helper는 부적절한 답변을 할 수 있습니다.