存储、查询方法及存储控制器和查询系统的制作方法

文档序号:6574537阅读:191来源:国知局
专利名称:存储、查询方法及存储控制器和查询系统的制作方法
技术领域
本发明涉及数据管理技术领域,具体涉及表项的存储、查询方法及存储控制器和查询系统。
背景技术
目前通信设备中大量使用动态随机访问存储器DRAM(Dynamic RandomAccess Memory)作为表项存储介质,例如单倍数据速率同步动态存储器SDRSDRAM(Single Data Rate Synchronous Dynamic Random Access Memory)、双倍数据速率同步动态存储器DDR SDRAM(Double Data Rate SynchronousDynamic Random Access Memory)等。动态随机访问存储器DRAM中包括多个存储体bank,存储体bank中含有存储单元,用于存储表项。这里所说的表项是指一个表中的某一行内容,一个表项可以占用DRAM的连续若干个存储单元。
现有的表项存储方法是根据表项索引存储表项。这里的表项索引是指表项所占DRAM的bank内存储单元的地址,若一个表项占用多个存储单元,那么表项索引可以是其中的最低地址。
请参阅图1,是现有存储方法流程图,包括A1、将表的所有表项都存储在DRAM中的一个bank中;根据表项索引确定DRAM的bank内存储单元地址后,将某个表的所有表项都存储在DRAM中的一个bank中。
A2、在DRAM的各个bank中重复存储同样的表。
将某个表的所有表项在一个bank中存储后,再在其他各个bank中重复存储。例如某种DDR SDRAM含有4个bank,则在bank1到bank4都存储同样的表。
因此,对于同一个表项,在多个bank中是重复存储了,这样的存储方法浪费了bank的存储空间。
当对DRAM进行表项查询时,因为DRAM对于同一bank中不同行的两次读操作之间要求至少间隔tRC时间,所以查询效率受到限制。tRC时间是指同一个bank中在两个相邻的激活ACTIVE命令之间的时间间隔。例如某种DDR SDRAM含有4个bank,tRC=60纳秒(ns)时,对同一bank的两次读操作之间要求至少间隔60纳秒时间。采用随机查表方法时,有可能连续若干次读操作都对应到同一个bank,这时查一次表至少要花60纳秒时间,这样查表性能就是大约16M次/秒,效率比较低。因此,目前一般采用多bank轮流访问的方法在各个bank中轮流进行读操作。
仍以某种DRAM中含有4个bank为例,请参阅图2,是现有查询方法流程图,包括B1、将查询请求按顺序分发给各存储体bank;接收查询请求后,将第一个查询请求分发到bank1进行查询,将第二个查询请求分发到bank2进行查询,其他以此类推,查询请求分发到bank4后,下一个查询请求再分发到bank1进行查询。
B2、根据查询请求中的查表索引确定需查找的表项在bank中的存储地址;查询请求中含有查表索引,查表索引也就是表项所占DRAM的bank内存储单元的地址,因此可以确定需查找的表项在bank中的存储地址。
B3、根据存储地址在bank中查询表项;具体查询时,根据存储单元的存储地址读取表项内容。
B4、输出查询结果。
采用多bank轮流访问的方法可以让连续的若干次查表在4个bank中轮流进行,那么在一个60纳秒的周期内最多可以完成4次查表操作。因为不同bank的Active操作之间是没有tRC的要求,只有tRRD时间的要求,tRRD时间是指在不同的bank之间执行两个ACTIVE命令之间的时间间隔,这个时间间隔比较小。那么这时的查询效率可以达到前面所说的随机查表方法的4倍,即60M次/秒左右。
虽然现有采用多bank轮流访问的方法比随机查表方法效率要高,但因为是基于各bank重复存储同样表项的方法基础上进行查找,所以对于DRAM存储空间的利用率还是比较低,例如4个bank轮流访问时,存储空间的利用率仅为25%。

发明内容
本发明实施例要解决的技术问题是提供一种存储、查询方法及存储控制器和查询系统,能够节省存储空间,提高存储空间利用率。
为解决上述技术问题,本发明实施例通过以下技术方案实现的本发明实施例提供一种存储方法,包括选择不同表项在动态随机访问存储器中存储的不同存储体;将所述不同表项存储到所述选择的动态随机访问存储器的存储体。
本发明实施例提供一种查询方法,包括接收查询表项的表项查询请求;所述表项的存储方式为不同的所述表项存储在动态随机访问存储器的不同存储体中;将所述表项查询请求分类;按轮询方式调度所述分类的查询请求;根据查询请求中的查表索引确定表项在动态随机访问存储器中所属的存储体和确定表项在所属存储体的存储地址,并根据所述存储地址查询表项。
本发明实施例提供一种存储控制器,用于选择不同表项在动态随机访问存储器中存储的所述不同存储体,并将所述不同表项配置到所述选择的存储体。
本发明实施例提供一种查询系统,包括调度单元,用于将接收的查询请求分类存储后按轮询方式调度所述分类的查询请求;查询单元,用于对动态随机访问存储器存储的表项进行查询,不同表项存储在动态随机访问存储器的不同存储体中,所述查询单元根据调度单元调度的所述查询请求中的查表索引确定表项在所述动态随机访问存储器中所属的存储体和确定表项在所属存储体的存储地址,并根据所述存储地址在所述动态随机访问存储器的存储体中查询表项。
从以上本发明实施例技术方案可以看出现有存储方法对于同一个表项,在多个存储体bank中是重复存储的,浪费了存储空间,而本发明实施例通过选择不同表项在动态随机访问存储器中存储的存储体;将所述不同表项存储到所述选择的动态随机访问存储器的不同存储体,从而将不同表项存储到不同的存储体bank中,节约了存储空间,还可以减少表项存储所花费的时间;现有查询方法基于各bank重复存储同样表项的方法基础上进行查找,对于DRAM存储空间的利用率还是比较低,而本发明实施例提供的查询方法,基于将不同表项存储到不同bank的存储方法基础上进行查找,通过将查询请求分类存储;按轮询方式调度所述分类的查询请求;根据查询请求中的查表索引确定表项在动态随机访问存储器中所属的存储体和确定表项在所属存储体的存储地址,并根据所述存储地址查询表项,从而也能利用多bank轮流访问的高效方式,提高DRAM的存储空间利用率。


图1是现有技术存储方法流程图;图2是现有技术查询方法流程图;图3是本发明实施例存储方法流程图;图4是本发明实施例一查询方法流程图;图5是本发明实施例二查询方法流程图;图6是本发明实施例存储控制器结构示意图;图7是本发明实施例查询系统结构示意图。
具体实施例方式
现有的表项存储方法是将某个表的所有表项都存储在DRAM中的一个bank中,并且每个bank重复存储相同的表,本发明实施例提供一种存储方法,将表项不重复地存储在DRAM中的不同bank中,可以节省存储空间,并且可以减少表项存储及更新所花费的时间。
以下介绍本发明实施例的存储方法,请参阅图3,是本发明实施例存储方法流程图,包括C1、选择不同表项在动态随机访问存储器中存储的不同存储体;选择不同表项在动态随机访问存储器中存储的不同存储体,可以是一张表的每个不同的表项选择存储在动态随机访问存储器中不同的存储体,也可以是其中几个不同表项选择存储的是同一个存储体,其他表项各自选择存储在不同的存储体中。
以DRAM含有4个bank为例进行说明。首先,将表项索引的最低两位数值作为选择的DRAM的bank的标号,即最低两位为存储体选择位,例如最低两位数值为00表示对应bank1,最低两位数值为01表示对应bank2,最低两位数值为10表示对应bank3,最低两位数值为11表示对应bank4。然后,采用表项索引剩下的位数的全部或部分数值作为bank内存储单元地址。
C2、将所述不同表项存储到所述选择的动态随机访问存储器的存储体。
选择出不同表项在DRAM中存储的存储体bank和对应的bank内存储单元地址后,根据这些存储单元地址将表的相应表项存储到相应bank的存储单元中。
这样,就把一张表的不同表项存储到不同bank中。此时,每个bank中存储的表项都是不重复的,与现有技术存储方法相比就节省了存储空间,可以存储更多的表项内容,而且对于容量较小的表项也能保证分布在多个bank中,另外,因为对于一个表项存储时只需写入一次,所以还可以减少表项存储及更新所花费的时间。
需要说明的是,本发明实施例存储方法可以和现有的存储方法结合起来应用,即在某些bank中可以重复存储同样的表项。
还需要说明的是,这里只是以DRAM含有4个bank为例进行说明但并不局限于此,例如DRAM含有8个bank,则可采用3位二进制数选择bank。另外,表项索引中对应选择bank和对应作为bank内存储单元地址的数值的位置并不限定,可以是在表项索引中的任何位置。
基于上述本发明实施例的存储方法,以下介绍本发明实施例的查询方法。
因为表项的存储方法发生变化,相应的本发明实施例的查询方法相对于现有的查询方法发生改变。以下本发明实施例的查询方法以DRAM含有4个bank为例进行说明。
请参阅图4,是本发明实施例一查询方法流程图,包括D1、为查询请求分配序号;接收查询请求后,按接收的顺序为查询请求分配序号。一般采用循环方式分配序号。序号的范围根据具体需要选择。
D2、根据查询请求中的查表索引将查询请求放入相应请求队列;查询请求中含有查表索引,根据查询请求中的查表索引的最低两位数值将查询请求放入相应的请求队列中,请求队列数目根据存储体bank数目确定,并且与存储体bank一一对应。例如查表索引的最低两位为存储体选择位,其数值为00表示需查找的表项对应存储在bank1,放入请求队列1,最低两位数值为01表示需查找的表项对应存储在bank2,放入请求队列2,最低两位数值为10表示需查找的表项对应存储在bank3,放入请求队列3,最低两位数值为11表示需查找的表项对应存储在bank4,放入请求队列4。
D3、按轮询方式调度请求队列,并取出请求队列中所含的查询请求;对4个请求队列按轮询方式进行调度,先调度请求队列1,再调度请求队列2,以此类推,调度出请求队列后从请求队列中取出所含的查询请求。每次从调度出的请求队列中取出一个查询请求。因为4个队列中的查询请求在执行查表操作时与4个bank是一一对应,所以也相当于使用到多bank轮流访问的高效方式。即将请求队列1中的第一个查询请求取出分发到bank1进行查询,接着将请求队列2中的第一个查询请求取出分发到bank2进行查询,其他以此类推,如果请求队列中没有查询请求,则调度下一请求队列,当将请求队列4中的第一个查询请求取出分发到bank4后,再将请求队列1中的第二个查询请求取出分发到bank1进行查询,后续类推。
D4、根据查询请求中的查表索引确定需查找的表项所对应的DRAM中的存储体bank和在对应bank中的存储地址;取出查询请求后,可以根据查询请求中的查表索引的最低2位数值确定需查找的表项所对应的DRAM中的存储体bank,例如最低两位数值为00表示需查找的表项对应存储在bank1,最低两位数值为01表示需查找的表项对应存储在bank2,最低两位数值为10表示需查找的表项对应存储在bank3,最低两位数值为11表示需查找的表项对应存储在bank4。查表索引的剩下的位数的全部或部分数值表示查找的表项在对应bank内存储单元地址。
D5、根据所述存储地址在对应bank中查询表项。
确定需查找的表项所对应的DRAM中的存储体bank和在对应内存储单元地址后,则可以根据所述存储单元地址在对应bank中的存储单元读取表项内容。
D6、对查询结果按序号进行重排序后输出查询结果。
得到查询结果后,进行重排序。重排序可以为设置一定空间的缓冲区,并设置一定的缓存时间。当排序单元得到查询结果后,先将查询结果存储在缓冲区中,当设置的缓存时间已经到达或缓冲空间已经或即将耗尽时,先从缓冲区中选出当前最大序号,然后在与该最大序号之差不超过整个序号范围一半的范围内选择最小序号,然后将该最小序号的查询结果输出。例如分配的整个序号范围为0到99,共100个序号,则整个序号范围的一半为50,假如当前缓冲区的最大序号为98,则98-50=48,则与该最大序号之差不超过整个序号范围一半的范围为48到98,在缓冲区中选出落在该范围内的最小序号。如果当前缓冲区中有0、50、98这三个序号,那应该选择50作为最小序号,而不应该选择0作为最小序号。
需要说明的是,这里只是以DRAM含有4个bank为例进行说明但并不局限于此,例如DRAM含有8个bank,则可采用3位数值对应bank。另外,查表索引中对应bank和对应作为bank内存储单元地址的数值的位置并不限定,可以是在表项索引中的任何位置。而且,还可以采用bank分组的方式,此时的一组bank相当于原来的一个bank,例如最低两位数值为00表示需查找的表项对应存储在第一组bank中,其他以此类推。
还需要说明的是,本实施例步骤D2是以将查询请求放入相应请求队列中举例说明,但不局限于此,还可以通过其他方式存储对应的查询请求,例如可以通过划分出几个存储区,将对应不同bank的查询请求放入不同存储区。存储区数目根据存储体bank数目确定,并且与存储体bank一一对应。
可以发现,本发明实施例的查询方法基于将不同表项配置到不同bank的存储方法基础上进行查找,从而也能利用多bank轮流访问的高效方式,提高DRAM的存储空间利用率。
请参阅图5,是本发明实施例二查询方法流程图,与实施例一相比增加了一个高速缓存Cache机制。增加高速缓存机制,主要是为了避免查询请求种类较少时,对应查找存储体不够均匀而导致查表性能损失。图5中包括E1、为查询请求分配序号;接收查询请求后,按接收的顺序为查询请求分配序号。一般采用循环方式分配序号。序号的范围根据具体需要选择。
E2、根据查询请求中的查表索引在高速缓存Cache中进行查询;在Cache中存储有以前的查询结果,则可以根据查表索引先到Cache中进行查找相关表项内容。若在Cache中能查到含有相同索引的表项,则进入步骤E7直接将该查询结果和序号传送给排序单元进行重排序;若在Cache中不能查到含有相同索引的表项,进入步骤E3。
E3、根据查询请求中的查表索引将查询请求放入相应请求队列;查询请求中含有查表索引,根据查询请求中的查表索引的最低两位数值将查询请求放入相应的请求队列中,请求队列数目根据存储体bank数目确定,并且与存储体bank一一对应。例如查表索引的最低两位数值为00表示需查找的表项对应存储在bank1,放入请求队列1,最低两位数值为01表示需查找的表项对应存储在bank2,放入请求队列2,最低两位数值为10表示需查找的表项对应存储在bank3,放入请求队列3,最低两位数值为11表示需查找的表项对应存储在bank4,放入请求队列4。
E4、按轮询方式调度请求队列,并取出请求队列中所含的查询请求;对4个请求队列按轮询方式进行调度,先调度请求队列1,再调度请求队列2,以此类推,调度出请求队列后从请求队列中取出所含的查询请求。每次从调度出的请求队列中取出一个查询请求。因为4个队列中的查询请求在执行查表操作时与4个bank是一一对应,所以也相当于使用到多bank轮流访问的高效方式。即将请求队列1中的第一个查询请求取出分发到bank1进行查询,接着将请求队列2中的第一个查询请求取出分发到bank2进行查询,其他以此类推,如果请求队列中没有查询请求,则调度下一请求队列,当将请求队列4中的第一个查询请求取出分发到bank4后,再将请求队列1中的第二个查询请求取出分发到bank1进行查询,后续类推。
E5、根据查询请求中的查表索引确定需查找的表项所对应的DRAM中的存储体bank和在对应bank中的存储地址;取出查询请求后,可以根据查询请求中的查表索引的最低2位数值确定需查找的表项所对应的DRAM中的存储体bank,例如最低两位数值为00表示需查找的表项对应存储在bank1,最低两位数值为01表示需查找的表项对应存储在bank2,最低两位数值为10表示需查找的表项对应存储在bank3,最低两位数值为11表示需查找的表项对应存储在bank4。查表索引的剩下的位数的全部或部分数值表示查找的表项在对应bank内存储单元地址。
E6、根据所述存储地址在对应bank中查询表项。
确定需查找的表项所对应的DRAM中的存储体bank和在对应内存储单元地址后,则可以根据所述存储单元地址在对应bank中的存储单元读取表项内容。
E7、对查询结果按序号进行重排序后输出查询结果,并将查询结果存入高速缓存Cache中。
得到查询结果后,进行重排序。重排序可以为设置一定空间的缓冲区,并设置一定的缓存时间。排序单元得到查询结果后,先将查询结果存储在缓冲区中,当设置的缓存时间已经到达或缓冲空间已经或即将耗尽时,先从缓冲区中选出当前最大序号,然后在与该最大序号之差不超过整个序号范围一半的范围内选择最小序号,然后将该最小序号的查询结果输出。同时,将查询结果存入Cache中。对于步骤E2中直接在Cache中查找的结果,则不需要再次存入Cache中。
需要说明的是,该实施例步骤E2的Cache查找过程设置在步骤E1序号分配和步骤E3查询请求放入请求队列这两个步骤之间,实际上也可以将Cache查找步骤设置在其它位置,例如设置在步骤E4取出请求队列中所含的查询请求之后。
为解决Cache空间耗尽时新查询结果无法存入Cache的问题,可以采取新查询结果进入时淘汰旧查询结果的方法,为每个Cache中的查询结果设置一个计时器,用于记录该查询结果在Cache中有多长时间没有被查询,当记录的时间超过一定时间后则删除该查询结果。另外,也可以采用对Cache中的查询结果进行定时老化的方法,即设置一个公共定时时间,每次到达定时时间,则删除Cache中的所有查询结果,比如每10ms进行一次删除Cache中所有查询结果的操作。当然,也可以将这两种处理方式相结合。
本实施例采用Cache机制之后,对于查询请求种类较少的情况,例如查询请求基本集中在对应bank1,而对应其他bank的查询请求比较少时,除了初次查询请求外,那么后续查询请求有可能在Cache中直接找到结果,这样可保证在查询请求种类较少的情况下也能达到比较高的查询效率。
还需要说明的是,如果DRAM中已存储的表项进行重新存储时,同时查找Cache中是否存在相同索引的表项,若存在,则同时更新Cache中该表项内容,这样可以保证Cache中的查询结果和DRAM中存储的内容是一致的。
前面介绍本发明实施例存储方法时,提到本发明实施例存储方法可以和现有的存储方法结合起来应用,即在某些bank中可以重复存储同样的表项,那么相应的,本发明实施例一和实施二的查询方法中,还可以根据此种表项存储情况,结合现有技术的查询方法进行应用。
对于重复存储了同样表项的多个bank,或没有重复存储表项的单个bank,分别看作独立的bank组。然后将请求队列不再与各bank一一对应,而是与各bank组一一对应。例如bank1和bank2中是重复存储了同样表项,属于bank组1,bank3没有重复存储表项,属于bank组2,bank4没有重复存储表项,属于bank组3。查表索引的最低两位数值为00表示需查找的表项对应存储在bank组1,放入请求队列1,最低两位数值为01表示需查找的表项对应存储在bank组2,放入请求队列2,其他以此类推。在查询请求的调度环节上则相应设置两个层次,第一个层次使用查表索引的若干位数值选择bank组对应的请求队列,第二个层次对于bank组内各bank含有重复存储了同样表项的情况下,将请求队列中的查询请求轮流分发到该bank组内各bank中进行访问操作,对于bank组只含单个bank且bank没有重复存储表项的情况,按本发明实施例一和实施二所述方法处理。可以看出,本发明实施例一和实施二的查询方法结合现有技术的查询方法进行应用,可以提高查询请求种类较少时的查表性能,相对现有技术也提高了DRAM空间利用率。
上述介绍了本发明实施例的存储方法和查询方法,相应的,本发明实施例提供一种存储控制器和查询系统。
请参阅图6,是本发明实施例存储控制器结构示意图。
存储控制器包括存储体选择单元101和表项配置单元102。存储体选择单元101,用于根据表项索引选择不同表项在动态随机访问存储器中存储的不同存储体;表项配置单元102,用于根据表项索引将不同表项配置到所述存储体选择单元101选择的存储体的相应存储地址。
表项索引的部分位为存储体选择位,其数值对应表项存储的存储体;所述表项索引除存储体选择位外的剩余位的全部或部分数值对应表项在所述存储体中的存储地址。例如动态随机访问存储器含有4个存储体,表项索引最低两位数值为00表示对应存储体1,最低两位数值为01表示对应存储体2,最低两位数值为10表示对应存储体3,最低两位数值为11表示对应存储体4。然后,采用表项索引剩下的位数的全部或部分数值作为各存储体内存储单元地址。
存储体选择单元101根据表项索引的存储体选择位的数值选择不同表项存储的不同存储体,表项配置单元102根据表项索引除存储体选择位外的剩余位的全部或部分数值作为各存储体内存储单元地址,将不同表项配置到所述选择的存储体的存储单元中。
需要说明的是,存储控制器也可以根据需要将表项重复配置到不同存储体中。
还需要说明的是,这里只是以动态随机访问存储器含有4个存储体为例进行说明但并不局限于此,例如动态随机访问存储器含有8个存储体,则在表项索引中可采用3位数值对应存储体。
本发明实施例还提供一种查询系统,请参阅图7,是本发明实施例查询系统结构示意图。
该查询系统包括调度单元60和查询单元70。
调度单元60,用于将接收的查询请求分类存储后按轮询方式调度所述分类的查询请求。查询请求中含有查表索引,调度单元60根据查询请求中的查表索引的最低两位数值将查询请求放入相应的请求队列中,请求队列数目根据动态随机访问存储器的存储体数目确定,并且与存储体一一对应。例如查表索引最低两位数值为00表示需查找的表项对应存储在动态随机访问存储器的存储体1,放入请求队列1,最低两位数值为01表示需查找的表项对应存储在存储体2,放入请求队列2,其他以此类推。需要说明的是,还可以通过其他方式存储对应的查询请求,例如可以通过划分出几个存储区,将对应不同存储体的查询请求放入不同存储区。存储区数目根据存储体数目确定,并且与存储体一一对应。
调度单元60将查询请求分类存储到各请求队列后,按轮询方式调度所述分类的查询请求。先调度请求队列1,再调度请求队列2,以此类推,调度出请求队列后从请求队列中取出所含的查询请求。每次从调度出的请求队列中取出一个查询请求。
需要说明的是,如果动态随机访问存储器的部分存储体中重复存储了同样的表项,则对于重复存储了同样表项的多个存储体,或没有重复存储表项的单个存储体,可分别看作独立的存储体组。此时,请求队列不再与各存储体一一对应,而是与各存储体组一一对应。调度单元60在查询请求的调度环节上则相应设置两个层次,第一个层次使用查表索引的若干位数值选择存储体组对应的请求队列,第二个层次对于存储体组内各存储体含有重复存储了同样表项的情况下,将请求队列中的查询请求轮流分发到该存储体组内各存储体中进行访问操作。
查询单元70,用于对动态随机访问存储器存储的表项进行查询,不同表项存储在动态随机访问存储器的不同存储体中,查询单元70用于根据所述查询请求中的查表索引确定表项在所述动态随机访问存储器中所属的存储体和确定表项在所属存储体的存储地址,并根据所述存储地址在动态随机访问存储器的存储体中查询表项。例如可以根据查询请求中的查表索引的最低两位数值确定需查找的表项所对应的动态随机访问存储器的存储体,最低两位数值为00表示需查找的表项对应存储在动态随机访问存储器的存储体1,最低两位数值为01表示需查找的表项对应存储在存储体2,其他以此类推。查表索引的剩下的位数的全部或部分数值表示查找的表项在对应存储体内存储单元地址。根据所述存储地址就可以在对应的存储体中查询表项。
该查询系统进一步包括序号分配单元80和排序单元81。序号分配单元80,用于为所述接收的查询请求分配序号后传送给调度单元60进行分类存储;排序单元81,用于获取查询单元70的查询结果后根据查询请求的所述序号进行排序,并在排序后输出。排序具体可以为,当设置的缓存时间已经到达或缓冲空间已经或即将耗尽时,先从缓冲区中选出当前最大序号,然后在与该最大序号之差不超过整个序号范围一半的范围内选择最小序号,然后将该最小序号的查询结果输出。
该查询系统进一步包括高速缓存器90和预查单元91。高速缓存器90,用于存储查询单元70的查询结果;预查单元91,用于接收已分配序号的查询请求后根据所述查询请求中的查表索引在高速缓存器90中查询表项,若没有查询到相应表项,将查询请求传送给调度单元60,若查到相应表项,则将该查询结果和序号传送给排序单元81进行重排序。
综上所述,现有存储方法对于同一个表项,在多个存储体bank中是重复存储的,浪费了存储空间,而本发明实施例提供的存储方法和动态随机访问存储器,通过选择不同表项在动态随机访问存储器中存储的存储体;将所述不同表项存储到所述选择的动态随机访问存储器的存储体,从而将不同表项存储到不同的存储体bank中,各存储体中存储的表项都是不重复的,从而节约了存储空间,还可以减少表项存储及更新所花费的时间;现有查询方法基于各bank重复存储同样表项的方法基础上进行查找,对于DRAM存储空间的利用率还是比较低,而本发明实施例提供的查询方法和查询系统,基于将不同表项存储到不同bank的存储方法基础上进行查找,通过将查询请求分类存储;按轮询方式调度所述分类的查询请求;根据查询请求中的查表索引确定表项在动态随机访问存储器中所属的存储体和确定表项在所属存储体的存储地址,并根据所述存储地址查询表项,从而也能利用多bank轮流访问的高效方式,提高DRAM的存储空间利用率;进一步的,本发明实施例提供的技术方案还增加了高速缓存机制,通过高速缓存Cache存储查询结果,接收查询请求后可以根据查表索引先到Cache中进行查找相关表项内容。若在Cache中能查到含有相同索引的表项,则直接将该查询结果和序号传送给排序单元进行重排序;若在Cache中不能查到含有相同索引的表项,再将查询请求进行分类,从而可以避免查询请求种类较少时,对应查找存储体不够均匀而导致的查表性能损失,也提高了查询效率;更进一步的,本发明实施例还提供一种结合现有技术的查询方法,对于重复存储了同样表项的多个bank,或没有重复存储表项的单个bank,分别看作独立的bank组,然后将请求队列不再与各bank一一对应,而是与各bank组一一对应。在查询请求的调度环节上则相应设置两个层次,第一个层次使用查表索引的若干位数值选择bank组对应的请求队列,第二个层次对于bank组内各bank含有重复存储了同样表项的情况下,将请求队列中的查询请求轮流分发到该bank组内各bank中进行访问操作,从而可以提高查询请求种类较少时的查表性能,相对现有技术也提高了DRAM空间利用率。
以上对本发明实施例所提供的存储、查询方法及存储控制器和查询系统进行了详细介绍,本文中应用了具体个例对本发明实施例的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明实施例的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明实施例的思想,在具体实施方式
及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明实施例的限制。
权利要求
1.一种存储方法,其特征在于,包括选择不同表项在动态随机访问存储器中存储的不同存储体;将所述不同表项存储到所述选择的动态随机访问存储器的存储体。
2.根据权利要求1所述的存储方法,其特征在于所述表项的表项索引的部分位为存储体选择位;所述选择不同表项在动态随机访问存储器中存储的不同存储体具体为根据所述表项索引的所述存储体选择位的数值选择不同表项在动态随机访问存储器中存储的不同存储体;所述将不同表项存储到所述选择的动态随机访问存储器的存储体具体为根据所述表项索引中除所述存储体选择位的剩余位的全部或部分数值确定所述不同表项在所述选择的存储体中的存储地址,并按照所述存储地址进行存储。
3.一种查询方法,其特征在于,包括接收查询表项的表项查询请求;所述表项的存储方式为不同的所述表项存储在动态随机访问存储器的不同存储体中;将所述表项查询请求分类;按轮询方式调度所述分类的查询请求;根据查询请求中的查表索引确定表项在动态随机访问存储器中所属的存储体和确定表项在所属存储体的存储地址,并根据所述存储地址查询表项。
4.根据权利要求3所述的查询方法,其特征在于,所述查表索引的部分位为存储体选择位;所述根据查询请求中的查表索引确定表项在动态随机访问存储器中所属的存储体和确定表项在所属存储体的存储地址具体为根据查询请求中的查表索引的所述存储体选择位的数值确定表项在动态随机访问存储器中所属的存储体;根据所述查询请求中的查表索引中除所述存储体选择位的剩余位的全部或部分数值确定表项在所属存储体的存储地址。
5.根据权利要求3或4所述的查询方法,其特征在于所述将表项查询请求分类具体指,根据查询请求中的查表索引将查询请求存入与存储体或与存储体组对应的队列。
6.根据权利要求3或4所述的查询方法,其特征在于在所述将表项查询请求分类存储之前进一步包括,为所述查询请求分配序号;在所述根据存储地址查询表项之后进一步包括,根据查询请求的所述序号将查询表项得到的结果进行排序。
7.根据权利要求5所述的查询方法,其特征在于若查询请求是存入与存储体组对应的队列时,并且该存储体组内的存储体重复存储同样表项,则所述按轮询方式调度所述分类的查询请求具体为将该队列中的查询请求轮流分发到存储体组内各存储体。
8.根据权利要求3所述的查询方法,其特征在于,所述根据存储地址查询表项之后进一步包括将查询表项得到的查询结果存入高速缓存器;所述将表项查询请求分类存储之前进一步包括根据查询请求中的查表索引在高速缓存器查询表项,并确定没有查询到相应表项。
9.一种存储控制器,其特征在于用于选择不同表项在动态随机访问存储器中存储的不同存储体,并将所述不同表项配置到所述选择的存储体。
10.根据权利要求9所述的存储控制器,其特征在于,进一步包括存储体选择单元,用于根据表项索引的存储体选择位的数值选择不同表项在动态随机访问存储器中存储的不同存储体;表项配置单元,用于根据表项索引中除所述存储体选择位的剩余位的全部或部分数值确定所述不同表项在所述选择的存储体中的存储地址,并按照所述存储地址进行存储。
11.一种查询系统,其特征在于,包括调度单元,用于将接收的查询请求分类存储后按轮询方式调度所述分类的查询请求;查询单元,用于对动态随机访问存储器存储的表项进行查询,不同表项存储在动态随机访问存储器的不同存储体中,所述查询单元根据调度单元调度的所述查询请求中的查表索引确定表项在所述动态随机访问存储器中所属的存储体和确定表项在所属存储体的存储地址,并根据所述存储地址在所述动态随机访问存储器的存储体中查询表项。
12.根据权利要求11所述的查询系统,其特征在于,进一步包括序号分配单元,用于为所述接收的查询请求分配序号后传送给所述调度单元进行分类存储;排序单元,用于获取所述查询单元的查询结果后根据所述序号分配单元为查询请求分配的所述序号进行排序。
13.根据权利要求11或12所述的查询系统,其特征在于,进一步包括高速缓存器,用于存储所述查询单元的查询结果;预查单元,用于接收查询请求后根据所述查询请求中的查表索引在高速缓存器查询表项,若没有查询到相应表项,将查询请求传送给所述调度单元。
全文摘要
本发明实施例公开一种存储方法,包括选择不同表项在动态随机访问存储器中存储的不同存储体;将所述不同表项存储到所述选择的动态随机访问存储器的存储体。基于所述存储方法,本发明实施例提供一种查询方法,包括将表项的查询请求分类存储;按轮询方式调度所述分类的查询请求;根据查询请求中的查表索引确定表项在动态随机访问存储器中所属的存储体和确定表项在所属存储体的存储地址,并根据所述存储地址查询表项。相应的,本发明实施例还提供一种存储控制器和查询系统。本发明实施例提供的技术方案能够节省存储空间,减少表项存储所花费的时间,并提高存储空间利用率。
文档编号G06F17/30GK101021814SQ20071008751
公开日2007年8月22日 申请日期2007年3月16日 优先权日2007年3月16日
发明者杨雄 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1