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

文档序号:6534570阅读:215来源:国知局
共享虚拟存储器的制造方法
【专利摘要】在本文公开了在计算设备的中央处理单元(CPU)和图形处理单元(GPU)之间的共享虚拟存储器的方法和系统。该方法包括分配在系统存储器内的表面。CPU虚拟地址空间可被创建,且在CPU页表内表面可映射到CPU虚拟地址空间。该方法还包括创建相当于CPU虚拟地址空间的GPU虚拟地址空间,在GPU页表内将表面映射到GPU虚拟地址空间,以及钉住表面。
【专利说明】共享虚拟存储器

【技术领域】
[0001]本发明通常涉及在计算系统内的中央处理单元(CPU)和图形处理单元(GPU)之间的共享虚拟存储器。更具体地,本发明涉及在CPU和GPU之间共享虚拟存储器。

【背景技术】
[0002]现代I/O设备可包括与很多CPU的计算机处理能力匹敌的计算机处理能力。作为结果,像计算设备的GPU—样,在传统上由CPU执行的计算任务的一部分可被卸载到I/O设备,从而提高了 CPU的效率。

【专利附图】

【附图说明】
[0003]图1是可根据实施例使用的计算设备的方框图;
[0004]图2A和2B是根据实施例的可用于实现共享虚拟存储器的过程的统一存储器架构(UMA)的不意图;
[0005]图3是示出根据实施例的共享虚拟存储器的方法的过程流程图;
[0006]图4是示出根据实施例的用于处理共享虚拟存储器的方法的过程流程图;
[0007]图5是示出根据实施例的存储共享虚拟存储器的代码的有形、非暂时性、计算机可读介质的方框图;
[0008]图6是用于实现共享物理存储器的示例性系统的方框图;以及
[0009]图7是可体现图6的系统的小型设备的示意图。
[0010]相同的数字在全部本公开和附图中使用来标注相似的部件和特征。在100系列中的数字指最初在图1中找到的特征;在200系列中的数字指最初在图2中找到的特征;依此类推。

【具体实施方式】
[0011]当前的操作系统和图形接口将GPU作为I/O设备管理,而不是将GPU作为类似于CPU的处理器管理。通过将GPU作为I/O设备管理,CPU和GPU具有物理存储器,其具有单独的物理地址域和单独的虚拟寻址方案。当将计算任务卸载到GPU时,数据从CPU的物理地址域拷贝到GPU的物理地址域。GPU可重构数据或配置编译器以遍历数据结构。此外,GPU可使用其自己的虚拟寻址方案来访问所拷贝的数据。
[0012]通过将在传统上由计算设备的CPU执行的计算任务的一部分卸载到计算设备的GPU,可提高CPU的效率。为了将任务卸载到GPU,可在CPU的物理存储器到GPU的物理存储器之间传送数据。可使用适合于CPU的技术(例如树和链表)构造数据。树和链表是基于指针的数据结构,其中CPU使用在各种节点处的指针遍历树或链表。例如,链表是包括一组节点的数据结构。每个节点包含两个字段、整数值和到列表中的下一节点的链路。最后一个节点链接到表示列表的末尾的终止符。
[0013]为了遍历链表,GPU —般重构数据或配置GPU编译器以遍历列表。GPU也可从事指针雕镂通过基于指针的结构,以便在数据拷贝到GPU存储器之后访问数据。指针雕镂指遍历指针的很多级别以便访问期望指针的过程。数据重构、编译器配置、以及当将计算任务卸载到GPU时出现的指针雕镂可降低通过将任务卸载到GPU而得到的任何效率。因此,在本文描述的实施例涉及在计算设备的CPU和GPU之间的虚拟存储器的共享。可在没有重构数据、配置GPU编译器以消费数据、或指针雕镂的情况下共享虚拟存储器。
[0014]在各种实施例中,UMA通过给CPU和GPU提供相同的虚拟存储器和相同的物理存储器,来提供在CPU和GPU之间的共享虚拟存储器。在实施例中,物理存储器可在CPU和GPU之间分割。此外,物理存储器可以是由计算设备的操作系统分配的分页系统存储器。此外在一些实施例中,CPU和GPU在物理上位于同一管芯上。因此,CPU和GPU可共享包含在物理存储器内的数据,而不将数据从GPU的地址空间拷贝到CPU的地址空间,反之亦然。这可通过例如降低用于在CPU和GPU之间共享数据的时间和功率消耗来减小将计算任务从CPU卸载到GPU的成本。
[0015]在下面的描述和权利要求中,可使用术语“耦合”和“连接”连同其衍生词。应理解,这些术语并不打算作为彼此的同义词。更确切地,在特定的实施例中,“连接”可用于指示两个或多个元件彼此直接物理或电接触。“耦合”可意指两个或多个元件直接物理或电接触。然而“耦合”也可意指两个或多个元件彼此不直接接触,但然而仍然彼此协作或交互作用。
[0016]一些实施例可在硬件、固件、以及软件之一或组合中实现。一些实施例也可被实现为存储在机器可读介质上的指令,其可由计算平台读取并执行以执行本文描述的操作。机器可读介质可包括用于存储或传输机器(例如计算机)可读形式的信息的任何机制。例如,机器可读介质除了别的以外还可包括:只读存储器(ROM);随机存取存储器(RAM);磁盘存储介质;光盘存储介质;闪存设备;或电、光、声或其它形式的传播信号,例如载波、红外信号、数字信号、或传输和/或接收信号的接口。
[0017]实施例是实现或示例。在说明书中对“实施例”、“一个实施例”、“一些实施例”、“各种实施例”、或“其它实施例”的提及意指关于实施例描述的特定特征、结构、或特性包括在发明的至少一些实施例中,但不一定是所有实施例。“实施例”、“一个实施例”、或“一些实施例”的各种出现不一定都指相同的实施例。来自实施例的元件或方面可与另一实施例的元件或方面组合。
[0018]不是在本文中描述和示出的所有部件、特征、结构、特性等都需要包括在特定的实施例中。如果例如说明书陈述部件、特征、结构、或特性“may(可以)”、“might(可能)”、“can(可以)”或“could(可以)”被包括,则那个特定的部件、特征、结构、或特性不是必需被包括。如果说明书或权利要求提到“a (—个)”或“an (—个)”元件,则那并不意味着只有一个元件。如果说明书或权利要求提到“额外的”元件,则那并不排除有多于一个额外的元件。
[0019]应注意,虽然关于特定的实现描述了一些实施例,根据一些实施例,其它实现是可能的。此外,在附图中示出和/或在本文描述的电路元件或其它特征的布置和/或顺序不需要以所示和所述的特定的方式布置。根据一些实施例,很多其它布置是可能的。
[0020]在附图中所示的每个系统中,在一些情况下的元件可每个具有相同的附图标记或不同的附图标记以暗示所表示的元件可以是不同的和/或类似的。然而,元件可足够灵活以具有不同的实现并与本文所示或所述的一些或所有系统一起工作。在附图中所示的各种元件可以是相同的或不同的。哪个被称为第一元件而哪个被称为第二元件是任意的。
[0021]图1是可根据实施例使用的计算设备100的方框图。计算设备100除了别的以外还可以是例如膝上型计算机、台式计算机、平板计算机、移动设备、或服务器。计算设备100可包括适合于执行所存储的指令的中央处理单元(CPU) 102以及存储可由CPU 102执行的指令的存储器设备104。CPU可由总线106耦合到存储器设备104。此外,CPU 102可以是单核处理器、多核处理器、计算机集群、或任何数量的其它配置。此外,计算设备100可包括多于一个CPU 102。由CPU 102执行的指令可用于实现共享虚拟存储器。
[0022]计算设备100也可包括图形处理单元(GPU) 108。GPU 108是在计算设备100内的输入/输出设备。如所示,CPU 102可通过总线106耦合到GPU108。然而在一些实施例中,GPU 108位于与计算设备100内的GPU 102相同的管芯上。以这种方式,CPU 102和GPU被物理地连接,使得在CPU 102和GPU 108之间经由总线106的连接可被消除。此外,在实施例中,CPU 102和GPU 108可被包括在计算设备100的统一存储器架构内,如关于图2讨论的。
[0023]GPU 108可配置成在计算设备100内执行任何数量的图形操作。例如,GPU 108可配置成:渲染或操纵将被显示给计算设备100的用户的图形图像、图形帧、视频等。在一些实施例中,GPU 108包括多个图形引擎(未示出),其中每个图形引擎配置成执行特定的图形任务或执行特定类型的工作负荷。
[0024]存储器设备104可包括随机存取存储器(RAM)、只读存储器(ROM)、闪存或任何其它适当的存储器系统。例如,存储器设备104可包括动态随机存取存储器(DRAM)。存储器设备104可包括配置成执行用于实现共享虚拟存储器的指令的设备驱动器110。设备驱动器110可以是软件、应用程序、应用代码等。在一些实施例中,设备驱动器110是用户模式驱动器。
[0025]存储器设备104还包括多级缓存112,其包括最后一级缓存(LLC) 114、第2级缓存116、以及第I级缓存118。虽然为了说明使用多级缓存112,任何缓存可被包括在计算设备100中。多级缓存112可以是存储CPU 102的频繁使用的数据的较小子集的较小的、较快的存储器。较大的数据集可存储在存储设备120中。存储设备120是物理存储器,例如硬盘驱动器、光盘驱动器、拇指驱动器、驱动器的阵列、或其中任何组合。存储设备120也可包括远程存储驱动器。CPU 102访问存储在存储设备120中的数据的时间量相对于CPU 102访问存储器104中的多级缓存112所花费的时间量可以更慢。
[0026]在一些实施例中,LLC 114在CPU 102和GPU 108之间被共享,而第2级缓存116和第I级缓存118可被隐藏以避开GPU 108,使得GPU 108不能直接访问在第2级缓存116和第I级缓存118中缓存的数据。然而,LLC 114可读和写存储在第2级缓存116和第I级缓存118中的数据。因而当GPU 108请求缓存在第2级缓存116或第I级缓存118中的数据时,LLC114能够从第2级缓存116和第I级缓存118取回数据用于由GPU 108处理。以这种方式,LLC 114确保在计算设备100内的数据一致性。如在本文使用的,一致性指一种状态,其中由CPU 102和GPU 108访问的数据是相同的。因此,CPU 102将通过确保数据与LLC 114 一致来确保来自存储设备120的数据在LLC 114、第2级缓存116、以及第I级缓存118中准确地被反映,以便能够与GPU 108共享正确的数据。
[0027]此外,在实施例中,CPU和GPU可访问任何级别的存储器。然而,来自其它级别的存储器的数据可能是陈旧的,而LLC 114包括最近的数据。此外在实施例中,CPU和GPU可使用任何相互可访问的存储单元来执行共享虚拟存储器。任何相互可访问的存储单元可包括但不限于存储器设备104的任何区域、存储器120的任何区域、联网存储单元、拇指驱动器、或其任何组合。
[0028]存储设备120包括表面122以及配置成在计算设备100上运行的任何数量的应用124。表面122是设备驱动器110所分配的物理存储器的指定部分。可基于对在表面122内的物理存储器的内容执行的处理来更新表面。在实施例中,当应用124由CPU 104执行时,应用124可请求表面由设备驱动器110分配。此外,在CPU 102上运行的应用124可根据应用124所要求的存储器分配通过规定表面122的期望尺寸和特征来配置表面122。此外,可例如响应于来自计算设备100的CPU 102的输入来执行表面分配。此外,在实施例中,表面可被标记为LLC可缓存的。通过将表面122指定为LLC可缓存的,从表面122内的单元缓存的数据可被缓存到LLC 114,且因而在LLC中可由CPU 102和GPU 108访问。
[0029]在实施例中,设备驱动器通知内核模式驱动器:表面将是共享虚拟存储器表面。内核模式驱动器将为表面保存CPU虚拟存储器地址。当内核模式驱动器将表面分页成图形存储器时,内核模式驱动器可将分页从原始图形虚拟地址重新路由到等于CPU地址的图形虚拟地址。此外,在实施例中,虚拟图形地址是唯一地属于给定应用的专用图形地址空间。
[0030]存储器管理单元(MMU) 126可用于管理对存储在表面122内的数据的访问。MMU126可将CPU 102和GPU 108的虚拟地址空间分成地址空间的各种页面。CPU 102和GPU108每个具有相同的虚拟地址空间。虚拟地址空间通过将在计算系统内执行的各种应用124隔离到虚拟地址的特定子集而允许包含在表面122内的数据的保护。通过虚拟地址空间的使用,一个应用124将不访问另一应用124的数据。因此,MMU 126包括CPU页表128和GPU页表130。CPU页表包含映射到表面122内的物理地址单元的CPU的虚拟地址。类似地,GPU页表包含映射到表面122内的物理地址单元的GPU的虚拟地址。GPU的虚拟地址相当于CPU的虚拟地址。因此,在本文描述的共享虚拟存储器过程中,CPU页表128可包括CPU虚拟地址空间到物理地址空间的映射。物理地址空间对应于在表面122内的物理地址。同样,GPU页表130可包括GPU虚拟地址空间到同一物理地址空间的映射。
[0031]在各种实施例中,来自CPU页表128的虚拟存储器地址和来自GPU页表130的图形虚拟存储器地址经由转换(translat1n)过程映射到表面122的物理存储器页面。转换过程可用于将任何虚拟存储器地址变换成对应的物理地址。例如,可经由页表行走来执行转换过程,页表行走可基于用于将在页表内的虚拟存储器地址变换成页表内的物理存储器地址的特定转换表来执行。此外,在实施例中,转换旁视缓冲器可用于将CPU和GPU的虚拟地址转换成在其各自的页表内的物理地址空间。
[0032]在转换或变换过程被执行之后,表面122可被钉住(pin)。钉住表面指保护表面,使得物理单元和对应的物理地址不改变。因此,钉住表面122确保在虚拟地址空间和物理地址空间之间的“硬”映射。在地址空间之间的硬映射是在表面被钉住之后不改变的映射。如果表面未被钉住,则页面错误可能产生,或错误的数据可能被处理,因为表面的物理单元可能变化。
[0033]在实施例中,应用124可在CPU 102上执行,并请求表面(例如表面122)以便执行操作,例如处理数据。CPU 102可将操作切换到GPU 108。因为这两个虚拟存储器是相当的且页表已经映射到表面122,GPU可通过访问表面来开始已经由CPU 102卸载的操作的立即执行,而不将数据拷贝到另一地址空间。此外,数据不需要被重构。当操作由CPU 102完成时,GPU 108可用信号通知CPU 102操作完成。CPU 102可接着继续处理数据,而不将数据拷贝回到原始地址空间。
[0034]当由应用124请求的操作被GPU 108执行时,对表面122的修改可出现。根据本文描述的共享虚拟存储器过程,对表面122的这样的修改对CPU102是完全可见的。因此,可在GPU 108和CPU 102之间共享数据,而不将数据从GPU 108拷贝到CPU 102,或反之亦然。
[0035]CPU 102可通过总线106连接到适合于将计算设备100连接到一个或多个I/O设备134的输入/输出(I/O)设备接口 132。I/O设备134可包括例如键盘和指点设备,其中指点设备除了别的以外还可包括触控板或触摸屏。I/O设备134可以是计算设备100的内置部件,或可以是在外部连接到计算设备100的设备。
[0036]CPU 102也可通过总线106链接到适合于将计算设备100连接到显示设备138的显示器接口 136。显示设备138可包括显示屏,其为计算设备100的内置部件。显示设备138除了别的以外还可包括在外部连接到计算设备100的计算机监视器、电视机、或投影仪。
[0037]网络接口控制器(NIC) 140可适合于通过总线106将计算设备100连接到网络142。网络142除了别的以外还可以是广域网(WAN)、局域网(LAN)、或互联网。
[0038]图1的方框图并不旨在指示计算设备100包括图1所示的所有部件。此外,计算设备100可包括未在图1中示出的任何数量的额外部件,取决于特定实现的细节。
[0039]图2A和2B是根据实施例的可用于在计算设备100的CPU 102和GPU108之间实现共享虚拟存储器的统一存储器架构200的示意图。类似地编号的项目如关于图1描述的。UMA 200可包括例如CPU页表128、GPU页表130、以及计算设备100的表面122。
[0040]UMA 200可实现在CPU 102和GPU 108之间的共享虚拟存储器,而没有在CPU 102和GPU 108之间的任何类型的数据拷贝。此外,没有数据重构或编译器配置出现。这可通过允许CPU 102和GPU 108共享表面122并具有在其各自的页表中的相当的虚拟地址来实现。如上面描述的,表面122可以是物理存储设备的一部分。表面包括任何数量的物理存储器单元202。物理存储器单元202可被组织成分页存储器格式,其中页面是在表面122内的物理存储器的固定长度的块。
[0041]CPU页表128可包括多个CPU虚拟存储器地址204,且GPU页表130也可包括多个图形虚拟存储器地址204。CPU虚拟存储器地址204构成CPU虚拟地址空间,而图形虚拟存储器地址204构成图形虚拟地址空间。每个虚拟地址空间映射到在每个页表中的物理地址206。因此,CPU虚拟存储器地址204和图形虚拟存储器地址204都映射到分别在CPU页表128和GPU页表130内的同一组物理地址206。
[0042]物理地址206使CPU 102和GPU 108 (图1)能够处理存储在表面122内的物理单元202处的数据。在各种实施例中,基于由应用(例如应用124(图1))访问的特定CPU虚拟地址204来分配表面122。一旦表面122被分配,每个物理地址208就映射到在CPU页表128内的对应CPU虚拟地址204,如图2所示。表面122的CPU虚拟地址204被共享给图形存储器。当应用124(图1)的计算任务被卸载到GPU 108时,表面122可被分页成图形存储器。当表面122被分页成图形存储器时,页面将从原始图形虚拟地址重新路由到等于CPU虚拟地址204的图形虚拟地址206。GPU虚拟图形地址空间是唯一地属于给定应用的专用图形地址空间。
[0043]在GPU页表130内的图形虚拟存储器地址204可与GPU页表128同步,使得CPU虚拟地址和GPU虚拟存储器地址映射到同一组物理地址206。物理地址206对应于在表面122内的物理单元202。因此,可在CPU 102和GPU 108之间直接共享表面122。在实施例中,如果GPU 108修改位于任何物理单元202处的数据,则修改经由表面122对CPU 102是自动可见的,而没有任何数据拷贝或数据封送处理(marshaling)。
[0044]图2的示意图并不旨在指示UMA 200包括图2所示的所有部件。此外,UMA 200可包括未在图2中示出的任何数量的额外部件,取决于特定实现的细节。
[0045]图3是示出根据实施例的在计算设备的CPU和GPU之间的共享虚拟存储器的方法300的过程流程图。在各种实施例中,方法300用于在CPU和GPU之间共享存储器,而不将数据从CPU存储器拷贝到GPU存储器。
[0046]在一些实施例中,可在计算设备(例如计算设备100 (其中CPU 102和GPU 108由总线106连接))上执行方法300。在其它实施例中,CPU 102和GPU 108可包括在UMA (例如上面关于图2讨论的UMA 200)中。此外,方法300可由计算设备的驱动器(例如计算设备100的设备驱动器126)执行。
[0047]方法在块302处以在物理存储器内的表面的分配开始。在实施例中,可响应于来自在计算设备的CPU上运行的应用的输入而在计算设备的物理存储器内分配表面。此外,在实施例中,表面可由设备驱动器分配。表面也可被标记为共享虚拟存储器表面。应用或设备驱动器可使用CPU虚拟地址从CPU访问表面。在实施例中,CPU虚拟地址由计算设备的操作系统提供到应用或设备驱动器。
[0048]在块304处,基于表面来创建CPU虚拟地址空间。在实施例中,根据应用的请求而产生CPU地址空间。在块306处,表面映射到CPU虚拟地址空间。在CPU虚拟存储器地址和物理地址之间的映射包括在CPU页表内。
[0049]在块308处,创建相当于CPU虚拟地址空间的GPU虚拟地址空间。在块310处,表面映射到GPU虚拟地址空间。在实施例中,将物理存储器页面映射到虚拟存储地址可包括转换或变换虚拟地址以确定在系统存储器内的对应物理存储器页面。当虚拟地址转换或变换成物理地址时,在转换过程期间找到的在虚拟地址和物理地址之间的关联被锁定。通过锁定关联,对应于在页表中的物理地址的表面的物理单元可被分页至缓存。当关联被锁定时页面将保留在缓存中,因为防止设备驱动器改变表面的物理地址。
[0050]在实施例中,表面被指定为LLC可缓存的。这样的指定确保表面的物理单元被缓存到由CPU和GPU共享的LLC中。由应用使用的图形虚拟存储器地址可转换成映射到CPU的虚拟地址的相同的物理地址。在实施例中,设备驱动器可更新在GPU页表内图形虚拟存储器地址到物理地址的映射。
[0051]在块312处,表面被钉住。通过钉住表面,防止改变在表面内的物理地址。例如,操作系统可改变物理地址作为其存储器管理的一部分。然而,一旦表面被钉住,则防止操作系统改变表面的物理单元。
[0052]图4是示出根据实施例的用于处理在计算设备的CPU和GPU之间的共享存储器的方法400的过程流程图。
[0053]在块402处,可将操作从CPU卸载到GPU。操作可如应用(例如应用124(图1))所引导的被卸载到GPU。此外,用于控制CPU或GPU的任何应用编程接口(API)可用于引导从CPU到GPU卸载操作。在实施例中,在将操作从CPU卸载到GPU之前,可使位于表面内的由CPU处理的任何数据与LLC 一致。
[0054]在块404处,GPU可开始处理卸载的操作。GPU访问在LLC内的数据和表面,以便执行操作。在GPU请求不在LLC中但在CPU的某个其它缓存中的数据的情况下,LLC可从其它缓存取回数据用于由GPU处理。
[0055]在块406处,GPU用信号通知操作完成。完成信号可被发送到主机。在实施例中,当操作完成时,设备驱动器使在GPU和CPU之间的操作同步。此外,在实施例中,完成信号可以是例如邮箱写或中断。完成信号可指示GPU已执行导致在表面内的数据的修改的某个计算或图形操作。在完成之后,GPU的输出可由CPU处理。在各种实施例中,当GPU通过从表面的任何物理单元读取或写到表面的任何物理单元来处理表面时,处理可出现在内部缓冲器和GPU的缓存中。因此,在内部缓冲器和GPU的缓存内的数据与在GPU处理完成之后的LLC 一致。
[0056]图3和4的过程流程图并不旨在指示方法300和400的块将以任何特定的顺序执行,或所有块将被包括在每种情况下。此外,可在方法300和400中包括任何数量的额外块,取决于特定实现的细节。此外,虽然本文描述的方法包括GPU,存储器可在任何I/O设备(例如另一 CPU或直接存储器存取(DMA)控制器)之间被共享。
[0057]图5是示出根据实施例的存储计算设备的CPU和GPU之间的共享虚拟存储器的代码的有形、非暂时计算机可读介质500的方框图。有形、非暂时计算机可读介质500可由处理器502通过计算机总线504访问。此外,有形、非暂时计算机可读介质500可包括配置成引导处理器502执行本文描述的方法的代码。
[0058]本文讨论的各种软件部件可存储在如在图5中指示的有形、非暂时计算机可读介质500上。例如,表面分配模块506可配置成分配包括计算设备的存储器内的多个物理存储器页面的表面。虚拟化模块508可创建CPU虚拟地址空间和相当于CPU虚拟地址空间的GPU虚拟地址空间。可在表面被分页成图形存储器时创建GPU虚拟地址空间。映射模块510可配置成将表面内的物理地址映射到CPU地址表和GPU地址表内的虚拟存储器地址。此外,钉住模块512可配置成钉住表面,使得防止改变在表面内的物理单元。
[0059]图5的方框图并不旨在指示有形、非暂时计算机可读介质500将包括图5所示的所有部件。此外,有形、非暂时计算机可读介质500可包括未在图5中示出的任何数量的额外部件,取决于特定实现的细节。
[0060]图6是用于实现共享物理存储器的示例性系统600的方框图。类似地编号的项目如关于图1、2A、以及2B描述的。在一些实施例中,系统600是介质系统。此外,系统600可合并到个人计算机(PC)、膝上型计算机、超级膝上型计算机、平板、触控板、便携式计算机、手持计算机、掌上型计算机、个人数字助理(PDA)、蜂窝电话、组合蜂窝电话/PDA、电视机、智能设备(例如智能电话、智能平板计算机或智能电视机)、移动互联网设备(MID)、消息收发设备、数据通信设备等中。
[0061]在各种实施例中,系统600包括耦合到显示器604的平台602。平台602可从内容设备(例如内容服务设备606或内容分发设备608,或其它类似的内容源)接收内容。包括一个或多个导航特征的导航控制器610可用于与例如平台602和/或显示器604交互作用。下面更详细地描述这些部件中的每个。
[0062]平台602可包括芯片集612、中央处理单元(CPU) 102、存储器设备104、存储设备120、图形子系统614、应用124、以及无线电装置616的任何组合。芯片集612可提供在CPU102、存储器设备104、存储设备120、图形子系统614、应用124、以及无线电装置616当中的通信。例如,芯片集612可包括能够提供与存储设备120的相互通信的存储适配器(未示出)。
[0063]CPU 102可被实现为复杂指令集计算机(CISC)或精简指令集计算机(RISC)处理器、x86指令集可兼容的处理器、多核心或任何其它微处理器或中央处理单元(CPU)。在一些实施例中,CPU 102包括双核处理器、双核移动处理器等。
[0064]存储器设备104可被实现为易失性存储器设备,例如但不限于随机存取存储器(RAM)、动态随机存取存储器(DRAM)、或静态RAM(SRAM)。存储设备120可被实现为非易失性存储设备,例如但不限于磁盘驱动器、光盘驱动器、磁带驱动器、内部存储设备、附加存储设备、闪存、电池备份SDRAM (同步DRAM)、和/或网络可访问的存储设备。在一些实施例中,存储设备120包括例如当多个硬盘驱动器被包括时增加对有价值的数字媒体的存储性能增强保护的技术。
[0065]图形子系统614可执行图像(例如静止图像)或视频的处理用于显示。图形子系统614可包括图形处理单元(GPU),例如GPU 108、或例如视觉处理单元(VPU)。模拟或数字接口可用于通信地耦合图形子系统614和显示器604。例如,接口可以是高清多媒体接口、DisplayPort、无线HDMIjP /或无线HD兼容技术中的任一个。图形子系统614可集成到CPU 102或芯片集612中。可选地,图形子系统614可以是通信地耦合到芯片集612的独立卡。
[0066]本文描述的图形和/或视频处理技术可在各种硬件架构中实现。例如,图形和/或视频功能可集成在芯片集612内。可选地,可使用分立图形和/或视频处理器。作为又一实施例,图形和/或视频功能可由通用处理器(包括多核处理器)实现。在另一实施例中,功能可在消费电子设备中实现。
[0067]无线电装置616可包括能够使用各种适当的无线通信技术传输和接收信号的一个或多个无线电装置。这样的技术可涉及跨一个或多个无线网络的通信。示例性无线网络包括无线局域网(WLAN)、无线个人区域网(WPAN)、无线城域网(WMAN)、蜂窝网络、卫星网络等。在跨这样的网络进行通信时,无线电装置616可根据任何版本的一个或多个可应用的标准来操作。
[0068]显示器604可包括任何电视机型监视器或显示器。例如,显示器604可包括计算机显示屏、触摸屏显示器、视频监视器、电视机等。显示器604可以是数字的和/或模拟的。在一些实施例中,显示器604是全息显示器。此外,显示器604可以是可接收视觉投影的透明表面。这样的投影可传送各种形式的信息、图形、对象等。例如,这样的投影可以是移动增强现实(MAR)应用的视觉覆盖。在一个或多个应用124的控制下,平台602可在显示器604上显示用户界面618。
[0069]内容服务设备606可由任何国家、国际、或独立服务主持,且因此可以是平台602经由例如互联网可访问的。内容服务设备606可耦合到平台602和/或显示器604。平台602和/或内容服务设备606可耦合到网络142以将媒体信息传递(例如发送和/或接收)到/自网络142。内容分发设备608也可耦合到平台602和/或显示器604。
[0070]内容服务设备606可包括有线电视盒、个人计算机、网络、电话、或能够分发数字信息的启用互联网的设备。此外,内容服务设备606可包括能够经由网络142或直接在内容提供者和平台602或显示器604之间单向或双向地传递内容的任何其它类似的设备。将认识到,内容可经由网络142单向和/或双向地传递到/自系统600中的任一部件和内容提供者。内容的例子可包括任何媒体信息,包括例如视频、音乐、医疗和游戏信息等。
[0071]内容服务设备606可接收内容,例如有线电视节目,包括媒体信息、数字信息、或其它内容。内容提供者的例子除了别的以外还可包括任何有线或卫星电视或广播或互联网内容提供者。
[0072]在一些实施例中,平台602从包括一个或多个导航特征的导航控制器610接收控制信号。导航控制器610的导航特征可用于与例如用户接口 618交互作用。导航控制器610可以是指点设备,其可以是允许用户将空间(例如连续和多维)数据输入到计算机中的计算机硬件部件(特别是人机接口设备)。很多系统例如图形用户接口(GUI)和电视机和监视器允许用户使用物理手势控制数据并向计算机或电视机提供数据。物理手势包括但不限于面部表情、面部运动、各种肢体的运动、身体运动、身体语言或其任何组合。这样的物理手势可被识别并转换成命令或指令。
[0073]可通过指针、光标、聚焦环、或显示在显示器604上的其它视觉指示器的运动来在显示器604上模仿导航控制器610的导航特征的运动。例如,在应用124的控制下,位于导航控制器610上的导航特征可映射到显示在用户界面618上的虚拟导航特征。在一些实施例中,导航控制器610可以不是单独的部件,相反可集成到平台602和/或显示器604内。
[0074]系统600可包括驱动器(未示出),其包括在例如被启动时使用户能够在初始引导之后借助触摸按钮即时地打开和关闭平台602的技术。程序逻辑可允许平台602在平台被“关闭”时使内容流式传送到媒体适配器或其它内容服务设备606或内容分发设备608。此夕卜,芯片集612可包括对例如5.1环绕声音频和/或高清7.1环绕声音频的硬件和/或软件支持。驱动器可包括集成图形平台的图形驱动器。在一些实施例中,图形驱动器包括外围部件快速互连(PCIe)图形卡。
[0075]在各种实施例中,可集成在系统600中示出的任意一个或多个部件。例如,平台602和内容服务设备606可被集成;平台602和内容分发设备608可被集成;或平台602、内容服务设备606、以及内容分发设备608可被集成。在一些实施例中,平台602和显示器604是集成单元。例如,显示器604和内容服务设备606可被集成,或显示器604和内容分发设备608可被集成。
[0076]系统600可被实现为无线系统或有线系统。当被实现为无线系统时,系统600可包括适合于通过无线共享介质(例如一个或多个天线、发射机、接收机、收发机、放大器、滤波器、控制逻辑等)进行通信的部件和接口。无线共享介质的例子可包括无线频谱的部分,例如RF频谱。当被实现为有线系统时,系统600可包括适合于通过有线通信介质(例如输入/输出(I/O)适配器、连接I/O适配器与对应的有线通信介质的物理连接器、网络接口卡(NIC)、磁盘控制器、视频控制器、音频控制器等)进行通信的部件和接口。有线通信介质的例子可包括电线、电缆、金属引线、印刷电路板(PCB)、底板、交换结构、半导体材料、双绞线、同轴电缆、光纤等。
[0077]平台602可建立一个或多个逻辑或物理通道以传递信息。信息可包括媒体信息和控制信息。媒体信息可以指代表用于给用户的内容的任何数据。内容的例子可包括例如来自语音变换、视频会议、流式视频、电子邮件(email)消息、语音邮件消息、字母数字符号、图形、图像、视频、文本等的数据。来自语音变换的数据可以是例如话音信息、静默期、背景噪声、舒适噪声、音调等。控制信息可以指表示用于自动化系统的命令、指令或控制字的任何数据。例如,控制信息可用于通过系统来路由媒体信息,或指示节点以预定的方式处理媒体信息。然而实施例并不限于在图6中所示或所述的元件或上下文。
[0078]图7是可体现图6的系统600的小型设备700的示意图。类似地编号的项目如关于图6描述的。在一些实施例中,例如设备700被实现为具有无线能力的移动计算设备。移动计算设备可以指具有处理系统和移动功率源或电源(例如一个或多个电池)的任何设备。
[0079]如上所述,移动计算设备的例子可包括个人计算机(PC)、膝上型计算机、超级膝上型计算机、平板、触控板、便携式计算机、手持计算机、掌上型计算机、个人数字助理(PDA)、蜂窝电话、组合蜂窝电话/PDA、电视机、智能设备(例如智能电话、智能平板或智能电视机)、移动互联网设备(MID)、消息收发设备、数据通信设备等。
[0080]移动计算设备的例子也可包括布置成由人佩戴的计算机,例如手腕计算机、手指计算机、戒指计算机、眼镜计算机、皮带夹计算机、臂带计算机、鞋计算机、衣服计算机、或任何其它适当类型的可穿戴式计算机。例如,移动计算设备可被实现为能够执行计算机应用、以及语音通信和/或数据通信的智能电话。虽然以示例的方式,借助被实现为智能电话的移动计算设备来描述一些实施例,可认识到,也可使用其它无线移动计算设备来实现其它实施例。
[0081]如图7所示,设备700可包括壳体702、显示器704、输入/输出(I/O)设备706、以及天线708。设备700也可包括导航特征710。显示器704可包括用于显示适合于移动计算设备的信息的任何适当的显示单元。I/O设备706可包括用于将信息输入到移动计算设备中的任何适当的I/O设备。例如,I/O设备706可包括字母数字键盘、数字小键盘、触控板、输入键、按钮、开关、摇臂开关、麦克风、扬声器、语音识别设备和软件等。信息也可通过麦克风的方式输入到设备700中。这样的信息可由语音识别设备数字化。
[0082]示例I
[0083]在本文描述了在计算设备的中央处理单元(CPU)和图形处理单元(GPU)之间的共享虚拟存储器的方法。该方法包括分配在物理存储器内的表面。CPU虚拟地址空间可被创建,且在CPU页表内表面可映射到CPU虚拟地址空间。该方法也可包括创建相当于CPU虚拟地址空间的GPU虚拟地址空间,并在GPU页表内将表面映射到GPU虚拟地址空间。该方法也可包括钉住表面。
[0084]可经由表面在CPU和GPU之间共享存储器,而不将数据从CPU存储器拷贝到GPU存储器。可响应于来自在计算设备的CPU上运行的应用的输入而分配表面。此外,该方法可由计算设备的驱动器执行。
[0085]来自CPU和GPU的缓存的数据可与在CPU和GPU之间共享的最后一级缓存(LLC)一致。可将操作从CPU卸载到GPU,且可在GPU内执行操作。可将完成信号发送到CPU,其中完成信号包括GPU已执行导致在表面内的数据的修改的某个计算的指示。此外,设备驱动器可使在CPU和GPU之间的数据的处理同步。
[0086]示例2
[0087]在本文描述了计算设备。计算设备包括适合于执行存储的指令的中央处理单元(CPU)和存储指令的存储设备。存储设备包括处理器可执行代码,其在被CPU执行时适合于分配在物理存储器内的表面。CPU虚拟地址空间可被创建,且在CPU页表内表面可映射到CPU虚拟地址空间。此外,相当于CPU虚拟地址空间的GPU虚拟地址空间可被创建,且在GPU页表内表面可映射到GPU虚拟地址空间。处理器可执行代码也可适合于钉住表面。
[0088]可在CPU和GPU之间共享物理存储器,而不将数据从CPU存储器拷贝到GPU存储器。此外,CPU和GPU位于计算设备内的同一管芯上。CPU和GPU可共享最后一级缓存(LLC),其中LLC可从CPU或GPU的任一缓存取回数据。CPU和GPU可包括统一存储器架构(UMA)。
[0089]处理器可执行代码可适合于响应于来自在计算设备的CPU上运行的应用的输入而分配表面。在CPU页表和GPU页表中的虚拟存储器地址可通过将虚拟地址变换成物理地址来映射到在表面内的物理地址。驱动器可配置成发起处理器可执行代码的执行。此外,计算设备可包括无线电装置和显示器,且无线电装置和显示器可至少通信地耦合到中央处理单元。
[0090]实例3
[0091]在本文描述了至少一个非暂时性机器可读介质,其具有存储在其中的指令。该指令响应于在计算设备上被执行,使计算设备分配在物理存储器内的表面。可产生CPU虚拟地址空间,且在CPU页表内表面可映射到CPU虚拟地址空间。指令也可产生相当于CPU虚拟地址空间的GPU虚拟地址空间,并在GPU页表内将表面映射到GPU虚拟地址空间。此外,表面被钉住。
[0092]可在CPU和GPU之间共享物理存储器,而不将数据从CPU存储器拷贝到GPU存储器。此外,指令可使来自CPU的缓存和GPU的缓存的数据与最后一级缓存(LLC) 一致。此夕卜,指令也可使计算设备响应于来自在计算设备的CPU上运行的应用的输入而分配表面。
[0093]应理解,在前面提到的例子中的细节可在一个或多个实施例中的任何地方使用。例如,也可关于本文描述的方法或计算机可读介质实现上面描述的计算设备的所有可选的特征。此外,虽然流程图和/或状态图可在本文用于描述实施例,发明并不限于那些图或在本文中的对应描述。例如,流程不需要移动经过每个所示框或状态或采用与本文所示和所述的确切相同的顺序。
[0094]发明并不限于本文列出的特定细节。实际上,受益于本公开的本领域中的技术人员将认识到,来自前述描述和附图的很多其它变形可在当前发明的范围内做出。因此,下面的权利要求包括限定发明的范围的对其的任何更改。
【权利要求】
1.一种共享虚拟存储器的方法,包括: 分配在物理存储器内的表面; 创建CPU虚拟地址空间; 在CPU页表内将所述表面映射到所述CPU虚拟地址空间; 创建相当于所述CPU虚拟地址空间的GPU虚拟地址空间; 在GPU页表内将所述表面映射到所述GPU虚拟地址空间;以及 钉住所述表面。
2.如权利要求1所述的方法,包括经由所述表面在所述CPU和所述GPU之间共享物理存储器,而不将数据从CPU存储器拷贝到GPU存储器。
3.如权利要求1所述的方法,包括响应于来自在所述计算设备的所述CPU上运行的应用的输入而分配所述表面。
4.如权利要求1所述的方法,其中所述方法由所述计算设备的驱动器执行。
5.如权利要求1所述的方法,包括确保来自所述CPU的缓存和所述GPU的缓存的数据与在所述CPU和所述GPU之间共享的最后一级缓存(LLC) 一致。
6.如权利要求1所述的方法,包括: 将操作从所述CPU卸载到所述GPU ; 在所述GPU内执行所述操作;以及 将完成信号发送到所述CPU,其中所述完成信号包括以下的指示:所述GPU已执行导致在所述表面内的数据的修改的某一计算。
7.如权利要求1所述的方法,其中设备驱动器使在所述CPU和所述GPU之间的数据的处理同步。
8.如权利要求1所述的方法,包括转换所述CPU虚拟地址空间和所述GPU虚拟地址空间以确定在所述表面内的对应物理单元。
9.一种计算设备,包括: 中央处理单元(CPU),其适合于执行所存储的指令; GPU,其包括GPU页表; 存储设备,其存储指令,所述存储设备包括处理器可执行代码,所述处理器可执行代码当由所述CPU执行时适合于: 分配在物理存储器内的表面; 创建CPU虚拟地址空间; 在CPU页表内将所述表面映射到所述CPU虚拟地址空间; 创建相当于所述CPU虚拟地址空间的GPU虚拟地址空间; 在GPU页表内将所述表面映射到所述GPU虚拟地址空间;以及 钉住所述表面。
10.如权利要求9所述的计算设备,其中所述CPU和所述GPU共享物理存储器,而所述处理器可执行代码没有配置成将数据从CPU存储器拷贝到GPU存储器。
11.如权利要求9所述的计算设备,其中所述CPU和所述GPU在所述计算设备内的同一管芯上。
12.如权利要求9所述的计算设备,其中所述CPU和所述GPU共享最后一级缓存(LLC),且其中所述LLC从所述CPU或所述GPU的任一缓存取回数据。
13.如权利要求9所述的计算设备,其中所述CPU和所述GPU包括统一存储器架构(UMA) ο
14.如权利要求9所述的计算设备,其中所述处理器可执行代码适合于响应于来自在所述计算设备的所述CPU上运行的应用的输入而分配所述表面。
15.如权利要求9所述的计算设备,其中所述处理器可执行代码配置成:通过将在所述CPU页表内的多个虚拟存储器地址变换成物理地址并且将在所述GPU页表内的多个虚拟存储器地址变换成物理地址,来将在所述CPU页表和所述GPU页表内的所述虚拟存储器地址映射到在所述表面内的物理地址。
16.如权利要求9所述的计算设备,包括配置成发起所述处理器可执行代码的执行的驱动器。
17.如权利要求9所述的计算设备,还包括无线电装置和显示器,所述无线电装置和显示器至少通信地耦合到所述中央处理单元。
18.至少一种机器可读介质,其具有存储在其中的指令,所述指令响应于在计算设备上被执行而使所述计算设备: 分配在物理存储器内的表面; 产生CPU虚拟地址空间; 在CPU页表内将所述表面映射到所述CPU虚拟地址空间; 产生相当于所述CPU虚拟地址空间的GPU虚拟地址空间; 在GPU页表内将所述表面映射到所述GPU虚拟地址空间;以及 钉住所述表面。
19.如权利要求18所述的至少一种机器可读介质,其中所述物理存储器在所述CPU和所述GPU之间被共享,而不将数据从CPU存储器拷贝到GPU存储器。
20.如权利要求18所述的至少一种机器可读介质,还包括存储在其上的指令,所述指令使所述计算设备: 确保来自所述CPU的缓存和所述GPU的缓存的数据与最后一级缓存(LLC) 一致。
【文档编号】G06F15/167GK104471554SQ201380037973
【公开日】2015年3月25日 申请日期:2013年6月19日 优先权日:2012年8月17日
【发明者】J·N·拉奥, R·W·西尔瓦斯, A·N·沙阿 申请人:英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1