推薦語
本次推薦的是朱老師寫的關于EMMC和Nand的科普性區(qū)分的文章,通過文章我們可以通俗易懂地理解Nand與EMMC的一些關聯(lián)及不同之處。下轉原文:
1.背景
今天偶然在一個群里看到有人聊EMMC和Nand,相信很多嵌入式er都用過或者至少聽說過這2種板載存儲芯片,但是很多人不清楚這2種的差異,也不明白什么時候應該用EMMC什么時候用Nand,如何選擇?今天我們就來聊聊這個問題。
2.Nand是這樣的
上圖中左側是一個NandFlash實物圖,大家可以看到有很多引腳。右側是NandFlash和STM32單片機的連接接線圖。
這些芯片上的引腳就是Nand和外界進行數(shù)據(jù)交流的通道。其中IO0-IO15是數(shù)據(jù)通道,通信時的地址和數(shù)據(jù)就是從這些引腳傳輸?shù)?。而CLE、ALE等剩余引腳就是時序控制線,用來做通信控制和同步。當然Nand工作時還需要供電的,圖中并沒有畫出電源引腳但是實際是有的。
這就是NandFlash,通過很多個引腳(圖中可見至少二三十個)和外界通信,很大的一個薄片狀芯片。能存儲數(shù)據(jù)。
常見Nand的容量一般幾十Mb到幾個Gb(注意存儲設備的容量都是b而不是B),應該說容量不算大。
Nand內部的存儲單元有兩大類,MLC和SLC。具體的細節(jié)暫不去管,大家只需要知道SLC Nand容量小價格高,但是質量好不容易壞。而MLC Nand容量大價格便宜,但是質量不好容易出現(xiàn)壞塊。其實不能說是質量好壞,而是工藝本身特性決定的,咱們反正是科普,就簡單粗暴給他歸個類吧。
3.Nand的優(yōu)勢和劣勢
Nand的優(yōu)勢都是相對于它的前代產(chǎn)品來說的。在Nand之前,人類使用的大容量存儲主要是磁性存儲(軟盤、硬盤)和光存儲(DVD光盤),這些東西都不太完美。譬如光盤不能反復擦寫而且讀盤設備和盤片都經(jīng)常壞(大家你想想家里老式光碟機是不是經(jīng)常讀不出盤),硬盤雖然今天也還在大量用,但是速度有極限并且體積太大,所以今天的高端筆記本電腦都不用機械硬盤改用SSD了(SSD其實也是Flash)。
我們主要講講Nand的劣勢。
Nand的第1大劣勢就是接口和時序不標準。大家可能沒意識到,NandFlash其實是一個品類而不是一個固定產(chǎn)品,你去看全世界有多家公司都在生產(chǎn)Nand,但是他們的產(chǎn)品并不能直接通用,也就是說你不能把一款Nand直接替換另一款而不需改動軟硬件。這就頭痛了,麻煩的要死。
Nand的第2大劣勢就是引腳太多,體積大。所以Nand芯片不能用在對體積要求很高的小型產(chǎn)品上,這極大限制了Nand的直接使用。
Nand的第3大劣勢就是容量不能靈活控制。就算你用同一家廠商的Nand芯片,但是不同容量的芯片引腳接口和封裝等也可能不同,這樣你如果做產(chǎn)品時有不同容量版本的產(chǎn)品,還得分開設計,分開生產(chǎn),很麻煩。
Nand的第4大劣勢就是壞塊的管理。存儲設備其實就相當于有很多小房間的一個大倉庫,而這個倉庫的每個小房間都是獨立的。因為技術原因有時候一些小房間就會壞掉,沒法使用,那我們不可能因為一個小房間壞掉了就把整個倉庫都丟掉吧?
于是乎人們就發(fā)明了壞塊管理技術。也就是說我們去標記上每個房間是好的還是壞的,如果發(fā)現(xiàn)某個房間壞了那就標記成壞塊,就不再使用這個房間了,而其他的好塊還是可以繼續(xù)用的。這種壞塊管理技術可以很大程度延長Nand的整體壽命。
和壞塊相似的還有個ECC(錯誤校驗)問題。正常情況下Nand中每個好塊中存儲的數(shù)據(jù)都會一直保持正確,即使過了幾年時間你去讀他還是原來的數(shù)據(jù)。但是事實往往沒有這么理想,有時候一些塊中的某些特定位就是會在隔了一段時間去讀取時發(fā)生了翻轉,這里原來存進去是1結果讀出來是0了。
這就難受了啊,最痛苦的是你也不知道原來存進去到底是1還是0,也不確定讀出來的還是不是原來的數(shù),所以搞得你沒法相信任何一個數(shù)據(jù),因為任何一個數(shù)據(jù)都有可能會翻轉啊,那豈不是整個數(shù)據(jù)都不可信了。
解決辦法就是ECC,我們寫入時先用算法計算得到數(shù)據(jù)的ECC值,把ECC值和塊內數(shù)據(jù)一起存入Nand中。待讀出時也是把塊內數(shù)據(jù)和ECC一起讀出,然后再用相同的算法計算塊內數(shù)據(jù)的ECC,和讀出的ECC進行比較,如果相同就認為數(shù)據(jù)未發(fā)生任何反轉,如果不同就認為數(shù)據(jù)已經(jīng)發(fā)生變質,沒法相信了。
本來有壞塊標記和ECC技術,Nand已經(jīng)挺好用了,也確實可以用了。但是麻煩的是Nand的ECC和壞塊標記都需要主控CPU來做,Nand自己是不管的。所以使用Nand很麻煩,你得編程解決很多細節(jié)問題(時序、ECC、壞塊管理)。
所以Nand最大的問題,其實就是不夠好用。那怎么辦呢?進化。
4.EMMC其實是從Nand進化而來
EMMC其實就是Nand包了一層后形成的。
EMMC內部真正用來存儲的倉庫就是Nand,而且EMMC基本都是MLC Nand,因為便宜啊。那EMMC解決了Nand的什么問題呢?
首先,EMMC是封裝和引腳都是標準的。什么標準?就叫EMMC標準。所以EMMC這個詞其實本來就是個接口標準名,符合EMMC接口的存儲芯片就叫EMMC芯片。
這個標準體現(xiàn)在至少三個方面:物理封裝、硬件電平和腳位、軟件時序。所以所有的EMMC芯片,不管是哪家廠家的,不管是多大容量的,都可以直接替換使用。因為人家設計EMMC標準的時候就已經(jīng)考慮到這種兼容和替換了(當然了,實際上EMMC也有好幾種封裝,但是一般硬件工程師做封裝時都會考慮幾種兼容的)。
所以EMMC解決了Nand的一個大問題,就是不同廠家和容量的存儲芯片之間的替換問題,這個非常厲害。因為兼容可以方便備貨,方便采購,方便替換,所以極大降低了產(chǎn)品設計和備貨上的難度,極大降低了成本。
舉個栗子,大家買手機都會發(fā)現(xiàn)現(xiàn)在的手機發(fā)布都有不同容量版本選擇,什么256G、128G、64G版。你想想廠商和經(jīng)銷商要備貨這么多種,多難受?但是如果用EMMC呢?所有的手機主板其實都是完全一樣的,只是實際生產(chǎn)時貼上了不同容量的EMMC芯片而已。而且最重要的是軟件上不用做任何改動,軟件可以自適應不同容量的EMMC芯片。這樣手機廠商就不用給不同容量的手機適配不同的操作系統(tǒng)鏡像了啊,多省心。所以你明白為什么手機都用EMMC而不用Nand了吧
EMMC的引腳比Nand也更少,體積也更小。當然了EMMC體積小也有很重要原因是因為他采用了更先進的BGA封裝方式。所以體積的優(yōu)勢也不算根本優(yōu)勢,如果Nand也用BGA封裝也可以做的小,只是說Nand沒這個必要性了。
最后,EMMC也解決了Nand的時序、壞塊和ECC問題。本質上因為EMMC內部也是用Nand存儲顆粒(而且是MLC Nand更容易壞)的所以也逃不過Nand的這些麻煩。但是EMMC芯片在內部內置了一個控制器(你可以理解為內部有個CPU且跑了一段固件代碼),這個控制器解決了這幾個問題,尤其是壞塊管理和ECC的問題。
所以你做產(chǎn)品用Nand就麻煩,得自己操這些心。而你做產(chǎn)品用EMMC就省心了,自己不用管這些破事,EMMC全部幫你搞定了,何樂而不為呢?從這個角度講EMMC好像自動擋汽車,而Nand好像手動擋汽車。(我發(fā)現(xiàn)我好喜歡用自動擋和手動擋的對比·····)
5.EMMC和Nand的性價比
有人說不對呀,看你說的EMMC明顯比Nand好啊,為什么我發(fā)現(xiàn)EMMC好像還比Nand便宜呢?
EMMC從技術上確實比Nand好,但是也確實比Nand便宜。主要原因是成本并不只是由硬性成本決定的,還和市場、規(guī)模等因素有關。
EMMC便宜的一大原因就是因為標準化。標準就可以大規(guī)模生產(chǎn),大規(guī)模流通,大規(guī)模壓貨,大規(guī)模使用。而用的多了產(chǎn)量大了,自然成本就低了。所以EMMC的大規(guī)模性就決定了他的成本很有優(yōu)勢。
EMMC便宜的另一大原因是內部使用MLC而不是SLC。實際上SLC的成本要遠高于MLC的,但是市場上流通的Nand很多還是SLC,為什么?因為MLC“質量”太差了,太容量出現(xiàn)壞塊和翻轉等,所以廣泛使用的Nand還都是SLC的。你如果直接用MLC Nand,那你的管理成本又很高,太麻煩了。而EMMC解決了這個問題,他內置的控制器很好的管理了MLC Nand,因此可以做到容量很大、使用簡單,還便宜。
所以說,能干臟活就是生產(chǎn)力啊。
6.如何選擇用哪個
實際項目中我們是用EMMC還是Nand呢?
實際上如果你的產(chǎn)品需要大容量(譬如超過8Gb也就是1GB或更大),那一定是EMMC更合適。性價比更高,且軟件上更簡單。
那什么時候用Nand呢?需要容量在幾十MB(譬如64MB)到幾百個MB(譬如512MB)之間的存儲,且不在意體積,且對穩(wěn)定性要求高的情況下,可以用SLC Nand。
那工業(yè)級和抗干擾方面呢?我并沒有專業(yè)研究過,但是簡單分析也知道,Nand在這方面肯定比EMMC好一些。畢竟EMMC是串行的要保證高速肯定總線速度高,而Nand是并行的總線速度肯定低。所以Nand應該要比EMMC皮實一些吧?
但是EMMC也是有工業(yè)級和消費級之分的,你做的產(chǎn)品真的是工業(yè)環(huán)境使用完全是可以用EMMC的,所以也不要鼓吹什么消費電子用EMMC,軍工用Nand這種說法。
7.最后
實際上存儲市場除了Nand和EMMC之外還有很多其他角色也都很厲害。
譬如Norflash、譬如近年來很火的spiflash(常見的是spinor,但是現(xiàn)在也有大容量的spinand了),譬如這兩年創(chuàng)新設計的SDnand(相當于是貼片芯片樣式的SD卡)。
技術其實一直都在創(chuàng)新。
最后,本文完全是從我的經(jīng)驗和積累來寫,并沒有嚴格查閱資料。限于水平和專業(yè)性,里面如果有錯漏或者表達不當?shù)牡胤?,希望大家指正,共同進步。
end
往期筆記:
長按關注我們,不錯過每一篇好文
免責聲明:本文內容由21ic獲得授權后發(fā)布,版權歸原作者所有,本平臺僅提供信息存儲服務。文章僅代表作者個人觀點,不代表本平臺立場,如有問題,請聯(lián)系我們,謝謝!