一文读懂RAM、ROM、SRAM、DRAM、SDRAM等内存概念

文章正文
发布时间:2024-08-27 10:34

ROM和RAM指的都是半导体存储器
ROM在系统停止供电的时候仍然可以保持数据
RAM通常都是在掉电之后就丢失数据,典型的就是计算机的内存。

一、ROM也有很多种:PROM(可编程的ROM)、EPROM(可擦除可编程ROM)、EEPROM

1、PROM是一次性的,早期的产品,现在已经不可能使用了;

2、EPROM是通过紫外光的照射擦出原先的程序,是一种通用的存储器;

3、EEPROM是通过电子擦出,价格很高,写入时间很长,写入很慢; 

 举个例子,手机软件一般放在EEPROM中,我们打电话,有些最后拨打的号码,暂时是存在SRAM中的,不是马上写入通讯记录(通话记录保存在EEPROM中),因为当时有很重要工作(通话)要做,如果写入,漫长的等待是让用户忍无可忍的。

二、RAM有两大类:静态RAM(StaticRAM/SRAM)和动态RAM(Dynamic RAM/DRAM)

1、SRAM

不需要刷新电路,掉电丢失数据,而且一般不是行列地址复用的。

集成度比较低,不适合做容量大的内存,一般是用在处理器的缓存里面。像S3C2440的ARM9处理器里面就有4K的SRAM用来做CPU启动时用的;

SRAM内部采用的是双稳态电路的形式来存储数据;

制造相同容量的SRAM比DRAM的成本高的多;

因此目前SRAM基本上只用于CPU内部的一级缓存以及内置的二级缓存。仅有少量的网络服务器以及路由器上能够使用SRAM。

2、DRAM

掉电丢失数据。每隔一段时间就要刷新一次数据,才能保存数据。而且是行列地址复用的,许多都有页模式。DRAM利用MOS管的栅电容上的电荷来存储信息,一旦掉电信息会全部的丢失,由于栅极会漏电,所以每隔一定的时间就需要一个刷新机构给这些栅电容补充电荷,并且每读出一次数据之后也需要补充电荷,这个就叫动态刷新,所以称其为动态随机存储器。由于它只使用一个MOS管来存信息,所以集成度可以很高,容量能够做的很大。SDRAM比它多了一个与CPU时钟同步。

DRAM保留数据的时间很短,速度也比SRAM慢,不过它还是比任何的ROM都要快;

从价格上来说DRAM相比SRAM要便宜很多,计算机内存就是DRAM的;

DRAM分为很多种,常见的主要有FPRAM/FastPage、EDORAM、SDRAM、DDR RAM、RDRAM、SGRAM以及WRAM等,这里介绍其中的一种DDR RAM。

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

2.1、DDR RAM(Data-Rate RAM)也称作DDR SDRAM

这种改进型的RAM和SDRAM是基本一样的,不同之处在于它可以在一个时钟读写两次数据,这样就使得数据传输速度加倍了。这是目前电脑中用得最多的内存。在很多高端的显卡上,也配备了高速DDR RAM来提高带宽,这可以大幅度提高3D加速卡的像素渲染能力。

2.2、SDRAM(Synchronous DRAM,同步动态随机存储器)

即数据的读写需要时钟来同步。

其存储单元不是按线性排列的,是分页的。

DRAM和SDRAM由于实现工艺问题,容量较SRAM大。但是读写速度不如SRAM。

一般的嵌入式产品里面的内存都是用的SDRAM。

三、Flash(闪存)

它结合了ROM和RAM的长处,不仅具备电子可擦除可编程(EEPROM)的性能,还不会断电丢失数据同时可以快速读取数据(NVRAM的优势),U盘和MP3里用的就是这种存储器。

在过去的20年里,嵌入式系统一直使用ROM(EPROM)作为它们的存储设备,然而近年来Flash全面代替了ROM(EPROM)在嵌入式系统中的地位,它用作存储Bootloader以及操作系统或者程序代码,或者直接当硬盘使用(U盘)。

采用的并行接口,有独立的地址线和数据线,性能特点更像内存,是芯片内执行(XIP, eXecute In Place),这样应用程序可以直接在flash闪存内运行,不必再把代码读到系统RAM中。

NAND采用的是串行的接口,地址线和数据线是共用的I/O线,类似电脑硬盘。CPU从里面读取数据的速度很慢,所以一般用NAND做闪存的话就必须把NAND里面的数据先读到内存里面,然后CPU才能够执行。无法寻址和直接运行程序,只能存储数据。另外NAND FLASH非常容易出现坏区,所以需要有校验的算法。

NOR Flash:用户可以直接运行装载在NOR FLASH里面的代码

目前Flash主要有NOR FlashNADN Flash

1、类型

分为NOR(或非)、 NAND(与非)

2、接口理解

NOR(或非)----地址、数据总线分开;

NAND(与非)----地址、数据总线共用。

3、读写单位:

NOR(或非)----字节;

NAND(与非)----页

4、组成结构:

NOR(或非)----扇区、字节;

NAND(与非)----块、页;

5、擦除单位:

NOR(或非)----扇区;

NAND(与非)----块;

6、读写擦除速度

NOR的读速度比NAND稍快一些。

NAND的写入/擦除速度比NOR快很多。

flash闪存是非易失存储器,可以对称为块的存储器单元块进行擦写和再编程。任何flash器件的写入操作只能在空或已擦除的单元内进行,所以大多数情况下,在进行写入操作之前必须先执行擦除。NAND器件执行擦除操作是十分简单的,而NOR则要求在进行擦除前先要将目标块内所有的位都写为0。由于擦除NOR器件时是以64~128KB的块进行的,执行一个写入/擦除操作的时间为5s,与此相反,擦除NAND器件是以8~32KB的块进行的,执行相同的操作最多只需要4ms。

NAND的擦除单元更小,相应的擦除电路更少。

(注:NOR FLASH SECTOR擦除时间视品牌、大小不同而不同,比如,4M FLASH,有的SECTOR擦除时间为60ms,而有的需要最大6s。)

7、容量

NOR flash占据了容量为1~16MB闪存市场的大部分

NAND flash只是用在8~128MB的产品当中,这也说明NOR主要应用在代码存储介质中,NAND适合于数据存储

8、可靠性和耐用性:

可以从寿命(耐用性)、位交换和坏块处理三个方面来比较NOR和NAND的可靠性。

A)寿命(耐用性) 

在NAND闪存中每个块的最大擦写次数是一百万次,而NOR的擦写次数是十万次。

NAND存储器除了具有10比1的块擦除周期优势,典型的NAND块尺寸要比NOR器件小8倍,每个NAND存储器块在给定的时间内的删除次数要少一些。

B)位交换

所有flash器件都受位交换现象的困扰。在某些情况下(很少见,NAND发生的次数要比NOR多),一个比特(bit)位会发生反转或被报告反转了。

一位的变化可能不很明显,但是如果发生在一个关键文件上,这个小小的故障可能导致系统停机。如果只是报告有问题,多读几次就可能解决了。

当然,如果这个位真的改变了,就必须采用错误探测/错误更正(EDC/ECC)算法。位反转的问题更多见于NAND闪存,NAND的供应商建议使用NAND闪存的时候,同时使用EDC/ECC算法。

这个问题对于用NAND存储多媒体信息时倒不是致命的。当然,如果用本地存储设备来存储操作系统、配置文件或其他敏感信息时,必须使用EDC/ECC系统以确保可靠性。

C)坏块处理

NAND器件需要对介质进行初始化扫描以发现坏块,并将坏块标记为不可用。在已制成的器件中,如果通过可靠的方法不能进行这项处理,将导致高故障率。

9、易于使用:

基于NOR的闪存,可以像其他存储器那样连接,并可以在上面直接运行代码。

由于NANDLFASH需要I/O接口,所以要复杂得多。各种NAND器件的存取方法因厂家而异。

在使用NAND器件时,必须先写入驱动程序,才能继续执行其他操作。向NAND器件写入信息需要相当的技巧,因为设计师绝不能向坏块写入,这就意味着在NAND器件上自始至终都必须进行虚拟映射。

10、软件支持: 

在NOR器件上运行代码不需要任何的软件支持;

在NAND器件上进行执行操作时,通常需要 驱动程序,也就是内存技术驱动程序(MTD);

NAND和NOR器件在进行写入和擦除操作时都需要MTD。

11、寻址:

NAND每次读取数据时都是指定块地址、页地址、列地址,列地址就是读的页内起始地址,每次都是先将数据读入页缓冲区内,再 由I/O输入地址 在缓冲区内寻址,其实这里列地址,只是指定起始地址的作用。NAND是以页为基本单位 操作的。写入数据也是首先在页面缓冲区内缓冲,数据首先写入这里,再写命令后,再统一写入页内。因此NAND页缓冲区的作用就是,保证芯片的按页的读、写操作,是I/O操作与芯片操作的接口、桥梁,因为数据是从I/O输入的,又是每次一个字节,因此需要缓冲。即使每次改写一个字节,都要重写整个页,因为它只支持页写,而且如果页内有未擦除的部分,则无法编程,在写入前必须保证页是空的。

NOR的 读、写是字节为基本单位操作的,但擦除是以扇区操作的。

综上所述在芯片操作上,NAND要比NOR快很多,因为NAND是页操作的而NOR是字节操作的。

12、应用:
NAND 正是基于这种构造:块、页,无法字节寻址,页读写本身就靠的是内部复杂的串、并行转换 ,因此也没有很多地址引脚,所以其地址、数据线共用,所以容量可以做的很大 。
NOR 是和SRAM一样的可随机存储的,也不需要驱动,因此,其地址就有限,所以容量普遍较小,其实是受限于地址线。

基于以上几点,在工业领域,NOR 用的较多,特别是程序存储,少量数据存储等。
在消费领域,大量数据存储,NAND较多。

Flash ROM是利用浮置栅上的电容存储电荷来保存信息,因为浮置栅不会漏电,所以断电后信息仍然可以保存。也由于其机构简单所以集成度可以做的很高,容量可以很大。Flash rom写入前需要用电进行擦除,而且擦除不同与EEPROM可以以byte(字节)为单位进行,flash rom只能以sector(扇区)为单位进行。不过其写入时可以byte为单位。flash rom主要用于bios,U盘,Mp3等需要大容量且断电不丢数据的设备

存储器局限性

闪存最关键的限制可能是写/擦除周期数有限。

为应对这种限制,可采用固件或文件系统驱动器,对存储器写的次数进行逐次计数。这些软件将动态地重新映射这些块,在扇区间分享写操作。换句话说,万一写操作失败,软件通过写验证和重新映射向未使用的扇区授权写操作。

像RAM一样,闪存可以一个字节或一个字一次进行读或编程,但擦除必须是一次进行一个完整的块,将块中的所有位重新置位为1。这意味着需要花更多时间进行编程。例如,如果将一位(0)写入一个块,要对该块重新编程,就必须完全擦除此块,而不是仅仅重写该位。