剖析闪存操控器的架构,首要得了解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。
第二,前端供给拜访接口和协议
前端供给拜访接口和协议,跟主机驱动通讯,运用规范格局输配到体系里边,接纳主机端发过来的指令,即完结、完结对应的SAS/SATA target协议端或许NVMe协议端,获取Host宣布的IO指令并解码和生成内部私有数据结构等候履行。假如遵照NVMe规范,包含提交指令的办法、完结指令的处理办法等都定好了,包含各种行列、行列深度,Queue Pair的整体数量最大能够到达64K个,行列深度也可达64K个,所以,体系里一起或许存在64K×64K IO排着,可是现在的体系是用不到这么多Queue的,由于底下的介质速度还不足以支撑。
第三,FTL层——中心层处理
中心层FTL层,是一款Flash操控器的要害竞争力地点。它既可所以纯软件算法,包含元数据办理,数据布局暗射、磨损均衡、废物收回、缓存战略、片间RAID和掉电元数据一致性保证等内容。一起,它也能够在进行重复性作业时辅以硬加快引擎。这对错纯软件的,辅有硬加快的成分在里边。硬加快涉及到所运用的芯片。有的芯片支撑硬加快,比如说链表的保护。这是由于做废物收回时需求要用到链表,拿传统的软件算法,刺进一个或许追加一些项目,所消耗的CPU周期较大,此刻用硬加快并行,再加上一些硬逻辑的加快,则可节约开支。
Flash操控器的两种战略和方法:
现有的Flash操控器可选用两种方法:一种是少数的强中心加少数硬件加快。所谓强中心便是一个中心的功能高、频率高,分支预判、并行度、单元数量、履行管道,各种参数都高于一般水平。中心强了今后,硬加快就不需求这么多了,能够用少数的硬加快。
另一种方法则是许多弱中心+许多硬加快。比如说16个中心,每个中心比较弱,可是能够添加履行的并行度,有16个并发中心履行,跑16套处理程序,这是两种架构。这是一种多中心协作架构形式,其协作方法可所以同构协作也可所以异构协作
1. 同构协作便是每个中心做的事都是彻底相同的,处理的过程彻底相同。假如你的操控器阵列里边有16个IO,有16个中心,每个中心都能处理一个IO,这是同构协作。
2. 异构协作则是多个中心做不同的工作。处理同一个IO,榜首个IO榜首步,榜首个中心处理,这个中心处理完今后,把这个IO扔到下一个中心,再处理下一步,等这个中心空出来今后,处理下一个IO的榜首步,这便是所谓的流水线了,所谓的异构便是如此。
产品实例:PMC的FlashtecTM NVMe 操控器
这是PMC的操控器,首要它有一个片上网络,网络承载16个CPU中心,每个中心里边有一个相似网卡的操控器,网卡连到网络上,多个CPU之间连起来。简单说便是4口路由器或许交换机连起来的网络,多个CPU之间连起来,此外还有硬加快模块。别的还包含以下几部分:
RAM操控器,由于芯片上需求有必定量的RAM放暂时数据,写扩大,读出来写进去,都要走RAM;
PCIe操控器,这个是跟前端PCIe对等的操控器,IO指令从这儿接纳过来;
后端Flash操控器,经过必定数量的通道连Flash颗粒,
加快器(包含缓冲加快器),每做一个操作,都需求有相应的内存,把数据拷到内存里边,内存的保护很费时吃力。比如在X86上运转的Linux,其办理内存时需求消耗许多的核算量。关于闪存,克勤克俭,有必要把功能做到极致,因而需用到硬加快。
链表加快器,用链表来记载一些信息,哪块空着,哪块被使用,这块用软件保护很吃力,所以需求在这里作加快;
XOR加快器,XOR要用硬加快
最终,来看一下软件的并行度。16个中心,PMC供给的参阅的固件,当然SSD厂商会开发自己的固件,把自己优化的东西放进去,优化的算法放进去。根本上包含了这么一些程序,每个IO读的地址或许有堆叠,堆叠就需求有一个确定和谐,有管指令解析的,有管发动的,有管日志的,有管磨损均衡的,有管查表的,有管写数据的,管前端的PCIe Manager,还有担任boot loader的中心,初始化的装备,需求由它处理,data manager,这是主程序,剖析IO指令需求干什么,生成一堆的后续过程下发下去。其实每一块都能够跑在一个中心上,同一个人物能够仿制多份,充沛并行。16个中心,到达16份程序并行的运转,16个流水线的Stage,这样就能够屏蔽处理过程中的时延。