CN106126336A - 处理器以及调度方法 - Google Patents
处理器以及调度方法 Download PDFInfo
- Publication number
- CN106126336A CN106126336A CN201610435604.8A CN201610435604A CN106126336A CN 106126336 A CN106126336 A CN 106126336A CN 201610435604 A CN201610435604 A CN 201610435604A CN 106126336 A CN106126336 A CN 106126336A
- Authority
- CN
- China
- Prior art keywords
- mentioned
- thread
- withdrawal
- instruction
- rate
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 24
- 238000005096 rolling process Methods 0.000 claims 4
- 230000000875 corresponding effect Effects 0.000 description 3
- 230000001276 controlling effect Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000004899 motility Effects 0.000 description 2
- 230000002596 correlated effect Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000005303 weighing Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3851—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation 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/5038—Allocation 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 the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3854—Instruction completion, e.g. retiring, committing or graduating
- G06F9/3858—Result writeback, i.e. updating the architectural state or memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Advance Control (AREA)
Abstract
一种处理器以及调度方法,该处理器包括:执行单元、退出模块、第一退出计数器、第二退出计数器以及调整模块。执行单元同步多线程地执行第一线程以及第二线程的指令。退出模块按照第一线程中的指令顺序退出完成的第一线程的指令,并且按照第二线程中的指令顺序退出完成的第二线程的指令。第一退出计数器统计第一线程的指令的第一多线退出速率,第二退出计数器统计第二线程的指令的第二多线退出速率。调整模块根据第一多线退出速率以及第二多线退出速率,调整第一线程以及第二线程分别占用处理器的硬件资源的比例,使得处理器的执行效率最高。
Description
技术领域
本发明涉及一种多线程处理器及其调度方法,特别涉及一种用以执行同步多线程的处理器及其调度方法。
背景技术
多线程(Multi-threading)定义为在一个物理处理器上同时执行多个线程,并且通过多线程的方式,使得处理器的一个物理内核(physical core)可视为多个逻辑内核(logical core)正在并行执行。当多个线程同时使用处理器的资源时,同步多线程使得处理器的资源能够更有效率地被使用。数个线程因而可在一个同步多线程的处理器上同时执行,使得现代处理器的强大硬件资源,例如译码单元(decode unit)、保留站(ReservationStation)以及执行单元(如浮点单元、定点指令单元(fixed point instruction unit)、载入/存储单元等)等不会闲置,从而提高处理器的执行效率。
然而,当处理器执行同步多线程时,大多根据先到先处理(first arrived firstserved)的规则分配硬件资源或将硬件资源平均分配给每一线程,但是这样静态分配方式并不适用于某些软件应用。因此,有必要针对同步多线程的处理器进行有效的资源分配,进而提升处理器的执行效率。
发明内容
有鉴于此,本发明提出一种处理器,包括:一执行单元、一第一线程退出模块、一第二线程退出模块以及一调整模块。上述执行单元用以同步多线程地执行一第一线程的指令以及一第二线程的指令。当上述执行单元完成上述第一线程的指令中的一个时,上述第一线程退出模块退出完成的上述第一线程的指令。当上述执行单元完成上述第二线程的指令中的一个时,上述第二线程退出模块退出完成的上述第二线程的指令。上述调整模块根据上述第一线程的一第一多线退出速率、上述第二线程的一第二多线退出速率以及一分配逻辑,调整上述第一线程以及上述第二线程分别占用一硬件资源的比例,使得上述处理器的执行效率最高。
本发明还提出一种调度方法,适用于同步多线程的一处理器,包括:同步多线程地执行一第一线程的指令以及一第二线程的指令;按照上述第一线程中的指令顺序退出完成的上述第一线程的指令,并且按照上述第二线程中的指令顺序退出完成的上述第二线程的指令;利用一第一退出计数器统计上述第一线程的指令的一第一多线退出速率;利用一第二退出计数器统计上述第二线程的指令的一第二多线退出速率;以及
利用一调整模块根据上述第一多线退出速率以及上述第二多线退出速率,调整上述第一线程以及上述第二线程分别占用上述处理器的一硬件资源的比例,使得上述处理器的执行效率最高。
本发明的处理器及其调度方法根据多线程的实际执行统计各线程的退出速率,根据统计的退出速率动态调整处理器的硬件资源的分配,使得处理器的执行效率最高。因为不同线程以及线程的不同组合在同步多线程地执行时的多线退出速率都会有所不同,本发明的处理器的调整模块中内置了多种不同的控制逻辑供选择来控制硬件资源的分配,根据不同线程的退出速率来切换不同的控制逻辑,灵活性更强。
附图说明
图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包括执行单元(execution unit)120、退出模块130、第一退出计数器141、第二退出计数器142以及调整模块150,其中处理器100用以执行同步多线程(simultaneouslymultithreading)。
在处理器100为一超标量流水线(乱序执行)处理器的实施例中,处理器100还包括前端流水线102、重命名模块(rename module)104以及保留站(reservation station)110等。其中前端流水线102还包括例如指令高速缓存(instruction buffer)及取指译码模块(fetch and decode module)等,其中指令高速缓存用以缓存多个线程的宏指令,例如x86指令集架构等的指令集架构的宏指令;取指译码模块用以接收多个线程的宏指令并将其翻译成微指令(或微操作或“μops”)等。多个线程的微指令被提供到重命名模块104,重命名模块104产生微指令的依赖性(dependency),并按照各个线程中的指令顺序向保留站110发射微指令(后面简称为“指令”)。保留站110将指令乱序派遣到多个执行单元112中合适的一个,具体而言,当指令准备好被执行时,每个保留站队列(RS queue)向对应的执行单元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分别分配给第一线程以及第二线程的保留站队列(RS queue)的比例。以处理器100的硬件资源为退出模块130中的资源为例,调整模块150根据第一多线退出速率以及第二多线退出速率,调整第一线程以及第二线程分别占用退出模块130中重命名缓冲器(reorder buffer,ROB)的资源的比例。以处理器100的硬件资源为重命名模块104中的资源为例,调整模块150根据第一多线退出速率以及第二多线退出速率,调整第一线程以及第二线程分别占用重命名模块104中的寄存器别名表(register alias table,RAT)的资源(例如物理寄存器physical Register)的比例。
图2是显示根据本发明的另一实施例所述的处理器的方块图。如图2所示,处理器200包括保留站210、执行单元220、退出模块230、第一退出计数器241、第二线程退出计数器242以及调整模块250(包括多个控制逻辑251~25N)。在处理器200为一超标量流水线(乱序执行)处理器的实施例中,处理器200还包括前端流水线202、重命名模块(rename module)204以及保留站(reservation station)210等。其中前端流水线202、重命名模块204、保留站210、执行单元220、退出模块230、第一退出计数器241、第二退出计数器242以及调整模块250分别对应至图1之前端流水线102、重命名模块104、保留站(reservation station)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中的一个或多个,以所选取的控制逻辑调整第一线程以及第二线程占用硬件资源的比例。在其它实施例中,可以由使用者(如果开放给使用者选择的话)或者程序开发者,或者一能够自动计算上述公平系数的调试程序通过特殊模块寄存器(Model Specific Register,MSR)写指令write MSR设置控制寄存器2511~251M从而选取对应的控制逻辑251~251N中的一个或多个,以所选取的控制逻辑调整第一线程以及第二线程占用硬件资源的比例。举例而言,调试模块150或250(或使用者或程序开发者或调试程序)根据要同步执行的多个线程来分别统计出第一和第二多线退出速率、第一和第二单线退出速率来计算公平系数A,从而选择控制逻辑251~251N中使得公平系数A最小的控制逻辑,在同步多线程地执行第一和第二线程时,由该选择的控制逻辑来控制硬件资源(如保留站队列)的分配。
图3是显示根据本发明的一实施例所述的调度方法的流程图。如图3所示,首先,同步多线程地执行第一线程的指令以及第二线程的指令(步骤S31)。当完成第一线程的指令中的一个时,按照第一线程中的指令顺序退出完成的第一线程的指令(步骤S32)。当完成第二线程的指令中的一个时,按照第二线程中的指令顺序退出完成的第二线程的指令(步骤S33)。值得注意的是,步骤S32和S33的执行不分先后。接着统计第一线程的指令的第一多线退出速率(步骤S34)。统计第二线程的指令的第二多线退出速率(步骤S35)。根据第一线程的第一多线退出速率以及第二线程的第二多线退出速率调整第一线程以及第二线程分别占用硬件资源的比例(步骤S36),使得处理器的执行效率最高。
本发明的处理器及其调度方法根据多线程的实际执行统计各线程的退出速率,根据统计的退出速率动态调整处理器的硬件资源的分配,使得处理器的执行效率最高。因为不同线程以及线程的不同组合在同步多线程地执行时的多线退出速率都会有所不同,本发明的处理器的调整模块中内置了多种不同的控制逻辑供选择来控制硬件资源的分配,根据不同线程的退出速率来切换不同的控制逻辑,灵活性更强。
以上所述为实施例的概述特征。本领域技术人员应可以轻而易举地利用本发明为基础设计或调整以实行相同的目的和/或达成此处介绍的实施例的相同优点。本领域技术人员也应了解相同的配置不应背离本创作的精神与范围,在不背离本创作的精神与范围下他们可做出各种改变、取代和交替。说明性的方法仅表示示范性的步骤,但这些步骤并不一定要以所表示的顺序执行。可另外加入、取代、改变顺序和/或消除步骤以视情况而作调整,并与所公开的实施例精神和范围一致。
Claims (20)
1.一种处理器,包括:
执行单元,用以同步多线程地执行第一线程的指令以及第二线程的指令;
退出模块,按照上述第一线程中的指令顺序退出完成的上述第一线程的指令,并且按照上述第二线程中的指令顺序退出完成的上述第二线程的指令;
第一退出计数器,用以统计上述第一线程的指令的第一多线退出速率;
第二退出计数器,用以统计上述第二线程的指令的第二多线退出速率;以及
调整模块,根据上述第一多线退出速率以及上述第二多线退出速率,调整上述第一线程以及上述第二线程分别占用上述处理器的硬件资源的比例,使得上述处理器的执行效率最高。
2.如权利要求1所述的处理器,其中:
上述第一退出计数器计数上述退出模块在第一既定数量的时钟周期中所退出的上述第一线程的指令的第一指令数目,其中上述第一多线退出速率为上述第一指令数目除以上述第一既定数量;以及
上述第二退出计数器计数上述退出模块在第二既定数量的时钟周期中所退出的上述第二线程的指令的第二指令数目,其中上述第二多线退出速率为上述第二指令数目除以上述第二既定数量。
3.如权利要求1所述的处理器,其中上述退出模块辨识其所退出的指令属于上述第一线程或上述第二线程,并通知对应的上述第一退出计数器或上述第二退出计数器。
4.如权利要求1所述的处理器,其中上述第一退出计数器更统计上述第一线程的指令的第一单线退出速率,上述第二退出计数器更统计上述第二线程的指令的第二单线退出速率,且上述调整模块根据第一公平系数以及第二公平系数之和,调整上述第一线程以及上述第二线程分别占用上述硬件资源的比例,其中上述第一单线退出速率为上述执行单元单线执行上述第一线程的指令时平均在每一时钟周期中退出的指令数目,其中上述第二单线退出速率为上述执行单元单线执行上述第二线程的指令时平均在每一时钟周期中退出的指令数目,其中上述第一公平系数为上述第一单线退出速率除以上述第一多线退出速率,上述第二公平系数为上述第二单线退出速率除以上述第二多线退出速率。
5.如权利要求4所述的处理器,其中上述调整模块调整上述第一线程以及上述第二线程分别占用上述硬件资源的比例使得上述第一公平系数与上述第二公平系数之和尽可能小。
6.如权利要求4所述的处理器,其中上述调整模块包括多个控制逻辑,其中上述调整模块选取一个或多个使得上述第一公平系数与上述第二公平系数之和最小的控制逻辑,并且根据所选取的上述控制逻辑调整上述第一线程以及上述第二线程分别占用上述硬件资源的比例。
7.如权利要求1所述的处理器,其中上述调整模块包括多个控制逻辑,其中上述调整模块选取上述控制逻辑的至少其中之一,并且根据所选取的上述控制逻辑调整上述第一线程以及上述第二线程分别占用上述硬件资源的比例。
8.如权利要求7所述的处理器,其中上述调整模块包括多个控制寄存器,用以启动以及关闭上述多个控制逻辑,其中使用者通过特殊模块寄存器写指令设置上述控制寄存器从而选取上述控制逻辑。
9.如权利要求1所述的处理器,其中上述调整模块包括多个控制寄存器,其中上述调整模块通过设置上述控制寄存器,调整上述第一线程以及上述第二线程占用上述硬件资源之一临限比例。
10.如权利要求1所述的处理器,其中上述硬件资源包括重命名模块、保留站或者退出模块的资源。
11.一种调度方法,适用于同步多线程的处理器,包括:
同步多线程地执行第一线程的指令以及第二线程的指令;
按照上述第一线程中的指令顺序退出完成的上述第一线程的指令,并且按照上述第二线程中的指令顺序退出完成的上述第二线程的指令;
利用第一退出计数器统计上述第一线程的指令的第一多线退出速率;
利用第二退出计数器统计上述第二线程的指令的第二多线退出速率;以及
根据上述第一多线退出速率以及上述第二多线退出速率,调整上述第一线程以及上述第二线程分别占用上述处理器之一硬件资源的比例,使得上述处理器的执行效率最高。
12.如权利要求11所述的调度方法,还包括:
利用上述第一退出计数器计数上述第一线程在第一既定数量的时钟周期中所退出的第一指令数目,其中上述第一多线退出速率为上述第一指令数目除以上述第一既定数量;以及
利用上述第二退出计数器计数上述第二线程在第二既定数量的时钟周期中所退出的第二指令数目,其中上述第二多线退出速率为上述第二指令数目除以上述第二既定数量。
13.如权利要求11所述的调度方法,还包括:
辨识其所退出的指令属于上述第一线程或上述第二线程;以及
通知对应的上述第一退出计数器或上述第二退出计数器。
14.如权利要求11所述的调度方法,其中上述根据上述第一多线退出速率以及上述第二多线退出速率,调整上述第一线程以及上述第二线程分别占用上述处理器的硬件资源的比例的步骤还包括:
利用上述第一退出计数器统计上述第一线程的指令的第一单线退出速率,其中上述第一单线退出速率为上述执行单元单线执行上述第一线程的指令时平均在每一时钟周期中退出的指令数目;
利用上述第二退出计数器统计上述第二线程的指令的第二单线退出速率,其中上述第二单线退出速率为上述执行单元单线执行上述第二线程的指令时平均在每一时钟周期中退出的指令数目;
将上述第一单线退出速率除以上述第一多线退出速率而得第一公平系数;
将上述第二单线退出速率除以上述第二多线退出速率而得第二公平系数;以及
根据上述第一公平系数以及上述第二公平系数之和,调整上述第一线程以及上述第二线程分别占用上述硬件资源的比例。
15.如权利要求14所述的调度方法,其中上述调整上述第一线程以及上述第二线程分别占用上述硬件资源的比例的步骤还包括:
最小化上述第一公平系数与上述第二公平系数之和。
16.如权利要求14所述的调度方法,还包括:
从多个控制逻辑中选取一个或多个使得上述第一公平系数与上述第二公平系数之和最小的控制逻辑;以及
根据所选取的上述控制逻辑调整上述第一线程以及上述第二线程分别占用上述硬件资源的比例。
17.如权利要求11所述的调度方法,其中上述根据上述第一多线退出速率以及上述第二多线退出速率调整上述第一线程以及上述第二线程分别占用上述硬件资源的比例的步骤包括:
从多个控制逻辑中选取至少其中之一;以及
根据所选取的上述控制逻辑,调整上述第一线程以及上述第二线程分别占用上述硬件资源的比例。
18.如权利要求17所述的调度方法,其中上述选取上述控制逻辑的至少其中之一的步骤还包括:
通过特殊模块寄存器写指令设置多个控制寄存器从而选取上述控制逻辑。
19.如权利要求11所述的调度方法,其中上述根据上述第一多线退出速率以及上述第二多线退出速率调整上述第一线程以及上述第二线程分别占用上述硬件资源的比例的步骤还包括:
设置多个控制寄存器从而调整上述第一线程以及上述第二线程占用上述硬件资源的临限比例。
20.如权利要求11所述的调度方法,其中上述硬件资源包括重命名模块、保留站或者退出模块的资源。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610435604.8A CN106126336B (zh) | 2016-06-17 | 2016-06-17 | 处理器以及调度方法 |
TW105123172A TWI624789B (zh) | 2016-06-17 | 2016-07-22 | 處理器以及調度方法 |
US15/229,529 US10209998B2 (en) | 2016-06-17 | 2016-08-05 | Multi-threading processor and a scheduling method thereof |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610435604.8A CN106126336B (zh) | 2016-06-17 | 2016-06-17 | 处理器以及调度方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106126336A true CN106126336A (zh) | 2016-11-16 |
CN106126336B CN106126336B (zh) | 2019-06-04 |
Family
ID=57470932
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610435604.8A Active CN106126336B (zh) | 2016-06-17 | 2016-06-17 | 处理器以及调度方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US10209998B2 (zh) |
CN (1) | CN106126336B (zh) |
TW (1) | TWI624789B (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108279928A (zh) * | 2018-01-30 | 2018-07-13 | 上海兆芯集成电路有限公司 | 微指令调度方法及使用此方法的装置 |
CN108304251A (zh) * | 2018-02-06 | 2018-07-20 | 网宿科技股份有限公司 | 线程同步方法及服务器 |
CN108415730A (zh) * | 2018-01-30 | 2018-08-17 | 上海兆芯集成电路有限公司 | 微指令调度方法及使用此方法的装置 |
WO2019020028A1 (zh) * | 2017-07-26 | 2019-01-31 | 华为技术有限公司 | 共享资源分配方法及装置 |
CN111316239A (zh) * | 2017-10-26 | 2020-06-19 | 超威半导体公司 | 利用动态资源分配的波创建控制 |
CN112379928A (zh) * | 2020-11-11 | 2021-02-19 | 海光信息技术股份有限公司 | 指令调度方法以及包括指令调度单元的处理器 |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE102017103197A1 (de) * | 2017-02-16 | 2018-08-16 | Schaeffler Technologies AG & Co. KG | Elektronikgehäuse für einen E-Achsen-Antrieb und E-Achse mit Elektronikgehäuse |
US11068303B2 (en) * | 2019-02-19 | 2021-07-20 | International Business Machines Corporation | Adjusting thread balancing in response to disruptive complex instruction |
CN111124651B (zh) * | 2019-12-27 | 2023-05-23 | 中通服公众信息产业股份有限公司 | 一种分布式环境多线程并发调度的方法 |
TWI748513B (zh) * | 2020-06-12 | 2021-12-01 | 鴻海精密工業股份有限公司 | 資料處理方法、系統、電子裝置及存儲介質 |
CN117389731B (zh) * | 2023-10-20 | 2024-04-02 | 上海芯高峰微电子有限公司 | 数据处理方法和装置、芯片、设备及存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20010056456A1 (en) * | 1997-07-08 | 2001-12-27 | Erik Cota-Robles | Priority based simultaneous multi-threading |
CN1914593A (zh) * | 2004-02-04 | 2007-02-14 | 英特尔公司 | 共享已空闲的处理器执行资源 |
US20090157359A1 (en) * | 2007-12-18 | 2009-06-18 | Anton Chernoff | Mechanism for profiling program software running on a processor |
US20100031006A1 (en) * | 2008-08-04 | 2010-02-04 | International Business Machines Corporation | Thread completion rate controlled scheduling |
US20140181484A1 (en) * | 2012-12-21 | 2014-06-26 | James Callister | Mechanism to provide high performance and fairness in a multi-threading computer system |
CN104216683A (zh) * | 2013-05-31 | 2014-12-17 | 国际商业机器公司 | 利用同步多线程进行数据处理的方法及其*** |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6535905B1 (en) * | 1999-04-29 | 2003-03-18 | Intel Corporation | Method and apparatus for thread switching within a multithreaded processor |
WO2011120019A2 (en) | 2010-03-26 | 2011-09-29 | Virtualmetrix, Inc. | Fine grain performance resource management of computer systems |
CN102909696A (zh) * | 2012-10-24 | 2013-02-06 | 宜兴市芳桥实验小学 | 一种多功能锤子 |
-
2016
- 2016-06-17 CN CN201610435604.8A patent/CN106126336B/zh active Active
- 2016-07-22 TW TW105123172A patent/TWI624789B/zh active
- 2016-08-05 US US15/229,529 patent/US10209998B2/en active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20010056456A1 (en) * | 1997-07-08 | 2001-12-27 | Erik Cota-Robles | Priority based simultaneous multi-threading |
CN1914593A (zh) * | 2004-02-04 | 2007-02-14 | 英特尔公司 | 共享已空闲的处理器执行资源 |
US20090157359A1 (en) * | 2007-12-18 | 2009-06-18 | Anton Chernoff | Mechanism for profiling program software running on a processor |
US20100031006A1 (en) * | 2008-08-04 | 2010-02-04 | International Business Machines Corporation | Thread completion rate controlled scheduling |
US20140181484A1 (en) * | 2012-12-21 | 2014-06-26 | James Callister | Mechanism to provide high performance and fairness in a multi-threading computer system |
CN104216683A (zh) * | 2013-05-31 | 2014-12-17 | 国际商业机器公司 | 利用同步多线程进行数据处理的方法及其*** |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2019020028A1 (zh) * | 2017-07-26 | 2019-01-31 | 华为技术有限公司 | 共享资源分配方法及装置 |
CN109308220A (zh) * | 2017-07-26 | 2019-02-05 | 华为技术有限公司 | 共享资源分配方法及装置 |
CN111316239A (zh) * | 2017-10-26 | 2020-06-19 | 超威半导体公司 | 利用动态资源分配的波创建控制 |
CN111316239B (zh) * | 2017-10-26 | 2022-07-05 | 超威半导体公司 | 利用动态资源分配的波创建控制 |
CN108279928A (zh) * | 2018-01-30 | 2018-07-13 | 上海兆芯集成电路有限公司 | 微指令调度方法及使用此方法的装置 |
CN108415730A (zh) * | 2018-01-30 | 2018-08-17 | 上海兆芯集成电路有限公司 | 微指令调度方法及使用此方法的装置 |
CN108415730B (zh) * | 2018-01-30 | 2021-06-01 | 上海兆芯集成电路有限公司 | 微指令调度方法及使用此方法的装置 |
CN108304251A (zh) * | 2018-02-06 | 2018-07-20 | 网宿科技股份有限公司 | 线程同步方法及服务器 |
CN108304251B (zh) * | 2018-02-06 | 2021-11-19 | 网宿科技股份有限公司 | 线程同步方法及服务器 |
CN112379928A (zh) * | 2020-11-11 | 2021-02-19 | 海光信息技术股份有限公司 | 指令调度方法以及包括指令调度单元的处理器 |
Also Published As
Publication number | Publication date |
---|---|
TWI624789B (zh) | 2018-05-21 |
CN106126336B (zh) | 2019-06-04 |
US10209998B2 (en) | 2019-02-19 |
TW201800938A (zh) | 2018-01-01 |
US20170364361A1 (en) | 2017-12-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106126336A (zh) | 处理器以及调度方法 | |
US9645819B2 (en) | Method and apparatus for reducing area and complexity of instruction wakeup logic in a multi-strand out-of-order processor | |
US11675598B2 (en) | Loop execution control for a multi-threaded, self-scheduling reconfigurable computing fabric using a reenter queue | |
US11275710B2 (en) | Loop thread order execution control of a multi-threaded, self-scheduling reconfigurable computing fabric | |
CN105426160B (zh) | 基于sprac v8指令集的指令分类多发射方法 | |
CN103336718B (zh) | 一种gpu线程调度优化方法 | |
US6877086B1 (en) | Method and apparatus for rescheduling multiple micro-operations in a processor using a replay queue and a counter | |
US20150082314A1 (en) | Task placement device, task placement method and computer program | |
US20140208074A1 (en) | Instruction scheduling for a multi-strand out-of-order processor | |
US20150074353A1 (en) | System and Method for an Asynchronous Processor with Multiple Threading | |
CN102736897B (zh) | 多线程处理的线程选择 | |
CN108170471A (zh) | 基于类型的优先化指令 | |
CN105027075B (zh) | 具有共享前端单元的处理核 | |
JP2002007116A (ja) | 高性能スーパースカラーマイクロプロセッサアウトオブオーダー命令棚における優先度トラッキング方法及び装置 | |
US10372458B2 (en) | Method and apparatus for a self-clocked, event triggered superscalar processor | |
US6351802B1 (en) | Method and apparatus for constructing a pre-scheduled instruction cache | |
US8761188B1 (en) | Multi-threaded software-programmable framework for high-performance scalable and modular datapath designs | |
CN108415730A (zh) | 微指令调度方法及使用此方法的装置 | |
CN104391680B (zh) | 一种超标量微处理器中实现存储指令流水提交方法 | |
CN100377076C (zh) | 一种应用于同时多线程处理器的取指控制装置及其方法 | |
CN110502279A (zh) | 一种基于可标记指令的发射队列智能调节方法 | |
CN108628639A (zh) | 处理器和指令调度方法 | |
Kohútka et al. | Extension of hardware-accelerated real-time task schedulers for support of quad-core processors | |
US12014208B2 (en) | Techniques for reducing serialization in divergent control flow | |
CN112445619A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CP03 | Change of name, title or address |
Address after: Room 301, 2537 Jinke Road, Zhangjiang High Tech Park, Pudong New Area, Shanghai 201203 Patentee after: Shanghai Zhaoxin Semiconductor Co.,Ltd. Address before: Room 301, 2537 Jinke Road, Zhangjiang hi tech park, Shanghai 201203 Patentee before: VIA ALLIANCE SEMICONDUCTOR Co.,Ltd. |
|
CP03 | Change of name, title or address |