[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等算法,也需要计算时间。

相关推荐
Jason_zhao_MR7 小时前
Linux与实时控制如何兼得
linux·嵌入式硬件·机器人·工业控制
BSD_CGQ7 小时前
FSR传感器STM32 DMA高速采样工程实现(高精度、低CPU占用)
stm32·单片机·嵌入式硬件·压力传感器·源头工厂·柔性薄膜压力传感器·可变电阻压力传感器
芯岭技术郦10 小时前
32 位 ARM® Cortex®-M0+ 内核MCU普冉MS32C001-C
单片机·嵌入式硬件
骑着毛驴数星星10 小时前
STM32 CAN波特率与采样点计算,基于HAL库
stm32·单片机·嵌入式硬件
zhangrelay11 小时前
Arduino-MEGA-ESP单片机理论课笔记02-硬件-2026
笔记·单片机·嵌入式硬件
艾芯微科技12 小时前
钰泰 ETA5055V330DD1E|SOT-223 3.3V LDO,低压差、大电流线性稳压选型分享
网络·单片机·嵌入式硬件·集成测试·51单片机
威嵌神州13 小时前
恩智浦 T1022 性能怎么样?QorIQ 架构中端工业嵌入式优势解析
嵌入式硬件
weixin_6906547413 小时前
龙迅#LT9611EX 现MIPI转HDMI1.4功能主推型号,分辨率高达4K30HZ,IC内置I2C无需外部12C控制。
嵌入式硬件·音视频·信号处理
qq_4017004113 小时前
STM32 GPIO 精讲|推挽 / 开漏 / 上拉浮空,工程选型避坑
stm32·单片机·嵌入式硬件
创界工坊工作室14 小时前
19-基于单片机的宠物喂养控制系统设计
stm32·单片机·嵌入式硬件·proteus·宠物