线程转移向核分配线程的制作方法

文档序号:6350088阅读:140来源:国知局
专利名称:线程转移向核分配线程的制作方法
线程转移向核分配线程相关申请的交叉参考本申请要求2009 年 9 月 11 日提交的题为 “THREAD SHIFT ALLOCATING THREADS TO CORES”的美国专利申请No. 12/557,971的优先权,其全部内容一并在此作为参考。本申请可以与如下美国专利申请有关Wolfe等在2009年4月21日提交的题为“THREAD MAPPING IN MULT I-CORE PROCESSORS”的共同待审的美国专利申请 No. 12/427, 602 ;Wolfe 等在 2009 年 9 月 11 日提交的题为“MAPPING OF COMPUTER THREADS ONTO HETEROGENEOUS RESOURCES”的美国专利申请 No. 12/557, 985 ;和 / 或 Wolfe 等在 2009 年9月11日提交的题为“CACHE PREFILL ON THREADMIGRATI0N”的共同待审的美国专利申请No. 12/557,864,其全部内容一并在此作为参考。
背景技术
本公开涉及多核计算机系统,更具体地,涉及至少部分地基于与多核计算机系统有关的实时计算数据,高效地调整线程的核分配。

发明内容
本公开一般涉及多核计算机处理。具体地,本公开涉及基于实时计算数据调整线程的核分配。本公开的第一方面一般描述了将线程分配给异构处理器核的方法。这种方法可以包括监视与异构处理器核有关的实时计算数据,并至少部分地基于所监视的实时计算数据,将线程分配给异构处理器核。在第一方面的一些示例中,该方法还可以包括由分配的相应的异构处理器核执行线程。在一些示例中,监视实时计算数据可以包括确定何时线程落在线程完成目标截止期限之后。在一些示例中,可以至少部分地基于线程是否已落在线程完成目标截止期限之后,来分配线程。在一些示例中,实时计算数据可以包括对线程正在落在线程完成目标截止期限之后的指示。在第一方面的一些示例中,实时计算数据可以包括每指令周期速率。在一些示例中,可以至少部分地由在时间间隔上完成的每指令时钟周期的总数的比率,来确定每指令周期速率。第一方面的一些示例还可以包括将每指令周期速率与目标每指令周期速率相比较。在这些示例中,可以至少部分地基于每指令周期速率与目标每指令周期速率的比较来分配线程。在一些示例中,分配线程可以包括将线程动态地分配给异构处理器核。在第一方面的一些示例中,该方法可以包括将监视的实时计算数据发送给线程分配软件工具,并基于监视的实时计算数据,利用线程分配工具将线程分配给预定的异构处理器核。在一些示例中,实时计算数据可以包括检查点,检查点指示了在预定时间要将线程从第一异构处理器核分配给第二异构处理器核。在这些示例中,可以部分地基于检查点
4来分配线程。在第一方面的一些示例中,该方法还可以包括将多个线程中的每一个线程独立地分配给异构处理器核。在这些示例中,线程可以包括多个线程,每个线程与实时计算数据相关联。本公开的第二方面一般描述了将线程从第一异构处理器核分配给第二异构处理器核的方法。这些方法可以包括监视与第一异构处理器核关联的时钟周期的总数,监视由第一异构处理器核完成的指令的总数,至少部分地基于在预定时间间隔上完成的每指令时钟周期的总数的比率,计算CPI值,以及至少部分地基于CPI值,将线程分配给第二异构处理器核。在第二方面的一些示例中,该方法还可以包括在分配线程之前,将CPI值与分配线程之前的目标CPI值相比较。在这些示例中,可以至少部分地基于CPI值等于目标CPI 值,来进行分配。一些示例可以包括将CPI值与分配线程之前的目标CPI值相比较。在这些示例中,可以至少部分地基于CPI值超过目标CPI值,来进行分配。在一些示例中,可以在执行与该线程关联的软件应用之前和/或期间,定义目标CPI值。在第二方面的一些示例中,实时计算数据可以包括检查点,检查点指示了在预定时间要将线程从第一异构处理器核分配给第二异构处理器核。在这些示例中,可以部分地基于与检查点关联的预定时间来进行分配。本公开的第三方面一般描述了产品,例如其上存储有机器可读指令的存储介质。 当由处理单元执行时,这种机器可读指令可以使得计算平台监视与处理线程的第一异构处理器核有关的实时计算数据,并至少部分地基于监视的实时计算数据,将线程分配给第二异构处理器核。在第三方面的一些示例中,机器可读指令还可以使得计算平台确定线程是否落在线程完成目标截止期限之后。在这些示例中,可以部分地基于线程是否已落在线程完成目标截止期限之后,来分配线程。在第三方面的一些示例中,产品还可以包括线程分配软件工具,配置为接收实时计算数据,并至少部分地基于实时计算数据,将线程分配给预定的异构处理器核。在一些示例中,机器可读指令还可以使得计算平台至少部分地基于监视的实时计算数据,将线程动态地分配给第二异构处理器核。本公开的第四方面一般描述了多核处理器。这种多核处理器可以包括第一异构处理器核和第二异构处理器核。该多核处理器可以配置为监视与处理线程的第一异构处理器核有关的实时计算数据,至少部分地基于监视的实时计算数据,将线程分配给第二异构处理器核,以及在将线程分配给第二异构处理器核之后,由第二异构处理器核执行线程。在一些示例中,第一处理器核可以具有第一能力,第二处理器核可以具有第二能力,第二能力不同于第一能力,使得多核处理器包括异构硬件。在一些示例中,第一能力和第二能力各自对应于图形资源、数学计算资源、指令集、加速器、SSE、高速缓存大小和/或分支预测器。以上发明内容仅仅是说明性的,而绝不是限制性的。除了上述示例性的各方面、 各实施例和各特征之外,参照附图和以下详细说明,将清楚其他方面、其他实施例和其他特征。


根据以下说明和所附权利要求,结合附图,本公开的前述和其他特征将更加清楚。 应当认识到,这些附图仅仅示出了根据本公开的一些实施例,因此不应被认为是限制本公开范围,通过使用附图以额外的特征和细节来详细描述本公开。在附图中图1是示出了具有多个异构核的示例多核系统的框图;图2是示出了用于将线程分配给多个异构处理器核中的至少一个的示例方法的流程图;图3是示出了将线程从第一异构处理器核分配给第二异构处理器核的示例方法的流程图;图4是示出了包括具有机器可读指令的存储介质的示例产品的示意图;以及图5是示出了全部根据本公开的至少一些实施例配置的、可以布置用于线程分配实施方式的示例计算设备的框图。
具体实施例方式在以下详细说明中,参考作为详细说明的一部分的附图。在附图中,类似符号通常表示类似部件,除非上下文另行指明。在具体实施方式
部分、附图和权利要求书中记载的示例性实施例并不是限制性的。在不脱离在此给出的主题的精神或范围的情况下,可以利用其他实施例,且可以进行其他改变。应当理解,在此一般性记载以及附图中图示的本公开的各方面可以按照在此明确和隐含公开的多种不同配置来设置、替换、组合和设计。本公开尤其涉及与多核计算机系统有关的方法、系统、设备和/或装置,更具体地,涉及至少部分地基于与多核计算机系统有关的实时计算因数,高效地调整线程的核分配。本公开考虑到一些计算机系统可以包括多个处理器核。在具有异构硬件的多核系统中,一些核可以具有另一些核不可用的某些硬件能力。在一些示例计算机系统中,可以将至少一个线程(可以是指令序列,并且可以与其他线程并行执行)分配给适当的核。线程 /核分配可以用来将线程与适当核关联。在一些示例计算机系统中,可以在线程执行期间, 将线程从一个核重新分配给另一个核。虽然本公开一般涉及线程,但是在本公开的范围内包括进程、任务等的映射。在示例实施例中,与线程关联的数据可以用来确定何时应该将线程分配给另一核、以及/或者应该将线程分配给哪个核。例如,系统可以使用与线程有关的实时计算数据,以确定该线程是否落在目标截止期限之后。如果线程落在目标截止期限之后,则例如可以将线程迁移到更快的核。图1是示出了根据本公开至少一些实施例布置的具有多个异构核的示例多核系统的框图。该示例多核系统100可以包括多个处理器核102、104和/或106。在示例实施例中,多核系统100可以包括一个或多个核102、104和/或106,每个核具有不同能力。换言之,多核系统100可以包括异构硬件。例如,一个核102可以包括增强图形资源,另一核 104可以包括增强数学计算资源,另一核106可以包括大容量高速缓存。
如图1所示,软件应用108可以包括多个线程(或进程和/或任务)。为了基于实时计算因数高效地将线程分配到适当核,可以由操作性连接至软件应用108的线程分配系统112来实施此处描述的线程分配方法。在一些实施例中,实时计算监视系统110还可以操作性耦合至线程分配系统112,以辅助高效地将线程114、116和/或118分配给一个或多个核102、104和/或106,下面将更加详细地进行描述。在图1的示例实施例中,线程分配系统112可以将线程分配到适当核。具体地, 线程分配系统112可以将第一线程(线程#1) 114映射到核102,可以将第二线程(线程 #2) 116映射到核102,并且可以将第三线程(线程#3) 118映射到核106。在一些示例实施例中,可以在具有增强图形资源的核上初始地执行可以初始受益于增强图形能力的线程。至少部分地基于线程可能稍后受益于增强数学计算能力的预期, 可以向具有增强数学计算能力的核发送与该线程有关的数据,以完成线程的执行。在一些示例实施例中,核可以包括不同指令集、不同加速器(例如,DSP(数字信号处理器)和/或不同SSE (流式SIMD (单指令多数据)扩展))、大和/或小高速缓存(例如 Ll和L2高速缓存)、不同分支预测器(处理器的用于确定程序的指令流中条件分支是否可能被采用的那些部分)等等。至少部分地基于核之间的这些和/或其他不同之处,不同核可以提供针对某些任务的不同能力。在一些示例实施例中,可以至少部分地基于各个核的硬件能力,将线程分配(例如使用线程分配系统112)给各个核。例如,可以将与大Ll高速缓存(存储器)需求关联的线程分配给具有大Ll高速缓存硬件的核。类似地,可以将与大SSE(指令集)需求关联的线程分配给包括本地SSE硬件实现的核。这些示例是非限制性的,将理解可以至少部分地基于任何硬件特性、指令集、以及/或者核和/或线程的其他特性来分配线程。此外,本公开考虑到如果不基于硬件能力将线程分配给核,则可以使用软件模拟来处理线程,这可能增加该线程的处理时间。在一些示例实施例中,确定是否将线程分配给不同核和/或何时执行这种分配可以包括对执行简档的至少一部分进行评估,该执行简档可以包括与该线程的先前执行有关的数据。在一些示例实施例中,可以使用如美国专利申请公开No. 2007/0050605(其作为参考合并在此)中公开的冻干幽灵页面(freeze-dried ghost page)执行简档产生方法来产生执行简档。该方法可以使用影子处理器(shadow processor),或者在一些实施例中可以使用影子核(shadow core),来预先对线程的至少一部分的执行进行仿真,并产生与该执行有关的性能统计和测量。在一些示例实施例中,处理器和/或高速缓存可以配置为在程序执行时收集信息。例如,这种信息可以包括程序参照哪些高速缓存行。在一些示例实施例中,可以评估有关高速缓存使用的数据,以确定应该替换哪些线程(例如,通过对线程处理剩余的行数进行计数)。在一些示例实施例中,性能计数器可以配置为跟踪运行线程的行收回,和/或可以使用该信息来决定可以清空哪些任务以开始优先级更高的任务。性能计数器还可以配置为跟踪自任务开始的行收回。示例多核系统可以包括根据本公开配置使用的性能计数器。多种核可以操作性耦合至性能计数器。性能计数器可以配置为存储计数,该计数指示了例如计算机系统内硬件有关的活动的数目。可以使用性能计数器收集的数据来至少部分地确定线程分配(例如从
7一个核到另一个核)。一些示例实施例可以考虑到针对具体任务的高速缓存占用面积的大小。在一些示例实施例中,可以使用布卢姆滤波器(Bloom filter)来表征针对线程的高速缓存占用面积有多大。示例的布卢姆滤波器可以是空间高效的概率数据结构,该数据结构可以用于测试元素是否是集合的成员。当使用一些示例布卢姆滤波器时,假阳性(false positive)是可能的,但是不会存在假阴性(false negative)。在一些示例布卢姆滤波器中,元素可以添加到集合,但是不可以去除(尽管可以利用计数滤波器来处理该问题)。在一些示例布卢姆滤波器中,添加到集合的元素越多,假阳性的概率就越大。空布卢姆滤波器可以是全部设定为 0的m个比特的比特数组。此外,可以定义k个不同散列函数,每一个散列函数可以按照均勻随机分布将某个集合元素映射或散列计算到m个数组位置之一。为了添加元素,可以将该元素馈送到k个散列函数中的每一个,以得到k个数组位置。这些位置上的比特可以设定为1。为了查询元素(例如,测试该元素是否在集合中),可以将该元素馈送到k个散列函数中的每一个,以得到k个数组位置。在一些示例布卢姆滤波器中,如果这些位置中任何位置上的比特为0,则该元素不在集合中;如果元素在集合中,则在插入该元素时k个数组位置处的所有比特应该已设定为1。在一些示例布卢姆滤波器中,如果k个数组位置处的所有比特是1,则该元素在集合中,或者在插入其他元素期间这些比特被设定为1。在一些示例实施例中,可以使用布卢姆滤波器来跟踪当前线程正在使用高速缓存的哪些部分。例如,可以在线程首次被调度到核上时,清空滤波器。每次线程使用高速缓存行时,可以将其添加到滤波器集合。可以使用查询序列来估计线程占用面积,以评估高速缓存数据迁移的成本。在一些示例实施例中,可以使用滤波器中比特“ 1 ”的数目的简单群体计数(population count),来估计线程的高速缓存占用面积。在一些示例实施例中,可以使用计数布卢姆滤波器。在计数布卢姆滤波器中,每个滤波器元素可以是计数器,当线程使用高速缓存行时,该计数器递增,当高速缓存行无效时,该计数器递减。在一些示例实施例中,可以预取用于线程迁移的高速缓存数据。可以由现有技术已知的硬件预取器来执行该预取。一个这种预取器公开在美国专利No. 7,318,125中,其作为参考合并在此。即,当系统准备将线程发送给新核时,可以将来自当前核的参考发送给该新核,以准备迁移。因此,可以在准备迁移时对该新核进行“热身”。在一些示例实施例中, 可以由该新核预取与要迁移的线程有关的基本上所有的数据。在一些示例实施例中,可以由该新核预取与要迁移的线程有关的数据的一部分。例如,可以预取高速缓存未命中、命中和/或行收回。在一些示例实施例中,不是将数据高速缓存在新核中(并且从而采用最终可能不需要的数据填充了新核),而是例如可以将数据预取到辅助/流缓冲器。如本文使用的,“高速缓存命中”可以指引用已经高速缓存的数据的成功尝试,以及对应的数据。如本文使用的,“高速缓存未命中”可以指引用高速缓存中未找到的数据的尝试,以及对应的数据。如本文使用的,“行收回”可以指从高速缓存中移除高速缓存的行, 以便在高速缓存中为不同数据腾出空间。行收回也可以包括回写操作,从而在从高速缓存中移除经修改的数据之前,将经修改的数据写入主存储器或更高的高速缓存级。图2是示出了根据本公开至少一些实施例布置的用于将线程分配给多个异构处理器核中的至少一个上的示例方法200的流程图。示例方法200可以包括处理操作202和 /或204中的一个或多个。处理可以开始于操作202,其可以包括监视与一个或多个异构处理器核有关的实时计算数据,每个异构处理器核适合于处理该线程。处理可以从操作202 流向操作204。操作204可以包括至少部分地基于所监视的实时计算数据,将线程分配给异构处理器核中的一个或多个。在一些实施例中,监视操作202可以包括确定线程是否落在线程完成目标截止期限之后,分配操作204可以至少部分地基于线程是否已落在线程完成目标截止期限之后。 在一些其他实施例中,实时计算数据可以包括对线程正落在线程完成目标截止期限之后的确定。在一些实施例中,监视操作202 (可以由另一处理器核上的独立的硬件执行)可以与线程处理并发地进行,或者可以间歇地进行(即,在检查点或调度中断处进行)。可以在任何时间执行线程或将其挂起(即,暂停)。在一些示例中,线程可以具有完成截止期限,并且很可能在一个核上执行,直到它被重新分配给另一核。在一些实施例中,可以并发地评估实时数据。在一些示例中,可以将线程挂起,可以评估实时数据,并且可以将线程重新分配给相同核或不同核。在示例实施例中,实时计算数据可以包括每指令周期速率,可以至少部分地将每指令周期速率确定为预定时间间隔上完成的每指令时钟周期的总数的比率。在另一示例实施例中,可以将每指令周期速率与目标每指令周期速率相比较,并且分配操作204可以至少部分地基于每指令周期速率与目标每指令周期速率的比较。在又一示例实施例中,分配操作2045可以动态地进行。在又一实施例中,实时计算数据可以包括至少一个检查点,该检查点指示了在预定时间将线程从一个异构处理器核分配给另一异构处理器核,并且分配操作204可以至少部分地基于该至少一个检查点。在另一实施例中,方法200还可以包括向线程分配软件工具发送实时计算数据。 线程分配软件工具可以配置为将线程分配给预定的异构处理器核。在另一实施例中,线程可以是多个线程,其中每个线程可以与实时计算数据关联,可以将每个线程独立地分配给异构处理器核。图3是示出了根据本公开至少一些实施例布置的将线程从第一异构处理器核分配给第二异构处理器核的示例方法300的流程图。该示例方法300可以包括处理操作302、 304和/或306中的一个或多个。处理可以开始于操作302,其可以包括监视与第一异构处理器核处理线程相关联的的时钟周期的总数、以及/或者由第一异构处理器核完成的指令的总数中的一个或多个。处理可以从操作302继续到操作304,操作304可以包括至少部分地基于在时间间隔上完成的每指令时钟周期的总数的比率,计算每指令周期(CPI)值。然后处理从操作304继续到操作306,操作306可以包括至少部分地基于CPI值,将线程分配给第二异构处理器核。在示例实施例中,该方法还可以包括在分配操作308之前,将CPI值与目标CPI值相比较,分配操作308可以至少部分地基于CPI值大致等于目标CPI值。在另一实施例中, 该方法还可以包括在分配操作308之前,将CPI值与目标CPI值相比较,分配操作308可以至少部分地基于CPI值超过目标CPI值。在另一示例中,可以在执行与该线程关联的软件应用之前或期间,定义目标CPI值。
9
在又一实施例中,实时计算数据可以包括一个或多个检查点,该检查点配置为指示在预定时间将线程从一个异构处理器核分配给另一异构处理器核。以这种方式,分配操作308可以至少部分地基于与至少一个检查点关联的预定时间。图4是根据本公开至少一些实施例布置的包括具有机器可读指令的存储介质400 的示例产品的示意图。当由一个或多个处理单元执行时,机器可读指令在操作时使得计算平台异构处理器监视与处理线程的第一异构处理器核有关的实时计算数据(操作402);以及至少部分地基于实时计算数据将线程分配给第二异构处理器核(操作404)。在一些实施例中,机器可读指令还可以配置为在操作时使得计算平台确定线程是否正落在线程完成目标截止期限之后。以这种方式,分配操作404可以至少部分地基于线程是否已落在线程完成目标截止期限之后。在另一实施例中,该产品还可以包括线程分配软件工具,配置为接收实时计算数据。线程分配软件工具可以配置为将线程分配给预定的异构处理器核。在一些实施例中,机器可读指令还可以配置为在操作时使得计算平台至少部分地基于所监视的实时计算数据,将线程动态地分配给另一异构处理器核。在一些示例实施例中,多核处理器可以包括第一异构处理器核和第二处理器核。 这种多核处理器可以配置为监视与处理线程的第一异构处理器核有关的实时计算数据,至少部分地基于监视的实时计算数据,将线程分配给第二异构处理器核,以及在将线程分配给第二异构处理器核之后,由第二异构处理器核执行线程。图5是示出了根据本公开至少一些实施例的布置用于线程分配的示例计算设备 900的框图。在非常基本的配置901中,计算设备900可以典型地包括一个或多个处理器 910、以及系统存储器920。存储器总线930可以用于处理器910与系统存储器920之间的
ififn。根据所期望的配置,处理器910可以是任何类型的,包括但不限于微处理器 (μ P)、微控制器(μ C)、数字信号处理器(DSP)或其任何组合。处理器910可以包括一级或多级缓存(例如,一级高速缓存911和二级高速缓存912)、处理器核913、以及寄存器914。 处理器核913可以包括算术逻辑单元(ALU)、浮点单元(FPU)、数字信号处理核(DSP核)或其任何组合。存储器控制器915也可以与处理器910—起使用,或者在一些实施方式中,存储器控制器915可以是处理器910的内部部件。根据所期望的配置,系统存储器920可以是任何类型的,包括但不限于易失性存储器(如RAM)、非易失性存储器(如ROM、闪存等)或其任何组合。系统存储器920可以包括操作系统921、一个或多个应用程序922和程序数据924。应用程序922可以包括线程分配算法923,其可以布置为监视实时计算数据,并至少部分地基于所监视的实时计算数据, 将线程分配给至少一个异构硬件部件。程序数据拟4可以包括线程分配数据925,该数据可以用于将线程分配到适当的异构硬件部件。在一些示例中,应用程序922可以布置为根据本文所述的多种方法,在操作系统921上利用程序数据拟4操作,使得可以高效地将线程分配给适当的处理器核。这里所描述的基本配置在图5中由虚线901内的那些部件来图示。计算设备900可以具有额外特征或功能以及额外接口,以便于基本配置901与任何所需设备和接口之间进行通信。例如,总线/接口控制器940可以便于基本配置901与一个或多个数据存储设备950之间经由存储接口总线941进行通信。数据存储设备950可以是可移除存储设备951、不可移除存储设备952或其组合。可移除存储设备和不可移除存储设备的示例包括磁盘设备(如软盘驱动器和硬盘驱动器(HDD))、光盘驱动器(如紧凑型光盘(CD)驱动器或数字通用光盘(DVD)驱动器)、固态驱动器(SSD)以及磁带驱动器,这仅仅是极多例子中的一小部分。示例计算机存储介质可以包括以用于信息存储的任何方法和技术实现的易失性和非易失性、可移除和不可移除介质,如计算机可读指令、数据结构、程序模块或其他数据。系统存储器920、可移除存储设备951和不可移除存储设备952均是计算机存储介质的示例。计算机存储介质包括但不限于RAM、ROM、EEPR0M、闪存或其他存储器技术, CD-ROM、数字通用光盘(DVD)或其他光存储设备,磁盒、磁带、磁盘存储设备或其他磁存储设备,或可以用于存储所需信息并可以由计算设备900访问的任何其他介质。任何这种计算机存储介质可以是设备900的一部分。计算设备900还可以包括接口总线942,以便于各种接口设备(例如,输出接口、 外围设备接口和通信接口)经由总线/接口控制器940与基本配置901进行通信。示例输出设备960包括图形处理单元961和音频处理单元962,其可被配置为经由一个或多个A/ V端口 963与多种外部设备(如显示器或扬声器)进行通信。示例外围设备接口 970包括串行接口控制器971或并行接口控制器972,它们可被配置为经由一个或多个I/O端口 973 与外部设备(如输入设备,例如键盘、鼠标、笔、语音输入设备、触摸输入设备等)或其他外围设备(例如,打印机、扫描仪等)进行通信。示例通信设备980包括网络控制器981,其可以被设置为便于经由一个或多个通信端口 982与一个或多个其他计算设备990通过网络通信进行通信。该通信连接可以是通信介质的一个示例。通信介质典型地可以由调制数据信号(如载波或其他传输机制)中的计算机可读指令、数据结构、程序模块或其他数据来体现,并可以包括任何信息传送介质。“调制数据信号”可以是设置或改变信号的一个或多个特性而在该信号中实现信息编码的信号。例如,但并非限制性地,通信介质可以包括有线介质(如有线网络或直接有线连接)、以及无线介质(例如声、射频(RF)、红外(IR)和其他无线介质)。这里所使用的术语计算机可读介质可以包括存储介质和通信介质。计算设备900可以实现为小型便携式(或移动)电子设备的一部分,如蜂窝电话、 个人数据助理(PDA)、个人媒体播放设备、无线web浏览设备、个人头戴式耳机设备、专用设备或包括任何上述功能的混合设备。计算设备900也可以实现为个人计算机,包括膝上型计算机和非膝上型计算机配置。本公开所述的主题有时说明不同部件包含在不同的其他部件内或者与不同的其他部件相连。应当理解,这样描述的架构只是示例,事实上可以实现许多能够实现相同功能的其他架构。在概念上,有效地“关联”用以实现相同功能的部件的任何设置,从而实现所需功能。因此,这里组合任何两个部件以实现特定功能可以被视为彼此“关联”从而实现所需功能,而无论架构或中间部件如何。同样,任何两个如此关联的部件也可以看作是彼此“操作性连接”或“操作性耦合”以实现所需功能,且能够如此关联的任何两个部件也可以被视为彼此“可操作性耦合”以实现所需功能。可操作性耦合的具体示例包括但不限于物理上可配对和/或物理上交互的部件,和/或无线交互和/或可无线交互的部件,和/或逻辑交互和/或可逻辑交互的部件。至于本文中任何关于复数和/或单数术语的使用,本领域技术人员可以从复数形式转换为单数形式,和/或从单数形式转换为复数形式,以适合具体环境和/或应用。为清楚起见,在此明确提出各种单数形式/复数形式的互换。本领域技术人员应当理解,一般而言,所使用的术语,特别是所附权利要求中(例如,在所附权利要求的主体部分中)使用的术语,一般地应理解为“开放”术语(例如,术语 “包括”应解释为“包括但不限于”,术语“具有”应解释为“至少具有”等)。本领域技术人员还应理解,如果意在所引入的权利要求中标明具体数目,则这种意图将在该权利要求中明确指出,而在没有这种明确标明的情况下,则不存在这种意图。例如,为帮助理解,所附权利要求可能使用了引导短语“至少一个”和“一个或多个”来引入权利要求中的详述。然而, 这种短语的使用不应被解释为暗示着由不定冠词“一”或“一个”引入的权利要求特征将包含该特征的任何特定权利要求限制为仅包含一个该特征的实施例,即便是该权利要求既包括引导短语“一个或多个”或“至少一个”又包括不定冠词如“一”或“一个”(例如,“一”和 /或“一个”应当被解释为意指“至少一个”或“一个或多个”);在使用定冠词来引入权利要求中的特征时,同样如此。另外,即使明确指出了所引入权利要求特征的具体数目,本领域技术人员应认识到,这种列举应解释为意指至少是所列数目(例如,不存在其他修饰语的短语“两个特征”意指至少两个该特征,或者两个或更多该特征)。另外,在使用类似于“A、 B和C等中至少一个”这样的表述的情况下,一般来说应该按照本领域技术人员通常理解该表述的含义来予以解释(例如,“具有A、B和C中至少一个的系统”应包括但不限于单独具有A、单独具有B、单独具有C、具有A和B、具有A和C、具有B和C、和/或具有A、B、C的系统等)。在使用类似于“A、B或C等中至少一个”这样的表述的情况下,一般来说应该按照本领域技术人员通常理解该表述的含义来予以解释(例如,“具有A、B或C中至少一个的系统”应包括但不限于单独具有A、单独具有B、单独具有C、具有A和B、具有A和C、具有B和 C、和/或具有A、B、C的系统等)。本领域技术人员还应理解,实质上任何表示两个或更多替代项目的转折连词和/或短语,无论是在说明书、权利要求书还是附图中,都应被理解为给出了包括这些项目之一、这些项目任一个、或两个项目的可能性。例如,短语“A或B”应当被理解为包括“A”或“B”、或“A和B”的可能性。尽管已经在此公开了多个方案和实施例,但是本领域技术人员应当明白其他方案和实施例。本文公开的多个方案和实施例是出于说明性的目的,而不是限制性的,本公开的真实范围和精神由所附权利要求指出。
权利要求
1.一种将线程分配给一个或多个异构处理器核的方法,所述方法包括 监视与所述一个或多个异构处理器核有关的实时计算数据;以及至少部分地基于所监视的实时计算数据,将线程分配给异构处理器核中的一个或多个。
2.根据权利要求1所述的方法,还包括 由相应的分配的异构处理器核执行线程。
3.根据权利要求1所述的方法,其中,监视实时计算数据包括确定何时线程落在线程完成目标截止期限之后;以及其中,至少部分地基于线程是否已落在线程完成目标截止期限之后,来分配线程。
4.根据权利要求1所述的方法,其中,实时计算数据包括对线程正在落在线程完成目标截止期限之后的指示。
5.根据权利要求1所述方法,其中,实时计算数据包括每指令周期速率。
6.根据权利要求5所述的方法,还包括至少部分地由在时间间隔上完成的每指令时钟周期的总数的比率,来确定每指令周期速率。
7.根据权利要求6所述的方法,还包括将每指令周期速率与目标每指令周期速率相比较;以及其中,至少部分地基于每指令周期速率与目标每指令周期速率的比较来分配线程。
8.根据权利要求1所述的方法,其中,分配线程包括将线程动态地分配给一个或多个异构处理器核。
9.根据权利要求1所述的方法,还包括将监视的实时计算数据发送给线程分配工具软件,并基于监视的实时计算数据,利用线程分配工具将线程分配软件给预定的一个异构处理器核。
10.根据权利要求1所述的方法,其中,实时计算数据包括一个或多个检查点,所述检查点指示在预定时间要将线程从第一异构处理器核分配给第二异构处理器核,其中部分地基于所述一个或多个检查点来分配线程。
11.根据权利要求1所述的方法,还包括将多个线程中的每一个线程独立地分配给异构处理器核中的一个或多个,其中线程包括多个线程,所述多个线程中的每个线程与实时计算数据相关联。
12.—种将线程从第一异构处理器核分配给第二异构处理器核的方法,所述方法包括监视与第一异构处理器核关联的时钟周期的总数; 监视由第一异构处理器核完成的指令的总数;至少部分地基于在预定时间间隔上完成的每指令时钟周期的总数的比率,计算CPI值;至少部分地基于CPI值,将线程分配给第二异构处理器核。
13.根据权利要求12所述的方法,还包括 在分配线程之前,将CPI值与目标CPI值相比较;其中,至少部分地基于CPI值等于目标CPI值来进行分配操作。
14.根据权利要求12所述的方法,还包括在分配线程之前,将CPI值与目标CPI值相比较;其中,至少部分地基于CPI值超过目标CPI值来进行分配操作。
15.根据权利要求12所述的方法,其中,在执行与该线程关联的软件应用之前,定义目标CPI值。
16.根据权利要求12所述的方法,其中,在执行与该线程关联的软件应用期间,定义目标CPI值。
17.根据权利要求12所述的方法,其中,实时计算数据包括至少一个检查点,所述检查点指示在预定时间将线程从第一异构处理器核分配给第二异构处理器核;以及其中,部分地基于与所述至少一个检查点关联的预定时间来进行分配操作。
18.一种产品,包括其上存储有机器可读指令的存储介质,当由一个或多个处理单元执行时,机器可读指令在操作时使得计算平台监视与处理线程的第一异构处理器核有关的实时计算数据;以及至少部分地基于监视的实时计算数据,将线程分配给第二异构处理器核。
19.根据权利要求18所述的产品,其中,机器可读指令还在操作时使得计算平台确定线程是否落在线程完成目标截止期限之后;以及其中,至少部分地基于线程是否已落在线程完成目标截止期限之后来分配线程。
20.根据权利要求18所述的产品,还包括线程分配软件工具,配置为接收实时计算数据,该线程分配软件工具配置为至少部分地基于实时计算数据,将线程分配给预定的一个异构处理器核。
21.根据权利要求18所述的产品,其中,机器可读指令还在操作时使得计算平台至少部分地基于监视的实时计算数据,将线程动态地分配给第二异构处理器核。
22.—种多核处理器,包括第一异构处理器核;以及第二异构处理器核;其中,所述多核处理器配置为监视与处理线程的第一异构处理器核有关的实时计算数据,至少部分地基于监视的实时计算数据,将线程分配给第二异构处理器核,以及在将线程分配给第二异构处理器核之后,由第二异构处理器核执行线程。
23.根据权利要求22所述的多核处理器,其中,第一异构处理器核具有第一能力,第二异构处理器核具有第二能力,第二能力不同于第一能力,使得多核处理器包括异构硬件。
24.根据权利要求23所述的多核处理器,其中,第一能力和第二能力各自对应于以下至少之一图形资源、数学计算资源、指令集、加速器、SSE、高速缓存大小和/或分支预测
全文摘要
本发明一般地描述了将线程分配给异构处理器核的技术。示例技术可以包括监视与异构处理器核处理线程有关的实时计算数据,至少部分地基于实时计算数据,将线程分配给异构处理器核,以及/或者由相应的分配的异构处理器核执行线程。
文档编号G06F9/46GK102473113SQ201080035189
公开日2012年5月23日 申请日期2010年6月4日 优先权日2009年9月11日
发明者安德鲁·乌尔夫, 托马斯·M·康特 申请人:英派尔科技开发有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1