CN112346780B - 一种信息处理方法、装置和存储介质 - Google Patents
一种信息处理方法、装置和存储介质 Download PDFInfo
- Publication number
- CN112346780B CN112346780B CN202011220490.8A CN202011220490A CN112346780B CN 112346780 B CN112346780 B CN 112346780B CN 202011220490 A CN202011220490 A CN 202011220490A CN 112346780 B CN112346780 B CN 112346780B
- Authority
- CN
- China
- Prior art keywords
- instruction
- information
- micro
- operand
- format
- 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
Images
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/22—Microcontrol or microprogram arrangements
- G06F9/223—Execution means for microinstructions irrespective of the microinstruction function, e.g. decoding of microinstructions and nanoinstructions; timing of microinstructions; programmable logic arrays; delays and fan-out problems
-
- 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/30145—Instruction analysis, e.g. decoding, instruction word fields
-
- 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/30181—Instruction operation extension or modification
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Executing Machine-Instructions (AREA)
Abstract
一种信息处理方法、装置及存储介质。该信息处理方法,包括:获取指令信息;根据指令信息,确定至少一个指令格式;根据至少一个指令格式查询映射字典而获得分别与至少一个指令格式相对应的微操作信息,映射字典包括至少一个指令格式与微操作信息之间的对应关系;以及根据微操作信息,生成至少一个微操作指令。该信息处理方法能够根据指令信息快速地生成微操作指令并且能够保证生成的微操作指令的有效性。
Description
技术领域
本公开的实施例涉及一种信息处理方法、装置和存储介质。
背景技术
指令集或指令集架构(ISA)是计算机架构中与编程有关的部分。例如根据指令集编写的汇编指令通常可以被提供给处理器以供处理器执行。处理器在执行汇编指令的过程中,通常需要将汇编指令解码为微操作指令,以根据微操作指令执行处理操作。
发明内容
本公开至少一实施例提供一种信息处理方法,包括:获取指令信息;根据所述指令信息,确定至少一个指令格式;根据所述至少一个指令格式查询映射字典而获得分别与所述至少一个指令格式相对应的微操作信息,所述映射字典包括所述至少一个指令格式与所述微操作信息之间的对应关系;以及根据所述微操作信息,生成至少一个微操作指令。
例如,在本公开一实施例提供的信息处理方法中,指令信息包括待解码指令的指令信息,所述待解码指令的指令信息包括操作码和操作数,根据所述指令信息,确定至少一个指令格式,包括:根据所述操作数,确定所述操作数的类型和所述操作数的长度,所述类型包括立即数、寄存器操作数和存储器操作数;以及根据所述操作码、所述操作数的类型和所述操作数的长度,确定所述待解码指令的指令格式。
例如,在本公开一实施例提供的信息处理方法中,根据所述微操作信息,生成至少一个微操作指令,包括:根据所述微操作信息和所述操作数,生成所述待解码指令的微操作指令。
例如,本公开一实施例提供的信息处理方法中,映射字典还包括所述指令类别与指令格式之间的对应关系,所述指令类别是根据执行指令集中的多个指令格式各自的执行单元划分的,根据所述指令信息,确定至少一个指令格式,包括:在所述指令信息包括所述指令类别的信息的情况下,根据所述指令类别的信息确定指令类别,并且从所述映射字典中确定所述指令类别对应的至少一个指令格式。
例如,本公开一实施例提供的信息处理方法中,映射字典还包括所述指令组与指令格式之间的对应关系,所述指令组是根据指令集中的多个指令格式各自的功能被划分的,根据所述指令信息,确定至少一个指令格式,包括:在所述指令信息包括所述指令组的信息的情况下,根据所述指令组的信息确定所述指令组,并且从所述映射字典中确定所述指令组的至少一个指令格式。
例如,在本公开一实施例提供的信息处理方法中,根据所述微操作信息,生成至少一个微操作指令,包括:根据所述微操作信息指示的操作数的类型,生成微操作的操作数;以及根据所述微操作信息指示的操作码和所述微操作的操作数,生成至少一个微操作指令。
例如,本公开一实施例提供的信息处理方法中,该信息处理方法还包括建立映射字典。
例如,在本公开一实施例提供的信息处理方法中,信息处理方法由测试平台执行,建立所述映射字典,包括:获取以第一方式记录的指令集中每个指令格式与微操作信息之间的对应关系;依次读取所述对应关系;以及以编程语言输出所述对应关系,以建立映射字典,所述编程语言为所述测试平台能够识别的语言。
例如,在本公开一实施例提供的信息处理方法中,编程语言包括硬件描述语言。
例如,在本公开一实施例提供的信息处理方法中,该信息处理方法还包括:向执行装置发送所述微操作指令,使所述执行装置执行所述微操作指令;以及根据所述执行装置执行所述微操作指令的结果来确定所述执行装置的功能是否正确。
例如,在本公开一实施例提供的信息处理方法中,该信息处理方法还包括:更新所述映射字典;根据所述至少一个指令格式查询映射字典而获得分别与所述至少一个指令格式相对应的微操作信息,包括:根据所述至少一个指令格式查询更新后的所述映射字典而获得分别与所述至少一个指令格式相对应的微操作信息。
本公开至少一个实施例还提供一种信息处理装置,包括:第一获取单元,配置为获取指令信息;确定单元,配置为根据所述指令信息,确定至少一个指令格式;第二获取单元,配置为根据所述至少一个指令格式查询映射字典而获得分别与所述至少一个指令格式相对应的微操作信息,所述映射字典包括所述至少一个指令格式与所述微操作信息之间的对应关系;以及生成单元,配置为根据所述微操作信息,生成至少一个微操作指令。
本公开至少一个实施例还提供一种信息处理装置,包括:处理器;存储器,包括一个或多个计算机程序模块;所述一个或多个计算机程序模块被存储在所述存储器中并被配置为由所述处理器执行,所述一个或多个计算机程序模块包括用于实现上述的信息处理方法的指令。
本公开至少一个实施例还提供一种存储介质,非暂时性地存储计算机可读指令,当所述计算机可读指令由计算机执行时可以执行上述的信息处理方法。
附图说明
为了更清楚地说明本公开实施例的技术方案,下面将对实施例的附图作简单地介绍,显而易见地,下面描述中的附图仅仅涉及本公开的一些实施例,而非对本公开的限制。
图1A示出了本公开至少一实施例提供的一种信息处理方法的流程图;
图1B示出了本公开至少一实施例的用于实现上述信息处理方法的系统架构图100;
图2示出了本公开至少一实施例提供的另一种信息处理方法的流程图;
图3示出了本公开至少一实施例提供的步骤S50建立映射字典的方法流程图;
图4示出了本公开至少一实施例提供的又一种信息处理方法的流程图;
图5示出了本公开至少一实施例提供的再一种信息处理方法的流程图;
图6示出了本公开至少一个实施例提供的一种信息处理装置的示意框图;
图7为本公开一些实施例提供的另一种信息处理装置的示意框图;
图8为本公开一些实施例提供的电子设备的示意框图;以及
图9为本公开一些实施例提供的一种计算机可读存储介质的示意图。
具体实施方式
为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例的附图,对本公开实施例的技术方案进行清楚、完整地描述。显然,所描述的实施例是本公开的一部分实施例,而不是全部的实施例。基于所描述的本公开的实施例,本领域普通技术人员在无需创造性劳动的前提下所获得的所有其他实施例,都属于本公开保护的范围。
除非另外定义,本公开使用的技术术语或者科学术语应当为本公开所属领域内具有一般技能的人士所理解的通常意义。本公开中使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。同样,“一个”、“一”或者“该”等类似词语也不表示数量限制,而是表示存在至少一个。“包括”或者“包含”等类似的词语意指出现该词前面的元件或者物件涵盖出现在该词后面列举的元件或者物件及其等同,而不排除其他元件或者物件。“连接”或者“相连”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电性的连接,不管是直接的还是间接的。“上”、“下”、“左”、“右”等仅用于表示相对位置关系,当被描述对象的绝对位置改变后,则该相对位置关系也可能相应地改变。
处理器往往需要将程序解码为微操作指令后,再根据微操作指令执行处理操作。例如中央处理器(CPU,central processing unit)通常需要将接收到的X86指令解码为X86微操作(uop,micro-operation)指令,从而根据X86uop指令进行运算和控制。因此,快速地生成uop指令可以提高CPU的处理速度。另外,uop是在CPU设计中部署和处理的最小设计项目,uop指令的生成对于CPU性能验证至关重要,快速并且有效地生成uop指令可以提高CPU性能验证的效率。
例如,X86 uop指令是对X86指令解码得到的微操作指令。X86指令可以解码为1个、2个或多个uop指令。两个X86指令或者多个X86指令也可以融合为1个uop指令。X86 CPU在内部处理诸如执行调度子模块和浮点子模块等中的uop指令,而不是直接处理X86指令。在进行执行调度等子模块级验证时,需要将uop指令驱动到CPU中以激发各种情况。在X86 CPU性能验证中,可以使用真正的CPU解码设计模块从x86指令输出uop指令,但是会花费仿真时间和集成工作,或者也可以随机产生的uop指令,但是随机产生的uop指令可能是无效的。如何快速有效的生成uop指令已成为一个亟待解决的问题。
本公开至少一实施例提供了一种信息处理方法,包括:获取指令信息;根据指令信息,确定至少一个指令格式;根据至少一个指令格式查询映射字典而获得分别与至少一个指令格式相对应的微操作信息,映射字典包括所述至少一个指令格式与微操作信息之间的对应关系;以及根据所述微操作信息,生成至少一个微操作指令。
本公开至少一实施例还提供一种对应于上述信息处理方法的信息处理装置和存储介质。
本公开实施例提供的信息处理方法可以提高生成uop指令的效率并且保证生成的uop指令的有效性。
下面结合附图对本公开的实施例及其示例进行详细说明。
图1A示出了本公开至少一实施例提供的一种信息处理方法的流程图。如图1A所示,该信息处理方法可以包括步骤S10~S40。
步骤S10:获取指令信息。
步骤S20:根据指令信息,确定至少一个指令格式。
步骤S30:根据至少一个指令格式查询映射字典而获得分别与至少一个指令格式相对应的微操作信息。映射字典包括至少一个指令格式与微操作信息之间的对应关系。
步骤S40:根据微操作信息,生成至少一个微操作指令。
该信息处理方法可以通过查询映射字典快速地确定指令格式的微操作信息,进而根据微操作信息生成微操作指令,从而不需要使用真正的CPU解码设计模块从x86指令中解码并输出uop指令,在保证了生成的微操作指令的有效性地同时,提升了生成微操作指令的速度。
图1B示出了本公开至少一实施例的用于实现上述信息处理方法的系统架构图100。下面结合图1B对图1A所示的信息处理方法进行说明。
如图1B所示,系统架构100包括外部激励模块110、测试平台120、映射字典130和CPU 140。
需要说明的是,映射字典130可以存储于数据库等存储设备中,或者映射字典130也可以存储于测试平台120中。
图1A所示的步骤S10~S40例如可以由测试平台120执行,测试平台120获取指令信息,并且根据指令信息生成微操作指令,将生成的微操作指令发送到CPU 140,以便CPU 140执行微操作指令。测试平台120例如还可以根据CPU 140执行微操作指令的执行结果来确定CPU的功能是否正确,以对CPU 140进行验证。
外部激励模块110配置为向测试平台120发送指令信息,也即,向测试平台120发送一个激励,使得测试平台120响应激励,执行上文参考图1A所示的操作S10~S40。
外部激励模块110例如可以接收用户输入的指令信息,并且向测试平台120发送指令信息。
对于步骤S10,例如可以是测试平台120接收来自外部激励模块110的指令信息。
在本公开的一些实施例中,指令信息例如可以是一个具体的X86指令。例如,指令信息为:ADD EAX,0X10。在本公开的另一些实施例中,指令集中的指令格式被划分为多个指令组或者多个指令类别,指令信息可以包括指令组的信息或者指令类别的信息。指令组的信息例如可以是指令组的标识、编号等。指令类别的信息例如可以是指令类别的标识或者编号等。
对于步骤S20,例如可以是测试平台120根据指令信息确定至少一个指令格式。
在本公开的一些实施例中,若指令信息包括待解码指令的指令信息,所述待解码指令的指令信息包括操作码和操作数,则步骤S20包括根据操作数,确定操作数的类型和操作数的长度,以及根据操作码、操作数的类型和操作数的长度,确定待解码指令的指令格式。操作数的类型可以包括立即数、寄存器操作数和存储器操作数等,本公开的实施例对此不作限制。
待解码指令的指令信息例如可以是待解码指令本身。例如,待解码指令可以是X86指令。待解码指令的指令信息例如ADD R8,0X20,该指令信息便是一个待解码指令。该待解码指令包括操作数R8和0X20,并且操作码为ADD。测试平台120可以识别出R8为寄存器32位的操作数,0X20为立即数,从而根据操作码、操作数的类型和操作数的长度可以确定待解码指令的指令格式为ADD reg32,imm32。
在本公开的另一些实施例中,映射字典130可以包括指令信息和指令格式之间的对应关系,从而可以查询映射字典130来确定指令信息对应的至少一个指令格式。
对于步骤S30,例如可以是测试平台120根据至少一个指令格式查询映射字典而获得分别与至少一个指令格式相对应的微操作信息。
对于步骤S30,映射字典包括至少一个指令格式与微操作信息之间的对应关系。下表一示出了本公开至少一实施例的多个指令格式和微操作信息之间的对应关系的一种示例。
表一
如表一所示,字段“指令格式(Mnemonic)”这一列可以包括X86指令集中所有的指令格式。映射字典中指示每个指令格式的“对应关系”、“操作码”、“操作数类型”、“是否访问内存”、“未融合数据长度”、“比较融合”、“测试融合”、“比较或者测试融合”等微操作信息。
字段“对应关系(LoDoubleOrFused)”用于说明X86指令与几条uop指令相对应,或者几条X86指令融合为一条uop指令。例如,ADD reg32,imm32指令格式中LoDoubleOrFused为1’b?,则可以表示ADD reg32,imm32指令格式只与一条uop指令对应,其中,“b”表示二进制数。如果一个指令格式的LoDoubleOrFused包括1’b0和1’b1,那么该指令格式可以被映射为两个uop指令。
字段“操作码(Opcode)”这一列指示了uop指令的操作码,例如“ADD reg32,imm32”的uop指令操作码为“MC_ADD”,“JNBE rel32off”的uop指令的操作码为“11’b00000000111”。
字段“操作数类型(OpType)”这一列指示了操作数的类型。例如“ADD reg32,imm32”的操作数类型为“4’b0000”,“4’b0000”可以代表该指令格式中的的操作数为reg32和imm32。
字段“是否访问内存”这一列指示了执行该指令格式是否需要访问内存。
字段“未融合数据长度(NonFused DataSize)”这一列用于说明未融合的数据长度,“ADD reg32,imm32”的数据长度为“3’b010”,“010”表示32位操作数。“JNBE rel32off”的数据长度为“3’b011”,“011”表示一个常地址。
字段“比较融合(Fused with CMP)”这一列指示了如果前一条指令为比较指令,则将前一条指令与当前指令融合为一个指令。例如,ADD reg32,imm32的Fused with CMP为空,则表示ADD reg32,imm32的不与其他指令融合。JNBE rel32off的Fused with CMP为11’b00000100111,则表示JNBE rel32off与上一条指令融合。
字段“测试融合(Fused with TEST)”这一列指示了如果前一条指令为测试指令,则将前一条指令与当前指令融合为一个指令。
字段“比较或者测试融合(Fused with CMP/TEST)”这一列指示了如果前一条指令为比较指令或者测试指令,则将前一条指令与当前指令融合为一个指令。
需要理解的是,表一可以不仅仅包括上述信息,还可以包括其他一些更多的信息,也即,表一仅为一种表示多个指令格式和微操作信息之间的对应关系的一种示例,本领域技术人员可以根据需要来设计多个指令格式和微操作信息之间的对应关系。
对于步骤S40,例如可以是测试平台120根据步骤S130中获得的微操作信息,生成至少一个微操作指令。
例如,对于微操作信息,测试平台120根据指令格式“ADD reg32,imm32”的微操作信息生成的微操作指令可以是:LoDoubleOrFused=1’b?;Opcode=MC_ADD;OpType=4’b0000;Memacc=6’b000000;NonFused DataSize=3’b010。
需要理解的是,表一仅为一种表示多个指令格式和微操作信息之间的对应关系的一种示例,并不意味着映射字典即为表一所示。映射字典可以是包括多个指令格式和微操作信息之间的对应关系的各种形式的字典,例如可以是表格、文档或者是编程语言形成的代码。
在本公开的一些实施例中,若指令信息包括待解码指令的指令信息,则步骤S40可以是根据微操作信息和操作数,生成待解码指令的微操作指令。
例如,待解码指令的指令信息包括立即数,可以先将立即数存储到指定存储单元中,在根据操作数和操作码确定了待解码指令的指令格式,并且确定指令格式对应的微操作信息后,在步骤S40可以从指定存储单元中读取立即数,并且根据微操作信息和该立即数生成微操作指令。又例如,待解码指令的指令信息指示操作数为寄存器操作数,则在步骤S40可以寄存器读取操作数,并且根据微操作信息和操作数生成微操作指令。
在本公开的另一些实施例中,映射字典还可以包括指令类别与指令格式之间的对应关系。指令类别是根据执行指令集中的多个指令格式各自的执行单元划分的。在该实施例中,步骤S20包括在指令信息包括指令类别的信息的情况下,根据指令类别的信息确定指令类别,并且从映射字典中确定指令类别对应的至少一个指令格式。
例如,指令集可以是X86指令集(Instruction Set Architecture,简称为ISA),根据执行X86指令集中的多个指令各自的执行单元,X86指令集中的指令格式被划分为浮点格式、执行和调度格式等指令类别。例如浮点格式是CPU中的浮点单元执行的指令格式,执行和调度格式是CPU中执行和调度单元执行的指令格式。例如,与浮点数相关的指令(例如,fadd、fdiv、fdivr等)的指令格式都属于浮点格式,与指令的调度和执行相关的指令的指令格式都属于执行和调度格式。
指令格式被按照执行单元划分为不同的指令类别,因此,用户可以直接提供指令类别的指令信息,从而对属于该指令类别的多个指令格式进行解码而获得uop指令,提高了生成uop指令的便捷性,提高了解码效率。由于该些uop指令由同一执行单元执行,因此利用解码后的uop指令可以对执行单元进行全面的功能测试。
在步骤S20,指令类别的信息例如可以是指令类别的名称、标识或者编号等。
例如,若指令信息包括浮点格式的标识,则可以从映射字典中确定出浮点格式对应的多个指令格式。例如,从映射字典中确定fadd、fdiv、fdivr等的指令的指令格式。
在本公开的另一些实施例中,映射字典还包括所述指令组与指令格式之间的对应关系。指令组是根据指令集中的多个指令各自的功能被划分的,多个指令中的每个指令具有至少一种指令格式。在该实施例中,步骤S20根据指令信息,确定至少一个指令格式,包括:在指令信息包括指令组的信息的情况下,根据指令组的信息确定指令组,并且从映射字典中确定指令组的至少一个指令格式。
例如,指令集中的多个指令被划分为加法指令、乘法指令、跳转指令等等,在此不一一列举。加法指令可以是进行与加法相关的操作的指令,乘法指令可以是进行与乘法相关的操作的指令,跳转指令可以是进行与跳转相关的操作的指令。
指令格式被按照功能划分为不同的指令组,因此,用户可以直接提供指令组的指令信息,从而对属于该指令组的多个指令格式进行解码而获得uop指令,提高了生成uop指令的便捷性,提高了解码效率。
下表二示出了本公开至少一实施例的映射字典中包括指令组与指令格式之间的对应关系的一种示例。在表二中除多了“Instruction Group”字段外,其他与表一类似。
表二
如表二所示,多个指令格式根据功能被划分为多个指令组。例如,“ADD reg32,imm32”属于“ADD”指令组,“ADD”指令组中均为进行加法运算的指令格式。“JNBE rel32off”属于“Jcc”指令组,“Jcc”指令组均为用于跳转的指令格式。
在本公开的一些实施例中,若指令信息包括指令类别的信息或者指令组的信息,可以通过根据指令类别的信息或者指令组的信息查询映射字典来确定多个指令格式,则在步骤S40根据微操作信息,生成至少一个微操作指令,包括:根据微操作信息指示的操作数的类型,生成微操作的操作数,以及根据微操作信息指示的操作码和微操作的操作数,生成至少一个微操作指令。
例如,指令信息中包括ADD指令组的标识,则可以从映射字典中确定出ADD指令组对应的“ADD reg32,imm32”等多个指令格式。例如“ADD reg32,imm32”指令格式的微操作信息包括:LoDoubleOrFused为1’b?,Opcode为MC_ADD,OpType为4’b0000;Memacc为6’b000000,NonFused DataSize为3’b010,从而根据微操作信息中“4’b0000”生成4位立即数,根据微操作信息中“MC_ADD”和生成的4位立即数,生成微操作指令。
例如,一条指令可以对应到一个uop,一条指令也可以对应到两个uop,一条指令还可以对应到多个uop,或者两条指令到一个uop,本公开的实施例对此不作限制。uop输出对驱动x86 CPU设计有效且有意义,本公开实施例的上述信息处理方法加速了x86 uop在验证领域的产生。
图2示出了本公开另一实施例的信息处理方法的流程图。如图2所示,该信息处理方法在包括上文参考图1A描述的步骤S10~40的基础上,还可以包括步骤S50。步骤S50可以是建立映射字典。
在本公开的一个实施例中,映射字典可以是本领域技术人员或者是CPU设计人员建立的,其可以以任何方式记录多个指令格式和微操作信息之间的对应关系。
图3示出了本公开至少一实施例提供的步骤S50建立映射字典的方法流程图。
如图3所示,步骤S50可以包括步骤S51~S53。
步骤S51:获取以第一方式记录的指令集中每个指令格式与微操作信息之间的对应关系。
指令集中每个指令格式与微操作信息之间的对应关系,可以是本领域技术人员或者是CPU的设计人员自己定义的。而本领域技术人员或者是CPU的设计人员例如可以通过表格或者文档等多种方式存储自己定义的指令集中每个指令格式与微操作信息之间的对应关系。也即,第一方式可以是表格、文档等多种本领域技术人员可以使用的记录方式。
例如,上文表一和表二可以是本领域技术人员或者CPU设计人员自己定义的。上文表一和表二定义了“ADD reg32,imm32”的LoDoubleOrFused为1’b?,Opcode为MC_ADD,OpType为4’b0000,Memacc为6’b000000,NonFused DataSize为3’b010。
步骤S52:依次读取对应关系。
例如,依次读取X86指令和uop指令的对应关系。
步骤S53:以编程语言输出对应关系,以建立映射字典。
例如,编程语言为测试平台能够识别的语言。
例如,测试平台可以是硬件实现的,则编程语言例如可以是Verilog等硬件描述语言。
对于步骤S52和步骤S53,例如可以遍历以第一方式记录的对应关系,并且每遍历出一个对应关系,则以硬件描述语言输出该对应关系,而输出的硬件描述语言即为映射字典。
在本公开的一些实施例中,信息处理方法还可以包括更新映射字典。步骤S30根据至少一个指令格式查询映射字典而获得分别与至少一个指令格式相对应的微操作信息,包括:根据至少一个指令格式查询更新后的映射字典而获得分别与至少一个指令格式相对应的微操作信息。
更新映射字典例如可以是响应于用户的操作指令,重新读取以第一方式记录的对应关系,并且以编程语言输出对应关系,以更新映射字典。例如,可根据不同的需求对映射字典中的对应关系进行更新,本公开的实施例对此不作限制。
图4示出了本公开实施例另一实施例的信息处理方法的流程图。如图4所示,该信息处理方法在包括上文参考图1A描述的步骤S10~40的基础上,还可以包括步骤S60~70。
步骤S60:向执行装置发送微操作指令,以由执行装置执行微操作指令。
步骤S70:根据执行装置执行微操作指令的结果来确定执行装置的功能是否正确。
在本公开的一些实施例中,执行装置可以包括多个上文描述的执行单元,不同的执行单元用于处理不同指令类别的指令格式。执行装置例如可以是CPU,执行单元例如可以是CPU的浮点单元或者执行调度单元。例如可以向CPU发送微操作指令,以由CPU执行该微操作指令,例如可以是测试平台根据CPU反馈的执行结果来判断CPU的功能是否正确。例如可以向CPU发送所有由浮点单元执行的uop指令,以由CPU的浮点单元执行多个uop指令来确定浮点单元的功能是否正确。通过本公开实施例的方法可以提升对CPU进行性能验证的效率。
图5示出了本公开另一实施例的信息处理方法的流程图。
如图5所示,该信息处理方法可以包括步骤S510~570。
步骤S510:获取指示X86指令和uop指令之间的对应关系的表格。
例如,执行上文参考图3描述的操作S51。
步骤S520:对表格进行解析和解码,以遍历表格中的每个对应关系。
例如,执行上文参考图3描述的操作S52。
步骤S530:建立X86指令和uop指令之间的映射字典。
例如,执行上文参考图3描述的操作S53。
步骤S540:接收X86随机指令。
例如,执行上文参考图1A描述的操作S10。
步骤S550:将X86随机指令解码为统一的指令格式。
统一的指令格式,例如可以是X86指令集中的指令格式。例如可以根据随机指令中的操作码和操作数来确定随机指令的指令格式。
步骤S560:根据指令格式,查询映射字典确定微操作信息。
例如,执行上文参考图1A描述的操作S30。
步骤S570:根据微操作信息生成uop指令。
例如,执行上文参考图1A描述的操作S40。
需要说明的是,本公开的各个实施例中,信息处理方法的各个步骤的执行顺序不受限制,虽然上文以特定顺序描述了各个步骤的执行过程,但这并不构成对本公开实施例的限制。该信息处理方法中的各个步骤可以串行执行或并行执行,这可以根据实际需求而定。该信息处理方法方法还可以包括更多或更少的步骤,例如,为了达到更快速的指令生成效果而增加一些预处理步骤,或者将一些中间过程的数据存储并用于后续处理和计算,以省略一些相似的步骤。
本公开上述实施例提供的信息处理方法可以通过查询映射字典快速地确定指令格式的微操作信息,进而根据微操作信息生成微操作指令,从而不需要使用真正的CPU解码设计模块从x86指令中解码并输出uop指令,在保证了生成的微操作指令的有效性地同时,提升了生成微操作指令的速度。
图6示出了本公开至少一个实施例提供的一种信息处理装置600的示意框图。
例如,如图6所示,该信息处理装置600包括第一获取单元610、确定单元620、第二获取单元630和生成单元640。
第一获取单元610配置为获取指令信息。例如,第一获取单元610可以实现图1A描述的步骤S10,其具体实现方法可以参考步骤S10的相关描述,在此不再赘述。
确定单元620配置为根据所述指令信息,确定至少一个指令格式。例如,确定单元620可以实现图1A描述的步骤S20,其具体实现方法可以参考步骤S20的相关描述,在此不再赘述。
第二获取单元630配置为根据所述至少一个指令格式查询映射字典而获得分别与所述至少一个指令格式相对应的微操作信息。映射字典包括所述至少一个指令格式与所述微操作信息之间的对应关系。例如,第二获取单元630可以实现图1A描述的步骤S30,其具体实现方法可以参考步骤S30的相关描述,在此不再赘述。
生成单元640配置为根据所述微操作信息,生成至少一个微操作指令。例如,生成单元640可以实现图1A描述的步骤S40,其具体实现方法可以参考步骤S40的相关描述,在此不再赘述。
例如,第一获取单元610、确定单元620、第二获取单元630和生成单元640可以为硬件、软件、固件以及它们的任意可行的组合。例如,第一获取单元610、确定单元620、第二获取单元630和生成单元640可以为专用或通用的电路、芯片或装置等,也可以为处理器和存储器的结合。关于上述各个单元的具体实现形式,本公开的实施例对此不作限制。
需要注意的是,在本公开的实施例中,该信息处理装置600可以包括更多或更少的电路或单元,并且各个电路或单元之间的连接关系不受限制,可以根据实际需求而定。各个电路的具体构成方式不受限制,可以根据电路原理由模拟器件构成,也可以由数字芯片构成,或者以其他适用的方式构成。
需要说明的是,本公开的实施例中,信息处理装置600的各个单元与前述的信息处理方法的各个步骤对应,关于信息处理装置600的具体功能可以参考关于信息处理方法的相关描述,此处不再赘述。图6所示的信息处理装置600的组件和结构只是示例性的,而非限制性的,根据需要,该信息处理装置600还可以包括其他组件和结构。
本公开的至少一个实施例还提供了一种信息处理装置,该信息处理装置包括处理器和存储器,存储器包括一个或多个计算机程序模块。一个或多个计算机程序模块被存储在存储器中并被配置为由处理器执行,一个或多个计算机程序模块包括用于实现上述的信息处理方法的指令。该信息处理装置可以通过查询映射字典可以快速地确定指令格式的微操作信息,进而根据微操作信息生成微操作指令,不需要使用真正的CPU解码设计模块从x86指令中解码并输出uop指令,在保证了生成的微操作指令的有效性地同时,提升了生成微操作指令的速度。
图7为本公开一些实施例提供的一种信息处理装置的示意框图。如图7所示,该信息处理装置700包括处理器710和存储器720。存储器720用于存储非暂时性计算机可读指令(例如一个或多个计算机程序模块)。处理器710用于运行非暂时性计算机可读指令,非暂时性计算机可读指令被处理器710运行时可以执行上文所述的信息处理方法中的一个或多个步骤。存储器720和处理器710可以通过总线系统和/或其它形式的连接机构(未示出)互连。
例如,处理器710可以是中央处理单元(CPU)、图形处理单元(GPU)或者具有数据处理能力和/或程序执行能力的其它形式的处理单元。例如,中央处理单元(CPU)可以为X86或ARM架构等。处理器710可以为通用处理器或专用处理器,可以控制信息处理装置700中的其它组件以执行期望的功能。
例如,存储器720可以包括一个或多个计算机程序产品的任意组合,计算机程序产品可以包括各种形式的计算机可读存储介质,例如易失性存储器和/或非易失性存储器。易失性存储器例如可以包括随机存取存储器(RAM)和/或高速缓冲存储器(cache)等。非易失性存储器例如可以包括只读存储器(ROM)、硬盘、可擦除可编程只读存储器(EPROM)、便携式紧致盘只读存储器(CD-ROM)、USB存储器、闪存等。在计算机可读存储介质上可以存储一个或多个计算机程序模块,处理器710可以运行一个或多个计算机程序模块,以实现信息处理装置700的各种功能。在计算机可读存储介质中还可以存储各种应用程序和各种数据以及应用程序使用和/或产生的各种数据等。
需要说明的是,本公开的实施例中,信息处理装置700的具体功能和技术效果可以参考上文中关于信息处理方法的描述,此处不再赘述。
图8为本公开一些实施例提供的电子设备的示意框图。该电子设备800例如适于用来实施本公开实施例提供的信息处理方法。电子设备800可以是终端设备等。需要注意的是,图8示出的电子设备800仅仅是一个示例,其不会对本公开实施例的功能和使用范围带来任何限制。
如图8所示,电子设备800可以包括处理装置(例如中央处理器、图形处理器等)810,其可以根据存储在只读存储器(ROM)820中的程序或者从存储装置880加载到随机访问存储器(RAM)830中的程序而执行各种适当的动作和处理。在RAM 830中,还存储有电子设备800操作所需的各种程序和数据。处理装置810、ROM 820以及RAM 830通过总线840彼此相连。输入/输出(I/O)接口850也连接至总线840。
通常,以下装置可以连接至I/O接口850:包括例如触摸屏、触摸板、键盘、鼠标、摄像头、麦克风、加速度计、陀螺仪等的输入装置860;包括例如液晶显示器(LCD)、扬声器、振动器等的输出装置870;包括例如磁带、硬盘等的存储装置880;以及通信装置890。通信装置890可以允许电子设备800与其他电子设备进行无线或有线通信以交换数据。虽然图8示出了具有各种装置的电子设备800,但应理解的是,并不要求实施或具备所有示出的装置,电子设备800可以替代地实施或具备更多或更少的装置。
例如,根据本公开的实施例,上述信息处理方法可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在非暂态计算机可读介质上的计算机程序,该计算机程序包括用于执行上述息处理方法的程序代码。在这样的实施例中,该计算机程序可以通过通信装置890从网络上被下载和安装,或者从存储装置880安装,或者从ROM 820安装。在该计算机程序被处理装置810执行时,可以实现本公开实施例提供的息处理方法中限定的功能。
本公开的至少一个实施例还提供了一种计算机可读存储介质,该计算机可读存储介质用于存储非暂时性计算机可读指令,当非暂时性计算机可读指令由计算机执行时可以实现上述的息处理方法。利用该计算机可读存储介质,可以通过查询映射字典可以快速地确定指令格式的微操作信息,进而根据微操作信息生成微操作指令,不需要使用真正的CPU解码设计模块从x86指令中解码并输出uop指令,在保证了生成的微操作指令的有效性地同时,提升了生成微操作指令的速度。
图9为本公开一些实施例提供的一种计算机可读存储介质的示意图。如图9所示,计算机可读存储介质900用于存储非暂时性计算机可读指令910。例如,当非暂时性计算机可读指令910由计算机执行时可以执行根据上文所述的器件布局方法中的一个或多个步骤。
例如,该计算机可读存储介质900可以应用于上述信息处理装置700中。例如,计算机可读存储介质900可以为图7所示的信息处理装置700中的存储器720。例如,关于计算机可读存储介质900的相关说明可以参考图7所示的信息处理装置700中的存储器720的相应描述,此处不再赘述。
有以下几点需要说明:
(1)本公开实施例附图只涉及到本公开实施例涉及到的结构,其他结构可参考通常设计。
(2)在不冲突的情况下,本公开的实施例及实施例中的特征可以相互组合以得到新的实施例。
以上所述,仅为本公开的具体实施方式,但本公开的保护范围并不局限于此,本公开的保护范围应以所述权利要求的保护范围为准。
Claims (15)
1.一种信息处理方法,包括:
获取指令信息;
根据所述指令信息,确定至少一个指令格式;
根据所述至少一个指令格式查询映射字典而获得分别与所述至少一个指令格式相对应的微操作信息,其中,所述映射字典包括所述至少一个指令格式与所述微操作信息之间的对应关系;以及
根据所述微操作信息,生成至少一个微操作指令;
其中,所述指令信息包括待解码指令的指令信息,所述待解码指令的指令信息包括操作码和操作数,
根据所述指令信息,确定至少一个指令格式,包括:
根据所述操作数,确定所述操作数的类型和所述操作数的长度;以及
根据所述操作码、所述操作数的类型和所述操作数的长度,确定所述待解码指令的指令格式。
2.根据权利要求1所述的方法,其中,所述操作数的类型包括立即数、寄存器操作数和存储器操作数。
3.根据权利要求2所述的方法,其中,根据所述微操作信息,生成至少一个微操作指令,包括:
根据所述微操作信息和所述操作数,生成所述待解码指令的微操作指令。
4.根据权利要求1所述的方法,其中,所述映射字典还包括指令类别与指令格式之间的对应关系,所述指令类别是根据执行指令集中的多个指令格式各自的执行单元划分的,
根据所述指令信息,确定至少一个指令格式,包括:
在所述指令信息包括所述指令类别的信息的情况下,根据所述指令类别的信息确定指令类别,并且从所述映射字典中确定所述指令类别对应的至少一个指令格式。
5.根据权利要求1所述的方法,其中,所述映射字典还包括指令组与指令格式之间的对应关系,所述指令组是根据指令集中的多个指令格式各自的功能被划分的,
根据所述指令信息,确定至少一个指令格式,包括:
在所述指令信息包括所述指令组的信息的情况下,根据所述指令组的信息确定所述指令组,并且从所述映射字典中确定所述指令组的至少一个指令格式。
6.根据权利要求4或5所述的方法,其中,根据所述微操作信息,生成至少一个微操作指令,包括:
根据所述微操作信息指示的操作数的类型,生成微操作的操作数;以及
根据所述微操作信息指示的操作码和所述微操作的操作数,生成至少一个微操作指令。
7.根据权利要求1所述的方法,还包括:建立所述映射字典。
8.根据权利要求7所述的方法,其中,所述信息处理方法由测试平台执行,
建立所述映射字典,包括:
获取以第一方式记录的指令集中每个指令格式与微操作信息之间的对应关系;
依次读取所述对应关系;以及
以编程语言输出所述对应关系,以建立映射字典,其中,所述编程语言为所述测试平台能够识别的语言。
9.根据权利要求8所述的方法,所述编程语言包括硬件描述语言。
10.根据权利要求1所述的方法,还包括:
向执行装置发送所述微操作指令,使所述执行装置执行所述微操作指令;以及
根据所述执行装置执行所述微操作指令的结果来确定所述执行装置的功能是否正确。
11.根据权利要求4或5所述的方法,其中,所述指令集包括X86指令集,所述指令集中的指令包括X86指令。
12.根据权利要求1所述的方法,还包括:更新所述映射字典;
其中,根据所述至少一个指令格式查询映射字典而获得分别与所述至少一个指令格式相对应的微操作信息,包括:
根据所述至少一个指令格式查询更新后的所述映射字典而获得分别与所述至少一个指令格式相对应的微操作信息。
13.一种信息处理装置,包括:
第一获取单元,配置为获取指令信息;
确定单元,配置为根据所述指令信息,确定至少一个指令格式;
第二获取单元,配置为根据所述至少一个指令格式查询映射字典而获得分别与所述至少一个指令格式相对应的微操作信息,其中,所述映射字典包括所述至少一个指令格式与所述微操作信息之间的对应关系;以及
生成单元,配置为根据所述微操作信息,生成至少一个微操作指令;
其中,所述指令信息包括待解码指令的指令信息,所述待解码指令的指令信息包括操作码和操作数,
所述确定单元还配置为:
根据所述操作数,确定所述操作数的类型和所述操作数的长度;以及
根据所述操作码、所述操作数的类型和所述操作数的长度,确定所述待解码指令的指令格式。
14.一种信息处理装置,包括:
处理器;
存储器,包括一个或多个计算机程序模块;
其中,所述一个或多个计算机程序模块被存储在所述存储器中并被配置为由所述处理器执行,所述一个或多个计算机程序模块包括用于实现权利要求1-12任一项所述的信息处理方法的指令。
15.一种存储介质,非暂时性地存储计算机可读指令,当所述计算机可读指令由计算机执行时执行权利要求1-12任一项所述的信息处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011220490.8A CN112346780B (zh) | 2020-11-05 | 2020-11-05 | 一种信息处理方法、装置和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011220490.8A CN112346780B (zh) | 2020-11-05 | 2020-11-05 | 一种信息处理方法、装置和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112346780A CN112346780A (zh) | 2021-02-09 |
CN112346780B true CN112346780B (zh) | 2022-11-15 |
Family
ID=74428752
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011220490.8A Active CN112346780B (zh) | 2020-11-05 | 2020-11-05 | 一种信息处理方法、装置和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112346780B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101916179A (zh) * | 2010-07-12 | 2010-12-15 | 清华大学 | 控制寄存器中的标志位的存取方法 |
GB201402906D0 (en) * | 2013-03-15 | 2014-04-02 | Intel Corp | Methods and apparatus for fusing instructions to provide or-test and and-test functionality on multiple test sources |
CN104486481A (zh) * | 2014-11-18 | 2015-04-01 | 广东欧珀移动通信有限公司 | 一种操作设置的共享方法、用户设备以及共享系统 |
CN107798069A (zh) * | 2017-09-26 | 2018-03-13 | 恒生电子股份有限公司 | 用于数据加载的方法、装置及计算机可读介质 |
CN108027798A (zh) * | 2015-12-08 | 2018-05-11 | 上海兆芯集成电路有限公司 | 用于动态配置执行资源的具有可扩展指令集架构的处理器 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8281109B2 (en) * | 2007-12-27 | 2012-10-02 | Intel Corporation | Compressed instruction format |
-
2020
- 2020-11-05 CN CN202011220490.8A patent/CN112346780B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101916179A (zh) * | 2010-07-12 | 2010-12-15 | 清华大学 | 控制寄存器中的标志位的存取方法 |
GB201402906D0 (en) * | 2013-03-15 | 2014-04-02 | Intel Corp | Methods and apparatus for fusing instructions to provide or-test and and-test functionality on multiple test sources |
CN104486481A (zh) * | 2014-11-18 | 2015-04-01 | 广东欧珀移动通信有限公司 | 一种操作设置的共享方法、用户设备以及共享系统 |
CN108027798A (zh) * | 2015-12-08 | 2018-05-11 | 上海兆芯集成电路有限公司 | 用于动态配置执行资源的具有可扩展指令集架构的处理器 |
CN107798069A (zh) * | 2017-09-26 | 2018-03-13 | 恒生电子股份有限公司 | 用于数据加载的方法、装置及计算机可读介质 |
Non-Patent Citations (2)
Title |
---|
x86指令集兼容处理器中微指令的设计与验证;安建峰等;《西北工业大学学报》;20100415(第02期);全文 * |
汇编程序自动构造的研究与实现;陈燕俐等;《计算机工程与设计》;20061028(第20期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN112346780A (zh) | 2021-02-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112118286B (zh) | 基于mdc多线程链路追踪方法、装置及计算机可读存储介质 | |
CN112765023B (zh) | 测试用例生成方法、装置 | |
CN107025480B (zh) | 图像生成方法及其设备 | |
CN108459964B (zh) | 测试用例选择方法、装置、设备以及计算机可读存储介质 | |
CN111538942B (zh) | 表达式处理方法、电子装置及存储介质 | |
CN107315566B (zh) | 一种用于执行向量循环移位运算的装置和方法 | |
JP2004030015A (ja) | 情報処理装置及び電子機器 | |
CN112346780B (zh) | 一种信息处理方法、装置和存储介质 | |
CN112214256B (zh) | 机器学习的运行控制方法、装置、电子设备及存储介质 | |
CN109324838B (zh) | 单片机程序的执行方法、执行装置及终端 | |
CN115328390A (zh) | 基于c51的指针变量读写操作方法、装置、设备及介质 | |
CN113703753A (zh) | 用于产品开发的方法、装置和产品开发系统 | |
JP2007193572A (ja) | Cpu、集積回路装置、マイクロコンピュータ及び電子機器 | |
CN107688466B (zh) | 一种运算装置及其操作方法 | |
CN112905931A (zh) | 页面信息的展示方法、装置、电子设备及存储介质 | |
CN107451050B (zh) | 函数获取方法和装置、服务器 | |
JP2007207075A (ja) | Cpu、集積回路装置、マイクロコンピュータ、電子機器、及びcpuの制御方法 | |
KR20150041541A (ko) | 프로세서의 디코더 검증을 위한 테스트 벤치 생성 방법 및 이를 위한 장치 | |
CN112256252A (zh) | 接口生成方法、装置、存储介质及电子设备 | |
CN111756682A (zh) | 游戏数据的确定方法、获取方法及其装置 | |
CN114428630B (zh) | 芯片算法升级方法、装置和芯片 | |
CN111506299B (zh) | 前端数据验证方法、装置和计算机设备 | |
KR102600283B1 (ko) | 전자 장치 및 이를 이용한 명령어 처리 방법 | |
JP5365846B2 (ja) | プログラム検証装置、プログラム検証方法、及び検証機能実行用プログラム | |
CN117130721B (zh) | WebAssembly代码的执行方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |