CN104969183A - 软件模块的并行操作 - Google Patents

软件模块的并行操作 Download PDF

Info

Publication number
CN104969183A
CN104969183A CN201380072529.8A CN201380072529A CN104969183A CN 104969183 A CN104969183 A CN 104969183A CN 201380072529 A CN201380072529 A CN 201380072529A CN 104969183 A CN104969183 A CN 104969183A
Authority
CN
China
Prior art keywords
software module
processing threads
module
computing equipment
regarded
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
Application number
CN201380072529.8A
Other languages
English (en)
Other versions
CN104969183B (zh
Inventor
尤子健
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.)
Intel Corp
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
Publication of CN104969183A publication Critical patent/CN104969183A/zh
Application granted granted Critical
Publication of CN104969183B publication Critical patent/CN104969183B/zh
Active 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/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • 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/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • 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/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Computer Security & Cryptography (AREA)
  • Debugging And Monitoring (AREA)
  • Stored Programmes (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

此处描述了用于加速一任务的计算机实现的方法、系统、计算设备和计算机可读介质(暂态和非暂态)的各实施例,其中该任务包括多个并行处理线程间的多个软件模块的操作。在各个实施例中,软件模块的操作可以包括延迟各处理线程的第一处理线程中的多个软件模块的第一软件模块的操作,直到确定第一软件模块未被视为在操作中。在各个实施例中,第一软件模块可以在其本身在操作中时或者在等待由第一软件模块调用的任何其他软件模块的操作完成时被视为在操作中。

Description

软件模块的并行操作
领域
本发明的各实施例一般涉及数据处理技术领域,尤其涉及软件模块的并行操作。
背景
此处提供的背景描述用于一般呈现本公开的上下文。在此背景部分描述的程度范围内,目前署名的发明人的工作以及该说明书在提交日不以其他方式成为现有技术的各方面既未被明确表示为针对本公开的现有技术,也未被隐含地承认为针对本公开的现有技术。除非以其他方式在此指明,该部分中描述的方法并不是对于本公开的权利要求的现有技术,并且不因被包括在此部分中而被承认为是现有技术。
并行计算的正确使用极大地提高计算效率,从而提供较佳的用户体验。例如,随着诸如智能电话和计算平板等移动计算设备的使用日益增加,启动时间对于用户体验而言变得更为重要。在系统启动时,多个启动模块(例如,软件可执行图像)可用于初始化计算设备的多个设备和/或各接口。许多移动计算设备具有多个处理器,因此能够对软件进行并行执行。然而,启动模块一般被设计用于串行操作。
附图简述
通过结合附图的以下详细描述,各实施例将容易理解。为便于此描述,相同的附图标记指示相同的结构元件。各实施例通过示例而非限制图示于附图的各图中。
图1示意性地图示按照各个实施例、可以在计算设备中用于多个软件模块(在该示例中,各启动模块)的并行操作的各组件。
图2示意性地图示按照各个实施例、调用单个启动模块的多个启动模块的示例。
图3示意性地描述了按照各个实施例、可以在并行启动过程期间发生于计算设备的两个处理线程上的操作的示例。
图4示意性地描述了按照各个实施例、可由与处理线程相关联的调度器实现的示例方法。
图5示意性地描述了按照各个实施例、可由异常处理程序实现的示例方法。
图6示意性地描述了按照各个实施例、可于其上实现所公开的方法和计算机可读介质的示例计算设备。
详细描述
在以下详细描述中,参照形成详细描述一部分的附图,其中各图中相同的附图标记指示相同的部件,附图中通过图示示出可实现的各实施例。应当理解,可以使用其他实施例,并且可以作出结构上或逻辑上的改变,而不背离本公开的范围。尽管以下详细描述使用各启动模块的并行操作用于各计算机启动过程作为示例,但是所公开的技术可用于实现除启动过程以外的任务的并行执行。因此,以下详细描述并非是限制性意义的,各实施例的范围由所附权利要求及其等价物所限定。
各操作可以以最有助于理解所要求保护的主题的方式又被描述为多个不连续的动作或操作。然而,描述次序不应被视为意指这些操作必须取决于次序。特别是,这些操作可能不以所呈现的次序执行。所述操作可以与和所述实施例不同的次序执行。在附加实施例中,各附加操作可被执行以及/或者所述操作可被省略。
出于本公开的目的,短语“A和/或B”意指(A)、(B)或(A和B)。出于本公开的目的,短语“A、B和/或C”意指(A)、(B)、(C)、(A和B)、(A和C)、(B和C)或(A、B和C)。
该描述可以使用短语“在实施例中”或“在各实施例中”,这些短语的每一个可以指相同或不同实施例中的一个或多个。而且,关于本公开的各实施例使用的术语“包括”、“包含”、“具有”等等是同义词。
如此处使用的,术语“模块”或“软件模块”可以指形成软件可执行图像的多个可执行指令以及/或者可由一个或多个处理器执行的计算机程序。如此处使用的,术语“启动模块”可以指在计算设备的启动过程期间例如由基本输入/输出系统(“BIOS”)执行的软件模块。各启动模块可以服务于各种目的,包括但不限于输入/输出设备、计算机设备接口(例如,至输入/输出设备)等等的初始化。
在各个实施例中,诸如启动模块之类的模块可以包括入口点函数,该入口点函数可以包括在加载模块以执行各种初始化任务时执行的指令。例如,入口点函数可以初始化一个或多个模块间“服务功能”。模块间“服务功能”可由另一模块调用,例如,由另一模块自身的入口点函数或服务功能调用,并且可以包括做任何工作的指令。
模块可以通过模块间功能调用彼此交互。在各个实施例中,可写共享数据可能不由各模块直接访问,而是替代地通过对数据拥有模块所提供的服务功能的调用来访问。在各个实施例中,模块所提供的服务功能可能没有调用顺序要求。这可以确保此处描述的并行执行方案中的数据完整性。
参照图1,配置有本公开案的可应用方面的计算设备100可以包括在操作上与存储器104耦合的多个处理器102a-n。在各个实施例中,每个处理器102a、102b...102m(以下简称102)可以提供处理线程。在各个实施例中,存储器104可以是动态随机存取存储器(“DRAM”),但是它也可以是其他类型的存储器。在各实施例中,BIOS启动程序106可以包括多个启动模块112a-m。一般而言,各启动模块112a-m可能不被设计用于并行操作。然而,如以下将更详细描述的,通过本公开的特征,各启动模块112a-m可以在多个并行处理线程中排序和执行以加速启动过程。
在各个实施例中,在多个启动模块112a-m之间可能有内在依存关系,有时由“依存表达式”描述。例如,依存表达式“接口A和接口B均可用”可以仅在接口A和B两者(在一些情况下可以是各种其他启动模块的服务功能)通过恰当启动模块112的操作初始化之后被满足。
在各个实施例中,调度器108a-n的多个实例可例如由BIOS启动程序106初始化。在各个实施例中,每个调度器108a、108b、...108n(下文简称108)可以是计算机代码的单个副本的实例(见图6),计算机代码可由多个处理器102a-n的一个或多个执行。在各个实施例中,全局变量可以在调度器108a-n的各实例间共享,而局部(例如,堆栈)变量可以在各实例间不同。在各个实施例中,每个调度器108可以被配置成管理由处理器102所提供的相应处理线程上的启动模块112a-m的操作。
在各个实施例中,多个不同页表110a-n可例如由调度器108a-n初始化,用于与每个处理器102相关联。如以下进一步详述,在各个实施例中,页表110a-n可助益例如通过页错误来捕捉模块间功能调用。页错误又可以使控制被传递至多个异常处理程序120a-n,如以下将描述。
如前所述,多个启动模块112a-m可以在计算设备100的启动过程期间被操作。启动模块112a-m的操作(例如通过多个处理器102a-n)可以初始化计算设备100的各个设备、接口(例如,可由其他启动模块调用的服务功能)或其他组件,以使它们可以在计算设备100的常规操作期间被使用。
在各个实施例中,每个启动模块112a、112b...112m(以下简称112)可以与相应的标志114a、114、...114m(以下简称114)相关联。标志114a-m可以被存储在对于多个处理器102a-m可访问的存储器(例如,在RAM或寄存器中)的一部分中。每个标志114可以被配置成存储相关联的启动模块112是否被例如多个处理器102a-n中的任一个视为在操作中或以其他方式“忙碌”的指示。
在多个不同情况下,启动模块112可例如由调度器108的实例和/或多个异常处理程序120a-n的实例通过将相应的标志114改变为在操作中或“忙碌”来指定。例如,无论启动模块的服务功能是否已被建立,在特定启动模块112的入口点函数尚未完成时,该特定启动模块112可以被视为在操作中。作为另一示例,在特定启动模块112的服务功能之一的执行尚未完成时,例如由于被另一启动模块调用而尚未完成,该特定启动模块112可以被视为忙碌。
在各个实施例中,为使特定启动模块112被视为在操作中或忙碌,该特定启动模块112的入口点函数和/或服务功能不需要活动地执行。例如,启动模块112的入口点函数和/或服务功能可以被调用并且等待从另一启动模块的服务功能返回。在这种情况下,启动模块112仍可以被视为在操作中或忙碌。
在各个实施例中,启动模块112可以例如由调度器108或异常处理程序112的实例改变相应的标志114而被指示为“不在操作中”或“就绪”,其中启动模块112的入口点函数已完成,且启动模块112的服务功能没有一个在活动地执行或等待从下游服务功能返回(例如,启动模块112准备好接受功能调用)。
以此方式,标志114a-m可例如被调度器108a-n和/或异常处理程序120a-n的实例用作信号以确保一次仅有一个处理器102能原子地操作特定启动模块。在各个实施例中,每个标志114可以是为每个启动模块112生成的较大数据结构(未示出)的一部分,例如以保留与启动模块112的操作相关的其他信息。
在各个实施例中,多个处理器102a-n可能能够在多个并行处理线程中操作多个启动模块112a-m。除了别的之外,这可以加速计算设备100的起动时间(也称为启动时间)。然而,如前提及,不是所有启动模块都可以被设计成并行操作。例如,多个启动模块112a-m可由各种不同的原始设备制造商(“OEM”)为各种不同的硅组件(例如,输入/输出组件)而创建。由于各种OEM的相异且可能竞争的性质,设计启动模块112a-m以成功地并行操作可能是不实际的,更不用说计算设备100中可包括且由多个启动模块112a-m的操作初始化的硅组件的实际上受限制的可能组合。
因此,在各个实施例中,可以配置计算设备100的各种组件,诸如调度器108a-n的一个或多个实例以及/或者异常处理程序120a-n的一个或多个实例,以便例如使用页表110a-n和/或标志114a-m在启动过程期间在多个并行处理线程之间对多个启动模块112a-m的操作进行排序。特别是,在处理线程的第一个处理线程中的多个启动模块112a-m中的第一个启动模块的操作可例如由调度器108或异常处理程序120a、120b、...120n(以下简称120)延迟,直到确定第一启动模块112在处理线程的第二个处理线程中不被视为在操作中。在各个实施例中,第一启动模块112可以被视为在操作中,而同时它等待由第一启动模块112调用的任何下游启动模块的操作的完成。
图2描述了一示例场景200,在该示例场景200中,第一启动模块112a和第二启动模块112b两者均可以调用第三启动模块112c。每个调用可以触发页错误异常,该页错误异常可以使控制被传递至异常处理程序120的实例,即第一异常处理程序120a和第二异常处理程序120b。正如对于多个调度器108a-n的情况,每个异常处理程序120可以是计算机代码的单个副本的实例(见图6),计算机代码可由多个处理器102a-n执行。
例如,当第一启动模块112a调用第三起动模块112c时,第一异常处理程序120a可以被传递控制。在将控制传递至第三启动模块112c之前,第一异常处理程序120a可以确保第三启动模块112c当前不被视为例如在另一处理线程中在操作中。在第三启动模块112c的操作完成之后,它可以将控制返回第一启动模块112a,第一启动模块112a可再次触发第一异常处理程序120a。第一异常处理程序120a可以将控制直接传递回第一启动模块112a,因为在第三启动模块112c在操作中的同时第一启动模块112a可已经被保持为“在操作中”状态。因此,第一启动模块112a在等待第三启动模块112c完成的同时可能不在任何其他处理线程上运行。相同情况可以发生在第二启动模块112b、第二异常处理程序120b和第三启动模块112c之间。图3描述了示例时间线,该示例时间线示出诸如第一异常处理程序120a和第二异常处理程序120b之类的异常处理程序220可以如何捕捉模块间调用并且确保启动模块112一次在一个处理线程中被操作。两个线程:线程(THREAD)1和线程2,可由两个处理器102(图3未示出)操作。调度器108的实例(图3也未示出)也可以在每个线程上操作。如左侧箭头所示,时间向页面下方继续。这些流程图仅意图图示多个线程间的一般流程。在各个实施例中,可以采用严格锁和/或臂板信号来确保正确的多线程操作。
在框302,在线程1上操作的调度器108的实例可以操作第一启动模块112a。在框304,在线程2上操作的调度器108的实例可以同时操作第二启动模块112b。
在框306,第一启动模块112可以调用第三启动模块112c。该模块间调用可以造成页错误异常,例如由于与线程1相关联的页表110a使第三启动模块112c被标记为“被禁用”。因此,在框308,诸如图2中的第一异常处理程序120a之类的异常处理程序120(被指示为图3中的“EH”)可以接管。第一异常处理程序120a可以例如基于与第三启动模块112c相关联的标志114c来确定第三启动模块112c在另一处理线程中当前未被视为在操作中。在作出这一确定之际,第一异常处理程序120a可以改变与线程1相关联的页表110a以指示第三启动模块112c的操作被启用而第一启动模块112a被禁用。第一异常处理程序120a也可以改变与第三启动模块112c相关联的标志114c以指示它被视为在线程1中在操作中,并且可以将控制传递至第三启动模块112c。在框310,可以操作第三启动模块112c。一旦第三启动模块112c的操作完成,则其相应的标志114c可例如由调度器108或第一异常处理程序120a设置,以指示第三启动模块112c不被视为在操作中,且控制可以被返回至第一启动模块112a。
与此同时,在第三启动模块112c在线程1上的操作期间,在操作312处,线程2上操作的第二启动模块112b可以调用第三启动模块112c。该模块间调用可以造成页错误异常,例如由于与线程2相关联的页表110(图3未示出)使第三启动模块112c被标记为“被禁用”。因此,在框314,异常处理程序120的另一实例,诸如图2中的第二异常处理程序120b,可以接管。第二异常处理程序120b可以例如基于与第三启动模块112c相关联的标志114c来确定第三启动模块112c在另一处理线程中当前被视为在操作中,该另一处理线程即线程1。
在框316,第二异常处理程序120b可以延迟第三启动模块112c的操作,直到第三启动模块112c变得可用。在一些实施例中,第二异常处理程序120b可以简单地周期性地检验第三启动模块112c的标志114c,直到它被标记为指示第三启动模块112c不再被视为在操作中。在一些实施例中,第二异常处理程序120b可以挂起第二启动模块112b的操作,将第二启动模块112b的依存条件设置为“第三启动模块112c就绪”,以及将控制传递回调度器108。调度器108可以选择另一模块进行操作,并且可以一旦满足第二启动模块112b的依存条件就稍后选择该第二启动模块112b。
返回线程1,在框318,在第三启动模块112c的操作完成之后,其相应的标志114c可由第一异常处理程序120a改变以指示它不被视为在操作中(例如,“就绪”)。线程1上第一启动模块112a的操作可以在框320继续。
回到线程2,在框316,第二异常处理程序120b可以例如基于其相应的标志114c来确定第三启动模块112c现在可用。在框322,第三启动模块112c可以在线程2上操作。一旦线程2上第三启动模块112c的操作完成且控制被返回至第二启动模块112b,则在框324,第二异常处理程序120b可以改变与第三启动模块112c相关联的标志114c以指示第三启动模块112c不再在操作中(例如,“就绪”)。然后,第二启动模块112b的操作可以在框326继续。
图4描述了按照各个实施例、可由调度器108实现的示例方法400,该调度器108的实例与特定处理线程相关联。在操作402处,调度器108的实例可以为处理线程生成页表110,该页表110具有与多个启动模块112a-m的每一个启动模块相关联的一个或多个页表项。一个或多个页表项可以取决于启动模块的地址范围而对应于单个启动模块。此外,一个或多个页表项可以在操作402处被例如调度器108设置,以指示相关联的启动模块112的执行被禁用或以其他方式被禁止。
在操作404处,启动模块112可例如由调度器108的实例从多个启动模块112a-m中被选择用于操作。调度器108的实例可以使用依存表达式来选择要操作哪个启动模块112。在一些实施例中,调度器108的实例可以标识处于“初始”状态(例如,入口点函数尚未被操作)或“挂起”状态(例如,可能下游调用的启动模块自标志114最近一次被校验起已完成操作)的一个或多个启动模块112,并且选择具有满意的依存表达式的启动模块112供操作。
在操作406处,如果未找到满足上述条件的启动模块112,则在操作408处,调度器108的实例可以被设置为与当前处理线程相关联的“没有启动模块可用”标志,以指示没有启动模块可用于在线程上操作。如果在操作410处确定相同情况对于所有其他处理线程均如此,这可以指示计算设备被充分启动,则方法400可以结束。如果在操作410确定相同情况并非在所有线程上如此,则方法400可以返回至操作404,并且可以作出另一尝试以选择启动模块112用于操作。
另一方面,如果在操作406处找到合格的启动模块112,则在操作412处,可以改变与该合格的启动模块(现在将称为“当前启动模块”)相关联的标志114,以指示当前启动模块被视为在操作中,即“忙碌”。在操作414,可以清除“没有启动模块可用”线程标志,以指示有可用于在线程上操作的启动模块。在操作416,可以例如由调度器108的实例来改变与当前启动模块112相关联的一个或多个页表项,以指示该特定启动模块112的执行被启用或以其他方式被允许。在操作418,当前处理线程的控制然后可例如由调度器108传递至当前启动模块112。
在操作期间,当前启动模块112可以调用(例如,功能调用)另一启动模块112。注意与目标启动模块112相关联的一个或多个项在操作402被设置以指示执行被禁用或禁止。因此,在操作420,模块间功能调用可以抛出页错误异常,控制可以被传递至异常处理程序120。如操作420处指示,异常处理程序120可以使其自身的例程进行操作,该情况的示例在图5中示出。
最后,尽管介入异常处理程序例程420和/或其他启动模块112的操作,可以操作当前启动模块112以完成。在操作422,控制然后可以被传递回调度器108。在操作424,例如可由调度器108的实例将刚完成的启动模块112相关联的一个或多个页表项修改回指示执行被禁用或禁止。在操作426,可例如由调度器108的实例来设置与当前启动模块112相关联的标志114,以将当前启动模块指明为不在操作中,即“就绪”。然后,方法400可以返回至操作404用于选择另一启动模块112。
图5描述了按照各个实施例的异常处理程序例程420的实例的示例操作流程。在由于处理线程中的模块间功能调用或返回的结果而出现页错误异常之际,在操作502,可例如由与处理线程相关联的异常处理程序120的实例来确定模块间功能调用或返回的源存储器地址和目标存储器地址。例如,异常处理程序120的实例可以检验控制寄存器(例如,CR2)、堆栈或其他数据结构。基于所确定的存储器地址,在操作504,可例如由异常处理程序120标识源启动模块和目标启动模块112。例如,异常处理程序120的实例可以将源地址和目标地址与多个启动模块112a-m的地址相比较。在操作506,例如可由异常处理程序120来改变调用线程的与源启动模块112相关联的一个或多个页表项,以指示操作被禁用或禁止。
在操作508,可以确定是否由功能调用或返回而造成页错误。例如,在图2中,当第一启动模块112a调用第三启动模块112c时,这是一个功能调用,而当第三启动模块112c将控制返回至第一启动模块112a时,这是一个返回。
如果页错误由功能调用造成,则在操作510,可以例如通过检验与目标启动模块112相关联的标志114,来确定目标启动模块112是否被视为在操作中。如果目标模块被视为在操作中(例如,未“就绪”),在一些实施例中,异常处理程序120的实例可以仅仅重新检验标志114,直到目标启动模块112不再被视为在操作中。在其他实施例中,包括图5所示的实施例,在操作512,异常处理程序120的实例可以挂起源启动模块112的操作,直到目标启动模块112变得可用。在一些实施例中,在操作514,异常处理程序120的实例可以改变所挂起的源启动模块依存关系,以指示目标启动模块112必须不被视为在操作中(例如,在“就绪”状态中)。在操作516,异常处理程序120的实例可以例如通过相应地设置其程序计数器使控制在异常处理程序返回之际被传递至调度器108,然后异常处理程序方法420可以返回。
回到操作510处,如果目标启动模块未被视为在操作中(例如,标志114被设为“就绪”),则在操作518处,可以改变与目标启动模块112相关联的一个或多个页表项以指示目标启动模块112的操作被启用或以其他方式被允许。注意到在操作508处,如果页错误被确定已由返回造成,则可以跳过操作510-516,且方法420可以直接前进至操作518。
在操作520处,例如可由异常处理程序120的实例再次确定页错误是由功能调用造成还是由返回造成。如果在操作520处的答案为功能调用,则在操作522处,可以例如由异常处理程序120来设置与目标启动模块112相关联的标志114来指示它在操作中或“忙碌”。如果在操作520处的答案为返回,则在操作524处,与源启动模块相关联的标志114可以被设为“就绪”。以任一方式,在操作526处,异常处理程序可以例如通过相应地设置其程序计数器而使控制在异常处理程序返回之际被传递至目标启动模块112。方法420然后可返回。
图6图示按照各个实施例的示例计算设备600。计算设备600可以包括多个组件、多个处理器102以及一些情况下的一个或多个通信芯片606。在各个实施例中,处理器102可以是处理器内核。在各个实施例中,通信芯片606也可以在实体上和电气上耦合至处理器102。在进一步的实现方式中,通信芯片606可以是处理器102的一部分。在各个实施例中,计算设备606可以包括印刷电路板(“PCB”)602。对于这些实施例,处理器102和通信芯片606可以设置于PCB 602上。在替代的实施例中,各个组件可以不采用PCB 602而耦合。
取决于其应用,计算设备606可以包括其他组件,该其他组件可能与或可能不与PCB 602实体上和电气上耦合。这些其他组件包括但不限于:易失性存储器(例如,动态随机存取存储器608,也称为“DRAM”)、非易失性存储器(例如,只读存储器610,也称为“ROM”)、闪存612、图形处理器614、输入/输出控制器616、数字信号处理器(未示出、密码处理器(未示出)、一个或多个天线618、显示器(未示出)、触摸屏显示器620、触摸屏控制器622、电池624、音频编解码器(未示出)、视频编解码器(未示出)、全球定位系统(“GPS”)设备628、指南针630、加速度计(未示出)、陀螺仪(未示出)、扬声器632、相机634以及大容量设备(诸如硬盘驱动器、固态驱动器、压缩盘(“CD”)、数字化视频盘(“DVD”))(未示出)等等。在各个实施例中,处理器102可与其他组件集成于同一管芯上以形成片上系统(“SoC”)。
在各个实施例中,易失性存储器(例如,DRAM 608)、非易失性存储器(例如,ROM 610)、闪存612和大容量设备可以包括编程指令,所述编程指令响应于处理器102的执行而使计算设备600实现方法400和/或420的全部方面或所选方面。例如,诸如易失性存储器(例如,DRAM 608)、非易失性存储器(例如,ROM 610)、闪存612和大容量存储设备这样的存储器组件中的一个或多个可以包括调度器代码650和/或异常处理程序代码660的临时和/或永久副本,这些副本在被执行时使计算设备600分别操作调度器108的一个或多个实例和/或异常处理程序120的一个或多个实例,以实现方法400和/或420的全部或所选方面。
通信芯片606可以启用有线和/或无线通信用于将数据传输至计算设备600以及从计算设备600接收数据。术语“无线”及其衍生物可用于描述可通过使用经非固态介质的已调电磁辐射来传送数据的电路、设备、系统、方法、技术、通信信道等。该术语并非意指相关联的设备不包含任何电线,尽管在一些实施例中它们可能不包含电线。此处描述的大多数实施例包括WiFi和LTE RAT作为示例。然而,通信芯片606可以实现多个无线标准或协议的任一个,所述无线标准或协议包括但不限于:IEEE 602.20、通用分组无线业务(“GPRS”)、演进数据优化(“Ev-DO”)、演进高速分组接入(“HSPA+”)、演进高速下行链路分组接入(“HSDPA+”)、演进高速上行链路分组接入(“HSUPA+”)、全球移动通信系统(“GSM”)、GSM演进的增强数据速率(“EDGE”)、码分多址(“CDMA”)、时分多址(“TDMA”)、数字增强无绳电信(“DECT”)、蓝牙、它们的衍生物、以及被指定为3G、4G、5G及以上的任何其他无线协议。计算设备600可以包括多个通信芯片606。例如,第一通信芯片606可专用于诸如Wi-Fi和蓝牙这样的较短程无线通信,而第二通信芯片606可专用于诸如GPS、EDGE、GPRS、CDMA、WiMAX、LTE、Ev-DO及其他这样的较长程无线通信。
在各种实现方式中,计算设备600可以是膝上型计算机、上网本、笔记本、超级本、智能电话、计算平板、个人数字助理(“PDA”)、超移动PC、移动电话、台式计算机、服务器、打印机、扫描仪、监视器、机顶盒、娱乐控制单元(例如,游戏控制台)、数码相机、便携式音乐播放器或数字视频记录器。在进一步的实现方式中,计算设备600可以是处理数据的任何其他电子设备。
用于执行上述技术的机器可读介质(包括非暂态机器可读介质,诸如机器可读存储介质)、方法、系统和设备是此处公开的实施例的说明性示例。因此,上述交互中的其他设备可以被配置成执行各种所公开的技术。
示例
示例1针对包括指令的至少一个计算机可读介质,所述指令响应于计算设备对指令的执行而使计算设备加速任务,该任务包括多个并行处理线程间的多个软件模块的操作,其中所述软件模块的操作包括延迟各处理线程的第一处理线程中的多个软件模块的第一软件模块的操作、直到确定第一软件模块不被视为在操作中,其中第一软件模块在其本身在操作中时、或者在等待由第一软件模块调用的任何其他软件模块的操作完成时被视为在操作中。
示例2包括示例1的至少一个计算机可读介质,其中所述指令响应于计算设备对指令的执行而使计算设备响应于由第一处理线程中在操作中的多个软件模块的第二软件模块对第一软件模块的模块间功能调用,执行该确定。
示例3包括示例2的至少一个计算机可读介质,其中所述指令响应于计算设备对指令的执行而使计算设备令模块间功能调用触发页错误。
示例4包括示例3的至少一个计算机可读介质,其中所述指令响应于计算设备对指令的执行使计算设备实现一异常处理程序,其中响应于页错误,执行控制被传递至与第一处理线程相关联的异常处理程序的实例,且其中异常处理程序的实例是执行该确定。
示例5包括示例1的至少一个计算机可读介质,其中所述指令响应于计算设备对指令的执行而使计算设备分别为多个处理线程初始化多个页表。
示例6包括示例5的至少一个计算机可读介质,其中所述指令响应于计算设备对指令的执行而使计算设备将对应于多个软件模块的项包括在多个页表中。
示例7包括示例6的至少一个计算机可读介质,其中所述指令响应于计算设备对指令的执行使计算设备:初始化第一页表的对应于多个软件模块的项以指示多个软件模块的操作在第一处理线程中被禁用或被禁止;以及在选择第一软件模块进行操作之际,改变第一页表的对应于第一软件模块的一个或多个页表项以指示第一软件模块的操作被启用或被允许。
示例8包括示例1-6的任一个的至少一个计算机可读介质,其中所述指令响应于计算设备对指令的执行而使计算设备实现调度器,该调度器被实例化为用于多个处理线程的相应实例。
示例9包括示例1-6的任一个的至少一个计算机可读介质,其中所述指令响应于计算设备对指令的执行使计算设备将对应于多个软件模块的多个指示符存储于存储器中,其中每个指示符被配置成指示相应的软件模块是否被视为在操作中。
示例10针对一种系统,该系统包括:多个处理器,所述多个处理器用于在多个并行处理线程中操作任务的多个软件模块;存储器,所述存储器操作地耦合至所述多个处理器以存储多个软件模块;以及异常处理程序,所述异常处理程序用于对各处理线程间的各软件模块的操作进行排序,包括延迟各处理线程的第一处理线程中的多个软件模块的第一软件模块的操作、直到确定第一软件模块未被视为在操作中,其中第一软件模块在其本身在操作中时或者在等待由第一软件模块调用的任何其他软件模块的操作完成时被视为在操作中。
示例11包括示例10的系统,其中所述异常处理程序响应于由第一处理线程中在操作中的多个软件模块的第二软件模块对第一软件模块的模块间功能调用来执行该确定。
示例12包括示例11的系统,其中所述多个软件模块具有被配置成使模块间功能调用触发页错误的相关联的状态。
示例13包括示例10的系统,还包括一调度器,该调度器的实例与多个处理线程相关联以便将对应于多个软件模块的项维持在与多个处理线程相关联的多个页表中。
示例14包括示例13的系统,其中初始化第一页表的对应于多个软件模块的项以指示多个软件模块的操作在第一处理线程中被禁用或被禁止,以及在选择第一软件模块进行操作之际,改变第一页表的对应于第一软件模块的一个或多个页表项以指示第一软件模块的操作被启用或被允许。
示例15包括示例10-14中的任一个的系统,其中所述存储器还用于存储对应于多个软件模块的多个指示符,其中每个指示符被配置成指示相应的软件模块是否在操作中,其中软件模块在由多个处理器执行时或者在它等待该软件模块所调用的下游软件模块的操作完成时被指示为在操作中。
示例16包括一种计算机实现的方法,包括:由计算设备确定在多个并行处理线程间执行的任务的多个软件模块的第一软件模块已经被在多个处理线程的第一处理线程中操作的多个软件模块的第二软件模块所调用;由计算设备确定第一软件模块未被视为在操作中,其中第一软件模块在其本身在操作中时或者在等待由第一软件模块调用的任何其他软件模块的操作完成时被视为在操作中;由计算设备响应于第一软件模块未被视为在操作中的确定、在第一处理线程中操作第一软件模块;以及由计算设备响应于第一软件模块被视为在操作中的确定而延迟第一处理线程中的第一软件模块的操作,直到第一软件模块的操作完成。
示例17包括示例16的计算机实现的方法,还包括响应于多个软件模块的第一软件模块已被多个软件模块的第二软件模块调用的确定而触发页错误。
示例18包括示例17的计算机实现的方法,还包括由计算设备实现异常处理程序,以及响应于该页错误将执行控制传递至与第一处理线程相关联的异常处理程序的实例。
示例19包括示例16的计算机实现的方法,还包括由计算设备为多个处理线程初始化多个相应的页表。
示例20包括示例19的计算机实现的方法,还包括由计算设备将对应于多个软件模块的项包括在多个页表中。
示例21包括示例20的计算机实现的方法,还包括:由计算设备初始化第一页表的对应于多个软件模块的项以指示多个软件模块的操作在第一处理线程中被禁用或被禁止;以及由计算设备响应于选择第一软件模块进行操作,改变第一页表的对应于第一软件模块的一个或多个页表项以指示第一软件模块的操作被启用或被允许。
示例22包括示例16-21中的任一个的计算机实现的方法,还包括由计算设备实现调度器,该调度器要被实例化为用于多个处理线程的相应实例。
示例23包括示例16-21中的任一个的计算机实现的方法,还包括由计算设备将对应于多个软件模块的多个指示符存储于对计算设备可访问的存储器中,其中每个指示符被配置成指示相应的软件模块是否在处理线程中在操作中。
示例24针对一种设备,该设备包括:用于确定在多个并行处理线程间执行的任务的多个软件模块的第一软件模块已经被在多个处理线程的第一处理线程中的多个软件模块的第二软件模块所调用的装置;用于确定第一软件模块未被视为在操作中的装置,其中第一软件模块在其本身在操作中时或者在等待由第一软件模块调用的任何其他软件模块的操作完成时被视为在操作中;用于响应于第一软件模块未被视为在操作中的确定、在第一处理线程中操作第一软件模块的装置;以及用于响应于第一软件模块被视为在操作中的确定而延迟第一处理线程中的第一软件模块的操作,直到第一软件模块的操作完成的装置。
示例25包括示例24的设备,还包括用于响应于多个软件模块的第一软件模块已调用了多个软件模块的第二软件模块的确定而触发页错误的装置。
示例26包括示例25的设备,还包括用于实现一异常处理程序的装置,其中响应于该页错误,执行控制被传递至与第一处理线程相关联的异常处理程序的实例。
示例27包括示例24的设备,还包括用于为多个处理线程初始化多个相应的页表的装置。
示例28包括示例27的设备,还包括用于将对应于多个软件模块的项包括在多个页表中的装置。
示例29包括示例28的设备,还包括:用于初始化第一页表的对应于多个软件模块的项以指示多个软件模块的操作在第一处理线程中被禁用或被禁止的装置;以及用于响应于选择第一软件模块进行操作、改变第一页表的对应于第一软件模块的一个或多个页表项以指示第一软件模块的操作被启用或被允许的装置。
示例30包括示例24-29的任一个的设备,还包括用于由计算设备实现调度器的装置,该调度器要被实例化为用于多个处理线程的相应实例。
示例31包括示例24-29的任一个的设备,还包括用于存储对应于多个软件模块的多个指示符的装置,其中每个指示符被配置成指示相应的软件模块是否被视为在处理线程中处于操作中,其中软件模块在它执行时或者在它等待该软件模块所调用的下游软件模块的操作完成时处于操作中。
尽管已经为描述目的图示和描述了特定实施例,该申请意图覆盖此处讨论的实施例的任何适配或变体。因此,显而易见的是此处描述的实施例仅受权利要求所限。
在本公开记载“一”或“第一”元素或其等价物之处,这种公开包括一个或多个这样的元素,既不要求也不排除两个或更多个这样的元素。而且,已标识元素的有序指示符(例如,第一、第二或第三)用于在各元素间区分,且不指示或意指所需数量或有限数量的这种元素,除非以其他方式特别声明,它们也不指示这种元素的特定位置或次序。

Claims (25)

1.一种用于在多个并行处理线程中操作任务的多个软件模块的系统,包括:
多个处理器,所述多个处理器用于在所述多个并行处理线程中操作所述任务的所述多个软件模块;
存储器,所述存储器操作地耦合至所述多个处理器以存储所述多个软件模块;以及
异常处理程序,所述异常处理程序用于对所述处理线程间的软件模块的操作进行排序,所述操作包括延迟处理线程的第一处理线程中的多个软件模块的第一软件模块的操作,直到确定所述第一软件模块未被视为在操作中,其中所述第一软件模块在其本身在操作中时或者在等待由所述第一软件模块调用的任何其他软件模块的操作完成时被视为在操作中。
2.如权利要求1所述的系统,其特征在于,所述异常处理程序响应于由第一处理线程中在操作中的多个软件模块的第二软件模块对所述第一软件模块的模块间功能调用来执行所述确定。
3.如权利要求2所述的系统,其特征在于,所述多个软件模块具有被配置成使所述模块间功能调用触发页错误的相关联状态。
4.如权利要求1所述的系统,其特征在于,还包括调度器,所述调度器的实例与所述多个处理线程相关联以便将对应于所述多个软件模块的项维持在与所述多个处理线程相关联的多个页表中。
5.如权利要求4所述的系统,其特征在于,初始化第一页表的对应于所述多个软件模块的项以指示所述多个软件模块的操作在所述第一处理线程中被禁用或被禁止,以及在选择所述第一软件模块进行操作之际,改变所述第一页表的对应于所述第一软件模块的一个或多个页表项以指示所述第一软件模块的操作被启用或被允许。
6.如权利要求1-5中的任一项所述的系统,其特征在于,所述存储器还用于存储对应于所述多个软件模块的多个指示符,其中每个指示符被配置成指示相应的软件模块是否在操作中,其中在软件模块由所述多个处理器执行时或者在所述软件模块等待所述软件模块所调用的下游软件模块的操作完成时所述软件模块被指示为在操作中。
7.一种用于在多个并行处理线程中操作任务的多个软件模块的计算机实现的方法,包括:
由计算设备确定在所述多个并行处理线程间执行的所述任务的多个软件模块的第一软件模块已经被在所述多个处理线程的第一处理线程中操作的多个软件模块的第二软件模块所调用;
由所述计算设备确定所述第一软件模块未被视为在操作中,其中所述第一软件模块在其本身在操作中时或者在等待由所述第一软件模块调用的任何其他软件模块的操作完成时被视为在操作中;
由所述计算设备响应于所述第一软件模块未被视为在操作中的确定,在所述第一处理线程中操作所述第一软件模块;以及
由所述计算设备响应于所述第一软件模块被视为在操作中的确定而延迟所述第一处理线程中的所述第一软件模块的操作,直到所述第一软件模块的操作完成。
8.如权利要求7所述的计算机实现的方法,其特征在于,还包括响应于所述多个软件模块的第一软件模块已被所述多个软件模块的第二软件模块调用的确定而触发页错误。
9.如权利要求8所述的计算机实现的方法,其特征在于,还包括由所述计算设备实现异常处理程序,以及响应于所述页错误将执行控制传递至与所述第一处理线程相关联的异常处理程序的实例。
10.如权利要求7所述的计算机实现的方法,其特征在于,还包括由所述计算设备为所述多个处理线程初始化多个相应的页表。
11.如权利要求10所述的计算机实现的方法,其特征在于,还包括由所述计算设备将对应于所述多个软件模块的项包括在所述多个页表中。
12.如权利要求11所述的计算机实现的方法,其特征在于,还包括:由所述计算设备初始化第一页表的对应于所述多个软件模块的项以指示所述多个软件模块的操作在所述第一处理线程中被禁用或被禁止;以及
由所述计算设备响应于选择所述第一软件模块进行操作,改变所述第一页表的对应于所述第一软件模块的一个或多个页表项以指示所述第一软件模块的操作被启用或被允许。
13.如权利要求7-12中的任一项所述的计算机实现的方法,其特征在于,还包括由所述计算设备实现调度器,所述调度器将被实例化为用于所述多个处理线程的相应实例。
14.如权利要求7-12中的任一项所述的计算机实现的方法,其特征在于,还包括由所述计算设备将对应于所述多个软件模块的多个指示符存储于对所述计算设备可访问的存储器中,其中每个指示符被配置成指示相应的软件模块是否被视为在操作中。
15.一种用于在多个并行处理线程中操作任务的多个软件模块的设备,包括:
用于确定在所述多个并行处理线程间执行的任务的多个软件模块的第一软件模块已经被在多个处理线程的第一处理线程中的多个软件模块的第二软件模块所调用的装置;
用于确定所述第一软件模块未被视为在操作中的装置,其中所述第一软件模块在其本身在操作中时或者在等待由所述第一软件模块调用的任何其他软件模块的操作完成时被视为在操作中;
用于响应于所述第一软件模块未被视为在操作中的确定,在所述第一处理线程中操作所述第一软件模块的装置;以及
用于响应于所述第一软件模块在操作中的确定而延迟所述第一处理线程中的所述第一软件模块的操作,直到所述第一软件模块的操作完成的装置。
16.如权利要求15所述的设备,其特征在于,还包括用于响应于所述多个软件模块的第一软件模块已调用了所述多个软件模块的第二软件模块的确定而触发页错误的装置。
17.如权利要求16所述的设备,其特征在于,还包括用于实现异常处理程序的装置,其中响应于所述页错误,执行控制被传递至与所述第一处理线程相关联的异常处理程序的实例。
18.如权利要求15所述的设备,其特征在于,还包括用于为所述多个处理线程初始化多个相应的页表的装置。
19.如权利要求18所述的设备,其特征在于,还包括用于将对应于所述多个软件模块的项包括在所述多个页表中的装置。
20.如权利要求19所述的装置,其特征在于,还包括:
用于初始化第一页表的对应于所述多个软件模块的项以指示所述多个软件模块的操作在所述第一处理线程中被禁用或被禁止的装置;以及
用于响应于选择所述第一软件模块进行操作,改变所述第一页表的对应于所述第一软件模块的一个或多个页表项以指示所述第一软件模块的操作被启用或被允许的装置。
21.如权利要求15-20中的任一项所述的设备,其特征在于,还包括用于由所述计算设备实现调度器的装置,所述调度器要被实例化为用于所述多个处理线程的相应实例。
22.如权利要求15-20中的任一项所述的设备,其特征在于,还包括用于存储对应于所述多个软件模块的多个指示符的装置,其中每个指示符被配置成指示相应的软件模块是否在处理线程中处于操作中,其中在软件模块执行时或者在所述软件模块等待所述软件模块所调用的下游软件模块的操作完成时所述软件模块被视为在操作中。
23.包括指令的至少一个计算机可读介质,其特征在于,所述指令响应于计算设备对所述指令的执行而使所述计算设备执行权利要求7-12的方法的任一种。
24.如权利要求23所述的至少一个计算机可读介质,其特征在于,所述指令响应于所述计算设备对所述指令的执行而使所述计算设备实现调度器,所述调度器被实例化为用于所述多个处理线程的相应实例。
25.如权利要求23所述的至少一个计算机可读介质,其特征在于,所述指令响应于所述计算设备对所述指令的执行使所述计算设备将对应于所述多个软件模块的多个指示符存储于对所述计算设备可访问的存储器中,其中每个指示符被配置成指示相应的软件模块是否被视为在操作中。
CN201380072529.8A 2013-03-14 2013-03-14 用于多个并行处理线程间的任务的软件模块的并行操作的系统、方法和设备 Active CN104969183B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2013/072617 WO2014139125A1 (en) 2013-03-14 2013-03-14 Operation of software modules in parallel

Publications (2)

Publication Number Publication Date
CN104969183A true CN104969183A (zh) 2015-10-07
CN104969183B CN104969183B (zh) 2018-10-19

Family

ID=51535813

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201380072529.8A Active CN104969183B (zh) 2013-03-14 2013-03-14 用于多个并行处理线程间的任务的软件模块的并行操作的系统、方法和设备

Country Status (7)

Country Link
US (1) US9582339B2 (zh)
EP (1) EP2972795B1 (zh)
JP (1) JP6026677B2 (zh)
KR (1) KR101710291B1 (zh)
CN (1) CN104969183B (zh)
BR (1) BR112015018496A2 (zh)
WO (1) WO2014139125A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113703818A (zh) * 2021-08-18 2021-11-26 深圳数马电子技术有限公司 设备升级方法和装置、计算机设备和计算机可读存储介质

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9792112B2 (en) 2013-08-28 2017-10-17 Via Technologies, Inc. Propagation of microcode patches to multiple cores in multicore microprocessor
US9891927B2 (en) 2013-08-28 2018-02-13 Via Technologies, Inc. Inter-core communication via uncore RAM
US9465432B2 (en) 2013-08-28 2016-10-11 Via Technologies, Inc. Multi-core synchronization mechanism
US10416890B2 (en) * 2015-09-09 2019-09-17 Intel Corporation Application execution enclave memory page cache management method and apparatus
US10802875B2 (en) 2018-04-30 2020-10-13 Qualcomm Incorporated Multithread framework for use in pre-boot environment of a system-on-chip

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6507903B1 (en) * 2000-06-20 2003-01-14 International Business Machines Corporation High performance non-blocking parallel storage manager for parallel software executing on coordinates
CN1894663A (zh) * 2003-06-30 2007-01-10 英特尔公司 多处理器或超线程使能平台上的基于增强efi的bios驱动器的并行执行
CN101807144A (zh) * 2010-03-17 2010-08-18 上海大学 一种前瞻多线程并行执行优化方法
US7827374B2 (en) * 2006-06-12 2010-11-02 Oracle America, Inc. Relocating page tables
US7865885B2 (en) * 2006-09-27 2011-01-04 Intel Corporation Using transactional memory for precise exception handling in aggressive dynamic binary optimizations
US20110099355A1 (en) * 2004-08-30 2011-04-28 Texas Instruments Incorporated Multi-threading processors, integrated circuit devices, systems, and processes of operation and manufacture
US20110113229A1 (en) * 2009-11-12 2011-05-12 Hiroshi Itoh Method for Shortening the Boot Time of a Computer System
US20130042080A1 (en) * 2011-08-12 2013-02-14 Samsung Electronics Co., Ltd. Prevention of race conditions in library code through memory page-fault handling mechanisms

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0262651A (ja) * 1988-08-29 1990-03-02 Nec Corp 並列計算機における相互排除方式
JPH0784851A (ja) * 1993-09-13 1995-03-31 Toshiba Corp 共有データ管理方法
JPH1063525A (ja) * 1996-08-23 1998-03-06 Canon Inc 情報処理装置、情報処理システム及びその制御方法
US7260698B2 (en) * 2003-10-30 2007-08-21 International Business Machines Corporation Method and system for page initialization using off-level worker thread
US7861063B1 (en) * 2004-06-30 2010-12-28 Oracle America, Inc. Delay slot handling in a processor
US8713361B2 (en) * 2011-05-04 2014-04-29 Advanced Micro Devices, Inc. Error protection for pipeline resources

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6507903B1 (en) * 2000-06-20 2003-01-14 International Business Machines Corporation High performance non-blocking parallel storage manager for parallel software executing on coordinates
CN1894663A (zh) * 2003-06-30 2007-01-10 英特尔公司 多处理器或超线程使能平台上的基于增强efi的bios驱动器的并行执行
US20110099355A1 (en) * 2004-08-30 2011-04-28 Texas Instruments Incorporated Multi-threading processors, integrated circuit devices, systems, and processes of operation and manufacture
US7827374B2 (en) * 2006-06-12 2010-11-02 Oracle America, Inc. Relocating page tables
US7865885B2 (en) * 2006-09-27 2011-01-04 Intel Corporation Using transactional memory for precise exception handling in aggressive dynamic binary optimizations
US20110113229A1 (en) * 2009-11-12 2011-05-12 Hiroshi Itoh Method for Shortening the Boot Time of a Computer System
CN101807144A (zh) * 2010-03-17 2010-08-18 上海大学 一种前瞻多线程并行执行优化方法
US20130042080A1 (en) * 2011-08-12 2013-02-14 Samsung Electronics Co., Ltd. Prevention of race conditions in library code through memory page-fault handling mechanisms

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113703818A (zh) * 2021-08-18 2021-11-26 深圳数马电子技术有限公司 设备升级方法和装置、计算机设备和计算机可读存储介质
CN113703818B (zh) * 2021-08-18 2024-05-17 深圳数马电子技术有限公司 设备升级方法和装置、计算机设备和计算机可读存储介质

Also Published As

Publication number Publication date
US20150324240A1 (en) 2015-11-12
WO2014139125A1 (en) 2014-09-18
BR112015018496A2 (pt) 2017-07-18
CN104969183B (zh) 2018-10-19
EP2972795A4 (en) 2016-11-09
JP6026677B2 (ja) 2016-11-16
JP2016510472A (ja) 2016-04-07
EP2972795B1 (en) 2019-03-06
US9582339B2 (en) 2017-02-28
KR101710291B1 (ko) 2017-03-08
KR20150103216A (ko) 2015-09-09
EP2972795A1 (en) 2016-01-20

Similar Documents

Publication Publication Date Title
CN104969183A (zh) 软件模块的并行操作
CN110489213B (zh) 一种任务处理方法及处理装置、计算机系统
KR101798369B1 (ko) 휴대용 디바이스에서 동기적 태스크 디스패치를 위한 시스템 및 방법
US9207943B2 (en) Real time multithreaded scheduler and scheduling method
CN108319496B (zh) 资源访问方法、业务服务器、分布式系统及存储介质
CN110300328B (zh) 一种视频播放控制方法、装置及可读存储介质
US8819345B2 (en) Method, apparatus, and computer program product for inter-core communication in multi-core processors
US8479207B2 (en) Priority inheritance in multithreaded systems
US9606818B2 (en) Systems and methods of executing multiple hypervisors using multiple sets of processors
EP3849247A1 (en) Electronic device and method for operating the same
CN105683905A (zh) 在多核心处理器中并行功能的高效率硬件分派及相关的处理器系统、方法及计算机可读媒体
US20170060640A1 (en) Routine task allocating method and multicore computer using the same
CN104714839A (zh) 一种控制进程生命期的方法和装置
US10520929B2 (en) Techniques for implementing universal commands in a welding or cutting system
CN105824533A (zh) 一种图片加载方法、装置及终端
CN115543317A (zh) 前端页面开发方法及装置
CN109379284B (zh) 路由执行方法、存储介质和终端设备
CN106879056A (zh) 一种终端的省电方法及装置
CN113268325A (zh) 一种调度任务的方法、装置及存储介质
CN107562527B (zh) 一种rtos上的smp的实时任务调度方法
US20150363227A1 (en) Data processing unit and method for operating a data processing unit
US9443109B2 (en) Computing device and method of processing secure services for computing device
CN109144505B (zh) Android页面的展示方法和装置
CN114416381B (zh) 处理资源超分方法、装置、设备及存储介质
CN113806025B (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
GR01 Patent grant
GR01 Patent grant