掌桥专利:专业的专利平台
掌桥专利
首页

模拟芯片运行的方法、计算机可读存储介质及电子设备

文献发布时间:2023-06-19 19:30:30


模拟芯片运行的方法、计算机可读存储介质及电子设备

技术领域

本发明涉及芯片验证技术领域,尤其涉及一种模拟芯片运行的方法。

背景技术

在芯片的设计、验证过程中通常采用软件模拟器来模拟芯片的行为,软件模拟器可以提供简单有效的验证方法,来提升芯片的设计质量。软件模拟器相对于芯片硬件能够更好更快的迭代升级,辅助芯片的设计,可以很大程度上节约开发成本,提高开发效率。软件模拟器还可以提供更好更多的调试手段,方便使用者开发调试芯片应用程序,所以软件模拟器在芯片设计完成之后可以作为芯片应用程序的开发工具或者产品来使用。

芯片软件模拟器通过运行软件的方式来模拟真实硬件(例如,芯片)的行为,比如指令的执行、按键的响应、图像的显示、声音的播放等等。然而,软件模拟器的行为要做到和真实的硬件完全一致往往是非常困难的,尤其软件模拟器要兼顾到指令的解析执行、按键或者中断的相应、时钟频率的一致性、图像的显示以及声音的播放更是不容易实现,这些对软件模拟器的效能都有很高的要求。在指令执行的过程中,占用时间最多的部分为指令解析的过程,因此,亟需一种对提高指令解析效率的技术方案。

发明内容

本发明提供的模拟芯片运行的方法,能够采用预先设定的第一映射表和第二映射表完成指令执行,减少了指令解析的时间,提高了软件模拟器的效率。

本发明提供一种模拟芯片运行的方法,执行于模拟芯片运行的软件模拟器中,所述方法包括:

获取目标指令,并将所述目标指令分解为操作码和操作数;

依据所述操作码,从预定的具有操作码与指令功能函数映射关系的第一映射表中获取对应的指令功能函数和预定的具有操作数与指令功能函数参数映射关系的第二映射表;

依据所述操作数,从所述第二映射表中获取对应的指令功能函数的参数;

依据所述指令功能函数和所述指令功能函数的参数,完成所述目标指令的执行。

可选地,依据所述操作码,从预定的具有操作码与指令功能函数映射关系的第一映射表中获取对应的指令功能函数包括:

以所述操作码作为索引,从所述第一映射表中查询到指令功能函数指针;

依据所述指令功能函数指针,索引到对应的指令功能函数。

可选地,依据所述操作码,从预定的具有操作码与指令功能函数映射关系的第一映射表中获取对应的预定的具有操作数与指令功能函数参数映射关系的第二映射表包括:

以所述操作码为索引,从所述第一映射表中查询到预定的具有操作数与指令功能函数参数映射关系的第二映射表的地址;

从所述第二映射表的地址获取所述第二映射表。

可选地,依据所述操作数,从所述第二映射表中获取对应的指令功能函数的参数包括:

以所述操作数为索引,在所述第二映射表中查询到预定的指令功能函数参数。

可选地,所述第一映射表和所述第二映射表是在软件模拟器初始化过程中形成的,所述软件模拟器初始化过程包括:

获取所述软件模拟器上运行的目标程序的所有指令;

对所述所有指令进行解析,提取所有指令对应的操作码和操作数;

依据所述第一映射表对应的第一预定数据结构,填充所述操作码、指令功能函数指针和对应的第二映射表地址,形成第一映射表;

依据所述第二映射表对应的第二预定数据结构,填充所述操作数对应的指令功能函数参数形成第二映射表。

可选地,所述第一预定数据结构和第二预定数据结构是在指令集分析过程形成的,所述指令集分析过程包括:

获取所述软件模拟器模拟的目标芯片的指令集中的所有指令;

对指令集中的每一条指令构建一个指令功能函数;

依据每一条指令与所述每一个指令功能函数的对应关系,构建所述第一预定数据结构;

依据所述指令功能函数参数,构建第二预定数据结构。

可选地,所述第一预定数据结构包括多行数据,每行数据至少包括指令的操作码索引、指令功能函数指针以及第二映射表地址。

可选地,所述第二预定数据结构包括多行数据,每行数据至少包括一个指令功能函数单次执行对应的指令功能函数参数。

可选地,所述指令功能函数参数具有下标,所述下标为所述操作数。

第二方面,本发明还提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机指令,所述计算机指令被处理器执行时实现如上述任一项所述的方法。

第三方面,本发明还一种电子设备,包括:

处理器;

与所述处理器通信连接的存储器,其中,所述存储器存储有可被所述处理器执行的指令,所述指令被所述处理器执行,以使所述处理器能够执行上述任一项所述的方法。

在本发明提供的技术方案中,通过预先设定的第一映射表和第二映射表,在程序运行时,待处理器取出指令之后,只需要以操作码和操作数作为索引,简单查表即可完成指令的解析,直接对指令进行执行,大大提高了软件模拟器的效率。

附图说明

图1为本发明一实施例模拟芯片运行的方法流程图;

图2为本发明一实施例模拟芯片运行的方法中的指令格式示意图;

图3为本发明一实施例模拟芯片运行的方法获取指令功能函数的流程图;

图4为本发明一实施例模拟芯片运行的方法获取第二映射表流程图;

图5为本发明一实施例模拟芯片运行的方法形成第一映射表和第二映射表的流程图;

图6为本发明一实施例模拟芯片运行的方法构建第一预定数据结构和第二预定数据结构的流程图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本发明实施例提供一种模拟芯片运行的方法,执行于模拟芯片运行的软件模拟器中,如图1所示,所述方法包括:

步骤100,获取目标指令,并将所述目标指令分解为操作码和操作数;

在一些实施例中,目标指令格式通常规定了多个区域,其中一个区域为操作码所在的区域,另外一个以上的区域为操作数所在的区域。在获取目标指令之后,从操作码所在的区域提取数据,即可获得操作码,从操作数所在的区域提取数据,即可获得操作码对应的操作数。例如,目标指令格式可以如图2所示,在图2中,操作码与指令功能函数具有映射关系,操作数与指令功能函数参数具有映射关系。

步骤200,依据所述操作码,从预定的具有操作码与指令功能函数映射关系的第一映射表中获取对应的指令功能函数和预定的具有操作数与指令功能函数参数映射关系的第二映射表;

在一些实施例中,在第一映射表中,可以以每个操作码对应一行以便对指令功能函数和第二映射表进行索引。第一映射表包括多行,每行表示一个操作码的数据,每个操作码的数据至少包括表征指令功能函数的元素以及表征第二映射表的元素。其中,表征指令功能函数的元素例如可以为指令功能函数的指针,表征第二映射表的元素例如可以为第二映射表的地址。

步骤300,依据所述操作数,从所述第二映射表中获取对应的指令功能函数的参数;

在一些实施例中,第二映射表在第二映射表集合中,第二映射表集合可以包括多个行,每行对应一个操作码,在每行的多个元素中,每个元素表示一个指令功能函数的参数。即,第二映射表为第二映射表集合中的其中一行,在第二映射表中每个参数以对应的操作数进行索引。

步骤400,依据所述指令功能函数和所述指令功能函数的参数,完成所述目标指令的执行。

在一些实施例中,将指令功能函数的参数应用于指令功能函数,完成指令功能函数的计算,即完成了目标指令的执行。

在本发明实施例提供的技术方案中,通过预先设定的第一映射表和第二映射表,在程序运行时,待处理器取出指令之后,只需要以操作码和操作数作为索引,简单查表即可完成指令的解析,直接对指令进行执行,大大提高了软件模拟器的效率。通过本发明实施例提供的技术方案提升指令执行效能之后,就能够很容易让模拟器兼顾到图像的模拟显示,以及声音的处理和播放、同时还可以做到按键或者中断的响应、时钟频率的一致性的模拟等。使得软件模拟器的行为和真实的硬件行为一致,可以更好的辅助芯片的设计、验证从而很大程度上节约开发成本,提高开发效率。软件模拟器的效能优化提高之后,更容易做到行为和真实的硬件行为一致。由于软件模拟器可以提供更好更多的调试手段,方便使用者调试芯片应用程序,所以高效的软件模拟器能够让芯片的应用程序开发、调试、验证更容易。甚至可以做到芯片应用程序在软件模拟器上开发、调试、验证之后直接在芯片上运行。

作为一种可选的实施方式,如图3所示,依据所述操作码,从预定的具有操作码与指令功能函数映射关系的第一映射表中获取对应的指令功能函数包括:

步骤211,以所述操作码作为索引,从所述第一映射表中查询到指令功能函数指针;

在一些实施例中,指令功能函数指针是指指令功能函数在内存中的地址。第一映射表包括多行,每行表示一个操作码的数据,每个操作码的数据至少包括表征指令功能函数的元素以及表征第二映射表的元素。在本步骤中,表征指令功能函数的元素为指令功能函数指针。

步骤212,依据所述指令功能函数指针,索引到对应的指令功能函数。

在一些实施例中,由于指令功能函数指针是指指令功能函数在内存中的地址,依据该地址,可以直接跳转到达指令功能函数的执行体中。从而,能够直接开始指令功能函数的执行。

作为一种可选的实施方式,如图4所示,依据所述操作码,从预定的具有操作码与指令功能函数映射关系的第一映射表中获取对应的预定的具有操作数与指令功能函数参数映射关系的第二映射表包括:

步骤221,以所述操作码为索引,从所述第一映射表中查询到预定的具有操作数与指令功能函数参数映射关系的第二映射表的地址;

在一些实施例中,第一映射表包括多行,每行表示一个操作码的数据,每个操作码的数据至少包括表征指令功能函数的元素以及表征第二映射表的元素。在本步骤中,表征指令功能函数参数的元素为第二映射表的地址。

步骤222,从所述第二映射表的地址获取所述第二映射表。

在一些实施例中,第二映射表在第二映射表集合中,第二映射表集合可以包括多个行,每行对应一个操作码,在每行的多个元素中,每个元素表示一个指令功能函数的参数。即,第二映射表为第二映射表集合中的其中一行,在第二映射表中每个参数以对应的操作数进行索引。在第二映射表的地址获取第二映射表是指,依据映射关系,在第二映射表集合中获取对应于操作码的一行。

作为一种可选的实施方式,依据所述操作数,从所述第二映射表中获取对应的指令功能函数的参数包括:

以所述操作数为索引,在所述第二映射表中查询到预定的指令功能函数参数。

在一些实施例中,在第二映射表中,不同列表示的是同一操作码对应的不同操作数所对应的指令功能函数的参数。依据操作码获取指令功能函数参数是在与操作码对应的第二映射表中,以操作数作为列索引,查询指令功能函数参数。

作为一种可选的实施方式,如图5所示,所述第一映射表和所述第二映射表是在软件模拟器初始化过程中形成的,所述软件模拟器初始化过程包括:

步骤011,获取所述软件模拟器上运行的目标程序的所有指令;

在一些实施例中,软件模拟器每次进行验证的过程中,都会执行不同的目标程序,对于不同的目标程序来说,其所需的指令可能不同。因此,在本步骤中,获取目标程序的所有指令,确保目标程序执行的所有过程都能够具有高效率。而对于目标程序运行不需要的指令,则通常不需要进行获取,以便减少第一映射表和第二映射表的规模,进一步提高效率。当然,也可以对目标程序运行不需要的指令进行获取,避免因指令遗漏造成的运行失败。

步骤012,对所述所有指令进行解析,提取所有指令对应的操作码和操作数;

在一些实施例中,指令格式通常规定了多个区域,其中一个区域为操作码所在的区域,另外一个以上的区域为操作数所在的区域。在获取目标指令之后,从操作码所在的区域提取数据,即可获得操作码,从操作数所在的区域提取数据,即可获得操作码对应的操作数。指令格式可以如图2所示,在图2中,操作码与指令功能函数具有映射关系,操作数与指令功能函数参数具有映射关系。

步骤013,依据所述第一映射表对应的第一预定数据结构,填充所述操作码、指令功能函数指针和对应的第二映射表地址,形成第一映射表;

在一些实施例中,指令功能函数指针是指指令功能函数在内存中的存储地址,第二映射表地址是指第二映射表在第二映射表存储位置的索引地址。采用上述的方式进行填充后,形成的第一映射表例如可以如下:

步骤014,依据所述第二映射表对应的第二预定数据结构,填充所述操作数对应的指令功能函数参数形成第二映射表。

在一些实施例中,在第二映射表中,采用操作数作为列索引,在同一行中,不同的列索引中填充不同的指令功能函数参数,即可形成第二映射表,对于不同的指令功能函数中,可以具有不同数量的指令功能函数参数,对于多个指令功能函数参数来说,可以在同一行中顺序填充,也可以乱序填充或间隔填充。第二映射表例如可以如下表所示:

作为一种可选的实施方式,如图6所示,所述第一预定数据结构和第二预定数据结构是在指令集分析过程形成的,所述指令集分析过程包括:

步骤021,获取所述软件模拟器模拟的目标芯片的指令集中的所有指令;

在一些实施例中,软件模拟器每次进行验证的过程中,都会执行不同的目标程序,对于不同的目标程序来说,其所需的指令可能不同。但是,为了在每次进行验证时都能够快速的形成第一映射表和第二映射表,在指令集分析过程中,对指令集中的所有指令全部进行获取和分析,在后续的每次验证过程中进行选取即可。

步骤022,对指令集中的每一条指令构建一个指令功能函数;

在一些实施例中,指令功能函数是指处理器物理层执行的动作,例如寄存器的读写,随机存取存储器RAM的读写以及条件跳转等。该指令功能函数能够被处理器直接执行。

步骤023,依据每一条指令与所述每一个指令功能函数的对应关系,构建所述第一预定数据结构;

在一些实施例中,第一预定数据结构是指在第一映射表中的每行数据所表示的含义以及每列数据所标识的含义的定义。即,第一预定数据结构是一个定义了行索引和列索引,但是表格中未填充实际参数的空表格。

步骤024,依据所述指令功能函数参数,构建第二预定数据结构。

在一些实施例中,第二预定数据结构是指在第二映射表中的每行数据所表示的含义以及每列数据所标识的含义的定义。即,第二预定数据结构是一个定义了行索引和列索引,但是表格中未填充实际参数的空表格。

作为一种可选的实施方式,所述第一预定数据结构包括多行数据,每行数据至少包括指令的操作码索引、指令功能函数指针以及第二映射表地址。

在一些实施例中,第一预定数据结构中,每行数据表示一个指令执行所需的信息,指令功能函数指针与第二映射表地址即为指令执行所需的信息。在一些优选的实施方式中,每一行以带有操作码下标的指令作为索引。

作为一种可选的实施方式,所述指令操作码索引包括从指令中提取的操作码。

在一些实施例中,将操作码作为指令功能函数指针以及第二映射表地址的下标,以形成索引,不但能够大大的增强表格的可读性,还能够有效的提供查询的便利性。

作为一种可选的实施方式,所述第二预定数据结构包括多行数据,每行数据至少包括一个指令功能函数单次执行时对应的指令功能函数参数。

在一些实施例中,第二预定数据结构中,每行包括一个操作码单次执行时对应的指令功能函数参数,参数的数量可以为一个也可以为多个也可以为零个。参数的数量取决于指令功能函数所需要的数量。

作为一种可选的实施方式,所述指令功能函数参数具有下标,所述下标为所述操作数。

在一些实施例中,指令功能函数参数填充在表格中,有效的提高表格的可读性,以操作数作为指令功能函数参数的下标则能够有效的为索引提供便利。

本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机指令,所述计算机指令被处理器执行时实现如上述任一项所述的方法。

本发明实施例还一种电子设备,包括:

处理器;

与所述处理器通信连接的存储器,其中,所述存储器存储有可被所述处理器执行的指令,所述指令被所述处理器执行,以使所述处理器能够执行上述任一项所述的方法。

如下提供了一种具体的示例性实施方式,对本发明的技术方案予以说明,具体如下:

在软件模拟器程序和数据准备阶段,包括如下的步骤

步骤1,收集目标芯片的指令集并逐一分析指令;

步骤2,为每一条指令建立一个对应的指令功能函数,在该功能函数里面实现指令的真正执行,比如寄存器的读写,随机存取存储器RAM的读写,条件跳转等。所有指令都会有一一对应的指令功能函数;

步骤3,软件模拟器程序各个模块(随机存取存储器RAM、只读存储器ROM、寄存器Register等)的程序数据准备;

步骤4,定义操作码和指令功能函数以及操作数对应指令功能函数参数列表数据结构,即第一数据结构和第二数据结构,为初始化的时候建立操作码和指令功能函数对应表,即第一映射表以及操作数和指令功能函数参数对应表,即第二映射表做准备。

在软件模拟器初始化阶段,包括如下的步骤:

步骤5,软件模拟器程序各个模块(随机存取存储器RAM、只读存储器ROM、寄存器Register等)的初始化;

步骤6,解析程序所有可能遇到指令,提取操作码和操作数,为建立操作码和指令功能函数对应表以及操作数和指令功能函数参数对应表做准备;

步骤7,建立操作码和指令功能函数对应表,即第一映射表以及操作数和指令功能函数参数对应表,即第二映射表。在第一映射表中,行索引为指令操作码,行索引下标可以直接命中指令功能函数,在第二映射表中,操作数作为指令功能函数参数列表的一维下标,即作为指令功能函数参数的下标可以直接命中参数列表。在一些优选的实施方式中,在第二映射表中,还可以以变量作为行索引,以便与第一映射表形成映射。

在软件模拟器的执行阶段,包括如下的步骤:

步骤8,获取指令;

步骤9,将指令分解为操作码和操作数;

步骤10,根据操作码查询初始化阶段建立的操作码对应指令功能函数表,获取指令功能函数的函数指针,这样就不需要进行比较耗时的指令解析的工作,直接透过操作码就可以索引到对应指令的功能函数;

步骤11,根据操作数查询初始化阶段建立的操作数和指令功能函数参数映射表,获取指令功能函数参数列表;

步骤12,执行指令,通过指令功能函数指针直接进入到指令功能函数执行体,并从步骤11中获取指令功能函数参数;

步骤13,更新PC值,准备取下一条指令。

本领域普通技术人员可以理解实现上述方法实施例中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random AccessMemory,RAM)等。

以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。

相关技术
  • 运行监测方法、装置、电子设备及计算机可读存储介质
  • AR模拟处理方法、装置、电子设备及可读存储介质
  • 模态框构建方法、装置、电子设备、计算机可读存储介质
  • 电子设备、音量调节方法及装置、计算机可读存储介质
  • 数据库同步恢复方法、装置、计算机可读存储介质和电子设备
  • 音频数据处理方法和装置、通话方法、音频处理芯片、电子设备以及计算机可读存储介质
  • 运行控制方法及装置、电子设备和计算机可读存储介质
技术分类

06120115936926