É dificilmente documentado e depende em grande parte de uma plataforma. Para x86, o próximo ID disponível é atribuído à CPU na função generic_processor_info()
Portanto, para x86, os IDs da CPU dependem da ordem em que chamaríamos essa função. Ele é chamado quando o APIC (controlador de interrupção) é inicializado, enquanto as configurações de APIC são obtidas da tabela ACPI MADT e as tabelas da ACPI são fornecidas pelo BIOS.
Você pode tentar decodificá-las usando as ferramentas da ACPI ( acpica-tools
package no CentOS):
# acpidump > acpi.dat
# acpixtract -a acpi.dat
# iasl -d apic.dat
...
# cat apic.dsl | awk -F: '/Subtable Type/ { st = $2 }
/Processor ID/ { id = $2 }
/Processor Enabled/ { print id, $2, st } '