购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

4.1 解读控制器架构

控制器作为一个片上系统,处理来自用户端的命令并负责管理闪存颗粒。整个控制器的架构主要包括以下几个模块(见图4-1)。

前端主机接口模块 :比如PCIe控制器和存储协议NVMe控制器。

后端闪存接口模块 :用于直接和闪存交互,是控制器和闪存交互的通道,一个通道上可挂载多个闪存颗粒。

后端数据处理模块 :如RAID、扰码器和LDPC,又称数据处理单元。

DDR控制器和PHY :用于和DRAM交互。

加解密以及认证的安全模块 :负责硬件和数据安全。

负责指挥整个系统和协调各个硬件计算系统的CPU以及互连系统

其他 :如片上SRAM、模拟IP和外设端口等。

1.PCIe和NVMe控制器前端子系统

PCIe和NVMe控制器前端子系统有时也被称为主机子系统,主要用于处理来自主机以及协议接口的各种命令。PCIe决定了整个控制器的前端和用户交互带宽,目前主流的消费级控制器主要是4个通道,企业级控制器可能具备8个甚至更多的通道以满足带宽的需求。PCIe PHY(物理接口)作为高速接口,是控制器的核心IP。PCIe PHY的主要玩家有新思科技(Synopsys)、楷登电子(Cadence)和蓝铂世科技(Rambus)等IP供应商。

图4-1 SSD控制器框架图

NVMe控制器借助PCIe接口实现了NVMe产品规范相关的协议,实现了基本操作(如读写)以及各种特性。参见的NVMe控制器与主机间的交互流程示意如图4-2所示。

图4-2 NVMe控制器与主机间交互流程示意图

主机往SQ(Submission Queue,提交队列)里面提交命令,并通过Doorbell通知NVMe控制器;NVMe控制器去主机端的SQ取命令,并存在NVMe控制器的命令队列中。NVMe控制器从内部命令队列中把命令传递给CPU(固件)系统,让CPU执行相应的操作。当CPU完成相关操作后通知NVMe控制器,NVMe控制器更新主机端的CQ(Completion Queue,完成队列),并通知主机,主机收到通知后,释放相应的资源。为了实现相关功能,NVMe控制器有两条通道,一条控制通道,一条数据通道。数据最终通过DMA传输到内存系统,命令和状态用于NVMe控制器和CPU计算系统的交付系统。

PCIe NVMe控制器控制与数据通道交互示意如图4-3所示。

图4-3 NVMe控制器控制与数据通道交互示意图

2.NAND闪存控制器后端子系统

后端子系统一般包括任务调度模块、数据处理单元和闪存驱动。任务调度模块是后端子系统的大脑,通过SQ、CQ和CPU(固件)交互,以控制数据处理单元和闪存驱动完成固件提交任务。

由后端子系统的框架图(见图4-4)可知,后端的任务调度器(Task scheduler)从SQ获取来自固件的命令,并将命令拆解为针对数据处理单元和闪存驱动(主要是微码处理器和闪存的PHY)的操作,等相关操作完成会收到对应的回复,任务调度器更新CQ里面的内容,并通知CPU。其中涉及的数据通路分为NAND写和NAND读两个操作方向。

图4-4 后端子系统框架图

在NAND写操作方向,数据从控制器的片上SRAM或者片外DRAM送至数据处理单元进行处理,然后通过闪存驱动写入NAND颗粒;在NAND读操作方向,数据从NAND颗粒读出,经过数据处理单元的处理传输到控制器的片上SRAM。

写过程中的数据处理流程:固件元数据和用户数据合并→独立磁盘冗余阵列(Redundant Array Independent Disk,RAID)引擎的异或运算→扰码器的伪随机化操作 →LDPC编码并产生验证信息。

读过程中的数据处理流程:LDPC译码并得到正确数据→扰码器对数据去随机化→判断固件元数据并去掉数据中的固件元数据。

3.内存子系统

内存子系统包括片上SRAM和外设DRAM。片上的SRAM资源比较有限,按照AU(Allocation Unit,分配单元)大小进行组织、申请和释放,通常AU的大小为4KB。SRAM资源申请和释放可以单独由固件来管理,也可以由固件和硬件一起管理,如固件负责申请,当操作完成后由硬件释放。DRAM用于存放L2P映射表及用户写数据等。DRAM外部内存的管理则通过DRAM控制器进行,这种方式相比片上SRAM的访问速度要慢,但容量会大很多。DRAM控制器&PHY和PCIe控制器&PHY类似,都属于通用性的IP,可以通过向第三方IP供应商(如新思科技和楷登电子)购买来提高SoC的开发效率。所有的内存空间以及各种控制器的寄存器均会有独一无二的地址,这可方便CPU的访问与控制。对于消费级SSD,为了降低成本,DRAM-less的方案被采纳,这样就不需要DRAM控制器&PHY了。

4.安全子系统

数据与系统的安全在存储领域变得愈发重要,所有相关产品均需满足数据安全相关标准规范和认证(如FIPS和TCG Opal),尤其是企业级SSD。安全子系统主要负责两部分功能:对固件进行签名和验签,以及对用户数据进行加解密。

验签与授权相关安全算法如下。

❑ 国际标准算法SHA-256和国内商密SM3算法,用于计算哈希值。

❑ 国际标准算法RSA和国内商密SM2作为公匙加密法,用于固件和硬件验签。

❑ 国际标准AES和国内商密SM4,对固件等重要系统文件进行加解密。

❑ 真随机数(TRND),用于密钥和临时数据(Nonce)加解密。

用户数据加密和解密的高速算法有国际标准算法AES-XTS-256/128以及国内商密SM4-XTS-128。

上述算法均为通用的安全加解密算法,可以通过第三方IP直接授权使用,也可以自己开发。

TCG Opal为了保证数据安全可靠,提出Self-Encrypting Drive(自加密盘)的概念。如图4-5所示,明文由用户输入,控制器利用硬件的AES模块进行数据加密,然后写入相应的SRAM和闪存颗粒中。用于用户数据加密的Media Encryption Key(媒体加密密钥,简称MEK)本身也被加密保护着,需要Key Encryption Key(密钥加密密钥,简称KEK)对加密后的MEK进行解密。KEK则是通过用户输入的Authentication Key(验证密钥,PIN中的一种)通过KDF运算产生的,加密和认证环环相扣,从而创建一个安全可靠的数据环境。

图4-5 自加密盘数据处理示意图

5.CPU计算子系统

CPU计算子系统是整个控制器的管理中心,可确保有足够高的算力以保证性能需求,尤其是随机性能需求。除了CPU核之外,CPU计算子系统中的重要部件还有ITCM与DTCM,它们分别用于存放指令以及重要的变量和数据。在目前的控制器芯片中,主流的CPU为ARM R系列(如R5和R8)。而主流的CPU核除了ARM的CPU核外,还有新思科技的ARC和RISC-V的CPU核。对于多核CPU系统,CPU核间的通信至关重要,可以通过共享的TCM来实现高效通信,当然也可以设计专用硬件来辅助复杂体系中多核间通信。除了实时R系列CPU核之外,ARM A系列CPU(如A53和A55 CPU集群)也经常在高端的企业级控制器芯片中作为主处理器使用。

6.企业级和消费级控制器的差异

因为企业级SSD和消费级SSD的使用场景不同,客户关注点不同,所以导致企业级控制器和消费级控制器在架构设计上也有不同,这主要体现在以下3个方面。

不同的企业级特性 :如在双端口(Dual Port)、虚拟化(SR-IOV)、端到端保护(PI)、控制器内存缓存(Controller Memory Buffer)、多权重队列轮询(WRR)、在线固件更新(Online FW upgrade)等方面不同。

不同的性能需求 :企业级SSD更多关注在稳态下的性能、延时以及性能一致性,这需要控制器有足够高的计算能力以及内部硬件各个模块的带宽能满足性能需求。

不同的功耗要求 :由于消费级用户对待机和续航有更多要求,所以消费级控制器经常需要进入省电模式,尤其是在笔记本等可移动的设备中,这要求控制器在设计时应考虑低功耗特性(如PS3和PS4);而企业级SSD大部分时间处于读写忙碌状态,非常注重用户命令的响应速度或时延,这使得企业级控制器不需要特别优化低功耗模式,但需要满足企业级SSD最大工作功耗要求。 LrcldJo1oXFg/FuHV/Y0BeG9nWl/JYIsqQh+f6OAN8OyckdX1rJtkftrrGXRbpsa

点击中间区域
呼出菜单
上一章
目录
下一章
×