CN110069421B - 通过统一存储器架构的存储器共享 - Google Patents
通过统一存储器架构的存储器共享 Download PDFInfo
- Publication number
- CN110069421B CN110069421B CN201910298113.7A CN201910298113A CN110069421B CN 110069421 B CN110069421 B CN 110069421B CN 201910298113 A CN201910298113 A CN 201910298113A CN 110069421 B CN110069421 B CN 110069421B
- Authority
- CN
- China
- Prior art keywords
- gpu
- cpu
- memory
- virtual address
- shared
- 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.)
- Active
Links
- 238000012545 processing Methods 0.000 claims abstract description 49
- 238000013507 mapping Methods 0.000 claims abstract description 17
- 230000004044 response Effects 0.000 claims description 10
- 238000000034 method Methods 0.000 abstract description 43
- 238000010586 diagram Methods 0.000 description 21
- 230000008569 process Effects 0.000 description 16
- 238000004891 communication Methods 0.000 description 9
- 238000013519 translation Methods 0.000 description 6
- 230000001413 cellular effect Effects 0.000 description 5
- 230000004048 modification Effects 0.000 description 5
- 238000012986 modification Methods 0.000 description 5
- 230000003287 optical effect Effects 0.000 description 4
- 230000000007 visual effect Effects 0.000 description 4
- 239000000872 buffer Substances 0.000 description 3
- 230000008859 change Effects 0.000 description 3
- JLQUFIHWVLZVTJ-UHFFFAOYSA-N carbosulfan Chemical compound CCCCN(CCCC)SN(C)C(=O)OC1=CC=CC2=C1OC(C)(C)C2 JLQUFIHWVLZVTJ-UHFFFAOYSA-N 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000001228 spectrum Methods 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 210000003813 thumb Anatomy 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 230000003190 augmentative effect Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000004883 computer application Methods 0.000 description 1
- 238000005265 energy consumption Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 210000003414 extremity Anatomy 0.000 description 1
- 239000004744 fabric Substances 0.000 description 1
- 230000001815 facial effect Effects 0.000 description 1
- 230000008921 facial expression Effects 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 210000003811 finger Anatomy 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000007334 memory performance Effects 0.000 description 1
- 239000002184 metal Substances 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 230000010076 replication Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 210000000707 wrist Anatomy 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1009—Address translation using page tables, e.g. page table structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0811—Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/109—Address translation for multiple virtual address spaces, e.g. segmentation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/60—Memory management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T11/00—2D [Two Dimensional] image generation
- G06T11/60—Editing figures and text; Combining figures or text
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
- G06F12/1036—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] for multiple virtual address spaces, e.g. segmentation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1081—Address translation for peripheral access to main memory, e.g. direct memory access [DMA]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/45—Caching of specific data in cache memory
- G06F2212/455—Image or video data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
- G06F2212/6042—Allocation of cache space to multiple users or processors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/62—Details of cache specific to multiprocessor cache arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/65—Details of virtual memory and virtual address translation
- G06F2212/656—Address space sharing
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy 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
技术领域
本发明一般涉及存储器在计算系统内的中央处理单元(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可以使用任何相互可访问的存储位置来执行共享的虚拟存储器。任何相互可访问的存储位置可以包括,但不仅限于,存储器设备104的任何区域、存储器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 (24)
1.一种移动计算系统,包括:
集成显示设备;
系统存储器,用于存储指令和数据;以及
与所述系统存储器耦合的处理装置,所述处理装置包括:
中央处理单元CPU;
图形处理单元GPU,与在相同管芯上的所述CPU耦合,所述CPU和所述GPU要共享所述系统存储器的区域,所述GPU和所述CPU要具有共享的虚拟地址空间来引用所述系统存储器的所述区域,其中所述系统存储器的所述区域的至少一部分要在与所述GPU关联的页表内映射;以及
与所述CPU和所述GPU耦合的共享末级高速缓存,所述共享末级高速缓存用于将对应于相应存储器访问的数据高速缓存到所述CPU和所述GPU所共享的虚拟地址空间。
2.如权利要求1所述的移动计算系统,其中所述显示设备包括触摸屏。
3.如权利要求2所述的移动计算系统,还包括触摸板。
4.如权利要求1所述的移动计算系统,其中所述系统存储器包括动态随机存取存储器( DRAM ) 。
5.如权利要求1所述的移动计算系统,其中所述系统存储器的所述区域要使能对所述CPU和所述GPU共享的虚拟地址空间内的共用数据结构的访问。
6.如权利要求1所述的移动计算系统,其中所述CPU要将GPU虚拟地址映射到所述系统存储器的所述区域,所述GPU虚拟地址在GPU页表中映射。
7.如权利要求1所述的移动计算系统,其中所述系统存储器的所述区域要存储基于指针的数据结构,并且所述GPU要经由指针来访问所述基于指针的数据结构中的数据。
8.如权利要求1所述的移动计算系统,其中所述系统存储器的所述区域要由所述CPU响应于来自应用的输入来分配,所述应用要在所述CPU上执行。
9.如权利要求1所述的移动计算系统,所述CPU要同步所述CPU和所述GPU的页表数据。
10.一种移动计算设备,包括:
存储器设备,以及
处理装置,与所述存储器设备耦合,所述处理装置包括:
中央处理单元CPU;
图形处理单元GPU,与在相同管芯上的所述CPU耦合,所述CPU和所述GPU要共享所述存储器设备的存储器区域,所述GPU和所述CPU要具有共享的虚拟地址空间来引用所述存储器区域,其中所述存储器区域的至少一部分要在与所述GPU关联的页表内映射;以及
与所述CPU和所述GPU耦合的共享末级高速缓存,所述共享末级高速缓存用于将对应于相应存储器访问的数据高速缓存到所述CPU和所述GPU所共享的虚拟地址空间。
11.如权利要求10所述的移动计算设备,其中所述存储器设备包括动态随机存取存储器( DRAM ) 。
12.如权利要求10所述的移动计算设备,其中所述存储器区域要使能对所述CPU和所述GPU共享的虚拟地址空间内的共用数据结构的访问。
13.如权利要求10所述的移动计算设备,其中所述CPU要将GPU虚拟地址映射到所述存储器区域,所述GPU虚拟地址在GPU页表中映射。
14.如权利要求10所述的移动计算设备,其中所述存储器区域要存储基于指针的数据结构,所述GPU要经由指针来访问所述基于指针的数据结构中的数据。
15.如权利要求10所述的移动计算设备,其中所述存储器区域要由所述CPU响应于来自应用的输入来分配,所述应用要在所述CPU上执行。
16.如权利要求10所述的移动计算设备,所述CPU要同步所述CPU和所述GPU的页表数据。
17.一种非易失性机器可读介质,其存储指令,所述指令促使一个或者多个处理器执行操作来实现虚拟存储器的共享,所述操作包括:
在位于相同管芯上的中央处理单元CPU和图形处理单元GPU之间共享存储器区域,所述GPU和所述CPU具有在所述存储器区域内的共享虚拟地址空间;
由所述CPU和所述GPU访问所述存储器区域内的数据,其中所述存储器区域的至少一部分在与所述GPU关联的页表内映射,其中由所述CPU和所述GPU访问所述存储器区域内的数据包括访问所述CPU和所述GPU共享的末级高速缓存内的数据。
18.如权利要求17所述的非易失性机器可读介质,还包括,由所述CPU和所述GPU访问所述共享虚拟地址空间内的共用数据结构。
19.如权利要求17所述的非易失性机器可读介质,还包括,由所述CPU将GPU虚拟地址映射到所述存储器区域,所述GPU虚拟地址在GPU页表内映射。
20.如权利要求17所述的非易失性机器可读介质,其中所述存储器区域要存储基于指针的数据结构,所述GPU要经由指针来访问所述基于指针的数据结构中的数据,并且,所述存储器区域由所述CPU响应于来自应用的输入来分配,所述应用在所述CPU上执行。
21.一种实现虚拟存储器的共享的装置,包括:
用于在位于相同管芯上的中央处理单元CPU和图形处理单元GPU之间共享存储器区域的部件,所述GPU和所述CPU具有在所述存储器区域内的共享虚拟地址空间;
用于由所述CPU和所述GPU访问所述存储器区域内的数据的部件,其中所述存储器区域的至少一部分在与所述GPU关联的页表内映射,其中由所述CPU和所述GPU访问所述存储器区域内的数据包括访问所述CPU和所述GPU共享的末级高速缓存内的数据。
22.如权利要求21所述的装置,还包括,用于由所述CPU和所述GPU访问所述共享虚拟地址空间内的共用数据结构的部件。
23.如权利要求21所述的装置,还包括,用于由所述CPU将GPU虚拟地址映射到所述存储器区域,所述GPU虚拟地址在GPU页表内映射的部件。
24.如权利要求21所述的装置,其中所述存储器区域要存储基于指针的数据结构,所述GPU要经由指针来访问所述基于指针的数据结构中的数据,并且,所述存储器区域由所述CPU响应于来自应用的输入来分配,所述应用在所述CPU上执行。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/588,453 US9373182B2 (en) | 2012-08-17 | 2012-08-17 | Memory sharing via a unified memory architecture |
US13/588453 | 2012-08-17 | ||
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 |
---|---|
CN110069421A CN110069421A (zh) | 2019-07-30 |
CN110069421B true CN110069421B (zh) | 2023-03-14 |
Family
ID=50099759
Family Applications (5)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910298113.7A Active CN110069421B (zh) | 2012-08-17 | 2013-06-13 | 通过统一存储器架构的存储器共享 |
CN201610605380.0A Active CN106294214B (zh) | 2012-08-17 | 2013-06-13 | 用于在计算设备的处理器之间共享存储器的方法和计算设备 |
CN201610338721.2A Active CN106021132B (zh) | 2012-08-17 | 2013-06-13 | 通过统一存储器架构的存储器共享 |
CN202010065102.7A Active CN111522754B (zh) | 2012-08-17 | 2013-06-13 | 通过统一存储器架构的存储器共享 |
CN201380038015.0A Active CN104471540B (zh) | 2012-08-17 | 2013-06-13 | 通过统一存储器架构的存储器共享 |
Family Applications After (4)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610605380.0A Active CN106294214B (zh) | 2012-08-17 | 2013-06-13 | 用于在计算设备的处理器之间共享存储器的方法和计算设备 |
CN201610338721.2A Active CN106021132B (zh) | 2012-08-17 | 2013-06-13 | 通过统一存储器架构的存储器共享 |
CN202010065102.7A Active CN111522754B (zh) | 2012-08-17 | 2013-06-13 | 通过统一存储器架构的存储器共享 |
CN201380038015.0A Active CN104471540B (zh) | 2012-08-17 | 2013-06-13 | 通过统一存储器架构的存储器共享 |
Country Status (6)
Country | Link |
---|---|
US (5) | US9373182B2 (zh) |
JP (4) | JP6136033B2 (zh) |
KR (3) | KR101721499B1 (zh) |
CN (5) | CN110069421B (zh) |
DE (3) | DE112013007658B4 (zh) |
WO (1) | WO2014028109A2 (zh) |
Families Citing this family (45)
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 |
DE102013022169A1 (de) | 2013-03-14 | 2014-09-18 | Nvidia Corporation | Fehlerpuffer zur verfolgung von seitenfehlern in einem vereinheitlichten virtuellen speichersystem |
US11487673B2 (en) | 2013-03-14 | 2022-11-01 | Nvidia Corporation | Fault buffer for tracking page faults in unified virtual memory system |
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 |
WO2016205976A1 (en) * | 2015-06-26 | 2016-12-29 | 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 |
US10474568B2 (en) * | 2017-09-20 | 2019-11-12 | Huawei Technologies Co., Ltd. | Re-playable execution optimized for page sharing in a managed runtime environment |
US11243790B2 (en) * | 2017-09-20 | 2022-02-08 | 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 | 华为技术有限公司 | 一种内存管理方法、装置及系统 |
US11442628B2 (en) | 2018-07-31 | 2022-09-13 | SK Hynix Inc. | Apparatus and method for engaging a plurality of memory systems with each other |
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 |
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 | 株式会社デンソー | 車両用装置、車両用装置の制御方法 |
JP2020177074A (ja) | 2019-04-16 | 2020-10-29 | 株式会社デンソー | 車両用装置、車両用装置の制御方法 |
US11100007B2 (en) * | 2019-05-28 | 2021-08-24 | Micron Technology, Inc. | Memory management unit (MMU) for accessing borrowed memory |
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 |
US12170263B2 (en) | 2019-09-27 | 2024-12-17 | Advanced Micro Devices, Inc. | Fabricating active-bridge-coupled GPU chiplets |
US11048447B2 (en) | 2019-10-17 | 2021-06-29 | International Business Machines Corporation | Providing direct data access between accelerators and storage in a computing environment, wherein the direct data access is independent of host CPU and the host CPU transfers object map identifying object of the data |
CN113515483A (zh) * | 2020-04-10 | 2021-10-19 | 华为技术有限公司 | 一种数据传输方法及装置 |
CN112463714B (zh) * | 2020-11-30 | 2022-12-16 | 成都海光集成电路设计有限公司 | 远程直接内存访问方法、异构计算系统及电子设备 |
CN113190346B (zh) * | 2021-03-30 | 2025-03-25 | 联想(北京)有限公司 | 一种内存管理方法、装置及电子设备 |
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 (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1666182A (zh) * | 2002-05-08 | 2005-09-07 | 英特尔公司 | 用于在主机处理器和图形处理器之间优化存储器共享的方法和系统 |
CN1831790A (zh) * | 2005-03-08 | 2006-09-13 | 微软公司 | 虚拟机环境中的客机物理地址虚拟化方法和系统 |
US7623134B1 (en) * | 2006-06-15 | 2009-11-24 | Nvidia Corporation | System and method for hardware-based GPU paging to system memory |
CN101960418A (zh) * | 2008-03-26 | 2011-01-26 | 英特尔公司 | 用于改进功率/性能权衡的多核存储器热量抑制算法 |
CN101978359A (zh) * | 2008-03-28 | 2011-02-16 | 英特尔公司 | 在不同高速缓存一致性域之间共享信息的技术 |
CN102103567A (zh) * | 2009-12-21 | 2011-06-22 | 英特尔公司 | 在异构处理器之间共享基于虚拟存储器的多版本数据 |
CN102625934A (zh) * | 2008-11-13 | 2012-08-01 | 英特尔公司 | 共享虚拟存储器 |
Family Cites Families (45)
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 |
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 |
US7441087B2 (en) * | 2004-08-17 | 2008-10-21 | Nvidia Corporation | System, apparatus and method for issuing predictions from an inventory to access a memory |
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 |
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 |
CN101356511B (zh) * | 2005-11-15 | 2012-01-11 | 太阳微系统有限公司 | 通过dram存取的功率转换 |
US20070174429A1 (en) * | 2006-01-24 | 2007-07-26 | Citrix Systems, Inc. | Methods and servers for establishing a connection between a client system and a virtual machine hosting a requested computing environment |
JP4208895B2 (ja) * | 2006-05-30 | 2009-01-14 | 株式会社東芝 | キャッシュメモリ装置および処理方法 |
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 |
WO2010022185A1 (en) * | 2008-08-19 | 2010-02-25 | Digimarc Corporation | Methods and systems for content processing |
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 |
US20120159090A1 (en) * | 2010-12-16 | 2012-06-21 | Microsoft Corporation | Scalable multimedia computer system architecture with qos guarantees |
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 |
US9378572B2 (en) * | 2012-08-17 | 2016-06-28 | Intel Corporation | Shared virtual memory |
-
2012
- 2012-08-17 US US13/588,453 patent/US9373182B2/en active Active
-
2013
- 2013-06-13 CN CN201910298113.7A patent/CN110069421B/zh active Active
- 2013-06-13 CN CN201610605380.0A patent/CN106294214B/zh active Active
- 2013-06-13 DE DE112013007658.6T patent/DE112013007658B4/de active Active
- 2013-06-13 CN CN201610338721.2A patent/CN106021132B/zh active Active
- 2013-06-13 DE DE112013007741.8T patent/DE112013007741B4/de active Active
- 2013-06-13 DE DE112013004078.6T patent/DE112013004078B4/de active Active
- 2013-06-13 WO PCT/US2013/045657 patent/WO2014028109A2/en active Application Filing
- 2013-06-13 KR KR1020167008492A patent/KR101721499B1/ko active Active
- 2013-06-13 CN CN202010065102.7A patent/CN111522754B/zh active Active
- 2013-06-13 KR KR1020167023688A patent/KR101964917B1/ko active Active
- 2013-06-13 JP JP2015527456A patent/JP6136033B2/ja active Active
- 2013-06-13 KR KR1020157001126A patent/KR101741598B1/ko active Active
- 2013-06-13 CN CN201380038015.0A patent/CN104471540B/zh active Active
-
2016
- 2016-03-24 US US15/080,145 patent/US9514559B2/en active Active
- 2016-03-30 JP JP2016068954A patent/JP6478119B2/ja active Active
- 2016-06-30 US US15/199,508 patent/US10198361B2/en active Active
- 2016-09-23 JP JP2016186273A patent/JP6330169B2/ja active Active
-
2017
- 2017-07-26 JP JP2017144418A patent/JP6391077B2/ja active Active
-
2018
- 2018-12-13 US US16/219,093 patent/US10929304B2/en active Active
-
2021
- 2021-02-19 US US17/179,828 patent/US11531623B2/en active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1666182A (zh) * | 2002-05-08 | 2005-09-07 | 英特尔公司 | 用于在主机处理器和图形处理器之间优化存储器共享的方法和系统 |
CN1831790A (zh) * | 2005-03-08 | 2006-09-13 | 微软公司 | 虚拟机环境中的客机物理地址虚拟化方法和系统 |
US7623134B1 (en) * | 2006-06-15 | 2009-11-24 | Nvidia Corporation | System and method for hardware-based GPU paging to system memory |
CN101960418A (zh) * | 2008-03-26 | 2011-01-26 | 英特尔公司 | 用于改进功率/性能权衡的多核存储器热量抑制算法 |
CN101978359A (zh) * | 2008-03-28 | 2011-02-16 | 英特尔公司 | 在不同高速缓存一致性域之间共享信息的技术 |
CN102625934A (zh) * | 2008-11-13 | 2012-08-01 | 英特尔公司 | 共享虚拟存储器 |
CN102103567A (zh) * | 2009-12-21 | 2011-06-22 | 英特尔公司 | 在异构处理器之间共享基于虚拟存储器的多版本数据 |
Non-Patent Citations (3)
Title |
---|
Accelerating a Random Forest Classifier: Multi-Core, GP-GPU, or FPGA?;Brian Van Essen ET AL;《2012 IEEE 20th International Symposium on Field-Programmable Custom Computing Machines》;20120716;全文 * |
CPU-GPU系统中基于剖分的全局性能优化方法;张保等;《西安交通大学学报》;20120229;第46卷(第2期);全文 * |
DMM:虚拟机的动态内存映射模型;陈昊罡等;《中国科学:信息科学》;20101215(第12期);全文 * |
Also Published As
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 |