用于便携式设备中的同步任务分发的系统和方法

文档序号:10557120阅读:400来源:国知局
用于便携式设备中的同步任务分发的系统和方法
【专利摘要】便携式计算设备同步地将任务从第一处理资源卸载到替代处理资源。卸载请求被集中化并被传送至分发控制器。该请求规定替代处理资源和在共用或共享存储器中的与期望从主处理资源转移或分发到所标识的替代处理资源的线程相关的条目的位置。分发控制器响应于该请求来创建任务分发分组,其中该任务分发分组提供将先前在主处理资源上执行的线程的上下文切换到该替代处理资源所需要的信息。利用共用或共享存储器空间来提供期望的性能。一旦返回主处理资源,在共享存储器空间中可获得由该替代处理资源生成的结果。
【专利说明】
用于便携式设备中的同步任务分发的系统和方法
【背景技术】
[0001]计算设备是普遍存在的。一些计算设备是便携式的,例如智能电话、平板设备或膝上型计算机。除了这些设备的主要功能之外,许多设备包括支持外设功能的单元。例如,蜂窝电话可以包括:实现和支持蜂窝电话呼叫的主要功能,以及静物照相机、摄像机、全球定位系统(GPS)导航、网页浏览、发送和接收电子邮件、发送和接收文本消息、按键通话(push-to-talk)能力等的外设功能。随着这些便携式计算设备的功能增加,所需的计算或处理功率以及通常用于支持这种功能的数据存储容量也增加。
[0002]用于手持的便携式计算设备的一些传统设计包括多个处理器和/或具有多个内核的处理器以支持期望用于特定计算设备的各种主要功能和外设功能。这些设计通常将模拟、数字和射频电路或功能单元集成在单个衬底上并且通常被称为片上系统(SoC)。消费者想获得其膝上型计算机、平板设备和智能电话的改善的电池寿命、大小和重量。用于将处理工作转移至SoC内的组件的能力是功率管理和用户体验两者所考虑的。当用户需求不要求在SoC上可用的整个处理资源时,用于从某些资源移除功率的能力可以提供显著的功率节省。用于将某些任务转移到在处理所请求的任务上更有效的处理资源的能力可以既节省功率又提供性能增益。
[0003]然而,管理任务从一个处理资源向另一个处理资源的转移的代价可能阻止了任务被完全卸载,这是因为可能没有足够的工作来弥补与管理该转移相关联的延迟。此外,可以仅在时间容许管理该转移、完成任务并将结果返回给请求方时执行这种转移。也就是说,传统计算模型中的这种转移是被异步地管理的。尽管用户模式排队提供了用于显著地减少与管理从一个处理资源向另一个处理资源的任务转移相关联的延迟的潜在解决方案,但是所提出的模型依赖于以下的前提:所有这些转移是异步的。
[0004]因此,需要可应用于要求除了异步解决方案之外的解决方案的情形的、用于管理处理资源之间的任务转移的改进的机制。

【发明内容】

[0005]公开了系统和方法的示例实施例,所述系统和方法将便携式计算设备配置为将处理任务从第一处理资源同步地卸载到替代处理资源。任务卸载请求集中化来自主机或主处理资源(在一个示例布置中其是SoC的中央处理单元)。所公开的系统和方法使得诸如图形处理单元或数字信号处理器之类的设备能够保持自主。因此,允许这些元件保持与SoC的中央处理单元分离。
[0006]主机或主处理资源生成被传送至分发控制器的任务卸载请求或请求。该请求规定替代处理资源和在共用或共享存储器中的与期望从主处理资源转移或分发到所标识的替代处理资源的线程相关的条目的位置。存储在共享存储器中的条目或线程相关的条目可以包括代码、数据、或代码和数据两者。分发控制器响应于该请求来创建任务分发分组,其中该任务分发分组提供将先前在主处理资源上执行的线程的上下文切换到该替代处理资源所需要的信息。利用共用或共享存储器空间来提供期望的性能。在恢复线程的执行之前,主机或主处理资源等待来自分发控制器的关于任务完成的指示。在返回主处理资源时,在共用或共享存储器空间中可容易获得在替代处理资源中执行线程时所生成的结果。替代地,当没有进一步指令要被处理时,主处理资源向操作系统传送关于线程完成的通知。
[0007]计算设备的示例实施例包括:主处理资源、辅助或替代处理资源,辅助或替代处理资源被配置为与设备执行环境中的分发控制器通信。分发控制器同步地管理从主处理资源接收的功能调用。共用或共享器空间可被主处理资源和辅助处理资源两者访问。主处理资源和辅助处理资源被配置为根据信号/等待接口来生成相应信号并对相应信号进行响应。
[0008]用于便携式计算设备中的同步任务分发的方法的示例实施例包括以下步骤:将该便携式计算设备配置为具有主处理资源、辅助处理资源和共享存储器空间,其中共享存储器空间可被主处理资源和辅助处理资源访问;检测任务卸载条件;挂起在主处理资源中执行的线程的执行;响应于任务卸载条件,生成来自该便携式计算设备的请求;以及向分发控制器传送该请求,该请求标识用于该线程的执行的辅助处理资源。
[0009]计算设备的另一个示例实施例包括多个处理资源或用于处理线程的单元,用于处理线程的第一单元包括用于检测便携式计算设备上的任务卸载条件的机制。用于同步地分发该线程的机制或单元是响应于任务卸载条件。用于执行该线程的第二或替代处理单元是响应于用于同步地分发该线程的单元。
[0010]另一个示例实施例是非暂时性处理器可读介质,其具有存储在其中的处理器指令和数据,所述处理器指令和数据指导处理器执行包括以下操作的各种功能:检测任务卸载条件;挂起在主处理资源中执行的线程的执行;响应于任务卸载条件来生成请求;以及向分发控制器传送该请求,该请求标识用于该线程的执行的、与主处理资源不同的辅助处理资源。
【附图说明】
[0011]在附图中,除非另外指示,否则相似的附图标记贯穿各个视图指代相似的部件。对于具有诸如“102A”或“102B”之类的字母字符标号的附图标记,字母字符标号可以区分在同一幅图中存在的两个相似部件或元件。当意图是附图标记涵盖所有图中具有相同附图标记的所有部件时,可以省略附图标记的字母字符标号。
[0012]图1是示出了被配置成SoC的计算设备的示例实施例的示意图。
[0013]图2是用于在图1的SoC中对任务从主处理资源到辅助处理资源的分发进行同步地管理的子系统的示例实施例的示意图。
[0014]图3是示出了在图1的SoC中对任务的分发进行管理的计算环境的示例实施例的示意图。
[0015]图4是示出了在图1的SoC中对任务的分发进行管理的计算环境的另一个示例实施例的示意图。
[0016]图5是示出了在图1的SoC中对任务的分发进行管理的计算环境的第三示例实施例的示意图。
[0017]图6是示出了用户模式调度的任务与图3中介绍的计算环境的示例实施例的示意图。
[0018]图7是示出了协调器管理的任务与图4中介绍的计算环境的示意图。
[0019]图8是示出了使用寄存器集合来规定分发分组的示意图。
[0020]图9是用于SoC中的同步任务分发的方法的示例实施例的流程图。
【具体实施方式】
[0021]本文使用词语“示例性”来意指“充当示例、实例或说明”。本文描述为“示例性”的任何方面不必被认为比其它方面优选或具优势。
[0022]在本说明书中,术语“应用”也可以包括具有诸如以下各项之类的可执行内容的文件:目标代码、脚本、字节代码、标记语言文件、以及补丁。此外,本文提及的“应用”也可以包括本质上不可执行的文件,诸如可能需要打开的文档或需要存取的其它数据文件或数据值。
[0023]术语“内容”也可以包括具有诸如以下各项之类的可执行内容的文件:目标代码、脚本、字节代码、标记语言文件、以及补丁。此外,本文提及的“内容”也可以包括本质上不可执行的文件,诸如可能需要打开的文档或需要存取的其它数据文件或数据值。
[0024]如在本说明书中所使用的,术语“组件”、“模块”、“系统”等旨在指代计算机相关的实体,不是硬件、固件、硬件和软件的组合、软件就是执行中的软件。例如,组件可以是但不限于:在处理器上运行的过程、处理器、对象、可执行程序、执行线程、程序和/或计算机。通过说明的方式,在计算设备上运行的应用和计算设备两者可以是组件。一个或多个组件可以驻留在过程和/或执行线程内,并且组件可以集中在一个计算机上和/或分布在两个或多个计算机之间。此外,这些组件可以通过在其上存储有各种数据结构的各种计算机可读介质执行。组件可以通过本地的和/或远程的过程的方式,例如根据具有一个或多个数据分组的信号(例如,来自与本地系统、分布式系统中另一个组件进行交互的一个组件的数据,和/或通过信号的方式越过诸如互联网之类的网络与其它系统进行交互的一个组件的数据)来进行通信。
[0025]在本说明书中,术语“便携式计算设备”(“PCD”)用于描述在有限容量的可充电电源(例如,电池和/或电容器)上操作的任何设备。虽然具有可充电电源的PCD已经使用了几十年,但与第三代(“3G”)和第四代(“4G”)无线技术的出现伴随发生的可充电电池的技术进步,实现了具有多种能力的众多PCD。因此,PCD可以是蜂窝电话、卫星电话、寻呼机、PDA#能电话、导航设备、智能本或阅读器、媒体播放器、前述设备的组合、具有无线连接的膝上型计算机或平板计算机等等。
[0026]虽然具体参照PCD内的操作来进行描述,但所描述的系统和方法可以适用于具有多个处理资源的任何计算设备,其中将任务从一个处理系统自主地和同步地卸载到替代处理系统可能是有用的。换句话说,本文所公开的计算系统和方法适用于台式计算机、服务器计算机或具有多个处理资源的任何电子设备。
[0027]现在将参考指向所示示例。示出了SoC所支持的便携式计算设备(PCD)的非限制性方面的示例实施例,并且通常将其标记为1013P⑶100包括片上系统120,片上系统120包括多内核CPU 210。多内核CPU 210包括第O内核215、第I或第一内核216以及第N内核217A个内核中的每一个彼此独立并且被配置为处理诸如添加、移动数据、分支等之类的指令。多内核CPU 210执行软件,该软件对如调度器214所指示的调度安排进行管理。替代地,多内核CPU 210或SoC 120的另一部分被布置有硬件(S卩,电路)单元或一组硬件元件,该硬件元件或一组硬件元件被配置为实现任务调度器。
[0028]如图1中所示出的,显示控制器128和触摸屏控制器130耦合到多内核CPU210。转而,在片上系统120外部的显示器/触摸屏132耦合到显示控制器128和触摸屏控制器130。视频编码器134(例如,逐行倒相(PAL)编码器、顺序传送彩色与存储(SECAM)编码器或者国家电视系统委员会(NTSC)编码器)耦合到多内核CPU 210。此外,视频放大器136耦合到视频编码器134和显示器/触摸屏132。此外,视频端口 138耦合到视频放大器136。如图1中所描绘的,通用串行总线(USB)控制器140耦合到多内核CPU 210。USB存储设备142耦合到USB控制器140。系统存储器230和用户身份模块(SM)卡接口 146还可以利用多内核CPU210与系统存储器230之间的连接219耦合到多内核CPU 210,该连接219由用于在片上系统这些元件之间传输数据的两个或更多个物理通道或通路构成。此外,如图1中所示出的,数码照相机148可以耦合到多内核CPU 210。在一个示例性方面中,数码照相机148是电荷耦合器件(CCD)照相机或互补金属氧化物半导体(CMOS)照相机。
[0029]如图1中所示出的,立体声音频编解码器150可以耦合到多内核CPU210。此外,音频放大器152可以耦合到立体声音频编解码器150。在一个示例性方面中,第一立体声扬声器154和第二立体声扬声器156耦合到音频放大器152。图1示出了麦克风放大器158还可以耦合到立体声音频编解码器150。此外,麦克风116可以耦合到麦克风放大器158。在特定的方面中,频率调制(FM)无线电调谐器162可以耦合到立体声音频编解码器150。此外,FM天线164耦合到FM无线电调谐器162。此外,立体声端口 166可以耦合到立体声音频编解码器150。
[0030]图1还指示:射频(RF)收发机168耦合到多内核CPU210 JF开关170可以耦合到RF收发机168和RF天线172。如图1中所示出的,键盘174耦合到多内核CPU 210。此外,具有麦克风的单声道耳机176可以耦合到多内核CPU 210。此外,振动设备178可以耦合到多内核CPU210。图1还示出了电源180可以经由USB控制器140耦合到片上系统120。在特定的方面中,电源180是直流(DC)电源,其将电力提供给PCD 100的需要电力的各个组件。此外,在特定的方面中,电源180是可充电DC电池或DC电源,其中该DC电源是从连接到AC电源(未示出)的交流(AC)至DC变压器而得到的。
[0031]图1还指示:P⑶100还可以包括网卡188,网卡188可以用于接入数据网络,例如,局域网、个域网、任何其它网络。网卡188可以是蓝牙网卡、WiFi网卡、个域网(PAN)卡、或本领域公知的任何其它网卡。此外,可以将网卡188并入集成电路。也就是说,网卡188可以是芯片中的完整解决方案,并且可以不是单独的网卡188。
[0032]SoC 120还被布置有随机存取存储器(RAM)216、分发控制器(DC)212、数字信号处理器(DSP)220和图形处理单元(GPU)225。在所示实施例中,将这些元件中的每一个表示成单个硬件元件或单元。然而,应当理解,与多内核CPU 210—样,RAM 216,DC 212,DSP 220和GPU 225可以包括电路组件的多个实例或副本,诸如针对特定任务所设计的算术逻辑单元或其它计算元件(例如,用于像素着色、几何着色、向量处理的电路等),如可以期望的。此夕卜,应当理解,与这些元件中的任何元件(包括DC 212)相关联的一个或多个功能的第一集合可以用硬件或硬件和固件的组合来实现,而与各个元件相关联的一个或多个功能的第二或剩余集合可以用软件来实现,其中软件由适当的处理器来执行以便执行存储在软件中的指令。
[0033]如图1所描绘的,显示器/触摸屏132、视频端口 138、USB端口 142、照相机148、第一立体声扬声器154、第二立体声扬声器156、麦克风116、FM天线164、立体声端口 166、RF开关170、RF天线172、键盘174、单声道耳机176、振动器178、电源180位于片上系统120外部。
[0034]RF收发机168(其可以包括一个或多个调制解调器)支持以下各项中的一项或多项:全球移动通信系统(“GSM” )、码分多址(uCDMA")、宽带码分多址(“W-CDMA”)、时分同步码分多址(“TDSCDMA”)、长期演进(“LTE”)以及LTE的变型(诸如但不限于,FDB/LTE和PDD/LTE无线协议)。
[0035]在所示实施例中,描绘了多内核CPU210的单个实例。然而,应当理解,可以包括任意数量个类似地配置的多内核CPU以支持与PCD 100相关联的各种外围设备和功能。替代地,可以将单个处理器或多个处理器(每个处理器均具有单个算术逻辑单元或内核)部署在PCD 100或其它计算设备中,以支持与PCD 100相关联的各种外围设备和功能,如可期望的。
[0036]所示实施例示出了被布置在完全集成的片上系统120内的系统存储器230。然而,应当理解,可以在片上系统120外部布置具有M字节的相应数据存储容量的两个或更多个供应商提供的存储器模块。当布置在片上系统120外部时,支持系统存储器230的各个存储器模块通过修改的多通道存储器总线(未示出)(其包括用于向存储器模块传输数据和电力的适当电连接)的方式耦合到CPU 210。
[0037]在特定的方面中,本文所描述的方法步骤中的一个或多个可以经由如存储在系统存储器230中的数据和处理器指令所支持的硬件元件的组合(例如,多内核CPU 210,DSP220,GPU 225)来实现,其中这些数据和处理器指令如所期望的由多内核CPU 210中的一个或多个内核或其它硬件元件获取并被缓存在RAM 216、内部高速缓存(未示出)、或多内核CPU 210内的各种寄存器(未示出)中。对CPU、DSP和GPU进行设计的所属领域技术人员熟悉许多种用于管理和操作数据并处理指令以支持在PCD上执行的各种应用的技术。
[0038]图2是示出用于在图1中介绍的SoC120中对任务从主处理资源到辅助处理资源的分发进行同步地管理的子系统的示例实施例的示意图。如所示出的,子系统200包括通过总线228耦合到主处理资源202和辅助处理资源的易失性和非易失性存储器元件(例如RAM216和系统存储器230)。主处理资源或主机202包括图1中所介绍的多内核CPU 210并且执行诸如0/S 211之类的操作系统。如所公知的,0/S 211充当在应用或程序与P⑶100中的硬件之间的中间方。虽然应用代码由诸如CPU 210之类的硬件执行,但应用代码将频繁地与0/S211交互或者被0/S 211中断,因为0/S 211管理P⑶资源并且为PCD 100上的其它应用或程序提供公共的服务。
[0039]在默认操作模式中,使用主处理资源202来执行PCD100上的应用或程序。在替代操作模式中,主处理资源202执行运行时间(run-time)接口,该接口动态地确定用于将具有任务或线程形式的工作在主处理资源202与可用的辅助处理资源204中的一个或多个辅助处理资源之间进行划分的最优解决方案。替代地,每个程序或应用可以这样的方式来编译:指导主处理资源202何时向辅助处理资源204转发某些线程或任务。然而,这样布置的话,主处理资源或主机202通过生成和转发用于将任务卸载到辅助处理资源204的请求来对检测到卸载条件进行响应,辅助处理资源204在所示示例中可以是DSP 220或GPU 225的一个或多个实例或副本。在其它布置中(未示出),可以使用现场可编程门阵列(FPGA)、算术逻辑单元(ALU)或其它设备来处理一些线程的部分。如图2所指示的,将卸载请求间接地传送给辅助处理资源204。第一通路或分支使用调度器214,而第二分支或通路使用分发控制器212,来与辅助处理资源204通信。
[0040]异步的分发请求由主处理资源202生成并被传送给调度器214。调度器214包括协调器元件250,协调器元件250用于管理优先级和一个或多个另外的输入以确定何时向分发控制器212转发请求。将同步的分发请求传送给分发控制器212。无论是从调度器214间接地和异步地接收请求还是从主处理资源202直接地和同步地接收请求,分发控制器212生成分发分组,分发分组提供了用于在分发分组信息中所规定的辅助处理资源204执行卸载的线程所需要的所有信息。利用RAM 216内的共享虚拟存储器空间240来向辅助处理资源204提供线程的上下文,并且一旦线程完成,该共享虚拟存储器空间240可用于由主处理资源202进行的继续处理。
[0041 ]响应于主处理资源202所接收的一个或多个输入信号和/或一个或多个内部识别的条件(诸如在主处理资源202内执行的一个或多个应用程序或操作系统内生成的那些条件),生成任务卸载条件。当任务卸载条件被主处理资源202识别时,任务卸载条件指导主处理资源202挂起期望转移到辅助处理资源204的执行线程并且生成低延迟(例如,近似Ins或更少)信号/等待指示符。示例信令构造不需要包括数据并且可以包括一组指令,诸如sigresourcealloc_signal ()、signal (sigresource);以及wait(sigresource)。不例信令构造被暴露给和/或扩展到PCD 100中的处理资源和用于支持处理资源的其它元件。
[0042]主处理资源202优选地在生成并传送用于将线程卸载到辅助处理资源204的请求之前挂起执行线程。该挂起阻止线程在主处理资源202上重新开始,直到任务完成信号被返回给主处理资源202为止。主处理资源202所发出的请求类似于功能调用并且包括标识要用于执行线程的卸载部分的辅助处理资源204的特定实例和类型的信息。
[0043]对卸载线程的分发是间接的,因为主处理资源202经由分发控制器212耦合到辅助处理资源204。虽然示出为单个元件,但是应当理解,分发控制器实例用于被从主处理资源202卸载或转移到辅助处理资源204的每个线程。例如,如果多内核CPU 210包括四个处理内核并且处理内核中的两个处理内核已单独地识别了任务卸载条件,则分发控制器212的至少两个实例将用于生成分发分组并向诸如DSP 220和GPU 225之类的单独识别的辅助处理资源转发各个分发分组。分发控制器212可以实现为硬件元件或以在主处理资源202或主机上执行的软件来实现。此外,分发控制器212可以利用以诸如加法器、寄存器以及其它设备之类的硬件元件实现的一些功能和由耦合到寄存器或其它存储元件的处理资源以软件实现的其它功能来实现。
[0044]分发分组提供无依赖性的控制。也就是说,提交至分发控制控制器212并由其转发的一切东西是准备好供执行的。分发控制器212生成分发分组,该分发分组不仅标识辅助处理资源204,而且向所标识的辅助处理资源提供单个工作条目空间(例如,NDRange),该空间可以是一维、二维或三维的。例如,如果期望向960x640图像中的每个像素应用滤波器,则线程将标识960x640个工作条目,每一工作条目向图像中的像素应用滤波器,即工作条目(X,y)向像素(x,y)应用滤波器。在完成时,辅助处理资源204向发出分发分组的分发控制器212提供任务/线程完成信号。转而,分发控制器212将同样的指示转发至主处理资源202。主处理资源202可以将同样的内容传送给在多内核CPU210的剩余内核中的一个或多个内核上执行的0/S 211。如所布置的,分发控制器212保证分发请求被发给可用于执行线程的辅助处理资源204并由辅助处理资源204来服务该请求。此外,分发控制器212可以保持请求的集合与分发分组之间的关系,其进一步规定特定线程与PCD 100上的处理资源之间的一对一关系。
[0045]如图2中进一步所示出的,提供了全局协调器或调度器214以接收卸载请求并异步地生成至分发控制器212的分发命令。全局协调器或调度器214提供了用于对由主处理资源202卸载的任务进行调度的单元或机制。全局协调器或调度器适用于指导与在PCD 100上执行的应用相关联的任务的完成。全局协调器214或调度器被布置有协调器250的一个或多个实例或副本,其中协调器250响应于从主处理资源202接收的一个或多个请求来生成并发出分发命令。每个协调器250可以执行或包括微调度器,该微调度器被配置为向分发控制器212发起分发命令。
[0046]在可选的或替代的布置中,DSP 220被布置有实时操作系统(RT0S)221以响应于任务卸载条件来处理分发分组。RTOS 221以最小的缓存延迟对所接收的实时请求进行服务。调度器222为PCD 100内的嵌入式系统提供了可预测的执行模式。调度器222还提供了用于对由主处理资源202卸载的任务进行调度的替代单元或机制。RTOS 221在严格规定的时间或最后期限内进行响应。在该替代的布置中,DSP 220借助于分发控制器212的实例或副本向诸如GPU 225之类的其它处理资源发出用于卸载任务的请求。
[0047]如所描述的,用于处理线程的第一单元或机制包括主处理资源或主机202。用于处理线程的辅助或替代的单元或机制包括DSP 220,GPU 225、ALU(未示出)或其它电路或处理器中的一个或多个。用于同步地分发先前在主处理资源或主机202内执行的线程的单元或机制包括分发控制器212。用于处理线程的第一单元可以被布置为向分发控制器212直接传送卸载请求或通过调度器214间接传送卸载请求。对此,调度器214和在调度器214的指导下起作用的一个或多个协调器250提供了用于从用于处理线程的第一单元异步地接收请求的单元。调度器214也可以被认为是用于在计算机环境中调度任务的执行的全局协调器或单元或机制。如进一步所描述的,GPU 225提供了用于处理图形命令的单元或机制。
[0048]图3是示出了在图1的SoC120中对任务或线程从主处理资源到辅助处理资源的分发进行管理的计算环境300的示例实施例的示意图。计算环境300包括主处理资源或主机202、替代处理环境324和共享虚拟存储器240。主处理资源202包括多个CPU、计算元件或内核。在所示出的实施例中,主处理资源202包括0?1](0)320、0?1](1)321、0?1](2)322和0?1](3)323。然而,应当理解,可以在P⑶100内的主机或主处理资源202中包括更少的计算元件、更多的计算元件或各种不同计算元件的混合。
[0049]处理环境324包括与主处理资源(S卩,0?1](0)320、0?1](1)321、0?1](2)322和0?1](3)323)具有一对一关系的一组分发控制器(S卩,0以0)330、00(1)331、0(:(2)332和0(:(3)333)。工作组调度器325从各个分发控制器接收一个或多个分发分组并且将其中所提供的信息转发至所标识的辅助处理资源204的执行单元。在所示出的实施例中,辅助处理资源204被配置有执行单元(0)340至执行单元(N)348,其中N是整数。注意,执行单元340-348可以是相似地布置的并且与单个DSP或GPU相关联,或者执行单元可以是不同类型的特定于DSP^fDSP、GPU或数个GPU中的一个或两者和/或这些元件的组合的执行。整数N指示任何期望数量的执行单元可以包括在辅助或替代处理资源204中。
[0050]在所示出的实施例中,辅助处理资源204的执行单元340-348是DSP 220和GPU 225的子元件。然而,辅助处理资源204并不限于如此。执行单元可以是诸如专用集成电路(ASIC)或甚至跨SoC 120分布的独立的算术逻辑单元之类的其它器件之类的子元件。
[0051]如图3中进一步所示出的,通过计算环境300的总体处理流由具有封闭在圆圈内的序列标识符的箭头来指示。例如,CPU(2)322响应于所检测到的卸载条件来生成请求(由箭头I所描绘的),该请求被传送至分发控制器DC(2)332。作为响应,DC(2)332生成分发分组(由箭头2所描绘的),该分发分组被转发至工作组调度器325。转而,工作组调度器325将分发分组中所包括的信息转发至该分发分组中所标识的执行单元,如由箭头3所示出的。如在分发分组中还标识的,执行单元(0)340被指导为使用在共享虚拟存储器240的规定的范围245中所存储的信息。虚拟存储器240的该规定的范围245包括所卸载或分发的线程的上下文。在完成规定的工作(如在分发分组中还规定的)时,执行单元(O) 340在共享虚拟存储器240的该规定的范围245中留下修改版本的信息以用于由主处理资源202进行的另外的处理。此外,执行单元(0)340向工作调度器325发送关于线程或任务已完成的指示,如由箭头4所指示的。工作组调度器325记录任务/线程完成并将相同的指示发送至分发控制器DC(2)322,如由箭头5所指示的。转而,如由箭头6所示出的,DC(2)322向CPU(2)322转发关于任务/线程已完成的指示。主或主机处理资源202等待来自分发控制器的任务完成信号,并且在接收到任务完成信号时,就恢复对所挂起的线程的执行。
[0052]图6是示出了用户模式调度的任务与图3中介绍的计算环境300的示例实施例的示意图。如图6的计算环境300’中所示出的,请求375(其用于将从CPU(2)322传送的线程卸载至|JDC(2)332)呈现为功能调用,其包括规定的应用二进制接口(ABI)和被传递至规定的分发控制器(即,DC(2)332)的自变量。在所示出的用户模式调度的任务中,请求375(其在图3中用箭头I描绘)被箭头I和箭头2替代。其后的处理序列与图3中通过处理环境324相同,其中DC(2)332与工作组调度器325交互并且工作组调度器325还指导执行单元(0)340。类似地,除了来自DC(2)332的任务或线程完成指示由箭头7和箭头8描绘之外,以与图3中相同的方式来以信号形式发送任务完成,其中箭头7和箭头8—起指示来自DC(2)332的任务完成信号终止请求375中所表示的功能调用的“While逻辑部分”,该终止向CPU(2)322通知所卸载的任务/线程已完成。如简要描述的,CPU(2)322可以使用如由执行单元(0)340所修改的、共享虚拟存储器240的该规定的范围245中的信息来继续执行线程。
[0053]图4是示出了在图1的SoC120中对任务或线程的分发进行管理的计算环境400的另一个示例实施例的示意图。计算环境400包括主处理资源或主机202、替代处理环境420和共享虚拟存储器240。主处理资源202包括多个CPU、计算元件或内核。在所示出的实施例中,主处理资源202包括0?1](0)320、0?1](1)321、0?1](2)322和0?1](3)323。然而,应当理解,可以在PCD 100内的主机或主处理资源202中包括更少的计算元件、更多的计算元件或各种不同计算元件的混合。
[0054]处理环境420包括一组分发控制器(S卩,DC(0)430、DC(1)431、DC(2)432、DC(3)433和0以4)434)。因此,主处理资源202的0?1]不再与分发控制器(8卩,0(:(0)430、00(1)431、0〇(2)432和DC(4)433)具有一对一关系。工作组调度器325从各个分发控制器接收一个或多个分发分组并且将其中所提供的信息转发至所标识的辅助处理资源204的执行单元。在所示出的实施例中,辅助处理资源204被配置有执行单元(0)340至执行单元(N)348,其中N是整数。注意,执行单元340-348可以是相似地布置的并且与单个DSP或GPU相关联,或者执行单元可以是不同类型的特定于DSP、数个DSP、GPU或数个GPU中的一个或两者和/或这些元件的组合的执行。整数N指示任何期望数量的执行单元可以包括在辅助或替代处理资源204中。
[0055]在图4中所示出的计算环境400中,调度器410从主处理资源202异步地接收卸载请求。调度器410包括诸如协调器(0)412和协调器(M)418之类的协调器的多个实例或副本。协调器412-418(其可以用硬件和/或软件来实现)向分发控制器(S卩,DC(0)430、DC(1)431、DC
(2)432和DC(4)433)的一个或多个实例或副本同步地卸载线程请求。因此,在该布置中,分发控制器与协调器具有一对一的关系。
[0056]如图4中进一步所示出的,通过计算环境300的总体处理流由具有封闭在圆圈内的序列标识符的箭头来指示。例如,CPU(1)321响应于所检测到的卸载条件来生成请求(由箭头I所描绘的),该请求被传送至调度器410。调度器410响应于P⑶100上的当前条件和一个或多个执行算法将卸载请求转发至协调器(M)418,协调器(M)418转而(如由箭头2所示出的)向分发控制器DC(4)434传送该卸载请求。作为响应,DC(4)434生成卸载分组(由箭头3所描绘的),该分发分组被转发至工作组调度器325。转而,工作组调度器325将分发分组中所包括的信息转发至该分发分组中所标识的执行单元,如由箭头4所示出的。如在分发分组中所标识的,执行单元(N)348被指导为使用在共享虚拟存储器240的规定的范围445中所存储的信息。虚拟存储器240的该规定的范围445包括所卸载或分发的线程的上下文。在完成了规定的工作(如在分发分组中还规定的)时,执行单元(M) 348在共享虚拟存储器240的规定的范围445中留下修改版本的信息以用于由主处理资源202进行的另外的处理。此外,执行单元(M)348向工作调度器325发送关于线程或任务已完成的指示,如由箭头5所指示的。工作组调度器325记录任务/线程完成并将相同的指示发送至分发控制器DC(4)434,如由箭头6所指示的。转而,如由箭头7所示出的,DC(4)434向CPU(1)321转发线程/任务完成的指示。
[0057]协调器412-418对于处理环境来说是全局的并且可以与如可能被期望的将任务或线程从主处理资源卸载到第二或替代处理资源的分发控制器430-434通信。协调器412-418可以由诸如调度器410之类的微调度器直接执行以及可以经由一个或多个特定于域的语言而暴露给开发者和编程者。协调器412-418在与所描述的CPU 320-323—起被部署时提供了用于在PCD 100内构建和管理两级或层的调度的能力。
[0058]图7是示出了用户模式调度的协调器实现的任务与图4中介绍的计算环境400的示意图。除了图4中所示出的元件之外,计算环境400’,更具体地说替代处理环境720包括RTOS349,其中RTOS 349经由连接405与调度器410通信。连接405是双向通信路径,其使得RTOS349和调度器410能够可控制地执行卸载的任务或线程。如图7中的计算环境400’所示出的,协调器请求475(其用于将从CPU(1)321传送的线程卸载到DC(4)434)呈现为功能调用,其包括规定的应用二进制接口(ABI)和被传递至规定的分发控制器(S卩,DC(4)434)的自变量。在所示出的用户模式调度的协调器实现的任务中,协调器请求475(其在图3中用箭头2描绘)被箭头2和箭头3替代。其后的处理序列与图4中所示出的相同,其中DC(4)434与工作组调度器325交互并且工作组调度器325还指导执行单元(N)348。类似地,除了来自DC(4)434的任务或线程完成指示由箭头9和箭头10描绘之外,以与图4中相同的方式来以信号形式发送任务或线程完成,其中箭头9和箭头1—起指不来自DC(4)434的任务完成彳目号终止协调器请求475中所表示的功能调用的“While逻辑部分”,该终止向CPU(1)321通知所卸载的任务/线程已完成。其后,CPU(1)321可以使用如由执行单元(M)348所修改的、共享虚拟存储器240的该规定的范围245中的信息来继续执行线程和/或以信号形式向0/S发送线程已完成。
[0059]图5是示出了在图1的SoC120中对任务或线程的分发进行管理的计算环境500的第三示例实施例的示意图。在该布置中,处理环境520被配置有特定于图形处理单元的控制器534以代替DC(X)的实例。这种布置允许工作组调度器325利用非图形类型线程来独立地或同时地处理图形命令。此外,这种布置允许工作组调度器325使一种类型的线程(例如,图形线程)比其它线程优先级高。注意,虽然示出了一个特定于图形处理单元的控制器534,但是处理环境520不限于此并且可以包括任何期望数量的特定于图形处理单元的控制器。
[0060]如在其它示出的实施例中,特定于图形处理单元的控制器534的每个实例或副本可用于从主处理资源202接收用于卸载任务或线程的请求。由主处理资源202响应于一个或多个信号或条件来发出或以信号形式发送该请求。特定于图形处理单元的控制器534执行能够发起响应于该请求的分发命令的调度器(未示出)。
[0061]如图5中进一步所指示的,通过计算环境500的总体处理流由具有封闭在圆圈内的序列标识符的箭头来指示。例如,CPU(3)323响应于所检测到的卸载条件来生成请求(由箭头I所描绘的),该请求被传送至特定于图形处理单元的控制器534。作为响应,特定于图形处理单元的控制器534生成分发分组(由箭头2所描绘的),该分发分组被转发至工作组调度器325。转而,工作组调度器325将分发分组中所包括的信息转发至该分发分组中所标识的执行单元,如由箭头3所示出的。如在分发分组中还标识的,执行单元(0)540被指导为使用在共享虚拟存储器240的规定的范围545中所存储的信息。虚拟存储器240的该规定的范围545包括所卸载或分发的线程的上下文。在完成了规定的工作(如在分发分组中还规定的)时,执行单元(0)540在共享虚拟存储器240的该规定的范围545中留下修改版本的信息以用于由主处理资源202进行的另外的处理。此外,执行单元(0)540向工作调度器325发送关于线程或任务已完成的指示,如由箭头4所指示的。工作组调度器325记录任务/线程完成并将相同的指示发送至特定于图形处理单元的控制器534,如由箭头5所指示的。转而,如由箭头6所示出的,特定于图形处理单元的控制器534向CPU(3)323转发关于任务/线程已完成的指示。如所描述的,特定于图形处理单元的控制器提供了用于调度由GPU 225进行的图形命令处理的单元或机制。
[0062]图8是示出了使用寄存器集合来规定分发分组的示意图。分发分组规定了用于与辅助处理资源通信的应用二进制接口(ABI)800。如图8中所指示的,ABI 800是以特定方式布置的寄存器集合。例如,ABI可以包括具有期望数量的寄存器的集合。也就是说,ABI可以由用于存储辅助处理资源所使用的信息的整数数量个寄存器来规定。例如,寄存器801包括内核地址。寄存器802包括用于标识工作空间的维数的2个比特、多个保留比特以及工作空间的X维的大小。寄存器803包括标识工作空间的y维和z维的大小的比特。寄存器804标识用于X维和7维的工作组大小。寄存器805标识用于z维的工作大小以及工作组分段大小。寄存器806包括完成值地址,而寄存器807和寄存器808规定可以被传送至辅助处理资源的各个自变量。有可能的是,可以使用替代的寄存器来优化自变量传输并且可以实现各种编码技术和/或处理规则以阻止至分发控制器212的调用。
[0063]图9是用于SoC120中的同步任务分发的方法900的示例实施例的流程图。如所示出的,方法900开始于框902,其中在框902中,便携式计算设备100被配置有主处理资源和辅助处理资源,主处理资源和辅助处理资源共享存储器空间240。在框904中,主处理资源202或布置在PCD 100上的其它检测器或传感器检测卸载条件。响应于卸载条件,挂起在主处理资源202中执行的线程,如在框906中所指示的。主处理资源202响应于卸载条件和/或确认对执行线程的挂起来生成请求,如在框908中所指示的。如在框910中进一步所示出的,将请求传送至分发控制器212。将请求传送至分发控制器212的步骤包括传送可被主处理资源202和辅助处理资源204访问的共享存储器空间(S卩,SVM 240)中的至少一个位置,其中与线程相关联的信息正存储于此。如所描述的,该请求标识适用于继续执行先前挂起的线程的辅助处理资源。如还描述的,利用共享存储器空间,以使得辅助或替代处理资源可以容易使用与所挂起的线程相关联的上下文信息,并且当要求或期望由主处理资源进行的进一步处理时,可以在完成之时简单地传递回到主处理资源。
[0064]当所卸载的线程或任务仍然在进行处理时,如标记的箭头所指示的,“否”退出判决框912,并且在完成等待命令时,退出框914,重复查询。否则,如在框916中所指示的,使用分发控制器212以指示主处理资源:任务或线程完成。其后,如在框918中所指示的,主处理资源202恢复线程,并且如所期望的重复框904至918的功能。
[0065]如所示出和描述的,主处理资源或主机202提供了用于处理线程的机制。线程是可以由Ο/S或控制器独立地管理的最小的指令序列。如进一步所描述的,一个或多个分发控制器212或一个或多个特定于图形处理的控制器334提供了用于同步地卸载或分发标识的线程(如在从主处理资源202发出或传送的请求中所指示的)的机制。如还示出和描述的,诸如DSP、GPU、FPGA、ALU等之类的辅助或替代处理资源提供了用于执行如分发分组所指导的卸载线程的机制。
[0066]如所描述的,一个或多个非暂时性处理器或计算机可读介质或媒体可以具有存储在其上的处理器指令,所述处理器指令在被执行时指导处理器执行以下操作的期望功能:检测任务卸载条件;挂起在主处理资源中执行的线程的执行;响应于任务卸载条件来生成请求;向分发控制器传送该请求,该请求标识用于线程的执行的、与主处理资源不同的辅助处理资源。向分发控制器传送该请求的功能可以包括:规定应用二进制接口,该应用二进制接口指导辅助处理资源在何处定位当前存储在共享存储器空间中的、与线程相关的条目。
[0067]在本说明书中描述的过程或过程流中的某些步骤自然地先于其它步骤,以使本发明如所描述的运作。但是,本发明的系统和方法不限于所描述的步骤的次序,如果这样的次序或顺序不改变上述系统和方法的功能的话。也就是说,认识到的是,一些步骤可以在其它步骤之前、之后或与其它步骤并行地(基本上同时地)执行。在一些实例中,可以在不脱离上述系统和方法的情况下省略或不执行某些步骤。此外,诸如“其后”、“然后”、“接下来”、“随后”等之类的词语不旨在限制步骤的次序。这些词语仅用于引导读者完成示例性方法的描述。
[0068]另外,编程领域的普通技术人员能够基于例如在本说明书中的流程图和相关联的示例,在没有困难的情况下编写计算机代码或识别适当的硬件和/或电路以实现所公开的元件或功能。因此,对程序代码指令的特定集合或详细的硬件设备的公开不被认为是获得对如何实现以及使用本发明的系统和方法的足够的理解所必须的。在上文描述中并且结合附图更加详细地解释了所要求保护的处理器实现的过程的功能,所述附图可以说明各个过程流。
[0069]在如上文所指示的一个或多个示例性的方面中,所描述的功能可以用硬件、软件、固件或其任意组合来实现。如果用软件来实现,则所述功能可以作为一个或多个指令或代码存储在计算机可读介质(例如,非暂时性处理器可读介质)上。计算机可读介质包括数据存储介质。
[0070]存储介质可以是可由计算机或处理器存取的任何可用介质。通过举例而非限制性的方式,这种计算机可读介质可以包括RAM、R0M、EEPR0M、闪存、CD-ROM或其它光盘存储、磁盘存储或其它磁存储设备,或者可用于携带或存储具有指令或数据结构形式的期望的程序代码并且可以由计算机存取的任何其它介质。如本文所使用的,磁盘和光盘包括压缩光盘(“CD” )、激光光盘、光盘、数字多功能光盘(“DVD”)、软盘和蓝光光盘,其中磁盘通常磁性地复制数据,而光盘则利用激光来光学地复制数据。上述的组合也应当被包括在非暂时性计算机可读介质的范围内。
[0071]因此,虽然详细地说明和描述了所选择的方面,但是将理解的是,如下面的权利要求书所限定的,可以在不脱离本发明的系统和方法的情况下在本文中做出各种替代和改变。
【主权项】
1.一种计算设备,包括: 主处理资源; 辅助处理资源,其被配置为与设备执行环境中的分发控制器通信,所述分发控制器被配置为同步地管理来自所述主处理资源的功能调用;以及 共享存储器空间,其耦合至所述主处理资源和所述辅助处理资源并能够被所述主处理资源和所述辅助处理资源访问,其中,所述主处理资源和所述辅助处理资源被配置为生成信号/等待接口并对所述信号/等待接口进行响应。2.根据权利要求1所述的计算设备,其中,所述主处理资源响应于任务卸载条件来生成用于规定所述辅助处理资源的请求。3.根据权利要求2所述的计算设备,其中,所述主处理资源在生成所述请求之前挂起线程的执行。4.根据权利要求3所述的计算设备,其中,所述主处理资源等待来自所述分发控制器的任务完成信号,并且在接收到所述任务完成信号时,所述主处理资源恢复所述线程的执行。5.根据权利要求4所述的计算设备,其中,所述请求指导所述分发控制器提供使得所述辅助处理资源能够执行所述线程的信息。6.根据权利要求4所述的计算设备,其中,来自所述分发控制器的所述任务完成信号被传送到操作系统。7.根据权利要求1所述的计算设备,还包括: 全局协调器,其耦合到所述主处理资源,并且被配置为接收请求和响应于任务卸载条件来异步地生成规定所述辅助处理资源的分发命令。8.根据权利要求7所述的计算设备,其中,所述全局协调器执行能够响应于所述请求来发起所述分发命令的微调度器。9.根据权利要求1所述的计算设备,还包括: 特定于图形处理单元的控制器,其耦合到所述主处理资源,并且被配置为异步地接收响应于任务卸载条件的请求。10.根据权利要求9所述的计算设备,其中,所述特定于图形处理单元的控制器执行能够响应于所述请求来发起分发命令的调度器。11.根据权利要求1所述的计算设备,还包括: 数字信号处理器,其配置有实时操作系统,以异步地接收响应于任务卸载条件的请求。12.根据权利要求1所述的计算设备,其中,所述分发控制器是硬件元件。13.根据权利要求1所述的计算设备,其中,所述分发控制器是用软件来实现的。14.根据权利要求1所述的计算设备,其中,所述分发控制器的一个或多个功能的第一集合是用硬件元件来实现的,并且所述分发控制器的剩余功能是用软件来实现的。15.—种用于便携式计算设备中的同步任务分发的方法,包括: 将所述便携式计算设备配置为具有主处理资源、辅助处理资源和共享存储器空间,其中所述共享存储器空间是所述主处理资源和所述辅助处理资源可访问的; 检测任务卸载条件; 挂起在所述主处理资源中执行的线程的执行; 响应于所述任务卸载条件,生成来自所述便携式计算设备的请求; 向分发控制器传送所述请求,所述请求标识用于所述线程的执行的所述辅助处理资源。16.根据权利要求15所述的方法,其中,所述主处理资源和所述辅助处理资源被配置为生成信号/等待接口并对所述信号/等待接口进行响应。17.根据权利要求15所述的方法,其中,所述主处理资源等待来自所述分发控制器的任务完成信号,并且在接收到所述任务完成信号时,所述主处理资源恢复所述线程的执行。18.根据权利要求15所述的方法,其中,在以信号形式向操作系统发送所述线程完成了之前,所述主处理资源等待来自所述分发控制器的任务完成信号。19.根据权利要求15所述的方法,其中,向所述分发控制器传送所述请求包括:传送所述主处理资源和所述辅助处理资源可访问的所述共享存储器空间中的至少一个位置,其中与所述线程相关联的信息目前存储在所述至少一个位置。20.根据权利要求15所述的方法,其中,向所述分发控制器传送所述请求包括:使用特定于图形处理单元的控制器,所述特定于图形处理单元的控制器耦合到所述主处理资源并且被配置为异步地接收响应于任务卸载条件的所述请求。21.根据权利要求20所述的方法,其中,所述特定于图形处理单元的控制器执行能够发起针对于所述辅助处理资源的分发命令的调度器。22.根据权利要求15所述的方法,其中,向所述分发控制器传送所述请求包括:使用被配置有实时操作系统的数字信号处理器来异步地接收响应于所述任务卸载条件的、来自所述主处理资源的所述请求。23.—种计算设备,包括: 用于处理线程的第一单元,所述第一单元包括用于检测任务卸载条件的机制; 用于响应于所述任务卸载条件来同步地分发所述线程的单元;以及 用于响应于所述用于同步地分发所述线程的单元来处理所述线程的第二单元。24.根据权利要求23所述的计算设备,其中,用于处理所述线程的所述第一单元向用于同步地分发所述线程的所述单元标识用于处理所述线程的所述第二单元。25.根据权利要求24所述的计算设备,其中,用于处理所述线程的所述第一单元在向用于同步地分发所述线程的所述单元传送请求之前挂起所述线程的执行。26.根据权利要求24所述的计算设备,其中,用于处理所述线程的所述第一单元在恢复所述线程的执行之前等待来自用于同步地分发所述线程的所述单元的任务完成信号。27.根据权利要求26所述的计算设备,其中,用于处理所述线程的所述第一单元向操作系统转发关于收到所述任务完成信号的指示。28.一种非暂时性处理器可读介质,其具有存储在其上的处理器指令,所述处理器指令在被执行时指导所述处理器执行包括以下各项的功能: 检测任务卸载条件; 挂起在主处理资源中执行的线程的执行; 响应于所述任务卸载条件来生成请求; 向分发控制器传送所述请求,所述请求标识用于所述线程的执行的、与所述主处理资源不同的辅助处理资源。29.根据权利要求28所述的非暂时性处理器可读介质,其中,向所述分发控制器传送所述请求包括:规定应用二进制接口,所述应用二进制接口指导所述辅助处理资源在何处定位共享存储器空间中的与线程相关的条目。30.根据权利要求29所述的非暂时性处理器可读介质,其中,所述应用二进制接口包括具有N个寄存器的集合,其中N是整数。
【文档编号】G06F9/54GK105917311SQ201580005016
【公开日】2016年8月31日
【申请日】2015年1月21日
【发明人】B·R·加斯特
【申请人】高通股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1