我不明白冯诺依曼和哈佛架构之间的区别。假设您有以下两条指令:
MOV ax,[地址2]
MOV bx, ax
在哈佛架构中,处理器必须等待两个周期才能执行第二条指令:第一个周期解码第一条指令,第二个周期将地址 2 中的值加载到 ax 中。他不能立即执行指令 2,因为它使用了 ax 的值。
因此所花费的时间将与冯·诺依曼相同,在后一种情况下,第一个周期将用于解码指令,第二个周期将用于从程序内存中获取地址 2 的内容。
我不明白什么?
答案1
指令和数据的分离很容易被低估。然而,它们的行为却截然不同。
指令大部分会沿着线性路径流动,并且大小非常相似。
另一方面,数据将位于半随机位置,具有突发性并且大小各异。
尝试使用相同的逻辑和总线大小来对两者进行优化比使用单独的处理程序要困难得多。
从表面上看,您的示例似乎是一个合理的问题,但对于冯·纽曼处理器,完成第一条指令的内存加载将阻止第二条指令的加载和解码。而在哈佛处理器上,当第一条指令完成时,第二条指令可能会被加载、解码并处理一半。
冯诺依曼处理器流程
- 加载指令一
- 解码指令一
- 从外部存储器加载数据
- 将数据放入寄存器
- 加载指令二
- 解码指令二
- 将寄存器复制到寄存器
哈佛处理器流程
- 加载指令一
解码指令一
3a. 将数据从外部存储器加载到寄存器中 3b. 加载指令二 4a. 将数据放入寄存器 4b. 解码指令二- 将寄存器复制到寄存器
答案2
据我所知,哈佛可以同时读取指令和读/写数据,而冯诺依曼只能读取指令或读/写数据,但不能同时进行。