首页 > 其他分享 >CIM技术经典导读之数字SRAM CIM技术

CIM技术经典导读之数字SRAM CIM技术

时间:2024-01-18 21:11:08浏览次数:30  
标签:SRAM TOPS 技术 CIM cell 加法器 4b

CIM技术经典导读之数字SRAM CIM技术

序言

啊哈,挖个新坑,计划把我这边自己感觉比较classic的一些CIM工作给整理出来,和读者们一起分享讨论,论文的主要来源会挑选ISSCC,VLSI上的文章,如何评价是否classic这个主要是根据我自己的感觉来,可能也会参照一下highlight paper或者引用量这些指标,如果读者们觉得有classic的,希望我加上的,也欢迎在评论里指教。

那么这次的数字SRAM CIM技术,我挑选的是TSMC在ISSCC上21年到23年连续发表的三篇论文以及22年VLSI上的论文,当然24年他们在ISSCC上又发布了新作,但是因为论文还没有公示,所以这篇里先不写了,等会议开完之后再update。

作为全球Foundry的No.1,TSMC的这几个工作代表了工业界对CIM Macro技术的先进探索,TSMC在22年和23年ISSCC发表的CIM Macro使用了最先进的工艺节点(5nm,4nm)。我在这里斗胆预测TSMC内部也在计划将先进的SRAM CIM Macro给IP化,产品化,并在未来提供给设计厂商。

那么闲话少叙,我们开始品鉴一下TSMC的这几篇文章。

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的文章,我称之为ISSCC上的数字SRAM CIM的开山之作。尽管在工艺上使用的是并不先进的22nm,但这篇工作毫无疑问在数字SRAM CIM技术领域具有奠基性,启发了大量后续的数字SRAM CIM工作。

开篇就叙述了Digital CIM的动机,第一点是不像Analog CIM那样存在accuracy loss,此外更适合高工艺节点的scaling。合情合理。

如下图所示,整个CIM Macro的结构实际上非常简单,6T SRAM四个一组形成对4bit weight的存储,每个SRAM Cell旁边紧密耦合一个4T或非门的1b*4b乘法器。activation从IN<255:0>上以bit serial的方式送入,每四个SRAM Cell+或非门完成1b*4b的计算,得到一个4b的部分积。然后这256个部分积被送入到一个多级的Adder Tree中进行累加。形成256*1b*4b的部分积,并送入累加器中。然后下一个cycle再送入下一位的activation,再次得到新的256*1b*4b的部分积,然后送入累加器,直到activation全部送完。整个Macro的规模是256*4*64=64Kb。

image

具体结构上,可以看到SRAM Array仍然保留正常的WL,BLB和BL,主要的修改是增加了IN_B,意思是对activation的正常比特位做取反。这是因为比特乘法使用的是或非门,而不是与门。利用德摩根律,我们知道\(\overline{A\cdot B}=\overline{A}+\overline{B}\),因此\(A\cdot B=\overline{\overline{A}+\overline{B}}\),所以只要对activation和weight均作取反(对weight的取反非常简单,因为SRAM存储时本来就会留一个原值和一个取反值,只要把取反值拿出来用就行了),然后送入或非门就可以等效成与门,这样做的好处是MOS管与门实现一般需要6T,而或非门只需要4T,一下子省掉1/3的管子。Adder Tree的结构就是一个基本加法树,可以算出需要log2(256)=8级的加法器。这个是一个比较大的问题,后面讨论。累加器就是一个正常的移位累加结构,主要是注意一下对符号位的处理机制,显然这里是补码机制,如果符号位是0就直接原码做符号位拓展后加进去,如果符号位是1就按照补码规则,取反加一原码转成补码之后再加进去。看波形可知道对于4bit的activation需要4个cycle算一个结果,第5个cycle开始结果有效。另外一个需要注意的问题是,对于水平方向上的出线,每4b cell就需要出4根线,一共256行4b cell就需要256*4根线,如果进一步拓展到n列的话,那么线数继续比例增大,变成256*4*n根线,至少4*n要挤在两行cell之间的狭小空间里,可想而知很容易会造成走线的阻塞问题,这也是为什么这个设计里一列4b cell配一套加法器树,而不是多列cell去配一个。

image

为了减少功耗使用了DVS技术,再Weight update时使用VDD电压,MAC时使用低于VDD的电压。在Adder Tree中使用了两种不同的Full Adder[1],14T和28T,来实现节省能耗。基于静态逻辑门的28T加法器具有传统的上拉下拉CMOS结构,能够提供全摆幅输出和良好的驱动能力,14T加法器则具有更少的晶体管数量,更小的面积,更低的功耗和延迟。在TSMC这篇的Adder Tree中选择了将两类加法器交替使用。

image

理论上来说,对于这个设计,activation=0的cell都是可以进行weight update的,而activation不等于0的cell进行MAC操作。当然我个人对这个点有些怀疑,因为bit serial输入时,总会出现IN_B线上电压为0的情况,这时做写入的话是否会对正在做MAC操作的cell造成误写入呢?我觉得完全是有这种可能的。这个数字SRAM CIM结构是可以实现比特拓展的,activation的拓展不必多少,bit serial想灌几位灌几位,只要累加器对应的增加周期就行。对于weight来说,可以通过将多个4b weight组合成8b/12b/16b等多位结构。只需要在外部计算时进行移位累加即可。这是很好理解的,以8b*8b为例:

\[A[7:0]*W[7:0]=A[7:0]*(W[7:4]<<4+W[3:0])=(A[7:0]*W[7:4])<<4+A[7:0]*W[3:0] \]

这里\(A[7:0]*W[7:4]\)和\(A[7:0]*W[3:0]\)分别是第一列4b cell和第二列4b cell产生的部分积。

为了处理有符号数累加的问题,他们使用了一个带有符号位拓展的全加器。

image

这里展示了电路的基本结构,主要就是PLL,时钟产生和控制电路,CIM IN SRAM和CIM OUT SRAM,shmo plot,不同电压下的TOPS vs TOPS/W曲线以及不同toggle rate下的TOPS/W vs VDD曲线。没有太多好说的,符合一般常识,电压降低主频降低TOPS会下降,但是TOPS/W反而会提升,因为功耗的降低速度是快于频率的降低速度的(频率跟电压呈线性关系,功耗跟电压呈三次方关系)。另外toggle rate越低,动态翻转越少,功耗越小,TOPS/W自然越高。从shmoo plot上来看TOPS(同时也是frequency)和VDD呈现的也是线性关系,电压从0.52拉到0.92,TOPS能够涨10x。

image

最后是比较结果,从结果上来看从Throughput,Energy efficiency几个重要指标上来说基本上拉爆了之前的analog CIM工作。这里在比较时没有根据工艺把指标scaling一下是个小缺点,不过不是太大的问题。

image

A 5-nm 254-TOPS/W 221-TOPS/mm2 Fully-Digital Computing-in-Memory Macro Supporting Wide-Range Dynamic-Voltage-Frequency Scaling and Simultaneous MAC and Write Operations

然后来到这篇2022年的文章,这次直接放大招,5nm工艺甩在脸上,我是ISSCC组委会我也抵抗不了。

工作动机还是阐述了一下和Analog CIM的对比,这里比的是电荷式的Analog CIM,Analog CIM在先进工艺下ADC的动态范围很成问题,首先供电电压缩小,其次MOS的\(I_{DS}\)具有更强的非线性,最后电容也变小了,在5nm下benchmark了64 4b input*4b weight的PPA。比较结果上来看,数字CIM有1.4x的TOPS/mm2算力密度提升和1.3x的TOPS/W能效提升。Digital CIM对比Analog CIM没有accuracy loss这个是老生常谈了,最后Digital CIM还可以搞DFT。

这里用的Digital CIM的bit cell和21年的很不一样,之前是一个6T SRAM cell加一个4T或非门,这次是12T bit cell,对于这个bit cell,这就是一个普通SRAM,并不包含乘法器的功能,乘法器实际上在阵列外头(所以严格来说这应该算是近存计算了)。

image

下图是整个Digital SRAM CIM的具体架构,就像之前所说,乘法器和加法树被移动到了阵列之外,这是最主要的架构改动。其他的与21年的设计没有什么很显著的区别,仍然是以4b cell为一个单位,输入XIN也分到了阵列外,通过并转串后送入到64根XINLB上,连接到或非门的乘法器上,而不再和21年的一样从阵列中的IN_B线输入。仍然做1b*4b的计算,从XIN来的线的位宽只有1,从SRAM来的线位宽是4。一共有256条RBLBs出线,除以4之后就是64个或非门乘法器,产生64个1b*4b的部分积,再通过log2(64)=6级的加法树将这些部分积全部累加,最后通过移位累加器将bit serial产生的多个部分积累加在一起。这套流程和21年的工作是完全一样的。唯一的区别可能只有多了个ACM_EN的累加器使能信号。从规模上来说,刚才我们讲的这个64*4b*1b的MAC array一共有64个,每个MAC Array里面有4*4*64个SRAM Cell,即1Kb的小sub-array,总的容量就是64*1Kb=64Kb,和21年的工作相同。

image

接着看看电路细节,首先是加法器上使用了Reversed-polarity full-adder,这次Full Adder又不一样了,按照这里的说法,这种Full Adder对比standard-cell里的可以节省12.5%的面积和15%的MAC功耗,每个Full Adder用了24根管子,并且仍然是完全上拉/下拉的,只是在真值上输入/输出的极性是反转的,即输入输入不取反,那么输出(S,CO)就是正常FA的取反,如果要想要和FA一样的输出,那么输入(A,B,CI)就得取反。对于这个12T bit cell,可以看到有WBLB,WWL,WWLB,RWL,RWLB和RBLB一共六根控制线,当WWL为低,WWLB为高时,数据锁存在SRAM内部,RWL和RWLB一个为高一个为低时,数据被读出到RBLB上。而进行写入操作时,WWL为高,WWLB为低,写入的传输门打开,WBLB的数据被写入到SRAM中,随后WWL拉低,WWLB拉高,数据锁存在SRAM内。12T SRAM cell的RWL,RWLB是每两个bank之间share的,而WWL和WWLB是分离的,这样的排布可以起到减少走线阻塞的作用,这里我的理解是在21年的工作里WL和IN_B是平行的,导致这个方向上的线过多会引发阻塞,而这次的工作里WL和RBLB之间相互垂直,所以不存在这方面的问题,同时RWL/RBLB在两个bank之间共享,也可以减少一部分这个方向上的走向,避免阻塞。最后是整个结构的floorplan,大部分的工作对这个问题其实不怎么重视,但我觉得这里的问题实际上还是挺值的关注的,也是我觉得整个工作最有意思的部分,可以看到第一级和第二级adder和四个SRAM bank以及乘法器耦合在一起,形成bank+adder的块,每两个这样的块再去share一个第三级的adder,每四个share了第三级adder的块再一起去share第四级adder,然后每8个一起share了第四级adder的块再一起去share第五级adder,最后两个share了五级adder的一共16个块再一起去share第六级加法器与移位累加器还有写入电路结构。这样算下来16个块,每个块里4个bank,所以总共是64个bank。这样的floorplan使得整体结构上不存在一大块独立的巨型多级加法树,使得布局变得更加的规整。

image

从时序上来看,读和写采用分离的时钟,和21年一样,是4个CLKR cycle完成4b*4b的计算。在写入时使用独立的CLKW时钟,并且可以比CLKR更快。由于12T SRAM cell结构的使用,这次的结构可以实现互不干扰的写入和读出。因为RWL/RWLB只对要读出的cell打开,WWL/WWLB只对要写入的cell打开,同时写入的cell的RWL/RWLB是关闭的,所以写入的内容也不会干扰到读出的cell上。最后是8b计算的结果如何组合出来,和21年的工作一样,只需要对两个4b MAC阵列的部分积再做移位累加即可。

image

在数据测试结果上,最小操作电压\(V_{MIN}\)和阈值电压相关,由于阈值电压随着温度升高而减小,因此高温度下阈值操作电压会更小,在-40℃时,低于0.5V的电压就可以实现95%的操作成功率,属于是秀了一波工艺的肌肉。动态电流(\(\mu A/MHz\))和电压VDD成正比例关系,在权重稀疏度固定为50%的情况下,输入激活值的比特稀疏度越高那么动态电流就越小。频率\(f_{MAX}\)和电压VDD呈正比例关系。

image

最后是和其他工作的对比,这次是比较了TOPS/mm2和TOPS/W的算力密度指标和能效指标,这次还是没做工艺和比特位数的归一化比较,哈哈。有趣的是和一个同样是5nm的NPU中的MAC阵列做了对比,在两个指标上都体现出了优势(虽然能效上NPU写的是系统级能效,使得这个指标的对比有点unfair哈哈),这也是证明了Digital SRAM CIM是可以在先进工艺芯片里作为一个高效的MAC计算电路使用的。

image

A 4nm 6163-TOPS/W/b 4790-TOPS/mm2/b SRAM Based Digital-Computing-in-Memory Macro Supporting Bit-Width Flexibility and Simultaneous MAC and Weight Update

23年这篇工作,工艺升级,来到4nm。秀肌肉行为,但是无法拒绝。

一眼可以看出是对22年工作的改进,对比了22年的12T SRAM cell+或非门乘法器的方案,换成了更紧凑的8T SRAM cell+OAI的方案。总管子数量从28T减少到了24T,同时垂直方向上的信号数量从9根减少到了6根,这显然会带来面积和走线上的提升。比特位数上仍然是以4b为单位,可以组织成8b/12b/16b等更高的位数。配合硬件上的量化和反量化,在ImageNet数据集上,MobileNet_v2和ResNet-50上INT16可以展现出非常接近FP16的精度,而INT8的精度掉点在1%-2%,但是能效可以做到INT16的四倍,INT12则是一个相对折中的方案,这算是解释了为什么这篇工作只做了8b和12b权重。

image

在整体结构上可以看出与22年工作的相似性。仍然是一个SRAM sub-array去连接外部乘加器的近存结构。SRAM sub-array一共有144个bank,12b cell,即三组4b cell,两行,总共有16个sub-array,这样可以计算出规模是16*144*12*2=54Kb。在一个sub-array及其乘加电路中,由于Local-MAC一共做了三个,所以出线时是144*12,分到每个Local-MAC上的是144*4。乘法器仍然是1b*4b结构,144*1*2根RWLB上将144个4b的XIN并转串后输入上来。Local-MAC有144个1b*4b乘法器,后面跟着加法树,一共ceil(log2(144))=8级。最后的Global IO包含了一套加法树,处理三个Local MAC的求和以及移位累加。对于8b权重的情况,使用两个Local-MAC进行组合,第三个Local-MAC被disable掉以节省功耗(通过一个或非门实现),12b权重的情况使用三个Local-MAC组合。所以权重实际上只有8b和12b两种位宽模式。有符号8b时第二个Local-MAC的4b weight是Signed,有符号12b时第二个Local-MAC的4b weight是unsigned,第三个Local-MAC的4b weight是signed。对于XIN来说,有8b/12b/16b三种可选的位宽模式,和之前的两个工作一样,4个cycle算完4b的MAC,之后的8b/12b/16b就对应的8 cycle/12 cycle/16 cycle。

image

在floorplan上仍然延续22年的思路,SRAM array和Local adder耦合在一起形成一个块,两个块share一个semi-global-adder,四个块再去share Global adder和移位累加器。这里讨论了mix-Vt设计的问题,即混用高Vt管子和低Vt管子,高Vt管子漏电小但是速度慢,低Vt管子漏电大但是速度快,混用两种管子来平衡速度和漏电,这是后端常识。采用mix-Vt方案可以做到比纯低Vt管子可以减少38.6%的漏电。最后分配上,在Stage1中高Vt和低Vt产生的漏电是49.5%与50.5%,基本对半分;造成的延迟是36.7%与63.3%,说明在延迟链上更多的使用了低Vt管子来提高速度,在总的器件数量上来说高Vt管子对比低Vt管子是76.2%比23.8%。电路采用了pipeline结构来提高吞吐率,为了使得pipeline之间的延迟近似相等,Stage1采用了mix-Vt方案和使用长线(线延迟更大)的情况下减少了延迟链上的门数量,从而获得更小的门延迟,而Stage2选择全用低Vt管子,更短的线,但有更多的门来增大门延迟。最后的静态时序分析STA曲线上可以看到两个Stage的延迟在不同电压域下保持基本相同,最高在0.9V下可以飙到1.5GHz频率。

image

接下来看一下电路的细节部分,首先是8b bit cell,相比之前的12b bit cell少掉了读出的非门和传输门构成的4根管子,只保留了写入时用的8根管子,控制线也一下子减少了3根,只剩下WBL,WWL和WWLB,而存储反相数据的WB则直接接触连到了OAI上。RWLB是input的输入线,两row的两个cell每个配一根,在进行计算时一次只会用一个cell的数据,另一个的RWLB始终拉高,从而使得或门的输出始终为1,这时与非门由于一个输入被固定为1,其功能就相当于是一个非门,再和前面的或门组合一下,这实际上就仍然是一个或非门,还是最后还是回到了21年和22年的或非门乘法器的思路。为了减少水平方向上的走线负担,这里用了一个叫做Triple cell height的技术,即把ROW[0],ROW[1]的Bit cell和OAI垂直的垒起来,这样水平上有了更多的走线空间,从而就减小了阻塞的问题。对于36b的有符号累加器,采用了20b无符号adder和16b有符号超前进位加法器的组合,来减少这个大加法器上的时延。在以行波进位加法器为基准的情况下,对比传统超前进位加法器,这里优化后的超前进位加法器可以达到更快的速度和更小的面积,并在面积接近行波进位加法器的情况下做到了30.1%的速度提升。可惜这篇文章里没有解释具体对CLA怎么优化的,只能大概知道应该利用了符号位拓展时,16位A[19]都是相等的这么一个特性。

image

数据上可以看到由于工艺的升级,对比22年的工作,最小操作电压在同等温度下可以达到更低的水平,在-40℃时仍然可以降低到接近0.3V。TOPS/W vs Voltage没啥好说的,电压越高TOPS/W越低,固定了weight sparsity为50%,输入Sparsity越高TOPS/W就越高。

image

对比就不多说了,不过这次居然终于舍得将结果在比特位数上做归一化来对比了,除了标准的TOPS/mm2和TOPS/W指标,还增加了TOPS/mm2/bit和TOPS/W/b指标,虽然工艺还是没做归一化,总之结果显著拉爆之前的工作。

image

A 12nm 121-TOPS/W 41.6-TOPS/mm2 All Digital Full Precision SRAM-based Compute-in-Memory with Configurable Bit-width For AI Edge Applications

ISSCC的几篇文章都介绍完了,这里讲一下VLSI 2022这篇文章。

这篇文章使用的12nm的工艺,相比ISSCC 2021的文章在工艺上没有很激进的变化,但是架构上的变化还是不小的。这个工作的动机非常简单,在ISSCC 2021的数字CIM架构中,1b*4b的操作是通过4b或非门乘法器完成,然后再通过4b加法器两两相加。但是从正值表上来看,2个4b或非门乘法器加1个4b加法器完成的工作实际上可以通过一个由加法器和两比特IN控制的四选一Mux(或者说LUT)来完成。这样做的话可以直接节省掉21%的功耗。

image

这里展示了电路上的具体变化,如之前所说,将或非门和4b加法器替换为了加法器和LUT,在原来的或非门和加法器的方案中,由于或非门输出结果随着输入值的变化而动态变化,因此加法器的输入也是不断动态变化的,这就使得或非门和加法器(尤其是加法器)上产生大的动态功耗。使用LUT的方案中,加法器的输出是预先计算好后固定的,消除了加法器上的动态功耗。LUT的输入都是静态的,只有输出会跟随IN的变化而变化。当然这里是展示原理的一种画法,看过21年的论文,我们知道实际上Adder没有嵌入到array里面去,嵌入的只有或非门乘法器,4b加法器还是在外面的。此外由于采用了预计算,不需要即时计算结果和进位,延时肯定是减小的,吞吐率增大。

image

这里其实是我觉得这个工作对之前所有工作的一个重大变动,左边是原来我们比较熟悉的乘法器+加法器树结构,右边是用LUT替换之后的方案,但是需要注意的是,首先,在他提出的这个并行多位输入结构下(即并非bit serial的输入4b数,而是并行的把4个4b输入给送进去,从而提升吞吐率),由于要1cycle算完4个4b和4个4b的乘累加,所以电路复制了四套,从数学上来说就是:

\[\sum_{i=0}^{3}W_i\times IN_i=\sum_{j=0}^3 \sum_{i=0}^{3}W_i\times IN_j \]

由于在LUT方案下可以加法器可以share,不像原来的方案那样加法器也要做复制,尽管在1b-input情况下LUT方案会比原来的方案Macro Size大出7%(Mux比或非门乘法器大导致的),但是在并行多位输入的4b-input的情况下,Macro Size反而会减小,比原方案少16%的面积。

image

它比较了256个1b input(即21年的bit serial方案)和并行输入方案4*64,从power consumption来看,增大并行位数对于这种方案能够形成相对提升,在64*1的情况下,对比256*1,相比25%(因为输入数量只有256的1/4)要大出20%,64*2时,对比256*1的50%要大出7%,到了64*4,和256*1并行度相等的情况下,功耗反而能低7%。因为并行输入显著减少了移位累加上的开销,由于对加法器的复用,加法树上的开销也有所减小。对于bit serial方案,并行输入方案做到了能效,速度,面积,算力密度四个指标上的全面提升。

image

这里展示了位宽的可配置性,针对输入和权重4b/8b共4种组合,权重和输入都是以4b为单位,单个MAC单元处理4b*4b,这是理论上利用率最高,在四种比特位数配置组合下都可以达到MAC单元100%利用率的方案。这里讨论了三种MODE,实际上还有个输入和权重都是8b的情况没讨论,实际部署时根据:

\[XIN[7:0]\times W[7:0]=(XIN[7:4]<<4+XIN[3:0])\times(W[7:4]<<4+W[3:0]) \\=(XIN[7:4]\times W[7:4])<<8+(XIN[7:4]\times W[3:0])<<4+(XIN[3:0]\times W[7:4])<<4 + XIN[3:0]\times W[3:0] \]

如果要一拍算掉那么就需要用到四个MAC块,对权重和输入都需要做出一份复制,并且要有4个部分积要做移位加。另一种思路是在MODE3的基础上用两拍搞定计算,即:

\[XIN[7:0]\times W[7:0]=(XIN[7:4]<<4+XIN[3:0])\times W[7:0] \\ =(XIN[7:4]\times W[7:0])<<4+XIN[3:0]\times W[7:0] \]

每拍算掉一个4b input乘8b weight的部分积,然后再移位累加。

image

MAC计算速度的主要限制是在加法树延迟上,为了加快MAC的速度,他这里用了一个所谓的time-stealing技术,在前一个周期的最长延迟和当前周期的最短延迟之间锁存数据,因此用全加器FA取代半加器HA来实现加速,其原理可以看一下这个时序图定义\(T_{max}\),\(T_{min}\),\(T_{latch}\),\(T_{cycle}\)分别是前一个周期的最长延迟(数据开始时刻减去前一个CLOCK时钟上升沿的时刻),当前周期的最小延迟(数据结束时刻减去当前CLOCK上升沿的时刻),数据到来后被锁存的时间(LATCH时钟上升沿时刻减去数据开始时刻),以及CLOCK时钟周期,因此满足关系式\(0.9*T_{min}-(1.1*T_{max}-T_{cyc})\geq 0\),这里的0.9和1.1应该是考虑了这两个时间可能存在10%的波动情况下的worst case,看时序图就知道这里计算出的就是一个到来的数据结束的时间减去到来数据的开始时间,即一个到来数据持续的时间,这个时间自然是大于等于0的。把这个公式变形后得到\(T_{cyc}\geq 1.1*T_{max}-0.9*T_{min}\),从而知道如果保持\(T_{max}\)同时增大\(T_{min}\)就可以实现降低最小\(T_{cyc}\)的作用。从右边的图中可以看出用FA替换了HA之后,当前周期最短时间延迟\(T_{min}\)从0.3ns增加到了0.7ns,而上周期最大延迟\(T_{max}\)则保持1.8ns不变,因此根据前面的不等式\(T_{cyc}\)减小。这个技术还是巧妙的,因为如果按照只有一个时钟控制采用的情况的话,我们必须得要数据有效后一直要保持到这个时钟的下一个上升沿采样了之后继续变化,而time-stealing技术引入了一个LATCH时钟,与CLOCK时钟有一定的相位差,在数据开始有效后就立马锁存,从而“偷”到时间,但是这就用到了异步时钟,在时序问题感觉会变得更复杂。

image

使用FA的另一个好处是其作为一个latch的信号延迟相对于传统buffer能够更好的跟踪PVT,并且由于其跟踪加法树结构,所以不存在PVT offset,具体体现在这个图例可以看到FA的延迟在不同的工艺角,温度和温度下仍然保持一个固定的延迟(红色虚线),而buffer的延迟则不断波动(蓝色实现)。并且根据左边的时序图,使用FA代替HA和buffer可以实现更快的时钟频率。

image

最后是数据结果,可以看到速度与电压之间近似线性的关系,在最低温度-40℃的情况可以在0.9V达到900MHz的速度。

image

功耗(\(\mu A/MHz\))随着电压身高而近似线性升高,-40℃下最低电压0.6V在20左右,0.9V在30左右。如果把这个量纲转换到\(\mu W\)下,那么就是\(\mu A/MHz * MHz*V\),计算能效时\(TOPS/W=OPS*MHz/(\mu A/MHz*MHz*V)\),分子分母中把\(MHz\)一同约掉,\(OPS\)由硬件结构决定,视作常量,又考虑到\(\mu A/MHz \propto V\),因此\(TOPS/W \propto 1/V^2\),即能效与电压呈现倒二次关系,这也和我们之前对其他工作指标的观察相符。以上测量是在权重稀疏度为50%和输入稀疏度10%的条件下进行的。

image

在floorplan上使用了与之前介绍的22年类似的技术,SRAM和LUT耦合成一个块,两个块share一组6b加法器,四个块再去share一组7b加法器,以此类推。最后16个块一起share最后几级的加法器(9b,13b,14b,18b)以及Output。所以可以计算出整个阵列的规模为4*4*2*16*16=8Kb。

image

最后的参数比较了Throughput和TOPS/W的指标,结果上来看还是有优势的,但相比21年的工作,能效提升感觉并不是那么明显,另外由于规模的缩小,实际上Throughput反而是更低的。

image

结语

至此个人觉得比较经典的TSMC几篇数字CIM的文章就基本上整理完了,总体来说受益良多,可以看到他们这几年工作的延续性很强,技术上稳中有进,既有新东西,又有对于一些好的技术的保留或改进。从架构趋势的角度来说,TSMC在22年ISSCC就开始改旗易帜,不再像他们自己ISSCC 2021 CIM工作采用将逻辑门嵌入阵列的模式,而是使用多个小的分布式SRAM bank(一般是4*4bit cell)和MAC计算逻辑耦合,这种有点类似于近存计算的模式。在我看来,这种模式有着更好的拓展性,在增大并行度的同时,也能尽可能保证架构的紧凑性,是一种值得follow的架构。

引用


  1. Nigam, Arvind. “Comparative Analysis of 28 T Full Adder with 14 T Full Adder using 180 nm.” (2016). ↩︎

标签:SRAM,TOPS,技术,CIM,cell,加法器,4b
From: https://www.cnblogs.com/sasasatori/p/17973415

相关文章

  • 新能源智慧充电桩方案:AI视频分析技术如何助力充电桩智能监管?
    随着AI人工智能、大数据、云计算等技术快速发展与落地,视频智能分析技术在智慧充电桩场景中的应用也越来越广泛。这种技术能够为充电桩站点提供全方位的监控和管理,提高运营效率,保障充电桩设备的安全和稳定运行。通过TSINGSEE青犀&触角云新能源汽车智慧充电桩综合管理平台,可实现远程......
  • 智慧门店:如何利用AI视频智能监管与存储技术让门店降本增效?
    一、行业背景TSINGSEE青犀视频智慧门店解决方案是一种集成了人工智能、大数据、物联网等技术的零售解决方案,目的是提高门店的运营效率、用户体验和业绩。随着数字化转型的加速,连锁门店需要跟上时代的步伐,需要利用数字化手段提高运营效率和管理水平。视频上云则是连锁门店数字化转......
  • [c][cpp]: decimal to binary
    [c][cpp]: decimaltobinary    一、源码1#include<stdio.h>2#include<stdlib.h>3#include<string.h>456//decialtobinary;10->27voiddec2bin(longintnum)8{9intfinal[1000];1011longintsave......
  • [大数据/标准] 《GB/T 35295》信息技术 大数据 术语
    0序0.1国标基本信息国家标准《信息技术大数据术语》由TC28(全国信息技术标准化技术委员会)归口,主管部门为国家标准化管理委员会。主要起草单位中国电子技术标准化研究院 、浪潮软件集团有限公司 、浪潮(北京)电子信息产业有限公司 、国家信息中心 、华为技术有限公......
  • Web Components从技术解析到生态应用个人心得指北
    WebComponents浅析WebComponents是一种使用封装的、可重用的HTML标签、样式和行为来创建自定义元素的Web技术。WebComponents自己本身不是一个规范,而是一套整体技术,包含下面3个独立规范:CustomElements:允许开发者定义自己的HTML标签(考虑SEO,还是语义化为好)。Sha......
  • #星计划# OpenHarmony NAPI技术简介
    作者:廖家兴简介NAPI(NativeAPI)是OpenHarmony系统中的一套原生模块扩展开发框架,它基于Node.jsN-API规范开发,为开发者提供了JavaScript与C/C++模块之间相互调用的交互能力。可以在NodeJs官网查看各种NAPI接口定义说明。NAPI作用OpenHarmony系统可以将框架层丰富的模块功能通过j......
  • 生成学习全景:从基础理论到GANs技术实战
    本文全面探讨了生成学习的理论与实践,包括对生成学习与判别学习的比较、详细解析GANs、VAEs及自回归模型的工作原理与结构,并通过实战案例展示了GAN模型在PyTorch中的实现。关注TechLead,分享AI全维度知识。作者拥有10+年互联网服务架构、AI产品研发经验、团队管理经验,同济本复旦......
  • 百度基于金融场景构建高实时、高可用的分布式数据传输系统的技术实践
    本文由百度搜索技术平台研发部分享,本文有修订和改动。1、引言分布式数据传输系统是一种用于在多个计算节点之间高效传输大量数据的系统,诣在高效的解决大规模数据迁移、备份、跨地域复制等问题。其广泛应用在实时数据流传输、跨数据中心数据迁移、多媒体传输等场景,在大多数企业......
  • 【深入挖掘Java技术】「源码原理体系」盲点问题解析之HashMap工作原理全揭秘(下)
    承接上文在阅读了上篇文章《【深入挖掘Java技术】「源码原理体系」盲点问题解析之HashMap工作原理全揭秘(上)》之后,相信您对HashMap的基本原理和基础结构已经有了初步的认识。接下来,我们将进一步深入探索HashMap的源码,揭示其深层次的技术细节。通过这次解析,您将更深入地理解HashMap的......
  • reids分片技术cluster篇
    为什么学redis-cluster前面两篇文章,主从复制和哨兵机制保障了高可用就读写分离,而言虽然slave节点扩展了主从的读并发能力但是写能力和存储能力是无法进行扩展,就只能是master节点能够承载的上限。如果面对海量数据那么必然需要构建master(主节点分片)之间的集群同时必......