本技术涉及集成电路设计,尤其涉及一种基于sram型的存内原子操作电路及其控制方法。
背景技术:
1、当前智能计算系统的处理器诸如cpu、gpu和npu均以冯·诺依曼架构为主,冯·诺依曼架构通过将存储器和计算单元分离来实现。在冯诺依曼架构中,原子操作会受限于内存墙问题,内存和处理器之间存在速度差异,内存访问速度较慢,而处理器处理速度较快,特别是对于需要频繁访问内存的原子操作来说,内存访问速度较慢,处理器在等待内存数据传输时会浪费大量的时间,同时原子操作需要频繁跨越多个内存层次结构进行数据搬移和修改,这会限制整体系统的性能表现。因此,在原子操作的执行过程中,由于要频繁经历数据跨处理器和多个内存层次结构的读取、修改、写入等一系列过程,因此,传统的计算架构和电路已经难以满足高效对大规模数据的原子操作需求。
2、综上,相关技术中存在的技术问题有待得到改善。
技术实现思路
1、本技术实施例的主要目的在于提出一种基于sram型的存内原子操作电路及其控制方法,能够通过在存储阵列中直接完成计算,减少数据在存储和计算单元之间的传输,提高原子操作处理效率以及减少数据传输所需的能量消耗。
2、为实现上述目的,本技术实施例的一方面提出了一种基于sram型的存内原子操作电路,所述存内原子操作电路包括8t sram阵列、开关控制电路、近存计算逻辑、数据驱动控制电路和sram外围电路,所述sram外围电路包括sram接口电路、控制电路、行译码器和预充电电路,所述控制电路的第一输出端与所述预充电电路的输入端连接,所述控制电路的第二输出端与所述行译码器的输入端连接,所述行译码器的输出端与所述开关控制电路的输入端连接,所述开关控制电路的输出端与所述8t sram阵列的第一输入端连接,所述近存计算逻辑的输出端与所述数据驱动控制电路的输入端连接,所述数据驱动控制电路的输出端与所述8t sram阵列的第二输入端连接,所述预充电电路与所述8t sram阵列相互连接,其中:
3、所述8t sram阵列用于存储存内原子操作生成的数据和控制所述存内原子操作的计算;
4、所述开关控制电路用于控制sram模式和原子操作模式的切换;
5、所述近存计算逻辑用于控制所述存内原子操作的进位计算;
6、所述数据驱动控制电路用于控制若干所述存内原子操作;
7、所述sram外围电路用于控制所述存内原子操作的数据读取、控制所述存内原子操作的数据计算以及控制所述存内原子操作的数据存储。
8、在一些实施例中,所述8t sram阵列包括若干8t sram单元,所述8t sram单元包括第一晶体管、第二晶体管、第三晶体管、第四晶体管、第五晶体管、第六晶体管、第七晶体管、第八晶体管,其中,所述第一晶体管的栅极、所述第五晶体管的漏极、所述第八晶体管的漏极和所述第二晶体管的栅极连接,所述第三晶体管的栅极、所述第七晶体管的源极、所述第六晶体管的漏极、所述第八晶体管的源极和所述第四晶体管的栅极连接,所述第一晶体管的源极、所述第七晶体管的漏极和所述第二晶体管的漏极连接,所述第三晶体管的漏极、所述第八晶体管的源极与所述第四晶体管的漏极连接。
9、在一些实施例中,所述开关控制电路包括第一非门、第二非门、第一与非门、第二与非门、第一延迟元件和第一多路复用器,所述第一非门的输入端与所述第一与非门的第一输入端连接,所述第一与非门的第二输入端与所述第二与非门的第一输入端连接,所述第一非门的输出端与所述第二与非门的输入端连接,所述第一与非门的输出端、所述第一延迟元件的输入端和所述第一多路复用器的第一输入端连接,所述第二与非门的输出端、所述第一多路复用器的第二输入端和所述第二非门的输入端连接。
10、在一些实施例中,所述近存计算逻辑由若干近存计算单元级联形成,所述近存计算单元包括第三与非门、第四与非门、第五与非门、第一与门、第二与门和第三同或门,其中,所述第一与门的输出端、所述第三同或门的输入端与所述第三与非门的输入端连接,所述第二与门的输出端与所述第四与非门的输入端连接,所述第三与非门的输出端与所述第五与非门的第一输入端连接,所述第四与非门的输出端与所述第五与非门的第二输入端连接。
11、在一些实施例中,所述数据驱动控制电路包括第二多路复用器、第三多路复用器、第四多路复用器、第五多路复用器、第六多路复用器、第一同或门和第二同或门,其中,所述第一同或门的输出端与所述第三多路复用器的输入端连接,所述第二多路复用器的输入端与所述第三多路复用器的输入端连接,所述第二多路复用器的输出端与所述第四多路复用器的第一输入端连接,所述第三多路复用器的输出端与所述第四多路复用器的第二输入端连接,所述第四多路复用器的输出端、所述第六多路复用器的输入端和所述第二同或门的输入端连接,所述第二同或门的输出端与所述第五多路复用器的输入端连接。
12、为实现上述目的,本技术实施例的另一方面提出了一种基于sram型的存内原子操作电路的控制方法,所述控制方法包括以下步骤:
13、获取操作指令类型;
14、对所述操作指令类型进行判断,若所述操作指令类型为普通访存指令,则切换电路的控制模式为sram模式,若所述操作指令类型为原子操作指令,则切换电路的控制模式为原子操作模式;
15、若所述电路的控制模式为原子操作模式,执行存内原子操作,直至所述存内原子操作结束,将所述电路的控制模式切换为sram模式,执行普通访存指令操作。
16、在一些实施例中,所述原子操作模式包括存内原子逻辑与操作、存内原子逻辑或操作、存内原子逻辑异或操作、存内原子算术加法操作、存内原子算术求最大值操作、存内原子算术求最小值操作和存内原子算术交换操作。
17、在一些实施例中,所述存内原子逻辑与操作、所述存内原子逻辑或操作和所述存内原子逻辑异或操作的原子操作控制方式相同,具体如下所示:
18、将第一输入信号、第二输入信号与第一切换控制信号进行拉低处理,存内原子操作电路处于导通状态,qb和q均为0,其中,q表示数据存储节点,qb表示反相节点;
19、将第二切换控制信号进行拉低处理,所述第一输入信号恢复为接地状态,所述第二输入信号恢复为接高电平状态,qb和q均为0;
20、将所述第一切换控制信号进行拉高处理,对qb进行充电,qb为1,q为0;
21、将所述第二切换控制信号进行拉高处理,保持qb为1的状态、q为0的状态,存内原子操作电路处于锁存状态,完成所述存内原子逻辑与操作、所述存内原子逻辑或操作和所述存内原子逻辑异或操作。
22、在一些实施例中,所述存内原子算术加法操作的原子操作控制方式具体如下所示:
23、获取第一操作数与第二操作数;
24、设定所述第一操作数存储于8t sram阵列中的第m行存储行;
25、对所述第一操作数与所述第二操作数进行存内原子逻辑异或操作,得到操作数异或计算结果;
26、获取所述操作数异或计算结果以及所述操作数异或计算结果的取反结果,通过近存逻辑计算,得到原子加法操作的近存逻辑的输出信号计算结果;
27、将所述原子加法操作的近存逻辑的输出信号计算结果与所述操作数异或计算结果进行异或运算,完成所述存内原子算术加法操作。
28、在一些实施例中,所述存内原子算术求最大值操作和所述存内原子算术求最小值操作的原子操作控制方式相同,具体如下所示:
29、基于所述第一操作数与所述第二操作数,进行原子异或操作,得到两个操作数的原子异或操作结果;
30、获取所述两个操作数的原子异或操作结果以及所述两个操作数的原子异或操作结果的取反结果,通过近存逻辑计算,得到bmax信号;
31、根据所述bmax信号以及原子最大值操作指示信号(amo_max),进行异或运算,完成所述存内原子算术求最大值操作和所述存内原子算术求最小值操作。
32、本技术实施例至少包括以下有益效果:本技术提供一种基于sram型的存内原子操作电路及其控制方法,该方案包括具备存储和计算功能的8t sram阵列、控制与辅助电路主要包括开关控制电路、数据驱动控制电路和近存计算逻辑,8t sram阵列写操作时只需中止两个反相器的锁存状态即可轻松写入数据,不需要额外的存储空间的条件下完成对同一内存单元的“读取-修改-写入”的原子操作,减少数据在存储和计算单元之间的传输,提高原子操作处理效率,基于现场存储型sram的存内原子操作电路通过在存储阵列中直接完成计算,避免了频繁的原子操作跨内存层次结构的数据搬运,减少数据传输所需的能量消耗,实现能耗的优化和节约。
1.一种基于sram型的存内原子操作电路,其特征在于,所述存内原子操作电路包括8tsram阵列、开关控制电路、近存计算逻辑、数据驱动控制电路和sram外围电路,所述sram外围电路包括sram接口电路、控制电路、行译码器和预充电电路,所述控制电路的第一输出端与所述预充电电路的输入端连接,所述控制电路的第二输出端与所述行译码器的输入端连接,所述行译码器的输出端与所述开关控制电路的输入端连接,所述开关控制电路的输出端与所述8tsram阵列的第一输入端连接,所述近存计算逻辑的输出端与所述数据驱动控制电路的输入端连接,所述数据驱动控制电路的输出端与所述8t sram阵列的第二输入端连接,所述预充电电路与所述8t sram阵列相互连接,其中:
2.根据权利要求1所述的存内原子操作电路,其特征在于,所述8t sram阵列包括若干8t sram单元,所述8t sram单元包括第一晶体管、第二晶体管、第三晶体管、第四晶体管、第五晶体管、第六晶体管、第七晶体管、第八晶体管,其中,所述第一晶体管的栅极、所述第五晶体管的漏极、所述第八晶体管的漏极和所述第二晶体管的栅极连接,所述第三晶体管的栅极、所述第七晶体管的源极、所述第六晶体管的漏极、所述第八晶体管的源极和所述第四晶体管的栅极连接,所述第一晶体管的源极、所述第七晶体管的漏极和所述第二晶体管的漏极连接,所述第三晶体管的漏极、所述第八晶体管的源极与所述第四晶体管的漏极连接。
3.根据权利要求1所述的存内原子操作电路,其特征在于,所述开关控制电路包括第一非门、第二非门、第一与非门、第二与非门、第一延迟元件和第一多路复用器,所述第一非门的输入端与所述第一与非门的第一输入端连接,所述第一与非门的第二输入端与所述第二与非门的第一输入端连接,所述第一非门的输出端与所述第二与非门的输入端连接,所述第一与非门的输出端、所述第一延迟元件的输入端和所述第一多路复用器的第一输入端连接,所述第二与非门的输出端、所述第一多路复用器的第二输入端和所述第二非门的输入端连接。
4.根据权利要求1所述的存内原子操作电路,其特征在于,所述近存计算逻辑由若干近存计算单元级联形成,所述近存计算单元包括第三与非门、第四与非门、第五与非门、第一与门、第二与门和第三同或门,其中,所述第一与门的输出端、所述第三同或门的输入端与所述第三与非门的输入端连接,所述第二与门的输出端与所述第四与非门的输入端连接,所述第三与非门的输出端与所述第五与非门的第一输入端连接,所述第四与非门的输出端与所述第五与非门的第二输入端连接。
5.根据权利要求1所述的存内原子操作电路,其特征在于,所述数据驱动控制电路包括第二多路复用器、第三多路复用器、第四多路复用器、第五多路复用器、第六多路复用器、第一同或门和第二同或门,其中,所述第一同或门的输出端与所述第三多路复用器的输入端连接,所述第二多路复用器的输入端与所述第三多路复用器的输入端连接,所述第二多路复用器的输出端与所述第四多路复用器的第一输入端连接,所述第三多路复用器的输出端与所述第四多路复用器的第二输入端连接,所述第四多路复用器的输出端、所述第六多路复用器的输入端和所述第二同或门的输入端连接,所述第二同或门的输出端与所述第五多路复用器的输入端连接。
6.一种基于sram型的存内原子操作电路的控制方法,其特征在于,所述控制方法包括以下步骤:
7.根据权利要求6所述的方法,其特征在于,所述原子操作模式包括存内原子逻辑与操作、存内原子逻辑或操作、存内原子逻辑异或操作、存内原子算术加法操作、存内原子算术求最大值操作、存内原子算术求最小值操作和存内原子算术交换操作。
8.根据权利要求7所述的方法,其特征在于,所述存内原子逻辑与操作、所述存内原子逻辑或操作和所述存内原子逻辑异或操作的原子操作控制方式相同,具体如下所示:
9.根据权利要求7所述的方法,其特征在于,所述存内原子算术加法操作的原子操作控制方式具体如下所示:
10.根据权利要求7所述的方法,其特征在于,所述存内原子算术求最大值操作和所述存内原子算术求最小值操作的原子操作控制方式相同,具体如下所示:
