Are AMD cpus true octo-cores?

FreshJR

Member
Nov 10, 2012
46
0
61
I've been out of the loop with AMD. I'm still rocking a E6600 @ 3.4ghz on my desktop and i5-3xxx on the laptop.

I know intels hyperthreading is acutally 2/4 cores with some virtualization magic to make it have 4/8 threads. With this hyperthreading the speed is still roughly 2/4 cores, with just better multitasking ability.

I see that amd has 4 cores / 8 modules. Is this a true 8 processors on the CPU's or just their version of hyperthreading?

Disregarding single thread performance, cumulatively is an 8module amd > 4 core intel?
 

videogames101

Diamond Member
Aug 24, 2005
6,783
27
91
8 real integer "cores"
4 real FP "cores"

so they call it 8 cores


as for amd vs. intel

I'd rather have a 3570k than an FX-8350.

Although I'd rather have a 4770k.
 
Last edited:

FreshJR

Member
Nov 10, 2012
46
0
61
8 real integer cores
4 real FP cores

got it.

Sidequestion: Are integer instructions much faster that floating point?

IE: 4/4 = 1 or 4.0/4.0 = 1

Would it not be more economical to make all units FP, doubling all the speeds we have today?
 
Last edited:

BrightCandle

Diamond Member
Mar 15, 2007
4,762
0
76
Whether 8 modules is quicker than 8 hyperthreaded cores is highly dependent on the benchmark used. For the most part the answer is no, mainly because most software does not really use that many cores well. Even when software does use multiple cores it often still favours Intels chips. There are circumstances when AMD is faster, but they are rare.
 

videogames101

Diamond Member
Aug 24, 2005
6,783
27
91
got it.

Sidequestion: Are integer instructions much faster that floating point?

IE: 4/4 = 1 or 4.0/4.0 = 1

Would it not be more economical to make all units FP, doubling all the speeds we have today?

I'm not sure, but 6 / 4 = 1 (integers) would end up being (floats) 6.0 / 4.0 = 1.5

Meaning you'd have to do correction on the results. Which we already do all the time, but it could be significant.

Also

"it [IEEE floating point format] lacks precision on integer numbers when compared with an integer format of the same size"

Maybe someone who knows a little more could put this one to bed.
 
Last edited:

FreshJR

Member
Nov 10, 2012
46
0
61
I'm not sure, but 6 / 4 = 1 (integers) would end up being (floats) 6.0 / 4.0 = 1.5

Meaning you'd have to do correction on the results. Which we already do all the time, but it could be significant.

Also

"it [IEEE floating point format] lacks precision on integer numbers when compared with an integer format of the same size"

just a trunc command and its all good.

The only place I see integers being used is where the modulos command is needed, but I would be pretty sure it could be baked into an efficient instruction. With doubling the calculation units possible, I still am seeing a netgain.

For imprecision mentioned, thats only when dividing, due to the decimal math. IE. go to windows calculator and do sqrt(4)-2. A trunc command would give you the same int result. So I don't get how the percision of 6/4 = 1 instead of 1.5 is better then precision of sqrt(4)-2 ~= 0 instead of 0
 
Last edited:

Charles Kozierok

Elite Member
May 14, 2012
6,762
1
0
There is no good answer to this, because an 8-core (as AMD calls it) CPU is neither 4 cores nor 8 but something in between.

After thinking about this for a long while, and changing my mind several times, I eventually decided to call a four core Intel with HT a "4 core, 8 thread" CPU, and an 8-core Family 15h AMD chip an "8 integer core, 4 FPU" chip. I think those are the fairest terms that make clear what the chips are.
 

videogames101

Diamond Member
Aug 24, 2005
6,783
27
91
just a trunc command and its all good.

The only place I see integers being used is where the modulos command is needed, but I would be pretty sure it could be baked into an efficient instruction. With doubling the calculation units possible, I still am seeing a netgain.

For imprecision mentioned, thats only when dividing, due to the decimal math. IE. go to windows calculator and do sqrt(4)-2. A trunc command would give you the same int result. So I don't get how the percision of 6/4 = 1 instead of 1.5 is better then precision of sqrt(4)-2 ~= 0 instead of 0

yes, but what is a trunc command as a circuit when executed on IEEE FP format
 

inf64

Diamond Member
Mar 11, 2011
3,884
4,692
136
I think it's fair to call AMD's approach an 8 thread chip. It does not add nor take away from it as it is indeed 8 thread (8 integer threads and 8 fp threads; FP unit is actually 4 "cores" each being multithreaded). It's a novel approach with certain deficiencies which will be fixed with SR core (hopefully).
 

Cogman

Lifer
Sep 19, 2000
10,286
145
106
got it.

Sidequestion: Are integer instructions much faster that floating point?

IE: 4/4 = 1 or 4.0/4.0 = 1

Would it not be more economical to make all units FP, doubling all the speeds we have today?

Well, first, integer operations are generally (but not always) much more common than floating point operators. So it makes a lot of sense to have more integer processing components than floating point processing components.

As well, there are some VERY nice properties of integers that floating points don't have. Translating an integer into its bit equivalent is trivial. Translating a IEEE float into its bit equivalent is very complex. There are also problems with floating point numbers not present in integers. For example, as a floating point number gets bigger, it loses information about its smaller values. This may not matter so much in scientific computing, but for something like financial computing it is a pretty big deal.

Now, are integer operations always faster than floating point operations? That is a solid "it depends on the operation". Typically, yes, It is generally faster to do addition, multiplication, and division on an integer than it is to do it on a float. However, the architecture is complex and so there are certainly going to be cases where doing bulk floating point operations will be faster than their integer equivalent.
 

Cogman

Lifer
Sep 19, 2000
10,286
145
106
There is no good answer to this, because an 8-core (as AMD calls it) CPU is neither 4 cores nor 8 but something in between.

After thinking about this for a long while, and changing my mind several times, I eventually decided to call a four core Intel with HT a "4 core, 8 thread" CPU, and an 8-core Family 15h AMD chip an "8 integer core, 4 FPU" chip. I think those are the fairest terms that make clear what the chips are.

I dislike this usage of thread. In fact, I would even go so far as to say it is wrong (even though it is common to see).

The terminology should be physical cores and logical cores. Intel cpus have 4 physical cores and 8 logical cores. This is because a single physical core is capable of running 2 threads simultaneously.

The reason I dislike this usage of thread is because threads and threading have a very specific meaning. They are OS controlled, not CPU controlled. At any point, your system is easily running several hundred threads. How many of them are able to execute in parallel is determined by the number of logical cpu cores. However, depending on what the individual thread is doing, it may decrease or increase the performance of a parallel executing thread.

To the AMD issue. They have 8 physical cores which share floating point resources. (and, IIRC, they share integer resources as well, but that is a different matter). The same thing happens with AMD. 8 threads may be executed in parallel, however, what each of those threads is doing may affect the performance of the other threads. Especially in the cause of floating point heavy work loads.
 

ShintaiDK

Lifer
Apr 22, 2012
20,378
146
106
SMT vs CMT, both "quads" since there is a performance penalty in scaling beyond 4 threads on both.
 

SPBHM

Diamond Member
Sep 12, 2012
5,066
418
126
amd-fx-8350-piledriver-6.jpg



perhaps not exactly, but it's pretty close, scaling is nice, and that's how AMD is selling those chips, the problem with Bulldozer is not CMT, 2 cores per module or whatever, is just the low ST performance... even if scaling is perfect, it's hard to compete with the much higher IPC from Intel, HT is gives a much smaller gain (compared to a core, or a module with 2 cores), but ST performance is so high, and HT uses very little die space.

I don't think AMD needs to abandon their current approach (if that's not one of the main reasons of the high power usage, and lower ST performance, which I don't think is the case),
I don't have any problem with a module being considered 2 cores with shared resources.

one thing for me is clear, the 8 core FX doesn't perform like a quad core, when you compare MT to ST performance on the same chip.
 
Last edited:

parvadomus

Senior member
Dec 11, 2012
685
14
81
They are real octo-cores. There are 4 FPUs in an FX8xxx but it can be used simultaneously by the cores its shared by (only for 128-bit, not for 256-bit operations).
The penalty of scaling beyond 4 threads is because of the poor decode stage, and maybe some latency added by the shared FPUs when we are talking about floating point workloads.
With SR the above problems should be solved, and scaling would be much better beyond 4 threads.
 

jaqie

Platinum Member
Apr 6, 2008
2,471
1
0
There is no good answer to this, because an 8-core (as AMD calls it) CPU is neither 4 cores nor 8 but something in between.

After thinking about this for a long while, and changing my mind several times, I eventually decided to call a four core Intel with HT a "4 core, 8 thread" CPU, and an 8-core Family 15h AMD chip an "8 integer core, 4 FPU" chip. I think those are the fairest terms that make clear what the chips are.
I actually agree here. There are advantages and disadvantages to both hardware strategies, but I prefer having full cores for everything... sadly that has gone out of style seemingly permanently because of the massive amount of die space that would require. My 6 core thuban is a larger die size than the 8 core vishera.
 

Charles Kozierok

Elite Member
May 14, 2012
6,762
1
0
I dislike this usage of thread. In fact, I would even go so far as to say it is wrong (even though it is common to see).

I try to avoid using terminology that others aren't familiar with unless there's a really good reason. Thinking of 4C+HT as 4C/8T is accurate enough IMO.

The terminology should be physical cores and logical cores. Intel cpus have 4 physical cores and 8 logical cores. This is because a single physical core is capable of running 2 threads simultaneously.

If a physical core is capable of running two threads, then how is it "wrong" to call an Intel quad a 4C/8T chip?

Sure, they can be thought of as "logical cores", but the term is pretty unusual and I doubt everyone even agrees on what it means.

The reason I dislike this usage of thread is because threads and threading have a very specific meaning. They are OS controlled, not CPU controlled. At any point, your system is easily running several hundred threads. How many of them are able to execute in parallel is determined by the number of logical cpu cores. However, depending on what the individual thread is doing, it may decrease or increase the performance of a parallel executing thread.

Not sure I get why this matters. The OS controls threads and it also controls how many cores are used as well -- ultimately, it controls pretty much everything.

To the AMD issue. They have 8 physical cores which share floating point resources. (and, IIRC, they share integer resources as well, but that is a different matter). The same thing happens with AMD. 8 threads may be executed in parallel, however, what each of those threads is doing may affect the performance of the other threads. Especially in the cause of floating point heavy work loads.

Whether AMD has 8 physical cores or not depends entirely on one's definition of "core". If AMD put out a chip with 4 conventional cores and 4 cores that had no FPU capabilities, I highly doubt anyone would call the chip an "8 core".

A module really is somewhere between an Intel single core with HT and a true dual core. I actually don't like the term "thread" with the AMD chips because I think in that case it under-represents the 15h modules, especially because of how it is used with Intel.

ETA: This debate reminds me of the "megapixel wars" in the digital camera world, especially the Bayer v. Foveon fight and the matter of how to represent the resolution of those cameras with weird diagonal layouts.
 

parvadomus

Senior member
Dec 11, 2012
685
14
81
I don't think AMD needs to abandon they current approach (if that's not one of the main reasons of the high power usage, and lower ST performance, which I don't think is the case),
I don't have any problem with a module being considered 2 cores with shared resources.

OFC they dont have to abandon it, in theory 2 cores of BD arch, should be only a bit bigger than a single core, so efficiency should be much better than the traditional approach, but there are still a lot of problems they need to fix to achieve this.
 
Aug 11, 2008
10,451
642
126
Whether 8 modules is quicker than 8 hyperthreaded cores is highly dependent on the benchmark used. For the most part the answer is no, mainly because most software does not really use that many cores well. Even when software does use multiple cores it often still favours Intels chips. There are circumstances when AMD is faster, but they are rare.

I agree. It doesnt really matter how many "cores" a cpu has, what counts is the bottom line performance, performance per watt , and performance per dollar.
 
Aug 11, 2008
10,451
642
126
I actually agree here. There are advantages and disadvantages to both hardware strategies, but I prefer having full cores for everything... sadly that has gone out of style seemingly permanently because of the massive amount of die space that would require. My 6 core thuban is a larger die size than the 8 core vishera.

Unfortunately (from my point of view) intel is using their process advantage to allocate more die space to the igp, while AMD FX is devoting everything to the cpu core, but their inferior process node and less efficient architecture still do not pass intel except for certain very specific software.

And I know that "is what the market wants", "its for mobile", etc, etc. but I am speaking from my own personal point of view for the desktop, where I dont really care about the igp, except for a very basic one in case the my discrete card fails. I would much rather see the extra die space and power budget allocated to more cores or clockspeed, but apparently that is not going to happen.
 

Cogman

Lifer
Sep 19, 2000
10,286
145
106
I try to avoid using terminology that others aren't familiar with unless there's a really good reason. Thinking of 4C+HT as 4C/8T is accurate enough IMO.
It really isn't though. If you ever start diving into the software world, the 8T thought becomes pretty silly.

If a physical core is capable of running two threads, then how is it "wrong" to call an Intel quad a 4C/8T chip?
A physical core is capable of running thousands of threads at the same time. Long before we even had multicores or hyperthreading, we were running multiple threads on a single core. It is wrong to say "4C/8T" because you are coupling a pure software based term with a pure hardware term.

The confusion comes in because Intel, unfortunately, named their tech "Hyperthreading" The thread from hyperthreading just sort of leaked out.

Sure, they can be thought of as "logical cores", but the term is pretty unusual and I doubt everyone even agrees on what it means.

It is actually really common when you are talking about OS related stuff. Just do a google search for "Logical core" and you'll see tons of stuff pop up about hyperthreading.

In fact, I would say that Anandtech forums is more of the outlier truth be told. Here is one of the few places where I see "Logical core" exchange for "thread" fairly regularly.

Not sure I get why this matters. The OS controls threads and it also controls how many cores are used as well -- ultimately, it controls pretty much everything.

It matters because thread is a software term, not a hardware one. I was trying to explain what a thread is. It has nothing to do with your cpu and everything to do with the OS. It would be like saying "This is a 4 core and 8 process processor!" Sounds silly, but that is essentially what you are saying when you say "This is a 4 core and 8 thread processor!" (Not really, a thread is a more of a lightweight process. Each process has at least 1 thread but could have several).
 

Charles Kozierok

Elite Member
May 14, 2012
6,762
1
0
It really isn't though. If you ever start diving into the software world, the 8T thought becomes pretty silly.

I really don't see why.

A physical core is capable of running thousands of threads at the same time. Long before we even had multicores or hyperthreading, we were running multiple threads on a single core. It is wrong to say "4C/8T" because you are coupling a pure software based term with a pure hardware term.

Saying a CPU is "4C/8T" is not saying the hardware itself has threads or whatever. It's specifying the number of threads it can simultaneously process.

And I reject the notion of a "pure software term" and a "pure hardware term". There is no purity in computing; separating the hardware from the software is like separating the brain from the mind. And the operating system, especially, is the interface between hardware and software.

The confusion comes in because Intel, unfortunately, named their tech "Hyperthreading" The thread from hyperthreading just sort of leaked out.

Seems unlikely. I don't know who coined the exact term "multithreading", but the concept is about 50 years old, and I'm confident it predates HT.

It is actually really common when you are talking about OS related stuff.

Most people don't talk about "OS related stuff" very often. If jargon doesn't increase understanding, it's just jargon.

It matters because thread is a software term, not a hardware one.

Is an instruction a hardware term or a software term? How about an address? A register? A page table? There are lots of things that apply to both hardware and software.

It would be like saying "This is a 4 core and 8 process processor!" Sounds silly, but that is essentially what you are saying when you say "This is a 4 core and 8 thread processor!"

When I say it's an 8-thread processor, that means it can execute 8 threads at a time. Just as when I say it's a 2 GHz processor, that means its base clock period is 0.5 ns.
 

Sleepingforest

Platinum Member
Nov 18, 2012
2,375
0
76
From a brief skim through Wikipedia, it seems like both Charles Kozierok and Cogman are technically right.

A thread is the smallest sequence of instructions that can be handled by an operating system scheduler. Context switching can be used to make multiple threads run on each core; however, the threads do not truly run at the same time. Instead, the switch between threads is so quick that it cannot be perceived by an end user. Hyperthreading presents each CPU core as two logical cores to the OS scheduler, which allows the CPU to do simultaneous multi-threading--actually running more than one thread at once, rather than faking it using context switching (context switching may still be used to further parallelize processing).

In other words, there is a difference between a software thread and a hardware thread, but it's not much and it's more about how it's handled. A 4C/8T CPU can handle 8 threads simultaneously, but via context switching can seem to handle far more.
 

SOFTengCOMPelec

Platinum Member
May 9, 2013
2,417
75
91
SMT vs CMT, both "quads" since there is a performance penalty in scaling beyond 4 threads on both.

The intel I7's (e.g. 3770) usually scale fairly linearly (ignoring turbo etc) up to 4 threads, but only give up to about 20% more performance with the hyperthreaded(HT) threads. Some software (e.g. Chess programs), usually don't get any speed improvement by using HT. I've even heard of software running slightly slower with HT enabled.
BUT, the AMD FX8350's do act a lot closer to a real 8 core cpu, giving something like a further 70% (I will try this out myself, as I recently got my first FX6300, I7-3770 and a couple of others) speed up (so the performance DOES scale up reasonably well, but not as well as a real octo-core) going from 4 to 8 threads (with suitable software which can efficiently exploit the extra threads).
I agree, there is a "performance penalty", but it is much less severe with the AMD FX, compared to the Intels.

Was an Intel i386 a 0 core CPU? The 386 did not have an FPU.
The 386 had (optional) floating point on the motherboard (387).
The bulk of the software at the time (I think) either did not use floating point, or had its own floating point software to handle it. (387 rarely was supported, I think).
But you are basically 100% right (compared to the speed of today's processors, it is 0.00000001 cores (Joke)).
-------------------------------

This discussion could be academic in the next 5 .. 15+ years anyway.
The "CPU" could end up either being an Intel (or AMD) i777++ 4770KKKK 4.9GHz 1nm super chip with 32 real cores and 128 (total) HT ones, or it could end up being a massive gpu, so powerful and flexible that no cpu is needed, or it could end up being a 512 core arm chip. I would love to know now which direction ends up winning.
 
Last edited: