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
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.
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
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.
Latest Answers