Core vs thread
Well, think of going to a concert. There are 4 entry gates (ie: 4 cores in a CPU) where someone validates tickets.
If everyone is well behaved and in line, the 4 entry gates are utilized very efficiently and lots of people are admitted to the concert.
But we know that's not often the case. Sometimes people take time to find their tickets (ie: it takes extra time to decode instructions in a CPU). Sometimes there are data items that have to come out of main RAM (sometimes people need to dump their water bottles and other prohibited items).
The whole idea of hyperthreading is that basically you split things into 8 lines that go to the 4 entry gates. With someone monitoring those lines to make sure everything is in order. As a result, those 4 gates are used very efficiently.
Intuitively this is why there are some workloads which are multi-threaded/multi-processor capable, but don't benefit much, if at all from hyperthreading. Video rendering comes to mind, as video rendering calculations are very highly structured and repetitive.
There are workloads that are very chaotic, which highly benefit from hyperthreading. Heavy multitasking, virtualization, etc. comes to mind.
So the answer to your question heavily depends upon workload, although core for core, its usually better to have real cores, than hyperthreads. But real cores cost a lot more silicon and consume a lot more power. Hyperthreads are a great, relatively low cost compromise to leverage existing resources which may not be optimally utilized. Hyperthreading adds, at best, a few more percent to a CPU in terms of die space and can double some workloads' performance. Doubling the core count doubles the required silicon.
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now