为什么单片机内部RAM这么少?
也许大家都注意到了,在过去的 20 多年的时间里,微控制器(MCU)经历了跨越式的发展,这反映在很多方面,比如更高的系统时钟、更多的外设模块、更加便利的调试手段、32 位的内核等等。但 MCU 内部的数据内存空间则始终在十几 K(16~32KB)的左右徘徊,虽然有些基于 Cortex M4 核单片机有多达 265kBRAM的型号,但是在众多单片机型号阵列中,它们是寥寥无几。
那么,究竟什么原因使得单片机很容易拥有多达数 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?: https://electronics.stackexchange.com/questions/134496/why-do-microcontrollers-have-so-little-ram
为啥单片机RAM那么少?
你肯定好奇:手机内存(RAM)动辄8G、12G,为啥单片机RAM连1M都不到?
经典的AT89C51单片机,其内部只有128字节RAM (内存),同样经典的MSP430F149也只有2K的RAM空间。
即使现在用的比较多的STM32F1系列,其最大的RAM也不到100K 。
很多小伙伴就有这样的疑问:现在固态硬盘都以 T 为单位了,手机电脑内存都是8G、甚至32G了,为什么单片机RAM连1M都不到?
今天就来讲讲关于RAM以及单片机内存少的几点内容。
(备注:本文说的单片机,指MCU,微控制器)
关于RAM
RAM:Random Access Memory,随机存取存储器,也是大家所说的内存 。
RAM是一种易失性存储器,也就是说断电就会丢失存储数据。
RAM有一些常见特点:
随机存取
易失性
对静电敏感
访问速度块
······
随着需求的提高,技术的进步,RAM又发展了像SRAM、DRAM、SDRAM等多种类型的RAM存储器。
相对于Flash、硬盘等非易失性存储器而言,RAM具有更快的读写速度,因此RAM广泛用于各种单片机、嵌入式、计算机系统中。
但RAM也存在一些“不足”,导致在很多场合,RAM的容量都相对比较小。
RAM容量小的几点原因
RAM相对Flash、硬盘而言,要做到足够大容量,其成本相对Flash要多的多。
1.RAM工艺更复杂
RAM要求速度更快,电流又不能太大,为了能尽量满足和平衡更高要求,就需要使用更特殊和更先进的半导体电容技术。
2.更大的硅面积
因为RAM的工艺更复杂,其占用硅面积相对更大。
大家应该都知道芯片的制造过程 ,目前芯片主要使用硅这种材料制作芯片(当前,现在也发明了更先进的材料),占用硅面积更大,意味着单个芯片成本更贵,相信这个原理大家都懂。
通过认识wafer、die、cell它们的关系 你就能大概理解芯片其实是“批量”生成的。
3.功耗原因
单片机通常要求功耗不能太多,特别是低功耗的单片机,在待机模式下,要求nA级别的电路。
为了满足低功耗,单片机中RAM,通常是静态RAM(SRAM)。
这里要扩展一下与SRAM对应的DRAM(动态RAM),顾名思义,动态RAM就是需要定时给电容补充漏掉的电荷,也就是需要定时刷新,DRAM需要驱动电路,功耗相对SRAM自然更大。
4.单片机大容量RAM需求不大
大家都知道,使用单片机开发的项目,通常都是裸机,或者RTOS,一般不会用到大型软件,特别是早期的时候(早期少数对RAM有需求的项目,一般通过外扩RAM的方式)。
所以,早期很多项目对单片机RAM容量要求不高,甚至有很大一部分RAM都没有用到。
当然,随着UI、AI、物联网的快速发展,现在对单片机RAM的需求也在不断增加,很多新出的单片机RAM容量也在不断增加,比如256K,甚至512K了。
5.其他
除了以上说的几点,还有像寿命、稳定性、兼容性等也是间接影响RAM大小的因素。
最后,欢迎大家补充更多的原因。
声明: 本文转载自strongerHuang,如涉及作品内容、版权和其它问题,请于联系工作人员,我们将在第一时间和您对接删除处理!
相关问答
单片机 内存 多大 合适?单片机的总类太多了。以51为例。早期的ATMEL内存(RAM)为256BYTES。片外可以扩展到64K现在不同厂家的单片机RAM差别很多。仅片内集成的RAM容量从256BYTES-409...
c51 单片机 的片内 RAM 容量有多少?C51单片机的片内RAM容量为128字节。这128字节被分为两个部分,包括8字节的特殊功能寄存器区域和120字节的数据RAM空间。特殊功能寄存器用于控制和配置C51单片机...
8051 单片机 的rom和 ram 最大容量?8051单片机片内ROM最大容量是64K字节,片内RAM最大容量是256字节。有些新研制的51单片机还在片内增加了扩展RAM,目前最大容量已达8K字节。对于这种新研制的51...
89c52 单片机 的 RAM 为多少?我们的STC89C52共有512字节的RAM,分为256字节的片内RAM和256字节的片外RAM。一般情况下,我们是使用data区域,data不够用了,我们就用xdat...
51 单片机 的内存是多少?因型号的不同,51单片机的程序内存ROM是512字节到64k字节,数据缓存RAM是256字节,有的51单片机(例如STC)还集成了内部扩展RAM,小则1K字节,多则高达16K字节。...
单片机 的rom ram 各自存放什么数据?rom存放程序和表格了图片之类的数据,在程序运行时一般不可修改的,只能读只有部分EEPROM(也是ROM)在程序运行时可修改,但速度比较慢,没法和ram比ram存放...
2. 单片机 内部 RAM 可分为几个区?各区的主要作用是什么?MCS-51单片机内部RAM可分为5个区:1、存储矩阵区:RAM的核心区域是一个寄存器矩阵,用来存储信息,称为存储矩区。2、地址译码器区:地址译码器区的作用是将寄...
一般工业控制用 多大 内存 单片机 ?一般工业控制用的单片机内存大小因应用场景和控制任务不同而有所差异,但一般都需要具备较大的内存容量。比如,一些控制系统需要存储大量的程序代码、数据和参...
单片机 为何要有8KRAM,16KRAM之分-ZOL问答RAM越大,单片机能装的数据就越多,功能就意味着更强大,处理更庞大的工程这是外部扩展数据存储器的容量造成的容量不同啊就好比你买茶杯,有大有小,根据不同需求...
51 单片机 内存最大 多大 ?1.51单片机内存最大为64KB。2.这是因为51单片机是一种8位微控制器,其内存容量受到硬件设计的限制,最大只能支持64KB的存储空间。3.内存容量的大小对于单片...