CN104769552A - 向辅助处理器暴露主机操作系统服务 - Google Patents
向辅助处理器暴露主机操作系统服务 Download PDFInfo
- Publication number
- CN104769552A CN104769552A CN201380058200.6A CN201380058200A CN104769552A CN 104769552 A CN104769552 A CN 104769552A CN 201380058200 A CN201380058200 A CN 201380058200A CN 104769552 A CN104769552 A CN 104769552A
- Authority
- CN
- China
- Prior art keywords
- processor
- service
- auxiliary processor
- contextual
- application processor
- 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.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/547—Remote procedure calls [RPC]; Web services
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Stored Programmes (AREA)
- Telephonic Communication Services (AREA)
Abstract
方面方法、系统和设备可以被配置为在计算设备中或跨越网络来执行双向和/或反向过程调用,以将大部分进程操作从通用处理器卸载到辅助处理器,同时执行要求访问本地的在通用处理器(例如,应用处理器、CPU等)上的上下文信息的操作。双向和/或反向过程调用允许辅助处理器来执行包括子程序的操作,所述子程序需要访问应用处理器或调用进程上下文信息,而不需要该调用进程向辅助处理器发送上下文信息(例如,作为过程调用/方法调用等的一部分)。
Description
相关申请
本申请要求享有2012年11月9日提交的、标题为“Exposing HostOperating System Services to an Auxiliary Processor”的美国临时申请No.61/724,378的优先权的权益,故通过引用方式将其全部内容并入本文。
背景技术
在过去若干年,移动和无线技术已经见证了爆炸性的增长。这一增长得益于更好的通信、硬件和更可靠的协议。无线服务提供商现在能够为其客户提供不断扩大的特征和服务阵列,并为用户提供前所未有的信息访问、资源和通信水平。为了跟上这些增强的步伐,移动电子设备(例如,蜂窝电话、手表、耳机、远程控制设备等)已经变得比以往更加复杂,并且现在通常包括多个处理器、片上系统(SoC)以及其它资源,这允许移动设备用户在其移动设备上执行复杂和功率密集的软件应用(例如,视频流式传输、视频处理等)。在复杂性和功耗增加的情况下,更好地利用移动设备的资源和能力的新的和提高的处理解决方案对消费者来说将是有利的。
发明内容
各个方面包括在辅助处理器上执行通用应用操作的方法,所述方法包括:在计算设备的应用处理器中创建第一进程和第二进程,所述第一进程和所述第二进程具有第一上下文;由所述第二进程来调用所述辅助处理器的第一服务,所述第一服务使得所述第二进程进入阻塞状态;由所述第一进程来调用所述辅助处理器的第二服务,所述第二服务具有第二上下文;响应于从所述辅助处理器的所述第一服务接收到通信,解阻塞所述第二进程;由所述解阻塞的第二进程在所述应用处理器的所述第一上下文中执行基于上下文的操作;从所述应用处理器向所述辅助处理器发送执行基于上下文的操作的结果,所述辅助处理器基于所述执行基于上下文的操作的结果来执行额外的操作,以完成所述第二服务;以及由所述第一进程来接收当完成所述第二服务时在所述辅助处理器中生成的信息。
在一个方面,调用所述辅助处理器的第一服务可以包括:调用数字信号处理器中的所述第一服务。在进一步的方面,调用所述辅助处理器的第一服务可以包括:调用调制解调处理器中的所述第一服务。在进一步的方面,调用所述辅助处理器的第一服务包括:调用所述计算设备的处理器中的所述第一服务。在进一步的方面,调用所述辅助处理器的第一服务包括:调用远程计算设备的处理器中的所述第一服务。在进一步的方面,在所述应用处理器中执行基于上下文的操作包括:由所述解阻塞的第二进程来在所述应用处理器中执行基于上下文的操作,以生成基于上下文的信息,所述第二服务需要所述基于上下文的信息来在所述辅助处理器中执行所述额外的操作。在进一步的方面,从所述应用处理器向所述辅助处理器发送执行基于上下文的操作的结果包括:所述应用处理器将所生成的基于上下文的信息推送到通信总线上。
进一步的方面包括一种计算设备,该计算设备包括应用处理器,其被配置具有用于执行包括以下操作的处理器可执行指令:创建第一进程和第二进程,所述第一进程和所述第二进程具有第一上下文;由所述第二进程来调用辅助处理器的第一服务,所述第一服务使得所述第二进程进入阻塞状态;由所述第一进程来调用所述辅助处理器的第二服务,所述第二服务具有第二上下文;响应于从所述辅助处理器的所述第一服务接收到通信,解阻塞所述第二进程;由所述解阻塞的第二进程在所述第一上下文中执行基于上下文的操作;向所述辅助处理器发送执行基于上下文的操作的结果,以使得所述辅助处理器基于所述执行基于上下文的操作的结果来执行额外的操作,以完成所述第二服务;以及由所述第一进程来接收当完成所述第二服务时在所述辅助处理器中生成的信息。
在一个方面,所述辅助处理器可以是数字信号处理器,并且所述应用处理器可以被配置具有处理器可执行指令,从而调用所述辅助处理器的第一服务包括:调用所述数字信号处理器的服务。在进一步的方面,所述辅助处理器可以是调制解调处理器,并且所述应用处理器可以被配置具有处理器可执行指令,从而调用所述辅助处理器的第一服务包括:调用所述调制解调处理器的服务。在进一步的方面,调用所述辅助处理器的第一服务可以包括:调用所述计算设备的处理器中的所述第一服务。在进一步的方面,调用所述辅助处理器的第一服务可以包括:调用远程计算设备的处理器中的所述第一服务。在进一步的方面,所述应用处理器可以被配置具有处理器可执行指令,从而在所述应用处理器中执行基于上下文的操作可以包括:由所述解阻塞的第二进程来在所述应用处理器中执行基于上下文的操作,以生成基于上下文的信息,所述第二服务需要所述基于上下文的信息来在所述辅助处理器中执行所述额外的操作。在进一步的方面,所述通信设备可以包括通信总线,其中,所述应用处理器可以被配置具有处理器可执行指令,从而从所述应用处理器向所述辅助处理器发送执行基于上下文的操作的结果可以包括:所述应用处理器将所生成的基于上下文的信息推送到所述通信总线上。
进一步的方面包括一种计算设备,所述计算设备具有:应用处理器;用于在所述应用处理器中创建第一进程和第二进程,从而所述第一进程和所述第二进程具有第一上下文的单元;用于使得所述第二进程来调用辅助处理器的第一服务的单元,所述第一服务使得所述第二进程进入阻塞状态;用于使得所述第一进程来调用所述辅助处理器的第二服务的单元,所述第二服务具有第二上下文;用于响应于从所述辅助处理器的所述第一服务接收到通信,解阻塞所述第二进程的单元;用于使得所述解阻塞的第二进程在所述应用处理器的所述第一上下文中执行基于上下文的操作的单元;用于从所述应用处理器向所述辅助处理器发送执行基于上下文的操作的结果,以使得所述辅助处理器基于所述执行基于上下文的操作的结果来执行额外的操作,以完成所述第二服务的单元;以及用于在所述应用处理器中接收当完成所述第二服务时在所述辅助处理器中生成的信息的单元。
在一个方面,用于调用所述辅助处理器的第一服务的单元可以包括:用于调用数字信号处理器中的所述第一服务的单元。在进一步的方面,用于调用所述辅助处理器的第一服务的单元可以包括:用于调用调制解调处理器中的所述第一服务的单元。在进一步的方面,用于调用所述辅助处理器的第一服务的单元可以包括:用于调用所述计算设备的处理器中的所述第一服务的单元。在进一步的方面,用于调用所述辅助处理器的第一服务的单元可以包括:用于调用远程计算设备的处理器中的所述第一服务的单元。在进一步的方面,用于在所述应用处理器中执行基于上下文的操作的单元可以包括:用于由所述解阻塞的第二进程来在所述应用处理器中执行基于上下文的操作,以生成基于上下文的信息的单元,所述第二服务需要所述基于上下文的信息来在所述辅助处理器中执行所述额外的操作。在进一步的方面,用于从所述应用处理器向所述辅助处理器发送执行基于上下文的操作的结果的单元可以包括:用于将所生成的基于上下文的信息推送到通信总线上的单元。
进一步的方面包括一种非临时性计算机可读存储介质,其具有存储于其上的应用处理器可执行软件指令,所述软件指令被配置为使得应用处理器执行用于将通用应用操作卸载到辅助处理器的操作,所述操作包括:在所述应用处理器中创建第一进程和第二进程,所述第一进程和所述第二进程具有第一上下文;由所述第二进程来调用所述辅助处理器的第一服务,所述第一服务使得所述第二进程进入阻塞状态;由所述第一进程来调用所述辅助处理器的第二服务,所述第二服务具有第二上下文;响应于从所述辅助处理器的所述第一服务接收到通信,解阻塞所述第二进程;由所述解阻塞的第二进程在所述应用处理器的所述第一上下文中执行基于上下文的操作;从所述应用处理器向所述辅助处理器发送执行基于上下文的操作的结果,所述辅助处理器基于所述执行基于上下文的操作的结果来执行额外的操作,以完成所述第二服务;以及由所述第一进程来接收当完成所述第二服务时在所述辅助处理器中生成的信息。
在一个方面,所存储的处理器可执行软件指令可以被配置为使得处理器执行操作,从而调用所述辅助处理器的第一服务包括:调用数字信号处理器中的所述第一服务。在进一步的方面,所存储的处理器可执行软件指令可以被配置为使得处理器执行操作,从而调用所述辅助处理器的第一服务可以包括:调用调制解调处理器中的所述第一服务。在进一步的方面,所存储的处理器可执行软件指令可以被配置为使得处理器执行操作,从而调用所述辅助处理器的第一服务可以包括:调用包括所述辅助处理器的计算设备中的所述第一服务。在进一步的方面,所存储的处理器可执行软件指令可以被配置为使得处理器执行操作,从而调用所述辅助处理器的第一服务可以包括:调用远程计算设备中的所述第一服务。在进一步的方面,所存储的处理器可执行软件指令可以被配置为使得处理器执行操作,从而在所述应用处理器中执行基于上下文的操作可以包括:由所述解阻塞的第二进程来在所述应用处理器中执行基于上下文的操作,以生成基于上下文的信息,所述第二服务需要所述基于上下文的信息来在所述辅助处理器中执行所述额外的操作。在进一步的方面,所存储的处理器可执行软件指令可以被配置为使得处理器执行操作,从而从所述应用处理器向所述辅助处理器发送执行基于上下文的操作的结果可以包括:所述应用处理器将所生成的基于上下文的信息推送到通信总线上。
进一步的方面包括一种系统,所述系统包括:辅助处理器;应用处理器,其耦合到所述辅助处理器。所述应用处理器可以被配置具有用于执行包括以下各项的操作的应用处理器可执行指令:创建第一进程和第二进程,所述第一进程和所述第二进程具有第一上下文;由所述第二进程来调用所述辅助处理器的第一服务,以使得所述第二进程进入阻塞状态;由所述第一进程来调用所述辅助处理器的第二服务;响应于从所述辅助处理器的所述第一服务接收到通信,解阻塞所述第二进程;由所述解阻塞的第二进程在所述第一上下文中执行基于上下文的操作;向所述辅助处理器发送执行基于上下文的操作的结果;以及由所述第一进程来接收当完成所述第二服务时在所述辅助处理器中生成的信息,并且其中,所述辅助处理器可以被配置具有用于执行包括以下各项的操作的辅助处理器可执行指令:执行所述第一服务,以使得所述应用处理器的所述第二进程进入所述阻塞状态;响应于从所述第一进程接收到过程调用,执行所述第二服务;在遇到需要访问所述第一上下文的操作时,挂起所述第二服务的执行;从所述第一服务发送用于解阻塞所述应用处理器中的所述第二进程的通信;接收所述执行基于上下文的操作的结果,所述基于上下文的操作是在所述第一上下文中在所述应用处理器上执行的;以及基于所接收到的执行基于上下文的操作的结果,恢复所述第二服务的执行以及执行额外的操作。
在一个方面,所述辅助处理器可以是数字信号处理器,并且所述应用处理器可以被配置具有处理器可执行指令,从而调用所述辅助处理器的第一服务包括:调用所述数字信号处理器的服务。在进一步的方面,所述辅助处理器可以是调制解调处理器,并且所述应用处理器被配置具有处理器可执行指令,从而调用所述辅助处理器的第一服务可以包括:调用所述调制解调处理器的服务。在进一步的方面,调用所述辅助处理器的第一服务可以包括:调用所述系统的处理器中的所述第一服务。在进一步的方面,调用所述辅助处理器的第一服务可以包括:调用远程计算设备的处理器中的所述第一服务。在进一步的方面,所述应用处理器可以被配置具有处理器可执行指令,从而在所述应用处理器中执行基于上下文的操作可以包括:由所述解阻塞的第二进程来在所述应用处理器中执行基于上下文的操作,以生成基于上下文的信息,所述第二服务需要所述基于上下文的信息来在所述辅助处理器中执行所述额外的操作。在进一步的方面,所述计算设备还包括通信总线,其中,所述应用处理器可以被配置具有处理器可执行指令,从而从所述应用处理器向所述辅助处理器发送执行基于上下文的操作的结果可以包括:所述应用处理器将所生成的基于上下文的信息推送到通信总线上。
附图说明
并入本文并构成本说明书一部分的附图,示出了本发明的示例性实施例,并且连同上面给出的一般描述和下面给出的详细描述一起,用来解释本发明的特征。
图1是适于实现各种方面的示例性片上系统的架构图。
图2是示出了根据各个方面被配置为执行程序调用的计算系统中的示例性逻辑组件和功能组件的分层框图。
图3是执行程序调用以在辅助处理器上执行通用应用操作的一个方面方法的过程流程图。
图4是根据一个方面执行程序调用的一个方面应用处理器方法的过程流程图。
图5是适于与各种实施例一起使用的示例性智能电话的示图。
图6是适于与各种实施例一起使用的示例性膝上型计算机的示图。
图7是适于与各种实施例一起使用的示例性服务器计算机的示图。
具体实施方式
将参照附图来详细描述各种实施例。只要可能,将贯穿附图使用相同的附图标记来指代相同或相似的部分。对具体例子和实施方式的引用是出于说明的目的,并且不旨在限制本发明或权利要求书的保护范围。
词语“计算设备”在本文中一般用来指以下设备中的任一设备或所有设备:服务器、个人计算机、移动设备、蜂窝电话、平板计算机、膝上型计算机、上网本、超极本、掌上型计算机、个人数据助理(PDA)、无线电子邮件接收机、具有多媒体互联网能力的蜂窝电话、全球定位系统(GPS)接收机、无线游戏控制器以及包括可编程处理器的类似个人电子设备。虽然各个方面对具有有限处理能力和电池寿命的移动设备(例如,智能电话)是尤其有用的,但这些方面通常用于包括可编程处理器的任何计算设备。
总体上,各个方面包括使得能够在计算设备的辅助处理器上执行通用应用的方法,以及被配置为执行该方法的计算设备和处理器。该方法可以包括创建在应用处理器中创建第一进程和第二进程,所述第一进程和所述第二进程二者具有第一上下文。当被执行时,所述第二进程可以调用所述辅助处理器的第一服务,所述第一服务使得所述第二进程进入阻塞状态。然后,当执行所述第一进程时,其调用所述辅助处理器的第二服务,并响应于从所述辅助处理器的所述第一服务接收到通信,解阻塞所述第二进程。所述应用处理器上的第二进程操作的执行向所述辅助处理器发送所述第一上下文,这使得所述辅助处理器使用接收到的上下文来完成由所述第一进程调用的服务。随后,所述辅助处理器可以向在所述应用处理器上执行的所述第一进程发送所述第二服务的结果。
用于在可编程处理器上执行以实施各个方面的操作的计算机程序代码或“程序代码”,可以以高级编程语言来编写,或以各种其它编程语言来编写,所述高级编程语言例如C、C++、C#、Smalltalk、Java、JavaScript、Visual Basic、结构化查询语言(例如,transact-SQL)、Perl。如本文所使用的,存储在计算机可读存储介质上的程序代码或程序指的是机器语言代码(例如对象代码),其格式是可以由处理器理解的。
许多移动计算设备操作系统内核被组织成用户空间(非特权代码在此运行)和内核空间(特权代码在此运行)。这种分离在和其他通用公共许可(GPL)环境中是尤为重要的,在所述环境中,是内核空间的一部分的代码必须是GPL许可的,而在用户空间中运行的代码可以并非GPL许可的。但应该理解的是,除非另外明确地说明,否则这里讨论的各种软件组件/模块可以在内核空间或用户空间中实现。
本文使用词语“片上系统”(SOC)以指代包含集成在单个衬底上的多个资源和/或处理器的单个集成电路(IC)芯片。单个SOC可以包含用于数字、模拟、混合信号和射频功能的电路。单个SOC还可以包括任意数量的通用和/或专用处理器(数字信号处理器、调制解调器处理器、视频处理器等)、存储器块(例如,ROM、RAM、闪存等)以及资源(例如,计时器、电压调节器、振荡器等)。SOC还可以包括软件,所述软件用于控制集成的资源和处理器,以及用于控制外围设备。
本文使用词语“多核处理器”以指代包含被配置为读取并执行程序指令的两个或多个独立处理内核(例如,CPU内核)的单个集成电路(IC)芯片或芯片封装。SOC可以包括多个多核处理器,并且SOC中的每个处理器可以被称为内核。本文使用词语“多处理器”以指代包括被配置为读取并执行程序指令的两个或多个处理单元的系统或设备。
如本文中使用的,词语“组件”、“模块”、“系统”、“服务”、“引擎”、“监听器”、“管理者”等旨在包括计算机相关的实体,其例如但不限于:被配置为执行具体操作或功能的硬件、固件、硬件和软件的组合、软件、或执行中的软件。例如,组件可以是但不限于:在处理器上运行的进程、处理器、对象、可执行文件、执行的线程、程序和/或计算机。通过说明的方式,运行在计算设备上的应用和该计算设备可以被称作组件。一个或多个组件可以驻留在进程中和/或执行的线程中,并且组件可以位于在一个处理器或内核上,和/或分布在两个或多个处理器或内核之间。另外,这些组件可以从上面存储有各种指令和/或数据结构的各种非临时性计算机可读介质进行执行。组件可以通过以下各种方式进行通信:本地和/或远程进程、函数或过程调用、电子信号、数据分组、存储器读/写,和其他已知的计算机、处理器和/或进程相关的通信方法。
本文使用词语“上下文信息”来指可用于主机操作系统(例如,Android、Windows 8、LINIX等)上运行的进程的任何信息,并且可以包括操作状态数据以及标识操作系统服务、库、文件系统以及该进程或应用程序可以访问的其他资源的许可和/或访问限制。
一般地,进程在处理器上以在短的时间片来执行,从而看起来似乎多个进程在单个处理器上同时地运行。当进程在时间片的末尾被从处理器移除时,有关该进程的当前操作状态的信息存储在存储器中,因此当该进程返回到该处理器上进行执行时,其可以无缝地重新开始其操作。该操作状态数据可以包括该进程的地址空间、堆栈空间、虚拟地址空间、寄存器设置图像(例如程序计数器、堆栈指针、指令寄存器、程序状态字等)、核算信息、许可、访问限制和状态信息。
进程的状态信息可以包括指示该进程是否处于运行状态、就绪状态、阻塞状态等的信息。当进程的过程正由处理器执行时,其处于运行状态。当进程用于执行的所有条件(perquisite)被满足(例如,存储器和资源是可用的,等等)并且该进程等待被分配处理器时,其处于就绪状态。当进程等待事件的发生(例如,输入/输出完成事件等等)时,其处于阻塞状态。
进程可能会产生其他的进程,所产生的进程(即子进程)可能会继承产生进程(即父进程)的一些许可和访问限制(即上下文)。进程还可以是重权重进程,其包括多个轻权重进程或线程,所述轻权重进程或线程是与其他的进程/线程来共享他们的部分或者全部上下文(例如,地址空间、堆栈、许可和/或访问限制等)的进程。因此,单个进程可以包括共享单个上下文(即,处理器的上下文)、具有到单个上下文的访问、和/或在单个上下文内进行操作的多个线程。
一般来说,共享同一上下文、具有到同一上下文的访问、和/或在同一上下文内进行操作的进程可以经由快速存储器读/写操作进行通信。另一方面,独立的进程之间的通信不共享通常经由相对慢的函数调用、方法调用、过程调用、消息交换、域套接字(例如,Unix域套接字)以及其他形式的进程间通信(IPC)来完成的上下文。
远程过程调用(RPC)和远程方法调用(RMI)是进程间通信(IPC),其允许调用进程来使得子程序、过程、进程或服务(这里统称为“服务”)在另一个地址空间(通常在另一个处理器、芯片或计算设备上)中进行执行。
在多处理器和分布式计算系统中,存储器和可用于不同的处理器的资源往往在分开的域(例如,保护域、物理域等)中。另外,所述多个处理器中的每个处理器可以被配置具有不同的操作系统和/或实现不同的硬件描述语言(HDL)或指令集架构(ISA)。在这种系统中,RPC/RMI机制可以提供明确定义的接口,其允许在第一处理器上调用进程以使得服务在第二处理器上执行,并且允许第二处理器将服务的执行的结果发送回第一处理器。
在某些情况下,被调入/调用的服务可能需要访问对未与调用进程共享同一上下文的进程来说并非现成可用的信息。在这种情况下,现有的RPC解决方案要求包括在过程调用/方法调用中的调用进程来访问要由被调用的服务使用的所有上下文信息(即,状态信息、许可等等)。
将上下文信息包括在过程调用或方法调用中是移动设备资源的低效使用。另外,调用进程的处理器和被调入/调用服务的处理器可以具有不同的操作系统和/或实现不同的硬件描述语言(HDL)。在这种情况下,可能需要所谓的服务来执行复杂和功率密集的操作,以重新创建调用进程的上下文,从而被调用的服务的环境与调用进程的操作系统是一致的。此外,重新创建上下文可能需要对调用进程在其上进行执行的应用处理器的内核或主机操作系统进行修改。出于这些和其它原因,现有的解决方案可能会降低或减少移动设备的性能和功耗特性,并且降低用户体验。
各个方面提供了用于在辅助处理器(例如数字信号处理器、调制解调器处理器、协处理器等)上调用服务的改进的解决方案。
各个方面可以包括用于在计算设备中或跨越网络来执行双向和/或反向过程调用的机制。这种双向和/或反向过程调用可以允许辅助处理器来执行包括子程序的操作,所述子程序需要访问应用处理器的或调用进程的上下文信息,而不需要该调用进程向辅助处理器发送上下文信息(例如,作为过程调用/方法调用的一部分等)。
各个方面可以执行双向和/或反向过程调用,以从通用处理器向辅助处理器卸载大部分处理操作,同时执行需要访问本地地在通用处理器上的上下文信息的操作。各个方面可以在操作系统的用户空间中实现双向和/或反向过程调用,而不对内核进行任何修改。
各个方面通过减少与在通用处理器(例如,应用处理器、CPU等)和辅助处理器之间传送上下文信息相关联的开销来提高计算设备的性能和/或功耗特性。各个方面还通过减少与在第二/辅助处理器上重新创建调用进程或应用处理器的上下文相关联的开销来提高计算设备的性能和/或功耗特性。
各个方面可以包括被配置为在相同的上下文中在应用处理器上生成主进程(或线程)和多个辅助进程(或线程的)的系统、方法和设备,和/或使得主进程和辅助进程具有对相同的上下文信息的访问的系统、方法和设备。主进程可以包括用于实现通用软件应用的一个或多个操作的过程,且所述辅助进程中的每个可以包括用于实现要求访问上下文信息的主进程的子程序的过程。
该辅助进程可以被配置为在辅助处理器上调用服务,所述服务使得该辅助进程进入阻塞状态。当辅助进程保持在阻塞状态时,主进程可以在辅助处理器上调用服务。该服务可以开始在辅助处理器上执行子程序,以完成主进程的一个或多个操作或任务。
当服务遇到需要访问上下文信息的子程序时,服务可以解阻塞适于完成所遇到的子程序和/或获取所需的上下文信息的辅助进程。解阻塞的辅助进程可以在主进程的上下文内在应用处理器上进行执行,以获取所述服务所需的上下文信息和/或完成需要访问所述上下文信息的操作。在一个方面,当未阻塞的辅助进程在应用处理器上执行时,服务可能进入等待或阻塞状态。在另一个方面,当未阻塞的辅助进程在应用处理器上执行时,所述服务可以继续处理任务。因此,在一个方面,服务和辅助进程可以同时或并行地执行。
未阻塞的辅助进程可以向辅助处理器发送所获取的上下文信息和/或其处理的结果,并返回到阻塞状态。该服务可以使用从辅助进程接收到的信息来在辅助处理器上执行额外的操作,并向主进程发送通知和/或其操作结果。主进程可以使用接收到的结果来完成通用软件应用的操作,和/或基于接收到的通知来更新其状态。以这种方式,主进程可以向辅助处理器卸载通用处理操作,而不发送辅助处理器繁琐的上下文信息(例如,作为过程调用/方法调用的一部分等)。
各个方面可以在数个多处理器计算机系统(包括片上系统(SOC))上实现。图1示出了可以在实现各个方面的计算设备中使用的示例性片上系统(SOC)100的架构。SOC 100可以包括数个异构处理器,例如数字信号处理器(DSP)102、调制解调器处理器104、图形处理器106和应用处理器108。SOC 100还可以包括一个或多个协处理器110(例如,向量协处理器等),其连接到异构处理器102、104、106、108中的一个或多个。每个处理器102、104、106、108、110可以包括一个或多个内核,并且每个处理器/内核可以独立于其它处理器/内核来执行操作。例如,SOC 100可以包括执行第一类型的操作系统(例如,FreeBSD、LINIX、OS X等)的处理器和执行第二类型的操作系统(例如,微软Windows 8)的处理器。
SOC 100还可以包括模拟电路和定制电路114,其用于管理传感器数据、模拟-数字转换、无线数据传输,以及用于执行其他专门的操作,例如处理编码的音频和视频信号以在Web浏览器中呈现。SOC 100还可以包括系统组件和资源116,例如电压调节器、振荡器、锁相环、外围桥接器、数据控制器、存储器控制器、系统控制器、接入端口、定时器,以及用于支持处理器和运行在计算设备上的软件客户端(例如,web浏览器等)的其他类似的组件。
系统组件/资源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等)共享。
处理器102、104、106、108、110可以是彼此非常接近的独立处理内核(例如,在单个衬底、管芯、集成芯片上等)。处理器102、104、106、108、110的接近允许存储器112以相比于如果信号必须行到片外来说可能的频率/时钟速率要高得多的频率/时钟速率来进行操作。另外,处理器102、104、106、108、110的接近允许共享片上存储器和资源(例如,电压轨),以及允许内核之间更加协调合作。
例如以上参照图1所讨论的那些多处理器硬件设计,可以包括同一封装内不同功能的多个处理内核,其常常位于同一块硅片上。对称多处理硬件包括连接到单个共享的主存储器的、由单个操作系统控制的两个或多个相同的处理器。不对称或“松散耦合”的多处理硬件可以包括两个或多个异构处理器/内核,其每一个都可以由独立的操作系统和硬件描述语言或指令集架构来控制,并连接到一个或多个共享的存储器/资源。
图2示出了被配置为执行双向和/或反向远程过程调用的方面计算系统200中的示例性逻辑和功能组件。所示出的计算机系统200包括硬件组件和软件组件二者。硬件组件可以包括应用处理器108、数字信号处理器(DSP)102、互连模块124和存储器112模块。
软件组件可以包括主机操作系统202、主机操作系统用户进程204、主机监听器线程206、DSP操作系统208、DSP服务210、以及DSP监听器212。在一个方面,该主机操作系统202可以包括库模块(未示出),其被配置为从主机操作系统用户进程204接收高级语言(HLL)库,并在主机操作系统202上调用操作系统服务(例如,经由操作系统调用)。在一个方面,主机操作系统用户进程204可以是软件应用程序的进程。
主机操作系统用户进程204可以包括或引用上下文信息,其可以包括操作状态数据和许可和/或访问限制信息,其标识主机操作系统用户进程204可以访问的服务、库、文件系统、以及主机操作系统用户进程204的其他资源。主机监听器线程206可以是主机操作系统用户进程204的线程,其具有对主机操作系统用户进程204的上下文信息的访问。
DSP服务210可以是被配置为使得数字信号处理器102执行一个或多个操作的子程序、程序、进程或服务。DSP服务210还可以为主机操作系统用户进程204提供线程上下文。DSP监听器212可以是DSP服务210的线程。DSP监听器212可以为主机监听器线程206提供线程上下文。
图3示出了用于执行远程过程调用,以向辅助处理器卸载大部分通用进程的工作负载的方面方法300。在框302中,主机操作系统监听器线程206可以调用辅助处理器的服务,所述服务使得主机操作系统监听器线程206无限期地进入阻塞状态,同时其等待来自DSP监听器212的指令。
在框304中,主机操作系统用户进程204可以调用DSP用户服务210,其可以开始在辅助处理器上执行一般应用程序操作。DSP用户服务210可以继续执行一般应用程序操作,直到其遇到需要访问主机操作系统202的服务和/或需要访问主机操作系统用户进程204的上下文信息的操作或子程序。在图3所示的例子中,DSP用户服务210继续执行一般应用程序操作,直到其遇到“打开('文件1')”操作。
在框306中,DSP用户服务210可以向DSP监听器212线程发出命令,以执行遇到的“打开('文件1')”操作。在框308中,DSP用户服务210可以无限期地进入阻塞状态,同时其等待来自DSP监听器212的指令。在一个方面,框306和308的操作可以在单个操作中完成。
在框310中,DSP监听器212可以解阻塞主机操作系统监听器线程206。在框312中,DSP监听器212可以指示主机操作系统监听器线程206来执行“打开('文件1')”操作。在一个方面,框310和312的操作可以在单个操作中完成。
在框314中,主机操作系统监听器线程206可以在主机操作系统202上执行“打开('文件1')”操作。在框316中,主机操作系统监听器线程206可以向DSP监听器212线程发送“打开('文件1')”操作的结果。在框316中,主机操作系统监听线程206可以重新进入阻塞状态,同时其等待来自DSP监听器212的进一步的指令。在一个方面,框316和318的操作可以在单个操作中完成。
在框320中,DSP监听器212可以解阻塞DSP用户服务210。在框322中,DSP监听器212可以向DSP用户服务210发送“打开('文件1')”操作的结果。在一个方面,框320和322的操作可以在单个操作中完成。
在框324中,DSP用户服务210可以使用从DSP监听器212接收到的打开('文件1')”操作的结果来执行剩余的一般应用程序操作,并向主机操作系统用户进程204返回这些操作的结果。以这种方式,DSP用户服务210可以调用主机操作系统202上的服务,而无需重新创建主机操作系统202的上下文202。另外,不需要主机操作系统用户进程204向DSP用户服务210发送其上下文信息,这减少了通用处理器和辅助处理器之间传输的信息的量。
图4示出了用于向辅助处理器卸载需要访问操作系统服务的操作的方面应用处理器方法400。在框402中,应用处理器可以创建第一进程,所述第一进程包括可以向辅助处理器卸载的操作。在框404中,应用处理器可以在与第一进程相同的上下文中创建第二过程。在一个方面,第二进程可以是第一进程的线程。在一个方面,第一进程可以是主机操作系统用户进程204,而第二进程可以是主机操作系统监听器线程206。
在框406中,第二进程可以调用辅助处理器的服务,所述服务使得该第二进程无限期地进入阻塞状态。在框408中,第二进程可以进入阻塞状态,并且等待来自辅助处理器的指令。
在框410中,第一进程可以通过调用辅助处理器的服务来向辅助处理器卸载其操作。在框412中,第二进程可以从辅助处理器接收指令,以退出阻塞状态,并在应用处理器上执行一个或多个操作。在框414中,第二进程可以在应用处理器上执行一个或多个操作。在框416中,第二进程可以向辅助处理器发送在应用处理器上执行的操作的结果。在框418中,第二进程可以进入阻塞状态。在框420中,第一进程可以从辅助处理器接收该服务执行的结果。
各个方面可以在各种计算设备上实现,其例子在图5-7中示出。图5示出了智能电话500,其包括耦合到内部存储器502的多核处理器501、显示器504(例如,触摸屏显示器),以及扬声器506。另外,该智能电话500可以包括用于发送和接收电磁辐射的天线508,其可以连接到耦合至多核心处理器501的无线数据链路和/或调制解调器或蜂窝式电话收发机510。智能电话500典型地还包括菜单选择按钮或摇臂开关512,以用于接收用户输入。
多核处理器501可以包括类似于以上描述并且在图1-2中示出的那些电路和结构。调制解调器1501还可以包括多个处理内核,并且可以耦合到天线508,以用于接收和发射射频信号。
典型的智能电话500还包括声音编码/解码器(CODEC)电路514,其将从话筒接收的声音数字化为适于无线传输的数据分组,以及将接收到的声音数据分组进行解码,以生成被提供到扬声器的模拟信号,以产生声音。另外,一个或多个多核处理器501、无线收发器510和编解码器514可以包括数字信号处理器(DSP)电路(未单独示出)。
典型的移动计算设备将共有图6中所示的组件,图6示出了示例性个人膝上型计算机600。这种个人计算机600通常包括多核处理器601,其耦合到易失性存储器602和大容量非易失性存储器,例如磁盘驱动器604。计算机600还可以包括光盘(CD)和/或DVD驱动器608,其耦合到处理器801。计算机设备600还可以包括耦合到处理器601的数个连接器端口,以用于建立数据连接或接收外部存储器设备,所述连接器端口例如用于将处理器601耦合到网络的网络连接电路。该计算设备600可以具有无线设备/天线610以用于发送和接收电磁辐射,所述无线设备/天线610连接到耦合至处理器601的无线数据链路。计算机600还可以包括键盘618、定点鼠标垫620、以及显示器622,如计算机领域众所周知的。
各个方面还可以在任意各种市售服务器设备上实现,诸如在图7中示出的服务器700。这种计算设备典型地包括多个处理器系统,其中的一个或多个可以是或者包括多核处理器701。处理器701可以耦合到易失性存储器702和大容量非易失性存储器(例如磁盘驱动器703)。服务器700还可以包括耦合到处理器701的软盘驱动器、压缩光盘(CD)和/或DVD光盘驱动器704。服务器700还可以包括耦合到处理器701的网络访问端口706,以用于与网络707建立数据连接,网络707例如耦合到其它广播系统计算机和服务器的局域网。
处理器501、601、701可以是任何可编程多核多处理器、微型计算机或多处理器芯片,它们可以由软件指令(应用)来配置以执行各种功能,包括本文所描述的各个方面的功能和操作。可以提供多个处理器,例如一个处理器专用于无线通信功能,而一个处理器专用于运行其它应用。典型地,软件应用在被访问并且加载到处理器501、601、701之前,可以被存储在内部存储器502、602、702中。在一些移动计算设备中,额外的存储器芯片(例如,安全数据(SD)卡)可以插入到移动设备中并且耦合到处理器501、601、701。该内部存储器502、602、702可以是易失性或非易失性存储器(例如闪存)或者二者的混合物。出于此说明的目的,对存储器进行的一般引用指代可以由处理器501、601、701存取的所有存储器,包括内部存储器502、602、702,插入移动设备中的可移动存储器,和处理器501、601、701自身内的存储器。
前述的方法描述和过程流程图仅被提供给作为说明性的例子,而并非旨在要求或暗示必须按照给出的顺序来执行各个方面的方框。如本领域的技术人员应当意识到的,可以按照任何顺序来执行前述方面中的方框顺序。诸如“其后”、“然后”、“接下来”等词汇并非旨在限制方框的顺序;这些词汇仅用于引导读者阅读对方法的描述。此外,以单数形式(例如使用冠词“一个”、“一”或“该”)对权利要求要素进行的任何引用都不应被解释为将要素限制为单数。
结合本文所公开的方面所描述的各种说明性逻辑框、模块、电路和算法框可以被实现为电子硬件、计算机软件或二者的组合。为了清楚地说明硬件和软件的这种可互换性,以上各种说明性组件、方框、模块、电路和步骤均围绕它们的功能来概括性地进行了描述。这种功能是实现为硬件还是软件取决于具体应用和施加在整个系统上的设计约束。技术人员可以针对各个具体应用以变通方式来实现所描述的功能,但是这种实现决策不应当被解释为导致脱离本发明的范围。
可以利用被设计为执行本文所描述的功能的通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或其它可编程逻辑设备、分立门或晶体管逻辑器件、分立硬件组件、或其任意组合来实现或执行用于实现结合本文所公开的方面所描述的各种说明性逻辑单元、逻辑框、模块和电路的硬件。通用处理器可以是微处理器,但在替代方案中,该处理器可以是任何常规的处理器、控制器、微控制器或状态机。处理器还可以被实现为计算设备的组合,例如,DSP和微处理器的组合、多个微处理器、一个或多个微处理器与DSP内核的结合或任何其此种结构。或者,可由特定于给定功能的电路来执行一些步骤或方法。
在一个或多个示例性方面中,可以使用硬件、软件、固件或其任意组合来实现所描述的功能。如果使用软件实现,则可以将这些功能作为一个或多个指令或代码存储在非临时性计算机可读介质或非临时性处理器可读介质上。本文公开的方法或算法的步骤可以体现在处理器可执行软件模块中,该模块可以驻留在非临时性计算机可读或处理器可读存储介质上。非临时性计算机可读或处理器可读存储介质可以是可以由计算机或处理器存取的任何存储介质。通过举例而非限制的方式,这种非临时性计算机可读或处理器可读介质可以包括RAM、ROM、EEPROM、闪存、CD-ROM或其它光盘存储、磁盘存储或其它磁存储设备、或者能够用于存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其它介质。如本文所使用的,磁盘和光盘包括压缩光盘(CD)、激光光盘、光盘、数字多功能光盘(DVD)、软盘和蓝光光盘,其中,磁盘通常磁性地复制数据,而光盘则用激光来光学地复制数据。上面的组合也应当被包括在非临时性计算机可读和处理器可读介质的范围之内。另外,方法或算法的操作可以作为代码和/或指令中的一个、或其任意组合、或其集合,位于可以并入计算机程序产品的非临时性处理器可读介质和/或计算机可读介质上。
提供对所公开方面的之前描述以使本领域任何技术人员能够实施或使用本发明。对本领域技术人员而言,对这些方面的各种修改将是显而易见的,并且在不脱离本发明的精神或范围的情况下,可以将本文所定义的基本原理应用于其它方面。因而,本发明并不旨在要受限于本文示出的方面,而是要符合与本文所公开的权利要求和原理和新颖性特征相一致的最广范围。
Claims (35)
1.一种在辅助处理器上执行通用应用操作的方法,包括:
在计算设备的应用处理器中创建第一进程和第二进程,所述第一进程和所述第二进程具有第一上下文;
由所述第二进程来调用所述辅助处理器的第一服务,所述第一服务使得所述第二进程进入阻塞状态;
由所述第一进程来调用所述辅助处理器的第二服务,所述第二服务具有第二上下文;
响应于从所述辅助处理器的所述第一服务接收到通信,解阻塞所述第二进程;
由解阻塞的第二进程在所述应用处理器的所述第一上下文中执行基于上下文的操作;
从所述应用处理器向所述辅助处理器发送执行基于上下文的操作的结果,所述辅助处理器基于所述执行基于上下文的操作的结果来执行额外的操作,以完成所述第二服务;以及
由所述第一进程来接收当完成所述第二服务时在所述辅助处理器中生成的信息。
2.根据权利要求1所述的方法,其中,调用所述辅助处理器的第一服务包括:调用数字信号处理器中的所述第一服务。
3.根据权利要求1所述的方法,其中,调用所述辅助处理器的第一服务包括:调用调制解调处理器中的所述第一服务。
4.根据权利要求1所述的方法,其中,调用所述辅助处理器的第一服务包括:调用所述计算设备的处理器中的所述第一服务。
5.根据权利要求1所述的方法,其中,调用所述辅助处理器的第一服务包括:调用远程计算设备的处理器中的所述第一服务。
6.根据权利要求1所述的方法,其中,在所述应用处理器中执行基于上下文的操作包括:
由所述解阻塞的第二进程来在所述应用处理器中执行基于上下文的操作,以生成基于上下文的信息,所述第二服务需要所述基于上下文的信息来在所述辅助处理器中执行所述额外的操作。
7.根据权利要求6所述的方法,其中,从所述应用处理器向所述辅助处理器发送执行基于上下文的操作的结果包括:所述应用处理器将所生成的基于上下文的信息推送到通信总线上。
8.一种计算设备,包括:
应用处理器,其被配置具有用于执行包括以下操作的处理器可执行指令:
创建第一进程和第二进程,所述第一进程和所述第二进程具有第一上下文;
由所述第二进程来调用辅助处理器的第一服务,所述第一服务使得所述第二进程进入阻塞状态;
由所述第一进程来调用所述辅助处理器的第二服务,所述第二服务具有第二上下文;
响应于从所述辅助处理器的所述第一服务接收到通信,解阻塞所述第二进程;
由解阻塞的第二进程在所述第一上下文中执行基于上下文的操作;
向所述辅助处理器发送执行基于上下文的操作的结果,以使得所述辅助处理器基于所述执行基于上下文的操作的结果来执行额外的操作,以完成所述第二服务;以及
由所述第一进程来接收当完成所述第二服务时在所述辅助处理器中生成的信息。
9.根据权利要求8所述的计算设备,其中,所述辅助处理器是数字信号处理器,并且所述应用处理器被配置具有处理器可执行指令,从而调用所述辅助处理器的第一服务包括:调用所述数字信号处理器的服务。
10.根据权利要求8所述的计算设备,其中,所述辅助处理器是调制解调处理器,并且所述应用处理器被配置具有处理器可执行指令,从而调用所述辅助处理器的第一服务包括:调用所述调制解调处理器的服务。
11.根据权利要求8所述的计算设备,其中,所述应用处理器被配置具有处理器可执行指令,从而调用所述辅助处理器的第一服务包括:调用所述计算设备的处理器中的所述第一服务。
12.根据权利要求8所述的计算设备,其中,所述应用处理器被配置具有处理器可执行指令,从而调用所述辅助处理器的第一服务包括:调用远程计算设备的处理器中的所述第一服务。
13.根据权利要求8所述的计算设备,其中,所述应用处理器被配置具有处理器可执行指令,从而在所述应用处理器中执行基于上下文的操作包括:
由所述解阻塞的第二进程来在所述应用处理器中执行基于上下文的操作,以生成基于上下文的信息,所述第二服务需要所述基于上下文的信息来在所述辅助处理器中执行所述额外的操作。
14.根据权利要求13所述的计算设备,还包括通信总线,其中,所述应用处理器被配置具有处理器可执行指令,从而从所述应用处理器向所述辅助处理器发送执行基于上下文的操作的结果包括:所述应用处理器将所生成的基于上下文的信息推送到所述通信总线上。
15.一种计算设备,包括:
应用处理器;
用于在所述应用处理器中创建第一进程和第二进程,从而所述第一进程和所述第二进程具有第一上下文的单元;
用于使得所述第二进程来调用辅助处理器的第一服务的单元,所述第一服务使得所述第二进程进入阻塞状态;
用于使得所述第一进程来调用所述辅助处理器的第二服务的单元,所述第二服务具有第二上下文;
用于响应于从所述辅助处理器的所述第一服务接收到通信,解阻塞所述第二进程的单元;
用于使得解阻塞的第二进程在所述应用处理器的所述第一上下文中执行基于上下文的操作的单元;
用于从所述应用处理器向所述辅助处理器发送执行基于上下文的操作的结果,以使得所述辅助处理器基于所述执行基于上下文的操作的结果来执行额外的操作,以完成所述第二服务的单元;以及
用于在所述应用处理器中接收当完成所述第二服务时在所述辅助处理器中生成的信息的单元。
16.根据权利要求15所述的计算设备,其中,用于调用所述辅助处理器的第一服务的单元包括:用于调用数字信号处理器中的所述第一服务的单元。
17.根据权利要求15所述的计算设备,其中,用于调用所述辅助处理器的第一服务的单元包括:用于调用调制解调处理器中的所述第一服务的单元。
18.根据权利要求15所述的计算设备,其中,用于调用所述辅助处理器的第一服务的单元包括:用于调用所述计算设备的处理器中的所述第一服务的单元。
19.根据权利要求15所述的计算设备,其中,用于调用所述辅助处理器的第一服务的单元包括:用于调用远程计算设备的处理器中的所述第一服务的单元。
20.根据权利要求15所述的计算设备,其中,用于在所述应用处理器中执行基于上下文的操作的单元包括:
用于由所述解阻塞的第二进程来在所述应用处理器中执行基于上下文的操作,以生成基于上下文的信息的单元,所述第二服务需要所述基于上下文的信息来在所述辅助处理器中执行所述额外的操作。
21.根据权利要求20所述的计算设备,其中,用于从所述应用处理器向所述辅助处理器发送执行基于上下文的操作的结果的单元包括:用于将所生成的基于上下文的信息推送到通信总线上的单元。
22.一种非临时性计算机可读存储介质,其具有存储于其上的应用处理器可执行软件指令,所述软件指令被配置为使得应用处理器执行用于将通用应用操作卸载到辅助处理器的操作,所述操作包括:
在所述应用处理器中创建第一进程和第二进程,所述第一进程和所述第二进程具有第一上下文;
由所述第二进程来调用所述辅助处理器的第一服务,所述第一服务使得所述第二进程进入阻塞状态;
由所述第一进程来调用所述辅助处理器的第二服务,所述第二服务具有第二上下文;
响应于从所述辅助处理器的所述第一服务接收到通信,解阻塞所述第二进程;
由解阻塞的第二进程在所述应用处理器的所述第一上下文中执行基于上下文的操作;
从所述应用处理器向所述辅助处理器发送执行基于上下文的操作的结果,所述辅助处理器基于所述执行基于上下文的操作的结果来执行额外的操作,以完成所述第二服务;以及
由所述第一进程来接收当完成所述第二服务时在所述辅助处理器中生成的信息。
23.根据权利要求22所述的非临时性计算机可读存储介质,其中,所存储的处理器可执行软件指令被配置为使得处理器执行操作,从而调用所述辅助处理器的第一服务包括:调用数字信号处理器中的所述第一服务。
24.根据权利要求22所述的非临时性计算机可读存储介质,其中,所存储的处理器可执行软件指令被配置为使得处理器执行操作,从而调用所述辅助处理器的第一服务包括:调用调制解调处理器中的所述第一服务。
25.根据权利要求22所述的非临时性计算机可读存储介质,其中,所存储的处理器可执行软件指令被配置为使得处理器执行操作,从而调用所述辅助处理器的第一服务包括:调用包括所述辅助处理器的计算设备中的所述第一服务。
26.根据权利要求22所述的非临时性计算机可读存储介质,其中,所存储的处理器可执行软件指令被配置为使得处理器执行操作,从而调用所述辅助处理器的第一服务包括:调用远程计算设备中的所述第一服务。
27.根据权利要求22所述的非临时性计算机可读存储介质,其中,所存储的处理器可执行软件指令被配置为使得处理器执行操作,从而在所述应用处理器中执行基于上下文的操作包括:
由所述解阻塞的第二进程来在所述应用处理器中执行基于上下文的操作,以生成基于上下文的信息,所述第二服务需要所述基于上下文的信息来在所述辅助处理器中执行所述额外的操作。
28.根据权利要求27所述的非临时性计算机可读存储介质,其中,所存储的处理器可执行软件指令被配置为使得处理器执行操作,从而从所述应用处理器向所述辅助处理器发送执行基于上下文的操作的结果包括:所述应用处理器将所生成的基于上下文的信息推送到通信总线上。
29.一种系统,包括:
辅助处理器;
应用处理器,其耦合到所述辅助处理器,
其中,所述应用处理器被配置具有用于执行包括以下各项的操作的应用处理器可执行指令:
创建第一进程和第二进程,所述第一进程和所述第二进程具有第一上下文;
由所述第二进程来调用所述辅助处理器的第一服务,以使得所述第二进程进入阻塞状态;
由所述第一进程来调用所述辅助处理器的第二服务;
响应于从所述辅助处理器的所述第一服务接收到通信,解阻塞所述第二进程;
由解阻塞的第二进程在所述第一上下文中执行基于上下文的操作;
向所述辅助处理器发送执行基于上下文的操作的结果;以及
由所述第一进程来接收当完成所述第二服务时在所述辅助处理器中生成的信息,并且
其中,所述辅助处理器被配置具有用于执行包括以下各项的操作的辅助处理器可执行指令:
执行所述第一服务,以使得所述应用处理器的所述第二进程进入所述阻塞状态;
响应于从所述第一进程接收到过程调用,执行所述第二服务;
在遇到需要访问所述第一上下文的操作时,挂起所述第二服务的执行;
从所述第一服务发送用于解阻塞所述应用处理器中的所述第二进程的通信;
接收所述执行基于上下文的操作的结果,所述基于上下文的操作是在所述第一上下文中在所述应用处理器上执行的;以及
基于所接收到的执行基于上下文的操作的结果,恢复所述第二服务的执行以及执行额外的操作。
30.根据权利要求29所述的系统,其中,所述辅助处理器是数字信号处理器,并且所述应用处理器被配置具有处理器可执行指令,从而调用所述辅助处理器的第一服务包括:调用所述数字信号处理器的服务。
31.根据权利要求29所述的系统,其中,所述辅助处理器是调制解调处理器,并且所述应用处理器被配置具有处理器可执行指令,从而调用所述辅助处理器的第一服务包括:调用所述调制解调处理器的服务。
32.根据权利要求29所述的系统,其中,所述应用处理器被配置具有处理器可执行指令,从而调用所述辅助处理器的第一服务包括:调用所述系统的处理器中的所述第一服务。
33.根据权利要求29所述的系统,其中,所述应用处理器被配置具有处理器可执行指令,从而调用所述辅助处理器的第一服务包括:调用远程计算设备的处理器中的所述第一服务。
34.根据权利要求29所述的系统,其中,所述应用处理器被配置具有处理器可执行指令,从而在所述应用处理器中执行基于上下文的操作包括:
由所述解阻塞的第二进程来在所述应用处理器中执行基于上下文的操作,以生成基于上下文的信息,所述第二服务需要所述基于上下文的信息来在所述辅助处理器中执行所述额外的操作。
35.根据权利要求34所述的系统,还包括通信总线,其中,所述应用处理器被配置具有处理器可执行指令,从而从所述应用处理器向所述辅助处理器发送执行基于上下文的操作的结果包括:所述应用处理器将所生成的基于上下文的信息推送到所述通信总线上。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201261724378P | 2012-11-09 | 2012-11-09 | |
US61/724,378 | 2012-11-09 | ||
US13/721,999 | 2012-12-20 | ||
US13/721,999 US8869176B2 (en) | 2012-11-09 | 2012-12-20 | Exposing host operating system services to an auxillary processor |
PCT/US2013/063891 WO2014074256A1 (en) | 2012-11-09 | 2013-10-08 | Exposing host operating system services to an auxillary processor |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104769552A true CN104769552A (zh) | 2015-07-08 |
CN104769552B CN104769552B (zh) | 2016-07-13 |
Family
ID=50682884
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201380058200.6A Expired - Fee Related CN104769552B (zh) | 2012-11-09 | 2013-10-08 | 用于向辅助处理器暴露主机操作系统服务的方法和装置 |
Country Status (5)
Country | Link |
---|---|
US (1) | US8869176B2 (zh) |
EP (1) | EP2917835A1 (zh) |
JP (1) | JP5982581B2 (zh) |
CN (1) | CN104769552B (zh) |
WO (1) | WO2014074256A1 (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106484498A (zh) * | 2015-08-31 | 2017-03-08 | 阿里巴巴集团控股有限公司 | 基于Node的事件处理方法及相关服务端设备 |
CN108139938A (zh) * | 2015-07-31 | 2018-06-08 | 华为技术有限公司 | 用于利用次级线程以辅助主线程执行应用程序任务的装置、方法及计算机程序 |
CN109426571A (zh) * | 2017-08-28 | 2019-03-05 | 阿里巴巴集团控股有限公司 | 函数调用和数据访问的方法、系统、存储介质、处理器和装置 |
CN111209125A (zh) * | 2019-12-31 | 2020-05-29 | 瑞斯康达科技发展股份有限公司 | 一种多进程的命令行实现方法 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106453213B (zh) * | 2015-08-11 | 2019-09-17 | 阿里巴巴集团控股有限公司 | 一种系统间调用方法及装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6038604A (en) * | 1997-08-26 | 2000-03-14 | International Business Machines Corporation | Method and apparatus for efficient communications using active messages |
US20030055965A1 (en) * | 2001-09-20 | 2003-03-20 | International Business Machines Corporation | User-defined units of context in a distributed computer environment |
US20080148291A1 (en) * | 2006-10-30 | 2008-06-19 | Liquid Computing Corporation | Kernel functions for inter-processor communications in high performance multi-processor systems |
US20100083258A1 (en) * | 2008-09-29 | 2010-04-01 | Microsoft Corporation | Scheduling execution contexts with critical regions |
US8091086B1 (en) * | 2007-07-20 | 2012-01-03 | Parallels Holdings, Ltd. | System and method for virtualization using an open bus hypervisor |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4530051A (en) | 1982-09-10 | 1985-07-16 | At&T Bell Laboratories | Program process execution in a distributed multiprocessor system |
JPH03270431A (ja) * | 1990-03-20 | 1991-12-02 | Fujitsu Ltd | プロセッサ間通信方式 |
CA2061117C (en) | 1991-12-02 | 1998-09-29 | Neta J. Amit | Apparatus and method for distributed program stack |
US7076551B2 (en) | 2000-04-03 | 2006-07-11 | Texas Instruments Incorporated | Using remote procedure calls to manage co-processor resources |
US8937622B2 (en) | 2010-09-20 | 2015-01-20 | Qualcomm Incorporated | Inter-processor communication techniques in a multiple-processor computing platform |
-
2012
- 2012-12-20 US US13/721,999 patent/US8869176B2/en not_active Expired - Fee Related
-
2013
- 2013-10-08 WO PCT/US2013/063891 patent/WO2014074256A1/en active Application Filing
- 2013-10-08 CN CN201380058200.6A patent/CN104769552B/zh not_active Expired - Fee Related
- 2013-10-08 EP EP13777459.2A patent/EP2917835A1/en not_active Withdrawn
- 2013-10-08 JP JP2015540679A patent/JP5982581B2/ja not_active Expired - Fee Related
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6038604A (en) * | 1997-08-26 | 2000-03-14 | International Business Machines Corporation | Method and apparatus for efficient communications using active messages |
US20030055965A1 (en) * | 2001-09-20 | 2003-03-20 | International Business Machines Corporation | User-defined units of context in a distributed computer environment |
US20080148291A1 (en) * | 2006-10-30 | 2008-06-19 | Liquid Computing Corporation | Kernel functions for inter-processor communications in high performance multi-processor systems |
US8091086B1 (en) * | 2007-07-20 | 2012-01-03 | Parallels Holdings, Ltd. | System and method for virtualization using an open bus hypervisor |
US20100083258A1 (en) * | 2008-09-29 | 2010-04-01 | Microsoft Corporation | Scheduling execution contexts with critical regions |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108139938A (zh) * | 2015-07-31 | 2018-06-08 | 华为技术有限公司 | 用于利用次级线程以辅助主线程执行应用程序任务的装置、方法及计算机程序 |
CN106484498A (zh) * | 2015-08-31 | 2017-03-08 | 阿里巴巴集团控股有限公司 | 基于Node的事件处理方法及相关服务端设备 |
CN109426571A (zh) * | 2017-08-28 | 2019-03-05 | 阿里巴巴集团控股有限公司 | 函数调用和数据访问的方法、系统、存储介质、处理器和装置 |
CN111209125A (zh) * | 2019-12-31 | 2020-05-29 | 瑞斯康达科技发展股份有限公司 | 一种多进程的命令行实现方法 |
CN111209125B (zh) * | 2019-12-31 | 2023-09-26 | 瑞斯康达科技发展股份有限公司 | 一种多进程的命令行实现方法 |
Also Published As
Publication number | Publication date |
---|---|
US20140136817A1 (en) | 2014-05-15 |
WO2014074256A1 (en) | 2014-05-15 |
CN104769552B (zh) | 2016-07-13 |
JP5982581B2 (ja) | 2016-08-31 |
JP2015537301A (ja) | 2015-12-24 |
EP2917835A1 (en) | 2015-09-16 |
US8869176B2 (en) | 2014-10-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105431827B (zh) | 针对异构多处理器系统中的共享存储区域的动态地址协商 | |
US20210014132A1 (en) | Orchestrator execution planning using a distributed ledger | |
US20210303335A1 (en) | Enabling Execution of Program Instructions in the Background | |
CN117501246A (zh) | 用于端到端编排中的自主监测的系统和方法 | |
CN106575264A (zh) | 异构共享虚拟存储器中的按需共享性转换 | |
CN104769552B (zh) | 用于向辅助处理器暴露主机操作系统服务的方法和装置 | |
CN107209688A (zh) | 用于加速任务控制流的方法和系统 | |
CN104756097A (zh) | 一致性协议表 | |
CN105247825A (zh) | 基于信用的仲裁的服务率重新分配 | |
US20140189699A1 (en) | Scalable thread locking with customizable spinning | |
CN107924219A (zh) | 遮蔽处理器的核的功率状态 | |
CN102736917A (zh) | 管理在异构环境中的对象集合的技术 | |
US20220100498A1 (en) | Implementation of object versioning and consistency at scale | |
NL2033544B1 (en) | Methods and apparatus to implement edge scalable adaptive-grained monitoring and telemetry processing for multi-qos services | |
CN107567614A (zh) | 用于对根据关键度被分组的指令的缕程的执行的多核处理器 | |
CN113010265A (zh) | Pod的调度方法、调度器、存储插件及系统 | |
CN100568245C (zh) | 工作流数据的持久化处理方法、装置及工作流系统 | |
CN101025747A (zh) | 用于收集数据处理系统中的清单信息的方法和系统 | |
Qiu et al. | Mobile Applications Development with Android: Technologies and Algorithms | |
CN109408212B (zh) | 任务调度组件构造方法、装置及存储介质、服务器 | |
EP4202669B1 (en) | Methods and apparatus for secure execution on smart network interface cards | |
US20220114033A1 (en) | Latency and dependency-aware task scheduling workloads on multicore platforms using for energy efficiency | |
Pedram et al. | Report for the NSF workshop on cross-layer power optimization and management | |
Panunzio | Definition, realization and evaluation of a software reference architecture for use in space applications | |
National Research Council et al. | The new global ecosystem in advanced computing: Implications for US competitiveness and national security |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
EXSB | Decision made by sipo to initiate substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20160713 Termination date: 20181008 |