CN1133942C - 在具有关联的超高速缓存的处理器上调度线程的方法 - Google Patents

在具有关联的超高速缓存的处理器上调度线程的方法 Download PDF

Info

Publication number
CN1133942C
CN1133942C CNB991069501A CN99106950A CN1133942C CN 1133942 C CN1133942 C CN 1133942C CN B991069501 A CNB991069501 A CN B991069501A CN 99106950 A CN99106950 A CN 99106950A CN 1133942 C CN1133942 C CN 1133942C
Authority
CN
China
Prior art keywords
cache
thread
processor
compatibility
oid
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
CNB991069501A
Other languages
English (en)
Other versions
CN1239249A (zh
Inventor
H・弗兰克
H·弗兰克
帕特奈克
P·C·帕特奈克
巴兰斯基
Y·A·巴兰斯基
克里格
O·Y·克里格
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.)
International Business Machines Corp
Original Assignee
International Business Machines 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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of CN1239249A publication Critical patent/CN1239249A/zh
Application granted granted Critical
Publication of CN1133942C publication Critical patent/CN1133942C/zh
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

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
    • 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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5033Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering data affinity

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

一种监控相关线程在给定的处理器及其关联的超高速缓存上的超高速缓存足迹的技术,从而使操作系统能执行更好的超高速缓存灵敏的调度。线程在超高速缓存中的足迹的函数可用作该线程对该超高速缓存的处理器的亲和性的指示。本发明描述了通过根据所有权登记及超高速缓存监控单元确定的超高速缓存使用保持超高速缓存行的状态及所有权计数来精确地测定线程在给定的处理器及其关联的超高速缓存上的超高速缓存足迹的装置。

Description

在具有关联的超高速缓存的 处理器上调度线程的方法
本发明涉及计算机系统中的调度线程。具体地,本发明涉及为了超高速缓存灵敏的调度的目的方便跟踪线程的超高速缓存足迹的方法与系统。
在现代计算机体系结构中,CPU速度不断地以比存储器存取速度快得多地提高。因此,处理存储器等待时间的后果已越来越重要。为了缓和相对高的存储器存取时间,如图1中所示的计算机系统在μP(12)与存储器(13)之间介入越来越大的超高速缓存(14a,14b),并且经常配置甚至多级超高速缓存(14,15)[1]。然而,CPU速度提高与存储器存取速度提高的差异在出现超高速缓存失中的情况中导致以CPU周期表示的更大的超高速缓存再加载时间。隐藏超高速缓存失中的各种技术是已知的,诸如指令相关性分析、推测执行、无次序执行及预取指令[1]。随着超高速缓存存取时间与存储器等待时间之间的差异越来越大,更难于用这些技术来隐藏超高速缓存失中。结果μP将经历更多的停顿,从而增加执行一条指令所需的平均周期数(cpi)。为了保持低的计算机系统cpi,因此降低μP遭遇的超高速缓存失中次数是重要的。
超高速缓存失中通常由有限的超高速缓存资源引起,其中处理器上活跃的线程的工作集不能整个出现在超高速缓存中。在这一情况中线程之间的切换将导致超高速缓存失中,因为一个线程所存取的存储器会逐出其它线程的超高速缓存内容。缓解这一问题的一种显而易见的方法便是增加执行线程的时间量,从而提高在该较长时段中重复使用超高速缓存的概率。然而,增加时间量对诸如响应时间等其它系统参数具有不利影响,因此这通常不是一种选择。
当前,许多甚至绝大多数现代服务器系统为与超高速缓存相干的共享存储器多处理器系统(MP)(11),其中将多个处理器(12a,12b)链接在一个或多个存储器模块(13)上[1]。在这些系统中,当线程的执行从一个处理器转移到另一个而仍有一部分其存取的存储器仍超高速缓存在前一处理器的超高速缓存上时会出现超高速缓存失中。在存取这些存储器单元时,超高速缓存失中的出现导致将超高速缓存行转移给新处理器。通过不仅参考被调度的线程的优先级并且也考虑线程对不同处理器的亲和性,这些系统上的调度程序能改进吞吐量与响应性两者[2,4,5,6]。通常如果将线程调度给与它们具有高亲和性的处理器,则能降低超高速缓存失中的总体数目,并从而提高吞吐量。在调度一个线程中短的延迟以便将该线程调度到与其具有亲和性的处理器上能实际上提高该线程的响应性,因为当该线程真正投入运行时,处理器将花费较少时间来重建其超高速缓存内容。虽然许多多处理器调度程序确曾试图进行某种形式的基于亲和性的调度,这种调度的有效性是有限的,因为调度程序没有方法来精确估算超高速缓存的亲和性。
操作系统中的第一种尝试并仍然是多处理系统的商品化操作系统中最广泛的一种便是采用虚拟时间印记。当在处理器Pi上执行线程T时,分配给该线程一个按处理器的时间印记。分配给对给定处理器具有最高时间印记的线程一个较高的亲和性值。通常为这一概念提供非常简单的实现,即如果该线程上一次在这里运行为值“1”否则为“0”。这一方法并不计入线程的超高速缓存足迹。它通常不正确地假定最近在处理器上运行的线程对该处理器具有最高的亲和性。
许多处理器已引入计入在设定的时间间隔中超高速缓存失中次数的机制,操作系统也正在利用这一信息[3,4,5,6]。在最小失中策略中调度程序记住线程在其上一次运行中遭受超高速缓存失中的次数。对于一个给定线程,高速缓存失中次数越少,则对其分配的高速缓存亲和性越高。更完善的策略是基于超高速缓存重新加载瞬态模型。重新加载瞬态定义为重新起动线程之后重建该线程的足迹的代价。可利用Markov链模型来估算给定的时间上的线程的足迹[3,5,6]。具体地,Markov链对作为在线程的执行中超高速缓存失中的结果增加活跃的超高速缓存行的数目的概率建立模型。例如,假定系统具有N个超高速缓存行而运行中的线程T当前占用M个超高速缓存行,一个超高速缓存失中增加T的超高速缓存足迹的概率(即没有T的超高速缓存行被该失中取代)为(N-M)/N。然后通过将同一逻辑应用在一个以上的超高速缓存失中上来重构该链。类似地,给定从该线程上一次执行起的超高速缓存失中数目,可用同一模型来估算线程的超高速缓存足迹中的减少。然后在调度时有意选择具有最低重新加载瞬态的线程,因为我们期望它遭受最少的超高速缓存失中来恢复其前面的状态。这一策略假设系统是马尔可夫(无后效)系统,即无历史的,它既不能精确地反映线程的表现也不反映诸如超高速缓存结合性等超高速缓存硬件限制[1]。此外,由于超高速缓存足迹是在线程的生存期上增量估算的,这一模型能失去同步,导致低劣的调度判断。
当前的上述基于亲和性的调度方案的主要障碍在于超高速缓存亲和性函数不是基于诸如虚拟时间印记等非常简单的直观推断便是基于诸如Markov链的随机模型等超高速缓存足迹估算的。
因此,所需要的是具有根据精确的超高速缓存足迹测定值的基于改进的超高速缓存亲和性调度的操作系统。
参考文献
1.J.L.Hennessy,D.A.Patterson的“计算机体系结构:定量方案”(“Computer Architecture:A Quantitative Approach,”MorganKaufmann Publishers,ISBN 1-55860-329-8,1996.)
2.U.Vahalla的“Unix本质:新的前沿”(“UNIX Internals:TheNew Frontier,”Prentice Hall,ISBN 0-13-101908-2,1996.)
3.D.Thiebaut,H.Stone的“记录高速缓存的足迹”(“Footprintsthe Cache,”ACM Transactions on Computer Systems,5(4),Nov.1987,pp.305-329.)
4.M.Squillante,E.Lazowska的“在共享存储器的多处理器调度中利用处理器高速缓存的亲和性”(“Using Processor CacheAffinity in Shared-Memory Multiprocessor Scheduling,”IEEETransactions on Parallel and Distributed Systems,4(2),Feb.1993,pp.131-143.)
5.A.Tucker的“在多编程共享的存储器的多处理器上的有效调度”(“Efficient Scheduling on Multiprogrammed Shared MemoryMultiprocessors,”ph.D.Thesis,Department of ComputerScience,Stanford University,CX-TN-94-4,Dec.1993.)
6.F.Belossa的“在共享存储器的多处理器中的基于本地信息的调度”(“Locality-Information-Based Scheduling in Shared-Memory Multiprocessors,”IPPS’96 Workshop on Job SchedulingStrategies for Parallel Processing,Honolulu,Hawaii,April1996.)
通过引用将上述参考文献1至6结合在此。
本发明的目的为提供基于改进的超高速缓存亲和性的调度。从而,本发明通过为各处理器的各线程测定超高速缓存足迹而提供用于在多处理器系统中调度线程的方法及装置。然后,利用上面确定的超高速缓存足迹,确定各线程对各处理器的亲和性。然后按照亲和性调度各处理器上的各线程的执行。在本发明的更具体的实施例中,各超高速缓存的各线程的超高速缓存足迹是用各线程从特定的超高速缓存取得的活跃的超高速缓存行的数目测定的。
图1示意性地示出带有集成的超高速缓存体系结构的共享存储器多处理器。
图2为与本发明的多处理器系统集成的超高速缓存体系结构的高层示意图。
图3示意性地示出本发明的超高速缓存监控单元的内部体系结构。
图4示意性地示出按照本发明的超高速缓存监控单元的更新操作。
图5用图形示出为了选择下一个执行的线程而用于确定给定处理器上的线程的执行优先级的通用算法。
图6示意性地示出调度程序并包括调度队列及线程之一的亲和性矢量。
如上面所讨论的,图1描绘了具有多个处理器即CPU(12a…12b)的示范性多处理器系统(11)。各处理器连接在保存与/或支持应用及操作系统软件的存储介质,短期存储器(13)上。介入处理器与其关联的存储器的通信路径中的有至少一个相应的超高速缓存(14a,14b),然而多级超高速缓存(14a,14b,15a,15b)也是可能的。所述超高速缓存的目的为临时存储频繁地存取的所述存储器的内容,并提供对所述超高速缓存的存储器内容的更快的通信路径,以便提供更快的存储器存取。
按照图2中所示的本发明,标准超高速缓存体系结构是用超高速缓存监控单元(20)(CMU)扩展的。如该名称所指,这一扩展的目的是为了测定计算单元(进程,线程)的超高速缓存足迹的目的而监控及描述超高速缓存的所有权与使用的特征。图2给出CMU与其它标准系统部件,即超高速缓存(21)、CPU(22)及存储器(23),的集成与交互作用的高层概述。当在CPU上执行其指令流的当前线程通过加载或存储操作1d(A)/st(A)(24)存取存储器单元A(M[A])的内容时,CPU通过CPU-超高速缓存接口(28)向其相关超高速缓存(21)发布这些请求。然后超高速缓存的任务为(a)识别M[A]是否已在超高速缓存的存储器中然后返回数据给CPU或(b)是否在执行所述任务(a)前必须首先从主存储器中取出M[A]。如果M[A]已在超高速缓存的存储器中,便不用存取存储器将M[A]返回给CPU。在这一点上不需要与CMU交互作用。然而,如果在该超高速缓存的存储器中得不到M[A],则超高速缓存必须通过超高速缓存-存储器接口(23)从存储器单元取数据。由于超高速缓存的存储器明显地小于主存储器,超高速缓存必须留出空间或“逐出”其它超高速缓存的存储器以便存储M[A]。超高速缓存是组织成有限数目(NUM_CL)的超高速缓存行的,其中各超高速缓存行保持特定数目的连续的存储器字节,称作超高速缓存行大小(CLS)。超高速缓存通常根据简单的映射函数F(A)(如地址位散列)将多个超高速缓存行组织成群。换言之,M[A]只能存储在落入它们的相关超高速缓存行群CG(A)中的超高速缓存行中。如果得不到CG[A]中的超高速缓存行,超高速缓存必须从CG[A]中逐出一个超高速缓存行。如果该超高速缓存行在修改状态中,即存储器与超高速缓存内容不同步,则逐出该超高速缓存行包括写回到存储器中。只有这时才能将M[A]取入新释放的超高速缓存行中。组织及逐出机制是当前超高速缓存利用中的标准实践[1]。
按照本发明的另一方面,需要来自超高速缓存的关于哪一行是逐空的及哪一行是填充以某些存储器内容的通知。为了使CMU在任何给定的时间上都能提供精确的超高速缓存足迹测定值,这些通知应在发生逐出或填充事件时立即发生。这些额外的操作能并行执行而并不在存取超高速缓存的关键性路径上引入任何额外的开销。具体地,一旦超高速缓存决定逐出超高速缓存行Li,该超高速缓存在超高速缓存-CMU通信总线(C3总线)(27)上发布“evict(L1)”通知,而一旦超高速缓存填充超高速缓存行,便将“filled(Li)”通知发送给CMU。
对于所有实际目的,除超高速缓存行无效及初始CMU状态之外,所有逐空都跟随着同一超高速缓存行的填充。从而,可将“evict(Li)”与“filled(Li)”合在一起成为一个请求。无效指令可用对请求的附加参数INV(在硬件中这是在发布超高速缓存无效指令时升高的附加信号线)来覆盖。从而从超高速缓存向CMU发布的各请求具有格式Req<L,Inv>,其中L标识受影响的行而Inv则标识这一请求是无效指令的结果还是超高速缓存行填充(隐含逐出)的结果。
现在描述利用来自超高速缓存的通知请求及使CMU能向各所述线程提供有多少由各所述线程所取的超高速缓存行仍在超高速缓存中活跃的测定。
CMU取得并确认各通知请求Req<L,Inv>(例如通过降低C3总线上的特定信号)。除了CMU-超高速缓存接口之外,CMU提供对CPU(29)的接口,该接口揭示下列两条“指令”来修改与查询CMU的状态:
1)Setowner(oid):标识直到发布另一条“Setowner(oid)”之
前从这里取得所有超高速缓存行的拥有者,oid必须是有效的
ID(见下面)。
2)getusage(odi):检索该有效oid拥有的超高速缓存行的数
目。
作为有效的oid,我们假设以下限制:[O<oid<MAX_OID],其中MAX_OID为一定的系统常数而O则是为处理INV情况及CMU的初始状态保留的。为了在这一点上简化本实施例的讨论的目的,我们假设可能的拥有者数(如线程,进程)并不超过MAX_OID。可能的拥有者数超过MAX_OID的情况将在稍后描述。
对于各有效的oid及不仅对于当前拥有者,CMU必须维护这一oid“所拥有的”超高速缓存行的数目,称作OC(oid)。为了能维护这一计数,CMU必须为各超高速缓存行Li维护超高速缓存行拥有者CLO(Li)。具体地,对于从超高速缓存接收的各请求<L,Inv>,CMU将与该超高速缓存行L的当前拥有者关联的计数器减1并将与上一条“setowner”指令所指示的超高速缓存行L的新拥有者关联的计数器加1。通常在上下文切换时,操作系统将发布“setowner”指令给CMU。如果在请求中生成Inv信号,便选择“O”作为新拥有者,表示没有拥有者与该超高速缓存行关联(注意“O”不是有效的oid)。类似地在系统起动时,所有超高速缓存行都被赋予oid “O”。
图3更详细地示出CMU的内部结构及下列各种CMU部件对上述要求的作用:
1.拥有者标识符寄存器oid-reg(30),它包含标识当前正在运行的拥有者(线程,进程)的oid(31),
2.大小为NUM_CL的超高速缓存行oid矢量(32),它为各超高速缓存行L [O··NUM_CL-1](32a-z)保持该超速缓存线的拥有者的oid=CLO(Li),
3.计数器矢量(33),它为各可能的有效oid值维护有多少超高速缓存行由所述oid所拥有的计数,
4.C3总线接口(34),它与超高速缓存单元交互作用,
5.CMU更新单元(35),它根据“逐出”与“填充”通知修改CMU状态。
6.CPU接口(36),它在CPU发布的setowner与getusage指令上操作。
副作用是CMU能容易地跟踪束缚在超高速缓存硬件本身之外的其它信息。例如,通过简单地计数通知请求,CMU能提供实际的超高速缓存失中计算信息。
CMU更新单元(35)的操作为维护超高速缓存行的正确计数与所有权。如图4中所示,CMU更新单元进行下述操作流程:
·(41)从C3总线接口(34)检索下一个通知请求<L,Inv>,
·(42)从超高速缓存行oid矢量(32)取得超高速缓存行L的当前拥有者,
·(43)在刚确定的拥有者项上递减(counter_vector)(计数器矢量)(33)
·(44)如果生成Inv信号,将new_owner(新拥有者)设置为“O”表示无效(46),否则用oid-reg(45)的内容确定new_owner(新拥有者),
·(47)将超高速缓存行CLO(L)的拥有者设置为该new_owner(新拥有者),
·(48)增量new_owner(新拥有者)的counter_vcetor(计数器矢量)(34)。
MAX_OID的选择取决于各种系统参数,诸如超高速缓存行的数目NUM_CL与超高速缓存行大小CLS以及线程及进程的数目。下面给出基于当前技术水平的超高速缓存体系结构及操作系统参数的一些估算。超高速缓存中的超高速缓存行数NUM_CL的数量级为千或万而不是百万。例如,假定具有128个字节(27)的超高速缓存行大小为4兆字节(223)的超高速缓存得出32768条超高速缓存行(215)。再假定将能建立的线程的数目限制在4096(212)上。注意许多商品化操作系统提供的比这少得多。然而,以2个字节存储器表示一个oid,允许发布216个不同的oid。给定上述数字,这将要求超高速缓存设计提供64K字节存储器用于超高速缓存行oid矢量(cacheline-oid-vector)及另外8K字节用于MAX_OID=4096的counter_vector(计数器矢量),总共72K字节的额外存储器。这大约是原来的存储器的1.75%。虽然超高速缓存大小将不断增长,随着超高速缓存行大小有可能同样增长,但CMU扩展所需的总的超高速缓存大小的实际百分比有可能下降。从而超高速缓存行的数目将不以超高速缓存本身的速度增长,最终相对于整体超高速缓存芯片资源减少CMU所需的芯片资源。
然而,OS必须准备好处理oid可能成为关键性资源的事实。本发明提供用于处理多于MAX_OID个线程的方法。两种通用方法是有意义的,第一种是静态的并将线程放在群中,第二种是较动态的并要求OS随着时间主动管理oid的分配。
在静态oid分配方法中,应分配给属于同一地址空间或进程的线程一个公共的oid。这比随机线程组合优越,因为属于同一进程的线程通常共用数据与/或代码,即存储器。将一个进程的所有线程分成若干线程群及分配给各群独立的oid也是可行的。具体地,如果能获得关于线程共用存储器的知识,便应将共用大部分它们的寻址存储器的这些线程分配给具有有区别的oid的线程群。这将进程或线程群的最大数目限制在MAX_OID上。
动态oid分配方法认识到这样一个事实:只有在超高速缓存亲和性调度中有限数目的线程才有利,即能起动运行的线程的数目。通常,许多线程是在禁止状态中的,它们过了一段时间总要减少线程的超高速缓存足迹。因此,操作系统存在着有效的方法(i)如果线程或线程群已被禁止便重复使用该线程或线程群的oid;(ii)将该oid重新分配给不同的实体及(iii)一旦重新起动该线程或线程群便分配新的oid给它。在这一情况中,MAX_OID限制系统中已起动准备运行的线程的数目而不是线程的总数,这是由于内部资源制约而大多数多处理器操作系统总得必须做的事情。
两种方法各有利弊,其利弊取决于在这些系统上执行的工作量,从而选择静态方案或动态方案对本实施例是不能两全其美的。
虽然不限于此,大多数处理器设计将“setowner”及“getusage”指令作为专用寄存器指令(类似于超高速缓存行无效、或读实时时钟或检索/复位超高速缓存状态(如检索超高速缓存失中的数目)),或作为加载/存储指令提供,其中将CMU寄存器映射到处理器的物理地址范围的某一部分中。
作为示例在这里示出一个简单的指令序列,供操作系统利用基于寄存器的指令集及存储器映射的CMU寄存器的CPU-CMU接口。熟悉本技术的人员能容易地将本示例映射到其它指令集与/或专用寄存器上。不损失通用性,在本示例中的假定寄存器r4保持线程描述信息块的地址;OID_OFFSET描述存储这一线程的oid处在这一块中的某一固定位移量;CMU_OID常数描述将CMU oid寄存器映射到其上的物理地址;及CMU_VEC描述将CMU计数器矢量的第一项映射到其上的物理地址(每项两个字节)。
如早先所述,调度程序最好在利用类似于下述代码将执行切换到选定的任务之前的调度决定时间上设置oid_reg:
lds r3,r4(OID_OFFSET)//将线程<oid>16位值加载进寄存器r3中
ldwr5,@CMU_OID//加载CMU_OID寄存器的地址
stsx r3,0(r5)//在CMU_OID寄存器上的O-位移处存储16位
为了执行超高速缓存亲和性调度,调度程序必须为各线程建立作为超高速缓存足迹的函数的超高速缓存亲和性,并从而必须从CMU中检索超高速缓存足迹。
1 ds r3,r4(OID_OFFSET)//将线程<oid>16位值加载进寄存器r3
ldw r5,@CMU_VEC//加载CMU_OID寄存器的地址
shl r3,r3,1//左移一位以得到正确的矢量位移
ldsx r6,r3(r5)//将counter_vector[oid]的16位内容加载进r6中
超高速缓存足迹测定值现在存储在寄存器r6中并能将其与其它调度优先级组合以导出总体执行优先级。这在下面描述。
现在展示如何将超高速缓存监控装置的使用综合进操作系统调度程序中。首先描述图5中所示的通用与抽象算法,然后更详细地描述诸如图6中所示的UNIX调度程序等标准公平调度程序的综合。然而,注意本发明不限于这些描述。而是,熟悉本技术的人员应能导出将本发明的超高速缓存监控装置及基本算法综合进其它调度算法的进程。
最终,假定一组调度参数,所有调度程序都为各线程导出某一称作执行优先级的正规化的数,允许调度程序比较这些数以便选择下一个要执行的适当线程。不损失通用性,假定较大的数优先。图5示出有助于执行优先级ep(50)的总体计算的各种参数。以一定基本优先级bp(Tj)(51)建立线程T。为了提供某种程度的公平性,不总是以其基本优先级bp(Tj)调度线程Tj,相反,随着每一个时间量,通过将该线程的基本优先级bp(Tj)降低某一依赖于时间t的量θ≤ζ(t)≤bp(Tj)(53)来计算时间t上的其当前优先级cp(Tj,t)(52)。从而当前优先级cp(Tj,t)落入小于等于bp(Tj)的某一优先级间隔中。通常用某种简单的降级方案来实现ζ(t)。在非基于超高速缓存亲和性的调度中,执行优先级等于当前优先级。
ep(Tj,t)=cp(Tj,t)=bp(Tj)-ζ(Tj,t)    (式1)
由于在本发明中,在计算线程Tj在给定的处理器Pi上的执行优先级时考虑了线程Tj对处理器Pi的超高速缓存亲和性CA(Tj,Pi),这隐含着同一时间上对同一线程的执行优先级的计算在不同处理器上能产生不同的值。具体地,在每一个调度点上将线程的当前优先级cp(Tj,t)(52)(与处理器无关的)增加(54)Δp(55)(0≤Δp≤ΔP)。ΔP为线程能从这一方式增加的最大的优先级级数。Δp是通过某一单调函数ψ(CA(Tj,Pi))(56)从超高速缓存亲和性CA(Tj,Pi)(57)计算的。CA(Tj,Pi)本身是从用本发明的装置测定的线程Tj的超高速缓存足迹CFP(Tj,Pi)(59)通过单调函数(CFP(Tj,Pi))(58)计算的。从而这一执行优先级为线程的基本优先级、时间及处理器的函数,用其对该处理器的亲和性表示:
ep(Pi,Tj,t)=cp(Tj,t)+ΔP  (式2)
cp(Tj,t)=bp(Tj)-ζ(Tj,t)
Δp=Ψ(Θ(CFP(Pi,Tj)))
为了将这一点放置在具体的上下文中,现在用实例示出如何将本发明的装置综合进通用的公平的基于UNIX的调度程序中。注意,本发明并不将这种综合限制在这里所描述的一种上,而是熟悉本技术的人员应能将这一策略结合进其它调度算法中。通过引用将参考文献[2]结合在此。图6中所示为作为调度状态的主要部分的中央调度矢量或调度队列(60)。这一调度状态是所有处理器共用的,并利用锁定或其它公知的机制来适当协调对其存取。这是必要的,因为当当前运行的线程自愿将处理器放弃给另一线程或当在这一处理器上当前运行的线程用完时间量时,调度程序代码在每一个处理器上都执行。调度队列(60)概念性地组成队列Qi的队列,实际上作为队列Qi的数组(61a至61z),其中各队列Qi链接一组各保持诸如该线程的优先级及保存的寄存器等状态的线程控制块TCB(62a至62z)。存在着最大的优先级并从而在这一矢量中存在最大队列。当且仅当Tj准备好运行并在当前时间t上其当前优先级cp(Tj,t)为PRIOi时才将与线程Tj关联的TCBj排队到Qi中,其中0≤i≤PRIOmax。用TCBj表示的线程Tj是以基本优先级bp(Tj)建立的,其中PRIOmax/2≤bp(Tj)<PRIOmax-ΔP。随着每一时间量减量该线程的cp(Tj,t)直到它到达O或(bp(Tj)-PRIOmax/2)为止。在这一点上,再一次将其复位到bp(Tj)。
图6示出描述调度程序如何想要根据线程的超高速缓存亲和性增量线程的执行优先级的ΔP(63)的优先级间隔。例如,假定重新加载瞬态模型以确定超高速缓存的亲和性。如果重新加载瞬态非常小,如在必须重新取得以建立前一状态的超高速缓存行的数目中所测定的,则调度程序将允许优先级调节Δp(54)接近ΔP(63)。如果重新加载瞬态落到关键性阈值以下,调度程序并不考虑提高线程的优先级。Θ(CFP(Tj,Pi))(58)所确定的CA(Tj,Pi)简单地将是线程的超高速缓存足迹CFP(Tj,Pi)与其上一次执行之后该线程的超高速缓存足迹,即重新加载瞬态CFP(Tj,Pi)stop之间的差。ψ(CA(Tj,Pi))函数(56)可以是相当简单的函数(如移位及位屏蔽操作或关于线程的CA值的表查找)。
由于任何线程的优先级最多只能增加ΔP(63),调度程序只需要检查与/或计算队列Qcur至Qcur-(Δp-1)(61b…61d)的线程(62a…62f)的超高速缓存亲和性。为了导出CA(Tj,Pi)值,必须在每一处理器的基础上存储关于超高速缓存足迹或超高速缓存亲和性的某些信息。我们将这一每一处理器的值矢量称作亲和性实用矢量AUV(64)。取决于oid分配方法(单个的或成群的),AUV应与不同的数据结构关联。在单个分配方法中,AUV应与线程控制块TCB(65)本身关联。在成群的oid分配法中,AUV应与相关于该线程群的共享数据结构(66)关联,例如如果一个进程的所有线程共用同一oid,则与进程控制块关联。AUV(64)可采取下述各种语义。在基于时间印记的算法中,如在先有技术部分中所描述的,位矢量便足以作为AUV,升高该线程上一次在其上运行的处理器的位,或者如果上一次执行是在太远的过去,便将位矢量清零。在这一情况中,AUV矢量中的各项AUV[i]表示为Biti(位i),并存储二进制超高速缓存亲和性值。在重新加载瞬态模型的情况中,AUV[i]存储线程上一次停止在处理器Pi上执行时的超高速缓存足迹。
当调度算法在处理器Pi上执行时(如由于当前运行的线程的自愿放弃或由于定时器中断),调度程序必须检查队列Qcur至Qcur-Δp的所有线程Tj并将它们的cp(Tj,Pi)增加ψ(Θ(CFP(Tj,Pi))),及确定最大值。为了获得所有线程的CA(Tj,Pi)值,调度程序首先必须通过为这些线程的各个调用“getusage(Tj,oid)”来为各线程Tj检索超高速缓存足迹。
从而,具有近似地相同的当前优先级的多个线程趋向于重复地在它们以前运行的相同处理器上重复地调度,从而得到改进的性能。当前优先级cp(Tj,t)降低ζ(Tj,t)意味着即使具有非常高的亲和性的调度单位的执行优先级最终将落到具有较低超高速缓存亲和性的线程的执行优先级以下,这保证了处理器的公平与灵敏的调度。
下面描述维护超高速缓存亲和性实用状态及为了减少与超高速缓存监控单元的交互作用次数而检验这一状态的方法。如果查询CMU的开销是可观的,这种减少便成为重要的。这些方法中没有一种是可以万能地应用的,而是它们依赖于所选择的oid分配算法。
在各线程维护单个oid的情况中,可应用下述优化。(65)中示出与这一情况相关的数据结构。对于熟悉本技术的人员,显而易见对于具有唯一oid的线程,如果该线程不在Pi上运行,则该线程对处理器Pi的超高速缓存足迹CFP(Tj,Pi)及超高速缓存亲和性CA(Tj,Pi)都不增加。从而,调度程序只要(a)对上一个运行的线程Tj在一个时间量的结束上计算CA(Tj,Pi)last,及(b)当且仅当
cp(Vj)+ψ(CA(Tj,Pi)last)>epmax    (式3)
时在线程选择阶段中重新计算CA(Tj,Pi)便已足够,其中epmax为到目前为止找到的最大执行优先级。这一方案中的新线程应已存储最大的CA(Tj,Pi)last。这一算法导致对于具有低亲和性的线程,只重新取出(“getusage”)CFP有限次数(通常只是一次),因为每一次重取保证新计算的CA(Tj Pi)last更小。对于带有高超高速缓存亲和性的线程,在调度进程期间将更频繁地重取其CFP。
在线程组成群(66)的情况中,上述假设不成立。然而,能将调度时间上的CMU请求次数减少到在队列Qcur到Qcur-(Δp-1)(61b…61d)的集合中所表示的线程群的数目。每一个处理器矢量AUV是存储在对同一线程群的所有线程公共的独立数据结构(67)中的,如进程描述信息块。此外,每一次调度尝试时增量的时间印记,最好是每一个处理器的序号(66),指示在给定的处理器上为用oid标识的群描述信息块读取CFP的上一个时间。每一个调度周期中给定线程群的CFP必须只读取一次,这便是当其序号(66)并不与调度周期的当前序号匹配时。
在没有一种上述优化是满意的情况中,可采用下述近似方法。它可用于唯一oid及分群的oid分配方法两者。不是在每一个单一调度周期上访问合格的线程或线程群的超高速缓存足迹,调度程序可以周期性地,如每第n个调度周期,对给定的线程或线程群Tj获取CFP(Tj,Pi)。在所有其它调度周期中,调度程序能使用CFP的近似值,如先有技术部分中所述。例如,在重新加载瞬态方法中,调度程序能利用每一个调度周期必须只读一次的超高速缓存失中信息,并根据从上一次读取CFP(Tj,Pi)以来超高速缓存失中数目利用Markov链来估算CFP(Tj,Pi)的变化。这将一个估算因子引回调度算法中,然而,与先有技术部分中所描述的调度实践相比,这一方法并不遭遇先有技术部分中所介绍的相同的问题。首先因为只将CFP(Tj,Pi)映射到少数可能的Δp上,相互接近的CFP值最有可能映射到同一Δp上。从而,估算CFP(Tj,Pi)中的小误差并不具有任何后果。由于周期性地将估算的CFP(Tj,Pi)值复位到实际测定的一个CFP(Tj,Pi)上,小误差不能累积成对Δp计算结果上实际具有影响的大误差。

Claims (6)

1.在具有多个处理器且各处理器具有至少一个关联的超高速缓存的计算机系统中,在各处理器上调度线程的方法,包括:
a.通过测度所述各线程从所述各超高速缓存所取的活跃超高速缓存行的次数测定各所述处理器的各所述线程的超高速缓存足迹,其中一个线程所取的所述活跃超高速缓存行的次数的测度是通过下述各项进行的:
(i)指示哪一线程拥有取入到所述超高速缓存中的超高速缓存行的每一超高速缓存所有权标识符寄存器;
(ii)指示各所述超高速缓存行的拥有者线程的每一超高速缓存行拥有者标识;
(iii)每一超高速缓存计数器矢量,其中所述矢量的各分量指示所述线程之一对所述超高速缓存的对应一个所具有的所述超高速缓存足迹;以及
(iv)每一超高速缓存方法,以检索各所述线程的计数器矢量的内容;以及
b.利用在步骤a中所确定的其各自的超高速缓存足迹,确定各所述线程对各所述处理器的亲和性,其中至少按照其亲和性调度各所述线程在各所述处理器上执行。
2.权利要求1中所述方法,其中随每一次超高速缓存未命中更新所述超高速缓存足迹测定值。
3.权利要求1中所述方法,其中所述线程的数目可超过该计数器矢量的大小。
4.权利要求1中所述方法,其中通过将作为对处理器的亲和性的函数的执行优先级分配给所述处理器来调度各所述线程到处理器上执行。
5.权利要求4中所述方法,其中对于各所述线程,所述执行优先级为每一线程使用者分配的基本优先级、时间与超高速缓存亲和性的组合。
6.权利要求1中所述方法,其中在所述处理器之一上执行的调度程序能根据所述线程中的一个线程的早先计算的亲和性来确定所述一个线程是否产生最高的执行优先级,而不是每一个调度周期为所述线程重新计算执行优先级。
CNB991069501A 1998-06-17 1999-05-31 在具有关联的超高速缓存的处理器上调度线程的方法 Expired - Fee Related CN1133942C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/098,988 US6243788B1 (en) 1998-06-17 1998-06-17 Cache architecture to enable accurate cache sensitivity
US09/098988 1998-06-17

Publications (2)

Publication Number Publication Date
CN1239249A CN1239249A (zh) 1999-12-22
CN1133942C true CN1133942C (zh) 2004-01-07

Family

ID=22271873

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB991069501A Expired - Fee Related CN1133942C (zh) 1998-06-17 1999-05-31 在具有关联的超高速缓存的处理器上调度线程的方法

Country Status (6)

Country Link
US (1) US6243788B1 (zh)
EP (1) EP0965918A3 (zh)
JP (1) JP2000148518A (zh)
KR (1) KR100337219B1 (zh)
CN (1) CN1133942C (zh)
TW (1) TW508533B (zh)

Families Citing this family (65)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6216178B1 (en) * 1998-11-16 2001-04-10 Infineon Technologies Ag Methods and apparatus for detecting the collision of data on a data bus in case of out-of-order memory accesses of different times of memory access execution
JP3601677B2 (ja) * 1999-06-09 2004-12-15 日本電気株式会社 タスク処理システム
US7086053B2 (en) * 2000-06-12 2006-08-01 Sun Microsystems, Inc. Method and apparatus for enabling threads to reach a consistent state without explicit thread suspension
US6826754B1 (en) * 2000-09-29 2004-11-30 International Business Machines Corporation Method for eliminating or reducing hang conditions in computer systems
US6615316B1 (en) * 2000-11-16 2003-09-02 International Business Machines, Corporation Using hardware counters to estimate cache warmth for process/thread schedulers
US7069424B2 (en) * 2002-01-02 2006-06-27 Intel Corporation Placing front instruction in replay loop to front to place side instruction into execution stream upon determination of criticality
WO2003065214A1 (en) * 2002-01-30 2003-08-07 Real Enterprise Solutions Development B.V. Method of setting priority levels in a multiprogramming computer system with priority scheduling, multiprogramming computer system and program therefor
US8032891B2 (en) * 2002-05-20 2011-10-04 Texas Instruments Incorporated Energy-aware scheduling of application execution
US6920514B2 (en) * 2002-10-10 2005-07-19 International Business Machines Corporation Method, apparatus and system that cache promotion information within a processor separate from instructions and data
US6901483B2 (en) * 2002-10-24 2005-05-31 International Business Machines Corporation Prioritizing and locking removed and subsequently reloaded cache lines
US6928526B1 (en) 2002-12-20 2005-08-09 Datadomain, Inc. Efficient data storage system
US7496928B2 (en) * 2003-08-28 2009-02-24 Microsoft Corporation Method and system for moderating thread priority boost for I/O completion
US7401206B2 (en) * 2004-06-30 2008-07-15 Sun Microsystems, Inc. Apparatus and method for fine-grained multithreading in a multipipelined processor core
US7437538B1 (en) 2004-06-30 2008-10-14 Sun Microsystems, Inc. Apparatus and method for reducing execution latency of floating point operations having special case operands
US7373489B1 (en) 2004-06-30 2008-05-13 Sun Microsystems, Inc. Apparatus and method for floating-point exception prediction and recovery
US7890734B2 (en) * 2004-06-30 2011-02-15 Open Computing Trust I & II Mechanism for selecting instructions for execution in a multithreaded processor
US7631144B1 (en) * 2004-09-13 2009-12-08 Datadomain, Inc. Write latency efficient storage system
US8490101B1 (en) * 2004-11-29 2013-07-16 Oracle America, Inc. Thread scheduling in chip multithreading processors
US7721047B2 (en) * 2004-12-07 2010-05-18 International Business Machines Corporation System, method and computer program product for application-level cache-mapping awareness and reallocation requests
US8145870B2 (en) 2004-12-07 2012-03-27 International Business Machines Corporation System, method and computer program product for application-level cache-mapping awareness and reallocation
US7937709B2 (en) 2004-12-29 2011-05-03 Intel Corporation Synchronizing multiple threads efficiently
US20070061805A1 (en) * 2005-09-15 2007-03-15 Brenner Larry B Method and apparatus for improving thread posting efficiency in a multiprocessor data processing system
US7818747B1 (en) * 2005-11-03 2010-10-19 Oracle America, Inc. Cache-aware scheduling for a chip multithreading processor
US7865895B2 (en) * 2006-05-18 2011-01-04 International Business Machines Corporation Heuristic based affinity dispatching for shared processor partition dispatching
US7870551B2 (en) * 2006-05-18 2011-01-11 International Business Machines Corporation Optimization of thread wake up for shared processor partitions
US8533710B1 (en) * 2006-08-31 2013-09-10 Oracle America, Inc. Using observed thread activity to dynamically tune a virtual machine for responsiveness
US8356284B2 (en) * 2006-12-28 2013-01-15 International Business Machines Corporation Threading model analysis system and method
US7617375B2 (en) * 2007-03-28 2009-11-10 International Business Machines Corporation Workload management in virtualized data processing environment
US7698530B2 (en) * 2007-03-28 2010-04-13 International Business Machines Corporation Workload management in virtualized data processing environment
US7698531B2 (en) * 2007-03-28 2010-04-13 International Business Machines Corporation Workload management in virtualized data processing environment
US8219995B2 (en) * 2007-03-28 2012-07-10 International Business Machins Corporation Capturing hardware statistics for partitions to enable dispatching and scheduling efficiency
US8438003B2 (en) * 2007-04-12 2013-05-07 Cadence Design Systems, Inc. Methods for improved simulation of integrated circuit designs
US20080271027A1 (en) * 2007-04-27 2008-10-30 Norton Scott J Fair share scheduling with hardware multithreading
US8327363B2 (en) * 2007-07-24 2012-12-04 Microsoft Corporation Application compatibility in multi-core systems
US8544014B2 (en) * 2007-07-24 2013-09-24 Microsoft Corporation Scheduling threads in multi-core systems
US9588810B2 (en) * 2007-08-08 2017-03-07 Microsoft Technology Licensing, Llc Parallelism-aware memory request scheduling in shared memory controllers
US8510509B2 (en) * 2007-12-18 2013-08-13 International Business Machines Corporation Data transfer to memory over an input/output (I/O) interconnect
US7958313B2 (en) * 2007-12-18 2011-06-07 International Business Machines Corporation Target computer processor unit (CPU) determination during cache injection using input/output (I/O) adapter resources
US20090165004A1 (en) * 2007-12-21 2009-06-25 Jaideep Moses Resource-aware application scheduling
US8739165B2 (en) * 2008-01-22 2014-05-27 Freescale Semiconductor, Inc. Shared resource based thread scheduling with affinity and/or selectable criteria
JP5012628B2 (ja) * 2008-04-04 2012-08-29 日本電気株式会社 メモリデータベース、メモリデータベースシステム及びメモリデータベース更新方法
US8429665B2 (en) 2010-03-19 2013-04-23 Vmware, Inc. Cache performance prediction, partitioning and scheduling based on cache pressure of threads
US9189282B2 (en) * 2009-04-21 2015-11-17 Empire Technology Development Llc Thread-to-core mapping based on thread deadline, thread demand, and hardware characteristics data collected by a performance counter
US8881157B2 (en) * 2009-09-11 2014-11-04 Empire Technology Development Llc Allocating threads to cores based on threads falling behind thread completion target deadline
US20110066830A1 (en) * 2009-09-11 2011-03-17 Andrew Wolfe Cache prefill on thread migration
US9569270B2 (en) * 2009-04-21 2017-02-14 Empire Technology Development Llc Mapping thread phases onto heterogeneous cores based on execution characteristics and cache line eviction counts
JP2009277243A (ja) * 2009-07-21 2009-11-26 Panasonic Corp コンパイラ装置およびオペレーティングシステム
US8799912B2 (en) * 2009-07-22 2014-08-05 Empire Technology Development Llc Application selection of memory request scheduling
US8607234B2 (en) * 2009-07-22 2013-12-10 Empire Technology Development, Llc Batch scheduling with thread segregation and per thread type marking caps
US8839255B2 (en) * 2009-07-23 2014-09-16 Empire Technology Development Llc Scheduling of threads by batch scheduling
US8438574B1 (en) * 2009-08-14 2013-05-07 Translattice, Inc. Generating monotone hash preferences
US8959525B2 (en) * 2009-10-28 2015-02-17 International Business Machines Corporation Systems and methods for affinity driven distributed scheduling of parallel computations
WO2011130604A1 (en) * 2010-04-16 2011-10-20 Massachusetts Institute Of Technology Execution migration
US8935248B2 (en) 2010-05-17 2015-01-13 United States Postal Service Localized data affinity system and hybrid method
WO2012029149A1 (ja) * 2010-09-01 2012-03-08 富士通株式会社 情報処理プログラム、情報処理装置及び情報処理方法
US9015449B2 (en) 2011-03-27 2015-04-21 International Business Machines Corporation Region-weighted accounting of multi-threaded processor core according to dispatch state
WO2012153200A1 (en) 2011-05-10 2012-11-15 International Business Machines Corporation Process grouping for improved cache and memory affinity
KR20130093995A (ko) * 2012-02-15 2013-08-23 한국전자통신연구원 계층적 멀티코어 프로세서의 성능 최적화 방법 및 이를 수행하는 멀티코어 프로세서 시스템
JP6459784B2 (ja) 2015-06-03 2019-01-30 富士通株式会社 並列計算機、マイグレーションプログラム、及び、マイグレーション方法
US10282707B2 (en) * 2015-07-02 2019-05-07 International Business Machines Corporation Scheduling business process
GB2540761B (en) 2015-07-23 2017-12-06 Advanced Risc Mach Ltd Cache usage estimation
US10452397B2 (en) * 2017-04-01 2019-10-22 Intel Corporation Efficient multi-context thread distribution
US10691621B2 (en) * 2018-04-12 2020-06-23 Sony Interactive Entertainment Inc. Data cache segregation for spectre mitigation
US10698737B2 (en) * 2018-04-26 2020-06-30 Hewlett Packard Enterprise Development Lp Interoperable neural network operation scheduler
US11593167B2 (en) 2019-05-09 2023-02-28 International Business Machines Corporation Thread embedded cache management

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4985831A (en) * 1988-10-31 1991-01-15 Evans & Sutherland Computer Corp. Multiprocessor task scheduling system
US5185861A (en) * 1991-08-19 1993-02-09 Sequent Computer Systems, Inc. Cache affinity scheduler
JPH05204875A (ja) * 1992-01-27 1993-08-13 Mitsubishi Electric Corp スレッドのスケジュール方式
US5317738A (en) * 1992-02-18 1994-05-31 Ncr Corporation Process affinity scheduling method and apparatus
US5287508A (en) * 1992-04-07 1994-02-15 Sun Microsystems, Inc. Method and apparatus for efficient scheduling in a multiprocessor system
US5553305A (en) * 1992-04-14 1996-09-03 International Business Machines Corporation System for synchronizing execution by a processing element of threads within a process using a state indicator
US5745778A (en) * 1994-01-26 1998-04-28 Data General Corporation Apparatus and method for improved CPU affinity in a multiprocessor system
US5826081A (en) * 1996-05-06 1998-10-20 Sun Microsystems, Inc. Real time thread dispatcher for multiprocessor applications
US5724586A (en) * 1996-09-30 1998-03-03 Nec Research Institute, Inc. Method for improving cache locality of a computer program
US5974438A (en) * 1996-12-31 1999-10-26 Compaq Computer Corporation Scoreboard for cached multi-thread processes

Also Published As

Publication number Publication date
KR100337219B1 (ko) 2002-05-17
JP2000148518A (ja) 2000-05-30
KR20000005675A (ko) 2000-01-25
US6243788B1 (en) 2001-06-05
EP0965918A2 (en) 1999-12-22
TW508533B (en) 2002-11-01
CN1239249A (zh) 1999-12-22
EP0965918A3 (en) 2004-01-21

Similar Documents

Publication Publication Date Title
CN1133942C (zh) 在具有关联的超高速缓存的处理器上调度线程的方法
JP6924820B2 (ja) ワーキングセットおよびスレッドの関連付け
EP3129887B1 (en) Multiple data prefetchers that defer to one another based on prefetch effectiveness by memory access type
Xie et al. PIPP: Promotion/insertion pseudo-partitioning of multi-core shared caches
Voelker et al. Implementing cooperative prefetching and caching in a globally-managed memory system
KR101361945B1 (ko) 컴퓨터 스레드들의 이종 리소스들로의 맵핑
Romer et al. Reducing TLB and memory overhead using online superpage promotion
KR101626533B1 (ko) 가비지 콜렉션을 위한 gpu 서포트
KR20210005719A (ko) 멀티 스레드, 자체 스케줄링 프로세서내 메모리 요청 크기 관리
KR20210014642A (ko) 자체 스케줄링 프로세서에 작업 디스크립터 패킷을 이용한 스레드 개시
KR20210003263A (ko) 자체 스케줄링 프로세서 및 하이브리드 스레딩 패브릭을 갖는 시스템의 작업 디스크립터 패킷을 이용한 스레드 개시 및 완료
KR20210006933A (ko) 자체 스케줄링 프로세서 및 하이브리드 스레딩 패브릭을 갖는 시스템내 이벤트 메시징
US6829698B2 (en) Method, apparatus and system for acquiring a global promotion facility utilizing a data-less transaction
KR20210003269A (ko) 멀티 스레드, 자체 스케줄링 프로세서에 의한 로컬 또는 원격 컴퓨팅 엘리먼트 상에 스레드 생성
KR20210005940A (ko) 멀티 스레드, 자체 스케줄링 프로세서 내 스레드 우선 순위 관리
KR20210003267A (ko) 멀티 스레드, 자체 스케줄링 프로세서를 갖는 시스템의 스레드 상태 모니터링
KR20210003258A (ko) 멀티 스레드, 자체 스케줄링 프로세서
KR20210005946A (ko) 사용자 모드, 멀티 스레드, 자체 스케줄링 프로세서 내 시스템 호출 관리
US9189410B2 (en) Hypervisor-based flash cache space management in a multi-VM environment
US20040073909A1 (en) High speed promotion mechanism suitable for lock acquisition in a multiprocessor data processing system
US20040073766A1 (en) Method, apparatus and system for allocating and accessing memory-mapped facilities within a data processing system
JPH0696039A (ja) スケジューリング装置及び方法
KR20120017471A (ko) 스레드 시프트 : 스레드들의 코어들로의 할당
Garcia-Garcia et al. Contention-aware fair scheduling for asymmetric single-ISA multicore systems
Shah et al. Effective mimicry of belady’s min policy

Legal Events

Date Code Title Description
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C06 Publication
PB01 Publication
C14 Grant of patent or utility model
GR01 Patent grant
C17 Cessation of patent right
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20040107

Termination date: 20100531