也許大家都注意到了,在過(guò)去的 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)陣列中,它們是寥寥無(wú)幾。
那么,究竟什么原因使得單片機(jī)很容易擁有多達(dá)數(shù) MB 的程序 Flash 空間,而數(shù)據(jù)內(nèi)存只有那么小呢?
△ 小型封裝的 MCU
在所有影響單片機(jī)內(nèi) RAM 增加的原因中,一個(gè)基礎(chǔ)的問題就是 RAM 會(huì)占用很多硅片面積,這也會(huì)直接引起芯片價(jià)格的增加。這是因?yàn)樵谕瑯拥墓杵希加霉杵娣e大會(huì)使得 MCU 數(shù)量就會(huì)減少,特別是在晶圓片的邊界部分造成更大的浪費(fèi)。禍不單行,面積大的 IC 也更會(huì)產(chǎn)生缺陷,使得成品率下降。
第二個(gè)原因就是制作 RAM 的工序復(fù)雜。可以通過(guò)不同手段優(yōu)化 RAM 生產(chǎn)工藝,但在制作 MCU 過(guò)程中, 同一芯片不可能經(jīng)歷過(guò)多的工序。有一些芯片加工服務(wù)廠商專門生產(chǎn) DRAM,這是利用特殊的半導(dǎo)體電容技術(shù)來(lái)極大減少 RAM 所占用的硅片面積。但 DRAM 需要通過(guò)不停刷新來(lái)維持其內(nèi)部數(shù)據(jù)。為了延遲 DRAM 單元保持?jǐn)?shù)據(jù)的能力,就要求晶體管漏電流小,這也會(huì)造成晶體管的運(yùn)行速度降低。這需要在速度和數(shù)量之間做折中,但這種折中工藝不利于制作高速邏輯電路。
△ IC 和晶片
此外,大容量 RAM 電路在后期的測(cè)試階段也會(huì)消耗大量的時(shí)間,從而增加生產(chǎn)的時(shí)間成本。所以,經(jīng)濟(jì)原因造成生產(chǎn) RAM 的專門廠商興起。
功耗是另外一個(gè)限制因素。單片機(jī)系統(tǒng)通常對(duì)功耗有限制,很多情況下,單片機(jī)通過(guò)進(jìn)入睡眠狀態(tài)來(lái)減少耗電量。普通的 SRAM 耗電量很小,通過(guò)備用電池往往可以工作很多年。但 DRAM 則需要通過(guò)不斷刷新來(lái)維持存儲(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ù)傳輸速率。
△ AMD 的帶有堆疊封裝的 MCU
最后一個(gè)原因,那就是在絕大多數(shù)單片機(jī)應(yīng)用的場(chǎng)合所需要的 RAM 的容量都比較少。比如在嵌入式控制領(lǐng)域,很多很多傳感器信息都可以用極少字節(jié)的數(shù)據(jù)來(lái)表示,用于控制的參數(shù)和控制邏輯占用數(shù)據(jù)空間也很少。
所以當(dāng)需要大量 RAM 的應(yīng)用出現(xiàn)的時(shí)候,往往就會(huì)直接采用集成有大容量 DRAM 的電路板來(lái)工作。通過(guò)外部集成大容量 RAM 芯片要遠(yuǎn)比 MCU 內(nèi)部集成的 RAM 更加經(jīng)濟(jì)。
除了前面的原因之外,單片機(jī)指令集也會(huì)限制 RAM 訪問空間。比如 Microchip 公司的單片機(jī),PIC10LF320,是 12bit 的指令,它只能夠范圍 128 字節(jié)的 RAM 空間。對(duì)于 8031 單片機(jī),直接尋址的 RAM 空間也只有 128 字節(jié)。如果訪問更大的外部存儲(chǔ)空間,則需要借助于執(zhí)行效率更低的間接指令。
單片機(jī)總線結(jié)構(gòu)分為 Harvard 結(jié)構(gòu)和 Von Neumann 結(jié)構(gòu),后者中,程序和數(shù)據(jù)存儲(chǔ)空間是在同一個(gè)訪問空間中。如果單片機(jī)中集成了大量的 Flash 區(qū),那么留給數(shù)據(jù) RAM 空間訪問地址就少了。
此外,高效的 C 語(yǔ)言編譯器,可以有效重復(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)格嵌入式編程人員致敬吧。
參考資料
[1]Why do microcontrollers have so little RAM?
審核編輯 黃昊宇
-
單片機(jī)
+關(guān)注
關(guān)注
6061文章
44868瀏覽量
646048 -
RAM
+關(guān)注
關(guān)注
8文章
1391瀏覽量
116650
發(fā)布評(píng)論請(qǐng)先 登錄
單片機(jī)學(xué)習(xí)之GPIO
為什么現(xiàn)在電流饋電型雙向DCDC諧振變換器的研究這么少?
單片機(jī)內(nèi)部怎么產(chǎn)生三路相位相差120°的正弦波?
51單片機(jī)的主要邏輯功能部件是什么
單片機(jī)的中斷機(jī)制
計(jì)算機(jī)主機(jī)內(nèi)部結(jié)構(gòu)
單片機(jī)開發(fā):使用內(nèi)部看門狗定時(shí)器(WDT)還是外掛看門狗芯片?
單片機(jī)io口怎么配置成輸出口
單片機(jī)的三種總線結(jié)構(gòu)
單片機(jī)燒錄程序的線比單片機(jī)上的少還能燒錄嗎
單片機(jī)燒錄程序的基本步驟是什么
單片機(jī)引腳懸空是什么電平
簡(jiǎn)述單片機(jī)定時(shí)器的工作原理
國(guó)產(chǎn)單片機(jī)(MCU)崛起 —— 51系列

評(píng)論