辅助网络处理器的散列制造技术

技术编号:2826245 阅读:222 留言:0更新日期:2012-04-11 18:40
一种具有用于使得资源单元能够接收请求和关联数据的请求接口的资源单元。该资源单元还具有用于产生所述关联数据的散列的散列引擎,用于产生模数结果的模引擎,用于执行存储器读取的读取引擎,和用于使得该设备能够返回结果的结果接口。

【技术实现步骤摘要】
【国外来华专利技术】
技术介绍
随着越来越多地使用基于分组的传输,许多诸如交换机和路由器之类的网络设备现使用网络处理器。网络处理器可以被认为是具有用于增强和/或优化网络内的分组处理的特定特征或架构的通用处理器。这些处理器通常适于针对它们的分组处理功能进行更灵活并且更容易的编程。网络处理器的许多工作涉及诸如通过网络设备访问特定数据流的数据结构之类的行为。它们还可以确定一组并行接口的哪些接口应该接收来自特定输入的或对应于特定流的分组。例如,分组进入网络设备,然后处理器需要确定该分组属于哪个流。这涉及诸如分组的源地址、目的地址等之类的信息集群。该信息集群被用于访问静态或动态的每个流的状态和其他信息,例如与该分组的流有关的网络设备内的任何实体的输入接口属性等的表。将该信息集群减小到更易于管理的大小有益于加速对这样的信息的访问,即被需要用于以它的方式路由分组的信息。例如,可将十个或更多个字节的源地址、目的地址和协议信息简化为三个字节的键,该三个字节的键可用于访问该特定流的状态信息。通常通过使用散列和模函数来完成该简化,其中通过以表的大小为模进一步简化信息的散列,并且然后将其用作该表的访问键。然而,散列,尤其是将数据充分随机地分布在期望的地址空间的高质量散列,可能是非常耗时的,并且或者需要将增大成本的更多电路,或者需要将降低性能的更多处理器周期。此外,许多网络处理器可能不具有用于执行散列结果的模简化的除法单元。通常对于硬件实现而言除法是高成本的操作,其使用要在软件中有效实现的过多循环,并且一般除对散列结果进行模简化之外任何分组处理操作都不需要该除法操作。因此,网络处理器架构通常不包括除法功能。-->附图说明通过参考附图阅读本公开可最佳地理解本专利技术的实施例,其中:图1示出具有散列-模-读取(hash-mod-read)资源单元的网络处理器架构的实施例。图2示出散列-模-读取资源单元的实施例。图3示出散列-模-读取资源单元的操作的实施例的流程图。具体实施方式图1示出具有散列-模-读取资源单元的网络处理器10的实施例。该网络处理器仅是一个实施例,其中该单元可被用于并且仅在此讨论用于提供辅助理解本专利技术的实施例的框架。网络处理器10具有使得诸如14之类的分组处理元件或处理器能够与诸如散列-模-读取(HMR)资源单元16进行通信的资源互连12。可存在其他的资源,包括将在下文中更详细讨论的锁请求控制器。可设置存储器互连18以使得资源单元16能够根据请求在需要时执行对存储器19的存储器访问。在不同的实施例中,存储器19可以是用于资源单元16的专用存储器,或者它可以是诸如由处理元件14到资源互连12共享的DRMA之类的通用存储器。这些存储器可以是片上存储器或片外存储器。在其他实施例中,资源单元16可以经由资源互连12而不是经由如图1所示的专用连接来访问存储器19。资源单元是由硬件电路形成的逻辑“设备”。例如,HMR资源单元内的模引擎可以是整数除法器。当诸如14之类的分组处理元件需要执行散列时,它通过资源互连12向HMR资源单元16发送请求。该请求可包括请求类型,以及要被散列的固定的或可变的信息量、该可变信息量的大小、简化模数和基本地址。将伴随该请求的信息称作请求信息。在此将要被散列的固定的或可变的信息量与该大小(如果该信息量是可变的)一起称作关联数据并被包含在请求信息中。作为对该请求的响应,HMR资源单元执行所请求的操作并返回-->作为对该请求的反应的结果。在图2中示出HMR资源单元12的一个实施例的更详细视图。HMR单元具有资源互连请求接口(RQI)20,其使得资源单元能够接收请求和关联数据。该请求包含期望操作的参数,如将进一步更详细讨论的。在图2所示的实施例中,读取引擎显然被绕过。在其他实施例中,可通过发出哑读取(dummy read)来绕过读取引擎。在一个实施例中,资源单元可以仅执行散列,散列和模简化,仅模简化,模简化和读取,散列和读取,或者散列、模简化和读取,或者仅读取。在一个实施例中,如果要发生散列,则首先完成散列是因为散列将关联数据的大小减小到更易于管理的比例。如果要完成散列,则通过向散列引擎22发送关联数据来开始该操作的执行。如果不要执行散列,则在某些实施例中关联数据将绕过散列引擎22并直接到达模引擎24。散列是一项已知技术,并且可将散列引擎的各种实施例用于本专利技术的精神中。一种期望在硬件成本与散列质量之间取得折衷的技术是使用CRC(循环冗余校验)。CRC提供良好的键的伪随机分布,即,关联数据中一个比特的改变可以导致作为结果得到的键的很大改变。其他的实施例可以将散列引擎实现为处理器或微编码引擎。在某些实施例中,操作类型包括关于要完成的散列类型的信息,然后散列引擎实现多种散列算法。在某些实施例中,散列引擎可以是完全流水线的,每次循环接受一个新的操作。在其他实施例中,散列引擎可以被实现为并行的散列处理器组,在这种情况下其吞吐量可能更加受限。如上所述,散列提供了减小用于访问某种类型的数据结构的键大小的方法,所述数据结构例如表或存储器。例如,如果关联数据的大小是800比特,则没有足够的内存用于存储具有800比特键的表。例如,使用800比特键的具有32比特(四个字节)入口的表将需要2**802字节的存储空间。如果作为替代,从那些800比特产生散列,它可以将800比特简化到例如32比特,并且模2**20简化然后可以将作为结果得到的键简化到仅20比特。这20比特然后可以用于索引108字节的入口的表,在此108字节的入口是四个原始字节,加上用于链接任何碰撞入口(colliding entry)-->的“下一”指针的四个字节,加上用于消除任何碰撞的对应于该入口的关联数据的800比特(100字节)。现在总共需要的大小小于2Λ27字节,这是十分实用的。因为散列是多对一的操作,所以可能存在不止一个组的关联数据产生相同的经散列的键。当关联数据的多个组映射到相同键时,键有时被称作“散列桶(hash bucket)”,因为关联数据的多个组在相同的桶中结束。在某些实现方式中,将这些项形成为由“下一”指针链接入口的“碰撞链”,。然后可每次一个结果地“遍历(walk)”碰撞链,以在具有相同键的入口组之中找到期望的入口。该链中的每个元素必须存储原始的、产生它的关联数据,从而使得能够进行比较来确定在碰撞链中的哪个入口(如果有多个)对应于期望的关联数据本文档来自技高网...

【技术保护点】
一种资源单元,包括:    请求接口,用于使得所述单元能够接收请求和请求信息,其中所述请求信息包括关联数据;    散列引擎,用于产生所述关联数据的散列;    模引擎,用于产生模数结果;    读取引擎,用于执行存储器读取;以及    结果接口,用于使得所述设备能够返回结果。

【技术特征摘要】
【国外来华专利技术】US 2005-7-25 11/189,5841.一种资源单元,包括:
请求接口,用于使得所述单元能够接收请求和请求信息,其中所述请
求信息包括关联数据;
散列引擎,用于产生所述关联数据的散列;
模引擎,用于产生模数结果;
读取引擎,用于执行存储器读取;以及
结果接口,用于使得所述设备能够返回结果。
2.如权利要求1所述的资源单元,所述模引擎还包括来自由以下装置
组成的组的至少一个装置:整数除法器、查找表近似和可重复减法单元。
3.如权利要求1所述的资源单元,所述散列引擎还用于使用循环冗余
校验散列。
4.如权利要求1所述的资源单元,所述散列引擎用于执行通述请求可
选择的多种类型和大小的散列函数。
5.如权利要求1所述的资源单元,所述读取引擎还用于在从所述请求
中的基本地址偏移了来自所述散列引擎和/或所述模引擎的计算量的地址处
执行简单读取。
6.如权利要求1所述的资源单元,所述读取引擎用于执行对碰撞链的
遍历。
7.如权利要求1所述的资源单元,所述散列引擎和所述模引擎被通信
耦合以使得所述模引擎能够产生所述散列的模数结果。
8.如权利要求1所述的资源单元,所述资源单元还包括通信耦合到所
述结果接口的所述散列引擎,用于将所述散列作为所述结果的至少一部分
返回。
9.如权利要求1所述的资源单元,所述资源单元还包括通信耦合到所
述结果接口的所述模引擎,用于将所述模数结果作为所述结果的至少一部
分返回。
10.如权利要求1所述的资源单元,所述资源单元还包括通信耦合到
所述结果接口的所述读取引擎,用于将所述读取结果作为所述结果的至少
一部分返回。
11.一种网络处理器,包括:
至少一个分组处理元件;
资源单元,包括:
请求接口;
散列引擎;
模引擎;
读取引擎;
结果接口;以及
资源互连,用于使得所述资源单元能够在所述请求接口处接收来自所
述分组处理元件的请求,并且用于通过所述结果接口返回结果。
12.如权利要求11所述的网络处理器还包括存储器。
13.如权利要求12所述的网络处理器,所述网络处理器还包括耦合到
所述资源...

【专利技术属性】
技术研发人员:厄尔T科亨易卜拉欣德利博塔乔纳森罗森
申请(专利权)人:思科技术公司
类型:发明
国别省市:US[美国]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1