针对异构多处理器系统中的共享存储区域的动态地址协商转让专利

申请号 : CN201480042174.2

文献号 : CN105431827B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : S·A·K·加塔拉A·叶尔莫林斯基C·维克

申请人 : 高通股份有限公司

摘要 :

通过对共享存储器进行读和写信息,移动计算设备可以被配置为在多处理器系统的辅助处理器(例如,DSP)中编译和执行通用软件应用的一些部分。应用处理器上的第一过程(P1)可以请求与辅助处理器上的第二过程(P2)进行地址协商,从第一操作系统获取第一地址映射,向辅助处理器发送第一地址映射。第二过程(P2)可以接收第一地址映射,从第二操作系统获取第二地址映射,识别第一和第二地址映射中的匹配地址,将匹配地址存储为公共虚拟地址,并将公共虚拟地址发送回应用处理器。第一过程和第二过程(即,P1和P2)可以各自使用公共虚拟地址来将物理页面映射到存储器。

权利要求 :

1.一种提供对具有第一处理内核和第二处理内核的多处理器计算设备的共享存储区域的访问的方法,所述方法包括:由所述第一处理内核中的第一过程请求与所述第二处理内核中的第二过程进行地址协商;

响应于请求与所述第二处理内核中的所述第二过程进行地址协商,在所述第一处理内核中获取所述第一过程的第一地址映射;

向所述第二处理内核发送所述第一地址映射,从而使得所述第二处理内核获取所述第二处理内核中的所述第二过程的第二地址映射;

响应于向所述第二处理内核发送所述第一地址映射,在所述第一处理内核中接收公共虚拟地址,所接收的公共虚拟地址包括:在所述第一过程的所述第一地址映射和所述第二过程的所述第二地址映射中都包括的地址;

将所接收的公共虚拟地址存储为所述第一处理内核的第一操作系统内核内的所述共享存储区域的第一属性;以及在所述第一过程的所接收的公共虚拟地址处映射所述共享存储区域。

2.根据权利要求1所述的方法,还包括:

在所述第二处理内核中执行地址匹配操作,以确定所述第一地址映射和所述第二地址映射是否包括匹配的虚拟地址;

将所述匹配的虚拟地址作为公共虚拟地址并且作为所述第二处理内核的第二操作系统内核的所述共享存储区域的第二属性进行存储;

向所述第一处理内核发送所述公共虚拟地址;以及

在针对所述第二处理内核的所述第二过程的所述公共虚拟地址处映射所述共享存储区域的物理页面。

3.根据权利要求2所述的方法,其中,所述第一处理内核和所述第二处理内核中的每个处理内核包括硬件存储器管理单元(MMU)。

4.根据权利要求2所述的方法,其中,在所述第二处理内核中接收所述第一地址映射,包括:在所述第二处理内核的地址协商处理线程中接收所述第一地址映射。

5.一种多处理器计算设备,包括:

用于由第一处理内核中的第一过程请求与第二处理内核中的第二过程进行地址协商的模块;

用于响应于请求与所述第二处理内核中的所述第二过程进行地址协商,在所述第一处理内核中获取所述第一过程的第一地址映射的模块;

用于向所述第二处理内核发送所述第一地址映射,从而使得所述第二处理内核获取所述第二处理内核中的所述第二过程的第二地址映射的模块;

用于响应于向所述第二处理内核发送所述第一地址映射,在所述第一处理内核中接收公共虚拟地址,所接收的公共虚拟地址包括:在所述第一过程的所述第一地址映射和所述第二过程的所述第二地址映射中都包括的地址的模块;

用于将所接收的公共虚拟地址存储为所述第一处理内核的第一操作系统内核内的共享存储区域的第一属性的模块;以及用于在所述第一过程的所接收的公共虚拟地址处映射所述共享存储区域的模块。

6.根据权利要求5所述的多处理器计算设备,还包括

用于在所述第二处理内核中执行地址匹配操作,以确定所述第一地址映射和所述第二地址映射是否包括匹配的虚拟地址的模块;

用于将所述匹配的虚拟地址作为所述公共虚拟地址并且作为所述第二处理内核的第二操作系统内核的所述共享存储区域的第二属性进行存储的模块;

用于向所述第一处理内核发送所述公共虚拟地址的模块;以及用于在针对所述第二处理内核的所述第二过程的所述公共虚拟地址处映射所述共享存储区域的物理页面的模块。

7.根据权利要求6所述的多处理器计算设备,还包括:用于在所述第二处理内核中接收所述第一地址映射的模块,包括:用于在所述第二处理内核的地址协商处理线程中接收所述第一地址映射的模块。

8.一种多处理器计算设备,包括:

第一处理内核;

第二处理内核;以及

共享存储区域,其耦接到所述第一处理内核和所述第二处理内核,其中,所述第一处理内核被配置为具有处理器可执行指令,以执行包括如下各项的操作:由第一过程请求与所述第二处理内核中的第二过程进行地址协商;

响应于请求与所述第二处理内核中的所述第二过程进行地址协商,获取所述第一过程的第一地址映射;

向所述第二处理内核发送所述第一地址映射,从而使得所述第二处理内核获取所述第二处理内核中的所述第二过程的第二地址映射;

响应于向所述第二处理内核发送所述第一地址映射,接收公共虚拟地址,所接收的公共虚拟地址包括:在所述第一过程的所述第一地址映射和所述第二过程的所述第二地址映射中都包括的地址;

将所接收的公共虚拟地址存储为第一操作系统内核内的所述共享存储区域的第一属性;以及在所述第一过程的所接收的公共虚拟地址处映射所述共享存储区域。

9.根据权利要求8所述的多处理器计算设备,其中,所述第二处理内核被配置为具有处理器可执行指令,以执行包括如下各项的操作:执行地址匹配操作,以确定所述第一地址映射和所述第二地址映射是否包括匹配的虚拟地址;

将所述匹配的虚拟地址作为公共虚拟地址并且作为第二操作系统内核的所述共享存储区域的第二属性进行存储;

向所述第一处理内核发送所述公共虚拟地址;以及

在针对所述第二过程的所述公共虚拟地址处映射所述共享存储区域的物理页面。

10.根据权利要求9所述的多处理器计算设备,其中,所述第一处理内核和所述第二处理内核中的每个处理内核包括硬件存储器管理单元(MMU)。

11.根据权利要求9所述的多处理器计算设备,其中,所述第二处理内核被配置为具有处理器可执行指令,以执行操作:使得接收所述第一地址映射包括在地址协商处理线程中接收所述第一地址映射。

12.一种非暂时性计算机可读存储介质,具有存储在其上的处理器可执行软件指令,所述处理器可执行软件指令被配置为使得多处理器计算设备的第一处理内核执行包括如下各项的操作:由第一过程请求与所述多处理器计算设备的第二处理内核中的第二过程进行地址协商;

响应于请求与所述第二处理内核中的所述第二过程进行地址协商,获取所述第一过程的第一地址映射;

向所述第二处理内核发送所述第一地址映射,从而使得所述第二处理内核获取所述第二处理内核中的所述第二过程的第二地址映射;

响应于向所述第二处理内核发送所述第一地址映射,来接收公共虚拟地址,所接收的公共虚拟地址包括:在所述第一过程的所述第一地址映射和所述第二过程的所述第二地址映射中都包括的地址;

将所接收的公共虚拟地址存储为第一操作系统内核内的共享存储区域的第一属性;以及在所述第一过程的所接收的公共虚拟地址处映射所述共享存储区域。

13.根据权利要求12所述的非暂时性计算机可读存储介质,其中,所存储的处理器可执行软件指令被配置成使得所述多处理器计算设备的所述第二处理内核执行包括如下各项的操作:执行地址匹配操作,以确定所述第一地址映射和所述第二地址映射是否包括匹配的虚拟地址;

将所述匹配的虚拟地址作为公共虚拟地址并且作为第二操作系统内核的所述共享存储区域的第二属性进行存储;

向所述第一处理内核发送所述公共虚拟地址;以及

在针对所述第二过程的所述公共虚拟地址处映射所述共享存储区域的物理页面。

14.根据权利要求13所述的非暂时性计算机可读存储介质,其中,所存储的处理器可执行软件指令被配置为使得所述多处理器计算设备的所述第二处理内核接收所述第一地址映射,包括在地址协商处理线程中接收所述第一地址映射。

说明书 :

针对异构多处理器系统中的共享存储区域的动态地址协商

背景技术

[0001] 在过去的几年中,已经看到移动和无线网络技术飞速发展。该发展已经由更好的通信、硬件和更可靠的协议推动。现在,无线服务提供商能够向他们的客户提供一直扩展的特征和服务系列,并且向用户提供对信息、资源和通信的前所未有的接入级别。为了跟上这些增强的步伐,移动电子设备(例如,蜂窝电话、手表、媒体播放器等)已经变得比以前更复杂,且现在通常包括多个处理器、片上系统(SoC)、以及允许移动设备用户在其移动设备上执行复杂及功率密集的软件应用(例如,视频流、视频处理等)的其他资源。随着复杂性和功耗的增加,提高移动设备的计算和功率管理性能的新的和改进的存储管理解决方案对于用户而言将是有益的。

发明内容

[0002] 各种方面包括对具有第一处理内核和第二处理内核的多处理器计算设备的共享存储区域提供访问的方法,其包括:由所述第一处理内核中的第一过程请求与所述第二处理内核中的第二过程进行地址协商;在所述第一处理内核中获取所述第一过程的第一地址映射;向所述第二处理内核发送所述第一地址映射;响应于发送所述第一地址映射,在所述第一处理内核中接收公共虚拟地址;将所述公共虚拟地址存储为所述第一处理内核的第一操作系统内核内的所述共享存储区域的第一属性;以及,在所述第一过程的所述公共虚拟地址处映射所述共享存储区域。
[0003] 在一个方面中,该方法可以包括在所述第二处理内核中接收所述第一地址映射;在所述第二处理内核中获取所述第二过程的第二地址映射;在所述第二处理内核中执行地址匹配操作,以确定所述第一和第二地址映射是否包括匹配的虚拟地址;将所述匹配的虚拟地址作为公共虚拟地址并且作为所述第二处理内核的第二操作系统内核的所述共享存储区域的第二属性进行存储;向所述第一处理内核发送公共虚拟地址;以及,在针对所述第二处理内核的所述第二过程的所述公共虚拟地址处映射所述共享存储区域的物理页面。
[0004] 在另一方面中,所述第一处理内核和第二处理内核中的每一个包括硬件存储器管理单元(MMU)。再一方面中,在所述第二处理内核中接收所述第一地址映射可以包括:在所述第二处理内核的地址协商处理线程中接收所述第一地址映射。
[0005] 其它方面包括一种多处理器计算设备,其可以包括:用于由第一处理内核中的第一过程请求与第二处理内核中的第二过程进行地址协商的模块;用于在所述第一处理内核中获取所述第一过程的第一地址映射的模块;用于向所述第二处理内核发送所述第一地址映射的模块;用于响应于发送所述第一地址映射,在所述第一处理内核中接收公共虚拟地址的模块;用于将所述公共虚拟地址存储为所述第一处理内核的第一操作系统内核内的所述共享存储区域的第一属性的模块;以及用于在所述第一过程的所述公共虚拟地址处映射所述共享存储区域的模块。
[0006] 在一个方面中,多处理器计算设备可以包括:用于在所述第二处理内核中接收所述第一地址映射的模块;用于在所述第二处理内核中获取所述第二过程的第二地址映射的模块;用于在所述第二处理内核中执行地址匹配操作,以确定所述第一地址映射和所述第二地址映射是否包括匹配的虚拟地址的模块;用于将所述匹配的虚拟地址作为公共虚拟地址并且作为所述第二处理内核的第二操作系统内核的所述共享存储区域的第二属性进行存储的模块;用于向所述第一处理内核发送所述公共虚拟地址的模块;以及用于在针对所述第二处理内核的所述第二过程的所述公共虚拟地址处映射所述共享存储区域的物理页面的模块。
[0007] 另一方面中,多处理器计算设备可以包括用于在所述第二处理内核中接收所述第一地址映射的模块可以包括:用于在所述第二处理内核的地址协商处理线程中接收所述第一地址映射的模块。
[0008] 其它方面包括一种多处理器计算设备,其具有:第一处理内核、第二处理内核以及共享存储区域,所述共享存储区域耦接到所述第一处理内核和所述第二处理内核,并且其中,所述第一处理内核被配置为具有处理器可执行指令,以执行包括如下各项的操作:由第一过程请求与所述第二处理内核中的第二过程进行地址协商;获取所述第一过程的第一地址映射;向所述第二处理内核发送所述第一地址映射;响应于向所述第二处理内核发送所述第一地址映射,接收公共虚拟地址;将所述公共虚拟地址存储为第一操作系统内核内的所述共享存储区域的第一属性;以及在所述第一过程的所述公共虚拟地址处映射所述共享存储区域。
[0009] 在一方面,所述第二处理内核可以被配置为具有处理器可执行指令,以执行包括如下各项的操作:接收所述第一地址映射;获取所述第二过程的第二地址映射;执行地址匹配操作,以确定所述第一地址映射和所述第二地址映射是否包括匹配的虚拟地址;将所述匹配的虚拟地址作为公共虚拟地址并且作为第二操作系统内核的所述共享存储区域的第二属性进行存储;向所述第一处理内核发送公共虚拟地址;以及在针对所述第二过程的所述公共虚拟地址处映射所述共享存储区域的物理页面。
[0010] 在一个方面中,所述第一处理内核和所述第二处理内核中的每一个可以包括硬件存储器管理单元(MMU)。在另一个方面中,所述第二处理内核被配置为具有处理器可执行指令,以执行如下操作:使得接收所述第一地址映射包括在地址协商处理线程中接收所述第一地址映射。
[0011] 其它方面包括一种非临时性计算机可读存储介质,具有存储在其上的处理器可执行的软件指令,所述处理器可执行的指令被配置为使得多处理器计算设备的第一处理内核执行包括如下各项的操作:由第一过程请求与第二处理内核中的第二过程进行地址协商;获取所述第一过程的第一地址映射;向所述第二处理内核发送所述第一地址映射;响应于向所述第二处理内核发送所述第一地址映射,接收公共虚拟地址;将所述公共虚拟地址存储为第一操作系统内核内的共享存储区域的第一属性;以及在所述第一过程的所述公共虚拟地址处映射所述共享存储区域。
[0012] 在一个方面中,所存储的处理器可执行的软件指令可以被配置为使得所述多处理器计算设备的所述第二处理内核执行包括如下各项的操作:接收所述第一地址映射;获取所述第二过程的第二地址映射;执行地址匹配操作,以确定所述第一地址映射和所述第二地址映射是否包括匹配的虚拟地址;将所述匹配的虚拟地址作为公共虚拟地址并且作为第二操作系统内核的所述共享存储区域的第二属性进行存储;向所述第一处理内核发送所述公共虚拟地址;以及在针对所述第二过程的所述公共虚拟地址处映射所述共享存储区域的物理页面。
[0013] 在另一个方面中,所存储的处理器可执行的软件指令可以被配置为使得所述多处理器计算设备的所述第二处理内核执行如下操作:使得接收所述第一地址映射可以包括在地址协商处理线程中接收所述第一地址映射。

附图说明

[0014] 附图被并入本申请且构成本说明书的一部分,所述附图描绘了本发明的示例性方面,并与上文给出的一般描述以及下文给出的具体描述一起用于解释本发明的特征。
[0015] 图1是适合实现各个方面的示例性片上系统的架构图。
[0016] 图2是描绘在一个方面中,多处理器计算系统的示例性逻辑和功能组件的框图,所述多处理器计算系统包括被配置为传送地址映射和公共虚拟地址的两个处理器。
[0017] 图3是描绘根据各个方面的示例性处理内核的逻辑组件和接口的框图,所述示例性处理内核可以被配置成实现根据各个方面的存储器管理方案。
[0018] 图4是描绘一个方面中的多处理器计算系统的框图,所述多处理器计算系统具有共享存储器和多个异构处理器,所述多个异构处理器包括独立操作系统和单独的存储器管理单元(MMU)。
[0019] 图5A是描绘一个方面中,对多处理器计算设备的通用应用处理器与辅助处理器之间共享的存储区域提供访问的方法的过程流程图。
[0020] 图5B是描绘一个方面中,将通用软件应用的一些部分从应用处理器卸载到多处理器计算设备的辅助处理器的方法的过程流程图。
[0021] 图6是适合用于各方面的示例性移动计算设备的组件框图。
[0022] 图7是适合用于各方面的示例性膝上型计算机的组件框图。
[0023] 图8是适合用于各方面的示例性服务器计算机的组件框图。

具体实施方式

[0024] 将参照附图来详细地描述各方面。只要有可能,将贯穿附图使用相同的附图标记来表示相同或相似的部件。对具体示例和实现的提及是用于说明的目的,且其不意在限制本发明或权利要求的保护范围。
[0025] 总体而言,各个方面包括对片上系统(SOC)中的通用应用处理器与辅助处理器(DSP)之间共享的存储器提供访问的方法以及被配置为执行所述方法的处理器。可以通过配置处理器使得应用处理器上的第一过程(P1)请求与辅助处理器上的第二过程(P2)进行地址协商(例如,通过对操作系统内核进行系统调用)、从第一操作系统获取第一地址映射、以及向辅助处理器发送第一地址映射,来提供对共享存储器的访问。第二过程(P2)可以接收第一地址映射、从第二操作系统获取第二地址映射、调用地址匹配算法或例程以识别第一地址映射和第二地址映射中的匹配/覆盖地址、将匹配/覆盖地址存储为公共虚拟地址、并向应用处理器发送公共虚拟地址(例如,通过系统调用、远程方法调用等)。第一过程和第二过程(即,P1和P2)可以各自使用公共虚拟地址来将物理页面映射到存储器。通过共享地址映射和公共虚拟地址,各个方面允许两个异构处理器更有效地通信。
[0026] 在本申请中一般使用术语“计算系统”和“计算设备”来指代服务器、个人计算机和移动设备中的任何一个或全部,例如蜂窝电话、智能电话、平板计算机、膝上型计算机、笔记本电脑、超级笔记本、掌上电脑、个人数据助理(PDA)、无线电子邮件接收器、具有多媒体互联网功能的蜂窝电话、全球定位系统(GPS)接收器、无线游戏控制器以及包括可编程处理器的类似的个人电子设备。虽然各个方面在诸如具有有限的处理功率和电池寿命的智能电话之类的移动设备中特别有用,但是所述方面在包括可编程处理器和辅助处理器的任何计算设备中通常是有用的。
[0027] 在本申请中一般使用术语“监视器代理”来指代支持虚拟化技术和/或使计算资源能够抽象化(或虚拟化)的任何硬件组件或软件,包括硬件监控器、在芯片上制造的专用硬件、超管理器(hypervisor)、虚拟机监控程序、虚拟机器监视器、运行在高级操作系统(HLOS)之外的监视器软件、以及作为设备驱动器的一部分运行的软件监控器中的任何一个或全部,其可以位于HLOS、其存储器管理系统和/或其分配器功能之外。
[0028] 在本申请中使用术语“片上系统”(SOC)来指代单个集成电路(IC),所述单个集成电路(IC)包含集成在单个基板上的多个资源和/或处理器。单个SOC可以包含用于数字、模拟、复合信号以及射频功能的电路。单个SOC也可以包括任何数量的通用和/或专用处理器(数字信号处理器、调制解调器处理器、视频处理器等)、存储器块(例如,ROM、RAM、闪存等)、以及资源(例如,定时器、电压调节器、振荡器等)。SOC也可以包括用于控制集成资源和处理器以及用于控制外围设备的软件。
[0029] 近年来,移动计算设备已经变得复杂,且现在通常包括多个处理器内核、SOC、协处理器、包括专用处理器(例如,通信调制解调器芯片、GPS接收机等)的功能模块、复杂存储器系统、复杂的电互连(例如,总线和/或结构)、以及适合执行复杂和功率密集的软件应用(例如,视频流应用等)的很多其他资源。随着复杂度的增加,需要新的处理和存储器管理方案来提高移动设备的性能和功耗特征。
[0030] 为了提高性能和最大化电池寿命,移动设备应用处理器可以被配置为将操作卸载到辅助处理器,从而能够提高处理和/或功率效率。将操作卸载到辅助处理器的操作可以包括将软件应用的一些部分转换或转变成适合在设备的辅助处理器上执行的代码、同时在不同的异构处理器中执行该软件应用的不同部分、以及将执行结果传送回应用处理器。例如,移动设备可以被配置为分析软件应用的目标代码,识别在执行目标代码期间需要执行的操作,基于所识别的操作将目标代码划分成目标代码段,确定目标代码段是否可以在辅助处理器中执行,将一个或多个目标代码段转换成适合在辅助处理器中执行的格式,并使得辅助处理器与在应用处理器上执行的未转变的目标代码段并行地执行经转变的目标代码段。
[0031] 通过在辅助处理器中执行代码部分中的一些,当与仅仅在移动设备的主应用处理器或CPU中执行整个软件应用相比时,可以在性能、效率和/或功耗(本申请中的“性能特征”)方面达到显著收益。但是,现有存储器管理系统可能限制了在移动设备中使用这些方案的有效性。
[0032] 由于现代移动计算设备架构的复杂性,移动设备的性能特征很大程度上取决于设备的通信总线的速度、宽度和带宽。然而,当将代码部分卸载到辅助处理器并将执行结果发送给应用处理器时,现有的存储器管理系统可能需要广泛使用系统总线来向存储器写入数据以及从存储器读取数据。对设备的通信总线的这种广泛使用可能减少或抵消了通过卸载操作在性能、效率或功耗方面获得的任何收益。
[0033] 各个方面提供了对在多处理器系统中在两个或多个异构处理器(例如,应用处理器和辅助处理器)之间共享的存储区域进行访问的改进的存储器管理方案。通过允许异构处理器对相同的存储区域进行读取和写入并且对这样的共享存储区域提供访问和使用,各个方面减少了当将软件应用的一些部分卸载到移动设备的辅助处理器中并在辅助处理器中执行时通过系统总线和/或组织传送的信息量。
[0034] 通常,多处理器系统中的每个异构处理器包括:独立于系统中的其他操作系统和处理器的、执行存储器管理操作的操作系统。例如,多处理器系统可以包括:执行第一类型操作系统(例如,FreeBSD、LINUX、OS X等)的第一处理器、以及执行第二类型操作系统(例如,微软Windows 8)的第二处理器。这些操作系统中的每一个可以包括用于由在其处理器上执行的应用程序来管理系统存储器的分配和使用的存储器管理系统。例如,每个操作系统可以包括虚拟存储器管理器(OS VMM),所述虚拟存储器管理器(OS VMM)被配置为向应用程序分配虚拟存储器地址并确保由一个过程所使用的存储器不会干扰已经由另一过程使用的存储器。当过程需要访问物理存储器时,由专用于处理器的存储器管理单元(MMU)将这些虚拟地址转变成物理存储器地址。
[0035] 因而,在现有系统中,每个处理器使用独立的操作系统和单独的MMU来执行存储器管理操作,并且在处理器之间没有用于协调存储器地址的分配和使用的执行控制。但是,多处理器系统可以包括其异构处理器中的两个或多个异构处理器可访问的存储区域。因此,如果当执行卸载操作时,两个或更多个处理器可以经由引用共享存储器进行通信,则这会是有利的。例如,如果处理器经由引用共享存储器进行通信,则当将软件应用的一部分卸载到辅助处理器时,通过系统总线/结构传送的信息量将减少。然而,现有的存储器管理方案需要每个处理器执行独立于系统中的其他处理器的存储器寻址操作,且作为结果,处理器不能传送指针、相对地址、虚拟地址、或经由引用共享存储器。
[0036] 例如,使用现有的存储器管理方案访问共享存储区域可能需要第一处理器中的第一过程(P1)创建共享存储区域,向第二处理器中的第二过程(P2)告知存在共享存储器,向第一处理器中的第一操作系统内核发出请求以将共享存储区域映射到其寻址空间,以及接收针对共享存储区域的虚拟地址(VA1)分配(即,第一操作系统可以向第一过程分配虚拟地址VA1)。第二过程(P2)可以接收存在共享存储区域的通知,向第二处理器中的第二操作系统内核发出请求以映射共享存储区域,以及接收针对该相同共享存储区域的不同的虚拟地址(VA2)分配。
[0037] 由于在传统系统中,每个操作系统独立地分配虚拟地址,且在处理器之间不存在用于协调对这些存储器地址的分配或使用的执行控制,所以由第一处理器针对共享存储位置而分配的虚拟地址(VA1)将与由第二处理器针对相同的共享存储位置所分配的虚拟地址(VA2)不同。因为这些虚拟地址不同,所以这两个处理器不能直接传送指针、相对地址、虚拟地址、或经由引用共享存储器。
[0038] 作为示例,考虑一种情形,在该情形中,运行在第一处理器中的第一过程(P1)在共享存储区域中创建了链表(例如,列表[数据,下一个]),使得链表的“下一个”字段包括后续的节点/地址的虚拟地址。如果P1要试图使用现有方案,通过将列表头部的虚拟地址传递给P2,来与第二处理内核中运行的第二过程(P2)共享该链表,则P2必须重新计算所有的“下一个”指针,因为其针对共享的存储区域具有不同的虚拟地址(即,VA2)。重新计算这些指针是对资源的低效使用,其对多处理器系统的性能和功耗特征造成了负面影响。
[0039] 通过将多处理器系统配置为分配存储地址使得可以在两个不同的异构处理器中使用相同的虚拟地址来引用相同的物理地址,各方面克服了传统系统中的这些局限性。通过在不同的处理器中分配相同的虚拟地址,各个方面允许处理器避免执行地址转变操作并更直接地传送指针、相对地址、虚拟地址、或经由引用共享存储器。各个方面减少了当将通用软件应用的一些部分卸载到辅助处理器时执行的操作量,从而提高了移动设备的性能特性。各个方面还减少了通过系统总线和结构所传送的信息量,从而进一步提高了设备的性能特性。
[0040] 一方面,移动设备的第一处理内核可以被配置为创建共享存储区域,生成共享存储区域的映射,以及向移动设备的第二处理内核发送映射。第二处理内核可以被配置为接收映射,将所接收的映射与其虚拟存储区域(VMA)或其自身的共享存储区域的映射中的地址范围进行比较,识别两个映射/地址之间的交集(例如,双方未使用的虚拟地址的范围),并将所识别的交集传送回第一处理内核。第一和第二处理内核两者都可以使用在所识别的交集中包含的公共虚拟地址来引用共享存储区域中的物理地址。这允许第一和第二处理器上的第一和第二过程(即,P1和P2)传送指针、相对地址、虚拟地址、存储引用等。
[0041] 各个方面可以在多处理器计算机系统上实现,包括诸如在图1中所描绘的片上系统(SOC)。SOC 100可以包括多个异构处理内核,例如数字信号处理器(DSP)102、调制解调器处理器104、图形处理器106、以及应用处理器108。SOC 100也可以包括一个或多个协处理器110(例如,向量协处理器等),所述一个或多个协处理器110连接到异构处理器102、104、
106、108中的一个或多个。各处理器102、104、106、108、110可以包括一个或多个内核,并且各处理器/内核可以执行独立于其他处理器/内核的操作。例如,SOC 100可以包括执行第一类型操作系统(例如,FreeBSD、LINUX、OS X等)的处理器和执行第二类型操作系统(例如,Windows 8)的处理器。
[0042] 处理器102、104、106、108、110可以是相互邻近(例如,位于单个基板、晶片、集成芯片上)的独立处理内核。与如果数据信号不得不离开芯片的可能的频率/时钟速率相比,处理器102、104、106、108、110的邻近度允许存储器112以高得多的频率/时钟速率进行操作。此外,处理器102、104、106、108、110的邻近度允许共享片上存储器和资源(例如,电压轨)、以及用于内核之间更协调的合作。
[0043] 处理器102、104、106、108可以通过互连/总线模块124相互连接且互连到一个或多个存储器单元112、系统资源116和定制电路114,该互连/总线模块124可以包括可重新配置的逻辑门阵列和/或实现总线架构(例如,内核连接、AMBA等)。可以由诸如高性能片上网络(NoC)之类的高级互连来提供通信。
[0044] 应用处理器108可以是中央处理单元(CPU)、CPU的组件、或耦合到CPU的处理单元。在一方面中,CPU可以被配置为向处理器102-110、系统组件、资源、或外围设备的各种存储器读取和写入信息。在一方面,处理器可以通过相应的处理器102-110、资源、和/或外围设备的存储管理系统控制器向存储器进行读取和写入。
[0045] 片上系统(SOC)100可以包括连接到处理器102-108中的一个或多个处理器的协处理器110。这些协处理器110对于处理需要快速且并行执行的应用(例如,多媒体和视频流应用)可能是特别有用的。在一方面,协处理器110可以实现单指令多数据(SIMD)指令集架构(ISA),所述单指令多数据(SIMD)指令集架构(ISA)包括独立的硬件寄存器、存储器、和/或执行硬件。在一方面,SIMD向量协处理器可以是应用处理器108的一部分,或紧密地耦接到应用处理器108。
[0046] SOC 100也可以包括模拟电路和定制电路114,所述模拟电路和定制电路114用于管理传感器数据、模拟到数字转换、无线数据传输以及用于执行其他专门操作(例如,处理用于在移动设备的电子显示器和扬声器上呈现的已编码的音频和视频信号)。
[0047] SOC 100还可以包括系统组件和资源116,例如,电压调节器、振荡器、锁相环、外围设备桥路、数据控制器、存储器控制器、系统控制器、接入端口、定时器、以及用于支持在计算设备上运行的处理器和软件客户端(例如,网络浏览器等)的其他类似组件。系统组件/资源116和定制电路114也可以包括用于与诸如相机、电子显示器、无线通信设备、外部存储器芯片等外围设备进行对接的电路。
[0048] SOC 100还可以包括用于与诸如时钟118和电压调节器120之类的SOC外部的资源进行通信的输入/输出模块(未示出)。SOC外部的资源(例如,时钟118、电压调节器120)可以由内部SOC处理器/内核中的两个或更多个共享(例如,DSP 102、调制解调器处理器104、图形处理器106、应用处理器108等)。
[0049] 图2描绘了一方面中,多处理器计算系统200的示例性逻辑和功能组件,所述多处理器计算系统200包括被配置为传送地址映射和公共虚拟地址的处理器。所描绘的计算机系统200包括硬件组件和软件组件两者。硬件组件可以包括应用处理器108、数字信号处理器(DSP)102、互连模块124、以及共享存储器112模块。软件组件可以包括主操作系统202、DSP操作系统204、处理器间通信模块206、主操作系统用户过程(过程A)208、以及DSP过程(过程B)210。在各个方面中,处理器间通信模块可以被包括作为虚拟机、主操作系统202、客户操作系统、高级操作系统(HLOS)、监视器代理、管理程序等的一部分。DSP过程210可以是被配置为使数字信号处理器102执行一个或多个操作的子例程、进程、过程、线程、或服务。主操作系统用户过程208可以是通用软件应用程序的过程。
[0050] 通常,在一个处理内核中共享、访问和/或操作的过程可以通过快速存储器读/写操作进行通信。另一方面,不同处理内核中的独立过程之间的通信通常通过相对较慢的函数调用、方法调用、进程调用、消息交换、域套接字(例如,Unix域套接字)或其他形式的过程间通信(IPC)来完成。远程进程调用(RPC)和远程方法调用(RMI)是过程间通信,其允许调用过程来使得子例程、进程、过程、线程或服务(本申请中统称为“服务”)在通常位于另一处理器、芯片、或计算设备上的另一地址空间中执行。
[0051] 在多处理器系统中,可用于不同处理器(例如,处理器108、102)的存储器和资源经常在分开的域中(例如,保护域、物理域等)。此外,处理器通常用不同的操作系统进行配置、和/或实施不同的硬件描述语言(HDL)或指令集架构(ISA)。在这样的系统中,RPC/RMI机制可以提供良好定义的接口,其允许在第一处理器上的调用过程以使得服务在第二处理器中执行,并使第二处理器将服务执行的结果发送回第一处理器。
[0052] 参照图2,主操作系统用户过程208可以调用DSP过程210,并使其开始执行DSP 102上的通用应用程序操作。在完成操作之后,DSP服务210可以将那些操作的结果传送给主操作系统用户过程208。在各个实施例中,这样的处理器间通信可以通过处理器间通信模块206来完成,所述处理器间通信模块206可以被配置为通过上文所讨论的IPC机制中的任何一个或通过直接存储器读/写操作来执行、管理、或便于实现处理器108、102之间的通信。
[0053] 图3描绘了根据各个方面可以被配置为实现存储器管理方案的示例性处理内核(例如,应用处理器108等)的逻辑组件和接口。所描绘的计算机系统架构300包括硬件组件322和软件组件320两者。软件组件320可以包括操作系统302、库模块304、以及一个或多个应用程序(A0-An)306。硬件组件322可以包括外围设备308(例如,硬件加速器、输入/输出设备等)、中央处理单元(CPU)310、中央处理单元存储器管理单元(CPU MMU)316、一个或多个系统存储器管理单元(本申请中是指“系统MMU”或“SMMU”)312,以及一个或多个存储器314。
[0054] 通常,可以将针对移动计算设备而写入的应用软件编译成可执行代码,所述可执行代码通常被称为“应用”、“app”、或应用程序306。每个应用程序306可以是单个过程或线程、或可以包括多个过程或线程。应用程序306可以通过应用程序接口(API)向库模块304发出高级语言(HLL)库调用。库模块304可以通过应用二进制接口(ABI)调用操作系统302上的服务(例如,通过操作系统调用)。操作系统302可以使用特定的指令集架构(ISA)来与硬件组件进行通信,该特定的指令集架构是由硬件322执行的特定操作代码(opcode)和本地命令的列表。以此方式,该指令集架构可以将硬件322定义为操作系统302所看到的那样。
[0055] 操作系统302可以被配置为在应用程序306中协调和控制各个存储器314的分配和使用,其可以包括在多个应用程序(A0-An)306之间划分物理存储器。在一个方面中,这可以通过存储器地址空间转变过程来实现,在该存储器地址空间转变过程中,操作系统302将虚拟地址(VA)分配给各个应用程序(A0-An)306,然后在执行应用程序(A0-An)306之前,基于虚拟地址(VA)来分配物理存储器地址(PA)。
[0056] 操作系统302可以包括一个或多个存储器管理系统(例如,虚拟存储器管理器等),所述一个或多个存储器管理系统用于通过各个应用程序(A0-An)306来管理对系统存储器的分配和使用。这些存储器管理系统可以用于确保由一个过程所使用的存储器不干扰已经由另一过程使用的存储器。例如,操作系统302可以包括基于软件的存储器管理器,该基于软件的存储器管理器被配置为执行使得操作系统302能够使特定的物理地址呈现为另一地址(即,虚拟地址)的虚拟寻址操作。这些虚拟寻址操作可以包括向应用程序(A0-An)306分配虚拟存储器地址。
[0057] 除了上文讨论的基于软件的存储器管理系统之外,系统还可以包括一个或多个基于硬件的存储器管理系统,例如所描述的中央处理单元(CPU)存储器管理单元(MMU)316和系统MMU 312。CPU MMU 316和系统MMU 312可以各自包括一个或多个硬件组件,这些硬件组件负责执行这种与存储器相关的操作,例如将虚拟地址转变成物理地址、高速缓存控制、总线仲裁和存储器保护。
[0058] 在一个方面中,CPU MMU 316可以负责向主CPU 310提供地址转变服务和保护功能,并且系统MMU 312可以负责向其他硬件组件(例如,数字信号处理器、调制解调器处理器、图形处理器等)提供地址转变服务和保护功能。在一个实施例中,多处理器系统中的每个处理器可以包括独立的MMU。
[0059] 存储器管理系统(例如,CPU  MMU 316等)可以包括转变后备缓冲器(TLB,translation look-aside buffer),该TLB是可以用于存储器地址转变(例如,将虚拟地址转变成物理地址等)的高速缓冲存储器。在一个方面中,转变后备缓冲器(TLB)可以是内容可寻址的存储器(CAM),其可以是硬件关联的阵列存储器,其中存储的信息被组织成键-值格式(例如,哈希表)。上述键可以是虚拟地址且值可以是物理地址。在各个方面中,转变后备缓冲器可以是硬件管理的、软件管理的、或由硬件和软件的组合管理的。
[0060] 作为存储器地址转变过程的一部分,存储器管理系统(例如,OS VMM、系统MMU 312、CPU MMU 316等)可以通过向转变后备缓冲器发送虚拟地址作为键来执行内容可寻址的存储器搜索,以便向转变后备缓冲器请求物理地址。如果虚拟地址键在转变后备缓冲器中具有相应的物理地址值(即,“TLB命中”发生),则内容可寻址的存储器搜索可以获取并返回相应的物理地址。如果所请求的地址不在转变后备缓冲器中(即,“TLB缺失”发生),则存储器地址转变过程可以通过读取多个存储器位置的内容并计算物理地址来执行页面游动(例如,软件页面游动、硬件页面游动等)。在通过页面游动来确定物理地址之后,可以在转变后备缓冲器中存储虚拟地址到物理地址的映射。
[0061] 在包括软件管理的转变后备缓冲器的方面中,TLB缺失可以使得操作系统游动页面表格并在软件中执行转变。在包括硬件管理的转变后备缓冲器的方面中,存储器管理系统可以执行硬件表格游动,以确定是否存在针对指定虚拟地址键的有效页面表格条目。
[0062] 图4描绘了一方面中的多处理器计算系统400,所述多处理器计算系统400具有共享存储器112和多个异构处理器102、108,其中每个异构处理器包括独立的操作系统和分开的存储器管理单元(MMU)402、408。
[0063] 使用现有的存储器管理解决方案,访问共享存储区域可能需要应用处理器108中的第一过程(P1)来创建共享存储区域,(例如,通过系统调用或IPC)向DSP 102中的第二过程告知存在共享存储区域,向应用处理器的操作系统内核发出用于将共享存储区域映射到其地址空间的请求,并接收针对共享存储区域的虚拟地址(VA1)分配。第二过程(P2)可以从第一过程(P1)接收通知,向DSP操作系统内核发出用于映射共享存储区域的请求,并且接收针对该同一共享存储区域的另一个不同的虚拟地址(VA2)。
[0064] 如上文所讨论的,由于每个操作系统独立地分配虚拟地址并且在处理器之间没有用于协调这些存储器地址的分配和使用的执行控制,所以由第一处理器针对共享存储位置所分配的虚拟地址(VA1)将与由第二处理器针对相同的共享存储位置所分配的虚拟地址(VA2)不同。这样一来,两个处理器不能直接传送指针、相对地址、虚拟地址或经由引用共享存储器,不同的虚拟地址是在不同处理器中分配的。
[0065] 在各个方面中,多处理器计算系统400可以被配置为分配存储器地址,使得可以由两个异构处理器102、108使用同一虚拟地址,以便引用共享的存储器114中的同一物理地址。通过在不同的处理器中分配相同的虚拟地址,各个方面允许处理器传送指针、相对地址、虚拟地址或经由引用共享存储器。各个方面还减少了当将通用软件应用的一些部分卸载到辅助处理器时所执行的操作量,从而提高了系统400的性能特性。各个方面也减少了通过系统总线和结构所传送的信息量,从而进一步提高了设备的性能特性。
[0066] 通常,操作系统跟踪过程地址空间,作为所谓的虚拟存储区域的地址范围列表。在操作系统内核中的任务结构维护标识由过程所使用的虚拟地址范围的虚拟存储区域(VMA)的列表。
[0067] 在各个方面中,多处理器计算系统400可以被配置为使得当运行在应用处理器108中的第一过程(P1)创建共享存储区域时,其映射存储区域并将该映射发送给DSP 102。然后,运行在DSP 102中的第二过程(P2)将所接收的地址映射与其地址范围或其自身的共享存储区域的映射进行比较,识别在两个映射/地址之间的交集(例如,双方未使用的虚拟地址的范围),并将所识别的交集传送回应用处理器108。然后,两个处理器102、108将共享存储区域映射到在交集中所识别的公共虚拟地址。
[0068] 图5A描绘了提供对多处理器计算设备中的通用应用处理器和辅助处理器(例如,DSP)之间共享的存储区域进行访问的方法500的一方面。方法500的一方面可以在移动计算设备中由具有第一操作系统(OS)内核应用处理器和具有第二OS内核的辅助处理器来执行。在框502中,应用处理器可以请求(例如,通过系统调用第一OS内核)与辅助处理器进行地址协商。这可以由第一应用处理器中的第一过程(P1)向第一OS内核发出系统调用,请求与第二处理内核中的第二过程(P2)进行地址协商来完成。
[0069] 在框504中,应用处理器可以响应于请求地址协商来接收/获得第一过程(P1)的地址映射。在一个方面中,可以通过辅助处理器中的地址协商处理线程,在辅助处理器中接收第一过程(P1)的地址映射。在框506中,应用处理器可以向第二处理内核发送所获得的地址映射。在框508中,应用处理器可以等待来自辅助处理器的响应和/或执行其他处理任务。
[0070] 在框510中,辅助处理器可以从应用处理器接收第一过程(P1)的地址映射。在框512中,辅助处理器可以请求并获得第二过程(P2)的地址映射,例如通过向第二OS内核发出系统调用。在框514中,辅助处理器可以实施/执行地址匹配例程/进程以确定第一过程和第二过程(P1和P2)的地址映射是否包括任何匹配的虚拟地址或交集。这可以通过排序和比较地址或通过本领域已知的任何已知的地址匹配算法来完成。
[0071] 在判断框516中,辅助处理器可以判断地址匹配例程是否识别出任何匹配的地址或交集。当辅助处理器确定第一和第二过程(P1和P2)的地址映射不包括任何匹配的地址或交集时(例如,确定框516=“否”),则在框524中,辅助处理器可以使用传统方案来映射针对第二过程(P2)的共享存储区域的物理页面。
[0072] 当辅助处理器确定第一和第二过程(P1和P2)的地址映射包括匹配的地址或交集时(即,判断框516=“是”),则在框518中,辅助处理器通过将匹配的虚拟地址存储为第二OS内核中的共享存储区域的属性,来将这些匹配的虚拟地址存储为公共虚拟地址。即,每个过程的逻辑地址空间可以包括映射的存储区域,且每个映射的存储区域可以包括各种属性,例如用于控制写保护并且确定存储器是否可共享。在框518中,辅助处理器可以将匹配的虚拟地址存储为共享存储区域的这些属性中的一个属性。在框520中,辅助处理器可以在针对第二过程(P2)的公共地址处映射共享存储区域的物理页面。在框522中,辅助处理器可以将公共虚拟地址发送给应用处理器。
[0073] 在判断框516中,应用处理器可以轮询通信端口或套接字,以判断是否从辅助处理器接收到公共虚拟地址。当应用处理器确定没有接收到公共虚拟地址且已经经过了足够的时间量(例如,判断框526=“否”)时,在框532中,应用处理器可以使用传统方案来针对第一过程(P1)映射共享存储区域的物理页面。
[0074] 当应用处理器确定接收到公共虚拟地址时(即,判断框526=“是”),应用处理器可以在框528中将公共虚拟地址存储为第一OS内核中的共享存储区域的属性。在框530中,应用处理器可以在针对第一过程(P1)的公共地址处映射共享存储区域的物理页面。
[0075] 图5B描绘了一个方面中,将通用软件应用的一些部分卸载到辅助处理器(例如,DSP)的方法550。方法550的操作可以由多处理器计算设备中的应用处理器来执行。
[0076] 在框552中,应用处理器可以分析通用软件应用,以识别在移动设备在应用处理器中执行期间需要在该移动设备中执行的操作。在框554中,应用处理器可以基于所识别的操作,将软件应用分成段。在框556中,应用处理器可以确定一段通用软件应用可以在辅助处理器中执行。在框558中,应用处理器可以将该段转换、转变或编译成适合在辅助处理器中执行的代码。在框560中,应用处理器可以将所生成的代码存储在应用处理器和辅助处理器都可访问的共享存储区域中。在框562中,应用处理器可以使辅助处理器从共享存储区域中取出代码并执行代码。在一方面中,这可以由应用处理器向辅助处理器传送存储器引用(例如,通过向辅助处理器发送虚拟存储地址或链表的头部)来完成。
[0077] 各个方面可以在各种计算设备上实现,这些方面的示例在图6-8中示出。图6描绘了具有智能电话600形式的移动计算设备,该智能电话600包括多核处理器601,该多核处理器601耦接到内部存储器602、显示器604(例如,触摸屏显示器)以及扬声器606。此外,智能电话600可以包括用于接收和发送电磁辐射的天线608,该天线608可以连接到耦接到多核处理器601的无线数据链路和/或调制解调器或蜂窝电话收发机610。智能电话600通常还包括用于接收用户输入的菜单选择按钮或摇臂开关612。
[0078] 多核处理器601可以包括与上文所描述的以及在图1中所描绘的电路和结构相似的电路和结构,并且包括在图2和图3中所描绘的逻辑或功能组件中的任何一个或全部。调制解调器601也可以包括多个处理内核,并且其可以耦接到用于接收和发送射频信号的天线608。
[0079] 通常的智能电话600也可以包括声音编码/解码(CODEC)电路614,所述CODEC电路614将从麦克风接收的声音数字化成适合无线传输的数据分组,并将所接收的声音数据分组进行解码,以生成向扬声器提供的模拟信号从而产生声音。此外,多核处理器601、无线收发机610和CODEC 614中的一个或多个可以包括数字信号处理器(DSP)电路(未单独示出)。
[0080] 通常的移动计算设备将与图7中描绘的组件有共同之处,图7描绘了示例性的个人膝上型计算机700。这样的个人计算机700通常包括多核处理器701,所述多核处理器701耦接到易失性存储器702和诸如磁盘驱动器704之类的大容量非易失性存储器。计算机700也可以包括耦接到处理器701的压缩光盘(CD)和/或DVD驱动器708。计算机设备700也可以包括耦合到处理器701的、用于建立数据连接或接收外部存储器设备的许多连接器端口,例如用于将处理器701耦接到网络的网络连接电路。计算设备700可以具有用于发送和接收电磁辐射的无线电/天线710,该无线电/天线710连接到耦接至处理器701的无线数据链路。如在计算机领域中公知的,计算机700还可以包括键盘718、定位鼠标垫720、以及显示器722。
[0081] 各个方面也可以在各种市售服务器设备中的任何一个(例如,在图8中所描绘的服务器800)上实现。这样的服务器800通常包括多个处理器系统,这些处理器系统中的一个或多个可以是或包括多核处理器801。处理器801可以耦接到易失性存储器802和诸如磁盘驱动器803之类的大容量非易失性存储器。服务器800也可以包括耦接到处理器801的软盘驱动器、压缩光盘(CD)或DVD光盘驱动器804。服务器800还可以包括耦接到处理器801的、用于与网络808建立数据连接的网络接入端口806,例如耦接到其他广播系统计算机和服务器的局域网。
[0082] 处理器601、701、801可以是任何可编程的多核多处理器、微计算机或多处理器芯片,这些可编程的多核多处理器、微计算机或多处理器芯片能够由软件指令(应用)配置为执行包括本申请中描述的各个方面的功能和操作的各种功能。可以提供多个处理器,例如一个专用于无线通信功能的处理器以及一个专用于运行其他应用的处理器。通常,可以在访问软件应用以及将这些软件应用加载到处理器601、701、801中之前,将这些软件应用存储在内部存储器602、702、802中。在一些移动计算设备中,可以将另外的存储芯片(例如,安全数据(SD)卡)插入到移动设备中并耦接到处理器601、701、801中。内部存储器602、702、802可以是易失性存储器、或非易失性存储器(例如闪存),或二者的混合。为了本描述的目的,通常提到的存储器是指处理器601、701、801可访问的所有存储器,包括内部存储器602、
702、802、插入到移动设备中的可移动存储器、以及在处理器601、701、801本身中的存储器。
[0083] 多处理器硬件设计,例如上文参照图1所描述的那些,可以包括在相同封装中的、通常位于同一片硅片上的不同能力的多个处理内核。对称的多处理硬件包括连接到单个共享的主存储器并由单个操作系统控制的两个或更多个相同的处理器。不对称的或“松耦接的”多处理硬件可以包括:两个或更多个异构处理器/内核,其各自可以由独立的操作系统和硬件描述语言或指令集架构来控制,并连接到一个或多个共享的存储器/资源。
[0084] 用于在可编程处理器上执行以实现各个方面的操作的计算机程序代码或“代码”可以以诸如C、C++、C#、Smalltalk、Java、JavaScript、Visual Basic、结构化查询语言(例如,Transact-SQL)、Perl之类的高级编程语言或以各种其他编程语言来编写。如本申请中所使用的,存储在计算机可读存储介质上的程序代码或程序指其格式是处理器可理解的机器语言代码(例如,目标代码)。
[0085] 将许多移动计算设备操作系统内核组织到用户空间(其中,无特权的代码运行)和内核空间(其中,特权代码运行)中。这种分开在 和其他通用公共许可(GPL)环境中是特别重要的,在所述其他通用公共许可环境中,作为内核空间的一部分的代码必须是GPL许可的,而运行在用户空间中的代码不需要是GPL许可的。应该理解的是,除非另行明确声明,否则在此讨论的各种软件组件/模块可以在内核空间或用户空间中执行。
[0086] 如在本申请中使用的,术语“组件”、“模块”、“系统”、“服务”、“引擎”、“监听器”、“管理器”等意在包括计算机相关的实体,例如但不限于,硬件、固件、硬件与软件的组合、软件、执行中的软件,其被配置为执行特定的操作或功能。例如,组件可以是但不限于运行在处理器上的过程、处理器、对象、可执行程序、执行的线程、程序、和/或计算机。举例说明,运行在计算设备上的应用和计算设备都可以被称为组件。一个或多个组件可以驻留在过程和/或执行的线程中,一个组件可以位于一个处理器或内核上、和/或分布在两个或更多个处理器或内核之间。此外,这些组件可以从具有存储在其上的各种指令和/或数据结构的各种非易失性计算机可读介质来执行。组件可以通过本地和/或远程过程、功能或进程调用、电子信号、数据分组、存储器读/写、以及其他已知的与计算机、处理器、和/或过程相关的通信方法的方式进行通信。
[0087] 未来,可获得或可预期许多不同类型的存储器和存储技术,其全部适合用于各个方面。这样的存储器技术/类型包括本领域中已知的相变存储器(PRAM)、动态随机存取存储器(DRAM)、静态随机存取存储器、非易失性随机存取存储器(NVRAM)、伪静态的随机存取存储器(PSRAM)、双倍数据速率同步动态随机存取存储器(DDR SDRAM)以及其他随机存取存储器(RAM)和只读存储器(ROM)技术。DDR SDRAM存储器可以是双倍数据速率(DDR)类型1同步动态随机存取存储器(SDRAM)存储器、DDR类型2SDRAM存储器、DDR类型3SDRAM存储器、或DDR类型4SDRAM存储器。上文提及的每一存储技术包括例如适合用于存储指令、程序、控制信号、和/或用于在计算机或其他数字电子设备中使用或由计算机或其他数字电子设备使用的元件。除非在权利要求书语言中特别记载,否则对与个别类型的存储器、接口、标准或存储技术有关的术语和/或技术细节的任何提及仅是为了说明的目的,而不旨在将权利要求的保护范围限制到特定的存储系统或技术。
[0088] 提供前述的方法描述和过程流程图仅仅作为说明性示例,而不旨在需要或暗示各个方面的框必须按照所给出的顺序执行。如将由本领域普通技术人员应当理解的,前述方面中的框的顺序可以按照任何顺序来执行。诸如“此后”、“然后”、“下一个”等词不是旨在限制框的顺序;这些词仅用于引导读者通读方法的描述。此外,任何提及的单数形式的权利要求要素,例如,使用冠词“a”、“an”、“the”不能被解释为将该元素限制成单数。
[0089] 结合本文所公开的方面所描述的各种示例性的逻辑框、模块、电路和算法步骤均可以实现成电子硬件、计算机软件、或者二者的组合。为了清楚地描绘硬件和软件之间的这种可交换性,上面已经对各种示例性的部件、框、模块、电路以及步骤围绕其功能进行了总体描述。至于这种功能是实现成硬件还是实现成软件,取决于具体应用和向整个系统施加的设计约束。熟练的技术人员可以针对每个特定应用,以变通的方式实现所描述的功能,但是,这种实现决策不应解释为导致背离本申请的保护范围。
[0090] 可以利用通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或其它可编程逻辑器件、分立门或晶体管逻辑、分立硬件部件、或者被设计为执行本文所述功能的它们的任何组合来实现或执行用于实施结合本文公开的各方面所描述的各种示意性的逻辑、逻辑块、模块、以及电路的硬件。通用处理器可以是微处理器,但在可选方案中,处理器可以是任何常规的处理器、控制器、微控制器或状态机。还可以将处理器实现为计算设备的组合,例如,DSP和微处理器的组合、多个微处理器、结合有DSP内核的一个或多个微处理器、或者任何其它这类配置。或者,一些步骤或方法可以由专门针对给定功能的电路来执行。
[0091] 在一个或多个示例性的方面,所述功能可以用硬件、软件、固件或其任意组合的方式来实现。如果使用软件实现,则可以将这些功能作为一个或多个指令或代码存储在非临时性计算机可读介质或者非临时性处理器可读介质上。本申请中公开的方法或算法的步骤可以具体实现在处理器可执行的软件模块中,该处理器可执行的软件模块可以驻留在非临时性计算机可读的或处理器可读的存储介质上。非临时性计算机可读的或处理器可读的存储介质可以是可以由计算机或处理器访问的任何存储介质。通过示例而非限制的方式,这种非临时性计算机可读或处理器可读的介质可以包括RAM、ROM、EEPROM、闪存、CD-ROM或其它光盘存储器、磁盘存储器或其它磁性存储设备、或者能够用于存储具有指令或数据结构形式的期望的程序代码并可以由计算机访问的任何其它介质。如本申请所使用的,磁盘和光碟包括压缩光碟(CD)、激光光碟、光碟、数字多功能光碟(DVD)、软盘和蓝光光碟,其中磁盘通常磁性地复制数据,而光碟则用激光来光学地复制数据。上面的组合也应当被包括在非临时性计算机可读介质和处理器可读介质的范围之内。此外,方法和算法的操作可以作为代码和/或指令中的一个或任何组合、或代码和/或指令集驻留在非临时性处理器可读介质和/或计算机可读介质上,所述非临时性处理器可读介质和/或计算机可读介质可以并入计算机程序产品。
[0092] 提供所公开的方面的以上描述使本领域中的任何技术人员能够实现或使用本发明。对于本领域技术人员来说,对这些方面的各种修改是显而易见的,并且本申请定义的总体原理也可以在不脱离本发明的精神或保护范围的前提下适用于其它方面。因此,本发明并不旨在限于本申请中示出的方面,而是与后面的权利要求书和本申请所公开的原理和新颖特征的最宽范围相一致。