处理器以及调度方法与流程

文档序号:11864493阅读:285来源:国知局
本发明涉及一种多线程处理器及其调度方法,特别涉及一种用以执行同步多线程的处理器及其调度方法。
背景技术
::多线程(Multi-threading)定义为在一个物理处理器上同时执行多个线程,并且通过多线程的方式,使得处理器的一个物理内核(physicalcore)可视为多个逻辑内核(logicalcore)正在并行执行。当多个线程同时使用处理器的资源时,同步多线程使得处理器的资源能够更有效率地被使用。数个线程因而可在一个同步多线程的处理器上同时执行,使得现代处理器的强大硬件资源,例如译码单元(decodeunit)、保留站(ReservationStation)以及执行单元(如浮点单元、定点指令单元(fixedpointinstructionunit)、载入/存储单元等)等不会闲置,从而提高处理器的执行效率。然而,当处理器执行同步多线程时,大多根据先到先处理(firstarrivedfirstserved)的规则分配硬件资源或将硬件资源平均分配给每一线程,但是这样静态分配方式并不适用于某些软件应用。因此,有必要针对同步多线程的处理器进行有效的资源分配,进而提升处理器的执行效率。技术实现要素:有鉴于此,本发明提出一种处理器,包括:一执行单元、一第一线程退出模块、一第二线程退出模块以及一调整模块。上述执行单元用以同步多线程地执行一第一线程的指令以及一第二线程的指令。当上述执行单元完成上述第一线程的指令中的一个时,上述第一线程退出模块退出完成的上述第一线程的指令。当上述执行单元完成上述第二线程的指令中的一个时,上述第二线程退出模块退出完成的上述第二线程的指令。上述调整模块根据上述第一线程的一第一多线退出速率、上述第二线程的一第二多线退出速率以及一分配逻辑,调整上述第一线程以及上述第二线程分别占用一硬件资源的比例,使得上述处理器的执行效率最高。本发明还提出一种调度方法,适用于同步多线程的一处理器,包括:同步多线程地执行一第一线程的指令以及一第二线程的指令;按照上述第一线程中的指令顺序退出完成的上述第一线程的指令,并且按照上述第二线程中的指令顺序退出完成的上述第二线程的指令;利用一第一退出计数器统计上述第一线程的指令的一第一多线退出速率;利用一第二退出计数器统计上述第二线程的指令的一第二多线退出速率;以及利用一调整模块根据上述第一多线退出速率以及上述第二多线退出速率,调整上述第一线程以及上述第二线程分别占用上述处理器的一硬件资源的比例,使得上述处理器的执行效率最高。本发明的处理器及其调度方法根据多线程的实际执行统计各线程的退出速率,根据统计的退出速率动态调整处理器的硬件资源的分配,使得处理器的执行效率最高。因为不同线程以及线程的不同组合在同步多线程地执行时的多线退出速率都会有所不同,本发明的处理器的调整模块中内置了多种不同的控制逻辑供选择来控制硬件资源的分配,根据不同线程的退出速率来切换不同的控制逻辑,灵活性更强。附图说明图1是显示根据本发明的一实施例所述的处理器的方块图;图2是显示根据本发明的另一实施例所述的处理器的方块图;以及图3是显示根据本发明的一实施例所述的调度方法的流程图。【符号说明】100、200处理器102、202前端流水线104、204重命名模块110、210保留站120、220执行单元130、230退出模块141、241第一线程退出计数器142、242第二线程退出计数器150、250调整模块231第一线程退出模块232第二线程退出模块S31~S36步骤流程具体实施方式以下说明为本发明的实施例。其目的是要举例说明本发明一般性的原则,不应视为本发明的限制,本发明的范围当以权利要求书所界定者为准。值得注意的是,以下所公开的内容可提供多个用以实践本发明的不同特点的实施例或范例。以下所述的特殊的元件范例与安排仅用以简单扼要地阐述本发明的精神,并非用以限定本发明的范围。此外,以下说明书可能在多个范例中重复使用相同的元件符号或文字。然而,重复使用的目的仅为了提供简化并清楚的说明,并非用以限定多个以下所讨论的实施例和/或配置之间的关系。此外,以下说明书所述的一个特征连接至、耦接至和/或形成于另一特征之上等的描述,实际可包含多个不同的实施例,包括该等特征直接接触,或者包含其它额外的特征形成于该等特征之间等等,使得该等特征并非直接接触。图1是显示根据本发明的一实施例所述的处理器的方块图。如图1所示,处理器100包括执行单元(executionunit)120、退出模块130、第一退出计数器141、第二退出计数器142以及调整模块150,其中处理器100用以执行同步多线程(simultaneouslymultithreading)。在处理器100为一超标量流水线(乱序执行)处理器的实施例中,处理器100还包括前端流水线102、重命名模块(renamemodule)104以及保留站(reservationstation)110等。其中前端流水线102还包括例如指令高速缓存(instructionbuffer)及取指译码模块(fetchanddecodemodule)等,其中指令高速缓存用以缓存多个线程的宏指令,例如x86指令集架构等的指令集架构的宏指令;取指译码模块用以接收多个线程的宏指令并将其翻译成微指令(或微操作或“μops”)等。多个线程的微指令被提供到重命名模块104,重命名模块104产生微指令的依赖性(dependency),并按照各个线程中的指令顺序向保留站110发射微指令(后面简称为“指令”)。保留站110将指令乱序派遣到多个执行单元112中合适的一个,具体而言,当指令准备好被执行时,每个保留站队列(RSqueue)向对应的执行单元120调度(schedule)并派遣(dispatch)对应的指令。值得注意的是,在乱序执行的处理器中,重命名模块104及其之前的指令还按照各个线程中的指令顺序在走,而指令在后面的保留站110和执行单元120中都是乱序的,即哪个指令的运算元(operand)先准备好,保留站110就先派遣谁到执行单元120执行,打破了原先各个线程中的指令顺序。执行单元120用以同步多线程地执行多个线程的第一线程的指令以及第二线程的指令。当执行单元120完成第一线程的一指令时,退出模块130将完成的第一线程的指令按照第一线程中的指令顺序退出(retire)。同样的,当执行单元120完成第二线程的一指令时,退出模块130将完成的第二线程的指令按照第二线程中的指令顺序退出。根据本发明的其他实施例,退出模块130还记录关于从重命名模块104发射的每个指令的相关信息(例如第一和第二线程中的指令顺序等)以保证指令被执行单元120乱序执行以后可以按照原来第一和第二线程中的指令顺序按序退出。根据本发明的其他实施例,处理器100可同步多线程执行任意数个线程。为了详细说明本发明的目的,在此仅以处理器100执行第一线程以及第二线程作为范例,并非以任何形式限定于此。第一退出计数器141统计第一线程的指令的一第一多线退出速率、第二退出计数器142统计第二线程的指令的一第二多线退出速率。在一实施例中,退出模块130辨识其所退出的指令属于第一线程或第二线程,并通知对应的第一退出计数器141或第二退出计数器142。如前所述,在处理器100为超标量流水线(乱序执行)处理器的实施例中,退出模块130记录着每个指令的相关信息(例如其属于哪个线程以及指令顺序等),当指令从退出模块130按照原来第一和第二线程中的指令顺序按序退出时,退出模块130根据其属于第一或第二线程,对应通知第一退出计数器141或第二退出计数器142。例如,当所退出的指令属于第一线程时,通知第一退出计数器141加1;当所退出的指令属于第二线程时,通知第二退出计数器142加1。调整模块150根据第一退出计数器141统计的第一多线退出速率以及第二退出计数器142统计的第二多线退出速率,调整第一线程以及第二线程分别占用该处理器100的硬件资源的比例,使得处理器100的执行效率最高。在一实施例中,处理器100的硬件资源包括重命名模块104、保留站110或者退出模块130中的资源。以处理器100的硬件资源为保留站110中的资源为例,调整模块150根据第一多线退出速率以及第二多线退出速率,调整保留站110分别分配给第一线程以及第二线程的保留站队列(RSqueue)的比例。以处理器100的硬件资源为退出模块130中的资源为例,调整模块150根据第一多线退出速率以及第二多线退出速率,调整第一线程以及第二线程分别占用退出模块130中重命名缓冲器(reorderbuffer,ROB)的资源的比例。以处理器100的硬件资源为重命名模块104中的资源为例,调整模块150根据第一多线退出速率以及第二多线退出速率,调整第一线程以及第二线程分别占用重命名模块104中的寄存器别名表(registeraliastable,RAT)的资源(例如物理寄存器physicalRegister)的比例。图2是显示根据本发明的另一实施例所述的处理器的方块图。如图2所示,处理器200包括保留站210、执行单元220、退出模块230、第一退出计数器241、第二线程退出计数器242以及调整模块250(包括多个控制逻辑251~25N)。在处理器200为一超标量流水线(乱序执行)处理器的实施例中,处理器200还包括前端流水线202、重命名模块(renamemodule)204以及保留站(reservationstation)210等。其中前端流水线202、重命名模块204、保留站210、执行单元220、退出模块230、第一退出计数器241、第二退出计数器242以及调整模块250分别对应至图1之前端流水线102、重命名模块104、保留站(reservationstation)110、执行单元120、退出模块130、第一退出计数器141、第二退出计数器142以及调整模块150。根据本发明的一实施例,退出模块230还包括第一线程退出模块231及第二线程退出模块232,分别退出第一和第二线程的指令。第一退出计数器241计数第一线程退出模块231在第一既定数量的时钟周期中所退出的第一线程的指令数目为第一指令数目,其中调整模块150将第一指令数目除以第一既定数量而得第一多线退出速率。也就是,第一多线退出速率代表第一线程平均在每一时钟周期中,退出的第一线程的指令数目。同样的,第二退出计数器242用以计数第二线程退出模块232在第二既定数量的时钟周期中所退出的第二线程的指令数目为第二指令数目,其中调整模块250还将第二指令数目除以第二既定数量而得第二多线退出速率。也就是,第二多线退出速率代表第二线程平均在每一时钟周期中,退出的第二线程的指令数目。值得注意的是,第一线程退出模块231及第二线程退出模块232在物理上为同一套逻辑电路,共用退出模块230的输入输出,如前所述,退出模块230根据其所记录的指令相关信息得知其退出的指令属于第一或第二线程从而通知第一退出计数器141或第二退出计数器142计数。根据本发明的一实施例,第一既定数量可与第二既定数量相同或不同。根据本发明的一实施例,第一退出计数器241以及第二退出计数器242可周期性地重置。根据本发明的一实施例,调整模块250进一步包括N个控制逻辑251~25N,调整模块150或250根据第一和第二多线退出速率选取控制逻辑251~25N中的至少一个,并根据所选取的该控制逻辑调整第一及第二线程分别占用硬件资源的比例,使得第一及第二线程均衡地使用硬件资源,进而达到图1的处理器100以及图2的处理器200执行的最大效率。控制逻辑251~25N之一举例而言为:一个线程的多线退出速率越快,就分配越多的硬件资源(例如保留站队列)给该线程。控制逻辑251~25N之一再举例而言为:一个线程的多线退出速率越快,就分配越少的硬件资源给该线程。控制逻辑251~25N之一再举例而言为:为每个线程设置占用硬件资源的邻限比例,包括最低邻限比例和/或最高邻限比例,例如保留站210一共有30个保留站队列,为第一线程设置最低邻限比例为7,当第二线程已经占用了23个保留站队列,即便有更多的第二线程的指令从重命名模块204发射至保留站210,处理器200也不会再为第二线程的指令分配保留站队列而是停住前端流水线202再取指第二线程的指令;为第一线程设置最高邻限比例为15,当第一线程已经占用了15个保留站队列,即便有更多的第一线程的指令从重命名模块204发射至保留站210,处理器200也不会再为第一线程的指令分配保留站队列而是停住前端流水线202再取指第一线程的指令。控制逻辑251~25N之一再举例而言为:自由分配硬件资源给要求该资源的线程,即不根据多线退出速率动态分配,而是自由分配。根据本发明的一实施例,图1的调整模块150以及图2的调整模块250更根据第一多线退出速率以及第二多线退出速率计算第一公平系数以及第二公平系数,并且根据公平系数A调整第一线程以及第二线程分别占用硬件资源的比例,其中公平系数如公式1所示,R0,T1为第一单线退出速率、R0,T2为第二单线退出速率、RSMT,T1为第一多线(SMT)退出速率以及RSMT,T2为第二多线(SMT)退出速率。第一单线退出速率R0,T1为图1的执行单元120以及图2的执行单元220单线执行第一线程时,退出模块130或230平均每一时钟周期中退出的第一线程的指令数目。同样的,第二单线退出速率R0,T2为图1的执行单元120以及图2的执行单元220单线执行第二线程时,退出模块130或230平均每一时钟周期中退出的第二线程的指令数目。由于图1的执行单元120以及图2的执行单元220进行单线执行时势必将所有的资源投注于第一线程或第二线程上,因此单线退出速率必定大于对应的多线退出速率。也就是,第一单线退出速率R0,T1大于第一多线退出速率RSMT,T1,第二单线退出速率R0,T2大于第二多线退出速率RSMT,T2。第一公平系数为第一单线退出速率R0,T1除以第一多线退出速率RSMT,T1,第二公平系数为第二单线退出速率R0,T2除以第二多线退出速率RSMT,T2。为了使得图1的处理器100以及图2的处理器200进行同步多线程的效率最佳,图1的调整模块150以及图2的调整模块250调整第一线程以及第二线程分别占用处理器100或200的硬件资源的比例使得该公平系数A尽可能小。当然本发明并不限于用公平系数A作为第一及第二线程均衡地使用硬件资源的判断标准,也可以使用其它判断标准来衡量。根据本发明的一实施例,如图2所示,调整模块250进一步包括N个控制逻辑251~25N,调整模块150或250选取控制逻辑251~25N中的至少一个,选取的原则例如是选取使得公平系数A相对最小的控制逻辑,调整模块150或250根据所选取的该控制逻辑控制硬件资源分配,可以让第一线程以及第二线程能够均衡地使用硬件资源,进而达到图1的处理器100以及图2的处理器200执行的最大效率。根据本发明的一实施例,图1的调整模块150以及图2的调整模块250还包括M个控制寄存器2511~251M,其中控制寄存器2511~251M用以启动以及关闭对应的控制逻辑251~251N。其中M等于N,但本发明不限于此,M也可以小于N。根据本发明的一实施例,图1的调整模块150以及图2的调整模块250设置控制寄存器2511~251M从而选取控制逻辑251~251N中的一个或多个,以所选取的控制逻辑调整第一线程以及第二线程占用硬件资源的比例。在其它实施例中,可以由使用者(如果开放给使用者选择的话)或者程序开发者,或者一能够自动计算上述公平系数的调试程序通过特殊模块寄存器(ModelSpecificRegister,MSR)写指令writeMSR设置控制寄存器2511~251M从而选取对应的控制逻辑251~251N中的一个或多个,以所选取的控制逻辑调整第一线程以及第二线程占用硬件资源的比例。举例而言,调试模块150或250(或使用者或程序开发者或调试程序)根据要同步执行的多个线程来分别统计出第一和第二多线退出速率、第一和第二单线退出速率来计算公平系数A,从而选择控制逻辑251~251N中使得公平系数A最小的控制逻辑,在同步多线程地执行第一和第二线程时,由该选择的控制逻辑来控制硬件资源(如保留站队列)的分配。图3是显示根据本发明的一实施例所述的调度方法的流程图。如图3所示,首先,同步多线程地执行第一线程的指令以及第二线程的指令(步骤S31)。当完成第一线程的指令中的一个时,按照第一线程中的指令顺序退出完成的第一线程的指令(步骤S32)。当完成第二线程的指令中的一个时,按照第二线程中的指令顺序退出完成的第二线程的指令(步骤S33)。值得注意的是,步骤S32和S33的执行不分先后。接着统计第一线程的指令的第一多线退出速率(步骤S34)。统计第二线程的指令的第二多线退出速率(步骤S35)。根据第一线程的第一多线退出速率以及第二线程的第二多线退出速率调整第一线程以及第二线程分别占用硬件资源的比例(步骤S36),使得处理器的执行效率最高。本发明的处理器及其调度方法根据多线程的实际执行统计各线程的退出速率,根据统计的退出速率动态调整处理器的硬件资源的分配,使得处理器的执行效率最高。因为不同线程以及线程的不同组合在同步多线程地执行时的多线退出速率都会有所不同,本发明的处理器的调整模块中内置了多种不同的控制逻辑供选择来控制硬件资源的分配,根据不同线程的退出速率来切换不同的控制逻辑,灵活性更强。以上所述为实施例的概述特征。本领域技术人员应可以轻而易举地利用本发明为基础设计或调整以实行相同的目的和/或达成此处介绍的实施例的相同优点。本领域技术人员也应了解相同的配置不应背离本创作的精神与范围,在不背离本创作的精神与范围下他们可做出各种改变、取代和交替。说明性的方法仅表示示范性的步骤,但这些步骤并不一定要以所表示的顺序执行。可另外加入、取代、改变顺序和/或消除步骤以视情况而作调整,并与所公开的实施例精神和范围一致。当前第1页1 2 3 当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1