具有紧凑指令集架构的微处理器的制作方法

文档序号:6594034阅读:224来源:国知局
专利名称:具有紧凑指令集架构的微处理器的制作方法
技术领域
本发明的实施例通常涉及微处理器。更具体地,本发明的实施例涉及微处理器的 指令集架构。
背景技术
存在对经济的、高性能的微处理器的扩大的需要,特别是对于诸如微控制器应用 的深嵌入式应用。结果,微处理器的客户需要能够快速地和有效地集成到产品中的高效的 解决方案。此外,设计人员和微处理器的客户持续要求更低的功耗,并且近来关注于环境友 好的微处理器支持的装置。一种用于实现这些要求的方法是将现有的指令集(在这里也称为指令集架构 (ISA))修改为具有较小的“代码足印”(code footprint)的新指令集。较小的代码足印通 常转换为每个执行的任务的较低的功耗。较小的指令大小还可以导致更高的性能。关于该 提高的效率的一个原因在于用于取出较小的指令的需要较低数量的存储器访问。通过使新 ISA基于从具有较大位宽的ISA得到的较小位宽的指令和较大位宽的指令的组合,可以得 到另外的益处。

发明内容
本发明的实施例涉及对将与微处理器一同使用的指令集架构重新编码,以及由此 得到的新指令。根据一实施例,较大位宽的指令集被重新编码为较小位宽的指令集或者具 有较小位宽的指令和较大位宽的指令的组合的指令集。在实施例中,较小位宽的指令集保 持与从中得到该较小位宽的指令集的较大位宽的指令集的汇编级兼容性,并且添加具有不 同类型的指令。此外,新的较小位宽的指令集或者组合的较小和较大位宽的指令集较之从 其重新编码得到该较小位宽的指令集的较大位宽的指令集,可以是更高效的并且具有更高 的性能。在一实施例中,若干个新的较小位宽的指令被添加到该新指令集,包括紧凑的等 于零情况下的分支(Compact Branch on Equal to Zero,BEQZC)、紧凑的不等于零情况下的 分支(Compact Branch on not Equal to Zero, BNEZC)、6 兆转禾口链接交换(Jump and Link Exchange,JALX)、紧凑的跳转寄存器(Compact Jump Register,JRC)、加载寄存器对(Load Register Pair, LRP)、加载多个字(Load Word Multiple, LWM)、存储寄存器对(Store Register Pair, SRP)和存储多个字(Store Word Multiple, SWM)。


参照附图描述本发明的实施例。在附图中,相同的附图标记可以表示相同的或者 功能相似的元件。其中元件首次出现的附图通常由相应的附图标记中的最左侧的数位表示。图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是示出根据本发明的实施例的加载寄存器对(LRP)指令的格式的示意图。图3L是图示根据实施例的LRP指令的操作的流程图。在步骤430中,获得了寄存 器(rt)、寄存器(base)和偏移(offset)。图3M是示出根据本发明的实施例的加载多个字(LWM)指令的格式的示意图。图3N是图示根据实施例的微处理器中的LWM指令的操作的流程图。图30是示出根据本发明的实施例的存储寄存器对(SRP)指令的格式的示意图。图3P是图示根据一实施例的SRP指令的操作的流程图。图3Q是示出根据本发明的实施例的存储多个字(SWM)指令的格式的示意图。图3R是图示根据一实施例的SWM指令的操作的流程图。图4是根据本发明的实施例的处理器核的示意图。
具体实施例方式尽管这里参照关于特定应用的说明性实施例描述了本发明,但是应当理解,本发 明不限于此。本领域技术人员根据这里提供的教导将认识到本发明的范围中的另外的修 改、应用和实施例以及其中本发明将具有显著效用的另外的领域。以下章节描述了根据本 发明的实施例的指令集架构。I.概述II.重新编码的架构a.汇编级兼容性
b.特殊事件ISA模式选择III.新类型的指令a.重新编码的分支和跳转指令b.基于统计分析的编码的字段c.延迟时隙(Delay Slots)IV.指令格式a.原理(principle)操作码组织b.主操作码V.重新编码的指令a.从32位指令重新编码的新的16位指令b.从传统(legacy) 32位指令重新编码的新的32位指令c. 16位用户定义指令(UDI)d. ASE 的统一e.新的ISA指令VI.示例性处理器核VII.结论I.概述这里描述的实施例涉及包括将在微处理器上执行的指令的ISA和能够在其上执 行ISA的指令的微处理器。这里描述的一些实施例涉及从将较大位宽的ISA重新编码为 组合的较小和较大位宽的ISA得到的ISA。在一个实施例中,较大位宽的ISA是可获得自 Mountain View, 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处理特定的指令。例如,为了区分不同位宽的ISA的指令,在一实施例中,利用对应于不同大小的后缀对操作码易记码进行扩展。例 如,在一个实施例中,将后缀“16”或“32”置于指令的末端处在第一个“.”(如果存在一个 的话)之前,以区别16位和32位的编码的指令。例如,在一个实施例中,“ADD16”指的是 ADD指令的16位版本,而“ADD32”指的是ADD指令的32位版本。如本领域的技术人员将知 晓的,可以使用其他后缀。其他实施例不使用指令大小的后缀指定。在这些实施例中,可以省略位宽后缀。在 一实施例中,汇编器将查看命令的寄存器和立即数字段中的值,并且判定较大还是较小位 宽的命令是适当的。取决于汇编器的设置,在处理特定指令时汇编器可以自动地选择最小 的可用指令大小。b.特殊事件ISA模式选择在另一实施例中,在如下环境之一中发生ISA选择异常、中断和通电事件。在 该实施例中,正在处置特殊事件的处置器指定ISA。例如,对于通电,通电处置器可以指定 ISA。同样地,中断或异常处置器可以指定ISA。III.新类型的指令下面描述具有新ISA指令的实施例,以及具有重新编码的指令的实施例。使用了 若干个一般原理来开发这些指令,并且下面对这些进行了解释。a.重新编码的分支和跳转指令在一个实施例中,重新编码的较小位宽的ISA支持较小的分支目标地址,提供了 增强的灵活性。例如,在一个实施例中,被重新编码为16位分支指令的32位分支指令支持 16位对齐的分支目标地址。在另一示例中,由于32位的重新编码的分支指令的偏移字段大小保持与传统的 32位的重新编码的指令相同,因此分支范围可以较小。在另外的实施例中,跳转指令J、JAL 和JALX通过支持32位对齐的目标地址来支持整个跳转范围。b.基于统计分析的编码的字段如这里使用的术语“立即数字段”在本领域中是公知的。在实施例中,立即数字段 可以包括分支的地址偏移字段、加载/存储指令、和目标字段。在实施例中,指令编码中的 立即数字段宽度和位置取决于指令。在一实施例中,指令的立即数字段被分为若干个字段, 其不需要是相邻的。在一实施例中,针对ISA指令和宏使用特定的寄存器和立即数值可以传达比其他 值更高级别的性能。这里描述的多个实施例使用该原理来增强指令的性能。例如,为了实 现该性能,在一个实施例中,执行ISA的使用时段上的寄存器和立即数字段中使用的值的 统计频率的分析。基于该分析,实施例对值进行编码以将最高性能的寄存器和立即数值链 接到如通过上文的统计分析确定的最常使用的值,而不是使用未修改的寄存器或者立即数 值。为了协助如这里描述的ISA的重新编码,由于可以从编码中省略某些较不常见的 值,因此上文的编码方法还可以允许减少寄存器和立即数字段的所需要的大小。例如,编 码的寄存器和立即数值可以被编码为比原始值短的位宽,例如“ 1001 ”可以被编码为“ 10”。 在将较大位宽的指令集重新编码为较小位宽的ISA时,可以从新表中省略较不频繁使用的值。
c.延迟时隙在流水线架构中,延迟时隙由在不影响前一指令的情况下执行的指令填充,例如 位置紧接分支指令之后的单个指令。即使前一分支被采用,延迟时隙指令仍将执行。延迟 时隙可以提高效率,但是并非对所有应用都是高效的。例如,对于某些应用(例如,高性能 应用),不使用延迟时隙对使得到的代码较小的影响很小(如果存在的话)。有时,尝试填 充延迟时隙的编译器不能找到有用的指令。在这些情况中,无操作(NOP)指令被置于延迟 时隙中,其可以添加到程序的足印并且降低性能效率。这里描述的实施例为开发人员提供了何时使用延迟时隙的选择。通过该选择,开 发人员可以选择如何最佳地使用延迟时隙以便使所期望的结果最大化,例如代码大小、性 能效率和开发的容易度。在一实施例中,这里描述的某些指令具有两种版本,示例性指令是 分支的跳转指令。这些指令具有带延迟时隙的一个版本和不带延迟时隙的一个版本。在一 实施例中,在对指令编码时,由软件来选择使用哪个版本。在另一实施例中,由开发人员来 选择使用哪个版本(如关于上文描述的ADD16或ADD32的选择)。在又一实施例中,由汇编 器自动地选择使用哪个版本(如上文所述)。这些实施例中的该特征也可以有助于维持与 传统硬件处理器的兼容性。在另一实施例中,延迟时隙的大小是固定的。这里的实施例牵涉具有两种指令大 小(例如,16位和32位)的指令集。固定宽度的延迟时隙允许设计人员定义延迟时隙指 令,使得该大小将总是为某一大小,例如较大位宽的时隙或者较短位宽的时隙。该延迟时隙 选择允许设计人员广泛地追求不同的开发目标。为了使代码足印最小,可以选择均勻地较 小位宽的延迟时隙。然而,这可能导致较高的不能填充较小的时隙的可能性。相反,为了使 延迟时隙的潜在的性能益处最大化,可以选择较大位宽的时隙。然而,该选择可能增加代码 足印。在一实施例中,在对指令编码时,设计人员可以将延迟时隙宽度选择为较大位宽 或较小位宽。这与这里描述的允许手动选择指令位宽(ADD16或ADD32)的实施例相似。如 关于上文所述的固定位宽的选择,该延迟时隙选择允许设计人员追求不同的开发目标。然 而,通过该方法,可以针对每个命令而非系统整体进行位宽选择。如本领域的技术人员将意识到的,上文所述的关于延迟时隙的方法可以应用于能 够使用延迟时隙的任何指令。IV.指令格式在一实施例中,新ISA包括具有至少两种不同位宽的指令。例如,根据一实施例的 ISA包括具有16位和32位宽度的指令。尽管这里描述的新ISA的实施例描述了按互补方 式操作的两个指令集,但是这里的教导将应用于任何数目的ISA指令集。在一实施例中,指令具有操作码,其包括主操作码并且在一些情况下包括次操作 码。主操作码具有固定宽度,而次操作码具有取决于指令的宽度,包括足够大到访问整个寄 存器组的宽度。例如,在一个实施例中,MOVE指令具有5位的次操作码,并且可以到达整个 寄存器组。例如,在一个实施例中,编码包括16位和32位宽的指令,它们均具有在指令编 码中右对齐的6位主操作码,在其之后是可变宽度的次操作码。对于较大位宽和较小位宽的指令集,主操作码是相同的。例如,在一个实施例中, 编码包括16位和32位宽的指令,它们均具有在指令编码中右对齐的6位主操作码,在其之后是可变宽度的次操作码。a.原理操作码组织图1是根据一实施例的32位的重新编码的指令的格式110的示意图。指令格式 110的实施例可以具有零、一个、或更多个左对齐寄存器字段120,在其之后是可选的立即 数字段130。在一个实施例中,32位的重新编码的指令具有5位宽的寄存器字段120。其 他可选的指令专用字段140可以位于立即数字段130和操作码字段之间。在示例性实施例 中,指令可以具有0至4个左对齐的寄存器字段120,在其之后是可选的立即数字段130。其 他可选的指令专用字段140位于立即数字段130和操作码字段150或160之间。如上文所 述,操作码字段包括主操作码160并且在一些情况下包括次操作码150。图2是根据一实施例的16位指令200的格式210的示意图。指令格式210的实 施例可以具有零、一个、或更多个寄存器字段220。在一个实施例中,16位指令使用3位寄 存器220,并且使用指令专用的寄存器编码。指令专用的寄存器编码涉及关于特定指令的从 寄存器空间的特定部分到16位指令中的3位寄存器的映射。在一实施例中,16位指令可以使用较大位宽的寄存器220,包括足够大到访问整 个寄存器组的宽度。例如,在一个实施例中,16位MOVE指令具有若干5位寄存器字段。使 用5位寄存器字段允许16位MOVE指令访问具有32个寄存器的寄存器组中的任何寄存器。 在一实施例中,16位指令可以进一步包括一个或更多个立即数字段230。其他可选的指令 专用字段240可以位于操作码260或250的左侧。在示例性实施例中,16位指令可以具有 0至1个左对齐的寄存器字段220。操作码字段包括主操作码沈0,并且在一些情况中次操 作码250呈现在任何其他字段240右侧。b.主操作码表1提供了根据一实施例的用于ISA的指令格式的列表。如从表1可见,示例性 ISA中的指令具有16或32位。表1中呈现的指令格式的命名法基于用于该指令格式的寄 存器字段的数目和立即数字段的大小。就是说,指令名称具有格式R<x>I<y>。其中<x>是 指令格式中的寄存器的数目,而<y>是立即数字段的大小。例如,基于格式R2I16的指令具 有两个寄存器字段和16位立即数字段。32位 指令格式 (现有指令 )32位指令格式 (用于新指令 的另外的格式 )16位 指令格式ROIOR2M2S3R0I0RQI8S3R0I1QRO116SSRIIORQ126S3R1I7RIWS3R2I0R112S3R2I3R1I7S3R2I4RmS3R3I0R.1I10S5R1IOR1I16S5R2I0R2I0R2I2R2I3R2I4R2I5R2I10R2I16R3IOR3I3R4I0表1 指令集格式V.重新编码的指令在一实施例中,根据实施例,新指令作为ISA的一部分被添加到重新编码的传统 指令。这些新指令被设计用于减小代码大小。表2至5说明了根据一实施例的ISA的重新 编码的指令的格式。表2和3提供了根据一实施例被重新编码为ISA中的16位指令的传 统ISA的32位指令的指令格式。在一实施例中,将哪些传统32位ISA指令重新编码为16 位新ISA指令的选择是基于用于确定较频繁使用的指令的传统代码的统计分析的。表2和 3中提供了这些指令的示例性集合。表3提供了上文所述的指令专用的寄存器编码或者立 即数字段大小编码的示例。表4提供了根据一实施例的从传统ISA中的32位指令重新编 码的新ISA中的32位指令的指令格式。表5提供了根据一实施例的32位用户定义指令 (UDI)的指令格式。表2至5按照从最高有效位开始的顺序提供了根据一实施例的示例性ISA重新编 码的格式,其定义了寄存器字段、立即数字段、其他字段、空字段、次操作码字段直到主操作 码字段。如上文所述,大部分32位的重新编码的指令具有5比特宽的寄存器字段。在一实 施例中,5比特宽的寄存器字段使用线性编码(r0 =,00000', rl =,00001,等)。16位宽 度的指令可以具有不同大小的寄存器字段,例如3比特和5比特宽的寄存器字段。表2至 5中提供了根据一实施例的16位指令的寄存器字段宽度。“其他字段”由各个列定义,并且 这些字段在指令编码中的顺序由表格中的顺序定义。a.从32位指令的重新编码的新的16位指令如上文所讨论的,在这里描述的实施例中,较大位宽的ISA可以被重新编码为较 小位宽的ISA或者组合的较小和较大位宽的ISA。在一个实施例中,为了使得较大的ISA能 够被重新编码为较小的ISA,较小位宽的ISA指令具有较小的寄存器字段和立即数字段。在一个实施例中,如上文所述,该减小可以通过对频繁使用的寄存器和立即数值进行编码来 实现。在一个实施例中,ISA使用增强的32位指令集和较窄的重新编码的16位指令集。 重新编码的16位指令具有较小的寄存器字段和立即数字段,并且大小的减小是通过对频 繁使用的寄存器和立即数值进行编码来实现的。例如,在下表2中列出的针对频繁使用的传统指令的重新编码被示出为具有与频 繁使用的寄存器和立即数值对应的较小的寄存器字段和立即数字段。
权利要求
1.一种处理器,包括 执行单元多个通用寄存器,耦合到所述执行单元;其中,如果一通用寄存器等于零,则将信号提供给所述执行单元以将分支指令解析到 目标地址,所述目标地址与等于加到偏移的所述分支指令的存储器地址的值对应,该偏移 已经被移位预定的位数并且被符号扩展。
2.根据权利要求1所述的处理器,其中所述分支指令不具有延迟时隙指令。
3.一种用于在处理器上执行紧凑的等于零情况下的分支指令的方法,所述方法包括 向所述处理器提供指示紧凑的等于零情况下的分支指令的操作码;接收rs值和偏移值; 使所述偏移值移位预定的位数; 扩展所述偏移值的符号;通过将所述偏移值加到所述指令的存储器地址来形成目标地址; 检查GPR地址的内容,所述GPR地址对应于所述rs值;以及 如果所检查的GPR内容等于零, 则分支到所述目标地址,而没有延迟时隙指令。
全文摘要
一种重新编码的指令集架构(ISA)提供了较小位宽的指令或者较小和较大位宽的指令的组合,以提高指令执行效率和减小代码足印。该ISA可以从具有较大位宽的指令的传统ISA重新编码而得到,并且可以用于统一一个或更多个ISA扩展(诸如,应用专用ASE)。重新编码的ISA维持与从其得到该重新编码的ISA的ISA的汇编级兼容性。此外,重新编码的ISA可以具有新的和不同类型的另外的指令。
文档编号G06F15/76GK102077195SQ200980124104
公开日2011年5月25日 申请日期2009年5月8日 优先权日2008年5月8日
发明者E·K·诺登 申请人:Mips技术公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1