在现实世界中很少有非常纯粹的概念,特别是在实际的应用里。教科书里的大多是理想化的模型,便于掌握某个概念的重点和本质,但实际中很难达到这种理想化的状态。
哈佛结构和冯诺依曼结构主要区别在是否区分指令与数据。在教科书里这是两种截然不同的做法。
实际上在内存里,指令和数据是在一起的。而在CPU内的缓存中,还是会区分指令缓存和数据缓存,最终执行的时候,指令和数据是从两个不同的地方出来的。你可以理解为在CPU外部,采用的是冯诺依曼模型,而在CPU内部用的是哈佛结构。
大部分的DSP都没有缓存,因而直接就是哈佛结构。
哈佛结构设计复杂,但效率高。冯诺依曼结构则比较简单,但也比较慢。CPU厂商为了提高处理速度,在CPU内增加了高速缓存。也基于同样的目的,区分了指令缓存和数据缓存。有时为了解决现实问题,究竟是什么主义真的没那么重要。因而个人认为争论到底是哪种结构意义不大。
【加菲猫的回答(7票)】:
因为 PC 市场已经被 微软 和 IBM-PC 架构垄断了。
但是,实际上 哈佛结构只不过是“程序”和“存储”分离,然而内存就那个样子,好比你就插了一条内存条,怎么实现指令和数据分开“同时”读取呢?cache。现在 intel 的处理器虽说是“CISC”但是也应用了大量的RISC思想。当今的处理器速度已经如此高,intel有很长的流水线,如果指令和数据还不分开同时读取这会极大的影响流水线的效率。所以在流水线设计中有多个cache,而数据和指令一般会同时缓存进Cache,这样在处理器流水线作业时其实也有哈佛结构的影子。