也许大家都注意到,在过去的20年里,微控制器(MCU)经过跨越式发展,体现在系统时钟更高、外设模块更多、调试手段更方便、内核32位等多个方面。但MCU内部数据内存空间总是在十几个K(16~32KB)左右徘徊,虽然有些是基于Cortex M核单片机多达265kB RAM但在众多单片机型号阵列中,型号很少。
那么,单片机容易拥有多达数的原因是什么呢? MB的程序Flash而数据内存只有这么小的空间?
△ 小型封装的MCU
在一篇博文文Why do microcontrollers have so little RAM? [1] 在中间,人们给出了单片机RAM容量小的原因有很多。
在所有影响单片机中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 Neu ** nn在后者中,程序和数据存储空间在同一访问空间中。如果大量的单片机集成在一起Flash然后留给数据RAM空间访问地址较少。
此外,高效的C语言编译器可以有效地重复有限的应用RAM空间完成所需的任务。在复杂的应用中,通常使用多个单片机,这大大提高了系统的实时特性。巧妙的设计方案避免了大容量嵌入式系统RAM需求。因此,有些人认为这是因为没有太多的高需求RAM容量的应用要求是单片机内部的原因RAM真正的原因。
别忘了,虽然早期迷我们的电子游戏有很酷的图形界面,但它们甚至只有8个程序带数据k字节存储空间,如吃豆子游戏、太空入侵游戏等。让我们向早期的极简主义嵌入式编程师致敬。
▲ 吃豆子游戏
来源:TsinghuaJoking,作者:卓晴