Skip to content

Conversation

@ROBdk97
Copy link
Contributor

@ROBdk97 ROBdk97 commented Oct 30, 2025

Add Intel Hybrid CPU Detection with P-Core/E-Core Affinity Support

Overview

Implements CPU affinity detection for Intel 12th-15th generation hybrid processors, enabling applications to distinguish between Performance cores (P-cores) and Efficiency cores (E-cores).

What's Changed

  • Added comprehensive Intel hybrid CPU detection for 100+ processor models:
    • 12th Gen (Alder Lake) - Desktop and Mobile
    • 13th Gen (Raptor Lake) - Desktop and Mobile
    • 14th Gen (Raptor Lake Refresh) - Desktop and Mobile
    • 15th Gen (Arrow Lake) - Desktop variants
  • Automatic P-core/E-core thread mapping based on CPU model
    • P-cores: Support Hyper-Threading (2 threads/core) on 12th-14th gen
    • E-cores: Single-threaded (1 thread/core)
    • Arrow Lake (15th gen): No Hyper-Threading on P-cores
  • CPU set creation for separate "P-Cores" and "E-Cores" affinity masks
  • Verification logging to warn when detected thread counts don't match system

Previous Behavior

Only AMD dual-CCD CPUs were supported for custom CPU set detection.

Testing Status

⚠️ REQUIRES TESTING ON ACTUAL HARDWARE
Thread mapping and affinity masks have been implemented based on Intel specifications but have not been verified on physical Intel hybrid CPUs. Please test on 12th-15th gen Intel systems to confirm correct core identification.

Closes #3 - Support Intel P-Core/E-Core preference

Technical Implementation

Uses dictionary-based lookup matching CPU model strings to P-core/E-core thread counts, with automatic CPU set mask generation for Windows affinity APIs.

Implements CPU affinity detection for Intel 12th-15th gen hybrid
processors with Performance and Efficiency cores.

⚠️ Requires testing on actual Intel hybrid hardware.
@SimonvBez
Copy link
Owner

Thanks for making some efforts already on these requested features/changes! I massively appreciate it.
Right now I'm still busy at work, but I promise to look at all your PRs very soon. Hopefully (some) in a few hours tonight.

TODO: This logic still has to be applied to new CPU Sets created through the UI.
@SimonvBez
Copy link
Owner

I have made it so that (at least the automatically generated sets when there is no config file) will use P and E suffixes in the names, further clarifying what type of core each CPU is.
I'll still have to make it so that this suffix scheme will also be used when creating a new set through the Add button in the UI. So it's gonna need a bit of restructuring first.
But I still wanted to push this WIP to show what I was up to.

@SimonvBez
Copy link
Owner

SimonvBez commented Nov 1, 2025

After lots of research and even more development around the (awful) win32 api, I have been able to fully automate the detection of CCDs, X3D cache as well as P/E cores!
Progress of the P/E and thread number detection can be seen in e8ea433 on the code-restructure branch.
Implementing the CCD/X3D generation I will work on next.

EDIT: Default masks for P/E-cores and (X3D) multi-CCDs have now been fully implemented in d404d30

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Feature Resquest] Support Intel P-Core/E-Core preference

2 participants