具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明的一部分实施例,而不是全部实施例。基于本发明中的所述实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都应属于本发明保护的范围。
首先结合图1,描述根据本发明实施例的对存储器进行划分的示意图。
可以对存储器进行划分,使得存储器包括为至少两个存储区,每个存储区包括至少两个存储区块,每个存储区中的存储区块相对应。以图1为例,在图1中,存储器100包括第一存储区110、第二存储区120和第三存储区130。第一存储区110包括第一存储区块112、第二存储区块114、第三存储区块116和第四存储区块118。第二存储区120包括第五存储区块122、第六存储区块124、第七存储区块126和第八存储区块128。第三存储区130包括第九存储区块132、第十存储区块134、第十一存储区块136和第十二存储区块138。
三个存储区中的存储区块相对应。也就是,第一存储区块112、第五存储区块122和第九存储区块132相对应;第二存储区块114、第六存储区块124和第十存储区块134相对应;第三存储区块116、第七存储区块126和第十一存储区块136相对应;第四存储区块118、第八存储区块128和第十二存储区块138相对应。存储器中存储的数据存储在相对应的存储区块中的同一行,使得相对应的存储区块中的同一行分别存储数据的各个部分。例如,数据110010100011中的“1100”存储在第一存储区110的第一存储区块112的第三行,“1010”存储在第二存储区120的第五存储区块122的第三行,以及“0011”存储在第三存储区130的第九存储区块132的第三行。
可以根据性能需求、负载大小、功耗要求和查找速度等,来划分存储区和存储区块。可以沿着诸如位线或KEY线方向之类的列方向,将存储器划分为至少两个存储区。每个存储区可以包含相同或不同数量的位线或KEY线。可以沿着诸如字线或ML线之类的行方向,将存储器的每个存储区划分为至少两个存储区块。相应的存储区块具有相同数量的行。同一存储区中的存储区块可以具有相同或不同数量的字线或ML线。
下面,基于包括至少两个存储区、每个存储区包括至少两个存储区块的存储器,来描述根据本发明实施例的查找数据的方法。
图2示出了根据本发明实施例的在存储器中查找数据的方法200。
方法200包括:在S210中,确定当前存储区中是否存在与待查找数据相匹配的命中存储区块;在S220中,如果确定存在命中存储区块,则查找下一存储区中与命中存储区块对应的存储区块,以确定是否还存在命中存储区块。
在S210中,从当前存储区的待查找数据输入线(例如,位线或KEY线)输入待查找数据,确定当前存储区中是否存在与输入的数据相匹配的命中存储区块。存储区块命中表示在该存储区块进行数据匹配操作的情况下,在该存储区块中找到了与从待查找数据输入线输入的数据相匹配的数据。在S220中,如果当前存储区中存在命中存储区块,则查找下一存储区中与命中存储区块对应的存储区块,使得待查找的存储区块根据从所在存储区的待查找数据输入线输入的待查找数据来进行数据匹配操作,从而确定在该下一存储区中是否还存在命中存储区块。
根据本发明实施例提供的查找数据的方法,通过将存储区进一步划分为存储区块,如果当前存储区中存在命中存储区块,则在下一存储区中查找与命中存储区块相应的存储区块,使得与未命中的存储区块对应的存储区块可以不执行操作,从而可以降低功耗。在现有技术中,如果在当前存储区中查找到相匹配的数据,即当前存储区命中,则需要查找下一存储区的整体,而在本发明的实施例中,可以仅仅查找下一存储区中的部分存储区块,从而可以存在不进行操作的存储区块,因此能够实现降低功耗的效果。
在本发明的一个实施例中,在S210中,确定当前存储区中是否存在与待查找数据相匹配的命中存储区块。
存储区中的存储区块在进行数据匹配操作的情况下,接收从相应位线或KEY线输入的待查找数据。如果在存储区块中找到了待查找数据,则该存储区块命中,反之,该存储区块未命中。
在S220中,如果确定存在命中存储区块,则查找下一存储区中与命中存储区块对应的存储区块,以确定是否还存在命中存储区块。
如果在S210中确定存在命中存储区块,则与命中存储区块对应的下一存储区中的存储区块进行数据匹配操作,确定在下一存储区中是否还存在命中存储区块,即在进行数据匹配操作的存储区块中确定是否还查找到了待查找数据,如果查找到了,则相应的存储区块命中。
根据本发明的一个实施例,在S220中,可以仅仅查找下一存储区中与命中存储区块对应的存储区块。
例如,如果存储区110中的存储区块112命中,则仅仅查找存储区120中的存储区块122。如果存储区110中的存储区块116和118都命中,则仅仅查找存储区120中的存储区块126和128。
仅仅查找与命中存储区块对应的存储区块,可以使得与未命中存储区块对应的存储区块都不再进行操作,从而能够最大限度的节省功耗。
根据本发明的一个实施例,可以通过图3所示的方法300来查找下一存储区中与命中存储区块相应的存储区块。
在S310中,确定命中存储区块具有的最高优先级。
存储区中的存储区块可以具有不同的优先级。根据本发明的一个实施例,可以根据预定优先级分配规则,为每个存储区块分配优先级。例如,在存储区中,存储区块的优先级可以依次递减。结合图1,当按照优先级依次递减的顺序分配优先级时,存储区110中的存储区块112的优先级高于存储区块114的优先级,存储区块114的优先级高于存储区块116的优先级,存储区块116的优先级高于存储区块118的优先级。当然,也可以采用其他方式为存储区块分配优先级,例如优先级依次递增、优先级先增大再减小等。
从而,可以根据预定优先级分配规则,确定命中存储区块具有的最高优先级。例如,如果存储区110中存储区块114、116和118都命中,并且存储区块116在存储区块114、116和118中的优先级最高,则确定此时的最高优先级是存储区块116的优先级。
如果预定优先级分配规则是存储区块的优先级依次递减,则可以根据每个存储区中存储区块的优先级依次递减的分配规则,确定命中存储区块具有的最高优先级。例如,在存储区110中存储区块114、116和118都命中,则由于优先级依次递减,则确定存储区块114的优先级最高。
在S320中,确定当前存储区中优先级不高于该最高优先级的存储区块。
在S310确定最高优先级之后,则可以确定优先级不高于它的存储区块。例如,假设在存储区块110中存储区块112、114、116和118的优先级依次递减,如果只有存储区块116命中,则根据优先级顺序,确定存储区块116和118。如果存储区块114和118都命中,则此时的最高优先级是存储区块114的优先级,根据优先级顺序,确定存储区块114、116和118。
在S330中,查找下一存储区中与所确定的存储区块对应的存储区块。
因为存储区中的存储区块存在对应关系,所以可以查找与通过S320确定的存储区块相对应的存储区块。例如,如果在S320中确定的存储区块是存储区块116和118,则查找下一存储区120中的存储区块126和128。如果在S320中确定的存储区块是存储区块112和116,则查找下一存储区120中的存储区块122和126。如果在S320中确定的存储区块是存储区块118,则只查找下一存储区120中的存储区块118。
图3的实施例基于存储区块的优先级来查找对应的存储区块。通过优先级的设置,能够适应当前存储器中布线范围、布线面积和布线方式等的限制来有效控制对应存储区块的操作,对当前的存储器结构影响很小,不会影响既有存储器的布线方式,也不会增大存储器占用的晶片面积。虽然可能使得与一些未命中的存储区块对应的存储区块也进行数据匹配操作,但是这相比于现有技术,并没有增大功耗,只是没有能够减小该存储区块对应电路的功耗。但是,在更多的情况下,与未命中的存储区块对应的存储区块不进行数据匹配操作,这相比于现有技术,使原本进行数据匹配操作的相应电路不再进行操作,从而能够减小功耗。因此,从整体上看,基于本发明实施例提供的方法,能够降低在存储器中查找数据的功耗。
在本发明的实施例中,如果存储器存在多于两个存储区,在图2所示的方法中,如果S220中确定还存在命中存储区块并且还存在下一存储区,则继续查找该存储区的下一存储区;如果执行S220之后不存在命中存储区块,则无论是否还有下一存储区,停止数据查找。通过方法200进行查找,直到在存储器中查找到与待查找数据相匹配的数据或者查找不到与待查找数据相匹配的数据。
以图1的存储器100为例。如果在存储区110中存储区块116命中,则需要查找存储区120中的存储区块126。如果存储区块126也命中,则继续查找存储区130中的存储区块136以确定存储区块136是否还命中。如果在存储区120中没有存储区块命中,则停止查找。
根据本发明实施例提供的查找数据的方法,基于具有分块结构的存储器,在存储区块命中的情况下,查找下一存储区中与命中存储区块对应的存储区块,可以在不改变查找性能的同时,使得某些存储区块不进行数据匹配操作,从而能够降低功耗。并且,由于利用优先级来进一步控制对应存储区块的操作,可以适应诸如布线走向、布线区域等设计条件的限制,对既有存储器芯片影响很小,在降低功耗的同时,对封装、散热和器件的可靠性都有好处。
下面结合图4和图5,描述根据本发明实施例的在存储器中查找数据的装置。
图4示出了根据本发明实施例的在存储器中查找数据的装置400。
存储器可以包括至少两个存储区,每个存储区包括至少两个存储区块,各存储区中的存储区块分别对应。基于这样的存储器,装置400可以包括确定模块410和查找模块420。确定模块410可用于确定当前存储区中是否存在与待查找数据相匹配的命中存储区块。查找模块420可用于如果确定模块410确定存在命中存储区块,则查找下一存储区中与命中存储区块对应的存储区块,以确定是否还存在命中存储区块。
存储器、确定模块410和查找模块420的上述和其他操作和/或功能可以参考上述存储器100以及查找数据的方法200和/或300中的相应部分,为了避免重复,在此不再赘述。
根据本发明实施例提供的在存储器中查找数据的装置,基于具有分块结构的存储器,查找模块可以在确定模块确定有存储区块命中的情况下,查找下一存储区中与命中存储区块对应的存储区块,可以在不改变查找性能的同时,使得某些存储区块不进行数据匹配操作,从而能够降低功耗。
图5示出了根据本发明实施例的在存储器中查找数据的装置500的示意图。
装置500的确定模块510和查找模块520与图4的装置400的确定模块410和查找模块420基本相同。
根据本发明的一个实施例,查找模块520可用于如果确定模块510确定存在命中存储区块,则仅仅查找下一存储区中与命中存储区块对应的存储区块,以确定是否还存在命中存储区块。
根据本发明的一个实施例,查找模块520可以包括优先级确定单元522、区块确定单元524和区块查找单元526。优先级确定单元522可用于确定命中存储区块具有的最高优先级。区块确定单元524可用于确定当前存储区中优先级不高于最高优先级的存储区块。区块查找单元526可用于查找下一存储区中与区块确定单元524确定的存储区块对应的存储区块。
根据本发明的一个实施例,优先级确定单元522可用于根据预定优先级分配规则,确定命中存储区块具有的最高优先级。进一步地,优先级确定单元522可用于根据每个存储区中存储区块的优先级依次递减的分配规则,确定命中存储区块具有的最高优先级。
查找模块520、优先级确定单元522、区块确定单元524和区块查找单元526的上述和其他操作和/或功能可以参考上述查找数据的方法200和/或300中的相应部分,为了避免重复,在此不再赘述。
通过查找模块仅仅查找与命中存储区块对应的存储区块,可以使得与未命中存储区块对应的存储区块都不再进行操作,从而能够最大限度的节省功耗。
通过优先级确定单元、区块确定单元和区块查找单元,可以基于存储区块的优先级来查找对应的存储区块。借助于优先级的设置,能够适应当前存储器中布线范围、布线面积和布线方式等的限制来有效控制对应存储区块的操作,对当前的存储器结构影响很小,不会影响既有存储器的布线方式,也不会增大存储器占用的面积。虽然可能使得与一些未命中的存储区块对应的存储区块也进行数据匹配操作,但是这相比于现有技术,并没有增大功耗,只是没有能够减小该存储区块对应电路的功耗。但是,在更多的情况下,与未命中的存储区块对应的存储区块不进行数据匹配操作,这相比于现有技术,使原本进行数据匹配操作的相应电路不再进行操作,从而能够减小功耗。因此,从整体上看,基于根据本发明实施例提供的装置,能够降低在存储器中查找数据的功耗。并且,由于利用优先级来进一步控制对应存储区块的操作,可以适应诸如布线走向、布线区域等设计条件的限制,对既有存储器芯片影响很小,在降低功耗的同时,对封装、散热和器件的可靠性都有好处。
根据本发明的一个实施例,确定模块510和查找模块520可以包括至少一个控制电路。通过控制电路来实现控制模块510和查找模块520的功能。
每个控制电路可以连接在相邻两个存储区之间,并且可以被配置为确定该相邻两个存储区中的前一存储区中是否存在与待查找数据相匹配的命中存储区块,如果确定存在命中存储区块,则控制该相邻两个存储区中的后一存储区中与命中存储区块对应的存储区块进行数据匹配操作。
控制电路的例子通过图6来示出。图6只是示意性的,并不对本发明的保护范围构成限制。
图6示出了控制电路630,该控制电路连接在存储区610和620之间。在图6中,存储区610包括存储区块612和614,存储区620包括存储区块622和624。
根据本发明的一个实施例,控制电路可以包括:至少两个命中确定子电路,与前一存储区中的存储区块相对应,被配置为确定对应的存储区块是否命中;控制生成子电路,被配置为如果命中确定子电路确定对应的存储区块命中,则控制后一存储区中与所命中的存储区块对应的存储区块进行数据匹配操作。
结合图6,控制电路630包括命中确定子电路632和634,分别与存储区610的存储区块612和存储区块614对应。如果在存储区块612中查找到待查找数据,则命中确定子电路632确定存储区块612命中,否则确定存储区块612未命中。同理,如果在存储区块614中查找到待查找数据,则命中确定子电路634确定存储区块614命中,否则确定存储区块614未命中。
控制电路630还包括控制生成子电路636。控制生成子电路636接收来命中确定子电路632和634的输出,如果在这些输出中指示有存储区块命中,则控制生成子电路630控制存储区620中相应的存储区块进行操作。例如,如果命中确定子电路632的输出表示命中,则控制生成子电路630控制存储区块622进行操作。同理,如果命中确定子电路634的输出表示命中,则控制生成子电路630控制存储区块624进行操作。
根据本发明的一个实施例,控制生成子电路636可以包括或门和与门,其中或门被配置为确定存储区块的优先级,与门被配置为接收从待查找数据输入线输入的数据以及来自或门的输出,以控制是否将所接收的数据输入存储区块。下面结合图7来描述根据本发明实施例的控制生成子电路的例子。
在图7中,控制生成子电路包括其中的或门和与门。另外,在图7中还示出了存储区和命中确定子电路。存储区710包括存储区块712、714、716和718,存储区720包括存储区块722、724、726和728。命中确定子电路732、734、736和738分别与存储区块712、714、716和718对应。
通过或门可以确定存储区块的优先级。在图7中,当位置较高的存储区块命中时,无论位置较低的存储区块是否命中,或门的输出都为高电平。这表示位置较高的存储区块的命中结果将屏蔽位置较低的存储区块的命中结果,说明位置较高的存储区块具有较高的优先级。在该例子中,存储区块712在存储区710中具有最高的优先级。
与存储区块724、726和728相应的与门接收从待查找数据输入线输入的数据以及来自或门的输出(分别为控制信号2、3和4)。与存储区块722相应的与门接收从待查找数据输入线输入的数据以及来自命中确定子电路732的输出(控制信号1)。虽然与存储区块722相应的与门没有接收来自或门的输出,但是本领域技术人员可以容易地想到,可以将命中确定子电路632连接到一端输入恒为低电平的或门,从而使得与存储区块722相应的与门也接收来自或门的输出。
当与门中除了接收待查找数据的输入端之外的另一端为高电平时,与门打开,将从待查找数据输入线输入的数据送入相应存储区块。当该另一端是低电平时,与门关闭,从待查找数据输入线输入的数据不能进入相应的存储区块,这样,相应的存储区块不进行数据匹配操作。从而,可以看到,与门的打开与否,数据的送入与否,存储区块的操作与否,都受到命中确定子电路和或门的控制。
通过有效的设计和布线,可以用简单的元器件结构来实现控制电路,使得根据本发明实施例引入的控制电路几乎不占据什么面积,布线可以满足硬件条件、晶片资源等的限制,不影响现有的存储器芯片结构和布线。根据本发明实施例的控制电路的实现,使得在降低功耗的同时,对封装、散热和器件的可靠性都有好处。
根据本发明的实施例,存储器可以包括:至少两个存储区,每个存储区包括至少两个存储区块,各存储区中的存储区块分别对应;以及如上所述的装置。根据本发明实施例的存储器可以是CAM,也可以是TCAM,还可以是其它可以在其中进行数据匹配操作的存储器。
接下来,仍然结合图7,描述根据本发明实施例的存储器的例子。
在图7中,假设存储器700具有512×80的存储阵列,其深度为512行,位宽为80比特。将存储器700的存储阵列划分为两个存储区710和720,每个存储区具有40比特的位宽。在每个存储区中,划分为四个存储区块,分别具有128×40的大小。
随着存储区的划分,以KEY线为例的待查找数据输入线被相应的划分为两组,KEY[0:39]输入存储区710,KEY[40:79]输入存储区720。
在存储区710中,可以为存储区块712、714、716和718设置缓冲器以增大KEY线的驱动能力。当然,也可以不设置缓冲器。存储区块712至718进行数据匹配操作,当查找到与从KEY[0:39]输入的待查找数据匹配的数据时,相应的命中确定子电路输出指示命中的信号。例如,当在存储区块712中查找到相匹配的数据时,命中确定子电路732输出指示命中的信号。同理,如果在存储区块714、716或718中查找到相匹配的数据,则它们各自相应的命中检测子电路734、736或738输出指示命中的信号(例如,高电平)。反之,如果在存储区块中没有查找到相匹配的数据,则相应的命中检测子电路输出指示未命中的信号(例如,低电平)。
在存储区720中,KEY[40:79]通过与门输入存储区块722、724、726和728。与门的另一输入端受到前面电路的控制,分别接收从前面输出的控制信号1、2、3和4。如果与门的另一输入端为高电平,则与门打开,KEY[40:79]可以送入相应的存储区块,相应的存储区块进行数据匹配操作。如果与门的另一输入端为低电平,则与门关闭,KEY[40:79]不能送入相应的存储区块。
基于命中确定子电路、或门和与门的控制,当存储区块718命中并且存储区块712、714和716都未命中时,存储区块728根据从KEY[40:79]输入的数据进行操作,而存储区块722、724和726都不进行操作,从而节省了三个存储区块的操作,使得功耗降低。当存储区块716命中并且存储区块712和714都未命中时,无论存储区块718是否命中,存储区块726和728根据从KEY[40:79]输入的数据进行操作,而存储区块722和724不进行操作,从而节省了两个存储区块的操作,使得功耗降低。当存储区块714命中并且存储区块712未命中时,无论存储区块716和718是否命中,存储区块724、726和728都根据从KEY[40:79]输入的数据进行操作,而存储区块722不进行操作,从而节省了一个存储区块的操作,使得功耗降低。当存储区块712命中时,无论存储区块714、716和718是否命中,存储区块722至728都根据从KEY[40:79]输入的数据进行操作,此时虽然所有存储区块都进行操作,但是相比现有技术,并没有消耗更多的功耗。因此,从整体上看,利用该方式在存储器700中查找数据,能够节省功耗。
图8示出了图7的存储区720的进一步结构示意图。
存储区720的每个存储区块中的存储单元可以采用接收数据反相输入和正相输入的现有结构。与门除了接收KEY线的数据外,还要接收控制信号1、2、3或4,从而控制是否将KEY线的数据送入存储区块的存储单元中。
本领域技术人员可以意识到,结合本文中所公开的实施例中描述的各方法步骤和单元,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各实施例的步骤及组成。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。本领域技术人员可以对每个特定的应用使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
结合本文中所公开的实施例描述的方法步骤可以用硬件、处理器执行的软件程序、或者二者的结合来实施。软件程序可以置于随机存取存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM或技术领域内所公知的任意其它形式的存储介质中。
尽管已示出和描述了本发明的一些实施例,但本领域技术人员应该理解,在不脱离本发明的原理和精神的情况下,可对这些实施例进行各种修改,这样的修改应落入本发明的范围内。