【转】哈佛结构和冯诺依曼结构的区别

本文对比了冯·诺依曼结构和哈佛结构的计算机体系,冯·诺依曼结构中程序和数据共享同一存储器和总线,而哈佛结构则将程序和数据的存储空间分开,允许并行取指和取数,提高执行效率。文章还讨论了改进型哈佛结构的特点,包括独立的地址总线和数据总线,以及分时共用的存储器访问。

零、先上图:

哈佛结构和冯诺依曼结构

一、冯·诺依曼结构

冯·诺依曼结构(von Neumann architecture)又称作普林斯顿体系结构(Princetion architecture)。冯·诺依曼结构的处理器使用同一个存储器,经由同一个总线传输。冯·诺依曼结构处理器具有以下几个特点:

  • 必须有一个存储器;
  • 必须有一个控制器;
  • 必须有一个运算器,用于完成算术运算和逻辑运算;
  • 必须有输入和输出设备,用于进行人机通信。

二、哈佛结构

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

(哈佛体系结构框图)

哈佛结构的微处理器通常具有较高的执行效率。其程序指令和数据指令分开组织和存储的,执行时可以预先读取下一条指令。

哈佛结构是指程序和数据空间独立的体系结构, 目的是为了减轻程序运行时的访存瓶颈。

哈佛结构能基本上解决取指和取数的冲突问题。

三、冯·诺依曼体系和哈佛总线体系的区别

二者的区别就是程序空间和数据空间是否是一体的。冯·诺依曼结构数据空间和地址空间不分开,哈佛结构数据空间和地址空间是分开的。

哈佛总线技术应用是以DSP和ARM为代表的。采用哈佛总线体系结构的芯片内部程序空间和数据空间是分开的,这就允许同时取指和取操作数,从而大大提高了运算能力。

DSP芯片硬件结构有冯·诺依曼结构和哈佛结构,两者区别是地址空间和数据空间分开与否。一般DSP都是采用改进型哈佛结构,就是分开的数据空间和地址空间都不只是一条,而是有多条,这根据不同的生产厂商的DSP芯片有所不同。在对外寻址方面从逻辑上来说也是一样,因为外部引脚的原因,一般来说都是通过相应的空间选取来实现的。本质上是同样的道理。

四、改进型的哈佛结构与哈佛体系结构差别

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

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

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

后来,又提出了改进的哈佛结构,其结构特点为:

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

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

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

 

相关链接:

https://blog.youkuaiyun.com/fuhanghang/article/details/84064530​blog.youkuaiyun.com

 

哈佛结构和冯诺依曼结构的区别和利弊?​www.zhihu.com智能手机是冯诺依曼结构还是哈佛结构?​www.zhihu.com有哪些著名的非冯诺依曼结构?​www.zhihu.com

### 三、哈佛结构冯诺依曼结构的核心区别 在计算机体系结构中,哈佛结构冯诺依曼结构是两种基本的设计理念。它们之间的主要区别体现在存储器组织方式、指令处理机制以及性能表现等方面。 #### 3.1 存储器组织方式 冯诺依曼结构采用统一的存储空间来存放程序指令数据,这意味着指令数据共享同一个地址空间总线系统。这种方式简化了硬件设计,并提高了灵活性,但也可能导致“冯诺依曼瓶颈”,即在某一时刻只能访问指令或数据之一[^5]。相比之下,哈佛结构则将程序存储数据存储完全分离,分别使用独立的地址空间总线系统。这种分离式设计允许同时读取指令数据,从而显著提升处理器的并行处理能力[^2]。 #### 3.2 指令处理与数据存取效率 由于冯诺依曼架构中的指令数据共用一套总线,在执行过程中需要分时复用总线资源,这可能限制了系统的吞吐量[^5]。而哈佛架构通过为指令数据提供专用的高速缓存(如I-CacheD-Cache),可以实现更高的并发性更快的数据访问速度。这种方法特别适合那些对实时性要求较高或者需要大量数据运算的应用场景,比如数字信号处理(DSP)嵌入式控制系统[^4]。 #### 3.3 应用领域及现代改进方向 尽管传统意义上讲,冯诺依曼架构因其简洁性易于编程的特点被广泛应用于通用计算设备上,但随着技术的发展,现代CPU(例如x86系列、ARM架构)已经结合了两者的优势——即在主存层面保持冯诺依曼模型的同时,在缓存层级引入哈佛式的分离机制以提高性能[^4]。另一方面,对于追求极致性能而非灵活性的小型化应用场合,则更倾向于采用纯正的哈佛架构来优化数据流管理[^2]。 综上所述,选择哪种体系结构取决于具体应用场景的需求:如果重视软件兼容性开发便利性,则应优先考虑冯诺依曼架构;若侧重于高效能运算特别是实时处理任务,则哈佛架构可能是更好的选项。 ```c // 示例代码:模拟简单指令与数据操作 #include <stdio.h> #define SIZE 10 void vonNeumannExample(int *data, int size) { // 在冯诺依曼模型下,函数指针可用于间接表示指令 void (*instruction)(int *) = &processData; for (int i = 0; i < size; ++i) { instruction(&data[i]); // 调用预定义的操作 } } void processData(int *value) { *value *= 2; // 简单的数据处理逻辑 } ```
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值