|
從博客有了[瞎弄]這個(gè)分類,還沒有能一篇能稱得上[瞎弄]的文章。總該上點(diǎn)干貨了,這回,親自動(dòng)手換給香蕉派 M3 換板子上的 eMMC。
有給 M3 換eMMC的想法,是因?yàn)樵诓痪弥埃瑖L試在 M3 上面編譯 OpenCV3.0。M3的原配 8G eMMC,安裝完 Debian Jessie 之后,已經(jīng)占用了 5G 多的空間,再嘗試編譯 OpenCV,編譯到一半,直接提示磁盤空間不足了。無奈之下?lián)Q成了 16G 的 microSD 卡,雖然編譯過了,但是一直對(duì) SD 卡的性能耿耿于懷,畢竟擺著讀取速度 50MB/s 的速度的 eMMC 不用,卻去用不到 25MB/s 的 SD 卡干嘛。。
0 扯有必要先來扯一下 M3 的 eMMC 接口跟 sd 卡插槽。
先來看看這兩個(gè)接口在 Banana Pi M3 (A83T處理器)上的區(qū)別 [1]。
[td]接口 | 總線頻率 (最大) | 總線寬度 | DDR模式 | 字節(jié)速度 | eMMC | 50 MHz | 8 bits | Yes | 50MB/s | SD | 50 Mhz | 4 bits | Unknown | 25MB/s | 注:以上數(shù)據(jù)僅僅代表我在M3上的測試結(jié)果
其實(shí),這兩個(gè)接口在 A83T 上其實(shí)沒有區(qū)別,使用一樣的控制器,一樣的最大數(shù)據(jù)線上的時(shí)鐘為 50MHz,只是一個(gè)是 8 bits 的數(shù)據(jù)寬度,一個(gè)是 4 bits 的數(shù)據(jù)寬度 (SD卡本身的限制)。所以字節(jié)速度,也就是我們說的傳輸速度,一個(gè)是50MB/s 一個(gè)是25MB/s [2] [3]。
DDR (Double data rate) 是個(gè)好東西,與之對(duì)應(yīng)的是SDR (Single data rate?),DDR 可以在時(shí)鐘不變的情況下,在時(shí)鐘上升沿和下降沿都讀取數(shù)據(jù),總線帶寬翻倍(不過好像翻倍的時(shí)鐘,用來做上傳和下載用了,所以上傳/下載本身只能實(shí)現(xiàn)SDR的速度?)。但是,我嘗試過很多很多卡,都無法實(shí)現(xiàn)在 SD 卡槽上開啟 DDR 模式。而在 wiki 里面, 也沒有明確 SD 卡能開啟 DDR 模式[2]。
我推測 A83T 的 SD 卡槽理論上是支持 UHS-1 的SD卡的,即使有時(shí)鐘(50MHz)限制,至少也應(yīng)該能工作在 25MB-4Bits-DDR模式,這樣的話SD接口與板載eMMC的區(qū)別,僅在于4bit 跟 8bit的區(qū)別了[3]。
總結(jié)一下,理論上,在我的 M3 上面,使用 eMMC 接口的情況下,eMMC 上帶寬會(huì)是 SD 卡的2倍(以上); eMMC 工作在 50MB-8bits-DDR 模式, SD 卡工作在 25MB-4bit-SDR 模式下。(我有一張坑爹的 32G C10 UHS-1 MicroSD 卡,在 M3 下只能工作在 12MB-4bits-SDR 模式,實(shí)際讀取速度只有10 MB/s)
為嘛要換?原因很簡單,板載 eMMC 理論上可以提供至少兩倍于SD卡的讀取性能,(對(duì)于12MB-4bits-SDR 模式的sd卡有4倍),可以自由選擇容量(我選了64G的 得意臉.jpg)。
1 準(zhǔn)備工作高性能的 eMMC 芯片在手,成不成就看手藝了。
55586918.jpg (52.06 KB, 下載次數(shù): 119)
下載附件
2016-9-8 19:26 上傳
eMMC 型號(hào)是 KLM8G1GEAC,我手上的 M3 原裝型號(hào)是 KLM8G1WEP。區(qū)別類似特斯拉的 S70 跟 P90 的區(qū)別。相對(duì)SD卡而言,都是極大的升級(jí),而在eMMC內(nèi)相比,一個(gè)是基礎(chǔ)款,一個(gè)是高性能大容量版本。
具體比較請(qǐng)看[三殤的宣傳手冊(cè)][4]: 區(qū)別還是很大的。不過數(shù)據(jù)看看就好,后面可以看到,在 A83T 上主要瓶頸是 A83T 的接口速度只有 50MHz。
3758214747.png (88.93 KB, 下載次數(shù): 129)
下載附件
2016-9-8 19:26 上傳
先對(duì)周圍的電子元件做一些保護(hù),我也是第一次用熱風(fēng)吹BGA封裝的芯片,并沒有什么經(jīng)驗(yàn),還是做一些盡可能的保護(hù)比較好,用的是國內(nèi)帶過來的高溫膠帶
666778736.jpg (108.1 KB, 下載次數(shù): 112)
下載附件
2016-9-8 19:26 上傳
然后,開始吹。。可是由于散熱太好還是怎么滴,把我的熱風(fēng)槍吹壞了了(電源過熱啪啪啪地以工頻發(fā)出慘叫而且越來越大聲)。再吹下去我的熱風(fēng)機(jī)壞掉了,群里的小伙伴說用煤氣爐。。我沒有煤氣爐,不過我有更方便的電爐!
46200172.jpg (93.89 KB, 下載次數(shù): 118)
下載附件
2016-9-8 19:26 上傳
溫度就不說了額,功率開到一半,只過了1分鐘,鑷子一翹,輕松拿下來了。皂片是趁熱拍的。。
35996753.jpg (39.71 KB, 下載次數(shù): 127)
下載附件
2016-9-8 19:26 上傳
左邊的是64G, 因?yàn)槔锩嬗?個(gè) NAND 堆疊,所以相對(duì)要厚很多[4]。
然后開始上烙鐵,清除掉多余的焊錫。因?yàn)樾酒詭уa球,所以焊盤上的焊錫要清理干凈,不然會(huì)引起焊錫過多,錫球溢出導(dǎo)致短路啥的。還不小心蹭掉了幾個(gè)焊盤。。。還好都是NC焊盤,內(nèi)部沒有引線鏈接,只是固定用。
3640513024.jpg (103.09 KB, 下載次數(shù): 107)
下載附件
2016-9-8 19:26 上傳
清理完成后,抹上足夠多的助焊劑,放上新的芯片,再次上爐。又是1分鐘左右,熱風(fēng)槍一吹,感覺芯片自己移動(dòng)了一點(diǎn)然后用鑷子輕輕推一下,芯片真的自動(dòng)復(fù)位了,說明芯片已經(jīng)浮在錫球上面!趕緊關(guān)火拿下來。等冷卻
2337057195.jpg (113.02 KB, 下載次數(shù): 124)
下載附件
2016-9-8 19:26 上傳
冷卻后,插上SD卡,從SD卡開機(jī),輸出:
3810840188.png (69.61 KB, 下載次數(shù): 115)
下載附件
2016-9-8 19:26 上傳
已經(jīng)正確識(shí)別了 eMMC 接口,可以看到它的工作模式 50MB-8bits-DDR 模式。開心.jpg!
作為對(duì)比,這是系統(tǒng)盤(SD卡)本身的開機(jī)識(shí)別信息:
1530492746.png (30.7 KB, 下載次數(shù): 106)
下載附件
2016-9-8 19:26 上傳
工作模式是 25MB-4bits-SDR (時(shí)鐘為 50MHz)
2 對(duì)比測試總的來說,略失望,但也感覺還是很值得的。
話說,這顆 eMMC 內(nèi)部并不是空白的,開機(jī)后 Debian 便識(shí)別出了里面有引導(dǎo),有 Windows 的恢復(fù)分區(qū)。內(nèi)心各種草泥馬奔騰而過。。后來想想,它的的分區(qū)只占了28G,看來是一個(gè)還沒初始化過的 eMMC 那么還真可能是新的!誰能解釋下?
777902799.png (87.61 KB, 下載次數(shù): 122)
下載附件
2016-9-8 19:26 上傳
然后,直接寫入原先備份的 16G SD卡鏡像,這里直接驚艷了我一下。。這寫入速度!!大約是我手上SD卡的 5倍!
768506583.jpg (13 KB, 下載次數(shù): 117)
下載附件
2016-9-8 19:26 上傳
然而,這也是唯一驚艷的地方了。以下是詳細(xì)對(duì)比測試。包括
用 DD 命令在不同塊大小下讀寫測試
用 DD 命令,進(jìn)行模擬 4k 塊 IO 測試 (讀取4k大小的塊,然后寫入4k大小的塊)
用 hdparm 命令進(jìn)行讀測試
先看 hdparm 測試結(jié)果
使用的命令是:
1
| sudo hdparm -Tt /dev/mmcblk0
|
1138504892.png (10.16 KB, 下載次數(shù): 114)
下載附件
2016-9-8 19:26 上傳
相比起 8G 來說,64G eMMC 略慢一些。但是 8G 和 64G eMMC,都達(dá)到了SD卡兩倍有余。
再來看 DD 命令的讀測試:
使用的命令是:
1
| time sudo dd if=/dev/mmcblk1 of=/dev/null bs=512 count=2097152
|
這條命令是指,從eMMC(SD 卡)里面從0扇區(qū)開始,以512字節(jié)的塊大小,讀取 2097152 個(gè)塊。其實(shí)總共就是1G Bytes 的數(shù)據(jù)。通過改變 bs 與 count 的值,我測試了不同塊大小下,讀取 1 GBytes 數(shù)據(jù)的速度。
1327126848.png (13.17 KB, 下載次數(shù): 125)
下載附件
2016-9-8 19:26 上傳
基本上, eMMC 都達(dá)到或者超過(有系統(tǒng)緩沖的原因)了它們?cè)?50MHz 時(shí)鐘下的理論速度(50MB/s),SD卡的速度就呵呵噠了。
再來看寫入速度測試:
使用的命令是
1
| time sudo dd if=/dev/zero of=/home/pi/test.dat bs=512 conv=fdatasync count=2097152
|
參數(shù) conv=fdatasync 的意思是,不使用寫入緩沖,數(shù)據(jù)直接寫入到儲(chǔ)存卡里面。這樣可以測得實(shí)際速度。與讀取測試一樣,是在不同的塊大小下寫入1GBytes的數(shù)據(jù)。
176268501.png (14.11 KB, 下載次數(shù): 121)
下載附件
2016-9-8 19:26 上傳
這回 64G 的優(yōu)勢終于來了,終于爆發(fā)了!老子內(nèi)部可是八片 NAND 疊出來的!主控再怎么簡化,并行寫入總該會(huì)吧?
64G eMMC 速度大約是 SD卡的6倍,8G eMMC的5.5倍。(這是除了容量之外唯一的一個(gè)(重量級(jí))亮點(diǎn)了)
接下來看4k性能。
這個(gè)測試的來源,是在SSD硬盤,或者說2TB硬盤出來后,產(chǎn)生的[5]。Advance Format 是用4096字節(jié)代替以前磁盤以512字節(jié)為1塊的,如果操作系統(tǒng)能使用4k塊讀寫,將會(huì)有最佳性能,如果操作系統(tǒng)只能識(shí)別512字節(jié),使用4k塊硬盤,需要用4k模擬512字節(jié),將會(huì)產(chǎn)生很多不必要的寫操作。以上與本測試無關(guān)。。
不過SSD都用4k來衡量I/O性能,這個(gè)性能更多地會(huì)影響在小體積文件上。大家日常復(fù)制文件到U盤,會(huì)有一些體會(huì),在復(fù)制大文件,例如電影,音樂(MB級(jí)別的文件)的速度總會(huì)比復(fù)制一堆文件夾里面的文檔/代碼/游戲等要快很多。其中的原因,便是I/O速度的區(qū)別。每復(fù)制一個(gè)小文件,都需要進(jìn)行重新尋址,會(huì)有更多的讀寫操作,而大文件只需要一直寫入就好。I/O能力比磁盤的連續(xù)讀寫能力更影響系統(tǒng)的使用,特別是在程序加載,系統(tǒng)開機(jī)的時(shí)候,此時(shí)讀取的文件大部分都是小體積文件。
3519894170.png (12.75 KB, 下載次數(shù): 129)
下載附件
2016-9-8 19:26 上傳
IOPS 即是每秒的I/O數(shù)量。(悄悄告訴你這性能已經(jīng)超過機(jī)械硬盤一大截了,然而被SSD秒殺了[6])
可以看到,64G 的 eMMC 居然還差了一些,不應(yīng)該啊,我買的可是高性能版本的 eMMC。誰能告訴我為嘛?
用 DD測試 4k IO 性能并不一定準(zhǔn)確,因?yàn)槲覜]找到其他這么測試的例子。
最后,附上測試數(shù)據(jù)
2016-04-12 10:04:44 星期二 更新 硬盤測試工具 iozone 測試結(jié)果
測試工具為 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 下做讀寫,重寫,隨機(jī)讀寫測試 數(shù)據(jù)的單位是kB/s.
8G 測試結(jié)果是 dragan 在論壇帖子里面發(fā)布的。關(guān)于次測試更新的討論可以看這里。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
| 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
|
最關(guān)鍵的參數(shù)為最后兩列,一個(gè)是隨機(jī)讀,一個(gè)是隨機(jī)寫。之前只做了dd的順序4k讀寫,這里的隨機(jī)讀寫才是比較能模擬實(shí)際使用的性能。 可見隨機(jī)讀的時(shí)候,64G eMMC 跟 8G 是有點(diǎn)差距的,隨機(jī)寫和連續(xù)寫的地方,64G優(yōu)勢還是不錯(cuò)的。不過,都處于比SD卡高很多的級(jí)別。
看來連續(xù)寫入雖然 SD 卡與8G eMMC 同為 6~8MB/s 的級(jí)別,但是隨機(jī)寫入和讀取方面的差距還是很大。8G eMMC 和 SD 卡的對(duì)比,實(shí)際操作時(shí) eMMC 應(yīng)該也能有比 sd 更好的體驗(yàn)。
3 結(jié)問:換嗎?
我:必須換啊!
原裝 8G eMMC 玩桌面級(jí) linux 實(shí)在是不夠,大容量是最大的優(yōu)勢,大容量帶來的 NAND 疊層帶來了翻7倍的寫入速度十分感人。其他的并無亮點(diǎn),是因?yàn)锳83T自身接口的性能限制。但是需要注意的是,無論什么性能,eMMC 相比于 SD 卡都有非常大的提升,畢竟兩倍寬度的數(shù)據(jù)總線,是硬件上就擁有的優(yōu)勢。
另外,沒有必要買高性能的 eMMC, 因?yàn)槌藢懭胨俣纫酝猓渌男阅芷款i均為 A83T 接口的限制,與eMMC基礎(chǔ)款本身性能已經(jīng)超越它了。
|
|