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