共享虚拟存储器的制造方法

文档序号:6631033阅读:212来源:国知局
共享虚拟存储器的制造方法
【专利摘要】本发明的多个实施例提供了用于CPU-GPU平台的编程模型。特别是,本发明的多个实施例提供用于集成和分离设备的统一编程模型。该模型也可以统一地对多个GPU卡和混合GPU系统(分离的和集成的)工作。这允许软件销售商编写单个应用堆栈并使其面向所有不同的平台。此外,本发明的实施例提供了在CPU和GPU之间的共享存储器模型。代替了共享整个虚拟地址空间,仅仅虚拟地址空间的一部分需要被共享。这允许在分离的和集成的设置中的高效实施。
【专利说明】共享虚拟存储器
[0001] 本申请是PCT国际申请号为PCT/US2009/063368、中国国家申请号为 200980154460. 7、题为"共享虚拟存储器"的申请的分案申请。

【背景技术】
[0002] 这通常涉及共享虚拟存储器实施方式。
[0003] 计算工业正在朝向多样性的平台体系结构发展,该平台体系结构由通用CPU以及 作为分离设备或集成设备而附连的可编程GPU所构成。这些GPU通过连续或非连续互连来 连接,具有不同的工业标准体系结构(ISA)并可使用它们自己的操作系统。
[0004] 由通用处理器(CPU)以及图形处理器(GPU)的组合所组成的计算平台已经无处不 在,特别是在客户机计算空间中。如今,几乎所有桌面和笔记本平台都载有一个或多个CPU 以及集成或分离的GPU。例如,一些平台具有与集成图形芯片组成对的处理器,而其余的使 用通过诸如PCI-Express之类的接口连接的分离图形处理器。一些平台载有CPU和GPU的 组合。例如,它们中的一些包括更为集成的CPU-GPU平台,而其他的包括图形处理器以补偿 集成GPU供给。
[0005] 这些CPU-GPU平台可提供在图形处理、医疗成像、数据挖掘、以及其他领域的非图 形工作负载上的极大的性能提升。大量的数据并行GPU可被用于获取代码的高度并行部分 上的高吞吐量。多样性的CPU-GPU平台可具有多个独特的体系结构约束,诸如 :
[0006] *GPU可以集成和分离的方式连接。例如,一些图形处理器与芯片组集成。另一方 面,其他当前的GPU以分离方式通过诸如PCI-Express之类的接口附连。虽然硬件可提供 CPU和集成图形处理器之间的缓存一致性,但是对分离的GPU却很难如此。系统也可具有混 合配置,其中低功率低性能GPU与CPU集成,且具有更高性能的分离GPU。最终,平台也可具 有多个GPU卡。
[0007] *CPU和GPU可具有不同的操作系统。例如,处理器可具有它自己的操作系统内核。 这意味着虚拟存储器翻译机制在CPU和GPU之间可能是不同的。相同的虚拟地址可能被通 过CPU和GPU上的两个不同的页表被同时映射到两个不同的物理地址。这也意味着系统环 境(加载器、链接器、等等)在CPU和GPU之间可以是不同的。例如,加载器可将应用加载 在CPU和GPU上的不同基地址。
[0008] *CPU和GPU可具有不同的ISA,并因此相同的代码可能无法在两个处理器上运行。 [0009] 附图简述
[0010] 图1是根据一个实施例的CPU-GPU存储器模型的图示。
[0011] 图2是用于增加了所有权权限的共享存储器模型的一个实施例的流程图。
[0012] 图3是共享存储器模型的一个实施例的流程图。
[0013] 图4是利用PCI开口的共享存储器模型的一个实施例的流程图。
[0014] 图5是利用PCI开口的共享存储器模型的一个实施例的流程图。
[0015] 图6是操作中的共享存储器模型的一个实施例的流程图。
[0016] 详细描述
[0017] 本发明的多个实施例提供了用于CPU-GPU平台的编程模型。特别是,本发明的多 个实施例提供用于集成和分离设备的统一编程模型。该模型也可以统一地对多个GPU卡和 混合GPU系统(分离的和集成的)工作。这允许软件销售商编写单个应用堆栈并将使其面 向所有不同的平台。此外,本发明的实施例提供了在CPU和GPU之间的共享存储器模型。 代替了共享整个虚拟地址空间,仅仅一部分虚拟地址空间需要被共享。这允许在分离的和 集成的设置中的有效实现。进一步的,语言注释可被用于区分必须被运行在GPU上的代码。 语言支持可被扩展为包括诸如函数指针之类的特征。
[0018] 共享存储器模型的诸实施例提供了新颖的编程式样。特别是,数据结构可以在CPU 和GPU之间无缝共享,并且可以从一端向另一端传递指针而不要求任何格式编组。例如,在 一个实施例中,游戏引擎和包括物理、人工智能(AI)以及渲染。物理和AI代码最好在CPU 上执行,而渲染最好在GPU上执行。诸如场景图片之类的数据结构可能需要在CPU和GPU 之间共享。在一些当前的编程环境中这样的执行模型可能是行不通的,因为场景图片需要 被来来回回地串行化(或格式编组)。然而在共享存储器模型的诸实施例中,场景图片可简 单地位于共享存储器中,并可被CPU和GPU共同访问。
[0019] 在一个实施例中,实现了包括语言和运行时支持的完全编程环境。多个高度并行 的非图形负载可经由端口与该环境对接。该实现可工作在多样性的操作系统上,即,在CPU 和GPU上运行不同操作系统。此外,可在CPU和GPU之间允许用户级通信。这可使得应用 堆栈更为高效,因为可以消除CPU-GPU通信中的0S驱动器堆栈的开销。该编程环境可经由 端口与两个不同的多样性CPU-GPU平台模拟器对接--一个模拟作为分离设备附加到CPU 的GPU,另一个模拟集成CPU-GPU平台。
[0020] 总之,CPU-GPU平台的编程模型的诸实施例可以:
[0021] ?为分离的、集成的、多GPU卡和混合GPU配置提供统一编程模型。
[0022] ?在CPU和GPU之间提供共享存储器语义,允许在CPU和GPU之间自由地传递指针 并共享数据结构。
[0023] ?被实现在具有CPU和GPU上不同的ISA和不同操作系统的多样性的CPU-GPU平 台中。
[0024] ?在CPU和GPU之间使能用户级通信,因此使得应用堆栈更为高效。
[0025] 存储器樽型
[0026] 图1是根据一个实施例的GPU-CPU存储器模型的图示。在一个实施例中,存储器 模型100提供CPU110和GPU120之间的共享虚拟地址窗口 130,诸如以分割全局地址空间 (PGAS)语言。在CPU100和GPU120之间共享的任何数据结构通常必须被编程者分配在该 空间130中。本系统可提供将数据分配在该空间130中的特殊存储器分配(malloc)函数。 静态变量可被注释以类型量词,以使它们被分配在共享窗口 130中。然而,与PGAS语言不 同,在共享窗口中没有亲和力(affinity)的概念。这是因为在共享空间130中的数据随着 它被每个处理器所使用而在CPU和GPU高速缓存之间迁移。也与PGAS实现方式不同,指针 的表示在共享和私有空间中不发生改变。剩余的虚拟地址空间对CPU110和GPU120而言是 私有的。默认地,数据被分配在该空间130中,且对另一侧不可见。该分割地址空间方式可 削减需要保持一致性的存储量,并实现对分离设备的更为高效的实施。
[0027] 该存储器模型的实施例可被扩展到多GPU和混合配置中。特别是,共享虚拟地址 窗口可以跨所有的设备而扩展。被分配在该共享地址窗口 130中的任何数据结构可对所有 代理而言都是可见的,且该空间中的指针可以自由地交换。此外,每个代理具有其自有的私 有存储器。
[0028] 由于多个原因,可使用共享地址空间中的释放一致性。第一,本系统仅仅需要记住 连续释放指针之间的所有写入,而不是单独写入的序列。这更易于在释放点进行批量转换 (诸如,在同一时间对若干页),这在分离配置中很重要。第二,这允许存储器更新被完全保 持在本地直到释放点,这在分离配置中很重要。第三,释放一致性模型可以对CPU-GPU平台 的编程模式是良好的匹配,因为存在自然释放和获取点。例如,从CPU到GPU的调用是一个 这样的点。在调用之前使得任何CPU更新对GPU可见可能不起到任何作用,并且对向CPU 更新如何变得可见强加任何命令都是没有意义的,只要它们都在GPU开始执行之前是可见 的既可。进一步的,所提出的C/C++存储器模型可被容易地映射到共享存储器空间。通常, 非竞争程序可能不受共享存储器空间的弱连续性模型的影响。该实现方式可能不需要被限 制在为竞争程序提供更强的保证。然而,不同的实施例可选择为共享空间提供不同的连续 性模型。
[0029] 图2是用于增加了所有权权限的共享存储器模型的一个实施例的流程图。顺序 200可被实现在固件、软件或硬件中。软件实施例可被存储在诸如光盘、磁盘或半导体存储 器之类的计算机可读介质上。特别是,可向共享存储器模型的诸实施例添加所有权权限以 实现进一步的一致性优化。在共享虚拟地址窗口中,CPU或GPU可指定其拥有特定的地址 块(框210)。如果在共享窗口中的地址范围是由CPU所拥有的(框220),那么CPU知道 无法访问那些地址并因此不需要维持那些地址与GPU的一致性(框230)。例如,这可 以避免向GPU发送任何监听或其他一致性信息。对于GPU拥有的地址也一样。如果GPU访 问CPU拥有的地址,那么该地址变为非拥有的(对于GPU拥有的地址存在对称的行为)。或 者,由GPU (CPU)对CPU (GPU)拥有的地址的访问可以触发错误情况。
[0030] 本发明的诸实施例可提供这些所有权权限以利用公共CPU-GPU使用模型。例如, CPU首先访问一些数据(诸如,初始化数据结构),并且随后将其转交给GPU(诸如,以数据 并行方式在数据结构上进行计算),并随后(PU分析计算结构,等等。所有权权限允许应用 通知系统该临时局部性,并优化一致性实施方式。注意到,这些所有权权限是优化提示,并 且本系统可以合法地忽略这些提示。
[0031] 私有化和全局化
[0032] 在一个实施例中,共享数据可通过从共享空间复制到私有空间而被私有化。不含 指针数据结构可简单地通过复制存储器内容而被私有化。当复制含指针数据结构时,指向 共享数据的指针必须被转换为指向私有数据的指针。
[0033] 私有数据可以通过从私有空间复制到共享空间并对其他计算可见而被全局化。不 含指针数据结构可简单地通过复制存储器内容而被全局化。当复制含指针数据结构时,指 向私有数据的指针必须被转换为指向共享数据的指针(私有化示例的相反示例)。
[0034] 例如,在一个实施例中,考虑在私有和共享空间中的节点链表。对于私有链表的类 型定义是标准的:
[0035]

【权利要求】
1. 一种异构CPU和GPU系统平台,包括: 中央处理器CPU和图形处理器GPU的组合,所述CPU包括第一高速缓存,所述GPU包括 第二高速缓存,在CPU和GPU之间提供高速缓存一致性; 共享物理存储器,可由CPU和GPU访问,所述共享物理存储器将虚拟存储器空间映射为 是对CPU和GPU都可访问的; 其中所述共享物理存储器存储数据结构; 其中所述CPU将指向所述数据结构的指针传递到所述GPU ; 其中所述GPU在所述数据结构上执行计算以获得一结果;以及 其中所述CPU读取所述计算的所述结果。
2. 如权利要求1所述的系统,其特征在于,还包括: 所述数据结构是包括指针的数据结构,并且其中CPU和GPU将所述包括指针的数据结 构在CPU的高速缓存和GPU的高速缓存之间迁移。
3. 如权利要求1所述的系统,其特征在于,CPU将指针定义为位于所述虚拟存储器空间 中。
4. 如权利要求3所述的系统,其特征在于,通过将数据结构复制到从共享空间复制到 所述共享物理存储器以及将数据结构从所述共享物理存储器复制出来,CPU和GPU将所述 数据结构在CPU的高速缓存和GPU的高速缓存之间迁移。
5. 如权利要求1所述的系统,其特征在于,所述GPU访问指针参考而不需要任何数据格 式编组。
6. 如权利要求1所述的系统,其特征在于,所述数据结构是场景图片,并且所述GPU基 于所述指针而访问所述场景图片。
7. 如权利要求1所述的系统,其特征在于,所述GPU进一步将所述数据结构写回共享物 理存储器空间,并且所述CPU进一步从共享物理存储器空间读取所述数据结构。
8. 如权利要求7所述的系统,其特征在于,所述CPU通过参考与所述CPU相关联的页表 或翻译后备缓冲器,而将所述数据结构分配入所述虚拟存储器空间中的一地址。
9. 如权利要求8所述的系统,其特征在于,所述GPU通过参考与所述GPU相关联的页表 或翻译后备缓冲器,而访问所述地址处的所述数据结构。
10. 如权利要求1所述的系统,其特征在于: 所述CPU进一步从与所述CPU的页表中的虚拟存储器地址相关联的第一物理存储器地 址中读取所述数据结构;以及 所述GPU进一步从与所述GPU的页表中的虚拟存储器地址相关联的第二物理存储器地 址中读取所述数据结构。
11. 如权利要求10所述的系统,其特征在于: 所述第一物理地址空间对所述GPU是不可访问的;以及 所述第二物理地址空间对所述CPU是不可访问的。
12. 如权利要求11所述的系统,其特征在于,所述CPU将所述第一地址空间与所述共享 物理存储器的至少一部分中的内容相同步。
13. 如权利要求12所述的系统,其特征在于,当第一进程到达第一释放点时,所述CPU 同步所述第一地址空间。
14. 权利要求13所述的系统,其特征在于,所述第一释放点包括释放互斥体或命中屏 障体。
15. 权利要求1所述的系统,其特征在于,所述CPU使用指示所述虚拟存储器地址的标 记来访问所述数据结构,并将所述标记复制到所述共享物理存储器。
【文档编号】G06F12/10GK104298621SQ201410562398
【公开日】2015年1月21日 申请日期:2009年11月5日 优先权日:2008年11月13日
【发明者】H·陈, Y·高, 周小成, S·闫, P·张, J·方, A·孟德尔森, B·萨哈, 莫罕·拉贾戈帕兰 申请人:英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1