SSD主控

news2024/11/13 9:05:10

《深入浅出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)

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

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

相关文章

2024中国人民大学计算机考研分析

24计算机考研|上岸指南 中国人民大学 中国人民大学计算机考研招生学院是信息学院。目前均已出拟录取名单。 中国人民大学在1978年创立了经济信息管理系,它是国内最早建立的将数学与信息技术在经济管理领域应用为特色的系科。1986年,在原系计算站的基础…

[计算机网络]网络层概述

呼,写了这么久终于重新开始啦! 自己落下了太多东西了.....是时候应该重新拾掇起来了. 关于后面的代码项目,我的想法是vilas.js仍然使用js来进行编写,但是后续其他的项目会开始尝试使用ts来进行书写了. 就算是前端也需要点规范吧..... 0.写在前面 这篇文章要和大家道个歉,首…

Flutter 使用 device_info_plus 遇到的问题

问题:引用device_info_plus 插件出现了异常,不知道为啥打开项目的时候就不能用了。 解决:改了版本解决 Target of URI doesnt exist: package:device_info_plus/device_info_plus.dart. (Documentation) Try creating the file reference…

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

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

【数据结构(三)】单向环形链表和约瑟夫问题(3)

文章目录 1. 单向环形链表应用场景2. 思路分析3. 代码实现3.1. 实现单向环形链表3.2. 产生出队编号序列3.2.1. 思路分析3.2.2. 代码实现 1. 单向环形链表应用场景 Josephu(约瑟夫、约瑟夫环) 问题: 设编号为 1,2,… n 的 n 个人围坐一圈&…

电容的耐压值是什么意思呢?

电容是什么? 电容是一种能以电荷的形式储存能量的装置。与同样大小的电池相比,电容能储存的能量要小得多,大约1w个电容存储的能量才顶一节电池存储的能量,但对于许多电路设计来说却足够使用了。 看下图的直插式电容,…

【推荐】智元兔AI:一款集写作、问答、绘画于一体的全能工具!

在当今技术飞速发展的时代,越来越多的领域开始应用人工智能(Artificial Intelligence,简称AI)。其中,AI写作工具备受瞩目,备受推崇。在众多的选择中,智元兔AI是一款在笔者使用过程中非常有帮助的…

FPGA_IIC代码-正点原子 野火 小梅哥 特权同学对比写法(1)

FPGA_IIC代码-正点原子 野火 小梅哥 特权同学对比写法(1) 单字节写时序单字节读时序I2C 控制器设计模块框图scl_high 和 scl_low 产生的时序图状态转移图 Verilog代码 FPGA_IIC代码-正点原子 野火 小梅哥 特权同学对比写法(1) FPG…

[Kettle] 生成记录

在数据统计中,往往要生成固定行数和列数的记录,用于存放统计总数 需求:为方便记录1~12月份商品的销售总额,需要通过生成记录,生成一个月销售总额的数据表,包括商品名称和销售总额两个字段,记录…

pycharm2023 实现鼠标点击某行,调试时代码运行至相应行

按下图取消 Breakpoints Over Line Numbers即可,然后调试时点击某行,代码就会运行至某行

变量命名的规则与规范

变量命名的规则与规范 变量命名的规则不能使用关键字字母须区分大小写由字母、数字、_、$组成,且不能以数字开头 变量命名的规范起名须有一定的意义遵守小驼峰命名法 变量命名的规则 不能使用关键字 在JavaScript中声明变量不能使用JavaScript的常用关键字&#x…

利用AlphaMissense准确预测蛋白质组范围内的错义变体效应

Editor’s summary 蛋白质中单个氨基酸的变化有时影响不大,但通常会导致蛋白质折叠、活性或稳定性方面的问题。只有一小部分变体进行了实验研究,但有大量的生物序列数据适合用作机器学习方法的训练数据。程等人开发了AlphaMissense,这是一种…

STM32 SPI

SPI介绍 SPI是Serial Pepheral interface缩写,串行外围设备接口。 SPI接口是一种高速的全双工同步通信总线,已经广泛应用在众多MCU、存储芯片、AD转换器和LCD之间。大部分STM32有3个SPI接口,本实验使用的是SPI1。 SPI同一时刻既能发送数据&…

【23真题】很少见!第6题有点新颖!

今天分享的是23年太原理工大学801的信号与系统试题及解析。 本套试卷难度分析:该学校考察数字电路和信号与系统两部分,数字电路我没有知道,所以不知道难度。但是从信号部分来看,考察的知识点非常常见,对信号时域和频域…

建设城市排水管网监测系统的作用及功能说明

排水管网是由管道、井盖、降水口等组成的系统,用于将城市和建筑物内的污水和降水排放到污水处理厂或主干管道中。排水管网通常包括雨水管网和污水管网两部分。雨水管网用于收集雨水、路面洒水和冷却水等,而污水管网则负责收集排放到厕所、洗涤或过程中产…

Vue3 常用组件

一、Fragment组件 Vue2 的template 模板中必须要有一个根标签,而我们在Vue3 的模板中不需要使用根标签就能渲染,因为Vue3 在内部会将多个标签包含在一个Fragment 虚拟元素中。 好处就在于可以减少标签的层级,减小内存占用。 二、Teleport组…

23.11.19日总结(vue2和vue3的区别,项目中期总结)

经过昨天的中期答辩,其实可以看出来项目进度太慢了,现在是第十周,预计第十四周是终级答辩,在这段时间要把项目写完。 前端要加上一个未登录的拦截器,后端加上全局的异常处理。对于饿了么项目的商品建表,之前…

Java code auditing

1) FindBugs Checkstyle PMD 2) OWASP ZAP Burp Suite (XSS漏洞) 3) SQL注入

【ROS】RViz2源码分析(三):核心类VisualizerApp

【ROS】郭老二博文之:ROS目录 1、简述 VisualizerApp包含了三个主要的功能: QApplication:程序中主要调用app_->processEvents()来处理刷新界面,处理闪屏VisualizationFrame:窗口类都在此;RosClientAbstractionIface包含rclcpp::Node:代表ROS节点2、VisualizationF…

设计模式-迭代器模式-笔记

动机(Motivaton) 在软件构建过程中,集合对象内部结构常常变化各异。但对于这些集合对象,我们呢希望在不暴露其内部结构的同时,可以让外部客户代码透明地访问其中包含的元素;同时这种“透明遍历”也为“同一…