基于索引的虚拟寻址的方法和设备的制作方法

文档序号:6495832阅读:130来源:国知局
基于索引的虚拟寻址的方法和设备的制作方法【专利摘要】一种设备,其包括用于存储路由表的存储器以及耦接到所述存储器的处理器,所述处理器用于:生成对某一例项中至少一个区段进行存取的请求;基于所述例项而将一个索引指派给所述请求;基于所述索引而在所述路由表中查找表项,其中所述表项包含资源位向量;以及基于所述资源位向量来识别包含所述例项中所述区段中至少一部分的资源。【专利说明】基于索引的虚拟寻址的方法和设备相关申请案的交叉参考[0001]本发明要求2012年7月3日由何玉兰(HoYuLam)等人递交的发明名称为“基于索引的虚拟寻址的方法和设备(MethodandApparatusforIndex-BasedVirtualAddressing)”的第13/541,287号美国非临时专利申请案的在先申请优先权,该在先申请要求2011年7月6日由何玉兰(HoYuLam)等人递交的发明名称为“实现基于索引的负载平衡的方法和设备(MethodandApparatusforAchievingIndex-BasedLoadBalancing)”的第61/504,827号美国临时专利申请案的在先申请优先权,这两个在先申请的内容均以引入的方式并入本文本中,如全文再现一般。关于由联邦政府赞助的研究或开发的声明[0002]不适用。参考缩微胶片附录[0003]不适用。【
技术领域
】无【
背景技术
】[0004]在现代处理器系统中,硬件(例如,存储器)的物理地址通常可以映射或转译为虚拟地址,反之亦然。该过程可以在处理器中实施并且可以称为虚拟寻址(virtualaddressing)。具备虚拟寻址能力的处理器可以利用可能位于不同芯片上的各种资源,例如逻辑单元和/或内存空间。在实践中,可能需要解决各种问题。例如,资源(例如,存储器)的规模可能有限,因此数据结构(例如,大型查找表)可能无法存储在单个资源中而是可能需要在多个资源中划分。此外,该存储器的尺寸可能无法无限扩大,因为当存储器大小超过某一阈值时内存延迟(memorylatency)会增加且吞吐量会下降。因此,需要开发可以在处理器系统的配置中提供高性能和灵活性的虚拟寻址方案。【
发明内容】[0005]在一个实施例中,本发明包括一种设备,所述设备包括用于存储路由表的存储器以及耦接到所述存储器的处理器,所述处理器用于:生成对某一例项中至少一个区段进行存取的请求;基于所述例项而将索引指派给所述请求;基于所述索引而在路由表中查找表项,其中所述表项包含资源位向量;以及基于所述资源位向量来识别包含所述例项中所述区段中至少一部分的资源。[0006]在另一个实施例中,本发明包括一种方法,所述方法包括:生成对某一例项中至少一个区段进行存取的请求;基于所述例项而将索引指派给所述请求;基于所述索引而在路由表中查找表项,其中所述表项包含资源位向量;以及基于所述资源位向量来识别出包含所述例项中所述区段中至少一部分的资源。[0007]在又一实施例中,本发明包括一种设备,所述设备包含一种资源,所述资源包含多个特征例项寄存器(FIR),所述资源用于:接收对某一例项中至少一部分进行存取的请求;基于所述例项中所述至少一部分中的第一区段来处理所述请求以提供中间结果;确定存储在FIR中的资源标识(ID),其中所述资源ID识别出包含所述例项中所述至少一部分中第二区段的第二资源;以及将所述请求和所述中间结果发送到所述第二资源。[0008]从结合附图和所附权利要求书进行的以下详细描述将更清楚地理解这些和其它特征。【专利附图】【附图说明】[0009]为了更完整地理解本发明,现在参考以下结合附图和详细描述进行的简要描述,其中相同参考标号表不相同部分。[0010]图1是处理器系统的一个实施例的不意图。[0011]图2是虚拟寻址方案的一个实施例的示意图。[0012]图3是路由表表项的一个实施例的不意图。[0013]图4是没有例项划分的寻址方案的一个实施例的示意图。[0014]图5是带有例项划分的寻址方案的一个实施例的示意图。[0015]图6是在i值(1-value)等于4时的寻址方案的一个实施例的示意图。[0016]图7是基于索引的寻址方法的一个实施例的流程图。[0017]图8是链接法(chainingmethod)的一个实施例的流程图。[0018]图9是网络单元的一个实施例的示意图。[0019]图10是通用计算机系统的示意图。【具体实施方式】[0020]最初应理解,尽管下文提供一个或一个以上实施例的说明性实施方案,但可使用任何数目的技术,不管是当前已知还是现有的,来实施所揭示的系统和/或方法。本发明决不应限于下文所说明的所述说明性实施方案、图式和技术,包含本文所说明并描述的示范性设计和实施方案,而是可在所附权利要求书的范围以及其均等物的完整范围内修改。[0021]在处理器系统中,处理器可以生成各种请求,这些请求可以是对由多个资源所提供的特征的各种例项进行存取的消息。例项(或特征例项)可以指任一类型的数据结构,例如线性表、哈希表(hashtable)、查找树、链表(linked-1ist)、路由表(RT)等。资源可以用于存储一个或多个例项和/或提供对这些例项进行存取和管理的额外特征,例如决策逻辑单元。[0022]在当前的处理器设计中,转译后备缓冲器(TLB)通常用于使用虚拟地址的计算机系统中,例如笔记本、台式机和服务器等。TLB可以是内存管理硬件用来提高虚拟地址转译速度的高速缓存器。在使用中,可以向TLB提供搜寻键字来作为虚拟地址。如果在TLB中存在该虚拟地址,那么可以快速检索和存取物理地址,这可以称为TLB命中(hit)。如果TLB中不存在该虚拟地址,这可以称为TLB未中(miss),那么物理地址可以在页面查核行程(pagewalk)中查找。页面查核行程会涉及对各个内存区的内容进行读取并且将它们用于计算物理地址,这会是一个昂贵的过程。在页面查核行程确定物理地址之后,可以将虚拟地址到物理地址的映射输入到TLB中,这样它可以用于下一搜寻过程。[0023]常规寻址方案,例如TLB,可能具有潜在的限制和/或问题。例如,某一资源可能不具有足够的剩余存储空间来容纳相对较大的数据结构,因此可能需要额外的资源。由于一些常规的寻址方案可能将数据结构映射到单个物理资源,因此数据结构的某些表项可能不能被请求来存取。在另一个实例中,搜寻请求等请求会涉及多个例项表项(例如,在不同的资源中),因此可能需要大量的计算步骤。在这种情况下,大量的请求和响应可能需要在处理器与资源之间来来回回,这样会增加内存延迟并且降低计算效率。在又一实例中,有时可以将额外的资源添加到现有系统中,或可以在多个资源中重新分配多个例项,在这种情况下某一请求可能需要相应地进行修改以适应资源的新配置,这可能较为繁琐。[0024]本文所揭示的是用于在处理器系统中进行基于索引的虚拟寻址的系统和方法。通过在处理器中使用路由表,由处理器生成的请求可以对存储在多个可用资源中的一者或多者中的任一例项进行存取。必要时,某一例项可以在资源中灵活地进行划分。资源的物理分配和例项的划分对于该请求而言可以是透明的。为了促成虚拟寻址,该请求可以被指派以一个路由表索弓I以识别路由表中的某一表项,所述表项可以对应于一个例项标识(ID)。所述路由表也可以含有资源位向量,所述资源位向量可以用不同的方式进行配置,这取决于与所述请求对应的例项是否被划分。例如,如果对应的例项未被划分,那么所述资源位向量可以直接包括可以指定目标资源的资源ID。否则,如果相应的例项被划分到不同区段中,那么所述资源位向量可以在一组位置中含有指示所参与资源的许多’I’位,所述所参与资源可以被定位并且被映射到。此外,如果所述请求在存取一个以上资源,那么可以使用链接来将所述请求路由到下一跳资源,这可能取决于在当前资源中获得的中间结果。通过使用所揭示的寻址方案,可以在处理器系统的配置中提高性能(例如,关于内存延迟)并且获得更大的灵活性。[0025]图1所示为处理器系统100的一个实施例的示意图,其包括经由互连160而连接到m个资源120-150的源110,其中m是大于一的整数。在使用中,源110可以生成多个请求并且将这些请求路由到资源120-150以存取多个例项。源110可以包括处理器112以及耦接到处理器112的存储器114。处理器112可以生成请求并且所述请求可以使用存储在可为例如缓冲器或高速缓存器等存储器114中的任何数据,例如路由表。尽管处理器112所示为单个处理器,但是它并非受限于此而是可以包括多个处理器。例如,处理器112可以实施为一个或多个中央处理器单元(CPU)芯片、核心(例如,多核处理器)、现场可编程门阵列(FPGA)、专用集成电路(ASIC)和/或数字信号处理器(DSP),并且/或者可以是一个或多个ASIC的一部分。实际上,如果处理器120包括多个核心,那么可以生成请求并且通过多个核心中的任一核心来发送该请求。[0026]m个资源120-150中的任何两个资源可以相同或不同。为了清晰,可以在本文中将资源120作为实例来进行论述,前提是关于资源120的描述可以同样适用于任一其他资源。资源120可以包括内存(memory)(或存储(storage))空间和/或决策逻辑。例如,资源120可以是智能存储器,其包括内存空间和相关的决策逻辑,所述决策逻辑在内存空间中提供专属数据结构的存取和管理。根据具体应用,资源120可以采用各种形式。例如,资源120可以包括处理引擎、芯片(例如,具有决策逻辑的芯片),和/或存储器。在另一实例中,资源120可以是芯片的一部分。资源120-150中的每一者都可以位于单独的芯片中,或者,资源120-150中的两个或两个以上资源可以位于同一芯片中。在一个实施例中,当接收到请求时,对应于所述请求的例项可以位于资源120的内存空间中,并且可以对所述例项中的一个或多个表项进行存取。此外,资源120中的决策逻辑可以基于所述请求来确定是否执行计算(computation/calculation)。如果所述请求还需要对存储在另一资源(例如,资源130)中的例项的其他表项进行存取,资源120中的决策逻辑也可以经由互连160而将所述请求路由到其他资源(例如,资源130)。最终,最后的资源可以生成响应并且经由互连160而将该请求发送回源110。实际上,通过逻辑单元的协调,资源120可以同时处理多个请求,这些请求可以对相同或不同的对应例项进行存取。[0027]在使用中,资源120可以是芯片上资源(B卩,在与处理器112相同的物理芯片上)例如高速缓存器、特殊功能寄存器(SFR)存储器、内部随机存取存储器(RAM);或芯片外资源例如外部SFR存储器、外部RAM、硬盘驱动器、通用串行总线(USB)闪存驱动器等。此外,必要时,单个芯片例如存储器可以被划分为多个部分或区段,并且每个部分可以用作单独的资源。或者,必要时,多个芯片可以组合成单个资源。因此,某一请求的虚拟寻址(或路由)可以在单个芯片内或跨芯片执行。[0028]互连160可以是在源110与资源120-150中任一者之间或者在资源120-150中任何二者之间(例如,在资源120与资源130之间)的通信信道或者是促成数据通信的交换结构/交换机。实际上,互连160可以采取各种形式,例如一个或多个总线、纵横接线器(crossbar)、单向环、双向环等。如果源110以及资源120-150中的一个资源(例如,资源120)或两个资源在不同位置,互连160可以是网络信道,它可以是在源110与资源120-150之间或在两个资源之间传输信号所需的路由器和其他处理设备的任何组合。例如,互连160可以是公共因特网或局域以太网。源110和/或资源120-150可以经由有线或无线链路而连接到互连160。[0029]在本发明中,由处理器(例如,处理器112)生成的请求可以被寻址(或路由)到存储在多个资源中一者或多者(例如,资源120)中的例项。图2所示为虚拟寻址方案200的一个实施例的示意图。在使用中,处理器中的运行程序(或请求器)可以生成请求,该请求可以包括标题区段和数据区段。标题区段可以含有信息,例如由请求路由表(RT)所使用的路由表索引(RT_Index)、以及某一例项的键字(或索引)。所述键字可以指示出该例项中的哪个表项或哪些表项可以由该请求来存取。根据请求的目的,数据区段可以含有各种数据和/或指令。例如,数据区段中一个或多个数值可以与例项中的所有(或一部分)表项相比较。在另一实例中,数据区段中的一个或多个指令可以删除、修改或添加例项中的一个或多个表项。在本文中应注意,所述请求可能不需要含有关于资源分配和例项在资源中划分情况(如果存在的话)的任何信息。因此,所揭示的寻址或路由方案对于所述请求而言可以是透明的。[0030]如图2所示,所述请求可以首先供给程序库或逻辑单元210,所述程序库或逻辑单元可以位于生成请求的同一处理器(例如,图1中的处理器112)中或不同的处理器中。在一个实施例中,逻辑单元210可以用于基于请求中的标题区段中含有的RT_index来定位或识别路由表中的表项。在一个实施例中,逻辑单元210还可以用于基于请求中的标题区段中含有的索引来生成i值。RT_index和i值可以用于将请求寻址到其目标资源中,下文将对此进行详细论述。在部分执行逻辑单元210之后,所述请求的标题区段中可以包括RT_index、i值和索引。此外,请求路由表220可以被包含在逻辑单元210中或耦接到所述逻辑单元。在一个实施例中,可以使用所述请求中的RT_index来给路由表220编索引,该索引可以将所述请求寻址到系统中可用的多个资源中的任一资源中,例如图2中的资源230-250。在一个实施例中,路由表220可以存储于存储器中,例如图1中的存储器114。路由表220可以存储于与逻辑单元210相同的源(例如,源110)中。在多核处理器中,每个核心可以具有单独的路由表。或者,一部分核心或所有核心可以共享公共的路由表。路由表220可以含有各例项和资源的对应关系信息。因此,基于RT_index和i值,对应于所述请求(具有例项ID)的例项可以由路由表210辨认出,并且所述请求可以相应地路由到所述例项。[0031]在一个实施例中,在使用路由表220进行地址转译之后,请求中的标题区段可以包括目标ID、源ID、源标签、例项ID,以及键字或索引。目标ID可以识别出含有相应例项的目标资源。源ID可以识别出请求响应可以返回的处理器。源标签可以识别出源或处理器中的请求,这可能是有用的,因为多个请求可能同时从同一源发送并且多个响应返回到同一源。例项ID可以是目标资源中的特征例项寄存器(FIR)的索引,下文将对此进行详细描述。[0032]任何资源(例如,资源230)都可以接收由逻辑单元210发送的请求。在使用中,虚拟寻址方案200中的资源中的任何两个资源(例如,资源230和资源240)可以相同或不同。例如,资源230可以与图1中的资源120相同或相似。资源230可以存储多个例项或数据结构,例如,线性表、哈希表、B树、查找树等。此外,例项可以被划分到多个资源中,其中每个资源存储该例项的特定区段。在处理完所述请求之后,任一资源(例如,资源230)可以将响应返回到请求器(源,或处理器)。[0033]实际上,有时在可以对某一请求生成响应之前,可以存取一个以上资源。例如,在处理在多个资源中划分的数据结构(例如,大型查找表)时,某一请求可以在数据结构中搜寻特定值。在这种情况下,该请求可以相继地搜查数据结构中的多个表项并且将它们与搜寻值进行比较,直到数据结构被查完或者匹配表项被定位为止。如图2所示,在本文中可以使用链接来促成多个资源的存取,其中各资源可以用管线(pipe-lined)的方式一个接一个地存取。为了提供链接能力,每个所参与资源中的决策逻辑可以包括FIR,所述FIR可以含有数据结构中的特征特定参数(例如,例项类型)和对应区段(分段)。[0034]FIR的使用可以允许类似的资源通过简单的配置来处理不同的数据结构或数据结构中的不同区段。例如,FIR可以存储一个或多个下一跳资源ID。在请求的处理过程结束时,任选地基于结果,当前资源可以在FIR中查找下一跳资源ID,这样,附有当前资源中的中间结果的请求可以经由例如图1中的互连160等互连而转发到下一跳资源。请求中的原始目标ID可以用下一跳资源ID来覆写。链接可以持续,直至不再需要其他表项为止。随后,最后的资源中的FIR会含有空的下一跳资源ID,从而使资源基础架构将请求中的原始源ID用作目标ID。响应可以返回到请求的原始源。[0035]资源的链接架构可以基于链内的每个资源级而动态地确定。例如,如果资源(例如,资源230)中的FIR和/或决策逻辑确定链中的下一个资源(例如,资源240)不为请求所需要,那么可以跳过这个下一个资源(例如,资源240)。作为替代,所述请求会被转发到链中的另一不同的下一跳资源(例如,资源250)。尽管图2中未图示,但是例如图1中的互连160等互连,可以将链中的至少一个资源连接到至少一个第二资源。在另一实例中,如果资源(例如,资源240)中的FIR确定某一请求不再需要其他资源,那么在当前资源中可以立即生成响应,而链中接下来的所有资源(例如,资源240)会被跳过。因此,在实施中,在特定链中包含的资源数量可以根据具体应用而定,并且不同的链可以包含相同或不同数量的资源。例如,必要时,在链中的多个资源中划分的例项可以重新划分,这样链中的资源数量会发生变化。此外,如果请求需要存取多个例项,这些例项无论被划分或未被划分,都也有可能在链接方案中相继地被存取。[0036]在一个实施例中,中间结果可以在链内的资源中生成。可以通过对原始请求进行修改或添加,而将所述中间结果传递到下一资源。例如,某一请求可能在含有前缀搜寻树的例项中进行最长的前缀匹配,所述例项可以在各资源中被划分。在这种情况下,如果存在任何匹配前缀,那么中间结果可以是在资源链的先前级中到目前为止获得的最长匹配前缀。所述中间结果可以传递到随后级,在所述随后级中可能存在或可能不存在更长的匹配前缀。所述请求可能具有到目前为止获得的最长匹配前缀,这样由所述请求存取的最后的资源可以具有所匹配的总体最长的前缀。在一个实施例中,中间结果可以用于确定下一资源,但是所述中间结果不会由所述请求携带到下一资源。例如,在简单的二叉搜寻树中,请求中的一个或多个搜寻键字可以与二叉搜寻树中的表项相比较,但是在中间资源或节点中不会存储有返回值。在一个实施例中,链中的资源不会生成中间结果。在中间资源中,接收到的请求可以传递到下一资源,其中在标题区段中只有下一资源的资源目标ID。例如,在多层或多维搜寻树中,一个或多个维度可以是空的或被忽略的。空维度可以不需要中间结果(或树),但是资源仍然可以分配给它们,这样搜寻树可以支持可以使用所述空维度的任何新条目(item)。[0037]如先前所述,例如硬件加速器和存储器等系统资源的大小不能无限膨胀,因为当存储器大小超过某一阈值时内存延迟会增加并且吞吐量会下降。因此,为了适应吞吐量和容量需求,一部分或全部资源可以复制在多个资源中。因此,所述系统可以通过将存取同一例项的多个请求分配到多个资源中来实现负载平衡。在使用中,负载平衡可以使用所揭示的寻址方案用不同形式来实施。例如,必要时,某一例项中的一个区段或全部可以在多个资源中复制。在一个实施例中,所复制的例项(或所复制的区段)的每个副本可以用不同的RT_index来标记。如果多个请求在同一或几乎同一时间存取所复制的例项时,每个请求可以被指派以一个不同的RT_index。因此,多个未完成的请求可以在多个资源中分配以实现负载平衡。例如,读取所复制的例项的多个请求可以在资源中平均地分配,使得系统的总吞吐量可以增加。[0038]当资源中的一部分或所有决策逻辑在多个资源中复制时,可以实现另一种形式的负载平衡。为了存取可能存储在多个资源中的某一例项的不同区段(例如,在搜寻请求中),可以从源发送一个请求或多个请求。在第一种情况下,如果从源发送一个请求,那么可以使用链接方案的一个实施例,其中所复制的决策逻辑中的同一算法可以在资源链的每个级中按顺序使用。在一些常规方案中,一个请求可能只存取一个资源并且该资源可能需要等待资源的响应之后才能发送另一个请求,与这些常规方案相比,所揭示的链接方案的吞吐量可以增加。例如,所揭示的链接方案可能只具有若干时钟周期的内存延迟,而常规方案可能具有数百个时钟周期的内存延迟。在第二种情况下,如果从源向包含所复制的决策逻辑的多个资源发送多个请求,那么所述多个请求可以被指派以相同的RT_index和不同的i值以存取同一例项中多个划分的区段。在复制的决策逻辑中,相同的算法可以同时应用于被划分的例项中的多个区段。在第二种情况下,由于对于每个请求而言例项表项的量可以减小,并且源可能无需等待资源的响应再发送另一请求,因此完成请求的总时间可以减少。在第二种情况下,还可以使用链接方案的一个实施例。例如,如果多个请求中的一个或多个请求需要存取一个以上资源,那么所述一个或多个请求中的每个请求可以按顺序引导到这些资源,并且每个资源可以使用所复制的决策逻辑来处理这些请求。[0039]以下关于图3至图6的描述可以涵盖使用路由表进行虚拟寻址的更多细节。图3是路由表表项300的一个实施例的示意图,其可以包括多个表字段,例如路由表索引(RT_index)310、有效性字段320、i值有效性(IV)字段330、例项ID340,以及资源位向量350。每个字段中的位数量根据具体应用而定。例如,路由表索引310可以占据五位(位23-27),如图3所示。RT_index310可以是路由表表项300的索引,并且可以由可配置的逻辑单元(例如,图2中的逻辑单元210)指派给某一请求。路由表索引310可以是全局惟一,也就是说,在所有资源中惟一的,这样位于任一资源中的例项可以由路由表表项300识别出来。因此,路由表中表项的数量可以取决于某一系统(例如,图1中的处理器系统100)经设计以支持的例项的最大数量。应注意,由于例项可以在多个资源中划分,因此对应于所划分的例项的路由表索引310可以由这些资源共享。[0040]在基于RT_index310从路由表中定位出路由表表项300之后,接着可以检查有效性字段320。有效性字段320可以占据一位(位22),并且可以确定路由表表项300是否有效。例如,有效性字段320中的’I’可以指示出路由表表项300是有效的表项,而有效性字段320中的’O’可以指示出路由表表项300是无效的表项。例如,当某一例项被删除时,路由表表项300会变为无效。如果路由表表项300具有’O’,那么不会考虑其他表项,例如IV字段330、例项ID340以及资源位向量350。同样地,IV字段330可以占据一位(位21),并且可以确定对应于所述请求的例项是否被划分在多个资源中。例如,IV字段330中的’I’可以指示出该例项被划分在至少两个资源中,而IV字段330中的’O’可以指示出该例项只存储在一个资源中。[0041]例项ID340可以由RT_index310确定并且可以用作对应于所述请求的例项的标识。由于在一个资源中可能存储有多个不同的例项(或特征例项),因此例项特定参数和数据可以存储在所指派资源的FIR中。例项ID340可以用作FIR的索引以定位对应于所述请求的例项。应注意,存储在不同资源中的例项可以具有相同的例项ID340。换句话说,例项ID340可以是本地惟一的,即在某一资源内是惟一的,但不是全局惟一的,即并非在所有资源中惟一。[0042]资源位向量350可以指示出哪一资源含有对应的例项。由于系统中每个可用资源可以被指派以在资源位向量350中预定位置处的一位,因此位的数量可以取决于处理器系统中资源的总数量。例如,资源位向量350可以具有对应于总数16的可用资源的16位(位0-15)。根据IV字段330的值(I或0),资源位向量350可以直接含有资源ID360,或者可以包括可映射到资源ID的许多’I’位。这两种场景将在图4和图5中论述。[0043]图4是没有例项划分(IV=O)的寻址方案400的一个实施例的示意图。寻址方案400可以代表路由表表项300的特定情况,此时有效性字段(位22)是’I’并且IV字段(位21)是’0’。在这种情况下,相应的例项可以是有效的,但是它可以只存储在一个资源中。因此,资源位向量可以直接含有对应于例项的资源ID。例如,从右侧的最低有效位(LSB)算起,六位(位0-5)可以代表资源ID,所述资源ID可以识别出所述请求的目标资源。资源位向量中前面的位(位6-15)可以留空或指派以任意值,因为在这种情况下这些位的值无关紧要。用于资源ID的位数量可以取决于系统中可用的资源数量。为了促成例如芯片上资源和芯片外资源等各种资源的识别,可以在资源ID中使用额外的位。例如,六位可以用于总数为16的资源,如图4所示,其中四位代表16个资源中的一个资源,另两位用于选择芯片上路由。[0044]图5是具有例项划分(IV=1)的寻址方案500的一个实施例的示意图。寻址方案500可以代表路由表表项300的一个特定情况,此时有效性字段(位22)是’1’并且IV字段(位21)是’1’。在这种情况下,相应的例项可以是有效的,并且它可以被划分在至少两个不同的资源中。在实施中,资源位向量350中特定位置处的’1’可以指示出相应的资源含有所述例项的一个区段或部分,而’0’可以指示出相应的资源不含有所述例项的任何部分。有可能的是,在另一个实施例中,资源位向量350中特定位置处的’0’可以指示出相应的资源含有所述例项的一个区段或部分,而’1’可以指示出相应的资源不含有所述例项的任何部分。此外,如先前所述,当某一请求被提供给逻辑单元(例如,图2中的逻辑单元210)时,它的标题区段可以含有i值,所述i值可以基于所述请求中的键字或索引来导出。因此,所述i值可以与所述位向量组合使用以确定含有所述例项的所述相应区段的目标资源ID。在一个实施例中,i的i值可以被配置,其中i为整数。这可以表示:从资源位向量中的LSB算起(含LSB),对应于第i+1个’1’的资源可以含有所述例项的所述相应区段。在选择了第i+1个’1’位之后,该位可以映射到目标资源ID,所述请求随后可以寻址到所述目标资源ID。类似地,在另一个实施例中,’1’的数量可以从位向量左侧的最高有效位(MSB)算起。在这种情况下,i的i值可以表示:从资源位向量中的MSB算起(含MSB),对应于第i+1个’1’的资源可以含有所述例项的所述相应区段。[0045]图6是在i值等于4(即,0100)时的寻址方案600的一个实施例的示意图。在寻址方案600中,所述请求可能存取某一例项中某一区段的一个或多个表项,并且含有该区段的资源可以对应于从LSB算起的资源位向量中的第五个(即,在这种情况下第i+1个)’1’。尽管在图6中未图示,但是应注意类似的寻址方案可以被配置,其中第五个’1’是从MSB算起。[0046]在本发明中,可配置的i值可以允许例项在多个资源中灵活地划分。例如,考虑简单的数据结构例如线性表,它在具有16个可用资源的处理器系统中具有带8个表项地址或键字(000-111)的8个表项。在第一种情况下,线性表可以划分到16个资源中的4个资源中,并且每个资源可以含有2个连续的表项。这4个资源可以对应于资源位向量(具有位0-15)中的位3、7、12、15(从1^8算起)。位的位置可以是任意选择的。因此,对应于资源位向量中的位3的资源可以含有线性表中的键字000和001;对应于资源位向量中的位7的资源可以含有键字010和011;对应于资源位向量中的位12的资源可以含有键字100和101;而对应于资源位向量中的位15的资源可以含有键字110和111。在第一种情况下,i值(或简单地表示为i)可以经配置为线性表键字(具有位0-2)中的位1和位2(从LSB算起)。因此,对于键字000和001,i=00;对于键字010和011,i=01;对于键字100和101,i=10;对于键字110和111,i=ll。根据一个请求正在存取的线性表中的表项,i值可以从所述请求的标题区段中含有的键字中导出,并且可以从资源位向量中选择相应的位。在第一种情况下,如果所述请求具有键字000或001,那么可以导出i=00,并且可以从资源位向量中选择位3(B卩,第一个’I’)。否则,如果所述请求具有键字010或011,那么可以导出i=01,并且可以选择位7(B卩,第二个’I’)。否则,如果所述请求具有键字100或101,那么可以导出i=10,并且可以选择位13(8卩,第三个’I’)。否则,如果所述请求具有键字110或111,那么可以导出i=ll,并且可以选择位15(B卩,第四个’I’)。[0047]或者,在以上线性表的第二种情况下,它可以划分到16个资源中的2个资源中,这两个资源可以对应于例如资源位向量中的位2和位14。对应于位2的第一资源可以含有具有不连续键字000、100和111的3个表项,并且对应于位14的第二资源可以含有具有键字001、010、011、101和110的剩余5个表项。在此第二种情况下,i值(或简单地表示为i)可以由逻辑单元来配置,这样对于键字000、100和111,i=0;而对于键字001、010、011、101和110,I=10根据一个请求正在存取的线性表中的表项,i值可以指派给所述请求,并且可以从资源位向量中选择相应的位。在第二种情况下,如果所述请求具有键字000、100或111,那么可以指派i=0,并且可以从资源位向量中选择位2(B卩,第一个’I’)。否则,如果所述请求具有键字001、010、011、101和110,那么可以指派i=l,并且可以选择位14(即,第二个,I,)。[0048]根据以上线性表的实例,可以看到:可配置的i值可以正确地将某一请求寻址到例项中它对应的区段中,无论所述例项如何在多个资源中划分。如果某一例项需要重新划分,那么i值可以简单地重新配置,而所述请求保持不变。因此,该例项的划分对于所述请求而言可以是透明的。此外,所揭示的寻址方案还可以允许资源中灵活的变化。例如,如果更多资源需要并入现有系统中,例如,为了容纳更大或更多数据结构,那么路由表中的资源位向量中的位数量可以扩大。一个或多个i值可以相应地重新配置,这样任何请求仍然可以正确地寻址到其相应的例项(或例项的某区段)中且所述请求无需进行任何改变。因此,资源的物理分配对于所述请求而言可以是“黑箱”操作。[0049]图7为基于索引的寻址方法700的一个实施例的流程图,它可以在处理器(例如,图1中的处理器112)中实施。方法700可以开始于步骤710,其中处理器中的运行程序可以生成存取某一例项中一个或多个表项的请求。所述请求的标题区段中可以含有信息,例如相应例项中的路由表索引和/或一个或多个键字(或地址)。所述相应例项可以位于处理系统中存在的多个资源中的任一资源中。接着,在步骤720中,所述请求可以被提供给可配置的逻辑单元(例如,图2中的逻辑单元210),其中所述请求的标题区段可以用于生成i值。在使用中,多个路由表索引和/或i值可以基于所有例项在资源中的分配和/或划分而预先配置。在一个实施例中,i值可以基于其(多个)键字而指派给所述请求。[0050]接着,在步骤730中,路由表可以用于识别出所述请求可以寻址到的目标资源。所述路由表可以位于生成所述请求的同一处理器中。基于由所述请求所提供的RT_index,路由表可以定位路由表表项,所述路由表表项可以包括各种字段。在一个实施例中,路由表表项,例如图3中的路由表表项300,可以包括RT_index、有效性字段、i值有效性字段、例项ID和资源位向量。根据对应于所述请求的例项是否被划分在多个资源中,资源位向量可以用不同方式来配置。例如,如果对应的例项未划分,那么所述资源位向量可以直接包括可以指定目标资源的资源ID。否则,如果对应的例项被划分到存储在多个资源中的多个区段中,并且这些区段可以具有不同的或复制的数据,那么资源位向量可以在一组位置中包括许多’I’位。系统中每个可用资源可以被指派到资源位向量中的特定位置,因此在某一位置处的’I’位可以指示出该位置中相应的资源可以存储所划分的例项中的一个区段。在步骤720中获得的i值可以在此处与资源位向量一起使用,从而确定哪个位指向含有相应例项区段的资源。映射方案可以将该位转译为相应的目标资源ID,所述目标资源ID可以识别出目标资源。接着,在步骤740中,所述请求可以从处理器经由互连,例如图1中的互连160,而发送到目标资源。在一个实施例中,如在互连处所示,所述请求中的标题区段可以包括资源ID、源标签、目标ID、例项ID以及键字。[0051]图8为链接法800的一个实施例的流程图,它可以在某一资源(例如,图1中的资源120)中实施。方法800可以开始于步骤810,其中请求可以由目标资源接收。一个或多个接收器可以包含在目标资源中以促成所述请求的接收。接着,在步骤820中,所述请求可以在目标资源的FIR中处理。FIR可以位于目标资源的决策逻辑(或逻辑单元)中,它可以基于所述请求来执行计算。通过使用由所述请求提供的例项ID和键字,FIR可以从相应的例项(或例项中的某区段)中提取一个或多个表项。需要时,可以生成中间结果并且/或者由目标资源传递。[0052]在处理完请求之后,接着在步骤830中,方法800可以确定所述请求是否需要在可以生成响应之前存取另一个资源。如果方框830中的条件满足,那么方法800可以行进到步骤840。否则,方法800可以行进到步骤860。在步骤840中,链中的下一跳资源ID可以在FIR中查找并且指派给所述请求。该下一跳资源ID可以覆写所述请求的原始目标资源ID。接着,在步骤850中,所述请求可以经由互连,例如图1中的互连160而发送,从原始目标资源发送到下一目标资源,所述下一目标资源可以由下一跳资源ID识别出来。在步骤850之后,所述方法可以返回到步骤810,其中所述请求可以再一次被接收并处理。应注意到,根据本发明,基于链内每个资源级的中间结果,可以动态地确定下一跳资源ID。因此,对应于例项中某些区段的某些资源有可能被跳过。实际上,所述链接可以持续,直至所述请求被链中最后的资源处理完为止。接着,在步骤860中,最后的资源中的FIR可以含有空的下一跳资源ID,并且所述请求中的原始源ID可以作为目标ID而指派给所述请求。接着,在步骤870中,响应可以从最后的资源经由互连,例如图1中的互连160,而发送到所述请求的原始源。[0053]图9所示为网络单元900的一个实施例的示意图,它可以包括例如在网络或系统内用于如上所述处理请求和特征例项的处理器或资源。网络单元900可以包括:多个输入端口910和/或接收器单元(Rx)912,用于从其他网络单元或部件接收数据;逻辑单元或处理器920,用来处理数据并且确定将数据发送到哪个网络单元;以及多个输出端口930和/或发射器单元(Tx)932,用于将数据传输到其他网络单元。逻辑单元或处理器920可以用于实施本文所述的任一方案,例如基于索引的寻址方法700,而且可以使用硬件、软件或这两者来实施。[0054]上文所述的方案可以在任何通用网络部件上实施,例如,具有足够的处理能力、内存资源以及网络吞吐能力以处理所承受的必要工作量的计算机或网络部件。图10所示为典型的通用网络部件或计算机系统1000的示意图,其适用于实施本文所揭示的方法的一个或多个实施例,例如,基于索引的寻址方法700。通用网络部件或计算机系统1000包括处理器1002(可以称为中央处理器单元或CPU),所述处理器与包括以下项的存储装置通信:辅助存储器1004、只读存储器(ROM)1006、随机存取存储器(RAM)1008、输入/输出(I/O)装置1010,以及网络连接装置1012。尽管处理器1002所示为单个处理器,但是它并非受限于此而是可以包括多个处理器。处理器1002可以实施为一个或多个CPU芯片、核心(例如,多核处理器)、现场可编程门阵列(FPGA)、专用集成电路(ASIC),和/或数字信号处理器(DSP),并且/或者可以是一个或多个ASIC的一部分。处理器1002可以用于实施本文所述的任一方案,包含基于索引的寻址方法700,所述方案可以使用硬件、软件或这两者来实施。[0055]辅助存储器1004通常包括一个或多个磁盘驱动器或磁带驱动器,用于数据的非易失性存储,而且如果RAM1008的容量不足以存储所有工作数据,所述辅助存储器则用作溢流数据存储装置。辅助存储器1004可以用于存储程序,当选择执行这些程序时,所述程序将加载到RAM1008中。R0M1006用于存储在程序执行期间读取的指令以及可能的数据。R0M1006为非易失性存储装置,其存储容量相对于辅助存储器1004的较大存储容量而言通常较小。RAM1008用于存储易失性数据,还可能用于存储指令。对R0M1006和RAM1008二者的存取通常比对辅助存储器1004的存取快。[0056]揭示至少一个实施例,且所属领域的一般技术人员对所述实施例和/或所述实施例的特征的变化、组合和/或修改在本发明的范围内。因组合、整合和/或省略所述实施例的特征而产生的替代实施例也在本发明的范围内。在明确陈述数值范围或限制的情况下,应将此类表达范围或限制理解为包含属于明确陈述的范围或限制内的类似量值的重复范围或限制(例如,从约I到约10包含2、3、4等;大于0.10包含0.11,0.12,0.13等)。举例来说,每当揭示具有下限R1和上限Ru的数值范围时,具体是揭示属于所述范围的任何数字。具体而言,特别揭示所述范围内的以下数字A=Rfk*(Ru-R1),其中k为从1%到100%范围内以1%递增的变量,即,k为1%、2%、3%、4%、7%、…、70%、71%、72%、…、95%、96%、97%、98%、99%或100%。此外,还特定揭示由如上文所定义的两个R数字定义的任何数值范围。除非另有说明,否则使用术语“约/大约”是指随后数字的±10%。关于权利要求的任一元素使用术语“任选地”意味着所述元素是需要的,或者所述元素是不需要的,两种替代方案均在所述权利要求的范围内。使用例如包括、包含和具有等较广术语应被理解为提供对例如由……组成、基本上由......组成以及大体上由......组成等较窄术语的支持。因此,保护范围不受上文所陈述的描述限制,而是由所附权利要求书界定,所述范围包含所附权利要求书的标的物的所有均等物。每一和每个权利要求作为进一步揭示内容并入说明书中,且所附权利要求书是本发明的实施例。所述揭示内容中的参考文献的论述并不是承认其为现有技术,尤其是具有在本申请案的在先申请优先权日:期之后的【公开日】期的任何参考文献。本发明中所引用的所有专利、专利申请案和公开案的揭示内容特此以引用的方式并入本文中,其提供补充本发明的示范性、程序性或其它细节。[0057]虽然本发明中已提供若干实施例,但应理解,在不脱离本发明的精神或范围的前提下,所揭示的系统和方法可以许多其它特定形式来体现。本发明的实例应被视为说明性的而非限制性的,且本发明不限于本文所给出的细节。举例来说,各种元件或组件可在另一系统中组合或整合,或某些特征可省略或不实施。[0058]另外,在不脱离本发明的范围的前提下,各种实施例中描述和说明为离散或单独的技术、系统、子系统和方法可与其它系统、模块、技术或方法组合或整合。展示或论述为彼此耦接或直接耦接或通信的其它项目也可以电方式、机械方式或其它方式通过某一接口、装置或中间组件间接地耦接或通信。其他变化、替代和改变的实例可以由所属领域的技术人员确定,并且可以在不脱离本文本所揭示的范围和精神的情况下作出。【权利要求】1.一种设备,其包括:存储器,所述存储器用于存储路由表;以及处理器,所述处理器耦接到所述存储器,所述处理器用于:生成对某一例项中至少一个区段进行存取的请求;基于所述例项而将一个索引指派给所述请求;基于所述索引而在所述路由表中查找表项,其中所述表项包含资源位向量;以及基于所述资源位向量来识别包含所述例项中所述区段中至少一部分的资源。2.根据权利要求1所述的设备,其中所述处理器进一步用于基于所述请求而生成一个值,并且其中所述资源进一步基于所述值。3.根据权利要求2所述的设备,其中所述请求包括标题区段,所述标题区段包括至少一个键字,并且其中所述值基于所述键字。4.根据权利要求3所述的设备,其中所述例项被划分到包含所述资源的一组资源中,其中所述资源位向量包括数量等于所述资源组中资源数量的值为’I’的位,其中所述资源位向量内值为’I’的位的位置基于所述值来确定,并且其中所述资源基于所述位置来识别。5.根据权利要求4所述的设备,其中所述表项进一步包括例项标识(ID),并且其中所述例项ID基于所述索引来确定。6.根据权利要求5所述的设备,其中所述表项进一步包括有效性字段,其中所述资源位向量只有在所述有效性字段有效时才被考虑。7.根据权利要求4所述的设备,其中当所述值等于i,其中i是整数时,所述位置对应于从所述资源位向量中的最低有效位(LSB)算起的第i+Ι个值为’I’的位。8.根据权利要求4所述的设备,其中当所述值等于i,其中i是整数时,所述位置对应于从所述资源位向量中的最高有效位(MSB)算起的第i+Ι个值为’I’的位。9.根据权利要求3所述的设备,其中所述例项被划分到包含所述资源的一组资源中,其中所述资源位向量包括数量等于所述资源组中资源数量的值为’O’的位,其中所述资源位向量内值为’O’的位的位置基于所述值来确定,并且其中所述资源基于所述位置来识别。10.根据权利要求1所述的设备,其中所述资源位向量包括识别所述资源的资源ID。11.一种方法,其包括:生成对某一例项中至少一个区段进行存取的请求;基于所述例项而将一个索引指派给所述请求;基于所述索引而在路由表中查找表项,其中所述表项包含资源位向量;以及基于所述资源位向量来识别包含所述例项中所述区段中至少一部分的资源。12.根据权利要求11所述的方法,进一步包括基于所述请求而生成一个值,其中所述资源进一步基于所述值。13.根据权利要求12所述的方法,其中所述请求包括标题区段,所述标题区段包括至少一个键字,并且其中所述值基于所述键字。14.根据权利要求13所述的方法,其中所述例项被划分到包含所述资源的一组资源中,其中所述资源位向量包括数量等于所述资源组中资源数量的值为’I’的位,其中所述资源位向量内值为’I’的位的位置基于所述值来确定,并且其中所述资源基于所述位置来识别。15.根据权利要求14所述的方法,其中所述表项进一步包括例项标识(ID),并且其中所述例项ID基于所述索引来确定。16.根据权利要求15所述的方法,其中所述表项进一步包括有效性字段,其中所述资源位向量只有在所述有效性字段有效时才被考虑。17.根据权利要求14所述的方法,其中当所述值等于i,其中i是整数时,所述位置对应于从所述资源位向量中的最低有效位(LSB)算起的第i+Ι个值为’I’的位。18.根据权利要求14所述的设备,其中当所述值等于i,其中i是整数时,所述位置对应于从所述资源位向量中的最高有效位(MSB)算起的第i+Ι个值为’I’的位。19.根据权利要求13所述的方法,其中所述例项被划分到包含所述资源的一组资源中,其中所述资源位向量包括数量等于所述资源组中资源数量的值为’O’的位,其中所述资源位向量内值为’O’的位的位置基于所述值来确定,并且其中所述资源基于所述位置来识别。20.根据权利要求11所述的方法,其中所述资源位向量包括识别所述资源的资源ID。21.—种设备,其包括:包括多个特征例项寄存器(FIR)的资源,所述资源用于:接收对某一例项中至少一部分进行存取的请求;基于所述例项中所述至少一部分中的第一区段来处理所述请求;确定存储在FIR中的资源标识(ID),其中所述资源ID识别出包含所述例项中所述至少一部分中第二区段的第二资源;以及将所述请求发送到所述第二资源。22.根据权利要求21所述的设备,其中所述FIR包括多个资源标识(ID),其中所述多个资源ID识别出包含额外资源的多个资源,其中所述资源ID选自所述多个资源ID。23.根据权利要求22所述的设备,其进一步包括:存储器,所述存储器用于存储路由表;以及处理器,所述处理器耦接到所述存储器,所述处理器用于:生成所述请求;基于所述例项而将一个索引指派给所述请求;基于所述索引而在所述路由表中查找表项,其中所述表项包含资源位向量;以及基于所述资源位向量来识别出所述资源。24.根据权利要求23所述的设备,其中所述请求包括标题区段,所述标题区段包括所述例项的至少一个键字,并且其中所述资源进一步基于从所述键字中导出的值而识别出来。25.根据权利要求24所述的设备,其中所述例项被划分到包含所述资源和所述第二资源的一组资源中,其中所述资源组包括所述例项的多个区段,所述多个区段包括所述第一区段和所述第二区段,其中所述资源位向量包括数量等于所述资源组中资源数量的值为’I’的位,其中所述资源位向量内值为’I’的位的位置基于所述值来确定,并且其中所述资源基于所述位置来识别。26.根据权利要求25所述的设备,其中所述表项进一步包括:例项标识(ID),其中所述例项ID基于所述索引来确定;i值有效性(IV)字段,其中所述值只有在所述IV字段有效时才被考虑;以及有效性字段,其中所述资源位向量只有在所述有效性字段有效时才被考虑。27.根据权利要求25所述的设备,其中当所述值等于i,其中i是整数时,所述位置对应于从所述资源位向量中的最低有效位(LSB)算起的第i+1个值为’1’的位。28.根据权利要求25所述的设备,其中当所述值等于i,其中i是整数时,所述位置对应于从所述资源位向量中的最高有效位(MSB)算起的第i+1个值为’1’的位。29.根据权利要求24所述的设备,其中所述例项被划分到包含所述资源和所述第二资源的一组资源中,其中所述资源组包括所述例项的多个区段,所述多个区段包括所述第一区段和所述第二区段,其中所述资源位向量包括数量等于所述资源组中资源数量的值为,O,的位,其中所述资源位向量内值为’O’的位的位置基于所述值来确定,并且其中所述资源基于所述位置来识别。【文档编号】G06F17/30GK103842990SQ201280033550【公开日】2014年6月4日申请日期:2012年7月6日优先权日:2011年7月6日【发明者】蓝和玉,赛勒斯·库玛,威廉姆·林奇申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1