NandFlash存储器由多个Block组成,每一个Block又由多个Page组成,Page的大小一般为2K+64Bytes或512+16Bytes。Page是读取和编程的基本单位,而擦除的基本单位是Block。
NAND Flash的页,包含主区(Main Area)和备用区(Spare Area)两个域,“主区”中有512*8(或256*16)或2048*8(或1024*16)个位,“备用区”中有16*8(或8*16)或64*8(或32*16)个位,这样每一页总共有528*8(264*16)或2112*8(或1056*16)个位。备用区是保留区域,用来标记坏块(bad block)和存放ECC的值,因此对于用户来说只有“主区”是可用的。
图1是MT29F2G08AxB的结构图,它的读取和编程都以Page为基本单位,所以它的Cache Register和Data Register都是一个Page的规格。NandFlash的特别之处就在于页结构,它分成数据区和备用区两个部分,数据区和备用区按页的形式一一对应,因此读取和编程的数据流也需要按页的结构进行组织和分解。
图1所示的MT29F2G08AxB芯片的数据区为2048字节,备用区为64字节。在实际应用中,备用区一般用于数据区的检错和纠错。
NAND flash出厂时可能含有无效的块,在使用过程中也可能会出现其他无效的块。无效的块即为包含一个或多个坏位的块。每一片芯片在出厂前都经过测试和擦除,并标识了坏块,禁止对在出厂时作了标记的坏块进行擦除或编程。因此在应用中和编程时,都需要能够对坏块进行识别和处理。NandFlash的第一块保证是可用的。
另外,Micron NandFlash具有10个页的OTP区域,这个区域不能被擦除,只能编程一次,而且如果被保护,即使是把1编程为0也是禁止的。
由于NAND Flash的工艺不能保证NAND的Memory Array在其生命周期中保持性能的可靠,因此,在NAND的生产中及使用过程中会产生坏块。所以NandFlash芯片厂商为了区分好块与坏块,会在出厂的时候在备用区某个地址中标记非FFh表示坏块。
工厂在宽温和宽电压范围内测试了Nand;一些由工厂标记为坏的区块可能在一定的温度或电压条件下仍然能工作,但是,将来可能会失效。如果坏块信息被擦除,就无法再恢复。