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

共 7632字,需浏览 16分钟

 ·

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  ‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧

        

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

        


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

浏览 56
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报