目录
2.1.1 DRAM - Dynamic RAM、SRAM - Static RAM
3.2 Cache 在SOC(system on chip)中的位置
1. 分类方式
1.1 按照是否掉电后失去存储信息分类
1. 易失性存储
RAM(DRAM、SRAM)
2. 非易失性存储
ROM、Flash(NAND Flash、 NOR Flash)
1.2 按照是否可读写属性分类
1. ROM - Read Only Memory 只读存储器
ROM
2. 可读可写存储器
RAM、Flash
1.3 按照是否可随机读写分类
1. FIFO - first in first out 先进先出
队列结构存储
2. FILO - first in last out 先进后出
栈结构存储
3. RAM - random access 随机访问存储
任何时刻可以随机访问任意字节
4. 按区域读写 例如 NAND Flash
NAND Flash 读写都需要按page进行,无法对单独字节读取。
1.4 按在嵌入式系统中的位置和角色分类
1. 片上程序存储器,片上数据存储器
通常为SRAM、NOR Flash
2. 片外主存
DRAM
3. 片上程序、数据 Cache
SRAM
4. 片外非易失性存储
EEPROM、NAND Flash。
2. RAM、ROM、Flash
2.1 RAM- Random Access Memory
某随机访问存储器的管脚如下:
具有地址线、数据线、控制线。
RAM时钟频率较高、加之随机访问的性质,一般作为程序运行时刻的CPU直接取(不考虑中间经过Cache、MMU等)指令、数据的存储,一般称之为内存。
在芯片被选通时,当CPU要读时、CPU在地址线上传递要访问的存储单元地址,存储器将会在数据线上放置该存储单元存储的数据。在CPU要写时、CPU在地址线上传递要访问的存储单元地址,数据线上传递要写的数据,存储器将会将数据线上放置的数据存储在该存储单元。
2.1.1 DRAM - Dynamic RAM、SRAM - Static RAM
还分为SRAM - Static RAM、DRAM - Dynamic RAM。
2.1.1.1 实现原理
SRAM 实现原理基于锁存器、DRAM实现基于电容充放电。
下图为SRAM的1bit存储单元电路原理图。
图 SRAM存储单元
晶体管M1、M2、M3、M4构成锁存结构,M1、M3为P管,射极连接高电平,M2、M4为N管,射极链接低电平。M1、M2与M3、M4分别构成反相器,即非门。
当word Line 选通时,把M5、M6等效为导线,等效门电路如下
图 SRAM存储单元等效门电路
这是一个经典的锁存器结构,当Bit Line与Bit Line的‘非线’输入0\1时,0\1会被锁存住,即使后续失去Bit Line与Bit Line的‘非线’的输入驱动,Bit Line与Bit Line的‘非线’仍旧保持0\1, 从而达到存储一比特的数据。
参考:1. 存储电路·专题01·锁存器 - 知乎 (zhihu.com)
2. SRAM与DRAM的区别_sram和dram-CSDN
3. 存储技术SRAM详解 - 知乎 (zhihu.com)
下图为DRAM的1bit 存储单元的电路原理图。
图 DRAM存储单元
由于电容会慢慢放电,故DRAM要每隔一段时间对内部电容进行充电(刷新),以防止存储的bit由1变0,这个一般称之为动态刷新,这也是其为什么叫做Dynamic RAM的原因。
由于需要动态刷新、所以DRAM的存取速度相较SRAM慢,且功耗更大。但是由于其基于电容的实现结构的简单,可以做到更大的存储密度,价格也就更便宜。
2..1.1.2 用途
SRAM 常用作片内存储、片内程序、数据存储器,特点是存储空间较小,但时钟速度几乎与CPU匹配。
DRAM常用作片外存储,也常被称为主存,存储空间可达上G,但存取速度较慢,数据或程序放在上面会使程序运行较慢。
2.2 Flash
被称为闪存技术、闪存定义:是一种电子式可清除程序化只读存储器的形式,允许在操作中被多次擦或写的存储器。嵌入式中常用的flash分为两种、NAND Flash 、 NOR Flash。
NAND Flash 基于浮栅场效应管在bit Line上串联实现,Bit Line上具有与非逻辑, 即一个Bit Line上所有浮栅场效应管的浮栅极有电荷时,bit Line输出0(名字由此而来)
图 NAND Flash电路原理图
NOR Flash基于浮栅场效应管在bit Line上并联实现,Bit Line上具有或非逻辑, 即一个Bit Line上任意浮栅场效应管的浮栅极有电荷时,bit Line输出0(名字由此而来)。 不同实现机制决定了不同的存储特性。
图 NOR Flash电路原理图
NAND Flash、NOR Flash 电路结构解析参考:Flash构成的基本原理 - 知乎 (zhihu.com)
2.2.1 NAND Flash
某NAND Flash 的管脚如下所示
可以看到NAND Flash并不同时具有地址线和数据线。而是具有数据与地址线复用的IO。并不具有像RAM那样的接口。
第二点,NAND Flash对存储单元写时只能由1变0,不能由0变1:
即假设某存储单元存储的内容为0b1001001,现在处理器想向其中写入0b0110110,结果再写入后,该存储单元存储内容为0b00000000,即对存储单元中为0的bit位是无法通过写入变为1的。
第三点,NAND Flash的读写是以page为单位的,即要写入就要写一个page,要读就要读出1个page,这样假使CPU可以对其直接寻址,CPU也没有那么大的寄存器文件可以去存放NAND Flash吐出来的指令\数据。
参考 1. NAND FLASH学习笔记之nand flash基础(二)_nand引脚定义-CSDN博客
2. 为什么SSD的NAND非得按页写? - 知乎 (zhihu.com)
3.【FLASH存储器系列十五】NAND Flash究竟能不能随机读写到某个字节的数据?-CSDN博客
结合第二点、第三点,如果要对NAND Flash 一页进行自由写0写1,该如何操作呢?答案是,对NAND Flash进行erase操作,这个操作会对一个block (比page更大的一个概念,包含多个page)进行操作,将其中的存储单元每个bit变为1。这样,再对要写入的所有为0的位在page中进行写入就可以了。
结合以上几点可知,NAND Flash是无法作为内存使用的,程序运行时,CPU无法实时从其上取指令、取数据。
但是NAND Flash可以作为外设来存储程序、数据,在运行时将程序、数据从NAND Flash上读到内存中,再在内存中去执行,这种情况下需要一个“引导程序”先于NAND Flash其上存储的程序去执行,“引导程序”的作用是将NAND Flash其上的程序\数据拷贝到内存。NAND Flash更多被格式化为特定文件系统,用作存储对正确性要求不太严格的媒体数据,例如电影,图片等。固态硬盘(SSD)使用的也是NAND Flash(MLC、TLC、QLC等,即一个场效应管存储的信息不只1bit、量化阶数更多)。
2.2.2 NOR Flash
NOR Flash 管脚如下所示
与NAND Flash 不同,NOR Flash 同时具有地址线,数据线,即具有RAM那样的接口、这是它支持XIP(excute in place )特性的原因之一,即在程序运行时,CPU可以从中实时取指令,而不需要将其中指令拷贝到内存中再去执行。
其二,它是可以以字节为单位进行读写的(工艺原因,读较快、写很慢),但是其写入前依旧需要按扇区(与 NAND 的 block对等的概念,但一般比block字节数多)进行擦除操作,擦除操作前需要对扇区全写0,故写入\擦除的速度比NAND Flash慢的多。
参考:nor flash之擦除和写入-腾讯云开发者社区-腾讯云 (tencent.com))
故NOR Flash多用作程序存储器,而不是数据存储器。因为CPU运行时存储的程序指令一般只需要被CPU读取到译指执行单元去执行,而几乎不需要被覆盖写入到存储器(除非软件有这方面的需求)。如果用做数据存储器,免不了写入操作,那样就太拖累CPU了。
2.3 ROM
只读存储器,在嵌入式中常用作引导程序存储器,存储着CPU上电后最先执行的程序。或者在PC上存储着BIOS。
ROM 大致分为 ROM、PROM、 EPROM、EEPROM
2.3.1 ROM
里面的程序时在产线上生产时就固化下来的,是利用特殊工艺“编程”的,生产出来后,任何方法无法对里面的程序再改变。里面存储内容收到损坏直接报废,只能换一片ROM
2.3.2 PROM
P代表可编程。程序不在生产时被固化,可以使用专用工具进行编程确定,但只能编一次,内容无法被擦除、过后与ROM一样。
2.3.3 EPROM
E代表可擦除,即编过程序之后,程序还可以被擦除,以便多次重复编程。但是编程工具、和擦除工具都是不同的专用工具,非常不便
2.3.4 EEPROM
EE代表电可擦除,擦除时只需要提供电压高于普通工作电压一定量即可,一般电脑提供的电压就可以满足,所在在电脑上就可以进行重复编程操作。按照Flash定义,可以算作Flash了。现在电脑主板上的BIOS程序多用EEPROM存储。
EEPROM也可以像NAND Flash用作外部存储,但数据通信接口一般为SPI以及CAN这样的串行外设总线,访问速度很慢。
3. Cache
介于CPU与程序、数据存储器之间。根据局部性原理,提高程序、数据访问效率。
3.1 时空局部性原理
时间:当第N时刻访问了一条指令、数据,那么N+1时刻访问这条指令、数据的可能性会很大。
空间:当第N时刻访问了存储位置为M的一条指令、数据,那么N+1时刻访问这条指令或数据的相邻位置M+1的指令、数据的可能性会很大。
根据这两条原理,Cache的重要功能就是缓存和预取。
3.2 Cache 在SOC(system on chip)中的位置
上图为某款DSP内部Cache组织形式,一般L1 Cache属于各个核自身,分为程序Cache(P-Cache),数据Cache (D-Cache)。
由程序、数据L1 cache向外扩展出L2 Cache,其中既可以缓存数据,也可以缓存指令,但L2 Cache 仍属于每个核自身。
由L2 Cache 向外延伸扩展出L3 Cache,L3 Cache中既可以缓存数据,也可以缓存指令,此时L3由各个核心共享。
3.3 工作原理
当CPU需要向内存中取指令\数据时,依次查看L1、L2、...、Ln Cache、MM(主存,这里解释为可被缓存的存储器)中是否存在副本。当查询到某一级存储中存在该数据\指令副本时,将该副本缓存至更高级别的所有存储中,并传递给CPU使用。