【发布时间】:2016-05-01 07:34:41
【问题描述】:
在 Atmel AVR 架构中,寄存器和 SRAM 位于同一数据存储空间中(例如,0x0000 到 0x001F 是寄存器,0x300 是内部 SRAM)。这是如何实施的?和虚拟内存原理一样吗?
【问题讨论】:
-
我认为与内存映射 I/O 的相似性更大,其中设备寄存器映射到地址空间。
在 Atmel AVR 架构中,寄存器和 SRAM 位于同一数据存储空间中(例如,0x0000 到 0x001F 是寄存器,0x300 是内部 SRAM)。这是如何实施的?和虚拟内存原理一样吗?
【问题讨论】:
它可以是,也可以是单独的 ram,也可以是几个单独的 ram 块。它从处理器内核开始,然后,尤其是该内核是哈佛架构,指令获取与数据,分成至少两条总线,然后你进入数据总线,然后你有某种地址解码器来隔离外围设备ram 并且可能从 sram 中注册。
它们很可能只是通用 sram 的一部分。或者可能是他们自己的内存库更靠近处理器,但这恰好是可寻址的。并且地址解码可能发生在内核中,而不是到达处理器边缘进行 sram 和外设解码的地方。
如果拆分,那么是的,它可能感觉有点像虚拟内存,因为在一个地址空间中有一个空间可以映射到其他东西。但与虚拟内存不同的是,您没有 mmu 执行此操作,尤其是您可以重新编程或可以检查权限等的虚拟内存。
这个寻址寄存器是其他一些 8 位处理器的一个特性,我想说的是 8051,所以 AVR 可能也被设计成具有这样的特性。但就像 BCD 数学指令一样,这是一个已经被淘汰的功能。看不到比看到的可能性更大。
【讨论】: