# US 7,614,056 B1 · Processor specific dispatching in a heterogeneous configuration

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

- Number: US 7,614,056 B1
- Document ID: US7614056B1
- Status: Granted
- Kind: B1
- Application number: 10/661,413
- Filed: 2003-09-12
- Granted: 2009-11-03
- Earliest claimed: 2003-09-12
- Assignees: Sun Microsystems, Inc.
- Inventors: Eric C. Saxe; Andrei Dorofeev; Jonathan Chew; Bart Smaalders; Andrew G. Tucker
- Web page: https://patentgrep.com/patent/US7614056B1

## CPC

- G06F 9/4843: {by program, e.g. task dispatcher, supervisor, operating system}
- G06F 9/455: Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F 9/5044: {considering hardware capabilities}
- G06F 9/505: {considering the load}
- G06F 9/5061: {Partitioning or combining of resources}
- G06F 9/5083: {Techniques for rebalancing the load in a distributed system}
- G06F 2209/5012: Processor sets
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

An abstraction layer is comprised in the operating system that represents the particulars of the PPMs. The abstractions in the abstraction layer are differentiated from one another by parameters representing the characteristics of the PPMs. The dispatcher uses the abstraction to balance processing loads when assigning execution threads to the PPMs. The assigning of the execution threads and the balancing of the processing loads is performed while taking account of the characteristics of the PPMs, such as shared resources and clock speed.

## Claims

### Claim 1

A method performed by an operating system executing within a computer system having different types of physical processing modules, the method comprising:
receiving a first set of parametric information pertaining to a first physical processing module (PPM), the first PPM having a first architecture;
constructing a first abstraction of the first PPM based, at least partially, upon the first set of parametric information, the first abstraction comprising an indication of how many logical processing entities are provided by the first PPM, the first abstraction further comprising operational information indicating one or more operational characteristics of the first PPM;
determining that a second abstraction for a second PPM does not exist the second PPM having a second architecture, wherein the first architecture is different from the second architecture;
receiving a second set of parametric information pertaining to the second PPM;
constructing the second abstraction of the second PPM based, at least partially, upon the second set of parametric information, the second abstraction comprising an indication of how many logical processing entities are provided by the second PPM, the second abstraction further comprising operational information indicating one or more operational characteristics of the second PPM, wherein the second abstraction is different from the first abstraction to reflect at least one difference between the first architecture of the first PPM and the second architecture of the second PPM; and
dispatching, based on the at least one difference between the first architecture of the first PPM and the second architecture of the second PPM and the operational information in the first abstraction, an execution thread for execution to one of the logical processing entities of the first PPM.

### Claim 2 (depends on 1)

The method of claim 1, wherein the first PPM comprises a first physical processing core which supports a single hardware thread, wherein the second PPM comprises a second physical processing core which supports a plurality of hardware threads, wherein constructing the first abstraction comprises indicating the first physical processing core as a single logical processing entity, and wherein constructing the second abstraction comprises indicating the second physical processing core as a plurality of logical processing entities.

### Claim 3 (depends on 2)

The method of claim 2, wherein constructing the second abstraction comprises indicating that the plurality of logical processing entities corresponding to the second physical processing core share one or more resources of the second PPM.

### Claim 4 (depends on 1)

The method of claim 1,
wherein the first PPM has an n number of processing cores, where n is an integer greater than one, each of the n processing cores capable of supporting one hardware thread; and
wherein the second PPM has a single processing core capable of supporting an m number of hardware threads, where m is an integer greater than one.

### Claim 5 (depends on 4)

The method of claim 4, wherein the first abstraction indicates that the first PPM provides an n number of logical processing entities, and wherein the second abstraction indicates that the second PPM provides an m number of logical processing entities.

### Claim 6 (depends on 5)

The method of claim 5, wherein the operational information of the first abstraction includes resource sharing information indicating one or more resources shared by the n logical processing entities of the first PPM, and wherein the operational information of the second abstraction includes resource sharing information indicating one or more resources shared by the m logical processing entities of the second PPM.

### Claim 7 (depends on 6)

The method of claim 6, wherein the resource sharing information of the first abstraction indicates that the n logical processing entities of the first PPM share a cache, and wherein the resource sharing information of the second abstraction indicates that the m logical processing entities of the second PPM share one or more of the following: a processing core, a data pathway, a translation lookaside buffer, and a cache.

### Claim 8 (depends on 1)

The method of claim 1,
wherein the first PPM has an n number of processing cores, where n is an integer greater than one, each of the n processing cores capable of supporting one hardware thread; and
wherein the second PPM has an m number of processing cores, wherein m is an integer greater than one, each of the m processing cores capable of supporting a p number of hardware threads, where p is an integer greater than one.

### Claim 9 (depends on 8)

The method of claim 8, wherein the first abstraction indicates that the first PPM provides an n number of logical processing entities, and wherein the second abstraction indicates that the second PPM provides an s number of logical processing entities, where s=m times p.

### Claim 10 (depends on 9)

The method of claim 9, wherein the operational information of the first abstraction includes resource sharing information indicating one or more resources shared by then logical processing entities of the first PPM, and wherein the operational information of the second abstraction includes resource sharing information indicating one or more resources shared by at least some of the s logical processing entities of the second PPM.

### Claim 11 (depends on 10)

The method of claim 10, wherein the resource sharing information of the first abstraction indicates that the n logical processing entities of the first PPM share a cache, and wherein the resource sharing information of the second abstraction indicates that at least some of the s logical processing entities of the second PPM share one or more of the following: a processing core, a data pathway, a translation lookaside buffer, and a cache.

### Claim 12 (depends on 1)

The method of claim 1,
wherein the first PPM has a single processing core capable of supporting an n number of hardware threads, where n is an integer greater than one; and
wherein the second PPM has an m number of processing cores, wherein m is an integer greater than one, each of the m processing cores capable of supporting a p number of hardware threads, where p is an integer greater than one.

### Claim 13 (depends on 12)

The method of claim 12, wherein the first abstraction indicates that the first PPM provides an n number of logical processing entities, and wherein the second abstraction indicates that the second PPM provides an s number of logical processing entities, where s=m times p.

### Claim 14 (depends on 13)

The method of claim 13, wherein the operational information of the first abstraction includes resource sharing information indicating one or more resources shared by the n logical processing entities of the first PPM, and wherein the operational information of the second abstraction includes resource sharing information indicating one or more resources shared by at least some of the s logical processing entities of the second PPM.

### Claim 15 (depends on 14)

The method of claim 14, wherein the resource sharing information of the first abstraction indicates that the n logical processing entities of the first PPM share one or more of the following: a processing core, a data pathway, a translation lookaside buffer, and a cache, and wherein the resource sharing information of the second abstraction indicates that at least some of the s logical processing entities of the second PPM share one or more of the following: a processing core, a data pathway, a translation lookaside buffer, and a cache.

### Claim 16 (depends on 1)

The method of claim 1, further comprising:
accessing the first abstraction and/or the second abstraction.

### Claim 17 (depends on 16)

The method of claim 16, wherein the operational information of the first abstraction includes resource sharing information indicating one or more resources shared by the logical processing entities of the first PPM, and wherein the operational information of the second abstraction includes resource sharing information indicating one or more resources shared by the logical processing entities of the second PPM.

### Claim 18 (depends on 17)

The method of claim 17, wherein determining whether to dispatch an execution thread comprises:
determining, based at least partially upon the resource sharing information in the first abstraction and/or the resource sharing information in the second abstraction, whether to dispatch an execution thread to one of the logical processing entities of the first PPM or one of the logical processing entities of the second PPM to be executed thereby.

### Claim 19 (depends on 18)

The method of claim 18, wherein the resource sharing information in the first abstraction indicates that the logical processing entities of the first PPM are sharing one or more of the following: a processing core, a data pathway, a translation lookaside buffer, and a cache.

### Claim 20 (depends on 19)

The method of claim 19, wherein the resource sharing information in the second abstraction indicates that the logical processing entities of the second PPM are sharing one or more of the following: a processing core, a data pathway, a translation lookaside buffer, and a cache.

### Claim 21

A computer readable medium carrying instructions for an operating system, wherein the instructions, when executed in a computer system, cause the computer system to perform the operations of:
receiving a first set of parametric information pertaining to a first physical processing module (PPM), the first PPM having a first architecture;
constructing a first abstraction of the first PPM based, at least partially, upon the first set of parametric information, the first abstraction comprising an indication of how many logical processing entities are provided by the first PPM, the first abstraction further comprising operational information indicating one or more operational characteristics of the first PPM;
determining that a second abstraction for a second PPM does not exist, the second PPM having a second architecture, wherein the first architecture is different from the second architecture;
receiving a second set of parametric information pertaining to the second PPM;
constructing a second abstraction of the second PPM based, at least partially, upon the second set of parametric information, the second abstraction comprising an indication of how many logical processing entities are provided by the second PPM, the second abstraction further comprising operational information indicating one or more operational characteristics of the second PPM, wherein the second abstraction is different from the first abstraction to reflect at least one difference between the first architecture of the first PPM and the second architecture of the second PPM; and
dispatching, based on the at least one difference between the first architecture of the first PPM and the second architecture of the second PPM and the operational information in the first abstraction, an execution thread for execution to one of the logical processing entities of the first PPM.

### Claim 22 (depends on 21)

The computer readable medium of claim 21, wherein the first PPM comprises a first physical processing core which supports a single hardware thread, wherein the second PPM comprises a second physical processing core which supports a plurality of hardware threads, wherein constructing the first abstraction comprises indicating the first physical processing core as a single logical processing entity, and wherein constructing the second abstraction comprises indicating the second physical processing core as a plurality of logical processing entities.

### Claim 23 (depends on 21)

The computer readable medium of claim 21, wherein constructing the second abstraction comprises indicating that the plurality of logical processing entities corresponding to the second physical processing core share one or more resources of the second PPM.

### Claim 24 (depends on 21)

The computer readable medium of claim 21, wherein the first PPM has an n number of processing cores, where n is an integer greater than one, each of the n processing cores capable of supporting one hardware thread; and wherein the second PPM has a single processing core capable of supporting an m number of hardware threads, where m is an integer greater than one.

### Claim 25 (depends on 24)

The computer readable medium of claim 24, wherein the first abstraction indicates that the first PPM provides an n number of logical processing entities, and wherein the second abstraction indicates that the second PPM provides an m number of logical processing entities.

### Claim 26 (depends on 25)

The computer readable medium of claim 25, wherein the operational information of the first abstraction includes resource sharing information indicating one or more resources shared by the n logical processing entities of the first PPM, and wherein the operational information of the second abstraction includes resource sharing information indicating one or more resources shared by the m logical processing entities of the second PPM.

### Claim 27 (depends on 26)

The computer readable medium of claim 26, wherein the resource sharing information of the first abstraction indicates that the n logical processing entities of the first PPM share a cache, and wherein the resource sharing information of the second abstraction indicates that the m logical processing entities of the second PPM share one or more of the following: a processing core, a data pathway, a translation lookaside buffer, and a cache.

### Claim 28 (depends on 21)

The computer readable medium of claim 21,
wherein the first PPM has an n number of processing cores, where n is an integer greater than one, each of the n processing cores capable of supporting one hardware thread; and
wherein the second PPM has an m number of processing cores, wherein m is an integer greater than one, each of the m processing cores capable of supporting a p number of hardware threads, where p is an integer greater than one.

### Claim 29 (depends on 28)

The computer readable medium of claim 28, wherein the first abstraction indicates that the first PPM provides an n number of logical processing entities, and wherein the second abstraction indicates that the second PPM provides an s number of logical processing entities, where s=m times p.

### Claim 30 (depends on 29)

The computer readable medium of claim 29, wherein the operational information of the first abstraction includes resource sharing information indicating one or more resources shared by the n logical processing entities of the first PPM, and wherein the operational information of the second abstraction includes resource sharing information indicating one or more resources shared by at least some of the s logical processing entities of the second PPM.

### Claim 31 (depends on 30)

The computer readable medium of claim 30, wherein the resource sharing information of the first abstraction indicates that the n logical processing entities of the first PPM share a cache, and wherein the resource sharing information of the second abstraction indicates that at least some of the s logical processing entities of the second PPM share one or more of the following: a processing core, a data pathway, a translation lookaside buffer, and a cache.

### Claim 32 (depends on 21)

The computer readable medium of claim 21,
wherein the first PPM has a single processing core capable of supporting an n number of hardware threads, where n is an integer greater than one; and
wherein the second PPM has an m number of processing cores, wherein m is an integer greater than one, each of the m processing cores capable of supposing a p number of hardware threads, where p is an integer greater than one.

### Claim 33 (depends on 32)

The computer readable medium of claim 32, wherein the first abstraction indicates that the first PPM provides an n number of logical processing entities, and wherein the second abstraction indicates that the second PPM provides an s number of logical processing entities, where s=m times p.

### Claim 34 (depends on 33)

The computer readable storage medium of claim 33, wherein the operational information of the first abstraction includes resource sharing information indicating one or more resources shared by the n logical processing entities of the first PPM, and wherein the operational information of the second abstraction includes resource sharing information indicating one or more resources shared by at least some of the s logical processing entities of the second PPM.

### Claim 35 (depends on 34)

The computer readable medium of claim 34, wherein the resource sharing information of the first abstraction indicates that the n logical processing entities of the first PPM share one or more of the following: a processing core, a data pathway, a translation lookaside buffer, and a cache, and wherein the resource sharing information of the second abstraction indicates that at least some of the s logical processing entities of the second PPM share one or more of the following: a processing core, a data pathway, a translation lookaside buffer, and a cache.

### Claim 36 (depends on 21)

The computer readable medium of claim 21, wherein the instructions cause the computer system to further perform the operations of:
accessing the first abstraction and/or the second abstraction.

### Claim 37 (depends on 36)

The computer readable medium of claim 36, wherein the operational information of the first abstraction includes resource sharing information indicating one or more resources shared by the logical processing entities of the first PPM, and wherein the operational information of the second abstraction includes resource sharing information indicating one or more resources shared by the logical processing entities of the second PPM.

### Claim 38 (depends on 37)

The computer readable medium of claim 37, wherein determining whether to dispatch an execution thread comprises:
determining, based at least partially upon the resource sharing information in the first abstraction and/or the resource sharing information in the second abstraction, whether to dispatch an execution thread to one of the logical processing entities of the first PPM or one of the logical processing entities of the second PPM to be executed thereby.

### Claim 39 (depends on 38)

The computer readable medium of claim 38, wherein the resource sharing information in the first abstraction indicates that the logical processing entities of the first PPM are sharing one or more of the following: a processing core, a data pathway, a translation lookaside buffer, and a cache.

### Claim 40 (depends on 39)

The computer readable medium of claim 39, wherein the resource sharing information in the second abstraction indicates that the logical processing entities of the second PPM are sharing one or more of the following: a processing core, a data pathway, a translation lookaside buffer, and a cache.

### Claim 41

A computer system comprising:
a first physical processing module (PPM) having a first architecture;
an operating system executing within the computer system, wherein the operating system performs the operations of:
receiving a first set of parametric information pertaining to the first PPM;
constructing a first abstraction of the first PPM based, at least partially, upon the first set of parametric information, the first abstraction comprising an indication of how many logical processing entities are provided by the first PPM, the first abstraction further comprising operational information indicating one or more operational characteristics of the first PPM;
determining that a second abstraction for a second PPM does not exist, the second PPM having a second architecture wherein the first architecture is different from the second architecture;
receiving a second set of parametric information pertaining to the second PPM;
constructing a second abstraction of the second PPM based, at least partially, upon the second set of parametric information, the second abstraction comprising an indication of how many logical processing entities are provided by the second PPM, the second abstraction further comprising operational information indicating one or more operational characteristics of the second PPM, wherein the second abstraction is different from the first abstraction to reflect the differences between the first architecture of the first PPM and the second architecture of the second PPM; and
dispatching, based on the at least one difference between the first architecture of the first PPM and the second architecture of the second PPM and the operational information in the first abstraction, an execution thread for execution to one of the logical processing entities of the first PPM.

### Claim 42 (depends on 41)

The computer system of claim 41, wherein the first PPM comprises a first physical processing core which supports a single hardware thread, wherein the second PPM comprises a second physical processing core which supports a plurality of hardware threads, wherein constructing the first abstraction comprises indicating the first physical processing core as a single logical processing entity, and wherein constructing the second abstraction comprises indicating the second physical processing core as a plurality of logical processing entities.

### Claim 43 (depends on 42)

The computer system of claim 42, wherein constructing the second abstraction comprises indicating that the plurality of logical processing entities corresponding to the second physical processing core share one or more resources of the second PPM.

### Claim 44 (depends on 41)

The computer system of claim 41,
wherein the first PPM has an n number of processing cores, where n is an integer greater than one, each of the n processing cores capable of supporting one hardware thread; and
wherein the second PPM has a single processing core capable of supporting an m number of hardware threads, where m is an integer greater than one.

### Claim 45 (depends on 44)

The computer system of claim 44, wherein the first abstraction indicates that the first PPM provides an n number of logical processing entities, and wherein the second abstraction indicates that the second PPM provides an m number of logical processing entities.

### Claim 46 (depends on 45)

The computer system of claim 45, wherein the operational information of the first abstraction includes resource sharing information indicating one or more resources shared by the n logical processing entities of the first PPM, and wherein the operational information of the second abstraction includes resource sharing information indicating one or more resources shared by the m logical processing entities of the second PPM.

### Claim 47 (depends on 46)

The computer system of claim 46, wherein the resource sharing information of the first abstraction indicates that the n logical processing entities of the first PPM share a cache, and wherein the resource sharing information of the second abstraction indicates that the m logical processing entities of the second PPM share one or more of the following: a processing core, a data pathway, a translation lookaside buffer, and a cache.

### Claim 48 (depends on 41)

The computer system of claim 41,
wherein the first PPM has an n number of processing cores, where n is an integer greater than one, each of the n processing cores capable of supporting one hardware thread; and
wherein the second PPM has an m number of processing cores, wherein m is an integer greater than one, each of the m processing cores capable of supporting a p number of hardware threads, where p is an integer greater than one.

### Claim 49 (depends on 48)

The computer system of claim 48, wherein the first abstraction indicates that the first PPM provides an n number of logical processing entities, and wherein the second abstraction indicates that the second PPM provides an s number of logical processing entities, where s=m times p.

### Claim 50 (depends on 49)

The computer system of claim 49, wherein the operational information of the first abstraction includes resource sharing information indicating one or more resources shared by the n logical processing entities of the first PPM, and wherein the operational information of the second abstraction includes resource sharing information indicating one or more resources shared by at least some of the s logical processing entities of the second PPM.

### Claim 51 (depends on 50)

The computer system of claim 50, wherein the resource sharing information of the first abstraction indicates that the n logical processing entities of the first PPM share a cache, and wherein the resource sharing information of the second abstraction indicates that at least some of the s logical processing entities of the second PPM share one or more of the following: a processing core, a data pathway, a translation lookaside buffer, and a cache.

### Claim 52 (depends on 41)

The computer system of claim 41,
wherein the first PPM has a single processing core capable of supporting an n number of hardware threads, where n is an integer greater than one; and
wherein the second PPM has an m number of processing cores, wherein m is an integer greater than one, each of the m processing cores capable of supporting a p number of hardware threads, where p is an integer greater than one.

### Claim 53 (depends on 52)

The computer system of claim 52, wherein the first abstraction indicates that the first PPM provides an n number of logical processing entities, and wherein the second abstraction indicates that the second PPM provides an s number of logical processing entities, where s=m times p.

### Claim 54 (depends on 53)

The computer system of claim 53, wherein the operational information of the first abstraction includes resource sharing information indicating one or more resources shared by the n logical processing entities of the first PPM, and wherein the operational information of the second abstraction includes resource sharing information indicating one or more resources shared by at least some of the s logical processing entities of the second PPM.

### Claim 55 (depends on 54)

The computer system of claim 54, wherein the resource sharing information of the first abstraction indicates that the n logical processing entities of the first PPM share one or more of the following: a processing core, a data pathway, a translation lookaside buffer, and a cache, and wherein the resource sharing information of the second abstraction indicates that at least some of the s logical processing entities of the second PPM share one or more of the following: a processing core, a data pathway, a translation lookaside buffer, and a cache.

### Claim 56 (depends on 41)

The computer system of claim 41, wherein the operating system further performs the operations of:
accessing the first abstraction and/or the second abstraction.

### Claim 57 (depends on 56)

The computer system of claim 56, wherein the operational information of the first abstraction includes resource sharing information indicating one or more resources shared by the logical processing entities of the first PPM, and wherein the operational information of the second abstraction includes resource sharing information indicating one or more resources shared by the logical processing entities of the second PPM.

### Claim 58 (depends on 57)

The computer system of claim 57, wherein determining whether to dispatch an execution thread comprises:
determining, based at least partially upon the resource sharing information in the first abstraction and/or the resource sharing information in the second abstraction, whether to dispatch an execution thread to one of the logical processing entities of the first PPM or one of the logical processing entities of the second PPM to be executed thereby.

### Claim 59 (depends on 58)

The computer system of claim 58, wherein the resource sharing information in the first abstraction indicates that the logical processing entities of the first PPM are sharing one or more of the following: a processing core, a data pathway, a translation lookaside buffer, and a cache.

### Claim 60 (depends on 59)

The computer system of claim 59, wherein the resource sharing information in the second abstraction indicates that the logical processing entities of the second PPM are sharing one or more of the following: a processing core, a data pathway, a translation lookaside buffer, and a cache.
