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