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

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

为什么个人电脑还沿用冯·诺伊曼结构而不使用哈佛结构?
【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 分开的,而在芯片外是共享内存(即使现在的多核芯片现在也在共享内存)。

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

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

原文地址:知乎。

相关文档
最新文档