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

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

Info

Publication number
CN105917311B
CN105917311B CN201580005016.4A CN201580005016A CN105917311B CN 105917311 B CN105917311 B CN 105917311B CN 201580005016 A CN201580005016 A CN 201580005016A CN 105917311 B CN105917311 B CN 105917311B
Authority
CN
China
Prior art keywords
resource
main process
thread
request
task
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.)
Expired - Fee Related
Application number
CN201580005016.4A
Other languages
English (en)
Other versions
CN105917311A (zh
Inventor
B·R·加斯特
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Qualcomm Inc
Original Assignee
Qualcomm Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Qualcomm Inc filed Critical Qualcomm Inc
Publication of CN105917311A publication Critical patent/CN105917311A/zh
Application granted granted Critical
Publication of CN105917311B publication Critical patent/CN105917311B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/485Task life-cycle, e.g. stopping, restarting, resuming execution
    • G06F9/4856Task life-cycle, e.g. stopping, restarting, resuming execution resumption being on a different machine, e.g. task migration, virtual machine migration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/547Remote procedure calls [RPC]; Web services

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)
  • Multi Processors (AREA)
  • Computer And Data Communications (AREA)

Abstract

便携式计算设备同步地将任务从第一处理资源卸载到替代处理资源。卸载请求被集中化并被传送至分发控制器。该请求规定替代处理资源和在共用或共享存储器中的与期望从主处理资源转移或分发到所标识的替代处理资源的线程相关的条目的位置。分发控制器响应于该请求来创建任务分发分组,其中该任务分发分组提供将先前在主处理资源上执行的线程的上下文切换到该替代处理资源所需要的信息。利用共用或共享存储器空间来提供期望的性能。一旦返回主处理资源,在共享存储器空间中可获得由该替代处理资源生成的结果。

Description

用于便携式设备中的同步任务分发的系统和方法
背景技术
计算设备是普遍存在的。一些计算设备是便携式的,例如智能电话、平板设备或膝上型计算机。除了这些设备的主要功能之外,许多设备包括支持外设功能的单元。例如,蜂窝电话可以包括:实现和支持蜂窝电话呼叫的主要功能,以及静物照相机、摄像机、全球定位系统(GPS)导航、网页浏览、发送和接收电子邮件、发送和接收文本消息、按键通话(push-to-talk)能力等的外设功能。随着这些便携式计算设备的功能增加,所需的计算或处理功率以及通常用于支持这种功能的数据存储容量也增加。
用于手持的便携式计算设备的一些传统设计包括多个处理器和/或具有多个内核的处理器以支持期望用于特定计算设备的各种主要功能和外设功能。这些设计通常将模拟、数字和射频电路或功能单元集成在单个衬底上并且通常被称为片上系统(SoC)。消费者想获得其膝上型计算机、平板设备和智能电话的改善的电池寿命、大小和重量。用于将处理工作转移至SoC内的组件的能力是功率管理和用户体验两者所考虑的。当用户需求不要求在SoC上可用的整个处理资源时,用于从某些资源移除功率的能力可以提供显著的功率节省。用于将某些任务转移到在处理所请求的任务上更有效的处理资源的能力可以既节省功率又提供性能增益。
然而,管理任务从一个处理资源向另一个处理资源的转移的代价可能阻止了任务被完全卸载,这是因为可能没有足够的工作来弥补与管理该转移相关联的延迟。此外,可以仅在时间容许管理该转移、完成任务并将结果返回给请求方时执行这种转移。也就是说,传统计算模型中的这种转移是被异步地管理的。尽管用户模式排队提供了用于显著地减少与管理从一个处理资源向另一个处理资源的任务转移相关联的延迟的潜在解决方案,但是所提出的模型依赖于以下的前提:所有这些转移是异步的。
因此,需要可应用于要求除了异步解决方案之外的解决方案的情形的、用于管理处理资源之间的任务转移的改进的机制。
发明内容
公开了系统和方法的示例实施例,所述系统和方法将便携式计算设备配置为将处理任务从第一处理资源同步地卸载到替代处理资源。任务卸载请求集中化来自主机或主处理资源(在一个示例布置中其是SoC的中央处理单元)。所公开的系统和方法使得诸如图形处理单元或数字信号处理器之类的设备能够保持自主。因此,允许这些元件保持与SoC的中央处理单元分离。
主机或主处理资源生成被传送至分发控制器的任务卸载请求或请求。该请求规定替代处理资源和在共用或共享存储器中的与期望从主处理资源转移或分发到所标识的替代处理资源的线程相关的条目的位置。存储在共享存储器中的条目或线程相关的条目可以包括代码、数据、或代码和数据两者。分发控制器响应于该请求来创建任务分发分组,其中该任务分发分组提供将先前在主处理资源上执行的线程的上下文切换到该替代处理资源所需要的信息。利用共用或共享存储器空间来提供期望的性能。在恢复线程的执行之前,主机或主处理资源等待来自分发控制器的关于任务完成的指示。在返回主处理资源时,在共用或共享存储器空间中可容易获得在替代处理资源中执行线程时所生成的结果。替代地,当没有进一步指令要被处理时,主处理资源向操作系统传送关于线程完成的通知。
计算设备的示例实施例包括:主处理资源、辅助或替代处理资源,辅助或替代处理资源被配置为与设备执行环境中的分发控制器通信。分发控制器同步地管理从主处理资源接收的功能调用。共用或共享器空间可被主处理资源和辅助处理资源两者访问。主处理资源和辅助处理资源被配置为根据信号/等待接口来生成相应信号并对相应信号进行响应。
用于便携式计算设备中的同步任务分发的方法的示例实施例包括以下步骤:将该便携式计算设备配置为具有主处理资源、辅助处理资源和共享存储器空间,其中共享存储器空间可被主处理资源和辅助处理资源访问;检测任务卸载条件;挂起在主处理资源中执行的线程的执行;响应于任务卸载条件,生成来自该便携式计算设备的请求;以及向分发控制器传送该请求,该请求标识用于该线程的执行的辅助处理资源。
计算设备的另一个示例实施例包括多个处理资源或用于处理线程的单元,用于处理线程的第一单元包括用于检测便携式计算设备上的任务卸载条件的机制。用于同步地分发该线程的机制或单元是响应于任务卸载条件。用于执行该线程的第二或替代处理单元是响应于用于同步地分发该线程的单元。
另一个示例实施例是非暂时性处理器可读介质,其具有存储在其中的处理器指令和数据,所述处理器指令和数据指导处理器执行包括以下操作的各种功能:检测任务卸载条件;挂起在主处理资源中执行的线程的执行;响应于任务卸载条件来生成请求;以及向分发控制器传送该请求,该请求标识用于该线程的执行的、与主处理资源不同的辅助处理资源。
附图说明
在附图中,除非另外指示,否则相似的附图标记贯穿各个视图指代相似的部件。对于具有诸如“102A”或“102B”之类的字母字符标号的附图标记,字母字符标号可以区分在同一幅图中存在的两个相似部件或元件。当意图是附图标记涵盖所有图中具有相同附图标记的所有部件时,可以省略附图标记的字母字符标号。
图1是示出了被配置成SoC的计算设备的示例实施例的示意图。
图2是用于在图1的SoC中对任务从主处理资源到辅助处理资源的分发进行同步地管理的子系统的示例实施例的示意图。
图3是示出了在图1的SoC中对任务的分发进行管理的计算环境的示例实施例的示意图。
图4是示出了在图1的SoC中对任务的分发进行管理的计算环境的另一个示例实施例的示意图。
图5是示出了在图1的SoC中对任务的分发进行管理的计算环境的第三示例实施例的示意图。
图6是示出了用户模式调度的任务与图3中介绍的计算环境的示例实施例的示意图。
图7是示出了协调器管理的任务与图4中介绍的计算环境的示意图。
图8是示出了使用寄存器集合来规定分发分组的示意图。
图9是用于SoC中的同步任务分发的方法的示例实施例的流程图。
具体实施方式
本文使用词语“示例性”来意指“充当示例、实例或说明”。本文描述为“示例性”的任何方面不必被认为比其它方面优选或具优势。
在本说明书中,术语“应用”也可以包括具有诸如以下各项之类的可执行内容的文件:目标代码、脚本、字节代码、标记语言文件、以及补丁。此外,本文提及的“应用”也可以包括本质上不可执行的文件,诸如可能需要打开的文档或需要存取的其它数据文件或数据值。
术语“内容”也可以包括具有诸如以下各项之类的可执行内容的文件:目标代码、脚本、字节代码、标记语言文件、以及补丁。此外,本文提及的“内容”也可以包括本质上不可执行的文件,诸如可能需要打开的文档或需要存取的其它数据文件或数据值。
如在本说明书中所使用的,术语“组件”、“模块”、“系统”等旨在指代计算机相关的实体,不是硬件、固件、硬件和软件的组合、软件就是执行中的软件。例如,组件可以是但不限于:在处理器上运行的过程、处理器、对象、可执行程序、执行线程、程序和/或计算机。通过说明的方式,在计算设备上运行的应用和计算设备两者可以是组件。一个或多个组件可以驻留在过程和/或执行线程内,并且组件可以集中在一个计算机上和/或分布在两个或多个计算机之间。此外,这些组件可以通过在其上存储有各种数据结构的各种计算机可读介质执行。组件可以通过本地的和/或远程的过程的方式,例如根据具有一个或多个数据分组的信号(例如,来自与本地系统、分布式系统中另一个组件进行交互的一个组件的数据,和/或通过信号的方式越过诸如互联网之类的网络与其它系统进行交互的一个组件的数据)来进行通信。
在本说明书中,术语“便携式计算设备”(“PCD”)用于描述在有限容量的可充电电源(例如,电池和/或电容器)上操作的任何设备。虽然具有可充电电源的PCD已经使用了几十年,但与第三代(“3G”)和第四代(“4G”)无线技术的出现伴随发生的可充电电池的技术进步,实现了具有多种能力的众多PCD。因此,PCD可以是蜂窝电话、卫星电话、寻呼机、PDA、智能电话、导航设备、智能本或阅读器、媒体播放器、前述设备的组合、具有无线连接的膝上型计算机或平板计算机等等。
虽然具体参照PCD内的操作来进行描述,但所描述的系统和方法可以适用于具有多个处理资源的任何计算设备,其中将任务从一个处理系统自主地和同步地卸载到替代处理系统可能是有用的。换句话说,本文所公开的计算系统和方法适用于台式计算机、服务器计算机或具有多个处理资源的任何电子设备。
现在将参考指向所示示例。示出了SoC所支持的便携式计算设备(PCD)的非限制性方面的示例实施例,并且通常将其标记为100。PCD 100包括片上系统120,片上系统120包括多内核CPU 210。多内核CPU 210包括第0内核215、第1或第一内核216以及第N内核217。N个内核中的每一个彼此独立并且被配置为处理诸如添加、移动数据、分支等之类的指令。多内核CPU 210执行软件,该软件对如调度器214所指示的调度安排进行管理。替代地,多内核CPU 210或SoC 120的另一部分被布置有硬件(即,电路)单元或一组硬件元件,该硬件元件或一组硬件元件被配置为实现任务调度器。
如图1中所示出的,显示控制器128和触摸屏控制器130耦合到多内核CPU 210。转而,在片上系统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和用户身份模块(SIM)卡接口146还可以利用多内核CPU210与系统存储器230之间的连接219耦合到多内核CPU 210,该连接219由用于在片上系统这些元件之间传输数据的两个或更多个物理通道或通路构成。此外,如图1中所示出的,数码照相机148可以耦合到多内核CPU 210。在一个示例性方面中,数码照相机148是电荷耦合器件(CCD)照相机或互补金属氧化物半导体(CMOS)照相机。
如图1中所示出的,立体声音频编解码器150可以耦合到多内核CPU 210。此外,音频放大器152可以耦合到立体声音频编解码器150。在一个示例性方面中,第一立体声扬声器154和第二立体声扬声器156耦合到音频放大器152。图1示出了麦克风放大器158还可以耦合到立体声音频编解码器150。此外,麦克风116可以耦合到麦克风放大器158。在特定的方面中,频率调制(FM)无线电调谐器162可以耦合到立体声音频编解码器150。此外,FM天线164耦合到FM无线电调谐器162。此外,立体声端口166可以耦合到立体声音频编解码器150。
图1还指示:射频(RF)收发机168耦合到多内核CPU 210。RF开关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变压器而得到的。
图1还指示:PCD 100还可以包括网卡188,网卡188可以用于接入数据网络,例如,局域网、个域网、任何其它网络。网卡188可以是蓝牙网卡、WiFi网卡、个域网(PAN)卡、或本领域公知的任何其它网卡。此外,可以将网卡188并入集成电路。也就是说,网卡188可以是芯片中的完整解决方案,并且可以不是单独的网卡188。
SoC 120还被布置有随机存取存储器(RAM)216、分发控制器(DC)212、数字信号处理器(DSP)220和图形处理单元(GPU)225。在所示实施例中,将这些元件中的每一个表示成单个硬件元件或单元。然而,应当理解,与多内核CPU 210一样,RAM 216、DC 212、DSP 220和GPU 225可以包括电路组件的多个实例或副本,诸如针对特定任务所设计的算术逻辑单元或其它计算元件(例如,用于像素着色、几何着色、向量处理的电路等),如可以期望的。此外,应当理解,与这些元件中的任何元件(包括DC 212)相关联的一个或多个功能的第一集合可以用硬件或硬件和固件的组合来实现,而与各个元件相关联的一个或多个功能的第二或剩余集合可以用软件来实现,其中软件由适当的处理器来执行以便执行存储在软件中的指令。
如图1所描绘的,显示器/触摸屏132、视频端口138、USB端口142、照相机148、第一立体声扬声器154、第二立体声扬声器156、麦克风116、FM天线164、立体声端口166、RF开关170、RF天线172、键盘174、单声道耳机176、振动器178、电源180位于片上系统120外部。
RF收发机168(其可以包括一个或多个调制解调器)支持以下各项中的一项或多项:全球移动通信系统(“GSM”)、码分多址(“CDMA”)、宽带码分多址(“W-CDMA”)、时分同步码分多址(“TDSCDMA”)、长期演进(“LTE”)以及LTE的变型(诸如但不限于,FDB/LTE和PDD/LTE无线协议)。
在所示实施例中,描绘了多内核CPU 210的单个实例。然而,应当理解,可以包括任意数量个类似地配置的多内核CPU以支持与PCD 100相关联的各种外围设备和功能。替代地,可以将单个处理器或多个处理器(每个处理器均具有单个算术逻辑单元或内核)部署在PCD 100或其它计算设备中,以支持与PCD 100相关联的各种外围设备和功能,如可期望的。
所示实施例示出了被布置在完全集成的片上系统120内的系统存储器230。然而,应当理解,可以在片上系统120外部布置具有M字节的相应数据存储容量的两个或更多个供应商提供的存储器模块。当布置在片上系统120外部时,支持系统存储器230的各个存储器模块通过修改的多通道存储器总线(未示出)(其包括用于向存储器模块传输数据和电力的适当电连接)的方式耦合到CPU 210。
在特定的方面中,本文所描述的方法步骤中的一个或多个可以经由如存储在系统存储器230中的数据和处理器指令所支持的硬件元件的组合(例如,多内核CPU 210、DSP220、GPU 225)来实现,其中这些数据和处理器指令如所期望的由多内核CPU 210中的一个或多个内核或其它硬件元件获取并被缓存在RAM 216、内部高速缓存(未示出)、或多内核CPU 210内的各种寄存器(未示出)中。对CPU、DSP和GPU进行设计的所属领域技术人员熟悉许多种用于管理和操作数据并处理指令以支持在PCD上执行的各种应用的技术。
图2是示出用于在图1中介绍的SoC 120中对任务从主处理资源到辅助处理资源的分发进行同步地管理的子系统的示例实施例的示意图。如所示出的,子系统200包括通过总线228耦合到主处理资源202和辅助处理资源的易失性和非易失性存储器元件(例如RAM216和系统存储器230)。主处理资源或主机202包括图1中所介绍的多内核CPU 210并且执行诸如O/S 211之类的操作系统。如所公知的,O/S 211充当在应用或程序与PCD 100中的硬件之间的中间方。虽然应用代码由诸如CPU 210之类的硬件执行,但应用代码将频繁地与O/S211交互或者被O/S 211中断,因为O/S 211管理PCD资源并且为PCD 100上的其它应用或程序提供公共的服务。
在默认操作模式中,使用主处理资源202来执行PCD 100上的应用或程序。在替代操作模式中,主处理资源202执行运行时间(run-time)接口,该接口动态地确定用于将具有任务或线程形式的工作在主处理资源202与可用的辅助处理资源204中的一个或多个辅助处理资源之间进行划分的最优解决方案。替代地,每个程序或应用可以这样的方式来编译:指导主处理资源202何时向辅助处理资源204转发某些线程或任务。然而,这样布置的话,主处理资源或主机202通过生成和转发用于将任务卸载到辅助处理资源204的请求来对检测到卸载条件进行响应,辅助处理资源204在所示示例中可以是DSP 220或GPU 225的一个或多个实例或副本。在其它布置中(未示出),可以使用现场可编程门阵列(FPGA)、算术逻辑单元(ALU)或其它设备来处理一些线程的部分。如图2所指示的,将卸载请求间接地传送给辅助处理资源204。第一通路或分支使用调度器214,而第二分支或通路使用分发控制器212,来与辅助处理资源204通信。
异步的分发请求由主处理资源202生成并被传送给调度器214。调度器214包括协调器元件250,协调器元件250用于管理优先级和一个或多个另外的输入以确定何时向分发控制器212转发请求。将同步的分发请求传送给分发控制器212。无论是从调度器214间接地和异步地接收请求还是从主处理资源202直接地和同步地接收请求,分发控制器212生成分发分组,分发分组提供了用于在分发分组信息中所规定的辅助处理资源204执行卸载的线程所需要的所有信息。利用RAM 216内的共享虚拟存储器空间240来向辅助处理资源204提供线程的上下文,并且一旦线程完成,该共享虚拟存储器空间240可用于由主处理资源202进行的继续处理。
响应于主处理资源202所接收的一个或多个输入信号和/或一个或多个内部识别的条件(诸如在主处理资源202内执行的一个或多个应用程序或操作系统内生成的那些条件),生成任务卸载条件。当任务卸载条件被主处理资源202识别时,任务卸载条件指导主处理资源202挂起期望转移到辅助处理资源204的执行线程并且生成低延迟(例如,近似1ns或更少)信号/等待指示符。示例信令构造不需要包括数据并且可以包括一组指令,诸如sigresourcealloc_signal()、signal(sigresource);以及wait(sigresource)。示例信令构造被暴露给和/或扩展到PCD 100中的处理资源和用于支持处理资源的其它元件。
主处理资源202优选地在生成并传送用于将线程卸载到辅助处理资源204的请求之前挂起执行线程。该挂起阻止线程在主处理资源202上重新开始,直到任务完成信号被返回给主处理资源202为止。主处理资源202所发出的请求类似于功能调用并且包括标识要用于执行线程的卸载部分的辅助处理资源204的特定实例和类型的信息。
对卸载线程的分发是间接的,因为主处理资源202经由分发控制器212耦合到辅助处理资源204。虽然示出为单个元件,但是应当理解,分发控制器实例用于被从主处理资源202卸载或转移到辅助处理资源204的每个线程。例如,如果多内核CPU 210包括四个处理内核并且处理内核中的两个处理内核已单独地识别了任务卸载条件,则分发控制器212的至少两个实例将用于生成分发分组并向诸如DSP 220和GPU 225之类的单独识别的辅助处理资源转发各个分发分组。分发控制器212可以实现为硬件元件或以在主处理资源202或主机上执行的软件来实现。此外,分发控制器212可以利用以诸如加法器、寄存器以及其它设备之类的硬件元件实现的一些功能和由耦合到寄存器或其它存储元件的处理资源以软件实现的其它功能来实现。
分发分组提供无依赖性的控制。也就是说,提交至分发控制控制器212并由其转发的一切东西是准备好供执行的。分发控制器212生成分发分组,该分发分组不仅标识辅助处理资源204,而且向所标识的辅助处理资源提供单个工作条目空间(例如,NDRange),该空间可以是一维、二维或三维的。例如,如果期望向960x640图像中的每个像素应用滤波器,则线程将标识960x640个工作条目,每一工作条目向图像中的像素应用滤波器,即工作条目(x,y)向像素(x,y)应用滤波器。在完成时,辅助处理资源204向发出分发分组的分发控制器212提供任务/线程完成信号。转而,分发控制器212将同样的指示转发至主处理资源202。主处理资源202可以将同样的内容传送给在多内核CPU 210的剩余内核中的一个或多个内核上执行的O/S 211。如所布置的,分发控制器212保证分发请求被发给可用于执行线程的辅助处理资源204并由辅助处理资源204来服务该请求。此外,分发控制器212可以保持请求的集合与分发分组之间的关系,其进一步规定特定线程与PCD 100上的处理资源之间的一对一关系。
如图2中进一步所示出的,提供了全局协调器或调度器214以接收卸载请求并异步地生成至分发控制器212的分发命令。全局协调器或调度器214提供了用于对由主处理资源202卸载的任务进行调度的单元或机制。全局协调器或调度器适用于指导与在PCD 100上执行的应用相关联的任务的完成。全局协调器214或调度器被布置有协调器250的一个或多个实例或副本,其中协调器250响应于从主处理资源202接收的一个或多个请求来生成并发出分发命令。每个协调器250可以执行或包括微调度器,该微调度器被配置为向分发控制器212发起分发命令。
在可选的或替代的布置中,DSP 220被布置有实时操作系统(RTOS)221以响应于任务卸载条件来处理分发分组。RTOS 221以最小的缓存延迟对所接收的实时请求进行服务。调度器222为PCD 100内的嵌入式系统提供了可预测的执行模式。调度器222还提供了用于对由主处理资源202卸载的任务进行调度的替代单元或机制。RTOS 221在严格规定的时间或最后期限内进行响应。在该替代的布置中,DSP 220借助于分发控制器212的实例或副本向诸如GPU 225之类的其它处理资源发出用于卸载任务的请求。
如所描述的,用于处理线程的第一单元或机制包括主处理资源或主机202。用于处理线程的辅助或替代的单元或机制包括DSP 220、GPU 225、ALU(未示出)或其它电路或处理器中的一个或多个。用于同步地分发先前在主处理资源或主机202内执行的线程的单元或机制包括分发控制器212。用于处理线程的第一单元可以被布置为向分发控制器212直接传送卸载请求或通过调度器214间接传送卸载请求。对此,调度器214和在调度器214的指导下起作用的一个或多个协调器250提供了用于从用于处理线程的第一单元异步地接收请求的单元。调度器214也可以被认为是用于在计算机环境中调度任务的执行的全局协调器或单元或机制。如进一步所描述的,GPU 225提供了用于处理图形命令的单元或机制。
图3是示出了在图1的SoC 120中对任务或线程从主处理资源到辅助处理资源的分发进行管理的计算环境300的示例实施例的示意图。计算环境300包括主处理资源或主机202、替代处理环境324和共享虚拟存储器240。主处理资源202包括多个CPU、计算元件或内核。在所示出的实施例中,主处理资源202包括CPU(0)320、CPU(1)321、CPU(2)322和CPU(3)323。然而,应当理解,可以在PCD 100内的主机或主处理资源202中包括更少的计算元件、更多的计算元件或各种不同计算元件的混合。
处理环境324包括与主处理资源(即,CPU(0)320、CPU(1)321、CPU(2)322和CPU(3)323)具有一对一关系的一组分发控制器(即,DC(0)330、DC(1)331、DC(2)332和DC(3)333)。工作组调度器325从各个分发控制器接收一个或多个分发分组并且将其中所提供的信息转发至所标识的辅助处理资源204的执行单元。在所示出的实施例中,辅助处理资源204被配置有执行单元(0)340至执行单元(N)348,其中N是整数。注意,执行单元340-348可以是相似地布置的并且与单个DSP或GPU相关联,或者执行单元可以是不同类型的特定于DSP、数个DSP、GPU或数个GPU中的一个或两者和/或这些元件的组合的执行。整数N指示任何期望数量的执行单元可以包括在辅助或替代处理资源204中。
在所示出的实施例中,辅助处理资源204的执行单元340–348是DSP 220和GPU 225的子元件。然而,辅助处理资源204并不限于如此。执行单元可以是诸如专用集成电路(ASIC)或甚至跨SoC 120分布的独立的算术逻辑单元之类的其它器件之类的子元件。
如图3中进一步所示出的,通过计算环境300的总体处理流由具有封闭在圆圈内的序列标识符的箭头来指示。例如,CPU(2)322响应于所检测到的卸载条件来生成请求(由箭头1所描绘的),该请求被传送至分发控制器DC(2)332。作为响应,DC(2)332生成分发分组(由箭头2所描绘的),该分发分组被转发至工作组调度器325。转而,工作组调度器325将分发分组中所包括的信息转发至该分发分组中所标识的执行单元,如由箭头3所示出的。如在分发分组中还标识的,执行单元(0)340被指导为使用在共享虚拟存储器240的规定的范围245中所存储的信息。虚拟存储器240的该规定的范围245包括所卸载或分发的线程的上下文。在完成规定的工作(如在分发分组中还规定的)时,执行单元(0)340在共享虚拟存储器240的该规定的范围245中留下修改版本的信息以用于由主处理资源202进行的另外的处理。此外,执行单元(0)340向工作调度器325发送关于线程或任务已完成的指示,如由箭头4所指示的。工作组调度器325记录任务/线程完成并将相同的指示发送至分发控制器DC(2)322,如由箭头5所指示的。转而,如由箭头6所示出的,DC(2)322向CPU(2)322转发关于任务/线程已完成的指示。主或主机处理资源202等待来自分发控制器的任务完成信号,并且在接收到任务完成信号时,就恢复对所挂起的线程的执行。
图6是示出了用户模式调度的任务与图3中介绍的计算环境300的示例实施例的示意图。如图6的计算环境300’中所示出的,请求375(其用于将从CPU(2)322传送的线程卸载到DC(2)332)呈现为功能调用,其包括规定的应用二进制接口(ABI)和被传递至规定的分发控制器(即,DC(2)332)的自变量。在所示出的用户模式调度的任务中,请求375(其在图3中用箭头1描绘)被箭头1和箭头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中的信息来继续执行线程。
图4是示出了在图1的SoC 120中对任务或线程的分发进行管理的计算环境400的另一个示例实施例的示意图。计算环境400包括主处理资源或主机202、替代处理环境420和共享虚拟存储器240。主处理资源202包括多个CPU、计算元件或内核。在所示出的实施例中,主处理资源202包括CPU(0)320、CPU(1)321、CPU(2)322和CPU(3)323。然而,应当理解,可以在PCD 100内的主机或主处理资源202中包括更少的计算元件、更多的计算元件或各种不同计算元件的混合。
处理环境420包括一组分发控制器(即,DC(0)430、DC(1)431、DC(2)432、DC(3)433和DC(4)434)。因此,主处理资源202的CPU不再与分发控制器(即,DC(0)430、DC(1)431、DC(2)432和DC(4)433)具有一对一关系。工作组调度器325从各个分发控制器接收一个或多个分发分组并且将其中所提供的信息转发至所标识的辅助处理资源204的执行单元。在所示出的实施例中,辅助处理资源204被配置有执行单元(0)340至执行单元(N)348,其中N是整数。注意,执行单元340-348可以是相似地布置的并且与单个DSP或GPU相关联,或者执行单元可以是不同类型的特定于DSP、数个DSP、GPU或数个GPU中的一个或两者和/或这些元件的组合的执行。整数N指示任何期望数量的执行单元可以包括在辅助或替代处理资源204中。
在图4中所示出的计算环境400中,调度器410从主处理资源202异步地接收卸载请求。调度器410包括诸如协调器(0)412和协调器(M)418之类的协调器的多个实例或副本。协调器412-418(其可以用硬件和/或软件来实现)向分发控制器(即,DC(0)430、DC(1)431、DC(2)432和DC(4)433)的一个或多个实例或副本同步地卸载线程请求。因此,在该布置中,分发控制器与协调器具有一对一的关系。
如图4中进一步所示出的,通过计算环境300的总体处理流由具有封闭在圆圈内的序列标识符的箭头来指示。例如,CPU(1)321响应于所检测到的卸载条件来生成请求(由箭头1所描绘的),该请求被传送至调度器410。调度器410响应于PCD 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转发线程/任务完成的指示。
协调器412-418对于处理环境来说是全局的并且可以与如可能被期望的将任务或线程从主处理资源卸载到第二或替代处理资源的分发控制器430-434通信。协调器412-418可以由诸如调度器410之类的微调度器直接执行以及可以经由一个或多个特定于域的语言而暴露给开发者和编程者。协调器412-418在与所描述的CPU 320-323一起被部署时提供了用于在PCD 100内构建和管理两级或层的调度的能力。
图7是示出了用户模式调度的协调器实现的任务与图4中介绍的计算环境400的示意图。除了图4中所示出的元件之外,计算环境400’,更具体地说替代处理环境720包括RTOS349,其中RTOS 349经由连接405与调度器410通信。连接405是双向通信路径,其使得RTOS349和调度器410能够可控制地执行卸载的任务或线程。如图7中的计算环境400’所示出的,协调器请求475(其用于将从CPU(1)321传送的线程卸载到DC(4)434)呈现为功能调用,其包括规定的应用二进制接口(ABI)和被传递至规定的分发控制器(即,DC(4)434)的自变量。在所示出的用户模式调度的协调器实现的任务中,协调器请求475(其在图3中用箭头2描绘)被箭头2和箭头3替代。其后的处理序列与图4中所示出的相同,其中DC(4)434与工作组调度器325交互并且工作组调度器325还指导执行单元(N)348。类似地,除了来自DC(4)434的任务或线程完成指示由箭头9和箭头10描绘之外,以与图4中相同的方式来以信号形式发送任务或线程完成,其中箭头9和箭头10一起指示来自DC(4)434的任务完成信号终止协调器请求475中所表示的功能调用的“While逻辑部分”,该终止向CPU(1)321通知所卸载的任务/线程已完成。其后,CPU(1)321可以使用如由执行单元(M)348所修改的、共享虚拟存储器240的该规定的范围245中的信息来继续执行线程和/或以信号形式向O/S发送线程已完成。
图5是示出了在图1的SoC 120中对任务或线程的分发进行管理的计算环境500的第三示例实施例的示意图。在该布置中,处理环境520被配置有特定于图形处理单元的控制器534以代替DC(X)的实例。这种布置允许工作组调度器325利用非图形类型线程来独立地或同时地处理图形命令。此外,这种布置允许工作组调度器325使一种类型的线程(例如,图形线程)比其它线程优先级高。注意,虽然示出了一个特定于图形处理单元的控制器534,但是处理环境520不限于此并且可以包括任何期望数量的特定于图形处理单元的控制器。
如在其它示出的实施例中,特定于图形处理单元的控制器534的每个实例或副本可用于从主处理资源202接收用于卸载任务或线程的请求。由主处理资源202响应于一个或多个信号或条件来发出或以信号形式发送该请求。特定于图形处理单元的控制器534执行能够发起响应于该请求的分发命令的调度器(未示出)。
如图5中进一步所指示的,通过计算环境500的总体处理流由具有封闭在圆圈内的序列标识符的箭头来指示。例如,CPU(3)323响应于所检测到的卸载条件来生成请求(由箭头1所描绘的),该请求被传送至特定于图形处理单元的控制器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进行的图形命令处理的单元或机制。
图8是示出了使用寄存器集合来规定分发分组的示意图。分发分组规定了用于与辅助处理资源通信的应用二进制接口(ABI)800。如图8中所指示的,ABI 800是以特定方式布置的寄存器集合。例如,ABI可以包括具有期望数量的寄存器的集合。也就是说,ABI可以由用于存储辅助处理资源所使用的信息的整数数量个寄存器来规定。例如,寄存器801包括内核地址。寄存器802包括用于标识工作空间的维数的2个比特、多个保留比特以及工作空间的x维的大小。寄存器803包括标识工作空间的y维和z维的大小的比特。寄存器804标识用于x维和y维的工作组大小。寄存器805标识用于z维的工作大小以及工作组分段大小。寄存器806包括完成值地址,而寄存器807和寄存器808规定可以被传送至辅助处理资源的各个自变量。有可能的是,可以使用替代的寄存器来优化自变量传输并且可以实现各种编码技术和/或处理规则以阻止至分发控制器212的调用。
图9是用于SoC 120中的同步任务分发的方法900的示例实施例的流程图。如所示出的,方法900开始于框902,其中在框902中,便携式计算设备100被配置有主处理资源和辅助处理资源,主处理资源和辅助处理资源共享存储器空间240。在框904中,主处理资源202或布置在PCD 100上的其它检测器或传感器检测卸载条件。响应于卸载条件,挂起在主处理资源202中执行的线程,如在框906中所指示的。主处理资源202响应于卸载条件和/或确认对执行线程的挂起来生成请求,如在框908中所指示的。如在框910中进一步所示出的,将请求传送至分发控制器212。将请求传送至分发控制器212的步骤包括传送可被主处理资源202和辅助处理资源204访问的共享存储器空间(即,SVM 240)中的至少一个位置,其中与线程相关联的信息正存储于此。如所描述的,该请求标识适用于继续执行先前挂起的线程的辅助处理资源。如还描述的,利用共享存储器空间,以使得辅助或替代处理资源可以容易使用与所挂起的线程相关联的上下文信息,并且当要求或期望由主处理资源进行的进一步处理时,可以在完成之时简单地传递回到主处理资源。
当所卸载的线程或任务仍然在进行处理时,如标记的箭头所指示的,“否”退出判决框912,并且在完成等待命令时,退出框914,重复查询。否则,如在框916中所指示的,使用分发控制器212以指示主处理资源:任务或线程完成。其后,如在框918中所指示的,主处理资源202恢复线程,并且如所期望的重复框904至918的功能。
如所示出和描述的,主处理资源或主机202提供了用于处理线程的机制。线程是可以由O/S或控制器独立地管理的最小的指令序列。如进一步所描述的,一个或多个分发控制器212或一个或多个特定于图形处理的控制器334提供了用于同步地卸载或分发标识的线程(如在从主处理资源202发出或传送的请求中所指示的)的机制。如还示出和描述的,诸如DSP、GPU、FPGA、ALU等之类的辅助或替代处理资源提供了用于执行如分发分组所指导的卸载线程的机制。
如所描述的,一个或多个非暂时性处理器或计算机可读介质或媒体可以具有存储在其上的处理器指令,所述处理器指令在被执行时指导处理器执行以下操作的期望功能:检测任务卸载条件;挂起在主处理资源中执行的线程的执行;响应于任务卸载条件来生成请求;向分发控制器传送该请求,该请求标识用于线程的执行的、与主处理资源不同的辅助处理资源。向分发控制器传送该请求的功能可以包括:规定应用二进制接口,该应用二进制接口指导辅助处理资源在何处定位当前存储在共享存储器空间中的、与线程相关的条目。
在本说明书中描述的过程或过程流中的某些步骤自然地先于其它步骤,以使本发明如所描述的运作。但是,本发明的系统和方法不限于所描述的步骤的次序,如果这样的次序或顺序不改变上述系统和方法的功能的话。也就是说,认识到的是,一些步骤可以在其它步骤之前、之后或与其它步骤并行地(基本上同时地)执行。在一些实例中,可以在不脱离上述系统和方法的情况下省略或不执行某些步骤。此外,诸如“其后”、“然后”、“接下来”、“随后”等之类的词语不旨在限制步骤的次序。这些词语仅用于引导读者完成示例性方法的描述。
另外,编程领域的普通技术人员能够基于例如在本说明书中的流程图和相关联的示例,在没有困难的情况下编写计算机代码或识别适当的硬件和/或电路以实现所公开的元件或功能。因此,对程序代码指令的特定集合或详细的硬件设备的公开不被认为是获得对如何实现以及使用本发明的系统和方法的足够的理解所必须的。在上文描述中并且结合附图更加详细地解释了所要求保护的处理器实现的过程的功能,所述附图可以说明各个过程流。
在如上文所指示的一个或多个示例性的方面中,所描述的功能可以用硬件、软件、固件或其任意组合来实现。如果用软件来实现,则所述功能可以作为一个或多个指令或代码存储在计算机可读介质(例如,非暂时性处理器可读介质)上。计算机可读介质包括数据存储介质。
存储介质可以是可由计算机或处理器存取的任何可用介质。通过举例而非限制性的方式,这种计算机可读介质可以包括RAM、ROM、EEPROM、闪存、CD-ROM或其它光盘存储、磁盘存储或其它磁存储设备,或者可用于携带或存储具有指令或数据结构形式的期望的程序代码并且可以由计算机存取的任何其它介质。如本文所使用的,磁盘和光盘包括压缩光盘(“CD”)、激光光盘、光盘、数字多功能光盘(“DVD”)、软盘和蓝光光盘,其中磁盘通常磁性地复制数据,而光盘则利用激光来光学地复制数据。上述的组合也应当被包括在非暂时性计算机可读介质的范围内。
因此,虽然详细地说明和描述了所选择的方面,但是将理解的是,如下面的权利要求书所限定的,可以在不脱离本发明的系统和方法的情况下在本文中做出各种替代和改变。

Claims (27)

1.一种计算设备,包括:
位于片上系统中的主处理资源;
位于所述片上系统中的分发控制器,所述分发控制器与所述主处理资源进行通信;
位于所述片上系统中的、与所述分发控制器进行通信的多个辅助处理资源,所述多个辅助处理资源被配置为经由所述分发控制器来与所述主处理资源间接地通信,所述分发控制器被配置为同步地管理来自所述主处理资源针对所述多个辅助处理资源中的第一辅助处理资源执行线程的请求,来自所述主处理资源的所述请求识别所述第一辅助处理资源;
共享存储器空间,其电耦合至所述主处理资源和所述多个辅助处理资源并能够被所述主处理资源和所述多个辅助处理资源访问,其中,所述主处理资源和所述多个辅助处理资源被配置为生成信号去往信号/等待接口并对来自所述信号/等待接口的信号进行响应;以及
全局协调器,其耦合到所述主处理资源并且被配置为接收所述请求和响应于任务卸载条件来异步地生成规定所述第一辅助处理资源的具体执行单元的分发命令给所述分发控制器。
2.根据权利要求1所述的计算设备,其中,来自所述主处理资源的所述请求包括:关于要用于执行所述线程的辅助处理资源的类型的信息。
3.根据权利要求2所述的计算设备,其中,所述主处理资源在生成所述请求之前挂起所述主处理资源上的所述线程的执行。
4.根据权利要求3所述的计算设备,其中,所述主处理资源等待来自所述分发控制器的任务完成信号,并且在接收到所述任务完成信号时,所述主处理资源恢复所述线程的执行。
5.根据权利要求4所述的计算设备,其中,所述请求指导所述分发控制器提供使得所述第一辅助处理资源能够执行所述线程的信息。
6.根据权利要求4所述的计算设备,其中,来自所述分发控制器的所述任务完成信号被传送到操作系统。
7.根据权利要求1所述的计算设备,其中,所述全局协调器执行能够响应于所述请求来发起所述分发命令的微调度器。
8.根据权利要求1所述的计算设备,还包括:
特定于图形处理单元的控制器,其耦合到所述主处理资源,并且被配置为异步地接收响应于任务卸载条件的请求。
9.根据权利要求8所述的计算设备,其中,所述特定于图形处理单元的控制器执行能够响应于所述请求来发起分发命令的调度器。
10.根据权利要求1所述的计算设备,还包括:
数字信号处理器,其配置有实时操作系统,以异步地接收响应于任务卸载条件的请求。
11.根据权利要求1所述的计算设备,其中,所述分发控制器是硬件元件。
12.根据权利要求1所述的计算设备,其中,所述分发控制器是用软件来实现的。
13.根据权利要求1所述的计算设备,其中,所述分发控制器的一个或多个功能的第一集合是用硬件元件来实现的,并且所述分发控制器的剩余功能是用软件来实现的。
14.一种用于便携式计算设备中的同步任务分发的方法,包括:
向所述便携式计算设备提供主处理资源、与所述主处理资源进行通信的分发控制器、与所述分发控制器进行通信的多个辅助处理资源、以及共享存储器空间,其中所述共享存储器空间是所述主处理资源和所述多个辅助处理资源通过总线可访问的,所述主处理资源和所述多个辅助处理资源被配置在片上系统中并被配置为生成信号去往信号/等待接口并对来自所述信号/等待接口的信号进行响应;
检测任务卸载条件;
挂起在所述主处理资源中执行的线程的执行;
响应于所述任务卸载条件,生成来自所述主处理资源的请求,所述请求标识所述多个辅助处理资源中的用于所述线程的执行的第一辅助处理资源;
向所述分发控制器传送所述请求,所述分发控制器被配置为同步地管理来自所述主处理资源针对所述第一辅助处理资源的所述请求,其中向所述分发控制器传送所述请求包括:传送所述主处理资源和所述第一辅助处理资源可访问的所述共享存储器空间中的至少一个位置,其中与所述线程相关联的信息目前存储在所述至少一个位置。
15.根据权利要求14所述的方法,其中,所述信号/等待接口包括指令。
16.根据权利要求14所述的方法,其中,所述主处理资源等待来自所述分发控制器的任务完成信号,并且在接收到所述任务完成信号时,所述主处理资源恢复所述线程的执行。
17.根据权利要求14所述的方法,其中,在以信号形式向操作系统发送所述线程完成了之前,所述主处理资源等待来自所述分发控制器的任务完成信号。
18.根据权利要求14所述的方法,其中,向所述分发控制器传送所述请求包括:使用特定于图形处理单元的控制器,所述特定于图形处理单元的控制器耦合到所述主处理资源并且被配置为异步地接收响应于任务卸载条件的所述请求。
19.根据权利要求18所述的方法,其中,所述特定于图形处理单元的控制器执行能够发起针对于所述辅助处理资源的分发命令的调度器。
20.根据权利要求14所述的方法,其中,向所述分发控制器传送所述请求包括:使用被配置有实时操作系统的数字信号处理器来异步地接收响应于所述任务卸载条件的、来自所述主处理资源的所述请求。
21.一种计算设备,包括:
用于处理线程的第一单元,所述第一单元包括用于检测任务卸载条件的机制以及用于生成对所述线程的处理进行卸载的请求的机制;
用于响应于所述任务卸载条件和用于卸载的所述请求来同步地分发所述线程的单元;
用于与所述用于同步地分发的单元进行通信并响应于所述用于同步地分发所述线程的单元来处理所述线程的多个第二单元,其中,来自用于处理的所述第一单元的用于卸载的所述请求识别所述多个第二单元中的、用于处理的第一个第二单元;以及
共享存储器空间,其是所述第一单元和所述第一个第二单元通过总线可访问的,所述第一单元和所述多个第二单元实现在片上系统中并能够生成信号去往信号/等待接口并对来自所述信号/等待接口的信号进行响应,其中用于生成所述请求的所述机制包括:传送所述用于处理的第一单元和用于处理的所述第一个第二单元可访问的所述共享存储器空间中的至少一个位置,其中与所述线程相关联的信息目前存储在所述至少一个位置。
22.根据权利要求21所述的计算设备,其中,来自用于处理所述线程的所述第一单元的用于卸载的所述请求包括关于要用于执行所述线程的用于处理的所述第二单元的类型的信息。
23.根据权利要求22所述的计算设备,其中,用于处理所述线程的所述第一单元在向用于同步地分发所述线程的所述单元传送请求之前挂起所述线程的执行。
24.根据权利要求22所述的计算设备,其中,用于处理所述线程的所述第一单元在恢复所述线程的执行之前等待来自用于同步地分发所述线程的所述单元的任务完成信号。
25.根据权利要求24所述的计算设备,其中,用于处理所述线程的所述第一单元向操作系统转发关于收到所述任务完成信号的指示。
26.一种非暂时性处理器可读介质,其具有存储在其上的处理器指令,所述处理器指令在被执行时指导所述处理器执行包括以下各项的功能:
检测任务卸载条件;
挂起在主处理资源中执行的线程的执行;
响应于所述任务卸载条件来生成请求,所述请求识别多个辅助处理资源中的用于执行所述线程的第一辅助处理资源;
向与所述多个辅助处理资源进行通信的分发控制器传送所述请求,所述分发控制器被配置为同步地管理来自所述主处理资源针对所述多个辅助处理资源的请求,所述主处理资源和所述多个辅助处理资源被配置在片上系统中并被配置为生成信号去往信号/等待接口并对来自所述信号/等待接口的信号进行响应;以及
使用所述主处理资源和所述多个辅助处理资源通过总线可访问的共享存储器空间来传输所述线程的上下文,其中,向所述分发控制器传送所述请求包括:规定应用二进制接口,所述应用二进制接口指导所述第一辅助处理资源在何处定位共享存储器空间中的与线程相关的条目。
27.根据权利要求26所述的非暂时性处理器可读介质,其中,所述应用二进制接口包括具有N个寄存器的集合,其中N是整数。
CN201580005016.4A 2014-01-21 2015-01-21 用于便携式设备中的同步任务分发的系统和方法 Expired - Fee Related CN105917311B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/160,385 2014-01-21
US14/160,385 US9588804B2 (en) 2014-01-21 2014-01-21 System and method for synchronous task dispatch in a portable device
PCT/US2015/012283 WO2015112625A1 (en) 2014-01-21 2015-01-21 System and method for synchronous task dispatch in a portable device

Publications (2)

Publication Number Publication Date
CN105917311A CN105917311A (zh) 2016-08-31
CN105917311B true CN105917311B (zh) 2019-03-12

Family

ID=52469310

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201580005016.4A Expired - Fee Related CN105917311B (zh) 2014-01-21 2015-01-21 用于便携式设备中的同步任务分发的系统和方法

Country Status (6)

Country Link
US (1) US9588804B2 (zh)
EP (1) EP3097488A1 (zh)
JP (1) JP6240336B2 (zh)
KR (1) KR101798369B1 (zh)
CN (1) CN105917311B (zh)
WO (1) WO2015112625A1 (zh)

Families Citing this family (46)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8977255B2 (en) 2007-04-03 2015-03-10 Apple Inc. Method and system for operating a multi-function portable electronic device using voice-activation
US8676904B2 (en) 2008-10-02 2014-03-18 Apple Inc. Electronic devices with voice command and contextual data processing capabilities
US10417037B2 (en) 2012-05-15 2019-09-17 Apple Inc. Systems and methods for integrating third party services with a digital assistant
KR20150104615A (ko) 2013-02-07 2015-09-15 애플 인크. 디지털 어시스턴트를 위한 음성 트리거
US9715875B2 (en) 2014-05-30 2017-07-25 Apple Inc. Reducing the need for manual start/end-pointing and trigger phrases
US10170123B2 (en) 2014-05-30 2019-01-01 Apple Inc. Intelligent assistant for home automation
US9338493B2 (en) 2014-06-30 2016-05-10 Apple Inc. Intelligent automated assistant for TV user interactions
US9886953B2 (en) 2015-03-08 2018-02-06 Apple Inc. Virtual assistant activation
US10460227B2 (en) 2015-05-15 2019-10-29 Apple Inc. Virtual assistant in a communication session
US9830676B2 (en) * 2015-07-28 2017-11-28 Intel Corporation Packet processing on graphics processing units using continuous threads
US10747498B2 (en) 2015-09-08 2020-08-18 Apple Inc. Zero latency digital assistant
US10691473B2 (en) 2015-11-06 2020-06-23 Apple Inc. Intelligent automated assistant in a messaging environment
GB2545435B (en) * 2015-12-15 2019-10-30 Advanced Risc Mach Ltd Data processing systems
US10838721B1 (en) * 2016-03-31 2020-11-17 EMC IP Holding Company LLC Adaptive thread processing of IO requests
US10055255B2 (en) 2016-04-14 2018-08-21 International Business Machines Corporation Performance optimization of hardware accelerators
US10368283B2 (en) * 2016-04-29 2019-07-30 International Business Machines Corporation Convergence of cloud and mobile environments
DK201670540A1 (en) 2016-06-11 2018-01-08 Apple Inc Application integration with a digital assistant
US10255105B2 (en) * 2017-04-11 2019-04-09 Imagination Technologies Limited Parallel computing architecture for use with a non-greedy scheduling algorithm
DK180048B1 (en) 2017-05-11 2020-02-04 Apple Inc. MAINTAINING THE DATA PROTECTION OF PERSONAL INFORMATION
DK179496B1 (en) 2017-05-12 2019-01-15 Apple Inc. USER-SPECIFIC Acoustic Models
DK179745B1 (en) 2017-05-12 2019-05-01 Apple Inc. SYNCHRONIZATION AND TASK DELEGATION OF A DIGITAL ASSISTANT
DK201770429A1 (en) 2017-05-12 2018-12-14 Apple Inc. LOW-LATENCY INTELLIGENT AUTOMATED ASSISTANT
AU2018256560A1 (en) * 2017-05-12 2018-11-29 Apple Inc. Synchronization and task delegation of a digital assistant
DK201770411A1 (en) 2017-05-15 2018-12-20 Apple Inc. MULTI-MODAL INTERFACES
WO2019044340A1 (ja) * 2017-08-30 2019-03-07 富士フイルム株式会社 画像処理装置、画像処理方法、及び画像処理プログラム
GB2566514B (en) * 2017-09-15 2020-01-08 Imagination Tech Ltd Resource allocation
US10928918B2 (en) 2018-05-07 2021-02-23 Apple Inc. Raise to speak
US11145294B2 (en) 2018-05-07 2021-10-12 Apple Inc. Intelligent automated assistant for delivering content from user experiences
DK180639B1 (en) 2018-06-01 2021-11-04 Apple Inc DISABILITY OF ATTENTION-ATTENTIVE VIRTUAL ASSISTANT
US11157437B2 (en) * 2018-09-26 2021-10-26 Micron Technology, Inc. Memory pooling between selected memory resources via a base station
US11462215B2 (en) 2018-09-28 2022-10-04 Apple Inc. Multi-modal inputs for voice commands
CN111026520B (zh) * 2018-10-10 2022-12-02 上海寒武纪信息科技有限公司 任务处理方法、处理器的控制装置及处理器
CN111026516B (zh) * 2018-10-10 2022-12-02 上海寒武纪信息科技有限公司 异常处理方法、任务分派装置、任务处理系统及存储介质
US11348573B2 (en) 2019-03-18 2022-05-31 Apple Inc. Multimodality in digital assistant systems
DK201970509A1 (en) 2019-05-06 2021-01-15 Apple Inc Spoken notifications
US11307752B2 (en) 2019-05-06 2022-04-19 Apple Inc. User configurable task triggers
US11140099B2 (en) 2019-05-21 2021-10-05 Apple Inc. Providing message response suggestions
US11227599B2 (en) 2019-06-01 2022-01-18 Apple Inc. Methods and user interfaces for voice-based control of electronic devices
US11438452B1 (en) 2019-08-09 2022-09-06 Apple Inc. Propagating context information in a privacy preserving manner
US11875168B2 (en) * 2020-03-19 2024-01-16 Oracle International Corporation Optimizing execution of foreign method handles on a virtual machine
US11513779B2 (en) 2020-03-19 2022-11-29 Oracle International Corporation Modeling foreign functions using executable references
US11061543B1 (en) 2020-05-11 2021-07-13 Apple Inc. Providing relevant data items based on context
US11490204B2 (en) 2020-07-20 2022-11-01 Apple Inc. Multi-device audio adjustment coordination
US11438683B2 (en) 2020-07-21 2022-09-06 Apple Inc. User identification using headphones
CN113190349B (zh) * 2021-04-29 2023-09-01 汕头大学 主机任务异步执行的方法、系统及计算机存储介质
CN113179327B (zh) * 2021-05-14 2023-06-02 中兴通讯股份有限公司 基于大容量内存的高并发协议栈卸载方法、设备、介质

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102576314A (zh) * 2009-07-27 2012-07-11 先进微装置公司 具有横跨多个处理器的数据并行线程之映射处理逻辑

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030110204A1 (en) * 2000-02-17 2003-06-12 Brenner Larry Bert Apparatus and method for dispatching fixed priority threads using a global run queue in a multiple run queue system
US20020178313A1 (en) * 2001-03-30 2002-11-28 Gary Scott Paul Using software interrupts to manage communication between data processors
US6868437B1 (en) 2001-05-18 2005-03-15 Agilent Technologies, Inc. System and method for interprocess communication of remote procedure call messages utilizing shared memory
US7650601B2 (en) * 2003-12-04 2010-01-19 International Business Machines Corporation Operating system kernel-assisted, self-balanced, access-protected library framework in a run-to-completion multi-processor environment
US20070033592A1 (en) * 2005-08-04 2007-02-08 International Business Machines Corporation Method, apparatus, and computer program product for adaptive process dispatch in a computer system having a plurality of processors
US9015501B2 (en) * 2006-07-13 2015-04-21 International Business Machines Corporation Structure for asymmetrical performance multi-processors
US8127113B1 (en) * 2006-12-01 2012-02-28 Synopsys, Inc. Generating hardware accelerators and processor offloads
US20090089792A1 (en) * 2007-09-27 2009-04-02 Sun Microsystems, Inc. Method and system for managing thermal asymmetries in a multi-core processor
US7930574B2 (en) * 2007-12-31 2011-04-19 Intel Corporation Thread migration to improve power efficiency in a parallel processing environment
KR101400286B1 (ko) * 2008-01-22 2014-05-26 삼성전자주식회사 다중 프로세서 시스템에서 작업을 이동시키는 방법 및 장치
US8390631B2 (en) * 2008-06-11 2013-03-05 Microsoft Corporation Synchronizing queued data access between multiple GPU rendering contexts
JP5191980B2 (ja) * 2009-11-19 2013-05-08 公益財団法人鉄道総合技術研究所 鉄道車両運転衝撃事故時の乗客被害低減用袖仕切り装置
US20120110303A1 (en) 2010-10-28 2012-05-03 International Business Machines Corporation Method for Process Synchronization of Embedded Applications in Multi-Core Systems
US20120198458A1 (en) * 2010-12-16 2012-08-02 Advanced Micro Devices, Inc. Methods and Systems for Synchronous Operation of a Processing Device
US8566831B2 (en) * 2011-01-26 2013-10-22 International Business Machines Corporation Execution of work units in a heterogeneous computing environment
US8533720B2 (en) * 2011-02-25 2013-09-10 International Business Machines Corporation Offloading work from one type to another type of processor based on the count of each type of service call instructions in the work unit
US20120331278A1 (en) 2011-06-23 2012-12-27 Mauricio Breternitz Branch removal by data shuffling
US9235769B2 (en) 2012-03-15 2016-01-12 Herta Security, S.L. Parallel object detection method for heterogeneous multithreaded microarchitectures
US9116809B2 (en) 2012-03-29 2015-08-25 Ati Technologies Ulc Memory heaps in a memory model for a unified computing system
US10255104B2 (en) * 2012-03-29 2019-04-09 Advanced Micro Devices, Inc. System call queue between visible and invisible computing devices
US8984511B2 (en) * 2012-03-29 2015-03-17 Advanced Micro Devices, Inc. Visibility ordering in a memory model for a unified computing system
US9286116B2 (en) * 2012-07-06 2016-03-15 Microsoft Technology Licensing, Llc Multiple core real-time task execution
US9104464B2 (en) * 2012-11-06 2015-08-11 International Business Machines Corporation Main processor support of tasks performed in memory
US9588808B2 (en) * 2013-05-31 2017-03-07 Nxp Usa, Inc. Multi-core system performing packet processing with context switching

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102576314A (zh) * 2009-07-27 2012-07-11 先进微装置公司 具有横跨多个处理器的数据并行线程之映射处理逻辑

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
"A real-world approach to benchmarking DSP real-time operating systems";L. keate;《WESCON/97 Conference Proceedings》;20020806;第418-424页

Also Published As

Publication number Publication date
EP3097488A1 (en) 2016-11-30
KR20160110406A (ko) 2016-09-21
KR101798369B1 (ko) 2017-11-16
US20150205632A1 (en) 2015-07-23
JP6240336B2 (ja) 2017-11-29
WO2015112625A1 (en) 2015-07-30
CN105917311A (zh) 2016-08-31
US9588804B2 (en) 2017-03-07
JP2017506777A (ja) 2017-03-09

Similar Documents

Publication Publication Date Title
CN105917311B (zh) 用于便携式设备中的同步任务分发的系统和方法
US9396028B2 (en) Scheduling workloads and making provision decisions of computer resources in a computing environment
CN105190555B (zh) 集中式任务调度
US10282233B2 (en) Modular electronic devices with prediction of future tasks and capabilities
CN110162393B (zh) 任务调度方法、装置及存储介质
CN105793819A (zh) 包括混合处理器核的片上系统(soc)
CN101505336A (zh) 具有手持及扩展计算单元的计算设备
CN104303149A (zh) 用于调度便携式计算设备中的请求的方法和系统
US10037225B2 (en) Method and system for scheduling computing
CN110875833A (zh) 集群混合云、作业处理方法、装置及电子设备
CN109656691A (zh) 计算资源的处理方法、装置以及电子设备
US9372716B1 (en) Download prioritization
CN112463535A (zh) 多集群异常处理方法及装置
CN110995842A (zh) 业务数据下载方法、装置、设备及存储介质
Lee A framework for seamless execution of mobile applications in the cloud
CN110362405A (zh) 应用程序的线程分配方法、装置、设备及可读存储介质
CN110347486A (zh) 应用程序的线程分配方法、装置、设备及可读存储介质
Ho et al. Mobile intercloud system and objects transfer mechanism
JP2011028333A (ja) 回路情報生成装置、機能実行システム、及びプログラム
CN113905083A (zh) 用户代码运行方法及装置、电子设备和存储介质
CN111158885B (zh) 作业调度系统中并发度控制方法及装置
CN116909626B (zh) 数据处理方法、处理器及计算机设备
US10117178B2 (en) Simultaneous power control among multiple devices per context
US20080172450A1 (en) Mobile service apparatus
CN109657179A (zh) 一种业务处理方法、系统及存储介质

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
DD01 Delivery of document by public notice

Addressee: Guangzhou Huajin Joint Patent & Trademark Agency Co., Ltd. Beijing patent agent branch company

Document name: Notification of Approving Refund

GR01 Patent grant
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: 20190312

Termination date: 20210121