镁光256Gb NAND Flash芯片介绍

整体概述

该芯片是一款典型的大容量NAND Flash存储颗粒,支持Open NAND Flash Interface (ONFI) 2.1的接口标准,采用ONFI NANDFlash的操做协议。该芯片采用Multiple-level Cell MLC)技术,根据不一样的容量,一个芯片内部封装了多个DIELUN),每一个DIE由两个Plane构成,一个Plane能够分红2048Block,每一个Block256页组成,一个页的大小为8KB+448B的组织结构方式。编程

 

在性能方面,一个Page页的读延迟在50us左右,页编程时间为900us,块擦除时间长达3ms。每一个块的标称擦除寿命达到5000次。缓存

wKiom1WO2u-gIhsLAACS2lAuSlY082.jpg        

 

芯片接口及信号

镁光的芯片支持同步和异步两种接口模式。在异步接口模式下,采用5个控制信号,分别为#CECLEALE#WE#RE,另外#WP用于控制芯片的写保护,R/#B用于检测芯片的当前状态。在同步操做模式下,#WR引脚为时钟输入信号,#RE信号为读写方向指示信号。架构

 

NAND Flash的接口信号具体定义以下:并发

wKioL1WO3MWgW3ZVAAC0k2aDZAE843.jpg

wKiom1WO2xSwA1T4AAG6WLIvTa4437.jpg

一个NAND Flash物理芯片能够由多个DIE(或者称之为LUN)的单元构成,每一个DIE会有一套独立的上述说起的控制信号线。一个DIE中会存在若干个Plane,每一个Plane有许多Block单元组成,一个Block单元是一个最小的擦除单位,而且有数量较多的Page页构成,每次写的最小单元就是一个Page页。对于容量较小的芯片,芯片厂商只会封装一个DIE,每一个DIE的内部结构以下图所示:异步

wKioL1WO3QbyyvjFAAE27HWt2AU616.jpg

对于镁光512Gb芯片,一个DIE内部集成了两个Plane,经过一套控制信号线和寄存器控制内部的两个Plane同时并发工做。值得一提的是,多个DIELUN)可能会共享一套控制信号线,所以,在物理上多个DIE会被封装成一个Target。须要注意的是,同一个Target内部的DIE虽然共享了物理信号线,可是寄存器都是相互独立的。所以,从结构上来看,一个NAND Flash的内部架构能够只由一个DIELUN)构成,以下图所示:ide

wKiom1WO23GhNKGTAAB6Qg-bJ8g566.jpg

也能够在一个芯片中集成多个DIELUN),每一个DIE拥有一套独立的物理信号线,以下图所示:性能

wKioL1WO3VaRHMePAAEN0t02u-o441.jpg

在高密的封装中,没有那么多的物理信号线,那么同一个Target中会集成多个DIELUN),若是下图所示:spa

wKiom1WO277ACPPhAAEcDVjI2Kg548.jpg

不管如何去封装,每一个DIELUN)中的基本结构是相同的。3d

 

NAND Flash存储单元

NAND Flash中一个DIELUN)中的存储单元一般由多个Plane构成,其结构以下:blog

wKioL1WO3aLRDCF9AAD8WAsyZWg492.jpg

上图所示的一个Page页大小为8KB,考虑到spare area448字节空间,所以须要14位地址访问一个page页,即地址信号的最低14位为页内地址。一个block块内部有256page页,须要8位地址(Page addressPA)信息去访问一个block块内部的不一样page页。一个Plane内部存在2048block块,须要11位(Block addressBA)去访问一个Plane中的不一样block块。一个DIELUN)中存在2Plane,须要一位地址位去访问一个DIE中的不一样Plane。所以,40位地址信息的定义以下表所示:

wKiom1WO3BKglbTKAACqcATKSeU108.jpg

CA0~CA13为页内偏移访问地址信息,PA0~PA7为页地址信息,BA8DIE中的Plane选择地址位,BA9~BA19DIE中的块地址信息,另外,LA0为一个Target中的DIELUN)选择地址位,在该NANDFlash芯片中,一个Target中能够集成2DIE

 

在每一个Plane单元中都存在两个寄存器:一个为cache寄存器;另外一个为data寄存器。Cache寄存器的做用是缓存NAND Flash控制器输入的数据,而data寄存器的做用是提高数据读取和写入的性能,数据传输和数据加载之间的操做。在数据读取和数据写入的过程当中,都提供了流水并发操做模式,这类模式都充分利用了这个data寄存器。

读写操做时序

镁光的NAND Flash芯片提供了两种操做模式,一种为异步操做模式;另外一种为同步操做模式。异步操做是一种比较传统的接口模式,NAND Flash和控制器处于两个时钟域,全部的信号在数据传输过程当中都须要进行同步操做,所以性能比较差。同步操做由外部提供参考时钟,NAND Flash和控制器处于同一个时钟域,能够获取较高的读写性能。

异步操做

异步操做模式很是适合单片机之类的控制器对其进行操做,不须要特殊的NAND Flash控制器,普通的总线操做就能够对NAND Flash进行控制操做。异步数据写操做的时序以下图所示:

wKioL1WO3fqChMAqAADczr1SZgM516.jpg

#WE信号的驱动下,DQ总线上输入对应的数据,而且在#WE信号上升沿以后须要保持tDH时间。在#WE信号上升沿驱动下,DQ总线上的数据被锁存到NAND Flash的数据寄存器中。

RDY信号为高电平时,说明能够从NAND Flash指定位置中读取数据,读操做的时序以下图所示:

wKiom1WO3GTyDBxoAAC6BQNuLjw820.jpg

在读信号#RE的降低沿驱动下,数据从NAND Flash中输出到数据总线DQ上。NAND Flash控制器能够在#RE信号的上升沿采样数据总线DQ上的数据。当NAND Flash控制器给定的读信号频率较快时,经过#RE上升沿信号没法正确采样数据总线上的数据时,能够经过下一个#RE信号的降低沿采样总线上的输出数据。以下图所示:

wKioL1WO3kqRK40GAAC7A4EOc_M675.jpg

所以,在异步总线操做时,须要考虑#RE读信号频率和tRC之间的时间关系。经过这个时间关系来肯定具体的读数据采样方式。

同步操做

同步操做是一种高速接口,和DDR内存接口相似,能够经过上下沿同时采样的方式提高数据传输效率。在同步模式下,时钟信号须要外部持续不断的输入,NAND Flash经过控制ALECLE#CEW/#RDQS信号来控制数据的输入和输出。在同步模式下的数据输入时序以下图所示:

wKioL1WO3nPidjaPAAElar5aIko264.jpg

DQS信号由NAND Flash控制器驱动,而且和时钟信号同频同相。在CLK时钟信号的上升沿和降低沿将总线上的数据锁存到NAND Flash内部的寄存中。为了可以让NAND FlashDQS的上升沿和降低沿采样到总线上的数据,在沿变化以前,NAND Flash控制器须要在总线DQ上准备好写入的数据。

 

RDY信号为高电平时,代表能够从NAND Flash中输出数据。在读操做的时候,数据总线DQ、总线指示信号DQS须要由NAND Flash控制,控制器须要释放对这些信号线的控制。数据读总线操做时序以下图所示:

wKioL1WO3qDDfk3VAAFZMIhGT6Q972.jpg

能够发现总线数据锁存信号DQS和时钟信号CLK同频,可是会存在必定的相差,这样NAND Flash控制器能够经过CLK时钟信号的双沿变化对总线上的数据进行采样,从而能够正确的读取NAND Flash中的数据。

 

NAND Flash操做命令

NAND Flash的操做经过一系列的命令来完成。镁光芯片的操做命令定义以下:

wKiom1WO3QnwTSMPAAJJtYZ_1_0501.jpg

wKioL1WO3uriUA1OAAErFHnyaEs235.jpg

wKiom1WO3U-AfHzCAADKCzQnZXk463.jpg

命令一共分红9大类,包括复位操做、识别操做、配置操做、状态操做、地址操做、读操做、写(编程)操做、擦除操做以及写回操做。在NAND Flash控制器的软件中须要将这些最底层的命令封装成NAND Flash操做库。

 

读命令

对于读操做,NAND Flash提供了多种模式。普通的页读操做效率比较低,在发起页读取的时候须要输入具体的命令和地址信息,而后再输出数据,具体的操做时序以下图所示:

wKioL1WO3zeDqvFCAACAiJzuJ2E120.jpg

输入命令和地址信息以后,RDY信号变低,NAND Flash须要等待一段时间以后才能输出数据,当数据准备完毕,能够输出时,RDY信号变高。NAND Flash在这个过程当中须要不断检测RDY信号,当该信号由低变高以后,能够经过同步或者异步的方式输出数据。

 

NAND Flash的内部,有一个data cache寄存器,经过该寄存器能够将数据读取操做分红两个阶段:一个是从page cache寄存器向NAND Flash控制器传输数据;另外一个是从NAND Flash中向data寄存器加载数据。这两个操做能够进行流水并发,命令0x31就是用来实现这个流水并发操做的。为了提升数据输出的效率,在普通页读取的基础上,经过0x31命令能够在数据从page cache输出的同时从NAND Flash中向data cache加载新的数据。这种并发模式分红两类:一类为顺序读,另外一类为随机读,在操做时序上存在差异。下图为并发顺序读的操做时序:

wKiom1WO3Zyij7GoAACCQaAKa_0871.jpg

在指定地址的数据从page cache中输出的同时,NAND Flash会将下一页数据加载到data寄存器中,这样当NAND Flash控制器读取完指定page中的数据以后,下一页数据也已经被加载成功了。经过这种流水机制,提高读性能。

 

除了能够流水并发顺序page页以外,也能够将随机的page页进行并发流水读取,以下图所示:

wKioL1WO34HTbCyKAADYKAdL5rg838.jpg

在页读取命令发送完毕以后,当该数据被加载到page cache以后,RDY信号由低置高。紧接着输入另外一个页地址,以及流水加载命令0x31。在page cache中数据往外输出的同时,NAND Flash中的数据并发输出到data寄存器中。经过这种方式能够流水并发读取两个离散page页中的数据。

 

对于并发读取两个plane中的数据,NAND Flash也提供了0x00-0x32控制命令,经过该命令能够实现多个plane数据的并发加载,从NAND Flash中加载到各自对应的page cache中。

写(编程)命令

普通的写命令容许NAND Flash控制器将数据写入NAND Flash中的page cache寄存器,而且将数据从page cache寄存器中写入到NAND Flash介质中。一个普通的页编程时序以下图所示:

wKiom1WO3e3DSaPDAABzLn46jIg086.jpg

该过程能够分红三大步骤:第一步输入控制命令、操做地址信息;第二步输入须要写入的数据至page cache;第三步启动编程,将page cache寄存器中的数据写入NAND Flash介质。

 

若是每次写入操做都经历上述过程,那么写延迟将会变得很长。为了提升页写入性能,NAND Flash提供了流水并发模式,该模式充分利用了data寄存器。采用的命令是0x80-0x15,时序以下图所示:

wKioL1WO39PQZgbGAADecJWCp_M663.jpg

在该模式下,在地址和命令的控制下,数据被首先写入到page cache寄存器中。当0x15控制命令发送完毕以后,page cache寄存器中的数据会被拷贝到data寄存器中。拷贝进行时RDY信号置低,当拷贝完成以后,RDY信号变高电平。NAND Flash控制器在这种状况下能够输入下一个页的数据,在下一个页数据输入的过程当中,NAND Flash会并发将data寄存器中的数据写入指定的介质中去。从而达到控制器输入和具体的编程操做之间的流水并发,提升了page页写操做的吞吐量。

 

须要结束流水编程时,在最后一页数据写入以后,写入0x10命令便可。具体的时序操做以下图所示:

wKiom1WO3j_Rjd4vAADpbMsxHyQ795.jpg

对于并发编程两个Plane中的数据页,NAND Flash提供了0x80-0x11命令。经过该命令能够直接将数据写入到多个Plane中的page cache寄存器中,从而实现多个Plane中的数据页并发写入。

 

擦除操做命令

擦除操做是一个很是费时的操做,对于NAND Flash而言,一个最小的擦除单元是block块。当须要对一个块进行擦除操做时,须要输入块的地址以及对应的控制命令,具体时序以下图所示:

wKioL1WO4C-iCy-TAABuU4WkOTE954.jpg

在擦除的过程当中,RDY信号会置低,此时该DIE将没法进行正常的读写操做。因此,虽然不一样的Plane之间拥有不一样的寄存器组,可是因为物理信号线是共用的,因此,一旦一个Plane中的block进入了擦除状态,那么整个DIE的读写操做将会受到影响。

 

COPYBACK命令

wear-leveling操做,或者garbage collecting的时候,一般须要将一个page页中的数据拷贝到另外一个page页,这就用到了COPYBACK的功能。该命令能够将一个page页中的数据加载到寄存器中,而后直接写入到指定的另外一个page页中。

 

在实际操做过程当中,考虑到NAND Flash中的数据可能已经遭到破坏,NAND Flash一般建议控制器在数据回拷的过程当中,对迁移的数据进行校验。为此NAND Flash提供了COPYBACK READ的控制操做过程,以下图所示:

wKiom1WO3qPx0mJSAACDF0iReBg743.jpg

COPYBACK READ命令执行完毕以后,数据会输入到NANDFlash控制器,控制器中的ECC×××对数据进行校验,若是数据发生错误,那么在COPYBACK WRITE的过程当中能够将正确的数据写入到NAND Flash中,在这个过程当中可使用CHANGE WRITE COLUME实现对page页的随机写操做。该时序以下图所示:

wKioL1WO4Iij-07EAAEJshLEj-M785.jpg

当更新的数据被写入到Page cache寄存器以后,启动页编程,完成COPYBACK操做。


(吴忠杰,存储之道)

相关文章
相关标签/搜索