【FLASH、SRAM和DRAM、CISC和RISC、冯诺依曼和哈佛】单片机内存结构的了解
一、单片机概念
单片机:Single-Chip Microcomputer,单片微型计算机,是一种集成电路芯片
1.1RAM里的SRAM和DRAM
SRAM(Static Random Access Memory)和DRAM(Dynamic Random Access Memory)是两种常见的随机访问存储器类型,它们在内部工作原理和应用方面有一些显著的区别。
随机存取存储器(Random Access Memory,简称RAM)是计算机中用于临时存储数据和程序的关键组件。它允许数据的快速读写,是CPU直接与之交换数据的主要内部存储器。RAM的特点是易失性,即在断电后数据会丢失,因此它主要用于存储当前正在使用或即将使用的数据和程序。
RAM主要分为两种类型:静态随机存取存储器(Static RAM,简称SRAM)和动态随机存取存储器(Dynamic RAM,简称DRAM)。SRAM的速度较快,成本较高,常用于高速缓冲存储器(Cache)和寄存器中。DRAM则因其结构简单、集成度高、成本较低而被广泛应用于计算机的主存中。DRAM需要定期刷新来保持数据,这是其“动态”特性的由来。
在计算机中,RAM的作用至关重要,它不仅影响着系统的运行速度和性能,还决定了多任务处理的能力。例如,当你打开多个应用程序或在不同程序间切换时,足够的RAM可以确保数据快速加载和流畅切换。随着技术的发展,DRAM的标准也在不断提升,如DDR3 SDRAM和DDR4 SDRAM,后者逐渐成为主流,提供了更高的性能和能效。
总的来说,RAM是计算机存储体系中不可或缺的一部分,它直接影响着计算机的响应速度和多任务处理能力。对于需要进行大量数据处理或运行内存密集型应用程序的用户来说,投资更多的RAM是一个明智的选择。
静态特性/动态特性 | 刷新 | 速度 | 用途和成本: | 功耗 | |
---|---|---|---|---|---|
SRAM(Static RAM) | SRAM是静态存储器,这意味着它在没有时钟信号的情况下可以保持存储的数据。 | 不需要定期刷新,因为数据是存储在触发器中,只要电源保持稳定,数据就会一直保持。 | 通常比DRAM更快,因为读写操作可以直接在存储单元之间进行,而不需要刷新周期或者访问电容。 | 通常用于需要快速访问速度和不需要大容量的应用,例如缓存内存。 | 功耗较高,因为它使用了更多的晶体管来实现每个存储单元 |
DRAM(Dynamic RAM) | DRAM是动态存储器,需要定期刷新以保持存储的数据,因为数据存储在电容中,电容会逐渐失去电荷。 | 需要周期性地刷新,否则数据会丢失。 | 相对于SRAM而言,DRAM的访问速度通常较慢,因为访问需要经过行和列的选择。 | 通常用于需要大容量存储的应用,例如系统内存,因为DRAM可以提供相对较高的存储密度。 | 常功耗较低,因为每个存储单元只需要一个电容和一个访问晶体管。 |
在嵌入式系统中,常常会使用SRAM作为处理器的缓存,而DRAM则用于系统内存。选择哪种类型的内存取决于应用的需求,例如速度、功耗、成本和容量。
STM32单片机中的SRAM:STM32单片机通常内置有一定量的SRAM,例如STM32F103C8T6可能有20KB的SRAM。这些SRAM被划分为不同的区域,包括用于存储程序数据的区域和用于存储变量的区域。
1.2Flash存储器(闪存)
在嵌入式系统中,特别是在单片机(Microcontroller)中,Flash存储器类似于个人电脑上的硬盘。
特点介绍
以下是关于Flash存储器在单片机中的一些重要方面:
- 非易失性存储: Flash存储器是一种非易失性存储器,这意味着它可以在断电后保持存储的数据。这使得它非常适合用于嵌入式系统,因为系统可以在断电或重启后从Flash中加载程序代码或配置信息。
- 程序存储: 在单片机中,Flash通常用于存储程序代码。当单片机启动时,它会从Flash中读取代码并执行。这使得Flash对于嵌入式系统的正常运行至关重要。
- 数据存储: 除了程序代码,Flash还可以用于存储非易失性数据,例如配置信息、参数设置等。这些数据可以在设备断电后仍然保持,确保系统具有持久性。
- 擦写和擦除: Flash存储器需要进行擦写和擦除操作,而这些操作通常是以块为单位进行的。在更新存储的数据或程序时,需要将整个块擦除,然后再进行写入操作。这与RAM不同,RAM允许单独的字节或字的写入。
- 寿命考虑: Flash存储器有限的擦写寿命,因此在设计中需要考虑擦写次数。为了延长Flash的寿命,通常采用良好的擦写算法和均衡擦写操作。
总体而言,Flash存储器在嵌入式系统中扮演着重要的角色,类似于个人电脑中硬盘的作用。不仅用于存储程序代码,还用于存储系统的配置和持久性数据。
STM32中的Flash
STM32的Flash存储器是微控制器内部的非易失性存储区域,主要用于存储程序代码和一些固定数据。Flash存储器在断电后数据不会丢失,是程序执行的主要区域。STM32的Flash存储器具有以下特点:
-
内存映射:STM32的Flash地址起始于0x08000000,结束地址是0x08000000加上芯片实际的Flash大小。不同的STM32芯片Flash大小不同。
-
构成:STM32的内部Flash包含主存储器、系统存储器、OTP(One Time Program)区域以及选项字节区域。主存储器用于存储用户应用程序,系统存储区包含固化的启动代码,OTP区域用于存储加密密钥等一次性编程数据,选项字节用于配置Flash的读写保护等功能。
-
擦除和写入:在写入新的数据前,需要先擦除存储区域。STM32提供了扇区擦除指令和整个Flash擦除(批量擦除)的指令。擦除和写入操作需要先解锁Flash,然后擦除目标扇区,最后写入数据。
-
容量:STM32的Flash容量因型号而异,例如STM32F103C8T6拥有64KB或128KB的Flash。
-
操作过程:操作Flash通常包括解锁Flash、擦除扇区、写入数据等步骤。这些步骤需要通过配置FLASH控制寄存器(FLASH_CR)和FLASH状态寄存器(FLASH_SR)来完成。
-
编程接口:STM32标准库提供了操作Flash的函数,如
HAL_FLASH_Program
用于编程操作,FLASH_Unlock
和FLASH_Lock
用于解锁和上锁Flash。 -
注意事项:Flash的擦除和写入操作对电源电压有要求,且每个Flash扇区的擦写次数有限,通常在10万次左右。
-
应用:除了存储程序代码,Flash还可以用于存储关键记录或配置数据,尤其是在需要快速访问或掉电保护的情况下。
当你烧写程序到STM32单片机时,程序代码会被存储到单片机内部的Flash存储器中。
烧写过程通常涉及以下步骤:
-
编译:首先,你会使用如Keil、IAR、STM32CubeIDE等集成开发环境(IDE)将你的源代码编译成机器代码。
-
烧写:然后,通过烧写工具(可能是ST-LINK、JTAG、SWD或其他编程器)将编译后的机器代码(通常以二进制文件的形式)传输到STM32单片机的内部Flash中。
-
验证:烧写完成后,单片机在下次复位或上电时会从内部Flash加载并执行程序。
STM32单片机的Flash存储器具有特定的组织结构,通常分为多个扇区(sectors),每个扇区可以独立擦除和编程。在烧写过程中,你需要确保代码被烧写到正确的扇区,并且该扇区之前已经被擦除。
此外,STM32的Flash存储器还提供了一些额外的功能,如读保护、写保护和执行保护,这些功能可以通过编程选项字节来配置,以增强程序的安全性。
1.3Flash VS SRAM
SRAM(Static Random-Access Memory,静态随机存取存储器)是STM32单片机中非常重要的一种存储器,它的特点和应用如下:
- 易失性存储器:SRAM是一种易失性存储器,这意味着一旦断电,存储在SRAM中的数据会丢失。因此,它主要用于存储临时数据,如程序运行时的变量、堆栈、缓存等。
- 快速访问:SRAM提供比Flash更快的读写速度,因为它不需要像Flash那样进行擦除和编程周期。这使得SRAM非常适合用作CPU的缓存或用于存储频繁访问的数据。
- 随机存取:SRAM允许随机存取,即可以直接访问任何存储单元,而不需要像某些类型的存储器那样按顺序访问。这使得SRAM在需要快速、直接数据访问的场合非常有用。
- 功耗:虽然SRAM的访问速度很快,但它通常比Flash消耗更多的电力,因为它需要持续的电源来保持数据。
- 成本:SRAM的成本通常比Flash和其他类型的存储器更高,因为它使用更复杂的制造工艺,并且每个晶体管可以存储更多的数据。
- 应用场景:
- 缓存:在CPU和主存之间用作高速缓存,减少CPU访问主存的次数,提高数据处理速度。
- 堆栈:用于存储函数调用时的局部变量和返回地址。
- 数据缓冲区:在数据传输过程中用作缓冲区,例如在DMA传输中。
- 实时数据处理:在需要快速读写操作的实时系统中,用于存储实时数据。
- 外部SRAM扩展:当STM32单片机内置的SRAM不足以满足应用需求时,可以通过外部接口如FSMC(Flexible Static Memory Controller)扩展外部SRAM,以增加更多的存储空间。
SRAM在STM32单片机中扮演着重要角色,它的快速访问特性对于确保程序的流畅运行和响应速度至关重要。
1.4电脑 VS 单片机
电脑 | 单片机 | |
---|---|---|
CPU主频 | X86,2-5 GHz | 51/ARM/RISC-V,72MHz (STM32F1) |
内存容量 | GB级 约40GB/S (DDR4) | KB级,约300MB/S (STM32F1) |
磁盘容量 | TB级,约500MB/S (SATA3) | KB级,约100MB/S (STM32F1) |
功耗 | 数百W | <0.5W |
价格 | 2000-10000 | <10元 |
频率的单位从低到高主要有以下几种:
- 赫兹(Hz):频率的基本单位,表示每秒周期性事件发生的次数。
- 千赫兹(kHz):1 kHz = 1,000 Hz(1,000 赫兹)。
- 兆赫兹(MHz):1 MHz = 1,000 kHz = 1,000,000 Hz(一百万字)。
- 吉赫兹(GHz):1 GHz = 1,000 MHz = 1,000,000 kHz = 1,000,000,000 Hz(十亿次)。
- 太赫兹(THz):1 THz = 1,000 GHz = 1,000,000 MHz = 1,000,000,000,000 Hz(一万亿次)。
这些单位通常用于描述电子设备中的时钟速度、无线通信频率以及其他需要精确频率测量的场合。随着技术的发展,频率的测量和应用已经扩展到了更高的范围,例如在光学和量子物理研究中使用的PHz(拍赫兹)等。
计算X86 64位体系结构的理论最大数据传输速率的公式是:
传输速率=(位数/8)×时钟频率
其中:
- 传输速率是以字节每秒(Bytes per second)为单位的。
- 位数表示体系结构的位数,例如64位。
- 时钟频率表示处理器的时钟速率,例如5GHz。
这个公式是基于每个时钟周期能够处理的位数,通过将其转换为字节,我们可以得到每秒的最大传输速率。
当主频为2~5 GHz,带入上述公式计算如下:
**最低主频(2 GHz):**传输速率=(64位/8)×2GHz=16GB/s
**最高主频(5 GHz):**传输速率=(64位/8)×5GHz=40GB/s
这个计算假设X86架构每个时钟周期可以处理64位的数据,并且通过将其转换为字节,我们可以得到每秒的最大传输速率。根据您提供的范围,最低到最高主频下,传输速率的范围在16 GB/s到40 GB/s之间。这是理论上的最大传输速率,实际的性能可能受到其他因素的影响,如内存访问模式、缓存性能等。
STM32F1系列的主频为72MHz,内存容量在KB级别,传输速率约为300MB/s。让我们再次使用正确的公式:
传输速率=(32位/8)×72MHz=288MB/s
在这个计算中,我假设STM32F1系列每个时钟周期可以处理32位的数据,通过将其转换为字节,我们可以得到每秒的最大传输速率。因此,根据这个计算,理论上的最大传输速率为288MB/s,而不是300MB/s。这是一个近似值,实际性能可能会受到其他因素的影响。
1.5单片机发展历程
单片机(Microcontroller Unit, MCU)的发展历史可以概括为以下几个阶段:
-
初期阶段(1970年代末至1980年代初):
- 单片机的概念最早由Intel公司实现,推出了世界上第一款商用微处理器4004。
- 1976年,Intel推出了MCS-48系列,这标志着8位单片微型计算机的诞生,并为单片机的发展奠定了基础 。
-
完善阶段(1980年代初至1980年代中期):
- 1980年代,Intel推出了MCS-51系列,这是单片机发展史上的一个重要里程碑,它以体积小、功能全、价格低赢得了广泛的应用
-
高性能阶段(1980年代中期至1990年代初):
- 出现了更多高性能的单片机,如Intel的MCS-96系列和Motorola的6801和6802系列。这些单片机集成度更高,功能更强大,应用领域更加广泛 。
-
快速发展阶段(1990年代至今):
- 单片机技术得到了巨大的提高,出现了更多高速、大寻址范围、强运算能力的单片机。
- 随着消费电子产品的发展,单片机技术得到了飞速的发展,32位单片机迅速取代了16位单片机的高端地位 。
-
当前与未来趋势:
- 单片机正朝着高性能、低功耗、小体积、大容量、低价格和外围电路内装化的方向发展。
- 随着物联网、智能家居等技术的发展,单片机在智能化设备中的应用越来越广泛,未来可能会进一步融合人工智能技术,提升其智能化水平 。
单片机的应用领域非常广泛,包括工业控制、家用电器、汽车电子、智能仪表、通讯设备等,它们在现代社会的各个方面都发挥着重要作用。随着技术的不断进步,单片机的性能和功能也在不断提升,以满足日益增长的应用需求。
目前市场上常见的单片机制造商包括STMicroelectronics(STM32)、NXP(以前的飞思卡尔)、瑞萨(Renesas)等,它们的产品涵盖了各种应用领域。STM32是ST的32位ARM Cortex-M系列单片机,广泛应用于工业控制、汽车电子、消费电子、智能家居、物联网等多个领域。NXP和Renesas也提供了广泛的单片机产品,适用于不同的市场需求和应用场景。
目前市面上使用最多的单片机(MCU)品牌和型号非常多样,根据不同的应用领域和需求,不同的单片机有不同的市场占有率。根据2024年的市场分析报告,一些主流的单片机品牌和型号包括:
STMicroelectronics(STM32):STM32系列单片机以其高性能、低成本和丰富的外设功能在工业控制、汽车电子、消费电子等领域有广泛的应用。
Microchip Technology:提供广泛的PIC和AVR系列单片机,以及基于ARM架构的产品,适用于各种嵌入式系统。
NXP Semiconductors:前身为飞思卡尔,提供多种单片机产品,包括基于ARM Cortex-M系列的高性能单片机。
Renesas Electronics:提供多种8位和32位单片机,适用于汽车、工业和消费电子市场。
Texas Instruments(TI):以其MSP430和CC系列单片机而知名,广泛应用于低功耗和高性能的应用场景。
Infineon:提供多种单片机,适用于汽车、工业和通信市场。
Silicon Labs:以其EFM8和EFM32系列单片机而知名,专注于提供高性能、低功耗的解决方案。
Espressif Systems:以其ESP8266和ESP32系列Wi-Fi和蓝牙单片机而知名,特别适用于物联网应用。
Atmel(现为Microchip的一部分):以其AVR和ARM系列单片机而知名,广泛应用于嵌入式系统设计。
Holtek Semiconductor:专注于8位单片机的研发和销售,产品广泛应用于家电、医疗和工业控制领域。
这些单片机品牌和型号在市场上的使用率较高,但具体哪个型号使用最多可能会随着时间和市场需求的变化而变化。根据2024年的市场数据,STM32系列由于其广泛的应用和高性价比,可能是目前市场上使用较多的单片机之一。然而,这个情况可能会随着新技术的出现和市场动态的变化而发生改变。
1.6单片机发展趋势
发展趋势 | 描述 |
---|---|
微型化 | - 芯片尺寸缩小 - 无线单片机普及 |
高效节能 | - 提高能源使用效率 - 减少电子废物 |
集成度提高 | - 更多功能集成 - 减小电路板体积和功耗 |
低功耗设计 | - 优化电路设计 - 提高芯片制造工艺 |
智能家居 | - 设备智能化管理 - 互联互通 |
物联网 | - 设备互联 - 信息共享 |
工业控制 | - 自动化生产线 - 精密控制 |
安全性增强 | - 硬件与软件安全防护 - 加密算法和安全机制 |
云集成与物联网 | - 云计算平台连接 - 物联网应用 |
全球市场规模 | - 2022年达到1907.7亿元 - 预测2028年将达3556.97亿元 |
中国市场规模 | - 2022年达到653.2亿元 - 年均复合增长率为11.25% |
主要厂商 | STMicroelectronics, Microchip, NXP Semiconductors, Renesas Electronics |
产品分类 | 32位单片机, 8位单片机, 16位单片机 |
应用细分 | 工业, 通讯与电脑, 汽车 |
二、CISC VS RISC
CISC(Complex Instruction Set Computing)和 RISC(Reduced Instruction Set Computing)是两种计算机体系结构的设计哲学,它们主要在指令集的复杂性和执行效率上有所不同。
CISC(Complex Instruction Set Computing):
- 指令集复杂: CISC体系结构有一个复杂的指令集,其中包含大量不同的指令,一些指令可以执行多个低级操作。
- 多寻址模式: CISC指令集通常支持多种寻址模式,使得一条指令能够操作多个内存位置。
- 硬件复杂: CISC架构中的处理器通常较为复杂,包含多个执行单元和管道。
- 高度优化: CISC指令集的目标是通过一个指令完成更多的工作,这通常需要更多的硬件支持和复杂的微体系结构。
- 用途: 传统的x86架构是CISC架构的代表。
RISC(Reduced Instruction Set Computing):
- 指令集简化: RISC体系结构采用简化的指令集,每条指令执行的操作相对较少,但执行时间相对较短。
- 单寻址模式: RISC指令集通常限制了寻址模式,简化了指令的解码和执行。
- 硬件精简: RISC处理器的硬件结构相对精简,专注于提高时钟周期内执行指令的效率。
- 流水线: RISC处理器通常采用流水线技术,使得多条指令可以同时在不同阶段执行。
- 用途: ARM和MIPS等体系结构是RISC架构的代表。
在实际应用中,CISC和RISC并非严格对立的两种设计,而是两者之间存在一些模糊的区域。一些架构尝试结合两者的优点,采用混合的设计方法,称为复杂指令集(CISC)和精简指令集(RISC)的混合体(例如,Intel的IA-64架构)。选择CISC或RISC架构通常取决于设计目标、应用需求以及制造技术的发展。
冯诺依曼结构 VS 哈佛结构
冯诺依曼结构
程序指令和数据被存储在同一个存储器中
- 优点:总线资源占用少
- 缺点:执行效率较低
哈佛结构
程序指令和数据存储到两个独立的存储器中
- 优点:执行效率较高
- 缺点:总线资源占用多