# US 10,372,352 B2 · Concurrent virtual storage management

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

- Number: US 10,372,352 B2
- Document ID: US10372352B2
- Status: Granted
- Kind: B2
- Application number: 15/440,556
- Filed: 2017-02-23
- Published: 2017-06-08
- Granted: 2019-08-06
- Earliest claimed: 2015-09-30
- Assignees: International Business Machines Corporation
- Applicants: International Business Machines Corporation
- Inventors: Charles E. Mari; Harris M. Morgenstern; Thomas F. Rankin; Peter J. Relson; Elpida Tzortzatos
- Web page: https://patentgrep.com/patent/US10372352B2

## CPC

- G06F 3/0619: {in relation to data integrity, e.g. data losses, bit errors}
- G06F 3/0659: {Command handling arrangements, e.g. command buffers, queues, command scheduling}
- G06F 3/0685: {Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays}
- G06F 12/0811: with multilevel cache hierarchies
- G06F 12/0815: Cache consistency protocols
- G06F 12/084: with a shared cache
- G06F 12/1009: using page tables, e.g. page table structures
- G06F 12/1027: using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
- G06F 12/145: {the protection being virtual, e.g. for virtual blocks or segments before a translation mechanism}
- G06F 2212/1016: Performance improvement
- G06F 2212/1052: Security improvement
- 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/657: Virtual address space management
- G06F 2212/68: Details of translation look-aside buffer [TLB]
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

A memory system is configured for access by a plurality of computer processing units. An address lock bit is configured in a translation table of the memory system. The address lock supports both address lock shared and address lock exclusive functions. A storage manager of an operating system configured to obtain exclusive access to an entry in a DAT table either by obtaining an address space lock exclusive or obtaining an address space lock shared, and setting a lock bit in a DAT entry.

## Claims

### Claim 1

A system, comprising:
a memory system configured for access by a plurality of computer processing units;
a lock bit configured in a dynamic address translation (DAT) table of the memory system, the lock bit supporting a first function comprising obtaining an address lock shared on a DAT structure represented in the DAT table and a second function comprising obtaining an address lock exclusive on the DAT structure, wherein the memory system is organized according to a multi-level hierarchy, and wherein a region table corresponds to a higher level in the multi-level hierarchy than a segment table and the segment table corresponds to a higher level in the multi-level hierarchy than a page table; and
a storage manager of an operating system, the storage manager configured to:
determine that the DAT structure is a particular segment table in the memory system,
determine that the particular segment table is the lowest valid level in the DAT table mapping a virtual address based at least in part on determining that the particular segment table does not point to a page table,
initiate the address lock shared on the particular segment table at least in part by serializing, via a serialization instruction issued by a storage management function, the lowest valid level in the DAT table mapping the virtual address by attempting to set the lock bit, wherein a segment table entry in the DAT table comprises the lock bit, the segment table entry corresponding to the particular segment table,
determine that setting the lock bit failed,
determine that the particular segment table is already locked based at least in part on determining that setting the lock bit failed,
drop the address space lock shared on the particular segment table, and
obtain the address space lock exclusive on the particular segment table prior to performing a corresponding task by a computer processing unit.

### Claim 2 (depends on 1)

The system of claim 1, wherein the storage manager is further configured to release the address space lock exclusive subsequent to the corresponding task being performed by the computer processing unit.

### Claim 3 (depends on 2)

The system of claim 2, wherein the corresponding task is a first task, and wherein the storage manager is further configured to:
obtain the address space lock shared on the particular segment table subsequent to release of the address space lock exclusive at least in part by setting the lock bit, and
release the address space lock shared to unlock the particular segment table subsequent to a second task being performed by the computer processing unit.

### Claim 4 (depends on 1)

The system of claim 1, wherein the corresponding task is a segment fault.

### Claim 5

A method, comprising:
configuring a lock bit in a dynamic address translation (DAT) table of a memory system to support a first function comprising obtaining an address lock shared on a DAT structure represented in the DAT table and a second function comprising obtaining an address lock exclusive on the DAT structure, wherein the memory system is configured for access by a plurality of computer processing units, and wherein the memory system is organized according to a multi-level hierarchy, and wherein a region table corresponds to a higher level in the multi-level hierarchy than a segment table and the segment table corresponds to a higher level in the multi-level hierarchy than a page table, and
by a storage manager of an operating system executing on the memory system:
determining that the DAT structure is a particular segment table in the memory system,
determining, by the storage manager, that the particular segment table is the lowest valid level in the DAT table mapping a virtual address based at least in part on determining that the particular segment table does not point to a page table,
initiating, by the storage manager the address space lock shared on the particular segment table at least in part by serializing, via a serialization instruction issued by a storage management function, the lowest valid level in the DAT table mapping the virtual address by attempting to set the lock bit, wherein a segment table entry in the DAT table comprises the lock bit, the segment table entry corresponding to the particular segment table,
determining that setting the lock bit failed,
determining that the particular segment table is already locked based at least in part on determining that setting the lock bit failed,
dropping the address space lock shared on the particular segment table, and
obtaining the address space lock exclusive on the particular segment table prior to performing a corresponding task by a computer processing unit.

### Claim 6 (depends on 5)

The method of claim 5, further comprising releasing, by the storage manager, the address space lock exclusive subsequent to the corresponding task being performed by the computer processing unit.

### Claim 7 (depends on 5)

The method of claim 5, wherein the task is a first task, the method further comprising by the storage manager:
obtain the address space lock shared on the particular segment table subsequent to release of the address space lock exclusive at least in part by setting the lock bit, and
releasing the address space lock shared to unlock the particular segment table subsequent to a second task being performed by the computer processing unit.

### Claim 8 (depends on 5)

The method of claim 5, wherein the corresponding task is a segment fault.

### Claim 9

A computer program product comprising a computer readable storage medium having program instructions embodied therewith, the program instructions executable by a processor to cause the processor to perform:
configuring a lock bit in a dynamic address translation (DAT) table of a memory system to support a first function comprising obtaining an address lock shared on a DAT structure represented in the DAT table and a second function comprising obtaining an address lock exclusive on the DAT structure, wherein the memory system is configured for access by a plurality of computer processing units, and wherein the memory system is organized according to a multi-level hierarchy, and wherein a region table corresponds to a higher level in the multi-level hierarchy than a segment table and the segment table corresponds to a higher level in the multi-level hierarchy than a page table, and
by a storage manager of an operating system executing on the memory system:
determining that the DAT structure is a particular segment table in the memory system,
determining, by the storage manager, that the particular segment table is the lowest valid level in the DAT table mapping a virtual address based at least in part on determining that the particular segment table does not point to a page table,
initiating, by the storage manager the address space lock shared on the particular segment table at least in part by serializing, via a serialization instruction issued by a storage management function, the lowest valid level in the DAT table mapping the virtual address by attempting to set the lock bit, wherein a segment table entry in the DAT table comprises the lock bit, the segment table entry corresponding to the particular segment table,
determining that setting the lock bit failed,
determining that the particular segment table is already locked based at least in part on determining that setting the lock bit failed,
dropping the address space lock shared on the particular segment table, and
obtaining the address space lock exclusive on the particular segment table prior to performing a corresponding task by a computer processing unit.

### Claim 10 (depends on 9)

The computer program product of claim 9, further comprising releasing, by the storage manager, the address space lock exclusive subsequent to the corresponding task being performed by the computer processing unit.
