IP Library Granted Patent US 12,412,234
Granted Patent B2
US 12,412,234 · App. 18/126,286 · Granted Sep 9, 2025

Memory management for multicore 3-D graphics rendering

Inventor: Michael John Livesley (Hertfordshire, GB)
Assignee: Imagination Technologies Limited
G06T1/60G06T15/005
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,412,234
App. No.
18/126,286
Granted
Sep 9, 2025
Kind
B2
Abstract

A multicore graphics rendering system includes a plurality of cores configured to implement tile-based rendering of a stream of primitives. The graphics rendering system uses at least one virtualised memory space. A hierarchical index is provided, to index the physical memory portions associated with virtual memory portions in the at least one virtualised memory space. The portions of memory allocated for the hierarchical index are recorded in an MMU (memory management unit) list (MLIST). The MLIST comprises a plurality of entries, each entry being associated with a respective portion of the hierarchical index, wherein each entry includes an indication of the portion of virtual memory that is indexed by that portion of the hierarchical index. The MLIST is used to identify, and free, portions of memory associated with indexing virtual memory that has been fully consumed in a partial render.

Claims (47)

1. A multicore graphics rendering system comprising a plurality of cores, configured to implement tile-based rendering of a stream of primitives, wherein:

first cores of the plurality of cores are configured to perform geometry processing work, and second cores of the plurality of cores are configured to perform fragment processing work; and

each first core is configured to process groups of primitives, to produce transformed geometry data describing, for each of a plurality of tiles, the primitives processed by that first core that are present in that tile, each group being associated with a group index, the group indices defining an ordering of the groups in the stream of primitives;

the first cores being configured to store in a memory the transformed geometry data that they produce;

each second core being configured to perform fragment processing for one or more of the tiles, wherein each second core is configured to, for each tile to be processed, read from the memory the transformed geometry data produced by the first cores for that tile;

wherein one of the plurality of cores comprises an allocation manager, configured to allocate portions of the memory to the first cores to store the transformed geometry data;

wherein the second cores are configured to execute a partial render, comprising performing fragment processing for the primitives in a renderable range of groups, the renderable range starting with a starting group and ending with an ending group, wherein, before executing the partial render, the geometry processing work has been completed for every group ahead of the ending group in the ordering defined by the group indices;

wherein the multicore graphics rendering system uses at least one virtualised memory space, wherein each of the plurality of cores comprises a memory management unit (MMU), configured to translate between virtual memory portions in the at least one virtualised memory space and physical memory portions of the memory;

wherein the allocation manager is configured to allocate for the MMUs a hierarchical index to index the physical memory portions associated with the virtual memory portions in the at least one virtualised memory space;

wherein the allocation manager is configured to record the portions of memory allocated to the MMUs for the hierarchical index in an MMU list, (MLIST);

wherein the MLIST comprises a plurality of entries, each entry being associated with a respective portion of the hierarchical index, wherein each entry includes an indication of the portion of virtual memory that is indexed by that portion of the hierarchical index;

wherein the allocation manager is configured to, after a partial render:

identify, from the MLIST, the portions of memory associated with indexing virtual memory that has been fully consumed by the plurality of second cores performing fragment processing; and

free the identified portions of memory.

2. The graphics rendering system of claim 1 , wherein the allocation manager is configured to, after freeing the identified portions of memory, compact the MLIST, such that MLIST entries corresponding to the freed portions of memory are invalidated, and the remaining MLIST entries are consolidated into a consecutive set of entries.

3. The graphics rendering system of claim 1 , wherein the hierarchical index includes a top level and one or more additional levels, wherein:

the memory for storing the top level of the hierarchical index is allocated statically; and

the memory for storing the one or more additional levels of the hierarchical index is allocated dynamically.

4. The graphics rendering system of claim 1 , wherein the allocation manager is configured to segment the virtualised memory space such that the first cores are allocated respective non-overlapping virtual address ranges in the space, the virtual address ranges being associated with different entries in a top level of the hierarchical index,

wherein the allocation manager is configured to, before geometry processing for a frame begins, pre-allocate the top level of the hierarchical index, and prime each MMU by providing the MMU with said top level of the hierarchical index.

5. A method for tile-based rendering of a stream of primitives in a multicore graphics rendering system, comprising a plurality of cores, the method comprising:

using first cores of the plurality of cores, performing geometry processing work; and

using second cores of the plurality of cores, performing fragment processing work;

wherein the geometry processing work comprises processing, by each first core, groups of primitives, to produce transformed geometry data describing, for each of a plurality of tiles, the primitives processed by that first core that are present in that tile, each group being associated with a group index, the group indices defining an ordering of the groups in the stream of primitives,

the method further comprising storing, by the first cores, in a memory, the transformed geometry data that they produce;

wherein the fragment processing work comprises, for each second core, performing fragment processing for one or more of the tiles, comprising, for each tile to be processed, reading from the memory the transformed geometry data produced by the first cores for that tile;

the method further comprising:

allocating portions of the memory to the first cores to store the transformed geometry data, and

executing, by the second cores, a partial render, comprising performing fragment processing for the primitives in a renderable range of groups, the renderable range starting with a starting group and ending with an ending group, wherein, before executing the partial render, the geometry processing work has been completed for every group ahead of the ending group in the ordering defined by the group indices;

wherein the multicore graphics rendering system uses at least one virtualised memory space, and the method comprises translating between virtual memory portions in the at least one virtualised memory space and physical memory portions of the memory,

the method further comprising:

allocating a hierarchical index to index the physical memory portions associated with the virtual memory portions in the at least one virtualised memory space, and

recording the portions of memory allocated for the hierarchical index in a memory management unit (MMU) list, (MLIST);

wherein the MLIST comprises a plurality of entries, each entry being associated with a respective portion of the hierarchical index, wherein each entry includes an indication of the portion of virtual memory that is indexed by that portion of the hierarchical index,

wherein the method comprises, after a partial render:

identifying, from the MLIST, the portions of memory associated with indexing virtual memory that has been fully consumed by the plurality of second cores performing fragment processing; and

freeing the identified portions of memory.

6. The method of claim 5 , further comprising, after freeing the identified portions of memory, compacting the MLIST, such that MLIST entries corresponding to the freed portions of memory are invalidated, and the remaining MLIST entries are consolidated into a consecutive set of entries.

7. The method of claim 5 , wherein the hierarchical index includes a top level and one or more additional levels, wherein:

the memory for storing the top level of the hierarchical index is allocated statically; and

the memory for storing the one or more additional levels of the hierarchical index is allocated dynamically.

8. The method of claim 5 , further comprising segmenting the virtualised memory space such that the first cores are allocated respective non-overlapping virtual address ranges in the space, the virtual address ranges being associated with different entries in a top level of the hierarchical index, and

before geometry processing for a frame begins, pre-allocating the top level of the hierarchical index, and priming each of the plurality of cores by providing the core with said top level of the hierarchical index.

9. A graphics processing system comprising the multicore graphics rendering system as set forth in claim 1 and the memory.

10. A method of manufacturing the graphics processing system as set forth in claim 9 , comprising inputting an integrated circuit definition dataset to an integrated circuit manufacturing system, which when processed in said integrated circuit manufacturing system, configures the integrated circuit manufacturing system to manufacture the graphics processing system.

11. A non-transitory computer readable storage medium having stored thereon an integrated circuit definition dataset that, when processed in an integrated circuit manufacturing system, configures the integrated circuit manufacturing system to manufacture the graphics processing system as set forth in claim 9 .

12. An integrated circuit manufacturing system configured to manufacture the graphics processing system as set forth in claim 9 .

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 23, 2025
From: LIVESLEY, MICHAEL JOHN
To: IMAGINATION TECHNOLOGIES LIMITED
Reel/Frame 071486/0040 →
SECURITY INTEREST Recorded Jul 31, 2024
From: IMAGINATION TECHNOLOGIES LIMITED
To: FORTRESS INVESTMENT GROUP (UK) LTD
Reel/Frame 068221/0001 →
Priority Claims (1)
GB 2204506 · Mar 30, 2022 · national
Continuity (1)
Related Publication 20230334615A1 · Oct 19, 2023
References Cited (49)
US 5794016A · Kelleher · 1998 [cited by applicant]
US 8074224B1 · Nordquist et al. · 2011 [cited by applicant]
US 8330766B1 · McAllister · 2012 [cited by examiner]
US 10275851B1 · Zhao et al. · 2019 [cited by applicant]
US 20070091099A1 · Zhang et al. · 2007 [cited by applicant]
US 20110109638A1 · Duluk, Jr. et al. · 2011 [cited by applicant]
US 20150254102A1 · Ueda et al. · 2015 [cited by applicant]
US 20160260249A1 · Persson · 2016 [cited by examiner]
US 20170178401A1 · Agrawal · 2017 [cited by examiner]
US 20170236244A1 · Price et al. · 2017 [cited by applicant]
US 20180130253A1 · Hazel · 2018 [cited by examiner]
US 20180211435A1 · Nijasure et al. · 2018 [cited by applicant]
US 20180276876A1 · Yang et al. · 2018 [cited by applicant]
US 20180307490A1 · Hakura · 2018 [cited by examiner]
US 20190355084A1 · Gierach et al. · 2019 [cited by applicant]
US 20200097293A1 · Havlir et al. · 2020 [cited by applicant]
US 20210097013A1 · Saleh et al. · 2021 [cited by applicant]
US 20210158598A1 · Bratt et al. · 2021 [cited by applicant]
US 20210174575A1 · Mandal et al. · 2021 [cited by applicant]
US 20210241416A1 · Cerny · 2021 [cited by applicant]
US 20220083384A1 · Cerny · 2022 [cited by applicant]
US 20220319089A1 · Nemlekar et al. · 2022 [cited by applicant]
US 20240005444A1 · Stepuch · 2024 [cited by examiner]
US 20240070962A1 · Yang · 2024 [cited by examiner]
US 20240127524A1 · Yang · 2024 [cited by examiner]
CN 105261066A · 2016 [cited by applicant]
CN 109978751A · 2019 [cited by applicant]
CN 112862661A · 2021 [cited by applicant]
EP 1287494A1 · 2003 [cited by applicant]
EP 2548171A1 · 2013 [cited by applicant]
EP 3547248A1 · 2019 [cited by applicant]
EP 3796263A1 · 2021 [cited by applicant]
EP 3862975A1 · 2021 [cited by applicant]
GB 2442266A · 2008 [cited by applicant]
GB 2478660A · 2011 [cited by applicant]
GB 2594764A · 2021 [cited by applicant]
WO 2009068895A1 · 2009 [cited by applicant]
Ullman S. Object recognition and segmentation by a fragment-based hierarchy. Trends in cognitive sciences. Feb. 1, 2007;11(2):58-64. [cited by examiner]
Fedorov DG, Olson RM, Kitaura K, Gordon MS, Koseki S. A new hierarchical parallelization scheme: generalized distributed data interface (GDDI), and an application to the fragment molecular orbital method (FMO). Journal … [cited by examiner]
Yu et al; “A Credit-Based Load-Balance-Aware CTA Scheduling Optimization Scheme in GPGPU”; International Journal of Parallel Programming; vol. 44; No. 1; Aug. 22, 2014; 21 pages. [cited by applicant]
Imagination Technologies: “Tiling positive or how Vulkan maps to PowerVR GPUs”; Retrieved from the Internet: URL: https%3A%2F%2Fblog.imaginationtech.com%2Ftiling-positive-or-how-vulkan-maps-to-powervr-gpus%2F; Mar. 9, 2… [cited by applicant]
Kayhan; “Chasing Triangles in a Tile-based Rasterizer”; Retrieved from the Internet: URL:https://tayfunkayhan.wordpress.com/2019/07/26/chasing-triangles-in-a-tile-based•-rasterizer/; Jul. 29, 2019; pp. 1-18. [cited by applicant]
Anonymous; “Graphics—SGX543MP4”; Retrieved from the Internet: URL:https://www.psdevwiki.com/vita/Graphics; Sep. 13, 2020; pp. 1-9. [cited by applicant]
Beets; “A look at the PowerVR graphics architecture: Tilebased rendering”; Retrieved from the Internet: URL:https://blog.imaginationtech.com/a-look-at-the-powervr-graphics-architecture-tile-based-rendering/; Apr. 2, 201… [cited by applicant]
Beets; “A look at the PowerVR graphics architecture”; Retrieved from the Internet: URL:https://blog.imaginationtech.com/the-dr-in-tbdr-deferred-rendering-in-rogue/; Jan. 28, 2016; pp. 1-13. [cited by applicant]
Beets; “Introducing Furian: the architectural changes”; Retrieved from the Internet: URL:https://blog.imaginationtech.com/introducing-furian-the-architectural-changes/; Mar. 13, 2017; pp. 1-13. [cited by applicant]
Crisu et al; “Low-Power Techniques and 2D/3D Graphics Architectures”; Report Delft University of Technology; vol. 2001-01; Jun. 26, 2001; 139 pages. [cited by applicant]
Ma; “Concepts and metrics for measurement and prediction of the execution time of GPU rendering commands”; Retrieved from the Internet: URL:https://elib.uni-stuttgart.de/bitstream/11682/3467/1/MSTR_3635.pdf; Aug. 19, 20… [cited by applicant]
Nickolls et al; “Appendix C: Graphics and Computing GPU's”; Computer Organization and Design: The Hardware/Software Interface; URL:http://booksite.elsevier.com/9780124077263/downloads/advance_contents_and_appendices/app… [cited by applicant]