為什麼單片機只有那麼少的RAM?

也許大家都注意到了,在過去的20多年的時間裡,微控制器(MCU)經歷了跨越式的發展,這反映在很多方面,比如更高的系統始終、更多的外設模塊、更加便利的調試手段、32位的內核等等。但MCU內部的數據內存空間則始終在十幾K(16~32KB)的左右徘徊,雖然有些基於Cortex M4核單片機有多達265kB RAM的型號,但是在眾多單片機型號陣列中,它們是寥寥無幾。

那麼,究竟什麼原因使得單片機很容易擁有多達數 MB的程序Flash空間,而數據內存只有那麼小呢?

為什麼單片機只有那麼少的RAM?

△ 小型封裝的MCU

在一篇博文“Why do microcontrollers have so little RAM?[1]”中,眾人給出了單片機RAM容量小的很多原因。

在所有影響單片機內RAM增加的原因中,一個基礎的問題就是RAM會佔用很多硅片面積,這也會直接引起芯片價格的增加。這是因為在同樣的硅片上,佔用硅片面積大會使得MCU數量就會減少,特別是在晶圓片的邊界部分造成更大的浪費。禍不單行,面積大的IC也更會產生缺陷,使得成品率下降。

第二個原因就是製作RAM的工序複雜。可以通過不同手段優化RAM生產工藝,但在製作MCU過程中, 同一芯片不可能經歷過多的工序。有一些芯片加工服務廠商專門生產DRAM,這是利用特殊的半導體電容技術來極大減少RAM所佔用的硅片面積。但DRAM需要通過不停刷新來維持其內部數據。為了延遲DRAM單元保持數據的能力,就要求晶體管漏電流小,這也會造成晶體管的運行速度降低。這需要在速度和數量之間做折中,但這種折中工藝不利於製作高速邏輯電路。

為什麼單片機只有那麼少的RAM?

△ IC和晶片

此外,大容量RAM電路在後期的測試階段也會消耗大量的時間,從而增加生產的時間成本。所以,經濟原因造成生產RAM的專門廠商興起。

功耗是令外一個限制因素。單片機系統通常對功耗有限制,很多情況下,單片機通過進入睡眠狀態來減少耗電量。普通的SRAM耗電量很小,通過備用電池往往可以工作很多年。但DRAM則需要通過不斷刷新來維持存儲的數據。一旦停止刷新,由於漏電流的存在,DRAM的內容在不到一秒鐘的時間內就會消失。所以,單片機中不能夠使用DRAM而只能使用佔用硅片面積更大的SRAM。

在現代CPU技術中,往往在新品中保留數量較少的SRAM作為緩存(Cache),而將大容量的DRAM作為CPU外部的數據存儲空間。

有一些非常酷的手段可以將不同生產工藝的RAM和MCU製作工藝融合在一起,例如多芯片封裝技術(Multi-Chip Package),將RAM新品放在MCU芯片上面堆疊一起進行封裝,這比在電路板上將RAM與MCU集成更加節省系統體積,也提高數據傳輸速率。

為什麼單片機只有那麼少的RAM?

△ AMD的帶有堆疊封裝的MCU

最後一個原因,那就是在絕大多數單片機應用的場合所需要的RAM的容量都比較少。比如在嵌入式控制領域,很多很多傳感器信息都可以用極少字節的數據來表示,用於控制的參數和控制邏輯佔用數據空間也很少。

所以當需要大量RAM的應用出現的時候,往往就會直接採用集成有大容量DRAM的電路板來工作。通過外部集成大容量RAM芯片要遠比MCU內部集成的RAM更加經濟。

為什麼單片機只有那麼少的RAM?

△ 高容量的DRAM

除了前面的原因之外,單片機指令集也會限制RAM訪問空間。比如Microchip公司的單片機,PIC10LF320,是12bit的指令,它只能夠範圍128字節的RAM空間。對於8031單片機,直接尋址的RAM空間也只有128字節。如果訪問更大的外部存儲空間,則需要藉助於執行效率更低的間接指令。

單片機總線結構分為Harvard結構和Von Neumann結構,後者中,程序和數據存儲空間是在同一個訪問空間中。如果單片機中集成了大量的Flash區,那麼留給數據RAM空間訪問地址就少了。

此外,高效的C語言編譯器,可以有效重複應用有限的RAM空間完成所需要的任務。在複雜的應用中,往往會採用多個單片機協同完成,這大大提高系統實時特性。巧妙的設計方案會避免嵌入式系統對大容量RAM的需求。所以,有人認為,正是由於沒有大量需要高RAM容量的應用要求,是造成現在單片機內部RAM少的真正原因。

別忘了,早期那些另我們著迷的電子遊戲,雖然有著炫酷的圖形界面,但它們連程序帶數據總共也只有8k字節的存儲空間。讓我們向早期的這些嵌入式編程人員致敬吧。

為什麼單片機只有那麼少的RAM?

▲ 吃豆子游戲

為什麼單片機只有那麼少的RAM?

△ 太空入侵電子遊戲

[1]

Why do microcontrollers have so little RAM?: https://electronics.stackexchange.com/questions/134496/why-do-microcontrollers-have-so-little-ram


分享到:


相關文章: