手机主流存储器件的分析与发展

news2024/11/19 21:31:12

一、前言

存储器件作为系统中存储数据的物理单元,承担着非常重要的责任,它的运行状态时刻影响着整个系统的运行效率,存储容量和数据安全。所以整个产业针对存储器件的寿命,稳定性,容量,性能以及价格等方面进行着长期持续的探索与改进,进而衍生出了多种多样的存储器件应用于不同阶段和不同场景需求的系统。

而手机系统场景尤其复杂,对存储性能(包括IO的带宽,延迟和稳定性)的要求更加严苛。那么应对如此高要求的手机系统,存储器件在手机系统中是如何应用和发展呢?下面我们一探究竟。

二.UFS与NVMe全面对比

首先,我们可以知道,目前手机系统主流的存储器件有两种,一种是安卓手机使用的UFS,另外一种是苹果用的NVMe。我们依次介绍:

2.1UFS简介

UFS,Universal Flash Storage,通用闪存存储。为什么现在主流使用UFS呢?很简单,就是快。我们看下主流2lan的UFS,其顺序读的数据传输速率可以达到4.2GB/s:

a95391778d464237a90afad3ed11b093.png

UFS为什么这么快呢,对比手机以前使用的eMMC,有如下优势:

  • UFS采用差分串行传输,而eMMC采用并行数据传输。并行最大的问题是速度上不去,因为一旦时钟频率提升,干扰就变大,信号完整性无法保证。随着时钟频率越来越高,高速串行传输的优势就很明显了。

  • 支持多通道数据传输(目前是两通道),多通道可以让UFS在成本,功耗和性能之间做取舍。

  • UFS是全双工工作模式,意味着读写可以并行。而eMMC是半双工,读写是不能同时进行的。

  • UFS支持命令队列,可以异步处理命令,而eMMC无命令队列,只能进行同步处理。

综合串行,多通道,全双工和异步的巨大优势,UFS流行也是大势所趋。

5421c9b2019aed049927bd5d42e9c908.png

UFS(全双工+串行)vs eMMC(半双工+并行)

2.2 NVMe简介

NVMe是专门为高速闪存芯片设计的协议,主要是为企业级和数据中心的PCIe SSD设计的接口标准,来充分发挥闪存的性能。NVMe通讯协议+PCIe总线协议是实现高速SSD性能的基础,为什么这种组合可以充分发挥SSD的性能呢?

在NVMe之前,除了自成体系的SCSI协议(SAS SSD),其它SSD基本用的是AHCI+SATA协议。其实AHCI和SATA是为HDD服务的,而且SATA是由PATA进化而来,也是使用到了我们前面提到的高速串行的全双工传输。奈何SSD具有更低的延迟和更高的性能,SATA已经严重制约了SSD的速度,此时就需要PCIe了。

相比SATA/SAS,我们先看下PCIe到底有多快:

7062270a4fd60cc60680190a0fc38235.png

常见的4 lan的PCIe4.0 SSD,传输速度就可达7GB/s

48959f4acc06ccf6f3fb88dfb88168f8.png

那么,如果把SATA换成PCIe是不是就可以了,有NVMe什么事情呢?这就需要看SATA的难兄难弟AHCI了,如果不用NVMe,老旧的AHCI同样会严重制约SSD性能。下面的对比图可以看到AHCI与NVMe的差距了:

f49ecd8c1936f1a592e410823aa1875c.png

讲到这里,这些协议错综复杂,大家是不是已经云里雾里了。不着急,我们用下面这张图帮助大家理解他们的关系:

参照SAS SSD的协议栈,我们可以简单明了的看到,SATA和PCIe是物理接口和协议,AHCI和NVMe则是上层软件协议

2af372234fd470ae1a6cba2e07f4906f.png

2.3 UFS与NVMe比较

从上面的介绍可以看到,UFS拥有很好的性能,尤其是到了UFS4.0时代,2lan的顺序读可以达到4GB/s。但是,同时我们也可以看到,NVMe作为专为SSD所设计的协议,确实也有着无以伦比的性能,尤其是PCIe6.0,单lan就可以达到恐怖的8GB/s。

那么苹果为什么会采用NVMe而安卓还在继续使用UFS呢?孰优孰劣?

接下来我们针对UFS和NVMe从以下几个维度进行全面详细的剖析:

2.3.1底层器件材料:

器件使用的材料可以说对性能起着决定性的影响,目前来看各个厂家的UFS和NVMe SSD都采用的NAND颗粒,在这块来说,UFS和NVMe是旗鼓相当的,可以造成差距的就是UFS因为尺寸原因,无法做更多的堆叠而导致通道数不够,导致器件并行度有限从而影响性能。

2.3.2总线传输协议:

我们前面介绍过,NVMe是基于PCIe总线进行数据传输的,那么UFS用的什么传输协议呢?

先看下UFS的架构图,

最下层的互连层(UIC):由MIPI(Mobile Industry Processor Interface ,移动产业处理器接口)联盟的M-PHY作为物理层和MIPI的UniPro作为数据链路层组合而成。

中间的传输层(UTP):是JEDEC(固态技术协会)自己定义的。

最上层的应用层(UCS):使用的简化的SCSI子集组成UCS,由T10组织定义的。

589a9d54e91398b5b6bf4a25213211e6.png

我们可以看到UFS整个协议栈是借用了M-PHY,UniPro和SCSI组合而成,需要互相配合,数据传输的效率可能会有所折扣。那么再看看NVMe就显得很简洁,底层全部使用PCIe,传输效率也会相应的快很多。

4a2ae79da45b40e269f360d3c8dbf3d2.png

2.3.3 上层软件层次:

底层协议UFS和PCIe的速率我们前面比较过,PCIe确实强。

那么,上层协议SCSI和NVMe相比的话,孰优孰劣?

既然UFS使用古老的SAS SSD的SCSI子集,那么作为新兴的协议,NVMe与SCSI相比,是否有优势呢?我们看看它们的协议栈对比:

d159298d8e6c4afcb8dc368a96717c8e.png

NVMe是简洁的高速协议,从上图我们也可以看到NVMe传输只需要一层,而SCSI则需要多层传递,比较臃肿,UFS子系统隶属于SCSI低层。而且UFS自身也分了三层,简单介绍一下:

  • UFS平台层:获取平台相关的属性,通过ufshcd_pltfrm_probe调用公共层ufshcd_init。获取底层UFS host驱动并传递到公共层。

  • UFS公共层:提供UFS公共行为,策略,错误处理等。实现ufshcd_init等。

  • UFS host物理层:实现scsi控制器驱动。

176dd5fbe378eee9355d3c5b105231d5.png

UFS和NVMe协议有一些显而易见的差异也会导致性能差距,尤其是IO队列个数和队列深度:

7c208db92cc90bd8e72565bb8f78d27f.png

2.3.4驱动代码差异:

上面我们了解了UFS SCSI和NVMe协议栈的差异,NVMe简洁高效而SCSI略显臃肿,那么体现到驱动代码层面,IO到底需要经历多少波折呢?通过下图的函数调用,我们简单看下IO提交的请求在两种驱动中是如何进行处理的,然后最终发送成功,器件进行处理。

998650befc728a0647d29b0d525a81fa.png

  • request从block层下来,通过queue_rq可以调到scsi或者NVMe驱动。

  • NVMe处理request相对简单,block层调用nvme_queue_rq,只需要经过准备命令之后,就可以放到提交队列里了,紧接着再去写doorbell,设备就可以去接着去处理命令了。

  • UFS需要处理的过程就比较复杂了,block层调用scsi_queue_rq之后,经过scsi中层准备命令,然后发送到scsi低层ufs的队列中,然后ufs驱动再进行组合处理去发送,最后通过写寄存器完成命令的发送,设备才可以进行处理。

2.3.5 特性差异:

通过前面的比较,我们可以看到UFS在性能方面确实不如NVMe,但是毕竟NVMe SSD主要运用在企业和数据中心服务器中,而UFS是用在手机等终端设备中,使用场景有着相当大的差异,他们所需要的特性也是不尽相同。站在存储行业的角度来看,服务器存储(软件+硬件)发展的早而且应用广泛,所以对终端存储的很多特性有着极具价值的参考意义。譬如UFS的LU的概念就与NVMe的namespace相似。

我们以最新的UFS4.0和NVMe2.0来做对比,探下究竟。

  1. UFS4.0的新feature主要集中在传输速率和性能提升方面,还有一些安全和可用性的提升。尤其是MCQ的提出,完全可以与NVMe的多队列媲美。

e4699469016ed9a1831e931f7265e306.png

2.NVMe2.0新增的feature也不少,因为NVMe SSD主要应用于企业和数据中心,所以这些feature主要集中在数据管理和可靠性方面,最为重要的几个是NVMe Set和ZNS的提出,为数据管理提供了更多的方式和应用场景。尤其值得一提的是,NVMe支持KV存储这种新型的存储形式,将对存储的性能和效率有极大的提升。

035293419c7b829d35c2ee544ea4102b.png

下面列一些已有feature的增强,我们从已有的feature可以看到NVMe的特性是相当的丰富。

  • 安全方面:PI,TLS,in-band验证等

  • 和可靠性方面:log记录(CEL,PEL),Non-MDT,预测机制Telemetry,擦除期间防中断,OOB读引导分区等

  • 性能方面:TTR

  • 易用性方面:SGL,ZNS status notification等

aceb70a0837cea8d1b64d1ea862abc53.png

52a80f93e2aa65c71d0cc027a7df8c8c.png

综合起来看,NVMe特性要比UFS丰富很多,后面UFS可以参考NVMe增加更多的feature,使UFS为终端场景提供更高的性能,更好的安全性,可靠性和易用性。

三.UFS和NVMe如何取舍

前面比较了这么多,我想大家心里都有个数了,这么看苹果使用NVMe那是相当明智了,到这里很多同学应该会问,NVMe这么好,那么为何安卓厂家都还在使用UFS呢?这个问题我们可以从下面两个角度思考:

3.1 从苹果的角度来讲

首先可以肯定的是,苹果无法将普通的NVMe SSD直接放在手机里,一个是尺寸不允许,二来现有SSD的功耗也是手机无法承受的,所以可以肯定的是,苹果凭借其强大的整合能力和话语权,特殊定制了适用于手机的NVMe SSD。

其次可以思考的是,服务器上的PCIe总线在手机上是用不了,苹果需要采用新的总线来进行传输。真实的情况是什么呢?

苹果采用了一种移动版的PCIe,叫M-PCIe。但是呢,总归是服务器总线协议,所以PCIe标准下,phy层的功耗较高,而低功耗情况下,状态迁移延迟太大。如下图,M-PCIe就把标准的PCIe物理层换成了M-PHY,看到这个大家是不是很眼熟,对的,M-PHY就是UFS用的物理层。

216480073ab61a0d4166edd64f83f1a1.png

做好了这些,只需要上层搭配NVMe协议和驱动,苹果就可以使用NVMe的先进特性了,尤其是多队列。

我们要知道,苹果用nvme的时候还是在2015年的iphone6s上,那个时候大部分安卓厂商还在emmc阶段,nvme可以说是天下无敌。我们看下当时AnandTech的测试,iPhone 6s的顺序读写速率那是一骑绝尘。

ddfceb9a49b218e9e0ee85d6577e5edd.png

901b96f40ff99ac9ec30de41609afe53.png

1e7f9ae8f8271635892e7f59313decc5.png

8fe6bba1ff9f1d43178415f699a9e3ae.png

3.2 从安卓各个厂家的角度来讲,为什么不采用NVMe呢?

最关键的一点就是现在UFS的性能已经不比NVMe差了,根据下图,我们以iPhone 14 pro max上的NVMe速率来看,连续读取也只有1500M/s,已经比现在的UFS4.0速度差了很多,这也是安卓厂家能够继续使用UFS的最大驱动力。

所以顺序读写性能:UFS4.0 > NVMe = UFS 3.0 > UFS 2.1 > eMMC 5.1

babe95ac8fd3a94d10fe7a01661d7595.png

当然,在2015年的时候,安卓厂家不用NVMe,可能还有以下的原因:

原因1:整合成本问题,苹果整合能力强是毋庸置疑的,安卓厂商成本,精力和话语权有限。

原因2:软硬件生态问题,苹果系统和芯片都自己掌握,机型也少,软硬件生态打造相对容易。安卓厂商则相反,芯片需要高通和mtk,系统需要安卓,而且安卓的机型也是多种多样,很难去打造自己的生态。

原因3:UFS与NVMe本质速度差不多,安卓使用NVMe不见得快。

原因4:竞争差异化,安卓厂商需要有自己的特点,如果跟随苹果,那么市场上也很难站稳脚跟。

原因5:前面介绍过的,NVMe本质是软件接口协议,所以根本是硬件颗粒差异,NVMe搬移到手机上肯定有很大的性能损失,电脑可以通过多闪存颗粒形成多通道,提高传输带宽,手机空间则没有办法。

原因6:能使用 NVMe闪存,跟苹果A9 芯片开始用 PCIE 接口有关,后续苹果家的 WiFi、基带都使用 PCIE 接口,自己家的芯片接口自己定义,其他厂商真的学不来。

四.未来终端器件的发展

经过上面的介绍和分析,我们可以了解到,UFS和NVMe各有特点,而且会长期共存并且性能也会越来越好。

那么我们只需要UFS和NVMe就够了吗?显然不会的,随着科技的发展,新的存储器件也会孕育而生。我们提到的UFS和NVMe的物理介质其实本质上都是NAND半导体颗粒。其实存储行业中已经有一些新型的介质已经开始崭露头角,未来应用到手机终端存储也是很有可能的,我们找几个火热的一起来盘一盘:

4.1 PCM(Phase Change Material):

相变材料,是指在物质发生相变时,可吸收或释放大量能量的一类材料。由于相变材料是利用潜热储能,储热密度大,蓄热装置结构紧凑,并且在相变过程中本身温度基本不变,易于管理,现在成为新型存储的一个主要方向。

PCM相变存储对比原来NAND FLASH有更快的读写速度,几乎永久的使用寿命,存储密度极高,当然价格目前来说也是比较可观的。

而且PCM有另外的名字,那就是Intel的3D Xpoint技术,我们熟知的Optane就是用到这个技术。

4.2 MRAM(Magnetic Random Access Memory):

磁性随机存取存储器,其核心原理是自旋电子学,利用电子自旋特性,自旋磁性方向会出现不同的电阻特性,电阻状态可以表示0和1。

MRAM具有非易失性、读写速度快、能耗低、集成密度高、耐久力强、天然抗辐射和随工艺节点等比微缩等优点,等于兼具Flash的非易失性、媲美DRAM的高速读写特性、媲美FeRAM的极高擦写次数

4.3 FeRAM:铁电存储器,

优点:断电能保存数据,同时速度比NAND快很多,功耗低,读写速度快,具有抗辐照能力

缺点:工艺困难,价格贵

4.4 ReRAM:阻变存储器,是以非导性材料的电阻在外加电场作用下,在高阻态和低阻态之间实现可逆转换为基础的非易失性存储器。具备一般小于100ns的高速度、耐久性强、多位存储能力的特点。

五.结语

天下大势,分久必合,合久必分。虽然目前手机终端主流存储器件是UFS和NVMe,并且随着需求变化,都会增加新的特性去不断完善,但是未来是否会合二为一也说不准。同时伴随着时代的发展,物联网,人工智能,云计算等对数据存储的需求快速增长,不断有新型存储出现和发展,凭借它们超强的性能,超长寿命,超高可靠性,或者超低价格(所有企业都敏感),随时可能有颠覆性的改变,让我们一起期待和关注,到时再聊聊。

参考文献

【1】https://www.anandtech.com/show/9662/iphone-6s-and-iphone-6s-plus-preliminary-results

【2】https://blog.csdn.net/Frank_sample/article/details/118706691

【3】 https://zhuanlan.zhihu.com/p/26652622

【4】https://picture.iczhiku.com/weixin/message1621467838637.html

手机投屏之WFD简介

一文了解Vulkan在移动端渲染中的带宽与同步

AMD高保真超分算法1.0解密

09a0303273f57adbaeb9fe0f25ba8a28.gif

长按关注内核工匠微信

Linux内核黑科技| 技术文章| 精选教程

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

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

相关文章

紫光展锐携中国联通完成RedCap芯片V517孵化测试

近日,紫光展锐携手中国联通5G物联网OPENLAB开放实验室(简称“OPENLAB实验室”)共同完成RedCap芯片V517创新孵化,并实现在联通5G全频段3.5GHz、2.1GHz、900MHz下的端到端业务验证测试。 V517是一款基于紫光展锐5G成熟平台设计与研发…

电脑技巧:推荐八个实用的在线学习网站

目录 1、程序员英语词汇宝典 2、国图公开课 4、Maspeak 5、Visuwords 6、Learning Music 7、考试酷 8、好知网 今天给大家分享8个非常使用的学习网站,值得收藏! 1、程序员英语词汇宝典 官网:https://learn-english.dev/ 程序员英语词…

【论文解读】Prefix-Tuning: Optimizing Continuous Prompts for Generation

一.介绍 1.1 前置知识 1.1.1 in-context learning At the limit, GPT-3 (Brown et al, 2020) can be deployed using in-context learning, which is a form of prompting, without modifying any LM parameters. "部署" 指的是将 GPT-3 模型用于实际应用或特定任务…

项目添加以vue为后缀名的vue文件,怎么解析打包

我们都知道,将css文件打包起来,需要加载css-loader和style-loader,那么vue文件打包也需要 下载插件: npm install vue-loader vue-template-compiler --save -dev 下载过程: 下载成功样子: 下载完之后&am…

学信息系统项目管理师第4版系列33_信息化发展

1. 企业信息化发展战略要点 1.1. 【高22下选12】 1.2. 以信息化带动工业化 1.3. 信息化与企业业务全过程的融合、渗透 1.4. 信息产业发展与企业信息化良性互动 1.5. 充分发挥政府的引导作用 1.6. 高度重视信息安全 1.7. 企业信息化改组改造和形成现代企业制度有机结合 …

Leetcode 剑指 Offer II 049. 求根节点到叶节点数字之和

题目难度: 中等 原题链接 今天继续更新 Leetcode 的剑指 Offer(专项突击版)系列, 大家在公众号 算法精选 里回复 剑指offer2 就能看到该系列当前连载的所有文章了, 记得关注哦~ 题目描述 给定一个二叉树的根节点 root ,树中每个节点都存放有…

基于孔雀优化的BP神经网络(分类应用) - 附代码

基于孔雀优化的BP神经网络(分类应用) - 附代码 文章目录 基于孔雀优化的BP神经网络(分类应用) - 附代码1.鸢尾花iris数据介绍2.数据集整理3.孔雀优化BP神经网络3.1 BP神经网络参数设置3.2 孔雀算法应用 4.测试结果:5.M…

基于SpringBoot的招生管理系统

基于SpringBoot的招生管理系统的设计与实现~ 开发语言:Java数据库:MySQL技术:SpringBootMyBatisVue工具:IDEA/Ecilpse、Navicat、Maven 系统展示 主页 登录界面 管理员界面 用户界面 摘要 基于SpringBoot的招生管理系统是一款现…

基于战争策略优化的BP神经网络(分类应用) - 附代码

基于战争策略优化的BP神经网络(分类应用) - 附代码 文章目录 基于战争策略优化的BP神经网络(分类应用) - 附代码1.鸢尾花iris数据介绍2.数据集整理3.战争策略优化BP神经网络3.1 BP神经网络参数设置3.2 战争策略算法应用 4.测试结果…

mysqld: File ‘./binlog.index‘ not found (OS errno 13 - Permission denied) 问题解决

问题背景 Centos7 安装Mysql 8后启动时遇到的问题,看了好几个博客方案无效,搞了半小时才找到正解,在此次进行记录。 在此假设你已经修改了对应目录的权限,比如配置的mysql data目录初始化后已经执行了chown -R mysql:mysql /XXX/…

bug记录——设置了feign的fallback,但是没有生效

问题描述 feign的代码 package com.tianju.order.feign;import com.tianju.order.feign.fallback.StorageFallback; import com.tinaju.common.dto.GoodsDto; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.GetMap…

虹科分享 | 超低温冷冻箱温度分布验证的9步指南

虹科分享 | 超低温冷冻箱温度分布验证的9步指南 背景: 在生物制药行业,温度分布验证是确保对时间和温度敏感的产品在保证质量和安全的条件下储存和运输的关键步骤。这对于超低温冷冻箱尤为重要,因为超低温冷冻箱用于在低于 -60℃ 的温度下储…

[人工智能-综述-13]:第九届全球软件大会(南京)有感 -2-新型的云服务:AI即服务,传统的云服务:IaaS,PaaS,SaaS, DaaS

目录 一、传统的云服务 1.1 概述 1.2 从大数据云服务走向AI云服务 二、AI即服务:新型的云服务 1.1 概述 1.2 基于AI服务的应用程序 1.3 基于大语言模型的AI应用程序 1.4 AI 编程云服务平台 1.5 大模型在AI应用程序编程平台中的应用的主要思想 一、传统的…

LC-2316. 统计无向图中无法互相到达点对数(DFS、并查集)

2316. 统计无向图中无法互相到达点对数 中等 给你一个整数 n ,表示一张 无向图 中有 n 个节点,编号为 0 到 n - 1 。同时给你一个二维整数数组 edges ,其中 edges[i] [ai, bi] 表示节点 ai 和 bi 之间有一条 无向 边。 请你返回 无法互相…

微信小程序开发之会议OA首页后台数据交互(内带新知识点分享)

目录 前言 一、后台数据库交互 1.后台操作 1.1 导入会议OA后台项目 1.2 导入数据库文件以及配置数据库连接 1.3 启动后台验证是否拿到数据库数据 2. 前台操作 2.1 关闭mock.js 2.2 删除原有死数据及配置接口 2.3 定义函数访问获取后台数据 页面效果 二、利用工具类…

《深度学习推荐系统》王喆 笔记

这个笔记,是我记录的阅读该书,对我比较有用的一些点。不算是能完全覆盖全书知识点的笔记。 能完全覆盖全书知识点,比较详尽的笔记,可以参考如下。 《深度学习推荐系统》超级详细读书笔记https://www.zhihu.com/tardis/bd/art/44…

网安周报|OpenSSF 推出恶意软件包存储库

1.OpenSSF 推出恶意软件包存储库 为了应对恶意开源软件包日益增长的威胁,开源安全基金会 ( OpenSSF ) 推出了一项名为“恶意软件包存储库”的新计划。该存储库可能会成为打击恶意代码的主要参与者,旨在增强开源软件生态系统的安全性和完整性。该存储库已…

前端开发中遇到的复杂数据求和问题

在js中常用的数学计算库就是Math,但是Math库中没有能够进行求和的方法 那我们有两种解决办法 1.可以使用另外一种库:BigDecimal.js…或者可以去寻找更合适的库进行操作 2.使用reduce函数 首先我们的数据结构大概是这样子,detials里边的数据可…

软件工程与计算总结(二十三)软件工程职业基础

本系列最后一更,《软计》系列总结的大结局!本栏目告一段落,之后会结合真题和练习题再发布新的总结~ 往期链接: 《软件工程与计算》总结 一.软件工程职业 1.行业的发展 20世纪50年代:计算机还是研究型机器&#xff…

STM32基于HAL库RT-Thread Demo测试

STM32基于HAL库RT-Thread Demo测试 🎈源码地址:https://github.com/RT-Thread/rt-thread/tree/master📌基于STM32CUBEMX中间件安装《基于 CubeMX 移植 RT-Thread Nano》📍环境搭建《使用 Env 创建 RT-Thread 项目工程》&#x1f5…