
Originally Posted by
JF-AMD
No, it is actually a different design philosophy. AMD believes that based on the current technologies, the best way to solve multi-threaded problems is with more threads over more discrete cores.
In every architecture there will be shared and discrete components (look at L3 caches and memory controllers today). Within the integer core you can make resources either shared or discrete.
Shared resources need to be wide enough to allow for more throughput without bottlenecks or contention.
The challenge with hyperthreading (or SMT in the more generic sense) is that it's philosophy is about "filling the pipeline when one thread stalls" and not about driving better efficiency. In a perfectly efficient system, SMT would not be needed because there would be no gaps in the pipeline. (this world does not exist).
Think of SMT like carpooling. It may appear to be more efficient for 2 people to carpool to work and save money, but that depends on how far they live from each other and how far they live from work. Clearly if they live 3 miles apart and work is only 1 mile away, carpooling becomes less efficeint.
Having seperate cars may appear to be less efficeint, but if the car are hybrids and the carpool car was an SUV, suddenly the math starts to make sense.
The key with our architecture is that there are always cores always available (up to 16 per CPU). You won't find a case where you have 16 cores but you can only run 8 threads because the others are waiting for a chance to "jump in."
Long term, over time, you want to drive to greater CPU efficiency. Every time you increase efficiency with real cores, you have the potential to get more overall throughput. Every time you increase efficiency on SMT you may simply "squeeze the balloon." More efficiency in the primary thread means less opportunity for the SMT thread to "jump in" so you get a net zero gain in throughput.
Bookmarks