# US 11,307,784 B2 · Method and apparatus for storing memory attributes

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

- Number: US 11,307,784 B2
- Document ID: US11307784B2
- Status: Granted
- Kind: B2
- Application number: 16/882,081
- Filed: 2020-05-22
- Published: 2020-09-10
- Granted: 2022-04-19
- Earliest claimed: 2016-07-25
- Assignees: Oracle International Corporation
- Applicants: Oracle International Corporation
- Inventors: David L. Weaver; John R. Rose
- Web page: https://patentgrep.com/patent/US11307784B2

## CPC

- G06F 3/0634: {by changing the state or mode of one or more devices}
- G06F 12/0895: of parts of caches, e.g. directory or tag array
- G06F 3/0604: {Improving or facilitating administration, e.g. storage management}
- G06F 3/0673: {Single storage device}
- G06F 12/0284: {Multiple user address space allocation, e.g. using different base addresses (interprocessor communication G06F15/163)}
- G06F 12/1408: {by using cryptography (for digital transmission H04L9/00)}
- G06F 12/1441: {for a range}
- G06F 12/1483: {using an access-table, e.g. matrix or list}
- G06F 2212/1024: Latency reduction
- G06F 2212/1044: Space efficiency improvement
- G06F 2212/401: Compressed data
- G06F 2212/453: Microcode or microprogram
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

A system includes a processor and memory including one or more memory region groups, each including a plurality of distinct memory regions. In embodiments, each memory region of a particular memory region group has a same set of memory attributes and is associated with a same attribute group identifier (AGI). In response to an access request to a memory location of a memory region within the particular memory region group, the AGI may be used to identify the set of memory attributes to be applied when executing the access request. In response to a request to change one or more memory attributes of the particular memory region group, update of a single entry changes the memory attributes for all memory regions of the particular memory region group, without accessing individual metadata of each memory region. The update can be accomplished atomically and substantially simultaneously.

## Claims

### Claim 1

A system, comprising:
a processor; and
a system memory coupled to the processor, wherein the system memory comprises a plurality of regions corresponding to respective portions of a system memory address space for the processor;
the processor comprising a memory management unit configured to perform memory operations to respective regions of the plurality of regions of the system memory for memory access instructions executed by the processor;
wherein the processor is configured to:
assign a respective attribute group identifier (AGI) to respective regions of the plurality of regions to associate each respective region with a respective memory region group, wherein regions assigned a same AGI belong to a same memory region group, wherein each region of a first plurality of the regions is assigned a first AGI for a first memory region group, and each region of a second plurality of the regions is assigned a second AGI for a second memory region group;
store a group attribute table comprising a respective entry for each different AGI, wherein individual respective entries store a respective set of indicators of one or more respective memory attributes to be applied to regions to which the AGI for that entry is assigned; and
responsive to a request to modify at least one of the one or more memory attributes associated with the first AGI, modify, in the entry of the first AGI, those indicators that correspond to the requested modifications, which causes modification of corresponding ones of the memory attributes for the first plurality of the regions.

### Claim 2 (depends on 1)

The system of claim 1, wherein the one or more memory attributes corresponding to the one or more indicators stored for each entry of the group attribute table comprise at least one of a read-only region attribute, a not-accessible region attribute, an executable region attribute, a writeable region attribute, an encrypted region attribute, a compressed region attribute, a dirty region attribute, an encrypted region attribute, or a garbage collection state attribute.

### Claim 3 (depends on 1)

The system of claim 1, wherein the plurality of regions correspond to respective cache lines, and wherein to assign a respective AGI for each respective region of the plurality of regions, the processor is further configured to specify the respective AGI for each respective cache line.

### Claim 4 (depends on 1)

The system of claim 1, wherein the plurality of regions correspond to respective pages of the system memory, and wherein to assign a respective AGI for each respective region of the plurality of regions, the processor is further configured to specify the respective AGI in a respective page table entry for each respective page.

### Claim 5 (depends on 1)

The system of claim 1, wherein the processor is further configured to assign individual memory attributes to individual ones of the plurality of regions, wherein a particular region is assigned both an individual memory attribute and an AGI for one or more memory attributes, wherein the AGI applies to one of the one or more memory region groups to which the particular region belongs.

### Claim 6 (depends on 1)

The system of claim 1, wherein the processor is further configured to assign more than one AGI to the same region such that memory attributes from two or more corresponding entries of the group attribute table apply to the same region.

### Claim 7 (depends on 1)

The system of claim 1, wherein a memory region located between two other memory regions that are assigned a same AGI in the system memory address space, is assigned a different AGI than the two other memory regions.

### Claim 8

A method, comprising:
assigning a respective attribute group identifier (AGI) to respective regions of the plurality of regions to associate each respective region with a respective memory region group, wherein regions assigned a same AGI belong to a same memory region group, wherein each region of a first plurality of the regions is assigned a first AGI for a first memory region group, and each region of a second plurality of the regions is assigned a second AGI for a second memory region group;
storing a group attribute table comprising a respective entry for each different AGI, wherein individual entries store a respective set of indicators of one or more respective memory attributes to be applied to regions to which the AGI for that entry is assigned; and
responsive to a request to modify at least one of the one or more memory attributes associated with the first AGI, modifying, in the entry of the first AGI, those indicators that correspond to the requested modifications, which causes modification of corresponding ones of the memory attributes for the first plurality of the regions.

### Claim 9 (depends on 8)

The method of claim 8, wherein the one or more memory attributes with corresponding indicators stored at each entry of the group attribute table comprise one or more of a read-only region attribute, a not-accessible region attribute, an executable region attribute, a writeable region attribute, an encrypted region attribute, a compressed region attribute, a dirty region attribute, or a garbage collection state attribute.

### Claim 10 (depends on 8)

The method of claim 8, further comprising assigning individual memory attributes to individual ones of the plurality of regions, wherein a particular region is assigned both an individual memory attribute and an AGI associated with one or more memory attributes, wherein the AGI applies to one of the one or more memory region groups to which the particular region belongs.

### Claim 11 (depends on 8)

The method of claim 8, further comprising assigning more than one AGI to the same region such that memory attributes from two or more corresponding entries of the group attribute table apply to the same region.

### Claim 12 (depends on 8)

The method of claim 8, wherein the plurality of regions correspond to respective cache lines, and assigning a respective AGI for each respective region of the plurality of regions comprises specifying the respective AGI for each respective cache line.

### Claim 13 (depends on 8)

The method of claim 8, wherein the plurality of regions correspond to respective pages of the system memory, and assigning a respective AGI for each respective region of the plurality of regions comprises specifying the respective AGI in a respective page table entry for each respective page.

### Claim 14 (depends on 8)

The method of claim 8, wherein applying the memory attributes that correspond to the indicators of the updated entry comprises applying the memory attributes of the updated entry atomically to the regions of the first plurality of the regions.

### Claim 15

A processor, comprising:
circuitry configured to perform memory management including performance of memory operations to respective regions of a plurality of regions of a system memory for memory access instructions executed by the processor;
wherein the processor is configured to:
assign a respective attribute group identifier (AGI) for each respective region of the plurality of regions to associate each respective region with a respective memory region group, wherein regions assigned a same AGI belong to a same memory region group, wherein each region of a first plurality of the regions is assigned a first AGI for a first memory region group, and each region of a second plurality of the regions is assigned a second AGI for a second memory region group;
store a group attribute table comprising a respective entry for each different AGI, wherein individual respective entries store a respective set of indicators of one or more respective memory attributes to be applied to regions to which the AGI for that entry is assigned; and
responsive to a request to modify at least one of the one or more memory attributes associated with the first AGI, modify, in the entry of the first AGI, those indicators that correspond to the requested modifications, which causes modification of corresponding ones of the memory attributes for the first plurality of the regions.

### Claim 16 (depends on 15)

The processor of claim 15, wherein the one or more memory attributes stored for each entry of the group attribute table comprise one or more of a read-only region attribute, a not-accessible region attribute, an executable region attribute, a writeable region attribute, an encrypted region attribute, a compressed region attribute, a dirty region attribute, or a garbage collection state attribute.

### Claim 17 (depends on 15)

The processor of claim 15, wherein the processor is further configured to assign individual memory attributes to individual ones of the plurality of regions, wherein a particular region is assigned both an individual memory attribute and an AGI for one or more memory attributes, wherein the AGI applies to one of the one or more memory region groups to which the particular region belongs.

### Claim 18 (depends on 15)

The processor of claim 15, wherein the plurality of regions correspond to respective cache lines, and assignment of a respective AGI for each respective region of the plurality of regions comprises specification of the respective AGI for each respective cache line.

### Claim 19 (depends on 15)

The processor of claim 15, wherein the plurality of regions correspond to respective pages of the system memory, and assignment of a respective AGI for each respective region of the plurality of regions comprises specification of the respective AGI in a respective page table entry for each respective page.

### Claim 20 (depends on 15)

The processor of claim 15, wherein the processor is further configured to assign more than one AGI to the same region such that memory attributes from two or more corresponding entries of the group attribute table apply to the same region.
