ProcessorHybridInfo
Intel® Raptor Lake (13th/14th Gen) and Alder Lake (12th Gen) provide a performance hybrid architecture combining Performance-cores (P-cores) and Efficient-cores (E-cores). UEFI BIOS orders the active cores on the system from P-cores to E-cores; i.e., if you have 4 P-cores and 4 E-cores, the processor numbers assigned to P-cores will be 0, 1, 2, 3 and the E-cores will be 4, 5, 6, 7. To optimize eRTOS performance on a hybrid architecture, run the ProcessorHybridInfo utility before you design eRTOS applications. You may need to assign (affine) P-cores to those processes/threads with high priority and requiring intensive computing. Assign (affine) E-cores to those processes/threads with low priority and executing background tasks.
Raptor Lake and Alder Lake also provide a new hardware feature called Thread Director, which monitors thread run time instructions to determine a thread’s workload, which is then assigned a class. Thread Director uses its energy and performance core scoring logic to help determine the optimal cores on which to run a given thread.
The ProcessorHybridInfo utility displays each core type, performance capability, and thread class ID for different sets of assembly instructions. You can use this information when deciding which cores to run threads on.
Note: When executing a critical section, E-cores may reduce the speed of P-cores. Some UEFI/BIOS may have the option to disable E-cores.
Instruction set | Class ID |
---|---|
Default |
0 |
Integer Registers |
1 |
AVX/AVX2 |
2 |
Pause |
3 |
Running the Utility
Note: Run ProcessorHybridInfo after the system boots with eRTOS.
In the Command Prompt on eRTOS Console, type: Run ProcessorHybridInfo.ertos
Output
Output |
Meaning |
---|---|
The processor is a hybrid part |
The processor is Intel® Raptor Lake (13th/14th Gen) or Alder Lake (12th Gen). |
Intel Thread Director (ITD) is supported |
The processor has Thread Director capability. |
Intel Thread Director (ITD) is enabled at package scope |
The Thread Director is enabled at package scope by eRTOS. |
Number of classes in hardware feedback structure |
The number of thread characteristic classes in each capability. |
Number of capabilities in hardware feedback structure |
The number of available capabilities (usually 2). |
HRESET Enabled |
Allows history to be reset upon thread switching. |
ProcIndex |
The index in the hardware feed structure for the specified core. |
The processor is not a hybrid part |
The system is not a performance hybrid architecture. |
Example
C:\>run D:\ProcessorHybridInfo The processor is a hybrid part. Intel Thread Director (ITD) is supported. Intel Thread Director (ITD) is enabled at package scope. Number of classes in hardware feedback structure: 4 Number of capabilities in hardware feedback structure: 2 ------------------------------------ Performance cores and Efficiency cores layout. ITD, HRESET, Processor index Core- 0: P_Core, ITD Enabled, HRESET Enabled, ProcIndex 0 Core- 1: P_Core, ITD Enabled, HRESET Enabled, ProcIndex 1 Core- 2: P_Core, ITD Enabled, HRESET Enabled, ProcIndex 2 Core- 3: P_Core, ITD Enabled, HRESET Enabled, ProcIndex 3 Core- 4: P_Core, ITD Enabled, HRESET Enabled, ProcIndex 4 Core- 5: P_Core, ITD Enabled, HRESET Enabled, ProcIndex 5 Core- 6: P_Core, ITD Enabled, HRESET Enabled, ProcIndex 6 Core- 7: P_Core, ITD Enabled, HRESET Enabled, ProcIndex 7 Core- 8: E_Core, ITD Enabled, HRESET Enabled, ProcIndex 9 Core- 9: E_Core, ITD Enabled, HRESET Enabled, ProcIndex 9 Core-10: E_Core, ITD Enabled, HRESET Enabled, ProcIndex 9 Core-11: E_Core, ITD Enabled, HRESET Enabled, ProcIndex 9 ------------------------------------ Performance Capability (0 ... 255), higher values indicate higher performance Core- 0: Class 0: 0x3d, Class 1: 0x48, Class 2: 0x60, Class 3: 0x30 Core- 1: Class 0: 0x3d, Class 1: 0x48, Class 2: 0x60, Class 3: 0x30 Core- 2: Class 0: 0x3d, Class 1: 0x48, Class 2: 0x60, Class 3: 0x30 Core- 3: Class 0: 0x3d, Class 1: 0x48, Class 2: 0x60, Class 3: 0x30 Core- 4: Class 0: 0x3f, Class 1: 0x4a, Class 2: 0x62, Class 3: 0x31 Core- 5: Class 0: 0x3d, Class 1: 0x48, Class 2: 0x60, Class 3: 0x30 Core- 6: Class 0: 0x3f, Class 1: 0x4a, Class 2: 0x62, Class 3: 0x31 Core- 7: Class 0: 0x3d, Class 1: 0x48, Class 2: 0x60, Class 3: 0x30 Core- 8: Class 0: 0x24, Class 1: 0x24, Class 2: 0x24, Class 3: 0x24 Core- 9: Class 0: 0x24, Class 1: 0x24, Class 2: 0x24, Class 3: 0x24 Core-10: Class 0: 0x24, Class 1: 0x24, Class 2: 0x24, Class 3: 0x24 Core-11: Class 0: 0x24, Class 1: 0x24, Class 2: 0x24, Class 3: 0x24 ------------------------------------ Thread class ID and ideal core for each type of ISA instructions running on each core Core- 0: INTEGER: 1, Ideal-Core: 4, AVX2: 2, Ideal-Core: 4, PAUSE: 3, Ideal-Core: 4 Core- 1: INTEGER: 1, Ideal-Core: 4, AVX2: 2, Ideal-Core: 4, PAUSE: 3, Ideal-Core: 4 Core- 2: INTEGER: 1, Ideal-Core: 4, AVX2: 2, Ideal-Core: 4, PAUSE: 3, Ideal-Core: 4 Core- 3: INTEGER: 1, Ideal-Core: 4, AVX2: 2, Ideal-Core: 4, PAUSE: 3, Ideal-Core: 4 Core- 4: INTEGER: 1, Ideal-Core: 4, AVX2: 2, Ideal-Core: 4, PAUSE: 3, Ideal-Core: 4 Core- 5: INTEGER: 1, Ideal-Core: 4, AVX2: 2, Ideal-Core: 4, PAUSE: 3, Ideal-Core: 4 Core- 6: INTEGER: 1, Ideal-Core: 6, AVX2: 2, Ideal-Core: 6, PAUSE: 3, Ideal-Core: 6 Core- 7: INTEGER: 1, Ideal-Core: 4, AVX2: 2, Ideal-Core: 4, PAUSE: 3, Ideal-Core: 4 Core- 8: INTEGER: 0, Ideal-Core: 4, AVX2: 0, Ideal-Core: 4, PAUSE: 0, Ideal-Core: 4 Core- 9: INTEGER: 0, Ideal-Core: 4, AVX2: 0, Ideal-Core: 4, PAUSE: 0, Ideal-Core: 4 Core-10: INTEGER: 0, Ideal-Core: 4, AVX2: 0, Ideal-Core: 4, PAUSE: 0, Ideal-Core: 4 Core-11: INTEGER: 0, Ideal-Core: 4, AVX2: 0, Ideal-Core: 4, PAUSE: 0, Ideal-Core: 4
Related topics: