计算机系统及在计算机系统中执行指令的方法技术方案

技术编号:2883050 阅读:388 留言:0更新日期:2012-04-11 18:40
计算机系统包括物理寄存器,一部分物理寄存器形成寄存器堆栈,当充满时进行环绕式处理。N比特当前环绕处理计数状态,跟踪导致寄存器堆栈环绕处理或不环绕处理的物理寄存器再映射事件。提前装载地址表(ALAT)具有相应于装载指令的项目。检验指令存取ALAT,确定被安排在存储指令之前的存储指令和装载指令是否潜在地存取公共的存储器单元。(*该技术在2021年保护过期,可自由使用*)

【技术实现步骤摘要】

本专利技术总的涉及计算机系统中指令的执行和性能优化,更具体地,涉及一种提前装载地址表(ALAT)’用于记录存储器地址和对于不按次序地提前的装载指令的寄存器目标以便达到改进性能,其中在ALAT中的项目根据寄存器地址环绕式处理而被无效。本专利申请涉及到共同转让的、1998年10月7日提交的、题目为“Method and Apparatus for Optimizing Instruction Execution(用于指令执行优化的方法和设备)”的、美国专利申请序列号09/168,040,和2000年3月8日提交的、题目为“Emulated BranchEffected by Trampoline Mechanism(通过蹦床机制实现的仿真分支)”的、美国专利申请序列号09/521,160,这两个专利在此引用,以供参考。美国专利申请序列号09/051,160是美国专利申请序列号09/168,040的继续部分,后者是1997年10月13日提交的、美国专利申请序列号08/953,836的继续部分。本专利申请也涉及到共同转让的、1997年9月30日提交的、题目为“Method and Apparatus forDetecting Address Range Overlaps(用于检测地址范围重叠的方法和设备)”的、美国专利申请序列号08/940,607,和1999年12月31日提交的、题目为“Method and Apparatus for Advancing LoadOperations(用于提前装载操作的方法和设备)”的、美国专利申请序列号09/476,607。计算机系统包括至少一个处理器和存储器。存储器存储程序指令,数据,和操作系统。程序指令可包括用于编译应用程序的编译器。操作系统控制处理器和存储器,用于系统操作和用于执行程序指令。“基本块”是由分支和/或分支目标约束的接连的指令组,不包含分支或分支目标。这是指,如果基本块中的任何指令被执行,则基本块中的所有的指令将被执行,即,被包含在任何基本块内的指令是按照或者全部或者都没有的原则执行的。当控制被传递到基本块时,通过瞄准基本块的先前的分支,使得在基本块内的指令能够被执行(这里所使用的“瞄准”包括通过已取的分支的明显瞄准以及通过未取的分支的隐含的瞄准)。上述的内容是指,如果控制被传递到基本块,则基本块中所有的指令必须被执行;如果控制没有被传递到基本块,则基本块中没有指令被执行。在控制被传递到指令以前,指令的执行的行动,或规定执行指令的行动,被称为“推测”。由处理器在程序执行时间执行的推测被称为“动态推测”,而由编译器规定的推测被称为“静态推测”。虽然大多数现有技术不是基于静态推测,也不涉及到静态推测,但最近对静态推测的某些参考文献已开始显露。当一个指令不需要另一个指令的结果时,两个指令被称为“独立的”;当一个指令需要另一个指令的结果时,这两个指令被称为“相关的”。独立的指令可以并行地被执行,而依赖的指令以串行方式被执行。通过识别独立指令和尽可能多地并行执行它们,程序性能得以改进。经验表明,通过搜索多个基本块可以找到的独立指令比起通过只在单个基本块内搜索可以找到的更多。然而,同时执行来自多个基本块的指令需要推测。识别和调度独立的指令,以及由此提高性能,是编译器和处理器的主要任务之一。编译器和处理器设计的趋势是在每次连续地生成时增加对于独立指令的搜索范围。在现有技术指令组中,可能产生异常的指令不能被编译器推测,因为如果指令造成异常,则程序可呈现错误的行为。这限制编译器对于独立的指令的搜索的有用的范围和使得必须由处理器在程序运行时间通过动态推测进行推测。然而,动态推测引起很大的硬件复杂性,它随其上施加动态推测的基本块的数目指数地增加-这在动态推测的范围上设置了实际的限制。相反,编译器可以搜索独立的指令的范围大得多,-潜在地为整个程序。而且,一旦编译器被设计来对单个基本块边界进行静态推测,由静态推测几个基本块边界,就导致非常小的复杂性。在计算机系统中需要一种通过使能并行执行尽可能多的独立的指令而达到更高的性能的机制。这即使在第二指令以及取决于该指令的计算,有可能作用在取决于第一指令的执行的数据时,也是希望的。许多计算机系统实行软件控制的寄存器重命名。当调用程序过程调用被调用程序过程时,调用程序过程的本地寄存器被自动地保存。调用程序过程典型地只提供被调用程序过程以包含输入参量的寄存器。如果被调用程序过程需要它自己的寄存器,则被调用程序过程分配更多的寄存器。在返回到调用程序过程时,调用程序过程的本地寄存器被自动地恢复。软件控制的寄存器重命名典型地是在大的物理寄存器库上进行的。在调用时,重命名基本指针(即,帧的底部)被加上调用程序过程的本地寄存器的数目。在返回时,重命名基本指针被减去调用程序过程的本地寄存器的数目。当进行一系列调用,和可提供的寄存器的数目用完时,软件控制的寄存器重命名只环绕(wrap around)物理寄存器的底部进行处理。当请求的物理寄存器比可提供的寄存器多时,寄存器值被溢出到存储器。这样,寄存器的软件可看见的帧被变换到物理寄存器。物理寄存器被概念性地安排在圆圈上,以及当执行调用时,寄存器的软件可看见的帧围绕物理寄存器的概念性的圆周前进。在计算机系统中需要一种机制,它使得即使在第二指令以及取决于该指令的计算,有可能作用在取决于第一指令的执行的数据时,也并行执行的独立指令的数目最大化。另外,希望这样的机制是与上述的软件控制的寄存器重命名机制完全地和有效地兼容的。本专利技术提供一种包括存储编译器的存储器的方法和计算机系统。编译的程序包括存储指令、被调度在存储指令前面的装载指令、和检验指令。处理器执行编译器。物理寄存器保存用于编译的程序的数据。一部分物理寄存器形成寄存器堆栈,当充满时进行环绕式处理。N比特当前环绕处理计数状态,跟踪导致寄存器堆栈环绕处理或不环绕处理的物理寄存器再映射事件。提前装载地址表(ALAT)具有相应于装载指令的项目,每个项目具有至少一个存储器范围区,规定由相应的装载指令存取的存储器单元的范围,物理寄存器数目区,相应于在相应的装载指令中存取的物理寄存器,以及N比特寄存器环绕处理区,它相应于对于相应的装载指令的N比特的当前环绕处理计数状态。检验指令存取ALAT,确定被安排在存储指令之前的存储指令和装载指令是否潜在地存取公共的存储器单元。在一个实施例中,在执行存储指令以后,相应于ALAT中的装载指令的项目不存在表示公共的存储器单元可能已被存储和装载指令存取。在一个实施例中,如果存储指令和装载指令存取共同的存储器单元,则存储指令的执行清除ALAT中的相应于装载指令的项目。在一个实施例中,如果存储指令和装载指令存取存储器的公共范围,则存储指令的执行清除ALAT中的相应于装载指令的项目。在一个实施例中,响应使寄存器堆栈环绕处理的调用再映射事件N比特当前环绕处理计数状态被增量。处理器然后搜索ALAT找出在其寄存器环绕处理区具有与更新的N比特当前环绕处理计数状态相匹配的环绕处理计数值的项目,并清除ALAT中的在其寄存器环绕处理区具有匹配的环绕处理计数值的所有的项目。同样地,N比特当前环绕处理计数状态响应使寄存器堆栈不环绕处理的返回再映射事本文档来自技高网...

【技术保护点】
一种计算机系统,包括: 存储器(58),存储编译的程序(66/40),包括: 存储指令(Ⅰ22); 装载指令(Ⅰ24),被调度在存储指令之前;以及 检验指令(Ⅰ25); 处理器(52),执行编译的程序; 物理寄存器(74/76),保存用于编译的程序的数据,一部分物理寄存器形成寄存器堆栈(84/88),当充满时进行环绕式处理; N比特当前环绕处理计数状态(99),跟踪导致寄存器堆栈环绕处理或不环绕处理的物理寄存器再映射事件; 提前装载地址表(98),具有相应于装载指令的项目,每个项目具有至少一个存储器范围区(112,114),规定由相应的装载指令存取的存储器单元的范围,物理寄存器数目区(118),相应于在相应的装载指令中存取的物理寄存器,以及N比特寄存器环绕处理区(122),它相应于对于相应的装载指令的N比特的当前环绕处理计数状态;以及 其中检验指令存取提前装载地址表,确定存储指令和装载指令是否潜在地存取公共的存储器单元。

【技术特征摘要】
...

【专利技术属性】
技术研发人员:DC莫里斯WR布里格AH卡普WY陈
申请(专利权)人:显露结构开发研究所
类型:发明
国别省市:US[美国]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1
相关领域技术
  • 暂无相关专利