哈佛和冯诺依曼,从STM32的const全局变量说起

  从在学校到后来的实习工作,讲真,对于处理器的冯诺依曼结构和哈佛结构不大在意,印象中只知道它是数据存储器和程序存储器相关。
  昨天在STM32程序中,把全局变量的定义成const属性时,发现它所处的位置是在STM32内置的FLASH而非内置的SRAM中。顿时让我觉得十分奇怪,程序不都必须在RAM中运行?即使在静态常量区不也应该放在SRAM中?
  原因?这得从处理器的冯诺依曼和哈佛结构说起了。

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

  哈佛结构,指的是数据存储器和程序存储器在物理是是分离的,以51单片机为例,数据存储器是单片机的RAM,程序存储器是单片机的ROM。在数据存储器中上不允许存储指令,同理,在指令存储器上不允许存储数据。
这里写图片描述
  图为网上哈佛结构示意,数据存储器和程序存储器分别使用独立的两条总线,控制单元能够同时与程序存储器、数据存储器通信,实现软件系统功能。ARM采用的就是哈佛结构。(严格来说,很多高级ARM芯片已经采用哈佛结构和冯诺依曼结构的结合了)
  冯诺依曼结构,通用计算机采用就是这种结构,数据和程序存储器不分离:

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值