R15
is an input to the register file. In other words, it is a wire. Wires do not store any data, they merely propagate data.
R15
comes from PCPlus8
. PCPlus8 = 4 + PCPlus4
As PCPlus4 = PC + 4
,
R15 = PCPlus8 = 4 + (PC + 4) = PC + 8.
The adders used in the diagram for PC + 4 and PC + 8 are pure combinational circuits, hence their outputs are computed in the same cycle.
This implies R15 propagates the value of PC + 8. Any Register Reads of R15 in the same cycle that PC is input to R15 will result in PC + 8. This is assuming all setup time and hold time requirements of the design are met.
From Arm's official documentation, the R15 register holds the Program Counter Value. This means it holds the address of the next instruction to be executed, which is PC + 8, where PC denotes the current instruction being executed. The instruction that gets executed in the next cycle depends on the value of the multiplexer select line (PCSrc) that selects between R15 and PC + 4.