While I do agree that what we normally refer to "cores" are just the integer core of the Chip, there is a lot more to a "core" than just the integer unit.
The reason why the Bios for a FX chip shows 8 core is simply because of it having 8 integer units.
But the issue with the FX chip is that two integer chips per module shares resources. In a Module the two Integer units share the fetch and instruction decoder. This is something that each single "Core" would normally have. You wouldn't have two "Cores" sharing the front end.
This shared front end is really a bottleneck if not able to feed both integer units 100%, which clearly did not happen. In fact while AMD made big gains with Excavator, we never saw a high end product using those cores.
While I partially agree, shared resources cannot determine amount of cores. Since virtually every CPU that has more than single core have shared resources, at least some way.
Easiest example is memory controller that is almost every time shared with some or all cores. Another example is L3 or even L2 cache. Intel's Core 2 shares L2 cache with two cores, most modern CPU's and AMD's Phenom/Athlon64 etc do not. Core 2 L2 cache is very vulnerable to cache pollution and even leaving that out of equation, Core 2 L2 cache performs much worse with two cores than with one core. Therefore we can easily argue Core 2 CPUs are not dual core because they share L2 cache. Normally core has own L2 cache, this is very similar example of Bulldozer's shared front end.
So I don't agree. CPU's always share something that almost every time mean dual core performance is not single core performance *2.
Excavator have also shared front end (fetch). How does that affect on core count?
On top of the shared front end they share a single FPU. Normally in a "Core" there is a single FPU and a single integer unit. AMD's Module had two integer units and a single FPU. In later revisions on the Microarch, the FPU was made bigger and had the ability to act as two independent FPU's or a single large unit.
Like I stated above, there are many examples where "normally" something exists or does not exist. And then there are exceptions. If only "normal" cores count, we probably have only single core CPU's right now.
The last big issue was the shared L2 Cache and limited amount of L1 Cache. Unlike most "Cores" where the single integer units has it's own dedicated L2 Cache. In AMD's Module two integer units share a single pool of L2 cache. The amount of L2 cache was pretty small per module considering the two integer units.
So while the FX Chip does have 8 integer units, it only has 4 modules. And the modules are configured more like traditional cores we come to think of. A Core being a single integer unit and a floating point unit with a dedicated front end and backend. A integer unit by itself is not consider a core.
Bulldozer had quite big L2 cache, 2MB total or 1MB per integer unit is pretty big. That's double vs Zen2 or quadruple vs Sandy Bridge.
Like I said, you can have infinite definitions for "core". You may well define core must have straight access to system memory, that each core must have FPU, that each core must have own L2 cache, that each core must have...
Problem is that integer unit simply cannot work just itself, it needs much more. And Bulldozer integer units have everything it needs to work as a core.
The bottlenecks put in place in the FX Arch kept the chips from performing like a real 8 core chip. These are Quad Module chips.
Integer units performance most of the general purpose computing, and these are the core Window's looks at for core count. This is where most of the processing is done. The only issues is being able to feed data into both integer units without slowdown, the module idea could have worked if AMD kept pushing it. But it really is a picky design and is a better idea on paper than it is in real life.
We never got a high end Excavator chip, so we have no idea if AMD was able to help the balance issue.
Quad module but also octa core. No matter how badly it performs, you can:
- Disable 4 cores and still have 8 cores
- Execute 8 threads simultaneously
I consider those two things more than enough to prove FX-8350 is octa core. Because on SMT CPU you cannot do first one (unless counting logical cores as cores).
AMD was supposed to have Excavator successor where problems were solved but since most efforts were put on Zen, we never saw what FX series could be. Also Bulldozer was at least third major architecture after K8. Those two (or more) never saw light. That also explains why FX was probably rushed one.