首页> 中国专利> 超长指令字指令集的指令处理方法及装置

超长指令字指令集的指令处理方法及装置

摘要

本发明实施例公开了一种超长指令字指令集的指令处理方法,包括:确定非连续地址取指操作的目的指令行;根据第一预设规则确定所述目的指令行的指令存储在存储器的不同行;根据第二预设规则向所述目的指令行之前的指令行插入至少一个空操作指令,使所述目的指令行的指令存储在所述存储器的同一行。本发明实施例同时还公开了一种超长指令字指令集的指令处理装置。

著录项

  • 公开/公告号CN106445466A

    专利类型发明专利

  • 公开/公告日2017-02-22

    原文格式PDF

  • 申请/专利权人 深圳市中兴微电子技术有限公司;

    申请/专利号CN201510496662.7

  • 发明设计人 龙衡;任晖;田春雨;袁华隆;

    申请日2015-08-13

  • 分类号G06F9/30;

  • 代理机构北京派特恩知识产权代理有限公司;

  • 代理人张振伟

  • 地址 518085 广东省深圳市盐田区大梅沙1号厂房

  • 入库时间 2023-06-19 01:36:59

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2019-07-09

    授权

    授权

  • 2017-03-22

    实质审查的生效 IPC(主分类):G06F9/30 申请日:20150813

    实质审查的生效

  • 2017-02-22

    公开

    公开

说明书

技术领域

本发明涉及超长指令字(Very Long Instruction Word,VLIW)指令集领域,尤其涉及一种超长指令字指令集的指令处理方法及装置。

背景技术

VLIW指令集处理器有多流水线、每个时钟周期发射指令条数可变的特点。VLIW指令集处理器在进行指令预取时,每次从存储器的存储空间中取一个整行的指令放到指令缓存区;当出现非连续地址取指操作(循环跳转操作)时,VLIW指令集处理器先清空指令缓存区,再重新到存储器中取指令放到指令缓存区。

因每个时钟周期发射指令条数可变的原因,同一时钟周期的指令可能会被分别保存到存储器中的相邻的两行存储空间中;如果指令缓存区的各个指令能拼成一个时钟周期要发射的完整的指令,这些指令会被发射到相应流水线上执行;如果在指令缓存区中的各个指令不能拼成一个时钟周期要发射的完整的指令,则需要等待从存储器中再取得下一行指令并保存到指令缓存区,这样,就会产生一个没有指令发射的时间周期,也就是空发射,空发射会降低VLIW指令集处理器的执行效率。

发明内容

有鉴于此,本发明实施例期望提供一种超长指令字指令集的指令处理方法及装置,以避免空发射的出现,提高VLIW指令集处理器的执行效率。

为达到上述目的,本发明的技术方案是这样实现的:

本发明提供一种超长指令字指令集的指令处理方法,所述方法包括:

确定非连续地址取指操作的目的指令行;

根据第一预设规则确定所述目的指令行的指令存储在存储器的不同行;

根据第二预设规则向所述目的指令行之前的指令行插入至少一个空操作指令,使所述目的指令行的指令存储在所述存储器的同一行。

上述方法中,所述根据第一预设规则确定所述目的指令行的指令存储在存储器的不同行,包括:

通过h与所述An进行比对,如果所述h小于所述An,则确定所述An个指令存储在所述存储器的不同行;

其中,所述h为第一参数、h=i-((addrn-1+An-1)&(i-1)),所述i为所述存储器每行固定存储的指令数量,所述目的指令行为n行,所述n行为大于等于2的正整数,所述An为所述n对行应的指令数量,所述n行的前一指令行为n-1行,所述An-1为所述n-1行对应的指令数量,所述addrn-1为所述n-1行的起始指令在所述存储器中的起始地址,所述&为与运算。

上述方法中,所述方法还包括:

如果所述h大于等于所述An,则确定所述An个指令存储在所述存储器同一行。

上述方法中,所述根据第二预设规则向所述目的指令行之前的指令行插入至少一个空操作指令,包括:

通过k与j进行对比,如果所述k大于所述j,则向所述n-1行插入所述h个空操作指令;

其中,所述k为第二参数、k=h+An-1,所述指令行的最大指令数量为j个。

上述方法中,所述方法还包括:

如果所述k小于等于所述j,则向所述n-1行插入l个空操作指令,剩余的y个空操作指令插入所述n-1行之前的指令行中;

其中,所述k为第二参数、k=h+An-1,所述l=j-An-1,所述y=h-l。

本发明还一种超长指令字指令集的指令处理装置,所述装置包括:

确定模块,用于确定非连续地址取指操作的目的指令行;

第一处理模块,用于根据第一预设规则确定所述目的指令行的指令存储在存储器的不同行;

第二处理模块,用于根据第二预设规则向所述目的指令行之前的指令行插入至少一个空操作指令,使所述目的指令行的指令存储在所述存储器的同一行。

上述装置中,所述第一处理模块,具体用于通过h与所述An进行比对,如果所述h小于所述An,则确定所述An个指令存储在所述存储器的不同行;

其中,所述h为第一参数、h=i-((addrn-1+An-1)&(i-1)),所述i为所述存储器每行固定存储的指令数量,所述目的指令行为n行,所述n行为大于等于2的正整数,所述An为所述n对行应的指令数量,所述n行的前一指令行为n-1行,所述An-1为所述n-1行对应的指令数量,所述addrn-1为所述n-1行的起始指令在所述存储器中的起始地址,所述&为与运算。

上述装置中,所述第一处理模块,还具体用于如果所述h大于等于所述An,则确定所述An个指令存储在所述存储器同一行。

上述装置中,所述第二处理模块,具体用于通过k与j进行对比,如果所述k大于所述j,则向所述n-1行插入所述h个空操作指令;

其中,所述k为第二参数、k=h+An-1,所述指令行的最大指令数量为j个。

上述装置中,所述第二处理模块,还具体用于如果所述k小于等于所述j,则向所述n-1行插入l个空操作指令,剩余的y个空操作指令插入所述n-1行之前的指令行中;

其中,所述k为第二参数、k=h+An-1,所述l=j-An-1,所述y=h-l。

本发明实施例提供的超长指令字指令集的指令处理方法及装置,VLIW指令集的指令处理装置在汇编代码中找到并确定非连续地址取指操作的目的指令行以及该行中存在指令的数量,进一步的,还可以找到并确定非连续地址取指操作的目的指令行之前的指令行以及相应行中存在指令的数量、起始指令在存储器中的起始地址;接着,VLIW指令集的指令处理装置根据第一预设规则来判断确定非连续地址取指操作的目的指令行的所有指令是否存储在存储器的同一行,如果存储在所述存储器同一行,则结束处理流程;如果存储在所述存储器的不同行,则VLIW指令集的指令处理装置根据第二预设规则,向所述目的指令行之前的指令行插入至少一个空操作指令,使所述目的指令行的指令存储在所述存储器的同一行;如此,使得VLIW指令集处理器需要得到非连续地址取指操作的目的指令行的全部指令只需一个时钟周期就能取到,从而能够拼凑成完整的指令,避免了空发射时钟周期的出现,提高了VLIW指令集处理器的执行效率,也避免了功耗的无谓损失。

附图说明

图1为本发明超长指令字指令集的指令处理方法实施例一的流程图;

图2为本发明超长指令字指令集的指令处理方法实施例二的流程图;

图3为本发明超长指令字指令集的指令处理方法实施例二的插入空操作指令前的汇编代码指令在存储空间的示意图;

图4为本发明超长指令字指令集的指令处理方法实施例二的插入空操作指令后的汇编代码指令在存储空间的示意图;

图5为本发明超长指令字指令集的指令处理装置实施例的结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。

图1为本发明超长指令字指令集的指令处理方法实施例一的流程图,如图1所示,本方法可以包括:

步骤101、确定非连续地址取指操作的目的指令行。

在编译阶段,VLIW指令集的指令处理装置利用编译器扫描汇编代码,找到并确定非连续地址取指操作的目的指令行以及该行中存在指令的数量,可以将非连续地址取指操作的目的指令行定义为n行,n行中指令的数量定义为An个,其中,所述n为大于等于2的正整数。

如上所示的汇编代码,这里给出的汇编代码表示一个循环跳转,当汇编代码运行到第4行“goto LABEL”,指令会跳转回第1行与第2行中间的“LABEL”,重新执行第2行指令,这样就是一个非连续地址取指操作,第2行为非连续地址取指操作的目的指令行;其中,Inst表示指令,每个指令在存储器中需要一个单元来保存。

进一步的,VLIW指令集的指令处理装置还可以找到并确定非连续地址取指操作的目的指令行之前的指令行以及相应行中存在指令的数量、起始指令在存储器中的起始地址,可以将非连续地址取指操作的目的指令行的前一行指令行定义为n-1行、n-1行中指令的数量定义为An-1、n-1行的起始指令在存储器中的起始地址定义为addrn-1;将非连续地址取指操作的目的指令行的前两行指令行定义为n-2行、n-2行中指令的数量定义为An-2,以此类推。

步骤102、根据第一预设规则确定所述目的指令行的指令存储在存储器的不同行。

这里,可由VLIW指令集的指令处理装置根据第一预设规则来判断确定非连续地址取指操作的目的指令行的所有指令是否存储在存储器的同一行,其中,第一预设规则可以是第一参数与非连续地址取指操作的目的指令行的指令数量进行判断对比的规则。

具体的,根据第一预设规则处理操作如下:

通过h与所述An进行比对,如果所述h小于所述An,则确定所述An个指令存储在所述存储器的不同行,继续执行步骤103;如果所述h大于等于所述An,则确定所述An个指令存储在所述存储器同一行,结束处理流程;其中,所述h为第一参数、h=i-((addrn-1+An-1)&(i-1)),所述i为所述存储器每行固定存储的指令数量,所述&为与运算。

步骤103、根据第二预设规则向所述目的指令行之前的指令行插入至少一个空操作指令。

本步骤中,在确定所述An个指令存储在所述存储器的不同行后,VLIW指令集的指令处理装置根据第二预设规则,向所述目的指令行之前的指令行插入至少一个空操作指令;即根据第二预设规则可以确定向所述目的指令行之前的哪些指令行插入多少个空操作指令,其中,第二预设规则可以是第二参数与汇编代码中一个指令行的最大指令数量进行判断对比的规则。

具体的,根据第二预设规则处理操作如下:

通过k与所述j进行对比,如果所述k大于所述j,则向所述n-1行插入所述h个空操作指令;如果所述k小于等于所述j,则向所述n-1行插入l个空操作指令,剩余的y个空操作指令插入所述n-1行之前的指令行中,这里需要说明的是,在插入空操作指令后的指令行中的指令个数要小于等于指令行的最大指令数j,如果剩余的y个空操作指令在插入n-2行后还有剩余z个,那么就将剩余的z个插入n-3行中,以此类推,直至空操作指令全部被插入到目的指令行n之前的指令行中为止;其中,所述k为第二参数、k=h+An-1,所述h=i-((addrn-1+An-1)&(i-1)),所述l=j-An-1,所述j为一个指令行的最大指令数量,所述y=h-l。

步骤104、使所述目的指令行的指令存储在所述存储器的同一行。

这里,VLIW指令集的指令处理装置在完成上述对各指令行的判断和插入空操作指令后,就能够确保非连续地址取指操作的目的指令行的所有指令保存在存储器中的同一行,VLIW指令集处理器要得到非连续地址取指操作的目的指令行的全部指令只需一个时钟周期就能取到,能够拼凑成完整的指令,避免了空发射的时钟周期的出现,提高了VLIW指令集处理器的执行效率,也避免了功耗的无谓损失。

为了更加体现出本发明的目的,在上述实施例的基础上,进一步的举例说明。

图2为本发明超长指令字指令集的指令处理方法实施例二的流程图,图3为本发明超长指令字指令集的指令处理方法实施例二的插入空操作指令前的汇编代码指令在存储空间的示意图,图4为本发明超长指令字指令集的指令处理方法实施例二的插入空操作指令后的汇编代码指令在存储空间的示意图,如图2所示,本方法包括:

步骤201、确定非连续地址取指操作的目的指令行。

如下面的汇编代码所示:

这里给出的汇编代码表示一个循环跳转,当汇编代码运行到第4行“gotoLABEL”,指令会跳转回第1行与第2行中间的“LABEL”,重新执行第2行指令,这样就是一个非连续地址取指操作,第2行为非连续地址取指操作的目的指令行;VLIW指令集的指令处理装置会先清空指令缓存区,然后再重新从存储器中取第2行指令“Inst2_0”和“Inst2_1”。

如图3所示,因为第2行的指令“Inst2_0”和“Inst2_1”分别被保存在存储器的不同行,“Inst2_0”被保存在0x00行,“Inst2_1”被保存在0x04行,所以在一个时钟周期内只能取到0x00行中的“Inst2_0”,而0x04行中的“Inst2_1”只能等到下一个时钟周期才能取到;因而在第一个时钟周期内没有能够拼凑成完整的指令,就会出现空发射的时钟周期。

在编译阶段,VLIW指令集的指令处理装置利用编译器扫描汇编代码,检查到第4行的“goto LABEL”指令,根据“goto LABEL”指令找到并确定第2行为非连续地址取指操作的目的指令行以及该行中存在指令的数量为2个。

另外,还可以确定第2行之前的第1行中的指令的数量为3个、第1行的起始指令在存储器中的起始地址为0x00行第0位,存储器中每行固定存储的指令数量为4个,汇编代码中一个指令行的最大指令数量为4个。

步骤202、通过第一参数与第2行中存在指令的数量进行比对,判断第2行的所有指令是否存储在存储器的不同行。

如果第一参数大于等于2,则执行步骤203;如果第一参数小于2,则执行步骤204。

具体的,第一参数通过上述获取到的数据进行计算,得到第一参数的值为4-((0+3)&(4-1))=1。

1与2进行对比,1小于2,所以执行步骤204。

步骤203、确定第2行的2个指令存储在存储器的同一行,结束处理流程。

步骤204、确定第2行的2个指令存储在存储器的不同行。

步骤205、通过第二参数与汇编代码中一个指令行的最大指令数量进行比对,确定向第2行插入至少一个空操作指令。

具体的,通过上述获取到的数据对第二参数及插入的空操作指令的数量进行计算,得到第二参数的值为1+4=5、插入的空操作指令的数量为4-((0+3)&(4-1))=1;

5大于4,所以向第2行插入1个空操作指令“NOP”。

插入1个空操作指令“NOP”后的汇编代码如下所示:

步骤206、使第2行的指令存储在所述存储器的同一行。

如图4所示,在插入1个空操作指令“NOP”后的指令的存储空间,这样就可以使第2行的指令“Inst2_0”和“Inst2_1”保存到存储器的同一行0x04行中,VLIW指令集处理器要得到第2行的全部指令只需一个时钟周期就能取到,能够拼凑成完整的指令,避免了空发射的时钟周期的出现,提高了VLIW指令集处理器的执行效率,也避免了功耗的无谓损失。

图5为本发明超长指令字指令集的指令处理装置实施例的结构示意图,如图5所示,超长指令字指令集的指令处理装置05可以包括:确定模块51、第一处理模块52、第二处理模块53;其中,

所述确定模块51,用于确定非连续地址取指操作的目的指令行;

所述第一处理模块52,用于根据第一预设规则,确定所述目的指令行的指令存储在存储器的不同行;

所述第二处理模块53,用于根据第二预设规则,向所述目的指令行之前的指令行插入至少一个空操作指令,使所述目的指令行的指令存储在所述存储器的同一行。

进一步的,所述第一处理模块52,具体用于通过h与所述An进行比对,如果所述h小于所述An,则确定所述An个指令存储在所述存储器的不同行;

其中,所述h为第一参数、h=i-((addrn-1+An-1)&(i-1)),所述i为所述存储器每行固定存储的指令数量,所述目的指令行为n行,所述n行为大于等于2的正整数,所述An为所述n对行应的指令数量,所述n行的前一指令行为n-1行,所述An-1为所述n-1行对应的指令数量,所述addrn-1为所述n-1行的起始指令在所述存储器中的起始地址,所述&为与运算。

进一步的,所述第一处理模块52,还具体用于如果所述h大于等于所述An,则确定所述An个指令存储在所述存储器同一行。

进一步的,所述第二处理模块53,具体用于通过k与j进行对比,如果所述k大于所述j,则向所述n-1行插入所述h个空操作指令;

其中,所述k为第二参数、k=h+An-1,所述指令行的最大指令数量为j个。

进一步的,所述第二处理模块53,还具体用于如果所述k小于等于所述j,则向所述n-1行插入l个空操作指令,剩余的y个空操作指令插入所述n-1行之前的指令行中;

其中,所述k为第二参数、k=h+An-1,所述l=j-An-1,所述y=h-l。

本实施例的装置,可以用于执行上述所示方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。

在实际应用中,所述确定模块51、第一处理模块52、第二处理模块53可由位于终端上的中央处理器(CPU)、微处理器(MPU)、数字信号处理器(DSP)或现场可编程门阵列(FPGA)等器件实现。

本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用硬件实施例、软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。

本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。

去获取专利,查看全文>

相似文献

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

客服邮箱:kefu@zhangqiaokeyan.com

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

  • 服务号