8

为什么在设计个人电脑时,基于冯诺依曼体系结构的计算机体系结构优于哈佛体系结构;而哈佛架构用于设计基于微机的计算机系统和基于DSP的计算机系统?von neumann vs harvard architecture

回答

10

目前用于PC的CPU设计同时具有哈佛和冯诺依曼元素(,更多冯诺依曼,尽管)。

如果你看看L1缓存,你会发现在AMD,ARM和Intel系统中有指令L1缓存和数据L1缓存,可以独立并行访问。这是哈佛部分。但是,在L2,L3或DRAM中,数据和代码是混合的。这是冯诺伊曼部分

那么为什么不是采用PC的纯哈佛架构?我的意见是它没有意义。如果您对大多数应用程序进行概要分析,您会发现L1指令缓存未命中率非常小,为。这意味着通常代码大小不是问题。因此,为代码设计一个完全独立的路径是没有意义的。数据可能变得非常大,但代码不能真正。

在DSP中,使用单独的代码和数据路径是有意义的。这是因为DSP的工作主要是“流数据”,这意味着对缓存的需求相当小。此外,DSP代码可以包含增加代码大小的预先计算的系数。所以在数据大小和代码大小之间取得平衡,这意味着使用哈佛架构是有意义的。

+1

*纯粹*哈佛将意味着单独的RAM(或ROM),而不仅仅是分割高速缓存。因此,您刚编译的代码可能必须从数据存储器写入磁盘,并从磁盘重新加载到程序存储器中。只有当代码是固定的,并在ROM中才有意义。 (即便如此,正如你指出的那样,统一缓存在L1之前是有意义的)。拆分缓存的部分原因是吞吐量/延迟:您无法构建与两个单独的32k缓存的总吞吐量一样快的64k缓存。 [也见这个答案](http://stackoverflow.com/a/38549736/224132)关于小缓存的速度技巧。 – 2016-09-21 01:37:18

4

冯诺依曼体系结构和哈佛体系结构之间的根本区别在于,在哈佛体系结构中,指令存储器与数据存储器不同,在冯诺依曼中它们是相同的。这反映了PC的实际情况(其中程序存储和读取来自同一介质的数据,通常是磁盘和RAM)以及微控制器(其中程序存储在非易失性存储器中,数据存储在易失性存储器中)。

相关问题