CN103870214A - 多层存储块兼具单层存储块性能的方法 - Google Patents
多层存储块兼具单层存储块性能的方法 Download PDFInfo
- Publication number
- CN103870214A CN103870214A CN201410065882.XA CN201410065882A CN103870214A CN 103870214 A CN103870214 A CN 103870214A CN 201410065882 A CN201410065882 A CN 201410065882A CN 103870214 A CN103870214 A CN 103870214A
- Authority
- CN
- China
- Prior art keywords
- slc
- mlc
- address
- individual layer
- storage block
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
一种多层存储块兼具单层存储块性能的方法包括在每个存储单位上仅设置“0”和“1”两个电位;模拟单层存储块的写入方式将数据写入多层存储块内。本发明采用上述的技术方案,可以使MLC具有SLC高效的写入性能,并且还具有SLC稳定性好以及寿命长的特点。
Description
技术领域
本发明涉及计算机技术,特别涉及计算机存储设备的改进技术。
背景技术
目前计算机存储设备的存储方式主要有三种:单层的SLC,速度快、耐用性好,但是成本高、容量小,多用在企业级产品中;多层的MLC,成本低,容量大,但是速度慢、耐用性一般,是消费级固态硬盘的主力;三层的TLC,成本最低廉,但是耐用性最差,常用于入门级低价产品。
SLC(如图1所示)全称单层式储存 (Single Level Cell),是指一个Block(块,Flash的基本存储单元,也可称为Cell)只有两种电荷值,高低不同的电荷值表明0或者1,因为只需要一组高低电压就可以区分出0或者1信号,所以SLC最大的驱动电压可以做到很低,SLC因为结构简单,在写入数据时电压变化的区间小,所以寿命较长,传统的SLC Flash可以经受10万次的读写,因此出现坏Block的几率较小,因为存储结构非常简单,一组电压即可驱动,所以其速度表现更好,目前所有的超高速卡都采用SLC类型的Flash芯片。不过这种一个Block只存储一组数据的模式无法在相同的晶圆面积上实现较高的存储密度,所以只能在工艺制程方面努力进步,才能满足用户在容量方面的要求。
MLC(如图2所示)全称多层式储存(Multi Leveled Cell),是那种充分利用Block的技术,它采用较高的电压驱动,通过不同级别的电压在一个Block中记录两组位信息(00、01、11、10),这样就可以将原本SLC的记录密度理论提升一倍,这对于曾经工艺制程遇到瓶颈的NAND Flash而言,是非常好的消息。不过MLC除了同制程、同晶圆面积时理论大一倍的记录空间外,存在一些先天的弊端,比如说电压区间更小,Flash就需要更多的CRC校验空间,这会大概占据Block中10%的空间,因此实际使用中同制程同晶圆面积的MLC的容量不到SLC的一倍。因为电压变化更频繁,所以MLC技术的Flash在寿命方面远劣于SLC,官方给出的可擦写次数仅为1万次,也就是说一张512MB的USB闪存盘,你写入512MB的数据1万次(理想状态),它就完蛋了,这可能是MLC最要命的一个缺点。MLC技术的Flash还有一个缺点,它的读写速度先天不如SLC,一个Block存储两组位数据,自然需要更长的时间,这里面还有电压控制、CRC写入方式等因素需要考虑。综合而言,SLC在寿命和性能方面拥有独特的优势,不过需要更好的工艺制程才能拥有较大的容量。而MLC虽然在容量方面有先天的优势,但在速度和寿命方面存在先天的不足。
TLC 全称(Trinary-Level Cell)即3bit/cell,也有Flash厂家叫8LC,速度慢寿命短,价格便宜,约500次擦写寿命,目前还没有厂家能做到1000次,TLC目前较多使用在要求不高的USB 存储卡低端产品,这里就多做介绍了。
MLC是低成本解决方案,而SLC高性能高成本的代表者,两者的性能(尤其是随机写入方面)、读写寿命都存在很大差异,做一颗16GB SLC=一颗32GB MLC=一颗48GB TLC。从上述各种存储块的工作原理以及其性能方面的比较可以看出来,各种存储块都具有自己的优势和缺陷,如果能够使MLC具有SLC的高性能,将是非常理想的存储方式。
发明内容
本发明提供一种多层存储块兼具单层存储块性能的方法,采用改变传统MLC的硬件条件及其写入方法,使其兼具SLC的写入性能,解决现有技术中SLC存储容量有限的技术问题。
本发明设计的方案采取以下方法解决上述问题:在每个存储单位上仅设置“0”和“1”两个电位;模拟单层存储块的写入方式将数据写入多层存储块内,模拟单层存储块写入方式是采用独立内置固件的形式完成的,而所述内置固件采用TurboMLC技术将每单位存储2比特位改为每单位存储1比特位。
本发明采用上述的技术方案,可以使MLC具有SLC高效的写入性能,并且还具有SLC稳定性好以及寿命长的特点。
附图说明
图1是SLC存储方式的示意图。 图2是MLC存储方式的示意图。 图3是本发明TurboMLC的示意图。 图4是本发明存储设备的工作原理示意图。
具体实施方式
结合上述附图3和附图4说明本发明的具体实施例。
本发明多层存储块兼具单层存储块性能的方法包括以下步骤: A.在每个存储单位上仅设置“0”和“1”两个电位; B.模拟单层存储块的写入方式将数据写入多层存储块内,所述模拟单层存储块写入方式是采用独立内置固件的形式完成的,所述内置固件采用TurboMLC技术将每单位存储2比特位改为每单位存储1比特位。
一般情况NAND闪存阵列分为一系列的区块(block),这些区块是 NAND器件中最小的可擦除实体。擦除一个区块就是把所有的位(bit)设置为"1"(而所有字节(byte)设置为FFh)。有必要通过编程,将已擦除 的位从"1"变为"0"。最小的编程实体是字节(byte)。SLC NAND Flash的寻址方式和MLC NAND Flash的memory组织方式紧密相关,NAND Flash的数据是以bit的方式保存在memory cell,一般来说,SLC NAND FLASH一个cell中只能存储一个bit。这些cell以8个或者16个为单位,连成bit line,形成所谓的byte(x8)/word(x16),这就是NAND Device的位宽。
这些Line会再组成Page,通常是528Byte/page或者264Word /page。然后,每32个page形成一个Block,Sizeof(block)=16kByte,Block是NAND Flash中最大的操作单元,擦除就是按照block为单位完成的,而编程/读取是按照page为单位完成的。所以,按照这样的组织方式可以形成所谓的三类地址: -Block Address -Page Address -Column Address
对于NAND Flash来讲,地址和命令只能在I/O[7:0]上传递,数据宽度可以是8位或者16位,但是,对于x16的NAND Device,I/O[15:8]只用于传递数据。
本发明以MLC NAND FLASH—528Byte/page 总容量,512Mbit +512kbyte的NAND器件为例说明: 因为 1 block=16kbyte, 512Mbit=64Mbyte, Numberof(block)=1024 1block=32page, 1page=528byte=512byte(Main Area)+16byte(Spare Area)
512byte需要9bit来表示,对于528byte系列的NAND,这512byte被分成1st half和2nd half,各自的访问由所谓的pointer operation命令来选择,也就是选择了bit8的高低。因此A8就是halfpage pointer,A[7:0]就是所谓的column address。 32个page需要5bit来表示,占用A[13:9],即该page在块内的相对地址。Block的地址是由A14以上的bit来表示,例如MLC NAND FLASH 2GB的NAND,共4096block,2GB SLC NAND FLASL 共2096block,因此,需要24个bit来表示,即A[25:14],而page address就是blcok address|page address in block NAND Flash的地址表示为: Block Address|Page Address in block|halfpage pointer|Column Address 地址传送顺序是Column Address,Page Address,Block Address。 由于地址只能在I/O[7:0]上传递,因此,采用移位的方式进行计算(TurboMLC算法)。 例如,对于512Mbit x8的NAND flash,地址范围是0~0x3FF_FFFF,只要是这个范围内的数值表示的地址都是有效的。512byte需要9bit来表示,对于528byte系列的NAND,这512byte被分成1st half和2nd half,各自的访问由所谓的pointer operation命令来选择,也就是选择了bit8的高低。因此A8就是halfpage pointer,A[7:0]就是所谓的column address。32个page需要5bit来表示,占用A[13:9],即该page在块内的相对地址。Block的地址是由A14以上的bit来表示,MLC NAND FLASH 2GB的NAND(4096block),因此,page页面实际变成为(4096bock).顺序是Column Address,Page Address,Block Address。
以MLC NAND FLASH 2GB的NAND(4096block)为例:
第1步是传递column address,就是NAND_ADDR[7:0],不需移位即可传递到I/O[7:0]上而halfpage pointer即bit8是由操作指令决定的,即指令决定在哪个halfpage上进行读写,而真正的bit8的值是don't care的。
第2步就是将MLC NAND FLASH 2GB的NAND(4096block) NAND_ADDR右移9位,将MLC NAND FLASH NAND_ADDR[16:9]传到I/O[7:0]上;
第3步将[24:17]放到I/O上;
第4步需要将NAND_ADDR[25]放到I/O上;
因此,整个地址传递过程需要4步才能完成,即4-stepaddressing。
如果NAND Flash的容量是256Mbit以下,那么,block adress最高位只到bit24,因此寻址只需要3步。
因此,整个地址传递过程需要4 步才能完成,既变成2-step addressing。 和SLC NAND FLASH的使用方法完全相同,只是由2个page变成1个page,总的容量变成了2048Block。
正如硬盘的盘片被分为磁道,每个磁道又分为若干扇区,MLC NAND FLASH 被重新编译后也分为若干block,每个block分为如干page分配结果如下:
1block = 64page
1page = 2048bytes(datafield) + 32bytes(oob)同SLC的结构相同,4096bytes理论上被分为1st half 和2sd half,每个half各变成2048个字节。06)由固态硬盘的控制器算法始读取此页,发送命令串实现把2个bit实现1个bit.
column_addr=2096;
NF_CMD=0x01; ? 从2nd half R
NF_ADDR=column_addr&0xff; 1st Cycle
NF_ADDR=page_address&0xff; 2nd.Cycle
NF_ADDR=(page_address>>8)&0xff; 3rd.Cycle
NF_ADDR=(page_address>>16)&0xff; 4th.Cycle
其中NF_CMD和NF_ADDR分别是NandFlash的命令寄存器和地址寄存器的地址解引用,
#define rNFCMD (*(volatile unsigned char *)0x4e000004) //NADD Flash command
#define rNFADDR (*(volatile unsigned char *)0x4e000008) //NAND Flash address
事实上,当NF_CMD=0x01时,地址寄存器中的第8位(A8)将被设置为1,A8位不在我们传递的地址中,这个位其实就是硬件管理电路根据提高高电平或者低电平对01h或是00h这两个命令来置高位或是置低位),这样我们传递column_addr的值256随然由于数据溢出变为1,但A8位已经由于NF_CMD =0x01的关系被置为1了,所以我们传到地址寄存器里的值变成了
A0 A1 A2 A3 A4 A5 A6 A7 A8
1 0 0 0 0 0 0 0 1
这8个位所表示的变为SLC的配置方式,这样读操作将从此页的第2096byte(2nd half的第0号byte)开始读取数据。 nand_flash.c中包含3个函数
void nf_reset(void);
void nf_init(void);
void nf_read(unsigned int src_addr,unsigned char *desc_addr,int size);
nf_reset()将被nf_init()调用。nf_init()是nand_flash的初始化函数,在对nand flash进行任何操作之前,nf_init()必须被调用。
nf_read(unsigned int src_addr,unsigned char *desc_addr,int size);为读函数,src_addr是nand flash上的地址,desc_addr是内存地址,size是读取文件的长度。
在nf_reset和nf_read函数中存在两个宏
NF_nFCE_L();
NF_nFCE_H();
你可以看到当每次对Nand Flash进行操作之前NF_nFCE_L()必定被调用,操作结束之时NF_nFCE_H()必定被调用。这两个宏用于启动和关闭Flash芯片的工作(片选/取消片选)。至于nf_reset()中的
rNFCONF=(1<<15)|(1<<14)|(1<<13)|(1<<12)|(1<<11)|(TACLS<<8)|(TWRPH0<<4)|(TWRPH1<<0);
这一行代码是对MLC NAND NandFlash的控制寄存器进行初始化配置,rNFCONF是Nand Flash的配置FW指令。
根据
column_addr=src_addr%512;
page_address=(src_addr>>9);
column_addr=5000%512=392
page_address=(5000>>9)=9
nf_read函数将这样发送命令和参数
column_addr=5000%512;
>page_address=(5000>>9);
NF_CMD=0x01; 从2nd half开始读取
NF_ADDR= column_addr &0xff;
1st Cycle
NF_ADDR=page_address&0xff;
2nd.Cycle
NF_ADDR=(page_address>>8)&0xff; 3rd.Cycle
NF_ADDR=(page_address>>16)&0xff; 4th.Cycle
向MLC Nand Flash的命令寄存器和地址寄存器发送完以上命令和参数之后, 就可以从rNFDATA寄存器(NandFlash数据寄存器已经模拟为SLC NADN FLASH)通过一系列修改后,在固态硬盘上MLC NAND FLASH可以模拟成SLC使用,从而达使用MLC NAND FALSH到降低SLC NAND FLASH高昂成本的目的,平且不会大幅度降低产品寿命。
本发明人开发出独立FW固件用轫体模拟SLC的写入方式,突破硬件限制,大幅提升效能,十分适合需要大容量的储存解决方案,每个储存单位上仅有0和1的储存状态,提高电压的容许差,就如同SLC的韧体设计一样,因此,能达到SLC的稳定度与耐受度。
本发明的具做法是在Controlle和FLASH基础上加入TurboMLC技术使其突破硬件限制并且能够支持模拟,在硬件技术支持下,编译固件算法把MLC闪存的2bpc(每单元两个比特位)重新编程为1bpc,以增加每一层之间的敏感度,让闪存的工作方式更像是SLC。本发明通过试验证明,这种新型的存储设备平均可以经受30000次编程/擦写循环(P/E),对比MLC 3000次左右的寿命提高了一个数量级,并且已经达到新一代SLC的一半左右,在性能上,采用TurboMLC技术的固态硬盘的写入速度大概有SLC NAND的70%,相比MLC NAND要快很多。TurboMLC原理是把2bit重新编写为1bie,被编写的MLC容量会降低一半,比如8GB采用TurboMLC后容量会降低一半变成4GB。原本寿命只有3000 P/E的MLC NAND在采用TurboMLC技术后,寿命将变为30000 P/E,虽然相比传统制程SLC NAND的100000 P/E和新制程的60000P/E的SLC NAND而言还有一段差距,但相比MLC NAND已经是一次几何级的飞跃。如果在一块采用TurboMLC技术的32GB固态硬盘上做写入操作,按照每天写入320GB来计算,也能连续写入7.6年,而换成MLC则只能坚持不到1年,寿命得到很大的延长。
以上内容是结合具体的优选实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单推演或替换,都应当视为属于本发明的保护范围。
Claims (5)
1.一种多层存储块兼具单层存储块性能的方法,其特征在于:该方法包括以下步骤: A.在每个存储单位上仅设置“0”和“1”两个电位; B.模拟单层存储块的写入方式将数据写入多层存储块内。
2.根据权利要求1所述多层存储块兼具单层存储块性能的方法,其特征在于:步骤B中所述模拟单层存储块写入方式是采用独立内置固件的形式完成的。
3.根据权利要求2所述多层存储块兼具单层存储块性能的方法,其特征在于:步骤B中所述内置固件采用TurboMLC技术将每单位存储2比特位改为每单位存储1比特位。
4.根据权利要求3所述多层存储块兼具单层存储块性能的方法,其特征在于:步骤B中所述内置固件对寻址方式进行编译。
5.根据权利要求3所述多层存储块兼具单层存储块性能的方法,其特征在于:步骤B中所述内置固件对寻址方式编译的方法是通过pointer operation命令选择bit8的高低,从而确定A8为halfpage pointer,确定A[7:0]为column address,确定存储单元page在存储块内的相对地址。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410065882.XA CN103870214A (zh) | 2014-02-26 | 2014-02-26 | 多层存储块兼具单层存储块性能的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410065882.XA CN103870214A (zh) | 2014-02-26 | 2014-02-26 | 多层存储块兼具单层存储块性能的方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN103870214A true CN103870214A (zh) | 2014-06-18 |
Family
ID=50908798
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410065882.XA Pending CN103870214A (zh) | 2014-02-26 | 2014-02-26 | 多层存储块兼具单层存储块性能的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103870214A (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106293841A (zh) * | 2016-08-11 | 2017-01-04 | 青岛海信移动通信技术股份有限公司 | 一种烧录数据的方法和装置 |
CN107402716A (zh) * | 2016-05-20 | 2017-11-28 | 合肥兆芯电子有限公司 | 数据写入方法、内存控制电路单元与内存储存装置 |
CN108572924A (zh) * | 2018-04-20 | 2018-09-25 | 华中科技大学 | 一种3d mlc闪存设备的请求处理方法 |
CN109002367A (zh) * | 2017-06-07 | 2018-12-14 | 力晶科技股份有限公司 | 非易失性储存装置、非易失性存储器集成电路及操作方法 |
CN109411000A (zh) * | 2018-09-20 | 2019-03-01 | 联想(北京)有限公司 | 一种固态存储器的控制方法、固态存储器及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102346652A (zh) * | 2010-07-21 | 2012-02-08 | 慧荣科技股份有限公司 | 快闪存储装置与快闪存储装置管理方法 |
CN103049217A (zh) * | 2012-12-07 | 2013-04-17 | 记忆科技(深圳)有限公司 | Mlc nand型固态硬盘及读写控制方法、闪存控制器 |
US20130173857A1 (en) * | 2006-10-30 | 2013-07-04 | Won-Moon CHEON | Flash memory device with multi-level cells and method of writing data therein |
-
2014
- 2014-02-26 CN CN201410065882.XA patent/CN103870214A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130173857A1 (en) * | 2006-10-30 | 2013-07-04 | Won-Moon CHEON | Flash memory device with multi-level cells and method of writing data therein |
CN102346652A (zh) * | 2010-07-21 | 2012-02-08 | 慧荣科技股份有限公司 | 快闪存储装置与快闪存储装置管理方法 |
CN103049217A (zh) * | 2012-12-07 | 2013-04-17 | 记忆科技(深圳)有限公司 | Mlc nand型固态硬盘及读写控制方法、闪存控制器 |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107402716A (zh) * | 2016-05-20 | 2017-11-28 | 合肥兆芯电子有限公司 | 数据写入方法、内存控制电路单元与内存储存装置 |
CN106293841A (zh) * | 2016-08-11 | 2017-01-04 | 青岛海信移动通信技术股份有限公司 | 一种烧录数据的方法和装置 |
CN109002367A (zh) * | 2017-06-07 | 2018-12-14 | 力晶科技股份有限公司 | 非易失性储存装置、非易失性存储器集成电路及操作方法 |
CN108572924A (zh) * | 2018-04-20 | 2018-09-25 | 华中科技大学 | 一种3d mlc闪存设备的请求处理方法 |
CN108572924B (zh) * | 2018-04-20 | 2021-10-08 | 华中科技大学 | 一种3d mlc闪存设备的请求处理方法 |
CN109411000A (zh) * | 2018-09-20 | 2019-03-01 | 联想(北京)有限公司 | 一种固态存储器的控制方法、固态存储器及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9317418B2 (en) | Non-volatile memory storage apparatus, memory controller and data storing method | |
US8001317B2 (en) | Data writing method for non-volatile memory and controller using the same | |
US8312554B2 (en) | Method of hiding file at data protecting mode for non-volatile memory module, memory controller and portable memory storage apparatus | |
US9213629B2 (en) | Block management method, memory controller and memory stoarge apparatus | |
US20090222643A1 (en) | Block management method for flash memory and controller and storage sysetm using the same | |
US20090198875A1 (en) | Data writing method for flash memory, and controller and system using the same | |
TWI590051B (zh) | 資料儲存裝置及其資料維護方法 | |
US9037814B2 (en) | Flash memory management method and flash memory controller and storage system using the same | |
US9268688B2 (en) | Data management method, memory controller and memory storage apparatus | |
CN103514096B (zh) | 数据储存方法、存储器控制器与存储器储存装置 | |
CN107423231B (zh) | 用来管理一记忆装置的方法以及记忆装置与控制器 | |
US9141530B2 (en) | Data writing method, memory controller and memory storage device | |
US9619380B2 (en) | Data writing method, memory control circuit unit and memory storage apparatus | |
CN102214143A (zh) | 一种多层单元闪存的管理方法、装置及存储设备 | |
TWI606339B (zh) | 資料儲存裝置及其資料維護方法 | |
CN106155582B (zh) | 非挥发性储存装置与控制器 | |
CN103870214A (zh) | 多层存储块兼具单层存储块性能的方法 | |
US9009442B2 (en) | Data writing method, memory controller and memory storage apparatus | |
CN101266828B (zh) | 混合型闪存存储装置及其操作方法 | |
US8417909B2 (en) | Block management and data writing method, and flash memory storage system and controller using the same | |
US10824340B2 (en) | Method for managing association relationship of physical units between storage area and temporary area, memory control circuit unit, and memory storage apparatus | |
CN110442299B (zh) | 数据写入方法、存储器控制电路单元以及存储器储存装置 | |
US20090182932A1 (en) | Method for managing flash memory blocks and controller using the same | |
US8832358B2 (en) | Data writing method, memory controller and memory storage apparatus | |
CN103389941A (zh) | 存储器格式化方法、存储器控制器及存储器存储装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20140618 |
|
RJ01 | Rejection of invention patent application after publication |