CPU通用寄存器通常是内存映射的吗?

2024-01-01

我对内存映射和内存映射 I/O 感到困惑。 通用寄存器(例如 ARM 架构中的 r0、r1 等)通常是内存映射的吗?


不,这些寄存器位于实际 CPU(或多核 CPU 的 CPU 核心)内部。您无法通过加载或存储到任何内存地址来访问它们。

内存映射寄存器是通过地址或指针(在具有指针的语言中)访问的东西。 I/O 设备通常具有内存映射寄存器,您可以在其中写入或读取特定地址以设置或获取信息或数据。换句话说,它们的访问方式就像任何其他内存(例如 RAM)一样。


正如评论中提到的,有do存在带有内存映射 CPU 寄存器的 CPU。它们几乎都是 20 世纪 70 年代设计的,如今已成为历史的一部分。如今,您遇到具有内存映射寄存器的主流 CPU(而非微控制器)的机会几乎为零。

一些微控制器架构仍然使用内存映射寄存器,包括旧设计,例如8051 https://en.wikipedia.org/wiki/8051,甚至还有一些最近的设计,例如PIC微控制器 https://en.wikipedia.org/wiki/PIC_microcontrollers and AVR https://arduino.stackexchange.com/q/56304(具有 32 个 8 位寄存器的 8 位 RISC)。 AVR MCU 至少配备 128 字节的内部 SRAM,其中低 32 字节也是寄存器文件。

专门针对 ARM,ARM 架构确实not有内存映射的CPU寄存器。不过,外设(包括与 CPU 位于同一 SoC 上的外设)则是另一回事:I/O 寄存器完全不同,因为它们不能通过寄存器编号作为加载或存储以外的指令的操作数进行访问。 (甚至不在运行您的指令的核心内部。)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

CPU通用寄存器通常是内存映射的吗? 的相关文章

随机推荐