IP Library Granted Patent US 12,650,841
Granted Patent B2
US 12,650,841 · App. 17/712,075 · Granted Jun 9, 2026

Circuitry and methods for capability informed prefetches

Inventor: Scott D. Constable (Portland, OR)
Assignee: Intel Corporation
G06F9/30047G06F9/30145G06F9/383G06F12/0862G06F12/1458G06F2212/6026G06F2212/6028
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,650,841
App. No.
17/712,075
Granted
Jun 9, 2026
Kind
B2
Abstract

Systems, methods, and apparatuses for implementing capability informed prefetches are described. In certain examples, a hardware processor comprises an execution circuit to execute an instruction that generates a memory access request for an element in memory via a first capability; a capability management circuit to check the first capability for the memory access request, the first capability comprising an address field of the element in the memory, a validity field, and a bounds field that is to indicate a lower bound and an upper bound of a first object to which the first capability authorizes access; a cache; and a prefetch circuit to: prefetch an additional element from the memory to the cache, determine if the additional element is a second capability comprising an address field of a second element in the memory, a validity field, and a bounds field that is to indicate a lower bound and an upper bound of a second object to which the second capability authorizes access, and prefetch the second element from the memory to the cache based on the additional element being the second capability.

Claims (86)

1 . An apparatus comprising:

an execution circuit to execute an instruction that generates a memory access request for an element in memory via a first capability comprising an address field of the element in the memory, a validity field, and a bounds field that is to indicate a lower bound and an upper bound of a first object to which the first capability authorizes access;

a cache; and

a prefetch circuit to:

prefetch an additional element from the memory to the cache,

determine if the additional element is a second capability comprising an address field of a second element in the memory, a validity field, and a bounds field that is to indicate a lower bound and an upper bound of a second object to which the second capability authorizes access, and

prefetch the second element from the memory to the cache based on the additional element being the second capability,

wherein one of:

the prefetch circuit is to determine that the additional element is a candidate pointer in a chain of linked pointers, and the prefetch of the additional element from the memory to the cache is based on the additional element being the candidate pointer;

the prefetch circuit is to cause a prefetch of one or more further elements from the memory to the cache based on the second capability indicating the one or more further elements are within the second object, and the prefetch circuit is to:

determine if the one or more further elements is a respective capability comprising an address field of a respective element in the memory, a validity field, and a bounds field that is to indicate a lower bound and an upper bound of a respective object to which the respective capability authorizes access, and

prefetch the respective element from the memory to the cache for each of the one or more further elements that is the respective capability;

the prefetch circuit is to cause a prefetch of one or more further elements from the memory to the cache based on the second capability indicating the one or more further elements are within the second object, and the one or more further elements comprises a non-capability element and a capability element; or

the prefetch circuit is to cause a prefetch of one or more further elements from the memory to the cache based on the second capability indicating the one or more further elements are within the second object, and the prefetch circuit is to:

determine if the respective element is a further capability comprising an address field of another respective element in the memory, a validity field, and a bounds field that is to indicate a lower bound and an upper bound of a respective object to which the further capability authorizes access, and

prefetch the another respective element from the memory to the cache based on the respective element being the further capability.

2 . The apparatus of claim 1 , wherein the one is the prefetch circuit is to determine that the additional element is the candidate pointer in the chain of linked pointers, and the prefetch of the additional element from the memory to the cache is based on the additional element being the candidate pointer.

3 . The apparatus of claim 2 , wherein the prefetch circuit is to:

determine if the second element is a third capability comprising an address field of a third element in the memory, a validity field, and a bounds field that is to indicate a lower bound and an upper bound of a third object to which the third capability authorizes access; and

prefetch the third element from the memory to the cache based on the second element being the third capability.

4 . The apparatus of claim 1 , wherein the one is the prefetch circuit is to cause the prefetch of one or more further elements from the memory to the cache based on the second capability indicating the one or more further elements are within the second object, and the prefetch circuit is to:

determine if the one or more further elements is the respective capability comprising the address field of the respective element in the memory, the validity field, and the bounds field that is to indicate the lower bound and the upper bound of the respective object to which the respective capability authorizes access; and

prefetch the respective element from the memory to the cache for each of the one or more further elements that is the respective capability.

5 . The apparatus of claim 1 , wherein the one is the prefetch circuit is to cause the prefetch of one or more further elements from the memory to the cache based on the second capability indicating the one or more further elements are within the second object, and the one or more further elements comprises the non-capability element and the capability element.

6 . The apparatus of claim 5 , wherein the non-capability element is data to be operated on by the execution circuit.

7 . The apparatus of claim 1 , wherein the one is the prefetch circuit is to cause the prefetch of one or more further elements from the memory to the cache based on the second capability indicating the one or more further elements are within the second object, and the prefetch circuit is to:

determine if the respective element is the further capability comprising the address field of the another respective element in the memory, the validity field, and the bounds field that is to indicate the lower bound and the upper bound of the respective object to which the further capability authorizes access; and

prefetch the another respective element from the memory to the cache based on the respective element being the further capability.

8 . A method comprising:

executing, by an execution circuit of a processor, an instruction that generates a memory access request for an element in memory via a first capability comprising an address field of the element in the memory, a validity field, and a bounds field that is to indicate a lower bound and an upper bound of a first object to which the first capability authorizes access;

prefetching, by a prefetch circuit of the processor, an additional element from the memory to a cache of the processor;

determining, by the processor, if the additional element is a second capability comprising an address field of a second element in the memory, a validity field, and a bounds field that is to indicate a lower bound and an upper bound of a second object to which the second capability authorizes access;

prefetching, by the prefetch circuit, the second element from the memory to the cache based on the additional element being the second capability; and

further comprising one of:

determining, by the prefetch circuit, that the additional element is a candidate pointer in a chain of linked pointers, and the prefetching of the additional element from the memory to the cache is based on the additional element being the candidate pointer;

prefetching, by the prefetch circuit, one or more further elements from the memory to the cache based on the second capability indicating the one or more further elements are within the second object,

determining, by the processor, if the one or more further elements is a respective capability comprising an address field of a respective element in the memory, a validity field, and a bounds field that is to indicate a lower bound and an upper bound of a respective object to which the respective capability authorizes access, and

prefetching, by the prefetch circuit, the respective element from the memory to the cache for each of the one or more further elements that is the respective capability;

prefetching, by the prefetch circuit, one or more further elements from the memory to the cache based on the second capability indicating the one or more further elements are within the second object, wherein the one or more further elements comprises a non-capability element and a capability element; or

prefetching, by the prefetch circuit, one or more further elements from the memory to the cache based on the second capability indicating the one or more further elements are within the second object,

determining, by the processor, if the respective element is a further capability comprising an address field of another respective element in the memory, a validity field, and a bounds field that is to indicate a lower bound and an upper bound of a respective object to which the further capability authorizes access, and

prefetching, by the prefetch circuit, the another respective element from the memory to the cache based on the respective element being the further capability.

9 . The method of claim 8 , wherein the one is the determining, by the prefetch circuit, that the additional element is the candidate pointer in the chain of linked pointers, and the prefetching of the additional element from the memory to the cache is based on the additional element being the candidate pointer.

10 . The method of claim 9 , further comprising:

determining, by the processor, if the second element is a third capability comprising an address field of a third element in the memory, a validity field, and a bounds field that is to indicate a lower bound and an upper bound of a third object to which the third capability authorizes access; and

prefetching, by the prefetch circuit, the third element from the memory to the cache based on the second element being the third capability.

11 . The method of claim 8 , wherein the one is:

the prefetching, by the prefetch circuit, one or more further elements from the memory to the cache based on the second capability indicating the one or more further elements are within the second object;

the determining, by the processor, if the one or more further elements is the respective capability comprising the address field of the respective element in the memory, the validity field, and the bounds field that is to indicate the lower bound and the upper bound of the respective object to which the respective capability authorizes access; and

the prefetching, by the prefetch circuit, the respective element from the memory to the cache for each of the one or more further elements that is the respective capability.

12 . The method of claim 8 , wherein the one is the prefetching, by the prefetch circuit, one or more further elements from the memory to the cache based on the second capability indicating the one or more further elements are within the second object, and the one or more further elements comprises the non-capability element and the capability element.

13 . The method of claim 12 , wherein the non-capability element is data to be operated on by the execution circuit.

14 . The method of claim 8 , wherein the one is:

the prefetching, by the prefetch circuit, one or more further elements from the memory to the cache based on the second capability indicating the one or more further elements are within the second object;

the determining, by the processor, if the respective element is the further capability comprising the address field of the another respective element in the memory, the validity field, and the bounds field that is to indicate the lower bound and the upper bound of the respective object to which the further capability authorizes access; and

the prefetching, by the prefetch circuit, the another respective element from the memory to the cache based on the respective element being the further capability.

15 . A system comprising:

a memory;

a processor comprising:

an execution circuit to execute an instruction that generates a memory access request for an element in memory via a first capability comprising an address field of the element in the memory, a validity field, and a bounds field that is to indicate a lower bound and an upper bound of a first object to which the first capability authorizes access, and

a cache separate from the memory; and

a prefetch circuit to:

prefetch an additional element from the memory to the cache,

determine if the additional element is a second capability comprising an address field of a second element in the memory, a validity field, and a bounds field that is to indicate a lower bound and an upper bound of a second object to which the second capability authorizes access, and

prefetch the second element from the memory to the cache based on the additional element being the second capability

wherein one of:

the prefetch circuit is to determine that the additional element is a candidate pointer in a chain of linked pointers, and the prefetch of the additional element from the memory to the cache is based on the additional element being the candidate pointer;

the prefetch circuit is to cause a prefetch of one or more further elements from the memory to the cache based on the second capability indicating the one or more further elements are within the second object, and the prefetch circuit is to:

determine if the one or more further elements is a respective capability comprising an address field of a respective element in the memory, a validity field, and a bounds field that is to indicate a lower bound and an upper bound of a respective object to which the respective capability authorizes access, and

prefetch the respective element from the memory to the cache for each of the one or more further elements that is the respective capability;

the prefetch circuit is to cause a prefetch of one or more further elements from the memory to the cache based on the second capability indicating the one or more further elements are within the second object, and the one or more further elements comprises a non-capability element and a capability element; or

the prefetch circuit is to cause a prefetch of one or more further elements from the memory to the cache based on the second capability indicating the one or more further elements are within the second object, and the prefetch circuit is to:

determine if the respective element is a further capability comprising an address field of another respective element in the memory, a validity field, and a bounds field that is to indicate a lower bound and an upper bound of a respective object to which the further capability authorizes access, and

prefetch the another respective element from the memory to the cache based on the respective element being the further capability.

16 . The system of claim 15 , wherein the one is the prefetch circuit is to determine that the additional element is the candidate pointer in the chain of linked pointers, and the prefetch of the additional element from the memory to the cache is based on the additional element being the candidate pointer.

17 . The system of claim 16 , wherein the prefetch circuit is to:

determine if the second element is a third capability comprising an address field of a third element in the memory, a validity field, and a bounds field that is to indicate a lower bound and an upper bound of a third object to which the third capability authorizes access; and

prefetch the third element from the memory to the cache based on the second element being the third capability.

18 . The system of claim 15 , wherein the one is the prefetch circuit is to cause the prefetch of one or more further elements from the memory to the cache based on the second capability indicating the one or more further elements are within the second object, and the prefetch circuit is to:

determine if the one or more further elements is the respective capability comprising the address field of the respective element in the memory, the validity field, and the bounds field that is to indicate the lower bound and the upper bound of the respective object to which the respective capability authorizes access; and

prefetch the respective element from the memory to the cache for each of the one or more further elements that is the respective capability.

19 . The system of claim 15 , wherein the one is the prefetch circuit is to cause the prefetch of one or more further elements from the memory to the cache based on the second capability indicating the one or more further elements are within the second object, and the one or more further elements comprises the non-capability element and the capability element.

20 . The system of claim 19 , wherein the non-capability element is data to be operated on by the execution circuit.

21 . The system of claim 15 , wherein the one is the prefetch circuit is to cause the prefetch of one or more further elements from the memory to the cache based on the second capability indicating the one or more further elements are within the second object, and the prefetch circuit is to:

determine if the respective element is the further capability comprising the address field of the another respective element in the memory, the validity field, and the bounds field that is to indicate the lower bound and the upper bound of the respective object to which the further capability authorizes access; and

prefetch the another respective element from the memory to the cache based on the respective element being the further capability.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 11, 2022
From: CONSTABLE, SCOTT D.
To: INTEL CORPORATION
Reel/Frame 059560/0775 →
Continuity (1)
Related Publication 20230315452A1 · Oct 5, 2023
References Cited (146)
US 3916385A · Parmar et al. · 1975 [cited by applicant]
US 4809160A · Mahon et al. · 1989 [cited by applicant]
US 4821169A · Sites et al. · 1989 [cited by applicant]
US 5809564A · Craze et al. · 1998 [cited by applicant]
US 5845331A · Carter · 1998 [cited by examiner]
US 5860150A · Chiarot · 1999 [cited by examiner]
US 6009503A · Liedtke · 1999 [cited by applicant]
US 6048940A · Blaedel et al. · 2000 [cited by applicant]
US 6247107B1 · Christie · 2001 [cited by applicant]
US 6671699B1 · Black et al. · 2003 [cited by applicant]
US 6694450B1 · Kidder et al. · 2004 [cited by applicant]
US 6823433B1 · Barnes et al. · 2004 [cited by applicant]
US 7401234B2 · Case et al. · 2008 [cited by applicant]
US 7948496B2 · Hansen · 2011 [cited by examiner]
US 8356143B1 · Bulusu et al. · 2013 [cited by applicant]
US 8554984B2 · Yano et al. · 2013 [cited by applicant]
US 8595442B1 · James-Roxby et al. · 2013 [cited by applicant]
US 8850573B1 · Chen · 2014 [cited by examiner]
US 9026866B2 · Balasubramanian · 2015 [cited by applicant]
US 9390031B2 · Durham et al. · 2016 [cited by applicant]
US 9436847B2 · Durham et al. · 2016 [cited by applicant]
US 9652375B2 · Stark et al. · 2017 [cited by applicant]
US 9734084B2 · Bybell · 2017 [cited by examiner]
US 10162694B2 · Stark et al. · 2018 [cited by applicant]
US 11347508B2 · Barnes · 2022 [cited by examiner]
US 20040031030A1 · Kidder et al. · 2004 [cited by applicant]
US 20040158775A1 · Shibuya et al. · 2004 [cited by applicant]
US 20050102294A1 · Coldewey · 2005 [cited by applicant]
US 20050193217A1 · Case et al. · 2005 [cited by applicant]
US 20060187941A1 · Andersen · 2006 [cited by applicant]
US 20060256877A1 · Szczepanek et al. · 2006 [cited by applicant]
US 20060256878A1 · Szczepanek et al. · 2006 [cited by applicant]
US 20060265552A1 · Davis et al. · 2006 [cited by applicant]
US 20070055837A1 · Rajagopal et al. · 2007 [cited by applicant]
US 20080209282A1 · Lee et al. · 2008 [cited by applicant]
US 20090271536A1 · Tiennot · 2009 [cited by applicant]
US 20090292977A1 · Bradley et al. · 2009 [cited by applicant]
US 20100162038A1 · Hulbert et al. · 2010 [cited by applicant]
US 20130254485A1 · Kannan et al. · 2013 [cited by applicant]
US 20130318322A1 · Shetty et al. · 2013 [cited by applicant]
US 20130326288A1 · Datta et al. · 2013 [cited by applicant]
US 20130339649A1 · Hsu · 2013 [cited by examiner]
US 20140115283A1 · Radovic et al. · 2014 [cited by applicant]
US 20140281354A1 · Tkacik et al. · 2014 [cited by applicant]
US 20140372698A1 · Ee et al. · 2014 [cited by applicant]
US 20150134933A1 · Holm · 2015 [cited by examiner]
US 20150199276A1 · Radhakrishnan · 2015 [cited by examiner]
US 20160048378A1 · Varma · 2016 [cited by applicant]
US 20160124802A1 · Gabor et al. · 2016 [cited by applicant]
US 20160259682A1 · Stark et al. · 2016 [cited by applicant]
US 20160283300A1 · Stark et al. · 2016 [cited by applicant]
US 20160371139A1 · Stark et al. · 2016 [cited by applicant]
US 20170177429A1 · Stark et al. · 2017 [cited by applicant]
US 20180060250A1 · Hildesheim et al. · 2018 [cited by applicant]
US 20180074715A1 · Farmahini-Farahani et al. · 2018 [cited by applicant]
US 20200004953A1 · Lemay et al. · 2020 [cited by applicant]
US 20200042464A1 · Arulraj et al. · 2020 [cited by applicant]
US 20200133863A1 · Pusdesris et al. · 2020 [cited by applicant]
US 20210019148A1 · Caulfield et al. · 2021 [cited by applicant]
US 20210081530A1 · O'Farrell · 2021 [cited by applicant]
US 20210200546A1 · Lemay et al. · 2021 [cited by applicant]
US 20210294607A1 · Abhishek Raja · 2021 [cited by examiner]
US 20230085143A1 · Smith · 2023 [cited by examiner]
US 20230195461A1 · Lemay et al. · 2023 [cited by applicant]
US 20230315452A1 · Constable · 2023 [cited by examiner]
US 20230315465A1 · Constable · 2023 [cited by examiner]
US 20230315640A1 · Constable · 2023 [cited by examiner]
US 20240411935A1 · Botman et al. · 2024 [cited by applicant]
US 20250156182A1 · Botman et al. · 2025 [cited by applicant]
CN 101226468A · 2008 [cited by applicant]
EP 0428079A2 · 1991 [cited by applicant]
EP 4198716A1 · 2023 [cited by applicant]
JP 03244054A · 1991 [cited by applicant]
WO 2007079011A3 · 2007 [cited by applicant]
WO 2016195884A1 · 2016 [cited by applicant]
Advisory Action from U.S. Appl. No. 11/323,446, dated Apr. 17, 2012, 3 pages. [cited by applicant]
Angelo-Oracle. “SPARC M7 Chip-32 cores”, Oracle.com, Aug. 15, 2014. Web. Accessed Dec. 21, 2015. 8 pages. URL: <http://blogs.oracle.com/rajadurai/entry/sparc_m7_chip_32_cores>. [cited by applicant]
Arm, “Arm® Architecture Reference Manual Supplement Morello for A-profile Architecture”, Document No. DDI0606, Document Version: A.k, 2019-2022, 1294 pages. [cited by applicant]
BIIN: “CPA Architecture Reference Manual”, 1988, 401 pages. [cited by applicant]
Burow et al., “CUP: Comprehensive User-Space Protection for C/C++”, Session 9: Software Security, ASIACCS'18, Jun. 4-8, 2018, pp. 381-392. [cited by applicant]
Carr et al., “DataShield: Configurable Data Confidentiality and Integrity”, ASIA CCS '17, Apr. 2-6, 2017, pp. 193-204. [cited by applicant]
Chen et al., “Shreds: Fine-grained Execution Units with Private Memory”, IEEE Symposium on Security and Privacy, 2016, pp. 56-71. [cited by applicant]
Cheri, “Capability Hardware Enhanced RISC Instructions (CHERI)”, available online at <https://www.cl.cam.ac.uk/research/security/ctsrd/cheri/>-, 2010-2019, 2 pages. [cited by applicant]
Dartmouth, “ELFbac: Runtime Intent-Level ABI-Granular Memory Protection for Linux”, available online at <https://www.cs.dartmouth.edu/.about.sergey/io/elfbac,/>, retrieved on May 1, 2020, 1 page. [cited by applicant]
Duarte, “Memory Translation and Segmentation” Aug. 2008, p. 1-7. [cited by applicant]
Duck et al., “EffectiveSan: Type and Memory Error Detection using Dynamically Typed C/C++”, PLDI'18, Jun. 18-22, 2018, pp. 181-195. [cited by applicant]
Final Office Action from U.S. Appl. No. 11/323,446, dated Dec. 30, 2011, 18 pages. [cited by applicant]
Final Office Action from U.S. Appl. No. 11/323,446, dated Jan. 17, 2013, 17 pages. [cited by applicant]
Final Office Action from U.S. Appl. No. 11/323,446, dated Jul. 16, 2015, 17 pages. [cited by applicant]
Final Office Action from U.S. Appl. No. 11/323,446, dated Jul. 28, 2014, 16 pages. [cited by applicant]
Final Office Action from U.S. Appl. No. 11/323,446, dated Jul. 7, 2009, 21 pages. [cited by applicant]
Final Office Action from U.S. Appl. No. 11/323,446, dated Oct. 15, 2010, 17 pages. [cited by applicant]
Final Office Action from U.S. Appl. No. 11/323,446, dated Sep. 20, 2013, 14 pages. [cited by applicant]
Gil et al., “There's a Hole in the Bottom of the C: On the Effectiveness of Allocation Protection”, IEEE Cybersecurity Development (SecDev), Sep. 30-Oct. 2, 2018, 8 pages. [cited by applicant]
Gove, D., et al., “Detecting memory access errors,” Nov. 25, 2015, 17 pages. [cited by applicant]
Gretton-Dann et al., “Arm A—Profile Architecture Developments 2018: Armv8.5-A”, available online at <https://community.arm.com/developer/ip-products/processors/b/processo-rs-ip-blog/posts/arm-a-profile-architecture-2018… [cited by applicant]
https://courses.cs.washington.edu/courses/cse351/17wi/lectures/CSE351-L02-memory-I_17wi.pdf Author: Ceze; Title: CSE351: Memory, Data, & Addressing I, Date: Winter, 2017 (Year: 2017). [cited by applicant]
Intel, “Intel® 64 and IA-32 Architectures Software Developer's Manual, vol. 3A: System Programming Guide, Part 1”, Order No. 253668-060US, Sep. 2016, 468 pages. [cited by applicant]
International Preliminary Report on Patentability for Application No. PCT/US2006/048940, dated Jul. 1, 2008, 8 pages. [cited by applicant]
International Search Report and Written Opinion for Application No. PCT/US2006/048940, dated Sep. 25, 2007, 15 pages. [cited by applicant]
International Search Report and Written Opinion for Application No. PCT/US2016/063211, dated Mar. 7, 2017, 11 pages. [cited by applicant]
Introduction to SPARC M7 and Silicon Secured Memory (SSM), Retrieved from https://swisdev.oracle.com/_files/What-Is-SSM.html on Apr. 7, 2016, 2 pages. [cited by applicant]
Jeon et al., “HexType: Efficient Detection of Type Confusion Errors for C++”, CCS '17, Session K3: Program Analysis, Oct. 2017, pp. 2373-2387. [cited by applicant]
Kwon et al., “Low-Fat Pointers: Compact Encoding and Efficient Gate-Level Implementation of Fat Pointers for Spatial Safety and Capability-based Security”, Proceedings of the 2013 ACM SIGSAC Conference on Computer & Com… [cited by applicant]
Liljestrand et al., “PAC it up: Towards Pointer Integrity using ARM Pointer Authentication”, Cornell University, Nov. 22, 2018, 21 pages. [cited by applicant]
LogMeln Support, “What is Privilege Separation in SSH?”, available online at <https://web.archive.org/web/20191218064501/https://help.logmein.co-m/articles/en_US/FAQ/What-is-Privilege-Separation-in-SSH-en1>, Dec. 18, 20… [cited by applicant]
M. Rutland, “ARMv8.3 Pointer Authentication”,, Linux Security Summit, Sep. 14, 2017, 24 slides. [cited by applicant]
Mahon M.J., et al., “Hewlett-Packard Precision Architecture: The Processor,” Hewlett-Packard Journal, Aug. 1986, 19 pages. [cited by applicant]
McIlroy et al., “Spectre is Here to Stay: An Analysis of Side-Channels and Speculative Execution”, Cornell University, Feb. 15, 2019, pp. 1-26. [cited by applicant]
Menon et al., “Shakti-T: A RISC-V Processor with Light Weight Security Extensions”, Conference: the Hardware and Architectural Support for Security and Privacy, Jun. 25, 2017, 9 pages. [cited by applicant]
Miller, Matt, “Trends, Challenges, and Strategic Shifts in the Software Vulnerability Mitigation Landscape”, Microsoft Security Response Center (MSRC), Feb. 7, 2019, 32 pages. [cited by applicant]
Min R., et al., “Improving Performance of Large Physically Indexed Caches by Decoupling Memory Addresses From Cache Addresses,” IEEE Transactions on Computers, vol. 50, No. 11, Nov. 2001, pp. 1191-1201. [cited by applicant]
Nagarakatte et al., “CETS: Compiler-Enforced Temporal Safety for C”, ISMM 10, Jun. 5-6, 2010, pp. 31-40. [cited by applicant]
Non-Final Office Action from U.S. Appl. No. 11/323,446, dated Apr. 23, 2010, 16 pages. [cited by applicant]
Non-Final Office Action from U.S. Appl. No. 11/323,446, dated Jan. 15, 2015, 18 pages. [cited by applicant]
Non-Final Office Action from U.S. Appl. No. 11/323,446, dated Jun. 22, 2012, 16 pages. [cited by applicant]
Non-Final Office Action from U.S. Appl. No. 11/323,446, dated Jun. 7, 2013, 18 pages. [cited by applicant]
Non-Final Office Action from U.S. Appl. No. 11/323,446, dated Mar. 15, 2011, 16 pages. [cited by applicant]
Non-Final Office Action from U.S. Appl. No. 11/323,446, dated Mar. 20, 2014, 15 pages. [cited by applicant]
Non-Final Office Action from U.S. Appl. No. 11/323,446, dated Nov. 5, 2015, 5 pages. [cited by applicant]
Non-Final Office Action from U.S. Appl. No. 11/323,446, dated Oct. 7, 2008, 17 pages. [cited by applicant]
Notice of Allowance from U.S. Appl. No. 11/323,446, dated Mar. 14, 2016, 5 pages. [cited by applicant]
Osvik et al., “Cache Attacks and Countermeasures: the Case of AES (Extended Version)”, Lecture Notes in Computer Science 2005, Nov. 20, 2005, 25 pages. [cited by applicant]
Qualcomm, “Pointer Authentication on ARMv8.3: Design and Analysis of the New Software Security Instructions”, Jan. 2017, 12 pages. [cited by applicant]
Serebryany et al., “AddressSanitizer: A Fast Address Sanity Checker”, 2012 Usenix Annual Technical Conference, Jun. 13-15, 2012, 10 pages. [cited by applicant]
Serebryany et al., “Memory Tagging and How It Improves C/C++ Memory Safety”, Feb. 2018, 14 pages. [cited by applicant]
Serebryany et al., “Memory Tagging: How It Improves C/C++ Memory Safety” Google, LLVM Developers' Meeting, Oct. 2018, 29 slides. [cited by applicant]
Serebryany, Kostya, “Security: ARM Memory Tagging Extension and How It Improves C/C++ Memory Safety”, vol. 44, No. 2, Summer 2019, pp. 12-16. [cited by applicant]
Suh et al., “Secure Program Execution via Dynamic Information Flow Tracking”, ASPLOS'04, Oct. 9-13, 2004, pp. 85-96. [cited by applicant]
T. Nyman et al., “HardScope: Thwarting DOP attacks with Hardware-Assisted Run-time Scope Enforcement”, May 2017, pp. 1-20. [cited by applicant]
The Chromium Projects, “Multi-Process Architecture”, available online at <https://web.archive.org/web/20191030200549/https://www.chromium.org/d-evelopers/design-documents/multi-process-architecture>, Oct. 30, 2019, 2 pa… [cited by applicant]
Tsampas et al., “Towards Automatic Compartmentalization of C Programs on Capability Machines”, In Proceedings of the International Conference on Foundations of Computer Science, 2017, 14 pages. [cited by applicant]
Vasilakis et al., “BreakApp: Automated, Flexible Application Compartmentalization”, Network and Distributed Systems Security (NDSS) Symposium, Feb. 18-21, 2018, 15 pages. [cited by applicant]
Watson et al., “An Introduction to CHERI”, University of Cambridge, Computer Laboratory, Technical Report, No. 941, Sep. 2019, 43 pages. [cited by applicant]
Watson et al., “Capability Hardware Enhanced RISC Instructions: (CHERI)”, Department of Computer Science and Technology, University of Cambridge, Jan. 2022 (retrieved from https://www.cl.cam.ac.uk/research/security/ctsr… [cited by applicant]
Watson et al., “Capability Hardware Enhanced RISC Instructions: CHERI Instruction-Set Architecture (Version 8)”, University of Cambridge, Computer Laboratory, Technical Report, No. 951, Oct. 2020, 590 pages. [cited by applicant]
Watson et al., “CHERI: A Hybrid Capability—System Architecture for Scalable Software Compartmentalization”, IEEE Symposium on Security and Privacy, 2015, pp. 20-37. [cited by applicant]
Watson, “Capsicum: Practical capabilities for UNIX”, USENIX Security, 2010, 17 pages. [cited by applicant]
Wesley et al., “Cornucopia: Temporal Safety for CHERI Heaps”, In Proceedings of the 41st IEEE Symposium on Security and Privacy, 2020, pp. 1507-1524. [cited by applicant]
Wilkes J., et al., “A Comparison of Protection Lookaside Buffers and the PA-RISC Protection Architecture,” Mar. 1992, Hewlett-Packard, 12 pages. [cited by applicant]
Xia et al., “CHERIvoke: Characterising Pointer Revocation using CHERI Capabilities for Temporal Memory Safety”, MICRO '52, Oct. 2019, pp. 545-557. [cited by applicant]
Yu et al., “IMP: Indirect Memory Prefetcher”, 48th Annual IEEE/ACM International Symposium on Microarchitecture (MICRO), Dec. 5-9, 2015, 13 pages. [cited by applicant]
Non-Final Office Action, U.S. Appl. No. 17/712,072, May 12, 2025, 18 pages. [cited by applicant]
Notice of Allowance, U.S. Appl. No. 17/712,073, Aug. 1, 2025, 2 pages. [cited by applicant]
Notice of Allowance, U.S. Appl. No. 17/712,073, Jun. 2, 2025, 12 pages. [cited by applicant]
Non-Final Office Action, U.S. Appl. No. 17/712,072, Feb. 6, 2026, 24 pages. [cited by applicant]