CN107025183A - 共享虚拟存储器 - Google Patents

共享虚拟存储器 Download PDF

Info

Publication number
CN107025183A
CN107025183A CN201610875294.1A CN201610875294A CN107025183A CN 107025183 A CN107025183 A CN 107025183A CN 201610875294 A CN201610875294 A CN 201610875294A CN 107025183 A CN107025183 A CN 107025183A
Authority
CN
China
Prior art keywords
cpu
gpu
memory
data
virtual
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201610875294.1A
Other languages
English (en)
Other versions
CN107025183B (zh
Inventor
J·N·拉奥
R·W·西尔瓦斯
A·N·沙阿
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of CN107025183A publication Critical patent/CN107025183A/zh
Application granted granted Critical
Publication of CN107025183B publication Critical patent/CN107025183B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/084Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G06F12/1036Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] for multiple virtual address spaces, e.g. segmentation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/109Address translation for multiple virtual address spaces, e.g. segmentation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/60Editing figures and text; Combining figures or text
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/126Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/30Providing cache or TLB in specific location of a processing system
    • G06F2212/302In image processor or graphics adapter
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/62Details of cache specific to multiprocessor cache arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/656Address space sharing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/657Virtual address space management
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Abstract

在本文公开了在计算设备的中央处理单元(CPU)和图形处理单元(GPU)之间的共享虚拟存储器的方法和系统。该方法包括分配在系统存储器内的表面。CPU虚拟地址空间可被创建,且在CPU页表内表面可映射到CPU虚拟地址空间。该方法还包括创建相当于CPU虚拟地址空间的GPU虚拟地址空间,在GPU页表内将表面映射到GPU虚拟地址空间,以及钉住表面。

Description

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

Claims (25)

1.一种机器,包括:
表面分配模块,其用于在物理存储器内创建表面,其中,所述表面在中央处理单元(CPU)与图形处理单元(GPU)之间被共享,所述表面上的数据能够被自动访问而不在所述表面内拷贝数据,并且所述表面能够在CPU虚拟地址空间内被访问;
虚拟化模块,其用于向所述表面分配GPU虚拟地址,所述GPU虚拟地址在GPU虚拟地址空间内,其中,所述GPU和所述CPU共享共同的地址空间;以及
映射模块,其用于在共享的页表内将所述表面映射到所述GPU虚拟地址空间。
2.如权利要求1所述的机器,额外地包括钉住模块,其用于钉住所述表面,使得阻止改变所述表面内的物理单元。
3.如权利要求1所述的机器,其中,所述CPU和所述GPU共享物理存储器,而不将数据在CPU存储器与GPU存储器之间拷贝。
4.如权利要求1所述的机器,所述表面分配模块响应于来自在所述CPU上执行的应用的输入而针对所述表面来分配存储器。
5.如权利要求1所述的机器,额外地包括转换旁视缓冲器,其用于将所述CPU和所述GPU的虚拟地址转换成物理地址空间。
6.如权利要求1-5中的任意一项所述的机器,其中,所述共享的页表包括多个同步的页表。
7.一种数据处理系统,包括:
中央处理单元(CPU),其适合于执行所存储的指令;
图形处理单元(GPU),其与在同一管芯上的所述CPU相耦合;
一个或多个存储设备,其存储指令,当由所述CPU执行时,所述指令使得所述CPU进行以下操作:
在物理存储器内创建表面,其中,所述表面在CPU与GPU之间被共享,所述表面上的数据能够被自动访问而不在所述表面内拷贝数据,并且所述表面能够在CPU虚拟地址空间内被访问;
向所述表面分配GPU虚拟地址,所述GPU虚拟地址在GPU虚拟地址空间内,其中,所述GPU和所述CPU共享共同的地址空间;并且
在共享的页表内将所述表面映射到所述GPU虚拟地址空间。
8.如权利要求7所述的数据处理系统,其中,在所述表面被分配时针对所述表面所映射的地址不变。
9.如权利要求7所述的数据处理系统,所述指令使得所述CPU经由所述表面与所述GPU共享物理存储器,而不将所述表面内的数据从CPU存储器拷贝到GPU存储器。
10.如权利要求7所述的数据处理系统,所述指令使得所述CPU响应于来自在所述CPU上执行的应用的输入而针对所述表面来分配存储器。
11.如权利要求7所述的数据处理系统,所述指令使得所述CPU转换CPU虚拟地址空间内的虚拟存储器地址以确定所述表面内的对应物理地址。
12.如权利要求7-11中的任意一项所述的数据处理系统,其中,所述共享的页表包括多个同步的页表。
13.一种用于共享的虚拟存储器的方法,包括:
在物理存储器内创建表面,其中,所述表面在中央处理单元(CPU)与图形处理单元(GPU)之间被共享,所述表面上的数据能够被自动访问而不在所述表面内拷贝数据,并且所述表面能够在CPU虚拟地址空间内被访问;
向所述表面分配GPU虚拟地址,所述GPU虚拟地址在GPU虚拟地址空间内,其中,所述GPU和所述CPU共享共同的地址空间;并且
在共享的页表内将所述表面映射到所述GPU虚拟地址空间。
14.如权利要求13所述的方法,其中,在所述表面被分配时针对所述表面的映射不变。
15.如权利要求13所述的方法,额外地包括经由所述表面在所述CPU与所述GPU之间共享物理存储器,而不将所述表面内的数据从CPU存储器拷贝到GPU存储器。
16.如权利要求13所述的方法,额外地包括响应于来自在所述CPU上执行的应用的输入而针对所述表面来分配存储器。
17.如权利要求13所述的方法,额外地包括转换所述CPU虚拟地址空间和所述GPU虚拟地址空间以确定所述表面内的对应物理单元。
18.如权利要求13所述的方法,其中,所述方法是由在所述CPU上执行的GPU驱动器执行的。
19.如权利要求13-18中的任意一项所述的方法,其中,所述共享的页表包括多个同步的页表。
20.一种计算设备,包括:
用于在物理存储器内创建表面的单元,其中,所述表面在中央处理单元(CPU)与图形处理单元(GPU)之间被共享,所述表面上的数据能够被自动访问而不在所述表面内拷贝数据,并且所述表面能够在CPU虚拟地址空间内被访问;
用于向所述表面分配GPU虚拟地址的单元,所述GPU虚拟地址在GPU虚拟地址空间内,其中,所述GPU和所述CPU共享共同的地址空间;以及
用于在共享的页表内将所述表面映射到所述GPU虚拟地址空间的单元。
21.如权利要求20所述的计算设备,其中,在所述表面被分配时,所述表面到所述GPU虚拟地址空间的映射不变。
22.如权利要求20所述的计算设备,额外地包括用于经由所述表面在所述CPU与所述GPU之间共享物理存储器,而不将所述表面内的数据从CPU存储器拷贝到GPU存储器的单元。
23.如权利要求20所述的计算设备,额外地包括用于响应于来自在所述CPU上执行的应用的输入而针对所述表面来分配存储器的单元。
24.如权利要求20所述的计算设备,额外地包括用于转换所述CPU虚拟地址空间和所述GPU虚拟地址空间以确定所述表面内的对应物理单元的单元。
25.如权利要求20-24中的任意一项所述的计算设备,其中,所述共享的页表包括多个同步的页表。
CN201610875294.1A 2012-08-17 2013-06-19 共享虚拟存储器 Active CN107025183B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/588,308 US9378572B2 (en) 2012-08-17 2012-08-17 Shared virtual memory
US13/588,308 2012-08-17
CN201380037973.6A CN104471554B (zh) 2012-08-17 2013-06-19 共享虚拟存储器

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
CN201380037973.6A Division CN104471554B (zh) 2012-08-17 2013-06-19 共享虚拟存储器

Publications (2)

Publication Number Publication Date
CN107025183A true CN107025183A (zh) 2017-08-08
CN107025183B CN107025183B (zh) 2021-01-15

Family

ID=50099761

Family Applications (2)

Application Number Title Priority Date Filing Date
CN201610875294.1A Active CN107025183B (zh) 2012-08-17 2013-06-19 共享虚拟存储器
CN201380037973.6A Active CN104471554B (zh) 2012-08-17 2013-06-19 共享虚拟存储器

Family Applications After (1)

Application Number Title Priority Date Filing Date
CN201380037973.6A Active CN104471554B (zh) 2012-08-17 2013-06-19 共享虚拟存储器

Country Status (7)

Country Link
US (2) US9378572B2 (zh)
JP (5) JP6001778B2 (zh)
KR (1) KR20150031293A (zh)
CN (2) CN107025183B (zh)
DE (4) DE112013007742B3 (zh)
TW (4) TWI605342B (zh)
WO (1) WO2014028120A1 (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2021159820A1 (zh) * 2020-02-11 2021-08-19 支付宝(杭州)信息技术有限公司 一种数据传输和任务处理方法、装置及设备
CN113495855A (zh) * 2020-03-19 2021-10-12 美光科技公司 利用全局共享上下文的存储器模块系统
CN113645484A (zh) * 2021-10-16 2021-11-12 成都中科合迅科技有限公司 基于图形处理器的数据可视化加速渲染方法

Families Citing this family (40)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8850417B2 (en) * 2011-04-15 2014-09-30 International Business Machines Corporation Method and framework for invisible code rewriting
US9116809B2 (en) * 2012-03-29 2015-08-25 Ati Technologies Ulc Memory heaps in a memory model for a unified computing system
US9373182B2 (en) * 2012-08-17 2016-06-21 Intel Corporation Memory sharing via a unified memory architecture
US9378572B2 (en) 2012-08-17 2016-06-28 Intel Corporation Shared virtual memory
US9195585B2 (en) 2013-01-23 2015-11-24 Vmware, Inc. Techniques for allocating and surfacing host-side storage capacity to virtual machines
US9619364B2 (en) 2013-03-14 2017-04-11 Nvidia Corporation Grouping and analysis of data access hazard reports
US9910684B2 (en) * 2013-03-25 2018-03-06 Hewlett Packard Enterprise Development Lp Extensible firmware abstraction
US9886736B2 (en) 2014-01-20 2018-02-06 Nvidia Corporation Selectively killing trapped multi-process service clients sharing the same hardware context
US10152312B2 (en) 2014-01-21 2018-12-11 Nvidia Corporation Dynamic compiler parallelism techniques
WO2015130282A1 (en) * 2014-02-27 2015-09-03 Hewlett-Packard Development Company, L. P. Communication between integrated graphics processing units
US20150256645A1 (en) * 2014-03-10 2015-09-10 Riverscale Ltd Software Enabled Network Storage Accelerator (SENSA) - Network Server With Dedicated Co-processor Hardware Implementation of Storage Target Application
US9779471B2 (en) * 2014-10-01 2017-10-03 Qualcomm Incorporated Transparent pixel format converter
WO2016085463A1 (en) * 2014-11-25 2016-06-02 Hewlett Packard Enterprise Development Lp Memory controller with memory resource memory management
US20170322889A1 (en) * 2014-11-25 2017-11-09 Hewlett Packard Enterprise Development Lp Computing resource with memory resource memory management
US10019373B2 (en) * 2014-12-19 2018-07-10 Mediatek Inc. Memory management method for supporting shared virtual memories with hybrid page table utilization and related machine readable medium
WO2016205976A1 (en) * 2015-06-26 2016-12-29 Intel Corporation Apparatus and method for efficient communication between virtual machines
CN106683035B (zh) * 2015-11-09 2020-03-13 龙芯中科技术有限公司 Gpu加速方法和装置
GB2546343A (en) 2016-01-15 2017-07-19 Stmicroelectronics (Grenoble2) Sas Apparatus and methods implementing dispatch mechanisms for offloading executable functions
GB2547242B (en) 2016-02-11 2018-05-23 Advanced Risc Mach Ltd Graphics processing
US11797459B2 (en) 2016-06-17 2023-10-24 Hewlett-Packard Development Company, L.P. Shared machine-learning data structure
US20180004649A1 (en) * 2016-07-01 2018-01-04 Intel Corporation Techniques to Format a Persistent Memory File
US10163184B2 (en) * 2016-08-17 2018-12-25 Adobe Systems Incorporated Graphics performance for complex user interfaces
US20180081811A1 (en) * 2016-09-20 2018-03-22 Qualcomm Incorporated Dynamic cache partitioning through hill-climbing
CN108206937B (zh) * 2016-12-20 2020-05-19 浙江宇视科技有限公司 一种提升智能分析性能的方法和装置
JP2018156573A (ja) * 2017-03-21 2018-10-04 東芝メモリ株式会社 メモリ装置および情報処理システム
US10282811B2 (en) 2017-04-07 2019-05-07 Intel Corporation Apparatus and method for managing data bias in a graphics processing architecture
US10417733B2 (en) * 2017-05-24 2019-09-17 Samsung Electronics Co., Ltd. System and method for machine learning with NVMe-of ethernet SSD chassis with embedded GPU in SSD form factor
CN107291537A (zh) * 2017-06-07 2017-10-24 江苏海平面数据科技有限公司 一种gpu片上存储空间使用的优化方法
US10489881B2 (en) * 2017-06-30 2019-11-26 H3 Platform Inc. Direct memory access for co-processor memory
CN107463510B (zh) * 2017-08-21 2020-05-08 北京工业大学 一种面向高性能的异构多核共享cache缓冲管理方法
US10445088B2 (en) * 2018-01-11 2019-10-15 Macronix International Co., Ltd. System boot code clone
CN110134370B (zh) * 2018-02-08 2023-09-12 龙芯中科技术股份有限公司 一种图形绘制的方法、装置、电子设备及存储介质
US10678705B2 (en) 2018-09-13 2020-06-09 Qualcomm Incorporated External paging and swapping for dynamic modules
TWI707272B (zh) * 2019-04-10 2020-10-11 瑞昱半導體股份有限公司 可執行指令的電子裝置以及指令執行方法
JP2020177073A (ja) 2019-04-16 2020-10-29 株式会社デンソー 車両用装置、車両用装置の制御方法
JP2020177074A (ja) * 2019-04-16 2020-10-29 株式会社デンソー 車両用装置、車両用装置の制御方法
CN110187835B (zh) * 2019-05-24 2023-02-03 北京百度网讯科技有限公司 用于管理访问请求的方法、装置、设备和存储介质
CN113168322A (zh) * 2019-05-27 2021-07-23 华为技术有限公司 一种图形处理方法和装置
US10872458B1 (en) * 2019-09-06 2020-12-22 Apple Inc. Graphics surface addressing
CN113377545B (zh) * 2021-07-08 2023-11-14 支付宝(杭州)信息技术有限公司 用于分配gpu物理内存的方法及装置

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1317648C (zh) * 2002-05-08 2007-05-23 英特尔公司 用于在主机处理器和图形处理器之间优化存储器共享的方法和系统
CN100350394C (zh) * 2000-06-30 2007-11-21 英特尔公司 用于安全执行指令的方法、处理器和计算机系统
CN101371233A (zh) * 2004-11-15 2009-02-18 辉达公司 含控制用于视频处理的向量组件的标量组件的视频处理器
US20110023040A1 (en) * 2009-07-24 2011-01-27 Apple Inc. Power-efficient interaction between multiple processors
CN102103567A (zh) * 2009-12-21 2011-06-22 英特尔公司 在异构处理器之间共享基于虚拟存储器的多版本数据
CN102117260A (zh) * 2009-12-31 2011-07-06 英特尔公司 在cpu和gpu之间共享资源
CN102625934A (zh) * 2008-11-13 2012-08-01 英特尔公司 共享虚拟存储器

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH01291343A (ja) * 1988-05-18 1989-11-22 Nippon Telegr & Teleph Corp <Ntt> メモリ管理装置
JP2675961B2 (ja) 1992-05-20 1997-11-12 インターナショナル・ビジネス・マシーンズ・コーポレイション 実記憶のページをロックするための方法
US6684305B1 (en) * 2001-04-24 2004-01-27 Advanced Micro Devices, Inc. Multiprocessor system implementing virtual memory using a shared memory, and a page replacement method for maintaining paged memory coherence
US7355601B2 (en) 2003-06-30 2008-04-08 International Business Machines Corporation System and method for transfer of data between processors using a locked set, head and tail pointers
US20060112226A1 (en) 2004-11-19 2006-05-25 Hady Frank T Heterogeneous processors sharing a common cache
US7490215B2 (en) * 2004-12-22 2009-02-10 Intel Corporation Media memory system and method for providing concurrent memory access to a plurality of processors through separate translation table information
JP4493626B2 (ja) 2006-05-25 2010-06-30 株式会社ソニー・コンピュータエンタテインメント マルチプロセッサシステム、ライブラリモジュール、および描画処理方法
US20080109795A1 (en) 2006-11-02 2008-05-08 Nvidia Corporation C/c++ language extensions for general-purpose graphics processing unit
US7865675B2 (en) * 2007-12-06 2011-01-04 Arm Limited Controlling cleaning of data values within a hardware accelerator
US9035959B2 (en) 2008-03-28 2015-05-19 Intel Corporation Technique to share information among different cache coherency domains
US8069446B2 (en) * 2009-04-03 2011-11-29 Microsoft Corporation Parallel programming and execution systems and techniques
US8451281B2 (en) * 2009-06-23 2013-05-28 Intel Corporation Shared virtual memory between a host and discrete graphics device in a computing system
US20110161620A1 (en) * 2009-12-29 2011-06-30 Advanced Micro Devices, Inc. Systems and methods implementing shared page tables for sharing memory resources managed by a main operating system with accelerator devices
KR101581796B1 (ko) * 2010-09-24 2016-01-04 인텔 코포레이션 컴퓨팅 플랫폼의 이종 프로세서들 간의 공유 가상 메모리에서의 가상 함수들의 공유
US8385140B2 (en) * 2010-11-18 2013-02-26 Advanced Micro Devices, Inc. Memory elements having shared selection signals
CN102495762B (zh) * 2011-11-16 2014-04-02 华为技术有限公司 一种线程调度方法、线程调度装置及多核处理器系统
US9009419B2 (en) * 2012-07-31 2015-04-14 Advanced Micro Devices, Inc. Shared memory space in a unified memory model
US8938602B2 (en) * 2012-08-02 2015-01-20 Qualcomm Incorporated Multiple sets of attribute fields within a single page table entry
US9378572B2 (en) 2012-08-17 2016-06-28 Intel Corporation Shared virtual memory

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100350394C (zh) * 2000-06-30 2007-11-21 英特尔公司 用于安全执行指令的方法、处理器和计算机系统
CN1317648C (zh) * 2002-05-08 2007-05-23 英特尔公司 用于在主机处理器和图形处理器之间优化存储器共享的方法和系统
CN101371233A (zh) * 2004-11-15 2009-02-18 辉达公司 含控制用于视频处理的向量组件的标量组件的视频处理器
CN102625934A (zh) * 2008-11-13 2012-08-01 英特尔公司 共享虚拟存储器
US20110023040A1 (en) * 2009-07-24 2011-01-27 Apple Inc. Power-efficient interaction between multiple processors
CN102103567A (zh) * 2009-12-21 2011-06-22 英特尔公司 在异构处理器之间共享基于虚拟存储器的多版本数据
CN102117260A (zh) * 2009-12-31 2011-07-06 英特尔公司 在cpu和gpu之间共享资源

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
THOMAS B.JABLIN,ETC.: ""Automatic CPU-GPU Communication"", 《PLDI"11: ACM SIGPLAN CONFERENCE ON PROGRAMMING LANGUAGE DESIGN AND IMPLEMENTATION SAN JOSE CALIFORNIA USA JUNE, 2011》 *
杨靖宇,张永生等: ""遥感影像正射纠正的GPU-CPU协同处理研究"", 《武汉大学学报:信息科学版》 *

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2021159820A1 (zh) * 2020-02-11 2021-08-19 支付宝(杭州)信息技术有限公司 一种数据传输和任务处理方法、装置及设备
CN113495855A (zh) * 2020-03-19 2021-10-12 美光科技公司 利用全局共享上下文的存储器模块系统
CN113645484A (zh) * 2021-10-16 2021-11-12 成都中科合迅科技有限公司 基于图形处理器的数据可视化加速渲染方法

Also Published As

Publication number Publication date
WO2014028120A1 (en) 2014-02-20
TWI624760B (zh) 2018-05-21
CN107025183B (zh) 2021-01-15
JP2015526806A (ja) 2015-09-10
TWI605342B (zh) 2017-11-11
TW201418983A (zh) 2014-05-16
TW201843592A (zh) 2018-12-16
JP6746645B2 (ja) 2020-08-26
DE112013007788B4 (de) 2023-10-12
US9779472B2 (en) 2017-10-03
JP2018139128A (ja) 2018-09-06
JP2018198086A (ja) 2018-12-13
US9378572B2 (en) 2016-06-28
TWI698747B (zh) 2020-07-11
CN104471554A (zh) 2015-03-25
TW201921251A (zh) 2019-06-01
TWI666548B (zh) 2019-07-21
DE112013007780B3 (de) 2023-06-07
JP6001778B2 (ja) 2016-10-05
CN104471554B (zh) 2018-05-25
JP6545861B2 (ja) 2019-07-17
US20140049551A1 (en) 2014-02-20
JP2019071122A (ja) 2019-05-09
JP6559628B2 (ja) 2019-08-14
KR20150031293A (ko) 2015-03-23
US20160328823A1 (en) 2016-11-10
DE112013004079T5 (de) 2015-06-03
JP2017004556A (ja) 2017-01-05
TW201702881A (zh) 2017-01-16
DE112013007742B3 (de) 2023-06-07
DE112013004079B4 (de) 2023-06-07

Similar Documents

Publication Publication Date Title
CN104471554B (zh) 共享虚拟存储器
CN104471540B (zh) 通过统一存储器架构的存储器共享

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant