用于检测cam阵列中的多次命中的设备和方法

文档序号:6757080阅读:158来源:国知局
专利名称:用于检测cam阵列中的多次命中的设备和方法
技术领域
一般来说,本发明涉及数据处理系统的改进的存储器,具体来说,但不仅限于,涉及用于检测内容可寻址存储器(CAM)阵列中的多次命中的设备和方法。
背景技术
CAM或关联的存储器是通常用于高速搜索应用中的特殊类型的存储设备。每一个CAM设备都包括比较逻辑,以便可以在设备内比较位位置的内容。在标准的计算机存储设备(例如,DRAM、SRAM、等等)中,它们的位是通过存储器位置来寻址的,它们的位的内容被传送到存储设备外面的算术逻辑单元(ALU),以便进行比较。
数据字可以输入到CAM设备中,CAM设备可以对其整个存储器进行搜索,以查找输入字。如果CAM设备在其存储器中查找到字,则该设备返回一个列表,其中具有查找到字的存储器位置的存储地址。如此,CAM设备可以在一次操作中对其整个存储器进行这样的搜索。因此,对于大多数搜索应用,CAM设备比RAM设备快得多。
向CAM设备输入的所有字(例如,项目)都可以与设备中存储的字进行比较。然而,设备中至多只有一个存储的字应该匹配该项目。尽管如此,现有的CAM设备所存在的一个严重问题是,电路故障或CAM设备外部的软件错误可能会导致所谓的“多次命中”的发生。如果存在多次命中的状况,则在CAM设备中启用多个字线,并返回错误的输出。在这样的情况下,在可能返回这样的错误输出之前检测CAM设备中的多次命中的状况十分重要。然而,现有的用于检测CAM设备中的多次命中状况的技术在空间方面产生大量的损失,因为需要许多门才能接通设备中的所有的字线,以便判断是否启用或打开了一个以上的字线。
因此,应该具有一种用于检测CAM设备中的多次命中状况的设备和方法,它们至少应该不会在空间方面招致大量的损失。

发明内容
根据本发明的优选实施例,为到CAM阵列的每一个项目都存储了真地址和补码地址值。每一个项目的存储的真地址和补码地址位置值用于判断是否存在多次命中的状况。可以读出地址位置的真值和补充值,并对其进行“异或”运算。如果对于该地址位置存在单次命中,那么,可以输出匹配的项目的地址位置。然而,如果有多次命中的状况(例如,匹配了一个以上的地址位置),则构成二进制地址值和补充地址值的所有位不是彼此的补码。因此,可以通过用该地址位置值的补码对输出地址位置值的每一个位进行“异或”运算来检测多次命中的状况。关于这一点,如果被“异或”的位等于“1”,那么,发生了单次命中。否则,如果被“异或”的位不等于“1”,那么,发生了多次命中(例如,匹配一个以上的地址)。


在所附的权利要求中阐述了本发明的新颖的特征。然而,本发明本身,以及优选的使用模式,进一步的目标和优点,通过参考对说明性的实施例的详细描述并参考附图,将得到最好的理解,其中图1是VLSI微处理器的负载/存储单元(LSU)的子部分的图形表示;图2是描述了根据本发明的优选实施例的典型的CAM的图表;以及图3是描述了根据本发明的优选实施例的典型的CAM地址单元的图表。
具体实施例方式
图1显示了VLSI微处理器的负载/存储单元(LSU)的子部分。LSU100负责将旧数据从存储器中加载到处理器中,并将新计算出的数据存储回存储器中。图1中描述的相关子部分包括用于计算存储器的“有效地址”的加法器102。此地址被提供给有效地址到实地址转换单元(ERAT)104,该单元包括内容可寻址存储器(CAM)106和RAM108。有效地址被提供给CAM106,同时搜索所有项目,以查找匹配在其输入中提供的有效地址的项目。如果发现单次匹配(一次命中),则将作为“命中地址”输出匹配项目的字地址,并将同一个字地址立即转换为ERAT104内的RAM108的字线地址。此字线用于访问ERAT104内的RAM108。RAM108中存储的字是然后用于访问存储器的“实地址”。如果在CAM106中有效地址丢失(没有命中),则随后将一对新的有效和实地址写入ERAT104中。
如果匹配了一个以上的项目,则这表示很少发生软件错误,必须启动恢复机制,因为“实地址”将会由于多个字线在RAM108中活动而被损坏。要启动此恢复过程,需要“多次命中”检测机制。
现在请参看图2,该图描述了显示根据本发明的优选实施例的典型的CAM结构的图表。对于此说明性示例,CAM200被构造为阵列。然而,图2中描述的结构类型不作为对本发明的体系结构的限制,本发明的范围可以包括任何合适的存储器结构。如此,CAM200包括多个地址单元(例如,位)202a-202n,204a-204n和206a-206n,优选情况下,被排列为阵列。例如,单元202a-202n可以构成阵列的第一列,单元204a-204n可以构成阵列的第二列,单元206a-206n可以构成阵列的第三列。如此,对于此示例,单元202a、204a和206a可以构成阵列中的第一行,于是,单元202n、204n和206n可以构成阵列中的第n行。如此,CAM200是为了进行说明而显示的,地址单元具有三列和八行。然而,应该理解,本发明不是如此局限,并可以包括具有比图2的示例结构中所显示的单元更多或更少列和/或更多或更少行的CAM。
对于此典型的实施例,CAM200中的每一个项目0-7都存储了其地址位置的真值和补充值。地址的每一个位都在物理上与所有其他项目(例如,由垂直方向的点代表)进行“或”运算。图2中的CAM200说明了具有8个项目的阵列的这样的特点,其中,三个单元用于存储真地址值和补码地址值。换句话说,每一个项目0-7都代表了包含三个位的字线(例如,项目0包括单元202a、204a、206a),每一个项目0-7都具有唯一地址(例如,项目0可以具有地址“000”,项目1可以具有地址“001”,依此类推,项目7都具有地址“007”)。
此外,CAM200中的每一个地址单元都连接到关联的位线对。例如,每一个单元202a-202n都连接到bit-line<0>203a和bit-linebar<0>203b。如此,bit-line<0>203a代表单元202a-202n的(被“或”运算的)真地址值,而bit-line bar<0>203b代表那些相同单元的(被“或”运算的)补码地址值。如此,由此可见,bit-line<1>205a代表单元204a-204n的真地址值,而bit-line bar<1>205b代表那些相同单元的补码地址值。同样,bit-line<2>207a代表单元206a-206n的真地址值,而bit-line bar<2>207b代表那些相同单元的补码地址值。
本质上,根据本发明的优选实施例,为到CAM阵列的每一个项目都存储了真地址和补码地址值。每一个项目的存储的真地址和补码地址位置值用于判断是否发生了多次命中的状况。例如,项目2(例如,在图2中)可以存储地址位置“2”的二进制值,而项目7可以存储地址位置“7”的二进制值。根据本发明,可以读出地址位置的真值和补充值,并对其进行“异或”运算。如果对于该地址位置存在单次命中,那么,可以输出匹配的项目的地址位置(即,可以输出该位置的真地址值和补码地址值)。然而,如果有多次命中的状况(例如,匹配了一个以上的地址位置),则构成二进制地址值和补充地址值的所有位不是彼此的补码。因此,可以通过用地址位置值的补码对输出地址位置值的每一个位进行“异或”运算来检测多次命中的状况。在这方面,如果被“异或”的所有位都等于“1”,那么,发生了单次命中。否则,如果被“异或”的所有位都不等于“1”,那么,发生了多次命中(例如,匹配一个以上的地址)。
现在请参看图3,该图描述了显示根据本发明的优选实施例的典型的CAM地址单元结构的图表。例如,图3所示的单元300可以用来实现图2中的任何地址单元202a-202n、204a-204n、和/或206a-206n。此外,对于此典型的实施例,单元300是作为RAM类型的单元来描述的,但是本发明不是如此局限,并可以包括其他类型的非永久存储器,如ROM等等。
本质上,如上文参考图2所进行描述的,所有项目0-7的位线优选情况下被“或”在一起。因此,对于此典型的实施例,单元300被配置为单端的下拉单元。如此,位线302(例如,表示为blrt)表示为真值,而位线304(例如,表示为blrc)代表相应的真值的补码。
对于此示例,单元300包括两个晶体管306和308。对于许多CAM应用,可以使用MOS晶体管来作为晶体管306和308。此外,依据应用和所希望的电源的极性,单元300可以用n型沟道MOS(NMOS)或p型沟道MOS(PMOS)晶体管来实现。如图所示,字线322通过针脚310(bits_0)连接到晶体管306的栅极,虽然字线322也可以通过针脚312(bits_1)连接到晶体管308的栅极。字线322可以根据需要连接到针脚310或312,以提供适当的地址值和补码地址值。
在所描述的示例中,真值位线(blrt)302连接到晶体管306的漏极,补充值位线(blrc)304连接到晶体管308的漏极。如此,对于在字线(wl)322处输入的项目,晶体管306被打开,被通过晶体管306的电流存储了一个位,并被放置在真位线(blrt)302中。该位的补码被通过晶体管308的电流存储并被放置在补充位线(blrc)304中。因此,如果在真位线(blrt)302中存在“1”值,那么,在补充位线(blrc)304存在“0”值,当颠倒门连接时,情况相反。例如,要在单元300中存储“1”值,则将bits_0连接到地线,将bits_1连接到字线(wl)322。真值在真位线(blrt)302上输出,该位的补码存储并被放置在补充位线(blrc)304中。或者,要在单元300中存储“0”值,则将bits_0连接到字线(wl)322,将bits_1连接到地线。值得注意的是,为实现本发明,不需要连接到地线的晶体管门。然而,为了方便起见,使用此特定的实现方式也允许使用相同的单元。
也是根据本发明,如果每一个真地址位(例如,blrt 302)都与其相应的补码地址位(例如,blrc 304)进行“异或”运算,则对于单次命中,结果等于“1”。然而,如果命中了多个项目,对于与它们相应的补码地址位进行“异或”的某些真地址位,它们的结果不等于“1”。如此,可以以此方式检测多次命中的状况。
值得注意的是,尽管是在完全运转的数据处理系统的上下文中描述本发明的,那些精通本技术的普通人员将认识到,本发明的进程能够以存储了指令的计算机可读的介质的形式和各种各样的形式进行分发,本发明同样适用,不管实际用于进行分发的承载信号的介质的特定类型是什么。计算机可读的介质的示例包括可记录类型的介质,如软盘、硬盘驱动器、RAM、CD-ROM、DVD-ROM、传输类型的介质,例如使用诸如射频和光波传输的传输形式的数字和模拟通信链路、有线或无线通信链路。计算机可读的介质可以采取编码格式的形式,这些编码在特定数据处理系统中实际使用时被解码。
本发明的说明书只作说明,而不是详尽的说明或限于所说明的形式。那些精通本技术的普通人员将认识到,可以进行许多修改。所选择的实施例只是为了最好地说明本发明的原理,实际应用,并使精通本技术的其他人懂得,带有各种修改的各种实施例也是可以接受的。
权利要求
1.一种用于检测内容可寻址存储器中的多次命中状况的方法,包括下列步骤将第一项目的第一地址位置值和所述第一地址位置值的补码存储到内容可寻址存储器;将第n项目的第n地址位置值和所述第n地址位置值的补码存储到内容可寻址存储器;对于所述第一地址位置值和所述第n地址位置值执行第一“或”运算;对于所述第一地址位置值的所述补码和所述第n地址位置值的所述补码执行第二“或”运算;以及对所述第一“或”运算的结果和所述第二“或”运算的结果执行“异或”运算。
2.根据权利要求1所述的方法,其中,“异或”运算包括检测多次命中状况的步骤。
3.根据权利要求2所述的方法,其中,检测多次命中状况的步骤包括判断所述“异或”运算的结果是否是等于“0”的值的步骤。
4.根据权利要求1所述的方法,其中,所述第一项目包括项目“0”,所述第n项目包括项目“7”。
5.根据权利要求1所述的方法,其中,在所述内容可寻址存储器的第一位线中存在所述第一地址位置值,在所述内容可寻址存储器的第二位线中存在所述第一地址位置值的所述补码。
6.根据权利要求1所述的方法,其中,在所述内容可寻址存储器的第三位线中存在所述第n地址位置值,在所述内容可寻址存储器的第四位线中存在所述第n地址位置值的所述补码。
7.根据权利要求1所述的方法,其中,所述内容可寻址存储器包括阵列。
8.一种内容可寻址存储器,包括用于将第一项目的第一地址位置值和所述第一地址位置值的补码存储到内容可寻址存储器的装置;用于将第n项目的第n地址位置值和所述第n地址位置值的补码存储到内容可寻址存储器的装置;用于对于所述第一地址位置值和所述第n地址位置值执行第一“或”运算的装置;用于对于所述第一地址位置值的所述补码和所述第n地址位置值的所述补码执行第二“或”运算的装置;以及用于对所述第一“或”运算的结果和所述第二“或”运算的结果执行“异或”运算的装置。
9.根据权利要求8所述的内容可寻址存储器,其中,所述用于执行“异或”运算的装置包括用于检测多次命中状况的装置。
10.根据权利要求9所述的内容可寻址存储器,其中,所述用于检测多次命中状况的装置包括用于判断所述“异或”运算的结果是否是等于“0”的值的装置。
11.根据权利要求8所述的内容可寻址存储器,其中,所述第一项目包括项目“0”,所述第n项目包括项目“7”。
12.根据权利要求8所述的内容可寻址存储器,其中,在所述内容可寻址存储器的第一位线中存在所述第一地址位置值,在所述内容可寻址存储器的第二位线中存在所述第一地址位置值的所述补码。
13.根据权利要求8所述的内容可寻址存储器,其中,在所述内容可寻址存储器的第三位线中存在所述第n地址位置值,在所述内容可寻址存储器的第四位线中存在所述第n地址位置值的所述补码。
14.根据权利要求8所述的内容可寻址存储器,进一步包括阵列。
15.一种内容可寻址存储器,包括多个地址单元,所述多个地址单元排列为M×N的阵列,其中,M代表所述阵列的多个行,N代表所述阵列的多个列,所述阵列包括用于将每一个单元的地址位置值和所述地址位置值的补码存储在所述阵列中的装置;用于对所述阵列的列N中的所有单元执行“或”运算的装置;以及用于对所述“或”运算的结果执行“异或”运算的装置。
16.计算机可读的介质中的用于检测内容可寻址存储器中的多次命中状况的计算机程序产品,该计算机程序产品包括用于将第一项目的第一地址位置值和所述第一地址位置值的补码存储到内容可寻址存储器的第一指令;用于将第n项目的第n地址位置值和所述第n地址位置值的补码存储到内容可寻址存储器的第二指令;用于对于所述第一地址位置值和所述第n地址位置值执行第一“或”运算的第三指令;用于对于所述第一地址位置值的所述补码和所述第n地址位置值的所述补码执行第二“或”运算的第四指令;以及用于对所述第一“或”运算的结果和所述第二“或”运算的结果执行“异或”运算的第五指令。
17.根据权利要求16所述的计算机程序产品,其中,第五指令包括用于检测多次命中状况的指令。
18.根据权利要求17所述的计算机程序产品,其中,用于检测多次命中状况的第五指令包括用于判断所述“异或”运算的结果是否是等于“0”的值的指令。
19.根据权利要求16所述的计算机程序产品,其中,所述内容可寻址存储器包括阵列。
20.一种内容可寻址存储器,包括多个地址单元,所述多个地址单元排列为M×N的阵列,其中,M代表所述阵列的多个行,N代表所述阵列的多个列,所述阵列包括包括所述阵列中的每一个单元的地址位置值和所述地址位置值的补码的存储设备;用于对所述阵列的列N中的所有单元执行“或”运算的逻辑器件;以及用于对所述“或”运算的结果执行“异或”运算的逻辑器件。
全文摘要
说明了用于检测CAM阵列中的多次命中的设备和方法。为CAM阵列的每一个项目都存储了二进制地址值,并输出该值,以标识单次命中的匹配项目。然而,为进行多次命中检测,存储了此地址的真值和补充值,并将它们输出,以判断是否发生多次命中。如果发生多次命中的状况(例如,匹配了一个以上的地址位置),则构成二进制地址值和补充地址值的所有位不是彼此的补码,因此,可以通过用该地址位置值的补码对地址位置值的每一个位进行“异或”运算来检测多次命中的状况。如果被“异或”的位等于“1”,那么,发生了单次命中。否则,发生了多次命中。
文档编号G11C29/00GK1716449SQ200510059169
公开日2006年1月4日 申请日期2005年3月24日 优先权日2004年6月30日
发明者迈克尔·李宙赫, 希尔顿·B·莱文斯坦, 艾德尔马·希旺 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1