CN102473112B - 关于线程迁移的高速缓存预填充方法、产品与系统 - Google Patents

关于线程迁移的高速缓存预填充方法、产品与系统 Download PDF

Info

Publication number
CN102473112B
CN102473112B CN201080035185.XA CN201080035185A CN102473112B CN 102473112 B CN102473112 B CN 102473112B CN 201080035185 A CN201080035185 A CN 201080035185A CN 102473112 B CN102473112 B CN 102473112B
Authority
CN
China
Prior art keywords
thread
processor core
cache
core
data
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
CN201080035185.XA
Other languages
English (en)
Other versions
CN102473112A (zh
Inventor
安德鲁·乌尔夫
托马斯·M·康特
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.)
Empire Technology Development LLC
Original Assignee
Empire Technology Development LLC
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 Empire Technology Development LLC filed Critical Empire Technology Development LLC
Publication of CN102473112A publication Critical patent/CN102473112A/zh
Application granted granted Critical
Publication of CN102473112B publication Critical patent/CN102473112B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • 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
    • 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

Abstract

本申请一般地公开了在从第一核向第二核迁移线程之前对第二核的关联高速缓存进行预填充的技术。本公开考虑到一些计算机系统可以包括多个处理器核,一些核可以具有与其他核不同的硬件能力,为了将线程分配给适当核,可以利用线程/核映射,在一些情况下,可以将线程从一个核重新分配至另一核。在概率预期到要将线程从第一核迁移到第二核时,可以预填充与第二核关联的高速缓存(例如,可以在线程被重新调度到第二核之前采用一些数据填充)。该高速缓存可以是例如第二核的本地高速缓存和/或关联的缓冲器高速缓存。

Description

关于线程迁移的高速缓存预填充方法、产品与系统
相关申请的交叉参考
本申请要求2009年9月11日提交的题为“CACHE PREFILL ON THREAD MIGRATION”的美国专利申请No.12/557,864的优先权,其全部内容一并在此作为参考。
本申请可以与如下美国专利申请有关:Wolfe等在2009年4月21日提交的题为“THREAD MAPPING IN MULTI-CORE PROCESSORS”的共同待审的美国专利申请No.12/427,602;Wolfe等在2009年9月11日提交的题为“THREAD SHIFT:ALLOCATING THREADS TOCORES”的美国专利申请No.12/557,971;和/或Wolfe等在2009年9月11日提交的题为“MAPPING OF COMPUTER THREADS ONTO HETEROGENEOUS RESOURCES”的共同待审的美国专利申请No.12/557,985,其全部内容一并在此作为参考。
背景技术
本公开一般涉及具有异构硬件的多核计算机系统,更具体地,涉及预期线程在核之间迁移而传送数据。
发明内容
本公开一般涉及多核计算机处理。具体地,本公开涉及在多核处理器系统的处理器核之间迁移线程。
本公开的第一方面一般描述了将线程从第一处理器核向第二处理器核迁移的方法。这些方法可以包括:预期要将线程从第一处理器核(与第一高速缓存关联)向第二处理器核(与缓冲器和/或第二高速缓存关联)迁移。这些方法还可以包括:将与线程关联的数据从第一高速缓存传送至缓冲器和/或第二高速缓存,以及在传送与线程关联的数据之后,将线程从第一处理器核迁移到第二处理器核。
在第一方面的一些示例中,该方法还可以包括:在预期要迁移线程之前,在第一处理器核上至少部分地执行线程。一些示例还可以包括:在迁移线程之后,在第二处理器核上至少部分地执行线程识别。
在第一方面的一些示例中,数据可以包括与线程关联的高速缓存未命中、高速缓存命中和/或高速缓存行收回。
在一些示例中,第二处理器核可以与第二高速缓存相关联。在这些示例中,传送数据可以包括:从第一高速缓存向第二高速缓存传送数据。在第一方面的一些示例中,第二高速缓存可以包括与线程关联的现有数据。在这些示例中,传送数据可以包括传送与线程关联的新数据。
在第一方面的一些示例中,第二处理器核可以与缓冲器关联。在这些示例中,传送数据可以包括从第一高速缓存向缓冲器传送数据。
在一些示例中,预期要将线程迁移至第二处理器核可以包括确定至少存在线程要被迁移到第二处理器核的阈值概率。在一些示例中,预期要将线程迁移至第二处理器核可以至少部分地基于第二处理器核的硬件能力。
本公开的第二方面一般描述了产品,例如其上存储有机器可读指令的存储介质。当由处理单元执行时,这种机器可读指令可以使得计算平台预测线程将被从第一处理器核重新调度至第二处理器核,在与第二核关联的存储器中存储与线程关联的数据,并在第二核关联的存储器中存储了与线程关联的数据之后,将线程从第一核重新调度到第二核。
在一些示例中,与线程关联的数据可以是与线程关联的新数据,存储器可以包括与线程关联的现有数据。一些示例可以使得计算平台至少部分地基于线程将被重新调度的概率,来预测线程将被重新调度。
在第二方面的一些示例中,与第一处理器核关联的硬件能力可以不同于与第二处理器核关联的硬件能力。在这种示例中,指令可以使得计算平台至少部分地基于与第一处理器核关联的硬件能力、与第二处理器核关联的硬件能力、和/或与线程关联的执行特性,预测线程将被重新调度。
在第二方面的一些示例中,存储器可以包括高速缓存和/或缓冲器。在第二方面的一些示例中,指令可以使得计算平台在与线程关联的基本上所有数据存储在与第二核关联的存储器中之后,将线程从第一核重新调度至第二核。
本公开的第三方面一般描述了预填充高速缓存的方法。这些示例可以包括:识别线程要迁移至的处理器核;将与线程关联的数据传送至与线程要迁移至的处理器核关联的高速缓存和/或缓冲器;以及将线程迁移至所述线程要迁移至的处理器核。
在第三方面的一些示例中,传送数据可以基本上在迁移线程之前完成。在一些示例中,可以至少部分地基于使用与处理器核关联的性能计数器而收集的信息,来识别线程要迁移至的处理器核。在一些示例中,使用性能计数器收集的信息可以包括与处理器核上运行的各个单独线程关联的行收回的数目。
在第三方面的一些示例中,可以至少部分地基于与线程关联的实时计算信息,来识别线程要迁移至的处理器核。在这些示例中,当实时计算信息指示线程落在目标截止期限之后时,可以将线程迁移到更快的处理器核。在一些示例中,传送与线程关联的数据可以包括:将数据从与当前处理器核关联的第一高速缓存传送至与线程要迁移至的处理器核关联的第二高速缓存。
本公开的第四方面一般描述了多核处理器。这种多核处理器可以包括第一处理器核、与第一处理器核关联的第一高速缓存、第二处理器核、以及与第二处理器核关联的第二高速缓存和/或缓冲器。多核系统可以配置为将数据从第一高速缓存传送至第二高速缓存和/或缓冲器,随后将线程从第一处理器核迁移至第二处理器核,该线程与所述数据关联。
在一些示例中,第一处理器核可以具有第一能力,第二处理器核可以具有第二能力,第二能力不同于第一能力,使得多核处理器包括异构硬件。在一些示例中,第一能力和第二能力各自对应于图形资源、数学计算资源、指令集、加速器、SSE、高速缓存大小和/或分支预测器。在一些示例中,数据可以包括与线程关联的高速缓存未命中、高 速缓存命中和/或高速缓存行收回。
以上发明内容仅仅是说明性的,而绝不是限制性的。除了上述示例性的各方面、各实施例和各特征之外,参照附图和以下详细说明,将清楚其他方面、其他实施例和其他特征。
附图说明
根据以下说明和所附权利要求,结合附图,本公开的前述和其他特征将更加清楚。应当认识到,这些附图仅仅示出了根据本公开的一些实施例,因此不应被认为是限制本公开范围,通过使用附图以额外的特征和细节来详细描述本公开。
在附图中:
图1是示出了示例多核系统的框图;
图2是示出了包括性能计数器的示例多核系统的框图;
图3是示出了用于将线程从第一处理器核迁移至第二处理器核的示例方法的流程图;
图4是示出了包括具有机器可读指令的存储介质的示例产品的示意图;
图5是示出了用于预填充高速缓存的示例方法的流程图;以及
图6是示出了全部根据本公开的至少一些实施例配置的、可以布置用于高速缓存预填充实施方式的示例计算设备的框图。
具体实施方式
在以下详细说明中,参考作为详细说明的一部分的附图。在附图中,类似符号通常表示类似部件,除非上下文另行指明。在具体实施方式部分、附图和权利要求书中记载的示例性实施例并不是限制性的。在不脱离在此给出的主题的精神或范围的情况下,可以利用其他实施例,且可以进行其他改变。应当理解,在此一般性记载以及附图中图示的本公开的各方面可以按照在此明确和隐含公开的多种不同配置来设置、替换、组合和设计。
本公开尤其涉及与多核计算机有关的方法、系统、设备和/或装置, 更具体地,涉及预期线程在核之间迁移而传送数据。
本公开考虑到一些计算机系统可以包括多个处理器核。在具有异构硬件的多核系统中,一些核可以具有另一些核不可用的某些硬件能力。示例的核可以与高速缓存相关联,高速缓存可以包括其中可以存储被频繁访问的数据以用于快速访问的临时存储区。例如,这种高速缓存可以是本地高速缓存和/或关联的缓冲器高速缓存。在一些示例计算机系统中,可以将至少一个线程(可以是指令序列,并且可以与其他线程并行执行)分配给适当的核。线程/核映射可以用来将线程与适当核关联。在一些示例计算机系统中,可以在线程执行完成之前,将线程从一个核重新分配给另一个核。
本公开描述了在将线程从第一核重新调度到第二核时,可以预填充与第二核关联的高速缓存。换言之,可以在将线程重新调度到第二核之前,采用线程有关数据至少部分地填充与第二核关联的高速缓存。
图1是示出了根据本公开至少一些实施例布置的示例多核系统100的框图。该示例多核系统100可以包括多个处理器核101、102、103和/或104。各个单独的核101、102、103和/或104可以与一个或多个高速缓存111、112、113和/或114、以及/或者缓冲器128相关联。在示例实施例中,多核系统100可以包括一个或多个核101、102、103和/或104,每个核具有不同能力。换言之,多核系统100可以包括异构硬件。例如,核101和102可以包括增强图形资源,和/或核103和104可以包括增强数学计算资源。
在一个示例实施例中,可以在核101上初始地执行可以初始受益于增强图形能力的线程120。至少部分地基于线程120可能稍后受益于增强数学计算能力这一预期,可以将关于线程120的数据122预填充到高速缓存114中,并且可以将线程120重新调度至核104,以完成线程的执行。类似地,可以在核103上初始地执行可以初始受益于增强数学计算能力的线程124。至少部分地基于线程124可能稍后受益于增强图形能力这一预期,可以将关于线程124的数据126预填充到缓冲器128中,并且可以将线程124重新调度至核102。在该示例实施例中,可以分别在将线程120和124重新调度至核104和102之 前,分别将数据122和126中的一个或多个填充到高速缓存114和/或缓冲器128中。
在一些示例实施例中,核可以包括不同指令集、不同加速器(例如,DSP(数字信号处理器)和/或不同SSE(流式SIMD(单指令多数据)扩展))、大和/或小高速缓存(例如L1和L2高速缓存)、不同分支预测器(处理器的用于确定程序的指令流中条件分支是否可能被采用的那些部分)等等。至少部分地基于核之间的这些和/或其他不同之处,不同核可以提供针对某些任务的不同能力。
在一些示例实施例中,一些线程可以与一个或多个执行特性相关联,执行特性可以由例如一个或多个性能计数器收集的信息来表达或者基于该信息。在一些示例实施例中,线程映射可以至少部分地基于一个或多个执行特性。
在一些示例实施例中,可以至少部分地基于各个核的硬件能力,将线程映射到各个核。例如,可以将与大L1高速缓存(存储器)需求关联的线程映射到具有大L1高速缓存硬件的核。类似地,可以将与大SSE(指令集)需求关联的线程映射到包括本地SSE硬件实现的核。这些示例是非限制性的,将理解可以至少部分地基于任何硬件特性、指令集、以及/或者核和/或线程的其他特性来映射线程。
在一些示例实施例中,线程执行特性可以基于该线程中运行的程序阶段而随时间变化。例如,线程可以原始地具有大L1高速缓存需求,但是可以稍后具有最小L1高速缓存需求。可以在线程执行期间,在不同时间将线程映射到不同核,以提高性能。例如,可以在L1需求较高时将线程映射到包括相对较大L1高速缓存的核,以及/或者可以在L1需求较低时将线程映射到具有较小L1高速缓存的核。
在一些示例实施例中,确定是否将线程迁移到不同核和/或何时执行这种迁移可以包括:对执行简档的至少一部分进行评估,该执行简档可以包括与该线程的先前执行有关的数据。在一些示例实施例中,可以使用如美国专利申请公开No.2007/0050605(其作为参考合并在此)中公开的冻干幽灵页面(freeze-dried ghost page)执行简档产生方法来产生执行简档。该方法可以使用影子处理器(shadow processor),或者在一些实施例中可以使用影子核(shadow core),来预先对线程的至少一部分的执行进行仿真,并产生与该执行有关的性能统计和测量。
在一些示例实施例中,操作系统内的线程调度器可以建立针对线程迁移的概率。例如,调度器可以检查未决线程队列,以确定多少线程正在等待被调度、以及这些线程中的多少线程会倾向于被调度在核2上。调度器还可以估计在核1上执行的当前线程(线程A)的当前部分将需要多长时间来完成。然后可以执行估计,以确定在线程A请求重新调度之前,正在等待的线程之一会被调度在核2上的可能性。如果该概率估计超过预定阈值,则可以将关于线程A的数据迁移至核2的高速缓存。
在一些示例实施例中,处理器和/或高速缓存可以适于在程序执行时收集信息。例如,这种信息可以包括程序参照哪些高速缓存行。在一些示例实施例中,可以评估有关高速缓存使用的数据,以确定应该替换哪些线程(例如,通过对线程处理剩余的行数进行计数)。在一些示例实施例中,性能计数器可以配置为跟踪运行线程的行收回,和/或可以使用该信息来决定可以清空哪些任务以开始优先级更高的任务。性能计数器还可以配置为跟踪自任务开始的行收回。性能计数器数据可以结合到上述重新调度概率的估计中。
图2是示出了根据本公开至少一些实施例布置的包括性能计数器218的示例多核系统200的框图。核202、204和/或206(可以与高速缓存212、214和/或216相关联)可以操作性耦合至性能计数器218。性能计数器218可以配置为例如对计算机系统内硬件有关的活动来存储计数。可以使用性能计数器218收集的数据来至少部分地确定线程220迁移(例如从核202到核204)。在一些实施例中,可以在线程220迁移之前,将数据222从高速缓存212预填充到高速缓存214中。
一些示例实施例可以考虑到针对具体任务的高速缓存占用面积的大小。在一些示例实施例中,可以使用布卢姆滤波器(Bloom filter)来表征针对线程的高速缓存占用面积有多大。示例的布卢姆滤波器可以是空间高效的概率数据结构,该数据结构可以用于测试元素是否是 集合的成员。当使用一些示例布卢姆滤波器时,假阳性(false positive)是可能的,但是不会存在假阴性(false negative)。在一些示例布卢姆滤波器中,元素可以添加到集合,但是不可以去除(尽管可以利用计数滤波器来处理该问题)。在一些示例布卢姆滤波器中,添加到集合的元素越多,假阳性的概率就越大。空布卢姆滤波器可以是全部设定为0的m个比特的比特数组。此外,可以定义k个不同散列函数,每一个散列函数可以按照均匀随机分布将某个集合元素映射或散列计算到m个数组位置之一。为了添加元素,可以将该元素馈送到k个散列函数中的每一个,以得到k个数组位置。这些位置上的比特可以设定为1。为了查询元素(例如,测试该元素是否在集合中),可以将该元素馈送到k个散列函数中的每一个,以得到k个数组位置。在一些示例布卢姆滤波器中,如果这些位置中任何位置上的比特为0,则该元素不在集合中;如果元素在集合中,则在插入该元素时k个数组位置处的所有比特应该已设定为1。在一些示例布卢姆滤波器中,如果k个数组位置处的所有比特是1,则该元素在集合中,或者在插入其他元素期间这些比特被设定为1。
在一些示例实施例中,可以使用布卢姆滤波器来跟踪当前线程正在使用高速缓存的哪些部分。例如,可以在线程首次被调度到核上时,清空滤波器。每次线程使用高速缓存行时,可以将其添加到滤波器集合。可以使用查询序列来估计线程占用面积,以评估高速缓存数据迁移的成本。在一些示例实施例中,可以使用滤波器中比特“1”的数目的简单群体计数(population count),来估计线程的高速缓存占用面积。在一些示例实施例中,可以使用计数布卢姆滤波器。在计数布卢姆滤波器中,每个滤波器元素可以是计数器,当线程使用高速缓存行时,该计数器递增,当高速缓存行无效时,该计数器递减。
在一些示例实施例中,可以评估与线程关联的数据,以确定线程何时应该迁移到另一核,和/或线程应该迁移到哪个核。例如,系统可以使用与线程有关的实时计算(RTC)数据,以确定该线程是否落在目标截止期限之后。如果线程落在目标截止期限之后,则例如可以将线程迁移到更快的核(例如以更高时钟速度操作的核)。
在一些示例实施例中,可以预取用于线程迁移的高速缓存数据。可以由现有技术已知的硬件预取器来执行该预取。一个这种预取器公开在美国专利No.7,318,125中,其作为参考合并在此。即,当系统准备将线程迁移至新核时,可以将来自当前核的参考发送给该新核,以准备迁移。因此,可以在准备迁移时对该新核进行“热身”。在一些示例实施例中,可以由该新核预取与要迁移的线程有关的基本上所有的数据。在一些示例实施例中,可以由该新核预取与要迁移的线程有关的数据的一部分。例如,可以预取高速缓存未命中、命中和/或行收回。在一些示例实施例中,不是将数据高速缓存在新核中(并且从而采用最终可能不需要的数据填充了新核),而是例如可以将数据预取到辅助/流缓冲器。
如本文使用的,“高速缓存命中”可以指引用已经高速缓存的数据的成功尝试,以及对应的数据。如本文使用的,“高速缓存未命中”可以指引用高速缓存中未找到的数据的尝试,以及对应的数据。如本文使用的,“行收回”可以指从高速缓存中移除高速缓存的行,以便在高速缓存中为不同数据腾出空间。行收回也可以包括回写操作,从而在从高速缓存中移除经修改的数据之前,将经修改的数据写入主存储器或更高的高速缓存级。
例如至少部分地基于线程执行特性随时间的变化、与性能计数器关联的数据、和/或与线程关联的数据(例如RTC计算数据),可以预料和/或预期线程迁移。
图3是示出了根据本公开至少一些实施例布置的将线程从第一处理器核迁移至第二处理器核的示例方法300的流程图。示例方法300可以包括处理操作302、304、306、308和/或310中的一个或多个。
处理可以开始于操作304,其可以包括预期线程要从与第一高速缓存关联的第一处理器核迁移到第二处理器核,第二处理器核与缓冲器和/或第二高速缓存中的一个或多个关联。操作304之后跟随操作306,操作306可以包括将与线程关联的数据从第一高速缓存传送至缓冲器和/或第二高速缓存中的一个或多个。操作306之后可以跟随操作308,操作308可以包括将线程从第一处理器核迁移到第二处理器核。
一些示例方法可以包括在操作304之前的操作302。操作302可以包括在第一处理器核上至少部分地执行线程。一些示例方法可以包括在操作310之前的操作308。操作310可以包括在第二处理器核上至少部分地执行线程。
图4是示出根据本公开至少一些实施例布置的包括具有机器可读指令的存储介质400的示例产品的示意图。当由一个或多个处理单元执行时,机器可读指令在操作时可以使得计算平台预测线程将被从第一处理器核重新调度到第二处理器核(操作402);在与第二核关联的存储器中存储与线程关联的数据(操作404);以及将线程从第一核重新调度到第二核(操作406)。
图5是示出了根据本公开至少一些实施例的用于预填充高速缓存的示例方法500的流程图。示例方法500可以包括处理操作502、504和/或506中的一个或多个。
方法500的处理可以开始于操作502,其可以包括识别线程可以迁移至的一个或多个处理器核。操作502之后可以跟随操作504,操作504可以包括将与线程关联的数据传送至与线程要迁移至的处理器核关联的高速缓存和/或缓冲器中的一个或多个。操作504之后可以跟随操作506,操作506可以包括将线程迁移至所述线程要迁移至的处理器核。
图6是示出了根据本公开至少一些实施例的布置用于高速缓存预填充的示例计算设备900的框图。在非常基本的配置901中,计算设备900可以典型地包括一个或多个处理器910、以及系统存储器920。存储器总线930可以用于处理器910与系统存储器920之间的通信。
根据所期望的配置,处理器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,其可以布置为预期重新调度以及预填充高速缓存。程序数据924可以包括高速缓存预填充数据925,该数据可以用于预填充高速缓存,下面将进一步描述。在一些示例中,应用程序922可以布置为根据本文所述的多种方法,在操作系统921上利用程序数据924操作,使得可以预填充高速缓存。这里所描述的基本配置在图6中由虚线901内的那些部件来图示。
计算设备900可以具有额外特征或功能以及额外接口,以便于基本配置901与任何所需设备和接口之间进行通信。例如,总线/接口控制器940可以便于基本配置901与一个或多个数据存储设备950之间经由存储接口总线941进行通信。数据存储设备950可以是可移除存储设备951、不可移除存储设备952或其组合。可移除存储设备和不可移除存储设备的示例包括磁盘设备(如软盘驱动器和硬盘驱动器(HDD))、光盘驱动器(如紧凑型光盘(CD)驱动器或数字通用光盘(DVD)驱动器)、固态驱动器(SSD)以及磁带驱动器,这仅仅是极多例子中的一小部分。示例计算机存储介质可以包括以用于信息存储的任何方法和技术实现的易失性和非易失性、可移除和不可移除介质,如计算机可读指令、数据结构、程序模块或其他数据。
系统存储器920、可移除存储设备951和不可移除存储设备952均是计算机存储介质的示例。计算机存储介质包括但不限于RAM、ROM、EEPROM、闪存或其他存储器技术,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”的可能性。
尽管已经在此公开了多个方案和实施例,但是本领域技术人员应当明白其他方案和实施例。本文公开的多个方案和实施例是出于说明性的目的,而不是限制性的,本公开的真实范围和精神由所附权利要求指出。

Claims (22)

1.一种将线程从第一处理器核向第二处理器核迁移的方法,所述方法包括:
预期要将线程从与第一高速缓存关联的第一处理器核向与缓冲器和/或第二高速缓存中的一个或多个关联的第二处理器核迁移,第一处理器核不与第二高速缓存和缓冲器相关联,且第二处理器核不与第一高速缓存相关联;
将与线程关联的数据的至少一部分从第一高速缓存传送至缓冲器和/或第二高速缓存中的一个或多个;以及
在传送与线程关联的数据的所述至少一部分之后,将线程从第一处理器核迁移到第二处理器核,
其中,在将线程从第一处理器核迁移到第二处理器核之前,采用与线程关联的数据的所述至少一部分,至少部分地填充缓冲器和/或第二高速缓存中的一个或多个,
其中,预期要将线程迁移至第二处理器核包括确定至少存在线程要被迁移到第二处理器核的阈值概率。
2.根据权利要求1所述的方法,还包括:在预期要迁移线程之前,在第一处理器核上至少部分地执行线程。
3.根据权利要求1所述的方法,还包括:在迁移线程之后,在第二处理器核上至少部分地执行线程。
4.根据权利要求1所述的方法,其中,所述数据包括与线程关联的高速缓存未命中、高速缓存命中和/或高速缓存行收回之中的一个或多个。
5.根据权利要求1所述的方法,其中,第二处理器核与第二高速缓存相关联;以及传送数据包括从第一高速缓存向第二高速缓存传送数据。
6.根据权利要求5所述的方法,其中,第二高速缓存包括与线程关联的现有数据;以及传送数据包括传送与线程关联的新数据。
7.根据权利要求6所述的方法,其中,所述新数据包括与线程关联的高速缓存未命中、高速缓存命中和/或高速缓存行收回之中的一个或多个。
8.根据权利要求1所述的方法,其中,第二处理器核与缓冲器相关联;以及传送数据包括从第一高速缓存向缓冲器传送数据。
9.根据权利要求1所述的方法,其中,预期要将线程迁移至第二处理器核至少部分地基于第二处理器核的硬件能力中的一个或多个。
10.一种将线程从第一处理器核向第二处理器核迁移的产品,所述产品包括:
预期装置,用于预期要将线程从与第一高速缓存关联的第一处理器核向与缓冲器和/或第二高速缓存中的一个或多个关联的第二处理器核迁移,第一处理器核不与第二高速缓存和缓冲器相关联,且第二处理器核不与第一高速缓存相关联;
传送装置,用于将与线程关联的数据的至少一部分从第一高速缓存传送至缓冲器和/或第二高速缓存中的一个或多个;以及
迁移装置,用于在传送与线程关联的数据的所述至少一部分之后,将线程从第一处理器核迁移到第二处理器核,
其中,在将线程从第一处理器核迁移到第二处理器核之前,采用与线程关联的数据的所述至少一部分,至少部分地填充缓冲器和/或第二高速缓存中的一个或多个,
其中,预期装置配置用于确定存在线程要被迁移到第二处理器核的阈值概率。
11.根据权利要求10所述的产品,其中,第二高速缓存包括与线程关联的现有数据,以及传送装置配置用于传送与线程关联的新数据。
12.根据权利要求10所述的产品,其中,与第一处理器核关联的一个或多个硬件能力不同于与第二处理器核关联的一个或多个硬件能力;以及预期装置配置用于至少部分地基于与第一处理器核关联的一个或多个硬件能力、与第二处理器核关联的一个或多个硬件能力、以及与线程关联的一个或多个执行特性,来预期要将线程迁移至第二处理器核。
13.根据权利要求10所述的产品,其中,迁移装置配置用于在将与线程关联的基本上所有数据传送至所述缓冲器和/或第二高速缓存中的一个或多个之后,将线程从第一处理器核迁移至第二处理器核。
14.一种预填充高速缓存的方法,包括:
识别处理线程的第一处理器核,第一处理器核与第一高速缓存关联,而不与第二高速缓存和缓冲器相关联;
识别线程要迁移至的第二处理器核,第二处理器核与第二高速缓存关联,而不与第一高速缓存相关联;
将与线程关联的数据从第一高速缓存传送至第二高速缓存;以及
在将所述数据的至少一部分传送至第二高速缓存之后,将线程迁移至第二处理器核,
其中,所述方法还包括确定存在线程要被迁移到第二处理器核的阈值概率。
15.根据权利要求14所述的方法,其中,传送数据基本上在迁移线程之前完成。
16.根据权利要求14所述的方法,其中,至少部分地基于使用与处理器核中的至少一个关联的性能计数器而收集的信息,来识别线程要迁移至的第二处理器核。
17.根据权利要求16所述的方法,其中,使用性能计数器收集的信息包括与处理器核中的至少一个上运行的各个单独线程关联的行收回的数目。
18.根据权利要求14所述的方法,其中,至少部分地基于与线程关联的实时计算信息来识别线程要迁移至的第二处理器核;以及当实时计算信息指示线程落在目标截止期限之后时,将线程迁移到处理器核中更快的一个处理器核。
19.一种多核系统,包括:
第一处理器核;
与第一处理器核关联的第一高速缓存;
第二处理器核,第二处理器核不与第一高速缓存相关联;以及
与第二处理器核关联而不与第一处理器核相关联的第二高速缓存和/或缓冲器中的一个或多个;
其中,所述多核系统配置为确定存在线程要被迁移到第二处理器核的阈值概率,在将线程从第一处理器核迁移至第二处理器之前,将数据从第一高速缓存传送至第二高速缓存和/或缓冲器中的一个或多个,随后将线程从第一处理器核迁移至第二处理器核,该线程与所述数据关联。
20.根据权利要求19所述的多核系统,其中,第一处理器核具有第一能力,第二处理器核具有第二能力,第二能力不同于第一能力,使得多核系统包括异构硬件。
21.根据权利要求20所述的多核系统,其中,第一能力和第二能力各自对应于以下至少之一:图形资源、数学计算资源、指令集、加速器、SSE、高速缓存大小和/或分支预测器。
22.根据权利要求19所述的多核系统,其中,所述数据包括与线程关联的高速缓存未命中、高速缓存命中和/或高速缓存行收回之中的一个或多个。
CN201080035185.XA 2009-09-11 2010-06-04 关于线程迁移的高速缓存预填充方法、产品与系统 Expired - Fee Related CN102473112B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/557,864 2009-09-11
US12/557,864 US20110066830A1 (en) 2009-09-11 2009-09-11 Cache prefill on thread migration
PCT/US2010/037489 WO2011031355A1 (en) 2009-09-11 2010-06-04 Cache prefill on thread migration

Publications (2)

Publication Number Publication Date
CN102473112A CN102473112A (zh) 2012-05-23
CN102473112B true CN102473112B (zh) 2016-08-24

Family

ID=43731610

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201080035185.XA Expired - Fee Related CN102473112B (zh) 2009-09-11 2010-06-04 关于线程迁移的高速缓存预填充方法、产品与系统

Country Status (6)

Country Link
US (1) US20110066830A1 (zh)
JP (1) JP5487306B2 (zh)
KR (1) KR101361928B1 (zh)
CN (1) CN102473112B (zh)
DE (1) DE112010003610T5 (zh)
WO (1) WO2011031355A1 (zh)

Families Citing this family (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8949569B2 (en) * 2008-04-30 2015-02-03 International Business Machines Corporation Enhanced direct memory access
US9727388B2 (en) 2011-12-29 2017-08-08 Intel Corporation Migrating threads between asymmetric cores in a multiple core processor
US9390554B2 (en) * 2011-12-29 2016-07-12 Advanced Micro Devices, Inc. Off chip memory for distributed tessellation
US9804896B2 (en) * 2012-07-31 2017-10-31 Empire Technology Development Llc Thread migration across cores of a multi-core processor
US9135172B2 (en) 2012-08-02 2015-09-15 Qualcomm Incorporated Cache data migration in a multicore processing system
JP6218833B2 (ja) * 2012-08-20 2017-10-25 キャメロン,ドナルド,ケヴィン 処理リソース割り当て
GB2502857B (en) * 2013-03-05 2015-01-21 Imagination Tech Ltd Migration of data to register file cache
US8671232B1 (en) * 2013-03-07 2014-03-11 Freescale Semiconductor, Inc. System and method for dynamically migrating stash transactions
US10409730B2 (en) 2013-03-15 2019-09-10 Nvidia Corporation Microcontroller for memory management unit
US20150095614A1 (en) * 2013-09-27 2015-04-02 Bret L. Toll Apparatus and method for efficient migration of architectural state between processor cores
US9632958B2 (en) 2014-07-06 2017-04-25 Freescale Semiconductor, Inc. System for migrating stash transactions
US9652390B2 (en) * 2014-08-05 2017-05-16 Advanced Micro Devices, Inc. Moving data between caches in a heterogeneous processor system
US20160093102A1 (en) * 2014-09-25 2016-03-31 Peter L. Doyle Efficient tessellation cache
CN105528330B (zh) * 2014-09-30 2019-05-28 杭州华为数字技术有限公司 负载均衡的方法、装置、丛集和众核处理器
US9697124B2 (en) * 2015-01-13 2017-07-04 Qualcomm Incorporated Systems and methods for providing dynamic cache extension in a multi-cluster heterogeneous processor architecture
KR102352756B1 (ko) 2015-04-29 2022-01-17 삼성전자주식회사 애플리케이션 프로세서, 시스템 온 칩, 및 이를 포함하는 컴퓨팅 장치
USD791323S1 (en) 2015-09-08 2017-07-04 Samsung Electronics Co., Ltd. X-ray apparatus
USD786439S1 (en) 2015-09-08 2017-05-09 Samsung Electronics Co., Ltd. X-ray apparatus
US10140052B2 (en) 2015-11-05 2018-11-27 International Business Machines Corporation Memory access in a data processing system utilizing copy and paste instructions
US10241945B2 (en) 2015-11-05 2019-03-26 International Business Machines Corporation Memory move supporting speculative acquisition of source and destination data granules including copy-type and paste-type instructions
US10331373B2 (en) 2015-11-05 2019-06-25 International Business Machines Corporation Migration of memory move instruction sequences between hardware threads
US10152322B2 (en) 2015-11-05 2018-12-11 International Business Machines Corporation Memory move instruction sequence including a stream of copy-type and paste-type instructions
US10067713B2 (en) 2015-11-05 2018-09-04 International Business Machines Corporation Efficient enforcement of barriers with respect to memory move sequences
US10126952B2 (en) 2015-11-05 2018-11-13 International Business Machines Corporation Memory move instruction sequence targeting a memory-mapped device
US9996298B2 (en) 2015-11-05 2018-06-12 International Business Machines Corporation Memory move instruction sequence enabling software control
US10346164B2 (en) 2015-11-05 2019-07-09 International Business Machines Corporation Memory move instruction sequence targeting an accelerator switchboard
US10042580B2 (en) 2015-11-05 2018-08-07 International Business Machines Corporation Speculatively performing memory move requests with respect to a barrier
CN108885776B (zh) 2016-03-24 2022-09-27 富士胶片株式会社 图像处理装置、图像处理方法及存储介质
CN107015865B (zh) * 2017-03-17 2019-12-17 华中科技大学 一种基于时间局部性的dram缓存管理方法及系统
CN109947569B (zh) * 2019-03-15 2021-04-06 Oppo广东移动通信有限公司 绑定核心的方法、装置、终端及存储介质
CN111966398A (zh) * 2019-05-20 2020-11-20 上海寒武纪信息科技有限公司 指令处理方法、装置及相关产品
US11803391B2 (en) 2020-10-20 2023-10-31 Micron Technology, Inc. Self-scheduling threads in a programmable atomic unit
US20220129327A1 (en) * 2020-10-27 2022-04-28 Red Hat, Inc. Latency sensitive workload balancing

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1239249A (zh) * 1998-06-17 1999-12-22 国际商业机器公司 实现精确的超高速缓存灵敏度的超高速缓存体系结构

Family Cites Families (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0628323A (ja) * 1992-07-06 1994-02-04 Nippon Telegr & Teleph Corp <Ntt> プロセス実行制御方法
JPH0721045A (ja) * 1993-06-15 1995-01-24 Sony Corp 情報処理システム
US5644742A (en) * 1995-02-14 1997-07-01 Hal Computer Systems, Inc. Processor structure and method for a time-out checkpoint
JP3266029B2 (ja) * 1997-01-23 2002-03-18 日本電気株式会社 マルチプロセッサシステムにおけるディスパッチング方式、ディスパッチング方法およびディスパッチングプログラムを記録した記録媒体
US5968115A (en) * 1997-02-03 1999-10-19 Complementary Systems, Inc. Complementary concurrent cooperative multi-processing multi-tasking processing system (C3M2)
GB0015276D0 (en) * 2000-06-23 2000-08-16 Smith Neale B Coherence free cache
GB2372847B (en) * 2001-02-19 2004-12-29 Imagination Tech Ltd Control of priority and instruction rates on a multithreaded processor
US7233998B2 (en) * 2001-03-22 2007-06-19 Sony Computer Entertainment Inc. Computer architecture and software cells for broadband networks
JP3964821B2 (ja) * 2003-04-21 2007-08-22 株式会社東芝 プロセッサ、キャッシュシステム及びキャッシュメモリ
US7093147B2 (en) * 2003-04-25 2006-08-15 Hewlett-Packard Development Company, L.P. Dynamically selecting processor cores for overall power efficiency
US7353516B2 (en) * 2003-08-14 2008-04-01 Nvidia Corporation Data flow control for adaptive integrated circuitry
US7360218B2 (en) * 2003-09-25 2008-04-15 International Business Machines Corporation System and method for scheduling compatible threads in a simultaneous multi-threading processor using cycle per instruction value occurred during identified time interval
US7318125B2 (en) * 2004-05-20 2008-01-08 International Business Machines Corporation Runtime selective control of hardware prefetch mechanism
US20060037017A1 (en) * 2004-08-12 2006-02-16 International Business Machines Corporation System, apparatus and method of reducing adverse performance impact due to migration of processes from one CPU to another
US7437581B2 (en) * 2004-09-28 2008-10-14 Intel Corporation Method and apparatus for varying energy per instruction according to the amount of available parallelism
US20060168571A1 (en) * 2005-01-27 2006-07-27 International Business Machines Corporation System and method for optimized task scheduling in a heterogeneous data processing system
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
US20070050605A1 (en) * 2005-08-29 2007-03-01 Bran Ferren Freeze-dried ghost pages
US7412353B2 (en) * 2005-09-28 2008-08-12 Intel Corporation Reliable computing with a many-core processor
US7434002B1 (en) * 2006-04-24 2008-10-07 Vmware, Inc. Utilizing cache information to manage memory access and cache utilization
JP4936517B2 (ja) * 2006-06-06 2012-05-23 学校法人早稲田大学 ヘテロジニアス・マルチプロセッサシステムの制御方法及びマルチグレイン並列化コンパイラ
JP2008090546A (ja) * 2006-09-29 2008-04-17 Toshiba Corp マルチプロセッサシステム
US8006077B2 (en) * 2007-03-29 2011-08-23 Intel Corporation Thread migration control based on prediction of migration overhead
US8230425B2 (en) * 2007-07-30 2012-07-24 International Business Machines Corporation Assigning tasks to processors in heterogeneous multiprocessors
US20090089792A1 (en) * 2007-09-27 2009-04-02 Sun Microsystems, Inc. Method and system for managing thermal asymmetries in a multi-core processor
US8219993B2 (en) * 2008-02-27 2012-07-10 Oracle America, Inc. Frequency scaling of processing unit based on aggregate thread CPI metric
US8615647B2 (en) * 2008-02-29 2013-12-24 Intel Corporation Migrating execution of thread between cores of different instruction set architecture in multi-core processor and transitioning each core to respective on / off power state
US7890298B2 (en) * 2008-06-12 2011-02-15 Oracle America, Inc. Managing the performance of a computer system
US8683476B2 (en) * 2009-06-30 2014-03-25 Oracle America, Inc. Method and system for event-based management of hardware resources using a power state of the hardware resources

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1239249A (zh) * 1998-06-17 1999-12-22 国际商业机器公司 实现精确的超高速缓存灵敏度的超高速缓存体系结构

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Performance Implications of Single Thread Migration on a Chip Multi-Core;Theofanis Constantinou;《ACM SIGARCH Computer Architecture News》;20051130;第33卷;80-91 *

Also Published As

Publication number Publication date
US20110066830A1 (en) 2011-03-17
DE112010003610T5 (de) 2012-08-23
KR101361928B1 (ko) 2014-02-12
JP5487306B2 (ja) 2014-05-07
KR20120024974A (ko) 2012-03-14
WO2011031355A1 (en) 2011-03-17
CN102473112A (zh) 2012-05-23
JP2013501296A (ja) 2013-01-10

Similar Documents

Publication Publication Date Title
CN102473112B (zh) 关于线程迁移的高速缓存预填充方法、产品与系统
CN102473113B (zh) 多核处理器和将线程分配至异构处理器核的方法
CN102483703B (zh) 计算机线程至异构资源的映射
CN104133780B (zh) 一种跨页预取方法、装置及系统
JP5422614B2 (ja) 低ポート数メモリーを用いたマルチポートメモリーのシミュレート
US8001283B2 (en) Efficient, scalable and high performance mechanism for handling IO requests
CN103562874B (zh) 解除配置存储级内存命令
US20130145124A1 (en) System and method for performing shaped memory access operations
CN104221005B (zh) 用于从多线程发送请求至加速器的机制
CN103197953A (zh) 推测执行和回滚
CN101071403B (zh) 动态更新自适应的空闲计时器
US20130290971A1 (en) Scheduling Thread Execution Based on Thread Affinity
CN105094691B (zh) 一种数据操作的方法、设备和系统
US8832414B2 (en) Dynamically determining the profitability of direct fetching in a multicore architecture
US8806168B2 (en) Producer-consumer data transfer using piecewise circular queue
CN114911596A (zh) 针对模型训练的调度方法、装置、电子设备和存储介质
CN105824604B (zh) 多输入多输出处理器流水线数据同步装置及方法
US9158696B2 (en) Hiding instruction cache miss latency by running tag lookups ahead of the instruction accesses
JP2009521054A (ja) ダイナミックキャッシュ管理装置及び方法
CN109491785A (zh) 内存访问调度方法、装置及设备
WO2024007745A1 (zh) 数据写入方法、读取方法、装置、电子设备以及存储介质
CN116244005A (zh) 一种多线程异步数据传输系统及方法
CN116594805A (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
C14 Grant of patent or utility model
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: 20160824

Termination date: 20190604