【问题标题】:Why is von neumann faster than harvard architecture [closed]为什么冯诺依曼比哈佛建筑学更快[关闭]
【发布时间】:2019-02-06 18:50:55
【问题描述】:

我读到了这两种架构,并且在互联网的某个地方有人说使用冯诺依曼架构的系统比使用哈佛架构的系统更快。我试图寻找为什么会出现这种情况,但我还没有找到可以为我澄清这些事情的解释。

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

如果 HV 架构可以在一个周期内完成与 VN 相同的操作,为什么它会更慢?用于一件事的周期越少是否意味着它应该比另一件事更快?请放轻松,我是嵌入式系统的菜鸟。感谢您阅读我的帖子!

【问题讨论】:

  • 你能发一个链接到你读到这篇文章的地方吗?
  • tutorialspoint.com/embedded_systems/es_architectures.htm。最后比较表格中的两者(冯诺依曼架构与哈佛架构)
  • 我看到的唯一一点是冯诺依曼更常见,因此更优化。 2-cycles-to-load 问题可以使用流水线解决,但这并不能使 vN 比 harvard 更快。
  • 哇,这是一个非常糟糕的链接,没有任何意义。我可能在该网站上看过其他文章,您应该不惜一切代价避免该网站上的该页面和文章,和/或假设与他们的结论相反的是正确的。该页面上的 RISC 与 CISC 结论也是虚假的......
  • 啊,你发了那个链接,那是你的问题,不要阅读/使用那个网站,就这么简单。

标签: embedded microcontroller von-neumann harvard-architecture


【解决方案1】:

在冯诺依曼架构中,CPU 按顺序运行,例如它确实获取指令,对其进行解码,获取操作数(数据),计算结果并存储它。所有这些步骤都使用相同的内存通道。
哈佛架构有两个内存通道,一个用于指令,一个用于数据。与冯诺依曼架构相比,它有一个优势,如果 CPU 支持流水线,即当已经解码的指令 x 正在通过数据通道获取操作数(数据)时,指令 x+1 同时通过指令频道。
所以,如果 CPU 是流水线的,哈佛架构比冯诺依曼架构更快。

【讨论】:

  • 所以你认为他读到的信息有误?
  • 对于流水线架构,我认为是错误的。
  • 流水线、指令集等无关紧要。哈佛有两条总线可以同时做两件事,它比冯诺依曼有性能优势。对于具有数据周期的指令,对于基于寄存器的指令,它们完美结合。所以哈佛会周期性地比冯诺依曼领先。
  • 哈佛也可以流水线化,并且优于冯诺依曼。哈佛的问题是您不能将教科书版本的处理器用作通用处理器,而将其主要留在学术界。是的,有一些经过改进的哈佛使用独立的 I 和 D 总线漫游。 (或者我们认为我们大多数人实际上看不到内部设计)
  • @jjj 是的,这是错误的。此外,哈佛架构远非学术性的,因为它被许多微控制器和 DSP 使用。还有许多经过修改的哈佛处理器具有独立的 I 和 D 缓存,由统一的 2 级和 3 级缓存和内存存储支持。
【解决方案2】:

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

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

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

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

从纯粹的意义上说,虽然冯诺依曼一次一条指令不能比哈佛快,但它可以打平但不能赢。哈佛有两条可以并行运行的总线,并且所有其他因素保持不变,就性能而言,差异给哈佛带来了轻微的优势。所有其他因素保持不变(指令集、管道设计、预取等)。

请注意,一次一条指令没有流水线意味着执行大多数指令需要多个时钟周期,正如您在预缓存、预流水线处理器中看到的那样,它们有需要多少时钟的表格,您可以查看无论如何,该指令,看看它是如何以及为什么需要这么多的。即使有管道哈佛也有微弱的优势。但是如果你说冯诺依曼总线的宽度是哈佛的两倍,你可以一次获取两条指令,你可以一次在两个连续的数据位置上执行数据操作,现在你的带宽比哈佛更好,并且可以绑定或有时打败它。但这不是纯粹的比较。

同样,这些概念已经过时了。哈佛式处理器的数量非常少,但为了使它们有用,它们实际上是经过修改的哈佛,因为内存系统之间存在间隙。

【讨论】:

  • 这里的关键点是哈佛可以在一个时钟周期内做两件事,获取和冯诺依曼无法做到的数据周期。区别并不比这更复杂,所有其他事情都保持不变,哈佛有性能优势。
猜你喜欢
  • 2015-01-05
  • 1970-01-01
  • 1970-01-01
  • 2014-08-02
  • 2015-04-03
  • 1970-01-01
  • 2015-08-14
  • 2010-10-20
  • 2011-02-16
相关资源
最近更新 更多