# US 12,008,398 B2 · Performance monitoring in heterogeneous systems

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 12,008,398 B2
- Document ID: US12008398B2
- Status: Granted
- Kind: B2
- Application number: 16/729,370
- Filed: 2019-12-28
- Published: 2021-07-01
- Granted: 2024-06-11
- Earliest claimed: 2019-12-28
- Assignees: Intel Corporation
- Applicants: Intel Corporation
- Inventors: Ahmad Yasin; Julius Mandelblat; Eliezer Weissmann; Rajshree A. Chabukswar; Michael W. Chynoweth
- Web page: https://patentgrep.com/patent/US12008398B2

## CPC

- G06F 9/4881: {Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues}
- G06F 11/3433: {for load management (allocation of a server based on load conditions G06F9/505; load rebalancing G06F9/5083; redistributing the load in a network by a load balancer H04L67/1029)}
- G06F 9/30101: {Special purpose registers}
- G06F 9/321: {Program or instruction counter, e.g. incrementing}
- G06F 9/485: {Task life-cycle, e.g. stopping, restarting, resuming execution (G06F9/4881 takes precedence)}
- G06F 11/3466: {Performance evaluation by tracing or monitoring}
- G06F 2201/86: Event-based monitoring
- G06F 2201/88: Monitoring involving counting
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

Embodiments of apparatuses, methods, and systems for performance monitoring in heterogenous systems are described. In an embodiment, an apparatus includes a plurality of performance counters to generate a plurality of unweighted event counts; a weights storage to store a plurality of weight values, each weight value corresponding to an unweighted event count; a plurality of weighting units, each weighting unit to weight a corresponding unweighted event count based on a corresponding weight value to generate one of a plurality of weighted event counts; and a work counter to receive the weighted event counts and generate a measured work amount.

## Claims

### Claim 1

An apparatus comprising:
a first core of a first type;
a second core of a second type, wherein the second type is different from the first type;
a plurality of performance counters to generate a plurality of unweighted event counts;
a weights storage to store a plurality of weight values, each weight value corresponding to an unweighted event count;
a plurality of weighting units, each weighting unit to weight a corresponding unweighted event count based on a corresponding weight value to generate one of a plurality of weighted event counts;
a work counter to receive the weighted event counts and generate a measured work amount; and
a scaling predictor to use the measured work amount to provide hints to an operating system to predict performance scaling between the first core and the second core.

### Claim 2 (depends on 1)

The apparatus of claim 1, wherein the weights storage includes a programmable register.

### Claim 3 (depends on 1)

The apparatus of claim 1, wherein each of the plurality of weighting units includes a multiplier to generate the weighted event count by multiplying the corresponding unweighted event count by the corresponding weight value.

### Claim 4 (depends on 3)

The apparatus of claim 3, wherein the corresponding weight value is one of a plurality of possible weight values.

### Claim 5 (depends on 4)

The apparatus of claim 4, wherein the plurality of possible weight values includes zero.

### Claim 6 (depends on 1)

The apparatus of claim 1, wherein the work counter includes an adder to generate the measured amount of work by summing the weighted event counts.

### Claim 7

A method comprising:
programming a plurality of performance counters to generate a plurality of unweighted event counts;
programming a weights storage to store a plurality of weight values, each weight value corresponding to an unweighted event count;
weighting each of the plurality of unweighted event counts based on a corresponding weight value to generate one of a plurality of weighted event counts;
generating a measured work amount based on the plurality of weighted event counts; and
using the measured work amount to provide hints to an operating system to predict performance scaling between the first core and the second core.

### Claim 8 (depends on 7)

The method of claim 7, wherein weighting each of the plurality of unweighted event counts based on the corresponding weight value to generate one of the plurality of weighted event counts includes multiplying each of unweighted event counts by the corresponding weight value.

### Claim 9 (depends on 7)

The method of claim 7, wherein the corresponding weight value is one of a plurality of possible weight values.

### Claim 10 (depends on 9)

The method of claim 9, wherein the plurality of possible weight values includes zero.

### Claim 11 (depends on 7)

The method of claim 7, wherein generating the measured work amount based on the plurality of weighted event counts includes summing the weighted event counts.

### Claim 12 (depends on 7)

The method of claim 7, further comprising scheduling a first task to the first core based on the measured work amount, wherein the first core is of a first type in a system including the second core of a second type, wherein the second type is different from the first type.

### Claim 13 (depends on 12)

The method of claim 12, further comprising scheduling a second task to the second core based on the measured work amount.

### Claim 14

A system comprising:
a system memory to store a software task scheduler;
a first core of a first type;
a second core of a second type, wherein the second type is different from the first type;
a plurality of performance counters to generate a plurality of unweighted event counts;
a weights storage to store a plurality of weight values, each weight value corresponding to an unweighted event count;
a plurality of weighting units, each weighting unit to weight a corresponding unweighted event count based on a corresponding weight value to generate one of a plurality of weighted event counts;
a work counter to receive the weighted event counts and generate a measured work amount; and
a scaling predictor to use the measured work amount to provide hints to an operating system to predict performance scaling between the first core and the second core.

### Claim 15 (depends on 14)

The system of claim 14, wherein the weights storage includes a programmable register.

### Claim 16 (depends on 14)

The system of claim 14, wherein each of the plurality of weighting units includes a multiplier to generate the weighted event count by multiplying the corresponding unweighted event count by the corresponding weight value.

### Claim 17 (depends on 14)

The system of claim 14, wherein the work counter includes an adder to generate the measured amount of work by summing the weighted event counts.

### Claim 18 (depends on 15)

The system of claim 15, wherein the software task scheduler is to program the weights storage to provide for the software task scheduler to use the measured work amount as a hint for scheduling the task to one of the first core or the second core.

### Claim 19 (depends on 18)

The system of claim 18, wherein the hint is related to a class of instruction to be executed to perform the task.
