三元内容可寻址存储器以及用于其的决策产生方法与流程

文档序号:29069632发布日期:2022-03-01 20:55阅读:190来源:国知局
三元内容可寻址存储器以及用于其的决策产生方法与流程

1.本公开是有关于一种三元内容可寻址存储器以及用于三元内容可寻址存储器的决策产生方法。


背景技术:

2.三元内容可寻址存储器(ternary content addressable memory,tcam)由于同时可针对储存的数据进行精确匹配检索与模糊匹配检索,因而十分适合大数据的应用。随着大数据技术的快速发展,tcam也受到重视。
3.公开内容
4.本公开实施例提供一种三元内容可寻址存储器。三元内容可寻址存储器包括多条第一搜索线、多条第二搜索线、多个存储单元串以及一或多个电流感测单元。存储单元串包括多个存储单元,各该存储单元耦接至该多条第一搜索线的其中之一及该多条第二搜索线的其中之一。电流感测单元,耦接至该多个存储单元串。在一搜索操作时,根据该一或多个电流感测单元是否从该多个存储单元串侦测到电流或者根据该一或多个电流感测单元从该多个存储单元串流出的电流大小判断该多个存储单元串储存的数据中是否有与所要搜索的一数据串匹配的。
5.本公开另一实施例提供一种用于三元内容可寻址存储器的决策产生方法。决策产生方法包括:接收一目标数据串;决定一或多个屏蔽,并根据该一或多个屏蔽及该目标数据串产生一输入数据串;根据该输入数据串施加多个搜索电压至多条第一搜索线及多条第二搜索线;根据多个电流感测单元侦测该多条第一搜索线及该多条第二搜索线得到的多个电流值决定一或多个决策参数;以及根据该一或多个决策参数产生一决策。
6.为了对本公开的上述及其他方面有更佳的了解,下文特举实施例,并配合附图详细说明如下:
附图说明
7.图1为根据本公开一实施例的tcam的框图。
8.图2为根据本公开一实施例的存储单元串的框图。
9.图3a~3c为根据本公开一实施例的存储单元串的操作的示意图。
10.图4为根据本公开另一实施例的存储单元串的框图。
11.图5a~5c为根据本公开另一实施例的存储单元串的操作的示意图。
12.图5d为储存的特征矢量的神经元与搜索的特征矢量的神经元的示意图。
13.图6为根据本公开又一实施例的存储单元串的框图。
14.图7为根据本公开另一实施例的tcam的框图。
15.图8a~8c为根据本公开又一实施例的存储单元串的框图。
16.图9为阈值电压与搜索电压的示意图。
17.图10为数据与特征矢量的示意图。
18.图11为根据本公开一实施例的决策产生方法的流程图。
19.图12为目标数据串与屏蔽的示意图。
20.附图标记说明
21.10、60:三元内容可寻址存储器
22.102-1~102-m、202-i、402-i、602-1~602-m、30、50、702-i、802-i、902-i:存储单元串
23.104-1~104-m、506、604-1~604-k、704-i、804-i、904-i:电流感测单元
24.c11~cmn、301~304、501~504:存储单元
25.sl1-1~sl1-n、3051、3053、3055、3057、5051、5053、5055、5057、7051、7053、7055、7057:第一搜索线
26.sl2-1~sl2-n、3052、3054、3056、3058、5052、5054、5056、5058:第二搜索线
27.t1-i1~t1-in、3011~3041、5011~5041:第一晶体管
28.t2-i1~t2-in、3012~3042、5012~5042:第二晶体管
29.606-1~606-k、906-i:与门
30.inv-1~inv-j:反向器
31.cat1~cat4:类别
32.fd1:第一特征值的维度
33.fd2:第二特征值的维度
34.fd3:第三特征值的维度
35.s1102~s1112:步骤
具体实施方式
36.请参照图1,图1为根据本公开一实施例的三元内容可寻址存储器(ternary content addressable memory,tcam)的框图。tcam 10包括多个存储单元串102-1~102-m、多个电流感测单元104-1~104-m、多条第一搜索线sl1-1~sl1-n及多条第二搜索线sl2-1~sl2-n,其中m、n为正整数。
37.存储单元串102-i耦接至电流感测单元104-i,且包括多个存储单元cil~cin,存储单元cij耦接至第一搜索线sl1-j及第二搜索线sl2-j,其中i正整数且i=1~m,j正整数且j=1~n。
38.请参照图2,图2为根据本公开一实施例的存储单元串的框图。在图2中显示的存储单元串202-i可用以实现存储单元串102-i,其中包括存储单元cil~cin的细部电路。存储单元cij包括一第一晶体管t1-ij及一第二晶体管t2-ij。第一晶体管t1-ij的一第一端(例如栅极)耦接至第一搜索线sl1-j。第一晶体管t1-ij的一第二端(例如源极)耦接至第二晶体管t2-ij的一第二端(例如源极)。第一晶体管t1-ij的一第三端(例如漏极)耦接至第二晶体管t2-ij的一第二端(例如漏极)。第二晶体管t2-ij的一第一端(例如栅极)耦接至第二搜索线sl2-j。
39.针对图2的实施例中单一存储单元cij的操作可包括擦除操作、编程操作及搜索操作,详述如下。
40.在擦除(erase)操作时,一擦除电压会被施加在第一搜索线sl1-j及第二搜索线
sl2-j。一般来说,擦除电压可为一负偏压,借以释放第一晶体管t1-ij与第二晶体管t2-ij中储存的电荷。
41.在编程操作时,通过分别在第一搜索线sl1-j及第二搜索线sl2-j施加适当的编程电压,以分别编程第一晶体管t1-ij及第二晶体管t2-ij的阈值电压。当第一晶体管t1-ij的阈值电压被编程为一低阈值电压,且第二晶体管t2-ij的阈值电压被编程为一高阈值电压时,定义存储单元cij储存的数据为一第一值(例如0);当第一晶体管t1-ij的阈值电压被编程为高阈值电压,且第二晶体管t2-ij的阈值电压被编程为低阈值电压时,定义存储单元cij储存的数据为一第二值(例如1)。存储单元cij储存的数据除了可为第一值或第二值以外,也可选择性地支援储存“随意(don’t care)”,当第一晶体管t1-ij的阈值电压被编程为低阈值电压,且第二晶体管t2-ij的阈值电压被编程为低阈值电压时,定义存储单元cij储存的数据为“随意”。
42.在搜索操作时,当要搜索第一值时,第一搜索线sl1-j会被施加一第一搜索电压,第二搜索线sl2-j会被施加一第二搜索电压;当要搜索第二值时,第一搜索线sl1-j会被施加第二搜索电压,第二搜索线sl2-j会被施加第一搜索电压。第二搜索电压大于高阈值电压,高阈值电压大于第一搜索电压,且第一搜索电压大于低阈值电压。除了可搜索第一值及第二值之外,也可选择性地支援搜索通配符(wild card)。此处所谓搜索通配符指的是所要搜索的数据可以是第一值或第二值,也就是搜索通配符时,无论存储单元中储存的是第一值还是第二值皆被认为是匹配的。当要搜索通配符时,第一搜索线sl1-j会被施加第二搜索电压,第二搜索线sl2-j会被施加第二搜索电压。
43.低阈值电压、高阈值电压、第一搜索电压以及第二搜索电压可通过参考图9的阈值电压分布示意图来理解。在图9中,横轴代表的是电压,纵轴代表的是概率,vt-1为低阈值电压的概率分布,vt-h为高阈值电压的概率分布,vs1为第一搜索电压,vs2为第二搜索电压。
44.为了更了解搜索操作,以下搭配图3a~3c,以实际的例子来进行说明。在图3a中,存储单元串30包括四个存储单元301~304。存储单元301的第一晶体管3011及第二晶体管3012分别被编程为低阈值电压(图中以[l]表示)及高阈值电压(图中以[h]表示),也即,存储单元301储存的是0,以此类推,存储单元302~304分别储存的是1、x、0,其中x代表“随意”。此例所要搜索的数据串为0110。当进行搜索操作时,第一晶体管3011的第二端及第二晶体管3012的第二端会被施加一个适当的偏压,第一搜索线3051、3053、3055、3057分别会被施加第一搜索电压(图中以[v1]表示)、第二搜索电压(图中以[v2]表示)、第二搜索电压、第一搜索电压,第二搜索线3052、3054、3056、3058分别会被施加第二搜索电压、第一搜索电压、第一搜索电压、第二搜索电压。存储单元301、302、304中皆有晶体管导通。对于存储单元303,由于第一晶体管3031及第二晶体管3032的阈值电压皆为低阈值电压,因此无论第一晶体管3031及第二晶体管3032的栅极电压为第一搜索电压或第二搜索电压,皆能够使得第一晶体管3031及第二晶体管3032导通。于是,一电流可由第一晶体管3011的第二端及第二晶体管3012的第二端流通至第一晶体管3041的第三端及第二晶体管3042的第三端。电流感测单元306通过侦测存储单元串30(第一晶体管3041的第三端及第二晶体管3042的第三端)是否有电流流出,或者是侦测从存储单元串(第一晶体管3041的第三端及第二晶体管3042的第三端)流出的电流的大小,即可判断该存储单元串储存的数据串是否与所要搜索的数据串匹配。在此例中,电流感测单元306侦测到有电流从存储单元串30流出,便可判断该存储
单元串储存的数据串与所要搜索的数据串匹配。
[0045]
请参照图3b的例子。图3b与图3a类似,存储单元串30储存的也是01x0,差别在于所要搜索的数据串为0111。存储单元301~303皆有晶体管导通使得电流可通过。然而,存储单元304因储存的数据与搜索的数据不匹配而令第一晶体管3041及第二晶体管3042皆不导通,使得电流无法通过。于是,电流感测单元306侦测不到有电流从存储单元串30流出,进而可判断存储单元串30储存的数据串与所要搜索的数据串不匹配。
[0046]
请参照图3c的例子。图3c与图3a类似,存储单元串30储存的也是01x0,差别在于所要搜索的数据串为0?00,其中?为通配符,即该位元可为0也可为1。存储单元301、303、304皆有晶体管导通使得电流可通过。对于存储单元302,第一晶体管3021及第二晶体管3022的栅极的电压皆为高于高阈值电压及低阈值电压的第二搜索电压,因此无论存储单元302储存的数据为何,第一晶体管3021及第二晶体管3022皆会导通。于是,电流感测单元306侦测到有电流从存储单元串30流出,进而可判断存储单元串30储存的数据串与所要搜索的数据串匹配。
[0047]
请参照图4,图4为根据本公开另一实施例的存储单元串的框图。在图4中显示用以实现存储单元串102-i的存储单元串402-i,包括存储单元cil~cin的细部电路。存储单元cij包括一第一晶体管t1-ij及一第二晶体管t2-ij。第一晶体管t1-ij的一第一端(例如栅极)耦接至第一搜索线sl1-j。第一晶体管t1-ij的一第三端(例如漏极)耦接至第二晶体管t2-ij的一第二端(例如源极)。第二晶体管t2-ij的一第一端(例如删极)耦接至第二搜索线sl2-j。
[0048]
针对图4的实施例中单一存储单元cij的操作可包括擦除操作、编程操作及搜操作,详述如下。
[0049]
在擦除(erase)操作时,一擦除电压会被施加在第一搜索线sl1-j及第二搜索线sl2-j。一般来说,擦除电压可为一负偏压,借以释放第一晶体管t1-ij与第二晶体管t2-ij中储存的电荷。
[0050]
在编程操作时,通过分别在第一搜索线sl1-j及第二搜索线sl2-j施加适当的编程电压,以分别编程第一晶体管t1-ij及第二晶体管t2-ij的阈值电压。当第一晶体管t1-ij的阈值电压被编程为一低阈值电压,且第二晶体管t2-ij的阈值电压被编程为一高阈值电压时,定义存储单元cij储存的数据为一第一值(例如0);当第一晶体管t1-ij的阈值电压被编程为高阈值电压,且第二晶体管t2-ij的阈值电压被编程为低阈值电压时,定义存储单元cij储存的数据为一第二值(例如1)。存储单元cij储存的数据除了可为第一值或第二值以外,也可选择性地支援储存“随意(don’t care)”,当第一晶体管t1-ij的阈值电压被编程为低阈值电压,且第二晶体管t2-ij的阈值电压被编程为低阈值电压时,定义存储单元cij储存的数据为“随意”。
[0051]
在搜索操作时,当要搜索第一值时,第一搜索线sl1-j会被施加一第一搜索电压,第二搜索线sl2-j会被施加一第二搜索电压;当要搜索第二值时,第一搜索线sl1-j会被施加第二搜索电压,第二搜索线sl2-j会被施加第一搜索电压。第二搜索电压大于高阈值电压,高阈值电压大于第一搜索电压,且第一搜索电压大于低阈值电压。除了可搜索第一值及第二值之外,也可选择性地支援搜索通配符(wild card)。此处所谓搜索通配符指的是所要搜索的数据可以是第一值或第二值,也就是搜索通配符时,无论存储单元中储存的是第一
值还是第二值皆被认为是匹配的。当要搜索通配符时,第一搜索线sl1-j会被施加第二搜索电压,第二搜索线sl2-j会被施加第二搜索电压。
[0052]
为了更了解搜索操作,以下搭配图5a~5c,以实际的例子来进行说明。在图5a中,存储单元串50包括四个存储单元501~504。存储单元501的第一晶体管5011及第二晶体管5012分别被编程为低阈值电压及高阈值电压,也即,存储单元501储存的是0,以此类推,存储单元502~504分别储存的是1、x、0,其中x代表“随意”。此例所要搜索的数据串为0110。当进行搜索操作时,第一晶体管3011的第二端(例如源极)会被施加一个适当的偏压,第一搜索线5051、5053、5055、5057分别会被施加第一搜索电压、第二搜索电压、第二搜索电压、第一搜索电压,第二搜索线5052、5054、5056、5058分别会被施加第二搜索电压、第一搜索电压、第一搜索电压、第二搜索电压。存储单元501、502、504中的晶体管皆导通。对于存储单元303,由于第一晶体管5031及第二晶体管5032的阈值电压皆为低阈值电压,因此无论第一晶体管5031及第二晶体管5032的栅极电压为高阈值电压或低阈值电压,皆能够使得第一晶体管3031及第二晶体管3032导通。于是,一电流可由第一晶体管5011的第二端流通至第二晶体管5042的第三端。电流感测单元506通过侦测存储单元串50(第二晶体管5042的第三端)是否有电流流出,或者是侦测从存储单元串(第二晶体管5042的第三端)流出的电流的大小,即可判断该存储单元串储存的数据串是否与所要搜索的数据串匹配。在此例中,电流感测单元506侦测到有电流从存储单元串50流出,便可判断该存储单元串储存的数据串与所要搜索的数据串匹配。
[0053]
请参照图5b的例子。图5b与图5a类似,存储单元串50储存的也是01x0,差别在于所要搜索的数据串为0111。存储单元501~503中的晶体管皆导通使得电流可通过。然而,存储单元504因储存的数据与搜索的数据不匹配而令第一晶体管5041及第二晶体管5042皆不导通,使得电流无法通过。于是,电流感测单元506侦测不到有电流从存储单元串50流出,进而可判断存储单元串50储存的数据串与所要搜索的数据串不匹配。
[0054]
请参照图5c的例子。图5c与图5a类似,存储单元串50储存的也是01x0,差别在于所要搜索的数据串为0?00,其中?为通配符,即该位元可为0也可为1。存储单元501、503、504中的晶体管皆导通使得电流可通过。对于存储单元502,第一晶体管5021及第二晶体管5022的栅极的电压皆为高于高阈值电压及低阈值电压的第二搜索电压,因此无论存储单元502储存的数据为何,第一晶体管5021及第二晶体管5022皆会导通。于是,电流感测单元506侦测到有电流从存储单元串50流出,进而可判断存储单元串50储存的数据串与所要搜索的数据串匹配。
[0055]
不同的应用诸如人工智能、大数据搜索等可能需要不同的量化策略,而搜索时通配符的使用可以在各种应用中提供灵活性。图5a~5c的操作可以基于前文所述的原理扩展到适用于长度更长的数据格式,例如tf32、tf16、fp64、fp32、fp16、int16、int8等。
[0056]
请参考图5d,图5d为储存的数据串与搜索的数据串的示意图。在这个例子中,使用的数据格式例如是int8,也就是以从最高有效位元(msb)至最低有效位元(lsb)共八个位元的二进制数值来表示介于0及127之间的十进制整数。本例中,储存于存储单元串的数据串(例如特征矢量中的一个神经元)为01100010。所要搜索的数据串从第五个位元开始为量化的起始位置,搜索时后四个位元会以通配符进行屏蔽(mask)。
[0057]
在人工智能推理操作时,一个特征矢量包含许多神经元,且每个神经元代表例如
fp16或int8等格式的单个二进制数据串。搜索时若不使用通配符进行屏蔽,往往会由于搜索时输入的特征矢量与储存的特征矢量之间的细微的差异导致无法得出任何搜索结果。这个问题通常是由于神经元的最低有效位(lsb)有所差异导致。以一个实际例子来说,若一个存储单元串包括九十六个晶体管,则一个存储单元串可储存四十八个位元的二进制数据。若储存的数据格式是int8,一个存储单元串储存的特征矢量可包括六个代表int8格式的神经元。在搜索不使用通配符进行屏蔽的情况下,必须要有任何一个存储单元串储存的四十八个位元的特征矢量与搜索时输入的四十八个位元的特征矢量全部匹配才会有符合的搜索结果。这在应用上不切实际。为了解决上述问题,可将搜索时输入的特征矢量中的每个神经元的最后四个位元以通配符进行屏蔽(比如图5d所示)。实际应用上,可以根据量化的级别来配置屏蔽的起始位置及长度,以实现不同的搜索分辨率。
[0058]
请参照图6,图6为图4的一变化实施例。在此实施例中,第一搜索线sl1-j可通过一反向器inv-j耦接至第二搜索线sl2-j。
[0059]
针对图6的实施例中单一存储单元cij的操作可包括擦除操作、编程操作及搜操作,详述如下。
[0060]
在擦除(erase)操作时,一擦除电压会被施加在第一搜索线sl1-j上。一般来说,擦除电压可为一负偏压,借以释放第一晶体管t1-ij与第二晶体管t2-ij中储存的电荷。
[0061]
在编程操作时,通过在第一搜索线sl1-j施加适当的编程电压,以分别编程第一晶体管t1-ij及第二晶体管t2-ij的阈值电压。当第一晶体管t1-ij的阈值电压被编程为一低阈值电压,且第二晶体管t2-ij的阈值电压被编程为一高阈值电压时,定义存储单元cij储存的数据为一第一值(例如0);当第一晶体管t1-ij的阈值电压被编程为高阈值电压,且第二晶体管t2-ij的阈值电压被编程为低阈值电压时,定义存储单元cij储存的数据为一第二值(例如1)。存储单元cij储存的数据除了可为第一值或第二值以外,也可选择性地支援储存“随意(don’t care)”,当第一晶体管t1-ij的阈值电压被编程为低阈值电压,且第二晶体管t2-ij的阈值电压被编程为低阈值电压时,定义存储单元cij储存的数据为“随意”。
[0062]
在搜索操作时,当要搜索第一值时,第一搜索线sl1-j会被施加一第一搜索电压,并通过反向器inv-j在第二搜索线sl2-j上产生一第二搜索电压;当要搜索第二值时,第一搜索线sl1-j会被施加第二搜索电压,并通过反向器inv-j在第二搜索线sl2-j上产生第一搜索电压。第二搜索电压大于高阈值电压,高阈值电压大于第一搜索电压,且第一搜索电压大于低阈值电压。
[0063]
请参照图7,图7为根据本公开另一实施例的tcam的框图。tcam 60与tcam 10类似,差别在于tcam 60中,存储单元串被划分为多组,每一组的存储单元串通过一与门耦接至一电流感测单元。举例来说,第一组的存储单元串602-1、602-2通过与门606-1耦接至电流感测单元604-1,搜索操作时,若电流感测单元604-1侦测到来自与门606-1的电流的不小于一阈值(例如单一存储单元串储存的数据串与所要搜索的数据串匹配时输出的电流的两倍)时,则可判断第一组的存储单元串储存的数据串与所要搜索的数据串匹配,反之则可判断为不匹配,以此类推。通过这种方式,可减少rc延迟(rc delay)及增加读取/搜索速度。实作上可根据rc延迟的要求决定一组存储单元串要配置的存储单元串的数量(例如二或二以上)。
[0064]
请参照图8a~8c,图8a~8c为根据本公开又一实施例的存储单元串的框图。由于
图4的存储单元串中晶体管的连接方式为串接,因此将晶体管的次序任意调换也可达到相同的效果。图8a的存储单元串显示图4的存储单元串的其中一种变化。在图8a的实施例中,存储单元串702-i中的第一晶体管t1-i1~t1-in被配置在一起,第二晶体管t2-i1~t2-in被配置在一起,再将串接的第一晶体管t1-i1~t1-in与串接的第二晶体管t2-il~t2-in串接。图8b的实施例为图4的实施例的另一种变化。存储单元串802-i类似于存储单元串702-i,差别在于第二晶体管t2-i1~t2-in的连接次序不同。图8c为了图4的实施例的又一种变化。图8c的实施例结合了图7与图8a的概念。第一晶体管t1-i1~t1-in被串接为一晶体管串,第二晶体管t2-i1~t2-in被串接为另一晶体管串,二晶体管串再耦接至一个与门906-i以使得二晶体管串等效于串接。图8a~8c仅为示例而已,实作上可以根据实际需求调整晶体管串接的次序。此外,每个存储单元串的晶体管可被任意配置为多个(例如三个、四个甚至更多个)晶体管串再连接至一或多个与门以使此多个晶体管串等效于串接,因此降低rc延迟。
[0065]
基于大数据技术的运算量密集且庞大,tcam需要长时间反复地被读取,因此读取干扰(read disturb)成为tcam应用于大数据时需要面对的问题。
[0066]
为了解决读取干扰,可将存储单元串中的存储单元划分为多个组,每个组可包括多个存储单元。在一实施例中,每个组所包括的存储单元的数量是相同的。在编程操作及搜索操作时,以一组存储单元为单位进行。以图4的存储单元串402-i为例,存储单元ci1、ci2被配置为第一组,存储单元ci3、ci4被配置为第二组,以此类推。以下实施例虽然是基于图4的存储单元串402-i,但所使用的编程操作与搜索操作不同于前文所述的实施例。为了更清楚了解本实施例,以下针对第一组的存储单元的编程操作与搜索操作进行说明,擦除操作与前文所述类似,故不赘述。
[0067]
表一中,左起第一栏为第一组的存储单元ci1、ci2储存的数据,第二栏为对应编程的第一晶体管t1-i1、t1-i2与第二晶体管t2-i1、t2-i2的阈值电压,以及第三栏为搜索时施加于第一搜索线sl1-1、sl1-2与第二搜索线sl2-1、sl2-2的电压。此例中,0代表第一值,1代表第二值,l代表低阈值电压,h代表高阈值电压,v1代表第一搜索电压,v2代表第二搜索电压。
[0068]
表一
[0069]
s1[ci1,ci2][t1-i1,t2-i1,t1-i2,t2-i2][sl1-1,sl2-1,sl1-2,sl2-2][0,0][h,h,h,l][v2,v2,v2,v1][0,1][h,h,l,h][v2,v2,v1,v2][1,0][h,l,h,h][v2,v1,v2,v2][1,1][l,h,h,h][v1,v2,v2,v2]
[0070]
在编程操作时,高阈值电压与低阈值电压其中之一会被设定为一主要状态,其中另一会被设定为一次要状态。在编程不含[随意]的数据的情况下,每一组的存储单元的四个晶体管中只有其中一晶体管会被编程为次要状态,其他的晶体管则会被编程为主要状态。在表一的实施例中,主要状态为高阈值电压,次要状态为低阈值电压。被编程为高阈值电压的晶体管的栅极须施加第二搜索电压才会导通。于是,可决定出搜索时对应的搜索电压组合。
[0071]
表二为不同于表一的另一个实施例。
[0072]
表二
[0073][0074][0075]
在表二的实施例中,主要状态为低阈值电压,次要状态为高阈值电压。此外,表二也显示出对于相同的数据,在不同的编码方式中主要状态的位置是可以变动的。
[0076]
在另一实施例中,数据编码也可支援编程数据包括[随意],或者可支援搜索时允许使用通配符。
[0077]
表三是从表一延伸的实施例。表三的实施例支援编程数据包括[随意],其中x代表[随意]。
[0078]
表三
[0079]
s1[ci1,ci2][t1-i1,t2-i1,t1-i2,t2-i2][sl1-1,sl2-1,sl1-2,sl2-2][0,0][h,h,h,l][v2,v2,v2,v1][0,1][h,h,l,h][v2,v2,v1,v2][1,0][h,l,h,h][v2,v1,v2,v2][1,1][l,h,h,h][v1,v2,v2,v2][0,x][h,h,l,l] [x,0][h,l,h,l] [1,x][l,l,h,h] [x,1][l,h,l,h] [x,x][l,l,l,l] [0080]
在此简单说明[随意]的操作原理。数据为[随意]代表在搜索时无论是搜索1或是0都必须匹配。举例来说,储存的数据为[0,x]时,无论搜索[0,0]或是[0,1]都要能匹配。在存储单元串402-i中,所谓的“匹配”在物理意义上是指“电流可通过”。也就是说,在决定储存数据[0,x]的存储单元的四个晶体管的阈值电压时,必须无论使用用以搜索[0,0]或[0,1]的搜索电压的组合都能令储存数据[0,x]的存储单元的四个晶体管皆导通。
[0081]
表四是从表二延伸的实施例。表四的实施例支援时允许使用通配符,其中?代表通配符。
[0082]
表四
[0083]
s1[cil,ci2][t1-i1,t2-i1,t1-i2,t2-i2][sl1-1,sl2-1,sl1-2,sl2-2][0,0][h,l,l,l][v2,v1,v1,v1][0,1][l,h,l,l][v1,v2,v1,v1][1,0][l,l,h,l][v1,v1,v2,v1]
[1,1][l,l,l,h][v1,v1,v1,v2][0,?] [v2,v2,v1,v1][?,0] [v2,v1,v2,v1][1,?] [v1,v2,v1,v2][?,1] [v1,v1,v2,v2][?,?] [v2,v2,v2,v2]
[0084]
在此简单说明通配符的操作原理。搜索的数据为通配符代表在无论储存的数据为1或是0都必须匹配。举例来说,要搜索的数据为[0,?]时,储存的数据无论是[0,0]或是[0,1]都要能匹配。在存储单元串402-i中,所谓的“匹配”在物理意义上是指“电流可通过”。也就是说,在决定搜索数据[0,?]的四个搜索电压的组合时,必须使得无论储存有数据[0,0]或[0,1]的存储单元的四个晶体管皆导通。
[0085]
需要注意的是,实作上可以根据需要将两个以上的存储单元配置为一组,本公开不加以限定。
[0086]
在本公开中,存储单元所包括的晶体管是以金属场效应晶体管(mosfet)为例,但在其他实施例中,任何能被用以制作快闪存储器的储存元件皆可用被应用,例如电荷捕捉式(charge trapping)元件、sonos晶体管及铁电场效晶体管(fefet)等。电流感测单元例如是电流感测单元。
[0087]
值得一提的是,任何适合的二维或三维的与非门快闪(nand flash)存储器结构皆可应用于本公开的tcam。
[0088]
除了前文提到的应用之外,本公开提出的tcam还可应用在搜索数据库中的数据上。请参照图10,图10为数据与特征矢量空间的示意图。在此例中,每一笔数据可通过一个三维的特征矢量来表示,也即每一笔数据可具有三个特征值,并由此三个特征值形成一个三维的特征矢量。图10中,fd1代表的是数据的第一特征值的维度,fd2代表的是数据的第二特征值的维度,fd3代表的是数据的第三特征值的维度,此三个维度形成一个三维的矢量空间,而在此三维矢量空间中的每一个点代表的是一笔通过三维特征矢量表示的数据。属于相同类别的数据的点通常会聚集在矢量空间的某一个区域。图10显示了四种类别cat1~cat4的数据群集分别聚集在四个不同的区域。举实际例子来说,数据库中的数据可为动物图片,其中包括四个类别:狗、猫、鸟及蛇,每一张动物图片可具有三个特征值,并以一个三维特征矢量来表示。本公开提出的tcam可用以储存这些数据的特征矢量。基于此种应用,本公开提出一种用于tcam的决策产生方法。
[0089]
请参考图11,在s1102中,接收一目标数据串。目标数据串可包括多个二进制位元。举例来说,通过计算可得到一待辨识动物图片(原始数据)的一特征矢量,将此特征矢量以二进制表示可得到目标数据串。根据原始数据的不同,计算的特征矢量的方式也会有所不同。
[0090]
在s1104中,决定一或多个屏蔽,并根据屏蔽及目标数据串产生一输入数据串。如图12所示,目标特征矢量转换为二进制后,屏蔽所在的位元被以通配符“x”替换。根据需要屏蔽的数量及位置可任意配置(图12显示了三种不同的屏蔽配置)。
[0091]
在s1106中,根据输入数据串施加多个搜索电压至tcam的多条第一搜索线及多条第二搜索线。关于搜索电压与0、1及通配符之间的对应关系可参考前文所述,在此不再赘
述。
[0092]
在s1108中,根据tcam的多个电流感测单元侦测第一搜索线及第二搜索线得到的多个电流值决定一或多个决策参数,其中决策参数可通过分析电流感测单元侦测得到的电流值得到,例如从电流感测单元侦测得到的电流值可得知匹配的数据串的数量、匹配的数据串的存储器位置,通过存取匹配的存储器位置可得知匹配的数据串的内容甚至是类别。决策参数可包括匹配的数据串数量、匹配的数据串所属的类别分布、匹配的数据之间的差异(例如汉明距离)等。
[0093]
在s1110中,根据决策参数判断是否进行决策。举例来说,可根据匹配的数据串的数量是否高于一阈值决定是否进行决策。判断是否进行决策的条件可根据需要设定。若判断进行决策,执行s1112;若判断不进行决策,则回到s1104以调整屏蔽。
[0094]
在s1112中,根据决策参数产生一决策。举例来说,可选择匹配的数据串中类别最多的做为最终的决策。产生决策的方式可根据需要设定,本公开不予以限定。
[0095]
在一实施例中,tcam可包括一个存储器内搜索引擎(in-memory searching engine,ims engine)用来执行s1104。在另一实施例中,tcam可被划分为多个区块,这些区块分别包括一个ims引擎,也即,在s1102中,可同时接收多个目标数据串,在s1104中,针对不同的目标数据串分别设定屏蔽,在s1106中可通过多个ims引擎同时或是批次搜索,在s1106中,综合分析所有的搜索结果来产生决策参数。
[0096]
需要注意的是,上述例子仅为说明使用,本公开不限定特征矢量的维度。
[0097]
综上所述,虽然本公开已以实施例公开如上,然其并非用以限定本公开。本公开所属技术领域中的本领域技术人员,在不脱离本公开的精神和范围内,当可作各种的更改与修饰。因此,本公开的保护范围当视随附的权利要求范围所界定的为准。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1