Как ОС управляет ядрами CPU?
Отключение ядер процессора происходит в BIOS, способы различаются в зависимости от модели и производителя. Обычно это установка битов в каком-либо PCI Config Space регистре чипсета.
На этапе запуска компьютера, активно только 0 ядро (0 поток в случае SMT), оно начинает исполнятся с адреса FFFFFFF0, где на этот момент находится образ BIOS (UEFI). Остальные ядра (потоки) находятся в состоянии WFS (Wait For Startup Inter-Processor Interrupt, ожидание внутрипроцессорного прерывания начала работы). В процессе загрузки, происходит настройка механизма многопоточности самой операционной системы, контексты, очереди, таблицы и так далее. В том числе для каждого процессора (потока) создаются Idle циклы, в которых каждый будет крутиться в ожидании новых задач. Как только все настроено, через SIPI (Startup Inter-Processor Interrupt) пробуждаются остальные ядра и им передается адрес этого самого Idle цикла. 
А потом операционная система добавляет в очередь задач задачи, требующие выполнения и при очередном периодическом прерывании у ядра происходит смена контекста и начинает выполняться эта задача.. как именно это устроено в Windows и кто решает, какому ядру назначить задачу - не знаю. Где-то в ядре (ntoskrnl.exe)
Про кеш зависит от процессора. Например, в Ryzen кеш общий для процессорного блока из четырех ядер. В модели 1500 4 ядра, отключено по 2 ядра у каждого блока, при этом кеш не урезается, а вот в 1400 ядер тоже 4, но отключена одна из двух сборок целиком, поэтому кеш вдвое меньше
для управления питанием используется внешний для процессора модуль, который управляется записью соответствующих битов по соответствующим адресам.
В создании отдельной команды цпу нет смысла.