NVMe固态硬盘到底是什么?如何实现
本帖最后由 DreameRing 于 2018-11-5 19:53 编辑自从第一次摸电脑的时候,只知道内存处理器快就好,后来买了300A+128M内存,才发现,真正慢的是硬盘,硬盘在固态硬盘出来之前这么多年的发展实在是太缓慢,完完全全的瓶颈。内存再快,硬盘跟不上也没用。
应该很多网友都用上了SSD,上一讲只是大概说了一下SSD基础,用起来也仅仅需要4K对齐。这次专门说完全不一样的NVMe协议固态硬盘。
好了,各位网友可以由浅入深的共同探讨,当然高级的九浅一深也可以……
1,什么是NVMe
NVMe是Non-Volatile Memory express的简称,来说NVMe不是一种接口,而是一种协议,什么是协议?最简单的理解就是一种传输方案,和接口有一定关系。
并口时代不讨论。在串口时代如果硬盘接入SATA,可以将协议设置为IDE(理解为并口)或者AHCI(理解为串口),一般情况下,都会选择更配套的高速的协议。这就好比USB3.0的优盘完全可以用在USB2.0接口上一样,但是一般都用在USB3.0接口上。
2,为什么要选择NVMe?
第一啊,NVMe具有更好的队列深度和更低的延迟。
第二,因为串口硬盘(SATA)就算是SATA3.0,它传输通道的速度是6Gbps,这种接口注定速度不能突破800M/S,所以所有有的NVMe协议的硬盘都被接入了更高速的显卡用的PCIE通道。PCIE 3.0 1X的速度就是8Gbps。PCIE 3.0 4X的速度是32Gbps,远高于SATA3.0。轻松突破2000M/S。
3,实现NVMe条件?
确切来说,NVMe需要接口、总线、协议、启动、驱动共同支持才能实现。NVMe不同于AHCI,在BIOS里设置一下就OK,这里是有严格要求!
我先来简单说一下几个名词!
总线:就是传输的通道,NVMe必须采用在PCI-E 3.0 4X以上
接口:就是主板上用于连接SSD的那个插槽(接口)
通道:就是数据走的哪条通道
协议:就是方案。即使接口和总线全部没问题,如果SSD不支持NVMe这个协议也没用
DMI:处理器连接主板芯片组的总线
PCH:就是主板南桥,可以理解为芯片组,把总线扩展为其他接口的一个芯片
启动:必须EFI启动才可以
总结:确切来说,NVMe的实现需要运行在主板,硬盘都支持,接在的PCIE 3.0 4X以上。有驱动的环境下并以EFI方式来启动。听起来是不是挺简单?貌似硬件支持,有驱动,接口接对了就行了?其实不然。
第一,先说接口
NVMe必须在走PCIE 4X总线才能实现!这个总线可以通过以下几个接口实现:U2,M.2,PCI-E。
而M.2接口还分B KEY(Socket2)和M KEY(Socket 3)。而NVMe能够实现的M2接口都是M KEY(Socket 3),加上B KEY基本被淘汰,大多数低端机器尤其是笔记本上,都用这个接口,目前新买到的中高端机器应该都是M KEY。所以下文都说M KEY(Socket 3)接口。
这几个接口都能走PCIE总线,除了外观其实本质上速度上没什么区别。
第二,说协议
协议其实理解也容易,我说说和接口的关联。
IDE:只能IDE(并口)
SATA:AHCI(串口)、IDE
PCI-E:PCIE、NVMe
M2、U2、SATA-E:PCIE,NVMe,部分低端的是以SATA变成如上接口而存在。
反过来用协议表示也一样
IDE:IDE、SATA
AHCI:M2、U2、SATA-E、SATA
PCI-E:M2、U2、SATA-E、PCI-E
NVMe:M2、U2、PCI-E、SATA-E
不过要说的是,SATA-E用NVMe几乎不可能,认为不应该再存在的接口。
第三,再说总线和通道(最重点)
从Ivy Bridge开始Intel都采用PCIE 3.0,NVMe必须在PCIE 3.0 X4以上才行。
1,每种接口不是100%都走PCIE总线通道
芯片组转接的接口也可以通过Intel RST走SATA通道,比如M2接口也可以走SATA也可以走PCIE,这个需要自身SSD和主板共同支持PCIE总线,接口类型在BIOS里设置为PCIE通道。
2,M2接口是主流,但是必须速度达标
NVMe在PCIE 3.0 X4以上才行,但是很多接口(U2,M2)自带的是X2的速度,就是16Gbps的速度。我们需要Ultra M2接口,这种是以X4的方式连接的,速度是32Gbps。购买的时候一定要看清楚。如果标注32Gbps或者X4就可以实现。
3,未必硬件全部支持就等同支持
既然必须在PCIE 3.0下运行,这个需要在BIOS里设置为PCIE 3.0。正确的应该是PCIe Gen3。
4,PCIE通道数是有限制的
虽然现在大部分都是PCIE 3.0的,但是你非常需要明白一件事情,PCIE通道是有总数和方式的。
原生PCIE总线在CPU内,每个处理器具体多少条总线可以查询文档。
就说6700K吧,一共24条PCIE通道,连接主板的DMI总线用4条,核显永久占用4条,剩下来就是16条。不是说你有多少就能用多少。
但是一般情况下说的PCIE通道数指的是可利用通道,比如6700K不是标称24条而是16条。
5,既然剩余只有16X,显卡也是16X,不是没了嘛?
再说通道。刚才不是说PCIE只剩余了16条么?显卡插槽就是X16,这就没了啊,那为什么主板都带多个PCIE插槽?先看一张10系列和9系列芯片组的图。
能看懂多少看多少吧。
处理器原生16X PCIE通道,而芯片组的PCH也有PCIE通道。
刚才说了,6700K的一共24条PCIE通道,为了处理器为了跟主板连接,分了4条给了DMI总线。这4条PCIE 3.0的总线又被分成26条通道,其中USB占用8条,还有12条分给了Intel RST,这12条通道可以以M2或者PCIE的接口来存在,可以变成PCIE通道也可以变成SATA通道。这个就叫做PCH中转!
再来看9系列芯片组的图,PCIE3.0都是原生接口,而芯片组提供的只有PCIE2.0,速度很不达标,想要用NVMe就必须插原生显卡插槽上。
PCH中转也可以实现NVMe,只不过速度略差,也被通俗的认为不完美NVMe。一般用直连CPU的通道(就是原生PCIE3.0)。
6,这样做通道真的够用吗?
所有芯片组的PCIE接口(PCH中转),都是走DMI总线的,总线速度等同PCIE 4X。
看到了么?这么多接口全部走DMI总线,而这些速度总和只有4X。也就是说,如果你把NVMe的SSD安装到PCH中转的接口上,要和USB、声卡、网卡、串口硬盘等共享这个4X通道。想要获得极限速度,就得关停其他接口,这样是很不实际的。
仔细看上述图片很多个通道都是接口共享的,比如某个M2和SATA-E,用了一个另一个就用不了。而出口的总速度再次共享。
但是实际测试,按照目前主流的NVMe硬盘,正常用的话,速度差别不是很大。
7,到底哪些是原生的PCIE 3.0接口?显卡一定是吗?
非常不幸的告诉你!真未必!据我发现,大部分原生PCIE 3.0接口一般都是靠近处理器的那个插槽,其他所有插槽都是非原生的。
那M2接口呢?有没有原生的?只有小部分有,这个部分有多小?Z170-DELUXE还是PCH中转的。部分玩家国度和部分高端主板是原生的PCIE 3.0 4X。当然,这样的话显卡能用的只有12X了。
那显卡的PCIE3.0还有其他原生的嘛?前面的拓扑图得知,Z系芯片组可以拆分原生通道为8+8,或者8+4+4,但是有一个很大的问题,处理器是支持拆分通道,绝大部分的PCIE 3.0接口都是靠近处理器那一条是原生的,其他都是芯片组提供的。小部分是两条原生支持拆分。这个部分有多小?据我发现部分玩家国度是可以拆分的。
8,为什么Z系列芯片组支持通道拆分,确鲜有主板呢?
这么看来,其他主板只要不是贵的离谱,想用原生PCIE通道,要么放弃显卡,要么放弃NVMe?
大家先来看看X99的芯片组的拓扑图。
发现了没?所有的PCIE 3.0都是原生接口,且通道数为40条。够牛X吧?土豪上吧!我如果要是Intel总监我也会拉开X芯片组和其他芯片组的差距。要是如果就好了……
现在你知道为什么普通的主板没有这么多原生PCI-E 3.0接口了吧?
9,速度差异?
就拿gtx1080来说,PCIE 3.0环境下,16X和8X相差不到5%,可以忽略。
一般固态硬盘,在DMI3.0的PCH下,其他设备不是太多的话,速度也不会差到离谱。延迟倒是真正存在的。
总结:
1,大部分只有一条原生PCIE 3.0。要么放弃独显,要么放弃NVMe。不排除某些主板带2条原生PCIE3.0还拆分的,可以看拓扑图。只可惜除了华硕玩家国度里头的一部分高端,和其他品牌的高端我还没见到有说明的。
2,除了部分X99,大部分M2是芯片组提供的。
3,实在想用,就把SSD接在M2 32G的接口上,绝大部分是芯片组中转的。速度和延迟有偏差
4,想要完美?上X99及以上吧!
5,低端芯片组还是放弃了吧!
第四,说启动
最麻烦的通道说完了,再来说一下启动。
刚才说了,需要主板和固态硬盘共同支持,固态硬盘支持很简单,支持会有NVMe字样。至于主板支持,目前9和10系全部支持,部分B85等更新BIOS才能支持。
可问题来了刚才说了,不是PCIE 3.0 4X都能支持嘛?我的Z77为什么不支持?
那是因为Z77没有NVMe的启动文件,需要把NVMe的FFS文件刷到BIOS模块里,具体怎么刷,刷哪个请自行解决。而且每个主板厂商的NVMe模块还不太一样,我见过大部分可以用的NVMeExpressDxE.ffs,也见过华硕的3个NVMe启动ffs。就是说你就算没刷死,刷错了也启动不了。
但是必须要说的是,Intel 750固态内置启动文件,插在很多老主板(比如Z77)上的PCIE 3.0接口可以直接正确识别并启动。
最开始说了,NVMe必须要在EFI引导下才能实现,至于是纯EFI还是开启CSM倒无关紧要。
第五,说安装
关于NVMe,如果想简单的实现,我倒是推荐Windows10,不仅原生支持NVMe,而且也支持纯EFI启动。
既然我来自Windows7大区那么久独立说一下Windows7如何实现。
windows7实现需要2条,第一就是EFI启动,这个没什么好说的,BIOS内开启EFI启动并开启CSM就可以。
Windows7因为内置的boot.wim不包含NVMe驱动,所以安装界面是不识别硬盘。
1,很多人用了Win10的boot.wim来启动安装界面倒是可以识别
2,如果是Windows7安装,那么在安装到选择磁盘的时候,选择浏览,然后加载正确的驱动再刷新,即可看到NVMe硬盘。
驱动下载:
三星系列驱动:
Intel驱动(不包括600P,760P):
3,既然win10自带NVMe驱动,那么就可以用dism把NVMe驱动内置到系统镜像里。通用NVMe驱动下载地址:
https://support.microsoft.com/zh-cn/kb/2990941
4,PE内安装的话,一定要选择一个支持NVMe的PE,比如某些win10 PE。用winnt安装并添加驱动
5,部分厂家提供镜像修改,比如技嘉的WindowsImageTool,可以直接把NVMe和USB3.0驱动都内置到镜像里
6,如果是600P这样没有原厂驱动的,建议内置驱动,如果有原厂驱动,建议加载原厂驱动。
为什么关于安装部分说的这么少?具体安装大部分人都会,这里直说和普通安装的区别。
我现在头有点晕,难免出错!出错的话可以发帖告知,谢谢!等有空了好好排版吧!
最后愿大家早日体验高速体验!
特大喜讯:支持NVMe的windows7安装光盘论坛已发布,访问地址如下
https://bbs.pcbeta.com/viewthread-1736769-1-1.html
顶上去,我不是妹子不撒娇,坐等 很需要这个文件呢
很好很强大呵呵呵{:5_262:} 不明觉厉,估计完全成熟至少还要等两年 我去,距上次win7安转光盘发布已经有8个月只多了,期待下次版本{:5_268:} 科普贴赞下,要是2年前看得人会更多
既然科普就难为作者了,为了让观众理解有些概念模糊了
nvme盘用了一年多,目前感觉大部分产品成熟度可以了。 很好,学习了 zerozerone 发表于 2017-1-23 02:34 https://www.pcbeta.com/static/image/common/back.gif
科普贴赞下,要是2年前看得人会更多
既然科普就难为作者了,为了让观众理解有些概念模糊了
nvme盘用了一年 ...
我自己看都不免头晕,只能用回答问题的方式。
这个总结排版对于我现在来说不容易,等有空了吧 本帖最后由 a1379388505 于 2017-1-29 12:07 编辑
写的挺认真 谢谢分享!第一次了解这个概念! 期待跟进,支持一个。 留给记印,谢谢分享! 坐等大神更新技术贴! 坐等大神更新技术贴! 认真看完了,详实,赞一个。
现在100系以下都直接用技嘉的工具集成usb3和nvme驱动了事。
最新200系开始老实上win10了。 谢谢分享,学习了,虽然不是太懂。 斑竹你好,三星官网下下来的nvme驱动是一个exe啊,而且直接用rar解压出来的是一些没有后缀的文件。这个inf要怎么获取呢?不会是到有三星固态的系统上先安装好再提取出来吧…… 长知识了!! 能否搞个内置NVMe和USB3.0的Windows7安装盘,集成补丁至2017年1月30日,集成IE11,64位版本最佳。如果弄出来了,第一时间告知,谢谢。辛苦了,加油。