Processing

Please wait...

Settings

Settings

Goto Application

1. WO2020108158 - INSTRUCTION DATA PROCESSING METHOD AND APPARATUS, AND DEVICE AND STORAGE MEDIUM

Document

说明书

发明名称 0001   0002   0003   0004   0005   0006   0007   0008   0009   0010   0011   0012   0013   0014   0015   0016   0017   0018   0019   0020   0021   0022   0023   0024   0025   0026   0027   0028   0029   0030   0031   0032   0033   0034   0035   0036   0037   0038   0039   0040   0041   0042   0043   0044   0045   0046   0047   0048   0049   0050   0051   0052   0053   0054   0055   0056   0057   0058   0059   0060   0061   0062   0063   0064   0065   0066   0067   0068   0069   0070   0071   0072   0073   0074   0075   0076   0077   0078   0079   0080   0081   0082   0083   0084   0085   0086   0087   0088   0089   0090   0091   0092   0093   0094   0095   0096   0097   0098   0099   0100   0101   0102   0103   0104   0105   0106   0107   0108   0109   0110   0111   0112   0113   0114   0115   0116   0117   0118   0119   0120   0121   0122   0123   0124   0125   0126   0127   0128   0129   0130   0131   0132   0133   0134   0135   0136   0137   0138   0139   0140   0141   0142   0143   0144   0145   0146   0147   0148   0149   0150   0151   0152   0153   0154   0155   0156   0157   0158   0159   0160   0161   0162   0163   0164   0165   0166   0167   0168   0169   0170   0171   0172   0173  

权利要求书

1   2   3   4   5   6   7   8   9   10   11   12  

附图

1   2   3   4   5   6   7  

说明书

发明名称 : 一种指令数据的处理方法及装置、设备、存储介质

技术领域

[0001]
本申请实施例涉及计算机系统,涉及但不限于一种指令数据的处理方法及装置、设备、存储介质。

背景技术

[0002]
网络处理器是专门用于网络数据处理的处理器,主要应用于交换机,路由器等网络产品,多用于处理网络中的报文;它具有高处理性能、可编程、可灵活扩展、开发周期短等优势。正是由于网络业务数据的处理与普通系统类程序的不同以及其特性需求,导致网络处理器的指令集设计,必须具有指令执行效率高、指令扩展性强、指令集丰富等特征。
[0003]
同时,在满足转发性能的基础上,要降低逻辑设计的复杂度,减少芯片资源和降低功耗。而这些特征要求不仅需要从指令集设计的每个流程单独考虑,更要把所有流程作整体统一考虑,因此网络处理器的指令集设计和处理是非常复杂的。
[0004]
发明内容
[0005]
有鉴于此,本申请实施例为解决现有技术中存在的至少一个问题而提供一种指令数据的处理方法及装置、设备、存储介质。
[0006]
本申请实施例的技术方案是这样实现的:
[0007]
可选地,本申请实施例提供了一种指令数据的处理方法,所述方法包括:如果确定编译前的指令之间有相同类型的字段,编译时,将所述相同类型的字段存储至指定编码位置;根据每一所述编译前的指令的类型和所述相同类型的字段的属性信息,生成对应的操作码;将所述操作码存储至编译后的指令中;输出所述编译后的指令。
[0008]
可选地,本申请实施例提供了一种指令数据的处理方法,所述方法包括:确定编译后的指令中的操作码;根据所述操作码,确定所述指令的类 型和所述指令中的字段的属性信息;根据所述字段的属性信息,从所述指令中的指定编码位置确定相应类型的字段;根据所述相应类型的字段获取对应的操作数,并输出所述操作数。
[0009]
可选地,本申请实施例提供了一种指令数据的处理装置,所述装置包括:第一存储单元,配置为如果确定编译前的指令之间有相同类型的字段,编译时,将所述相同类型的字段存储至指定编码位置;生成单元,配置为根据每一所述编译前的指令的类型和所述相同类型的字段的属性信息,生成对应的操作码;第二存储单元,配置为将所述操作码存储至编译后的指令中;第一输出单元,配置为输出所述编译后的指令。
[0010]
可选地,本申请实施例提供了一种指令数据的处理装置,所述装置包括:第一确定单元,配置为确定编译后的指令中的操作码;第二确定单元,配置为根据所述操作码,确定所述指令的类型和所述指令中的字段的属性信息;第三确定单元,配置为根据所述字段的属性信息,从所述指令中的指定编码位置确定相应类型的字段;第二输出单元,配置为根据所述相应类型的字段获取对应的操作数,并输出所述操作数。
[0011]
可选地,本申请实施例提供了一种计算机设备,所述计算机设备至少包括:处理器和配置为存储可执行指令的存储介质,其中:处理器配置为执行存储的可执行指令,所述可执行指令配置为执行上述实施例提供的指令数据的处理方法。
[0012]
可选地,本申请实施例提供了一种计算机可读存储介质,所述计算机存储介质中存储有计算机可执行指令,该计算机可执行指令配置为执行上述实施例提供的指令数据的处理方法中的步骤。
[0013]
本申请实施例提供了一种指令数据的处理方法及装置、设备、存储介质,其中,所述方法包括:如果确定编译前的指令之间有相同类型的字段,编译时,将所述相同类型的字段存储至指定编码位置;根据每一所述编译前的指令的类型和所述相同类型的字段的属性信息,生成对应的操作码;将所述操作码存储至编译后的指令中;输出所述编译后的指令。这样,将 令操作码与指令的类型以及指令源操作数的数量和类型直接关联,实现据所述指令操作码完成对指令源操作数的分类获取。

附图说明

[0014]
图1为本申请实施例提供的指令数据的处理方法流程示意图一;
[0015]
图2为本申请实施例提供的指令数据的处理方法流程示意图二;
[0016]
图3为本申请实施例提供的一种网络处理器的指令源操作数处理方法的流程示意图;
[0017]
图4为本申请实施例提供的一种网络处理器指令源操作数的处理装置的组成结构示意图;
[0018]
图5为本申请实施例提供的指令数据的处理装置的组成结构示意图一;
[0019]
图6为本申请实施例提供的指令数据的处理装置的组成结构示意图二;
[0020]
图7为本申请实施例提供的一种计算机设备结构示意图。

具体实施方式

[0021]
相关技术中,在设计网络处理器的指令集时,需要考虑指令编码、储存、获取、解码等几个关键技术,其中指令编解码是指令集设计的基础,直接决定指令集处理的复杂度。同时为了能够处理网络中各种业务数据,需要设计多种不同功能的指令以及大容量的指令空间。因此,如果指令编解码没有对应的好的设计方案,往往会导致逻辑设计的复杂度很高,而且会占用大量的芯片内存,功耗也很高。
[0022]
传统的网络处理器的指令集设计采用与精简指令集计算机(Reduced Instruction Set Computer,简称为RISC)类似的指令流水线解码技术,指令编码采用的是定长方式进行编码。由于仅根据每个指令的功能操作对指令的操作码字段进行编码,导致在解码阶段获取源操作数时,需要先判断每个指令的类型,再根据每个指令记录的源操作数在指令编码中的位置,获取源操作数的编号和地址等字段信息。
[0023]
基于网络处理器的指令数量非常多,通过这样的方式获取源操作数,不仅需要额外增加芯片内存资源,用于存储每个指令的源操作数信息;而且也大大增加了芯片内核的逻辑复杂度。
[0024]
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对发明的具体技术方案做进一步详细描述。以下实施例用于说明本申请,但不用来限制本申请的范围。
[0025]
本申请实施例提供一种指令数据的处理方法,该方法应用于计算机设备,该方法所实现的功能可以通过计算机设备中的处理器调用程序代码来实现,当然程序代码可以保存在计算机存储介质中,可见,该计算机设备至少包括处理器和存储介质。
[0026]
图1为本申请实施例提供的指令数据的处理方法流程示意图一,如图1所示,该方法包括:
[0027]
步骤S11,如果确定编译前的指令之间有相同类型的字段,编译时,将所述相同类型的字段存储至指定编码位置。
[0028]
这里,从预设的指令集中获取至少一个指令,由于每个指令的功能和作用是预设的,可以根据获取到的指令确定编译前的指令之间相同类型的字段,在通过编译单元进行编译时,可以根据相应的规则将每个指令分为几段,每一段占用预设的位置和相应的字节长度,并将该预设的位置和相应的字节长度设置为对应的编码位置,在编译时,可以将各个指令之间相同类型的字段存储至指定编码位置,制定的编码位置可以根据需要预设。例如,指令集中有指令A和指令B,指令A有字段A1,A2,A3,指令B有字段B1,B2,B3,如果A3和B3是相同类型的字段,编译单元会把指令A的A3字段,和指令B的B3字段放在各自编码的相同比特位置。
[0029]
步骤S12,据每一所述编译前的指令的类型和所述相同类型的字段的属性信息,生成对应的操作码。
[0030]
这里,操作码用于指明指令所要完成的操作,操作码的长度可以是固 定的,也可以是变化的。本申请实施例中,可以获取编译前的指令的类型和相同类型的字段的属性信息,对编译前的指令的类型和相同类型的字段的属性信息分别进行标记,根据生成的标记信息生成对应的操作码。这里,指令的类型可以为:逻辑计算类指令、数据上传/下载类指令、跳转类指令和一些特殊类指令等,可以根据需要预设。相同类型的字段可以为不同的源操作数、目的操作数或者其他的字段等。
[0031]
步骤S13,将所述操作码存储至编译后的指令中。
[0032]
这里,编译单元可以将根据上述步骤生成的操作码存储至编译后的指令中的相应编码位置。
[0033]
步骤S14,输出所述编译后的指令。
[0034]
本申请实施例中,如果确定编译前的指令之间有相同类型的字段,编译时,将相同类型的字段存储至指定编码位置,根据每一编译前的指令的类型和相同类型的字段的属性信息,生成对应的操作码,将操作码存储至编译后的指令中,输出编译后的指令。能够将令操作码与指令的类型以及字段的属性信息直接关联,实现据所述指令操作码完成对字段相应的操作数的分类获取。
[0035]
本申请实施例还供了另一指令数据的处理方法,该方法包括:
[0036]
步骤S101,如果确定编译前的指令之间有相同类型的字段,编译时,将所述相同类型的字段存储至指定编码位置。
[0037]
步骤S102,如果确定所述相同类型的字段包括源操作数字段,确定所述源操作数字段的数量和类型。
[0038]
这里,指令中可以包括一个或者多个源操作数字段。本申请实施例中,如果确定相同类型的字段包括源操作数字段,确定源操作数字段的数量和类型。
[0039]
步骤S103,根据每一所述编译前的指令的类型、所述源操作数字段 的数量和类型,生成对应的操作码。
[0040]
这里,可以获取编译前的指令的类型和源操作数字段的数量和类型,对编译前的指令的类型、源操作数字段的数量和类型分别进行标记,根据该标记生成的标识码生成对应的操作码。对源操作数字段的数量和类型分别进行标记,包括:确定源操作数的数量和类型,并根据源操作数的数量和类型生成一个标记。例如:不需要源操作数或者是立即数形式的标记为000;只需要操作一个条件的寄存器的形式标记为001等。
[0041]
上述的步骤S102至步骤S103提供了一种实现步骤“根据每一所述编译前的指令的类型和所述相同类型字段的属性信息,生成对应的操作码”的方式。该方式中,如果确定所述相同类型的字段包括源操作数字段,确定所述源操作数字段的数量和类型,根据每一所述编译前的指令的类型、所述源操作数字段的数量和类型,生成对应的操作码。能够将令操作码与指令的类型以及源操作数字段的数量和类型直接关联,实现据所述指令操作码完成对指令源操作数的分类获取。
[0042]
步骤S104,将所述操作码存储至编译后的指令中。
[0043]
步骤S105,输出所述编译后的指令。
[0044]
本申请实施例还供了另一指令数据的处理方法,该方法包括:
[0045]
步骤S201,根据每一编译前的指令所要执行的功能,对所述编译前的指令进行分类,得到分类结果。
[0046]
这里,可以根据指令所要执行的功能,将编译前的指令分为至少一类。其中,分类结果可以为:逻辑计算类指令、数据上传/下载类指令、跳转类指令和一些特殊类指令等。
[0047]
步骤S202,如果确定编译前的指令之间有相同类型的字段,编译时,将所述相同类型的字段存储至指定编码位置。
[0048]
步骤S203,如果确定所述相同类型的字段包括源操作数字段,根据 所述分类结果,确定所述源操作数字段的数量和类型。
[0049]
这里,可以根据编译前的指令所要执行的功能确定该指令是否需要源操作数,如果需要源操作数,确定所需要的源操作数的数量和类型。以将指令分为逻辑计算类指令、数据上传/下载类指令、跳转类指令为例。其中,逻辑计算类指令通常有目的寄存器,普通寄存器源操作数一,普通寄存器源操作数二或立即数源操作数二等字段等;数据上传/下载类指令通常有目的寄存器,条件寄存器源操作数二,内存源操作数数一或内存源操作数二,立即数源操作数二等字段等;跳转类指令通常有标签,条件寄存器源操作数二等;特殊类指令通常完成网络业务查表,协处理等处理,不需要源操作数。其中,源操作数一指的是有一个操作数,或者有两个操作数时,处于第一位的源操作数;源操作数二指的是有两个操作数时,处于第二位的源操作数。
[0050]
步骤S204,根据每一所述编译前的指令的类型、所述源操作数字段的数量和类型,生成对应的操作码。
[0051]
步骤S205,将所述操作码存储至编译后的指令中。
[0052]
步骤S206,输出所述编译后的指令。
[0053]
本申请实施例还供了另一指令数据的处理方法,该方法包括:
[0054]
步骤S301,根据每一编译前的指令所要执行的功能,对所述编译前的指令进行分类,得到分类结果。
[0055]
步骤S302,如果确定编译前的指令之间有相同类型的字段,编译时,将所述相同类型的字段存储至指定编码位置。
[0056]
步骤S303,如果确定所述相同类型的字段包括源操作数字段,根据所述分类结果,确定所述源操作数字段的数量和类型。
[0057]
步骤S304,对每一所述编译前的指令的类型进行标记,生成与每一所述编译前的指令对应的第一标识码。
[0058]
这里,对指令的类型进行标记是指:编译单元根据指令的类型,生成相应的标识码。例如,可以将指令分为逻辑计算类指令、数据上传/下载类指令、跳转类指令和特殊类指令四种类型,再根据该四种类型生成四个对应标记,分别为逻辑计算类指令对应第一标识码一00、数据上传/下载类指令对应第一标识码二01、跳转类指令对应第一标识码三10、特殊类指令对应第一标识码四11。将上述标识码作为相应的指令的操作码字段编码的第一部分。
[0059]
步骤S305,根据所述源操作数字段的数量和类型,生成对应的第二标识码。
[0060]
这里,以根据源操作数的数量和类型,将指令分为逻辑计算类指令、数据上传/下载类指令、跳转类指令和特殊类指令四种类型分为八种类型为例,形成的类型分别为:不需要源操作数或者是立即数形式的源操作数的指令为类型一;只需要操作一个条件寄存器形式的源操作数的指令为类型二;只需要操作一个普通寄存器形式的源操作数的指令为类型三;只需要操作一个内存形式的源操作数的指令为类型四;需要操作一个普通寄存器形式的源操作数和一个内存形式的源操作数的指令为类型五;需要操作一个普通寄存器形式的源操作数和一个条件寄存器形式的源操作数的指令为类型六;需要操作两个普通寄存器形式的源操作数的指令为类型七;需要操作一个内存形式的源操作数和一个条件寄存器形式的源操作数的指令为类型八。
[0061]
编译单元根据源操作数的数量和类型,对指令进行分类,得到分类结果,对分类结果得到相应的标识码。以上述八种类型为例,类型一对应第二标识码一000,类型二对应第二标识码二001,类型三对应第二标识码三010,类型四对应第二标识码四011,类型五对应第二标识码五100,类型六对应第二标识码六101,类型七对应第二标识码七110,类型八对应第二标识码八111。将上述标识码作为相应的指令的操作码字段编码的第二部分。
[0062]
步骤S306,将所述第一标识码和所述第二标识码合并,生成对应的操作码。
[0063]
这里,可以将经过上述步骤生成的操作码字段编码的第一部分和操作码字段编码的第二部分进行合并,生成对应的操作码。
[0064]
上述的步骤S304至步骤S306提供了一种实现步骤“根据每一所述编译前的指令的类型、所述源操作数字段的数量和类型,生成对应的操作码”的方式。该方式中,能够将令操作码与指令的类型以及源操作数字段的数量和类型直接关联,实现据所述指令操作码完成对指令源操作数的分类获取。
[0065]
步骤S307,将所述操作码存储至编译后的指令中。
[0066]
步骤S308,输出所述编译后的指令。
[0067]
图2为本申请实施例提供的指令数据的处理方法流程示意图二,如图2所示,该方法包括:
[0068]
步骤S21,确定编译后的指令中的操作码。
[0069]
这里,解码单元接收到编译后的指令之后,可以从编译后的指令中确定对应的操作码。
[0070]
步骤S22,根据所述操作码,确定所述指令的类型和所述指令中的字段的属性信息。
[0071]
这里,解码单元获取到编译后的指令,可以从指令中解析出相应的操作码,并根据操作码,确定指令的类型和指令中的字段的属性信息。
[0072]
步骤S23,根据所述字段的属性信息,从所述指令中的指定编码位置确定相应类型的字段。
[0073]
这里,字段是存储在编译后的指令中的指定编码位置,解码单元可以根据字段的属性信息从指定编码位置直接确定相应类型的字段。
[0074]
步骤S24,根据所述相应类型的字段获取对应的操作数,并输出所述 操作数。
[0075]
这里,基于上述步骤确定了相应类型的字段之后,可以直接从相应的寄存器中获取相应的操作数,并对获取的操作数进行相应的处理。
[0076]
本申请实施例中,确定编译后的指令中的操作码,根据操作码,确定指令的类型和指令中的字段的属性信息,根据字段的属性信息,从指令中的指定编码位置确定相应类型的字段,根据相应类型的字段获取对应的操作数,并输出操作数。解码单元能够从编译后的指令中直接截取相应的操作数,不用通过确定指令的类型,再根据指令的类型确定相应的操作数,能够减少判断步骤,并且减少对操作数处理的复杂度。
[0077]
本申请实施例还供了另一指令数据的处理方法,该方法包括:
[0078]
步骤S401,确定编译后的指令中的操作码。
[0079]
步骤S402,如果检测出所述指令需要获取源操作数字段,解析所述需要获取源操作数字段的指令对应的操作码,得到解析结果。
[0080]
这里,解码单元根据操作码判断是否需要获取源操作数,当需要获取源操作数时,解析需要获取源操作数字段的指令对应的操作码,得到解析结果。
[0081]
步骤S403,根据所述解析结果,确定所述指令的类型和所述源操作数字段的属性信息。
[0082]
这里,由于操作码包括第一标识码和第二标识码,可以根据第一标识码确定指令的类型,根据第二标识码确定源操作数字段的属性信息。
[0083]
上述的步骤S402至步骤S403提供了一种实现步骤“根据所述操作码,确定所述指令的类型和所述指令中的字段的属性信息”的方式。该方式中,如果检测出指令需要获取源操作数字段,解析需要获取源操作数字段的指令对应的操作码,得到解析结果,根据解析结果,确定指令的类型和源操作数字段的属性信息。通过对操作码进行解析,能够直接获取指令的类型 和源操作数字段的属性信息,可以减少解码的复杂度。
[0084]
步骤S404,根据所述字段的属性信息,从所述指令中的指定编码位置确定相应类型的字段。
[0085]
步骤S405,根据所述相应类型的字段获取对应的操作数,并输出所述操作数。
[0086]
本申请实施例还供了另一指令数据的处理方法,该方法包括:
[0087]
步骤S501,确定编译后的指令中的操作码。
[0088]
步骤S502,如果检测出所述指令需要获取源操作数字段,解析所述需要获取源操作数字段的指令对应的操作码,得到解析结果。
[0089]
步骤S503,根据所述解析结果,确定所述指令的类型和所述源操作数字段的属性信息。
[0090]
步骤S504,根据从所述操作码中解析出的第一标识码,确定所述指令的类型。
[0091]
这里,解码单元解析操作码的第一部分,即解析操作码的第一标识码,可以确定指令的类型。
[0092]
步骤S505,根据从所述操作码中解析出的第二标识码,确定所述源操作数字段数量和类型。
[0093]
这里,解码单元解析操作码的第二部分,即解析操作码的第二标识码,可以确定源操作数字段数量和类型。
[0094]
步骤S506,根据所述源操作数字段数量和类型,从所述指令中的指定编码位置确定相应类型的字段。
[0095]
这里,可以根据源操作数字段数量和类型,从指令中的指定编码位置确定相应类型的字段。例如,对于源操作数一分成三种情况:指令不需要获取源操作数一,指令直接透传至读取单元;指令需要获取源操作数一,且需要从指令编码中截取源寄存器的编号和地址;指令需要获取源操作数 一,且读地址固定无需其他解码操作。对于源操作数二分四种情况:指令不需要获取源操作二,直接透传至读取单元;指令需要获取源操作数二,且需要从指令编码中截取源寄存器的编号和地址;指令需要获取源操作数二,且所需源寄存器从指令编码中截取后并做转换;指令需要获取源操作数二,且读地址固定无需其他解码操作。
[0096]
上述的步骤S504至步骤S506提供了一种实现步骤“根据所述字段的属性信息,从所述指令中的指定编码位置确定相应类型的字段”的方式。该方式中,根据从操作码中解析出的第一标识码,确定指令的类型;根据从操作码中解析出的第二标识码,确定源操作数字段数量和类型;根据源操作数字段数量和类型,从指令中的指定编码位置确定源操作数字段。能够根据源操作数字段数量和类型,直接从指令中的指定编码位置确定源操作数字段,能够减少解码的复杂度。
[0097]
步骤S507,根据所述相应类型的字段获取对应的操作数,并输出所述操作数。
[0098]
本申请实施例还供了另一指令数据的处理方法,该方法包括:
[0099]
步骤S601,确定编译后的指令中的操作码。
[0100]
步骤S602,如果检测出所述指令需要获取源操作数字段,解析所述需要获取源操作数字段的指令对应的操作码,得到解析结果。
[0101]
步骤S603,根据所述解析结果,确定所述指令的类型和所述源操作数字段的属性信息。
[0102]
步骤S604,根据从所述操作码中解析出的第一标识码,确定所述指令的类型。
[0103]
步骤S605,根据从所述操作码中解析出的第二标识码,确定所述源操作数字段数量和类型。
[0104]
步骤S606,根据所述源操作数字段数量和类型,从所述指令中的指 定编码位置确定相应类型的字段。
[0105]
步骤S607,根据所述源操作数字段的数量和类型,从所述指令中的指定编码位置获取相应的源操作数字段。
[0106]
步骤S608,根据所述源操作数字段,确定所述源操作数的编号和地址。
[0107]
这里,解码单元根据源操作数字段在指令编码中的固定位置,确定源操作数字段,并获取源操作数的编号和地址,送给读取单元。
[0108]
步骤S609,根据所述源操作数的编号和地址,获取所述源操作数,并输出所述源操作数。
[0109]
上述的步骤S608至步骤S609提供了一种实现步骤“根据所述相应类型的字段获取对应的操作数,并输出所述操作数”的方式。该方式中,根据源操作数字段,确定源操作数的编号和地址;根据源操作数的编号和地址,获取源操作数,并输出所述源操作数。能够根据源操作数字段数量和类型,直接从指令中的指定编码位置确定源操作数字段,然后根据源操作数字段直接获取相应的源操作数,可以减少解码的复杂度。
[0110]
在其他的实施例中,根据指令的类型确定指令的功能,根据指令的功能对源操作数进行处理。
[0111]
图3为本申请实施例提供的一种网络处理器的指令源操作数处理方法的流程示意图,如图3所示,该方法包括以下步骤:
[0112]
步骤S31,编译单元将各个指令之间的相同字段放在指令编码中固定位置。
[0113]
这里,首先指令采用定长编码方式对指令进行编码,然后把指令集中每个编码后的指令进行分段,并根据功能对指令集中的指令进行分类,通常网络处理器的指令分为逻辑计算类指令、数据上传/下载类指令、跳转类指令和一些特殊类指令。然后根据每一类指令的功能,确认各个指令需要 的字段类型。
[0114]
本申请实施例中,通过采用定长编码方式,能够将指令转化为便于编译单元存储的格式,而且解码单元不需要记录指令的存储位置和长度,直接在存储内存中获取到编码后的指令。
[0115]
其中,逻辑计算类指令:通常有目的寄存器操作数字段,普通寄存器源操作数一字段,普通寄存器源操作数二字段、立即数源操作数二字段等;数据上传/下载类指令:通常有目的寄存器操作数字段,条件寄存器源操作数二字段,内存源操作数一字段、内存源操作数二字段,立即数源操作数二字段等;跳转类指令:通常有标签、条件寄存器源操作数二等字段;特殊类指令:通常完成网络业务查表、协处理等操作,不需要源操作数字段。
[0116]
步骤S32,编译单元对指令的类型及指令的源操作数进行判断和标记,根据所述标记生成指令相应的操作码。
[0117]
这里,编译单元完成对指令的类型和指令的源操作数进行判断和标记,生成相应的指令操作码,该操作码与指令的类型以及指令源操作数的数量和类型直接关联;采用了根据所述指令操作码完成对指令源操作数的分类获取。
[0118]
其中,对指令的类型进行判断是指:根据功能操作把指令分为至少一种类型。例如,可以将指令分为逻辑计算类指令、数据上传/下载类指令、跳转类指令和一些特殊类指令等四种类型。
[0119]
对指令的类型进行标记是指:编译单元根据指令的类型,生成相应的标记。例如,可以将指令分为逻辑计算类指令、数据上传/下载类指令、跳转类指令和特殊类指令四种类型,再根据该四种类型生成四个对应标记,分别为逻辑计算类指令对应标记一00、数据上传/下载类指令对应标记二01、跳转类指令对应标记三10、特殊类指令对应标记四11,作为指令的操作码字段编码的第一部分。
[0120]
对指令的源操作数进行判断是指:根据源操作数的数量和类型,对指令进行分类。
[0121]
以根据源操作数的数量和类型,将指令分为逻辑计算类指令、数据上传/下载类指令、跳转类指令和特殊类指令四种类型分为八种类型为例,形成的类型分别为:不需要源操作数或者是立即数形式的源操作数的指令为类型一;只需要操作一个条件寄存器形式的源操作数的指令为类型二;只需要操作一个普通寄存器形式的源操作数的指令为类型三;只需要操作一个内存形式的源操作数的指令为类型四;需要操作一个普通寄存器形式的源操作数和一个内存形式的源操作数的指令为类型五;需要操作一个普通寄存器形式的源操作数和一个条件寄存器形式的源操作数的指令为类型六;需要操作两个普通寄存器形式的源操作数的指令为类型七;需要操作一个内存形式的源操作数和一个条件寄存器形式的源操作数的指令为类型八。
[0122]
所述对指令的源操作数进行标记是指:编译单元根据源操作数的数量和类型,对指令进行分类,得到分类结果,对分类结果进行标记。以上述八种类型为例,类型一对应标记一000,类型二对应标记二001,类型三对应标记三010,类型四对应标记四011,类型五对应标记五100,类型六对应标记六101,类型七对应标记七110,类型八对应标记八111,作为指令的操作码字段编码的第二部分。
[0123]
步骤S33,解码单元根据所述操作码进行判断是否需要获取源操作数,当需要获取源操作数时,利用源操作数在指令编码中的固定位置,解码单元直接截取获得指令中源操作数的编号和地址。
[0124]
本申请实施例中,解码单元判断操作码的第二部分,对于源操作数一分成三种情况:指令不需要获取源操作数一,直接透传读取单元的,对应上述步骤S32操作码第二部分的000,001和011;指令需要获取源操作数一,且需要从指令编码中截取源寄存器的编号和地址的,对应上述步骤S32操作码第二部分的010,100,101和110;指令需要获取源操作数一,且读地址固定无需其他解码操作的,对应上述步骤S32操作码第二部分的111。
[0125]
对于源操作数二分四种情况:指令不需要获取源操作二,直接透传读取单元的,对应上述步骤S32操作码第二部分的000和010;指令需要获取源操作数二,且需要从指令编码中截取源寄存器的编号和地址的,对应上述步骤S32操作码第二部分的110;指令需要获取源操作数二,且所需源寄存器从指令编码中截取后并做转换的,对应上述步骤S32操作码第二部分的001,101和111;指令需要获取源操作数二,且读地址固定无需其他解码操作的,对应上述步骤S32操作码第二部分的111。
[0126]
解码单元需要的包括三种操作方式,其中,在截取源操作的编号和地址时,部分指令的源操作数二条件寄存器需要转换成普通寄存器的操作。
[0127]
步骤S34,解码单元根据所述源操作数的编号和地址,在内核寄存器中获取源操作数的数据,并送给执行单元。
[0128]
解码单元处理完成后,将获取到的源操作数的编号和地址送给读取单元,读取单元在内核寄存器中获取源操作数的数据,送给执行单元,对于其中没有源操作数的直接透传至执行单元。
[0129]
步骤S35,执行单元执行完成后,将处理结果存储至内核寄存器中。
[0130]
这里,执行单元根据指令功能和源操作数处理指令,处理成功后把结果重新写进内核寄存器中。
[0131]
图4为本申请实施例提供的一种网络处理器指令源操作数的处理装置的组成结构示意图,如图4所示,该装置包括:
[0132]
编译单元41,用于对指令间的相同字段放在指令编码中固定位置;用于对指令的类型及指令的源操作进行判断和标记,根据所述标记生成指令相应的操作码。
[0133]
解码单元42,用于根据所述指令的操作码判断指令是否需要获取源操作,当所述指令需要获取源操作数时,根据所述源操作数在指令编码中的固定位置,完成对各种形式的源操作数的编号和地址的获取,送给读取单元。
[0134]
读取单元43,用于根据所述指令的源操作数的编号和地址,在内核寄存器中获取源操作数的数据。
[0135]
执行单元44,用于根据指令功能对所述源操作数进行处理。
[0136]
输出单元45,用于将处理结果存储至内核寄存器中。
[0137]
本申请实施例中,编译单元在将指令转换为二进制编码时,把指令间的相同字段放在指令编码中的固定位置,保证指令间的相同字段对齐编码,这样,在对该指令进行解码时,解码单元可以直接截取源操作数的编号和地址,而不用先区分各个指令类型,再到指令编码中获取源操作数,这样解码单元无需额外的判断逻辑,也无需记录各个指令中源操作数的位置,大大减少了解码单元的逻辑复杂度和节省了芯片资源。
[0138]
基于前述的实施例,本申请实施例提供一种指令数据的处理装置。该装置所包括的各单元、以及各单元所包括的各子单元,都可以通过计算机设备中的处理器来实现;当然也可通过的逻辑电路实现;在实施的过程中,处理器可以为中央处理器(CPU)、微处理器(MPU)、数字信号处理器(DSP)或现场可编程门阵列(FPGA)等。
[0139]
图5为本申请实施例提供的指令数据的处理装置的组成结构示意图一,如图5所示,所述装置包括:
[0140]
第一存储单51,配置为如果确定编译前的指令之间有相同类型的字段,编译时,将所述相同类型的字段存储至指定编码位置。
[0141]
生成单元52,配置为根据每一所述编译前的指令的类型和所述相同类型的字段的属性信息,生成对应的操作码。
[0142]
第二存储单元53,配置为将所述操作码存储至编译后的指令中。
[0143]
第一输出单元54,配置为输出所述编译后的指令。
[0144]
在其他的实施例中,所述生成单元,还配置为:如果确定所述相同类型的字段包括源操作数字段,确定所述源操作数字段的数量和类型;根据 每一所述编译前的指令的类型、所述源操作数字段的数量和类型,生成对应的操作码。
[0145]
在其他的实施例中,所述装置还包括:分类单元,配置为:根据每一编译前的指令所要执行的功能,对所述编译前的指令进行分类,得到分类结果;对应地,所述生成单元,还配置为:如果确定所述相同类型的字段包括源操作数字段,根据所述分类结果,确定所述源操作数字段的数量和类型。
[0146]
在其他的实施例中,所述生成单元,还配置为:对每一所述编译前的指令的类型进行标记,生成与每一所述编译前的指令对应的第一标识码;根据所述源操作数字段的数量和类型,生成对应的第二标识码;将所述第一标识码和所述第二标识码合并,生成对应的操作码。
[0147]
图6为本申请实施例提供的指令数据的处理装置的组成结构示意图二,如图6所示,所述装置包括:
[0148]
第一确定单元61,配置为确定编译后的指令中的操作码。
[0149]
第二确定单元62,配置为根据所述操作码,确定所述指令的类型和所述指令中的字段的属性信息。
[0150]
第三确定单元63,配置为根据所述字段的属性信息,从所述指令中的指定编码位置确定相应类型的字段。
[0151]
第二输出单元64,配置为根据所述相应类型的字段获取对应的操作数,并输出所述操作数。
[0152]
在其他的实施例中,所述第二确定单元,还配置为:如果检测出所述指令需要获取源操作数字段,解析所述需要获取源操作数字段的指令对应的操作码,得到解析结果;根据所述解析结果,确定所述指令的类型和所述源操作数字段的属性信息。
[0153]
在其他的实施例中,所述第三确定单元,还配置为:根据从所述操作 码中解析出的第一标识码,确定所述指令的类型;根据从所述操作码中解析出的第二标识码,确定所述源操作数字段数量和类型;根据所述源操作数字段数量和类型,从所述指令中的指定编码位置确定所述源操作数字段。
[0154]
在其他的实施例中,所述第二输出单元,还配置为:根据所述源操作数字段,确定所述源操作数的编号和地址;根据所述源操作数的编号和地址,获取所述源操作数,并输出所述源操作数。
[0155]
需要说明的是,本申请实施例中,如果以软件功能模块的形式实现上述指令数据的处理方法,并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备执行本申请各个实施例所述方法的全部或部分。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read Only Memory,ROM)、磁碟或者光盘等各种可以存储程序代码的介质。这样,本申请实施例不限制于任何特定的硬件和软件结合。
[0156]
对应地,本申请实施例提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述实施例提供的指令数据的处理方法中的步骤。
[0157]
本申请装置实施例的描述,与上述方法实施例的描述是类似的,具有同方法实施例相似的有益效果。对于本申请装置实施例中未披露的技术细节,请参照本申请方法实施例的描述而理解。
[0158]
这里需要指出的是:以上存储介质和设备实施例的描述,与上述方法实施例的描述是类似的,具有同方法实施例相似的有益效果。对于本申请存储介质和设备实施例中未披露的技术细节,请参照本申请方法实施例的描述而理解。
[0159]
需要说明的是,图7为本申请实施例提供的一种计算机设备结构示意 图,如图7所示,该计算机设备70至少包括:处理器71、通信接口72和存储器73,其中
[0160]
处理器71通常控制计算机设备70的总体操作。
[0161]
通信接口72可以使计算机设备通过网络与其他计算机设备或服务器通信。
[0162]
存储器73配置为存储由处理器71可执行的指令和应用,还可以缓存待处理器71以及计算机设备70中各模块待处理或已经处理的数据(例如,图像数据、音频数据、语音通信数据和视频通信数据),可以通过闪存(FLASH)或随机访问存储器(Random Access Memory,RAM)实现。
[0163]
当然,本申请实施例中的装置还可有其他类似的协议交互实现案例,在不背离本申请精神及其实质的情况下,本领域的技术人员当可根据本申请实施例做出各种相应的改变和变形,但这些相应的改变和变形都应属于本申请方法所附的权利要求的保护范围。
[0164]
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用硬件实施例、软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。
[0165]
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的设备。
[0166]
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处 理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令设备的制造品,该指令设备实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
[0167]
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
[0168]
应理解,说明书通篇中提到的“一个实施例”或“一实施例”意味着与实施例有关的特定特征、结构或特性包括在本申请的至少一个实施例中。因此,在整个说明书各处出现的“在一个实施例中”或“在一实施例中”未必一定指相同的实施例。此外,这些特定的特征、结构或特性可以任意适合的方式结合在一个或多个实施例中。应理解,在本申请的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
[0169]
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
[0170]
在本申请所提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。以上所描述的设备实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,如:多个模块或组件可以结合,或可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的各组成部分相互 之间的耦合、或直接耦合、或通信连接可以是通过一些接口,设备或模块的间接耦合或通信连接,可以是电性的、机械的或其它形式的。
[0171]
上述作为分离部件说明的模块可以是、或也可以不是物理上分开的,作为模块显示的部件可以是、或也可以不是物理模块;既可以位于一个地方,也可以分布到多个网络模块上;可以根据实际的需要选择其中的部分或全部模块来实现本实施例方案的目的。
[0172]
以上所述,仅为本申请的实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。

工业实用性

[0173]
本申请实施例提供了一种指令数据的处理方法及装置、设备、存储介质,其中,所述方法包括:如果确定编译前的指令之间有相同类型的字段,编译时,将所述相同类型的字段存储至指定编码位置;根据每一所述编译前的指令的类型和所述相同类型的字段的属性信息,生成对应的操作码;将所述操作码存储至编译后的指令中;输出所述编译后的指令。这样,将令操作码与指令的类型以及指令源操作数的数量和类型直接关联,实现据所述指令操作码完成对指令源操作数的分类获取。

权利要求书

[权利要求 1]
一种指令数据的处理方法,所述方法包括: 如果确定编译前的指令之间有相同类型的字段,编译时,将所述相同类型的字段存储至指定编码位置; 根据每一所述编译前的指令的类型和所述相同类型的字段的属性信息,生成对应的操作码; 将所述操作码存储至编译后的指令中; 输出所述编译后的指令。
[权利要求 2]
根据权利要求1所述的方法,其中,所述根据每一所述编译前的指令的类型和所述相同类型字段的属性信息,生成对应的操作码,包括: 如果确定所述相同类型的字段包括源操作数字段,确定所述源操作数字段的数量和类型; 根据每一所述编译前的指令的类型、所述源操作数字段的数量和类型,生成对应的操作码。
[权利要求 3]
根据权利要求2所述的方法,其中,所述方法还包括: 根据每一编译前的指令所要执行的功能,对所述编译前的指令进行分类,得到分类结果; 对应地,所述如果确定所述相同类型的字段包括源操作数字段,确定所述源操作数字段的数量和类型,包括: 如果确定所述相同类型的字段包括源操作数字段,根据所述分类结果,确定所述源操作数字段的数量和类型。
[权利要求 4]
根据权利要求3所述的方法,其中,根据每一所述编译前的指令的类型、所述源操作数字段的数量和类型,生成对应的操作码,包括: 对每一所述编译前的指令的类型进行标记,生成与每一所述编译前的指令对应的第一标识码; 根据所述源操作数字段的数量和类型,生成对应的第二标识码; 将所述第一标识码和所述第二标识码合并,生成对应的操作码。
[权利要求 5]
一种指令数据的处理方法,所述方法包括: 确定编译后的指令中的操作码; 根据所述操作码,确定所述指令的类型和所述指令中的字段的属性信息; 根据所述字段的属性信息,从所述指令中的指定编码位置确定相应类型的字段; 根据所述相应类型的字段获取对应的操作数,并输出所述操作数。
[权利要求 6]
根据权利要求5所述的方法,其中,所述根据所述操作码,确定所述指令的类型和所述指令中的字段的属性信息,包括: 如果检测出所述指令需要获取源操作数字段,解析所述需要获取源操作数字段的指令对应的操作码,得到解析结果; 根据所述解析结果,确定所述指令的类型和所述源操作数字段的属性信息。
[权利要求 7]
根据权利要求6所述的方法,其中,所述根据所述字段的属性信息,从所述指令中的指定编码位置确定相应类型的字段,包括: 根据从所述操作码中解析出的第一标识码,确定所述指令的类型; 根据从所述操作码中解析出的第二标识码,确定所述源操作数字段数量和类型; 根据所述源操作数字段数量和类型,从所述指令中的指定编码位置确定所述源操作数字段。
[权利要求 8]
根据权利要求7所述的方法,其中,所述根据所述相应类型的字段获取对应的操作数,并输出所述操作数,包括: 根据所述源操作数字段,确定所述源操作数的编号和地址; 根据所述源操作数的编号和地址,获取所述源操作数,并输出所述源 操作数。
[权利要求 9]
一种指令数据的处理装置,所述装置包括: 第一存储单元,配置为如果确定编译前的指令之间有相同类型的字段,编译时,将所述相同类型的字段存储至指定编码位置; 生成单元,配置为根据每一所述编译前的指令的类型和所述相同类型的字段的属性信息,生成对应的操作码; 第二存储单元,配置为将所述操作码存储至编译后的指令中; 第一输出单元,配置为输出所述编译后的指令。
[权利要求 10]
一种指令数据的处理装置,所述装置包括: 第一确定单元,配置为确定编译后的指令中的操作码; 第二确定单元,配置为根据所述操作码,确定所述指令的类型和所述指令中的字段的属性信息; 第三确定单元,配置为根据所述字段的属性信息,从所述指令中的指定编码位置确定相应类型的字段; 第二输出单元,配置为根据所述相应类型的字段获取对应的操作数,并输出所述操作数。
[权利要求 11]
一种计算机设备,所述计算机设备至少包括:处理器和配置为存储可执行指令的存储介质,其中: 处理器配置为执行存储的可执行指令,所述可执行指令配置为执行上述权利要求1至10任一项提供的指令数据的处理方法。
[权利要求 12]
一种计算机可读存储介质,所述计算机存储介质中存储有计算机可执行指令,该计算机可执行指令配置为执行上述权利要求1至10中任一项提供的指令数据的处理方法中的步骤。

附图

[ 图 1]  
[ 图 2]  
[ 图 3]  
[ 图 4]  
[ 图 5]  
[ 图 6]  
[ 图 7]