CN106406820A - 一种网络处理器微引擎的多发射指令并行处理方法及装置 - Google Patents
一种网络处理器微引擎的多发射指令并行处理方法及装置 Download PDFInfo
- Publication number
- CN106406820A CN106406820A CN201510456059.6A CN201510456059A CN106406820A CN 106406820 A CN106406820 A CN 106406820A CN 201510456059 A CN201510456059 A CN 201510456059A CN 106406820 A CN106406820 A CN 106406820A
- Authority
- CN
- China
- Prior art keywords
- instruction
- instructions
- class
- unit
- parallel
- 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.)
- Granted
Links
- 238000003672 processing method Methods 0.000 title claims abstract description 15
- 238000000034 method Methods 0.000 claims abstract description 29
- 238000012545 processing Methods 0.000 claims abstract description 28
- 238000002372 labelling Methods 0.000 claims description 32
- 238000009826 distribution Methods 0.000 claims description 18
- 239000003550 marker Substances 0.000 claims description 10
- 206010008190 Cerebrovascular accident Diseases 0.000 claims description 7
- 208000006011 Stroke Diseases 0.000 claims description 7
- 238000003860 storage Methods 0.000 claims description 7
- 238000010586 diagram Methods 0.000 description 11
- 238000004590 computer program Methods 0.000 description 6
- 230000006870 function Effects 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 4
- 238000000151 deposition Methods 0.000 description 3
- 238000013461 design Methods 0.000 description 2
- 238000012797 qualification Methods 0.000 description 2
- 239000000654 additive Substances 0.000 description 1
- 230000000996 additive effect Effects 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000032823 cell division Effects 0.000 description 1
- 239000008358 core component Substances 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 235000013399 edible fruits Nutrition 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000010304 firing Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
本发明公开了一种网络处理器微引擎的多发射指令并行处理方法及装置,包括:对指令间的相关性进行判断和标记,根据所述标记判断是否并行发射指令;当并行发射指令时,利用并行解码单元对所述指令进行解析,得到各个指令的指令类型和源操作数的地址;根据所述指令的源操作数的地址,在多端口内核寄存器中获取源操作数;根据所述指令的指令类型,为所述指令分配相应的可执行单元对所述源操作数进行处理;将处理结果存储至多端口内核寄存器中。
Description
技术领域
本发明涉及网络处理器技术,尤其涉及一种网络处理器微引擎(ME,MicroEngine)的多发射指令并行处理方法与装置。
背景技术
为了满足未来网络发展的需要,提高路由器的性能,处于因特网(Internet)骨干位置的核心路由器进行了一个又一个的技术变革。尤其在高端路由器市场,网络处理器以其杰出的报文处理性能及可编程性已经成为构成路由转发引擎不可替代的部分。
在网络处理器系统中,ME是网络处理器的核心部件,负责根据微码指令(Microcode Instructions)完成对报文的解析与处理。因此,微引擎的处理性能是网络处理器的重要参数,决定了网络处理器整体的性能表现。
现有的微引擎技术中,传统的单发射指令流水线,每次只能处理一条指令,完成逻辑计算/跳转/数据搬移中的一类操作,这就造成很多其他的执行单元处于空闲状态,内核的资源没有充分利用起来,即微引擎性能没有最大化。
现有的多发射指令流水线,主要采用超长指令集技术。用户在编写微码时,根据需求,尽量在一条超长指令中尽可能多将不同的可执行单元利用起来,提高指令并行性。这种方案最主要依靠在预编译阶段,由用户来完成执行单元的并行使用,易增加用户编程的复杂度,从而增加了人力成本。另外,超长指令的存储需要更大的指令存储器,增加了芯片成本。
发明内容
为解决上述技术问题,本发明实施例提供了一种网络处理器微引擎的多发射指令并行处理方法及装置。
本发明实施例提供的网络处理器微引擎的多发射指令并行处理方法包括:
对指令间的相关性进行判断和标记,根据所述标记判断是否并行发射指令;
当并行发射指令时,利用并行解码单元对所述指令进行解析,得到各个指令的指令类型和源操作数的地址;
根据所述指令的源操作数的地址,在多端口内核寄存器中获取源操作数;
根据所述指令的指令类型,为所述指令分配相应的可执行单元对所述源操作数进行处理;
将处理结果存储至多端口内核寄存器中。
本发明实施例中,所述对指令间的相关性进行判断和标记,包括:
判断前后两条指令的目的寄存器是否在同一个区域;
当前后两条指令的目的寄存器不在同一个区域时,判断前后两条指令的目的寄存器是否存在数据冒险;
当前后两条指令的目的寄存器不存在数据冒险时,判断前后两条指令的指令类型是否不同;
当前后两条指令的指令类型不同时,判断前一条指令是否为跳转指令;
当前一条指令不是跳转指令时,确定两条指令不相关,并在后一条指令上置上不相关标记。
本发明实施例中,所述根据所述标记判断是否并行发射指令,包括:
当所述后一条指令置有不相关标记时,一个线程并行发射前后两条指令。
本发明实施例中,所述多端口内核寄存器按照线程分为两组寄存器,每组寄存器包括4个寄存器单元;一条指令的两个源操作数分别在两个不同的寄存器单元中;一个线程的两条指令的目的操作数分别在两个不同的寄存器单元中;
所述多端口内核寄存器具有8个数据读口和4个数据写口,同时支持四条指令访问,每条指令访问两个源操作数和一个目的操作数。
本发明实施例中,所述指令的指令类型大类分为逻辑计算类指令、数据上传/下载类指令、跳转类指令;每一指令类型大类中又包括多个指令小类;每个线程对应一组可执行单元,包括:逻辑计算类执行单元、数据上传/下载类执行单元、跳转类执行单元;
所述根据所述指令的指令类型,为所述指令分配相应的可执行单元,包括:
当一个线程的两条指令大类不一致时,将各组的指令分配到各自对应的可执行单元;
当一个线程的两条指令大类一致且指令小类不一致时,根据以下三种情况处理:
指令大类属逻辑计算类指令时,线程内分配各自的逻辑计算类执行单元;
指令大类属上传/下载类指令时,线程内分配各自的数据上传/下载类执行单元;
其中一条指令属跳转类指令时,按约束分配各自的可执行单元。
本发明实施例提供的网络处理器微引擎的多发射指令并行处理装置包括:
编译单元,用于对指令间的相关性进行判断和标记,根据所述标记判断是否并行发射指令;
并行解码单元,用于当并行发射指令时,并行对所述指令进行解析,得到各个指令的指令类型和源操作数的地址;
读取单元,用于根据所述指令的源操作数的地址,在多端口内核寄存器中获取源操作数;
指令分配单元,用于根据所述指令的指令类型,为所述指令分配相应的可执行单元对所述源操作数进行处理;
写入单元,用于将处理结果存储至多端口内核寄存器中。
本发明实施例中,所述编译单元,还用于判断前后两条指令的目的寄存器是否在同一个区域;当前后两条指令的目的寄存器不在同一个区域时,判断前后两条指令的目的寄存器是否存在数据冒险;当前后两条指令的目的寄存器不存在数据冒险时,判断前后两条指令的指令类型是否不同;当前后两条指令的指令类型不同时,判断前一条指令是否为跳转指令;当前一条指令不是跳转指令时,确定两条指令不相关,并在后一条指令上置上不相关标记。
本发明实施例中,所述编译单元,还用于当所述后一条指令置有不相关标记时,一个线程并行发射前后两条指令。
本发明实施例中,所述多端口内核寄存器按照线程分为两组寄存器,每组寄存器包括4个寄存器单元;一条指令的两个源操作数分别在两个不同的寄存器单元中;一个线程的两条指令的目的操作数分别在两个不同的寄存器单元中;
所述多端口内核寄存器具有8个数据读口和4个数据写口,同时支持四条指令访问,每条指令访问两个源操作数和一个目的操作数。
本发明实施例中,所述指令的指令类型大类分为逻辑计算类指令、数据上传/下载类指令、跳转类指令;每一指令类型大类中又包括多个指令小类;每个线程对应一组可执行单元,包括:逻辑计算类执行单元、数据上传/下载类执行单元、跳转类执行单元;
所述指令分配单元,还用于当一个线程的两条指令大类不一致时,将各组的指令分配到各自对应的可执行单元;当一个线程的两条指令大类一致且指令小类不一致时,根据以下三种情况处理:指令大类属逻辑计算类指令时,线程内分配各自的逻辑计算类执行单元;指令大类属上传/下载类指令时,线程内分配各自的数据上传/下载类执行单元;其中一条指令属跳转类指令时,按约束分配各自的可执行单元。
本发明实施例的技术方案中,首先通过编译单元完成指令间相关性的判断和标记,能够降低微码人员编程的复杂度;根据标记判断是否并行发射指令;当并行发射指令时,利用并行解码单元对所述指令进行解析,得到各个指令的指令类型和源操作数的地址,实现了多发射指令的并行解析;然后,根据所述指令的源操作数的地址,在多端口内核寄存器中获取源操作数;根据所述指令的指令类型,为所述指令分配相应的可执行单元对所述源操作数进行处理;将处理结果存储至多端口内核寄存器中。独特的多端内核寄存器结构能够很好的支持多条指令并行处理,并且分配相应的可执行单元也可对所述源操作数进行并行处理,极大的提升了微引擎的性能。
附图说明
图1为本发明实施例的网络处理器微引擎的多发射指令并行处理方法的流程示意图;
图2为本发明实施例的多发射指令并行处理的原理图;
图3为本发明实施例的判断和标记指令间相关性的流程图;
图4为本发明实施例的流水线读取源操作数和回写目的寄存器的流程图;
图5为本发明实施例的多端口内核寄存器的结构图;
图6为本发明实施例的流水线并行处理指令的流程图;
图7为本发明实施例的并行解码单元和指令分配单元的结构图;
图8为本发明实施例的网络处理器微引擎的多发射指令并行处理装置的结构组成示意图。
具体实施方式
本发明实施例的一种网络处理器微引擎的多发射指令并行处理方法与装置,通过编译单元完成指令间相关性的判断和标记;设计了独特的多端口内核寄存器结构;采用并行解码单元和可执行单元完成多发射指令的并行处理。为使本发明实施例的目的、技术方案和优点更加清楚明白,下文中将结合附图对本发明实施例进行详细说明。
图1为本发明实施例的网络处理器微引擎的多发射指令并行处理方法的流程示意图,如图1所示,所述网络处理器微引擎的多发射指令并行处理方法包括以下步骤:
步骤101:对指令间的相关性进行判断和标记,根据所述标记判断是否并行发射指令。
本发明实施例中,所述指令间的相关性,包括:
一个线程前后两条指令间是否存在数据冒险、是否共用源操作数、是否共用目的操作数、是否共用同一个可执行单元的情况,只要存在其中一种情况,那么就判定前后两条指令存在相关性,否则不存在相关性。前后指令是否存在相关性,决定了这两条指令在一个线程中是否可以被同时发射,并行执行。
本发明实施例支持同时调度两个线程执行,即线程A和线程B。
编译单元在编译时,判断前后两条指令的相关性,当前后两条指令不相关时,将指令的不相关标记置为有效。每个线程在调度时,根据不相关标记决定同时发射一条指令还是发射两条指令。
通过利用指令间不相关性,可以最大程度上完成指令并行,发挥执行单元的功效,减少执行单元空闲造成的性能损失,从而提高ME整体性能。
在一实施方式中,所述对指令间的相关性进行判断和标记,包括:
判断前后两条指令的目的寄存器是否在同一个区域;
当前后两条指令的目的寄存器不在同一个区域时,判断前后两条指令的目的寄存器是否存在数据冒险;
当前后两条指令的目的寄存器不存在数据冒险时,判断前后两条指令的指令类型是否不同;
当前后两条指令的指令类型不同时,判断前一条指令是否为跳转指令;
当前一条指令不是跳转指令时,确定两条指令不相关,并在后一条指令上置上不相关标记。
本发明实施例中,所述根据所述标记判断是否并行发射指令,包括:
当所述后一条指令置有不相关标记时,一个线程并行发射前后两条指令。
步骤102:当并行发射指令时,利用并行解码单元对所述指令进行解析,得到各个指令的指令类型和源操作数的地址。
参照图2,指令进入流水线解码级,进行指令解析201。
为支持同时最多4条指令处理,本发明实施例提供了4个并行的解码单元。解码单元对指令进行解码,解析出指令类型。
本发明实施例中,所述指令类型包括:
指令大类分为逻辑计算类指令、数据上传/下载类指令、跳转类指令,每一指令大类中又包括多个指令小类,例如:逻辑计算类指令中包括加法运算、剑法运算、与或逻辑运算等,每个指令小类有自己单独的指令编码。本发明实施例所述的指令类型主要是指每条指令的指令小类。
同时,并行解码单元还解析出指令所需的源操作数在多端口内核寄存器中的地址。
步骤103:根据所述指令的源操作数的地址,在多端口内核寄存器中获取源操作数。
如图2所示,取得源操作数在多端口内核寄存器中的地址后,访问多端口内核寄存器取得源操作数202。
为了支持最大四条指令同时被执行,考虑到源操作数/目的操作数的访问,需要将多端口内核寄存器做成多端口的结构。本发明实施例的多端口内核寄存器提供8个数据读口和4个数据写口,可以同时支持四条指令访问,每条指令可以访问两个源操作数和一个目的操作数。
本发明实施例中,所述多端口内核寄存器按照线程分为两组寄存器,每组寄存器包括4个寄存器单元;一条指令的两个源操作数分别在两个不同的寄存器单元中;一个线程的两条指令的目的操作数分别在两个不同的寄存器单元中。
步骤104:根据所述指令的指令类型,为所述指令分配相应的可执行单元对所述源操作数进行处理。
如图2所示,从多端口内核寄存器中取得源操作数后,指令分配单元开始根据指令类型进行可执行单元的分配,使处理性能最大化203。
本发明实施例中,所述可执行单元,包括:逻辑计算类执行单元、数据上传/下载类执行单元、跳转类执行单元。本发明实施例所述的这三类执行单元,对应的完成所述三大类指令的执行功能。本发明实施例提供两组逻辑计算类执行单元、两组数据上传/下载类执行单元和两组跳转类执行单元。
本发明实施例所述的流水线最多有4条指令同时执行,指令分配单元根据各自的指令类型将指令分配到各自的可执行单元,并且保证相同类型的指令分配到不同组的可执行单元,不能产生资源冲突引发结构冒险。
本发明实施例中的指令类型大类分为逻辑计算类指令、数据上传/下载类指令、跳转类指令;每一指令类型大类中又包括多个指令小类;每个线程对应一组可执行单元,包括:逻辑计算类执行单元、数据上传/下载类执行单元、跳转类执行单元;为此,所述根据所述指令的指令类型,为所述指令分配相应的可执行单元,包括:
当一个线程的两条指令大类不一致时,将各组的指令分配到各自对应的可执行单元;
当一个线程的两条指令大类一致且指令小类不一致时,根据以下三种情况处理:
指令大类属逻辑计算类指令时,线程内分配各自的逻辑计算类执行单元;
指令大类属上传/下载类指令时,线程内分配各自的数据上传/下载类执行单元;
其中一条指令属跳转类指令时,按约束分配各自的可执行单元。
步骤105:将处理结果存储至多端口内核寄存器中。
如图2所示,指令分配到各自的可执行单元并完成执行,执行后的处理结果需要回写到指定的目的寄存器,如果是跳转类指令那么将从指令存储器中重新取址204。
本发明实施例的内核寄存器提供4个数据写口,最多支持4条指令完成数据回写。操作结果回写后,一条指令也就处理完毕。
编译单元在编译时,判断前后两条指令的相关性,相关标记决定了一个线程可以同时发射一条指令还是发射两条指令。图3为本发明实施例的判断和标记指令间相关性的流程图,该流程包括以下步骤:
步骤301:判断前后两条指令的目的寄存器是否在同一个区域。
一具体实施例中,所述同一个区域,主要是:
多端口内核寄存器可以为每个线程提供32个寄存器,编号依次为寄存器0到寄存器31,每个寄存器空间为4字节。将其中的寄存器0到寄存器15分为一个区域,寄存器16到寄存器31分为另外一个区域。
如果前后两条指令的目的寄存器在同一个区域,那么就判定为前后指令相关,如图3所示,不符合条件,编译单元放弃置不相关标记。如果前后两条指令的目的寄存器不在同一个区域,那么就继续进行步骤302的判定。
步骤302:判断前后两条指令的目的寄存器是否存在数据冒险。
一具体实施例中,所述数据冒险,主要是:后一条指令的源操作数寄存器是否为前一条指令的目的寄存器。
如果前后两条指令存在数据冒险,那么就判定为前后指令相关,如图3所示,不符合条件,编译单元放弃置不相关标记。如果前后两条指令不存在数据冒险,那么就继续进行步骤303的判定。
步骤303:判断前后两条指令的指令类型是否不同,不使用同一个可执行单元。
这里判断的指令类型除跳转类指令外,都是指令小类,如果前后两条指令小类相同,那么就判定为前后指令相关,如果同属跳转类指令,那么只需判断指令大类,就判定为前后指令相关,如图3所示,不符合条件,编译单元放弃置不相关标记。如果前后两条指令类型不同,至此,就判定前后两条指令不相关,在后一条指令中置上不相关标记。
步骤304:判断前一条指令是否为跳转指令。
步骤305:如果前一条指令为跳转指令,那么就判定为前后指令相关,不符合条件,编译单元放弃置不相关标记。
步骤306:如果前一条指令不为跳转指令,就判定前后两条指令不相关,在后一条指令中置上不相关标记。
本发明实施例中,指令需要访问多端口内核寄存器取得源操作数和回写目的寄存器,图4为本发明实施例的流水线读取源操作数和回写目的寄存器的流程图,该流程包括以下步骤:
步骤401:按线程分配,将多端口内核寄存器分为两组。
如图5所示,本发明实施例的多端口内核寄存器模块分为两组,分别为线程A和线程B一组寄存器,每组寄存器提供4个寄存器单元。
一具体实施例中,所述线程A的4个寄存器单元,包括:一组寄存器0到寄存器15为寄存器单元0,另一组寄存器0到寄存器15为寄存器单元2;一组寄存器16到寄存器31为寄存器单元1,另一组寄存器16到寄存器31为寄存器单元3。线程B的4个寄存器单元划分规则和线程A相同,分别为寄存器单元4、5、6、7。
步骤402:组内,根据约束和指令读取源操作数。
按约束规定,一条指令的两个源操作数尽量分别使用两个区域中的操作数,即一个在寄存器0到寄存器15中,另一个在寄存器16到寄存器31中。
如图5所示,读端口0和读端口1提供给指令0完成源操作数的读取,依次类推,读端口2和读端口3提供给指令1,读端口4和读端口5提供给指令2,读端口6和读端口7提供给指令3,这样一条指令就可以访问全部的32个寄存器,也可以取得两个不同的操作数,同时可以充分的利用内核寄存器读口,最大支持四条指令同时访问多端口内核寄存器。
步骤403:组内,根据约束和指令将操作结果回写到目的寄存器。
按约束规定,一个线程的两条指令的目的寄存器也分别使用两个区域中的寄存器。
如图5所示,写端口0提供给指令0,完成操作数结果到目的寄存器的回写,依次类推,写端口1提供给指令1,写端口2提供给指令2,写端口3提供给指令3,这样就可以充分的利用内核寄存器写口,最大支持四条指令同时访问内核寄存器。
图6为本发明实施例的流水线并行处理指令的流程图,该流程包括以下步骤:
步骤601:指令并行解码,解析出指令类型。
如图7所示,4个解码单元分析对4条指令进行解码,解析出各自的指令类型。本专利所述实施例所述的三类指令类型,逻辑计算类指令、数据上传/下载类指令、跳转类指令。
步骤602:根据指令类型,对可执行单元进行分组。
如图7所示,本发明实施例提供两组逻辑计算类执行单元、两组数据上传/下载类执行单元和两组跳转类执行单元,为线程A和B分别提供一组逻辑计算类执行单元、数据上传/下载类执行单元和跳转类执行单元。
这里主要分类的规则,主要是针对一个线程的两条指令大类一样而指令小类不一致的情况,如果前后两条指令的指令大类不一致,那么只需要将各组的指令分配到各自对应的可执行单元即可,不会产生冲突。
两条指令大类一样而指令小类不一致时,分三种情况,具体地如下:
第一种情况:指令大类属逻辑计算类指令,小类不一致,线程内分配各自的计算单元。
一个线程的两条指令如果都是逻辑计算类指令,由于编译单元的约束,这两条指令小类不一致,所以只需要将一个线程根据指令类型分配到各自所需的计算单元即可。
第二种情况:指令大类属上传/下载类指令,小类不一致,线程内分配各自的数据上传/下载单元。
一个线程的两条指令如果都是指令大类属上传/下载类指令,由于编译单元的约束,这两条指令小类不一致,所以只需要将根据指令类型分配到各自所需的计算单元即可。
第三种情况:其中一条指令属跳转类指令,按约束分配各自的执行单元。
按照编译单元约束,如果前一条为跳转指令,这时一个线程只发射一条指令,那么只给这条指令分配跳转执行单元。如果后一条为跳转指令,那么根据类型,各自分配执行单元。
步骤603:指令分配单元完成可执行单元的有效分配。
图8为本发明实施例的网络处理器微引擎的多发射指令并行处理装置的结构组成示意图,如图8所示,所述网络处理器微引擎的多发射指令并行处理装置包括:
编译单元81,用于对指令间的相关性进行判断和标记,根据所述标记判断是否并行发射指令;
并行解码单元82,用于当并行发射指令时,并行对所述指令进行解析,得到各个指令的指令类型和源操作数的地址;
读取单元83,用于根据所述指令的源操作数的地址,在多端口内核寄存器中获取源操作数;
指令分配单元84,用于根据所述指令的指令类型,为所述指令分配相应的可执行单元对所述源操作数进行处理;
写入单元85,用于将处理结果存储至多端口内核寄存器中。
所述编译单元81,还用于判断前后两条指令的目的寄存器是否在同一个区域;当前后两条指令的目的寄存器不在同一个区域时,判断前后两条指令的目的寄存器是否存在数据冒险;当前后两条指令的目的寄存器不存在数据冒险时,判断前后两条指令的指令类型是否不同;当前后两条指令的指令类型不同时,判断前一条指令是否为跳转指令;当前一条指令不是跳转指令时,确定两条指令不相关,并在后一条指令上置上不相关标记。
所述编译单元81,还用于当所述后一条指令置有不相关标记时,一个线程并行发射前后两条指令。
所述多端口内核寄存器按照线程分为两组寄存器,每组寄存器包括4个寄存器单元;一条指令的两个源操作数分别在两个不同的寄存器单元中;一个线程的两条指令的目的操作数分别在两个不同的寄存器单元中;
所述多端口内核寄存器具有8个数据读口和4个数据写口,同时支持四条指令访问,每条指令访问两个源操作数和一个目的操作数。
所述指令的指令类型大类分为逻辑计算类指令、数据上传/下载类指令、跳转类指令;每一指令类型大类中又包括多个指令小类;每个线程对应一组可执行单元,包括:逻辑计算类执行单元、数据上传/下载类执行单元、跳转类执行单元;
所述指令分配单元84,还用于当一个线程的两条指令大类不一致时,将各组的指令分配到各自对应的可执行单元;当一个线程的两条指令大类一致且指令小类不一致时,根据以下三种情况处理:指令大类属逻辑计算类指令时,线程内分配各自的逻辑计算类执行单元;指令大类属上传/下载类指令时,线程内分配各自的数据上传/下载类执行单元;其中一条指令属跳转类指令时,按约束分配各自的可执行单元。
本领域技术人员应当理解,图8所示的网络处理器微引擎的多发射指令并行处理装置中的各单元的实现功能可参照前述网络处理器微引擎的多发射指令并行处理方法的相关描述而理解。
本发明上述实施例所述的一种网络处理器微引擎的多发射指令并行处理方法与装置,通过编译单元完成指令间相关性的判断和标记;设计了独特的支持多端口访问的内核寄存器结构;采用并行解码单元和指令分配单元完成多发射指令的并行处理。本发明实施例首先通过编译单元完成指令间相关性的判断和标记能够降低微码软件人员编程的复杂度;此外,独特的多端口访问的内核寄存器结构能够很好的支持多条指令并行处理;并行解码单元和指令分配单元实现了多发射指令的并行处理,方案实现相对简单,极大的提升了微引擎的性能。
上述各单元可以由电子设备中的中央处理器(Central Processing Unit,CPU)、数字信号处理器(Digital Signal Processor,DSP)或可编程逻辑阵列(Field-Programmable Gate Array,FPGA)实现。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用硬件实施例、软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。
Claims (10)
1.一种网络处理器微引擎的多发射指令并行处理方法,其特征在于,所述方法包括:
对指令间的相关性进行判断和标记,根据所述标记判断是否并行发射指令;
当并行发射指令时,利用并行解码单元对所述指令进行解析,得到各个指令的指令类型和源操作数的地址;
根据所述指令的源操作数的地址,在多端口内核寄存器中获取源操作数;
根据所述指令的指令类型,为所述指令分配相应的可执行单元对所述源操作数进行处理;
将处理结果存储至多端口内核寄存器中。
2.根据权利要求1所述的网络处理器微引擎的多发射指令并行处理方法,其特征在于,所述对指令间的相关性进行判断和标记,包括:
判断前后两条指令的目的寄存器是否在同一个区域;
当前后两条指令的目的寄存器不在同一个区域时,判断前后两条指令的目的寄存器是否存在数据冒险;
当前后两条指令的目的寄存器不存在数据冒险时,判断前后两条指令的指令类型是否不同;
当前后两条指令的指令类型不同时,判断前一条指令是否为跳转指令;
当前一条指令不是跳转指令时,确定两条指令不相关,并在后一条指令上置上不相关标记。
3.根据权利要求2所述的网络处理器微引擎的多发射指令并行处理方法,其特征在于,所述根据所述标记判断是否并行发射指令,包括:
当所述后一条指令置有不相关标记时,一个线程并行发射前后两条指令。
4.根据权利要求1所述的网络处理器微引擎的多发射指令并行处理方法,其特征在于,
所述多端口内核寄存器按照线程分为两组寄存器,每组寄存器包括4个寄存器单元;一条指令的两个源操作数分别在两个不同的寄存器单元中;一个线程的两条指令的目的操作数分别在两个不同的寄存器单元中;
所述多端口内核寄存器具有8个数据读口和4个数据写口,同时支持四条指令访问,每条指令访问两个源操作数和一个目的操作数。
5.根据权利要求1至4任一项所述的网络处理器微引擎的多发射指令并行处理方法,其特征在于,所述指令的指令类型大类分为逻辑计算类指令、数据上传/下载类指令、跳转类指令;每一指令类型大类中又包括多个指令小类;每个线程对应一组可执行单元,包括:逻辑计算类执行单元、数据上传/下载类执行单元、跳转类执行单元;
所述根据所述指令的指令类型,为所述指令分配相应的可执行单元,包括:
当一个线程的两条指令大类不一致时,将各组的指令分配到各自对应的可执行单元;
当一个线程的两条指令大类一致且指令小类不一致时,根据以下三种情况处理:
指令大类属逻辑计算类指令时,线程内分配各自的逻辑计算类执行单元;
指令大类属上传/下载类指令时,线程内分配各自的数据上传/下载类执行单元;
其中一条指令属跳转类指令时,按约束分配各自的可执行单元。
6.一种网络处理器微引擎的多发射指令并行处理装置,其特征在于,所述装置包括:
编译单元,用于对指令间的相关性进行判断和标记,根据所述标记判断是否并行发射指令;
并行解码单元,用于当并行发射指令时,并行对所述指令进行解析,得到各个指令的指令类型和源操作数的地址;
读取单元,用于根据所述指令的源操作数的地址,在多端口内核寄存器中获取源操作数;
指令分配单元,用于根据所述指令的指令类型,为所述指令分配相应的可执行单元对所述源操作数进行处理;
写入单元,用于将处理结果存储至多端口内核寄存器中。
7.根据权利要求6所述的网络处理器微引擎的多发射指令并行处理装置,其特征在于,所述编译单元,还用于判断前后两条指令的目的寄存器是否在同一个区域;当前后两条指令的目的寄存器不在同一个区域时,判断前后两条指令的目的寄存器是否存在数据冒险;当前后两条指令的目的寄存器不存在数据冒险时,判断前后两条指令的指令类型是否不同;当前后两条指令的指令类型不同时,判断前一条指令是否为跳转指令;当前一条指令不是跳转指令时,确定两条指令不相关,并在后一条指令上置上不相关标记。
8.根据权利要求7所述的网络处理器微引擎的多发射指令并行处理装置,其特征在于,所述编译单元,还用于当所述后一条指令置有不相关标记时,一个线程并行发射前后两条指令。
9.根据权利要求6所述的网络处理器微引擎的多发射指令并行处理装置,其特征在于,
所述多端口内核寄存器按照线程分为两组寄存器,每组寄存器包括4个寄存器单元;一条指令的两个源操作数分别在两个不同的寄存器单元中;一个线程的两条指令的目的操作数分别在两个不同的寄存器单元中;
所述多端口内核寄存器具有8个数据读口和4个数据写口,同时支持四条指令访问,每条指令访问两个源操作数和一个目的操作数。
10.根据权利要求6至9任一项所述的网络处理器微引擎的多发射指令并行处理装置,其特征在于,所述指令的指令类型大类分为逻辑计算类指令、数据上传/下载类指令、跳转类指令;每一指令类型大类中又包括多个指令小类;每个线程对应一组可执行单元,包括:逻辑计算类执行单元、数据上传/下载类执行单元、跳转类执行单元;
所述指令分配单元,还用于当一个线程的两条指令大类不一致时,将各组的指令分配到各自对应的可执行单元;当一个线程的两条指令大类一致且指令小类不一致时,根据以下三种情况处理:指令大类属逻辑计算类指令时,线程内分配各自的逻辑计算类执行单元;指令大类属上传/下载类指令时,线程内分配各自的数据上传/下载类执行单元;其中一条指令属跳转类指令时,按约束分配各自的可执行单元。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510456059.6A CN106406820B (zh) | 2015-07-29 | 2015-07-29 | 一种网络处理器微引擎的多发射指令并行处理方法及装置 |
PCT/CN2016/080579 WO2017016255A1 (zh) | 2015-07-29 | 2016-04-28 | 微引擎的多发射指令并行处理方法及装置、存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510456059.6A CN106406820B (zh) | 2015-07-29 | 2015-07-29 | 一种网络处理器微引擎的多发射指令并行处理方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106406820A true CN106406820A (zh) | 2017-02-15 |
CN106406820B CN106406820B (zh) | 2019-01-15 |
Family
ID=57884049
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510456059.6A Active CN106406820B (zh) | 2015-07-29 | 2015-07-29 | 一种网络处理器微引擎的多发射指令并行处理方法及装置 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN106406820B (zh) |
WO (1) | WO2017016255A1 (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109257280A (zh) * | 2017-07-14 | 2019-01-22 | 深圳市中兴微电子技术有限公司 | 一种微引擎及其处理报文的方法 |
WO2020108158A1 (zh) * | 2018-11-28 | 2020-06-04 | 深圳市中兴微电子技术有限公司 | 一种指令数据的处理方法及装置、设备、存储介质 |
CN115657090A (zh) * | 2022-10-24 | 2023-01-31 | 上海时空奇点智能技术有限公司 | Gnss北斗定位模块接口数据低延时解析处理方法 |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113703841B (zh) * | 2021-09-10 | 2023-09-26 | 中国人民解放军国防科技大学 | 一种寄存器数据读取的优化方法、装置及介质 |
CN117093270B (zh) * | 2023-08-18 | 2024-06-14 | 摩尔线程智能科技(北京)有限责任公司 | 指令发送方法、装置、设备及存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6112293A (en) * | 1997-11-17 | 2000-08-29 | Advanced Micro Devices, Inc. | Processor configured to generate lookahead results from operand collapse unit and for inhibiting receipt/execution of the first instruction based on the lookahead result |
CN101706715A (zh) * | 2009-12-04 | 2010-05-12 | 北京龙芯中科技术服务中心有限公司 | 指令调度装置和方法 |
CN101957743A (zh) * | 2010-10-12 | 2011-01-26 | 中国电子科技集团公司第三十八研究所 | 并行数字信号处理器 |
CN102945148A (zh) * | 2012-09-26 | 2013-02-27 | 中国航天科技集团公司第九研究院第七七一研究所 | 一种并行指令集的实现方法 |
CN103218207A (zh) * | 2012-01-18 | 2013-07-24 | 上海算芯微电子有限公司 | 基于单/双发射指令集的微处理器指令处理方法及系统 |
-
2015
- 2015-07-29 CN CN201510456059.6A patent/CN106406820B/zh active Active
-
2016
- 2016-04-28 WO PCT/CN2016/080579 patent/WO2017016255A1/zh active Application Filing
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6112293A (en) * | 1997-11-17 | 2000-08-29 | Advanced Micro Devices, Inc. | Processor configured to generate lookahead results from operand collapse unit and for inhibiting receipt/execution of the first instruction based on the lookahead result |
CN101706715A (zh) * | 2009-12-04 | 2010-05-12 | 北京龙芯中科技术服务中心有限公司 | 指令调度装置和方法 |
CN101957743A (zh) * | 2010-10-12 | 2011-01-26 | 中国电子科技集团公司第三十八研究所 | 并行数字信号处理器 |
CN103218207A (zh) * | 2012-01-18 | 2013-07-24 | 上海算芯微电子有限公司 | 基于单/双发射指令集的微处理器指令处理方法及系统 |
CN102945148A (zh) * | 2012-09-26 | 2013-02-27 | 中国航天科技集团公司第九研究院第七七一研究所 | 一种并行指令集的实现方法 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109257280A (zh) * | 2017-07-14 | 2019-01-22 | 深圳市中兴微电子技术有限公司 | 一种微引擎及其处理报文的方法 |
CN109257280B (zh) * | 2017-07-14 | 2022-05-27 | 深圳市中兴微电子技术有限公司 | 一种微引擎及其处理报文的方法 |
WO2020108158A1 (zh) * | 2018-11-28 | 2020-06-04 | 深圳市中兴微电子技术有限公司 | 一种指令数据的处理方法及装置、设备、存储介质 |
CN115657090A (zh) * | 2022-10-24 | 2023-01-31 | 上海时空奇点智能技术有限公司 | Gnss北斗定位模块接口数据低延时解析处理方法 |
CN115657090B (zh) * | 2022-10-24 | 2023-04-28 | 上海时空奇点智能技术有限公司 | Gnss北斗定位模块接口数据低延时解析处理方法 |
Also Published As
Publication number | Publication date |
---|---|
CN106406820B (zh) | 2019-01-15 |
WO2017016255A1 (zh) | 2017-02-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106406820A (zh) | 一种网络处理器微引擎的多发射指令并行处理方法及装置 | |
CN109213723A (zh) | 用于具有安全、功率降低和性能特征的可配置空间加速器的处理器、方法和系统 | |
US9672035B2 (en) | Data processing apparatus and method for performing vector processing | |
US11012411B2 (en) | Network interface device | |
CN105389158B (zh) | 数据处理系统、编译器、处理器的方法和机器可读介质 | |
US7174432B2 (en) | Asynchronous, independent and multiple process shared memory system in an adaptive computing architecture | |
US7055151B1 (en) | Systems and methods for multi-tasking, resource sharing and execution of computer instructions | |
CN104111818B (zh) | 用于批量线程处理的处理器、处理方法和代码生成设备 | |
US20130054939A1 (en) | Integrated circuit having a hard core and a soft core | |
CN102750133A (zh) | 支持simd的32位三发射的数字信号处理器 | |
CN105573711B (zh) | 一种数据缓存方法及装置 | |
CN106575220A (zh) | 多个经集群极长指令字处理核心 | |
US11023277B2 (en) | Scheduling of tasks in a multiprocessor device | |
CN102520760A (zh) | 一种用于任意波形产生系统的处理器 | |
US11449344B1 (en) | Regular expression processor and parallel processing architecture | |
Bhagyanath et al. | Exploring different execution paradigms in exposed datapath architectures with buffered processing units | |
CN102073480A (zh) | 基于时分复用实现多核处理器内核模拟的方法 | |
Rosière et al. | An out-of-order superscalar processor on FPGA: The reorder buffer design | |
CN106445472B (zh) | 一种字符操作加速方法、装置、芯片、处理器 | |
US10127339B2 (en) | Efficient emulation of circuits | |
CN108628693B (zh) | 处理器调试方法和系统 | |
CN104035825B (zh) | 跳转源列表处理方法、装置及编译器 | |
US11526432B2 (en) | Parallel processing device | |
Zolghadr et al. | GPU-based NoC simulator | |
US20130061213A1 (en) | Methods and systems for optimizing execution of a program in a parallel processing environment |
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 | ||
EE01 | Entry into force of recordation of patent licensing contract |
Application publication date: 20170215 Assignee: Xi'an Chris Semiconductor Technology Co. Ltd. Assignor: SHENZHEN ZTE MICROELECTRONICS TECHNOLOGY CO., LTD. Contract record no.: 2019440020036 Denomination of invention: Multi-issue instruction parallel processing method and device of network processor micro engine Granted publication date: 20190115 License type: Common License Record date: 20190619 |
|
EE01 | Entry into force of recordation of patent licensing contract |