CN1316390C - 用树状分段改善树搜索性能和存储器带宽的方法和系统 - Google Patents
用树状分段改善树搜索性能和存储器带宽的方法和系统 Download PDFInfo
- Publication number
- CN1316390C CN1316390C CNB031277411A CN03127741A CN1316390C CN 1316390 C CN1316390 C CN 1316390C CN B031277411 A CNB031277411 A CN B031277411A CN 03127741 A CN03127741 A CN 03127741A CN 1316390 C CN1316390 C CN 1316390C
- Authority
- CN
- China
- Prior art keywords
- tree
- shaped
- segmentation
- hash
- segmentations
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2255—Hash tables
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2246—Trees, e.g. B+trees
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99941—Database schema or data structure
- Y10S707/99942—Manipulating data structure, e.g. compression, compaction, compilation
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99941—Database schema or data structure
- Y10S707/99943—Generating database or data structure, e.g. via user interface
Abstract
公开了一种用于改善表查找的性能的数据结构和对应搜索方法。使用具有指向树状分段的散列表条目的散列表来利用该表的数据结构,所述树状分段在主存储器内相邻并可被有效载入本地数据存储或高速缓冲存储器。树状分段的叶节点包含数据记录的标记,或另一树状分段的标记。采用该数据结构和对应搜索算法来基于一个网际路由表的最长前缀匹配而进行搜索。
Description
技术领域
该发明一般涉及存储器树搜索,并特别涉及采用散列表条目(hash tableentries)和与其相关的树状分段(tree fragments)。
背景技术
在现代微处理器系统中,主存储器的速度趋于要比处理器核心的速度慢很多。一个与高频微处理器相连的典型DRAM主存储装置需要花费几百个处理器周期来存取。在未来,由于存储器速度与处理器速度不匹配而导致的问题很可能会变得更加尖锐。
这些问题的一个主要原因在于存储器存取等待时间。例如,向主存储器发布LOAD(装载)指令和从主存储器实际传送第一个字之间的时间通常很长,并且会在处理器核心上施加有许多停止周期。然而,一旦第一个字被发送,后续的字会很快地被传送。这种连续字的快速传送一般被称为“脉冲串模式作用(burst-mode effect)”。
典型地,微处理器系统采用本地存储,例如高速缓冲存储器,来利用脉冲串模式作用。这是通过如下的操作发生的,即:从主存储器传送完整的高速缓冲存储器线(line)(即当替换本地存储或高速缓冲存储器数据时,将被载入的最小数目的字节),并在本地存储中存储该整个高速缓冲存储器线,而不是仅仅从主存储器传送直接请求的较小的字。
如果即将被读取的可能数据有足够大的、具有现在被请求的数据的特殊位置(即,被存储在主存储器的足够大的实质上邻近的区域中的数据),并且也因此被存储在本地存储中,改善了存储器效率。这是典型地是因为可能需要的存储器信息已被存进更快的高速缓冲存储器中,因而减少了存储器存取次数。如果微处理器系统是存储器结构的特色,也能实现同样的效果,由此,微处理器系统将存储器块从主存储器传送到本地存储。本地存储可与高速缓冲存储器类似,例如,软件管理的高速缓冲存储器。本地存储可以是存储器脉冲串存取大小、总线传送大小及高速缓冲存储器线的大小的函数。
在传统技术中,存在通过高速缓冲存储器硬件或软件管理在高速缓冲存储器内实现树搜索的方法。在例如二叉树的判决树的搜索中,在到达判决节点后,当遍历树时,适当的树节点的子集被存取。该处理一直持续直到达到包含所需数据的合适的叶节点。在每个树节点存取期间,仅有几个字节被读取。
传统树搜索实现在每个树节点中使用间接指针,以参考父节点和子节点,并且树节点通常分布在整个地址空间。这些方法至少有两个主要缺点。
现有的树搜索实现的第一个缺点是,因为节点,无论是判决节点还是叶节点,典型分布在整个地址空间,所以需要执行对任意存储器位置的多次存储器存取。空间位置少或不存在,则因为需要的信息被存储中非邻近的区域,将导致微处理器等待存储器访问的长时间的等待。第二个缺点是树节点中的间接指针消耗存储器。
因此,需要采用具有在高速缓冲存储器中进行存取的存储器的树节点,克服现有的存储器存取方法的缺点。
发明内容
本发明提供一种对使用散列表和多个树状分段的数据结构进行初始化的方法,包括:创建该散列表;创建该多个树状分段;该多个树状分段的每一个树状分段在存储器片段中被相邻地存储;对应于每一树状分段散列至少一个表条目,由此创建至少一个散列关键字和至少一个散列表条目;和将所述每一个树状分段分配给至少一个散列表条目。
本发明还提供一种通过使用数据树存取存储器的系统,包括:主存储器;本地存储器,与主存储器功能性相连;和多个树状分段,存储在主存储器中,其中通过实质上一个存储器存取还可将该树状分段载入该本地存储器,其中,该多个树状分段的每个树状分段的全部节点在主存储器片段中被相邻地存储。
本发明还提供一种用于改善叶节点存储器存取和存储的性能的方法,包括:从包含多个叶节点和判决节点的数据树中确定多个树状分段,该被确定的多个树状分段包含一个判决节点和多个叶节点;散列与多个表条目相关的标记,由此创建散列表条目;分配第一个树状分段给至少一个散列表条目;和分配第二个树状分段给第一个树状分段中的至少一个叶节点,其中,该多个树状分段的每个树状分段的全部节点在存储器片段中被相邻地存储。
本发明还提供一种改善叶节点存储器存取和存储的性能的方法,包括:根据包含多个叶节点的数据树创建多个树状分段;作为存储装置的输入大小的函数,该多个树状分段的每个树状分段的全部节点在存储器片段中被相邻地存储;散列与多个表条目相关的标记,由此创建散列表条目;分配树状分段给至少一个散列表条目;选择该树状分段的叶节点;和分配第二树状分段给该选定的叶节点。
本发明还提供一种对使用散列表和多个树状分段进行初始化的设备,包括:创建该散列表的装置;创建该多个树状分段的装置;将该多个树状分段的每一个树状分段在存储器片段中相邻地存储的装置;对应于每一树状分段散列至少一个表条目,由此创建至少一个散列关键字和至少一个散列表条目的装置;和将所述每一个树状分段分配给至少一个散列表条目的装置。
在本发明中,使用树状分段存储区并结合表查找方案。从数据树确定多个树状分段。所确定的多个树状分段的每一成员至少有一个判决节点和一个叶节点。每个树状分段被存储在它自己的邻近的存储器分段中。至少一个与每一树状分段相对应的表条目被散列,因此可处理至少一个散列关键字和至少一个散列表条目。在一个方面,该数据结构被最有利地利用以实现前缀搜索算法。
附图说明
为了更完整地了解本发明及其优点,下面结合附图进行具体描述,其中:
图1示出了应用子树分段的微处理系统,包括微处理器、主存储器、主存储器总线和本地存储;
图2示出了二叉树的分段存储区;
图3A示出了应用树状分段初始化数据结构的方法;
图3B示出了用使用树状分段的数据结构执行搜索的方法;
图4A示出了存储器中组织的子树分段的布局图;
图4B示出了对于最长前缀匹配(LPM)的子树分段的应用程序的首标;
图5示出了判决节点的格式的例子;
图6示出了Patricia(帕特丽夏)树;和
图7示出了存储器中树状分段的布局图的例子。
具体实施方式
在以下讨论中,为了彻底地了解本发明,提出了大量的具体细节。然而,本领域普通技术人员应理解在没有特定细节的情况下也可实现本发明。在其他例子中,已用示意图或方框图形式描述了公知部件,以防本发明被掩盖在不必要的细节中。另外,大部分与网络通信、电磁信号技术等相关的细节已被省略,因为这些细节对全面理解本发明并不是必要的,并且对于本领域普通技术人员而言是已知的。
还要注意,除非另行说明,在此描述的所有功能可以硬件或软件或二者的某种结合而执行。然而,在优选实施例中,如果不指明其他方式,则根据比如计算机程序代码的代码、软件和/或被编码以执行这些功能的集成电路,由例如计算机或电子数据处理器的处理器执行这些功能。在其他实施例中,例如软盘或光盘或其它存储介质的计算机程序产品上/中包含该计算机程序。
参照图1,所示出的是示例的微处理系统100。系统100包括微处理器110、主存储器控制总线115、主存储器120、存储器数据总线125、本地存储130、和本地存储总线135。典型地,微处理器进一步功能性地与因特网总线相连,该因特网总线与因特网或其它的连网环境相连。
一般而言,在系统100中,搜索树,例如二叉搜索树,被存储在主存储器120中。搜索树被分成树状分段,如图2中所示。每一个树状分段代表搜索树的子集,并且其自己是一个树。根据图1,属于子树分段的判决节点和叶节点的所有节点被典型存储在主存储器120的连续存储位置(即,在两个分离块中)。在一个实施例中,所有树状分段同样大小。
在系统100中,树状分段通过存储器数据总线125并通过一个脉冲串存储器存取步骤被载入本地存储130中。通过存储器数据总线125被载入的子树分段的大小受限于存储器存取间隔尺寸(granularity)的最小尺寸。存储器存取间隔尺寸通常定义为在一次载入并行数据比特传送中从主存储器传送的最小数据量。
在一个实施例中,分段的大小(即,节点的总数)可由存储器存取间隔尺寸和判决节点的尺寸的函数允许尽可能大。典型地,2n-1个节点的数量产生了平衡的二叉树的平衡划分。一般而言,最大的可允许节点数可由以下公式计算:
1.节点数=((存储器存取间隔尺寸)-(分段首标大小))/(节点大小)
微处理器110可通过采用散列函数、散列关键字和散列表条目来确定所需信息可能位于哪个子树分段。在一个实施例中,散列表是1∶1散列表。换言之,在散列表中的条目和结果值之间有唯一的1∶1的对应关系。微处理器110然后通过主存储器控制总线115,从主存储器120请求信息,并以一个载入序列将合适的子树分段载入到本地存储130中。在被载入到本地存储130中之后,子树分段由微处理器110进行遍历(搜索)。在另一实施例中,当被载入的子树分段有高级空间位置时,本地存储130有多个所需叶节点存储于其中。因此,在一个树搜索中本地存储130中的线被多次存取,由此当微处理器110存取存储器值时节省了相当多的时间。如果本地存储构成为高速缓冲存储器,与搜索树状分段相关的存储器存取导致了“高速缓冲存储器命中(hit)”。即,硬件检测到所请求的存储器字在高速缓冲存储器中存在。在“软件管理”高速缓冲存储器的情况下,这种知识是编译程序的一部分。
在另外的实施例中,微处理器系统100包括存储器层级,在存储器层级的每个级中有不同级别的存取间隔尺寸。例如,处理器从本地存储130中读取单个字,但本地存储130仅能从第二个高速缓冲存储器中载入整个高速缓冲存储器线。然后第二个高速缓冲存储器以更大的间隔尺寸存取主存储器120、或第三个高速缓冲存储器。
现在转到图2,示出的是二叉树200的分段存储区的例子。在表260中的指针240指向二叉树200的根节点,它包括树状分段210、220和230。
二叉树200所描述的实施例可用来发现最长的前缀或LPM(最长前缀匹配)。其中出现LPM的上下文利用网际协议(IP)转发中的路由表查找。典型地,在IP转发中,基于IP数据包的目的地址做出路由判决。典型地,采用LPM来发现表中与目的地址的前n比特相匹配的长度n的最长比特图案(pattern)。尽管其它树类型也包括在本发明的范围内,但在本实施例中,二叉树是Patricia树,它包括有效的LPM。Patricia树与表查找相结合。有一个表有65536个条目,表中的一个条目匹配32比特的IPv4的IP地址的前16比特。
查找表的条目包括以下三部分之一:1)指向Patricia树的指针,即,与二叉树200相似地分段;2)指向路由信息本身的指针(在这一情况下,最长的前缀是16比特长);和3)无。在第三种情况下,对所考虑的IP地址最长的前缀可能比16比特短,它使得有必要搜索另一个包含短于16比特的前缀的Patricia树。这个Patricia树也可以被分段。
在图2中,示出了与IP地址的前16比特相对应的具有65536个条目的表。这个表是具有1∶1映射的散列表最简单的形式。本领域普通技术人员应理解,也可以在本发明的范围之内采用其它的散列表。
一般来说,本发明树状分段的一个重要属性是它的所有节点被存储在主存储器的连续存储位置中;也就是,树状分段作为块被存储。在这个例子中,将使用以下段落中所描述的树状分段格式。本领域普通技术人员应理解这种分段格式可以是任意的,成功对树进行分段的唯一条件是树状分段是以块来存储的。
现在参考图3A和3B,公开了方法300,用于使用给定初始表的子树分段初始化数据结构(图3A)和相应的搜索算法(图3B)。
首先参考图3A,数据结构被如下所示初始化。在步骤305中,判定合适的散列函数,并初始化对应散列表至空状态。在步骤310中,通过首先计算散列关键字,从输入搜索数据表中去除一条目,并将该条目添加至新数据结构。在步骤315中,检查该散列表条目。步骤320中,如果散列表条目为空,它被更新为指向存储器中新的(子树)块。如果散列表条目不是空的,在步骤325中,将元素(element)加入对应的树状分段中。在步骤330中,用如下公式检查树状分段存储区的大小:
分段大小=((存储器存取间隔尺寸)-(分段首标大小))/节点大小。
在步骤335中,如果树状分段超过存储器存取间隔尺寸的大小,树状分段将被细分为更小的树状分段。在步骤340中,初始数据结构被再检查。如果它是空的,初始化完成。如果不为空,算法返回步骤310。在步骤345中,该方法完成。
接下来参考图3B,对应搜索算法遵循如下步骤。在步骤350中,搜索关键字被散列,以判定散列表的索引。在步骤355中,从存储器载入散列表中的对应条目。一般地讲,这将需要存取主存储器。在步骤360中,检查散列表条目。如果该条目为空,在步骤365中表示搜索不成功。在另外的实施例中,若可用,可以搜索备份数据结构。如果该条目有效,在步骤370中载入该表示块。一般地,这将需要第二次存取主存储器。
在步骤375中,检查该块。如果它是例如Patricia树的树状分段,则搜索它直到在步骤380中到达叶节点。如果该叶节点又表示一个树状分段,则从步骤370重复该算法。在另外的实施例中,如果该树状分段包括例如分段首标的另一个结构,则检索数据记录的位置。在步骤385中,从存储器中检索该数据记录。一般地,这会需要第三次存取主存储器。如果遍历多个树状分段,则这个步骤需要更多次检索。
在一个实施例中,在步骤390中,将数据记录的关键字与搜索关键字相比较。在步骤390中,如果这些关键字与搜索相匹配,则表示成功。
在一个实施例中,被分段的树的每个分段具有相同的大小。然而,本领域普通技术人员将知道允许对单独尺寸的树状分段进行简单修改,例如,通过在后述分段首标中指示该分段的大小。
在图4A中,图2的树状分段被存入主存储器中。二叉树分段220有三个判决节点和四个叶节点。判决节点作为块(或阵列)410被存在主存储器中。使用该布局,可使用简单的代数表达式由树状分段的基地址来判定判决节点的左和右后代节点的地址。在一个实施例中,没有必要在每个判决节点中存储左和右后代节点的指针,从而节省存储器。在这个实施例中,如果判决节点2不存在,并且在判决节点2的位置有一个叶节点,则如阵列430中所示,判决节点2的块410中的空间将会是空的和未用的;即如果判决节点不存在,它们仍消耗存储器。
在图4A中,叶节点不与判决节点一起存储。相反,当搜索算法遍历树状分段并最终判定合适的叶节点时,它确定该叶节点的索引号(这里1-4),而不是其在主存储器中的地址。该叶节点可以是再次需要由搜索算法遍历的树状分段,也可以是最终路由信息。树的叶节点以与判决节点相似的方式作为在连续存储位置的块420而存储于主存储器中。在另外的实施例中,块420可以是阵列。所有叶节点在大小上一致,但它们的大小可能与判决节点的大小不同。如果叶节点不存在,则块(或阵列)420中的对应空间将不是空的和未周的,但会被下一个存在的叶节点所占据。换言之,在块420中没有空余空间。根据仅知的叶节点的索引号(这里1-4),该算法需要判定叶节点的地址,如在图4B中所解释的那样。
现在转到图4B,示出的是树状分段首标450的一个实施例。在二叉树200中,每个树状分段210、220、230等在存储器中作为相邻块存储。每一树状分段的前面为树状分段首标450。该树状分段首标450包括基地址指针460、叶节点大小的标记470、和占用数叶的比特掩码480。典型地,基地址指针460表示存储器中子树分段的第一个树叶的位置。
叶节点470包括由树叶结构所占据的存储器的大小。在一个实施例中,该大小为2次幂,可被表达为最多16个有效数字的二进制数。然而,本领域普通技术人员应知道除2次幂之外的其它大小也包括在本发明的范围之中。可以通过叶索引与叶大小相乘并将其加到该基地址,来计算在主存储器120中或本地存储130中的存储器中的树叶的地址及位置。
如图4B所示,分段首标450被用于更有效的运行。分段首标的元素460存储叶节点块420的基地址。元素470存储叶节点的大小。最后,元素480包括比特掩码。比特掩码480表示树状分段的叶节点中哪一个实际存在而哪一个不存在。比特掩码中的比特与可能的叶节点对应,如果叶节点存在,其被设为″1″,如果叶节点不存在,其被设为″0″。例如,具有4个叶节点的树状分段210将有长度为4比特的比特掩码,因为所有叶节点存在而将所有比特设为″1″。例如,如果叶节点3不存在,则在比特掩码中的比特3将被清除(设为″0″)。
这个分段首标允许更有效的计算叶节点地址。例如,如果该搜索算法将叶节点i确定为结果,则清除比特掩码中包括上述i的所有比特。随后,例如使用可从许多现代微处理器结构发现的“一一计数(count ones)”指令,而计数得到的比特掩码中的比特数目。该结果可以与叶节点大小470相乘,然后加到基地址460,以得到叶节点的地址。然后,叶节点被从主存储器中载入到本地存储。如果它是另一种树状分段,则它象以前的树状分段那样被遍历。
在一个实施例中,单个比特455可用作分段首标中的可选元素。一般而言,树状分段的叶节点可以是另一个树状分段或一个原始的、未分段树(即,在IP例子中的路由信息)的叶节点。表条目240可以指向这两种类型中的任一个。比特455位于分段首标中,以可用于分辨这两种类型。如果该比特被设为″1″,则包含树状分段的分段首标跟随比特455。如果该比特是′0′,则没有分段首标和树状分段跟随比特455,但相反在这些存储器位置可发现路由信息。
在如何构建首标方面有几个自由度。在一个实施例中,如果叶节点大小470是2次幂,则简单的移位操作可实现叶节点地址计算中的乘法步骤。然而,该叶节点大小不需要以16比特编码。相反,如果能以这些比特编码可能的叶节点大小,则更少的比特是足够的。例如,如果叶节点大小是1024比特或2048比特,则因为1比特足够分辨两种不同大小,所以字段470仅需要1比特宽。因此,如果仅有一个可能的叶节点大小,则字段470可被省略。
在第二个实施例中,比特455可被省略,并可由其它方法实现其目的。例如,为表示路由信息,地址460可全被设为零,或另一个不可能的值。而且可使用类型字段515 resp.535(将在下面描述)来分辨它们的子节点的类型。然而,当使用515 resp 535时,需要找到方法来分辨表条目240所指向的目标的类型。然而,这可由表条目240中的类型字段(如1比特)来实现。
现在转向图5,描述了判决节点的格式的例子。显示了判决节点的两个例子,以4比特节点和8比特节点的形式标注为510和530。然而,明显的是这些仅为例子,有许多可能的判决节点形式。4比特节点适于IPv4,然而8比特码可更适于IPv6。两个节点分别共同具有类型字段515、535和NBT字段520和540。NBT字段表示“要测试的下一个比特”,代表IP地址中下一个比特的偏移量,以在该判决节点中作出判决。本领域普通技术人员应知道NBT字段如何用于LPM。判决节点530另外有一个未用比特545。
类型字段允许编码判决节点的四种不同类型,但对于具体的应用,可期望使用更多或更少的类型。以下四种类型对于给定应用具有优点:
00:判决节点有两个子节点,它们本身也是判决节点。
01:判决节点有两个子节点,左边的是判决节点,右边的是叶节点。
10:判决节点有两个子节点,左边的是叶节点,右边的是判决节点。
11:判决节点有两子节点,均为叶节点。
现在转向图6,将以例子来阐明树搜索。这个例子并非限制,而仅描述了应用本发明的一种可能方式。
在一个实施例中,存在一组IP地址前缀:
1. 0010 0101 1100 1111 010
2.0010 0101 1100 1111 110
3.0010 0101 1100 1111 1101 1
4.0010 0101 1100 1111 1101 0
5.0010 0101 1100 1111 1101 01
所有这些前缀共用相同的前16比特。使用这些前缀的剩余3到6比特创建Patricia树,然后该树将被分段。指向第一分段的根的指针将被存储在65536条目表中的位置0010 0101 1100 11112=35CFH。
在图6中,具有与前缀之一匹配的目的地址的IP数据包占用的路由将被标为R1到R5,与前缀1到5相对应。由这组前缀创建Patricia树。此Patricia树被分段为两个树状分段600和650。如果该Patricia树是平衡的二叉树,这些分段将有7个判决节点和8个叶节点。
简要参考图7,该Patricia树是非平衡二叉树,它导致判决节点和叶节点的布局。树状分段600的判决节点作为块700被存储在主存储器中。该块以分段首标为起点,由树状分段600的判决节点跟随其后。由于平衡的二叉树将有7个判决节点,为7个判决节点分配存储器。与平衡二叉树相比,在树状分段600中消失的节点,将保持为空和未用。树状分段600的叶节点被作为块710存储在主存储器中。在该块中,第三个被存储的叶节点是树状分段650。余下的叶节点是路由信息R1到R3。所有这些叶节点大小相等。如果有必要,插入填充比特或填充字节以使它们大小相等。
树状分段650的判决节点被作为块750存储在主存储器中,它的叶节点作为块760。这两个块与块700和710结构相似。
再回到图6,该算法为具有目的地址0010 0101 1100 1111 1101 0100 11110000的IP数据包确定路由信息。在所示的实施例中,前16比特被用作散列关键字,以查找65536条目表中的对应条目。从主存储器载入由此条目(或与此条目相关的)指向的存储器块,并确定该载入的存储器块是树状分段。在图7所示的实施例中,该载入的存储器块是先前所述的存储器块700.
然后,应用算法的图3B的方法遍历这个树状分段,从IP地址剩余的16个比特中检测比特1、4和5。系统然后从存储器块710中载入树状分段的所确定的叶节点,所述存储器块710包括以存储器块770为形式的另一个树状分段650。在检测目的IP地址剩余16比特的比特6之后,叶节点665被确定为合适的树状分段叶节点。从存储器块760载入这个叶节点。系统的算法计算它不是新的树状分段,而是实际的路由信息。由于仅检测IP前缀比特的子集,因此必须将该完整前缀存入路由信息并根据该IP数据包的IP目的地址进行检测。如果匹配,则系统的算法已确定正确的路由信息并且可以转发该数据包。如果不匹配,图3B的方法会采取进一步行动,比如在专用于短前缀的分离Patricia树中搜索比16比特短的前缀匹配。
可以理解的是本发明可有多种形式和实施例。因此,在不脱离本发明的精神或范围的情况下,可作出各种变形。
已经通过参考特定的优选实施例描述了本发明,需要注意的是所公开的实施例仅为示例目的而非实质上限制,并且在前述公开中预期了宽范围的变更、变形、变化、和替换,在某些例子中,可应用本发明的某些特点而无需相应使用其他特点。基于对优选实施例的前述说明,本领域普通技术人员应明白可做出多种变更和变形。因此,应广泛分析所附权利要求,并在某种意义上与本发明的范围一致。
Claims (35)
1.一种对使用散列表和多个树状分段的数据结构进行初始化的方法,包括:
创建该散列表;
创建该多个树状分段;
该多个树状分段的每一个树状分段在存储器片段中被相邻地存储;
对应于每一树状分段散列至少一个表条目,由此创建至少一个散列关键字和至少一个散列表条目;和
将所述每一个树状分段分配给至少一个散列表条目。
2.根据权利要求1的方法,还包括使用该数据结构实现树搜索。
3.根据权利要求1的方法,其特征在于所述创建散列表的步骤还包括:建立一对一标识函数的散列表。
4.根据权利要求1的方法,还包括使用该数据结构以执行前缀搜索。
5.根据权利要求4的方法,还包括通过使用该前缀搜索转发网际协议数据包。
6.根据权利要求1的方法,其特征在于所述创建多个树状分段的步骤还包括:创建多个树状分段的每一个树状分段的一个或更多叶节点。
7.根据权利要求6的方法,还包括创建多个树状分段的每一个树状分段的一个或多个判决节点。
8.根据权利要求1的方法,其特征在于当与该至少一个散列关键字相关的树状分段有一个或没有表条目时,访问分离的表。
9.根据权利要求5或6的方法,其特征在于所述分配步骤还包括:将网际协议路由信息分配给该多个树状分段的每一个树状分段的叶节点。
10.根据权利要求6的方法,还包括在存储步骤之后,定位该多个树状分段的每个树状分段中的叶节点,作为该叶节点的相关存储器地址的函数。
11.根据权利要求6的方法,还包括在存储步骤之后,通过使用多个树状分段的每个树状分段对应的分段首标访问并读取该树状分段的叶节点。
12.根据权利要求1的方法,其特征在于存储树状分段的步骤包括使用一个载入序列将合适的树状分段载入到一个本地存储器。
13.根据权利要求6的方法,其特征在于存储树状分段的步骤还包括:在一个本地存储器中存储多个树状分段的每个树状分段的多个叶节点。
14.根据权利要求1的方法,其特征在于存储树状分段的步骤中,树状分段的大小是本地存储大小的函数,其中从由存储器脉冲串存取大小、总线传送大小和高速缓冲存储器线大小组成的集合中选择该本地存储大小。
15.根据权利要求1的方法,其特征在于存储树状分段的步骤进一步包括:使用一个分段首标来计算多个树状分段的每个树状分段的叶节点地址,该分段首标包括基地址指针、判决节点的大小的标记、和表示所占有的叶节点的比特掩码。
16.根据权利要求11的方法,访问并读取该树状分段的叶节点的步骤还包括:应用″一一计数″指令以计算多个树状分段的每个树状分段的叶节点最终存储器位置。
17.根据权利要求1的方法,其特征在于创建树状分段的步骤进一步包括:创建二叉树判决节点。
18.根据权利要求1的方法,其特征在于创建树状分段的步骤中的树状分段为Patricia树状分段。
19.根据权利要求9的方法,其特征在于所述分配步骤将每一个在叶节点包含网际协议路由信息的树状分段分配给至少一个散列表条目。
20.根据权利要求1的方法,分配步骤之后还包括步骤:通过遍历树状分段来搜索数据记录。
21.一种通过使用数据树存取存储器的系统,包括:
主存储器;
本地存储器,与主存储器功能性相连;和
多个树状分段,存储在主存储器中,其中通过一个存储器的存取还可将该树状分段载入该本地存储器,
其特征在于,该多个树状分段的每个树状分段的全部节点在主存储器片段中被相邻地存储。
22.根据权利要求21的系统,其特征在于该本地存储器包括软件。
23.根据权利要求21的系统,其特征在于该本地存储器包括硬件。
24.根据权利要求21的系统,其特征在于该多个树状分段的每个树状分段的多个叶节点包括网络目的地址。
25.根据权利要求24的系统,其特征在于该网络目的地址用于网际协议。
26.根据权利要求21的系统,其特征在于该树状分段是可遍历的。
27.一种用于改善存储器存取和存储的性能的方法,包括:
从包含多个叶节点和判决节点的数据树中确定多个树状分段,该被确定的多个树状分段包含一个判决节点和多个叶节点;
散列与多个表条目相关的标记,由此创建散列表条目;
给所述多个树状分段中的第一个树状分段分配至少一个散列表条目;和
给所述多个树状分段中的第二个树状分段分配第一个树状分段中的至少一个叶节点,
其特征在于,该多个树状分段的每个树状分段的全部节点在存储器片段中被相邻地存储。
28.根据权利要求27的方法,其特征在于该散列与多个表条目相关的标记步骤包括:散列含有存储器地址信息的标记。
29.根据权利要求27的方法,其特征在于该散列步骤还创建多个散列关键字,每个散列关键字与树状分段具有一一对应关系。
30.根据权利要求27的方法,其特征在于该散列步骤还创建多个散列关键字,其中一个或多个散列关键字与所述第一树状分段的底层的多个数据节点具有一对多的对应关系。
31.根据权利要求27的方法,还包括步骤:访问该树状分段。
32.一种改善存储器存取和存储的性能的方法,包括:
根据包含多个叶节点的数据树创建多个树状分段;
作为存储装置的输入大小的函数,该多个树状分段的每个树状分段的全部节点在存储器片段中被相邻地存储;
散列与多个表条目相关的标记,由此创建散列表条目;
给该多个树状分段的第一个树状分段分配至少一个散列表条目;
选择该树状分段的叶节点;和
分配该多个树状分段的第二树状分段给该选定的叶节点。
33.根据权利要求32的方法,其特征在于该分配该多个树状分段的第二树状分段给该选定的叶节点的步骤之后还包括:使用散列函数来确定所需的数据记录位于哪个树状分段。
34.根据权利要求32的方法,其中还包括步骤:通过遍历树状分段来搜索数据纪录。
35.一种对使用散列表和多个树状分段进行初始化的设备,包括:
创建该散列表的装置;
创建该多个树状分段的装置;
将该多个树状分段的每一个树状分段在存储器片段中相邻地存储的装置;
对应于每一树状分段散列至少一个表条目,由此创建至少一个散列关键字和至少一个散列表条目的装置;和
将所述每一个树状分段分配给至少一个散列表条目的装置。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/313,683 US7146371B2 (en) | 2002-12-05 | 2002-12-05 | Performance and memory bandwidth utilization for tree searches using tree fragmentation |
US10/313,683 | 2002-12-05 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1504912A CN1504912A (zh) | 2004-06-16 |
CN1316390C true CN1316390C (zh) | 2007-05-16 |
Family
ID=32468315
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB031277411A Expired - Fee Related CN1316390C (zh) | 2002-12-05 | 2003-08-13 | 用树状分段改善树搜索性能和存储器带宽的方法和系统 |
Country Status (2)
Country | Link |
---|---|
US (1) | US7146371B2 (zh) |
CN (1) | CN1316390C (zh) |
Families Citing this family (39)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7990948B2 (en) * | 2003-08-15 | 2011-08-02 | Quintence Properties Kg, Llc | Serverless and switchless internet protocol telephony system and method |
US6956827B2 (en) * | 2003-08-15 | 2005-10-18 | Popular Telephony, Inc. | Distribution of identifiers in serverless networks |
US7424489B1 (en) * | 2004-01-23 | 2008-09-09 | At&T Corp. | Methods and apparatus for space efficient adaptive detection of multidimensional hierarchical heavy hitters |
US7437385B1 (en) * | 2004-01-23 | 2008-10-14 | At&T Corp. | Methods and apparatus for detection of hierarchical heavy hitters |
WO2006029508A1 (en) * | 2004-09-13 | 2006-03-23 | Solace Systems Inc. | Highly scalable subscription matching for a content routing network |
CN100373384C (zh) * | 2006-04-03 | 2008-03-05 | 西安理工大学 | 远程数据库的可靠下载与本地数据库的使用无冲突的方法 |
US7965297B2 (en) * | 2006-04-17 | 2011-06-21 | Microsoft Corporation | Perfect hashing of variably-sized data |
SE531557C2 (sv) * | 2006-10-20 | 2009-05-19 | Oricane Ab | Förfarande, klassificeringsanordning, datorprogramprodukt och system för att representera en del av n w-bit-intervall hörande till d-bit data i ett datakommunikationsnätverk |
WO2008048185A1 (en) | 2006-10-20 | 2008-04-24 | Oricane Ab | Method, device, computer program product and system for representing a partition of n w-bit intervals associated to d-bit data in a data communications network |
US9015145B2 (en) * | 2006-12-22 | 2015-04-21 | Singapore Technologies Dynamics Ptd Ltd. | Method and apparatus for automatic configuration of meta-heuristic algorithms in a problem solving environment |
DE102006061229A1 (de) * | 2006-12-22 | 2008-06-26 | Robert Bosch Gmbh | Verfahren zur Gliederung von blattorientierten Selektorbäumen mit räumlich ausgewogener Segmentierung und Einrichtung zur Durchführung des Verfahrens |
US8745082B2 (en) * | 2007-06-29 | 2014-06-03 | Alcatel Lucent | Methods and apparatus for evaluating XPath filters on fragmented and distributed XML documents |
US20090150632A1 (en) * | 2007-12-10 | 2009-06-11 | Computer Associates Think, Inc. | Directory and Methods of Use |
US20090254594A1 (en) * | 2008-04-02 | 2009-10-08 | Microsoft Corporation | Techniques to enhance database performance |
US7995504B2 (en) * | 2008-05-12 | 2011-08-09 | Microsoft Corporation | Locality-based routing table generation |
SE532996C2 (sv) * | 2008-10-03 | 2010-06-08 | Oricane Ab | Metod, anordning och datorprogramsprodukt för att representera den del av n-bitars intervall hörande till d-bitars data i ett datakommunikationsnät |
US8332624B2 (en) * | 2009-08-26 | 2012-12-11 | Nokia Corporation | Method and apparatus for encoding decision diagrams |
US20110055200A1 (en) * | 2009-08-26 | 2011-03-03 | Nokia Corporation | Method and apparatus for utilizing existing hash identifiers of decision diagrams |
US20110055221A1 (en) * | 2009-08-26 | 2011-03-03 | Sovio Sampo Juhani | Method and apparatus for obtaining decision diagrams from unknown hash identifiers |
US8447726B2 (en) | 2009-09-22 | 2013-05-21 | Emc Corporation | Performance improvement of a capacity optimized storage system including a determiner |
US8527546B2 (en) | 2010-11-25 | 2013-09-03 | International Business Machines Corporation | Generating a checkpoint image for use with an in-memory database |
CN102291324A (zh) * | 2011-06-28 | 2011-12-21 | 北京神州泰岳软件股份有限公司 | 高并发业务请求处理方法 |
US9155320B2 (en) * | 2011-07-06 | 2015-10-13 | International Business Machines Corporation | Prefix-based leaf node storage for database system |
US9348766B2 (en) | 2011-12-21 | 2016-05-24 | Intel Corporation | Balanced P-LRU tree for a “multiple of 3” number of ways cache |
US8970613B2 (en) * | 2012-06-06 | 2015-03-03 | Apple Inc. | Render tree caching |
CN102779189B (zh) * | 2012-06-30 | 2015-01-14 | 北京神州泰岳软件股份有限公司 | 一种表情解析的方法和系统 |
US8392428B1 (en) * | 2012-09-12 | 2013-03-05 | DSSD, Inc. | Method and system for hash fragment representation |
US20150363510A1 (en) * | 2013-01-31 | 2015-12-17 | Hewlett-Packard Development Company, L.P. | Indexed shaped graph creation |
US9356818B2 (en) * | 2013-10-30 | 2016-05-31 | Telefonaktiebolaget Lm Ericsson (Publ) | Method and computing device for packet classification |
CN104679854B (zh) * | 2015-02-15 | 2018-01-26 | 中国科学院计算技术研究所 | 路由表存储与查找方法 |
US20180074970A1 (en) * | 2016-09-09 | 2018-03-15 | Sap Se | Cache-Efficient Fragmentation of Data Structures |
US11354348B2 (en) * | 2017-06-29 | 2022-06-07 | Microsoft Technology Licensing, Llc | Optimized record placement in graph database |
US10635632B2 (en) | 2017-08-29 | 2020-04-28 | Cohesity, Inc. | Snapshot archive management |
US11321192B2 (en) | 2017-09-07 | 2022-05-03 | Cohesity, Inc. | Restoration of specified content from an archive |
US10719484B2 (en) | 2017-09-07 | 2020-07-21 | Cohesity, Inc. | Remotely mounted file system with stubs |
US11874805B2 (en) | 2017-09-07 | 2024-01-16 | Cohesity, Inc. | Remotely mounted file system with stubs |
KR102535828B1 (ko) * | 2018-02-06 | 2023-05-23 | 삼성전자주식회사 | 메모리 컨트롤러 및 상기 메모리 컨트롤러의 동작 방법 |
US11176631B1 (en) * | 2018-09-04 | 2021-11-16 | University Of South Florida | GPU-based parallel indexing for concurrent spatial query |
US11487701B2 (en) | 2020-09-24 | 2022-11-01 | Cohesity, Inc. | Incremental access requests for portions of files from a cloud archival storage tier |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5694593A (en) * | 1994-10-05 | 1997-12-02 | Northeastern University | Distributed computer database system and method |
JPH11161574A (ja) * | 1997-08-28 | 1999-06-18 | Lucent Technol Inc | 電子メールの匿名リメールとフィルタリングを提供するシステムおよび方法 |
WO2000005663A2 (en) * | 1998-07-24 | 2000-02-03 | Jarg Corporation | Distributed computer database system and method for performing object search |
CN1316696A (zh) * | 2000-04-06 | 2001-10-10 | 国际商业机器公司 | 用于网络处理器的全匹配搜索方法和设备 |
US6470333B1 (en) * | 1998-07-24 | 2002-10-22 | Jarg Corporation | Knowledge extraction system and method |
Family Cites Families (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4468728A (en) * | 1981-06-25 | 1984-08-28 | At&T Bell Laboratories | Data structure and search method for a data base management system |
JPS58201175A (ja) | 1982-05-20 | 1983-11-22 | Kokusai Denshin Denwa Co Ltd <Kdd> | 機械翻訳方式 |
US5371885A (en) | 1989-08-29 | 1994-12-06 | Microsoft Corporation | High performance file system |
US5202986A (en) | 1989-09-28 | 1993-04-13 | Bull Hn Information Systems Inc. | Prefix search tree partial key branching |
JPH0481616A (ja) | 1990-07-24 | 1992-03-16 | Mitsubishi Electric Corp | 故障診断装置 |
JP2616182B2 (ja) | 1990-08-29 | 1997-06-04 | 三菱電機株式会社 | データ処理装置 |
JPH05233720A (ja) * | 1992-02-20 | 1993-09-10 | Fujitsu Ltd | Dbにおけるデータベースアシスト方法 |
US5497485A (en) | 1993-05-21 | 1996-03-05 | Amalgamated Software Of North America, Inc. | Method and apparatus for implementing Q-trees |
CA2117846C (en) | 1993-10-20 | 2001-02-20 | Allen Reiter | Computer method and storage structure for storing and accessing multidimensional data |
US5710916A (en) | 1994-05-24 | 1998-01-20 | Panasonic Technologies, Inc. | Method and apparatus for similarity matching of handwritten data objects |
US5546390A (en) * | 1994-12-29 | 1996-08-13 | Storage Technology Corporation | Method and apparatus for radix decision packet processing |
US5829004A (en) | 1996-05-20 | 1998-10-27 | Au; Lawrence | Device for storage and retrieval of compact contiguous tree index records |
US5892513A (en) | 1996-06-07 | 1999-04-06 | Xerox Corporation | Intermediate nodes for connecting versioned subtrees in a document management system |
JPH1091797A (ja) | 1996-09-12 | 1998-04-10 | Hitachi Software Eng Co Ltd | 空間探索方法及びそれを実行するプログラムを備えた記憶媒体 |
US6246347B1 (en) | 1997-10-27 | 2001-06-12 | Philips Electronics North America Corporation | Controller for a variable length decoder |
US6233656B1 (en) | 1997-12-22 | 2001-05-15 | Lsi Logic Corporation | Bandwidth optimization cache |
US6396842B1 (en) * | 1998-04-30 | 2002-05-28 | 3Com Corporation | Method of searching using longest match based Randix Search Trie with variable length keys and having prefix capability |
US6067574A (en) * | 1998-05-18 | 2000-05-23 | Lucent Technologies Inc | High speed routing using compressed tree process |
GB9811574D0 (en) * | 1998-05-30 | 1998-07-29 | Ibm | Indexed file system and a method and a mechanism for accessing data records from such a system |
JP2001099921A (ja) | 1999-09-30 | 2001-04-13 | Mitsubishi Electric Corp | 並列多目標追尾装置 |
US6687815B1 (en) * | 2000-02-01 | 2004-02-03 | Sun Microsystems, Inc. | Method and apparatus for storing non-volatile configuration information |
-
2002
- 2002-12-05 US US10/313,683 patent/US7146371B2/en not_active Expired - Fee Related
-
2003
- 2003-08-13 CN CNB031277411A patent/CN1316390C/zh not_active Expired - Fee Related
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5694593A (en) * | 1994-10-05 | 1997-12-02 | Northeastern University | Distributed computer database system and method |
JPH11161574A (ja) * | 1997-08-28 | 1999-06-18 | Lucent Technol Inc | 電子メールの匿名リメールとフィルタリングを提供するシステムおよび方法 |
WO2000005663A2 (en) * | 1998-07-24 | 2000-02-03 | Jarg Corporation | Distributed computer database system and method for performing object search |
US6470333B1 (en) * | 1998-07-24 | 2002-10-22 | Jarg Corporation | Knowledge extraction system and method |
CN1316696A (zh) * | 2000-04-06 | 2001-10-10 | 国际商业机器公司 | 用于网络处理器的全匹配搜索方法和设备 |
Also Published As
Publication number | Publication date |
---|---|
US7146371B2 (en) | 2006-12-05 |
US20040111420A1 (en) | 2004-06-10 |
CN1504912A (zh) | 2004-06-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1316390C (zh) | 用树状分段改善树搜索性能和存储器带宽的方法和系统 | |
CN100450073C (zh) | 在基于硬件的包交换中用于存储器有效的快速vlan查找和插入的方法和设备 | |
US6434144B1 (en) | Multi-level table lookup | |
CN100444157C (zh) | 用于低存储器开销数据库的方法和设备 | |
CN102971732B (zh) | 键/值存储器的集成分级查询处理的系统结构 | |
US6691124B2 (en) | Compact data structures for pipelined message forwarding lookups | |
US6553370B1 (en) | Flexible search engine having sorted binary search tree for perfect match | |
CN100465947C (zh) | 用于产生和使用改进的树形位图数据结构的方法和装置 | |
CN100401425C (zh) | 用于在按内容寻址的存储器中执行可变宽度搜索的电路和方法 | |
CN1655533B (zh) | 基于最长前缀匹配算法的过滤器 | |
CN100550847C (zh) | 一种解决Hash冲突的方法及装置 | |
CN101577662B (zh) | 一种基于树形数据结构的最长前缀匹配方法和装置 | |
US20140188885A1 (en) | Utilization and Power Efficient Hashing | |
US20070136331A1 (en) | Storage-efficient and collision-free hash-based packet processing architecture and method | |
CN101515298A (zh) | 基于树形数据结构节点的插入的方法和存储装置 | |
CN104115472A (zh) | 用于内容导向网络中可扩展路由的方法 | |
CN101655861A (zh) | 基于双计数布鲁姆过滤器的哈希方法和哈希装置 | |
JP2001290718A (ja) | ルータにおけるキャッシュテーブル管理装置およびプログラム記録媒体 | |
CN106815267A (zh) | 数据存储方法和装置 | |
CN104426770A (zh) | 路由查找方法及装置、B-Tree树结构的构建方法 | |
CN101222232A (zh) | 创建用于数据压缩的存储器内部实体字典的方法和系统 | |
CN103051543A (zh) | 一种路由前缀的处理、查找、增加及删除方法 | |
CN101286935A (zh) | 一种基于ip地址范围的路由查找方法 | |
JP2000324172A (ja) | アドレスに関するプレフィクスの格納方法 | |
US6917954B2 (en) | Load balancing in IP address lookup |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20070516 Termination date: 20100813 |