1、冯·诺依曼结构

冯·诺依曼结构又被称作普林斯顿体系结构 (Princetionarchitecture)。1945年,冯·诺依曼首先提出了"存储程序"的概念和二进制原理,后来,人们把利用这种概念和原理设计的电子计算机系统统称为"冯·诺依曼型结构"计算机。冯·诺依曼结构下的处理器使用同一个存储器,经由同一个总线传输。


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

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

2、哈佛结构

哈佛结构是一种将程序指令存储和数据存储分开的存储器结构,如图1所示。中央处理器首先到程序指令存储器中读取程序指令内容,解码后得到数据地址,再到相应的数据存储器中读取数据,并进行下一步的操作(通常是执行)。程序指令存储和数据存储分开,可以使指令和数据有不同的数据宽度,如Microchip公司的PIC16芯片的程序指令是14位宽度,而数据是8位宽度。

哈佛结构的微处理器通常具有较高的执行效率。其程序指令和数据指令分开组织和存储的,执行时可以预先读取下一条指令。 
目前使用哈佛结构的中央处理器和微控制器有很多,除了Microchip公司的PIC系列芯片,还有摩托罗拉公司的MC68系列、Zilog公司的Z8系列、ATMEL公司的AVR系列和ARM公司的ARM9、ARM10和ARM11。 
哈佛结构是指程序和数据空间独立的体系结构, 目的是为了减轻程序运行时的访存瓶颈。例如最常见的卷积运算中, 一条指令同时取两个操作数, 在流水线处理时, 同时还有一个取指操作, 如果程序和数据通过一条总线访问, 取指和取数必会产生冲突, 而这对大运算量的循环的执行效率是很不利的。哈佛结构能基本上解决取指和取数的冲突问题。而对另一个操作数的访问, 就只能采用Enhanced哈佛结构了, 例如像TI那样,数据区再split, 并多一组总线。 或向AD那样,采用指令cache, 指令区可存放一部分数据。
在典型情况下,完成一条指令需要3个步骤,即:取指令、指令译码和执行指令。从指令流的定时关系也可看出冯·诺依曼结构与哈佛结构处理方式的差别。举一个最简单的对存储器进行读写操作的指令,指令1至指令3均为存、取数指令,对冯·诺依曼结构处理器,由于取指令和存取数据要从同一个存储空间存取,经由同一总线传输,因而它们无法重叠执行,只有一个完成后再进行下一个。

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

如果采用哈佛结构处理以上同样的3条存取数指令,由于取指令和存取数据分别经由不同的存储空间和不同的总线,使得各条指令可以重叠执行,这样,也就克服了数据流传输的瓶颈,提高了运算速度。

3、冯·诺依曼结构和哈佛总线结构的区别

二者的区别就在于程序空间和数据空间是否是一体的。冯·诺依曼结构数据空间和地址空间不分开,哈佛结构数据空间和地址空间是分开的。
早期的微处理器大多采用冯·诺依曼结构,典型代表是Intel公司的X86微处理器。取指和取操作数都在同一总线上,通过分时服用的方式进行的。缺点是在高速运行时,不能达到同时取指令和取操作数,从而形成了传输过程的瓶颈。
哈佛总线技术应用是以DSP和ARM为代表的。采用哈佛总线结构的芯片内部程序空间和数据空间是分开的,这就允许同时取指和取操作数,从而大大提高了运算能力。DSP芯片硬件结构有冯·诺依曼结构和哈佛结构,两者区别是地址空间和数据空间分开与否。一般DSP都是采用改进型哈佛结构,就是分开的数据空间和地址空间都不只是一条,而是有多条,这根据不同的生产厂商的DSP芯片有所不同。在对外寻址方面从逻辑上来说也是一样,因为外部引脚的原因,一般来说都是通过相应的空间选取来实现的。本质上是同样的道理。


4.改进型的哈佛结构与哈佛结构差别

结合哈佛结构和冯·诺依曼结构

改进的哈佛结构,其结构特点为: 
(1).使用两个独立的存储器模块,分别存储指令和数据,每个存储模块都不允许指令和数据并存; 
(2).具有一条独立的地址总线和一条独立的数据总线,利用公用地址总线访问两个存储模块(程序存储模块和数据存储模块),公用数据总线则被用来完成程序存储模块或数据存储模块与CPU之间的数据传输; 
(3).两条总线由程序存储器和数据存储器分时共用。

与冯.诺曼结构处理器比较,哈佛结构处理器有两个明显的特点:
(1).使用两个独立的存储器模块,分别存储指令和数据,每个存储模块都不允许指令和数据并存; 
(2).使用独立的两条总线,分别作为CPU与每个存储器之间的专用通信路径,而这两条总线之间毫无关联。


5.总结

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


转载自:
https://blog.csdn.net/do2jiang/article/details/4545690
https://blog.csdn.net/binchel/article/details/17279675
https://blog.csdn.net/u014470361/article/details/79774331


[DSP 日常记录] #1 冯诺依曼结构、哈佛结构与改进型哈佛结构相关推荐

  1. 哈佛结构和冯诺依曼结构?STM32属于哈佛结构还是冯诺依曼结构?

    现代的CPU基本上归为冯诺伊曼结构(也成普林斯顿结构)和哈佛结构. 冯·诺依曼体系 冯·诺依曼体系结构图如下 冯诺依曼结构也称普林斯顿结构,是一种将程序指令存储器和数据存储器合并在一起的存储器结构.数 ...

  2. 什么是冯诺依曼结构、哈佛结构、改进型哈佛结构?

    冯诺依曼结构 冯·诺依曼结构,又称为普林斯顿体系结构,是一种将程序指令存储器和数据存储器合并在一起的存储器结构.取指令和取操作数都在同一总线上,通过分时复用的方式进行:缺点是在高速运行时,不能达到同时 ...

  3. 冯诺依曼结构、哈佛结构、改进型哈佛结构

    冯诺依曼结构 冯·诺依曼结构,又称为普林斯顿体系结构,是一种将程序指令存储器和数据存储器合并在一起的存储器结构.取指令和取操作数都在同一总线上,通过分时复用的方式进行:缺点是在高速运行时,不能达到同时 ...

  4. [DSP 日常记录] #2 TI DSP 的简单介绍与 DSP 的一些名词解释

    将原先自己别处写的两篇博文汇总在这里 [内容仅针对 TI 公司生产的 DSP] TI公司的主要处理器产品列表 参考:TI.WIKI 一.MCUs 微处理器 16-bit 超低功耗处理器 -- MSP4 ...

  5. 关于冯诺依曼结构、哈佛结构、增强型的哈佛结构

    大家都学过,所谓的8086是冯诺依曼结构的(也叫做普林斯顿结构),51等单片机是哈佛结构,我们的PIC单片机是增强型的哈佛结构.那么,这三种结构之间究竟有什么区别吗?对于我们编程序的时候,有什么影响吗 ...

  6. 冯诺依曼结构和哈佛结构02

    冯.诺伊曼结构     1945年,冯.诺伊曼首先提出了"存储程序"的概念和二进制原理,后来,人们把利用这种概念和原理设计的电子计算机系统统称为"冯.诺伊曼型结构&quo ...

  7. 冯诺依曼结构 与 哈佛结构

    冯诺依曼结构 冯·诺依曼结构,又称为普林斯顿体系结构,是一种将程序指令存储器和数据存储器合并在一起的存储器结构.取指令和取操作数都在同一总线上,通过分时复用的方式进行:缺点是在高速运行时,不能达到同时 ...

  8. 哈佛结构和冯诺依曼结构

    已剪辑自: https://zhuanlan.zhihu.com/p/136748306 1946年,第一台计算机ENIAC诞生,人类进入计算机时代,后来,美籍匈牙利数学家:冯.诺依曼提出了计算机&q ...

  9. STM32属于哈佛结构还是冯诺依曼结构?

    目录 01.冯·诺依曼体系 02.哈佛体系 03.arm和哈佛.冯·诺依曼的关系 04.实际芯片制造 现代的CPU基本上归为冯诺伊曼结构(也成普林斯顿结构)和哈佛结构. 冯洛伊曼结构就是我们所说的X8 ...

最新文章

  1. nginx添加stream模块1.20
  2. 触摸屏中文软件_八招轻松搞定西门子软件安装!
  3. python编程16章_Python核心编程——Chapter16
  4. 恢复xfs文件系统superblock实验
  5. Gson转换导致int转换成double的问题解决
  6. 为什么要设置环境变量,环境变量有什么用?
  7. 沉浸文化获星瀚资本百万元级种子轮投资,星瀚资本投资
  8. java 课程设计数据库_人事管理系统(java数据库课程设计)+SQL数据库
  9. GCC全过程详解+剖析生成的.o文件[转]
  10. python网络爬虫系列教程——python中urllib、urllib2、cookie模块应用全解
  11. Warning: The TensorFlow library wasn't compiled to use SSE,SSE2,SSE3,SSE4.1 instructions
  12. 您需要知道Rails中的erb以及如何掌握它
  13. 移动机器人轮式里程计
  14. Python图像识别-Opencv05 色彩
  15. PRESTO SQL总结分享
  16. 示波器测量汽车进气压力传感器信号及波形分析
  17. 美国学生在使用计算机小短文,前段时间,一篇北大毕业美国留学生的短文!
  18. 解决unity内置动画系统播放完回到原点问题
  19. MATLAB计算气象水文要素年内分配指数
  20. MVVM与MVC原理图解

热门文章

  1. 中国科技大学网络视频课程软件设计模式(自主模式)
  2. Mac OS下搭建Hadoop3.2.1
  3. 什么是python大数据研发,它有什么特点吗
  4. 千年虫10周年了,今天才第一次碰到。
  5. Mysql 四舍五入 取整
  6. 【HTML5】调查问卷制作简约版
  7. win10启动项在什么地方
  8. 强化学习:Actor-Critic、SPG、DDPG、MADDPG
  9. 可以结束一个循环的关键字是python_Python中的循环关键字
  10. python大赛对名_用100行Python爬虫代码抓取公开的足球数据玩(一)