Intel Linux Patch Confirms "Alder Lake" is a Hybrid Core Processor

erek

8-D
2FA
Joined
Dec 19, 2005
Messages
18,650
" Analogous with Arm big.LITTLE, the Intel Hybrid Core technology involves two kinds of CPU cores on a processor die, the first kind being "high performance," and the second being "low power." On "Lakefield," Intel deployed one "Sunny Cove" high performance core, and four "Tremont" low power cores. The low power cores keep the machine ticking through the vast majority of time when processing workloads requiring the high performance cores aren't present. With "Alder Lake," Intel is expected to scale up this concept, with the silicon rumored to feature eight "Golden Cove" high performance cores, and eight "Gracemont" low power ones. The chip is also expected to feature a Gen12 Xe iGPU. "

https://www.techpowerup.com/270163/intel-linux-patch-confirms-alder-lake-is-a-hybrid-core-processor
 
I have the same question about Arm, but I wonder how the OS knows when to schedule processes on the big core.
 
I have the same question about Arm, but I wonder how the OS knows when to schedule processes on the big core.

The OS has no need to know.... your OS shouldn't ever be micro managing like that. Think of it like Android.... it doesn't have to do anything special to know when to switch to a higher performance core. Its hardware level... just like your OS doesn't have to tell your CPU to ramp up the frequency. Software doesn't specifically engage one core out of 4 now.... APIs really don't expose that stuff, and no one is actually writing assembler language code trying to use one core on one specific model of chip. (one of the reasons we developed higher level languages, was so that code would be hardware agnostic)
 
Last edited:
just like your OS doesn't have to tell your CPU to ramp up the frequency.

Then what are all the frequency governors in Linux (and, by extension, Android) for? I thought one of the big things in Zen 2 was that the CPU could ramp its speed up and down instead of letting the OS tell it how fast to go.
 
Then what are all the frequency governors in Linux (and, by extension, Android) for? I thought one of the big things in Zen 2 was that the CPU could ramp its speed up and down instead of letting the OS tell it how fast to go.

lol ya fair point. Of course the exposed bits that hardware manufacturers make are intended to operate within a envelope... in otherwords you can't force a CPU to run at say 1 mhz. They expose those bits to allow software developers to ramp down frequency to sip power. So where the CPU may jump up to full freq a software developer can choose to tell it to not do that, to save power... or to sell more new hardware errr I mean save their batteries (if your apple). The other power state stuff is all based on pre determined envelopes.

https://wiki.archlinux.org/index.php/CPU_frequency_scaling
https://wiki.debian.org/CpuFrequencyScaling

Anyway yes your not wrong you can change power states a CPU supports (when exposed by the Manufacturers Driver)... and in most modern CPUs there is a userspace preset that allows for more direct end user control.

Still software developers do not program things to use one specific core. When software developers create multi threaded software they aren't saying do X on core 1 and Y on core 2... they are simply threading their workloads. So where old code would be immediate execution newer code will be multithreaded. Imagine a elementary school teacher reading a book with a class that we will pretend represents a block of code. The old way of doing things it would have been just one big block of text... no paragraphs, no punctuation.The same book formatted for multi threaded reading... would have paragraphs and punctuation. The teacher could now say Johnny (core 1) read the first paragraph Jane (core 2) read the second ect. That is what most work has been like with old code the last number of years... its been looking for the logical places where that code could be split up, and optimizing it after is mostly about figuring out what bits of completed math are best stored in caches to help other threads complete faster. IE store this bit of common math as it is going to be used by every module, instead of having to recalculate each for every independent thread.

Having said all that who knows perhaps Intel will expose some software flags to make it possible for developers to specify a specific core. My guess is though they won't go that route as making good operation on such a chip revolve around software tweaks is a recipe for disaster. ARM has no such hooks for their CPUs... a phone with a 4x4 config operates in software just like one with a 2x6 config. The software doesn't need to care which cores are being thrown at their work... there is a software driver in the kernel that will control freq envelopes, which in turn will force the hardware to pass work load to the faster cores or not. So its possible for a phone manufacturer to tweak the envelopes a little based on their design. But end software developers don't touch that.

EDIT: so to somewhat answer you question... although I'm simplifying things. As the CPUs hardware scheduler fills up with data to crunch, it makes choices as to which cores to engage. As well as how fast to run them... within the envelope the software calls for. So if its in low power mode it may limit the freq on cores... and push the envelope before it will boost the freq and engage those cores. The hardware scheduler decides. Single threaded code is a pain cause its not broken up properly and is designed to be run in order. This is hard for hardware schedulers to break up. Multi threaded code is broken up so the hardware scheduler can better split the work between cores.
 
Last edited:
Back
Top