用于64位地址模式优化的算法

文档序号:8323917阅读:449来源:国知局
用于64位地址模式优化的算法
【专利说明】用于64位地址模式优化的算法
[0001]相关申请的交叉引用
[0002]本申请要求享有于2011年11月7日提交的、申请号为61/556,782的美国临时专利申请以及于2012年10月24日提交的、申请号为13/659,786的美国专利申请的优先权。这些申请的每一个通过援引并入本文。
技术领域
[0003]本发明总地涉及计算机处理,并且更具体地,涉及用于64位地址模式优化的算法。
【背景技术】
[0004]开发者使用编译器从高级源代码生成可执行程序。典型地,编译器配置为接收(例如以C++或Java所编写的)程序的高级源代码、确定程序将在其上执行的目标硬件平台(例如X86处理器)、以及随后将高级源代码翻译成可以在目标硬件平台上执行的汇编级代码。该配置提供以下优点:使开发者能够编写单个高级源代码程序并且随后指定该程序的目标为跨诸如移动设备、个人计算机或服务器的各种各样的硬件平台而执行。
[0005]一般地,编译器包括三个部件:前端、中端和后端。前端配置为确保高级源代码满足编程语言语法和语义,由此前端生成高级源代码的第一中间表示(IR)。中端配置为接收和优化第一 IR,其通常涉及,例如移除第一 IR中所包括的不可达代码,如果有的话。在优化第一 IR之后,中端生成第二 IR用于后端处理。特别地,后端接收第二 IR并将第二 IR翻译成汇编级代码。
[0006]为了促进高效的汇编级代码的生成,减少汇编级代码中所引用的寄存器数目和其中所包括的地址计算代码量是可取的。一种用来实现这些减少的方法在本文中称为“寄存器加偏移量”方法,其涉及生成引用基地址寄存器和常量偏移量的汇编级指令。例如在CUDA?架构中,可以经由汇编级指令“Id.global.f32fl2, [rdl2+64] ”将值从全局存储器加载到寄存器“Π2”,其中“rdl2”是基地址寄存器且“64”是常量偏移量。根据该方法,多个存储器地址有益地能够共享相同的基地址寄存器“rdl2”。例如当“rdl2”存储值“16”时,表达式[rdl2+64]使得存储在存储器地址[80]的值被加载到全局存储器地址“f 12”。类似地,当“rdl2”存储值“20”时,表达式[rdl2+64]使得存储在存储器地址[84]的值被加载到全局存储器地址“Π2”。因此,理想的情况是,编译器能够识别可简化为实现“寄存器加偏移量”方法的汇编级指令的高级指令。
[0007]在一些情况下,可根据以上方法加以简化的普遍类型的高级指令包括引用由32位表达式所偏移的64位基存储器地址的高级指令。该格式的示例为“64位基地址+ (uint64_t) (32位表达式)”,其中32位表达式(经由“uint64_t”类型转换符号)被类型转换为64位以使得该32位表达式所得的值是64位。实现以上格式的高级指令的示例为“&p+(uint64_t) (-20*x+30*y+1100) ”。鉴于上述“寄存器加偏移量”方法,理想的情况是,确定是否可以从高级指令中的表达式“(_20*X+30*y+1100) ”中提取常量偏移量。不幸的是,64位类型转换在做出这类确定时引入数个复杂的问题,尤其是当表达式包括无符号整数运算时。特别地,数个编程语言标准,诸如用于C/C++的标准,设计无符号计算以当溢出发生时产生环绕(wrap-around)值。结果是常规编译器时常不能有效地将合格的高级指令翻译为实现“寄存器加偏移量”方法的汇编级指令。
[0008]因此,本领域需要允许从高级指令中提取常量偏移量以将其用在所生成的实现“寄存器加偏移量”方法的汇编级指令中的技术。

【发明内容】

[0009]本发明的一个实施例阐述一种用于从包括在计算机程序的高级源代码中的64位类型转换表达式中提取存储器地址偏移量的方法。该方法包括以下步骤:接收64位类型转换表达式,其中64位类型转换表达式包括一个或多个32位表达式;确定用于一个或多个32位表达式中的每一个的范围;通过对32位表达式的范围求和来计算总范围;确定总范围是用于32位无符号整数的范围的子集;基于用于一个或多个32位表达式的范围来计算存储器地址偏移量;以及生成引用存储器地址偏移量的至少一个汇编级指令。
[0010]所公开实施例的一个优势是编译器配置为从计算机程序的高级指令中提取存储器地址常量偏移量以使得可将其用在实现本文所述的“寄存器加偏移量”方法的汇编级指令中。结果是,存在由计算机程序所引用的寄存器数目的整体减少以及其中所包括的地址计算的复杂性的整体下降。有利地,计算机程序可以更高效地执行在处理器上并且可以允许其他计算机程序利用所释放的寄存器。
【附图说明】
[0011]因此,可以详细地理解本发明的上述特征,并且可以参考实施例得到对如上面所简要概括的本发明更具体的描述,其中一些实施例在附图中示出。然而,应当注意的是,附图仅示出了本发明的典型实施例,因此不应被认为是对其范围的限制,本发明可以具有其他等效的实施例。
[0012]图1是示出了配置为实现本发明的一个或多个方面的计算机系统的框图。
[0013]图2A-2B示出了根据本发明一个实施例的、用于从计算机程序的高级指令中提取常量偏移量以将其用在实现“寄存器加偏移量”方法的汇编级指令中的方法步骤的流程图。
【具体实施方式】
[0014]在下面的描述中,将阐述大量的具体细节以提供对本发明更透彻的理解。然而,本领域的技术人员应该清楚,本发明可以在没有一个或多个这些具体细节的情况下得以实施。
[0015]系统概述
[0016]图1为示出了配置为实现本发明的一个或多个方面的计算机系统100的框图。计算机系统100包括经由可以包括存储器桥105的互连路径通信的中央处理单元(CPU) 102和系统存储器104。存储器桥105可以是例如北桥芯片,经由总线或其他通信路径106 (例如超传输(HyperTransport)链路)连接到I/O (输入/输出)桥107。I/O桥107,其可以是例如南桥芯片,从一个或多个用户输入设备108 (例如键盘、鼠标)接收用户输入并且经由通信路径106和存储器桥105将该输入转发到CPU102。并行处理子系统112经由总线或第二通信路径113 (例如外围部件互连(PCI)Express、加速图形端口或超传输链路)耦连到存储器桥105 ;在一个实施例中,并行处理子系统112是将像素传递到显示设备110的图形子系统,显示设备110可以是任意常规的阴极射线管、液晶显示器、发光二极管显示器等。系统盘114也连接到I/O桥107并且可以配置为存储内容和应用程序和数据以由CPU102和并行处理子系统112使用。系统磁盘114为应用程序和数据提供非易失性存储并且可以包括固定的和可移动的硬盘驱动器、闪存设备以及CD-ROM (光盘只读存储器)、DVD-R0M (数字多功能光盘ROM)、蓝光、HD-DVD (高清DVD)或其他磁性、光学或固态存储设备。
[0017]交换器116提供I/O桥107与诸如网络适配器118以及各种插卡120和121的其他部件之间的连接。其他部件(未明确示出),包括通用串行总线(USB )或其他端口连接、压缩磁盘(⑶)驱动器、数字多功能光盘(DVD)驱动器、胶片录制设备及类似部件,也可以连接到I/O桥107。图1所示的各种通信路径包括具体命名的通信路径106和113可以使用任何适合的协议实现,诸如PC1-EXpreSS、AGP (加速图形端口)、超传输或者任何其他总线或点到点通信协议,并且如本领域已知的,不同设备间的连接可使用不同协议。
[0018]在一个实施例中,并行处理子系统112包含经优化用于图形和视频处
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1