IP Library › Granted Patent US 12,386,533
Granted Patent B2
US 12,386,533 · App. 18/311,589 · Granted Aug 12, 2025

Computer system with instruction pre-sending

Inventors: Gurindar Sohi (Madison, WI); Shyam Murthy (Madison, WI)
Assignee: Wisconsin Alumni Research Foundation
G06F3/064G06F3/0604G06F3/0673
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,386,533
App. No.
18/311,589
Granted
Aug 12, 2025
Kind
B2
Abstract

A computer architecture provides a pre-sending of memory blocks from a lower level memory hierarchy component to a higher level memory hierarchy component using a table linking a set of memory blocks holding instructions that are executed in different fragments of a program. The table is used to pre-send memory blocks to the higher level memory hierarchy component in anticipation of their use by a processor executing the program.

Claims (48)

1. A computer architecture comprising:

a processor;

a memory hierarchy providing a lower level component and a higher level component providing faster access by the processor than the lower level component, the lower level component holding a portion of a program in defined memory blocks; and

an instruction pre-sending unit communicating with the processor and the lower level component and operating during execution of a program by the processor to:

(1) maintain a table linking a first instruction of the program to a first set of memory blocks and to a second instruction of the program, the second instruction linked to a second set of memory blocks and succeeding the first instruction in an execution of the program;

(2) maintain a stack to identify the second set of memory blocks linked to the second instruction; and

(3) use the table in conjunction with the stack to pre-send a memory block from the first set of memory blocks and from the second set of memory blocks from a lower level component of the memory hierarchy to a higher level component of the memory hierarchy.

2. The computer architecture of claim 1 wherein the each memory block in the first set of memory blocks and the each memory block in the second set of memory blocks is a cache block.

3. The computer architecture of claim 1 wherein the first and second sets of memory blocks are defined by corresponding portions of the program delineated by call instructions or return instructions of the program.

4. The computer architecture of claim 1 wherein the table provides a logical graph of the program having sets of memory blocks as nodes linked by directed edges indicating execution order.

5. The computer architecture of claim 1 wherein the table links a given first instruction and first set of memory blocks to two or more second instructions and second sets of memory blocks.

6. The computer architecture of claim 5 wherein the table assigns path aging bits to each of the two or more second instructions and the pre-sending unit operates to pre-send a memory block from a given second set of memory blocks based upon the value of the path aging bits of the second instruction associated with the given second set of memory blocks.

7. The computer architecture of claim 1 wherein at (3), the instruction pre-sending unit determines whether a memory block from a given set of memory blocks is currently in the higher level component and pre-sends the memory block to the higher level component based on that determination.

8. The computer architecture of claim 1 wherein the instruction pre-sending unit further operates during execution of the program by the processor to:

(4) repeat (3) with the first instruction associated with the first set of memory blocks in a given repetition being the second instruction associated with the second set of memory blocks of the previous repetition with the second set of memory blocks in the given repetition being a new third set of memory blocks.

9. The computer architecture of claim 8 wherein the instruction pre-sending unit performs at least two repetitions without communication with the processor.

10. The computer architecture of claim 8 wherein the instruction pre-sending unit periodically receives from the processor an identifier of proximately executing memory blocks to control the number of repetitions.

11. The computer architecture of claim 8 wherein the instruction pre-sending unit maintains the table by monitoring execution of the program.

12. The computer architecture of claim 1 wherein the first instruction of the program and second instruction of the program in the table are identified by a compressed representation of the program counter values of the first instruction of the program and of the second instruction of the program.

13. The computer architecture of claim 1 wherein the table is set associative.

14. The computer architecture of claim 1 wherein the stack is maintained by pushing information identifying the second set of blocks onto the stack when the second instruction is not a return instruction and by popping information identifying the second set of blocks from the stack when the second instruction is a return instruction.

15. A computer architecture comprising:

a processor;

a memory hierarchy providing a lower level component and a higher level component providing faster access by the processor than the lower level component, the lower level component holding a portion of a program in defined memory blocks; and

an instruction pre-sending unit communicating with the processor and the lower level component and operating during execution of a program by the processor to:

(1) maintain a table linking a first instruction of the program to a first set of memory blocks and to a second instruction of the program, the second instruction linked to a second set of memory blocks and succeeding the first instruction in an execution of the program;

(2) use the table to pre-send a memory block from the first set of memory blocks and from the second set of memory blocks from a lower level component of the memory hierarchy to a higher level component of the memory hierarchy;

wherein the table links a given first instruction and first set of memory blocks to two or more second instructions and second sets of memory blocks; and

wherein the instruction pre-sending unit operates to pre-send a memory block from each of the corresponding two or more second sets of memory blocks.

16. A method of managing memory blocks in a computer architecture having a processor and a memory hierarchy providing a lower level component and a higher level component providing faster access by the processor than the lower level component, the lower level component holding a portion of a program in defined memory blocks; the method comprising:

(1) maintaining a table linking a first instruction of the program to a first set of memory blocks and to a second instruction of the program, the second instruction linked to a second set of memory blocks and succeeding the first instruction in an execution of the program;

(2) maintain a stack to identify the second set of memory blocks linked to the second instruction; and

(3) using the table in conjunction with the stack to pre-send a memory block from the first set of memory blocks and from the second set of memory blocks from a lower level component of the memory hierarchy to a higher level component of the memory hierarchy.

17. The method of claim 16 wherein each memory block in the first set of memory blocks and each memory block in the second set of memory blocks is a cache block.

18. The method of claim 16 wherein the first and second sets of memory blocks are defined by corresponding portions of the program delineated by call instructions or return instructions of the program.

19. The method of claim 16 wherein the table provides a logical graph of the program having sets of memory blocks as nodes linked by directed edges indicating historical execution order.

20. The method of claim 16 wherein the table links a given first instruction and first set of memory blocks to two or more second instructions and second sets of memory blocks.

21. The method of claim 20 wherein the table assigns path aging bits to each of the two or more second instructions and the pre-sending unit operates to pre-send a memory block from a given second set of memory blocks based upon the value of the path aging bits of the second instruction associated with the given second set of memory blocks.

22. The method of claim 16 wherein at (3), further including determining whether a memory block from a given set of memory blocks is currently in the higher level component and pre-sending the memory block to the higher level component based on that determination.

23. The method of claim 16 further including repeating (3) with the first instruction associated with the first set of memory blocks in a given repetition being the second instruction associated with the second set of memory blocks of the previous repetition with the second set of memory blocks in the given repetition being a new third set of memory blocks.

24. The method of claim 23 including identifying a proximately executing memory block to control the number of repetitions.

25. The computer architecture of claim 16 where in the table is maintained by monitoring the execution of the program.

26. The method of claim 16 wherein the first instruction of the program and the second instruction of the program in the table are identified by a compressed representation of the program counter values of the first instruction of the program and of the second instruction of the program.

27. A method of managing memory blocks in a computer architecture having a processor and a memory hierarchy providing a lower level component and a higher level component providing faster access by the processor than the lower level component, the lower level component holding a portion of a program in defined memory blocks; the method comprising:

(1) maintaining a table linking a first instruction of the program to a first set of memory blocks and to a second instruction of the program, the second instruction linked to a second set of memory blocks and succeeding the first instruction in an execution of the program;

(2) using the table to pre-send a memory block from the first set of memory blocks and from the second set of memory blocks from a lower level component of the memory hierarchy to a higher level component of the memory hierarchy;

wherein the table links a given first instruction and first set of memory blocks to two or more second instructions and second sets of memory blocks; and

further including pre-sending a memory block from each of the corresponding two or more second sets of memory blocks.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 15, 2023
From: MURTHY, SHYAM; SOHI, GURINDAR
To: WISCONSIN ALUMNI RESEARCH FOUNDATION
Reel/Frame 064914/0952 →
Continuity (1)
Related Publication 20240370191A1 · Nov 7, 2024
References Cited (39)
US 5577217A · Hoyt et al. · 1996 [cited by applicant]
US 6560693B1 · Puzak · 2003 [cited by examiner]
US 8719806B2 · Wang · 2014 [cited by examiner]
US 9280351B2 · Bonanno et al. · 2016 [cited by applicant]
US 9690707B2 · Chou · 2017 [cited by applicant]
US 10042776B2 · Saidi et al. · 2018 [cited by applicant]
US 10642618B1 · Hakewill · 2020 [cited by examiner]
US 20170090935A1 · Falsafi et al. · 2017 [cited by applicant]
US 20170286116A1 · Johar · 2017 [cited by examiner]
US 20190394214A1 · Ahuja et al. · 2019 [cited by applicant]
US 20200285477A1 · Winrow · 2020 [cited by examiner]
US 20220050715A1 · Shear et al. · 2022 [cited by applicant]
US 20220245054A1 · Jada · 2022 [cited by examiner]
US 20220365836A1 · Cheriton · 2022 [cited by applicant]
US 20230023860A1 · Holman et al. · 2023 [cited by applicant]
KR 20190044565A · 2019 [cited by applicant]
KR 20190106271A · 2019 [cited by applicant]
WO 2018142140A1 · 2018 [cited by applicant]
WO 2019162647A1 · 2019 [cited by applicant]
WO 2021263156A1 · 2021 [cited by applicant]
Reinman et al., Fetch Directed Instruction Prefetching, Nov. 1999. [cited by applicant]
Bonanno et al., Two Level Bulk Preload Branch Prediction, 2013. [cited by applicant]
Diga et al., The IBM z15 High Frequency Mainframe Branch Predictor, 2020. [cited by applicant]
Ros et al., The Entangling Instruction Prefetcher, IEEE Computer Architecture Letters, vol. 19, No. 2, Jul.-Dec. 2020. [cited by applicant]
Ferdman et al., Temporal Instruction Fetch Streaming, 2008. [cited by applicant]
Kolli et al., RDIP: Return-address-stack Directed Instruction Prefetching. [cited by applicant]
Ferdman et al., Proactive Instruction Fetch, 2011. [cited by applicant]
Burcea et al., Predictor Virtualization, 2008. [cited by applicant]
Chen et al., Instruction Prefetching Using Branch Prediction Information, EECS Department, University of Michigan, 1997. [cited by applicant]
Aamodt et al., Hardware Support for Prescient Instruction Prefetch. [cited by applicant]
Zhang et al., Execution History Guided Instruction Prefetching, 2002. [cited by applicant]
Kaynak et al., Confluence: Unified Instruction Supply for Scale-Out Servers, 2015. [cited by applicant]
Annavaram et al., Call Graph Prefetching for Database Applications, Electrical Engineering and Computer Science Department, The University of Michigan, Ann Arbor, 2001. [cited by applicant]
Srinivasam et al., Branch History Guided Instruction Prefetching, 2001. [cited by applicant]
Kumar et al., Boomerang: a Metadata-Free Architecture for Control Flow Delivery, Institute of Computing Systems Architecture, University of Edinburgh, 2017. [cited by applicant]
Kumar et al., Blasting Through The Front-End Bottleneck With Shotgun, Associate for Computing Machinery, 2018. [cited by applicant]
Ayers et al., AsmDB: Understanding and Mitigating Front-End Stalls in Warehouse-Scale Computers, 2019. [cited by applicant]
Ros et al., A Cost-Effective Entangling Prefetcher for Instructions, Computer Engineering Department, University of Murcia, 2021. [cited by applicant]
International Search Report for PCT/US2024/025654 dated Aug. 14, 2024. [cited by applicant]