The question was this:
As to the rest, I completely agree with you. The main reason why I even bother replying to this kind of nonsense is to try to stop a flow of misinformation. Even if it's a futile effort.
Anyway, I can't wait to get my 16" M1 and finally do some proper GPU programming 🙂
So the issue of interest is: "Do we have a clear picture of how good utilisation of Firestorm cores tends to be with 1 thread and how much could potentially be left on the table for something like SMT"?
Bottom line (and I have said this elsewhere in many places) SMT is a TERRIBLE idea if you care about real performance. It's tolerable if you are engaged in weird legal SW licensing games (which IBM is apparently doing with POWER) but otherwise, no!
The thing is -- what makes CPUs fast is vast amounts of locality. Cache data is reused, registers are reused, branch data is reused, etc etc. All this works well because of locality. As soon as you have an independent thread running, all that locality disappears. The simplest way to think about this is: if both threads are sharing your L1, each thread essentially sees only half the L1. And so you thought you were providing extra execution while thread 1 misses L1 and goes out to RAM, but in fact you aren't ONLY doing that, you're also SUBSTANTIALLY increasing the numbers of times thread 1 has to go out to RAM.
You can claw back some of the performance by running most of your structures in a much less power efficient away, but it's just never really worth it. Look at Intel. They have been at this for 20 years. But in all that time, SMT performance hasn't moved much -- two SMT threads gives you about 1.3x the performance of a single thread -- at the cost of MASSIVELY HIGHER energy. What's the point? It's just a stupid design point that keeps going because of inertia.
Just do what Apple does! Make the P core crazy fast (which you can do, at very low energy -- IF you aggressively exploit all the locality in an instruction stream -- and of course that's what my 300+ page document is all about); and if you also want the ability to run lots of slower threads in a smaller amount of area, add some E-cores.
(Apple does not really use E-cores in this way, as "throughput/area" maximizers, but they could, if they ever wanted to, for example, create internal server cores running 128 or 256 threads per SoC.)
SMT lives alongside "RISC vs CISC" as a zombie from 20+ years ago, ideas that are only argued about because they are easy to grasp with a minimal knowledge of current design concerns. You can spend your time in silly arguments about what seemed like a good idea 20 yrs ago (in a world where the average CPU used perhaps 1000th as many transistors as it could use today), or you can spend that time reading, learning, thinking about how modern CPUs are designed...