固态硬盘:你懂 PCIE 和 NVME是如何相依相恋?
前言
固态硬盘中的王者,一说非PCIE 莫属,一说非NVME SSD 莫属。 PCIE 和 NVME 因何而生? PCIE 和 NVME 的联系和区别? 本着对 PCIE 和 NVME 的好奇心,本文带您一一分解。
PCIE 和 NVME为何而生?
由于机械硬盘和固态硬盘的工作模式发生巨大变化,原本存储速度瓶颈在硬盘存储速度那,现在固态硬盘存储速度超过了主机和硬盘传输速度。瓶颈卡在接口传输过程中,这不是我们能容忍的。需要一种全新的针对固态的传输层协议,NVMe应运而生,为速度而生,NVME设计是跑在PCI-E通道上的。总之NVMe很强大,像在数据中心,有个NVMe控制器可以充分利用各个服务器自带的硬盘,实现统一编排,共享存储,废盘利用。极大提高数据吞吐能力,极大降低延迟。
PCIE 是什么?
PCIe实际上是通道协议,在物理表现上就是主板上那些PCIe接口。这些通道协议,属于总线协议,能够直接连接CPU,因而几乎没有延时,成为NVMe标准的绝佳伴侣。PCIe还可分为X2/X4/X8。
总线:总线在电脑的主板上,这样理解,固态硬盘这个大仓库在郊外,CPU需要数据,但是内存条容量太小,没有存储,只有从固态硬盘这边调取,总线=运输数据的公路, 固态硬盘送货给CPU和内存需要走的路就是总线。
NVME 是什么?
在AHCI标准时代,受制于协议,几乎无法发挥PCIe的实际性能, 所以一种能配得上PCIE 的传输协议 NVME 顺时而出, 让 PCIE 发挥出性能。
NVMe是一种基于非易失性存储器的读写命令和数据的格式规范, 此规范目的在于充分利用PCI-E通道的低延时以及并行性,还有当代处理器、平台与应用的并行性,在可控制的存储成本下,极大的提升固态硬盘的读写性能,降低由于AHCI接口带来的高延时,彻底解放SATA时代固态硬盘的极致性能。
NVME接口主要属性: 在命令提交或者完成的路径上不需要读取相关寄存器;\n支持最多65535的I/O队列,每个队列支持64K的未处理命令;\n每个队列的优先级拥有明确的仲裁机制;\n为确保高效的IO操作,完成一个4KB读取请求需要的所有信息包含在64B的命令中;\n高效且流线型的指令集;\n支持MSI/MSI-X中断和中断聚合;\n支持多个命名空间;\n支持虚拟化架构,SR-IOV;\n健全的错误报告机制以及功能管理;\n支持多路径IO和命名空间共享
PCIE 和 NVME 的区别
简言之: NVME 是定义读写命令和数据的格式,更偏向软件,在上层是驱动软件,在底层是固件(芯片中软件)。 而 PCIE 是定义链路电路, 电气特性,信号质量, 是硬件协议。
NVMe规范是一个应用层的协议,PCIE规范是一个物理层的协议。NVMe协议通常情况下是跑在PCIe协议栈上的。
我这里好有一比: 总线是公路,这条路又分为两种:SATA总线、PCI-E总线。 SATA总线:“乡村公路”, PCI-E总线:“高速公路”
传输协议是汽车,车又分两种:AHCI 规范和 NVME 规范 AHCI 规范: 小轿车, NVME 规范: 跑车
SATA 和 AHCI 是一对老夫老妻, 走起来慢吞吞。 PCIE 和 NVME 是一对年轻情侣,走起来健步如飞。
扩展阅读:[ 了解SSD分类篇 ]
现状
PCI-E固态硬盘售价高,定位高端,一般出现在土豪玩家的机箱中,或者商用级服务器。
目前SATA和M.2固态硬盘是普通消费者经常接触的。
展望
随着网络带宽的增大,你一定不希望网络传输的数据来不及保存。当存储速度卡住成为瓶颈的时候,大家会需要速度更快的PCIE固态硬盘。 固态硬盘价格会越来越亲民。 PCIE SSD会更加普及。
相关文章
- 数据透视表上线!如何在纯前端实现这个强大的数据分析功能?
- 【快问快答】事务异常或者instance abort时,如何估算事务rollback时间
- Excel技术:如何在一个工作表中筛选并获取另一工作表中的数据
- 如何使用码匠连接 Oracle
- 如何获得白色背景产品6-色度抠图
- Oracle 视图 USER_XML_SCHEMA_SUBSTGRP_MBRS 官方解释,作用,如何使用详细说明
- 约束Oracle如何安全修改字段非空约束(Oracle修改字段非空)
- MySQL如何安全删除外键表(mysql删除外键表)
- 空间Linux如何节省硬盘空间(linux硬盘释放)
- 约束MySQL中如何取消唯一约束(mysql取消唯一)
- MySQL:如何理解分号转义(mysql分号转义)
- 极速提升:如何在Linux上加装硬盘(加硬盘linux)
- MySQL:如何获得删除表的权限(mysql删除表权限)
- 操作指南:如何关闭Linux系统防火墙(关闭linux的防火墙)
- Linux硬盘如何快速分区(linux硬盘如何分区)
- Linux系统如何管理3T硬盘(linux3t硬盘)
- Linux下如何绑定端口?快速掌握方法!(linux绑定端口)
- 如何简洁有效地进行SQL Server迁移至新硬盘(sqlserver迁硬盘)
- 如何使用Linux查看未挂载的硬盘?(linux查看未挂载硬盘)
- Oracle表比较:如何确定两个表之间的差异?(oracle表比较)
- 「Linux 如何运行 APK 程序」(linux运行apk)
- 如何在Linux系统上配置搜狗输入法(搜狗linux设置)
- 深入理解Redis教你如何查看Redis的密码(如何查看redis的密码)
- 如何在Oracle 10中创建新的服务(oracle10新建服务)