转载自 “拥抱星空” 的博客http://hi.baidu.com/showmewhat/blog/item/546e66f238e1ce58352accba.html

老师我已经知道对采用这两种结构的处理器而言,二者的区别是冯诺伊曼结构的程序空间(地址空间)和数据空间不分开,而哈佛结构的程序空间分开。
       但是我不清楚的是:采用冯诺伊曼结构的处理器可以承担起个人电脑CPU的责任,那么采用哈佛结构的处理器呢??它是否可以作为个人电脑的CPU呢?
       哈佛结构强调了总体的系统速度以及通讯和处理器配置方面的灵活性,重在对效率的要求,似乎从这点就可以看到冯诺伊曼的局限性及不足,但为什么当前的计算机采用冯诺伊曼结构?是从成本上的考虑吗?或是在于哈佛结构应用于个人计算机的复杂性?

老师:

冯.诺伊曼结构
    1945年,冯.诺伊曼首先提出了“存储程序”的概念和二进制原理,后来,人们把利用这种概念和原理设计的电子计算机系统统称为“冯.诺伊曼型结构”计算机。冯.诺伊曼结构的处理器使用同一个存储器,经由同一个总线传输,如下图所示:

图 冯.诺伊曼结构
    冯.诺伊曼结构处理器具有以下几个特点:

必须有一个存储器;

必须有一个控制器;

必须有一个运算器,用于完成算术运算和逻辑运算;

必须有输入和输出设备,用于进行人机通信。

冯.诺伊曼的主要贡献就是提出并实现了“存储程序”的概念。由于指令和数据都是二进制码,指令和操作数的地址又密切相关,因此,当初选择这种结构是自然的。但是,这种指令和数据共享同一总线的结构,使得信息流的传输成为限制计算机性能的瓶颈,影响了数据处理速度的提高。  
    在典型情况下,完成一条指令需要3个步骤,即:取指令、指令译码和执行指令。从指令流的定时关系也可看出冯.诺伊曼结构与哈佛结构处理方式的差别。举一个最简单的对存储器进行读写操作的指令,如下图所示,指令1至指令3均为存、取数指令,对冯.诺伊曼结构处理器,由于取指令和存取数据要从同一个存储空间存取,经由同一总线传输,因而它们无法重叠执行,只有一个完成后再进行下一个。

图 冯.诺曼结构处理器指令流的定时关系示意图

哈佛结构
    数字信号处理一般需要较大的运算量和较高的运算速度,为了提高数据吞吐量,在数字信号处理器中大多采用哈佛结构,如下图所示

图 哈佛结构
与冯.诺伊曼结构处理器比较,哈佛结构处理器有两个明显的特点:

使用两个独立的存储器模块,分别存储指令和数据,每个存储模块都不允许指令和数据并存;

使用独立的两条总线,分别作为CPU与每个存储器之间的专用通信路径,而这两条总线之间毫无关联。

后来,又提出了改进的哈佛结构,如下图所示

图   改进型哈佛结构
其结构特点为:

使用两个独立的存储器模块,分别存储指令和数据,每个存储模块都不允许指令和数据并存,以便实现并行处理;

具有一条独立的地址总线和一条独立的数据总线,利用公用地址总线访问两个存储模块(程序存储模块和数据存储模块),公用数据总线则被用来完成程序存储模块或数据存储模块与CPU之间的数据传输;

两条总线由程序存储器和数据存储器分时共用。

在典型情况下,完成一条指令需要3个步骤,即:取指令、指令译码和执行指令。从指令流的定时关系也可看出冯.诺伊曼结构与哈佛结构处理方式的差别。举一个最简单的对存储器进行读写操作的指令,如下图所示,指令1至指令3均为存、取数指令,对冯.诺伊曼结构处理器,由于取指令和存取数据要从同一个存储空间存取,经由同一总线传输,因而它们无法重叠执行,只有一个完成后再进行下一个。

图 冯.诺曼结构处理器指令流的定时关系示意图
    如果采用哈佛结构处理以上同样的3条存取数指令,如下图所示,由于取指令和存取数据分别经由不同的存储空间和不同的总线,使得各条指令可以重叠执行,这样,也就克服了数据流传输的瓶颈,提高了运算速度。
    哈佛结构强调了总的系统速度以及通讯和处理器配置方面的灵活性。

图 哈佛结构处理器指令流的定时关系示意图
------------------------------------------------------------------------------

总得来说,哈佛机构的高性能体现在在单片机、DSP芯片平台上运行的程序种类和花样较少,因为各个电子娱乐产品中的软件升级比较少,应用程序可以用汇编作为内核,最高效率的利用流水线技术,获得最高的效率。

冯诺依曼结构主要是基于电脑购买者对电脑的使用途径不同----各种娱乐型用户、各种专业开发用户等,且安装的软件的种类繁多,升级频繁,多种软件同时运行时处理的优先级比较模糊,因特尔芯片不具备彻底智能分配各程序优先级和流水线的机制,机械的分配优先和流水线反而容易使用户不便。

比如,你使用电脑过程中对暴风影音播放器的使用中,有时希望它最快打开,有时希望它的打开实在打开浏览器之后,因此人对个人电脑的软件使用习惯是很不同的。从而,致力于提高主频和缓存的冯诺依曼结构才是PC的最佳选择。

总结
      体系结构与采用的独立与否的总线无关,与指令空间和数据空间的分开独立与否有关。51单片机虽然数据指令存储区是分开的,但总线是分时复用得,所以属于改进型的哈佛结构。ARM9虽然是哈佛结构,但是之前的版本(例如ARM7)也还是冯.诺依曼结构。早期的X86能迅速占有市场,一条很重要的原因,正是靠了冯.诺依曼这种实现简单,成本低的总线结构。现在的处理器虽然外部总线上看是诺依曼结构的,但是由于内部CACHE的存在,因此实际上内部来看已经 类似 改进型哈佛结构的了。至于优缺点,哈佛结构就是复杂,对外围设备的连接与处理要求高,十分不适合外围存储器的扩展。所以早期通用CPU难以采用这种结构。而单片机,由于内部集成了所需的存储器,所以采用哈佛结构也未尝不可。现在的处理器,依托CACHE的存在,已经很好的将二者统一起来了。

哈佛结构与冯诺伊曼结构相关推荐

  1. 哈佛结构和冯诺伊曼结构

    在计算机中有两种结构形式,下面介绍一下: 哈佛结构 哈佛结构是一种将程序指令存储和数据存储分开的存储器结构.哈佛结构是一种并行体系结构,它的主要特点是将程序和数据存储在不同的存储空间中,即程序存储器和 ...

  2. 冯诺曼伊体系 计算机五大逻辑,科学网—再谈冯·诺伊曼结构 - 姜咏江的博文

    再谈冯·诺伊曼结构 姜咏江 为了说明问题简单,我引用一段百度百科当中的文字和图: 冯.诺依曼体系结构是现代计算机的基础,现在大多计算机仍是冯.诺依曼计算机的组织结构,只是作了一些改进而已,并没有从根本 ...

  3. 【计算机组成原理】冯诺伊曼结构和计算机性能指标

    冯·诺伊曼结构 冯·诺依曼于1945年6月发表了著名的关于EDVAC的报告草案,报告提出的体系结构一直延续至今,即冯·诺伊曼结构. EDVAC报告草案中提出了 "存储-程序(Stored-P ...

  4. 重学计算机组成原理(一) —— 冯诺伊曼结构

    背景介绍 第一台通用电子计算机 ENIAC EDVAC -> 冯诺伊曼关于EDVAC的报告草案,即是冯诺伊曼结构计算机的起始 EDSAC UNIVAC 冯诺伊曼结构要点 在冯诺依曼署名的< ...

  5. 2.2 冯·诺伊曼结构的要点

    计算机组成 2 计算机基本结构 2.2 冯·诺伊曼结构的要点 现在的计算机形态各异,但是究其本质,几乎全部采用了冯·诺依曼结构要了解计算机,首先要知道什么是冯·诺依曼结构.当然,冯·诺依曼结构的内涵是 ...

  6. 办公用PC机的CPU是基于冯诺伊曼结构,然而单片机是哈佛结构的

    办公用PC机的CPU是基于冯诺伊曼的体系结构,然而单片机是基于哈佛结构的.哈佛结构下ROM和RAM是分开编址,即程序和数据分开保存,访问时用不同的指令加以区分,并可同时访问,在这样的体系结构下有利于提 ...

  7. 微型计算机哈弗结构,冯·诺伊曼结构和哈弗结构,RISC和CISC-控制器/处理器-与非网...

    1.冯诺依曼架构和哈佛架构 如果你学习过X86微机原理和汇编语言,你可能会依稀地记得,我们在用汇编语言开发X86代码时,需要定义数据段,代码段,堆栈段和扩展段,这些段定义好之后,将会在写程序的时候有不 ...

  8. 从冯诺伊曼结构看AI

    AI, Artificial Intelligence, 人工智能. 就像每个人眼中都有一个自己的哈姆雷特一样,每一个看AI 都是不一样的.作为一个老程序员,也只是一个工作时间长一些的程序员而已,本没 ...

  9. 从冯诺伊曼结构看AI 1

    版权声明:本文为半吊子子全栈工匠(wireless_com,同公众号)原创文章,未经允许不得转载. https://blog.csdn.net/wireless_com/article/details ...

最新文章

  1. centos下kong源码安装
  2. three ways for reducing the level of anxiety
  3. xshell怎么让程序后台运行_使程序在Linux下后台运行
  4. Redis 2.8.18 安装报错 error: jemalloc/jemalloc.h: No such file or directory解决方法
  5. AutoPtr 的局限性
  6. STM32入门开发:编写XPT2046电阻触摸屏驱动(模拟SPI)
  7. matlab 声纹识别,识别模型论文,关于基于MATLAB的声纹识别系统软件的设计相关参考文献资料-免费论文范文...
  8. 多功能芯片——GSV2002
  9. matlab研究锂电池,基于MATLAB的锂电池健康状态建模实现
  10. 如何让ARM板开机启动Qt
  11. You Apple Developer Program membership expires in 12 days
  12. 【功能代码设计】3D坦克大战
  13. 趣头条“瘦身”减负?
  14. 干货!Labeling Trick: 一个图神经网络多节点表示学习理论
  15. 小程序云开发登陆流程
  16. 努比亚android11,努比亚Play开测Android11 填写基本信息即可
  17. Python读写yaml文件(使用PyYAML库)
  18. 开什么玩笑?股票价格如何经得起AI的推敲?| 技术头条
  19. JavaScript进阶(二)
  20. XNA学习笔记(5)-调节刷新率(framerate)

热门文章

  1. nltk中文分句_如何使用nltk进行中文分词?
  2. 【AUTOSAR-E2E】-1.3-详述COM E2E Callout解决方案
  3. 小程序marker callout 遇到的坑
  4. css如何绘制一个等边三角形
  5. 重读《从菜鸟到测试架构师》-- 从专家到高手
  6. 尚硅谷docker基础篇 2018版
  7. 产品读书《极简生活法则》
  8. 深藏不漏!.cc域名接连高价成交!最高突破6位数!
  9. 触发器实例精讲-志在必得
  10. 云+社区杂货摊年终上新,定制礼盒发发发!