Flash、RAM、ROM的区别

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

PROM是可编程一次性(无法修改)的ROM; 

EPROM是紫外线可擦除可编程的ROM; 

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

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

静态RAM(Static RAM/SRAM):SRAM速度非常快,不需要刷新电路即能保存数据,是目前读写最快的存储设备了,但是集成度较低,非常昂贵,多用于CPU的一级缓存,二级缓存(L1/L2 Cache)。 

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

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

DDR RAM(Date-Rate RAM)也称作DDR SDRAM,这种改进型的RAM和SDRAM是基本一样的,不同之处在于它可以在一个时钟读写两次数据,这样就使得数据传输速度加倍了。这是目前电脑中用得最多的内存,而且它有着成本优势,事实上击败了Intel的另外一种内存标准-Rambus DRAM。在很多高端的显卡上,也配备了高速DDR RAM来提高带宽,这可以大幅度提高3D加速卡的像素渲染能力。 

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

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

三、 FLASH Memory 
(1)FLASH闪存 

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

NOR Flash:NOR Flash的读取和我们常见的SDRAM的读取是一样,用户可以直接运行装载在NOR FLASH里面的代码,这样可以减少SRAM的容量从而节约了成本。一般小容量的用NOR Flash,因为其读取速度快,多用来存储操作系统等重要信息。NOR FLASH数据线和地址线分开,可以实现RAM一样的随机寻址功能,可以读取任何一个字节,但是擦除仍要按块来擦。 

NADN Flash:没有采取内存的随机读取技术,它的读取是以一次读取一块的形式来进行的,通常是一次读取512个字节,采用这种技术的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型的。 

目前市面上的FLASH 主要来自Intel,AMD,Fujitsu和Toshiba,而生产NAND Flash的主要厂家有Samsung和Toshiba。根据不同的生产厂商和不同的应用,闪存卡大概有U盘、SmartMedia(SM卡)、Compact Flash(CF卡)、MultiMediaCard(MMC卡)、Secure Digital(SD卡)、Memory Stick(记忆棒)、MS卡、TF卡(Micro SD卡)、PCIe闪存卡、XD-Picture Card(XD卡)和微硬盘(MICRODRIVE)这些闪存卡虽然外观、规格不同,但是技术原理都是相同的。 

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,就是将其放电,电荷减少到小于Vth,就表示0了

(2)SSD与HDD 
HDD:硬盘驱动器(Hard Disk Drive),最基本的电脑存储器,也就是机械硬盘,靠磁场存储信息,故也称为磁盘。在这里不做过多介绍。 

SSD:固态硬盘(Solid State Drives),简称固盘。由控制单元和存储单元(FLASH芯片、DRAM芯片)组成。固态硬盘的存储介质分为两种,一种是采用闪存(FLASH芯片)作为存储介质,另外一种是采用DRAM作为存储介质。

基于DRAM类:采用DRAM作为存储介质,应用范围较窄。它仿效传统硬盘的设计,可被绝大部分操作系统的文件系统工具进行卷设置和管理,并提供工业标准的PCI和FC接口用于连接主机或者服务器。应用方式可分为SSD硬盘和SSD硬盘阵列两种。它是一种高性能的存储器,而且使用寿命很长,美中不足的是需要独立电源来保护数据安全。DRAM固态硬盘属于比较非主流的设备。 

基于闪存类:基于闪存的固态硬盘采用FLASH芯片作为存储介质,这也是通常所说的SSD。它的外观可以被制成笔记本硬盘、微硬盘、存储卡、U盘等样式。 固态硬盘SSD内主体其实就是一块PCB板,而这块PCB板上最基本的配件就是控制芯片,缓存芯片(部分低端硬盘无缓存芯片)和用于存储数据的闪存芯片。 

缓存芯片:主控芯片旁边是缓存芯片,固态硬盘和传统硬盘一样需要高速的缓存芯片辅助主控芯片进行数据处理。这里需要注意的是,有一些廉价固态硬盘方案为了节省成本,省去了这块缓存芯片,这样对于使用时的性能会有一定的影响。 

闪存芯片:除了主控芯片和缓存芯片以外,PCB板上其余的大部分位置都是NAND Flash闪存芯片了。NAND Flash闪存芯片又分为SLC(单层单元)MLC(多层单元)以及TLC(三层单元)NAND闪存。

SLC、MLC、TLC NAND的区别 
对于基于NAND存储技术的设备而言,无论是U盘还是SSD,甚至是SD卡,都会涉及到一个问题成本,于是产品设计从SLC转变到MLC,再到TLC,甚至QLC也将在后续问世,那么SLC、MLC、TLC究竟对用户有什么影响呢? 

SLC--SLC英文全称(Single Level Cell——SLC)即单层式储存 

SLC技术特点是在浮置闸极与源极之中的氧化薄膜更薄,在写入数据时通过对浮置闸极的电荷加电压,然后透过源极,即可将所储存的电荷消除,通过这样的方式,便可储存1个信息单元,这种技术能提供快速的程序编程与读取,不过此技术受限于Silicon efficiency的问题,必须要由较先进的流程强化技术(Process enhancements),才能向上提升SLC制程技术。 

MLC--MLC英文全称(Multi Level Cell——MLC)即多层式储存 
英特尔(Intel)在1997年9月最先开发成功MLC,其作用是将两个单位的信息存入一个Floating Gate(闪存存储单元中存放电荷的部分),然后利用不同电位(Level)的电荷,通过内存储存的电压控制精准读写。MLC通过使用大量的电压等级,每 个单元储存两位数据,数据密度比较大。SLC架构是0和1两个值,而MLC架构可以一次储存4个以上的值,因此,MLC架构可以有比较好的储存密度。 

TLC--TLC英文全称(Trinary-Level Cell)即三层式储存 

TLC即3bit per cell,每个单元可以存放比MLC多1/2的数据,共八个充电值,所需访问时间更长,因此传输速度更慢。TLC优势价格便宜,每百万字节生产成本是最低的,但是寿命短,只有约1000次擦写寿命。   

正如上面的介绍,从SLC到MLC再到TLC,cell对于电压的精确控制更高,这直接导致TLC的寿命下降到只有1000次PE,而对应的SLC和MLC分别为10000和3000,相对来说TLC的耐久度显著下降。 

TLC的另外一个劣势就是数据的读写效率,在SLC时代,1个cell一次只需要读取/写入1个bit,到MLC时代每次需要读取/写入2bit,而到TLC时代则上升到3bit,很显然其性能受到电压控制的程序复杂度会变慢,当然由于工艺和主控的不断升级,目前TLC已经可以追平MLC产品。 

不过TLC耐久的硬伤短时间内并无法得到有效解决,当然TLC的耐久可以通过存储设备的容量加大而均衡磨损,变相延长了产品的使用寿命

(3)eMMC与USF2.0 
在手机兴起的这几年中,手机的闪存规格有了很大的提高,eMMC规格的标准逐渐从eMMC 4.3时代发展到现在的eMMC 5.0存储产品,手机的闪存性能有了十分大的提高。不过,现在一种新的闪传规格已经出现,它就是UFS 2.0闪传标准,有着比eMMC 5.0更快的读取性能。 

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

eMMC=NAND Flash+控制器+标准封装接口 

现在,eMMC 4.5已经问世,eMMC 4.4的读取速度大约为104MB/s、eMMC 4.5则为200MB/s,性能在当时也是十分优秀的;而在2013年7月29日三星开始量产行业首款eMMC 5.0存储产品,其读取速度为400MB/s,但是因为使用的是8位并行界面,因此性能潜力已经基本到达瓶颈,以最新的eMMC 5.1规范来说,其理论带宽为600MB/s左右,性能的大提升基本是不可能的了。 

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

其实,JEDEC在2013年9月就已经发布了UFS 2.0的新一代闪存存储标准,UFS 2.0闪存读写速度可以高达每秒1400MB,这相当于在两秒钟内读写两个CD光盘的数据,不仅比eMMC有更巨大的优势,而且它甚至能够让电脑上使用的闪存存储介质固态硬盘也相形见绌。 

除了在速度性能方面有着巨大优势之外,在功耗方面UFS 2.0也有更好表现。事实上,如果从功耗方面来比较,即使是新一代的UFS 2.0标准也是能够与eMMC持平。不过eMMC和UFS 2.0在操作过程中消耗的功率约为1mW(毫瓦),而待机状态下功耗将低于0.5mW。当UFS 2.0满载时,所消耗的功率实际上比eMMC还要多,但它可以更快地完成操作而更早地切换到待机状态,因此在功耗方面的表现UFS 2.0与eMMC不相上下。 

在传输速度方面,UFS 2.0可以说远远超过eMMC的。即使与当前最新的eMMC 5.0标准相比,UFS 2.0的速度也高出3倍。UFS 2.0可以在UFS主机与闪存之间以全双工模式进行交换,读写可以同时执行。另外,UFS 2.0附加的控制通道可以有效地确保数据的安全传输,不必再因为读写操作而做不必要的等待,这是UFS 2.0获得更高速度的关键。据了解,UFS 2.0有两个版本,均有两个传输信道。HS-G2的理论带宽就有5.8Gbps,也就是超过了740MB/s,HS-G3更是翻番到11.6Gbps,接近了1.5GB/s,速度方面UFS 2.0完胜。

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

四、 补充说明
  
什么是SDRAM? 

SDRAM(Synchronous DRAM): 同步动态随机存储器。目前的168线64bit带宽内存基本上都采用SDRAM芯片,工作电压3.3V电压,存取速度高达7.5ns,而EDO内存最快为15ns。并将RAM与CPU以相同时钟频率控制,使RAM与CPU外频同步,取消等待时间。所以其传输速率比EDO DRAM更快。  

什么是DDR SDRAM? 

DDR(Double Data Rate)SDRAM。其核心建立在SDRAM的基础上,但在速度上有了提高。SDRAM仅在时钟信号的上升沿读取数据,而DDR在时钟信号的上升沿和下降沿都读取数据,因此,它的速度是标准SDRAM的2倍。   

什么是RDRAM? 
RDRAM(Rambus DRAM):总线式动态随机存储器,是由RAMBUS公司与INTEL公司合作提出的一项专利技术,它的数据传输率最高可达800MHZ,而它的总线宽度却仅为16bit,远远小于现在的SDRAM的64bit。  

什么是SPD? 

SPD(Serial Presence Detect): SPD是一颗8针的EEPROM(Electrically Erasable Programmable ROM 电可擦写可编程只读存储器), 容量为256字节,里面主要保存了该内存的相关资料,如容量、芯片厂商、内存模组厂商、工作速度等。SPD的内容一般由内存模组制造商写入。支持SPD的主板在启动时自动检测SPD中的资料,并以此设定内存的工作参数。  

现在的单片机,RAM主要是做运行时数据存储器,FLASH主要是程序存储器,EEPROM主要是用以在程序运行保存一些需要掉电不丢失的数据. 另外,一些变量,都是放到RAM里的,一些初始化数据比如液晶要显示的内容界面,都是放到FLASH区里的(也就是以前说的ROM区),EEPROM可用可不用,主要是存一些运行中的数据,掉电后且不丢失。

上一篇:C语言随笔2: rom ram 及其运行的过程


下一篇:小白笔记3---堆栈