也許大家都注意到了,在過去的 20 多年的時間里,微控制器(MCU)經(jīng)歷了跨越式的發(fā)展,這反映在很多方面,比如更高的系統(tǒng)時鐘、更多的外設(shè)模塊、更加便利的調(diào)試手段、32 位的內(nèi)核等等。但 MCU 內(nèi)部的數(shù)據(jù)內(nèi)存空間則始終在十幾 K(16~32KB)的左右徘徊,雖然有些基于 Cortex M4 核單片機(jī)有多達(dá) 265kB RAM 的型號,但是在眾多單片機(jī)型號陣列中,它們是寥寥無幾。
那么,究竟什么原因使得單片機(jī)很容易擁有多達(dá)數(shù) MB 的程序 Flash 空間,而數(shù)據(jù)內(nèi)存只有那么小呢?
△ 小型封裝的 MCU
在所有影響單片機(jī)內(nèi) RAM 增加的原因中,一個基礎(chǔ)的問題就是 RAM 會占用很多硅片面積,這也會直接引起芯片價格的增加。這是因為在同樣的硅片上,占用硅片面積大會使得 MCU 數(shù)量就會減少,特別是在晶圓片的邊界部分造成更大的浪費(fèi)。禍不單行,面積大的 IC 也更會產(chǎn)生缺陷,使得成品率下降。
第二個原因就是制作 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ù)的能力,就要求晶體管漏電流小,這也會造成晶體管的運(yùn)行速度降低。這需要在速度和數(shù)量之間做折中,但這種折中工藝不利于制作高速邏輯電路。
△ IC 和晶片
此外,大容量 RAM 電路在后期的測試階段也會消耗大量的時間,從而增加生產(chǎn)的時間成本。所以,經(jīng)濟(jì)原因造成生產(chǎn) RAM 的專門廠商興起。
功耗是另外一個限制因素。單片機(jī)系統(tǒng)通常對功耗有限制,很多情況下,單片機(jī)通過進(jìn)入睡眠狀態(tài)來減少耗電量。普通的 SRAM 耗電量很小,通過備用電池往往可以工作很多年。但 DRAM 則需要通過不斷刷新來維持存儲的數(shù)據(jù)。一旦停止刷新,由于漏電流的存在,DRAM 的內(nèi)容在不到一秒鐘的時間內(nèi)就會消失。所以,單片機(jī)中不能夠使用 DRAM 而只能使用占用硅片面積更大的 SRAM。
在現(xiàn)代 CPU 技術(shù)中,往往在新品中保留數(shù)量較少的 SRAM 作為緩存(Cache),而將大容量的 DRAM 作為 CPU 外部的數(shù)據(jù)存儲空間。
有一些非常酷的手段可以將不同生產(chǎn)工藝的 RAM 和 MCU 制作工藝融合在一起,例如多芯片封裝技術(shù)(Multi-Chip Package),將 RAM 新品放在 MCU 芯片上面堆疊一起進(jìn)行封裝,這比在電路板上將 RAM 與 MCU 集成更加節(jié)省系統(tǒng)體積,也提高數(shù)據(jù)傳輸速率。
△ AMD 的帶有堆疊封裝的 MCU
最后一個原因,那就是在絕大多數(shù)單片機(jī)應(yīng)用的場合所需要的 RAM 的容量都比較少。比如在嵌入式控制領(lǐng)域,很多很多傳感器信息都可以用極少字節(jié)的數(shù)據(jù)來表示,用于控制的參數(shù)和控制邏輯占用數(shù)據(jù)空間也很少。
所以當(dāng)需要大量 RAM 的應(yīng)用出現(xiàn)的時候,往往就會直接采用集成有大容量 DRAM 的電路板來工作。通過外部集成大容量 RAM 芯片要遠(yuǎn)比 MCU 內(nèi)部集成的 RAM 更加經(jīng)濟(jì)。
除了前面的原因之外,單片機(jī)指令集也會限制 RAM 訪問空間。比如 Microchip 公司的單片機(jī),PIC10LF320,是 12bit 的指令,它只能夠范圍 128 字節(jié)的 RAM 空間。對于 8031 單片機(jī),直接尋址的 RAM 空間也只有 128 字節(jié)。如果訪問更大的外部存儲空間,則需要借助于執(zhí)行效率更低的間接指令。
單片機(jī)總線結(jié)構(gòu)分為 Harvard 結(jié)構(gòu)和 Von Neumann 結(jié)構(gòu),后者中,程序和數(shù)據(jù)存儲空間是在同一個訪問空間中。如果單片機(jī)中集成了大量的 Flash 區(qū),那么留給數(shù)據(jù) RAM 空間訪問地址就少了。
此外,高效的 C 語言編譯器,可以有效重復(fù)應(yīng)用有限的 RAM 空間完成所需要的任務(wù)。在復(fù)雜的應(yīng)用中,往往會采用多個單片機(jī)協(xié)同完成,這大大提高系統(tǒng)實時特性。巧妙的設(shè)計方案會避免嵌入式系統(tǒng)對大容量 RAM 的需求。所以,有人認(rèn)為,正是由于沒有大量需要高 RAM 容量的應(yīng)用要求,是造成現(xiàn)在單片機(jī)內(nèi)部 RAM 少的真正原因。
別忘了,早期那些令我們著迷的電子游戲,雖然有著炫酷的圖形界面,但它們連程序帶數(shù)據(jù)總共也只有 8k 字節(jié)的存儲空間,比如吃豆子游戲,太空入侵游戲等。讓我們向早期的這些極簡風(fēng)格嵌入式編程人員致敬吧。
[1]Why do microcontrollers have so little RAM?
審核編輯 黃昊宇
-
單片機(jī)
+關(guān)注
關(guān)注
6039文章
44575瀏覽量
636373 -
RAM
+關(guān)注
關(guān)注
8文章
1369瀏覽量
114765
發(fā)布評論請先 登錄
相關(guān)推薦
評論