转载自韦东山的博客,点击此处可跳转到原文
一、什么是内存
什么是内存呢?在计算机的组成结构中,有一个很重要的部分,就是存储器。存储器是用来存储程序和数据的部件,对于计算机来说,有了存储器,才有记忆功能,才能保证正常工作。存储器的种类很多,按其用途可分为主存储器和辅助存储器,主存储器又称内存储器(简称内存),辅助存储器又称外存储器(简称外存)。外存通常是磁性介质或光盘,像硬盘,软盘,磁带,CD等,能长期保存信息,并且不依赖于电来保存信息,但是由机械部件带动,速度与CPU相比就显得慢的多。内存指的就是主板上的存储部件,是CPU直接与之沟通,并用其存储数据的部件,存放当前正在使用的(即执行中)的数据和程序,它的物理实质就是一组或多组具备数据输入输出和数据存储功能的集成电路,内存只用于暂时存放程序和数据,一旦关闭电源或发生断电,其中的程序和数据就会丢失。
二、内存工作原理简析
内存是用来存放当前正在使用的(即执行中)的数据和程序,我们平常所提到的计算机的内存指的是动态内存(即DRAM),动态内存中所谓的“动态”,指的是当我们将数据写入DRAM后,经过一段时间,数据会丢失,因此需要一个额外设电路进行内存刷新操作。
具体的工作过程是这样的:一个DRAM的存储单元存储的是0还是1取决于电容是否有电荷,有电荷代表1,无电荷代表0。但时间一长,代表1的电容会放电,代表0的电容会吸收电荷,这就是数据丢失的原因; 刷新操作定期对电容进行检查,若电量大于满电量的1/2,则认为其代表1,并把电容充满电; 若电量小于1/2,则认为其代表0,并把电容放电,藉此来保持数据的连续性
三、 RAM与ROM
ROM(Read Only Memory)和RAM(Random Access Memory)指的都是半导体存储器,ROM在系统停止供电的时候仍然可以保持数据,而RAM通常是在掉电之后就丢失数据,典型的RAM就是计算机的内存。
ROM有很多种,PROM是可编程的ROM,它和EPROM(可擦除可编程ROM)的区别是,PROM是一次性的,也就是软件灌入后,就无法修改了,这是早期的产品,现在已经不再使用,而EPROM是通过紫外光的照射擦出原先的程序的一种通用存储器。另外一种EEPROM是通过电子擦除,价格很高,写入时间很长,写入慢。
举个例子,手机软件一般放在EEPROM中,我们打电话,有些最后拨打的号码,暂时存在SRAM中,不是马上写入通话记录(通话记录保存在EEPROM中),因为当时有很重要工作(通话)要做,如果写入,漫长的等待用户无法忍受。
RAM有两大类,一种称为静态RAM(Static RAM/SRAM),SRAM速度非常快,是目前读写最快的存储设备了,它也非常昂贵,所以只在要求很苛刻的地方使用,譬如CPU的一级缓冲,二级缓冲。
另一种称为动态RAM(Dynamic RAM/DRAM),DRAM保留数据的时间很短,速度也比SRAM慢,不过它还是比任何的ROM都要快,但从价格上来说DRAM相比SRAM要便宜很多,计算机内存就是DRAM的。
四、DDR RAM
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加速卡的像素渲染能力。
。
五、NAND Flash和NOR Flash的比较
常用的Flash类型有:NOR Flash和NAND Flash两种。NOR Flash由Intel公司在1988年发明,以替代当时在市场上占据主要地位的EPROM和EEPROM。NANDFlash由Toshiba公司在1989年发明。两者的主要差别如下表所示。
六、NOR/NAND Flash的差别
NOR Flash支持XIP,即代码可以直接在NOR Flash上执行,无需拷贝到内存中。这是由于NOR Flash的接口与RAM完全相同,可以随机访问任意地址的数据。在NOR Flash上进行读操作的效率非常高,但是擦除和写操作的效率很低;另外,NOR Flash的容量一般比较小。NAND Flash进行擦除和写操作的效率更高,并且容量更大。一般而言,NOR Flash用于存储程序,NAND Flash用于存储数据。基于NAND Flash的设备通常也要搭配NOR Flash以存储程序。
Flash存储器件由擦除单元(也称为块)组成,当要写某个块时,需要确保这个块已经被擦除。NOR Flash的块大小范围为64KB~128KB;NAND Flash的块大小范围为8KB~64KB,擦/写一个NOR Flash块需4S,而擦/写一个NAND Flash块仅需2ms。NOR Flash的块太大,不仅增加了擦写时间,对于给定的写操作,NOR Flash也需要更多的擦除操作——特别是小文件,比如一个文件只有1KB,但是为了保存它却需要擦除大小为64KB~128KB的NOR Flash块。
NOR Flash的接口与RAM完全相同,可以随意访问任意地址的数据。而NAND Flash的接口仅仅包含几个I/O引脚,需要串行地访问。NAND Flash一般以512字节为单位进行读写。这使得NOR Flash适合于运行程序,而NAND Flash更适合于存储数据。
容量相同的情况下,NAND Flash的体积更小,对于空间有严格要求的系统,NAND Flash可以节省更多空间。市场上NOR Flash的容量通常为1~4MB(也有32MB的NOR Flash),NANDFlash的容量为8~512MB。容量的差别也使得NOR Flash多用于存储程序,NAND Flash多用于存储数据。
对于Flash存储器件的可靠性需要考虑3点:位反转、坏块和可擦除次数。所有Flash器件都遭遇位反转的问题:由于FLASH固有的电器特性,在读写数据过程中,偶然会产生一位或几位数据错误——这种概率很低,而NAND Flash出现的概率远大于NOR Flash。当位反转发生在关键的代码、数据上时,有可能导致系统崩溃。
当仅仅是报告位反转,重新读取即可;如果确实发生了位反转,则必须有相应的错误检测/恢复措施。在NAND Flash上发生位反转的概率更高,推荐使用EDC/ECC进行错误检测和恢复。NAND Flash上面会有坏块随机分布,在使用前需要将坏块扫描出来,确保不再使用它们,否则会使产品含有严重的故障。NAND Flash每块的可擦除次数通常在100000次左右,是NOR Flash的10倍。另外,因为NAND Flash的块大小通常是NOR Flash的1/8,所以NAND Flash的寿命远远超过NOR Flash。
inux对NOR、NAND Flash的软件支持都很成熟。在NOR Flash上常用jffs2文件系统,而在NAND Flash上常用yaffs文件系统。在更底层,有MTD驱动程序实现对它们的读、写、擦除操作,它也实现了EDC/ECC校验。