IP Library › Granted Patent US 10,503,661
Granted Patent B2
US 10,503,661 · App. 14/717,552 · Granted Dec 10, 2019

Providing memory bandwidth compression using compressed memory controllers (CMCs) in a central processing unit (CPU)-based system

Inventors: Mattheus Cornelis Antonius Adrianus Heddes (Raleigh, NC); Natarajan Vaidhyanathan (Carrboro, NC); Colin Beaton Verrilli (Apex, NC)
Assignee: QUALCOMM Incorporated
G06F12/1081G06F12/023G06F12/0811G06F12/0817G06F12/0833G06F2212/1024G06F2212/1044G06F2212/2532G06F2212/401G06F2212/452G06F2212/62G06F2212/621G06F2212/622Y02D10/13
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,503,661
App. No.
14/717,552
Granted
Dec 10, 2019
Kind
B2
Abstract

Providing memory bandwidth compression using compressed memory controllers (CMCs) in a central processing unit (CPU)-based system is disclosed. In this regard, in some aspects, a CMC is configured to receive a memory read request to a physical address in a system memory, and read a compression indicator (CI) for the physical address from a master directory and/or from error correcting code (ECC) bits of the physical address. Based on the CI, the CMC determines a number of memory blocks to be read for the memory read request, and reads the determined number of memory blocks. In some aspects, a CMC is configured to receive a memory write request to a physical address in the system memory, and generate a CI for write data based on a compression pattern of the write data. The CMC updates the master directory and/or the ECC bits of the physical address with the generated CI.

Claims (57)

1. A compressed memory controller, comprising a memory interface configured to access a system memory via a system bus;

the compressed memory controller configured to:

receive a memory read request comprising a physical address of a memory block to be accessed within a memory line in the system memory;

read a master directory memory block containing a compression indicator (CI) corresponding to the physical address from a master directory in the system memory;

determine, as indicated by the CI, a number of memory blocks within the memory line in the system memory to read for the memory read request;

probabilistically determining whether the CI should be read from the master directory; and

responsive to probabilistically determining that the CI should be read from the master directory, read the determined number of memory blocks within the memory line in the system memory beginning at the physical address.

2. The compressed memory controller of claim 1 , wherein the compressed memory controller is further configured to, responsive to probabilistically determining that the CI should not be read from the master directory, read the CI from one or more error correcting code (ECC) bits associated with the determined number of memory blocks.

3. The compressed memory controller of claim 1 , further comprising a CI cache comprising a plurality of CI cache entries each configured to store a previously read master directory memory block;

the compressed memory controller further configured to, prior to reading the master directory memory block, determine whether the physical address corresponds to a CI cache entry of the plurality of CI cache entries of the CI cache;

the compressed memory controller configured to read the master directory memory block responsive to determining that the physical address does not correspond to a CI cache entry of the plurality of CI cache entries of the CI cache; and

the compressed memory controller further configured to:

responsive to determining that the physical address does not correspond to a CI cache entry of the plurality CI cache entries of the CI cache:

write the master directory memory block to a CI cache entry of the CI cache; and

read the CI from the CI cache entry of the CI cache; and

responsive to determining that the physical address corresponds to the CI cache entry of the plurality CI cache entries of the CI cache, read the CI from the CI cache entry of the CI cache.

4. The compressed memory controller of claim 3 , further configured to, prior to writing the master directory memory block to the CI cache entry of the CI cache:

determine whether a current CI cache entry of the CI cache should be evicted; and

responsive to determining that the current CI cache entry should be evicted:

determine whether the current CI cache entry has been modified; and

responsive to determining that the current CI cache entry has been modified, write the current CI cache entry to the master directory.

5. The compressed memory controller of claim 3 , further configured to send an early memory read request to the system memory in parallel with determining whether the physical address corresponds to a CI cache entry of the plurality of CI cache entries of the CI cache;

the compressed memory controller configured to read the determined number of memory blocks by being configured to, responsive to determining that the physical address corresponds to the CI cache entry of the plurality CI cache entries of the CI cache, modify the early memory read request based on the CI.

6. The compressed memory controller of claim 3 , further configured to perform a cache read operation on a Level 4 (L4) cache in parallel with determining whether the physical address corresponds to a CI cache entry of the plurality of CI cache entries of the CI cache.

7. The compressed memory controller of claim 1 , configured to determine, as indicated by the CI, the number of memory blocks within the memory line in the system memory to read for the memory read request by being configured to determine a compression pattern indicated by the CI.

8. The compressed memory controller of claim 7 , configured to determine the compression pattern indicated by the CI by being configured to determine that the CI comprises a zero-line indicator indicating that zero memory blocks should be read.

9. A method for providing memory bandwidth compression for memory read requests, comprising:

receiving, by a compressed memory controller via a system bus, a memory read request comprising a physical address of a memory block to be accessed within a memory line in a system memory;

reading a master directory memory block containing a compression indicator (CI) corresponding to the physical address from a master directory in the system memory;

determining, as indicated by the CI, a number of memory blocks within the memory line in the system memory to read for the memory read request;

probabilistically determining that the CI should be read from the master directory; and

responsive to probabilistically determining that the CI should be read from the master directory, reading the determined number of memory blocks within the memory line in the system memory beginning at the physical address.

10. The method of claim 9 ,

further comprising:

receiving, by the compressed memory controller via the system bus, a second memory read request comprising a second physical address of a memory block to be accessed within a second memory line in the system memory;

reading a second master directory memory block containing a second CI corresponding to the second physical address from the master directory in the system memory;

determining, as indicated by the second CI, a second number of memory blocks within the second memory line in the system memory to read for the second memory read request;

probabilistically determining that the second CI should be not be read from the master directory; and

responsive to probabilistically determining that the second CI should not be read from the master directory, reading the second CI from one or more error correcting code (ECC) bits associated with the determined second number of memory blocks.

11. The method of claim 9 , further comprising:

prior to reading the master directory memory block, determining whether the physical address corresponds to a CI cache entry of a plurality of CI cache entries of a CI cache;

wherein reading the master directory memory block is responsive to determining that the physical address does not correspond to a CI cache entry of the plurality of CI cache entries of the CI cache; and

the method further comprising:

responsive to determining that the physical address does not correspond to a CI cache entry of the plurality CI cache entries of the CI cache:

writing the master directory memory block to a CI cache entry of the CI cache; and

reading the CI from the CI cache entry of the CI cache; and

responsive to determining that the physical address corresponds to the CI cache entry of the plurality CI cache entries of the CI cache, reading the CI from the CI cache entry of the CI cache.

12. The method of claim 11 , further comprising, prior to writing the master directory memory block to the CI cache entry of the CI cache:

determining whether a current CI cache entry of the CI cache should be evicted; and

responsive to determining that the current CI cache entry should be evicted:

determining whether the current CI cache entry has been modified; and

responsive to determining that the current CI cache entry has been modified, writing the current CI cache entry to the master directory.

13. The method of claim 11 , further comprising sending an early memory read request to the system memory in parallel with determining whether the physical address corresponds to a CI cache entry of the plurality of CI cache entries of the CI cache;

wherein reading the determined number of memory blocks comprises, responsive to determining that the physical address corresponds to the CI cache entry of the plurality CI cache entries of the CI cache, modifying the early memory read request based on the CI.

14. The method of claim 11 , further comprising performing a cache read operation on a Level 4 (L4) cache in parallel with determining whether the physical address corresponds to a CI cache entry of the plurality of CI cache entries of the CI cache.

15. The method of claim 9 , wherein determining, as indicated by the CI, the number of memory blocks within the memory line in the system memory to read for the memory read request comprises determining a compression pattern indicated by the CI.

16. The method of claim 15 , wherein determining the compression pattern indicated by the CI comprises determining that the CI comprises a zero-line indicator indicating that zero memory blocks should be read.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 15, 2015
From: HEDDES, MATTHEUS CORNELIS ANTONIUS ADRIANUS; VAIDHYANATHAN, NATARAJAN; VERRILLI, COLIN BEATON
To: QUALCOMM INCORPORATED
Reel/Frame 035837/0761 →
Continuity (5)
Continuation In Part 14716001 · May 19, 2015
Provisional Application 62001545 · May 21, 2014
Provisional Application 62092326 · Dec 16, 2014
Provisional Application 62092409 · Dec 16, 2014
Related Publication 20150339239A1 · Nov 26, 2015
Cited By (1)
US 12,693,975