When it comes to multi core processes, I had a feeling when I was a kid imagining how the CPU would solve a multi core task... It was like a bus full of data with 8 wheels and each seems to be spinning at the different speed and who's that guy doing the driving?
Mind you, my knowledge came from the 1990s. Back then my teacher told me something like: if you have a problem needing answer C which you need A and B to solve then you assign CPU 1 to solve A and CPU 2 to solve B and CPU 1 to solve for C. But at the time, I couldn't come up with anything needing 2 things to be solved at same time so I was like "Can't I just get CPU 1 to solve A then B then C?"
When it comes to multithreading and multicore executing think of it this way
You have a baking recipinet for 1 cake. but 2 person doing it.
you would find stuff on that recipie that can be done at the same time and split out that way but not all thing can be done out of order or at the same time. Sometimes you have to wait for the dough to rise beofre you can begin the next step.
if you code has a lot of those dependencies on prior steps than 2 cores cant really do anything about more than 1 core can do.
if you code has a lot of stuff that can be done independently then it scales well.
What goes wrong when you toss SMT into it is that you can give each person 2 part of the recipie now.
Now lets say you have 4 people. and 4 parts of the reciepie that can be done individueally.
sometimes only 2 people get all 4 pieces rather than spreading it out on all 4 people. and that introduces a loss in performance.
off coase if you had 8 pieces of that recipiet you could give each of the 4 person 2 pieces each and everyone would be working and tryin to squeeze in both pieces of recipiet as fast as possible.
in that case it was a benefit to give a person 2 pieces
problem is that games genearlly are a recipie that a not that easy to split inot multiple pieces and trefor often end up on the former sitatuion where a piece of the recipiet is assinged to a person with alread a piece rather than a free person.
ive seen game performen up to 20% boost in raw FPS from fixing this with my tool (or setting affinity on your own)
What sometimes happens is that only 2 people