绝大多数存储器靠电荷存数据。SRAM用六个晶体管锁住一个电平,DRAM用电容上的电荷,Flash用浮栅里捕获的电子。它们的共同点是:数据以电荷形式存在,而电荷会漏、会丢、会被粒子打翻。
MRAM完全不走这条路。它的存储单元叫磁性隧道结(MTJ),结构上是两层铁磁材料夹一层极薄的绝缘隧道层。其中一层磁化方向固定,称为参考层;另一层可以翻转,称为自由层。当两层磁化方向平行时,隧道结的电阻低,记为0;反平行时电阻高,记为1。读操作就是测量这个电阻差异,写操作则是用自旋极化电流把自由层的磁化方向翻过来------这也是STT-MRAM(自旋转移矩MRAM)名字的由来。
这个原理带来几个直接后果,都是工程上能摸到的:
第一,非易失。磁化方向不需要外部能量维持,断电之后状态还在。所以用它存参数、存日志,不需要纽扣电池、不需要超级电容,也不需要掉电时那套"检测到掉电赶紧把数据搬进EEPROM"的软件逻辑。
第二,写入即时生效。写一个字节就是一个总线周期的事,写完之后立刻可以读回来。Flash和EEPROM做不到这一点,它们有内部编程时间,写完要等几毫秒,期间总线是忙的;而且必须先擦后写,还得按页、按扇区管理。MRAM没有页和扇区的概念,写哪个地址就是哪个地址。
第三,写耐久极高。Flash的擦写次数是十万次量级,所以必须做磨损均衡、必须做坏块管理。MRAM的耐久指标高出好几个数量级,正常产品的生命周期里根本写不到上限,软件层可以完全不管这件事。
第四,天然抗软错误。因为不靠电荷存储,α粒子和大气中子入射不会像打翻SRAM那样把某一位翻过来。对电力保护、医疗这类"一次误码就是事故"的场景,这一条的价值常常被低估。需要客观补充一句:MTJ本身免疫,但外围的读写电路、灵敏放大器仍然是CMOS逻辑,功能安全评估该做的分析一项都不能省。
当然也有代价。MRAM写入时要驱动翻转电流,瞬时写入电流比SRAM写要大,对平均功耗敏感的电池供电产品,得按实际写入频次重新算一遍功耗预算。另外它的密度和成本还追不上DRAM和NAND,所以定位一直在"小容量、高可靠、非易失、SRAM接口"这个生态位里。