eMMC芯片是 Embedded MultiMediaCard的簡稱,這是IC芯片,最初用于手機、平板電腦和其他移動設(shè)備,集成了控制器和閃存芯片(NANflash/Norflash),并提供標準MMC接口管理閃存,使其具有體積小、開發(fā)快、自flash管理等特點。
MMC是一種用于固態(tài)非易失性存儲的內(nèi)存卡(memory card)規(guī)范,對的,它是一種標準的接口規(guī)范。它定義了諸如卡的形態(tài)、尺寸、容量、電氣信號、和主機之間的通信協(xié)議等方方面面的內(nèi)容。
從1997年MMC規(guī)范發(fā)布至今,基于不同的考量(物理尺寸、電壓范圍、管腳數(shù)量、最大容量、數(shù)據(jù)位寬、clock頻率、安全特性、是否支持SPI mode、是否支持DDR mode、等等),進化出了MMC、SD、microSD、SDIO、eMMC等不同的規(guī)范(如下面圖片1所示)。
eMMC4.4的讀取速度大約為104MB/s、eMMC 4.5則為200MB/s,eMMC 5.0存儲產(chǎn)品,其讀取速度為400MB/s,但是因為使用的是8位并行界面,因此性能潛力已經(jīng)基本到達瓶頸,UFS即將成為了新的發(fā)展趨勢,UFS(通用flash存儲標準) 2.0有兩個版本:HS-G2的理論帶寬就有5.8Gbps,也就是超過了740MB/s,HS-G3更是翻番到11.6Gbps,接近了1.5GB/s。
關(guān)于圖片,這里強調(diào)幾點:
● MMC、SD、SDIO的技術(shù)本質(zhì)是一樣的(使用相同的總線規(guī)范,等等),都是從 MMC規(guī)范演化而來;
● MMC強調(diào)的是多媒體存儲(MM,MultiMedia);
● SD強調(diào)的是安全和數(shù)據(jù)保護(S,Secure);
● SDIO是從SD演化出來的,強調(diào)的是接口(IO,Input/Output),不再關(guān)注另一端的具體形態(tài)(可以是WIFI設(shè)備、Bluetooth設(shè)備、GPS等等)。
3. 規(guī)范簡介
MMC卡的規(guī)范從硬件上主要規(guī)定卡的形狀、物理尺寸、管腳,內(nèi)部block組成、寄存器等等。
3.1內(nèi)部組成
卡的內(nèi)部由如下幾個block組成:
● Memory core,存儲介質(zhì),一般是NAND flash、NOR flash等;
● Memory core interface,管理存儲介質(zhì)的接口,用于訪問(讀、寫、擦出等操作)存儲介質(zhì);
● Card interface(CMD、CLK、DATA),總線接口,外界訪問卡內(nèi)部存儲介質(zhì)的接口,和具體的管腳相連;
● Card interface controller,將總線接口上的協(xié)議轉(zhuǎn)換為Memory core interface的形式,用于訪問內(nèi)部存儲介質(zhì);
● Power模塊,提供reset、上電檢測等功能;
● 寄存器(圖片1中位于Card interface controller的左側(cè),那些小矩形),用于提供卡的信息、參數(shù)、訪問控制等功能。
管腳有VDD、GND、RST、CLK、CMD和DATA等,VDD和GND提供power,RST用于復位,CLK、CMD和DATA為MMC總線協(xié)議(具體可參考3.2小節(jié))的物理通道:
● CLK有一條,提供同步時鐘,可以在CLK的上升沿(或者下降沿,或者上升沿和下降沿)采集數(shù)據(jù);
● CMD有一條,用于傳輸雙向的命令。
● DATA用于傳說雙向的數(shù)據(jù),根據(jù)MMC的類型,可以有一條(1-bit)、四條(4-bit)或者八條(8-bit)。
3.2總線規(guī)范
前面我們提到過,MMC的本質(zhì)是提供一套可以訪問固態(tài)非易失性存儲介質(zhì)的通信協(xié)議,從產(chǎn)業(yè)化的角度看,這些存儲介質(zhì)一般集成在一個獨立的外部模塊中(卡、WIFI模組等),通過物理總線和CPU連接。對任何有線的通信協(xié)議來說,總線規(guī)范都是非常重要的。關(guān)于MMC總線規(guī)范,簡單總結(jié)如下:
1)物理信號有CLK、CMD和DATA三類。
2)電壓范圍為1.65V和3.6V(參考上面圖片2),根據(jù)工作電壓的不同,MMC卡可以分為兩類:
● High Voltage MultiMediaCard,工作電壓為2.7V~3.6V。
● Dual Voltage MultiMediaCard,工作電壓有兩種,1.70V~1.95V和2.7V~3.6V,CPU可以根據(jù)需要切換。
3)數(shù)據(jù)傳輸?shù)奈粚?稱作data bus width mode)是允許動態(tài)配置的,包括1-bit (默認)模式、4-bit模式和8-bit模式。
注1:不使用的數(shù)據(jù)線,需要保持上拉狀態(tài),這就是圖片2中的DATA中標出上拉的原因。另外,由于數(shù)據(jù)線寬度是動態(tài)可配的,這要求CPU可以動態(tài)的enable/disable數(shù)據(jù)線的那些上拉電阻。
4)MMC規(guī)范定義了CLK的頻率范圍,包括0-200MHz、0-26MHz、0-52MHz等幾種,結(jié)合數(shù)據(jù)線寬度,基本決定了MMC的訪問速度。
5)總線規(guī)范定義了一種簡單的、主從式的總線協(xié)議,MMC卡位從機(slave),CPU為主機(Host)。
6)協(xié)議規(guī)定了三種可以在總線上傳輸?shù)男艠?token):
● Command,Host通過CMD線發(fā)送給Slave的,用于啟動(或結(jié)束)一個操作(后面介紹);
● Response,Slave通過CMD線發(fā)送給Host,用于回應Host發(fā)送的Command;
● Data,Host和Slave之間通過數(shù)據(jù)線傳說的數(shù)據(jù)。方向可以是Host到Slave,也可以是Slave到Host。數(shù)據(jù)線的個數(shù)可以是1、4或者8。在每一個時鐘周期,每根數(shù)據(jù)線上可以傳輸1bit或者2bits的數(shù)據(jù)。
7)一次數(shù)據(jù)傳輸過程,需要涉及所有的3個信標。一次數(shù)據(jù)傳輸?shù)倪^程也稱作Bus Operation,根據(jù)場景的不同,MMC協(xié)議規(guī)定了很多類型的Bus Operation(具體可參考相應的規(guī)范)。