给Banana Pi M3 换 64G eMMC! (附跟原eMMC和SD卡的对比测试)

为嘛要换?原因很简单,板载 eMMC 理论上可以提供至少两倍于SD卡的读取性能,(对于12MB-4bits-SDR 模式的sd卡有4倍),可以自由选择容量(我选了64G的 得意脸.jpg)。
详细的速度规格对比,请看我的博客 http://aircheese.me/2016/banana-pi-emmc.html

1 准备工作
高性能的 eMMC 芯片在手,成不成就看手艺了。


eMMC 型号是 KLM8G1GEAC,我手上的 M3 原装型号是 KLM8G1WEP。区别类似特斯拉的 S70 跟 P90 的区别。相对SD卡而言,都是极大的升级,而在eMMC内相比,一个是基础款,一个是高性能大容量版本。
具体比较请看[三殇的宣传手册]](http://www.samsung.com/semiconductor/global/file/media/Samsung_eMMC_2013-0.pdf): 区别还是很大的。不过数据看看就好,后面可以看到,在 A83T 上主要瓶颈是 A83T 的接口速度只有 50M。


先对周围的电子元件做一些保护,我也是第一次用热风吹BGA封装的芯片,并没有什么经验,还是做一些尽可能的保护比较好,用的是国内带过来的高温胶带


然后,开始吹。。可是由于散热太好还是怎么滴,把我的热风枪吹坏了了(电源过热啪啪啪地以工频发出惨叫而且越来越大声)。再吹下去我的热风机坏掉了,群里的小伙伴说用煤气炉。。我没有煤气炉,不过我有更方便的电炉!


温度就不说了额,功率开到一半,只过了1分钟,镊子一翘,轻松拿下来了。皂片是趁热拍的。。


左边的是64G, 因为里面有8个 NAND 堆叠,所以相对要厚很多。
然后开始上老铁,清除掉多余的焊锡。因为芯片自带锡球,所以焊盘上的焊锡要清理干净,不然会引起焊锡过多,锡球溢出导致短路啥的。还不小心蹭掉了几个焊盘。。。还好都是NC焊盘,内部没有引线链接,只是固定用。


清理完成后,抹上足够多的助焊剂,放上新的芯片,再次上炉。又是1分钟左右,热风枪一吹,感觉芯片自己移动了一点然后用镊子轻轻推一下,芯片真的自动复位了,说明芯片已经浮在锡球上面!赶紧关火拿下来。等冷却


冷却后,插上SD卡,从SD卡开机,输出:


已经正确识别了 eMMC 接口,可以看到它的工作模式 时钟50MHz 50MB-8bits-DDR 模式。开心.jpg!
作为对比,这是系统盘(SD卡)本身的开机识别信息:


工作模式是 25MB-4bits-SDR (时钟为 50MHz)

2 对比测试

总的来说,略失望,但也感觉很好。
话说,这颗 eMMC 内部并不是空白的,开机后 Debian 便识别出了里面有引导,有 Windows 的恢复分区。内心各种草泥马奔腾而过。。后来想想,它的的分区只占了28G,看来是一个还没初始化过的 eMMC 那么还真可能是新的!谁能解释下?

然后,直接写入原先备份的 16G SD卡镜像,这里直接惊艳了我一下。。这写入速度!!大约是我手上SD卡的 5倍!

然而,这也是唯一惊艳的地方了。以下是详细对比测试。包括
用 DD 命令在不同块大小下读写测试
用 DD 命令,进行模拟 4k 块 IO 测试 (读取4k大小的块,然后写入4k大小的块)
用 hdparm 命令进行读测试

先看 hdparm 测试结果
使用的命令是:

sudo hdparm -Tt /dev/mmcblk0


相比起 8G 来说,64G eMMC 略慢一些。但是 8G 和 64G eMMC,都达到了SD卡两倍有余。

再来看 DD 命令的读测试:
使用的命令是:

time sudo dd if=/dev/mmcblk1 of=/dev/null bs=512   count=2097152

这条命令是指,从eMMC(SD 卡)里面从0扇区开始,以512字节的块大小,读取 2097152 个块。其实总共就是1G Bytes 的数据。通过改变 bs 与 count 的值,我测试了不同块大小下,读取 1 GBytes 数据的速度。


基本上, eMMC 都达到或者超过(有系统缓冲的原因)了它们在 50MHz 时钟下的理论速度(50MB/s),SD卡的速度就呵呵哒了。

再来看写入速度测试:
使用的命令是

time sudo dd if=/dev/zero of=/home/pi/test.dat bs=512 conv=fdatasync  count=2097152

参数 conv=fdatasync 的意思是,不使用写入缓冲,数据直接写入到储存卡里面。这样可以测得实际速度。与读取测试一样,是在不同的块大小下写入1GBytes的数据。


这回 64G 的优势终于来了,终于爆发了!老子内部可是八片 NAND 叠出来的!主控再怎么简化,并行写入总该会吧?
64G eMMC 速度大约是 SD卡的6倍,8G eMMC的5.5倍。(这是除了容量之外唯一的一个(重量级)亮点了)

接下来看4k性能。
这个测试的来源,是在SSD硬盘,或者说2TB硬盘出来后,产生的[5]。Advance Format 是用4096字节代替以前磁盘以512字节为1块的,如果操作系统能使用4k块读写,将会有最佳性能,如果操作系统只能识别512字节,使用4k块硬盘,需要用4k模拟512字节,将会产生很多不必要的写操作。以上与本测试无关。。
不过SSD都用4k来衡量I/O性能,这个性能更多地会影响在小体积文件上。大家日常复制文件到U盘,会有一些体会,在复制大文件,例如电影,音乐(MB级别的文件)的速度总会比复制一堆文件夹里面的文档/代码/游戏等要快很多。其中的原因,便是I/O速度的区别。每复制一个小文件,都需要进行重新寻址,会有更多的读写操作,而大文件只需要一直写入就好。I/O能力比磁盘的连续读写能力更影响系统的使用,特别是在程序加载,系统开机的时候,此时读取的文件大部分都是小体积文件。


IOPS 即是每秒的I/O数量。(悄悄告诉你这性能已经超过机械硬盘一大截了,然而被SSD秒杀了[6])
可以看到,64G 的 eMMC 居然还差了一些,不应该啊,我买的可是高性能版本的 eMMC。谁能告诉我为嘛?
**用 DD测试 4k IO 性能并不一定准确,因为我没找到其他这么测试的例子。

3 结

**问:换吗?
我:必须换啊!

原装 8G eMMC 玩桌面级 linux 实在是不够,大容量是最大的优势,大容量带来的 NAND 叠层带来了翻7倍的写入速度十分感人。其他的并无亮点,是因为A83T自身接口的性能限制。但是需要注意的是,无论什么性能,eMMC 相比于 SD 卡都有非常大的提升,毕竟两倍宽度的数据总线,是硬件上就拥有的优势。

另外,没有必要买高性能的 eMMC, 因为除了写入速度以外,其他的性能瓶颈均为 A83T 接口的限制,与eMMC基础款本身性能已经超越它了。

详细的过程,请到我的博客查看原文:http://aircheese.me/2016/banana-pi-emmc.html











厲害,你能夠拆EMMC而不傷到板子,膽子夠大。只是到64G,可以用來做甚麼運用?畢竟M3的資源實在太少。

大神好厉害:lol

好厉害,说的我也想找个废内存,玩玩焊接bga了。。。

之前编译OPENCV的时候遇到储存空间被占满,所以才有换的大容量eMMC的打算,16G足以。
选64G是因为价格比较合适,淘宝上100RMB能买到。。大容量EMMC写优势挺明显的所以,也是一个原因,虽然还是不知道能干啥。。

你可以去换苹果的eMMC了:lol

66666,会玩会玩,这抢大球饭碗指日可待

大赞,不错的文章:lol

厲害喔!
BGA的我還沒有DIY過呢!