目前主机板上的BIOS大多使用Flash Memory製造,翻译成中文就是"闪动的存储器",通常把它称作"快闪记忆体",简称"快闪记忆体"。 快闪记忆体盘是一种移动存储产品,可用于存储任何格式数据档案便于随身携带,是个人的“数据移动中心”。 快闪记忆体盘採用快闪记忆体存储介质(Flash Memory)和通用串列汇流排(USB)接口,具有轻巧精緻、使用方便、便于携带、容量较大、安全可靠、时尚潮流等特徵,是大家理想的便携存储工具。
基本介绍
- 中文名:快闪记忆体晶片
- 概述:快闪记忆体盘是一种移动存储产品
- 决定因素:页数量 页容量
- 快闪记忆体特点:断电后数据不消失
简介
我们常说的快闪记忆体其实只是一个笼统的称呼,準确地说它是非易失随机访问存储器(NVRAM)的俗称,特点是断电后数据不消失,因此可以作为外部存储器使用。
而所谓的记忆体是挥发性存储器,分为DRAM和SRAM两大类,其中常说的记忆体主要指DRAM,也就是我们熟悉的DDR、DDR2、SDR、EDO等等。
分类
快闪记忆体也有不同类型,其中主要分为NOR型和NAND型两大类。
NOR型与NAND型快闪记忆体的区别很大,打个比方说,NOR型快闪记忆体更像记忆体,有独立的地址线和数据线,但价格比较贵,容量比较小;而NAND型更像硬碟,地址线和数据线是共用的I/O线,类似硬碟的所有信息都通过一条硬碟线传送一般,而且NAND型与NOR型快闪记忆体相比,成本要低一些,而容量大得多。因此,NOR型快闪记忆体比较适合频繁随机读写的场合,通常用于存储程式代码并直接在快闪记忆体内运行,手机就是使用NOR型快闪记忆体的大户,所以手机的“记忆体”容量通常不大;NAND型快闪记忆体主要用来存储资料,我们常用的快闪记忆体产品,如快闪记忆体盘、数码存储卡都是用NAND型快闪记忆体。
速度
这里我们还需要端正一个概念,那就是快闪记忆体的速度其实很有限,它本身操作速度、频率就比记忆体低得多,而且NAND型快闪记忆体类似硬碟的操作方式效率也比记忆体的直接访问方式慢得多。因此,不要以为快闪记忆体盘的性能瓶颈是在接口,甚至想当然地认为快闪记忆体盘採用USB2.0接口之后会获得巨大的性能提升。
前面提到NAND型快闪记忆体的操作方式效率低,这和它的架构设计和接口设计有关,它操作起来确实挺像硬碟(其实NAND型快闪记忆体在设计之初确实考虑了与硬碟的兼容性),它的性能特点也很像硬碟:小数据块操作速度很慢,而大数据块速度就很快,这种差异远比其他存储介质大的多。这种性能特点非常值得我们留意。
NAND型
记忆体和NOR型快闪记忆体的基本存储单元是bit,用户可以随机访问任何一个bit的信息。而NAND型快闪记忆体的基本存储单元是页(Page)(可以看到,NAND型快闪记忆体的页就类似硬碟的扇区,硬碟的一个扇区也为512位元组)。每一页的有效容量是512位元组的倍数。所谓的有效容量是指用于数据存储的部分,实际上还要加上16位元组的校验信息,因此我们可以在快闪记忆体厂商的技术资料当中看到“(512+16)Byte”的表示方式。2Gb以下容量的NAND型快闪记忆体绝大多数是(512+16)位元组的页面容量,2Gb以上容量的NAND型快闪记忆体则将页容量扩大到(2048+64)位元组。
擦除操作
NAND型快闪记忆体以块为单位进行擦除操作。快闪记忆体的写入操作必须在空白区域进行,如果目标区域已经有数据,必须先擦除后写入,因此擦除操作是快闪记忆体的基本操作。一般每个块包含32个512位元组的页,容量16KB;而大容量快闪记忆体採用2KB页时,则每个块包含64个页,容量128KB。
每颗NAND型快闪记忆体的I/O接口一般是8条,每条数据线每次传输(512+16)bit信息,8条就是(512+16)×8bit,也就是前面说的512位元组。但较大容量的NAND型快闪记忆体也越来越多地採用16条I/O线的设计,如三星编号K9K1G16U0A的晶片就是64M×16bit的NAND型快闪记忆体,容量1Gb,基本数据单位是(256+8)×16bit,还是512位元组。
定址
定址时,NAND型快闪记忆体通过8条I/O接口数据线传输地址信息包,每包传送8位地址信息。由于快闪记忆体晶片容量比较大,一组8位地址只够定址256个页,显然是不够的,因此通常一次地址传送需要分若干组,占用若干个时钟周期。NAND的地址信息包括列地址(页面中的起始操作地址)、块地址和相应的页面地址,传送时分别分组,至少需要三次,占用三个周期。随着容量的增大,地址信息会更多,需要占用更多的时钟周期传输,因此NAND型快闪记忆体的一个重要特点就是容量越大,定址时间越长。而且,由于传送地址周期比其他存储介质长,因此NAND型快闪记忆体比其他存储介质更不适合大量的小容量读写请求。
决定因素
页数量
前面已经提到,越大容量快闪记忆体的页越多、页越大,定址时间越长。但这个时间的延长不是线性关係,而是一个一个的台阶变化的。譬如128、256Mb的晶片需要3个周期传送地址信号,512Mb、1Gb的需要4个周期,而2、4Gb的需要5个周期。
页容量
每一页的容量决定了一次可以传输的数据量,因此大容量的页有更好的性能。前面提到大容量快闪记忆体(4Gb)提高了页的容量,从512位元组提高到2KB。页容量的提高不但易于提高容量,更可以提高传输性能。我们可以举例子说明。以三星K9K1G08U0M和K9K4G08U0M为例,前者为1Gb,512位元组页容量,随机读(稳定)时间12μs,写时间为200μs;后者为4Gb,2KB页容量,随机读(稳定)时间25μs,写时间为300μs。假设它们工作在20MHz。
读取性能:NAND型快闪记忆体的读取步骤分为:传送命令和定址信息→将数据传向页面暂存器(随机读稳定时间)→数据传出(每周期8bit,需要传送512+16或2K+64次)。
K9K1G08U0M读一个页需要:5个命令、定址周期×50ns+12μs+(512+16)×50ns=38.7μs;K9K1G08U0M实际读传输率:512位元组÷38.7μs=13.2MB/s;K9K4G08U0M读一个页需要:6个命令、定址周期×50ns+25μs+(2K+64)×50ns=131.1μs;K9K4G08U0M实际读传输率:2KB位元组÷131.1μs=15.6MB/s。因此,採用2KB页容量比512位元组也容量约提高读性能20%。
写入性能:NAND型快闪记忆体的写步骤分为:传送定址信息→将数据传向页面暂存器→传送命令信息→数据从暂存器写入页面。其中命令周期也是一个,我们下面将其和定址周期合併,但这两个部分并非连续的。
K9K1G08U0M写一个页需要:5个命令、定址周期×50ns+(512+16)×50ns+200μs=226.7μs。K9K1G08U0M实际写传输率:512位元组÷226.7μs=2.2MB/s。K9K4G08U0M写一个页需要:6个命令、定址周期×50ns+(2K+64)×50ns+300μs=405.9μs。K9K4G08U0M实际写传输率:2112位元组/405.9μs=5MB/s。因此,採用2KB页容量比512位元组页容量提高写性能两倍以上。
块容量
块是擦除操作的基本单位,由于每个块的擦除时间几乎相同(擦除操作一般需要2ms,而之前若干周期的命令和地址信息占用的时间可以忽略不计),块的容量将直接决定擦除性能。大容量NAND型快闪记忆体的页容量提高,而每个块的页数量也有所提高,一般4Gb晶片的块容量为2KB×64个页=128KB,1Gb晶片的为512位元组×32个页=16KB。可以看出,在相同时间之内,前者的擦速度为后者8倍!
I/O位宽
以往NAND型快闪记忆体的数据线一般为8条,不过从256Mb产品开始,就有16条数据线的产品出现了。但由于控制器等方面的原因,x16晶片实际套用的相对比较少,但将来数量上还是会呈上升趋势的。虽然x16的晶片在传送数据和地址信息时仍採用8位一组,占用的周期也不变,但传送数据时就以16位为一组,频宽增加一倍。K9K4G16U0M就是典型的64M×16晶片,它每页仍为2KB,但结构为(1K+32)×16bit。
模仿上面的计算,我们得到如下。K9K4G16U0M读一个页需要:6个命令、定址周期×50ns+25μs+(1K+32)×50ns=78.1μs。K9K4G16U0M实际读传输率:2KB位元组÷78.1μs=26.2MB/s。K9K4G16U0M写一个页需要:6个命令、定址周期×50ns+(1K+32)×50ns+300μs=353.1μs。K9K4G16U0M实际写传输率:2KB位元组÷353.1μs=5.8MB/s
可以看到,相同容量的晶片,将数据线增加到16条后,读性能提高近70%,写性能也提高16%。
频率
工作频率的影响很容易理解。NAND型快闪记忆体的工作频率在20~33MHz,频率越高性能越好。前面以K9K4G08U0M为例时,我们假设频率为20MHz,如果我们将频率提高一倍,达到40MHz,则
K9K4G08U0M读一个页需要:6个命令、定址周期×25ns+25μs+(2K+64)×25ns=78μs。K9K4G08U0M实际读传输率:2KB位元组÷78μs=26.3MB/s。可以看到,如果K9K4G08U0M的工作频率从20MHz提高到40MHz,读性能可以提高近70%!当然,上面的例子只是为了方便计算而已。在三星实际的产品线中,可工作在较高频率下的应是K9XXG08UXM,而不是K9XXG08U0M,前者的频率可达33MHz。
製造工艺
製造工艺可以影响电晶体的密度,也对一些操作的时间有影响。譬如前面提到的写稳定和读稳定时间,它们在我们的计算当中占去了时间的重要部分,尤其是写入时。如果能够降低这些时间,就可以进一步提高性能。90nm的製造工艺能够改进性能吗?答案恐怕是否!实际情况是,随着存储密度的提高,需要的读、写稳定时间是呈现上升趋势的。前面的计算所举的例子中就体现了这种趋势,否则4Gb晶片的性能提升更加明显。
综合来看,大容量的NAND型快闪记忆体晶片虽然定址、操作时间会略长,但随着页容量的提高,有效传输率还是会大一些,大容量的晶片符合市场对容量、成本和性能的需求趋势。而增加数据线和提高频率,则是提高性能的最有效途径,但由于命令、地址信息占用操作周期,以及一些固定操作时间(如信号稳定时间等)等工艺、物理因素的影响,它们不会带来同比的性能提升。
1Page=(2K+64)Bytes;1Block=(2K+64)B×64Pages=(128K+4K)Bytes;1Device=(2K+64)B×64Pages×4096Blocks=4224Mbits
其中:A0~11对页内进行定址,可以被理解为“列地址”。
A12~29对页进行定址,可以被理解为“行地址”。为了方便,“列地址”和“行地址”分为两组传输,而不是将它们直接组合起来一个大组。因此每组在最后一个周期会有若干数据线无信息传输。没有利用的数据线保持低电平。NAND型快闪记忆体所谓的“行地址”和“列地址”不是我们在DRAM、SRAM中所熟悉的定义,只是一种相对方便的表达方式而已。为了便于理解,我们可以将上面三维的NAND型快闪记忆体晶片架构图在垂直方向做一个剖面,在这个剖面中套用二维的“行”、“列”概念就比较直观了。
容量识别
081G128M
082G256M
084G512M
088G1G
08AG2G
AG081G
BG084G
供应动态
日前,SandForce的新东家晶片公司LSI表示,他们正在研发一款用于超极本中SF主控SSD的新固件,而主要作用就是降低SSD的功耗,此外还能提升SSD的性能,加快启动速度。
参数
採用3. 3V电源;
晶片内部的存储单元阵列为(256M +8.192M) bit ×8bit,数据暂存器和缓冲存储器均为(2k + 64) bit ×8bit ;
具有指令/地址/数据复用的I/O口;
在电源转换过程中,其编程和擦除指令均可暂停;
由于採用可靠的CMOS移动门技术, 使得晶片最大可实现100kB编程/擦除循环,该技术可以保证数据保存10 年而不丢失。
说明
I/O0~I/O7:数据输入输出口, I/O口常用于指令和地址的输入以及数据的输入/输出,其中数据在
读的过程中输入。当晶片没有被选中或不能输出时, I/O口处于高阻态。
CLE:指令锁存端,用于激活指令到指令暂存器的路径, 并在WE上升沿且CLE 为高电平时将指令锁存。
ALE: 地址锁存端, 用于激活地址到内部地址暂存器的路径,并在WE上升沿且ALE为高电平时,地址锁存。
CE: 片选端, 用于控制设备的选择。当设备忙时, CE 为高电平而被忽略, 此时设备不能回到备用状态。
RE: 读使能端,用于控制数据的连续输出,并将数据送到I/ O 汇流排。只有在RE的下降沿时,输出数据才有效, 同时, 它还可以对内部数据地址进行累加。
WE: 写使能控制端, 用于控制I/O口的指令写入,同时,通过该连线埠可以在WE脉冲的上升沿将指令、地址和数据进行锁存。
WP: 防写端, 通过WP 端可在电源变换中进行防写。当WP为低电平时,其内部高电平发生器将复位。
R/ B : 就绪/ 忙输出, R/ B 的输出能够显示设备的操作状态。R/ B 处于低电平时,表示有编程、擦除或随机读操作正在进行。操作完成后, R/B会自动返回高电平。由于该端是漏极开路输出, 所以即使当晶片没有被选中或输出被禁止时, 它也不会处于高阻态。
PRE:通电读操作,用于控制通电时的自动读操作,PRE 端接到VCC可实现通电自动读操作。
VCC :晶片电源端。
VSS :晶片接地端。
NC:悬空。
工作状态
1 按页读操作
快闪记忆体晶片的默认状态为读状态。读操作是以通过4个地址周期将00h 地址写到指令暂存器为开始指令,一旦该指令被锁存,就不能在下页中写入读操作了。
可以通过写入随机数据输出指令来从一页中随机地输出数据。数据地址可以从将要输出的数据地址中通过随机输出指令自动找到下一个地址。随机数据输出操作可以多次使用。
2 页编程
快闪记忆体晶片的编程是按页进行的, 但它在单页编程周期中支持多个部分页编程, 而部分页的连续位元组数为2112。写入页编程确认指令(10h) 即可开始编程操作,但写入指令(10h) 前还必须输入连续数据。
连续装载数据在写入连续数据输入指令(80h)后,将开始4个周期的地址输入和数据装载,而字却不同于编程的数据, 它不需要装载。晶片支持在页中随机输入数据,并可根据随机数据输入指令(85h)自动变换地址。随机数据输入也可以多次使用。
3 快取编程
快取编程是页编程的一种, 可以由2112 位元组的数据暂存器执行, 并只在一个块中有效。因为快闪记忆体晶片有一页快取, 所以当数据暂存器被编入记忆单元中时它便可以执行连续数据输入。快取编程只有在未完成的编程周期结束且数据暂存器从快取中传数后才能开始。通过R/B脚可以判断内部编程是否完成。如果系统只用R/B来监控程式的进程,那幺,最后一页目标程式的次序则必须由当前页编程指令来安排。
4 存储单元复录
该作用可以快速有效地改写一页中的数据而不需要访问外部存储器。因为消耗在连续访问和重新装载上的时间被缩短, 因而系统的执行能力会提高。尤其当块的一部分被升级而剩下的部分需要複製到新的块中去时, 它的优势就明显显示出来了。该操作是一个连续执行的读指令, 但不用连续地到目的地址访问和複製程式。一个原始页地址指令为“35h" 的读操作, 就可以把整个2112位元组的数据转移到内部数据缓冲器中。当晶片返回就绪状态时,带有目的地址循环的页複製数据输入指令就会写入。而该操作中的错误程式会由“通过/ 失败”状态给出。但是,如果该操作的运行时间过长,将会由于数据丢失而引起位操作错误,从而导致外部错误“检查/ 纠正”设备检查失效。由于这个原因, 该操作应使用两位错误纠正。
5 块擦除
快闪记忆体晶片的擦除操作是以块为基础进行的。块地址装载将从一个块擦除指令开始, 并在两个循环内完成。实际上, 当地址线A12~A17 悬空时,只有地址线A18~A28 可用。装入擦除确认指令和块地址即可开始擦除。该操作必须按此顺序进行, 以免存储器中的内容受到外部噪声的影响而出现擦除错误。
6 读状态
快闪记忆体晶片内的状态暂存器可以确认编程和擦除操作是否成功完成。在写入指令(70h) 到指令暂存器后, 读循环会把状态暂存器的内容在CE或RE 的下降沿输出到I/O。而在新的指令到达前, 指令暂存器将保持读状态, 因此如果状态暂存器在一个随机读循环中处于读状态, 那幺在读循环开始前应给出一个读指令。