冯·诺依曼结构(von Neumann architecture)也称作普林斯顿结构,是一种将程序(指令序列的集合)和数据存放在同一存储器的不同地址的电脑设计概念结构。这是建立在冯·诺依曼原理,即程序可看做一种特殊的“数据”,同样地可以被处理和存储,故两者可存放在同一存储器中。
那么该体系结构具有什么样的特点呢?第一,程序和数据存放在同一存储器的不同地址上;第二,存储单元线性排列,且其位数固定;第三,顺序执行,即程序/数据—>内存—>取指令执行指令;第四,组成上有运算器,存储器,控制器,输入/输出设备。如下图:
冯·诺依曼体系结构的特点决定了它可以最大限度地利用资源。怎么理解呢?你数据和程序放在同一个地方,不用花销太多的资源就能取到数据和程序。这也算是冯氏结构的一大优点吧。可是建立在程序和数据间的共享总线导致了冯·诺依曼瓶颈。CPU和存储器之间的流量相比于内存容量而言是非常小的,因为程序和数据是不同同时被读取的、CPU的速率远远大于内存读取速率,这样在处理数据较大的情况时,就会严重限制其CPU的处理速度(CPU必须继续强迫等待数据在内存的转换因为CPU速度和内存容量远远比它们之间的流量增长来的更快)。
与冯氏结构相对的是哈佛结构,即将程序和数据分开存储的结构。其过程CPU首先到程序指令储存器中读取程序指令内容,解码后得到数据地址,再到相应的数据储存器中读取数据,并进行下一步的操作(通常是执行)。程序指令储存和数据储存分开,数据和指令的储存可以同时进行,可以使指令和数据有不同的数据宽度。如下图:
联系冯氏结构的瓶颈,我们很快能想到哈佛结构能够完成指令和数据的并发操作,而冯氏结构只能是顺序操作。这和我们之前学习的串行和并行似乎有相同的道理在里面,从而我们可以把冯氏结构看出串行结构,而哈佛结构看成并行结构。
在通用计算机系统中,随着处理器和操作系统更新,软件的不断更新,冯·诺依曼结构占有绝对优势,但是在嵌入式应用中,程序大多数都是直接固化在电路板上的,当然这时使用冯·诺依曼结构也完全可以,但是其灵活性得不到体现。
综上所述:相同点:其组成部件是相同的;不同点:程序和数据存放位置处理的不一样。
PS:过段时间再查点纸质和网上资料,再行补充。
参考资料:
0.Von Neumann architecture:http://en.wikipedia.org/wiki/Von_Neumann_architecture
1.冯·诺伊曼结构:http://zh.wikipedia.org/zh/%E5%86%AF%C2%B7%E8%AF%BA%E4%BC%8A%E6%9B%BC%E7%BB%93%E6%9E%84
2.Harvard_architecture:http://en.wikipedia.org/wiki/Harvard_architecture
3.哈佛结构:http://zh.wikipedia.org/zh/%E5%93%88%E4%BD%9B%E7%BB%93%E6%9E%84
4.http://www.cnblogs.com/li-hao/archive/2011/12/21/2296010.html