当前位置: 首页 > 专利查询>微软公司专利>正文

别名化缓冲区制造技术

技术编号:9741982 阅读:124 留言:0更新日期:2014-03-07 05:07
本发明专利技术涉及用于将缓冲区别名化的方法、系统和计算机程序产品。本发明专利技术的实施例通过如下方式来支持缓冲区别名化:引入源程序的缓冲区访问与目标可执行物理缓冲区之间的间接等级;以及在运行时将逻辑缓冲区访问绑定到实际物理缓冲区访问。可以将多种支持缓冲区的运行时别名化的技术用在原本不允许目标可执行代码的单独定义的缓冲区之间的这样的运行时别名化的系统中。源程序中的逻辑缓冲区访问到目标可执行代码中定义的实际物理缓冲区之间的绑定被延迟直到运行时。

【技术实现步骤摘要】
【国外来华专利技术】别名化缓冲区背景1.背景和相关技术计算机系统及相关技术影响社会的许多方面。的确,计算机系统处理信息的能力已转变了人们生活和工作的方式。现在,计算机系统通常执行在计算机系统出现以前手动执行的许多任务(例如,文字处理、日程安排、帐目管理等)。最近,计算机系统彼此耦合并耦合到其他电子设备以形成计算机系统及其他电子设备可在其上传输电子数据的有线和无线计算机网络。因此,许多计算任务的执行分布在多个不同的计算机系统和/或多个不同的计算环境中。一些运行时环境使用缓冲区别名化(aliasing)来提供编程抽象。缓冲区别名化将一个或多个物理缓冲区抽象成逻辑缓冲区,所述逻辑缓冲区每个都表示底层物理缓冲区的子集。缓冲区别名化使得程序员能够开发出算法,而不必关心作为(例如输入或输出)参数传递给算法的缓冲区是属于不同物理缓冲区还是相同物理缓冲区。然而,其他运行时环境不允许单独定义的缓冲区之间的运行时缓冲区别名化。在这些环境中,缓冲区访问是通过引用底层物理缓冲区来进行的。另外,情况可能是,为一个运行时环境开发的软件的部分最终是在不同的软件环境中执行的,比如例如在具有不同类型的处理器的多处理器环境中执行。因此,包括缓冲区别名化指令的代码的一部分可以被开发以供在支持缓冲区别名化的第一运行时环境(例如通用中央处理单元“CPU”)中执行。然而在运行时,代码的该部分可能例如被分配给不允许缓冲区别名化的不同的第二运行时环境(例如图形处理单元(“GPU”))。第二运行时环境不知道如何执行缓冲区别名化指令。因此,在遇到缓冲区别名化指令时,第二运行时环境可能导致代码的该部分停止按预期工作并且可能导致异常,或者可能导致某种其他类型的错误。概述本专利技术涉及用于将缓冲区别名化的方法、系统和计算机程序产品。计算机系统包括多个处理器,其包括第一处理器类型和不同的第二处理器类型。用于第二处理器类型的运行时环境不允许物理缓冲区的别名化。计算机系统访问程序。该程序包括某编程语言的源代码。该源代码被配置为用于在第一处理器类型和第二处理器类型上执行,其中该源代码的至少一部分是以第二处理器类型为目标的。该源代码定义一个或多个物理缓冲区并且包括用于通过多个逻辑视图在逻辑上访问一个或多个物理缓冲区的指令。每个逻辑视图都对应于物理缓冲区中的数据的子集。至少一部分源代码被转换成用于不同的第二处理器类型的第二代码。第二代码定义逻辑缓冲区访问与底层物理缓冲区访问之间的间接(indirection)等级。第二代码的执行被配置在不同的第二处理器类型的运行时环境中以使用所定义的间接等级将逻辑缓冲区访问绑定到物理缓冲区。所定义的间接等级被用于在第二代码的执行期间将逻辑缓冲区访问绑定到物理缓冲区。提供本概述是为了以简化的形式介绍将在以下详细描述中进一步描述的一些概念。本概述不旨在标识出所要求保护的主题的关键特征或必要特征,也不旨在用于帮助确定所要求保护的主题的范围。本专利技术的附加特征和优点将在以下描述中叙述,并且其一部分根据本描述将是显而易见的,或者可通过对本专利技术的实践来获知。本专利技术的特征和优点可通过在所附权利要求书中特别指出的工具和组合来实现和获得。本专利技术的这些以及其他特征、优点和特征将根据以下描述和所附权利要求而变得更显而易见,或者可通过如此后阐述的对本专利技术的实践而获知。附图简述为了描述可以获得本专利技术的上文所列举的及其他优点和特征的方式,将通过参考附图中所示的本专利技术的各具体实施例来呈现上文简要描述的本专利技术的更具体的描述。可以理解,这些附图仅描述本专利技术的典型实施例,从而不被认为是对其范围的限制,本专利技术将通过使用附图用附加特征和细节来描述和说明,在附图中:图1示出了促进缓冲区别名化的示例计算机架构。图2示出了用于将缓冲区别名化的示例方法的流程图。图3A示出了使用动态标签来提供关于间接的等级。图3B示出了使用抽象接口和动态链接来提供间接等级。详细描述本专利技术涉及用于将缓冲区别名化的方法、系统和计算机程序产品。计算机系统包括多个处理器,其包括第一处理器类型和不同的第二处理器类型。用于第二处理器类型的运行时环境不允许物理缓冲区的别名化。计算机系统访问程序。该程序包括某编程语言的源代码。该源代码被配置为用于在第一处理器类型和第二处理器类型上的混合执行,其中该源代码的至少一部分是以第二处理器类型为目标的。该源代码定义一个或多个物理缓冲区并且包括用于通过多个逻辑视图在逻辑上访问一个或多个物理缓冲区的指令。每个逻辑视图都对应于物理缓冲区中的数据的子集。至少一部分源代码被转换成用于不同的第二处理器类型的第二代码。第二代码定义逻辑缓冲区访问与底层物理缓冲区访问之间的间接(indirection)等级。第二代码的执行被配置在不同的第二处理器类型的运行时环境中以使用所定义的间接等级将逻辑缓冲区访问绑定到物理缓冲区。所定义的间接等级被用于在第二代码的执行期间将逻辑缓冲区访问绑定到物理缓冲区。本专利技术的实施例包括用于提供间接等级的各种机制。在一些实施例中,使用动态标签来提供间接等级。动态标签可以包括在所生成的可执行代码(例如第二代码)中以用于将逻辑缓冲区访问复用到合适的物理缓冲区访问。在其他实施例中,使用抽象接口和动态链接来提供间接等级。抽象接口被包括在用于逻辑缓冲区访问的所生成的可执行代码(例如第二代码)中。在运行时,可执行代码被动态地链接到合适的物理缓冲区访问。本专利技术的各实施例可包括或利用专用或通用计算机,该专用或通用计算机包括诸如举例而言一个或多个处理器和系统存储器的计算机硬件,如以下更详细讨论的。本专利技术范围内的各实施例还包括用于承载或存储计算机可执行指令和/或数据结构的物理和其他计算机可读介质。这样的计算机可读介质可以是可由通用或专用计算机系统访问的任何可用介质。存储计算机可执行指令的计算机可读介质是计算机存储介质(设备)。承载计算机可执行指令的计算机可读介质是传输介质。由此,作为示例而非限制,本专利技术的各实施例可包括至少两种显著不同的计算机可读介质:计算机存储介质(设备)和传输介质。计算机存储介质(设备)包括RAM、ROM、EEPROM、CD-ROM、固态驱动器(SSD )(如基于RAM)、闪存、相变存储器(PCM)、其他类型的存储器、其他光盘存储、磁盘存储或其他磁存储设备、或可用于存储计算机可执行指令或数据结构形式的所需程序代码装置且可由通用或专用计算机访问的任何其他介质。“网络”被定义为允许在计算机系统和/或模块和/或其他电子设备之间传输电子数据的一个或多个数据链路。当信息通过网络或另一个通信连接(硬连线、无线、或者硬连线或无线的组合)传输或提供给计算机时,该计算机将该连接适当地视为传输介质。传输介质可包括可用于携带计算机可执行指令或数据结构形式的所需程序代码装置且可由通用或专用计算机访问的网络和/或数据链路。上述的组合也应被包括在计算机可读介质的范围内。此外,在到达各种计算机系统组件之后,计算机可执行指令或数据结构形式的程序代码装置可从传输介质自动传输到计算机存储介质(设备)(或反之亦然)。例如,通过网络或数据链接接收到的计算机可执行指令或数据结构可被缓存在网络接口模块(例如,“NIC”)内的RAM中,然后最终被传输到计算机系统RAM和/或计算机系统处的较不易失性的计算机存储介质(设备)。因而本文档来自技高网...

【技术保护点】
在包括多个处理器和系统存储器的计算机系统处的一种用于将缓冲区别名化的方法,所述多个处理器包括第一处理器类型和不同的第二处理器类型,针对不同的第二处理器类型的运行时环境阻止物理数据缓冲区的别名化,该方法包括:访问程序的动作,所述程序包括编程语言的源代码,所述源代码被配置为用于在第一处理器类型和不同的第二处理器类型上的混合执行,所述源代码定义物理缓冲区,所述源代码还包括用于通过多个逻辑视图在逻辑上访问所述物理缓冲区的指令,每个逻辑视图都对应于所述物理缓冲区中的数据的子集,所述源代码的至少一部分是以不同的第二处理器类型为目标的;将所述源代码的至少一部分转换成针对不同的第二处理器类型的第二代码的动作,第二代码定义所述逻辑缓冲区访问与所述物理缓冲区之间的间接等级;将第二代码的执行配置在不同的第二处理器类型的运行时环境内以使用所定义的间接等级将逻辑缓冲区访问绑定到物理缓冲区的动作;以及使用所定义的间接等级来在第二代码的执行期间将所述逻辑缓冲区访问绑定到所述物理缓冲区的动作。

【技术特征摘要】
【国外来华专利技术】2011.06.14 US 13/160,3731.在包括多个处理器和系统存储器的计算机系统处的一种用于将缓冲区别名化的方法,所述多个处理器包括第一处理器类型和不同的第二处理器类型,针对不同的第二处理器类型的运行时环境阻止物理数据缓冲区的别名化,该方法包括: 访问程序的动作,所述程序包括编程语言的源代码,所述源代码被配置为用于在第一处理器类型和不同的第二处理器类型上的混合执行,所述源代码定义物理缓冲区,所述源代码还包括用于通过多个逻辑视图在逻辑上访问所述物理缓冲区的指令,每个逻辑视图都对应于所述物理缓冲区中的数据的子集,所述源代码的至少一部分是以不同的第二处理器类型为目标的; 将所述源代码的至少一部分转换成针对不同的第二处理器类型的第二代码的动作,第二代码定义所述逻辑缓冲区访问与所述物理缓冲区之间的间接等级; 将第二代码的执行配置在不同的第二处理器类型的运行时环境内以使用所定义的间接等级将逻辑缓冲区访问绑定到物理缓冲区的动作;以及 使用所定义的间接等级来在第二代码的执行期间将所述逻辑缓冲区访问绑定到所述物理缓冲区的动作。2.如权利要求1所述的方法,其特征在于,访问程序的动作包括访问C++程序的动作,所述C++是针对并行环境扩展的。3.如权利要求1所述的方法,其特征在于,访问程序的动作包括访问如下程序的动作:所述程序被配置为用于在中央处理单元(“CPU”)运行时和图形处理单元(“GPU”)运行时中的混合执行。4.如权利要求1所述的方法,其特征在于,访问程序的动作包括访问包括用于在逻辑上访问下列各项之一的指令的程序的动作:随机存取存储器(“RAM”)和盘上的虚拟存储器。5.如权利要求1所述的方法,其特征在于,将所述源代码的至少一部分转换成针对不同的第二处理器类型的第二代码的动作包括将所述源的至少一部分转换成用于在图形处理单元(“GPU”)上执行的高级着色器语言(“HLSL”)代码的动作。6.如权利要求1所述的方法,其特征在于,还包括: 分析第二代码以创建针对并行环境阵列缓冲区扩展的C++与相应的高级着色器语言(“HLSL”)缓冲区变量之间的映射的动作;并且其中 使用所定义的间接等级来将所述逻辑缓冲区访问绑定到所述物理缓冲区的动作包括使用所述映射来将所述逻辑缓冲区访问绑定到所述物理缓冲区访问的动作。7.如权利要求1所述的方法,其特征在于,将源代码的至少一部分转换成针对不同的第二处理器类型的第二代码的动作,其中第二代码定义所述逻辑缓冲区访问与所述物理缓冲区之间的间接等级,包括转换源代码的所述至少一部分以使用动态标签来实现所述逻辑缓冲区访问与所述物理缓冲区之间的间接等级的动作。8.如权利要求7所述的方法,其特征在于,在第二代码的执行期间使用所定义的间接等级来将所述逻辑缓冲区访问绑定到所述物理缓冲区的动作包括使用所述动态标签来将逻辑缓冲区访问复用到合适的物理缓冲区访问的动作。9.如权利要求1所述的方法,其特征在于,将源代码的至少一部分转换成针对不同的第二处理器类型的第二代码的动作,其中第二代码定义所述逻辑缓冲区访问与所述物理缓冲区之间的间接等级,包括转换源代码的所述至少一部分以将抽象接口...

【专利技术属性】
技术研发人员:A·K·阿加瓦尔W·朱Y·莱瓦诺尼
申请(专利权)人:微软公司
类型:
国别省市:

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

1