IP Library › Granted Patent US 12,585,394
Granted Patent B2
US 12,585,394 · App. 17/824,413 · Granted Mar 24, 2026

Visualizing memory bandwidth utilization using memory bandwidth stack

Inventors: Stijn Eyerman (Evergem, BE); Wim Heirman (Ghent, BE); Ibrahim Hur (Portland, OR)
Assignee: INTEL CORPORATION
G06F3/0631G06F3/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,585,394
App. No.
17/824,413
Granted
Mar 24, 2026
Kind
B2
Abstract

An apparatus to facilitate generating a memory bandwidth stack for visualizing memory bandwidth utilization is disclosed. The apparatus includes processors to receive data corresponding to a memory cycle occurring during a total execution time of an application executed by the one or more processors; for the memory cycle, assign the memory cycle to a component of a bandwidth stack based on analysis of the data and in accordance with a prioritization scheme; for the component, determine a portion of the bandwidth stack to account to the component based at least in part on the assignment of the memory cycle to the component; and generate the bandwidth stack by at least representing the portion accounted to the component in the bandwidth stack.

Claims (32)

1 . An apparatus comprising:

one or more processors to:

receive data corresponding to a memory cycle occurring during a total execution time of an application executed by the one or more processors;

for the memory cycle of the application, assign the memory cycle to a component of components of a bandwidth stack based on analysis of the data and in accordance with a prioritization scheme that comprises a hierarchical accounting providing a priority to the components for assignment to the memory cycle, wherein the memory cycle is broken into cycle portions and each component is assigned to the cycle portions of the memory cycle based on the priority;

for the component, determine a stack portion of the bandwidth stack to account to the component based at least in part on the assignment of a corresponding cycle portion of the cycle portions of the memory cycle to the component; and

generate the bandwidth stack by at least representing the stack portion accounted to the component in the bandwidth stack.

2 . The apparatus of claim 1 , wherein the components of the bandwidth stack comprise one or more of a read component, a write component, a precharge component, an activate component, a refresh component, a constraints component, a bank idle component, or an all idle component.

3 . The apparatus of claim 1 , wherein a top of the bandwidth stack equals a peak bandwidth of a memory module providing the memory cycle.

4 . The apparatus of claim 1 , wherein the prioritization scheme comprises assigning each of the cycle portions of the memory cycle to one component of the bandwidth stack.

5 . The apparatus of claim 4 , wherein the hierarchical accounting assigns priority, from highest to lowest, to the components as follows: read or write, refresh, precharge or activate, constraints, bank idle, and all idle.

6 . The apparatus of claim 1 , wherein the cycle portions of the memory cycle are determined based on a number of banks of a memory module providing the memory cycle.

7 . The apparatus of claim 1 , wherein the one or more processors are further to extrapolate bandwidth usage to scale with thread count of the one or more processors.

8 . The apparatus of claim 1 , wherein a dynamic random access memory (DRAM) memory module performs the memory cycle.

9 . A non-transitory computer-readable storage medium having stored thereon executable computer program instructions that, when executed by one or more processors, cause the one or more processors to perform operations comprising:

receiving, by the one or more processors, data corresponding to a memory cycle occurring during a total execution time of an application executed by the one or more processors;

for the memory cycle, assigning the memory cycle to a component of components of a bandwidth stack based on analysis of the data and in accordance with a prioritization scheme that comprises a hierarchical accounting providing a priority to the components for assignment to the memory cycle, wherein the memory cycle is broken into cycle portions and each component is assigned to the cycle portions of the memory cycle based on the priority;

for the component, determining a stack portion of the bandwidth stack to account to the component based at least in part on the assignment of a corresponding cycle portion of the cycle portions of the memory cycle to the component; and

generating the bandwidth stack by at least representing the stack portion accounted to the component in the bandwidth stack.

10 . The non-transitory computer-readable storage medium of claim 9 , wherein the components of the bandwidth stack comprise one or more of a read component, a write component, a precharge component, an activate component, a refresh component, a constraints component, a bank idle component, or an all idle component.

11 . The non-transitory computer-readable storage medium of claim 9 , wherein a top of the bandwidth stack equals a peak bandwidth of a memory module providing the memory cycle.

12 . The non-transitory computer-readable storage medium of claim 9 , wherein the prioritization scheme comprises assigning each of the cycle portions of the memory cycle to one component of the bandwidth stack.

13 . The non-transitory computer-readable storage medium of claim 12 , wherein the hierarchical accounting assigns priority, from highest to lowest, to the components as follows: read or write, refresh, precharge or activate, constraints, bank idle, and all idle.

14 . The non-transitory computer-readable storage medium of claim 9 , wherein the cycle portion of the memory cycle is determined based on a number of banks of a memory module providing the memory cycle.

15 . A method comprising:

receiving, by one or more processors, data corresponding to a memory cycle occurring during a total execution time of an application executed by the one or more processors;

for the memory cycle, assigning the memory cycle to a component of components of a bandwidth stack based on analysis of the data and in accordance with a prioritization scheme that comprises a hierarchical accounting providing a priority to the components for assignment to the memory cycle, wherein the memory cycle is broken into cycle portions and each component is assigned to the cycle portions of the memory cycle based on the priority;

for the component, determining a stack portion of the bandwidth stack to account to the component based at least in part on the assignment of a corresponding cycle portion of the cycle portion of the memory cycle to the component; and

generating the bandwidth stack at least by representing the stack portion accounted to the component in the bandwidth stack.

16 . The method of claim 15 , wherein the components of the bandwidth stack comprise one or more of a read component, a write component, a precharge component, an activate component, a refresh component, a constraints component, a bank idle component, or an all idle component.

17 . The method of claim 15 , wherein a top of the bandwidth stack equals a peak bandwidth of a memory module providing the memory cycle.

18 . The method of claim 15 , wherein the prioritization scheme comprises assigning each of the cycle portions of the memory cycle to one component of the bandwidth stack.

19 . The method of claim 15 , wherein the cycle portion determined based on a number of banks of a memory module providing the memory cycle.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 29, 2022
From: EYERMAN, STIJN; HEIRMAN, WIM; HUR, IBRAHIM
To: INTEL CORPORATION
Reel/Frame 060353/0096 →
Continuity (1)
Related Publication 20220283719A1 · Sep 8, 2022
References Cited (10)
US 20120066439A1 · Fillingim · 2012 [cited by examiner]
US 20120117226A1 · Tanaka · 2012 [cited by examiner]
US 20120272186A1 · Kraut · 2012 [cited by examiner]
US 20130055146A1 · Armitage · 2013 [cited by examiner]
US 20150281408A1 · Kwan · 2015 [cited by examiner]
US 20190213762A1 · Lee · 2019 [cited by examiner]
US 20200225883A1 · Bhimani · 2020 [cited by examiner]
US 20220171690A1 · Tougher · 2022 [cited by examiner]
US 20230289291A1 · Lee · 2023 [cited by examiner]
Intel, Finding Your Memory Access Performance Bottlenecks, Jul. 2, 2018 (Year: 2018). [cited by examiner]