CN106575264A - 异构共享虚拟存储器中的按需共享性转换 - Google Patents
异构共享虚拟存储器中的按需共享性转换 Download PDFInfo
- Publication number
- CN106575264A CN106575264A CN201580038882.3A CN201580038882A CN106575264A CN 106575264 A CN106575264 A CN 106575264A CN 201580038882 A CN201580038882 A CN 201580038882A CN 106575264 A CN106575264 A CN 106575264A
- Authority
- CN
- China
- Prior art keywords
- virtual
- page
- processor
- memory page
- memory
- 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.)
- Pending
Links
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
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1458—Protection against unauthorised use of memory or access to memory by checking the subject access rights
- G06F12/1483—Protection against unauthorised use of memory or access to memory by checking the subject access rights using an access-table, e.g. matrix or list
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/062—Securing storage systems
- G06F3/0622—Securing storage systems in relation to access
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
- G06F3/0637—Permissions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
-
- 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/152—Virtualized environment, e.g. logically partitioned system
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Mathematical Physics (AREA)
- Computer Security & Cryptography (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Debugging And Monitoring (AREA)
Abstract
本申请各方面包括管理虚拟存储器页共享性的系统和方法。处理器或存储器管理单元可以在页表中设置虚拟存储器页不能与外部域处理器共享的指示。处理器或存储器管理单元可以监视外部域处理器何时尝试访问虚拟存储器页或何时尝试了访问虚拟存储器页。响应于外部域处理器尝试访问虚拟存储器页,处理器可以对虚拟存储器页执行虚拟存储器页操作。
Description
相关申请
本申请要求于2014年7月18日提交的题为“On-Demand Shareability ConversionIn A Heterogeneous Shared Virtual Memory”的美国临时申请No.62/026,319的优先权的权益,其全部内容通过引用并入本文。
背景技术
在异构共享架构(HSA)中,共享虚拟存储器(SVM)是允许多于一个处理器访问虚拟存储器位置的存储器管理的方法。使用共享虚拟存储器,来自运行在一个处理器(例如中央处理器单元(CPU))上的应用的单进程虚拟地址空间可以跨越运行在另一处理器(例如图形处理器单元(GPU)或数字信号处理器(DSP))上的其他线程或内核而被共享。各个处理器可以针对每个应用来共享单个页表(page table)以便进行虚拟到物理地址的转换,这是比为每个处理器复制页表更有效的方法。
在全存储器共享虚拟存储器中,在将存储器分配给线程或内核时,不太可能确定数据是否将与多于一个处理器共享。这可能导致所有的用户应用存储器被标记为可共享用于异构计算。为了保持存储器一致性,被标记为可共享的存储器与探听(snoop)活动相关联,该探听活动随着被标记为可共享的存储量的增加而增加。然而,将所有的用户存储器标记为可共享是低效的,因为在实践中在线程之间实际共享少得多的存储量。
发明内容
各个方面包括通过更好地管理虚拟存储器页共享性来提高计算设备的性能和功能的方法,其可以包括:在页表中设置虚拟存储器页不能与外部域处理器共享的指示;监视所述外部域处理器访问所述虚拟存储器页的尝试;以及响应于所述外部域处理器访问所述虚拟存储器页的尝试来执行操作。在一方面,响应于所述外部域处理器访问所述虚拟存储器页的尝试来执行操作可以包括对所述虚拟存储器页执行虚拟存储器页操作。在另一方面,对所述虚拟存储器页执行虚拟存储器页操作可以包括改变所述页表中的所述指示以指示所述虚拟存储器页能与所述外部域处理器共享。
在一个方面,在页表中设置虚拟存储器页不能与外部域处理器共享的指示可以包括在所述页表的现有页表字段中设置所述虚拟存储器页不能与所述外部域处理器共享的所述指示,并且改变所述页表中的所述指示以指示所述虚拟存储器页能与所述外部域处理器共享可以包括改变所述页表的所述现有页表字段中的所述指示。在一个方面,在所述页表的现有页表字段中设置所述虚拟存储器页不能与所述外部域处理器共享的所述指示可以包括设置所述页表的所述页表字段中的至少一个现有位,所述至少一个现有位指示所述虚拟存储器页不能与所述外部域处理器共享,并且改变所述页表的所述现有页表字段中的所述指示可以包括改变所述页表的所述页表字段的所述至少一个现有位,所述至少一个现有位指示所述虚拟存储器页能与所述外部域处理器共享。
在另一方面,所述方法可以包括响应于所述外部域处理器访问所述虚拟存储器页的尝试而生成中断,其中,改变所述页表中的所述指示以指示所述虚拟存储器页能与所述外部域处理器共享可以包括基于所述中断来改变所述页表中的所述指示。在一个方面,对所述虚拟存储器页执行虚拟存储器页操作可以包括确定针对所述虚拟存储器页的访问许可以指示所述外部域处理器是否能访问所述虚拟存储器页。
在另一方面,所述方法可以包括响应于所述外部域处理器访问所述虚拟存储器页的尝试而生成中断,其中,确定针对所述虚拟存储器页的所述访问许可以指示所述外部域处理器是否能访问所述虚拟存储器页是基于所述中断的。在一个方面,确定针对所述虚拟存储器页的所述访问许可还可以包括进行以下各项中的至少一项:将所述中断转换成许可违规、停止在所述外部域处理器上执行的指令、以及改变所述虚拟存储器页的所述访问许可。在一方面,对所述虚拟存储器页执行虚拟存储器页操作可以包括基于对所述虚拟存储器页的尝试访问来生成针对所述虚拟存储器页的调试信息。
在一个方面,对所述虚拟存储器页执行虚拟存储器页操作可以包括基于对所述虚拟存储器页的尝试访问来执行针对所述虚拟存储器页的管理操作,这可以包括以下操作中的至少一项:确定是否固定所述虚拟存储器页、以及确定是否将所述虚拟存储器页移动至不同访问速率的存储器位置。在一个方面,响应于所述外部域处理器访问所述虚拟存储器页的尝试来执行操作可以包括响应于所述外部域处理器访问所述虚拟存储器页的尝试来触发页错误。
在一个方面,响应于所述外部域处理器访问所述虚拟存储器页的尝试来执行操作可以包括:使存储器管理单元停止继续处理存储器操作、停止所述外部域处理器的至少一部分、使所述外部域处理器执行上下文切换操作、和/或使存储器管理单元利用特定策略来生成对所述外部域处理器的进一步数据响应。在一个方面,所述特定策略包括以下中的一项:针对读取返回零值、以及忽略写入。在另一方面,所述方法可以通知主处理器所述页错误。在一些方面,通知主处理器可以包括:触发对主OS处理器的中断、在存储器中写入值、和/或在寄存器中写入值。
此外的方面包括一种计算设备,其包括用于执行上述方面方法的操作的功能的单元。此外的方面包括具有处理器的计算设备,所述处理器配置有处理器可执行指令以执行上述方面方法的操作。此外的方面包括具有存储于其上的处理器可执行软件指令的非临时性处理器可读存储介质,所述处理器可执行软件指令被配置为使处理器执行上述方面方法的操作。
附图说明
并入本文并构成本说明书的一部分的附图示出了本发明的示例性方面。连同以上给出的一般描述和下面给出的详细描述,附图用于解释本发明的特征,而不是限制所公开的各方面。
图1是示出了可以在实现各个方面的计算设备中使用的示例片上系统(SOC)架构的组件框图。
图2是示出了可以用于实现各个方面的示例性多核处理器架构的功能框图。
图3是示出了示例性共享虚拟存储器系统的功能框图。
图4是示出了管理虚拟存储器页共享性的方面方法的过程流程图。
图5是示出了管理虚拟存储器页共享性的另一方面方法的过程流程图。
图6A是示出了管理虚拟存储器页共享性的另一方面方法的过程流程图。
图6B是示出了管理虚拟存储器页共享性的另一方面方法的过程流程图。
图7是适于与各个方面一起使用的示例性移动设备的组件框图。
图8是适于与各个方面一起使用的示例性服务器的组件框图。
图9是适于与各个方面一起使用的示例性膝上型计算机的组件框图。
具体实施方式
将参照附图来详细地描述各个方面。尽可能地,在整个附图中使用相同的附图标记来指代相同或相似的部件。对特定示例和实现的参考是出于说明的目的,并且不旨在限制权利要求书的保护范围。
在本文中用使用的词语“示例性”表示“用作示例、实例或说明”。本文中描述为“示例性”的任意实现不必被解释为比其它实施方式更优选或更有优势。
术语“移动设备”和“计算设备”在本文中可以互换使用,以指代以下各项中的任意一项或所有项:蜂窝电话、智能电话、个人或移动多媒体播放器、个人数字助理(PDA)、膝上型计算机、平板计算机、智能本、掌上计算机、无线电子邮件接收机、支持多媒体因特网的蜂窝电话、无线游戏控制器以及包括可编程处理器和存储器的类似电子设备。尽管各个方面在可能具有相对有限的处理能力和/或功率存储容量的移动设备(例如蜂窝电话和其它便携式计算平台)中是特别有用的,但是这些方面通常在向处理设备或处理核心分配线程、进程或其他指令序列的任意计算设备中都是有用的。
本文中使用的术语“片上系统”(SOC)是指包含集成在单个衬底上的多个资源和/或处理器的单个集成电路(IC)芯片。单个SOC可以包含用于数字、模拟、混合信号和射频功能单元的电路。单个SOC还可以包括任意数量的通用和/或专用处理器(数字信号处理器、调制解调处理器、视频处理器等)、存储器块(例如,ROM、RAM、闪存等)和资源(例如,定时器、电压调节器、振荡器等)。SOC还可以包括用于控制集成资源和处理器以及用于控制外围设备的软件。
本文中使用的术语“多核处理器”指代包含两个或更多个被配置为读取和执行程序指令的独立处理设备或处理核心(例如,CPU核心)的单个集成电路(IC)芯片或芯片封装。SOC可以包括多个多核处理器,并且SOC中的每个处理器可以被称为“核心”或“处理核心”。本文中使用的术语“多处理器”指代包括两个或更多个被配置为读取和执行程序指令的处理单元的系统或设备。本文中使用的术语“进程”指代可以在处理器上执行的指令序列。
如在本申请中所使用的,术语“组件”、“模块”、“系统”等旨在包括计算机相关实体,其例如但不限于:被配置为执行特定的操作或功能的硬件、固件、硬件和软件的组合、软件或执行中的软件。例如,组件可以是但不限于在处理器上运行的进程、处理器、对象、可执行文件、执行线程、程序和/或计算机。通过说明的方式,在计算设备上运行的应用和计算设备二者都可以被称为组件。一个或多个组件可以驻留在进程和/或执行线程内,并且组件可以位于一个处理器或核心上和/或分布在两个或更多个处理器或核心之间。另外,这些组件可以从其上存储有各种指令和/或数据结构的各种非临时性计算机可读介质来执行。组件可以通过本地和/或远程进程、函数或进程调用、电子信号、数据分组、存储器读/写和其他已知的计算机、处理器和/或进程相关的通信方法来通信。
为了跟上增加的消费者需求,移动设备已经变得更加特征丰富,并且现在通常包括多个处理设备、多核处理器、片上系统(SOC)、以及允许移动设备用户在移动设备上执行复杂的软件应用(例如,视频和音频流和/或处理应用、网络游戏应用等)的其他资源。复杂软件应用的执行越来越多地使用异构共享架构(HSA)中的多线程处理技术来执行。共享虚拟存储器(也称为SVM)使得多于一个处理设备能够访问在多个处理设备之间共享的单个虚拟存储器空间。例如,来自运行在一个处理器(例如CPU)上的应用的单进程虚拟地址空间可以跨越运行在另一处理器(例如GPU或DSP)上的其他线程或内核而被共享。计算设备内的各个处理器可以针对每个应用来共享单个页表以便进行虚拟到物理地址的转换,相比于针对每个处理器复制页表,其具有提高的效率以及更容易的软件管理。
在全存储器共享虚拟存储器中,通常不太可能提前确定在将存储器分配给线程或内核时是否将与多于一个处理器来共享数据。这可能导致所有的用户应用存储器被标记为可共享用于异构计算。可以在处理器之间共享的存储器与一致性开销(例如探听或者其他一致性操作)相关联,所述一致性开销可以随着被标记为可共享的存储量的增加而增加。将所有的用户存储器标记为可共享的是低效的,因为在实践中在线程之间实际共享少得多的存储量。
对于共享虚拟存储器的低效分配的先前可能的解决方案需要页表中的额外字段,这使得已改变的页表与标准化芯片架构不一致。这种可能的解决方案还需要操作系统来处理定位存储器地址转换(诸如转译查找缓存(TLB)失败)的任何故障,这不必要地消耗了处理器资源来确定存储器地址转换(例如,页游走(walk)进程)。此外,对诸如额外元数据或额外数据结构等额外信息的需求减缓了对所讨论的虚拟存储器位置的决策制定和访问速度。
各个方面通过提供管理虚拟存储器页共享性的系统和方法来改进计算设备的功能。在一些方面,可以在页表中设置虚拟存储器页不可与外部域处理器共享的指示。可以确定外部域处理器尝试访问虚拟存储器页,并且基于该确定,可以对虚拟存储器页执行虚拟存储器页操作。在一些方面,可以在页表中设置多个虚拟存储器页中的每一个都不可与外部域处理器共享的指示。可以针对在页表中所体现的基本上所有的虚拟存储器页来设置该指示。
在一些方面,当外部域处理器尝试访问针对该虚拟存储器页设置了虚拟存储器页不可与外部域处理器共享的指示的虚拟存储器页时,可以生成中断。例如,基于外部域处理器访问虚拟存储器页的尝试,存储器管理单元(MMU)或系统存储器管理单元(SMMU)可以确定页表(例如,页表字段)包括所述虚拟存储器页不是外部可共享的的指示。在一些方面,MMU可以集成到处理器中。在一些方面,SMMU可以在处理器外部。可以以各种其他配置来提供MMU和/或SMMU。MMU和SMMU通常可以被称为存储器管理单元。响应于对页表条目的这种确定,MMU或SMMU可以生成中断,并且外部域处理器的MMU或SMMU可以导致(例如触发)外部域处理器上的页错误。在这种情况下,外部域处理器可以停止(stall),或者外部域处理器可以将上下文切换到另一个进程或线程。在一些方面,外部域处理器的停止可以直接响应于页错误而发生。可替代地,SMMU或MMU可以通过停止引起该页错误的事务来间接使得外部域处理器的停止,这可能增加外部域处理器与SMMU或MMU之间和内部的事务流水线和/或队列的拥塞。MMU或SMMU还可以向主操作系统处理器发送中断,以例如通知主操作系统处理器该页错误。响应于接收到中断,主操作系统处理器可以触发中断处理程序(handler)或中断服务例程(routine)。随后,可以对虚拟存储器页执行一个或多个虚拟存储器页操作。
在一些方面,虚拟存储器页操作可以包括改变页表指示以与外部域处理器共享虚拟存储器页。例如,在页表中设置指示还可以包括在页表的现有页表字段中设置虚拟存储器页不可与外部域处理器共享的指示,以及在页表的现有页表字段中改变该指示以与外部域处理器共享虚拟存储器页。在一些方面,页表的页表字段中的至少一个现有位可以指示虚拟存储器页与外部域处理器可共享或不可共享。为了改变对共享性的指示,可以改变页表的页表字段的至少一个现有位以与外部域处理器共享虚拟存储器页。如上所述,在一些方面,当确定外部域处理器尝试访问虚拟存储器页时,可以生成中断。响应于这样的确定,可以基于中断来改变页表指示以与外部域处理器共享虚拟存储器页。
可替代地或另外地,在一些方面,虚拟存储器页操作可以包括确定针对虚拟存储器页的访问许可,以指示外部域处理器是否可以访问虚拟存储器页。在一些方面,当确定外部域处理器尝试访问虚拟存储器页时,可以生成中断,并且可以基于中断来确定针对虚拟存储器页的访问许可,以指示外部域处理器是否可以访问虚拟存储器页。
在替代的或另外的方面,基于对虚拟存储器页的尝试访问,可以为虚拟存储器页生成调试信息。另外地或可替代地,可以基于对虚拟存储器页的尝试访问来对虚拟存储器页执行管理操作。对虚拟存储器页的管理操作的示例包括确定是否固定(pin)虚拟存储器页,以及确定是否将虚拟存储器页移动到不同访问速率的存储器位置。
在替代的或另外的方面,虚拟存储器页操作可以包括使MMU或SMMU利用特定策略来生成对外部域处理器的进一步数据响应。该特定策略可以包括针对读取返回零值,以及忽略写入(也称为读为零(read-as-zero),写入忽略(write-ignore)或RAZ/WI)。
可以在多个单处理器和多处理器计算机系统(包括片上系统(SOC))上实现各个方面。图1示出了可以在实现各个方面的计算设备中使用的示例性片上系统(SOC)100架构。SOC 100可以包括多个异构处理器,其例如数字信号处理器(DSP)102、调制解调器处理器104、图形处理器106和应用处理器108。SOC 100还可以包括连接到异构处理器102、104、106、108中的一个或多个的协处理器110(例如,矢量协处理器)。每个处理器102、104、106、108、110可以包括一个或多个核心(例如,处理核心(未示出)),并且每个处理器/核心可以执行独立于其他处理器/核心的操作。SOC 100可以包括执行包括调度器的操作系统(例如,FreeBSD、LINUX、OS X、Microsoft Windows 8等)的处理器,所述调度器被配置为:将诸如线程、进程、或者数据流等指令序列调度到一个或多个处理核心以供执行。
SOC 100还可以包括模拟电路和定制电路114,其用于管理传感器数据、模数转换、无线数据传输,以及用于执行其他专门操作,诸如处理编码的音频和视频信号以在web浏览器上呈现。SOC 100还可以包括系统组件和资源116,其例如电压调节器、振荡器、锁相环、外围桥接器、数据控制器、存储器控制器、系统控制器、访问端口、定时器以及用于支持在计算设备上运行的处理器和软件程序的其他类似组件。
系统组件和资源116和/或定制电路114可以包括用于与外围设备(例如相机、电子显示器、无线通信设备、外部存储器芯片等)接口的电路。处理器102、104、106、108可以经由互连/总线模块124互相通信,以及与一个或多个存储器元件112、系统组件和资源116以及定制电路114通信,该互连/总线模块124可以包括可重构逻辑门的阵列和/或实现总线架构(例如,CoreConnect、AMBA等)。通信可以由高级互连(例如高性能片上网络(NoC))提供。
SOC 100还可以包括用于与SOC外部的资源(例如时钟118和电压调节器120)通信的输入/输出模块(未示出)。SOC外部的资源(例如,时钟118、电压调节器120)可以由两个或更多个内部SOC处理器/核心(例如,DSP 102、调制解调器处理器104、图形处理器106、应用处理器108等)共享。
除了上面讨论的SOC 100之外,可以在可以包括多个处理器、多核处理器或其任意组合的各种各样的计算系统中实现各个方面。
图2示出了可以用于实现各个方面的示例性多核处理器架构。多核处理器202可以包括紧邻(例如,在单个衬底、管芯、集成芯片等上)的两个或更多个独立处理核心204、206、230、232。处理核心204、206、230、232的紧邻允许存储器以比如果信号必须离片运行时所可能的频率/时钟速率高得多的频率/时钟速率来操作。处理核心204、206、230、232的紧邻允许对片上存储器和资源(例如,电压轨)的共享,以及允许核心之间更协调的协作。虽然在图2中示出了四个处理核心,但是应当理解,这不是限制,并且多核处理器可以包括更多或更少的处理核心。
多核处理器202可以包括多级高速缓存,所述多级高速缓存包括1级(L1)高速缓存212、214、238和240以及2级(L2)高速缓存216、226和242。多核处理器202还可以包括总线/互连接口218,主存储器220和输入/输出模块222。L2高速缓存216、226、242可以比L1高速缓存212、214、238、240更大(并且更慢),但比主存储器单元220更小(并且基本上更快)。每个处理核心204、206、230、232可以包括具有对L1高速缓存212、214、238、240的私有访问的处理单元208、210、234、236。处理核心204、206、230、232可以共享对L2高速缓存(例如,L2高速缓存242)的访问,或者可以访问独立的L2高速缓存(例如,L2高速缓存216、226)。
L1和L2高速缓存可以用于存储由处理单元频繁访问的数据,而主存储器220可以用于存储由处理核心204、206、230、232访问的更大的文件和数据单元。多核处理器202可以被配置为使得处理核心204、206、230、232按以下顺序寻找来自存储器的数据:首先查询L1高速缓存,然后查询L2高速缓存,并且如果信息没有存储在高速缓存中,则然后查询主存储器。如果信息没有存储在高速缓存或主存储器220中,则多核处理器202可以从外部存储器和/或硬盘存储器224寻找信息。
处理核心204、206、230、232可以经由总线/互连接口218互相通信。每个处理核心204、206、230、232可以对一些资源具有排他性控制而与其他核心共享其他资源。
处理核心204、206、230、232可以彼此相同、是异构的、和/或实现不同的专门功能。因此,从操作系统角度(例如,可以执行不同的操作系统)或从硬件角度(例如,可以实现不同的指令集/体系结构),处理核心204、206、230、232不需要是对称的。
多处理器硬件设计,诸如上面参考图1和图2讨论的那些,可以在同一封装内(通常在同一硅片上)包括不同能力的多个处理核心。对称多处理硬件包括连接到由单个操作系统控制的单个共享主存储器的两个或更多个相同的处理器。不对称或“松耦合”多处理硬件可以包括可以分别由独立操作系统控制并连接到一个或多个共享存储器/资源的两个或更多异构处理器/核心。
图3是示出了示例性共享虚拟存储器系统的功能框图300。主处理器301和外部域处理器或设备303可以包括图2中所示的多核处理器架构。主处理器301可以包括存储器管理单元(MMU)302,并且外部域处理器303可以包括MMU 305。另外,系统存储器管理单元(SMMU)304可以被实现为独立设备,或者其可以与诸如外部域处理器303等处理器集成。因此,系统可以包括集成的MMU 305或SMMU 304或两者。应用可以在主处理器301和/或外部域处理器303上执行。在一些方面,主处理器还可以包括主操作系统(OS)处理器。
在一些方面,MMU 302可以被实现为CPU的一部分,或者其可以被实现为单独的硬件设备,诸如单独的集成电路。在一些方面,MMU 305可以包括在外部域处理器303中,而SMMU 304可以在外部域处理器外部实现。MMU 302和MMU 305可以执行虚拟存储器管理操作,所述操作包括虚拟存储器和物理存储器地址之间的地址转换,以及包括存储器保护、高速缓存控制、以及通信总线仲裁等其它管理功能。类似于MMU 302和MMU 305,SMMU 304可以执行虚拟存储器管理操作,所述操作包括虚拟存储器和物理存储器地址之间的地址转换。可以为MMU 302、MMU 305、以及SMMU 304中的每一个实现存储器映射管理器或类似操作,以管理各种处理设备之间的地址映射和一致性进程。
在操作中,MMU 302可以代表由CPU执行的一个或多个进程(在图3中示出为计算应用A和B)来执行虚拟存储器管理操作。由于由主处理器301来执行指令,可以由MMU 302来执行虚拟地址转换以使用一个或多个页表在虚拟存储器中启用读取和/或写入操作。计算应用A和B中的每一个可以分别与例如页表A和页表等页表相关联,以将虚拟存储器页映射到物理存储器页。页表可以包括提供用于启用映射的信息的多个字段。SMMU 304和/或MMU305还可以代表由外部域处理器303执行的一个或多个进程(在图3中示出为计算作业A1、A2、B、和C)来执行虚拟存储器管理操作。
MMU 302、MMU 305、以及SMMU 304可以访问共享虚拟存储器地址空间的存储器位置。共享虚拟存储器地址空间可以被分割成页,所述页通常是虚拟存储器的连续块,其可以用作可以执行存储器分配和读/写操作的数据单元。在一些方面,MMU 302、MMU 305、以及SMMU 304可以共享页表(例如页表A)以访问存储器位置306,或作为另一实例,共享页表B以访问存储器位置308。因此,来自运行在一个处理设备上的应用的虚拟地址空间可以跨越运行在另一个处理设备上的其他线程或内核而被共享。相比于复制针对每个处理设备的页表,共享页表提供了效率。
在其他的存储器管理功能中,可以根据在各种处理设备中执行的进程的需要来确定和改变虚拟存储器页的共享性。在一方面,出于管理页共享性的目的,CPU(例如,主处理器301)的处理设备可以被认为是内部域,而其他处理器(例如,外部域处理器303,其包括GPU或DSP)的处理设备可以被认为是外部域。内部域(例如,主处理器301)的处理设备可以被称为内部域处理器,而外部域(例如,外部域处理器303)的处理设备可以被称为外部域处理器。每个虚拟存储器页可以被指示为在内部和外部处理域之间可共享或不可共享。举例而言,在ARM指令集架构内,可以定义共享性域,在该共享性域内,存储器访问可以保持连续(即,可预测)和一致。在一个方面,被标记为内部可共享的虚拟存储器页可以在多处理器CPU之间共享,而被标记为外部可共享的虚拟存储器页可以在CPU和其他处理设备之间共享。因此,在ARM指令集和MMU/SMMU体系结构内,现有页表格式已经包括可以在各个方面采用的共享性属性,而不需要对页表格式的任意改变或添加,并且不需要页的单独副本。举例而言,可以在各个方面中使用页表的ARM外部可共享属性。然而,各个方面不限于ARM外部可共享属性或ARM体系结构系统,并且可以在提供页表中的适当属性的其他体系结构中采用各个方面。
图4是示出了可以由处理器或存储器管理单元执行以通过更好地管理虚拟存储器页共享性来改进计算设备的功能的方面方法400的过程流程图。在框402中,处理器或存储器管理单元在页表(例如页表A)中更多地设置虚拟存储器页不可与外部域处理器共享的指示。通常不可能预先确定在存储器被分配给线程或核心时是否将与多于一个处理器共享数据。然而,将所有潜在可共享的虚拟存储器页(作为一个示例,用户应用存储器页)设置为与外部域处理器可共享以用于异构计算可能增加与维持存储器一致性所需的消息传递和处理操作相关联的开销。在一方面,可以使用页表中的字段的现有位来设置指示,而不使用任意额外的信息,例如额外的元数据或额外的数据结构。可以由例如主处理器301、MMU 302、外部域处理器303、外部域处理器MMU 305、SMMU 304、或者另一类似的设备或功能单元在页表中设置该指示。
作为一个示例,在框402中,处理器或存储器管理单元可以初始地将基本上所有的应用页(即,与共享性指示相关联)标记为“内部可共享,外部不可共享”,即,标记为在内部可共享域的处理设备之间可共享(内部可共享),而在外部可共享域的处理器之间不可共享(外部不可共享)。在与当前体系结构标准一致的页表字段中提供共享性指示允许维护与现有标准存储器架构一致的页表。更具体地,在一方面,页表中指示内部可共享和外部可共享的现有位可以用于表示仅CPU共享区域和异构共享区域(即,可与外部域处理设备共享)。通过使用现有页表字段,额外的字段被呈现为不必要的,此外,不需要额外的元数据或数据结构来指示虚拟存储器页的共享性。此外,当尝试页访问时由MMU或SMMU来生成中断标示着对当前存储器管理单元架构的扩展。
在框404中,处理器或存储器管理单元(例如,处理器303,MMU 305或SMMU 304)可以检测来自外部域处理器的对访问被指示为不可与外部域处理器共享的虚拟存储器页的尝试或请求。在一个方面,来自非CPU处理设备的对访问虚拟存储器页的尝试或请求可以由MMU 305或SMMU 304检测。举例而言,外部域处理器可能执行需要访问虚拟存储器页的作业或其他进程,而当外部域处理器尝试读取虚拟存储器页时,MMU 305或SMMU 304可以检测到所请求的虚拟存储器页被标记有其不可与外部域处理器共享的指示。
在框406中,处理器或存储器管理单元可以基于该确定来对虚拟存储器页执行虚拟存储器页操作。在一方面,由处理器或存储器管理单元执行的虚拟存储器页操作可以包括改变该页表指示以与外部域处理器共享虚拟存储器页,这可以包括改变页表的页表字段中的至少一个现有位以指示虚拟存储器页可与外部域处理器共享。可替代地或另外地,由处理器或存储器管理单元执行的虚拟存储器页操作可以包括确定针对虚拟存储器页的访问许可,以指示外部域处理器是否可以访问该虚拟存储器页。在可替代的或额外的方面,基于对虚拟存储器页的尝试访问,可以为虚拟存储器页生成调试信息。另外地或可替代地,可以基于对虚拟存储器页的尝试访问,由处理器或存储器管理单元来执行针对虚拟存储器页的管理操作。针对虚拟存储器页的管理操作的示例包括确定是否固定虚拟存储器页,以及确定是否将虚拟存储器页移动到不同访问速率的存储器位置。在处理器或存储器管理单元执行了虚拟存储器页操作之后,该处理器或存储器管理单元在框404中监视对访问虚拟存储器页的另一尝试。
在一些方面,可以改变页表的页表字段的现有位以指示虚拟存储器页与外部域处理器可共享或不可共享。相比于使用额外的元数据与软件进程通信,或使用额外的数据结构来指示虚拟存储器页的共享性,使用共享页表的现有数据结构可以显着地更快。因此,避免使用额外的元数据或额外的数据结构在管理页共享性方面提供了更大的计算设备效率和速度。
图5是示出了可以由处理器或存储器管理单元执行以通过更好地管理虚拟存储器页共享性来改进计算设备的功能的另一方面方法500的过程流程图。在框502,处理器或存储器管理单元可以在页表中设置指示以指示多个虚拟存储器页不可与外部域处理器共享。例如,潜在地可共享的基本上所有虚拟存储器页可以由处理器或存储器管理单元初始地标记为不可与外部域处理器共享。在操作中,某些虚拟存储器页可能永远不与另一处理设备共享,例如CPU或GPU缓存,或分配给处理设备的其他专用存储器空间。因此,在一方面,处理器或存储器管理单元可以初始地指示潜在可共享的虚拟存储器页不可与外部域处理器共享。在一方面,处理器或存储器管理单元可以使用页表中的字段的现有位来设置该指示,而不使用任意额外的信息,例如额外的元数据或额外的数据结构。
在框504,处理器或存储器管理单元可以确定外部域处理器何时尝试或请求访问被指示为不可与外部域处理器共享的多个虚拟存储器页中的虚拟存储器页。在一方面,MMU305或SMMU 304可以被配置为检测所请求的虚拟存储器页被标记有其不可与外部域处理器共享的指示。
在框506,处理器或存储器管理单元可以基于该确定来对虚拟存储器页执行虚拟存储器页操作。在一个方面,由处理器或存储器管理单元执行的虚拟存储器页操作可以包括:改变该页表指示以与外部域处理器共享虚拟存储器页;确定针对虚拟存储器页的访问许可以指示外部域处理器是否可以访问该虚拟存储器页;生成针对虚拟存储器页的调试信息;以及基于对虚拟存储器页的尝试访问来执行对虚拟存储器页的管理操作。在执行了虚拟存储器页操作之后,处理器或存储器管理单元可以在框504中监视对访问相同或另一虚拟存储器页的另一次尝试。
图6A是示出了可以由处理器或存储器管理单元执行以用于管理虚拟存储器页共享性的另一方面方法600A的过程流程图。与上述方法400类似,在框402,处理器或存储器管理单元可以在页表(例如页表A)中设置虚拟存储器页不可与外部域处理器共享的指示。在一方面,处理器或存储器管理单元可以使用页表中的字段的现有位来设置该指示,而不使用任意额外的信息,例如额外的元数据或额外的数据结构。例如,该指示可以由主处理器301、MMU 302、外部域处理器MMU 305、SMMU 304、或者另一类似功能单元在页表中设置。
在确定框404,处理器或存储器管理单元(例如,处理器303、MMU 305或SMMU 304)可以确定外部域处理器是否尝试访问被指示为不可与外部域处理器共享的虚拟存储器页。可以连续地或周期性地来执行确定框404中的监视,直到外部域处理器尝试访问虚拟存储器页(即,只要确定框404=“否”)。
响应于确定外部域处理器已作出访问虚拟存储器页的尝试或请求(即,确定框404=“是”),在框602中,处理器或存储器管理单元可以生成中断。例如,当外部域处理器可以执行尝试访问虚拟存储器页的进程时,MMU或SMMU可以检测到虚拟存储器页不可与外部域处理器共享的指示,并且生成中断以停止或暂停由外部域处理器执行的进程。在一个方面,MMU或SMMU可以检测在页表的页表字段中设置的、指示着虚拟存储器页不可与外部域处理器共享的现有位,并且可以基于对页表中的位模式的检测而生成中断。当外部域处理器尝试页访问时由MMU或SMMU来生成中断可以是与当前的存储器管理单元架构一致的。在一方面,可以使用可编程寄存器来启用或禁用中断。中断可以是故障,其可以在SMMU或MMU的故障症状(syndrome)寄存器中被报告。
在框604,处理器或存储器管理单元可以响应于外部域处理器的访问尝试,确定对所请求的虚拟存储器页执行的一个或多个虚拟存储器页操作。例如,在MMU或SMMU生成中断时,中断处理程序可以接收由MMU或SMMU生成的中断,并且中断处理程序可以确定其应该对所请求的虚拟存储器页执行一个或多个虚拟存储器页操作(参照框606到框612来描述的)。
在一方面,在框604,处理器或存储器管理单元可确定其应当在框606中改变该页表指示以与外部域处理器共享虚拟存储器页。在一些方面,改变页表指示可以包括改变页表的页表字段中的至少一个现有位,以指示虚拟存储器页可与外部域处理器共享。
另外或可替代地,在框604,处理器或存储器管理单元可以确定其应当在框608中确定针对虚拟存储器页的访问许可,以指示外部域处理器是否可以访问虚拟存储器页。例如,中断处理程序可以实行来自CPU的差异化访问许可。差异化访问许可可以包括确定外部域处理器是否可以被准许对所请求的虚拟存储器页的只读访问、读取和写入访问等。在一方面,中断处理程序可以将中断转换成许可违例、停止由外部域处理器执行的进程、或者类似进程,以实行差异化的访问许可。
另外或可替代地,在框604,处理器或存储器管理单元可以确定其应当在框610中生成针对虚拟存储器页的调试信息。在一些方面,基于对所述虚拟存储器页的所尝试的访问,可以为虚拟存储器页生成调试信息。例如,当中断处理程序检测到中断时,可以生成表示在外部域处理设备上执行的进程与存储在所请求的虚拟存储器页上的数据之间的关系的调试信息。该信息可以例如被编码为预定义格式并且被存储和/或输出以用于评估。
另外地或可替代地,在框604,处理器或存储器管理单元可以在框612中基于所尝试的访问来确定其应当执行针对虚拟存储器页的管理操作。针对虚拟存储器页的管理操作的示例包括:确定是否固定所述虚拟存储器页,以及确定是否将所述虚拟存储器页移动到不同访问速率的存储器位置。
另外地或可替代地,响应于外部域处理器访问虚拟存储器页的尝试而执行操作可以包括响应于外部域处理器访问虚拟存储器页的尝试来触发页错误。在一方面,触发页错误可以包括:触发对主操作系统(OS)处理器的中断,以通过使外部域处理器或线程停止试图进行访问来处理页错误;触发对主OS处理器的中断,以处理所述页错误并使外部域处理器将上下文切换到另一线程或进程;和/或使存储器管理单元利用特定策略来生成对外部域处理器的进一步数据响应。例如,处理器可以停止一个或多个上下文,和/或处理器可以切换一个或多个上下文。
图6B是示出了可以由处理器或存储器管理单元执行以用于管理虚拟存储器页共享性的另一方面方法600B的过程流程图。与上述方法400类似,在框402,处理器或存储器管理单元可以在页表(例如页表A)中设置虚拟存储器页不可与外部域处理器共享的指示。在一方面,处理器或存储器管理单元可以使用页表中的字段的现有位来设置该指示,而不使用任意额外的信息,例如额外的元数据或额外的数据结构。例如,该指示可以由主处理器301、MMU 302、外部域处理器MMU 305、SMMU 304、或者另一类似功能单元在页表中设置。
在确定框404,处理器303、MMU 305或者SMMU 304可以确定外部域处理器是否尝试访问被指示为不可与外部域处理器共享的虚拟存储器页。可以连续地或周期性地来执行确定框404中的监视,直到外部域处理器尝试访问虚拟存储器页(即,只要确定框404=“否”)。
响应于确定外部域处理器已做出访问虚拟存储器页的尝试或请求(即,确定框404=“是”),在框616,处理器或存储器管理单元可以在MMU 305、外部域处理器303、或者SMMU304中触发页错误条件。
在一方面,响应于页错误条件,在框616中,MMU 305或者SMMU 304可以停止处理来自外部域处理器303的页错误事务(即,存储器操作)以及潜在地一些其它事务。对事务的停止可能立即或最终导致外部域处理器也停止进一步处理,这是由于外部域处理器303与MMU305或SMMU 304之间的事务流水线和/或队列中的增加的拥塞。一旦页错误被解决(尽可能地,例如,经由图5中所示的方法500和/或图6A中所示的方法600A),则MMU 305或者SMMU304可以恢复事务处理,结束对MMU 305、SMMU 304、或者外部域处理器303的停止。
另外地或可替代地,响应于页错误条件,在框620,MMU 305或者SMMU 304可以利用特定策略来生成对外部域处理器的进一步数据响应。特定策略可以包括针对一个或多个上下文来针对读取返回零值和/或忽略写入(也称为读为零,写入忽略或RAZ/WI)。一旦页错误被解决(尽可能地,经由方法500和/或600A),则MMU 305或者SMMU 304可以恢复正常处理,利用特定策略来返回进一步的数据响应。
另外地或可替代地,响应于页错误条件,在框620,外部域处理器303的一部分-或者整个外部域处理器303可以停止对指令的进一步处理。停止外部域处理器可以包括停止线程或进程的至少一部分,所述线程或进程的至少一部分是对其的处理导致对虚拟存储器页的尝试访问的至少一部分。一旦页错误被解决(例如,经由方法500或600A),则外部域处理器可以被编程为恢复正常处理。
另外地或可替代地,响应于页错误条件,在框622,外部域处理器303的一部分或整个外部域处理器303可以执行上下文切换操作,这可以涉及将处理切换到另一线程或进程。上下文切换可以允许外部域处理器保存引起页错误的上下文,并切换以执行不具有页错误的另一上下文。一旦页错误被解决(例如,经由方法500或600A),则外部域处理器可以恢复先前保存的上下文并恢复正常处理。
在一些方面,可以独立地或结合方法500和/或600A来执行方法600B。在一些方面,无论是通过生成中断还是通过另一种方法,图6B中示出的各种操作可以独立于通知主操作系统来执行。
在一些方面,存储器管理单元可以触发到主OS处理器的中断,以通知主OS处理器所述页错误。通知主OS处理器所述页错误可以包括经由进程间中断来通知主OS处理器,所述进程间中断可以触发主OS处理器上的进程。通知主OS处理器所述页错误还可以包括写入可以由主OS处理器上的进程来轮询的存储器值。通知主OS处理器所述页错误还可以包括写入寄存器,所述寄存器可以由主OS处理器上的进程来轮询或者可以触发主OS处理器上的进程。用于通知主OS处理器所述页错误的其他过程或机制也是可能的,所述其他过程或机制包括前述的一个或多个的组合。
在一些方面,存储器管理单元可以通知主OS处理器所述页错误而不触发中断。例如,外部域处理器(和/或存储器管理单元)可以向可以由主OS处理器周期性地轮询或检查(例如,通过对主OS处理器的服务路由)的共享存储器位置进行写入(例如,对计数器进行更新)。因此,虚拟存储器页操作可以包括分析(profiling)外部域处理器尝试访问共享存储器位置的频率。
通知主OS处理器可以触发或引起主OS处理器上的进程。所触发的进程可以包括改变虚拟页的一个或多个属性,这可以包括改变对虚拟页的共享性的指示。所触发的进程还可以包括将一个或多个页复制到另一个存储器、磁盘、或其它存储器。所触发的进程还可以包括触发调试动作,例如启动调试器,或调用调试器操作。所触发的进程还可以包括将值记录在存储器或寄存器中,例如用于分析目的。其他示例也是可能的,所述其他示例包括前述的一种或多种的组合。
处理器或存储器管理可以通过在确定框404中监视外部域处理器访问虚拟存储器页的另一尝试来循环地重复这些操作。
在各个方面,页表的页表字段的现有位可由处理器或存储器管理单元改变以指示虚拟存储器页可与外部域处理器共享或不可共享。相比于与软件进程通信,或使用额外的元数据或者额外的数据结构来指示虚拟存储器页的共享性,使用共享页表的现有数据结构可以显著地更快。因此,避免使用额外的元数据或额外的数据结构在管理页共享性方面提供了更高的效率和速度。不可以调用操作系统、任意驱动程序、或者任意额外软件来确定是否改变虚拟存储器页的共享性标记。在操作中,当处理器或存储器管理单元确定其应当改变页表指示以与外部域处理器共享虚拟存储器页时,可以调用操作系统进程来改变该指示。
可以在各种移动计算设备上实现各个方面,其示例在图7中示出。具体而言,图7是适于与任意方面一起使用的智能手机/蜂窝电话700形式的移动收发机设备的系统框图。蜂窝电话700可以包括耦合到内部存储器702、显示器703和扬声器708的处理器701。另外,蜂窝电话700可以包括用于发送和接收电磁辐射的天线704,其可以连接到无线数据链路和/或连接到耦合至处理器701的蜂窝电话收发机705。蜂窝电话700通常还包括用于接收用户输入的菜单选择按钮或摇杆开关706。
典型的蜂窝电话700还包括声音编码/解码(CODEC)电路713,其将从麦克风接收的声音数字化为适于无线传输的数据分组,并解码接收到的声音数据分组来生成提供给扬声器的模拟信号708以生成声音。此外,处理器701、无线收发器705和CODEC 713中的一个或多个可以包括数字信号处理器(DSP)电路(未单独示出)。蜂窝电话700还可以包括用于无线设备之间的低功率短距离通信的ZigBee收发机(即,IEEE 802.15.4收发机)713或其他类似的通信电路(例如,实现蓝牙或WiFi协议的电路等等。)。
各个方面可以在各种市售的服务器设备中的任一个(例如图8中所示的服务器800)上实现。这种服务器800通常包括耦合到易失性存储器802和大容量非易失性存储器(例如磁盘驱动器803)的处理器801。服务器800还可以包括耦合到处理器801的软盘驱动器、压缩光盘(CD)或DVD光盘驱动器811。服务器800还可以包括耦合到处理器801的网络接入端口806,以建立与网络805(例如耦合到其他通信系统计算机和服务器的局域网)的数据连接。
计算设备的其他形式也可以从各个方面受益。这样的计算设备通常包括图9中所示的组件,其示出了示例性的个人膝上型计算机900。这种个人计算机900通常包括耦合到易失性存储器902和大容量非易失性存储器(例如磁盘驱动器903)的处理器901。计算机900还可以包括耦合到处理器901的压缩光盘CD)和/或DVD驱动器904。计算机设备900还可以包括耦合到处理器901的多个连接器端口,以建立数据连接或接收外部存储器设备,所述连接器端口例如用于将处理器901耦合到网络的网络连接电路905。如计算机领域中公知的,计算机900还可以耦合到键盘908、指示设备(例如鼠标910)和显示器909。
处理器701、801、901可以是能够由软件指令(应用)配置以执行各种功能(包括下面描述的各个方面的功能)的任意可编程微处理器、微计算机或多处理器芯片。在一些移动设备中,可以提供多个处理器701,例如专用于无线通信功能的一个处理器和专用于运行其他应用的一个处理器。通常,软件应用可以在它们被访问并加载到处理器701、801、901中之前存储在内部存储器702、802、902中。处理器701、801、901可以包括足以存储应用软件指令的内部存储器。
可以在任意数量的单处理器或多处理器系统中实现各个方面。通常,在短的时间片中在处理器上执行进程,使得看起来多个进程在单个处理器上同时运行。当在时间片结束从处理器移除进程时,与该进程的当前操作状态有关的信息被存储在存储器中,使得该进程可以在其返回到处理器上执行时无缝地恢复其操作。该操作状态数据可以包括进程的地址空间、堆栈空间、虚拟地址空间、寄存器组映像(例如程序计数器、堆栈指针、指令寄存器、程序状态字等)、计费信息、许可、访问限制和状态信息。
进程可以产生其他进程,并且产生的进程(即,子进程)可以继承产生进程(即,父进程)的一些许可和访问限制(即,上下文)。进程可以是包括多个轻量级进程或线程的重量级进程,所述多个轻量级进程或线程是与其他进程/线程共享其全部或部分上下文(例如,地址空间、堆栈、许可和/或访问限制等)的进程。因此,单个进程可以包括在单个上下文(即,处理器的上下文)中进行共享、访问和/或操作的多个轻量级进程或线程。
前述方法描述和过程流程图仅被提供为说明性示例,并且不旨在要求或暗示各方面的框必须以所呈现的顺序来执行。如本领域技术人员将理解的,前述方面中的框的顺序可以以任意顺序来执行。诸如“然后”,“随后”,“接下来”等词语不旨在限制框的顺序;这些词语仅用于贯穿对方法的描述来引导读者。此外,例如使用冠词“一”、“一个”或“所述”的以单数形式对权利要求要素的任意引用,不应被解释为将该要素限制为单数。
结合本文所公开的各方面来描述的各种示例性的逻辑框、模块、电路和算法框可以实现为电子硬件、计算机软件或二者的组合。为了清楚地表示硬件和软件的这种可交换性,上面对各种示例性的组件、框、模块、电路和块均围绕其功能进行了总体描述。至于这种功能是实现成硬件还是实现成软件,取决于具体的应用和对整个系统所施加的设计约束条件。熟练的技术人员可以针对每个具体应用,以变通的方式实现所描述的功能,但是,这种实现决策不应解释为导致脱离本发明的保护范围。
可以利用被设计为执行本文中所描述功能的通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或其它可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件或者其任意组合,来实现或执行结合本文所公开的各方面来描述的用于实现各种示例性的逻辑器件、逻辑框、模块和电路的硬件。通用处理器可以是微处理器,但可替代地,该处理器也可以是任何常规的处理器、控制器、微控制器或者状态机。处理器还可以实现为计算设备的组合,例如,DSP和微处理器的组合、多个微处理器、一个或多个微处理器与DSP内核的结合,或者任何其它此种结构。可替代地,一些框或方法可以由特定于给定功能的电路来执行。
在一个或多个示例性方面中,所描述的功能可以在硬件、软件、固件或其任意组合中实现。如果在软件中实现,则功能可以作为一个或多个指令或代码存储在非临时性计算机可读介质或非临时性处理器可读介质上。本文所公开的方法或算法的步骤可以体现在处理器可执行软件模块中,所述处理器可执行软件模块可以驻留在非临时性计算机可读或处理器可读存储介质上。非临时性计算机可读或处理器可读存储介质可以是可由计算机或处理器访问的任意存储介质。通过举例而非限制的方式,这种非临时性计算机可读或处理器可读存储介质可以包括RAM、ROM、EEPROM、FLASH存储器、CD-ROM或其他光盘存储器、磁盘存储器或其他磁存储设备,或可以用于存储具有指令或数据结构的形式的期望的程序代码并且可以由计算机访问的任意其它介质。如本文所使用的,磁盘和光盘包括压缩光盘(CD)、激光光盘、光盘、数字通用光盘(DVD)、软盘和蓝光光盘,其中磁盘通常磁性地复制数据,而光盘利用激光来光学地复制数据。上述的组合也包括在非临时性计算机可读和处理器可读介质的范围内。另外,方法或算法的操作可以作为代码和/或指令的一个或任意组合或集合驻留在非临时性处理器可读介质和/或计算机可读存储介质上,其可以并入计算机程序产品。
为使本领域任意技术人员能够做出或使用本发明,提供了对所公开方面的先前描述。对本领域技术人员来说,对这些方面的各种修改将是显而易见的,并且在不脱离本发明的精神或范围的情况下,本文中定义的一般原理可以应用于其他方面。因此,本发明不旨在限于本文所示的方面,而是要符合与接下来的权利要求书和本文所公开的原理和新颖特征相一致的最宽范围。
Claims (88)
1.一种管理虚拟存储器页共享性的方法,包括:
在页表中设置虚拟存储器页不能与外部域处理器共享的指示;
监视所述外部域处理器访问所述虚拟存储器页的尝试;以及
响应于所述外部域处理器访问所述虚拟存储器页的尝试来执行操作。
2.根据权利要求1所述的方法,其中,响应于所述外部域处理器访问所述虚拟存储器页的尝试来执行操作包括对所述虚拟存储器页执行虚拟存储器页操作。
3.根据权利要求2所述的方法,其中,对所述虚拟存储器页执行虚拟存储器页操作包括改变所述页表中的所述指示以指示所述虚拟存储器页能与所述外部域处理器共享。
4.根据权利要求3所述的方法,其中:
在页表中设置虚拟存储器页不能与外部域处理器共享的指示包括在所述页表的现有页表字段中设置所述虚拟存储器页不能与所述外部域处理器共享的所述指示;以及
改变所述页表中的所述指示以指示所述虚拟存储器页能与所述外部域处理器共享包括改变所述页表的所述现有页表字段中的所述指示。
5.根据权利要求4所述的方法,其中:
在所述页表的现有页表字段中设置所述虚拟存储器页不能与所述外部域处理器共享的所述指示包括设置所述页表的所述页表字段中的至少一个现有位,所述至少一个现有位指示所述虚拟存储器页不能与所述外部域处理器共享;以及
改变所述页表的所述现有页表字段中的所述指示包括改变所述页表的所述页表字段的所述至少一个现有位,所述至少一个现有位指示所述虚拟存储器页能与所述外部域处理器共享。
6.根据权利要求3所述的方法,还包括响应于所述外部域处理器访问所述虚拟存储器页的尝试而生成中断,
其中,改变所述页表中的所述指示以指示所述虚拟存储器页能与所述外部域处理器共享包括基于所述中断来改变所述页表中的所述指示。
7.根据权利要求2所述的方法,其中,对所述虚拟存储器页执行虚拟存储器页操作包括确定针对所述虚拟存储器页的访问许可以指示所述外部域处理器是否能访问所述虚拟存储器页。
8.根据权利要求7所述的方法,还包括响应于所述外部域处理器访问所述虚拟存储器页的尝试而生成中断,
其中,确定针对所述虚拟存储器页的所述访问许可以指示所述外部域处理器是否能访问所述虚拟存储器页是基于所述中断的。
9.根据权利要求8所述的方法,其中,确定针对所述虚拟存储器页的所述访问许可还包括进行以下各项中的至少一项:将所述中断转换成许可违规、停止在所述外部域处理器上执行的指令、以及改变所述虚拟存储器页的所述访问许可。
10.根据权利要求2所述的方法,其中,对所述虚拟存储器页执行虚拟存储器页操作包括基于对所述虚拟存储器页的尝试访问来生成针对所述虚拟存储器页的调试信息。
11.根据权利要求2所述的方法,其中,对所述虚拟存储器页执行虚拟存储器页操作包括基于对所述虚拟存储器页的尝试访问来执行针对所述虚拟存储器页的管理操作。
12.根据权利要求11所述的方法,其中,针对所述虚拟存储器页的所述管理操作包括以下操作中的至少一项:确定是否固定所述虚拟存储器页、以及确定是否将所述虚拟存储器页移动至不同访问速率的存储器位置。
13.根据权利要求1所述的方法,其中,响应于所述外部域处理器访问所述虚拟存储器页的尝试来执行操作包括响应于所述外部域处理器访问所述虚拟存储器页的尝试来触发页错误。
14.根据权利要求13所述的方法,其中,响应于所述外部域处理器访问所述虚拟存储器页的尝试来执行操作包括使存储器管理单元停止继续处理存储器操作。
15.根据权利要求13所述的方法,其中,响应于所述外部域处理器访问所述虚拟存储器页的尝试来执行操作包括停止所述外部域处理器的至少一部分。
16.根据权利要求13所述的方法,其中,响应于所述外部域处理器访问所述虚拟存储器页的尝试来执行操作包括使所述外部域处理器执行上下文切换操作。
17.根据权利要求13所述的方法,其中,响应于所述外部域处理器访问所述虚拟存储器页的尝试来执行操作包括使存储器管理单元利用特定策略来生成对所述外部域处理器的进一步数据响应。
18.根据权利要求17所述的方法,其中,所述特定策略包括以下中的一项:针对读取返回零值、以及忽略写入。
19.根据权利要求13所述的方法,还包括通知主处理器所述页错误。
20.根据权利要求19所述的方法,其中,通知主处理器包括触发对主OS处理器的中断。
21.根据权利要求19所述的方法,其中,通知主处理器包括在存储器中写入值。
22.根据权利要求19所述的方法,其中,通知主处理器包括在寄存器中写入值。
23.一种计算设备,包括:
用于在页表中设置虚拟存储器页不能与外部域处理器共享的指示的单元;
用于监视所述外部域处理器访问所述虚拟存储器页的尝试的单元;以及
用于响应于所述外部域处理器访问所述虚拟存储器页的尝试来执行操作的单元。
24.根据权利要求23所述的计算设备,其中,用于响应于所述外部域处理器访问所述虚拟存储器页的尝试来执行操作的单元包括用于对所述虚拟存储器页执行虚拟存储器页操作的单元。
25.根据权利要求24所述的计算设备,其中,用于对所述虚拟存储器页执行虚拟存储器页操作的单元包括用于改变所述页表中的所述指示以指示所述虚拟存储器页能与所述外部域处理器共享的单元。
26.根据权利要求25所述的计算设备,其中:
用于在页表中设置虚拟存储器页不能与外部域处理器共享的指示的单元包括用于在所述页表的现有页表字段中设置所述虚拟存储器页不能与所述外部域处理器共享的所述指示的单元;以及
用于改变所述页表中的所述指示以指示所述虚拟存储器页能与所述外部域处理器共享的单元包括用于改变所述页表的所述现有页表字段中的所述指示的单元。
27.根据权利要求26所述的计算设备,其中:
用于在所述页表的现有页表字段中设置所述虚拟存储器页不能与所述外部域处理器共享的所述指示的单元包括用于设置所述页表的所述页表字段中的至少一个现有位的单元,所述至少一个现有位指示所述虚拟存储器页不能与所述外部域处理器共享;以及
用于改变所述页表的所述现有页表字段中的所述指示的单元包括用于改变所述页表的所述页表字段的所述至少一个现有位的单元,所述至少一个现有位指示所述虚拟存储器页能与所述外部域处理器共享。
28.根据权利要求25所述的计算设备,还包括用于响应于所述外部域处理器访问所述虚拟存储器页的尝试而生成中断的单元,
其中,用于改变所述页表中的所述指示以指示所述虚拟存储器页能与所述外部域处理器共享的单元包括用于基于所述中断来改变所述页表中的所述指示的单元。
29.根据权利要求24所述的计算设备,其中,用于对所述虚拟存储器页执行虚拟存储器页操作的单元包括用于确定针对所述虚拟存储器页的访问许可以指示所述外部域处理器是否能访问所述虚拟存储器页的单元。
30.根据权利要求29所述的计算设备,还包括用于响应于所述外部域处理器访问所述虚拟存储器页的尝试而生成中断的单元,
其中,确定针对所述虚拟存储器页的所述访问许可以指示所述外部域处理器是否能访问所述虚拟存储器页是基于所述中断的。
31.根据权利要求30所述的计算设备,其中,用于确定针对所述虚拟存储器页的所述访问许可的单元还包括进行以下各项中的至少一项:用于将所述中断转换成许可违规的单元、用于停止在所述外部域处理器上执行的指令的单元、以及用于改变所述虚拟存储器页的所述访问许可的单元。
32.根据权利要求24所述的计算设备,其中,用于对所述虚拟存储器页执行虚拟存储器页操作的单元包括用于基于对所述虚拟存储器页的尝试访问来生成针对所述虚拟存储器页的调试信息的单元。
33.根据权利要求24所述的计算设备,其中,用于对所述虚拟存储器页执行虚拟存储器页操作的单元包括用于基于对所述虚拟存储器页的尝试访问来执行针对所述虚拟存储器页的管理操作的单元。
34.根据权利要求33所述的计算设备,其中,针对所述虚拟存储器页的所述管理操作包括以下操作中的至少一项:确定是否固定所述虚拟存储器页、以及确定是否将所述虚拟存储器页移动至不同访问速率的存储器位置。
35.根据权利要求23所述的计算设备,其中,用于响应于所述外部域处理器访问所述虚拟存储器页的尝试来执行操作的单元包括用于响应于所述外部域处理器访问所述虚拟存储器页的尝试来触发页错误的单元。
36.根据权利要求35所述的计算设备,其中,用于响应于所述外部域处理器访问所述虚拟存储器页的尝试来执行操作的单元包括用于使存储器管理单元停止继续处理存储器操作的单元。
37.根据权利要求35所述的计算设备,其中,用于响应于所述外部域处理器访问所述虚拟存储器页的尝试来执行操作的单元包括用于停止所述外部域处理器的至少一部分的单元。
38.根据权利要求35所述的计算设备,其中,用于响应于所述外部域处理器访问所述虚拟存储器页的尝试来执行操作的单元包括用于使所述外部域处理器执行上下文切换操作的单元。
39.根据权利要求35所述的计算设备,其中,用于响应于所述外部域处理器访问所述虚拟存储器页的尝试来执行操作的单元包括用于使存储器管理单元利用特定策略来生成对所述外部域处理器的进一步数据响应的单元。
40.根据权利要求39所述的计算设备,其中,所述特定策略包括以下中的一项:针对读取返回零值、以及忽略写入。
41.根据权利要求35所述的计算设备,还包括用于通知主处理器所述页错误的单元。
42.根据权利要求41所述的计算设备,其中,用于通知主处理器的单元包括用于触发对主OS处理器的中断的单元。
43.根据权利要求41所述的计算设备,其中,用于通知主处理器的单元包括用于在存储器中写入值的单元。
44.根据权利要求41所述的计算设备,其中,用于通知主处理器的单元包括用于在寄存器中写入值的单元。
45.一种计算设备,包括:
处理器,其被配置具有处理器可执行指令以执行操作,所述操作包括:
在页表中设置虚拟存储器页不能与外部域处理器共享的指示;
监视所述外部域处理器访问所述虚拟存储器页的尝试;以及
响应于所述外部域处理器访问所述虚拟存储器页的尝试来执行操作。
46.根据权利要求45所述的计算设备,其中,所述处理器被配置具有处理器可执行指令以执行操作,使得响应于所述外部域处理器访问所述虚拟存储器页的尝试来执行操作包括对所述虚拟存储器页执行虚拟存储器页操作。
47.根据权利要求46所述的计算设备,其中,所述处理器被配置具有处理器可执行指令以执行操作,使得对所述虚拟存储器页执行虚拟存储器页操作包括改变所述页表中的所述指示以指示所述虚拟存储器页能与所述外部域处理器共享。
48.根据权利要求47所述的计算设备,其中,所述处理器被配置具有处理器可执行指令以执行操作,使得:
在页表中设置虚拟存储器页不能与外部域处理器共享的指示包括在所述页表的现有页表字段中设置所述虚拟存储器页不能与所述外部域处理器共享的所述指示;以及
改变所述页表中的所述指示以指示所述虚拟存储器页能与所述外部域处理器共享包括改变所述页表的所述现有页表字段中的所述指示。
49.根据权利要求48所述的计算设备,其中,所述处理器被配置具有处理器可执行指令以执行操作,使得:
在所述页表的现有页表字段中设置所述虚拟存储器页不能与所述外部域处理器共享的所述指示包括设置所述页表的所述页表字段中的至少一个现有位,所述至少一个现有位指示所述虚拟存储器页不能与所述外部域处理器共享;以及
改变所述页表的所述现有页表字段中的所述指示包括改变所述页表的所述页表字段的所述至少一个现有位,所述至少一个现有位指示所述虚拟存储器页能与所述外部域处理器共享。
50.根据权利要求47所述的计算设备,其中,所述处理器被配置具有处理器可执行指令以执行操作还包括响应于所述外部域处理器访问所述虚拟存储器页的尝试而生成中断,
其中,所述处理器被配置具有处理器可执行指令以执行操作,使得改变所述页表中的所述指示以指示所述虚拟存储器页能与所述外部域处理器共享包括基于所述中断来改变所述页表中的所述指示。
51.根据权利要求46所述的计算设备,其中,所述处理器被配置具有处理器可执行指令以执行操作,使得对所述虚拟存储器页执行虚拟存储器页操作包括确定针对所述虚拟存储器页的访问许可以指示所述外部域处理器是否能访问所述虚拟存储器页。
52.根据权利要求51所述的计算设备,其中,所述处理器被配置具有处理器可执行指令以执行操作还包括响应于所述外部域处理器访问所述虚拟存储器页的尝试而生成中断,
其中,确定针对所述虚拟存储器页的所述访问许可以指示所述外部域处理器是否能访问所述虚拟存储器页是基于所述中断的。
53.根据权利要求52所述的计算设备,其中,所述处理器被配置具有处理器可执行指令以执行操作,使得确定针对所述虚拟存储器页的所述访问许可还包括进行以下各项中的至少一项:将所述中断转换成许可违规、停止在所述外部域处理器上执行的指令、以及改变所述虚拟存储器页的所述访问许可。
54.根据权利要求46所述的计算设备,其中,所述处理器被配置具有处理器可执行指令以执行操作,使得对所述虚拟存储器页执行虚拟存储器页操作包括基于对所述虚拟存储器页的尝试访问来生成针对所述虚拟存储器页的调试信息。
55.根据权利要求46所述的计算设备,其中,所述处理器被配置具有处理器可执行指令以执行操作,使得对所述虚拟存储器页执行虚拟存储器页操作包括基于对所述虚拟存储器页的尝试访问来执行针对所述虚拟存储器页的管理操作。
56.根据权利要求55所述的计算设备,其中,针对所述虚拟存储器页的所述管理操作包括以下操作中的至少一项:确定是否固定所述虚拟存储器页、以及确定是否将所述虚拟存储器页移动至不同访问速率的存储器位置。
57.根据权利要求45所述的计算设备,其中,所述处理器被配置具有处理器可执行指令以执行操作,使得响应于所述外部域处理器访问所述虚拟存储器页的尝试来执行操作包括响应于所述外部域处理器访问所述虚拟存储器页的尝试来触发页错误。
58.根据权利要求57所述的计算设备,其中,所述处理器被配置具有处理器可执行指令以执行操作,使得响应于所述外部域处理器访问所述虚拟存储器页的尝试来执行操作包括使存储器管理单元停止继续处理存储器操作。
59.根据权利要求57所述的计算设备,其中,所述处理器被配置具有处理器可执行指令以执行操作,使得响应于所述外部域处理器访问所述虚拟存储器页的尝试来执行操作包括停止所述外部域处理器的至少一部分。
60.根据权利要求57所述的计算设备,其中,所述处理器被配置具有处理器可执行指令以执行操作,使得响应于所述外部域处理器访问所述虚拟存储器页的尝试来执行操作包括使所述外部域处理器执行上下文切换操作。
61.根据权利要求57所述的计算设备,其中,所述处理器被配置具有处理器可执行指令以执行操作,使得响应于所述外部域处理器访问所述虚拟存储器页的尝试来执行操作包括使存储器管理单元利用特定策略来生成对所述外部域处理器的进一步数据响应。
62.根据权利要求61所述的计算设备,其中,所述特定策略包括以下中的一项:针对读取返回零值、以及忽略写入。
63.根据权利要求57所述的计算设备,其中,所述处理器被配置具有处理器可执行指令以执行操作还包括通知主处理器所述页错误。
64.根据权利要求63所述的计算设备,其中,所述处理器被配置具有处理器可执行指令以执行操作,使得通知主处理器包括触发对主OS处理器的中断。
65.根据权利要求63所述的计算设备,其中,所述处理器被配置具有处理器可执行指令以执行操作,使得通知主处理器包括在存储器中写入值。
66.根据权利要求63所述的计算设备,其中,所述处理器被配置具有处理器可执行指令以执行操作,使得通知主处理器包括在寄存器中写入值。
67.一种具有存储于其上的处理器可执行软件指令的非临时性计算机可读存储介质,所述处理器可执行软件指令被配置为使处理器执行用于管理虚拟存储器页共享性的操作,所述操作包括:
在页表中设置虚拟存储器页不能与外部域处理器共享的指示;
监视所述外部域处理器访问所述虚拟存储器页的尝试;以及
响应于所述外部域处理器访问所述虚拟存储器页的尝试来执行操作。
68.根据权利要求67所述的非临时性计算机可读存储介质,其中,所存储的处理器可执行软件指令被配置为使处理器执行操作,使得响应于所述外部域处理器访问所述虚拟存储器页的尝试来执行操作包括对所述虚拟存储器页执行虚拟存储器页操作。
69.根据权利要求68所述的非临时性计算机可读存储介质,其中,所存储的处理器可执行软件指令被配置为使处理器执行操作,使得对所述虚拟存储器页执行虚拟存储器页操作包括改变所述页表中的所述指示以指示所述虚拟存储器页能与所述外部域处理器共享。
70.根据权利要求69所述的非临时性计算机可读存储介质,其中,所存储的处理器可执行软件指令被配置为使处理器执行操作还包括:
在页表中设置虚拟存储器页不能与外部域处理器共享的指示包括在所述页表的现有页表字段中设置所述虚拟存储器页不能与所述外部域处理器共享的所述指示;以及
改变所述页表中的所述指示以指示所述虚拟存储器页能与所述外部域处理器共享包括改变所述页表的所述现有页表字段中的所述指示。
71.根据权利要求70所述的非临时性计算机可读存储介质,其中,所存储的处理器可执行软件指令被配置为使处理器执行操作,使得:
在所述页表的现有页表字段中设置所述虚拟存储器页不能与所述外部域处理器共享的所述指示包括设置所述页表的所述页表字段中的至少一个现有位,所述至少一个现有位指示所述虚拟存储器页不能与所述外部域处理器共享;以及
改变所述页表的所述现有页表字段中的所述指示包括改变所述页表的所述页表字段的所述至少一个现有位,所述至少一个现有位指示所述虚拟存储器页能与所述外部域处理器共享。
72.根据权利要求69所述的非临时性计算机可读存储介质,其中,所存储的处理器可执行软件指令被配置为使处理器执行操作还包括响应于所述外部域处理器访问所述虚拟存储器页的尝试而生成中断,
其中,改变所述页表中的所述指示以指示所述虚拟存储器页能与所述外部域处理器共享包括基于所述中断来改变所述页表中的所述指示。
73.根据权利要求68所述的非临时性计算机可读存储介质,其中,所存储的处理器可执行软件指令被配置为使处理器执行操作,使得对所述虚拟存储器页执行虚拟存储器页操作包括确定针对所述虚拟存储器页的访问许可以指示所述外部域处理器是否能访问所述虚拟存储器页。
74.根据权利要求73所述的非临时性计算机可读存储介质,其中,所存储的处理器可执行软件指令被配置为使处理器执行操作还包括响应于所述外部域处理器访问所述虚拟存储器页的尝试而生成中断,
其中,确定针对所述虚拟存储器页的所述访问许可以指示所述外部域处理器是否能访问所述虚拟存储器页是基于所述中断的。
75.根据权利要求74所述的非临时性计算机可读存储介质,其中,所存储的处理器可执行软件指令被配置为使处理器执行操作,使得确定针对所述虚拟存储器页的所述访问许可还包括进行以下各项中的至少一项:将所述中断转换成许可违规、停止在所述外部域处理器上执行的指令、以及改变所述虚拟存储器页的所述访问许可。
76.根据权利要求68所述的非临时性计算机可读存储介质,其中,所存储的处理器可执行软件指令被配置为使处理器执行操作,使得对所述虚拟存储器页执行虚拟存储器页操作包括基于对所述虚拟存储器页的尝试访问来生成针对所述虚拟存储器页的调试信息。
77.根据权利要求68所述的非临时性计算机可读存储介质,其中,所存储的处理器可执行软件指令被配置为使处理器执行操作,使得对所述虚拟存储器页执行虚拟存储器页操作包括基于对所述虚拟存储器页的尝试访问来执行针对所述虚拟存储器页的管理操作。
78.根据权利要求77所述的非临时性计算机可读存储介质,其中,所存储的处理器可执行软件指令被配置为使处理器执行操作,使得针对所述虚拟存储器页的所述管理操作包括以下操作中的至少一项:确定是否固定所述虚拟存储器页、以及确定是否将所述虚拟存储器页移动至不同访问速率的存储器位置。
79.根据权利要求67所述的非临时性计算机可读存储介质,其中,所存储的处理器可执行软件指令被配置为使处理器执行操作,使得响应于所述外部域处理器访问所述虚拟存储器页的尝试来执行操作包括响应于所述外部域处理器访问所述虚拟存储器页的尝试来触发页错误。
80.根据权利要求79所述的非临时性计算机可读存储介质,其中,响应于所述外部域处理器访问所述虚拟存储器页的尝试来执行操作包括使存储器管理单元停止继续处理存储器操作。
81.根据权利要求79所述的非临时性计算机可读存储介质,其中,所存储的处理器可执行软件指令被配置为使处理器执行操作,使得响应于所述外部域处理器访问所述虚拟存储器页的尝试来执行操作包括停止所述外部域处理器的至少一部分。
82.根据权利要求79所述的非临时性计算机可读存储介质,其中,所存储的处理器可执行软件指令被配置为使处理器执行操作,使得响应于所述外部域处理器访问所述虚拟存储器页的尝试来执行操作包括使所述外部域处理器执行上下文切换操作。
83.根据权利要求79所述的非临时性计算机可读存储介质,其中,所存储的处理器可执行软件指令被配置为使处理器执行操作,使得响应于所述外部域处理器访问所述虚拟存储器页的尝试来执行操作包括使存储器管理单元利用特定策略来生成对所述外部域处理器的进一步数据响应。
84.根据权利要求83所述的非临时性计算机可读存储介质,其中,所存储的处理器可执行软件指令被配置为使处理器执行操作,使得所述特定策略包括以下中的一项:针对读取返回零值、以及忽略写入。
85.根据权利要求79所述的非临时性计算机可读存储介质,其中,所存储的处理器可执行软件指令被配置为使处理器执行操作还包括通知主处理器所述页错误。
86.根据权利要求85所述的非临时性计算机可读存储介质,其中,所存储的处理器可执行软件指令被配置为使处理器执行操作,使得通知主处理器包括触发对主OS处理器的中断。
87.根据权利要求85所述的非临时性计算机可读存储介质,其中,所存储的处理器可执行软件指令被配置为使处理器执行操作,使得通知主处理器包括在存储器中写入值。
88.根据权利要求85所述的非临时性计算机可读存储介质,其中,所存储的处理器可执行软件指令被配置为使处理器执行操作,使得通知主处理器包括在寄存器中写入值。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201462026319P | 2014-07-18 | 2014-07-18 | |
US62/026,319 | 2014-07-18 | ||
US14/510,804 | 2014-10-09 | ||
US14/510,804 US20160019168A1 (en) | 2014-07-18 | 2014-10-09 | On-Demand Shareability Conversion In A Heterogeneous Shared Virtual Memory |
PCT/US2015/037651 WO2016010704A1 (en) | 2014-07-18 | 2015-06-25 | On-demand shareability conversion in a heterogeneous shared virtual memory |
Publications (1)
Publication Number | Publication Date |
---|---|
CN106575264A true CN106575264A (zh) | 2017-04-19 |
Family
ID=55074695
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201580038882.3A Pending CN106575264A (zh) | 2014-07-18 | 2015-06-25 | 异构共享虚拟存储器中的按需共享性转换 |
Country Status (7)
Country | Link |
---|---|
US (1) | US20160019168A1 (zh) |
EP (1) | EP3170086A1 (zh) |
JP (1) | JP2017530436A (zh) |
KR (1) | KR20170031697A (zh) |
CN (1) | CN106575264A (zh) |
TW (1) | TW201610680A (zh) |
WO (1) | WO2016010704A1 (zh) |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107861887A (zh) * | 2017-11-30 | 2018-03-30 | 科大智能电气技术有限公司 | 一种串行易失性存储器的控制方法 |
WO2019097345A1 (en) * | 2017-11-14 | 2019-05-23 | International Business Machines Corporation | Automatic pinning of units of memory |
US10592164B2 (en) | 2017-11-14 | 2020-03-17 | International Business Machines Corporation | Portions of configuration state registers in-memory |
US10635602B2 (en) | 2017-11-14 | 2020-04-28 | International Business Machines Corporation | Address translation prior to receiving a storage reference using the address to be translated |
US10761751B2 (en) | 2017-11-14 | 2020-09-01 | International Business Machines Corporation | Configuration state registers grouped based on functional affinity |
US10901738B2 (en) | 2017-11-14 | 2021-01-26 | International Business Machines Corporation | Bulk store and load operations of configuration state registers |
CN112905243A (zh) * | 2019-11-15 | 2021-06-04 | 成都鼎桥通信技术有限公司 | 一种同时运行双系统的方法和装置 |
US11093145B2 (en) | 2017-11-14 | 2021-08-17 | International Business Machines Corporation | Protecting in-memory configuration state registers |
US11106490B2 (en) | 2017-11-14 | 2021-08-31 | International Business Machines Corporation | Context switch by changing memory pointers |
CN113674133A (zh) * | 2021-07-27 | 2021-11-19 | 阿里巴巴新加坡控股有限公司 | Gpu集群共享显存系统、方法、装置及设备 |
Families Citing this family (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20180011792A1 (en) * | 2016-07-06 | 2018-01-11 | Intel Corporation | Method and Apparatus for Shared Virtual Memory to Manage Data Coherency in a Heterogeneous Processing System |
US10296074B2 (en) * | 2016-08-12 | 2019-05-21 | Qualcomm Incorporated | Fine-grained power optimization for heterogeneous parallel constructs |
US10439960B1 (en) * | 2016-11-15 | 2019-10-08 | Ampere Computing Llc | Memory page request for optimizing memory page latency associated with network nodes |
US10585412B2 (en) * | 2017-02-13 | 2020-03-10 | Rockwell Automation Technologies, Inc. | Safety controller using hardware memory protection |
US10552070B2 (en) | 2017-11-14 | 2020-02-04 | International Business Machines Corporation | Separation of memory-based configuration state registers based on groups |
US10642757B2 (en) | 2017-11-14 | 2020-05-05 | International Business Machines Corporation | Single call to perform pin and unpin operations |
US10761983B2 (en) | 2017-11-14 | 2020-09-01 | International Business Machines Corporation | Memory based configuration state registers |
US10698686B2 (en) | 2017-11-14 | 2020-06-30 | International Business Machines Corporation | Configurable architectural placement control |
US10599568B2 (en) * | 2018-04-09 | 2020-03-24 | Intel Corporation | Management of coherent links and multi-level memory |
US11307993B2 (en) * | 2018-11-26 | 2022-04-19 | Advanced Micro Devices, Inc. | Dynamic remapping of virtual address ranges using remap vector |
KR102648790B1 (ko) * | 2018-12-19 | 2024-03-19 | 에스케이하이닉스 주식회사 | 데이터 저장 장치 및 그 동작 방법 |
US10969980B2 (en) | 2019-03-28 | 2021-04-06 | Intel Corporation | Enforcing unique page table permissions with shared page tables |
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 |
US11593108B2 (en) * | 2021-06-07 | 2023-02-28 | International Business Machines Corporation | Sharing instruction cache footprint between multiple threads |
US11593109B2 (en) | 2021-06-07 | 2023-02-28 | International Business Machines Corporation | Sharing instruction cache lines between multiple threads |
GB2616643A (en) * | 2022-03-16 | 2023-09-20 | Advanced Risc Mach Ltd | Read-as-X property for page of memory address space |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1755636A (zh) * | 2004-09-30 | 2006-04-05 | 国际商业机器公司 | 用于在实时与虚拟化操作系统之间共享资源的系统和方法 |
CN101046774A (zh) * | 2006-03-28 | 2007-10-03 | 国际商业机器公司 | 使用替代页池管理dma写入页错误的计算机实现方法和装置 |
US20120036334A1 (en) * | 2010-08-05 | 2012-02-09 | Horman Neil R T | Access to shared memory segments by multiple application processes |
US20120089808A1 (en) * | 2010-10-08 | 2012-04-12 | Jang Choon-Ki | Multiprocessor using a shared virtual memory and method of generating a translation table |
CN103443760A (zh) * | 2011-03-11 | 2013-12-11 | 英特尔公司 | 实现具有在处理设备之间的共享虚拟存储器的系统的tlb同步 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8285969B2 (en) * | 2009-09-02 | 2012-10-09 | International Business Machines Corporation | Reducing broadcasts in multiprocessors |
KR20130076973A (ko) * | 2011-12-29 | 2013-07-09 | 삼성전자주식회사 | 응용 프로세서 및 이를 포함하는 시스템 |
US9424201B2 (en) * | 2013-03-14 | 2016-08-23 | Nvidia Corporation | Migrating pages of different sizes between heterogeneous processors |
US9767036B2 (en) * | 2013-03-14 | 2017-09-19 | Nvidia Corporation | Page state directory for managing unified virtual memory |
US9754561B2 (en) * | 2013-10-04 | 2017-09-05 | Nvidia Corporation | Managing memory regions to support sparse mappings |
-
2014
- 2014-10-09 US US14/510,804 patent/US20160019168A1/en not_active Abandoned
-
2015
- 2015-06-25 CN CN201580038882.3A patent/CN106575264A/zh active Pending
- 2015-06-25 EP EP15734015.9A patent/EP3170086A1/en not_active Withdrawn
- 2015-06-25 JP JP2017501367A patent/JP2017530436A/ja active Pending
- 2015-06-25 KR KR1020177001369A patent/KR20170031697A/ko unknown
- 2015-06-25 WO PCT/US2015/037651 patent/WO2016010704A1/en active Application Filing
- 2015-07-17 TW TW104123238A patent/TW201610680A/zh unknown
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1755636A (zh) * | 2004-09-30 | 2006-04-05 | 国际商业机器公司 | 用于在实时与虚拟化操作系统之间共享资源的系统和方法 |
CN101046774A (zh) * | 2006-03-28 | 2007-10-03 | 国际商业机器公司 | 使用替代页池管理dma写入页错误的计算机实现方法和装置 |
US20120036334A1 (en) * | 2010-08-05 | 2012-02-09 | Horman Neil R T | Access to shared memory segments by multiple application processes |
US20120089808A1 (en) * | 2010-10-08 | 2012-04-12 | Jang Choon-Ki | Multiprocessor using a shared virtual memory and method of generating a translation table |
CN103443760A (zh) * | 2011-03-11 | 2013-12-11 | 英特尔公司 | 实现具有在处理设备之间的共享虚拟存储器的系统的tlb同步 |
Cited By (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10901738B2 (en) | 2017-11-14 | 2021-01-26 | International Business Machines Corporation | Bulk store and load operations of configuration state registers |
WO2019097345A1 (en) * | 2017-11-14 | 2019-05-23 | International Business Machines Corporation | Automatic pinning of units of memory |
US10558366B2 (en) | 2017-11-14 | 2020-02-11 | International Business Machines Corporation | Automatic pinning of units of memory |
US10592164B2 (en) | 2017-11-14 | 2020-03-17 | International Business Machines Corporation | Portions of configuration state registers in-memory |
US10635602B2 (en) | 2017-11-14 | 2020-04-28 | International Business Machines Corporation | Address translation prior to receiving a storage reference using the address to be translated |
US10761751B2 (en) | 2017-11-14 | 2020-09-01 | International Business Machines Corporation | Configuration state registers grouped based on functional affinity |
US11287981B2 (en) | 2017-11-14 | 2022-03-29 | International Business Machines Corporation | Automatic pinning of units of memory |
US10976931B2 (en) | 2017-11-14 | 2021-04-13 | International Business Machines Corporation | Automatic pinning of units of memory |
US11093145B2 (en) | 2017-11-14 | 2021-08-17 | International Business Machines Corporation | Protecting in-memory configuration state registers |
US11099782B2 (en) | 2017-11-14 | 2021-08-24 | International Business Machines Corporation | Portions of configuration state registers in-memory |
US11106490B2 (en) | 2017-11-14 | 2021-08-31 | International Business Machines Corporation | Context switch by changing memory pointers |
US11579806B2 (en) | 2017-11-14 | 2023-02-14 | International Business Machines Corporation | Portions of configuration state registers in-memory |
CN107861887A (zh) * | 2017-11-30 | 2018-03-30 | 科大智能电气技术有限公司 | 一种串行易失性存储器的控制方法 |
CN112905243A (zh) * | 2019-11-15 | 2021-06-04 | 成都鼎桥通信技术有限公司 | 一种同时运行双系统的方法和装置 |
CN112905243B (zh) * | 2019-11-15 | 2022-05-13 | 成都鼎桥通信技术有限公司 | 一种同时运行双系统的方法和装置 |
CN113674133A (zh) * | 2021-07-27 | 2021-11-19 | 阿里巴巴新加坡控股有限公司 | Gpu集群共享显存系统、方法、装置及设备 |
CN113674133B (zh) * | 2021-07-27 | 2023-09-05 | 阿里巴巴新加坡控股有限公司 | Gpu集群共享显存系统、方法、装置及设备 |
Also Published As
Publication number | Publication date |
---|---|
EP3170086A1 (en) | 2017-05-24 |
TW201610680A (zh) | 2016-03-16 |
US20160019168A1 (en) | 2016-01-21 |
JP2017530436A (ja) | 2017-10-12 |
WO2016010704A1 (en) | 2016-01-21 |
KR20170031697A (ko) | 2017-03-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106575264A (zh) | 异构共享虚拟存储器中的按需共享性转换 | |
US11068293B2 (en) | Parallel hardware hypervisor for virtualizing application-specific supercomputers | |
CN104375958B (zh) | 高速缓存存储器管理事务性存储器访问请求 | |
CN106462219B (zh) | 管理处理器设备功耗的系统和方法 | |
US8881153B2 (en) | Speculative thread execution with hardware transactional memory | |
US9753854B1 (en) | Memory controller load balancing with configurable striping domains | |
CN106462395B (zh) | 多线程处理器架构中的线程等待 | |
CN109923523A (zh) | 关联工作集和线程 | |
CN108139946A (zh) | 用于在冲突存在时进行有效任务调度的方法 | |
US20210042228A1 (en) | Controller for locking of selected cache regions | |
US10579413B2 (en) | Efficient task scheduling using a locking mechanism | |
CN108701058A (zh) | 虚拟化传感器 | |
CN107005231A (zh) | 用于在高性能互连中定中心的方法、设备、系统 | |
US9251073B2 (en) | Update mask for handling interaction between fills and updates | |
CN108885569A (zh) | 识别增强型同步操作结果以改善运行时操作 | |
Chaves et al. | Energy-efficient cache coherence protocol for noc-based mpsocs | |
CN105718418B (zh) | 用于只写处理器间复位同步的方法和装置 | |
Butelle et al. | A model for coherent distributed memory for race condition detection | |
Duan et al. | BulkCompactor: Optimized deterministic execution via conflict-aware commit of atomic blocks | |
Prasad | Program Execution on Reconfigurable Multicore Architectures | |
CN106293930A (zh) | 一种信号锁分配的方法、装置和网络系统 | |
Kumar et al. | Tmfab: A transactional memory fabric for chip multiprocessors |
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 | ||
WD01 | Invention patent application deemed withdrawn after publication | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20170419 |