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

相关推荐
普中科技2 小时前
【普中STM32F1xx开发攻略--标准库版】-- 第 45 章 FSMC-外扩 SRAM 实验
stm32·单片机·嵌入式硬件·fsmc·普中科技·外扩sram·is62wv51216
xiaoyuchidayuma4 小时前
永磁同步发电机的线电压和直流母线电压的关系
嵌入式硬件
潜创微科技4 小时前
4K60 over IP 方案简介
网络·嵌入式硬件·网络协议·tcp/ip·音视频
rit84324994 小时前
基于C#的USB HID设备读取测试软件
嵌入式硬件
三佛科技-187366133975 小时前
FT32F103C8AT7兼容GD32F103C8T632 位通用微控制器MCU,替代性分析
单片机·嵌入式硬件
iCxhust5 小时前
8086汇编 word ptr
汇编·单片机·嵌入式硬件·微机原理·8088单板机
嵌入式ZYXC5 小时前
第3篇:《面试题:I2C为什么要加上拉电阻?阻值怎么选?》
stm32·单片机·嵌入式硬件·面试·职场和发展
你疯了抱抱我6 小时前
【STM32】使用 STM32CubeMX 生成项目,LED测试;上位机:STM32F411CEU6
stm32·单片机·嵌入式硬件
今天的你比昨天进步了?8 小时前
单片机程序,keil可以正常编译,VScode编译报错处理
vscode·单片机·嵌入式硬件