专利名称:具有紧凑指令集架构的微处理器的制作方法
技术领域:
本发明的实施例通常涉及微处理器。更具体地,本发明的实施例涉及微处理器的指令集架构。
背景技术:
存在对经济的、高性能的微处理器的扩大的需要,特别是对于诸如微控制器应用的深嵌入式应用。结果,微处理器的客户需要能够快速地和有效地集成到产品中的高效的解决方案。此外,设计人员和微处理器的客户持续要求更低的功耗,并且近来关注于环境友好的微处理器支持的装置。一种用于实现这些要求的方法是将现有的指令集(在这里也称为指令集架构 (ISA))修改为具有较小的“代码足印”(code footprint)的新指令集。较小的代码足印通常转换为每个执行的任务的较低的功耗。较小的指令大小(也称作“代码压缩”)还可以导致更高的性能。关于该提高的效率的一个原因在于用于取出较小的指令的需要较低数量的存储器访问。通过使新ISA基于从现有的具有较大位宽的ISA得到的较小位宽的指令和较大位宽的指令的组合,可以得到另外的益处。
发明内容
本发明的实施例涉及对将与微处理器一同使用的指令集架构重新编码,以及由此得到的新指令。根据一实施例,较大位宽的指令集被重新编码为较小位宽的指令集或者具有较小位宽的指令和较大位宽的指令的组合的指令集。在实施例中,较小位宽的指令集保持与从中得到该较小位宽的指令集的较大位宽的指令集的汇编级兼容性,并且添加具有不同类型的指令。此外,新的较小位宽的指令集或者组合的较小和较大位宽的指令集较之从其重新编码得到该较小位宽的指令集的较大位宽的指令集,可以是更高效的并且具有更高的性能。在一个实施例中,多个新的较小位宽指令被加入到新的指令集中,包括紧凑跳转寄存器(JRC);跳转寄存器,调整栈指针(16比特)(JRADDIUSP);加立即数无符号字5比特寄存器选择(16比特)(ADDIUSQ ;移动寄存器对(MOVEP);以及跳转和链接寄存器,短延迟时隙(16 比特)(JALRS16)。在另一个实施例中,多个新的指令被加入到新的指令集中,其具有与原始指令集
7相同的大小,包括紧凑的等于零情况下的分支(BEQZC);紧凑的不等于零情况下的分支 (BNEZC);跳转和链接交换(JALX);加载字对(LWP);加载多个字(LWM);存储字对(SWP)和存储多个字(SWM);加立即数无符号字(PC相关)(ADDIUPC);大于或等于0情况下的分支以及链接,短延迟时隙(BGEZALS);小于0情况下的分支以及链接,短延迟时隙(BLTZALS); 跳转和链接寄存器,短延迟时隙(JALRS);利用风险屏障的跳转和链接寄存器,短延迟时隙 (JALRS.HB);以及跳转和链接,短延迟时隙(JALS)。
参照附图描述本发明的实施例。在附图中,相同的附图标记可以表示相同的或者功能相似的元件。其中元件首次出现的附图通常由相应的附图标记中的最左侧的数位表示。图1是根据本发明的实施例的ISA的32位指令的格式的示意图。图2是根据本发明的实施例的ISA的16位指令的格式的示意图。图3A是图示根据本发明的实施例的紧凑的等于零情况下的分支(BEQZC)指令的格式的示意图。图;3B是图示根据本发明的实施例的微处理器中的BEQZC指令的操作的流程图。图3C是图示根据本发明的实施例的紧凑的不等于零情况下的分支(BNEZC)指令的格式的示意图。图3D是图示根据本发明的实施例的微处理器中的BNEZC指令的操作的流程图。图3E是示出根据本发明的实施例的跳转和链接交换(JALX)指令的格式的示意图。图3F是图示根据本发明的实施例的微处理器中的JALX指令的操作的流程图。图3G是示出JALX指令的第二实施例的格式的示意图。图;3H是图示根据第二实施例的JALX指令的第二实施例的操作的流程图。图31是示出根据本发明的实施例的紧凑的跳转寄存器(JRC)指令的格式的示意图。图3J是图示根据一实施例的微处理器中的JRC指令的操作的流程图。图3K是示出根据本发明的实施例的加载字对(LWP)指令的格式的示意图。图3L是图示根据实施例的LWP指令的操作的流程图。图3M是示出根据本发明的实施例的加载多个字(LWM)指令的格式的示意图。图3N是图示根据实施例的微处理器中的LWM指令的操作的流程图。图30是示出根据本发明的实施例的存储字对(SWP)指令的格式的示意图。图3P是图示根据一实施例的SWP指令的操作的流程图。图3Q是示出根据本发明的实施例的存储多个字(SWM)指令的格式的示意图。图3R是图示根据一实施例的SWM指令的操作的流程图。图4A为示出根据本发明实施例的跳转寄存器、调整栈指针(16位)(JRADDIUSP) 指令的格式的示意图。图4B为示出根据本发明实施例的微处理器中JRADDIUSP指令的操作的流程图。图4C为示出根据本发明实施例的加立即数无符号字5比特寄存器选择(16比特)(ADDIUS5)指令的格式的示意图。图4D为示出根据本发明实施例的微处理器中ADDIUS5指令的操作的流程图。图4E为示出根据本发明实施例的加立即数无符号字(PC相关)(ADDIUPC)指令的格式的示意图。图4F为示出根据一个实施例的微处理器中ADDIUPC指令的操作的流程图。图4G为示出根据本发明实施例的移动寄存器对(MOVEP)指令的格式的示意图。图4H为示出根据本发明实施例的MOVEP指令的操作的流程图。图5A为示出根据本发明实施例的“大于或等于0情况下的分支以及链接,短延迟时隙”(BGEZALS)指令的格式的示意图。图5B为示出根据本发明实施例的微处理器中BGEZALS指令的操作的流程图。图5C为示出根据本发明实施例的“小于0情况下的分支以及链接,短延迟时隙”(BLTZALS)指令的格式的示意图。图5D为示出根据本发明实施例的微处理器中BLTZALS指令的操作的流程图。图5E为示出根据本发明实施例的“跳转和链接寄存器,短延迟时隙”(16比特) (JALRS16)指令格式的示意图。图5F为示出根据一个实施例的微处理器中JALRS16指令操作的流程图。图5G为示出根据本发明实施例的“跳转和链接寄存器,短延迟时隙”(JALRS)指令的格式的示意图。图5H为示出根据第二实施例示出JALRS指令的操作的流程图。图51为示出根据本发明实施例的“利用风险屏障的跳转和链接寄存器,短延迟时隙”(JALRS.HB)格式的示意图。图5J为示出根据一个实施例的微处理器中JALRS. HB指令的操作的流程图。图涨为示出根据本发明实施例的“跳转和链接,短延迟时隙”(JALS)指令的格式的示意图。图5L为示出根据一个实施例的JALS指令的操作的流程图。图6为根据本发明实施例的微处理器核的示意图。
具体实施例方式尽管这里参照关于特定应用的说明性实施例描述了本发明,但是应当理解,本发明不限于此。本领域技术人员根据这里提供的教导将认识到本发明的范围中的另外的修改、应用和实施例以及其中本发明将具有显著效用的另外的领域。以下章节描述了根据本发明的实施例的指令集架构。I.概述II.重新编码的架构a.汇编级兼容性b.特殊事件ISA模式选择III.新类型的指令a.重新编码的分支和跳转指令b.基于统计分析的编码的字段
c.指令自变量的优化编码d.延迟时隙e.具有精简的目标寄存器的指令f.现存指令效果的组合IV.指令格式a.原理(principle)操作码组织b.主操作码V.新的ISA指令VI.示例性处理器核VII.软件实施例VIII.结论I.概览这里描述的实施例涉及包括要执行的指令的ISA,能够在其上执行ISA的指令的微处理器,以及重新编码现有ISA的方法。这里描述的一些实施例涉及通过重新编码现有 ISA而得到的新的ISA。这里描述的一些实施例涉及从将现有的较大位宽的ISA重新编码为组合的较小和较大位宽的ISA得到的ISA。在一个实施例中,现有的较大位宽的ISA是可获得自Sunnyvale, California的MIPS,INC.的MIPS32,新的重新编码的较小位宽的ISA 是也可获得自MIPS,INC.的MicroMIPS 16位指令集,并且新的重新编码的较大位宽的ISA 是也可获得自MIPS, INC.的MicroMIPS 32位指令集。在另一实施例中,较大位宽的架构可以被重新编码为具有相同位宽的改进的架构或者相同位宽的指令和较小位宽的指令的组合。在一个实施例中,重新编码的较大位宽的指令集按如下方式被编码为相同大小位宽的ISA 与具有这里讨论的类型的重新编码的较小位宽的指令集兼容和互补。重新编码的较大位宽的指令集的实施例可以被称为“增强的”,并且可以包含下文所讨论的允许新指令集以并行模式实现的各种特征,其中在处理器上均可以利用这两个指令集。这里描述的重新编码的指令集还以独立模式工作,其中每次仅有一个指令集是有效的。II.重新编码的架构a.汇编级兼容性这里描述的某些实施例在从较大位宽的ISA重新编码到较小位宽的ISA或者组合位宽的ISA之后保持汇编级兼容性。为了实现此,在一个实施例中,重新编码后的汇编语言指令集易记码(mnemonics)与其所得自的指令相同。维持汇编级兼容性允许通过使用较小位宽的ISA的汇编源代码对使用较大位宽的ISA的指令集汇编源代码进行编译。换言之, 以本发明的新ISA实施例为目标的汇编器也能够对从其得到本发明的实施例的传统ISA进行汇编。在一实施例中,汇编器确定使用哪种指令大小处理特定的指令。例如,为了区分不同位宽的ISA的指令,在一实施例中,利用对应于不同大小的后缀对操作码易记码进行扩展。例如,在一个实施例中,将后缀“16”或“32”置于指令的末端处在第一个“.”(如果存在一个的话)之前,以区别16位和32位的编码的指令。例如,在一个实施例中,“ADD16”指的是ADD指令的16位版本,而“ADD32”指的是ADD指令的32位版本。如本领域的技术人
10员将知晓的,可以使用其他后缀。其他实施例不使用指令大小的后缀指定。在这些实施例中,可以省略位宽后缀。在一实施例中,汇编器将查看命令的寄存器和立即数字段中的值,并且判定较大还是较小位宽的命令是适当的。取决于汇编器的设置,在处理特定指令时汇编器可以自动地选择最小的可用指令大小。b.特殊事件ISA模式选择在另一实施例中,在如下事件之一中发生ISA选择异常、中断和通电事件。在该实施例中,正在处置特殊事件的处置器指定ISA。例如,对于通电,通电处置器可以指定 ISA。同样地,在一个实施例中,中断或异常处置器可以指定ISA。在另一实施例中,针对每个事件类型,用户都可以通过控制位选择使用哪个ISA。III.新类型的指令下面描述具有新ISA指令的实施例,以及具有重新编码的指令的实施例。使用了若干个一般原理来开发这些指令,并且下面对这些进行了解释。a.重新编码的分支和跳转指令在一个实施例中,重新编码的较小位宽的ISA支持较小的分支目标地址,提供了增强的灵活性。例如,在一个实施例中,被重新编码为16位分支指令的32位分支指令支持 16位对齐的分支目标地址。在另一示例中,由于32位的重新编码的分支指令的偏移字段大小保持与传统的 32位的重新编码的指令相同,因此分支范围可以较小。在另外的实施例中,跳转指令J、JAL 和JALX通过支持32位对齐的目标地址来支持整个跳转范围。b.基于ISA使用情况的分析的编码的字段如这里使用的术语“立即数字段”在本领域中是公知的。在实施例中,立即数字段可以包括分支的地址偏移字段、加载/存储指令、和目标字段。在实施例中,指令编码中的立即数字段宽度和位置取决于指令。在一实施例中,指令的立即数字段被分为若干个字段, 其不需要是相邻的。在另一实施例中,指令格式可具有单个的、连续的立即数字段。在一实施例中,针对ISA指令和宏使用特定的寄存器和立即数值可以传达比其他值更高级别的可用性。这里描述的多个实施例使用该原理来增强指令的可用性。例如,为了实现该可用性,在一个实施例中,执行ISA的使用时段上的寄存器和立即数字段中使用的值的统计频率的分析。在另一实施例中,统计分析可以分析指令所使用的自变量,例如目标寄存器和立即数值。可以在ISA中操作的同时针对指令进行自变量使用情况的分析,从而确定各种不同的有用统计,例如,自变量值总的使用频率、针对特定指令或指令类别的自变量值的使用频率、针对特定类别的计算机程序或用户应用的自变量值的使用频率。在该统计分析及其应用的一个示例中,第一 ISA具有接受5比特的目标及5比特的立即数值的特定指令。此处描述的实施例,在准备该指令的重新编码的过程中,收集关于该特定指令使用情况的数据,特别是,对于目标寄存器和立即数值随时间变化地使用哪些值。在另一实施例中,可以总地针对第一 ISA中的所有指令收集使用情况数据。收集时间的示例可根据样本需求而变化。继续上述实施例的例子,就第一 ISA总地收集的以及特别地就特定指令收集的数
11据可用于重新编码该特定指令,或是用于相同的ISA或新的第二个ISA。如此处所描述的那样,对指令重新编码的一个原因是增加代码压缩。基于上面描述的收集的数据,特定指令的重新编码的版本可具有需要较少比特长度(bit-length)的自变量。在一实施例中,这种大小上的减小可通过选择自变量,例如如前面所述的目标寄存器和立即数值,的总的可能值的子集来实现。例如,在可被5比特的自变量引用的32个可能值当中,基于以上所描述类型的统计分析,可以选择前8名最频繁用的自变量值。在实施例中,这些前几名的值可被称为对于特定指令、ISA、计算机程序、计算机程序类型、应用、应用类型或其他相似的分组来说最“有用”的值。 前面所述的前8名的示例值可被“编码”到下面所示类型的表结构中,例如表9中。 以此方式,示例指令的重新编码的版本可能不能在利用5比特编码的32个可能值的全集上操作,但是在其格式上确实具有专用于该特定自变量的较小位数。如此处所描述的,为了辅助ISA重新编码,上述编码方法也可以允许减小寄存器和立即数字段的所需大小,这是因为可以省略对某种较不常用的值的编码。例如,编码后的寄存器和立即数值可被编码为比原始值短的位宽,例如,“1001”可被编码为“10”。当将较大位宽指令集重新编码为较小位宽ISA时,可以将较不频繁使用的值从新的列表中省略。在实施例中,此处描述的指令可以是新创建的、或从现有指令重新编码的,从而对这些组具有增加的有用性。进一步考虑这个示例,重新编码的指令中的自变量需要较小的空间,可以使得具有较长长度(例如,32比特)的指令能够被重新编码为该指令的较小版本(例如,16比特)。 在此处描述的实施例中,这种旧的、较大指令和较小的、重新编码的指令两者可以都在新的 ISA的实施例中。如本领域技术人员根据此处描述的说明所知晓的,可以就指令的不同组成部分收集不同的统计,从而允许对指令的不同的重新编码。此外,基于该分析,此处描述的其他实施例,不使用未修改的寄存器或立即数值,而是对值进行编码以将最有用的寄存器和立即数值链接到最常用的值,如上面的统计分析所确定的那样。c.指令自变量的优化编码在一个实施例中,关于将具有最高有用性的寄存器和立即数值链接到最常用的值的映射,某些链接可以传递比其它链接更高级别的有用性。此处描述的实施例使用该原理来采用编码的增强指令的有用性。例如,表IA描述了移动寄存器对(MOVEP)指令的立即数字段的编码和解码值,在下文中将对其进行说明并在图4G和4H中进行描述。应当注意到,在表IA中,rt (或,rs) 的编码值(十进制)和解码值(十进制)之间并非为1对1 (1-to-l)的值。在一个实施例中,以下所描述的将1的编码值映射到17的解码值的映射值是基于其上将执行指令的处理器的特征而选择的。本领域技术人员将理解,某些硬件可以使用较少计算能力将一个值链接到另一个值。表IA =MOVEP编码和解码值示例
权利要求
1.一种RISC处理器,用于执行属于指令集架构的指令,该指令集架构具有至少两种不同的大小,该处理器包括指令取出单元,被配置用于每个周期取出至少一条指令;指令解码单元,被配置用于确定每条所取出的指令的大小,并根据其所确定的大小将每条所取出的指令解码;以及执行单元,被配置用于执行所解码的指令,其中,所述指令集架构中的指令后向兼容与传统处理器一起使用的编译器。
2.如权利要求1的RISC处理器,其中基于对指令使用情况的统计分析确定指令集架构中特定指令的指令大小。
3.如权利要求2的RISC处理器,其中大小较小的指令被提供用于较常用的指令。
4.如权利要求1的RISC处理器,其中所述指令集架构包括仅具有3种大小的指令。
5.如权利要求3的RISC处理器,其中所述指令集架构包括 具有16比特的第一组指令;以及具有32比特的第二组指令。
6.一种通过对现有处理器指令集架构ISA进行编码以创建新的处理器ISA的方法,包括利用计算机收集数据,该数据与来自现有ISA的现有指令在一段使用时间上的执行值对应;利用给定的计算机分析所收集的数据;以及从现有指令和所述分析重新编码新的ISA的新的指令。
7.如权利要求6的方法,其中所述新的指令具有与现有指令相比较小的比特长度。
8.如权利要求6的方法,其中所述分析包括使用统计分析进行分析。
9.如权利要求6的方法,其中所述执行值包括目标寄存器,并且所述新的指令利用编码来引用精简的目标寄存器集。
10.如权利要求6的方法,其中所述执行值包括立即数值,并且所述新的指令利用编码值来接收精简的可能的立即数值集合。
11.如权利要求10的方法,其中至少一个编码后的值是基于在其上所述新的ISA被编码以被执行的计算机的特定特征的。
12.—种有形计算机可读存储介质,其包括以软件实现的处理器,该处理器包括 指令取出单元,被配置用于取出第一指令,该第一指令与第一指令集架构ISA相关联; 指令解码单元,被配置用于确定所述第一指令的大小,并根据其所确定的大小将所述第一指令解码;以及执行单元,被配置用于执行所解码的第一指令,其中所述第一指令的自变量的大小是基于第二指令的统计分析而确定的。
13.如权利要求12的有形计算机可读存储介质,其中所述第二指令与第二ISA相关联。
14.如权利要求12的有形计算机可读存储介质,其中所述统计分析包括对所述第二指令在一段时间上的使用情况进行分析,以及确定所使用的自变量值的频率。
15.如权利要求12的有形计算机可读存储介质,其中所述统计分析包括所述对第二指令和其他指令在一段时间上的使用情况进行分析,以及确定所述第二指令相比所述其他指令的使用频率。
16.如权利要求12的有形计算机可读存储介质,其中所述执行单元被配置用于执行所解码的第一指令,其中基于所述统计分析从所述第二指令重新编码得到所述第一指令。
17.如权利要求12的有形计算机可读存储介质,其中所述第一指令被配置用于接收编码后的自变量值。
18.如权利要求17的有形计算机可读存储介质,其中所述编码后的自变量值是基于处理器的特征确定的。
19.如权利要求17的有形计算机可读存储介质,其中所述编码后的自变量值为立即数值。
20.如权利要求17的有形计算机可读存储介质,其中所述编码后的自变量为目标寄存器值。
21.一种处理器,包括指令取出单元,被配置用于取出第一指令,该第一指令与第一指令集架构ISA相关联; 指令解码单元,被配置用于确定所述第一指令的大小,并根据其所确定的大小对所述第一指令解码;以及执行单元,被配置用于执行所解码的第一指令,其中所述第一指令是第二和第三指令的组合,并且其中所述第一指令接受编码后的自变量值,所述编码后的自变量值与来自所述第二指令和所述第三指令中的一个的未编码的自变量对应。
22.如权利要求21的处理器,其中所述第二指令和第三指令与第二ISA相关联。
23.如权利要求21的处理器,其中所述编码后的自变量值通过如下的处理过程产生, 该处理过程包括对所述未编码的自变量在一段时间上的使用情况进行分析;以及对所述第一指令所使用的多个自变量进行选择和编码。
24.如权利要求23的处理器,其中所选择的所述多个自变量对应于通过所述分析而确定作为所述第二指令最频繁使用的那些自变量的自变量。
25.一种用于在处理器上执行紧凑的等于零情况下的分支指令的方法,该方法包括 在所述处理器处接收与指令对应的比特序列;使用解码器对所述指令的操作码部分进行解码,所述操作码指示所述指令为紧凑的等于零情况下的分支指令;利用所述解码器对来自所述指令的rs值和偏移值进行解码; 将所述偏移值移位预定的位数; 扩展所述偏移值的符号;通过将所述偏移值加到所述指令的存储器地址来形成目标地址; 确定GPR地址的内容是否等于0,所述GPR地址与所述rs值相应;以及如果所检查的GPR内容等于0,则分支至所述目标地址。
26.如权利要求25所述的方法,其中所述指令的比特长度为32比特;所述指令的所述操作码部分包括主操作码和次操作码;所述指令的所述主操作码部分的比特长度为6比特; 所述指令的所述次操作码部分的比特长度为5比特; 所述偏移部分的比特长度为16比特;以及所述指令的所述rs部分的比特长度为5比特。
27.一种用于在处理器上执行加载多个字指令的方法,该方法包括 在所述处理器处接收与指令对应的比特序列;使用解码器对所述指令的操作码部分进行解码,该操作码指示所述指令是加载多个字指令;使用所述解码器对所述指令的寄存器列表、偏移值和基址操作数部分进行解码; 扩展所述偏移值的符号;通过符号扩展了的偏移值和GI^R地址的内容的无符号加,形成有效地址,所述GI^R地址对应于所述基址操作数值;针对寄存器列表中所列的每个寄存器执行以下步骤在有效地址处从存储器取出存储器字;扩展所取出的存储器字的符号至Gra寄存器的长度;在GI^R地址中存储所取出的存储器字,该GI^R地址对应于所述寄存器列表中存储的值;以及使所述有效地址增加到下一个存储器字。
28.如权利要求27的方法,其中所述指令的比特长度为32比特;所述指令的所述操作码部分包括主操作码和次操作码; 所述指令的所述主操作码部分的比特长度为6比特; 所述执行令的所述次操作码部分的比特长度为4比特; 所述指令的所述寄存器列表部分的比特长度为5比特; 所述基址操作数部分的比特长度为5比特;以及所述指令的所述偏移部分的比特长度为12比特。
29.一种用于在处理器上执行跳转寄存器调整栈指针指令的方法,该方法包括 在所述处理器处接收与指令对应的比特序列;利用解码器对所述指令的操作码部分进行解码,所述操作码指示该指令为跳转寄存器调整栈指针指令;利用所述解码器对所述指令的增量值部分进行解码; 取出存储在第一通用寄存器和第二通用寄存器中的值; 将所述增量值左移位预定的位数;将左移位后的立即数值加到存储在第二寄存器的值,并将结果放置于所述第一寄存器中;将有效目标地址设置为第一寄存器中所存储的值; 清除所述有效目标地址中的0位;将指令集架构模式位设置为所述第二寄存器的位0中所存储的值;以及跳转至所述有效目标地址。
30.如权利要求四的方法,其中 所述指令的比特长度为16比特;所述指令的所述操作码部分包括主操作码和次操作码; 所述指令的所述主操作码部分的比特长度为6比特; 所述指令的所述次操作码部分的比特长度为5比特;以及所述指令的立即数增量部分的比特长度为5比特。
31.一种用于在处理器上执行加立即数无符号字寄存器选择指令的方法,该方法包括在所述处理器处接收与指令对应的比特序列;使用解码器对该指令的操作码部分进行解码,该操作码指示该指令是加立即数无符号字寄存器选择指令;利用所述解码器对所述指令的与指令立即数值和寄存器索引值对应的部分进行解码;扩展所述指令立即数值的符号;将GI^R地址中所存储的值加到符号扩展了的指令立即数值,所述GI^R地址对应于所述寄存器索引值;将加的结果置于所述GI^R地址中,其中,所述指令比特长度为16比特;所述指令的操作码部分包括主操作码和次操作码;所述指令的主操作码部分的比特长度为6比特;所述指令的次操作码部分的比特长度为1比特;所述指令的寄存器索引部分的比特长度为5比特;以及所述指令的指令立即数部分的比特长度为4比特。
32.一种用于在处理器上执行移动寄存器对指令的方法,该方法包括 在所述处理器处接收与指令对应的比特序列;利用解码器对所述指令的操作码部分进行解码,该操作码指示该指令是移动寄存器对指令;利用所述解码器对所述指令的与第一编码的寄存器地址值、第二编码的寄存器地址值和编码的目的地地址值对应的部分进行解码;将所述第一编码的寄存器地址值转换为第一解码的寄存器地址值; 将所述第二编码的寄存器地址值转换为第二解码的寄存器地址值; 从所述编码的目的地地址值确定第三解码的寄存器地址值和第四解码的寄存器地址值;将第一寄存器的内容拷贝至第三寄存器,第一寄存器地址对应于所述第一解码的寄存器地址值,并且第三寄存器地址对应于所述第三解码的寄存器地址值;以及将第二寄存器的内容拷贝至第四寄存器,第二寄存器地址对应于所述第三解码的寄存器地址值,并且第四寄存器地址对应于所述第四解码的寄存器地址值。
33.如权利要求32的方法,其中 所述指令的比特长度为16比特;所述指令的所述操作码部分包括主操作码和次操作码;所述指令的所述主操作码部分的比特长度为6比特;所述指令的所述次操作码部分的比特长度为1比特;所述指令的以下部分的比特长度为3比特所述第一编码的寄存器值,所述第二编码的寄存器值,以及所述编码的目的地值;以及以下部分的比特长度为5比特所述第一解码的寄存器值,所述第二解码的寄存器值,所述第三解码的寄存器值,以及所述第四解码的寄存器值。
34.一种用于在处理器上执行利用延迟时隙的跳转和链接指令的方法,该方法包括 在所述处理器处接收与指令对应的比特序列;利用解码器对所述指令的操作码部分进行解码,所述操作码指示该指令是利用延迟时隙的跳转和链接指令;利用所述解码器对所述指令的与指令索引对应的部分进行解码; 将所述指令索引左移位预定的移位量;通过将来自延迟时隙地址的特定数量的比特与左移位的指令索引连接而形成有效目标地址;通过将一值加到所述指令的地址来形成返回地址,其中,在其中执行所述指令的ISA 具有可变的比特长度,并且所加的值取决于所述延迟时隙指令的大小; 将所述返回地址置于GPR中;在所述处理器处接收与延迟时隙地址对应的比特序列; 利用解码器对位于所述延迟时隙地址处的指令进行解码; 执行所述延迟时隙指令;以及跳转至所形成的有效目标地址。
35.如权利要求34的方法,其中 所述指令的比特长度为32比特;所述指令的操作码部分的比特长度为6比特; 所述指令索引的比特长度为26比特;以及所加的值为2或者4。
全文摘要
一种重新编码指令集架构(ISA),其提供了较小位宽指令或较小或较大位宽指令的组合,以提高指令执行效率并减少代码足印。该ISA可重新编码自一个具有较大位宽指令的传统ISA,并且该重新编码的ISA能够维持与其来自的ISA在汇编级别的兼容性。此外,该重新编码的ISA可具有新的和不同的附加指令类型,包括具有由统计分析确定的编码自变量的指令以及具有指令组合效果的指令。
文档编号G06F9/30GK102200905SQ201110128200
公开日2011年9月28日 申请日期2011年3月25日 优先权日2010年3月26日
发明者D·Y-M·拉尤, E·K·诺登, J·H·罗宾森 申请人:Mips技术公司