Processor Dedicated Code Handling in a Multi-Processor Environment
First Claim
1. An information handling system comprising:
- a plurality of heterogeneous processors;
a common memory shared by the plurality of heterogeneous processors;
a first processor selected from the plurality of heterogeneous processors that sends a code processing request to a second processor, the second processor also being selected from the plurality of heterogeneous processors, wherein the first processor executes a first instruction set and wherein the second processor executes a second instruction set;
a first local memory accessible to the first processor;
a second local memory accessible to the second processor;
a direct memory access (DMA) controller associated with the second processor, the DMA controller adapted to transfer data between the common memory and the second processor'"'"'s local memory; and
a processing tool for processing software code, the processing tool including software effective to;
load a virtual machine engine into the common memory;
load, by the first processor, virtual machine code into the common memory, the virtual machine code adapted to be processed by the virtual machine engine;
write, by the first processor, the code processing request into a mailbox associated with the second processor;
receive, by the second processor, the code processing request from the second processor'"'"'s mailbox;
in response to receiving the code processing request, load, at the second processor, the virtual machine engine from the common memory into the second local memory;
in further response to receiving the code processing request, read, by the second processor from the common memory, software code data corresponding to the code processing request, the software code data including the virtual machine code;
write the software code data corresponding to the code processing request to the second local memory;
process the software code data by the second processor, wherein the processing includes processing the virtual machine code at the second processor using the virtual machine engine, the processing resulting in executable instructions, the executable instructions comprising instructions from the first instruction set and capable of being executed by the first processor;
write the executable instructions to a memory location accessible by the first processor; and
execute, at the first processor, the executable instructions.
8 Assignments
0 Petitions
Accused Products
Abstract
Code handling, such as interpreting language instructions or performing “just-in-time” compilation, is performed using a heterogeneous processing environment that shares a common memory. In a heterogeneous processing environment that includes a plurality of processors, one of the processors is programmed to perform a dedicated code-handling task, such as perform just-in-time compilation or interpretation of interpreted language instructions, such as Java. The other processors request code handling processing that is performed by the dedicated processor. Speed is achieved using a shared memory map so that the dedicated processor can quickly retrieve data provided by one of the other processors.
-
Citations
14 Claims
-
1. An information handling system comprising:
-
a plurality of heterogeneous processors; a common memory shared by the plurality of heterogeneous processors; a first processor selected from the plurality of heterogeneous processors that sends a code processing request to a second processor, the second processor also being selected from the plurality of heterogeneous processors, wherein the first processor executes a first instruction set and wherein the second processor executes a second instruction set; a first local memory accessible to the first processor; a second local memory accessible to the second processor; a direct memory access (DMA) controller associated with the second processor, the DMA controller adapted to transfer data between the common memory and the second processor'"'"'s local memory; and a processing tool for processing software code, the processing tool including software effective to; load a virtual machine engine into the common memory; load, by the first processor, virtual machine code into the common memory, the virtual machine code adapted to be processed by the virtual machine engine; write, by the first processor, the code processing request into a mailbox associated with the second processor; receive, by the second processor, the code processing request from the second processor'"'"'s mailbox; in response to receiving the code processing request, load, at the second processor, the virtual machine engine from the common memory into the second local memory; in further response to receiving the code processing request, read, by the second processor from the common memory, software code data corresponding to the code processing request, the software code data including the virtual machine code; write the software code data corresponding to the code processing request to the second local memory; process the software code data by the second processor, wherein the processing includes processing the virtual machine code at the second processor using the virtual machine engine, the processing resulting in executable instructions, the executable instructions comprising instructions from the first instruction set and capable of being executed by the first processor; write the executable instructions to a memory location accessible by the first processor; and execute, at the first processor, the executable instructions. - View Dependent Claims (2, 3, 4, 5, 6, 7)
-
-
8. A computer program product stored on a computer operable media, the computer operable media containing instructions for execution by a computer, which, when executed by the computer, cause the computer to perform a method for processing software code, said method comprising:
-
loading a virtual machine engine into a common memory, the common memory accessible by a first processor and a second processor, wherein the first processor and the second processor are heterogeneous processors, wherein the first processor executes a first instruction set and wherein the second processor executes a second instruction set, and wherein the first processor includes a first local memory accessible to the first processor and the second processor includes a second local memory accessible to the second processor; loading, by the first processor, virtual machine code into the common memory, the virtual machine code adapted to be processed by the virtual machine engine; writing, by the first processor, a code processing request into a mailbox associated with the second processor; receiving, by the second processor, the code processing request from the second processor'"'"'s mailbox; in response to receiving the code processing request, loading, at the second processor, the virtual machine engine from the common memory into the second local memory; in further response to receiving the code processing request, reading, by the second processor from the common memory, software code data corresponding to the code processing request, the software code data including the virtual machine code; writing the software code data corresponding to the code processing request to the second local memory; processing the software code data by the second processor, wherein the processing includes processing the virtual machine code at the second processor using the virtual machine engine, the processing resulting in executable instructions, the executable instructions comprising instructions from the first instruction set and capable of being executed by the first processor; writing the executable instructions to a memory location accessible by the first processor; and executing, at the first processor, the executable instructions. - View Dependent Claims (9, 10, 11, 12, 13, 14)
-
Specification