三态内容可寻址存储器及其操作方法与流程

文档序号:23220209发布日期:2020-12-08 15:02阅读:136来源:国知局
三态内容可寻址存储器及其操作方法与流程
相关申请的交叉引用本申请要求享有分别在2019年6月5日和2019年8月12日在韩国知识产权局提交的韩国专利申请第10-2019-0066885号和第10-2019-0098347号的权益,其公开内容通过引用全文各自在此合并。本发明构思涉及内容可寻址存储器(cam)。例如,至少一些示例实施例涉及三态cam(其执行用于机器学习和深度学习的近似计算)和/或其操作方法。
背景技术
:cam可以在存储的数据字(例如入口(entry))当中搜索匹配搜索字(搜索数据)的数据字,并且当存在匹配的数据字时,可以输出匹配的数据字的地址。cam可以分为二态cam和三态cam。二态cam的每个存储单元可以存储“0”或“1”的信息。三态cam(tcam)的每个存储单元除了可以存储“0”和“1”的信息之外,还可以存储“x”(不用关心don'tcare))的信息。“x”可以具有“0”或“1”的任何值。包括tcam的电子装置可以在机器学习或深度学习中并行地高效执行处理多个计算的过程。为了在机器学习和深度学习中处理多个计算,包括tcam的电子装置可以包括针对需要处理的每个函数的专用加速器,从而提高计算处理速度。技术实现要素:本发明构思提供三态内容可寻址存储器件,用于通过关于预加载数据使用掩码位对输入关键字执行近似计算来提高机器学习和深度学习过程的计算速度,从而减少关于输入关键字的未命中次数。根据本发明构思的一示例实施例,提供一种三态内容可寻址存储器件(tcam),该tcam包括:高速缓冲存储器,配置为存储用于多个函数的查找表;以及处理电路,配置为生成掩码位、基于掩码位获得与输入关键字对应的近似输入值、以及从查找表检索与近似输入值对应的输出值。根据本发明构思的另一示例实施例,提供一种操作三态内容可寻址存储器件(tcam)的方法,该方法包括:接收关于输入关键字和计算函数的信息;基于精度信息和位选择信息生成掩码位,精度信息包括汉明距离的值,位选择信息指示最高有效位(msb)或最低有效位(lsb)之一;基于掩码位获得与输入关键字对应的近似输入值;以及从查找表检索与近似输入值对应的输出值。根据本发明构思的另一示例实施例,提供一种三态内容可寻址存储器件(tcam),该tcam包括:处理电路,配置为生成用于近似计算的掩码位;以及查找表,配置为存储关于多个函数的计算结果,其中近似计算包括基于掩码位获得与输入关键字对应的近似输入值以及从查找表检索与近似输入值对应的输出值。附图说明通过以下结合附图的详细描述,本发明构思的示例实施例将被更清楚地理解,附图中:图1是根据本发明构思的示例实施例的包括三态内容可寻址存储器的装置的框图;图2是根据本发明构思的示例实施例的近似单元的子块图;图3a示出根据本发明构思的示例实施例的掩码生成电路和掩码位的示例,图3b是根据本发明构思的示例实施例的掩码生成电路的电路图;图4a是根据本发明构思的示例实施例的用于在三态内容可寻址存储器(tcam)中执行比较计算的电路图,图4b示出用于并行执行比较计算的电路图的示例;图5a至图5c示出根据本发明构思的示例实施例的用于线性和非线性函数的近似计算的示例;图6示出根据本发明构思的示例实施例的查找表(lut)的示例;图7示出根据本发明构思的示例实施例的存储在关键字值表中的输入关键字和命中次数的正态分布曲线图的示例;图8示出根据发明构思的示例实施例的tcam的操作顺序;图9a至图9e示出根据本发明构思的示例实施例的tcam的使用场景;以及图10示出了显示根据本发明构思的示例实施例的累积未命中率的降低的曲线图。具体实施方式图1是根据本发明构思的示例实施例的包括三态内容可寻址存储器的电子装置100的框图。参考图1,电子装置100可以包括主处理器110、三态内容可寻址存储器(下文中称为tcam)120、子处理器130和随机存取存储器140。根据各种示例实施例,主处理器110可以总体地控制电子装置100。例如,主处理器110可以运行软件以控制电子装置100的连接到主处理器110的至少一个其他组件(例如tcam120),并且执行各种数据处理或计算。例如,主处理器110可以执行用于机器学习(ml)和/或深度学习(dl)的任务处理或计算。这样的机器学习系统可以利用各种人工神经网络组织和处理模型,诸如卷积神经网络(cnn)、反卷积神经网络、可选地包括长短期记忆(lstm)单元和/或门控循环单元(gru)的递归神经网络(rnn)、堆叠神经网络(snn)、状态空间动态神经网络(ssdnn)、深度置信网络(dbn)、生成对抗网络(gan)和/或受限玻尔兹曼机(rbm)。替代地或额外地,这样的机器学习系统可以包括其他形式的机器学习模型,诸如例如线性和/或逻辑回归、统计聚类、贝叶斯分类、决策树、降维(诸如主成分分析)和专家系统;和/或其组合,包括集合(诸如随机森林)。这种机器学习模型还可以用于提供各种服务和/或应用程序,例如图像分类服务、基于生物信息或生物特征数据的用户身份验证服务、高级驾驶员辅助系统(adas)服务、语音助手服务、自动语音识别(asr)服务等可以由电子装置100执行、运行或处理。根据各种示例实施例,主处理器110可以与子处理器130区分开。例如,主处理器110可以对应于中央处理单元(cpu),并且子处理器130可以对应于图形处理单元(gpu)、神经处理单元(npu)或微处理单元(mpu)中的一种。子处理器130可以从tcam120接收计算请求并且响应于该计算请求执行请求的计算。当与输入关键字对应的数据没有存储在tcam120中时,tcam120可以将计算请求发送到子处理器130以根据输入关键字来执行计算。在本发明构思的各种示例实施例中,电子装置100可以不包括用于处理多个计算中的每个计算的专用加速器,而是可以控制子处理器130以执行所述多个计算。tcam120可以存储查找表(下文中称为lut)121,并且可以包括tcam控制器(下文中称为控制器)123、命中/未命中计数器(下文中称为h/m计数器)125、调度器127和近似单元129。lut121可以关于特定计算对应于一组先前计算的结果。可以参考lut121以缩短执行特定计算的时间并快速获得结果值。存储在lut121中的先前计算的结果的该组数据可以对应于预加载数据。特定计算可以包括执行ml算法或dl算法所需的计算。例如,特定计算可以包括但不限于乘法(mul)计算、sigmoid计算、双曲正切(tanh)计算和平方根(sqrt)计算。根据各种示例实施例,由于lut121存储先前计算的结果值,因此与当通过针对每个计算的专用加速器执行计算时相比,可以减少操作时间。例如,当专用加速器执行sigmoid计算时,它可能花费50个时钟,而根据本发明构思的各种示例实施例,由于先前计算的结果值被存储在lut121中,因此可以通过请求访问lut121并读取先前计算的结果值来执行sigmoid计算。在这种情况下,sigmoid操作可以在一到两个时钟内执行。控制器123可以总体地控制tcam120。控制器123可以控制tcam120执行与外部组件(例如主处理器110)的数据发送/接收,或者检索与输入关键字对应的数据。例如,控制器123可以向h/m计数器125发送关于输入的关键字的命中或未命中信息、向调度器127发送更新请求信号或者从近似单元129接收掩码信息。h/m计数器125可以从控制器123接收指示关于输入关键字的搜索结果的命中/未命中信息。h/m计数器125可以使用接收到的信息来计数关于输入关键字的命中次数或者关于输入关键字的未命中次数,并计算命中/未命中率。调度器127可以从控制器123接收更新请求信号,并且响应于该更新请求信号,可以向随机存取存储器140请求用于更新lut121的数据。随机存取存储器140可以存储关于输入关键字的分布中具有低调用次数的输入关键字的数据。当未存储在lut121中的数据被输入关键字请求的次数超过期望的(或备选地,预定的)次数时,用于更新lut121的数据可以被存储在lut121中使得该数据被包括作为预加载数据。近似单元129可以将掩码信息提供到控制器123。掩码信息与掩码位有关,并且可以用作比较检索到的关键字与存储在lut121中的tcam关键字的结果。通过对比较检索到的关键字与每个tcam关键字的结果执行add计算,掩码位当中与位“0”相同位置的关键字位可以等同于“无关”。图2是根据本发明构思的示例实施例的近似单元129的子块图。图2所示的近似单元129可以对应于图1所示的近似单元129。根据各种示例实施例,近似单元129可以包括掩码生成电路210和位选择表220。位选择表220可以包括用于选择最高有效位(msb)或最低有效位(lsb)之一的信息。位选择表220中包括的信息可以对应于下面的表1。表1计算函数位选择信息sigmoidmsbmultiplylsbaddlsbtanhmsb参考上面的表1,位选择表220可以指示与每个计算函数对应的msb或lsb中的任何一个。例如,当计算函数为sigmoid或tanh时,函数输出值随着函数的输入值的增大而饱和。也就是,当函数的输入值大于某一大小时,即使输入值改变,输出值也可以保持恒定。因此,在sigmoid函数的情况下,msb可以被设定为“不用关心的”。作为另一示例,当计算函数是multiply或add时,multiply计算或add计算的结果值当msb改变时在输出值中具有大的改变。也就是,与msb的变化对输出值的影响相比,lsb的变化对输出值的影响可以相对较小。因此,当计算函数为multiply时,lsb可以被设定为“无关”。根据各种示例实施例,位选择表220可以从主处理器110或控制器123接收关于计算函数的信息,并且将与该计算函数对应的位选择信息提供到掩码生成电路210。掩码生成电路210可以生成掩码位。掩码生成电路210可以基于精度信息和从位选择表220接收的位选择信息来生成掩码位。精度信息可以从主处理器110或控制器123提供。精度信息可以包括指示在近似计算中要执行多少近似的信息。精度信息可以包括关于汉明距离(下文中称为hd)的信息。hd可以对应于具有相同长度的两个字符串中的相同位置,但是可以指示具有不同值的字符的数量。例如,“1100”位串和“1110”位串之间的hd可以是“1”。“1100”位串和“1111”位串之间的hd可以是“2”。“1111”位串和“1111”位串之间的hd可以是0。也就是,hd越小,要比较的两个字符串或位串可以对应于相同的字符串或位串。根据各种示例实施例,精度信息可以具有0hd、1hd或2hd之一的值。例如,当精度信息是0hd时,tcam120可以不执行近似计算,并且可以仅在输入关键字和存储在tcam120中的关键字精确匹配时才输出数据。作为另一示例,当精度信息是1hd时,tcam120可以执行近似计算。tcam120可以输出数据直到一个位的值在输入关键字和存储在tcam120中的关键字之间不同时为止。所述一个位的位置可以根据位选择信息来确定。作为另一示例,当精度信息是2hd时,tcam120可以输出与精度信息是1hd时的值相比更加近似的值。也就是,tcam120可以输出数据直到两个位在输入关键字与存储在tcam120中的关键字之间不同时为止。所述两个位的位置可以根据位选择信息来确定。图3a示出根据本发明构思的示例实施例的掩码生成电路210和掩码位的示例,图3b是根据本发明构思的示例实施例的掩码生成电路210的电路图。参考图3a,示出了掩码生成电路210。掩码生成电路210可以接收一个位的位选择信息(例如指示msb或lsb的信息)和两个位的精度信息(例如指示0hd、1hd或2hd的信息)。如上所述,由于位选择信息是指示msb和lsb之一的信息,所以位选择信息可以用一个位表示。在下文中,当位选择信息是“1”时指示msb,而当位选择信息是“0”时指示lsb。然而,示例实施例不限于此。此外,如上所述,由于精度信息是指示0hd、1hd或2hd之一的信息,所以精度信息可以由至少2个位来表示。当精度信息的值是“0”,也就是,hd[1:0]=00时,精度信息可以指示0hd,并且tcam120可以不执行近似计算。当精度信息的值为“1”,也就是,hd[1:0]=01时,精度信息可以指示1hd,并且tcam120可以输出存储在tcam120中的关键字当中的其一个位与输入关键字不同的关键字的数据。当精度信息的值是“2”,也就是,hd[1:0]=10时,精度信息可以指示2hd,并且tcam120可以输出存储在tcam120中的关键字当中的其两个位与输入关键字不同的关键字的数据。然而,示例实施例不限于此,并且精度信息可以以各种方式指示汉明距离。根据各种示例实施例,当考虑位选择信息和精度信息两者来生成掩码位时,掩码位可以对应于图3a所示的表。参考图3a所示的表,例如,当计算函数是add或multiply时,由于lsb的影响很小,所以位选择信息可以是“0”以指示lsb。当对于近似计算允许一个位的误差时,由于精度信息是1hd,因此hd[1:0]=01。因此,可以看出,生成的掩码位是mask[3:0]=1110。然而,示例实施例不限于此。参考图3b,示出了对应于图3a的表的电路图。如在上述示例实施例中的,当位选择信息是“0”并且精度信息是1hd的“01”时,从四个或(or)门输出的掩码位可以对应于“1110”。图4a是根据本发明构思的示例实施例的用于在tcam120中执行比较计算的电路图,图4b示出用于并行执行比较计算的电路图的示例。参考图4a,示出了其中tcam120执行比较计算以确定与输入关键字对应的值是否存在的电路图。图4a所示的关键字值表400可以存储在图1所示的lut121的至少一部分中,或者可以存储在单独的存储器中。根据各种示例实施例,关键字值表400可以是映射多个关键字和分别对应于所述多个关键字的输出值的表。tcam120可以通过比较器410比较输入关键字值与从关键字值表400接收的关键字值。比较器410可以包括多个异或(xor)门。xor门的数量可以对应于输入关键字或存储在关键字值表400中的关键字的位数。例如,当输入关键字或存储在关键字值表400中的关键字的位数是4时,包括在比较器410中的xor门的数量可以是4。所述多个xor门中的每个可以输出在输入关键字与从关键字值表400接收的关键字之间位串是否一致。例如,当比较输入关键字的位串“1110”与关键字值表400中存储的关键字当中的关键字串“1111”时,因为除lsb以外的所有其他位相同,所以比较器410输出的位串可以是“0001”。tcam120可以通过掩码单元420对比较输入关键字与存储在关键字值表400中的关键字的结果执行掩码。掩码单元420可以包括多个与(and)门。从比较器410输出的位和从掩码生成电路(例如图2的掩码生成电路200)接收的掩码位可以通过所述多个and门分别比较。例如,当掩码位相对于从比较器410输出的位串“0001”(也就是,在lsb不匹配)为“1111”时,输出lsb的and门的输出可以为“1”。因此,可以不输出与“1111”对应的数据,并且tcam120可以执行比较输入关键字与存储在关键字值表400中的另一关键字的操作。作为另一示例,当掩码位相对于从比较器410输出的位串“0001”为“1110”时,掩码单元420的所有and门的输出可以是“0”。因此,可以输出与存储在关键字值表400中的关键字“1111”对应的数据。根据上述实施例,可以看出,由于确定输入关键字没有存储在关键字值表400中,因此当不执行近似计算(即,掩码位为“1111”)时,没有数据被输出,然而,当执行近似计算(即,掩码位的位串中的至少一个包括0)时,输出与输入关键字的位串“1110”实质不同的与位串“1111”的关键字对应的数据。参考图4b,tcam120可以并行操作比较器410和掩码单元420。例如,tcam120可以同时比较和掩码输入的关键字“1110”和存储在关键字值表400中的多个关键字,例如,“0000”至“1111”的16个关键字。根据各种示例实施例,在第一层430中,tcam120可以比较输入关键字与存储在关键字值表400中的关键字当中的具有“1011”位串的关键字,在第二层440中,tcam120可以比较输入关键字与存储在关键字值表400中的关键字当中的具有“1111”位串的关键字,此外,在第三层450中,tcam120可以比较输入关键字与存储在关键字值表400中的关键字当中的具有“1001”位串的关键字。比较输入关键字与存储在关键字值表400中的关键字的详细操作与图4a的详细操作重复,因此其描述被省略。图5a至图5c示出根据本发明构思的示例实施例的用于线性函数和非线性函数的近似计算的示例。关于图5a至图5c,图5a和图5b示出在执行add和multiply计算(其为线性函数)时使用掩码位的近似计算,图5c示出在执行sigmoid计算(其为非线性函数)时使用掩码位的近似计算。根据各种示例实施例,图5a示出执行a*b+c计算的情况。a、b和c可以构成输入关键字。也就是,每个输入关键字的位串长度可以是16。tcam120可以对用于add计算的输入关键字c进行掩码。尽管tcam120对add计算执行近似计算,但是由于对结果值的影响相对小于multiply计算,因此tcam120可以对输入关键字c执行掩码。tcam120可以在比较输入关键字c和存储在关键字值表400中的多个关键字的过程中执行掩码以输出与输入关键字c对应的数据。根据各种示例实施例,tcam120可以改变精度信息值。也就是,即使一个位在关于输入关键字c的位串与存储在关键字值表400中的关键字的位串之间不匹配,tcam120也可以被控制为将精度信息设定为1hd从而关于输入关键字c输出数据并执行a*b+c计算。此外,即使两个位在关于输入关键字c的位串与存储在关键字值表400中的关键字的位串之间不匹配,tcam120也可以被控制为将精度信息设定为2hd从而关于输入关键字c输出数据并执行a*b+c计算。根据各种示例实施例,当精度对应于1hd时和当精度对应于2hd时发生不匹配的位的范围可以不同。例如,当精度对应于1hd时,发生一个不匹配的位的位置可以被限制为长度为16的位串中的8个低位的位置。作为另一示例,如果精度对应于2hd,则发生两个不匹配的位的位置可以被限制为长度为16的位串中的4个低位的位置。当允许一个位不匹配时,即使在8个低位中的任何一个位发生不匹配,也可以将不匹配包括在可接受的误差范围内,但是当允许两个位不匹配并且允许在8个低位的两个中发生两个位不匹配时,可能导致输入值的变化超出可接受的误差范围。因此,随着在近似计算中的近似度增加,在位串中可允许引起不匹配发生的位的范围不可避免地变窄。根据各种示例实施例,参考图5a,由于在a*b计算之后执行add计算,所以可以对与输入关键字c对应的数据执行近似计算。这里,由于计算函数是add,所以位选择信息可以是lsb,也就是“0”。如上所述,当精度对应于1hd时,即使在长度为16的位串的8个低位中的任何一个中发生位之间的不匹配,该长度为16的位串也可以作为关于输入关键字c的数据输出。当精度对应于2hd时,即使在长度为16的位串的4个低位中的两个中发生位之间的不匹配,该长度为16的位串也可以作为关于输入关键字c的数据输出。根据各种示例实施例,图5b示出了执行a+b计算的情况。变量a和b可以构成输入关键字。也就是,每个输入关键字的位串长度可以是16。由于tcam120是add计算,所以位选择信息可以被设定为“0”。然而,图5b与图5a的不同之处在于,可以对输入关键字a和输入关键字b两者执行掩码。图5a涉及将与输入关键字c对应的数据和multiply计算的结果值相加的操作,因此可以仅在输出关于输入关键字c的数据的过程中执行掩码。另外,由于图5b的输入关键字a和输入关键字b是存储在关键字值表400中的值,所以可以对输入关键字a和输入关键字b两者执行掩码。与图5a的描述相同的描述可以被省略。根据各种示例实施例,图5c示出了在执行sigmoid计算时执行掩码。变量a可以对应于输入关键字。输入关键字a的位串长度可以是16。tcam120可以执行掩码以输出与输入关键字a对应的数据,该输入关键字a是sigmoid计算的输入值。尽管tcam120对sigmoid计算的输入值执行近似计算并且对高位执行掩码,即使将长度为16的位串作为与输入关键字a对应的数据输出,其结果值改变的幅度也可以包含在可允许的误差范围内。这是因为,由于sigmoid函数的特性,当输入关键字的大小大于某个值时,输出的大小饱和并且几乎没有变化。在图3a中描述了可以将精度设定为1hd或2hd,因此其描述被省略。然而,由于计算函数是sigmoid计算,因此其不同之处可以在于位选择信息是“1”,也就是,msb。例如,为了以1hd的精度执行近似计算,即使在长度为16的位串中的8个高位之一中发生不匹配,也可以将该长度为16的位串作为关于输入关键字a的数据输出。作为另一示例,为了以2hd的精度执行近似计算,即使两个位之间的不匹配发生在长度为16的位串中的4个高位中,也可以将该长度为16的位串作为关于输入关键字a的数据输出。与参考图5a和图5b提供的描述相同的描述被省略。图6示出根据发明构思的一示例实施例的lut121的示例。参考图6,lut121可以存储关于多个函数的计算结果值。所述多个函数可以包括至少乘法(mul)计算、平方根(sqrt)计算、sigmoid计算和双曲正切(tanh)计算。与lut121中的所述多个函数中的每个函数对应的区域可以对应于存储函数计算值的区域。例如,对应于mul计算的区域可以对应于存储关于多个输入值的mul计算的结果值的区域。参考图5a和图6,tcam120可以获得与输入关键字a对应的数据和与输入关键字b对应的数据从而执行a*b计算。tcam120可以不在与输入关键字a对应的数据和与输入关键字b对应的数据之间执行乘法计算,而是可以在lut121中与mul计算对应的区域中检索对与输入关键字a对应的数据和与输入关键字b对应的数据执行乘法计算的结果。根据各种示例实施例,当使用针对multiply计算的专用加速器执行乘法计算时,可能需要至少3个时钟且最多100个时钟的时间,而通过使用存储关于所述多个函数的计算值的lut121,可以仅用一个时钟所需的时间来获得乘法计算的结果值。根据各种示例实施例,tcam120可以基于指令或正在运行的算法来调整lut121中包括的函数的类型以及存储的结果值的规模(magnitude)。参考图6,左侧的lut可以是对应于第一算法的lut,而右侧的lut可以是对应于第二算法的lut。也就是,为了执行第一算法,当最频繁地使用mul计算时,tcam120可以为mul计算分配大量的存储空间,并且尽可能多地存储关于多个输入值的乘法计算的结果值。然后,当第二算法频繁使用tanh计算或sigmiod计算时,tcam120可以改变存储区域的配置以存储tanh计算或sigmoid计算的结果值。也就是,尽管通过第一算法需要关于mul计算的大量结果值,但是当lut121的存储区域被设定为与第二算法对应时,由于可能未在lut121中存储必要的计算结果值,专用加速器或子处理器130可以用于直接执行计算,并且执行计算所需的时间增加,这可能导致整体性能下降。因此,tcam120可以基于将要执行的算法或指令来灵活地改变lut121的存储区域,从而通过读取结果值来实现高计算处理速度,而无需直接执行计算。图7示出根据本发明构思的示例实施例的存储在关键字值表400中的输入关键字和命中次数的正态分布曲线图的示例。参考图7,该曲线图示出了根据输入关键字的分布的命中次数的分布。关于所有输入关键字的命中次数可以遵循正态分布。也就是,在所有输入关键字当中被频繁调用的输入关键字可以具有大的命中次数,而很少被调用的输入关键字可以具有少的命中次数。在更新关键字值表400的输入关键字之前的输入关键字分布可以对应于“关键字表入口(entry)”。也就是,关键字值表400可以仅存储超过预定命中次数的范围内的输入关键字,而不存储关于所有输入关键字的所有值。如上所述,这是因为必须通过多层(例如图4b的430、440和450)同时执行比较搜索到的关键字与输入关键字的操作。然而,当tcam120通过命中/未命中计数器125识别出与搜索到的关键字对应的输入关键字没有存储在关键字值表400中时,tcam120可以将更新请求信号updatereq发送到调度器127。调度器127可以接收更新请求信号,并且向随机存取存储器140请求未存储在关键字值表400中的输入关键字及其对应的值。随机存取存储器140可以将未存储在关键字值表400中的输入关键字及其对应的值作为更新信息updateinformation发送到关键字值表400或包括关键字值表400的lut121。关键字值表400或包括关键字值表400的lut121可以基于更新信息updateinformation来改变存储的输入关键字。根据各种示例实施例,图7中的虚线所示的曲线可以指的是根据更新信息改变存储在关键字值表400中的输入关键字之后的输入关键字分布。也就是,当由于搜索到的关键字与关键字值表400中存储的输入关键字不匹配而发生未命中时,可以通过改变关键字值表400的输入关键字的范围来降低将来发生未命中的可能性。图8示出根据发明构思的示例实施例的tcam120的操作顺序。参考图8,在操作810中,tcam120可以接收关于输入关键字和计算函数的信息。tcam120可以基于接收到的关于计算函数的信息来生成位选择信息。位选择信息可以是基于计算函数的特性而指示lsb或msb之一的信息。例如,因为sigmiod函数具有输出值随着输入值的增大而饱和的特性,所以tcam120可以生成指示msb的位选择信息。在操作820中,tcam120可以基于精度信息和位选择信息来生成掩码位。精度信息可以对应于与接收到的输入关键字不匹配但是被确定为用于近似计算的近似输入关键字的信息。例如,当精度信息是1hd时,可以将1个位与输入关键字不同的关键字确定为近似输入关键字。作为另一示例,当精度信息是2hd时,可以将两个位与输入关键字不同的关键字之一确定为近似输入关键字。tcam120可以基于位选择信息来确定允许不匹配的位的位置。例如,当位选择信息指示msb并且精度信息是2hd时,tcam120可以将从msb开始的特定范围的位内的两个位与接收到的输入关键字不匹配的关键字确定为近似输入关键字。在操作830中,tcam120可以使用掩码位来获得关于接收到的输入关键字的近似输入值。tcam120可以比较接收到的输入关键字与存储在关键字值表400中的每个关键字,并且当具有不同值的位的位置与掩码位当中“0”的位置相同时,tcam120可以输出与比较的关键字对应的值。例如,当接收到的输入关键字是“1001”并且与关键字值表400中存储的“1011”比较时,具有不同值的位可以对应于较低的第二位。在这种情况下,当掩码位当中的较低的第二位的值为“0”时,“1001”和“1011”实质上不同,但是被确定为近似输入关键字,并且与关键字值表400中的“1011”对应的值可以被输出为近似输入值。也就是,tcam120可以使用掩码位对接收到的输入关键字执行近似计算,从而减少关于接收到的输入关键字的未命中次数。在操作840中,tcam120可以从lut121检索与所获得的近似输入值对应的输出值。也就是,tcam120可以使用所获得的近似输入值作为输入来执行计算函数,并输出结果值。然而,当所获得的近似输入值是存储在lut121中的计算结果值当中的输入时,tcam120可以搜索并输出对应结果值,而无需直接执行计算。例如,当用所获得的近似输入值执行sigmoid计算时,tcam120可以在与sigmoid函数对应的存储空间中检索对所获得的近似输入值执行sigmoid计算的结果值,并输出检索到的值。图9a至图9e示出根据本发明构思的示例实施例的tcam120的使用场景。参考图9a至图9e,示出了包括tcam120的电子装置的各种示例实施例。参考图9a,电子装置可以包括处理器和单个tcam。也就是,当处理器将执行ml和/或dl算法所需的计算和输入关键字发送到tcam120时,tcam可以对输入关键字执行掩码操作以选择与存储在tcam中的输入关键字当中的一个关键字对应的数据,所述一个关键字具有与从处理器接收的输入关键字的近似值。此后,tcam可以在先前参考lut计算的结果值当中获得与所选择的数据对应的值,并将该值作为计算结果输出。根据一示例实施例,tcam可以从处理器接收位选择信息(msb/lsb)和精度信息(0hd/1hd/2hd)以生成掩码位。tcam可以基于掩码位对输入关键字执行近似计算,并且相对于近似输入关键字输出关于命中或未命中率的信息。参考图9b,电子装置还可以包括硬件hw。硬件hw可以对应于图形处理单元(gpu)、神经处理单元(npu)和微处理单元(mpu)中的任何一个。如图9b所示,当硬件hw是npu或gpu时,计算速度可以在6至20个时钟内执行,并且当硬件hw是微处理单元(mpu)时,计算速度可以在100个时钟至400个时钟内。因此,电子装置可以使硬件hw执行计算而不使主处理器执行计算。根据各种示例实施例,硬件hw可以对未存储在tcam的lut中的计算结果预先执行计算。此后,硬件hw可以响应于从tcam的调度器接收更新请求而将关于计算结果的计算数据发送到tcam。参考图9c,电子装置还可以包括动态随机存取存储器(dram),以存储关于在输入关键字的分布中具有较少调用次数的输入关键字的计算结果。也就是,对可输入到电子装置的多个关键字以及分别关于所述多个关键字的多个函数的计算可以被预先执行,并且所有计算结果值可以存储在dram中。在这种情况下,当输入关键字的命中/未命中率改变时,tcam可以通过反映该改变来请求更新以更新lut的计算结果值。参考图9d,电子装置还可以包括并行设置的加速器。也就是,当对输入关键字的函数计算的结果值被存储在lut中时,tcam可以读取lut以快速输出数据,并且可以通过并行设置的加速器来执行未存储在lut中的函数计算的请求。参考图9e,电子装置可以包括tcam、随机存取存储器(ram)和加速器。在存在存储于lut中的输入关键字和对该输入关键字的函数计算的结果值的情况下,tcam可以读取lut以快速输出数据。可以通过并行设置的加速器来执行未存储在lut中的函数计算的请求。可以通过加速器执行未存储在lut中的函数计算,并且所执行的函数计算的结果值可以作为数据输出,并且同时发送到并行设置的ram。因此,当稍后接收到对于相同函数计算的请求时,ram可以将先前通过加速器执行的函数操作的结果值预加载到lut中,从而提高计算速度。图10示出了显示根据本发明构思的示例实施例的累积未命中率的降低的曲线图。参考图10,左图示出了当对输入关键字执行近似计算时发生的未命中次数的累积值,右图示出了当除了对输入关键字的近似计算之外预加载数据存储在lut中时发生的未命中次数的累积值。参考左图,可以看出,与输入关键字不相同但具有近似值的关键字被用作数据,使发生的未命中次数饱和的值对于1hd精度降低至1/2,对于2hd精度降低至1/3。另外,参考右图,可以看出,作为存储与lut中极有可能被调用的输入关键字对应的计算结果值以及对所述输入关键字的近似计算的结果,即使输入关键字被近似,由于关键字未存储在lut中,单独的硬件执行计算或者从外部ram请求的更新次数减少,因此发生的未命中次数饱和的值在数据以1hd的精度被预加载时被减小至1/5并且在数据以2hd的精度被预加载时被减小至1/10。以上描述的图1至图10的元件,诸如tcam120和子处理器130(包括tcam控制器123、命中/未命中计数器125、调度器127和近似单元129)以及主处理器110可以以处理电路和存储器实现,该处理电路诸如为:包括逻辑电路的硬件;诸如运行软件的处理器的硬件/软件组合;或者其组合。例如,处理电路更具体地可以包括但不限于中央处理单元(cpu)、算术逻辑单元(alu)、数字信号处理器、微型计算机、现场可编程门阵列(fpga)、可编程逻辑单元、微处理器、专用集成电路(asic)等,并且存储器140可以包括配置为存储信息(诸如lut121)的各种易失性或非易失性存储器件。处理电路可以是专用处理电路,其与当通过针对每个计算的专用加速器执行计算时相比,通过关于预加载数据使用掩码位执行近似计算来增加计算速度因此增加命中率并减少操作,改善了处理性能。尽管已经参考本发明构思的一些示例实施例具体示出和描述了本发明构思,但是将理解,在不脱离所附权利要求的精神和范围的情况下,可以在此进行在形式和细节上的各种改变。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1