IP Library Granted Patent US 10,019,365
Granted Patent B2
US 10,019,365 · App. 15/130,793 · Granted Jul 10, 2018

Adaptive value range profiling for enhanced system performance

Inventor: Mauricio Breternitz (Austin, TX)
Assignee: Advanced Micro Devices, Inc.
G06F12/0833G06F3/0611G06F3/0647G06F3/0653G06F3/0685G06F12/0802G06F12/1009G06F12/122G06F12/128G06F2212/621G06F2212/651G06F2212/69
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 10,019,365
App. No.
15/130,793
Granted
Jul 10, 2018
Kind
B2
Abstract

Enhanced adaptive profiling of ranges of values in a stream of events includes identifying a set of contiguous ranges of the values and corresponding access frequencies in the stream of events. The enhanced adaptive profiling uses a merge threshold value and a split threshold value. The set of contiguous ranges spans an entire range space of the values. Periodic traversal of the set of contiguous ranges of values and corresponding access frequencies identifies a target set of ranges of the values having corresponding access frequencies above a predetermined threshold access frequency. The target set of ranges of values has a total number of ranges less than or equal to a predetermined number of ranges. The target ranges of values span at least some of the entire range space of values. A first operation uses the target set of ranges of values.

Claims (42)

1. A method comprising:

adaptively profiling ranges of memory addresses in a stream of memory requests in a processing system to identify a set of contiguous ranges of the memory addresses and corresponding access frequencies in the stream of memory requests, the adaptively profiling being based on a merge threshold value and a split threshold value, the set of contiguous ranges spanning an entire range space of the memory addresses, the merge threshold value indicating a minimum access frequency for each range of the memory addresses in the set of contiguous ranges of the memory addresses, and the split threshold value indicating a maximum access frequency for each range of the memory addresses in the set of contiguous ranges of the memory addresses;

periodically traversing the set of contiguous ranges of the memory addresses and corresponding access frequencies to identify a target set of ranges of the memory addresses having corresponding access frequencies above a predetermined threshold access frequency, the target set of ranges of the memory addresses having a total number of ranges less than or equal to a predetermined number of ranges and ranges of the target set of ranges of the memory addresses spanning at least some of the entire range space of the memory addresses; and

performing a first operation using ranges of the memory addresses in the target set of ranges of the memory addresses,

wherein the memory addresses are virtual memory addresses, and the first operation comprises:

virtual-to-physical memory address translation of the target set of ranges of the memory addresses into a set of physical address ranges determined based on a base address value and a limit value; and

storing the set of physical address ranges as corresponding base address value and limit value pairs in a set of base-limit registers, the predetermined number of ranges corresponding to a total number of base-limit registers in the set of base-limit registers.

2. The method, as recited in claim 1 , wherein the target set of ranges of the memory addresses spans less than the entire range space of the memory addresses.

3. The method, as recited in claim 1 , wherein the target set of ranges of the memory addresses includes non-contiguous ranges of the memory addresses.

4. The method, as recited in claim 1 , wherein the first operation further comprises:

converting consecutive ranges of the target set of ranges of the memory addresses into address ranges for large pages of memory.

5. The method, as recited in claim 1 , wherein the first operation further comprises allocating contents of main memory associated with the target ranges of the memory addresses to a high-bandwidth memory in a multilevel memory system.

6. The method, as recited in claim 1 , wherein performing the first operation comprises:

identifying multiple memory requests to a memory address by multiple requestors; and

executing a coherence operation in response to the multiple requests.

7. The method, as recited in claim 6 , wherein executing the coherence operation includes invalidating a cache line corresponding to the memory address.

8. An apparatus comprising:

an adaptive range profiler configured to adaptively profile ranges of memory addresses in a stream of memory requests in a processing system to identify a set of contiguous ranges of the memory addresses and corresponding access frequencies in the stream of memory requests, the adaptively profiling being based on a merge threshold value and a split threshold value, the set of contiguous ranges spanning an entire range space of the memory addresses, the merge threshold value indicating a minimum access frequency for each range of the memory addresses in the set of contiguous ranges of the memory addresses, and the split threshold value indicating a maximum access frequency for each range of the memory addresses in the set of contiguous ranges of the memory addresses;

range coalescing and culling logic configured to periodically traverse the set of contiguous ranges of the memory addresses and corresponding access frequencies to identify a target set of ranges of the memory addresses having corresponding access frequencies above a predetermined threshold access frequency, the target set of ranges of the memory addresses having a total number of ranges less than or equal to a predetermined number of ranges and ranges of the target set of ranges of the memory addresses spanning at least some of the entire range space of the memory addresses; and

logic configured to perform a first operation using ranges of the memory addresses in the target set of ranges of the memory addresses,

wherein the logic comprises:

a virtual-to-physical address translator configured to perform the first operation including translation of the target set of ranges into a set of physical addresses having a base memory address and a limit value;

a set of base-limit registers configured to store the set of physical address ranges, the predetermined number of ranges corresponding to a total number of base-limit registers in the set of base-limit registers.

9. The apparatus, as recited in claim 8 , wherein the target set of ranges of the memory addresses spans less than the entire range space of the memory addresses and the target set of ranges of the memory addresses includes non-contiguous ranges of the memory addresses.

10. The apparatus, as recited in claim 8 , further comprising:

a page table including memory mappings redundant to the memory mappings of the set of base-limit registers.

11. The apparatus, as recited in claim 8 , wherein

the first operation further includes translation of consecutive ranges of the target set of ranges into addresses for large pages of memory.

12. The apparatus, as recited in claim 8 , further comprising:

a high-bandwidth memory, wherein the first operation further includes allocating contents of main memory associated with the target ranges of the memory addresses to the high-bandwidth memory.

13. The apparatus, as recited in claim 8 , wherein the logic is configured to identify multiple memory requests to a memory address by multiple requestors and execute a coherence operation in response to the multiple requests.

14. A method comprising:

adaptively profiling ranges of data values in a stream of events in a processing system to identify a set of contiguous ranges of the data values and corresponding access frequencies in the stream of events, the adaptively profiling being based on a merge threshold value and a split threshold value, the set of contiguous ranges of the data values spanning an entire range space of the data values, the merge threshold value indicating a minimum access frequency for each range of the data values in the set of contiguous ranges of the data values, and the split threshold value indicating a maximum access frequency for each range of the data values in the set of contiguous ranges of the data values;

periodically traversing the set of contiguous ranges of the data values and corresponding access frequencies to identify a target set of ranges of the data values having corresponding access frequencies above a predetermined threshold access frequency, the target set of ranges of the data values having a total number of ranges less than or equal to a predetermined number of ranges and ranges of the target set of ranges of the data values spanning at least some of the entire range space of the data values; and

performing a first operation using ranges of the data values in the target set of ranges of the data values,

wherein the stream of events comprises a stream of control flow instructions or a stream of data computation instructions,

wherein when the stream of events comprises the stream of control flow instructions, the data values include target program addresses and the performing the first operation includes predicting a target program address for a corresponding control flow instruction,

wherein when the stream of events comprises the stream of data computation instructions, the data values include data operands, and the performing the first operation includes predicting a value of an output of a data computation based on one or more of the data operands.

15. The method, as recited in claim 14 , wherein the target set of ranges of the data values spans less than the entire range space of the data values and the target set of ranges of the data values includes non-contiguous ranges of the data values.

16. The method, as recited in claim 14 , wherein the stream of events further comprises a stream of memory requests and the data values include memory addresses.

17. The method, as recited in claim 14 , wherein the stream of events is a stream of control flow instructions, the data values are target program addresses and the performing the first operation includes predicting a target program address for a corresponding control flow instruction.

18. The method, as recited in claim 14 , wherein the stream of events is a stream of data computation instructions, the data values are data operands, and the performing the first operation includes predicting a value of an output of a data computation based on one or more of the data operands.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 18, 2016
From: BRETERNITZ, MAURICIO
To: ADVANCED MICRO DEVICES, INC.
Reel/Frame 038302/0620 →
Continuity (2)
Provisional Application 62286618 · Jan 25, 2016
Related Publication 20170212837A1 · Jul 27, 2017
Cited By (1)
US 12,645,362