SSD(1)-主控的那些事之一
1、主控介绍SSD作为数据存储设备,主要包括主控芯片、闪存颗粒和缓存单元三大组件中,其中最有技术含量和核心技术的则是主控芯片。主控芯片是固态硬盘中的核心器件,也被称为固态硬盘中的CPU,承担着指挥、运算和协作的作用
图 1:SSD主控模块硬件图图1-1所示仅是一个SSD系统架构的概略图,主要分为前端和后端两大部分。前端(Host Interface Controller,主机接口控制器)跟主机打交道,接口可以是SATA、PCIe、SAS等。后端(Flash Controller,闪存控制器)跟闪存打交道并完成数据编解码和ECC。除此之外还有缓冲(Buffer)、DRAM。模块之间通过AXI高速和APB低速总线互联互通,完成信息和数据的通信。在此基础之上,由SSD固件开发者构筑固件(Firmware)就运行在主控芯片的CPU上,固件根据CPU的核数进行设计,充分发挥多核CPU的计算能力是固件设计考虑的一方面。另外,固件会考虑任务划分,会将任务分别加载到不同CPU上执行,在达到并行处理的同时让所有CPU有着合理且均衡的负载,不至于有的CPU忙死有的CPU闲死,这是固件架构设计要考虑的重要内容,目标是让SSD输出最大的读写性能。主控芯片的外围模块包括UART、GPIO、JTAG,这些都是程序必不可少的调试端口,另外还有定时器模块Timer及其他内部模块,比如DMA、温度传感器、Power regulator模块等。2、主控的生产厂商目前SSD的主控分为两大阵营:闪存原厂和主控厂商。闪存原厂包括三星、东芝、美光、海力士等,他们生产闪存的同时也生产原厂固态硬盘。市场上处于领先地位的主控厂商主要有Marvell、三星、慧荣(SiliconMotion)、群联(Phison),不过近年来国内大陆SSD主控芯片厂商也逐渐崭露头角,例如忆芯科技、杭州华澜微电子、联芸科技、国科微、得一微、得瑞、华存等都较为知名。实际目前各大闪存原厂都在一定程度上将主控设计和固件研发的工作委派给专门的主控供应商,或者直接使用其他公司的主控芯片,由它们在闪存原厂的技术支持下,完成相关的主控和固件设计。最终,原厂固态硬盘产品会通过定制固件的方式,将原厂固态硬盘跟公版产品区分开来。3、实例:Marvel主控芯片88SS133x介绍3.1 芯片概述
图2:88SS133x 芯片架构NAND最高支持8/16个NAND,同时符合ONFI和Toggle标准PCIE最高支持到PCIE5.0,并向下兼容,支持双端口配置(x2 or x1)SRAM内置4MB SRAM,同时支持DDR4或LPDDR4XCPU8个Arm® Cortex®-R8内核+2个单独的Cortex-M7内核+Cortex-M3处理器内核FW支持SPI(NOR闪存)或从NAND本身加载ECCMarvell第五代NANDEdge™,采用低密度奇偶校验编码(LDPC)注释1 :PCIE不同版本的带宽计算
GT/s —— Giga transation persecond (千兆传输/秒),即每一秒内传输数据的总位数。Gbps —— Giga Bits Per Second (千兆位/秒),即每一秒内传输有效数据的总位数。GB/s—— Giga Byte Per Second(千兆字节/秒),即每一秒内传输的有效字节总字节数。1 GB/s=8 GbpsPCIE的带宽计算公式:Lane带宽计算公式:Lane带宽(GB/s)= 传输速率(GT/s)* 编码方案 /8;总带宽计算公式:总带宽(GB/s)=单带宽(GB/s) *通道数(Lane)以PCIe 3.0 x16 的带宽计算为例:PCIe 3.0协议支持8 GT/s,即每一条Lane上支持每秒钟传输8G个Bit。而PCIe 3.0 的物理层协议中使用的是128b/130b 的编码方案。即每传输128个Bit,需要发送130个Bit。那么:Lane带宽=8*128/130/8=984.6 MB/s 总带宽=984.6*16=15.754GB/s
图3:命令的接受和执行流程主控芯片接受到主机的发来的NVME命令时,NVME控制器会直接将其存入内核中的高速数据缓存中。固件开始处理NVME命令,固件可以自行分配进行命令处理,或者将其存入固件结构体交由其它内核进行处理。处理器内核之间通过底层的IPCC加速控制器进行通讯,固件可以直接通过其内部的TCM写入或读取固件的工作负荷,硬件加速器通过队列模式来处理传输任务。NVME控制器和FALSH控制器都是采用队列的模式处理命令,使得固件可以直接操作其内部的TCM。 注释1 :什么是TCM?TCM=Tightly Coupled Memory,是一种高速缓存,被直接集成在CPU芯片中。TCM又分为ITCM(Instruction TCM)和DTCM(Data TCM)。ITCM是cortex内核中指令传输总线,DTCM是cortex内核中数据传输总线。是cpu内核同flash及sram之间传输指令和数据的通道,由于是高速缓存,所以这两块内存区域被当做特殊的用途。比如某些对时间要求非常严格的代码,就可以被放到ITCM中执行。
图4:写数据流程对于写数据,安全引擎先将数据加密并存储在写缓冲区中。后端处理器在查找表中进行查找,对FLASHI控制器进行编程以对数据进行各种编码操作,并在sequence Block中生成写入命令。然后数据由NANDPUY传输到NAND,NAND在确认数据正确写入后,固件更新查找表。
图5:读数据流程对于读数据,由前端处理器负责处理.后端处理器通过sequenceBlock 向NAND 发出读数据命令。当NAND返回数据时,数据被解码和解密处理(当数据被发送到主机时,在NVMe控制器中进行解密),数据在传输到主机之前存储在内部数据SRAM缓冲区中。3.2 控制器接口概括高速接口Pcle Gen5 接口(向下兼容),支持双端口配置DDR接口NAND接口外围接口一个SPI通讯接口:支持高达16MB设备,4种工作模式两个I2C通讯接口:I2C 0仅支持 I2C模式;I2C 1支持I2C模式和SMBUS模式;一个UART通讯接口一个JTAG调试接口一个逻辑分析仪调试接口对于SSD主控的介绍先了解到这里,后面我们会继续介绍主控的硬件接口和测试方面的内容。