第2章 SSD主控和全闪存阵列

通过第一章可知,SSD主要由两大模块组成:主控和闪存介质。其中,主控的作用包括:

    (1)实现标准主机接口与主机通信;

    (2)实现与闪存的通信;

    (1)运行SSD内部FTL算法。

主控芯片的好坏直接决定了SSD的性能、寿命、可靠性。

2.1 SSD系统架构

      SSD作为数据存储设备,有主控CPU、RAM(随机存储器)、操作加速器、总线、数据编码译码等模块;操作对象为协议、数据命令、介质;操作目的是写入和读取用户数据。SSD的系统架构概略图如下所示:

       图中,主控采用ARM CPU,主要分为前端和后端两个部分。其中,前端(主机接口控制器,Host Interface Controller)跟主机打交道,接口可以是SATA、PCIe、SAS等。后端(闪存控制器,Flash Controller)跟闪存打交道,并完成数据编解码和ECC(数据校验、纠错)。除此之外还有缓冲(Buffer)、DRAM(动态随机存取存储器)。

        模块之间通过AXI高速和APB低速总线互联互通,完成信息和数据的通信。

2.1.1 前端

     主机接口:与主机进行通信(数据交换)的标准协议接口,主要代表有SATA、SAS、PCIe等。

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

 1. SATA

      全称是Serial Advanced Technology Attachment(串行高级技术附件),是一种基于行业标准的串行硬件驱动器接口。

        Serial(连续的,串联的)。

 2. SAS

       SAS(Serial Attached SCSI) 即串行连接SCSI(小型计算机系统接口),与SATA类似,都是采用串行技术以获得更高的传输速度,并通过缩短连接线改善内部空间。

        SAS的接口技术可以向下兼容SATA。二者的兼容性主要体现在物理层和协议层。在物理层,SAS接口和SATA接口完全兼容,SATA硬盘(拥有SATA接口的固态硬盘)可以直接用在SAS的环境中。在协议层,SAS由三种类型的协议组成,在三种协议的配合下,SAS可以和SATA以及部分SCSI设备无缝结合。

3. PCIe

        PCIe(Peripheral Component Interconnect Express)是一种高速串行计算机扩展总线标准。PCIe属于高速串行点对点多通道高带宽传输,所连接的设备分配独享通道带宽,不共享总线带宽(带宽,即吞吐量),主要支持主动电源管理、错误报告、端对端的可靠性传输、热插拨以及服务质量等功能。

        从硬件模块上看,前端有PHY层(端口物理层),用于接收串行比特数据流,并将其转化成数字信号交给前端的后续模块处理。

        例子:从协议角度,主机端发送一条SATA Write FPDMA命令到SSD设备的过程(前端所要进行的操作)

        DMA:直接存储器存取。

(1)主机在总线上发出Write FPDMA命令FIS(Frame Information Structure,帧信息结构);

(2)SSD收到该命令,判断自身内部写缓存是否有空间接收新的数据。若有,则向主机发送DMA Setup FIS命令;若无,则什么都不发送,此时主机端处于等待状态(即流控--数据流量控制);

(3)主机收到DMA Setup FIS后,发送不大于8KB的Data FIS给SSD设备;

(4)重复(2)和(3),直到数据发送完毕;

(5)SSD发送一个状态Status FIS到主机,表示从协议层面这条写命令执行完毕。

        SSD接收命令和数据并存放到SSD内部缓存区后,前端固件模块还需要对命令进行解析,并分配任务给中端FTL。

        命令解析(Command Decoder)将命令FIS解析成固件和FTL可以理解的元素。

        命令解析完成后,放入命令队列里等待终端FTL排队处理。

2.1.2 主控CPU

        I-RAM:代码存储区。

        D-RAM:数据存储区。

        SoC:系统级芯片,也叫片上系统。

        PLL:锁相环。

        URAT:用于控制计算机和串行设备的芯片。

      SSD控制器SoC模块一般有一颗或多颗CPU核组成,同时片上还有I-RAM、D-RAM、IO、PLL、URAT、高低速总线等外围电路模块。

        固件运行在CPU核上。

        若是多核CPU,那么软件可以是对称多处理(SMP)和非对称多处理(AMP)。其中,SMP的多核共享OS和同一份执行代码;AMP的多核分别执行不同代码。

2.1.3 后端

        ECC:数据校验、纠错。

        后端两大模块分为 ECC模块闪存控制器

(1)ECC模块

      ECC模块是数据编解码单元。执行写操作时,会给原数据加入ECC检验保护,是一个编码过程;执行读操作时,会通过解码来校验和纠错。

      SSD内的ECC算法主要有BCH和LDPC。

(2)闪存控制器

      它负责管理数据从缓存到闪存的读取和写入。

        Die/LUN是闪存通信的最小基本管理单元。

2.6 全闪存阵列AFA

        闪存阵列由若干个Die构成。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/16014.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vue2 element-ui 2.9.1版不支持抽屉el-drawer

一个老项目中想使用抽屉 el-drawer,死活没有反应。 查了下element-ui的版本是2.9.1 再看其他一个正常使用抽屉的项目的element-ui版本。 但是 2.14.1 的element-ui版本又存在菜单管理无法折叠菜单项的问题。 看来还是得抽空解决在2.14.1菜单无法折叠的问题了。

C++ 实现生产者消费者模型 (线程同步、互斥锁、条件变量锁)详细注释

代码结构 任务:这里用一个int类型的taskNumber代替任务任务队列类:封装了任务队列,存,取等操作。生产者工作函数:生产者执行的函数,向任务队列中添加任务,每个生产者生产3个任务消费者工作函数…

投票评选活动小程序v2-用户报名图片上传

投票评选活动小程序v2-用户自行报名收集材料页面 主要收集项目或者作品图片及其描述,可以在后台进行统一录入,也可以是在用户界面,让用户自行报名上传。 这里开发了一个“我要报名”页面,在首页点击“我要报名”按钮跳转过来。 …

小程序代码提审用户隐私保护协议修改指引

为规范开发者的用户个人信息处理行为,保障用户合法权益,小程序涉及处理用户个人信息的开发者,均需补充相应用户隐私保护指引;微信会根据小程序版本隐私接口调用情况展示必填项,开发者可自主勾选其他项目。 一、代码提…

SpringBoot 实现 elasticsearch 查询操作(RestHighLevelClient 的案例实战)

文章目录 1. 环境准备1. 查询全部2. 根据 name 查询 match 分词查询3. 根据 name 和 品牌查询 multiMatch 分词查询4. 根据 brand 查询 match 分词查询5. 按照价格 范围查询6. 精确查询7. boolQuery8. 分页9. 高亮查询9. 公共解析 上一节讲述了 SpringBoot 实现 elasticsearch …

小程序蓝牙通信

蓝牙通信能力封装 一开始是根据uniapp提供的蓝牙api写的蓝牙方法,之后发现复用性,以及一些状态的监听存在缺陷,之后整理成了类。这样复用性以及状态监听的问题就解决了。 蓝牙组件 创建蓝牙组件的类 单例模式是为了保证蓝牙长连接&#xff0…

(22)LED灯(外部)

文章目录 前言 22.1 带有I2C连接的RGB LEDs/显示器 22.2 串行连接的设备 22.3 NTF LED的含义 前言 外部 LED 或 LED 显示屏可以通过连接到自动驾驶仪的 I2C 端口,或者在 4.0 及以后的版本中,如果是串行编程的设备,可以通过输出使用 SERV…

Image Sensor的FSIN/VSYNC

本文介绍Image Sensor的FSIN/VSYNC。 产品开发过程(比如3D成像)中,有时会遇到需要2个及以上的Image Sensor同步采集,因此,Image Sensor厂家对于他们的产品都提供了同步功能,也就是我们经常所见的FSIN/VSYNC(OV),XVS(Sony IMX3系列…

gen1-视频生成论文阅读

文章目录 摘要贡献算法3.1 LDM3.2 时空隐空间扩散3.3表征内容及结构内容表征结构表征条件机制采样 3.4优化过程 实验结果结论 论文: 《Structure and Content-Guided Video Synthesis with Diffusion Models》 官网: https://research.runwayml.com/ge…

大象机器人myCobot 280 2023版全新功能展示

引言 机械臂是一种可编程的、自动化的机械系统,它可以模拟人类的动作,完成各种任务,例如装配、喷涂、包装、搬运、焊接、研磨等。由于其高度灵活性和多功能性,机械臂在现代社会中已经得到了广泛的应用。 myCobot 280 M5Stack 202…

Spring Boot 中的 SockJS

Spring Boot 中的 SockJS 在 Spring Boot 中,SockJS 是一个用于实现 WebSocket 的兼容性解决方案。本文将介绍 SockJS 的原理、使用方法和示例代码。 什么是 SockJS SockJS 是一种浏览器与服务器之间的通信协议,它可以在浏览器和服务器之间建立一个基于…

论文阅读:Segment Anything之阅读笔记

目录 引言整体结构介绍论文问答代码仓库中,模型哪部分转换为了ONNX格式?以及如何转的?Mask decoder部分 Transformer decoder block?如何整合image_embedding,image_pe, sparse_prompt_embedding和dense_prompt_embedding的&…