从博客有了[瞎弄]这个分类,还没有能一篇能称得上[瞎弄]的文章。总该上点干货了,这回,亲自动手换给香蕉派 M3 换板子上的 eMMC。
有给 M3 换eMMC的想法,是因为在不久之前,尝试在 M3 上面编译 OpenCV3.0。M3的原配 8G eMMC,安装完 Debian Jessie 之后,已经占用了 5G 多的空间,再尝试编译 OpenCV,编译到一半,直接提示磁盘空间不足了。无奈之下换成了 16G 的 microSD 卡,虽然编译过了,但是一直对 SD 卡的性能耿耿于怀,毕竟摆着读取速度 50MB/s 的速度的 eMMC 不用,却去用不到 25MB/s 的 SD 卡干嘛。。
0 扯
有必要先来扯一下 M3 的 eMMC 接口跟 sd 卡插槽。
先来看看这两个接口在 Banana Pi M3 (A83T处理器)上的区别 [1]。
接口 | 总线频率 (最大) | 总线宽度 | DDR模式 | 字节速度 |
---|---|---|---|---|
eMMC | 50 MHz | 8 bits | Yes | 50MB/s |
SD | 50 Mhz | 4 bits | Unknown | 25MB/s |
注:以上数据仅仅代表我在M3上的测试结果
其实,这两个接口在 A83T 上其实没有区别,使用一样的控制器,一样的最大数据线上的时钟为 50MHz,只是一个是 8 bits 的数据宽度,一个是 4 bits 的数据宽度 (SD卡本身的限制)。所以字节速度,也就是我们说的传输速度,一个是50MB/s 一个是25MB/s [2] [3]。
DDR (Double data rate) 是个好东西,与之对应的是SDR (Single data rate?),DDR 可以在时钟不变的情况下,在时钟上升沿和下降沿都读取数据,总线带宽翻倍(不过好像翻倍的时钟,用来做上传和下载用了,所以上传/下载本身只能实现SDR的速度?)。但是,我尝试过很多很多卡,都无法实现在 SD 卡槽上开启 DDR 模式。而在 wiki 里面, 也没有明确 SD 卡能开启 DDR 模式[2]。
我推测 A83T 的 SD 卡槽理论上是支持 UHS-1 的SD卡的,即使有时钟(50MHz)限制,至少也应该能工作在 25MB-4Bits-DDR模式,这样的话SD接口与板载eMMC的区别,仅在于4bit 跟 8bit的区别了[3]。
总结一下,理论上,在我的 M3 上面,使用 eMMC 接口的情况下,eMMC 上带宽会是 SD 卡的2倍(以上); eMMC 工作在 50MB-8bits-DDR 模式, SD 卡工作在 25MB-4bit-SDR 模式下。(我有一张坑爹的 32G C10 UHS-1 MicroSD 卡,在 M3 下只能工作在 12MB-4bits-SDR 模式,实际读取速度只有10 MB/s)
为嘛要换?原因很简单,板载 eMMC 理论上可以提供至少两倍于SD卡的读取性能,(对于12MB-4bits-SDR 模式的sd卡有4倍),可以自由选择容量(我选了64G的 得意脸.jpg)。
1 准备工作
高性能的 eMMC 芯片在手,成不成就看手艺了。
eMMC 型号是 KLM8G1GEAC,我手上的 M3 原装型号是 KLM8G1WEP。区别类似特斯拉的 S70 跟 P90 的区别。相对SD卡而言,都是极大的升级,而在eMMC内相比,一个是基础款,一个是高性能大容量版本。
具体比较请看[[三殇的宣传手册]](http://www.samsung.com/semiconductor/global/file/media/Samsung_eMMC_2013-0.pdf "[三殇的宣传手册]")[4]: 区别还是很大的。不过数据看看就好,后面可以看到,在 A83T 上主要瓶颈是 A83T 的接口速度只有 50MHz。
先对周围的电子元件做一些保护,我也是第一次用热风吹BGA封装的芯片,并没有什么经验,还是做一些尽可能的保护比较好,用的是国内带过来的高温胶带
然后,开始吹。。可是由于散热太好还是怎么滴,把我的热风枪吹坏了了(电源过热啪啪啪地以工频发出惨叫而且越来越大声)。再吹下去我的热风机坏掉了,群里的小伙伴说用煤气炉。。我没有煤气炉,不过我有更方便的电炉!
温度就不说了额,功率开到一半,只过了1分钟,镊子一翘,轻松拿下来了。皂片是趁热拍的。。
左边的是64G, 因为里面有8个 NAND 堆叠,所以相对要厚很多[4]。
然后开始上烙铁,清除掉多余的焊锡。因为芯片自带锡球,所以焊盘上的焊锡要清理干净,不然会引起焊锡过多,锡球溢出导致短路啥的。还不小心蹭掉了几个焊盘。。。还好都是NC焊盘,内部没有引线链接,只是固定用。
清理完成后,抹上足够多的助焊剂,放上新的芯片,再次上炉。又是1分钟左右,热风枪一吹,感觉芯片自己移动了一点然后用镊子轻轻推一下,芯片真的自动复位了,说明芯片已经浮在锡球上面!赶紧关火拿下来。等冷却
冷却后,插上SD卡,从SD卡开机,输出:
已经正确识别了 eMMC 接口,可以看到它的工作模式 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 性能并不一定准确,因为我没找到其他这么测试的例子。
最后,附上测试数据
2016-04-12 10:04:44 星期二 更新 硬盘测试工具 iozone 测试结果
测试工具为 iozone 安装sudo apt-get install iozone3
使用的测试指令是 iozone -e -I -a -s 100M -r 4k -r 16k -r 512k -r 1024k -r 16384k -i 0 -i 1 -i 2
分别在 4k 16k 512k 1024k 16384k 下做读写,重写,随机读写测试 数据的单位是kB/s.
8G 测试结果是 dragan 在论坛帖子里面发布的。关于次测试更新的讨论可以看这里。
8G emmc test from Dragan ------------------------
random random
kB reclen write rewrite read reread read write
102400 4 4378 2626 5659 7929 8329 5106
102400 16 13302 13674 27495 27399 26636 13430
102400 512 22770 23383 54337 54592 52669 23046
102400 1024 23582 23381 60522 61165 61159 23364
102400 16384 24577 25005 72832 72809 72435 25216
64G emmc test ----------------------------------
random random
kB reclen write rewrite read reread read write
102400 4 5460 5798 9486 8208 8465 4594
102400 16 11906 13318 20516 20600 20284 13203
102400 512 27360 27617 38483 38391 38669 26293
102400 1024 28549 28699 45715 45694 45707 27767
102400 16384 32795 32879 61076 61130 61368 32698
16G SD ------------------------------------------
random random
kB reclen write rewrite read reread read write
102400 4 2111 2222 5653 5474 5297 787
102400 16 4835 5017 11486 11509 10643 1002
102400 512 15067 16210 15754 15805 15930 2081
102400 1024 11400 16488 17742 17774 17786 7059
102400 16384 18805 19184 21013 21042 21077 19062
最关键的参数为最后两列,一个是随机读,一个是随机写。之前只做了dd的顺序4k读写,这里的随机读写才是比较能模拟实际使用的性能。 可见随机读的时候,64G eMMC 跟 8G 是有点差距的,随机写和连续写的地方,64G优势还是不错的。不过,都处于比SD卡高很多的级别。
看来连续写入虽然 SD 卡与8G eMMC 同为 6~8MB/s 的级别,但是随机写入和读取方面的差距还是很大。8G eMMC 和 SD 卡的对比,实际操作时 eMMC 应该也能有比 sd 更好的体验。
3 结
问:换吗?
我:必须换啊!
原装 8G eMMC 玩桌面级 linux 实在是不够,大容量是最大的优势,大容量带来的 NAND 叠层带来了翻7倍的写入速度十分感人。其他的并无亮点,是因为A83T自身接口的性能限制。但是需要注意的是,无论什么性能,eMMC 相比于 SD 卡都有非常大的提升,毕竟两倍宽度的数据总线,是硬件上就拥有的优势。
另外,没有必要买高性能的 eMMC, 因为除了写入速度以外,其他的性能瓶颈均为 A83T 接口的限制,与eMMC基础款本身性能已经超越它了。
Reference:
[1]‘A83T - linux-sunxi.org’. [Online]. Available: http://linux-sunxi.org/A83T. [Accessed: 09-Apr-2016].
[2]‘MultiMediaCard’, Wikipedia, the free encyclopedia. 18-Mar-2016.
[3]‘Bus Speed (Default Speed/ High Speed/ UHS) - SD Association’. [Online]. Available: https://www.sdcard.org/developers/overview/bus_speed/. [Accessed: 09-Apr-2016].
[4]‘Samsung_eMMC_2013-0.pdf’. [Online]. Available: http://www.samsung.com/semiconductor/global/file/media/Samsung_eMMC_2013-0.pdf. [Accessed: 09-Apr-2016].
[5]‘Advanced Format’, Wikipedia, the free encyclopedia. 30-Mar-2016.
[6]‘AS SSD测试:4K随机读写与IOPS差距还是有_SSD内存硬盘评测_太平洋电脑网PConline’. [Online]. Available: http://diy.pconline.com.cn/ssd/reviews/1212/3105130_3.html. [Accessed: 09-Apr-2016].
棒棒哒
哈。强大,能否翻译成英文,在英文论坛转贴一下呀。
好的!晚些我把部分翻译了发到M3的英文论坛去
try mmc 是什么工具?