Why does the non-hyperthreading enabled CPU claim it has hyperthreading

cpuhyper-threading

I was checking my processor for the aesni (hardware aes, "aes" flag) when I discovered the "ht" flag. This, on i7 processors denotes the CPU's ability to do hyperthreading, however, since I own a i5-4690K, it is my understanding this shouldn't happen.

here is my CPU flags as denoted by /proc/cpuinfo

flags       : fpu vme de pse tsc msr pae mce
cx8 apic sep mtrr pge mca cmov pat pse36 clflush
dts acpi mmx fxsr sse sse2 ss ht    <--------------- Hyperthreading flag
tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc
arch_perfmon pebs bts rep_good nopl xtopology
nonstop_tsc aperfmperf eagerfpu pni pclmulqdq
dtes64 monitor ds_cpl vmx est tm2 ssse3 fma cx16
xtpr pdcm pcid sse4_1 sse4_2 x2apic movbe popcnt
tsc_deadline_timer aes xsave avx f16c rdrand
lahf_lm abm arat xsaveopt pln pts dtherm
tpr_shadow vnmi flexpriority ept vpid fsgsbase
tsc_adjust bmi1 avx2 smep bmi2 erms invpcid

Why does this happen? Is this maybe due to the Core series processors all sharing pretty much identical dies? Why do they ship with faulty flags?

for more explaination, here is my lscpu output

Architecture:          x86_64
CPU op-mode(s):        32-bit, 64-bit
Byte Order:            Little Endian
CPU(s):                4
On-line CPU(s) list:   0-3
Thread(s) per core:    1
Core(s) per socket:    4
Socket(s):             1
NUMA node(s):          1
Vendor ID:             GenuineIntel
CPU family:            6
Model:                 60
Model name:            Intel(R) Core(TM) i5-4690K CPU @ 3.50GHz
Stepping:              3
CPU MHz:               3500.136
CPU max MHz:           3900.0000
CPU min MHz:           800.0000
BogoMIPS:              6999.62
Virtualization:        VT-x
L1d cache:             32K
L1i cache:             32K
L2 cache:              256K
L3 cache:              6144K
NUMA node0 CPU(s):     0-3

Best Answer

The ht flag indicates it supports the hyper-threading specification. This specification doesn't require the CPU to actually support hyper-threading, so long as it supports the specification's mechanism for reporting the inability to support actual hyper-threading.

Related Question