eMMC真能优化成UFS?谈谈手机闪存的文件系统
和UFS闪存相比,eMMC的性能更弱,同一型号的手机混用这两种规格的闪存,让一些消费者感到了不满。对此,厂商称通过优化,eMMC的产品也可以获得优秀的体验。这个优化到底是怎么回事?根据以往的一些宣传,可以推断出是由于储存器使用了更先进的文件系统——F2FS。
对于储存器的文件系统,很多朋友或许并不太关注。但在使用上,不可避免地会感受到不同文件系统之间的区别——最直观的,莫过于兼容问题,例如NTFS文件系统的硬盘插到Mac电脑中无法写入,WinXP无法辨别exFAT文件系统等等。为什么储存器会选择不同的文件系统?一个优秀的文件系统,真的能把eMMC优化成UFS吗?今天就一起来谈谈这问题吧。
<ignore_js_op>
文件系统有啥用?
我们知道,在使用硬盘、U盘等储存器之前,需要进行格式化。而格式化的时候,会看到有很多文件系统可以选择。例如,在Win系统下,可以把格式化为NTFS、FAT32等等,在Linux下可以格式化为Ext3、Ext4等等,在macOS中可以格式化为HFS+、APFS等等。这些不同的文件系统,都有着一个共同的作用,那就是组织起储存器上的数据,让操作系统和用户更容易辨认和操作。
<ignore_js_op>
例如,在HDD硬盘上,数据是由扇区来储存的。什么是扇区?HDD的盘片是一个同心圆,把圆分成一个个小小的扇形,数据在这些扇形中储存,这些扇形就被称之为扇区。扇区储存着数据,但是操作系统并不会直接让用户访问一个个扇区——辨认不同的扇区靠的是物理地址,作为一个用户,面对着“01DE”“02FD”这样的物理地址,压根就无从下手。大家找苍老师的影视作品,都是到“摇杆驱动程序”的文件夹中去找,哪有找扇区物理地址的道理?
要把扇区组织起来,变成用户易于理解的各种文件、文件夹,就得文件系统来发挥作用了。我们知道,几十百来个人的广场舞,尚有令人眼花缭乱的阵仗,更何况是天文数字一般的扇区。不同的操作系统,组织数据的方式各不相同,于是就诞生了各种各样的文件系统。
<ignore_js_op>
这些不同的文件系统,特性也不尽相同,而且还有这优劣之分。例如大家非常熟悉的FAT32和NTFS,NTFS就明显要比FAT32更加先进——FAT32无法建立起2T以上的分区、储存4G以上的文件,而NTFS则可以轻松做到;在安全方面,NTFS支持文件加密、权限控制等特性,还支持日志,而FAT32则都不支持。另外,在性能方面,NTFS对FAT32也是有着明显优势。因此,如果文件系统更先进,的确可以把储存器“优化”得更上一个档次。
专为闪存而生的文件系统F2FS
文件系统的选择是有讲究的。例如在大容量硬盘流行、注重安全性的今天,在Win系统中使用的硬盘基本都会格式化成NTFS;而为了寿命和兼容性的考虑(NTFS的日志会请求更多读写,对闪存寿命不利),U盘、存储卡又往往格式化成为FAT32。安卓手机又普遍使用什么文件系统呢?我们知道安卓基于Linux,因此也继承了Linux的很多特性,大多数安卓机的闪存都跟随了Linux的主流文件系统,格式化成为了Ext4。
<ignore_js_op>
Ext4是一种很优秀的文件系统,它支持无限子目录、多块分配、日志记录等先进特性。不过,它是否适合手机?还真不一定。Ext4在2006年首次出现,当时的储存介质普遍还是HDD。而现在安卓机使用的都是闪存,Ext4并没有针对闪存作太多的优化。
HDD和闪存的结构天差地别,数据的组织也并不一样。在物理结构上,闪存并不存在扇区,因此需要经由FTL层来模拟HDD的扇区以实现对文件系统的兼容。加上文件系统没有对闪存作什么优化,所以效率会受到影响。那么有没有为闪存作优化的文件系统?F2FS便是了。
<ignore_js_op>
F2FS文件系统的全称是“Flash Friendly File System”,看名字就知道,这是专门为闪存而生的文件系统。这个文件系统来自三星,在2012年底被Linux内核所支持,自然也能够用于安卓机上。F2FS的确做了很多针对闪存的优化,最重要的就是基于闪存的块来进行读写,小文件的随机读写性能大大提高。
eMMC真能优化成UFS?
以上的问题也可以这么说:eMMC使用F2FS,到底能不能获得和UFS同等的性能?
根据已有的测试数据来看,F2FS的确比Ext4性能更高,甚至能让eMMC 5.1在随机写入性能超过UFS 2.1。不过,在持续读写速度方面,UFS 2.1仍要遥遥领先。而USF 2.1配合F2FS,取得了非常理想的测试成绩,在随机写入方面甚至能十倍于采用Ext 4的UFS 2.1。无论是eMMC还是UFS,换用后F2FS,都有明显提升,而UFS换用F2FS的提升幅度更大,性能表现更加完美。
那能不能说F2FS能让eMMC优化成UFS?这要分开不同方面看。在随机读写性能方面,使用F2FS的eMMC的确可以媲美Ext4的UFS。
这个性能对App的开启速度很重要,某些使用F2FS的eMMC安卓机在App开启速度方面,就因此不输使用UFS的竞品机型。但是,eMMC的物理瓶颈,是无法依靠F2FS来补全的——eMMC持续读写速度慢,而且是半双工,每通道同一时间只能读数据或者写数据,不能同时读写。在复杂的应用环境下,eMMC依然会是瓶颈。因此,UFS搭配F2FS,才是最完美的性能方案。
无论如何,UFS从硬件规格上,明显优于eMMC。eMMC使用F2FS后,或许能在某些方面胜过使用Ext4的UFS,但仍不能掩盖硬件规格更低的事实——UFS可以换用F2FS,eMMC却是变不了UFS的。目前同时使用UFS和F2FS的设备不多,如果很看重闪存性能,那还是UFS更值得选购——无论用的是Ext4还是F2FS文件系统。
eMMC真能优化成UFS?谈谈手机闪存的文件系统的更多相关文章
- 手机闪存速度测试工具,AndroBench
手机闪存速度测试工具,AndroBench
- 被忽视的eMMC——A1 SD Bench闪存测试
一直以来,大家对手机的配置方面都比较关注CPU和GPU的架构.频率.核心数等,却经常忽略了手机闪存的速度.实际上手机的闪存素质对手机日常操作的响应.载入速度同样起到举足轻重的影响,今天给大家介绍的则是 ...
- [Android] 配置安卓模拟器,使得dex文件不被优化成odex
最近做一个模块,需要将apk里面加载的dex文件dump出来,所以需要配置让dalvik不要把dex文件优化成odex. 1. 配置build.prop 主要是通过修改文件/system/build. ...
- 闪存中的NorFlash、NandFlash及eMMC三者的区别【转】
本文转载自:https://blog.csdn.net/Blazar/article/details/77843655 快闪存储器(英语:Flash Memory),是一种电子式可清除程序化只读存储器 ...
- 瑞发科NS1081主控 + THGBM5G7A2JBAIR(eMMC) 制作16GB闪存驱动器
文档标识符:NS1081_FLASH-DRIVE_D-P9 作者:DLHC 最后修改日期:2020.8.22 本文链接:https://www.cnblogs.com/DLHC-TECH/p/NS10 ...
- Android真机测试、乐视手机启用开发者模式
一.乐视手机启用开发者模式 1.进入 设置>关于手机,连续按5次,进入开发者模式 显示结果如下: 2.启用开发者模式,并且要启用USB调试 3.在VS中部署或调试Android引用,使用真机测试 ...
- Eclipse 真机调试检测不到手机解决方案
想用Eclipse真机调试,但是死活检测不到手机. 手机已经打开了usb调试模式. 开始用的华为Mate9,后面试了下小米,都不行. 在网上搜了一堆,什么安全驱动.adb占用.删除360手机助手.修改 ...
- 手机CPU知识扫盲:谈谈手机CPU架构与原理 (全
CPU是手机上面最复杂,最贵的Soc(芯片),担任的也是手机中大脑的位 置,是手机跑分性能的决定性硬件.智能手机发展到今天,各大手机CPU厂商也从春秋战国逐渐到了现在四国鼎立的时代(高通,MTK,三星 ...
- 手机CPU知识扫盲:谈谈手机CPU架构与原理
CPU是手机上面最复杂,最贵的Soc(芯片),担任的也是手机中大脑的位置,是手机跑分性能的决定性硬件.智能手机发展到今天,各大手机CPU厂商也从春秋战国逐渐到了现在四国鼎立的时代(高通,MTK,三星, ...
随机推荐
- MongoDB 聚合分组取第一条记录的案例及实现
关键字:MongoDB: aggregate:forEach 今天开发同学向我们提了一个紧急的需求,从集合mt_resources_access_log中,根据字段refererDomain分组,取分 ...
- 拉勾网爬取全国python职位并数据分析薪资,工作经验,学历等信息
首先前往拉勾网“爬虫”职位相关页面 确定网页的加载方式是JavaScript加载 通过谷歌浏览器开发者工具分析和寻找网页的真实请求,确定真实数据在position.Ajax开头的链接里,请求方式是PO ...
- https协议详解
HTTPS协议建立过程 1) 客户端首次发送请求时,由于客户端(浏览器等)对一些加解密算法的支持程度不一样,但是在TLS传输中必须使用相同的加解密算法,所以在TLS握手的阶段,客户端告诉服务器端自己支 ...
- 关于Java中IO流的练习
练习一:统计一个文件calcCharNum.txt中字母‘A’和'a'出现的总次数. package com.test; import java.io.File; import java.io.Fil ...
- LeetCode算法题-Quad Tree Intersection(Java实现)
这是悦乐书的第260次更新,第273篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第127题(顺位题号是558).四叉树是树数据,其中每个内部节点恰好有四个子节点:top ...
- 一篇文章教你如何用 Python 记录日志
前言: 这篇文章是我copy别人的,但是个人认为讲的真的很细致,有原理有实例,不仅仅只教你如何使用日志更会叫你知道日志的原理,真的非常棒,虽然文章很长,也许你不会认认真真读完, 但是当你遇到问题时这篇 ...
- 设置TextBlock默认样式后,其他控件的Text相关属性设置失效问题
问题: 定义了默认TextBlock样式后,再次自定义下拉框 or 其他控件 ,当内部含有TextBlock时,设置控件的字体相关样式无效,系统始终使用TextBlock设置默认样式 解决方案: 为相 ...
- SDOI 2019 R1游记
$SDOI$ $2019$ $R1$游记 昨天才刚回来,今天就来写游记啦! Day -5: 做了一下去年省选的Day1,感觉很神仙. Day -4: 做了一下去年省选的Day2,感觉还是很神仙. Da ...
- Laravel框架下容器Container 的依赖注入和反射应用
依赖注入,简单说是把类里头依赖的对象,置于类外头,即客户端调用处.相当于把类与类解耦. 一个简单的例子: class A { public function __construct() { // 这种 ...
- maven压缩js css
maven压缩<plugin> <!-- YUI Compressor Maven压缩插件 --> <groupId>net.alchim31.maven</ ...