末级缓存在SoC设计中所扮演的角色
SoC开发人员要找到一种方法来了解内存的需求一直都是一项挑战。本文研究了第四级或者说最后一级的缓存如何解决这种问题。
我们这个时代的怪异悖论之一是微处理器比存储器快。奇怪的是,微处理器是复杂的十亿晶体管电路,而DRAM只是相同存储单元的行和行。处理器很昂贵,但DRAM实际上是按磅出售的商品。
作为产品设计师,我们的工作之一是主要通过使用缓存来设计有关此问题的解决方案。我们将处理器封装在第一,第二和有时是第三级缓存中,以缓冲快速处理器和相对较慢的DRAM之间的延迟和带宽不匹配。这个方法已经使用了数十年,现在仍然有效。
图1:最后一级的高速缓存(也称为系统高速缓存)减少了对片外存储器的访问次数,从而减少了系统延迟和功耗,同时增加了可实现的带宽。它通常在物理上位于片外DRAM或闪存的存储控制器之前。
机器学习(ML)使该设计更具挑战性。ML推理需要大量的数据,就像图形卷积或数字信号处理(DSP)突破大型的内存驻留数据结构一样。用于ML的新SoC设计不仅需要快速处理器-它们还需要快速访问内存。否则,所有的CPU能力都将浪费掉。
解决内存挑战的方案
存储器制造商已开始开发各种新型DRAM,以弥补这种差距。我们已经有了理论带宽为1Gbit / sec的高带宽内存(HBM),甚至还有HBM2和HBM2E,它们都有望达到3Gbit / sec左右。而且,还有更多的解决方法,例如使用无线感应耦合的堆叠3D SRAM实现HBM2E带宽的三倍。但是要达到这样的速度,就需要多芯片模块,垂直堆叠的硅片,硅中介层,硅通孔(TSV),256位和1024位总线和硅微凸点,这一系列复杂且昂贵的制造方法。
那么像GDDR6这样的图形存储器呢?它们既便宜又量大。当然,他们也可以处理ML工作负载吗?没那么快。顾名思义,GDDR6接口用于图形卡,并且已经是第六代了。好消息是,图形芯片/卡是一个大批量的市场。坏消息是,这是一个短暂的市场。尽管倾向于在主流PC市场上抢购组件和技术,但这通常会使人失望。当主流发展时,您就可以从有限的供应商那里寻找过时的组件。SoC设计人员需要在设计生命周期内始终可用的组件和接口,而不管产品在现场的生命周期。
添加第四级(上级)缓存
那么,最好的内存解决方案是什么?作为提示,我们可以看看其他公司在做什么。拆解分析表明,苹果公司通过添加额外的缓存解决了速度失配问题。如果一家拥有几乎无限研发资源的大公司以这种方式围绕其SoC的瓶颈进行设计,那么可能值得研究。
诀窍是不要将高速缓存放在处理器附近。这违反直觉,但可行。大多数高端嵌入式处理器(如Arm Cortex A系列)将为每个CPU内核具有L1和L2缓存。有时,处理器联合体也具有L3缓存,并且在所有CPU内核之间共享。一切正常。无需调整。
现在,在全局系统总线上,外围设备和DRAM控制器附近添加第四个高速缓存(最后一级高速缓存),而不是将其作为CPU复合体的一部分。最后一级的高速缓存充当高速Arm内核与大型但相对较慢的主内存之间的缓冲区。
此配置之所以有效,是因为DRAM控制器从不“看到”新的缓存。它只是正常处理内存读/写请求。Arm处理器也是如此。它们正常运行。不需要额外的缓存一致性硬件或软件。像所有好的缓存一样,此最后一级的缓存对软件是透明的。
末级缓存的优缺点
像所有良好的缓存一样,最后一级的缓存可以帮助大幅提高性能,而无需诉诸于外来的或昂贵的(或未定义的)内存技术。它使您拥有的通用DRAM更好地工作。特别是,由于缓存是片上的,并且比片外DRAM快得多,并且与CPU群集之间的连接更宽,更快,因此,它可以同时改善延迟和带宽,这是双赢的结果。
缺点是什么?当然,缓存占用了内存区域。高速缓存控制逻辑(管理标签,查找表等)可以忽略不计,但是高速缓存RAM本身使用可测量的空间量。另一方面,最后一级的高速缓存可节省功耗,因为没有什么比从外部DRAM读写数据消耗更多的能量了,尤其是当您像现代工作负载那样对DRAM进行使用时。保留在芯片上的每个内存区域都可以节省大量的电力和时间。
还有一个安全好处。片上缓存事务不能被监听或受到信号探测或RF操作的侧信道攻击。缓存是经过测试的,易于理解的技术。这并不意味着它们实现起来很简单或微不足道,设计良好的缓存是一种真正的艺术,但是至少您应该知道您没有对某些供应商专有的前沿存储接口进行Beta测试。