Dato che è passata quasi una settimana e nessuno è stato in grado di rispondere a questa domanda (probabilmente a causa delle vacanze), cercherò di rispondere comunque.
Penso che la risposta sia sì. Potrebbe essere necessario chiamare lo CPUID
su ciascun core. Una ragione per questo è che non tutti i sistemi (anche x86) oggi sono omogenei.
Ad esempio, ho letto su un forum di overclocking (non riesco a trovare il collegamento) che è possibile mescolare due modelli di processore diversi su alcune schede server dual-socket. La persona aveva un sistema 1366 dual-socket con due diversi processori di velocità. (e diverso modello #s)
Quindi, in questo caso, chiamando CPUID
dipenderà da quale processore il filo era - quindi avrete bisogno di chiamare una volta ogni processore per ottenere tutte le informazioni.
Nei manuali di una delle mie schede madri server, si afferma anche che è consentito mescolare processori di modelli diversi (con alcune restrizioni). E certamente, è possibile mixare due diversi steppings dello stesso modello di processore.
Questa ragione da sola (topologia eterogenea), è già motivo di bisogno di chiamare CPUID
ogni core.
Suppongo che una situazione in cui CPUID potrebbe agire in modo insolito è AMD Fusion, che contiene sia una CPU che una GPU sullo stesso chip. Dovresti dare un'occhiata alla documentazione per maggiori informazioni. Oltre a questo, non vedo perché un core della CPU interna mostrerebbe un CPUID diverso da un altro core. – Polynomial
Oltre alla risposta data, un altro motivo per chiamare CPUID più volte è quando si utilizza l'istruzione rdtsc per le misurazioni delle prestazioni. Tipicamente usi cpuid prima di esso poiché cpuid è un'istruzione 'serializzante' e previene il pipelining, ma cpuid ha anche la brutta abitudine di impiegare più tempo per eseguire le prime volte che viene chiamato (secondo il vecchio manuale di intel su rdtsc), quindi è tipico di Chiamalo alcune volte all'avvio per assicurarti che sia velocizzato, quindi usalo prima di tutte le tue chiamate rdtsc. –