SSD |(二)SSD主控

news2024/11/28 21:59:39

文章目录

  • 📚控制器架构
    • 🐇PCIe和NVMe控制器前端子系统
    • 🐇NAND闪存控制器后端子系统
    • 🐇内存子系统
    • 🐇安全子系统
    • 🐇CPU计算子系统

📚控制器架构

  • 控制器作为一个片上系统,处理来自用户端的命令并负责管理闪存颗粒。整个控制器的架构主要包括以下几个模块。
    • 前端主机接口模块:比如PCIe控制器和存储协议 NVMe控制器。
    • 后端闪存接口模块:用于直接和闪存交互,是控制器和闪存交互的通道,一个通道上可挂载多个闪存颗粒。
    • 后端数据处理模块:如 RAID、扰码器和LDPC,又称数据处理单元。
    • DDR 控制器和 PHY:用于和 DRAM交互。
    • 加解密以及认证的安全模块:负责硬件和数据安全。
    • 负责指挥整个系统和协调各个硬件计算系统的 CPU 以及互连系统
    • 其他:如片上SRAM、模拟IP和外设端口等。
      在这里插入图片描述

🐇PCIe和NVMe控制器前端子系统

  • PCle和 NVMe控制器前端子系统有时也被称为主机子系统,主要用于处理来自主机以及协议接口的各种命令。PCIe决定了整个控制器的前端和用户交互带宽。
  • 目前主流的消费级控制器主要是4个通道,企业级控制器可能具备8个甚至更多的通道以满足带宽的需求。PCIe PHY(物理接口)作为高速接口,是控制器的核心IP。
  • NVMe控制器借助PCIe接口实现了NVMe产品规范相关的协议,实现了基本操作(如读写)以及各种特性。NVMe控制器与主机间的交互流程如下:
    • 主机往 SQ(Submission Queue,提交队列)里面提交命令,并通过Doorbell 通知 NVMe 控制器;
    • NVMe 控制器去主机端的SQ取命令,并存在NVMe控制器的命令队列中。
    • NVMe控制器从内部命令队列中把命令传递给CPU(固件)系统,让CPU执行相应的操作。
    • 当CPU完成相关操作后通知 NVMe控制器,NVMe控制器更新主机端的CQ(Completion Queue,完成队列),并通知主机,主机收到通知后,释放相应的资源。
      在这里插入图片描述
  • 为了实现相关功能,NVMe控制器有两条通道,一条控制通道,一条数据通道。数据最终通过DMA传输到内存系统,命令和状态用于NVMe控制器和CPU计算系统的交付系统。
    • DMA意为直接内存访问,允许某些硬件子系统(如磁盘驱动器控制器或图形卡)直接访问系统的内存,而无需中央处理器(CPU)的介入。
    • DMA控制器会接管总线控制权,直接将数据从一个地址空间移动到另一个地址空间,比如从内存到硬盘或从网络接口卡到内存。
    • 完成数据传输后,DMA控制器会释放总线控制权,并通知CPU数据传输已完成。这样,CPU就可以继续执行其他任务,而不会因为等待数据传输而闲置。
  • PCIe NVMe控制器控制与数据通道交互示意如下:
    在这里插入图片描述

🐇NAND闪存控制器后端子系统

  • 后端子系统一般包括任务调度模块数据处理单元闪存驱动。任务调度模块是后端子系统的大脑,通过SQ、CQ和CPU(固件)交互,以控制数据处理单元和闪存驱动完成固件提交任务。
  • 后端的任务调度器(Taskscheduler)从SQ获取来自固件的命令,并将命令拆解为针对数据处理单元和闪存驱动(主要是微码处理器和闪存的PHY)的操作,等相关操作完成会收到对应的回复,任务调度器更新CQ里面的内容,并通知CPU。其中涉及的数据通路分为NAND写和NAND读两个操作方向。
    在这里插入图片描述
  • 在NAND写操作方向,数据从控制器的片上SRAM或者片外DRAM送至数据处理单元进行处理,然后通过闪存驱动写入NAND颗粒;在NAND读操作方向,数据从NAND颗粒读出,经过数据处理单元的处理传输到控制器的片上SRAM。
    • 写过程中的数据处理流程:固件元数据和用户数据合并 →独立磁盘冗余阵列(RedundantArray Independent Disk,RAID)引擎的异或运算→扰码器的伪随机化操作 →LDPC 编码并产生验证信息。
    • 读过程中的数据处理流程:LDPC译码并得到正确数据→扰码器对数据去随机化→判断固件元数据并去掉数据中的固件元数据。

🐇内存子系统

  • 内存子系统包括片上SRAM外设DRAM
    • 片上的SRAM资源比较有限,按照AU(Allocation Unit,分配单元)大小进行组织、申请和释放,通常AU的大小为4KB。SRAM资源申请和释放可以单独由固件来管理,也可以由固件和硬件一起管理,如固件负责申请,当操作完成后由硬件释放。
    • DRAM用于存放L2P映射表及用户写数据等。L2P映射是指逻辑地址到物理地址的映射(Logical address To Physical address)。这种映射是由SSD的固件中的FTL(Flash Translation Layer,闪存转换层)来管理的。DRAM外部内存的管理则通过DRAM控制器进行,这种方式相比片上SRAM的访问速度要慢,但容量会大很多。
  • DRAM控制器&PHY和PCIe控制器&PHY类似,都属于通用性的,可以通过向第三方卫供应商购买来提高SoC(系统级芯片,System on Chip)的开发效率。所有的内存空间以及各种控制器的寄存器均会有独一无二的地址,这可方便CPU的访问与控制

🐇安全子系统

  • 安全子系统主要负责两部分功能:对固件进行签名和验签,以及对用户数据进行加解密

  • 验签与授权相关安全算法如下。

    • 国际标准算法SHA-256和国内商密SM3算法,用于计算哈希值。
    • 国际标准算法RSA和国内商密SM2作为公匙加密法,用于固件和硬件验签。
    • 国际标准AES 和国内商密SM4,对固件等重要系统文件进行加解密
    • 真随机数(TRND),用于密钥和临时数据(Nonce)加解密。
  • TCG Opal为了保证数据安全可靠,提出Self-Encrypting Drive(自加密盘)的概念。
    在这里插入图片描述

    • 明文由用户输入,控制器利用硬件的AES模块进行数据加密,然后写入相应的SRAM 和闪存颗粒中。
    • 用于用户数据加密的 Media EncryptionKey(媒体加密密钥,简称MEK)本身也被加密保护着,需要KeyEncryptionKey(密钥加密密钥,简称KEK)对加密后的 MEK 进行解密。
    • KEK则是通过用户输入的AuthenticationKey(验证密钥,PIN中的一种)通过KDF运算产生的,加密和认证环环相扣,从而创建一个安全可靠的数据环境。

🐇CPU计算子系统

  • CPU计算子系统是整个控制器的管理中心,可确保有足够高的算力以保证性能需求,尤其是随机性能需求。
  • 除了CPU核之外,CPU计算子系统中的重要部件还有ITCMDTCM,它们分别用于存放指令以及重要的变量和数据。在目前的控制器芯片中,主流的CPU为ARMR系列(如R5和R8)。而主流的CPU核除了ARM的CPU核外,还有新思科技的ARC和RISC-V的CPU核。
    • ITCM主要用于存储指令代码。由于它与CPU内核紧密耦合,因此可以以与内核相同的速度访问指令,这对于提高程序的执行速度非常有帮助。在某些系统中,所有的指令都存储在ITCM中,特别是对于那些对实时性要求高的代码段。
    • DTCM主要用于存储数据。与ITCM一样,DTCM也具有高速访问的特点,适合存放需要频繁访问的数据。DTCM的访问速度通常比外部RAM快得多,因此可以显著提高数据存取的速度。
  • 对于多核CPU系统,CPU核间的通信至关重要,可以通过共享的TCM来实现高效通信,当然也可以设计专用硬件来辅助复杂体系中多核间通信。除了实时R系列CPU核之外,ARMA系列CPU(如A53和A55CPU集群)也经常在高端的企业级控制器芯片中作为主处理器使用。

  • 参考书籍:《深入浅出SSD:固态存储核心技术、原理与实战》(第2版)

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux下的Makefile基本操作

1.Makefile与 make介绍 在Linux中, Makefile 是⼀个⽂件, 令会在当前⽬录下找 make 是⼀个指令,当使⽤ Makefile ⽂件从⽽执⾏内部的内容 2.创建第一个 Makefile并使用make ⾸先,在当前⽬录下创建⼀个makefile文件 接下来在同级…

【小工具分享】下载保存指定网页的所有图片

一、保存百度首页所有的图片 先看一下保存的图片情况 二、思路 1、打开网页 2、获取所有图片 3、依次下载保存图片到指定路径 三、完整代码 from selenium import webdriver from selenium.webdriver.common.by import By b webdriver.Firefox() import urllib.request…

企业如何借力AI,提升人力资源管理的效率完成组织提效变革

大家好,我是Shelly,一个专注于输出AI工具和科技前沿内容的AI应用教练,体验过300款以上的AI应用工具。关注科技及大模型领域对社会的影响10年。关注我一起驾驭AI工具,拥抱AI时代的到来。 企业面临的压力: 在当今这个充…

LeetCode|70.爬楼梯

这道题很像斐波那契数列,但是初始值不同,也有动态规划的解法,但是一开始我想到的是递归写法。现在我们站在第n阶台阶,那么,我们上一步就有两种可能:1、我们从第n-1阶台阶走一步上来的;2、我们从…

商家转账到零钱接口开通

商家想要开通“商家转账到零钱”功能,需要遵循一系列详细步骤和条件,以确保顺利通过审核。以下是开通办法的详解: 申请流程: 主体资格确认:确保申请主体为公司性质(有限公司),个体工…

ScribbleDiff:使用涂鸦引导扩散,实现无需训练的文本到图像生成

ScribbleDiff可以通过简单的涂鸦帮助计算机生成图像。比如你在纸上随意画了一些线条,表示你想要的图像的轮廓。ScribbleDiff会利用这些线条来指导图像生成的过程。 首先,它会分析这些涂鸦,确保生成的图像中的对象朝着你画的方向。比如&#…

品民俗、看展演、逛非遗市集……在海淀,重阳节还可以这样过

秋菊溢彩、叠翠鎏金。由北京市海淀区文化和旅游局主办,北京市海淀区文化馆承办,海淀区上庄镇文化活动中心支持的品鉴民俗 巧手绘梦——2024年海淀区重阳节非遗主题文化活动于10月11日在上庄镇市民活动中心顺利举办。海淀非遗传承人以非遗为媒,与地区群众度过了一个温馨、热闹、…

第四次论文问题知识点及问题

1、NP-hard问题 NP-hard,指所有NP问题都能在多项式时间复杂度内归约到的问题。 2、启发式算法 ‌‌启发式算法(heuristic algorithm)是相对于最优化算法提出的。它是一种基于直观或经验构造的算法,旨在以可接受的花费给出待解决…

Android 如何实现远程网页控制售卖机出商品:RabbitMQ的对接,如何使用?如何断网重连?连接不上后台的MQ有哪些方面的原因

目录 一、如何实现远程网页控制售卖机出商品? 比如,我们想实现,通过一个网页去控制自动售卖机(自动售卖机装有Android系统,装有App)出商品,也就是我们熟知的远程控制,不用你人到现场…

搭建电商商城系统各项功能时需要用到的电商API数据采集接口

在搭建电商商城系统时,选择合适的电商API接口至关重要。以下是一些常用的电商API接口提供商及其功能: 常用电商API接口提供商 淘宝开放平台:提供淘宝、天猫、1688等阿里巴巴集团旗下的电商平台接口,用于商品检索、订单管理、物流…

如何把pdf转换成jpg图片?在线pdf转图片,这6种方法很简单!

“如何把pdf转换成jpg图片?”相信很多小伙伴们都有这个疑问。pdf格式是如今在商业和其他正式场合中使用最广泛的文档类型,因为它能以安全且方便的方式共享信息。然而,查看pdf文件通常需要使用一些专业的pdf阅读器,这可能给一些用户…

服务端给客户端push消息的demo的实现流程

摘要: 本示例演示了一个基本的服务端5分钟定时向客户端app推送消息的WebSocket机制。服务端使用WebSocket协议接受客户端的订阅和取消订阅请求,并根据客户端的订阅状态发送实时消息。服务端记录并打印带有时间戳的日志,以监控订阅活动。客户…

python画图|二维动态柱状图输出

【1】引言 在前面的学习过程中,已经探索过二维柱状图和三维柱状图的绘制教程,包括且不限于的文章链接有: python画图|水平直方图绘制_绘制水平直方图-CSDN博客 python画图|3D bar进阶探索_ax.bar3d-CSDN博客 此外也学习了动态的直线输出和…

调用AI 通过相机识别地标

https://www.youtube.com/watch?vViRfnLAR_Uc&listPLQkwcJG4YTCRJxkPPDBcKqDWrfF5qanQs&index3学习视频 TensorFlow Hub 机器学习模型的代码库 找到地标模型 如何在Android上使用ts模型 https://blog.tensorflow.org/2018/03/using-tensorflow-lite-on-android.html…

10.11每日作业

数据表 #include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this);//想要添加某个数据库if(!db.contains("stu.db")){//如果当前对象中没有包含所需数据库&…

dowhy中反驳实验怎么做?

首先,我们打开最新的dowhy版本网站。 https://www.pywhy.org/dowhy/v0.11.1/index.html 我们主要看标题栏的User Guide和Examples就可以了,如果在User Guide 里找不到使用方法,就去Examples里找例子,里面的数据读取修改为自己的数…

HI6338 (DIP-8内置75W方案)

Hi6338 combines a dedicated current mode PWM controller with integrated high voltage power MOSFET.Vcc low startup current and low operating current contribute to a reliable power on startup design with Hi6338. the IC operates in Extended ‘burst mode’ to …

前端的全栈混合之路Meteor篇:分布式数据协议DDP深度剖析

本文属于进阶篇,并不是太适合新人阅读,但纯粹的学习还是可以的,因为后续会实现很多个ddp的版本用于web端、nodejs端、安卓端和ios端,提前预习和复习下。ddp协议是一个C/S架构的协议,但是客户端也同时可以是服务端。 什…

Java程序打包成jar包

步骤1 打开项目结构 步骤2 配置工件 选择你要打包的模块选择主类(程序的主入口main类)提取到目标会把库文件的jar包打包到目标,一般选择这个,更方便在不同电脑上运行 步骤3 构建并生成jar包 最后,在对应的out/artifacts文件夹中找到jar包,在终端输入java -jar xxxx.jar就可以正…

mac电脑如何删除应用程序?怎么删除苹果电脑里的软件

在使用Mac电脑的过程中,随着时间的推移,我们可能会安装大量的应用程序。然而,这些应用程序中有很多可能只是临时使用,或者已经不再需要了。这些无用的应用程序不仅占据了宝贵的硬盘空间,还可能拖慢Mac系统的运行速度。…