SoC基础知识之Memory
计划介绍一些SoC上的基础知识,这里先介绍一下SoC上通常会碰到的一些Memory,后面Boot的介绍可能需要相关知识。
文章是个人知识结合一些参考文档内容,如果有错误,请及时指正。
存储器的类型很多,分类方法也很多,下面是按掉电后,数据丢失/不易丢失的特性,做的分类。
这里着重介绍RAM/ROM/FLASH ,目前公司芯片主要涉及这三类存储器。对应特性描述如下:
一、RAM(Random Access Memory,随机存取存储器)
随机存取存储器(Random Access Memory,缩写:RAM),是与CPU直接交换数据的内部存储器。它可以随时读写(刷新时除外),而且速度很快,通常作为操作系统或其他正在运行中的程序的临时数据存储介质。
RAM工作时可以随时从任何一个指定的地址写入(存入)或读出(取出)信息。它与ROM的最大区别是数据的易失性,即一旦断电所存储的数据将随之丢失。RAM在计算机和数字系统中用来暂时存储程序、数据和中间结果。
根据组成元件的不同,RAM内存又可以分多种,这里介绍其中几类:
01.DRAM(Dynamic RAM,动态随机存取存储器):
这是最普通的RAM,一个电子管与一个电容器组成一个位存储单元,DRAM将每个内存位作为一个电荷保存在位存储单元中,用电容的充放电来做储存动作,但因电容本身有漏电问题,因此必须每几微秒就要刷新一次,否则数据会丢失。存取时间和放电时间一致,约为2~4ms。所以DDR controller的工作之一就是定期去刷新DRAM,这样DRAM里的数据才不会出错。因为成本比较便宜,通常都用作计算机内的主存储器。
02.SRAM(Static RAM,静态随机存取存储器)
静态,指的是内存里面的数据可以长驻其中而不需要随时进行存取。每6颗电子管组成一个位存储单元,因为没有电容器,因此无须不断充电即可正常运作。因此,相较于DRAM,SRAM的速度更快,在快速读取和刷新时能够保持数据完整性。SRAM内部采用的是双稳态电路的形式来存储数据。所以SRAM的电路结构非常复杂。制造相同容量的SRAM比DRAM的成本高的多。正因为如此,才使其发展受到了限制。因此目前SRAM基本上只用于CPU内部的一级缓存以及内置的二级缓存。
3.SDRAM(Synchronous DRAM,同步动态随机存取存储器)
这是一种与CPU实现外频Clock同步的内存模式,一般都采用168Pin的内存模组,工作电压为3.3V。 所谓clock同步是指内存能够与CPU同步存取资料,这样可以取消等待周期,减少数据传输的延迟,因此可提升计算机的性能和效率。
4.DDR SDRAM(Double Data Rate二倍速率同步动态随机存取存储器)
作为SDRAM的换代产品,它具有两大特点:其一,速度比SDRAM有一倍的提高;其二,采用了DLL(Delay Locked Loop:延时锁定回路)提供一个数据滤波信号。这是目前内存市场上的主流模式。
二、ROM(READ Only Memory,只读存储器)
只读存储器(Read-Only Memory,ROM)以非破坏性读出方式工作,通常情况下只能读出,无法写入信息。ROM不像RAM能快速方便地改写存储内容,所存数据稳定 ,断电后所存数据也不会改变,并且结构较简单,使用方便,因而常用于存储各种固定程序和数据。它的读取速度比RAM慢。
根据组成元件的不同,ROM内存又分为以下五种:
1.MASK ROM(掩模型只读存储器)
一种只能读取资料的内存,在制造过程中,将资料以一特制光罩(mask)烧录于线路中,其资料内容在写入后就不能更改。Rom里烧录的数据即是我们通常所说的romcode,因此这是Boot过程验证的重点之一。Romcode出错等同于RTL出错,并且这种错误往往是致命的,如果芯片无法正常启动,可能会导致整个芯片报废。
2.PROM(Programmable ROM,可编程只读存储器)
这是一种可以用刻录机将资料写入的ROM内存,但只能写入一次,所以也被称为“一次可编程只读存储器”(One Time Progarmming ROM,OTP-ROM)。PROM在出厂时,存储的内容全为1,用户可以根据需要将其中的某些单元写入数据0(部分的PROM在出厂时数据全为0,则用户可以将其中的部分单元写入1), 以实现对其“编程”的目的。
3.EPROM(Erasable Programmable,可擦可编程只读存储器)
这是一种具有可擦除功能,擦除后即可进行再编程的ROM内存,写入前必须先把里面的内容用紫外线照射它的IC卡上的透明视窗的方式来清除掉。这一类芯片比较容易识别,其封装中包含有“石英玻璃窗”,一个编程后的EPROM芯片的“石英玻璃窗”一般使用黑色不干胶纸盖住, 以防止遭到阳光直射。
4.EEPROM(Electrically Erasable Programmable,电可擦可编程只读存储器)
功能与使用方式与EPROM一样,不同之处是清除数据的方式,它是以约20V的电压来进行清除的。另外它还可以用电信号进行数据写入。这类ROM内存多应用于即插即用(PnP)接口中。价格高,写入时间长。
三、闪存(FLASH)
FLASH是一种非易失性存储器,即断电数据也不会丢失,可读可写。
目前Flash主要有两种:NOR Flash和NADN Flash。两者区别可以参考文章 https://blog.csdn.net/qq_38880380/article/details/78884522
NOR Flash的逻辑接口主要有CFI 和SPI,其中CFI接口的NOR flash读取和我们常见的RAM/ROM的读取是一样的,可以按byte访问,用户可以直接运行装载在NOR FLASH里面的代码,但引脚数量多。SPI接口的NOR flash读/写需要做额外的地址逻辑映射,用户无法直接运行代码,且速度受限于SPI协议,但使用的引脚数量少。使用NOR flash可以减少RAM/ROM的容量从而节约了成本,但读取速度较RAM/ROM慢。容量通常不会太大,成本上较RAM/ROM低,但较NAND flash高。
NAND Flash没有采取内存的随机读取技术,为了生产降低成本,采用了串行结构,使用复杂的I/O口来串行地存取数据。它的读写是以一次读写一个Page(512byte及以上)的形式来进行的,用户不能直接运行NAND Flash上的代码。读写速度上NOR的读速度比NAND稍快一些,NAND的写入速度、擦除速度比NOR快很多。NAND Flash由于其低成本的优势,适用于大容量高数据密度的存储。
SSD固态硬盘就是基于闪存的存储,目前有取代 PC/服务器 上的机械硬盘的趋势。移动端的闪存则常常使用eMMC/UFS等Flash 的控制标准。
总结: