一、 SRAM(Static Random Access Memory)与DRAM(Dynamic Random Access Memory)
这是根据内存的工作原理划分出的两种内存。
DRAM表示动态随机存取存储器。这是一种以电荷形式进行存储的半导体存储器。DRAM中的每个存储单元由一个晶体管和一个电容器组成。数据存储在电容器 中。电容器会由于漏电而导致电荷丢失,因而DRAM器件是不稳定的。为了将数据保存在存储器中,DRAM器件必须有规律地进行刷新。
而SRAM是静态的,因此只要供电它就会保持一个值。一般而言,SRAM 比DRAM要快,这是因为SRAM没有刷新周期。每个SRAM存储单元由6个晶体管组成,而DRAM存储单元由一个晶体管和一个电容器组成。相比而言, DRAM比SRAM每个存储单元的成本要高。照此推理,可以断定在给定的固定区域内DRAM的密度比SRAM 的密度要大。
SRAM常常用于高速缓冲存储器,因为它有更高的速率;而DRAM常常用于PC中的主存储器,因为其拥有更高的密度。
二、SDRAM(Synchronous DRAM)、DDRSDRAM(Dual Data Rate SDRAM)和RDRAM(Rambus DRAM)
这是计算机内存市场上对内存的分类方式,这些内存都属于上面提到的DRAM。
SDRAM
SDRAM中文名字是“同步动态随机存储器”,意思是指理论上其速度可达到与CPU同步。自从Pentium时代以来,SDRAM就开始了其不可动摇的霸主地位。这种主体结构一直延续至今。成为市场上无可争议的内存名称的代名词。
台式机使用的SDRAM一般为168线的管脚接口,具有64bit的带宽,工作电压为3.3伏,目前最快的内存模块为5.5纳秒。由于其最初的标准是采用将内存与CPU进行同步频率刷新的工作方式,因此,基本上消除了等待时间,提高了系统整体性能。
大家都知道CPU的核心频率=系统外部频率×倍频的方式。而内存就是工作在系统的外部频率下,最初的66MHz的外部工作频率严重地影响了系统整体的工作 性能,芯片组厂商又陆续制订出100MHz、133MHz系统外频的工作标准。这样SDRAM内存也就有了66MHz(PC66)、100MHz (PC100)和133MHz(PC133)三种标准规格。某些内存厂商为了满足一些超频爱好者的需求还推出了PC150和PC166内存,例如 Kingmax和Micro等。
DDR SDRAM从名称上可以看出,这种内存在技术上,与SDRAM有着密不可分的关系,事实上,DDR内存就是SDRAM内存的加强版。它主要是利用时钟脉冲的上升沿与下降沿传输数据,相当于原来两倍的频率的工作效率。
但这只是理论上,真正在实际应用中,DDR内存所带来的性能提升并不是很大,经测试在10%至15%之间。造成如此大的反差,主要原因在于目前的处理器及主板结构还是依照着SDRAM进行设计的,还没有充分挖掘出DDR的潜能。
在133MHz下,DDR内存带宽可以达到133×64bit/8×2=2.1GB/s,200MHz外频标准出台后,其带宽更是达到了200×64bit/8×2=3.2GB/s的海量
目前市场上已经有了针对DDR应用的处理器及配套主板,但是由于还是初级发展阶段,对于DDR内存的海量传输能力利用率不高,没能在实际应用中体现出来。所以,这种内存技术的成熟应用期还没有到,目前只处于初级应用阶段。
DDR只是对SDRAM技术做了一些加强,所以生产SDRAM的生产线极容易改建于DDR的生产。不过DDR内存为保持较高的数据传输率,电气信号必须要求能较快改变,因此采用了2.5伏的SSTL2标准,其管脚数为184线,与SDRAM在主板上无法实现兼容。
DDR SDRAM有着先天性的优势,因此,取代SDRAM只是时间上的问题,相信随着DDR内存体系的愈加成熟,与SDRAM体系结构间的性能会越拉越大,那时也正是DDR全面铺进千家万户的时刻。
DDR的外形和SDRAM极为相似,不过仔细观察还是有所不同。DDR使用的是184线的金手指,而普通SDRAM是168线,而且SDRAM底部金手指有两个缺口,而DDR仅有一个缺口,另外DDR内存边缘用于固定的卡口有两个,而SDRAM为一个,最后就是DDR的内存存颗粒比SDRAM的要略薄。
RDRAM
RDRAM原本是Intel强力推广的未来内存发展方向,其技术引入了RISC(精简指令集),依*高时钟频率(目前有300MHz、350MHz和400MHz三种规格)来简化每个时钟周期的数据量。因此其数据通道接口只有16bit(由两条8bit的数据通道组成),远低于SDRAM的64bit,由于RDRAM也是采用类似于DDR的双速率传输结构,同时利用时钟脉冲的上升与下降沿进行数据传输,因此在300MHz下的数据传输量可以达到300×16bit/8×2=1.2GB/s,400MHz时可达到1.6GB/s,目前主流的双通道PC800MHz RDRAM的数据传输量更是达到了3.2GB/s。相对于133MHz下的SDRAM的1.05GB/s,确实很有吸引力。
由于这种内存是全新的结构体系,需要兴建专用的内存生产线才能进行大批量生产,基本上无法对原有的生产线进行改建,这样初期产品的成本肯定是难以与DDR进行竞争,而且生产这种内存还必须按产量向Rambus公司交纳一定的专利金,让各厂商缠足不前,在一定程度阻碍了RDRAM的发展,不过更高带宽的双通道RDRAM不久将会出现。Rambus公司已经推出世界上第一条运行在1200MHz频率上的RDRAM,内存的峰值带宽将达到4.8GHz/s。除此之外,Rambus还将推出一款运行在1066MHz下的RDRAM(如图3所示),它们的设计和制造工艺和从前的Rambus内存区别不是很大。
三、SARAM(Single-access RAM)与DARAM(Dual-access RAM)
这是按CPU每个机器周期能对内存进行访问的次数来划分的两种内存。
SARAM在一个机器周期内只能被访问一次,而DARAM则在一个机器周期内能被访问两次。
四、NAND与NOR FLASH
NAND闪存是一种比硬盘驱动器更好的存储方案,这在不超过4GB的低容量应用中表现得犹为明显。随着人们持续追求功耗更低、重量更轻和性能更佳的产品,NAND正被证明极具吸引力。
NAND闪存阵列分为一系列128kB的区块(block),这些区块是NAND器件中最小的可擦除实体。擦除一个区块就是把所有的位(bit)设置 为“1”(而所有字节(byte)设置为FFh)。有必要通过编程,将已擦除的位从“1”变为“0”。最小的编程实体是字节(byte)。一些NOR闪存 能同时执行读写操作。虽然NAND不能同时执行读写操作,它可以采用称为“映射(shadowing)”的方法,在系统级实现这一点。这种方法在个人电脑 上已经沿用多年,即将BIOS从速率较低的ROM加载到速率较高的RAM上。
NAND的效率较高,是因为NAND串中没有金属触点。NAND闪存单元的大小比NOR要小(4F2: 10F2)的原因,是NOR的每一个单元都需要独立的金属触点。NAND与硬盘驱动器类似,基于扇区(页),适合于存储连续的数据,如图片、音频或个人电 脑数据。虽然通过把数据映射到RAM上,能在系统级实现随机存取,但是,这样做需要额外的RAM存储空间。此外,跟硬盘一样,NAND器件存在坏的扇区, 需要纠错码(ECC)来维持数据的完整性。
存储单元面积越小,裸片的面积也就越小。在这种情况下,NAND就能够为当今的低成本消费市场提供存储容量更大 的闪存产品。NAND闪存用于几乎所有可擦除的存储卡。NAND的复用接口为所有最新的器件和密度都提供了一种相似的引脚输出。这种引脚输出使得设计工程 师无须改变电路板的硬件设计,就能从更小的密度移植到更大密度的设计上。
NAND与NOR闪存比较
NAND闪存的优点在于写(编程)和擦除操作的速率快,而NOR的优点是具有随机存取和对字节执行写(编程)操 作的能力。NOR的随机存取能力支持直接代码执行(XiP),而这是嵌入式应用经常需要的一个功能。NAND的缺点是随机存取的速率慢,NOR的缺点是受 到读和擦除速度慢的性能制约。NAND较适合于存储文件。如今,越来越多的处理器具备直接NAND接口,并能直接从NAND(没有NOR)导入数据。
NAND的真正好处是编程速度快、擦除时间短。NAND支持速率超过5Mbps的持续写操作,其区块擦除时间短至2ms,而NOR是750ms。显然,NAND在某些方面具有绝对优势。然而,它不太适合于直接随机存取。
对于16位的器件,NOR闪存大约需要41个I/O引脚;相对而言,NAND器件仅需24个引脚。NAND器件 能够复用指令、地址和数据总线,从而节省了引脚数量。复用接口的一项好处,就在于能够利用同样的硬件设计和电路板,支持较大的NAND器件。由于普通的 TSOP-1封装已经沿用多年,该功能让客户能够把较高密度的NAND器件移植到相同的电路板上。NAND器件的另外一个好处显然是其封装选项:NAND 提供一种厚膜的2Gb裸片或能够支持最多四颗堆叠裸片,容许在相同的TSOP-1封装中堆叠一个8Gb的器件。这就使得一种封装和接口能够在将来支持较高 的密度。
NOR闪存的随机存取时间为0.12ms,而NAND闪存的第一字节随机存取速度要慢得多
以2Gb NAND器件为例,它由2048个区块组成,每个区块有64个页
2GB NAND闪存包含2,048个区块
每一个页均包含一个2048字节的数据区和64字节的空闲区,总共包含2,112字节。空闲区通常被用于 ECC、耗损均衡(wear leveling)和其它软件开销功能,尽管它在物理上与其它页并没有区别。NAND器件具有8或16位接口。通过8或16位宽的双向数据总线,主数据被 连接到NAND存储器。在16位模式,指令和地址仅仅利用低8位,而高8位仅仅在数据传输周期使用。
擦除区块所需时间约为2ms。一旦数据被载入寄存器,对一个页的编程大约要300μs。读一个页面需要大约25μs,其中涉及到存储阵列访问页,并将页载入16,896位寄存器中。
除了I/O总线,NAND接口由6个主要控制信号构成:
1.芯片启动(Chip Enable, CE#):如果没有检测到CE信号,那么,NAND器件就保持待机模式,不对任何控制信号作出响应。
2.写使能(Write Enable, WE#): WE#负责将数据、地址或指令写入NAND之中。
3.读使能(Read Enable, RE#): RE#允许输出数据缓冲器。
4.指令锁存使能(Command Latch Enable, CLE): 当CLE为高时,在WE#信号的上升沿,指令被锁存到NAND指令寄存器中。
5.地址锁存使能(Address Latch Enable, ALE):当ALE为高时,在WE#信号的上升沿,地址被锁存到NAND地址寄存器中。
6.就绪/忙(Ready/Busy, R/B#):如果NAND器件忙,R/B#信号将变低。该信号是漏极开路,需要采用上拉电阻。
数据每次进/出NAND寄存器都是通过16位或8位接口。当进行编程操作的时候,待编程的数据进入数据寄存器,处于在WE#信号的上升沿。在寄存器内随机存取或移动数据,要采用专用指令以便于随机存取。
数据寄存器输出数据的方式与利用RE#信号的方式类似,负责输出现有的数据,并增加到下一个地址。WE#和 RE#时钟运行速度极快,达到30ns的水准。当RE#或CE#不为低的时候,输出缓冲器将为三态。这种CE#和RE#的组合使能输出缓冲器,容许 NAND闪存与NOR、SRAM或DRAM等其它类型存储器共享数据总线。该功能有时被称为“无需介意芯片启动(chip enable don't care)”。这种方案的初衷是适应较老的NAND器件,它们要求CE#在整个周期为低(译注:根据上下文改写)。
输入寄存器接收到页编程(80h)指令时,内部就会全部重置为1s,使得用户可以只输入他想以0位编程的数据字节
带有随机数据输入的编程指令。该指令只需要后面跟随着数据的2个字节的地址
所有NAND操作开始时,都提供一个指令周期
当输出一串WE#时钟时,通过在I/O位7:0上设置指令、驱动CE#变低且CLE变高,就可以实现一个指令周期。注意:在WE#信号的上升沿上,指令、 地址或数据被锁存到NAND器件之中。如表1所示,大多数指令在第二个指令周期之后要占用若干地址周期。注意:复位或读状态指令例外,如果器件忙,就不应 该发送新的指令。
注意:因为最后一列的位置是2112,该最后位置的地址就是08h(在第二字节中)和3Fh(在第一字节中)。PA5:0指定区块内的页地址, BA16:6指定区块的地址。虽然大多编程和读操作需要完整的5字节地址,在页内随机存取数据的操作仅仅用到第一和第二字节。块擦除操作仅仅需要三个最高 字节(第三、第四和第五字节)来选择区块。
总体而言,NAND的基本操作包括:复位(Reset, FFh)操作、读ID(Read ID, 00h)操作、读状态(Read Status, 70h)操作、编程(Program)操作、随机数据输入(Random data input, 85h)操作和读(Read)操作等。
将NAND连接到处理器
选择内置NAND接口的处理器或控制器的好处很多。如果没有这个选择,有可能在NAND和几乎任何处理器之间设 计一个“无粘接逻辑(glueless)”接口。NAND和NOR闪存的主要区别是复用地址和数据总线。该总线被用于指定指令、地址或数据。CLE信号指 定指令周期,而ALE信号指定地址周期。利用这两个控制信号,有可能选择指令、地址或数据周期。把ALE连接到处理器的第五地址位,而把CLE连接到处理 器的第四地址位,就能简单地通过改变处理器输出的地址,任意选择指令、地址或数据。这容许CLE和ALE在合适的时间自动设置为低。
为了提供指令,处理器在数据总线上输出想要的指令,并输出地址0010h;为了输出任意数量的地址周期,处理器 仅仅要依次在处理器地址0020h之后输出想要的NAND地址。注意,许多处理器能在处理器的写信号周围指定若干时序参数,这对于建立合适的时序是至关重 要的。利用该技术,你不必采用任何粘接逻辑,就可以直接从处理器存取指令、地址和数据。
多层单元
多层单元(MLC)的每一个单元存储两位,而传统的SLC仅仅能存储一位。MLC技术有显著的密度优越性,然而,与SLC相比(表3),其速度或可靠性稍逊。因此,SLC被用于大多数媒体卡和无线应用,而MLC器件通常被用于消费电子和其它低成本产品。
NAND需要ECC以确保数据完整性。NAND闪存的每一个页面上都包括额外的存储空间,它就是64个字节的空闲区 (每512字节的扇区有16字节)。该区能存储ECC代码及其它像磨损评级或逻辑到物理块映射之类的信息。ECC能在硬件或软件中执行,但是,硬件执行有 明显的性能优势。在编程操作期间,ECC单元根据扇区中存储的数据来计算误码校正代码。数据区的ECC代码然后被分别写入到各自的空闲区。当数据被读出 时,ECC代码也被读出;运用反操作可以核查读出的数据是否正确。
有可能采用ECC算法来校正数据错误。能校正的错误的数量取决于所用算法的校正强度。在硬件或软件中包含 ECC,就提供了强大的系统级解决方案。最简单的硬件实现方案是采用简单的汉明(Simple Hamming)码,但是,只能校正单一位错误。瑞德索罗门(Reed-Solomon)码提供更为强大的纠错,并被目前的控制器广为采用。此外,BCH 码由于比瑞德索罗门方法的效率高,应用也日益普及。
要用软件执行NAND闪存的区块管理。该软件负责磨损评级或逻辑到物理映射。该软件还提供ECC码,如果处理器不包含ECC硬件的话。
编程或擦除操作之后,重要的是读状态寄存器,因为它确认是否成功地完成了编程或擦除操作。如果操作失败,要把该 区块标记为损坏且不能再使用。以前已编写进去的数据要从损坏的区块中搬出,转移到新的(好的)存储块之中。2Gb NAND的规范规定,它可以最多有40个坏的区块,这个数字在器件的生命周期(额定寿命为10万次编程/擦除周期)内都适用。一些有坏块的NAND器件能 够出厂,主要就归根于其裸片面积大。管理器件的软件负责映射坏块并由好的存储块取而代之。
利用工厂对这些区块的标记,软件通过扫描块可以确定区块的好坏。坏块标记被固定在空闲区的第一个位置(列地址 2048)。如果在0或1页的列地址2048上的数据是“non-FF”,那么,该块要标记为坏,并映射出系统。初始化软件仅仅需要扫描所有区块确定以确 定哪个为坏,然后建一个坏块表供将来参考。
小心不要擦除坏块标记,这一点很重要。工厂在宽温和宽电压范围内测试了NAND;一些由工厂标记为坏的区块可能在一定的温度或电压条件下仍然能工作,但是,将来可能会失效。如果坏块信息被擦除,就无法再恢复。