| CPC G06F 9/5038 (2013.01) [G06F 9/3851 (2013.01); G06F 9/5016 (2013.01); G06F 2209/5021 (2013.01)] | 12 Claims |

|
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.
|