Embedded 为什么冯·诺依曼比哈佛建筑学更快

Embedded 为什么冯·诺依曼比哈佛建筑学更快,embedded,microcontroller,von-neumann,harvard-architecture,Embedded,Microcontroller,Von Neumann,Harvard Architecture,我读过关于这两种体系结构的文章,在互联网上的某个地方有人说,使用冯·诺依曼体系结构的系统比使用哈佛体系结构的系统要快。我试图寻找原因,但我还没有找到一个解释,澄清了我的事情 据我理解: -在冯·诺依曼体系结构中,CPU可以一次执行一个操作,这意味着它可以在一个周期内从内存中获取数据或指令。因此,要对数据执行某种操作,需要两个周期,一个周期取数据,一个周期取指令。 -在哈佛体系结构中,CPU可以在同一时钟周期内获取数据和指令,因为有两个独立的内存块和两组独立的数据地址总线 因此,如果HV体系结构可

我读过关于这两种体系结构的文章,在互联网上的某个地方有人说,使用冯·诺依曼体系结构的系统比使用哈佛体系结构的系统要快。我试图寻找原因,但我还没有找到一个解释,澄清了我的事情

据我理解: -在冯·诺依曼体系结构中,CPU可以一次执行一个操作,这意味着它可以在一个周期内从内存中获取数据或指令。因此,要对数据执行某种操作,需要两个周期,一个周期取数据,一个周期取指令。 -在哈佛体系结构中,CPU可以在同一时钟周期内获取数据和指令,因为有两个独立的内存块和两组独立的数据地址总线


因此,如果HV体系结构可以在一个周期内完成与VN相同的事情,为什么它会更慢?一件事所用的循环次数少不是意味着它应该比另一件事快吗?请对我放松点,我是嵌入式系统的高手。谢谢你阅读我的帖子

在冯·诺依曼体系结构中,CPU按顺序运行,例如,它提取指令、解码指令、提取操作数数据、计算结果并存储指令。所有这些步骤都使用相同的内存通道。 哈佛体系结构有两个内存通道,一个用于指令,一个用于数据。与冯·诺依曼体系结构相比,如果CPU支持流水线,即当已经解码的指令x在数据通道上获取操作数数据时,指令x+1在指令通道上同时获取,则它具有优势。
因此,如果CPU是流水线的,哈佛体系结构比冯·诺依曼体系结构快。

这完全是学术性的。而且非常过时。从学术类型的角度来看,哈佛体系结构可以同时执行数据事务和指令事务,冯·诺依曼一次只能执行其中一项或另一项

真正的哈佛有一个问题,你不能真正使用它。你不能有一个引导加载程序你不能有一个加载程序的操作系统,因为你不能使用数据事务将指令放入内存,然后分支到这些指令并运行它们。这两个内存系统是分开的。一旦你走上这条路,它就不再是哈佛了,而是一个经过改造的哈佛或冯·诺依曼

看看维基百科是如何定义它的,你今天看到的现代总线是经过修改的,因为它的定义是,你不能和冯·诺依曼同时做数据和指令,但它们使用相同的总线。您将看到一条读地址总线一条读数据总线一条写地址总线和一条写数据总线,指令和数据都将穿过读总线,数据穿过写总线。多个事务可以同时发生,多总线宽度大小的指令提取可以在一个时钟周期内发生,该时钟周期以读取地址请求开始,下一个时钟周期数据读取地址请求可以在同一总线上开始,指令地址请求确认后的一些时钟数,然后,读取地址请求被确认,它们不必以相同的顺序返回,这取决于设计。然后读取数据总线将发送数据,然后处理器将确认该数据。写入总线也可以同时处理飞行中的多个数据事务。独立的读写总线可以同时进行操作,而不仅仅是每个总线同时有多个事务

所有这些都与指令集无关,您可以这样做,而且指令集后面有不同的总线。根据指令集、抓取、管道和缓存的工作方式,可以让纯教科书冯·诺依曼接近纯教科书哈佛的性能。但是,如果您认为预缓存、预管道化是一次一条指令类型的体系结构,那么您可以说1都不赢,因为指令提取必须等待数据事务的加载和存储,或者其他具有内存访问的指令在下一次提取发生之前完成,因此哈佛不能同时执行数据和指令。或者你可以说,哈佛大学被允许并行地做事情,而冯·诺依曼不是,哈佛大学获胜,因为它可以完成一个简单的数据事务,并在同一个周期内进行下一次提取,周期性地以一个周期击败冯·诺依曼

从纯意义上讲,尽管冯·诺依曼一次只能教一门课,但他不能比哈佛更快,他可以打成平局,但不能获胜。哈佛大学有两辆公共汽车可以并行运行,所有其他因素保持不变,这种差异使哈佛大学在性能方面略占优势。所有其他因素保持不变的指令集、流水线设计、预取等

请注意,一次一条指令没有流水线意味着执行大多数指令需要多个时钟周期,正如您在pre中看到的那样 -缓存,预流水线处理器,它们有一个表,表中列出了它需要多少时钟,你可以看看指令,看看它需要多少时钟,以及为什么需要这么多时钟。即使有管道,哈佛也有一点优势。但是如果你说冯·诺依曼总线的宽度是哈佛总线的两倍,你可以一次获取两条指令,你可以一次在两个连续的数据位置上执行数据操作,现在你的带宽比哈佛总线更好,有时甚至可以与哈佛总线相平。但这并不是一个纯粹的比较


同样,这些观念已经过时了。哈佛ish处理器的数量非常少,但为了使其发挥作用,它们确实经过了哈佛大学的改造,因为有一种方法可以缩小内存系统之间的差距。

您能在此处发布一个链接吗?。最后,在冯·诺依曼体系结构和哈佛体系结构表中对两者进行了比较,我看到的唯一一点是冯·诺依曼更常见,因此更优化。2个周期到负载的问题可以用流水线解决,但这并不能使vN比哈佛更快。哇,这是一个非常糟糕的链接,没有任何意义。我可能在该网站上看到过其他文章,你应该不惜一切代价避免该页面和该网站上的文章,并且/或者假设他们的结论与事实相反。RISC vs CISC在该页面上的结论也是假的……啊,你提出了那个链接,这是你的问题,不要阅读/使用那个网站,就这么简单。那么你认为他读到的信息是错误的吗?对于流水线架构,我认为是错误的。流水线、指令集等都是无关的。哈佛有两辆公共汽车,可以同时做两件事,它比冯·诺依曼有性能优势。对于具有基于寄存器的指令的数据周期的指令,它们完美地结合在一起。因此,哈佛大学周期性地比冯·诺依曼(von neumann)快一点。哈佛大学也可以管道化,并且表现优于冯·诺依曼(von neumann)。哈佛的问题是,你不能将教科书版本的处理器用作通用处理器,而将其大部分留给学术界。有一些修改过的Harvard使用单独的I和D总线漫游,是的。或者说,我们相信,因为我们大多数人实际上看不到内心世界design@jjj是的,这是错误的。此外,哈佛体系结构还远远不是学术性的,因为它被许多微控制器和DSP所使用。还有许多改进的哈佛处理器,具有独立的I和D缓存,由统一的第二级和第三级缓存和内存存储支持。这里的关键是哈佛可以在一个时钟周期内完成两件事,即获取和冯·诺依曼无法完成的数据周期。区别并不比这更复杂,在所有其他因素不变的情况下,哈佛大学有一个表现优势。