目前数据存储主要还是用NAND FLASH实现,程序存储用NOR FLASH得更多。主要原因是NOR FLASH虽然写入较NAND慢,但读取更快;而且NOR虽然容量较小,但支持字节操作,比NAND的按页操作更灵活;最后NAND更容易有坏块,NOR相比更可靠一点。
如果是大容量的数据存储,还是NAND FLASH更有优势,容量更大,而且按页操作对大数据量来说操作更有优势。SSD硬盘就是一整片的NAND FLASH加一个存储管理芯片,目前常用的NAND有TCL跟QCL两种颗粒,一般来讲,状态越多可靠性越低,所以有说法是QCL寿命更短一些,前一阵子看有人建议SSD尽量选TCL颗粒的,理由是现在的多层技术已经可以做到整盘用TCL颗粒存储密度跟用QCL差不多,但TCL寿命更长一点。
有些时候直接上SSD硬盘这条路走不通,就只能自己搭建存储电路。
1)
一种方法是照搬SSD硬盘的方案,采用NAND FLASH芯片,例如镁光的SCL颗粒MT29F256G08AUCABH3-10ITZ,256Mbit的容量是该厂家SCL芯片最大容量。可以两片共用一组IO信号以及除CE之外的控制信号以节省管脚。存储管理可采用FPGA实现,如Xilinx的K7或V7系列。可以选择挂接一块MRAM或者小容量NOR FLASH或者EEPROM记录坏块表,也或者选用NAND中的部分block作为坏块管理区域,例如最后4个block。
由于NAND FLASH是按页读写的,所以最好是有SRAM或者MRAM等作为缓存,当数据量足够多时一次性写入NAND FLASH。
或者是直接用文件系统操作,但这样很容易造成存储空间的浪费。
另外,为了数据可靠以及尽量延长使用寿命,除了坏块管理之外,还需要增加ECC校验,以及磨损均衡管理。
坏块管理,ECC,磨损均衡,NAND FLASH芯片大多全不具备,部分NAND内部可能会有ECC电路。
2)
还有一种方法是采用多片e.MMC存储芯片,以及管理芯片例如FPGA实现。
e.MMC芯片内部集成了磨损均衡以及错误管理技术,可完成坏块管理,以及ECC功能。片上坏块管理功能能够检测识别坏块,并自动完成备用块替代坏块操作,该操作过程对主机不可见。芯片内置ECC算法,对主机透明,可由EMMC控制器自动完成,无需主机干预。
e.MMC内部也是NAND FLASH,因此也存在小数据量写入时会浪费存储空间的问题。也可以考虑通过SRAM等先进行缓存,等达到一定数据量后写入芯片。
另外,前一阵子跟EVERSPIN的技术人员交流,听说EVERSPIN正在努力研发大容量的非易失型MRAM,以MRAM存储的灵活性,如果存储容量可以提升,则采用大容量的MRAM会是更好的存储方案。