IP Library Granted Patent US 9,652,274
Granted Patent B2
US 9,652,274 · App. 14/563,608 · Granted May 16, 2017

Techniques for handling memory accesses by processor-independent executable code in a multi-processor environment

Inventor: Leonid Shatz (Ra'anana, IL)
Assignee: Ravello Systems Ltd.
G06F9/4555G06F9/45558G06F12/109G06F12/1036G06F2009/45583G06F2212/657
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 9,652,274
App. No.
14/563,608
Granted
May 16, 2017
Kind
B2
Abstract

A method and apparatus for virtual address mapping are provided. The method includes determining an offset value respective of at least a first portion of code stored on a code memory unit, generating a first virtual code respective of the first portion of code and a second virtual code respective of a second portion of code stored on the code memory unit; mapping the first virtual code to a first virtual code address and the second virtual code to a second virtual code address; generating a first virtual data respective of the first portion of data and a second virtual data respective of the second portion of data; and mapping the first virtual data to a first virtual data address and the second virtual data to a second virtual data address.

Claims (69)

1. A non-transitory computer readable medium comprising code which, when executed by one or more hardware processors, causes performance of operations comprising:

configuring a same particular offset value for separating virtual memory regions corresponding to instruction sets and separating virtual memory regions corresponding to data sets;

identifying a first virtual memory region corresponding to a first set of instructions to be executed by a first Processing Unit (PU);

identifying a second virtual memory region corresponding to a second set of instructions to be executed by a second Processing Unit (PU);

wherein the first virtual memory region and the second virtual memory region are separated by the particular offset value;

mapping both the first virtual memory region and the second virtual memory region to a same particular physical memory region;

identifying a third virtual memory region corresponding to a first data set to be processed by the first PU for execution of the first set of instructions;

identifying a fourth virtual memory region corresponding to a second data set to be processed by the second PU for execution of the second set of instructions;

wherein the third virtual memory region and the fourth virtual memory region are separated by the particular offset value;

mapping the third virtual memory region and the fourth virtual memory region to different respective physical memory regions;

executing Program Counter (PC) relative addressing for (a) accessing the first data set referenced by a first instruction in the first set of instructions and (b) accessing the second data set referenced by a second instruction in the second set of instructions, wherein the first instruction and the second instruction are the same instruction.

2. The medium of claim 1 , wherein mapping both (a) the first virtual memory region corresponding to the first set of instructions and (b) the second virtual memory region corresponding to the second set of instructions to the same particular physical memory region results in the first PU and the second PU executing a same set of instructions stored in the particular physical memory region.

3. The medium of claim 1 , wherein mapping (a) the third virtual memory region corresponding to the first data set and (b) the fourth virtual memory region corresponding to the second data set in different respective physical memory regions results in the first PU and the second PU manipulating different data sets stored in the different respective physical memory regions.

4. The medium of claim 1 ,

wherein mapping both (a) the first virtual memory region corresponding to the first set of instructions and (b) the second virtual memory region corresponding to the second set of instructions to the same particular physical memory region results in the first PU and the second PU executing a same set of instructions stored in the particular physical memory region; and

wherein mapping (a) the third virtual memory region corresponding to the first data set and (b) the fourth virtual memory region corresponding to the second data set in different respective physical memory regions results in the first PU and the second PU manipulating different data sets stored in the different respective physical memory regions.

5. The medium of claim 1 , wherein the particular physical memory region corresponds to an instruction memory partition and wherein the different physical memory regions, corresponding to the first data set and the second data set, correspond to a data memory partition.

6. The medium of claim 1 , wherein the instruction memory partition and the data memory partition correspond to different address spaces in a physical memory system.

7. The medium of claim 1 , wherein an address in the third virtual memory region is determined based on a start address corresponding to a first Program Counter (PC) and an offset.

8. The medium of claim 1 , wherein a physical address in a second physical memory region, corresponding to the third virtual memory region, is determined based on a start address corresponding to a first Program Counter (PC) and an offset.

9. The medium of claim 1 , wherein each of the first PU and the second PU are associated with a same data offset to be applied when accessing the first set of data and the second set of data, respectively.

10. The medium of claim 1 , wherein the first virtual memory region and the second virtual memory region are (a) in a same virtual memory block and (b) have starting addresses that are set apart from each other by an offset value that is larger than or equal to memory space required to store the first set of instructions.

11. The medium of claim 1 , wherein the operations further comprise executing a guest, in a para-virtualized environment, associated with at least the first set of instructions and the first set of data.

12. The medium of claim 1 , wherein each of the first data set and the second data set are addressed in a Program Counter Relative (PCR) mode using a common set of offset values for each of the first PU and second PU respectively.

13. The medium of claim 1 ,

wherein mapping both (a) the first virtual memory region corresponding to the first set of instructions and (b) the second virtual memory region corresponding to the second set of instructions to the same particular physical memory region results in the first PU and the second PU executing a same set of instructions stored in the particular physical memory region;

wherein mapping (a) the third virtual memory region corresponding to the first data set and (b) the fourth virtual memory region corresponding to the second data set in different respective physical memory regions results in the first PU and the second PU manipulating different data sets stored in the different respective physical memory regions;

wherein each of the first data set and the second data set are addressed in a Program Counter Relative (PCR) mode using a common set of offset values for each of the first PU and second PU respectively;

wherein the particular physical memory region corresponds to an instruction memory partition and wherein the different physical memory regions, corresponding to the first data set and the second data set, correspond to a data memory partition;

wherein the instruction memory partition and the data memory partition correspond to different address spaces in a physical memory system;

wherein a data address in the third virtual memory region is determined based on a start address corresponding to a first Program Counter (PC) and an offset;

wherein a physical address in a second physical memory region, corresponding to the third virtual memory region, is determined based on a start address corresponding to the first Program Counter (PC) and the offset;

wherein each of the first PU and the second PU are associated with a same data offset to be applied when accessing the first set of data and the second set of data, respectively;

wherein the first virtual memory region and the second virtual memory region are (a) in a same virtual memory block and (b) have starting addresses that are set apart from each other by an offset value that is larger than or equal to memory space required to store the first set of instructions; and

wherein the operations further comprise executing a guest, in a para-virtualized environment, associated with at least the first set of instructions and the first set of data.

14. A method comprising:

configuring a same particular offset value for separating virtual memory regions corresponding to respective instruction sets and separating virtual memory regions corresponding to respective data sets;

identifying a first virtual memory region corresponding to a first set of instructions to be executed by a first Processing Unit (PU);

identifying a second virtual memory region corresponding to a second set of instructions to be executed by a second Processing Unit (PU);

wherein the first virtual memory region and the second virtual memory region are separated by the particular offset value;

mapping both the first virtual memory region and the second virtual memory region to a same particular physical memory region;

identifying a third virtual memory region corresponding to a first data set to be processed by the first PU for execution of the first set of instructions;

identifying a fourth virtual memory region corresponding to a second data set to be processed by the second PU for execution of the second set of instructions;

wherein the third virtual memory region and the fourth virtual memory region are separated by the particular offset value;

mapping the third virtual memory region and the fourth virtual memory region to different respective physical memory regions;

executing (a) a first instruction, in the first set of instructions, using Program Counter (PC) relative addressing for referencing the first data set and (b) a second instruction, in the second set of instructions, using Program Counter (PC) relative addressing for referencing the second data set,

wherein the first instruction and the second instruction correspond to the same instruction and include the same PC relative address.

15. The method of claim 14 , wherein mapping both (a) the first virtual memory region corresponding to the first set of instructions and (b) the second virtual memory region corresponding to the second set of instructions to the same particular physical memory region results in the first PU and the second PU executing a same set of instructions stored in the particular physical memory region.

16. The method of claim 14 , wherein mapping (a) the third virtual memory region corresponding to the first data set and (b) the fourth virtual memory region corresponding to the second data set in different respective physical memory regions results in the first PU and the second PU manipulating different data sets stored in the different respective physical memory regions.

17. The method of claim 14 ,

wherein mapping both (a) the first virtual memory region corresponding to the first set of instructions and (b) the second virtual memory region corresponding to the second set of instructions to the same particular physical memory region results in the first PU and the second PU executing a same set of instructions stored in the particular physical memory region; and

wherein mapping (a) the third virtual memory region corresponding to the first data set and (b) the fourth virtual memory region corresponding to the second data set in different respective physical memory regions results in the first PU and the second PU manipulating different data sets stored in the different respective physical memory regions.

18. A system comprising:

a plurality of Processing Units (PUs);

a physical memory;

the system being configured to perform operations comprising:

configuring a same particular offset value for separating virtual memory regions corresponding to respective instruction sets and separating virtual memory regions corresponding to respective data sets;

identifying a first virtual memory region corresponding to a first set of instructions to be executed by a first PU of the plurality of PUs;

identifying a second virtual memory region corresponding to a second set of instructions to be executed by a second PU of the plurality of PUs;

wherein the first virtual memory region and the second virtual memory region are separated by the particular offset value;

mapping both the first virtual memory region and the second virtual memory region to a same particular physical memory region of the physical memory;

identifying a third virtual memory region corresponding to a first data set to be processed by the first PU for execution of the first set of instructions;

identifying a fourth virtual memory region corresponding to a second data set to be processed by the second PU for execution of the second set of instructions;

wherein the third virtual memory region and the fourth virtual memory region are separated by the particular offset value;

mapping the third virtual memory region and the fourth virtual memory region to different respective physical memory regions of the physical memory;

executing (a) a first instruction, in the first set of instructions, using Program Counter (PC) relative addressing for referencing the first data set and (b) a second instruction, in the second set of instructions, using Program Counter (PC) relative addressing for referencing the second data set,

wherein the first instruction and the second instruction correspond to the same instruction and include the same PC relative address.

19. The system of claim 18 , wherein mapping both (a) the first virtual memory region corresponding to the first set of instructions and (b) the second virtual memory region corresponding to the second set of instructions to the same particular physical memory region results in the first PU and the second PU executing a same set of instructions stored in the particular physical memory region.

20. The system of claim 18 , wherein mapping (a) the third virtual memory region corresponding to the first data set and (b) the fourth virtual memory region corresponding to the second data set in different respective physical memory regions results in the first PU and the second PU manipulating different data sets stored in the different respective physical memory regions.

Assignments (3)
CHANGE OF NAME Recorded Mar 4, 2021
From: RAVELLO SYSTEMS LTD.
To: ORACLE RAVELLO SYSTEMS LTD.
Reel/Frame 055489/0754 →
CHANGE OF NAME Recorded Mar 4, 2021
From: RAVELLO SYSTEMS LTD
To: ORACLE RAVELLO SYSTEMS LTD
Reel/Frame 055492/0005 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 23, 2021
From: SHATZ, LEONID
To: RAVELLO SYSTEMS, LTD.
Reel/Frame 055364/0633 →
Continuity (4)
Continuation 13483633 · May 30, 2012
Provisional Application 61584590 · Jan 9, 2012
Related Publication 20150095612A1 · Apr 2, 2015
Related Publication 20170003988A9 · Jan 5, 2017