What Exactly is CPU Core?

223 views

My question involves CPU design. I have basic knowledge regarding the ARMv8 assembly and I have studied the pipelining, data forwarding, stalling, and other ways to relieve data hazards. From my basic understanding, for example having 8 cores means we have 8 CPUs. Thus, I have some questions.

1. Does data forwarding exist from one core to another? Can an operation write to another register in a different core?
2. In ARMv8, there are 31 sixty-four bit registers available for you to use. When I do an operation, say ADDI X2, X31, #10 (Basically set the value of register X2 to 10). How does the computer know which core to do this operation in? How does it distinguish between the different cores without getting confused?
3. Why bother adding more cores, wouldn’t it be better to add more registers?

In: 3

2 Answers

Anonymous 0 Comments

1) no, there is nothing in the instruction set to let you write to a register in another core

2) the operating system is responsible for controlling the hardware, including the CPU cores. There is software that tells each core which code to start executing.
3) Lots of reasons. For one, diminishing returns – CPUs have a large number of physical registers already, so at some point adding more doesn’t give large gains for many workloads. It’s all about picking which kind of code you want to go faster, and adding the resources (cores, cache, registers, execution units, LOTS of options…) that let it go faster.

Anonymous 0 Comments

1. No, operations cannot read or write from registers in other cores. There is some data sharing though. Depending on the design, cores can share some level of cache which means that recently accessed memory from one core will be accessible faster from the other cores.

2. Each core has it’s own instruction pointer, so each core knows which instruction it will be performing next.

3. Adding more cores allows more instructions to be performed at the same time, adding more registers would not do that.

0 views

My question involves CPU design. I have basic knowledge regarding the ARMv8 assembly and I have studied the pipelining, data forwarding, stalling, and other ways to relieve data hazards. From my basic understanding, for example having 8 cores means we have 8 CPUs. Thus, I have some questions.

1. Does data forwarding exist from one core to another? Can an operation write to another register in a different core?
2. In ARMv8, there are 31 sixty-four bit registers available for you to use. When I do an operation, say ADDI X2, X31, #10 (Basically set the value of register X2 to 10). How does the computer know which core to do this operation in? How does it distinguish between the different cores without getting confused?
3. Why bother adding more cores, wouldn’t it be better to add more registers?

In: 3

2 Answers

Anonymous 0 Comments

1) no, there is nothing in the instruction set to let you write to a register in another core

2) the operating system is responsible for controlling the hardware, including the CPU cores. There is software that tells each core which code to start executing.
3) Lots of reasons. For one, diminishing returns – CPUs have a large number of physical registers already, so at some point adding more doesn’t give large gains for many workloads. It’s all about picking which kind of code you want to go faster, and adding the resources (cores, cache, registers, execution units, LOTS of options…) that let it go faster.

Anonymous 0 Comments

1. No, operations cannot read or write from registers in other cores. There is some data sharing though. Depending on the design, cores can share some level of cache which means that recently accessed memory from one core will be accessible faster from the other cores.

2. Each core has it’s own instruction pointer, so each core knows which instruction it will be performing next.

3. Adding more cores allows more instructions to be performed at the same time, adding more registers would not do that.