View Single Post
Old Dec 20, 2011, 06:12 PM   #85
seronx
500 Posts
 
seronx's Avatar
 
Join Date: Jul 2010
Location: USA, Arizona, Maricopa
Posts: 940 (0.89/day)
Thanks: 36
Thanked 234 Times in 168 Posts

System Specs

Quote:
Originally Posted by cdawall View Post
I count 4 modules (cores)
Those are 8 cores just looking at that you wouldn't notice the repeated alu/agu subsets and the dedicated datapaths each one have

Quote:
Originally Posted by abinstein
You CLAIM a core is <whatever you claimed> but unfortunately what you claimed is not true.

What has always been the meaning of a "core" is the circuit used for the management of a thread and its memory context. This usually includes the datapath, control, and bus. This usually excludes the caches and accelerators (incl. FPU).

To be more precise, a processor can be partitioned into the following functional units: data cache, instruction data, { control unit, instruction bus, data bus, (integer) datapath } and (floating point) accelerator datapath. Those inside the {} above form a "core". You may ask: why is integer datapath special? Because any process (thread + memory context) is *always* managed by the integer datapath. Any branch instruction, ILP, OOO, speculation, is performed by the integer datapath.

So the question to ask is how many sets of the {} above does a Bulldozer module have? The answer is 2. There are two cores. This has nothing to do with marketing. It's a technical definition.

Now, you don't need to like this definition. You can be bone headed enough to insist on your own definition of core. That is fine. Just like you can insist 1+1=1. Perhaps you are right in an alternative naming convention (if `+' means the logic-or to you), but you should at least understand that a Bulldozer module is said to have "two cores" for very with sound technical reasons.
Quote:
Originally Posted by cdawall View Post
The threads don't compete all hyperthreading does is allow another set of instructions to be sent down the pipeline. It was originally a band-aid for Intel's long pipelined netburst based chips. AMD's new design gave you 2 separate threads something Hyperthreading can never do.
Hyperthreading competes for the execution resources....

Quote:
Originally Posted by cdawall View Post
Each module can only use its 2MB L2 cache however the module could use the entire 8MB L3 if it needed.
The 8MB of L3 is used mostly for big prefetches and it used by all modules and by all cores

Quote:
Originally Posted by cdawall View Post
As for the argument early the bulldozer die when analyzed the way AMD designed it has 4 ALU and 4 AGU per module. You would consider each module as a core. You cannot consider individual "cores" within the modules cores since they share the early pipelines. They are called integer cores. Each integer core carries a 4 way 16kB L1 data cache and a 64kB instruction cache. In a nutshell its two halves to a single brain, independent and codependent at the same time.
No the design was that the 2 AGLUs were able to execute non-memory workloads(With the later versions being able to having all EX/AGLUs be AGLUs that can be able to output 4 Adds, 4 Subtracts, 4 Multiply, 4 Divide, 4 Memory ops per cycle in any order as long as it outputted four and this is per core)....Each module has two cores. You can consider the individual cores in the module cores since they have dedicated datapaths, instruction buses, data buses, and control units...

Don't impose your definition of what a core is if you are 100% wrong!

Last edited by seronx; Dec 20, 2011 at 07:07 PM.
seronx is online now  
Reply With Quote