IP Library Granted Patent US 7,620,779
Granted Patent B1
US 7,620,779 · App. 11/439,361 · Granted Nov 17, 2009

System and method for handling direct memory accesses

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 7,620,779
App. No.
11/439,361
Granted
Nov 17, 2009
Kind
B1
Abstract

Methods and systems for efficiently processing direct memory access requests coherently. An external agent requests data from the memory system of a computer system at a target address. A snoop cache determines if the target address is within an address range known to be safe for external access. If the snoop cache determines that the target address is safe, it signals the external agent to proceed with the direct memory access. If the snoop cache does not determine if the target address is safe, then the snoop cache forwards the request on to the processor. After the processor resolves any coherency problems between itself and the memory system, the processor signals the external agent to proceed with the direct memory access. The snoop cache can determine safe address ranges from such processor activity. The snoop cache invalidates its safe address ranges by observing traffic between the processor and the memory system.

Claims (60)

1. A method of upgrading an entry in a cache comprising a first look-up unit and a second look-up unit, said method comprising:

determining whether entries of said first look-up unit are safe, wherein said entries comprise high order bits corresponding to a number of bits of an address less a first clustering level less a first granularity, and wherein said entries comprise low order bits corresponding to said first clustering level;

provided entries of said first look-up unit are safe, creating a new entry in said second look-up unit, wherein said new entry comprises entries with high order bits corresponding to the number of bits of said address less a second clustering level less a second granularity, and wherein said new entry comprises entries with low order bits corresponding to said second clustering level; and

setting entries of a block within said second look-up unit safe, wherein said block comprises high order bits corresponding to said first granularity and said first clustering level less said second granularity.

2. The method as described in claim 1 further comprising:

removing said entries of said first look-up unit.

3. The method as described in claim 1 further comprising:

determining whether said second look-up unit contains free entries.

4. The method as described in claim 1 further comprising:

terminating said creating and terminating said setting when said second look-up unit contains no free entries.

5. The method as described in claim 1 further comprising:

computing a block index value as remaining components corresponding to said first look-up unit.

6. The method as described in claim 1 further comprising:

resolving coherency problems associated with a processor and a memory component.

7. A computer system for upgrading an entry, said computer system comprising:

a first look-up unit for supporting an aligned range and having a first granularity and a first clustering level;

a second look-up unit for supporting an aligned range and having a second granularity equal to the first granularity plus the first clustering level less an offset; and

a processor configured to execute instructions for upgrading an entry, said instructions comprising:

instructions to determine whether entries of said first look-up unit are safe, wherein said entries comprise high order bits corresponding to a number of bits of an address less said first clustering level less said first granularity, and wherein said entries comprise low order bits corresponding to said first clustering level;

provided entries of said first look-up unit are safe, instructions to create a new entry in said second look-up unit, wherein said new entry comprises entries with high order bits corresponding to the number of bits of said address less said second clustering level less said second granularity, and wherein said new entry comprises entries with low order bits corresponding to said second clustering level; and

instructions to set entries of a block within said second look-up unit safe, wherein said block comprises high order bits corresponding to said first granularity and said first clustering level less said second granularity.

8. A computer system as described in claim 7 , wherein said instructions further comprise:

instructions to remove said entries of said first look-up unit.

9. A computer system as described in claim 7 , wherein said instructions further comprise:

instructions to determine whether said second look-up unit contains free entries.

10. A computer system as described in claim 7 , wherein said instructions further comprise:

instructions to terminate creating incident to said instructions to create and terminate setting incident to said instructions to set when said second look-up unit contains no free entries.

11. A computer system as described in claim 7 , wherein said instructions further comprise:

instructions to compute a block index value as remaining components corresponding to said first look-up unit.

12. A computer system as described in claim 7 further comprising:

a memory component for storing information.

13. A computer system as described in claim 7 , wherein said processor is operable to resolve coherency problems between said processor and a memory component.

14. A computer-readable medium having stored thereon, computer executable instructions that, if executed by a device, cause the device to perform a method comprising:

determining whether entries of a first look-up unit are safe, wherein said entries comprise high order bits corresponding to a number of bits of an address less a first clustering level less a first granularity, and wherein said entries comprise low order bits corresponding to said first clustering level;

provided entries of said first look-up unit are safe, creating a new entry in a second look-up unit, wherein said new entry comprises entries with high order bits corresponding to the number of bits of said address less a second clustering level less a second granularity, and wherein said new entry comprises entries with low order bits corresponding to said second clustering level; and

setting entries of a block within said second look-up unit safe, wherein said block comprises high order bits corresponding to said first granularity and said first clustering level less said second granularity.

15. The computer-readable medium as described in claim 14 where said method further comprises:

removing said entries of said first look-up unit.

16. The computer-readable medium as described in claim 14 where said method further comprises:

determining whether said second look-up unit contains free entries.

17. The computer-readable medium as described in claim 14 where said method further comprises:

terminating said creating and terminating said setting when said second look-up unit contains no free entries.

18. The computer-readable medium as described in claim 14 where said method further comprises:

computing a block index value as remaining components corresponding to said first look-up unit.

19. The computer-readable medium as described in claim 14 where said method further comprises:

resolving coherency problems associated with a processor and a memory component.

20. An computer system comprising:

means for determining whether entries of a first look-up unit are safe, wherein said entries comprise high order bits corresponding to a number of bits of an address less a first clustering level less a first granularity, and wherein said entries comprise low order bits corresponding to said first clustering level;

means for creating a new entry in a second look-up unit provided entries of said first look-up unit are safe, wherein said new entry comprises entries with high order bits corresponding to the number of bits of said address less a second clustering level less a second granularity, and wherein said new entry comprises entries with low order bits corresponding to said second clustering level; and

means for setting entries of a block within said second look-up unit safe, wherein said block comprises high order bits corresponding to said first granularity and said first clustering level less said second granularity.

21. The computer system as described in claim 20 further comprising:

means for removing said entries of said first look-up unit.

22. The computer system as described in claim 20 further comprising:

means for determining whether said second look-up unit contains free entries.

23. The computer system as described in claim 20 further comprising:

means for terminating said creating and terminating said setting when said second look-up unit contains no free entries.

24. The computer system as described in claim 20 further comprising:

means for computing a block index value as remaining components corresponding to said first look-up unit.

25. The computer system as described in claim 20 further comprising:

means for resolving coherency problems associated with a processor and a memory component.

Assignments (9)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 8, 2022
From: KLAIBER, ALEXANDER C.; ROZAS, GUILLERMO J.; DUNN, DAVID A.
To: TRANSMETA CORPORATION
Reel/Frame 059538/0083 →
CHANGE OF NAME Recorded Apr 8, 2022
From: FACEBOOK, INC.
To: META PLATFORMS, INC.
Reel/Frame 059657/0147 →
CHANGE OF NAME Recorded Mar 30, 2022
From: FACEBOOK, INC.
To: META PLATFORMS, INC.
Reel/Frame 059544/0135 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 24, 2019
From: INTELLECTUAL VENTURES ASSETS 88 LLC
To: FACEBOOK, INC.
Reel/Frame 048136/0179 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 4, 2018
From: INTELLECTUAL VENTURES HOLDING 81 LLC
To: INTELLECTUAL VENTURES ASSETS 88 LLC
Reel/Frame 047014/0629 →
CORRECTIVE ASSIGNMENT TO CORRECT THE ASSIGNOR'S NAME PREVIOUSLY RECORDED AT REEL: 036711 FRAME: 0160. ASSIGNOR(S) HEREBY CONFIRMS THE MERGER. Recorded Oct 6, 2015
From: INTELLECTUAL VENTURES FUNDING LLC
To: INTELLECTUAL VENTURES HOLDING 81 LLC
Reel/Frame 036797/0356 →
MERGER Recorded Sep 29, 2015
From: INTELLECTUAL VENTURE FUNDING LLC
To: INTELLECTUAL VENTURES HOLDING 81 LLC
Reel/Frame 036711/0160 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 22, 2009
From: TRANSMETA LLC
To: INTELLECTUAL VENTURE FUNDING LLC
Reel/Frame 023268/0771 →
MERGER Recorded Mar 26, 2009
From: TRANSMETA CORPORATION
To: TRANSMETA LLC
Reel/Frame 022454/0522 →