“bank”寄存器是什么意思?

41

在维基百科上阅读“ARM架构”,发现以下陈述:

寄存器R0-R7在所有CPU模式下都相同;它们永远不会分组。

R13和R14在除系统模式外的所有特权CPU模式下都是分组的。

什么是寄存器分组?

3个回答

32

寄存器银行是指在同一地址提供多个寄存器的过程。

摘自ARM docs第1.4.6节。

该术语是指解决无法同时查看所有寄存器的问题的解决方案。

每种处理器模式都有一个不同的寄存器银行。 银行寄存器可快速上下文切换以处理处理器异常和特权操作。

如果您正在寻找更理论性的原因,我建议阅读this论文。
编辑:比我的答案更深入的答案在here给出。


1
ARM指令集-ARM大学计划的PDF也是一个有用的参考资料。我认为这个问题中的ARM.com链接已经失效和/或需要注册。 - artless noise
2
你链接的ISCA论文提到了银行业务的不同含义——这种银行业务用于减少访问端口数量,通常在缓存中使用时称为伪端口。ARM寄存器银行旨在简化和加速异常处理。(MIPS提供了一个类似的功能,称为Shadow Register Sets,在其中复制了整个GPRs集合;Itanium提供了16个影子寄存器,其中包括127个[+零寄存器] GPRs。)一些RISC使用ABI提供了一个或多个可被异常处理程序覆盖而无需保存的临时寄存器。 - user2467198
@Paul,你能详细解释一下银行化寄存器的概念吗? - Uchia Itachi
1
@UchiaItachi 这个答案有帮助吗?(由于银行业务的其他用途不适用于这个问题,我在EE.SE上提出并回答了一个问题。如果我的答案不足够,请EE.SE上的其他人提供自己的答案或编辑我的答案[它是社区维基]。[我担心解释不够充分,但它可能会有所帮助。]) - user2467198

15

当处理器进入异常状态时,分组寄存器会自动与另一组这些寄存器进行切换。

实际上,异常处理程序不必将这些寄存器保存在堆栈中,以防它们随后被异常处理函数覆盖。处理器只需保留该组的一个安全副本,并在异常返回时恢复原始组。


2
这段视频很好地解释了它。 https://youtu.be/7LqPJGnBPMM?t=1419 银行寄存器是当前执行模式不需要且无法访问的寄存器。当执行模式改变时,新模式所需的寄存器将变得可用。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接