-1

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

4

3 回答 3

1

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

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

于 2017-09-27T12:52:05.410 回答
0

哈佛建筑在很大程度上是一项学术活动。首先你要问他们是如何确定分配到四个总线的?按地址拆分的内部冯诺依曼?许多 von nuemann 实现,如果不是全部按地址拆分,如果你画一个更大的盒子,你会看到许多单独的总线,有时数据和指令是连接的,有时不是。

因为您不能将纯哈佛用于引导加载程序或操作系统,所以这实际上只是一种心理锻炼。像冯诺依曼这样的标签,如果没有其他原因造成混乱,人们喜欢折腾。现实世界介于两者之间。AMBA/AXI 和其他总线被标记为修改哈佛,因为它们标记数据和指令事务,但共享相同的总线(其中许多总线上没有单独的总线,有单独的读取地址、读取数据、写入地址、写入数据)。处理器在很长一段时间内都不是瓶颈了地址,

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

对于冯诺依曼来说,你有早期的地址解码器,将总线分解成指令、数据、I/O 和它们的子部分,也许数据和指令保持结合,但你没有端到端的纯单一总线。不实用。

看看维基百科上的图片,了解一个有单独的总线用于其他组合的东西。通过测试并忘记那些你不再需要它们的术语,因为它们并不真正相关。

于 2017-09-27T18:56:13.867 回答
0

哈佛与 RAM 或 ROM 几乎没有任何关系——它只是说,原则上,指令获取和数据读/写是通过单独的总线完成的。

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

然而,在像 AVR MCU 这样的“真实”实现中,指令总线寻址 Flash ROM,而非指令总线(我故意不写“数据总线”,这是不同的)寻址 SRAM。您甚至不会在 AVR 上“看到”这些总线 - 它们纯粹是大多数这些 MCU 的内部。

于 2017-09-27T14:03:46.910 回答