Warp processor for dynamic hardware/software partitioning
First Claim
Patent Images
1. A method for hardware/software partitioning, comprising:
- (a) executing an application'"'"'s binary in a processor having configurable logic associated therewith;
(b) monitoring the executing binary to identify relative execution frequencies of the binary'"'"'s code regions in order to identify one or more critical and non-critical code regions in the binary;
(c) dynamically partitioning the binary between the critical and non-critical code regions;
(d) re-implementing the critical code regions in the configurable logic; and
(e) updating the binary to access the configurable logic rather than the critical code regions when the binary is executed in the processor.
4 Assignments
0 Petitions
Accused Products
Abstract
A warp processor includes a microprocessor, profiler, dynamic partitioning module, and warp configurable logic architecture. The warp processor initially executes a binary for an application entirely on the microprocessor, the profiler monitors the execution of the binary to detect its critical code regions, and the dynamic partitioning module partitions the binary into critical and non-critical code regions, re-implements the critical code regions in the configurable logic, and then transforms the binary so that it accesses the configurable logic rather than execute the critical code regions.
30 Citations
24 Claims
-
1. A method for hardware/software partitioning, comprising:
-
(a) executing an application'"'"'s binary in a processor having configurable logic associated therewith;
(b) monitoring the executing binary to identify relative execution frequencies of the binary'"'"'s code regions in order to identify one or more critical and non-critical code regions in the binary;
(c) dynamically partitioning the binary between the critical and non-critical code regions;
(d) re-implementing the critical code regions in the configurable logic; and
(e) updating the binary to access the configurable logic rather than the critical code regions when the binary is executed in the processor. - View Dependent Claims (2, 3, 4, 5)
-
-
6. An apparatus for hardware/software partitioning, comprising:
-
(a) a processor having configurable logic associated therewith, wherein an application'"'"'s binary is executed in the processor;
(b) a profiler for monitoring the executing binary to identify relative execution frequencies of the binary'"'"'s code regions in order to identify one or more critical and non-critical code regions in the binary; and
(c) a dynamically partitioning module for dynamically partitioning the binary between the critical and non-critical code regions, for re-implementing the critical code regions in the configurable logic, and for updating the binary to access the configurable logic rather than the critical code regions when the binary is executed in the processor. - View Dependent Claims (7, 8, 9, 10)
-
-
11. An apparatus for hardware/software partitioning, comprising:
-
(a) means for executing an application'"'"'s binary in a processor having configurable logic associated therewith;
(b) means for monitoring the executing binary to identify relative execution frequencies of the binary'"'"'s code regions in order to identify one or more critical and non-critical code regions in the binary;
(c) means for dynamically partitioning the binary between the critical and non-critical code regions;
(d) means for re-implementing the critical code regions in the configurable logic; and
(e) means for updating the binary to access the configurable logic rather than the critical code regions when the binary is executed in the processor. - View Dependent Claims (12, 13, 14, 15)
-
-
16. A method for implementing a configuration in configurable logic, comprising:
-
decompiling an application'"'"'s binary into a high-level representation;
analyzing the high-level representation to identify which code regions of the application'"'"'s binary should be implemented in the configurable logic;
compiling the identified code regions to create a configuration for the configurable logic, wherein the compiling step comprises;
performing a register-transfer (RT) synthesis to convert the identified code regions into a Boolean logic network;
performing a logic synthesis to create a directed acyclic graph (DAG) of the Boolean logic network;
mapping the directed acyclic graph to create combinational logic block (CLB) nodes;
placing the combinational logic block nodes onto the configurable logic; and
routing between inputs, outputs, and combinational logic block nodes within the configurable logic in order to generate the configuration for the configurable logic. - View Dependent Claims (17, 18)
-
-
19. An apparatus for implementing a configuration in configurable logic, comprising:
-
(a) a processor;
(b) logic, performed by the processor, for decompiling an application'"'"'s binary into a high-level representation;
(c) logic, performed by the processor, for analyzing the high-level representation to identify which code regions of the application'"'"'s binary should be implemented in the configurable logic;
(d) logic, performed by the processor, for compiling the identified code regions to create a configuration for the configurable logic, wherein the logic for compiling comprises;
logic for performing a register-transfer (RT) synthesis to convert the identified code regions into a Boolean logic network;
logic for performing a logic synthesis to create a directed acyclic graph (DAG) of the Boolean logic network;
logic for mapping the directed acyclic graph to create combinational logic block (CLB) nodes;
logic for placing the combinational logic block nodes onto the configurable logic; and
logic for routing between inputs, outputs, and combinational logic block nodes within the configurable logic in order to generate the configuration for the configurable logic. - View Dependent Claims (20, 21)
-
-
22. An apparatus for implementing a configuration in configurable logic, comprising:
-
means for decompiling an application'"'"'s binary into a high-level representation;
means for analyzing the high-level representation to identify which code regions of the application'"'"'s binary should be implemented in the configurable logic;
means for compiling the identified code regions to create a configuration for the configurable logic, wherein the means for compiling comprises;
means for performing a register-transfer (RT) synthesis to convert the identified code regions into a Boolean logic network;
means for performing a logic synthesis to create a directed acyclic graph (DAG) of the Boolean logic network;
means for mapping the directed acyclic graph to create combinational logic block (CLB) nodes;
means for placing the combinational logic block nodes onto the configurable logic; and
means for routing between inputs, outputs, and combinational logic block nodes within the configurable logic in order to generate the configuration for the configurable logic. - View Dependent Claims (23, 24)
-
Specification