CN102103567B - 在异构处理器之间共享基于虚拟存储器的多版本数据 - Google Patents
在异构处理器之间共享基于虚拟存储器的多版本数据 Download PDFInfo
- Publication number
- CN102103567B CN102103567B CN201010601559.1A CN201010601559A CN102103567B CN 102103567 B CN102103567 B CN 102103567B CN 201010601559 A CN201010601559 A CN 201010601559A CN 102103567 B CN102103567 B CN 102103567B
- Authority
- CN
- China
- Prior art keywords
- version
- processor
- edition data
- virtual memory
- shared 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/163—Interprocessor communication
- G06F15/167—Interprocessor communication using a common memory, e.g. mailbox
-
- 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
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/10—Requirements analysis; Specification techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/451—Execution arrangements for user interfaces
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/466—Transaction processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/542—Event management; Broadcasting; Multicasting; Notifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/544—Buffers; Shared memory; Pipes
-
- 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
- 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
-
- 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/657—Virtual address space management
Abstract
一种计算机系统可以包括计算机平台和输入-输出设备。所述计算机平台可以包括包含中央处理单元(CPU)和图形处理单元(GPU)的多个异构处理器、以及由至少一个异构处理器的物理私有存储空间所支持的共享虚拟存储器或者由异构处理器所共享的物理共享存储器。CPU(产生者)可以创建共享多版本数据并将该共享多版本数据存储在物理私有存储空间或者物理共享存储器中。GPU(使用者)可以获取或访问该共享多版本数据。
Description
背景技术
计算机系统可以包括支持异构处理器(诸如中央处理单元(CPU)与图形处理单元(GPU)以及对称与非对称处理器)的平台。单版本数据可以驻留在与CPU-GPU平台的第一侧(例如,CPU)相关联的第一存储器中。可以使第二侧(GPU侧)能够调用驻留在与CPU-GPU平台的第一侧(CPU侧)相关联的第一存储器中的单版本数据。而且,可以不使第一侧能够调用驻留在第二侧(GPU侧)上的第二存储器中的单版本数据。由于单版本数据可以存储在不同的地址空间中,所以现有的通信机制仅可以允许异构处理器(CPU和GPU)之间的单向通信以调用该单版本数据。
附图说明
在附图中,通过示例而非限制性的方式示出了本文描述的发明。出于说明简化和清楚的目的,附图中所示的元件不是必须按照比例进行绘制。例如,为清楚起见,一些元件的尺寸可以相对于其它元件而被放大。此外,在认为合适的情况中,可以将附图标记在各图之间重复使用以指示相应或相似的元件。
图1根据一个实施方式示出了平台100,该平台100可以支持在异构处理器(诸如CPU和GPU)之间共享基于虚拟存储器的多版本数据。
图2是根据一个实施方式示出了平台100所执行的操作的流程图。
图3是根据一个实施方式示出了平台100的产生者和使用者所执行的、用于支持在异构处理器(诸如CPU和GPU)之间共享基于虚拟存储器的多版本数据的操作的流程图。
图4是根据一个实施方式示出了产生者所执行的、用于跟踪共享虚拟存储空间中的更新存储页的操作的流程图。
图5是根据第一实施方式示出了平台100的产生者所执行的、用于提供使用者能够获取的多版本数据的“diff”操作的线路图示。
图6根据一个实施方式示出了可以包括平台的计算机系统,该平台可以支持在平台的异构处理器之间共享基于虚拟存储器的多版本数据。
具体实施方式
下面的说明描述了用于在计算机平台的异构处理器(例如CPU和GPU)之间共享基于虚拟存储器的多版本数据的技术。在下面的描述中,阐述了许多具体细节,诸如逻辑实现、资源划分或共享、或复制实现、系统部件的类型与相互关系、以及逻辑划分或集成选择,以便提供对本发明的更透彻的理解。然而,本领域技术人员应当意识到,可以在没有这些具体细节的情况下实现本发明。在其他实例中,没有详细示出控制结构、门级电路和全软件指令序列,以便不模糊本发明。采用所包含的描述,本领域普通技术人员将能够在不进行过度实验的情况下实现适当的功能。
本说明书中对“一个实施方式”、“实施方式”或“示例性实施方式”的引用表示所描述的实施方式可以包括特定的特征、结构或特性,但是每个实施方式可以不是必须地包括这些特定的特征、结构或特性。而且,这些短语不是必然地指代相同的实施方式。此外,当结合实施方式描述特定的特征、结构或特性时,应当认为,不论是否明确地进行说明,结合其它实施方式来实现这些特征、结构或特性都在本领域技术人员的知识范围内。
本发明的实施方式可用硬件、固件、软件或它们的任意组合来实现。还可以将本发明的实施方式实现为存储在机器可读介质上的指令,这些指令可由一个或多个处理器读取并执行。机器可读存储介质可以包括用于以机器(例如,计算设备)可读的形式来存储或传输信息的任何机制。
例如,机器可读存储介质可以包括只读存储器(ROM)、随机存取存储器(RAM)、磁盘存储媒介、光存储媒介、闪存设备、电或光形式的信号。此外,本文中可将固件、软件、例程以及指令描述为执行特定的动作。然而,应当意识到,这些描述仅是出于方便的目的,并且这些动作实际上源自计算设备、处理器、控制器以及执行固件、软件、例程和指令的其他设备。
在一个实施方式中,计算机平台可以支持一种或多种技术来在异构处理器(例如,CPU和GPU)之间共享基于虚拟存储器的多版本数据。在一个实施方式中,共享存储器语义(semantics)可以提供原语(primitive),诸如可以使CPU或GPU的存储“逻辑提交”给共享存储器的发布操作以及可以使CPU或GPU存储器与共享存储器“逻辑同步”的获取操作。
在一个实施方式中,发布操作可以跟踪可被更新(或修改)的共享存储器中的页。在一个实施方式中,可以执行页的之前版本与当前版本的“差(diff)”运算,并且diff运算的结果与相关联的新版本号可以被存储在分离的存储区中。在一个实施方式中,为了能够跟踪更新(或修改或脏)页,可以在发布时将共享虚拟存储页设置为“写保护”模式,以便可以在对页进行写入时导致创建对处理程序的俘获。在一个实施方式中,该处理程序可以用于创建页的备份副本(孪生页)。在一个实施方式中,可以使用辅助存储器来标记存储单元(或特定比特),以表明页被更新或页是脏的。因此,对于在产生者(例如,CPU)方发布并在使用者(例如,GPU)方获取的数据结构而言,可以仅传送每个版本的修改的字节。虽然使用者执行对特定版本号的获取操作,但是可将存储的diff顺序地合并到使用者的私有地址空间中。在一个实施方式中,共享虚拟存储器可由异构处理器的物理私有存储空间或异构处理器所共享的物理共享存储器来支持。
图1示出了在异构处理器(诸如CPU和GPU)之间提供共享多版本数据的平台100的实施方式。在一个实施方式中,平台100可以包括中央处理器(CPU)110、与CPU 110相关联的操作系统(OS)112、CPU私有空间115、CPU编译器118、共享虚拟存储器(或者多版本共享存储器)130、图形处理单元(GPU)180、与GPU 180相关联的操作系统(OS)182、GPU私有空间185以及GPU编译器188。在一个实施方式中,OS 112可以管理CPU 110和CPU私有空间115、GPU 180和GPU私有空间185的资源。在一个实施方式中,为了支持共享虚拟存储器130,CPU私有空间115和GPU私有空间185可以包括多版本数据的副本。在一个实施方式中,为了保持存储器的一致性,诸如对象131之类的元数据可以用于同步存储在CPU私有空间115和GPU私有空间185中的副本。在其他实施方式中,多版本数据可以存储在诸如共享存储器650(见图6,下文进行描述)之类的物理共享存储器中。
在一个实施方式中,CPU编译器118和GPU编译器188可以分别耦合到CPU 110和GPU 180,或者也可以被远程地提供在其他平台或计算机系统上。与CPU 110相关联的编译器118可以为CPU 110生成编译代码,以及与GPU 180相关联的编译器188可以为GPU 180生成编译代码。
在一个实施方式中,CPU编译器118和GPU编译器188可以通过用高级语言(诸如面向对象的语言)对用户所提供的对象的一个或多个成员函数进行编译来生成编译代码。在一个实施方式中,编译器118和188可以使对象131被产生者的共享虚拟存储器130所支持并由使用者从共享虚拟存储器130中获取,该对象131可以包括共享多版本数据132。在一个实施方式中,共享虚拟存储器130所支持的对象131可以包括共享多版本数据132以及一个或多个成员函数(诸如,虚拟函数VF 133-A至133-K以及非虚拟函数NVF 136-A至136-L)。在一个实施方式中,CPU 110与GPU 180之间的通信可由成员函数(诸如共享对象131的VF 133和NVF 136)来提供。
用于支持基于共享虚拟存储器的多版本数据的平台100的操作的实施方式如图2的流程图所示。在框210中,CPU 110(产生者)可以创建诸如共享多版本数据132这样的多版本数据,该多版本数据在共享虚拟存储器130中得到支持。在一个实施方式中,CPU 110可以使用VersionDataCommit过程来创建共享多版本数据132。在一个实施方式中,CPU 110可以计算新的版本号。在一个实施方式中,可以通过递增当前版本号(CuVerNo)来生成该新的版本号。在一个实施方式中,该新的版本号可以等于(CuVerNo+1)。
在一个实施方式中,如果当前版本号所识别的当前页被更新,则CPU110可以确定之前版本页与当前版本页之间的差异内容(diff)。在一个实施方式中,CPU 110可以构建diff节点(或者更新版本节点),该diff节点可以包括差异内容和新的版本号。在一个实施方式中,CPU 110可以向diff列表中插入diff节点。在一个实施方式中,共享多版本数据132可以包括包含之前版本页、当前版本页以及更新版本存储页的页。在一个实施方式中,对当前版本页的更新可以创建更新版本存储页。在一个实施方式中,共享多版本数据132可由产生者(CPU 110)创建并由使用者(GPU 180)来访问。
在框250中,可以使得使用者(GPU 180)能够获取共享虚拟存储器130所支持的共享多版本数据132。在一个实施方式中,GPU 180可以使用VersionDataAcquire过程来获取或访问共享虚拟存储器130所支持的共享多版本数据132。在一个实施方式中,GPU 180可以检索diff列表来获得当前版本页并将之前版本页与当前版本页的内容相合并。在一个实施方式中,合并操作可以开始于起始页,并且diff列表中的所有节点(从起始页的版本到版本号)都可以被合并到起始页中,其由VersionDataAcquire操作指定。在一个实施方式中,可以将从包含起始页的之前版本页到当前版本页所合并的内容合并到更新版本存储页中,该更新版本存储页可由GPU 180所访问或获取。
产生者和使用者执行用于支持存储在共享存储器中的多版本数据的共享的功能的实施方式如图3的流程图所示。在框310中,CPU 110(共享多版本数据对象131的产生者)可以跟踪共享虚拟存储器130中的更新(或修改)版本存储页。
在框320中,CPU 110可以对之前版本页和当前版本页执行diff运算,以生成更新版本存储页。在一个实施方式中,CPU 110可以通过对之前版本页PVP 137(版本号=V1)和当前版本页CVP 138(版本号=V2)执行“diff”运算来生成更新版本页UVP 139(版本号=V3)。在一个实施方式中,CPU110可以提供与UVP 139相关联的新的版本号(V3)。
在框340中,CPU 110可以在共享(或虚拟)存储区中逻辑地存储diff运算的结果(即,UVP 139和新的版本号V3),例如,其可以被物理地存储在CPU私有空间115中。在框360中,CPU 110可以允许GPU 180获取每个版本的修改的字节。在一个实施方式中,CPU 110可以发布修改的字节以及相关联的版本号,以便GPU 180可以通过使用上述的VersionDataAcquire过程来获取该修改的字节。
产生者跟踪共享虚拟存储器130中的更新(或修改)页的实施方式如图4中的流程图所示。在框410中,CPU 110(产生者)可以在发布时以“写保护”模式来共享更新版本存储页。在一个实施方式中,由于以“写保护”模式共享更新版本存储页,所以当可以对更新版本存储页写入时,可以产生对处理程序的俘获。
在框450中,CPU 110可以在处理程序中创建更新版本存储页的备份副本。在一个实施方式中,为了能够跟踪诸如UVP 139这样的更新(或修改或脏)页,CPU 110可以将UVP 139设置为“写保护”模式。在一个实施方式中,CPU 110可以使用处理程序来创建UVP 139的备份副本(孪生页)。
在框480中,CPU 110可以标记辅助存储器以表明更新版本存储页或许被修改(或脏)了。在一个实施方式中,标记辅助存储器可以允许CPU 110记住更新版本存储页是脏的。在一个实施方式中,CPU 110可以在辅助存储器(诸如PCI缝隙区)中标记存储单元(或者特定比特),以表明UVP 139是更新页或修改页或脏页。
CPU 110执行作为发布操作的至少一部分的diff运算以及GPU 180执行获取操作的实施方式如图5所示。在一个实施方式中,CPU 110可以执行VersionDataCommit()函数(发布操作的一部分),以将更新版本存储页逻辑地提交给共享虚拟存储器130。在一个实施方式中,使用者(GPU 180)可以访问或获取具有版本号V2的页“i”540的数据。在一个实施方式中,当执行GetDataRelease()函数时,CPU 110可以执行由差异生成器570所表示的、对页“i”540和孪生页550的diff运算,孪生页550可以是页“i”的更新版本。在一个实施方式中,页“i”540可以表示当前版本页的未修改版本,并且孪生页550可以表示页“i”540的更新(或修改)版本。
在一个实施方式中,差异生成器570所生成的结果(其可以仅包括修改的字节)可以被存储在Diff-3字段581中。在一个实施方式中,当GPU 180正在获取使用直到版本2(V2)的多版本数据所生成的版本3数据时,diff字段581可以包括Diff-3。在一个实施方式中,诸如V3这样的新版本号可以被存储在版本识别符字段582中。在一个实施方式中,可以将Diff-3字段581以及版本识别符字段582中的相关联的新版本号(=V3)插入diff列表中。
在一个实施方式中,当执行VersionDataAcquire()过程时,GPU 180可以检索diff列表以获取页“i”540直到版本V2。在一个实施方式中,用于页“i”540直到版本V2的diff列表520可以包括Diff-1字段511与相关联的等于V1的版本号字段512以及Diff-2字段521与相关联的等于V2的版本号字段522。在一个实施方式中,GPU 180可以将diff列表520和与等于V1的版本号字段502相关联的起始页501相合并。在一个实施方式中,该合并操作可由合并生成器530来表示。在一个实施方式中,合并生成器530的结果输出可与页“i”540的内容相合并。
在一个实施方式中,可将共享多版本数据结构应用于许多编程领域中,诸如游戏应用程序。在一个实施方式中,在不导致相干业务的情况下,对共享多版本数据的更新可以逻辑地创建新版本的数据。除了优化相干业务之外,使用共享多版本数据还可以避免耗时的操作,例如,作为到共享存储器的指针的明确的编组和不编组数据在CPU和GPU侧的不同物理地址空间中会是有意义的。
而且,这种方式可以简化CPU 110与GPU 180之间的流水线数据。在一个实施方式中,用户可以不保持和实现通常是故障源的流水线。在一个实施方式中,包含CPU-GPU平台的共享虚拟存储器系统可以提供对可编程性的支持并可以将多版本结构扩展到共享存储器系统。在一个实施方式中,下面描述的共享多版本数据技术可以应用在离散和集成GPU配置中,从而对跨越不同GPU配置的API的编程进行统一。
包含异构处理器的、支持存储在共享虚拟存储器中的多版本数据的共享的计算机系统600的实施方式如图6所示。参考图6,计算机系统600可以包括包含单指令多数据(SIMD)处理器的通用处理器(或CPU)602以及图形处理单元(GPU)605。在一个实施方式中,CPU 602可以执行除了执行各种其他任务之外的增强操作或者存储一系列的指令,以在机器可读存储介质625中提供增强操作。然而,这一系列的指令也可以存储在CPU私有空间620中或存储在任何其他适当的存储介质中。在一个实施方式中,CPU 602可以与CPU传统编译器603以及CPU链接器/加载器604相关联。在一个实施方式中,GPU 605可以与GPU外围编译器606以及GPU链接器/加载器607相关联。
虽然图6中示出了分离的图形处理单元GPU 605,但是在一些实施方式中,作为另一示例,处理器602可以用于执行增强操作。操作计算机系统600的处理器602可以是耦合到逻辑630的一个或多个处理器核。逻辑630可以耦合到一个或多个I/O设备660,I/O设备660可以提供接口到计算机系统600。在一个实施方式中,逻辑630例如可以是芯片组逻辑。逻辑630耦合到存储器620,存储器620可以是任何类型的存储器,包括光、磁或者半导体存储器。图形处理单元605通过帧缓冲器耦合到显示器640。
在一个实施方式中,CPU 602(这里为产生者)和GPU 605(这里为使用者)可以支持共享存储在共享存储器650中的多版本数据结构。在一个实施方式中,如上所述,CPU 602可以支持诸如VersionDataRelease()之类的过程或函数,以创建共享多版本数据并将这些数据存储在共享存储器650中。在其他实施方式中,共享多版本数据可以存储在私有CPU存储器620和/或私有GPU存储器630中。在一个实施方式中,如上所述,GPU 605(使用者)可以支持诸如VersionDataAcquire()之类的过程或函数,以获取共享多版本数据。
本文描述的图形处理技术可以在各种硬件结构中实现。例如,可以将图形功能集成到芯片组中。可替换地,可以使用分离的图形处理器。作为再一实施方式,图形功能可以由包含多核处理器的通用处理器来实现,或者被实现为存储在机器可读介质中的软件指令集。
Claims (14)
1.一种要在具有多个异构处理器的计算机平台中执行的方法,所述多个异构处理器至少包括第一处理器和第二处理器,所述方法包括:
使用所述第一处理器创建要共享的多版本数据,其中,所述多版本数据包括所发布的初始版本和至少一个另外版本,
对于所发布的每一个另外版本,使用所述第一处理器识别所述多版本数据的当前版本和之前版本之间的差异内容,
在共享虚拟存储器中存储包括针对所发布的每一个另外版本的差异内容和所述初始版本在内的所述多版本数据,其中,所述共享虚拟存储器能够由所述异构处理器的包括所述第一处理器和所述第二处理器的至少一个子集访问,以及
从所述共享虚拟存储器获取所述多版本数据的一个特定版本以供所述第二处理器使用,其中,所述获取包括检索所述初始版本和针对每一个另外版本直到所述特定版本的差异内容,并且将针对相继的每一个另外版本的差异内容合并到所述初始版本中。
2.根据权利要求1所述的方法,其中,存储所述多版本数据包括在所述共享虚拟存储器中的分离的存储单元中存储所述差异内容。
3.根据权利要求2所述的方法,还包括:
针对每次发布生成新版本号,并将所述新版本号与所述差异内容存储在所述共享虚拟存储器中的所述分离的存储单元中。
4.根据权利要求1所述的方法,其中,还包括:
跟踪对所发布的所述多版本数据的一个版本的存储页进行的更新。
5.根据权利要求4所述的方法,其中,所述多版本数据的该个版本是以写保护模式发布的,并且其中,跟踪更新是针对以写保护模式发布的该个版本来进行的。
6.根据权利要求5所述的方法,其中,跟踪更新包括创建以写保护模式发布的所述多版本数据的该个版本的备份副本,其中,所述备份副本是在处理程序中创建的。
7.根据权利要求6所述的方法,其中,跟踪更新包括标记辅助存储器以表明以写保护模式发布的所述多版本数据的该个版本被修改。
8.一种计算机平台,包括:
多个异构处理器,包括作为产生者的第一处理器、作为使用者的第二处理器、以及共享虚拟存储器,
其中,所述第一处理器用于:
创建多版本数据,其中,所述多版本数据包括所发布的初始版本和至少一个另外版本,
对于所发布的每一个另外版本,识别所述多版本数据的当前版本和之前版本之间的差异内容,以及
在所述共享虚拟存储器中存储包括针对所发布的每一个另外版本的差异内容和所述初始版本在内的所述多版本数据,其中,所述共享虚拟存储器能够由所述异构处理器的包括所述第一处理器和所述第二处理器的至少一个子集访问,并且
其中,所述第二处理器用于从所述共享虚拟存储器获取所述多版本数据的一个特定版本,所述获取包括检索所述初始版本和针对每一个另外版本直到所述特定版本的差异内容,并且将针对相继的每一个另外版本的差异内容合并到所述初始版本中。
9.根据权利要求8所述的计算机平台,其中,所述第一处理器用于在所述共享虚拟存储器中的分离的存储单元中存储所述差异内容。
10.根据权利要求9所述的计算机平台,其中,所述第一处理器还用于生成新版本号,并用于将所述新版本号与所述差异内容存储在所述共享虚拟存储器中的所述分离的存储单元中。
11.根据权利要求8所述的计算机平台,其中,所述第一处理器用于跟踪对所发布的所述多版本数据的一个版本的存储页进行的更新。
12.根据权利要求11所述的计算机平台,其中,所述第一处理器用于以写保护模式发布所述多版本数据的该个版本。
13.根据权利要求12所述的计算机平台,其中,所述第一处理器用于创建以写保护模式发布的所述多版本数据的该个版本的备份副本,其中,所述备份副本是在处理程序中创建的。
14.根据权利要求13所述的计算机平台,其中,所述第一处理器用于标记辅助存储器以表明以写保护模式发布的所述多版本数据的该个版本被修改。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/643,803 US8868848B2 (en) | 2009-12-21 | 2009-12-21 | Sharing virtual memory-based multi-version data between the heterogenous processors of a computer platform |
US12/643,803 | 2009-12-21 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102103567A CN102103567A (zh) | 2011-06-22 |
CN102103567B true CN102103567B (zh) | 2014-06-04 |
Family
ID=43531604
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201010601559.1A Active CN102103567B (zh) | 2009-12-21 | 2010-12-20 | 在异构处理器之间共享基于虚拟存储器的多版本数据 |
Country Status (6)
Country | Link |
---|---|
US (2) | US8868848B2 (zh) |
KR (1) | KR101240092B1 (zh) |
CN (1) | CN102103567B (zh) |
DE (1) | DE102010051477B4 (zh) |
GB (1) | GB2476360B (zh) |
TW (2) | TWI451270B (zh) |
Families Citing this family (30)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9331869B2 (en) * | 2010-03-04 | 2016-05-03 | Nvidia Corporation | Input/output request packet handling techniques by a device specific kernel mode driver |
US9633407B2 (en) | 2011-07-29 | 2017-04-25 | Intel Corporation | CPU/GPU synchronization mechanism |
CN102323917B (zh) * | 2011-09-06 | 2013-05-15 | 中国人民解放军国防科学技术大学 | 一种基于共享内存实现多进程共享gpu的方法 |
CN103946824B (zh) | 2011-11-22 | 2016-08-24 | 英特尔公司 | 一种用于非易失性随机访问存储器的访问控制方法、装置及系统 |
KR101355105B1 (ko) | 2012-01-03 | 2014-01-23 | 서울대학교산학협력단 | 캐시 일관성 보장을 위한 공유 가상 메모리 관리 장치 |
US9009419B2 (en) * | 2012-07-31 | 2015-04-14 | Advanced Micro Devices, Inc. | Shared memory space in a unified memory model |
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 |
CN103020149B (zh) * | 2012-11-22 | 2016-01-20 | 用友网络科技股份有限公司 | 共享数据更新装置和共享数据更新方法 |
US10437591B2 (en) | 2013-02-26 | 2019-10-08 | Qualcomm Incorporated | Executing an operating system on processors having different instruction set architectures |
JP2014200075A (ja) * | 2013-03-15 | 2014-10-23 | 株式会社リコー | コンピュータシステム、配信制御システム、配信制御方法、及びプログラム |
US9460481B2 (en) * | 2013-03-25 | 2016-10-04 | Vmware, Inc. | Systems and methods for processing desktop graphics for remote display |
CN104111897B (zh) * | 2013-04-16 | 2017-06-13 | 华为技术有限公司 | 一种数据处理方法、装置及计算机系统 |
US20150170317A1 (en) * | 2013-12-18 | 2015-06-18 | Eric C. Samson | Load Balancing for Consumer-Producer and Concurrent Workloads |
US9372752B2 (en) * | 2013-12-27 | 2016-06-21 | Intel Corporation | Assisted coherent shared memory |
KR102114245B1 (ko) | 2014-04-10 | 2020-06-05 | 삼성전자 주식회사 | 그래픽스 상태 관리 장치 및 방법 |
US9563571B2 (en) | 2014-04-25 | 2017-02-07 | Apple Inc. | Intelligent GPU memory pre-fetching and GPU translation lookaside buffer management |
US9507726B2 (en) | 2014-04-25 | 2016-11-29 | Apple Inc. | GPU shared virtual memory working set management |
CN104281636B (zh) * | 2014-05-05 | 2017-09-08 | 神华集团有限责任公司 | 海量报表数据并发分布式处理方法 |
US9342384B1 (en) * | 2014-12-18 | 2016-05-17 | Intel Corporation | Function callback mechanism between a central processing unit (CPU) and an auxiliary processor |
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 |
GB2542988B (en) * | 2015-04-17 | 2019-11-13 | Suunto Oy | Embedded computing device comprising processing units interfaced with a shared information space |
DE102016106939A1 (de) | 2015-04-17 | 2016-10-20 | Suunto Oy | Eingebettetes Rechengerät |
CN105022716A (zh) * | 2015-06-24 | 2015-11-04 | 浪潮电子信息产业股份有限公司 | 一种多数据链路的gpu服务器 |
CN105159610B (zh) * | 2015-09-01 | 2018-03-09 | 浪潮(北京)电子信息产业有限公司 | 大规模数据处理系统及方法 |
US10489881B2 (en) * | 2017-06-30 | 2019-11-26 | H3 Platform Inc. | Direct memory access for co-processor memory |
CN109308196B (zh) * | 2018-08-22 | 2020-04-14 | 腾讯科技(深圳)有限公司 | 一种多机型设备复用方法、装置及存储介质 |
KR102158877B1 (ko) * | 2018-12-17 | 2020-09-23 | 성균관대학교 산학협력단 | 그래픽 프로세싱 유닛 상에서 작업을 프로세싱하기 위한 시스템 및 방법 |
US11693837B2 (en) * | 2020-09-18 | 2023-07-04 | Databricks, Inc. | Model ML registry and model serving |
US11782835B2 (en) * | 2020-11-30 | 2023-10-10 | Electronics And Telecommunications Research Institute | Host apparatus, heterogeneous system architecture device, and heterogeneous system based on unified virtual memory |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1601511A (zh) * | 2003-09-25 | 2005-03-30 | 国际商业机器公司 | 用于使用多个处理器操纵数据的系统和方法 |
CN1783033A (zh) * | 2004-11-19 | 2006-06-07 | 英特尔公司 | 共享公共高速缓存的异构处理器 |
Family Cites Families (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5745906A (en) * | 1995-11-14 | 1998-04-28 | Deltatech Research, Inc. | Method and apparatus for merging delta streams to reconstruct a computer file |
US6341339B1 (en) | 1998-03-26 | 2002-01-22 | Compaq Computer Corporation | Apparatus and method for maintaining data coherence within a cluster of symmetric multiprocessors |
US6457021B1 (en) | 1998-08-18 | 2002-09-24 | Microsoft Corporation | In-memory database system |
US6574749B1 (en) | 1999-10-29 | 2003-06-03 | Nortel Networks Limited | Reliable distributed shared memory |
US7437662B1 (en) * | 2001-06-15 | 2008-10-14 | Oracle International Corporation | Representing deltas between XML versions using XSLT |
US7287034B2 (en) | 2003-05-08 | 2007-10-23 | Oracle International Corporation | On-demand multi-version data dictionary to support distributed applications |
US8509051B2 (en) | 2003-09-02 | 2013-08-13 | Qualcomm Incorporated | Multiplexing and transmission of multiple data streams in a wireless multi-carrier communication system |
US7921419B2 (en) * | 2004-05-12 | 2011-04-05 | Oracle International Corporation | Method and mechanism for managing incompatible changes in a distributed system |
US7818513B2 (en) | 2004-08-10 | 2010-10-19 | Oracle America, Inc. | Coordinating accesses to shared objects using transactional memory mechanisms and non-transactional software mechanisms |
US20070088766A1 (en) * | 2005-10-17 | 2007-04-19 | Oracle International Corporation | Method and system for capturing and storing multiple versions of data item definitions |
US7516301B1 (en) * | 2005-12-16 | 2009-04-07 | Nvidia Corporation | Multiprocessor computing systems with heterogeneous processors |
US7404056B1 (en) * | 2005-12-07 | 2008-07-22 | Nvidia Corporation | Virtual copying scheme for creating multiple versions of state information |
GB0606012D0 (en) * | 2006-03-25 | 2006-05-03 | Zenopia Ltd | Data storage |
US7542977B2 (en) | 2006-06-29 | 2009-06-02 | Intel Corporation | Transactional memory with automatic object versioning |
US8154554B1 (en) * | 2006-07-28 | 2012-04-10 | Nvidia Corporation | Unified assembly instruction set for graphics processing |
US20080109795A1 (en) * | 2006-11-02 | 2008-05-08 | Nvidia Corporation | C/c++ language extensions for general-purpose graphics processing unit |
JP2008158811A (ja) | 2006-12-22 | 2008-07-10 | Toshiba Corp | 情報処理装置および情報処理方法 |
US7941791B2 (en) * | 2007-04-13 | 2011-05-10 | Perry Wang | Programming environment for heterogeneous processor resource integration |
US7996359B2 (en) * | 2008-06-16 | 2011-08-09 | International Business Machines Corporation | Managing multi-node multi-version systems |
US8531471B2 (en) | 2008-11-13 | 2013-09-10 | Intel Corporation | Shared virtual memory |
-
2009
- 2009-12-21 US US12/643,803 patent/US8868848B2/en active Active
-
2010
- 2010-11-09 TW TW099138519A patent/TWI451270B/zh active
- 2010-11-09 TW TW103122260A patent/TWI550412B/zh active
- 2010-11-15 DE DE102010051477.2A patent/DE102010051477B4/de active Active
- 2010-12-07 GB GB1020733.0A patent/GB2476360B/en active Active
- 2010-12-20 CN CN201010601559.1A patent/CN102103567B/zh active Active
- 2010-12-21 KR KR1020100131675A patent/KR101240092B1/ko active IP Right Grant
-
2014
- 2014-10-01 US US14/503,596 patent/US9710396B2/en active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1601511A (zh) * | 2003-09-25 | 2005-03-30 | 国际商业机器公司 | 用于使用多个处理器操纵数据的系统和方法 |
CN1783033A (zh) * | 2004-11-19 | 2006-06-07 | 英特尔公司 | 共享公共高速缓存的异构处理器 |
Also Published As
Publication number | Publication date |
---|---|
DE102010051477B4 (de) | 2023-08-03 |
TWI451270B (zh) | 2014-09-01 |
US8868848B2 (en) | 2014-10-21 |
GB2476360B (en) | 2012-10-31 |
US9710396B2 (en) | 2017-07-18 |
TWI550412B (zh) | 2016-09-21 |
KR101240092B1 (ko) | 2013-03-06 |
US20110153957A1 (en) | 2011-06-23 |
DE102010051477A1 (de) | 2011-06-22 |
TW201512856A (zh) | 2015-04-01 |
CN102103567A (zh) | 2011-06-22 |
KR20110073339A (ko) | 2011-06-29 |
GB201020733D0 (en) | 2011-01-19 |
TW201140334A (en) | 2011-11-16 |
US20150019825A1 (en) | 2015-01-15 |
GB2476360A (en) | 2011-06-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102103567B (zh) | 在异构处理器之间共享基于虚拟存储器的多版本数据 | |
US9817580B2 (en) | Secure migratable architecture having improved performance features | |
US8578370B2 (en) | Managing memory in multiple virtual machines | |
US8108587B2 (en) | Free-space reduction in cached database pages | |
CN101681294B (zh) | 用于存储器事务分组的方法和系统 | |
CN103460188A (zh) | 用于基于活跃分析的再具体化以减少寄存器不足并提高并行度的技术 | |
CN102103497B (zh) | 有限状态机执行装置和方法、在应用中的建立和使用方法 | |
US20110314458A1 (en) | Binding data parallel device source code | |
US9378237B2 (en) | Methods for in-place access of serialized data | |
CN110275722A (zh) | 用于升级应用的方法、装置、设备和存储介质 | |
CN104079613A (zh) | 用于多租户间共享应用程序对象的方法和系统 | |
US10891221B2 (en) | Memory management in non-volatile memory | |
US9448934B2 (en) | Affinity group access to global data | |
CN103412822A (zh) | 操作非易失性内存和数据操作的方法和相关装置 | |
CN103870309A (zh) | 用于集群多级寄存器堆的寄存器分配 | |
CN104050118A (zh) | 提供对设备功能的访问的装置、系统和方法 | |
CN102193804B (zh) | 一种单板驱动的加载方法和通信设备 | |
US10620916B2 (en) | Read-only communication operator | |
CN110245024A (zh) | 静态存储块的动态分配系统及其方法 | |
CN103870247A (zh) | 用于保存和恢复线程组操作状态的技术 | |
CN102902629A (zh) | 存储空间映射方法及装置 | |
CN108595488B (zh) | 数据迁移方法和装置 | |
US20230205532A1 (en) | Offloading computation based on extended instruction set architecture | |
CN114706715B (zh) | 一种基于bmc的分布式raid的控制方法、装置、设备及介质 | |
CN104536740A (zh) | 计算平台的异质处理器之间的共享虚拟存储器中的虚函数共享 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |