AMD 3D V-Cache CPU Core Selection by CCD

When CPU Affinity Matters

CPU affinity decides which logical processors a process may run on. By default, Windows lets every process use all of them and moves threads to wherever there is room, and for most software that is the right choice. Setting an affinity takes that choice away from the scheduler, so it only helps when you know something the scheduler doesn’t. These are the cases where it does.

When CPU Affinity Helps

Keeping a Background Job From Crowding the PC

A long encode, compile or render will use every core it is given. Limiting it to some of them leaves the rest free for what you are doing in the foreground, at the cost of the job taking longer. The share is not exact on CPUs with Hyper-Threading or SMT: Two logical processors on the same physical core give far less than two full cores, so pick whole physical cores (or a mix of them) rather than counting logical processors.

If the goal is simply to cap how much CPU a process uses, Process Lasso’s CPU Limiter does that directly, and ProBalance keeps background load from hurting responsiveness without any affinity at all.

Steering Work on Hybrid CPUs

Intel’s hybrid CPUs (12th generation and later) mix performance cores (P-cores) with efficient cores (E-cores). Windows 11 uses hints from the CPU to place threads, but it can still put a game, an audio engine or a latency-sensitive tool on E-cores, or let background work occupy P-cores. Keeping the important process on P-cores, or sending background work to E-cores, can make a clear difference. CoreDirector does exactly this for the processes you choose. For which processors are hybrid and the options side by side, see Intel Hybrid CPUs: Scheduling on P-Cores and E-Cores.

Choosing the Right Chiplet on Multi-CCD Ryzen

Ryzen CPUs with two core complexes (CCDs) pay a latency cost when threads that share data sit on different CCDs, and on the dual-CCD X3D models only one CCD has the extra 3D V-Cache, while the other usually clocks higher. AMD’s driver moves recognized games to the cache CCD, but it doesn’t know every game or application, and some software runs better on the faster CCD. Keeping a program on the CCD it performs best on, and its threads on one CCD instead of spread over both, is one of the clearest wins for affinity or CPU Sets today. See AMD Ryzen X3D CPUs: Keeping Games on the 3D V-Cache CCD for the affected models and a step-by-step setup.

Keeping Heavy Threads Off Shared Cores (SMT)

With Hyper-Threading or SMT, two logical processors share one physical core and its execution units. Windows prefers idle physical cores, but under load two busy threads of the same program can end up sharing a core. Limiting a demanding process to one logical processor per physical core avoids that; Process Lasso’s CPU Affinity menu has a Disable SMT choice for exactly this.

Older Software That Breaks on Many Cores

Some older games and applications crash, stutter or miscount the CPUs when they see more processors than their developers ever tested. Limiting them to a handful of cores is often the only fix, and a persistent rule saves setting it every time they start.

Workstations With NUMA or More Than 64 Processors

On CPUs with several memory domains, such as the Threadripper 2990WX and 2970WX, a process runs best on the cores closest to its memory; CorePrio handles that case. On PCs with more than 64 logical processors, Windows splits them into processor groups and older software only ever sees one group; the Processor Group Extender in Process Lasso lets such software use the whole CPU.

When It Doesn’t Help

  • Chasing turbo clocks: Current CPUs report which of their cores boost highest, and Windows already schedules demanding threads on those preferred cores. Pinning a process to one core can stop Windows from moving it to a faster or cooler one.
  • Avoiding “core hopping”: Windows keeps a thread near the processor it last ran on, so the cache stays warm. Pinning an ordinary application rarely makes it faster.
  • Busy cores: An affinity is a hard limit. If the allowed cores are busy, the process waits even while other cores sit idle.
  • System processes and security software: Don’t restrict them. Windows components, driver services and antivirus expect to run anywhere.

CPU Affinity or CPU Sets?

A CPU affinity is a hard rule: The process runs only on those processors. CPU Sets are a softer, native Windows preference: Windows tries to keep the process on the set, but may schedule it elsewhere when the load requires it. For steering a game to P-cores or a V-Cache CCD, CPU Sets are often the safer choice. System Reserved CPU Sets work the other way round: They keep other software off cores you set aside.

How to Set a CPU Affinity

  • Process Lasso: Right-click a process and choose CPU Affinity, Always, Select CPU Affinity: The rule is applied every time the process starts. (CPU Affinity, Current changes only the running instance.) See CPU Affinities in the documentation and the guide Using Process Lasso to Manage CPU Affinities.
  • Task Manager: On the Details tab, right-click the process and choose Set affinity. The setting lasts only until the process exits.
  • The command line: start /affinity <mask> program.exe starts a program with a given affinity. The CPU affinity calculator gives you the mask, and the ready-to-copy command, for the processors you select.

Whatever you set, check the result: Watch the process in Process Lasso or Task Manager, and remove the rule if it doesn’t help.


Discover more from Bitsum

Subscribe to get the latest posts sent to your email.

Leave a Comments

Bitsum Technologies

Independent Windows software since 2002. We build novel solutions to software performance and automation challenges.