NVMe前世今生

NVMe前世今生

  • 1 NVMe的由来
  • 2 NVMe工作原理
  • 3 NVMe优点
  • 4 NVMe适用场景

本文属于《 NVMe协议基础系列教程》之一,欢迎查看其它文章。

1 NVMe的由来

目前机械硬盘大多数使用 SATA (Serial ATA Advanced Host Controller Interface) 接口,接口协议为 AHCI,是 Intel 联合多家公司研发的系统接口标准。AHCI 最大队列深度为 32,即主机最多可以发 32 条命令给 HDD 或 SSD 执行,在 HDD 时代整个性能瓶颈在硬盘端,而不是接口和协议端,所以 AHCI 可以很好的匹配 HDD。

但随着 SSD 硬盘技术的不断演进,使得底层闪存带宽越来越高,介质访问延迟越来越低,系统瓶颈已经由下转移到了上面的接口和协议端。这时你会发现 SATA 接口的 SSD 性能都不会超过 600MB/s,你会认为是底层闪存带宽不够,但其实是 SATA 接口速度限制了带宽。因为 SATA 3.0 最高带宽就是 600MB/s。

此时,AHCI 和 SATA 已经不再满足高性能和低延迟的 SSD 的需求了,如果要充分释放 SSD 性能,那么就要设计新的协议和接口了。
在这里插入图片描述

在这样的背景下,2009 年下半年,Intel 、镁光、三星等厂商,一同制定了专门为 SSD 服务的 NVMe 协议,来取代 AHCI,从此 NVMe 应运而生。
在这里插入图片描述

2019.6.10,发布NVMe 1.4
2021.6.3, 发布NVMe 2.0
NVMe官网:https://nvmexpress.org/specifications/

2 NVMe工作原理

NVMe的全称是Non-Volatile Memory Express,即非易失性存储器标准,是在 PCIe 接口之上的协议标准,在协议栈中隶属高层(相当于通讯协议中的应用层)。如下图所示:
在这里插入图片描述
NVMe的工作原理是基于PCle总线的,因此它可以利用PCIe的高速通道进行数据传输。
NVMe通过命令队列的方式来完成I/O操作,每个命令队列都可以包含多个I/O命令,这些命令可以并发执行,从而提高数据传输的效率。
NVMe还采用了一种称为“轮询方式”的通信协议,即它不需要中断来通知主机处理器已经完成了某个任务。相反,主机处理器可以根据需要,不断地轮询设备状态,从而实现更高的吞叶量和更低的延迟。

NVMe 针对 PCIe SSD 特点而设计,相比传统 AHCI 标准,NVMe 标准可以带来多方面的性能提升,可以说 NVMe 就是为了 SSD 而生的。刚才我们提到了 AHCI、SATA、NVMe、PCIe,接下来,我们通过一张层次图来理解他们之间的关系和职责。
在这里插入图片描述

3 NVMe优点

上面我们提到了 NVMe 是一种 Host 与 SSD 之间通信的协议,在整个协议栈中处于应用层的位置。NVMe相当于指挥官发送命令至下层去执行,即PCIe,它所制定的任何命令,都由 PCIe 去完成。虽然 AHCI 也可以和 PCI 搭档,但 AHCI 只有一个命令队列,最多同时只能发 32 条命令,根本驾驭不了 PCIe。而 NVMe 主要是面向 PCIe SSD 开发的一套接口标准,定义了系统接口和命令集,其目的就是让性能更好,延迟更低,功耗更低,所以目前 NVMe 和 PCIe 匹配无疑是最完美的。
在这里插入图片描述
相对于传统的存储技术,NVMe具有以下优点:

  1. 更快的数据传输速度:NVMe可以利用PCIe的高速通道进行数据传输,从而实现更高的带宽和更快的响应速度。这对于需要进行大量数据处理的应用程序来说非常重要。
  2. 更高的I/O操作效率:NVMe采用了命令队列的方式来完成I/O操作,从而可以并发执行多个命令,提高I/O操作的效率。这对于需要处理大量I/O操作的应用程序来说非常重要。
  3. 更少的CPU占用率:NVMe可以通过轮询方式来通信,从而不需要中断来通知主机处理器已经完成了某个任务。这可以减少CPU的占用率,从而提高系统的整体性能。
  4. 更高的可靠性:NVMe采用了一些数据保护机制,例如CRC校验、错误纠正码和端到端数据保护等,可以保证数据的完整性和安全性。

4 NVMe适用场景

NVMe适用于需要快速访问大量数据的应用程序,例如高性能计算、大数据分析、人工智能等。此外,NVMe还适用于需要进行大量I/O操作的应用程序,例如数据库、虚拟化、云计算等。


参考链接:

  • 《NVMe协议基础》
  • 《什么是NVMe?一篇文章理清它的前生今世》
  • 《为什么 SSD 需要 NVMe》

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

鸿蒙-arkTs:开发工具安装

编辑器下载:官网下载地址https://developer.harmonyos.com/cn/develop/deveco-studio/#download 以该版本为例,下载自己电脑对应的系统版本即可; 后续编辑器中的SDK,模拟器等,逐步安装即可; 汉化 编辑器左…

arcgis javascript api4.x加载天地图cgs2000坐标系

需求&#xff1a;arcgis javascript api4.x加载天地图cgs2000坐标系 效果&#xff1a; 示例代码&#xff1a; <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"wid…

C# 实时存储16进制数据,写入文件格式为Raw

1.示例代码 private void button1_Click(object sender, EventArgs e){byte[] data { 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28 }; //模拟要写入的数组List<byte[]> listBytes new List<byte[]>();listBytes.Add(data); //数组转集合RecData(listBytes);…

TensorRT 简单介绍

一、TensorRT 对于算法工程师来说&#xff0c;相信大家已经对TensorRT耳熟能详了&#xff0c;那么这个TensorRT是什么呢&#xff1f; 其实&#xff0c;TensorRT是一个可以在NVIDIA各种GPU硬件平台下运行的推理引擎&#xff0c;同时也是一个高性能的深度学习推理优化器&#x…

自动化测试工具-Selenium:最详细的安装教程

Selenium是一款很不错的自动化测试工具&#xff0c;本文章将按照官方网站的教程进行Selenium的安装&#xff0c;安装之前&#xff0c;首先你要确定你的电脑已配置好Python的环境&#xff0c;没有的话可以参考该文章进行安装&#xff1a;Python纯净式下载与安装-CSDN博客 1. Se…

使用 React 实现自定义数据展示日历组件

目录 背景实现日历组件父组件数据 效果最后 背景 项目中需要实现一个日历组件&#xff0c;并且需要展示月&#xff0c;日所对应的数据&#xff08;因为项目需求问题&#xff0c;就不统计年数据总量&#xff09;。网上找了一堆&#xff0c;基本都不大符合项目需求&#xff0c;且…

PDF转为图片

PDF转为图片 背景pdf展示目标效果 发展过程最终解决方案&#xff1a;python PDF转图片pdf2image注意&#xff1a;poppler 安装 背景 最近接了一项目&#xff0c;主要的需求就是本地的文联单位&#xff0c;需要做一个电子刊物阅览的网站&#xff0c;将民族的刊物发布到网站上供…

Zero date value prohibited 异常处理

项目场景&#xff1a; 在项目中&#xff0c;我们会时常遇到数据查询&#xff0c;今天在对数据进行查询的时候&#xff0c;遇到一个之前闻所未闻的异常&#xff0c;所以记录下来&#xff0c;分享给大家。 问题描述 查询数据为datetime类型的数据时&#xff0c;发现该字段的值为…

Windows 安装RocketMQ

1.rocketmq下载 https://archive.apache.org/dist/rocketmq/5.1.4/ 2.环境准备 64位JDK 1.8; Maven 3.2.x; 64位操作系统系统&#xff0c;本文档在Windows上安装 3.解压到一个无中文无空格的目录下&#xff0c;解压后目录如下&#xff1a; 配置环境变量 4.更改配置 java的…

系列八、约束

一、约束 1.1、概述 约束是作用于表中字段上的规则&#xff0c;用于限制存储在表中的数据&#xff0c;通过这种规则&#xff0c;可以保证数据库中数据的正确性、有效性和完整性。 1.2、分类 1.3、注意事项 约束是作用于表中字段上的&#xff0c;可以在创建表/修改表的时候添加…

5. Prism系列之区域管理器

Prism系列之区域管理器 文章目录 Prism系列之区域管理器一、区域管理器二、区域创建与视图的注入1. ViewDiscovery2. ViewInjection 三、激活与失效视图1. Activate和Deactivate2. 监控视图激活状态3. Add和Remove 四、自定义区域适配器1. 创建自定义适配器2. 注册映射3. 创建区…

showdoc使用

使用 通过上篇文章安装得到的访问地址&#xff0c;可以登陆到h5页面中 点击客户端&#xff0c;进入到页面 下载完成之后&#xff0c;注册账号&#xff0c;选择自己的私域地址&#xff08;http://服务器IP:4999&#xff09;之后&#xff0c;就可以开始团队协作了