在Atmel AVR架构中,寄存器和SRAM位于同一数据存储空间(例如0x0000至0x001F为寄存器,0x300为内部SRAM)。这是如何实现的?它的原理与虚拟内存相同吗?
发布于 2016-05-01 21:41:21
它可以是或者它们可以是单独的ram,或者它们可以是几个单独的ram块。它从处理器核心开始,然后,特别是在核心是哈佛体系结构的情况下,取指令与数据,分成至少两条总线,然后你进入数据总线,然后你有某种类型的地址解码器来从ram中隔离外围设备,也可能从sram中隔离寄存器。
它们很可能只是通用sram的一部分。或者,它们可能是离处理器更近的自己的ram存储体,但这恰好是可寻址的。并且该地址解码可能发生在核心中,并且不会到达将发生sram和外围解码的处理器的边缘。
如果拆分,那么它可能感觉有点像虚拟内存,因为在一个地址空间中有一个空间可以映射到其他一些东西。但与虚拟内存不同的是,你没有mmu来做这件事,特别是你可以重新编程或检查权限等。
寻址寄存器是其他8位处理器的一个功能,我想说的是8051,所以AVR可能也设计了类似的功能。但就像BCD数学指令一样,它也是一个已经半途而废的功能。看不到它的可能性要比看到它的可能性大得多。
https://stackoverflow.com/questions/36964248
复制相似问题