[SSD]SSD主控

SSD系统架构

SSD系统由一块CPU主控,可以是ARM或者RISC-v;

整个主控芯片分为三个部分,分别是主机接口控制器,缓存控制器和闪存控制器,它可以分为前端和后端,前端就是主机接口控制器和主机之间的通信,用于获取主机的命令并且从主机获取数据;后端就是闪存控制器和闪存之间的通信,主要是做主机数据的逻辑地址和闪存的物理地址的地址映射,并且将数据写入闪存之中。其中还有一个缓存区(DRAM/SRSM)这也是一个可易失的存储,这个缓存区由缓存控制器控制,从主机来的数据会暂时存入缓存中,知道数据量达到存储标准才会进行后端的操作。接下来分别介绍:

DMA(Direct Memory Access)

这个可以理解为封装好的固件,作用是传输数据,只需要CPU发指令就能执行,无需占用CPU;又可以分为前端DMA和后端DMA,前端DMA一般在SATA/PCIe这些接口上;后端DMA一般在flash上。

前端

前端做的是将数据从主机接口控制器,通过接口(SATA/PCIe/USB3.2 这里的接口可以按需更换)--前端DMA 传输到SSD内部的缓存/寄存器,这个过程主要是数据的传输,速度很快(纳秒级别),影响这个速度的因素是接口的带宽 (PCIe4.0×4 比单个PCIe4.0快)和时钟频率

逻辑层

在逻辑层中主要实现的是FTL算法,FTL过程包括逻辑地址和物理地址的映射,垃圾回收,磨损均衡,坏块处理等;

后端

后端主要做的有ECC纠错,后端DMA 过程,通过这些过程将缓存中的数据比较稳定的写入到闪存之中,这个处理过程是需要时间的,除此之外,影响SSD性能的瓶颈也是在这一块,有一个叫做**Flash编程时间(微秒级别)**的性质;

ECC纠错(BCH/LDBC)

闪存是把电子关进"浮栅极"来存储0和1的,这个过程中很有可能会发生"位翻转"的产生错误,对此,加入ECC纠错是必要的。

ECC纠错思想:在存数据的时候,附带一段"校验信息",这段校验信息是根据需要传输的数据信息计算出来的,也就是编码过程;然后带着校验信息的数据传输之后,对数据据根据算法进行解码,只需要比较和存进去的校验码是否匹配既可完成ECC检错;纠错:如果发生错误,通过矩阵运算能够计算出准确位置bit翻转了,然后把它翻转回来。

在缓存区------>闪存单元这一块,主控的 ARM CPU 运行 FTL 算法,决定数据该写到哪个 Die 的哪个页。随后,后端 DMA 接管,将这数据从主控缓冲区,通过闪存通道,搬运到目标闪存颗粒内部的页寄存器中。

Plane(平面):

Plane是Die下面的单元,一般一Die有4个Plane,每一个Plane都配备专属的页寄存器,页寄存器中存着来自于缓存区的数据(中转站)。

页寄存器:

页寄存器是在flash颗粒内部,连接主控缓存区和内部存储阵列(浮栅极)的结构,在每一个闪存Die中,通常每个Plane都会配备一个页寄存器。

Flash编程时间( tPROG**)**

是在flash中完成操作的 ,这是一个物理的过程(给浮栅晶体管充放电的过程,),速度收到材料的影响;为了尽可能使前端到后端的传输过程比较顺利(SSD不卡顿),就必须想方设法让多个Die并发干活;这要接触到几个专业的名词

Die(晶粒) 闪存上的一个最小物理独立单元,一颗Die里面包含成千上万个块和页,以及自己的控制逻辑,可以把它理解为一个流水线工人,同一时刻只能执行一个操作(例如对数据读or写or擦除),所以在向闪存写入数据的过程,为了提升速度,可以根据要求使用多个Die实现并发的数据写入。

CE(Chip Enable,片选信号) CE是闪存控制器引出的一根片选控制线,它的作用是激活/选中特定的闪存Die,让这个Die准备写入主控的指令和数据;主控和每一个Die之间都有一个专属CE线(这个是已经封装好的)

缓存

什么是缓存,为什么要存在缓存区:

缓存本质上是一个物理的储存DRAM/SRAM(易失性),它会和CPU一样焊接在主控板上,相当于是另一个挂载的临时存储;这个缓存区的作用如下:

1.前端读写速度和后端读写速度不一致,前端更快,后端(闪存编程时间)更慢,缓存区起到临时存储数据的作用;

2.在数据写入闪存的过程中需要做FTL,ECC等算法,也需要计算时间。

相关推荐
xiangw@GZ7 小时前
DDR3 颗粒信号定义解析
单片机·嵌入式硬件
Deitymoon7 小时前
STM32——oled显示字符串和数字
stm32·单片机·嵌入式硬件
深圳市晨芯阳科技有限公司8 小时前
带延时功能的电压检测系列晨芯阳HC809
单片机·嵌入式硬件·电源芯片·深圳市晨芯阳科技有限公司
xiangw@GZ8 小时前
DDR2 / DDR3 / DDR4 颗粒信号差异对照表
单片机·嵌入式硬件
科芯创展8 小时前
1A,60VIN,1MHz,XZ4116,降压恒流LED驱动芯片 输入电压:5V-60V
stm32·单片机·嵌入式硬件
天天爱吃肉821810 小时前
新能源汽车单级车载电源及高频高密度DCDC设计开发技术入门指南
大数据·人工智能·功能测试·嵌入式硬件·汽车
SKY -dada10 小时前
01--阴雨天逆变器频报“GFCI故障”?勿当简单跳闸!深度解析与排查指南
单片机·嵌入式硬件
jghhh0111 小时前
STM32 上使用 SPI 总线驱动 OLED 的程序
stm32·单片机·嵌入式硬件
XINVRY-FPGA11 小时前
XC7Z010-2CLG400I Xilinx Zynq-7000 FPGA
arm开发·嵌入式硬件·算法·fpga开发·硬件工程·dsp开发·fpga