找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4210|回复: 0
打印 上一主题 下一主题
收起左侧

通用的微处理 哈佛结构和冯·诺依曼结构的区别

[复制链接]
跳转到指定楼层
楼主
ID:140343 发表于 2016-9-25 11:14 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
通用的微处理采用冯.诺依曼结构,即程序指令和数据共用一个存储空间及单一的地址 和数据总线。为进一步提高运算速度,以满足实时信号处理的要求,当前的 DSP 芯片采用
哈佛结构。所谓哈佛结构,是将指令和数据的存储空间分开。这样使得处理指令和处理数据 可以同时进行,从而大大提高处理效率。  

哈佛结构和冯·诺依曼结构的区别

哈佛结构

(英语Harvard architecture)是一种将程序指令储存和数据储存分开的存储器结构中央处理器首先到程序指令储存器中读取程序指令内容,解码后得到数据地址,再到相应的数据储存器中读取数据,并进行下一步的操作(通常是执行)。程序指令储存和数据储存分开,数据和指令的储存可以同时进行,可以使指令和数据有不同的数据宽度,如Microchip公司的PIC16芯片的程序指令是14位宽度,而数据是8位宽度。
与冯.诺曼结构处理器比较,哈佛结构处理器有两个明显的特点:
1、使用两个独立的存储器模块,分别存储指令和数据,每个存储模块都不允许指令和数据并存;
2、使用独立的两条总线,分别作为CPU与每个存储器之间的专用通信路径,而这两条总线之间毫无关联。
改进的哈佛结构,其结构特点为:
1、使用两个独立的存储器模块,分别存储指令和数据,每个存储模块都不允许指令和数据并存,以便实现并行处理;
2、具有一条独立的地址总线和一条独立的数据总线,利用公用地址总线访问两个存储模块(程序存储模块和数据存储模块),公用数据总线则被用来完成程序存储模块或数据存储模块与CPU之间的数据传输;
    哈佛结构的微处理器通常具有较高的执行效率。其程序指令和数据指令分开组织和储存的,执行时可以预先读取下一条指令目前使用哈佛结构的中央处理器微控制器有很多,除了上面提到的Microchip公司的PIC系列芯片,还有摩托罗拉公司的MC68系列、Zilog公司的Z8系列、ATMEL公司的AVR系列和安谋公司的ARM9、ARM10和ARM11。

冯·诺伊曼结构
von Neumann architecture),也称普林斯顿结构,是一种将程序指令存储器和数据存储器合并在一起的电脑设计概念结构。本词描述的是一种实作通用图灵机的计算装置,以及一种相对于平行计算的序列式结构参考模型(referential model)。
本结构隐约指导了将储存装置与中央处理器分开的概念,因此依本结构设计出的计算机又称储存程式型电脑。
    冯.诺曼结构处理器具有以下几个特点:
必须有一个存储器;
必须有一个控制器;
必须有一个运算器,用于完成算术运算和逻辑运算;
必须有输入和输出设备,用于进行人机通信。


、、================================================================
作者:Cascade
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

在现实世界中很少有非常纯粹的概念,特别是在实际的应用里。教科书里的大多是理想化的模型,便于掌握某个概念的重点和本质,但实际中很难达到这种理想化的状态。

哈佛结构和冯诺依曼结构主要区别在是否区分指令与数据。在教科书里这是两种截然不同的做法。

实际上在内存里,指令和数据是在一起的。而在CPU内的缓存中,还是会区分指令缓存和数据缓存,最终执行的时候,指令和数据是从两个不同的地方出来的。你可以理解为在CPU外部,采用的是冯诺依曼模型,而在CPU内部用的是哈佛结构。

大部分的DSP都没有缓存,因而直接就是哈佛结构。

哈佛结构设计复杂,但效率高。冯诺依曼结构则比较简单,但也比较慢。CPU厂商为了提高处理速度,在CPU内增加了高速缓存。也基于同样的目的,区分了指令缓存和数据缓存。有时为了解决现实问题,究竟是什么主义真的没那么重要。因而个人认为争论到底是哪种结构意义不大。


-------------------------------------------------------

实际上,绝大多数现代计算机使用的是所谓的“Modified Harvard Architecture”,指令和数据共享同一个 address space,但缓存是分开的。可以说是两种架构的一种折中吧。
----------------------------------------------------------------------------------------
按照吴军先生这篇文章《
#文明之光#之#发明365# 第18集 冯诺依曼系统结构和电子计算机的发明
》Sina Visitor System来看
其实冯诺依曼的核心思想是指令和数据都能从存储器中读出…至于是存一块还是分开,这并不是什么本质差别
----------------------------------------------------------------------------------
因为 PC 市场已经被 微软 和 IBM-PC 架构垄断了。

但是,实际上 哈佛结构只不过是“程序”和“存储”分离,然而内存就那个样子,好比你就插了一条内存条,怎么实现指令和数据分开“同时”读取呢?cache。现在 intel 的处理器虽说是“CISC”但是也应用了大量的RISC思想。当今的处理器速度已经如此高,intel有很长的流水线,如果指令和数据还不分开同时读取这会极大的影响流水线的效率。所以在流水线设计中有多个cache,而数据和指令一般会同时缓存进Cache,这样在处理器流水线作业时其实也有哈佛结构的影子。

界限我说不好是什么样子,就像RISC 和 CISC 应该没有一道绝对的墙把它们区别开。

参考 intel 处理器体系结构的发展。
----------------------------------------------------------------------
存储的时候很难分清一段代码是数据还是指令。比如现在python、ruby这种解释性语言,他们都是用最原始的字符串存储的。所以实际上代码什么的都是被当做普通的数据存在文件系统里。只有到了执行,阶段,OS可以明确的知道哪部分是交给CPU去执行的指令,哪部分是数据,才会有区分。这里的区分主要是cache的区分,因为data和instruction的locality不同,所以他们的cache的设计有所不同。
---------------------------------------------------------------------
现代计算机都是数据 cache 跟指令 cache 分开的,而在芯片外是共享内存( 即使现在的多核芯片现在也在共享内存 )。
也就是说内部表现为哈佛结构,外部表现为冯诺以曼结构。




至于为何还在使用这种「冯诺以曼」结构,我觉得可能因为这种结构在现在大量采用的「虚拟存储器」技术下组织起来更方便吧。

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表