冯氏结构、哈佛结构、超级哈佛结构之间的异同

article/2025/8/30 4:51:20


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

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

必须有一个存储器;

必须有一个控制器;

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

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

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

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

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

图 

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

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

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

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

图   

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

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

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

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


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


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

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

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

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

总结
      冯氏结构简单、易实现、成本低,但效率偏低;哈佛结构效率高但复杂,对外围设备的连接与处理要求高,十分不适合外围存储器的扩展。现在的处理器,依托CACHE的存在,已经很好的将二者统一起来了。现在的处理器虽然外部总线上看是诺依曼结构的,但是由于内部CACHE的存在,因此实际上内部来看已经类似改进型哈佛结构的了。而单片机,由于内部集成了所需的存储器,所以采用哈佛结构也未尝不可。

http://chatgpt.dhexx.cn/article/6WFheblQ.shtml

相关文章

哈佛结构

数字信号处理一般需要较大的运算量和较高的运算速度,为了提高数据吞吐量,在数字信号处理器中大多采用哈佛结构,如下图所示 图 哈佛结构 与冯.诺曼结构处理器比较,哈佛结构处理器有两个明显的特点: 使用两个独立的存储…

冯诺依曼体系结构、哈佛体系结构与改进型哈佛结构之间的区别

1、冯诺依曼结构  冯诺依曼结构又称作普林斯顿体系结构(Princetionarchitecture)。  1945年,冯诺依曼首先提出了“存储程序”的概念和二进制原理,后来,人们把利用这种概念和原理设计的电子计算机系统统称为“冯诺依…

哈佛结构与冯诺依曼结构(含STM32系统结构解析)

存储器是微控制器的重要组成部分,不同类型的微控制器其采用的存储结构与容量不尽相同,但存储器的用途是相同的,用于存放程序和数据。微控制器中的存储结构有两种基本构成形式。 冯诺依曼结构 冯诺依曼结构也称普林斯顿结构,是一…

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

目录 01、冯诺依曼体系 02、哈佛体系 03、arm和哈佛、冯诺依曼的关系 04、实际芯片制造 现代的CPU基本上归为冯诺伊曼结构(也成普林斯顿结构)和哈佛结构。 冯洛伊曼结构就是我们所说的X86架构,而哈佛结构就是ARM架构。一个广泛用于桌面端…

哈佛体系结构

哈佛机:为数据和程序提供了格子独立的存储器。 程序计数器只指向程序存储器,而不指向数据存储器,这样的的后果是很难再哈佛机上编写出一个自修改的程序。独立的程序存储器和数据存储器为数字信号处理提供了较高的性能。结构如下图所示&#x…

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

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

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

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

哈佛结构和冯诺依曼结构

已剪辑自: https://zhuanlan.zhihu.com/p/136748306 1946年,第一台计算机ENIAC诞生,人类进入计算机时代,后来,美籍匈牙利数学家:冯.诺依曼提出了计算机“存储程序”的计算机设计理念,即将计算机指令进行编码…

冯·诺依曼、哈佛、改进型哈佛体系结构解析

在如今的CPU中,由于Catch的存在,这些概念已经被模糊了。个人认为去区分他们并没有什么意义,仅作为知识点。 哈佛结构设计复杂,但效率高。冯诺依曼结构则比较简单,但也比较慢。CPU厂商为了提高处理速度,在C…

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

目录 一、哈佛结构 二、冯诺伊曼结构 三、哈佛结构和冯诺伊曼结构对比 一、哈佛结构 哈佛结构是一种将程序指令存储和数据存储分开的存储器结构。哈佛结构是一种并行体系结构,它的主要特点是将程序和数据存储在不同的存储空间中,即程序存储器和数据存…

哈佛架构和冯诺依曼架构

一、两种架构的介绍 1.哈佛结构是一种将程序指令的存储与数据的存储分开的存储器结构。首先,CPU在程序指令存储器中读取程序指令内容,解码后获得数据地址,然后在相应的数据存储器中读取数据,并进行下一步操作。指令存储和数据存储…

2021-05-28

嵌入式--深入理解单片机(一)单片机程序是如何运行起来的以及单片机的ROM和RAM 目录 一、两种处理器的结构体系 1、哈佛结构体系(Harvard architecture)2、冯诺依曼结构体系3、两种结构的总结 哈佛结构的优势冯诺依曼结构的优势当前…

冯诺依曼结构和哈佛结构

参考资料: 全面理解冯诺依曼结构和哈佛结构 CPU采用的是哈佛结构还是冯诺依曼结构? 0. 前言 哈佛结构和冯诺依曼结构都是针对于CPU来说的。 1. 冯诺依曼结构 冯诺伊曼结构又称为普林斯顿体系结构,是一种将程序存储器和数据存储器合并在一起…

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

哈佛结构 (英语:Harvard architecture)是一种将程序指令储存和数据储存分开的存储器结构。中央处理器首先到程序指令储存器中读取程序指令内容,解码后得到数据地址,再到相应的数据储存器中读取数据,并进行下一步的操作&#xff08…

~isnan函数

一直不明白~的意思,现在实现一把 才知道表示非的意思

isNaN函数的使用方法

isNaN() 函数用于检查其参数是否是非数字值。

c 语言isnan函数,_isnan, _isnanl

_isnan, _isnanl:判断浮点数为 NAN (不是数,Not a Number) int _isnan(double x); int _isnanl(long double x); #include std x:浮点数 ≠0: 参数 x 是 NAN 0: 参数 x 不是 NAN void __fastcall TForm1::Button1Click(TObject *Sender) { d…

JavaScript中的isNaN函数

在ECMAScript中有一个isNaN()函数,再说这个函数之前,会先说一下NaN: (1)NaN:非数值(not a number),是一个特殊的数值,用来表示本来要返回数值的操作数未返回数值的情况。在ECMAScript中&#xf…

Spring学习---(一)原理理解-llt

Spring学习—(一)原理理解-llt 1.IOC控制反转: ​ 由于引进了中间位置的“第三方”,也就是IOC容器,使得A、B、C、D这4个对象没有了耦合关系,齿轮之间的传动全部依靠“第三方”了,全部对象的控制权全部上缴…

matlab lltsa函数,【每日一策】Matlab量化交易策略之 LLT原始

策略思路: LLT择时模型,低延迟趋势线,利用最近20个LLT指标数值,大部分LLT呈现上涨(斜率为正),做多;大部分下跌(斜率为负),做空;反向出场。 回测曲线(由Auto-Trader提供回测报告)&…