智能手機ARM架構(gòu)芯片內(nèi)部存儲器介紹
處理器系統(tǒng)中可能包含多種類型的存儲部件,如Flash、SRAM、SDRAM、ROM以及用于提高系統(tǒng)性能的Cache等等。剛剛接觸芯片開發(fā)的工程師常常被各式各樣的存儲和存儲管理弄得暈頭轉(zhuǎn)向,因此本文簡單對ARM架構(gòu)和基于ARM架構(gòu)的處理器上的內(nèi)存及內(nèi)存管理做一個簡單的匯總和整理。文章首先闡述了內(nèi)存的分類,其次以ARM920T為例描述了ARM芯片包含的存儲部件和存儲管理單元,最后簡單闡述了智能機中的存儲部件。
一,存儲部件的分類
1,RAM(Random Access Memory)-隨機存取存儲器
RAM在任何時候都可以被讀寫,通常作為操作系統(tǒng)或其他正在運行程序的臨時存儲介質(zhì)(內(nèi)存,掉電后RAM不能保留數(shù)據(jù)。RAM有SRAM、DRAM兩大類。
SRAM(Static RAM/SRAM)寫入的數(shù)據(jù)不會消失,直到下次寫入或掉電,是目前讀寫最快的存儲設(shè)備,價格昂貴,只用于要求苛刻的地方,如Cache。
DRAM(Dynamic RAM/DRAM)保留數(shù)據(jù)時間短,速度比SRAM慢,但快于其他任何ROM,比SRAM便宜很多,常用于計算機內(nèi)存。DRAM種類很多,常見的有FPRAM/FastPage、EDORAM、RDRAM、SGRAM、SDRAM、DDR RAM等。
SDRAM(Synchronous DRAM)同步動態(tài)隨機存儲器,是一種改善了結(jié)構(gòu)的增強型DRAM。SDRAM的接口相對復(fù)雜,需要相應(yīng)的控制器支持,但由于容量大、價格便宜、訪問速度快,所以常用在對內(nèi)存容量和處理速度要求高的應(yīng)用場合,在這種場合中,相應(yīng)的處理器(CPU)都自帶有SDRAM控制器。
DDR RAM(Date-Rate RAM)也稱作DDR SDRAM,是目前電腦中用得最多的內(nèi)存,這種改進(jìn)型的RAM和SDRAM是基本一樣的,但是它數(shù)據(jù)傳輸速率加倍了,一個時鐘內(nèi)可以進(jìn)行兩次數(shù)據(jù)書讀寫。
2,ROM(Read Only Memory)--只讀存儲器
ROM可在任何時候讀取,斷電后能保留數(shù)據(jù),數(shù)據(jù)一但旦寫入只能用特殊方法更改或無法更改。因此ROM相當(dāng)于PC機上的硬盤,用來存儲和保存數(shù)據(jù)。嵌入式系統(tǒng)中ROM常用來存放可執(zhí)行文件映像。RAM和ROM相比,兩者的最大區(qū)別是RAM在斷電以后保存在上面的數(shù)據(jù)會自動消失,而ROM就不會。隨著ROM存儲介質(zhì)發(fā)展,應(yīng)用中經(jīng)常提到的有ROM、PROM、EPROM、2PROM。
ROM:Read Only Memory,只讀存儲器。ROM中內(nèi)容只能讀不能改,在工廠里通過特殊的方法將數(shù)據(jù)燒錄進(jìn)去。
PROM:Programmable ROM,可編程ROM。可通過專用的編程器將數(shù)據(jù)寫入,但是只可寫一次,一旦寫入再無法修改。
EPROM:Erasable Programmable ROM,可擦除可編程ROM。芯片寫入要用專用的編程器,可重復(fù)擦除和寫入,擦除通過紫外線照射實現(xiàn)。
EEPROM:Electrically Erasable Programmable ROM,
電可擦除可編程ROM。價格高,寫入慢。但其寫入、擦除不需借助其它設(shè)備,電子信號即可實現(xiàn)。用廠商提供的專用刷新程序并利用一定的編程電壓就可以輕而易舉地改寫內(nèi)容。手機軟件一般放在EEPROM中,我們打電話,有些最后撥打的號碼,暫時是存在SRAM中的,不是馬上寫入通過記錄(通話記錄保存在EEPROM中),因為當(dāng)時有很重要工作(通話)要做,如果寫入,漫長的等待是讓用戶忍無可忍的。
3,F(xiàn)LASH存儲器(閃存)
FLASH結(jié)合了ROM和RAM的長處,不僅具備電子可擦出可編程(EEPROM)的性能,斷電也不會丟失數(shù)據(jù)。同時數(shù)據(jù)可以快速讀取,U盤和MP3以及現(xiàn)在的智能手機里用的就是這種存儲器。過去,嵌入式系統(tǒng)一直采用ROM(EPROM)作存儲設(shè)備,近年來Flash則將其全面代替,被用來存儲Bootloader、操作系統(tǒng)或者程序代碼。目前Flash主要有兩種:NOR Flash和Nand Flash 。
NOR Flash帶有SRAM接口,有足夠的地址引腳來尋址,可以很容易地存取其內(nèi)部的每一個字節(jié)。 NOR Flash的特點是芯片內(nèi)執(zhí)行(XIP, eXecute In Place),用戶可以直接運行裝載在NOR FLASH里面的代碼,不必再把代碼讀到系統(tǒng)RAM中。NOR Flash的傳輸效率很高,在1~4MB的小容量時具有很高的成本效益,但是很低的寫入和擦除速度大大影響了它的性能,同時成本較高。
NAND Flash沒有采取內(nèi)存的隨機讀取技術(shù),它的讀取是以塊的形式來進(jìn)行,通常一個塊大小為512個字節(jié),Nand Flash比較廉價,用戶不能直接運行NAND Flash上的代碼。應(yīng)用NAND的困難還在于flash的管理和需要特殊的系統(tǒng)接口,它使用復(fù)雜的I/O口來串行地存取數(shù)據(jù),各個產(chǎn)品或廠商的方法可能各不相同。
Nand Flash一般采用兩種不同的類型。一種叫做SLC(Single Level Cell),單層單元閃存;第二種叫做MLC(Multi Level Cell),多層單元閃存。兩者的主要區(qū)別是SLC每一個單元儲存一位數(shù)據(jù),而MLC通過使用大量的電壓等級,每一個單元儲存兩位數(shù)據(jù),數(shù)據(jù)密度比較大。SLC成本較高,但性能優(yōu)、能耗低、重復(fù)擦寫次數(shù)多。
嵌入式開發(fā)中,因為NOR Flash多用來存儲啟動代碼、操作系統(tǒng)等重要信息,而大容量的用NAND FLASH。
4,SD/MMC
MMC(MultiMedia Card)卡,是一種快閃存儲器卡標(biāo)準(zhǔn)。在1997年由西門子及SanDisk共同開發(fā),技術(shù)基于東芝的NAND快閃記憶技術(shù)。SD卡(Secure Digital Memory Card)是一種為滿足安全性、容量、性能和使用環(huán)境等各方面的需求而設(shè)計的一種新型存儲器件,在MMC卡基礎(chǔ)上發(fā)展而來。SD/MMC的存儲介質(zhì)就是NAND FLASH。
二,ARM架構(gòu)上的內(nèi)存和內(nèi)存管理部件
嵌入式開發(fā)中常常使用多種類型的組合實現(xiàn)來降低成本、提高效率。如Rom+RAM+Nand Flash的組合,基本的引導(dǎo)代碼放在ROM中,系統(tǒng)加電即自動從Rom初始地址開始執(zhí)行,而后分階段(一階段或兩階段)將bootloader代碼、RTOS和應(yīng)用程序代碼復(fù)制至RAM中執(zhí)行。程序代碼之類一定是放在一種可以掉電不失數(shù)據(jù)的存儲設(shè)備中,籠統(tǒng)的將之稱為ROM。傳統(tǒng)的嵌入式開發(fā)中由于代碼量和數(shù)據(jù)量很少,一般內(nèi)部EEROM即夠用。后來由于代碼量、數(shù)據(jù)量太大,EERom存不下來,就出現(xiàn)了Flash。由于Flash不能直接與CPU交換數(shù)據(jù)或交換很慢,所以在程序運行后,需要將Flash內(nèi)部的某一要運行的程序,“搬移”到能夠和處理器直接交換數(shù)據(jù)的RAM中去執(zhí)行。當(dāng)程序被搬運(也許只搬運了部分)到ram中后,就開始從ram的首地址開始運行程序。為了提高利用率,一般會將向量表之類的需要快速響應(yīng)的部分放到ram中;當(dāng)然若ram夠大,也可以將所有的代碼放到RAM中。芯片中,存儲部件間程序和數(shù)據(jù)的“搬移”、CPU core與主存間通信就是通過處理器的各種內(nèi)存管理單元來實現(xiàn)。
芯片上所有的片內(nèi)、片外存儲都統(tǒng)一管理,存在一個系統(tǒng)存儲器分配映射,其不僅是存儲器塊可用地址和I/O設(shè)備可使用地址的反映,也是系統(tǒng)中硬件存儲器和I/O設(shè)備描述的反映。它反映了不同存儲單元ROM、RAM、Flash和I/O設(shè)備等的存在性,每種存儲部件有各自的開始和結(jié)束地址;也反映了定位器對程序、數(shù)據(jù)、I/O操作的存儲器分配。不同的存儲單元之間存在著空間間隔以方便擴展,擴展時只需改動軟件程序即可。
如下圖是ARM920T的邏輯框圖
1,寄存器
對于寄存器,它不是ram,可以理解成ram,寄存器的速度是最快的,是處理器運算的臨時空間,內(nèi)存的數(shù)據(jù)和信息都是經(jīng)過它來參加CPU內(nèi)邏輯運算單元或算術(shù)運算單元的。
2,Cache
高速緩存存儲器是一個硬件部件,SRAM,對用戶來說是透明的。Cache與主存以Cache Line為單位交換數(shù)據(jù)。Cache的地址映像和變換方法有三種:直接相聯(lián)、全相聯(lián)和組相聯(lián)映像。Cache與一些寫回、寫通技術(shù)結(jié)合來提高系統(tǒng)效率的同時保持Cache和主存數(shù)據(jù)的一致性。
在ARM920T有16K的數(shù)據(jù)Cache和16K的指令Cache,這兩個Cache是基本相同的,數(shù)據(jù)Cache多了一些寫回內(nèi)存的機制,后面我們以數(shù)據(jù)Cache為例來介紹Cache的基本原理。我們已經(jīng)知道,Cache中的存儲單位是Cache Line,ARM920T的一個Cache Line是32字節(jié),因此16K的Cache由512條Cache Line組成。
多核心的架構(gòu)下,每個處理器都會有自己的L1Cache,并共享一個L2 Cache。ARM采用CacheCoherence機制保證Cache的同步。
3,MMU(Memory Management Unit)- 內(nèi)存管理單元
MMU負(fù)責(zé)虛擬地址到物理地址的映射,并提供硬件機制的內(nèi)存訪問權(quán)限檢查。MMU使得每個用戶進(jìn)程擁有自己獨立的地址空間,并通過內(nèi)存訪問權(quán)限的檢查保護(hù)每個進(jìn)程所用的內(nèi)存不被其他進(jìn)程破壞。
ARM CPU地址轉(zhuǎn)換涉及三種地址:虛擬地址(VA,Virtual Address)、變換后的虛擬地址(MVA,Modified Virtual Address)、物理地址(PA,Physical Address)。MMU沒有使能時,CPU核心、cache、MMU、外設(shè)等所有部件使用的都是物理地址。啟動MMU后,CPU核心對外發(fā)出虛擬地址VA,VA被轉(zhuǎn)換為MVA供cache、MMU使用,在MMU里MVA被轉(zhuǎn)換成PA,最后使用PA讀取實際設(shè)備。
從MVA到PA的轉(zhuǎn)換需要訪問多次內(nèi)存,轉(zhuǎn)譯查找緩存(Translation Lookaside Buffers,TLB)用來改進(jìn)CPU訪問內(nèi)存的性能。由此,通過使用這樣一個高速、容量相對較小的存儲器來存儲近期用到的頁表條目(段、大頁、小頁、極小頁描述符),避免每次地址轉(zhuǎn)換都到主存中查找,這樣就大幅提高性能。這個存儲器用來幫助快速地進(jìn)行地址轉(zhuǎn)換,成為當(dāng)CPU發(fā)出一個虛擬地址時,MMU首先訪問TLB。如果TLB中含有能轉(zhuǎn)換這個虛擬地址的描述符,則直接利用此描述符進(jìn)行地址轉(zhuǎn)換和權(quán)限檢查,否則MMU訪問頁表找到描述符后再進(jìn)行地址轉(zhuǎn)換和權(quán)限檢查,并將這個描述符填入TLB中,下次再使用這個虛擬地址時就直接使用TLB用的描述符。
使用TLB需要保證TLB中的內(nèi)容與頁表一致,在啟動MMU之前,頁表中的內(nèi)容發(fā)生變化后,尤其要注意。一般的做法是在啟動MMU之前使整個TLB無效,改變頁表時,使所涉及的虛擬地址對應(yīng)的TLB中條目無效。
4,協(xié)處理器CP15
在基于ARM的嵌入式系統(tǒng)中,存儲器常用協(xié)處理器CP15完成存儲單元的大部分管理工作。例如通過專用指令寫CP15控制寄存器相應(yīng)位來使能和控制內(nèi)存管理單元MMU和Cache。
5,Nand Flash controller和Flash
操作NAND Flash時,先傳輸命令,然后傳輸?shù)刂罚詈笞x寫數(shù)據(jù),這個期間要檢查Flash的狀態(tài)。
NAND Flash的讀寫操作次序如下:
①設(shè)置NFCONF配置NAND Flash
②向NFCMD寄存器寫入命令
③向NFADDR寄存器寫入地址
④讀寫數(shù)據(jù):通過寄存器NFSTAT檢測NAND Flash的狀態(tài),在啟動某個操作后,應(yīng)該檢測R/nB信號以確定該操作是否完成、是否成功。
Flash相當(dāng)于PC的硬盤,用于永久存放數(shù)據(jù),可以將部分引導(dǎo)程序、可執(zhí)行映像存放在Flash中,在系統(tǒng)加電后通過Bootloader加載至RAM。
6,DMA(Direct Memory Access)- 直接存儲器存取
DMA用來提供在外設(shè)和存儲器之間或存儲器和存儲器之間的高速數(shù)據(jù)傳輸。無須CPU干預(yù),數(shù)據(jù)可以通過DMA快速地移動,這就節(jié)省了CPU的資源。
7,ROM(內(nèi)部Rom和外部Rom),用于存放系統(tǒng)啟動和初始化代碼、RTOS等。
8,RAM(分內(nèi)部IRAM和外部RAM),相當(dāng)于PC的主存,用于任務(wù)執(zhí)行過程中的臨時數(shù)據(jù)、代碼存儲和堆棧。執(zhí)行頻率高的代碼、數(shù)據(jù)存于IRAM。系統(tǒng)啟動后ROM中的影像端copy至RAM并執(zhí)行。
9,I/O端口和設(shè)備地址空間:該地址由處理器根據(jù)硬件配置分配,包括控制/數(shù)據(jù)/狀態(tài)寄存器。
三,智能機應(yīng)用處理器AP和無線路由器CP的存儲部件配置
下面兩幅圖是ARM提供的當(dāng)前典型的ARM架構(gòu)的無線modem和 應(yīng)用處理器AP的邏輯示意圖
基帶處理器(Modem)
圖中的ROM、RAM組合用來實現(xiàn)系統(tǒng)代碼的存放和啟動、運行。另外一些應(yīng)用場景中(如功能機)modem需要額外的存儲部件,即通過Static Memory Controller外接Flash等實現(xiàn)。
TCM是一個固定大小的RAM,緊密地耦合至處理器內(nèi)核,提供與cache相當(dāng)?shù)男阅?,相比于cache的優(yōu)點是,程序代碼可以精確地控制什么函數(shù)或代碼放在那兒(RAM里)。當(dāng)然TCM永遠(yuǎn)不會被踢出主存儲器,因此,他會有一個被用戶預(yù)設(shè)的性能,而不是象cache那樣是統(tǒng)計特性的性能提高。
應(yīng)用處理器AP邏輯構(gòu)成示意
AP示意圖中列出了當(dāng)下流行的存儲部件和存儲控制器組合,實際上這些控制部件不一定同時存在于一顆AP上。當(dāng)我們談到智能機的“內(nèi)存”時,實質(zhì)上指的往往是應(yīng)用處理器的存儲配置。下文會簡述智能機中的存儲部件組合。
手機的Memory由兩大塊組成,俗稱RAM與ROM。RAM也叫運行內(nèi)存,其大小決定手機后臺能運行多少程序;ROM的大小則決定手機中能安裝多少程序、放多少歌曲、電影、小說等。RAM則是上面提到的DRAM,對智能手機的性能影響最大、價格也貴,特別是目前新一代的LPDDR2的價格,同等容量時比電腦中采用的PC DDR3的價格貴一倍左右。今年底,下一代LPDDR3也將被一些高端平臺采用,價格將更昂貴。ROM實質(zhì)上是Nand Flash閃存,用來永久存儲智能手機中的各種數(shù)據(jù)。而RAM與ROM如何結(jié)合、如何封裝則是目前手機廠商在選擇平臺時最為糾結(jié)的地方,因為涉及到PCB的布線和空間位置,不僅如此,還涉及到后面物流采購的可行性與價格的波動,因為不同形式的Memory價格波動也不一樣。目前主流的形式有MCP、eMCP、POP(Package on Package)以eMMC+LPDDR2的分商方式,手機采用哪一種形式往往是由手機選擇的主芯片平臺來決定,而容量則由手機廠商根據(jù)市場需求和自己的產(chǎn)品定義來決定。有些手機廠商在將其它配置都定義得較高,為了省成本選擇了512MB的RAM,這對用戶是一種不負(fù)責(zé)的態(tài)度。目前512MB的RAM與2GB的RAM價格差了十幾美元。
智能手機中各種Memory的集成形式
低端機一般是一顆主芯片(與AP集成的SoC)配一個Flash+DRAM。Flash與DRAM封一起,稱為ND MCP。這里Flash是NandFlash,一般采用的SLC目前主要的配置有兩種:一種是ND 4Gb+2Gb;另一種是ND4Gb+4Gb。前者也即廠商通俗所稱的512MB ROM+2RAM,目前價格約為4.2-4.5美元;后者也即廠商所報的512MB ROM+4RAM,目前報價約為7-7.5美元?,F(xiàn)在主流低端智能機已采用第二種了。低端機的512MB ROM不能支持Android 4.0。
中端智能機是由一顆主芯片(AP與集成)配一個eMMC和一顆DRAM。所謂eMMC是集成了閃存控制器,eMMC=NAND Flash+閃存控制芯片+標(biāo)準(zhǔn)接口封裝,這樣的最大好處是BB/CPU主控IC不需要再面對不同廠商的閃存的兼容性問題,以及閃存技術(shù)不斷升級帶來的接口兼容性問題,當(dāng)然,F(xiàn)lash與控制器集成還有很多好處,這里就不一一描述了,昌旭在去年曾寫過一文專門談eMMC的好處。并且,由于目前智能手機PCB上占位面積有限,三星等廠商將eMMC與DRAM封在一起,稱為eMCP。
今天主要談價格。目前的中端智能機(1500元-1999元)的主要配置也有兩種:一種是4GB eMMC+4Gb DRAM(注意,這時是大寫GB,且閃存采用了MLC)
最后,再看看蘋果三星這種高端配置的手機。這種手機一般采用與AP分離的方式,eMMC供與AP,上不再需要NOR Flash,而AP上還需要堆疊一顆DRAM(目前主要是LPDDR2)。所以,eMMC與DRAM也是分開的。eMMC的配置主流有16/32/64GB。