IP Library Granted Patent US 12,475,056
Granted Patent B2
US 12,475,056 · App. 18/205,023 · Granted Nov 18, 2025

Managing access to memory by determining virtual addresses in dependence on access request type

Inventors: Robert Brigg (Watford, GB); Lorenzo Belli (Watford, GB)
Assignee: Imagination Technologies Limited
G06F12/1009G06F12/023G06T1/60G06F2212/652G06F2212/657
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 12,475,056
App. No.
18/205,023
Granted
Nov 18, 2025
Kind
B2
Abstract

A method of managing access to a physical memory formed of n memory page frames using a set of virtual address spaces having n virtual address spaces each formed of a plurality p of contiguous memory pages. The method includes receiving a write request to write a block of data to a virtual address within a virtual address space i of the n virtual address spaces, the virtual address defined by the virtual address space i, a memory page j within that virtual address space i and an offset from the start of that memory page j; translating the virtual address to an address of the physical memory using a virtual memory table having n by p entries specifying mappings between memory pages of the virtual address spaces and memory page frames of the physical memory, wherein the physical memory address is defined by: (i) the memory page frame mapped to the memory page j as specified by the virtual memory table, and (ii) the offset of the virtual address; and writing the block of data to the physical memory address.

Claims (61)

1 . A method of managing access to a physical memory, the method comprising:

receiving a request for a virtual address to write to, the physical memory being formed of n memory page frames using a set of virtual address spaces, said set comprising n virtual address spaces each formed of a plurality p of contiguous memory pages;

specifying a mapping between the virtual address and an address of the physical memory by determining the virtual address in response to the request in dependence on whether the request is a first type of request or a second type of request, the first type of request requesting that the virtual address maps to a same page frame of physical memory as a last page frame that a previous block of data was written to, and the second type of request requesting that the virtual address maps to a new page frame of physical memory; and

writing a block of data to the address of the physical memory.

2 . The method as claimed in claim 1 , further comprising, after specifying the mapping:

receiving a write request to write a block of data to the virtual address space; and

translating the virtual address to the address of the physical memory.

3 . The method as claimed in claim 1 , further comprising, prior to receiving the request for a virtual address to write to, writing the previous block of data to the physical memory.

4 . The method as claimed in claim 1 , wherein each of the n virtual address spaces has an index uniquely identifying that address space within the n virtual address spaces, and each memory page frame of the physical memory has an index uniquely identifying that memory page frame within the physical memory, wherein each of the virtual address space indices is mapped to a respective memory page frame index, and wherein the virtual address is defined by a virtual address space i, a memory page j within the virtual address space i, and an offset from the start of said memory page j.

5 . The method as claimed in claim 4 , wherein the method further comprises, if the block of data exceeds available space of the memory page frame in physical memory mapped to the memory page j within the virtual address space i:

selecting a further memory page frame from a list of available memory page frames;

specifying a mapping between the further memory page frame and a second memory page k in the virtual address space i contiguous with the memory page j; and

writing remaining data of the block of data to the further memory page frame.

6 . The method as claimed in claim 4 , wherein the specifying comprises specifying a mapping between the memory page j for the virtual address within the virtual address space i and a memory page frame of the physical memory.

7 . A memory management unit for managing access to a physical memory, the memory management unit comprising:

a storage unit for storing a virtual memory specifying mappings between memory pages of virtual address spaces and memory page frames of the physical memory, the physical memory being formed of n memory page frames using a set of virtual address spaces, said set comprising n virtual address spaces each formed of a plurality p of contiguous memory pages; and

a controller configured to:

receive a request for a virtual address to write to;

specify a mapping between the virtual address and an address of the physical memory by determining the virtual address in response to the request in dependence on whether the request is a first type of request or a second type of request, the first type of request requesting that the virtual address maps to a same page frame of physical memory as a last page frame that a previous block of data was written to, and the second type of request requesting that the virtual address maps to a new page frame of physical memory; and

write a block of data to the address of the physical memory.

8 . The memory management unit as claimed in claim 7 , wherein the controller is further configured to, after specifying the mapping:

receive a write request to write a block of data to the virtual address; and

translate the virtual address to the address of the physical memory.

9 . The memory management unit as claimed in claim 7 , wherein each of the n virtual address spaces has an index uniquely identifying that address space within the n virtual address spaces, and each memory page frame of the physical memory has an index uniquely identifying that memory page frame within the physical memory, wherein each of the virtual address space indices is mapped to a respective memory page frame index.

10 . The memory management unit as claimed in claim 7 , wherein the virtual address is defined by a virtual address space i, a memory page j within the virtual address space i, and an offset from the start of said memory page j.

11 . The memory management unit as claimed in claim 10 , wherein the controller is further configured to, if the block of data exceeds available space of the memory page frame in physical memory mapped to the memory page j within the virtual address space i:

select a further memory page frame from a list of available memory page frames;

specify a mapping between the further memory page frame and a second memory page k in the virtual address space i contiguous with the memory page j; and

write remaining data of the block of data to the further memory page frame.

12 . The memory management unit as claimed in claim 10 , wherein the memory management unit further comprises an address calculating unit configured to, responsive to the controller receiving a request for a virtual address to write to:

determine the virtual address; and

specify a mapping between the memory page j for the virtual address within the virtual address space i and a memory page frame of the physical memory.

13 . The memory management unit as claimed in claim 12 , wherein the address calculating unit is configured to determine the virtual address by:

selecting a memory page frame of the physical memory in dependence on the type of request received; and

selecting as the virtual address space i the virtual address space having an index that maps to the index of the selected memory page frame.

14 . The memory management unit as claimed in claim 12 , wherein the address calculating unit is one of:

configured to, responsive to the controller receiving a first type of request:

select the last memory page frame that the previous block of data was written to; and

specify a mapping between the selected memory page frame and a memory page in the virtual address space i; and

configured to, responsive to the controller receiving a second type of request:

select a memory page frame from a list of available memory page frames; and

specify a mapping between the selected memory page frame and a memory page in the virtual address space i.

15 . The memory management unit as claimed in claim 14 , wherein the address calculating unit is configured to one of:

select as the virtual address space i the virtual address space with the index that maps to the index of the last memory page frame that the previous block of data was written to; and

set the offset of the virtual address to be zero in response to receiving the second type of request.

16 . The memory management unit as claimed in claim 15 , wherein the address calculating unit is further configured to set the offset of the virtual address to be equal to the offset of the end of the previous block of data from the last memory page frame that said block of data was written to.

17 . The memory management unit as claimed in claim 15 , wherein the address calculating unit is further configured to select as the memory page j within the virtual address space i a terminal memory page within the virtual address space i.

18 . The memory management unit as claimed in claim 14 , wherein the address calculating unit is configured to one or more of:

set the offset of the virtual address to be zero in response to receiving the second type of request;

select as the virtual address space i the virtual address space with the index that maps to the index of the selected memory page frame; and

select as the memory page j within the virtual address space i a terminal memory page within the virtual address space i.

19 . The memory management unit as claimed in claim 7 , wherein the memory management unit forms part of a graphics processing system configured to process graphics data to render an image of a scene, the memory management unit being configured to access the physical memory as part of processing the graphics data to render a scene.

20 . An integrated circuit manufacturing system comprising:

a non-transitory computer readable storage medium having stored thereon a computer readable dataset description of a memory management unit for managing access to a physical memory, the memory management unit including:

a storage unit for storing a virtual memory specifying mappings between memory pages of virtual address spaces and memory page frames of the physical memory, the physical memory being formed of n memory page frames using a set of virtual address spaces, said set comprising n virtual address spaces each formed of a plurality p of contiguous memory pages, and

a controller configured to:

receive a request for a virtual address to write to,

specify a mapping between the virtual address and an address of the physical memory by determining the virtual address in response to the request in dependence on whether the request is a first type of request or a second type of request, the first type of request requesting that the virtual address maps to a same page frame of physical memory as a last page frame that a previous block of data was written to, and the second type of request requesting that the virtual address maps to a new page frame of physical memory, and

write a block of data to the address of the physical memory;

a layout processing system configured to process the computer readable description so as to generate a circuit layout description of an integrated circuit embodying the memory management unit; and

an integrated circuit generation system configured to manufacture the memory management unit according to the circuit layout description.

Assignments (1)
SECURITY INTEREST Recorded Jul 31, 2024
From: IMAGINATION TECHNOLOGIES LIMITED
To: FORTRESS INVESTMENT GROUP (UK) LTD
Reel/Frame 068221/0001 →
Priority Claims (1)
GB 1810779 · Jun 29, 2018 · national
Continuity (3)
Continuation 17338466 · Jun 3, 2021
Continuation 16457975 · Jun 29, 2019
Related Publication 20230315645A1 · Oct 5, 2023
References Cited (20)
US 5860144A · Frank et al. · 1999 [cited by applicant]
US 8601223B1 · Yuan · 2013 [cited by examiner]
US 10120812B2 · Sivaprakasam · 2018 [cited by examiner]
US 20010020264A1 · Belgard · 2001 [cited by applicant]
US 20050132249A1 · Burton et al. · 2005 [cited by applicant]
US 20050193169A1 · Ahluwalia · 2005 [cited by applicant]
US 20060117162A1 · Sauber · 2006 [cited by examiner]
US 20070106875A1 · Mather · 2007 [cited by examiner]
US 20070126756A1 · Glasco · 2007 [cited by examiner]
US 20150127923A1 · Miller et al. · 2015 [cited by applicant]
US 20160260193A1 · Richards et al. · 2016 [cited by applicant]
US 20170075582A1 · van Riel · 2017 [cited by examiner]
US 20170178280A1 · Fishwick · 2017 [cited by examiner]
US 20170206169A1 · Coppola et al. · 2017 [cited by applicant]
US 20180024938A1 · Paltashev · 2018 [cited by examiner]
US 20190042410A1 · Gould et al. · 2019 [cited by applicant]
US 20190171565A1 · Bowen-Huggett · 2019 [cited by applicant]
CN 102110196A · 2011 [cited by applicant]
JP 2006178764A · 2006 [cited by applicant]
Lefohn et al., “A Streaming Narrow-Band Algorithm: Interactive Computation and Visualization of Level Sets,” IEEE Transactions on Visualization and Computer Graphics, 2004 (Note: NPL in parent application). [cited by applicant]