CN102830953B - 指令处理方法及网络处理器指令处理装置 - Google Patents
指令处理方法及网络处理器指令处理装置 Download PDFInfo
- Publication number
- CN102830953B CN102830953B CN201210273408.7A CN201210273408A CN102830953B CN 102830953 B CN102830953 B CN 102830953B CN 201210273408 A CN201210273408 A CN 201210273408A CN 102830953 B CN102830953 B CN 102830953B
- Authority
- CN
- China
- Prior art keywords
- tuple
- instruction
- jump instruction
- jump
- intermediate representation
- 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.)
- Active
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供了一种指令处理方法及网络处理器指令处理装置,其中,该指令处理方法包括:对指令源文件进行处理,生成包含有跳转指令信息的中间表示结构;根据所述中间表示结构中包含的所述跳转指令信息,对引起取指冲突的跳转指令进行修正;修正完成后生成预定格式的目标文件。本发明通过修正跳转指令,来消除多个微引擎轮询取指冲突,以牺牲少量指令存储空间为代价,使得多个微引擎共享存储空间时的轮询取指更加高效。
Description
技术领域
本发明涉及计算机技术领域,特别涉及一种指令处理方法及网络处理器指令处理装置。
背景技术
网络处理器(Network Processor,NP)是一种专门针对网络数据报文处理而优化了体系结构和指令集的可编程芯片。它既具有通用处理器的低价格和高灵活性,又具有专用芯片(ASIC)的高性能和可扩展性等特点。当前,骨干网络的核心设备的单口接入速度已经达到1Tbps,这就要求网络处理器要以1T的线速完成报文转发,当前业界多使用多核结构来实现可编程网络转发芯片。
在多核结构的网络处理器系统中,同一组微引擎(Micro Engine,ME)有着同样的指令需求,由于芯片面积和制造工艺的限制,不能为每一个微引擎都配备一块独享的存储空间来存储这些指令。为实现指令存储空间共享以及微引擎的高效取指,网络处理器采用轮询式的指令存储方案,将一组微引擎所需的指令存储在同等数量的随机存取介质(RAM)内,微引擎以轮询的方式依次从各个RAM中取指。对于完全顺序执行的指令来说,每个微引擎依次地访问所有的RAM,它们的访问始终处于不同的“相位”,因此不会发生不同微引擎访问同一个RAM的碰撞,从而实现了存储空间的共享。
但是由于指令中存在跳转指令,假设对流水线结构的微引擎来说,一条指令的执行通常包含取指、译码、执行、回写等几个步骤,每个步骤分别由网络处理器中不同的子单元串行完成。各个子单元同时工作,达到的效果是流水线上第一条指令在执行,第二条指令在解码,第三条指令在取指,从而可以节省消耗的时钟周期。但是当执行到跳转指令时,由于无法获知跳转条件是否成立,在得到计算结果前不知道要执行的下一条指令地址,无法提前取指和译码,因此流水线会被迫中断;同时当前微引擎执行跳转指令后的要取指RAM可能与其他微引擎要取指RAM发生碰撞,破坏微引擎之间轮询式的指令访问方式。显然,程序中的跳转指令越多,流水线中断以及发生碰撞的次数就越多,微引擎的执行效率就越差。
为解决上述问题,微引擎中通常采用特殊的容错机制来调解微引擎之间取指冲突,这既没有从根本上消除微引擎取指冲突的问题,也增加了处理器微引擎设计的难度。
发明内容
本发明实施例提供了一种指令处理方法及网络处理器指令处理装置,以解决现有技术没有从根本上消除微引擎取指冲突的问题。
本发明实施例提供了一种指令处理方法,该方法包括:
对指令源文件进行处理,生成包含有跳转指令信息的中间表示结构;
根据所述中间表示结构中包含的所述跳转指令信息,对引起取指冲突的跳转指令进行修正;
修正完成后生成预定格式的目标文件。
优选地,所述中间表示结构中包含表示跳转源标记和跳转目的标记的字段。
优选地,所述根据所述中间表示结构中包含的所述跳转指令信息,对引起取指冲突的跳转指令进行修正,包括:
根据所述跳转指令信息生成所述待修正的跳转指令的四元组集合;按照修正原则从所述四元组集合中选择四元组;对选择的四元组逐一进行修正;将修正任一四元组产生的影响反馈给其他四元组,确保多个微引擎在所述待修正的跳转指令执行前后无取指冲突。
优选地,所述四元组集合为由从所述中间表示结构中抽取出来的待修正的跳转指令信息的四元组组成的集合,所述四元组包含跳转源地址、跳转目的地址、跳转间隔大小和跳转间隔区间四种信息。
优选地,所述按照修正原则从所述四元组集合中选择四元组,包括:
从所述四元组集合中选择一个四元组作为候选者,检验该候选者是否满足所述修正原则,若满足则通过合法性检验,若不满足则重新选择。
优选地,所述修正原则是指当前候选者的跳转间隔区间不能完全包含相比较的四元组的跳转间隔区间。
优选地,所述对选择的四元组逐一进行修正包括:
计算出通过合法性检验的候选者为避免取指冲突所需插入的空白指令的数量,并在对应的中间表示结构中插入所述数量的所述空白指令。
优选地,所述空白指令是指只占有执行周期,但不产生任何影响的一类指令。
优选地,所述将修正任一四元组产生的影响反馈给其他四元组包括:
将已修正的四元组从所述四元组集合中删除,将所述四元组集合中其他四元组的跳转间隔区间和所述已修正的四元组的跳转间隔区间相重叠的部分删除,将插入空白指令对其他四元组跳转间隔大小的影响反馈到所述四元组集合。
优选地,所述修正完成后生成预定格式的目标文件包括:
重新计算修正后的中间表示结构的指令地址,重定位各个跳转指令源标记,生成预定格式的目标文件。
本发明实施例还提供了一种网络处理器指令处理装置,该装置包括:
中间表示结构生成模块,用于对指令源文件进行处理,生成包含有跳转指令信息的中间表示结构;
跳转指令修正模块,用于根据所述中间表示结构中包含的所述跳转指令信息,对引起取指冲突的跳转指令进行修正;
指令存储模式生成模块,用于修正完成后生成预定格式的目标文件。
优选地,所述装置还包括:错误告警模块,用于将跳转指令修正过程中产生的各种错误,以一定的格式输出。
优选地,所述跳转指令修正模块包括:
跳转信息提取单元,用于根据所述跳转指令信息生成所述待修正的跳转指令的四元组集合;
跳转指令地址修正单元,用于按照修正原则从所述四元组集合中选择四元组,以及对选择的四元组逐一进行修正;
修正结果反馈单元,用于将修正任一四元组产生的影响反馈给其他四元组,确保多个微引擎在所述待修正的跳转指令执行前后无取指冲突。
优选地,所述四元组集合为由从所述中间表示结构中抽取出来的待修正的跳转指令信息的四元组组成的集合,所述四元组包含跳转源地址、跳转目的地址、跳转间隔大小和跳转间隔区间四种信息。
优选地,所述跳转指令地址修正单元,具体用于:从所述四元组集合中选择一个四元组作为候选者,检验该候选者是否满足所述修正原则,若满足则通过合法性检验,若不满足则重新选择。
优选地,所述修正原则是指当前候选者的跳转间隔区间不能完全包含相比较的四元组的跳转区间。
优选地,所述跳转指令地址修正单元,具体用于:计算出通过合法性检验的候选者为避免取指冲突所需插入的空白指令的数量,并在对应的中间表示结构中插入所述数量的所述空白指令。
优选地,所述空白指令是指只占有执行周期,但不产生任何影响的一类指令。
优选地,所述修正结果反馈单元,具体用于:将已修正的四元组从所述四元组集合中删除,将所述四元组集合中其他四元组的跳转间隔区间和所述已修正的四元组的跳转间隔区间相重叠的部分删除,将插入空白指令对其他四元组跳转间隔大小的影响反馈到所述四元组集合。
优选地,所述指令存储模式生成模块,具体用于:重新计算修正后的中间表示结构的指令地址,重定位各个跳转指令源标记,生成预定格式的目标文件。
本发明实施例,通过修正跳转指令,来消除多个微引擎轮询取指冲突,以牺牲少量指令存储空间为代价,使得多个微引擎共享存储空间时的轮询取指更加高效。
附图说明
图1(a)为本发明多核微引擎共享存储空间及其对应的指令访问方式实施例一的示意图;
图1(b)为本发明多核微引擎共享存储空间及其对应的指令访问方式实施例二的示意图;
图1(c)为本发明多核微引擎共享存储空间及其对应的指令访问方式实施例三的示意图;
图2为本发明网络处理器指令处理方法实施例的流程图;
图3为本发明包含跳转指令信息的中间表示结构实施例的示意图;
图4为本发明确保多个微引擎在跳转指令执行前后无取指冲突实施例的流程图;
图5(a)为本发明跳转指令四元组交互关系实施例一的示意图;
图5(b)为本发明跳转指令四元组交互关系实施例二的示意图;
图5(c)为本发明跳转指令四元组交互关系实施例三的示意图;
图5(d)为本发明跳转指令四元组交互关系实施例四的示意图;
图5(e)为本发明跳转指令四元组交互关系实施例五的示意图;
图5(f)为本发明跳转指令四元组交互关系实施例六的示意图;
图6为本发明空白指令插入前后四个微引擎对应的指令共享存储空间及其对应的指令访问方式实施例的示意图;
图7(a)为本发明跳转指令四元组实施例的示意图;
图7(b)为图7(a)中的跳转指令四元组生成的插入信息的示意图;
图7(c)为图7(b)生成的插入信息对图7(a)中跳转指令四元组的影响的示意图;
图8为本发明网络处理器指令处理装置实施例的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,下文中将结合附图对本发明的实施例进行详细说明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。
为了更好地理解本发明,首先介绍一下多个微引擎共享指令存储空间以及轮询式访问的方式。在目前多核网络处理器中,受芯片面积和制造工艺的限制,不太可能为每个微引擎都配置一块“足够大”的指令存储空间,一般都为每个微引擎配置一块“较小”的指令存储空间,通过多个微引擎共享存储空间的方式,来扩展微引擎可访问的指令数量,从而达到微引擎指令空间大小和执行性能的折中。
图1(a)-图1(c)展示了四核微引擎的几类存储空间共享方式,图1(a)四个微引擎各自独享自己的存储空间,这是指令共享的一种特殊情况;图1(b)四个微引擎两两共享存储空间,ME0与ME1共享存储空间,ME2和ME3共享存储空间;图1(c)四个微引擎完全共享存储空间。
由于指令存储空间共享,有可能出现两个以上微引擎同时访问同一个微引擎所对应存储空间的情况,这就是取指冲突。为了避免取指冲突,一般使用轮询式的指令访问方式,如图所示,图1(a)四个微引擎独享存储空间时,各个微引擎存储空间完全独立,四个微引擎完全可以并行执行;图1(b)四个微引擎两两共享存储空间,此时ME0和ME1必须轮询访问所共享的存储空间,同一时钟周期ME0和ME1不会访问同一列存储空间,ME2和ME3也有类似情况;图1(c)四个微引擎完全共享存储空间,此时ME0、ME1、ME2、ME3必须轮询访问所有共享的存储空间。
对于完全顺序执行的指令,这种轮询式的指令访问方式既可消除取指冲突,但是指令中存在一定的跳转指令,由于跳转目的的不确定性,多个微引擎的轮询顺序可能被破坏,导致取指冲突。本发明实施例通过修正跳转指令和跳转目的指令在共享存储空间的布局,消除跳转指令对轮询式取指的破坏,使得多个微引擎在执行跳转指令的前后无取指冲突出现。
如图2所示,为本发明网络处理器指令处理方法实施例的流程图,包括以下步骤:
步骤201、对指令源文件进行处理,生成包含有跳转指令信息的中间表示结构;
该跳转指令信息包括跳转指令源信息和跳转指令目的信息;
本实施例中的包含跳转信息的中间表示结构如图3所示,图3中跳转源标记和跳转目的标记可有多个或者没有,一条指令有多个跳转源时,表示该跳转指令在不同的条件下可以跳转到不同的执行流程,当一条指令有多个跳转目标标记时,表示该指令可以作为多条跳转指令的目的地;
步骤202、根据所述中间表示结构中包含的所述跳转指令信息,对引起取指冲突的跳转指令进行修正;
根据中间表示结构中的跳转指令信息,逐一选择可修正的跳转指令,在其跳转指令源地址和目的地址之间插入必要数量的空白指令,以确保多个微引擎在该跳转指令执行前后无取指冲突;
该步骤202的具体实现流程如图4所示,具体包括:
步骤401、从包含跳转指令的中间表示结构中,提取跳转指令四元组信息,并依据四元组中跳转地址对其排序;跳转指令四元组表示为:E(跳转源地址,跳转目的地址,跳转间隔大小,跳转间隔区间),跳转指令四元组集合表示为:S(E1,E2,……En)。四元组集合的生成过程为,从包含跳转指令信息中间表示结构中,搜索所有的跳转源,依次搜索每个跳转源对应的跳转目的,找到时,生成一条四元组信息填入集合S,未找到时,编译过程报错并退出;
处理完中间表示结构中所有的跳转源以后,生成完整的跳转指令四元组信息,以跳转源地址为主键值,跳转目的地址为辅键值进行排序,对完全相同的四元组信息只保留一份,当指令支持多个跳转源时,可能出现完全相同的四元组,此时,修正其中一条跳转区间,另一条也自然符合修正规则;
步骤402、从四元组集合中选择一个四元组作为跳转修正的候选者;选择的方式是循环选择,直到四元组集合S中所有的四元组都进行了处理,即集合S为空;初始时一个四元组可能不是一个能够进行修正的四元组,这时直接处理后续的四元组,待后续的四元组被处理后,当初的那个四元组可能成为可处理的四元组;
步骤403、比较候选四元组和四元组集合其他的四元组之间跳转交互关系,判断候选者四元组是否适合进行处理;
跳转指令四元组之间交互关系如图5(a)-图5(f)所示,其中,图5(a)表示相离、图5(b)表示外切、图5(c)表示相交、图5(d)表示内切、图5(e)表示包含、图5(f)表示成环,这里的成环是一种直接的成环,当有多条指令时还可能出现一种间接的成环,间接成环不在此进行判断,间接成环由步骤405进行判断,出现成环时,编译过程直接给出提示信息并结束编译,这种成环跳转会引发大量的取指冲突,编码时应杜绝出现;
候选四元组与其他四元组进行比较,当他们之间呈现相离、外切、相交关系时,候选者合法性检查通过;当他们之间呈现内切、包含关系时,如果候选者的跳转区间范围包含于相比较的四元组的跳转区间范围,候选者的合法性检查也是通过的,如果候选者的跳转区间范围包含相比较的四元组的跳转区间范围,候选者的合法性检查不通过;
只有当候选者与集合中所有其他的四元组交互关系检查都通过时,才认为该候选者能够参与后续的跳转区间修改处理,否则必须要重新选择新的候选者四元组进行检测;
步骤404、计算候选者四元组在预定格式下,为避免取指冲突要插入的空白指令数量;
假设对流水线结构的微引擎来说从开始取到跳转指令到跳转完成需要n个时钟的时间,为保证某个跳转指令的目标在该跳转指令所在RAM后面第n+1个RAM中,写入指令的时候必须要插入一些空指令保证跳转目标位置的正确;本实施例以四个微引擎共享存储空间的情况来说明,如图6所示,具体过程包括:
图6中各个微引擎内部执行四级流水结构,微引擎从取指到一个跳转指令到完成跳转指令执行需要经过解码和执行两个时钟周期,设定指令4是一条跳转指令跳转到指令9;由于各个微引擎运行在不同的象限,ME1启动时比ME0慢一个时钟周期,ME2启动时比ME1慢一个时钟周期,ME3启动时比ME2慢一个时钟周期。
从cyc7可以看出,四个微引擎分别对指令9、6、5、4进行取指,如果指令存储以空白指令插入前的方式进行存储,那么ME0和ME2同时从同一个存储空间取指,必然导致取指冲突。如果在跳转指令之间插入必要的NOP指令,让跳转的目的地址在跳转指令取指后的第3(n+1,这里n为2,表示指令取指后还要进行解码和执行两个时钟周期)个RAM中,同样是对指令9、6、5、4进行取指,此时ME0和ME2不再存在取指冲突。
步骤405、候选者四元组要插入的空白指令数量不为空,同时候选者四元组待插入跳转间隔为空,若出现上述情况为真,表示跳转指令之间间接成环,则执行步骤407;若上述情况为假,则执行步骤406;
步骤406、依据候选者四元组以及要插入的空白指令数量生成一条指令插入信息,将候选者四元组从四元组集合中删除,将集合中其他四元组跳转间隔区间和候选者四元组跳转间隔区间相重叠的部分删除,实现过程如图7(a)-图7(c)所示:
图7(a)所示跳转指令四元组集合,有两条跳转指令,这两条指令形成包含关系,第一条指令包含第二条指令,根据前面的候选者选择方式可知,第二条跳转指令首先被处理,生成的插入信息以三元组的形式进行表示,该三元组为Enop(插入起始地址,插入终止地址,插入指令数量),如图7(b)所示,插入起始和终止地址从候选者的跳转间隔区间获取而来。
在跳转间隔4-9之间插入2条空指令,必须引起跳转间隔为2-12的跳转间隔的变换,将插入空白指令对其他跳转指令的影响反馈到跳转四元组,如图7(c)中指令的跳转间隔大小变化为11。
把候选者从四元组集合中删除,并将集合中其他四元组跳转间隔和候选者四元组跳转间隔有重叠的部分进行删除,如图7(c)中指令的跳转间隔变化为2-4/9-12。
步骤407、跳转指令修改失败,指令中存在循环跳转,给出提示后结束。
步骤203、修正完成后生成预定格式的目标文件。
所有跳转指令都经过取指冲突修正以后,将修正产生的空白指令插入中间表示结构,依据多个微引擎指令存储模式生成目标机器文件;
具体地,将生成的插入信息,按照插入的起始地址和终止地址插入跳转指令信息的中间表示结构,重新计算修正后的中间表示结构的指令地址,重定位各个跳转指令源标记,按照目标机器可执行文件格式生成对应的目标文件。
上述指令处理方法,通过修正跳转指令,来消除多个微引擎轮询取指冲突,以牺牲少量指令存储空间为代价,使得多个微引擎共享存储空间时的轮询取指更加高效。
本实施例还提供了一种网络处理器指令处理装置,如图8所示,包括以下模块:中间表示结构生成模块81,跳转指令修正模块82,指令存储模式生成模块83,其中:
中间表示结构生成模块,用于对指令源文件进行处理,生成包含有跳转指令信息的中间表示结构;
跳转指令修正模块,用于根据所述中间表示结构中包含的所述跳转指令信息,对引起取指冲突的跳转指令进行修正;
指令存储模式生成模块,用于修正完成后生成预定格式的目标文件。
另外,该网络处理器还包括:错误告警模块84,用于将指令修正过程中产生的各种错误,以一定的格式进行输出,提醒用户进行修正。
具体地,所述跳转指令修正模块82,按照微引擎的指令空间共享模式,修正跳转指令源指令和目的指令在存储空间的布局,消除由该跳转指令引起的取指冲突,包含以下单元:跳转信息提取单元821,跳转指令地址修正单元822,修正结果反馈单元823,其中:
跳转信息提取单元,用于根据所述跳转指令信息生成所述待修正的跳转指令的四元组集合;
跳转指令地址修正单元,用于按照修正原则从所述四元组集合中选择四元组,以及对选择的四元组逐一进行修正;具体包括:从所述四元组集合中选择一个四元组作为候选者,检验该候选者是否满足所述修正原则,若满足则通过合法性检验,若不满足则重新选择;以及,计算出通过合法性检验的候选者为避免取指冲突所需插入的空白指令的数量,并在对应的中间表示结构中插入所述数量的所述空白指令;
修正结果反馈单元,用于将修正任一四元组产生的影响反馈给其他四元组,确保多个微引擎在所述待修正的跳转指令执行前后无取指冲突;具体包括将已修正的四元组从集合中删除,将集合中其他四元组跳转间隔和已修正四元组跳转间隔有重叠的部分进行删除,将插入空白指令对其他四元组跳转间隔大小的影响反馈到四元组集合。
其中,所述四元组集合为由从所述中间表示结构中抽取出来的待修正的跳转指令信息的四元组组成的集合,所述四元组包含跳转源地址、跳转目的地址、跳转间隔大小和跳转间隔区间四种信息;所述修正原则是指当前候选者的跳转间隔区间包含于相比较的四元组的跳转区间;所述空白指令是指只占有执行周期,但不产生任何影响的一类指令。
另外,所述指令存储模式生成模块,具体用于:重新计算修正后的中间表示结构的指令地址,重定位各个跳转指令源标记,生成预定格式的目标文件。
上述网络处理器,通过修正跳转指令,来消除多个微引擎轮询取指冲突,以牺牲少量指令存储空间为代价,使得多个微引擎共享存储空间时的轮询取指更加高效。
本领域普通技术人员可以理解上述方法中的全部或部分步骤可通过程序来指令相关硬件完成,上述程序可以存储于计算机可读存储介质中,如只读存储器、磁盘或光盘等。可选地,上述实施例的全部或部分步骤也可以使用一个或多个集成电路来实现。相应地,上述实施例中的各模块/单元可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。本发明不限制于任何特定形式的硬件和软件的结合。
以上实施例仅用以说明本发明的技术方案而非限制,仅仅参照较佳实施例对本发明进行了详细说明。本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或者等同替换,而不脱离本发明技术方案的精神和范围,均应涵盖在本发明的权利要求范围当中。
Claims (11)
1.一种指令处理方法,其特征在于,该方法包括:
对指令源文件进行处理,生成包含有跳转指令信息的中间表示结构;
根据所述中间表示结构中包含的所述跳转指令信息,对引起多微引擎取指冲突的跳转指令进行修正;
修正完成后生成预定格式的目标文件;
所述中间表示结构中包含表示跳转源标记和跳转目的标记的字段;
所述根据所述中间表示结构中包含的所述跳转指令信息,对引起取指冲突的跳转指令进行修正,包括:
根据所述跳转指令信息生成待修正的跳转指令的四元组集合;按照修正原则从所述四元组集合中选择四元组;
对选择的四元组逐一进行修正,具体包括:
计算出通过合法性检验的候选者为避免取指冲突所需插入的空白指令的数量,并在对应的中间表示结构中插入所述数量的所述空白指令;
将修正任一四元组产生的影响反馈给其他四元组,确保多个微引擎在所述待修正的跳转指令执行前后无取指冲突;
修正原则是指当前候选者的跳转间隔区间不能完全包含相比较的四元组的跳转间隔区间;所述四元组集合为由从所述中间表示结构中抽取出来的待修正的跳转指令信息的四元组组成的集合,所述四元组包含跳转源地址、跳转目的地址、跳转间隔大小和跳转间隔区间四种信息。
2.根据权利要求1所述的方法,其特征在于:
所述按照修正原则从所述四元组集合中选择四元组,包括:
从所述四元组集合中选择一个四元组作为候选者,检验该候选者是否满足所述修正原则,若满足则通过合法性检验,若不满足则重新选择。
3.根据权利要求1所述的方法,其特征在于:
所述空白指令是指只占有执行周期,但不产生任何影响的一类指令。
4.根据权利要求3所述的方法,其特征在于:
所述将修正任一四元组产生的影响反馈给其他四元组包括:
将已修正的四元组从所述四元组集合中删除,将所述四元组集合中其他四元组的跳转间隔区间和所述已修正的四元组的跳转间隔区间相重叠的部分删除,将插入空白指令对其他四元组跳转间隔大小的影响反馈到所述四元组集合。
5.根据权利要求3所述的方法,其特征在于:
所述修正完成后生成预定格式的目标文件包括:
重新计算修正后的中间表示结构的指令地址,重定位各个跳转指令源标记,生成预定格式的目标文件。
6.一种网络处理器指令处理装置,其特征在于,该装置包括:
中间表示结构生成模块,用于对指令源文件进行处理,生成包含有跳转指令信息的中间表示结构;
跳转指令修正模块,用于根据所述中间表示结构中包含的所述跳转指令信息,对引起多微引擎取指冲突的跳转指令进行修正;
指令存储模式生成模块,用于修正完成后生成预定格式的目标文件;
所述中间表示结构中包含表示跳转源标记和跳转目的标记的字段;
所述跳转指令修正模块包括:
跳转信息提取单元,用于根据所述跳转指令信息生成待修正的跳转指令的四元组集合;
跳转指令地址修正单元,用于按照修正原则从所述四元组集合中选择四元组,以及对选择的四元组逐一进行修正,具体包括:计算出通过合法性检验的候选者为避免取指冲突所需插入的空白指令的数量,并在对应的中间表示结构中插入所述数量的所述空白指令;
修正结果反馈单元,用于将修正任一四元组产生的影响反馈给其他四元组,确保多个微引擎在所述待修正的跳转指令执行前后无取指冲突;
修正原则是指当前候选者的跳转间隔区间不能完全包含相比较的四元组的跳转间隔区间;
所述四元组集合为由从所述中间表示结构中抽取出来的待修正的跳转指令信息的四元组组成的集合,所述四元组包含跳转源地址、跳转目的地址、跳转间隔大小和跳转间隔区间四种信息。
7.根据权利要求6所述的装置,其特征在于,所述装置还包括:
错误告警模块,用于将跳转指令修正过程中产生的各种错误,以一定的格式输出。
8.根据权利要求6所述的装置,其特征在于:
所述跳转指令地址修正单元,具体用于:
从所述四元组集合中选择一个四元组作为候选者,检验该候选者是否满足所述修正原则,若满足则通过合法性检验,若不满足则重新选择。
9.根据权利要求6所述的装置,其特征在于:
所述空白指令是指只占有执行周期,但不产生任何影响的一类指令。
10.根据权利要求9所述的装置,其特征在于:
所述修正结果反馈单元,具体用于:
将已修正的四元组从所述四元组集合中删除,将所述四元组集合中其他四元组的跳转间隔区间和所述已修正的四元组的跳转间隔区间相重叠的部分删除,将插入空白指令对其他四元组跳转间隔大小的影响反馈到所述四元组集合。
11.根据权利要求9所述的装置,其特征在于:
所述指令存储模式生成模块,具体用于:重新计算修正后的中间表示结构的指令地址,重定位各个跳转指令源标记,生成预定格式的目标文件。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210273408.7A CN102830953B (zh) | 2012-08-02 | 2012-08-02 | 指令处理方法及网络处理器指令处理装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210273408.7A CN102830953B (zh) | 2012-08-02 | 2012-08-02 | 指令处理方法及网络处理器指令处理装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102830953A CN102830953A (zh) | 2012-12-19 |
CN102830953B true CN102830953B (zh) | 2017-08-25 |
Family
ID=47334105
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210273408.7A Active CN102830953B (zh) | 2012-08-02 | 2012-08-02 | 指令处理方法及网络处理器指令处理装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102830953B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106293999B (zh) | 2015-06-25 | 2019-04-30 | 深圳市中兴微电子技术有限公司 | 一种微引擎处理报文中间数据快照功能的实现方法及装置 |
CN112148665B (zh) | 2019-06-28 | 2024-01-09 | 深圳市中兴微电子技术有限公司 | 缓存的分配方法及装置 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0400192A1 (de) * | 1989-06-02 | 1990-12-05 | Siemens Nixdorf Informationssysteme Aktiengesellschaft | Verfahren und Anordnung zur Verringerung der Anzahl von Verlustzyklen bei der Bearbeitung von Befehlen in nach dem Fliessbandprinzip arbeitenden Datenverarbeitungsanlagen |
CN1355900A (zh) * | 1999-05-13 | 2002-06-26 | Arc国际美国控股公司 | 用于处理器流水线分段法及再装配的方法以及装置 |
CN1434939A (zh) * | 1999-12-23 | 2003-08-06 | 英特尔公司 | 用于处理失败的加载检查指令的机制 |
CN101655784A (zh) * | 2008-08-21 | 2010-02-24 | 株式会社东芝 | 流水线操作处理器和控制系统 |
WO2010151267A1 (en) * | 2009-06-26 | 2010-12-29 | Intel Corporation | Optimizations for an unbounded transactional memory (utm) system |
CN102184092A (zh) * | 2011-05-04 | 2011-09-14 | 西安电子科技大学 | 基于流水线结构的专用指令集处理器 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9459851B2 (en) * | 2010-06-25 | 2016-10-04 | International Business Machines Corporation | Arranging binary code based on call graph partitioning |
-
2012
- 2012-08-02 CN CN201210273408.7A patent/CN102830953B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0400192A1 (de) * | 1989-06-02 | 1990-12-05 | Siemens Nixdorf Informationssysteme Aktiengesellschaft | Verfahren und Anordnung zur Verringerung der Anzahl von Verlustzyklen bei der Bearbeitung von Befehlen in nach dem Fliessbandprinzip arbeitenden Datenverarbeitungsanlagen |
CN1355900A (zh) * | 1999-05-13 | 2002-06-26 | Arc国际美国控股公司 | 用于处理器流水线分段法及再装配的方法以及装置 |
CN1434939A (zh) * | 1999-12-23 | 2003-08-06 | 英特尔公司 | 用于处理失败的加载检查指令的机制 |
CN101655784A (zh) * | 2008-08-21 | 2010-02-24 | 株式会社东芝 | 流水线操作处理器和控制系统 |
WO2010151267A1 (en) * | 2009-06-26 | 2010-12-29 | Intel Corporation | Optimizations for an unbounded transactional memory (utm) system |
CN102184092A (zh) * | 2011-05-04 | 2011-09-14 | 西安电子科技大学 | 基于流水线结构的专用指令集处理器 |
Also Published As
Publication number | Publication date |
---|---|
CN102830953A (zh) | 2012-12-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103354522B (zh) | 一种多级流表查找方法和装置 | |
TWI465945B (zh) | 用於型樣辨識處理器中降低電力消耗之方法及裝置 | |
CN105224692B (zh) | 支持多核处理器的sdn多级流表并行查找的系统及方法 | |
US8788991B2 (en) | State grouping for element utilization | |
US8661023B1 (en) | Optimizing search query logic to speed retrieval | |
CN100465895C (zh) | 编译器、编译方法 | |
CN109791492B (zh) | 流水线相关树查询优化器和调度器 | |
TW200401206A (en) | Enhanced multiway radix tree and related methods | |
CN105045632A (zh) | 一种多核环境下实现免锁队列的方法和设备 | |
JP2014199710A (ja) | 半導体装置及び半導体装置に対するエントリアドレス書き込み/読み出し方法 | |
US20140269723A1 (en) | Apparatus and Method for Processing Alternately Configured Longest Prefix Match Tables | |
JP2005242997A (ja) | データ検索装置及び方法 | |
CN102830953B (zh) | 指令处理方法及网络处理器指令处理装置 | |
CN106406820B (zh) | 一种网络处理器微引擎的多发射指令并行处理方法及装置 | |
US20160132559A1 (en) | Tcam-based table query processing method and apparatus | |
CN109299101A (zh) | 数据检索方法、装置、服务器和存储介质 | |
JPH01188950A (ja) | デッドロック回避実行制御方式 | |
US8990741B2 (en) | Circuit design support device, circuit design support method and program | |
JP2012150634A (ja) | ベクトル命令制御回路及びリストベクトルの追い越し制御方法 | |
CN107018078A (zh) | 多分支跳转协处理方法及装置 | |
CN105579966B (zh) | 数据处理设备和计算机可读分布介质 | |
CN100365567C (zh) | 微控制器 | |
Antoš et al. | Hardware router’s lookup machine and its formal verification | |
JP6669841B2 (ja) | 回路検証装置、回路検証方法、および、コンピュータ・プログラム | |
KR100899097B1 (ko) | 복수의 인덱싱 정보를 제공하는 방법 및 이를 이용한 캐쉬메모리 장치 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20221114 Address after: 518055 Zhongxing Industrial Park, Liuxian Avenue, Xili street, Nanshan District, Shenzhen City, Guangdong Province Patentee after: SANECHIPS TECHNOLOGY Co.,Ltd. Address before: 518057 Ministry of justice, Zhongxing building, South Science and technology road, Nanshan District hi tech Industrial Park, Shenzhen, Guangdong Patentee before: ZTE Corp. |