IP Library Granted Patent US 8,832,415
Granted Patent B2
US 8,832,415 · App. 12/984,329 · Granted Sep 9, 2014

Mapping virtual addresses to different physical addresses for value disambiguation for thread memory access requests

Inventors: Alan Gala (Mount Kisco, NY); Martin Ohmacht (Yorktown Heights, NY)
Assignee: International Business Machines Corporation
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 8,832,415
App. No.
12/984,329
Granted
Sep 9, 2014
Kind
B2
Abstract

A multiprocessor system includes nodes. Each node includes a data path that includes a core, a TLB, and a first level cache implementing disambiguation. The system also includes at least one second level cache and a main memory. For thread memory access requests, the core uses an address associated with an instruction format of the core. The first level cache uses an address format related to the size of the main memory plus an offset corresponding to hardware thread meta data. The second level cache uses a physical main memory address plus software thread meta data to store the memory access request. The second level cache accesses the main memory using the physical address with neither the offset nor the thread meta data after resolving speculation. In short, this system includes mapping of a virtual address to a different physical addresses for value disambiguation for different threads.

Claims (30)

1. A method comprising:

in at least one core processor, generating at least one memory access request responsive to a hardware thread, using a first addressing scheme;

in a TLB, converting the first addressing scheme to a second addressing scheme;

in an L1 cache and/or prefetch unit,

accessing cache lines for more than one hardware thread responsive to the second addressing scheme; and

converting the second addressing scheme to a third addressing scheme responsive to a hardware thread number;

in a second cache,

managing memory access requests responsive to the third addressing scheme and a speculation identification number;

creating a fourth addressing scheme for accessing main memory; and

accessing main memory responsive to the fourth addressing scheme.

2. A method comprising:

in at least one core processor, running a plurality of software threads on respective hardware threads, each hardware thread generating memory access requests using a first addressing scheme that ignores the other hardware threads; and

in a prefetch unit and/or cache, using addresses relating to the memory requests according to a second addressing scheme that is responsive to the first addressing scheme and identification of which hardware thread generated a given request,

wherein the second addressing scheme establishes a respective distinct address space for each hardware thread.

3. The method of claim 2 , comprising, in a TLB, converting the first addressing scheme to an intermediate addressing scheme, wherein the first addressing scheme corresponds to a published standard instruction format and the intermediate addressing scheme relates to a physical memory size of a memory unit in a system that includes the core and prefetch unit.

4. The method of claim 3 , wherein the first addressing scheme is a virtual addressing scheme.

5. The method of claim 4 , wherein the first addressing scheme is in accordance with the Power PC architecture.

6. The method of claim 3 , wherein the second addressing scheme comprises a first number of bits corresponding to a size of main memory and a second number of bits for representing a software thread ID number.

7. The method of claim 2 , comprising, for a subsequent level of cache, generating at least one third addressing scheme corresponding to an organization of the subsequent level of cache.

8. The method of claim 7 , comprising generating actual main memory accesses in the subsequent level of cache.

9. The method of claim 2 , comprising, responsive to completion of a speculative software thread, clearing the prefetch unit.

10. The method of claim 9 , comprising reloading a first level cache responsive to any threads that require memory accesses after the first level cache is cleared.

11. A method of running software threads in parallel on a multiprocessor system, the system comprising a plurality of data paths, each data path comprising at least one core and at least one cache, the method comprising

using at least one first addressing scheme within at least one of the data paths, the first addressing scheme not being responsive to a software thread identification; and

generating a second addressing scheme at an exit of the one data path, the second addressing scheme being responsive to the software thread identification, wherein the second addressing scheme establishes a respective distinct address space for each of a plurality of hardware threads.

12. The method of claim 11 , wherein the first addressing scheme creates a physical address space for each software thread, so that at least one element of the data paths is not aware of speculation associated with the software thread identification.

13. The method of claim 12 , wherein the second addressing scheme is used within a lower level cache.

14. The method of claim 12 , comprising

resolving speculation associated with the software identification in the lower level cache; and

generating main memory accesses in the lower level cache after speculation is resolved.

Assignments (2)
CONFIRMATORY LICENSE Recorded Jun 18, 2013
From: INTERNATIONAL BUSINESS MACHINES CORPORATION
To: U.S. DEPARTMENT OF ENERGY
Reel/Frame 030641/0108 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 9, 2011
From: GARA, ALAN; OHMACHT, MARTIN
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 026245/0908 →
Continuity (2)
Provisional Application 61295669 · Jan 15, 2010
Related Publication 20110208894A1 · Aug 25, 2011