SSD学习笔记2-SSD主控

SSD系统架构

SSD作为数据存储设备,其实是一种典型的(System on Chip)单机系统,有主控CPU、RAM、操作加速器、总线、数据编码译码等模块,操作对象为协议、数据命令、介质,操作目的是写入和读取用户数据。

SSD主控模块硬件图

如图所示仅是一个SSD系统架构的概略图,这款主控采用ARM CPU,主要分为前端和后端两大部分。前端(Host Interface Controller,主机接口控制器)跟主机打交道,接口可以是SATA、PCIe、SAS等。后端(Flash Controller,闪存控制器)跟闪存打交道并完成数据编解码和ECC。除此之外还有缓冲(Buffer)、DRAM。模块之间通过AXI高速和APB低速总线互联互通,完成信息和数据的通信。在此基础之上,由SSD固件开发者构筑固件(Firmware)统一完成SSD产品所需要的功能,调度各个硬件模块,完成数据从主机端到闪存端的写入和读取。

前端

前端是负责主机和SSD设备通信的接口,命令和数据传输通过前端总线流向或流出SSD设备。

从硬件模块上来看,前端有SATA/SAS/PCIe PHY层,俗称物理层,接收串行比特数据流,转化成数字信号给前端后续模块处理。

从协议角度,以一条SATA Write FPDMA命令为例对上述内容进行说明。从主机端文件系统发出一条写命令请求,该请求到主板南桥AHCI寄存器后,AHCI寄存器执行请求,即进行写操作,忽略文件系统到AHCI路径的操作细节,从SSD前端总线上看会发出如下的写交互操作:

SSD接收命令和数据并放到SSD内部缓冲区之后,前端固件模块还需要对命令进行解析,并分派任务给中端FTL。 当命令解析完成后,放入命令队列里等待中端FTL排队去处理。至此,前端的任务即告完成。

主控CPU

SSD控制器SoC模块和其他嵌入式系统SoC模块并没有什么本质的不同,一般由一颗或多颗CPU核组成,同时片上有I-RAM、D-RAM、PLL、IO、UART、高低速总线等外围电路模块。CPU负责运算、系统调度,IO完成必要的输入输出,总线连接前后端模块。

固件根据CPU的核数进行设计,充分发挥多核CPU的计算能力是固件设计考虑的一方面。另外,固件会考虑任务划分,会将任务分别加载到不同CPU上执行,在达到并行处理的同时让所有CPU有着合理且均衡的负载,不至于有的CPU忙死有的CPU闲死,这是固件架构设计要考虑的重要内容,目标是让SSD输出最大的读写性能。

SSD的CPU外围模块包括UART、GPIO、JTAG,这些都是程序必不可少的调试端口,另外还有定时器模块Timer及其他内部模块,比如DMA、温度传感器、Power regulator模块等。

后端

后端两大模块分别为ECC模块和闪存控制器。ECC模块是数据编解码单元,由于闪存存储天生存在误码率,为了数据的正确性,在数据写入操作时应给原数据加入ECC校验保护,这是一个编码过程。读取数据时,同样需要通过解码来检错和纠错。SSD内的ECC算法主要有BCH和LDPC,其中LDPC正逐渐成为主流。

闪存控制器使用符合闪存ONFI、Toggle标准的闪存命令,负责管理数据从缓存到闪存的读取和写入。

  • 17
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值