首页> 中国专利> 处理器功能仿真模型生成装置、方法及功能验证方法

处理器功能仿真模型生成装置、方法及功能验证方法

摘要

本申请公开了一种处理器功能仿真模型生成装置,包括寄存器配置模块、指令集配置模块、输入处理单元生成模块、功能仿真单元生成模块、仿真结果配置模块、仿真结果输出单元生成模块和指令功能库。采用本申请提供的生成装置可自动生成满足仿真功能需要的功能仿真模型,避免了完全手工开发导致大量错误的可能性;同时,采用本申请的自动生成方法也大大节省了功能仿真模型的开发时间。

著录项

  • 公开/公告号CN102789418A

    专利类型发明专利

  • 公开/公告日2012-11-21

    原文格式PDF

  • 申请/专利权人 北京大学深圳研究生院;

    申请/专利号CN201210214968.5

  • 申请日2012-06-27

  • 分类号G06F11/36(20060101);

  • 代理机构44281 深圳鼎合诚知识产权代理有限公司;

  • 代理人郭燕

  • 地址 518055 广东省深圳市南山区西丽深圳大学城北大校区

  • 入库时间 2023-12-18 07:21:42

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2017-06-20

    专利权的转移 IPC(主分类):G06F11/36 登记生效日:20170601 变更前: 变更后: 申请日:20120627

    专利申请权、专利权的转移

  • 2015-09-30

    授权

    授权

  • 2013-01-16

    实质审查的生效 IPC(主分类):G06F11/36 申请日:20120627

    实质审查的生效

  • 2012-11-21

    公开

    公开

说明书

技术领域

本申请涉及集成电路设计领域,具体涉及一种处理器指令级的功能仿真模 型及其自动生成装置和一种处理器的功能验证方法。

背景技术

处理器硬件设计的逻辑功能和性能指标主要依赖于硬件设计人员利用硬件 描述语言编写的代码质量,在实际应用前通常需要先对该处理器的正确性进行 验证。伴随处理器复杂度的不断上升,处理器验证工作的复杂度和工作量呈现 指数上升,对验证的依赖与要求越来越高。作为设计过程的一部分,验证起着 越来越关键的作用,验证的工作量也是相对较大,可能占据到整个设计工作量 的70%左右,验证的效率和可靠性往往决定了项目的成败。

处理器的验证主要包括功能验证和时序验证等过程,而功能验证中最基本 且使用最广泛的方法是仿真验证,仿真验证在处理器验证的工程中起着非常重 要的作用。

为了确保处理器功能的正确性,通常需要建立一个功能仿真模型,对比处 理器和功能仿真模型两者在相同输入激励下的输出结果来验证。现有技术中通 常采用完全手工开发一个功能仿真模型的方式,这种方式不仅是一项非常繁重 的工作,而且极易出错。一般来说,不仅开发过程需要花费数月的时间,还需 要花费大量的时间来进行功能仿真模型正确性的验证。

发明内容

本申请要解决的主要技术问题是,提供一种可由用户根据需求自行配置的 处理器功能仿真模型的生成装置。

为解决上述技术问题,本申请提供一种处理器功能仿真模型的生成装置, 该处理器功能仿真模型包括数据结构声明单元、寄存器初始化单元、输入处理 单元、功能仿真单元和仿真结果输出单元;

数据结构声明单元分别与寄存器初始化单元、输入处理单元、功能仿真单 元、仿真结果输出单元相连;数据结构声明单元用于根据寄存器配置信息声明 寄存器的个数及每个寄存器的名称及数据位宽,并声明保存指令信息所用的数 据结构;

寄存器初始化单元分别与数据结构声明单元、功能仿真单元相连;寄存器 初始化单元用于根据寄存器配置信息中的复位值,初始化寄存器的值;

输入处理单元分别与数据结构声明单元、功能仿真单元相连;输入处理单 元用于根据输入的指令机器码的特征判断指令类型、提取指令信息以确定指令 的功能,并将指令信息转换为所述数据结构声明单元中声明的数据结构并保存;

功能仿真单元分别与数据结构声明单元、寄存器初始化单元、输入处理单 元以及仿真结果输出单元相连;功能仿真单元用于根据所述输入处理单元中确 定的指令的功能,完成指令的功能仿真;

仿真结果输出单元分别与功能仿真单元、数据结构声明单元相连;仿真结 果输出单元用于将功能仿真单元的功能仿真结果按设定格式输出;

该生成装置包括寄存器配置模块、指令集配置模块、输入处理单元生成模 块、功能仿真单元生成模块、仿真结果配置模块、仿真结果输出单元生成模块 和指令功能库;

寄存器配置模块:分别与指令集配置模块、功能仿真单元生成模块以及仿 真结果配置模块连接,用于接收用户输入的寄存器配置信息,并根据寄存器配 置信息中的名称与数据位宽生成数据结构声明单元;根据寄存器配置信息中的 复位值生成寄存器初始化单元;

指令集配置模块:分别与寄存器配置模块、输入处理单元生成模块、功能 仿真单元生成模块相连,用于接收用户输入的指令集配置信息,指令集配置信 息包括指令机器码和指令功能信息,所述指令机器码包括指令类型的映射字段 和操作数映射字段;

输入处理单元生成模块:与指令集配置模块相连,用于根据指令集配置模 块接收的指令集配置信息中的机器码信息,生成输入处理单元;

功能仿真单元生成模块:分别与指令集配置模块、寄存器配置模块相连, 用于根据指令集配置模块接收的指令集配置信息中的功能信息生成功能仿真单 元;

仿真结果配置模块:分别与寄存器配置模块、仿真结果输出单元生成模块 相连,用于接收用户输入的仿真结果配置信息;

仿真结果输出单元生成模块:用于根据所述仿真结果配置模块接收的仿真 结果配置信息生成仿真结果输出单元;

指令功能库:分别与指令集配置模块、功能仿真单元生成模块相连,用于 存储指令集配置模块接收的指令集配置信息中的功能信息;所述功能仿真单元 生成模块还根据指令功能库存储的功能信息生成功能仿真单元。

进一步,所述处理器功能仿真模型的输入处理单元包括:

指令类型判断子单元:与指令操作数信息处理子单元相连,用于根据指令 机器码中表示指令类型的信息判断指令类型;

指令操作数信息处理子单元:用于将指令机器码中表示指令操作数的信息 转换为所述数据结构声明单元中声明的数据结构并保存;

所述生成装置的输入处理单元生成模块包括:

指令类型判断子单元生成模块:用于根据机器码信息中表示指令类型的信 息生成所述指令类型判断子单元;

指令操作数信息处理子单元生成模块:用于根据机器码信息中表示指令操 作数的信息,生成所述指令操作数信息处理子单元。

进一步,所述指令操作数信息包括:操作数个数和操作数数组。

进一步,所述操作数数组包括操作数类型和操作数数值。

同时,本申请还提供了一种处理器功能仿真模型的生成方法,其包括以下 步骤:

配置寄存器信息:接收用户输入的寄存器参数,所述寄存器参数包括寄存 器个数及每个寄存器的名称、数据位宽和复位值;根据寄存器的个数、名称与 数据位宽生成数据结构声明单元,根据寄存器的复位值生成寄存器初始化单元, 数据结构声明单元用于以计算机可执行语言描述寄存器参数,声明寄存器的名 称和数据位宽,寄存器初始化单元用于以计算机可执行语言描述寄存器初始值;

配置指令集信息:接收用户输入的指令集配置信息,指令集配置信息包括 指令机器码和指令功能信息,所述指令机器码包括指令类型的映射字段和操作 数映射字段;根据指令类型在指令功能库中匹配出该指令的指令功能;

根据指令机器码生成机器码输入处理单元,所述机器码输入处理单元用于 提取输入的指令机器码中的信息,根据指令机器码的指令类型字段判断指令的 类型,并将指令机器码中的操作数映射字段转换为功能仿真器中的操作数信息, 并将指令的类型和操作数信息按照预设的数据结构进行存储;

根据指令功能生成功能仿真单元,所述功能仿真单元用于根据指令功能, 执行机器码输入处理单元发送的指令,改变相应寄存器的值;

配置输出结果:根据用户输入的仿真结果输出格式生成仿真结果输出单元, 所述仿真结果输出单元用于将功能仿真单元处理的寄存器的值按照仿真结果输 出格式输出。

本申请还提供了一种处理器功能验证方法,利用仿真模型对处理器设计进 行功能验证,所述方法包括:

根据上述处理器功能仿真模型的生成方法,接收用户输入的待验证处理器 的寄存器参数、指令集信息和仿真结果输出格式信息,运用上述处理器功能仿 真模型的生成装置,自动生成上述处理器指令级功能仿真模型;

让该功能仿真模型与待验证的处理器运行相同的一段指令,比较每条指令 执行完以后,该功能仿真模型和待验证的处理器对应的各个寄存器的值是否相 同;若所有寄存器的值都相同,则认为待验证处理器在执行该段指令时没有错 误;反之,则认为待验证处理在执行该段代码时会出现错误,需要对待验证处 理器进行修改;

重复上述操作,保证待验证处理器在执行很多代码段时都不会出错,通过 分析待验证处理器在仿真验证过程中的覆盖率,以待验证处理的覆盖率作为验 证是否通过的指标。

本申请的有益效果是:采用本申请提供的生成装置可自动生成满足仿真功 能需要的功能仿真模型,避免了完全手工开发导致大量错误的可能性;同时, 采用本申请的自动生成方法也大大节省了功能仿真模型的开发时间。

附图说明

图1为实施例提供的一种处理器功能仿真模型结构示意图;

图2为实施例提供的输入处理单元的一种结构示意图;

图3为实施例保存指令信息的一种数据结构示意图;

图4为实施例提供的处理器功能仿真模型的生成装置结构示意图;

图5为实施例提供的输入处理单元生成模块的一种结构示意图;

图6为实施例提供的处理器功能仿真模型的生成方法流程图;

图7为实施例提供的处理器功能仿真模型的工作流程图。

具体实施方式

下面通过具体实施方式结合附图对本申请作进一步详细说明。

本实施例先介绍一种处理器功能仿真模型,其次介绍生成该功能仿真模型 的生成装置。(本申请中,处理器功能仿真模型也简称功能仿真模型。)

请参阅图1,该处理器功能仿真模型主要包括数据结构声明单元10、寄存 器初始化单元20、输入处理单元30、功能仿真单元40和仿真结果输出单元50。

数据结构声明单元10:分别与寄存器初始化单元20、输入处理单元30、功 能仿真单元40、仿真结果输出单元50相连;用于根据寄存器配置信息声明寄存 器的个数及每个寄存器的名称及数据位宽,并声明保存指令信息所用的数据结 构。

数据结构声明单元10声明的寄存器(以变量形式)供下述寄存器初始化单 元20、功能仿真单元40以及仿真结果输出单元50使用,声明的保存指令信息 的数据结构供下述输入处理单元30以及功能仿真单元40使用。

寄存器初始化单元20:分别与数据结构声明单元、功能仿真单元相连;用 于根据寄存器配置信息中的复位值,初始化寄存器的值。然后将这些复位值提 供给下述输入处理单元30使用。

上述数据结构声明单元10和寄存器初始化单元20中提到的寄存器配置信 息可以由用户根据待验证处理器的寄存器信息得到。数据结构声明单元10仅用 于进行声明。例如:假设有两个寄存器,名称分别配置为r0和r1,r0的数据 位宽配置为32位,r1的数据位宽配置为16位,两个寄存器的初始值均配置为 零,以计算机可执行语言中的C程序为例,在C程序中会首先进行以下声明:

int  r0;short  r1;

在功能仿真模型后续的运行过程中,寄存器初始化单元20可以利用上述配 置初始值零对寄存器进行初始化(复位)。

输入处理单元30:分别与数据结构声明单元10、功能仿真单元40相连; 用于根据输入的指令机器码的特征判断指令类型、提取指令信息以确定指令的 功能,并将指令信息转换为数据结构声明单元10中声明的数据结构并保存。

上述输入处理单元30中提到的“指令机器码”来源于用户输入。

请参阅图2,为更具体描述输入处理单元30的应用,本实施例将输入处理 单元30细分为以下子单元:

指令类型判断子单元31:与指令操作数信息处理子单元32相连,用于根据 指令机器码中表示指令类型的信息判断指令类型,并将指令类型的信息提供给 下述指令操作数信息处理子单元32。

指令操作数信息处理子单元32:用于将指令机器码中表示指令操作数的信 息转换为所述数据结构声明单元10中声明的数据结构并保存。

假设某指令集中(已预先配置完毕),指令ADD R7,R8的机器码为 1000_0000_0111_1000,其中,16位机器码中的高8位“1000_0000”为表示指 令类型信息的固有机器码,即所有ADD指令(该指令集中ADD指令的操作数为 两个通用寄存器)的高8位机器码都为1000_0000。低8位机器码“0111_1000” 为表示指令操作数信息的部分,其中的高4位“0111”表示第一个操作数的值 为7,即第一个操作数为R7(第7个通用寄存器);其中的低4位“1000”表示 第二个操作数的值为8,即第二个操作数为R8(第8个通用寄存器)。

因此,若用户输入的机器码为“1000_0000_0111_1000”,首先由指令类型 判断子单元31提取高8位,得到1000_0000,即可确定该指令的类型为ADD, 然后通过操作数信息处理子单元32提取低8位,得到0111_1000,即可确定该 指令的操作数为R7,R8,最后由转换保存子单元33将该指令信息转换为数据结 构声明单元10中声明的数据结构并保存,至此便完成了输入指令机器码的处理 工作。

请参阅图3,本实施例中的保存指令信息的数据结构中包括指令类型和操作 数信息。而操作数信息中又包括操作数的个数以及每个操作数的信息即操作数 数组。操作数数组中的每个元素又包括该操作数的类型与该操作数的具体值。 图3以保存如下的指令信息为例:ST R5,R6,1,即指令类型为ST,该条指令 包含3个操作数:第一个操作数的类型为R(即通用寄存器),值为5(即第5 个通用寄存器);第二个操作数的类型为R(即通用寄存器),值为6(即第6个 通用寄存器);第三个操作数的类型为I(即立即数),值为1。

功能仿真单元40:分别与数据结构声明单元10、寄存器初始化单元20、输 入处理单元30以及仿真结果输出单元50相连;用于根据输入处理单元30中确 定的指令的功能,完成指令的功能仿真。该仿真过程和结果根据数据结构声明 单元10中声明的寄存器个数、名称及数据位宽来使用寄存器,同时,要用到寄 存器初始化单元20对寄存器的初始化值。

仿真结果输出单元50:分别与功能仿真单元30、数据结构声明单元10相 连;用于将功能仿真单元40的功能仿真结果按一定格式输出。这里说的“一定 格式”是指根据需要可按八进制、十六进制等格式输出,以及根据需要只输出 某些寄存器的仿真结果。该仿真结果的输出根据数据结构声明单元10中声明的 寄存器个数、名称及数据位宽来使用寄存器。

以下介绍上述处理器功能仿真模型的生成装置。

请参阅图4,该生成装置主要包括:寄存器配置模块100、指令集配置模块 200、输入处理单元生成模块300、功能仿真单元生成模块400、仿真结果配置 模块500、仿真结果输出单元生成模块600和指令功能库700。

寄存器配置模块100:分别与指令集配置模块200、功能仿真单元生成模块 400以及仿真结果配置模块500连接,用于接收寄存器配置信息,并根据寄存器 配置信息中的名称与数据位宽生成上述数据结构声明单元10;根据寄存器配置 信息中的复位值生成上述寄存器初始化单元20。

例如,用户进行如下配置:配置16个通用寄存器,名称为R0、R1……R14、 R15,每个通用寄存器数据位宽为16,且初始值均为0x0000;配置1控制寄存 器,名称为PC,数据位宽为16,初始值为0x0800。根据上述配置,寄存器配置 模块100会在上述功能仿真模型的数据结构声明单元10中声明17个位宽为16 的整型变量R0、R1……R14、R15以及PC;并且在上述功能仿真模型的寄存器初 始化单元20中将R0、R1……R14、R15的初始值赋值为0x0000,将PC的初始值 赋值为0x0800。

指令集配置模块200:分别与寄存器配置模块100、输入处理单元生成模块 300、功能仿真单元生成模块400相连,用于接收用户输入的指令集配置信息, 指令集配置信息包括指令机器码信息以及指令功能信息,该指令机器码包括指 令类型的映射字段和操作数映射字段。

例如,对指令集进行如下配置:假设现需要配置指令集中的以下两类指令: MOVL,ADD。先以ADD指令为例,首先配置ADD指令机器码中表示指令类型的信 息,机器码的高8位固定为1000_0000。然后配置ADD指令机器码中表示操作数 的信息,将该类指令的操作数类型都配置为通用寄存器。机器码低8位中的高4 位表示第一个操作数的值,即若此4位为0111,则表示第一个操作数为R7(第 7个通用寄存器;注意R 0为第0个通用寄存器,故R7为第7个通用寄存器); 机器码低8位中的低4位表示第二个操作数的值,若此4位为1000,则表示第 二个操作数为R8(第8个通用寄存器)。上述指令集的机器码信息将提供给输入 处理单元生成模块300。

配置指令功能的过程,可以用编程语言描述该指令的功能,并将该功能加 入指令功能库700中,使用时查询指令功能库700进行调用。

指令功能库700:分别与指令集配置模块200、功能仿真单元生成模块400 相连,用于存储指令集配置模块200接收的指令集配置信息中的功能信息。

查询指令功能库700并配置指令功能的过程包括:查询指令功能库700中 是否包含ADD指令的功能,假设ADD指令的功能不包含在该指令功能库700中, 则可利用规定的编程语言描述该类指令的功能并加入指令功能库700中。现用C 语言描述ADD指令的功能:

op1=op1+op2;

pc=pc+2;

其中,op1表示第一个操作数,op2表示第二个操作数,pc表示程序计数器。 将上述功能描述加入指令功能库700中,然后再次查询ADD指令的功能是否包 含在指令功能库700中,此时ADD指令的功能已经在指令功能库700中,所以 仅需要根据指令功能库700配置该条指令的功能。这样就完成了ADD指令的配 置。上述指令集的功能信息将提供给功能仿真单元生成模块400,并将用户自定 义的ADD指令功能加入指令功能库700中。

又如,在上述指令集配置过程中,MOVL指令的功能在指令功能库700中已 有说明,则只需将MOVL的功能指定为指令功能库700中对应功能说明即可。

输入处理单元生成模块300:与指令集配置模块200相连,用于根据指令集 配置模块200接收的指令集配置信息中的机器码信息,生成上述输入处理单元 30。

请参阅图5,为更好描述上述输入处理单元生成模块300的工作过程,本实 施例将输入处理单元生成模块300细分为:

指令类型判断子单元生成模块310:用于根据机器码信息中表示指令类型的 信息生成上述指令类型判断子单元31。

指令操作数信息处理子单元生成模块320:用于根据机器码信息中表示指令 操作数的信息,生成上述指令操作数信息处理子单元32。

例如,上述指令集中,ADD指令的机器码高8位固定为1000_0000(该指令 集中的另一类指令MOVL的机器码高8位不可能为1000_0000),则机器码高8位 为1000_0000的指令即为ADD指令,指令类型判断子单元生成模块31以此为根 据自动生成上述指令类型判断子单元31。ADD指令的机器码低8位中的高4位 表示第一个操作数的值,即若此4位为0111,则表示第一个操作数为R7;机器 码低8位中的低4位表示第二个操作数的值,若此4位为1000,则表示第二个 操作数为R8。根据上述信息,指令操作数信息处理子单元生成模块320即可生 成上述指令操作数信息处理子单元32。

功能仿真单元生成模块400:分别与指令集配置模块200、寄存器配置模块 100相连,用于根据指令集配置模块200接收的指令集配置信息中的功能信息(指 令功能库700中的功能信息)生成功能仿真单元40。

例如,上述ADD指令的功能已在指令功能库700中选定,则以指令功能库 700中对该指令功能进行描述的计算机编程语言作为主体,自动生成上述功能仿 真单元中的ADD指令功能仿真函数。

仿真结果配置模块500:分别与寄存器配置模块100、仿真结果输出单元生 成模块600相连,用于接收用户输入的仿真结果配置信息。

例如,对仿真结果输出格式进行如下配置:若只关心16个通用寄存器的值, 则只需要将输出格式配置为每条指令执行完以后按16进制输出16个通用寄存 器的值,并将该信息提供给仿真结果输出单元生成模块600。

仿真结果输出单元生成模块600:与仿真结果配置模块相连,用于根据仿真 结果配置模块500接收的仿真结果配置信息生成上述仿真结果输出单元50。

以下介绍上述处理器仿真功能模型的生成方法,请参考图6,包括以下步骤:

S100,配置寄存器信息:接收用户输入的寄存器参数,该寄存器参数包括 寄存器个数及每个寄存器的名称、数据位宽和复位值。根据寄存器的个数、名 称与数据位宽生成数据结构声明单元10,根据寄存器的复位值生成寄存器初始 化单元20。

S200,配置指令集信息:接收用户输入的指令集配置信息,指令集配置信 息包括指令机器码,该指令机器码包括指令类型的映射字段和操作数映射字段; 根据指令类型在指令功能库中匹配出该指令的指令功能;根据指令机器码生成 机器码输入处理单元30;根据指令功能生成功能仿真单元40。

即配置每条指令的名称、机器码以及每条指令的功能;并根据配置的指令 名称和机器码生成输入处理单元30,根据配置指令名称和功能生成功能仿真单 元40。

S300,配置输出结果,根据用户输入的仿真结果输出格式生成仿真结果输 出单元50。

为更好描述步骤S100中配置寄存器信息的过程,将其细分为以下步骤:

S110:配置寄存器的个数及每个寄存器的名称,作为数据结构声明单元声 明寄存器的个数及变量名称的依据。

S120:配置每个寄存器的数据位宽,作为数据结构声明单元声明寄存器数 据位宽的依据。

S130:配置寄存器复位值,作为寄存器初始化单元初始化寄存器的依据。

为更好描述步骤S200中配置指令集的过程,将其细分为以下步骤:

S210:配置指令名称,作为输入处理单元30、功能仿真单元40识别指令的 依据;一般采用助记符,如MOV、ADD等。

S220:配置指令机器码中表示指令类型的信息,作为输入处理单元30(指 令类型判断子单元31)判断指令类型的依据。

S230:配置指令机器码中表示操作数的信息,作为输入处理单元30(指令 操作数信息处理子单元)提取指令信息中操作数信息的依据,操作数不同时, 机器码做相应的改变。

S260:配置指令的功能,作为功能仿真单元进行功能仿真的依据。

配置每条指令的功能包括:根据指令功能库中该条指令的功能进行配置。

上述步骤S260中配置每条指令的功能的之前可先查询指令功能库,即:

S240:查询指令功能库中是否包含该指令的功能;若是,则根据指令功能 库配置该条指令的功能;若否,则执行:

S250:用编程语言描述该指令的功能并将其加入指令功能库中。

当用户需要对处理器的设计进行验证时,验证流程如下:

根据所述处理器功能仿真模型的生成方法,接收用户输入的待验证处理器 的寄存器参数、指令集信息和仿真结果输出格式信息,运用所述处理器功能仿 真模型的生成装置,自动生成所述处理器指令级功能仿真模型;

让该功能仿真模型与待验证的处理器运行相同的一段指令,比较每条指令 执行完以后,该功能仿真模型和待验证的处理器对应的各个寄存器的值是否相 同;若所有寄存器的值都相同,则认为待验证处理器在执行该段指令时没有错 误;反之,则认为待验证处理在执行该段代码时会出现错误,需要对待验证处 理器进行修改;

重复上述操作,保证待验证处理器在执行很多代码段时都不会出错,通过 分析待验证处理器在仿真验证过程中的覆盖率,以待验证处理的覆盖率作为验 证是否通过的指标。

图7为处理器功能仿真模型的一个工作实例的流程图,主要包括:

1、首先由寄存器初始化单元20初始化寄存器,即根据寄存器的复位值对声 明的寄存器进行初始化。

2、然后判断指令是否执行完,若执行完,则仿真结束;若没有执行完,则 继续完成以下操作:

3、用输入处理单元30从虚拟存储器中读取指令,并处理用户输入的指令机 器码,将指令信息保存到图3所述的数据结构中。具体包括:提取指令机器码 中的信息,根据指令机器码的指令类型字段判断指令的类型,并将指令机器码 中的操作数映射字段转换为功能仿真器中的操作数信息,并将指令按照类型和 操作数信息存储为预设的数据结构。

4、用功能仿真单元40完成该条指令的功能仿真,即根据指令功能,执行指 令,改变相应寄存器的值。

5、用仿真结果输出单元50输出仿真结果,一般为输出各个寄存器在执行完 该条指令后的值。

例如,若某处理器功能仿真模型执行如下的指令机器码:

0010010001000100

0011010001000000

0010001001100110

0011001010100000

1000000001000010

对应如下的指令:

MOVL R4,0x44

MOVH R4,0x40

MOVL R2,0x66

MOVH R2,0xa0

ADD R4,R2

首先,根据该处理器功能仿真模型的寄存器配置信息,由寄存器初始化单元 20完成各个寄存器的初始化。(如在该处理器功能仿真模型中,除了程序计数器 PC以外的寄存器都初始化为0。)

其次,将上述5条指令都存入处理器功能仿真模型的指令存储器中,即存入 功能仿真模型中的一块虚拟存储(若该功能仿真模型用C语言实现,即声明为 16bits的整型数组)。

然后,判断是否已经执行了5条指令,若已经执行过5条指令,则仿真结束。 若还没有执行完5条指令,则由输入处理单元30先处理输入的指令机器码,如 现在刚开始执行第一条指令,先处理该条指令的机器码,由此可知第一条指令 为MOVL R4,0x44;

再次,由功能仿真单元40根据指令MOVL R4,0x44的功能完成仿真,即将 0x44赋值给R4的低8位,除此之外不影响其他的寄存器。

最后,由仿真结果输出单元50输出该条指令的仿真结果。假设输出格式为 按16进制输出16个通用寄存器的值,则输出的仿真结果为:0x0000 0x0000 0x000 00x0000 0x0044 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000。

假设输出格式设置为每条指令执行完以后按16进制输出16个通用寄存器 的值,会得到如下结果:

0x0000 0x0000 0x0000 0x0000 0x0044 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000

0x0000 0x0000 0x0000 0x0000 0x4044 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000

0x0000 0x0000 0x0066 0x0000 0x4044 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000

0x0000 0x0000 0xa066 0x0000 0x4044 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000

0x0000 0x0000 0xa066 0x0000 0xe0aa 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000

以上内容是结合具体的实施方式对本申请所作的进一步详细说明,不能认 定本申请的具体实施只局限于这些说明。对于本申请所属技术领域的普通技术 人员来说,在不脱离本申请构思的前提下,还可以做出若干简单推演或替换, 都应当视为属于本申请的保护范围。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号