实现具有在处理设备之间的共享虚拟存储器的系统的tlb同步的制作方法

文档序号:6484568阅读:116来源:国知局
实现具有在处理设备之间的共享虚拟存储器的系统的tlb同步的制作方法
【专利摘要】在图形处理单元中出现的页面错误可通过在中央处理单元上运行的操作系统来处理。在一些实施例中,这意味着未钉扎存储器可用于图形处理单元。在一些情况下,在图形处理单元中使用未钉扎存储器可扩展图形处理单元的能力。
【专利说明】实现具有在处理设备之间的共享虚拟存储器的系统的TLB同步
【背景技术】
[0001]这一般涉及在中央处理单元(CPU)和其它处理设备(诸如图形处理单元)之间的转换后备缓冲器的同步。
[0002]转换后备缓冲器(TLB)是存储器管理单元(MMU)用于提高虚拟地址转换速度的中央处理单元高速缓存。当MMU应当将虚拟地址转换成物理地址时,它首先查看TLB。如果请求的地址存在于TLB中,则检索的物理地址可被用于访问存储器。这被称为TLB命中。如果请求的地址不在TLB中,则它是未命中,且转换通过在被称为页面遍历的进程中查找页表而继续进行。页面遍历是昂贵的进程,因为它涉及读取多个存储器位置的内容且将其用于计算物理地址。在通过页面遍历确定物理地址之后,虚拟地址到物理地址的映射被输入到TLB中。
[0003]在常规系统中,由中央处理单元和图形处理单元使用分开的页表。操作系统管理由中央处理单元使用的主页表,且图形处理单元驱动器管理由图形处理单元使用的页表。图形处理单元驱动器将来自用户空间的数据拷贝到驱动器存储器中以供在图形处理单元上处理。当指示器被偏移量代替时,复杂数据结构被重装成阵列。
[0004]在数据被表示为阵列的情况下,与拷贝和重装相关的开销限制了图形处理单元应用。因此,在一些应用中图形处理单元可能具有有限值,包括涉及诸如数据库之类的复杂数据结构的那些。
【专利附图】

【附图说明】
[0005]图1是本发明的一个实施例的示意描绘;
[0006]图2是根据本发明的一个实施例的页面错误处理的流程图;以及
[0007]图3是一个实施例的系统描述。
【具体实施方式】
[0008]在一些实施例中,图形处理应用可使用诸如数据库之类的复杂数据结构,当这些复杂数据结构共享由平台操作系统所管理的页表时它们使用在相同平台上的一个或多个中央处理单元和图形处理单元之间的共享虚拟存储器模型。使用共享虚拟存储器可降低与将来自用户空间的数据拷贝和重装到图形处理单元上的驱动器存储器中相关的开销。
[0009]但是,在主机中央处理单元上运行的操作系统可能不知道图形处理单元正在共享虚拟存储器,因此主机操作系统可能不提供刷新转换后备缓冲器(TLB)。在一些实施例中,主机中央处理单元上的共享虚拟存储器管理器为图形处理单元处理刷新TLB的任务。
[0010]主机操作系统可管理多核系统中的多个处理器的页表条目。因此,当操作系统改变进程页表条目时,它刷新用于在多核系统中的所有受影响的中央处理单元的转换后备缓冲器。该操作系统针对每个页表跟踪哪些核此时正在使用该页表,并且刷新使用页表的那些核的转换后备缓冲器。[0011]尽管在本申请中使用术语“图形处理单元”,但是应当理解图形处理单元可以是或者可以不是单独的集成电路。本发明适用于图形处理单元和中央处理单元被集成到一个集成电路中的情形。
[0012]参见图1,在系统10中,主机/中央处理单元16与图形处理单元18通信。主机中央处理单元16包括用户应用20,用户应用20向扩展线程库(XTL)34提供控制信息。库34是用于在图形处理单元18上创建和管理用户线程的pthread (p线程)扩展。库34将例外和控制信息传达给图形处理单元驱动器26。库34也与主机操作系统24通信。
[0013]如图1所示,用户层12包括库34和用户应用20,而内核层14包括主机操作系统24和图形处理单元驱动器26。图形处理单元驱动器26是用于图形处理单元的驱动器,即使该驱动器驻留在中央处理单元16中。
[0014]图形处理单元18在用户层12中包括gthread (g线程)28,gthread28向操作系统30发送控制和例外消息以及接收控制和例外消息。gthread是在图形处理单元上运行的用户代码,其与在中央处理单元上运行的母线程共享虚拟存储器。操作系统30可以是在图形处理单元上运行的相对小的操作系统,其负责图形处理单元例外。作为一个示例,相对于主机操作系统24,它是小的。
[0015]用户应用20包括在中央处理单元16上运行的任何用户进程。用户应用20在图形处理单元18上产生线程。
[0016]在图形处理单元上创建的gthread或工作者线程与母线程共享虚拟存储器。它与常规线程在以下方面具有相同表现:可使用所有标准的进程间同步机制,诸如互斥(Mutex)和信号量(semaphore)。同步信号29可经由GPU驱动器26和操作系统30在库34和gthread28之间传递。
[0017]在多核环境中,主机操作系统24上的共享虚拟存储器(SVM)管理器32登记主机上的所有SVM启用设备、图形处理单元或其它中央处理单元。管理器32将来自操作系统存储器管理的相应调回(例如,转换后备缓冲器(TLB)刷新)连接到SVM启用设备的驱动器。
[0018]在一些实施例中,母线程和图形处理单元工作者线程可共享未钉扎(unpinned)虚拟存储器。在一些情况下,当主机改变进程页表条目时,主机操作系统通知多核系统中的所有中央处理单元核。但是图形处理单元也可使用页表。利用常规系统,图形处理单元没有获得页表条目改变的通知,因为主机操作系统不知道图形处理单元正在使用页表。因此,主机操作系统不能刷新图形处理单元的转换后备缓冲器。
[0019]相反,由共享虚拟存储器管理器32调用的操作系统服务保持跟踪使用受监控页表的所有共享虚拟存储器设备。当发生页表改变时,共享虚拟存储器管理器通知每个当前页表用户,如图1中箭头标记的TLB管理所指示。
[0020]参见图2,页面错误处理算法可在硬件、软件和/或固件中实现。在软件实施例中,算法可被实现为存储在诸如光、半导体或磁存储器之类的非瞬态计算机可读介质上的计算机可执行指令。在图2中,用于主机操作系统24、中央处理单元16的驱动器26以及图形处理单元18中的操作系统30的流程被示为之间具有用大体水平的箭头指示的交互的并行垂
直流程。
[0021]参见图2,在框42处,主机操作系统24调用转换后备缓冲器(TLB)刷新例程。该例程根据需要刷新其它中央处理单元核的TLB。然后主机操作系统一个接一个地激活对共享虚拟存储器设备的所有驱动器的调回。例如,flush_tlb (刷新_tlb)钩从主机操作系统24发送至驱动器26以激活用于图形处理单元的调回。在菱形框44处,驱动器检查是否有任何活动任务具有与被刷新的存储器管理器相同的存储器管理器。如果否,那么它仅仅返回flush_tlb钩。如果是,那么它将消息“gpu_tlb_fluShO”发送至图形处理单元操作系统30。该消息48包括用于使页面无效的操作码以及包括控制寄存器3 (CR3)和虚拟地址的数据。控制寄存器3是X86体系结构专用的且将虚拟地址转换成物理地址。但是,在其它体系结构中可使用相应的操作符。
[0022]如框50所指示,操作系统30进行图形处理单元刷新,并且将确认(ACK)提供回驱动器26。驱动器26在椭圆框40处等待该确认并在接收到确认之后返回正常操作。
[0023]结果,对于组合的中央处理单元和图形处理单元共享的虚拟存储器(具有由主机操作系统管理的共同页表),可通过现有操作系统虚拟存储器机制的扩展保持TLB —致性。在一些实施例中,这种解决方案不需要页面钉扎(page pinning)。
[0024]尽管上述实施例涉及图形处理单元,但是相同的技术可用于未被通常管理TLB刷新的主机中央处理单元识别的其它处理单元。
[0025]如图3所示的计算机系统130,可以包括通过总线104耦合到芯片组核心逻辑110的硬盘驱动器134和可移除介质136。键盘和鼠标120,或其他常规组件,可以通过总线108耦合到芯片组核心逻辑。在一个实施例中,核心逻辑可以通过总线105耦合到图形处理器112,以及耦合到中央处理器100。在多核实施例中,可使用多个中央处理单元。具有一个核的操作系统可被视为主机操作系统。
[0026]图形处理器112也可以通过总线106耦合到帧缓冲器114。帧缓冲器114可以通过总线107耦合到显示屏幕118。在一个实施例中,图形处理器112可以是使用单指令多数据(SMD)体系结构的多线程、多核并行处理器。
[0027]在软件实现的情况下,相关的代码可以存储在任何合适的半导体、磁性或光存储器中,包括主存储器132 (如在139处所指示)或图形处理器内的任何可用存储器。因此,在一个实施例中,用于执行图2的序列的代码可被存储在诸如存储器132、和/或图形处理器112、和/或中央处理器100之类的非瞬态机器或计算机可读介质中,且在一个实施例中,代码可由处理器100或图形处理器112执行。
[0028]图2是流程图。在某些实施例中,此流程图中所描绘的序列可以以硬件、软件或固件来实现。在软件实施例中,诸如半导体存储器、磁存储器或光存储器之类的非瞬态计算机可读介质可以被用来存储指令,并可以由处理器执行以实现如图2所示的序列。
[0029]此处所描述的图形处理技术可以以各种硬件体系结构来实现。例如,图形功能可以集成在芯片组内。可另选地,可以使用独立的图形处理器。作为再一个实施例,图形功能可以通过通用处理器(包括多核处理器)来实现。
[0030]在本说明书通篇中对“一个实施例”或“一实施例”的引用意味着结合该实施例描述的特定特征、结构或特性包括在本发明包含的至少一个实现中。因此,短语“一个实施例”或“在一实施例中”的出现不一定指代同一实施例。此外,还可以以除所示出的特定实施例以外的其他合适的形式构成特定特征、结构或特性,所有这样的形式都可以涵盖在本申请的权利要求书内。
[0031]尽管是参考数量有限的实施例来描述本发明的,但是,本领域技术人员将从其中理解很多修改和变体。所附权利要求书涵盖落在本发明的真正的精神和范围内的所有这样的修改和变体。
【权利要求】
1.一种方法,包括: 跟踪页表中条目的变化; 确定除中央处理单元以外的设备何时使用所述页表;以及 当页表条目变化时通知所述设备。
2.如权利要求1所述的方法,其特征在于,包括在所述第一和第二处理单元之间共享所述页表。
3.如权利要求2所述的方法,其特征在于,包括使用所述第一处理单元的操作系统来管理所述基础页表。
4.如权利要求1所述的方法,其特征在于,包括使用操作系统来跟踪页表条目的所述变化以及当页表条目变化时通知所述设备。
5.如权利要求1所述的方法,其特征在于,确定设备何时使用所述页表包括确定图形处理单元何时使用所述页表。
6.如权利要求1所述的方法,其特征在于,包括使用共享虚拟存储器管理器通知所述设备。
7.一种存储指令的非瞬态计算机可读介质,所述指令使第一处理器能: 跟踪页表中条目的变化; 确定除中央处理单元以外的设备何时使用所述页表;以及 当页表条目变化时通知所述设备。
8.如权利要求7所述的介质,其特征在于,还存储用于在所述第一和第二处理器之间共享所述页表的指令。
9.如权利要求8所述的介质,其特征在于,所述共享虚拟存储器用于跟踪页表变化以及用于向图形处理单元报告这些变化。
10.如权利要求7所述的介质,其特征在于,包括使用共享虚拟存储器管理器通知所述设备。
11.一种装置,包括: 处理器,用于跟踪页表条目的变化,确定除中央处理单元以外的设备何时使用所述页表,以及当页表条目变化时通知所述设备;以及 存储器,耦合至所述处理器。
12.如权利要求11所述的装置,其特征在于,所述处理器是中央处理单元。
13.如权利要求11所述的装置,其特征在于,所述设备是图形处理单元。
14.如权利要求11所述的装置,其特征在于,所述设备使用未钉扎的共享虚拟存储器。
15.如权利要求14所述的装置,其特征在于,所述处理器和所述设备共享所述未钉扎的虚拟存储器。
16.如权利要求11所述的装置,其特征在于,所述处理器共享在所述处理器和所述设备之间的所述页表。
17.如权利要求12所述的装置,其特征在于,所述处理器用于管理所述共享的页表,且操作系统用于跟踪所述变化以及用于当页表条目变化时通知所述设备。
18.如权利要求11所述的装置,其特征在于,包括用于通知所述设备的共享虚拟存储器管理器。
【文档编号】G06F13/14GK103443760SQ201180069206
【公开日】2013年12月11日 申请日期:2011年12月29日 优先权日:2011年3月11日
【发明者】B·靳兹伯格, E·纳坦森, I·殴萨池依, R·罗恩, E·威斯曼, Y·扎克, R·L·法瑞尔 申请人:英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1