[知乎]老狼:UFS VS NVMe
https://zhuanlan.zhihu.com/p/26652622
最近某手机厂商的闪存门在知乎上被人踢爆,在所谓“爵士水军”和“友商水军”的口水大战中,至少eMMC, UFS等火星名词被广泛的科普了一把。苹果粉也不时掺和进来,NVMe在苹果手机上的应用让这个群体平添了一份“高冷”,安卓的小伙伴们被鄙视的都不敢回嘴了!
本着看热闹不怕事大的原则,我这个低端山寨手机拥趸决定以一个吸引眼球的故事开始本系列:到底UFS 2.1和NVMe谁性能好,谁能“代表社会先进生产力”呢?
UFS VS NVMe
UFS是为了替代eMMC而生,主要面向手机等嵌入式场景。NVMe是目标是取代SATA SSD硬盘接口,主要应用在计算机平台。两者似乎没有必要也没有机会正面PK,但是苹果就是这么任性,偏偏要在手机上使用NVMe。这就像一场荒(YOU)诞(QU)的穿越剧,关公(NVMe)和秦琼(UFS)被强行穿越到我们眼前PK,而且被要求fight to death!作为资深吃瓜群众,在他们开打之前,我先来介绍下两位选手的个人情况。

秦琼:UFS
UFS(Universal Flash Storage)目标是取代eMMC。在2008年,JEDEC就开始为并行的eMMC寻找串行方案。到了2012年,UFS 1.0诞生了,知道今天已经是2.1版了。UFS相较eMMC最大的不同是并行信号改为了更加先进的串行信号,从而可以迅速提高频率,同时半双工改为全双工。如图:

关公:NVMe
NVMe(NVM Express)目标是替换掉SATA接口。早在2009年Intel就开始着手寻找SATA的替代方案,在2011年有了1.0。最新的版本是1.2.1。NVMe实际上是一种通讯协议,在通讯协议里是应用层,它使用PCIe协议作为数据和链路层。如下:

NVMe是为SSD而生。在此之前SSD都用SATA接口。有人会好奇SATA也是串行接口,为啥还要创造个新的接口。SATA接口采用AHCI规范,其已经成为制约SSD速度的瓶颈。AHCI只有1个命令队列,队列深度32;而NVMe可以有65535个队列,每个队列都可以深达65536个命令。NVMe也充分使用了MSI的2048个中断向量优势,延迟大大减小。
战力分析
介绍完了两位猛将,我们来看看他们的装备。因为他们都基于NAND Flash技术,我们就从他们的区别最明显的部分比起。
1。坐骑
秦琼坐下黄骠马,入选唐朝七骏图。关公胯下赤兔马,人中龙凤,马中赤兔。都是大名顶顶。坐骑是速度的保证,要不关二爷也做不到温酒斩华雄。协议的带宽也是速度的象征,UFS采用两条lane,2.1的最大带宽为11.6Gbps,约为1200MB/s,如下图:

NVMe链路层采用PCIe,目前PCIe是3.0,一般采用4条lane,如果你看过前面我们PCIe的介绍(传送门:深入PCI与PCIe之一:硬件篇 - 知乎专栏),我们就知道带宽是4000MB/s,如下图:

就算2个lane,也是2000MB/s,>1200MB/s。看来黄骠马跑不过赤兔马啊。有人说不公平,UFS 3.0要来了,速度会加倍,如下图:

可是PCIe 4.0也会在今年面世,相信最需要带宽的NVMe会立刻采用,PCIe 4.0 * 4 lane的带宽将达到恐怖的8000MB/s,两个lane也有4000MB/s。完全是碾压式的。
2。武器
秦琼手拿两根四棱金装熟铜锏,关羽手持青龙偃月刀。兵器的好坏也决定PK的强弱。UFS采用UCS命令集,它是SCSI命令的一个子集。NVMe采用为NAND flash量身定制的精简ATA命令集,大大减少命令的复杂度,恐怖的命令队列数目和深度又保证了4K小文件的迅速读写。两者相比UFS命令集和理论处理能力上又大大落于下风。看来还是青龙偃月刀厉害啊。
实战
闲话休提,是骡子是马拉出来溜溜!PK是打出来的,不是说出来的。我们来看看实际的benchmark:
某厂UFS 2.1:

最高的我们算作800MB/s。
苹果iphone 6s plus 128GB版本:
benchmark网站测试结果。
顺序读:1840MB/s。顺序写:279MB/s
三星950 pro 512GB M.2 NVMe
最后,我们欣赏一下三星的性能王:

结语
看来关二爷勇冠三军啊,是不是关二爷一定会越来越好,步入人生巅峰呢?造化弄人,历史上秦琼秦叔宝辅佐李唐立国,配享凌烟阁,富贵而终,甚至变成门神。而我们公认勇武的关羽关二爷却败走麦城,掉了脑袋,只能在关帝庙里吸食些香火。市场欢迎的技术才是好技术,而谁又能真正准确预测市场呢?
滚滚长江东逝水,浪花淘尽英雄。
是非成败转头空。
青山依旧在,几度夕阳红。
白发渔樵江渚上,惯看秋月春风。
一壶浊酒喜相逢。
古今多少事,都付笑谈中。
[知乎]老狼:UFS VS NVMe的更多相关文章
- [知乎]老狼:深入PCI与PCIe之二:软件篇
深入PCI与PCIe之二:软件篇 https://zhuanlan.zhihu.com/p/26244141 我们前一篇文章(深入PCI与PCIe之一:硬件篇 - 知乎专栏)介绍了PCI和PCIe的硬 ...
- [转帖] 知乎: 为什么品牌机器里面的VTX都是关闭的..
为何品牌机BIOS中的硬件虚拟化都是默认关闭的? 知乎老狼原创: https://www.zhihu.com/question/40381254/answer/499617881 谢邀.先说结论, ...
- [转帖]老狼:你知道哪些关于 Windows 10 的骚操作?
作者:老狼链接:https://www.zhihu.com/question/265781599/answer/579939418来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注 ...
- 数据读取速度达1.5G/s,UFS 2.1存储技术曝光
目前最快的是苹果NVME,当然UFS2.1也不差 iPhone6s与iPhone6s Plus在硬件的规格上有了很大的提升,但是它们身上的变化远没有苹果在发布会上所提到的A9处理器.1200万摄像头以 ...
- NVME SSD vs SATA SSD(转)
NVMe是个啥?未来SSD主流标准早知 关注固态硬盘的朋友应该对于这个词汇并不陌生,特别是今年NVMe也频繁出现在各大媒体文章中,随着高端SSD市场逐渐从SATA专项PCI-E时,以前的AHCI标准已 ...
- [SPDK/NVMe存储技术分析]012 - 用户态ibv_post_send()源码分析
OFA定义了一组标准的Verbs,并提供了一个标准库libibvers.在用户态实现NVMe over RDMA的Host(i.e. Initiator)和Target, 少不了要跟OFA定义的Ver ...
- 谈谈一些有趣的CSS题目(十一)-- reset.css 知多少?
开本系列,谈谈一些有趣的 CSS 题目,题目类型天马行空,想到什么说什么,不仅为了拓宽一下解决问题的思路,更涉及一些容易忽视的 CSS 细节. 解题不考虑兼容性,题目天马行空,想到什么说什么,如果解题 ...
- Python 爬虫模拟登陆知乎
在之前写过一篇使用python爬虫爬取电影天堂资源的博客,重点是如何解析页面和提高爬虫的效率.由于电影天堂上的资源获取权限是所有人都一样的,所以不需要进行登录验证操作,写完那篇文章后又花了些时间研究了 ...
- 谈谈一些有趣的CSS题目(三)-- 层叠顺序与堆栈上下文知多少
开本系列,讨论一些有趣的 CSS 题目,抛开实用性而言,一些题目为了拓宽一下解决问题的思路,此外,涉及一些容易忽视的 CSS 细节. 解题不考虑兼容性,题目天马行空,想到什么说什么,如果解题中有你感觉 ...
随机推荐
- 公历转农历的python实现
大杂烩.作为自己的记录,保存. 两个要点: 1.公历转农历用了查表法(第126行) 2.节气用了天文法?(第176行) 运行图 (背景是hao123万年历) 源代码: # lunar.py # 20 ...
- 13-[CSS]-postion位置:相relative,绝absolute,固fixed,static(默认),z-index
1.postion位置属性 <!DOCTYPE html> <html lang="en"> <head> <meta charset=& ...
- ORM框架学习之EF
首先推荐一篇很好的EF文章翻译,可以系统的学习一遍. <Entity Framework 6 Recipes>中文翻译系列 EF使用体会 优点: 可以省去Ado.net复杂的管道连接代码. ...
- Fiddler抓包原来可以这么玩
Fiddler是一个抓包工具 1 解压压缩包至C\program files (x86) 2 打开C program files (x86) Fiddler Web Debugger V4.6.201 ...
- php js css加载合并函数 宋正河整理
<?php //php js css加载合并函数 宋正河整理 //转载请注明出处 define('COMBINE_JS',true); define('COMBINE_CSS',true); ...
- Git使用教程(一)---本地git管理
之前写过不少小demo,因为没有很好的整理,很多demo都找不到了,必要的时候又要重新写这些demo:这是一个很头疼的问题,很烦躁.网上看到git的版本控制以及托管,很nice.开始学习使用git,关 ...
- 《Redis设计与实现》阅读笔记(三)--链表
链表 定义 链表分为两部分,链表节点和持有链表的list结构. 每个链表节点包含前置节点指针,后置节点指针,节点值void*用于保存各种不同类型的值 list结构包含表头节点指针,表尾节点指针,节点数 ...
- Netty源码分析第6章(解码器)---->第1节: ByteToMessageDecoder
Netty源码分析第六章: 解码器 概述: 在我们上一个章节遗留过一个问题, 就是如果Server在读取客户端的数据的时候, 如果一次读取不完整, 就触发channelRead事件, 那么Netty是 ...
- 利用jsencrypt 做非对称加密
1.生成 private key openssl genrsa -out rsa_1024_priv.pem 1024 2.生成public key openssl rsa -pubout -in r ...
- 从零开始的Python学习Episode 18——面向对象(1)
类与对象 类即类别.种类,是面向对象设计最重要的概念,对象是特征与技能的结合体,而类则是一系列对象相似的特征与技能的结合体. 类的定义 class 类名: 属性1 属性2 def 方法(self,ar ...