What does 'bank'ing a register mean?

2019-01-22 17:52发布

问题:

Reading 'ARM Architecture' on Wikipedia and found the following statement:

Registers R0-R7 are the same across all CPU modes; they are never banked.

R13 and R14 are banked across all privileged CPU modes except system mode.

What does banking a register mean?

回答1:

Register banking refers to providing multiple copies of a register at the same address.

Taken from section 1.4.6 of the arm docs

The term is referring to a solution for the problem that not all registers can be seen at once.

There is a different register bank for each processor mode. The banked registers give rapid context switching for dealing with processor exceptions and privileged operations.

If your looking for a more theoretical reasoning, I recommend this paper.
Edit: A much deeper answer than mine is given here



回答2:

When the processor enters an exception, the banked registers are switched automatically with another set of these registers.

Virtually, the exception handler routine doesn't have to save these registers on the stack to prevent them from being clobbered later on (by the exception handler functions). The processor just keeps a safe copy of that set; and will restore the original set on exception return.



标签: arm cpu