浅谈闪存控制器架构
作者:PMC公司资深数据中心架构师,《大话存储》系列作者张冬
分析闪存控制器的架构,首先得了解SSD。一般来说SSD的存储介质分为两种,一种是采用闪存(Flash芯片)作为存储介质,另外一种是采用DRAM作为存储介质。我们通常所说的SSD就是基于闪存的固态硬盘,其采用FLASH芯片作为存储介质。SSD的基本组成结构包括Flash颗粒和Flash控制器,Flash控制器中有芯片,负责Flash的读写、磨损均衡、寿命监控等等。
Flash控制器的主要的工作任务包括三大方面:一是后端访问Flash,管理后端Flash颗粒,包括各种参数控制和数据IO; 二是前端提供访问接口和协议:实现对应的SAS/SATA target协议端或者NVMe协议端, 获取Host发出的IO指令并解码和生成内部私有数据结果等待执行;三是FTL层核心处理。下面我们具体来介绍一下Flash 控制器是怎样做这几件事的。
第一,后端访问Flash的操作内容
后端访问Flash首先必须提到的是闪存通道控制器。这个控制器里面有多个通道,每个通道挂多片Flash。它与后端Flash颗粒之间存在托管协议。数据写入Flash的时候,除了主机发送的数据或者原始数据,其他数据都必须进行ECC校验。ECC是通用的称谓,里面有多种算法,其中包括纠错率较低的BCH算法,LAPC低密度校验码等。数据读出的时候,通过扰码,加扰,解扰,看ECC是否出现错误,若有错则在纠错后将芯片发到内部,供后续的程序处理。因此,后端访问Flash的主要任务即是管理后端Flash颗粒,包括各种参数控制和数据IO。
第二,前端提供访问接口和协议