ROM RAM FLASH的区别与应用
一、 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了。
参考:[1] https://blog.csdn.net/faihung/article/details/78299931