Originally Posted by gapottberg
Lol...my quote looks as if instead of agreeing with someone I am being confrentational.
Anyways...i recently came up with a good analogy of how to explain the difference between FX and Hyperthreading. Admitedly stolen in part from a LTT video on the topic but expanded, but expanded some.
Imagine a candy bowl full of a mix of various types of candy. Hard candy, soft candy, big candy, small candy. This bowl represents a task the CPU needs to complete.
Now imagine a person being told to eat the candy as fast as they can. This person represents a CPU. However not all CPUs are created equal. And niether are people.
Let's first look at an intel CPU with Hyperthreading. Looking at a single core we find it has one pipeline for completing tasks...but two for schedualing them. The hyperthreading acts like 2 hands keeping the cpu mouth fes. This is essentially what hyperthreading does. It keeps the CPU fed with tasks to complete. Thus an intel CPU is like a single person with 1 mouth and 2 hands stuffing their face with every type of candy they can eat.
Every core an intel processor has adds a potential person to the task of cleaning out the bowl as long as its a big enough bowl to accomadate them all. Size of the bowl represents how well threaded the task is. A bigger bowl can fit more workers around it.
Now lets look at an AMD FX module.
The FX module is a wierd siamese twin looking person. This person has 2 heads, two mouths, and two hands. One hand can feed each mouth...but there is one problem. One of the two twins hates chocolate. They will not eat any candy with chocolate in it. They will however use their hand to help feed the other head any chocolate candies they happen to pick up. Any other candy is fine for them to eat themself. Chocolate candy reptesents floating point operations in our analogy. Since the Module has a shared floating point unit...the CPU sort of acts like it only has one mouth even though there are two in some cases.
You can see from this analogy that in many cases the twins will mow through a bowl of candy faster than a normal two handed person would because two mouths are better than one when it comes to eating quickly. The same is true for CPU tasks.
However this is only partially true, and for bowls with less chocolate candy in them specificly. Too much chocolate and we basicly behave like a hyperthreaded single core CPU. Two hands but only one mouth. That is still worst case scenario though, and is only completely true in very specific workloads. The fewer chocloate candies in the bowl, the more efficient the FX becomes when compared to a normal hyperthreaded core.
There is more too it than this, as the individual effeciency of the cores makes a difference too. If one of the people in our analogy has a wold record for eating the most buffalo wings in 5 min...then they might be better at getting through a bowl of candy too. IPC or instructions per clock are not really presnet in the analogy above but they do matter. In many cases an Intel has an edge here and is a more "effecient eater" so to speak.
It's still a good analogy that shows why the freaky siamese style FX module is indeed a true 4, 6, or 8 core processor...and how it differes from a hyperthreaded one in some curious ways that can given similar IPC... make it faster at some tasks.