一种网络处理器指令存储装置及该装置的指令存储方法

文档序号:6372973阅读:130来源:国知局
专利名称:一种网络处理器指令存储装置及该装置的指令存储方法
技术领域
本发明涉及互联网领域,具体涉及一种网络处理器指令存储装置及该装置的指令存储方法。
背景技术
随着互联网(Internet)的迅猛发展,用于主干网络互联的核心路由器的接口速率已经达到lOOGbps,该速率要求核心路由器的线卡能够迅速处理通过线卡上的报文,当前业界大都使用多核网络处理器的结构。而指令的取指效率是影响多核网络处理器性能的一个关键因素。 在多核结构的网络处理器系统中,同一组微引擎(Micro Engine,简称ME)有着同样的指令需求,由于芯片面积和工艺的限制,无法为每一个微引擎都配备一块独享的存储空间来存储这些指令。因此需要设计一个相应的方案来实现一组微引擎对一片指令存储空间的共享,同时能够有较高的取指效率。一些传统的多核网络处理器使用多级缓存的结构,譬如每个微引擎配备一个单独的一级缓存,一组微引擎共享一个二级缓存的结构来实现存储空间的共享,如图I所示。这些缓存都具有较大的空间以保证命中率,但是由于网络报文的随机性造成指令的局部性不强,因此大容量的缓存并不能保证取指效率,同时还造成资源的大量浪费。另一些网络处理器采用了轮询式的指令存储方案,将一组微引擎所需的指令存储在与微引擎同等数量的RAM内,如图2所示,图中4个微引擎通过一个仲裁模块轮询4个RAM中的指令。每个微引擎依次地访问所有的RAM,它们的访问始终处于不同的“相位”,因此不会发生不同微引擎访问同一个RAM的碰撞,实现了存储空间的共享。但是由于指令中存在大量的跳转指令,假设对流水线结构的微引擎来说,从开始取到跳转指令到跳转完成需要η个时钟的时间,为保证某个跳转指令的目标在该跳转指令所在RAM后面第η+1个RAM中,写入指令的时候必须要插入一些空指令保证跳转目标位置的正确。当跳转指令所占比例很大的时候就需要插入大量的空指令,造成了指令空间的大量浪费,而且也会增加编译器实现的复杂度。该方案要求所有的RAM都能在I个时钟周期返回数据,须采用SRAM实现,但大量SRAM的使用也造成大量的资源开销。

发明内容
本发明要解决的技术问题是提供一种网络处理器指令存储装置及该装置的指令存储方法,能够节约硬件资源。为解决上述技术问题,本发明提供了一种网络处理器指令存储装置,网络处理器包括两个以上的微弓I擎大组,每个微弓I擎大组包括N个微弓丨擎,该N个微弓I擎包括两个以上的微引擎小组,所述指令存储装置包括快速存储器(Qmem)、缓存(cache)、第一低速指令存储器和第二低速指令存储器,其中每个微弓I擎对应一个Qmem和一个缓存,Qmem设置为与微弓I擎连接,缓存与Qmem相连;每个微弓I擎小组对应一个第一低速指令存储器,微弓I擎小组中每个微弓I擎对应的缓存与第一低速指令存储器相连;每个微弓I擎大组对应一个第二低速指令存储器,微弓I擎大组中每个微弓I擎对应的缓存与第二低速指令存储器相连。 进一步地,所述Qmem用于在接收到微引擎发送的指令数据请求后,判断本Qmem是否有该指令数据,如果有,则将指令数据返回给微引擎,如果没有,则向缓存发送指令数据请求。进一步地,所述Qmem中存储对处理质量要求最高的一个地址段的指令。进一步地,所述缓存包括两个Cache Line,每个Cache Line存放多条连续的指令, 所述Cache Line用于在接收到Qmem发送的指令数据请求后,判断本缓存是否有该指令数据,如果有,则将指令数据通过Qmem返回给微引擎,如果没有,则向第一低速指令存储器或第二低速指令存储器发送指令数据请求。进一步地,所述两个Cache Line采用乒乓操作形式,且与报文存储器的乒乓操作同步。进一步地,所述装置还包括第一仲裁模块、第二仲裁模块和第三仲裁模块,其中每个微引擎对应一个第一仲裁模块,该第一仲裁模块与每个微引擎的缓存相连;每个微引擎小组对应一个第二仲裁模块,该第二仲裁模块的一端与微引擎小组中每个微引擎的第一仲裁模块相连,另一端与第一低速指令存储器相连;每个微引擎大组对应一个第三仲裁模块,该第三仲裁模块的一端与每个微引擎的第一仲裁模块相连,另一端与第二低速指令存储器相连。进一步地,所述第一仲裁模块,用于在缓存请求指令数据时,判断所请求的指令位于第一低速指令存储器还是位于第二低速指令存储器,向第一低速指令存储器或第二低速指令存储器发送指令数据请求;以及用于接收第一低速指令存储器或第二低速指令存储器返回的指令数据,将该指令数据返回给缓存;所述第二仲裁模块,用于在接收到一个或多个第一仲裁模块发送的指令数据请求时,选择一个指令数据请求发送给第一低速指令存储器处理,将第一低速指令存储器取指后得到指令数据返回给相应的第一仲裁模块;所述第三仲裁模块,用于在接收到一个或多个第一仲裁模块发送的指令数据请求时,选择一个指令数据请求发送给第二低速指令存储器处理,将第二低速指令存储器取指后得到指令数据返回给相应的第一仲裁模块。进一步地,所述缓存还用于在接收到第一仲裁模块返回的指令数据后,更新缓存内容和标签。进一步地,每个微引擎大组包括32个微引擎,该32个微引擎包括4个微引擎小组,每个微引擎小组包括8个微引擎。为解决上述技术问题,本发明还提供了一种指令存储装置的指令存储方法,所述指令存储装置为如前所述的指令存储装置,所述方法包括快速存储器(Qmem)在接收到微引擎发送的指令数据请求后,判断本Qmem是否有该指令数据,如果有,则将指令数据返回给微引擎,如果没有,则向缓存发送指令数据请求;所述缓存中的一 Cache Line在接收到Qmem发送的指令数据请求后,判断本缓存是否有该指令数据,如果有,则将指令数据通过Qmem返回给微引擎,如果没有,则向第一低速指令存储器或第二低速指令存储器发送指令数据请求;所述第一低速指令存储器在接收到缓存发送的指令数据请求后,查找指令数据,向缓存返回查找到的指令数据;所述第二低速指令存储器在接收到缓存发送的指令数据请求后,查找指令数据,向缓存返回查找到的指令数据。进一步地,所述方法还包括所述缓存中的一Cache Line在判断本缓存没有该指令数据时,将指令数据请求发 送给第一仲裁模块,该第一仲裁模块判断所请求的指令如果位于第一低速指令存储器,则向第一低速指令存储器发送指令数据请求,所请求的指令如果位于第二低速指令存储器,向第二低速指令存储器请求指令数据。进一步地,所述方法还包括所述第一仲裁模块判断所请求的指令如果位于第一低速指令存储器,则向第二仲裁模块发送指令数据请求,所述第二仲裁模块收到一个或多个第一仲裁模块发送的指令数据请求时,选择一个指令数据请求发送给第一低速指令存储器;所述第一仲裁模块判断所请求的指令如果位于第二低速指令存储器,则向第三仲裁模块发送指令数据请求,所述第三仲裁模块收到一个或多个第一仲裁模块发送的指令数据请求时,选择一个指令数据请求发送给第二低速指令存储器。本发明实施例所提供的适用于多核网络处理器的基于快速存储器和缓存的指令存储方案,将快速存储器、小容量并采用乒乓操作的缓存以及低速DRAM存储器结合在一起,其中存储器采用层次化的分组策略。采用该种指令存储方案有效地保证一部分指令的高取指效率和较高的平均取指效率,而且节省了大量的硬件存储资源,同时编译器的实现也十分简单。


图I是传统的两级Cache的结构示意图;图2是轮询方式的指令存储方案的结构示意图;图3是实施例I 一种指令存储装置的结构示意图;图4是一种具体的指令存储装置结构示意图;图5是报文存储器和icache乒乓操作的示意图;图6是指令存储装置处理流程图;图7 —种指令存储装置详细处理流程图;图8是本发明中Cache模块中一个Cache Line工作的过程图。
具体实施例方式本发明考虑将快速存储器(Quick Memory,简称Qmem)与小容量并采用兵兵操作的缓存(Cache),以及低速RAM存储器(如低速指令存储器(instruction memory,简称IMEM))结合起来作为微引擎的缓存。为使本发明的目的、技术方案和优点更加清楚明白,下文中将结合附图对本发明的实施例进行详细说明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。实施例I本实施例的指令存储器如图3所示,采用以下结构一大组N个微引擎分为两个以上的小组,每个微引擎对应一个Qmem和一个Cache,每小组微引擎对应一个第一低速指令存储器(以下简称IMEM),该一大组N个微引擎对应一个第二低速指令存储器(以下简称頂EM_C0M),如图3所示,Qmem设置为与微引擎连接,缓存与Qmem相连;微引擎小组中每个微引擎对应的缓存与第一低速指令存储器相连;微引擎大组中每个微引擎对应的缓存与第二低速指令存储器相连,其中 该Qmem用于在接收到微引擎发送的指令数据请求后,判断本Qmem是否有该指令数据,如果有,则将指令数据返回给微引擎,如果没有,则向缓存发送指令数据请求。该Qmem优选存储对处理质量要求最高的一个地址段的指令,优选由读写速度快的SRAM实现。Qmem中的内容在报文处理过程中将再不会被更新,当微引擎需求这部分指令的时候,Qmem可以在一个时钟周期内返回微引擎所需指令数据,大大提高了取指效率;该Cache具有两个Cache Line (无通用中文技术术语),每个Cache Line可以存放多条连续的指令,Cache Line用于在接收到Qmem发送的指令数据请求后,判断本缓存是否有该指令数据,如果有,则将指令数据通过Qmem返回给微引擎,如果没有,则向MEM或MEM_C0M发送指令数据请求。两个Cache Line采用乒乓操作形式,且与报文存储器的乒乓操作同步;上述MEM和MEM_C0M分别用于存储位于不同地址段的一片指令,基于指令数据请求查找指令数据并返回。上述四个存储位置Qmem、Cache、頂EM、頂EM_COM,访问速度也依次降低。采用层次化的存储器可以有效地利用指令执行的概率的不同,从而优化微引擎取到指令的效率。由于较多的采用了低速存储器,节约了硬件资源。优选地,该装置还包括第一仲裁模块(arbiterl)、第二仲裁模块(arbiter2)和第三仲裁模块(arbiter3)。每个微引擎对应一个arbiterl,该arbiterl与每个微引擎的缓存相连;每个微引擎小组对应一个arbiter2,该arbiter2的一端与微引擎小组中每个微引擎的arbiterl相连,另一端与IMEM相连;每个微引擎大组对应一个arbiter3,该arbiter3的一端与每个微引擎的arbiterl相连,另一端与IMEM_C0M相连。该arbiterl用于在缓存请求指令数据时,判断所请求的指令位于MEM还是位于IMEM_C0M,向IMEM或IMEM_C0M发送指令数据请求;以及用于接收IMEM或IMEM_C0M返回的指令数据,将该指令数据返回给缓存;该arbiter2用于在接收到一个或多个arbiterl发送的指令数据请求时,选择一个指令数据请求发送给IMEM处理,将IMEM取指后得到指令数据返回给相应的arbiterl ;该arbiter3用于在接收到一个或多个arbiterl发送的指令数据请求时,选择一个指令数据请求发送给IMEM_C0M处理,将IMEM_C0M取指后得到指令数据返回给相应的arbiterlο
以N=32为例,可将每组32个微引擎分成4个小组,每小组8个微引擎。如图4所示,每个微引擎对应一个Qmem和一个Cache (包括两个指令缓存(icache)),每小组8个微引擎共享一个頂EM,每组32个微引擎共享一个IMEM_C0M。图4中Al表示arbiterl,A2表
示arbiter2,A3表示arbiter3。如图5所示,两个icache与ME中的两个报文存储器--
对应,它们轮流工作以掩盖报文存储和取指的延时。实施例2对应图3所示的指令存储装置,相应的指令存储方法如图6所示,包括步骤1,Qmem在接收到微引擎发送的指令数据请求后,判断本Qmem是否有该指令数据,如果有,则将指令数据返回给微引擎,如果没有,则向缓存发送指令数据请求; 步骤2,缓存中的一 Cache Line在接收到Qmem发送的指令数据请求后,判断本缓存是否有该指令数据,如果有,则将指令数据通过Qmem返回给微引擎,如果没有,则向IMEM或IMEM_C0M发送指令数据请求;步骤3,IMEM在接收到缓存发送的指令数据请求后,查找指令数据,向缓存返回查找到的指令数据;MEM_C0M在接收到缓存发送的指令数据请求后,查找指令数据,向缓存返回查找到的指令数据。具体地,对任一个微引擎,取指令过程如图7所示,包括以下步骤步骤110,微引擎将需求的指令地址和地址使能发送至该微引擎的Qmem ;具体地,微引擎中的报文存储器收到报文时将报文中的指令首地址和地址使能发送给指令存储装置,即该微引擎对应的Qmem。步骤120,Qmem判断该指令地址是否在其所存指令的地址范围内,如果在,则执行步骤130,否则执行步骤140 ;步骤130,用该指令地址和该地址使能取指令数据返回给微引擎,本次取指过程结束;步骤140,将该指令地址和地址使能传送给该微引擎的Cache ;步骤150,Cache判断该指令地址是否在其所存指令的地址范围内,如果是,执行步骤160,否则执行步骤170 ;由于Cache的每部分只有一个Cache Line,因此Cache的标签(Tag)也只有一个标签的信息,当地址请求被送到Cache时,根据tag马上就可以判断出所需数据是否在Cache中,即将该指令地址相应位与当前工作的CacheLine对应的tag进行对比,如果相同,说明该指令在Cache中,否则说明该指令不在Cache中。步骤160,基于地址使能将Cache Line中对应位置的指令数据取出通过Qmem送给微引擎,本次取指过程结束;步骤170, Cache将该指令地址和地址使能送至第一仲裁模块(arbiterl);步骤180, arbiterl判断该指令地址是在该微引擎所在小组对应的IMEM中,还是在该微引擎所在微引擎组对应的IMEM_C0M中,如果在IMEM中,则执行步骤190,如果在IMEM_C0M中,则执行步骤210 ;具体地arbiterl根据指令地址判断该指令是在MEM中还是在MEM_C0M中;步骤190, arbiterl将指令地址和地址使能发送至第二仲裁模块(arbiter2);步骤200, arbiter2选择一个指令请求发送至IMEM, IMEM根据请求中的指令地址和地址使能取指令数据,通过arbiterl返回给Cache,执行步骤230 ;当有多个微引擎对应的arbiterl均向arbiter2发起取指请求时,arbiter2通过轮询的方式处理各cache的请求,选择一取指请求送MEM处理,由于数据返回需要多个时钟周期,已经发出请求的支路将不会再被轮询到;步骤210, arbiterl将指令地址和地址使能发送至第三仲裁模块(arbiter3);步骤220,arbiter3选择一个指令请求发送至MEM_C0M,IMEM_C0M根据请求中的指令地址和地址使能取指令数据,通过arbiterl返回给Cache,执行步骤230 ;每个微引擎对应的arbiter的功能同arbiterl, arbiter3的功能同arbiter2。步骤230,更新Cache Line和tag的内容,并将该指令数据通过Qmem返回给微引擎,本次取指过程结束。图8为图5中icache的结构示意图,icache收到Qmem送来的指令地址后,与tag进行比较,判断是否命中,如果命中,则在译码后,根据地址使能从icache的物理存储位置取指令内容,通过多路选择器输出,如果未命中,则继续去低速指令存储器取指令数据,返回的指令数据经多路选择器输出。处理同一个报文时只使用其中一个Cache Line来工作。在当前报文所使用的Cache Linel在Cache中找到相应的指令数据,未向下级低速存储器(IMEM或IMEM_C0M)发出读请求时,此时,如果Cache Line2检测到有下个报文中首地址的请求,则用下个报文中所包含的指令首地址向下级低速存储器发出读请求,以获得下一个报文的所需的指令数据。当前Cache Linel报文处理完后,Cache切换到另一半的Cache Line 2以准备处理下一个报文。这样采用乒乓操作来处理报文可以有效地掩盖报文存储的时间和去低速的指令存储器中取指的延时,在微引擎切换到下个报文时马上就可以取到所需要的指令,提高了取指效率,从而使得微引擎的处理效率提高。本领域普通技术人员可以理解上述方法中的全部或部分步骤可通过程序来指令相关硬件完成,所述程序可以存储于计算机可读存储介质中,如只读存储器、磁盘或光盘等。可选地,上述实施例的全部或部分步骤也可以使用一个或多个集成电路来实现。相应地,上述实施例中的各模块/单元可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。本发明不限制于任何特定形式的硬件和软件的结合。当然,本发明还可有其他多种实施例,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员当可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。
权利要求
1.一种网络处理器指令存储装置,网络处理器包括两个以上的微引擎大组,每个微引擎大组包括N个微引擎,该N个微引擎包括两个以上的微引擎小组,所述指令存储装置包括快速存储器(Qmem)、缓存(cache)、第一低速指令存储器和第二低速指令存储器,其中 姆个微引擎对应ー个Qmem和一个缓存,Qmem设置为与微引擎连接,缓存与Qmem相连;每个微引擎小组对应ー个第一低速指令存储器,微引擎小组中每个微引擎对应的缓存与第一低速指令存储器相连; 每个微引擎大组对应ー个第二低速指令存储器,微引擎大组中每个微引擎对应的缓存与第二低速指令存储器相连。
2.如权利要求I所述的装置,其特征在于 所述Qmem用于在接收到微引擎发送的指令数据请求后,判断本Qmem是否有该指令数据,如果有,则将指令数据返回给微引擎,如果没有,则向缓存发送指令数据请求。
3.如权利要求I或2所述的装置,其特征在于 所述Qmem中存储对处理质量要求最高的一个地址段的指令。
4.如权利要求I所述的装置,其特征在干 所述缓存包括两个Cache Line,姆个Cache Line存放多条连续的指令,所述CacheLine用于在接收到Qmem发送的指令数据请求后,判断本缓存是否有该指令数据,如果有,则将指令数据通过Qmem返回给微引擎,如果没有,则向第一低速指令存储器或第二低速指令存储器发送指令数据请求。
5.如权利要求4所述的装置,其特征在干 所述两个Cache Line采用乒乓操作形式,且与报文存储器的乒乓操作同歩。
6.如权利要求I或2或4或5所述的装置,其特征在于 所述装置还包括第一仲裁模块、第二仲裁模块和第三仲裁模块,其中 每个微引擎对应ー个第一仲裁模块,该第一仲裁模块与每个微引擎的缓存相连; 每个微引擎小组对应ー个第二仲裁模块,该第二仲裁模块的一端与微引擎小组中每个微引擎的第一仲裁模块相连,另一端与第一低速指令存储器相连; 每个微引擎大组对应ー个第三仲裁模块,该第三仲裁模块的一端与每个微引擎的第一仲裁模块相连,另一端与第二低速指令存储器相连。
7.如权利要求6所述的装置,其特征在于 所述第一仲裁模块,用于在缓存请求指令数据时,判断所请求的指令位于第一低速指令存储器还是位于第二低速指令存储器,向第一低速指令存储器或第二低速指令存储器发送指令数据请求;以及用于接收第一低速指令存储器或第二低速指令存储器返回的指令数据,将该指令数据返回给缓存; 所述第二仲裁模块,用于在接收到ー个或多个第一仲裁模块发送的指令数据请求吋,选择ー个指令数据请求发送给第一低速指令存储器处理,将第一低速指令存储器取指后得到指令数据返回给相应的第一仲裁模块; 所述第三仲裁模块,用于在接收到ー个或多个第一仲裁模块发送的指令数据请求吋,选择ー个指令数据请求发送给第二低速指令存储器处理,将第二低速指令存储器取指后得到指令数据返回给相应的第一仲裁模块。
8.如权利要求7所述的装置,其特征在于所述缓存还用于在接收到第一仲裁模块返回的指令数据后,更新缓存内容和标签。
9.如权利要求1、2、4、5、7或8所述的装置,其特征在于 每个微引擎大组包括32个微引擎,该32个微引擎包括4个微引擎小组,每个微引擎小组包括8个微引擎。
10.ー种指令存储装置的指令存储方法,所述指令存储装置为如权利要求I所述的指令存储装置,所述方法包括 快速存储器(Qmem)在接收到微引擎发送的指令 数据请求后,判断本Qmem是否有该指令数据,如果有,则将指令数据返回给微引擎,如果没有,则向缓存发送指令数据请求; 所述缓存中的一 Cache Line在接收到Qmem发送的指令数据请求后,判断本缓存是否有该指令数据,如果有,则将指令数据通过Qmem返回给微引擎,如果没有,则向第一低速指令存储器或第二低速指令存储器发送指令数据请求; 所述第一低速指令存储器在接收到缓存发送的指令数据请求后,查找指令数据,向缓存返回查找到的指令数据; 所述第二低速指令存储器在接收到缓存发送的指令数据请求后,查找指令数据,向缓存返回查找到的指令数据。
11.如权利要求10所述的方法,其特征在干 所述方法还包括 所述缓存中的一Cache Line在判断本缓存没有该指令数据时,将指令数据请求发送给第一仲裁模块,该第一仲裁模块判断所请求的指令如果位于第一低速指令存储器,则向第一低速指令存储器发送指令数据请求,所请求的指令如果位于第二低速指令存储器,向第ニ低速指令存储器请求指令数据。
12.如权利要求11所述的方法,其特征在干 所述方法还包括 所述第一仲裁模块判断所请求的指令如果位于第一低速指令存储器,则向第二仲裁模块发送指令数据请求,所述第二仲裁模块收到ー个或多个第一仲裁模块发送的指令数据请求时,选择ー个指令数据请求发送给第一低速指令存储器; 所述第一仲裁模块判断所请求的指令如果位于第二低速指令存储器,则向第三仲裁模块发送指令数据请求,所述第三仲裁模块收到ー个或多个第一仲裁模块发送的指令数据请求时,选择ー个指令数据请求发送给第二低速指令存储器。
全文摘要
本发明公开了一种网络处理器指令存储装置及该装置的指令存储方法,能够节约硬件资源。所述网络处理器包括两个以上的微引擎大组,每个微引擎大组包括N个微引擎,该N个微引擎包括两个以上的微引擎小组,所述指令存储装置包括Qmem、缓存、第一低速指令存储器和第二低速指令存储器,其中每个微引擎对应一个Qmem和一个缓存,Qmem设置为与微引擎连接,缓存与Qmem相连;每个微引擎小组对应一个第一低速指令存储器,微引擎小组中每个微引擎对应的缓存与第一低速指令存储器相连;每个微引擎大组对应一个第二低速指令存储器,微引擎大组中每个微引擎对应的缓存与第二低速指令存储器相连。采用该方案节省了大量的硬件存储资源。
文档编号G06F15/16GK102855213SQ201210233710
公开日2013年1月2日 申请日期2012年7月6日 优先权日2012年7月6日
发明者郝宇, 安康, 王志忠, 刘衡祁 申请人:中兴通讯股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1