寄存器的"银行"是什么意思?

lan*_*ng2 30 cpu arm

在维基百科上阅读"ARM架构"并发现以下声明:

寄存器R0-R7在所有CPU模式下都是相同的; 他们永远不会存钱.

除系统模式外,R13和R14在所有特权CPU模式下进行存储.

寄存器是什么意思?

enj*_*ife 23

注册银行业务是指在同一地址提供注册的多个副本.

取自arm docs的 1.4.6部分

这个术语指的是一个问题的解决方案,即不能同时看到所有寄存器.

每种处理器模式都有不同的寄存器组.分组寄存器为处理处理器异常和特权操作提供快速上下文切换.

如果您正在寻找更理论的推理,我推荐这篇论文.
编辑:这里给出比我更深刻的答案

  • 您链接的ISCA文件涉及银行业务的不同含义 - 这种银行业务用于减少访问端口数量,并且在用于缓存时通常称为伪端口.ARM寄存器存储库旨在简化和加速异常处理.(MIPS提供了一个类似的功能,称为影子寄存器集,其中整个GPR集合被复制; Itanium在127个[+零寄存器] GPR中提供16个影子寄存器.)一些RISC使用ABI提供一个或多个临时寄存器,可以被异常处理程序覆盖而不保存. (2认同)

Ben*_*oit 12

当处理器进入异常时,使用另一组寄存器自动切换分组寄存器.

实际上,异常处理程序例程不必将这些寄存器保存在堆栈上,以防止它们在以后被异常处理(通过异常处理函数).处理器只保留该组的安全副本; 并将在异常返回时恢复原始集.