Coherent multiprocessing enabled compute in storage and memory
An apparatus is described. The apparatus includes a mass storage device processor that is to behave as an additional general purpose processing core of a computing system that a mass storage device having the mass storage device processor is to be coupled to, wherein, the mass storage device processor is to execute out of a component of main memory within the mass storage device.
1. A method, comprising:
compiling a software program, the compiling comprising:
identifying a task that is to operate on certain data;
dividing the software program into different components including a component that includes the task, the component's program code to be stored in main memory; and,
targeting the component for execution on a processor within a mass storage device that is to keep the data, wherein, the processor within the mass storage device is also allocated main memory address space where the component's program code is stored so that the processor within the mass storage device is able to execute the component's program code from the main memory.
2. The method of claim 1 wherein at least one other of the different components includes a function call to the component to cause the component to execute the task.
3. The method of claim 2 further comprising embedding a hint in the software program's program code that causes the other component to consider targeting the component for execution on the processor within the mass storage device.
4. The method of claim 2 wherein a decision to invoke the component is made dynamically during runtime of the software program's program code.
5. A non-transitory machine readable storage medium containing program code that when processed by a computer causes a computer to perform a method, comprising:
compiling a software program, the compiling comprising:
identifying a task that is to operate on certain data;
dividing the software program into different components including a component that includes the task, the component's program code to be stored in main memory; and,
targeting the component for execution on a processor within a mass storage device that is to keep the data, wherein, the processor within the mass storage device is also allocated main memory address space where the component's program code is stored so that the processor within the mass storage device is able to execute the component's program code from the main memory.
6. The non-transitory machine readable storage medium of claim 5 wherein at least one other of the different components includes a function call to the component to cause the component to execute the task.
7. The non-transitory machine readable storage medium of claim 6 further comprising embedding a hint in the software program's program code that causes the other component to consider targeting the component for execution on the processor within the mass storage device.
8. The non-transitory machine readable storage medium of claim 5 wherein the processor within the mass storage device has a same instruction set architecture as general purpose processing cores of a computing system that the software program is to run on.