SSD |(二)SSD主控

文章目录

  • 📚控制器架构
    • 🐇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版)

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【二分算法】——8个题目让你找到二分算法的感觉势如破竹

文章目录 1.二分查找2.在排序数组中查找元素的第一个和最后一个位置3.x的平方根4.搜索插入位置5.山脉数组的峰顶索引6.寻找峰值7.寻找旋转排序数组中的最小值8.JZ53(2) 1.二分查找 https://leetcode.cn/problems/binary-search/ 思路: 标准的二分查找。给定一个有序数组和目…

【2024版本】Mac/Windows IDEA安装教程

IDEA 2024版本真的很强大,此外JDK发布了最新稳定版 JDK21 ,只有新版本支持JDK 21、JDK22。原来数据库插件不支持redis等一些NoSql的数据库的连接,如果要使用需要自己单独装收费的插件。直接打开idea就很吃内存了,再打开其他一大堆…

47 C 语言实战项目——家庭收支记账软件

目录 1 需求说明 1.1 菜单显示 1.2 登记收入 1.3 登记支出 1.4 显示收支明细 1.5 退出 2 流程分析 2.1 总流程图 2.2 登记收入流程图 2.3 登记支出流程图 2.4 收支明细流程图 2.5 退出流程图 3 代码实现 3.1 框架搭建 3.2 收支明细功能 3.3 登记收入功能 3.4 …

23年408数据结构

第一题: 解析: 第一点,我们要知道顺序存储的特点:优点就是随用随取,就是你想要查询第几个元素可以直接查询出来,时间复杂度就是O(1),缺点就是不适合删除和插入,因为每次删除和插入一…

【数据分享】2000—2023年我国省市县三级逐年植被覆盖度(FVC)数据(Shp/Excel格式)

之前我们分享过2000—2023年逐月植被覆盖度(FVC)栅格数据(可查看之前的文章获悉详情)和Excel和Shp格式的省市县三级逐月FVC数据(可查看之前的文章获悉详情),原始的逐月栅格数据来源于高吉喜学者…

青云AI算力创新:直击AI落地痛点 打造企业数智化基石

在当今这个数字化、智能化的时代,企业数字化转型、智能化升级应用实践在加速,AI算力已经成为企业数字化转型和智能化升级的重要基石,而AI算力在推动技术创新和业务增长中起到了关键作用。青云科技近日举办的AI算力发布会,标志着AI…

知识图谱入门——5:Neo4j Desktop安装和使用手册(小白向:Cypher 查询语言:逐步教程!Neo4j 优缺点分析)

Neo4j简介 Neo4j 是一个基于图结构的 NoSQL 数据库,专门用于存储、查询和管理图形数据。它的核心思想是使用节点、关系和属性来描述数据。图数据库非常适合那些需要处理复杂关系的数据集,如社交网络、推荐系统、知识图谱等领域。 与传统的关系型数据库…

如何快速给word文件加拼音?请跟着步骤完成吧

如何快速给word文件加拼音?在日常工作中,我们时常会遇到需要为Word文件中的文字添加拼音的情况,这尤其在教育、出版或国际交流等领域显得尤为重要。为文字配上拼音,不仅能帮助学习者准确发音,还能提升文档的可读性和普…

【JavaEE初阶】深入理解不同锁的意义,synchronized的加锁过程理解以及CAS的原子性实现(面试经典题);

前言 🌟🌟本期讲解关于锁的相关知识了解,这里涉及到高频面试题哦~~~ 🌈上期博客在这里:【JavaEE初阶】深入理解线程池的概念以及Java标准库提供的方法参数分析-CSDN博客 🌈感兴趣的小伙伴看一看小编主页&am…

【STM32单片机_(HAL库)】4-2-1【定时器TIM】定时器输出PWM实现呼吸灯实验

1.硬件 STM32单片机最小系统LED灯模块 2.软件 pwm驱动文件添加定时器HAL驱动层文件添加GPIO常用函数定时器输出PWM配置步骤main.c程序 #include "sys.h" #include "delay.h" #include "led.h" #include "pwm.h"int main(void) {HA…

【瑞萨RA8D1 CPK开发板】串口的使用和STDOUT输出重定向

串口 本次串口的使用关于时钟导致串口的波特率不对,坑了我很久的时间 使能时钟 串口发现一个问题就是,只能使用下边的时钟配置,修改时钟源和分频系数都会导致串口波特率不正常,这种问题出现在mdkrasc的使用场景之下&#xff1b…

adaptor lora基础

https://www.zhihu.com/question/508658141/answer/3340979311 adaptor和PEFT的区别:前者在模型子层后加一个小型的dense;后者直接稀疏化模型本身; Loading Pre-Trained Adapters — AdapterHub documentation CVPR 2024 | SD-DiT&#xff…

Python | Leetcode Python题解之第468题验证IP地址

题目: 题解: class Solution:def validIPAddress(self, queryIP: str) -> str:if queryIP.find(".") ! -1:# IPv4last -1for i in range(4):cur (len(queryIP) if i 3 else queryIP.find(".", last 1))if cur -1:return &q…

每日OJ题_牛客_小乐乐改数字_模拟_C++_Java

目录 牛客_小乐乐改数字_模拟 题目解析 C代码 Java代码 牛客_小乐乐改数字_模拟 小乐乐改数字_牛客题霸_牛客网 (nowcoder.com) 描述: 小乐乐喜欢数字,尤其喜欢0和1。他现在得到了一个数,想把每位的数变成0或1。如果某一位是奇数&#…

【网络安全】CVE-2024-46990: Directus环回IP过滤器绕过实现SSRF

未经许可,不得转载。 文章目录 背景漏洞详情受影响版本解决方案背景 Directus 是一款开源 CMS,提供强大的内容管理 API,使开发人员能够轻松创建自定义应用程序,凭借其灵活的数据模型和用户友好的界面备受欢迎。然而,Directus 存在一个漏洞,允许攻击者绕过默认的环回 IP …

大数据之——VWare、Ubuntu、CentOs、Hadoop安装配置

前言:这里很抱歉前几期考研专题以及PyTorch这些内容都没有更新,并不是没有在学了,而是事太鸡儿多了,前不久刚刚打完华为开发者比赛,然后有紧接着高数比赛、考研复习,因此这些后续文章都在草稿状态中&#x…

Allegro在PCB上开槽的三种方法操作指导

Allegro如何在PCB上开槽的三种方法操作指导 当PCB有特殊设计要求的时候,需要在PCB上开槽,Allegro支持在PCB上开槽操作,具体操作如下 以下图为例,需要在这个板框中间开槽 开方形槽 选择shape add rect命令 画在Board Geometry-o…

【技术详解】SpringMVC框架全面解析:从入门到精通(SpringMVC)

文章目录 【技术详解】SpringMVC框架全面解析:从入门到精通(SpringMVC)SpringMVC概述1. 三层架构与MVC架构区别1.1 三层架构1.2 MVC架构1.3前后端分离开发模式 2. SpringMVC环境搭建2.1 注解启动方式2.2 xml启动方式2.3 SpringMVC PostMan工具使用 3. SpringMVC 请求…

MySQL 实验1:Windows 环境下 MySQL5.5 安装与配置

MySQL 实验1:Windows 环境下 MySQL5.5 安装与配置 目录 MySQL 实验1:Windows 环境下 MySQL5.5 安装与配置一、MySQL 软件的下载二、安装 MySQL三、配置 MySQL1、配置环境变量2、安装并启动 MySQL 服务3、设置 MySQL 字符集4、为 root 用户设置登录密码 一…

【华为欧拉】国产OpenEuler服务器系统安装以及图形界面

openEuler下载 | openEuler ISO镜像 | openEuler社区官网 下载安装iso 本次选择4G的社区版本 安装,复制到光盘,光盘引导安装。虚拟机安装,准备好iso文件引用,指定好安装源,安装界面和centOS基本一样。选择最小安装就…