Storage unsharing
AssigneeGlobal Supercomputing Corporation
InventorsEmre Kultursay, Kemal Ebcioglu, Mahmut Taylan Kandemir
Life of this patent
Estimating the term…
Abstract
A method is described to partition the memory of application-specific hardware compiled from a software program. Applying the invention generates multiple small memories that need not be kept coherent and are defined over a specific region of the program. The invention creates application specific hardware which preserves the memory image and addressing model of the original software program. The memories are dynamically initialized and flushed at the entries and exits of the program region they are defined in.
Claims22
A method to create a hardware hierarchy of memories from a software program fragment within a software program, the method comprising:
- (a) performing compiler dependence analysis over memory instructions in the software program fragment;
- (b) finding smallest groups of the memory instructions, wherein the smallest groups are not dependent on each other;
- assigning each such group to a separate new memory, which is accessed using original memory addresses of the software program fragment;
- (c) modifying the memory instructions of each group to make the memory instructions access the separate new memory that the smallest group was assigned to;
- and
- (d) at run time, initializing each separate new memory from original memory of the software program, at entries of the software program fragment;
- storing changes made by the software program fragment in each separate new memory back to the original memory of the software program, at exits of the software program fragment;
- (e) creating an application-specific hardware accelerator implementing the software program fragment as modified in steps (a)-(d) in hardware, wherein the application-specific hardware accelerator comprises the separate new memories created in step (b), and communicates with the software program as follows:
- (i) at the beginning of the said program fragment, the software program signals the application-specific hardware accelerator to start;
- (ii) the application-specific hardware accelerator initializes the separate new memories from the original memory of the software program;
- (iii) the application-specific hardware accelerator operates on the separate new memories, performing the computation specified by the software program fragment;
- (iv) the application-specific hardware accelerator stores the changes made by the software program fragment in the separate new memories back to the original memory of the software program, and signals the software program that the application-specific hardware accelerator has completed;
- and
- (v) the software program continues execution from the end of the software program fragment.
Dependencies are inferred from the claim text.