Method and system for converting a single-threaded software program into an application-specific supercomputer
First Claim
1. A method to automatically convert a single-threaded software application into an application-specific supercomputer, the method comprising:
- a. Converting an arbitrary code fragment from the application into customized hardware whose execution is functionally equivalent to the software execution of the code fragment; and
b. Generating interfaces on the hardware and software parts of the application, which;
i. Perform a software-to-hardware program state transfer at the entries of the code fragment;
ii. Perform a hardware-to-software program state transfer at the exits of the code fragment; and
iii. Maintain memory coherence between the software and hardware memories.
1 Assignment
0 Petitions
Accused Products
Abstract
The invention comprises (i) a compilation method for automatically converting a single-threaded software program into an application-specific supercomputer, and (ii) the supercomputer system structure generated as a result of applying this method. The compilation method comprises: (a) Converting an arbitrary code fragment from the application into customized hardware whose execution is functionally equivalent to the software execution of the code fragment; and (b) Generating interfaces on the hardware and software parts of the application, which (i) Perform a software-to-hardware program state transfer at the entries of the code fragment; (ii) Perform a hardware-to-software program state transfer at the exits of the code fragment; and (iii) Maintain memory coherence between the software and hardware memories. If the resulting hardware design is large, it is divided into partitions such that each partition can fit into a single chip. Then, a single union chip is created which can realize any of the partitions.
181 Citations
35 Claims
-
1. A method to automatically convert a single-threaded software application into an application-specific supercomputer, the method comprising:
-
a. Converting an arbitrary code fragment from the application into customized hardware whose execution is functionally equivalent to the software execution of the code fragment; and b. Generating interfaces on the hardware and software parts of the application, which; i. Perform a software-to-hardware program state transfer at the entries of the code fragment; ii. Perform a hardware-to-software program state transfer at the exits of the code fragment; and iii. Maintain memory coherence between the software and hardware memories. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 35)
-
-
33. A method to partition an application-specific supercomputer'"'"'s hardware design comprising a plurality of components and a plurality of networks connecting the components, into multiple modules, the method comprising:
-
a. Creating a scalable network for cross-module communication; b. Partitioning the design into a plurality of modules, such that each component is placed into a particular module; c. Placing an I/O controller in each module, for cross-module communication. d. In each module, for each network x that is originally attached to at least one component placed in this module, creating a local sub-network of x connected to a port of the local I/O controller dedicated to network x, and also to the local components originally connected to network x. e. Enabling the delivery of a message from any component on a network to any other component on the same network, as if the design were not partitioned, with the steps for cross-module message delivery comprising the following; i. In the message source module, the message source component sends the message to the local I/O controller over the local sub-network of the said network; ii. The message is sent outside the message source module by the local I/O controller, and gets routed within the cross-module communication network until it reaches the message destination module; and iii. The message is accepted by the local I/O controller of the message destination module and gets delivered to the message destination component within the message destination module, over the local sub-network of the said network. - View Dependent Claims (34)
-
Specification