Sorry I am lost. When I was intentionally trying to misunderstand something?You know what I mean. No need to try to look uneducated, or intentionally trying to misunderstand.
I am afraid you are mixing hardware threads with OS threads. There is a difference there.For 12C/24T, at 12T basically you won't be using SMT since there'll only be one T per C. When going above 12T, additional threads will have to share core with some other thread. So perf/thread will be lower compared to when only having 1 T per C. So you can call those two threads sharing the same core SMT threads or whatever. Does not matter what you call it. Of course they are all just threads in OS context.
And this is the point you are missing. What you say is true only for contested resources. But what resources will be contested depends on the code you are running. Therefore the performance degradation will depend on the overall environment. But is not guaranteed to be:But the point is that those two threads will be sharing the resources of one core, so they won't be executing as fast as threads which have a core dedicated to them and do not share it with other threads.
But of course there are corner cases (one is quite popular here) where spamming E cores will win.much slower than e.g. E cores
I mean if SMT was so bad, they wouldn't focus so much in Zen5 for making it easier to get second instruction stream going. Of course, it's server first design, it cares about throughput, but latency hit from SMT is usually negligible and if you empirically find it to be a problem, then you either modify the scheduling algorithm or disable SMT in the BIOS worst case and move on.
Apple of course is another league, it seems they are able to extract enough ILP from single instruction stream that they don't need to care about SMT.
