哈佛架构中的代码存储器指的是哪里?

时间:2017-09-27 07:25:33

标签: memory embedded microcontroller ram harvard-architecture

哈佛架构是一种计算机架构,具有用于代码和数据存储的独立总线。该架构是指代代码存储器,它位于RAM或ROM(用于微控制器)中。当架构讲述代码内存时我很困惑。据我所知,对于小规模嵌入式系统,代码将始终从ROM执行,而在中等规模和复杂的嵌入式系统中,代码存储器可以从ROM传输到RAM,以便更快地执行。如果是这种情况,则RAM连接两个总线,一个用于代码,另一个用于数据存储器。任何人都可以帮助我理解这一点。

3 个答案:

答案 0 :(得分:0)

你可能想看到这个 https://en.wikipedia.org/wiki/Modified_Harvard_architecture

我第一次遇到这个哈佛架构的东西是在PIC上,他们的RAM和ROM确实在2个不同的地址空间分开。但似乎这不是唯一的方法。拥有数据&同时可访问的代码是关键。例如,将单个RAM存储器空间虚拟地划分为存储代码和存储器代码。数据分开,但可由处理器同时访问。它不是一个纯粹的哈佛架构系统,但足够接近。

答案 1 :(得分:0)

Harvard 几乎与RAM或ROM无关 - 它只是说,原则上,指令提取和数据读/写是通过单独的总线完成的。

这只是意味着至少需要在指令存储器总线上找到某些 ROM(引导代码) - 其余的可以是RAM。非指令总线也可以访问RAM或ROM - ROM可以保存恒定的数据。

On" real"然而,像AVR MCU这样的实现,指令总线寻址闪存ROM,而非指令总线(我故意不写"数据总线",这是不同的东西)解决了SRAM的问题。你甚至没有"看到" AVR上的这些总线 - 它们纯粹是大多数MCU内部的。

答案 2 :(得分:0)

哈佛建筑学在很大程度上是一项学术活动。首先你要问他们如何确定分成四条公交车?内部von neumann按地址分割?许多von nuemann实现,如果不是全部按地址划分,如果你绘制一个更大的盒子,你会看到许多单独的总线,有时数据和指令被连接,有时不会。

因为您无法将纯哈佛用于引导程序或操作系统,所以它实际上只是一种心理练习。像von neumann这样的标签,人们喜欢抛弃,如果没有其他原因造成混乱。现实世界介于两者之间。 AMBA / AXI和其他总线被标记为修改哈佛,因为它们标记数据和指令事务本身但共享相同的总线(在这些总线上没有单个总线,有单独的读地址,读数据,写地址,写数据)。处理器和这些总线在很长一段时间内处理器并不是瓶颈,因此你可以在同一组总线上有指令,数据和外设的空间,特别是如果你分开读地址,读数据,写地址,将数据写入单独的总线,id标记用于连接点和完成事务。

如在维基百科上提到的那样,你真正在现实世界中看到的最接近的东西就像微控制器。当他们谈论内存真正只是意味着地址空间时,总线另一端的内容可以是sram,dram,flash,eeprom等,或者是组合。在任何一侧,以及该总线上的所有外围设备。因此在微控制器中,指令在这个模型中闪存,而sram是数据,如果是纯哈佛架构,则无法将代码加载到sram并在那里运行,同样你也无法使用数据总线对闪存进行编程或者为了缓冲要闪存的数据,rom / flash被硬件架构路径上未示出的神奇加载。可能是I / O总线资源和指令总线资源之间的交叉,这需要被称为修改哈佛。

对于Von Neumann来说,你有早期的地址解码器,它们将总线分配到那些指令,数据,I / O和子部分,也许数据和指令保持组合但是你没有一个纯粹的单一总线端到端。不实用。

查看维基百科上的图片,了解一个人有单独的公共汽车,而另一个则结合在一起。通过测试并忘记你不需要的条款,之后它们并不真正相关。