IP Library Granted Patent US 9,280,479
Granted Patent B1
US 9,280,479 · App. 13/478,100 · Granted Mar 8, 2016

Multi-level store merging in a cache and memory hierarchy

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,280,479
App. No.
13/478,100
Granted
Mar 8, 2016
Kind
B1
Abstract

A memory system having increased throughput is disclosed. Specifically, the memory system includes a first level write combining queue that reduces the number of data transfers between a level one cache and a level two cache. In addition, a second level write merging buffer can further reduce the number of data transfers within the memory system. The first level write combining queue receives data from the level one cache. The second level write merging buffer receives data from the first level write combining queue. The level two cache receives data from both the first level write combining queue and the second level write merging buffer. Specifically, the first level write combining queue combines multiple store transactions from the load store units to associated addresses. In addition, the second level write merging buffer merges data from the first level write combining queue.

Claims (54)

1. A memory system for receiving and providing data to a load store unit, the memory system comprising:

a first level data cache coupled to the load store unit;

a first level write combining queue for the first level data cache coupled to the first level data cache;

a second level write merging buffer coupled to the first level write combining queue;

a second level data cache coupled to the first level data cache, the first level write combining queue, and the second level write merging buffer; and

a third level memory unit coupled between the second level write merging buffer and the second level data cache, the third level memory unit comprises a third level data cache and a forth level memory unit, wherein

the memory system determines a destination for data in the second level write merging buffer based on a transaction type of a first write command and a flag entry of the second level write merging buffer that indicates whether each data byte of the second level write merging buffer comprises valid data, wherein

the destination is the level two data cache when at least one data byte of the second level write merging buffer comprises invalid data,

the destination is the third level data cache when each data byte of the second level write merging buffer comprises valid data and the first write command is not a block write command, and

the destination is the forth level memory unit when each data byte of the second level write merging buffer comprises valid data and the first write command is a block write command.

2. The memory system of claim 1 , wherein the first level write combining queue is configured to combine multiple store transactions from the load store unit to associated addresses.

3. The memory system of claim 2 , wherein a first address is associated with a second address when the first address and the second address comprise a matching physical address.

4. The memory system of claim 2 , wherein a first address is associated with a second address when the first address and the second address are within a cache line.

5. The memory system of claim 2 , wherein a first address is associated with a second address when the first address and the second address are within a continuous subset of a cache line.

6. The memory system of claim 1 , wherein the second level write merging buffer is configured to combine data from the first level write combining queue and to write the data combined from the first level write combining queue into the second level data cache.

7. The memory system of claim 1 , wherein the second level write merging buffer is configured to combine data from the first level write combining queue and to write the data combined from the first level write combining queue into the third level memory unit.

8. The memory system of claim 1 , wherein the second level write merging buffer is configured to combine data from the first level write combining queue and to write the data combined from the first level write combining queue into the fourth level memory unit.

9. The memory system of claim 1 , wherein the first level write combining queue comprises a plurality of write combining queue entries, wherein each write-combining-queue entry further comprises:

an address field; and

a plurality of data bytes forming a data field comprising a particular data width.

10. The memory system of claim 9 ,

wherein the first level write combining queue is configured to store a first address and a first set of data from a first store transaction in a first write combining queue entry; and

wherein the first level write combining queue is configured to combine a second set of data from a second store transaction with the first set of data in the first write combining queue entry when a second address in the second write command is associated with the first address.

11. The memory system of claim 9 , wherein each write combining queue entry further comprises a non-combinable flag.

12. The memory system of claim 11 , wherein the first level write combining queue further comprises a first increment signal and wherein each write combining queue entry further comprises an age counter.

13. The memory system of claim 12 , wherein each age counter of each valid write combining queue entry is incremented by the first increment signal.

14. The memory system of claim 13 , wherein the first level write combining queue further comprises a second increment signal and wherein the age counter of an oldest valid write combining queue entry is also incremented by the second increment signal.

15. The memory system of claim 9 , wherein the first level write combining queue is configured to send data from an oldest valid write combining queue entry to the second level write merging buffer and to send an address from the oldest valid write-combining queue entry to the second level write merging buffer.

16. The memory system of claim 1 , wherein the second level write merging buffer comprises:

a data buffer comprising a plurality of data buffer lines; and

a merging control buffer comprising a plurality of merging control buffer entries.

17. The memory system of claim 16 , the second level write merging buffer is configured to combine a set of data from the first level write combining queue.

18. The memory system of claim 16 , wherein each merging control buffer entry further comprises:

a data buffer line identifier field;

an address field,

a data buffer valid flag; and

a ready flag.

19. The memory system of claim 18 , wherein the second level write merging buffer is configured to store a first set of data comprising a first address from the first level write combining queue in a first data buffer line and to store the first address in an address field of a first merging control buffer entry; and

wherein the second level write merging buffer is configured to combine a second set of data comprising a second address in the first data buffer line when the second address is associated with the first address.

20. The memory system of claim 19 , wherein the second address is associated with the first address, when the first address and the second address are within a cache line of the second level data cache.

21. The memory system of claim 19 , wherein the second level write merging buffer is configured to store a data buffer line identifier identifying the first data buffer line stored in the data buffer identifier field of the first merging control buffer entry; and

wherein the second level write merging buffer is configured to write a valid state in the data buffer valid flag of the first merging control buffer entry when the first set of data is stored in the first data buffer line.

22. The memory system of claim 21 , wherein each merging control buffer entry further comprises a data buffer line perfected flag; and

wherein the data buffer line perfected flag in the first merging control buffer entry is set to a valid state when the first data buffer line is perfected.

23. The memory system of claim 21 , wherein each merging control buffer entry further comprises a block write flag; and

wherein the block write flag in the first merging control buffer entry is set to a valid state when the first set of data is generated based on a write command.

24. An apparatus, comprising:

a first level data cache coupled to the load store unit; a first level write combining queue coupled to the first level data cache; a second level write merging buffer coupled to the first level write combining queue;

a second level data cache coupled to the first level data cache, the first level write combining queue, and the second level write merging buffer; and

a third level memory unit coupled between the second level write merging buffer and the second level data cache, the third level memory unit comprises a third level data cache and a forth level memory unit, wherein

the memory system determines a destination for data in the second level write merging buffer based on a transaction type of a first write command and a flag entry of the second level write merging buffer that indicates whether each data byte of the second level write merging buffer comprises valid data, wherein

the destination is the level two data cache when at least one data byte of the second level write merging buffer comprises invalid data,

the destination is the third level data cache when each data byte of the second level write merging buffer comprises valid data and the first write command is not a block write command, and

the destination is the forth level memory unit when each data byte of the second level write merging buffer comprises valid data and the first write command is a block write command.

Assignments (5)
CHANGE OF NAME Recorded Dec 6, 2017
From: PROJECT DENVER INTERMEDIATE HOLDINGS LLC
To: AMPERE COMPUTING LLC
Reel/Frame 044717/0683 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 21, 2017
From: MACOM CONNECTIVITY SOLUTIONS, LLC
To: PROJECT DENVER INTERMEDIATE HOLDINGS LLC
Reel/Frame 044798/0599 →
RELEASE OF SECURITY INTEREST Recorded Oct 31, 2017
From: GOLDMAN SACHS BANK USA, AS COLLATERAL AGENT
To: MACOM CONNECTIVITY SOLUTIONS, LLC (SUCCESSOR TO APPLIED MICRO CIRCUITS CORPORATION)
Reel/Frame 044652/0609 →
MERGER AND CHANGE OF NAME Recorded May 8, 2017
From: APPLIED MICRO CIRCUITS CORPORATION; MACOM CONNECTIVITY SOLUTIONS, LLC
To: MACOM CONNECTIVITY SOLUTIONS, LLC
Reel/Frame 042423/0700 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 22, 2012
From: KRUCKEMYER, DAVID A.; FAVOR, JOHN GREGORY; ASHCRAFT, MATTHEW W.
To: APPLIED MICRO CIRCUITS CORPORATION
Reel/Frame 028252/0035 →