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

存储器是微控制器的重要组成部分,不同类型的微控制器其采用的存储结构与容量不尽相同,但存储器的用途是相同的,用于存放程序和数据。微控制器中的存储结构有两种基本构成形式。

冯诺依曼结构

冯诺依曼结构也称普林斯顿结构,是一种将程序存储器和数据存储器合并在同一寻址空间中的存储器结构,ROM和RAM指向同一个存储器的不同位置,指令和数据的宽度相同,是通用微型计算机的常用的存储结构。
采用冯诺依曼结构的中央处理器有:Intel公司的8086及其系列处理器、ARM公司的ARM7、MIPS公司的MIPS处理器等。
在这里插入图片描述

哈佛结构

哈佛结构是对冯诺依曼结构的改进和完善,是一种将程序存储和数据存储分为两个寻址空间的存储器结构,程序和数据分开存储,可以使指令和数据有不同的数据宽度,是微控制器常用的数据结构。具有较高的执行效率。
采用哈佛结构的微控制器有:Microchip公司的PIC系列芯片,摩托罗拉公司的MC68系列、Atmel公司的AVR系列和ARM公司的ARM9、ARM10和ARM11,8051微控制器也属于哈佛结构。
在这里插入图片描述

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

首先区分二者最本质的是看存储器,若数据存储器和程序存储器分开则为哈佛结构,反之则为冯诺依曼结构。因为只有一个存储器,而同一存储器中的所存放内容宽度必然相同,所以冯诺依曼结构的程序指令和数据的宽度相同。而哈佛结构有两个存储器,不同的存储器所存放内容的宽度可以不同,所以哈佛结构中指令和数据有不同的数据宽度。
执行效率方面,哈佛结构的执行效率要高于冯诺依曼结构。冯诺依曼结构指令和数据是共享一根总线,这就意味着在执行命令时,冯诺依曼结构要先通过总线读取指令,读取完成后再根据指令对数据进行操作。每一次都是操作都是先指令后数据,不能同时进行取指令和操作数据。而哈佛结构则不同,它的两个存储器分开,有两根总线,可以在读取指令的时候对数据进行操作,二者同时进行,所以效率较高。
冯诺依曼结构:1. 程序存储器和数据存储器为同一个存储器2. 指令和数据宽度相同
哈佛结构:1. 程序存储器和数据存储器分开2.指令和数据宽度不同3.执行效率较高

STM32系统结构

STM32F103微控制器内部通过多层次AHB(先进高速总线)相互连接,如图
在这里插入图片描述

Cortex-M3采用哈佛结构,所以STM32为程序指令提供独立的指令总线(ICode)用于连接闪存。其中FLITE用于支持指令预存,具有预取缓冲区的读接口、Flash编程和擦除操作、读写保护操作等功能。

Cortex核心和DMA单元都可以作为总线主设备,当它们同时访问SRAM、外设总线时,需要使用总裁器进行仲裁使用总线的的设备。总线矩阵用于仲裁处理器核心和DMA访问,连接有4个主总线:DCode、System(S-bus)、两个DMA总线。

总线矩阵还连接了4个从总线,用于连接内部SRAM、内部闪存(FLITE)、可变静态存储控制器(FSMC,用于连接外部存储器)以及AHB-APB转换桥。AHB-APB转换桥通过两个先进外设总线APB连接所有外设。APB2可以全速工作于72MHz工作频率,但APB1限制为36MHz,整个系统的时钟管理通过RCC模块实现。

简单地可以记忆为STM32系统结构由总线矩阵及其通过总线连接的各部分组成。包括4个主总线和4个从总线,4个主总线中DCode、System(S-bus)连接Cortex-M3核心,两个DMA总线连接DAM1、DMA2;4个从总线分别连接内部SRAM、内部闪存、外部存储器和AHB转换桥。AHB转换桥又通过APB1和APB2连接外设。

猜你喜欢

转载自blog.csdn.net/Tao_9/article/details/129698781