CN111522754A - 通过统一存储器架构的存储器共享 - Google Patents

通过统一存储器架构的存储器共享 Download PDF

Info

Publication number
CN111522754A
CN111522754A CN202010065102.7A CN202010065102A CN111522754A CN 111522754 A CN111522754 A CN 111522754A CN 202010065102 A CN202010065102 A CN 202010065102A CN 111522754 A CN111522754 A CN 111522754A
Authority
CN
China
Prior art keywords
memory
cpu
gpu
computing device
physical
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
CN202010065102.7A
Other languages
English (en)
Other versions
CN111522754B (zh
Inventor
J.N.拉奥
M.桑德里森
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
Priority to CN202010065102.7A priority Critical patent/CN111522754B/zh
Publication of CN111522754A publication Critical patent/CN111522754A/zh
Application granted granted Critical
Publication of CN111522754B publication Critical patent/CN111522754B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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/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/109Address translation 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
    • 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/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • 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/1081Address translation for peripheral access to main memory, e.g. direct memory access [DMA]
    • 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/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
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/45Caching of specific data in cache memory
    • G06F2212/455Image or video data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6042Allocation of cache space to multiple users or processors
    • 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
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Memory System (AREA)
  • Image Input (AREA)

Abstract

本发明的主题是“通过统一存储器架构的存储器共享”。此处公开了用于在计算设备的中央处理单元(CPU)和图形处理单元(GPU)之间共享存储器的方法和系统。该方法包括在物理存储器内分配表面,并将所述表面映射到CPU页面表内的多个虚拟存储器地址。该方法还包括将所述表面映射到I/O设备页面表内的多个图形虚拟存储器地址。

Description

通过统一存储器架构的存储器共享
本申请是申请日为2013年6月13日申请号为第201380038015.0号发明名称为“通过统一存储器架构的存储器共享”的中国专利申请的分案申请。
技术领域
本发明一般涉及存储器在计算系统内的中央处理单元(CPU)和输入/输出(I/O)设备之间的共享。更具体而言,本发明涉及物理存储器在CPU和I/O设备之间的共享。
背景技术
现代I/O设备可以包括与许多中央处理单元(CPU)的计算机处理能力相匹敌的计算机处理能力。结果,传统上由CPU执行的计算任务的一部分可以被分摊给计算设备的I/O设备。例如,计算设备的诸如图形处理单元(GPU)之类的I/O设备可以执行传统上由CPU执行的某些任务,由此,提高CPU的效率。
附图说明
图1是根据各实施例的,可以使用的计算设备的框图;
图2A和2B是根据各实施例的可以被用来实现用于在计算设备的中央处理单元(CPU)和图形处理单元(GPU)之间共享存储器的过程的统一存储器架构(UMA)的示意图;
图3是示出了根据各实施例的用于在计算设备的CPU和GPU之间共享存储器的方法的流程图;
图4是示出了根据各实施例的用于处理在计算设备的CPU和GPU之间共享的存储器的方法的流程图;
图5是示出了根据各实施例的存储用于在计算设备的CPU和GPU之间共享存储器的代码的有形的、非瞬时的计算机可读取的介质的框图;
图6是用于实现共享的物理存储器的示例性系统的框图;和
图7是其中可实现图6的系统的小形状系数设备的示意图。
在整个公开和附图中使用相同的标号指示相似的组件和特征。100系列的标号涉及在图1中最初可见的特征,200系列的标号涉及在图2中最初可见的特征,以此类推。
具体实施方式
当前操作系统和图形接口将GPU作为I/O设备来管理,而不是将GPU作为带有类似于CPU的资源的处理器来管理。通过将GPU作为I/O设备来管理,CPU和GPU具有带有分离的物理地址域的物理存储器。当将计算任务分摊到GPU时,将数据从CPU的物理地址域复制到GPU的物理地址域。在GPU完成了处理之后,数据被复制回CPU的物理地址域。
将传统上由CPU执行的计算任务的一部分分摊给计算设备的GPU可以提高CPU的效率。如上文所讨论的,为了将任务分摊到GPU,可以在CPU的物理存储器与GPU的物理存储器之间传输数据。将计算任务分摊到GPU时发生的数据传输可能会降低通过将任务分摊到GPU获得的任何效率。相应地,此处所描述的各实施例涉及存储器在计算设备的CPU和GPU之间的共享。可以通过统一存储器架构(UMA)共享存储器。
在各种实施例中,UMA通过给CPU和GPU两者提供相同物理存储器,来用于在CPU和GPU之间进行存储器共享。如此,CPU和GPU的物理存储器和相应的物理地址空间完全一样。在各实施例中,物理存储器可以在CPU和GPU之间划分。进一步地,物理存储器可以是由计算设备的操作系统分配的分页系统存储器。CPU的虚拟存储器地址空间可以与GPU的图形虚拟存储地址空间被映射到相同物理存储器页面。另外,在某些实施例中,CPU和GPU在物理上位于同一个管芯中。如此,CPU和GPU可以共享在物理存储器内包含的数据,而不会将数据从GPU的地址空间复制到CPU的地址空间,或反之亦然。这可以通过,例如,缩小用于在CPU和GPU之间共享数据的时间和能耗,来降低将计算任务从CPU分摊到GPU的成本。
在以下描述和权利要求书中,可使用术语“耦合”和“连接”及其派生词。应当理解,这些术语并不旨在作为彼此的同义词。相反,在特定实施例中,可以使用“连接”来表示两个或更多元件彼此处于直接的物理和/或电接触的状态。“耦合的”可表示两个或更多个元件直接物理或电接触。然而,“耦合的”也可表示两个或更多个元件并未彼此直接接触,但是仍然彼此协作、彼此相互作用。
一些实施例可在硬件、固件和软件中的一者或组合中实现。一些实施例还可被实现为存储在机器可读介质上的指令,其可由计算平台读取和执行,以执行本文所述的操作。机器可读介质可以包括用于存储或传输机器(例如:计算机)可读形式的信息的任何机制。例如,机器可读介质可包括只读存储器(ROM);随机存取存储器(RAM);磁盘存储介质;光存储介质;闪存设备;或电、光、声或其它形式的传播信号(例如,载波、红外信号、数字信号、或发送和/或接收信号的接口等)等等。
实施例是实现方式或示例。说明书中对“实施例”、“一个实施例”、“一些实施例”、“各种实施例”或“另一些实施例”的引用表示结合这些实施例而描述的特定特征、结构、或特性被包括在本发明的至少一些实施例中,而不一定在所有的实施例中。“实施例”、“一个实施例”或“一些实施例”的各种出现不一定全部都是指相同实施例。一个实施例的元件或方面可与另一个实施例的元件或方面组合。
并非本文中描述和示出的所有组件、特征、结构、特性等等都需要被包括在特定实施例或多个实施例中。例如,如果说明书陈述“可”、“可能”或“能够”包括组件、特征、结构或特性,则不一定包括该特定组件、特征、结构或特性。如果说明书或权利要求书提到“一”或“一个”元件,则这并不意味着仅有一个该元件。如果说明书或权利要求书引用“附加的”元件,则不排除有一个以上该附加的元件。
要注意的是,虽然参考特定实现方式描述了一些实施例,但根据一些实施例,其他实现方式也是可能的。另外,附图中所示的和/或本文描述的电路元件或其它特征的配置和/或顺序不必以所示和所描述的特定方式安排。根据某些实施例,其他许多配置也是可能的。
在附图所示出的每一系统中,在某些情况下,每一元件都可以具有相同参考编号或不同的参考编号,以暗示表示的元件可能是不同的和/或类似的。但是,元件可以足够灵活,具有不同的实现方式,并与本文所示或所述的一些或所有系统一起操作。附图中所示的各元件可以相同或不同。将哪个称为第一元件以及将哪个称为第二元件是任意的。
图1是根据各实施例的可以使用的计算设备100的框图。该计算设备100可以是,例如,膝上型计算机、台式计算机、平板计算机、移动设备、服务器,等等。计算设备100可包括中央处理单元(CPU)102,适用于执行所存储的指令,还有存储器设备108,其存储可由CPU102执行的指令。CPU 102可以是单核处理器、多核处理器、计算群集、或者任意数量的其他配置。进一步,计算设备100可包括多于一个的CPU 102。可使用由CPU 102执行的指令来实现存储器共享过程。
计算设备100还可包括图形处理单元(GPU)104。GPU是计算设备100内的输入/输出(I/O)设备。I/O设备是可用于使用输入端、输出端或其任何组合与计算机进行通信的设备。如图所示,CPU 102可通过总线106连接至GPU 104。然而,在某些实施例中,GPU 104与计算设备100内的CPU 102位于相同管芯上。如此,CPU 102和GPU在物理上以这样的方式连接:可以消除CPU 102和GPU 104之间的通过总线106的连接。此外,在各实施例中,CPU 102和GPU104可以被包括在计算设备100的统一存储器架构内,如参考图2所讨论的。
GPU 104可被配置为执行计算设备100中的任意数量的图形操作。例如,GPU 104可被配置为呈现或操作图形化图像、图形帧、视频等,使其向计算设备100的用户显示。在某些实施例中,GPU 104包括若干个图形引擎(未示出),其中,每一图形引擎都被配置成执行特定图形任务,或执行特定类型的工作负荷。
计算设备100还可包括存储器设备108。存储器设备108可包括随机存取存储器(RAM)、只读存储器(ROM)、闪存、或任何其他合适的存储系统。例如,存储器设备108可包括动态随机存取存储器(DRAM)。存储器108可以包括被配置成执行用于实现存储器共享过程的指令的设备驱动器110。设备驱动器110可以是软件、应用、应用代码,等等。在某些实施例中,设备驱动器110是用户模式驱动器。
存储器108还包括多级112缓存,包括末级缓存(LLC)114、2级缓存116以及1级缓存118。虽然为说明使用了多级缓存112,但是,任何缓存都可以包括在计算设备100中。多级缓存112可以是存储CPU 102的频繁使用的数据的较小子集的较小较快的存储器。较大的数据集可以存储在存储器120中。存储器120是诸如硬盘驱动器、光盘驱动器、拇指驱动器、驱动器阵列、或其中任意组合之类的物理存储器。存储器120还可包括远程存储驱动器。CPU 102访问存储在存储器120中的数据的时间量相对于CPU 102访问存储器104中的多级缓存112需要花费的时间量可能较慢。
在某些实施例中,在CPU 102和GPU 104之间共享LLC 114,同时,可以对于GPU 104隐藏2级缓存116和1级缓存118,以便GPU 104不能直接访问缓存在2级缓存116和1级缓存118中的数据。然而,LLC 114可以读取和写入存储在2级缓存116和1级缓存118中的数据。由此,当GPU 104请求缓存在2级缓存116或1级缓存118中的数据时,LLC 114能够从2级缓存116和1级缓存118中检索数据,供GPU 104进行处理。如此,LLC 114确保计算设备100内的数据一致性。如此处所使用的,一致性是指被CPU 102和GPU 104访问的数据相同的状态。相应地,CPU 102将通过确保数据与LLC 114一致,来确保来自存储设备120的数据准确地反映在LLC 114、2级缓存116以及1级缓存118中,以便允许正确的数据被与GPU 104共享。
另外,在各实施例中,CPU和GPU可以访问存储器的任何级别。然而,来自存储器的其他级别的数据可能是陈旧的,而LLC 114包括最近的数据。此外,在各实施例中,CPU和GPU可以使用任何相互可访问的存储位置来执行共享的虚拟存储器。任何相互可访问的存储位置可以包括,但不仅限于,存储器设备108的任何区域、存储器120的任何区域、联网的存储位置、拇指驱动器,或其任何组合。
存储器120包括表面122以及被配置成在计算设备100上运行的任意数量应用124。表面122是由设备驱动器110分配的物理存储器的指定的部分。可以基于对表面122内的物理存储器的内容执行的处理,更新表面。在各实施例中,当应用124由CPU 104执行时,应用124可以请求由设备驱动器110分配表面。此外,在CPU 102上运行的应用124可以通过指定表面122的所需大小和特征,根据应用124调用的存储器分配,配置表面122。另外,例如,可以响应于来自计算设备100的CPU 102的输入,执行表面分配。此外,在各实施例中,表面还标记为LLC可缓存的。通过将表面122指定为LLC可缓存的,从表面122内的位置缓存的数据可以被缓存到LLC 114,并由此在LLC中可被CPU 102和GPU 104两者访问。
可以使用存储器管理单元(MMU)126来管理对存储在表面122内的数据的访问。MMU126可以将CPU 102和GPU 104的虚拟地址空间分割为地址空间的各种页面。CPU 102和GPU104中每一个都具有它们自己的虚拟地址空间。虚拟地址空间通过将在计算系统内执行的各种应用124隔离到虚拟地址的特定子集,保护包含在表面122内的数据。通过使用虚拟地址空间,一个应用124将不会访问另一应用124的数据。相应地,MMU 126包括CPU页面表128和GPU页面表130。CPU页面表包含被映射到表面122内的物理地址位置的CPU的虚拟地址。类似地,GPU页面表包含被映射到表面122内的物理地址位置的GPU的虚拟地址。在此处所描述的存储器共享过程中,CPU页面表128可以包括CPU虚拟地址空间到物理地址空间的映射。物理地址空间对应于表面122内的物理位置。同样,GPU页面表130可以包括GPU虚拟地址空间到相同物理地址空间的映射。
在各种实施例中,来自CPU页面表128的虚拟存储器地址和来自GPU页面表130的图形虚拟存储器地址通过转换过程,被映射到表面122的物理存储器页面。可以使用转换过程来将虚拟存储器地址中的任何一个转换为相应的物理地址。例如,可以通过页面表步行(walk),来执行转换过程,页面表步行可以基于用于将页面表内的虚拟存储器地址转换为页面表内的物理存储器地址的特定转换表来执行。另外,在各实施例中,可以使用转换后备缓冲器来将CPU和GPU的虚拟地址转换为它们的相应的页面表内的物理地址空间。
在执行转换过程之后,可以固定(pin)表面122。固定表面是指保护表面,以便物理位置和相应的物理地址不变。如此,固定表面122确保虚拟地址空间和物理地址空间之间的“硬”映射。在地址空间之间的硬映射是在固定表面之后不会变化的映射。如果表面没有被固定,则可能会生成页面错误,或可能会处理错误的数据,因为表面的物理位置可能移位。
在各实施例中,应用124可以在CPU 102上执行,并请求诸如表面122之类的表面,以便执行诸如处理数据之类的操作。CPU 102可以将操作传递到GPU 104。由于页面表已经被映射到表面122,因此,GPU可以通过访问表面,开始由CPU 102分摊的操作的立即执行,而不必将数据复制到另一个地址空间。当操作由CPU 102完成时,GPU 104可以向CPU 122发送信号,操作完成。然后,CPU 102可以继续处理数据,而不必将数据复制回原始地址空间。
当由应用124请求的操作由GPU 104执行时,可以发生对表面122的修改。根据此处所描述的存储器共享过程,这样的对表面122的修改完全对CPU 102可见。如此,可以在GPU104和CPU 102之间共享数据,而不必将数据从GPU 104复制到CPU 102,或反之亦然。
CPU 102还可通过总线106连接至输入/输出(I/O)设备接口132,该接口132适用于将计算设备100连接至一个或多个I/O设备134。I/O设备134可包括,例如,键盘和指向设备,其中指向设备可包括触摸板或触摸屏,等等。I/O设备134可以是计算设备100的内置组件,或可以是从外部连接至计算设备100的设备。
CPU 102还可通过总线106链接至显示接口136,该接口136适用于将计算设备100连接至显示设备138。显示设备138可包括显示屏,其为计算设备100的内置组件。显示设备138还可包括从外部连接至计算设备100的计算机监视器、电视机或投影仪等等。
网络接口控制器(NIC)140可适合通过总线106将计算设备100连接至网络142。网络142可以是广域网(WAN)、局域网(LAN)或因特网,等等。
图1的框图并不意在表示,计算设备100包括图1中所示的全部组件。进一步,取决于特定实现的细节,计算设备100可包括图1中未示出的任意数量的附加组件。
图2A和2B是根据各实施例的可以被用来实现用于在计算设备100的CPU 102和GPU104之间共享存储器的过程的统一存储器架构200的示意图。类似标记的项如根据图1所描述。UMA 200可以包括,例如,计算设备100的CPU页面表128、GPU页面表130以及表面122。
UMA 200可以允许CPU 102和GPU 104之间的直接存储器共享,而不必在CPU 102和GPU 104之间有任何类型的数据复制或数据传输。这可以通过允许CPU 102和GPU 104共享表面122来做到。如上文所描述的,表面122可以是物理存储设备的一部分。表面包括任意数量的物理存储器位置202。物理存储器位置202可以被组织成分页的存储器格式,其中,页面是表面122内的物理存储器的固定长度的块。
CPU页面表128可以包括若干个CPU虚拟存储器地址204,而GPU页面表130可以包括若干个图形虚拟存储器地址206。CPU虚拟存储器地址204构成CPU虚拟地址空间,而图形虚拟存储器地址206构成图形虚拟地址空间。每一地址空间都被映射到每一页面表中的物理地址。如此,CPU虚拟存储器地址204和图形虚拟存储器地址206两者都分别映射到CPU页面表128和GPU页面表130内的相同组的物理地址208。
物理地址208允许CPU 102和GPU 104(图1)处理存储在表面122内的物理位置202的数据。在各种实施例中,基于被诸如应用124(图1)之类的应用访问的特定CPU虚拟地址204,分配表面122。一旦分配了表面122,每一物理地址208都被映射到CPU页面表128内的相应的CPU虚拟地址204,如图2所示。GPU页面表130内的图形虚拟存储器地址206可以与CPU页面表128同步,以便CPU虚拟地址和GPU虚拟存储器地址被映射到相同组的物理地址208。物理地址208对应于表面122内的物理位置202。相应地,可以在CPU 102和GPU 104之间直接共享表面122。在各实施例中,如果GPU 104修改位于物理位置202中的任何一个处的数据,则通过表面122,修改自动地对CPU 102可见,无需任何数据复制或数据编组(marshaling)。
图2的示意图不旨在表示UMA 200将包括图2所示出的全部组件。进一步,取决于特定实现的细节,UMA 200可包括图2中未示出的任意数量的附加组件。
图3是示出了根据各实施例的用于在计算设备的CPU和GPU之间共享存储器的方法300的流程图。在各实施例中,方法300被用来在CPU和GPU之间共享存储器,而不必将数据从CPU存储器复制到GPU存储器。
在某些实施例中,方法300可以在诸如计算设备100之类的计算设备上执行,其中,CPU 102和GPU 104通过总线106连接。在其他实施例中,CPU 102和GPU 104可以被包括诸如上文参考图2所讨论的UMA 200之类的UMA中。进一步地,方法300可以由诸如计算设备100的设备驱动器126之类的计算设备的驱动器执行。
方法从框302开始,在物理存储器内分配表面。在各实施例中,可以响应于来自在计算设备的CPU上运行的应用的输入,在计算设备的物理存储器内分配表面。此外,在各实施例中,还可以由设备驱动器分配表面。应用或设备驱动器可以使用CPU虚拟地址从CPU访问表面。在各实施例中,CPU虚拟地址被计算设备的操作系统提供到应用或设备驱动器。
在框304,对应于表面内的物理位置的物理地址被映射到CPU虚拟地址。CPU虚拟存储器地址和物理地址之间的映射被包括在CPU页面表内。将物理存储器页面映射到虚拟存储器地址可以包括转换CPU虚拟地址,以确定系统存储器内的对应的物理存储器页面。当CPU虚拟地址被转换为物理地址时,在转换过程中发现的CPU虚拟地址和物理地址之间的关联被锁定。通过锁定关联,表面的对应于CPU页面表中的物理地址的物理位置可以被分页进入到缓存中。当关联被锁定时,页面将保留在缓存中,因为设备驱动器防止表面的物理地址被改变。
在框306,GPU虚拟存储器地址被映射到表面内的物理位置。在各实施例中,表面被指定为LLC可缓存的。这样的指定确保表面的物理位置被缓存到被CPU和GPU共享的LLC中。可以将应用所使用的图形虚拟存储器地址转换为被映射到CPU的虚拟地址的相同物理地址。在各实施例中,设备驱动器可以更新图形虚拟存储器地址到GPU页面表内的物理地址的映射。
将表面映射到GPU虚拟地址可以包括固定表面。通过固定表面,防止GPU虚拟地址和表面之间的映射被改变。如此,GPU虚拟存储器将对应于相同物理存储器,且物理存储器不会改变。例如,操作系统可以改变所分配的物理存储器位置,作为其存储器管理的一部分。然而,一旦表面被固定,就防止操作系统改变表面的物理存储器位置。
图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已经执行导致了表面内的数据的修改的某些计算或图形操作。在完成之后,可以由CPU处理GPU的输出。在各实施例中,当GPU通过读写表面的物理位置中的任何一个来处理表面时,处理可以在GPU的内部缓冲器和缓存中发生。相应地,在GPU处理完成之后,使GPU的内部缓冲器和缓存内的数据与LLC一致。
图3和4的流程图不旨在表示方法300和400的框将以任何特定顺序执行,或在每一情况下都包括全部框。进一步,取决于特定实现的细节,可在方法300和400中包括任何数量的附加框。另外,尽管此处所描述的方法包括GPU,但可以在诸如另一CPU之类的任何I/O设备或直接存储器访问(DMA)控制器之间共享存储器。
图5是示出了根据各实施例的存储用于在计算设备的CPU和GPU之间共享存储器的代码的有形的,非瞬时的计算机可读介质500的框图。有形、非瞬态计算机可读介质500可由处理器502在计算机总线504上访问。进一步,有形、非瞬态计算机可读介质500可包括配置为引导处理器502执行此处所述的方法的代码。
此处讨论的各软件组件可被存储在如图5中所示的有形、非瞬态计算机可读介质500上。例如,表面分配模块506可以被配置成分配或生成包括计算设备的存储器内的若干个物理存储器页面的表面。映射模块508可以被配置成将表面内的物理位置映射到CPU地址表和GPU地址表内的虚拟存储器地址。进一步地,固定模块510可以被配置成固定表面,以便防止表面内的物理位置改变。
图5的框图并不意在表示,有形、非瞬态计算机可读介质500必须包括图5中所示的全部组件。进一步,取决于特定实现的细节,有形、非瞬态计算机可读介质500可包括图5中未示出的任意数量的附加组件。
在各实施例中,CPU不必一定在CPU地址空间和GPU地址空间之间编组(marshal)数据。此外,CPU不负责确保没有其他处理核正在处理该CPU希望GPU处理的特定数据集,如此,防止处理核之间的处理竞争。
图6是用于实现共享的物理存储器的示例性系统600的框图。类似标记的项如根据图1、2A和2B所描述。在一些实施例中,系统600是媒体系统。此外,系统600可被结合在个人计算机(PC)、膝上型计算机、超膝上型计算机、平板、触摸垫、便携式计算机、手持式计算机、掌上型计算机、个人数字助理(PDA)、蜂窝电话、组合蜂窝电话/PDA、电视机、智能设备(例如,智能电话、智能平板、或智能电视机)、移动因特网设备(MID)、消息收发设备、数据通信设备等等中。
在各种实施例中,系统600包括耦合至显示器604的平台602。平台602可以从诸如内容服务设备(多个)606、或内容分发设备608(多个)之类的内容设备或其他类似的内容源接收内容。包括一个或多个导航特征的导航控制器610可以被用来与,例如,平台602和/或显示器604进行交互。在下文中更详细地描述这些组件中的每一个。
平台602可包括芯片组612、中央处理单元(CPU)102、存储器设备108、存储设备120、图形子系统614、应用124、和无线电616的任意组合。芯片组612可以在CPU 102、存储器设备108、存储设备120、图形子系统614、应用124、和无线电614之间提供相互通信。例如,芯片组612可包括能够提供与存储设备120的相互通信的存储适配器(未示出)。
处理器102可以实现为复杂指令集计算机(CISC)或精简指令集计算机(RISC)处理器、x86指令集兼容处理器、多核,或任何其他微处理器或中央处理单元(CPU)。在一些实施例中,处理器102包括双核处理器(多个)、双核移动处理器(多个)等等。
存储器108可以实现为易失性存储器设备,诸如,但不限于,随机存取存储器(RAM)、动态随机存取存储器(DRAM)或静态RAM(SRAM)。存储设备120可以实现为非易失性存储设备,诸如,但不仅限于,磁盘驱动器、光盘驱动器、磁带驱动器、内部存储设备、附连的存储设备、闪存、电池备份的SDRAM(同步DRAM),和/或网络可访问的存储设备。在各实施例中,存储设备120包括例如当包括多个硬盘驱动器时,用于提高存储器性能或对有价值的数字媒体的增强保护的技术。
图形子系统614可以对诸如静止图像或视频之类的图像执行处理,供显示。图形子系统614可以包括例如图形处理单元(GPU),诸如GPU 104、或视觉处理单元(VPU)。模拟或数字接口可以被用来通信地耦合图形子系统614和显示器604。例如,接口可以是高清晰度多媒体接口、显示端口(DisplayPort)、无线HDMI,和/或无线HD兼容技术中的任何一个。图形子系统614可以被集成到CPU 102或芯片组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可包括能在内容提供者和平台602或显示器604之间经由网络142或直接单向或双向地通信内容的任何其他类似设备。可以理解,内容可以通过网络142往返于系统600中的组件中的任何一个和内容提供商单向地和/或双向地传递。内容的示例可以包括任何媒体信息,包括,例如,视频、音乐、医疗和游戏信息等等。
内容服务设备(多个)606可接收内容,诸如有线电视节目,包括媒体信息、数字信息和/或其他内容。内容提供商的示例可包括任何有线或卫星电视或无线电或因特网内容提供商等等。
在一些实施例中,平台602从包括一个或多个导航特征的导航控制器610接收控制信号。导航控制器610的导航特征可以被用来,例如,与用户界面618进行交互。导航控制器610可以是指向设备,该指向设备可以是允许用户向计算机输入空间数据(例如,连续和多维)的计算机硬件组件(具体而言,人类接口设备)。诸如图形用户界面(GUI)、电视机和监视器之类的许多系统可使用户使用物理手势控制并向计算机或电视机提供数据。物理姿势包括但不限于脸部表情、面部动作、各肢体的动作、身体动作、身体语言、或其中任意组合。这样的物理姿势可被识别并转换为命令或指令。
导航控制器610的导航特征的移动可以通过指针、光标、焦点环,或显示在显示器604上的其他可视指示器,反映在显示器604上。例如,在应用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的小形状系数设备900的示意图。类似标记的项如根据图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)和输入/输出(I/O)设备之间共享存储器的方法。该方法包括在物理存储器内分配表面。该方法包括将表面映射到CPU页面表内的多个虚拟存储器地址。该方法还包括将表面映射到基于表面的I/O设备页面表内的多个图形虚拟存储器地址。该方法还包括固定表面。
可以通过表面在CPU和I/O设备之间共享存储器,而不必将数据从CPU存储器复制到I/O设备存储器。可以响应于来自在计算设备的CPU上运行的应用的输入,分配表面。另外,该方法可以由计算设备的驱动器执行。
来自CPU和I/O设备的缓存的数据可以与在CPU和I/O设备之间共享的末级缓存(LLC)一致。可以将操作从CPU分摊到I/O设备,操作可以在I/O设备内执行。可以向CPU发送完成信号,其中,完成信号包括I/O设备已经执行导致了表面内的数据的修改的某些计算的指示。另外,设备驱动器还可以在CPU和I/O设备之间同步对数据的处理。
示例2:
此处描述了一种计算设备。该计算设备包括被配置为执行所存储的指令的中央处理单元(CPU)和存储这些指令的存储设备。存储设备包括处理器可执行代码,当由CPU执行时,处理器可执行代码被配置成在物理存储器内分配表面。计算设备还可包括图形处理单元(GPU)和GPU页面表。表面可以被映射到CPU页面表内的多个虚拟存储器地址。表面也可以被映射到GPU页面表内的多个虚拟存储器地址。计算设备可以固定表面。
可以在CPU和GPU之间共享物理存储器,而不必将数据从CPU存储器复制到GPU存储器。进一步地, CPU 和 GPU 可以位于计算设备内的同一管芯上。CPU和GPU可以共享末级缓存(LLC),其中,LLC可以从CPU或GPU的任何缓存检索数据。CPU和GPU可以包括统一存储器架构(UMA)。
处理器可执行代码可以被配置成响应于来自在计算设备的CPU上运行的应用的输入,分配表面。可以通过将虚拟地址转换为物理地址,将CPU页面表和GPU页面表中的虚拟存储器地址映射到表面内的物理位置。驱动器可以被配置成启动处理器可执行代码的执行。另外,计算设备还可包括无线电和显示器,且该无线电和显示器可被通信地至少耦合至中央处理单元。
示例3:
此处描述了其中存储有指令的至少一个有形的机器可读介质。响应于在计算设备上执行,指令导致计算设备在物理存储器内生成表面。指令还导致计算设备将表面映射到若干个CPU虚拟存储器地址,并将表面映射到若干个GPU虚拟存储器地址。还可以固定表面。
可以在CPU和GPU之间共享物理存储器,而不必将数据从CPU存储器复制到GPU存储器。进一步地,指令还可以导致来自CPU和GPU的缓存的数据与末级缓存(LLC)一致。另外,指令还可以导致计算设备响应于来自在计算设备的CPU上运行的应用的输入,分配表面。
要理解的是,上述示例中的特定细节可被用在一个或多个实施例中的任何地方。例如,上述计算设备的所有任选特征也可相对于此处描述的方法或计算机可读介质而被实现。进一步,尽管已经在此处使用过程流程图和/或状态图来描述各实施例,但本发明不限于此处的那些图或相应的描述。例如,流程不必经过每个所示的框或状态或以此处所示和所述的完全相同的顺序进行。
本发明不限于此处列出的特定细节。实际上,受益于本公开的本领域的技术人员将理解,可在本发明的范围内进行来自上述描述和附图的很多其它变型。因此,由所附权利要求书(包括对其进行的任何修改)定义本发明的范围。

Claims (1)

1.一种用于在包含多级缓存的系统中共享数据的方法,所述多级缓存包括末级缓存LLC、1级缓存和2级缓存,所述方法包括:
在所述系统中的CPU和GPU之间共享所述LLC;
对所述GPU隐藏所述2级缓存和1级缓存;
当所述GPU请求被缓存在所述2级缓存或1级缓存中的数据时,使所述LLC从所述2级缓存或1级缓存中检索数据以用于由所述GPU进行处理。
CN202010065102.7A 2012-08-17 2013-06-13 通过统一存储器架构的存储器共享 Active CN111522754B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010065102.7A CN111522754B (zh) 2012-08-17 2013-06-13 通过统一存储器架构的存储器共享

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US13/588453 2012-08-17
US13/588,453 US9373182B2 (en) 2012-08-17 2012-08-17 Memory sharing via a unified memory architecture
CN202010065102.7A CN111522754B (zh) 2012-08-17 2013-06-13 通过统一存储器架构的存储器共享
PCT/US2013/045657 WO2014028109A2 (en) 2012-08-17 2013-06-13 Memory sharing via a unified memory architecture
CN201380038015.0A CN104471540B (zh) 2012-08-17 2013-06-13 通过统一存储器架构的存储器共享

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
CN201380038015.0A Division CN104471540B (zh) 2012-08-17 2013-06-13 通过统一存储器架构的存储器共享

Publications (2)

Publication Number Publication Date
CN111522754A true CN111522754A (zh) 2020-08-11
CN111522754B CN111522754B (zh) 2023-12-12

Family

ID=50099759

Family Applications (5)

Application Number Title Priority Date Filing Date
CN201610338721.2A Active CN106021132B (zh) 2012-08-17 2013-06-13 通过统一存储器架构的存储器共享
CN201380038015.0A Active CN104471540B (zh) 2012-08-17 2013-06-13 通过统一存储器架构的存储器共享
CN201610605380.0A Active CN106294214B (zh) 2012-08-17 2013-06-13 用于在计算设备的处理器之间共享存储器的方法和计算设备
CN201910298113.7A Active CN110069421B (zh) 2012-08-17 2013-06-13 通过统一存储器架构的存储器共享
CN202010065102.7A Active CN111522754B (zh) 2012-08-17 2013-06-13 通过统一存储器架构的存储器共享

Family Applications Before (4)

Application Number Title Priority Date Filing Date
CN201610338721.2A Active CN106021132B (zh) 2012-08-17 2013-06-13 通过统一存储器架构的存储器共享
CN201380038015.0A Active CN104471540B (zh) 2012-08-17 2013-06-13 通过统一存储器架构的存储器共享
CN201610605380.0A Active CN106294214B (zh) 2012-08-17 2013-06-13 用于在计算设备的处理器之间共享存储器的方法和计算设备
CN201910298113.7A Active CN110069421B (zh) 2012-08-17 2013-06-13 通过统一存储器架构的存储器共享

Country Status (6)

Country Link
US (5) US9373182B2 (zh)
JP (4) JP6136033B2 (zh)
KR (3) KR101741598B1 (zh)
CN (5) CN106021132B (zh)
DE (3) DE112013007658B4 (zh)
WO (1) WO2014028109A2 (zh)

Families Citing this family (40)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9373182B2 (en) * 2012-08-17 2016-06-21 Intel Corporation Memory sharing via a unified memory architecture
US10031856B2 (en) * 2013-03-14 2018-07-24 Nvidia Corporation Common pointers in unified virtual memory system
DE102013022169A1 (de) 2013-03-14 2014-09-18 Nvidia Corporation Fehlerpuffer zur verfolgung von seitenfehlern in einem vereinheitlichten virtuellen speichersystem
US9323684B2 (en) * 2014-03-21 2016-04-26 Intel Corporation Dynamic cache and memory allocation for memory subsystems
CN105302765A (zh) * 2014-07-22 2016-02-03 电信科学技术研究院 一种系统级芯片及其内存访问管理方法
US9779471B2 (en) * 2014-10-01 2017-10-03 Qualcomm Incorporated Transparent pixel format converter
US10542233B2 (en) * 2014-10-22 2020-01-21 Genetec Inc. System to dispatch video decoding to dedicated hardware resources
DE102016106939B4 (de) 2015-04-17 2024-05-02 Suunto Oy Eingebettetes Rechengerät
US10572288B2 (en) * 2015-06-26 2020-02-25 Intel Corporation Apparatus and method for efficient communication between virtual machines
KR102651425B1 (ko) 2016-06-30 2024-03-28 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
JP6756177B2 (ja) * 2016-07-20 2020-09-16 コニカミノルタ株式会社 画像形成装置
CN106909515B (zh) * 2017-02-11 2020-09-18 苏州浪潮智能科技有限公司 面向混合主存的多核共享末级缓存管理方法及装置
US10380039B2 (en) * 2017-04-07 2019-08-13 Intel Corporation Apparatus and method for memory management in a graphics processing environment
US10725929B2 (en) * 2017-04-10 2020-07-28 Intel Corporation Graphics memory extended with nonvolatile memory
US10872394B2 (en) * 2017-04-27 2020-12-22 Daegu Gyeongbuk Institute Of Science And Technology Frequent pattern mining method and apparatus
CN107391431B (zh) * 2017-06-29 2020-05-05 北京金石智信科技有限公司 一种多个处理器共享访问存储器的方法、装置及系统
US10489881B2 (en) * 2017-06-30 2019-11-26 H3 Platform Inc. Direct memory access for co-processor memory
US11243790B2 (en) * 2017-09-20 2022-02-08 Huawei Technologies Co., Ltd. Re-playable execution optimized for page sharing in a managed runtime environment
US10474568B2 (en) * 2017-09-20 2019-11-12 Huawei Technologies Co., Ltd. Re-playable execution optimized for page sharing in a managed runtime environment
KR102533241B1 (ko) * 2018-01-25 2023-05-16 삼성전자주식회사 적응적으로 캐시 일관성을 제어하도록 구성된 이종 컴퓨팅 시스템
US11461869B2 (en) * 2018-03-14 2022-10-04 Samsung Electronics Co., Ltd. Slab based memory management for machine learning training
CN108459912B (zh) * 2018-04-10 2021-09-17 郑州云海信息技术有限公司 一种末级缓存管理方法及相关装置
CN110377534B (zh) * 2018-04-13 2023-11-17 华为技术有限公司 数据处理方法及装置
WO2019237261A1 (zh) 2018-06-12 2019-12-19 华为技术有限公司 一种内存管理方法、装置及系统
CN110780810B (zh) 2018-07-31 2023-06-27 爱思开海力士有限公司 用于彼此接合多个存储器系统以存储数据的设备和方法
US11249919B2 (en) 2018-07-31 2022-02-15 SK Hynix Inc. Apparatus and method for managing meta data for engagement of plural memory system to store data
CN110781098B (zh) 2018-07-31 2023-03-28 爱思开海力士有限公司 用于彼此接合多个存储器系统的设备和方法
CN109547531B (zh) * 2018-10-19 2021-04-09 华为技术有限公司 数据处理的方法、装置和计算设备
KR20200109973A (ko) 2019-03-15 2020-09-23 에스케이하이닉스 주식회사 메모리 공유를 위한 메모리 시스템 및 그것을 포함하는 데이터 처리 시스템
US10698842B1 (en) 2019-04-10 2020-06-30 Xilinx, Inc. Domain assist processor-peer for coherent acceleration
JP2020177073A (ja) 2019-04-16 2020-10-29 株式会社デンソー 車両用装置、車両用装置の制御方法
US10853263B1 (en) * 2019-07-23 2020-12-01 Ati Technologies Ulc Unified kernel virtual address space for heterogeneous computing
US11385941B2 (en) * 2019-07-31 2022-07-12 EMC IP Holding Company, LLC System and method for address space slicing with strong CPU core affinity
US11321068B2 (en) * 2019-09-05 2022-05-03 International Business Machines Corporation Utilizing memory coherency to improve bandwidth performance
US11507527B2 (en) 2019-09-27 2022-11-22 Advanced Micro Devices, Inc. Active bridge chiplet with integrated cache
CN112463714B (zh) * 2020-11-30 2022-12-16 成都海光集成电路设计有限公司 远程直接内存访问方法、异构计算系统及电子设备
CN113190346A (zh) * 2021-03-30 2021-07-30 联想(北京)有限公司 一种内存管理方法、装置及电子设备
CN114691385A (zh) * 2021-12-10 2022-07-01 全球能源互联网研究院有限公司 一种电力异构计算系统
CN115454358B (zh) * 2022-11-09 2023-03-24 摩尔线程智能科技(北京)有限责任公司 数据的存储控制方法及其装置、图像处理系统
CN116185910B (zh) * 2023-04-25 2023-07-11 北京壁仞科技开发有限公司 访问设备内存、管理设备内存的方法、设备和介质

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101002178A (zh) * 2004-08-17 2007-07-18 辉达公司 用于管理对与高速缓冲存储器相关联的存储器的各种访问类型的预测的系统、装置和方法
CN101356511A (zh) * 2005-11-15 2009-01-28 太阳微系统有限公司 通过dram存取的功率转换
CN101410803A (zh) * 2006-01-24 2009-04-15 思杰系统有限公司 用于提供对计算环境的访问的方法和系统
US20100118041A1 (en) * 2008-11-13 2010-05-13 Hu Chen Shared virtual memory
CN101978359A (zh) * 2008-03-28 2011-02-16 英特尔公司 在不同高速缓存一致性域之间共享信息的技术
CN102103567A (zh) * 2009-12-21 2011-06-22 英特尔公司 在异构处理器之间共享基于虚拟存储器的多版本数据
CN102216941A (zh) * 2008-08-19 2011-10-12 数字标记公司 用于内容处理的方法和系统
CN102591418A (zh) * 2010-12-16 2012-07-18 微软公司 具有qos保证的可缩放多媒体计算机系统体系结构
US20140049551A1 (en) * 2012-08-17 2014-02-20 Intel Corporation Shared virtual memory

Family Cites Families (43)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5421433A (en) 1977-07-18 1979-02-17 Murata Manufacturing Co Conductive silver coating
JPH01291343A (ja) * 1988-05-18 1989-11-22 Nippon Telegr & Teleph Corp <Ntt> メモリ管理装置
GB2283596B (en) * 1993-11-01 1998-07-01 Ericsson Ge Mobile Communicat Multiprocessor data memory sharing
JPH08328994A (ja) * 1995-05-30 1996-12-13 Toshiba Corp 情報処理装置
US6104417A (en) 1996-09-13 2000-08-15 Silicon Graphics, Inc. Unified memory computer architecture with dynamic graphics memory allocation
FR2806170B1 (fr) 2000-03-07 2003-06-20 Michel Paramythioti Relais optique correcteur d'aberrations pour systeme optique , notamment telescope a miroirs
US6891543B2 (en) * 2002-05-08 2005-05-10 Intel Corporation Method and system for optimally sharing memory between a host processor and graphics processor
US7421694B2 (en) * 2003-02-18 2008-09-02 Microsoft Corporation Systems and methods for enhancing performance of a coprocessor
JP4446373B2 (ja) * 2003-03-19 2010-04-07 パナソニック株式会社 プロセッサ、データ共有装置
US6981072B2 (en) * 2003-06-05 2005-12-27 International Business Machines Corporation Memory management in multiprocessor system
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
GB2417105B (en) * 2004-08-13 2008-04-09 Clearspeed Technology Plc Processor memory system
US7305524B2 (en) * 2004-10-08 2007-12-04 International Business Machines Corporation Snoop filter directory mechanism in coherency shared memory system
KR100633420B1 (ko) 2004-11-12 2006-10-16 (주)캠퍼스라인 책걸상의 높낮이 조절장치
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
US7334076B2 (en) * 2005-03-08 2008-02-19 Microsoft Corporation Method and system for a guest physical address virtualization in a virtual machine environment
US7487271B2 (en) * 2005-09-22 2009-02-03 Motorola, Inc. Method and apparatus using buffer pools and arrays of buffer pointers for sharing memory in a multiprocessor system
JP4208895B2 (ja) * 2006-05-30 2009-01-14 株式会社東芝 キャッシュメモリ装置および処理方法
US7623134B1 (en) * 2006-06-15 2009-11-24 Nvidia Corporation System and method for hardware-based GPU paging to system memory
US7636800B2 (en) 2006-06-27 2009-12-22 International Business Machines Corporation Method and system for memory address translation and pinning
US8860741B1 (en) * 2006-12-08 2014-10-14 Nvidia Corporation Graphics processor with memory management unit and cache coherent link
US8274520B2 (en) * 2007-06-08 2012-09-25 Apple Inc. Facilitating caching in an image-processing system
US7996628B2 (en) * 2008-02-14 2011-08-09 International Business Machines Corporation Cross adapter shared address translation tables
US8209493B2 (en) * 2008-03-26 2012-06-26 Intel Corporation Systems and methods for scheduling memory requests during memory throttling
GB2462860B (en) * 2008-08-22 2012-05-16 Advanced Risc Mach Ltd Apparatus and method for communicating between a central processing unit and a graphics processing unit
US8589629B2 (en) * 2009-03-27 2013-11-19 Advanced Micro Devices, Inc. Method for way allocation and way locking in a cache
US8219758B2 (en) * 2009-07-10 2012-07-10 Apple Inc. Block-based non-transparent cache
US8615637B2 (en) * 2009-09-10 2013-12-24 Advanced Micro Devices, Inc. Systems and methods for processing memory requests in a multi-processor system using a probe engine
US8412885B2 (en) 2009-11-12 2013-04-02 Intel Corporation Searching a shared cache by using search hints and masked ways
US8719543B2 (en) 2009-12-29 2014-05-06 Advanced Micro Devices, Inc. Systems and methods implementing non-shared page tables for sharing memory resources managed by a main operating system with accelerator devices
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
US8669990B2 (en) * 2009-12-31 2014-03-11 Intel Corporation Sharing resources between a CPU and GPU
US9128849B2 (en) * 2010-04-13 2015-09-08 Apple Inc. Coherent memory scheme for heterogeneous processors
US8650349B2 (en) * 2010-05-26 2014-02-11 International Business Machines Corporation Memory mapped input/output bus address range translation for virtual bridges
US8392628B2 (en) * 2010-07-16 2013-03-05 Hewlett-Packard Development Company, L.P. Sharing memory spaces for access by hardware and software in a virtual machine environment
JP2012037971A (ja) 2010-08-04 2012-02-23 Tdk Corp メモリコントローラ及びメモリコントローラを備える不揮発性メモリシステム、並びに不揮発性メモリの制御方法
US9189297B2 (en) * 2010-12-14 2015-11-17 Hewlett-Packard Development Company, L.P. Managing shared memory
US8806503B2 (en) * 2011-01-24 2014-08-12 Nec Laboratories America, Inc. Method and system for memory aware runtime to support multitenancy in heterogeneous clusters
US9471532B2 (en) * 2011-02-11 2016-10-18 Microsoft Technology Licensing, Llc Remote core operations in a multi-core computer
US9430391B2 (en) * 2012-03-29 2016-08-30 Advanced Micro Devices, Inc. Managing coherent memory between an accelerated processing device and a central processing unit
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
US9373182B2 (en) 2012-08-17 2016-06-21 Intel Corporation Memory sharing via a unified memory architecture

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101002178A (zh) * 2004-08-17 2007-07-18 辉达公司 用于管理对与高速缓冲存储器相关联的存储器的各种访问类型的预测的系统、装置和方法
CN101356511A (zh) * 2005-11-15 2009-01-28 太阳微系统有限公司 通过dram存取的功率转换
CN101410803A (zh) * 2006-01-24 2009-04-15 思杰系统有限公司 用于提供对计算环境的访问的方法和系统
CN101978359A (zh) * 2008-03-28 2011-02-16 英特尔公司 在不同高速缓存一致性域之间共享信息的技术
CN102216941A (zh) * 2008-08-19 2011-10-12 数字标记公司 用于内容处理的方法和系统
US20100118041A1 (en) * 2008-11-13 2010-05-13 Hu Chen Shared virtual memory
CN102625934A (zh) * 2008-11-13 2012-08-01 英特尔公司 共享虚拟存储器
CN102103567A (zh) * 2009-12-21 2011-06-22 英特尔公司 在异构处理器之间共享基于虚拟存储器的多版本数据
CN102591418A (zh) * 2010-12-16 2012-07-18 微软公司 具有qos保证的可缩放多媒体计算机系统体系结构
US20140049551A1 (en) * 2012-08-17 2014-02-20 Intel Corporation Shared virtual memory

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
GAUR J: "Efficient management of last-level caches in graphics processors for 3d scene rendering workloads", 《PROCEEDINGS OF THE 46TH ANNUAL IEEE/ACM INTERNATIONAL SYMPOSIUM ON MICROARCHITECTURE》, pages 395 - 407 *

Also Published As

Publication number Publication date
US20210286733A1 (en) 2021-09-16
DE112013004078B4 (de) 2023-11-09
DE112013007741B4 (de) 2023-11-09
KR20160105926A (ko) 2016-09-07
CN111522754B (zh) 2023-12-12
CN104471540A (zh) 2015-03-25
CN106021132B (zh) 2020-02-21
DE112013004078T5 (de) 2015-06-25
WO2014028109A3 (en) 2014-06-26
JP2016146201A (ja) 2016-08-12
US20160203580A1 (en) 2016-07-14
US10198361B2 (en) 2019-02-05
KR20150032556A (ko) 2015-03-26
CN106294214A (zh) 2017-01-04
KR20160042159A (ko) 2016-04-18
JP6478119B2 (ja) 2019-03-06
US20190114267A1 (en) 2019-04-18
US20160314077A1 (en) 2016-10-27
KR101721499B1 (ko) 2017-03-30
CN106294214B (zh) 2021-02-09
CN104471540B (zh) 2018-07-10
JP2017208124A (ja) 2017-11-24
DE112013007658B4 (de) 2023-11-09
US9514559B2 (en) 2016-12-06
US9373182B2 (en) 2016-06-21
KR101741598B1 (ko) 2017-05-30
US20140049548A1 (en) 2014-02-20
JP2017021837A (ja) 2017-01-26
JP6391077B2 (ja) 2018-09-19
CN110069421A (zh) 2019-07-30
US11531623B2 (en) 2022-12-20
CN106021132A (zh) 2016-10-12
WO2014028109A2 (en) 2014-02-20
JP2015524979A (ja) 2015-08-27
US10929304B2 (en) 2021-02-23
CN110069421B (zh) 2023-03-14
JP6330169B2 (ja) 2018-05-30
JP6136033B2 (ja) 2017-05-31
KR101964917B1 (ko) 2019-04-02

Similar Documents

Publication Publication Date Title
US11531623B2 (en) Memory sharing via a unified memory architecture
JP6746645B2 (ja) 共有仮想メモリ

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