# US 2019/0171565 A1 · Memory allocation apparatus and method

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

- Number: US 2019/0171565 A1
- Document ID: US20190171565A1
- Status: Published application
- Kind: A1
- Application number: 16/321,063
- Filed: 2017-07-28
- Published: 2019-06-06
- Earliest claimed: 2016-08-12
- Assignees: Sony Interactive Entertainment Inc.
- Applicants: Sony Interactive Entertainment Inc.
- Inventors: Paul Bowen-Huggett
- Web page: https://patentgrep.com/patent/US20190171565A1

## CPC

- G06F 12/06: Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication (G06F12/08 takes precedence)
- G06F 9/5077: {Logical partitioning of resources; Management or configuration of virtualized resources (specific details on emulation or internal functioning of virtual machines G06F9/455)}
- G06F 12/0292: {using tables or multilevel address translation means (G06F12/023 takes precedence; address translation in virtual memory systems G06F12/10)}
- G06F 12/1009: using page tables, e.g. page table structures
- G06F 12/109: for multiple virtual address spaces, e.g. segmentation (G06F12/1036 takes precedence)
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

A method of memory allocation in a host computer includes: allocating one or more regions of physical working memory for use by an application, the regions individually including contiguous physical memory segments, but the regions not necessarily being contiguous between themselves; generating a segment address table having at least as many entries as the total number of physical memory segments allocated to the application; populating entries of the segment address table sequentially and contiguously with the physical addresses of the physical memory segments across the or each region in order; presenting to the application a contiguous virtual addressable space having at least as many virtual memory segments as the total number of physical memory segments allocated to the application; and mapping from virtual memory addresses to physical memory addresses by reference to the segment address table.

## Claims

### Claim 1

A method of memory allocation in a host computer, comprising the steps of:
allocating one or more regions of physical working memory for use by an application, the regions individually comprising contiguous physical memory segments, but the regions not necessarily being contiguous between themselves;
generating a segment address table having at least as many entries as the total number of physical memory segments allocated to the application;
populating entries of the segment address table sequentially and contiguously with the physical addresses of the physical memory segments across the or each region in order;
presenting to the application a contiguous virtual addressable space having at least as many virtual memory segments as the total number of physical memory segments allocated to the application; and
mapping from virtual memory addresses to physical memory addresses by reference to the segment address table.

### Claim 2 (depends on 1)

The method of memory allocation of claim 1, in which in the step of populating the segment address table, the first entry of the segment address table is populated with the address of the first physical memory segment of the first region.

### Claim 3 (depends on 1)

The method of memory allocation of claim 1, in which the step of mapping from virtual memory addresses to physical memory addresses by reference to the segment address table comprises the steps of:
determining the virtual memory segment comprising the virtual memory address and calculating a virtual address offset with respect to that segment;
reading the physical memory addresses held in the entry of the segment address table corresponding to the determined virtual memory segment; and
adding the calculated virtual address offset to that physical memory address.

### Claim 4 (depends on 3)

The method of claim 3, wherein if one or more regions of physical working memory are allocated starting at an address other than the start address of a physical memory segment, then the method comprises the steps of
calculating a physical starting address offset with respect to the start address of the physical memory segment for the or each region; and
adding the respective physical starting address offset to the calculated physical memory address in a respective region.

### Claim 5 (depends on 1)

The method of claim 1, wherein the segment address table comprises fields for all available physical memory segments.

### Claim 6 (depends on 5)

The method of claim 5, wherein the segment address table comprises fields for potential physical memory segments.

### Claim 7 (depends on 1)

The method of claim 1, comprising the steps of:
requesting additional working memory for the application;
allocating one or more new regions of physical working memory for use by the application, the new regions individually comprising contiguous physical memory segments, but new the regions not necessarily being contiguous between themselves; and
populating entries of the segment address table sequentially and contiguously with the physical addresses of the physical memory segments across the or each new region in order starting with the entry immediately following the last entry in the segment address table corresponding to the existing allocated regions of physical working memory.

### Claim 8 (depends on 1)

The method of claim 1, comprising the step of selecting the same virtual start address for the virtual address space each time the application is allocated physical working memory.

### Claim 9 (depends on 1)

The method of claim 1, wherein for respective applications with respective allocated physical working memory, each application has a respective segment address table and virtual addressable space.

### Claim 10

A non-transitory, computer readable recording medium having stored thereon a computer executable program adapted to cause a computer system to perform actions, comprising:
allocating one or more regions of physical working memory for use by an application, the regions individually comprising contiguous physical memory segments, but the regions not necessarily being contiguous between themselves;
generating a segment address table having at least as many entries as the total number of physical memory segments allocated to the application;
populating entries of the segment address table sequentially and contiguously with the physical addresses of the physical memory segments across the or each region in order;
presenting to the application a contiguous virtual addressable space having at least as many virtual memory segments as the total number of physical memory segments allocated to the application; and
mapping from virtual memory addresses to physical memory addresses by reference to the segment address table.

### Claim 11

A memory allocation apparatus, comprising
physical working memory;
an application processor adapted to run an application;
an allocation processor adapted to allocate one or more regions of physical working memory for use by an application, the regions individually comprising contiguous physical memory segments, but the regions not necessarily being contiguous between themselves;
a memory manager adapted to generate a segment address table having at least as many entries as the total number of physical memory segments allocated to the application;
the memory manager being adapted to populate entries of the segment address table sequentially and contiguously with the physical addresses of the physical memory segments across the or each region in order;
the memory manager being adapted to present to the application a contiguous virtual addressable space having at least as many virtual memory segments as the total number of physical memory segments allocated to the application; and
the memory manager being adapted to map from virtual memory addresses to physical memory addresses by reference to the segment address table.

### Claim 12 (depends on 11)

The memory allocation apparatus of claim 11, in which the memory manager is adapted to map from virtual memory addresses to physical memory addresses by reference to the segment address table by the process of:
determining the virtual memory segment comprising the virtual memory address and calculating a virtual address offset with respect to that segment;
reading the physical memory addresses held in the entry of the segment address table corresponding to the determined virtual memory segment; and
adding the calculated virtual address offset to that physical memory address.

### Claim 13 (depends on 11)

The memory allocation apparatus of claim 11 in which
the allocation processor is adapted to allocate one or more new regions of physical working memory for use by the application, the new regions individually comprising contiguous physical memory segments, but the new regions not necessarily being contiguous between themselves, in response to a request by the application processor for more physical working memory; and
the memory manager is adapted to populate entries of the segment address table sequentially and contiguously with the physical addresses of the physical memory segments across the or each new region in order starting with the entry immediately following the last entry in the segment address table corresponding to the existing allocated regions of physical working memory.

### Claim 14 (depends on 11)

The memory allocation apparatus of claim 11, in which the memory manager is adapted to select the same virtual start address for the virtual address space each time the application is allocated physical working memory.

### Claim 15 (depends on 11)

The memory allocation apparatus of claim 11, wherein
for respective applications with respective allocated physical working memory, each application has a respective segment address table and virtual addressable space; and
the memory manager does not check for clashes between addresses of physical memory segments between segment address tables.
