当前位置: 首页 > article >正文

NVMe 2.3协议学习

文章目录1 Controller Properties1.1 如何访问1.2 Controller 初始化流程1.3 CAP - Controller Capabilities (Offset 00h, 64-bit)X 面试场景问题1 为什么Properties Host必须通过BAR访问不能通过DMA2 如果Host按dword访问qword的CAP会怎样3 CC.EN从1→0关闭Controller时CSTS.RDY多久变04 IO SQ/CQ的创建细节1 Controller PropertiesNVMe 协议章节 3.1.4 Controller PropertiesController Properties如CAP、CC、CSTS 这些关键的寄存器和SSD Controller初始化流程相关。画出初始化状态机流程图FTL关注点Controller Properties如CAP、CC、CSTS通常通过PCIe BAR空间访问必须按指定宽度dword/qword访问跨Property访问不支持这意味着如果你要读取64-bit的CAPController Capabilities必须一次性读qword不能分两次读dword1.1 如何访问层级存储位置说明PCIe BAR空间SSD控制器内部的寄存器Registers物理上在SSD主控芯片内Host视角映射到Host内存地址空间的MMIO区域Host通过内存读写访问Host CPU → PCIe TLP (Memory Read/Write) → SSD Controller BAR → 内部寄存器关键Host看到的内存地址 PCIe配置空间分配的BAR基地址 Property Offset1.2 Controller 初始化流程Host要把SSD(Controller) 初始化好让Controller能够开始接收命令完整的Host初始化Controller的流程状态机如下┌─────────────────┐ │1.读取CAP │ ← 确认Controller能力 │(Offset00h)│ └────────┬────────┘ ▼ ┌─────────────────┐ │2.配置CC │ ← 设置Command Set,Page Size │(Offset14h)│ 但不Enable(EN0)└────────┬────────┘ ▼ ┌─────────────────┐ │3.配置AQA │ ← Admin Queue深度 │(Offset24h)│ └────────┬────────┘ ▼ ┌─────────────────┐ │4.配置ASQ │ ← Admin SQ基址(64-bit)│(Offset28h)│ └────────┬────────┘ ▼ ┌─────────────────┐ │5.配置ACQ │ ← Admin CQ基址(64-bit)│(Offset30h)│ └────────┬────────┘ ▼ ┌─────────────────┐ │6.写CC.EN1│ ← Enable Controller │(Offset14h)│ └────────┬────────┘ ▼ ┌─────────────────┐ │7.轮询CSTS │ ← Host轮询寄存器等待RDY1│(Offset1Ch)│ 检查CFS0└────────┬────────┘ ▼ ┌─────────────────┐ │8.Identify │ ← 发送Admin命令 │ Controller │ 获取设备信息 └────────┬────────┘ ▼ ┌─────────────────┐ │9.Create I/O │ ← Host发送 创建I/O Queue 请求 │ Queues │ └────────┬────────┘ ▼ ┌─────────────────┐ │10.开始I/O │ ← 发送Read/Write命令 └─────────────────┘FTL需关注的Properties如下关注点为什么重要CAP.MPS决定PRP List结构影响数据传输效率CAP.MQES决定Queue深度影响并发I/O性能CC.MPS配置必须与Host内存页大小匹配CSTS.RDY轮询超时处理防止初始化死锁Doorbell机制Tail Doorbell通知有新命令Head Doorbell通知已取走完成1.3 CAP - Controller Capabilities (Offset 00h, 64-bit)CAP是只读寄存器字段位作用FTL关注点MQES15:00Max Queue Entries Supported决定SQ/CQ最大深度0-basedCQR16Contiguous Queues Required1必须用物理连续队列AMS18:17Arbitration Mechanism Supported0Round Robin, 1Weighted RRTO23:20Timeout500ms × (TO1)初始化超时计算DSTRD31:24Doorbell Stride每个Doorbell寄存器间距 4 DSTRDNSSRS33NVM Subsystem Reset Supported是否支持NSSRCSS44:37Command Sets Supported支持哪些I/O Command SetMPSMAX/MPSMIN52:32Memory Page Size Max/Min决定PRP/SGL页大小X 面试场景问题1 为什么Properties Host必须通过BAR访问不能通过DMAProperties是控制器状态/配置寄存器需要CPU直接访问低延迟。DMA用于数据传输高吞吐。BAR映射到MMIO空间CPU可用普通load/store指令访问。2 如果Host按dword访问qword的CAP会怎样未定义行为。Spec要求必须按定义宽度访问。实际可能导致读取错误值或触发错误。3 CC.EN从1→0关闭Controller时CSTS.RDY多久变0取决于CAP.TO定义的Timeout。Host必须轮询等待或超时后强制Reset。[疑问CC.EN从1→0 该行为意味着什么Controller内部做什么后会把RDY置为0]4 IO SQ/CQ的创建细节在Controller 准备就绪后Host会给Controller发消息来创建 IO SQ/CQ。创建SQ/CQ的 队列数量 和 深度如何确定的Host会通过Identify命令来获取Controller 支持的 队列数量上限。Host会通过Set Features的Number Of Queues 属性来向Controller传递想要的 IO SQ/CQ 数量。Number Of Queues 是 SSD的一个FeatureNSQ (Number of Submission Queues)主机希望创建的I/O提交队列数量0值表示1个队列。NCQ (Number of Completion Queues)主机希望创建的I/O完成队列数量0值表示1个队列。控制器收到请求后会评估自己的能力。它不一定能满足Host的所有请求可能会返回一个它实际能支持的、接近请求值的数量。这个协商结果会通过Set Features命令的完成队列条目返回给Host。之后Host会读出该结果作为实际分配数量的参考。获得最终数量后Host便开始按这个参考结果进行实际的队列创建操作主要有两种Admin命令Create I/O Completion Queue命令用于逐个创建I/O CQ。命令参数包括指定CQ ID (qid) 和大小 (qsize) 等。Create I/O Submission Queue命令用于逐个创建I/O SQ。创建时需指定归属的CQ ID实现多SQ对一CQ的关联。典型协商流程初始匹配阶段主机首次写入 Set Features (FID07h)假设要申请 NCQ63 和NSQ63。若控制器最大支持32个I/O队列0-based返回31协商后主机会读取 Result 值 Result (31 16) | 31 (即0x001F001F)。逐个创建阶段最终按 31 的返回值通过 Create I/O Completion Queue 和 Create I/OSubmission Queue 命令逐个创建这些队列。

相关文章:

NVMe 2.3协议学习

文章目录1 Controller Properties1.1 如何访问1.2 Controller 初始化流程1.3 CAP - Controller Capabilities (Offset 00h, 64-bit)X 面试场景问题1 为什么Properties Host必须通过BAR访问,不能通过DMA?2 如果Host按dword访问qword的CAP会怎样&#xff1…...

深度学习篇---匈牙利算法与OC-SORT

匈牙利算法与OC-SORT,一个是解决“最优匹配”的经典运筹学方法,另一个是赋予其动态场景“感知”能力的现代多目标跟踪框架。两者结合,解决了一个核心问题:如何跨时间,将不同的“点”最合理地关联起来。🤝 匈…...

如何永久备份微信聊天记录?WeChatMsg让你的珍贵对话永不丢失

如何永久备份微信聊天记录?WeChatMsg让你的珍贵对话永不丢失 【免费下载链接】WeChatMsg 提取微信聊天记录,将其导出成HTML、Word、CSV文档永久保存,对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_Trending/we…...

c语言的练习—二维数组的练习(对称矩阵的判定)

对于此道题,所谓对称矩阵,意思就是关于左对角线对称的数字对应相等。那么我们不妨使用我上一次发表的文章的方法来进行规律的寻找。我们不妨使用题目中的第一个例子来举例接下来我以图片的方式呈现出来显然的,我们能够发现这两个三的位置和两…...

智慧树刷课插件终极指南:3分钟实现学习自动化,效率提升300% ⚡

智慧树刷课插件终极指南:3分钟实现学习自动化,效率提升300% ⚡ 【免费下载链接】zhihuishu 智慧树刷课插件,自动播放下一集、1.5倍速度、无声 项目地址: https://gitcode.com/gh_mirrors/zh/zhihuishu 还在为智慧树平台繁琐的视频学习…...

3分钟掌握ncmdump:网易云音乐NCM文件终极转换指南

3分钟掌握ncmdump:网易云音乐NCM文件终极转换指南 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他设备播放而烦恼吗?ncmdump是一款简单实用的NCM文件转换工具&am…...

【2026最新收藏版】AI Agent详解:从入门到实战,小白程序员必看的大模型智能体学习指南

本文专为2026年想要入门大模型、深耕AI Agent的小白和程序员打造,深入浅出拆解AI智能体的核心概念,清晰区分其与传统软件的本质差异,详解智能体四大关键特征(自主性、反应性、主动性、社交能力),拆解智能体…...

超越基础教程:用VPI+Matlab实现高阶QAM相干光通信系统的DSP算法实战

超越基础教程:用VPIMatlab实现高阶QAM相干光通信系统的DSP算法实战 在光通信领域,高阶QAM(正交幅度调制)技术因其高频谱效率而备受关注。然而,随着调制阶数的提升,系统对信号处理算法的要求也呈指数级增长。…...

GitHub中文界面终极汉化指南:3分钟告别英文困扰,提升30%开发效率

GitHub中文界面终极汉化指南:3分钟告别英文困扰,提升30%开发效率 【免费下载链接】github-chinese GitHub 汉化插件,GitHub 中文化界面。 (GitHub Translation To Chinese) 项目地址: https://gitcode.com/gh_mirrors/gi/github-chinese …...

AzurLaneAutoScript:解放双手的碧蓝航线智能管家

AzurLaneAutoScript:解放双手的碧蓝航线智能管家 【免费下载链接】AzurLaneAutoScript Azur Lane bot (CN/EN/JP/TW) 碧蓝航线脚本 | 无缝委托科研,全自动大世界 项目地址: https://gitcode.com/gh_mirrors/az/AzurLaneAutoScript 还在为碧蓝航线…...

终极B站视频下载指南:DownKyi免费工具的完整使用教程

终极B站视频下载指南:DownKyi免费工具的完整使用教程 【免费下载链接】downkyi 哔哩下载姬downkyi,哔哩哔哩网站视频下载工具,支持批量下载,支持8K、HDR、杜比视界,提供工具箱(音视频提取、去水印等&#x…...

为什么你的AI Sandbox永远“半隔离”?——深度拆解Linux命名空间缺陷、GPU共享陷阱与3种绕过检测的隐蔽行为

更多请点击: https://intelliparadigm.com 第一章:为什么你的AI Sandbox永远“半隔离”?——深度拆解Linux命名空间缺陷、GPU共享陷阱与3种绕过检测的隐蔽行为 Linux 命名空间(namespaces)常被误认为是强隔离基石&…...

精美UI的单页网盘资源分享搜索页面 短剧搜索 自适应页面

内容目录一、详细介绍二、效果展示1.部分代码2.效果图展示一、详细介绍 单页网盘资源搜索,需要的同学进来看看。 电脑可以使用浏览器打开 手机可以用其他应用浏览器打开,打开即可使用。 源码为单html,可以随意进行使用,放本地浏…...

视觉语言导航技术:挑战、方案与SeeNav-Agent框架解析

1. 视觉语言导航的核心挑战与现有方案局限视觉语言导航(Vision-Language Navigation, VLN)作为多模态具身智能的关键任务,要求智能体根据自然语言指令在三维环境中完成导航。这项技术在实际应用中面临三大核心挑战:1.1 感知层面的…...

2.4 静态链表

#include <stdio.h> #include <malloc.h>// 默认链表容量 #define DEFAULT_SIZE 5typedef struct StaticLinkedNode{char data;int next; } *NodePtr;typedef struct StaticLinkedList{NodePtr nodes;int* used; } *ListPtr;/*** 初始化静态链表&#xff08;带头节…...

支付宝上线AI付,让众多“龙虾”实现收钱,详细开通步骤

大家好&#xff0c;我是小悟。 支付宝给“龙虾”装上了AI付功能。“龙虾”火到现在&#xff0c;应该都知道是啥&#xff0c;业内对OpenClaw这类AI智能体的称呼。它们能像真人一样帮你查资料、订机票、甚至购物下单。 现在&#xff0c;这些智能体连收钱都能自己搞定了。以前用AI…...

测试说明文章

测试测试测试...

不止于分配IP:用Ubuntu DHCP服务器玩转Option 43和IPv6,搞定特殊设备自动发现

不止于分配IP&#xff1a;用Ubuntu DHCP服务器玩转Option 43和IPv6&#xff0c;搞定特殊设备自动发现 当你以为DHCP只是用来分配IP地址的工具时&#xff0c;其实它隐藏着更多可能性。想象一下这样的场景&#xff1a;新接入网络的无线控制器能够自动获取配置参数&#xff0c;IPv…...

商品结构需要重排跨境卖家如何选择先优化哪一类

破局与深耕&#xff1a;跨境卖家商品结构的战略优化之道在跨境电商的竞技场上&#xff0c;卖家时常会面临一个核心挑战&#xff1a;当店铺商品结构逐渐庞杂&#xff0c;流量分散&#xff0c;利润增长乏力时&#xff0c;如何从琳琅满目的商品库中&#xff0c;精准定位出需要优先…...

ERC PATHCHK案例分享

本文跟大家分享一下ERC(electrical rule checking)检查时的一个小案例。 ERC默认会检查gate是否连接power & ground。如果gate并未同时连接VDD和VSS,那么erc就会报如下图所示violation。 如下图所示,可以发现后一级的gate会连接在前一级mos管的drain(分别是pmos和nmo…...

VBA-JSON 指南:在Office中轻松处理JSON数据

VBA-JSON 指南&#xff1a;在Office中轻松处理JSON数据 【免费下载链接】VBA-JSON JSON conversion and parsing for VBA 项目地址: https://gitcode.com/gh_mirrors/vb/VBA-JSON 你是否曾经需要在Excel或Access中处理Web API返回的数据&#xff1f;或者想要将Office数据…...

科技中介机构如何快速搭建专业的数智化服务系统?

观点作者&#xff1a;科易网-国家科技成果转化&#xff08;厦门&#xff09;示范基地一、现状概述&#xff1a;传统科技中介服务的双重困境 当前&#xff0c;我国科技中介机构在科技成果转化链条中仍面临结构性瓶颈。一方面&#xff0c;约75%的平台仍以“信息发布”为主&#x…...

DLSS Swapper终极指南:3分钟掌握游戏性能优化神器,免费提升帧率与画质

DLSS Swapper终极指南&#xff1a;3分钟掌握游戏性能优化神器&#xff0c;免费提升帧率与画质 【免费下载链接】dlss-swapper 项目地址: https://gitcode.com/GitHub_Trending/dl/dlss-swapper 你是否曾因游戏画面模糊、帧率不稳而烦恼&#xff1f;当游戏开发者迟迟不更…...

别再手动改Word了!用docxtemplater的{{#each}}和{{#if}}语法,5分钟搞定批量合同生成

告别低效办公&#xff1a;用docxtemplater实现合同批量生成的终极指南 每次月底都要加班处理上百份员工合同&#xff1f;手动复制粘贴到眼花缭乱还总出错&#xff1f;作为经历过这种痛苦的企业HR&#xff0c;我发现了一个彻底改变工作方式的工具——docxtemplater。它不仅仅是一…...

8.8k星星!开源的211个专家级Agent,一键接入,一个人就是一个团队

正文开始前先简单聊聊skill。 现在大家都在用Agent&#xff0c;所以skill肯定是必要的&#xff0c;因为你也不想每次都写一大堆的提示词。 一个好用的skill&#xff0c;自己去从头写也挺费劲的&#xff0c;所以我一般想要用什么skill就现搜一个&#xff0c;再改改。 但是skill绝…...

如何高效捕获网页媒体资源?3步掌握猫抓浏览器扩展实用技巧

如何高效捕获网页媒体资源&#xff1f;3步掌握猫抓浏览器扩展实用技巧 【免费下载链接】cat-catch 猫抓 浏览器资源嗅探扩展 / cat-catch Browser Resource Sniffing Extension 项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch 还在为无法保存网页上的视频…...

2026 数字孪生空间智能服务商 TOP10 综合实力榜单

评价维度&#xff1a;技术自研度、空间智能深度、全栈能力、标杆案例、市场份额、信创适配&#xff08;满分 100&#xff09; 1. 51WORLD&#xff08;五一视界&#xff0c;6651.HK&#xff09; 评分&#xff1a;95 | 定位&#xff1a;全栈自研的空间智能基础设施服务商 核心技…...

BetterJoy终极指南:5分钟让Switch手柄变身PC游戏利器

BetterJoy终极指南&#xff1a;5分钟让Switch手柄变身PC游戏利器 【免费下载链接】BetterJoy Allows the Nintendo Switch Pro Controller, Joycons and SNES controller to be used with CEMU, Citra, Dolphin, Yuzu and as generic XInput 项目地址: https://gitcode.com/g…...

AI数据分类分级系统赋能金融行业数据治理提质增效

一、概要提示&#xff1a;本文围绕“可用&#xff08;时效性、全链路通用性&#xff09;VS合规”核心理念&#xff0c;结合金融行业数据密集、合规严苛、场景多样的核心特点&#xff0c;系统阐述知源-AI数据分类分级系统的核心逻辑、核心能力、常见疑问及发展方向&#xff0c;全…...

5分钟解锁无限试用:JetBrains IDE Eval Resetter完全指南

5分钟解锁无限试用&#xff1a;JetBrains IDE Eval Resetter完全指南 【免费下载链接】ide-eval-resetter 项目地址: https://gitcode.com/gh_mirrors/id/ide-eval-resetter 还在为IntelliJ IDEA、PyCharm等JetBrains开发工具的试用期到期而烦恼吗&#xff1f;IDE Eval…...