分享

为什么个人电脑还沿用冯·诺伊曼结构而不使用哈佛结构?

 pgl147258 2015-01-27

【Cascade的回答(60票)】:

在现实世界中很少有非常纯粹的概念,特别是在实际的应用里。教科书里的大多是理想化的模型,便于掌握某个概念的重点和本质,但实际中很难达到这种理想化的状态。

哈佛结构和冯诺依曼结构主要区别在是否区分指令与数据。在教科书里这是两种截然不同的做法。

实际上在内存里,指令和数据是在一起的。而在CPU内的缓存中,还是会区分指令缓存和数据缓存,最终执行的时候,指令和数据是从两个不同的地方出来的。你可以理解为在CPU外部,采用的是冯诺依曼模型,而在CPU内部用的是哈佛结构。

大部分的DSP都没有缓存,因而直接就是哈佛结构。

哈佛结构设计复杂,但效率高。冯诺依曼结构则比较简单,但也比较慢。CPU厂商为了提高处理速度,在CPU内增加了高速缓存。也基于同样的目的,区分了指令缓存和数据缓存。有时为了解决现实问题,究竟是什么主义真的没那么重要。因而个人认为争论到底是哪种结构意义不大。

【加菲猫的回答(7票)】:

因为 PC 市场已经被 微软 和 IBM-PC 架构垄断了。

但是,实际上 哈佛结构只不过是“程序”和“存储”分离,然而内存就那个样子,好比你就插了一条内存条,怎么实现指令和数据分开“同时”读取呢?cache。现在 intel 的处理器虽说是“CISC”但是也应用了大量的RISC思想。当今的处理器速度已经如此高,intel有很长的流水线,如果指令和数据还不分开同时读取这会极大的影响流水线的效率。所以在流水线设计中有多个cache,而数据和指令一般会同时缓存进Cache,这样在处理器流水线作业时其实也有哈佛结构的影子。

界限我说不好是什么样子,就像RISC 和 CISC 应该没有一道绝对的墙把它们区别开。

参考 intel 处理器体系结构的发展。

【ZhuJingsi的回答(6票)】:

实际上,绝大多数现代计算机使用的是所谓的“Modified Harvard Architecture”,指令和数据共享同一个 address space,但缓存是分开的。可以说是两种架构的一种折中吧。

【知乎用户的回答(2票)】:

排名第一的答案已经说的很好了,但是那是侧重于从技术角度。

从另一个角度来看,计算机自大规模生产以来,不管是wintel系列还是apple血统,到如今都已经发展成为高度系统化的产业链,有人做操作系统,相应的就有人在这个系统上做软件,有人做芯片,相应的就有人基于这些芯片做外设,于是这个问题就不仅仅是一个人或者几个人能决定的了,因为涉及到了各个方面很多人的利益。

顺着题主的思路我想到两个可能,第一是摩尔定律受到硅片本身的物理结构限制,当人类的技术水平在同一块硅片上再做不出更大规模的集成电路时,人们就不得不采用更优化的系统结构,比如近些年出现很多对量子计算机模型的讨论。第二是受政治力量的影响,比如说我们要和美国开战,绝对不能用intel处理器跑windows系统去控制导弹发射(龙芯+红旗?)当然这个有点跑题了,已经不是大规模民用范畴了。

【阿牧的回答(0票)】:

我覺得是計算機軟件硬件系列決定的,更改結構會讓之前的軟硬件難以移植和通用。

【知乎用户的回答(0票)】:

存储的时候很难分清一段代码是数据还是指令。比如现在python、ruby这种解释性语言,他们都是用最原始的字符串存储的。所以实际上代码什么的都是被当做普通的数据存在文件系统里。只有到了执行,阶段,OS可以明确的知道哪部分是交给CPU去执行的指令,哪部分是数据,才会有区分。这里的区分主要是cache的区分,因为data和instruction的locality不同,所以他们的cache的设计有所不同。

【GothicMoron的回答(0票)】:

现代计算机都是数据 cache 跟指令 cache 分开的,而在芯片外是共享内存( 即使现在的多核芯片现在也在共享内存 )。

也就是说内部表现为哈佛结构,外部表现为冯诺以曼结构。

至于为何还在使用这种「冯诺以曼」结构,我觉得可能因为这种结构在现在大量采用的「虚拟存储器」技术下组织起来更方便吧。

原文地址:知乎

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多