嵌入式系统内存终于搞明白了
共 7632字,需浏览 16分钟
·
2024-07-29 22:10
关注、星标公众号,直达精彩内容
内存
内存是计算机中用于存储和读取数据的设备,它由一系列连续的存储单元组成,每个存储单元都有一个唯一的地址。内存可以分为主存和辅助存储器两种类型。主存是计算机中直接与CPU进行数据交换的部分,通常是指随机访问存储器(RAM,Random Access Memory)。辅助存储器则是用于长期存储数据的设备,如机械硬盘、固态硬盘(SSD,solid-state drive)等。当计算机执行程序时,需要将程序和相关数据加载到内存中,CPU通过读取内存中的指令和数据来进行计算和操作。
嵌入式平台具有多层次的存储器结构,即不同类型存储器的集合,各类存储器具有不同的速度、容量和用途(如下图)。
寄存器
寄存器(Register)是计算机中的一种小型存储器件,用于存储处理器(CPU)需要快速访问的数据,通常被集成在处理器芯片中。寄存器是计算机中最快的存储器件之一,它们的访问速度比主存储器和辅助存储器要快得多,因此可以极大提升计算机的性能。常见的寄存器有以下几类:
程序计数器是一种特殊的寄存器,用于存储正在执行的程序的地址。当处理器执行程序时,它会不断地从程序计数器中读取指令并执行它们。
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 Flash和NAND 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 ‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧
关注我的微信公众号,回复“星球”加入知识星球,有问必答。
点击“阅读原文”查看知识星球详情,欢迎点分享、收藏、点赞、在看。