本发明专利技术公开了一种网络处理器指令存储装置及该装置的指令存储方法,能够节约硬件资源。所述网络处理器包括两个以上的微引擎大组,每个微引擎大组包括N个微引擎,该N个微引擎包括两个以上的微引擎小组,所述指令存储装置包括:Qmem、缓存、第一低速指令存储器和第二低速指令存储器,其中:每个微引擎对应一个Qmem和一个缓存,Qmem设置为与微引擎连接,缓存与Qmem相连;每个微引擎小组对应一个第一低速指令存储器,微引擎小组中每个微引擎对应的缓存与第一低速指令存储器相连;每个微引擎大组对应一个第二低速指令存储器,微引擎大组中每个微引擎对应的缓存与第二低速指令存储器相连。采用该方案节省了大量的硬件存储资源。
【技术实现步骤摘要】
本专利技术涉及互联网领域,具体涉及。
技术介绍
随着互联网(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 一种指令存储装置的结构示意图;本文档来自技高网...
【技术保护点】
一种网络处理器指令存储装置,网络处理器包括两个以上的微引擎大组,每个微引擎大组包括N个微引擎,该N个微引擎包括两个以上的微引擎小组,所述指令存储装置包括:快速存储器(Qmem)、缓存(cache)、第一低速指令存储器和第二低速指令存储器,其中:每个微引擎对应一个Qmem和一个缓存,Qmem设置为与微引擎连接,缓存与Qmem相连;每个微引擎小组对应一个第一低速指令存储器,微引擎小组中每个微引擎对应的缓存与第一低速指令存储器相连;每个微引擎大组对应一个第二低速指令存储器,微引擎大组中每个微引擎对应的缓存与第二低速指令存储器相连。
【技术特征摘要】
【专利技术属性】
技术研发人员:郝宇,安康,王志忠,刘衡祁,
申请(专利权)人:中兴通讯股份有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。