嵌入式系统内存终于搞明白了

李肖遥 2024-07-29 22:10
    关注、星标公众号,直达精彩内容


内存

内存是计算机中用于存储和读取数据的设备,它由一系列连续的存储单元组成,每个存储单元都有一个唯一的地址。内存可以分为主存和辅助存储器两种类型。主存是计算机中直接与CPU进行数据交换的部分,通常是指随机访问存储器(RAM,Random Access Memory)。辅助存储器则是用于长期存储数据的设备,如机械硬盘、固态硬盘(SSD,solid-state drive)等。当计算机执行程序时,需要将程序和相关数据加载到内存中,CPU通过读取内存中的指令和数据来进行计算和操作。  

嵌入式平台具有多层次的存储器结构,即不同类型存储器的集合,各类存储器具有不同的速度、容量和用途(如下图)。

寄存器

寄存器(Register)是计算机中的一种小型存储器件,用于存储处理器(CPU)需要快速访问的数据,通常被集成在处理器芯片中。寄存器是计算机中最快的存储器件之一,它们的访问速度比主存储器和辅助存储器要快得多,因此可以极大提升计算机的性能。常见的寄存器有以下几

    1)程序计数器

    程序计数器是一种特殊的寄存器,用于存储正在执行的程序的地址。当处理器执行程序时,它会不断地从程序计数器中读取指令并执行它们。

    2)指令寄存器

    指令寄存器用于存储当前正在执行的指令。处理器从指令寄存器中读取指令并执行它们。

    3)状态寄存器

    状态寄存器用于存储处理器的状态信息。状态寄存器中的位表示了处理器的不同状态,如进位标志、零标志、负数标志等。

    4)通用寄存器

    通用寄存器是一种通用的寄存器,用于存储处理器需要快速访问的数据。它们可以用于存储函数调用时的参数和返回值,以及存储中间计算结果等。


Cache

Cache是一种高速缓冲存储器,是为了解决CPU和主存之间速度不匹配而采用的一项重要技术,一般分为一级缓存 L1 Cache、二级缓存 L2 Cache、三级缓存 L3 Cache。在现在的系统中,处理器需要上百个时钟周期才能从主存中取到数据,如果没有cache,处理器在等待数据的大部分时间内将会停滞不动。

  • 位于内存和CPU之间,是一个读写速度比内存更快的存储器

  • 当CPU向内存中读写数据时,这些数据也会被读写入高速缓冲存储器中,如果 Cache 中没有,CPU会去读内存中的数据

    • 每次被访问的主存块,一定会被立即调入Cache

  • 为了进一步提升性能,引入多级Cache,与CPU离得最近的是L1,L1后面连接L2,L2和主存之间连接L3,等级越高,速度越慢(相比主存依然很快),容量越大

  • L1和L2往往都是SRAM


(1)L1 Cache

  • 一级缓存,与CPU离得最近的Cache,通常是32-64KB大小,一级缓存L1 Cache的容量是最小的

  • 一般来说,一级缓存可以分为一级数据缓存(Data Cache,D-Cache)和一级指令缓存(Instruction Cache,I-Cache),二者分别用来处理数据和对这些这些数据的指令进行及时解码,而且二者可以同时被CPU访问,减少了用Cache所造成的冲突,提高了处理器效能

  • 目前大多数CPU的一级数据缓存和一级指令缓存具有相同的容量

  • L1 cache一般工作在CPU的时钟频率,要求的就是够快,可以在2-4时钟周期内取到数据

(2)L2 Cache

  • L2 cache相对来说是为提供更大的容量而优化的,因此比L1更便宜、省电,容量更大

  • 虽然L1和L2往往都是SRAM,但构成存储单元的晶体管并不一样

    • L1是为了更快的速度访问而优化过的,它用了更多/更复杂/更大的晶体管,从而更加昂贵和更加耗电

    • L2相对来说是为提供更大的容量优化的,用了更少/更简单的晶体管,从而相对便宜和省电

  • L2通常是256KB-2MB大小,一般从L2开始指令和数据就不分开了,可以在10-20个时钟周期内取到数据


(3)L3 Cache

  • 三级缓存,位于L2和主存之间,大小通常为8-80MB,20-50个时钟周期的访问时间

  • 在有一些CPU设计中,也会用DRAM实现大容量的L3 cache

备注:这里所说的时钟周期都是指的CPU的时钟周期。一般L2和L3的工作时钟频率要比CPU的低,这个时钟周期是折算后的数值。

RAM

随机访问存储器(RAM,Random Access Memory),通常也称为主存储器,是内存中最重要的一种,既可以读取数据,也可以写入数据,但是当机器掉电时,数据就会丢失。RAM根据信息存储的机理不同可以分为SRAM和DRAM。

(1)SRAM

静态随机访问存储器(SRAM,Static RAM),半导体存储器,存取速度比DRAM快,是目前读写速度最快的存储设备。

  • SRAM存储单元由基于晶体管的触发器电路组成,通过电流在电路中一对相反的门电路上双向切换来保存数据

  • 不需要刷新电路保存数据,只要电源不被切断,数据存入后不会消失

  • 集成度比较低,不适合做容量大的内存,相同容量成本DRAM高

  • 主要用于CPU内部的一级缓存(L1 Cache)以及二级(L2)缓存

  • 通过三组信号线与外部打交道:地址线、数据线、控制线,一般行列地址复用


(2)DRAM

动态随机访问存储器(DRAM,Dynamic RAM),同样属于半导体存储器。由于栅极会漏电,所以每隔一定的时间就需要一个刷新机构给这些栅电容补充电荷,并且每读出一次数据之后也需要补充电荷,这个就叫动态刷新,所以称其为动态随机存储器。

  • DRAM存储单元是具有电容器的电路,电容以存储电荷的方式存储数据(有电荷代表1,无电荷代表0)

  • 电容无法保存电荷(数据),因此需要对电容定期进行一次刷新动作(若电量大于满电量的1/2,则认为其代表1,并把电容充满电;若电量小于1/2,则认为其代表0,并把电容放电),来保持数据的连续性

  • DRAM保留数据的时间很短,速度也比SRAM相对慢一些,不过还是比任何的ROM都要快

  • 由于只使用一个MOS管来存信息,所以集成度很高,容量能够做的很大

  • 支持行列地址复用,从价格上来说DRAM相比SRAM要便宜很

  • DRAM分为很多种,常见的主要有SDRAM、DDR SDRAM、RDRAM、MDRAM、EDRAM、FRAM等

下面将介绍两种常见的DRAM:SDRAM、DDR(DDR SDRAM)。

SDRAM

同步动态随机存储器(SDRAM,Synchronous DRAM),比DRAM多了一个时钟同步,即数据的读写需要时钟来同步。同步是指其时钟频率和CPU前端总线的系统时钟相同,并且内部命令的发送与数据的传输都以它为基准。

  • 存储阵列需要不断的刷新来保证数据不丢失

  • 其存储单元不是按线性排列的,是分页的,因此数据不是线性依次存储,而是自由指定地址进行数据的读写

  • DRAM和SDRAM容量较SRAM大,但是读写速度不如SRAM

  • 一般的嵌入式产品里面的内存都是用的SDRAM


DDR

双倍数据速率同步随机存储器(DDR-SDRAM,Double Data Rate SDRAM),DDR是一种技术,使用了DDR技术的SDRAM是常见的计算机内存类型,用于存储数据和指令。

  • 可以在一个时钟读写两次数据,这样就使得数据传输速度加倍了

  • 广泛应用于个人电脑、服务器和其他计算设备中多高端的显卡上,也配备了高速DDR来提高带宽,这可以大幅度提高3D加速卡的像素渲染能力

  • DDR分类主要根据其数据传输速率和代号来进行区分

    • DDR1:DDR1是第一代DDR内存,数据传输速率相对于传统的SDRAM有所提升。它的数据传输速率相对较低,通常在200MHz到400MHz之间。DDR1内存模块有184个引脚。DDR1内存的代号通常以PC开头,如PC1600、PC2100等。

    • DDR2:DDR2是第二代DDR内存,相比DDR1有更高的数据传输速率和更低的功耗。通常在400MHz到1066MHz之间。DDR2内存模块有240个引脚。如PC2-3200、PC2-5300等。

    • DDR3:DDR3是第三代DDR内存,它的数据传输速率更高,通常在800MHz到2133MHz之间。DDR3内存模块有240个引脚。如PC3-8500、PC3-12800等。

    • DDR4:DDR4是第四代DDR内存,相比DDR3,它的数据传输速率更高,通常在2133MHz到3200MHz之间。DDR4内存模块有288个引脚。如PC4-17000、PC4-24000等。

    • DDR5:DDR5是最新一代的DDR内存,通常在3200MHz以上。DDR5内存模块有288个引脚。如PC5-3200、PC5-6400等。


ROM

只读存储器(ROM,Read Only Memory),一般只能用于数据的读取,不能写入,主要用于保存嵌入式系统中的永久性数据。通常不由系统主电源直接供电,而是由独立的小型板级电池供电。传统的ROM具备以下特点:

  • 一种线路最简单半导体电路,通过掩模工艺一次性制造,其中的代码与数据将永久保存(除非坏掉),掉电不丢失,不能进行修改

  • 一般在大批量生产时才会使用

  • 优点是成本低,但风险比较大,产品设计时,如果调试不彻底,很容易造成几千片的废片 


(1)PROM

可编程只读存储器(PROM,Programmable Red-Only Memory),产品只允许写入一次,所以也被称为“一次可编程只读存储器”(One Time Progarmming ROM,OTP-ROM)

  • PROM在出厂时,存储的内容全为1,用户可以根据需要将其中的某些单元写入数据0

  • 部分的PROM在出厂时数据全为0,则用户可以将其中的部分单元写入1, 以实现对其“编程”的目的

  • PROM的典型产品是“双极性熔丝结构“,如果我们想改写某些单元,则可以给这些单元以足够大的电流并维持一定的时间,原先的熔丝即可熔断,这样就达到了改某些位的效果

  • 另外一类经典的PROM为使用“肖特基二极管”的PROM,出厂时,其中的二极管处于反向截止状态,还是用大电流的方法将反相电压加在“肖特基二极管”,造成其永久性击穿即可


(2)EPROM

可擦写可编程只读存储器(EPROM,Erasable Programmable Read-Only Memory)由MOS管组成, 可将高强度的短波紫外线照射进其内建透明窗口,从而实现数据擦除并进行多次编程。

  • 特点是具有可擦除功能,擦除后即可进行再编程

  • 缺点是擦除需要使用紫外线照射一定的时间

  • 这一类芯片特别容易识别,其封装中包含有“石英玻璃窗”,一个编程后的EPROM芯片的“石英玻璃窗”一般使用黑色不干胶纸盖住, 以防止遭到阳光直射


(3)EEPROM

电可擦除可编程只读存储器(EEPROM,Electrically Erasable Programmable Read-Only Memory)同EPROM一样,也可以多次擦除和重编程。

  • 最大优点是可直接用电信号擦除,也可用电信号写入

  • 擦除和重写是在字节(Byte)级别进行的

  • 缺点是价格很高,写入时间长,写入速度慢

EEPROM不能取代RAM的原因是其工艺复杂, 耗费的门电路过多,且重编程时间比较长,同时其有效重编程次数也比较低。

(4)Flash Memory

闪存也是一种非易失性的内存(NVM),属于EEPROM的改进产品,综合了RAM和ROM的优势,即不会断电丢失数据,同时还可以快速读取数据(NVRAM的优势)。

  • 用作存储Bootloader以及操作系统或者程序代码

  • 最大特点是必须按块(Block)擦除(每个区块的大小不定,不同厂家产品规格不同), 而EEPROM则可以一次只擦除一个字节

  • 广泛用在PC机的主板上,用来保存BIOS程序,便于进行程序的升级,另外一大应用领域是用来作为硬盘的替代品,具有抗震、速度快、无噪声、耗电低的优点,但是将其用来取代RAM就显得不合适,因为RAM需要能够按字节改写,而Flash做不到

目前Flash主要被分成两类:NOR FlashNAND Flash

Nor Flash

NOR型闪存,由Intel于1988年首次开发,以编码应用为主,其功能多与运算相关,读写数据时不容易出错。

  • 采用并行接口,有独立的地址线和数据线

  • 芯片内执行,这样应用程序可以直接在flash闪存内运行,不必再把代码读到系统RAM中

  • 成本相对较高,容量较小,常见有128KB,256KB,1MB,2MB等


NAND Flash

NAND型闪存,由东芝发表于1989年,强调降低每比特的成本,更高的性能,并且象磁盘一样可以通过接口轻松升级,主要功能是存储资料,如数码相机中所用的记忆卡。

  • 采用串行接口,地址线和数据线是共用的I/O线,类似电脑硬盘

  • CPU从里面读取数据的速度很慢,所以一般用NAND做闪存的话就必须把NAND里面的数据先读到内存里面,然后CPU才能够执行

  • 无法寻址和直接运行程序,只能存储数据

  • NAND FLASH非常容易出现坏区,所以需要有校验的算法

  • 成本相对较低,容量较大,常见有1GB,2GB甚至8GB等


eMMC

嵌入式多媒体卡(eMMC,embedded MultiMediaCard)是一种嵌入式、非易失的存储系统,主要由闪存(一般是Nand Flash)、闪存控制器(对内部的Nand Flash进行操作和管理)和eMMC协议接口等组成(如下图所示)以BGA的形式封装在一起。

  • 目前eMMC的版本包括:eMMC 5.1/5.0/4.5/4.41,版本越高,支持更高的时钟频率(200MHz max)和更快的数据传输速度(400MB/s Max)

  • eMMC只能由主机发起操作(主机为CPU的外设,由CPU进行配置操作),主机与eMMC之间通过命令交互

  • 采用8位(bit)并行接口,eMMC和主机之间只能进行半双工通信


版权声明:本文来源网络,免费传达知识,版权归原作者所有。如涉及作品版权问题,请联系我进行删除。

‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧  END  ‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧

关注我的微信公众号,回复“星球”加入知识星球,有问必答。



点击“阅读原文”查看知识星球详情,欢迎点分享、收藏、点赞、在看。

李肖遥 公众号“技术让梦想更伟大”,作者:李肖遥,专注嵌入式,只推荐适合你的博文,干货,技术心得,与君共勉。
评论
  • TOF多区传感器: ND06   ND06是一款微型多区高集成度ToF测距传感器,其支持24个区域(6 x 4)同步测距,测距范围远达5m,具有测距范围广、精度高、测距稳定等特点。适用于投影仪的无感自动对焦和梯形校正、AIoT、手势识别、智能面板和智能灯具等多种场景。                 如果用ND06进行手势识别,只需要经过三个步骤: 第一步&
    esad0 2024-12-04 11:20 34浏览
  • 当前,智能汽车产业迎来重大变局,随着人工智能、5G、大数据等新一代信息技术的迅猛发展,智能网联汽车正呈现强劲发展势头。11月26日,在2024紫光展锐全球合作伙伴大会汽车电子生态论坛上,紫光展锐与上汽海外出行联合发布搭载紫光展锐A7870的上汽海外MG量产车型,并发布A7710系列UWB数字钥匙解决方案平台,可应用于数字钥匙、活体检测、脚踢雷达、自动泊车等多种智能汽车场景。 联合发布量产车型,推动汽车智能化出海紫光展锐与上汽海外出行达成战略合作,联合发布搭载紫光展锐A7870的量产车型
    紫光展锐 2024-12-03 11:38 97浏览
  • RDDI-DAP错误通常与调试接口相关,特别是在使用CMSIS-DAP协议进行嵌入式系统开发时。以下是一些可能的原因和解决方法: 1. 硬件连接问题:     检查调试器(如ST-Link)与目标板之间的连接是否牢固。     确保所有必要的引脚都已正确连接,没有松动或短路。 2. 电源问题:     确保目标板和调试器都有足够的电源供应。     检查电源电压是否符合目标板的规格要求。 3. 固件问题: &n
    丙丁先生 2024-12-01 17:37 100浏览
  • 戴上XR眼镜去“追龙”是种什么体验?2024年11月30日,由上海自然博物馆(上海科技馆分馆)与三湘印象联合出品、三湘印象旗下观印象艺术发展有限公司(下简称“观印象”)承制的《又见恐龙》XR嘉年华在上海自然博物馆重磅开幕。该体验项目将于12月1日正式对公众开放,持续至2025年3月30日。双向奔赴,恐龙IP撞上元宇宙不久前,上海市经济和信息化委员会等部门联合印发了《上海市超高清视听产业发展行动方案》,特别提到“支持博物馆、主题乐园等场所推动超高清视听技术应用,丰富线下文旅消费体验”。作为上海自然
    电子与消费 2024-11-30 22:03 98浏览
  • 最近几年,新能源汽车愈发受到消费者的青睐,其销量也是一路走高。据中汽协公布的数据显示,2024年10月,新能源汽车产销分别完成146.3万辆和143万辆,同比分别增长48%和49.6%。而结合各家新能源车企所公布的销量数据来看,比亚迪再度夺得了销冠宝座,其10月新能源汽车销量达到了502657辆,同比增长66.53%。众所周知,比亚迪是新能源汽车领域的重要参与者,其一举一动向来为外界所关注。日前,比亚迪汽车旗下品牌方程豹汽车推出了新车方程豹豹8,该款车型一上市就迅速吸引了消费者的目光,成为SUV
    刘旷 2024-12-02 09:32 118浏览
  • 概述 说明(三)探讨的是比较器一般带有滞回(Hysteresis)功能,为了解决输入信号转换速率不够的问题。前文还提到,即便使能滞回(Hysteresis)功能,还是无法解决SiPM读出测试系统需要解决的问题。本文在说明(三)的基础上,继续探讨为SiPM读出测试系统寻求合适的模拟脉冲检出方案。前四代SiPM使用的高速比较器指标缺陷 由于前端模拟信号属于典型的指数脉冲,所以下降沿转换速率(Slew Rate)过慢,导致比较器检出出现不必要的问题。尽管比较器可以使能滞回(Hysteresis)模块功
    coyoo 2024-12-03 12:20 108浏览
  • 作为优秀工程师的你,已身经百战、阅板无数!请先醒醒,新的项目来了,这是一个既要、又要、还要的产品需求,ARM核心板中一个处理器怎么能实现这么丰富的外围接口?踌躇之际,你偶阅此文。于是,“潘多拉”的魔盒打开了!没错,USB资源就是你打开新世界得钥匙,它能做哪些扩展呢?1.1  USB扩网口通用ARM处理器大多带两路网口,如果项目中有多路网路接口的需求,一般会选择在主板外部加交换机/路由器。当然,出于成本考虑,也可以将Switch芯片集成到ARM核心板或底板上,如KSZ9897、
    万象奥科 2024-12-03 10:24 66浏览
  •         温度传感器的精度受哪些因素影响,要先看所用的温度传感器输出哪种信号,不同信号输出的温度传感器影响精度的因素也不同。        现在常用的温度传感器输出信号有以下几种:电阻信号、电流信号、电压信号、数字信号等。以输出电阻信号的温度传感器为例,还细分为正温度系数温度传感器和负温度系数温度传感器,常用的铂电阻PT100/1000温度传感器就是正温度系数,就是说随着温度的升高,输出的电阻值会增大。对于输出
    锦正茂科技 2024-12-03 11:50 104浏览
  • 遇到部分串口工具不支持1500000波特率,这时候就需要进行修改,本文以触觉智能RK3562开发板修改系统波特率为115200为例,介绍瑞芯微方案主板Linux修改系统串口波特率教程。温馨提示:瑞芯微方案主板/开发板串口波特率只支持115200或1500000。修改Loader打印波特率查看对应芯片的MINIALL.ini确定要修改的bin文件#查看对应芯片的MINIALL.ini cat rkbin/RKBOOT/RK3562MINIALL.ini修改uart baudrate参数修改以下目
    Industio_触觉智能 2024-12-03 11:28 84浏览
  • 11-29学习笔记11-29学习笔记习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习笔记&记录学习习笔记&记学习学习笔记&记录学习学习笔记&记录学习习笔记&记录学习学习笔记&记录学习学习笔记记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&学习学习笔记&记录学习学习笔记&记录学习学习笔记&记
    youyeye 2024-12-02 23:58 69浏览
  • 光伏逆变器是一种高效的能量转换设备,它能够将光伏太阳能板(PV)产生的不稳定的直流电压转换成与市电频率同步的交流电。这种转换后的电能不仅可以回馈至商用输电网络,还能供独立电网系统使用。光伏逆变器在商业光伏储能电站和家庭独立储能系统等应用领域中得到了广泛的应用。光耦合器,以其高速信号传输、出色的共模抑制比以及单向信号传输和光电隔离的特性,在光伏逆变器中扮演着至关重要的角色。它确保了系统的安全隔离、干扰的有效隔离以及通信信号的精准传输。光耦合器的使用不仅提高了系统的稳定性和安全性,而且由于其低功耗的
    晶台光耦 2024-12-02 10:40 120浏览
我要评论
0
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦