NVMe前世今生

news2024/10/5 21:23:00

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.coloradmin.cn/o/1321922.html

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

相关文章

C++报错:error C2238: 意外的标记位于“;”之前

报错信息如下: 编译遇见这样的错误信息主要有一下几种: 情况一: 多数情况下出现这种问题的原因是因为头文件重复包含:即头文件A包含了B,头文件B又包含了A,导致编译器在加载头文件时陷入死循环。 解决办法…

Spring核心原理理解与总结

Spring 核心原理理解与总结 Spring 基础 什么是 Spring 框架? Spring 是一款开源的轻量级 Java 开发框架,旨在提高开发人员的开发效率以及系统的可维护性。开箱即用。 一般说 Spring 框架指的都是 Spring Framework 核心功能主要是 IoC 和 AOP。 Sp…

python与机器学习2,激活函数

目录 1 什么是激活函数? activation function 1.1 阈值 1.2 激活函数a(x) ,包含偏置值θ 1.3 激活函数a(x) ,包含偏置值b 2 激活函数1: 单位阶跃函数 2.1 函数形式 2.2 函数图形 2.3 函数特点 2.4 代码实现这个 单位阶跃函数 3 激活…

羊大师提示,把工作和生活分开轻松拥有幸福人生

羊大师提示,把工作和生活分开轻松拥有幸福人生 工作对于每个人来说是必不可少的一部分,但是在忙碌的工作中也不能忘记了生活的美好。如何平衡好工作和生活,成为了许多人追求的目标。 我们都知道,工作和生活之间的平衡是非常重要…

【CSDN】CSDN 的简单使用与常用快捷键

【CSDN】CSDN 的简单使用与常用快捷键 1)目录2)标题3)代码块4)黑点标题5)字体5.1.加粗5.2.标记5.3.颜色 6)图片6.1.居中6.2.左对齐6.3.右对齐6.5.图片大小调整 1)目录 创建标题目录快捷键&…

PFA微柱实验用同位素离子交换柱耐强酸碱

PFA同位素离子交换柱是一种常用于分离和富集同位素的柱子。离子交换柱的工作原理是通过固定的离子交换基质,将目标同位素离子与其他离子相互交换,从而实现分离的目的。 PFA同位素离子交换柱用于同位素的分析和测量。在样品中,不同同位素的离子…

hive企业级调优策略之小文件合并

测试所用到的数据参考: 原文链接:https://blog.csdn.net/m0_52606060/article/details/135080511 本教程的计算环境为Hive on MR。计算资源的调整主要包括Yarn和MR。 优化说明 小文件合并优化,分为两个方面,分别是Map端输入的小…

C/C++编程:令人印象深刻的高级技巧案例

C/C编程语言在软件开发领域有着悠久的历史,由于其高效、灵活和底层访问能力,至今仍然被广泛应用。本文将介绍一些在C/C编程中令人印象深刻的高级技巧,帮助读者提升编程水平,更加高效地使用这两种强大的编程语言。 一、指针运算与…

针对企业的泄密,天锐绿盾提出十大解决方案

01 防止公司内部数据泄密 通过动态加解密技术,有效防止公司内部数据泄密。即员工在创建、编辑文档时会被自动加密存放在硬盘上,防止员工故意或由于疏忽而造成泄密或对文件恶意破坏。 管理思路>> ● 不改变员工使用习惯、不改变文件格式、不改变…

vite与webpack?

vite对比react-areate-app 1、构建速度 2、打包速度 3、打包文件体积

html行内元素和块级元素的区别?

HTML中的元素可以分为两种类型:行内元素(inline)和块级元素(block) 文章目录 什么是行内元素什么是块级元素元素转换行内元素转块级元素块级元素转行内元素 区别总结 什么是行内元素 HTML的行内元素(inli…

MATLAB - Gazebo 仿真环境

系列文章目录 前言 机器人系统工具箱(Robotics System Toolbox™)为使用 Gazebo 模拟器可视化的模拟环境提供了一个界面。通过 Gazebo,您可以在真实模拟的物理场景中使用机器人进行测试和实验,并获得高质量的图形。 Gazebo 可在…

promise:一文理解promise常用的方法

目录 第一章 介绍promise 1.1 简介 1.2 什么是地域回调 第二章 promise理论 2.1 promise的状态 2.2 promise对象的值 2.3 promise构造函数 2.4 Promise.resolve()与Promise.reject() 2.5 promise常用的几种方法 2.5.1 Promise.all(promises) 2.5.2 Promise.race(pr…

Elasticsearch的使用总结

Elasticsearch 是一个分布式、高扩展、高实时的搜索与数据分析引擎。它能很方便的使大量数据具有搜索、分析和探索的能力。 put/post请求:http://localhost:9200/索引库名称 {"settings":{"index":{"number_of_shards":1, # 分片数量…

HQL的其他优化

CBO优化 CBO是指Cost based Optimizer,即基于计算成本的优化。 在Hive中,计算成本模型考虑到了:数据的行数、CPU、本地IO、HDFS IO、网络IO等方面。Hive会计算同一SQL语句的不同执行计划的计算成本,并选出成本最低的执行计划。目前…

在Java中高效使用Lambda表达式和流(Streams)的技巧

Java中如何高效使用Lambda表达式和流(Streams)的技巧 1. 简介 在Java中,Lambda表达式和流(Streams)是Java 8引入的两个强大的特性。Lambda表达式为Java添加了一种简洁的方式来实现函数式编程,而流提供了一…

056:vue工具 --- CSS在线格式化

第056个 查看专栏目录: VUE ------ element UI 专栏目标 在vue和element UI联合技术栈的操控下,本专栏提供行之有效的源代码示例和信息点介绍,做到灵活运用。 (1)提供vue2的一些基本操作:安装、引用,模板使…

【Unity 实用工具篇】✨| I2 Localization 实现本地化及多种语言切换,快速上手

前言【Unity 实用工具篇】| I2 Localization 实现本地化及多种语言切换,快速上手一、多语言本地化插件 I2 Localization1.1 介绍1.2 效果展示1.3 使用说明及下载二、插件资源简单介绍三、通过示例快速上手3.1 添加 Languages语种3.2 添加 Term资源3.3 静

如何确保对称密钥管理的存储安全?

确保对称密钥管理的存储安全是保障信息安全的重要一环。以下是一些建议,以确保对称密钥管理的存储安全: 使用安全存储设备:选择使用经过验证的安全存储设备来存储对称密钥。这些设备通常具有高度的物理安全性,可以防止未经授权的访…

【CLion】使用CLion开发STM32

本文主要记录使用CLion开发STM32,并调试相关功能 使用的CLion版本:2023.3.1 CLion嵌入式配置教程:STM32CubeMX项目 |CLion 文档 (jetbrains.com) OpenOCD官网下载:Download OpenOCD for Windows (gnutoolchains.com) GNU ARM工…