可编程并行查找存储器的制作方法

文档序号:6757441阅读:167来源:国知局
专利名称:可编程并行查找存储器的制作方法
技术领域
本发明的实施方案涉及内容可寻址存储器(CAM)结构,更具体地,涉及可由软件程序灵活操纵的CAM结构。
背景技术
CAM本身是公知的。CAM是可以通过其内容来访问的存储器。CAM一般包括存储数据的不同条目(entry)。每个CAM条目都包括值匹配逻辑,该逻辑将存储在各个条目中的数据与输入值进行比较,以确定它们是否相同。当接收到输入字时,逐个位地将输入与存储在CAM中的每个字进行比较。有些CAM要求输入字的所有位与存储在CAM中的字之一的所有位全都匹配。而有些CAM只需要预定的位匹配。无论如何,由各个CAM条目执行的比较都是并行执行的,并且提供对数据非常快的访问。
相反,软件程序是依次来识别由微处理器、数字控制器等(统称为“处理器”)执行的操作。一般地,利用软件的内容搜索需要在大量数据项上迭代地进行搜索,直到检测出值匹配。已经提出了各种算法来减少需要执行搜索的迭代次数。例如,哈希(Hash)算法可以使用输入值的一部分作为数据链表的直接索引。但是,最终还是需要在整个链表上的迭代搜索。考虑一个通过电话号码来对顾客记录进行列表的系统。哈希表可以使用顾客号码的一部分(例如最后五个数字)作为具有10,000个条目(10^n,其中n是借助其对哈希表进行索引的数字的个数)的哈希表的索引。哈希表中的每个条目都将包括指向条目链表的指针。链表中的每个条目将存储正被搜索的数字的余数,指向链表中的下一项的指针(如果条目不是匹配的话),以及指向与所述顾客相关联的数据记录的指针(如果条目是匹配的话)。继续上述例子,十位数字的电话号码可能需要每个具有10,000个条目的链表(10^I-n,其中I是搜索参数的总长度,n是哈希表索引的长度)。为了完整地对电话号码进行搜索,可能需要对整个链表的迭代检查。执行哈希表查找的软件程序可能需要搜索并且逐个地检查所有的10,000个条目,直到它找到了匹配条目或者它断定根本没有任何匹配。当然,这种迭代搜索会消耗大量的时间。
由此,在本领域中需要一种提供数据并行查找的软件控制过程。

发明内容
本发明的实施方案提供了可由软件程序操纵来提供并行硬件查找的并行查找存储器(PLM)结构。根据本发明的一个方面,提供了一种并行查找存储器,包括内容可寻址存储器(CAM)阵列和控制器,所述CAM阵列包括多个CAM条目,每个CAM条目包括至少两个存储位置,所述位置之一包括值匹配逻辑,所述控制器响应于外部命令,将搜索值应用于所述CAM条目的一个子集,所述子集和搜索值是由所述外部命令来标识的。
根据本发明的另一个方面,提供了一种处理器核,包括调度器,其接收指令并将所述指令指派给适当的执行单元;和其中包括并行查找存储器的执行单元组,所述并行查找存储器包括内容可寻址存储器(CAM)阵列,用以生成结果数据以存储在目的寄存器中。
根据本发明的又一个方面,提供了一种处理器,包括具有执行指令的执行单元的处理器核;具有不同级的缓存层次结构,包括在L1缓存的级上提供的、与执行单元相互通信的并行查找存储器(PLM),所述PLM具有存储数据的多个内容可寻址存储器(CAM)条目,其中响应于从所述执行单元接收的PLM指令,所述PLM确定在查找值和存储在CAM条目中的数据之间是否存在匹配。
根据本发明的再一个方面,提供了一种多处理器计算机系统,包括耦合到公共通信总线上的多个主体(agent),所述多个主体具有处理数据的处理器和与所述处理器进行通信以存储由所述处理器处理的数据的存储器,所述存储器进一步包括接收搜索值的存储器控制器;和具有内容可寻址存储器(CAM)阵列的并行查找存储器(PLM),所述PLM在所述搜索值和存储在所述CAM阵列中的数据之间执行值匹配。
根据本发明的再一个方面,提供了一种处理器,包括具有执行指令的执行单元的处理器核;耦合到所述执行单元的查找存储器,其中,响应于具有一个或多个定义了所述查找存储器内的查找范围的操作数(operand)的指令,所述查找存储器确定在查找值和存储在内容可寻址存储器(CAM)条目中的数据之间是否存在匹配。


图1图示了根据本发明一种实施方案的并行查找存储器。
图2图示了根据本发明另一种实施方案的并行查找存储器。
图3是图示了根据本发明的一种实施方案适于使用的示例性处理器核的框图。
图4是图示了根据本发明的一种实施方案在适于使用的一个主体内的功能单元的简化框图。
图5是图示了根据本发明的另一种实施方案适于使用的示例性微处理器系统的框图。
具体实施例方式
本发明的实施方案提供了可由软件程序操纵来提供并行硬件查找的并行查找存储器(PLM)结构。硬件PLM结构可以包括PLM控制器和内容可寻址存储器(CAM)阵列。CAM阵列可以包括多个CAM条目,每个CAM条目具有一个CAM部分和一个指针部分。PLM可被映射到用户空间上,并且直接由写逻辑(未示出)来写,这在存储系统领域中是常见的技术。使用软件程序,CAM阵列可以被划分成一个或多个同时代表不同结构的“区段”。用户可以在一个区段内指定对其执行值匹配的CAM条目。因此,本发明的实施方案大大减小了现有技术方法的匹配和扫描延时。同时,本发明的实施方案提供了一种通用CAM结构,可以使用软件程序实现对上述结构的灵活操纵,以满足各种应用的需要。
图1图示了根据本发明一种实施方案的并行查找存储器100。PLM 100可以包括CAM阵列110和PLM控制器120。CAM阵列110可以包括多个CAM条目。虽然在图1中仅示出了20个CAM条目,但是CAM阵列110可以包括所期望的任何数量的条目。每个CAM条目可以包括CAM部分130和指针部分140。CAM部分130可以存储数据。它还可以包括值匹配逻辑,该逻辑允许对存储在CAM条目中的数据和输入线121上的查找值进行比较。值匹配逻辑将查找值与存储在各个CAM条目中的值进行比较,如果它们匹配,则可以在输出端上生成一个命中值。命中值可以使得指针部分140输出其中所存储的数据。命中值可以从CAM阵列110中输出,用以指示发生了值匹配。指针部分140可以存储代表了指向以下数据项的指针的数据,所述数据项是关联于存储在关联的CAM部分130中的搜索参数而存储的。根据本发明的一种实施方案,指针部分140可以是64位指针。CAM部分130还可以有64位来匹配其各自的指针部分140。本领域的技术人员将会清楚的是,CAM部分130和指针部分140都可以包括所期望的任意数量的位,以满足具体实现方式的需要。
PLM控制器120在一种实施方案中管理PLM 100的查找功能。PLM控制器120可以与存在于处理系统中其他某处的外部主体相接口,以接收查找命令并且管理PLM 100的操作以执行这些命令。例如,PLM命令可以标识PLM 100将对其执行值匹配的数据以及其上将执行值匹配的PLM条目的范围。在图1所示出的实施例中,所述范围由PLM 100内的CAM条目的起始地址和结束地址来标识。可替换地,所述范围可以由起始地址和一个长度值来标识,所述长度值标识出从起始位置开始其上应当进行搜索的CAM条目的数量。作为进一步的实施方案,可以使用符号标识符(下面将讨论)来标识所述范围。响应于PLM命令,PLM控制器120识别出其上将进行搜索的CAM条目,并将查找值应用于所指定的条目。
因此,PLM 100可被用作大的CAM,其具有可被分配用于多种目的的若干部分。第一范围的CAM条目(块1)可被分配用于第一数据阵列,独立的第二范围的CAM条目(块2)可被分配用于具有不同目的的第二数据阵列。可以由软件按照类似于大规模随机访问存储器(RAM)的分配和解除分配的方式来执行并管理CAM分配。
对于超大PLM(例如,有数以百万甚至更多的条目),PLM 100可以被组织成多个块。PLM 100还可以包括块地址单元150和命中/击不中(hit/miss)合并单元160。块地址单元150可以控制发生在起始条目和结束条目之间的、输入信号到不同块的CAM条目的传输。例如,时序控制单元150可以将输入信号到(多个)块的传输分布在多个时钟周期中,以管理功耗和/或时序问题。命中/击不中合并单元160也可以从中生成总输出信号。
因此,本发明的实施方案提供了两个指令,这两个指令可被包括在为PLM提供了直接搜索能力的处理器指令集中。当被执行时,所述指令将由处理器内的执行单元来解译,并且如上所述地被提交给PLM。指令的示例性格式可以包括OPCODE<SRegister>,<ERegister>,OPCODE2<VRegister>,<DRegister>,其中opcode和opcode2是唯一地标识PLM查找操作的数据样式。SRegister标识出存储将被搜索的某一范围CAM条目的起始处的寄存器,ERegister标识出用于标识将被搜索的某一范围CAM条目的末尾处的寄存器,VRegister标识出将从中读出搜索值的寄存器,并且DRegister标识出在命中的情况下从PLM输出的数据将被存储其中的寄存器。根据本发明一种实施方案的PLM 100在具有四个寄存器的处理器或系统(例如x86处理器)中可以具有特定的应用。
因此,根据本发明的实施方案,PLM 100可以提供通用CAM结构,该结构可被用户操纵来代表所期望的任何设备或电路元件。为了这样做,使用软件程序的用户可以使用PLM指令将PLM 100划分成不同的区段。此外,通过指定多个CAM条目中将对其执行值匹配的准确部分,本发明的实施方案可以大大减小匹配和扫描延时。
图2图示了根据本发明第二实施方案的并行查找存储器200。PLM 200可以包括CAM阵列210和PLM控制器220。CAM阵列210可以包括多个CAM条目。每个CAM条目可以包括存储数据和值匹配逻辑的CAM部分230,还可以包括存储指针的指针部分240,所述指针用于返回与存储在CAM部分230中的数据相关的数据项。
PLM 200还可以包括分配表250,该表标识出CAM存储器空间中已被分配用于每个用户进程的部分。因此,分配表250可以存储起始ID 252和结束ID 254,代表了每个已分配空间的起始位置和结束位置。表条目还可以包括第三部分256,用于存储每个已分配区域的用户进程ID。第三部分256可以包括同样支持内容寻址的值匹配逻辑。
在操作过程中,通过用户进程ID 256来寻址PLM的已分配区域就足够了,不用明确标识起始位置和结束位置。响应于查找命令,PLM控制器220可以将输入的标识符与存储在表250中的用户进程ID进行比较。如果匹配的话,PLM控制器220可以从中取得起始位置和结束位置。PLM 200此后可以将搜索值应用于CAM阵列210中所识别出的位置。
图2的实施方案特别适用于以下应用,所述应用利用的处理器具有仅三个寄存器的指令格式,例如是Itanium处理器,商业上可从位于加利福尼亚州圣克拉拉的Intel公司获得。所述指令格式可以采用以下形式OPCODE<SRegister>,<VRegister>,<DRegister>,其中opcode是唯一地标识PLM查找操作的数据样式,SRegister值标识出存储了PLM搜索范围的符号标识符的寄存器,VRegister值标识出存储了搜索值的寄存器,DRegister值标识出将存储搜索结果的寄存器。
前面的讨论给出了一种通用CAM结构,使用软件程序可以以用户所期望的任何方式来灵活地操纵该结构。用户可以识别存储器结构中对其执行值匹配的特定部分。继而,这可以允许用户避免对匹配条目的反复搜索,并且减小匹配和扫描延时。
图3是根据本发明实施方案的处理器核300的简化框图。本发明的原理可以应用于从乱序执行中获益的处理器核,以实现更快的数据访问。处理器核300中可以具有指令缓存310、指令译码器320、寄存器分配器330和寄存器文件340。指令缓存310一般存储将由处理器核300执行的指令。即使这些指令可以被乱序执行,它们也都按照程序顺序被存储在指令缓存310中。指令译码器320可以对指令进行译码,并且确定如何执行它们。寄存器分配器330可以分配寄存器文件340中可存储所述指令的结果数据的寄存器(未示出)。寄存器文件340可以存储所述指令的源数据和结果数据。
处理器核300还可以包括调度器350以及各种执行单元。调度器350可以在指令准备好被执行时调度这些指令。执行单元可以包括PLM 360、算术逻辑单元(ALU)370等。这些执行单元可以执行指令。在操作中,分配器330可以将PLM指令转发给调度器350。当PLM指令及其关联数据变得容易获得时,调度器350可以将PLM指令分派到PLM 360。当指令被乱序执行时,可以执行值匹配操作。
调度器350可以检查各条指令,并且基于指令类型将它们指派给适当的执行单元。调度器350可以调度指令来执行,并使得源数据从所识别的源寄存器中被取出并被传递到所指派的执行单元。结果数据被存储在寄存器文件340中已指派的寄存器中。
根据一种实施方案,PLM 360可以作为处理器核300的执行单元来使用。在这方面,它可以在调度器350的控制下接收控制命令和源数据,并生成结果数据以存储在目的寄存器中。在这方面,PLM360可以增补在当前处理器核中常见的执行单元。
当前的处理器包括多层存储器系统。例如,处理器通常包括位于核系统之外的较大片上缓存,用于存储指令和/或数据以供核随后使用。有些处理器包括多层缓存(cache),例如L1缓存以及更大的L2缓存,用以提高处理器性能。图3的指令缓存可被认为是最低层的缓存,被称为L0。一般地,L1缓存比L0缓存更大但更慢,L2缓存比L1缓存更大但更慢。缓存管理过程可以有利地分层次管理在整个缓存中所存储的多种类型数据,以提高处理器性能。
根据本发明的实施方案,可以在缓存层次结构中的不同级上提供上述实施方案的PLM。图3的实施方案图示了作为执行单元300来使用的PLM,这与L0缓存相似。可替换地,如图4所示,PLM可被提供在缓存层次结构420中的一个级上,使得PLM 400分别类似于L1缓存或L2缓存。图4图示了在L1缓存460的级上提供PLM 400的实施例。根据这些实施方案,PLM 400提供了基于CAM的L1或L2缓存的对应物。
在这种实施方案中,PLM具有与处理核410之间的接口。当处理核410确定从PLM 400搜索数据时,它向PLM 400提供命令,该命令标识出搜索值以及将被搜索的一定范围的条目。如果发生命中的话,PLM 400用命中所标识的搜索结果作出响应。一般地,进出核410的数据交换并不特意寄存在核的寄存器文件内。相反,核内的加载单元(未示出)可以管理与外部PLM 450之间的数据交换,并且管理对寄存器的访问,以实现数据传输。
根据本发明的实施方案,PLM也可以作为系统存储器的对应物来使用,如图5所示。图5图示了包括耦合到公共通信总线的多个主体510、520的系统500。所述主体可以包括微处理器、数字信号处理器、桥接口芯片、存储器控制器等。一般地,主体通过在通信总线上发起事务来交换数据。所述事务相对于所寻址的数据(例如读或写)、所寻址数据的存储器位置以及数据自身的传输来标识所要采取的动作。
在图5所示的实施方案中,PLM 590可以按照类似于当前计算机系统的系统RAM 580的方式被耦合到存储器控制器570。因此,总线上的处理器510或其他主体可以发起标识出PLM查找的事务,例如提供搜索值作为事务的地址并且标识出搜索范围。响应于事务的类型,存储器控制器570可以调动PLM系统590,并将所述地址传递到PLM 590作为其搜索值。PLM系统590可以对所选择的范围执行PLM查找操作,并且生成标识出是否发生命中的响应。如果已发生了命中,则PLM系统590可以输出与所述搜索值相关联的存储数据。存储器控制器570可以用包括来自PLM 590的输出的响应对所投寄的事务作出响应。
本发明的上述实施方案有利地提供了一种可由程序指令直接管理并使用的内容可寻址存储器。这样,它就可以为软件设计者提供一种在通常的软件设计中不存在的搜索能力。例如,PLM存储器系统可被用来完全取代大多数哈希查找函数的操作。与参考哈希表,然后迭代地步进通过长的链表数据结构,以获取指向所期望数据记录的指针的设计软件不同,PLM系统可以在少至单个处理步骤中取得所期望的数据结构。包括存储在CAM部分中的搜索值以及在关联的存储部分中的数据记录指针的PLM存储器将用单个并行查找操作来直接访问指向所期望数据记录的指针。
这里具体地图示并描述了本发明的几种实施方案。然而,将理解的是,在不偏离本发明的精神和预想范围的情况下,本发明的多种修改和变化都被以上教导所覆盖,并属于所附权利要求书的范围当中。
权利要求
1.一种并行查找存储器,包括内容可寻址存储器(CAM)阵列,包括多个CAM条目,每个CAM条目包括至少两个存储位置,所述位置之一包括值匹配逻辑,以及控制器,所述控制器响应于外部命令,将搜索值应用于所述CAM条目的一个子集,所述子集和搜索值由所述外部命令来标识。
2.如权利要求1所述的并行查找存储器,其中所述外部命令包括以下数据,所述数据标识出作为所述子集的起始位置和结束位置的CAM条目。
3.如权利要求1所述的并行查找存储器,其中所述外部命令包括以下数据,所述数据标识出作为所述子集的起始位置的CAM条目以及代表将被搜索的CAM条目的数量的长度标识符。
4.如权利要求1所述的并行查找存储器,进一步包括具有以下条目的分配表,所述条目存储了所述CAM阵列中在用部分的起始标识符和结束标识符,并且存储了各个部分的符号标识符,并且其中所述外部命令通过对应的符号标识符来标识所述子集。
5.如权利要求1所述的并行查找存储器,其被配备在处理器核中。
6.如权利要求1所述的并行查找存储器,其被配备在位于处理器核之外的处理器芯片中,作为一层缓存的对应物。
7.如权利要求1所述的并行查找存储器,其被配备在计算机系统中,所述计算机系统包括耦合到外部通信总线的多个主体,其中所述并行查找存储器被配备在第一主体中,而处理器被配备在第二主体中。
8.一种处理器核,包括调度器,其接收指令并将所述指令指派给适当的执行单元;并且所述执行单元的组包括并行查找存储器,所述并行查找存储器包括内容可寻址存储器(CAM)阵列,用以生成结果数据以存储在目的寄存器中。
9.如权利要求8所述的处理器核,其中所述内容可寻址存储器(CAM)阵列包括多个CAM条目,每个CAM条目包括至少两个存储位置,所述位置之一包括值匹配逻辑。
10.如权利要求8所述的处理器核,进一步包括控制器,所述控制器响应于外部命令,将搜索值应用于所述CAM条目的一个子集,所述子集和搜索值是由所述外部命令来标识的。
11.如权利要求10所述的处理器核,其中所述外部命令包括以下数据,所述数据标识出作为所述子集的起始位置和结束位置的CAM条目。
12.如权利要求10所述的处理器核,其中所述外部命令包括以下数据,所述数据标识出作为所述子集的起始位置的CAM条目以及代表将被搜索的CAM条目的数量的长度标识符。
13.如权利要求10所述的处理器核,其中所述并行查找存储器进一步包括具有以下条目的分配表,所述条目存储了所述CAM阵列中在用部分的起始标识符和结束标识符,并且存储了各个部分的符号标识符,并且其中所述外部命令通过对应的符号标识符来标识所述子集。
14.如权利要求8所述的处理器核,进一步包括接收所述指令的指令缓存;对从所述指令缓存接收的指令进行译码的指令译码器;存储所述指令的源数据和结果数据的寄存器文件;以及分配器,所述分配器从所述指令译码器接收指令,并且分配所述寄存器文件中可存储所述指令的数据的寄存器,所述分配器将所述指令转发给所述调度器。
15.一种处理器,包括具有执行指令的执行单元的处理器核;具有不同级的缓存层次结构,包括在L1缓存的级上提供的、与执行单元通信的并行查找存储器(PLM),所述PLM具有多个内容可寻址存储器(CAM)条目来存储数据,其中响应于从所述执行单元接收的PLM指令,所述PLM确定在查找值和存储在CAM条目中的数据之间是否存在匹配。
16.如权利要求15所述的处理器,其中所述PLM包括内容可寻址存储器(CAM)阵列,包括多个CAM条目,每个CAM条目包括至少两个存储位置,所述位置之一包括值匹配逻辑,以及控制器,所述控制器响应于外部命令,将搜索值应用于所述CAM条目的一个子集,所述子集和搜索值由所述外部命令来标识。
17.如权利要求16所述的处理器,其中所述外部命令包括以下数据,所述数据标识出作为所述子集的起始位置和结束位置的CAM条目。
18.如权利要求16所述的处理器,其中所述外部命令包括以下数据,所述数据标识出作为所述子集的起始位置的CAM条目以及代表将被搜索的CAM条目的数量的长度标识符。
19.一种多处理器计算机系统,包括耦合到公共通信总线上的多个主体,所述多个主体具有处理数据的处理器和与所述处理器进行通信以存储由所述处理器处理的数据的存储器,所述存储器进一步包括接收搜索值的存储器控制器;以及具有内容可寻址存储器(CAM)阵列的并行查找存储器(PLM),所述PLM在所述搜索值和存储在所述CAM阵列中的数据之间执行值匹配。
20.如权利要求19所述的系统,其中所述CAM阵列包括多个CAM条目,每个CAM条目包括至少两个存储位置,所述位置之一包括值匹配逻辑。
21.如权利要求19所述的系统,其中所述PLM进一步包括控制器,所述控制器响应于外部命令,将搜索值应用于所述CAM条目的一个子集,所述子集和搜索值是由所述外部命令来标识的。
22.如权利要求21所述的系统,其中所述外部命令包括以下数据,所述数据标识出作为所述子集的起始位置和结束位置的CAM条目。
23.如权利要求21所述的系统,其中所述外部命令包括以下数据,所述数据标识出作为所述子集的起始位置的CAM条目以及代表将被搜索的CAM条目的数量的长度标识符。
24.一种处理器,包括具有执行指令的执行单元的处理器核;耦合到所述执行单元的查找存储器,其中,响应于具有一个或多个定义了所述查找存储器内的查找范围的操作数的指令,所述查找存储器确定在查找值和存储在内容可寻址存储器(CAM)条目中的数据之间是否存在匹配。
25.如权利要求24所述的处理器,其中所述处理器将结果数据项存储在由所述指令的操作数指定的目的位置中。
26.如权利要求24所述的处理器,其中所述查找存储器是上下文敏感的查找存储器。
27.如权利要求24所述的处理器,其中所述查找存储器将输入的标识符与和所述查找存储器相关联的进程标识进行比较。
全文摘要
提供了一种并行查找存储器(PLM)。PLM包括具有多个CAM条目的内容可寻址存储器(CAM)阵列。每个CAM条目具有至少两个存储位置,所述位置之一包括值匹配逻辑。PLM还包括PLM控制器,其响应于外部命令,将搜索值应用于CAM条目的一个子集。所述子集和搜索值是由所述外部命令来标识的,所述外部命令包括标识出作为所述子集的起始和结束位置的CAM条目的数据、或者标识出作为所述子集的起始的CAM条目以及代表将被搜索的CAM条目的数量的长度标识符的数据。PLM可被配备在处理器核中,配备在位于处理器核之外的处理器芯片中作为一层缓存的对应物,或者被配备在具有耦合到外部通信总线的多个主体的微处理器计算机系统中,其中PLM位于第一主体中,而处理器位于第二主体中。
文档编号G11C15/00GK1702773SQ20051007107
公开日2005年11月30日 申请日期2005年5月24日 优先权日2004年5月25日
发明者舒布亨杜·穆克赫基 申请人:英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1