IP Library Granted Patent US 12,436,892
Granted Patent B2
US 12,436,892 · App. 18/761,713 · Granted Oct 7, 2025

Page pool descriptor cache

Inventors: Arjun Thottappilly (Oviedo, FL); Frank W. Liljeros (Sanford, FL)
Assignee: Apple Inc.
G06F12/0882G06F12/023G06F12/0246G06F12/0806G06F12/0871G06F2212/6042
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,436,892
App. No.
18/761,713
Granted
Oct 7, 2025
Kind
B2
Abstract

Techniques are disclosed relating to managing page pools for sets of processing work. In some embodiments, page manager circuitry maintains, in memory circuitry, page pool descriptor information that indicates memory pages allocated to multiple different page pools. It may cache page pool descriptor information from the memory circuitry in a page pool descriptor cache, where the page pool descriptor cache includes multiple entries and a given entry is configured to store the following information for a cached page pool descriptor: a location of a corresponding page pool and page pool size information. The page manager circuitry may provide pages to requesting client circuitry from the page pool based on the cached page pool descriptor information.

Claims (72)

1. A method, comprising:

maintaining, in memory of a computing system, first and second page pool descriptors that indicate, respectively, a first set of one or more memory pages allocated to a first page pool and a second set of one or more memory pages allocated to a second page pool, wherein a given page pool descriptor specifies:

a location of the corresponding page pool; and

page pool size information;

storing, by the computing system in first and second entries of a page pool descriptor cache, the first and second page pool descriptors from the memory;

and

providing, by the computing system, a page to requesting client circuitry from the corresponding page pool based on the first stored page pool descriptor.

2. The method of claim 1 , further comprising:

mapping a set of processing work to a first page in the page pool.

3. The method of claim 2 , wherein the mapping includes assigning the set of processing work to a logical slot of a distributed graphics processor and mapping the logical slot to the first page.

4. The method of claim 1 , further comprising:

prefetching, by the computing system, a page from a page pool and storing the prefetched page in a prefetch queue; and

storing, by the computing system, a page pool descriptor for the prefetched page in the page pool descriptor cache.

5. The method of claim 1 , wherein the page pools provide pages for a page table hierarchy controlled by a memory management unit (MMU), wherein the MMU uses the page table hierarchy to translate graphics space addresses to virtual addresses.

6. The method of claim 1 , further comprising:

receiving, by the computing system, a page reservation request for a set of processing work; and

reserving, by the computing system, a requested number of pages in response to determining that a corresponding page pool includes a sufficient number of pages for the request;

wherein the computing system launches the set of processing work only after reservation of the requested number of pages.

7. The method of claim 1 , further comprising:

prefetching, by the computing system, a page from a page pool and storing the prefetched page in a prefetch queue; and

distributing, by the computing system in response to given set of processing work starting execution, prefetched pages for the given set of processing work to one or more distributed prefetch queues.

8. The method of claim 7 , further comprising:

distributing, by the computing system, prefetched pages to distributed prefetch queues according to a credit mechanism and distributing pages from the distributed prefetch queues to memory management units according to a credit mechanism.

9. An apparatus, comprising:

a page pool descriptor cache; and

page manager circuitry configured to:

maintain, in memory circuitry, first and second page pool descriptors to indicate, respectively, a first set of one or more memory pages allocated to a first page pool and a second set of one or more memory pages allocated to a second page pool, wherein a given page pool descriptor specifies:

a location of the corresponding page pool; and

page pool size information;

store the first and second page pool descriptors from the memory circuitry in first and second entries of the page pool descriptor cache; and

provide a page to requesting client circuitry from the corresponding page pool based on the first stored page pool descriptor.

10. The apparatus of claim 9 , further comprising:

control circuitry configured to map a set of processing work to a first page in the page pool.

11. The apparatus of claim 10 , wherein:

the apparatus includes a graphics processor that includes the page pool descriptor cache and the page manager circuitry; and

to map the set of processing work to the first page, the page manager circuitry is configured to assign the set of processing work to a slot of the graphics processor and map the slot to the first page.

12. The apparatus of claim 9 , wherein the page manager circuitry is further configured to:

prefetch a page from a page pool and store the prefetched page in a prefetch queue; and

cache a page pool descriptor for the prefetched page in the page pool descriptor cache.

13. The apparatus of claim 9 , wherein the page pools provide pages for a page table hierarchy controlled by a memory management unit (MMU), wherein the MMU uses the page table hierarchy to translate graphics space addresses to virtual addresses.

14. The apparatus of claim 9 , wherein the page manager circuitry is further configured to:

receive a page reservation request for a set of processing work; and

reserve a requested number of pages in response to determining that a corresponding page pool includes a sufficient number of pages for the request;

wherein the apparatus is configured to launch the set of processing work only after reservation of the requested number of pages by the page manager circuitry.

15. The apparatus of claim 9 , wherein the page manager circuitry includes:

primary page manager circuitry; and

multiple distributed page manager circuits configured to interface with memory management units for different processor sub-units;

wherein:

the primary page manager circuitry includes storage for prefetched pages from respective page pools;

the distributed page manager circuits include storage for prefetched pages from respective page pools; and

the primary page manager circuitry is configured to begin distributing prefetched pages to the distributed page manager circuits in response to a given set of processing work starting execution.

16. The apparatus of claim 15 , wherein the primary page manager circuitry is configured to distribute prefetched pages to distributed page manager circuits according to a credit mechanism and the distributed page manager circuits are configured to distribute pages to memory management units according to a credit mechanism.

17. The apparatus of claim 9 , wherein the apparatus is a computing device that includes:

a central processing unit;

a graphic processing unit;

a display; and

network interface circuitry.

18. A non-transitory computer readable storage medium having stored thereon design information that specifies a design of at least a portion of a hardware integrated circuit in a format recognized by a semiconductor fabrication system that is configured to use the design information to produce the circuit according to the design, wherein the design information specifies that the circuit includes:

a page pool descriptor cache; and

page manager circuitry configured to:

maintain, in memory circuitry, first and second page pool descriptors to indicate, respectively, a first set of one or more memory pages allocated to a first page pool and a second set of one or more memory pages allocated to a second page pool, wherein a given page pool descriptor specifies:

a location of the corresponding page pool; and

page pool size information;

store the first and second page pool descriptors from the memory circuitry in first and second entries of the page pool descriptor cache; and

provide a page to requesting client circuitry from the corresponding page pool based on the first stored page pool descriptor.

19. The non-transitory computer readable storage medium of claim 18 , wherein the page manager circuitry is further configured to:

prefetch a page from a page pool and store the prefetched page in a prefetch queue; and

cache a page pool descriptor for the prefetched page in the page pool descriptor cache.

20. The non-transitory computer readable storage medium of claim 18 wherein the page manager circuitry is further configured to:

receive a page reservation request for a set of processing work; and

reserve a requested number of pages in response to determining that a corresponding page pool includes a sufficient number of pages for the request;

wherein the circuit is configured to launch the set of processing work only after reservation of the requested number of pages by the page manager circuitry.

Continuity (3)
Continuation 17660094 · Apr 21, 2022
Provisional Application 63267829 · Feb 10, 2022
Related Publication 20240354249A1 · Oct 24, 2024
References Cited (28)
US 7623134B1 · Damlak · 2009 [cited by applicant]
US 8140721B2 · Sachedina · 2012 [cited by examiner]
US 9218289B2 · Rychlik et al. · 2015 [cited by applicant]
US 9846655B1 · Zhao et al. · 2017 [cited by applicant]
US 10152449B1 · Ward, Jr. · 2018 [cited by examiner]
US 20070260769A1 · Arndt et al. · 2007 [cited by applicant]
US 20110161620A1 · Kaminski et al. · 2011 [cited by applicant]
US 20120072652A1 · Celis · 2012 [cited by examiner]
US 20130054920A1 · Sato · 2013 [cited by applicant]
US 20130198469A1 · Mizuno · 2013 [cited by applicant]
US 20180285262A1 · Trikalinou et al. · 2018 [cited by applicant]
US 20180308216A1 · Mirza et al. · 2018 [cited by applicant]
US 20190236749A1 · Gould · 2019 [cited by applicant]
US 20190243582A1 · Satoyama · 2019 [cited by applicant]
US 20190354487A1 · Bahirji · 2019 [cited by applicant]
US 20210271606A1 · Hensley · 2021 [cited by examiner]
US 20220050793A1 · Saroiu et al. · 2022 [cited by applicant]
US 20220229777A1 · Shveidel · 2022 [cited by examiner]
US 20220237119A1 · Han et al. · 2022 [cited by applicant]
WO WO2019027560A1 · 2019 [cited by examiner]
WO WO2021173623A1 · 2021 [cited by examiner]
W. Powley, P. Martin, N. Ogeer and Wenhu Tian, “Autonomic buffer pool configuration in PostgreSQL,” 2005 IEEE International Conference on Systems, Man and Cybernetics, Waikoloa, HI, USA, 2005, pp. 53-58. [cited by examiner]
H. Kim and R. Rajkumar, “Shared-Page Management for Improving the Temporal Isolation of Memory Reservations in Resource Kernels,” 2012 IEEE International Conference on Embedded and Real-Time Computing Systems and Applic… [cited by examiner]
Office Action in U.S. Appl. No. 17/660,148 mailed Apr. 3, 2023, 12 pages. [cited by applicant]
Office Action in U.S. Appl. No. 17/660,148 mailed Sep. 13, 2023, 13 pages. [cited by applicant]
D. Dhurjati and V. Adve, “Efficiently Detecting All Dangling Pointer Uses in Production Servers,” International Conference on Dependable Systems and Networks (DSN'06), Philadelphia, PA, USA, 2006, pp. 269-280. [cited by applicant]
Office Action in U.S. Appl. No. 17/660,094 mailed Jul. 20, 2023, 9 pages. [cited by applicant]
Notice of Allowance in U.S. Appl. No. 17/660,094 mailed Apr. 15, 2024, 5 pages. [cited by applicant]