FALC0N :
palladin9479 :
Anyhow the 8xxx series is indeed an eight core CPU by the actual definition of a core. It has eight independently externally addressable general purpose processing units. The cores do not share ALU's which are the centrally addressable component of general purpose processors. The SIMD FPU's in x86 are technically co-processors with separate registers, stacks and pointer, they just happen to exist on the same die. L2 cache has been shared amongst cores before so that's nothing new. The only controversial part is them building one large front end decoder / scheduler for each module vs two independent decoders / schedulers. This isn't unheard of or new, but it's not something you typically do in a consumer orientated general purpose processor as getting it right requires the code to be tightly integrated with the metal. From what I've heard SR did quite a bit of work up front to widen up this part.
Your a little off here.
There is no set definition for what constitutes a cpu "core". At least not that I am aware of. Thereby invalidating most of your argument.. I found the part about the front end and cache particularly questionable since the L2 and L3 cache are not a requirement for a functioning processor but the front end is. Yet you concede the entire front end is "controversial", while treating it as if its of equal or lesser importance than the cache.
Yes, the shared front end isn't new, your right about that. But you neglected one key point. On those server side parts that use multiple integer cores and shared front ends, the entire "module", to borrow AMD parlance, is considered the core, and not each individual integer execution engine. I would cite the IBM Power 7 as an example. Even AMD labeled their current bulldozer "modules" as cores in their original Bulldozer patent submission.
I mentioned the L2 because some folks like to say that because it's shared at the module therefor it's not a "true core". Also RISC based systems don't require nearly as complex a front end as x86 does, I was referencing some really old super computer CPU's from the 80's and early 90's where they had shared MMU's and schedulers but separate processing units.
The concept of "core" has to do with some old engineering terms that have since been twisted into marketing terms, similar to the term "IPC". Core = "core processing engine / element" and is referencing the central part of the "CPU", back when CPU's consisted of many separate elements on different chips / cards. There had to be a way to differentiate between them all when programming for mainframes. Since the advent of superscalar computing there needs to be some definition that engineers can use to prevent miscommunications, that's what I used above. Independently externally addressable general processing element. It's the externally part that gets people, you can have as many internal units as you want, doesn't mean anything until you get outside the CPU from the software's PoV.
Also a note on instructions, we use the term "integer" but that doesn't mean the same thing for humans as it does machines. "Integer" is any instruction who's operand is a single number, either whole or with a fixed decimal place. That is because CPU's only know binary math and everything is just a combination of adding, subtracting or comparing 1's and 0's, there is an assumption at the hardware level on how long each operand is. So integer = vector = general purpose computing instructions. Floating Point Coprocessors where special dedicated chips that could take variable length integer operands at the hardware level, up to 80-bits long in the case of the 8087. At that time there was very little need (even now there is less need) for a floating point integer operation, only mathematics that require extreme precision. Eventually the role of the FP Coprocessor was assumed by a vector coprocessor, we kept the name but the mechanics have dramatically changed.
That long bit is required to understand why a shared scalar SIMD coprocessor (FPU) isn't a big deal when defining whether something is a "core" or not. It's a coprocessor not a general purpose processor. So it's down to the number of externally addressable independent integer units, which is four for Intel i5/i7 and eight for fx8xxx. HTT doesn't work as it's not an independent integer unit but a set of three integer units that share two register stacks with a single scheduler / decoder unit.