# US 2017/0286151 A1 · Handling Memory Requests

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

- Number: US 2017/0286151 A1
- Document ID: US20170286151A1
- Status: Published application
- Kind: A1
- Application number: 15/471,256
- Filed: 2017-03-28
- Published: 2017-10-05
- Earliest claimed: 2016-03-29
- Assignees: Imagination Technologies Limited
- Applicants: Imagination Technologies Limited
- Inventors: Mark Landers; Martin John Robinson
- Web page: https://patentgrep.com/patent/US20170286151A1

## CPC

- G06F 9/467: {Transactional memory (G06F9/528 takes precedence)}
- G01N 33/0006: {Calibrating gas analysers}
- G01N 33/0067: {by measuring the rate of variation of the concentration}
- G01N 33/0073: {Control unit therefor}
- G06F 9/45558: {Hypervisor-specific management and integration aspects}
- G06F 12/0811: with multilevel cache hierarchies
- G06F 12/0831: using a bus scheme, e.g. with bus monitoring or watching means
- G06F 12/0891: using clearing, invalidating or resetting means
- G06F 12/0897: with two or more cache hierarchy levels (with multilevel cache hierarchies G06F12/0811)
- G06F 12/1027: using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
- G06F 12/1063: {the data cache being concurrently virtually addressed}
- G06F 13/1605: {based on arbitration (arbitration in handling access to a common bus or bus system G06F13/36)}
- G06F 13/1684: {using multiple buses}
- G06F 2009/45583: {Memory management, e.g. access or allocation}
- G06F 2212/1008: Correctness of operation, e.g. memory ordering
- G06F 2212/1024: Latency reduction
- G06F 2212/60: Details of cache memory
- G06F 2212/621: Coherency control relating to peripheral accessing, e.g. from DMA or I/O device
- G06F 2212/684: TLB miss handling
- 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)
- G01N: INVESTIGATING OR ANALYSING MATERIALS BY DETERMINING THEIR CHEMICAL OR PHYSICAL PROPERTIES (measuring or testing apparatus or processes other than immunoassay, involving enzymes or microorganisms C12M, C12Q)
- 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

A converter module is described which handles memory requests issued by a cache (e.g. an on-chip cache), where these memory requests include memory addresses defined within a virtual memory space. The converter module receives these requests, issues each request with a transaction identifier and uses that identifier to track the status of the memory request. The converter module sends requests for address translation to a memory management unit and where there the translation is not available in the memory management unit receives further memory requests from the memory management unit. The memory requests are issued to a memory via a bus and the transaction identifier for a request is freed once the response has been received from the memory. When issuing memory requests onto the bus, memory requests received from the memory management unit may be prioritized over those received from the cache.

## Claims

### Claim 1

A module comprising:
an assignment module arranged to receive memory requests from a cache and to assign a transaction identifier to each received memory request, wherein the memory requests received from the cache include one or more memory addresses defined in a virtual address space;
a transaction tracker module arranged to receive a memory request from the assignment module with the assigned transaction identifier, to track the status of the memory request and to receive translation information from a memory management unit, wherein the translation information comprises a translation of a virtual memory address in the memory request to a physical memory address or a pointer to the translation; and
an arbiter module arranged to receive a memory request from the transaction tracker module with the assigned transaction identifier when the memory request is ready for issue and to issue the memory request to a memory via an external bus and to trigger the freeing of the assigned transaction identifier in response to receiving a response from the memory via the external bus, wherein the memory request issued to memory includes one or more physical memory addresses determined using the translation information.

### Claim 2 (depends on 1)

A module according to claim 1, wherein the arbiter module is further arranged to receive a plurality of memory requests and to select a memory request to issue from any received memory requests which have not yet been issued.

### Claim 3 (depends on 2)

A module according to claim 2, wherein the arbiter module is further arranged to receive a memory read request from the memory management unit with a transaction identifier assigned by the memory management unit and to select the memory read request from the memory management unit for issue ahead of any memory requests received from the transaction tracker module which have not yet been issued.

### Claim 4 (depends on 2)

A module according to claim 2, wherein the arbiter module is arranged to select a memory request to issue from any received memory requests which have not yet been issued according to pre-defined rules; and optionally wherein the pre-defined rules cause the selection of a memory request received from the memory management unit ahead of a memory request received from the transaction tracker module and if there is not a memory request received from the memory management unit, selection of a memory request received from the transaction tracker module based at least in part on a time of receipt of the translation information for the memory requests.

### Claim 5 (depends on 1)

A module according to claim 1, wherein the transaction identifiers assigned by the assignment module are external transaction identifiers and wherein the arbiter module is arranged to issue memory requests using the assigned external transaction identifiers.

### Claim 6 (depends on 5)

A module according to claim 5, wherein the arbiter module is arranged, in response to receiving a response from the memory via the external bus, the response comprising an external transaction identifier, to identify the unit from which the corresponding request with the same external transaction identifier was received and to transmit the response to the identified unit, wherein the unit comprises the transaction tracker module or the memory management unit.

### Claim 7 (depends on 1)

A module according to claim 1, wherein the transaction identifiers assigned by the assignment module are internal transaction identifiers and wherein the arbiter module is further arranged, following selection of a memory request for issue, to allocate an external transaction identifier to the memory request and store a mapping between the assigned internal transaction identifier and the allocated external transaction identifier and wherein the arbiter module is arranged to issue memory requests using the allocated external transaction identifiers.

### Claim 8 (depends on 7)

A module according to claim 7, wherein the arbiter module is arranged, in response to receiving a response from the memory via the external bus, the response comprising an external transaction identifier, to map the external transaction identifier back to the assigned internal transaction identifier, identify the unit from which the corresponding request with the same internal transaction identifier was received and to transmit the response to the identified unit, wherein the unit comprises the transaction tracker module or the memory management unit.

### Claim 9 (depends on 1)

A module according to claim 1, comprising a read path arranged to receive memory read requests from the cache and a write path arranged to receive memory write requests from the cache, wherein the read path comprises the assignment module, the transaction tracker module and the arbiter module and wherein the write path comprises a second assignment module, a second transaction tracker module and a second arbiter module.

### Claim 10 (depends on 9)

A module according to claim 9, wherein the transaction tracker module and the second transaction tracker module are both arranged to check incoming memory requests from the cache for data hazards and in response to detecting a hazard, to set a flag for the incoming transaction and wherein a memory request is not ready for issue if the flag is set; and optionally wherein the transaction tracker module and the second transaction tracker module are arranged to clear the flag for a memory request which depends upon an earlier memory request in response to receiving a response from the memory via the external bus for the earlier memory request.

### Claim 11

A method comprising:
receiving memory requests from a cache at a converter module;
assigning, in the converter module, a transaction identifier to each received memory request, wherein the memory requests received from the cache include one or more memory addresses defined in a virtual address space;
tracking, in the converter module, the status of the memory requests;
receiving, in the converter module, translation information from a memory management unit, wherein the translation information comprises a translation of a virtual memory address in one of the memory requests to a physical memory address or a pointer to the translation;
issuing said one of the memory requests from the converter module to a memory via an external bus, wherein the memory request issued to memory includes one or more physical memory addresses determined using the translation information; and
triggering the freeing of the assigned transaction identifier in response to receiving a response from the memory via the external bus.

### Claim 12 (depends on 11)

A method according to claim 11, further comprising:
selecting a memory request to issue from any received memory requests which have not yet been issued; and
optionally,
receiving a memory read request from the memory management unit with a transaction identifier assigned by the memory management unit, and wherein selecting a memory request comprises selecting a memory read request received from the memory management unit for issue ahead of any memory requests received from the cache.

### Claim 13 (depends on 14)

A method according to claim 14, wherein a memory request is selected to issue according to pre-defined rules and optionally wherein the pre-defined rules cause the selection of a memory request received from the memory management unit ahead of a memory request received from the cache and if there is not a memory request received from the memory management unit, selection of a memory request received from the cache based at least in part on a time of receipt of the translation information for the memory requests.

### Claim 14 (depends on 11)

A method according to claim 11, wherein the transaction identifiers assigned are external transaction identifiers and memory requests are issued using the assigned external transaction identifiers.

### Claim 15 (depends on 11)

A method according to claim 11, wherein the transaction identifiers assigned are internal transaction identifiers and wherein the method further comprises, following selection of a memory request for issue:
allocating an external transaction identifier to the memory request; and
storing a mapping between the assigned internal transaction identifier and the allocated external transaction identifier,
and wherein memory requests are issued using the allocated external transaction identifiers.

### Claim 16 (depends on 15)

A method according to claim 15, further comprising:
in response to receiving a response from the memory via the external bus, the response comprising an external transaction identifier, mapping the external transaction identifier back to the assigned internal transaction identifier.

### Claim 17 (depends on 11)

A method according to claim 11, further comprising:
checking memory requests received from the cache for data hazards; and
in response to detecting a hazard, setting a flag for the incoming request and wherein a memory request cannot be issued if the flag is set.

### Claim 18 (depends on 17)

A method according to claim 17, further comprising:
clearing a flag for a memory request which depends upon an earlier memory request in response to receiving a response from the memory via the external bus for the earlier memory request.

### Claim 19

A system comprising:
a processor arranged to assign a transaction identifier to each memory request issued by the processor; and
a module comprising:
an assignment module arranged to receive memory requests from a cache, wherein the memory requests received from the cache include a transaction identifier assigned by the processor and one or more memory addresses defined in a virtual address space;
a transaction tracker module arranged to receive a memory request from the assignment module with the assigned transaction identifier, to track the status of the memory request and to receive translation information from a memory management unit, wherein the translation information comprises a translation of a virtual memory address in the memory request to a physical memory address or a pointer to the translation; and
an arbiter module arranged to receive a memory request from the transaction tracker module with the assigned transaction identifier when the memory request is ready for issue and to issue the memory request to a memory via an external bus and to trigger the freeing of the assigned transaction identifier in response to receiving a response from the memory via the external bus, wherein the memory request issued to memory includes one or more physical memory addresses determined using the translation information.

### Claim 20

A method comprising:
assigning, in a processor, a transaction identifier to each issued memory request;
receiving memory requests from a cache at a converter module, wherein the memory requests received from the cache include a transaction identifier assigned by the processor and one or more memory addresses defined in a virtual address space;
tracking, in the converter module, the status of the memory request;
receiving, in the converter module, translation information from a memory management unit, wherein the translation information comprises a translation of a virtual memory address in the memory request to a physical memory address or a pointer to the translation;
issuing the memory request from the converter module to a memory via an external bus, wherein the memory request issued to memory includes one or more physical memory addresses determined using the translation information; and
triggering the freeing of the assigned transaction identifier in response to receiving a response from the memory via the external bus.
