Windows 10 since some time in 2019 has had a scheduler that's 'architecture aware'. Below is linked an interesting article about how it helps with a Lakefield notebook processor. Being an advanced hybrid topology I imagine it's pretty much an extreme example but I'd have to imagine it has the same kind of 'smarts' with later Intel CPU's even if somewhat simpler topology.Let’s say that we have a program that only uses a single core, which core would this program use if my CPU has multiple cores? Would it use the first core, Core 0?
I use an I7-11700K and mainly work in After Effects
That depends on the OS. The OS schedules which cores to use. Some BIOS and CPU microcode can provide help to the OS in determining which core can clock highest. But if the OS doesn't have the smarts in the scheduler to use those hints, it won't.Let’s say that we have a program that only uses a single core, which core would this program use if my CPU has multiple cores? Would it use the first core, Core 0?
I use an I7-11700K and mainly work in After Effects
Windows 10 since some time in 2019 has had a scheduler that's 'architecture aware'. Below is linked an interesting article about how it helps with a Lakefield notebook processor. Being an advanced hybrid topology I imagine it's pretty much an extreme example but I'd have to imagine it has the same kind of 'smarts' with later Intel CPU's even if somewhat simpler topology.Let’s say that we have a program that only uses a single core, which core would this program use if my CPU has multiple cores? Would it use the first core, Core 0?
I use an I7-11700K and mainly work in After Effects
That's what Intel Turbo Boost Max Technology 3.0 does.Ryzen CPU's use a core ranking system, determined by the binning process AMD uses, which is communicated to the OS at startup. When monitoring CPU core and thread utilization while processing workloads with HWInfo64 I can actually 'see' how the scheduler is favoring the higher ranked CPU cores.
Windows allows for application wide priority and affinity but also for thread specific ones, that's how the scheduler knows which app and thread to run on the fastest cores.I can't see exactly which process thread is on each core though so can't tell if it's getting the optimum pairing of thread to core for maximum performance. I suppose that would take some effort by the programmer of the software as I don't know how the scheduler can know which of several processing threads a process launches would more significanlty affect over-all performance. Something which I can imagine would change at different phases of some processes too.
...
You can even change them yourself with apps like process hacker/lasso and many more in case the programmers screwed up or just used the default compiler settings.