SSD主控

《深入浅出SSD》学习中…


文章目录

  • 《深入浅出SSD》学习中.....
  • 一、SSD主控
  • 二、PCIe和NVMe控制器前端子系统
    • 1.PCIe控制器
    • 2.NVMe控制器


一、SSD主控

就是类似电脑CPU的东西,在SSD中收取处理Host端的命令,管理NAND闪存

二、PCIe和NVMe控制器前端子系统

主要用于处理来自host以及协议接口的命令,对应PCIe协议和NVMe协议(以下Host代表电脑或服务器等外接SSD的设备端)

1.PCIe控制器

决定控制器前端和host之间的带宽,由两种因素决定,一个是协议,一个是通道数
所谓协议就是常听到的PCIe3.0/PCIe4.0 或是 GEN3/GEN4,每种协议对应的通道支持的速率是不一样的。 以PCIe 4.0x4 为例:
理论单通道速率为: 16GT/s ,转换为带宽就是 1969MB/s
x4 代表是4通道,所以速率x4 得到理论带宽为 7.88GB/s
至于转换公式,不做赘述,放个wiki百科上的截图参考:
在这里插入图片描述

2.NVMe控制器

利用PCIe接口实现NVMe相关协议,实现基本的读写等操作
整个过程基于三个概念:
Submission Queue(SQ) :Host把命令放在该队列,这个队列通常在Host内存里。
Completion Queue(CQ):SSD从SQ中取出命令执行完成后,把消息写入该队列,指示命令完成状态,这个队列通常在Host内存里。
Doorbell Register(DB):当主机写了SQ后,再写DB,通知SSD去SQ取命令执行。DB位于SSD控制器内部
交互流程图如下:摘自NVMe over PCIe Transport Specification 1.0b
1,首先Host往自己的SQ内提交命令,写了一个任务计划,准备安排SSD去执行了
2,提交完命令了同时需要让SSD知道,所以又下了DB命令,可以理解为Host敲了SSD的门,告诉他,我来命令啦
3,SSD的NVMe控制器在收到DB后,知道自己又有活干了,就去SQ内取命令。
4,NVMe控制器在取到命令后,把命令给到SSD主控,主控进行相应的命令操作
5,SSD执行完命令后,往主机另一个队列CQ中写入命令执行结果,更新任务进度,记录自己哪条SQ完成了
6,SSD以中断的方式告诉Host,这个命令我完成了。
7,Host响应中断并处理CQ里面完成的命令
8,Host更新自己的记录,标记整个任务完成,画上句号,释放资源

这里还能引入一个概念(待深入理解):

队列大小有16bit,最小队列大小为2个元素(因为满队列的定义方式,所以最小为2个元素),对于I/O队列,最大队列大小为64k;对于Admin队列,最大队列为4
Host利用 QID来标识唯一ID,16bit。host可以修改队列优先级(如果支持的话),共四级,U(Urgent)、H(High Priority)、M(Medium Priority)、L(Low Priority)

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

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

相关文章

“移动机器人课程群实践创新的困境与突围”素材

以下是一篇应用型本科教研论文“移动机器人课程群实践创新的困境与突围”的大纲。您可以根据这个大纲展开您的论文写作: 一、引言 移动机器人技术的发展和应用价值移动机器人课程群在应用型本科教育中的重要性论文目的和研究问题:解析移动机器人课程群实…

每天学习一点点之 Spring Web MVC 之抽象 HandlerInterceptor 实现常用功能(限流、权限等)

背景 这里介绍一下本文的背景(废话,可跳过)。上周有个我们服务的调用方反馈某个接口调用失败率很高,排查了一下,发现是因为这个接口被我之前写的一个限流器给拦截了,随着我们的服务接入了 Sentinel&#x…

外汇天眼:每周都能赢奖金?

最近,有不少外汇天眼的用户询问天眼客服,每周举办的外汇天眼模拟比赛是真的能拿到奖金吗?答案是:是的!表现优秀者可瓜分350美金,如果周周参加,周周获得名次,那这个奖金也是能叠加获得…

NAS层协议栈学习笔记

NAS(Non-Access Stratum)是无线网络中非接入层及包括移动性管理(MM)和会话管理(SM)协议 ,在5G(NR)系统中连接管理(Connection Management)用于建立和释放UE与AMF之间的控制面(CP)信令连接。 5G中移动性管理是通过NAS信令在UE与核心网之间进行交互的,连接…

基于SSM的供电公司安全生产考试系统设计与实现

末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:Vue 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目:是 目录…

AIGC ChatGPT 4 将数据接口文件使用Python进行入库Mysql

数据分析,数据处理的过程,往往将采集到的数据,或者从生产库过来的接口文件,我们都需要进行入库操作。 如下图数据: 将这样的数据接口文件,进行入库,插入到Mysql数据库中。 用Python代码来完成。 ChatGPT4来完成代码输入。 ChatGPT4完整内容如下: 这个任务可以使用`…

牛掰的dd命令,cpi0配合find备份(不会主动备份),od查看

dd if设备1或文件 of设备2或文件 blocknsize countn 还原就是把设备1,2调过来 这里想到dump的还原是命令restore,想起来就写一下,省的总忘记 可以针对整块磁盘进行复制,对于新创建的分区,也不用格式化,可以直接…

Android描边外框stroke边线、rotate旋转、circle圆形图的简洁通用方案,基于Glide与ShapeableImageView,Kotlin

Android描边外框stroke边线、rotate旋转、circle圆形图的简洁通用方案,基于Glide与ShapeableImageView,Kotlin 利用ShapeableImageView专门处理圆形和外框边线的特性,通过Glide加载图片装载到ShapeableImageView。注意,因为要描边…

Burpsuite抓HTTPS证书导入问题

Burpsuite证书导出有两种方法: 第一种方法 1、开启代理后直接在浏览器中输入burp下载CA证书 2、在中间证书颁发机构中导入刚导出的证书 3、导入完成后再把这个证书选择导出,另存为cer格式的文件 4、在受信任的根证书颁发机构中导入刚保存的cer格式证书…

Java Web——JS中的BOM

1. Web API概述 Web API 是指浏览器提供的一套接口,这些接口允许开发人员使用 JavaScript(JS)来操作浏览器功能和页面元素。通过 Web API,开发人员可以与浏览器进行交互,以实现更复杂的功能和效果。 1.1. 初识Web AP…

基于SSM的高校毕业选题管理系统设计与实现

末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:采用JSP技术开发 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目&#x…

渗透测试--实战若依ruoyi框架

免责声明: 文章中涉及的漏洞均已修复,敏感信息均已做打码处理,文章仅做经验分享用途,切勿当真,未授权的攻击属于非法行为!文章中敏感信息均已做多层打马处理。传播、利用本文章所提供的信息而造成的任何直…

什么是Mock?为什么要使用Mock呢?

1、前言 在日常开发过程中,大家经常都会遇到:新需求来了,但是需要跟第三方接口来对接,第三方服务还没好,我们自己的功能设计如何继续呢?这里,给大家推荐一下Mock方案。 2、场景示例 2.1、场景一…

Redis-核心数据结构

五种数据结构 String结构 String结构应用场景 Hash结构 Hash结构应用场景 List结构 List结构应用场景 Set结构 Set结构应用场景 ZSet有序结构 ZSet有序结构应用场景

【十字链表,邻接多重表(无向图的另一种链式存储结构),图的遍历】

文章目录 十字链表邻接多重表(无向图的另一种链式存储结构)图的遍历 十字链表 方便找到入度和出度边。 顶点结点: data:顶点存放的数据域。 firstin:第一个入度边。 firstout:第一个出度边。 弧度结点&am…

Django 入门学习总结6 - 测试

1、介绍自动化测试 测试的主要工作是检查代码的运行情况。测试有全覆盖和部分覆盖。 自动测试表示测试工作由系统自动完成。 在大型系统中,有许多组件有很复杂的交互。一个小的变化可能会带来意想不到的后果 测试能发现问题,并以此解决问题。 测试驱…

ANSYS网格无关性检查

网格精度对应力结果存在很大的影响,有时候可以发现,随着网格精度逐渐提高,所求得的最大应力值逐渐趋于收敛。 默认网格: 从默认网格下计算出的应力云图可以发现,出现了的三处应力奇异点,此时算出的应力值是…

手把手从零开始训练YOLOv8改进项目(官方ultralytics版本)教程

手把手从零开始训练 YOLOv8 改进项目 (Ultralytics版本) 教程,改进 YOLOv8 算法 本文以Windows服务器为例:从零开始使用Windows训练 YOLOv8 算法项目 《芒果 YOLOv8 目标检测算法 改进》 适用于芒果专栏改进 YOLOv8 算法 文章目录 官方 YOLOv8 算法介绍改进网络代码汇总第…

【C++上层应用】2. 预处理器

文章目录 【 1. #define 预处理 】【 2. #ifdef、#if 条件编译 】2.1 #ifdef2.2 #if2.3 实例 【 3. # 和 ## 预处理 】3.1 # 替换预处理3.2 ## 连接预处理 【 4. 预定义宏 】 预处理器是一些指令,指示编译器在实际编译之前所需完成的预处理。 所有的预处理器指令都是…

【Java 进阶篇】Ajax 实现——JQuery 实现方式 `ajax()`

嗨,亲爱的读者们!欢迎来到这篇关于使用 jQuery 中的 ajax() 方法进行 Ajax 请求的博客。在前端开发中,jQuery 提供了简便而强大的工具,其中 ajax() 方法为我们处理异步请求提供了便捷的解决方案。无需手动创建 XMLHttpRequest 对象…