為什么單片機(jī)內(nèi)部RAM這么少?
也許大家都注意到了,在過去的20多年的時(shí)間里,微控制器(MCU)經(jīng)歷了跨越式的發(fā)展,這反映在很多方面,比如更高的系統(tǒng)時(shí)鐘、更多的外設(shè)模塊、更加便利的調(diào)試手段、32位的內(nèi)核等等。但MCU內(nèi)部的數(shù)據(jù)內(nèi)存空間則始終在十幾K(16~32KB)的左右徘徊,雖然有些基于Cortex M4核單片機(jī)有多達(dá)265kB RAM的型號(hào),但是在眾多單片機(jī)型號(hào)陣列中,它們是寥寥無幾。
那么,究竟什么原因使得單片機(jī)很容易擁有多達(dá)數(shù) MB的程序Flash空間,而數(shù)據(jù)內(nèi)存只有那么小呢?
在一篇博文“Why do microcontrollers have so little RAM?[1]”中,眾人給出了單片機(jī)RAM容量小的很多原因。
在所有影響單片機(jī)內(nèi)RAM增加的原因中,一個(gè)基礎(chǔ)的問題就是RAM會(huì)占用很多硅片面積,這也會(huì)直接引起芯片價(jià)格的增加。這是因?yàn)樵谕瑯拥墓杵?,占用硅片面積大會(huì)使得MCU數(shù)量就會(huì)減少,特別是在晶圓片的邊界部分造成更大的浪費(fèi)。禍不單行,面積大的IC也更會(huì)產(chǎn)生缺陷,使得成品率下降。
第二個(gè)原因就是制作RAM的工序復(fù)雜??梢酝ㄟ^不同手段優(yōu)化RAM生產(chǎn)工藝,但在制作MCU過程中, 同一芯片不可能經(jīng)歷過多的工序。有一些芯片加工服務(wù)廠商專門生產(chǎn)DRAM,這是利用特殊的半導(dǎo)體電容技術(shù)來極大減少RAM所占用的硅片面積。但DRAM需要通過不停刷新來維持其內(nèi)部數(shù)據(jù)。為了延遲DRAM單元保持?jǐn)?shù)據(jù)的能力,就要求晶體管漏電流小,這也會(huì)造成晶體管的運(yùn)行速度降低。這需要在速度和數(shù)量之間做折中,但這種折中工藝不利于制作高速邏輯電路。
此外,大容量RAM電路在后期的測(cè)試階段也會(huì)消耗大量的時(shí)間,從而增加生產(chǎn)的時(shí)間成本。所以,經(jīng)濟(jì)原因造成生產(chǎn)RAM的專門廠商興起。
功耗是另外一個(gè)限制因素。單片機(jī)系統(tǒng)通常對(duì)功耗有限制,很多情況下,單片機(jī)通過進(jìn)入睡眠狀態(tài)來減少耗電量。普通的SRAM耗電量很小,通過備用電池往往可以工作很多年。但DRAM則需要通過不斷刷新來維持存儲(chǔ)的數(shù)據(jù)。一旦停止刷新,由于漏電流的存在,DRAM的內(nèi)容在不到一秒鐘的時(shí)間內(nèi)就會(huì)消失。所以,單片機(jī)中不能夠使用DRAM而只能使用占用硅片面積更大的SRAM。
在現(xiàn)代CPU技術(shù)中,往往在新品中保留數(shù)量較少的SRAM作為緩存(Cache),而將大容量的DRAM作為CPU外部的數(shù)據(jù)存儲(chǔ)空間。
有一些非常酷的手段可以將不同生產(chǎn)工藝的RAM和MCU制作工藝融合在一起,例如多芯片封裝技術(shù)(Multi-Chip Package),將RAM新品放在MCU芯片上面堆疊一起進(jìn)行封裝,這比在電路板上將RAM與MCU集成更加節(jié)省系統(tǒng)體積,也提高數(shù)據(jù)傳輸速率。
最后一個(gè)原因,那就是在絕大多數(shù)單片機(jī)應(yīng)用的場(chǎng)合所需要的RAM的容量都比較少。比如在嵌入式控制領(lǐng)域,很多很多傳感器信息都可以用極少字節(jié)的數(shù)據(jù)來表示,用于控制的參數(shù)和控制邏輯占用數(shù)據(jù)空間也很少。
所以當(dāng)需要大量RAM的應(yīng)用出現(xiàn)的時(shí)候,往往就會(huì)直接采用集成有大容量DRAM的電路板來工作。通過外部集成大容量RAM芯片要遠(yuǎn)比MCU內(nèi)部集成的RAM更加經(jīng)濟(jì)。
單片機(jī)總線結(jié)構(gòu)分為Harvard結(jié)構(gòu)和Von Neumann結(jié)構(gòu),后者中,程序和數(shù)據(jù)存儲(chǔ)空間是在同一個(gè)訪問空間中。如果單片機(jī)中集成了大量的Flash區(qū),那么留給數(shù)據(jù)RAM空間訪問地址就少了。
此外,高效的C語言編譯器,可以有效重復(fù)應(yīng)用有限的RAM空間完成所需要的任務(wù)。在復(fù)雜的應(yīng)用中,往往會(huì)采用多個(gè)單片機(jī)協(xié)同完成,這大大提高系統(tǒng)實(shí)時(shí)特性。巧妙的設(shè)計(jì)方案會(huì)避免嵌入式系統(tǒng)對(duì)大容量RAM的需求。所以,有人認(rèn)為,正是由于沒有大量需要高RAM容量的應(yīng)用要求,是造成現(xiàn)在單片機(jī)內(nèi)部RAM少的真正原因。
別忘了,早期那些令我們著迷的電子游戲,雖然有著炫酷的圖形界面,但它們連程序帶數(shù)據(jù)總共也只有8k字節(jié)的存儲(chǔ)空間,比如吃豆子游戲,太空入侵游戲等。讓我們向早期的這些極簡(jiǎn)風(fēng)格嵌入式編程人員致敬吧。
卓老師,我覺得九月下旬真是一個(gè)好時(shí)間!就算是那些下學(xué)期才能開學(xué)的人,在家那么長(zhǎng)時(shí)間,有實(shí)力的一定會(huì)準(zhǔn)備的,再加上開學(xué)后一個(gè)多月,也還是會(huì)有很多人堅(jiān)持參加比賽的。
參考資料
Why do microcontrollers have so little RAM?: https://electronics.stackexchange.com/questions/134496/why-do-microcontrollers-have-so-little-ram
免責(zé)聲明:本文內(nèi)容由21ic獲得授權(quán)后發(fā)布,版權(quán)歸原作者所有,本平臺(tái)僅提供信息存儲(chǔ)服務(wù)。文章僅代表作者個(gè)人觀點(diǎn),不代表本平臺(tái)立場(chǎng),如有問題,請(qǐng)聯(lián)系我們,謝謝!