首页> 中国专利> 异构计算平台中不同类型处理器间共享的虚拟页面的动态锁定

异构计算平台中不同类型处理器间共享的虚拟页面的动态锁定

摘要

一种可以支持一种或多种技术以允许动态地锁定由非CPU设备(例如图形处理单元,GPU)访问的存储页的计算机系统。非CPU可以支持虚拟到物理地址的映射,并且从而知道未被锁定但可由非CPU访问的存储页。非CPU可以通知或发送该信息至运行时部件(例如与CPU相关的设备驱动器)。在一个实施例中,设备驱动器可以动态地执行可由非CPU访问的所述内存页的锁定。设备驱动器甚至可以解锁非CPU不再访问的内存页。该方法可以允许非CPU不再访问的内存页可被用以分配给其它CPU和/或非CPU。

著录项

  • 公开/公告号CN103988172A

    专利类型发明专利

  • 公开/公告日2014-08-13

    原文格式PDF

  • 申请/专利权人 英特尔公司;

    申请/专利号CN201280031870.4

  • 申请日2012-06-29

  • 分类号G06F9/06;G06F12/08;G06F12/10;

  • 代理机构上海专利商标事务所有限公司;

  • 代理人毛力

  • 地址 美国加利福尼亚州

  • 入库时间 2023-12-17 00:50:37

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2022-06-14

    未缴年费专利权终止 IPC(主分类):G06F 9/06 专利号:ZL2012800318704 申请日:20120629 授权公告日:20180112

    专利权的终止

  • 2018-01-12

    授权

    授权

  • 2014-09-10

    实质审查的生效 IPC(主分类):G06F9/06 申请日:20120629

    实质审查的生效

  • 2014-08-13

    公开

    公开

说明书

发明背景

计算平台可以包括异构处理器,诸如中央处理单元(CPU)和非CPU(例 如,图形处理单元(GPU))。CPU和非CPU都可以访问存储页来执行诸如写和 读之类的功能。目前,CPU和GPU之间共享的页需要被提前静态分配,且这些 物理存储页应该被锁定,以避免在GPU使用它们时在GPU上出现页面错误。

因此,调配(或锁定)给非CPU的存储页是静态地“锁定”。操作系统(OS) 可以从存储页池中删除这些锁定的存储页,以避免其它CPU或非CPU访问这 些被锁定的页面。这种方法可导致计算机平台性能上的非最优化。与该方法相 关的部分挑战有:(1)所有需要锁定给非CPU的存储页必须被事先标识;以及 (2)操作系统会从存储页池中删除锁定页面,以避免当访问的非CPU仍处于运 行时被锁定的页被分配给其它CPU或非CPU。提前确定必须锁定的存储页是一 个非确定性的并且繁琐的过程。例如,如果GPU想要访问极大纹理的某些小部 分,CPU就应该一直锁定全部纹理。另外,从存储页池中删除锁定的存储页可 减少其它CPU和非CPU可用的存储页,从而可能降低计算系统的性能。

附图的简要说明

在此,附图是用于示例的方式而非限制性地描述本发明。为了简单和清楚 地进行说明,在附图中示出的元件不一定按比例绘制。例如,清晰起见,一些 元件的尺寸相对其他元件可能被放大了。而且,在认为适当时,图中重复的附 图标记用于指示相应或相似的元件。

图1示出根据一个实施例的计算机平台100,其可以支持由非CPU访问的 存储页的动态锁定。

图2是根据一个实施例的流程图,示出了由非CPU执行的操作以支持由非 CPU访问的存储页的动态锁定。

图3是根据一个实施例的流程图,示出由CPU执行的操作以支持由非CPU 访问的存储页的动态锁定。

图4是根据一个实施例的框图,其中非CPU以及CPU彼此交互,以支持 由非CPU访问的存储页的动态锁定。

图5示出根据一个实施例的计算机系统,提供支持以共享在计算机平台中 的异构处理器间共享的虚拟存储器中的虚拟功能。

本公开的详细说明

以下的说明描述了动态锁定计算平台中异构处理器间共享虚拟页的技术。 在下面的描述中,为了更透彻地理解本发明,提出了许多具体的细节,如逻辑 实施,资源划分或共享,或复制实施,类型和系统部件之间的相互关系,以及 逻辑划分或集成选择。然而,本领域技术人员应当认识到,可以在没有这些具 体细节的情况下实现本发明。在其它实例中,为了不混淆本发明,控制结构, 门级电路和全软件指令序列没有被详细示出。那些本领域的普通技术人员,使 用所包含的描述,在不需要过度实验的情况下,将能够实现适当的功能。

说明书中引用“一个实施例”、“实施例”、“示例实施例”表示描述的实施例可 以包括该实施例中描述可包括特定特征,结构或特性,但是每个实施例可以不 必包括特定特征、结构或特性,但是每个实施例不一定必须包括所述特定特征、 结构或特性。而且,这些短语不一定指的是同一实施例。此外,无论是否明确 说明,当对与某实施例相关的特定特征、结构或特性进行描述时,应当认为这 是在本领域技术人员的知识范围内,以感知这些特征、结构或特性与其他实施 例相关。

本发明的实施例可以用硬件、固件、软件或它们的任意组合来实现。本发 明的实施例还可以被实现为存储在机器可读介质上的指令,其可以被读出并通 过一个或多个处理器执行。机器可读存储介质可以包括任何用于存储或传输信 息的机器(例如,计算设备)可读形式的机制。

例如,机器可读存储介质可以包括只读存储器(ROM);随机访问存储器 (RAM),磁盘存储介质,光存储介质;闪存设备;信号的电、光形式。此外, 固件、软件、程序和指令在本文中可描述为执行某些动作。但是,应当认识到: 如此描述仅仅是为了方便,而且这些动作实际上是由计算设备、处理器、控制 器和其它设备执行所述固件、软件、程序和指令所得到。

在一个实施例中,计算平台可以支持一种或多种技术以动态地分配或锁定 由非CPU访问的存储页。在一个实施例中,所述非CPU可以支持虚拟到物理 地址的映射,因此可以获知不能被锁定但可以由非CPU访问的存储页。在一个 实施例中,所述非CPU可以通知或发送所述信息到运行时部件(诸如与CPU 相关联的设备驱动器)。在一个实施例中,运行时部件可以动态地对非CPU访 问的所述存储页执行锁定。

在一个实施例中,运行时部件甚至可以解锁可不再被非CPU访问的存储页。 该方法可以允许不再被非CPU访问的存储页可被用以分配给其它的CPU和/或 非CPU。所述方法可以改善计算平台或可包括这种计算平台的计算机系统的性 能。

根据一个实施例,图1示出计算平台100的实施例,可以支持对非CPU访 问的存储页的动态锁定。在一个实施例中,平台100可以包括中央处理单元 (CPU)110、操作系统(OS)112、设备驱动器115、高速缓冲存储器120、存 储器130、存储器管理单元140和非CPU180。在一个实施例中,存储器130 可以支持共享的虚拟存储器,并支持共享的虚拟存储器130,该存储器可以包括 CPU和非CPU私有空间,其可以包括多版本数据的副本。

非CPU180可以访问存储页132和136,并且在没有下面描述实施例的情 况下,OS112会静态地锁定存储页132和136,并删除存储页池中的静态锁定 的存储页132和136。从存储页池中删除的静态锁定的存储页132和136被描绘 为方框137。

但是,在一个实施例中,非CPU180可以支持虚拟到物理地址的转换。其 结果是,非CPU180可以获知非CPU(或GPU)180可以访问的存储页,并确 定是否所述存储页都已经被锁定并对GPU可用。在一个实施例中,非CPU180 可以确定虚拟到物理转换被高速缓存(例如,在翻译后备缓冲器(TLB)中) 的存储页。在一个实施例中,如果在TLB中不存在这样的转换(“TLB未命中”), 非CPU180会尝试使用页面行走(Page Walking)机制来转换地址,并且如果所 述转换失败,则非CPU180可以发送通知至与CPU110相关联的设备驱动器 115,而且所述通知可以包括由非CPU180请求的存储页的标识符。在一个实施 例中,所述标识符可以包括未被锁定的由非CPU180访问的存储页的地址。

在一个实施例中,设备驱动器115可以接收所述通知,并检查锁定到非CPU 180的存储器的总量。在一个实施例中,如果锁定到非CPU180中的存储页的 总量小于一个阈值,则基于收到的所述通知,设备驱动器115可以引起动态锁 定。在一个实施例中,如果锁定到非CPU180的存储页的总量大于所述阈值, 则设备驱动器115可以使其他一些存储页解锁(例如,如果所述存储页最近还 未被非CPU180访问),以释放空间给所清求的页180。在一个实施例中,设备 驱动器115基于被锁定至非CPU180的存储页总数和阈值之间的比较,可以发 送第一和第二请求给OS112以分别锁定或解锁存储页。操作系统112可以基于 接收到的第一和第二请求,分别锁定或解锁存储页。

在一个实施例中,在第一种情况下,设备驱动器115可以接收第一通知并 使得,例如存储页134和136,如上所述被动态地锁定。在一个实施例中,如方 框138所描述的,被动态锁定的页可以被称为DPMP(动态锁定的存储页)134 和DPMP136。在另一种情况下,设备驱动器115可以接收第二通知并检查锁定 至非CPU180存储页的总量,并确定解锁存储页中的某页。例如,如果非CPU 180不再访问存储页136时,设备驱动器115可以使存储页136如上述那样动态 地被解锁。在一个实施例中,在方框139中对被动态地解锁的页面136进行了 描述。

所述方法可以避免提前确定被锁定到非CPU180的存储页的任务。而且, 动态解锁可以提供更多的存储页以分配给其它的CPU和非CPU。

图2中示出了由非CPU180执行以支持动态锁定由非CPU180访问的存储 页的操作实施例。在方框210中,非CPU180可以确定存储器130中未锁定至 非CPU180的存储页。如上所述,非CPU180可以使用TLB中的高速缓存转 换来确定没有进行锁定的存储页的标识。

在方框250中,非CPU180可以发送通知给与CPU110相关联的运行时部 件。在一个实施例中,非CPU180可将通知发送给设备驱动器115。在一个实 施例中,该通知可以包括标识如没有锁定的存储页的地址。

图3示出由CPU侧部件执行的操作实施例,支持由非CPU180访问的存储 页面的动态锁定。在块310,运行时部件(诸如设备驱动器115)可以接收来自 非CPU180的通知。

在方框350,设备驱动器115可以确定已经被锁定到非CPU180的所述存 储页的总量。在方框360,设备驱动器115可以检查锁定到非CPU180的存储 页的总量是否小于分配给非CPU180的限额,并且如果锁定到非CPU180的存 储页的总量页大于配额(或阈值),则控制传递到方框370,如果锁定到非CPU 180的存储页的总量小于配额(或阈值),则控制传递至方框380。

在方框370中,设备驱动器115可以使操作系统112解锁已经锁定的页面 中的一部分。如图1方框139所示,如果锁定到非CPU180中的存储页的总量 大于给非CPU180所分配限额的阈值,则可以解锁之前被锁定的(如方框138 所示)存储页136。

但是,在方框380,设备驱动器115可以使操作系统112动态地锁定解锁 的或可用的存储页中的一部分。如图1中方框139所示,如果锁定到非CPU180 中的存储页的总量大于给非CPU180所分配限额的阈值,则可以解锁之前被锁 定的(如方框138所示)存储页136。

图4的框图示出的框图中,非CPU180和CPU侧的实体(例如,设备驱动 器115)可以彼此交互,以支持动态锁定和解锁分别被非CPU180访问和未访 问的存储页。

在一个实施例中,所述非CPU180可以包括控制逻辑420,翻译后备缓冲 器(TLB)430,以及页面步行器440。在一个实施例中,所述非CPU180可 以进一步包括存储器449,其可以存储元数据445和页表448。在一个实施例 中,元数据445可以包括至页表448的元数据,其可以指示存储页是否被锁定。 在一个实施例中,控制逻辑420可以生成存储器读或写,且控制逻辑420可以 检查入口(431-1,432-1)至(431-N,432-N),以确定对应于虚拟地址431的 物理地址432。如果TLB430中不存在虚拟地址到物理地址的映射,则该特定 的存储页可以不被锁定。如果在TLB440中入口不存在,则TLB可能发生未命 中,并因比使控制逻辑420产生一个页步行请求。

在一个实施例中,响应于接收到的页面步行请求,页面步行器440可以执 行页步行。在一个实施例中,页面步行器440可遍历操作系统的页表以将虚拟 或线性地址映射到物理地址。在一个实施例中,如图2方框210所示,页步行 器440可以查找元数据445,同时执行页步行,以确定存储器130中未被锁定至 非CPU180的页。在一个实施例中,其转换尚未被高速缓存的每个存储页,可 以潜在地首次被非CPU180访问,从而被锁定。在一一个实施例中,如图2中方 框250所示,如果页步行器440可以通知控制逻辑420,如果页面步行器440 确定存储页没有被锁定,并且控制逻辑420可以发送请求(用于锁定)到设备 驱动器115。此外,在一个实施例中,页面步行器440还可以在TLB430中选 择一个入口(431、432的组合),并且所述入口可以被对应于新页的新入口替换。 在一个实施例中,控制逻辑420可以通知设备驱动器115入口被删除。其结果 是,在一个实施例中,设备驱动器115也可以具有对其转换被高速缓存的任意 页的准确记录。

在一个实施例中,设备驱动器115可以包括控制器452,锁定逻辑450和解 锁逻辑455。在一个实施例中,控制器452可以接收来自控制逻辑420的请求(如 图3中方框310所描述的),且对于接收到的每个请求,控制器452可确定(如 图3中方框350所示)已经锁定至非CPU180的存储页的总量,然后检查(如 在方框360示出)存储页的总量是否小于阈值。在一个实施例中,如果已经锁 定至非CPU180的存储页的总量大于所述阈值,则控制器462可将信号发送至 解锁逻辑455。

在一个实施例中,解锁逻辑455可以检查元数据445以确定是否该存储页 在TLB430中具有高速缓存转换。在一个实施例中,解锁逻辑455可以解锁在 TLB430中没有TLB入口的任意存储页。在一个实施例中,元数据445的镜像 副本可以被保持在设备驱动器115中。另外,在一个实施例中,在大多数情况 下,锁定的存储页的总数(PPIN)可以大于在TLB430中具有入口的页的数量 (PTLB)。

在其他实施例中,解锁逻辑455可以选择一组页面,以解锁和删除来自TLB 430的这些页的入口。在一个实施例中,解锁逻辑455可以执行选择性的TLB 刷新操作以解锁该组页面。在其他实施例中,如果超过一定数量的存储页必须 被解锁,则解锁逻辑455还可以执行完整的TLB刷新。

然而在其它实施例中,解锁逻辑455可周期性地刷新TLB430的内容,并 且同时刷新可以被解锁的存储页的内容。在一个实施例中,定期刷新可以允许 设备驱动器115保持最常用的存储页被锁定,同时解锁其它存储页。在一个实 施例中,所述方法可以想设备驱动器115提供关于非CPU180存储页使用情况 的最新信息。在一个实施例中,基于非CPU180访问的实际的页,锁定逻辑450 可以执行期望锁定或者动态锁定。

图5中示例了计算机系统500的实施例,包括支持对非CPU180访问的存 储页的动态锁定的异构处理器。参照图5所示,计算机系统500可以包括通用 处理器(即,CPU)502和非CPU(N-CPU)505,CPU502可以包括单指令多 数据(SIMD)处理器。在一个实施例中,CPU502除了执行各种其它任务以外 可以执行增强操作或存储指令序列,以在计算机可读存储介质525中提供增强 操作。但是,指令序列也可以被存储在存储器520或任何其他合适的存储介质 中。

尽管如图5中描述了单独的NCPU(例如,图形处理单元,GPU)505, 在一些实施例中,作为另一个举例,处理器502可用于执行增强操作。操作计 算机系统500的CPU502可以是耦合到逻辑530的一个或多个处理器核。逻辑 530可耦合到一个或多个I/O设备560,I/O设备560可以提供至计算机系统500 的接口。在一个实施例中,逻辑530例如可以是芯片组逻辑。逻辑530耦合到 存储器520,I/O设备560可以是任意类型的存储器,包括光学、磁或半导体存 储器。图形处理器单元505通过帧缓冲器耦合到显示器540。

在一个实施例中,计算机系统500可以支持一种或多种技术,以允许动态 锁定由非CPU180访问的存储页。在一个实施方案中,所述N-CPU505可以支 持虚拟至物理地址的映射,因此可以获知可不被锁定但可由N-CPU505来访问 的存储页。在一个实施例中,所述N-CPU505可以通知或发送所述信息到运行 时部件,例如与CPU502相关联的设备驱动器506。在一个实施例中,设备驱 动器506可以动态地对由N-CPU505访问的所述存储页执行锁定。

在一个实施例中,设备驱动器506甚至可以解锁N-CPU505不再访问的存 储页。所述方法可以允许N-CPU505不再访问的存储页可用,以分配给其它的 CPU和/或非CPU。在一个实施例中,象征性地示出CPU502内部的设备驱动 器506。然而,设备驱动器506还可以驻留在存储器520或机器可读存储介质 525内。

此处描述的图形处理技术可在各种硬件架构中实现。例如,图形功能可以 集成在芯片组中。或者,可以使用分离的图形处理器。作为又一实施例,可以 由包括多核处理器的通用处理器,或者一组存储在机器可读介质中的软件指令 来实现图形功能。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号