CN107273311B - 计算设备、用于计算的方法和用于计算的装置 - Google Patents
计算设备、用于计算的方法和用于计算的装置 Download PDFInfo
- Publication number
- CN107273311B CN107273311B CN201710338065.0A CN201710338065A CN107273311B CN 107273311 B CN107273311 B CN 107273311B CN 201710338065 A CN201710338065 A CN 201710338065A CN 107273311 B CN107273311 B CN 107273311B
- Authority
- CN
- China
- Prior art keywords
- program
- cpu
- version
- gpu
- page table
- 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
- 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
-
- 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
- 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
- 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
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
-
- 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/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
-
- 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/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
-
- 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/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45554—Instruction set architectures of guest OS and hypervisor or native processor differ, e.g. Bochs or VirtualPC on PowerPC MacOS
-
- 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/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- 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/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45583—Memory management, e.g. access or allocation
-
- 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/15—Use in a specific computing environment
- G06F2212/151—Emulated environment, e.g. virtual machine
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
描述了用于借助多个页表执行代码的技术和系统的实施例。在实施例中,利用多个处理器的异构系统可以使用多个页表来选择性地执行可执行代码的不同版本中适当的一个。系统可以被配置为支持使用指向虚拟存储器地址的函数指针。在实施例中,诸如在取码期间,可以映射虚拟存储器地址,在实施例中,当处理器力图使用函数指针执行取码时,可以使用与该处理器相关的页表将虚拟存储器地址转换为物理存储器地址,在该物理存储器地址处可以找到可由处理器执行的代码。多个页表的使用可以允许系统在对于所指向的每一个函数仅利用一个虚拟存储器地址的同时支持函数指针。可以描述和要求保护其他实施例。
Description
本申请为分案申请,其母案的发明名称为“使用多个页表的执行”,申请日为2012年5月9日,申请号为2012800724981。
背景技术
在许多计算场景中使用异构计算系统和设备(例如,使用基于不同指令集架构的多个不同计算处理器的系统)。例如,在一些设备中,单独的CPU和GPU可以位于相同的管芯上。在各种系统中,计算处理器可以被配置为执行基于不相同指令集架构(ISA)的指令。异构处理器的使用可以提供处理、空间和资源效率。例如,位于相同管芯上的两个处理器每一个都可以具有对公共储存器的访问;这个共享存储器允许相同的数据被这两个处理器容易地访问。
然而,在一些异构计算系统中,资源共享也可能引起问题。一个此类问题在使用支持使用函数指针的程序语言时出现,该程序语言允许指向函数的指针作为数据在线程之间传送。这些函数指针在具有使用不同ISA的异构处理器的传统系统中并非频繁地得到很好的支持(或者根本未得到支持)。例如,如果创建了指向在用于第一处理器的第一ISA中编写的函数的指针,则该相同指针以被传送到在第二处理器上运行的线程而告终。如果第二处理器尝试执行由该函数指针指向的函数,则通常会出现错误,因为第二处理器会尝试执行在不支持的ISA中编写的函数。一些系统尝试通过针对每一个函数存储两个指针来解决这一点,但是这并非在所有语言中都适用,诸如例如C和C++。
附图说明
借助以下结合附图的详细描述,将易于理解实施例。为了促进该描述,相似的附图标记标明相似的结构要素。在附图的各图中通过示例而非限制的方式示出了实施例。
图1示出了根据各种实施例的具有多个页表的示例性异构执行系统。
图2示出了根据各种实施例的具有多个页表的异构执行系统的示例性虚拟机监视器。
图3示出了根据各种实施例的具有多个页表执行过程的示例性异构执行系统。
图4示出了根据各种实施例的具有多个页表加载过程的示例性异构执行系统。
图5示出了根据各种实施例的具有多个页表取码过程的示例性异构执行系统。
图6示出了根据各种实施例的适合于实现本公开内容的示例性计算环境。
具体实施方式
在以下的详细描述中,参考了附图,附图形成该详细描述的一部分,在附图中,自始至终,相似的标记标明相似的部分,并且在附图中,借助图示的方式示出了可实现的实施例。应当理解,在不脱离本公开内容的范围的情况下,可以利用其他实施例并且可以做出结构或逻辑变化。因此,以下的详细描述不应是在限制性意义上采取的,并且实施例的范围由所附权利要求书及其等同物来限定。
各种操作可以以最有助于理解所要求保护的主题的方式被依次描述为多个分立的动作或操作。然而,描述的顺序不应解释为暗示这些操作必须是依赖于顺序的。具体而言,这些操作可以不按照呈现的顺序执行。所描述的操作可以按照与所描述的实施例不同的顺序执行。可以执行各种附加操作和/或在附加实施例中可以省略所描述的操作。
出于本公开内容的目的,短语“A和/或B”表示(A)、(B)或(A和B)。出于本公开内容的目的,短语“A、B和/或C”表示(A)、(B)、(C)、(A和B)、(A和C)、(B和C)或(A、B和C)。
描述可以使用短语“在一实施例中”或“在实施例中”,其每一个都可以指代一个或多个相同或不同实施例。此外,关于本公开内容的实施例使用的术语“包含”、“包括”、“具有”等是同义的。
如本文所使用的,术语“模块”可以指代下述各项、是下述各项的一部分或者包括下述各项:专用集成电路(“ASIC”)、电子电路、执行一个或多个软件或固件程序的处理器(共享的、专用的或者组)和/或存储器(共享的、专用的或者组)、组合逻辑电路、和/或提供所描述的功能的其他适合的组件。
参考图1,示出了示出具有多个页表100(“HES 100”)的异构执行系统的框图。在各种实施例中,HES 100可以被配置为在异构处理器环境中选择性地执行可执行代码的不同版本中适当的一个。在各种实施例中,HES 100可以被配置为通过使用多个页表来支持指向用于可执行代码的虚拟存储器地址的函数指针的使用。因而,在HES 100的实施例中,函数指针可以包括虚拟存储器地址,其诸如由多个页表之一映射到物理存储器地址,该物理存储器地址包含利用函数指针的处理器可执行的可执行代码。在虚拟存储器地址转换期间(诸如在取码期间)可以使用映射。在实施例中,当HES 100的另一个处理器力图使用函数指针执行其自身的取码时,与该另一个处理器相关的第二页表可以被用于将虚拟存储器地址转换到不同的物理存储器地址,在该物理存储器地址处可以找到该另一个处理器可执行的代码。多个页表的这种使用允许HES 100在对于所指向的每一个函数仅利用一个虚拟存储器地址的同时支持函数指针。
如所示,在实施例中,一部分源代码105(例如函数)可以由编译器110编译为可执行代码的多个版本(诸如,可执行代码的所示版本113和115)。在各种实施例中,可以借助对HES 100的尤其是对在HES 100中使用的一个或多个处理器的了解来配置编译器110。在实施例中,当如此配置编译器110时,编译器110可以生成可执行代码的版本113和115,以使用来自在HES 100中所使用的处理器的各种ISA的指令。例如,如图1所示,在各种实施例中,编译器110可以将一部分源代码105编译为用于CPU(113)的可执行代码以及用于GPU(115)的可执行代码。在各种实施例中,源代码105可以包括主线代码和一个或多个函数;这些函数中的一个或多个可以被编译为可执行代码的版本113和115。在可替换的实施例中,可以使用不同编译器来编译可执行代码的不同版本,诸如由软件开发商借助以不同ISA的处理器为目标的编译器。
可执行代码的不同版本113和115随后可以由加载器120加载,在各种实施例中,加载器120可以可选地被包括在HES 100中或者可以是单独的组件或模块。在各种实施例中,加载器120可以被配置为将可执行代码的不同版本113和115加载到物理存储器160中。例如,如所示,可执行代码的不同版本113和115可以被存储在物理存储器地址的分离集合(诸如所示的集合EC 1物理地址170和EC 2物理地址180)处的物理存储器中。在各种实施例中,加载器120还可以被配置为配置或促进配置页表(诸如所示的页表140和150),以支持本文所描述的各种虚拟存储器地址转换活动。以下描述由加载器120执行的活动的具体示例。
在实施例中,可以借助被配置为执行HES 100上的可执行代码的一个或多个处理器来配置HES 100,诸如第一处理器130和第二处理器135。如上所讨论,在各种实施例中,第一处理器130和第二处理器135可以被配置为执行基于不同ISA的指令。因而,在一些实施例中,第一和第二处理器130和135可以不被配置为执行针对其他处理器而编写的代码。在一些实施例中,处理器可以包括CPU和GPU;在其他实施例中,可以利用不同的处理器。在各种实施例中,也可以利用多于两个处理器。
在各种实施例中,第一和第二处理器130和135可以被配置为利用虚拟存储器。具体而言,在各种实施例中,第一和第二处理器130和135可以与多个页表相关联,诸如页表140和150,以便使虚拟存储器管理器将要由处理器访问的虚拟存储器地址转换为物理存储器地址。在各种实施例中,多个页表140和150可以被配置为将一个或多个虚拟存储器地址转换为与包含代码的存储器区相关联的不同物理存储器地址。因而,如图1所示,页表140和150每一个都可以包含要在虚拟存储器地址的特定集合处名义上找到可执行代码的信息(例如,被示为EC VM地址155的虚拟存储器地址的集合)。然而,在各种实施例中,页表140和150每一个都可以被配置为将这些虚拟存储器地址转换为实际上找到可执行代码的物理存储器位置的分离的物理存储器地址。因而,如图1所示,页表140和150可以被配置为根据用于转换的页表将EC VM地址155的地址集合中的地址输出转换为物理存储器地址EC 1物理地址170的集合或者物理存储器地址EC 2物理地址180的集合。如上所讨论,由HES 100对这些多个页表的使用允许由HES 100选择性地使用可执行代码的多个版本,同时仍允许使用单一虚拟存储器地址来指向代码,如同仅存在一个版本。
图2示出了根据各种实施例的HES 100的示例性虚拟机监视器200(“VMM 200”)。在各种实施例中,VMM 200可以被配置为实施本文所述的HES 100的一个或多个操作。在各种实施例中,VMM 200可以被配置为转换由第一和/或第二处理器130和135进行的存储器访问。例如,第一处理器130和/或第二处理器135可以执行利用虚拟存储器的虚拟机(未示出)中的客户软件。作为客户软件的操作的一部分,第一处理器130和/或第二处理器135可以力图在一个或多个虚拟存储器地址处执行存储器访问。在一些实施例中,这些存储器访问可以包括取码和/或数据访问。
如图2所示,VMM 200可以包括页表140和150。在各种实施例中,页表140和/或150可以被配置为与第一和第二处理器130和135相关联。在一些实施例中,页表140和150中的任一个都可以仅与单个处理器相关联;在其他实施例中,页表140和150中的任一个或这二者都可以与多个处理器相关联。在实施例中,如果页表与多个处理器相关联,则这些处理器可以被配置为按照相同ISA进行操作。
在实施例中,页表140和150可以被配置为将虚拟存储器地址的公共集合示出为寻址相同的可执行代码。在附图中由被包含在页表140和150中的每一个中的相同位置中的ECVM地址155的集合展示虚拟存储器地址的该公共集合的实施例。在各种实施例中,EC VM地址155中的地址可以由页表140和150中的每一个映射到物理存储器地址的分离集合中,诸如,EC 1物理地址170和EC 2物理地址180。如上所讨论,在各种实施例中,物理存储器地址的这些集合可以由加载器120确定,加载器120被配置为将可执行代码的各种版本存储到由EC 1物理地址170和EC 2物理地址180包含的不同位置处的物理存储器中。
如上所讨论,在各种实施例中,尽管页表140和150可以被配置为将可执行代码的公共虚拟存储器地址的集合映射到分离的物理存储器地址。另外,在各种实施例中,页表140和150可以被配置为将与数据储存相关的虚拟存储器地址映射到物理存储器地址的公共集合。因而,如所示,页表140和150可以被配置为将来自数据虚拟存储器地址210的集合的虚拟存储器地址映射到数据物理存储器地址220的集合。在各种实施例中,可以由HES100所利用的多个页表中的每一个将这些与数据相关的虚拟存储器地址与物理存储器地址的相同集合相关联。在实施例中,通过利用将与数据相关的虚拟存储器地址映射到相同物理存储器地址的页表140和150,HES 100的VMM 200可以允许在仍促进使用函数指针的同时,异构的第一处理器130和第二处理器135具有对相同数据的访问,诸如如上所述。
图3示出了根据各种实施例的示例性HES 100过程300。在各种实施例中,可以在HES 100上执行过程300以编译、加载和执行可执行代码。该过程可以在操作310处开始,其中编译器110可以将一部分源代码105编译为可执行代码的多个版本,例如可执行代码的版本113和115。如上所讨论,在各种实施例中,可执行代码的每一个版本都可以包含基于不同ISA的指令,且因而每一个都可以是HES 100中的不同处理器可执行的。接下来,在操作320处,加载器120可以将可执行代码的不同版本加载到HES 100中。以下参考图4的过程400来讨论这个操作的具体实施例。接下来,在操作330处,HES 100可以使用多个页表选择性地执行可执行代码的适当版本。在实施例中,操作330可以包括使用函数指针的一个或多个取码。以下参考图5的过程500来讨论这些取码的具体实施例。随后,该过程可以结束。
图4示出了根据各种实施例的示例性HES 100过程400。该过程可以在操作420处开始,其中加载器120可以确定由编译器110生成的可执行代码的不同版本的大小。随后,在操作430处,加载器120可以基于在操作420处确定的大小来选择要被映射到可执行代码的不同版本的虚拟存储器地址。在各种实施例中,加载器可以被配置为选择可执行代码的不同版本的最大的大小作为将被映射到可执行代码的版本的虚拟存储器地址集合的大小。在实施例中,通过选择最大的大小,可以配置加载器120以使得虚拟存储器地址集合至少与在物理存储器中存储的可执行代码的任一个版本一样大。另外,通过选择最大的大小,加载器120可以更好地提供任何处理器要一直在相同虚拟存储器地址处找到的函数,不管该处理器所使用的可执行代码的版本的大小如何。在实施例中,因而,诸如当与可执行代码的大小较小的版本相比时,可以填充虚拟存储器地址集合以达到该所选择的大小。
接下来,在操作440处,加载器120可以被配置为将可执行代码的多个版本加载到物理存储器中。在各种实施例中,加载器可以将可执行代码的每一个版本加载到物理存储器地址的邻接集合处的存储器中;在其他实施例中,可以将可执行代码的每一个版本存储在分离的不邻接物理存储器段中。在各种实施例中,加载器120可以被配置为将可执行代码的各种版本加载到物理存储器的大小相等的段中。在各种实施例中,加载器120可以被配置为将可执行代码的各种版本加载到在大小上等于在操作430处选择的大小的物理存储器段中。因而,在一些实施例中,加载器120可以被配置为填充由可执行代码的较小版本占用的物理存储器,以使得可执行代码的该版本占用与其他版本相同量的物理存储器空间。在其他实施例中,可以将可执行代码的多个版本存储在不同大小的存储器段中,不管它们是否是由相同虚拟存储器地址集合映射到的。
接下来,在操作450处,加载器120可以被配置为将页表(诸如页表140和150)配置成包括针对可执行代码的各种版本的虚拟存储器地址。在各种实施例中,加载器可以在操作450处生成页表。在其他实施例中,加载器120可以被配置为将针对可执行代码的各种版本的虚拟存储器地址和物理存储器地址之间的映射写入到已经创建的页表中。在另外其他实施例中,加载器120可以被配置为向VMM 100(或其他实体)提供关于映射的信息,用于页表140和150的创建或配置。随后,该过程可以结束。
图5示出了根据各种实施例的示例性HES 100取码过程500。在各种实施例中,可以通过过程在处理器上的执行来执行过程500,其中,将函数指针传送到该过程,并且处理器尝试将执行切换到由函数指针指向的函数。尽管参考单个处理器描述了过程500,但可以认识到,在各种实施例中,可以使用相同的函数指针针对HES 100中的不同的处理器重复该过程。
该过程可以在操作510处开始,其中在HES 100的处理器之一上执行的过程可以接收函数指针。在各种实施例中,所指向的函数可以与源代码105和上述可执行代码的版本之一113或115相关联。
接下来,在操作520处,HES 100可以依据函数的指向可执行代码的函数指针来确定虚拟存储器地址。如上所讨论,在各种实施例中,虚拟存储器地址可以相同,不管当前过程正在哪个处理器上执行。接下来,在操作530处,处理器可以尝试针对由函数指针指向的可执行代码(例如,处理器预期在操作520处确定的虚拟存储器地址处找到的可执行代码)的取码。
接下来,在操作540处,VMM 200可以使用与处理器相关联的页表(例如,页表140或150)转换虚拟存储器地址。随后,在操作550处,处理器可以从在经转换的物理存储器地址处找到的物理存储器访问可执行代码。随后,在操作560处,可以由处理器执行所访问的代码。随后,该过程可以结束。
图6示出了针对一个实施例的适于实现本公开内容的实施例的示例性计算机系统600。如所示,示例性计算机系统600可以包括耦合到至少一个处理器604的控制逻辑608、耦合到系统控制逻辑608的系统存储器612、耦合到系统控制逻辑608的非易失性存储器(NVM)/储存设备616、和耦合到系统控制逻辑608的一个或多个通信接口620。在各种实施例中,一个或多个处理器604可以是处理器核。
一个实施例的系统控制逻辑608可以包括任何适合的接口控制器,其用以提供面向至少一个处理器604和/或与系统控制逻辑608通信的任何适合的设备或组件的任何适合的接口。
一个实施例的系统控制逻辑608可以包括一个或多个存储器控制器,其用以提供面向系统存储器612的接口。系统存储器612可以用于加载和存储例如用于系统600的数据和/或指令。在一个实施例中,例如,系统存储器612可以包括任何适合的易失性存储器,诸如适合的动态随机存取存储器(“DRAM”)。
在一个实施例中,系统控制逻辑608可以包括一个或多个输入/输出(“I/O”)控制器,其用以提供面向NVM/储存设备616和通信接口620的接口。
NVM/储存设备616可以例如用于存储数据和/或指令。NVM/储存设备616可以包括例如任何适合的非易失性存储器,诸如闪存,和/或可以包括例如任何适合的非易失性储存设备,诸如一个或多个硬盘驱动器(“HDD”)、一个或多个固态驱动器、一个或多个压缩盘(“CD”)驱动器、和/或一个或多个数字多功能盘(“DVD”)驱动器。
NVM/储存设备616可以包括系统600被安装于其上的设备的储存资源物理部分,或者它可以是设备可访问的但不必是设备的一部分。例如,可以经由通信接口620通过网络访问NVM/储存设备616。
具体而言,系统存储器612和NVM/储存设备616可以包括异构执行逻辑624的暂时和永久拷贝。异构执行逻辑624可以包括指令,该指令在由至少一个处理器604执行时导致系统600借助上述多个页表相关操作实施一个或多个异构执行。在一些实施例中,异构执行逻辑624还可以附加地/可替换地位于系统控制逻辑608中。
通信接口620可以提供接口以供系统600通过一个或多个网络和/或与任何其他适合的设备进行通信。通信接口620可以包括任何适合的硬件和/或固件,诸如网络适配器、一个或多个天线、无线接口等等。在各种实施例中,通信接口620可以包括接口以供系统600使用NFC、光通信(例如条形码)、蓝牙或其他类似的技术来与另一个设备直接(例如无中间物)通信。
对于一个实施例,至少一个处理器604可以被与系统控制逻辑608和/或异构执行逻辑624封装在一起。对于一个实施例,至少一个处理器604可以被与系统控制逻辑608和/或异构逻辑624封装在一起,以构成系统级封装(“SiP”)。对于一个实施例,至少一个处理器604可以被与系统控制逻辑608和/或异构执行逻辑624集成在相同管芯上。对于一个实施例,至少一个处理器604可以被与系统控制逻辑608和/或异构执行逻辑624集成在相同管芯上,以构成片上系统(“SoC”)。
以下段落描述了各种实施例的示例。在各种实施例中,一种用于执行异构计算装置上的函数的异构计算装置可以包括物理存储器。所述装置还可以包括第一计算机处理器,所述第一计算机处理器耦合到物理存储器,并被配置为支持第一指令集架构。所述装置还可以包括第二计算机处理器,所述第二计算机处理器耦合到物理存储器,并被配置为支持第二指令集架构。所述装置还可以包括虚拟机管理器,所述虚拟机管理器被配置为在所述装置的一个或多个计算机处理器上操作以将虚拟存储器地址转换为物理存储器地址。虚拟存储器管理器可以被配置为操作以使用第一页表或第二页表中的所选择的一个页表,将与第一或第二计算机处理器的取码相关的虚拟存储器地址转换为物理存储器的对应物理存储器地址,其中,使用第一或第二页表中的哪一个页表取决于虚拟存储器地址与第一还是第二计算机处理器的取码相关。
在各种实施例中,第一页表可以被配置为将虚拟存储器地址映射到第一物理存储器地址,并且第二页表可以被配置为将虚拟存储器地址映射到与第一物理存储器地址不同的第二物理存储器地址。在各种实施例中,物理存储器可以被配置为包含处于包括第一物理存储器地址的第一物理存储器区中的函数的第一可执行代码和处于包括第二物理存储器地址的第二物理存储器区中的函数的第二可执行代码,并且第一和第二物理存储器区可以是不同的物理存储器区。在各种实施例中,第一和第二指令集架构可以不同。在各种实施例中,第一可执行代码可以包括第一指令集架构的指令,并且第二可执行代码可以包括第二指令集架构的指令。
在各种实施例中,所述装置可以进一步包括加载器,所述加载器被配置为在所述装置的一个或多个计算机处理器上操作。加载器可以被配置为将第一可执行代码加载到第一物理存储器区中并将第二可执行代码加载到第二物理存储器区中。在各种实施例中,加载器可以进一步被配置为操作以将第一和第二页表的配置促进成将与取码相关的虚拟存储器地址映射到对应的第一和第二物理存储器地址。
在各种实施例中,虚拟存储器地址可以与基于包括虚拟存储器地址的函数指针的取码相关,函数指针对第一计算机处理器和第二计算机处理器二者来说都可用。在各种实施例中,虚拟存储器地址可以作为自变量而被传送到在第一计算机处理器上执行的可执行代码和在第二计算机处理器上执行的可执行代码二者。
在各种实施例中,一种计算机实施的方法可以促进代码在异构计算设备上的执行,异构计算设备包括利用第一指令集的第一计算机处理器和利用第二指令集的第二计算机处理器。所述方法可以包括:由在计算设备上操作的加载器分别在第一和第二物理存储器区处将基于第一指令集的函数的第一可执行代码和基于第二指令集的函数的第二可执行代码加载到计算设备的物理存储器中,所述加载是响应于将函数的可执行代码加载到计算设备上的存储器中的请求来执行的,所述可执行代码包括第一可执行代码和基于第二指令集的函数的第二可执行代码。所述方法还可以包括由加载器促进第一和第二页表的配置以用于转换由对应的第一和第二计算机处理器进行的虚拟存储器访问,第一和第二页表将用于对函数的取码的虚拟存储器地址映射到对应的第一和第二物理存储器区中的物理地址。
在各种实施例中,所述方法可以进一步包括由加载器将第一和第二页表的配置促进成将与包括用于取码的虚拟存储器地址的公共虚拟存储器区相关的虚拟存储器地址映射到第一和第二物理存储器区的物理存储器地址。
在各种实施例中,所述方法可以进一步包括:由加载器基于第一可执行代码和第二可执行代码各自的大小来选择公共虚拟存储器区的大小。在各种实施例中,选择大小可以包括:至少部分基于第一可执行代码的大小和第二可执行代码的大小中较大的一个来选择公共大小。
用于执行上述技术的计算机可读介质(包括非暂时性计算机可读介质)、方法、系统和设备是本文公开的实施例的说明性示例。另外,上述交互中的其他设备可以被配置为执行各种公开的技术。
尽管本文出于描述的目的示出并描述了特定实施例,但在不脱离本公开内容的范围的情况下,可以用被计划以实现相同目的的各种可替换的和/或等效的实施例或实现方式替代所示出和描述的实施例。本申请旨在覆盖本文讨论的实施例的任何改编或变形。因此,明确的意图是,本文所述的实施例仅由权利要求书来限定。
在本公开内容记载了“一”元素或“第一”元素或者其等同物的情况下,这种公开内容包括一个或多个这种元素,既不要求也不排除两个或更多个这种元素。此外,所标识的元素的序数指示符(例如第一、第二或第三)用于在元素之间进行区分,并非指示或暗示这种元素的要求或受限数量,它们也不指示这种元素的特定位置或顺序,除非以其他方式具体声明。
Claims (8)
1.一种计算机设备,包括:
耦合至彼此的中央处理单元CPU、图形处理单元GPU和存储器;
程序的CPU版本和相同程序的GPU版本,存储在所述存储器中;以及
第一页表和第二页表,分别将程序的CPU版本中的第一数据地址映射到所述存储器的地址以及将与所述程序的CPU版本中的第一数据地址相对应的所述程序的GPU版本中的第二数据地址映射到所述存储器的相同地址,
其中所述第一页表和所述第二页表要进一步分别将所述程序的单个指针映射到所述程序的CPU版本和所述程序的GPU版本。
2.根据权利要求1所述的计算机设备,其中所述程序的CPU和GPU版本分别被实现在所述CPU的指令集架构和所述GPU的指令集架构中。
3.一种用于计算的方法,包括:
提供图形处理单元GPU以用于包括在计算机系统中,所述计算机系统还包括中央处理单元CPU、存储器和第一页表,所述第一页表要将程序的CPU版本中的第一数据地址映射到所述存储器的地址;以及
提供指令以用于包括在所述计算机系统中,以便使用第二页表来将与所述程序的CPU版本中的第一数据地址相对应的所述程序的GPU版本中的第二数据地址映射到所述存储器的相同地址,
其中所述第一页表和所述第二页表要进一步分别将所述程序的单个指针映射到所述程序的CPU版本和所述程序的GPU版本。
4.根据权利要求3所述的方法,其中所述程序的CPU和GPU版本分别被实现在所述CPU的指令集架构和所述GPU的指令集架构中。
5.具有多个指令的一个或多个非暂时性计算机可读介质,所述多个指令使计算设备响应于由所述计算设备的图形处理单元GPU或中央处理单元CPU对指令的执行而执行下述操作:
使用第一页表来将程序的CPU版本中的第一数据地址映射到存储器的地址,以及
使用第二页表来将与所述程序的CPU版本中的第一数据地址相对应的所述程序的GPU版本中的第二数据地址映射到所述存储器的相同地址,
其中进一步使所述计算设备使用所述第一页表和所述第二页表来分别将所述程序的单个指针映射到所述程序的CPU版本和所述程序的GPU版本。
6.根据权利要求5所述的非暂时性计算机可读介质,其中所述程序的CPU和GPU版本分别被实现在所述CPU的指令集架构和所述GPU的指令集架构中。
7.一种用于计算的装置,包括:
用于提供图形处理单元GPU以用于包括在计算机系统中的部件,所述计算机系统还包括中央处理单元CPU、存储器和第一页表,所述第一页表要将程序的CPU版本中的第一数据地址映射到所述存储器的地址;以及
用于提供指令以用于包括在所述计算机系统中以便使用第二页表来将与所述程序的CPU版本中的第一数据地址相对应的所述程序的GPU版本中的第二数据地址映射到所述存储器的相同地址的部件,
其中所述第一页表和所述第二页表要进一步分别将所述程序的单个指针映射到所述程序的CPU版本和所述程序的GPU版本。
8.根据权利要求7所述的装置,其中所述程序的CPU和GPU版本分别被实现在所述CPU的指令集架构和所述GPU的指令集架构中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710338065.0A CN107273311B (zh) | 2012-05-09 | 2012-05-09 | 计算设备、用于计算的方法和用于计算的装置 |
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201280072498.1A CN104335162B (zh) | 2012-05-09 | 2012-05-09 | 使用多个页表的执行 |
PCT/US2012/037164 WO2013169248A1 (en) | 2012-05-09 | 2012-05-09 | Execution using multiple page tables |
CN201710338065.0A CN107273311B (zh) | 2012-05-09 | 2012-05-09 | 计算设备、用于计算的方法和用于计算的装置 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201280072498.1A Division CN104335162B (zh) | 2012-05-09 | 2012-05-09 | 使用多个页表的执行 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107273311A CN107273311A (zh) | 2017-10-20 |
CN107273311B true CN107273311B (zh) | 2020-10-23 |
Family
ID=49551094
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201280072498.1A Active CN104335162B (zh) | 2012-05-09 | 2012-05-09 | 使用多个页表的执行 |
CN201710338065.0A Active CN107273311B (zh) | 2012-05-09 | 2012-05-09 | 计算设备、用于计算的方法和用于计算的装置 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201280072498.1A Active CN104335162B (zh) | 2012-05-09 | 2012-05-09 | 使用多个页表的执行 |
Country Status (6)
Country | Link |
---|---|
US (3) | US9697120B2 (zh) |
EP (2) | EP3242213A1 (zh) |
CN (2) | CN104335162B (zh) |
AU (1) | AU2012379689B2 (zh) |
TW (1) | TWI524185B (zh) |
WO (1) | WO2013169248A1 (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8918608B2 (en) * | 2012-01-09 | 2014-12-23 | Ravello Systems Ltd. | Techniques for handling memory accesses by processor-independent executable code in a multi-processor environment |
EP3242213A1 (en) | 2012-05-09 | 2017-11-08 | Intel Corporation | Execution using multiple page tables |
CN105577499B (zh) * | 2014-10-10 | 2019-05-28 | 华为技术有限公司 | 决策协调方法、执行装置和决策协调器 |
US9910780B2 (en) * | 2015-10-28 | 2018-03-06 | International Business Machines Corporation | Pre-loading page table cache lines of a virtual machine |
US10379870B2 (en) * | 2017-07-07 | 2019-08-13 | Vmware, Inc. | Supporting soft reboot in multi-processor systems without hardware or firmware control of processor state |
US11836091B2 (en) * | 2018-10-31 | 2023-12-05 | Advanced Micro Devices, Inc. | Secure memory access in a virtualized computing environment |
KR20210017249A (ko) * | 2019-08-07 | 2021-02-17 | 삼성전자주식회사 | 프로세서 코어들과 다양한 버전의 isa들을 이용하여 명령어들을 실행하는 전자 장치 |
US11243864B2 (en) * | 2019-09-17 | 2022-02-08 | International Business Machines Corporation | Identifying translation errors |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101216805A (zh) * | 2007-01-07 | 2008-07-09 | 国际商业机器公司 | 用于在处理器存储装置内的数据移动的方法和系统 |
CN101751352A (zh) * | 2008-12-10 | 2010-06-23 | 辉达公司 | 不同种类处理单元中对绑定和迁移硬件设备的芯片组支持 |
WO2012037706A1 (en) * | 2010-09-24 | 2012-03-29 | Intel Corporation | Sharing virtual functions in a shared virtual memory between heterogeneous processors of a computing platform |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3451595B2 (ja) * | 1995-06-07 | 2003-09-29 | インターナショナル・ビジネス・マシーンズ・コーポレーション | 二つの別個の命令セット・アーキテクチャへの拡張をサポートすることができるアーキテクチャ・モード制御を備えたマイクロプロセッサ |
US6480952B2 (en) * | 1998-05-26 | 2002-11-12 | Advanced Micro Devices, Inc. | Emulation coprocessor |
US6732220B2 (en) * | 1999-02-17 | 2004-05-04 | Elbrus International | Method for emulating hardware features of a foreign architecture in a host operating system environment |
US7953588B2 (en) | 2002-09-17 | 2011-05-31 | International Business Machines Corporation | Method and system for efficient emulation of multiprocessor address translation on a multiprocessor host |
US7418584B1 (en) * | 2004-05-11 | 2008-08-26 | Advanced Micro Devices, Inc. | Executing system management mode code as virtual machine guest |
US7167970B2 (en) * | 2004-05-24 | 2007-01-23 | Sun Microsystems, Inc. | Translating loads for accelerating virtualized partition |
US20080282055A1 (en) | 2005-12-29 | 2008-11-13 | Rongzhen Yang | Virtual Translation Lookaside Buffer |
WO2007115425A1 (en) | 2006-03-30 | 2007-10-18 | Intel Corporation | Method and apparatus for supporting heterogeneous virtualization |
US8156307B2 (en) * | 2007-08-20 | 2012-04-10 | Convey Computer | Multi-processor system having at least one processor that comprises a dynamically reconfigurable instruction set |
US8122229B2 (en) | 2007-09-12 | 2012-02-21 | Convey Computer | Dispatch mechanism for dispatching instructions from a host processor to a co-processor |
US8397241B2 (en) * | 2008-11-13 | 2013-03-12 | Intel Corporation | Language level support for shared virtual memory |
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 |
US8375392B2 (en) * | 2010-01-12 | 2013-02-12 | Nec Laboratories America, Inc. | Data aware scheduling on heterogeneous platforms |
EP3242213A1 (en) * | 2012-05-09 | 2017-11-08 | Intel Corporation | Execution using multiple page tables |
-
2012
- 2012-05-09 EP EP17171776.2A patent/EP3242213A1/en not_active Ceased
- 2012-05-09 CN CN201280072498.1A patent/CN104335162B/zh active Active
- 2012-05-09 AU AU2012379689A patent/AU2012379689B2/en not_active Ceased
- 2012-05-09 EP EP12876530.2A patent/EP2847668B1/en active Active
- 2012-05-09 WO PCT/US2012/037164 patent/WO2013169248A1/en active Application Filing
- 2012-05-09 US US13/997,642 patent/US9697120B2/en active Active
- 2012-05-09 CN CN201710338065.0A patent/CN107273311B/zh active Active
-
2013
- 2013-04-15 TW TW102113265A patent/TWI524185B/zh active
-
2017
- 2017-04-25 US US15/496,929 patent/US10146687B2/en active Active
-
2018
- 2018-12-04 US US16/209,025 patent/US11119918B2/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101216805A (zh) * | 2007-01-07 | 2008-07-09 | 国际商业机器公司 | 用于在处理器存储装置内的数据移动的方法和系统 |
CN101751352A (zh) * | 2008-12-10 | 2010-06-23 | 辉达公司 | 不同种类处理单元中对绑定和迁移硬件设备的芯片组支持 |
WO2012037706A1 (en) * | 2010-09-24 | 2012-03-29 | Intel Corporation | Sharing virtual functions in a shared virtual memory between heterogeneous processors of a computing platform |
Also Published As
Publication number | Publication date |
---|---|
EP2847668B1 (en) | 2022-02-09 |
US20140082253A1 (en) | 2014-03-20 |
US10146687B2 (en) | 2018-12-04 |
TW201411350A (zh) | 2014-03-16 |
WO2013169248A1 (en) | 2013-11-14 |
CN104335162B (zh) | 2018-02-23 |
EP2847668A4 (en) | 2015-12-09 |
AU2012379689A1 (en) | 2014-11-06 |
US20190146915A1 (en) | 2019-05-16 |
EP2847668A1 (en) | 2015-03-18 |
CN107273311A (zh) | 2017-10-20 |
TWI524185B (zh) | 2016-03-01 |
EP3242213A1 (en) | 2017-11-08 |
US20170228315A1 (en) | 2017-08-10 |
CN104335162A (zh) | 2015-02-04 |
US9697120B2 (en) | 2017-07-04 |
AU2012379689B2 (en) | 2016-06-30 |
US11119918B2 (en) | 2021-09-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11119918B2 (en) | Execution using multiple page tables | |
KR101817397B1 (ko) | 하나의 아키텍처의 코드 모듈이 다른 아키텍처의 라이브러리 모듈을 사용할 수 있게 하는 아키텍처 간 호환성 모듈 | |
CN107077337B (zh) | 用于执行根据两个指令集架构编译的应用编码的系统和方法 | |
EP2901266B1 (en) | Flexible acceleration of code execution | |
US9218302B2 (en) | Page table management | |
US20130117530A1 (en) | Apparatus for translating virtual address space | |
JP6458959B2 (ja) | 協調設計されたプロセッサ用動的言語アクセラレータ | |
US20140310484A1 (en) | System and method for globally addressable gpu memory | |
US11836091B2 (en) | Secure memory access in a virtualized computing environment | |
US20140298340A1 (en) | Virtual machine system, virtualization mechanism, and data management method | |
US8726248B2 (en) | Method and apparatus for enregistering memory locations | |
US20140222410A1 (en) | Hybrid emulation and kernel function processing systems and methods | |
US9405561B2 (en) | Method and system for memory overlays for portable function pointers | |
US11144329B2 (en) | Processor microcode with embedded jump table | |
US9747146B2 (en) | Method and system for memory access protection | |
GB2546577A (en) | A method for allocating memory |
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 |