IP Library › Granted Patent US 12,443,453
Granted Patent B2
US 12,443,453 · App. 17/134,252 · Granted Oct 14, 2025

Autonomous and extensible resource control based on software priority hint

Inventors: Monica Gupta (Hillsboro, OR); Russell Fenger (Beaverton, OR); Andrew J. Herdrich (Hillsboro, OR); Rajshree Chabukswar (Sunnyvale, CA); Jumnit Hong (Portland, OR); Sneha Gohad (San Jose, CA)
Assignee: Intel Corporation
G06F9/5038G06F9/3851G06F9/5016G06F2209/5021
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,443,453
App. No.
17/134,252
Granted
Oct 14, 2025
Kind
B2
Abstract

Embodiments of apparatuses, methods, and systems for resource control based on software priority are described. In embodiments, an apparatus includes resource sharing hardware and multiple cores. The resource sharing hardware is to share the shared resource among the cores. A first core includes first execution circuitry to execute multiple threads. The first core also includes registers programmable by software. A first register is to store a first identifier of a first thread and a first priority tag to indicate a first priority of the first thread relative to a second priority of a second thread. A second register to store a second identifier of the second thread and a second priority tag to indicate the second priority of the second thread relative to the first priority of the first thread. The resource sharing hardware is to use the first priority and the second priority to control access to the shared resource by the first thread and the second thread.

Claims (36)

1. An apparatus comprising:

resource sharing hardware to control a shared resource; and

a plurality of cores to share the shared resource, including a first core, the first core including:

first execution circuitry to execute a first plurality of threads, the plurality of threads including a first thread and a second thread;

a first plurality of registers programmable by software, including:

a first register to store a first identifier of the first thread, a first class of service value to allow the software to directly control access to the shared resource by the first thread, and a first priority tag to indicate a first priority of the first thread relative to a second priority of the second thread, wherein the first priority is higher than the second priority; and

a second register to store a second identifier of the second thread, a second class of service value to allow the software to directly control access to the shared resource by the second thread, and a second priority tag to indicate the second priority of the second thread relative to the first priority of the first thread;

wherein the resource sharing hardware is to control access to the shared resource by the first thread and the second thread dynamically, including allocating, based on the first class of service value, at least a portion of the shared resource to the first thread; measuring dynamic demand for the shared resource; and re-allocating, based on the second priority tag and measured dynamic demand for the shared resource, the portion of the shared resource from the first thread to the second thread.

2. The apparatus of claim 1 , further comprising the shared resource inside the first core.

3. The apparatus of claim 1 , wherein the shared resource is a cache.

4. The apparatus of claim 1 , wherein the resource sharing hardware is outside the first core.

5. The apparatus of claim 4 , wherein a second core of the plurality of cores includes:

second execution circuitry to execute a third thread; and

a third register programmable by the software to store a third identifier of the third thread and a third priority tag to indicate a third priority of the third thread relative to the first priority and the second priority;

wherein the resource sharing hardware is also to use the first priority and the third priority to control access to the shared resource by the first thread and the third thread.

6. The apparatus of claim 5 , wherein the shared resource is memory bandwidth.

7. The apparatus of claim 5 , wherein the shared resource is power.

8. The apparatus of claim 1 , further comprising a third register programmable by the software to indicate a mapping between priority tags to be used by the software and priority levels to be used by the resource sharing hardware.

9. A method comprising:

storing, in a first register in a core, a first identifier of a first thread to be executed by the core, a first class of service value to allow software to directly control access to a shared resource by the first thread, and a first priority tag to indicate a first priority of the first thread relative to a second priority of a second thread to be executed by the core, wherein the first priority is higher than the second priority;

storing, in a second register in the core, a second identifier of the second thread, a second class of service value to allow the software to directly control access to the shared resource by the second thread, and a second priority tag to indicate the second priority of the second thread relative to the first priority of the first thread;

controlling, by resource sharing hardware, access to the shared resource by the first thread and the second thread dynamically, including allocating, based on the first class of service value, at least a portion of the shared resource to the first thread; measuring dynamic demand for the shared resource; and re-allocating, based on the second priority tag and measured dynamic demand for the shared resource, the portion of the shared resource from the first thread to the second thread.

10. The method of claim 9 , further comprising:

storing, in a third register in a second core, a third identifier of a third thread to be executed by the second core and a third priority tag to indicate a third priority of the third thread relative to the first priority and the second priority; and

using, by the resource sharing hardware, the first priority and the third priority to control access to the shared resource by the first thread and the third thread.

11. A system comprising:

resource sharing hardware to control a shared resource; and

a plurality of cores to share the shared resource, including a first core having a first architecture and a second core having a second architecture, wherein:

the first core includes:

first execution circuitry to execute a first thread;

a first register programmable by software to store a first identifier of the first thread, a first class of service value to allow the software to directly control access to the shared resource by the first thread, and a first priority tag to indicate a first priority of the first thread relative to a second priority of the second thread, wherein the first priority is higher than the second priority;

the second core includes:

second execution circuitry to execute a second thread;

a second register programmable by software to store a second identifier of the second thread, a second class of service value to allow the software to directly control access to the shared resource by the second thread, and a second priority tag to indicate a second priority of the second thread relative to the first priority of the first thread; and

the resource sharing hardware is to control access to the shared resource by the first thread and the second thread dynamically, including allocating, based on the first class of service value, at least a portion of the shared resource to the first thread; measuring dynamic demand for the shared resource; and re-allocating, based on the second priority tag and measured dynamic demand for the shared resource, the portion of the shared resource from the first thread to the second thread.

12. The system of claim 11 , wherein the first architecture is different than the second architecture.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 14, 2021
From: GUPTA, MONICA; FENGER, RUSSELL; HERDRICH, ANDREW J.; CHABUKSWAR, RAJSHREE; HONG, JUMNIT; GOHAD, SNEHA
To: INTEL CORPORATION
Reel/Frame 055920/0581 →
Continuity (1)
Related Publication 20220206862A1 · Jun 30, 2022
References Cited (19)
US 20010056456A1 · Cota-Robles · 2001 [cited by examiner]
US 20060179196A1 · Gray · 2006 [cited by examiner]
US 20080075101A1 · Illikkal · 2008 [cited by examiner]
US 20090138683A1 · Capps, Jr. · 2009 [cited by examiner]
US 20090172315A1 · Iyer · 2009 [cited by examiner]
US 20120300630A1 · Abel · 2012 [cited by examiner]
US 20150347189A1 · Steffen · 2015 [cited by examiner]
US 20160284021A1 · Herdrich · 2016 [cited by examiner]
US 20170285710A1 · Ardanaz · 2017 [cited by examiner]
US 20190102229A1 · Gupta · 2019 [cited by examiner]
EP 1213650A2 · 2002 [cited by applicant]
Cache QoS: From Concept to Reality in the Intel® Xeon® Processor E5-2600 v3 Product Family Andrew Herdrich, Edwin Verplanke, Priya Autee, Ramesh Illikkal, Chris Gianos, Ronak Singhal, Ravi Iyer (Year: 2016). [cited by examiner]
PMU-guided Priority Adjustment to Guarantee Thread Performance on IBM Power SMT Processor Zhengyu He and Bo Hong (Year: 2012). [cited by examiner]
QoS Policies and Architecture for Cache/Memory in CMP Platforms Ravi Iyer, Li Zhao, Fei Guo, Ramesh Illikkal, Srihari Makineni, Don Newell, Yan Solihin, Lisa Hsu, Steve Reinhardt (Year: 2007). [cited by examiner]
Rate-Based QoS Techniques for Cache/Memory in CMP Platforms Andrew Herdrich, Ramesh Illikkal, Ravi Iyer, Don Newell, Vineet Chadha, Jaideep Moses (Year: 2009). [cited by examiner]
Supporting Differentiated Services in Computers via Programmable Architecture for Resourcing-on-Demand (PARD) Jiuyue Ma, Xiufeng Sui, Ninghui Sun, Yupeng Li, Zihao Yu, Bowen Huang, Tianni Xu, Zhicheng Yao, Yun Chen, Hai… [cited by examiner]
Johnson et al., “A Comparison of Fast and Low Overhead Distributed Priority Locks”, Journal of Parallel and Distributed Computing, vol. 32, No. 1, Jan. 10, 1996, pp. 74-89. [cited by applicant]
Partial European Search Report and Search Opinion, EP App. No. 21197066.0, Jun. 22, 2022, 11 pages. [cited by applicant]
Office Action, EP App. No. 21197066.0, Jan. 3, 2024, 06 pages. [cited by applicant]