打印
[应用相关]

为什么单片机内部RAM这么少?

[复制链接]
579|18
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
jcky001|  楼主 | 2022-12-5 09:36 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

也许大家都注意到了,在过去的20多年的时间里,微控制器(MCU)经历了跨越式的发展,这反映在很多方面,比如更高的系统时钟、更多的外设模块、更加便利的调试手段、32位的内核等。但MCU内部的数据内存空间,则始终在十几K(16~32KB)的左右徘徊。虽然有些基于Cortex M4核单片机有多达265kB RAM的型号,但在众多单片机型号阵列中,它们是寥寥无几。

那么,究竟什么原因使得单片机很容易拥有多达数 MB的程序Flash空间,而数据内存只有那么小呢?

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

在所有影响单片机内RAM增加的原因中,一个基础的问题就是RAM会占用很多硅片面积,这也会直接引起芯片价格的增加。这是因为在同样的硅片上,占用硅片面积大会使得MCU数量就会减少,特别是在晶圆片的边界部分造成更大的浪费。祸不单行,面积大的IC也更会产生缺陷,使得成品率下降。

第二个原因就是制作RAM的工序复杂。可以通过不同手段优化RAM生产工艺,但在制作MCU过程中, 同一芯片不可能经历过多的工序。有一些芯片加工服务厂商专门生产DRAM,这是利用特殊的半导体电容技术来极大减少RAM所占用的硅片面积,但DRAM需要通过不停刷新来维持其内部数据。为了延迟DRAM单元保持数据的能力,就要求晶体管漏电流小,这也会造成晶体管的运行速度降低。这需要在速度和数量之间做折中,但这种折中工艺不利于制作高速逻辑电路。


使用特权

评论回复
沙发
jcky001|  楼主 | 2022-12-5 09:37 | 只看该作者

此外,大容量RAM电路在后期的测试阶段也会消耗大量的时间,从而增加生产的时间成本。所以,经济原因造成生产RAM的专门厂商兴起。

功耗是另外一个限制因素。单片机系统通常对功耗有限制,很多情况下,单片机通过进入睡眠状态来减少耗电量。普通的SRAM耗电量很小,通过备用电池往往可以工作很多年。但DRAM则需要通过不断刷新来维持存储的数据。一旦停止刷新,由于漏电流的存在,DRAM的内容在不到一秒钟的时间内就会消失。所以,单片机中不能够使用DRAM而只能使用占用硅片面积更大的SRAM。

在现代CPU技术中,往往在新品中保留数量较少的SRAM作为缓存(Cache),而将大容量的DRAM作为CPU外部的数据存储空间。

有一些非常酷的手段可以将不同生产工艺的RAM和MCU制作工艺融合在一起,例如多芯片封装技术(Multi-Chip Package),将RAM新品放在MCU芯片上面堆叠一起进行封装,这比在电路板上将RAM与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字节的存储空间,比如吃豆子游戏,太空入侵游戏等。让我们向早期的这些极简风格嵌入式编程人员致敬吧。


使用特权

评论回复
板凳
天天向善| | 2022-12-5 11:53 | 只看该作者
一般应用用不到大容量,实在要大容量,可以选择外扩RAM。

使用特权

评论回复
地板
LLGTR| | 2022-12-5 13:23 | 只看该作者
基本上够用呗,除了开发屏幕的设备,RAM几十KB就够用了。

使用特权

评论回复
5
jf101| | 2022-12-5 14:09 | 只看该作者
其实一般几百K的RAM就够用了,对于再大的程序就是外置的RAM进行

使用特权

评论回复
6
V853| | 2022-12-5 22:21 | 只看该作者
51单片机8KB的RAM都可以开发很多产品了,256KB能胜任市场上大多数产品了

使用特权

评论回复
7
sonicll| | 2022-12-6 09:10 | 只看该作者
本帖最后由 sonicll 于 2022-12-6 09:13 编辑

SRAM主要是占用面积大,现在高端产品上有3D堆叠技术,比如AMD的ryzen 7 5800x3D,把一片大容量SRAM堆叠封装在CPU上层,但是价格比较贵

使用特权

评论回复
8
SantaBunny| | 2022-12-6 10:08 | 只看该作者
一般够用的,实在想要大容量,可以选择外扩RAM

使用特权

评论回复
9
MessageRing| | 2022-12-6 11:12 | 只看该作者
这些基本够用的了

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1481

主题

4247

帖子

6

粉丝