当前位置: 首页 > 专利查询>英特尔公司专利>正文

共享虚拟存储器制造技术

技术编号:7673667 阅读:182 留言:0更新日期:2012-08-11 17:48
本发明专利技术的多个实施例提供了用于CPU-GPU平台的编程模型。特别是,本发明专利技术的多个实施例提供用于集成和分离设备的统一编程模型。该模型也可以统一地对多个GPU卡和混合GPU系统(分离的和集成的)工作。这允许软件销售商编写单个应用堆栈并使其面向所有不同的平台。此外,本发明专利技术的实施例提供了在CPU和GPU之间的共享存储器模型。代替了共享整个虚拟地址空间,仅仅虚拟地址空间的一部分需要被共享。这允许在分离的和集成的设置中的高效实施。

【技术实现步骤摘要】
【国外来华专利技术】共享虚拟存储器
技术介绍
这通常涉及共享虚拟存储器实施方式。计算工业正在朝向多样性的平台体系结构发展,该平台体系结构由通用CPU以及作为分离设备或集成设备而附连的可编程GPU所构成。这些GPU通过连续或非连续互连来连接,具有不同的工业标准体系结构(ISA)并可使用它们自己的操作系统。由通用处理器(CPU)以及图形处理器(GPU)的组合所组成的计算平台已 经无处不在,特别是在客户机计算空间中。如今,几乎所有桌面和笔记本平台都载有一个或多个CPU以及集成或分离的GPU。例如,一些平台具有与集成图形芯片组成对的处理器,而其余的使用通过诸如PCI-Express之类的接口连接的分离图形处理器。一些平台载有CPU和GPU的组合。例如,它们中的一些包括更为集成的CPU-GPU平台,而其他的包括图形处理器以补偿集成GPU供给。这些CPU-GPU平台可提供在图形处理、医疗成像、数据挖掘、以及其他领域的非图形工作负载上的极大的性能提升。大量的数据并行GPU可被用于获取代码的高度并行部分上的高吞吐量。多样性的CPU-GPU平台可具有多个独特的体系结构约束,诸如 GPU可以集成和分离的方式连接。例如,一些图形处理器与芯片组集成。另一方面,其他当前的GPU以分离方式通过诸如PCI-Express之类的接口附连。虽然硬件可提供CPU和集成图形处理器之间的缓存一致性,但是对分离的GPU却很难如此。系统也可具有混合配置,其中低功率低性能GPU与CPU集成,且具有更高性能的分离GPU。最终,平台也可具有多个GPU卡。CPU和GPU可具有不同的操作系统。例如,处理器可具有它自己的操作系统内核。这意味着虚拟存储器翻译机制在CPU和GPU之间可能是不同的。相同的虚拟地址可能被通过CPU和GPU上的两个不同的页表被同时映射到两个不同的物理地址。这也意味着系统环境(加载器、链接器、等等)在CPU和GPU之间可以是不同的。例如,加载器可将应用加载在CPU和GPU上的不同基地址。CPU和GPU可具有不同的ISA,并因此相同的代码可能无法在两个处理器上运行。附图简述图I是根据一个实施例的CPU-GPU存储器模型的图示。图2是用于增加了所有权权限的共享存储器模型的一个实施例的流程图。图3是共享存储器模型的一个实施例的流程图。图4是利用PCI开口的共享存储器模型的一个实施例的流程图。图5是利用PCI开口的共享存储器模型的一个实施例的流程图。图6是操作中的共享存储器模型的一个实施例的流程图。详细描述本专利技术的多个实施例提供了用于CPU-GPU平台的编程模型。特别是,本专利技术的多个实施例提供用于集成和分离设备的统一编程模型。该模型也可以统一地对多个GPU卡和混合GPU系统(分离的和集成的)工作。这允许软件销售商编写单个应用堆栈并将使其面向所有不同的平台。此外,本专利技术的实施例提供了在CPU和GPU之间的共享存储器模型。代替了共享整个虚拟地址空间,仅仅一部分虚拟地址空间需要被共享。这允许在分离的和集成的设置中的有效实现。进一步的,语言注释可被用于区分必须被运行在GPU上的代码。语言支持可被扩展为包括诸如函数指针之类的特征。共享存储器模型的诸实施例提供了新颖的编程式样。特别是,数据结构可以在CPU和GPU之间无缝共享,并且可以从一端向另 一端传递指针而不要求任何格式编组。例如,在一个实施例中,游戏引擎和包括物理、人工智能(Al)以及渲染。物理和Al代码最好在CPU上执行,而渲染最好在GPU上执行。诸如场景图片之类的数据结构可能需要在CPU和GPU之间共享。在一些当前的编程环境中这样的执行模型可能是行不通的,因为场景图片需要被来来回回地串行化(或格式编组)。然而在共享存储器模型的诸实施例中,场景图片可简单地位于共享存储器中,并可被CPU和GPU共同访问。在一个实施例中,实现了包括语言和运行时支持的完全编程环境。多个高度并行的非图形负载可经由端口与该环境对接。该实现可工作在多样性的操作系统上,即,在CPU和GPU上运行不同操作系统。此外,可在CPU和GPU之间允许用户级通信。这可使得应用堆栈更为高效,因为可以消除CPU-GPU通信中的OS驱动器堆栈的开销。该编程环境可经由端口与两个不同的多样性CPU-GPU平台模拟器对接一一个模拟作为分离设备附加到CPU的GPU,另一个模拟集成CPU-GPU平台。总之,CPU-GPU平台的编程模型的诸实施例可以 为分离的、集成的、多GPU卡和混合GPU配置提供统一编程模型。 在CPU和GPU之间提供共享存储器语义,允许在CPU和GPU之间自由地传递指针并共享数据结构。 被实现在具有CPU和GPU上不同的ISA和不同操作系统的多样性的CPU-GPU平台中。 在CPU和GPU之间使能用户级通信,因此使得应用堆栈更为高效。存储器模型图I是根据一个实施例的GPU-CPU存储器模型的图示。在一个实施例中,存储器模型100提供CPU 110和GPU 120之间的共享虚拟地址窗口 130,诸如以分割全局地址空间(PGAS)语言。在CPU 100和GPU 120之间共享的任何数据结构通常必须被编程者分配在该空间130中。本系统可提供将数据分配在该空间130中的特殊存储器分配(malloc)函数。静态变量可被注释以类型量词,以使它们被分配在共享窗口 130中。然而,与PGAS语言不同,在共享窗口中没有亲和力(affinity)的概念。这是因为在共享空间130中的数据随着它被每个处理器所使用而在CPU和GPU高速缓存之间迁移。也与PGAS实现方式不同,指针的表示在共享和私有空间中不发生改变。剩余的虚拟地址空间对CPU 110和GPU 120而言是私有的。默认地,数据被分配在该空间130中,且对另一侧不可见。该分割地址空间方式可削减需要保持一致性的存储量,并实现对分离设备的更为高效的实施。该存储器模型的实施例可被扩展到多GPU和混合配置中。特别是,共享虚拟地址窗口可以跨所有的设备而扩展。被分配在该共享地址窗口 130中的任何数据结构可对所有代理而言都是可见的,且该空间中的指针可以自由地交换。此外,每个代理具有其自有的私有存储器。由于多个原因,可使用共享地址空间中的释放一致性。第一,本系统仅仅需要记住连续释放指针之间的所有写入,而不是单独写入的序列。这更易于在释放点进行批量转换(诸如,在同一时间对若干页),这在分离配置中很重要。第二,这允许存储器更新被完全保持在本地直到释放点,这在分离配置中很重要。第三,释放一致性模型可以对CPU-GPU平台的编程模式是良好的匹配,因为存在自然释放和获取点。例如,从CPU到GPU的调用是一个这样的点。在调用之前使得任何CPU更新对GPU可见可能不起到任何作用,并且对向CPU更新如何变得可见强加任何命令都是没有意义的,只要它们都在GPU开始执行之前是可见的既可。进一步的,所提出的C/C++存储器模型可被容易地映射到共享存储器空间。通常,非竞争程序可能不受共享存储器空间的弱连续性模型的影响。该实现方式可能不需要被限制在为竞争程序提供更强的保证。然而,不同的实施例可选择为共享空间提供不同的连续性模型。图2是用于增加了所有权权限的共享存储器模型的一个实施例的流程图。顺序 200可被实现在固件、软件或硬件中。软件实施例可被本文档来自技高网...

【技术保护点】

【技术特征摘要】
【国外来华专利技术】...

【专利技术属性】
技术研发人员:H·陈Y·高周小成S·闫P·张J·方A·孟德尔森B·萨哈莫罕·拉贾戈帕兰
申请(专利权)人:英特尔公司
类型:发明
国别省市:

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

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