# US 10,503,661 B2 · Providing memory bandwidth compression using compressed memory controllers (CMCs) in a central processing unit (CPU)-based system

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 10,503,661 B2
- Document ID: US10503661B2
- Status: Granted
- Kind: B2
- Application number: 14/717,552
- Filed: 2015-05-20
- Published: 2015-11-26
- Granted: 2019-12-10
- Earliest claimed: 2014-05-21
- Assignees: QUALCOMM Incorporated
- Applicants: QUALCOMM Incorporated
- Inventors: Mattheus Cornelis Antonius Adrianus Heddes; Natarajan Vaidhyanathan; Colin Beaton Verrilli
- Web page: https://patentgrep.com/patent/US10503661B2

## CPC

- G06F 12/1081: for peripheral access to main memory, e.g. direct memory access [DMA]
- G06F 12/023: {Free address space management}
- G06F 12/0811: with multilevel cache hierarchies
- G06F 12/0817: using directory methods
- G06F 12/0833: {in combination with broadcast means (e.g. for invalidation or updating)}
- G06F 2212/1024: Latency reduction
- G06F 2212/1044: Space efficiency improvement
- G06F 2212/2532: comprising a plurality of modules
- G06F 2212/401: Compressed data
- G06F 2212/452: Instruction code
- G06F 2212/62: Details of cache specific to multiprocessor cache arrangements
- G06F 2212/621: Coherency control relating to peripheral accessing, e.g. from DMA or I/O device
- G06F 2212/622: State-only directory, i.e. not recording identity of sharing or owning nodes
- Y02D 10/00: Energy efficient computing, e.g. low power processors, power management or thermal management
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)
- Y02D: CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE

## 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

### Claim 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.

### Claim 2 (depends on 1)

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.

### Claim 3 (depends on 1)

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.

### Claim 4 (depends on 3)

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.

### Claim 5 (depends on 3)

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.

### Claim 6 (depends on 3)

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.

### Claim 7 (depends on 1)

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.

### Claim 8 (depends on 7)

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.

### Claim 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.

### Claim 10 (depends on 9)

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.

### Claim 11 (depends on 9)

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.

### Claim 12 (depends on 11)

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.

### Claim 13 (depends on 11)

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.

### Claim 14 (depends on 11)

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.

### Claim 15 (depends on 9)

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.

### Claim 16 (depends on 15)

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.
