Ale na tom CPU musi fungovat vsechny aplikace (vcetne uz existujicich) a ne jen ty, ktere jsou specialne napsane pro tento CPU. Vetsina vyvojaru ani netusi, jake presne instrukce jeho proces pouziva (skrz ruzne knihovny), natoz aby resili hodne slozitou detekci CPU a pridelovani threadu na jednotliva jadra. Od toho je OS. Tohle je komplexni a velmi tezko resitelny problem. Priklad z praxe - moje soucasne aplikace: Provedou instrukci CPUID a podle vysledku zacnou pouzivat podle potreby podporovane instrukce (SSE2-AVX512). Co se stane, kdyz se takova aplikace spusti na CPU s jadry s ruznou instrukcni sadou ? Kdyz bude spustena na malem jadre, CPUID vrati napr. jen SSE41 a tak AVX nebude nikdy vyuzito (ani kdyz ji OS prepne na velke jadro). Horsi to bude, kdyz se spusti na velkem jadre. Pak zdetekuje napr. AVX512 a ve chvili, kdy ji OS prepne na male jadro, tak bud bude crash, nebo to bude osetreno v OS a po vyjimce se presune "navzdy" na velke jadro. Ale uz nikdy nepojede na zadnem malem, prestoze bude praci rozdelovat do poctu threadu odpovidajicim velkym+malym jadrum (podle CPUID). V obou pripadech pobezi neefektivne. A to je jen jeden maly konkretni priklad z praxe. Tech problemu bude vic. Jedine standardni reseni je jednotna instrukcni sada. Pro specialne naspane aplikace muze existovat jeste alternativni reseni se stinovymi CPUID a vlastnim rizenim procesu jak popisujete, ale s tim se ja teda drbat nebudu :).