首页> 中国专利> 用于缩减使用同时多线程处理器的带缓冲的应用的能耗的方法

用于缩减使用同时多线程处理器的带缓冲的应用的能耗的方法

摘要

计算机系统中的资源管理可以缩减系统的能耗。这可以通过监控关于软件应用的应用状态和/或监控多线程化系统中的线程状态,并且随后在系统中做出资源调整来完成。应用状态的监控可以通过监控为软件应用所使用的暂时数据建立的数据缓冲区来进行。依赖于缓冲等级,资源可以被增加或减少。资源的调整可以以改变系统中的处理器的电压和频率的形式和其他方式来进行。减少资源可以帮助缩减能耗。资源的管理还可以通过监控与系统中的一个或多个软件应用相关联的线程并且控制线程的分派来进行。就绪线程可以被延迟以增加多个线程并发运行的机会。多个线程的并发运行可以帮助增加系统空闲时间的机会,并且因此能耗可以被减少。

著录项

  • 公开/公告号CN1938685A

    专利类型发明专利

  • 公开/公告日2007-03-28

    原文格式PDF

  • 申请/专利权人 英特尔公司;

    申请/专利号CN200580009952.9

  • 发明设计人 M·杨;Y-k·陈;

    申请日2005-01-14

  • 分类号G06F9/46(20060101);G06F1/32(20060101);

  • 代理机构北京嘉和天工知识产权代理事务所;

  • 代理人严慎

  • 地址 美国加利福尼亚州

  • 入库时间 2023-12-17 18:29:26

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2008-11-05

    授权

    授权

  • 2007-05-23

    实质审查的生效

    实质审查的生效

  • 2007-03-28

    公开

    公开

说明书

发明领域

本发明涉及计算机系统领域,更具体地,涉及用于缩减计算机系统的功耗的方法和装置。

背景

多线程技术(multithreading)是将指令分割成多个执行流(或线程),以便它们可以被并行地处理的技术。

图1A是图示可以被用来支持多线程技术的现有技术系统的实施例的框图。系统100包括两个物理处理器105和110,并且可以被用来执行多线程软件应用。物理处理器105和110中的每一个可以包括类似的资源(例如体系结构状态、执行资源、缓存等)集合。所述两个物理处理器可以共享公共系统总线115和公共主存储器120。

典型地,为了增加并行性,系统100可以采用调度技术,每当线程准备被分派时,所述调度技术分派该线程。

附图简要说明

下面的附图仅仅为了图示说明的目的公开本发明的各个实施方案,并且不想要对本发明的范围进行限制。

图1A是图示可以被用来支持多线程技术的现有技术系统的实施例的框图。

图1B是根据一个实施方案图示具有支持超线程技术的单个处理器的系统的实施例的框图。

图1C是根据一个实施方案图示使用数据缓冲区的应用的实施例的框图。

图2是根据一个实施方案图示多线程化系统(multithreading system)中的不同状态的框图。

图3A和3B根据一个实施方案图示软件应用可以使用的缓冲区的两个实施例。

图4A和4B根据一个实施方案图示在多线程化系统中被分派的线程的实施例。

图5是根据一个实施方案图示在多线程化系统中使用延迟分派方案所分派的线程的

实施例。

图6是根据一个实施方案图示视频解码过程的实施例的图。

详细说明

对于一个实施方案,公开了用于管理系统中的资源的方法。所述方法包括监控与软件应用相关联的缓冲区和监控系统中的线程。基于当前缓冲等级(level)和线程状态中的至少一个,可用资源(例如,电压、频率、体系结构参数等)可以被增加或减少。

在下面的描述中,为了解释的目的,阐述了很多具体细节以提供对本发明的完整理解。然而,本领域技术人员将会清楚,无需这些具体细节可以实践本发明。此外,公知结构、过程和设备以框图的形式被示出或者以概括的方式被提及,以提供没有过多细节的解释。

超线程技术是一项来自加利福尼亚州圣塔克莱拉市的Intel公司的技术,所述技术使得使用单个物理处理器能够并行地执行线程。超线程技术是同时多线程技术(SimultaneousMulti-threading Technology,SMT)的一种形式,其中软件应用的多个线程可以在一个物理处理器上同时被执行。这可以通过复制体系结构状态来达到,其中每个体系结构状态共享处理器执行资源的一个集合。

图1B是图示具有支持超线程技术的单个处理器的系统的实施例的框图。系统101包括具有两个体系结构状态185和190的物理处理器150,所述两个体系结构状态185和190使得物理处理器150被感知为两个逻辑处理器155、160。所述两个逻辑处理器155、160共享相同的执行资源165、缓存170、系统总线175和主存储器180。依赖于逻辑处理器155、160中的哪一个可用,物理处理器150可以以交织的方式调度多个线程。超线程技术导致处理器执行资源165和总吞吐量的增加的利用率。

超线程技术使得执行单元更加繁忙,并且因此与不支持超线程技术的处理器相比,执行单元可能消耗更多的功率。对于现代系统,尤其是电池操作的移动系统,功耗正成为重要的考虑因素。在这些电池操作的系统中,对于系统的整体性能评估,用于给定的固定应用的平均功耗可能是所要考虑的一个至关重要的参数。已经提出用于缩减功耗的不同技术,包括例如动态电压管理(Dynamic Voltage Management,DVM)。使用DVM,通过变化所应用的频率和/或电压,可以配置处理器的性能和功耗。

应用约束

许多软件应用受数据传送要求的约束。图1C是根据一个实施方案图示使用数据缓冲区的应用的实施例的框图。如图1C所图示,第一应用182可以产生数据并且将其储存在第一数据缓冲区184中。第一数据缓冲区184中的数据可以随后被用作到第二应用192的输入。第二应用192可以随后产生要被储存在第二数据缓冲区194中的数据。当第一应用182和第二应用192不被任何数据传送要求约束时,任意地变化将数据储存在第一数据缓冲区184或第二数据缓冲区194中的频率以及从这些缓冲区中取得数据的频率可以对第一应用182和第二应用192没什么影响。

然而,当第一应用182和第二应用192被某些形式的数据传送要求约束时,不考虑该因素可能会妨碍用户感受和/或软件应用可靠性。例如,对于流式多媒体或其他实时应用,在不当时刻的低频率处理器可以导致应用失败,导致跳帧或产生质量降低的图像。

对于一个实施方案,通过监控利用一个或更多个缓冲区的一个或更多个软件应用,可以进行系统中资源的管理。软件应用可以包括一个或更多个线程。线程可以被多次分派。在系统中可以有两个或更多个并发运行的线程。这些线程可以来自同一软件应用或者来自不同软件应用。软件应用可以包括实时软件应用。系统可以包括支持多线程技术的一个或更多个处理器(例如支持超线程技术的处理器)。所述系统可以被称为多线程化系统。

状态

图2是根据一个实施方案图示可以被用来管理多线程化系统中的资源的不同状态的一个实施例的框图。系统200可以包括应用状态205、第一线程状态206、第一机器状态207和资源管理器210。依赖于应用状态205、第一线程状态206和第一机器状态207,资源管理器210可以例如将系统200从第一机器状态207转换到第二机器状态220,和/或将系统中的线程从第一线程状态206转换到第二线程状态215。

机器状态

第一机器状态207和第二机器状态220是系统200在任何特定时刻可以处于的状态的实施例。对于一个实施方案,机器状态可以与系统200中的一个或更多个硬件组件的配置或性能等级相关联。机器状态可以与应用到处理器的频率和/或电压的等级、乱序(out-of-order)项的数量、硬件缓冲区、存储器或缓存的大小、算术逻辑单元(ArthmeticLogic Unit,ALU)、寄存器等相关。例如,当应用到处理器的频率/电压被降低时,系统200可以处于低功耗状态(例如第一机器状态207)。类似地,当应用到处理器的频率/电压被增加时,系统200可以处于正常功耗状态(例如第二机器状态220)。可以存在许多不同的机器状态。

资源管理器

资源管理器210可以负责确定系统200中当前可用的资源的等级。资源管理器210可以增加或减少可用资源,并且因此可以将系统200从第一机器状态207转换到第二机器状态220。例如,资源管理器210可以进行操作以动态地调整应用到系统200中的处理器的频率和/或电压。资源管理器210还可以改变软件应用所使用的缓冲区的大小。一般情况下,资源管理器210可以配置系统200中的硬件电路的至少一部分。硬件电路可以包括例如处理器、存储器、缓存、芯片组等硬件组件。配置硬件电路的操作可以包括对一个或更多个硬件组件进行断电或通电。这可以使得资源管理器210能够间接地影响软件应用的执行。例如,增加可用资源的操作可以导致软件应用以较高的速率执行,并且减少可用资源的操作可以导致软件应用以较低的速率执行。

通过将线程从第一线程状态206转换到第二线程状态215,资源管理器210还可以节约资源。例如,第一线程状态206可以是准备被分派(ready-to-be-dispatched)(或就绪)状态,并且第二线程状态215可以是延迟被分派(或排队)状态。改变线程的线程状态可以改变它的执行就绪程度(readiness)(例如从就绪到排队,或从排队到就绪),并且可以帮助缩减系统200的功耗。注意,依赖于情况,资源管理器210可以改变或不改变线程的线程状态和/或系统200的机器状态。

应用状态

在任何特定时刻,软件应用可以处于不同的应用状态205。例如,软件应用可以正在缓冲区中缓冲数据,并且缓冲区的当前缓冲等级可以指示缓冲区可能接近下溢状况,这表示一个应用状态。随着缓冲区的当前缓冲等级的改变,软件应用可以处于不同的应用状态。软件应用所利用的缓冲区的当前缓冲等级可以被监控,以确定正常状况和潜在的临界状况。所述临界状况可以包括缓冲区下溢状况、缓冲区上溢状况等。

依赖于当前缓冲等级和如何使用缓冲区(例如输入或输出缓冲区),数据被置入缓冲区或从缓冲区中被读的速率可以被增加或降低。这可以要求资源管理器210增加或减少系统200中的可用资源。例如,当输入缓冲区的当前缓冲等级指示潜在的缓冲区上溢状况时,资源管理器210可以增加输入缓冲区的大小。作为另一个实施例,资源管理器210可以增加应用到系统200中的处理器的频率/电压。

图3A和图3B根据一个实施方案图示软件应用可以使用的缓冲区的两个实施例。图3A图示当软件应用包括涉及一个缓冲区300中的数据的操作时的情形的实施例。例如,软件应用可以从缓冲区300读数据。数据可以以变化的速率被接收到缓冲区300内(如指向缓冲区300的方向箭头所图示),并且软件应用可以对该速率具有最小控制。

对于一个实施方案,缓冲区300的缓冲等级302可以被用来确定系统200中对资源的要求。例如,当缓冲等级302在预定的低缓冲标记L0之下时,应用到系统200中的处理器的频率和电压可以被降低,从而软件应用可以以较低的速率从缓冲区读(如从缓冲区300离开的方向箭头所示)。这可以帮助保护缓冲区300以免出现潜在的缓冲区下溢状况。类似地,当缓冲等级302在预定的高缓冲标记H0之上时,应用到处理器的频率和电压可以被增加,从而软件应用可以以较高的速率从缓冲区300读数据,以保护缓冲区300以免出现潜在的缓冲区上溢状况。在本实施例中,阴影区域图示缓冲区300中的数据。

图3B图示当软件应用包括涉及两个缓冲区305和315中的数据的操作时的情形的实施例。对于一个实施方案,缓冲区305和315中的每一个可以分别与预定的低缓冲标记L1和L2,以及分别与预先确定的高缓冲标记H1和H2相关联。与缓冲区305和315中的每一个相关联的分别是当前缓冲等级310和320。对于一个实施方案,软件应用可以是例如多媒体软件应用的实时软件应用。实时软件应用的一个特性是周期性期限的潜在可能性,例如以30帧每秒显示视频数据的要求。这样的软件应用通常可以具有一些缓冲区来满足(meet)每个期限以确保流畅的重放、再现、记录等。可以注意到,在实施例中使用的术语“帧”可以与视频应用或音频应用相关联。更一般地,术语“帧”可以被视为要被处理的数据段。

在当前的实施例中,两个缓冲区305和315可以在视频解码器过程中被使用。缓冲区305可以是比特流(bitstream)缓冲区,并且可以以第一速率330从网络或数据源接收数据(如指向缓冲区305的方向箭头所图示)。第一速率330可以是可变的。缓冲区305中的数据可以被视频解码器过程操纵,并且随后被储存在缓冲区315中(如指向缓冲区315的方向箭头所图示)。视频解码器过程可以以第二速率340来操作。缓冲区315可以是未压缩帧缓冲区。数据可以随后以第三速率350从缓冲区315中被读取(如离开缓冲区315的方向箭头所图示)以被显示。在任何给定时刻,第一速率330、第二速率340和第三速率350可以彼此互不相同。对于一个实施方案,资源管理器210可以改变系统200的机器状态以及系统200中线程的线程状态,以改变第一速率330、第二速率340和第三速率350中的一个或更多个。这样的改变可以动态地进行。因为一些软件应用可能对流入数据速率和流出数据速率两者都有约束,所以这样的改变可能是必需的。

对于一个实施方案,当对流入数据速率和流出数据速率两者都存在约束时,结合图3A和图3B描述的缓冲区监控操作的组合可以被用来管理系统200中的资源。参照图3B中的图,取决于缓冲区305和315的缓冲区填充等级(fullness level),对系统200中的资源的要求可以不同。对于一个实施方案,当缓冲区305的缓冲等级310指示缓冲区305中的数据量低(在低等级标记L1之下)或正常(在低等级标记L1和高等级标记H1之间),并且缓冲区315的缓冲等级320指示缓冲区315中的数据高(在高等级标记H2之上)时,可以降低对资源的要求以降低第二速率340。这可以包括例如降低应用到处理器的频率和电压。这可以使得软件应用能够以较低的第二速率340将数据写入缓冲区315,以保护缓冲区315以免出现潜在的缓冲区上溢状况。

对于一个实施方案,当缓冲区305的缓冲等级310指示缓冲区305中的数据量正常(在低等级标记L1和高等级标记H1之间)或高(在高等级标记H1之上),并且缓冲区315的缓冲等级320指示缓冲区315中的数据低(在低等级标记L2之下)时,可以增加对资源的要求以增加第二速率340。这可以包括例如增加应用到处理器的频率和电压。这可以使得软件应用能够以较高的第二速率340将数据写入缓冲区315,以保护缓冲区315以免出现潜在的缓冲区下溢状况。

除了监控缓冲等级310和320之外,数据依赖性(dependency)是在管理系统200中的资源时可能需要考虑的因素。例如,为了在期限之前解压缩/压缩帧,有时可能必需先解压缩/压缩锚帧(anchor frame)。当存在数据依赖性时,资源管理器210可能需要做一些与正常情况下它所做的不同的工作,以管理资源。

在其中软件应用是视频播放器应用(不同于视频解码器应用)的实施例中,当缓冲区305和315中的数据量高,并且下一帧依赖于当前帧时,软件应用可能需要对显示速率重新采样。对显示速率重新采样可以包括例如以比1/30秒(用于视频播放器应用的正常第三速率350)高的速率来显示帧,从而缓冲区315可以具有足够的空间来储存以第二速率340储存的已解码帧。

此外,当下一帧不依赖于当前帧,并且缓冲区305和315中的数据量高(分别在高等级标记H1和H2之上)时,软件应用可能需要抛弃或丢弃帧。例如,从缓冲区305移除的帧可以被抛弃,而不是储存在缓冲区315中。这可以帮助防止缓冲区305和315的潜在的缓冲区上溢。抛弃或丢弃帧的操作可以包括例如不执行相关线程。数据的缓冲和数据的依赖性是所述应用状态的实施例。表1提供上面的实施例的概括,其中,在图3B中图示的缓冲区305和315在表1中分别被列出为比特流缓冲区和未压缩帧缓冲区。示为“-”的表项指示该信息对要被进行的动作来说可以是不相关的。

                          应用状态    动作    缓冲区305  比特流缓冲等级?    缓冲区315未压缩帧缓冲等级?下一帧依赖于该帧?    低/正常    同        -不对帧进行解码并且减少CPU资源    正常/高    低        -对帧进行解码并且增加CPU资源    高    同        是对显示速率重新采样    低    低        -抛弃帧    高    高        否抛弃帧

表1

线程状态

线程状态可以与软件应用中的线程如何被分派相关联。如以上所描述,软件应用可以具有可以并发运行的多个线程。对于一个实施方案,与软件应用相关联的线程的分派可以被延迟以增加多个线程并发运行的机会。延迟线程的分派可以帮助降低对资源的要求,并且因此可以允许系统200从例如第一机器状态207转换到第二机器状态220。例如,当没有其他线程正在运行时,线程可以从准备被分派(或就绪)状态(例如第一线程状态206)被转换到延迟被分派(或排队)状态(例如第二线程状态215)。线程可以被排队或延迟,直到另一个线程就绪,从而两个线程可以一起被分派。可以注意到,一起被分派的线程可以与同一软件应用相关联,或者它们可以与不同软件应用相关联。

典型地,为了最大的吞吐量,就绪线程可以立刻被分派。这可以允许线程尽可能快地结束。一般情况下,对于吞吐量导向的软件应用,这工作得很好。分派线程时的任何延迟可以被视为可能影响软件应用的性能。当一个线程结束它的工作时,它可以将数据写入缓冲区以供下一个线程继续工作。

图4A图示两个示例性线程401和402。每个线程可以在不同时刻被重复地分派。在本实施例中,每次线程被分派,它被称为一个活动。例如,活动405和410可以与在不同时刻被分派的同一线程401相关联。类似地,活动415和420可以与同一线程402相关联。在本实施例中,第二线程402可以依赖于第一线程401,并且只可以在第一线程401完成后立刻被分派。例如,活动415可以在活动405完成后被分派。类似地,活动420可以在活动410完成后被分派。在实时视频软件应用中,可以存在一个捕捉视频的线程、一个编码比特流的线程以及另一个发送出比特流的线程。这些线程可以通过视频帧缓冲区(例如,缓冲区315)和比特流缓冲区(例如,缓冲区305)而一直自然地同步。正常情况下,当数据就绪时,下一个线程将立刻对数据进行工作。

线程被分派(作为一个活动)的时刻和同一线程被分派(作为另一个活动)的下一时刻之间的时段可以被称为循环周期(cycle period)。依赖于软件应用,循环周期可大可小。当循环周期小时,可能存在一些与另一个活动的执行重叠。参照图4A,两个活动405和410来自同一线程401。在本实施例中,活动405和410之间的循环周期400相比于活动405和活动415的组合执行时间来说是小的。因此,在活动410和活动415之间存在执行重叠。活动415在它准备被分派之前可能需要等待活动405完成。这可以是因为活动415的执行依赖于活动405的完成和输出。然而,活动410可以不依赖于活动415的完成,并且因此可以在活动415完成前被分派。注意,这可以导致活动410和活动415之间的执行重叠,如重叠时段490所指示。

活动415可以是唯一正在运行的活动,直到活动410被分派的时刻。这可以意味着,当系统200支持多个逻辑处理器时,只有一个逻辑处理器可以忙于执行活动415,而另一个逻辑处理器可以是空闲的或暂停的,直到活动410被分派。在活动410被分派后,在时段490期间,所述两个逻辑处理器可以忙于并发地执行两个活动410和415。活动415是唯一正在运行的活动的时段可以被称为软件应用的单活动区段(section),并且活动415和活动410并发地运行的时段可以被称为软件应用的多线程化区段。因为存在执行重叠,所以软件应用的完成可以比使用一次运行一个线程的正常处理器来运行软件应用更快。

当循环周期大时,在各活动间可能不存在任何执行重叠。例如,如图4B所图示,线程403可以包括活动455和460,并且线程404可以包括活动465。注意到在本实施例中,活动455和460之间的循环周期450大于活动465和455的总执行时间。因此,在活动460和465之间可以没有执行重叠。在本实施例中,在活动465准备被分派之前,它可能需要等待活动455的完成,但活动460可以不需要等待活动465的完成而被分派。当在各活动间不存在执行重叠时,多线程化系统200可以像正常的单线程化系统一样运转,并且活动可以被视为串行地运行。

图5是根据一个实施方案图示在使用延迟分派方案的多线程化系统中被分派的线程的实施例的框图。对于一个实施方案,资源管理器210可以以协调的方式来分派活动,而不是当活动准备被分派时立刻分派它们。例如,资源管理器210可以协调多个活动(或线程)的分派以增加执行重叠。

图5中的附图图示两个线程501和502的实施例。线程501包括活动505和510。线程502包括活动515和520。在本实施例中,当活动505完成其执行时,活动515可以处于准备被分派状态。所述准备被分派状态可以被称为第一线程状态206,如图2中实施例所描述。然而,资源管理器可以延迟活动515的分派直到活动510准备被分派,而不是在活动505完成后立刻分派活动515。活动515的延迟状态可以被称为第二线程状态215,如图2中实施例所描述。通过延迟,活动510和515可以一起被分派,从而它们可以并发地运行。这被图示为重叠时段525。

在一些情况下,在活动515可以被分派之前,活动515可能必须被延迟多于一个循环周期500,以便执行重叠可以发生。可替换地,如果有另一个活动等待被分派,则活动515的分派可以不需要被延迟。该另一个活动的分派可能之前已经被延迟。在这种情况下,两个活动可以一起被分派。

活动510和515中的一个或两个正在运行的时段可以被称为非暂停时段530。在非暂停时段530期间,系统200可以保持繁忙并且消耗资源。注意非暂停时段530还包括重叠时段525。通过延迟活动515的分派,引入了没有执行的时段。该时段可以被称为暂停或空闲时段535。对于一个实施方案,在暂停时段535期间,系统200可以没那么繁忙,并且因此可以需要较少的资源。例如,当使用支持超线程技术的处理器时,在暂停时段期间对资源的要求可以较低,因为两个逻辑处理器都可以空闲。当逻辑处理器中的一个或两个繁忙时,对资源的要求可以是大致相似的。因此,将一个逻辑处理器的繁忙周期与另一个逻辑处理器的繁忙周期重叠以节约资源是有利的。

对于一个实施方案,可以实现超时方案来避免过度地延迟线程。例如,超时方案可以包括设置预定的延迟量,活动在被分派之前可以在队列中被延迟所述预定的延迟量。对于另一个实施方案,活动可以具有不同的优先级,并且每个优先级可以与被分派前的不同延迟时间相关联。可以注意到,可能存在这样的情况,即使可能不存在正在运行的任何其他活动,活动可能需要不经延迟而被分派。例如,活动可以被标志为“关键的(critical)”,并且每当该活动就绪时,它的分派要立刻进行。

应用状态、线程状态和机器状态

对于一个实施方案,资源管理器210可以评估软件应用的应用状态和线程的线程状态,以确定是否将系统200从一个机器状态转换到另一机器状态。在结合图3B所描述的实施例中,线程可以包括对源自缓冲区305的帧进行解码的活动。对帧进行解码的操作可以直接或间接地影响缓冲区305中的数据量。当缓冲区305的缓冲等级310指示缓冲区305中的数据量低(在低等级标记L1之下),并且缓冲区315的缓冲等级320指示缓冲区315中的数据正常(在低等级标记L2和高等级标记H2之间)时,资源管理器210可以在确定是否分派当前活动前评估系统200中的其他活动。对于一个实施方案,当存在另一个正在运行的活动,并且该活动与当前活动相关(例如对当前帧之前的帧进行解码)时,资源管理器210可以通过缩减可用资源(例如降低应用到处理器的频率/电压)来改变系统200的机器状态。这可以减慢正在运行的活动的执行,并且可以降低耗尽或下溢出缓冲区305的潜在可能性,因为缓冲区305中的数据量已经是低的。

对于另一个实施方案,当存在另一个正在运行的活动并且该活动与当前活动不相关(例如正在运行的活动没有正在对当前帧之前的帧进行解码)时,当前活动的分派可以被延迟。这可以包括例如将当前活动在队列中放置一个或更多个循环周期。通过延迟当前活动的分派,耗尽缓冲区305的潜在可能性可以被降低。

一般地,延迟一个或更多个活动的集合的分派以及缩减可用资源可以减少潜在的缓冲区下溢或上溢状况。延迟一个或更多个活动的集合的分派可以允许更有效地利用同时多线程化处理器上的处理器资源。表2提供上面实施例的概括。

缓冲区305→比特流缓冲等级→低

缓冲区315→未压缩帧缓冲区→正常

    线程状态    动作存在对前面的帧进行解码的另一个活动?    减少CPU资源    排队该解码活动

表2

对于一个实施方案,当缓冲等级310指示缓冲区305中的数据量正常(在低等级标记L1和高等级标记H1之间),并且缓冲等级320指示缓冲区315中的数据量正常(在低等级标记L2和高等级标记H2之间)时,资源管理器210可以在分派当前活动之前评估系统200中的其他活动。当存在另一个正在运行的活动时,或者当存在另一个准备被分派的活动时,当前活动被资源管理器210分派,从而可以存在执行重叠。然而,当不存在其他正在运行的活动时,或者当不存在其他准备被分派的活动时,资源管理器210可以延迟当前活动的分派。在这种情况下,延迟可以不依赖于缓冲区305和315中的数据的当前缓冲等级(因为它们两个都处于正常等级)。然而,延迟可以增加执行重叠的潜在可能性,这可以帮助降低对资源的要求。表3提供上面的实施例的概括。

缓冲区305→比特流缓冲等级→正常

缓冲区315→未压缩帧缓冲等级→正常

                     线程状态  动作存在另一个正在运行的线程?存在另一个准备执行的线程?-  解码当前帧  解码当前帧(分派两者)  排队该解码活动

表3

对于一个实施方案,当缓冲等级310指示缓冲区305中的数据量高(在高等级标记H1之上)并且缓冲区315的当前缓冲等级320指示缓冲区315中的数据正常(在低等级标记L2和高等级标记H2之间)时,资源管理器210可以在分派当前活动之前评估系统200中的其他活动。当存在另一个正在运行的活动时,或者当存在另一个准备被分派的活动时,当前活动可以被分派,从而存在执行重叠。然而,当不存在其他正在运行的活动时,或者当不存在其他准备被分派的活动时,资源管理器210可以分派当前活动,以尽可能快地将数据移出缓冲区305。这是因为缓冲区305中的数据量处于高等级,并且在分派当前活动时任何不必要的延迟可以潜在地导致缓冲区溢出状况发生在缓冲区305上。对于一个实施方案,除分派当前活动之外,资源管理器210还可以增加可用资源(例如增加应用到处理器的频率/电压),以增加数据从缓冲区305中被读取或处理的速率。这将系统200从一个机器状态转换到另一个机器状态,并且可以帮助避免缓冲区305的潜在的缓冲区上溢状况。表4提供上面的实施例的概括。

缓冲区305→比特流缓冲等级→高

缓冲区315→未压缩帧缓冲区→正常

                  线程状态 动作存在另一个正在运行的线程?存在另一个准备执行的线程?- 解码帧 解码帧(分派两者) 解码帧并且增加CPU资 源

表4

对于另一个实施方案,应用状态和/或线程状态可以被灵活地创建,以用于多线程化系统中的资源管理。例如,应用可以被细分为线程形式的子任务。即使应用不是多线程的,这也可以进行。可以为线程建立数据缓冲区,并且数据缓冲区可以被用于暂时的应用数据储存。此外,可以建立缓冲区指示符等级来定义缓冲区上溢和/或下溢状况。随后可以通过相对上溢或下溢指示符来确定当前缓冲区填充等级来监控缓冲区的状态。通过监控缓冲区的状态和/或线程的状态,可以调节多线程化系统中的资源。

图6是根据一个实施方案图示视频解码过程的实施例的图。在框605,帧被接收并且准备被解码。该帧可以从缓冲区(例如图3B中图示的缓冲区305)被接收。在框610,进行测试以确定在未压缩帧缓冲区(例如图3B中的缓冲区315)中是否有足够的未压缩帧。当缓冲区315中没有足够的数据时(例如当前缓冲等级320在低等级标记L2之下),过程可以流向框690,在框690中适当的解码活动被分派来对该帧进行解码。

当(在缓冲区315中)存在足够的未压缩帧时,过程从框610流向框615,在框615中进行测试以确定下一帧是否依赖于当前帧。当存在依赖性时,过程从框615流向框640,在框640中进行测试以确定是否存在另一个正在运行的活动或线程。当存在另一个正在运行的活动时,当前活动被分派来允许执行重叠。

当不存在其他正在运行的活动时,过程从框640流向框645,在框645中进行测试以确定是否存在另一个活动准备被分派。该活动可以是之前已经被延迟的活动。如框660中所示,当存在准备被分派的活动时,当前活动和准备被分派的活动可以一起被分派。

当不存在其他准备被分派的活动时,从框645使当前活动被延迟分派。这可以包括例如将当前活动置入队列中,如框650中所示。当前活动可以在队列中等待,直到另一个活动准备被分派。对于一个实施方案,可以使用预定的时间段来限制活动在队列中等待的时间。对于另一个实施方案,如框655中所示,进行测试来确定当前活动是否是不能被延迟的,并且如果当前活动不能被延迟,当前活动被分派,如框690中所示。

当下一帧不依赖于当前帧时,过程从框615流向框620,在框620中进行测试来确定是否存在准备被解码的另一帧。当存在准备被解码的另一帧时,当前帧和所述另一帧可以一起被解码(例如两个活动一起被分派)。当没有其他帧要被解码时,过程从框620流向框650,在框650中排队操作可以发生,如以上所描述。

这些各种方法的操作可以被计算机系统中的处理器实现,所述处理器执行储存在可以被视为机器可读储存介质的存储器中的计算机程序指令序列。存储器可以是随机访问存储器、只读存储器、例如大容量储存设备的持久性储存存储器,或者这些设备的任何组合。指令序列的执行可以导致处理器进行例如图6的实施例中的那些操作。

指令可以通过网络连接从储存设备或者从一个或更多个其他计算机系统(例如服务器计算机系统)被加载(load)进计算机系统的存储器。指令可以被并发地储存在几个储存设备(例如DRAM和硬盘,例如虚拟存储器)中。因此,这些指令的执行可以直接由处理器进行。在其他情况下,指令可以不由处理器直接进行,或者对处理器来说,它们可以不是直接可执行的。在这些情形下,通过导致处理器执行解释指令的解释器,或通过导致处理器执行将接收到的指令转变成可以直接被处理器执行的指令的编译器,所述执行可以被执行。在其他实施方案中,可以使用硬连线电路来代替指令或与指令组合来实现本发明。例如,资源管理器可以被实现为包括进行上面描述的一个或更多个操作(例如监控应用状态、监控线程状态、调整资源等)的逻辑。因此,本发明不限于硬件电路和软件的任何具体组合,或者不限于被计算机系统执行的指令的任何具体的源。

已经公开了用于管理系统中的资源的方法和系统。通过监控数据的缓冲和协调软件应用的线程的分派,对资源的要求可以被减少或增加。这可以帮助增加处理器空闲时间。

虽然已经参照具体的示例性实施方案描述了本发明,但是,显然可以对这些实施方案可以做出各种修改和改动,而不背离如权利要求书中所阐述的本发明的更宽的精神和范围。例如,虽然本说明书涉及线程和活动的分派,但是被描述的技术还可以被用来调度例如进程、任务、进程段、任务段等的其他实体。并且,所述技术还可以与其他多线程化处理器一起使用,并且所述技术不限于支持超线程技术的处理器。例如,处理器可以是具有双核,以及能够并发地执行多个线程的处理器。因此,本说明书和权利要求书要被视为图示说明性而非限制性的。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号