当前位置: 首页 > article >正文

【FLASH、SRAM和DRAM、CISC和RISC、冯诺依曼和哈佛】单片机内存结构的了解

【FLASH、SRAM和DRAM、CISC和RISC、冯诺依曼和哈佛】单片机内存结构的了解

一、单片机概念

单片机:Single-Chip Microcomputer,单片微型计算机,是一种集成电路芯片

image-20240915210417839

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存储器在单片机中的一些重要方面:

  1. 非易失性存储: Flash存储器是一种非易失性存储器,这意味着它可以在断电后保持存储的数据。这使得它非常适合用于嵌入式系统,因为系统可以在断电或重启后从Flash中加载程序代码或配置信息。
  2. 程序存储: 在单片机中,Flash通常用于存储程序代码。当单片机启动时,它会从Flash中读取代码并执行。这使得Flash对于嵌入式系统的正常运行至关重要。
  3. 数据存储: 除了程序代码,Flash还可以用于存储非易失性数据,例如配置信息、参数设置等。这些数据可以在设备断电后仍然保持,确保系统具有持久性。
  4. 擦写和擦除: Flash存储器需要进行擦写和擦除操作,而这些操作通常是以块为单位进行的。在更新存储的数据或程序时,需要将整个块擦除,然后再进行写入操作。这与RAM不同,RAM允许单独的字节或字的写入。
  5. 寿命考虑: Flash存储器有限的擦写寿命,因此在设计中需要考虑擦写次数。为了延长Flash的寿命,通常采用良好的擦写算法和均衡擦写操作。

总体而言,Flash存储器在嵌入式系统中扮演着重要的角色,类似于个人电脑中硬盘的作用。不仅用于存储程序代码,还用于存储系统的配置和持久性数据。

STM32中的Flash

STM32的Flash存储器是微控制器内部的非易失性存储区域,主要用于存储程序代码和一些固定数据。Flash存储器在断电后数据不会丢失,是程序执行的主要区域。STM32的Flash存储器具有以下特点:

  1. 内存映射:STM32的Flash地址起始于0x08000000,结束地址是0x08000000加上芯片实际的Flash大小。不同的STM32芯片Flash大小不同。

  2. 构成:STM32的内部Flash包含主存储器、系统存储器、OTP(One Time Program)区域以及选项字节区域。主存储器用于存储用户应用程序,系统存储区包含固化的启动代码,OTP区域用于存储加密密钥等一次性编程数据,选项字节用于配置Flash的读写保护等功能。

  3. 擦除和写入:在写入新的数据前,需要先擦除存储区域。STM32提供了扇区擦除指令和整个Flash擦除(批量擦除)的指令。擦除和写入操作需要先解锁Flash,然后擦除目标扇区,最后写入数据。

  4. 容量:STM32的Flash容量因型号而异,例如STM32F103C8T6拥有64KB或128KB的Flash。

  5. 操作过程:操作Flash通常包括解锁Flash、擦除扇区、写入数据等步骤。这些步骤需要通过配置FLASH控制寄存器(FLASH_CR)和FLASH状态寄存器(FLASH_SR)来完成。

  6. 编程接口:STM32标准库提供了操作Flash的函数,如HAL_FLASH_Program用于编程操作,FLASH_UnlockFLASH_Lock用于解锁和上锁Flash。

  7. 注意事项:Flash的擦除和写入操作对电源电压有要求,且每个Flash扇区的擦写次数有限,通常在10万次左右。

  8. 应用:除了存储程序代码,Flash还可以用于存储关键记录或配置数据,尤其是在需要快速访问或掉电保护的情况下。

当你烧写程序到STM32单片机时,程序代码会被存储到单片机内部的Flash存储器中。

烧写过程通常涉及以下步骤:

  1. 编译:首先,你会使用如Keil、IAR、STM32CubeIDE等集成开发环境(IDE)将你的源代码编译成机器代码。

  2. 烧写:然后,通过烧写工具(可能是ST-LINK、JTAG、SWD或其他编程器)将编译后的机器代码(通常以二进制文件的形式)传输到STM32单片机的内部Flash中。

  3. 验证:烧写完成后,单片机在下次复位或上电时会从内部Flash加载并执行程序。

STM32单片机的Flash存储器具有特定的组织结构,通常分为多个扇区(sectors),每个扇区可以独立擦除和编程。在烧写过程中,你需要确保代码被烧写到正确的扇区,并且该扇区之前已经被擦除。

此外,STM32的Flash存储器还提供了一些额外的功能,如读保护、写保护和执行保护,这些功能可以通过编程选项字节来配置,以增强程序的安全性。

1.3Flash VS SRAM

SRAM(Static Random-Access Memory,静态随机存取存储器)是STM32单片机中非常重要的一种存储器,它的特点和应用如下:

  1. 易失性存储器:SRAM是一种易失性存储器,这意味着一旦断电,存储在SRAM中的数据会丢失。因此,它主要用于存储临时数据,如程序运行时的变量、堆栈、缓存等。
  2. 快速访问:SRAM提供比Flash更快的读写速度,因为它不需要像Flash那样进行擦除和编程周期。这使得SRAM非常适合用作CPU的缓存或用于存储频繁访问的数据。
  3. 随机存取:SRAM允许随机存取,即可以直接访问任何存储单元,而不需要像某些类型的存储器那样按顺序访问。这使得SRAM在需要快速、直接数据访问的场合非常有用。
  4. 功耗:虽然SRAM的访问速度很快,但它通常比Flash消耗更多的电力,因为它需要持续的电源来保持数据。
  5. 成本:SRAM的成本通常比Flash和其他类型的存储器更高,因为它使用更复杂的制造工艺,并且每个晶体管可以存储更多的数据。
  6. 应用场景
    • 缓存:在CPU和主存之间用作高速缓存,减少CPU访问主存的次数,提高数据处理速度。
    • 堆栈:用于存储函数调用时的局部变量和返回地址。
    • 数据缓冲区:在数据传输过程中用作缓冲区,例如在DMA传输中。
    • 实时数据处理:在需要快速读写操作的实时系统中,用于存储实时数据。
  7. 外部SRAM扩展:当STM32单片机内置的SRAM不足以满足应用需求时,可以通过外部接口如FSMC(Flexible Static Memory Controller)扩展外部SRAM,以增加更多的存储空间。

SRAM在STM32单片机中扮演着重要角色,它的快速访问特性对于确保程序的流畅运行和响应速度至关重要。

1.4电脑 VS 单片机

电脑单片机
CPU主频X86,2-5 GHz51/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元

频率的单位从低到高主要有以下几种:

  1. 赫兹(Hz):频率的基本单位,表示每秒周期性事件发生的次数。
  2. 千赫兹(kHz):1 kHz = 1,000 Hz(1,000 赫兹)。
  3. 兆赫兹(MHz):1 MHz = 1,000 kHz = 1,000,000 Hz(一百万字)。
  4. 吉赫兹(GHz):1 GHz = 1,000 MHz = 1,000,000 kHz = 1,000,000,000 Hz(十亿次)。
  5. 太赫兹(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单片机发展历程

image-20240915213543763

单片机(Microcontroller Unit, MCU)的发展历史可以概括为以下几个阶段:

  1. 初期阶段(1970年代末至1980年代初)

    • 单片机的概念最早由Intel公司实现,推出了世界上第一款商用微处理器4004。
    • 1976年,Intel推出了MCS-48系列,这标志着8位单片微型计算机的诞生,并为单片机的发展奠定了基础 。
  2. 完善阶段(1980年代初至1980年代中期)

    • 1980年代,Intel推出了MCS-51系列,这是单片机发展史上的一个重要里程碑,它以体积小、功能全、价格低赢得了广泛的应用
  3. 高性能阶段(1980年代中期至1990年代初)

    • 出现了更多高性能的单片机,如Intel的MCS-96系列和Motorola的6801和6802系列。这些单片机集成度更高,功能更强大,应用领域更加广泛 。
  4. 快速发展阶段(1990年代至今)

    • 单片机技术得到了巨大的提高,出现了更多高速、大寻址范围、强运算能力的单片机。
    • 随着消费电子产品的发展,单片机技术得到了飞速的发展,32位单片机迅速取代了16位单片机的高端地位 。
  5. 当前与未来趋势

    • 单片机正朝着高性能、低功耗、小体积、大容量、低价格和外围电路内装化的方向发展。
    • 随着物联网、智能家居等技术的发展,单片机在智能化设备中的应用越来越广泛,未来可能会进一步融合人工智能技术,提升其智能化水平 。

单片机的应用领域非常广泛,包括工业控制、家用电器、汽车电子、智能仪表、通讯设备等,它们在现代社会的各个方面都发挥着重要作用。随着技术的不断进步,单片机的性能和功能也在不断提升,以满足日益增长的应用需求。

目前市场上常见的单片机制造商包括STMicroelectronics(STM32)、NXP(以前的飞思卡尔)、瑞萨(Renesas)等,它们的产品涵盖了各种应用领域。STM32是ST的32位ARM Cortex-M系列单片机,广泛应用于工业控制、汽车电子、消费电子、智能家居、物联网等多个领域。NXP和Renesas也提供了广泛的单片机产品,适用于不同的市场需求和应用场景。

目前市面上使用最多的单片机(MCU)品牌和型号非常多样,根据不同的应用领域和需求,不同的单片机有不同的市场占有率。根据2024年的市场分析报告,一些主流的单片机品牌和型号包括:

  1. STMicroelectronics(STM32):STM32系列单片机以其高性能、低成本和丰富的外设功能在工业控制、汽车电子、消费电子等领域有广泛的应用。

  2. Microchip Technology:提供广泛的PIC和AVR系列单片机,以及基于ARM架构的产品,适用于各种嵌入式系统。

  3. NXP Semiconductors:前身为飞思卡尔,提供多种单片机产品,包括基于ARM Cortex-M系列的高性能单片机。

  4. Renesas Electronics:提供多种8位和32位单片机,适用于汽车、工业和消费电子市场。

  5. Texas Instruments(TI):以其MSP430和CC系列单片机而知名,广泛应用于低功耗和高性能的应用场景。

  6. Infineon:提供多种单片机,适用于汽车、工业和通信市场。

  7. Silicon Labs:以其EFM8和EFM32系列单片机而知名,专注于提供高性能、低功耗的解决方案。

  8. Espressif Systems:以其ESP8266和ESP32系列Wi-Fi和蓝牙单片机而知名,特别适用于物联网应用。

  9. Atmel(现为Microchip的一部分):以其AVR和ARM系列单片机而知名,广泛应用于嵌入式系统设计。

  10. 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

image-20240915214828797

CISC(Complex Instruction Set Computing)和 RISC(Reduced Instruction Set Computing)是两种计算机体系结构的设计哲学,它们主要在指令集的复杂性和执行效率上有所不同。

CISC(Complex Instruction Set Computing):

  1. 指令集复杂: CISC体系结构有一个复杂的指令集,其中包含大量不同的指令,一些指令可以执行多个低级操作。
  2. 多寻址模式: CISC指令集通常支持多种寻址模式,使得一条指令能够操作多个内存位置。
  3. 硬件复杂: CISC架构中的处理器通常较为复杂,包含多个执行单元和管道。
  4. 高度优化: CISC指令集的目标是通过一个指令完成更多的工作,这通常需要更多的硬件支持和复杂的微体系结构。
  5. 用途: 传统的x86架构是CISC架构的代表。

RISC(Reduced Instruction Set Computing):

  1. 指令集简化: RISC体系结构采用简化的指令集,每条指令执行的操作相对较少,但执行时间相对较短。
  2. 单寻址模式: RISC指令集通常限制了寻址模式,简化了指令的解码和执行。
  3. 硬件精简: RISC处理器的硬件结构相对精简,专注于提高时钟周期内执行指令的效率。
  4. 流水线: RISC处理器通常采用流水线技术,使得多条指令可以同时在不同阶段执行。
  5. 用途: ARM和MIPS等体系结构是RISC架构的代表。

在实际应用中,CISC和RISC并非严格对立的两种设计,而是两者之间存在一些模糊的区域。一些架构尝试结合两者的优点,采用混合的设计方法,称为复杂指令集(CISC)和精简指令集(RISC)的混合体(例如,Intel的IA-64架构)。选择CISC或RISC架构通常取决于设计目标、应用需求以及制造技术的发展。

image-20240915214957002

冯诺依曼结构 VS 哈佛结构

image-20240915215032605

冯诺依曼结构

程序指令和数据被存储在同一个存储器中

  • 优点:总线资源占用少
  • 缺点:执行效率较低

哈佛结构

程序指令和数据存储到两个独立的存储器中

  • 优点:执行效率较高
  • 缺点:总线资源占用多

http://www.kler.cn/a/430665.html

相关文章:

  • 如何在 Ubuntu 22.04 上安装 phpMyAdmin
  • ROM修改进阶教程------修改刷机包init.rc 自启用户自定义脚本的一些基本操作 代码格式与注意事项
  • 基于推理的目标检测 DetGPT
  • 大恒相机开发(2)—Python软触发调用采集图像
  • 前端常用算法集合
  • 保护模式基本概念
  • 网页核心页面设计(第5章)
  • 给我的小程序加了个丝滑的搜索功能,踩坑表情包长度问题
  • Win11家庭版安装Docker,解决engine stopped问题
  • 初始数据结构
  • 电脑文件夹打不开了,能打开但是会闪退,提示“找不到iUtils.dll”是什么原因?
  • 电脑运行时提示“0x80240037”错误,提示安装ie插件或其他微软程序时,报错提示“未指定的错误”是什么原因?以及要怎么解决和预防?
  • AUTOSAR AP和CP的安全要求规范(Safety Req)详细解读
  • SQL注入--堆叠注入
  • [漏洞挖掘与防护] 05.CVE-2018-12613:phpMyAdmin 4.8.1后台文件包含缺陷复现及防御措施
  • 【Java EE】Spring请求如何传递参数详解
  • Mac电脑钓鱼到拿下核心权限
  • GC常见垃圾回收算法,JVM分代模型
  • 鸿蒙手机文件目录
  • k8s配置Pod 优先级
  • Python爬虫——HTML中Xpath定位
  • 基于单片机控制的多功能智能语音风扇
  • 幼儿园学校养老院供电安全解决方案
  • MongoDB change stream实战
  • CAD C# 批量替换当前图中块
  • 使用go生成、识别二维码