CN118116440A - 基于动态随机存储器查找表的存内计算电路及芯片 - Google Patents
基于动态随机存储器查找表的存内计算电路及芯片 Download PDFInfo
- Publication number
- CN118116440A CN118116440A CN202410151784.1A CN202410151784A CN118116440A CN 118116440 A CN118116440 A CN 118116440A CN 202410151784 A CN202410151784 A CN 202410151784A CN 118116440 A CN118116440 A CN 118116440A
- Authority
- CN
- China
- Prior art keywords
- memory
- transistor
- weight data
- read
- local
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000009825 accumulation Methods 0.000 claims abstract description 20
- 239000013598 vector Substances 0.000 claims abstract description 20
- 230000002829 reductive effect Effects 0.000 abstract description 5
- 101100021996 Arabidopsis thaliana CYP97C1 gene Proteins 0.000 description 27
- 238000000034 method Methods 0.000 description 17
- 238000004364 calculation method Methods 0.000 description 15
- 238000010586 diagram Methods 0.000 description 12
- 230000001360 synchronised effect Effects 0.000 description 6
- 238000013473 artificial intelligence Methods 0.000 description 5
- 238000013528 artificial neural network Methods 0.000 description 5
- 230000036961 partial effect Effects 0.000 description 4
- 238000013135 deep learning Methods 0.000 description 3
- 239000011159 matrix material Substances 0.000 description 3
- 238000012545 processing Methods 0.000 description 3
- 230000001133 acceleration Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 210000004556 brain Anatomy 0.000 description 1
- 230000036992 cognitive tasks Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000008021 deposition Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000007599 discharging Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000000670 limiting effect Effects 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000003062 neural network model Methods 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000001502 supplementing effect Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Classifications
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/10—Programming or data input circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/08—Address circuits; Decoders; Word-line control circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/24—Bit-line control circuits
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Dram (AREA)
Abstract
本发明提供一种基于动态随机存储器查找表的存内计算电路及芯片,该电路包括多个输入译码模块、多个查找表模块、多个局部访存模块和后级累加模块。输入译码模块根据输入向量确定运算权重数据;运算权重数据为与输入向量进行乘累加运算的权重数据;查找表模块存储块权重数据;块权重数据为多个权重数据及多个权重数据的相加数据;局部访存模块从查找表模块中读取运算权重数据;后级累加模块将输入向量与运算权重数据进行乘累加运算,能够有效降低数据逻辑开销。
Description
技术领域
本发明涉及集成电路技术领域,尤其涉及一种基于动态随机存储器查找表的存内计算电路及芯片。
背景技术
随着深度学习网络在人工智能领域取得了极大的成功,人们日常生活中的数据量越来越大,深度学习网络的规模也随之变大,参数量越来越多。数据在运算单元和存储单元之间不断搬运成为了计算系统中的一个关键性瓶颈。考虑上述问题,存内计算展现出了它在深度学习加速领域中的巨大前景。存内计算主要解决的是数据密集型应用中冯诺依曼架构所遇到的“存储墙”和“功耗墙”问题,它通过直接在存储单元内进行运算,减少了与运算单元之间的数据传输,从而提升能量、延迟性能。
现有的存内计算架构在SRAM(Static Random Access Memory,静态随机存储器)的数字存内计算电路中,通过在SRAM阵列当中直接集成数字乘累加电路的方式实现了存内计算的功能。然而,该技术的局限性在于,计算能效和算力密度受限于数字逻辑本身,无法进一步提升。并且数字逻辑的面积占比过高,导致了存储密度的下降,影响了存内计算单元作为存储器的性能,存在数据逻辑开销占比较大的问题。
发明内容
本发明提供一种基于动态随机存储器查找表的存内计算电路及芯片,用以解决现有技术中存内计算架构数据逻辑开销占比较大的缺陷。本发明能够有效降低数据逻辑开销。
本发明提供一种基于动态随机存储器查找表的存内计算电路,包括多个输入译码模块、多个查找表模块、多个局部访存模块和后级累加模块;所述输入译码模块用于根据输入向量确定运算权重数据;所述运算权重数据为与所述输入向量进行乘累加运算的权重数据;所述查找表模块用于存储块权重数据;所述块权重数据为多个权重数据及多个所述权重数据的相加数据;所述局部访存模块用于从所述查找表模块中读取所述运算权重数据;所述后级累加模块用于将所述输入向量与所述运算权重数据进行乘累加运算。
根据本发明提供的一种基于动态随机存储器查找表的存内计算电路,所述查找表模块为eDRAM阵列;所述eDRAM阵列包括多个eDRAM单元,每个所述eDRAM单元包括写选通晶体管、存储节点晶体管和读选通晶体管;所述写选通晶体管的源极与局部写位线连接,所述写选通晶体管的栅极与写行线连接,所述写选通晶体管的漏极与所述存储节点晶体管的栅极连接,所述存储节点晶体管的源极接地,所述存储节点晶体管的漏极与所述读选通晶体管的源极连接,所述读选通晶体管的栅极与读行线连接,所述读选通晶体管的漏极与局部读位线连接。
根据本发明提供的一种基于动态随机存储器查找表的存内计算电路,所述局部访存模块包括第一PMOS管、第二PMOS管、第三PMOS管、第一NMOS管和第二NMOS管;所述第一PMOS管的栅极与预充电控制端连接,所述第一PMOS管的漏极与所述第二PMOS管的漏极连接的公共端与预充电正极连接,所述第一PMOS管的源极分别与所述局部写位线、所述第二PMOS管的栅极和所述第二NMOS管的栅极连接,所述第二PMOS管的源极与所述第三PMOS管的漏极连接,所述第三PMOS管的栅极与读端口第一使能控制端连接,所述第三PMOS管的源极与所述第一NMOS管的漏极连接,所述第一NMOS管的栅极与读端口第二使能控制端连接,所述第一NMOS管的源极与所述第二NMOS管的漏极连接,所述第二NMOS管的源极接地。
根据本发明提供的一种基于动态随机存储器查找表的存内计算电路,所述局部访存模块还用于将所述运算权重数据刷新写回至所述查找表模块。
根据本发明提供的一种基于动态随机存储器查找表的存内计算电路,所述局部访存模块还包括存内刷新晶体管;所述存内刷新晶体管的栅极与存内刷新控制端连接,所述存内刷新晶体管的漏极与读端口连接,所述读端口为所述第三PMOS管的源极和所述第一NMOS管的漏极连接的公共端,所述存内刷新晶体管的源极与所述局部写位线连接。
根据本发明提供的一种基于动态随机存储器查找表的存内计算电路,所述局部访存模块具体用于通过所述局部读位线的充放电结果进行同步读取所述运算权重数据,通过所述存内刷新晶体管导通所述读端口与所述局部写位线的路径进行同步写回所述运算权重数据。
根据本发明提供的一种基于动态随机存储器查找表的存内计算电路,所述局部访存模块还用于将编程权重数据写回至所述查找表模块,所述编程权重数据为当前局部访存模块的运算权重数据与相邻局部访存模块的运算权重数据组合后的数据。
根据本发明提供的一种基于动态随机存储器查找表的存内计算电路,所述局部访存模块还包括存内编程晶体管和加法器;所述存内编程晶体管的栅极与存内编程控制端连接,所述存内编程晶体管的源极与所述存内刷新晶体管的源极和所述局部写位线连接的公共端连接,所述存内编程晶体管的漏极与所述加法器的第一写端口连接,所述加法器的第一读端口与所述第三PMOS管的源极和所述第一NMOS管的漏极连接的公共端连接,所述加法器的第二写端口与另一局部访存模块的存内编程晶体管的漏极连接,所述加法器的第二读端口与另一局部访存模块的存内编程晶体管的第三PMOS管的源极和第一NMOS管的漏极连接的公共端连接。
根据本发明提供的一种基于动态随机存储器查找表的存内计算电路,所述局部访存模块具体还用于通过所述加法器将所述当前局部访存模块的运算权重数据和所述相邻局部访存模块的运算权重数据进行权重写入和组合,通过所述存内编程晶体管导通所述读端口与所述局部写位线的路径进行写回所述编程权重数据。
本发明还提供一种基于动态随机存储器查找表的存内计算芯片,包括上述的基于动态随机存储器查找表的存内计算电路。
本发明提供的一种基于动态随机存储器查找表的存内计算电路及芯片,该电路包括多个输入译码模块、多个查找表模块、多个局部访存模块和后级累加模块。输入译码模块根据输入向量确定运算权重数据;运算权重数据为与输入向量进行乘累加运算的权重数据;查找表模块存储块权重数据;块权重数据为多个权重数据及多个权重数据的相加数据;局部访存模块从查找表模块中读取运算权重数据;后级累加模块将输入向量与运算权重数据进行乘累加运算,能够有效降低数据逻辑开销。
附图说明
为了更清楚地说明本发明或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明提供的一种基于动态随机存储器查找表的存内计算电路的结构示意图;
图2是本发明提供的查找表模块的电路图;
图3是本发明提供的查找表模块的版图;
图4是本发明提供的局部访存模块的电路图;
图5是本发明提供的存内刷新的时序波形图;
图6是本发明提供的存内编程的时序波形图;
图7是本发明提供的一种基于动态随机存储器查找表的存内计算芯片的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明中的附图,对本发明中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
随着大数据与物联网时代的到来,人工智能和机器学习广泛用于许多认知任务。神经网络是用来模拟人脑分析和处理信息的计算系统,它是人工智能的基础,人工神经网络具有自我学习能力,能够在获得众多数据的前提下产生更好的结果。神经网络技术在人脸识别、命名实体识别、语音识别、签名验证和语音检测等场景下都有广泛的应用。神经网络算法一般数据量和运算量相当庞大。
传统的冯诺依曼计算架构是当前计算机主要采用的架构,它将存储单元和运算单元分开,执行计算过程中,需要将计算所需的数据从存储单元搬移到总线上,再从总线上将数据传输到运算单元(如:CPU(Central Processing Unit,中央处理器))。而该架构在执行神经网络这种数据量大的运算时,会受到较多的限制。一方面,计算所需的数据和计算过程中产生的中间数据需要频繁的在运算单元和存储单元之间来回搬运,造成巨大的功耗开销,引起功耗墙问题;另一方面,现在的运算单元性能远强于存储单元,导致计算过程中有相当一部分时间运算单元需要等待存储单元找到并传输数据,从而导致了时间上的浪费,增大了运算的时延,引起存储墙问题。
为了解决传统芯片在运用人工智能算法上的“存储墙”和“功耗墙”问题,存内计算架构应运而生。存内计算架构以存储单元为核心,在存储单元内部完成计算,从而实现减少运算单元访问存储单元的频率。它将存储和计算有机结合,直接利用存储单元进行计算,极大地消除了数据搬运带来的开销,可以数十倍甚至百倍地提高人工智能运算效率,降低成本。然而,现有的存内计算研究依然面临许多挑战。常见的基于数字电路的存内计算架构在SRAM阵列读出端附加基本逻辑电路,进而可在存储阵列内完成比特级乘法运算,并通过近存储阵列的累加单元,完成乘累加计算。数字存内计算的优势在于SRAM读写速度快,基于逻辑门构建的计算无精度损失,但是由于SRAM容量有限,通常仅为KB量级,在粗粒诸如MB量级的大规模神经网络模型时,仍需将算法权重数据存储在容量较大的片外内存,并在计算过程中进行频繁的权重数据搬运与SRAM读写,该时间开销将占据数据存内计算时间的50%及以上。
请参考图1,图1为本发明提供的一种基于动态随机存储器查找表的存内计算电路的结构示意图。
为了解决现有技术所存在的技术问题,本发明提供一种基于动态随机存储器查找表的存内计算电路,包括多个输入译码模块、多个查找表模块、多个局部访存模块和后级累加模块;输入译码模块用于根据输入向量确定运算权重数据;运算权重数据为与输入向量进行乘累加运算的权重数据;查找表模块用于存储块权重数据;块权重数据为多个权重数据及多个权重数据的相加数据;局部访存模块用于从查找表模块中读取运算权重数据;后级累加模块用于将输入向量与运算权重数据进行乘累加运算。
具体的,本发明针对以神经网络推理为代表的整型(INT)矩阵向量乘运算进行加速。本发明在存储矩阵权重数据时,将矩阵每相邻四行(记为W0-W3)分为一块,每块数据(块权重数据)在存储时不仅存储W0-W3本身,还额外存储了W0-W3的11种不同的相加结果(W0+W1,…,W0+W1+W2+W3)。在进行乘累加计算的过程中,对于输入向量,同样按相邻四列(记为A0-A3)分为一块。每块输入向量按LSB到MSB的顺序进行逐比特的输入,根据输入向量的不同,由输入译码模块选择相应的权重相加结果(运算权重数据),并由局部访存模块进行读取运算权重数据,避免了额外的乘累加运算。最后由后级累加模块完成对输入向量与不同分块的运算权重数据的乘累加运算,能够有效降低数据逻辑开销。
在上述实施例的基础上:
请参考图2,图2为本发明提供的查找表模块的电路图。
请参考图3,图3为本发明提供的查找表模块的版图。
作为一种优选的实施例,查找表模块为eDRAM(enhanced Dynamic Random AccessMemory,增强动态随机存取存储器)阵列;eDRAM阵列包括多个eDRAM单元,每个eDRAM单元包括写选通晶体管、存储节点晶体管和读选通晶体管;写选通晶体管的源极与局部写位线连接,写选通晶体管的栅极与写行线连接,写选通晶体管的漏极与存储节点晶体管的栅极连接,存储节点晶体管的源极接地,存储节点晶体管的漏极与读选通晶体管的源极连接,读选通晶体管的栅极与读行线连接,读选通晶体管的漏极与局部读位线连接。
在本实施例中,查找表模块由3T 16行10列的eDRAM阵列,可以存储4个8比特权重的16种不同的组合。eDRAM阵列包括多个eDRAM单元,每个eDRAM单元包括写选通晶体管、存储节点晶体管和读选通晶体管。写选通晶体管由写行线的写选通信号WWL控制,存储节点晶体管由存储信号SN,读选通晶体管由读行线的读选通信号RWL控制。通过控制写选通晶体管、存储节点晶体管和读选通晶体管的导通和关断来实现LUT(Look Up Table,查找表)权重数据的读取和写入,电路结构简单、灵活性且实用性较强。
表1为eDRAM查找表中存储内容的排列方式表,其中输入全0的情况对应的查找表内容为任意值,因为可以通过关断读选通管的方式直接输出0值。
表1 eDRAM查找表中存储内容的排列方式表
输入值 | 行数 | 查找表输出 | 输入值 | 行数 | 查找表输出 | 输入值 | 行数 | 查找表输出 | 输入值 | 行数 | 查找表输出 |
0000 | 0 | 任意值 | 0100 | 4 | W3 | 1000 | 8 | W4 | 1100 | 12 | W3+W4 |
0001 | 1 | W1 | 0101 | 5 | W1+W3 | 1001 | 9 | W1+W4 | 1101 | 13 | W1+W3+W4 |
0010 | 2 | W2 | 0110 | 6 | W2+W3 | 1010 | 10 | W2+W3 | 1110 | 14 | W2+W3+W4 |
0011 | 3 | W1+W2 | 0111 | 7 | W1+W2+W3 | 1011 | 11 | W1+W2+W4 | 1111 | 15 | W1+W2+W3+W4 |
作为一种优选的实施例,局部访存模块包括第一PMOS管、第二PMOS管、第三PMOS管、第一NMOS管和第二NMOS管;第一PMOS管的栅极与预充电控制端连接,第一PMOS管的漏极与第二PMOS管的漏极连接的公共端与预充电正极连接,第一PMOS管的源极分别与局部写位线、第二PMOS管的栅极和第二NMOS管的栅极连接,第二PMOS管的源极与第三PMOS管的漏极连接,第三PMOS管的栅极与读端口第一使能控制端连接,第三PMOS管的源极与第一NMOS管的漏极连接,第一NMOS管的栅极与读端口第二使能控制端连接,第一NMOS管的源极与第二NMOS管的漏极连接,第二NMOS管的源极接地。
请参考图4,图4为本发明提供的局部访存模块的电路图。
请参考图5,图5为本发明提供的存内刷新的时序波形图。
作为一种优选的实施例,局部访存模块还用于将运算权重数据刷新写回至查找表模块。
作为一种优选的实施例,局部访存模块还包括存内刷新晶体管;存内刷新晶体管的栅极与存内刷新控制端连接,存内刷新晶体管的漏极与读端口连接,读端口为第三PMOS管的源极和第一NMOS管的漏极连接的公共端,存内刷新晶体管的源极与局部写位线连接。
作为一种优选的实施例,局部访存模块具体用于通过局部读位线的充放电结果进行同步读取运算权重数据,通过存内刷新晶体管导通读端口与局部写位线的路径进行同步写回运算权重数据。
在本实施例中,局部访存模块通过局部读位线(LRBL,Local Read Bit Line)和局部写位线(LWBL,Local Write Bit Line)对相应的查找表分块进行读写操作。考虑到eDRAM的存算电路设计,主要采用模拟计算的方式实现。相比于数字电路,模拟电路更容易受到电压、工艺和温度扰动的影响,导致精度下降。并且eDRAM电路动态存储的特性,需要对存储内容进行定时刷新,刷新的时间和功耗代价进一步降低了eDRAM存内计算电路的性能和能效。为了解决eDRAM存储器频繁刷新的问题,本实施例,当需要对eDRAM进行刷新功能时,需要打开存内刷新晶体管WB_RFS将读端口的输出和局部写位线连接。然后通过依次打开RWLi和WWLi的方式,将eDRAM每行的数据读出并写回到相应的位置,完成一次刷新操作,从而补充动态节点丢失的电荷。打开读行线RWL和写行线WWL的操作可以对所有的eDRAM查找表分块并行完成,从而实现加速刷新的效果。
具体的,存内刷新包括切断全局写位线(GWBL)、同步读权重和同步写权重。其中,存内刷新需要eDRAM阵列内部的多个LUT分块通过局部读写位线(LRBL/LWBL)进行独立和并行的读写操作,因此进行操作前需要先切断全局写位线GWBL的使能信号GWBL_EN,此后的选中读行线RWL和写行线WWL读写操作对于所有的查找表LUT分块均同步进行,以下以LUT0为例具体说明,LUT1-15的情况不再重复。
在同步读权重过程中,通过对局部读位线LRBL先预充到VDD电压,再通过拉高读行线RWL0,选中LUT0第0行的eDRAM单元对于局部读位线LRBL进行放电,若eDRAM单元存储‘1’,则局部读位线LRBL放电至GND,否则维持VDD电平。待放电完成后打开读端口使能信号REN和RENB,通过一个反相器(第二PMOS管和第二NMOS管)读出局部读位线LRBL端电平反向后的结果。
在同步写权重过程中,写操作需要打开存内刷新晶体管WB_RFS,将读端口的输出和eDRAM的局部写位线LWBL短接,同时选中LUT0第0行的写行线WWL,完成对该行eDRAM单元的刷新操作。
对LUT的1-15行重复同步读权重和同步写权重操作完成对于整个阵列的刷新。
作为一种优选的实施例,局部访存模块还用于将编程权重数据写回至查找表模块,编程权重数据为当前局部访存模块的运算权重数据与相邻局部访存模块的运算权重数据组合后的数据。
作为一种优选的实施例,局部访存模块还包括存内编程晶体管和加法器;存内编程晶体管的栅极与存内编程控制端连接,存内编程晶体管的源极与存内刷新晶体管的源极和局部写位线连接的公共端连接,存内编程晶体管的漏极与加法器的第一写端口连接,加法器的第一读端口与第三PMOS管的源极和第一NMOS管的漏极连接的公共端连接,加法器的第二写端口与另一局部访存模块的存内编程晶体管的漏极连接,加法器的第二读端口与另一局部访存模块的存内编程晶体管的第三PMOS管的源极和第一NMOS管的漏极连接的公共端连接。
作为一种优选的实施例,局部访存模块具体还用于通过加法器将当前局部访存模块的运算权重数据和相邻局部访存模块的运算权重数据进行权重写入和组合,通过存内编程晶体管导通读端口与局部写位线的路径进行写回编程权重数据。
请参考图6,图6为本发明提供的存内编程的时序波形图。
为了进一步提高存内计算的性能,在本实施例中,对于存内编程的操作和刷新的区别在于需要通过加法器的协助生成新的权重组合而后写入查找表模块。因此,需要打开存内编程晶体管WB_SUM并通过同时打开相邻两个查找表分块的读行线RWL,相互配合完成编程。该过程共分为两个阶段。在第一阶段的权重写入过程中,每个权重W0-W63依次写入到共享加法器的相邻两个查找表分块中。之后每周期载入两个权重或权重部分和生成新的权重组合并写回相应的eDRAM查找表。
存内编程具体的读写操作可以参考存内刷新,区别在于写操作时需要选通存内编程晶体管WB_SUM来连接加法器的输出到局部写位线LWBL,本实施例重点介绍存内编程和存内刷新在读写地址控制上的不同。该过程包括权重串行载入、权重计算阶段1(A+B)、权重计算阶段2(A+B+C)和权重计算阶段3(A+B+C+D)。
其中,在权重串行载入过程中,首先将eDRAM切换为全局读写模式,将全局写位线GWBL_EN拉高,通过外部I/O接口按W0-W63的顺序,依次写入权重。每次写权重时会同时写入相邻的两个查找表分块当中。具体而言:
第1周期:W0写入LUT0的第1行和LUT1的第0行。
第2周期:W1写入LUT0的第2行和LUT1的第7行。
第3周期:W2写入LUT0的第4行和LUT1的第11行。
第4周期:W3写入LUT0的第8行和LUT1的第15行。
之后的4个周期写入W4-W7,但是LUT0和LUT1写入的地址相互交换,具体而言:
第5周期:W4写入LUT0的第0行和LUT1的第1行。
第6周期:W5写入LUT0的第7行和LUT1的第2行。
第7周期:W6写入LUT0的第11行和LUT1的第4行。
第8周期:W7写入LUT0的第15行和LUT1的第8行。
之后的56个周期向LUT2-15写入W8-W63,具体的地址和周期1-8重复,但写入的LUT分块不同,在此不再重复,此后将全局写位线GWBL_EN重新拉低,正式进入存内编程模式。
在权重计算阶段1(A+B)过程中,eDRAM阵列中的15个LUT分块并行生成两两权重之和,共12个周期,下面以LUT0和LUT1每个周期的操作为例进行具体说明,LUT3-15不再重复。
第65周期:从LUT0的第2行读取W1,从LUT1的第0行读取W0,二者求和得到W0+W1,写入LUT0的第3行。
第66周期:从LUT0的第0行读取W4,从LUT1的第2行读取W5,二者求和的搭配W4+W5,写入LUT1的第3行。
第67周期:从LUT0的第4行读取W2,从LUT1的第0行读取W0,二者求和得到W0+W2,写入LUT0的第5行。
第68周期:从LUT0的第0行读取W4,从LUT1的第4行读取W6,二者求和得到W4+W6,写入LUT1的第5行。
第69周期:从LUT0的第8行读取W3,从LUT1的第0行读取W0,二者求和得到W0+W3,写入LUT0的第9行。
第70周期:从LUT0的第0行读取W4,从LUT1的第8行读取W7,二者求和得到W4+W7,写入LUT1的第9行。
第71周期:从LUT0的第4行读取W2,从LUT1的第7行读取W1,二者求和得到W1+W2,写入LUT0的第6行。
第72周期:从LUT0的第7行读取W5,从LUT1的第4行读取W6,二者求和得到W6+W7,写入LUT1的第6行。
第73周期:从LUT0的第8行读取W3,从LUT1的第7行读取W1,二者求和得到W1+W3,写入LUT0的第10行。
第74周期:从LUT0的第7行读取W5,从LUT1的第8行读取W7,二者求和得到W5+W7,写入LUT1的第10行。
第75周期:从LUT0的第8行读取W3,从LUT1的第11行读取W2,二者求和得到W2+W3,写入LUT0的第12行。
第76周期:从LUT0的第11行读取W6,从LUT1的第8行读取W7,二者求和得到W6+W7,写入LUT1的第12行。
在权重计算阶段2(A+B+C)过程中,eDRAM阵列的15个LUT分块并行生成任意3个权重之和,共8个周期,下面以LUT0和LUT1每个周期的操作为例进行具体说明,LUT3-15不再重复。
第77周期:从LUT0的第6行读取W1+W2,从LUT1的第0行读取W0,二者求和得到W0+W1+W2,写入LUT0的第7行。
第78周期:从LUT0的第0行读取W4,从LUT1的第6行读取W5+W6,二者求和得到W4+W5+W6,写入LUT1的第7行。
第79周期:从LUT0的第10行读取W1+W3,从LUT1的第0行读取W0,二者求和得到W0+W1+W3,写入LUT0的第11行。
第80周期:从LUT0的第0行读取W4,从LUT1的第10行读取W5+W7,二者求和得到W4+W5+W7,写入LUT1的第11行。
第81周期:从LUT0的第12行读取W2+W3,从LUT1的第0行读取W0,二者求和得到W0+W2+W3,写入LUT0的第13行。
第82周期:从LUT0的第0行读取W4,从LUT1的第12行读取W6+W7,二者求和得到W4+W6+W7,写入LUT1的第13行。
第83周期:从LUT0的第6行读取W1+W2,从LUT1的第15行读取W3,二者求和得到W1+W2+W3,写入LUT0的第14行。
第84周期:从LUT0的第15行读取W7,从LUT1的第6行读取W5+W6,二者求和得到W5+W6+W7,写入LUT1的第14行。
在权重计算阶段3(A+B+C+D)过程中,eDRAM阵列的15个LUT分块并行生成4个权重之和,共2个周期,下面以LUT0和LUT1每个周期的操作为例进行具体说明,LUT3-15不再重复。
第85周期:从LUT0第14行读取W1+W2+W3,从LUT1的第0行读取W0,二者求和得到W0+W1+W2+W3,写入LUT0的第15行。
第86周期:从LUT0的第0行读取W4,从LUT1第14行读取W5+W6+W7,二者求和得到W4+W5+W6+W7,写入LUT1的第15行。至此LUT的所有权重生成完毕。
本发明eDRAM查找表存内计算IP支持8bit 64输入ACT和权重W的乘累加操作,其中64×8bit的输入按比特串行的方式依次从MSB到LSB每周期输入64×1bit的数据和8bit权重W完成乘累加操作,并由移位累加电路完成对于8bit输入的累加。本发明的存内计算过程包括输入编码阶段、LUT读取阶段、LUT累加阶段和移位累加阶段。
其中,在输入编码阶段,将64×1bit的输入分为16份4×1bit对应16个LUT分块。将4bit输入按顺序从高到低排列为二进制数,编码输出该二进制数对应的读行线RWL编号,如1011对应RWL11,各个LUT分块的编码同步进行。
在LUT读取阶段,该阶段的操作和存内刷新中的读取阶段相同,不同的LUT根据各自输入编码的情况同步读取输入和权重乘累加的结果,在此不再重复。
在LUT累加阶段,由16输入的10bit加法树完成对16个LUT分块读取结果的累加,结果存入14bit寄存器当中。
在移位累加阶段,将不同输入比特的LUT累加结果进行移位累加,最终输出8bit64输入ACT和权重W的乘累加结果。
请参考图7,图7为本发明提供的一种基于动态随机存储器查找表的存内计算芯片的结构示意图。
本发明还提供一种基于动态随机存储器查找表的存内计算芯片,包括上述的基于动态随机存储器查找表的存内计算电路。
本发明采用台积电28nm 1p10m7x2r hpcplus工艺完成了芯片设计,制造和测试。芯片在28nm工艺节点下实现了2.4Mb/mm2的存储密度和16.7TOPS/mm2的8bit算力密度以及19.7TOPS/W的8bit能量效率,均高于台积电12nm工艺下SRAM数字存内计算IP指标,分别为其9.5,1.13和1.10倍。
对于本发明提供的一种基于动态随机存储器查找表的存内计算芯片的介绍请参照上述基于动态随机存储器查找表的存内计算电路实施例,本发明在此不再赘述。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (10)
1.一种基于动态随机存储器查找表的存内计算电路,其特征在于,包括多个输入译码模块、多个查找表模块、多个局部访存模块和后级累加模块;
所述输入译码模块用于根据输入向量确定运算权重数据;所述运算权重数据为与所述输入向量进行乘累加运算的权重数据;
所述查找表模块用于存储块权重数据;所述块权重数据为多个权重数据及多个所述权重数据的相加数据;
所述局部访存模块用于从所述查找表模块中读取所述运算权重数据;
所述后级累加模块用于将所述输入向量与所述运算权重数据进行乘累加运算。
2.根据权利要求1所述的基于动态随机存储器查找表的存内计算电路,其特征在于,所述查找表模块为eDRAM阵列;所述eDRAM阵列包括多个eDRAM单元,每个所述eDRAM单元包括写选通晶体管、存储节点晶体管和读选通晶体管;
所述写选通晶体管的源极与局部写位线连接,所述写选通晶体管的栅极与写行线连接,所述写选通晶体管的漏极与所述存储节点晶体管的栅极连接,所述存储节点晶体管的源极接地,所述存储节点晶体管的漏极与所述读选通晶体管的源极连接,所述读选通晶体管的栅极与读行线连接,所述读选通晶体管的漏极与局部读位线连接。
3.根据权利要求2所述的基于动态随机存储器查找表的存内计算电路,其特征在于,所述局部访存模块包括第一PMOS管、第二PMOS管、第三PMOS管、第一NMOS管和第二NMOS管;
所述第一PMOS管的栅极与预充电控制端连接,所述第一PMOS管的漏极与所述第二PMOS管的漏极连接的公共端与预充电正极连接,所述第一PMOS管的源极分别与所述局部写位线、所述第二PMOS管的栅极和所述第二NMOS管的栅极连接,所述第二PMOS管的源极与所述第三PMOS管的漏极连接,所述第三PMOS管的栅极与读端口第一使能控制端连接,所述第三PMOS管的源极与所述第一NMOS管的漏极连接,所述第一NMOS管的栅极与读端口第二使能控制端连接,所述第一NMOS管的源极与所述第二NMOS管的漏极连接,所述第二NMOS管的源极接地。
4.根据权利要求3所述的基于动态随机存储器查找表的存内计算电路,其特征在于,所述局部访存模块还用于将所述运算权重数据刷新写回至所述查找表模块。
5.根据权利要求4所述的基于动态随机存储器查找表的存内计算电路,其特征在于,所述局部访存模块还包括存内刷新晶体管;所述存内刷新晶体管的栅极与存内刷新控制端连接,所述存内刷新晶体管的漏极与读端口连接,所述读端口为所述第三PMOS管的源极和所述第一NMOS管的漏极连接的公共端,所述存内刷新晶体管的源极与所述局部写位线连接。
6.根据权利要求5所述的基于动态随机存储器查找表的存内计算电路,其特征在于,所述局部访存模块具体用于通过所述局部读位线的充放电结果进行同步读取所述运算权重数据,通过所述存内刷新晶体管导通所述读端口与所述局部写位线的路径进行同步写回所述运算权重数据。
7.根据权利要求5所述的基于动态随机存储器查找表的存内计算电路,其特征在于,所述局部访存模块还用于将编程权重数据写回至所述查找表模块,所述编程权重数据为当前局部访存模块的运算权重数据与相邻局部访存模块的运算权重数据组合后的数据。
8.根据权利要求7所述的基于动态随机存储器查找表的存内计算电路,其特征在于,所述局部访存模块还包括存内编程晶体管和加法器;
所述存内编程晶体管的栅极与存内编程控制端连接,所述存内编程晶体管的源极与所述存内刷新晶体管的源极和所述局部写位线连接的公共端连接,所述存内编程晶体管的漏极与所述加法器的第一写端口连接,所述加法器的第一读端口与所述第三PMOS管的源极和所述第一NMOS管的漏极连接的公共端连接,所述加法器的第二写端口与另一局部访存模块的存内编程晶体管的漏极连接,所述加法器的第二读端口与另一局部访存模块的存内编程晶体管的第三PMOS管的源极和第一NMOS管的漏极连接的公共端连接。
9.根据权利要求8所述的基于动态随机存储器查找表的存内计算电路,其特征在于,所述局部访存模块具体还用于通过所述加法器将所述当前局部访存模块的运算权重数据和所述相邻局部访存模块的运算权重数据进行权重写入和组合,通过所述存内编程晶体管导通所述读端口与所述局部写位线的路径进行写回所述编程权重数据。
10.一种基于动态随机存储器查找表的存内计算芯片,其特征在于,包括权利要求1至9任一项所述的基于动态随机存储器查找表的存内计算电路。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410151784.1A CN118116440A (zh) | 2024-02-02 | 2024-02-02 | 基于动态随机存储器查找表的存内计算电路及芯片 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410151784.1A CN118116440A (zh) | 2024-02-02 | 2024-02-02 | 基于动态随机存储器查找表的存内计算电路及芯片 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN118116440A true CN118116440A (zh) | 2024-05-31 |
Family
ID=91218239
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410151784.1A Pending CN118116440A (zh) | 2024-02-02 | 2024-02-02 | 基于动态随机存储器查找表的存内计算电路及芯片 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN118116440A (zh) |
-
2024
- 2024-02-02 CN CN202410151784.1A patent/CN118116440A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111816234B (zh) | 一种基于sram位线同或的电压累加存内计算电路 | |
CN113257306B (zh) | 一种基于静态随机存取存储器的存算一体阵列及加速装置 | |
CN112133348B (zh) | 一种基于6t单元的存储单元、存储阵列和存内计算装置 | |
CN115048075A (zh) | 基于电容耦合的sram存算一体芯片 | |
CN111880763A (zh) | 一种在内存中实现带有正负数乘加的sram电路 | |
CN111045954B (zh) | 基于nand-spin的存内计算加速方法 | |
CN115394336A (zh) | 一种存算fpga架构 | |
CN110322008A (zh) | 一种基于残差卷积神经网络的量化处理方法及装置 | |
CN117608519B (zh) | 基于10t-sram的带符号乘法与乘累加运算电路 | |
CN117636945B (zh) | 5bit带符号位的同或与同或累加运算电路、CIM电路 | |
CN116126779A (zh) | 一种9t存算电路、乘累加运算电路、存内运算电路及芯片 | |
Tsai et al. | RePIM: Joint exploitation of activation and weight repetitions for in-ReRAM DNN acceleration | |
CN114267391A (zh) | 机器学习硬件加速器 | |
CN112233712A (zh) | 一种6t sram存算装置、存算系统及存算方法 | |
CN110085270B (zh) | 存储运算电路模块及处理器 | |
CN118116440A (zh) | 基于动态随机存储器查找表的存内计算电路及芯片 | |
CN115238876A (zh) | 一种基于异构存储的存内神经网络计算的装置及方法 | |
CN116339680A (zh) | 一种实时的多端口并行读写近存处理器 | |
CN114093394B (zh) | 一种可转置存内计算电路及其实现方法 | |
CN115658010A (zh) | 一种脉冲宽度调制电路、量化电路、存算电路、芯片 | |
CN113378115B (zh) | 一种基于磁性随机存储器的近存稀疏向量乘法器 | |
CN115171746A (zh) | 一种存内计算单元及装置 | |
US20230047364A1 (en) | Partial sum management and reconfigurable systolic flow architectures for in-memory computation | |
CN116543807A (zh) | 一种基于近似计算的高能效sram存内计算电路和方法 | |
CN115658012B (zh) | 向量乘加器的sram模拟存内计算装置和电子设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |