union{...}cpu_id_t
contains architecture specific info. Use cpu_id_t::architecture to know which member is valid.
cpu_affinity_mask_tcpu_id_t::affinity_mask
bitmask of the affinity ids this processor type is occupying
cpu_architecture_tcpu_id_t::architecture
contains the CPU architecture ID (e.g. ARCHITECTURE_X86)
charcpu_id_t::brand_str[BRAND_STR_MAX]
contains the brand string, e.g. 'Intel(R) Xeon(TM) CPU 2.40GHz'
charcpu_id_t::cpu_codename[CODENAME_STR_MAX]
The brief and human-friendly CPU codename, which was recognized.
Examples:
+--------+--------+-------+-------+-------+---------------------------------------+-----------------------+
| Vendor | Family | Model | Step. | Cache | Brand String | cpu_id_t.cpu_codename |
+--------+--------+-------+-------+-------+---------------------------------------+-----------------------+
| AMD | 6 | 8 | 0 | 256 | (not available - will be ignored) | "K6-2" |
| Intel | 15 | 2 | 5 | 512 | "Intel(R) Xeon(TM) CPU 2.40GHz" | "Xeon (Prestonia)" |
| Intel | 6 | 15 | 11 | 4096 | "Intel(R) Core(TM)2 Duo CPU E6550..." | "Conroe (Core 2 Duo)" |
| AMD | 15 | 35 | 2 | 1024 | "Dual Core AMD Opteron(tm) Proces..." | "Opteron (Dual Core)" |
+--------+--------+-------+-------+-------+---------------------------------------+-----------------------+
uint8_tcpu_id_t::detection_hints[CPU_HINTS_MAX]
contain miscellaneous detection information. Used to test about specifics of certain detected features.
See CPU_HINT_* macros below.
Seealso
Hints
int32_tcpu_id_t::ext_family
CPU display ('true') family (computed as BaseFamily[3:0]+ExtendedFamily[7:0])
Deprecated
replaced by x86_id_t::ext_family (prefix member with x86., e.g. id.x86.ext_family)
int32_tcpu_id_t::ext_model
CPU display ('true') model (computed as (ExtendedModel[3:0]<<4) + BaseModel[3:0]) For detailed discussion
about what BaseModel / ExtendedModel / Model are, see Github issue #150.
Deprecated
replaced by x86_id_t::ext_model (prefix member with x86., e.g. id.x86.ext_model)
int32_tcpu_id_t::family
CPU family (BaseFamily[3:0])
Deprecated
replaced by x86_id_t::family (prefix member with x86., e.g. id.x86.family)
cpu_feature_level_tcpu_id_t::feature_level
contains the CPU feature level, also know as microarchitecture levels (x86) and architecture version
(ARM)
uint8_tcpu_id_t::flags[CPU_FLAGS_MAX]
contain CPU flags. Used to test for features. See the CPU_FEATURE_* macros below.
Seealso
Features
int32_tcpu_id_t::l1_assoc
Cache associativity for the L1 data cache. -1 if undetermined
Deprecated
replaced by cpu_id_t::l1_data_assocint32_tcpu_id_t::l1_cacheline
Cache-line size for L1 data cache. -1 if undetermined
Deprecated
replaced by cpu_id_t::l1_data_cachelineint32_tcpu_id_t::l1_data_assoc
Cache associativity for the L1 data cache. -1 if undetermined
int32_tcpu_id_t::l1_data_cache
L1 data cache size in KB. Could be zero, if the CPU lacks cache. If the size cannot be determined, it
will be -1.
int32_tcpu_id_t::l1_data_cacheline
Cache-line size for L1 data cache. -1 if undetermined
int32_tcpu_id_t::l1_data_instances
Number of L1 data cache instances. -1 if undetermined
int32_tcpu_id_t::l1_instruction_assoc
Cache associativity for the L1 instruction cache. -1 if undetermined
int32_tcpu_id_t::l1_instruction_cache
L1 instruction cache size in KB. Could be zero, if the CPU lacks cache. If the size cannot be determined,
it will be -1.
Note
On some Intel CPUs, whose instruction cache is in fact a trace cache, the size will be expressed in K
uOps.
int32_tcpu_id_t::l1_instruction_cacheline
Cache-line size for L1 instruction cache. -1 if undetermined
int32_tcpu_id_t::l1_instruction_instances
Number of L1 instruction cache instances. -1 if undetermined
int32_tcpu_id_t::l2_assoc
Cache associativity for the L2 cache. -1 if undetermined
int32_tcpu_id_t::l2_cache
L2 cache size in KB. Could be zero, if the CPU lacks L2 cache. If the size of the cache could not be
determined, it will be -1
int32_tcpu_id_t::l2_cacheline
Cache-line size for L2 cache. -1 if undetermined
int32_tcpu_id_t::l2_instances
Number of L2 cache instances. -1 if undetermined
int32_tcpu_id_t::l3_assoc
Cache associativity for the L3 cache. -1 if undetermined
int32_tcpu_id_t::l3_cache
L3 cache size in KB. Zero on most systems
int32_tcpu_id_t::l3_cacheline
Cache-line size for L3 cache. -1 if undetermined
int32_tcpu_id_t::l3_instances
Number of L3 cache instances. -1 if undetermined
int32_tcpu_id_t::l4_assoc
Cache associativity for the L4 cache. -1 if undetermined
int32_tcpu_id_t::l4_cache
L4 cache size in KB. Zero on most systems
int32_tcpu_id_t::l4_cacheline
Cache-line size for L4 cache. -1 if undetermined
int32_tcpu_id_t::l4_instances
Number of L4 cache instances. -1 if undetermined
int32_tcpu_id_t::model
CPU model (BaseModel[3:0])
Deprecated
replaced by x86_id_t::model (prefix member with x86., e.g. id.x86.model)
int32_tcpu_id_t::num_cores
Number of CPU cores on the current processor
int32_tcpu_id_t::num_logical_cpus
Number of logical processors on the current processor. Could be more than the number of physical cores,
e.g. when the processor has HyperThreading.
cpu_purpose_tcpu_id_t::purpose
processor type purpose, relevant in case of hybrid CPU (e.g. PURPOSE_PERFORMANCE)
structcpu_sgx_tcpu_id_t::sgx
contains information about SGX features if the processor, if present
Deprecated
replaced by x86_id_t::sgx (prefix member with x86., e.g. id.x86.sgx)
int32_tcpu_id_t::sse_size
SSE execution unit size (64 or 128; -1 if N/A)
Deprecated
replaced by x86_id_t::sse_size (prefix member with x86., e.g. id.x86.sse_size)
int32_tcpu_id_t::stepping
CPU stepping
Deprecated
replaced by x86_id_t::stepping (prefix member with x86., e.g. id.x86.stepping)
charcpu_id_t::technology_node[TECHNOLOGY_STR_MAX]
contains the technology node string, e.g. '32 nm'
int32_tcpu_id_t::total_logical_cpus
The total number of logical processors. The same value is available through cpuid_get_total_cpus.
This is num_logical_cpus * {total physical processors in the system} (but only on a real system, under a
VM this number may be lower).
If you're writing a multithreaded program and you want to run it on all CPUs, this is the number of
threads you need.
Note
in a VM, this will exactly match the number of CPUs set in the VM's configuration.
cpu_vendor_tcpu_id_t::vendor
contains the recognized CPU vendor
charcpu_id_t::vendor_str[VENDOR_STR_MAX]
contains the CPU vendor string, e.g. 'GenuineIntel'