具有粒度的增加立即数能力的处理器和方法_2

文档序号:8512434阅读:来源:国知局
据;解析表示该指令的数据以获得操作码标识符、第一寄 存器标识符、第二寄存器标识符和立即值;将来自第一寄存器标识符所标识的寄存器的值 与预定常量进行比较;指示该比较是否满足该指令所指定的条件;并且响应于该比较满足 该指令所指定的条件,基于使用该立即值和来自第二寄存器标识符标识的寄存器的值而确 定的分支目标地址来设置程序计数器。
[0016] 该方法可以进一步包括通过将立即值增加至根据第二寄存器标识符标识的寄存 器的内容而确定的值来计算分支目标地址。该指令可以指定该条件是由第一寄存器标识符 标识的寄存器中的值是否等于零。
[0017] 本公开的一个方面涉及处理器,该处理器包括指令单元,该指令单元被配置为将 指令解码成指示第一寄存器标识符、第二寄存器标识符、立即值和操作码标识符的数据;以 及执行单元,被配置为响应于来自指令单元的数据,将来自第一寄存器标识符标识的寄存 器的值与预定常量进行比较,指示该比较是否满足该指令所指定的条件,其中指令单元被 配置为响应于该比较满足指令所指定的条件,基于使用立即值和来自第二寄存器标识符标 识的寄存器的值而确定的分支目标地址来设置程序计数器。
[0018] 本公开的一个方面涉及在处理器中处理机器可执行指令的方法。该方法提供访问 表示要在处理器中被执行的指令的数据。该指令被解码以确定对如下架构寄存器的集合中 的寄存器的参考,由在用户模式特权(privilege)下执行的代码访问该架构寄存器的集合 是受限制的。如果该指令与用户模式特权级别相关联(例如,该代码正以用户模式或无特 权模式执行),那么对寄存器的参考被解译为对存储程序计数器值的寄存器的参考,并且然 后该方法提供使用程序计数器值来执行由该指令所指定的操作。这种操作的示例是相对于 程序计数器的分支。程序代码可以被提供在非瞬态介质上,该非瞬态介质通过参考将不能 被用户模式代码访问的预定寄存器来编码程序计数器相对指令。本公开更进一步的方面是 具有根据上述方法的实施方式来解码指令的指令解码器的处理器。
[0019] 本公开的一个方面涉及产生机器可执行指令的方法,包括:访问包含指令的源代 码,该指令指定使用程序计数器的值作为输入的、要被执行的操作,并且产生表示该指令的 二进制代码可执行数据,二进制代码可执行数据包含对在能够执行该指令的处理器的架构 寄存器集合内的寄存器的参考,该寄存器是被保留用于内核(kernel)模式特权下的软件 执行的寄存器。
【附图说明】
[0020] 图IA和IB描绘了关于能够实现本公开的一些方面的示例处理器的框图;
[0021] 图2描绘了根据本公开的使用指令序列形成64比特的立即数的示例;
[0022] 图3描绘了根据本公开的用于使用指令序列形成64比特的立即数的示例过程;
[0023] 图4描绘了根据本公开的用于使用指令序列形成64比特的立即数的示例过程;
[0024] 图5描绘了根据本公开的实现指令的处理器的功能框图;
[0025] 图6描绘了一种通过其指令可以使用寄存器别名(alias)来参考程序计数器的值 的过程;
[0026] 图7描绘了根据本公开的实现指令的处理器的功能框图;
[0027] 图8描绘了根据本公开的由执行具有溢出时分支的增加 (add with branch on overflow)的指令的处理器可实现的示例过程;
[0028] 图9描绘了根据本公开的实现具有溢出时分支的增加的指令的处理器的功能框 图;
[0029] 图10描绘了根据本公开的产生具有指令的机器可执行代码的示例过程;
[0030] 图11描绘了可以产生汇编代码、目标代码和诸如可以在VM中被解译或编译的字 节码的代码的编译器的框图;
[0031] 图12描绘了实现虚拟机的机器的面向软件的框图,该虚拟机可以在执行单元上 执行字节码以及本地代码中的执行应用程序和其他代码;以及
[0032] 图13描绘了可以实现本公开的一些方面的机器的示例面向硬件框图。
【具体实施方式】
[0033] 以下公开使用了主要地关于RISC指令集的示例,并且更具体地,关于MIPS处理器 架构的一些方面的示例。使用这些示例没有限制本公开应用于其他处理器架构及其实施方 式。
[0034] 如上所述,处理器架构支持的每条指令具有可以用来标识针对给定指令执行的精 确操作的一部分比特。该比特数受限于各种各样的实际考虑。一个考虑是指令长度;32比 特的指令比64比特的指令需要更少的存储。标识源和目的地寄存器所需的比特数取决于 所支持的架构寄存器的数量,这可能影响多少比特被留下用于其他目的。解码指令所需的 逻辑的复杂度也可以为一个因素;例如,选择哪个操作码来标识哪条指令可以影响复杂性 和解码逻辑的总效率。
[0035] 除了技术问题之外,处理器架构设计也受其他考虑的影响。一个主要的考虑是对 给定处理器架构的上几代的支持。需要为新一代的现有处理器架构重新编译代码可能阻碍 顾客采用并且比保持后向兼容的处理器架构需要更多支持的基础设施。为了保持后向兼 容,新的处理器架构应像上一代一样为给定的目标代码执行相同操作。这意味着现有操作 码(即,操作码和其他功能开关或修改器)在新的处理器架构中不能改变。因为计算需要 随时间而改变,可能期望增加指令来支持某些能力;诸如用于媒体处理加速的整数和浮点 的单指令多数据(SIMD)指令。
[0036] 图IA图示了能够实现本公开的一些方面的处理器50的功能元件的示例图。将 首先介绍处理器50的示例元件,然后将适当地更详细描述。这个示例是能够乱序(out of order)执行的处理器;然而,所公开的方面可以被用于顺序(in-order)处理器实施方式 中。如此,图IA描述了本公开的微架构实施方式的功能元件,但是其他实施方式也是可能 的。此外,不同的处理器架构可以实现本公开的一些方面。对图IA所描绘的功能元件中的 一些功能元件所给出的名称在现有处理器架构中可能会不同,但是本领域技术人员根据本 公开将理解如何在不同的处理器架构中实现本公开,包括基于已有架构、并且基于甚至全 新架构的那些架构。
[0037] 处理器50包括与指令高速缓存54耦合的提取单元52,指令高速缓存54与解码和 重命名单元56耦合。解码和重命名单元56与指令队列58耦合、并且也与包括指令翻译后 备缓冲器(iTLB) 60的分支预测器相耦合。指令队列58与重排序缓冲器(ROB) 62耦合,该 重排序缓冲器(ROB) 62与提交单元64耦合。ROB 62与(多个)保留站68和加载/存储 缓冲器(LSB) 66耦合。保留站68与(多个)乱序(00)执行管线70耦合。(多个)执行 管线70和LSB 66各自与寄存器文件72耦合。寄存器文件72与(多个)Ll数据高速缓存 74耦合。(多个)Ll高速缓存74与(多个)L2高速缓存76耦合。处理器50还可以访问 另外的存储器分级元
当前第2页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1