存储器的种类:ROM、RAM、FLASH

存储器
光学存储CD/DVD
磁性存储HDD/软盘
半导体
掉电非易失ROM
PROM/EPROM/EEPROM
早期BIOS
Flash
Nor Flash
Nand Flash
掉电易失RAM
DRAM
MEM内存条
SRAM
cache

一、 非易失性存储器 ROM(Read One Momory)

ROM (Read Only Memory)只读存储器。用来存储和保存数据。ROM 数据不能随意更新,但是在任何时候都可以读取。即使是断电,ROM 也能够保留数据。

ROM 分为以下几个种类:

1. MASK ROM:

厂商制造过程中使用一组特定的数据或指令进行编程,通过光刻工艺屏蔽存储器阵列的某些区域,将数据硬连接到 ROM,从而创建永久的、不可更改的 “1” 和“0”图案。这意味着一旦芯片生产出来,就无法修改、擦除或重写数据;

2. PROM:

可编程只读存储器只允许写入一次,所以也被称为 “一次可编程只读存储器”(One Time Progarmming ROM,OTP-ROM)。PROM 在出厂时,存储的内容全为 1,用户可以根据需要将其中的某些单元写入数据 0(部分的 PROM 在出厂时数据全为 0,则用户可以将其中的部分单元写入 1), 以实现对其“编程” 的目的。PROM 的典型产品是 “双极性熔丝结构”,如果我们想改写某些单元,则可以给这些单元通以足够大的电流,并维持一定的时间,原先的熔丝即可熔断,这样就达到了改写某些位的效果。另外一类经典的 PROM 为使用“肖特基二极管” 的 PROM,出厂时,其中的二极管处于反向截止状态,还是用大电流的方法将反相电压加在“肖特基二极管”,造成其永久性击穿即可。

3. EPROM:

EPROM 是一种断电后仍能保留数据的计算机储存芯片——即非易失性的(非挥发性)。它是一组浮栅晶体管,被一个提供比电子电路中常用电压更高电压的电子器件分别编程。一旦编程完成后,EPROM 只能用强紫外线照射来擦除。通过封装顶部能看见硅片的透明窗口,很容易识别 EPROM,这个窗口同时用来进行紫外线擦除。可以将 EPROM 的玻璃窗对准阳光直射一段时间就可以擦除。

4. EEPROM:

可电擦除、可编程的 ROM,按字节进行删除和重写,写入时间很长很慢,现在多用作非易失的数据存储器。特点是可以随机访问与修改,可以往每个 bit 中写入 0 或者 1。这是最传统的一种 EEPROM,掉电后数据不丢失,可以保存 100 年,可以擦写 100w 次。具有较高的可靠性,但是电路复杂成本也高。因此目前的 EEPROM 都是几十 KByte 到几百 KByte 的,很少有超过 512KByte。

二、易失性存储器 RAM(Random Access Memory)

RAM(Random Access Memory),随机存取存储器。与 CPU 直接交换数据的内部存储器,也叫内存。它可以随时读写,而且速度很快,通常作为操作系统或其他正在运行中的程序的临时数据存储媒介,当电源关闭时 RAM 不能保留数据。RAM 可以进一步分为静态 RAM(SRAM)和动态 RAM(DRAM)两大类。

1. 静态 RAM(Static RAM/SRAM):

SRAM 速度非常快,不需要刷新电路即能保存数据,是目前读写最快的存储设备了,但是集成度较低,非常昂贵。

2. 动态 RAM(Dynamic RAM/DRAM):

DRAM 保留数据的时间很短(需要刷新电路,每隔一段时间刷新一次,否则数据会消失),速度要比 SRAM 慢,不过还是比 ROM 要快,但从价格上来说 DRAM 相比 SRAM 要便宜很多,计算机内存就是 DRAM 的。

3. 内存工作原理:

内存是用来存放当前正在使用的(即执行中)的数据和程序,我们平常所提到的计算机的内存指的是动态内存(即 DRAM ),动态内存中所谓的 “动态” 指的是当我们将数据写入 DRAM 后,经过一段时间,数据会丢失,因此需要一个额外设电路进行内存刷新操作。

具体的工作过程是这样的:一个 DRAM 的存储单元存储的是 0 还是 1 取决于电容是否有电荷,有电荷代表 1,无电荷代表 0。但时间一长,代表 1 的电容会放电,代表 0 的电容会吸收电荷,这就是数据丢失的原因;刷新操作定期对电容进行检查,若电量大于满电量的 1/2,则认为其代表 1,并把电容充满电;若电量小于 1/2,则认为其代表 0,并把电容放电,藉此来保持数据的连续性。

三、FLASH 存储器

1. FLASH 闪存:

FLASH 闪存是非易失性(Non-Volatile)内存,结合了 ROM 和 RAM 的长处,可电擦除、可编程(EEPROM)、断电不会丢失数据、同时可以快速读取数据,U 盘和 MP3 里用的就是这种存储器。在过去的 20 年里,嵌入式系统一直使用 ROM(EPROM)作为存储设备,然而近年来 FLASH 全面代替了 ROM(EPROM)在嵌入式系统中的地位,用作存储装载程序以及操作系统或者程序代码或者直接当硬盘使用(U 盘)。FLASH 属于广义上的 ROM,和 EEPROM 的最大区别是 FLASH 按扇区操作,相对于 EEPROM 的改进就是擦除时不再以字节为单位,而是以块为单位,简化了电路,数据密度更高,降低了成本。目前 Flash 主要有两种 NOR Flash 和 NADN Flash。

  • NOR Flash:NOR Flash 的读取和我们常见的 SDRAM 的读取是一样,用户可以直接运行装载在 NOR FLASH 里面的代码,这样可以减少 SRAM 的容量从而节约了成本。一般小容量的用 NOR Flash,因为其读取速度快,多用来存储操作系统等重要信息。NOR FLASH 数据线和地址线分开,可以实现 RAM 一样的随机寻址功能,可以读取任何一个字节,但是擦除仍要按块来擦。
    • NOR闪存的访问模式为线性随机访问,存储能力比较低,擦写次数约为10~100万次,写入和擦除的速度较慢,比较适合用来进行程序的存储;NAND闪存的访问模式为以页的方式进行访问,单元存储密度高,擦写次数约为1~10万次,写入和擦除速度很快,比较适合存储大量的数据。这两者也存在着一些共同点,比如NOR闪存和NAND闪存的写代价和擦除代价都要明显高于读代价,都需要进行“写前擦除”操作,都存在擦除次数的限制等。
    • 目前,几乎所有的BIOS和一些机顶盒上都是使用NOR Flash,它的大小一般在1MB到32MB之间,价格昂贵,而NAND Flash则广泛应用在各种存储卡,U盘,SSD,eMMC等等大容量设备中,现有的大部分研究很多都基于NAND Flash。
  • NADN Flash:没有采取内存的随机读取技术,它的读取是以一次读取一块的形式来进行的,通常是一次读取 512 Byte,采用这种技术的 Flash 比较廉价。用户不能直接运行 NAND Flash 上的代码,NAND Flash 的开发板除了使用 NAND Flah 以外,还作上了一块小的 NOR Flash 来运行启动代码。大容量的用 NAND FLASH,最常见的 NAND FLASH 应用是嵌入式系统采用的 DOC(Disk On Chip)和我们通常用的 “闪盘”,可以在线擦除。NAND FLASH 同样是按块擦除,但是数据线和地址线复用,不能利用地址线随机寻址。读取只能按页来读取。(NAND FLASH 按块来擦除,按页来读,NOR FLASH 没有页)。由于 NAND FLASH 引脚上复用,因此读取速度比 NOR FLASH 慢一点,但是擦除和写入速度比 NOR FLASH 快很多。NAND FLASH 内部电路更简单,因此数据密度大、体积小、成本也低。因此大容量的 FLASH 都是 NAND FLASH。小容量的 2~12M 的 FLASH 多是 NOR FLASH。
    • NAND闪存包含两种类型:SLC(Single-Level Cell)和MLC(Multi-Level Cell)。MLC比SLC的存储密度更高,由于MLC比SLC价格更低,容量更高,因此,它已经被用于很多低端的消费类电子产品中。但是,SLC结构简单,在写入数据时电压变化的区间小,所以寿命较长,传统的SLC NAND闪存可以经受10万次的读写。由于SLC比MLC具有更高的速度和寿命(寿命通常是MLC的10倍[ChenKZ09]),因此,SLC大多用于对性能和可靠性要求较高的工业化应用中。

FLASH 工作原理: Flash Memory 属于非易失性存储设备 (Non-volatile Memory Device),FLASH 的内部存储是 MOSFET,里面有个悬浮门 (Floating Gate),是真正存储数据的单元。数据在 Flash 内存单元中是以电荷(electrical charge)形式存储的。存储电荷的多少取决于外部门(external gate)所被施加的电压,控制了是向存储单元中冲入电荷还是使其释放电荷。数据的表示是以所存储的电荷的电压是否超过一个特定的阈值 Vth 来表示。

对于数据的表示,单个存储单元中内部所存储电荷的电压,和某个特定的阈值电压 Vth 相比,如果大于此 Vth 值就是表示 1,反之小于 Vth 就表示 0;对于 NAND FLASH 的数据的写入 1,就是控制 External Gate 去充电,使得存储的电荷超过阈值 Vth 就表示 1 了。而对于写入 0,就是控制 External Gate 去放电,使得电荷减少到小于 Vth 就表示 0 了。

FLASH 结构:闪存芯片有多个层次组成,粒度由小到大分别是:页(page)——块(block)——分组(plane)——晶圆(die)——芯片(chip)

  • chip:芯片层是最外层结构,通常,芯片层拥有一套完整的外围电路,外部信号线。在很多时候,闪存厂商为了节约成本和空间,将多个芯片在物理上叠加起来,叠加在一起的每个芯片有一个独立的片选信号和一个独立的工作状态信号线,外部看来这些芯片就是一个整体,被称之为颗粒(package)。

  • die:晶圆层是闪存的第二层,每个晶圆有一个内部的工作状态信号线,与芯片层的工作状态信号线不同的是,用户无法看到内部的工作状态信号线,它存在于芯片内部,用于查询每个晶圆的当前状态。

  • plane:分组层是闪存中的关键层次,为了提高闪存的读写速度,在每个分组中设置了一个或者多个寄存器,数据被暂存在这个寄存器中,通过I/O信号线逐步传入或传出。

  • block:块层是闪存中擦除操作的基本单元,通常,一个分组中有固定数量的物理块。

  • page:页层是闪存中读写操作的基本单元,通常,一个物理块内有固定数量的物理页。

2.SSD 与 HDD:

  • HDD:硬盘驱动器 (Hard Disk Drive),最基本的电脑存储器,也就是机械硬盘,靠磁场存储信息,故也称为磁盘。在这里不做过多介绍。
  • SSD:固态硬盘(Solid State Drives)。由控制单元和存储单元(FLASH 芯片、DRAM 芯片)组成。固态硬盘的存储介质分为两种,一种是采用闪存(FLASH 芯片)作为存储介质,另外一种是采用 DRAM 作为存储介质。

3. eMMC 与 USF2.0:

  • eMMC:eMMC 的全称为 “embedded Multi Media Card”,是由 MMC 协会所订立的、主要是针对手机或平板电脑等产品的内嵌式存储器标准规格。eMMC 的一个明显优势是在封装中集成了一个控制器,它提供标准接口并管理闪存,eMMC 利用的是它将主控制器、闪存颗粒整合到了一个小的 BGA 封装内。 eMMC=NAND Flash + 控制器 + 标准封装接口

  • UFS 2.0:UFS 2.0 的闪存规格则采用了新的标准,它使用的是串行界面,很像 PATA、SATA 的转换。并且它支持全双工运行,可同时读写操作,还支持指令队列。相比之下,eMMC 是半双工,读写必须分开执行,指令也是打包的,在速度上就已经是略逊一筹了。而且 UFS 芯片不仅传输速度快,功耗也要比 eMMC 5.0 低一半,可以说是旗舰手机闪存的理想搭配。

  • 虽然 eMMC 在传输速度和性能方面不及现在最新的 UFS 2.0,但在日后相当长的一段时间内,还是会继续占领移动产品闪存芯片的主流。因为 eMMC 有着更成熟的工艺,能够大规模生产,成本更低更适合大众化的移动产品闪存芯片需求;而 UFS 2.0 虽然很好,但是生产成本较高,在现在刚开始投入市场的初期,只能够被放在高端产品上使用。但以现在的趋势来看,UFS 2.0 将会逐渐成为移动产品市场的主流相信是不成问题,毕竟科技是需要进步的。

更多参考1
更多参考2
更多参考3
更多参考4

map 文件中的存储介绍

● Section:描述映像文件的代码或数据块,我们简称程序段
● RO:Read Only 的缩写,包括只读数据(RO data)和代码(RO code)两部分内容,占用 FLASH 空间
● RW:Read Write 的缩写,包含可读写数据(RW data,有初值,且不为0),占用 FLASH(存储初值)和 RAM(读写操作)
● ZI:Zero initialized 的缩写,包含初始化为 0 的数据(ZI data),占用RAM 空间。
● .text:相当于RO code
● .constdata:相当于 RO data
● .bss:相当于ZI data
● .data:相当于RW data

RW 区也是存放在 ROM(FLASH)里面的,在执行 main 函数之前,RW(有初值且不为0 的变量)数据会被拷贝到RAM 区,同时还会在RAM 里面创建ZI 区(初始化为0 的变量)
RO Data:表示只读数据所占的空间大小,一般是指const修饰的数据或字符串常量占用的大小。
RW Data:表示有初值(且非 0)的可读写数据所占的空间大小,它同时占用FLASH 和 RAM空间
ZI Data:表示初始化为0的可读写数据所占空间大小,它只占用RAM 空间

Total RO Size:表示Code 和 RO 数据所占空间大小。
Total RW Size:表示RW 和 ZI 数据所占空间大小,即本映像所需SRAM 空间的大小。
Total ROM Size:表示Code、RO 和RW 数据所占空间大小,即本映像所需FLASH空间的大小。

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值