浅谈3D-NAND、QLC和SCM介质技术和新产品
Hardy 架构师技术联盟
NAND Flash技术的发展完全沿着技术演进、商业价值和需求匹配的车辙在不断行驶。诸如SRAM,DRAM,EEPROM等 产品和技术。在每个存储器单元存储一位的二进制数据的NAND Flash 技术被称为单级单元(SLC)。但是由于SLC在容量和价格等原因,促使MLC、eMLC及TLC这三种闪存颗粒 迅速发展起来,关于Flash颗粒介绍请参考文章“闪存技术最全面解析”。
NAND Flash在应用普及和全面替换HDD遇到最直接的一个问题还是价格,从SLC、MLC到TLC一直才寻求价格的平衡点,尽管TLC能够解决SSD容量瓶颈,却还是不能完全解决SSD价格的难题。大容量SSD仍旧昂贵,小容量SSD+大容量便宜HDD的混合存储解决方案也层出不穷,但在体验上终究没有单纯大容量SSD来得好。目前来看,TLC还是相对来说在性能和价格方面平衡不错的方案,再说随着容量的增加、技术的改善,TLC闪存的擦写次数逐渐等到优化,也并没有想象中那么容易失效 。
结合实际应用发现,SSD在处理数据写入时,每次都写到新的物理地址,从而使得所有的闪存物理空间被均匀使用。假设一块600GB的SSD,其闪存介质写次数为1万次,那么该SSD可以写入的数据总量达到6PB(600GB*10000);在实际企业级环境中的硬盘,整个生命周期的写入数据总量远小于200TB,这意味着这块600GB的SSD使用10年以上。
技术永远无法脱离实际应用,TLC颗粒在3D-NAND Flash的产品应用非常广泛,先后出现了32,64,72,96层的基于TLC的3D NAND Flash产品 ,起初这些TLC产品只要应用在消费级产品,但目前很多存储厂商已经把TLC颗粒引入企业级存储产品。下面我们看看主流3D-NAND Flash厂商(三星、东芝、WD和SK Hynix 四大厂商)的新产品和动态。
东芝(Toshiba)携手SanDisk 研发出全球首款采用堆栈 96 层制程技术的TLC 3D NAND Flash 产品,且已完成产品试作。该款堆栈 96 层的 3D NAND试制品单颗芯片容量为 256Gb(32GB),预计于 2017 年下半年送样、2018 年开始进行量产,主要用来抢攻数据中心用 SSD和PC桌面SSD等市场。
三星在 3D NAND Flash一直处于领先地位,在去年就发布64 层 3D NAND 。但前不久SK Hynix 推出第四代 72 层的 3D NAND 进入量产,主要用于行动设备,并已交货给客户。韩国对3D NAND Flash技术和市场的控制力是不容忽视的。
Intel发布了新一代SATA SSD 545s产品 ,采用64层堆叠闪存的SSD取代去年的SSD 540s,当时Intel自己的3D堆叠闪存技术还不成熟,所以采用了SK海力士的16nm TLC和慧荣主控SM2258。SSD 545s采用的是Intel第二代3D TLC闪存颗粒(Intel的第一代3D闪存是32层堆叠),64层堆叠设计,具有浮动栅极存储单元,单颗容量256Gb(32GB)。SSD 545s的主控采用了升级版慧荣主控SM2259,加入了对端到端数据保护和ECC的支持(主控SRAM和外部DRAM均有),同时搭配Intel定制固件 。支持每天0.3次全盘写入,终生写入量288TB。
为了延长SSD磨损寿命,多数厂商提供容量超配 。例如一块100GB容量的SSD,其内部的闪存颗粒的物理容量是大于100GB,企业级SSD一般可以达到128G或者更多,超出的那部分就被称为冗余。或者采用较好的部件,如更好的颗粒、更好的控制芯片 ,提供强力的LDPC纠错算法等 ,但是SSD寿命并非单纯取决于闪存的类型,而是多个因素综合作用的结果。
闪存介质中,保存数据的基本单元被称为Cell。每个Cell通过注入、释放电子来记录不同的数据。电子在Cell中进出,会对Cell产生磨损;随着磨损程度的增加 ,Cell中的电子出现逃逸的概率会不断增加,进而导致Cell所保存的数据出现跳变。例如某个Cell最开始保存的二进制数据是10,一段时间后再读取该Cell,二进制数据可能就变成了11。因为闪存中保存的数据有一定的概率出现跳变,因此需要配合ECC算法(Error Correcting Code)来使用,SSD内部需要有ECC引擎进行数据检错和纠错 。
写入SSD颗粒数据时,ECC引擎基于原始数据计算出冗余数据,并将原始数据和冗余数据同时保存 。从SSD读取数据时,原始数据和冗余数据一并被读出,并通过ECC引擎检查错误并纠正错误,最终得到正确的原始数据。
闪存所保存的数据出现跳变的数量,随着擦写次数的增加而增加 。当擦写次数达到一定的阈值后,闪存中保存的数据出现跳变的数量会增大到ECC引擎无法纠正的程度,进而导致数据无法被读出。这个阈值就是闪存的最大擦写次数 。
在SSD领域,当前标准的ECC算法是BCH算法(以三位作者的名字首字母命名),可以满足绝大多数SSD的纠错需求。大多数产品中,闪存介质所宣称的最大擦写次数,就是基于BCH算法来给出 的,但是BCH算法的纠错数据位比较有限,所以目前纠错能力更强的算法也被应用,如LDPC(Low Density Parity Check Code) 是一个纠错能力很强的算法,可以纠正更多的数据跳变。
SLC、MLC及TLC这三种闪存芯片,大家都很清楚,但接下来QLC闪存芯片要开启它的逆袭之路,而东芝和西数已经率先做出表率 ,目前主要针对智能型手机(如iPhone等)、平板计算机和记忆卡市场。
东芝今后也计划推出采用堆栈 96 层制程技术的 512Gb(64GB)3D NAND 产品以及采用全球首见的QLC(Quad-Level Cell)技术的 3D NAND 产品 。该款QLC试作品为采用堆栈 64 层制程技术,实现业界最大容量的 768Gb(96GB)产品,已经提供给 SSD 厂、控制器厂进行研发使用。
西数全球首发了96层堆栈的3D NAND闪存,其使用的是新一代BiCS 4技术(预计下半年出样,2018年开始量产),除了TLC类型外,其还会支持QLC ,这个意义是重大的。西数已经用实际行动表明会支持QLC,而接下来三星、Intel、SK Hynix等厂商也势必会跟进(目前还没有正式公布QLC的进展),为何厂商会跟进可靠性、寿命比TLC还差的QLC 。
目前来看,QLC闪存单位存储密度是TLC的2倍,单颗芯片可达到256GB甚至512GB。但是QLC闪存的电压更难控制,写入速度更低,可靠、稳定性及寿命比TLC更差。个人觉得主要的原因是成本和闪存对寿命SSD的不断优化,随着SSD控制对QLC技术优化,也有理由相信QLC跟TLC走同样的路,也有可能被用在企业产品 。
从长远来看,能不能将SSD的价格拉下来,我个人对QLC是寄予厚望的,但具体时间目前却无法预知,从TLC到QLC的技术过度 需要时间,需要双倍的精度才能确保足够高的稳定性、寿命和性能。如果参考TLC的历程,价格优势更难在短期内体现出来,QLC大批量上市并且明显带动降价节奏的时间也是我所期待的。
对于存储介质的未来除了NAND Flash外,还要有很多技术值得期待。 SCM( Storage -Class-Memory)产品已经出现在大众视野 ,如美光、英特尔自2016年开始量产的3D-Xpoint ,威腾、东芝合作开发的3D-ReRAM 。SCM的读写速度是3D-NAND的千倍,但在产品测试结果显示只有几十倍,这也说明SCM在读写性能上还有较大的提升空间值得期待。然而3D-NAND+类DRAM混合型的4D-NAND集前端高速度DRAM和后端低价大容量的3D-NAND于一身,也将会在容量和性能中找到一个很好的折中点。
SPI-Flash是什么?使用注意事项及常见问题
一.概念:
SPI:serial peripheral interface
串行接口设备,spi flash 就是通过串行的接口进行操作的flash存储设备
flash按照内部存储结构不同,分为两种:nor flash和nand flash。这里spi flash 属于 nor flash!
spi flash 读写较慢,次数有限制,一般用于不经常更改的存储。
早期Norflash的接口是parallel的形式,即把数据线和地址线并排与IC的管脚连接。但是后来发现不同容量的Norflash不能硬件上兼容(数据线和地址线的数量不一样),并且封装比较大,占用了较大的PCB板位置,所以后来逐渐被SPI(串行接口)Norflash所取代。同时不同容量的SPI Norflash管脚也兼容封装也更小。,至于现在很多人说起NOR flash直接都以SPI flash来代称。
二、SPI FLASH读写介绍
对flash芯片的操作,一般包括对flash芯片的擦除,编程和读取,各大厂商的SPI flash芯片都大同小异,操作命令基本是没什么变化的,当我们拿到一款芯片,要特别注意芯片的容量,操作分区等。
其实,无论是对芯片的擦除,编程还是读取操作,我们大致可以按照以下的套路来:写命令---写地址---写(读)数据。正如以下的时序图一样清晰明了,我们先把片选信号拉低,再依次写指令,地址和数据,就可以对FLASH芯片进行操作。
掌握以上方法,就可以轻松操作SPI flash芯片了,当然,对时序这种底层的操作,还需要不断学习和积累,不论是用FPGA还是MCU,最终都是为了产生时序信号,只要静下来认真理解了它,一切问题就迎刃而解了。
三.注意事项
1.不同的SPI FLASH芯片可能会提供的擦除方式:扇区擦除(4KBytes),半块擦除(32KBytes),块擦除(64KBytes),片擦除。
2.不同的SPI FLASH芯片可能会提供的编程方式(也就是写数据):页编程(256Bytes),扇区编程(4KBytes)。
3.SPI FLASH如果擦除过,在往里面写0xFF这样的数据意义不大,因为它的特性就是擦除后数据就是0xFF。
4.写入flash时,只能把数据(bit)从1该为0。
5.传统的EEPROM的特点就是可以随机访问和修改任何一个字节,可以往每个bit中写入0或1。而写入flash时,只能把数据(bit)从1该为0。但是传统的EEPROM容量因成本的缘故收到限制,绝少有超过有512K的。
6.Nor Flash容量相对小,成本高,基本没坏块,数据线和地址线分开,可以实现随机寻址,读取任何一个字节,擦除任然要按块来擦。NAND FLASH容量大,成本低,坏块经常出现,但可以标记坏块,使软件跳过,数据线和地址线复用,按块擦除按页读取。
四、项目实操中的问题
项目中需要用到SPI flash,在使用这个4MB 的SPI flash中出了三个问题让印象深刻,特记录下来以作提醒
问题1:我们知道SPI flash也分主从模式,一般master都是有MCU等器件担当的,而slave有SPI器件担任,笔者的这个小系统同样如此。
并且MCU是自带有SPI controler,接线方式依然是四线解法,SCK,CS,DO,DI,在看手册的过程因为自己的不注意,看到描述是“user can
decide the SPICS configuration in the master mode,if P_IO_Ctrl[10] set 1, the IOA[12] as GPIO function, if P_IO_Ctrl[10] set 0, the IOA[12] as SPICS hardware function” 我当时没有好好体会这句话的意思,简单的认为我在使用SPI flash之前就k肯定需要把P_IO_Ctrl[10]设置为 0, 其实这是错误的认识。
因为现在是通过MCU对slave SPI器件操作,首先肯定是需要MCU端来选中SPI器件,从master角度来讲,只需要一个GPIO信号线接到slave的CS端,同时输出低电平就相当了选中了这个slave了,之所以如此说法是因为这是从slave角度来说的,相当于MCU现在也作为一个slave,另一个MCU控制这个slave,则这时候SPI 初始化时就需要把 P_IO_Ctrl[10] set 0
问题2:需要一个烧录器向SPI flash中烧写内容,用的是西立特公司的superPro,但烧录步骤错误了,忘记了在编程之前必须要erase,
了解了一下,好像是和nor flash一样的介质,擦除会把所有bit置1,在编程的时候根据需要只可以把相应位置0.
问题3:在使用MCU上一个SPI 控制器接口接SPI flash时,没有交叉连接,即MCU 的DI应该接SPI 的DO,MCU 的DO应该接SPI 的DI。
相关问答
flash 擦写 次数 怎么算的?如果Flash的擦写次数是10000次,那么当前的方式可以使用25*4*10000=100万次当然如果还嫌小,可以多加几页,如果用10页25*10*10000=250万次也可以减小数....
Flash 的最大擦写 次数 是多少?通常单片机FLASH的擦写次数都在10万次,你就是一天擦50次,够你擦2000天,那就五年多了。还要怎么提高?再说了,这单片机出厂后,擦写次数就固定了,不是谁一句如...
stm32的 flash 能擦写多少次?10,000次超过擦写次数就是坏了。坏了的话结果就是不可预测的,可能能写,但下一次就写不进去了;可能能写一半,后一半写不进去。擦除读什么的都一样没有规律。...
FLASH 可以刷新多少次?FLASH(指AdobeFlashPlayer)在刷新(即重新加载)方面没有特定的次数限制。Flash动画或应用程序的刷新次数取决于使用的设备和浏览器性能。一般来说,它可以无...
储存IC可以反复烧录对吧?存储IC有多种,大致如下:1、EEPROM:用在记忆比较少数据的场合,如电表计费、公交卡里面的数据,可以反复擦写,但有次数限制,100万次;2、NORFlash:记忆数...存...
固态硬盘所谓的擦写 次数 是什么意思?就是写入和抹除的次数,一般固态硬盘的芯片有SLC、MLC、TLC三种:SLC=Single-LevelCell,即1bit/cell,速度快寿命长,价格超贵(约MLC3倍以上的价格),约10万次......
esp32 flash 可以频繁写入么?ESP32的Flash存储器可以频繁写入。它采用了先进的闪存技术,具有高耐久性和可靠性。ESP32的Flash存储器支持擦除和编程操作,可以进行大量的写入操作而不会导致...
固态硬盘所谓的擦写 次数 是什么意思-ZOL问答就是写入和抹除的次数,一般固态硬盘的芯片有SLC、MLC、TLC三种:SLC=Single-LevelCell,即1bit/cell,速度快寿命长,价格超贵(约MLC3倍以上的价格),约1...
为何SSD硬盘的写入 次数 只有数千次?固态硬盘是有和优盘中一样的存储颗粒组成!不过固态硬盘容量大,是有很多颗粒的!他们叫Nandflash!Flash的内部存储是MOSFET,里面有个悬浮门(FloatingGate)...固.....
单片机 flash 和ram/ROM的区别?单片机FLASH主要用作程序存贮器,就是替代以前的ROM,最大的有有点是降低了芯片的成本并且可以做到电擦写,目前市场上单片机的FALSH寿命相差比较大,擦写次数从10...