也許大家都注意到了,在過(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ǔ)的問(wèn)題就是 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 訪問(wèn)空間。比如 Microchip 公司的單片機(jī),PIC10LF320,是 12bit 的指令,它只能夠范圍 128 字節(jié)的 RAM 空間。對(duì)于 8031 單片機(jī),直接尋址的 RAM 空間也只有 128 字節(jié)。如果訪問(wèn)更大的外部存儲(chǔ)空間,則需要借助于執(zhí)行效率更低的間接指令。
單片機(jī)總線結(jié)構(gòu)分為 Harvard 結(jié)構(gòu)和 Von Neumann 結(jié)構(gòu),后者中,程序和數(shù)據(jù)存儲(chǔ)空間是在同一個(gè)訪問(wèn)空間中。如果單片機(jī)中集成了大量的 Flash 區(qū),那么留給數(shù)據(jù) RAM 空間訪問(wèn)地址就少了。
此外,高效的 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)為,正是由于沒(méi)有大量需要高 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)注
6040文章
44594瀏覽量
636943 -
RAM
+關(guān)注
關(guān)注
8文章
1369瀏覽量
114826
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論