What is a core?

Ferzerp

Diamond Member
Oct 12, 1999
6,438
107
106
Marketing aside, what, in your mind, constitutes a processor core?

What does it need to contain? Does it need to function on its own? What needs to be dedicated? What can to be shared?


Since the term has become fast and loose as of late, I am just curious what individuals here think makes up a discrete core.

(TL;DR: What are the necessary and requisite attributes of a CPU core in your view)
 
Last edited:

Arkadrel

Diamond Member
Oct 19, 2010
3,681
2
0
Marketing aside, what, in your mind, constitutes a processor core?

What does it need to contain? Does it need to function on its own? What needs to be dedicated? What can to be shared?


Since the term has become fast and loose as of late, I am just curious what individuals here think makes up a discrete core.

(TL;DR: What are the necessary and requisite attributes of a CPU core in your view)



<---- I dont care.

Ultimately the only thing that matters is;

a) performance in applications you run.
b) the performance/watt in said applications.

Honestly let Intel and AMD worry about defineing cores,
because it matters not to you or any other user (only a) & b) do).

Plus this thread is bound to be derailed into AMD hatred by some Intel fanboi,
thats mad AMD gets to call something a core, when it has a shared FPU unit.
 

Puppies04

Diamond Member
Apr 25, 2011
5,909
17
76
What Arkadrel said, I don't care if intel or AMD decide to call a CPU 4 core 8 core or 64 core it has absolutly no relevance to me. All that matters is performance in the tasks that I use it for.
 

Borealis7

Platinum Member
Oct 19, 2006
2,901
205
106
i think a core would be a combination of a command queue,low level caches, ALU (integer unit, FP unit etc...), and input and output registers. that's a VERY simplified view of it.

but there have to be MOAR COARS!
 
Last edited:

biostud

Lifer
Feb 27, 2003
19,916
7,018
136
To me a core is a processor that contains all the instruction sets needed to run on its own.
 

Charles Kozierok

Elite Member
May 14, 2012
6,762
1
0
Reminds me of the pixel wars. And the answer is the same: whatever you want to be / it doesn't really matter except for marketing.
 

Smoblikat

Diamond Member
Nov 19, 2011
5,184
107
106
L3 can be shared between cores, and thats all. The best example of a core is the Q6600, that was a true desktop quad core, none of this AMD half core quadroupled into two cores bullshit, and intel HT further muddies the water.
 

Idontcare

Elite Member
Oct 10, 1999
21,110
64
91
To me a core is a processor that contains all the instruction sets needed to run on its own.

What about emulators, the FPGA kind or the Transmeta kind?

The concept of what is a CPU has evolved over time, to partition a CPU into smaller domains that entail "cores" is a fool's errand.

x86ISAovertime.jpg


^ a CPU "core" from 1982 would no longer be a full "core" in 1985, likewise in 1989, etc.

Core = microarchitecture. Core ~= instruction set architecture.
 

IntelEnthusiast

Intel Representative
Feb 10, 2011
582
2
0
Hyper-threading isn&#8217;t a core; we don't pretend that it is but it is something that can add to the processors performance. Hyper-threading is about leftovers. Boiled down it lets a second thread into the core to take advantage of the leftover resources of the core.
 

_Rick_

Diamond Member
Apr 20, 2012
3,980
73
91
Well, a "core" technically is just the ALU and the interface parts required to hook it up to a control unit.

Scheduling, instruction decoding, caches and all that jazz, they are just periphery.
Nobody would call the core part of a 386 SX anything but a core, even though it had no FPU.
 

Ferzerp

Diamond Member
Oct 12, 1999
6,438
107
106
The concept of what is a CPU has evolved over time, to partition a CPU into smaller domains that entail "cores" is a fool's errand.

I asked the question because there isn't a rigid definition anymore, but I don't agree that throwing the entire concept out the window is the proper course. There are still discrete units that are "cores", and it is useful information to have, but without a standard definition, comparing core counts between companies is what I feel is folly (because they aren't using the same definition).
 

BrightCandle

Diamond Member
Mar 15, 2007
4,762
0
76
This is becoming an increasing problematic thing to answer for software. Getting a bit of multithreaded code to behave well on the differing architectures out there in the world is proving really difficult. Lets say I use the CPUs reported CPUs to the OS (virtual cores and all) then I can in certain circumstances get worse performance than had I used half that number.

The OS knows that some cores aren't real and thus schedules threads a bit differently for the virtual cores. The level of real differs between AMD and Intel, IBM and ARM and its getting quite complex.

So all in all it would be nice to have actually real cores reported to our software and for the scheduling to be more obvious. Right now the current architectures are quite hard to optimise universally. Considering they have within an order of magnitude of performance to each other that is pretty annoying.
 

sefsefsefsef

Senior member
Jun 21, 2007
218
1
71
I would consider fetch, decode, registers, and execution units to constitute a core. Caches (at any level) are not an essential part of a core in my mind, but a core does need to be able to interact with *some* memory-type entity (for both instruction fetch and load/store operations).

What can be shared? Just about anything listed above. Every multi-core CPU does some sharing between the cores, even if it's just the interface to main memory. Sharing the DRAM controllers might limit the cores from achieving their highest potential, but we still call them distinct cores.
 

Cerb

Elite Member
Aug 26, 2000
17,484
33
86
There hasn't been a rigid definition, historically, even. Generally, whatever goes into one processor that isn't part of memory, or an integrated peripheral I/O device, is part of the core.

IMO, as long as processor companies aren't BSing about it (VLIW Radeons come to mind), or trying to twist a rigidly-defined term, I'm not sure it really matters.

Let's compare BD's CMT+SMT with Intel's SMT. Both are limited mostly by sharing front ends and caches. An OS that can work with the topology should schedule them nearly identically.

And, that is something. The OS needs to know, and applications need to be able to be provided with that information, as well.
 

moonbogg

Lifer
Jan 8, 2011
10,731
3,440
136
A CPU core has to be visually identifiable when looking at a CPU layout diagram and not integrated or shared in some strange way. It has to be a true CPU working next to other CPUs on the same die.
 

Haserath

Senior member
Sep 12, 2010
793
1
81
Core- Any thread whose instruction path is completely separate from another thread.

AMD's Bulldozer is very close but not quite there, while Intel shares everything.
 

Idontcare

Elite Member
Oct 10, 1999
21,110
64
91
I asked the question because there isn't a rigid definition anymore, but I don't agree that throwing the entire concept out the window is the proper course. There are still discrete units that are "cores", and it is useful information to have, but without a standard definition, comparing core counts between companies is what I feel is folly (because they aren't using the same definition).

I didn't mean to imply that talking about it was a fool's errand in and of itself, what I meant was that having any expectations of arriving at a definition of "core" is the fool's errand because it can't happen because the concept of a core is a man-made construct.

These are not things created from the nature of physics as are say photons and electrons, they are man-made conceptual constructs, and attempting to come to a definition is going to be basically impossible unless you just so happen to stumble into a very small group of like-minded individuals who don't object to whatever working definition is proposed and accepted within that group.

The same arguments are had over the concept of a process node. As is the case with microprocessors, the less you know about the engineering that goes into a process node then the more simplistic you might think it is to define one in the first place.

Is GloFo's 28nm node the same as TSMC's 28nm node? If it isn't, then which one is the real 28nm node? (answer - you may as well ask "how big is red" or "what does the color purple taste like?" - the numerology of process nodes is entirely a matter of marketing, they can call it 28nm or 16nm or the Banana node for all that it matters)

So is Intel's core the same as AMD's core? And if they aren't the same then which one is the real "core"? Answer - all of the above.

What we do know is that the core contains the microarchitecture necessary to support the execution of code which complies to a specific set or subset of an ISA. Where the core ends and the rest of the computer begins is a debate that can't ever be resolved. Does it include cache? If yes, then does it include ram? If no then does it include registers? Etc etc etc.
 

Ferzerp

Diamond Member
Oct 12, 1999
6,438
107
106
But we can all agree what a vehicle is, or a rifle, or any number of other man made items (beyond a few edge cases). I don't think taxonomy of artifice is necessarily a bad idea.
 

Cerb

Elite Member
Aug 26, 2000
17,484
33
86
A vehicle, yes. But the analogy there would be a microprocessor, which we can generally agree about.

But, where does a car end and truck begin, for instance? If a large 5-door hatchback has rear-wheel drive, is it an SUV, crossover, or station wagon? Generally, what it was derived from answers that question, and half of that is marketing. But, as long as a front-wheel-drive stubby station wagon isn't called an SUV, and a body-on-frame truck-without-a-bed isn't called a station wagon or cross-over, we aren't going to start worrying about details.

AMD referring the Radeon's ALU lanes as whole shader cores for the maximum spec sheet numbers, FI, is where it can start to be a problem. AMD and Sun/Oracle have been quite upfront about the separation and sharing of resources for their current and future CPUs. BD's distinct integer logic and data processing aren't built like HT (SMT), and don't act it, so it's fine they call them cores, IMO, as long as they don't try to hide the FP's SMT. But at the same time, MS considering a module one core with two logical cores, is also correct from their perspective, where they need to (a) worry about core count for licenses (each module has only 1 FP unit with SMT, so how can they get away with licensing it as 2?), and (b) schedule processes based on data cache locality and temporal thread locality, where the module is the most important point to work from.
 
Last edited:

NostaSeronx

Diamond Member
Sep 18, 2011
3,811
1,290
136
A key component to a core is the integer datapath. The amount of datapaths directly correlate with the core count.

AMD 00h/10h/11h/12h/14h family processors have one module with one integer datapath. One core.
Intel Core family processors have one module with a shared integer and floating point datapath. One core.
AMD 15h family processors have one module with two integer datapaths. Two cores.

500x269px-LL-3b802271_amd_bulldozer_core_module_zoom.jpeg


This is very simplified there are more components that can't be shared but the most important one is the integer datapath.

abinstein said:
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.
 
Last edited:

Idontcare

Elite Member
Oct 10, 1999
21,110
64
91
A key component to a core is the integer datapath. The amount of datapaths directly correlate with the core count.

AMD 00h/10h/11h/12h/14h family processors have one module with one integer datapath. One core.
Intel Core family processors have one module with a shared integer and floating point datapath. One core.
AMD 15h family processors have one module with two integer datapaths. Two cores.

500x269px-LL-3b802271_amd_bulldozer_core_module_zoom.jpeg


This is very simplified there are more components that can't be shared but the most important one is the integer datapath.

How many integer datapaths does an FPGA-based programmed processor have? How many integer datapaths did a Transmeta processor have?

My point is that we are basing the core definition here on that of the physical descriptors for the microarchitecture, something that is not necessary true or required for an integrated circuit to function as a CPU (within which we conceptual expect to physically/visually find "cores").

One thing is clear though, what AMD and Intel define to be a core for their respective products given that they advertise them as such. And the fact that they are free to do so despite having such disparate microarchitecures is further evidence that the definition of "a core" is at best going to be some generalized overarching concept called a "moving target".

I for one would not want to craft a definition of core as being dependent on the datatype (integer vs floating) which is being handled by the processor.

For one it is a needless and arbitrary distinction - why decree in advance that any future floating-point based processor is to be defined as not having a core? And secondly I would not want to classify a discrete IC like the x87 math co-processor as not containing a core.

When I purchased and plugged in my math co-processor I most certainly considered the integrated circuit buried within that package as being something more tangible than what we conceptually refer to as the "uncore" in today's processors (SRAM, power management, I/O stuff, etc). And I doubt AMD considers the FPU of bulldozer as being "uncore".