IP Library Granted Patent US 10,241,795
Granted Patent B2
US 10,241,795 · App. 15/208,404 · Granted Mar 26, 2019

Guest to native block address mappings and management of native code storage

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 10,241,795
App. No.
15/208,404
Granted
Mar 26, 2019
Kind
B2
Abstract

A method for managing mappings of storage on a code cache for a processor. The method includes storing a plurality of guest address to native address mappings as entries in a conversion look aside buffer, wherein the entries indicate guest addresses that have corresponding converted native addresses stored within a code cache memory, and receiving a subsequent request for a guest address at the conversion look aside buffer. The conversion look aside buffer is indexed to determine whether there exists an entry that corresponds to the index, wherein the index comprises a tag and an offset that is used to identify the entry that corresponds to the index. Upon a hit on the tag, the corresponding entry is accessed to retrieve a pointer to the code cache memory corresponding block of converted native instructions. The corresponding block of converted native instructions are fetched from the code cache memory for execution.

Claims (28)

1. A method for managing mappings of storage on a code cache for a processor, comprising:

storing a plurality of guest far branch address to native address mappings as entries in a conversion look aside buffer, wherein the entries indicate addresses of guest far branches that have corresponding converted native addresses stored within a code cache memory, wherein the corresponding native addresses comprise addresses for target blocks of converted native instructions corresponding to the guest far branches, wherein each of the guest far branches is within a guest block, which includes a plurality of instructions, wherein an address for a target block resides outside a current block of a native instruction for a corresponding guest far branch;

receiving a subsequent request for a guest far branch address at the conversion look aside buffer;

indexing the conversion look aside buffer using the guest far branch address to determine whether there exists an entry in the conversion look aside buffer that corresponds to the index; and

upon a hit on the index, accessing the corresponding entry to retrieve a pointer that indicates where in the code cache memory a corresponding block of converted native instructions reside;

wherein the code cache memory comprises a plurality of chunks, wherein a chunk comprises a unit of memory having a size correspondinq to a size of the block of converted native instructions; and

wherein the plurality of chunks have a plurality of different sizes depending on different sizes of a plurality of corresponding converted native instruction blocks.

2. The method of claim 1 , further comprising:

fetching the corresponding block of converted native instructions from the code cache memory for execution.

3. The method of claim 1 , wherein the code cache memory is allocated in a set of fixed size chunks, wherein the chunks can be of different types and wherein a different size is allocated for each chunk type.

4. The method of claim 1 , wherein the conversion look aside buffer stores a plurality of guest address tags in at least 2 ways, wherein each way is associated with a tag.

5. The method of claim 4 , wherein on a hit in the conversion look aside buffer, a pointer corresponding to the index is returned, wherein the pointer is used to index the code cache memory.

6. The method of claim 4 , wherein the code cache memory is organized to have a way structure that matches the conversion look aside buffer way structuring to implement a one-to-one mapping.

7. The method of claim 1 , wherein the conversion look aside buffer comprises a cache, wherein upon the occurrence of a miss, higher hierarchies of memory can be checked for a hit.

8. The method of claim 7 , wherein the higher hierarchies of memory include L1 cache, L2 cache, and system memory.

9. A system for managing mappings of storage on a code cache for a processor, comprising:

a conversion look aside buffer to store a plurality of guest address to native address mappings as entries, wherein the entries indicate addresses of guest far branches that have corresponding converted native addresses stored within a code cache memory, wherein the corresponding native addresses comprise addresses for target blocks of converted native instructions corresponding to the guest far branches, wherein each of the guest far branches is within a guest block, which includes a plurality of instructions, wherein an address for a target block resides outside a current block of a native instruction for a corresponding guest far branch,

wherein upon receiving a subsequent request for a guest far branch address at the conversion look aside buffer, the conversion look aside buffer is to index the entries using the guest far branch to determine whether there exists an entry in the conversion look aside buffer that corresponds to the index,

wherein upon a hit on the index, the conversion look aside buffer is to access the corresponding entry to retrieve a pointer that indicates where in the code cache memory a corresponding block of converted native instructions reside; and

logic to fetch the corresponding block of converted native instructions from the code cache memory for execution,

wherein the conversion look aside buffer is to store a plurality of guest address tags in at least 2 ways, wherein each way is associated with a tag, and

wherein the code cache memory is organized to have a way structure that matches the conversion look aside buffer way structuring to implement a one-to-one mapping.

10. The system of claim 9 , wherein the code cache memory comprises a plurality of chunks, wherein a chunk comprises a unit of memory having a size corresponding to a size of the block of converted native instructions.

11. The system of claim 10 , wherein the plurality of chunks have a plurality of different sizes depending on different sizes of a plurality of corresponding converted native instruction blocks.

12. The system of claim 11 , wherein the code cache memory is allocated in a set of fixed size chunks, wherein the chunks can be of different types and wherein a different size is allocated for each chunk type.

13. The system of claim 9 , wherein on a hit in the conversion look aside buffer, a pointer corresponding to the index is returned, wherein the pointer is used to index the code cache memory.

14. The system of claim 9 , wherein the conversion look aside buffer comprises a cache, wherein upon the occurrence of a miss, higher hierarchies of memory can be checked for a hit.

15. The system of claim 14 , wherein the higher hierarchies of memory include L1 cache, L2 cache, and system memory.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 14, 2016
From: SOFT MACHINES, INC.
To: INTEL CORPORATION
Reel/Frame 040631/0915 →