IP Library › Granted Patent US 9,244,841
Granted Patent B2
US 9,244,841 · App. 13/731,292 · Granted Jan 26, 2016

Merging eviction and fill buffers for cache line transactions

Inventors: Jeff Rupley (Round Rock, TX); Tarun Nakra (Austin, TX)
Assignee: Advanced Micro Devices, Inc.
G06F12/0811G06F12/0808G06F5/065G06F13/1673
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,244,841
App. No.
13/731,292
Granted
Jan 26, 2016
Kind
B2
Abstract

A processor includes a first cache memory and a bus unit in some embodiments. The bus unit includes a plurality of buffers and is operable to allocate a selected buffer of a plurality of buffers for a fill request associated with a first cache line to be stored in a first cache memory, load fill data from the first cache line into the selected buffer, and transfer the fill data to the first cache memory in parallel with storing eviction data for an evicted cache line from the first cache memory in the selected buffer.

Claims (40)

1. A processor, comprising:

a first cache memory; and

a bus unit comprising a plurality of buffers, the bus unit to:

allocate a selected buffer of the plurality of buffers for a fill request associated with a first cache line to be stored in the first cache memory;

load fill data responsive to the fill request from the first cache line into the selected buffer; and

transfer the fill data from the selected buffer to the first cache memory in parallel with storing eviction data for an evicted cache line from the first cache memory in the selected buffer by transferring the fill data from the selected buffer to the first cache memory to empty the selected buffer and transferring the eviction data into the emptied selected buffer after one or more portions of the selected buffer have been emptied.

2. The processor of claim 1 , further comprising a second cache memory, wherein the bus unit is operable to receive the first cache line from the second cache memory.

3. The processor of claim 2 , wherein the bus unit is operable to transfer the eviction data from the selected buffer to the second cache memory and de-allocate the selected buffer.

4. The processor of claim 1 , wherein the selected buffer is divided into a plurality of segments, the fill data is divided into a plurality of portions, one of the portions of the fill data is stored in each of the segments, the eviction data is divided into a plurality of portions, and the bus unit is further operable to transfer a first portion of the fill data stored in a first segment to the first cache memory, then store a first portion of the eviction data in the first segment, and sequentially repeat the transferring of remaining portions of the fill data and the storing of portions of the eviction data for the remaining segments.

5. A system, comprising:

a system memory; and

a processor, the processor comprising:

a first cache memory; and

a bus unit comprising a plurality of buffers, the bus unit to:

allocate a selected buffer of the plurality of buffers for a fill request associated with a first cache line to be stored in the first cache memory;

receive the first cache line and load fill data responsive to the fill request from the first cache line into the selected buffer; and

transfer the fill data from the selected buffer to the first cache memory in parallel with storing eviction data for an evicted cache line from the first cache memory in the selected buffer by transferring the fill data from the selected buffer to the first cache memory to empty the selected buffer and transferring the eviction data into the emptied selected buffer after one or more portions of the selected buffer have been emptied.

6. The system of claim 5 , wherein the bus unit is operable to receive the first cache line from the system memory.

7. The system of claim 5 , further comprising a second cache memory, wherein the bus unit is operable to receive the first cache line from the second cache memory.

8. The system of claim 7 , wherein the bus unit is operable to transfer the eviction data from the selected buffer to the second cache memory and de-allocate the selected buffer.

9. The system of claim 5 , wherein the selected buffer is divided into a plurality of segments, the fill data is divided into a plurality of portions, one of the portions of the fill data is stored in each of the segments, the eviction data is divided into a plurality of portions, and the bus unit is further operable to transfer a first portion of the fill data stored in a first segment to the first cache memory, then store a first portion of the eviction data in the first segment, and sequentially repeat the transferring of remaining portions of the fill data and the storing of portions of the eviction data for the remaining segments.

10. A method, comprising:

allocating a selected buffer of a plurality of buffers for a fill request associated with a first cache line to be stored in a first cache memory;

loading fill data responsive to the fill request from the first cache line into the selected buffer; and

transferring the fill data from the selected buffer to the first cache memory in parallel with storing eviction data for an evicted cache line from the first cache memory in the selected buffer by transferring the fill data from the selected buffer to the first cache memory to empty the selected buffer and transferring the eviction data into the emptied selected buffer after one or more portions of the selected buffer have been emptied.

11. The method of claim 10 , further comprising receiving the first cache line from a system memory.

12. The method of claim 10 , further comprising receiving the first cache line from a second cache memory.

13. The method of claim 12 , further comprising:

transferring the eviction data from the selected buffer to the second cache memory; and

de-allocating the selected buffer.

14. The method of claim 10 , wherein the selected buffer is divided into a plurality of segments, the fill data is divided into a plurality of portions, one of the portions of the fill data is stored in each of the segments, the eviction data is divided into a plurality of portions, and the method further comprises:

transferring a first portion of the fill data stored in a first segment to the first cache memory;

then storing a first portion of the eviction data in the first segment; and

sequentially repeating the transferring of remaining portions of the fill data and the storing of portions of the eviction data for the remaining segments.

15. A non-transitory computer readable storage device encoded with data that, when implemented in a manufacturing facility, adapts the manufacturing facility to create a processor, comprising:

a first cache memory; and

a bus unit comprising a plurality of buffers, the bus unit to:

allocate a selected buffer of a plurality of buffers for a fill request associated with a first cache line to be stored in a first cache memory;

load fill data responsive to the fill request from the first cache line into the selected buffer; and

transfer the fill data from the selected buffer to the first cache memory in parallel with storing eviction data for an evicted cache line from the first cache memory in the selected buffer by transferring the fill data from the selected buffer to the first cache memory to empty the selected buffer and transferring the eviction data into the emptied selected buffer after one or more portions of the selected buffer have been emptied.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 22, 2013
From: RUPLEY, JEFF; NAKRA, TARUN
To: ADVANCED MICRO DEVICES, INC.
Reel/Frame 030263/0182 →
Continuity (1)
Related Publication 20140189245A1 · Jul 3, 2014