发布网友 发布时间:2024-05-03 22:57
共3个回答
热心网友 时间:2024-06-17 09:11
因为在现代计算机刚开始发展的时候冯诺依曼架构的影响力更大。今天被广泛使用的是改进后的冯诺依曼架构,而非原始的冯诺依曼架构。回到问题,这和现代计算机的发展历史有关,冯诺依曼本人参与了最初的普林斯顿架构的计算机的设计与制造,此时现代计算机刚起步没多久,大家还没有多少设计建造的思路与经验,处于探索阶段。后来的厂商设计制造计算机时很大程度上继承、参考了诺依曼那几年的工作和当时制造的机器,顺着这个方向一直发展至今。变动架构对厂商来说成本太高了,即使在今天。在现代计算机刚起步的时候,哈佛架构远没有冯诺依曼架构的影响力大,甚至没有它在今天的影响力大(因为信息不够流通),这点和冯诺依曼本人作为二战盟军科技总指挥、学界大拿在战后的地位也有关。
热心网友 时间:2024-06-17 09:12
PC从整体上来看,不管是指令还是数据都是存储于内存中,然后读入CPU进行执行,这确实是冯诺依曼结构。但是指令和数据进入CPU后,会依次通过L3、L2缓存,最后分别进入L1-I和L1-D缓存中,因此CPU内核中指令和数据是完全分开走不同总线的。所以说PC外在表现上是冯诺依曼结构,但对于CPU内核来说,是类哈弗结构的。数据、指令虽然共用了相同的地址空间,在CPU外采用同一条总线进行传输,但在CPU内部又将数据、指令总线分开。哈佛结构的程序总线和数据总线分开,冯诺依曼两者不分开。
CPU运行程序要先把程序和数据读入内存,编过程的同学应该知道,你无法预料到这些程序和数据具体在那个物理地址,而是采用逻辑地址。PC机运行的程序很多,如果采用哈佛结构,程序总线和数据总线对应物理地址的切换会耗费更多的资源。而采用一条总线来读,就不存在这个问题。
热心网友 时间:2024-06-17 09:08
哈佛体系架构有个致命的弱点在动态加载程序上面,想象我们从外存中读取一段程序然后加载到RAM,这个程序是在数据内存当中的,我们需要一种机制将数据内存再传输到程序内存当中去,这反而增加了设备复杂度。另外,绝对不允许CPU/DSP读取程序内存来当作数据,这也是不现实的,程序一般都有只读数据区和静态数据区,烧写程序的时候会当作程序的一部分烧进ROM中,想像一下如果为了把程序和数据分开,而需要设置两块ROM,再把其中一块ROM和RAM通过复用器接起来,这是多么惨烈的景象,更不用说每次烧写都要分开烧两块ROM了。实际上即使是DSP通常也允许从程序内存的总线上读取一些数据。
对于多任务操作系统来说,管理程序内存是一件非常重要的事情,而且仅仅是保护模式下的页面映射等等机制就已经足够复杂了,如果还要求将程序和数据分开管理,复杂度就太高了。这种时候冯诺依曼体系结构就有非常大的优势了。纯的(或者接近纯的)哈佛结构只用于非常简单的硬件系统,这种系统当中通常程序完全运行在ROM中,数据几乎完全存储于RAM中,这样的结构足够简单。而要支持多任务的处理器通常引入Cache层,在Cache层实现一个哈佛体系架构,这样可以兼顾性能和灵活性。实际上,绝大多数现代计算机使用的是所谓的“Modified Harvard Architecture”,指令和数据共享同一个 address space,但缓存是分开的。可以说是两种架构的一种折中吧。