在软件分布式共享存储器系统中记录脏信息的制作方法

文档序号:6352329阅读:167来源:国知局

专利名称::在软件分布式共享存储器系统中记录脏信息的制作方法在软件分布式共享存储器系统中记录脏信息
背景技术
:这通常涉及软件分布式共享存储器系统。在分布式共享存储器(DSM)系统中,在群集中的每个节点除了访问每个节点的非共享私有存储器之外,还访问共享存储器。软件DSM(SDSM)可以在操作系统中被实现或被实现为编程库。如果在编程库中被实现,则其对于开发者而言是可访问的,但如果其在操作系统中被实现,则其对于开发者而言是不可访问的。—些SDSM系统依赖于针对多个事物的页面错误,包括脏(dirty)记录。脏记录是用于精确地获知哪个数据已经被修改并且因此自上次数据同步以来是“脏的”的机制。脏记录可能在减少必须被传输的相干数据的量的方面是有用的。SDSM系统保护存储器免于被写入,并且因此增强到其中记录了精确的脏信息的处理机(handler)中的错误的后续写入。然而,页面错误以及存储器保护是耗时的操作,其可能导致较低性能的脏记录。页面错误可能占据共享存储器运行时间开销的相对大的比率。图I是用于本发明的一个实施例的流程图;以及图2是用于本发明的一个实施例的示意性描绘。具体实施例方式在一些实施例中,已经在包括由Intel公司(SantaClara,California)所制造的X86处理器的一些处理器上可用的现有的页表项脏位记录系统可以在软件分布式共享存储器中被用作脏记录系统。因为该记录系统已经存在,所以在一些实施例中其可以被用于具有相对低开销的脏记录。此外,在一些实施例中,其可以改善具有可访问的X86处理器的共享存储器系统中的性能。因此,在一些实施例中,可编程性优点可以在不损害性能的情况下被实现。在一个实施例中,共享存储器系统可以在X86处理器和图形处理单元之间被实现。然而,本发明不限于这种特定实施例。在X86处理器中,在针对页面存储器中的每个页面的页表项中存在脏位簿记(bookkeeping)系统。如果相关页面首次被修改,则X86处理器自动设置页表项中的脏位。对该位的清除不由处理器处理,而是替代的是系统软件的职责。根据本发明的一些实施例,与在脏位簿记的传统应用中不同地处理位清除。页表脏位记录机制可以被用来给系统软件并且尤其是操作系统的存储器管理模块提供用于识别哪个页面更适合于被页出(pageout)以及在页出页面时是否有必要回写(writeback)的能力。因为该系统是用硬件来实现的,所以其可以是比依赖页面错误更有效的脏记录机制。在一个实施例中,查询页表项脏位以获知页面是否被修改。页表项脏位可以被清除以指示该页面已经被跨越SDSM中的节点而同步。例如,一个节点可以是X86处理器,而另一个节点可以是图形处理器。然后,在一些实施例中,页面错误不需要被用于脏记录。一个问题出现了,S卩,在运行时间,一个以上的代理将出于不同原因而操纵该页表项脏位。操作系统存储器模块查询关于其页面替换决定的页表项脏位并清除它,例如,关于从第二储存器到存储器的新加载。通过为每个虚拟共享的存储器页面提供两个附加位,可以使用页表项脏位以用于针对SDSM系统的脏记录的该附加功能,而不干扰在该页表项中使用的脏位的操作。在一个实施例中,为每个虚拟系统存储器页面提供两个附加位。一个附加位是“SDSM脏”,而另一个是“操作系统(OS)脏”。连同硬件支持的页表项脏位(“PTE脏”)一起,在系统中每个虚拟共享存储器页面存在三个位。当然,尽管当前描述讨论设置位,但可以通过设置标记完成相同的事情。因此,本文中的术语“设置位”还包括设置标记。本发明的实施例提供了用于组合的通用和图形处理器平台的编程模块,包括集成或离散设备、多个图形处理卡、以及混合图形处理系统。另外,本发明的实施例提供了通用处理器和图形处理器之间的共享存储器模型。代替共享整个虚拟地址空间,在一个实施例中,仅可以共享虚拟地址空间的一部分。数据结构可以在处理器之间共享,并且指针可以从一方传递到另一方,而不需要任何编组(即,前后串行化)。例如,在一个实施例中,游戏引擎可以包括物理过程(physics)、人工智能(Al)和渲染。物理过程和Al代码可以在通用处理器上被最佳地执行,而渲染可以在图形处理器上被最佳地执行。数据结构可能需要在处理器之间共享,诸如场景图。然而,在共享存储器模型的实施例中,场景图可以简单地驻留在共享存储器中并且由两个处理器来访问。在一个实施例中,实现了包括语言和运行时间支持的整个编程环境。多个高度并行的非图形工作负荷可以被端接到该环境。该实现方式可以工作在异构操作系统(即,具有运行在每个处理器上的不同的操作系统)上。此外,在处理器之间可以允许用户级通信。在一个实施例中,存储器模型诸如以分割全局地址空间(PGAS)语言提供处理器之间的共享虚拟地址的窗口。通常可以在该空间中由编程者分配在处理器之间共享的任何数据结构。该系统可以提供在该空间中分配数据的特殊分配内存功能。可以用类型量词来注释静态变量,以使它们在共享窗口中被分配。然而,不像PGAS语言那样,在共享窗口中不存在相似性的概念。这是因为共享空间中的数据在其变得由每个处理器使用时在处理器高速缓冲存储器之间迁移。而且不像PGAS实现方式那样,指针的表示不在共享和私有空间之间改变。剩余的虚拟地址空间对于处理器而言是私有的。默认情况下,数据得以在该空间130中被分配,并且对于另一方而言不是可见的。该分割地址空间方法可以对需要被保持相干的存储器的量进行削减,并且使得能够实现用于离散设备的更有效的实现方式。存储器模型的实施例可以被扩展到多图形处理和混合配置。尤其是,共享虚拟地址的窗口可以被跨越所有设备扩展。在该共享地址窗口中分配的任何数据结构对于所有代理而言可以是可见的,并且该空间中的指针可以被自由交换。另外,每个代理具有其自己的私有存储器。可以采用所有权来扩大共享存储器模型的实施例,以使得能够实现进一步的相干优化。在共享的虚拟地址窗口内,任一处理器可以指定其拥有特定的地址块。如果共享窗口中的地址范围由通用处理器拥有,则通用处理器获知图形处理器不能访问那些地址,并因此不需要维持那些地址与图形处理器的相干性。图形处理器所拥有的地址同样如此。在一个实施例中,共享数据可以通过从共享空间复制到私有空间而被私有化。包含数据结构的非指针可以简单地通过复制存储器内容而被私有化。在复制包含数据结构的指针的同时,到共享数据中的指针必须被转换成到私有数据中的指针。私有数据可以通过从私有空间复制到共享空间而被全局化,并使其对于其他计算而言可见。包含数据结构的非指针可以简单地通过复制存储器内容而被全局化。在复制包含数据结构的指针的同时,到私有数据中的指针必须被转换为到共享数据中的指针(私有化示例的相反)。在一个实施例中,编译器生成两个二进制一一个用于在每个处理器上执行。由于两个操作系统可能具有不同的可执行格式,所以生成两个不同的可执行(executable)。图形二进制包含将在图形处理器上执行的代码,而通用二进制包含通用处理器功能。运行时间库具有用于每个处理器的组件,其与用于每个处理器的应用二进制链接,以创建用于每个处理器的可执行。当通用二进制开始执行时,其调用加载图形可执行的运行时间功能。两个二进制创建被用于处理器间通信的守护线程。在一个实施例中,每个处理器可以具有不同的页表和不同的虚拟到物理存储器转换。因此,为了同步处理器之间(例如在释放点处)的虚拟地址V的内容,不同物理地址的内容被同步。然而,通用处理器不可以访问图形页表,并且图形处理器不可以访问通用页表。在初始化期间,总线孔径空间的一部分可以被映射到应用的用户空间中,并且被利用任务队列、消息队列和复制缓冲器来实例化。例如,当需要从通用处理器复制页面到图形处理器时,运行时间将页面复制到总线孔径复制缓冲器中,并用虚拟地址和处理标识符来标记该缓冲器。在图形侧,守护线程通过使用虚拟地址标签来将缓冲器的内容复制到其地址空间中。因此,可以按照两步骤处理来执行该复制一通用处理器从其地址空间复制到两个处理器均可访问的公用缓冲器(总线孔径)中,而图形处理器从公用缓冲器获得该页面到其地址空间中。由于该孔径是被钉住的存储器,所以如果处理使上下文(context)切断,该孔径的内容并不丢失。这允许两个处理器异步地执行,这可能是关键的,因为这两个处理器可能具有不同的操作系统,并且因此上下文切换不可以被同步。此外,孔径空间可以被映射到应用的用户空间中,因此使得能够实现用户级处理器间通信。这使得应用程序栈比经历OS驱动器栈大大地更加有效。当图形处理器执行采集操作时,对应页面可以被设置成在该图形处理器上无访问。在随后的读取操作处,如果该页面自上次图形处理器采集以来已经被通用处理器更新和释放,则图形处理器上的页面错误处理机将页面从通用处理器进行复制。目录和私有版本号可以被用来对此进行确定。页面然后被设置成只读。在随后的写操作处,页面错误处理机创建页面的备份副本,将页面标记为读一写,并且增加该页面的本地版本号。在释放点处,用该页面的备份副本来执行差分(diff),并且将改变发送到标识位置(homelocation),同时增加目录版本号。差分操作计算两个页面(即,该页面及其备份)之间的存储器位置方面的差,以找出已经做出了的改变。通用处理器操作以对称方式来完成。因此,在采集和释放点之间,处理器在它们的本地存储器和高速缓冲存储器之外进行操作,并且仅在明确的同步点处与彼此通信。在启动时,该实现方式决定将在处理器之间共享的地址范围,并且确保该地址范围总是保持被映射(例如,使用mmap或Linux)。该地址范围可以动态增长,并且不必须是邻近的,虽然在64位地址空间中,运行时间系统可以保留在前面的连续块。参照图1,算法开始于最初是清洁的页面,这意味着所有三个位(SDSMD,、osD和PteD)是零,如图I中的状态10中所指示的那样。这里,可以存在SDSM查询、操作系统(OS)查询、处理器读取、SDSM清除和OS清除,其不改变该三个位中的任意一个,并且不表示任何状态改变。当PTE脏位从零转变到一时,X86处理器写12自动地设置PTE脏位(pteD),如状态14中所示的那样。当操作系统清除该PTE脏位时,其首先将该PTE脏位备份到SDSM脏位(SDSMD)中,并且然后实际清除PTE脏位和操作系统脏位(osD)。这在操作42处被示出,其是操作系统清除。在这种情况下,该PTE脏位变为零,该操作系统脏位保持为零,以及SDSM脏位变为一,从而为SDSM系统保持该脏位状态。当操作系统查询该脏位时,其读取PTE脏位和操作系统脏位的逻辑或(0R)。当SDSM运行时间清除该脏位时,其首先将该PTE脏位备份到操作系统脏位中,并且然后实际清除PTE脏位和SDSM脏位,如由操作16和状态18所指示的那样。·当SDSM运行时间查询该脏位时,其读取PTE脏位和SDSM脏位的逻辑或(0R)。附加脏位备份保证当一个代理正更新脏位时,该脏信息对于其他代理而言不丢失。例如,即使SDSM系统已经清除了PTE脏位和SDSM脏位,操作系统实际上使该脏信息被保持在其操作系统脏位中。使用逻辑或(OR)操作保证了任何代理可以从其自己的视角看到完整的脏信息。例如,即使SDSM系统已经清除了该PTE脏位和SDSM脏位,操作系统仍可以看到它采用PTE脏位和操作系统脏位的逻辑或(OR)应该看到的东西。从状态18,处理器写20使用相同的技术转变到状态22。SDSM清除24转变到状态18。从状态22,操作系统清除26转变到状态28。从状态28,处理器写34转变到状态36。操作系统清除38转变回状态28。从状态36,SDSM清除40转变到状态18。从状态18,操作系统清除32转变到状态10。从状态28,SDSM清除30也转变回状态10。除了维持脏位外,操作系统可以具有系统调用以将查询/清除服务暴露给SDSM运行时间。查询系统调用取得虚拟共享存储器地址作为输入,并返回布尔值以指示该页面是否是脏的。清除系统调用取得虚拟共享存储器地址作为其输入。SDSM运行时间调用查询系统调用以获知自上次同步且仅在脏页面的情况下的同步以来页面是否已经被修改了。SDSM运行时间在同步之后调用清除系统调用。在一些实施例中,系统调用可以取得地址范围作为输入以减少系统调用开销。在这种情况下,查询系统调用可以返回位图以从SDSM运行时间的视点来指示地址范围中的那些页面是脏的。在一个实施例中,附加位可以被存储在与用于存储器页面的核心数据结构相关联的单独的表格中。在包含页表项中的未使用的位的X86处理器体系结构的情况下,这两个附加位可以是两个未使用的位。在多处理器/多核系统中,脏位清除操作还需要适当地进行翻译后援缓冲器(TLB)失效和强行中止。作为替代实施例,因为操作系统仅清除存储器分页操作上的脏位,所以还可行的是将SDSM虚拟共享存储器页面锁定为不可分页。这使SDSM运行时间成为可清除脏位的唯--个代理。在SDSM中的节点之间的数据同步之后,相关页面被改变成清洁状态。然后如果页面被修改,则其可以被标记为脏的。然后,对于下一次数据同步,SDSM运行时间仅查询每个页面的脏位,并仅同步具有设置的脏位的页面。在此之后,SDSM运行时间简单地清除脏的页面的页表项脏位。图2中所示的计算机系统130可以包括硬盘驱动器134和可移除介质136,其通过总线104耦合到芯片组核心逻辑110。键盘和鼠标120或其他传统组件可以被经由总线108耦合到芯片组核心逻辑。在一个实施例中,核心逻辑可以经由总线105耦合到图形处理器112,以及主或通用处理器100。通用处理器100可以是具有页表项脏位记录系统的X86处理器或任何处理器。图形处理器112还可以通过总线106耦合到帧缓冲器114。帧缓冲器114可以通过总线107耦合到显示屏118。在一个实施例中,图形处理器112可以是使用单指令多数据(SMD)体系结构的多线程、多核并行处理器。本文中描述的图形处理技术可以以各种硬件体系结构来实现。例如,图形功能可以被集成在芯片组内。替代地,可以使用离散图形处理器。作为又一个实施例,图形功能可以通过包括多核处理器的通用处理器来实现。遍及本说明书中对“一个实施例”或“实施例”的提及意思是结合该实施例所描述的特定特征、结构或特性被包括在本发明中包含的至少一个实现方式中。因此,用语“一个实施例”或“在实施例中”的出现不必然指相同实施例。此外,特定特征、结构或特性可以按照除了所说明的特定实施例外的其他合适的形式来设立,并且所有这些形式可以被包含在本申请的权利要求内。虽然已经针对有限数量的实施例描述了本发明,但是本领域的技术人员将理解由此而来的许多修改和变化。所意图的是,所附的权利要求覆盖所有这些修改和变化,如同落入该本发明的真实精神和范围之内。权利要求1.一种方法,包括使用页表项脏位记录系统,以用于软件分布式共享存储器系统中的脏记录。2.根据权利要求I所述的方法,包括提供基于硬件的脏记录。3.根据权利要求2所述的方法,包括提供用于所述脏记录的两个附加位。4.根据权利要求3所述的方法,包括提供第一附加位来明了数据对于该软件分布式共享存储器系统而言是否是脏的。5.根据权利要求4所述的方法,包括提供第二附加位来明了数据对于操作系统而言是否是脏的。6.根据权利要求I所述的方法,包括实现软件分布式共享存储器系统,其中一个节点是图形处理器并且另一个节点是通用处理器。7.根据权利要求6所述的方法,包括使用具有页表项脏位记录系统的通用处理器。8.根据权利要求5所述的方法,包括当页表项脏位被清除时,保持用于该软件分布式共享存储器系统的附加位的状态。9.根据权利要求8所述的方法,包括当页表项脏位被清除时,保持用于操作系统的附加位的状态。10.根据权利要求5所述的方法,包括使用两个位的逻辑或来查询脏位。11.一种计算机可读介质,其存储由处理器执行的指令来使用页表项脏位,以用于软件分布式共享存储器系统中的节点中的脏记录。12.根据权利要求11所述的介质,进一步存储用于提供用于脏记录的两个附加位的指令。13.根据权利要求12所述的介质,进一步存储用于提供第一附加位以明了数据对于该软件分布式共享存储器系统而言是否是脏的的指令。14.根据权利要求13所述的介质,进一步存储用于提供第二附加位以明了数据对于操作系统而言是否是脏的的指令。15.根据权利要求11所述的介质,进一步存储用于实现软件分布式共享存储器系统的指令,在该软件分布式共享存储器系统中一个节点是图形处理器并且另一个节点是通用处理器。16.根据权利要求14所述的介质,进一步存储用于当页表项脏位被清除时保持用于该软件分布式共享存储器系统的附加位的状态的指令。17.根据权利要求16所述的介质,进一步存储用于当页表项位被清除时保持用于操作系统的附加位的状态的指令。18.根据权利要求14所述的介质,进一步存储用于使用两个位的逻辑或来查询脏位的指令。19.根据权利要求11所述的介质,进一步存储用于将软件分布式共享存储器系统的虚拟共享存储器页面锁定为不可分页的指令。20.根据权利要求19所述的介质,进一步存储用于在软件分布式共享存储器系统的节点之间的同步之后将页面改变成清洁状态的指令。21.—种系统,包括图形处理器;以及通用处理器,其耦合到所述图形处理器,所述通用处理器和图形处理器被配置为软件分布式共享存储器系统中的节点,所述通用处理器用于使用页表项脏位记录系统,以用于所述软件分布式共享存储器系统中的脏记录。22.根据权利要求21所述的系统,所述通用处理器用于提供用于所述脏记录的两个附加位。23.根据权利要求21所述的系统,所述通用处理器用于提供第一附加位来明了数据对于软件分布式共享存储器系统而言是否是脏的。24.根据权利要求23所述的系统,所述通用处理器用于提供第二附加位来明了数据对于操作系统而言是否是脏的。25.根据权利要求21所述的系统,所述通用处理器用于在页表项脏位被清除时,保持用于该软件分布式共享存储器系统的附加位的状态。26.根据权利要求25所述的系统,所述通用处理器用于在页表项脏位被清除时,保持用于操作系统的附加位的状态。27.根据权利要求25所述的系统,所述通用处理器用于使用两个位的逻辑或来查询脏位。28.根据权利要求21所述的系统,所述通用处理器存储软件分布式共享存储器系统的虚拟共享存储器页面,所述虚拟共享存储器页面被锁定为不可分页。29.根据权利要求28所述的系统,所述通用处理器用于在软件分布式共享存储器系统的节点之间的同步之后将页面改变成清洁状态。全文摘要可以利用页表项脏位系统来针对软件分布式共享存储器系统记录脏信息。在一些实施例中,因为该脏位记录系统已经在某些处理器中可以得到,所以这可以改善性能而基本上不增加开销。通过提供附加位,可以关于现有的页表项脏位的所有其他使用来获得相干性。文档编号G06F17/30GK102971727SQ201080068022公开日2013年3月13日申请日期2010年5月11日优先权日2010年5月11日发明者S.严,Y.高,X.周,H.陈,B.萨哈,S.罗申请人:英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1