序言
用ai写了好几篇博客了,今天突然兴起,回归一次原汁原味的手敲博客。
事情的起因其实还是因为前面一直在忙毕业的事情,没好好读今年的ISSCC论文,最近闲下来了就开始补课,然后就看到了之前让我期待值很高的Intel的那篇论文[1]。看完之后,我的第一个想法是奇文共欣赏,这必须得给它写篇博客唠一唠。然后我又仔细想了想,突然感觉有了一些新的顿悟,继而乐子人的心态突然就起来了,所以我就开始写这么一篇神奇的文章,从文章标题上就可以感觉到不是很正经,解释一下,这个博客题目的来源是宫崎骏的电影《你想活出怎样的人生》叠加了互联网梗“何意味”(就是什么意思的意思,表达一种摸不到头脑的懵逼感),变成了《你想何出怎样的意味》(一种经典的阳春白雪叠加下里巴人的造梗手段),然后我又借用这个梗来表达我对SRAM CIM电路领域的一些现象的无奈和无语。

正文
回归正题,这篇文章的主题如下图所示,准备讨论一个非常朴素的问题:何谓SRAM CIM?我整理了两个维度,一个是从计算原理的角度出发,一个是从电路实现的角度出发。这个图画的也有致敬DND的阵营九宫格的成分,但是因为我的才疏学浅,右上四格我只能空着。

光看这幅图应该就能感受到一些招笑的成分了,花了8年的时间SRAM CIM的定义成功从左上角跑到了右下角。我来具体讲讲这里面的乐趣。
第一列第一行[2](存算单元一定要整体都是一个硬宏+纯粹的模拟计算才是存算一体):最原教旨的SRAM CIM,这些工作信仰的哲学是直接不改动或者小改动存储器,就能把存储资源直接改造成计算资源,这样闲置的存储资源就不会变成无用的dark silicon。所以就很合情合理的出现了硬宏+模拟计算的定义,因为存储器本身就是个硬宏,如果不改动/小改动这个硬宏的话,那就只能利用模拟计算的特性去做计算了,正好可以还可以讲一个模拟计算的高能效故事,万岁!
第一列第二行[3](存算单元一定要整体都是一个硬宏+适当的引入一些数字辅助模拟计算也是存算一体):原教旨SRAM CIM的方案持续一段时间之后有点破产,主要的原因来自于纯模拟方案的精度以及ADC上的开销有点难绷,所以这里开始出现一些妥协性的工作,当然这些数字逻辑(移位累加器)塞到硬宏里面,其实已经有点打破原教旨SRAM CIM的一些原则了。但是大体上来说,好像问题也不是太大.......至少大家一般还是会接受这是一个SRAM CIM的。
第一列第三行[4](存算单元一定要整体都是一个硬宏+还有人要模拟计算吗?纯数字干就完了!):TSMC带头砸碎了SRAM CIM的第一个核心命题:模拟计算。整那么多花里胡哨的干嘛,计算这东西纯数字逻辑就能干了,而且能效面效指标也挺好的,还能缩放到先进工艺节点,你说这样对SRAM的改动太大了?然而TSMC自己就是SRAM Vendor,这不正好可以卖新产品么。所以后面几年TSMC发了很多篇先进工艺的数字SRAM CIM,而且实打实的把这玩意往一个新的产品品类上去推,SRAM CIM Compiler都做出来了,还把IP弄给联发科去做手机SoC里面的NPU。这几年学术界和工业界也都在follow伟大的TSMC的这波操作,导致纯模拟SRAM CIM的生存空间被大大的压缩了。然而这并非一个终点,当SRAM CIM抛弃纯模拟计算的feature之后,更大的概念滑坡紧随而来。
第二列第三行[5](只有存储器是硬宏,计算是软宏也可以是存算一体单元+还有人要模拟计算吗?纯数字干就完了!):今年DATE上的文章,严格来讲人家发的不是电路的会议,但是我猜DATE也有电路的reviewer,所以说这个做法其实还是被承认了也算是SRAM CIM的。但是这里就更动摇SRAM CIM的概念了,如果我compiler做一个sram,然后再rtl写个计算单元然后综合布局布线好了直接贴上去,这也是SRAM CIM?那加速器全都可以算是SRAM CIM了,就很神秘,但是这个逻辑本身又是合理的,为什么我说数字SRAM CIM是逻辑滑坡的开始,因为都走全数字的计算逻辑了,为什么不走standard cell的方式去做呢?靠现在的综合工具还有后端工具的深度优化,实际上手动定制的硬宏形式其实是没啥性价比的。然而这还不是滑坡的终点。
第三列第三行[1:1](谁说存算一体单元需要硬宏?+还有人要模拟计算吗?纯数字干就完了!)雷霆震撼论文来了。Intel这篇直接把存储给搞成了12T Latch的standard cell然后整个一起塞进了全数字的综合流程,所谓 Fully Synthesizable 是也......所以这玩意儿和硬宏没有一毛钱关系了,甚至可以说和传统意义上的memory都没有关系,整个就是一个纯靠rtl写完之后综合,用standard cell搭出来的软宏。所以如果不说这下面这个die是SRAM CIM,有人能猜出来吗?

这么多年从左上角到右下角的转变,SRAM CIM越来越像一个看不透的东西,至少Intel的这个东西在电路形态上与其说是存储器不如说就是一个纯数字加速器,所以原教旨存算的“闲置存储资源复用为计算”和“模拟计算”的故事已经彻底破产了。如果说SRAM CIM电路的高能效既不靠模拟计算(事实上数字SRAM CIM也有很高的能效),也不靠存储器或者计算电路的定制设计(非硬宏的SRAM CIM也有很高的能效),那么它的优势又究竟在哪里,又该如何定义SRAM CIM?
所以目前我能够比较认可的说法是,SRAM CIM的定义和优势并不在电路层面上,或者说电路的实现形式并不构成一个很重要的分野,具体的技术路线甚至可能是屁股决定脑袋,例如TSMC做hard macro,我相信与其说有很强的技术上的理由,更大的成分应当是商业逻辑——它都是Fab了,不把这玩意做成hard macro IP,它卖什么呢?至于Intel,它又不靠自家Fab赚钱(不亏钱就不错了),做出完全不同的技术选择其实并不奇怪。
很早的时候我们又说过,对于memory bound(内存带宽受限)的场景来说,SRAM CIM的减少数据搬运是一个伪逻辑(见此博客),对compute bound(计算受限)的场景来说,SRAM CIM一个可能说得通的逻辑来自于在微架构层面上,将集中式的存储资源重新打散为分布式,并和同样集中式打散为分布式的计算资源进行紧耦合。因为这意味着,对于一个\(N \times N\)的存储器来说,其有效带宽从\(O(N)\)提升到了\(O(N^2)\):

将SRAM Memory看作是数据的生产者,Computing Logic看作是数据的消费者,一个简单的思想假设是,假设一个Cycle可以完成SRAM Memory一行的数据访存,那么对于左边的情况来说,一共需要N个Cycle去完成先Computing Logic的数据供给,此时Computing Logic再用1个Cycle把数据消耗完(做\(N^2\)次的计算)。在这个情况下,总的计算吞吐率是:\(N^2/(N+1)\),总的能耗则是:\(N\times E_{mem} + E_{logic}\),折算下来的能效是\(N^2/[(N+1)\times (N\times E_{mem} + E_{logic})] \approx N /(N \times E_{mem}+E_{logic})\)。而对于右边的情况,假定最极端的\(N=M\)的情况,那么一个Cycle就搞定了数据供给,再一个Cycle把数据全部消耗,这个情况下,总的计算吞吐率是:\(N^2/2\),总的能耗也是\(N\times E_{mem} + E_{logic}\),折算下来的能效是\(N^2/[2\times (N\times E_{mem} + E_{logic})]\),所以后者的能效会直接大前者一个\(O(N)\)。所以其实和所谓的减少数据搬运关联不大,该搬的数据还是要搬的,只是这种方式可以在相同的功耗下换到更大的带宽罢了。
当然上述只是一个非常简化的理论分析,首先前后两种情况下\(E_{mem}\)和\(E_{logic}\)实际上是变化的,而且完整的负载也必须考虑SRAM Memory的写更新问题。有时间的话我会把这些个东西整理成一个比较完整的工作。
结论
最后下个结论吧,这篇文章的目的主要还是追溯SRAM CIM的定义滑坡问题:原教旨SRAM CIM的一些设计原则是怎么在实践中一步一步的消失的,以及如果早期的设计原则消失了之后,SRAM CIM该如何去定义,以及如何寻找优势的来源。在电路层面上,我认为把SRAM CIM当作一种computing arithmatic design和SRAM memory design的交叉学科去看是合理的,从给出的理论分析上来说,刨去\(N\)是一个架构/微架构角度决策的参数之外,剩下的\(E_{mem}\)和\(E_{logic}\)的具体取值仍然是电路层面上问题,有效的优化手段仍然是有价值的(即使不放在SRAM CIM这个领域里讨论)。
参考文献
A. Agarwal, S. K. Hsu, M. A. Anders, A. Raha, D. A. Mathaikutty and R. Krishnamurthy, "30.9 A 147TOPS/W, 250TOPS/mm2, Fully Synthesizable, Digital Compute-in-Memory Accelerator Supporting INT8×INT8 with Zero-Point Quantization in Intel 18A Technology," 2026 IEEE International Solid-State Circuits Conference (ISSCC), San Francisco, CA, USA, 2026, pp. 528-530, doi: 10.1109/ISSCC49663.2026.11409207. ↩︎ ↩︎
W. -S. Khwa et al., "A 65nm 4Kb algorithm-dependent computing-in-memory SRAM unit-macro with 2.3ns and 55.8TOPS/W fully parallel product-sum operation for binary DNN edge processors," 2018 IEEE International Solid-State Circuits Conference - (ISSCC), San Francisco, CA, USA, 2018, pp. 496-498, doi: 10.1109/ISSCC.2018.8310401. ↩︎
C. -X. Xue et al., "15.4 A 22nm 2Mb ReRAM Compute-in-Memory Macro with 121-28TOPS/W for Multibit MAC Computing for Tiny AI Edge Devices," 2020 IEEE International Solid-State Circuits Conference - (ISSCC), San Francisco, CA, USA, 2020, pp. 244-246, doi: 10.1109/ISSCC19947.2020.9063078. ↩︎
Y. -D. Chih et al., "16.4 An 89TOPS/W and 16.3TOPS/mm2 All-Digital SRAM-Based Full-Precision Compute-In Memory Macro in 22nm for Machine-Learning Edge Applications," 2021 IEEE International Solid-State Circuits Conference (ISSCC), San Francisco, CA, USA, 2021, pp. 252-254, doi: 10.1109/ISSCC42613.2021.9365766. ↩︎
Zhou, Y., Ma, J., Li, X., Sheng, Y., Yuan, Y., Wang, Y., Wang, B., Wu, Y., Shen, S., Xing, W. W., Sun, D., Li, L., & Xiao, Z. (2026). OpenACM: An Open-Source SRAM-Based Approximate CiM Compiler. ArXiv, abs/2601.11292 ↩︎
